@glimmer/compiler
Version:
305 lines (246 loc) • 23.1 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.EXPR = exports.ExpressionEncoder = void 0;
var _util = require("@glimmer/util");
function _createForOfIteratorHelperLoose(o, allowArrayLike) {
var it;
if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) {
if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
if (it) o = it;
var i = 0;
return function () {
if (i >= o.length) return {
done: true
};
return {
done: false,
value: o[i++]
};
};
}
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
it = o[Symbol.iterator]();
return it.next.bind(it);
}
function _unsupportedIterableToArray(o, minLen) {
if (!o) return;
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
var n = Object.prototype.toString.call(o).slice(8, -1);
if (n === "Object" && o.constructor) n = o.constructor.name;
if (n === "Map" || n === "Set") return Array.from(o);
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
}
function _arrayLikeToArray(arr, len) {
if (len == null || len > arr.length) len = arr.length;
for (var i = 0, arr2 = new Array(len); i < len; i++) {
arr2[i] = arr[i];
}
return arr2;
}
var ExpressionEncoder = /*#__PURE__*/function () {
function ExpressionEncoder() {}
var _proto = ExpressionEncoder.prototype;
_proto.expr = function expr(_expr) {
switch (_expr.type) {
case 'Missing':
return undefined;
case 'Literal':
return this.Literal(_expr);
case 'CallExpression':
return this.CallExpression(_expr);
case 'DeprecatedCallExpression':
return this.DeprecatedCallExpression(_expr);
case 'PathExpression':
return this.PathExpression(_expr);
case 'Arg':
return [30
/* GetSymbol */
, _expr.symbol];
case 'Local':
return this.Local(_expr);
case 'This':
return [30
/* GetSymbol */
, 0];
case 'Free':
return [_expr.resolution.resolution(), _expr.symbol];
case 'HasBlock':
return this.HasBlock(_expr);
case 'HasBlockParams':
return this.HasBlockParams(_expr);
case 'Curry':
return this.Curry(_expr);
case 'Not':
return this.Not(_expr);
case 'IfInline':
return this.IfInline(_expr);
case 'InterpolateExpression':
return this.InterpolateExpression(_expr);
case 'GetDynamicVar':
return this.GetDynamicVar(_expr);
case 'Log':
return this.Log(_expr);
}
};
_proto.Literal = function Literal(_ref) {
var value = _ref.value;
if (value === undefined) {
return [27
/* Undefined */
];
} else {
return value;
}
};
_proto.Missing = function Missing() {
return undefined;
};
_proto.HasBlock = function HasBlock(_ref2) {
var symbol = _ref2.symbol;
return [48
/* HasBlock */
, [30
/* GetSymbol */
, symbol]];
};
_proto.HasBlockParams = function HasBlockParams(_ref3) {
var symbol = _ref3.symbol;
return [49
/* HasBlockParams */
, [30
/* GetSymbol */
, symbol]];
};
_proto.Curry = function Curry(_ref4) {
var definition = _ref4.definition,
curriedType = _ref4.curriedType,
args = _ref4.args;
return [50
/* Curry */
, EXPR.expr(definition), curriedType, EXPR.Positional(args.positional), EXPR.NamedArguments(args.named)];
};
_proto.Local = function Local(_ref5) {
var isTemplateLocal = _ref5.isTemplateLocal,
symbol = _ref5.symbol;
return [isTemplateLocal ? 32
/* GetTemplateSymbol */
: 30
/* GetSymbol */
, symbol];
};
_proto.GetWithResolver = function GetWithResolver(_ref6) {
var symbol = _ref6.symbol;
return [34
/* GetFreeAsComponentOrHelperHeadOrThisFallback */
, symbol];
};
_proto.PathExpression = function PathExpression(_ref7) {
var head = _ref7.head,
tail = _ref7.tail;
var getOp = EXPR.expr(head);
return [].concat(getOp, [EXPR.Tail(tail)]);
};
_proto.InterpolateExpression = function InterpolateExpression(_ref8) {
var parts = _ref8.parts;
return [29
/* Concat */
, parts.map(function (e) {
return EXPR.expr(e);
}).toArray()];
};
_proto.CallExpression = function CallExpression(_ref9) {
var callee = _ref9.callee,
args = _ref9.args;
return [28
/* Call */
, EXPR.expr(callee)].concat(EXPR.Args(args));
};
_proto.DeprecatedCallExpression = function DeprecatedCallExpression(_ref10) {
var arg = _ref10.arg,
callee = _ref10.callee;
return [99
/* GetFreeAsDeprecatedHelperHeadOrThisFallback */
, callee.symbol, [arg.chars]];
};
_proto.Tail = function Tail(_ref11) {
var members = _ref11.members;
return (0, _util.mapPresent)(members, function (member) {
return member.chars;
});
};
_proto.Args = function Args(_ref12) {
var positional = _ref12.positional,
named = _ref12.named;
return [this.Positional(positional), this.NamedArguments(named)];
};
_proto.Positional = function Positional(_ref13) {
var list = _ref13.list;
return list.map(function (l) {
return EXPR.expr(l);
}).toPresentArray();
};
_proto.NamedArgument = function NamedArgument(_ref14) {
var key = _ref14.key,
value = _ref14.value;
return [key.chars, EXPR.expr(value)];
};
_proto.NamedArguments = function NamedArguments(_ref15) {
var pairs = _ref15.entries;
var list = pairs.toArray();
if ((0, _util.isPresent)(list)) {
var names = [];
var values = [];
for (var _iterator = _createForOfIteratorHelperLoose(list), _step; !(_step = _iterator()).done;) {
var pair = _step.value;
var _EXPR$NamedArgument = EXPR.NamedArgument(pair),
name = _EXPR$NamedArgument[0],
value = _EXPR$NamedArgument[1];
names.push(name);
values.push(value);
}
(0, _util.assertPresent)(names);
(0, _util.assertPresent)(values);
return [names, values];
} else {
return null;
}
};
_proto.Not = function Not(_ref16) {
var value = _ref16.value;
return [51
/* Not */
, EXPR.expr(value)];
};
_proto.IfInline = function IfInline(_ref17) {
var condition = _ref17.condition,
truthy = _ref17.truthy,
falsy = _ref17.falsy;
var expr = [52
/* IfInline */
, EXPR.expr(condition), EXPR.expr(truthy)];
if (falsy) {
expr.push(EXPR.expr(falsy));
}
return expr;
};
_proto.GetDynamicVar = function GetDynamicVar(_ref18) {
var name = _ref18.name;
return [53
/* GetDynamicVar */
, EXPR.expr(name)];
};
_proto.Log = function Log(_ref19) {
var positional = _ref19.positional;
return [54
/* Log */
, this.Positional(positional)];
};
return ExpressionEncoder;
}();
exports.ExpressionEncoder = ExpressionEncoder;
var EXPR = new ExpressionEncoder();
exports.EXPR = EXPR;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9wYXNzZXMvMi1lbmNvZGluZy9leHByZXNzaW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFNQSxJQUFNLGlCQUFOLEdBQUEsYUFBQSxZQUFBO0FBQUEsV0FBQSxpQkFBQSxHQUFBLENBQUE7O0FBQUEsTUFBQSxNQUFBLEdBQUEsaUJBQUEsQ0FBQSxTQUFBOztBQUFBLEVBQUEsTUFBQSxDQUFBLElBQUEsR0FDRSxTQUFBLElBQUEsQ0FBQSxLQUFBLEVBQTZCO0FBQzNCLFlBQVEsS0FBSSxDQUFaLElBQUE7QUFDRSxXQUFBLFNBQUE7QUFDRSxlQUFBLFNBQUE7O0FBQ0YsV0FBQSxTQUFBO0FBQ0UsZUFBTyxLQUFBLE9BQUEsQ0FBUCxLQUFPLENBQVA7O0FBQ0YsV0FBQSxnQkFBQTtBQUNFLGVBQU8sS0FBQSxjQUFBLENBQVAsS0FBTyxDQUFQOztBQUNGLFdBQUEsMEJBQUE7QUFDRSxlQUFPLEtBQUEsd0JBQUEsQ0FBUCxLQUFPLENBQVA7O0FBQ0YsV0FBQSxnQkFBQTtBQUNFLGVBQU8sS0FBQSxjQUFBLENBQVAsS0FBTyxDQUFQOztBQUNGLFdBQUEsS0FBQTtBQUNFLGVBQU8sQ0FBQTtBQUFBO0FBQUEsVUFBd0IsS0FBSSxDQUFuQyxNQUFPLENBQVA7O0FBQ0YsV0FBQSxPQUFBO0FBQ0UsZUFBTyxLQUFBLEtBQUEsQ0FBUCxLQUFPLENBQVA7O0FBQ0YsV0FBQSxNQUFBO0FBQ0UsZUFBTyxDQUFBO0FBQUE7QUFBQSxVQUFQLENBQU8sQ0FBUDs7QUFDRixXQUFBLE1BQUE7QUFDRSxlQUFPLENBQUMsS0FBSSxDQUFKLFVBQUEsQ0FBRCxVQUFDLEVBQUQsRUFBK0IsS0FBSSxDQUExQyxNQUFPLENBQVA7O0FBQ0YsV0FBQSxVQUFBO0FBQ0UsZUFBTyxLQUFBLFFB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Rm9ybWF0IH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBU1R2MiB9IGZyb20gJ0BnbGltbWVyL3N5bnRheCc7XG5pbXBvcnQgeyBhc3NlcnRQcmVzZW50LCBpc1ByZXNlbnQsIG1hcFByZXNlbnQgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuaW1wb3J0ICogYXMgbWlyIGZyb20gJy4vbWlyJztcblxuZXhwb3J0IHR5cGUgSGFzaFBhaXIgPSBbc3RyaW5nLCBXaXJlRm9ybWF0LkV4cHJlc3Npb25dO1xuXG5leHBvcnQgY2xhc3MgRXhwcmVzc2lvbkVuY29kZXIge1xuICBleHByKGV4cHI6IG1pci5FeHByZXNzaW9uTm9kZSk6IFdpcmVGb3JtYXQuRXhwcmVzc2lvbiB7XG4gICAgc3dpdGNoIChleHByLnR5cGUpIHtcbiAgICAgIGNhc2UgJ01pc3NpbmcnOlxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgY2FzZSAnTGl0ZXJhbCc6XG4gICAgICAgIHJldHVybiB0aGlzLkxpdGVyYWwoZXhwcik7XG4gICAgICBjYXNlICdDYWxsRXhwcmVzc2lvbic6XG4gICAgICAgIHJldHVybiB0aGlzLkNhbGxFeHByZXNzaW9uKGV4cHIpO1xuICAgICAgY2FzZSAnRGVwcmVjYXRlZENhbGxFeHByZXNzaW9uJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuRGVwcmVjYXRlZENhbGxFeHByZXNzaW9uKGV4cHIpO1xuICAgICAgY2FzZSAnUGF0aEV4cHJlc3Npb24nOlxuICAgICAgICByZXR1cm4gdGhpcy5QYXRoRXhwcmVzc2lvbihleHByKTtcbiAgICAgIGNhc2UgJ0FyZyc6XG4gICAgICAgIHJldHVybiBbU2V4cE9wY29kZXMuR2V0U3ltYm9sLCBleHByLnN5bWJvbF07XG4gICAgICBjYXNlICdMb2NhbCc6XG4gICAgICAgIHJldHVybiB0aGlzLkxvY2FsKGV4cHIpO1xuICAgICAgY2FzZSAnVGhpcyc6XG4gICAgICAgIHJldHVybiBbU2V4cE9wY29kZXMuR2V0U3ltYm9sLCAwXTtcbiAgICAgIGNhc2UgJ0ZyZWUnOlxuICAgICAgICByZXR1cm4gW2V4cHIucmVzb2x1dGlvbi5yZXNvbHV0aW9uKCksIGV4cHIuc3ltYm9sXTtcbiAgICAgIGNhc2UgJ0hhc0Jsb2NrJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuSGFzQmxvY2soZXhwcik7XG4gICAgICBjYXNlICdIYXNCbG9ja1BhcmFtcyc6XG4gICAgICAgIHJldHVybiB0aGlzLkhhc0Jsb2NrUGFyYW1zKGV4cHIpO1xuICAgICAgY2FzZSAnQ3VycnknOlxuICAgICAgICByZXR1cm4gdGhpcy5DdXJyeShleHByKTtcbiAgICAgIGNhc2UgJ05vdCc6XG4gICAgICAgIHJldHVybiB0aGlzLk5vdChleHByKTtcbiAgICAgIGNhc2UgJ0lmSW5saW5lJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuSWZJbmxpbmUoZXhwcik7XG4gICAgICBjYXNlICdJbnRlcnBvbGF0ZUV4cHJlc3Npb24nOlxuICAgICAgICByZXR1cm4gdGhpcy5JbnRlcnBvbGF0ZUV4cHJlc3Npb24oZXhwcik7XG4gICAgICBjYXNlICdHZXREeW5hbWljVmFyJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuR2V0RHluYW1pY1ZhcihleHByKTtcbiAgICAgIGNhc2UgJ0xvZyc6XG4gICAgICAgIHJldHVybiB0aGlzLkxvZyhleHByKTtcbiAgICB9XG4gIH1cblxuICBMaXRlcmFsKHtcbiAgICB2YWx1ZSxcbiAgfTogQVNUdjIuTGl0ZXJhbEV4cHJlc3Npb24pOiBXaXJlRm9ybWF0LkV4cHJlc3Npb25zLlZhbHVlIHwgV2lyZUZvcm1hdC5FeHByZXNzaW9ucy5VbmRlZmluZWQge1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gW1NleHBPcGNvZGVzLlVuZGVmaW5lZF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBNaXNzaW5nKCk6IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIEhhc0Jsb2NrKHsgc3ltYm9sIH06IG1pci5IYXNCbG9jayk6IFdpcmVGb3JtYXQuRXhwcmVzc2lvbnMuSGFzQmxvY2sge1xuICAgIHJldHVybiBbU2V4cE9wY29kZXMuSGFzQmxvY2ssIFtTZXhwT3Bjb2Rlcy5HZXRTeW1ib2wsIHN5bWJvbF1dO1xuICB9XG5cbiAgSGFzQmxvY2tQYXJhbXMoeyBzeW1ib2wgfTogbWlyLkhhc0Jsb2NrUGFyYW1zKTogV2lyZUZvcm1hdC5FeHByZXNzaW9ucy5IYXNCbG9ja1BhcmFtcyB7XG4gICAgcmV0dXJuIFtTZXhwT3Bjb2Rlcy5IYXNCbG9ja1BhcmFtcywgW1NleHBPcGNvZGVzLkdldFN5bWJvbCwgc3ltYm9sXV07XG4gIH1cblxuICBDdXJyeSh7IGRlZmluaXRpb24sIGN1cnJpZWRUeXBlLCBhcmdzIH06IG1pci5DdXJyeSk6IFdpcmVGb3JtYXQuRXhwcmVzc2lvbnMuQ3Vycnkge1xuICAgIHJldHVybiBbXG4gICAgICBTZXhwT3Bjb2Rlcy5DdXJyeSxcbiAgICAgIEVYUFIuZXhwcihkZWZpbml0aW9uKSxcbiAgICAgIGN1cnJpZWRUeXBlLFxuICAgICAgRVhQUi5Qb3NpdGlvbmFsKGFyZ3MucG9zaXRpb25hbCksXG4gICAgICBFWFBSLk5hbWVkQXJndW1lbnRzKGFyZ3MubmFtZWQpLFxuICAgIF07XG4gIH1cblxuICBMb2NhbCh7XG4gICAgaXNUZW1wbGF0ZUxvY2FsLFxuICAgIHN5bWJvbCxcbiAgfTogQVNUdjIuTG9jYWxWYXJSZWZlcmVuY2UpOlxuICAgIHwgV2lyZUZvcm1hdC5FeHByZXNzaW9ucy5HZXRTeW1ib2xcbiAgICB8IFdpcmVGb3JtYXQuRXhwcmVzc2lvbnMuR2V0VGVtcGxhdGVTeW1ib2wge1xuICAgIHJldHVybiBbaXNUZW1wbGF0ZUxvY2FsID8gU2V4cE9wY29kZXMuR2V0VGVtcGxhdGVTeW1ib2wgOiBTZXhwT3Bjb2Rlcy5HZXRTeW1ib2wsIHN5bWJvbF07XG4gIH1cblxuICBHZXRXaXRoUmVzb2x2ZXIoeyBzeW1ib2wgfTogbWlyLkdldFdpdGhSZXNvbHZlcik6IFdpcmVGb3JtYXQuRXhwcmVzc2lvbnMuR2V0Q29udGV4dHVhbEZyZWUge1xuICAgIHJldHVybiBbU2V4cE9wY29kZXMuR2V0RnJlZUFzQ29tcG9uZW50T3JIZWxwZXJIZWFkT3JUaGlzRmFsbGJhY2ssIHN5bWJvbF07XG4gIH1cblxuICBQYXRoRXhwcmVzc2lvbih7IGhlYWQsIHRhaWwgfTogbWlyLlBhdGhFeHByZXNzaW9uKTogV2lyZUZvcm1hdC5FeHByZXNzaW9ucy5HZXRQYXRoIHtcbiAgICBsZXQgZ2V0T3AgPSBFWFBSLmV4cHIoaGVhZCkgYXMgV2lyZUZvcm1hdC5FeHByZXNzaW9ucy5HZXRWYXI7XG5cbiAgICByZXR1cm4gWy4uLmdldE9wLCBFWFBSLlRhaWwodGFpbCldO1xuICB9XG5cbiAgSW50ZXJwb2xhdGVFeHByZXNzaW9uKHsgcGFydHMgfTogbWlyLkludGVycG9sYXRlRXhwcmVzc2lvbik6IFdpcmVGb3JtYXQuRXhwcmVzc2lvbnMuQ29uY2F0IHtcbiAgICByZXR1cm4gW1NleHBPcGNvZGVzLkNvbmNhdCwgcGFydHMubWFwKChlKSA9PiBFWFBSLmV4cHIoZSkpLnRvQXJyYXkoKV07XG4gIH1cblxuICBDYWxsRXhwcmVzc2lvbih7IGNhbGxlZSwgYXJncyB9OiBtaXIuQ2FsbEV4cHJlc3Npb24pOiBXaXJlRm9ybWF0LkV4cHJlc3Npb25zLkhlbHBlciB7XG4gICAgcmV0dXJuIFtTZXhwT3Bjb2Rlcy5DYWxsLCBFWFBSLmV4cHIoY2FsbGVlKSwgLi4uRVhQUi5BcmdzKGFyZ3MpXTtcbiAgfVxuXG4gIERlcHJlY2F0ZWRDYWxsRXhwcmVzc2lvbih7XG4gICAgYXJnLFxuICAgIGNhbGxlZSxcbiAgfTogbWlyLkRlcHJlY2F0ZWRDYWxsRXhwcmVzc2lvbik6IFdpcmVGb3JtYXQuRXhwcmVzc2lvbnMuR2V0UGF0aEZyZWVBc0RlcHJlY2F0ZWRIZWxwZXJIZWFkT3JUaGlzRmFsbGJhY2sge1xuICAgIHJldHVybiBbU2V4cE9wY29kZXMuR2V0RnJlZUFzRGVwcmVjYXRlZEhlbHBlckhlYWRPclRoaXNGYWxsYmFjaywgY2FsbGVlLnN5bWJvbCwgW2FyZy5jaGFyc11dO1xuICB9XG5cbiAgVGFpbCh7IG1lbWJlcnMgfTogbWlyLlRhaWwpOiBQcmVzZW50QXJyYXk8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG1hcFByZXNlbnQobWVtYmVycywgKG1lbWJlcikgPT4gbWVtYmVyLmNoYXJzKTtcbiAgfVxuXG4gIEFyZ3MoeyBwb3NpdGlvbmFsLCBuYW1lZCB9OiBtaXIuQXJncyk6IFdpcmVGb3JtYXQuQ29yZS5BcmdzIHtcbiAgICByZXR1cm4gW3RoaXMuUG9zaXRpb25hbChwb3NpdGlvbmFsKSwgdGhpcy5OYW1lZEFyZ3VtZW50cyhuYW1lZCldO1xuICB9XG5cbiAgUG9zaXRpb25hbCh7IGxpc3QgfTogbWlyLlBvc2l0aW9uYWwpOiBXaXJlRm9ybWF0LkNvcmUuUGFyYW1zIHtcbiAgICByZXR1cm4gbGlzdC5tYXAoKGwpID0+IEVYUFIuZXhwcihsKSkudG9QcmVzZW50QXJyYXkoKTtcbiAgfVxuXG4gIE5hbWVkQXJndW1lbnQoeyBrZXksIHZhbHVlIH06IG1pci5OYW1lZEFyZ3VtZW50KTogSGFzaFBhaXIge1xuICAgIHJldHVybiBba2V5LmNoYXJzLCBFWFBSLmV4cHIodmFsdWUpXTtcbiAgfVxuXG4gIE5hbWVkQXJndW1lbnRzKHsgZW50cmllczogcGFpcnMgfTogbWlyLk5hbWVkQXJndW1lbnRzKTogV2lyZUZvcm1hdC5Db3JlLkhhc2gge1xuICAgIGxldCBsaXN0ID0gcGFpcnMudG9BcnJheSgpO1xuXG4gICAgaWYgKGlzUHJlc2VudChsaXN0KSkge1xuICAgICAgbGV0IG5hbWVzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgbGV0IHZhbHVlczogV2lyZUZvcm1hdC5FeHByZXNzaW9uW10gPSBbXTtcblxuICAgICAgZm9yIChsZXQgcGFpciBvZiBsaXN0KSB7XG4gICAgICAgIGxldCBbbmFtZSwgdmFsdWVdID0gRVhQUi5OYW1lZEFyZ3VtZW50KHBhaXIpO1xuICAgICAgICBuYW1lcy5wdXNoKG5hbWUpO1xuICAgICAgICB2YWx1ZXMucHVzaCh2YWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIGFzc2VydFByZXNlbnQobmFtZXMpO1xuICAgICAgYXNzZXJ0UHJlc2VudCh2YWx1ZXMpO1xuXG4gICAgICByZXR1cm4gW25hbWVzLCB2YWx1ZXNdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBOb3QoeyB2YWx1ZSB9OiBtaXIuTm90KTogV2lyZUZvcm1hdC5FeHByZXNzaW9ucy5Ob3Qge1xuICAgIHJldHVybiBbU2V4cE9wY29kZXMuTm90LCBFWFBSLmV4cHIodmFsdWUpXTtcbiAgfVxuXG4gIElmSW5saW5lKHsgY29uZGl0aW9uLCB0cnV0aHksIGZhbHN5IH06IG1pci5JZklubGluZSk6IFdpcmVGb3JtYXQuRXhwcmVzc2lvbnMuSWZJbmxpbmUge1xuICAgIGxldCBleHByID0gW1NleHBPcGNvZGVzLklmSW5saW5lLCBFWFBSLmV4cHIoY29uZGl0aW9uKSwgRVhQUi5leHByKHRydXRoeSldO1xuXG4gICAgaWYgKGZhbHN5KSB7XG4gICAgICBleHByLnB1c2goRVhQUi5leHByKGZhbHN5KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGV4cHIgYXMgV2lyZUZvcm1hdC5FeHByZXNzaW9ucy5JZklubGluZTtcbiAgfVxuXG4gIEdldER5bmFtaWNWYXIoeyBuYW1lIH06IG1pci5HZXREeW5hbWljVmFyKTogV2lyZUZvcm1hdC5FeHByZXNzaW9ucy5HZXREeW5hbWljVmFyIHtcbiAgICByZXR1cm4gW1NleHBPcGNvZGVzLkdldER5bmFtaWNWYXIsIEVYUFIuZXhwcihuYW1lKV07XG4gIH1cblxuICBMb2coeyBwb3NpdGlvbmFsIH06IG1pci5Mb2cpOiBXaXJlRm9ybWF0LkV4cHJlc3Npb25zLkxvZyB7XG4gICAgcmV0dXJuIFtTZXhwT3Bjb2Rlcy5Mb2csIHRoaXMuUG9zaXRpb25hbChwb3NpdGlvbmFsKV07XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IEVYUFIgPSBuZXcgRXhwcmVzc2lvbkVuY29kZXIoKTtcbiJdLCJzb3VyY2VSb290IjoiIn0=