116 lines
18 KiB
JavaScript
Executable File
116 lines
18 KiB
JavaScript
Executable File
/**
|
|
* @license
|
|
* Copyright Google LLC All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by an MIT-style license that can be
|
|
* found in the LICENSE file at https://angular.io/license
|
|
*/
|
|
(function (factory) {
|
|
if (typeof module === "object" && typeof module.exports === "object") {
|
|
var v = factory(require, exports);
|
|
if (v !== undefined) module.exports = v;
|
|
}
|
|
else if (typeof define === "function" && define.amd) {
|
|
define("@angular/compiler/src/render3/util", ["require", "exports", "@angular/compiler/src/output/abstract_emitter", "@angular/compiler/src/output/output_ast", "@angular/compiler/src/render3/r3_identifiers"], factory);
|
|
}
|
|
})(function (require, exports) {
|
|
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.generateForwardRef = exports.convertFromMaybeForwardRefExpression = exports.createMayBeForwardRefExpression = exports.refsToArray = exports.wrapReference = exports.guardedExpression = exports.devOnlyGuardedExpression = exports.jitOnlyGuardedExpression = exports.prepareSyntheticListenerFunctionName = exports.getSafePropertyAccessString = exports.prepareSyntheticListenerName = exports.prepareSyntheticPropertyName = exports.typeWithParameters = void 0;
|
|
var abstract_emitter_1 = require("@angular/compiler/src/output/abstract_emitter");
|
|
var o = require("@angular/compiler/src/output/output_ast");
|
|
var r3_identifiers_1 = require("@angular/compiler/src/render3/r3_identifiers");
|
|
function typeWithParameters(type, numParams) {
|
|
if (numParams === 0) {
|
|
return o.expressionType(type);
|
|
}
|
|
var params = [];
|
|
for (var i = 0; i < numParams; i++) {
|
|
params.push(o.DYNAMIC_TYPE);
|
|
}
|
|
return o.expressionType(type, undefined, params);
|
|
}
|
|
exports.typeWithParameters = typeWithParameters;
|
|
var ANIMATE_SYMBOL_PREFIX = '@';
|
|
function prepareSyntheticPropertyName(name) {
|
|
return "" + ANIMATE_SYMBOL_PREFIX + name;
|
|
}
|
|
exports.prepareSyntheticPropertyName = prepareSyntheticPropertyName;
|
|
function prepareSyntheticListenerName(name, phase) {
|
|
return "" + ANIMATE_SYMBOL_PREFIX + name + "." + phase;
|
|
}
|
|
exports.prepareSyntheticListenerName = prepareSyntheticListenerName;
|
|
function getSafePropertyAccessString(accessor, name) {
|
|
var escapedName = abstract_emitter_1.escapeIdentifier(name, false, false);
|
|
return escapedName !== name ? accessor + "[" + escapedName + "]" : accessor + "." + name;
|
|
}
|
|
exports.getSafePropertyAccessString = getSafePropertyAccessString;
|
|
function prepareSyntheticListenerFunctionName(name, phase) {
|
|
return "animation_" + name + "_" + phase;
|
|
}
|
|
exports.prepareSyntheticListenerFunctionName = prepareSyntheticListenerFunctionName;
|
|
function jitOnlyGuardedExpression(expr) {
|
|
return guardedExpression('ngJitMode', expr);
|
|
}
|
|
exports.jitOnlyGuardedExpression = jitOnlyGuardedExpression;
|
|
function devOnlyGuardedExpression(expr) {
|
|
return guardedExpression('ngDevMode', expr);
|
|
}
|
|
exports.devOnlyGuardedExpression = devOnlyGuardedExpression;
|
|
function guardedExpression(guard, expr) {
|
|
var guardExpr = new o.ExternalExpr({ name: guard, moduleName: null });
|
|
var guardNotDefined = new o.BinaryOperatorExpr(o.BinaryOperator.Identical, new o.TypeofExpr(guardExpr), o.literal('undefined'));
|
|
var guardUndefinedOrTrue = new o.BinaryOperatorExpr(o.BinaryOperator.Or, guardNotDefined, guardExpr, /* type */ undefined,
|
|
/* sourceSpan */ undefined, true);
|
|
return new o.BinaryOperatorExpr(o.BinaryOperator.And, guardUndefinedOrTrue, expr);
|
|
}
|
|
exports.guardedExpression = guardedExpression;
|
|
function wrapReference(value) {
|
|
var wrapped = new o.WrappedNodeExpr(value);
|
|
return { value: wrapped, type: wrapped };
|
|
}
|
|
exports.wrapReference = wrapReference;
|
|
function refsToArray(refs, shouldForwardDeclare) {
|
|
var values = o.literalArr(refs.map(function (ref) { return ref.value; }));
|
|
return shouldForwardDeclare ? o.fn([], [new o.ReturnStatement(values)]) : values;
|
|
}
|
|
exports.refsToArray = refsToArray;
|
|
function createMayBeForwardRefExpression(expression, forwardRef) {
|
|
return { expression: expression, forwardRef: forwardRef };
|
|
}
|
|
exports.createMayBeForwardRefExpression = createMayBeForwardRefExpression;
|
|
/**
|
|
* Convert a `MaybeForwardRefExpression` to an `Expression`, possibly wrapping its expression in a
|
|
* `forwardRef()` call.
|
|
*
|
|
* If `MaybeForwardRefExpression.forwardRef` is `ForwardRefHandling.Unwrapped` then the expression
|
|
* was originally wrapped in a `forwardRef()` call to prevent the value from being eagerly evaluated
|
|
* in the code.
|
|
*
|
|
* See `packages/compiler-cli/src/ngtsc/annotations/src/injectable.ts` and
|
|
* `packages/compiler/src/jit_compiler_facade.ts` for more information.
|
|
*/
|
|
function convertFromMaybeForwardRefExpression(_a) {
|
|
var expression = _a.expression, forwardRef = _a.forwardRef;
|
|
switch (forwardRef) {
|
|
case 0 /* None */:
|
|
case 1 /* Wrapped */:
|
|
return expression;
|
|
case 2 /* Unwrapped */:
|
|
return generateForwardRef(expression);
|
|
}
|
|
}
|
|
exports.convertFromMaybeForwardRefExpression = convertFromMaybeForwardRefExpression;
|
|
/**
|
|
* Generate an expression that has the given `expr` wrapped in the following form:
|
|
*
|
|
* ```
|
|
* forwardRef(() => expr)
|
|
* ```
|
|
*/
|
|
function generateForwardRef(expr) {
|
|
return o.importExpr(r3_identifiers_1.Identifiers.forwardRef).callFn([o.fn([], [new o.ReturnStatement(expr)])]);
|
|
}
|
|
exports.generateForwardRef = generateForwardRef;
|
|
});
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy9yZW5kZXIzL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7O0lBRUgsa0ZBQTREO0lBQzVELDJEQUEwQztJQUMxQywrRUFBNkM7SUFFN0MsU0FBZ0Isa0JBQWtCLENBQUMsSUFBa0IsRUFBRSxTQUFpQjtRQUN0RSxJQUFJLFNBQVMsS0FBSyxDQUFDLEVBQUU7WUFDbkIsT0FBTyxDQUFDLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQy9CO1FBQ0QsSUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO1FBQzVCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbEMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDN0I7UUFDRCxPQUFPLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBVEQsZ0RBU0M7SUFnQkQsSUFBTSxxQkFBcUIsR0FBRyxHQUFHLENBQUM7SUFDbEMsU0FBZ0IsNEJBQTRCLENBQUMsSUFBWTtRQUN2RCxPQUFPLEtBQUcscUJBQXFCLEdBQUcsSUFBTSxDQUFDO0lBQzNDLENBQUM7SUFGRCxvRUFFQztJQUVELFNBQWdCLDRCQUE0QixDQUFDLElBQVksRUFBRSxLQUFhO1FBQ3RFLE9BQU8sS0FBRyxxQkFBcUIsR0FBRyxJQUFJLFNBQUksS0FBTyxDQUFDO0lBQ3BELENBQUM7SUFGRCxvRUFFQztJQUVELFNBQWdCLDJCQUEyQixDQUFDLFFBQWdCLEVBQUUsSUFBWTtRQUN4RSxJQUFNLFdBQVcsR0FBRyxtQ0FBZ0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEtB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SCxDQUFDO0lBVEQsb0ZBU0M7SUFFRDs7Ozs7O09BTUc7SUFDSCxTQUFnQixrQkFBa0IsQ0FBQyxJQUFrQjtRQUNuRCxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsNEJBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hHLENBQUM7SUFGRCxnREFFQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge2VzY2FwZUlkZW50aWZpZXJ9IGZyb20gJy4uL291dHB1dC9hYnN0cmFjdF9lbWl0dGVyJztcbmltcG9ydCAqIGFzIG8gZnJvbSAnLi4vb3V0cHV0L291dHB1dF9hc3QnO1xuaW1wb3J0IHtJZGVudGlmaWVyc30gZnJvbSAnLi9yM19pZGVudGlmaWVycyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlV2l0aFBhcmFtZXRlcnModHlwZTogby5FeHByZXNzaW9uLCBudW1QYXJhbXM6IG51bWJlcik6IG8uRXhwcmVzc2lvblR5cGUge1xuICBpZiAobnVtUGFyYW1zID09PSAwKSB7XG4gICAgcmV0dXJuIG8uZXhwcmVzc2lvblR5cGUodHlwZSk7XG4gIH1cbiAgY29uc3QgcGFyYW1zOiBvLlR5cGVbXSA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG51bVBhcmFtczsgaSsrKSB7XG4gICAgcGFyYW1zLnB1c2goby5EWU5BTUlDX1RZUEUpO1xuICB9XG4gIHJldHVybiBvLmV4cHJlc3Npb25UeXBlKHR5cGUsIHVuZGVmaW5lZCwgcGFyYW1zKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSM1JlZmVyZW5jZSB7XG4gIHZhbHVlOiBvLkV4cHJlc3Npb247XG4gIHR5cGU6IG8uRXhwcmVzc2lvbjtcbn1cblxuLyoqXG4gKiBSZXN1bHQgb2YgY29tcGlsYXRpb24gb2YgYSByZW5kZXIzIGNvZGUgdW5pdCwgZS5nLiBjb21wb25lbnQsIGRpcmVjdGl2ZSwgcGlwZSwgZXRjLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFIzQ29tcGlsZWRFeHByZXNzaW9uIHtcbiAgZXhwcmVzc2lvbjogby5FeHByZXNzaW9uO1xuICB0eXBlOiBvLlR5cGU7XG4gIHN0YXRlbWVudHM6IG8uU3RhdGVtZW50W107XG59XG5cbmNvbnN0IEFOSU1BVEVfU1lNQk9MX1BSRUZJWCA9ICdAJztcbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlU3ludGhldGljUHJvcGVydHlOYW1lKG5hbWU6IHN0cmluZykge1xuICByZXR1cm4gYCR7QU5JTUFURV9TWU1CT0xfUFJFRklYfSR7bmFtZX1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZVN5bnRoZXRpY0xpc3RlbmVyTmFtZShuYW1lOiBzdHJpbmcsIHBoYXNlOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGAke0FOSU1BVEVfU1lNQk9MX1BSRUZJWH0ke25hbWV9LiR7cGhhc2V9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNhZmVQcm9wZXJ0eUFjY2Vzc1N0cmluZyhhY2Nlc3Nvcjogc3RyaW5nLCBuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBlc2NhcGVkTmFtZSA9IGVzY2FwZUlkZW50aWZpZXIobmFtZSwgZmFsc2UsIGZhbHNlKTtcbiAgcmV0dXJuIGVzY2FwZWROYW1lICE9PSBuYW1lID8gYCR7YWNjZXNzb3J9WyR7ZXNjYXBlZE5hbWV9XWAgOiBgJHthY2Nlc3Nvcn0uJHtuYW1lfWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlU3ludGhldGljTGlzdGVuZXJGdW5jdGlvbk5hbWUobmFtZTogc3RyaW5nLCBwaGFzZTogc3RyaW5nKSB7XG4gIHJldHVybiBgYW5pbWF0aW9uXyR7bmFtZX1fJHtwaGFzZX1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaml0T25seUd1YXJkZWRFeHByZXNzaW9uKGV4cHI6IG8uRXhwcmVzc2lvbik6IG8uRXhwcmVzc2lvbiB7XG4gIHJldHVybiBndWFyZGVkRXhwcmVzc2lvbignbmdKaXRNb2RlJywgZXhwcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZXZPbmx5R3VhcmRlZEV4cHJlc3Npb24oZXhwcjogby5FeHByZXNzaW9uKTogby5FeHByZXNzaW9uIHtcbiAgcmV0dXJuIGd1YXJkZWRFeHByZXNzaW9uKCduZ0Rldk1vZGUnLCBleHByKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGd1YXJkZWRFeHByZXNzaW9uKGd1YXJkOiBzdHJpbmcsIGV4cHI6IG8uRXhwcmVzc2lvbik6IG8uRXhwcmVzc2lvbiB7XG4gIGNvbnN0IGd1YXJkRXhwciA9IG5ldyBvLkV4dGVybmFsRXhwcih7bmFtZTogZ3VhcmQsIG1vZHVsZU5hbWU6IG51bGx9KTtcbiAgY29uc3QgZ3VhcmROb3REZWZpbmVkID0gbmV3IG8uQmluYXJ5T3BlcmF0b3JFeHByKFxuICAgICAgby5CaW5hcnlPcGVyYXRvci5JZGVudGljYWwsIG5ldyBvLlR5cGVvZkV4cHIoZ3VhcmRFeHByKSwgby5saXRlcmFsKCd1bmRlZmluZWQnKSk7XG4gIGNvbnN0IGd1YXJkVW5kZWZpbmVkT3JUcnVlID0gbmV3IG8uQmluYXJ5T3BlcmF0b3JFeHByKFxuICAgICAgby5CaW5hcnlPcGVyYXRvci5PciwgZ3VhcmROb3REZWZpbmVkLCBndWFyZEV4cHIsIC8qIHR5cGUgKi8gdW5kZWZpbmVkLFxuICAgICAgLyogc291cmNlU3BhbiAqLyB1bmRlZmluZWQsIHRydWUpO1xuICByZXR1cm4gbmV3IG8uQmluYXJ5T3BlcmF0b3JFeHByKG8uQmluYXJ5T3BlcmF0b3IuQW5kLCBndWFyZFVuZGVmaW5lZE9yVHJ1ZSwgZXhwcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cmFwUmVmZXJlbmNlKHZhbHVlOiBhbnkpOiBSM1JlZmVyZW5jZSB7XG4gIGNvbnN0IHdyYXBwZWQgPSBuZXcgby5XcmFwcGVkTm9kZUV4cHIodmFsdWUpO1xuICByZXR1cm4ge3ZhbHVlOiB3cmFwcGVkLCB0eXBlOiB3cmFwcGVkfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZnNUb0FycmF5KHJlZnM6IFIzUmVmZXJlbmNlW10sIHNob3VsZEZvcndhcmREZWNsYXJlOiBib29sZWFuKTogby5FeHByZXNzaW9uIHtcbiAgY29uc3QgdmFsdWVzID0gby5saXRlcmFsQXJyKHJlZnMubWFwKHJlZiA9PiByZWYudmFsdWUpKTtcbiAgcmV0dXJuIHNob3VsZEZvcndhcmREZWNsYXJlID8gby5mbihbXSwgW25ldyBvLlJldHVyblN0YXRlbWVudCh2YWx1ZXMpXSkgOiB2YWx1ZXM7XG59XG5cblxuLyoqXG4gKiBEZXNjcmliZXMgYW4gZXhwcmVzc2lvbiB0aGF0IG1heSBoYXZlIGJlZW4gd3JhcHBlZCBpbiBhIGBmb3J3YXJkUmVmKClgIGd1YXJkLlxuICpcbiAqIFRoaXMgaXMgdXNlZCB3aGVuIGRlc2NyaWJpbmcgZXhwcmVzc2lvbnMgdGhhdCBjYW4gcmVmZXIgdG8gdHlwZXMgdGhhdCBtYXkgZWFnZXJseSByZWZlcmVuY2UgdHlwZXNcbiAqIHRoYXQgaGF2ZSBub3QgeWV0IGJlZW4gZGVmaW5lZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXliZUZvcndhcmRSZWZFeHByZXNzaW9uPFQgZXh0ZW5kcyBvLkV4cHJlc3Npb24gPSBvLkV4cHJlc3Npb24+IHtcbiAgLyoqXG4gICAqIFRoZSB1bndyYXBwZWQgZXhwcmVzc2lvbi5cbiAgICovXG4gIGV4cHJlc3Npb246IFQ7XG4gIC8qKlxuICAgKiBTcGVjaWZpZWQgd2hldGhlciB0aGUgYGV4cHJlc3Npb25gIGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHNvbWV0aGluZyB0aGF0IGhhcyBub3QgeWV0IGJlZW5cbiAgICogZGVmaW5lZCwgYW5kIHdoZXRoZXIgdGhlIGV4cHJlc3Npb24gaXMgc3RpbGwgd3JhcHBlZCBpbiBhIGBmb3J3YXJkUmVmKClgIGNhbGwuXG4gICAqXG4gICAqIElmIHRoaXMgdmFsdWUgaXMgYEZvcndhcmRSZWZIYW5kbGluZy5Ob25lYCB0aGVuIHRoZSBgZXhwcmVzc2lvbmAgaXMgc2FmZSB0byB1c2UgYXMtaXMuXG4gICAqXG4gICAqIE90aGVyd2lzZSB0aGUgYGV4cHJlc3Npb25gIHdhcyB3cmFwcGVkIGluIGEgY2FsbCB0byBgZm9yd2FyZFJlZigpYCBhbmQgbXVzdCBub3QgYmUgZWFnZXJseVxuICAgKiBldmFsdWF0ZWQuIEluc3RlYWQgaXQgbXVzdCBiZSB3cmFwcGVkIGluIGEgZnVuY3Rpb24gY2xvc3VyZSB0aGF0IHdpbGwgYmUgZXZhbHVhdGVkIGxhemlseSB0b1xuICAgKiBhbGxvdyB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZXhwcmVzc2lvbiB0byBiZSBldmFsdWF0ZWQgZmlyc3QuXG4gICAqXG4gICAqIEluIGZ1bGwgQU9UIGNvbXBpbGF0aW9uIGl0IGNhbiBiZSBzYWZlIHRvIHVud3JhcCB0aGUgYGZvcndhcmRSZWYoKWAgY2FsbCB1cCBmcm9udCBpZiB0aGVcbiAgICogZXhwcmVzc2lvbiB3aWxsIGFjdHVhbGx5IGJlIGV2YWx1YXRlZCBsYXppbHkgaW5zaWRlIGEgZnVuY3Rpb24gY2FsbCBhZnRlciB0aGUgdmFsdWUgb2ZcbiAgICogYGV4cHJlc3Npb25gIGhhcyBiZWVuIGRlZmluZWQuXG4gICAqXG4gICAqIEJ1dCBpbiBvdGhlciBjYXNlcywgc3VjaCBhcyBwYXJ0aWFsIEFPVCBjb21waWxhdGlvbiBvciBKSVQgY29tcGlsYXRpb24gdGhlIGV4cHJlc3Npb24gd2lsbCBiZVxuICAgKiBldmFsdWF0ZWQgZWFnZXJseSBpbiB0b3AgbGV2ZWwgY29kZSBzbyB3aWxsIG5lZWQgdG8gY29udGludWUgdG8gYmUgd3JhcHBlZCBpbiBhIGBmb3J3YXJkUmVmKClgXG4gICAqIGNhbGwuXG4gICAqXG4gICAqL1xuICBmb3J3YXJkUmVmOiBGb3J3YXJkUmVmSGFuZGxpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNYXlCZUZvcndhcmRSZWZFeHByZXNzaW9uPFQgZXh0ZW5kcyBvLkV4cHJlc3Npb24+KFxuICAgIGV4cHJlc3Npb246IFQsIGZvcndhcmRSZWY6IEZvcndhcmRSZWZIYW5kbGluZyk6IE1heWJlRm9yd2FyZFJlZkV4cHJlc3Npb248VD4ge1xuICByZXR1cm4ge2V4cHJlc3Npb24sIGZvcndhcmRSZWZ9O1xufVxuXG4vKipcbiAqIENvbnZlcnQgYSBgTWF5YmVGb3J3YXJkUmVmRXhwcmVzc2lvbmAgdG8gYW4gYEV4cHJlc3Npb25gLCBwb3NzaWJseSB3cmFwcGluZyBpdHMgZXhwcmVzc2lvbiBpbiBhXG4gKiBgZm9yd2FyZFJlZigpYCBjYWxsLlxuICpcbiAqIElmIGBNYXliZUZvcndhcmRSZWZFeHByZXNzaW9uLmZvcndhcmRSZWZgIGlzIGBGb3J3YXJkUmVmSGFuZGxpbmcuVW53cmFwcGVkYCB0aGVuIHRoZSBleHByZXNzaW9uXG4gKiB3YXMgb3JpZ2luYWxseSB3cmFwcGVkIGluIGEgYGZvcndhcmRSZWYoKWAgY2FsbCB0byBwcmV2ZW50IHRoZSB2YWx1ZSBmcm9tIGJlaW5nIGVhZ2VybHkgZXZhbHVhdGVkXG4gKiBpbiB0aGUgY29kZS5cbiAqXG4gKiBTZWUgYHBhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvYW5ub3RhdGlvbnMvc3JjL2luamVjdGFibGUudHNgIGFuZFxuICogYHBhY2thZ2VzL2NvbXBpbGVyL3NyYy9qaXRfY29tcGlsZXJfZmFjYWRlLnRzYCBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRGcm9tTWF5YmVGb3J3YXJkUmVmRXhwcmVzc2lvbihcbiAgICB7ZXhwcmVzc2lvbiwgZm9yd2FyZFJlZn06IE1heWJlRm9yd2FyZFJlZkV4cHJlc3Npb24pOiBvLkV4cHJlc3Npb24ge1xuICBzd2l0Y2ggKGZvcndhcmRSZWYpIHtcbiAgICBjYXNlIEZvcndhcmRSZWZIYW5kbGluZy5Ob25lOlxuICAgIGNhc2UgRm9yd2FyZFJlZkhhbmRsaW5nLldyYXBwZWQ6XG4gICAgICByZXR1cm4gZXhwcmVzc2lvbjtcbiAgICBjYXNlIEZvcndhcmRSZWZIYW5kbGluZy5VbndyYXBwZWQ6XG4gICAgICByZXR1cm4gZ2VuZXJhdGVGb3J3YXJkUmVmKGV4cHJlc3Npb24pO1xuICB9XG59XG5cbi8qKlxuICogR2VuZXJhdGUgYW4gZXhwcmVzc2lvbiB0aGF0IGhhcyB0aGUgZ2l2ZW4gYGV4cHJgIHdyYXBwZWQgaW4gdGhlIGZvbGxvd2luZyBmb3JtOlxuICpcbiAqIGBgYFxuICogZm9yd2FyZFJlZigoKSA9PiBleHByKVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUZvcndhcmRSZWYoZXhwcjogby5FeHByZXNzaW9uKTogby5FeHByZXNzaW9uIHtcbiAgcmV0dXJuIG8uaW1wb3J0RXhwcihJZGVudGlmaWVycy5mb3J3YXJkUmVmKS5jYWxsRm4oW28uZm4oW10sIFtuZXcgby5SZXR1cm5TdGF0ZW1lbnQoZXhwcildKV0pO1xufVxuXG4vKipcbiAqIFNwZWNpZmllcyBob3cgYSBmb3J3YXJkIHJlZiBoYXMgYmVlbiBoYW5kbGVkIGluIGEgTWF5YmVGb3J3YXJkUmVmRXhwcmVzc2lvblxuICovXG5leHBvcnQgY29uc3QgZW51bSBGb3J3YXJkUmVmSGFuZGxpbmcge1xuICAvKiogVGhlIGV4cHJlc3Npb24gd2FzIG5vdCB3cmFwcGVkIGluIGEgYGZvcndhcmRSZWYoKWAgY2FsbCBpbiB0aGUgZmlyc3QgcGxhY2UuICovXG4gIE5vbmUsXG4gIC8qKiBUaGUgZXhwcmVzc2lvbiBpcyBzdGlsbCB3cmFwcGVkIGluIGEgYGZvcndhcmRSZWYoKWAgY2FsbC4gKi9cbiAgV3JhcHBlZCxcbiAgLyoqIFRoZSBleHByZXNzaW9uIHdhcyB3cmFwcGVkIGluIGEgYGZvcndhcmRSZWYoKWAgY2FsbCBidXQgaGFzIHNpbmNlIGJlZW4gdW53cmFwcGVkLiAqL1xuICBVbndyYXBwZWQsXG59XG4iXX0=
|