ember-legacy-class-transform
Version:
The default blueprint for ember-cli addons.
274 lines (216 loc) • 23.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.OptimizedTrustingAppendOpcode = exports.OptimizedCautiousAppendOpcode = exports.IsComponentDefinitionReference = exports.AppendDynamicOpcode = undefined;
exports.normalizeTextValue = normalizeTextValue;
var _reference2 = require("@glimmer/reference");
var _bounds = require("../../bounds");
var _builder = require("../../builder");
var _interfaces = require("../../component/interfaces");
var _opcodes = require("../../opcodes");
var _references = require("../../references");
var _upsert = require("../../upsert");
function _defaults(obj, defaults) {
var keys = Object.getOwnPropertyNames(defaults);for (var i = 0; i < keys.length; i++) {
var key = keys[i];var value = Object.getOwnPropertyDescriptor(defaults, key);if (value && value.configurable && obj[key] === undefined) {
Object.defineProperty(obj, key, value);
}
}return obj;
}
function _possibleConstructorReturn(self, call) {
if (!self) {
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}return call && (typeof call === "object" || typeof call === "function") ? call : self;
}
function _inherits(subClass, superClass) {
if (typeof superClass !== "function" && superClass !== null) {
throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
}subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass);
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
_opcodes.APPEND_OPCODES.add(26 /* DynamicContent */, function (vm, _ref) {
var append = _ref.op1;
var opcode = vm.constants.getOther(append);
opcode.evaluate(vm);
});
function isEmpty(value) {
return value === null || value === undefined || typeof value.toString !== 'function';
}
function normalizeTextValue(value) {
if (isEmpty(value)) {
return '';
}
return String(value);
}
function normalizeTrustedValue(value) {
if (isEmpty(value)) {
return '';
}
if ((0, _upsert.isString)(value)) {
return value;
}
if ((0, _upsert.isSafeString)(value)) {
return value.toHTML();
}
if ((0, _upsert.isNode)(value)) {
return value;
}
return String(value);
}
function normalizeValue(value) {
if (isEmpty(value)) {
return '';
}
if ((0, _upsert.isString)(value)) {
return value;
}
if ((0, _upsert.isSafeString)(value) || (0, _upsert.isNode)(value)) {
return value;
}
return String(value);
}
var AppendDynamicOpcode = exports.AppendDynamicOpcode = function () {
function AppendDynamicOpcode() {
_classCallCheck(this, AppendDynamicOpcode);
}
AppendDynamicOpcode.prototype.evaluate = function evaluate(vm) {
var reference = vm.stack.pop();
var normalized = this.normalize(reference);
var value = void 0;
var cache = void 0;
if ((0, _reference2.isConst)(reference)) {
value = normalized.value();
} else {
cache = new _reference2.ReferenceCache(normalized);
value = cache.peek();
}
var stack = vm.elements();
var upsert = this.insert(vm.env.getAppendOperations(), stack, value);
var bounds = new _builder.Fragment(upsert.bounds);
stack.newBounds(bounds);
if (cache /* i.e. !isConst(reference) */) {
vm.updateWith(this.updateWith(vm, reference, cache, bounds, upsert));
}
};
return AppendDynamicOpcode;
}();
var IsComponentDefinitionReference = exports.IsComponentDefinitionReference = function (_ConditionalReference) {
_inherits(IsComponentDefinitionReference, _ConditionalReference);
function IsComponentDefinitionReference() {
_classCallCheck(this, IsComponentDefinitionReference);
return _possibleConstructorReturn(this, _ConditionalReference.apply(this, arguments));
}
IsComponentDefinitionReference.create = function create(inner) {
return new IsComponentDefinitionReference(inner);
};
IsComponentDefinitionReference.prototype.toBool = function toBool(value) {
return (0, _interfaces.isComponentDefinition)(value);
};
return IsComponentDefinitionReference;
}(_references.ConditionalReference);
var UpdateOpcode = function (_UpdatingOpcode) {
_inherits(UpdateOpcode, _UpdatingOpcode);
function UpdateOpcode(cache, bounds, upsert) {
_classCallCheck(this, UpdateOpcode);
var _this2 = _possibleConstructorReturn(this, _UpdatingOpcode.call(this));
_this2.cache = cache;
_this2.bounds = bounds;
_this2.upsert = upsert;
_this2.tag = cache.tag;
return _this2;
}
UpdateOpcode.prototype.evaluate = function evaluate(vm) {
var value = this.cache.revalidate();
if ((0, _reference2.isModified)(value)) {
var bounds = this.bounds,
upsert = this.upsert;
var dom = vm.dom;
if (!this.upsert.update(dom, value)) {
var cursor = new _bounds.Cursor(bounds.parentElement(), (0, _bounds.clear)(bounds));
upsert = this.upsert = this.insert(vm.env.getAppendOperations(), cursor, value);
}
bounds.update(upsert.bounds);
}
};
UpdateOpcode.prototype.toJSON = function toJSON() {
var guid = this._guid,
type = this.type,
cache = this.cache;
return {
details: { lastValue: JSON.stringify(cache.peek()) },
guid: guid,
type: type
};
};
return UpdateOpcode;
}(_opcodes.UpdatingOpcode);
var OptimizedCautiousAppendOpcode = exports.OptimizedCautiousAppendOpcode = function (_AppendDynamicOpcode) {
_inherits(OptimizedCautiousAppendOpcode, _AppendDynamicOpcode);
function OptimizedCautiousAppendOpcode() {
_classCallCheck(this, OptimizedCautiousAppendOpcode);
var _this3 = _possibleConstructorReturn(this, _AppendDynamicOpcode.apply(this, arguments));
_this3.type = 'optimized-cautious-append';
return _this3;
}
OptimizedCautiousAppendOpcode.prototype.normalize = function normalize(reference) {
return (0, _reference2.map)(reference, normalizeValue);
};
OptimizedCautiousAppendOpcode.prototype.insert = function insert(dom, cursor, value) {
return (0, _upsert.cautiousInsert)(dom, cursor, value);
};
OptimizedCautiousAppendOpcode.prototype.updateWith = function updateWith(_vm, _reference, cache, bounds, upsert) {
return new OptimizedCautiousUpdateOpcode(cache, bounds, upsert);
};
return OptimizedCautiousAppendOpcode;
}(AppendDynamicOpcode);
var OptimizedCautiousUpdateOpcode = function (_UpdateOpcode) {
_inherits(OptimizedCautiousUpdateOpcode, _UpdateOpcode);
function OptimizedCautiousUpdateOpcode() {
_classCallCheck(this, OptimizedCautiousUpdateOpcode);
var _this4 = _possibleConstructorReturn(this, _UpdateOpcode.apply(this, arguments));
_this4.type = 'optimized-cautious-update';
return _this4;
}
OptimizedCautiousUpdateOpcode.prototype.insert = function insert(dom, cursor, value) {
return (0, _upsert.cautiousInsert)(dom, cursor, value);
};
return OptimizedCautiousUpdateOpcode;
}(UpdateOpcode);
var OptimizedTrustingAppendOpcode = exports.OptimizedTrustingAppendOpcode = function (_AppendDynamicOpcode2) {
_inherits(OptimizedTrustingAppendOpcode, _AppendDynamicOpcode2);
function OptimizedTrustingAppendOpcode() {
_classCallCheck(this, OptimizedTrustingAppendOpcode);
var _this5 = _possibleConstructorReturn(this, _AppendDynamicOpcode2.apply(this, arguments));
_this5.type = 'optimized-trusting-append';
return _this5;
}
OptimizedTrustingAppendOpcode.prototype.normalize = function normalize(reference) {
return (0, _reference2.map)(reference, normalizeTrustedValue);
};
OptimizedTrustingAppendOpcode.prototype.insert = function insert(dom, cursor, value) {
return (0, _upsert.trustingInsert)(dom, cursor, value);
};
OptimizedTrustingAppendOpcode.prototype.updateWith = function updateWith(_vm, _reference, cache, bounds, upsert) {
return new OptimizedTrustingUpdateOpcode(cache, bounds, upsert);
};
return OptimizedTrustingAppendOpcode;
}(AppendDynamicOpcode);
var OptimizedTrustingUpdateOpcode = function (_UpdateOpcode2) {
_inherits(OptimizedTrustingUpdateOpcode, _UpdateOpcode2);
function OptimizedTrustingUpdateOpcode() {
_classCallCheck(this, OptimizedTrustingUpdateOpcode);
var _this6 = _possibleConstructorReturn(this, _UpdateOpcode2.apply(this, arguments));
_this6.type = 'optimized-trusting-update';
return _this6;
}
OptimizedTrustingUpdateOpcode.prototype.insert = function insert(dom, cursor, value) {
return (0, _upsert.trustingInsert)(dom, cursor, value);
};
return OptimizedTrustingUpdateOpcode;
}(UpdateOpcode);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2NvbnRlbnQuanMiXSwibmFtZXMiOlsiaXNDb25zdCIsImlzTW9kaWZpZWQiLCJtYXAiLCJSZWZlcmVuY2VDYWNoZSIsImNsZWFyIiwiQ3Vyc29yIiwiRnJhZ21lbnQiLCJpc0NvbXBvbmVudERlZmluaXRpb24iLCJBUFBFTkRfT1BDT0RFUyIsIlVwZGF0aW5nT3Bjb2RlIiwiQ29uZGl0aW9uYWxSZWZlcmVuY2UiLCJjYXV0aW91c0luc2VydCIsImlzTm9kZSIsImlzU2FmZVN0cmluZyIsImlzU3RyaW5nIiwidHJ1c3RpbmdJbnNlcnQiLCJhZGQiLCJ2bSIsImFwcGVuZCIsIm9wMSIsIm9wY29kZSIsImNvbnN0YW50cyIsImdldE90aGVyIiwiZXZhbHVhdGUiLCJpc0VtcHR5IiwidmFsdWUiLCJ1bmRlZmluZWQiLCJ0b1N0cmluZyIsIm5vcm1hbGl6ZVRleHRWYWx1ZSIsIlN0cmluZyIsIm5vcm1hbGl6ZVRydXN0ZWRWYWx1ZSIsInRvSFRNTCIsIm5vcm1hbGl6ZVZhbHVlIiwiQXBwZW5kRHluYW1pY09wY29kZSIsInJlZmVyZW5jZSIsInN0YWNrIiwicG9wIiwibm9ybWFsaXplZCIsIm5vcm1hbGl6ZSIsImNhY2hlIiwicGVlayIsImVsZW1lbnRzIiwidXBzZXJ0IiwiaW5zZXJ0IiwiZW52IiwiZ2V0QXBwZW5kT3BlcmF0aW9ucyIsImJvdW5kcyIsIm5ld0JvdW5kcyIsInVwZGF0ZVdpdGgiLCJJc0NvbXBvbmVudERlZmluaXRpb25SZWZlcmVuY2UiLCJjcmVhdGUiLCJpbm5lciIsInRvQm9vbCIsIlVwZGF0ZU9wY29kZSIsInRhZyIsInJldmFsaWRhdGUiLCJkb20iLCJ1cGRhdGUiLCJjdXJzb3IiLCJwYXJlbnRFbGVtZW50IiwidG9KU09OIiwiZ3VpZCIsIl9ndWlkIiwidHlwZSIsImRldGFpbHMiLCJsYXN0VmFsdWUiLCJKU09OIiwic3RyaW5naWZ5IiwiT3B0aW1pemVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUiLCJhcmd1bWVudHMiLCJfdm0iLCJfcmVmZXJlbmNlIiwiT3B0aW1pemVkQ2F1dGlvdXNVcGRhdGVPcGNvZGUiLCJPcHRpbWl6ZWRUcnVzdGluZ0FwcGVuZE9wY29kZSIsIk9wdGltaXplZFRydXN0aW5nVXBkYXRlT3Bjb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7UUFjTyxBQUFTOztBQWRoQixBQUFTLEFBQVMsQUFBWSxBQUFLLEFBQXNCOztBQUN6RCxBQUFTLEFBQU8sQUFBYzs7QUFDOUIsQUFBUyxBQUFnQjs7QUFDekIsQUFBUyxBQUE2Qjs7QUFDdEMsQUFBUyxBQUFnQixBQUFzQjs7QUFDL0MsQUFBUyxBQUE0Qjs7QUFDckMsQUFBUyxBQUFnQixBQUFRLEFBQWMsQUFBVSxBQUFzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUMvRSx3QkFBQSxBQUFlLElBQWYsQUFBbUIsR0FBbkIsQUFBc0Isc0JBQXNCLFVBQUEsQUFBQyxVQUF3QjtRQUFiLEFBQWEsY0FBbEIsQUFBa0IsQUFDakU7O1FBQUksU0FBUyxHQUFBLEFBQUcsVUFBSCxBQUFhLFNBQTFCLEFBQWEsQUFBc0IsQUFDbkM7V0FBQSxBQUFPLFNBQVAsQUFBZ0IsQUFDbkI7QUFIRDtBQUlBLFNBQUEsQUFBUyxRQUFULEFBQWlCLE9BQU8sQUFDcEI7V0FBTyxVQUFBLEFBQVUsUUFBUSxVQUFsQixBQUE0QixhQUFhLE9BQU8sTUFBUCxBQUFhLGFBQTdELEFBQTBFLEFBQzdFO0FBQ0Q7QUFBTyw0QkFBQSxBQUE0QixPQUFPLEFBQ3RDO1FBQUksUUFBSixBQUFJLEFBQVEsUUFBUSxBQUNoQjtlQUFBLEFBQU8sQUFDVjtBQUNEO1dBQU8sT0FBUCxBQUFPLEFBQU8sQUFDakI7O0FBQ0QsU0FBQSxBQUFTLHNCQUFULEFBQStCLE9BQU8sQUFDbEM7UUFBSSxRQUFKLEFBQUksQUFBUSxRQUFRLEFBQ2hCO2VBQUEsQUFBTyxBQUNWO0FBQ0Q7UUFBSSxzQkFBSixBQUFJLEFBQVMsUUFBUSxBQUNqQjtlQUFBLEFBQU8sQUFDVjtBQUNEO1FBQUksMEJBQUos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OzRDLEFBQ0QseUIsQUFBTyxLLEFBQUssUUFBUSxBLE9BQU8sQUFDdkI7ZUFBTyw0QkFBQSxBQUFlLEtBQWYsQUFBb0IsUUFBM0IsQUFBTyxBQUE0QixBQUN0QztBOzs7RUFQdUMsQUFTNUMsQTs7SUFBQSxBQUFhLHlHQUFiOzZDQUNJOzs2Q0FBYzs4QkFBQTs7c0RBQ1Ysa0NBRFUsQUFDVixBQUFTLEFBQ1Q7O2VBQUEsQUFBSyxPQUZLLEFBRVYsQUFBWTtlQUNmO0FBSkw7OzRDQUFBLEFBS0ksK0JBTEosQUFLYyxXQUFXLEFBQ2pCO2VBQU8scUJBQUEsQUFBSSxXQUFYLEFBQU8sQUFBZSxBQUN6QjtBQVBMOzs0Q0FBQSxBQVFJLHlCQVJKLEFBUVcsS0FSWCxBQVFnQixRQVJoQixBQVF3QixPQUFPLEFBQ3ZCO2VBQU8sNEJBQUEsQUFBZSxLQUFmLEFBQW9CLFFBQTNCLEFBQU8sQUFBNEIsQUFDdEM7QUFWTDs7NENBQUEsQUFXSSxpQ0FYSixBQVdlLEtBWGYsQUFXb0IsWUFYcEIsQUFXZ0MsT0FYaEMsQUFXdUMsUUFYdkMsQUFXK0MsUUFBUSxBQUMvQztlQUFPLElBQUEsQUFBSSw4QkFBSixBQUFrQyxPQUFsQyxBQUF5QyxRQUFoRCxBQUFPLEFBQWlELEFBQzNEO0FBYkw7O1dBQUE7RUFBQSxBQUFtRDs7SUFlN0MsQTs2Q0FDRjs7NkNBQWM7OEJBQUE7O3NEQUNWLDJCQURVLEFBQ1YsQUFBUyxBQUNUOztlQUFBLEFBQUssT0FGSyxBQUVWLEFBQVk7ZUFDZjs7OzRDLEFBQ0QseUIsQUFBTyxLQUFLLEEsUUFBUSxBLE9BQU8sQUFDdkI7ZUFBTyw0QkFBQSxBQUFlLEtBQWYsQUFBb0IsUUFBM0IsQUFBTyxBQUE0QixBQUN0QztBOzs7RUFQdUMsQSIsImZpbGUiOiJsaWIvY29tcGlsZWQvb3Bjb2Rlcy9jb250ZW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNDb25zdCwgaXNNb2RpZmllZCwgbWFwLCBSZWZlcmVuY2VDYWNoZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBjbGVhciwgQ3Vyc29yIH0gZnJvbSAnLi4vLi4vYm91bmRzJztcbmltcG9ydCB7IEZyYWdtZW50IH0gZnJvbSAnLi4vLi4vYnVpbGRlcic7XG5pbXBvcnQgeyBpc0NvbXBvbmVudERlZmluaXRpb24gfSBmcm9tICcuLi8uLi9jb21wb25lbnQvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBUFBFTkRfT1BDT0RFUywgVXBkYXRpbmdPcGNvZGUgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IENvbmRpdGlvbmFsUmVmZXJlbmNlIH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBjYXV0aW91c0luc2VydCwgaXNOb2RlLCBpc1NhZmVTdHJpbmcsIGlzU3RyaW5nLCB0cnVzdGluZ0luc2VydCB9IGZyb20gJy4uLy4uL3Vwc2VydCc7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMjYgLyogRHluYW1pY0NvbnRlbnQgKi8sICh2bSwgeyBvcDE6IGFwcGVuZCB9KSA9PiB7XG4gICAgbGV0IG9wY29kZSA9IHZtLmNvbnN0YW50cy5nZXRPdGhlcihhcHBlbmQpO1xuICAgIG9wY29kZS5ldmFsdWF0ZSh2bSk7XG59KTtcbmZ1bmN0aW9uIGlzRW1wdHkodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgdmFsdWUudG9TdHJpbmcgIT09ICdmdW5jdGlvbic7XG59XG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplVGV4dFZhbHVlKHZhbHVlKSB7XG4gICAgaWYgKGlzRW1wdHkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG59XG5mdW5jdGlvbiBub3JtYWxpemVUcnVzdGVkVmFsdWUodmFsdWUpIHtcbiAgICBpZiAoaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgaWYgKGlzU2FmZVN0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLnRvSFRNTCgpO1xuICAgIH1cbiAgICBpZiAoaXNOb2RlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xufVxuZnVuY3Rpb24gbm9ybWFsaXplVmFsdWUodmFsdWUpIHtcbiAgICBpZiAoaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgaWYgKGlzU2FmZVN0cmluZyh2YWx1ZSkgfHwgaXNOb2RlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xufVxuZXhwb3J0IGNsYXNzIEFwcGVuZER5bmFtaWNPcGNvZGUge1xuICAgIGV2YWx1YXRlKHZtKSB7XG4gICAgICAgIGxldCByZWZlcmVuY2UgPSB2bS5zdGFjay5wb3AoKTtcbiAgICAgICAgbGV0IG5vcm1hbGl6ZWQgPSB0aGlzLm5vcm1hbGl6ZShyZWZlcmVuY2UpO1xuICAgICAgICBsZXQgdmFsdWU7XG4gICAgICAgIGxldCBjYWNoZTtcbiAgICAgICAgaWYgKGlzQ29uc3QocmVmZXJlbmNlKSkge1xuICAgICAgICAgICAgdmFsdWUgPSBub3JtYWxpemVkLnZhbHVlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjYWNoZSA9IG5ldyBSZWZlcmVuY2VDYWNoZShub3JtYWxpemVkKTtcbiAgICAgICAgICAgIHZhbHVlID0gY2FjaGUucGVlaygpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBzdGFjayA9IHZtLmVsZW1lbnRzKCk7XG4gICAgICAgIGxldCB1cHNlcnQgPSB0aGlzLmluc2VydCh2bS5lbnYuZ2V0QXBwZW5kT3BlcmF0aW9ucygpLCBzdGFjaywgdmFsdWUpO1xuICAgICAgICBsZXQgYm91bmRzID0gbmV3IEZyYWdtZW50KHVwc2VydC5ib3VuZHMpO1xuICAgICAgICBzdGFjay5uZXdCb3VuZHMoYm91bmRzKTtcbiAgICAgICAgaWYgKGNhY2hlIC8qIGkuZS4gIWlzQ29uc3QocmVmZXJlbmNlKSAqLykge1xuICAgICAgICAgICAgICAgIHZtLnVwZGF0ZVdpdGgodGhpcy51cGRhdGVXaXRoKHZtLCByZWZlcmVuY2UsIGNhY2hlLCBib3VuZHMsIHVwc2VydCkpO1xuICAgICAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBJc0NvbXBvbmVudERlZmluaXRpb25SZWZlcmVuY2UgZXh0ZW5kcyBDb25kaXRpb25hbFJlZmVyZW5jZSB7XG4gICAgc3RhdGljIGNyZWF0ZShpbm5lcikge1xuICAgICAgICByZXR1cm4gbmV3IElzQ29tcG9uZW50RGVmaW5pdGlvblJlZmVyZW5jZShpbm5lcik7XG4gICAgfVxuICAgIHRvQm9vbCh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gaXNDb21wb25lbnREZWZpbml0aW9uKHZhbHVlKTtcbiAgICB9XG59XG5jbGFzcyBVcGRhdGVPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gICAgY29uc3RydWN0b3IoY2FjaGUsIGJvdW5kcywgdXBzZXJ0KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuY2FjaGUgPSBjYWNoZTtcbiAgICAgICAgdGhpcy5ib3VuZHMgPSBib3VuZHM7XG4gICAgICAgIHRoaXMudXBzZXJ0ID0gdXBzZXJ0O1xuICAgICAgICB0aGlzLnRhZyA9IGNhY2hlLnRhZztcbiAgICB9XG4gICAgZXZhbHVhdGUodm0pIHtcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5jYWNoZS5yZXZhbGlkYXRlKCk7XG4gICAgICAgIGlmIChpc01vZGlmaWVkKHZhbHVlKSkge1xuICAgICAgICAgICAgbGV0IHsgYm91bmRzLCB1cHNlcnQgfSA9IHRoaXM7XG4gICAgICAgICAgICBsZXQgeyBkb20gfSA9IHZtO1xuICAgICAgICAgICAgaWYgKCF0aGlzLnVwc2VydC51cGRhdGUoZG9tLCB2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBsZXQgY3Vyc29yID0gbmV3IEN1cnNvcihib3VuZHMucGFyZW50RWxlbWVudCgpLCBjbGVhcihib3VuZHMpKTtcbiAgICAgICAgICAgICAgICB1cHNlcnQgPSB0aGlzLnVwc2VydCA9IHRoaXMuaW5zZXJ0KHZtLmVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCksIGN1cnNvciwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYm91bmRzLnVwZGF0ZSh1cHNlcnQuYm91bmRzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIGxldCB7IF9ndWlkOiBndWlkLCB0eXBlLCBjYWNoZSB9ID0gdGhpcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRldGFpbHM6IHsgbGFzdFZhbHVlOiBKU09OLnN0cmluZ2lmeShjYWNoZS5wZWVrKCkpIH0sXG4gICAgICAgICAgICBndWlkLFxuICAgICAgICAgICAgdHlwZVxuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBPcHRpbWl6ZWRDYXV0aW91c0FwcGVuZE9wY29kZSBleHRlbmRzIEFwcGVuZER5bmFtaWNPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLnR5cGUgPSAnb3B0aW1pemVkLWNhdXRpb3VzLWFwcGVuZCc7XG4gICAgfVxuICAgIG5vcm1hbGl6ZShyZWZlcmVuY2UpIHtcbiAgICAgICAgcmV0dXJuIG1hcChyZWZlcmVuY2UsIG5vcm1hbGl6ZVZhbHVlKTtcbiAgICB9XG4gICAgaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gY2F1dGlvdXNJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG4gICAgdXBkYXRlV2l0aChfdm0sIF9yZWZlcmVuY2UsIGNhY2hlLCBib3VuZHMsIHVwc2VydCkge1xuICAgICAgICByZXR1cm4gbmV3IE9wdGltaXplZENhdXRpb3VzVXBkYXRlT3Bjb2RlKGNhY2hlLCBib3VuZHMsIHVwc2VydCk7XG4gICAgfVxufVxuY2xhc3MgT3B0aW1pemVkQ2F1dGlvdXNVcGRhdGVPcGNvZGUgZXh0ZW5kcyBVcGRhdGVPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLnR5cGUgPSAnb3B0aW1pemVkLWNhdXRpb3VzLXVwZGF0ZSc7XG4gICAgfVxuICAgIGluc2VydChkb20sIGN1cnNvciwgdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGNhdXRpb3VzSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIE9wdGltaXplZFRydXN0aW5nQXBwZW5kT3Bjb2RlIGV4dGVuZHMgQXBwZW5kRHluYW1pY09wY29kZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMudHlwZSA9ICdvcHRpbWl6ZWQtdHJ1c3RpbmctYXBwZW5kJztcbiAgICB9XG4gICAgbm9ybWFsaXplKHJlZmVyZW5jZSkge1xuICAgICAgICByZXR1cm4gbWFwKHJlZmVyZW5jZSwgbm9ybWFsaXplVHJ1c3RlZFZhbHVlKTtcbiAgICB9XG4gICAgaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdHJ1c3RpbmdJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG4gICAgdXBkYXRlV2l0aChfdm0sIF9yZWZlcmVuY2UsIGNhY2hlLCBib3VuZHMsIHVwc2VydCkge1xuICAgICAgICByZXR1cm4gbmV3IE9wdGltaXplZFRydXN0aW5nVXBkYXRlT3Bjb2RlKGNhY2hlLCBib3VuZHMsIHVwc2VydCk7XG4gICAgfVxufVxuY2xhc3MgT3B0aW1pemVkVHJ1c3RpbmdVcGRhdGVPcGNvZGUgZXh0ZW5kcyBVcGRhdGVPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLnR5cGUgPSAnb3B0aW1pemVkLXRydXN0aW5nLXVwZGF0ZSc7XG4gICAgfVxuICAgIGluc2VydChkb20sIGN1cnNvciwgdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRydXN0aW5nSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gICAgfVxufSJdfQ==