Socket
Socket
Sign inDemoInstall

@glimmer/runtime

Package Overview
Dependencies
Maintainers
10
Versions
289
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@glimmer/runtime - npm Package Compare versions

Comparing version 0.23.0-alpha.10 to 0.23.0-alpha.11

10

dist/commonjs/es2017/index.js

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

});
exports.ConcreteBounds = exports.ElementStack = exports.Simple = exports.insertHTMLBefore = exports.isWhitespace = exports.DOMTreeConstruction = exports.IDOMChanges = exports.DOMChanges = exports.isComponentDefinition = exports.ComponentDefinition = exports.PartialDefinition = exports.Environment = exports.Scope = exports.isSafeString = exports.RenderResult = exports.UpdatingVM = exports.compileStatement = exports.CompilableTemplate = exports.ClientSide = exports.compileExpression = exports.compileList = exports.InlineMacros = exports.BlockMacros = exports.getDynamicVar = exports.resetDebuggerCallback = exports.setDebuggerCallback = exports.normalizeTextValue = exports.debugSlice = exports.Register = exports.readDOMAttr = exports.defaultPropertyManagers = exports.defaultAttributeManagers = exports.defaultManagers = exports.INPUT_VALUE_PROPERTY_MANAGER = exports.PropertyManager = exports.AttributeManager = exports.IAttributeManager = exports.CompiledDynamicTemplate = exports.CompiledStaticTemplate = exports.compileLayout = exports.OpcodeBuilderDSL = exports.ConditionalReference = exports.PrimitiveReference = exports.UNDEFINED_REFERENCE = exports.NULL_REFERENCE = exports.templateFactory = undefined;
exports.ConcreteBounds = exports.ElementStack = exports.Simple = exports.insertHTMLBefore = exports.isWhitespace = exports.DOMTreeConstruction = exports.IDOMChanges = exports.DOMChanges = exports.isComponentDefinition = exports.ComponentDefinition = exports.PartialDefinition = exports.Environment = exports.Scope = exports.isSafeString = exports.RenderResult = exports.UpdatingVM = exports.compileStatement = exports.CompilableTemplate = exports.ClientSide = exports.compileExpression = exports.compileList = exports.InlineMacros = exports.BlockMacros = exports.getDynamicVar = exports.resetDebuggerCallback = exports.setDebuggerCallback = exports.normalizeTextValue = exports.Register = exports.readDOMAttr = exports.defaultPropertyManagers = exports.defaultAttributeManagers = exports.defaultManagers = exports.INPUT_VALUE_PROPERTY_MANAGER = exports.PropertyManager = exports.AttributeManager = exports.IAttributeManager = exports.CompiledDynamicTemplate = exports.CompiledStaticTemplate = exports.compileLayout = exports.OpcodeBuilderDSL = exports.ConditionalReference = exports.PrimitiveReference = exports.UNDEFINED_REFERENCE = exports.NULL_REFERENCE = exports.templateFactory = undefined;

@@ -137,8 +137,2 @@ var _template = require('./lib/template');

});
Object.defineProperty(exports, 'debugSlice', {
enumerable: true,
get: function () {
return _opcodes.debugSlice;
}
});

@@ -351,2 +345,2 @@ var _content = require('./lib/compiled/opcodes/content');

exports.Simple = Simple;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7NkNBRVMsQUFBTyxBQUFJLEFBQWUsQUFBNkIsQUFBTSxBQUFnQixBQUFDLEFBRXZGLEFBQU87Ozs7Ozs7Ozt1QkFBRSxBQUFjOzs7Ozs7dUJBQUUsQUFBbUI7Ozs7Ozt1QkFBRSxBQUFrQjs7Ozs7O3VCQUFFLEFBQW9CLEFBQUUsQUFBTSxBQUFrQixBQUFDLEFBRWpILEFBQU87Ozs7Ozs7Ozs0Q0FDSixBQUFPLEFBQUksQUFBZ0IsQUFDN0IsQUFBTSxBQUFnQyxBQUFDLEFBRXhDLEFBQU87Ozs7Ozs7OztxQkFFTCxBQUFhLEFBQ2QsQUFBTSxBQUFnQixBQUFDLEFBT3hCLEFBQU87Ozs7Ozs7OzttQkFDTCxBQUFzQjs7Ozs7O21CQUN0QixBQUF1QixBQUd4QixBQUFNLEFBQXVCLEFBQUMsQUFFL0IsQUFBTzs7Ozs7Ozs7OzhCQUNMLEFBQWdCLEFBQUksQUFBaUI7Ozs7Ozs4QkFDckMsQUFBZ0I7Ozs7Ozs4QkFDaEIsQUFBZTs7Ozs7OzhCQUNmLEFBQTRCOzs7Ozs7OEJBQzVCLEFBQWU7Ozs7Ozs4QkFDZixBQUF3Qjs7Ozs7OzhCQUN4QixBQUF1Qjs7Ozs7OzhCQUN2QixBQUFXLEFBQ1osQUFBTSxBQUE4QixBQUFDLEFBRXRDLEFBQU87Ozs7Ozs7OztvQkFDTCxBQUFROzs7Ozs7b0JBQ1IsQUFBVSxBQUNYLEFBQU0sQUFBZSxBQUFDLEFBRXZCLEFBQU87Ozs7Ozs7OztvQkFDTCxBQUFrQixBQUNuQixBQUFNLEFBQWdDLEFBQUMsQUFFeEMsQUFBTzs7Ozs7Ozs7O3FCQUNMLEFBQW1COzs7Ozs7cUJBQ25CLEFBQXFCLEFBRXRCLEFBQU0sQUFBaUMsQUFBQyxBQUV6QyxBQUFPOzs7Ozs7Ozs7a0RBQ0wsQUFBTyxBQUFJLEFBQWEsQUFDekIsQUFBTSxBQUErQixBQUFDLEFBRXZDLEFBQU87Ozs7Ozs7OztzQkFDTCxBQUFNLEFBQUksQUFBVzs7Ozs7O3NCQUNyQixBQUFPLEFBQUksQUFBWTs7Ozs7O3NCQUd2QixBQUFXOzs7Ozs7c0JBQ1gsQUFBSSxBQUFJLEFBQWlCLEFBQzFCLEFBQU0sQUFBd0IsQUFBQyxBQUVoQyxBQUFPOzs7Ozs7Ozs7b0JBQ0wsQUFBVTs7Ozs7O29CQUNWLEFBQWtCOzs7Ozs7b0JBS2xCLEFBQWdCLEFBQ2pCLEFBQU0sQUFBZSxBQUFDLEFBRXZCLEFBQU87Ozs7Ozs7OztlQUFrQixBQUFVOzs7Ozs7ZUFBRSxBQUFZLEFBQWtCLEFBQU0sQUFBVSxBQUFDLEFBV3BGLEFBQU87Ozs7Ozs7OzttQkFBYyxBQUFZLEFBQUUsQUFBTSxBQUFjLEFBQUMsQUFFeEQsQUFBTzs7Ozs7Ozs7O3dCQUNMLEFBQUs7Ozs7OztnREFDTCxBQUFPLEFBQUksQUFBVyxBQUd2QixBQUFNLEFBQW1CLEFBQUMsQUFFM0IsQUFBTzs7Ozs7Ozs7O29CQUNMLEFBQWlCLEFBQ2xCLEFBQU0sQUFBZSxBQUFDLEFBRXZCLEFBQU87Ozs7Ozs7Ozt1QkFJTCxBQUFtQjs7Ozs7O3VCQUluQixBQUFxQixBQUN0QixBQUFNLEFBQTRCLEFBQUMsQUFNcEMsQUFBTzs7Ozs7Ozs7OzJDQUFFLEFBQU8sQUFBSSxBQUFVOzs7Ozs7bUJBQUUsQUFBVSxBQUFJLEFBQVc7Ozs7OzttQkFBRSxBQUFtQjs7Ozs7O21CQUFFLEFBQVk7Ozs7OzttQkFBRSxBQUFnQixBQUFFLEFBQU0sQUFBa0IsQUFBQzs7Ozs7Ozs7O3FCQUdoSSxBQUFZLEFBQXFCLEFBQU0sQUFBZSxBQUFDLEFBQ2hFLEFBQU87Ozs7Ozs7OzttQkFBcUIsQUFBYyxBQUFFLEFBQU0sQUFBYyxBQUFDOzs7O0FBdkhqRSxBQUFPLEFBQWlCLEFBQUMsQUFFekIsQUFBTzs7QUFrSFAsQUFBUTs7SUFBSyxBQUFNLEFBQU0sQUFBc0IsQUFBQyxBQUNoRCxBQUFPOzs7Ozs7UUFBRSxBQUFNLEFBQUUsQUFBQyxBQUNsQixBQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICcuL2xpYi9ib290c3RyYXAnO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIHRlbXBsYXRlRmFjdG9yeSwgVGVtcGxhdGVGYWN0b3J5LCBUZW1wbGF0ZSB9IGZyb20gJy4vbGliL3RlbXBsYXRlJztcblxuZXhwb3J0IHsgTlVMTF9SRUZFUkVOQ0UsIFVOREVGSU5FRF9SRUZFUkVOQ0UsIFByaW1pdGl2ZVJlZmVyZW5jZSwgQ29uZGl0aW9uYWxSZWZlcmVuY2UgfSBmcm9tICcuL2xpYi9yZWZlcmVuY2VzJztcblxuZXhwb3J0IHtcbiAgIGRlZmF1bHQgYXMgT3Bjb2RlQnVpbGRlckRTTFxufSBmcm9tICcuL2xpYi9jb21waWxlZC9vcGNvZGVzL2J1aWxkZXInO1xuXG5leHBvcnQge1xuICBDb21waWxhYmxlTGF5b3V0LFxuICBjb21waWxlTGF5b3V0XG59IGZyb20gJy4vbGliL2NvbXBpbGVyJztcblxuZXhwb3J0IHtcbiAgQ29tcG9uZW50QnVpbGRlcixcbiAgQ29tcG9uZW50QXJnc1xufSBmcm9tICcuL2xpYi9vcGNvZGUtYnVpbGRlcic7XG5cbmV4cG9ydCB7XG4gIENvbXBpbGVkU3RhdGljVGVtcGxhdGUsXG4gIENvbXBpbGVkRHluYW1pY1RlbXBsYXRlLFxuICBDb21waWxlZER5bmFtaWNCbG9jayxcbiAgQ29tcGlsZWREeW5hbWljUHJvZ3JhbVxufSBmcm9tICcuL2xpYi9jb21waWxlZC9ibG9ja3MnO1xuXG5leHBvcnQge1xuICBBdHRyaWJ1dGVNYW5hZ2VyIGFzIElBdHRyaWJ1dGVNYW5hZ2VyLFxuICBBdHRyaWJ1dGVNYW5hZ2VyLFxuICBQcm9wZXJ0eU1hbmFnZXIsXG4gIElOUFVUX1ZBTFVFX1BST1BFUlRZX01BTkFHRVIsXG4gIGRlZmF1bHRNYW5hZ2VycyxcbiAgZGVmYXVsdEF0dHJpYnV0ZU1hbmFnZXJzLFxuICBkZWZhdWx0UHJvcGVydHlNYW5hZ2VycyxcbiAgcmVhZERPTUF0dHJcbn0gZnJvbSAnLi9saWIvZG9tL2F0dHJpYnV0ZS1tYW5hZ2Vycyc7XG5cbmV4cG9ydCB7XG4gIFJlZ2lzdGVyLFxuICBkZWJ1Z1NsaWNlXG59IGZyb20gJy4vbGliL29wY29kZXMnO1xuXG5leHBvcnQge1xuICBub3JtYWxpemVUZXh0VmFsdWVcbn0gZnJvbSAnLi9saWIvY29tcGlsZWQvb3Bjb2Rlcy9jb250ZW50JztcblxuZXhwb3J0IHtcbiAgc2V0RGVidWdnZXJDYWxsYmFjayxcbiAgcmVzZXREZWJ1Z2dlckNhbGxiYWNrLFxuICBEZWJ1Z0NhbGxiYWNrXG59IGZyb20gJy4vbGliL2NvbXBpbGVkL29wY29kZXMvZGVidWdnZXInO1xuXG5leHBvcnQge1xuICBkZWZhdWx0IGFzIGdldER5bmFtaWNWYXJcbn0gZnJvbSAnLi9saWIvaGVscGVycy9nZXQtZHluYW1pYy12YXInO1xuXG5leHBvcnQge1xuICBCbG9ja3MgYXMgQmxvY2tNYWNyb3MsXG4gIElubGluZXMgYXMgSW5saW5lTWFjcm9zLFxuICBCbG9ja01hY3JvLFxuICBNaXNzaW5nQmxvY2tNYWNybyxcbiAgY29tcGlsZUxpc3QsXG4gIGV4cHIgYXMgY29tcGlsZUV4cHJlc3Npb25cbn0gZnJvbSAnLi9saWIvc3ludGF4L2Z1bmN0aW9ucyc7XG5cbmV4cG9ydCB7XG4gIENsaWVudFNpZGUsXG4gIENvbXBpbGFibGVUZW1wbGF0ZSxcbiAgU2Nhbm5lZEJsb2NrLFxuICBTY2FubmVkUHJvZ3JhbSxcbiAgQmxvY2ssXG4gIFByb2dyYW0sXG4gIGNvbXBpbGVTdGF0ZW1lbnRcbn0gZnJvbSAnLi9saWIvc2Nhbm5lcic7XG5cbmV4cG9ydCB7IFB1YmxpY1ZNIGFzIFZNLCBVcGRhdGluZ1ZNLCBSZW5kZXJSZXN1bHQsIEl0ZXJhdG9yUmVzdWx0IH0gZnJvbSAnLi9saWIvdm0nO1xuXG5leHBvcnQge1xuICBJQXJndW1lbnRzIGFzIEFyZ3VtZW50cyxcbiAgSUNhcHR1cmVkQXJndW1lbnRzIGFzIENhcHR1cmVkQXJndW1lbnRzLFxuICBJUG9zaXRpb25hbEFyZ3VtZW50cyBhcyBQb3NpdGlvbmFsQXJndW1lbnRzLFxuICBJQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzIGFzIENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50cyxcbiAgSU5hbWVkQXJndW1lbnRzIGFzIE5hbWVkQXJndW1lbnRzLFxuICBJQ2FwdHVyZWROYW1lZEFyZ3VtZW50cyBhcyBDYXB0dXJlZE5hbWVkQXJndW1lbnRzLFxufSBmcm9tICcuL2xpYi92bS9hcmd1bWVudHMnO1xuXG5leHBvcnQgeyBTYWZlU3RyaW5nLCBpc1NhZmVTdHJpbmcgfSBmcm9tICcuL2xpYi91cHNlcnQnO1xuXG5leHBvcnQge1xuICBTY29wZSxcbiAgZGVmYXVsdCBhcyBFbnZpcm9ubWVudCxcbiAgSGVscGVyLFxuICBEeW5hbWljU2NvcGUsXG59IGZyb20gJy4vbGliL2Vudmlyb25tZW50JztcblxuZXhwb3J0IHtcbiAgUGFydGlhbERlZmluaXRpb25cbn0gZnJvbSAnLi9saWIvcGFydGlhbCc7XG5cbmV4cG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50Q2xhc3MsXG4gIENvbXBvbmVudE1hbmFnZXIsXG4gIENvbXBvbmVudERlZmluaXRpb24sXG4gIENvbXBvbmVudExheW91dEJ1aWxkZXIsXG4gIENvbXBvbmVudEF0dHJzQnVpbGRlcixcbiAgUHJlcGFyZWRBcmd1bWVudHMsXG4gIGlzQ29tcG9uZW50RGVmaW5pdGlvblxufSBmcm9tICcuL2xpYi9jb21wb25lbnQvaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCB7XG4gIE1vZGlmaWVyTWFuYWdlclxufSBmcm9tICcuL2xpYi9tb2RpZmllci9pbnRlcmZhY2VzJztcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBET01DaGFuZ2VzLCBET01DaGFuZ2VzIGFzIElET01DaGFuZ2VzLCBET01UcmVlQ29uc3RydWN0aW9uLCBpc1doaXRlc3BhY2UsIGluc2VydEhUTUxCZWZvcmUgfSBmcm9tICcuL2xpYi9kb20vaGVscGVyJztcbmltcG9ydCAgKiBhcyBTaW1wbGUgZnJvbSAnLi9saWIvZG9tL2ludGVyZmFjZXMnO1xuZXhwb3J0IHsgU2ltcGxlIH07XG5leHBvcnQgeyBFbGVtZW50U3RhY2ssIEVsZW1lbnRPcGVyYXRpb25zIH0gZnJvbSAnLi9saWIvYnVpbGRlcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEJvdW5kcywgQ29uY3JldGVCb3VuZHMgfSBmcm9tICcuL2xpYi9ib3VuZHMnO1xuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7NkNBRVMsQUFBTyxBQUFJLEFBQWUsQUFBNkIsQUFBTSxBQUFnQixBQUFDLEFBRXZGLEFBQU87Ozs7Ozs7Ozt1QkFBRSxBQUFjOzs7Ozs7dUJBQUUsQUFBbUI7Ozs7Ozt1QkFBRSxBQUFrQjs7Ozs7O3VCQUFFLEFBQW9CLEFBQUUsQUFBTSxBQUFrQixBQUFDLEFBRWpILEFBQU87Ozs7Ozs7Ozs0Q0FDSixBQUFPLEFBQUksQUFBZ0IsQUFDN0IsQUFBTSxBQUFnQyxBQUFDLEFBRXhDLEFBQU87Ozs7Ozs7OztxQkFFTCxBQUFhLEFBQ2QsQUFBTSxBQUFnQixBQUFDLEFBT3hCLEFBQU87Ozs7Ozs7OzttQkFDTCxBQUFzQjs7Ozs7O21CQUN0QixBQUF1QixBQUd4QixBQUFNLEFBQXVCLEFBQUMsQUFFL0IsQUFBTzs7Ozs7Ozs7OzhCQUNMLEFBQWdCLEFBQUksQUFBaUI7Ozs7Ozs4QkFDckMsQUFBZ0I7Ozs7Ozs4QkFDaEIsQUFBZTs7Ozs7OzhCQUNmLEFBQTRCOzs7Ozs7OEJBQzVCLEFBQWU7Ozs7Ozs4QkFDZixBQUF3Qjs7Ozs7OzhCQUN4QixBQUF1Qjs7Ozs7OzhCQUN2QixBQUFXLEFBQ1osQUFBTSxBQUE4QixBQUFDLEFBRXRDLEFBQU87Ozs7Ozs7OztvQkFDTCxBQUFRLEFBQ1QsQUFBTSxBQUFlLEFBQUMsQUFFdkIsQUFBTzs7Ozs7Ozs7O29CQUNMLEFBQWtCLEFBQ25CLEFBQU0sQUFBZ0MsQUFBQyxBQUV4QyxBQUFPOzs7Ozs7Ozs7cUJBQ0wsQUFBbUI7Ozs7OztxQkFDbkIsQUFBcUIsQUFFdEIsQUFBTSxBQUFpQyxBQUFDLEFBRXpDLEFBQU87Ozs7Ozs7OztrREFDTCxBQUFPLEFBQUksQUFBYSxBQUN6QixBQUFNLEFBQStCLEFBQUMsQUFFdkMsQUFBTzs7Ozs7Ozs7O3NCQUNMLEFBQU0sQUFBSSxBQUFXOzs7Ozs7c0JBQ3JCLEFBQU8sQUFBSSxBQUFZOzs7Ozs7c0JBR3ZCLEFBQVc7Ozs7OztzQkFDWCxBQUFJLEFBQUksQUFBaUIsQUFDMUIsQUFBTSxBQUF3QixBQUFDLEFBRWhDLEFBQU87Ozs7Ozs7OztvQkFDTCxBQUFVOzs7Ozs7b0JBQ1YsQUFBa0I7Ozs7OztvQkFLbEIsQUFBZ0IsQUFDakIsQUFBTSxBQUFlLEFBQUMsQUFFdkIsQUFBTzs7Ozs7Ozs7O2VBQWtCLEFBQVU7Ozs7OztlQUFFLEFBQVksQUFBa0IsQUFBTSxBQUFVLEFBQUMsQUFXcEYsQUFBTzs7Ozs7Ozs7O21CQUFjLEFBQVksQUFBRSxBQUFNLEFBQWMsQUFBQyxBQUV4RCxBQUFPOzs7Ozs7Ozs7d0JBQ0wsQUFBSzs7Ozs7O2dEQUNMLEFBQU8sQUFBSSxBQUFXLEFBR3ZCLEFBQU0sQUFBbUIsQUFBQyxBQUUzQixBQUFPOzs7Ozs7Ozs7b0JBQ0wsQUFBaUIsQUFDbEIsQUFBTSxBQUFlLEFBQUMsQUFFdkIsQUFBTzs7Ozs7Ozs7O3VCQUlMLEFBQW1COzs7Ozs7dUJBSW5CLEFBQXFCLEFBQ3RCLEFBQU0sQUFBNEIsQUFBQyxBQU1wQyxBQUFPOzs7Ozs7Ozs7MkNBQUUsQUFBTyxBQUFJLEFBQVU7Ozs7OzttQkFBRSxBQUFVLEFBQUksQUFBVzs7Ozs7O21CQUFFLEFBQW1COzs7Ozs7bUJBQUUsQUFBWTs7Ozs7O21CQUFFLEFBQWdCLEFBQUUsQUFBTSxBQUFrQixBQUFDOzs7Ozs7Ozs7cUJBR2hJLEFBQVksQUFBcUIsQUFBTSxBQUFlLEFBQUMsQUFDaEUsQUFBTzs7Ozs7Ozs7O21CQUFxQixBQUFjLEFBQUUsQUFBTSxBQUFjLEFBQUM7Ozs7QUF0SGpFLEFBQU8sQUFBaUIsQUFBQyxBQUV6QixBQUFPOztBQWlIUCxBQUFROztJQUFLLEFBQU0sQUFBTSxBQUFzQixBQUFDLEFBQ2hELEFBQU87Ozs7OztRQUFFLEFBQU0sQUFBRSxBQUFDLEFBQ2xCLEFBQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJy4vbGliL2Jvb3RzdHJhcCc7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgdGVtcGxhdGVGYWN0b3J5LCBUZW1wbGF0ZUZhY3RvcnksIFRlbXBsYXRlIH0gZnJvbSAnLi9saWIvdGVtcGxhdGUnO1xuXG5leHBvcnQgeyBOVUxMX1JFRkVSRU5DRSwgVU5ERUZJTkVEX1JFRkVSRU5DRSwgUHJpbWl0aXZlUmVmZXJlbmNlLCBDb25kaXRpb25hbFJlZmVyZW5jZSB9IGZyb20gJy4vbGliL3JlZmVyZW5jZXMnO1xuXG5leHBvcnQge1xuICAgZGVmYXVsdCBhcyBPcGNvZGVCdWlsZGVyRFNMXG59IGZyb20gJy4vbGliL2NvbXBpbGVkL29wY29kZXMvYnVpbGRlcic7XG5cbmV4cG9ydCB7XG4gIENvbXBpbGFibGVMYXlvdXQsXG4gIGNvbXBpbGVMYXlvdXRcbn0gZnJvbSAnLi9saWIvY29tcGlsZXInO1xuXG5leHBvcnQge1xuICBDb21wb25lbnRCdWlsZGVyLFxuICBDb21wb25lbnRBcmdzXG59IGZyb20gJy4vbGliL29wY29kZS1idWlsZGVyJztcblxuZXhwb3J0IHtcbiAgQ29tcGlsZWRTdGF0aWNUZW1wbGF0ZSxcbiAgQ29tcGlsZWREeW5hbWljVGVtcGxhdGUsXG4gIENvbXBpbGVkRHluYW1pY0Jsb2NrLFxuICBDb21waWxlZER5bmFtaWNQcm9ncmFtXG59IGZyb20gJy4vbGliL2NvbXBpbGVkL2Jsb2Nrcyc7XG5cbmV4cG9ydCB7XG4gIEF0dHJpYnV0ZU1hbmFnZXIgYXMgSUF0dHJpYnV0ZU1hbmFnZXIsXG4gIEF0dHJpYnV0ZU1hbmFnZXIsXG4gIFByb3BlcnR5TWFuYWdlcixcbiAgSU5QVVRfVkFMVUVfUFJPUEVSVFlfTUFOQUdFUixcbiAgZGVmYXVsdE1hbmFnZXJzLFxuICBkZWZhdWx0QXR0cmlidXRlTWFuYWdlcnMsXG4gIGRlZmF1bHRQcm9wZXJ0eU1hbmFnZXJzLFxuICByZWFkRE9NQXR0clxufSBmcm9tICcuL2xpYi9kb20vYXR0cmlidXRlLW1hbmFnZXJzJztcblxuZXhwb3J0IHtcbiAgUmVnaXN0ZXIsXG59IGZyb20gJy4vbGliL29wY29kZXMnO1xuXG5leHBvcnQge1xuICBub3JtYWxpemVUZXh0VmFsdWVcbn0gZnJvbSAnLi9saWIvY29tcGlsZWQvb3Bjb2Rlcy9jb250ZW50JztcblxuZXhwb3J0IHtcbiAgc2V0RGVidWdnZXJDYWxsYmFjayxcbiAgcmVzZXREZWJ1Z2dlckNhbGxiYWNrLFxuICBEZWJ1Z0NhbGxiYWNrXG59IGZyb20gJy4vbGliL2NvbXBpbGVkL29wY29kZXMvZGVidWdnZXInO1xuXG5leHBvcnQge1xuICBkZWZhdWx0IGFzIGdldER5bmFtaWNWYXJcbn0gZnJvbSAnLi9saWIvaGVscGVycy9nZXQtZHluYW1pYy12YXInO1xuXG5leHBvcnQge1xuICBCbG9ja3MgYXMgQmxvY2tNYWNyb3MsXG4gIElubGluZXMgYXMgSW5saW5lTWFjcm9zLFxuICBCbG9ja01hY3JvLFxuICBNaXNzaW5nQmxvY2tNYWNybyxcbiAgY29tcGlsZUxpc3QsXG4gIGV4cHIgYXMgY29tcGlsZUV4cHJlc3Npb25cbn0gZnJvbSAnLi9saWIvc3ludGF4L2Z1bmN0aW9ucyc7XG5cbmV4cG9ydCB7XG4gIENsaWVudFNpZGUsXG4gIENvbXBpbGFibGVUZW1wbGF0ZSxcbiAgU2Nhbm5lZEJsb2NrLFxuICBTY2FubmVkUHJvZ3JhbSxcbiAgQmxvY2ssXG4gIFByb2dyYW0sXG4gIGNvbXBpbGVTdGF0ZW1lbnRcbn0gZnJvbSAnLi9saWIvc2Nhbm5lcic7XG5cbmV4cG9ydCB7IFB1YmxpY1ZNIGFzIFZNLCBVcGRhdGluZ1ZNLCBSZW5kZXJSZXN1bHQsIEl0ZXJhdG9yUmVzdWx0IH0gZnJvbSAnLi9saWIvdm0nO1xuXG5leHBvcnQge1xuICBJQXJndW1lbnRzIGFzIEFyZ3VtZW50cyxcbiAgSUNhcHR1cmVkQXJndW1lbnRzIGFzIENhcHR1cmVkQXJndW1lbnRzLFxuICBJUG9zaXRpb25hbEFyZ3VtZW50cyBhcyBQb3NpdGlvbmFsQXJndW1lbnRzLFxuICBJQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzIGFzIENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50cyxcbiAgSU5hbWVkQXJndW1lbnRzIGFzIE5hbWVkQXJndW1lbnRzLFxuICBJQ2FwdHVyZWROYW1lZEFyZ3VtZW50cyBhcyBDYXB0dXJlZE5hbWVkQXJndW1lbnRzLFxufSBmcm9tICcuL2xpYi92bS9hcmd1bWVudHMnO1xuXG5leHBvcnQgeyBTYWZlU3RyaW5nLCBpc1NhZmVTdHJpbmcgfSBmcm9tICcuL2xpYi91cHNlcnQnO1xuXG5leHBvcnQge1xuICBTY29wZSxcbiAgZGVmYXVsdCBhcyBFbnZpcm9ubWVudCxcbiAgSGVscGVyLFxuICBEeW5hbWljU2NvcGUsXG59IGZyb20gJy4vbGliL2Vudmlyb25tZW50JztcblxuZXhwb3J0IHtcbiAgUGFydGlhbERlZmluaXRpb25cbn0gZnJvbSAnLi9saWIvcGFydGlhbCc7XG5cbmV4cG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50Q2xhc3MsXG4gIENvbXBvbmVudE1hbmFnZXIsXG4gIENvbXBvbmVudERlZmluaXRpb24sXG4gIENvbXBvbmVudExheW91dEJ1aWxkZXIsXG4gIENvbXBvbmVudEF0dHJzQnVpbGRlcixcbiAgUHJlcGFyZWRBcmd1bWVudHMsXG4gIGlzQ29tcG9uZW50RGVmaW5pdGlvblxufSBmcm9tICcuL2xpYi9jb21wb25lbnQvaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCB7XG4gIE1vZGlmaWVyTWFuYWdlclxufSBmcm9tICcuL2xpYi9tb2RpZmllci9pbnRlcmZhY2VzJztcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBET01DaGFuZ2VzLCBET01DaGFuZ2VzIGFzIElET01DaGFuZ2VzLCBET01UcmVlQ29uc3RydWN0aW9uLCBpc1doaXRlc3BhY2UsIGluc2VydEhUTUxCZWZvcmUgfSBmcm9tICcuL2xpYi9kb20vaGVscGVyJztcbmltcG9ydCAgKiBhcyBTaW1wbGUgZnJvbSAnLi9saWIvZG9tL2ludGVyZmFjZXMnO1xuZXhwb3J0IHsgU2ltcGxlIH07XG5leHBvcnQgeyBFbGVtZW50U3RhY2ssIEVsZW1lbnRPcGVyYXRpb25zIH0gZnJvbSAnLi9saWIvYnVpbGRlcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEJvdW5kcywgQ29uY3JldGVCb3VuZHMgfSBmcm9tICcuL2xpYi9ib3VuZHMnO1xuIl19

26

dist/commonjs/es2017/lib/builder.js

@@ -75,9 +75,9 @@ 'use strict';

expectConstructing(method) {
return (0, _util.expect)(this.constructing, `${method} should only be called while constructing an element`);
return this.constructing;
}
expectOperations(method) {
return (0, _util.expect)(this.operations, `${method} should only be called while constructing an element`);
return this.operations;
}
block() {
return (0, _util.expect)(this.blockStack.current, "Expected a current block tracker");
return this.blockStack.current;
}

@@ -89,3 +89,3 @@ popElement() {

// LOGGER.debug(`-> element stack ${this.elementStack.toArray().map(e => e.tagName).join(', ')}`);
this.element = (0, _util.expect)(elementStack.current, "can't pop past the last element");
this.element = elementStack.current;
this.nextSibling = nextSiblingStack.current;

@@ -127,3 +127,3 @@ return topElement;

this.block().finalize(this);
return (0, _util.expect)(this.blockStack.pop(), "Expected popBlock to return a block");
return this.blockStack.pop();
}

@@ -138,3 +138,3 @@ openElement(tag, operations = this.defaultOperations) {

let parent = this.element;
let element = (0, _util.expect)(this.constructing, `flushElement should only be called when constructing an element`);
let element = this.constructing;
this.dom.insertBefore(parent, element, this.nextSibling);

@@ -301,11 +301,5 @@ this.constructing = null;

}
openElement(_element) {
(0, _util.assert)(false, 'Cannot openElement directly inside a block list');
}
closeElement() {
(0, _util.assert)(false, 'Cannot closeElement directly inside a block list');
}
newNode(_node) {
(0, _util.assert)(false, 'Cannot create a new node directly inside a block list');
}
openElement(_element) {}
closeElement() {}
newNode(_node) {}
newBounds(_bounds) {}

@@ -315,2 +309,2 @@ newDestroyable(_d) {}

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLEFBQWUsQUFBNkIsQUFBSyxBQUFFLEFBQU0sQUFBVSxBQUFDOztBQUlwRSxBQUFPLEFBQXVCLEFBQUssQUFBOEIsQUFBTSxBQUFFLEFBQU0sQUFBRSxBQUFNLEFBQWUsQUFBQzs7QUFRdkcsQUFBTyxBQUNMLEFBQXVCLEFBQ3hCLEFBQU0sQUFBd0IsQUFBQzs7QUFZaEM7QUFDRSxnQkFBb0IsQUFBVTtBQUFWLGFBQUksT0FBSixBQUFJLEFBQU0sQUFBSTtBQUFDO0FBRW5DLEFBQVM7QUFDUCxBQUFNLGVBQUMsQUFBSSxLQUFDLEFBQUksQUFBQyxBQUNuQjtBQUFDLEFBQ0Y7O0FBRUQ7QUFDRSxnQkFBb0IsQUFBVTtBQUFWLGFBQUksT0FBSixBQUFJLEFBQU0sQUFBSTtBQUFDO0FBRW5DLEFBQVE7QUFDTixBQUFNLGVBQUMsQUFBSSxLQUFDLEFBQUksQUFBQyxBQUNuQjtBQUFDLEFBQ0YsQUFVRCxBQUFNOzs7QUFHSixnQkFBWSxBQUFjO0FBQ3hCLEFBQUksYUFBQyxBQUFNLFNBQUcsQUFBTSxBQUFDLEFBQ3ZCO0FBQUM7QUFFRCxBQUFhO0FBQ1gsQUFBTSxlQUFDLEFBQUksS0FBQyxBQUFNLE9BQUMsQUFBYSxBQUFFLEFBQUMsQUFDckM7QUFBQztBQUVELEFBQVM7QUFDUCxBQUFNLGVBQUMsQUFBSSxLQUFDLEFBQU0sT0FBQyxBQUFTLEFBQUUsQUFBQyxBQUNqQztBQUFDO0FBRUQsQUFBUTtBQUNOLEFBQU0sZUFBQyxBQUFJLEtBQUMsQUFBTSxPQUFDLEFBQVEsQUFBRSxBQUFDLEFBQ2hDO0FBQUM7QUFFRCxBQUFNLFdBQUMsQUFBYztBQUNuQixBQUFJLGFBQUMsQUFBTSxTQUFHLEFBQU0sQUFBQyxBQUN2QjtBQUFDLEFBQ0YsQUFFRCxBQUFNOzs7O0FBNEJKLGdCQUFZLEFBQWdCLEtBQUUsQUFBMEIsWUFB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QU87QUFDTCxBQUFJLGFBQUMsQUFBUyxVQUFDLEFBQVcsWUFBQyxBQUFJLFFBQUksQUFBSSxLQUFDLEFBQU8sQUFBRSxBQUFDLEFBQUMsQUFDckQ7QUFBQztBQUVELEFBQWE7QUFDWCxBQUFNLGVBQUMsQUFBSSxLQUFDLEFBQU0sQUFBQyxBQUNyQjtBQUFDO0FBRUQsQUFBUztBQUNQLFlBQUksQUFBSSxPQUFHLEFBQUksS0FBQyxBQUFTLFVBQUMsQUFBSSxBQUFFLEFBQUM7QUFDakMsQUFBTSxlQUFDLEFBQUksUUFBSSxBQUFJLEtBQUMsQUFBUyxBQUFFLEFBQUMsQUFDbEM7QUFBQztBQUVELEFBQVE7QUFDTixZQUFJLEFBQUksT0FBRyxBQUFJLEtBQUMsQUFBUyxVQUFDLEFBQUksQUFBRSxBQUFDO0FBQ2pDLEFBQU0sZUFBQyxBQUFJLFFBQUksQUFBSSxLQUFDLEFBQVEsQUFBRSxBQUFDLEFBQ2pDO0FBQUM7QUFFRCxBQUFXLGdCQUFDLEFBQWlCO0FBQzNCLEFBQU0sMEJBQUMsQUFBSyxPQUFFLEFBQWlELEFBQUMsQUFBQyxBQUNuRTtBQUFDO0FBRUQsQUFBWTtBQUNWLEFBQU0sMEJBQUMsQUFBSyxPQUFFLEFBQWtELEFBQUMsQUFBQyxBQUNwRTtBQUFDO0FBRUQsQUFBTyxZQUFDLEFBQVc7QUFDakIsQUFBTSwwQkFBQyxBQUFLLE9BQUUsQUFBdUQsQUFBQyxBQUFDLEFBQ3pFO0FBQUM7QUFFRCxBQUFTLGNBQUMsQUFBZSxTQUN6QixDQUFDO0FBRUQsQUFBYyxtQkFBQyxBQUFlLElBQzlCLENBQUM7QUFFRCxBQUFRLGFBQUMsQUFBb0IsUUFDN0IsQ0FBQyxBQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJvdW5kcywgeyBDdXJzb3IsIERlc3Ryb3lhYmxlQm91bmRzLCBjbGVhciB9IGZyb20gJy4vYm91bmRzJztcblxuaW1wb3J0IHsgRE9NQ2hhbmdlcywgRE9NVHJlZUNvbnN0cnVjdGlvbiB9IGZyb20gJy4vZG9tL2hlbHBlcic7XG5cbmltcG9ydCB7IE9wdGlvbiwgRGVzdHJveWFibGUsIFN0YWNrLCBMaW5rZWRMaXN0LCBMaW5rZWRMaXN0Tm9kZSwgYXNzZXJ0LCBleHBlY3QgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuL2Vudmlyb25tZW50JztcblxuaW1wb3J0IHsgVk0gfSBmcm9tICcuL3ZtJztcblxuaW1wb3J0IHsgVmVyc2lvbmVkUmVmZXJlbmNlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcblxuaW1wb3J0IHtcbiAgU2ltcGxlRWxlbWVudE9wZXJhdGlvbnNcbn0gZnJvbSAnLi9jb21waWxlZC9vcGNvZGVzL2RvbSc7XG5cbmltcG9ydCAqIGFzIFNpbXBsZSBmcm9tICcuL2RvbS9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGludGVyZmFjZSBGaXJzdE5vZGUge1xuICBmaXJzdE5vZGUoKTogT3B0aW9uPFNpbXBsZS5Ob2RlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMYXN0Tm9kZSB7XG4gIGxhc3ROb2RlKCk6IE9wdGlvbjxTaW1wbGUuTm9kZT47XG59XG5cbmNsYXNzIEZpcnN0IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBub2RlOiBOb2RlKSB7IH1cblxuICBmaXJzdE5vZGUoKTogTm9kZSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZTtcbiAgfVxufVxuXG5jbGFzcyBMYXN0IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBub2RlOiBOb2RlKSB7IH1cblxuICBsYXN0Tm9kZSgpOiBOb2RlIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRWxlbWVudE9wZXJhdGlvbnMge1xuICBhZGRTdGF0aWNBdHRyaWJ1dGUoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQ7XG4gIGFkZFN0YXRpY0F0dHJpYnV0ZU5TKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lc3BhY2U6IHN0cmluZywgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcbiAgYWRkRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZTogc3RyaW5nLCB2YWx1ZTogVmVyc2lvbmVkUmVmZXJlbmNlPHN0cmluZz4sIGlzVHJ1c3Rpbmc6IGJvb2xlYW4pOiB2b2lkO1xuICBhZGREeW5hbWljQXR0cmlidXRlTlMoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5hbWVzcGFjZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBWZXJzaW9uZWRSZWZlcmVuY2U8c3RyaW5nPiwgaXNUcnVzdGluZzogYm9vbGVhbik6IHZvaWQ7XG4gIGZsdXNoKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCB2bTogVk0pOiB2b2lkO1xufVxuXG5leHBvcnQgY2xhc3MgRnJhZ21lbnQgaW1wbGVtZW50cyBCb3VuZHMge1xuICBwcml2YXRlIGJvdW5kczogQm91bmRzO1xuXG4gIGNvbnN0cnVjdG9yKGJvdW5kczogQm91bmRzKSB7XG4gICAgdGhpcy5ib3VuZHMgPSBib3VuZHM7XG4gIH1cblxuICBwYXJlbnRFbGVtZW50KCk6IFNpbXBsZS5FbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICB9XG5cbiAgZmlyc3ROb2RlKCk6IE9wdGlvbjxTaW1wbGUuTm9kZT4ge1xuICAgIHJldHVybiB0aGlzLmJvdW5kcy5maXJzdE5vZGUoKTtcbiAgfVxuXG4gIGxhc3ROb2RlKCk6IE9wdGlvbjxTaW1wbGUuTm9kZT4ge1xuICAgIHJldHVybiB0aGlzLmJvdW5kcy5sYXN0Tm9kZSgpO1xuICB9XG5cbiAgdXBkYXRlKGJvdW5kczogQm91bmRzKSB7XG4gICAgdGhpcy5ib3VuZHMgPSBib3VuZHM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVsZW1lbnRTdGFjayBpbXBsZW1lbnRzIEN1cnNvciB7XG4gIHB1YmxpYyBuZXh0U2libGluZzogT3B0aW9uPFNpbXBsZS5Ob2RlPjtcbiAgcHVibGljIGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbjtcbiAgcHVibGljIHVwZGF0ZU9wZXJhdGlvbnM6IERPTUNoYW5nZXM7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rpbmc6IE9wdGlvbjxTaW1wbGUuRWxlbWVudD4gPSBudWxsO1xuICBwdWJsaWMgb3BlcmF0aW9uczogT3B0aW9uPEVsZW1lbnRPcGVyYXRpb25zPiA9IG51bGw7XG4gIHB1YmxpYyBlbGVtZW50OiBTaW1wbGUuRWxlbWVudDtcbiAgcHVibGljIGVudjogRW52aXJvbm1lbnQ7XG5cbiAgcHJpdmF0ZSBlbGVtZW50U3RhY2sgPSBuZXcgU3RhY2s8U2ltcGxlLkVsZW1lbnQ+KCk7XG4gIHByaXZhdGUgbmV4dFNpYmxpbmdTdGFjayA9IG5ldyBTdGFjazxPcHRpb248U2ltcGxlLk5vZGU+PigpO1xuICBwcml2YXRlIGJsb2NrU3RhY2sgPSBuZXcgU3RhY2s8VHJhY2tlcj4oKTtcblxuICBwcml2YXRlIGRlZmF1bHRPcGVyYXRpb25zOiBFbGVtZW50T3BlcmF0aW9ucztcblxuICBzdGF0aWMgZm9ySW5pdGlhbFJlbmRlcihlbnY6IEVudmlyb25tZW50LCBwYXJlbnROb2RlOiBTaW1wbGUuRWxlbWVudCwgbmV4dFNpYmxpbmc6IE9wdGlvbjxTaW1wbGUuTm9kZT4pIHtcbiAgICByZXR1cm4gbmV3IEVsZW1lbnRTdGFjayhlbnYsIHBhcmVudE5vZGUsIG5leHRTaWJsaW5nKTtcbiAgfVxuXG4gIHN0YXRpYyByZXN1bWUoZW52OiBFbnZpcm9ubWVudCwgdHJhY2tlcjogVHJhY2tlciwgbmV4dFNpYmxpbmc6IE9wdGlvbjxTaW1wbGUuTm9kZT4pIHtcbiAgICBsZXQgcGFyZW50Tm9kZSA9IHRyYWNrZXIucGFyZW50RWxlbWVudCgpO1xuXG4gICAgbGV0IHN0YWNrID0gbmV3IEVsZW1lbnRTdGFjayhlbnYsIHBhcmVudE5vZGUsIG5leHRTaWJsaW5nKTtcbiAgICBzdGFjay5wdXNoQmxvY2tUcmFja2VyKHRyYWNrZXIpO1xuXG4gICAgcmV0dXJuIHN0YWNrO1xuICB9XG5cbiAgY29uc3RydWN0b3IoZW52OiBFbnZpcm9ubWVudCwgcGFyZW50Tm9kZTogU2ltcGxlLkVsZW1lbnQsIG5leHRTaWJsaW5nOiBPcHRpb248U2ltcGxlLk5vZGU+KSB7XG4gICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgdGhpcy5kb20gPSBlbnYuZ2V0QXBwZW5kT3BlcmF0aW9ucygpO1xuICAgIHRoaXMudXBkYXRlT3BlcmF0aW9ucyA9IGVudi5nZXRET00oKTtcbiAgICB0aGlzLmVsZW1lbnQgPSBwYXJlbnROb2RlO1xuICAgIHRoaXMubmV4dFNpYmxpbmcgPSBuZXh0U2libGluZztcblxuICAgIHRoaXMuZGVmYXVsdE9wZXJhdGlvbnMgPSBuZXcgU2ltcGxlRWxlbWVudE9wZXJhdGlvbnMoZW52KTtcblxuICAgIHRoaXMucHVzaFNpbXBsZUJsb2NrKCk7XG4gICAgdGhpcy5lbGVtZW50U3RhY2sucHVzaCh0aGlzLmVsZW1lbnQpO1xuICAgIHRoaXMubmV4dFNpYmxpbmdTdGFjay5wdXNoKHRoaXMubmV4dFNpYmxpbmcpO1xuICB9XG5cbiAgZXhwZWN0Q29uc3RydWN0aW5nKG1ldGhvZDogc3RyaW5nKTogU2ltcGxlLkVsZW1lbnQge1xuICAgIHJldHVybiBleHBlY3QodGhpcy5jb25zdHJ1Y3RpbmcsIGAke21ldGhvZH0gc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoaWxlIGNvbnN0cnVjdGluZyBhbiBlbGVtZW50YCk7XG4gIH1cblxuICBleHBlY3RPcGVyYXRpb25zKG1ldGhvZDogc3RyaW5nKTogRWxlbWVudE9wZXJhdGlvbnMge1xuICAgIHJldHVybiBleHBlY3QodGhpcy5vcGVyYXRpb25zLCBgJHttZXRob2R9IHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGlsZSBjb25zdHJ1Y3RpbmcgYW4gZWxlbWVudGApO1xuICB9XG5cbiAgYmxvY2soKTogVHJhY2tlciB7XG4gICAgcmV0dXJuIGV4cGVjdCh0aGlzLmJsb2NrU3RhY2suY3VycmVudCwgXCJFeHBlY3RlZCBhIGN1cnJlbnQgYmxvY2sgdHJhY2tlclwiKTtcbiAgfVxuXG4gIHBvcEVsZW1lbnQoKSB7XG4gICAgbGV0IHsgZWxlbWVudFN0YWNrLCBuZXh0U2libGluZ1N0YWNrIH0gID0gdGhpcztcblxuICAgIGxldCB0b3BFbGVtZW50ID0gZWxlbWVudFN0YWNrLnBvcCgpO1xuICAgIG5leHRTaWJsaW5nU3RhY2sucG9wKCk7XG4gICAgLy8gTE9HR0VSLmRlYnVnKGAtPiBlbGVtZW50IHN0YWNrICR7dGhpcy5lbGVtZW50U3RhY2sudG9BcnJheSgpLm1hcChlID0+IGUudGFnTmFtZSkuam9pbignLCAnKX1gKTtcblxuICAgIHRoaXMuZWxlbWVudCA9IGV4cGVjdChlbGVtZW50U3RhY2suY3VycmVudCwgXCJjYW4ndCBwb3AgcGFzdCB0aGUgbGFzdCBlbGVtZW50XCIpO1xuICAgIHRoaXMubmV4dFNpYmxpbmcgPSBuZXh0U2libGluZ1N0YWNrLmN1cnJlbnQ7XG5cbiAgICByZXR1cm4gdG9wRWxlbWVudDtcbiAgfVxuXG4gIHB1c2hTaW1wbGVCbG9jaygpOiBUcmFja2VyIHtcbiAgICBsZXQgdHJhY2tlciA9IG5ldyBTaW1wbGVCbG9ja1RyYWNrZXIodGhpcy5lbGVtZW50KTtcbiAgICB0aGlzLnB1c2hCbG9ja1RyYWNrZXIodHJhY2tlcik7XG4gICAgcmV0dXJuIHRyYWNrZXI7XG4gIH1cblxuICBwdXNoVXBkYXRhYmxlQmxvY2soKTogVXBkYXRhYmxlVHJhY2tlciB7XG4gICAgbGV0IHRyYWNrZXIgPSBuZXcgVXBkYXRhYmxlQmxvY2tUcmFja2VyKHRoaXMuZWxlbWVudCk7XG4gICAgdGhpcy5wdXNoQmxvY2tUcmFja2VyKHRyYWNrZXIpO1xuICAgIHJldHVybiB0cmFja2VyO1xuICB9XG5cbiAgcHJpdmF0ZSBwdXNoQmxvY2tUcmFja2VyKHRyYWNrZXI6IFRyYWNrZXIsIGlzUmVtb3RlID0gZmFsc2UpIHtcbiAgICBsZXQgY3VycmVudCA9IHRoaXMuYmxvY2tTdGFjay5jdXJyZW50O1xuXG4gICAgaWYgKGN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgIGN1cnJlbnQubmV3RGVzdHJveWFibGUodHJhY2tlcik7XG5cbiAgICAgIGlmICghaXNSZW1vdGUpIHtcbiAgICAgICAgY3VycmVudC5uZXdCb3VuZHModHJhY2tlcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5ibG9ja1N0YWNrLnB1c2godHJhY2tlcik7XG4gICAgcmV0dXJuIHRyYWNrZXI7XG4gIH1cblxuICBwdXNoQmxvY2tMaXN0KGxpc3Q6IExpbmtlZExpc3Q8TGlua2VkTGlzdE5vZGUgJiBCb3VuZHMgJiBEZXN0cm95YWJsZT4pOiBUcmFja2VyIHtcbiAgICBsZXQgdHJhY2tlciA9IG5ldyBCbG9ja0xpc3RUcmFja2VyKHRoaXMuZWxlbWVudCwgbGlzdCk7XG4gICAgbGV0IGN1cnJlbnQgPSB0aGlzLmJsb2NrU3RhY2suY3VycmVudDtcblxuICAgIGlmIChjdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICBjdXJyZW50Lm5ld0Rlc3Ryb3lhYmxlKHRyYWNrZXIpO1xuICAgICAgY3VycmVudC5uZXdCb3VuZHModHJhY2tlcik7XG4gICAgfVxuXG4gICAgdGhpcy5ibG9ja1N0YWNrLnB1c2godHJhY2tlcik7XG4gICAgcmV0dXJuIHRyYWNrZXI7XG4gIH1cblxuICBwb3BCbG9jaygpOiBUcmFja2VyIHtcbiAgICB0aGlzLmJsb2NrKCkuZmluYWxpemUodGhpcyk7XG5cbiAgICByZXR1cm4gZXhwZWN0KHRoaXMuYmxvY2tTdGFjay5wb3AoKSwgXCJFeHBlY3RlZCBwb3BCbG9jayB0byByZXR1cm4gYSBibG9ja1wiKTtcbiAgfVxuXG4gIG9wZW5FbGVtZW50KHRhZzogc3RyaW5nLCBvcGVyYXRpb25zID0gdGhpcy5kZWZhdWx0T3BlcmF0aW9ucyk6IFNpbXBsZS5FbGVtZW50IHtcbiAgICBsZXQgZWxlbWVudCA9IHRoaXMuZG9tLmNyZWF0ZUVsZW1lbnQodGFnLCB0aGlzLmVsZW1lbnQpO1xuXG4gICAgdGhpcy5jb25zdHJ1Y3RpbmcgPSBlbGVtZW50O1xuICAgIHRoaXMub3BlcmF0aW9ucyA9IG9wZXJhdGlvbnM7XG5cbiAgICByZXR1cm4gZWxlbWVudDtcbiAgfVxuXG4gIGZsdXNoRWxlbWVudCgpIHtcbiAgICBsZXQgcGFyZW50ICA9IHRoaXMuZWxlbWVudDtcbiAgICBsZXQgZWxlbWVudCA9IGV4cGVjdCh0aGlzLmNvbnN0cnVjdGluZywgYGZsdXNoRWxlbWVudCBzaG91bGQgb25seSBiZSBjYWxsZWQgd2hlbiBjb25zdHJ1Y3RpbmcgYW4gZWxlbWVudGApO1xuXG4gICAgdGhpcy5kb20uaW5zZXJ0QmVmb3JlKHBhcmVudCwgZWxlbWVudCwgdGhpcy5uZXh0U2libGluZyk7XG5cbiAgICB0aGlzLmNvbnN0cnVjdGluZyA9IG51bGw7XG4gICAgdGhpcy5vcGVyYXRpb25zID0gbnVsbDtcblxuICAgIHRoaXMucHVzaEVsZW1lbnQoZWxlbWVudCk7XG4gICAgdGhpcy5ibG9jaygpLm9wZW5FbGVtZW50KGVsZW1lbnQpO1xuICB9XG5cbiAgcHVzaFJlbW90ZUVsZW1lbnQoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5leHRTaWJsaW5nOiBPcHRpb248U2ltcGxlLk5vZGU+ID0gbnVsbCkge1xuICAgIHRoaXMucHVzaEVsZW1lbnQoZWxlbWVudCwgbmV4dFNpYmxpbmcpO1xuXG4gICAgbGV0IHRyYWNrZXIgPSBuZXcgUmVtb3RlQmxvY2tUcmFja2VyKGVsZW1lbnQpO1xuICAgIHRoaXMucHVzaEJsb2NrVHJhY2tlcih0cmFja2VyLCB0cnVlKTtcbiAgfVxuXG4gIHBvcFJlbW90ZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5wb3BCbG9jaygpO1xuICAgIHRoaXMucG9wRWxlbWVudCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBwdXNoRWxlbWVudChlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmV4dFNpYmxpbmc6IE9wdGlvbjxTaW1wbGUuTm9kZT4gPSBudWxsKSB7XG4gICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDtcbiAgICB0aGlzLmVsZW1lbnRTdGFjay5wdXNoKGVsZW1lbnQpO1xuICAgIC8vIExPR0dFUi5kZWJ1ZyhgLT4gZWxlbWVudCBzdGFjayAke3RoaXMuZWxlbWVudFN0YWNrLnRvQXJyYXkoKS5tYXAoZSA9PiBlLnRhZ05hbWUpLmpvaW4oJywgJyl9YCk7XG5cbiAgICB0aGlzLm5leHRTaWJsaW5nID0gbmV4dFNpYmxpbmc7XG4gICAgdGhpcy5uZXh0U2libGluZ1N0YWNrLnB1c2gobmV4dFNpYmxpbmcpO1xuICB9XG5cbiAgbmV3RGVzdHJveWFibGUoZDogRGVzdHJveWFibGUpIHtcbiAgICB0aGlzLmJsb2NrKCkubmV3RGVzdHJveWFibGUoZCk7XG4gIH1cblxuICBuZXdCb3VuZHMoYm91bmRzOiBCb3VuZHMpIHtcbiAgICB0aGlzLmJsb2NrKCkubmV3Qm91bmRzKGJvdW5kcyk7XG4gIH1cblxuICBhcHBlbmRUZXh0KHN0cmluZzogc3RyaW5nKTogU2ltcGxlLlRleHQge1xuICAgIGxldCB7IGRvbSB9ID0gdGhpcztcbiAgICBsZXQgdGV4dCA9IGRvbS5jcmVhdGVUZXh0Tm9kZShzdHJpbmcpO1xuICAgIGRvbS5pbnNlcnRCZWZvcmUodGhpcy5lbGVtZW50LCB0ZXh0LCB0aGlzLm5leHRTaWJsaW5nKTtcbiAgICB0aGlzLmJsb2NrKCkubmV3Tm9kZSh0ZXh0KTtcbiAgICByZXR1cm4gdGV4dDtcbiAgfVxuXG4gIGFwcGVuZENvbW1lbnQoc3RyaW5nOiBzdHJpbmcpOiBTaW1wbGUuQ29tbWVudCB7XG4gICAgbGV0IHsgZG9tIH0gPSB0aGlzO1xuICAgIGxldCBjb21tZW50ID0gZG9tLmNyZWF0ZUNvbW1lbnQoc3RyaW5nKTtcbiAgICBkb20uaW5zZXJ0QmVmb3JlKHRoaXMuZWxlbWVudCwgY29tbWVudCwgdGhpcy5uZXh0U2libGluZyk7XG4gICAgdGhpcy5ibG9jaygpLm5ld05vZGUoY29tbWVudCk7XG4gICAgcmV0dXJuIGNvbW1lbnQ7XG4gIH1cblxuICBzZXRTdGF0aWNBdHRyaWJ1dGUobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5leHBlY3RPcGVyYXRpb25zKCdzZXRTdGF0aWNBdHRyaWJ1dGUnKS5hZGRTdGF0aWNBdHRyaWJ1dGUodGhpcy5leHBlY3RDb25zdHJ1Y3RpbmcoJ3NldFN0YXRpY0F0dHJpYnV0ZScpLCBuYW1lLCB2YWx1ZSk7XG4gIH1cblxuICBzZXRTdGF0aWNBdHRyaWJ1dGVOUyhuYW1lc3BhY2U6IHN0cmluZywgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5leHBlY3RPcGVyYXRpb25zKCdzZXRTdGF0aWNBdHRyaWJ1dGVOUycpLmFkZFN0YXRpY0F0dHJpYnV0ZU5TKHRoaXMuZXhwZWN0Q29uc3RydWN0aW5nKCdzZXRTdGF0aWNBdHRyaWJ1dGVOUycpLCBuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKTtcbiAgfVxuXG4gIHNldER5bmFtaWNBdHRyaWJ1dGUobmFtZTogc3RyaW5nLCByZWZlcmVuY2U6IFZlcnNpb25lZFJlZmVyZW5jZTxzdHJpbmc+LCBpc1RydXN0aW5nOiBib29sZWFuKSB7XG4gICAgdGhpcy5leHBlY3RPcGVyYXRpb25zKCdzZXREeW5hbWljQXR0cmlidXRlJykuYWRkRHluYW1pY0F0dHJpYnV0ZSh0aGlzLmV4cGVjdENvbnN0cnVjdGluZygnc2V0RHluYW1pY0F0dHJpYnV0ZScpLCBuYW1lLCByZWZlcmVuY2UsIGlzVHJ1c3RpbmcpO1xuICB9XG5cbiAgc2V0RHluYW1pY0F0dHJpYnV0ZU5TKG5hbWVzcGFjZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIHJlZmVyZW5jZTogVmVyc2lvbmVkUmVmZXJlbmNlPHN0cmluZz4sIGlzVHJ1c3Rpbmc6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmV4cGVjdE9wZXJhdGlvbnMoJ3NldER5bmFtaWNBdHRyaWJ1dGVOUycpLmFkZER5bmFtaWNBdHRyaWJ1dGVOUyh0aGlzLmV4cGVjdENvbnN0cnVjdGluZygnc2V0RHluYW1pY0F0dHJpYnV0ZU5TJyksIG5hbWVzcGFjZSwgbmFtZSwgcmVmZXJlbmNlLCBpc1RydXN0aW5nKTtcbiAgfVxuXG4gIGNsb3NlRWxlbWVudCgpIHtcbiAgICB0aGlzLmJsb2NrKCkuY2xvc2VFbGVtZW50KCk7XG4gICAgdGhpcy5wb3BFbGVtZW50KCk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFja2VyIGV4dGVuZHMgRGVzdHJveWFibGVCb3VuZHMge1xuICBvcGVuRWxlbWVudChlbGVtZW50OiBTaW1wbGUuRWxlbWVudCk6IHZvaWQ7XG4gIGNsb3NlRWxlbWVudCgpOiB2b2lkO1xuICBuZXdOb2RlKG5vZGU6IFNpbXBsZS5Ob2RlKTogdm9pZDtcbiAgbmV3Qm91bmRzKGJvdW5kczogQm91bmRzKTogdm9pZDtcbiAgbmV3RGVzdHJveWFibGUoZDogRGVzdHJveWFibGUpOiB2b2lkO1xuICBmaW5hbGl6ZShzdGFjazogRWxlbWVudFN0YWNrKTogdm9pZDtcbn1cblxuZXhwb3J0IGNsYXNzIFNpbXBsZUJsb2NrVHJhY2tlciBpbXBsZW1lbnRzIFRyYWNrZXIge1xuICBwcm90ZWN0ZWQgZmlyc3Q6IE9wdGlvbjxGaXJzdE5vZGU+ID0gbnVsbDtcbiAgcHJvdGVjdGVkIGxhc3Q6IE9wdGlvbjxMYXN0Tm9kZT4gPSBudWxsO1xuICBwcm90ZWN0ZWQgZGVzdHJveWFibGVzOiBPcHRpb248RGVzdHJveWFibGVbXT4gPSBudWxsO1xuICBwcm90ZWN0ZWQgbmVzdGluZyA9IDA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwYXJlbnQ6IFNpbXBsZS5FbGVtZW50KXt9XG5cbiAgZGVzdHJveSgpIHtcbiAgICBsZXQgeyBkZXN0cm95YWJsZXMgfSA9IHRoaXM7XG5cbiAgICBpZiAoZGVzdHJveWFibGVzICYmIGRlc3Ryb3lhYmxlcy5sZW5ndGgpIHtcbiAgICAgIGZvciAobGV0IGk9MDsgaTxkZXN0cm95YWJsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgZGVzdHJveWFibGVzW2ldLmRlc3Ryb3koKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwYXJlbnRFbGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnBhcmVudDtcbiAgfVxuXG4gIGZpcnN0Tm9kZSgpOiBPcHRpb248U2ltcGxlLk5vZGU+IHtcbiAgICByZXR1cm4gdGhpcy5maXJzdCAmJiB0aGlzLmZpcnN0LmZpcnN0Tm9kZSgpO1xuICB9XG5cbiAgbGFzdE5vZGUoKTogT3B0aW9uPFNpbXBsZS5Ob2RlPiB7XG4gICAgcmV0dXJuIHRoaXMubGFzdCAmJiB0aGlzLmxhc3QubGFzdE5vZGUoKTtcbiAgfVxuXG4gIG9wZW5FbGVtZW50KGVsZW1lbnQ6IEVsZW1lbnQpIHtcbiAgICB0aGlzLm5ld05vZGUoZWxlbWVudCk7XG4gICAgdGhpcy5uZXN0aW5nKys7XG4gIH1cblxuICBjbG9zZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5uZXN0aW5nLS07XG4gIH1cblxuICBuZXdOb2RlKG5vZGU6IE5vZGUpIHtcbiAgICBpZiAodGhpcy5uZXN0aW5nICE9PSAwKSByZXR1cm47XG5cbiAgICBpZiAoIXRoaXMuZmlyc3QpIHtcbiAgICAgIHRoaXMuZmlyc3QgPSBuZXcgRmlyc3Qobm9kZSk7XG4gICAgfVxuXG4gICAgdGhpcy5sYXN0ID0gbmV3IExhc3Qobm9kZSk7XG4gIH1cblxuICBuZXdCb3VuZHMoYm91bmRzOiBCb3VuZHMpIHtcbiAgICBpZiAodGhpcy5uZXN0aW5nICE9PSAwKSByZXR1cm47XG5cbiAgICBpZiAoIXRoaXMuZmlyc3QpIHtcbiAgICAgIHRoaXMuZmlyc3QgPSBib3VuZHM7XG4gICAgfVxuXG4gICAgdGhpcy5sYXN0ID0gYm91bmRzO1xuICB9XG5cbiAgbmV3RGVzdHJveWFibGUoZDogRGVzdHJveWFibGUpIHtcbiAgICB0aGlzLmRlc3Ryb3lhYmxlcyA9IHRoaXMuZGVzdHJveWFibGVzIHx8IFtdO1xuICAgIHRoaXMuZGVzdHJveWFibGVzLnB1c2goZCk7XG4gIH1cblxuICBmaW5hbGl6ZShzdGFjazogRWxlbWVudFN0YWNrKSB7XG4gICAgaWYgKCF0aGlzLmZpcnN0KSB7XG4gICAgICBzdGFjay5hcHBlbmRDb21tZW50KCcnKTtcbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgUmVtb3RlQmxvY2tUcmFja2VyIGV4dGVuZHMgU2ltcGxlQmxvY2tUcmFja2VyIHtcbiAgZGVzdHJveSgpIHtcbiAgICBzdXBlci5kZXN0cm95KCk7XG5cbiAgICBjbGVhcih0aGlzKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0YWJsZVRyYWNrZXIgZXh0ZW5kcyBUcmFja2VyIHtcbiAgcmVzZXQoZW52OiBFbnZpcm9ubWVudCk6IE9wdGlvbjxTaW1wbGUuTm9kZT47XG59XG5cbmV4cG9ydCBjbGFzcyBVcGRhdGFibGVCbG9ja1RyYWNrZXIgZXh0ZW5kcyBTaW1wbGVCbG9ja1RyYWNrZXIgaW1wbGVtZW50cyBVcGRhdGFibGVUcmFja2VyIHtcbiAgcmVzZXQoZW52OiBFbnZpcm9ubWVudCk6IE9wdGlvbjxTaW1wbGUuTm9kZT4ge1xuICAgIGxldCB7IGRlc3Ryb3lhYmxlcyB9ID0gdGhpcztcblxuICAgIGlmIChkZXN0cm95YWJsZXMgJiYgZGVzdHJveWFibGVzLmxlbmd0aCkge1xuICAgICAgZm9yIChsZXQgaT0wOyBpPGRlc3Ryb3lhYmxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBlbnYuZGlkRGVzdHJveShkZXN0cm95YWJsZXNbaV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBuZXh0U2libGluZyA9IGNsZWFyKHRoaXMpO1xuXG4gICAgdGhpcy5maXJzdCA9IG51bGw7XG4gICAgdGhpcy5sYXN0ID0gbnVsbDtcbiAgICB0aGlzLmRlc3Ryb3lhYmxlcyA9IG51bGw7XG4gICAgdGhpcy5uZXN0aW5nID0gMDtcblxuICAgIHJldHVybiBuZXh0U2libGluZztcbiAgfVxufVxuXG5jbGFzcyBCbG9ja0xpc3RUcmFja2VyIGltcGxlbWVudHMgVHJhY2tlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGFyZW50OiBTaW1wbGUuRWxlbWVudCwgcHJpdmF0ZSBib3VuZExpc3Q6IExpbmtlZExpc3Q8TGlua2VkTGlzdE5vZGUgJiBCb3VuZHMgJiBEZXN0cm95YWJsZT4pIHtcbiAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgICB0aGlzLmJvdW5kTGlzdCA9IGJvdW5kTGlzdDtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5ib3VuZExpc3QuZm9yRWFjaE5vZGUobm9kZSA9PiBub2RlLmRlc3Ryb3koKSk7XG4gIH1cblxuICBwYXJlbnRFbGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnBhcmVudDtcbiAgfVxuXG4gIGZpcnN0Tm9kZSgpOiBPcHRpb248U2ltcGxlLk5vZGU+IHtcbiAgICBsZXQgaGVhZCA9IHRoaXMuYm91bmRMaXN0LmhlYWQoKTtcbiAgICByZXR1cm4gaGVhZCAmJiBoZWFkLmZpcnN0Tm9kZSgpO1xuICB9XG5cbiAgbGFzdE5vZGUoKTogT3B0aW9uPFNpbXBsZS5Ob2RlPiB7XG4gICAgbGV0IHRhaWwgPSB0aGlzLmJvdW5kTGlzdC50YWlsKCk7XG4gICAgcmV0dXJuIHRhaWwgJiYgdGFpbC5sYXN0Tm9kZSgpO1xuICB9XG5cbiAgb3BlbkVsZW1lbnQoX2VsZW1lbnQ6IEVsZW1lbnQpIHtcbiAgICBhc3NlcnQoZmFsc2UsICdDYW5ub3Qgb3BlbkVsZW1lbnQgZGlyZWN0bHkgaW5zaWRlIGEgYmxvY2sgbGlzdCcpO1xuICB9XG5cbiAgY2xvc2VFbGVtZW50KCkge1xuICAgIGFzc2VydChmYWxzZSwgJ0Nhbm5vdCBjbG9zZUVsZW1lbnQgZGlyZWN0bHkgaW5zaWRlIGEgYmxvY2sgbGlzdCcpO1xuICB9XG5cbiAgbmV3Tm9kZShfbm9kZTogTm9kZSkge1xuICAgIGFzc2VydChmYWxzZSwgJ0Nhbm5vdCBjcmVhdGUgYSBuZXcgbm9kZSBkaXJlY3RseSBpbnNpZGUgYSBibG9jayBsaXN0Jyk7XG4gIH1cblxuICBuZXdCb3VuZHMoX2JvdW5kczogQm91bmRzKSB7XG4gIH1cblxuICBuZXdEZXN0cm95YWJsZShfZDogRGVzdHJveWFibGUpIHtcbiAgfVxuXG4gIGZpbmFsaXplKF9zdGFjazogRWxlbWVudFN0YWNrKSB7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLEFBQWUsQUFBNkIsQUFBSyxBQUFFLEFBQU0sQUFBVSxBQUFDOztBQUlwRSxBQUFPLEFBQXVCLEFBQUssQUFBK0IsQUFBTSxBQUFlLEFBQUM7O0FBUXhGLEFBQU8sQUFDTCxBQUF1QixBQUN4QixBQUFNLEFBQXdCLEFBQUM7O0FBWWhDO0FBQ0UsZ0JBQW9CLEFBQVU7QUFBVixhQUFJLE9BQUosQUFBSSxBQUFNLEFBQUk7QUFBQztBQUVuQyxBQUFTO0FBQ1AsQUFBTSxlQUFDLEFBQUksS0FBQyxBQUFJLEFBQUMsQUFDbkI7QUFBQyxBQUNGOztBQUVEO0FBQ0UsZ0JBQW9CLEFBQVU7QUFBVixhQUFJLE9BQUosQUFBSSxBQUFNLEFBQUk7QUFBQztBQUVuQyxBQUFRO0FBQ04sQUFBTSxlQUFDLEFBQUksS0FBQyxBQUFJLEFBQUMsQUFDbkI7QUFBQyxBQUNGLEFBVUQsQUFBTTs7O0FBR0osZ0JBQVksQUFBYztBQUN4QixBQUFJLGFBQUMsQUFBTSxTQUFHLEFBQU0sQUFBQyxBQUN2QjtBQUFDO0FBRUQsQUFBYTtBQUNYLEFBQU0sZUFBQyxBQUFJLEtBQUMsQUFBTSxPQUFDLEFBQWEsQUFBRSxBQUFDLEFBQ3JDO0FBQUM7QUFFRCxBQUFTO0FBQ1AsQUFBTSxlQUFDLEFBQUksS0FBQyxBQUFNLE9BQUMsQUFBUyxBQUFFLEFBQUMsQUFDakM7QUFBQztBQUVELEFBQVE7QUFDTixBQUFNLGVBQUMsQUFBSSxLQUFDLEFBQU0sT0FBQyxBQUFRLEFBQUUsQUFBQyxBQUNoQztBQUFDO0FBRUQsQUFBTSxXQUFDLEFBQWM7QUFDbkIsQUFBSSxhQUFDLEFBQU0sU0FBRyxBQUFNLEFBQUMsQUFDdkI7QUFBQyxBQUNGLEFBRUQsQUFBTTs7OztBQTRCSixnQkFBWSxBQUFnQixLQUFFLEFBQTBCLFlBQUUsQUFBZ0M7QUF4Qm5GLGFBQVks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RSxBQUFDO0FBQ2pDLEFBQU0sZUFBQyxBQUFJLFFBQUksQUFBSSxLQUFDLEFBQVMsQUFBRSxBQUFDLEFBQ2xDO0FBQUM7QUFFRCxBQUFRO0FBQ04sWUFBSSxBQUFJLE9BQUcsQUFBSSxLQUFDLEFBQVMsVUFBQyxBQUFJLEFBQUUsQUFBQztBQUNqQyxBQUFNLGVBQUMsQUFBSSxRQUFJLEFBQUksS0FBQyxBQUFRLEFBQUUsQUFBQyxBQUNqQztBQUFDO0FBRUQsQUFBVyxnQkFBQyxBQUFpQixVQUM3QixDQUFDO0FBRUQsQUFBWSxtQkFDWixDQUFDO0FBRUQsQUFBTyxZQUFDLEFBQVcsT0FDbkIsQ0FBQztBQUVELEFBQVMsY0FBQyxBQUFlLFNBQ3pCLENBQUM7QUFFRCxBQUFjLG1CQUFDLEFBQWUsSUFDOUIsQ0FBQztBQUVELEFBQVEsYUFBQyxBQUFvQixRQUM3QixDQUFDLEFBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQm91bmRzLCB7IEN1cnNvciwgRGVzdHJveWFibGVCb3VuZHMsIGNsZWFyIH0gZnJvbSAnLi9ib3VuZHMnO1xuXG5pbXBvcnQgeyBET01DaGFuZ2VzLCBET01UcmVlQ29uc3RydWN0aW9uIH0gZnJvbSAnLi9kb20vaGVscGVyJztcblxuaW1wb3J0IHsgT3B0aW9uLCBEZXN0cm95YWJsZSwgU3RhY2ssIExpbmtlZExpc3QsIExpbmtlZExpc3ROb2RlLCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuXG5pbXBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4vZW52aXJvbm1lbnQnO1xuXG5pbXBvcnQgeyBWTSB9IGZyb20gJy4vdm0nO1xuXG5pbXBvcnQgeyBWZXJzaW9uZWRSZWZlcmVuY2UgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuXG5pbXBvcnQge1xuICBTaW1wbGVFbGVtZW50T3BlcmF0aW9uc1xufSBmcm9tICcuL2NvbXBpbGVkL29wY29kZXMvZG9tJztcblxuaW1wb3J0ICogYXMgU2ltcGxlIGZyb20gJy4vZG9tL2ludGVyZmFjZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpcnN0Tm9kZSB7XG4gIGZpcnN0Tm9kZSgpOiBPcHRpb248U2ltcGxlLk5vZGU+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExhc3ROb2RlIHtcbiAgbGFzdE5vZGUoKTogT3B0aW9uPFNpbXBsZS5Ob2RlPjtcbn1cblxuY2xhc3MgRmlyc3Qge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5vZGU6IE5vZGUpIHsgfVxuXG4gIGZpcnN0Tm9kZSgpOiBOb2RlIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlO1xuICB9XG59XG5cbmNsYXNzIExhc3Qge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5vZGU6IE5vZGUpIHsgfVxuXG4gIGxhc3ROb2RlKCk6IE5vZGUge1xuICAgIHJldHVybiB0aGlzLm5vZGU7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbGVtZW50T3BlcmF0aW9ucyB7XG4gIGFkZFN0YXRpY0F0dHJpYnV0ZShlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcbiAgYWRkU3RhdGljQXR0cmlidXRlTlMoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5hbWVzcGFjZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkO1xuICBhZGREeW5hbWljQXR0cmlidXRlKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBWZXJzaW9uZWRSZWZlcmVuY2U8c3RyaW5nPiwgaXNUcnVzdGluZzogYm9vbGVhbik6IHZvaWQ7XG4gIGFkZER5bmFtaWNBdHRyaWJ1dGVOUyhlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZXNwYWNlOiBzdHJpbmcsIG5hbWU6IHN0cmluZywgdmFsdWU6IFZlcnNpb25lZFJlZmVyZW5jZTxzdHJpbmc+LCBpc1RydXN0aW5nOiBib29sZWFuKTogdm9pZDtcbiAgZmx1c2goZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIHZtOiBWTSk6IHZvaWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBGcmFnbWVudCBpbXBsZW1lbnRzIEJvdW5kcyB7XG4gIHByaXZhdGUgYm91bmRzOiBCb3VuZHM7XG5cbiAgY29uc3RydWN0b3IoYm91bmRzOiBCb3VuZHMpIHtcbiAgICB0aGlzLmJvdW5kcyA9IGJvdW5kcztcbiAgfVxuXG4gIHBhcmVudEVsZW1lbnQoKTogU2ltcGxlLkVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLmJvdW5kcy5wYXJlbnRFbGVtZW50KCk7XG4gIH1cblxuICBmaXJzdE5vZGUoKTogT3B0aW9uPFNpbXBsZS5Ob2RlPiB7XG4gICAgcmV0dXJuIHRoaXMuYm91bmRzLmZpcnN0Tm9kZSgpO1xuICB9XG5cbiAgbGFzdE5vZGUoKTogT3B0aW9uPFNpbXBsZS5Ob2RlPiB7XG4gICAgcmV0dXJuIHRoaXMuYm91bmRzLmxhc3ROb2RlKCk7XG4gIH1cblxuICB1cGRhdGUoYm91bmRzOiBCb3VuZHMpIHtcbiAgICB0aGlzLmJvdW5kcyA9IGJvdW5kcztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRWxlbWVudFN0YWNrIGltcGxlbWVudHMgQ3Vyc29yIHtcbiAgcHVibGljIG5leHRTaWJsaW5nOiBPcHRpb248U2ltcGxlLk5vZGU+O1xuICBwdWJsaWMgZG9tOiBET01UcmVlQ29uc3RydWN0aW9uO1xuICBwdWJsaWMgdXBkYXRlT3BlcmF0aW9uczogRE9NQ2hhbmdlcztcbiAgcHVibGljIGNvbnN0cnVjdGluZzogT3B0aW9uPFNpbXBsZS5FbGVtZW50PiA9IG51bGw7XG4gIHB1YmxpYyBvcGVyYXRpb25zOiBPcHRpb248RWxlbWVudE9wZXJhdGlvbnM+ID0gbnVsbDtcbiAgcHVibGljIGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50O1xuICBwdWJsaWMgZW52OiBFbnZpcm9ubWVudDtcblxuICBwcml2YXRlIGVsZW1lbnRTdGFjayA9IG5ldyBTdGFjazxTaW1wbGUuRWxlbWVudD4oKTtcbiAgcHJpdmF0ZSBuZXh0U2libGluZ1N0YWNrID0gbmV3IFN0YWNrPE9wdGlvbjxTaW1wbGUuTm9kZT4+KCk7XG4gIHByaXZhdGUgYmxvY2tTdGFjayA9IG5ldyBTdGFjazxUcmFja2VyPigpO1xuXG4gIHByaXZhdGUgZGVmYXVsdE9wZXJhdGlvbnM6IEVsZW1lbnRPcGVyYXRpb25zO1xuXG4gIHN0YXRpYyBmb3JJbml0aWFsUmVuZGVyKGVudjogRW52aXJvbm1lbnQsIHBhcmVudE5vZGU6IFNpbXBsZS5FbGVtZW50LCBuZXh0U2libGluZzogT3B0aW9uPFNpbXBsZS5Ob2RlPikge1xuICAgIHJldHVybiBuZXcgRWxlbWVudFN0YWNrKGVudiwgcGFyZW50Tm9kZSwgbmV4dFNpYmxpbmcpO1xuICB9XG5cbiAgc3RhdGljIHJlc3VtZShlbnY6IEVudmlyb25tZW50LCB0cmFja2VyOiBUcmFja2VyLCBuZXh0U2libGluZzogT3B0aW9uPFNpbXBsZS5Ob2RlPikge1xuICAgIGxldCBwYXJlbnROb2RlID0gdHJhY2tlci5wYXJlbnRFbGVtZW50KCk7XG5cbiAgICBsZXQgc3RhY2sgPSBuZXcgRWxlbWVudFN0YWNrKGVudiwgcGFyZW50Tm9kZSwgbmV4dFNpYmxpbmcpO1xuICAgIHN0YWNrLnB1c2hCbG9ja1RyYWNrZXIodHJhY2tlcik7XG5cbiAgICByZXR1cm4gc3RhY2s7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihlbnY6IEVudmlyb25tZW50LCBwYXJlbnROb2RlOiBTaW1wbGUuRWxlbWVudCwgbmV4dFNpYmxpbmc6IE9wdGlvbjxTaW1wbGUuTm9kZT4pIHtcbiAgICB0aGlzLmVudiA9IGVudjtcbiAgICB0aGlzLmRvbSA9IGVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCk7XG4gICAgdGhpcy51cGRhdGVPcGVyYXRpb25zID0gZW52LmdldERPTSgpO1xuICAgIHRoaXMuZWxlbWVudCA9IHBhcmVudE5vZGU7XG4gICAgdGhpcy5uZXh0U2libGluZyA9IG5leHRTaWJsaW5nO1xuXG4gICAgdGhpcy5kZWZhdWx0T3BlcmF0aW9ucyA9IG5ldyBTaW1wbGVFbGVtZW50T3BlcmF0aW9ucyhlbnYpO1xuXG4gICAgdGhpcy5wdXNoU2ltcGxlQmxvY2soKTtcbiAgICB0aGlzLmVsZW1lbnRTdGFjay5wdXNoKHRoaXMuZWxlbWVudCk7XG4gICAgdGhpcy5uZXh0U2libGluZ1N0YWNrLnB1c2godGhpcy5uZXh0U2libGluZyk7XG4gIH1cblxuICBleHBlY3RDb25zdHJ1Y3RpbmcobWV0aG9kOiBzdHJpbmcpOiBTaW1wbGUuRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuY29uc3RydWN0aW5nO1xuICB9XG5cbiAgZXhwZWN0T3BlcmF0aW9ucyhtZXRob2Q6IHN0cmluZyk6IEVsZW1lbnRPcGVyYXRpb25zIHtcbiAgICByZXR1cm4gdGhpcy5vcGVyYXRpb25zO1xuICB9XG5cbiAgYmxvY2soKTogVHJhY2tlciB7XG4gICAgcmV0dXJuIHRoaXMuYmxvY2tTdGFjay5jdXJyZW50O1xuICB9XG5cbiAgcG9wRWxlbWVudCgpIHtcbiAgICBsZXQgeyBlbGVtZW50U3RhY2ssIG5leHRTaWJsaW5nU3RhY2sgfSAgPSB0aGlzO1xuXG4gICAgbGV0IHRvcEVsZW1lbnQgPSBlbGVtZW50U3RhY2sucG9wKCk7XG4gICAgbmV4dFNpYmxpbmdTdGFjay5wb3AoKTtcbiAgICAvLyBMT0dHRVIuZGVidWcoYC0+IGVsZW1lbnQgc3RhY2sgJHt0aGlzLmVsZW1lbnRTdGFjay50b0FycmF5KCkubWFwKGUgPT4gZS50YWdOYW1lKS5qb2luKCcsICcpfWApO1xuXG4gICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudFN0YWNrLmN1cnJlbnQ7XG4gICAgdGhpcy5uZXh0U2libGluZyA9IG5leHRTaWJsaW5nU3RhY2suY3VycmVudDtcblxuICAgIHJldHVybiB0b3BFbGVtZW50O1xuICB9XG5cbiAgcHVzaFNpbXBsZUJsb2NrKCk6IFRyYWNrZXIge1xuICAgIGxldCB0cmFja2VyID0gbmV3IFNpbXBsZUJsb2NrVHJhY2tlcih0aGlzLmVsZW1lbnQpO1xuICAgIHRoaXMucHVzaEJsb2NrVHJhY2tlcih0cmFja2VyKTtcbiAgICByZXR1cm4gdHJhY2tlcjtcbiAgfVxuXG4gIHB1c2hVcGRhdGFibGVCbG9jaygpOiBVcGRhdGFibGVUcmFja2VyIHtcbiAgICBsZXQgdHJhY2tlciA9IG5ldyBVcGRhdGFibGVCbG9ja1RyYWNrZXIodGhpcy5lbGVtZW50KTtcbiAgICB0aGlzLnB1c2hCbG9ja1RyYWNrZXIodHJhY2tlcik7XG4gICAgcmV0dXJuIHRyYWNrZXI7XG4gIH1cblxuICBwcml2YXRlIHB1c2hCbG9ja1RyYWNrZXIodHJhY2tlcjogVHJhY2tlciwgaXNSZW1vdGUgPSBmYWxzZSkge1xuICAgIGxldCBjdXJyZW50ID0gdGhpcy5ibG9ja1N0YWNrLmN1cnJlbnQ7XG5cbiAgICBpZiAoY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgY3VycmVudC5uZXdEZXN0cm95YWJsZSh0cmFja2VyKTtcblxuICAgICAgaWYgKCFpc1JlbW90ZSkge1xuICAgICAgICBjdXJyZW50Lm5ld0JvdW5kcyh0cmFja2VyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmJsb2NrU3RhY2sucHVzaCh0cmFja2VyKTtcbiAgICByZXR1cm4gdHJhY2tlcjtcbiAgfVxuXG4gIHB1c2hCbG9ja0xpc3QobGlzdDogTGlua2VkTGlzdDxMaW5rZWRMaXN0Tm9kZSAmIEJvdW5kcyAmIERlc3Ryb3lhYmxlPik6IFRyYWNrZXIge1xuICAgIGxldCB0cmFja2VyID0gbmV3IEJsb2NrTGlzdFRyYWNrZXIodGhpcy5lbGVtZW50LCBsaXN0KTtcbiAgICBsZXQgY3VycmVudCA9IHRoaXMuYmxvY2tTdGFjay5jdXJyZW50O1xuXG4gICAgaWYgKGN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgIGN1cnJlbnQubmV3RGVzdHJveWFibGUodHJhY2tlcik7XG4gICAgICBjdXJyZW50Lm5ld0JvdW5kcyh0cmFja2VyKTtcbiAgICB9XG5cbiAgICB0aGlzLmJsb2NrU3RhY2sucHVzaCh0cmFja2VyKTtcbiAgICByZXR1cm4gdHJhY2tlcjtcbiAgfVxuXG4gIHBvcEJsb2NrKCk6IFRyYWNrZXIge1xuICAgIHRoaXMuYmxvY2soKS5maW5hbGl6ZSh0aGlzKTtcblxuICAgIHJldHVybiB0aGlzLmJsb2NrU3RhY2sucG9wKCk7XG4gIH1cblxuICBvcGVuRWxlbWVudCh0YWc6IHN0cmluZywgb3BlcmF0aW9ucyA9IHRoaXMuZGVmYXVsdE9wZXJhdGlvbnMpOiBTaW1wbGUuRWxlbWVudCB7XG4gICAgbGV0IGVsZW1lbnQgPSB0aGlzLmRvbS5jcmVhdGVFbGVtZW50KHRhZywgdGhpcy5lbGVtZW50KTtcblxuICAgIHRoaXMuY29uc3RydWN0aW5nID0gZWxlbWVudDtcbiAgICB0aGlzLm9wZXJhdGlvbnMgPSBvcGVyYXRpb25zO1xuXG4gICAgcmV0dXJuIGVsZW1lbnQ7XG4gIH1cblxuICBmbHVzaEVsZW1lbnQoKSB7XG4gICAgbGV0IHBhcmVudCAgPSB0aGlzLmVsZW1lbnQ7XG4gICAgbGV0IGVsZW1lbnQgPSB0aGlzLmNvbnN0cnVjdGluZztcblxuICAgIHRoaXMuZG9tLmluc2VydEJlZm9yZShwYXJlbnQsIGVsZW1lbnQsIHRoaXMubmV4dFNpYmxpbmcpO1xuXG4gICAgdGhpcy5jb25zdHJ1Y3RpbmcgPSBudWxsO1xuICAgIHRoaXMub3BlcmF0aW9ucyA9IG51bGw7XG5cbiAgICB0aGlzLnB1c2hFbGVtZW50KGVsZW1lbnQpO1xuICAgIHRoaXMuYmxvY2soKS5vcGVuRWxlbWVudChlbGVtZW50KTtcbiAgfVxuXG4gIHB1c2hSZW1vdGVFbGVtZW50KGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuZXh0U2libGluZzogT3B0aW9uPFNpbXBsZS5Ob2RlPiA9IG51bGwpIHtcbiAgICB0aGlzLnB1c2hFbGVtZW50KGVsZW1lbnQsIG5leHRTaWJsaW5nKTtcblxuICAgIGxldCB0cmFja2VyID0gbmV3IFJlbW90ZUJsb2NrVHJhY2tlcihlbGVtZW50KTtcbiAgICB0aGlzLnB1c2hCbG9ja1RyYWNrZXIodHJhY2tlciwgdHJ1ZSk7XG4gIH1cblxuICBwb3BSZW1vdGVFbGVtZW50KCkge1xuICAgIHRoaXMucG9wQmxvY2soKTtcbiAgICB0aGlzLnBvcEVsZW1lbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgcHVzaEVsZW1lbnQoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5leHRTaWJsaW5nOiBPcHRpb248U2ltcGxlLk5vZGU+ID0gbnVsbCkge1xuICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgdGhpcy5lbGVtZW50U3RhY2sucHVzaChlbGVtZW50KTtcbiAgICAvLyBMT0dHRVIuZGVidWcoYC0+IGVsZW1lbnQgc3RhY2sgJHt0aGlzLmVsZW1lbnRTdGFjay50b0FycmF5KCkubWFwKGUgPT4gZS50YWdOYW1lKS5qb2luKCcsICcpfWApO1xuXG4gICAgdGhpcy5uZXh0U2libGluZyA9IG5leHRTaWJsaW5nO1xuICAgIHRoaXMubmV4dFNpYmxpbmdTdGFjay5wdXNoKG5leHRTaWJsaW5nKTtcbiAgfVxuXG4gIG5ld0Rlc3Ryb3lhYmxlKGQ6IERlc3Ryb3lhYmxlKSB7XG4gICAgdGhpcy5ibG9jaygpLm5ld0Rlc3Ryb3lhYmxlKGQpO1xuICB9XG5cbiAgbmV3Qm91bmRzKGJvdW5kczogQm91bmRzKSB7XG4gICAgdGhpcy5ibG9jaygpLm5ld0JvdW5kcyhib3VuZHMpO1xuICB9XG5cbiAgYXBwZW5kVGV4dChzdHJpbmc6IHN0cmluZyk6IFNpbXBsZS5UZXh0IHtcbiAgICBsZXQgeyBkb20gfSA9IHRoaXM7XG4gICAgbGV0IHRleHQgPSBkb20uY3JlYXRlVGV4dE5vZGUoc3RyaW5nKTtcbiAgICBkb20uaW5zZXJ0QmVmb3JlKHRoaXMuZWxlbWVudCwgdGV4dCwgdGhpcy5uZXh0U2libGluZyk7XG4gICAgdGhpcy5ibG9jaygpLm5ld05vZGUodGV4dCk7XG4gICAgcmV0dXJuIHRleHQ7XG4gIH1cblxuICBhcHBlbmRDb21tZW50KHN0cmluZzogc3RyaW5nKTogU2ltcGxlLkNvbW1lbnQge1xuICAgIGxldCB7IGRvbSB9ID0gdGhpcztcbiAgICBsZXQgY29tbWVudCA9IGRvbS5jcmVhdGVDb21tZW50KHN0cmluZyk7XG4gICAgZG9tLmluc2VydEJlZm9yZSh0aGlzLmVsZW1lbnQsIGNvbW1lbnQsIHRoaXMubmV4dFNpYmxpbmcpO1xuICAgIHRoaXMuYmxvY2soKS5uZXdOb2RlKGNvbW1lbnQpO1xuICAgIHJldHVybiBjb21tZW50O1xuICB9XG5cbiAgc2V0U3RhdGljQXR0cmlidXRlKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuZXhwZWN0T3BlcmF0aW9ucygnc2V0U3RhdGljQXR0cmlidXRlJykuYWRkU3RhdGljQXR0cmlidXRlKHRoaXMuZXhwZWN0Q29uc3RydWN0aW5nKCdzZXRTdGF0aWNBdHRyaWJ1dGUnKSwgbmFtZSwgdmFsdWUpO1xuICB9XG5cbiAgc2V0U3RhdGljQXR0cmlidXRlTlMobmFtZXNwYWNlOiBzdHJpbmcsIG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuZXhwZWN0T3BlcmF0aW9ucygnc2V0U3RhdGljQXR0cmlidXRlTlMnKS5hZGRTdGF0aWNBdHRyaWJ1dGVOUyh0aGlzLmV4cGVjdENvbnN0cnVjdGluZygnc2V0U3RhdGljQXR0cmlidXRlTlMnKSwgbmFtZXNwYWNlLCBuYW1lLCB2YWx1ZSk7XG4gIH1cblxuICBzZXREeW5hbWljQXR0cmlidXRlKG5hbWU6IHN0cmluZywgcmVmZXJlbmNlOiBWZXJzaW9uZWRSZWZlcmVuY2U8c3RyaW5nPiwgaXNUcnVzdGluZzogYm9vbGVhbikge1xuICAgIHRoaXMuZXhwZWN0T3BlcmF0aW9ucygnc2V0RHluYW1pY0F0dHJpYnV0ZScpLmFkZER5bmFtaWNBdHRyaWJ1dGUodGhpcy5leHBlY3RDb25zdHJ1Y3RpbmcoJ3NldER5bmFtaWNBdHRyaWJ1dGUnKSwgbmFtZSwgcmVmZXJlbmNlLCBpc1RydXN0aW5nKTtcbiAgfVxuXG4gIHNldER5bmFtaWNBdHRyaWJ1dGVOUyhuYW1lc3BhY2U6IHN0cmluZywgbmFtZTogc3RyaW5nLCByZWZlcmVuY2U6IFZlcnNpb25lZFJlZmVyZW5jZTxzdHJpbmc+LCBpc1RydXN0aW5nOiBib29sZWFuKSB7XG4gICAgdGhpcy5leHBlY3RPcGVyYXRpb25zKCdzZXREeW5hbWljQXR0cmlidXRlTlMnKS5hZGREeW5hbWljQXR0cmlidXRlTlModGhpcy5leHBlY3RDb25zdHJ1Y3RpbmcoJ3NldER5bmFtaWNBdHRyaWJ1dGVOUycpLCBuYW1lc3BhY2UsIG5hbWUsIHJlZmVyZW5jZSwgaXNUcnVzdGluZyk7XG4gIH1cblxuICBjbG9zZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5ibG9jaygpLmNsb3NlRWxlbWVudCgpO1xuICAgIHRoaXMucG9wRWxlbWVudCgpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhY2tlciBleHRlbmRzIERlc3Ryb3lhYmxlQm91bmRzIHtcbiAgb3BlbkVsZW1lbnQoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQpOiB2b2lkO1xuICBjbG9zZUVsZW1lbnQoKTogdm9pZDtcbiAgbmV3Tm9kZShub2RlOiBTaW1wbGUuTm9kZSk6IHZvaWQ7XG4gIG5ld0JvdW5kcyhib3VuZHM6IEJvdW5kcyk6IHZvaWQ7XG4gIG5ld0Rlc3Ryb3lhYmxlKGQ6IERlc3Ryb3lhYmxlKTogdm9pZDtcbiAgZmluYWxpemUoc3RhY2s6IEVsZW1lbnRTdGFjayk6IHZvaWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBTaW1wbGVCbG9ja1RyYWNrZXIgaW1wbGVtZW50cyBUcmFja2VyIHtcbiAgcHJvdGVjdGVkIGZpcnN0OiBPcHRpb248Rmlyc3ROb2RlPiA9IG51bGw7XG4gIHByb3RlY3RlZCBsYXN0OiBPcHRpb248TGFzdE5vZGU+ID0gbnVsbDtcbiAgcHJvdGVjdGVkIGRlc3Ryb3lhYmxlczogT3B0aW9uPERlc3Ryb3lhYmxlW10+ID0gbnVsbDtcbiAgcHJvdGVjdGVkIG5lc3RpbmcgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGFyZW50OiBTaW1wbGUuRWxlbWVudCl7fVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgbGV0IHsgZGVzdHJveWFibGVzIH0gPSB0aGlzO1xuXG4gICAgaWYgKGRlc3Ryb3lhYmxlcyAmJiBkZXN0cm95YWJsZXMubGVuZ3RoKSB7XG4gICAgICBmb3IgKGxldCBpPTA7IGk8ZGVzdHJveWFibGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGRlc3Ryb3lhYmxlc1tpXS5kZXN0cm95KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcGFyZW50RWxlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQ7XG4gIH1cblxuICBmaXJzdE5vZGUoKTogT3B0aW9uPFNpbXBsZS5Ob2RlPiB7XG4gICAgcmV0dXJuIHRoaXMuZmlyc3QgJiYgdGhpcy5maXJzdC5maXJzdE5vZGUoKTtcbiAgfVxuXG4gIGxhc3ROb2RlKCk6IE9wdGlvbjxTaW1wbGUuTm9kZT4ge1xuICAgIHJldHVybiB0aGlzLmxhc3QgJiYgdGhpcy5sYXN0Lmxhc3ROb2RlKCk7XG4gIH1cblxuICBvcGVuRWxlbWVudChlbGVtZW50OiBFbGVtZW50KSB7XG4gICAgdGhpcy5uZXdOb2RlKGVsZW1lbnQpO1xuICAgIHRoaXMubmVzdGluZysrO1xuICB9XG5cbiAgY2xvc2VFbGVtZW50KCkge1xuICAgIHRoaXMubmVzdGluZy0tO1xuICB9XG5cbiAgbmV3Tm9kZShub2RlOiBOb2RlKSB7XG4gICAgaWYgKHRoaXMubmVzdGluZyAhPT0gMCkgcmV0dXJuO1xuXG4gICAgaWYgKCF0aGlzLmZpcnN0KSB7XG4gICAgICB0aGlzLmZpcnN0ID0gbmV3IEZpcnN0KG5vZGUpO1xuICAgIH1cblxuICAgIHRoaXMubGFzdCA9IG5ldyBMYXN0KG5vZGUpO1xuICB9XG5cbiAgbmV3Qm91bmRzKGJvdW5kczogQm91bmRzKSB7XG4gICAgaWYgKHRoaXMubmVzdGluZyAhPT0gMCkgcmV0dXJuO1xuXG4gICAgaWYgKCF0aGlzLmZpcnN0KSB7XG4gICAgICB0aGlzLmZpcnN0ID0gYm91bmRzO1xuICAgIH1cblxuICAgIHRoaXMubGFzdCA9IGJvdW5kcztcbiAgfVxuXG4gIG5ld0Rlc3Ryb3lhYmxlKGQ6IERlc3Ryb3lhYmxlKSB7XG4gICAgdGhpcy5kZXN0cm95YWJsZXMgPSB0aGlzLmRlc3Ryb3lhYmxlcyB8fCBbXTtcbiAgICB0aGlzLmRlc3Ryb3lhYmxlcy5wdXNoKGQpO1xuICB9XG5cbiAgZmluYWxpemUoc3RhY2s6IEVsZW1lbnRTdGFjaykge1xuICAgIGlmICghdGhpcy5maXJzdCkge1xuICAgICAgc3RhY2suYXBwZW5kQ29tbWVudCgnJyk7XG4gICAgfVxuICB9XG59XG5cbmNsYXNzIFJlbW90ZUJsb2NrVHJhY2tlciBleHRlbmRzIFNpbXBsZUJsb2NrVHJhY2tlciB7XG4gIGRlc3Ryb3koKSB7XG4gICAgc3VwZXIuZGVzdHJveSgpO1xuXG4gICAgY2xlYXIodGhpcyk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGFibGVUcmFja2VyIGV4dGVuZHMgVHJhY2tlciB7XG4gIHJlc2V0KGVudjogRW52aXJvbm1lbnQpOiBPcHRpb248U2ltcGxlLk5vZGU+O1xufVxuXG5leHBvcnQgY2xhc3MgVXBkYXRhYmxlQmxvY2tUcmFja2VyIGV4dGVuZHMgU2ltcGxlQmxvY2tUcmFja2VyIGltcGxlbWVudHMgVXBkYXRhYmxlVHJhY2tlciB7XG4gIHJlc2V0KGVudjogRW52aXJvbm1lbnQpOiBPcHRpb248U2ltcGxlLk5vZGU+IHtcbiAgICBsZXQgeyBkZXN0cm95YWJsZXMgfSA9IHRoaXM7XG5cbiAgICBpZiAoZGVzdHJveWFibGVzICYmIGRlc3Ryb3lhYmxlcy5sZW5ndGgpIHtcbiAgICAgIGZvciAobGV0IGk9MDsgaTxkZXN0cm95YWJsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgZW52LmRpZERlc3Ryb3koZGVzdHJveWFibGVzW2ldKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgbmV4dFNpYmxpbmcgPSBjbGVhcih0aGlzKTtcblxuICAgIHRoaXMuZmlyc3QgPSBudWxsO1xuICAgIHRoaXMubGFzdCA9IG51bGw7XG4gICAgdGhpcy5kZXN0cm95YWJsZXMgPSBudWxsO1xuICAgIHRoaXMubmVzdGluZyA9IDA7XG5cbiAgICByZXR1cm4gbmV4dFNpYmxpbmc7XG4gIH1cbn1cblxuY2xhc3MgQmxvY2tMaXN0VHJhY2tlciBpbXBsZW1lbnRzIFRyYWNrZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBhcmVudDogU2ltcGxlLkVsZW1lbnQsIHByaXZhdGUgYm91bmRMaXN0OiBMaW5rZWRMaXN0PExpbmtlZExpc3ROb2RlICYgQm91bmRzICYgRGVzdHJveWFibGU+KSB7XG4gICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgdGhpcy5ib3VuZExpc3QgPSBib3VuZExpc3Q7XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIHRoaXMuYm91bmRMaXN0LmZvckVhY2hOb2RlKG5vZGUgPT4gbm9kZS5kZXN0cm95KCkpO1xuICB9XG5cbiAgcGFyZW50RWxlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQ7XG4gIH1cblxuICBmaXJzdE5vZGUoKTogT3B0aW9uPFNpbXBsZS5Ob2RlPiB7XG4gICAgbGV0IGhlYWQgPSB0aGlzLmJvdW5kTGlzdC5oZWFkKCk7XG4gICAgcmV0dXJuIGhlYWQgJiYgaGVhZC5maXJzdE5vZGUoKTtcbiAgfVxuXG4gIGxhc3ROb2RlKCk6IE9wdGlvbjxTaW1wbGUuTm9kZT4ge1xuICAgIGxldCB0YWlsID0gdGhpcy5ib3VuZExpc3QudGFpbCgpO1xuICAgIHJldHVybiB0YWlsICYmIHRhaWwubGFzdE5vZGUoKTtcbiAgfVxuXG4gIG9wZW5FbGVtZW50KF9lbGVtZW50OiBFbGVtZW50KSB7XG4gIH1cblxuICBjbG9zZUVsZW1lbnQoKSB7XG4gIH1cblxuICBuZXdOb2RlKF9ub2RlOiBOb2RlKSB7XG4gIH1cblxuICBuZXdCb3VuZHMoX2JvdW5kczogQm91bmRzKSB7XG4gIH1cblxuICBuZXdEZXN0cm95YWJsZShfZDogRGVzdHJveWFibGUpIHtcbiAgfVxuXG4gIGZpbmFsaXplKF9zdGFjazogRWxlbWVudFN0YWNrKSB7XG4gIH1cbn1cbiJdfQ==

@@ -14,4 +14,2 @@ 'use strict';

var _util = require('@glimmer/util');
const SVG_NAMESPACE = exports.SVG_NAMESPACE = 'http://www.w3.org/2000/svg';

@@ -82,3 +80,3 @@ // Patch: insertAdjacentHTML on SVG Fix

// FF: Old versions will create a node in the wrong namespace
if (svg.childNodes.length === 1 && (0, _util.unwrap)(svg.firstChild).namespaceURI === SVG_NAMESPACE) {
if (svg.childNodes.length === 1 && svg.firstChild.namespaceURI === SVG_NAMESPACE) {
// The test worked as expected, no fix required

@@ -90,2 +88,2 @@ return false;

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLWlubmVyLWh0bWwtZml4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3ZnLWlubmVyLWh0bWwtZml4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLEFBQU8sQUFBVSxBQUFjLEFBQUUsQUFBTSxBQUFXLEFBQUM7O0FBQ25ELEFBQU8sQUFBRSxBQUFlLEFBQW1DLEFBQU0sQUFBZSxBQUFDOztBQUNqRixBQUFPLEFBQVUsQUFBTSxBQUFFLEFBQU0sQUFBZSxBQUFDLEFBRS9DLEFBQU07O0FBQUMsTUFBTSxBQUFhLHdDQUFHLEFBQTRCLEFBQUM7QUFHMUQsQUFBMEM7QUFDMUMsQUFBNkM7QUFDN0MsQUFBK0U7QUFDL0UsQUFBNEU7QUFDNUUsQUFBNkQ7QUFDN0QsQUFBc0U7QUFDdEUsQUFBNkU7QUFDN0UsQUFBK0U7QUFDL0UsQUFBOEU7QUFDOUUsQUFBK0U7QUFDL0UsQUFBMkQsQUFDM0QsQUFBTTtvQkFBcUIsQUFBMEIsVUFBRSxBQUFrQyxpQkFBRSxBQUEyQjtBQUNwSCxBQUFFLEFBQUMsUUFBQyxDQUFDLEFBQVEsQUFBQyxVQUFDLEFBQU0sT0FBQyxBQUFlLEFBQUM7QUFFdEMsQUFBRSxBQUFDLFFBQUMsQ0FBQyxBQUFjLGVBQUMsQUFBUSxVQUFFLEFBQVksQUFBQyxBQUFDLGVBQUMsQUFBQztBQUM1QyxBQUFNLGVBQUMsQUFBZSxBQUFDLEFBQ3pCO0FBQUM7QUFFRCxRQUFJLEFBQUcsTUFBRyxBQUFRLFNBQUMsQUFBYSxjQUFDLEFBQUssQUFBQyxBQUFDO0FBRXhDLEFBQU0sV0FBQyxNQUFvQyxzQ0FBUSxBQUFlO0FBQ2hFLEFBQWdCLHlCQUFDLEFBQW1CLFFBQUUsQUFBaUIsYUFBRSxBQUFZO0FBQ25FLEFBQUUsQUFBQyxnQkFBQyxBQUFJLFNBQUssQUFBSSxRQUFJLEFBQUksU0FBSyxBQUFFLEFBQUMsSUFBQyxBQUFDO0FBQ2pDLEFBQU0sdUJBQUMsQUFBSyxNQUFDLEFBQWdCLGlCQUFDLEFBQU0sUUFBRSxB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QUFNLG1CQUFDLEFBQUssQUFBQyxBQUNmO0FBQUM7QUFFRCxBQUFNLGVBQUMsQUFBSSxBQUFDLEFBQ2Q7QUFBQyxBQUNIO0FBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb3VuZHMsIENvbmNyZXRlQm91bmRzIH0gZnJvbSAnLi4vYm91bmRzJztcbmltcG9ydCB7IG1vdmVOb2Rlc0JlZm9yZSwgRE9NQ2hhbmdlcywgRE9NVHJlZUNvbnN0cnVjdGlvbiB9IGZyb20gJy4uL2RvbS9oZWxwZXInO1xuaW1wb3J0IHsgT3B0aW9uLCB1bndyYXAgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuZXhwb3J0IGNvbnN0IFNWR19OQU1FU1BBQ0UgPSAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnO1xuZXhwb3J0IHR5cGUgU1ZHX05BTUVTUEFDRSA9IHR5cGVvZiBTVkdfTkFNRVNQQUNFO1xuXG4vLyBQYXRjaDogICAgaW5zZXJ0QWRqYWNlbnRIVE1MIG9uIFNWRyBGaXhcbi8vIEJyb3dzZXJzOiBTYWZhcmksIElFLCBFZGdlLCBGaXJlZm94IH4zMy0zNFxuLy8gUmVhc29uOiAgIGluc2VydEFkamFjZW50SFRNTCBkb2VzIG5vdCBleGlzdCBvbiBTVkcgZWxlbWVudHMgaW4gU2FmYXJpLiBJdCBpc1xuLy8gICAgICAgICAgIHByZXNlbnQgYnV0IHRocm93cyBhbiBleGNlcHRpb24gb24gSUUgYW5kIEVkZ2UuIE9sZCB2ZXJzaW9ucyBvZlxuLy8gICAgICAgICAgIEZpcmVmb3ggY3JlYXRlIG5vZGVzIGluIHRoZSBpbmNvcnJlY3QgbmFtZXNwYWNlLlxuLy8gRml4OiAgICAgIFNpbmNlIElFIGFuZCBFZGdlIHNpbGVudGx5IGZhaWwgdG8gY3JlYXRlIFNWRyBub2RlcyB1c2luZ1xuLy8gICAgICAgICAgIGlubmVySFRNTCwgYW5kIGJlY2F1c2UgRmlyZWZveCBtYXkgY3JlYXRlIG5vZGVzIGluIHRoZSBpbmNvcnJlY3Rcbi8vICAgICAgICAgICBuYW1lc3BhY2UgdXNpbmcgaW5uZXJIVE1MIG9uIFNWRyBlbGVtZW50cywgYW4gSFRNTC1zdHJpbmcgd3JhcHBpbmdcbi8vICAgICAgICAgICBhcHByb2FjaCBpcyB1c2VkLiBBIHByZS9wb3N0IFNWRyB0YWcgaXMgYWRkZWQgdG8gdGhlIHN0cmluZywgdGhlblxuLy8gICAgICAgICAgIHRoYXQgd2hvbGUgc3RyaW5nIGlzIGFkZGVkIHRvIGEgZGl2LiBUaGUgY3JlYXRlZCBub2RlcyBhcmUgcGx1Y2tlZFxuLy8gICAgICAgICAgIG91dCBhbmQgYXBwbGllZCB0byB0aGUgdGFyZ2V0IGxvY2F0aW9uIG9uIERPTS5cbmV4cG9ydCBmdW5jdGlvbiBkb21DaGFuZ2VzKGRvY3VtZW50OiBPcHRpb248RG9jdW1lbnQ+LCBET01DaGFuZ2VzQ2xhc3M6IHR5cGVvZiBET01DaGFuZ2VzLCBzdmdOYW1lc3BhY2U6IFNWR19OQU1FU1BBQ0UpOiB0eXBlb2YgRE9NQ2hhbmdlcyB7XG4gIGlmICghZG9jdW1lbnQpIHJldHVybiBET01DaGFuZ2VzQ2xhc3M7XG5cbiAgaWYgKCFzaG91bGRBcHBseUZpeChkb2N1bWVudCwgc3ZnTmFtZXNwYWNlKSkge1xuICAgIHJldHVybiBET01DaGFuZ2VzQ2xhc3M7XG4gIH1cblxuICBsZXQgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cbiAgcmV0dXJuIGNsYXNzIERPTUNoYW5nZXNXaXRoU1ZHSW5uZXJIVE1MRml4IGV4dGVuZHMgRE9NQ2hhbmdlc0NsYXNzIHtcbiAgICBpbnNlcnRIVE1MQmVmb3JlKHBhcmVudDogSFRNTEVsZW1lbnQsIG5leHRTaWJsaW5nOiBOb2RlLCBodG1sOiBzdHJpbmcpOiBCb3VuZHMge1xuICAgICAgaWYgKGh0bWwgPT09IG51bGwgfHwgaHRtbCA9PT0gJycpIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBuZXh0U2libGluZywgaHRtbCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwYXJlbnQubmFtZXNwYWNlVVJJICE9PSBzdmdOYW1lc3BhY2UpIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBuZXh0U2libGluZywgaHRtbCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmaXhTVkcocGFyZW50LCBkaXYsIGh0bWwsIG5leHRTaWJsaW5nKTtcbiAgICB9XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmVlQ29uc3RydWN0aW9uKGRvY3VtZW50OiBPcHRpb248RG9jdW1lbnQ+LCBUcmVlQ29uc3RydWN0aW9uQ2xhc3M6IHR5cGVvZiBET01UcmVlQ29uc3RydWN0aW9uLCBzdmdOYW1lc3BhY2U6IFNWR19OQU1FU1BBQ0UpOiB0eXBlb2YgRE9NVHJlZUNvbnN0cnVjdGlvbiB7XG4gIGlmICghZG9jdW1lbnQpIHJldHVybiBUcmVlQ29uc3RydWN0aW9uQ2xhc3M7XG5cbiAgaWYgKCFzaG91bGRBcHBseUZpeChkb2N1bWVudCwgc3ZnTmFtZXNwYWNlKSkge1xuICAgIHJldHVybiBUcmVlQ29uc3RydWN0aW9uQ2xhc3M7XG4gIH1cblxuICBsZXQgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cbiAgcmV0dXJuIGNsYXNzIFRyZWVDb25zdHJ1Y3Rpb25XaXRoU1ZHSW5uZXJIVE1MRml4IGV4dGVuZHMgVHJlZUNvbnN0cnVjdGlvbkNsYXNzIHtcbiAgICBpbnNlcnRIVE1MQmVmb3JlKHBhcmVudDogSFRNTEVsZW1lbnQsIGh0bWw6IHN0cmluZywgIHJlZmVyZW5jZTogTm9kZSwpOiBCb3VuZHMge1xuICAgICAgaWYgKGh0bWwgPT09IG51bGwgfHwgaHRtbCA9PT0gJycpIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBodG1sLCByZWZlcmVuY2UpO1xuICAgICAgfVxuXG4gICAgICBpZiAocGFyZW50Lm5hbWVzcGFjZVVSSSAhPT0gc3ZnTmFtZXNwYWNlKSB7XG4gICAgICAgIHJldHVybiBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgaHRtbCwgcmVmZXJlbmNlKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZpeFNWRyhwYXJlbnQsIGRpdiwgaHRtbCwgcmVmZXJlbmNlKTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGZpeFNWRyhwYXJlbnQ6IEVsZW1lbnQsIGRpdjogSFRNTEVsZW1lbnQsIGh0bWw6IHN0cmluZywgcmVmZXJlbmNlOiBOb2RlKTogQm91bmRzIHtcbiAgLy8gSUUsIEVkZ2U6IGFsc28gZG8gbm90IGNvcnJlY3RseSBzdXBwb3J0IHVzaW5nIGBpbm5lckhUTUxgIG9uIFNWR1xuICAvLyBuYW1lc3BhY2VkIGVsZW1lbnRzLiBTbyBoZXJlIGEgd3JhcHBlciBpcyB1c2VkLlxuICBsZXQgd3JhcHBlZEh0bWwgPSAnPHN2Zz4nICsgaHRtbCArICc8L3N2Zz4nO1xuXG4gIGRpdi5pbm5lckhUTUwgPSB3cmFwcGVkSHRtbDtcblxuICBsZXQgW2ZpcnN0LCBsYXN0XSA9IG1vdmVOb2Rlc0JlZm9yZShkaXYuZmlyc3RDaGlsZCBhcyBOb2RlLCBwYXJlbnQsIHJlZmVyZW5jZSk7XG4gIHJldHVybiBuZXcgQ29uY3JldGVCb3VuZHMocGFyZW50LCBmaXJzdCwgbGFzdCk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZEFwcGx5Rml4KGRvY3VtZW50OiBEb2N1bWVudCwgc3ZnTmFtZXNwYWNlOiBTVkdfTkFNRVNQQUNFKSB7XG4gIGxldCBzdmcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoc3ZnTmFtZXNwYWNlLCAnc3ZnJyk7XG5cbiAgdHJ5IHtcbiAgICBzdmdbJ2luc2VydEFkamFjZW50SFRNTCddKCdiZWZvcmVFbmQnLCAnPGNpcmNsZT48L2NpcmNsZT4nKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIElFLCBFZGdlOiBXaWxsIHRocm93LCBpbnNlcnRBZGphY2VudEhUTUwgaXMgdW5zdXBwb3J0ZWQgb24gU1ZHXG4gICAgLy8gU2FmYXJpOiBXaWxsIHRocm93LCBpbnNlcnRBZGphY2VudEhUTUwgaXMgbm90IHByZXNlbnQgb24gU1ZHXG4gIH0gZmluYWxseSB7XG4gICAgLy8gRkY6IE9sZCB2ZXJzaW9ucyB3aWxsIGNyZWF0ZSBhIG5vZGUgaW4gdGhlIHdyb25nIG5hbWVzcGFjZVxuICAgIGlmIChzdmcuY2hpbGROb2Rlcy5sZW5ndGggPT09IDEgJiYgdW53cmFwKHN2Zy5maXJzdENoaWxkKS5uYW1lc3BhY2VVUkkgPT09IFNWR19OQU1FU1BBQ0UpIHtcbiAgICAgIC8vIFRoZSB0ZXN0IHdvcmtlZCBhcyBleHBlY3RlZCwgbm8gZml4IHJlcXVpcmVkXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLWlubmVyLWh0bWwtZml4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3ZnLWlubmVyLWh0bWwtZml4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLEFBQU8sQUFBVSxBQUFjLEFBQUUsQUFBTSxBQUFXLEFBQUM7O0FBQ25ELEFBQU8sQUFBRSxBQUFlLEFBQW1DLEFBQU0sQUFBZSxBQUFDLEFBR2pGLEFBQU07O0FBQUMsTUFBTSxBQUFhLHdDQUFHLEFBQTRCLEFBQUM7QUFHMUQsQUFBMEM7QUFDMUMsQUFBNkM7QUFDN0MsQUFBK0U7QUFDL0UsQUFBNEU7QUFDNUUsQUFBNkQ7QUFDN0QsQUFBc0U7QUFDdEUsQUFBNkU7QUFDN0UsQUFBK0U7QUFDL0UsQUFBOEU7QUFDOUUsQUFBK0U7QUFDL0UsQUFBMkQsQUFDM0QsQUFBTTtvQkFBcUIsQUFBMEIsVUFBRSxBQUFrQyxpQkFBRSxBQUEyQjtBQUNwSCxBQUFFLEFBQUMsUUFBQyxDQUFDLEFBQVEsQUFBQyxVQUFDLEFBQU0sT0FBQyxBQUFlLEFBQUM7QUFFdEMsQUFBRSxBQUFDLFFBQUMsQ0FBQyxBQUFjLGVBQUMsQUFBUSxVQUFFLEFBQVksQUFBQyxBQUFDLGVBQUMsQUFBQztBQUM1QyxBQUFNLGVBQUMsQUFBZSxBQUFDLEFBQ3pCO0FBQUM7QUFFRCxRQUFJLEFBQUcsTUFBRyxBQUFRLFNBQUMsQUFBYSxjQUFDLEFBQUssQUFBQyxBQUFDO0FBRXhDLEFBQU0sV0FBQyxNQUFvQyxzQ0FBUSxBQUFlO0FBQ2hFLEFBQWdCLHlCQUFDLEFBQW1CLFFBQUUsQUFBaUIsYUFBRSxBQUFZO0FBQ25FLEFBQUUsQUFBQyxnQkFBQyxBQUFJLFNBQUssQUFBSSxRQUFJLEFBQUksU0FBSyxBQUFFLEFBQUMsSUFBQyxBQUFDO0FBQ2pDLEFBQU0sdUJBQUMsQUFBSyxNQUFDLEFBQWdCLGlCQUFDLEFBQU0sUUFBRSxBQUFXLGFBQUUsQUFBSSxBQUFDLEFBQUMsQUFDM0Q7QUFBQztBQUVELEFB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ZDtBQUFDLEFBQ0g7QUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJvdW5kcywgQ29uY3JldGVCb3VuZHMgfSBmcm9tICcuLi9ib3VuZHMnO1xuaW1wb3J0IHsgbW92ZU5vZGVzQmVmb3JlLCBET01DaGFuZ2VzLCBET01UcmVlQ29uc3RydWN0aW9uIH0gZnJvbSAnLi4vZG9tL2hlbHBlcic7XG5pbXBvcnQgeyBPcHRpb24gfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuZXhwb3J0IGNvbnN0IFNWR19OQU1FU1BBQ0UgPSAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnO1xuZXhwb3J0IHR5cGUgU1ZHX05BTUVTUEFDRSA9IHR5cGVvZiBTVkdfTkFNRVNQQUNFO1xuXG4vLyBQYXRjaDogICAgaW5zZXJ0QWRqYWNlbnRIVE1MIG9uIFNWRyBGaXhcbi8vIEJyb3dzZXJzOiBTYWZhcmksIElFLCBFZGdlLCBGaXJlZm94IH4zMy0zNFxuLy8gUmVhc29uOiAgIGluc2VydEFkamFjZW50SFRNTCBkb2VzIG5vdCBleGlzdCBvbiBTVkcgZWxlbWVudHMgaW4gU2FmYXJpLiBJdCBpc1xuLy8gICAgICAgICAgIHByZXNlbnQgYnV0IHRocm93cyBhbiBleGNlcHRpb24gb24gSUUgYW5kIEVkZ2UuIE9sZCB2ZXJzaW9ucyBvZlxuLy8gICAgICAgICAgIEZpcmVmb3ggY3JlYXRlIG5vZGVzIGluIHRoZSBpbmNvcnJlY3QgbmFtZXNwYWNlLlxuLy8gRml4OiAgICAgIFNpbmNlIElFIGFuZCBFZGdlIHNpbGVudGx5IGZhaWwgdG8gY3JlYXRlIFNWRyBub2RlcyB1c2luZ1xuLy8gICAgICAgICAgIGlubmVySFRNTCwgYW5kIGJlY2F1c2UgRmlyZWZveCBtYXkgY3JlYXRlIG5vZGVzIGluIHRoZSBpbmNvcnJlY3Rcbi8vICAgICAgICAgICBuYW1lc3BhY2UgdXNpbmcgaW5uZXJIVE1MIG9uIFNWRyBlbGVtZW50cywgYW4gSFRNTC1zdHJpbmcgd3JhcHBpbmdcbi8vICAgICAgICAgICBhcHByb2FjaCBpcyB1c2VkLiBBIHByZS9wb3N0IFNWRyB0YWcgaXMgYWRkZWQgdG8gdGhlIHN0cmluZywgdGhlblxuLy8gICAgICAgICAgIHRoYXQgd2hvbGUgc3RyaW5nIGlzIGFkZGVkIHRvIGEgZGl2LiBUaGUgY3JlYXRlZCBub2RlcyBhcmUgcGx1Y2tlZFxuLy8gICAgICAgICAgIG91dCBhbmQgYXBwbGllZCB0byB0aGUgdGFyZ2V0IGxvY2F0aW9uIG9uIERPTS5cbmV4cG9ydCBmdW5jdGlvbiBkb21DaGFuZ2VzKGRvY3VtZW50OiBPcHRpb248RG9jdW1lbnQ+LCBET01DaGFuZ2VzQ2xhc3M6IHR5cGVvZiBET01DaGFuZ2VzLCBzdmdOYW1lc3BhY2U6IFNWR19OQU1FU1BBQ0UpOiB0eXBlb2YgRE9NQ2hhbmdlcyB7XG4gIGlmICghZG9jdW1lbnQpIHJldHVybiBET01DaGFuZ2VzQ2xhc3M7XG5cbiAgaWYgKCFzaG91bGRBcHBseUZpeChkb2N1bWVudCwgc3ZnTmFtZXNwYWNlKSkge1xuICAgIHJldHVybiBET01DaGFuZ2VzQ2xhc3M7XG4gIH1cblxuICBsZXQgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cbiAgcmV0dXJuIGNsYXNzIERPTUNoYW5nZXNXaXRoU1ZHSW5uZXJIVE1MRml4IGV4dGVuZHMgRE9NQ2hhbmdlc0NsYXNzIHtcbiAgICBpbnNlcnRIVE1MQmVmb3JlKHBhcmVudDogSFRNTEVsZW1lbnQsIG5leHRTaWJsaW5nOiBOb2RlLCBodG1sOiBzdHJpbmcpOiBCb3VuZHMge1xuICAgICAgaWYgKGh0bWwgPT09IG51bGwgfHwgaHRtbCA9PT0gJycpIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBuZXh0U2libGluZywgaHRtbCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwYXJlbnQubmFtZXNwYWNlVVJJICE9PSBzdmdOYW1lc3BhY2UpIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBuZXh0U2libGluZywgaHRtbCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmaXhTVkcocGFyZW50LCBkaXYsIGh0bWwsIG5leHRTaWJsaW5nKTtcbiAgICB9XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmVlQ29uc3RydWN0aW9uKGRvY3VtZW50OiBPcHRpb248RG9jdW1lbnQ+LCBUcmVlQ29uc3RydWN0aW9uQ2xhc3M6IHR5cGVvZiBET01UcmVlQ29uc3RydWN0aW9uLCBzdmdOYW1lc3BhY2U6IFNWR19OQU1FU1BBQ0UpOiB0eXBlb2YgRE9NVHJlZUNvbnN0cnVjdGlvbiB7XG4gIGlmICghZG9jdW1lbnQpIHJldHVybiBUcmVlQ29uc3RydWN0aW9uQ2xhc3M7XG5cbiAgaWYgKCFzaG91bGRBcHBseUZpeChkb2N1bWVudCwgc3ZnTmFtZXNwYWNlKSkge1xuICAgIHJldHVybiBUcmVlQ29uc3RydWN0aW9uQ2xhc3M7XG4gIH1cblxuICBsZXQgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cbiAgcmV0dXJuIGNsYXNzIFRyZWVDb25zdHJ1Y3Rpb25XaXRoU1ZHSW5uZXJIVE1MRml4IGV4dGVuZHMgVHJlZUNvbnN0cnVjdGlvbkNsYXNzIHtcbiAgICBpbnNlcnRIVE1MQmVmb3JlKHBhcmVudDogSFRNTEVsZW1lbnQsIGh0bWw6IHN0cmluZywgIHJlZmVyZW5jZTogTm9kZSwpOiBCb3VuZHMge1xuICAgICAgaWYgKGh0bWwgPT09IG51bGwgfHwgaHRtbCA9PT0gJycpIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBodG1sLCByZWZlcmVuY2UpO1xuICAgICAgfVxuXG4gICAgICBpZiAocGFyZW50Lm5hbWVzcGFjZVVSSSAhPT0gc3ZnTmFtZXNwYWNlKSB7XG4gICAgICAgIHJldHVybiBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgaHRtbCwgcmVmZXJlbmNlKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZpeFNWRyhwYXJlbnQsIGRpdiwgaHRtbCwgcmVmZXJlbmNlKTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGZpeFNWRyhwYXJlbnQ6IEVsZW1lbnQsIGRpdjogSFRNTEVsZW1lbnQsIGh0bWw6IHN0cmluZywgcmVmZXJlbmNlOiBOb2RlKTogQm91bmRzIHtcbiAgLy8gSUUsIEVkZ2U6IGFsc28gZG8gbm90IGNvcnJlY3RseSBzdXBwb3J0IHVzaW5nIGBpbm5lckhUTUxgIG9uIFNWR1xuICAvLyBuYW1lc3BhY2VkIGVsZW1lbnRzLiBTbyBoZXJlIGEgd3JhcHBlciBpcyB1c2VkLlxuICBsZXQgd3JhcHBlZEh0bWwgPSAnPHN2Zz4nICsgaHRtbCArICc8L3N2Zz4nO1xuXG4gIGRpdi5pbm5lckhUTUwgPSB3cmFwcGVkSHRtbDtcblxuICBsZXQgW2ZpcnN0LCBsYXN0XSA9IG1vdmVOb2Rlc0JlZm9yZShkaXYuZmlyc3RDaGlsZCBhcyBOb2RlLCBwYXJlbnQsIHJlZmVyZW5jZSk7XG4gIHJldHVybiBuZXcgQ29uY3JldGVCb3VuZHMocGFyZW50LCBmaXJzdCwgbGFzdCk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZEFwcGx5Rml4KGRvY3VtZW50OiBEb2N1bWVudCwgc3ZnTmFtZXNwYWNlOiBTVkdfTkFNRVNQQUNFKSB7XG4gIGxldCBzdmcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoc3ZnTmFtZXNwYWNlLCAnc3ZnJyk7XG5cbiAgdHJ5IHtcbiAgICBzdmdbJ2luc2VydEFkamFjZW50SFRNTCddKCdiZWZvcmVFbmQnLCAnPGNpcmNsZT48L2NpcmNsZT4nKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIElFLCBFZGdlOiBXaWxsIHRocm93LCBpbnNlcnRBZGphY2VudEhUTUwgaXMgdW5zdXBwb3J0ZWQgb24gU1ZHXG4gICAgLy8gU2FmYXJpOiBXaWxsIHRocm93LCBpbnNlcnRBZGphY2VudEhUTUwgaXMgbm90IHByZXNlbnQgb24gU1ZHXG4gIH0gZmluYWxseSB7XG4gICAgLy8gRkY6IE9sZCB2ZXJzaW9ucyB3aWxsIGNyZWF0ZSBhIG5vZGUgaW4gdGhlIHdyb25nIG5hbWVzcGFjZVxuICAgIGlmIChzdmcuY2hpbGROb2Rlcy5sZW5ndGggPT09IDEgJiYgc3ZnLmZpcnN0Q2hpbGQubmFtZXNwYWNlVVJJID09PSBTVkdfTkFNRVNQQUNFKSB7XG4gICAgICAvLyBUaGUgdGVzdCB3b3JrZWQgYXMgZXhwZWN0ZWQsIG5vIGZpeCByZXF1aXJlZFxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG4iXX0=

@@ -78,3 +78,3 @@ 'use strict';

get labels() {
return (0, _util.expect)(this.labelsStack.current, 'bug: not in a label stack');
return this.labelsStack.current;
}

@@ -85,3 +85,3 @@ startLabels() {

stopLabels() {
let label = (0, _util.expect)(this.labelsStack.pop(), 'unbalanced push and pop labels');
let label = this.labelsStack.pop();
label.patch(this.program);

@@ -469,2 +469,2 @@ }

exports.default = OpcodeBuilder;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLEFBQU87O0lBQUssQUFBTyxBQUFNLEFBQVcsQUFBQzs7QUFDckMsQUFBTzs7SUFBSyxBQUFFLEFBQU0sQUFBTSxBQUFDOztBQUczQixBQUFPLEFBQUUsQUFBUSxBQUFFLEFBQU0sQUFBZSxBQUFDOztBQUV6QyxBQUFPLEFBQVUsQUFBSyxBQUFVLEFBQUksQUFBRSxBQUFNLEFBQUUsQUFBUyxBQUFFLEFBQVcsQUFBRSxBQUFNLEFBQWUsQUFBQzs7QUFjNUYsQUFBTyxBQUFFLEFBQWdCLEFBQUUsQUFBTSxBQUFnQixBQUFDOztBQUNsRCxBQUFPLEFBQUUsQUFBYyxBQUFxQixBQUFNLEFBQWUsQUFBQzs7QUFDbEUsQUFBTyxBQUFFLEFBQW1CLEFBQUUsQUFBSSxBQUFFLEFBQU0sQUFBd0IsQUFBQzs7OztBQWNuRTtBQUFBO0FBQ0UsYUFBTSxTQUFHLEFBQUksQUFBVSxBQUFDO0FBQ3hCLGFBQU8sVUFBMkQsQUFBRSxBQUFDLEFBZXZFO0FBQUM7QUFiQyxBQUFLLFVBQUMsQUFBWSxNQUFFLEFBQWE7QUFDL0IsQUFBSSxhQUFDLEFBQU0sT0FBQyxBQUFJLEFBQUMsUUFBRyxBQUFLLEFBQUMsQUFDNUI7QUFBQztBQUVELEFBQU0sV0FBQyxBQUFVLElBQUUsQUFBb0IsUUFBRSxBQUFjO0FBQ3JELEFBQUksYUFBQyxBQUFPLFFBQUMsQUFBSSxLQUFDLEVBQUUsQUFBRSxJQUFFLEFBQU0sUUFBRSxBQUFNLEFBQUUsQUFBQyxBQUFDLEFBQzVDO0FBQUM7QUFFRCxBQUFLLFVBQUMsQUFBZ0I7QUFDcEIsQUFBRyxBQUFDLGFBQUMsSUFBSSxFQUFFLEFBQUUsSUFBRSxBQUFNLFFBQUUsQUFBTSxBQUFFLFlBQUksQUFBSSxLQUFDLEFBQU8sQUFBQyxTQUFDLEFBQUM7QUFDaEQsQUFBTyxvQkFBQyxBQUFHLElBQUMsQUFBRSxJ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LEFBQUUsQUFBQyxBQUFDO0FBQ25DLEFBQUksYUFBQyxBQUFrQixtQkFBQyxBQUFRLGtCQUFDLEFBQUUsQUFBQyxBQUFDO0FBQ3JDLEFBQUksYUFBQyxBQUFhLGNBQUMsQUFBSSxBQUFtQixtQ0FBQyxBQUFLLFNBQUksQUFBSyxNQUFDLEFBQUksQUFBRSxBQUFDLEFBQUMsQUFBQztBQUNuRSxBQUFJLGFBQUMsQUFBUSxBQUFFLEFBQUM7QUFFaEIsQUFBSSxhQUFDLEFBQVEsQUFBRSxBQUFDO0FBQ2hCLEFBQUksYUFBQyxBQUFlLEFBQUUsQUFBQztBQUN2QixBQUFJLGFBQUMsQUFBMEIsQUFBRSxBQUFDO0FBRWxDLEFBQUksYUFBQyxBQUFJLEtBQUMsQUFBUSxrQkFBQyxBQUFFLEFBQUMsQUFBQyxBQUN6QjtBQUFDO0FBRUQsQUFBUSxhQUFDLEFBQStDO0FBQ3RELEFBQUUsQUFBQyxZQUFDLENBQUMsQUFBSyxBQUFDLE9BQUMsQUFBTSxPQUFDLEFBQUksQUFBQztBQUN4QixBQUFNLGVBQUMsQUFBSSxBQUFjLDRCQUFDLEFBQUksS0FBQyxBQUFHLEtBQUUsQUFBSSxLQUFDLEFBQUksTUFBRSxBQUFLLE1BQUMsQUFBVSxZQUFFLEFBQUssTUFBQyxBQUFVLEFBQUMsQUFBQyxBQUNyRjtBQUFDLEFBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjb250ZW50IGZyb20gJy4vY29udGVudCc7XG5pbXBvcnQgKiBhcyB2bSBmcm9tICcuL3ZtJztcblxuaW1wb3J0IHsgSW5zZXJ0aW9uIH0gZnJvbSAnLi4vLi4vdXBzZXJ0JztcbmltcG9ydCB7IFJlZ2lzdGVyIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgKiBhcyBXaXJlRm9ybWF0IGZyb20gJ0BnbGltbWVyL3dpcmUtZm9ybWF0JztcbmltcG9ydCB7IE9wdGlvbiwgU3RhY2ssIE9wYXF1ZSwgZGljdCwgZXhwZWN0LCBmaWxsTnVsbHMsIEVNUFRZX0FSUkFZIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQge1xuICBDb25zdGFudHMsXG4gIENvbnN0YW50U3RyaW5nLFxuICBDb25zdGFudEFycmF5LFxuICBDb25zdGFudE90aGVyLFxuICBDb25zdGFudEJsb2NrLFxuICBDb25zdGFudEZ1bmN0aW9uLFxufSBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9jb25zdGFudHMnO1xuaW1wb3J0IHsgTW9kaWZpZXJNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vbW9kaWZpZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBDb21wb25lbnREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50L2ludGVyZmFjZXMnO1xuaW1wb3J0IEVudmlyb25tZW50LCB7IFByb2dyYW0gfSBmcm9tICcuLi8uLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBTeW1ib2xUYWJsZSwgQ29tcGlsYXRpb25NZXRhIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBDb21wb25lbnRCdWlsZGVyIGFzIElDb21wb25lbnRCdWlsZGVyIH0gZnJvbSAnLi4vLi4vb3Bjb2RlLWJ1aWxkZXInO1xuaW1wb3J0IHsgQ29tcG9uZW50QnVpbGRlciB9IGZyb20gJy4uLy4uL2NvbXBpbGVyJztcbmltcG9ydCB7IFJhd0lubGluZUJsb2NrLCBDbGllbnRTaWRlLCBCbG9jayB9IGZyb20gJy4uLy4uL3NjYW5uZXInO1xuaW1wb3J0IHsgSW52b2tlRHluYW1pY0xheW91dCwgZXhwciB9IGZyb20gJy4uLy4uL3N5bnRheC9mdW5jdGlvbnMnO1xuXG5pbXBvcnQgeyBPcCB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBpbGVzSW50bzxFPiB7XG4gIGNvbXBpbGUoYnVpbGRlcjogT3Bjb2RlQnVpbGRlcik6IEU7XG59XG5cbmV4cG9ydCB0eXBlIFJlcHJlc2VudHM8RT4gPSBDb21waWxlc0ludG88RT4gfCBFO1xuXG5leHBvcnQgdHlwZSBMYWJlbCA9IHN0cmluZztcblxudHlwZSBUYXJnZXRPcGNvZGUgPSBPcC5KdW1wIHwgT3AuSnVtcElmIHwgT3AuSnVtcFVubGVzcyB8IE9wLkVudGVyTGlzdCB8IE9wLkl0ZXJhdGUgfCBPcC5JbW1lZGlhdGU7XG5cbmNsYXNzIExhYmVscyB7XG4gIGxhYmVscyA9IGRpY3Q8bnVtYmVyPigpO1xuICB0YXJnZXRzOiB7IGF0OiBudW1iZXIsIFRhcmdldDogVGFyZ2V0T3Bjb2RlLCB0YXJnZXQ6IHN0cmluZyB9W10gPSBbXTtcblxuICBsYWJlbChuYW1lOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmxhYmVsc1tuYW1lXSA9IGluZGV4O1xuICB9XG5cbiAgdGFyZ2V0KGF0OiBudW1iZXIsIFRhcmdldDogVGFyZ2V0T3Bjb2RlLCB0YXJnZXQ6IHN0cmluZykge1xuICAgIHRoaXMudGFyZ2V0cy5wdXNoKHsgYXQsIFRhcmdldCwgdGFyZ2V0IH0pO1xuICB9XG5cbiAgcGF0Y2gob3Bjb2RlczogUHJvZ3JhbSk6IHZvaWQge1xuICAgIGZvciAobGV0IHsgYXQsIFRhcmdldCwgdGFyZ2V0IH0gb2YgdGhpcy50YXJnZXRzKSB7XG4gICAgICBvcGNvZGVzLnNldChhdCwgVGFyZ2V0LCB0aGlzLmxhYmVsc1t0YXJnZXRdKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2ljT3Bjb2RlQnVpbGRlciB7XG4gIHByaXZhdGUgbGFiZWxzU3RhY2sgPSBuZXcgU3RhY2s8TGFiZWxzPigpO1xuICBwdWJsaWMgY29uc3RhbnRzOiBDb25zdGFudHM7XG4gIHB1YmxpYyBzdGFydDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlbnY6IEVudmlyb25tZW50LCBwdWJsaWMgbWV0YTogQ29tcGlsYXRpb25NZXRhLCBwdWJsaWMgcHJvZ3JhbTogUHJvZ3JhbSkge1xuICAgIHRoaXMuY29uc3RhbnRzID0gZW52LmNvbnN0YW50cztcbiAgICB0aGlzLnN0YXJ0ID0gcHJvZ3JhbS5uZXh0O1xuICB9XG5cbiAgYWJzdHJhY3QgY29tcGlsZTxFPihleHByOiBSZXByZXNlbnRzPEU+KTogRTtcblxuICBwcml2YXRlIGdldCBwb3MoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZ3JhbS5jdXJyZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgbmV4dFBvcygpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9ncmFtLm5leHQ7XG4gIH1cblxuICB1cHZhcnM8VCBleHRlbmRzIFtPcGFxdWVdPihjb3VudDogbnVtYmVyKTogVCB7XG4gICAgcmV0dXJuIGZpbGxOdWxscyhjb3VudCkgYXMgVDtcbiAgfVxuXG4gIHJlc2VydmUobmFtZTogT3ApIHtcbiAgICB0aGlzLnB1c2gobmFtZSwgMCwgMCwgMCk7XG4gIH1cblxuICBwdXNoKG5hbWU6IE9wLCBvcDEgPSAwLCBvcDIgPSAwLCBvcDMgPSAwKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZ3JhbS5wdXNoKG5hbWUsIG9wMSwgb3AyLCBvcDMpO1xuICB9XG5cbiAgZmluYWxpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wdXNoKE9wLlJldHVybik7XG4gIH1cblxuICAvLyBhcmdzXG5cbiAgcHVzaEFyZ3MocG9zaXRpb25hbDogbnVtYmVyLCBzeW50aGV0aWM6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnB1c2goT3AuUHVzaEFyZ3MsIHBvc2l0aW9uYWwsIChzeW50aGV0aWMgYXMgYW55KXwwKTtcbiAgfVxuXG4gIC8vIGhlbHBlcnNcblxuICBwcml2YXRlIGdldCBsYWJlbHMoKTogTGFiZWxzIHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXMubGFiZWxzU3RhY2suY3VycmVudCwgJ2J1Zzogbm90IGluIGEgbGFiZWwgc3RhY2snKTtcbiAgfVxuXG4gIHN0YXJ0TGFiZWxzKCkge1xuICAgIHRoaXMubGFiZWxzU3RhY2sucHVzaChuZXcgTGFiZWxzKCkpO1xuICB9XG5cbiAgc3RvcExhYmVscygpIHtcbiAgICBsZXQgbGFiZWwgPSBleHBlY3QodGhpcy5sYWJlbHNTdGFjay5wb3AoKSwgJ3VuYmFsYW5jZWQgcHVzaCBhbmQgcG9wIGxhYmVscycpO1xuICAgIGxhYmVsLnBhdGNoKHRoaXMucHJvZ3JhbSk7XG4gIH1cblxuICAvLyBjb21wb25lbnRzXG5cbiAgcHVzaENvbXBvbmVudE1hbmFnZXIoZGVmaW5pdGlvbjogQ29tcG9uZW50RGVmaW5pdGlvbjxPcGFxdWU+KSB7XG4gICAgdGhpcy5wdXNoKE9wLlB1c2hDb21wb25lbnRNYW5hZ2VyLCB0aGlzLm90aGVyKGRlZmluaXRpb24pKTtcbiAgfVxuXG4gIHB1c2hEeW5hbWljQ29tcG9uZW50TWFuYWdlcigpIHtcbiAgICB0aGlzLnB1c2goT3AuUHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyKTtcbiAgfVxuXG4gIGluaXRpYWxpemVDb21wb25lbnRTdGF0ZSgpIHtcbiAgICB0aGlzLnB1c2goT3AuSW5pdGlhbGl6ZUNvbXBvbmVudFN0YXRlKTtcbiAgfVxuXG4gIHByZXBhcmVBcmdzKHN0YXRlOiBSZWdpc3Rlcikge1xuICAgIHRoaXMucHVzaChPcC5QcmVwYXJlQXJncywgc3RhdGUpO1xuICB9XG5cbiAgY3JlYXRlQ29tcG9uZW50KHN0YXRlOiBSZWdpc3RlciwgaGFzRGVmYXVsdDogYm9vbGVhbiwgaGFzSW52ZXJzZTogYm9vbGVhbikge1xuICAgIGxldCBmbGFnID0gKDxhbnk+aGFzRGVmYXVsdHwwKSB8ICgoPGFueT5oYXNJbnZlcnNlfDApIDw8IDEpO1xuICAgIHRoaXMucHVzaChPcC5DcmVhdGVDb21wb25lbnQsIGZsYWcsIHN0YXRlKTtcbiAgfVxuXG4gIHJlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvcihzdGF0ZTogUmVnaXN0ZXIpIHtcbiAgICB0aGlzLnB1c2goT3AuUmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yLCBzdGF0ZSk7XG4gIH1cblxuICBiZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uKCkge1xuICAgIHRoaXMucHVzaChPcC5CZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uKTtcbiAgfVxuXG4gIGNvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uKCkge1xuICAgIHRoaXMucHVzaChPcC5Db21taXRDb21wb25lbnRUcmFuc2FjdGlvbik7XG4gIH1cblxuICBwdXNoQ29tcG9uZW50T3BlcmF0aW9ucygpIHtcbiAgICB0aGlzLnB1c2goT3AuUHVzaENvbXBvbmVudE9wZXJhdGlvbnMpO1xuICB9XG5cbiAgZ2V0Q29tcG9uZW50U2VsZihzdGF0ZTogUmVnaXN0ZXIpIHtcbiAgICB0aGlzLnB1c2goT3AuR2V0Q29tcG9uZW50U2VsZiwgc3RhdGUpO1xuICB9XG5cbiAgZ2V0Q29tcG9uZW50TGF5b3V0KHN0YXRlOiBSZWdpc3RlciApIHtcbiAgICB0aGlzLnB1c2goT3AuR2V0Q29tcG9uZW50TGF5b3V0LCBzdGF0ZSk7XG4gIH1cblxuICBkaWRDcmVhdGVFbGVtZW50KHN0YXRlOiBSZWdpc3Rlcikge1xuICAgIHRoaXMucHVzaChPcC5EaWRDcmVhdGVFbGVtZW50LCBzdGF0ZSk7XG4gIH1cblxuICBkaWRSZW5kZXJMYXlvdXQoc3RhdGU6IFJlZ2lzdGVyKSB7XG4gICAgdGhpcy5wdXNoKE9wLkRpZFJlbmRlckxheW91dCwgc3RhdGUpO1xuICB9XG5cbiAgLy8gcGFydGlhbFxuXG4gIGdldFBhcnRpYWxUZW1wbGF0ZSgpIHtcbiAgICB0aGlzLnB1c2goT3AuR2V0UGFydGlhbFRlbXBsYXRlKTtcbiAgfVxuXG4gIHJlc29sdmVNYXliZUxvY2FsKG5hbWU6IHN0cmluZykge1xuICAgIHRoaXMucHVzaChPcC5SZXNvbHZlTWF5YmVMb2NhbCwgdGhpcy5zdHJpbmcobmFtZSkpO1xuICB9XG5cbiAgLy8gZGVidWdnZXJcblxuICBkZWJ1Z2dlcihzeW1ib2xzOiBzdHJpbmdbXSwgZXZhbEluZm86IG51bWJlcltdKSB7XG4gICAgdGhpcy5wdXNoKE9wLkRlYnVnZ2VyLCB0aGlzLmNvbnN0YW50cy5vdGhlcihzeW1ib2xzKSwgdGhpcy5jb25zdGFudHMuYXJyYXkoZXZhbEluZm8pKTtcbiAgfVxuXG4gIC8vIGNvbnRlbnRcblxuICBkeW5hbWljQ29udGVudChPcGNvZGU6IGNvbnRlbnQuQXBwZW5kRHluYW1pY09wY29kZTxJbnNlcnRpb24+KSB7XG4gICAgdGhpcy5wdXNoKE9wLkR5bmFtaWNDb250ZW50LCB0aGlzLm90aGVyKE9wY29kZSkpO1xuICB9XG5cbiAgY2F1dGlvdXNBcHBlbmQoKSB7XG4gICAgdGhpcy5keW5hbWljQ29udGVudChuZXcgY29udGVudC5PcHRpbWl6ZWRDYXV0aW91c0FwcGVuZE9wY29kZSgpKTtcbiAgfVxuXG4gIHRydXN0aW5nQXBwZW5kKCkge1xuICAgIHRoaXMuZHluYW1pY0NvbnRlbnQobmV3IGNvbnRlbnQuT3B0aW1pemVkVHJ1c3RpbmdBcHBlbmRPcGNvZGUoKSk7XG4gIH1cblxuICAvLyBkb21cblxuICB0ZXh0KHRleHQ6IHN0cmluZykge1xuICAgIHRoaXMucHVzaChPcC5UZXh0LCB0aGlzLmNvbnN0YW50cy5zdHJpbmcodGV4dCkpO1xuICB9XG5cbiAgb3BlblByaW1pdGl2ZUVsZW1lbnQodGFnOiBzdHJpbmcpIHtcbiAgICB0aGlzLnB1c2goT3AuT3BlbkVsZW1lbnQsIHRoaXMuY29uc3RhbnRzLnN0cmluZyh0YWcpKTtcbiAgfVxuXG4gIG9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnModGFnOiBzdHJpbmcpIHtcbiAgICB0aGlzLnB1c2goT3AuT3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucywgdGhpcy5jb25zdGFudHMuc3RyaW5nKHRhZykpO1xuICB9XG5cbiAgb3BlbkR5bmFtaWNFbGVtZW50KCkge1xuICAgIHRoaXMucHVzaChPcC5PcGVuRHluYW1pY0VsZW1lbnQpO1xuICB9XG5cbiAgZmx1c2hFbGVtZW50KCkge1xuICAgIHRoaXMucHVzaChPcC5GbHVzaEVsZW1lbnQpO1xuICB9XG5cbiAgY2xvc2VFbGVtZW50KCkge1xuICAgIHRoaXMucHVzaChPcC5DbG9zZUVsZW1lbnQpO1xuICB9XG5cbiAgc3RhdGljQXR0cihfbmFtZTogc3RyaW5nLCBfbmFtZXNwYWNlOiBPcHRpb248c3RyaW5nPiwgX3ZhbHVlOiBzdHJpbmcpIHtcbiAgICBsZXQgbmFtZSA9IHRoaXMuY29uc3RhbnRzLnN0cmluZyhfbmFtZSk7XG4gICAgbGV0IG5hbWVzcGFjZSA9IF9uYW1lc3BhY2UgPyB0aGlzLmNvbnN0YW50cy5zdHJpbmcoX25hbWVzcGFjZSkgOiAwO1xuICAgIGxldCB2YWx1ZSA9IHRoaXMuY29uc3RhbnRzLnN0cmluZyhfdmFsdWUpO1xuXG4gICAgdGhpcy5wdXNoKE9wLlN0YXRpY0F0dHIsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UpO1xuICB9XG5cbiAgZHluYW1pY0F0dHJOUyhfbmFtZTogc3RyaW5nLCBfbmFtZXNwYWNlOiBzdHJpbmcsIHRydXN0aW5nOiBib29sZWFuKSB7XG4gICAgbGV0IG5hbWUgPSB0aGlzLmNvbnN0YW50cy5zdHJpbmcoX25hbWUpO1xuICAgIGxldCBuYW1lc3BhY2UgPSB0aGlzLmNvbnN0YW50cy5zdHJpbmcoX25hbWVzcGFjZSk7XG5cbiAgICB0aGlzLnB1c2goT3AuRHluYW1pY0F0dHJOUywgbmFtZSwgbmFtZXNwYWNlLCAodHJ1c3RpbmcgYXMgYW55KXwwKTtcbiAgfVxuXG4gIGR5bmFtaWNBdHRyKF9uYW1lOiBzdHJpbmcsIHRydXN0aW5nOiBib29sZWFuKSB7XG4gICAgbGV0IG5hbWUgPSB0aGlzLmNvbnN0YW50cy5zdHJpbmcoX25hbWUpO1xuICAgIHRoaXMucHVzaChPcC5EeW5hbWljQXR0ciwgbmFtZSwgKHRydXN0aW5nIGFzIGFueSl8MCk7XG4gIH1cblxuICBjb21tZW50KF9jb21tZW50OiBzdHJpbmcpIHtcbiAgICBsZXQgY29tbWVudCA9IHRoaXMuY29uc3RhbnRzLnN0cmluZyhfY29tbWVudCk7XG4gICAgdGhpcy5wdXNoKE9wLkNvbW1lbnQsIGNvbW1lbnQpO1xuICB9XG5cbiAgbW9kaWZpZXIoX2RlZmluaXRpb246IE1vZGlmaWVyTWFuYWdlcjxPcGFxdWU+KSB7XG4gICAgdGhpcy5wdXNoKE9wLk1vZGlmaWVyLCB0aGlzLm90aGVyKF9kZWZpbml0aW9uKSk7XG4gIH1cblxuICAvLyBsaXN0c1xuXG4gIHB1dEl0ZXJhdG9yKCkge1xuICAgIHRoaXMucHVzaChPcC5QdXRJdGVyYXRvcik7XG4gIH1cblxuICBlbnRlckxpc3Qoc3RhcnQ6IHN0cmluZykge1xuICAgIHRoaXMucmVzZXJ2ZShPcC5FbnRlckxpc3QpO1xuICAgIHRoaXMubGFiZWxzLnRhcmdldCh0aGlzLnBvcywgT3AuRW50ZXJMaXN0LCBzdGFydCk7XG4gIH1cblxuICBleGl0TGlzdCgpIHtcbiAgICB0aGlzLnB1c2goT3AuRXhpdExpc3QpO1xuICB9XG5cbiAgaXRlcmF0ZShicmVha3M6IHN0cmluZykge1xuICAgIHRoaXMucmVzZXJ2ZShPcC5JdGVyYXRlKTtcbiAgICB0aGlzLmxhYmVscy50YXJnZXQodGhpcy5wb3MsIE9wLkl0ZXJhdGUsIGJyZWFrcyk7XG4gIH1cblxuICAvLyBleHByZXNzaW9uc1xuXG4gIHNldFZhcmlhYmxlKHN5bWJvbDogbnVtYmVyKSB7XG4gICAgdGhpcy5wdXNoKE9wLlNldFZhcmlhYmxlLCBzeW1ib2wpO1xuICB9XG5cbiAgZ2V0VmFyaWFibGUoc3ltYm9sOiBudW1iZXIpIHtcbiAgICB0aGlzLnB1c2goT3AuR2V0VmFyaWFibGUsIHN5bWJvbCk7XG4gIH1cblxuICBnZXRQcm9wZXJ0eShrZXk6IHN0cmluZykge1xuICAgIHRoaXMucHVzaChPcC5HZXRQcm9wZXJ0eSwgdGhpcy5zdHJpbmcoa2V5KSk7XG4gIH1cblxuICBnZXRCbG9jayhzeW1ib2w6IG51bWJlcikge1xuICAgIHRoaXMucHVzaChPcC5HZXRCbG9jaywgc3ltYm9sKTtcbiAgfVxuXG4gIGhhc0Jsb2NrKHN5bWJvbDogbnVtYmVyKSB7XG4gICAgdGhpcy5wdXNoKE9wLkhhc0Jsb2NrLCBzeW1ib2wpO1xuICB9XG5cbiAgaGFzQmxvY2tQYXJhbXMoc3ltYm9sOiBudW1iZXIpIHtcbiAgICB0aGlzLnB1c2goT3AuSGFzQmxvY2tQYXJhbXMsIHN5bWJvbCk7XG4gIH1cblxuICBjb25jYXQoc2l6ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5wdXNoKE9wLkNvbmNhdCwgc2l6ZSk7XG4gIH1cblxuICBmdW5jdGlvbihmOiBDbGllbnRTaWRlLkZ1bmN0aW9uRXhwcmVzc2lvbkNhbGxiYWNrPE9wYXF1ZT4pIHtcbiAgICB0aGlzLnB1c2goT3AuRnVuY3Rpb24sIHRoaXMuZnVuYyhmKSk7XG4gIH1cblxuICBsb2FkKHJlZ2lzdGVyOiBSZWdpc3Rlcikge1xuICAgIHRoaXMucHVzaChPcC5Mb2FkLCByZWdpc3Rlcik7XG4gIH1cblxuICBmZXRjaChyZWdpc3RlcjogUmVnaXN0ZXIpIHtcbiAgICB0aGlzLnB1c2goT3AuRmV0Y2gsIHJlZ2lzdGVyKTtcbiAgfVxuXG4gIGR1cChyZWdpc3RlciA9IFJlZ2lzdGVyLnNwLCBvZmZzZXQgPSAwKSB7XG4gICAgcmV0dXJuIHRoaXMucHVzaChPcC5EdXAsIHJlZ2lzdGVyLCBvZmZzZXQpO1xuICB9XG5cbiAgcG9wKGNvdW50ID0gMSkge1xuICAgIHJldHVybiB0aGlzLnB1c2goT3AuUG9wLCBjb3VudCk7XG4gIH1cblxuICAvLyB2bVxuXG4gIHB1c2hSZW1vdGVFbGVtZW50KCkge1xuICAgIHRoaXMucHVzaChPcC5QdXNoUmVtb3RlRWxlbWVudCk7XG4gIH1cblxuICBwb3BSZW1vdGVFbGVtZW50KCkge1xuICAgIHRoaXMucHVzaChPcC5Qb3BSZW1vdGVFbGVtZW50KTtcbiAgfVxuXG4gIGxhYmVsKG5hbWU6IHN0cmluZykge1xuICAgIHRoaXMubGFiZWxzLmxhYmVsKG5hbWUsIHRoaXMubmV4dFBvcyk7XG4gIH1cblxuICBwdXNoUm9vdFNjb3BlKHN5bWJvbHM6IG51bWJlciwgYmluZENhbGxlclNjb3BlOiBib29sZWFuKSB7XG4gICAgdGhpcy5wdXNoKE9wLlJvb3RTY29wZSwgc3ltYm9scywgPGFueT5iaW5kQ2FsbGVyU2NvcGV8MCk7XG4gIH1cblxuICBwdXNoQ2hpbGRTY29wZSgpIHtcbiAgICB0aGlzLnB1c2goT3AuQ2hpbGRTY29wZSk7XG4gIH1cblxuICBwb3BTY29wZSgpIHtcbiAgICB0aGlzLnB1c2goT3AuUG9wU2NvcGUpO1xuICB9XG5cbiAgcmV0dXJuVG8obGFiZWw6IHN0cmluZykge1xuICAgIHRoaXMucmVzZXJ2ZShPcC5JbW1lZGlhdGUpO1xuICAgIHRoaXMubGFiZWxzLnRhcmdldCh0aGlzLnBvcywgT3AuSW1tZWRpYXRlLCBsYWJlbCk7XG4gICAgdGhpcy5sb2FkKFJlZ2lzdGVyLnJhKTtcbiAgfVxuXG4gIHB1c2hEeW5hbWljU2NvcGUoKSB7XG4gICAgdGhpcy5wdXNoKE9wLlB1c2hEeW5hbWljU2NvcGUpO1xuICB9XG5cbiAgcG9wRHluYW1pY1Njb3BlKCkge1xuICAgIHRoaXMucHVzaChPcC5Qb3BEeW5hbWljU2NvcGUpO1xuICB9XG5cbiAgcHVzaEltbWVkaWF0ZTxUPih2YWx1ZTogVCkge1xuICAgIHRoaXMucHVzaChPcC5Db25zdGFudCwgdGhpcy5vdGhlcih2YWx1ZSkpO1xuICB9XG5cbiAgcHJpbWl0aXZlKF9wcmltaXRpdmU6IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQgfCBib29sZWFuKSB7XG4gICAgbGV0IGZsYWc6IDAgfCAxIHwgMiA9IDA7XG4gICAgbGV0IHByaW1pdGl2ZTogbnVtYmVyO1xuICAgIHN3aXRjaCAodHlwZW9mIF9wcmltaXRpdmUpIHtcbiAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgIHByaW1pdGl2ZSA9IF9wcmltaXRpdmUgYXMgbnVtYmVyO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgIHByaW1pdGl2ZSA9IHRoaXMuc3RyaW5nKF9wcmltaXRpdmUgYXMgc3RyaW5nKTtcbiAgICAgICAgZmxhZyA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgIHByaW1pdGl2ZSA9IChfcHJpbWl0aXZlIGFzIGFueSkgfCAwO1xuICAgICAgICBmbGFnID0gMjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICAvLyBhc3N1bWUgbnVsbFxuICAgICAgICBwcmltaXRpdmUgPSAyO1xuICAgICAgICBmbGFnID0gMjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd1bmRlZmluZWQnOlxuICAgICAgICBwcmltaXRpdmUgPSAzO1xuICAgICAgICBmbGFnID0gMjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcHJpbWl0aXZlIHBhc3NlZCB0byBwdXNoUHJpbWl0aXZlJyk7XG4gICAgfVxuXG4gICAgdGhpcy5wdXNoKE9wLlByaW1pdGl2ZVJlZmVyZW5jZSwgKGZsYWcgPDwgMzApIHwgcHJpbWl0aXZlKTtcbiAgfVxuXG4gIGhlbHBlcihmdW5jOiBGdW5jdGlvbikge1xuICAgIHRoaXMucHVzaChPcC5IZWxwZXIsIHRoaXMuZnVuYyhmdW5jKSk7XG4gIH1cblxuICBwdXNoQmxvY2soYmxvY2s6IE9wdGlvbjxCbG9jaz4pIHtcbiAgICB0aGlzLnB1c2goT3AuUHVzaEJsb2NrLCB0aGlzLmJsb2NrKGJsb2NrKSk7XG4gIH1cblxuICBiaW5kRHluYW1pY1Njb3BlKF9uYW1lczogc3RyaW5nW10pIHtcbiAgICB0aGlzLnB1c2goT3AuQmluZER5bmFtaWNTY29wZSwgdGhpcy5uYW1lcyhfbmFtZXMpKTtcbiAgfVxuXG4gIGVudGVyKGFyZ3M6IG51bWJlcikge1xuICAgIHRoaXMucHVzaChPcC5FbnRlciwgYXJncyk7XG4gIH1cblxuICBleGl0KCkge1xuICAgIHRoaXMucHVzaChPcC5FeGl0KTtcbiAgfVxuXG4gIHJldHVybigpIHtcbiAgICB0aGlzLnB1c2goT3AuUmV0dXJuKTtcbiAgfVxuXG4gIHB1c2hGcmFtZSgpIHtcbiAgICB0aGlzLnB1c2goT3AuUHVzaEZyYW1lKTtcbiAgfVxuXG4gIHBvcEZyYW1lKCkge1xuICAgIHRoaXMucHVzaChPcC5Qb3BGcmFtZSk7XG4gIH1cblxuICBjb21waWxlRHluYW1pY0Jsb2NrKCk6IHZvaWQge1xuICAgIHRoaXMucHVzaChPcC5Db21waWxlRHluYW1pY0Jsb2NrKTtcbiAgfVxuXG4gIGludm9rZUR5bmFtaWMoaW52b2tlcjogdm0uRHluYW1pY0ludm9rZXI8U3ltYm9sVGFibGU+KTogdm9pZCB7XG4gICAgdGhpcy5wdXNoKE9wLkludm9rZUR5bmFtaWMsIHRoaXMub3RoZXIoaW52b2tlcikpO1xuICB9XG5cbiAgaW52b2tlU3RhdGljKGJsb2NrOiBCbG9jaywgY2FsbGVyQ291bnQgPSAwKTogdm9pZCB7XG4gICAgbGV0IHsgcGFyYW1ldGVycyB9ID0gYmxvY2suc3ltYm9sVGFibGU7XG4gICAgbGV0IGNhbGxlZUNvdW50ID0gcGFyYW1ldGVycy5sZW5ndGg7XG4gICAgbGV0IGNvdW50ID0gTWF0aC5taW4oY2FsbGVyQ291bnQsIGNhbGxlZUNvdW50KTtcblxuICAgIHRoaXMucHVzaEZyYW1lKCk7XG5cbiAgICBpZiAoY291bnQpIHtcbiAgICAgIHRoaXMucHVzaENoaWxkU2NvcGUoKTtcblxuICAgICAgZm9yIChsZXQgaT0wOyBpPGNvdW50OyBpKyspIHtcbiAgICAgICAgdGhpcy5kdXAoUmVnaXN0ZXIuZnAsIGNhbGxlckNvdW50IC0gaSk7XG4gICAgICAgIHRoaXMuc2V0VmFyaWFibGUocGFyYW1ldGVyc1tpXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IF9ibG9jayA9IHRoaXMuY29uc3RhbnRzLmJsb2NrKGJsb2NrKTtcbiAgICB0aGlzLnB1c2goT3AuSW52b2tlU3RhdGljLCBfYmxvY2spO1xuXG4gICAgaWYgKGNvdW50KSB7XG4gICAgICB0aGlzLnBvcFNjb3BlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5wb3BGcmFtZSgpO1xuICB9XG5cbiAgdGVzdCh0ZXN0RnVuYzogJ2NvbnN0JyB8ICdzaW1wbGUnIHwgJ2Vudmlyb25tZW50JyB8IHZtLlRlc3RGdW5jdGlvbikge1xuICAgIGxldCBfZnVuYzogdm0uVGVzdEZ1bmN0aW9uO1xuXG4gICAgaWYgKHRlc3RGdW5jID09PSAnY29uc3QnKSB7XG4gICAgICBfZnVuYyA9IHZtLkNvbnN0VGVzdDtcbiAgICB9IGVsc2UgaWYgKHRlc3RGdW5jID09PSAnc2ltcGxlJykge1xuICAgICAgX2Z1bmMgPSB2bS5TaW1wbGVUZXN0O1xuICAgIH0gZWxzZSBpZiAodGVzdEZ1bmMgPT09ICdlbnZpcm9ubWVudCcpIHtcbiAgICAgIF9mdW5jID0gdm0uRW52aXJvbm1lbnRUZXN0O1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHRlc3RGdW5jID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBfZnVuYyA9IHRlc3RGdW5jO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VucmVhY2hhYmxlJyk7XG4gICAgfVxuXG4gICAgbGV0IGZ1bmMgPSB0aGlzLmNvbnN0YW50cy5mdW5jdGlvbihfZnVuYyk7XG4gICAgdGhpcy5wdXNoKE9wLlRlc3QsIGZ1bmMpO1xuICB9XG5cbiAganVtcCh0YXJnZXQ6IHN0cmluZykge1xuICAgIHRoaXMucmVzZXJ2ZShPcC5KdW1wKTtcbiAgICB0aGlzLmxhYmVscy50YXJnZXQodGhpcy5wb3MsIE9wLkp1bXAsIHRhcmdldCk7XG4gIH1cblxuICBqdW1wSWYodGFyZ2V0OiBzdHJpbmcpIHtcbiAgICB0aGlzLnJlc2VydmUoT3AuSnVtcElmKTtcbiAgICB0aGlzLmxhYmVscy50YXJnZXQodGhpcy5wb3MsIE9wLkp1bXBJZiwgdGFyZ2V0KTtcbiAgfVxuXG4gIGp1bXBVbmxlc3ModGFyZ2V0OiBzdHJpbmcpIHtcbiAgICB0aGlzLnJlc2VydmUoT3AuSnVtcFVubGVzcyk7XG4gICAgdGhpcy5sYWJlbHMudGFyZ2V0KHRoaXMucG9zLCBPcC5KdW1wVW5sZXNzLCB0YXJnZXQpO1xuICB9XG5cbiAgc3RyaW5nKF9zdHJpbmc6IHN0cmluZyk6IENvbnN0YW50U3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb25zdGFudHMuc3RyaW5nKF9zdHJpbmcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG5hbWVzKF9uYW1lczogc3RyaW5nW10pOiBDb25zdGFudEFycmF5IHtcbiAgICBsZXQgbmFtZXMgPSBfbmFtZXMubWFwKG4gPT4gdGhpcy5jb25zdGFudHMuc3RyaW5nKG4pKTtcbiAgICByZXR1cm4gdGhpcy5jb25zdGFudHMuYXJyYXkobmFtZXMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN5bWJvbHMoc3ltYm9sczogbnVtYmVyW10pOiBDb25zdGFudEFycmF5IHtcbiAgICByZXR1cm4gdGhpcy5jb25zdGFudHMuYXJyYXkoc3ltYm9scyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3RoZXIodmFsdWU6IE9wYXF1ZSk6IENvbnN0YW50T3RoZXIge1xuICAgIHJldHVybiB0aGlzLmNvbnN0YW50cy5vdGhlcih2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYmxvY2soYmxvY2s6IE9wdGlvbjxCbG9jaz4pOiBDb25zdGFudEJsb2NrIHtcbiAgICByZXR1cm4gYmxvY2sgPyB0aGlzLmNvbnN0YW50cy5ibG9jayhibG9jaykgOiAwO1xuICB9XG5cbiAgcHJvdGVjdGVkIGZ1bmMoZnVuYzogRnVuY3Rpb24pOiBDb25zdGFudEZ1bmN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5jb25zdGFudHMuZnVuY3Rpb24oZnVuYyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNDb21waWxhYmxlRXhwcmVzc2lvbjxFPihleHByOiBSZXByZXNlbnRzPEU+KTogZXhwciBpcyBDb21waWxlc0ludG88RT4ge1xuICByZXR1cm4gZXhwciAmJiB0eXBlb2YgZXhwclsnY29tcGlsZSddID09PSAnZnVuY3Rpb24nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBPcGNvZGVCdWlsZGVyIGV4dGVuZHMgQmFzaWNPcGNvZGVCdWlsZGVyIHtcbiAgcHVibGljIGNvbXBvbmVudDogSUNvbXBvbmVudEJ1aWxkZXI7XG5cbiAgY29uc3RydWN0b3IoZW52OiBFbnZpcm9ubWVudCwgbWV0YTogQ29tcGlsYXRpb25NZXRhLCBwcm9ncmFtOiBQcm9ncmFtID0gZW52LnByb2dyYW0pIHtcbiAgICBzdXBlcihlbnYsIG1ldGEsIHByb2dyYW0pO1xuICAgIHRoaXMuY29tcG9uZW50ID0gbmV3IENvbXBvbmVudEJ1aWxkZXIodGhpcyk7XG4gIH1cblxuICBjb21waWxlQXJncyhwYXJhbXM6IE9wdGlvbjxXaXJlRm9ybWF0LkNvcmUuUGFyYW1zPiwgaGFzaDogT3B0aW9uPFdpcmVGb3JtYXQuQ29yZS5IYXNoPiwgc3ludGhldGljOiBib29sZWFuKSB7XG4gICAgbGV0IHBvc2l0aW9uYWwgPSAwO1xuXG4gICAgaWYgKHBhcmFtcykge1xuICAgICAgcGFyYW1zLmZvckVhY2gocCA9PiBleHByKHAsIHRoaXMpKTtcbiAgICAgIHBvc2l0aW9uYWwgPSBwYXJhbXMubGVuZ3RoO1xuICAgIH1cblxuICAgIGxldCBuYW1lcyA9IEVNUFRZX0FSUkFZO1xuXG4gICAgaWYgKGhhc2gpIHtcbiAgICAgIG5hbWVzID0gaGFzaFswXTtcbiAgICAgIGhhc2hbMV0uZm9yRWFjaCh2ID0+IGV4cHIodiwgdGhpcykpO1xuICAgIH1cblxuICAgIHRoaXMucHVzaEltbWVkaWF0ZShuYW1lcyk7XG4gICAgdGhpcy5wdXNoQXJncyhwb3NpdGlvbmFsLCBzeW50aGV0aWMpO1xuICB9XG5cbiAgY29tcGlsZTxFPihleHByOiBSZXByZXNlbnRzPEU+KTogRSB7XG4gICAgaWYgKGlzQ29tcGlsYWJsZUV4cHJlc3Npb24oZXhwcikpIHtcbiAgICAgIHJldHVybiBleHByLmNvbXBpbGUodGhpcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBleHByO1xuICAgIH1cbiAgfVxuXG4gIGd1YXJkZWRDYXV0aW91c0FwcGVuZChleHByZXNzaW9uOiBXaXJlRm9ybWF0LkV4cHJlc3Npb24pIHtcbiAgICBleHByKGV4cHJlc3Npb24sIHRoaXMpO1xuICAgIHRoaXMuZHluYW1pY0NvbnRlbnQobmV3IGNvbnRlbnQuR3VhcmRlZENhdXRpb3VzQXBwZW5kT3Bjb2RlKCkpO1xuICB9XG5cbiAgZ3VhcmRlZFRydXN0aW5nQXBwZW5kKGV4cHJlc3Npb246IFdpcmVGb3JtYXQuRXhwcmVzc2lvbikge1xuICAgIGV4cHIoZXhwcmVzc2lvbiwgdGhpcyk7XG4gICAgdGhpcy5keW5hbWljQ29udGVudChuZXcgY29udGVudC5HdWFyZGVkVHJ1c3RpbmdBcHBlbmRPcGNvZGUoKSk7XG4gIH1cblxuICBpbnZva2VDb21wb25lbnQoYXR0cnM6IE9wdGlvbjxSYXdJbmxpbmVCbG9jaz4sIHBhcmFtczogT3B0aW9uPFdpcmVGb3JtYXQuQ29yZS5QYXJhbXM+LCBoYXNoOiBPcHRpb248V2lyZUZvcm1hdC5Db3JlLkhhc2g+LCBibG9jazogT3B0aW9uPEJsb2NrPiwgaW52ZXJzZTogT3B0aW9uPEJsb2NrPiA9IG51bGwpIHtcbiAgICB0aGlzLmluaXRpYWxpemVDb21wb25lbnRTdGF0ZSgpO1xuXG4gICAgdGhpcy5mZXRjaChSZWdpc3Rlci5zMCk7XG4gICAgdGhpcy5kdXAoUmVnaXN0ZXIuc3AsIDEpO1xuICAgIHRoaXMubG9hZChSZWdpc3Rlci5zMCk7XG5cbiAgICB0aGlzLnB1c2hCbG9jayhibG9jayk7XG4gICAgdGhpcy5wdXNoQmxvY2soaW52ZXJzZSk7XG5cbiAgICB0aGlzLmNvbXBpbGVBcmdzKHBhcmFtcywgaGFzaCwgZmFsc2UpO1xuICAgIHRoaXMucHJlcGFyZUFyZ3MoUmVnaXN0ZXIuczApO1xuXG4gICAgdGhpcy5iZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uKCk7XG4gICAgdGhpcy5wdXNoRHluYW1pY1Njb3BlKCk7XG4gICAgdGhpcy5jcmVhdGVDb21wb25lbnQoUmVnaXN0ZXIuczAsIHRydWUsIGludmVyc2UgPT09IG51bGwpO1xuICAgIHRoaXMucmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yKFJlZ2lzdGVyLnMwKTtcblxuICAgIHRoaXMuZ2V0Q29tcG9uZW50U2VsZihSZWdpc3Rlci5zMCk7XG4gICAgdGhpcy5nZXRDb21wb25lbnRMYXlvdXQoUmVnaXN0ZXIuczApO1xuICAgIHRoaXMuaW52b2tlRHluYW1pYyhuZXcgSW52b2tlRHluYW1pY0xheW91dChhdHRycyAmJiBhdHRycy5zY2FuKCkpKTtcbiAgICB0aGlzLnBvcEZyYW1lKCk7XG5cbiAgICB0aGlzLnBvcFNjb3BlKCk7XG4gICAgdGhpcy5wb3BEeW5hbWljU2NvcGUoKTtcbiAgICB0aGlzLmNvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uKCk7XG5cbiAgICB0aGlzLmxvYWQoUmVnaXN0ZXIuczApO1xuICB9XG5cbiAgdGVtcGxhdGUoYmxvY2s6IE9wdGlvbjxXaXJlRm9ybWF0LlNlcmlhbGl6ZWRJbmxpbmVCbG9jaz4pOiBPcHRpb248UmF3SW5saW5lQmxvY2s+IHtcbiAgICBpZiAoIWJsb2NrKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gbmV3IFJhd0lubGluZUJsb2NrKHRoaXMuZW52LCB0aGlzLm1ldGEsIGJsb2NrLnN0YXRlbWVudHMsIGJsb2NrLnBhcmFtZXRlcnMpO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIEJsb2NrQ2FsbGJhY2sgPSAoZHNsOiBPcGNvZGVCdWlsZGVyLCBCRUdJTjogTGFiZWwsIEVORDogTGFiZWwpID0+IHZvaWQ7XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLEFBQU87O0lBQUssQUFBTyxBQUFNLEFBQVcsQUFBQzs7QUFDckMsQUFBTzs7SUFBSyxBQUFFLEFBQU0sQUFBTSxBQUFDOztBQUczQixBQUFPLEFBQUUsQUFBUSxBQUFFLEFBQU0sQUFBZSxBQUFDOztBQUV6QyxBQUFPLEFBQVUsQUFBSyxBQUFVLEFBQUksQUFBRSxBQUFTLEFBQUUsQUFBVyxBQUFFLEFBQU0sQUFBZSxBQUFDOztBQWNwRixBQUFPLEFBQUUsQUFBZ0IsQUFBRSxBQUFNLEFBQWdCLEFBQUM7O0FBQ2xELEFBQU8sQUFBRSxBQUFjLEFBQXFCLEFBQU0sQUFBZSxBQUFDOztBQUNsRSxBQUFPLEFBQUUsQUFBbUIsQUFBRSxBQUFJLEFBQUUsQUFBTSxBQUF3QixBQUFDOzs7O0FBY25FO0FBQUE7QUFDRSxhQUFNLFNBQUcsQUFBSSxBQUFVLEFBQUM7QUFDeEIsYUFBTyxVQUEyRCxBQUFFLEFBQUMsQUFldkU7QUFBQztBQWJDLEFBQUssVUFBQyxBQUFZLE1BQUUsQUFBYTtBQUMvQixBQUFJLGFBQUMsQUFBTSxPQUFDLEFBQUksQUFBQyxRQUFHLEFBQUssQUFBQyxBQUM1QjtBQUFDO0FBRUQsQUFBTSxXQUFDLEFBQVUsSUFBRSxBQUFvQixRQUFFLEFBQWM7QUFDckQsQUFBSSxhQUFDLEFBQU8sUUFBQyxBQUFJLEtBQUMsRUFBRSxBQUFFLElBQUUsQUFBTSxRQUFFLEFBQU0sQUFBRSxBQUFDLEFBQUMsQUFDNUM7QUFBQztBQUVELEFBQUssVUFBQyxBQUFnQjtBQUNwQixBQUFHLEFBQUMsYUFBQyxJQUFJLEVBQUUsQUFBRSxJQUFFLEFBQU0sUUFBRSxBQUFNLEFBQUUsWUFBSSxBQUFJLEtBQUMsQUFBTyxBQUFDLFNBQUMsQUFBQztBQUNoRCxBQUFPLG9CQUFDLEFBQUcsSUFBQyxBQUFFLElBQUUsQUFBTSxR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LEFBQUM7QUFDckMsQUFBSSxhQUFDLEFBQWEsY0FBQyxBQUFJLEFBQW1CLG1DQUFDLEFBQUssU0FBSSxBQUFLLE1BQUMsQUFBSSxBQUFFLEFBQUMsQUFBQyxBQUFDO0FBQ25FLEFBQUksYUFBQyxBQUFRLEFBQUUsQUFBQztBQUVoQixBQUFJLGFBQUMsQUFBUSxBQUFFLEFBQUM7QUFDaEIsQUFBSSxhQUFDLEFBQWUsQUFBRSxBQUFDO0FBQ3ZCLEFBQUksYUFBQyxBQUEwQixBQUFFLEFBQUM7QUFFbEMsQUFBSSxhQUFDLEFBQUksS0FBQyxBQUFRLGtCQUFDLEFBQUUsQUFBQyxBQUFDLEFBQ3pCO0FBQUM7QUFFRCxBQUFRLGFBQUMsQUFBK0M7QUFDdEQsQUFBRSxBQUFDLFlBQUMsQ0FBQyxBQUFLLEFBQUMsT0FBQyxBQUFNLE9BQUMsQUFBSSxBQUFDO0FBQ3hCLEFBQU0sZUFBQyxBQUFJLEFBQWMsNEJBQUMsQUFBSSxLQUFDLEFBQUcsS0FBRSxBQUFJLEtBQUMsQUFBSSxNQUFFLEFBQUssTUFBQyxBQUFVLFlBQUUsQUFBSyxNQUFDLEFBQVUsQUFBQyxBQUFDLEFBQ3JGO0FBQUMsQUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNvbnRlbnQgZnJvbSAnLi9jb250ZW50JztcbmltcG9ydCAqIGFzIHZtIGZyb20gJy4vdm0nO1xuXG5pbXBvcnQgeyBJbnNlcnRpb24gfSBmcm9tICcuLi8uLi91cHNlcnQnO1xuaW1wb3J0IHsgUmVnaXN0ZXIgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCAqIGFzIFdpcmVGb3JtYXQgZnJvbSAnQGdsaW1tZXIvd2lyZS1mb3JtYXQnO1xuaW1wb3J0IHsgT3B0aW9uLCBTdGFjaywgT3BhcXVlLCBkaWN0LCBmaWxsTnVsbHMsIEVNUFRZX0FSUkFZIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQge1xuICBDb25zdGFudHMsXG4gIENvbnN0YW50U3RyaW5nLFxuICBDb25zdGFudEFycmF5LFxuICBDb25zdGFudE90aGVyLFxuICBDb25zdGFudEJsb2NrLFxuICBDb25zdGFudEZ1bmN0aW9uLFxufSBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9jb25zdGFudHMnO1xuaW1wb3J0IHsgTW9kaWZpZXJNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vbW9kaWZpZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBDb21wb25lbnREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50L2ludGVyZmFjZXMnO1xuaW1wb3J0IEVudmlyb25tZW50LCB7IFByb2dyYW0gfSBmcm9tICcuLi8uLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBTeW1ib2xUYWJsZSwgQ29tcGlsYXRpb25NZXRhIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBDb21wb25lbnRCdWlsZGVyIGFzIElDb21wb25lbnRCdWlsZGVyIH0gZnJvbSAnLi4vLi4vb3Bjb2RlLWJ1aWxkZXInO1xuaW1wb3J0IHsgQ29tcG9uZW50QnVpbGRlciB9IGZyb20gJy4uLy4uL2NvbXBpbGVyJztcbmltcG9ydCB7IFJhd0lubGluZUJsb2NrLCBDbGllbnRTaWRlLCBCbG9jayB9IGZyb20gJy4uLy4uL3NjYW5uZXInO1xuaW1wb3J0IHsgSW52b2tlRHluYW1pY0xheW91dCwgZXhwciB9IGZyb20gJy4uLy4uL3N5bnRheC9mdW5jdGlvbnMnO1xuXG5pbXBvcnQgeyBPcCB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBpbGVzSW50bzxFPiB7XG4gIGNvbXBpbGUoYnVpbGRlcjogT3Bjb2RlQnVpbGRlcik6IEU7XG59XG5cbmV4cG9ydCB0eXBlIFJlcHJlc2VudHM8RT4gPSBDb21waWxlc0ludG88RT4gfCBFO1xuXG5leHBvcnQgdHlwZSBMYWJlbCA9IHN0cmluZztcblxudHlwZSBUYXJnZXRPcGNvZGUgPSBPcC5KdW1wIHwgT3AuSnVtcElmIHwgT3AuSnVtcFVubGVzcyB8IE9wLkVudGVyTGlzdCB8IE9wLkl0ZXJhdGUgfCBPcC5JbW1lZGlhdGU7XG5cbmNsYXNzIExhYmVscyB7XG4gIGxhYmVscyA9IGRpY3Q8bnVtYmVyPigpO1xuICB0YXJnZXRzOiB7IGF0OiBudW1iZXIsIFRhcmdldDogVGFyZ2V0T3Bjb2RlLCB0YXJnZXQ6IHN0cmluZyB9W10gPSBbXTtcblxuICBsYWJlbChuYW1lOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmxhYmVsc1tuYW1lXSA9IGluZGV4O1xuICB9XG5cbiAgdGFyZ2V0KGF0OiBudW1iZXIsIFRhcmdldDogVGFyZ2V0T3Bjb2RlLCB0YXJnZXQ6IHN0cmluZykge1xuICAgIHRoaXMudGFyZ2V0cy5wdXNoKHsgYXQsIFRhcmdldCwgdGFyZ2V0IH0pO1xuICB9XG5cbiAgcGF0Y2gob3Bjb2RlczogUHJvZ3JhbSk6IHZvaWQge1xuICAgIGZvciAobGV0IHsgYXQsIFRhcmdldCwgdGFyZ2V0IH0gb2YgdGhpcy50YXJnZXRzKSB7XG4gICAgICBvcGNvZGVzLnNldChhdCwgVGFyZ2V0LCB0aGlzLmxhYmVsc1t0YXJnZXRdKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2ljT3Bjb2RlQnVpbGRlciB7XG4gIHByaXZhdGUgbGFiZWxzU3RhY2sgPSBuZXcgU3RhY2s8TGFiZWxzPigpO1xuICBwdWJsaWMgY29uc3RhbnRzOiBDb25zdGFudHM7XG4gIHB1YmxpYyBzdGFydDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlbnY6IEVudmlyb25tZW50LCBwdWJsaWMgbWV0YTogQ29tcGlsYXRpb25NZXRhLCBwdWJsaWMgcHJvZ3JhbTogUHJvZ3JhbSkge1xuICAgIHRoaXMuY29uc3RhbnRzID0gZW52LmNvbnN0YW50cztcbiAgICB0aGlzLnN0YXJ0ID0gcHJvZ3JhbS5uZXh0O1xuICB9XG5cbiAgYWJzdHJhY3QgY29tcGlsZTxFPihleHByOiBSZXByZXNlbnRzPEU+KTogRTtcblxuICBwcml2YXRlIGdldCBwb3MoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZ3JhbS5jdXJyZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgbmV4dFBvcygpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9ncmFtLm5leHQ7XG4gIH1cblxuICB1cHZhcnM8VCBleHRlbmRzIFtPcGFxdWVdPihjb3VudDogbnVtYmVyKTogVCB7XG4gICAgcmV0dXJuIGZpbGxOdWxscyhjb3VudCkgYXMgVDtcbiAgfVxuXG4gIHJlc2VydmUobmFtZTogT3ApIHtcbiAgICB0aGlzLnB1c2gobmFtZSwgMCwgMCwgMCk7XG4gIH1cblxuICBwdXNoKG5hbWU6IE9wLCBvcDEgPSAwLCBvcDIgPSAwLCBvcDMgPSAwKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZ3JhbS5wdXNoKG5hbWUsIG9wMSwgb3AyLCBvcDMpO1xuICB9XG5cbiAgZmluYWxpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wdXNoKE9wLlJldHVybik7XG4gIH1cblxuICAvLyBhcmdzXG5cbiAgcHVzaEFyZ3MocG9zaXRpb25hbDogbnVtYmVyLCBzeW50aGV0aWM6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnB1c2goT3AuUHVzaEFyZ3MsIHBvc2l0aW9uYWwsIChzeW50aGV0aWMgYXMgYW55KXwwKTtcbiAgfVxuXG4gIC8vIGhlbHBlcnNcblxuICBwcml2YXRlIGdldCBsYWJlbHMoKTogTGFiZWxzIHtcbiAgICByZXR1cm4gdGhpcy5sYWJlbHNTdGFjay5jdXJyZW50O1xuICB9XG5cbiAgc3RhcnRMYWJlbHMoKSB7XG4gICAgdGhpcy5sYWJlbHNTdGFjay5wdXNoKG5ldyBMYWJlbHMoKSk7XG4gIH1cblxuICBzdG9wTGFiZWxzKCkge1xuICAgIGxldCBsYWJlbCA9IHRoaXMubGFiZWxzU3RhY2sucG9wKCk7XG4gICAgbGFiZWwucGF0Y2godGhpcy5wcm9ncmFtKTtcbiAgfVxuXG4gIC8vIGNvbXBvbmVudHNcblxuICBwdXNoQ29tcG9uZW50TWFuYWdlcihkZWZpbml0aW9uOiBDb21wb25lbnREZWZpbml0aW9uPE9wYXF1ZT4pIHtcbiAgICB0aGlzLnB1c2goT3AuUHVzaENvbXBvbmVudE1hbmFnZXIsIHRoaXMub3RoZXIoZGVmaW5pdGlvbikpO1xuICB9XG5cbiAgcHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyKCkge1xuICAgIHRoaXMucHVzaChPcC5QdXNoRHluYW1pY0NvbXBvbmVudE1hbmFnZXIpO1xuICB9XG5cbiAgaW5pdGlhbGl6ZUNvbXBvbmVudFN0YXRlKCkge1xuICAgIHRoaXMucHVzaChPcC5Jbml0aWFsaXplQ29tcG9uZW50U3RhdGUpO1xuICB9XG5cbiAgcHJlcGFyZUFyZ3Moc3RhdGU6IFJlZ2lzdGVyKSB7XG4gICAgdGhpcy5wdXNoKE9wLlByZXBhcmVBcmdzLCBzdGF0ZSk7XG4gIH1cblxuICBjcmVhdGVDb21wb25lbnQoc3RhdGU6IFJlZ2lzdGVyLCBoYXNEZWZhdWx0OiBib29sZWFuLCBoYXNJbnZlcnNlOiBib29sZWFuKSB7XG4gICAgbGV0IGZsYWcgPSAoPGFueT5oYXNEZWZhdWx0fDApIHwgKCg8YW55Pmhhc0ludmVyc2V8MCkgPDwgMSk7XG4gICAgdGhpcy5wdXNoKE9wLkNyZWF0ZUNvbXBvbmVudCwgZmxhZywgc3RhdGUpO1xuICB9XG5cbiAgcmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yKHN0YXRlOiBSZWdpc3Rlcikge1xuICAgIHRoaXMucHVzaChPcC5SZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3IsIHN0YXRlKTtcbiAgfVxuXG4gIGJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24oKSB7XG4gICAgdGhpcy5wdXNoKE9wLkJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24pO1xuICB9XG5cbiAgY29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24oKSB7XG4gICAgdGhpcy5wdXNoKE9wLkNvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uKTtcbiAgfVxuXG4gIHB1c2hDb21wb25lbnRPcGVyYXRpb25zKCkge1xuICAgIHRoaXMucHVzaChPcC5QdXNoQ29tcG9uZW50T3BlcmF0aW9ucyk7XG4gIH1cblxuICBnZXRDb21wb25lbnRTZWxmKHN0YXRlOiBSZWdpc3Rlcikge1xuICAgIHRoaXMucHVzaChPcC5HZXRDb21wb25lbnRTZWxmLCBzdGF0ZSk7XG4gIH1cblxuICBnZXRDb21wb25lbnRMYXlvdXQoc3RhdGU6IFJlZ2lzdGVyICkge1xuICAgIHRoaXMucHVzaChPcC5HZXRDb21wb25lbnRMYXlvdXQsIHN0YXRlKTtcbiAgfVxuXG4gIGRpZENyZWF0ZUVsZW1lbnQoc3RhdGU6IFJlZ2lzdGVyKSB7XG4gICAgdGhpcy5wdXNoKE9wLkRpZENyZWF0ZUVsZW1lbnQsIHN0YXRlKTtcbiAgfVxuXG4gIGRpZFJlbmRlckxheW91dChzdGF0ZTogUmVnaXN0ZXIpIHtcbiAgICB0aGlzLnB1c2goT3AuRGlkUmVuZGVyTGF5b3V0LCBzdGF0ZSk7XG4gIH1cblxuICAvLyBwYXJ0aWFsXG5cbiAgZ2V0UGFydGlhbFRlbXBsYXRlKCkge1xuICAgIHRoaXMucHVzaChPcC5HZXRQYXJ0aWFsVGVtcGxhdGUpO1xuICB9XG5cbiAgcmVzb2x2ZU1heWJlTG9jYWwobmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5wdXNoKE9wLlJlc29sdmVNYXliZUxvY2FsLCB0aGlzLnN0cmluZyhuYW1lKSk7XG4gIH1cblxuICAvLyBkZWJ1Z2dlclxuXG4gIGRlYnVnZ2VyKHN5bWJvbHM6IHN0cmluZ1tdLCBldmFsSW5mbzogbnVtYmVyW10pIHtcbiAgICB0aGlzLnB1c2goT3AuRGVidWdnZXIsIHRoaXMuY29uc3RhbnRzLm90aGVyKHN5bWJvbHMpLCB0aGlzLmNvbnN0YW50cy5hcnJheShldmFsSW5mbykpO1xuICB9XG5cbiAgLy8gY29udGVudFxuXG4gIGR5bmFtaWNDb250ZW50KE9wY29kZTogY29udGVudC5BcHBlbmREeW5hbWljT3Bjb2RlPEluc2VydGlvbj4pIHtcbiAgICB0aGlzLnB1c2goT3AuRHluYW1pY0NvbnRlbnQsIHRoaXMub3RoZXIoT3Bjb2RlKSk7XG4gIH1cblxuICBjYXV0aW91c0FwcGVuZCgpIHtcbiAgICB0aGlzLmR5bmFtaWNDb250ZW50KG5ldyBjb250ZW50Lk9wdGltaXplZENhdXRpb3VzQXBwZW5kT3Bjb2RlKCkpO1xuICB9XG5cbiAgdHJ1c3RpbmdBcHBlbmQoKSB7XG4gICAgdGhpcy5keW5hbWljQ29udGVudChuZXcgY29udGVudC5PcHRpbWl6ZWRUcnVzdGluZ0FwcGVuZE9wY29kZSgpKTtcbiAgfVxuXG4gIC8vIGRvbVxuXG4gIHRleHQodGV4dDogc3RyaW5nKSB7XG4gICAgdGhpcy5wdXNoKE9wLlRleHQsIHRoaXMuY29uc3RhbnRzLnN0cmluZyh0ZXh0KSk7XG4gIH1cblxuICBvcGVuUHJpbWl0aXZlRWxlbWVudCh0YWc6IHN0cmluZykge1xuICAgIHRoaXMucHVzaChPcC5PcGVuRWxlbWVudCwgdGhpcy5jb25zdGFudHMuc3RyaW5nKHRhZykpO1xuICB9XG5cbiAgb3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucyh0YWc6IHN0cmluZykge1xuICAgIHRoaXMucHVzaChPcC5PcGVuRWxlbWVudFdpdGhPcGVyYXRpb25zLCB0aGlzLmNvbnN0YW50cy5zdHJpbmcodGFnKSk7XG4gIH1cblxuICBvcGVuRHluYW1pY0VsZW1lbnQoKSB7XG4gICAgdGhpcy5wdXNoKE9wLk9wZW5EeW5hbWljRWxlbWVudCk7XG4gIH1cblxuICBmbHVzaEVsZW1lbnQoKSB7XG4gICAgdGhpcy5wdXNoKE9wLkZsdXNoRWxlbWVudCk7XG4gIH1cblxuICBjbG9zZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5wdXNoKE9wLkNsb3NlRWxlbWVudCk7XG4gIH1cblxuICBzdGF0aWNBdHRyKF9uYW1lOiBzdHJpbmcsIF9uYW1lc3BhY2U6IE9wdGlvbjxzdHJpbmc+LCBfdmFsdWU6IHN0cmluZykge1xuICAgIGxldCBuYW1lID0gdGhpcy5jb25zdGFudHMuc3RyaW5nKF9uYW1lKTtcbiAgICBsZXQgbmFtZXNwYWNlID0gX25hbWVzcGFjZSA/IHRoaXMuY29uc3RhbnRzLnN0cmluZyhfbmFtZXNwYWNlKSA6IDA7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5jb25zdGFudHMuc3RyaW5nKF92YWx1ZSk7XG5cbiAgICB0aGlzLnB1c2goT3AuU3RhdGljQXR0ciwgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZSk7XG4gIH1cblxuICBkeW5hbWljQXR0ck5TKF9uYW1lOiBzdHJpbmcsIF9uYW1lc3BhY2U6IHN0cmluZywgdHJ1c3Rpbmc6IGJvb2xlYW4pIHtcbiAgICBsZXQgbmFtZSA9IHRoaXMuY29uc3RhbnRzLnN0cmluZyhfbmFtZSk7XG4gICAgbGV0IG5hbWVzcGFjZSA9IHRoaXMuY29uc3RhbnRzLnN0cmluZyhfbmFtZXNwYWNlKTtcblxuICAgIHRoaXMucHVzaChPcC5EeW5hbWljQXR0ck5TLCBuYW1lLCBuYW1lc3BhY2UsICh0cnVzdGluZyBhcyBhbnkpfDApO1xuICB9XG5cbiAgZHluYW1pY0F0dHIoX25hbWU6IHN0cmluZywgdHJ1c3Rpbmc6IGJvb2xlYW4pIHtcbiAgICBsZXQgbmFtZSA9IHRoaXMuY29uc3RhbnRzLnN0cmluZyhfbmFtZSk7XG4gICAgdGhpcy5wdXNoKE9wLkR5bmFtaWNBdHRyLCBuYW1lLCAodHJ1c3RpbmcgYXMgYW55KXwwKTtcbiAgfVxuXG4gIGNvbW1lbnQoX2NvbW1lbnQ6IHN0cmluZykge1xuICAgIGxldCBjb21tZW50ID0gdGhpcy5jb25zdGFudHMuc3RyaW5nKF9jb21tZW50KTtcbiAgICB0aGlzLnB1c2goT3AuQ29tbWVudCwgY29tbWVudCk7XG4gIH1cblxuICBtb2RpZmllcihfZGVmaW5pdGlvbjogTW9kaWZpZXJNYW5hZ2VyPE9wYXF1ZT4pIHtcbiAgICB0aGlzLnB1c2goT3AuTW9kaWZpZXIsIHRoaXMub3RoZXIoX2RlZmluaXRpb24pKTtcbiAgfVxuXG4gIC8vIGxpc3RzXG5cbiAgcHV0SXRlcmF0b3IoKSB7XG4gICAgdGhpcy5wdXNoKE9wLlB1dEl0ZXJhdG9yKTtcbiAgfVxuXG4gIGVudGVyTGlzdChzdGFydDogc3RyaW5nKSB7XG4gICAgdGhpcy5yZXNlcnZlKE9wLkVudGVyTGlzdCk7XG4gICAgdGhpcy5sYWJlbHMudGFyZ2V0KHRoaXMucG9zLCBPcC5FbnRlckxpc3QsIHN0YXJ0KTtcbiAgfVxuXG4gIGV4aXRMaXN0KCkge1xuICAgIHRoaXMucHVzaChPcC5FeGl0TGlzdCk7XG4gIH1cblxuICBpdGVyYXRlKGJyZWFrczogc3RyaW5nKSB7XG4gICAgdGhpcy5yZXNlcnZlKE9wLkl0ZXJhdGUpO1xuICAgIHRoaXMubGFiZWxzLnRhcmdldCh0aGlzLnBvcywgT3AuSXRlcmF0ZSwgYnJlYWtzKTtcbiAgfVxuXG4gIC8vIGV4cHJlc3Npb25zXG5cbiAgc2V0VmFyaWFibGUoc3ltYm9sOiBudW1iZXIpIHtcbiAgICB0aGlzLnB1c2goT3AuU2V0VmFyaWFibGUsIHN5bWJvbCk7XG4gIH1cblxuICBnZXRWYXJpYWJsZShzeW1ib2w6IG51bWJlcikge1xuICAgIHRoaXMucHVzaChPcC5HZXRWYXJpYWJsZSwgc3ltYm9sKTtcbiAgfVxuXG4gIGdldFByb3BlcnR5KGtleTogc3RyaW5nKSB7XG4gICAgdGhpcy5wdXNoKE9wLkdldFByb3BlcnR5LCB0aGlzLnN0cmluZyhrZXkpKTtcbiAgfVxuXG4gIGdldEJsb2NrKHN5bWJvbDogbnVtYmVyKSB7XG4gICAgdGhpcy5wdXNoKE9wLkdldEJsb2NrLCBzeW1ib2wpO1xuICB9XG5cbiAgaGFzQmxvY2soc3ltYm9sOiBudW1iZXIpIHtcbiAgICB0aGlzLnB1c2goT3AuSGFzQmxvY2ssIHN5bWJvbCk7XG4gIH1cblxuICBoYXNCbG9ja1BhcmFtcyhzeW1ib2w6IG51bWJlcikge1xuICAgIHRoaXMucHVzaChPcC5IYXNCbG9ja1BhcmFtcywgc3ltYm9sKTtcbiAgfVxuXG4gIGNvbmNhdChzaXplOiBudW1iZXIpIHtcbiAgICB0aGlzLnB1c2goT3AuQ29uY2F0LCBzaXplKTtcbiAgfVxuXG4gIGZ1bmN0aW9uKGY6IENsaWVudFNpZGUuRnVuY3Rpb25FeHByZXNzaW9uQ2FsbGJhY2s8T3BhcXVlPikge1xuICAgIHRoaXMucHVzaChPcC5GdW5jdGlvbiwgdGhpcy5mdW5jKGYpKTtcbiAgfVxuXG4gIGxvYWQocmVnaXN0ZXI6IFJlZ2lzdGVyKSB7XG4gICAgdGhpcy5wdXNoKE9wLkxvYWQsIHJlZ2lzdGVyKTtcbiAgfVxuXG4gIGZldGNoKHJlZ2lzdGVyOiBSZWdpc3Rlcikge1xuICAgIHRoaXMucHVzaChPcC5GZXRjaCwgcmVnaXN0ZXIpO1xuICB9XG5cbiAgZHVwKHJlZ2lzdGVyID0gUmVnaXN0ZXIuc3AsIG9mZnNldCA9IDApIHtcbiAgICByZXR1cm4gdGhpcy5wdXNoKE9wLkR1cCwgcmVnaXN0ZXIsIG9mZnNldCk7XG4gIH1cblxuICBwb3AoY291bnQgPSAxKSB7XG4gICAgcmV0dXJuIHRoaXMucHVzaChPcC5Qb3AsIGNvdW50KTtcbiAgfVxuXG4gIC8vIHZtXG5cbiAgcHVzaFJlbW90ZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5wdXNoKE9wLlB1c2hSZW1vdGVFbGVtZW50KTtcbiAgfVxuXG4gIHBvcFJlbW90ZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5wdXNoKE9wLlBvcFJlbW90ZUVsZW1lbnQpO1xuICB9XG5cbiAgbGFiZWwobmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5sYWJlbHMubGFiZWwobmFtZSwgdGhpcy5uZXh0UG9zKTtcbiAgfVxuXG4gIHB1c2hSb290U2NvcGUoc3ltYm9sczogbnVtYmVyLCBiaW5kQ2FsbGVyU2NvcGU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnB1c2goT3AuUm9vdFNjb3BlLCBzeW1ib2xzLCA8YW55PmJpbmRDYWxsZXJTY29wZXwwKTtcbiAgfVxuXG4gIHB1c2hDaGlsZFNjb3BlKCkge1xuICAgIHRoaXMucHVzaChPcC5DaGlsZFNjb3BlKTtcbiAgfVxuXG4gIHBvcFNjb3BlKCkge1xuICAgIHRoaXMucHVzaChPcC5Qb3BTY29wZSk7XG4gIH1cblxuICByZXR1cm5UbyhsYWJlbDogc3RyaW5nKSB7XG4gICAgdGhpcy5yZXNlcnZlKE9wLkltbWVkaWF0ZSk7XG4gICAgdGhpcy5sYWJlbHMudGFyZ2V0KHRoaXMucG9zLCBPcC5JbW1lZGlhdGUsIGxhYmVsKTtcbiAgICB0aGlzLmxvYWQoUmVnaXN0ZXIucmEpO1xuICB9XG5cbiAgcHVzaER5bmFtaWNTY29wZSgpIHtcbiAgICB0aGlzLnB1c2goT3AuUHVzaER5bmFtaWNTY29wZSk7XG4gIH1cblxuICBwb3BEeW5hbWljU2NvcGUoKSB7XG4gICAgdGhpcy5wdXNoKE9wLlBvcER5bmFtaWNTY29wZSk7XG4gIH1cblxuICBwdXNoSW1tZWRpYXRlPFQ+KHZhbHVlOiBUKSB7XG4gICAgdGhpcy5wdXNoKE9wLkNvbnN0YW50LCB0aGlzLm90aGVyKHZhbHVlKSk7XG4gIH1cblxuICBwcmltaXRpdmUoX3ByaW1pdGl2ZTogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCB8IGJvb2xlYW4pIHtcbiAgICBsZXQgZmxhZzogMCB8IDEgfCAyID0gMDtcbiAgICBsZXQgcHJpbWl0aXZlOiBudW1iZXI7XG4gICAgc3dpdGNoICh0eXBlb2YgX3ByaW1pdGl2ZSkge1xuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgcHJpbWl0aXZlID0gX3ByaW1pdGl2ZSBhcyBudW1iZXI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgcHJpbWl0aXZlID0gdGhpcy5zdHJpbmcoX3ByaW1pdGl2ZSBhcyBzdHJpbmcpO1xuICAgICAgICBmbGFnID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgcHJpbWl0aXZlID0gKF9wcmltaXRpdmUgYXMgYW55KSB8IDA7XG4gICAgICAgIGZsYWcgPSAyO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgIC8vIGFzc3VtZSBudWxsXG4gICAgICAgIHByaW1pdGl2ZSA9IDI7XG4gICAgICAgIGZsYWcgPSAyO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3VuZGVmaW5lZCc6XG4gICAgICAgIHByaW1pdGl2ZSA9IDM7XG4gICAgICAgIGZsYWcgPSAyO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBwcmltaXRpdmUgcGFzc2VkIHRvIHB1c2hQcmltaXRpdmUnKTtcbiAgICB9XG5cbiAgICB0aGlzLnB1c2goT3AuUHJpbWl0aXZlUmVmZXJlbmNlLCAoZmxhZyA8PCAzMCkgfCBwcmltaXRpdmUpO1xuICB9XG5cbiAgaGVscGVyKGZ1bmM6IEZ1bmN0aW9uKSB7XG4gICAgdGhpcy5wdXNoKE9wLkhlbHBlciwgdGhpcy5mdW5jKGZ1bmMpKTtcbiAgfVxuXG4gIHB1c2hCbG9jayhibG9jazogT3B0aW9uPEJsb2NrPikge1xuICAgIHRoaXMucHVzaChPcC5QdXNoQmxvY2ssIHRoaXMuYmxvY2soYmxvY2spKTtcbiAgfVxuXG4gIGJpbmREeW5hbWljU2NvcGUoX25hbWVzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMucHVzaChPcC5CaW5kRHluYW1pY1Njb3BlLCB0aGlzLm5hbWVzKF9uYW1lcykpO1xuICB9XG5cbiAgZW50ZXIoYXJnczogbnVtYmVyKSB7XG4gICAgdGhpcy5wdXNoKE9wLkVudGVyLCBhcmdzKTtcbiAgfVxuXG4gIGV4aXQoKSB7XG4gICAgdGhpcy5wdXNoKE9wLkV4aXQpO1xuICB9XG5cbiAgcmV0dXJuKCkge1xuICAgIHRoaXMucHVzaChPcC5SZXR1cm4pO1xuICB9XG5cbiAgcHVzaEZyYW1lKCkge1xuICAgIHRoaXMucHVzaChPcC5QdXNoRnJhbWUpO1xuICB9XG5cbiAgcG9wRnJhbWUoKSB7XG4gICAgdGhpcy5wdXNoKE9wLlBvcEZyYW1lKTtcbiAgfVxuXG4gIGNvbXBpbGVEeW5hbWljQmxvY2soKTogdm9pZCB7XG4gICAgdGhpcy5wdXNoKE9wLkNvbXBpbGVEeW5hbWljQmxvY2spO1xuICB9XG5cbiAgaW52b2tlRHluYW1pYyhpbnZva2VyOiB2bS5EeW5hbWljSW52b2tlcjxTeW1ib2xUYWJsZT4pOiB2b2lkIHtcbiAgICB0aGlzLnB1c2goT3AuSW52b2tlRHluYW1pYywgdGhpcy5vdGhlcihpbnZva2VyKSk7XG4gIH1cblxuICBpbnZva2VTdGF0aWMoYmxvY2s6IEJsb2NrLCBjYWxsZXJDb3VudCA9IDApOiB2b2lkIHtcbiAgICBsZXQgeyBwYXJhbWV0ZXJzIH0gPSBibG9jay5zeW1ib2xUYWJsZTtcbiAgICBsZXQgY2FsbGVlQ291bnQgPSBwYXJhbWV0ZXJzLmxlbmd0aDtcbiAgICBsZXQgY291bnQgPSBNYXRoLm1pbihjYWxsZXJDb3VudCwgY2FsbGVlQ291bnQpO1xuXG4gICAgdGhpcy5wdXNoRnJhbWUoKTtcblxuICAgIGlmIChjb3VudCkge1xuICAgICAgdGhpcy5wdXNoQ2hpbGRTY29wZSgpO1xuXG4gICAgICBmb3IgKGxldCBpPTA7IGk8Y291bnQ7IGkrKykge1xuICAgICAgICB0aGlzLmR1cChSZWdpc3Rlci5mcCwgY2FsbGVyQ291bnQgLSBpKTtcbiAgICAgICAgdGhpcy5zZXRWYXJpYWJsZShwYXJhbWV0ZXJzW2ldKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgX2Jsb2NrID0gdGhpcy5jb25zdGFudHMuYmxvY2soYmxvY2spO1xuICAgIHRoaXMucHVzaChPcC5JbnZva2VTdGF0aWMsIF9ibG9jayk7XG5cbiAgICBpZiAoY291bnQpIHtcbiAgICAgIHRoaXMucG9wU2NvcGUoKTtcbiAgICB9XG5cbiAgICB0aGlzLnBvcEZyYW1lKCk7XG4gIH1cblxuICB0ZXN0KHRlc3RGdW5jOiAnY29uc3QnIHwgJ3NpbXBsZScgfCAnZW52aXJvbm1lbnQnIHwgdm0uVGVzdEZ1bmN0aW9uKSB7XG4gICAgbGV0IF9mdW5jOiB2bS5UZXN0RnVuY3Rpb247XG5cbiAgICBpZiAodGVzdEZ1bmMgPT09ICdjb25zdCcpIHtcbiAgICAgIF9mdW5jID0gdm0uQ29uc3RUZXN0O1xuICAgIH0gZWxzZSBpZiAodGVzdEZ1bmMgPT09ICdzaW1wbGUnKSB7XG4gICAgICBfZnVuYyA9IHZtLlNpbXBsZVRlc3Q7XG4gICAgfSBlbHNlIGlmICh0ZXN0RnVuYyA9PT0gJ2Vudmlyb25tZW50Jykge1xuICAgICAgX2Z1bmMgPSB2bS5FbnZpcm9ubWVudFRlc3Q7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGVzdEZ1bmMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIF9mdW5jID0gdGVzdEZ1bmM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5yZWFjaGFibGUnKTtcbiAgICB9XG5cbiAgICBsZXQgZnVuYyA9IHRoaXMuY29uc3RhbnRzLmZ1bmN0aW9uKF9mdW5jKTtcbiAgICB0aGlzLnB1c2goT3AuVGVzdCwgZnVuYyk7XG4gIH1cblxuICBqdW1wKHRhcmdldDogc3RyaW5nKSB7XG4gICAgdGhpcy5yZXNlcnZlKE9wLkp1bXApO1xuICAgIHRoaXMubGFiZWxzLnRhcmdldCh0aGlzLnBvcywgT3AuSnVtcCwgdGFyZ2V0KTtcbiAgfVxuXG4gIGp1bXBJZih0YXJnZXQ6IHN0cmluZykge1xuICAgIHRoaXMucmVzZXJ2ZShPcC5KdW1wSWYpO1xuICAgIHRoaXMubGFiZWxzLnRhcmdldCh0aGlzLnBvcywgT3AuSnVtcElmLCB0YXJnZXQpO1xuICB9XG5cbiAganVtcFVubGVzcyh0YXJnZXQ6IHN0cmluZykge1xuICAgIHRoaXMucmVzZXJ2ZShPcC5KdW1wVW5sZXNzKTtcbiAgICB0aGlzLmxhYmVscy50YXJnZXQodGhpcy5wb3MsIE9wLkp1bXBVbmxlc3MsIHRhcmdldCk7XG4gIH1cblxuICBzdHJpbmcoX3N0cmluZzogc3RyaW5nKTogQ29uc3RhbnRTdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNvbnN0YW50cy5zdHJpbmcoX3N0cmluZyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbmFtZXMoX25hbWVzOiBzdHJpbmdbXSk6IENvbnN0YW50QXJyYXkge1xuICAgIGxldCBuYW1lcyA9IF9uYW1lcy5tYXAobiA9PiB0aGlzLmNvbnN0YW50cy5zdHJpbmcobikpO1xuICAgIHJldHVybiB0aGlzLmNvbnN0YW50cy5hcnJheShuYW1lcyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3ltYm9scyhzeW1ib2xzOiBudW1iZXJbXSk6IENvbnN0YW50QXJyYXkge1xuICAgIHJldHVybiB0aGlzLmNvbnN0YW50cy5hcnJheShzeW1ib2xzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdGhlcih2YWx1ZTogT3BhcXVlKTogQ29uc3RhbnRPdGhlciB7XG4gICAgcmV0dXJuIHRoaXMuY29uc3RhbnRzLm90aGVyKHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBibG9jayhibG9jazogT3B0aW9uPEJsb2NrPik6IENvbnN0YW50QmxvY2sge1xuICAgIHJldHVybiBibG9jayA/IHRoaXMuY29uc3RhbnRzLmJsb2NrKGJsb2NrKSA6IDA7XG4gIH1cblxuICBwcm90ZWN0ZWQgZnVuYyhmdW5jOiBGdW5jdGlvbik6IENvbnN0YW50RnVuY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLmNvbnN0YW50cy5mdW5jdGlvbihmdW5jKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0NvbXBpbGFibGVFeHByZXNzaW9uPEU+KGV4cHI6IFJlcHJlc2VudHM8RT4pOiBleHByIGlzIENvbXBpbGVzSW50bzxFPiB7XG4gIHJldHVybiBleHByICYmIHR5cGVvZiBleHByWydjb21waWxlJ10gPT09ICdmdW5jdGlvbic7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE9wY29kZUJ1aWxkZXIgZXh0ZW5kcyBCYXNpY09wY29kZUJ1aWxkZXIge1xuICBwdWJsaWMgY29tcG9uZW50OiBJQ29tcG9uZW50QnVpbGRlcjtcblxuICBjb25zdHJ1Y3RvcihlbnY6IEVudmlyb25tZW50LCBtZXRhOiBDb21waWxhdGlvbk1ldGEsIHByb2dyYW06IFByb2dyYW0gPSBlbnYucHJvZ3JhbSkge1xuICAgIHN1cGVyKGVudiwgbWV0YSwgcHJvZ3JhbSk7XG4gICAgdGhpcy5jb21wb25lbnQgPSBuZXcgQ29tcG9uZW50QnVpbGRlcih0aGlzKTtcbiAgfVxuXG4gIGNvbXBpbGVBcmdzKHBhcmFtczogT3B0aW9uPFdpcmVGb3JtYXQuQ29yZS5QYXJhbXM+LCBoYXNoOiBPcHRpb248V2lyZUZvcm1hdC5Db3JlLkhhc2g+LCBzeW50aGV0aWM6IGJvb2xlYW4pIHtcbiAgICBsZXQgcG9zaXRpb25hbCA9IDA7XG5cbiAgICBpZiAocGFyYW1zKSB7XG4gICAgICBwYXJhbXMuZm9yRWFjaChwID0+IGV4cHIocCwgdGhpcykpO1xuICAgICAgcG9zaXRpb25hbCA9IHBhcmFtcy5sZW5ndGg7XG4gICAgfVxuXG4gICAgbGV0IG5hbWVzID0gRU1QVFlfQVJSQVk7XG5cbiAgICBpZiAoaGFzaCkge1xuICAgICAgbmFtZXMgPSBoYXNoWzBdO1xuICAgICAgaGFzaFsxXS5mb3JFYWNoKHYgPT4gZXhwcih2LCB0aGlzKSk7XG4gICAgfVxuXG4gICAgdGhpcy5wdXNoSW1tZWRpYXRlKG5hbWVzKTtcbiAgICB0aGlzLnB1c2hBcmdzKHBvc2l0aW9uYWwsIHN5bnRoZXRpYyk7XG4gIH1cblxuICBjb21waWxlPEU+KGV4cHI6IFJlcHJlc2VudHM8RT4pOiBFIHtcbiAgICBpZiAoaXNDb21waWxhYmxlRXhwcmVzc2lvbihleHByKSkge1xuICAgICAgcmV0dXJuIGV4cHIuY29tcGlsZSh0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGV4cHI7XG4gICAgfVxuICB9XG5cbiAgZ3VhcmRlZENhdXRpb3VzQXBwZW5kKGV4cHJlc3Npb246IFdpcmVGb3JtYXQuRXhwcmVzc2lvbikge1xuICAgIGV4cHIoZXhwcmVzc2lvbiwgdGhpcyk7XG4gICAgdGhpcy5keW5hbWljQ29udGVudChuZXcgY29udGVudC5HdWFyZGVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUoKSk7XG4gIH1cblxuICBndWFyZGVkVHJ1c3RpbmdBcHBlbmQoZXhwcmVzc2lvbjogV2lyZUZvcm1hdC5FeHByZXNzaW9uKSB7XG4gICAgZXhwcihleHByZXNzaW9uLCB0aGlzKTtcbiAgICB0aGlzLmR5bmFtaWNDb250ZW50KG5ldyBjb250ZW50Lkd1YXJkZWRUcnVzdGluZ0FwcGVuZE9wY29kZSgpKTtcbiAgfVxuXG4gIGludm9rZUNvbXBvbmVudChhdHRyczogT3B0aW9uPFJhd0lubGluZUJsb2NrPiwgcGFyYW1zOiBPcHRpb248V2lyZUZvcm1hdC5Db3JlLlBhcmFtcz4sIGhhc2g6IE9wdGlvbjxXaXJlRm9ybWF0LkNvcmUuSGFzaD4sIGJsb2NrOiBPcHRpb248QmxvY2s+LCBpbnZlcnNlOiBPcHRpb248QmxvY2s+ID0gbnVsbCkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZUNvbXBvbmVudFN0YXRlKCk7XG5cbiAgICB0aGlzLmZldGNoKFJlZ2lzdGVyLnMwKTtcbiAgICB0aGlzLmR1cChSZWdpc3Rlci5zcCwgMSk7XG4gICAgdGhpcy5sb2FkKFJlZ2lzdGVyLnMwKTtcblxuICAgIHRoaXMucHVzaEJsb2NrKGJsb2NrKTtcbiAgICB0aGlzLnB1c2hCbG9jayhpbnZlcnNlKTtcblxuICAgIHRoaXMuY29tcGlsZUFyZ3MocGFyYW1zLCBoYXNoLCBmYWxzZSk7XG4gICAgdGhpcy5wcmVwYXJlQXJncyhSZWdpc3Rlci5zMCk7XG5cbiAgICB0aGlzLmJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24oKTtcbiAgICB0aGlzLnB1c2hEeW5hbWljU2NvcGUoKTtcbiAgICB0aGlzLmNyZWF0ZUNvbXBvbmVudChSZWdpc3Rlci5zMCwgdHJ1ZSwgaW52ZXJzZSA9PT0gbnVsbCk7XG4gICAgdGhpcy5yZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3IoUmVnaXN0ZXIuczApO1xuXG4gICAgdGhpcy5nZXRDb21wb25lbnRTZWxmKFJlZ2lzdGVyLnMwKTtcbiAgICB0aGlzLmdldENvbXBvbmVudExheW91dChSZWdpc3Rlci5zMCk7XG4gICAgdGhpcy5pbnZva2VEeW5hbWljKG5ldyBJbnZva2VEeW5hbWljTGF5b3V0KGF0dHJzICYmIGF0dHJzLnNjYW4oKSkpO1xuICAgIHRoaXMucG9wRnJhbWUoKTtcblxuICAgIHRoaXMucG9wU2NvcGUoKTtcbiAgICB0aGlzLnBvcER5bmFtaWNTY29wZSgpO1xuICAgIHRoaXMuY29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24oKTtcblxuICAgIHRoaXMubG9hZChSZWdpc3Rlci5zMCk7XG4gIH1cblxuICB0ZW1wbGF0ZShibG9jazogT3B0aW9uPFdpcmVGb3JtYXQuU2VyaWFsaXplZElubGluZUJsb2NrPik6IE9wdGlvbjxSYXdJbmxpbmVCbG9jaz4ge1xuICAgIGlmICghYmxvY2spIHJldHVybiBudWxsO1xuICAgIHJldHVybiBuZXcgUmF3SW5saW5lQmxvY2sodGhpcy5lbnYsIHRoaXMubWV0YSwgYmxvY2suc3RhdGVtZW50cywgYmxvY2sucGFyYW1ldGVycyk7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgQmxvY2tDYWxsYmFjayA9IChkc2w6IE9wY29kZUJ1aWxkZXIsIEJFR0lOOiBMYWJlbCwgRU5EOiBMYWJlbCkgPT4gdm9pZDtcbiJdfQ==

@@ -134,9 +134,2 @@ 'use strict';

}
toJSON() {
return {
guid: this._guid,
type: this.type,
args: [JSON.stringify(this.name)]
};
}
}

@@ -160,2 +153,2 @@ exports.UpdateComponentOpcode = UpdateComponentOpcode;

exports.DidUpdateLayoutOpcode = DidUpdateLayoutOpcode;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxBQUFPLEFBQUUsQUFBYyxBQUFrQixBQUFjLEFBQUUsQUFBTSxBQUFlLEFBQUM7O0FBQy9FLEFBQU8sQUFBRSxBQUFNLEFBQUUsQUFBTSxBQUFNLEFBQUM7O0FBRTlCLEFBQU8sQUFBK0IsQUFBTSxBQUFvQixBQUFDOzs7O0FBSWpFLEFBQU8sQUFBRSxBQUEwQixBQUFFLEFBQU0sQUFBTyxBQUFDOztBQUVuRCxBQUFPLEFBQ0wsQUFBWSxBQUNaLEFBQWMsQUFHZCxBQUFPLEFBQ1AsQUFBTyxBQUNSLEFBQU0sQUFBb0IsQUFBQzs7OztBQUU1QixBQUFjLHdCQUFDLEFBQUcsSUFBQyxHQUF1Qiw0QkFBRSxDQUFDLEFBQUUsSUFBRSxFQUFFLEFBQUcsS0FBRSxBQUFXLEFBQUU7QUFDbkUsUUFBSSxBQUFVLGFBQUcsQUFBRSxHQUFDLEFBQVMsVUFBQyxBQUFRLFNBQThCLEFBQVcsQUFBQyxBQUFDO0FBQ2pGLFFBQUksQUFBSyxRQUFHLEFBQUUsR0FBQyxBQUFLLEFBQUM7QUFFckIsQUFBSyxVQUFDLEFBQUksS0FBQyxBQUFVLEFBQUMsQUFBQztBQUN2QixBQUFLLFVBQUMsQUFBSSxLQUFDLEFBQVUsV0FBQyxBQUFPLEFBQUMsQUFBQyxBQUNqQztBQUFDLEFBQUMsQUFBQztBQUVILEFBQWMsd0JBQUMsQUFBRyxJQUFDLEdBQThCLG1DQUFFLEFBQUU7QUFDbkQsUUFBSSxBQUFLLFFBQUcsQUFBRSxHQUFDLEFBQUssQUFBQztBQUNyQixRQUFJLEFBQVMsWUFBRyxBQUFLLE1BQUMsQUFBRyxBQUF1RCxBQUFDO0FBQ2pGLFFBQUksQUFBSyxRQUFHLEFBQU8sd0JBQUMsQUFBUyxBQUFDLGFBQUcsQUFBUyxZQUFHLEFBQUksQUFBYyw4QkFBOEIsQUFBUyxBQUFDLEFBQUM7QUFDeEcsUUFBSSxBQUFVLGFBQUcsQUFB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QUNGLEFBRUQsQUFBTTs7O01BQTZCLEFBQVEsQUFBYztBQUl2RCxnQkFDVSxBQUFvQyxTQUNwQyxBQUFvQixXQUNwQixBQUFjO0FBRXRCLEFBQUssQUFBRSxBQUFDO0FBSkEsYUFBTyxVQUFQLEFBQU8sQUFBNkI7QUFDcEMsYUFBUyxZQUFULEFBQVMsQUFBVztBQUNwQixhQUFNLFNBQU4sQUFBTSxBQUFRO0FBTmpCLGFBQUksT0FBRyxBQUFtQixBQUFDO0FBQzNCLGFBQUcsQUFBUSxBQUFZLEFBQUMsQUFRL0I7QUFBQztBQUVELEFBQVEsYUFBQyxBQUFjO0FBQ3JCLFlBQUksRUFBRSxBQUFPLFNBQUUsQUFBUyxXQUFFLEFBQU0sQUFBRSxXQUFHLEFBQUksQUFBQztBQUUxQyxBQUFPLGdCQUFDLEFBQWUsZ0JBQUMsQUFBUyxXQUFFLEFBQU0sQUFBQyxBQUFDO0FBRTNDLEFBQUUsV0FBQyxBQUFHLElBQUMsQUFBUyxVQUFDLEFBQVMsV0FBRSxBQUFPLEFBQUMsQUFBQyxBQUN2QztBQUFDLEFBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBUFBFTkRfT1BDT0RFUywgT3AsIE9wY29kZUpTT04sIFVwZGF0aW5nT3Bjb2RlIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBBc3NlcnQgfSBmcm9tICcuL3ZtJztcbmltcG9ydCB7IFVwZGF0aW5nVk0gfSBmcm9tICcuLi8uLi92bSc7XG5pbXBvcnQgQVJHUywgeyBBcmd1bWVudHMsIElBcmd1bWVudHMgfSBmcm9tICcuLi8uLi92bS9hcmd1bWVudHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBDb21wb25lbnRNYW5hZ2VyLCBDb21wb25lbnREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50L2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRHluYW1pY1Njb3BlIH0gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IEJvdW5kcyBmcm9tICcuLi8uLi9ib3VuZHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50RWxlbWVudE9wZXJhdGlvbnMgfSBmcm9tICcuL2RvbSc7XG5pbXBvcnQgeyBPcGFxdWUgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7XG4gIENPTlNUQU5UX1RBRyxcbiAgUmVmZXJlbmNlQ2FjaGUsXG4gIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsXG4gIFRhZyxcbiAgY29tYmluZSxcbiAgaXNDb25zdFxufSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUHVzaENvbXBvbmVudE1hbmFnZXIsICh2bSwgeyBvcDE6IF9kZWZpbml0aW9uIH0pID0+IHtcbiAgbGV0IGRlZmluaXRpb24gPSB2bS5jb25zdGFudHMuZ2V0T3RoZXI8Q29tcG9uZW50RGVmaW5pdGlvbjxPcGFxdWU+PihfZGVmaW5pdGlvbik7XG4gIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuXG4gIHN0YWNrLnB1c2goZGVmaW5pdGlvbik7XG4gIHN0YWNrLnB1c2goZGVmaW5pdGlvbi5tYW5hZ2VyKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyLCB2bSA9PiB7XG4gIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICBsZXQgcmVmZXJlbmNlID0gc3RhY2sucG9wPFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8Q29tcG9uZW50RGVmaW5pdGlvbjxPcGFxdWU+Pj4oKTtcbiAgbGV0IGNhY2hlID0gaXNDb25zdChyZWZlcmVuY2UpID8gdW5kZWZpbmVkIDogbmV3IFJlZmVyZW5jZUNhY2hlPENvbXBvbmVudERlZmluaXRpb248T3BhcXVlPj4ocmVmZXJlbmNlKTtcbiAgbGV0IGRlZmluaXRpb24gPSBjYWNoZSA/IGNhY2hlLnBlZWsoKSA6IHJlZmVyZW5jZS52YWx1ZSgpO1xuXG4gIHN0YWNrLnB1c2goZGVmaW5pdGlvbik7XG4gIHN0YWNrLnB1c2goZGVmaW5pdGlvbi5tYW5hZ2VyKTtcblxuICBpZiAoY2FjaGUpIHtcbiAgICB2bS51cGRhdGVXaXRoKG5ldyBBc3NlcnQoY2FjaGUpKTtcbiAgfVxufSk7XG5cbmludGVyZmFjZSBJbml0aWFsQ29tcG9uZW50U3RhdGU8VD4ge1xuICBkZWZpbml0aW9uOiBDb21wb25lbnREZWZpbml0aW9uPFQ+O1xuICBtYW5hZ2VyOiBDb21wb25lbnRNYW5hZ2VyPFQ+O1xuICBjb21wb25lbnQ6IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50U3RhdGU8VD4ge1xuICBkZWZpbml0aW9uOiBDb21wb25lbnREZWZpbml0aW9uPFQ+O1xuICBtYW5hZ2VyOiBDb21wb25lbnRNYW5hZ2VyPFQ+O1xuICBjb21wb25lbnQ6IFQ7XG59XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5Jbml0aWFsaXplQ29tcG9uZW50U3RhdGUsIHZtID0+IHtcbiAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG5cbiAgbGV0IG1hbmFnZXIgPSBzdGFjay5wb3AoKTtcbiAgbGV0IGRlZmluaXRpb24gPSBzdGFjay5wb3AoKTtcblxuICBzdGFjay5wdXNoKHsgZGVmaW5pdGlvbiwgbWFuYWdlciwgY29tcG9uZW50OiBudWxsIH0pO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5QdXNoQXJncywgKHZtLCB7IG9wMTogcG9zaXRpb25hbCwgb3AyOiBzeW50aGV0aWMgfSkgPT4ge1xuICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgQVJHUy5zZXR1cChzdGFjaywgcG9zaXRpb25hbCwgISFzeW50aGV0aWMpO1xuICBzdGFjay5wdXNoKEFSR1MpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5QcmVwYXJlQXJncywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gIGxldCB7IGRlZmluaXRpb24sIG1hbmFnZXIgfSA9IHZtLmZldGNoVmFsdWU8SW5pdGlhbENvbXBvbmVudFN0YXRlPE9wYXF1ZT4+KF9zdGF0ZSk7XG4gIGxldCBhcmdzID0gc3RhY2sucG9wPEFyZ3VtZW50cz4oKTtcblxuICBsZXQgcHJlcGFyZWRBcmdzID0gbWFuYWdlci5wcmVwYXJlQXJncyhkZWZpbml0aW9uLCBhcmdzKTtcblxuICBpZiAocHJlcGFyZWRBcmdzKSB7XG4gICAgYXJncy5jbGVhcigpO1xuXG4gICAgbGV0IHsgcG9zaXRpb25hbCwgbmFtZWQgfSA9IHByZXBhcmVkQXJncztcblxuICAgIGxldCBwb3NpdGlvbmFsQ291bnQgPSBwb3NpdGlvbmFsLmxlbmd0aDtcblxuICAgIGZvciAobGV0IGk9MDsgaTxwb3NpdGlvbmFsQ291bnQ7IGkrKykge1xuICAgICAgc3RhY2sucHVzaChwb3NpdGlvbmFsW2ldKTtcbiAgICB9XG5cbiAgICBsZXQgbmFtZXMgPSBPYmplY3Qua2V5cyhuYW1lZCk7XG4gICAgbGV0IG5hbWVkQ291bnQgPSBuYW1lcy5sZW5ndGg7XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8bmFtZWRDb3VudDsgaSsrKSB7XG4gICAgICBzdGFjay5wdXNoKG5hbWVkW25hbWVzW2ldXSk7XG4gICAgfVxuXG4gICAgc3RhY2sucHVzaChuYW1lcyk7XG4gICAgYXJncy5zZXR1cChzdGFjaywgcG9zaXRpb25hbENvdW50LCB0cnVlKTtcbiAgfVxuXG4gIHN0YWNrLnB1c2goYXJncyk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkNyZWF0ZUNvbXBvbmVudCwgKHZtLCB7IG9wMTogZmxhZ3MsIG9wMjogX3N0YXRlIH0pID0+IHtcbiAgbGV0IGRlZmluaXRpb24sIG1hbmFnZXI7XG4gIGxldCBhcmdzID0gdm0uc3RhY2sucG9wPElBcmd1bWVudHM+KCk7XG4gIGxldCBkeW5hbWljU2NvcGUgPSB2bS5keW5hbWljU2NvcGUoKTtcbiAgbGV0IHN0YXRlID0geyBkZWZpbml0aW9uLCBtYW5hZ2VyIH0gPSB2bS5mZXRjaFZhbHVlPEluaXRpYWxDb21wb25lbnRTdGF0ZTxPcGFxdWU+Pihfc3RhdGUpO1xuXG4gIGxldCBoYXNEZWZhdWx0QmxvY2sgPSBmbGFncyAmIDBiMDE7XG5cbiAgbGV0IGNvbXBvbmVudCA9IG1hbmFnZXIuY3JlYXRlKHZtLmVudiwgZGVmaW5pdGlvbiwgYXJncywgZHluYW1pY1Njb3BlLCB2bS5nZXRTZWxmKCksICEhaGFzRGVmYXVsdEJsb2NrKTtcbiAgKHN0YXRlIGFzIENvbXBvbmVudFN0YXRlPHR5cGVvZiBjb21wb25lbnQ+KS5jb21wb25lbnQgPSBjb21wb25lbnQ7XG5cbiAgdm0udXBkYXRlV2l0aChuZXcgVXBkYXRlQ29tcG9uZW50T3Bjb2RlKGFyZ3MudGFnLCBkZWZpbml0aW9uLm5hbWUsIGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlKSk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlJlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvciwgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlPENvbXBvbmVudFN0YXRlPE9wYXF1ZT4+KF9zdGF0ZSk7XG5cbiAgbGV0IGRlc3RydWN0b3IgPSBtYW5hZ2VyLmdldERlc3RydWN0b3IoY29tcG9uZW50KTtcbiAgaWYgKGRlc3RydWN0b3IpIHZtLm5ld0Rlc3Ryb3lhYmxlKGRlc3RydWN0b3IpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5CZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uLCB2bSA9PiB7XG4gIHZtLmJlZ2luQ2FjaGVHcm91cCgpO1xuICB2bS5lbGVtZW50cygpLnB1c2hTaW1wbGVCbG9jaygpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5QdXNoQ29tcG9uZW50T3BlcmF0aW9ucywgdm0gPT4ge1xuICB2bS5zdGFjay5wdXNoKG5ldyBDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyh2bS5lbnYpKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuRGlkQ3JlYXRlRWxlbWVudCwgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlPENvbXBvbmVudFN0YXRlPE9wYXF1ZT4+KF9zdGF0ZSk7XG5cbiAgbGV0IGFjdGlvbiA9ICdEaWRDcmVhdGVFbGVtZW50T3Bjb2RlI2V2YWx1YXRlJztcbiAgbWFuYWdlci5kaWRDcmVhdGVFbGVtZW50KGNvbXBvbmVudCwgdm0uZWxlbWVudHMoKS5leHBlY3RDb25zdHJ1Y3RpbmcoYWN0aW9uKSwgdm0uZWxlbWVudHMoKS5leHBlY3RPcGVyYXRpb25zKGFjdGlvbikpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5HZXRDb21wb25lbnRTZWxmLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICBsZXQgc3RhdGUgPSB2bS5mZXRjaFZhbHVlPENvbXBvbmVudFN0YXRlPE9wYXF1ZT4+KF9zdGF0ZSk7XG4gIHZtLnN0YWNrLnB1c2goc3RhdGUubWFuYWdlci5nZXRTZWxmKHN0YXRlLmNvbXBvbmVudCkpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5HZXRDb21wb25lbnRMYXlvdXQsICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gIGxldCB7IG1hbmFnZXIsIGRlZmluaXRpb24sIGNvbXBvbmVudCB9ID0gdm0uZmV0Y2hWYWx1ZTxDb21wb25lbnRTdGF0ZTxPcGFxdWU+Pihfc3RhdGUpO1xuICB2bS5zdGFjay5wdXNoKG1hbmFnZXIubGF5b3V0Rm9yKGRlZmluaXRpb24sIGNvbXBvbmVudCwgdm0uZW52KSk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkRpZFJlbmRlckxheW91dCwgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlPENvbXBvbmVudFN0YXRlPE9wYXF1ZT4+KF9zdGF0ZSk7XG4gIGxldCBib3VuZHMgPSB2bS5lbGVtZW50cygpLnBvcEJsb2NrKCk7XG5cbiAgbWFuYWdlci5kaWRSZW5kZXJMYXlvdXQoY29tcG9uZW50LCBib3VuZHMpO1xuXG4gIHZtLmVudi5kaWRDcmVhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcblxuICB2bS51cGRhdGVXaXRoKG5ldyBEaWRVcGRhdGVMYXlvdXRPcGNvZGUobWFuYWdlciwgY29tcG9uZW50LCBib3VuZHMpKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24sIHZtID0+IHZtLmNvbW1pdENhY2hlR3JvdXAoKSk7XG5cbmV4cG9ydCBjbGFzcyBVcGRhdGVDb21wb25lbnRPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJ1cGRhdGUtY29tcG9uZW50XCI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgdGFnOiBUYWcsXG4gICAgcHJpdmF0ZSBuYW1lOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBjb21wb25lbnQ6IENvbXBvbmVudCxcbiAgICBwcml2YXRlIG1hbmFnZXI6IENvbXBvbmVudE1hbmFnZXI8Q29tcG9uZW50PixcbiAgICBwcml2YXRlIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlLFxuICApIHtcbiAgICBzdXBlcigpO1xuXG4gICAgbGV0IGNvbXBvbmVudFRhZyA9IG1hbmFnZXIuZ2V0VGFnKGNvbXBvbmVudCk7XG5cbiAgICBpZiAoY29tcG9uZW50VGFnKSB7XG4gICAgICB0aGlzLnRhZyA9IGNvbWJpbmUoW3RhZywgY29tcG9uZW50VGFnXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGFnID0gdGFnO1xuICAgIH1cbiAgfVxuXG4gIGV2YWx1YXRlKF92bTogVXBkYXRpbmdWTSkge1xuICAgIGxldCB7IGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlIH0gPSB0aGlzO1xuXG4gICAgbWFuYWdlci51cGRhdGUoY29tcG9uZW50LCBkeW5hbWljU2NvcGUpO1xuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIHJldHVybiB7XG4gICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgYXJnczogW0pTT04uc3RyaW5naWZ5KHRoaXMubmFtZSldXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGlkVXBkYXRlTGF5b3V0T3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwiZGlkLXVwZGF0ZS1sYXlvdXRcIjtcbiAgcHVibGljIHRhZzogVGFnID0gQ09OU1RBTlRfVEFHO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbWFuYWdlcjogQ29tcG9uZW50TWFuYWdlcjxDb21wb25lbnQ+LFxuICAgIHByaXZhdGUgY29tcG9uZW50OiBDb21wb25lbnQsXG4gICAgcHJpdmF0ZSBib3VuZHM6IEJvdW5kc1xuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICBsZXQgeyBtYW5hZ2VyLCBjb21wb25lbnQsIGJvdW5kcyB9ID0gdGhpcztcblxuICAgIG1hbmFnZXIuZGlkVXBkYXRlTGF5b3V0KGNvbXBvbmVudCwgYm91bmRzKTtcblxuICAgIHZtLmVudi5kaWRVcGRhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxBQUFPLEFBQUUsQUFBYyxBQUFrQixBQUFjLEFBQUUsQUFBTSxBQUFlLEFBQUM7O0FBQy9FLEFBQU8sQUFBRSxBQUFNLEFBQUUsQUFBTSxBQUFNLEFBQUM7O0FBRTlCLEFBQU8sQUFBK0IsQUFBTSxBQUFvQixBQUFDOzs7O0FBSWpFLEFBQU8sQUFBRSxBQUEwQixBQUFFLEFBQU0sQUFBTyxBQUFDOztBQUVuRCxBQUFPLEFBQ0wsQUFBWSxBQUNaLEFBQWMsQUFHZCxBQUFPLEFBQ1AsQUFBTyxBQUNSLEFBQU0sQUFBb0IsQUFBQzs7OztBQUU1QixBQUFjLHdCQUFDLEFBQUcsSUFBQyxHQUF1Qiw0QkFBRSxDQUFDLEFBQUUsSUFBRSxFQUFFLEFBQUcsS0FBRSxBQUFXLEFBQUU7QUFDbkUsUUFBSSxBQUFVLGFBQUcsQUFBRSxHQUFDLEFBQVMsVUFBQyxBQUFRLFNBQThCLEFBQVcsQUFBQyxBQUFDO0FBQ2pGLFFBQUksQUFBSyxRQUFHLEFBQUUsR0FBQyxBQUFLLEFBQUM7QUFFckIsQUFBSyxVQUFDLEFBQUksS0FBQyxBQUFVLEFBQUMsQUFBQztBQUN2QixBQUFLLFVBQUMsQUFBSSxLQUFDLEFBQVUsV0FBQyxBQUFPLEFBQUMsQUFBQyxBQUNqQztBQUFDLEFBQUMsQUFBQztBQUVILEFBQWMsd0JBQUMsQUFBRyxJQUFDLEdBQThCLG1DQUFFLEFBQUU7QUFDbkQsUUFBSSxBQUFLLFFBQUcsQUFBRSxHQUFDLEFBQUssQUFBQztBQUNyQixRQUFJLEFBQVMsWUFBRyxBQUFLLE1BQUMsQUFBRyxBQUF1RCxBQUFDO0FBQ2pGLFFBQUksQUFBSyxRQUFHLEFBQU8sd0JBQUMsQUFBUyxBQUFDLGFBQUcsQUFBUyxZQUFHLEFBQUksQUFBYyw4QkFBOEIsQUFBUyxBQUFDLEFBQUM7QUFDeEcsUUFBSSxBQUFVLGFBQUcsQUFB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akIsYUFBSSxPQUFHLEFBQW1CLEFBQUM7QUFDM0IsYUFBRyxBQUFRLEFBQVksQUFBQyxBQVEvQjtBQUFDO0FBRUQsQUFBUSxhQUFDLEFBQWM7QUFDckIsWUFBSSxFQUFFLEFBQU8sU0FBRSxBQUFTLFdBQUUsQUFBTSxBQUFFLFdBQUcsQUFBSSxBQUFDO0FBRTFDLEFBQU8sZ0JBQUMsQUFBZSxnQkFBQyxBQUFTLFdBQUUsQUFBTSxBQUFDLEFBQUM7QUFFM0MsQUFBRSxXQUFDLEFBQUcsSUFBQyxBQUFTLFVBQUMsQUFBUyxXQUFFLEFBQU8sQUFBQyxBQUFDLEFBQ3ZDO0FBQUMsQUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUEVORF9PUENPREVTLCBPcCwgT3Bjb2RlSlNPTiwgVXBkYXRpbmdPcGNvZGUgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IEFzc2VydCB9IGZyb20gJy4vdm0nO1xuaW1wb3J0IHsgVXBkYXRpbmdWTSB9IGZyb20gJy4uLy4uL3ZtJztcbmltcG9ydCBBUkdTLCB7IEFyZ3VtZW50cywgSUFyZ3VtZW50cyB9IGZyb20gJy4uLy4uL3ZtL2FyZ3VtZW50cyc7XG5pbXBvcnQgeyBDb21wb25lbnQsIENvbXBvbmVudE1hbmFnZXIsIENvbXBvbmVudERlZmluaXRpb24gfSBmcm9tICcuLi8uLi9jb21wb25lbnQvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBEeW5hbWljU2NvcGUgfSBmcm9tICcuLi8uLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgQm91bmRzIGZyb20gJy4uLy4uL2JvdW5kcyc7XG5pbXBvcnQgeyBDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyB9IGZyb20gJy4vZG9tJztcbmltcG9ydCB7IE9wYXF1ZSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHtcbiAgQ09OU1RBTlRfVEFHLFxuICBSZWZlcmVuY2VDYWNoZSxcbiAgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSxcbiAgVGFnLFxuICBjb21iaW5lLFxuICBpc0NvbnN0XG59IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5QdXNoQ29tcG9uZW50TWFuYWdlciwgKHZtLCB7IG9wMTogX2RlZmluaXRpb24gfSkgPT4ge1xuICBsZXQgZGVmaW5pdGlvbiA9IHZtLmNvbnN0YW50cy5nZXRPdGhlcjxDb21wb25lbnREZWZpbml0aW9uPE9wYXF1ZT4+KF9kZWZpbml0aW9uKTtcbiAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG5cbiAgc3RhY2sucHVzaChkZWZpbml0aW9uKTtcbiAgc3RhY2sucHVzaChkZWZpbml0aW9uLm1hbmFnZXIpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5QdXNoRHluYW1pY0NvbXBvbmVudE1hbmFnZXIsIHZtID0+IHtcbiAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gIGxldCByZWZlcmVuY2UgPSBzdGFjay5wb3A8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxDb21wb25lbnREZWZpbml0aW9uPE9wYXF1ZT4+PigpO1xuICBsZXQgY2FjaGUgPSBpc0NvbnN0KHJlZmVyZW5jZSkgPyB1bmRlZmluZWQgOiBuZXcgUmVmZXJlbmNlQ2FjaGU8Q29tcG9uZW50RGVmaW5pdGlvbjxPcGFxdWU+PihyZWZlcmVuY2UpO1xuICBsZXQgZGVmaW5pdGlvbiA9IGNhY2hlID8gY2FjaGUucGVlaygpIDogcmVmZXJlbmNlLnZhbHVlKCk7XG5cbiAgc3RhY2sucHVzaChkZWZpbml0aW9uKTtcbiAgc3RhY2sucHVzaChkZWZpbml0aW9uLm1hbmFnZXIpO1xuXG4gIGlmIChjYWNoZSkge1xuICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICB9XG59KTtcblxuaW50ZXJmYWNlIEluaXRpYWxDb21wb25lbnRTdGF0ZTxUPiB7XG4gIGRlZmluaXRpb246IENvbXBvbmVudERlZmluaXRpb248VD47XG4gIG1hbmFnZXI6IENvbXBvbmVudE1hbmFnZXI8VD47XG4gIGNvbXBvbmVudDogbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRTdGF0ZTxUPiB7XG4gIGRlZmluaXRpb246IENvbXBvbmVudERlZmluaXRpb248VD47XG4gIG1hbmFnZXI6IENvbXBvbmVudE1hbmFnZXI8VD47XG4gIGNvbXBvbmVudDogVDtcbn1cblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkluaXRpYWxpemVDb21wb25lbnRTdGF0ZSwgdm0gPT4ge1xuICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcblxuICBsZXQgbWFuYWdlciA9IHN0YWNrLnBvcCgpO1xuICBsZXQgZGVmaW5pdGlvbiA9IHN0YWNrLnBvcCgpO1xuXG4gIHN0YWNrLnB1c2goeyBkZWZpbml0aW9uLCBtYW5hZ2VyLCBjb21wb25lbnQ6IG51bGwgfSk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlB1c2hBcmdzLCAodm0sIHsgb3AxOiBwb3NpdGlvbmFsLCBvcDI6IHN5bnRoZXRpYyB9KSA9PiB7XG4gIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICBBUkdTLnNldHVwKHN0YWNrLCBwb3NpdGlvbmFsLCAhIXN5bnRoZXRpYyk7XG4gIHN0YWNrLnB1c2goQVJHUyk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlByZXBhcmVBcmdzLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgbGV0IHsgZGVmaW5pdGlvbiwgbWFuYWdlciB9ID0gdm0uZmV0Y2hWYWx1ZTxJbml0aWFsQ29tcG9uZW50U3RhdGU8T3BhcXVlPj4oX3N0YXRlKTtcbiAgbGV0IGFyZ3MgPSBzdGFjay5wb3A8QXJndW1lbnRzPigpO1xuXG4gIGxldCBwcmVwYXJlZEFyZ3MgPSBtYW5hZ2VyLnByZXBhcmVBcmdzKGRlZmluaXRpb24sIGFyZ3MpO1xuXG4gIGlmIChwcmVwYXJlZEFyZ3MpIHtcbiAgICBhcmdzLmNsZWFyKCk7XG5cbiAgICBsZXQgeyBwb3NpdGlvbmFsLCBuYW1lZCB9ID0gcHJlcGFyZWRBcmdzO1xuXG4gICAgbGV0IHBvc2l0aW9uYWxDb3VudCA9IHBvc2l0aW9uYWwubGVuZ3RoO1xuXG4gICAgZm9yIChsZXQgaT0wOyBpPHBvc2l0aW9uYWxDb3VudDsgaSsrKSB7XG4gICAgICBzdGFjay5wdXNoKHBvc2l0aW9uYWxbaV0pO1xuICAgIH1cblxuICAgIGxldCBuYW1lcyA9IE9iamVjdC5rZXlzKG5hbWVkKTtcbiAgICBsZXQgbmFtZWRDb3VudCA9IG5hbWVzLmxlbmd0aDtcblxuICAgIGZvciAobGV0IGk9MDsgaTxuYW1lZENvdW50OyBpKyspIHtcbiAgICAgIHN0YWNrLnB1c2gobmFtZWRbbmFtZXNbaV1dKTtcbiAgICB9XG5cbiAgICBzdGFjay5wdXNoKG5hbWVzKTtcbiAgICBhcmdzLnNldHVwKHN0YWNrLCBwb3NpdGlvbmFsQ291bnQsIHRydWUpO1xuICB9XG5cbiAgc3RhY2sucHVzaChhcmdzKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuQ3JlYXRlQ29tcG9uZW50LCAodm0sIHsgb3AxOiBmbGFncywgb3AyOiBfc3RhdGUgfSkgPT4ge1xuICBsZXQgZGVmaW5pdGlvbiwgbWFuYWdlcjtcbiAgbGV0IGFyZ3MgPSB2bS5zdGFjay5wb3A8SUFyZ3VtZW50cz4oKTtcbiAgbGV0IGR5bmFtaWNTY29wZSA9IHZtLmR5bmFtaWNTY29wZSgpO1xuICBsZXQgc3RhdGUgPSB7IGRlZmluaXRpb24sIG1hbmFnZXIgfSA9IHZtLmZldGNoVmFsdWU8SW5pdGlhbENvbXBvbmVudFN0YXRlPE9wYXF1ZT4+KF9zdGF0ZSk7XG5cbiAgbGV0IGhhc0RlZmF1bHRCbG9jayA9IGZsYWdzICYgMGIwMTtcblxuICBsZXQgY29tcG9uZW50ID0gbWFuYWdlci5jcmVhdGUodm0uZW52LCBkZWZpbml0aW9uLCBhcmdzLCBkeW5hbWljU2NvcGUsIHZtLmdldFNlbGYoKSwgISFoYXNEZWZhdWx0QmxvY2spO1xuICAoc3RhdGUgYXMgQ29tcG9uZW50U3RhdGU8dHlwZW9mIGNvbXBvbmVudD4pLmNvbXBvbmVudCA9IGNvbXBvbmVudDtcblxuICB2bS51cGRhdGVXaXRoKG5ldyBVcGRhdGVDb21wb25lbnRPcGNvZGUoYXJncy50YWcsIGRlZmluaXRpb24ubmFtZSwgY29tcG9uZW50LCBtYW5hZ2VyLCBkeW5hbWljU2NvcGUpKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICBsZXQgeyBtYW5hZ2VyLCBjb21wb25lbnQgfSA9IHZtLmZldGNoVmFsdWU8Q29tcG9uZW50U3RhdGU8T3BhcXVlPj4oX3N0YXRlKTtcblxuICBsZXQgZGVzdHJ1Y3RvciA9IG1hbmFnZXIuZ2V0RGVzdHJ1Y3Rvcihjb21wb25lbnQpO1xuICBpZiAoZGVzdHJ1Y3Rvcikgdm0ubmV3RGVzdHJveWFibGUoZGVzdHJ1Y3Rvcik7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24sIHZtID0+IHtcbiAgdm0uYmVnaW5DYWNoZUdyb3VwKCk7XG4gIHZtLmVsZW1lbnRzKCkucHVzaFNpbXBsZUJsb2NrKCk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlB1c2hDb21wb25lbnRPcGVyYXRpb25zLCB2bSA9PiB7XG4gIHZtLnN0YWNrLnB1c2gobmV3IENvbXBvbmVudEVsZW1lbnRPcGVyYXRpb25zKHZtLmVudikpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5EaWRDcmVhdGVFbGVtZW50LCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICBsZXQgeyBtYW5hZ2VyLCBjb21wb25lbnQgfSA9IHZtLmZldGNoVmFsdWU8Q29tcG9uZW50U3RhdGU8T3BhcXVlPj4oX3N0YXRlKTtcblxuICBsZXQgYWN0aW9uID0gJ0RpZENyZWF0ZUVsZW1lbnRPcGNvZGUjZXZhbHVhdGUnO1xuICBtYW5hZ2VyLmRpZENyZWF0ZUVsZW1lbnQoY29tcG9uZW50LCB2bS5lbGVtZW50cygpLmV4cGVjdENvbnN0cnVjdGluZyhhY3Rpb24pLCB2bS5lbGVtZW50cygpLmV4cGVjdE9wZXJhdGlvbnMoYWN0aW9uKSk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkdldENvbXBvbmVudFNlbGYsICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gIGxldCBzdGF0ZSA9IHZtLmZldGNoVmFsdWU8Q29tcG9uZW50U3RhdGU8T3BhcXVlPj4oX3N0YXRlKTtcbiAgdm0uc3RhY2sucHVzaChzdGF0ZS5tYW5hZ2VyLmdldFNlbGYoc3RhdGUuY29tcG9uZW50KSk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkdldENvbXBvbmVudExheW91dCwgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgbGV0IHsgbWFuYWdlciwgZGVmaW5pdGlvbiwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlPENvbXBvbmVudFN0YXRlPE9wYXF1ZT4+KF9zdGF0ZSk7XG4gIHZtLnN0YWNrLnB1c2gobWFuYWdlci5sYXlvdXRGb3IoZGVmaW5pdGlvbiwgY29tcG9uZW50LCB2bS5lbnYpKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuRGlkUmVuZGVyTGF5b3V0LCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICBsZXQgeyBtYW5hZ2VyLCBjb21wb25lbnQgfSA9IHZtLmZldGNoVmFsdWU8Q29tcG9uZW50U3RhdGU8T3BhcXVlPj4oX3N0YXRlKTtcbiAgbGV0IGJvdW5kcyA9IHZtLmVsZW1lbnRzKCkucG9wQmxvY2soKTtcblxuICBtYW5hZ2VyLmRpZFJlbmRlckxheW91dChjb21wb25lbnQsIGJvdW5kcyk7XG5cbiAgdm0uZW52LmRpZENyZWF0ZShjb21wb25lbnQsIG1hbmFnZXIpO1xuXG4gIHZtLnVwZGF0ZVdpdGgobmV3IERpZFVwZGF0ZUxheW91dE9wY29kZShtYW5hZ2VyLCBjb21wb25lbnQsIGJvdW5kcykpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5Db21taXRDb21wb25lbnRUcmFuc2FjdGlvbiwgdm0gPT4gdm0uY29tbWl0Q2FjaGVHcm91cCgpKTtcblxuZXhwb3J0IGNsYXNzIFVwZGF0ZUNvbXBvbmVudE9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcInVwZGF0ZS1jb21wb25lbnRcIjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICB0YWc6IFRhZyxcbiAgICBwcml2YXRlIG5hbWU6IHN0cmluZyxcbiAgICBwcml2YXRlIGNvbXBvbmVudDogQ29tcG9uZW50LFxuICAgIHByaXZhdGUgbWFuYWdlcjogQ29tcG9uZW50TWFuYWdlcjxDb21wb25lbnQ+LFxuICAgIHByaXZhdGUgZHluYW1pY1Njb3BlOiBEeW5hbWljU2NvcGUsXG4gICkge1xuICAgIHN1cGVyKCk7XG5cbiAgICBsZXQgY29tcG9uZW50VGFnID0gbWFuYWdlci5nZXRUYWcoY29tcG9uZW50KTtcblxuICAgIGlmIChjb21wb25lbnRUYWcpIHtcbiAgICAgIHRoaXMudGFnID0gY29tYmluZShbdGFnLCBjb21wb25lbnRUYWddKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50YWcgPSB0YWc7XG4gICAgfVxuICB9XG5cbiAgZXZhbHVhdGUoX3ZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgbGV0IHsgY29tcG9uZW50LCBtYW5hZ2VyLCBkeW5hbWljU2NvcGUgfSA9IHRoaXM7XG5cbiAgICBtYW5hZ2VyLnVwZGF0ZShjb21wb25lbnQsIGR5bmFtaWNTY29wZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERpZFVwZGF0ZUxheW91dE9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImRpZC11cGRhdGUtbGF5b3V0XCI7XG4gIHB1YmxpYyB0YWc6IFRhZyA9IENPTlNUQU5UX1RBRztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1hbmFnZXI6IENvbXBvbmVudE1hbmFnZXI8Q29tcG9uZW50PixcbiAgICBwcml2YXRlIGNvbXBvbmVudDogQ29tcG9uZW50LFxuICAgIHByaXZhdGUgYm91bmRzOiBCb3VuZHNcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50LCBib3VuZHMgfSA9IHRoaXM7XG5cbiAgICBtYW5hZ2VyLmRpZFVwZGF0ZUxheW91dChjb21wb25lbnQsIGJvdW5kcyk7XG5cbiAgICB2bS5lbnYuZGlkVXBkYXRlKGNvbXBvbmVudCwgbWFuYWdlcik7XG4gIH1cbn1cbiJdfQ==

@@ -182,10 +182,2 @@ 'use strict';

}
toJSON() {
let { _guid: guid, type, cache } = this;
return {
guid,
type,
details: { lastValue: JSON.stringify(cache.peek()) }
};
}
}

@@ -242,15 +234,2 @@ class GuardedUpdateOpcode extends UpdateOpcode {

}
toJSON() {
let { _guid: guid, type, deopted } = this;
if (deopted) {
return {
guid,
type,
deopted: true,
children: [deopted.toJSON()]
};
} else {
return super.toJSON();
}
}
}

@@ -359,2 +338,2 @@ class OptimizedCautiousAppendOpcode extends AppendDynamicOpcode {

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvbnRlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxBQUFlLEFBS2IsQUFBWSxBQUNaLEFBQU0sQUFDTixBQUFRLEFBRVIsQUFBYyxBQUNkLEFBQWMsQUFDZixBQUFNLEFBQWMsQUFBQzs7QUFDdEIsQUFBTyxBQUFFLEFBQXFCLEFBQUUsQUFBTSxBQUE0QixBQUFDOztBQUVuRSxBQUFPLEFBQWMsQUFBYyxBQUFFLEFBQU0sQUFBZSxBQUFDOztBQUczRCxBQUFPLEFBQXFDLEFBQWMsQUFBRSxBQUFZLEFBQWMsQUFBVSxBQUFFLEFBQU8sQUFBRSxBQUFHLEFBQUUsQUFBTSxBQUFvQixBQUFDOztBQUUzSSxBQUFPLEFBQUUsQUFBTSxBQUFFLEFBQUssQUFBRSxBQUFNLEFBQWMsQUFBQzs7QUFDN0MsQUFBTyxBQUFFLEFBQVEsQUFBRSxBQUFNLEFBQWUsQUFBQzs7QUFDekMsQUFBTyxBQUFFLEFBQW9CLEFBQUUsQUFBTSxBQUFrQixBQUFDLEFBRXhELEFBQU8sQUFBRSxBQUFjLEFBQU0sQUFBTSxBQUFlLEFBQUM7O0FBRW5ELEFBQWMsd0JBQUMsQUFBRyxJQUFDLEdBQWlCLHNCQUFFLENBQUMsQUFBRSxJQUFFLEVBQUUsQUFBRyxLQUFFLEFBQU0sQUFBRTtBQUN4RCxRQUFJLEFBQU0sU0FBRyxBQUFFLEdBQUMsQUFBUyxVQUFDLEFBQVEsU0FBQyxBQUFNLEFBQW1DLEFBQUM7QUFDN0UsQUFBTSxXQUFDLEFBQVEsU0FBQyxBQUFFLEFBQUMsQUFBQyxBQUN0QjtBQUFDLEFBQUMsQUFBQztBQUVILGlCQUFpQixBQUFhO0FBQzVCLEFBQU0sV0FBQyxBQUFLLFVBQUssQUFBSSxRQUFJLEFBQUssVUFBSyxBQUFTLGFBQUksT0FBTyxBQUFLLE1BQUMsQUFBVSxBQUFDLGdCQUFLLEFBQVUsQUFBQyxBQUMxRjtBQUFDLEFBRUQsQUFBTTs0QkFBNkIsQUFBYTtBQUM5QyxBQUFFLEFBQUMsUUFBQyxBQUFPLFFBQUMsQUFBSyxBQUFDLEFBQUMsUUFBQyxBQUFDO0FBQ25CLEFBQU0sZUFBQyxBQUFFLEFBQUMsQUFDWjtBQUFDO0FBQ0QsQUFBTSxXQUFDLEFBQU0sT0FBQyxBQUFLLEFBQUMsQUFBQyxBQUN2QjtBQUFDO0FBRUQsK0JBQStCLEFBQWE7QUFDMUMsQUFBRSxBQUFDLFFBQUMsQUFBTyxRQUFDLEFBQUssQUFBQyxBQUFDLFFBQUMsQUFBQztBQUNuQixBQUFNLGVBQUMsQUFBRSxBQUFDLEFBQ1o7QUFBQztBQUNELEFBQUUsQUFBQyxRQUFDLEFBQVEsc0JBQUMsQUFBSyxBQUFDLEFBQUMsUUFBQyxBQUFDO0FBQ3BCLEFBQU0sZUFBQyxBQUFLLEFBQUMsQUFDZjtBQUFDO0FBQ0QsQUFBRSxBQUFDLFFBQUMsQUFBWSwwQkFBQyxBQUFLLEFBQUMsQUFBQyxRQUFDLEFBQUM7QUFDeEIsQUFBTSxlQUFDLEFBQUssTUFBQyxBQUFNLEFBQUUsQUFBQyxBQUN4QjtBQUFDO0FBQ0QsQUFBRSxBQUFDLFFBQUMsQUFBTSxvQkFBQyxBQUFLLEFBQUMsQUFBQyxRQUFDLEFBQUM7QUFDbEIsQUFBTSxlQUFDLEFBQUssQUFBQyxBQUNmO0FBQUM7QUFDRCxBQUFNLFdBQUMsQUFBTSxPQUFDLEFBQUssQUFBQyxBQUFDLEFBQ3ZCO0FBQUM7QUFFRCx3QkFBd0IsQUFBYTtBQUNuQyxBQUFFLEFBQUMsUUFBQyxBQUFPLFFBQUMsQUFBSyxBQUFDLEFBQUMsUUFBQyxBQUFDO0FBQ25CLEFBQU0sZUFBQyxBQUFFLEFBQUMsQUFDWjtBQUFDO0FBQ0QsQUFBRSxBQUFDLFFBQUMsQUFBUSxzQkFBQyxBQUFLLEFBQUMsQUFBQyxRQUFDLEFBQUM7QUFDcEIsQUFBTSxlQUFDLEFBQUssQUFBQyxBQUNmO0FBQUM7QUFDRCxBQUFFLEFBQUMsUUFBQyxBQUFZLDBCQUFDLEFBQUssQUFBQyxVQUFJLEFBQU0sb0JBQUMsQUFBSyxBQUFDLEFBQUMsUUFBQyxBQUFDO0FBQ3pDLEFBQU0sZUFBQyxBQUFLLEFBQUMsQUFDZjtBQUFDO0FBQ0QsQUFBTSxXQUFDLEFBQU0sT0FBQyxBQUFLLEFBQUMsQUFBQyxBQUN2QjtBQUFDLEFBSUQsQUFBTTs7QUFLSixBQUFRLGFBQUMsQUFBTTtBQUNiLFlBQUksQUFBUyxZQUFHLEFBQUUsR0FBQyxBQUFLLE1BQUMsQUFBRyxBQUFrQyxBQUFDO0FBQy9ELFlBQUksQUFBVSxhQUFHLEFBQUksS0FBQyxBQUFTLFVBQUMsQUFBUyxBQUFDLEFBQUM7QUFFM0MsWUFBSSxBQUFLLE9BQUUsQUFBSyxBQUFDO0FBRWpCLEFBQUUsQUFBQyxZQUFDLEFBQU8seUJBQUMsQUFBUyxBQUFDLEFBQUMsWUFBQyxBQUFDO0FBQ3ZCLEFBQUssb0JBQUcsQUFBVSxXQUFDLEFBQUssQUFBRSxBQUFDLEFBQzdCO0FBQUMsQUFBQyxBQUFJLGVBQUMsQUFBQztBQUNOLEFBQUssb0JBQUcsQUFBSSxBQUFjLCtCQUFDLEFBQVUsQUFBQyxBQUFDO0FBQ3ZDLEFBQUssb0JBQUcsQUFBSyxNQUFDLEFBQUksQUFBRSxBQUFDLEFBQ3ZCO0FBQUM7QUFFRCxZQUFJLEFBQUssUUFBRyxBQUFFLEdBQUMsQUFBUSxBQUFFLEFBQUM7QUFDMUIsWUFBSSxBQUFNLFNBQUcsQUFBSSxLQUFDLEFBQU0sT0FBQyxBQUFFLEdBQUMsQUFBRyxJQUFDLEFBQW1CLEFBQUUsdUJBQUUsQUFBSyxPQUFFLEFBQUssQUFBQyxBQUFDO0FBQ3JFLFlBQUksQUFBTSxTQUFHLEFBQUksQUFBUSxzQkFBQyxBQUFNLE9BQUMsQUFBTSxBQUFDLEFBQUM7QUFFekMsQUFBSyxjQUFDLEFBQVMsVUFBQyxBQUFNLEFBQUMsQUFBQztBQUV4QixBQUFFLEFBQUMsWUFBQyxBQUFLLE1BQUMsQUFBOEIsQUFBQyxnQ0FBQyxBQUFDO0FBQ3pDLEFBQUUsbUJBQUMsQUFBVSxXQUFDLEFBQUksS0FBQyxBQUFVLFdBQUMsQUFBRSxJQUFFLEFBQVMsV0FBRSxBQUFLLE9BQUUsQUFBTSxRQUFFLEFBQU0sQUFBQyxBQUFDLEFBQUMsQUFDdkU7QUFBQyxBQUNIO0FBQUMsQUFDRixBQUVELEFBQU07OztNQUF5RCw0QkFBUSxBQUFzQjtBQUkzRjtBQUNFLEFBQUssQUFBRSxBQUFDO0FBSEYsYUFBSyxRQUFHLENBQUMsQUFBQyxBQUFDLEFBSW5CO0FBQUM7QUFFRCxRQUFJLEFBQU87QUFDVCxBQUFNLGVBQUMsQUFBSSxLQUFDLEFBQUssVUFBSyxDQUFDLEFBQUMsQUFBQyxBQUMzQjtBQUFDO0FBRUQsQUFBUSxhQUFDLEFBQU07QUFDYixBQUFFLEFBQUMsWUFBQyxBQUFJLEtBQUMsQUFBTyxBQUFDLFNBQUMsQUFBQztBQUNqQixBQUFFLGVBQUMsQUFBSSxLQUFDLEFBQUksS0FBQyxBQUFLLEFBQUMsQUFBQyxBQUN0QjtBQUFDLEFBQUMsQUFBSSxlQUFDLEFBQUM7QUFDTixnQkFBSSxBQUFLLFFBQUcsQUFBRSxHQUFDLEFBQUssTUFBQyxBQUFHLEFBQUUsQUFBQztBQUUzQixBQUFFLGdCQUFDLEFBQXFCLHVDQUFDLEFBQUssQUFBQyxBQUFDLFFBQUMsQUFBQztBQUNoQyxBQUFJLHFCQUFDLEFBQUssTUFBQyxBQUFFLEdBQUMsQUFBRyxBQUFDLEFBQUM7QUFDbkIsQUFBRSxtQkFBQyxBQUFJLEtBQUMsQUFBSSxLQUFDLEFBQUssQUFBQyxBQUFDLEFBQ3RCO0FBQUMsQUFBQyxBQUFJLG1CQUFDLEFBQUM7QUFDTixBQUFFLG1CQUFDLEFBQUssTUFBQyxBQUFJLEtBQUMsQUFBSyxBQUFDLEFBQUM7QUFDckIsQUFBSyxzQkFBQyxBQUFRLFNBQUMsQUFBRSxBQUFDLEFBQUMsQUFDckI7QUFBQyxBQUNIO0FBQUMsQUFDSDtBQUFDO0FBRU0sQUFBSyxVQUFDLEFBQWlCO0FBQzVCLEFBQXVFO0FBQ3ZFLEFBQW1FO0FBQ25FLEFBQXlCO0FBQ3pCLEFBQUU7QUFDRixBQUF5RTtBQUN6RSxBQUFFO0FBQ0YsQUFBMEM7QUFDMUMsQUFBd0I7QUFDeEIsQUFBYTtBQUNiLEFBQWM7QUFDZCxBQUFZO0FBQ1osQUFBRTtBQUNGLEFBQXdFO0FBQ3hFLEFBQXlFO0FBQ3pFLEFBQXVFO0FBQ3ZFLEFBQTRCO0FBQzVCLEFBQUU7QUFDRixBQUEwRTtBQUMxRSxBQUFzRTtBQUN0RSxBQUFxRTtBQUNyRSxBQUF5RTtBQUN6RSxBQUF1RTtBQUN2RSxBQUFhO0FBQ2IsQUFBRTtBQUNGLEFBQXFDO0FBQ3JDLEFBQThDO0FBQzlDLEFBQWtDO0FBQ2xDLEFBQXFCO0FBQ3JCLEFBQWtDO0FBQ2xDLEFBQW9EO0FBQ3BELEFBQThCO0FBQzlCLEFBQStCO0FBQy9CLEFBQTBCO0FBQzFCLEFBQXFCO0FBQ3JCLEFBQWdDO0FBQ2hDLEFBQXFCO0FBQ3JCLEFBQXFCO0FBQ3JCLEFBQUU7QUFDRixBQUEwRTtBQUMxRSxBQUFzRTtBQUN0RSxBQUFzRTtBQUN0RSxBQUF3RTtBQUN4RSxBQUEyRTtBQUUzRSxBQUFNLGVBQUMsQUFBVyxBQUFDLEFBQ3JCO0FBQUMsQUFDRjs7O0FBRUQsTUFBcUMsQUFBUSxBQUFvQjtBQUMvRCxBQUFNLFdBQUMsQUFBTSxPQUFDLEFBQXdCO0FBQ3BDLEFBQU0sZUFBQyxJQUFJLEFBQThCLCtCQUFDLEFBQUssQUFBQyxBQUFDLEFBQ25EO0FBQUM7QUFFRCxBQUFNLFdBQUMsQUFBYTtBQUNsQixBQUFNLGVBQUMsQUFBcUIsdUNBQUMsQUFBSyxBQUFDLEFBQUMsQUFDdEM7QUFBQyxBQUNGOztBQUVELE1BQWlELEFBQVEsQUFBYztBQUNyRSxnQkFDWSxBQUF3QixPQUN4QixBQUFnQixRQUNoQixBQUFjO0FBRXhCLEFBQUssQUFBRSxBQUFDO0FBSkUsYUFBSyxRQUFMLEFBQUssQUFBbUI7QUFDeEIsYUFBTSxTQUFOLEFBQU0sQUFBVTtBQUNoQixhQUFNLFNBQU4sQUFBTSxBQUFRO0FBR3hCLEFBQUksYUFBQyxBQUFHLE1BQUcsQUFBSyxNQUFDLEFBQUcsQUFBQyxBQUN2QjtBQUFDO0FBSUQsQUFBUSxhQUFDLEFBQWM7QUFDckIsWUFBSSxBQUFLLFFBQUcsQUFBSSxLQUFDLEFBQUssTUFBQyxBQUFVLEFBQUUsQUFBQztBQUVwQyxBQUFFLEFBQUMsWUFBQyxBQUFVLDRCQUFDLEFBQUssQUFBQyxBQUFDLFFBQUMsQUFBQztBQUN0QixnQkFBSSxFQUFFLEFBQU0sUUFBRSxBQUFNLEFBQUUsV0FBRyxBQUFJLEFBQUM7QUFDOUIsZ0JBQUksRUFBRSxBQUFHLEFBQUUsUUFBRyxBQUFFLEFBQUM7QUFFakIsQUFBRSxnQkFBQyxDQUFDLEFBQUksS0FBQyxBQUFNLE9BQUMsQUFBTSxPQUFDLEFBQUcsS0FBRSxBQUFLLEFBQUMsQUFBQyxRQUFDLEFBQUM7QUFDbkMsb0JBQUksQUFBTSxTQUFHLEFBQUksQUFBTSxtQkFBQyxBQUFNLE9BQUMsQUFBYSxBQUFFLGlCQUFFLEFBQUssbUJBQUMsQUFBTSxBQUFDLEFBQUMsQUFBQztBQUMvRCxBQUFNLHlCQUFHLEFBQUksS0FBQyxBQUFNLFNBQUcsQUFBSSxLQUFDLEFBQU0sT0FBQyxBQUFFLEdBQUMsQUFBRyxJQUFDLEFBQW1CLEFBQUUsdUJBQUUsQUFBTSxRQUFFLEFBQVUsQUFBQyxBQUFDLEFBQ3ZGO0FBQUM7QUFFRCxBQUFNLG1CQUFDLEFBQU0sT0FBQyxBQUFNLE9BQUMsQUFBTSxBQUFDLEFBQUMsQUFDL0I7QUFBQyxBQUNIO0FBQUM7QUFFRCxBQUFNO0FBQ0osWUFBSSxFQUFFLEFBQUssT0FBRSxBQUFJLE1BQUUsQUFBSSxNQUFFLEFBQUssQUFBRSxVQUFHLEFBQUksQUFBQztBQUV4QyxBQUFNO0FBQ0osQUFBSTtBQUNKLEFBQUk7QUFDSixBQUFPLHFCQUFFLEVBQUUsQUFBUyxXQUFFLEFBQUksS0FBQyxBQUFTLFVBQUMsQUFBSyxNQUFDLEFBQUksQUFBRSxBQUFDLEFBQUUsQUFDckQsQUFBQyxBQUNKO0FBTFM7QUFLUixBQUNGOztBQUVELE1BQXdELDRCQUFRLEFBQWU7QUFJN0UsZ0JBQ1UsQUFBNEIsV0FDcEMsQUFBd0IsT0FDeEIsQUFBZ0IsUUFDaEIsQUFBYztBQUVkLEFBQUssY0FBQyxBQUFLLE9BQUUsQUFBTSxRQUFFLEFBQU0sQUFBQyxBQUFDO0FBTHJCLGFBQVMsWUFBVCxBQUFTLEFBQW1CO0FBSDlCLGFBQU8sVUFBc0IsQUFBSSxBQUFDO0FBU3hDLEFBQUksYUFBQyxBQUFHLE1BQUcsQUFBSSxLQUFDLEFBQUksT0FBRyxBQUFZLHlCQUFDLEFBQU0sT0FBQyxBQUFJLEtBQUMsQUFBRyxBQUFDLEFBQUMsQUFDdkQ7QUFBQztBQUVELEFBQVEsYUFBQyxBQUFjO0FBQ3JCLEFBQUUsQUFBQyxZQUFDLEFBQUksS0FBQyxBQUFPLEFBQUMsU0FBQyxBQUFDO0FBQ2pCLEFBQUUsZUFBQyxBQUFjLGVBQUMsQUFBSSxLQUFDLEFBQU8sQUFBQyxBQUFDLEFBQ2xDO0FBQUMsQUFBQyxBQUFJLGVBQUMsQUFBQztBQUNOLEFBQUUsQUFBQyxnQkFBQyxBQUFxQix1Q0FBQyxBQUFJLEtBQUMsQUFBUyxVQUFDLEFBQUssQUFBRSxBQUFDLEFBQUMsVUFBQyxBQUFDO0FBQ2xELEFBQUkscUJBQUMsQUFBUyxVQUFDLEFBQUUsQUFBQyxBQUFDLEFBQ3JCO0FBQUMsQUFBQyxBQUFJLG1CQUFDLEFBQUM7QUFDTixBQUFLLHNCQUFDLEFBQVEsU0FBQyxBQUFFLEFBQUMsQUFBQyxBQUNyQjtBQUFDLEFBQ0g7QUFBQyxBQUNIO0FBQUM7QUFFTyxBQUFTLGNBQUMsQUFBZTtBQUMvQixBQUF1RTtBQUN2RSxBQUFzRTtBQUN0RSxBQUF1RTtBQUN2RSxBQUF3RTtBQUN4RSxBQUF1RTtBQUN2RSxBQUF3RTtBQUN4RSxBQUFVO0FBQ1YsQUFBRTtBQUNGLEFBQXdFO0FBQ3hFLEFBQXdFO0FBQ3hFLEFBQXVFO0FBQ3ZFLEFBQVU7QUFDVixBQUFFO0FBQ0YsQUFBc0U7QUFDdEUsQUFBc0U7QUFDdEUsQUFBK0Q7QUFDL0QsQUFBRTtBQUNGLEFBQW9CO0FBQ3BCLEFBQW9EO0FBQ3BELEFBQXNCO0FBQ3RCLEFBQUU7QUFDRixBQUF1RTtBQUN2RSxBQUFzRTtBQUN0RSxBQUF3RTtBQUN4RSxBQUF3QztBQUN4QyxBQUFFO0FBQ0YsQUFBd0U7QUFDeEUsQUFBeUU7QUFDekUsQUFBZ0Q7QUFFaEQsQUFBTSxlQUFDLEFBQVcsQUFBQyxBQUNyQjtBQUFDO0FBRUQsQUFBTTtBQUNKLFlBQUksRUFBRSxBQUFLLE9BQUUsQUFBSSxNQUFFLEFBQUksTUFBRSxBQUFPLEFBQUUsWUFBRyxBQUFJLEFBQUM7QUFFMUMsQUFBRSxBQUFDLFlBQUMsQUFBTyxBQUFDLFNBQUMsQUFBQztBQUNaLEFBQU07QUFDSixBQUFJO0FBQ0osQUFBSTtBQUNKLEFBQU8seUJBQUUsQUFBSTtBQUNiLEFBQVEsMEJBQUUsQ0FBQyxBQUFPLFFBQUMsQUFBTSxBQUFFLEFBQUMsQUFDN0IsQUFBQyxBQUNKO0FBTlM7QUFNUixBQUFDLEFBQUksZUFBQyxBQUFDO0FBQ04sQUFBTSxtQkFBQyxBQUFLLE1BQUMsQUFBTSxBQUFFLEFBQUMsQUFDeEI7QUFBQyxBQUNIO0FBQUMsQUFDRixBQUVELEFBQU07O01BQXFDLHNDQUFRLEFBQXNDO0FBQXpGOztBQUNFLGFBQUksT0FBRyxBQUEyQixBQUFDLEFBYXJDO0FBQUM7QUFYVyxBQUFTLGNBQUMsQUFBNEI7QUFDOUMsQUFBTSxlQUFDLEFBQUcscUJBQUMsQUFBUyxXQUFFLEFBQWMsQUFBQyxBQUFDLEFBQ3hDO0FBQUM7QUFFUyxBQUFNLFdBQUMsQUFBd0IsS0FBRSxBQUFjLFFBQUUsQUFBd0I7QUFDakYsQUFBTSxlQUFDLEFBQWMsNEJBQUMsQUFBRyxLQUFFLEFBQU0sUUFBRSxBQUFLLEFBQUMsQUFBQyxBQUM1QztBQUFDO0FBRVMsQUFBVSxlQUFDLEFBQU8sS0FBRSxBQUE2QixZQUFFLEFBQXdDLE9BQUUsQUFBZ0IsUUFBRSxBQUFjO0FBQ3JJLEFBQU0sZUFBQyxJQUFJLEFBQTZCLDhCQUFDLEFBQUssT0FBRSxBQUFNLFFBQUUsQUFBTSxBQUFDLEFBQUMsQUFDbEU7QUFBQyxBQUNGOzs7QUFFRCxNQUFvQyxzQ0FBUSxBQUErQjtBQUEzRTs7QUFDRSxhQUFJLE9BQUcsQUFBMkIsQUFBQyxBQUtyQztBQUFDO0FBSFcsQUFBTSxXQUFDLEFBQXdCLEtBQUUsQUFBYyxRQUFFLEFBQXdCO0FBQ2pGLEFBQU0sZUFBQyxBQUFjLDRCQUFDLEFBQUcsS0FBRSxBQUFNLFFBQUUsQUFBSyxBQUFDLEFBQUMsQUFDNUM7QUFBQyxBQUNGLEFBRUQsQUFBTTs7TUFBbUMsb0NBQVEsQUFBc0M7QUFBdkY7O0FBQ0UsYUFBSSxPQUFHLEFBQXlCLEFBQUM7QUFFdkIsYUFBWSxlQUFHLEFBQTZCLEFBQUMsQUFhekQ7QUFBQztBQVhXLEFBQVMsY0FBQyxBQUE0QjtBQUM5QyxBQUFNLGVBQUMsQUFBRyxxQkFBQyxBQUFTLFdBQUUsQUFBYyxBQUFDLEFBQUMsQUFDeEM7QUFBQztBQUVTLEFBQU0sV0FBQyxBQUF3QixLQUFFLEFBQWMsUUFBRSxBQUF3QjtBQUNqRixBQUFNLGVBQUMsQUFBYyw0QkFBQyxBQUFHLEtBQUUsQUFBTSxRQUFFLEFBQUssQUFBQyxBQUFDLEFBQzVDO0FBQUM7QUFFUyxBQUFVLGVBQUMsQUFBTyxLQUFFLEFBQTRCLFdBQUUsQUFBd0MsT0FBRSxBQUFnQixRQUFFLEFBQWM7QUFDcEksQUFBTSxlQUFDLElBQUksQUFBMkIsNEJBQUMsQUFBUyxXQUFFLEFBQUssT0FBRSxBQUFNLFFBQUUsQUFBTSxBQUFDLEFBQUMsQUFDM0U7QUFBQyxBQUNGOzs7QUFFRCxNQUFrQyxvQ0FBUSxBQUFzQztBQUFoRjs7QUFDRSxhQUFJLE9BQUcsQUFBeUIsQUFBQyxBQUtuQztBQUFDO0FBSFcsQUFBTSxXQUFDLEFBQXdCLEtBQUUsQUFBYyxRQUFFLEFBQXdCO0FBQ2pGLEFBQU0sZUFBQyxBQUFjLDRCQUFDLEFBQUcsS0FBRSxBQUFNLFFBQUUsQUFBSyxBQUFDLEFBQUMsQUFDNUM7QUFBQyxBQUNGLEFBRUQsQUFBTTs7TUFBcUMsc0NBQVEsQUFBc0M7QUFBekY7O0FBQ0UsYUFBSSxPQUFHLEFBQTJCLEFBQUMsQUFhckM7QUFBQztBQVhXLEFBQVMsY0FBQyxBQUE0QjtBQUM5QyxBQUFNLGVBQUMsQUFBRyxxQkFBQyxBQUFTLFdBQUUsQUFBcUIsQUFBQyxBQUFDLEFBQy9DO0FBQUM7QUFFUyxBQUFNLFdBQUMsQUFBd0IsS0FBRSxBQUFjLFFBQUUsQUFBd0I7QUFDakYsQUFBTSxlQUFDLEFBQWMsNEJBQUMsQUFBRyxLQUFFLEFBQU0sUUFBRSxBQUFLLEFBQUMsQUFBQyxBQUM1QztBQUFDO0FBRVMsQUFBVSxlQUFDLEFBQU8sS0FBRSxBQUE2QixZQUFFLEFBQXdDLE9BQUUsQUFBZ0IsUUFBRSxBQUFjO0FBQ3JJLEFBQU0sZUFBQyxJQUFJLEFBQTZCLDhCQUFDLEFBQUssT0FBRSxBQUFNLFFBQUUsQUFBTSxBQUFDLEFBQUMsQUFDbEU7QUFBQyxBQUNGOzs7QUFFRCxNQUFvQyxzQ0FBUSxBQUErQjtBQUEzRTs7QUFDRSxhQUFJLE9BQUcsQUFBMkIsQUFBQyxBQUtyQztBQUFDO0FBSFcsQUFBTSxXQUFDLEFBQXdCLEtBQUUsQUFBYyxRQUFFLEFBQXdCO0FBQ2pGLEFBQU0sZUFBQyxBQUFjLDRCQUFDLEFBQUcsS0FBRSxBQUFNLFFBQUUsQUFBSyxBQUFDLEFBQUMsQUFDNUM7QUFBQyxBQUNGLEFBRUQsQUFBTTs7TUFBbUMsb0NBQVEsQUFBc0M7QUFBdkY7O0FBQ0UsYUFBSSxPQUFHLEFBQXlCLEFBQUM7QUFFdkIsYUFBWSxlQUFHLEFBQTZCLEFBQUMsQUFhekQ7QUFBQztBQVhXLEFBQVMsY0FBQyxBQUE0QjtBQUM5QyxBQUFNLGVBQUMsQUFBRyxxQkFBQyxBQUFTLFdBQUUsQUFBcUIsQUFBQyxBQUFDLEFBQy9DO0FBQUM7QUFFUyxBQUFNLFdBQUMsQUFBd0IsS0FBRSxBQUFjLFFBQUUsQUFBd0I7QUFDakYsQUFBTSxlQUFDLEFBQWMsNEJBQUMsQUFBRyxLQUFFLEFBQU0sUUFBRSxBQUFLLEFBQUMsQUFBQyxBQUM1QztBQUFDO0FBRVMsQUFBVSxlQUFDLEFBQU8sS0FBRSxBQUE0QixXQUFFLEFBQXdDLE9BQUUsQUFBZ0IsUUFBRSxBQUFjO0FBQ3BJLEFBQU0sZUFBQyxJQUFJLEFBQTJCLDRCQUFDLEFBQVMsV0FBRSxBQUFLLE9BQUUsQUFBTSxRQUFFLEFBQU0sQUFBQyxBQUFDLEFBQzNFO0FBQUMsQUFDRjs7O0FBRUQsTUFBa0Msb0NBQVEsQUFBc0M7QUFBaEY7O0FBQ0UsYUFBSSxPQUFHLEFBQWlCLEFBQUMsQUFLM0I7QUFBQztBQUhXLEFBQU0sV0FBQyxBQUF3QixLQUFFLEFBQWMsUUFBRSxBQUF3QjtBQUNqRixBQUFNLGVBQUMsQUFBYyw0QkFBQyxBQUFHLEtBQUUsQUFBTSxRQUFFLEFBQUssQUFBQyxBQUFDLEFBQzVDO0FBQUMsQUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBVcHNlcnQsIHtcbiAgSW5zZXJ0aW9uLFxuICBDYXV0aW91c0luc2VydGlvbixcbiAgVHJ1c3RpbmdJbnNlcnRpb24sXG5cbiAgaXNTYWZlU3RyaW5nLFxuICBpc05vZGUsXG4gIGlzU3RyaW5nLFxuXG4gIGNhdXRpb3VzSW5zZXJ0LFxuICB0cnVzdGluZ0luc2VydFxufSBmcm9tICcuLi8uLi91cHNlcnQnO1xuaW1wb3J0IHsgaXNDb21wb25lbnREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50L2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRE9NVHJlZUNvbnN0cnVjdGlvbiB9IGZyb20gJy4uLy4uL2RvbS9oZWxwZXInO1xuaW1wb3J0IHsgT3Bjb2RlSlNPTiwgVXBkYXRpbmdPcGNvZGUgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IFZNLCBVcGRhdGluZ1ZNIH0gZnJvbSAnLi4vLi4vdm0nO1xuaW1wb3J0IHsgVHJ5T3Bjb2RlIH0gZnJvbSAnLi4vLi4vdm0vdXBkYXRlJztcbmltcG9ydCB7IFJlZmVyZW5jZSwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgUmVmZXJlbmNlQ2FjaGUsIFVwZGF0YWJsZVRhZywgVGFnV3JhcHBlciwgaXNNb2RpZmllZCwgaXNDb25zdCwgbWFwIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IE9wdGlvbiwgT3BhcXVlIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBDdXJzb3IsIGNsZWFyIH0gZnJvbSAnLi4vLi4vYm91bmRzJztcbmltcG9ydCB7IEZyYWdtZW50IH0gZnJvbSAnLi4vLi4vYnVpbGRlcic7XG5pbXBvcnQgeyBDb25kaXRpb25hbFJlZmVyZW5jZSB9IGZyb20gJy4uLy4uL3JlZmVyZW5jZXMnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBBUFBFTkRfT1BDT0RFUywgT3AgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkR5bmFtaWNDb250ZW50LCAodm0sIHsgb3AxOiBhcHBlbmQgfSkgPT4ge1xuICBsZXQgb3Bjb2RlID0gdm0uY29uc3RhbnRzLmdldE90aGVyKGFwcGVuZCkgYXMgQXBwZW5kRHluYW1pY09wY29kZTxJbnNlcnRpb24+O1xuICBvcGNvZGUuZXZhbHVhdGUodm0pO1xufSk7XG5cbmZ1bmN0aW9uIGlzRW1wdHkodmFsdWU6IE9wYXF1ZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgdmFsdWVbJ3RvU3RyaW5nJ10gIT09ICdmdW5jdGlvbic7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVUZXh0VmFsdWUodmFsdWU6IE9wYXF1ZSk6IHN0cmluZyB7XG4gIGlmIChpc0VtcHR5KHZhbHVlKSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplVHJ1c3RlZFZhbHVlKHZhbHVlOiBPcGFxdWUpOiBUcnVzdGluZ0luc2VydGlvbiB7XG4gIGlmIChpc0VtcHR5KHZhbHVlKSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmIChpc1NhZmVTdHJpbmcodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLnRvSFRNTCgpO1xuICB9XG4gIGlmIChpc05vZGUodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBTdHJpbmcodmFsdWUpO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVWYWx1ZSh2YWx1ZTogT3BhcXVlKTogQ2F1dGlvdXNJbnNlcnRpb24ge1xuICBpZiAoaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNTYWZlU3RyaW5nKHZhbHVlKSB8fCBpc05vZGUodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBTdHJpbmcodmFsdWUpO1xufVxuXG5leHBvcnQgdHlwZSBBcHBlbmREeW5hbWljT3Bjb2RlQ29uc3RydWN0b3IgPSAgdHlwZW9mIE9wdGltaXplZENhdXRpb3VzQXBwZW5kT3Bjb2RlIHwgdHlwZW9mIE9wdGltaXplZFRydXN0aW5nQXBwZW5kT3Bjb2RlO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXBwZW5kRHluYW1pY09wY29kZTxUIGV4dGVuZHMgSW5zZXJ0aW9uPiB7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBub3JtYWxpemUocmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPik6IFJlZmVyZW5jZTxUPjtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogVCk6IFVwc2VydDtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHVwZGF0ZVdpdGgodm06IFZNLCByZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+LCBjYWNoZTogUmVmZXJlbmNlQ2FjaGU8VD4sIGJvdW5kczogRnJhZ21lbnQsIHVwc2VydDogVXBzZXJ0KTogVXBkYXRpbmdPcGNvZGU7XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgbGV0IHJlZmVyZW5jZSA9IHZtLnN0YWNrLnBvcDxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4+KCk7XG4gICAgbGV0IG5vcm1hbGl6ZWQgPSB0aGlzLm5vcm1hbGl6ZShyZWZlcmVuY2UpO1xuXG4gICAgbGV0IHZhbHVlLCBjYWNoZTtcblxuICAgIGlmIChpc0NvbnN0KHJlZmVyZW5jZSkpIHtcbiAgICAgIHZhbHVlID0gbm9ybWFsaXplZC52YWx1ZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYWNoZSA9IG5ldyBSZWZlcmVuY2VDYWNoZShub3JtYWxpemVkKTtcbiAgICAgIHZhbHVlID0gY2FjaGUucGVlaygpO1xuICAgIH1cblxuICAgIGxldCBzdGFjayA9IHZtLmVsZW1lbnRzKCk7XG4gICAgbGV0IHVwc2VydCA9IHRoaXMuaW5zZXJ0KHZtLmVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCksIHN0YWNrLCB2YWx1ZSk7XG4gICAgbGV0IGJvdW5kcyA9IG5ldyBGcmFnbWVudCh1cHNlcnQuYm91bmRzKTtcblxuICAgIHN0YWNrLm5ld0JvdW5kcyhib3VuZHMpO1xuXG4gICAgaWYgKGNhY2hlIC8qIGkuZS4gIWlzQ29uc3QocmVmZXJlbmNlKSAqLykge1xuICAgICAgdm0udXBkYXRlV2l0aCh0aGlzLnVwZGF0ZVdpdGgodm0sIHJlZmVyZW5jZSwgY2FjaGUsIGJvdW5kcywgdXBzZXJ0KSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBHdWFyZGVkQXBwZW5kT3Bjb2RlPFQgZXh0ZW5kcyBJbnNlcnRpb24+IGV4dGVuZHMgQXBwZW5kRHluYW1pY09wY29kZTxUPiB7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBBcHBlbmRPcGNvZGU6IHR5cGVvZiBPcHRpbWl6ZWRDYXV0aW91c0FwcGVuZE9wY29kZSB8IHR5cGVvZiBPcHRpbWl6ZWRUcnVzdGluZ0FwcGVuZE9wY29kZTtcbiAgcHJpdmF0ZSBzdGFydCA9IC0xO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBnZXQgZGVvcHRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zdGFydCA9PT0gLTE7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICBpZiAodGhpcy5kZW9wdGVkKSB7XG4gICAgICB2bS5nb3RvKHRoaXMuc3RhcnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgdmFsdWUgPSB2bS5zdGFjay5wb3AoKTtcblxuICAgICAgaWYoaXNDb21wb25lbnREZWZpbml0aW9uKHZhbHVlKSkge1xuICAgICAgICB0aGlzLmRlb3B0KHZtLmVudik7XG4gICAgICAgIHZtLmdvdG8odGhpcy5zdGFydCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2bS5zdGFjay5wdXNoKHZhbHVlKTtcbiAgICAgICAgc3VwZXIuZXZhbHVhdGUodm0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkZW9wdChfZW52OiBFbnZpcm9ubWVudCk6IG51bWJlciB7IC8vIFB1YmxpYyBiZWNhdXNlIGl0J3MgdXNlZCBpbiB0aGUgbGF6eSBkZW9wdFxuICAgIC8vIEF0IGNvbXBpbGUgdGltZSwgd2UgZGV0ZXJtaW5lZCB0aGF0IHRoaXMgYXBwZW5kIGNhbGxzaXRlIG1pZ2h0IHJlZmVyXG4gICAgLy8gdG8gYSBsb2NhbCB2YXJpYWJsZS9wcm9wZXJ0eSBsb29rdXAgdGhhdCByZXNvbHZlcyB0byBhIGNvbXBvbmVudFxuICAgIC8vIGRlZmluaXRpb24gYXQgcnVudGltZS5cbiAgICAvL1xuICAgIC8vIFdlIGNvdWxkIGhhdmUgZWFnZXJseSBjb21waWxlZCB0aGlzIGNhbGxzaXRlIGludG8gc29tZXRoaW5nIGxpa2UgdGhpczpcbiAgICAvL1xuICAgIC8vICAge3sjaWYgKGlzLWNvbXBvbmVudC1kZWZpbml0aW9uIGZvbyl9fVxuICAgIC8vICAgICB7e2NvbXBvbmVudCBmb299fVxuICAgIC8vICAge3tlbHNlfX1cbiAgICAvLyAgICAge3tmb299fVxuICAgIC8vICAge3svaWZ9fVxuICAgIC8vXG4gICAgLy8gSG93ZXZlciwgaW4gcHJhY3RpY2UsIHRoZXJlIG1pZ2h0IGJlIGEgbGFyZ2UgYW1vdXQgb2YgdGhlc2UgY2FsbHNpdGVzXG4gICAgLy8gYW5kIG1vc3Qgb2YgdGhlbSB3b3VsZCByZXNvbHZlIHRvIGEgc2ltcGxlIHZhbHVlIGxvb2t1cC4gVGhlcmVmb3JlLCB3ZVxuICAgIC8vIHRyaWVkIHRvIGJlIG9wdGltaXN0aWMgYW5kIGFzc3VtZWQgdGhhdCB0aGUgY2FsbHNpdGUgd2lsbCByZXNvbHZlIHRvXG4gICAgLy8gYXBwZW5kaW5nIGEgc2ltcGxlIHZhbHVlLlxuICAgIC8vXG4gICAgLy8gSG93ZXZlciwgd2UgaGF2ZSByZWFjaGVkIGhlcmUgYmVjYXVzZSBhdCBydW50aW1lLCB0aGUgZ3VhcmQgY29uZGl0aW9uYWxcbiAgICAvLyBoYXZlIGRldGVjdGVkIHRoYXQgdGhpcyBjYWxsc2l0ZSBpcyBpbmRlZWQgcmVmZXJyaW5nIHRvIGEgY29tcG9uZW50XG4gICAgLy8gZGVmaW5pdGlvbiBvYmplY3QuIFNpbmNlIHRoaXMgaXMgbGlrZWx5IGdvaW5nIHRvIGJlIHRydWUgZm9yIG90aGVyXG4gICAgLy8gaW5zdGFuY2VzIG9mIHRoZSBzYW1lIGNhbGxzaXRlLCBpdCBpcyBub3cgYXBwcm9waWF0ZSB0byBkZW9wdCBpbnRvIHRoZVxuICAgIC8vIGV4cGFuZGVkIHZlcnNpb24gdGhhdCBoYW5kbGVzIGJvdGggY2FzZXMuIFRoZSBjb21waWxhdGlvbiB3b3VsZCBsb29rXG4gICAgLy8gbGlrZSB0aGlzOlxuICAgIC8vXG4gICAgLy8gICAgICAgICAgICAgICBQdXRWYWx1ZShleHByZXNzaW9uKVxuICAgIC8vICAgICAgICAgICAgICAgVGVzdChpcy1jb21wb25lbnQtZGVmaW5pdGlvbilcbiAgICAvLyAgICAgICAgICAgICAgIEVudGVyKEJFR0lOLCBFTkQpXG4gICAgLy8gICBCRUdJTjogICAgICBOb29wXG4gICAgLy8gICAgICAgICAgICAgICBKdW1wVW5sZXNzKFZBTFVFKVxuICAgIC8vICAgICAgICAgICAgICAgUHV0RHluYW1pY0NvbXBvbmVudERlZmluaXRpb25PcGNvZGVcbiAgICAvLyAgICAgICAgICAgICAgIE9wZW5Db21wb25lbnRcbiAgICAvLyAgICAgICAgICAgICAgIENsb3NlQ29tcG9uZW50XG4gICAgLy8gICAgICAgICAgICAgICBKdW1wKEVORClcbiAgICAvLyAgIFZBTFVFOiAgICAgIE5vb3BcbiAgICAvLyAgICAgICAgICAgICAgIE9wdGltaXplZEFwcGVuZFxuICAgIC8vICAgRU5EOiAgICAgICAgTm9vcFxuICAgIC8vICAgICAgICAgICAgICAgRXhpdFxuICAgIC8vXG4gICAgLy8gS2VlcCBpbiBtaW5kIHRoYXQgZXZlbiBpZiB3ZSAqZG9uJ3QqIHJlYWNoIGhlcmUgYXQgaW5pdGlhbCByZW5kZXIgdGltZSxcbiAgICAvLyBpdCBpcyBzdGlsbCBwb3NzaWJsZSAoYWx0aG91Z2ggcXVpdGUgcmFyZSkgdGhhdCB0aGUgc2ltcGxlIHZhbHVlIHdlXG4gICAgLy8gZW5jb3VudGVyIGR1cmluZyBpbml0aWFsIHJlbmRlciBjb3VsZCBsYXRlciBjaGFuZ2UgaW50byBhIGNvbXBvbmVudFxuICAgIC8vIGRlZmluaXRpb24gb2JqZWN0IGF0IHVwZGF0ZSB0aW1lLiBUaGF0IGlzIGhhbmRsZWQgYnkgdGhlIFwibGF6eSBkZW9wdFwiXG4gICAgLy8gY29kZSBvbiB0aGUgdXBkYXRlIHNpZGUgKHNjcm9sbCBkb3duIGZvciB0aGUgbmV4dCBiaWcgYmxvY2sgb2YgY29tbWVudCkuXG5cbiAgICByZXR1cm4gbnVsbCBhcyBhbnk7XG4gIH1cbn1cblxuY2xhc3MgSXNDb21wb25lbnREZWZpbml0aW9uUmVmZXJlbmNlIGV4dGVuZHMgQ29uZGl0aW9uYWxSZWZlcmVuY2Uge1xuICBzdGF0aWMgY3JlYXRlKGlubmVyOiBSZWZlcmVuY2U8T3BhcXVlPik6IElzQ29tcG9uZW50RGVmaW5pdGlvblJlZmVyZW5jZSB7XG4gICAgcmV0dXJuIG5ldyBJc0NvbXBvbmVudERlZmluaXRpb25SZWZlcmVuY2UoaW5uZXIpO1xuICB9XG5cbiAgdG9Cb29sKHZhbHVlOiBPcGFxdWUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNDb21wb25lbnREZWZpbml0aW9uKHZhbHVlKTtcbiAgfVxufVxuXG5hYnN0cmFjdCBjbGFzcyBVcGRhdGVPcGNvZGU8VCBleHRlbmRzIEluc2VydGlvbj4gZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBjYWNoZTogUmVmZXJlbmNlQ2FjaGU8VD4sXG4gICAgcHJvdGVjdGVkIGJvdW5kczogRnJhZ21lbnQsXG4gICAgcHJvdGVjdGVkIHVwc2VydDogVXBzZXJ0XG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy50YWcgPSBjYWNoZS50YWc7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBUKTogVXBzZXJ0O1xuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5jYWNoZS5yZXZhbGlkYXRlKCk7XG5cbiAgICBpZiAoaXNNb2RpZmllZCh2YWx1ZSkpIHtcbiAgICAgIGxldCB7IGJvdW5kcywgdXBzZXJ0IH0gPSB0aGlzO1xuICAgICAgbGV0IHsgZG9tIH0gPSB2bTtcblxuICAgICAgaWYoIXRoaXMudXBzZXJ0LnVwZGF0ZShkb20sIHZhbHVlKSkge1xuICAgICAgICBsZXQgY3Vyc29yID0gbmV3IEN1cnNvcihib3VuZHMucGFyZW50RWxlbWVudCgpLCBjbGVhcihib3VuZHMpKTtcbiAgICAgICAgdXBzZXJ0ID0gdGhpcy51cHNlcnQgPSB0aGlzLmluc2VydCh2bS5lbnYuZ2V0QXBwZW5kT3BlcmF0aW9ucygpLCBjdXJzb3IsIHZhbHVlIGFzIFQpO1xuICAgICAgfVxuXG4gICAgICBib3VuZHMudXBkYXRlKHVwc2VydC5ib3VuZHMpO1xuICAgIH1cbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICBsZXQgeyBfZ3VpZDogZ3VpZCwgdHlwZSwgY2FjaGUgfSA9IHRoaXM7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZCxcbiAgICAgIHR5cGUsXG4gICAgICBkZXRhaWxzOiB7IGxhc3RWYWx1ZTogSlNPTi5zdHJpbmdpZnkoY2FjaGUucGVlaygpKSB9XG4gICAgfTtcbiAgfVxufVxuXG5hYnN0cmFjdCBjbGFzcyBHdWFyZGVkVXBkYXRlT3Bjb2RlPFQgZXh0ZW5kcyBJbnNlcnRpb24+IGV4dGVuZHMgVXBkYXRlT3Bjb2RlPFQ+IHtcbiAgcHJpdmF0ZSBfdGFnOiBUYWdXcmFwcGVyPFVwZGF0YWJsZVRhZz47XG4gIHByaXZhdGUgZGVvcHRlZDogT3B0aW9uPFRyeU9wY29kZT4gPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPixcbiAgICBjYWNoZTogUmVmZXJlbmNlQ2FjaGU8VD4sXG4gICAgYm91bmRzOiBGcmFnbWVudCxcbiAgICB1cHNlcnQ6IFVwc2VydFxuICApIHtcbiAgICBzdXBlcihjYWNoZSwgYm91bmRzLCB1cHNlcnQpO1xuICAgIHRoaXMudGFnID0gdGhpcy5fdGFnID0gVXBkYXRhYmxlVGFnLmNyZWF0ZSh0aGlzLnRhZyk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVXBkYXRpbmdWTSkge1xuICAgIGlmICh0aGlzLmRlb3B0ZWQpIHtcbiAgICAgIHZtLmV2YWx1YXRlT3Bjb2RlKHRoaXMuZGVvcHRlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChpc0NvbXBvbmVudERlZmluaXRpb24odGhpcy5yZWZlcmVuY2UudmFsdWUoKSkpIHtcbiAgICAgICAgdGhpcy5sYXp5RGVvcHQodm0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3VwZXIuZXZhbHVhdGUodm0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbGF6eURlb3B0KF92bTogVXBkYXRpbmdWTSkge1xuICAgIC8vIER1cmlnbiBpbml0aWFsIHJlbmRlciwgd2Uga25vdyB0aGF0IHRoZSByZWZlcmVuY2UgZG9lcyBub3QgY29udGFpbiBhXG4gICAgLy8gY29tcG9uZW50IGRlZmluaXRpb24sIHNvIHdlIG9wdGltaXN0aWNhbGx5IGFzc3VtZWQgdGhhdCB0aGlzIGFwcGVuZFxuICAgIC8vIGlzIGp1c3QgYSBub3JtYWwgYXBwZW5kLiBIb3dldmVyLCBhdCB1cGRhdGUgdGltZSwgd2UgZGlzY292ZXJlZCB0aGF0XG4gICAgLy8gdGhlIHJlZmVyZW5jZSBoYXMgc3dpdGNoZWQgaW50byBjb250YWluaW5nIGEgY29tcG9uZW50IGRlZmluaXRpb24sIHNvXG4gICAgLy8gd2UgbmVlZCB0byBkbyBhIFwibGF6eSBkZW9wdFwiLCBzaW11bGF0aW5nIHdoYXQgd291bGQgaGF2ZSBoYXBwZW5lZCBpZlxuICAgIC8vIHdlIGhhZCBkZWNpZGVkIHRvIHBlcmZvcm0gdGhlIGRlb3B0IGluIHRoZSBmaXJzdCBwbGFjZSBkdXJpbmcgaW5pdGlhbFxuICAgIC8vIHJlbmRlci5cbiAgICAvL1xuICAgIC8vIE1vcmUgY29uY3JldGVseSwgd2Ugd291bGQgaGF2ZSBleHBhbmRlZCB0aGUgY3VybHkgaW50byBhIGlmL2Vsc2UsIGFuZFxuICAgIC8vIGJhc2VkIG9uIHdoZXRoZXIgdGhlIHZhbHVlIGlzIGEgY29tcG9uZW50IGRlZmluaXRpb24gb3Igbm90LCB3ZSB3b3VsZFxuICAgIC8vIGhhdmUgZW50ZXJlZCBlaXRoZXIgdGhlIGR5bmFtaWMgY29tcG9uZW50IGJyYW5jaCBvciB0aGUgc2ltcGxlIHZhbHVlXG4gICAgLy8gYnJhbmNoLlxuICAgIC8vXG4gICAgLy8gU2luY2Ugd2UgcmVuZGVyZWQgYSBzaW1wbGUgdmFsdWUgZHVyaW5nIGluaXRpYWwgcmVuZGVyIChhbmQgYWxsIHRoZVxuICAgIC8vIHVwZGF0ZXMgdXAgdW50aWwgdGhpcyBwb2ludCksIHdlIG5lZWQgdG8gcHJldGVuZCB0aGF0IHRoZSByZXN1bHQgaXNcbiAgICAvLyBwcm9kdWNlZCBieSB0aGUgXCJWQUxVRVwiIGJyYW5jaCBvZiB0aGUgZGVvcHRlZCBhcHBlbmQgb3Bjb2RlOlxuICAgIC8vXG4gICAgLy8gICBUcnkoQkVHSU4sIEVORClcbiAgICAvLyAgICAgQXNzZXJ0KElzQ29tcG9uZW50RGVmaW5pdGlvbiwgZXhwZWN0ZWQ9ZmFsc2UpXG4gICAgLy8gICAgIE9wdGltaXplZFVwZGF0ZVxuICAgIC8vXG4gICAgLy8gSW4gdGhpcyBjYXNlLCBiZWNhdXNlIHRoZSByZWZlcmVuY2UgaGFzIHN3aXRjaGVkIGZyb20gYmVpbmcgYSBzaW1wbGVcbiAgICAvLyB2YWx1ZSBpbnRvIGEgY29tcG9uZW50IGRlZmluaXRpb24sIHdoYXQgd291bGQgaGF2ZSBoYXBwZW5lZCBpcyB0aGF0XG4gICAgLy8gdGhlIGFzc2VydCB3b3VsZCB0aHJvdywgY2F1c2luZyB0aGUgVHJ5IG9wY29kZSB0byB0ZWFyZG93biB0aGUgYm91bmRzXG4gICAgLy8gYW5kIHJlcnVuIHRoZSBvcmlnaW5hbCBhcHBlbmQgb3Bjb2RlLlxuICAgIC8vXG4gICAgLy8gU2luY2UgdGhlIFRyeSBvcGNvZGUgd291bGQgaGF2ZSBudWtlZCB0aGUgdXBkYXRpbmcgb3Bjb2RlcyBhbnl3YXksIHdlXG4gICAgLy8gd291bGRuJ3QgaGF2ZSB0byB3b3JyeSBhYm91dCBzaW11bGF0aW5nIHRob3NlLiBBbGwgd2UgaGF2ZSB0byBkbyBpcyB0b1xuICAgIC8vIGV4ZWN1dGUgdGhlIFRyeSBvcGNvZGUgYW5kIGltbWVkaWF0ZWx5IHRocm93LlxuXG4gICAgcmV0dXJuIG51bGwgYXMgYW55O1xuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIGxldCB7IF9ndWlkOiBndWlkLCB0eXBlLCBkZW9wdGVkIH0gPSB0aGlzO1xuXG4gICAgaWYgKGRlb3B0ZWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGd1aWQsXG4gICAgICAgIHR5cGUsXG4gICAgICAgIGRlb3B0ZWQ6IHRydWUsXG4gICAgICAgIGNoaWxkcmVuOiBbZGVvcHRlZC50b0pTT04oKV1cbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBzdXBlci50b0pTT04oKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9wdGltaXplZENhdXRpb3VzQXBwZW5kT3Bjb2RlIGV4dGVuZHMgQXBwZW5kRHluYW1pY09wY29kZTxDYXV0aW91c0luc2VydGlvbj4ge1xuICB0eXBlID0gJ29wdGltaXplZC1jYXV0aW91cy1hcHBlbmQnO1xuXG4gIHByb3RlY3RlZCBub3JtYWxpemUocmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPik6IFJlZmVyZW5jZTxDYXV0aW91c0luc2VydGlvbj4ge1xuICAgIHJldHVybiBtYXAocmVmZXJlbmNlLCBub3JtYWxpemVWYWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBDYXV0aW91c0luc2VydGlvbik6IFVwc2VydCB7XG4gICAgcmV0dXJuIGNhdXRpb3VzSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlV2l0aChfdm06IFZNLCBfcmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPiwgY2FjaGU6IFJlZmVyZW5jZUNhY2hlPENhdXRpb3VzSW5zZXJ0aW9uPiwgYm91bmRzOiBGcmFnbWVudCwgdXBzZXJ0OiBVcHNlcnQpOiBVcGRhdGluZ09wY29kZSB7XG4gICAgcmV0dXJuIG5ldyBPcHRpbWl6ZWRDYXV0aW91c1VwZGF0ZU9wY29kZShjYWNoZSwgYm91bmRzLCB1cHNlcnQpO1xuICB9XG59XG5cbmNsYXNzIE9wdGltaXplZENhdXRpb3VzVXBkYXRlT3Bjb2RlIGV4dGVuZHMgVXBkYXRlT3Bjb2RlPENhdXRpb3VzSW5zZXJ0aW9uPiB7XG4gIHR5cGUgPSAnb3B0aW1pemVkLWNhdXRpb3VzLXVwZGF0ZSc7XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogQ2F1dGlvdXNJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiBjYXV0aW91c0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHdWFyZGVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUgZXh0ZW5kcyBHdWFyZGVkQXBwZW5kT3Bjb2RlPENhdXRpb3VzSW5zZXJ0aW9uPiB7XG4gIHR5cGUgPSAnZ3VhcmRlZC1jYXV0aW91cy1hcHBlbmQnO1xuXG4gIHByb3RlY3RlZCBBcHBlbmRPcGNvZGUgPSBPcHRpbWl6ZWRDYXV0aW91c0FwcGVuZE9wY29kZTtcblxuICBwcm90ZWN0ZWQgbm9ybWFsaXplKHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4pOiBSZWZlcmVuY2U8Q2F1dGlvdXNJbnNlcnRpb24+IHtcbiAgICByZXR1cm4gbWFwKHJlZmVyZW5jZSwgbm9ybWFsaXplVmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogQ2F1dGlvdXNJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiBjYXV0aW91c0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZVdpdGgoX3ZtOiBWTSwgcmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPiwgY2FjaGU6IFJlZmVyZW5jZUNhY2hlPENhdXRpb3VzSW5zZXJ0aW9uPiwgYm91bmRzOiBGcmFnbWVudCwgdXBzZXJ0OiBVcHNlcnQpOiBVcGRhdGluZ09wY29kZSB7XG4gICAgcmV0dXJuIG5ldyBHdWFyZGVkQ2F1dGlvdXNVcGRhdGVPcGNvZGUocmVmZXJlbmNlLCBjYWNoZSwgYm91bmRzLCB1cHNlcnQpO1xuICB9XG59XG5cbmNsYXNzIEd1YXJkZWRDYXV0aW91c1VwZGF0ZU9wY29kZSBleHRlbmRzIEd1YXJkZWRVcGRhdGVPcGNvZGU8Q2F1dGlvdXNJbnNlcnRpb24+IHtcbiAgdHlwZSA9ICdndWFyZGVkLWNhdXRpb3VzLXVwZGF0ZSc7XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogQ2F1dGlvdXNJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiBjYXV0aW91c0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPcHRpbWl6ZWRUcnVzdGluZ0FwcGVuZE9wY29kZSBleHRlbmRzIEFwcGVuZER5bmFtaWNPcGNvZGU8VHJ1c3RpbmdJbnNlcnRpb24+IHtcbiAgdHlwZSA9ICdvcHRpbWl6ZWQtdHJ1c3RpbmctYXBwZW5kJztcblxuICBwcm90ZWN0ZWQgbm9ybWFsaXplKHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4pOiBSZWZlcmVuY2U8VHJ1c3RpbmdJbnNlcnRpb24+IHtcbiAgICByZXR1cm4gbWFwKHJlZmVyZW5jZSwgbm9ybWFsaXplVHJ1c3RlZFZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IFRydXN0aW5nSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgICByZXR1cm4gdHJ1c3RpbmdJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVXaXRoKF92bTogVk0sIF9yZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+LCBjYWNoZTogUmVmZXJlbmNlQ2FjaGU8VHJ1c3RpbmdJbnNlcnRpb24+LCBib3VuZHM6IEZyYWdtZW50LCB1cHNlcnQ6IFVwc2VydCk6IFVwZGF0aW5nT3Bjb2RlIHtcbiAgICByZXR1cm4gbmV3IE9wdGltaXplZFRydXN0aW5nVXBkYXRlT3Bjb2RlKGNhY2hlLCBib3VuZHMsIHVwc2VydCk7XG4gIH1cbn1cblxuY2xhc3MgT3B0aW1pemVkVHJ1c3RpbmdVcGRhdGVPcGNvZGUgZXh0ZW5kcyBVcGRhdGVPcGNvZGU8VHJ1c3RpbmdJbnNlcnRpb24+IHtcbiAgdHlwZSA9ICdvcHRpbWl6ZWQtdHJ1c3RpbmctdXBkYXRlJztcblxuICBwcm90ZWN0ZWQgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBUcnVzdGluZ0luc2VydGlvbik6IFVwc2VydCB7XG4gICAgcmV0dXJuIHRydXN0aW5nSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEd1YXJkZWRUcnVzdGluZ0FwcGVuZE9wY29kZSBleHRlbmRzIEd1YXJkZWRBcHBlbmRPcGNvZGU8VHJ1c3RpbmdJbnNlcnRpb24+IHtcbiAgdHlwZSA9ICdndWFyZGVkLXRydXN0aW5nLWFwcGVuZCc7XG5cbiAgcHJvdGVjdGVkIEFwcGVuZE9wY29kZSA9IE9wdGltaXplZFRydXN0aW5nQXBwZW5kT3Bjb2RlO1xuXG4gIHByb3RlY3RlZCBub3JtYWxpemUocmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPik6IFJlZmVyZW5jZTxUcnVzdGluZ0luc2VydGlvbj4ge1xuICAgIHJldHVybiBtYXAocmVmZXJlbmNlLCBub3JtYWxpemVUcnVzdGVkVmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogVHJ1c3RpbmdJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiB0cnVzdGluZ0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZVdpdGgoX3ZtOiBWTSwgcmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPiwgY2FjaGU6IFJlZmVyZW5jZUNhY2hlPFRydXN0aW5nSW5zZXJ0aW9uPiwgYm91bmRzOiBGcmFnbWVudCwgdXBzZXJ0OiBVcHNlcnQpOiBVcGRhdGluZ09wY29kZSB7XG4gICAgcmV0dXJuIG5ldyBHdWFyZGVkVHJ1c3RpbmdVcGRhdGVPcGNvZGUocmVmZXJlbmNlLCBjYWNoZSwgYm91bmRzLCB1cHNlcnQpO1xuICB9XG59XG5cbmNsYXNzIEd1YXJkZWRUcnVzdGluZ1VwZGF0ZU9wY29kZSBleHRlbmRzIEd1YXJkZWRVcGRhdGVPcGNvZGU8VHJ1c3RpbmdJbnNlcnRpb24+IHtcbiAgdHlwZSA9ICd0cnVzdGluZy11cGRhdGUnO1xuXG4gIHByb3RlY3RlZCBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IFRydXN0aW5nSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgICByZXR1cm4gdHJ1c3RpbmdJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvbnRlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxBQUFlLEFBS2IsQUFBWSxBQUNaLEFBQU0sQUFDTixBQUFRLEFBRVIsQUFBYyxBQUNkLEFBQWMsQUFDZixBQUFNLEFBQWMsQUFBQzs7QUFDdEIsQUFBTyxBQUFFLEFBQXFCLEFBQUUsQUFBTSxBQUE0QixBQUFDOztBQUVuRSxBQUFPLEFBQWMsQUFBYyxBQUFFLEFBQU0sQUFBZSxBQUFDOztBQUczRCxBQUFPLEFBQXFDLEFBQWMsQUFBRSxBQUFZLEFBQWMsQUFBVSxBQUFFLEFBQU8sQUFBRSxBQUFHLEFBQUUsQUFBTSxBQUFvQixBQUFDOztBQUUzSSxBQUFPLEFBQUUsQUFBTSxBQUFFLEFBQUssQUFBRSxBQUFNLEFBQWMsQUFBQzs7QUFDN0MsQUFBTyxBQUFFLEFBQVEsQUFBRSxBQUFNLEFBQWUsQUFBQzs7QUFDekMsQUFBTyxBQUFFLEFBQW9CLEFBQUUsQUFBTSxBQUFrQixBQUFDLEFBRXhELEFBQU8sQUFBRSxBQUFjLEFBQU0sQUFBTSxBQUFlLEFBQUM7O0FBRW5ELEFBQWMsd0JBQUMsQUFBRyxJQUFDLEdBQWlCLHNCQUFFLENBQUMsQUFBRSxJQUFFLEVBQUUsQUFBRyxLQUFFLEFBQU0sQUFBRTtBQUN4RCxRQUFJLEFBQU0sU0FBRyxBQUFFLEdBQUMsQUFBUyxVQUFDLEFBQVEsU0FBQyxBQUFNLEFBQW1DLEFBQUM7QUFDN0UsQUFBTSxXQUFDLEFBQVEsU0FBQyxBQUFFLEFBQUMsQUFBQyxBQUN0QjtBQUFDLEFBQUMsQUFBQztBQUVILGlCQUFpQixBQUFhO0FBQzVCLEFBQU0sV0FBQyxBQUFLLFVBQUssQUFBSSxRQUFJLEFBQUssVUFBSyxBQUFTLGFBQUksT0FBTyxBQUFLLE1BQUMsQUFBVSxBQUFDLGdCQUFLLEFBQVUsQUFBQyxBQUMxRjtBQUFDLEFBRUQsQUFBTTs0QkFBNkIsQUFBYTtBQUM5QyxBQUFF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QyxBQUF3QixLQUFFLEFBQWMsUUFBRSxBQUF3QjtBQUNqRixBQUFNLGVBQUMsQUFBYyw0QkFBQyxBQUFHLEtBQUUsQUFBTSxRQUFFLEFBQUssQUFBQyxBQUFDLEFBQzVDO0FBQUM7QUFFUyxBQUFVLGVBQUMsQUFBTyxLQUFFLEFBQTRCLFdBQUUsQUFBd0MsT0FBRSxBQUFnQixRQUFFLEFBQWM7QUFDcEksQUFBTSxlQUFDLElBQUksQUFBMkIsNEJBQUMsQUFBUyxXQUFFLEFBQUssT0FBRSxBQUFNLFFBQUUsQUFBTSxBQUFDLEFBQUMsQUFDM0U7QUFBQyxBQUNGOzs7QUFFRCxNQUFrQyxvQ0FBUSxBQUFzQztBQUFoRjs7QUFDRSxhQUFJLE9BQUcsQUFBaUIsQUFBQyxBQUszQjtBQUFDO0FBSFcsQUFBTSxXQUFDLEFBQXdCLEtBQUUsQUFBYyxRQUFFLEFBQXdCO0FBQ2pGLEFBQU0sZUFBQyxBQUFjLDRCQUFDLEFBQUcsS0FBRSxBQUFNLFFBQUUsQUFBSyxBQUFDLEFBQUMsQUFDNUM7QUFBQyxBQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFVwc2VydCwge1xuICBJbnNlcnRpb24sXG4gIENhdXRpb3VzSW5zZXJ0aW9uLFxuICBUcnVzdGluZ0luc2VydGlvbixcblxuICBpc1NhZmVTdHJpbmcsXG4gIGlzTm9kZSxcbiAgaXNTdHJpbmcsXG5cbiAgY2F1dGlvdXNJbnNlcnQsXG4gIHRydXN0aW5nSW5zZXJ0XG59IGZyb20gJy4uLy4uL3Vwc2VydCc7XG5pbXBvcnQgeyBpc0NvbXBvbmVudERlZmluaXRpb24gfSBmcm9tICcuLi8uLi9jb21wb25lbnQvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBET01UcmVlQ29uc3RydWN0aW9uIH0gZnJvbSAnLi4vLi4vZG9tL2hlbHBlcic7XG5pbXBvcnQgeyBPcGNvZGVKU09OLCBVcGRhdGluZ09wY29kZSB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IHsgVk0sIFVwZGF0aW5nVk0gfSBmcm9tICcuLi8uLi92bSc7XG5pbXBvcnQgeyBUcnlPcGNvZGUgfSBmcm9tICcuLi8uLi92bS91cGRhdGUnO1xuaW1wb3J0IHsgUmVmZXJlbmNlLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlLCBSZWZlcmVuY2VDYWNoZSwgVXBkYXRhYmxlVGFnLCBUYWdXcmFwcGVyLCBpc01vZGlmaWVkLCBpc0NvbnN0LCBtYXAgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgT3B0aW9uLCBPcGFxdWUgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IEN1cnNvciwgY2xlYXIgfSBmcm9tICcuLi8uLi9ib3VuZHMnO1xuaW1wb3J0IHsgRnJhZ21lbnQgfSBmcm9tICcuLi8uLi9idWlsZGVyJztcbmltcG9ydCB7IENvbmRpdGlvbmFsUmVmZXJlbmNlIH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4uLy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IEFQUEVORF9PUENPREVTLCBPcCB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuRHluYW1pY0NvbnRlbnQsICh2bSwgeyBvcDE6IGFwcGVuZCB9KSA9PiB7XG4gIGxldCBvcGNvZGUgPSB2bS5jb25zdGFudHMuZ2V0T3RoZXIoYXBwZW5kKSBhcyBBcHBlbmREeW5hbWljT3Bjb2RlPEluc2VydGlvbj47XG4gIG9wY29kZS5ldmFsdWF0ZSh2bSk7XG59KTtcblxuZnVuY3Rpb24gaXNFbXB0eSh2YWx1ZTogT3BhcXVlKTogYm9vbGVhbiB7XG4gIHJldHVybiB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiB2YWx1ZVsndG9TdHJpbmcnXSAhPT0gJ2Z1bmN0aW9uJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVRleHRWYWx1ZSh2YWx1ZTogT3BhcXVlKTogc3RyaW5nIHtcbiAgaWYgKGlzRW1wdHkodmFsdWUpKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIHJldHVybiBTdHJpbmcodmFsdWUpO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVUcnVzdGVkVmFsdWUodmFsdWU6IE9wYXF1ZSk6IFRydXN0aW5nSW5zZXJ0aW9uIHtcbiAgaWYgKGlzRW1wdHkodmFsdWUpKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKGlzU2FmZVN0cmluZyh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWUudG9IVE1MKCk7XG4gIH1cbiAgaWYgKGlzTm9kZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVZhbHVlKHZhbHVlOiBPcGFxdWUpOiBDYXV0aW91c0luc2VydGlvbiB7XG4gIGlmIChpc0VtcHR5KHZhbHVlKSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmIChpc1NhZmVTdHJpbmcodmFsdWUpIHx8IGlzTm9kZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG59XG5cbmV4cG9ydCB0eXBlIEFwcGVuZER5bmFtaWNPcGNvZGVDb25zdHJ1Y3RvciA9ICB0eXBlb2YgT3B0aW1pemVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUgfCB0eXBlb2YgT3B0aW1pemVkVHJ1c3RpbmdBcHBlbmRPcGNvZGU7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBcHBlbmREeW5hbWljT3Bjb2RlPFQgZXh0ZW5kcyBJbnNlcnRpb24+IHtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IG5vcm1hbGl6ZShyZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+KTogUmVmZXJlbmNlPFQ+O1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBUKTogVXBzZXJ0O1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgdXBkYXRlV2l0aCh2bTogVk0sIHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4sIGNhY2hlOiBSZWZlcmVuY2VDYWNoZTxUPiwgYm91bmRzOiBGcmFnbWVudCwgdXBzZXJ0OiBVcHNlcnQpOiBVcGRhdGluZ09wY29kZTtcblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICBsZXQgcmVmZXJlbmNlID0gdm0uc3RhY2sucG9wPFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPj4oKTtcbiAgICBsZXQgbm9ybWFsaXplZCA9IHRoaXMubm9ybWFsaXplKHJlZmVyZW5jZSk7XG5cbiAgICBsZXQgdmFsdWUsIGNhY2hlO1xuXG4gICAgaWYgKGlzQ29uc3QocmVmZXJlbmNlKSkge1xuICAgICAgdmFsdWUgPSBub3JtYWxpemVkLnZhbHVlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKG5vcm1hbGl6ZWQpO1xuICAgICAgdmFsdWUgPSBjYWNoZS5wZWVrKCk7XG4gICAgfVxuXG4gICAgbGV0IHN0YWNrID0gdm0uZWxlbWVudHMoKTtcbiAgICBsZXQgdXBzZXJ0ID0gdGhpcy5pbnNlcnQodm0uZW52LmdldEFwcGVuZE9wZXJhdGlvbnMoKSwgc3RhY2ssIHZhbHVlKTtcbiAgICBsZXQgYm91bmRzID0gbmV3IEZyYWdtZW50KHVwc2VydC5ib3VuZHMpO1xuXG4gICAgc3RhY2submV3Qm91bmRzKGJvdW5kcyk7XG5cbiAgICBpZiAoY2FjaGUgLyogaS5lLiAhaXNDb25zdChyZWZlcmVuY2UpICovKSB7XG4gICAgICB2bS51cGRhdGVXaXRoKHRoaXMudXBkYXRlV2l0aCh2bSwgcmVmZXJlbmNlLCBjYWNoZSwgYm91bmRzLCB1cHNlcnQpKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEd1YXJkZWRBcHBlbmRPcGNvZGU8VCBleHRlbmRzIEluc2VydGlvbj4gZXh0ZW5kcyBBcHBlbmREeW5hbWljT3Bjb2RlPFQ+IHtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IEFwcGVuZE9wY29kZTogdHlwZW9mIE9wdGltaXplZENhdXRpb3VzQXBwZW5kT3Bjb2RlIHwgdHlwZW9mIE9wdGltaXplZFRydXN0aW5nQXBwZW5kT3Bjb2RlO1xuICBwcml2YXRlIHN0YXJ0ID0gLTE7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGdldCBkZW9wdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0YXJ0ID09PSAtMTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIGlmICh0aGlzLmRlb3B0ZWQpIHtcbiAgICAgIHZtLmdvdG8odGhpcy5zdGFydCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCB2YWx1ZSA9IHZtLnN0YWNrLnBvcCgpO1xuXG4gICAgICBpZihpc0NvbXBvbmVudERlZmluaXRpb24odmFsdWUpKSB7XG4gICAgICAgIHRoaXMuZGVvcHQodm0uZW52KTtcbiAgICAgICAgdm0uZ290byh0aGlzLnN0YXJ0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZtLnN0YWNrLnB1c2godmFsdWUpO1xuICAgICAgICBzdXBlci5ldmFsdWF0ZSh2bSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRlb3B0KF9lbnY6IEVudmlyb25tZW50KTogbnVtYmVyIHsgLy8gUHVibGljIGJlY2F1c2UgaXQncyB1c2VkIGluIHRoZSBsYXp5IGRlb3B0XG4gICAgLy8gQXQgY29tcGlsZSB0aW1lLCB3ZSBkZXRlcm1pbmVkIHRoYXQgdGhpcyBhcHBlbmQgY2FsbHNpdGUgbWlnaHQgcmVmZXJcbiAgICAvLyB0byBhIGxvY2FsIHZhcmlhYmxlL3Byb3BlcnR5IGxvb2t1cCB0aGF0IHJlc29sdmVzIHRvIGEgY29tcG9uZW50XG4gICAgLy8gZGVmaW5pdGlvbiBhdCBydW50aW1lLlxuICAgIC8vXG4gICAgLy8gV2UgY291bGQgaGF2ZSBlYWdlcmx5IGNvbXBpbGVkIHRoaXMgY2FsbHNpdGUgaW50byBzb21ldGhpbmcgbGlrZSB0aGlzOlxuICAgIC8vXG4gICAgLy8gICB7eyNpZiAoaXMtY29tcG9uZW50LWRlZmluaXRpb24gZm9vKX19XG4gICAgLy8gICAgIHt7Y29tcG9uZW50IGZvb319XG4gICAgLy8gICB7e2Vsc2V9fVxuICAgIC8vICAgICB7e2Zvb319XG4gICAgLy8gICB7ey9pZn19XG4gICAgLy9cbiAgICAvLyBIb3dldmVyLCBpbiBwcmFjdGljZSwgdGhlcmUgbWlnaHQgYmUgYSBsYXJnZSBhbW91dCBvZiB0aGVzZSBjYWxsc2l0ZXNcbiAgICAvLyBhbmQgbW9zdCBvZiB0aGVtIHdvdWxkIHJlc29sdmUgdG8gYSBzaW1wbGUgdmFsdWUgbG9va3VwLiBUaGVyZWZvcmUsIHdlXG4gICAgLy8gdHJpZWQgdG8gYmUgb3B0aW1pc3RpYyBhbmQgYXNzdW1lZCB0aGF0IHRoZSBjYWxsc2l0ZSB3aWxsIHJlc29sdmUgdG9cbiAgICAvLyBhcHBlbmRpbmcgYSBzaW1wbGUgdmFsdWUuXG4gICAgLy9cbiAgICAvLyBIb3dldmVyLCB3ZSBoYXZlIHJlYWNoZWQgaGVyZSBiZWNhdXNlIGF0IHJ1bnRpbWUsIHRoZSBndWFyZCBjb25kaXRpb25hbFxuICAgIC8vIGhhdmUgZGV0ZWN0ZWQgdGhhdCB0aGlzIGNhbGxzaXRlIGlzIGluZGVlZCByZWZlcnJpbmcgdG8gYSBjb21wb25lbnRcbiAgICAvLyBkZWZpbml0aW9uIG9iamVjdC4gU2luY2UgdGhpcyBpcyBsaWtlbHkgZ29pbmcgdG8gYmUgdHJ1ZSBmb3Igb3RoZXJcbiAgICAvLyBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgY2FsbHNpdGUsIGl0IGlzIG5vdyBhcHByb3BpYXRlIHRvIGRlb3B0IGludG8gdGhlXG4gICAgLy8gZXhwYW5kZWQgdmVyc2lvbiB0aGF0IGhhbmRsZXMgYm90aCBjYXNlcy4gVGhlIGNvbXBpbGF0aW9uIHdvdWxkIGxvb2tcbiAgICAvLyBsaWtlIHRoaXM6XG4gICAgLy9cbiAgICAvLyAgICAgICAgICAgICAgIFB1dFZhbHVlKGV4cHJlc3Npb24pXG4gICAgLy8gICAgICAgICAgICAgICBUZXN0KGlzLWNvbXBvbmVudC1kZWZpbml0aW9uKVxuICAgIC8vICAgICAgICAgICAgICAgRW50ZXIoQkVHSU4sIEVORClcbiAgICAvLyAgIEJFR0lOOiAgICAgIE5vb3BcbiAgICAvLyAgICAgICAgICAgICAgIEp1bXBVbmxlc3MoVkFMVUUpXG4gICAgLy8gICAgICAgICAgICAgICBQdXREeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvbk9wY29kZVxuICAgIC8vICAgICAgICAgICAgICAgT3BlbkNvbXBvbmVudFxuICAgIC8vICAgICAgICAgICAgICAgQ2xvc2VDb21wb25lbnRcbiAgICAvLyAgICAgICAgICAgICAgIEp1bXAoRU5EKVxuICAgIC8vICAgVkFMVUU6ICAgICAgTm9vcFxuICAgIC8vICAgICAgICAgICAgICAgT3B0aW1pemVkQXBwZW5kXG4gICAgLy8gICBFTkQ6ICAgICAgICBOb29wXG4gICAgLy8gICAgICAgICAgICAgICBFeGl0XG4gICAgLy9cbiAgICAvLyBLZWVwIGluIG1pbmQgdGhhdCBldmVuIGlmIHdlICpkb24ndCogcmVhY2ggaGVyZSBhdCBpbml0aWFsIHJlbmRlciB0aW1lLFxuICAgIC8vIGl0IGlzIHN0aWxsIHBvc3NpYmxlIChhbHRob3VnaCBxdWl0ZSByYXJlKSB0aGF0IHRoZSBzaW1wbGUgdmFsdWUgd2VcbiAgICAvLyBlbmNvdW50ZXIgZHVyaW5nIGluaXRpYWwgcmVuZGVyIGNvdWxkIGxhdGVyIGNoYW5nZSBpbnRvIGEgY29tcG9uZW50XG4gICAgLy8gZGVmaW5pdGlvbiBvYmplY3QgYXQgdXBkYXRlIHRpbWUuIFRoYXQgaXMgaGFuZGxlZCBieSB0aGUgXCJsYXp5IGRlb3B0XCJcbiAgICAvLyBjb2RlIG9uIHRoZSB1cGRhdGUgc2lkZSAoc2Nyb2xsIGRvd24gZm9yIHRoZSBuZXh0IGJpZyBibG9jayBvZiBjb21tZW50KS5cblxuICAgIHJldHVybiBudWxsIGFzIGFueTtcbiAgfVxufVxuXG5jbGFzcyBJc0NvbXBvbmVudERlZmluaXRpb25SZWZlcmVuY2UgZXh0ZW5kcyBDb25kaXRpb25hbFJlZmVyZW5jZSB7XG4gIHN0YXRpYyBjcmVhdGUoaW5uZXI6IFJlZmVyZW5jZTxPcGFxdWU+KTogSXNDb21wb25lbnREZWZpbml0aW9uUmVmZXJlbmNlIHtcbiAgICByZXR1cm4gbmV3IElzQ29tcG9uZW50RGVmaW5pdGlvblJlZmVyZW5jZShpbm5lcik7XG4gIH1cblxuICB0b0Jvb2wodmFsdWU6IE9wYXF1ZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc0NvbXBvbmVudERlZmluaXRpb24odmFsdWUpO1xuICB9XG59XG5cbmFic3RyYWN0IGNsYXNzIFVwZGF0ZU9wY29kZTxUIGV4dGVuZHMgSW5zZXJ0aW9uPiBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGNhY2hlOiBSZWZlcmVuY2VDYWNoZTxUPixcbiAgICBwcm90ZWN0ZWQgYm91bmRzOiBGcmFnbWVudCxcbiAgICBwcm90ZWN0ZWQgdXBzZXJ0OiBVcHNlcnRcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnRhZyA9IGNhY2hlLnRhZztcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IFQpOiBVcHNlcnQ7XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLmNhY2hlLnJldmFsaWRhdGUoKTtcblxuICAgIGlmIChpc01vZGlmaWVkKHZhbHVlKSkge1xuICAgICAgbGV0IHsgYm91bmRzLCB1cHNlcnQgfSA9IHRoaXM7XG4gICAgICBsZXQgeyBkb20gfSA9IHZtO1xuXG4gICAgICBpZighdGhpcy51cHNlcnQudXBkYXRlKGRvbSwgdmFsdWUpKSB7XG4gICAgICAgIGxldCBjdXJzb3IgPSBuZXcgQ3Vyc29yKGJvdW5kcy5wYXJlbnRFbGVtZW50KCksIGNsZWFyKGJvdW5kcykpO1xuICAgICAgICB1cHNlcnQgPSB0aGlzLnVwc2VydCA9IHRoaXMuaW5zZXJ0KHZtLmVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCksIGN1cnNvciwgdmFsdWUgYXMgVCk7XG4gICAgICB9XG5cbiAgICAgIGJvdW5kcy51cGRhdGUodXBzZXJ0LmJvdW5kcyk7XG4gICAgfVxuICB9XG59XG5cbmFic3RyYWN0IGNsYXNzIEd1YXJkZWRVcGRhdGVPcGNvZGU8VCBleHRlbmRzIEluc2VydGlvbj4gZXh0ZW5kcyBVcGRhdGVPcGNvZGU8VD4ge1xuICBwcml2YXRlIF90YWc6IFRhZ1dyYXBwZXI8VXBkYXRhYmxlVGFnPjtcbiAgcHJpdmF0ZSBkZW9wdGVkOiBPcHRpb248VHJ5T3Bjb2RlPiA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+LFxuICAgIGNhY2hlOiBSZWZlcmVuY2VDYWNoZTxUPixcbiAgICBib3VuZHM6IEZyYWdtZW50LFxuICAgIHVwc2VydDogVXBzZXJ0XG4gICkge1xuICAgIHN1cGVyKGNhY2hlLCBib3VuZHMsIHVwc2VydCk7XG4gICAgdGhpcy50YWcgPSB0aGlzLl90YWcgPSBVcGRhdGFibGVUYWcuY3JlYXRlKHRoaXMudGFnKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgaWYgKHRoaXMuZGVvcHRlZCkge1xuICAgICAgdm0uZXZhbHVhdGVPcGNvZGUodGhpcy5kZW9wdGVkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGlzQ29tcG9uZW50RGVmaW5pdGlvbih0aGlzLnJlZmVyZW5jZS52YWx1ZSgpKSkge1xuICAgICAgICB0aGlzLmxhenlEZW9wdCh2bSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdXBlci5ldmFsdWF0ZSh2bSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsYXp5RGVvcHQoX3ZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgLy8gRHVyaWduIGluaXRpYWwgcmVuZGVyLCB3ZSBrbm93IHRoYXQgdGhlIHJlZmVyZW5jZSBkb2VzIG5vdCBjb250YWluIGFcbiAgICAvLyBjb21wb25lbnQgZGVmaW5pdGlvbiwgc28gd2Ugb3B0aW1pc3RpY2FsbHkgYXNzdW1lZCB0aGF0IHRoaXMgYXBwZW5kXG4gICAgLy8gaXMganVzdCBhIG5vcm1hbCBhcHBlbmQuIEhvd2V2ZXIsIGF0IHVwZGF0ZSB0aW1lLCB3ZSBkaXNjb3ZlcmVkIHRoYXRcbiAgICAvLyB0aGUgcmVmZXJlbmNlIGhhcyBzd2l0Y2hlZCBpbnRvIGNvbnRhaW5pbmcgYSBjb21wb25lbnQgZGVmaW5pdGlvbiwgc29cbiAgICAvLyB3ZSBuZWVkIHRvIGRvIGEgXCJsYXp5IGRlb3B0XCIsIHNpbXVsYXRpbmcgd2hhdCB3b3VsZCBoYXZlIGhhcHBlbmVkIGlmXG4gICAgLy8gd2UgaGFkIGRlY2lkZWQgdG8gcGVyZm9ybSB0aGUgZGVvcHQgaW4gdGhlIGZpcnN0IHBsYWNlIGR1cmluZyBpbml0aWFsXG4gICAgLy8gcmVuZGVyLlxuICAgIC8vXG4gICAgLy8gTW9yZSBjb25jcmV0ZWx5LCB3ZSB3b3VsZCBoYXZlIGV4cGFuZGVkIHRoZSBjdXJseSBpbnRvIGEgaWYvZWxzZSwgYW5kXG4gICAgLy8gYmFzZWQgb24gd2hldGhlciB0aGUgdmFsdWUgaXMgYSBjb21wb25lbnQgZGVmaW5pdGlvbiBvciBub3QsIHdlIHdvdWxkXG4gICAgLy8gaGF2ZSBlbnRlcmVkIGVpdGhlciB0aGUgZHluYW1pYyBjb21wb25lbnQgYnJhbmNoIG9yIHRoZSBzaW1wbGUgdmFsdWVcbiAgICAvLyBicmFuY2guXG4gICAgLy9cbiAgICAvLyBTaW5jZSB3ZSByZW5kZXJlZCBhIHNpbXBsZSB2YWx1ZSBkdXJpbmcgaW5pdGlhbCByZW5kZXIgKGFuZCBhbGwgdGhlXG4gICAgLy8gdXBkYXRlcyB1cCB1bnRpbCB0aGlzIHBvaW50KSwgd2UgbmVlZCB0byBwcmV0ZW5kIHRoYXQgdGhlIHJlc3VsdCBpc1xuICAgIC8vIHByb2R1Y2VkIGJ5IHRoZSBcIlZBTFVFXCIgYnJhbmNoIG9mIHRoZSBkZW9wdGVkIGFwcGVuZCBvcGNvZGU6XG4gICAgLy9cbiAgICAvLyAgIFRyeShCRUdJTiwgRU5EKVxuICAgIC8vICAgICBBc3NlcnQoSXNDb21wb25lbnREZWZpbml0aW9uLCBleHBlY3RlZD1mYWxzZSlcbiAgICAvLyAgICAgT3B0aW1pemVkVXBkYXRlXG4gICAgLy9cbiAgICAvLyBJbiB0aGlzIGNhc2UsIGJlY2F1c2UgdGhlIHJlZmVyZW5jZSBoYXMgc3dpdGNoZWQgZnJvbSBiZWluZyBhIHNpbXBsZVxuICAgIC8vIHZhbHVlIGludG8gYSBjb21wb25lbnQgZGVmaW5pdGlvbiwgd2hhdCB3b3VsZCBoYXZlIGhhcHBlbmVkIGlzIHRoYXRcbiAgICAvLyB0aGUgYXNzZXJ0IHdvdWxkIHRocm93LCBjYXVzaW5nIHRoZSBUcnkgb3Bjb2RlIHRvIHRlYXJkb3duIHRoZSBib3VuZHNcbiAgICAvLyBhbmQgcmVydW4gdGhlIG9yaWdpbmFsIGFwcGVuZCBvcGNvZGUuXG4gICAgLy9cbiAgICAvLyBTaW5jZSB0aGUgVHJ5IG9wY29kZSB3b3VsZCBoYXZlIG51a2VkIHRoZSB1cGRhdGluZyBvcGNvZGVzIGFueXdheSwgd2VcbiAgICAvLyB3b3VsZG4ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IHNpbXVsYXRpbmcgdGhvc2UuIEFsbCB3ZSBoYXZlIHRvIGRvIGlzIHRvXG4gICAgLy8gZXhlY3V0ZSB0aGUgVHJ5IG9wY29kZSBhbmQgaW1tZWRpYXRlbHkgdGhyb3cuXG5cbiAgICByZXR1cm4gbnVsbCBhcyBhbnk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9wdGltaXplZENhdXRpb3VzQXBwZW5kT3Bjb2RlIGV4dGVuZHMgQXBwZW5kRHluYW1pY09wY29kZTxDYXV0aW91c0luc2VydGlvbj4ge1xuICB0eXBlID0gJ29wdGltaXplZC1jYXV0aW91cy1hcHBlbmQnO1xuXG4gIHByb3RlY3RlZCBub3JtYWxpemUocmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPik6IFJlZmVyZW5jZTxDYXV0aW91c0luc2VydGlvbj4ge1xuICAgIHJldHVybiBtYXAocmVmZXJlbmNlLCBub3JtYWxpemVWYWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBDYXV0aW91c0luc2VydGlvbik6IFVwc2VydCB7XG4gICAgcmV0dXJuIGNhdXRpb3VzSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlV2l0aChfdm06IFZNLCBfcmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPiwgY2FjaGU6IFJlZmVyZW5jZUNhY2hlPENhdXRpb3VzSW5zZXJ0aW9uPiwgYm91bmRzOiBGcmFnbWVudCwgdXBzZXJ0OiBVcHNlcnQpOiBVcGRhdGluZ09wY29kZSB7XG4gICAgcmV0dXJuIG5ldyBPcHRpbWl6ZWRDYXV0aW91c1VwZGF0ZU9wY29kZShjYWNoZSwgYm91bmRzLCB1cHNlcnQpO1xuICB9XG59XG5cbmNsYXNzIE9wdGltaXplZENhdXRpb3VzVXBkYXRlT3Bjb2RlIGV4dGVuZHMgVXBkYXRlT3Bjb2RlPENhdXRpb3VzSW5zZXJ0aW9uPiB7XG4gIHR5cGUgPSAnb3B0aW1pemVkLWNhdXRpb3VzLXVwZGF0ZSc7XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogQ2F1dGlvdXNJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiBjYXV0aW91c0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHdWFyZGVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUgZXh0ZW5kcyBHdWFyZGVkQXBwZW5kT3Bjb2RlPENhdXRpb3VzSW5zZXJ0aW9uPiB7XG4gIHR5cGUgPSAnZ3VhcmRlZC1jYXV0aW91cy1hcHBlbmQnO1xuXG4gIHByb3RlY3RlZCBBcHBlbmRPcGNvZGUgPSBPcHRpbWl6ZWRDYXV0aW91c0FwcGVuZE9wY29kZTtcblxuICBwcm90ZWN0ZWQgbm9ybWFsaXplKHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4pOiBSZWZlcmVuY2U8Q2F1dGlvdXNJbnNlcnRpb24+IHtcbiAgICByZXR1cm4gbWFwKHJlZmVyZW5jZSwgbm9ybWFsaXplVmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogQ2F1dGlvdXNJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiBjYXV0aW91c0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZVdpdGgoX3ZtOiBWTSwgcmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPiwgY2FjaGU6IFJlZmVyZW5jZUNhY2hlPENhdXRpb3VzSW5zZXJ0aW9uPiwgYm91bmRzOiBGcmFnbWVudCwgdXBzZXJ0OiBVcHNlcnQpOiBVcGRhdGluZ09wY29kZSB7XG4gICAgcmV0dXJuIG5ldyBHdWFyZGVkQ2F1dGlvdXNVcGRhdGVPcGNvZGUocmVmZXJlbmNlLCBjYWNoZSwgYm91bmRzLCB1cHNlcnQpO1xuICB9XG59XG5cbmNsYXNzIEd1YXJkZWRDYXV0aW91c1VwZGF0ZU9wY29kZSBleHRlbmRzIEd1YXJkZWRVcGRhdGVPcGNvZGU8Q2F1dGlvdXNJbnNlcnRpb24+IHtcbiAgdHlwZSA9ICdndWFyZGVkLWNhdXRpb3VzLXVwZGF0ZSc7XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogQ2F1dGlvdXNJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiBjYXV0aW91c0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPcHRpbWl6ZWRUcnVzdGluZ0FwcGVuZE9wY29kZSBleHRlbmRzIEFwcGVuZER5bmFtaWNPcGNvZGU8VHJ1c3RpbmdJbnNlcnRpb24+IHtcbiAgdHlwZSA9ICdvcHRpbWl6ZWQtdHJ1c3RpbmctYXBwZW5kJztcblxuICBwcm90ZWN0ZWQgbm9ybWFsaXplKHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4pOiBSZWZlcmVuY2U8VHJ1c3RpbmdJbnNlcnRpb24+IHtcbiAgICByZXR1cm4gbWFwKHJlZmVyZW5jZSwgbm9ybWFsaXplVHJ1c3RlZFZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IFRydXN0aW5nSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgICByZXR1cm4gdHJ1c3RpbmdJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVXaXRoKF92bTogVk0sIF9yZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+LCBjYWNoZTogUmVmZXJlbmNlQ2FjaGU8VHJ1c3RpbmdJbnNlcnRpb24+LCBib3VuZHM6IEZyYWdtZW50LCB1cHNlcnQ6IFVwc2VydCk6IFVwZGF0aW5nT3Bjb2RlIHtcbiAgICByZXR1cm4gbmV3IE9wdGltaXplZFRydXN0aW5nVXBkYXRlT3Bjb2RlKGNhY2hlLCBib3VuZHMsIHVwc2VydCk7XG4gIH1cbn1cblxuY2xhc3MgT3B0aW1pemVkVHJ1c3RpbmdVcGRhdGVPcGNvZGUgZXh0ZW5kcyBVcGRhdGVPcGNvZGU8VHJ1c3RpbmdJbnNlcnRpb24+IHtcbiAgdHlwZSA9ICdvcHRpbWl6ZWQtdHJ1c3RpbmctdXBkYXRlJztcblxuICBwcm90ZWN0ZWQgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBUcnVzdGluZ0luc2VydGlvbik6IFVwc2VydCB7XG4gICAgcmV0dXJuIHRydXN0aW5nSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEd1YXJkZWRUcnVzdGluZ0FwcGVuZE9wY29kZSBleHRlbmRzIEd1YXJkZWRBcHBlbmRPcGNvZGU8VHJ1c3RpbmdJbnNlcnRpb24+IHtcbiAgdHlwZSA9ICdndWFyZGVkLXRydXN0aW5nLWFwcGVuZCc7XG5cbiAgcHJvdGVjdGVkIEFwcGVuZE9wY29kZSA9IE9wdGltaXplZFRydXN0aW5nQXBwZW5kT3Bjb2RlO1xuXG4gIHByb3RlY3RlZCBub3JtYWxpemUocmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPik6IFJlZmVyZW5jZTxUcnVzdGluZ0luc2VydGlvbj4ge1xuICAgIHJldHVybiBtYXAocmVmZXJlbmNlLCBub3JtYWxpemVUcnVzdGVkVmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogVHJ1c3RpbmdJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiB0cnVzdGluZ0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZVdpdGgoX3ZtOiBWTSwgcmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPiwgY2FjaGU6IFJlZmVyZW5jZUNhY2hlPFRydXN0aW5nSW5zZXJ0aW9uPiwgYm91bmRzOiBGcmFnbWVudCwgdXBzZXJ0OiBVcHNlcnQpOiBVcGRhdGluZ09wY29kZSB7XG4gICAgcmV0dXJuIG5ldyBHdWFyZGVkVHJ1c3RpbmdVcGRhdGVPcGNvZGUocmVmZXJlbmNlLCBjYWNoZSwgYm91bmRzLCB1cHNlcnQpO1xuICB9XG59XG5cbmNsYXNzIEd1YXJkZWRUcnVzdGluZ1VwZGF0ZU9wY29kZSBleHRlbmRzIEd1YXJkZWRVcGRhdGVPcGNvZGU8VHJ1c3RpbmdJbnNlcnRpb24+IHtcbiAgdHlwZSA9ICd0cnVzdGluZy11cGRhdGUnO1xuXG4gIHByb3RlY3RlZCBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IFRydXN0aW5nSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgICByZXR1cm4gdHJ1c3RpbmdJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxufVxuIl19

@@ -10,4 +10,2 @@ 'use strict';

var _util = require('@glimmer/util');
var _reference = require('@glimmer/reference');

@@ -233,3 +231,3 @@

attributeNames.push(name);
(0, _util.unwrap)(attributes).push(attribute);
attributes.push(attribute);
}

@@ -287,8 +285,2 @@ }

}
toJSON() {
return {
guid: this._guid,
type: this.type
};
}
}

@@ -321,3 +313,3 @@ exports.UpdateModifierOpcode = UpdateModifierOpcode;

let { element, cache } = this;
let value = (0, _util.expect)(cache, 'must patch after flush').revalidate();
let value = cache.revalidate();
if ((0, _reference.isModified)(value)) {

@@ -340,23 +332,2 @@ this.attributeManager.updateAttribute(env, element, value, this.namespace);

}
toJSON() {
let { element, namespace, name, cache } = this;
let formattedElement = formatElement(element);
let lastValue = (0, _util.expect)(cache, 'must serialize after flush').peek();
if (namespace) {
return {
element: formattedElement,
type: 'attribute',
namespace,
name,
lastValue
};
}
return {
element: formattedElement,
type: 'attribute',
namespace: namespace === undefined ? null : namespace,
name,
lastValue
};
}
}

@@ -388,12 +359,4 @@ exports.DynamicAttribute = DynamicAttribute;

}
toJSON() {
let { _guid, type, operation } = this;
return {
guid: _guid,
type,
details: operation.toJSON()
};
}
}
exports.PatchElementOpcode = PatchElementOpcode;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZG9tLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxBQUFPLEFBQWMsQUFBYyxBQUFFLEFBQU0sQUFBZSxBQUFDOztBQU0zRCxBQUFPLEFBQStCLEFBQU0sQUFBRSxBQUFNLEFBQUUsQUFBTSxBQUFlLEFBQUM7O0FBQzVFLEFBQU8sQUFDTCxBQUFlLEFBR2YsQUFBYyxBQUlkLEFBQWEsQUFDYixBQUFPLEFBQUksQUFBZ0IsQUFDM0IsQUFBVSxBQUNYLEFBQU0sQUFBb0IsQUFBQzs7QUFFNUIsQUFBTyxBQUFFLEFBQWMsQUFBRSxBQUFrQixBQUFFLEFBQU0sQUFBa0IsQUFBQzs7QUFHdEUsQUFBTyxBQUFFLEFBQU0sQUFBRSxBQUFNLEFBQU0sQUFBQyxBQUM5QixBQUFPLEFBQUUsQUFBYyxBQUFZLEFBQU0sQUFBZSxBQUFDOztBQUV6RCxBQUFjLHdCQUFDLEFBQUcsSUFBQyxHQUFPLFlBQUUsQ0FBQyxBQUFFLElBQUUsRUFBRSxBQUFHLEtBQUUsQUFBSSxBQUFFO0FBQzVDLEFBQUUsT0FBQyxBQUFRLEFBQUUsV0FBQyxBQUFVLFdBQUMsQUFBRSxHQUFDLEFBQVMsVUFBQyxBQUFTLFVBQUMsQUFBSSxBQUFDLEFBQUMsQUFBQyxBQUN6RDtBQUFDLEFBQUMsQUFBQztBQUVILEFBQWMsd0JBQUMsQUFBRyxJQUFDLEdBQVUsZUFBRSxDQUFDLEFBQUUsSUFBRSxFQUFFLEFBQUcsS0FBRSxBQUFJLEFBQUU7QUFDL0MsQUFBRSxPQUFDLEFBQVEsQUFBRSxXQUFDLEFBQWEsY0FBQyxBQUFFLEdBQUMsQUFBUyxVQUFDLEFBQVMsVUFBQyxBQUFJLEFBQUMsQUFBQyxBQUFDLEFBQzVEO0FBQUMsQUFBQyxBQUFDO0FBRUgsQUFBYyx3QkFBQyxBQUFHLElBQUMsR0FBYyxtQkFBRSxDQUFDLEFBQUUsSUFBRSxFQUFFLEFBQUcsS0FBRSxBQUFHLEFBQUU7QUFDbEQsQUFBRSxPQUFDLEFBQVEsQUFB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RSxHQUFDLEFBQUcsQUFBQyxBQUFDLEFBQy9CO0FBQUM7QUFFRCxBQUFNO0FBQ0osWUFBSSxFQUFFLEFBQUssT0FBRSxBQUFJLE1BQUUsQUFBUyxBQUFFLGNBQUcsQUFBSSxBQUFDO0FBRXRDLEFBQU07QUFDSixBQUFJLGtCQUFFLEFBQUs7QUFDWCxBQUFJO0FBQ0osQUFBTyxxQkFBRSxBQUFTLFVBQUMsQUFBTSxBQUFFLEFBQzVCLEFBQUMsQUFDSjtBQUxTO0FBS1IsQUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wY29kZUpTT04sIFVwZGF0aW5nT3Bjb2RlIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBWTSwgVXBkYXRpbmdWTSB9IGZyb20gJy4uLy4uL3ZtJztcbmltcG9ydCB7IEFyZ3VtZW50cyB9IGZyb20gJy4uLy4uL3ZtL2FyZ3VtZW50cyc7XG5pbXBvcnQgKiBhcyBTaW1wbGUgZnJvbSAnLi4vLi4vZG9tL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRklYX1JFSUZJQ0FUSU9OIH0gZnJvbSAnLi4vLi4vZG9tL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBGSVhNRSwgT3B0aW9uLCBPcGFxdWUsIERpY3QsIHVud3JhcCwgZXhwZWN0IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQge1xuICBDYWNoZWRSZWZlcmVuY2UsXG4gIFJlZmVyZW5jZSxcbiAgVmVyc2lvbmVkUmVmZXJlbmNlLFxuICBSZWZlcmVuY2VDYWNoZSxcbiAgVGFnLFxuICBSZXZpc2lvbixcbiAgUGF0aFJlZmVyZW5jZSxcbiAgY29tYmluZVRhZ2dlZCxcbiAgaXNDb25zdCBhcyBpc0NvbnN0UmVmZXJlbmNlLFxuICBpc01vZGlmaWVkXG59IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBNb2RpZmllck1hbmFnZXIgfSBmcm9tICcuLi8uLi9tb2RpZmllci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE5VTExfUkVGRVJFTkNFLCBQcmltaXRpdmVSZWZlcmVuY2UgfSBmcm9tICcuLi8uLi9yZWZlcmVuY2VzJztcbmltcG9ydCB7IEF0dHJpYnV0ZU1hbmFnZXIgfSBmcm9tICcuLi8uLi9kb20vYXR0cmlidXRlLW1hbmFnZXJzJztcbmltcG9ydCB7IEVsZW1lbnRPcGVyYXRpb25zIH0gZnJvbSAnLi4vLi4vYnVpbGRlcic7XG5pbXBvcnQgeyBBc3NlcnQgfSBmcm9tICcuL3ZtJztcbmltcG9ydCB7IEFQUEVORF9PUENPREVTLCBPcCBhcyBPcCB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuVGV4dCwgKHZtLCB7IG9wMTogdGV4dCB9KSA9PiB7XG4gIHZtLmVsZW1lbnRzKCkuYXBwZW5kVGV4dCh2bS5jb25zdGFudHMuZ2V0U3RyaW5nKHRleHQpKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuQ29tbWVudCwgKHZtLCB7IG9wMTogdGV4dCB9KSA9PiB7XG4gIHZtLmVsZW1lbnRzKCkuYXBwZW5kQ29tbWVudCh2bS5jb25zdGFudHMuZ2V0U3RyaW5nKHRleHQpKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuT3BlbkVsZW1lbnQsICh2bSwgeyBvcDE6IHRhZyB9KSA9PiB7XG4gIHZtLmVsZW1lbnRzKCkub3BlbkVsZW1lbnQodm0uY29uc3RhbnRzLmdldFN0cmluZyh0YWcpKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuT3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucywgKHZtLCB7IG9wMTogdGFnIH0pID0+IHtcbiAgbGV0IHRhZ05hbWUgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKHRhZyk7XG4gIGxldCBvcGVyYXRpb25zID0gdm0uc3RhY2sucG9wPEVsZW1lbnRPcGVyYXRpb25zPigpO1xuICB2bS5lbGVtZW50cygpLm9wZW5FbGVtZW50KHRhZ05hbWUsIG9wZXJhdGlvbnMpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5PcGVuRHluYW1pY0VsZW1lbnQsIHZtID0+IHtcbiAgbGV0IG9wZXJhdGlvbnMgPSB2bS5zdGFjay5wb3A8RWxlbWVudE9wZXJhdGlvbnM+KCk7XG4gIGxldCB0YWdOYW1lID0gdm0uc3RhY2sucG9wPFJlZmVyZW5jZTxzdHJpbmc+PigpLnZhbHVlKCk7XG4gIHZtLmVsZW1lbnRzKCkub3BlbkVsZW1lbnQodGFnTmFtZSwgb3BlcmF0aW9ucyk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlB1c2hSZW1vdGVFbGVtZW50LCB2bSA9PiB7XG4gIGxldCBlbGVtZW50UmVmID0gdm0uc3RhY2sucG9wPFJlZmVyZW5jZTxTaW1wbGUuRWxlbWVudD4+KCk7XG4gIGxldCBuZXh0U2libGluZ1JlZiA9IHZtLnN0YWNrLnBvcDxSZWZlcmVuY2U8T3B0aW9uPFNpbXBsZS5Ob2RlPj4+KCk7XG5cbiAgbGV0IGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50O1xuICBsZXQgbmV4dFNpYmxpbmc6IE9wdGlvbjxTaW1wbGUuTm9kZT47XG5cbiAgaWYgKGlzQ29uc3RSZWZlcmVuY2UoZWxlbWVudFJlZikpIHtcbiAgICBlbGVtZW50ID0gZWxlbWVudFJlZi52YWx1ZSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCBjYWNoZSA9IG5ldyBSZWZlcmVuY2VDYWNoZShlbGVtZW50UmVmKTtcbiAgICBlbGVtZW50ID0gY2FjaGUucGVlaygpO1xuICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICB9XG5cbiAgaWYgKGlzQ29uc3RSZWZlcmVuY2UobmV4dFNpYmxpbmdSZWYpKSB7XG4gICAgbmV4dFNpYmxpbmcgPSBuZXh0U2libGluZ1JlZi52YWx1ZSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCBjYWNoZSA9IG5ldyBSZWZlcmVuY2VDYWNoZShuZXh0U2libGluZ1JlZik7XG4gICAgbmV4dFNpYmxpbmcgPSBjYWNoZS5wZWVrKCk7XG4gICAgdm0udXBkYXRlV2l0aChuZXcgQXNzZXJ0KGNhY2hlKSk7XG4gIH1cblxuICB2bS5lbGVtZW50cygpLnB1c2hSZW1vdGVFbGVtZW50KGVsZW1lbnQsIG5leHRTaWJsaW5nKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUG9wUmVtb3RlRWxlbWVudCwgdm0gPT4gdm0uZWxlbWVudHMoKS5wb3BSZW1vdGVFbGVtZW50KCkpO1xuXG5jbGFzcyBDbGFzc0xpc3Qge1xuICBwcml2YXRlIGxpc3Q6IE9wdGlvbjxSZWZlcmVuY2U8c3RyaW5nPltdPiA9IG51bGw7XG4gIHByaXZhdGUgaXNDb25zdCA9IHRydWU7XG5cbiAgYXBwZW5kKHJlZmVyZW5jZTogUmVmZXJlbmNlPHN0cmluZz4pIHtcbiAgICBsZXQgeyBsaXN0LCBpc0NvbnN0IH0gPSB0aGlzO1xuXG4gICAgaWYgKGxpc3QgPT09IG51bGwpIGxpc3QgPSB0aGlzLmxpc3QgPSBbXTtcblxuICAgIGxpc3QucHVzaChyZWZlcmVuY2UpO1xuICAgIHRoaXMuaXNDb25zdCA9IGlzQ29uc3QgJiYgaXNDb25zdFJlZmVyZW5jZShyZWZlcmVuY2UpO1xuICB9XG5cbiAgdG9SZWZlcmVuY2UoKTogUmVmZXJlbmNlPE9wdGlvbjxzdHJpbmc+PiB7XG4gICAgbGV0IHsgbGlzdCwgaXNDb25zdCB9ID0gdGhpcztcblxuICAgIGlmICghbGlzdCkgcmV0dXJuIE5VTExfUkVGRVJFTkNFO1xuXG4gICAgaWYgKGlzQ29uc3QpIHJldHVybiBQcmltaXRpdmVSZWZlcmVuY2UuY3JlYXRlKHRvQ2xhc3NOYW1lKGxpc3QpKTtcblxuICAgIHJldHVybiBuZXcgQ2xhc3NMaXN0UmVmZXJlbmNlKGxpc3QpO1xuICB9XG5cbn1cblxuY2xhc3MgQ2xhc3NMaXN0UmVmZXJlbmNlIGV4dGVuZHMgQ2FjaGVkUmVmZXJlbmNlPE9wdGlvbjxzdHJpbmc+PiB7XG4gIHB1YmxpYyB0YWc6IFRhZztcbiAgcHJpdmF0ZSBsaXN0OiBSZWZlcmVuY2U8c3RyaW5nPltdID0gW107XG5cbiAgY29uc3RydWN0b3IobGlzdDogUmVmZXJlbmNlPHN0cmluZz5bXSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy50YWcgPSBjb21iaW5lVGFnZ2VkKGxpc3QpO1xuICAgIHRoaXMubGlzdCA9IGxpc3Q7XG4gIH1cblxuICBwcm90ZWN0ZWQgY29tcHV0ZSgpOiBPcHRpb248c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRvQ2xhc3NOYW1lKHRoaXMubGlzdCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdG9DbGFzc05hbWUobGlzdDogUmVmZXJlbmNlPHN0cmluZz5bXSk6IE9wdGlvbjxzdHJpbmc+IHtcbiAgbGV0IHJldDogT3BhcXVlW10gPSBbXTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgdmFsdWU6IEZJWE1FPE9wYXF1ZSwgJ3VzZSBPcGFxdWUgYW5kIG5vcm1hbGl6ZSc+ID0gbGlzdFtpXS52YWx1ZSgpO1xuICAgIGlmICh2YWx1ZSAhPT0gZmFsc2UgJiYgdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkgcmV0LnB1c2godmFsdWUpO1xuICB9XG5cbiAgcmV0dXJuIChyZXQubGVuZ3RoID09PSAwKSA/IG51bGwgOiByZXQuam9pbignICcpO1xufVxuXG5leHBvcnQgY2xhc3MgU2ltcGxlRWxlbWVudE9wZXJhdGlvbnMgaW1wbGVtZW50cyBFbGVtZW50T3BlcmF0aW9ucyB7XG4gIHByaXZhdGUgb3Bjb2RlczogT3B0aW9uPFVwZGF0aW5nT3Bjb2RlW10+ID0gbnVsbDtcbiAgcHJpdmF0ZSBjbGFzc0xpc3Q6IE9wdGlvbjxDbGFzc0xpc3Q+ID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVudjogRW52aXJvbm1lbnQpIHtcbiAgfVxuXG4gIGFkZFN0YXRpY0F0dHJpYnV0ZShlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKG5hbWUgPT09ICdjbGFzcycpIHtcbiAgICAgIHRoaXMuYWRkQ2xhc3MoUHJpbWl0aXZlUmVmZXJlbmNlLmNyZWF0ZSh2YWx1ZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCkuc2V0QXR0cmlidXRlKGVsZW1lbnQsIG5hbWUsIHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBhZGRTdGF0aWNBdHRyaWJ1dGVOUyhlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZXNwYWNlOiBzdHJpbmcsIG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuZW52LmdldEFwcGVuZE9wZXJhdGlvbnMoKS5zZXRBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZSk7XG4gIH1cblxuICBhZGREeW5hbWljQXR0cmlidXRlKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lOiBzdHJpbmcsIHJlZmVyZW5jZTogUmVmZXJlbmNlPHN0cmluZz4sIGlzVHJ1c3Rpbmc6IGJvb2xlYW4pIHtcbiAgICBpZiAobmFtZSA9PT0gJ2NsYXNzJykge1xuICAgICAgdGhpcy5hZGRDbGFzcyhyZWZlcmVuY2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgYXR0cmlidXRlTWFuYWdlciA9IHRoaXMuZW52LmF0dHJpYnV0ZUZvcihlbGVtZW50LCBuYW1lLCBpc1RydXN0aW5nKTtcbiAgICAgIGxldCBhdHRyaWJ1dGUgPSBuZXcgRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCBuYW1lLCByZWZlcmVuY2UpO1xuXG4gICAgICB0aGlzLmFkZEF0dHJpYnV0ZShhdHRyaWJ1dGUpO1xuICAgIH1cbiAgfVxuXG4gIGFkZER5bmFtaWNBdHRyaWJ1dGVOUyhlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZXNwYWNlOiBTaW1wbGUuTmFtZXNwYWNlLCBuYW1lOiBzdHJpbmcsIHJlZmVyZW5jZTogUGF0aFJlZmVyZW5jZTxzdHJpbmc+LCBpc1RydXN0aW5nOiBib29sZWFuKSB7XG4gICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSB0aGlzLmVudi5hdHRyaWJ1dGVGb3IoZWxlbWVudCwgbmFtZSwgaXNUcnVzdGluZywgbmFtZXNwYWNlKTtcbiAgICBsZXQgbnNBdHRyaWJ1dGUgPSBuZXcgRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCBuYW1lLCByZWZlcmVuY2UsIG5hbWVzcGFjZSk7XG5cbiAgICB0aGlzLmFkZEF0dHJpYnV0ZShuc0F0dHJpYnV0ZSk7XG4gIH1cblxuICBmbHVzaChlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgdm06IFZNKSB7XG4gICAgbGV0IHsgZW52IH0gPSB2bTtcbiAgICBsZXQgeyBvcGNvZGVzLCBjbGFzc0xpc3QgfSA9IHRoaXM7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgb3Bjb2RlcyAmJiBpIDwgb3Bjb2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdm0udXBkYXRlV2l0aChvcGNvZGVzW2ldKTtcbiAgICB9XG5cbiAgICBpZiAoY2xhc3NMaXN0KSB7XG4gICAgICBsZXQgYXR0cmlidXRlTWFuYWdlciA9IGVudi5hdHRyaWJ1dGVGb3IoZWxlbWVudCwgJ2NsYXNzJywgZmFsc2UpO1xuICAgICAgbGV0IGF0dHJpYnV0ZSA9IG5ldyBEeW5hbWljQXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZU1hbmFnZXIsICdjbGFzcycsIGNsYXNzTGlzdC50b1JlZmVyZW5jZSgpKTtcbiAgICAgIGxldCBvcGNvZGUgPSBhdHRyaWJ1dGUuZmx1c2goZW52KTtcblxuICAgICAgaWYgKG9wY29kZSkge1xuICAgICAgICB2bS51cGRhdGVXaXRoKG9wY29kZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5vcGNvZGVzID0gbnVsbDtcbiAgICB0aGlzLmNsYXNzTGlzdCA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGFkZENsYXNzKHJlZmVyZW5jZTogUmVmZXJlbmNlPHN0cmluZz4pIHtcbiAgICBsZXQgeyBjbGFzc0xpc3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIWNsYXNzTGlzdCkge1xuICAgICAgY2xhc3NMaXN0ID0gdGhpcy5jbGFzc0xpc3QgPSBuZXcgQ2xhc3NMaXN0KCk7XG4gICAgfVxuXG4gICAgY2xhc3NMaXN0LmFwcGVuZChyZWZlcmVuY2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRBdHRyaWJ1dGUoYXR0cmlidXRlOiBBdHRyaWJ1dGUpIHtcbiAgICBsZXQgb3Bjb2RlID0gYXR0cmlidXRlLmZsdXNoKHRoaXMuZW52KTtcblxuICAgIGlmIChvcGNvZGUpIHtcbiAgICAgIGxldCB7IG9wY29kZXMgfSA9IHRoaXM7XG5cbiAgICAgIGlmICghb3Bjb2Rlcykge1xuICAgICAgICBvcGNvZGVzID0gdGhpcy5vcGNvZGVzID0gW107XG4gICAgICB9XG5cbiAgICAgIG9wY29kZXMucHVzaChvcGNvZGUpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50RWxlbWVudE9wZXJhdGlvbnMgaW1wbGVtZW50cyBFbGVtZW50T3BlcmF0aW9ucyB7XG4gIHByaXZhdGUgYXR0cmlidXRlTmFtZXM6IE9wdGlvbjxzdHJpbmdbXT4gPSBudWxsO1xuICBwcml2YXRlIGF0dHJpYnV0ZXM6IE9wdGlvbjxBdHRyaWJ1dGVbXT4gPSBudWxsO1xuICBwcml2YXRlIGNsYXNzTGlzdDogT3B0aW9uPENsYXNzTGlzdD4gPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZW52OiBFbnZpcm9ubWVudCkge1xuICB9XG5cbiAgYWRkU3RhdGljQXR0cmlidXRlKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAobmFtZSA9PT0gJ2NsYXNzJykge1xuICAgICAgdGhpcy5hZGRDbGFzcyhQcmltaXRpdmVSZWZlcmVuY2UuY3JlYXRlKHZhbHVlKSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNob3VsZEFkZEF0dHJpYnV0ZShuYW1lKSkge1xuICAgICAgdGhpcy5hZGRBdHRyaWJ1dGUobmFtZSwgbmV3IFN0YXRpY0F0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCB2YWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIGFkZFN0YXRpY0F0dHJpYnV0ZU5TKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lc3BhY2U6IHN0cmluZywgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuc2hvdWxkQWRkQXR0cmlidXRlKG5hbWUpKSB7XG4gICAgICB0aGlzLmFkZEF0dHJpYnV0ZShuYW1lLCBuZXcgU3RhdGljQXR0cmlidXRlKGVsZW1lbnQsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UpKTtcbiAgICB9XG4gIH1cblxuICBhZGREeW5hbWljQXR0cmlidXRlKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lOiBzdHJpbmcsIHJlZmVyZW5jZTogUGF0aFJlZmVyZW5jZTxzdHJpbmc+LCBpc1RydXN0aW5nOiBib29sZWFuKSB7XG4gICAgaWYgKG5hbWUgPT09ICdjbGFzcycpIHtcbiAgICAgIHRoaXMuYWRkQ2xhc3MocmVmZXJlbmNlKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2hvdWxkQWRkQXR0cmlidXRlKG5hbWUpKSB7XG4gICAgICBsZXQgYXR0cmlidXRlTWFuYWdlciA9IHRoaXMuZW52LmF0dHJpYnV0ZUZvcihlbGVtZW50LCBuYW1lLCBpc1RydXN0aW5nKTtcbiAgICAgIGxldCBhdHRyaWJ1dGUgPSBuZXcgRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCBuYW1lLCByZWZlcmVuY2UpO1xuXG4gICAgICB0aGlzLmFkZEF0dHJpYnV0ZShuYW1lLCBhdHRyaWJ1dGUpO1xuICAgIH1cbiAgfVxuXG4gIGFkZER5bmFtaWNBdHRyaWJ1dGVOUyhlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZXNwYWNlOiBTaW1wbGUuTmFtZXNwYWNlLCBuYW1lOiBzdHJpbmcsIHJlZmVyZW5jZTogUGF0aFJlZmVyZW5jZTxzdHJpbmc+LCBpc1RydXN0aW5nOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMuc2hvdWxkQWRkQXR0cmlidXRlKG5hbWUpKSB7XG4gICAgICBsZXQgYXR0cmlidXRlTWFuYWdlciA9IHRoaXMuZW52LmF0dHJpYnV0ZUZvcihlbGVtZW50LCBuYW1lLCBpc1RydXN0aW5nLCBuYW1lc3BhY2UpO1xuICAgICAgbGV0IG5zQXR0cmlidXRlID0gbmV3IER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlTWFuYWdlciwgbmFtZSwgcmVmZXJlbmNlLCBuYW1lc3BhY2UpO1xuXG4gICAgICB0aGlzLmFkZEF0dHJpYnV0ZShuYW1lLCBuc0F0dHJpYnV0ZSk7XG4gICAgfVxuICB9XG5cbiAgZmx1c2goZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIHZtOiBWTSkge1xuICAgIGxldCB7IGVudiB9ID0gdGhpcztcbiAgICBsZXQgeyBhdHRyaWJ1dGVzLCBjbGFzc0xpc3QgfSA9IHRoaXM7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgYXR0cmlidXRlcyAmJiBpIDwgYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IG9wY29kZSA9IGF0dHJpYnV0ZXNbaV0uZmx1c2goZW52KTtcblxuICAgICAgaWYgKG9wY29kZSkge1xuICAgICAgICB2bS51cGRhdGVXaXRoKG9wY29kZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNsYXNzTGlzdCkge1xuICAgICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSBlbnYuYXR0cmlidXRlRm9yKGVsZW1lbnQsICdjbGFzcycsIGZhbHNlKTtcbiAgICAgIGxldCBhdHRyaWJ1dGUgPSBuZXcgRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCAnY2xhc3MnLCBjbGFzc0xpc3QudG9SZWZlcmVuY2UoKSk7XG4gICAgICBsZXQgb3Bjb2RlID0gYXR0cmlidXRlLmZsdXNoKGVudik7XG5cbiAgICAgIGlmIChvcGNvZGUpIHtcbiAgICAgICAgdm0udXBkYXRlV2l0aChvcGNvZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkQWRkQXR0cmlidXRlKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5hdHRyaWJ1dGVOYW1lcyB8fCB0aGlzLmF0dHJpYnV0ZU5hbWVzLmluZGV4T2YobmFtZSkgPT09IC0xO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRDbGFzcyhyZWZlcmVuY2U6IFBhdGhSZWZlcmVuY2U8c3RyaW5nPikge1xuICAgIGxldCB7IGNsYXNzTGlzdCB9ID0gdGhpcztcblxuICAgIGlmICghY2xhc3NMaXN0KSB7XG4gICAgICBjbGFzc0xpc3QgPSB0aGlzLmNsYXNzTGlzdCA9IG5ldyBDbGFzc0xpc3QoKTtcbiAgICB9XG5cbiAgICBjbGFzc0xpc3QuYXBwZW5kKHJlZmVyZW5jZSk7XG4gIH1cblxuICBwcml2YXRlIGFkZEF0dHJpYnV0ZShuYW1lOiBzdHJpbmcsIGF0dHJpYnV0ZTogQXR0cmlidXRlKSB7XG4gICAgbGV0IHsgYXR0cmlidXRlTmFtZXMsIGF0dHJpYnV0ZXMgfSA9IHRoaXM7XG5cbiAgICBpZiAoIWF0dHJpYnV0ZU5hbWVzKSB7XG4gICAgICBhdHRyaWJ1dGVOYW1lcyA9IHRoaXMuYXR0cmlidXRlTmFtZXMgPSBbXTtcbiAgICAgIGF0dHJpYnV0ZXMgPSB0aGlzLmF0dHJpYnV0ZXMgPSBbXTtcbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVOYW1lcy5wdXNoKG5hbWUpO1xuICAgIHVud3JhcChhdHRyaWJ1dGVzKS5wdXNoKGF0dHJpYnV0ZSk7XG4gIH1cbn1cblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkZsdXNoRWxlbWVudCwgdm0gPT4ge1xuICBsZXQgc3RhY2sgPSB2bS5lbGVtZW50cygpO1xuXG4gIGxldCBhY3Rpb24gPSAnRmx1c2hFbGVtZW50T3Bjb2RlI2V2YWx1YXRlJztcbiAgc3RhY2suZXhwZWN0T3BlcmF0aW9ucyhhY3Rpb24pLmZsdXNoKHN0YWNrLmV4cGVjdENvbnN0cnVjdGluZyhhY3Rpb24pLCB2bSk7XG4gIHN0YWNrLmZsdXNoRWxlbWVudCgpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5DbG9zZUVsZW1lbnQsIHZtID0+IHZtLmVsZW1lbnRzKCkuY2xvc2VFbGVtZW50KCkpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuU3RhdGljQXR0ciwgKHZtLCB7IG9wMTogX25hbWUsIG9wMjogX3ZhbHVlLCBvcDM6IF9uYW1lc3BhY2UgfSkgPT4ge1xuICBsZXQgbmFtZSA9IHZtLmNvbnN0YW50cy5nZXRTdHJpbmcoX25hbWUpO1xuICBsZXQgdmFsdWUgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKF92YWx1ZSk7XG5cbiAgaWYgKF9uYW1lc3BhY2UpIHtcbiAgICBsZXQgbmFtZXNwYWNlID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyhfbmFtZXNwYWNlKTtcbiAgICB2bS5lbGVtZW50cygpLnNldFN0YXRpY0F0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSwgdmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHZtLmVsZW1lbnRzKCkuc2V0U3RhdGljQXR0cmlidXRlKG5hbWUsIHZhbHVlKTtcbiAgfVxufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5Nb2RpZmllciwgKHZtLCB7IG9wMTogX21hbmFnZXIgfSkgPT4ge1xuICBsZXQgbWFuYWdlciA9IHZtLmNvbnN0YW50cy5nZXRPdGhlcjxNb2RpZmllck1hbmFnZXI8T3BhcXVlPj4oX21hbmFnZXIpO1xuICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgbGV0IGFyZ3MgPSBzdGFjay5wb3A8QXJndW1lbnRzPigpO1xuICBsZXQgdGFnID0gYXJncy50YWc7XG4gIGxldCB7IGNvbnN0cnVjdGluZzogZWxlbWVudCwgdXBkYXRlT3BlcmF0aW9ucyB9ID0gdm0uZWxlbWVudHMoKTtcbiAgbGV0IGR5bmFtaWNTY29wZSA9IHZtLmR5bmFtaWNTY29wZSgpO1xuICBsZXQgbW9kaWZpZXIgPSBtYW5hZ2VyLmNyZWF0ZShlbGVtZW50IGFzIEZJWF9SRUlGSUNBVElPTjxFbGVtZW50PiwgYXJncywgZHluYW1pY1Njb3BlLCB1cGRhdGVPcGVyYXRpb25zKTtcblxuICBhcmdzLmNsZWFyKCk7XG5cbiAgdm0uZW52LnNjaGVkdWxlSW5zdGFsbE1vZGlmaWVyKG1vZGlmaWVyLCBtYW5hZ2VyKTtcbiAgbGV0IGRlc3RydWN0b3IgPSBtYW5hZ2VyLmdldERlc3RydWN0b3IobW9kaWZpZXIpO1xuXG4gIGlmIChkZXN0cnVjdG9yKSB7XG4gICAgdm0ubmV3RGVzdHJveWFibGUoZGVzdHJ1Y3Rvcik7XG4gIH1cblxuICB2bS51cGRhdGVXaXRoKG5ldyBVcGRhdGVNb2RpZmllck9wY29kZShcbiAgICB0YWcsXG4gICAgbWFuYWdlcixcbiAgICBtb2RpZmllclxuICApKTtcbn0pO1xuXG5leHBvcnQgY2xhc3MgVXBkYXRlTW9kaWZpZXJPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJ1cGRhdGUtbW9kaWZpZXJcIjtcbiAgcHJpdmF0ZSBsYXN0VXBkYXRlZDogUmV2aXNpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHRhZzogVGFnLFxuICAgIHByaXZhdGUgbWFuYWdlcjogTW9kaWZpZXJNYW5hZ2VyPE9wYXF1ZT4sXG4gICAgcHJpdmF0ZSBtb2RpZmllcjogT3BhcXVlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5sYXN0VXBkYXRlZCA9IHRhZy52YWx1ZSgpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICBsZXQgeyBtYW5hZ2VyLCBtb2RpZmllciwgdGFnLCBsYXN0VXBkYXRlZCB9ID0gdGhpcztcblxuICAgIGlmICghdGFnLnZhbGlkYXRlKGxhc3RVcGRhdGVkKSkge1xuICAgICAgdm0uZW52LnNjaGVkdWxlVXBkYXRlTW9kaWZpZXIobW9kaWZpZXIsIG1hbmFnZXIpO1xuICAgICAgdGhpcy5sYXN0VXBkYXRlZCA9IHRhZy52YWx1ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgIHR5cGU6IHRoaXMudHlwZVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdHRyaWJ1dGUge1xuICBuYW1lOiBzdHJpbmc7XG4gIGZsdXNoKGVudjogRW52aXJvbm1lbnQpOiBPcHRpb248VXBkYXRpbmdPcGNvZGU+O1xufVxuXG5leHBvcnQgY2xhc3MgU3RhdGljQXR0cmlidXRlIGltcGxlbWVudHMgQXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbGVtZW50OiBTaW1wbGUuRWxlbWVudCxcbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nLFxuICAgIHByaXZhdGUgdmFsdWU6IHN0cmluZyxcbiAgICBwcml2YXRlIG5hbWVzcGFjZT86IHN0cmluZ1xuICApIHt9XG5cbiAgZmx1c2goZW52OiBFbnZpcm9ubWVudCk6IE9wdGlvbjxVcGRhdGluZ09wY29kZT4ge1xuICAgIGVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCkuc2V0QXR0cmlidXRlKHRoaXMuZWxlbWVudCwgdGhpcy5uYW1lLCB0aGlzLnZhbHVlLCB0aGlzLm5hbWVzcGFjZSk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIER5bmFtaWNBdHRyaWJ1dGUgaW1wbGVtZW50cyBBdHRyaWJ1dGUgIHtcbiAgcHJpdmF0ZSBjYWNoZTogT3B0aW9uPFJlZmVyZW5jZUNhY2hlPE9wYXF1ZT4+ID0gbnVsbDtcblxuICBwdWJsaWMgdGFnOiBUYWc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbGVtZW50OiBTaW1wbGUuRWxlbWVudCxcbiAgICBwcml2YXRlIGF0dHJpYnV0ZU1hbmFnZXI6IEF0dHJpYnV0ZU1hbmFnZXIsXG4gICAgcHVibGljIG5hbWU6IHN0cmluZyxcbiAgICBwcml2YXRlIHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4sXG4gICAgcHJpdmF0ZSBuYW1lc3BhY2U/OiBTaW1wbGUuTmFtZXNwYWNlXG4gICkge1xuICAgIHRoaXMudGFnID0gcmVmZXJlbmNlLnRhZztcbiAgfVxuXG4gIHBhdGNoKGVudjogRW52aXJvbm1lbnQpIHtcbiAgICBsZXQgeyBlbGVtZW50LCBjYWNoZSB9ID0gdGhpcztcblxuICAgIGxldCB2YWx1ZSA9IGV4cGVjdChjYWNoZSwgJ211c3QgcGF0Y2ggYWZ0ZXIgZmx1c2gnKS5yZXZhbGlkYXRlKCk7XG5cbiAgICBpZiAoaXNNb2RpZmllZCh2YWx1ZSkpIHtcbiAgICAgIHRoaXMuYXR0cmlidXRlTWFuYWdlci51cGRhdGVBdHRyaWJ1dGUoZW52LCBlbGVtZW50IGFzIEZJWE1FPEVsZW1lbnQsICduZWVkcyB0byBiZSByZWlmaWVkIHByb3Blcmx5Jz4sIHZhbHVlLCB0aGlzLm5hbWVzcGFjZSk7XG4gICAgfVxuICB9XG5cbiAgZmx1c2goZW52OiBFbnZpcm9ubWVudCk6IE9wdGlvbjxVcGRhdGluZ09wY29kZT4ge1xuICAgIGxldCB7IHJlZmVyZW5jZSwgZWxlbWVudCB9ID0gdGhpcztcblxuICAgIGlmIChpc0NvbnN0UmVmZXJlbmNlKHJlZmVyZW5jZSkpIHtcbiAgICAgIGxldCB2YWx1ZSA9IHJlZmVyZW5jZS52YWx1ZSgpO1xuICAgICAgdGhpcy5hdHRyaWJ1dGVNYW5hZ2VyLnNldEF0dHJpYnV0ZShlbnYsIGVsZW1lbnQsIHZhbHVlLCB0aGlzLm5hbWVzcGFjZSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGNhY2hlID0gdGhpcy5jYWNoZSA9IG5ldyBSZWZlcmVuY2VDYWNoZShyZWZlcmVuY2UpO1xuICAgICAgbGV0IHZhbHVlID0gY2FjaGUucGVlaygpO1xuICAgICAgdGhpcy5hdHRyaWJ1dGVNYW5hZ2VyLnNldEF0dHJpYnV0ZShlbnYsIGVsZW1lbnQsIHZhbHVlLCB0aGlzLm5hbWVzcGFjZSk7XG4gICAgICByZXR1cm4gbmV3IFBhdGNoRWxlbWVudE9wY29kZSh0aGlzKTtcbiAgICB9XG4gIH1cblxuICB0b0pTT04oKTogRGljdDxPcHRpb248c3RyaW5nPj4ge1xuICAgIGxldCB7IGVsZW1lbnQsIG5hbWVzcGFjZSwgbmFtZSwgY2FjaGUgfSA9IHRoaXM7XG5cbiAgICBsZXQgZm9ybWF0dGVkRWxlbWVudCA9IGZvcm1hdEVsZW1lbnQoZWxlbWVudCk7XG4gICAgbGV0IGxhc3RWYWx1ZSA9IGV4cGVjdChjYWNoZSwgJ211c3Qgc2VyaWFsaXplIGFmdGVyIGZsdXNoJykucGVlaygpIGFzIHN0cmluZztcblxuICAgIGlmIChuYW1lc3BhY2UpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGVsZW1lbnQ6IGZvcm1hdHRlZEVsZW1lbnQsXG4gICAgICAgIHR5cGU6ICdhdHRyaWJ1dGUnLFxuICAgICAgICBuYW1lc3BhY2UsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIGxhc3RWYWx1ZVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZWxlbWVudDogZm9ybWF0dGVkRWxlbWVudCxcbiAgICAgIHR5cGU6ICdhdHRyaWJ1dGUnLFxuICAgICAgbmFtZXNwYWNlOiBuYW1lc3BhY2UgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBuYW1lc3BhY2UsXG4gICAgICBuYW1lLFxuICAgICAgbGFzdFZhbHVlXG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmb3JtYXRFbGVtZW50KGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50KTogc3RyaW5nIHtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGA8JHtlbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKX0gLz5gKTtcbn1cblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkR5bmFtaWNBdHRyTlMsICh2bSwgeyBvcDE6IF9uYW1lLCBvcDI6IF9uYW1lc3BhY2UsIG9wMzogdHJ1c3RpbmcgfSkgPT4ge1xuICBsZXQgbmFtZSA9IHZtLmNvbnN0YW50cy5nZXRTdHJpbmcoX25hbWUpO1xuICBsZXQgbmFtZXNwYWNlID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyhfbmFtZXNwYWNlKTtcbiAgbGV0IHJlZmVyZW5jZSA9IHZtLnN0YWNrLnBvcDxWZXJzaW9uZWRSZWZlcmVuY2U8c3RyaW5nPj4oKTtcbiAgdm0uZWxlbWVudHMoKS5zZXREeW5hbWljQXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lLCByZWZlcmVuY2UsICEhdHJ1c3RpbmcpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5EeW5hbWljQXR0ciwgKHZtLCB7IG9wMTogX25hbWUsIG9wMjogdHJ1c3RpbmcgfSkgPT4ge1xuICBsZXQgbmFtZSA9IHZtLmNvbnN0YW50cy5nZXRTdHJpbmcoX25hbWUpO1xuICBsZXQgcmVmZXJlbmNlID0gdm0uc3RhY2sucG9wPFZlcnNpb25lZFJlZmVyZW5jZTxzdHJpbmc+PigpO1xuICB2bS5lbGVtZW50cygpLnNldER5bmFtaWNBdHRyaWJ1dGUobmFtZSwgcmVmZXJlbmNlLCAhIXRydXN0aW5nKTtcbn0pO1xuXG5leHBvcnQgY2xhc3MgUGF0Y2hFbGVtZW50T3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwicGF0Y2gtZWxlbWVudFwiO1xuXG4gIHByaXZhdGUgb3BlcmF0aW9uOiBEeW5hbWljQXR0cmlidXRlO1xuXG4gIGNvbnN0cnVjdG9yKG9wZXJhdGlvbjogRHluYW1pY0F0dHJpYnV0ZSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy50YWcgPSBvcGVyYXRpb24udGFnO1xuICAgIHRoaXMub3BlcmF0aW9uID0gb3BlcmF0aW9uO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICB0aGlzLm9wZXJhdGlvbi5wYXRjaCh2bS5lbnYpO1xuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIGxldCB7IF9ndWlkLCB0eXBlLCBvcGVyYXRpb24gfSA9IHRoaXM7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZDogX2d1aWQsXG4gICAgICB0eXBlLFxuICAgICAgZGV0YWlsczogb3BlcmF0aW9uLnRvSlNPTigpXG4gICAgfTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZG9tLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxBQUFPLEFBQUUsQUFBYyxBQUFFLEFBQU0sQUFBZSxBQUFDOztBQU8vQyxBQUFPLEFBQ0wsQUFBZSxBQUdmLEFBQWMsQUFJZCxBQUFhLEFBQ2IsQUFBTyxBQUFJLEFBQWdCLEFBQzNCLEFBQVUsQUFDWCxBQUFNLEFBQW9CLEFBQUM7O0FBRTVCLEFBQU8sQUFBRSxBQUFjLEFBQUUsQUFBa0IsQUFBRSxBQUFNLEFBQWtCLEFBQUM7O0FBR3RFLEFBQU8sQUFBRSxBQUFNLEFBQUUsQUFBTSxBQUFNLEFBQUMsQUFDOUIsQUFBTyxBQUFFLEFBQWMsQUFBWSxBQUFNLEFBQWUsQUFBQzs7QUFFekQsQUFBYyx3QkFBQyxBQUFHLElBQUMsR0FBTyxZQUFFLENBQUMsQUFBRSxJQUFFLEVBQUUsQUFBRyxLQUFFLEFBQUksQUFBRTtBQUM1QyxBQUFFLE9BQUMsQUFBUSxBQUFFLFdBQUMsQUFBVSxXQUFDLEFBQUUsR0FBQyxBQUFTLFVBQUMsQUFBUyxVQUFDLEFBQUksQUFBQyxBQUFDLEFBQUMsQUFDekQ7QUFBQyxBQUFDLEFBQUM7QUFFSCxBQUFjLHdCQUFDLEFBQUcsSUFBQyxHQUFVLGVBQUUsQ0FBQyxBQUFFLElBQUUsRUFBRSxBQUFHLEtBQUUsQUFBSSxBQUFFO0FBQy9DLEFBQUUsT0FBQyxBQUFRLEFBQUUsV0FBQyxBQUFhLGNBQUMsQUFBRSxHQUFDLEFBQVMsVUFBQyxBQUFTLFVBQUMsQUFBSSxBQUFDLEFBQUMsQUFBQyxBQUM1RDtBQUFDLEFBQUMsQUFBQztBQUVILEFBQWMsd0JBQUMsQUFBRyxJQUFDLEdBQWMsbUJBQUUsQ0FBQyxBQUFFLElBQUUsRUFBRSxBQUFHLEtBQUUsQUFBRyxBQUFFO0FBQ2xELEFBQUUsT0FBQyxBQUFRLEFBQUUsV0FBQyxBQUFXLFlBQUMsQUFBRSxHQUFDLEFBQVMsVUFBQyxBQUFTLFVBQUMsQUFBRyxB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QUssQUFBRSxBQUFDO0FBTEgsYUFBSSxPQUFHLEFBQWUsQUFBQztBQU01QixBQUFJLGFBQUMsQUFBRyxNQUFHLEFBQVMsVUFBQyxBQUFHLEFBQUM7QUFDekIsQUFBSSxhQUFDLEFBQVMsWUFBRyxBQUFTLEFBQUMsQUFDN0I7QUFBQztBQUVELEFBQVEsYUFBQyxBQUFjO0FBQ3JCLEFBQUksYUFBQyxBQUFTLFVBQUMsQUFBSyxNQUFDLEFBQUUsR0FBQyxBQUFHLEFBQUMsQUFBQyxBQUMvQjtBQUFDLEFBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVcGRhdGluZ09wY29kZSB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IHsgVk0sIFVwZGF0aW5nVk0gfSBmcm9tICcuLi8uLi92bSc7XG5pbXBvcnQgeyBBcmd1bWVudHMgfSBmcm9tICcuLi8uLi92bS9hcmd1bWVudHMnO1xuaW1wb3J0ICogYXMgU2ltcGxlIGZyb20gJy4uLy4uL2RvbS9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEZJWF9SRUlGSUNBVElPTiB9IGZyb20gJy4uLy4uL2RvbS9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEVudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgRklYTUUsIE9wdGlvbiwgT3BhcXVlIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQge1xuICBDYWNoZWRSZWZlcmVuY2UsXG4gIFJlZmVyZW5jZSxcbiAgVmVyc2lvbmVkUmVmZXJlbmNlLFxuICBSZWZlcmVuY2VDYWNoZSxcbiAgVGFnLFxuICBSZXZpc2lvbixcbiAgUGF0aFJlZmVyZW5jZSxcbiAgY29tYmluZVRhZ2dlZCxcbiAgaXNDb25zdCBhcyBpc0NvbnN0UmVmZXJlbmNlLFxuICBpc01vZGlmaWVkXG59IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBNb2RpZmllck1hbmFnZXIgfSBmcm9tICcuLi8uLi9tb2RpZmllci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE5VTExfUkVGRVJFTkNFLCBQcmltaXRpdmVSZWZlcmVuY2UgfSBmcm9tICcuLi8uLi9yZWZlcmVuY2VzJztcbmltcG9ydCB7IEF0dHJpYnV0ZU1hbmFnZXIgfSBmcm9tICcuLi8uLi9kb20vYXR0cmlidXRlLW1hbmFnZXJzJztcbmltcG9ydCB7IEVsZW1lbnRPcGVyYXRpb25zIH0gZnJvbSAnLi4vLi4vYnVpbGRlcic7XG5pbXBvcnQgeyBBc3NlcnQgfSBmcm9tICcuL3ZtJztcbmltcG9ydCB7IEFQUEVORF9PUENPREVTLCBPcCBhcyBPcCB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuVGV4dCwgKHZtLCB7IG9wMTogdGV4dCB9KSA9PiB7XG4gIHZtLmVsZW1lbnRzKCkuYXBwZW5kVGV4dCh2bS5jb25zdGFudHMuZ2V0U3RyaW5nKHRleHQpKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuQ29tbWVudCwgKHZtLCB7IG9wMTogdGV4dCB9KSA9PiB7XG4gIHZtLmVsZW1lbnRzKCkuYXBwZW5kQ29tbWVudCh2bS5jb25zdGFudHMuZ2V0U3RyaW5nKHRleHQpKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuT3BlbkVsZW1lbnQsICh2bSwgeyBvcDE6IHRhZyB9KSA9PiB7XG4gIHZtLmVsZW1lbnRzKCkub3BlbkVsZW1lbnQodm0uY29uc3RhbnRzLmdldFN0cmluZyh0YWcpKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuT3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucywgKHZtLCB7IG9wMTogdGFnIH0pID0+IHtcbiAgbGV0IHRhZ05hbWUgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKHRhZyk7XG4gIGxldCBvcGVyYXRpb25zID0gdm0uc3RhY2sucG9wPEVsZW1lbnRPcGVyYXRpb25zPigpO1xuICB2bS5lbGVtZW50cygpLm9wZW5FbGVtZW50KHRhZ05hbWUsIG9wZXJhdGlvbnMpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5PcGVuRHluYW1pY0VsZW1lbnQsIHZtID0+IHtcbiAgbGV0IG9wZXJhdGlvbnMgPSB2bS5zdGFjay5wb3A8RWxlbWVudE9wZXJhdGlvbnM+KCk7XG4gIGxldCB0YWdOYW1lID0gdm0uc3RhY2sucG9wPFJlZmVyZW5jZTxzdHJpbmc+PigpLnZhbHVlKCk7XG4gIHZtLmVsZW1lbnRzKCkub3BlbkVsZW1lbnQodGFnTmFtZSwgb3BlcmF0aW9ucyk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlB1c2hSZW1vdGVFbGVtZW50LCB2bSA9PiB7XG4gIGxldCBlbGVtZW50UmVmID0gdm0uc3RhY2sucG9wPFJlZmVyZW5jZTxTaW1wbGUuRWxlbWVudD4+KCk7XG4gIGxldCBuZXh0U2libGluZ1JlZiA9IHZtLnN0YWNrLnBvcDxSZWZlcmVuY2U8T3B0aW9uPFNpbXBsZS5Ob2RlPj4+KCk7XG5cbiAgbGV0IGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50O1xuICBsZXQgbmV4dFNpYmxpbmc6IE9wdGlvbjxTaW1wbGUuTm9kZT47XG5cbiAgaWYgKGlzQ29uc3RSZWZlcmVuY2UoZWxlbWVudFJlZikpIHtcbiAgICBlbGVtZW50ID0gZWxlbWVudFJlZi52YWx1ZSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCBjYWNoZSA9IG5ldyBSZWZlcmVuY2VDYWNoZShlbGVtZW50UmVmKTtcbiAgICBlbGVtZW50ID0gY2FjaGUucGVlaygpO1xuICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICB9XG5cbiAgaWYgKGlzQ29uc3RSZWZlcmVuY2UobmV4dFNpYmxpbmdSZWYpKSB7XG4gICAgbmV4dFNpYmxpbmcgPSBuZXh0U2libGluZ1JlZi52YWx1ZSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCBjYWNoZSA9IG5ldyBSZWZlcmVuY2VDYWNoZShuZXh0U2libGluZ1JlZik7XG4gICAgbmV4dFNpYmxpbmcgPSBjYWNoZS5wZWVrKCk7XG4gICAgdm0udXBkYXRlV2l0aChuZXcgQXNzZXJ0KGNhY2hlKSk7XG4gIH1cblxuICB2bS5lbGVtZW50cygpLnB1c2hSZW1vdGVFbGVtZW50KGVsZW1lbnQsIG5leHRTaWJsaW5nKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUG9wUmVtb3RlRWxlbWVudCwgdm0gPT4gdm0uZWxlbWVudHMoKS5wb3BSZW1vdGVFbGVtZW50KCkpO1xuXG5jbGFzcyBDbGFzc0xpc3Qge1xuICBwcml2YXRlIGxpc3Q6IE9wdGlvbjxSZWZlcmVuY2U8c3RyaW5nPltdPiA9IG51bGw7XG4gIHByaXZhdGUgaXNDb25zdCA9IHRydWU7XG5cbiAgYXBwZW5kKHJlZmVyZW5jZTogUmVmZXJlbmNlPHN0cmluZz4pIHtcbiAgICBsZXQgeyBsaXN0LCBpc0NvbnN0IH0gPSB0aGlzO1xuXG4gICAgaWYgKGxpc3QgPT09IG51bGwpIGxpc3QgPSB0aGlzLmxpc3QgPSBbXTtcblxuICAgIGxpc3QucHVzaChyZWZlcmVuY2UpO1xuICAgIHRoaXMuaXNDb25zdCA9IGlzQ29uc3QgJiYgaXNDb25zdFJlZmVyZW5jZShyZWZlcmVuY2UpO1xuICB9XG5cbiAgdG9SZWZlcmVuY2UoKTogUmVmZXJlbmNlPE9wdGlvbjxzdHJpbmc+PiB7XG4gICAgbGV0IHsgbGlzdCwgaXNDb25zdCB9ID0gdGhpcztcblxuICAgIGlmICghbGlzdCkgcmV0dXJuIE5VTExfUkVGRVJFTkNFO1xuXG4gICAgaWYgKGlzQ29uc3QpIHJldHVybiBQcmltaXRpdmVSZWZlcmVuY2UuY3JlYXRlKHRvQ2xhc3NOYW1lKGxpc3QpKTtcblxuICAgIHJldHVybiBuZXcgQ2xhc3NMaXN0UmVmZXJlbmNlKGxpc3QpO1xuICB9XG5cbn1cblxuY2xhc3MgQ2xhc3NMaXN0UmVmZXJlbmNlIGV4dGVuZHMgQ2FjaGVkUmVmZXJlbmNlPE9wdGlvbjxzdHJpbmc+PiB7XG4gIHB1YmxpYyB0YWc6IFRhZztcbiAgcHJpdmF0ZSBsaXN0OiBSZWZlcmVuY2U8c3RyaW5nPltdID0gW107XG5cbiAgY29uc3RydWN0b3IobGlzdDogUmVmZXJlbmNlPHN0cmluZz5bXSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy50YWcgPSBjb21iaW5lVGFnZ2VkKGxpc3QpO1xuICAgIHRoaXMubGlzdCA9IGxpc3Q7XG4gIH1cblxuICBwcm90ZWN0ZWQgY29tcHV0ZSgpOiBPcHRpb248c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRvQ2xhc3NOYW1lKHRoaXMubGlzdCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdG9DbGFzc05hbWUobGlzdDogUmVmZXJlbmNlPHN0cmluZz5bXSk6IE9wdGlvbjxzdHJpbmc+IHtcbiAgbGV0IHJldDogT3BhcXVlW10gPSBbXTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgdmFsdWU6IEZJWE1FPE9wYXF1ZSwgJ3VzZSBPcGFxdWUgYW5kIG5vcm1hbGl6ZSc+ID0gbGlzdFtpXS52YWx1ZSgpO1xuICAgIGlmICh2YWx1ZSAhPT0gZmFsc2UgJiYgdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkgcmV0LnB1c2godmFsdWUpO1xuICB9XG5cbiAgcmV0dXJuIChyZXQubGVuZ3RoID09PSAwKSA/IG51bGwgOiByZXQuam9pbignICcpO1xufVxuXG5leHBvcnQgY2xhc3MgU2ltcGxlRWxlbWVudE9wZXJhdGlvbnMgaW1wbGVtZW50cyBFbGVtZW50T3BlcmF0aW9ucyB7XG4gIHByaXZhdGUgb3Bjb2RlczogT3B0aW9uPFVwZGF0aW5nT3Bjb2RlW10+ID0gbnVsbDtcbiAgcHJpdmF0ZSBjbGFzc0xpc3Q6IE9wdGlvbjxDbGFzc0xpc3Q+ID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVudjogRW52aXJvbm1lbnQpIHtcbiAgfVxuXG4gIGFkZFN0YXRpY0F0dHJpYnV0ZShlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKG5hbWUgPT09ICdjbGFzcycpIHtcbiAgICAgIHRoaXMuYWRkQ2xhc3MoUHJpbWl0aXZlUmVmZXJlbmNlLmNyZWF0ZSh2YWx1ZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCkuc2V0QXR0cmlidXRlKGVsZW1lbnQsIG5hbWUsIHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBhZGRTdGF0aWNBdHRyaWJ1dGVOUyhlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZXNwYWNlOiBzdHJpbmcsIG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuZW52LmdldEFwcGVuZE9wZXJhdGlvbnMoKS5zZXRBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZSk7XG4gIH1cblxuICBhZGREeW5hbWljQXR0cmlidXRlKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lOiBzdHJpbmcsIHJlZmVyZW5jZTogUmVmZXJlbmNlPHN0cmluZz4sIGlzVHJ1c3Rpbmc6IGJvb2xlYW4pIHtcbiAgICBpZiAobmFtZSA9PT0gJ2NsYXNzJykge1xuICAgICAgdGhpcy5hZGRDbGFzcyhyZWZlcmVuY2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgYXR0cmlidXRlTWFuYWdlciA9IHRoaXMuZW52LmF0dHJpYnV0ZUZvcihlbGVtZW50LCBuYW1lLCBpc1RydXN0aW5nKTtcbiAgICAgIGxldCBhdHRyaWJ1dGUgPSBuZXcgRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCBuYW1lLCByZWZlcmVuY2UpO1xuXG4gICAgICB0aGlzLmFkZEF0dHJpYnV0ZShhdHRyaWJ1dGUpO1xuICAgIH1cbiAgfVxuXG4gIGFkZER5bmFtaWNBdHRyaWJ1dGVOUyhlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZXNwYWNlOiBTaW1wbGUuTmFtZXNwYWNlLCBuYW1lOiBzdHJpbmcsIHJlZmVyZW5jZTogUGF0aFJlZmVyZW5jZTxzdHJpbmc+LCBpc1RydXN0aW5nOiBib29sZWFuKSB7XG4gICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSB0aGlzLmVudi5hdHRyaWJ1dGVGb3IoZWxlbWVudCwgbmFtZSwgaXNUcnVzdGluZywgbmFtZXNwYWNlKTtcbiAgICBsZXQgbnNBdHRyaWJ1dGUgPSBuZXcgRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCBuYW1lLCByZWZlcmVuY2UsIG5hbWVzcGFjZSk7XG5cbiAgICB0aGlzLmFkZEF0dHJpYnV0ZShuc0F0dHJpYnV0ZSk7XG4gIH1cblxuICBmbHVzaChlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgdm06IFZNKSB7XG4gICAgbGV0IHsgZW52IH0gPSB2bTtcbiAgICBsZXQgeyBvcGNvZGVzLCBjbGFzc0xpc3QgfSA9IHRoaXM7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgb3Bjb2RlcyAmJiBpIDwgb3Bjb2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdm0udXBkYXRlV2l0aChvcGNvZGVzW2ldKTtcbiAgICB9XG5cbiAgICBpZiAoY2xhc3NMaXN0KSB7XG4gICAgICBsZXQgYXR0cmlidXRlTWFuYWdlciA9IGVudi5hdHRyaWJ1dGVGb3IoZWxlbWVudCwgJ2NsYXNzJywgZmFsc2UpO1xuICAgICAgbGV0IGF0dHJpYnV0ZSA9IG5ldyBEeW5hbWljQXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZU1hbmFnZXIsICdjbGFzcycsIGNsYXNzTGlzdC50b1JlZmVyZW5jZSgpKTtcbiAgICAgIGxldCBvcGNvZGUgPSBhdHRyaWJ1dGUuZmx1c2goZW52KTtcblxuICAgICAgaWYgKG9wY29kZSkge1xuICAgICAgICB2bS51cGRhdGVXaXRoKG9wY29kZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5vcGNvZGVzID0gbnVsbDtcbiAgICB0aGlzLmNsYXNzTGlzdCA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGFkZENsYXNzKHJlZmVyZW5jZTogUmVmZXJlbmNlPHN0cmluZz4pIHtcbiAgICBsZXQgeyBjbGFzc0xpc3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIWNsYXNzTGlzdCkge1xuICAgICAgY2xhc3NMaXN0ID0gdGhpcy5jbGFzc0xpc3QgPSBuZXcgQ2xhc3NMaXN0KCk7XG4gICAgfVxuXG4gICAgY2xhc3NMaXN0LmFwcGVuZChyZWZlcmVuY2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRBdHRyaWJ1dGUoYXR0cmlidXRlOiBBdHRyaWJ1dGUpIHtcbiAgICBsZXQgb3Bjb2RlID0gYXR0cmlidXRlLmZsdXNoKHRoaXMuZW52KTtcblxuICAgIGlmIChvcGNvZGUpIHtcbiAgICAgIGxldCB7IG9wY29kZXMgfSA9IHRoaXM7XG5cbiAgICAgIGlmICghb3Bjb2Rlcykge1xuICAgICAgICBvcGNvZGVzID0gdGhpcy5vcGNvZGVzID0gW107XG4gICAgICB9XG5cbiAgICAgIG9wY29kZXMucHVzaChvcGNvZGUpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50RWxlbWVudE9wZXJhdGlvbnMgaW1wbGVtZW50cyBFbGVtZW50T3BlcmF0aW9ucyB7XG4gIHByaXZhdGUgYXR0cmlidXRlTmFtZXM6IE9wdGlvbjxzdHJpbmdbXT4gPSBudWxsO1xuICBwcml2YXRlIGF0dHJpYnV0ZXM6IE9wdGlvbjxBdHRyaWJ1dGVbXT4gPSBudWxsO1xuICBwcml2YXRlIGNsYXNzTGlzdDogT3B0aW9uPENsYXNzTGlzdD4gPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZW52OiBFbnZpcm9ubWVudCkge1xuICB9XG5cbiAgYWRkU3RhdGljQXR0cmlidXRlKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAobmFtZSA9PT0gJ2NsYXNzJykge1xuICAgICAgdGhpcy5hZGRDbGFzcyhQcmltaXRpdmVSZWZlcmVuY2UuY3JlYXRlKHZhbHVlKSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNob3VsZEFkZEF0dHJpYnV0ZShuYW1lKSkge1xuICAgICAgdGhpcy5hZGRBdHRyaWJ1dGUobmFtZSwgbmV3IFN0YXRpY0F0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCB2YWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIGFkZFN0YXRpY0F0dHJpYnV0ZU5TKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lc3BhY2U6IHN0cmluZywgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuc2hvdWxkQWRkQXR0cmlidXRlKG5hbWUpKSB7XG4gICAgICB0aGlzLmFkZEF0dHJpYnV0ZShuYW1lLCBuZXcgU3RhdGljQXR0cmlidXRlKGVsZW1lbnQsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UpKTtcbiAgICB9XG4gIH1cblxuICBhZGREeW5hbWljQXR0cmlidXRlKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lOiBzdHJpbmcsIHJlZmVyZW5jZTogUGF0aFJlZmVyZW5jZTxzdHJpbmc+LCBpc1RydXN0aW5nOiBib29sZWFuKSB7XG4gICAgaWYgKG5hbWUgPT09ICdjbGFzcycpIHtcbiAgICAgIHRoaXMuYWRkQ2xhc3MocmVmZXJlbmNlKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2hvdWxkQWRkQXR0cmlidXRlKG5hbWUpKSB7XG4gICAgICBsZXQgYXR0cmlidXRlTWFuYWdlciA9IHRoaXMuZW52LmF0dHJpYnV0ZUZvcihlbGVtZW50LCBuYW1lLCBpc1RydXN0aW5nKTtcbiAgICAgIGxldCBhdHRyaWJ1dGUgPSBuZXcgRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCBuYW1lLCByZWZlcmVuY2UpO1xuXG4gICAgICB0aGlzLmFkZEF0dHJpYnV0ZShuYW1lLCBhdHRyaWJ1dGUpO1xuICAgIH1cbiAgfVxuXG4gIGFkZER5bmFtaWNBdHRyaWJ1dGVOUyhlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZXNwYWNlOiBTaW1wbGUuTmFtZXNwYWNlLCBuYW1lOiBzdHJpbmcsIHJlZmVyZW5jZTogUGF0aFJlZmVyZW5jZTxzdHJpbmc+LCBpc1RydXN0aW5nOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMuc2hvdWxkQWRkQXR0cmlidXRlKG5hbWUpKSB7XG4gICAgICBsZXQgYXR0cmlidXRlTWFuYWdlciA9IHRoaXMuZW52LmF0dHJpYnV0ZUZvcihlbGVtZW50LCBuYW1lLCBpc1RydXN0aW5nLCBuYW1lc3BhY2UpO1xuICAgICAgbGV0IG5zQXR0cmlidXRlID0gbmV3IER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlTWFuYWdlciwgbmFtZSwgcmVmZXJlbmNlLCBuYW1lc3BhY2UpO1xuXG4gICAgICB0aGlzLmFkZEF0dHJpYnV0ZShuYW1lLCBuc0F0dHJpYnV0ZSk7XG4gICAgfVxuICB9XG5cbiAgZmx1c2goZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIHZtOiBWTSkge1xuICAgIGxldCB7IGVudiB9ID0gdGhpcztcbiAgICBsZXQgeyBhdHRyaWJ1dGVzLCBjbGFzc0xpc3QgfSA9IHRoaXM7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgYXR0cmlidXRlcyAmJiBpIDwgYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IG9wY29kZSA9IGF0dHJpYnV0ZXNbaV0uZmx1c2goZW52KTtcblxuICAgICAgaWYgKG9wY29kZSkge1xuICAgICAgICB2bS51cGRhdGVXaXRoKG9wY29kZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNsYXNzTGlzdCkge1xuICAgICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSBlbnYuYXR0cmlidXRlRm9yKGVsZW1lbnQsICdjbGFzcycsIGZhbHNlKTtcbiAgICAgIGxldCBhdHRyaWJ1dGUgPSBuZXcgRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCAnY2xhc3MnLCBjbGFzc0xpc3QudG9SZWZlcmVuY2UoKSk7XG4gICAgICBsZXQgb3Bjb2RlID0gYXR0cmlidXRlLmZsdXNoKGVudik7XG5cbiAgICAgIGlmIChvcGNvZGUpIHtcbiAgICAgICAgdm0udXBkYXRlV2l0aChvcGNvZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkQWRkQXR0cmlidXRlKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5hdHRyaWJ1dGVOYW1lcyB8fCB0aGlzLmF0dHJpYnV0ZU5hbWVzLmluZGV4T2YobmFtZSkgPT09IC0xO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRDbGFzcyhyZWZlcmVuY2U6IFBhdGhSZWZlcmVuY2U8c3RyaW5nPikge1xuICAgIGxldCB7IGNsYXNzTGlzdCB9ID0gdGhpcztcblxuICAgIGlmICghY2xhc3NMaXN0KSB7XG4gICAgICBjbGFzc0xpc3QgPSB0aGlzLmNsYXNzTGlzdCA9IG5ldyBDbGFzc0xpc3QoKTtcbiAgICB9XG5cbiAgICBjbGFzc0xpc3QuYXBwZW5kKHJlZmVyZW5jZSk7XG4gIH1cblxuICBwcml2YXRlIGFkZEF0dHJpYnV0ZShuYW1lOiBzdHJpbmcsIGF0dHJpYnV0ZTogQXR0cmlidXRlKSB7XG4gICAgbGV0IHsgYXR0cmlidXRlTmFtZXMsIGF0dHJpYnV0ZXMgfSA9IHRoaXM7XG5cbiAgICBpZiAoIWF0dHJpYnV0ZU5hbWVzKSB7XG4gICAgICBhdHRyaWJ1dGVOYW1lcyA9IHRoaXMuYXR0cmlidXRlTmFtZXMgPSBbXTtcbiAgICAgIGF0dHJpYnV0ZXMgPSB0aGlzLmF0dHJpYnV0ZXMgPSBbXTtcbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVOYW1lcy5wdXNoKG5hbWUpO1xuICAgIGF0dHJpYnV0ZXMucHVzaChhdHRyaWJ1dGUpO1xuICB9XG59XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5GbHVzaEVsZW1lbnQsIHZtID0+IHtcbiAgbGV0IHN0YWNrID0gdm0uZWxlbWVudHMoKTtcblxuICBsZXQgYWN0aW9uID0gJ0ZsdXNoRWxlbWVudE9wY29kZSNldmFsdWF0ZSc7XG4gIHN0YWNrLmV4cGVjdE9wZXJhdGlvbnMoYWN0aW9uKS5mbHVzaChzdGFjay5leHBlY3RDb25zdHJ1Y3RpbmcoYWN0aW9uKSwgdm0pO1xuICBzdGFjay5mbHVzaEVsZW1lbnQoKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuQ2xvc2VFbGVtZW50LCB2bSA9PiB2bS5lbGVtZW50cygpLmNsb3NlRWxlbWVudCgpKTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlN0YXRpY0F0dHIsICh2bSwgeyBvcDE6IF9uYW1lLCBvcDI6IF92YWx1ZSwgb3AzOiBfbmFtZXNwYWNlIH0pID0+IHtcbiAgbGV0IG5hbWUgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKF9uYW1lKTtcbiAgbGV0IHZhbHVlID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyhfdmFsdWUpO1xuXG4gIGlmIChfbmFtZXNwYWNlKSB7XG4gICAgbGV0IG5hbWVzcGFjZSA9IHZtLmNvbnN0YW50cy5nZXRTdHJpbmcoX25hbWVzcGFjZSk7XG4gICAgdm0uZWxlbWVudHMoKS5zZXRTdGF0aWNBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICB2bS5lbGVtZW50cygpLnNldFN0YXRpY0F0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7XG4gIH1cbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuTW9kaWZpZXIsICh2bSwgeyBvcDE6IF9tYW5hZ2VyIH0pID0+IHtcbiAgbGV0IG1hbmFnZXIgPSB2bS5jb25zdGFudHMuZ2V0T3RoZXI8TW9kaWZpZXJNYW5hZ2VyPE9wYXF1ZT4+KF9tYW5hZ2VyKTtcbiAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gIGxldCBhcmdzID0gc3RhY2sucG9wPEFyZ3VtZW50cz4oKTtcbiAgbGV0IHRhZyA9IGFyZ3MudGFnO1xuICBsZXQgeyBjb25zdHJ1Y3Rpbmc6IGVsZW1lbnQsIHVwZGF0ZU9wZXJhdGlvbnMgfSA9IHZtLmVsZW1lbnRzKCk7XG4gIGxldCBkeW5hbWljU2NvcGUgPSB2bS5keW5hbWljU2NvcGUoKTtcbiAgbGV0IG1vZGlmaWVyID0gbWFuYWdlci5jcmVhdGUoZWxlbWVudCBhcyBGSVhfUkVJRklDQVRJT048RWxlbWVudD4sIGFyZ3MsIGR5bmFtaWNTY29wZSwgdXBkYXRlT3BlcmF0aW9ucyk7XG5cbiAgYXJncy5jbGVhcigpO1xuXG4gIHZtLmVudi5zY2hlZHVsZUluc3RhbGxNb2RpZmllcihtb2RpZmllciwgbWFuYWdlcik7XG4gIGxldCBkZXN0cnVjdG9yID0gbWFuYWdlci5nZXREZXN0cnVjdG9yKG1vZGlmaWVyKTtcblxuICBpZiAoZGVzdHJ1Y3Rvcikge1xuICAgIHZtLm5ld0Rlc3Ryb3lhYmxlKGRlc3RydWN0b3IpO1xuICB9XG5cbiAgdm0udXBkYXRlV2l0aChuZXcgVXBkYXRlTW9kaWZpZXJPcGNvZGUoXG4gICAgdGFnLFxuICAgIG1hbmFnZXIsXG4gICAgbW9kaWZpZXJcbiAgKSk7XG59KTtcblxuZXhwb3J0IGNsYXNzIFVwZGF0ZU1vZGlmaWVyT3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwidXBkYXRlLW1vZGlmaWVyXCI7XG4gIHByaXZhdGUgbGFzdFVwZGF0ZWQ6IFJldmlzaW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB0YWc6IFRhZyxcbiAgICBwcml2YXRlIG1hbmFnZXI6IE1vZGlmaWVyTWFuYWdlcjxPcGFxdWU+LFxuICAgIHByaXZhdGUgbW9kaWZpZXI6IE9wYXF1ZVxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubGFzdFVwZGF0ZWQgPSB0YWcudmFsdWUoKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgbGV0IHsgbWFuYWdlciwgbW9kaWZpZXIsIHRhZywgbGFzdFVwZGF0ZWQgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXRhZy52YWxpZGF0ZShsYXN0VXBkYXRlZCkpIHtcbiAgICAgIHZtLmVudi5zY2hlZHVsZVVwZGF0ZU1vZGlmaWVyKG1vZGlmaWVyLCBtYW5hZ2VyKTtcbiAgICAgIHRoaXMubGFzdFVwZGF0ZWQgPSB0YWcudmFsdWUoKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdHRyaWJ1dGUge1xuICBuYW1lOiBzdHJpbmc7XG4gIGZsdXNoKGVudjogRW52aXJvbm1lbnQpOiBPcHRpb248VXBkYXRpbmdPcGNvZGU+O1xufVxuXG5leHBvcnQgY2xhc3MgU3RhdGljQXR0cmlidXRlIGltcGxlbWVudHMgQXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbGVtZW50OiBTaW1wbGUuRWxlbWVudCxcbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nLFxuICAgIHByaXZhdGUgdmFsdWU6IHN0cmluZyxcbiAgICBwcml2YXRlIG5hbWVzcGFjZT86IHN0cmluZ1xuICApIHt9XG5cbiAgZmx1c2goZW52OiBFbnZpcm9ubWVudCk6IE9wdGlvbjxVcGRhdGluZ09wY29kZT4ge1xuICAgIGVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCkuc2V0QXR0cmlidXRlKHRoaXMuZWxlbWVudCwgdGhpcy5uYW1lLCB0aGlzLnZhbHVlLCB0aGlzLm5hbWVzcGFjZSk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIER5bmFtaWNBdHRyaWJ1dGUgaW1wbGVtZW50cyBBdHRyaWJ1dGUgIHtcbiAgcHJpdmF0ZSBjYWNoZTogT3B0aW9uPFJlZmVyZW5jZUNhY2hlPE9wYXF1ZT4+ID0gbnVsbDtcblxuICBwdWJsaWMgdGFnOiBUYWc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbGVtZW50OiBTaW1wbGUuRWxlbWVudCxcbiAgICBwcml2YXRlIGF0dHJpYnV0ZU1hbmFnZXI6IEF0dHJpYnV0ZU1hbmFnZXIsXG4gICAgcHVibGljIG5hbWU6IHN0cmluZyxcbiAgICBwcml2YXRlIHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4sXG4gICAgcHJpdmF0ZSBuYW1lc3BhY2U/OiBTaW1wbGUuTmFtZXNwYWNlXG4gICkge1xuICAgIHRoaXMudGFnID0gcmVmZXJlbmNlLnRhZztcbiAgfVxuXG4gIHBhdGNoKGVudjogRW52aXJvbm1lbnQpIHtcbiAgICBsZXQgeyBlbGVtZW50LCBjYWNoZSB9ID0gdGhpcztcblxuICAgIGxldCB2YWx1ZSA9IGNhY2hlLnJldmFsaWRhdGUoKTtcblxuICAgIGlmIChpc01vZGlmaWVkKHZhbHVlKSkge1xuICAgICAgdGhpcy5hdHRyaWJ1dGVNYW5hZ2VyLnVwZGF0ZUF0dHJpYnV0ZShlbnYsIGVsZW1lbnQgYXMgRklYTUU8RWxlbWVudCwgJ25lZWRzIHRvIGJlIHJlaWZpZWQgcHJvcGVybHknPiwgdmFsdWUsIHRoaXMubmFtZXNwYWNlKTtcbiAgICB9XG4gIH1cblxuICBmbHVzaChlbnY6IEVudmlyb25tZW50KTogT3B0aW9uPFVwZGF0aW5nT3Bjb2RlPiB7XG4gICAgbGV0IHsgcmVmZXJlbmNlLCBlbGVtZW50IH0gPSB0aGlzO1xuXG4gICAgaWYgKGlzQ29uc3RSZWZlcmVuY2UocmVmZXJlbmNlKSkge1xuICAgICAgbGV0IHZhbHVlID0gcmVmZXJlbmNlLnZhbHVlKCk7XG4gICAgICB0aGlzLmF0dHJpYnV0ZU1hbmFnZXIuc2V0QXR0cmlidXRlKGVudiwgZWxlbWVudCwgdmFsdWUsIHRoaXMubmFtZXNwYWNlKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgY2FjaGUgPSB0aGlzLmNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKHJlZmVyZW5jZSk7XG4gICAgICBsZXQgdmFsdWUgPSBjYWNoZS5wZWVrKCk7XG4gICAgICB0aGlzLmF0dHJpYnV0ZU1hbmFnZXIuc2V0QXR0cmlidXRlKGVudiwgZWxlbWVudCwgdmFsdWUsIHRoaXMubmFtZXNwYWNlKTtcbiAgICAgIHJldHVybiBuZXcgUGF0Y2hFbGVtZW50T3Bjb2RlKHRoaXMpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBmb3JtYXRFbGVtZW50KGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50KTogc3RyaW5nIHtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGA8JHtlbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKX0gLz5gKTtcbn1cblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkR5bmFtaWNBdHRyTlMsICh2bSwgeyBvcDE6IF9uYW1lLCBvcDI6IF9uYW1lc3BhY2UsIG9wMzogdHJ1c3RpbmcgfSkgPT4ge1xuICBsZXQgbmFtZSA9IHZtLmNvbnN0YW50cy5nZXRTdHJpbmcoX25hbWUpO1xuICBsZXQgbmFtZXNwYWNlID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyhfbmFtZXNwYWNlKTtcbiAgbGV0IHJlZmVyZW5jZSA9IHZtLnN0YWNrLnBvcDxWZXJzaW9uZWRSZWZlcmVuY2U8c3RyaW5nPj4oKTtcbiAgdm0uZWxlbWVudHMoKS5zZXREeW5hbWljQXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lLCByZWZlcmVuY2UsICEhdHJ1c3RpbmcpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5EeW5hbWljQXR0ciwgKHZtLCB7IG9wMTogX25hbWUsIG9wMjogdHJ1c3RpbmcgfSkgPT4ge1xuICBsZXQgbmFtZSA9IHZtLmNvbnN0YW50cy5nZXRTdHJpbmcoX25hbWUpO1xuICBsZXQgcmVmZXJlbmNlID0gdm0uc3RhY2sucG9wPFZlcnNpb25lZFJlZmVyZW5jZTxzdHJpbmc+PigpO1xuICB2bS5lbGVtZW50cygpLnNldER5bmFtaWNBdHRyaWJ1dGUobmFtZSwgcmVmZXJlbmNlLCAhIXRydXN0aW5nKTtcbn0pO1xuXG5leHBvcnQgY2xhc3MgUGF0Y2hFbGVtZW50T3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwicGF0Y2gtZWxlbWVudFwiO1xuXG4gIHByaXZhdGUgb3BlcmF0aW9uOiBEeW5hbWljQXR0cmlidXRlO1xuXG4gIGNvbnN0cnVjdG9yKG9wZXJhdGlvbjogRHluYW1pY0F0dHJpYnV0ZSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy50YWcgPSBvcGVyYXRpb24udGFnO1xuICAgIHRoaXMub3BlcmF0aW9uID0gb3BlcmF0aW9uO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICB0aGlzLm9wZXJhdGlvbi5wYXRjaCh2bS5lbnYpO1xuICB9XG59XG4iXX0=

@@ -143,17 +143,2 @@ 'use strict';

}
toJSON() {
let { type, _guid, cache } = this;
let expected;
try {
expected = JSON.stringify(cache.peek());
} catch (e) {
expected = String(cache.peek());
}
return {
guid: _guid,
type,
args: [],
details: { expected }
};
}
}

@@ -178,9 +163,2 @@ exports.Assert = Assert;

}
toJSON() {
return {
guid: this._guid,
type: this.type,
args: [JSON.stringify(this.target.inspect())]
};
}
}

@@ -214,11 +192,4 @@ exports.JumpIfNotModifiedOpcode = JumpIfNotModifiedOpcode;

}
toJSON() {
return {
guid: this._guid,
type: this.type,
args: [JSON.stringify(this.inspect())]
};
}
}
exports.LabelOpcode = LabelOpcode;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ2bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0EsQUFBTyxBQUFjLEFBQWMsQUFBRSxBQUFNLEFBQWUsQUFBQzs7QUFHM0QsQUFBTyxBQUFhLEFBQWMsQUFBMEIsQUFBTSxBQUFvQixBQUFDOztBQUN2RixBQUFPLEFBQWtCLEFBQWMsQUFBRSxBQUFNLEFBQWUsQUFBQyxBQUMvRCxBQUFPLEFBQUUsQUFBWSxBQUFFLEFBQWMsQUFBaUIsQUFBTyxBQUFFLEFBQVUsQUFBRSxBQUFNLEFBQW9CLEFBQUMsQUFFdEcsQUFBTyxBQUFFLEFBQWMsQUFBWSxBQUFNLEFBQWUsQUFBQzs7QUFNekQsQUFBTyxBQUNMLEFBQWMsQUFDZCxBQUFtQixBQUNuQixBQUFjLEFBQ2QsQUFBZSxBQUNmLEFBQWtCLEFBQ25CLEFBQU0sQUFBa0IsQUFBQzs7QUFFMUIsQUFBYyx3QkFBQyxBQUFHLElBQUMsR0FBYSxrQkFBRSxBQUFFLE1BQUksQUFBRSxHQUFDLEFBQWMsQUFBRSxBQUFDLEFBQUM7QUFFN0QsQUFBYyx3QkFBQyxBQUFHLElBQUMsR0FBVyxnQkFBRSxBQUFFLE1BQUksQUFBRSxHQUFDLEFBQVEsQUFBRSxBQUFDLEFBQUM7QUFFckQsQUFBYyx3QkFBQyxBQUFHLElBQUMsR0FBbUIsd0JBQUUsQUFBRSxNQUFJLEFBQUUsR0FBQyxBQUFnQixBQUFFLEFBQUMsQUFBQztBQUVyRSxBQUFjLHdCQUFDLEFBQUcsSUFBQyxHQUFrQix1QkFBRSxBQUFFLE1BQUksQUFBRSxHQUFDLEFBQWUsQUFBRSxBQUFDLEFBQUM7QUFFbkUsQUFBYyx3QkFBQyxBQUFHLElBQUMsR0FBWSxpQkFBRSxDQUFDLEFBQUUsSUFBRSxFQUFFLEFBQUcsS0FBRSxBQUFNLEFBQUU7QUFDbkQsQUFBRSxPQUFDLEFBQUssTUFBQyxBQUFJLEtBQUMsQUFBTSxBQUFDLEFBQUMsQUFDeEI7QUFBQyxBQUFDLEFBQUM7QUFFSCxBQUFjLHdC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TCxBQUFNLEFBQUMsa0JBQUcsQUFBSSxLQUFDLEFBQUssVUFBSyxBQUFJLEtBQUMsQUFBSyxLQUFHLEFBQUMsQUFDekM7QUFBQztBQUVELEFBQU07QUFDSixBQUFNO0FBQ0osQUFBSSxrQkFBRSxBQUFJLEtBQUMsQUFBSztBQUNoQixBQUFJLGtCQUFFLEFBQUksS0FBQyxBQUFJO0FBQ2YsQUFBSSxrQkFBRSxDQUFDLEFBQUksS0FBQyxBQUFTLFVBQUMsQUFBSSxLQUFDLEFBQU8sQUFBRSxBQUFDLEFBQUMsQUFDdkMsQUFBQyxBQUNKO0FBTFM7QUFLUixBQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcGlsZWREeW5hbWljVGVtcGxhdGUgfSBmcm9tICcuLi9ibG9ja3MnO1xuaW1wb3J0IHsgT3Bjb2RlSlNPTiwgVXBkYXRpbmdPcGNvZGUgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IFVwZGF0aW5nVk0sIFZNIH0gZnJvbSAnLi4vLi4vdm0nO1xuaW1wb3J0IHsgU3ltYm9sVGFibGUgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFJlZmVyZW5jZSwgQ29uc3RSZWZlcmVuY2UsIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgT3B0aW9uLCBPcGFxdWUsIGluaXRpYWxpemVHdWlkIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBDT05TVEFOVF9UQUcsIFJlZmVyZW5jZUNhY2hlLCBSZXZpc2lvbiwgVGFnLCBpc0NvbnN0LCBpc01vZGlmaWVkIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCBFbnZpcm9ubWVudCBmcm9tICcuLi8uLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBBUFBFTkRfT1BDT0RFUywgT3AgYXMgT3AgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcblxuaW1wb3J0IHtcbiAgQmxvY2tcbn0gZnJvbSAnLi4vLi4vc2Nhbm5lcic7XG5cbmltcG9ydCB7XG4gIE5VTExfUkVGRVJFTkNFLFxuICBVTkRFRklORURfUkVGRVJFTkNFLFxuICBUUlVFX1JFRkVSRU5DRSxcbiAgRkFMU0VfUkVGRVJFTkNFLFxuICBQcmltaXRpdmVSZWZlcmVuY2Vcbn0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcyc7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5DaGlsZFNjb3BlLCB2bSA9PiB2bS5wdXNoQ2hpbGRTY29wZSgpKTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlBvcFNjb3BlLCB2bSA9PiB2bS5wb3BTY29wZSgpKTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlB1c2hEeW5hbWljU2NvcGUsIHZtID0+IHZtLnB1c2hEeW5hbWljU2NvcGUoKSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5Qb3BEeW5hbWljU2NvcGUsIHZtID0+IHZtLnBvcER5bmFtaWNTY29wZSgpKTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkltbWVkaWF0ZSwgKHZtLCB7IG9wMTogbnVtYmVyIH0pID0+IHtcbiAgdm0uc3RhY2sucHVzaChudW1iZXIpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5Db25zdGFudCwgKHZtLCB7IG9wMTogb3RoZXIgfSkgPT4ge1xuICB2bS5zdGFjay5wdXNoKHZtLmNvbnN0YW50cy5nZXRPdGhlcihvdGhlcikpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5QcmltaXRpdmVSZWZlcmVuY2UsICh2bSwgeyBvcDE6IHByaW1pdGl2ZSB9KSA9PiB7XG4gIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICBsZXQgZmxhZyA9IChwcmltaXRpdmUgJiAoMyA8PCAzMCkpID4+PiAzMDtcbiAgbGV0IHZhbHVlID0gcHJpbWl0aXZlICYgfigzIDw8IDMwKTtcblxuICBzd2l0Y2ggKGZsYWcpIHtcbiAgICBjYXNlIDA6XG4gICAgICBzdGFjay5wdXNoKFByaW1pdGl2ZVJlZmVyZW5jZS5jcmVhdGUodmFsdWUpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTpcbiAgICAgIHN0YWNrLnB1c2goUHJpbWl0aXZlUmVmZXJlbmNlLmNyZWF0ZSh2bS5jb25zdGFudHMuZ2V0U3RyaW5nKHZhbHVlKSkpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAyOlxuICAgICAgc3dpdGNoICh2YWx1ZSkge1xuICAgICAgICBjYXNlIDA6IHN0YWNrLnB1c2goRkFMU0VfUkVGRVJFTkNFKTsgYnJlYWs7XG4gICAgICAgIGNhc2UgMTogc3RhY2sucHVzaChUUlVFX1JFRkVSRU5DRSk7IGJyZWFrO1xuICAgICAgICBjYXNlIDI6IHN0YWNrLnB1c2goTlVMTF9SRUZFUkVOQ0UpOyBicmVhaztcbiAgICAgICAgY2FzZSAzOiBzdGFjay5wdXNoKFVOREVGSU5FRF9SRUZFUkVOQ0UpOyBicmVhaztcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICB9XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkR1cCwgKHZtLCB7IG9wMTogcmVnaXN0ZXIsIG9wMjogb2Zmc2V0IH0pID0+IHtcbiAgbGV0IHBvc2l0aW9uID0gdm0uZmV0Y2hWYWx1ZTxudW1iZXI+KHJlZ2lzdGVyKSAtIG9mZnNldDtcbiAgdm0uc3RhY2suZHVwKHBvc2l0aW9uKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUG9wLCAodm0sIHsgb3AxOiBjb3VudCB9KSA9PiB2bS5zdGFjay5wb3AoY291bnQpKTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkxvYWQsICh2bSwgeyBvcDE6IHJlZ2lzdGVyIH0pID0+IHZtLmxvYWQocmVnaXN0ZXIpKTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkZldGNoLCAodm0sIHsgb3AxOiByZWdpc3RlciB9KSA9PiB2bS5mZXRjaChyZWdpc3RlcikpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuQmluZER5bmFtaWNTY29wZSwgKHZtLCB7IG9wMTogX25hbWVzIH0pID0+IHtcbiAgbGV0IG5hbWVzID0gdm0uY29uc3RhbnRzLmdldEFycmF5KF9uYW1lcyk7XG4gIHZtLmJpbmREeW5hbWljU2NvcGUobmFtZXMpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5QdXNoRnJhbWUsIHZtID0+IHZtLnB1c2hGcmFtZSgpKTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlBvcEZyYW1lLCB2bSA9PiB2bS5wb3BGcmFtZSgpKTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkVudGVyLCAodm0sIHsgb3AxOiBhcmdzIH0pID0+IHZtLmVudGVyKGFyZ3MpKTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkV4aXQsICh2bSkgPT4gdm0uZXhpdCgpKTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkNvbXBpbGVEeW5hbWljQmxvY2ssIHZtID0+IHtcbiAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gIGxldCBibG9jayA9IHN0YWNrLnBvcDxCbG9jaz4oKTtcbiAgc3RhY2sucHVzaChibG9jayA/IGJsb2NrLmNvbXBpbGVEeW5hbWljKHZtLmVudikgOiBudWxsKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuSW52b2tlU3RhdGljLCAodm0sIHsgb3AxOiBfYmxvY2sgfSkgPT4ge1xuICBsZXQgYmxvY2sgPSB2bS5jb25zdGFudHMuZ2V0QmxvY2soX2Jsb2NrKTtcbiAgbGV0IGNvbXBpbGVkID0gYmxvY2suY29tcGlsZVN0YXRpYyh2bS5lbnYpO1xuICB2bS5jYWxsKGNvbXBpbGVkLnN0YXJ0KTtcbn0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIER5bmFtaWNJbnZva2VyPFMgZXh0ZW5kcyBTeW1ib2xUYWJsZT4ge1xuICBpbnZva2Uodm06IFZNLCBibG9jazogT3B0aW9uPENvbXBpbGVkRHluYW1pY1RlbXBsYXRlPFM+Pik6IHZvaWQ7XG59XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5JbnZva2VEeW5hbWljLCAodm0sIHsgb3AxOiBfaW52b2tlciB9KSA9PiB7XG4gIGxldCBpbnZva2VyID0gdm0uY29uc3RhbnRzLmdldE90aGVyPER5bmFtaWNJbnZva2VyPFN5bWJvbFRhYmxlPj4oX2ludm9rZXIpO1xuICBsZXQgYmxvY2sgPSB2bS5zdGFjay5wb3A8T3B0aW9uPENvbXBpbGVkRHluYW1pY1RlbXBsYXRlPFN5bWJvbFRhYmxlPj4+KCk7XG4gIGludm9rZXIuaW52b2tlKHZtLCBibG9jayk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkp1bXAsICh2bSwgeyBvcDE6IHRhcmdldCB9KSA9PiB2bS5nb3RvKHRhcmdldCkpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuSnVtcElmLCAodm0sIHsgb3AxOiB0YXJnZXQgfSkgPT4ge1xuICBsZXQgcmVmZXJlbmNlID0gdm0uc3RhY2sucG9wPFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPj4oKTtcblxuICBpZiAoaXNDb25zdChyZWZlcmVuY2UpKSB7XG4gICAgaWYgKHJlZmVyZW5jZS52YWx1ZSgpKSB7XG4gICAgICB2bS5nb3RvKHRhcmdldCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGxldCBjYWNoZSA9IG5ldyBSZWZlcmVuY2VDYWNoZShyZWZlcmVuY2UpO1xuXG4gICAgaWYgKGNhY2hlLnBlZWsoKSkge1xuICAgICAgdm0uZ290byh0YXJnZXQpO1xuICAgIH1cblxuICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICB9XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkp1bXBVbmxlc3MsICh2bSwgeyBvcDE6IHRhcmdldCB9KSA9PiB7XG4gIGxldCByZWZlcmVuY2UgPSB2bS5zdGFjay5wb3A8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+PigpO1xuXG4gIGlmIChpc0NvbnN0KHJlZmVyZW5jZSkpIHtcbiAgICBpZiAoIXJlZmVyZW5jZS52YWx1ZSgpKSB7XG4gICAgICB2bS5nb3RvKHRhcmdldCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGxldCBjYWNoZSA9IG5ldyBSZWZlcmVuY2VDYWNoZShyZWZlcmVuY2UpO1xuXG4gICAgaWYgKCFjYWNoZS5wZWVrKCkpIHtcbiAgICAgIHZtLmdvdG8odGFyZ2V0KTtcbiAgICB9XG5cbiAgICB2bS51cGRhdGVXaXRoKG5ldyBBc3NlcnQoY2FjaGUpKTtcbiAgfVxufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5SZXR1cm4sIHZtID0+IHZtLnJldHVybigpKTtcblxuZXhwb3J0IHR5cGUgVGVzdEZ1bmN0aW9uID0gKHJlZjogUmVmZXJlbmNlPE9wYXF1ZT4sIGVudjogRW52aXJvbm1lbnQpID0+IFJlZmVyZW5jZTxib29sZWFuPjtcblxuZXhwb3J0IGNvbnN0IENvbnN0VGVzdDogVGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24ocmVmOiBSZWZlcmVuY2U8T3BhcXVlPiwgX2VudjogRW52aXJvbm1lbnQpOiBSZWZlcmVuY2U8Ym9vbGVhbj4ge1xuICByZXR1cm4gbmV3IENvbnN0UmVmZXJlbmNlKCEhcmVmLnZhbHVlKCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IFNpbXBsZVRlc3Q6IFRlc3RGdW5jdGlvbiA9IGZ1bmN0aW9uKHJlZjogUmVmZXJlbmNlPE9wYXF1ZT4sIF9lbnY6IEVudmlyb25tZW50KTogUmVmZXJlbmNlPGJvb2xlYW4+IHtcbiAgcmV0dXJuIHJlZiBhcyBSZWZlcmVuY2U8Ym9vbGVhbj47XG59O1xuXG5leHBvcnQgY29uc3QgRW52aXJvbm1lbnRUZXN0OiBUZXN0RnVuY3Rpb24gPSBmdW5jdGlvbihyZWY6IFJlZmVyZW5jZTxPcGFxdWU+LCBlbnY6IEVudmlyb25tZW50KTogUmVmZXJlbmNlPGJvb2xlYW4+IHtcbiAgcmV0dXJuIGVudi50b0NvbmRpdGlvbmFsUmVmZXJlbmNlKHJlZik7XG59O1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuVGVzdCwgKHZtLCB7IG9wMTogX2Z1bmMgfSkgPT4ge1xuICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgbGV0IG9wZXJhbmQgPSBzdGFjay5wb3AoKTtcbiAgbGV0IGZ1bmMgPSB2bS5jb25zdGFudHMuZ2V0RnVuY3Rpb24oX2Z1bmMpO1xuICBzdGFjay5wdXNoKGZ1bmMob3BlcmFuZCwgdm0uZW52KSk7XG59KTtcblxuZXhwb3J0IGNsYXNzIEFzc2VydCBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImFzc2VydFwiO1xuXG4gIHByaXZhdGUgY2FjaGU6IFJlZmVyZW5jZUNhY2hlPE9wYXF1ZT47XG5cbiAgY29uc3RydWN0b3IoY2FjaGU6IFJlZmVyZW5jZUNhY2hlPE9wYXF1ZT4pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudGFnID0gY2FjaGUudGFnO1xuICAgIHRoaXMuY2FjaGUgPSBjYWNoZTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgbGV0IHsgY2FjaGUgfSA9IHRoaXM7XG5cbiAgICBpZiAoaXNNb2RpZmllZChjYWNoZS5yZXZhbGlkYXRlKCkpKSB7XG4gICAgICB2bS50aHJvdygpO1xuICAgIH1cbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICBsZXQgeyB0eXBlLCBfZ3VpZCwgY2FjaGUgfSA9IHRoaXM7XG5cbiAgICBsZXQgZXhwZWN0ZWQ7XG5cbiAgICB0cnkge1xuICAgICAgZXhwZWN0ZWQgPSBKU09OLnN0cmluZ2lmeShjYWNoZS5wZWVrKCkpO1xuICAgIH0gY2F0Y2goZSkge1xuICAgICAgZXhwZWN0ZWQgPSBTdHJpbmcoY2FjaGUucGVlaygpKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZDogX2d1aWQsXG4gICAgICB0eXBlLFxuICAgICAgYXJnczogW10sXG4gICAgICBkZXRhaWxzOiB7IGV4cGVjdGVkIH1cbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBKdW1wSWZOb3RNb2RpZmllZE9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImp1bXAtaWYtbm90LW1vZGlmaWVkXCI7XG5cbiAgcHJpdmF0ZSBsYXN0UmV2aXNpb246IFJldmlzaW9uO1xuXG4gIGNvbnN0cnVjdG9yKHRhZzogVGFnLCBwcml2YXRlIHRhcmdldDogTGFiZWxPcGNvZGUpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudGFnID0gdGFnO1xuICAgIHRoaXMubGFzdFJldmlzaW9uID0gdGFnLnZhbHVlKCk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVXBkYXRpbmdWTSkge1xuICAgIGxldCB7IHRhZywgdGFyZ2V0LCBsYXN0UmV2aXNpb24gfSA9IHRoaXM7XG5cbiAgICBpZiAoIXZtLmFsd2F5c1JldmFsaWRhdGUgJiYgdGFnLnZhbGlkYXRlKGxhc3RSZXZpc2lvbikpIHtcbiAgICAgIHZtLmdvdG8odGFyZ2V0KTtcbiAgICB9XG4gIH1cblxuICBkaWRNb2RpZnkoKSB7XG4gICAgdGhpcy5sYXN0UmV2aXNpb24gPSB0aGlzLnRhZy52YWx1ZSgpO1xuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIHJldHVybiB7XG4gICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgYXJnczogW0pTT04uc3RyaW5naWZ5KHRoaXMudGFyZ2V0Lmluc3BlY3QoKSldXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGlkTW9kaWZ5T3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwiZGlkLW1vZGlmeVwiO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdGFyZ2V0OiBKdW1wSWZOb3RNb2RpZmllZE9wY29kZSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy50YWcgPSBDT05TVEFOVF9UQUc7XG4gIH1cblxuICBldmFsdWF0ZSgpIHtcbiAgICB0aGlzLnRhcmdldC5kaWRNb2RpZnkoKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGFiZWxPcGNvZGUgaW1wbGVtZW50cyBVcGRhdGluZ09wY29kZSB7XG4gIHB1YmxpYyB0YWc6IFRhZyA9IENPTlNUQU5UX1RBRztcbiAgcHVibGljIHR5cGUgPSBcImxhYmVsXCI7XG4gIHB1YmxpYyBsYWJlbDogT3B0aW9uPHN0cmluZz4gPSBudWxsO1xuICBwdWJsaWMgX2d1aWQ6IG51bWJlcjtcblxuICBwcmV2OiBhbnkgPSBudWxsO1xuICBuZXh0OiBhbnkgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKGxhYmVsOiBzdHJpbmcpIHtcbiAgICBpbml0aWFsaXplR3VpZCh0aGlzKTtcbiAgICBpZiAobGFiZWwpIHRoaXMubGFiZWwgPSBsYWJlbDtcbiAgfVxuXG4gIGV2YWx1YXRlKCkge31cblxuICBpbnNwZWN0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMubGFiZWx9IFske3RoaXMuX2d1aWR9XWA7XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICBhcmdzOiBbSlNPTi5zdHJpbmdpZnkodGhpcy5pbnNwZWN0KCkpXVxuICAgIH07XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ2bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0EsQUFBTyxBQUFjLEFBQWMsQUFBRSxBQUFNLEFBQWUsQUFBQzs7QUFHM0QsQUFBTyxBQUFhLEFBQWMsQUFBMEIsQUFBTSxBQUFvQixBQUFDOztBQUN2RixBQUFPLEFBQWtCLEFBQWMsQUFBRSxBQUFNLEFBQWUsQUFBQyxBQUMvRCxBQUFPLEFBQUUsQUFBWSxBQUFFLEFBQWMsQUFBaUIsQUFBTyxBQUFFLEFBQVUsQUFBRSxBQUFNLEFBQW9CLEFBQUMsQUFFdEcsQUFBTyxBQUFFLEFBQWMsQUFBWSxBQUFNLEFBQWUsQUFBQzs7QUFNekQsQUFBTyxBQUNMLEFBQWMsQUFDZCxBQUFtQixBQUNuQixBQUFjLEFBQ2QsQUFBZSxBQUNmLEFBQWtCLEFBQ25CLEFBQU0sQUFBa0IsQUFBQzs7QUFFMUIsQUFBYyx3QkFBQyxBQUFHLElBQUMsR0FBYSxrQkFBRSxBQUFFLE1BQUksQUFBRSxHQUFDLEFBQWMsQUFBRSxBQUFDLEFBQUM7QUFFN0QsQUFBYyx3QkFBQyxBQUFHLElBQUMsR0FBVyxnQkFBRSxBQUFFLE1BQUksQUFBRSxHQUFDLEFBQVEsQUFBRSxBQUFDLEFBQUM7QUFFckQsQUFBYyx3QkFBQyxBQUFHLElBQUMsR0FBbUIsd0JBQUUsQUFBRSxNQUFJLEFBQUUsR0FBQyxBQUFnQixBQUFFLEFBQUMsQUFBQztBQUVyRSxBQUFjLHdCQUFDLEFBQUcsSUFBQyxHQUFrQix1QkFBRSxBQUFFLE1BQUksQUFBRSxHQUFDLEFBQWUsQUFBRSxBQUFDLEFBQUM7QUFFbkUsQUFBYyx3QkFBQyxBQUFHLElBQUMsR0FBWSxpQkFBRSxDQUFDLEFBQUUsSUFBRSxFQUFFLEFBQUcsS0FBRSxBQUFNLEFBQUU7QUFDbkQsQUFBRSxPQUFDLEFBQUssTUFBQyxBQUFJLEtBQUMsQUFBTSxBQUFDLEFBQUMsQUFDeEI7QUFBQyxBQUFDLEFBQUM7QUFFSCxBQUFjLHdC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LEFBQ0YsQUFFRCxBQUFNOzs7O0FBU0osZ0JBQVksQUFBYTtBQVJsQixhQUFHLEFBQVEsQUFBWSxBQUFDO0FBQ3hCLGFBQUksT0FBRyxBQUFPLEFBQUM7QUFDZixhQUFLLFFBQW1CLEFBQUksQUFBQztBQUdwQyxhQUFJLE9BQVEsQUFBSSxBQUFDO0FBQ2pCLGFBQUksT0FBUSxBQUFJLEFBQUM7QUFHZixBQUFjLGtDQUFDLEFBQUksQUFBQyxBQUFDO0FBQ3JCLEFBQUUsQUFBQyxZQUFDLEFBQUssQUFBQyxPQUFDLEFBQUksS0FBQyxBQUFLLFFBQUcsQUFBSyxBQUFDLEFBQ2hDO0FBQUM7QUFFRCxBQUFRLGVBQUksQ0FBQztBQUViLEFBQU87QUFDTCxBQUFNLEFBQUMsa0JBQUcsQUFBSSxLQUFDLEFBQUssVUFBSyxBQUFJLEtBQUMsQUFBSyxLQUFHLEFBQUMsQUFDekM7QUFBQyxBQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcGlsZWREeW5hbWljVGVtcGxhdGUgfSBmcm9tICcuLi9ibG9ja3MnO1xuaW1wb3J0IHsgT3Bjb2RlSlNPTiwgVXBkYXRpbmdPcGNvZGUgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IFVwZGF0aW5nVk0sIFZNIH0gZnJvbSAnLi4vLi4vdm0nO1xuaW1wb3J0IHsgU3ltYm9sVGFibGUgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFJlZmVyZW5jZSwgQ29uc3RSZWZlcmVuY2UsIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgT3B0aW9uLCBPcGFxdWUsIGluaXRpYWxpemVHdWlkIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBDT05TVEFOVF9UQUcsIFJlZmVyZW5jZUNhY2hlLCBSZXZpc2lvbiwgVGFnLCBpc0NvbnN0LCBpc01vZGlmaWVkIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCBFbnZpcm9ubWVudCBmcm9tICcuLi8uLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBBUFBFTkRfT1BDT0RFUywgT3AgYXMgT3AgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcblxuaW1wb3J0IHtcbiAgQmxvY2tcbn0gZnJvbSAnLi4vLi4vc2Nhbm5lcic7XG5cbmltcG9ydCB7XG4gIE5VTExfUkVGRVJFTkNFLFxuICBVTkRFRklORURfUkVGRVJFTkNFLFxuICBUUlVFX1JFRkVSRU5DRSxcbiAgRkFMU0VfUkVGRVJFTkNFLFxuICBQcmltaXRpdmVSZWZlcmVuY2Vcbn0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcyc7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5DaGlsZFNjb3BlLCB2bSA9PiB2bS5wdXNoQ2hpbGRTY29wZSgpKTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlBvcFNjb3BlLCB2bSA9PiB2bS5wb3BTY29wZSgpKTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlB1c2hEeW5hbWljU2NvcGUsIHZtID0+IHZtLnB1c2hEeW5hbWljU2NvcGUoKSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5Qb3BEeW5hbWljU2NvcGUsIHZtID0+IHZtLnBvcER5bmFtaWNTY29wZSgpKTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkltbWVkaWF0ZSwgKHZtLCB7IG9wMTogbnVtYmVyIH0pID0+IHtcbiAgdm0uc3RhY2sucHVzaChudW1iZXIpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5Db25zdGFudCwgKHZtLCB7IG9wMTogb3RoZXIgfSkgPT4ge1xuICB2bS5zdGFjay5wdXNoKHZtLmNvbnN0YW50cy5nZXRPdGhlcihvdGhlcikpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5QcmltaXRpdmVSZWZlcmVuY2UsICh2bSwgeyBvcDE6IHByaW1pdGl2ZSB9KSA9PiB7XG4gIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICBsZXQgZmxhZyA9IChwcmltaXRpdmUgJiAoMyA8PCAzMCkpID4+PiAzMDtcbiAgbGV0IHZhbHVlID0gcHJpbWl0aXZlICYgfigzIDw8IDMwKTtcblxuICBzd2l0Y2ggKGZsYWcpIHtcbiAgICBjYXNlIDA6XG4gICAgICBzdGFjay5wdXNoKFByaW1pdGl2ZVJlZmVyZW5jZS5jcmVhdGUodmFsdWUpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTpcbiAgICAgIHN0YWNrLnB1c2goUHJpbWl0aXZlUmVmZXJlbmNlLmNyZWF0ZSh2bS5jb25zdGFudHMuZ2V0U3RyaW5nKHZhbHVlKSkpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAyOlxuICAgICAgc3dpdGNoICh2YWx1ZSkge1xuICAgICAgICBjYXNlIDA6IHN0YWNrLnB1c2goRkFMU0VfUkVGRVJFTkNFKTsgYnJlYWs7XG4gICAgICAgIGNhc2UgMTogc3RhY2sucHVzaChUUlVFX1JFRkVSRU5DRSk7IGJyZWFrO1xuICAgICAgICBjYXNlIDI6IHN0YWNrLnB1c2goTlVMTF9SRUZFUkVOQ0UpOyBicmVhaztcbiAgICAgICAgY2FzZSAzOiBzdGFjay5wdXNoKFVOREVGSU5FRF9SRUZFUkVOQ0UpOyBicmVhaztcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICB9XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkR1cCwgKHZtLCB7IG9wMTogcmVnaXN0ZXIsIG9wMjogb2Zmc2V0IH0pID0+IHtcbiAgbGV0IHBvc2l0aW9uID0gdm0uZmV0Y2hWYWx1ZTxudW1iZXI+KHJlZ2lzdGVyKSAtIG9mZnNldDtcbiAgdm0uc3RhY2suZHVwKHBvc2l0aW9uKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUG9wLCAodm0sIHsgb3AxOiBjb3VudCB9KSA9PiB2bS5zdGFjay5wb3AoY291bnQpKTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkxvYWQsICh2bSwgeyBvcDE6IHJlZ2lzdGVyIH0pID0+IHZtLmxvYWQocmVnaXN0ZXIpKTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkZldGNoLCAodm0sIHsgb3AxOiByZWdpc3RlciB9KSA9PiB2bS5mZXRjaChyZWdpc3RlcikpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuQmluZER5bmFtaWNTY29wZSwgKHZtLCB7IG9wMTogX25hbWVzIH0pID0+IHtcbiAgbGV0IG5hbWVzID0gdm0uY29uc3RhbnRzLmdldEFycmF5KF9uYW1lcyk7XG4gIHZtLmJpbmREeW5hbWljU2NvcGUobmFtZXMpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5QdXNoRnJhbWUsIHZtID0+IHZtLnB1c2hGcmFtZSgpKTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlBvcEZyYW1lLCB2bSA9PiB2bS5wb3BGcmFtZSgpKTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkVudGVyLCAodm0sIHsgb3AxOiBhcmdzIH0pID0+IHZtLmVudGVyKGFyZ3MpKTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkV4aXQsICh2bSkgPT4gdm0uZXhpdCgpKTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkNvbXBpbGVEeW5hbWljQmxvY2ssIHZtID0+IHtcbiAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gIGxldCBibG9jayA9IHN0YWNrLnBvcDxCbG9jaz4oKTtcbiAgc3RhY2sucHVzaChibG9jayA/IGJsb2NrLmNvbXBpbGVEeW5hbWljKHZtLmVudikgOiBudWxsKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuSW52b2tlU3RhdGljLCAodm0sIHsgb3AxOiBfYmxvY2sgfSkgPT4ge1xuICBsZXQgYmxvY2sgPSB2bS5jb25zdGFudHMuZ2V0QmxvY2soX2Jsb2NrKTtcbiAgbGV0IGNvbXBpbGVkID0gYmxvY2suY29tcGlsZVN0YXRpYyh2bS5lbnYpO1xuICB2bS5jYWxsKGNvbXBpbGVkLnN0YXJ0KTtcbn0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIER5bmFtaWNJbnZva2VyPFMgZXh0ZW5kcyBTeW1ib2xUYWJsZT4ge1xuICBpbnZva2Uodm06IFZNLCBibG9jazogT3B0aW9uPENvbXBpbGVkRHluYW1pY1RlbXBsYXRlPFM+Pik6IHZvaWQ7XG59XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5JbnZva2VEeW5hbWljLCAodm0sIHsgb3AxOiBfaW52b2tlciB9KSA9PiB7XG4gIGxldCBpbnZva2VyID0gdm0uY29uc3RhbnRzLmdldE90aGVyPER5bmFtaWNJbnZva2VyPFN5bWJvbFRhYmxlPj4oX2ludm9rZXIpO1xuICBsZXQgYmxvY2sgPSB2bS5zdGFjay5wb3A8T3B0aW9uPENvbXBpbGVkRHluYW1pY1RlbXBsYXRlPFN5bWJvbFRhYmxlPj4+KCk7XG4gIGludm9rZXIuaW52b2tlKHZtLCBibG9jayk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkp1bXAsICh2bSwgeyBvcDE6IHRhcmdldCB9KSA9PiB2bS5nb3RvKHRhcmdldCkpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuSnVtcElmLCAodm0sIHsgb3AxOiB0YXJnZXQgfSkgPT4ge1xuICBsZXQgcmVmZXJlbmNlID0gdm0uc3RhY2sucG9wPFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPj4oKTtcblxuICBpZiAoaXNDb25zdChyZWZlcmVuY2UpKSB7XG4gICAgaWYgKHJlZmVyZW5jZS52YWx1ZSgpKSB7XG4gICAgICB2bS5nb3RvKHRhcmdldCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGxldCBjYWNoZSA9IG5ldyBSZWZlcmVuY2VDYWNoZShyZWZlcmVuY2UpO1xuXG4gICAgaWYgKGNhY2hlLnBlZWsoKSkge1xuICAgICAgdm0uZ290byh0YXJnZXQpO1xuICAgIH1cblxuICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICB9XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkp1bXBVbmxlc3MsICh2bSwgeyBvcDE6IHRhcmdldCB9KSA9PiB7XG4gIGxldCByZWZlcmVuY2UgPSB2bS5zdGFjay5wb3A8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+PigpO1xuXG4gIGlmIChpc0NvbnN0KHJlZmVyZW5jZSkpIHtcbiAgICBpZiAoIXJlZmVyZW5jZS52YWx1ZSgpKSB7XG4gICAgICB2bS5nb3RvKHRhcmdldCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGxldCBjYWNoZSA9IG5ldyBSZWZlcmVuY2VDYWNoZShyZWZlcmVuY2UpO1xuXG4gICAgaWYgKCFjYWNoZS5wZWVrKCkpIHtcbiAgICAgIHZtLmdvdG8odGFyZ2V0KTtcbiAgICB9XG5cbiAgICB2bS51cGRhdGVXaXRoKG5ldyBBc3NlcnQoY2FjaGUpKTtcbiAgfVxufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5SZXR1cm4sIHZtID0+IHZtLnJldHVybigpKTtcblxuZXhwb3J0IHR5cGUgVGVzdEZ1bmN0aW9uID0gKHJlZjogUmVmZXJlbmNlPE9wYXF1ZT4sIGVudjogRW52aXJvbm1lbnQpID0+IFJlZmVyZW5jZTxib29sZWFuPjtcblxuZXhwb3J0IGNvbnN0IENvbnN0VGVzdDogVGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24ocmVmOiBSZWZlcmVuY2U8T3BhcXVlPiwgX2VudjogRW52aXJvbm1lbnQpOiBSZWZlcmVuY2U8Ym9vbGVhbj4ge1xuICByZXR1cm4gbmV3IENvbnN0UmVmZXJlbmNlKCEhcmVmLnZhbHVlKCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IFNpbXBsZVRlc3Q6IFRlc3RGdW5jdGlvbiA9IGZ1bmN0aW9uKHJlZjogUmVmZXJlbmNlPE9wYXF1ZT4sIF9lbnY6IEVudmlyb25tZW50KTogUmVmZXJlbmNlPGJvb2xlYW4+IHtcbiAgcmV0dXJuIHJlZiBhcyBSZWZlcmVuY2U8Ym9vbGVhbj47XG59O1xuXG5leHBvcnQgY29uc3QgRW52aXJvbm1lbnRUZXN0OiBUZXN0RnVuY3Rpb24gPSBmdW5jdGlvbihyZWY6IFJlZmVyZW5jZTxPcGFxdWU+LCBlbnY6IEVudmlyb25tZW50KTogUmVmZXJlbmNlPGJvb2xlYW4+IHtcbiAgcmV0dXJuIGVudi50b0NvbmRpdGlvbmFsUmVmZXJlbmNlKHJlZik7XG59O1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuVGVzdCwgKHZtLCB7IG9wMTogX2Z1bmMgfSkgPT4ge1xuICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgbGV0IG9wZXJhbmQgPSBzdGFjay5wb3AoKTtcbiAgbGV0IGZ1bmMgPSB2bS5jb25zdGFudHMuZ2V0RnVuY3Rpb24oX2Z1bmMpO1xuICBzdGFjay5wdXNoKGZ1bmMob3BlcmFuZCwgdm0uZW52KSk7XG59KTtcblxuZXhwb3J0IGNsYXNzIEFzc2VydCBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImFzc2VydFwiO1xuXG4gIHByaXZhdGUgY2FjaGU6IFJlZmVyZW5jZUNhY2hlPE9wYXF1ZT47XG5cbiAgY29uc3RydWN0b3IoY2FjaGU6IFJlZmVyZW5jZUNhY2hlPE9wYXF1ZT4pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudGFnID0gY2FjaGUudGFnO1xuICAgIHRoaXMuY2FjaGUgPSBjYWNoZTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgbGV0IHsgY2FjaGUgfSA9IHRoaXM7XG5cbiAgICBpZiAoaXNNb2RpZmllZChjYWNoZS5yZXZhbGlkYXRlKCkpKSB7XG4gICAgICB2bS50aHJvdygpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSnVtcElmTm90TW9kaWZpZWRPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJqdW1wLWlmLW5vdC1tb2RpZmllZFwiO1xuXG4gIHByaXZhdGUgbGFzdFJldmlzaW9uOiBSZXZpc2lvbjtcblxuICBjb25zdHJ1Y3Rvcih0YWc6IFRhZywgcHJpdmF0ZSB0YXJnZXQ6IExhYmVsT3Bjb2RlKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnRhZyA9IHRhZztcbiAgICB0aGlzLmxhc3RSZXZpc2lvbiA9IHRhZy52YWx1ZSgpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICBsZXQgeyB0YWcsIHRhcmdldCwgbGFzdFJldmlzaW9uIH0gPSB0aGlzO1xuXG4gICAgaWYgKCF2bS5hbHdheXNSZXZhbGlkYXRlICYmIHRhZy52YWxpZGF0ZShsYXN0UmV2aXNpb24pKSB7XG4gICAgICB2bS5nb3RvKHRhcmdldCk7XG4gICAgfVxuICB9XG5cbiAgZGlkTW9kaWZ5KCkge1xuICAgIHRoaXMubGFzdFJldmlzaW9uID0gdGhpcy50YWcudmFsdWUoKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGlkTW9kaWZ5T3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwiZGlkLW1vZGlmeVwiO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdGFyZ2V0OiBKdW1wSWZOb3RNb2RpZmllZE9wY29kZSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy50YWcgPSBDT05TVEFOVF9UQUc7XG4gIH1cblxuICBldmFsdWF0ZSgpIHtcbiAgICB0aGlzLnRhcmdldC5kaWRNb2RpZnkoKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGFiZWxPcGNvZGUgaW1wbGVtZW50cyBVcGRhdGluZ09wY29kZSB7XG4gIHB1YmxpYyB0YWc6IFRhZyA9IENPTlNUQU5UX1RBRztcbiAgcHVibGljIHR5cGUgPSBcImxhYmVsXCI7XG4gIHB1YmxpYyBsYWJlbDogT3B0aW9uPHN0cmluZz4gPSBudWxsO1xuICBwdWJsaWMgX2d1aWQ6IG51bWJlcjtcblxuICBwcmV2OiBhbnkgPSBudWxsO1xuICBuZXh0OiBhbnkgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKGxhYmVsOiBzdHJpbmcpIHtcbiAgICBpbml0aWFsaXplR3VpZCh0aGlzKTtcbiAgICBpZiAobGFiZWwpIHRoaXMubGFiZWwgPSBsYWJlbDtcbiAgfVxuXG4gIGV2YWx1YXRlKCkge31cblxuICBpbnNwZWN0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMubGFiZWx9IFske3RoaXMuX2d1aWR9XWA7XG4gIH1cbn1cbiJdfQ==

@@ -132,3 +132,2 @@ 'use strict';

let end = b.finalize();
(0, _opcodes.debugSlice)(env, start, end);
return new _blocks.CompiledDynamicTemplate(start, end, {

@@ -236,2 +235,2 @@ meta,

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjb21waWxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFFQSxBQUFPLEFBQTBCLEFBQXVCLEFBQUUsQUFBTSxBQUFtQixBQUFDOztBQUVwRixBQUFPLEFBQUUsQUFBRyxBQUFnQixBQUFNLEFBQXNCLEFBQUM7O0FBR3pELEFBQU8sQUFBRSxBQUFRLEFBQUUsQUFBVSxBQUFFLEFBQU0sQUFBVyxBQUFDOztBQUVqRCxBQUFPLEFBQUUsQUFBVyxBQUFFLEFBQVUsQUFBRSxBQUFnQixBQUFFLEFBQU0sQUFBVyxBQUFDOztBQVF0RSxBQUFPLEFBQUUsQUFBSSxBQUFFLEFBQU0sQUFBb0IsQUFBQzs7QUFFMUMsQUFBTyxBQUFnQixBQUFNLEFBQTRCLEFBQUMsQUFjMUQsQUFBTTs7Ozs7O3VCQUF3QixBQUE0QixZQUFFLEFBQWdCO0FBQzFFLFFBQUksQUFBTyxVQUFHLElBQUksQUFBc0IsdUJBQUMsQUFBRyxBQUFDLEFBQUM7QUFFOUMsQUFBVSxlQUFDLEFBQU8sUUFBQyxBQUFPLEFBQUMsQUFBQztBQUU1QixBQUFNLFdBQUMsQUFBTyxRQUFDLEFBQU8sQUFBRSxBQUFDLEFBQzNCO0FBQUM7QUFRRDtBQUdFLGdCQUFtQixBQUFnQjtBQUFoQixhQUFHLE1BQUgsQUFBRyxBQUFhLEFBQUc7QUFBQztBQUV2QyxBQUFVLGVBQUMsQUFBOEI7QUFDdkMsQUFBSSxhQUFDLEFBQUssUUFBRyxJQUFJLEFBQWMsZUFBQyxBQUFJLEtBQUMsQUFBRyxLQUFFLEFBQU0sQUFBQyxBQUFDLEFBQ3BEO0FBQUM7QUFFRCxBQUFVLGVBQUMsQUFBOEI7QUFDdkMsQUFBSSxhQUFDLEFBQUssUUFBRyxJQUFJLEFBQWdCLGlCQUFDLEFBQUksS0FBQyxBQUFHLEtBQUUsQUFBTSxBQUFDLEFBQUMsQUFDdEQ7QUFBQztBQUVELEFBQU87QUFDTCxBQUFNLGVBQUMsQUFBSSxLQUFDLEFBQUssTUFBQyxBQUFP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QU8sZ0JBQUMsQUFBTSxPQUFDLEFBQU0sQUFBQyxBQUFDO0FBRXZCLEFBQU8sZ0JBQUMsQUFBRyxBQUFFLEFBQUM7QUFDZCxBQUFPLGdCQUFDLEFBQUksS0FBQyxBQUFRLEFBQUMsQUFBQztBQUV2QixBQUFPLGdCQUFDLEFBQUssTUFBQyxBQUFDLEFBQUMsQUFBQztBQUVqQixBQUFPLGdCQUFDLEFBQVUsV0FBQyxBQUFNLEFBQUMsQUFBQztBQUUzQixBQUFPLGdCQUFDLEFBQTJCLEFBQUUsQUFBQztBQUN0QyxBQUFPLGdCQUFDLEFBQWUsZ0JBQUMsQUFBSSxNQUFFLEFBQU0sUUFBRSxBQUFJLE1BQUUsQUFBSyxPQUFFLEFBQU8sQUFBQyxBQUFDO0FBRTVELEFBQU8sZ0JBQUMsQUFBSyxNQUFDLEFBQU0sQUFBQyxBQUFDO0FBQ3RCLEFBQU8sZ0JBQUMsQUFBSSxBQUFFLEFBQUM7QUFDZixBQUFPLGdCQUFDLEFBQU0sQUFBRSxBQUFDO0FBRWpCLEFBQU8sZ0JBQUMsQUFBSyxNQUFDLEFBQUssQUFBQyxBQUFDO0FBQ3JCLEFBQU8sZ0JBQUMsQUFBUSxBQUFFLEFBQUM7QUFFbkIsQUFBTyxnQkFBQyxBQUFVLEFBQUUsQUFBQyxBQUN2QjtBQUFDLEFBQ0YsQUFFRCxBQUFNOzs7aUJBQWtCLEFBQWdCLEtBQUUsQUFBcUI7QUFDN0QsQUFBTSxXQUFDLEFBQUksQUFBZ0Isc0JBQUMsQUFBRyxLQUFFLEFBQUksQUFBQyxBQUFDLEFBQ3pDO0FBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcGFxdWUsIENvbXBpbGF0aW9uTWV0YSB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgQ29tcGlsZWREeW5hbWljUHJvZ3JhbSwgQ29tcGlsZWREeW5hbWljVGVtcGxhdGUgfSBmcm9tICcuL2NvbXBpbGVkL2Jsb2Nrcyc7XG5pbXBvcnQgeyBNYXliZSwgT3B0aW9uIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBPcHMsIFRlbXBsYXRlTWV0YSB9IGZyb20gJ0BnbGltbWVyL3dpcmUtZm9ybWF0JztcblxuaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tICcuL3RlbXBsYXRlJztcbmltcG9ydCB7IFJlZ2lzdGVyLCBkZWJ1Z1NsaWNlIH0gZnJvbSAnLi9vcGNvZGVzJztcblxuaW1wb3J0IHsgQVRUUlNfQkxPQ0ssIENsaWVudFNpZGUsIGNvbXBpbGVTdGF0ZW1lbnQgfSBmcm9tICcuL3NjYW5uZXInO1xuXG5pbXBvcnQge1xuICBDb21wb25lbnRBcmdzLFxuICBDb21wb25lbnRCdWlsZGVyIGFzIElDb21wb25lbnRCdWlsZGVyLFxuICBEeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvblxufSBmcm9tICcuL29wY29kZS1idWlsZGVyJztcblxuaW1wb3J0IHsgZXhwciB9IGZyb20gJy4vc3ludGF4L2Z1bmN0aW9ucyc7XG5cbmltcG9ydCBPcGNvZGVCdWlsZGVyRFNMIGZyb20gJy4vY29tcGlsZWQvb3Bjb2Rlcy9idWlsZGVyJztcblxuaW1wb3J0ICogYXMgQ29tcG9uZW50IGZyb20gJy4vY29tcG9uZW50L2ludGVyZmFjZXMnO1xuXG5pbXBvcnQgKiBhcyBXaXJlRm9ybWF0IGZyb20gJ0BnbGltbWVyL3dpcmUtZm9ybWF0JztcblxuaW1wb3J0IHsgUHVibGljVk0gfSBmcm9tICcuL3ZtL2FwcGVuZCc7XG5pbXBvcnQgeyBJQXJndW1lbnRzIH0gZnJvbSAnLi92bS9hcmd1bWVudHMnO1xuaW1wb3J0IHsgRnVuY3Rpb25FeHByZXNzaW9uIH0gZnJvbSBcIi4vY29tcGlsZWQvb3Bjb2Rlcy9leHByZXNzaW9uc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBpbGFibGVMYXlvdXQge1xuICBjb21waWxlKGJ1aWxkZXI6IENvbXBvbmVudC5Db21wb25lbnRMYXlvdXRCdWlsZGVyKTogdm9pZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBpbGVMYXlvdXQoY29tcGlsYWJsZTogQ29tcGlsYWJsZUxheW91dCwgZW52OiBFbnZpcm9ubWVudCk6IENvbXBpbGVkRHluYW1pY1Byb2dyYW0ge1xuICBsZXQgYnVpbGRlciA9IG5ldyBDb21wb25lbnRMYXlvdXRCdWlsZGVyKGVudik7XG5cbiAgY29tcGlsYWJsZS5jb21waWxlKGJ1aWxkZXIpO1xuXG4gIHJldHVybiBidWlsZGVyLmNvbXBpbGUoKTtcbn1cblxuaW50ZXJmYWNlIElubmVyTGF5b3V0QnVpbGRlciB7XG4gIHRhZzogQ29tcG9uZW50LkNvbXBvbmVudFRhZ0J1aWxkZXI7XG4gIGF0dHJzOiBDb21wb25lbnQuQ29tcG9uZW50QXR0cnNCdWlsZGVyO1xuICBjb21waWxlKCk6IENvbXBpbGVkRHluYW1pY1Byb2dyYW07XG59XG5cbmNsYXNzIENvbXBvbmVudExheW91dEJ1aWxkZXIgaW1wbGVtZW50cyBDb21wb25lbnQuQ29tcG9uZW50TGF5b3V0QnVpbGRlciB7XG4gIHByaXZhdGUgaW5uZXI6IElubmVyTGF5b3V0QnVpbGRlcjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZW52OiBFbnZpcm9ubWVudCkge31cblxuICB3cmFwTGF5b3V0KGxheW91dDogVGVtcGxhdGU8VGVtcGxhdGVNZXRhPikge1xuICAgIHRoaXMuaW5uZXIgPSBuZXcgV3JhcHBlZEJ1aWxkZXIodGhpcy5lbnYsIGxheW91dCk7XG4gIH1cblxuICBmcm9tTGF5b3V0KGxheW91dDogVGVtcGxhdGU8VGVtcGxhdGVNZXRhPikge1xuICAgIHRoaXMuaW5uZXIgPSBuZXcgVW53cmFwcGVkQnVpbGRlcih0aGlzLmVudiwgbGF5b3V0KTtcbiAgfVxuXG4gIGNvbXBpbGUoKTogQ29tcGlsZWREeW5hbWljUHJvZ3JhbSB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXIuY29tcGlsZSgpO1xuICB9XG5cbiAgZ2V0IHRhZygpOiBDb21wb25lbnQuQ29tcG9uZW50VGFnQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXIudGFnO1xuICB9XG5cbiAgZ2V0IGF0dHJzKCk6IENvbXBvbmVudC5Db21wb25lbnRBdHRyc0J1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmlubmVyLmF0dHJzO1xuICB9XG59XG5cbmNsYXNzIFdyYXBwZWRCdWlsZGVyIGltcGxlbWVudHMgSW5uZXJMYXlvdXRCdWlsZGVyIHtcbiAgcHVibGljIHRhZyA9IG5ldyBDb21wb25lbnRUYWdCdWlsZGVyKCk7XG4gIHB1YmxpYyBhdHRycyA9IG5ldyBDb21wb25lbnRBdHRyc0J1aWxkZXIoKTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZW52OiBFbnZpcm9ubWVudCwgcHJpdmF0ZSBsYXlvdXQ6IFRlbXBsYXRlPFRlbXBsYXRlTWV0YT4pIHt9XG5cbiAgY29tcGlsZSgpOiBDb21waWxlZER5bmFtaWNQcm9ncmFtIHtcbiAgICAvLz09PT09PT09RFlOQU1JQ1xuICAgIC8vICAgICAgICBQdXRWYWx1ZShUYWdFeHByKVxuICAgIC8vICAgICAgICBUZXN0XG4gICAgLy8gICAgICAgIEp1bXBVbmxlc3MoQk9EWSlcbiAgICAvLyAgICAgICAgT3BlbkR5bmFtaWNQcmltaXRpdmVFbGVtZW50XG4gICAgLy8gICAgICAgIERpZENyZWF0ZUVsZW1lbnRcbiAgICAvLyAgICAgICAgLi4uYXR0ciBzdGF0ZW1lbnRzLi4uXG4gICAgLy8gICAgICAgIEZsdXNoRWxlbWVudFxuICAgIC8vIEJPRFk6ICBOb29wXG4gICAgLy8gICAgICAgIC4uLmJvZHkgc3RhdGVtZW50cy4uLlxuICAgIC8vICAgICAgICBQdXRWYWx1ZShUYWdFeHByKVxuICAgIC8vICAgICAgICBUZXN0XG4gICAgLy8gICAgICAgIEp1bXBVbmxlc3MoRU5EKVxuICAgIC8vICAgICAgICBDbG9zZUVsZW1lbnRcbiAgICAvLyBFTkQ6ICAgTm9vcFxuICAgIC8vICAgICAgICBEaWRSZW5kZXJMYXlvdXRcbiAgICAvLyAgICAgICAgRXhpdFxuICAgIC8vXG4gICAgLy89PT09PT09PVNUQVRJQ1xuICAgIC8vICAgICAgICBPcGVuUHJpbWl0aXZlRWxlbWVudE9wY29kZVxuICAgIC8vICAgICAgICBEaWRDcmVhdGVFbGVtZW50XG4gICAgLy8gICAgICAgIC4uLmF0dHIgc3RhdGVtZW50cy4uLlxuICAgIC8vICAgICAgICBGbHVzaEVsZW1lbnRcbiAgICAvLyAgICAgICAgLi4uYm9keSBzdGF0ZW1lbnRzLi4uXG4gICAgLy8gICAgICAgIENsb3NlRWxlbWVudFxuICAgIC8vICAgICAgICBEaWRSZW5kZXJMYXlvdXRcbiAgICAvLyAgICAgICAgRXhpdFxuXG4gICAgbGV0IHsgZW52LCBsYXlvdXQgfSA9IHRoaXM7XG4gICAgbGV0IG1ldGEgPSB7IHRlbXBsYXRlTWV0YTogbGF5b3V0Lm1ldGEsIHN5bWJvbHM6IGxheW91dC5zeW1ib2xzLCBhc1BhcnRpYWw6IGZhbHNlIH07XG5cbiAgICBsZXQgZHluYW1pY1RhZyA9IHRoaXMudGFnLmdldER5bmFtaWMoKTtcbiAgICBsZXQgc3RhdGljVGFnID0gdGhpcy50YWcuZ2V0U3RhdGljKCk7XG5cbiAgICBsZXQgYiA9IGJ1aWxkZXIoZW52LCBtZXRhKTtcblxuICAgIGIuc3RhcnRMYWJlbHMoKTtcblxuICAgIGlmIChkeW5hbWljVGFnKSB7XG4gICAgICBiLmZldGNoKFJlZ2lzdGVyLnMxKTtcblxuICAgICAgZXhwcihkeW5hbWljVGFnLCBiKTtcblxuICAgICAgYi5kdXAoKTtcbiAgICAgIGIubG9hZChSZWdpc3Rlci5zMSk7XG5cbiAgICAgIGIudGVzdCgnc2ltcGxlJyk7XG5cbiAgICAgIGIuanVtcFVubGVzcygnQk9EWScpO1xuXG4gICAgICBiLmZldGNoKFJlZ2lzdGVyLnMxKTtcbiAgICAgIGIucHVzaENvbXBvbmVudE9wZXJhdGlvbnMoKTtcbiAgICAgIGIub3BlbkR5bmFtaWNFbGVtZW50KCk7XG4gICAgfSBlbHNlIGlmIChzdGF0aWNUYWcpIHtcbiAgICAgIGIucHVzaENvbXBvbmVudE9wZXJhdGlvbnMoKTtcbiAgICAgIGIub3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucyhzdGF0aWNUYWcpO1xuICAgIH1cblxuICAgIGlmIChkeW5hbWljVGFnIHx8IHN0YXRpY1RhZykge1xuICAgICAgYi5kaWRDcmVhdGVFbGVtZW50KFJlZ2lzdGVyLnMwKTtcblxuICAgICAgbGV0IGF0dHJzID0gdGhpcy5hdHRyc1snYnVmZmVyJ107XG5cbiAgICAgIGZvciAobGV0IGk9MDsgaTxhdHRycy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb21waWxlU3RhdGVtZW50KGF0dHJzW2ldLCBiKTtcbiAgICAgIH1cblxuICAgICAgYi5mbHVzaEVsZW1lbnQoKTtcbiAgICB9XG5cbiAgICBiLmxhYmVsKCdCT0RZJyk7XG4gICAgYi5pbnZva2VTdGF0aWMobGF5b3V0LmFzQmxvY2soKSk7XG5cbiAgICBpZiAoZHluYW1pY1RhZykge1xuICAgICAgYi5mZXRjaChSZWdpc3Rlci5zMSk7XG4gICAgICBiLnRlc3QoJ3NpbXBsZScpO1xuICAgICAgYi5qdW1wVW5sZXNzKCdFTkQnKTtcbiAgICAgIGIuY2xvc2VFbGVtZW50KCk7XG4gICAgfSBlbHNlIGlmIChzdGF0aWNUYWcpIHtcbiAgICAgIGIuY2xvc2VFbGVtZW50KCk7XG4gICAgfVxuXG4gICAgYi5sYWJlbCgnRU5EJyk7XG5cbiAgICBiLmRpZFJlbmRlckxheW91dChSZWdpc3Rlci5zMCk7XG5cbiAgICBpZiAoZHluYW1pY1RhZykge1xuICAgICAgYi5sb2FkKFJlZ2lzdGVyLnMxKTtcbiAgICB9XG5cbiAgICBiLnN0b3BMYWJlbHMoKTtcblxuICAgIGxldCBzdGFydCA9IGIuc3RhcnQ7XG4gICAgbGV0IGVuZCA9IGIuZmluYWxpemUoKTtcblxuICAgIGRlYnVnU2xpY2UoZW52LCBzdGFydCwgZW5kKTtcblxuICAgIHJldHVybiBuZXcgQ29tcGlsZWREeW5hbWljVGVtcGxhdGUoc3RhcnQsIGVuZCwge1xuICAgICAgbWV0YSxcbiAgICAgIGhhc0V2YWw6IGxheW91dC5oYXNFdmFsLFxuICAgICAgc3ltYm9sczogbGF5b3V0LnN5bWJvbHMuY29uY2F0KFtBVFRSU19CTE9DS10pXG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgVW53cmFwcGVkQnVpbGRlciBpbXBsZW1lbnRzIElubmVyTGF5b3V0QnVpbGRlciB7XG4gIHB1YmxpYyBhdHRycyA9IG5ldyBDb21wb25lbnRBdHRyc0J1aWxkZXIoKTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZW52OiBFbnZpcm9ubWVudCwgcHJpdmF0ZSBsYXlvdXQ6IFRlbXBsYXRlPFRlbXBsYXRlTWV0YT4pIHt9XG5cbiAgZ2V0IHRhZygpOiBDb21wb25lbnQuQ29tcG9uZW50VGFnQnVpbGRlciB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdCVUc6IENhbm5vdCBjYWxsIGB0YWdgIG9uIGFuIFVud3JhcHBlZEJ1aWxkZXInKTtcbiAgfVxuXG4gIGNvbXBpbGUoKTogQ29tcGlsZWREeW5hbWljUHJvZ3JhbSB7XG4gICAgbGV0IHsgZW52LCBsYXlvdXQgfSA9IHRoaXM7XG4gICAgcmV0dXJuIGxheW91dC5hc0xheW91dCh0aGlzLmF0dHJzWydidWZmZXInXSkuY29tcGlsZUR5bmFtaWMoZW52KTtcbiAgfVxufVxuXG5jbGFzcyBDb21wb25lbnRUYWdCdWlsZGVyIGltcGxlbWVudHMgQ29tcG9uZW50LkNvbXBvbmVudFRhZ0J1aWxkZXIge1xuICBwdWJsaWMgaXNEeW5hbWljOiBPcHRpb248Ym9vbGVhbj4gPSBudWxsO1xuICBwdWJsaWMgaXNTdGF0aWM6IE9wdGlvbjxib29sZWFuPiA9IG51bGw7XG4gIHB1YmxpYyBzdGF0aWNUYWdOYW1lOiBPcHRpb248c3RyaW5nPiA9IG51bGw7XG4gIHB1YmxpYyBkeW5hbWljVGFnTmFtZTogT3B0aW9uPFdpcmVGb3JtYXQuRXhwcmVzc2lvbj4gPSBudWxsO1xuXG4gIGdldER5bmFtaWMoKTogTWF5YmU8V2lyZUZvcm1hdC5FeHByZXNzaW9uPiB7XG4gICAgaWYgKHRoaXMuaXNEeW5hbWljKSB7XG4gICAgICByZXR1cm4gdGhpcy5keW5hbWljVGFnTmFtZTtcbiAgICB9XG4gIH1cblxuICBnZXRTdGF0aWMoKTogTWF5YmU8c3RyaW5nPiB7XG4gICAgaWYgKHRoaXMuaXNTdGF0aWMpIHtcbiAgICAgIHJldHVybiB0aGlzLnN0YXRpY1RhZ05hbWU7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljKHRhZ05hbWU6IHN0cmluZykge1xuICAgIHRoaXMuaXNTdGF0aWMgPSB0cnVlO1xuICAgIHRoaXMuc3RhdGljVGFnTmFtZSA9IHRhZ05hbWU7XG4gIH1cblxuICBkeW5hbWljKHRhZ05hbWU6IEZ1bmN0aW9uRXhwcmVzc2lvbjxzdHJpbmc+KSB7XG4gICAgdGhpcy5pc0R5bmFtaWMgPSB0cnVlO1xuICAgIHRoaXMuZHluYW1pY1RhZ05hbWUgPSBbT3BzLkNsaWVudFNpZGVFeHByZXNzaW9uLCBDbGllbnRTaWRlLk9wcy5GdW5jdGlvbkV4cHJlc3Npb24sIHRhZ05hbWVdO1xuICB9XG59XG5cbmNsYXNzIENvbXBvbmVudEF0dHJzQnVpbGRlciBpbXBsZW1lbnRzIENvbXBvbmVudC5Db21wb25lbnRBdHRyc0J1aWxkZXIge1xuICBwcml2YXRlIGJ1ZmZlcjogV2lyZUZvcm1hdC5TdGF0ZW1lbnRzLkF0dHJpYnV0ZVtdID0gW107XG5cbiAgc3RhdGljKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuYnVmZmVyLnB1c2goW09wcy5TdGF0aWNBdHRyLCBuYW1lLCB2YWx1ZSwgbnVsbF0pO1xuICB9XG5cbiAgZHluYW1pYyhuYW1lOiBzdHJpbmcsIHZhbHVlOiBGdW5jdGlvbkV4cHJlc3Npb248c3RyaW5nPikge1xuICAgIHRoaXMuYnVmZmVyLnB1c2goW09wcy5EeW5hbWljQXR0ciwgbmFtZSwgW09wcy5DbGllbnRTaWRlRXhwcmVzc2lvbiwgQ2xpZW50U2lkZS5PcHMuRnVuY3Rpb25FeHByZXNzaW9uLCB2YWx1ZV0sIG51bGxdKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50QnVpbGRlciBpbXBsZW1lbnRzIElDb21wb25lbnRCdWlsZGVyIHtcbiAgcHJpdmF0ZSBlbnY6IEVudmlyb25tZW50O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYnVpbGRlcjogT3Bjb2RlQnVpbGRlckRTTCkge1xuICAgIHRoaXMuZW52ID0gYnVpbGRlci5lbnY7XG4gIH1cblxuICBzdGF0aWMoZGVmaW5pdGlvbjogQ29tcG9uZW50LkNvbXBvbmVudERlZmluaXRpb248T3BhcXVlPiwgYXJnczogQ29tcG9uZW50QXJncykge1xuICAgIGxldCBbcGFyYW1zLCBoYXNoLCBfZGVmYXVsdCwgaW52ZXJzZV0gPSBhcmdzO1xuICAgIGxldCB7IGJ1aWxkZXIgfSA9IHRoaXM7XG5cbiAgICBidWlsZGVyLnB1c2hDb21wb25lbnRNYW5hZ2VyKGRlZmluaXRpb24pO1xuICAgIGJ1aWxkZXIuaW52b2tlQ29tcG9uZW50KG51bGwsIHBhcmFtcywgaGFzaCwgX2RlZmF1bHQsIGludmVyc2UpO1xuICB9XG5cbiAgZHluYW1pYyhkZWZpbml0aW9uQXJnczogQ29tcG9uZW50QXJncywgZ2V0RGVmaW5pdGlvbjogRHluYW1pY0NvbXBvbmVudERlZmluaXRpb24sIGFyZ3M6IENvbXBvbmVudEFyZ3MpIHtcbiAgICBsZXQgW3BhcmFtcywgaGFzaCwgYmxvY2ssIGludmVyc2VdID0gYXJncztcbiAgICBsZXQgeyBidWlsZGVyIH0gPSB0aGlzO1xuXG4gICAgaWYgKCFkZWZpbml0aW9uQXJncyB8fCBkZWZpbml0aW9uQXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkR5bmFtaWMgc3ludGF4IHdpdGhvdXQgYW4gYXJndW1lbnRcIik7XG4gICAgfVxuXG4gICAgbGV0IG1ldGEgPSB0aGlzLmJ1aWxkZXIubWV0YS50ZW1wbGF0ZU1ldGE7XG5cbiAgICBmdW5jdGlvbiBoZWxwZXIodm06IFB1YmxpY1ZNLCBhcmdzOiBJQXJndW1lbnRzKSB7XG4gICAgICByZXR1cm4gZ2V0RGVmaW5pdGlvbih2bSwgYXJncywgbWV0YSk7XG4gICAgfVxuXG4gICAgYnVpbGRlci5zdGFydExhYmVscygpO1xuXG4gICAgYnVpbGRlci5wdXNoRnJhbWUoKTtcblxuICAgIGJ1aWxkZXIucmV0dXJuVG8oJ0VORCcpO1xuXG4gICAgYnVpbGRlci5jb21waWxlQXJncyhkZWZpbml0aW9uQXJnc1swXSwgZGVmaW5pdGlvbkFyZ3NbMV0sIHRydWUpO1xuICAgIGJ1aWxkZXIuaGVscGVyKGhlbHBlcik7XG5cbiAgICBidWlsZGVyLmR1cCgpO1xuICAgIGJ1aWxkZXIudGVzdCgnc2ltcGxlJyk7XG5cbiAgICBidWlsZGVyLmVudGVyKDIpO1xuXG4gICAgYnVpbGRlci5qdW1wVW5sZXNzKCdFTFNFJyk7XG5cbiAgICBidWlsZGVyLnB1c2hEeW5hbWljQ29tcG9uZW50TWFuYWdlcigpO1xuICAgIGJ1aWxkZXIuaW52b2tlQ29tcG9uZW50KG51bGwsIHBhcmFtcywgaGFzaCwgYmxvY2ssIGludmVyc2UpO1xuXG4gICAgYnVpbGRlci5sYWJlbCgnRUxTRScpO1xuICAgIGJ1aWxkZXIuZXhpdCgpO1xuICAgIGJ1aWxkZXIucmV0dXJuKCk7XG5cbiAgICBidWlsZGVyLmxhYmVsKCdFTkQnKTtcbiAgICBidWlsZGVyLnBvcEZyYW1lKCk7XG5cbiAgICBidWlsZGVyLnN0b3BMYWJlbHMoKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRlcihlbnY6IEVudmlyb25tZW50LCBtZXRhOiBDb21waWxhdGlvbk1ldGEpIHtcbiAgcmV0dXJuIG5ldyBPcGNvZGVCdWlsZGVyRFNMKGVudiwgbWV0YSk7XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjb21waWxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFFQSxBQUFPLEFBQTBCLEFBQXVCLEFBQUUsQUFBTSxBQUFtQixBQUFDOztBQUVwRixBQUFPLEFBQUUsQUFBRyxBQUFnQixBQUFNLEFBQXNCLEFBQUM7O0FBR3pELEFBQU8sQUFBRSxBQUFRLEFBQUUsQUFBTSxBQUFXLEFBQUM7O0FBRXJDLEFBQU8sQUFBRSxBQUFXLEFBQUUsQUFBVSxBQUFFLEFBQWdCLEFBQUUsQUFBTSxBQUFXLEFBQUM7O0FBUXRFLEFBQU8sQUFBRSxBQUFJLEFBQUUsQUFBTSxBQUFvQixBQUFDOztBQUUxQyxBQUFPLEFBQWdCLEFBQU0sQUFBNEIsQUFBQyxBQWMxRCxBQUFNOzs7Ozs7dUJBQXdCLEFBQTRCLFlBQUUsQUFBZ0I7QUFDMUUsUUFBSSxBQUFPLFVBQUcsSUFBSSxBQUFzQix1QkFBQyxBQUFHLEFBQUMsQUFBQztBQUU5QyxBQUFVLGVBQUMsQUFBTyxRQUFDLEFBQU8sQUFBQyxBQUFDO0FBRTVCLEFBQU0sV0FBQyxBQUFPLFFBQUMsQUFBTyxBQUFFLEFBQUMsQUFDM0I7QUFBQztBQVFEO0FBR0UsZ0JBQW1CLEFBQWdCO0FBQWhCLGFBQUcsTUFBSCxBQUFHLEFBQWEsQUFBRztBQUFDO0FBRXZDLEFBQVUsZUFBQyxBQUE4QjtBQUN2QyxBQUFJLGFBQUMsQUFBSyxRQUFHLElBQUksQUFBYyxlQUFDLEFBQUksS0FBQyxBQUFHLEtBQUUsQUFBTSxBQUFDLEFBQUMsQUFDcEQ7QUFBQztBQUVELEFBQVUsZUFBQyxBQUE4QjtBQUN2QyxBQUFJLGFBQUMsQUFBSyxRQUFHLElBQUksQUFBZ0IsaUJBQUMsQUFBSSxLQUFDLEFBQUcsS0FBRSxBQUFNLEFBQUMsQUFBQyxBQUN0RDtBQUFDO0FBRUQsQUFBTztBQUNMLEFBQU0sZUFBQyxBQUFJLEtBQUMsQUFBSyxNQUFDLEFBQU8sQUFBRSxBQUFD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QUFDO0FBQ2QsQUFBTyxnQkFBQyxBQUFJLEtBQUMsQUFBUSxBQUFDLEFBQUM7QUFFdkIsQUFBTyxnQkFBQyxBQUFLLE1BQUMsQUFBQyxBQUFDLEFBQUM7QUFFakIsQUFBTyxnQkFBQyxBQUFVLFdBQUMsQUFBTSxBQUFDLEFBQUM7QUFFM0IsQUFBTyxnQkFBQyxBQUEyQixBQUFFLEFBQUM7QUFDdEMsQUFBTyxnQkFBQyxBQUFlLGdCQUFDLEFBQUksTUFBRSxBQUFNLFFBQUUsQUFBSSxNQUFFLEFBQUssT0FBRSxBQUFPLEFBQUMsQUFBQztBQUU1RCxBQUFPLGdCQUFDLEFBQUssTUFBQyxBQUFNLEFBQUMsQUFBQztBQUN0QixBQUFPLGdCQUFDLEFBQUksQUFBRSxBQUFDO0FBQ2YsQUFBTyxnQkFBQyxBQUFNLEFBQUUsQUFBQztBQUVqQixBQUFPLGdCQUFDLEFBQUssTUFBQyxBQUFLLEFBQUMsQUFBQztBQUNyQixBQUFPLGdCQUFDLEFBQVEsQUFBRSxBQUFDO0FBRW5CLEFBQU8sZ0JBQUMsQUFBVSxBQUFFLEFBQUMsQUFDdkI7QUFBQyxBQUNGLEFBRUQsQUFBTTs7O2lCQUFrQixBQUFnQixLQUFFLEFBQXFCO0FBQzdELEFBQU0sV0FBQyxBQUFJLEFBQWdCLHNCQUFDLEFBQUcsS0FBRSxBQUFJLEFBQUMsQUFBQyxBQUN6QztBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3BhcXVlLCBDb21waWxhdGlvbk1ldGEgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCBFbnZpcm9ubWVudCBmcm9tICcuL2Vudmlyb25tZW50JztcbmltcG9ydCB7IENvbXBpbGVkRHluYW1pY1Byb2dyYW0sIENvbXBpbGVkRHluYW1pY1RlbXBsYXRlIH0gZnJvbSAnLi9jb21waWxlZC9ibG9ja3MnO1xuaW1wb3J0IHsgTWF5YmUsIE9wdGlvbiB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgT3BzLCBUZW1wbGF0ZU1ldGEgfSBmcm9tICdAZ2xpbW1lci93aXJlLWZvcm1hdCc7XG5cbmltcG9ydCB7IFRlbXBsYXRlIH0gZnJvbSAnLi90ZW1wbGF0ZSc7XG5pbXBvcnQgeyBSZWdpc3RlciB9IGZyb20gJy4vb3Bjb2Rlcyc7XG5cbmltcG9ydCB7IEFUVFJTX0JMT0NLLCBDbGllbnRTaWRlLCBjb21waWxlU3RhdGVtZW50IH0gZnJvbSAnLi9zY2FubmVyJztcblxuaW1wb3J0IHtcbiAgQ29tcG9uZW50QXJncyxcbiAgQ29tcG9uZW50QnVpbGRlciBhcyBJQ29tcG9uZW50QnVpbGRlcixcbiAgRHluYW1pY0NvbXBvbmVudERlZmluaXRpb25cbn0gZnJvbSAnLi9vcGNvZGUtYnVpbGRlcic7XG5cbmltcG9ydCB7IGV4cHIgfSBmcm9tICcuL3N5bnRheC9mdW5jdGlvbnMnO1xuXG5pbXBvcnQgT3Bjb2RlQnVpbGRlckRTTCBmcm9tICcuL2NvbXBpbGVkL29wY29kZXMvYnVpbGRlcic7XG5cbmltcG9ydCAqIGFzIENvbXBvbmVudCBmcm9tICcuL2NvbXBvbmVudC9pbnRlcmZhY2VzJztcblxuaW1wb3J0ICogYXMgV2lyZUZvcm1hdCBmcm9tICdAZ2xpbW1lci93aXJlLWZvcm1hdCc7XG5cbmltcG9ydCB7IFB1YmxpY1ZNIH0gZnJvbSAnLi92bS9hcHBlbmQnO1xuaW1wb3J0IHsgSUFyZ3VtZW50cyB9IGZyb20gJy4vdm0vYXJndW1lbnRzJztcbmltcG9ydCB7IEZ1bmN0aW9uRXhwcmVzc2lvbiB9IGZyb20gXCIuL2NvbXBpbGVkL29wY29kZXMvZXhwcmVzc2lvbnNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDb21waWxhYmxlTGF5b3V0IHtcbiAgY29tcGlsZShidWlsZGVyOiBDb21wb25lbnQuQ29tcG9uZW50TGF5b3V0QnVpbGRlcik6IHZvaWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21waWxlTGF5b3V0KGNvbXBpbGFibGU6IENvbXBpbGFibGVMYXlvdXQsIGVudjogRW52aXJvbm1lbnQpOiBDb21waWxlZER5bmFtaWNQcm9ncmFtIHtcbiAgbGV0IGJ1aWxkZXIgPSBuZXcgQ29tcG9uZW50TGF5b3V0QnVpbGRlcihlbnYpO1xuXG4gIGNvbXBpbGFibGUuY29tcGlsZShidWlsZGVyKTtcblxuICByZXR1cm4gYnVpbGRlci5jb21waWxlKCk7XG59XG5cbmludGVyZmFjZSBJbm5lckxheW91dEJ1aWxkZXIge1xuICB0YWc6IENvbXBvbmVudC5Db21wb25lbnRUYWdCdWlsZGVyO1xuICBhdHRyczogQ29tcG9uZW50LkNvbXBvbmVudEF0dHJzQnVpbGRlcjtcbiAgY29tcGlsZSgpOiBDb21waWxlZER5bmFtaWNQcm9ncmFtO1xufVxuXG5jbGFzcyBDb21wb25lbnRMYXlvdXRCdWlsZGVyIGltcGxlbWVudHMgQ29tcG9uZW50LkNvbXBvbmVudExheW91dEJ1aWxkZXIge1xuICBwcml2YXRlIGlubmVyOiBJbm5lckxheW91dEJ1aWxkZXI7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGVudjogRW52aXJvbm1lbnQpIHt9XG5cbiAgd3JhcExheW91dChsYXlvdXQ6IFRlbXBsYXRlPFRlbXBsYXRlTWV0YT4pIHtcbiAgICB0aGlzLmlubmVyID0gbmV3IFdyYXBwZWRCdWlsZGVyKHRoaXMuZW52LCBsYXlvdXQpO1xuICB9XG5cbiAgZnJvbUxheW91dChsYXlvdXQ6IFRlbXBsYXRlPFRlbXBsYXRlTWV0YT4pIHtcbiAgICB0aGlzLmlubmVyID0gbmV3IFVud3JhcHBlZEJ1aWxkZXIodGhpcy5lbnYsIGxheW91dCk7XG4gIH1cblxuICBjb21waWxlKCk6IENvbXBpbGVkRHluYW1pY1Byb2dyYW0ge1xuICAgIHJldHVybiB0aGlzLmlubmVyLmNvbXBpbGUoKTtcbiAgfVxuXG4gIGdldCB0YWcoKTogQ29tcG9uZW50LkNvbXBvbmVudFRhZ0J1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmlubmVyLnRhZztcbiAgfVxuXG4gIGdldCBhdHRycygpOiBDb21wb25lbnQuQ29tcG9uZW50QXR0cnNCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbm5lci5hdHRycztcbiAgfVxufVxuXG5jbGFzcyBXcmFwcGVkQnVpbGRlciBpbXBsZW1lbnRzIElubmVyTGF5b3V0QnVpbGRlciB7XG4gIHB1YmxpYyB0YWcgPSBuZXcgQ29tcG9uZW50VGFnQnVpbGRlcigpO1xuICBwdWJsaWMgYXR0cnMgPSBuZXcgQ29tcG9uZW50QXR0cnNCdWlsZGVyKCk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGVudjogRW52aXJvbm1lbnQsIHByaXZhdGUgbGF5b3V0OiBUZW1wbGF0ZTxUZW1wbGF0ZU1ldGE+KSB7fVxuXG4gIGNvbXBpbGUoKTogQ29tcGlsZWREeW5hbWljUHJvZ3JhbSB7XG4gICAgLy89PT09PT09PURZTkFNSUNcbiAgICAvLyAgICAgICAgUHV0VmFsdWUoVGFnRXhwcilcbiAgICAvLyAgICAgICAgVGVzdFxuICAgIC8vICAgICAgICBKdW1wVW5sZXNzKEJPRFkpXG4gICAgLy8gICAgICAgIE9wZW5EeW5hbWljUHJpbWl0aXZlRWxlbWVudFxuICAgIC8vICAgICAgICBEaWRDcmVhdGVFbGVtZW50XG4gICAgLy8gICAgICAgIC4uLmF0dHIgc3RhdGVtZW50cy4uLlxuICAgIC8vICAgICAgICBGbHVzaEVsZW1lbnRcbiAgICAvLyBCT0RZOiAgTm9vcFxuICAgIC8vICAgICAgICAuLi5ib2R5IHN0YXRlbWVudHMuLi5cbiAgICAvLyAgICAgICAgUHV0VmFsdWUoVGFnRXhwcilcbiAgICAvLyAgICAgICAgVGVzdFxuICAgIC8vICAgICAgICBKdW1wVW5sZXNzKEVORClcbiAgICAvLyAgICAgICAgQ2xvc2VFbGVtZW50XG4gICAgLy8gRU5EOiAgIE5vb3BcbiAgICAvLyAgICAgICAgRGlkUmVuZGVyTGF5b3V0XG4gICAgLy8gICAgICAgIEV4aXRcbiAgICAvL1xuICAgIC8vPT09PT09PT1TVEFUSUNcbiAgICAvLyAgICAgICAgT3BlblByaW1pdGl2ZUVsZW1lbnRPcGNvZGVcbiAgICAvLyAgICAgICAgRGlkQ3JlYXRlRWxlbWVudFxuICAgIC8vICAgICAgICAuLi5hdHRyIHN0YXRlbWVudHMuLi5cbiAgICAvLyAgICAgICAgRmx1c2hFbGVtZW50XG4gICAgLy8gICAgICAgIC4uLmJvZHkgc3RhdGVtZW50cy4uLlxuICAgIC8vICAgICAgICBDbG9zZUVsZW1lbnRcbiAgICAvLyAgICAgICAgRGlkUmVuZGVyTGF5b3V0XG4gICAgLy8gICAgICAgIEV4aXRcblxuICAgIGxldCB7IGVudiwgbGF5b3V0IH0gPSB0aGlzO1xuICAgIGxldCBtZXRhID0geyB0ZW1wbGF0ZU1ldGE6IGxheW91dC5tZXRhLCBzeW1ib2xzOiBsYXlvdXQuc3ltYm9scywgYXNQYXJ0aWFsOiBmYWxzZSB9O1xuXG4gICAgbGV0IGR5bmFtaWNUYWcgPSB0aGlzLnRhZy5nZXREeW5hbWljKCk7XG4gICAgbGV0IHN0YXRpY1RhZyA9IHRoaXMudGFnLmdldFN0YXRpYygpO1xuXG4gICAgbGV0IGIgPSBidWlsZGVyKGVudiwgbWV0YSk7XG5cbiAgICBiLnN0YXJ0TGFiZWxzKCk7XG5cbiAgICBpZiAoZHluYW1pY1RhZykge1xuICAgICAgYi5mZXRjaChSZWdpc3Rlci5zMSk7XG5cbiAgICAgIGV4cHIoZHluYW1pY1RhZywgYik7XG5cbiAgICAgIGIuZHVwKCk7XG4gICAgICBiLmxvYWQoUmVnaXN0ZXIuczEpO1xuXG4gICAgICBiLnRlc3QoJ3NpbXBsZScpO1xuXG4gICAgICBiLmp1bXBVbmxlc3MoJ0JPRFknKTtcblxuICAgICAgYi5mZXRjaChSZWdpc3Rlci5zMSk7XG4gICAgICBiLnB1c2hDb21wb25lbnRPcGVyYXRpb25zKCk7XG4gICAgICBiLm9wZW5EeW5hbWljRWxlbWVudCgpO1xuICAgIH0gZWxzZSBpZiAoc3RhdGljVGFnKSB7XG4gICAgICBiLnB1c2hDb21wb25lbnRPcGVyYXRpb25zKCk7XG4gICAgICBiLm9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMoc3RhdGljVGFnKTtcbiAgICB9XG5cbiAgICBpZiAoZHluYW1pY1RhZyB8fCBzdGF0aWNUYWcpIHtcbiAgICAgIGIuZGlkQ3JlYXRlRWxlbWVudChSZWdpc3Rlci5zMCk7XG5cbiAgICAgIGxldCBhdHRycyA9IHRoaXMuYXR0cnNbJ2J1ZmZlciddO1xuXG4gICAgICBmb3IgKGxldCBpPTA7IGk8YXR0cnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29tcGlsZVN0YXRlbWVudChhdHRyc1tpXSwgYik7XG4gICAgICB9XG5cbiAgICAgIGIuZmx1c2hFbGVtZW50KCk7XG4gICAgfVxuXG4gICAgYi5sYWJlbCgnQk9EWScpO1xuICAgIGIuaW52b2tlU3RhdGljKGxheW91dC5hc0Jsb2NrKCkpO1xuXG4gICAgaWYgKGR5bmFtaWNUYWcpIHtcbiAgICAgIGIuZmV0Y2goUmVnaXN0ZXIuczEpO1xuICAgICAgYi50ZXN0KCdzaW1wbGUnKTtcbiAgICAgIGIuanVtcFVubGVzcygnRU5EJyk7XG4gICAgICBiLmNsb3NlRWxlbWVudCgpO1xuICAgIH0gZWxzZSBpZiAoc3RhdGljVGFnKSB7XG4gICAgICBiLmNsb3NlRWxlbWVudCgpO1xuICAgIH1cblxuICAgIGIubGFiZWwoJ0VORCcpO1xuXG4gICAgYi5kaWRSZW5kZXJMYXlvdXQoUmVnaXN0ZXIuczApO1xuXG4gICAgaWYgKGR5bmFtaWNUYWcpIHtcbiAgICAgIGIubG9hZChSZWdpc3Rlci5zMSk7XG4gICAgfVxuXG4gICAgYi5zdG9wTGFiZWxzKCk7XG5cbiAgICBsZXQgc3RhcnQgPSBiLnN0YXJ0O1xuICAgIGxldCBlbmQgPSBiLmZpbmFsaXplKCk7XG5cbiAgICByZXR1cm4gbmV3IENvbXBpbGVkRHluYW1pY1RlbXBsYXRlKHN0YXJ0LCBlbmQsIHtcbiAgICAgIG1ldGEsXG4gICAgICBoYXNFdmFsOiBsYXlvdXQuaGFzRXZhbCxcbiAgICAgIHN5bWJvbHM6IGxheW91dC5zeW1ib2xzLmNvbmNhdChbQVRUUlNfQkxPQ0tdKVxuICAgIH0pO1xuICB9XG59XG5cbmNsYXNzIFVud3JhcHBlZEJ1aWxkZXIgaW1wbGVtZW50cyBJbm5lckxheW91dEJ1aWxkZXIge1xuICBwdWJsaWMgYXR0cnMgPSBuZXcgQ29tcG9uZW50QXR0cnNCdWlsZGVyKCk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGVudjogRW52aXJvbm1lbnQsIHByaXZhdGUgbGF5b3V0OiBUZW1wbGF0ZTxUZW1wbGF0ZU1ldGE+KSB7fVxuXG4gIGdldCB0YWcoKTogQ29tcG9uZW50LkNvbXBvbmVudFRhZ0J1aWxkZXIge1xuICAgIHRocm93IG5ldyBFcnJvcignQlVHOiBDYW5ub3QgY2FsbCBgdGFnYCBvbiBhbiBVbndyYXBwZWRCdWlsZGVyJyk7XG4gIH1cblxuICBjb21waWxlKCk6IENvbXBpbGVkRHluYW1pY1Byb2dyYW0ge1xuICAgIGxldCB7IGVudiwgbGF5b3V0IH0gPSB0aGlzO1xuICAgIHJldHVybiBsYXlvdXQuYXNMYXlvdXQodGhpcy5hdHRyc1snYnVmZmVyJ10pLmNvbXBpbGVEeW5hbWljKGVudik7XG4gIH1cbn1cblxuY2xhc3MgQ29tcG9uZW50VGFnQnVpbGRlciBpbXBsZW1lbnRzIENvbXBvbmVudC5Db21wb25lbnRUYWdCdWlsZGVyIHtcbiAgcHVibGljIGlzRHluYW1pYzogT3B0aW9uPGJvb2xlYW4+ID0gbnVsbDtcbiAgcHVibGljIGlzU3RhdGljOiBPcHRpb248Ym9vbGVhbj4gPSBudWxsO1xuICBwdWJsaWMgc3RhdGljVGFnTmFtZTogT3B0aW9uPHN0cmluZz4gPSBudWxsO1xuICBwdWJsaWMgZHluYW1pY1RhZ05hbWU6IE9wdGlvbjxXaXJlRm9ybWF0LkV4cHJlc3Npb24+ID0gbnVsbDtcblxuICBnZXREeW5hbWljKCk6IE1heWJlPFdpcmVGb3JtYXQuRXhwcmVzc2lvbj4ge1xuICAgIGlmICh0aGlzLmlzRHluYW1pYykge1xuICAgICAgcmV0dXJuIHRoaXMuZHluYW1pY1RhZ05hbWU7XG4gICAgfVxuICB9XG5cbiAgZ2V0U3RhdGljKCk6IE1heWJlPHN0cmluZz4ge1xuICAgIGlmICh0aGlzLmlzU3RhdGljKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdGF0aWNUYWdOYW1lO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyh0YWdOYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLmlzU3RhdGljID0gdHJ1ZTtcbiAgICB0aGlzLnN0YXRpY1RhZ05hbWUgPSB0YWdOYW1lO1xuICB9XG5cbiAgZHluYW1pYyh0YWdOYW1lOiBGdW5jdGlvbkV4cHJlc3Npb248c3RyaW5nPikge1xuICAgIHRoaXMuaXNEeW5hbWljID0gdHJ1ZTtcbiAgICB0aGlzLmR5bmFtaWNUYWdOYW1lID0gW09wcy5DbGllbnRTaWRlRXhwcmVzc2lvbiwgQ2xpZW50U2lkZS5PcHMuRnVuY3Rpb25FeHByZXNzaW9uLCB0YWdOYW1lXTtcbiAgfVxufVxuXG5jbGFzcyBDb21wb25lbnRBdHRyc0J1aWxkZXIgaW1wbGVtZW50cyBDb21wb25lbnQuQ29tcG9uZW50QXR0cnNCdWlsZGVyIHtcbiAgcHJpdmF0ZSBidWZmZXI6IFdpcmVGb3JtYXQuU3RhdGVtZW50cy5BdHRyaWJ1dGVbXSA9IFtdO1xuXG4gIHN0YXRpYyhuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmJ1ZmZlci5wdXNoKFtPcHMuU3RhdGljQXR0ciwgbmFtZSwgdmFsdWUsIG51bGxdKTtcbiAgfVxuXG4gIGR5bmFtaWMobmFtZTogc3RyaW5nLCB2YWx1ZTogRnVuY3Rpb25FeHByZXNzaW9uPHN0cmluZz4pIHtcbiAgICB0aGlzLmJ1ZmZlci5wdXNoKFtPcHMuRHluYW1pY0F0dHIsIG5hbWUsIFtPcHMuQ2xpZW50U2lkZUV4cHJlc3Npb24sIENsaWVudFNpZGUuT3BzLkZ1bmN0aW9uRXhwcmVzc2lvbiwgdmFsdWVdLCBudWxsXSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbXBvbmVudEJ1aWxkZXIgaW1wbGVtZW50cyBJQ29tcG9uZW50QnVpbGRlciB7XG4gIHByaXZhdGUgZW52OiBFbnZpcm9ubWVudDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJ1aWxkZXI6IE9wY29kZUJ1aWxkZXJEU0wpIHtcbiAgICB0aGlzLmVudiA9IGJ1aWxkZXIuZW52O1xuICB9XG5cbiAgc3RhdGljKGRlZmluaXRpb246IENvbXBvbmVudC5Db21wb25lbnREZWZpbml0aW9uPE9wYXF1ZT4sIGFyZ3M6IENvbXBvbmVudEFyZ3MpIHtcbiAgICBsZXQgW3BhcmFtcywgaGFzaCwgX2RlZmF1bHQsIGludmVyc2VdID0gYXJncztcbiAgICBsZXQgeyBidWlsZGVyIH0gPSB0aGlzO1xuXG4gICAgYnVpbGRlci5wdXNoQ29tcG9uZW50TWFuYWdlcihkZWZpbml0aW9uKTtcbiAgICBidWlsZGVyLmludm9rZUNvbXBvbmVudChudWxsLCBwYXJhbXMsIGhhc2gsIF9kZWZhdWx0LCBpbnZlcnNlKTtcbiAgfVxuXG4gIGR5bmFtaWMoZGVmaW5pdGlvbkFyZ3M6IENvbXBvbmVudEFyZ3MsIGdldERlZmluaXRpb246IER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uLCBhcmdzOiBDb21wb25lbnRBcmdzKSB7XG4gICAgbGV0IFtwYXJhbXMsIGhhc2gsIGJsb2NrLCBpbnZlcnNlXSA9IGFyZ3M7XG4gICAgbGV0IHsgYnVpbGRlciB9ID0gdGhpcztcblxuICAgIGlmICghZGVmaW5pdGlvbkFyZ3MgfHwgZGVmaW5pdGlvbkFyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEeW5hbWljIHN5bnRheCB3aXRob3V0IGFuIGFyZ3VtZW50XCIpO1xuICAgIH1cblxuICAgIGxldCBtZXRhID0gdGhpcy5idWlsZGVyLm1ldGEudGVtcGxhdGVNZXRhO1xuXG4gICAgZnVuY3Rpb24gaGVscGVyKHZtOiBQdWJsaWNWTSwgYXJnczogSUFyZ3VtZW50cykge1xuICAgICAgcmV0dXJuIGdldERlZmluaXRpb24odm0sIGFyZ3MsIG1ldGEpO1xuICAgIH1cblxuICAgIGJ1aWxkZXIuc3RhcnRMYWJlbHMoKTtcblxuICAgIGJ1aWxkZXIucHVzaEZyYW1lKCk7XG5cbiAgICBidWlsZGVyLnJldHVyblRvKCdFTkQnKTtcblxuICAgIGJ1aWxkZXIuY29tcGlsZUFyZ3MoZGVmaW5pdGlvbkFyZ3NbMF0sIGRlZmluaXRpb25BcmdzWzFdLCB0cnVlKTtcbiAgICBidWlsZGVyLmhlbHBlcihoZWxwZXIpO1xuXG4gICAgYnVpbGRlci5kdXAoKTtcbiAgICBidWlsZGVyLnRlc3QoJ3NpbXBsZScpO1xuXG4gICAgYnVpbGRlci5lbnRlcigyKTtcblxuICAgIGJ1aWxkZXIuanVtcFVubGVzcygnRUxTRScpO1xuXG4gICAgYnVpbGRlci5wdXNoRHluYW1pY0NvbXBvbmVudE1hbmFnZXIoKTtcbiAgICBidWlsZGVyLmludm9rZUNvbXBvbmVudChudWxsLCBwYXJhbXMsIGhhc2gsIGJsb2NrLCBpbnZlcnNlKTtcblxuICAgIGJ1aWxkZXIubGFiZWwoJ0VMU0UnKTtcbiAgICBidWlsZGVyLmV4aXQoKTtcbiAgICBidWlsZGVyLnJldHVybigpO1xuXG4gICAgYnVpbGRlci5sYWJlbCgnRU5EJyk7XG4gICAgYnVpbGRlci5wb3BGcmFtZSgpO1xuXG4gICAgYnVpbGRlci5zdG9wTGFiZWxzKCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkZXIoZW52OiBFbnZpcm9ubWVudCwgbWV0YTogQ29tcGlsYXRpb25NZXRhKSB7XG4gIHJldHVybiBuZXcgT3Bjb2RlQnVpbGRlckRTTChlbnYsIG1ldGEpO1xufVxuIl19

@@ -240,7 +240,6 @@ 'use strict';

begin() {
(0, _util.assert)(!this._transaction, 'Cannot start a nested transaction');
this._transaction = new Transaction();
}
get transaction() {
return (0, _util.expect)(this._transaction, 'must be in a transaction');
return this._transaction;
}

@@ -282,2 +281,2 @@ didCreate(component, manager) {

exports.default = Environment;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJlbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0EsQUFBTyxBQUFtQixBQUFnQixBQUFFLEFBQU0sQUFBb0IsQUFBQzs7QUFFdkUsQUFBTyxBQUFFLEFBQVMsQUFBRSxBQUFNLEFBQXlCLEFBQUM7O0FBS3BELEFBQU8sQUFBRSxBQUFtQixBQUFFLEFBQW9CLEFBQUUsQUFBTSxBQUFjLEFBQUM7O0FBQ3pFLEFBQU8sQUFDTCxBQUFlLEFBRWhCLEFBQU0sQUFBMEIsQUFBQzs7QUFnQmxDLEFBQU8sQUFNTCxBQUFNLEFBQ04sQUFBVSxBQUNWLEFBQU0sQUFDUCxBQUFNLEFBQWUsQUFBQyxBQW9CdkIsQUFBTTs7O0FBcUJKO0FBQ0UsQUFBeUI7QUFDakIsQUFBa0IsV0FDbEIsY0FBNkIsQUFBSTtBQUN6QyxBQUErRDtBQUN2RCxnQkFBcUMsQUFBSTtBQUNqRCxBQUErQztBQUN2QyxpQkFBMkQsQUFBSTtBQUwvRCxhQUFLLFFBQUwsQUFBSyxBQUFhO0FBQ2xCLGFBQVcsY0FBWCxBQUFXLEFBQXNCO0FBRWpDLGFBQVMsWUFBVCxBQUFTLEFBQWdDO0FBRXpDLGFBQVUsYUFBVixBQUFVLEFBQXFELEFBQ3pFO0FBQUM7QUE1QkQsQUFBTSxXQUFDLEFBQUksS0FBQyxBQUFvQyxNQUFFLEFBQUksT0FBRyxBQUFDO0FBQ3hELFlBQUksQUFBSSxPQUFxQyxJQUFJLEFBQUssTUFBQyxBQUFJLE9BQUcsQUFBQyxBQUFDLEFBQUM7QUFFakUsQUFBRyxBQUFDLGFBQUMsSUFBSSxBQUFDLElBQUcsQUFBQyxHQUFFLEFBQUMsS0FBSSxBQUFJLE1BQUUsQUFBQyxBQUFFLEtBQUUsQUFBQztBQUMvQixBQUFJLGlCQUFDLEFBQUMsQUFBQyxBQUFHLEFBQW1CLEFBQUMsQUFDaEM7QUFBQztBQUVELEFBQU0sZUFBQyxJQUFJLEFBQUssTUFBQyxBQUFJLEFBQUMsTUFBQyxBQUFJ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QUksQUFBVyxVQUFFLEFBQTJCO0FBQ2hFLEFBQUksYUFBQyxBQUFXLFlBQUMsQUFBc0IsdUJBQUMsQUFBUSxVQUFFLEFBQU8sQUFBQyxBQUFDLEFBQzdEO0FBQUM7QUFFRCxBQUFVLGVBQUMsQUFBYztBQUN2QixBQUFJLGFBQUMsQUFBVyxZQUFDLEFBQVUsV0FBQyxBQUFDLEFBQUMsQUFBQyxBQUNqQztBQUFDO0FBRUQsQUFBTTtBQUNKLEFBQUksYUFBQyxBQUFXLFlBQUMsQUFBTSxBQUFFLEFBQUM7QUFDMUIsQUFBSSxhQUFDLEFBQVksZUFBRyxBQUFJLEFBQUMsQUFDM0I7QUFBQztBQUVELEFBQVksaUJBQUMsQUFBdUIsU0FBRSxBQUFZLE1BQUUsQUFBbUIsWUFBRSxBQUFrQjtBQUN6RixBQUFNLGVBQUMsQUFBZSx3Q0FBQyxBQUFPLFNBQUUsQUFBSSxNQUFFLEFBQVUsWUFBRSxBQUFTLGNBQUssQUFBUyxZQUFHLEFBQUksT0FBRyxBQUFTLEFBQUMsQUFBQyxBQUNoRztBQUFDO0FBRUQsQUFBTTtBQUNKLFlBQUksQUFBTSxTQUFHLEFBQUksS0FBQyxBQUFPLEFBQUM7QUFDMUIsQUFBRSxBQUFDLFlBQUMsQ0FBQyxBQUFNLEFBQUMsUUFBQyxBQUFDO0FBQ1osQUFBSSxpQkFBQyxBQUFPLFVBQUcsQUFBTSxTQUFHLEFBQUksS0FBQyxBQUFnQixBQUFFLEFBQUMsQUFDbEQ7QUFBQztBQUVELEFBQU0sZUFBQyxBQUFNLEFBQUMsQUFDaEI7QUFBQztBQUVELEFBQWdCO0FBQ2QsQUFBTSxlQUFDLEFBQWdCLEFBQUUsQUFBQyxBQUM1QjtBQUFDLEFBYUYsQUFFRDs7O2tCQUFlLEFBQVcsQUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgQmxvY2tzLCBJbmxpbmVzLCBwb3B1bGF0ZUJ1aWx0aW5zIH0gZnJvbSAnLi9zeW50YXgvZnVuY3Rpb25zJztcblxuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi9lbnZpcm9ubWVudC9jb25zdGFudHMnO1xuXG5pbXBvcnQgKiBhcyBTaW1wbGUgZnJvbSAnLi9kb20vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBET01DaGFuZ2VzLCBET01UcmVlQ29uc3RydWN0aW9uIH0gZnJvbSAnLi9kb20vaGVscGVyJztcbmltcG9ydCB7IFJlZmVyZW5jZSwgT3BhcXVlSXRlcmFibGUgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgVU5ERUZJTkVEX1JFRkVSRU5DRSwgQ29uZGl0aW9uYWxSZWZlcmVuY2UgfSBmcm9tICcuL3JlZmVyZW5jZXMnO1xuaW1wb3J0IHtcbiAgZGVmYXVsdE1hbmFnZXJzLFxuICBBdHRyaWJ1dGVNYW5hZ2VyXG59IGZyb20gJy4vZG9tL2F0dHJpYnV0ZS1tYW5hZ2Vycyc7XG5cbmltcG9ydCB7XG4gIFBhcnRpYWxEZWZpbml0aW9uXG59IGZyb20gJy4vcGFydGlhbCc7XG5cbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50TWFuYWdlcixcbiAgQ29tcG9uZW50RGVmaW5pdGlvblxufSBmcm9tICcuL2NvbXBvbmVudC9pbnRlcmZhY2VzJztcblxuaW1wb3J0IHtcbiAgTW9kaWZpZXJNYW5hZ2VyXG59IGZyb20gJy4vbW9kaWZpZXIvaW50ZXJmYWNlcyc7XG5cbmltcG9ydCB7XG4gIERpY3QsXG4gIE9wdGlvbixcbiAgRGVzdHJveWFibGUsXG4gIE9wYXF1ZSxcbiAgSGFzR3VpZCxcbiAgYXNzZXJ0LFxuICBlbnN1cmVHdWlkLFxuICBleHBlY3Rcbn0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5cbmltcG9ydCB7XG4gIFRlbXBsYXRlTWV0YVxufSBmcm9tICdAZ2xpbW1lci93aXJlLWZvcm1hdCc7XG5cbmltcG9ydCB7IEJsb2NrIH0gZnJvbSAnLi9zY2FubmVyJztcblxuaW1wb3J0IHsgUHVibGljVk0gfSBmcm9tICcuL3ZtL2FwcGVuZCc7XG5cbmltcG9ydCB7IElBcmd1bWVudHMgfSBmcm9tICcuL3ZtL2FyZ3VtZW50cyc7XG5cbmV4cG9ydCB0eXBlIFNjb3BlU2xvdCA9IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiB8IE9wdGlvbjxCbG9jaz47XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1pY1Njb3BlIHtcbiAgZ2V0KGtleTogc3RyaW5nKTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+O1xuICBzZXQoa2V5OiBzdHJpbmcsIHJlZmVyZW5jZTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+KTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+O1xuICBjaGlsZCgpOiBEeW5hbWljU2NvcGU7XG59XG5cbmV4cG9ydCBjbGFzcyBTY29wZSB7XG4gIHN0YXRpYyByb290KHNlbGY6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgc2l6ZSA9IDApIHtcbiAgICBsZXQgcmVmczogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+W10gPSBuZXcgQXJyYXkoc2l6ZSArIDEpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gc2l6ZTsgaSsrKSB7XG4gICAgICByZWZzW2ldID0gVU5ERUZJTkVEX1JFRkVSRU5DRTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFNjb3BlKHJlZnMpLmluaXQoeyBzZWxmIH0pO1xuICB9XG5cbiAgc3RhdGljIHNpemVkKHNpemUgPSAwKSB7XG4gICAgbGV0IHJlZnM6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPltdID0gbmV3IEFycmF5KHNpemUgKyAxKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IHNpemU7IGkrKykge1xuICAgICAgcmVmc1tpXSA9IFVOREVGSU5FRF9SRUZFUkVOQ0U7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBTY29wZShyZWZzKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIC8vIHRoZSAwdGggc2xvdCBpcyBgc2VsZmBcbiAgICBwcml2YXRlIHNsb3RzOiBTY29wZVNsb3RbXSxcbiAgICBwcml2YXRlIGNhbGxlclNjb3BlOiBPcHRpb248U2NvcGU+ID0gbnVsbCxcbiAgICAvLyBuYW1lZCBhcmd1bWVudHMgYW5kIGJsb2NrcyBwYXNzZWQgdG8gYSBsYXlvdXQgdGhhdCB1c2VzIGV2YWxcbiAgICBwcml2YXRlIGV2YWxTY29wZTogT3B0aW9uPERpY3Q8U2NvcGVTbG90Pj4gPSBudWxsLFxuICAgIC8vIGxvY2FscyBpbiBzY29wZSB3aGVuIHRoZSBwYXJ0aWFsIHdhcyBpbnZva2VkXG4gICAgcHJpdmF0ZSBwYXJ0aWFsTWFwOiBPcHRpb248RGljdDxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4+PiA9IG51bGwpIHtcbiAgfVxuXG4gIGluaXQoeyBzZWxmIH06IHsgc2VsZjogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+IH0pOiB0aGlzIHtcbiAgICB0aGlzLnNsb3RzWzBdID0gc2VsZjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGdldFNlbGYoKTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+IHtcbiAgICByZXR1cm4gdGhpcy5nZXQ8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+PigwKTtcbiAgfVxuXG4gIGdldFN5bWJvbChzeW1ib2w6IG51bWJlcik6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0PFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPj4oc3ltYm9sKTtcbiAgfVxuXG4gIGdldEJsb2NrKHN5bWJvbDogbnVtYmVyKTogQmxvY2sge1xuICAgIHJldHVybiB0aGlzLmdldDxCbG9jaz4oc3ltYm9sKTtcbiAgfVxuXG4gIGdldEV2YWxTY29wZSgpOiBPcHRpb248RGljdDxTY29wZVNsb3Q+PiB7XG4gICAgcmV0dXJuIHRoaXMuZXZhbFNjb3BlO1xuICB9XG5cbiAgZ2V0UGFydGlhbE1hcCgpOiBPcHRpb248RGljdDxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4+PiB7XG4gICAgcmV0dXJuIHRoaXMucGFydGlhbE1hcDtcbiAgfVxuXG4gIGJpbmQoc3ltYm9sOiBudW1iZXIsIHZhbHVlOiBTY29wZVNsb3QpIHtcbiAgICB0aGlzLnNldChzeW1ib2wsIHZhbHVlKTtcbiAgfVxuXG4gIGJpbmRTZWxmKHNlbGY6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPikge1xuICAgIHRoaXMuc2V0PFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPj4oMCwgc2VsZik7XG4gIH1cblxuICBiaW5kU3ltYm9sKHN5bWJvbDogbnVtYmVyLCB2YWx1ZTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+KSB7XG4gICAgdGhpcy5zZXQ8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+PihzeW1ib2wsIHZhbHVlKTtcbiAgfVxuXG4gIGJpbmRCbG9jayhzeW1ib2w6IG51bWJlciwgdmFsdWU6IE9wdGlvbjxCbG9jaz4pIHtcbiAgICB0aGlzLnNldDxPcHRpb248QmxvY2s+PihzeW1ib2wsIHZhbHVlKTtcbiAgfVxuXG4gIGJpbmRFdmFsU2NvcGUobWFwOiBPcHRpb248RGljdDxTY29wZVNsb3Q+Pikge1xuICAgIHRoaXMuZXZhbFNjb3BlID0gbWFwO1xuICB9XG5cbiAgYmluZFBhcnRpYWxNYXAobWFwOiBEaWN0PFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPj4pIHtcbiAgICB0aGlzLnBhcnRpYWxNYXAgPSBtYXA7XG4gIH1cblxuICBiaW5kQ2FsbGVyU2NvcGUoc2NvcGU6IE9wdGlvbjxTY29wZT4pIHtcbiAgICB0aGlzLmNhbGxlclNjb3BlID0gc2NvcGU7XG4gIH1cblxuICBnZXRDYWxsZXJTY29wZSgpOiBPcHRpb248U2NvcGU+IHtcbiAgICByZXR1cm4gdGhpcy5jYWxsZXJTY29wZTtcbiAgfVxuXG4gIGNoaWxkKCk6IFNjb3BlIHtcbiAgICByZXR1cm4gbmV3IFNjb3BlKHRoaXMuc2xvdHMuc2xpY2UoKSwgdGhpcy5jYWxsZXJTY29wZSwgdGhpcy5ldmFsU2NvcGUsIHRoaXMucGFydGlhbE1hcCk7XG4gIH1cblxuICBwcml2YXRlIGdldDxUPihpbmRleDogbnVtYmVyKTogVCB7XG4gICAgaWYgKGluZGV4ID49IHRoaXMuc2xvdHMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgQlVHOiBjYW5ub3QgZ2V0ICQke2luZGV4fSBmcm9tIHNjb3BlOyBsZW5ndGg9JHt0aGlzLnNsb3RzLmxlbmd0aH1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zbG90c1tpbmRleF0gYXMgYW55IGFzIFQ7XG4gIH1cblxuICBwcml2YXRlIHNldDxUPihpbmRleDogbnVtYmVyLCB2YWx1ZTogVCk6IHZvaWQge1xuICAgIGlmIChpbmRleCA+PSB0aGlzLnNsb3RzLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYEJVRzogY2Fubm90IGdldCAkJHtpbmRleH0gZnJvbSBzY29wZTsgbGVuZ3RoPSR7dGhpcy5zbG90cy5sZW5ndGh9YCk7XG4gICAgfVxuXG4gICAgdGhpcy5zbG90c1tpbmRleF0gPSB2YWx1ZSBhcyBhbnk7XG4gIH1cbn1cblxuY2xhc3MgVHJhbnNhY3Rpb24ge1xuICBwdWJsaWMgc2NoZWR1bGVkSW5zdGFsbE1hbmFnZXJzOiBNb2RpZmllck1hbmFnZXI8T3BhcXVlPltdID0gW107XG4gIHB1YmxpYyBzY2hlZHVsZWRJbnN0YWxsTW9kaWZpZXJzOiBPYmplY3RbXSA9IFtdO1xuICBwdWJsaWMgc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJNYW5hZ2VyczogTW9kaWZpZXJNYW5hZ2VyPE9wYXF1ZT5bXSA9IFtdO1xuICBwdWJsaWMgc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJzOiBPYmplY3RbXSA9IFtdO1xuICBwdWJsaWMgY3JlYXRlZENvbXBvbmVudHM6IENvbXBvbmVudFtdID0gW107XG4gIHB1YmxpYyBjcmVhdGVkTWFuYWdlcnM6IENvbXBvbmVudE1hbmFnZXI8Q29tcG9uZW50PltdID0gW107XG4gIHB1YmxpYyB1cGRhdGVkQ29tcG9uZW50czogQ29tcG9uZW50W10gPSBbXTtcbiAgcHVibGljIHVwZGF0ZWRNYW5hZ2VyczogQ29tcG9uZW50TWFuYWdlcjxDb21wb25lbnQ+W10gPSBbXTtcbiAgcHVibGljIGRlc3RydWN0b3JzOiBEZXN0cm95YWJsZVtdID0gW107XG5cbiAgZGlkQ3JlYXRlPFQ+KGNvbXBvbmVudDogVCwgbWFuYWdlcjogQ29tcG9uZW50TWFuYWdlcjxUPikge1xuICAgIHRoaXMuY3JlYXRlZENvbXBvbmVudHMucHVzaChjb21wb25lbnQpO1xuICAgIHRoaXMuY3JlYXRlZE1hbmFnZXJzLnB1c2gobWFuYWdlcik7XG4gIH1cblxuICBkaWRVcGRhdGU8VD4oY29tcG9uZW50OiBULCBtYW5hZ2VyOiBDb21wb25lbnRNYW5hZ2VyPFQ+KSB7XG4gICAgdGhpcy51cGRhdGVkQ29tcG9uZW50cy5wdXNoKGNvbXBvbmVudCk7XG4gICAgdGhpcy51cGRhdGVkTWFuYWdlcnMucHVzaChtYW5hZ2VyKTtcbiAgfVxuXG4gIHNjaGVkdWxlSW5zdGFsbE1vZGlmaWVyPFQ+KG1vZGlmaWVyOiBULCBtYW5hZ2VyOiBNb2RpZmllck1hbmFnZXI8VD4pIHtcbiAgICB0aGlzLnNjaGVkdWxlZEluc3RhbGxNYW5hZ2Vycy5wdXNoKG1hbmFnZXIpO1xuICAgIHRoaXMuc2NoZWR1bGVkSW5zdGFsbE1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcbiAgfVxuXG4gIHNjaGVkdWxlVXBkYXRlTW9kaWZpZXI8VD4obW9kaWZpZXI6IFQsIG1hbmFnZXI6IE1vZGlmaWVyTWFuYWdlcjxUPikge1xuICAgIHRoaXMuc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJNYW5hZ2Vycy5wdXNoKG1hbmFnZXIpO1xuICAgIHRoaXMuc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJzLnB1c2gobW9kaWZpZXIpO1xuICB9XG5cbiAgZGlkRGVzdHJveShkOiBEZXN0cm95YWJsZSkge1xuICAgIHRoaXMuZGVzdHJ1Y3RvcnMucHVzaChkKTtcbiAgfVxuXG4gIGNvbW1pdCgpIHtcbiAgICBsZXQgeyBjcmVhdGVkQ29tcG9uZW50cywgY3JlYXRlZE1hbmFnZXJzIH0gPSB0aGlzO1xuXG4gICAgZm9yIChsZXQgaT0wOyBpPGNyZWF0ZWRDb21wb25lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgY29tcG9uZW50ID0gY3JlYXRlZENvbXBvbmVudHNbaV07XG4gICAgICBsZXQgbWFuYWdlciA9IGNyZWF0ZWRNYW5hZ2Vyc1tpXTtcbiAgICAgIG1hbmFnZXIuZGlkQ3JlYXRlKGNvbXBvbmVudCk7XG4gICAgfVxuXG4gICAgbGV0IHsgdXBkYXRlZENvbXBvbmVudHMsIHVwZGF0ZWRNYW5hZ2VycyB9ID0gdGhpcztcblxuICAgIGZvciAobGV0IGk9MDsgaTx1cGRhdGVkQ29tcG9uZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IGNvbXBvbmVudCA9IHVwZGF0ZWRDb21wb25lbnRzW2ldO1xuICAgICAgbGV0IG1hbmFnZXIgPSB1cGRhdGVkTWFuYWdlcnNbaV07XG4gICAgICBtYW5hZ2VyLmRpZFVwZGF0ZShjb21wb25lbnQpO1xuICAgIH1cblxuICAgIGxldCB7IGRlc3RydWN0b3JzIH0gPSB0aGlzO1xuXG4gICAgZm9yIChsZXQgaT0wOyBpPGRlc3RydWN0b3JzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBkZXN0cnVjdG9yc1tpXS5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgbGV0IHsgc2NoZWR1bGVkSW5zdGFsbE1hbmFnZXJzLCBzY2hlZHVsZWRJbnN0YWxsTW9kaWZpZXJzIH0gPSB0aGlzO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzY2hlZHVsZWRJbnN0YWxsTWFuYWdlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBtYW5hZ2VyID0gc2NoZWR1bGVkSW5zdGFsbE1hbmFnZXJzW2ldO1xuICAgICAgbGV0IG1vZGlmaWVyID0gc2NoZWR1bGVkSW5zdGFsbE1vZGlmaWVyc1tpXTtcbiAgICAgIG1hbmFnZXIuaW5zdGFsbChtb2RpZmllcik7XG4gICAgfVxuXG4gICAgbGV0IHsgc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJNYW5hZ2Vycywgc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJzIH0gPSB0aGlzO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzY2hlZHVsZWRVcGRhdGVNb2RpZmllck1hbmFnZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgbWFuYWdlciA9IHNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVyTWFuYWdlcnNbaV07XG4gICAgICBsZXQgbW9kaWZpZXIgPSBzY2hlZHVsZWRVcGRhdGVNb2RpZmllcnNbaV07XG4gICAgICBtYW5hZ2VyLnVwZGF0ZShtb2RpZmllcik7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPcGNvZGUge1xuICBwdWJsaWMgb2Zmc2V0ID0gMDtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhcnJheTogVWludDMyQXJyYXkgfCBBcnJheTxudW1iZXI+KSB7fVxuXG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiB0aGlzLmFycmF5W3RoaXMub2Zmc2V0XTtcbiAgfVxuXG4gIGdldCBvcDEoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXJyYXlbdGhpcy5vZmZzZXQgKyAxXTtcbiAgfVxuXG4gIGdldCBvcDIoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXJyYXlbdGhpcy5vZmZzZXQgKyAyXTtcbiAgfVxuXG4gIGdldCBvcDMoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXJyYXlbdGhpcy5vZmZzZXQgKyAzXTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJvZ3JhbSB7XG4gIFtrZXk6IG51bWJlcl06IG5ldmVyO1xuXG4gIHByaXZhdGUgb3Bjb2RlczogbnVtYmVyW10gPSBbXTtcbiAgcHJpdmF0ZSBfb2Zmc2V0ID0gMDtcbiAgcHJpdmF0ZSBfb3Bjb2RlOiBPcGNvZGU7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5fb3Bjb2RlID0gbmV3IE9wY29kZSh0aGlzLm9wY29kZXMpO1xuICB9XG5cbiAgZ2V0IG5leHQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fb2Zmc2V0O1xuICB9XG5cbiAgZ2V0IGN1cnJlbnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fb2Zmc2V0IC0gNDtcbiAgfVxuXG4gIG9wY29kZShvZmZzZXQ6IG51bWJlcik6IE9wY29kZSB7XG4gICAgdGhpcy5fb3Bjb2RlLm9mZnNldCA9IG9mZnNldDtcbiAgICByZXR1cm4gdGhpcy5fb3Bjb2RlO1xuICB9XG5cbiAgc2V0KHBvczogbnVtYmVyLCB0eXBlOiBudW1iZXIsIG9wMSA9IDAsIG9wMiA9IDAsIG9wMyA9IDApIHtcbiAgICB0aGlzLm9wY29kZXNbcG9zXSA9IHR5cGU7XG4gICAgdGhpcy5vcGNvZGVzW3BvcyArIDFdID0gb3AxO1xuICAgIHRoaXMub3Bjb2Rlc1twb3MgKyAyXSA9IG9wMjtcbiAgICB0aGlzLm9wY29kZXNbcG9zICsgM10gPSBvcDM7XG4gIH1cblxuICBwdXNoKHR5cGU6IG51bWJlciwgb3AxID0gMCwgb3AyID0gMCwgb3AzID0gMCk6IG51bWJlciB7XG4gICAgbGV0IG9mZnNldCA9IHRoaXMuX29mZnNldDtcbiAgICB0aGlzLm9wY29kZXNbdGhpcy5fb2Zmc2V0KytdID0gdHlwZTtcbiAgICB0aGlzLm9wY29kZXNbdGhpcy5fb2Zmc2V0KytdID0gb3AxO1xuICAgIHRoaXMub3Bjb2Rlc1t0aGlzLl9vZmZzZXQrK10gPSBvcDI7XG4gICAgdGhpcy5vcGNvZGVzW3RoaXMuX29mZnNldCsrXSA9IG9wMztcbiAgICByZXR1cm4gb2Zmc2V0O1xuICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBFbnZpcm9ubWVudCB7XG4gIHByb3RlY3RlZCB1cGRhdGVPcGVyYXRpb25zOiBET01DaGFuZ2VzO1xuICBwcm90ZWN0ZWQgYXBwZW5kT3BlcmF0aW9uczogRE9NVHJlZUNvbnN0cnVjdGlvbjtcbiAgcHJpdmF0ZSBfbWFjcm9zOiBPcHRpb248eyBibG9ja3M6IEJsb2NrcywgaW5saW5lczogSW5saW5lcyB9PiA9IG51bGw7XG4gIHByaXZhdGUgX3RyYW5zYWN0aW9uOiBPcHRpb248VHJhbnNhY3Rpb24+ID0gbnVsbDtcbiAgcHVibGljIGNvbnN0YW50czogQ29uc3RhbnRzID0gbmV3IENvbnN0YW50cygpO1xuICBwdWJsaWMgcHJvZ3JhbSA9IG5ldyBQcm9ncmFtKCk7XG5cbiAgY29uc3RydWN0b3IoeyBhcHBlbmRPcGVyYXRpb25zLCB1cGRhdGVPcGVyYXRpb25zIH06IHsgYXBwZW5kT3BlcmF0aW9uczogRE9NVHJlZUNvbnN0cnVjdGlvbiwgdXBkYXRlT3BlcmF0aW9uczogRE9NQ2hhbmdlcyB9KSB7XG4gICAgdGhpcy5hcHBlbmRPcGVyYXRpb25zID0gYXBwZW5kT3BlcmF0aW9ucztcbiAgICB0aGlzLnVwZGF0ZU9wZXJhdGlvbnMgPSB1cGRhdGVPcGVyYXRpb25zO1xuICB9XG5cbiAgdG9Db25kaXRpb25hbFJlZmVyZW5jZShyZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+KTogUmVmZXJlbmNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gbmV3IENvbmRpdGlvbmFsUmVmZXJlbmNlKHJlZmVyZW5jZSk7XG4gIH1cblxuICBhYnN0cmFjdCBpdGVyYWJsZUZvcihyZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+LCBrZXk6IHN0cmluZyk6IE9wYXF1ZUl0ZXJhYmxlO1xuICBhYnN0cmFjdCBwcm90b2NvbEZvclVSTChzOiBzdHJpbmcpOiBzdHJpbmc7XG5cbiAgZ2V0QXBwZW5kT3BlcmF0aW9ucygpOiBET01UcmVlQ29uc3RydWN0aW9uIHsgcmV0dXJuIHRoaXMuYXBwZW5kT3BlcmF0aW9uczsgfVxuICBnZXRET00oKTogRE9NQ2hhbmdlcyB7IHJldHVybiB0aGlzLnVwZGF0ZU9wZXJhdGlvbnM7IH1cblxuICBnZXRJZGVudGl0eShvYmplY3Q6IEhhc0d1aWQpOiBzdHJpbmcge1xuICAgIHJldHVybiBlbnN1cmVHdWlkKG9iamVjdCkgKyAnJztcbiAgfVxuXG4gIGJlZ2luKCkge1xuICAgIGFzc2VydCghdGhpcy5fdHJhbnNhY3Rpb24sICdDYW5ub3Qgc3RhcnQgYSBuZXN0ZWQgdHJhbnNhY3Rpb24nKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgdHJhbnNhY3Rpb24oKTogVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiBleHBlY3QodGhpcy5fdHJhbnNhY3Rpb24sICdtdXN0IGJlIGluIGEgdHJhbnNhY3Rpb24nKTtcbiAgfVxuXG4gIGRpZENyZWF0ZTxUPihjb21wb25lbnQ6IFQsIG1hbmFnZXI6IENvbXBvbmVudE1hbmFnZXI8VD4pIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLmRpZENyZWF0ZShjb21wb25lbnQsIG1hbmFnZXIpO1xuICB9XG5cbiAgZGlkVXBkYXRlPFQ+KGNvbXBvbmVudDogVCwgbWFuYWdlcjogQ29tcG9uZW50TWFuYWdlcjxUPikge1xuICAgIHRoaXMudHJhbnNhY3Rpb24uZGlkVXBkYXRlKGNvbXBvbmVudCwgbWFuYWdlcik7XG4gIH1cblxuICBzY2hlZHVsZUluc3RhbGxNb2RpZmllcjxUPihtb2RpZmllcjogVCwgbWFuYWdlcjogTW9kaWZpZXJNYW5hZ2VyPFQ+KSB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zY2hlZHVsZUluc3RhbGxNb2RpZmllcihtb2RpZmllciwgbWFuYWdlcik7XG4gIH1cblxuICBzY2hlZHVsZVVwZGF0ZU1vZGlmaWVyPFQ+KG1vZGlmaWVyOiBULCBtYW5hZ2VyOiBNb2RpZmllck1hbmFnZXI8VD4pIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNjaGVkdWxlVXBkYXRlTW9kaWZpZXIobW9kaWZpZXIsIG1hbmFnZXIpO1xuICB9XG5cbiAgZGlkRGVzdHJveShkOiBEZXN0cm95YWJsZSkge1xuICAgIHRoaXMudHJhbnNhY3Rpb24uZGlkRGVzdHJveShkKTtcbiAgfVxuXG4gIGNvbW1pdCgpIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLmNvbW1pdCgpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gbnVsbDtcbiAgfVxuXG4gIGF0dHJpYnV0ZUZvcihlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgYXR0cjogc3RyaW5nLCBpc1RydXN0aW5nOiBib29sZWFuLCBuYW1lc3BhY2U/OiBzdHJpbmcpOiBBdHRyaWJ1dGVNYW5hZ2VyIHtcbiAgICByZXR1cm4gZGVmYXVsdE1hbmFnZXJzKGVsZW1lbnQsIGF0dHIsIGlzVHJ1c3RpbmcsIG5hbWVzcGFjZSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IG5hbWVzcGFjZSk7XG4gIH1cblxuICBtYWNyb3MoKTogeyBibG9ja3M6IEJsb2NrcywgaW5saW5lczogSW5saW5lcyB9IHtcbiAgICBsZXQgbWFjcm9zID0gdGhpcy5fbWFjcm9zO1xuICAgIGlmICghbWFjcm9zKSB7XG4gICAgICB0aGlzLl9tYWNyb3MgPSBtYWNyb3MgPSB0aGlzLnBvcHVsYXRlQnVpbHRpbnMoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWFjcm9zO1xuICB9XG5cbiAgcG9wdWxhdGVCdWlsdGlucygpOiB7IGJsb2NrczogQmxvY2tzLCBpbmxpbmVzOiBJbmxpbmVzIH0ge1xuICAgIHJldHVybiBwb3B1bGF0ZUJ1aWx0aW5zKCk7XG4gIH1cblxuICBhYnN0cmFjdCBoYXNIZWxwZXIoaGVscGVyTmFtZTogc3RyaW5nLCBtZXRhOiBUZW1wbGF0ZU1ldGEpOiBib29sZWFuO1xuICBhYnN0cmFjdCBsb29rdXBIZWxwZXIoaGVscGVyTmFtZTogc3RyaW5nLCBtZXRhOiBUZW1wbGF0ZU1ldGEpOiBIZWxwZXI7XG5cbiAgYWJzdHJhY3QgaGFzTW9kaWZpZXIobW9kaWZpZXJOYW1lOiBzdHJpbmcsIG1ldGE6IFRlbXBsYXRlTWV0YSk6IGJvb2xlYW47XG4gIGFic3RyYWN0IGxvb2t1cE1vZGlmaWVyKG1vZGlmaWVyTmFtZTogc3RyaW5nLCBtZXRhOiBUZW1wbGF0ZU1ldGEpOiBNb2RpZmllck1hbmFnZXI8T3BhcXVlPjtcblxuICBhYnN0cmFjdCBoYXNDb21wb25lbnREZWZpbml0aW9uKHRhZ05hbWU6IHN0cmluZywgbWV0YTogVGVtcGxhdGVNZXRhKTogYm9vbGVhbjtcbiAgYWJzdHJhY3QgZ2V0Q29tcG9uZW50RGVmaW5pdGlvbih0YWdOYW1lOiBzdHJpbmcsIG1ldGE6IFRlbXBsYXRlTWV0YSk6IENvbXBvbmVudERlZmluaXRpb248T3BhcXVlPjtcblxuICBhYnN0cmFjdCBoYXNQYXJ0aWFsKHBhcnRpYWxOYW1lOiBzdHJpbmcsIG1ldGE6IFRlbXBsYXRlTWV0YSk6IGJvb2xlYW47XG4gIGFic3RyYWN0IGxvb2t1cFBhcnRpYWwoUGFydGlhbE5hbWU6IHN0cmluZywgbWV0YTogVGVtcGxhdGVNZXRhKTogUGFydGlhbERlZmluaXRpb248VGVtcGxhdGVNZXRhPjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgRW52aXJvbm1lbnQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGVscGVyIHtcbiAgKHZtOiBQdWJsaWNWTSwgYXJnczogSUFyZ3VtZW50cyk6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPjtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJlbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0EsQUFBTyxBQUFtQixBQUFnQixBQUFFLEFBQU0sQUFBb0IsQUFBQzs7QUFFdkUsQUFBTyxBQUFFLEFBQVMsQUFBRSxBQUFNLEFBQXlCLEFBQUM7O0FBS3BELEFBQU8sQUFBRSxBQUFtQixBQUFFLEFBQW9CLEFBQUUsQUFBTSxBQUFjLEFBQUM7O0FBQ3pFLEFBQU8sQUFDTCxBQUFlLEFBRWhCLEFBQU0sQUFBMEIsQUFBQzs7QUFnQmxDLEFBQU8sQUFNTCxBQUFVLEFBQ1gsQUFBTSxBQUFlLEFBQUMsQUFvQnZCLEFBQU07OztBQXFCSjtBQUNFLEFBQXlCO0FBQ2pCLEFBQWtCLFdBQ2xCLGNBQTZCLEFBQUk7QUFDekMsQUFBK0Q7QUFDdkQsZ0JBQXFDLEFBQUk7QUFDakQsQUFBK0M7QUFDdkMsaUJBQTJELEFBQUk7QUFML0QsYUFBSyxRQUFMLEFBQUssQUFBYTtBQUNsQixhQUFXLGNBQVgsQUFBVyxBQUFzQjtBQUVqQyxhQUFTLFlBQVQsQUFBUyxBQUFnQztBQUV6QyxhQUFVLGFBQVYsQUFBVSxBQUFxRCxBQUN6RTtBQUFDO0FBNUJELEFBQU0sV0FBQyxBQUFJLEtBQUMsQUFBb0MsTUFBRSxBQUFJLE9BQUcsQUFBQztBQUN4RCxZQUFJLEFBQUksT0FBcUMsSUFBSSxBQUFLLE1BQUMsQUFBSSxPQUFHLEFBQUMsQUFBQyxBQUFDO0FBRWpFLEFBQUcsQUFBQyxhQUFDLElBQUksQUFBQyxJQUFHLEFBQUMsR0FBRSxBQUFDLEtBQUksQUFBSSxNQUFFLEFBQUMsQUFBRSxLQUFFLEFBQUM7QUFDL0IsQUFBSSxpQkFBQyxBQUFDLEFBQUMsQUFBRyxBQUFtQixBQUFDLEFBQ2hDO0FBQUM7QUFFRCxBQUFNLGVBQUMsSUFBSSxBQUFLLE1BQUMsQUFBSSxBQUFDLE1BQUMsQUFBSSxLQUFDLEVBQUUsQUFBSSxBQUFF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QUMsQUFBYztBQUN2QixBQUFJLGFBQUMsQUFBVyxZQUFDLEFBQVUsV0FBQyxBQUFDLEFBQUMsQUFBQyxBQUNqQztBQUFDO0FBRUQsQUFBTTtBQUNKLEFBQUksYUFBQyxBQUFXLFlBQUMsQUFBTSxBQUFFLEFBQUM7QUFDMUIsQUFBSSxhQUFDLEFBQVksZUFBRyxBQUFJLEFBQUMsQUFDM0I7QUFBQztBQUVELEFBQVksaUJBQUMsQUFBdUIsU0FBRSxBQUFZLE1BQUUsQUFBbUIsWUFBRSxBQUFrQjtBQUN6RixBQUFNLGVBQUMsQUFBZSx3Q0FBQyxBQUFPLFNBQUUsQUFBSSxNQUFFLEFBQVUsWUFBRSxBQUFTLGNBQUssQUFBUyxZQUFHLEFBQUksT0FBRyxBQUFTLEFBQUMsQUFBQyxBQUNoRztBQUFDO0FBRUQsQUFBTTtBQUNKLFlBQUksQUFBTSxTQUFHLEFBQUksS0FBQyxBQUFPLEFBQUM7QUFDMUIsQUFBRSxBQUFDLFlBQUMsQ0FBQyxBQUFNLEFBQUMsUUFBQyxBQUFDO0FBQ1osQUFBSSxpQkFBQyxBQUFPLFVBQUcsQUFBTSxTQUFHLEFBQUksS0FBQyxBQUFnQixBQUFFLEFBQUMsQUFDbEQ7QUFBQztBQUVELEFBQU0sZUFBQyxBQUFNLEFBQUMsQUFDaEI7QUFBQztBQUVELEFBQWdCO0FBQ2QsQUFBTSxlQUFDLEFBQWdCLEFBQUUsQUFBQyxBQUM1QjtBQUFDLEFBYUYsQUFFRDs7O2tCQUFlLEFBQVcsQUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgQmxvY2tzLCBJbmxpbmVzLCBwb3B1bGF0ZUJ1aWx0aW5zIH0gZnJvbSAnLi9zeW50YXgvZnVuY3Rpb25zJztcblxuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi9lbnZpcm9ubWVudC9jb25zdGFudHMnO1xuXG5pbXBvcnQgKiBhcyBTaW1wbGUgZnJvbSAnLi9kb20vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBET01DaGFuZ2VzLCBET01UcmVlQ29uc3RydWN0aW9uIH0gZnJvbSAnLi9kb20vaGVscGVyJztcbmltcG9ydCB7IFJlZmVyZW5jZSwgT3BhcXVlSXRlcmFibGUgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgVU5ERUZJTkVEX1JFRkVSRU5DRSwgQ29uZGl0aW9uYWxSZWZlcmVuY2UgfSBmcm9tICcuL3JlZmVyZW5jZXMnO1xuaW1wb3J0IHtcbiAgZGVmYXVsdE1hbmFnZXJzLFxuICBBdHRyaWJ1dGVNYW5hZ2VyXG59IGZyb20gJy4vZG9tL2F0dHJpYnV0ZS1tYW5hZ2Vycyc7XG5cbmltcG9ydCB7XG4gIFBhcnRpYWxEZWZpbml0aW9uXG59IGZyb20gJy4vcGFydGlhbCc7XG5cbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50TWFuYWdlcixcbiAgQ29tcG9uZW50RGVmaW5pdGlvblxufSBmcm9tICcuL2NvbXBvbmVudC9pbnRlcmZhY2VzJztcblxuaW1wb3J0IHtcbiAgTW9kaWZpZXJNYW5hZ2VyXG59IGZyb20gJy4vbW9kaWZpZXIvaW50ZXJmYWNlcyc7XG5cbmltcG9ydCB7XG4gIERpY3QsXG4gIE9wdGlvbixcbiAgRGVzdHJveWFibGUsXG4gIE9wYXF1ZSxcbiAgSGFzR3VpZCxcbiAgZW5zdXJlR3VpZCxcbn0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5cbmltcG9ydCB7XG4gIFRlbXBsYXRlTWV0YVxufSBmcm9tICdAZ2xpbW1lci93aXJlLWZvcm1hdCc7XG5cbmltcG9ydCB7IEJsb2NrIH0gZnJvbSAnLi9zY2FubmVyJztcblxuaW1wb3J0IHsgUHVibGljVk0gfSBmcm9tICcuL3ZtL2FwcGVuZCc7XG5cbmltcG9ydCB7IElBcmd1bWVudHMgfSBmcm9tICcuL3ZtL2FyZ3VtZW50cyc7XG5cbmV4cG9ydCB0eXBlIFNjb3BlU2xvdCA9IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiB8IE9wdGlvbjxCbG9jaz47XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1pY1Njb3BlIHtcbiAgZ2V0KGtleTogc3RyaW5nKTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+O1xuICBzZXQoa2V5OiBzdHJpbmcsIHJlZmVyZW5jZTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+KTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+O1xuICBjaGlsZCgpOiBEeW5hbWljU2NvcGU7XG59XG5cbmV4cG9ydCBjbGFzcyBTY29wZSB7XG4gIHN0YXRpYyByb290KHNlbGY6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgc2l6ZSA9IDApIHtcbiAgICBsZXQgcmVmczogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+W10gPSBuZXcgQXJyYXkoc2l6ZSArIDEpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gc2l6ZTsgaSsrKSB7XG4gICAgICByZWZzW2ldID0gVU5ERUZJTkVEX1JFRkVSRU5DRTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFNjb3BlKHJlZnMpLmluaXQoeyBzZWxmIH0pO1xuICB9XG5cbiAgc3RhdGljIHNpemVkKHNpemUgPSAwKSB7XG4gICAgbGV0IHJlZnM6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPltdID0gbmV3IEFycmF5KHNpemUgKyAxKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IHNpemU7IGkrKykge1xuICAgICAgcmVmc1tpXSA9IFVOREVGSU5FRF9SRUZFUkVOQ0U7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBTY29wZShyZWZzKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIC8vIHRoZSAwdGggc2xvdCBpcyBgc2VsZmBcbiAgICBwcml2YXRlIHNsb3RzOiBTY29wZVNsb3RbXSxcbiAgICBwcml2YXRlIGNhbGxlclNjb3BlOiBPcHRpb248U2NvcGU+ID0gbnVsbCxcbiAgICAvLyBuYW1lZCBhcmd1bWVudHMgYW5kIGJsb2NrcyBwYXNzZWQgdG8gYSBsYXlvdXQgdGhhdCB1c2VzIGV2YWxcbiAgICBwcml2YXRlIGV2YWxTY29wZTogT3B0aW9uPERpY3Q8U2NvcGVTbG90Pj4gPSBudWxsLFxuICAgIC8vIGxvY2FscyBpbiBzY29wZSB3aGVuIHRoZSBwYXJ0aWFsIHdhcyBpbnZva2VkXG4gICAgcHJpdmF0ZSBwYXJ0aWFsTWFwOiBPcHRpb248RGljdDxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4+PiA9IG51bGwpIHtcbiAgfVxuXG4gIGluaXQoeyBzZWxmIH06IHsgc2VsZjogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+IH0pOiB0aGlzIHtcbiAgICB0aGlzLnNsb3RzWzBdID0gc2VsZjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGdldFNlbGYoKTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+IHtcbiAgICByZXR1cm4gdGhpcy5nZXQ8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+PigwKTtcbiAgfVxuXG4gIGdldFN5bWJvbChzeW1ib2w6IG51bWJlcik6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0PFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPj4oc3ltYm9sKTtcbiAgfVxuXG4gIGdldEJsb2NrKHN5bWJvbDogbnVtYmVyKTogQmxvY2sge1xuICAgIHJldHVybiB0aGlzLmdldDxCbG9jaz4oc3ltYm9sKTtcbiAgfVxuXG4gIGdldEV2YWxTY29wZSgpOiBPcHRpb248RGljdDxTY29wZVNsb3Q+PiB7XG4gICAgcmV0dXJuIHRoaXMuZXZhbFNjb3BlO1xuICB9XG5cbiAgZ2V0UGFydGlhbE1hcCgpOiBPcHRpb248RGljdDxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4+PiB7XG4gICAgcmV0dXJuIHRoaXMucGFydGlhbE1hcDtcbiAgfVxuXG4gIGJpbmQoc3ltYm9sOiBudW1iZXIsIHZhbHVlOiBTY29wZVNsb3QpIHtcbiAgICB0aGlzLnNldChzeW1ib2wsIHZhbHVlKTtcbiAgfVxuXG4gIGJpbmRTZWxmKHNlbGY6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPikge1xuICAgIHRoaXMuc2V0PFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPj4oMCwgc2VsZik7XG4gIH1cblxuICBiaW5kU3ltYm9sKHN5bWJvbDogbnVtYmVyLCB2YWx1ZTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+KSB7XG4gICAgdGhpcy5zZXQ8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+PihzeW1ib2wsIHZhbHVlKTtcbiAgfVxuXG4gIGJpbmRCbG9jayhzeW1ib2w6IG51bWJlciwgdmFsdWU6IE9wdGlvbjxCbG9jaz4pIHtcbiAgICB0aGlzLnNldDxPcHRpb248QmxvY2s+PihzeW1ib2wsIHZhbHVlKTtcbiAgfVxuXG4gIGJpbmRFdmFsU2NvcGUobWFwOiBPcHRpb248RGljdDxTY29wZVNsb3Q+Pikge1xuICAgIHRoaXMuZXZhbFNjb3BlID0gbWFwO1xuICB9XG5cbiAgYmluZFBhcnRpYWxNYXAobWFwOiBEaWN0PFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPj4pIHtcbiAgICB0aGlzLnBhcnRpYWxNYXAgPSBtYXA7XG4gIH1cblxuICBiaW5kQ2FsbGVyU2NvcGUoc2NvcGU6IE9wdGlvbjxTY29wZT4pIHtcbiAgICB0aGlzLmNhbGxlclNjb3BlID0gc2NvcGU7XG4gIH1cblxuICBnZXRDYWxsZXJTY29wZSgpOiBPcHRpb248U2NvcGU+IHtcbiAgICByZXR1cm4gdGhpcy5jYWxsZXJTY29wZTtcbiAgfVxuXG4gIGNoaWxkKCk6IFNjb3BlIHtcbiAgICByZXR1cm4gbmV3IFNjb3BlKHRoaXMuc2xvdHMuc2xpY2UoKSwgdGhpcy5jYWxsZXJTY29wZSwgdGhpcy5ldmFsU2NvcGUsIHRoaXMucGFydGlhbE1hcCk7XG4gIH1cblxuICBwcml2YXRlIGdldDxUPihpbmRleDogbnVtYmVyKTogVCB7XG4gICAgaWYgKGluZGV4ID49IHRoaXMuc2xvdHMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgQlVHOiBjYW5ub3QgZ2V0ICQke2luZGV4fSBmcm9tIHNjb3BlOyBsZW5ndGg9JHt0aGlzLnNsb3RzLmxlbmd0aH1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zbG90c1tpbmRleF0gYXMgYW55IGFzIFQ7XG4gIH1cblxuICBwcml2YXRlIHNldDxUPihpbmRleDogbnVtYmVyLCB2YWx1ZTogVCk6IHZvaWQge1xuICAgIGlmIChpbmRleCA+PSB0aGlzLnNsb3RzLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYEJVRzogY2Fubm90IGdldCAkJHtpbmRleH0gZnJvbSBzY29wZTsgbGVuZ3RoPSR7dGhpcy5zbG90cy5sZW5ndGh9YCk7XG4gICAgfVxuXG4gICAgdGhpcy5zbG90c1tpbmRleF0gPSB2YWx1ZSBhcyBhbnk7XG4gIH1cbn1cblxuY2xhc3MgVHJhbnNhY3Rpb24ge1xuICBwdWJsaWMgc2NoZWR1bGVkSW5zdGFsbE1hbmFnZXJzOiBNb2RpZmllck1hbmFnZXI8T3BhcXVlPltdID0gW107XG4gIHB1YmxpYyBzY2hlZHVsZWRJbnN0YWxsTW9kaWZpZXJzOiBPYmplY3RbXSA9IFtdO1xuICBwdWJsaWMgc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJNYW5hZ2VyczogTW9kaWZpZXJNYW5hZ2VyPE9wYXF1ZT5bXSA9IFtdO1xuICBwdWJsaWMgc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJzOiBPYmplY3RbXSA9IFtdO1xuICBwdWJsaWMgY3JlYXRlZENvbXBvbmVudHM6IENvbXBvbmVudFtdID0gW107XG4gIHB1YmxpYyBjcmVhdGVkTWFuYWdlcnM6IENvbXBvbmVudE1hbmFnZXI8Q29tcG9uZW50PltdID0gW107XG4gIHB1YmxpYyB1cGRhdGVkQ29tcG9uZW50czogQ29tcG9uZW50W10gPSBbXTtcbiAgcHVibGljIHVwZGF0ZWRNYW5hZ2VyczogQ29tcG9uZW50TWFuYWdlcjxDb21wb25lbnQ+W10gPSBbXTtcbiAgcHVibGljIGRlc3RydWN0b3JzOiBEZXN0cm95YWJsZVtdID0gW107XG5cbiAgZGlkQ3JlYXRlPFQ+KGNvbXBvbmVudDogVCwgbWFuYWdlcjogQ29tcG9uZW50TWFuYWdlcjxUPikge1xuICAgIHRoaXMuY3JlYXRlZENvbXBvbmVudHMucHVzaChjb21wb25lbnQpO1xuICAgIHRoaXMuY3JlYXRlZE1hbmFnZXJzLnB1c2gobWFuYWdlcik7XG4gIH1cblxuICBkaWRVcGRhdGU8VD4oY29tcG9uZW50OiBULCBtYW5hZ2VyOiBDb21wb25lbnRNYW5hZ2VyPFQ+KSB7XG4gICAgdGhpcy51cGRhdGVkQ29tcG9uZW50cy5wdXNoKGNvbXBvbmVudCk7XG4gICAgdGhpcy51cGRhdGVkTWFuYWdlcnMucHVzaChtYW5hZ2VyKTtcbiAgfVxuXG4gIHNjaGVkdWxlSW5zdGFsbE1vZGlmaWVyPFQ+KG1vZGlmaWVyOiBULCBtYW5hZ2VyOiBNb2RpZmllck1hbmFnZXI8VD4pIHtcbiAgICB0aGlzLnNjaGVkdWxlZEluc3RhbGxNYW5hZ2Vycy5wdXNoKG1hbmFnZXIpO1xuICAgIHRoaXMuc2NoZWR1bGVkSW5zdGFsbE1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcbiAgfVxuXG4gIHNjaGVkdWxlVXBkYXRlTW9kaWZpZXI8VD4obW9kaWZpZXI6IFQsIG1hbmFnZXI6IE1vZGlmaWVyTWFuYWdlcjxUPikge1xuICAgIHRoaXMuc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJNYW5hZ2Vycy5wdXNoKG1hbmFnZXIpO1xuICAgIHRoaXMuc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJzLnB1c2gobW9kaWZpZXIpO1xuICB9XG5cbiAgZGlkRGVzdHJveShkOiBEZXN0cm95YWJsZSkge1xuICAgIHRoaXMuZGVzdHJ1Y3RvcnMucHVzaChkKTtcbiAgfVxuXG4gIGNvbW1pdCgpIHtcbiAgICBsZXQgeyBjcmVhdGVkQ29tcG9uZW50cywgY3JlYXRlZE1hbmFnZXJzIH0gPSB0aGlzO1xuXG4gICAgZm9yIChsZXQgaT0wOyBpPGNyZWF0ZWRDb21wb25lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgY29tcG9uZW50ID0gY3JlYXRlZENvbXBvbmVudHNbaV07XG4gICAgICBsZXQgbWFuYWdlciA9IGNyZWF0ZWRNYW5hZ2Vyc1tpXTtcbiAgICAgIG1hbmFnZXIuZGlkQ3JlYXRlKGNvbXBvbmVudCk7XG4gICAgfVxuXG4gICAgbGV0IHsgdXBkYXRlZENvbXBvbmVudHMsIHVwZGF0ZWRNYW5hZ2VycyB9ID0gdGhpcztcblxuICAgIGZvciAobGV0IGk9MDsgaTx1cGRhdGVkQ29tcG9uZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IGNvbXBvbmVudCA9IHVwZGF0ZWRDb21wb25lbnRzW2ldO1xuICAgICAgbGV0IG1hbmFnZXIgPSB1cGRhdGVkTWFuYWdlcnNbaV07XG4gICAgICBtYW5hZ2VyLmRpZFVwZGF0ZShjb21wb25lbnQpO1xuICAgIH1cblxuICAgIGxldCB7IGRlc3RydWN0b3JzIH0gPSB0aGlzO1xuXG4gICAgZm9yIChsZXQgaT0wOyBpPGRlc3RydWN0b3JzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBkZXN0cnVjdG9yc1tpXS5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgbGV0IHsgc2NoZWR1bGVkSW5zdGFsbE1hbmFnZXJzLCBzY2hlZHVsZWRJbnN0YWxsTW9kaWZpZXJzIH0gPSB0aGlzO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzY2hlZHVsZWRJbnN0YWxsTWFuYWdlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBtYW5hZ2VyID0gc2NoZWR1bGVkSW5zdGFsbE1hbmFnZXJzW2ldO1xuICAgICAgbGV0IG1vZGlmaWVyID0gc2NoZWR1bGVkSW5zdGFsbE1vZGlmaWVyc1tpXTtcbiAgICAgIG1hbmFnZXIuaW5zdGFsbChtb2RpZmllcik7XG4gICAgfVxuXG4gICAgbGV0IHsgc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJNYW5hZ2Vycywgc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJzIH0gPSB0aGlzO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzY2hlZHVsZWRVcGRhdGVNb2RpZmllck1hbmFnZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgbWFuYWdlciA9IHNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVyTWFuYWdlcnNbaV07XG4gICAgICBsZXQgbW9kaWZpZXIgPSBzY2hlZHVsZWRVcGRhdGVNb2RpZmllcnNbaV07XG4gICAgICBtYW5hZ2VyLnVwZGF0ZShtb2RpZmllcik7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPcGNvZGUge1xuICBwdWJsaWMgb2Zmc2V0ID0gMDtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhcnJheTogVWludDMyQXJyYXkgfCBBcnJheTxudW1iZXI+KSB7fVxuXG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiB0aGlzLmFycmF5W3RoaXMub2Zmc2V0XTtcbiAgfVxuXG4gIGdldCBvcDEoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXJyYXlbdGhpcy5vZmZzZXQgKyAxXTtcbiAgfVxuXG4gIGdldCBvcDIoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXJyYXlbdGhpcy5vZmZzZXQgKyAyXTtcbiAgfVxuXG4gIGdldCBvcDMoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXJyYXlbdGhpcy5vZmZzZXQgKyAzXTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJvZ3JhbSB7XG4gIFtrZXk6IG51bWJlcl06IG5ldmVyO1xuXG4gIHByaXZhdGUgb3Bjb2RlczogbnVtYmVyW10gPSBbXTtcbiAgcHJpdmF0ZSBfb2Zmc2V0ID0gMDtcbiAgcHJpdmF0ZSBfb3Bjb2RlOiBPcGNvZGU7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5fb3Bjb2RlID0gbmV3IE9wY29kZSh0aGlzLm9wY29kZXMpO1xuICB9XG5cbiAgZ2V0IG5leHQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fb2Zmc2V0O1xuICB9XG5cbiAgZ2V0IGN1cnJlbnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fb2Zmc2V0IC0gNDtcbiAgfVxuXG4gIG9wY29kZShvZmZzZXQ6IG51bWJlcik6IE9wY29kZSB7XG4gICAgdGhpcy5fb3Bjb2RlLm9mZnNldCA9IG9mZnNldDtcbiAgICByZXR1cm4gdGhpcy5fb3Bjb2RlO1xuICB9XG5cbiAgc2V0KHBvczogbnVtYmVyLCB0eXBlOiBudW1iZXIsIG9wMSA9IDAsIG9wMiA9IDAsIG9wMyA9IDApIHtcbiAgICB0aGlzLm9wY29kZXNbcG9zXSA9IHR5cGU7XG4gICAgdGhpcy5vcGNvZGVzW3BvcyArIDFdID0gb3AxO1xuICAgIHRoaXMub3Bjb2Rlc1twb3MgKyAyXSA9IG9wMjtcbiAgICB0aGlzLm9wY29kZXNbcG9zICsgM10gPSBvcDM7XG4gIH1cblxuICBwdXNoKHR5cGU6IG51bWJlciwgb3AxID0gMCwgb3AyID0gMCwgb3AzID0gMCk6IG51bWJlciB7XG4gICAgbGV0IG9mZnNldCA9IHRoaXMuX29mZnNldDtcbiAgICB0aGlzLm9wY29kZXNbdGhpcy5fb2Zmc2V0KytdID0gdHlwZTtcbiAgICB0aGlzLm9wY29kZXNbdGhpcy5fb2Zmc2V0KytdID0gb3AxO1xuICAgIHRoaXMub3Bjb2Rlc1t0aGlzLl9vZmZzZXQrK10gPSBvcDI7XG4gICAgdGhpcy5vcGNvZGVzW3RoaXMuX29mZnNldCsrXSA9IG9wMztcbiAgICByZXR1cm4gb2Zmc2V0O1xuICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBFbnZpcm9ubWVudCB7XG4gIHByb3RlY3RlZCB1cGRhdGVPcGVyYXRpb25zOiBET01DaGFuZ2VzO1xuICBwcm90ZWN0ZWQgYXBwZW5kT3BlcmF0aW9uczogRE9NVHJlZUNvbnN0cnVjdGlvbjtcbiAgcHJpdmF0ZSBfbWFjcm9zOiBPcHRpb248eyBibG9ja3M6IEJsb2NrcywgaW5saW5lczogSW5saW5lcyB9PiA9IG51bGw7XG4gIHByaXZhdGUgX3RyYW5zYWN0aW9uOiBPcHRpb248VHJhbnNhY3Rpb24+ID0gbnVsbDtcbiAgcHVibGljIGNvbnN0YW50czogQ29uc3RhbnRzID0gbmV3IENvbnN0YW50cygpO1xuICBwdWJsaWMgcHJvZ3JhbSA9IG5ldyBQcm9ncmFtKCk7XG5cbiAgY29uc3RydWN0b3IoeyBhcHBlbmRPcGVyYXRpb25zLCB1cGRhdGVPcGVyYXRpb25zIH06IHsgYXBwZW5kT3BlcmF0aW9uczogRE9NVHJlZUNvbnN0cnVjdGlvbiwgdXBkYXRlT3BlcmF0aW9uczogRE9NQ2hhbmdlcyB9KSB7XG4gICAgdGhpcy5hcHBlbmRPcGVyYXRpb25zID0gYXBwZW5kT3BlcmF0aW9ucztcbiAgICB0aGlzLnVwZGF0ZU9wZXJhdGlvbnMgPSB1cGRhdGVPcGVyYXRpb25zO1xuICB9XG5cbiAgdG9Db25kaXRpb25hbFJlZmVyZW5jZShyZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+KTogUmVmZXJlbmNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gbmV3IENvbmRpdGlvbmFsUmVmZXJlbmNlKHJlZmVyZW5jZSk7XG4gIH1cblxuICBhYnN0cmFjdCBpdGVyYWJsZUZvcihyZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+LCBrZXk6IHN0cmluZyk6IE9wYXF1ZUl0ZXJhYmxlO1xuICBhYnN0cmFjdCBwcm90b2NvbEZvclVSTChzOiBzdHJpbmcpOiBzdHJpbmc7XG5cbiAgZ2V0QXBwZW5kT3BlcmF0aW9ucygpOiBET01UcmVlQ29uc3RydWN0aW9uIHsgcmV0dXJuIHRoaXMuYXBwZW5kT3BlcmF0aW9uczsgfVxuICBnZXRET00oKTogRE9NQ2hhbmdlcyB7IHJldHVybiB0aGlzLnVwZGF0ZU9wZXJhdGlvbnM7IH1cblxuICBnZXRJZGVudGl0eShvYmplY3Q6IEhhc0d1aWQpOiBzdHJpbmcge1xuICAgIHJldHVybiBlbnN1cmVHdWlkKG9iamVjdCkgKyAnJztcbiAgfVxuXG4gIGJlZ2luKCkge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKCk7XG4gIH1cblxuICBwcml2YXRlIGdldCB0cmFuc2FjdGlvbigpOiBUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgZGlkQ3JlYXRlPFQ+KGNvbXBvbmVudDogVCwgbWFuYWdlcjogQ29tcG9uZW50TWFuYWdlcjxUPikge1xuICAgIHRoaXMudHJhbnNhY3Rpb24uZGlkQ3JlYXRlKGNvbXBvbmVudCwgbWFuYWdlcik7XG4gIH1cblxuICBkaWRVcGRhdGU8VD4oY29tcG9uZW50OiBULCBtYW5hZ2VyOiBDb21wb25lbnRNYW5hZ2VyPFQ+KSB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5kaWRVcGRhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcbiAgfVxuXG4gIHNjaGVkdWxlSW5zdGFsbE1vZGlmaWVyPFQ+KG1vZGlmaWVyOiBULCBtYW5hZ2VyOiBNb2RpZmllck1hbmFnZXI8VD4pIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNjaGVkdWxlSW5zdGFsbE1vZGlmaWVyKG1vZGlmaWVyLCBtYW5hZ2VyKTtcbiAgfVxuXG4gIHNjaGVkdWxlVXBkYXRlTW9kaWZpZXI8VD4obW9kaWZpZXI6IFQsIG1hbmFnZXI6IE1vZGlmaWVyTWFuYWdlcjxUPikge1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2NoZWR1bGVVcGRhdGVNb2RpZmllcihtb2RpZmllciwgbWFuYWdlcik7XG4gIH1cblxuICBkaWREZXN0cm95KGQ6IERlc3Ryb3lhYmxlKSB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5kaWREZXN0cm95KGQpO1xuICB9XG5cbiAgY29tbWl0KCkge1xuICAgIHRoaXMudHJhbnNhY3Rpb24uY29tbWl0KCk7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSBudWxsO1xuICB9XG5cbiAgYXR0cmlidXRlRm9yKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBhdHRyOiBzdHJpbmcsIGlzVHJ1c3Rpbmc6IGJvb2xlYW4sIG5hbWVzcGFjZT86IHN0cmluZyk6IEF0dHJpYnV0ZU1hbmFnZXIge1xuICAgIHJldHVybiBkZWZhdWx0TWFuYWdlcnMoZWxlbWVudCwgYXR0ciwgaXNUcnVzdGluZywgbmFtZXNwYWNlID09PSB1bmRlZmluZWQgPyBudWxsIDogbmFtZXNwYWNlKTtcbiAgfVxuXG4gIG1hY3JvcygpOiB7IGJsb2NrczogQmxvY2tzLCBpbmxpbmVzOiBJbmxpbmVzIH0ge1xuICAgIGxldCBtYWNyb3MgPSB0aGlzLl9tYWNyb3M7XG4gICAgaWYgKCFtYWNyb3MpIHtcbiAgICAgIHRoaXMuX21hY3JvcyA9IG1hY3JvcyA9IHRoaXMucG9wdWxhdGVCdWlsdGlucygpO1xuICAgIH1cblxuICAgIHJldHVybiBtYWNyb3M7XG4gIH1cblxuICBwb3B1bGF0ZUJ1aWx0aW5zKCk6IHsgYmxvY2tzOiBCbG9ja3MsIGlubGluZXM6IElubGluZXMgfSB7XG4gICAgcmV0dXJuIHBvcHVsYXRlQnVpbHRpbnMoKTtcbiAgfVxuXG4gIGFic3RyYWN0IGhhc0hlbHBlcihoZWxwZXJOYW1lOiBzdHJpbmcsIG1ldGE6IFRlbXBsYXRlTWV0YSk6IGJvb2xlYW47XG4gIGFic3RyYWN0IGxvb2t1cEhlbHBlcihoZWxwZXJOYW1lOiBzdHJpbmcsIG1ldGE6IFRlbXBsYXRlTWV0YSk6IEhlbHBlcjtcblxuICBhYnN0cmFjdCBoYXNNb2RpZmllcihtb2RpZmllck5hbWU6IHN0cmluZywgbWV0YTogVGVtcGxhdGVNZXRhKTogYm9vbGVhbjtcbiAgYWJzdHJhY3QgbG9va3VwTW9kaWZpZXIobW9kaWZpZXJOYW1lOiBzdHJpbmcsIG1ldGE6IFRlbXBsYXRlTWV0YSk6IE1vZGlmaWVyTWFuYWdlcjxPcGFxdWU+O1xuXG4gIGFic3RyYWN0IGhhc0NvbXBvbmVudERlZmluaXRpb24odGFnTmFtZTogc3RyaW5nLCBtZXRhOiBUZW1wbGF0ZU1ldGEpOiBib29sZWFuO1xuICBhYnN0cmFjdCBnZXRDb21wb25lbnREZWZpbml0aW9uKHRhZ05hbWU6IHN0cmluZywgbWV0YTogVGVtcGxhdGVNZXRhKTogQ29tcG9uZW50RGVmaW5pdGlvbjxPcGFxdWU+O1xuXG4gIGFic3RyYWN0IGhhc1BhcnRpYWwocGFydGlhbE5hbWU6IHN0cmluZywgbWV0YTogVGVtcGxhdGVNZXRhKTogYm9vbGVhbjtcbiAgYWJzdHJhY3QgbG9va3VwUGFydGlhbChQYXJ0aWFsTmFtZTogc3RyaW5nLCBtZXRhOiBUZW1wbGF0ZU1ldGEpOiBQYXJ0aWFsRGVmaW5pdGlvbjxUZW1wbGF0ZU1ldGE+O1xufVxuXG5leHBvcnQgZGVmYXVsdCBFbnZpcm9ubWVudDtcblxuZXhwb3J0IGludGVyZmFjZSBIZWxwZXIge1xuICAodm06IFB1YmxpY1ZNLCBhcmdzOiBJQXJndW1lbnRzKTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+O1xufVxuIl19

@@ -21,4 +21,2 @@ 'use strict';

var _opcodes = require('./opcodes');
var _functions = require('./syntax/functions');

@@ -44,3 +42,2 @@

let end = builder.finalize();
(0, _opcodes.debugSlice)(env, start, end);
compiledStatic = this.compiledStatic = new _blocks.CompiledStaticTemplate(start, end);

@@ -58,5 +55,2 @@ }

}
toJSON() {
return { GlimmerDebug: '<template>' };
}
}

@@ -189,2 +183,2 @@ exports.CompilableTemplate = CompilableTemplate;

exports.RawProgram = RawProgram;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNjYW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLEFBQU8sQUFBRSxBQUF1QixBQUFFLEFBQXNCLEFBQUUsQUFBTSxBQUFtQixBQUFDOztBQUNwRixBQUFPLEFBQUUsQUFBTyxBQUFFLEFBQU0sQUFBWSxBQUFDOztBQUdyQyxBQUFPLEFBQVUsQUFBVyxBQUFFLEFBQU0sQUFBZSxBQUFDOztBQUNwRCxBQUFPOztJQUFLLEFBQVUsQUFBTSxBQUFzQixBQUFDOztBQUVuRCxBQUFPLEFBQUUsQUFBVSxBQUFFLEFBQU0sQUFBVyxBQUFDOztBQUd2QyxBQUFPLEFBQ0wsQUFBVSxBQUNYLEFBQU0sQUFBb0IsQUFBQyxBQUk1QixBQUFNOzs7OzBCQUEyQixBQUErQixXQUFFLEFBQXNCO0FBQ3RGLEFBQVUsMEJBQUMsQUFBTyxRQUFDLEFBQVMsV0FBRSxBQUFPLEFBQUMsQUFBQyxBQUN6QztBQUFDLEFBT0QsQUFBTTs7QUFJSixnQkFBbUIsQUFBa0MsWUFBUyxBQUFjO0FBQXpELGFBQVUsYUFBVixBQUFVLEFBQXdCO0FBQVMsYUFBVyxjQUFYLEFBQVcsQUFBRztBQUhwRSxhQUFjLGlCQUFtQyxBQUFJLEFBQUM7QUFDdEQsYUFBZSxrQkFBdUMsQUFBSSxBQUFDLEFBRVk7QUFBQztBQUVoRixBQUFhLGtCQUFDLEFBQWdCO0FBQzVCLFlBQUksRUFBRSxBQUFjLEFBQUUsbUJBQUcsQUFBSSxBQUFDO0FBRTlCLEFBQUUsQUFBQyxZQUFDLENBQUMsQUFBYyxBQUFDLGdCQUFDLEFBQUM7QUFDcEIsZ0JBQUksQUFBTyxVQUFHLEFBQWlCLGtCQUFDLEFBQUksS0FBQyxBQUFVLFlBQUUsQUFBSSxLQUFDLEFBQVcsWUFBQyxBQUFJLE1BQUUsQUFBRyxBQUFDLEFBQUM7QUFFN0UsZ0JBQUksQUFBSyxRQUFHLEFBQU8sUUFBQyxBQUFLLEFBQUM7QUFDMUIsZ0JBQUksQUFBRyxNQUFH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QUFBUyxBQUU1STtBQUFDO0FBRUQsQUFBSTtBQUNGLFlBQUksQUFBVSxhQUFHLEFBQUksS0FBQyxBQUFjLEFBQUUsQUFBQztBQUN2QyxBQUFNLGVBQUMsSUFBSSxBQUFrQixtQkFBQyxBQUFVLFlBQUUsRUFBRSxBQUFPLFNBQUUsQUFBSSxLQUFDLEFBQU8sU0FBRSxBQUFPLFNBQUUsQUFBSSxLQUFDLEFBQU8sU0FBRSxBQUFJLE1BQUUsQUFBSSxLQUFDLEFBQUksQUFBRSxBQUFDLEFBQUMsQUFDL0c7QUFBQyxBQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcGlsZWREeW5hbWljVGVtcGxhdGUsIENvbXBpbGVkU3RhdGljVGVtcGxhdGUgfSBmcm9tICcuL2NvbXBpbGVkL2Jsb2Nrcyc7XG5pbXBvcnQgeyBidWlsZGVyIH0gZnJvbSAnLi9jb21waWxlcic7XG5pbXBvcnQgT3Bjb2RlQnVpbGRlciBmcm9tICcuL2NvbXBpbGVkL29wY29kZXMvYnVpbGRlcic7XG5pbXBvcnQgRW52aXJvbm1lbnQgZnJvbSAnLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBPcHRpb24sIEVNUFRZX0FSUkFZIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgKiBhcyBXaXJlRm9ybWF0IGZyb20gJ0BnbGltbWVyL3dpcmUtZm9ybWF0JztcbmltcG9ydCB7IE9wYXF1ZSwgU3ltYm9sVGFibGUsIFByb2dyYW1TeW1ib2xUYWJsZSwgQmxvY2tTeW1ib2xUYWJsZSB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZGVidWdTbGljZSB9IGZyb20gJy4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBDb21waWxhdGlvbk1ldGEgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcblxuaW1wb3J0IHtcbiAgU1RBVEVNRU5UU1xufSBmcm9tICcuL3N5bnRheC9mdW5jdGlvbnMnO1xuXG5leHBvcnQgdHlwZSBEZXNlcmlhbGl6ZWRTdGF0ZW1lbnQgPSBXaXJlRm9ybWF0LlN0YXRlbWVudCB8IFdpcmVGb3JtYXQuU3RhdGVtZW50cy5BdHRyaWJ1dGUgfCBXaXJlRm9ybWF0LlN0YXRlbWVudHMuQXJndW1lbnQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21waWxlU3RhdGVtZW50KHN0YXRlbWVudDogV2lyZUZvcm1hdC5TdGF0ZW1lbnQsIGJ1aWxkZXI6IE9wY29kZUJ1aWxkZXIpIHtcbiAgU1RBVEVNRU5UUy5jb21waWxlKHN0YXRlbWVudCwgYnVpbGRlcik7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2Nhbm5lZFRlbXBsYXRlPFMgZXh0ZW5kcyBTeW1ib2xUYWJsZT4ge1xuICBjb21waWxlU3RhdGljKGVudjogRW52aXJvbm1lbnQpOiBDb21waWxlZFN0YXRpY1RlbXBsYXRlO1xuICBjb21waWxlRHluYW1pYyhlbnY6IEVudmlyb25tZW50KTogQ29tcGlsZWREeW5hbWljVGVtcGxhdGU8Uz47XG59XG5cbmV4cG9ydCBjbGFzcyBDb21waWxhYmxlVGVtcGxhdGU8UyBleHRlbmRzIFN5bWJvbFRhYmxlPiBpbXBsZW1lbnRzIFNjYW5uZWRUZW1wbGF0ZTxTPiB7XG4gIHByaXZhdGUgY29tcGlsZWRTdGF0aWM6IE9wdGlvbjxDb21waWxlZFN0YXRpY1RlbXBsYXRlPiA9IG51bGw7XG4gIHByaXZhdGUgY29tcGlsZWREeW5hbWljOiBPcHRpb248Q29tcGlsZWREeW5hbWljVGVtcGxhdGU8Uz4+ID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgc3RhdGVtZW50czogV2lyZUZvcm1hdC5TdGF0ZW1lbnRbXSwgcHVibGljIHN5bWJvbFRhYmxlOiBTKSB7fVxuXG4gIGNvbXBpbGVTdGF0aWMoZW52OiBFbnZpcm9ubWVudCk6IENvbXBpbGVkU3RhdGljVGVtcGxhdGUge1xuICAgIGxldCB7IGNvbXBpbGVkU3RhdGljIH0gPSB0aGlzO1xuXG4gICAgaWYgKCFjb21waWxlZFN0YXRpYykge1xuICAgICAgbGV0IGJ1aWxkZXIgPSBjb21waWxlU3RhdGVtZW50cyh0aGlzLnN0YXRlbWVudHMsIHRoaXMuc3ltYm9sVGFibGUubWV0YSwgZW52KTtcblxuICAgICAgbGV0IHN0YXJ0ID0gYnVpbGRlci5zdGFydDtcbiAgICAgIGxldCBlbmQgPSBidWlsZGVyLmZpbmFsaXplKCk7XG5cbiAgICAgIGRlYnVnU2xpY2UoZW52LCBzdGFydCwgZW5kKTtcblxuICAgICAgY29tcGlsZWRTdGF0aWMgPSB0aGlzLmNvbXBpbGVkU3RhdGljID0gbmV3IENvbXBpbGVkU3RhdGljVGVtcGxhdGUoc3RhcnQsIGVuZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBpbGVkU3RhdGljO1xuICB9XG5cbiAgY29tcGlsZUR5bmFtaWMoZW52OiBFbnZpcm9ubWVudCk6IENvbXBpbGVkRHluYW1pY1RlbXBsYXRlPFM+IHtcbiAgICBsZXQgeyBjb21waWxlZER5bmFtaWMgfSA9IHRoaXM7XG5cbiAgICBpZiAoIWNvbXBpbGVkRHluYW1pYykge1xuICAgICAgbGV0IHN0YXRpY0Jsb2NrID0gdGhpcy5jb21waWxlU3RhdGljKGVudik7XG4gICAgICBjb21waWxlZER5bmFtaWMgPSBuZXcgQ29tcGlsZWREeW5hbWljVGVtcGxhdGUoc3RhdGljQmxvY2suc3RhcnQsIHN0YXRpY0Jsb2NrLmVuZCwgdGhpcy5zeW1ib2xUYWJsZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBpbGVkRHluYW1pYztcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICByZXR1cm4geyBHbGltbWVyRGVidWc6ICc8dGVtcGxhdGU+JyB9O1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIFRlbXBsYXRlID0gQ29tcGlsYWJsZVRlbXBsYXRlPFN5bWJvbFRhYmxlPjtcbmV4cG9ydCB0eXBlIFByb2dyYW0gPSBDb21waWxhYmxlVGVtcGxhdGU8UHJvZ3JhbVN5bWJvbFRhYmxlPjtcbmV4cG9ydCB0eXBlIEJsb2NrID0gQ29tcGlsYWJsZVRlbXBsYXRlPEJsb2NrU3ltYm9sVGFibGU+O1xuXG5leHBvcnQgdHlwZSBTY2FubmVkUHJvZ3JhbSA9IFNjYW5uZWRUZW1wbGF0ZTxQcm9ncmFtU3ltYm9sVGFibGU+O1xuZXhwb3J0IHR5cGUgU2Nhbm5lZEJsb2NrID0gU2Nhbm5lZFRlbXBsYXRlPEJsb2NrU3ltYm9sVGFibGU+O1xuXG5mdW5jdGlvbiBjb21waWxlU3RhdGVtZW50cyhzdGF0ZW1lbnRzOiBXaXJlRm9ybWF0LlN0YXRlbWVudFtdLCBtZXRhOiBDb21waWxhdGlvbk1ldGEsIGVudjogRW52aXJvbm1lbnQpIHtcbiAgbGV0IGIgPSBidWlsZGVyKGVudiwgbWV0YSk7XG5cbiAgZm9yIChsZXQgc3RhdGVtZW50IG9mIHN0YXRlbWVudHMpIHtcbiAgICBjb21waWxlU3RhdGVtZW50KHN0YXRlbWVudCwgYik7XG4gIH1cblxuICByZXR1cm4gYjtcbn1cblxuZXhwb3J0IGNvbnN0IEFUVFJTX0JMT0NLID0gJyZhdHRycyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBsYXlvdXQocHJlbHVkZTogV2lyZUZvcm1hdC5TdGF0ZW1lbnRbXSwgaGVhZDogV2lyZUZvcm1hdC5TdGF0ZW1lbnRbXSwgYm9keTogV2lyZUZvcm1hdC5TdGF0ZW1lbnRbXSwgc3ltYm9sVGFibGU6IFByb2dyYW1TeW1ib2xUYWJsZSkge1xuICBsZXQgWywgdGFnXSA9IHByZWx1ZGUucG9wKCkgYXMgV2lyZUZvcm1hdC5TdGF0ZW1lbnRzLk9wZW5FbGVtZW50O1xuICBwcmVsdWRlLnB1c2goW09wcy5DbGllbnRTaWRlU3RhdGVtZW50LCBDbGllbnRTaWRlLk9wcy5PcGVuQ29tcG9uZW50RWxlbWVudCwgdGFnXSk7XG4gIHByZWx1ZGUucHVzaChbT3BzLkNsaWVudFNpZGVTdGF0ZW1lbnQsIENsaWVudFNpZGUuT3BzLkRpZENyZWF0ZUVsZW1lbnRdKTtcblxuICBsZXQgYXR0cnNTeW1ib2wgPSBzeW1ib2xUYWJsZS5zeW1ib2xzLmxlbmd0aCArIDE7XG4gIHN5bWJvbFRhYmxlLnN5bWJvbHMucHVzaChBVFRSU19CTE9DSyk7XG5cbiAgbGV0IHN0YXRlbWVudHMgPSBwcmVsdWRlXG4gICAgLmNvbmNhdChbW09wcy5ZaWVsZCwgYXR0cnNTeW1ib2wsIEVNUFRZX0FSUkFZXV0pXG4gICAgLmNvbmNhdChoZWFkKVxuICAgIC5jb25jYXQoYm9keSlcbiAgICAuY29uY2F0KFtbT3BzLkNsaWVudFNpZGVTdGF0ZW1lbnQsIENsaWVudFNpZGUuT3BzLkRpZFJlbmRlckxheW91dF1dKTtcblxuICByZXR1cm4gbmV3IENvbXBpbGFibGVUZW1wbGF0ZShzdGF0ZW1lbnRzLCBzeW1ib2xUYWJsZSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNjYW5uZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJsb2NrOiBXaXJlRm9ybWF0LlNlcmlhbGl6ZWRUZW1wbGF0ZUJsb2NrLCBwcml2YXRlIGVudjogRW52aXJvbm1lbnQpIHtcbiAgfVxuXG4gIHNjYW5FbnRyeVBvaW50KG1ldGE6IENvbXBpbGF0aW9uTWV0YSk6IFByb2dyYW0ge1xuICAgIGxldCB7IGJsb2NrLCBlbnYgfSA9IHRoaXM7XG5cbiAgICBsZXQgc3RhdGVtZW50cztcbiAgICBpZiAoYmxvY2sucHJlbHVkZSAmJiBibG9jay5oZWFkKSB7XG4gICAgICBzdGF0ZW1lbnRzID0gYmxvY2sucHJlbHVkZS5jb25jYXQoYmxvY2suaGVhZCkuY29uY2F0KGJsb2NrLnN0YXRlbWVudHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZW1lbnRzID0gYmxvY2suc3RhdGVtZW50cztcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFJhd1Byb2dyYW0oZW52LCBtZXRhLCBzdGF0ZW1lbnRzLCBibG9jay5zeW1ib2xzLCBibG9jay5oYXNFdmFsKS5zY2FuKCk7XG4gIH1cblxuICBzY2FuQmxvY2sobWV0YTogQ29tcGlsYXRpb25NZXRhKTogQmxvY2sge1xuICAgIGxldCB7IGJsb2NrLCBlbnYgfSA9IHRoaXM7XG5cbiAgICBsZXQgc3RhdGVtZW50cztcbiAgICBpZiAoYmxvY2sucHJlbHVkZSAmJiBibG9jay5oZWFkKSB7XG4gICAgICBzdGF0ZW1lbnRzID0gYmxvY2sucHJlbHVkZS5jb25jYXQoYmxvY2suaGVhZCkuY29uY2F0KGJsb2NrLnN0YXRlbWVudHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZW1lbnRzID0gYmxvY2suc3RhdGVtZW50cztcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFJhd0lubGluZUJsb2NrKGVudiwgbWV0YSwgc3RhdGVtZW50cywgRU1QVFlfQVJSQVkpLnNjYW4oKTtcbiAgfVxuXG4gIHNjYW5MYXlvdXQobWV0YTogQ29tcGlsYXRpb25NZXRhLCBhdHRyczogV2lyZUZvcm1hdC5TdGF0ZW1lbnRzLkF0dHJpYnV0ZVtdKTogUHJvZ3JhbSB7XG4gICAgbGV0IHsgYmxvY2sgfSA9IHRoaXM7XG4gICAgbGV0IHsgc3ltYm9scywgaGFzRXZhbCB9ID0gYmxvY2s7XG5cbiAgICBpZiAoIWJsb2NrLnByZWx1ZGUgfHwgIWJsb2NrLmhlYWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQSBsYXlvdXQgbXVzdCBoYXZlIGEgdG9wLWxldmVsIGVsZW1lbnRgKTtcbiAgICB9XG5cbiAgICBsZXQgc3ltYm9sVGFibGUgPSB7IG1ldGEsIGhhc0V2YWwsIHN5bWJvbHMgfTtcbiAgICBsZXQgeyBzdGF0ZW1lbnRzOiBwcmVsdWRlIH0gPSBzY2FuQmxvY2soeyBzdGF0ZW1lbnRzOiBibG9jay5wcmVsdWRlLCBwYXJhbWV0ZXJzOiBFTVBUWV9BUlJBWSB9LCBtZXRhLCB0aGlzLmVudik7XG4gICAgbGV0IHsgc3RhdGVtZW50czogaGVhZCB9ID0gc2NhbkJsb2NrKHsgc3RhdGVtZW50czogWy4uLmF0dHJzLCAuLi5ibG9jay5oZWFkXSwgcGFyYW1ldGVyczogRU1QVFlfQVJSQVkgfSwgbWV0YSwgdGhpcy5lbnYpO1xuICAgIGxldCB7IHN0YXRlbWVudHM6IGJvZHkgfSA9IHNjYW5CbG9jayh7IHN0YXRlbWVudHM6IGJsb2NrLnN0YXRlbWVudHMsIHBhcmFtZXRlcnM6IEVNUFRZX0FSUkFZIH0sIG1ldGEsIHRoaXMuZW52KTtcblxuICAgIHJldHVybiBsYXlvdXQocHJlbHVkZSwgaGVhZCwgYm9keSwgc3ltYm9sVGFibGUpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzY2FuQmxvY2soYmxvY2s6IFdpcmVGb3JtYXQuU2VyaWFsaXplZElubGluZUJsb2NrLCBtZXRhOiBDb21waWxhdGlvbk1ldGEsIGVudjogRW52aXJvbm1lbnQpOiBCbG9jayB7XG4gIHJldHVybiBuZXcgUmF3SW5saW5lQmxvY2soZW52LCBtZXRhLCBibG9jay5zdGF0ZW1lbnRzLCBFTVBUWV9BUlJBWSkuc2NhbigpO1xufVxuXG5pbXBvcnQgeyBQdWJsaWNWTSB9IGZyb20gJy4vdm0nO1xuaW1wb3J0IHsgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5cbmV4cG9ydCBuYW1lc3BhY2UgQ2xpZW50U2lkZSB7XG4gIGV4cG9ydCBlbnVtIE9wcyB7XG4gICAgT3BlbkNvbXBvbmVudEVsZW1lbnQsXG4gICAgRGlkQ3JlYXRlRWxlbWVudCxcbiAgICBEaWRSZW5kZXJMYXlvdXQsXG4gICAgT3B0aW1pemVkQXBwZW5kLFxuICAgIFVub3B0aW1pemVkQXBwZW5kLFxuICAgIFN0YXRpY1BhcnRpYWwsXG4gICAgRHluYW1pY1BhcnRpYWwsXG4gICAgTmVzdGVkQmxvY2ssXG4gICAgU2Nhbm5lZEJsb2NrLFxuXG4gICAgRnVuY3Rpb25FeHByZXNzaW9uXG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gaXM8VCBleHRlbmRzIGFueVtdPih2YXJpYW50OiBPcHMpOiAodmFsdWU6IGFueVtdKSA9PiB2YWx1ZSBpcyBUIHtcbiAgICByZXR1cm4gZnVuY3Rpb24odmFsdWU6IGFueVtdKTogdmFsdWUgaXMgVCB7XG4gICAgICByZXR1cm4gdmFsdWVbMF0gPT09IFdpcmVGb3JtYXQuT3BzLkNsaWVudFNpZGVFeHByZXNzaW9uIHx8IHZhbHVlWzBdID09PSBXaXJlRm9ybWF0Lk9wcy5DbGllbnRTaWRlU3RhdGVtZW50ICYmIHZhbHVlWzFdID09PSB2YXJpYW50O1xuICAgIH07XG4gIH1cblxuICBpbXBvcnQgQ2xpZW50U2lkZVN0YXRlbWVudCA9IFdpcmVGb3JtYXQuT3BzLkNsaWVudFNpZGVTdGF0ZW1lbnQ7XG4gIGltcG9ydCBDbGllbnRTaWRlRXhwcmVzc2lvbiA9IFdpcmVGb3JtYXQuT3BzLkNsaWVudFNpZGVFeHByZXNzaW9uO1xuXG4gIGV4cG9ydCB0eXBlIE9wZW5Db21wb25lbnRFbGVtZW50ICA9IFtDbGllbnRTaWRlU3RhdGVtZW50LCBPcHMuT3BlbkNvbXBvbmVudEVsZW1lbnQsIHN0cmluZ107XG4gIGV4cG9ydCB0eXBlIERpZENyZWF0ZUVsZW1lbnQgICAgICA9IFtDbGllbnRTaWRlU3RhdGVtZW50LCBPcHMuRGlkQ3JlYXRlRWxlbWVudF07XG4gIGV4cG9ydCB0eXBlIERpZFJlbmRlckxheW91dCAgICAgICA9IFtDbGllbnRTaWRlU3RhdGVtZW50LCBPcHMuRGlkUmVuZGVyTGF5b3V0XTtcbiAgZXhwb3J0IHR5cGUgT3B0aW1pemVkQXBwZW5kICAgICAgID0gW0NsaWVudFNpZGVTdGF0ZW1lbnQsIE9wcy5PcHRpbWl6ZWRBcHBlbmQsIFdpcmVGb3JtYXQuRXhwcmVzc2lvbiwgYm9vbGVhbl07XG4gIGV4cG9ydCB0eXBlIFVub3B0aW1pemVkQXBwZW5kICAgICA9IFtDbGllbnRTaWRlU3RhdGVtZW50LCBPcHMuVW5vcHRpbWl6ZWRBcHBlbmQsIFdpcmVGb3JtYXQuRXhwcmVzc2lvbiwgYm9vbGVhbl07XG4gIGV4cG9ydCB0eXBlIFN0YXRpY1BhcnRpYWwgICAgICAgICA9IFtDbGllbnRTaWRlU3RhdGVtZW50LCBPcHMuU3RhdGljUGFydGlhbCwgc3RyaW5nLCBXaXJlRm9ybWF0LkNvcmUuRXZhbEluZm9dO1xuICBleHBvcnQgdHlwZSBEeW5hbWljUGFydGlhbCAgICAgICAgPSBbQ2xpZW50U2lkZVN0YXRlbWVudCwgT3BzLkR5bmFtaWNQYXJ0aWFsLCBXaXJlRm9ybWF0LkV4cHJlc3Npb24sIFdpcmVGb3JtYXQuQ29yZS5FdmFsSW5mb107XG5cbiAgZXhwb3J0IHR5cGUgRnVuY3Rpb25FeHByZXNzaW9uICAgID0gW0NsaWVudFNpZGVFeHByZXNzaW9uLCBPcHMuRnVuY3Rpb25FeHByZXNzaW9uLCBGdW5jdGlvbkV4cHJlc3Npb25DYWxsYmFjazxPcGFxdWU+XTtcblxuICBleHBvcnQgdHlwZSBGdW5jdGlvbkV4cHJlc3Npb25DYWxsYmFjazxUPiA9IChWTTogUHVibGljVk0sIHN5bWJvbFRhYmxlOiBTeW1ib2xUYWJsZSkgPT4gVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxUPjtcblxuICBleHBvcnQgdHlwZSBDbGllbnRTaWRlU3RhdGVtZW50ID1cbiAgICB8IE9wZW5Db21wb25lbnRFbGVtZW50XG4gICAgfCBEaWRDcmVhdGVFbGVtZW50XG4gICAgfCBEaWRSZW5kZXJMYXlvdXRcbiAgICB8IE9wdGltaXplZEFwcGVuZFxuICAgIHwgVW5vcHRpbWl6ZWRBcHBlbmRcbiAgICB8IFN0YXRpY1BhcnRpYWxcbiAgICB8IER5bmFtaWNQYXJ0aWFsXG4gICAgO1xuXG4gIGV4cG9ydCB0eXBlIENsaWVudFNpZGVFeHByZXNzaW9uID1cbiAgICB8IEZ1bmN0aW9uRXhwcmVzc2lvblxuICAgIDtcbn1cblxuY29uc3QgeyBPcHMgfSA9IFdpcmVGb3JtYXQ7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBSYXdCbG9jazxTIGV4dGVuZHMgU3ltYm9sVGFibGU+IHtcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGVudjogRW52aXJvbm1lbnQsIHByb3RlY3RlZCBtZXRhOiBDb21waWxhdGlvbk1ldGEsIHByaXZhdGUgc3RhdGVtZW50czogV2lyZUZvcm1hdC5TdGF0ZW1lbnRbXSkge31cblxuICBzY2FuU3RhdGVtZW50cygpOiBXaXJlRm9ybWF0LlN0YXRlbWVudFtdIHtcbiAgICBsZXQgYnVmZmVyOiBXaXJlRm9ybWF0LlN0YXRlbWVudFtdID0gW107XG4gICAgbGV0IHN0YXRlbWVudHMgPSB0aGlzLnN0YXRlbWVudHM7XG4gICAgZm9yIChsZXQgc3RhdGVtZW50IG9mIHN0YXRlbWVudHMpIHtcbiAgICAgIGJ1ZmZlci5wdXNoKHN0YXRlbWVudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJ1ZmZlcjtcbiAgfVxuXG4gIGNoaWxkKGJsb2NrOiBPcHRpb248V2lyZUZvcm1hdC5TZXJpYWxpemVkSW5saW5lQmxvY2s+KTogT3B0aW9uPFJhd0lubGluZUJsb2NrPiB7XG4gICAgaWYgKCFibG9jaykgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIG5ldyBSYXdJbmxpbmVCbG9jayh0aGlzLmVudiwgdGhpcy5tZXRhLCBibG9jay5zdGF0ZW1lbnRzLCBibG9jay5wYXJhbWV0ZXJzKTtcbiAgfVxuXG4gIGFic3RyYWN0IHNjYW4oKTogQ29tcGlsYWJsZVRlbXBsYXRlPFM+O1xufVxuXG5leHBvcnQgY2xhc3MgUmF3SW5saW5lQmxvY2sgZXh0ZW5kcyBSYXdCbG9jazxCbG9ja1N5bWJvbFRhYmxlPiB7XG4gIGNvbnN0cnVjdG9yKGVudjogRW52aXJvbm1lbnQsIG1ldGE6IENvbXBpbGF0aW9uTWV0YSwgc3RhdGVtZW50czogV2lyZUZvcm1hdC5TdGF0ZW1lbnRbXSwgcHJpdmF0ZSBwYXJhbWV0ZXJzOiBudW1iZXJbXSkge1xuICAgIHN1cGVyKGVudiwgbWV0YSwgc3RhdGVtZW50cyk7XG4gIH1cblxuICBzY2FuKCk6IEJsb2NrIHtcbiAgICBsZXQgc3RhdGVtZW50cyA9IHRoaXMuc2NhblN0YXRlbWVudHMoKTtcbiAgICByZXR1cm4gbmV3IENvbXBpbGFibGVUZW1wbGF0ZShzdGF0ZW1lbnRzLCB7IHBhcmFtZXRlcnM6IHRoaXMucGFyYW1ldGVycywgbWV0YTogdGhpcy5tZXRhIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSYXdQcm9ncmFtIGV4dGVuZHMgUmF3QmxvY2s8UHJvZ3JhbVN5bWJvbFRhYmxlPiB7XG4gIGNvbnN0cnVjdG9yKGVudjogRW52aXJvbm1lbnQsIG1ldGE6IENvbXBpbGF0aW9uTWV0YSwgc3RhdGVtZW50czogV2lyZUZvcm1hdC5TdGF0ZW1lbnRbXSwgcHJpdmF0ZSBzeW1ib2xzOiBzdHJpbmdbXSwgcHJpdmF0ZSBoYXNFdmFsOiBib29sZWFuKSB7XG4gICAgc3VwZXIoZW52LCBtZXRhLCBzdGF0ZW1lbnRzKTtcbiAgfVxuXG4gIHNjYW4oKTogUHJvZ3JhbSB7XG4gICAgbGV0IHN0YXRlbWVudHMgPSB0aGlzLnNjYW5TdGF0ZW1lbnRzKCk7XG4gICAgcmV0dXJuIG5ldyBDb21waWxhYmxlVGVtcGxhdGUoc3RhdGVtZW50cywgeyBzeW1ib2xzOiB0aGlzLnN5bWJvbHMsIGhhc0V2YWw6IHRoaXMuaGFzRXZhbCwgbWV0YTogdGhpcy5tZXRhIH0pO1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNjYW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLEFBQU8sQUFBRSxBQUF1QixBQUFFLEFBQXNCLEFBQUUsQUFBTSxBQUFtQixBQUFDOztBQUNwRixBQUFPLEFBQUUsQUFBTyxBQUFFLEFBQU0sQUFBWSxBQUFDOztBQUdyQyxBQUFPLEFBQVUsQUFBVyxBQUFFLEFBQU0sQUFBZSxBQUFDOztBQUNwRCxBQUFPOztJQUFLLEFBQVUsQUFBTSxBQUFzQixBQUFDOztBQUluRCxBQUFPLEFBQ0wsQUFBVSxBQUNYLEFBQU0sQUFBb0IsQUFBQyxBQUk1QixBQUFNOzs7OzBCQUEyQixBQUErQixXQUFFLEFBQXNCO0FBQ3RGLEFBQVUsMEJBQUMsQUFBTyxRQUFDLEFBQVMsV0FBRSxBQUFPLEFBQUMsQUFBQyxBQUN6QztBQUFDLEFBT0QsQUFBTTs7QUFJSixnQkFBbUIsQUFBa0MsWUFBUyxBQUFjO0FBQXpELGFBQVUsYUFBVixBQUFVLEFBQXdCO0FBQVMsYUFBVyxjQUFYLEFBQVcsQUFBRztBQUhwRSxhQUFjLGlCQUFtQyxBQUFJLEFBQUM7QUFDdEQsYUFBZSxrQkFBdUMsQUFBSSxBQUFDLEFBRVk7QUFBQztBQUVoRixBQUFhLGtCQUFDLEFBQWdCO0FBQzVCLFlBQUksRUFBRSxBQUFjLEFBQUUsbUJBQUcsQUFBSSxBQUFDO0FBRTlCLEFBQUUsQUFBQyxZQUFDLENBQUMsQUFBYyxBQUFDLGdCQUFDLEFBQUM7QUFDcEIsZ0JBQUksQUFBTyxVQUFHLEFBQWlCLGtCQUFDLEFBQUksS0FBQyxBQUFVLFlBQUUsQUFBSSxLQUFDLEFBQVcsWUFBQyxBQUFJLE1BQUUsQUFBRyxBQUFDLEFBQUM7QUFFN0UsZ0JBQUksQUFBSyxRQUFHLEFBQU8sUUFBQyxBQUFLLEFBQUM7QUFDMUIsZ0JBQUksQUFBRyxNQUFHLEFBQU8sUUFBQyxBQUFRLEFBQUUsQUFBQztBQUU3QixBQUFjLDZCQUFH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QUFJLEtBQUMsQUFBTyxTQUFFLEFBQUksTUFBRSxBQUFJLEtBQUMsQUFBSSxBQUFFLEFBQUMsQUFBQyxBQUMvRztBQUFDLEFBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21waWxlZER5bmFtaWNUZW1wbGF0ZSwgQ29tcGlsZWRTdGF0aWNUZW1wbGF0ZSB9IGZyb20gJy4vY29tcGlsZWQvYmxvY2tzJztcbmltcG9ydCB7IGJ1aWxkZXIgfSBmcm9tICcuL2NvbXBpbGVyJztcbmltcG9ydCBPcGNvZGVCdWlsZGVyIGZyb20gJy4vY29tcGlsZWQvb3Bjb2Rlcy9idWlsZGVyJztcbmltcG9ydCBFbnZpcm9ubWVudCBmcm9tICcuL2Vudmlyb25tZW50JztcbmltcG9ydCB7IE9wdGlvbiwgRU1QVFlfQVJSQVkgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCAqIGFzIFdpcmVGb3JtYXQgZnJvbSAnQGdsaW1tZXIvd2lyZS1mb3JtYXQnO1xuaW1wb3J0IHsgT3BhcXVlLCBTeW1ib2xUYWJsZSwgUHJvZ3JhbVN5bWJvbFRhYmxlLCBCbG9ja1N5bWJvbFRhYmxlIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBDb21waWxhdGlvbk1ldGEgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcblxuaW1wb3J0IHtcbiAgU1RBVEVNRU5UU1xufSBmcm9tICcuL3N5bnRheC9mdW5jdGlvbnMnO1xuXG5leHBvcnQgdHlwZSBEZXNlcmlhbGl6ZWRTdGF0ZW1lbnQgPSBXaXJlRm9ybWF0LlN0YXRlbWVudCB8IFdpcmVGb3JtYXQuU3RhdGVtZW50cy5BdHRyaWJ1dGUgfCBXaXJlRm9ybWF0LlN0YXRlbWVudHMuQXJndW1lbnQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21waWxlU3RhdGVtZW50KHN0YXRlbWVudDogV2lyZUZvcm1hdC5TdGF0ZW1lbnQsIGJ1aWxkZXI6IE9wY29kZUJ1aWxkZXIpIHtcbiAgU1RBVEVNRU5UUy5jb21waWxlKHN0YXRlbWVudCwgYnVpbGRlcik7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2Nhbm5lZFRlbXBsYXRlPFMgZXh0ZW5kcyBTeW1ib2xUYWJsZT4ge1xuICBjb21waWxlU3RhdGljKGVudjogRW52aXJvbm1lbnQpOiBDb21waWxlZFN0YXRpY1RlbXBsYXRlO1xuICBjb21waWxlRHluYW1pYyhlbnY6IEVudmlyb25tZW50KTogQ29tcGlsZWREeW5hbWljVGVtcGxhdGU8Uz47XG59XG5cbmV4cG9ydCBjbGFzcyBDb21waWxhYmxlVGVtcGxhdGU8UyBleHRlbmRzIFN5bWJvbFRhYmxlPiBpbXBsZW1lbnRzIFNjYW5uZWRUZW1wbGF0ZTxTPiB7XG4gIHByaXZhdGUgY29tcGlsZWRTdGF0aWM6IE9wdGlvbjxDb21waWxlZFN0YXRpY1RlbXBsYXRlPiA9IG51bGw7XG4gIHByaXZhdGUgY29tcGlsZWREeW5hbWljOiBPcHRpb248Q29tcGlsZWREeW5hbWljVGVtcGxhdGU8Uz4+ID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgc3RhdGVtZW50czogV2lyZUZvcm1hdC5TdGF0ZW1lbnRbXSwgcHVibGljIHN5bWJvbFRhYmxlOiBTKSB7fVxuXG4gIGNvbXBpbGVTdGF0aWMoZW52OiBFbnZpcm9ubWVudCk6IENvbXBpbGVkU3RhdGljVGVtcGxhdGUge1xuICAgIGxldCB7IGNvbXBpbGVkU3RhdGljIH0gPSB0aGlzO1xuXG4gICAgaWYgKCFjb21waWxlZFN0YXRpYykge1xuICAgICAgbGV0IGJ1aWxkZXIgPSBjb21waWxlU3RhdGVtZW50cyh0aGlzLnN0YXRlbWVudHMsIHRoaXMuc3ltYm9sVGFibGUubWV0YSwgZW52KTtcblxuICAgICAgbGV0IHN0YXJ0ID0gYnVpbGRlci5zdGFydDtcbiAgICAgIGxldCBlbmQgPSBidWlsZGVyLmZpbmFsaXplKCk7XG5cbiAgICAgIGNvbXBpbGVkU3RhdGljID0gdGhpcy5jb21waWxlZFN0YXRpYyA9IG5ldyBDb21waWxlZFN0YXRpY1RlbXBsYXRlKHN0YXJ0LCBlbmQpO1xuICAgIH1cblxuICAgIHJldHVybiBjb21waWxlZFN0YXRpYztcbiAgfVxuXG4gIGNvbXBpbGVEeW5hbWljKGVudjogRW52aXJvbm1lbnQpOiBDb21waWxlZER5bmFtaWNUZW1wbGF0ZTxTPiB7XG4gICAgbGV0IHsgY29tcGlsZWREeW5hbWljIH0gPSB0aGlzO1xuXG4gICAgaWYgKCFjb21waWxlZER5bmFtaWMpIHtcbiAgICAgIGxldCBzdGF0aWNCbG9jayA9IHRoaXMuY29tcGlsZVN0YXRpYyhlbnYpO1xuICAgICAgY29tcGlsZWREeW5hbWljID0gbmV3IENvbXBpbGVkRHluYW1pY1RlbXBsYXRlKHN0YXRpY0Jsb2NrLnN0YXJ0LCBzdGF0aWNCbG9jay5lbmQsIHRoaXMuc3ltYm9sVGFibGUpO1xuICAgIH1cblxuICAgIHJldHVybiBjb21waWxlZER5bmFtaWM7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgVGVtcGxhdGUgPSBDb21waWxhYmxlVGVtcGxhdGU8U3ltYm9sVGFibGU+O1xuZXhwb3J0IHR5cGUgUHJvZ3JhbSA9IENvbXBpbGFibGVUZW1wbGF0ZTxQcm9ncmFtU3ltYm9sVGFibGU+O1xuZXhwb3J0IHR5cGUgQmxvY2sgPSBDb21waWxhYmxlVGVtcGxhdGU8QmxvY2tTeW1ib2xUYWJsZT47XG5cbmV4cG9ydCB0eXBlIFNjYW5uZWRQcm9ncmFtID0gU2Nhbm5lZFRlbXBsYXRlPFByb2dyYW1TeW1ib2xUYWJsZT47XG5leHBvcnQgdHlwZSBTY2FubmVkQmxvY2sgPSBTY2FubmVkVGVtcGxhdGU8QmxvY2tTeW1ib2xUYWJsZT47XG5cbmZ1bmN0aW9uIGNvbXBpbGVTdGF0ZW1lbnRzKHN0YXRlbWVudHM6IFdpcmVGb3JtYXQuU3RhdGVtZW50W10sIG1ldGE6IENvbXBpbGF0aW9uTWV0YSwgZW52OiBFbnZpcm9ubWVudCkge1xuICBsZXQgYiA9IGJ1aWxkZXIoZW52LCBtZXRhKTtcblxuICBmb3IgKGxldCBzdGF0ZW1lbnQgb2Ygc3RhdGVtZW50cykge1xuICAgIGNvbXBpbGVTdGF0ZW1lbnQoc3RhdGVtZW50LCBiKTtcbiAgfVxuXG4gIHJldHVybiBiO1xufVxuXG5leHBvcnQgY29uc3QgQVRUUlNfQkxPQ0sgPSAnJmF0dHJzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGxheW91dChwcmVsdWRlOiBXaXJlRm9ybWF0LlN0YXRlbWVudFtdLCBoZWFkOiBXaXJlRm9ybWF0LlN0YXRlbWVudFtdLCBib2R5OiBXaXJlRm9ybWF0LlN0YXRlbWVudFtdLCBzeW1ib2xUYWJsZTogUHJvZ3JhbVN5bWJvbFRhYmxlKSB7XG4gIGxldCBbLCB0YWddID0gcHJlbHVkZS5wb3AoKSBhcyBXaXJlRm9ybWF0LlN0YXRlbWVudHMuT3BlbkVsZW1lbnQ7XG4gIHByZWx1ZGUucHVzaChbT3BzLkNsaWVudFNpZGVTdGF0ZW1lbnQsIENsaWVudFNpZGUuT3BzLk9wZW5Db21wb25lbnRFbGVtZW50LCB0YWddKTtcbiAgcHJlbHVkZS5wdXNoKFtPcHMuQ2xpZW50U2lkZVN0YXRlbWVudCwgQ2xpZW50U2lkZS5PcHMuRGlkQ3JlYXRlRWxlbWVudF0pO1xuXG4gIGxldCBhdHRyc1N5bWJvbCA9IHN5bWJvbFRhYmxlLnN5bWJvbHMubGVuZ3RoICsgMTtcbiAgc3ltYm9sVGFibGUuc3ltYm9scy5wdXNoKEFUVFJTX0JMT0NLKTtcblxuICBsZXQgc3RhdGVtZW50cyA9IHByZWx1ZGVcbiAgICAuY29uY2F0KFtbT3BzLllpZWxkLCBhdHRyc1N5bWJvbCwgRU1QVFlfQVJSQVldXSlcbiAgICAuY29uY2F0KGhlYWQpXG4gICAgLmNvbmNhdChib2R5KVxuICAgIC5jb25jYXQoW1tPcHMuQ2xpZW50U2lkZVN0YXRlbWVudCwgQ2xpZW50U2lkZS5PcHMuRGlkUmVuZGVyTGF5b3V0XV0pO1xuXG4gIHJldHVybiBuZXcgQ29tcGlsYWJsZVRlbXBsYXRlKHN0YXRlbWVudHMsIHN5bWJvbFRhYmxlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2Nhbm5lciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYmxvY2s6IFdpcmVGb3JtYXQuU2VyaWFsaXplZFRlbXBsYXRlQmxvY2ssIHByaXZhdGUgZW52OiBFbnZpcm9ubWVudCkge1xuICB9XG5cbiAgc2NhbkVudHJ5UG9pbnQobWV0YTogQ29tcGlsYXRpb25NZXRhKTogUHJvZ3JhbSB7XG4gICAgbGV0IHsgYmxvY2ssIGVudiB9ID0gdGhpcztcblxuICAgIGxldCBzdGF0ZW1lbnRzO1xuICAgIGlmIChibG9jay5wcmVsdWRlICYmIGJsb2NrLmhlYWQpIHtcbiAgICAgIHN0YXRlbWVudHMgPSBibG9jay5wcmVsdWRlLmNvbmNhdChibG9jay5oZWFkKS5jb25jYXQoYmxvY2suc3RhdGVtZW50cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlbWVudHMgPSBibG9jay5zdGF0ZW1lbnRzO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUmF3UHJvZ3JhbShlbnYsIG1ldGEsIHN0YXRlbWVudHMsIGJsb2NrLnN5bWJvbHMsIGJsb2NrLmhhc0V2YWwpLnNjYW4oKTtcbiAgfVxuXG4gIHNjYW5CbG9jayhtZXRhOiBDb21waWxhdGlvbk1ldGEpOiBCbG9jayB7XG4gICAgbGV0IHsgYmxvY2ssIGVudiB9ID0gdGhpcztcblxuICAgIGxldCBzdGF0ZW1lbnRzO1xuICAgIGlmIChibG9jay5wcmVsdWRlICYmIGJsb2NrLmhlYWQpIHtcbiAgICAgIHN0YXRlbWVudHMgPSBibG9jay5wcmVsdWRlLmNvbmNhdChibG9jay5oZWFkKS5jb25jYXQoYmxvY2suc3RhdGVtZW50cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlbWVudHMgPSBibG9jay5zdGF0ZW1lbnRzO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUmF3SW5saW5lQmxvY2soZW52LCBtZXRhLCBzdGF0ZW1lbnRzLCBFTVBUWV9BUlJBWSkuc2NhbigpO1xuICB9XG5cbiAgc2NhbkxheW91dChtZXRhOiBDb21waWxhdGlvbk1ldGEsIGF0dHJzOiBXaXJlRm9ybWF0LlN0YXRlbWVudHMuQXR0cmlidXRlW10pOiBQcm9ncmFtIHtcbiAgICBsZXQgeyBibG9jayB9ID0gdGhpcztcbiAgICBsZXQgeyBzeW1ib2xzLCBoYXNFdmFsIH0gPSBibG9jaztcblxuICAgIGlmICghYmxvY2sucHJlbHVkZSB8fCAhYmxvY2suaGVhZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBBIGxheW91dCBtdXN0IGhhdmUgYSB0b3AtbGV2ZWwgZWxlbWVudGApO1xuICAgIH1cblxuICAgIGxldCBzeW1ib2xUYWJsZSA9IHsgbWV0YSwgaGFzRXZhbCwgc3ltYm9scyB9O1xuICAgIGxldCB7IHN0YXRlbWVudHM6IHByZWx1ZGUgfSA9IHNjYW5CbG9jayh7IHN0YXRlbWVudHM6IGJsb2NrLnByZWx1ZGUsIHBhcmFtZXRlcnM6IEVNUFRZX0FSUkFZIH0sIG1ldGEsIHRoaXMuZW52KTtcbiAgICBsZXQgeyBzdGF0ZW1lbnRzOiBoZWFkIH0gPSBzY2FuQmxvY2soeyBzdGF0ZW1lbnRzOiBbLi4uYXR0cnMsIC4uLmJsb2NrLmhlYWRdLCBwYXJhbWV0ZXJzOiBFTVBUWV9BUlJBWSB9LCBtZXRhLCB0aGlzLmVudik7XG4gICAgbGV0IHsgc3RhdGVtZW50czogYm9keSB9ID0gc2NhbkJsb2NrKHsgc3RhdGVtZW50czogYmxvY2suc3RhdGVtZW50cywgcGFyYW1ldGVyczogRU1QVFlfQVJSQVkgfSwgbWV0YSwgdGhpcy5lbnYpO1xuXG4gICAgcmV0dXJuIGxheW91dChwcmVsdWRlLCBoZWFkLCBib2R5LCBzeW1ib2xUYWJsZSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNjYW5CbG9jayhibG9jazogV2lyZUZvcm1hdC5TZXJpYWxpemVkSW5saW5lQmxvY2ssIG1ldGE6IENvbXBpbGF0aW9uTWV0YSwgZW52OiBFbnZpcm9ubWVudCk6IEJsb2NrIHtcbiAgcmV0dXJuIG5ldyBSYXdJbmxpbmVCbG9jayhlbnYsIG1ldGEsIGJsb2NrLnN0YXRlbWVudHMsIEVNUFRZX0FSUkFZKS5zY2FuKCk7XG59XG5cbmltcG9ydCB7IFB1YmxpY1ZNIH0gZnJvbSAnLi92bSc7XG5pbXBvcnQgeyBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcblxuZXhwb3J0IG5hbWVzcGFjZSBDbGllbnRTaWRlIHtcbiAgZXhwb3J0IGVudW0gT3BzIHtcbiAgICBPcGVuQ29tcG9uZW50RWxlbWVudCxcbiAgICBEaWRDcmVhdGVFbGVtZW50LFxuICAgIERpZFJlbmRlckxheW91dCxcbiAgICBPcHRpbWl6ZWRBcHBlbmQsXG4gICAgVW5vcHRpbWl6ZWRBcHBlbmQsXG4gICAgU3RhdGljUGFydGlhbCxcbiAgICBEeW5hbWljUGFydGlhbCxcbiAgICBOZXN0ZWRCbG9jayxcbiAgICBTY2FubmVkQmxvY2ssXG5cbiAgICBGdW5jdGlvbkV4cHJlc3Npb25cbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBpczxUIGV4dGVuZHMgYW55W10+KHZhcmlhbnQ6IE9wcyk6ICh2YWx1ZTogYW55W10pID0+IHZhbHVlIGlzIFQge1xuICAgIHJldHVybiBmdW5jdGlvbih2YWx1ZTogYW55W10pOiB2YWx1ZSBpcyBUIHtcbiAgICAgIHJldHVybiB2YWx1ZVswXSA9PT0gV2lyZUZvcm1hdC5PcHMuQ2xpZW50U2lkZUV4cHJlc3Npb24gfHwgdmFsdWVbMF0gPT09IFdpcmVGb3JtYXQuT3BzLkNsaWVudFNpZGVTdGF0ZW1lbnQgJiYgdmFsdWVbMV0gPT09IHZhcmlhbnQ7XG4gICAgfTtcbiAgfVxuXG4gIGltcG9ydCBDbGllbnRTaWRlU3RhdGVtZW50ID0gV2lyZUZvcm1hdC5PcHMuQ2xpZW50U2lkZVN0YXRlbWVudDtcbiAgaW1wb3J0IENsaWVudFNpZGVFeHByZXNzaW9uID0gV2lyZUZvcm1hdC5PcHMuQ2xpZW50U2lkZUV4cHJlc3Npb247XG5cbiAgZXhwb3J0IHR5cGUgT3BlbkNvbXBvbmVudEVsZW1lbnQgID0gW0NsaWVudFNpZGVTdGF0ZW1lbnQsIE9wcy5PcGVuQ29tcG9uZW50RWxlbWVudCwgc3RyaW5nXTtcbiAgZXhwb3J0IHR5cGUgRGlkQ3JlYXRlRWxlbWVudCAgICAgID0gW0NsaWVudFNpZGVTdGF0ZW1lbnQsIE9wcy5EaWRDcmVhdGVFbGVtZW50XTtcbiAgZXhwb3J0IHR5cGUgRGlkUmVuZGVyTGF5b3V0ICAgICAgID0gW0NsaWVudFNpZGVTdGF0ZW1lbnQsIE9wcy5EaWRSZW5kZXJMYXlvdXRdO1xuICBleHBvcnQgdHlwZSBPcHRpbWl6ZWRBcHBlbmQgICAgICAgPSBbQ2xpZW50U2lkZVN0YXRlbWVudCwgT3BzLk9wdGltaXplZEFwcGVuZCwgV2lyZUZvcm1hdC5FeHByZXNzaW9uLCBib29sZWFuXTtcbiAgZXhwb3J0IHR5cGUgVW5vcHRpbWl6ZWRBcHBlbmQgICAgID0gW0NsaWVudFNpZGVTdGF0ZW1lbnQsIE9wcy5Vbm9wdGltaXplZEFwcGVuZCwgV2lyZUZvcm1hdC5FeHByZXNzaW9uLCBib29sZWFuXTtcbiAgZXhwb3J0IHR5cGUgU3RhdGljUGFydGlhbCAgICAgICAgID0gW0NsaWVudFNpZGVTdGF0ZW1lbnQsIE9wcy5TdGF0aWNQYXJ0aWFsLCBzdHJpbmcsIFdpcmVGb3JtYXQuQ29yZS5FdmFsSW5mb107XG4gIGV4cG9ydCB0eXBlIER5bmFtaWNQYXJ0aWFsICAgICAgICA9IFtDbGllbnRTaWRlU3RhdGVtZW50LCBPcHMuRHluYW1pY1BhcnRpYWwsIFdpcmVGb3JtYXQuRXhwcmVzc2lvbiwgV2lyZUZvcm1hdC5Db3JlLkV2YWxJbmZvXTtcblxuICBleHBvcnQgdHlwZSBGdW5jdGlvbkV4cHJlc3Npb24gICAgPSBbQ2xpZW50U2lkZUV4cHJlc3Npb24sIE9wcy5GdW5jdGlvbkV4cHJlc3Npb24sIEZ1bmN0aW9uRXhwcmVzc2lvbkNhbGxiYWNrPE9wYXF1ZT5dO1xuXG4gIGV4cG9ydCB0eXBlIEZ1bmN0aW9uRXhwcmVzc2lvbkNhbGxiYWNrPFQ+ID0gKFZNOiBQdWJsaWNWTSwgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlKSA9PiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPFQ+O1xuXG4gIGV4cG9ydCB0eXBlIENsaWVudFNpZGVTdGF0ZW1lbnQgPVxuICAgIHwgT3BlbkNvbXBvbmVudEVsZW1lbnRcbiAgICB8IERpZENyZWF0ZUVsZW1lbnRcbiAgICB8IERpZFJlbmRlckxheW91dFxuICAgIHwgT3B0aW1pemVkQXBwZW5kXG4gICAgfCBVbm9wdGltaXplZEFwcGVuZFxuICAgIHwgU3RhdGljUGFydGlhbFxuICAgIHwgRHluYW1pY1BhcnRpYWxcbiAgICA7XG5cbiAgZXhwb3J0IHR5cGUgQ2xpZW50U2lkZUV4cHJlc3Npb24gPVxuICAgIHwgRnVuY3Rpb25FeHByZXNzaW9uXG4gICAgO1xufVxuXG5jb25zdCB7IE9wcyB9ID0gV2lyZUZvcm1hdDtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFJhd0Jsb2NrPFMgZXh0ZW5kcyBTeW1ib2xUYWJsZT4ge1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgZW52OiBFbnZpcm9ubWVudCwgcHJvdGVjdGVkIG1ldGE6IENvbXBpbGF0aW9uTWV0YSwgcHJpdmF0ZSBzdGF0ZW1lbnRzOiBXaXJlRm9ybWF0LlN0YXRlbWVudFtdKSB7fVxuXG4gIHNjYW5TdGF0ZW1lbnRzKCk6IFdpcmVGb3JtYXQuU3RhdGVtZW50W10ge1xuICAgIGxldCBidWZmZXI6IFdpcmVGb3JtYXQuU3RhdGVtZW50W10gPSBbXTtcbiAgICBsZXQgc3RhdGVtZW50cyA9IHRoaXMuc3RhdGVtZW50cztcbiAgICBmb3IgKGxldCBzdGF0ZW1lbnQgb2Ygc3RhdGVtZW50cykge1xuICAgICAgYnVmZmVyLnB1c2goc3RhdGVtZW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYnVmZmVyO1xuICB9XG5cbiAgY2hpbGQoYmxvY2s6IE9wdGlvbjxXaXJlRm9ybWF0LlNlcmlhbGl6ZWRJbmxpbmVCbG9jaz4pOiBPcHRpb248UmF3SW5saW5lQmxvY2s+IHtcbiAgICBpZiAoIWJsb2NrKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gbmV3IFJhd0lubGluZUJsb2NrKHRoaXMuZW52LCB0aGlzLm1ldGEsIGJsb2NrLnN0YXRlbWVudHMsIGJsb2NrLnBhcmFtZXRlcnMpO1xuICB9XG5cbiAgYWJzdHJhY3Qgc2NhbigpOiBDb21waWxhYmxlVGVtcGxhdGU8Uz47XG59XG5cbmV4cG9ydCBjbGFzcyBSYXdJbmxpbmVCbG9jayBleHRlbmRzIFJhd0Jsb2NrPEJsb2NrU3ltYm9sVGFibGU+IHtcbiAgY29uc3RydWN0b3IoZW52OiBFbnZpcm9ubWVudCwgbWV0YTogQ29tcGlsYXRpb25NZXRhLCBzdGF0ZW1lbnRzOiBXaXJlRm9ybWF0LlN0YXRlbWVudFtdLCBwcml2YXRlIHBhcmFtZXRlcnM6IG51bWJlcltdKSB7XG4gICAgc3VwZXIoZW52LCBtZXRhLCBzdGF0ZW1lbnRzKTtcbiAgfVxuXG4gIHNjYW4oKTogQmxvY2sge1xuICAgIGxldCBzdGF0ZW1lbnRzID0gdGhpcy5zY2FuU3RhdGVtZW50cygpO1xuICAgIHJldHVybiBuZXcgQ29tcGlsYWJsZVRlbXBsYXRlKHN0YXRlbWVudHMsIHsgcGFyYW1ldGVyczogdGhpcy5wYXJhbWV0ZXJzLCBtZXRhOiB0aGlzLm1ldGEgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJhd1Byb2dyYW0gZXh0ZW5kcyBSYXdCbG9jazxQcm9ncmFtU3ltYm9sVGFibGU+IHtcbiAgY29uc3RydWN0b3IoZW52OiBFbnZpcm9ubWVudCwgbWV0YTogQ29tcGlsYXRpb25NZXRhLCBzdGF0ZW1lbnRzOiBXaXJlRm9ybWF0LlN0YXRlbWVudFtdLCBwcml2YXRlIHN5bWJvbHM6IHN0cmluZ1tdLCBwcml2YXRlIGhhc0V2YWw6IGJvb2xlYW4pIHtcbiAgICBzdXBlcihlbnYsIG1ldGEsIHN0YXRlbWVudHMpO1xuICB9XG5cbiAgc2NhbigpOiBQcm9ncmFtIHtcbiAgICBsZXQgc3RhdGVtZW50cyA9IHRoaXMuc2NhblN0YXRlbWVudHMoKTtcbiAgICByZXR1cm4gbmV3IENvbXBpbGFibGVUZW1wbGF0ZShzdGF0ZW1lbnRzLCB7IHN5bWJvbHM6IHRoaXMuc3ltYm9scywgaGFzRXZhbDogdGhpcy5oYXNFdmFsLCBtZXRhOiB0aGlzLm1ldGEgfSk7XG4gIH1cbn1cbiJdfQ==

@@ -12,4 +12,2 @@ 'use strict';

var _util = require('@glimmer/util');
var _bounds = require('./bounds');

@@ -42,3 +40,2 @@

}
throw (0, _util.unreachable)();
}

@@ -52,3 +49,2 @@ function trustingInsert(dom, cursor, value) {

}
throw (0, _util.unreachable)();
}

@@ -136,2 +132,2 @@ class TextUpsert extends Upsert {

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBzZXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidXBzZXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUEsQUFBTyxBQUFVLEFBQVcsQUFBRSxBQUFNLEFBQWUsQUFBQzs7QUFJcEQsQUFBTyxBQUFrQixBQUFnQixBQUFFLEFBQU0sQUFBRSxBQUFLLEFBQUUsQUFBTSxBQUFVLEFBQUMsQUFNM0UsQUFBTTs7c0JBQXVCLEFBQWE7QUFDeEMsQUFBTSxXQUFDLENBQUMsQ0FBQyxBQUFLLFNBQUksT0FBTyxBQUFLLE1BQUMsQUFBUSxBQUFDLGNBQUssQUFBVSxBQUFDLEFBQzFEO0FBQUMsQUFFRCxBQUFNO2dCQUFpQixBQUFhO0FBQ2xDLEFBQU0sV0FBQyxBQUFLLFVBQUssQUFBSSxRQUFJLE9BQU8sQUFBSyxVQUFLLEFBQVEsWUFBSSxPQUFPLEFBQUssTUFBQyxBQUFVLEFBQUMsZ0JBQUssQUFBUSxBQUFDLEFBQzlGO0FBQUMsQUFFRCxBQUFNO2tCQUFtQixBQUFhO0FBQ3BDLEFBQU0sV0FBQyxPQUFPLEFBQUssVUFBSyxBQUFRLEFBQUMsQUFDbkM7QUFBQztBQU1EO0FBQ0UsZ0JBQW1CLEFBQWM7QUFBZCxhQUFNLFNBQU4sQUFBTSxBQUFRLEFBQ2pDO0FBQUMsQUFHRixBQUVEOztrQkFBZSxBQUFNLEFBQUMsQUFFdEIsQUFBTTt3QkFBeUIsQUFBd0IsS0FBRSxBQUFjLFFBQUUsQUFBd0I7QUFDL0YsQUFBRSxBQUFDLFFBQUMsQUFBUSxTQUFDLEFBQUssQUFBQyxBQUFDLFFBQUMsQUFBQztBQUNwQixBQUFNLGVBQUMsQUFBVSxXQUFDLEFBQU0sT0FBQyxBQUFHLEtBQUUsQUFBTSxRQUFFLEFBQUssQUFBQyxBQUFDLEFBQy9DO0FBQUM7QUFDRCxBQUFFLEFBQUMsUUFBQyxBQUFZLGFBQUMsQUFBSyxBQUFDLEFBQUMsUUFBQyxBQUFDO0FBQ3hCLEFBQU0sZUFBQyxBQUFnQixpQkFBQyxBQUFNLE9BQUMsQUFBRyxLQUFF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b3J0IHsgT3BhcXVlLCB1bnJlYWNoYWJsZSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgRE9NQ2hhbmdlcywgRE9NVHJlZUNvbnN0cnVjdGlvbiB9IGZyb20gJy4vZG9tL2hlbHBlcic7XG5pbXBvcnQgKiBhcyBTaW1wbGUgZnJvbSAnLi9kb20vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBGSVhfUkVJRklDQVRJT04gfSBmcm9tICcuL2RvbS9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEJvdW5kcywgQ3Vyc29yLCBTaW5nbGVOb2RlQm91bmRzLCBzaW5nbGUsIGNsZWFyIH0gZnJvbSAnLi9ib3VuZHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNhZmVTdHJpbmcge1xuICB0b0hUTUwoKTogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTYWZlU3RyaW5nKHZhbHVlOiBPcGFxdWUpOiB2YWx1ZSBpcyBTYWZlU3RyaW5nIHtcbiAgcmV0dXJuICEhdmFsdWUgJiYgdHlwZW9mIHZhbHVlWyd0b0hUTUwnXSA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZSh2YWx1ZTogT3BhcXVlKTogdmFsdWUgaXMgTm9kZSB7XG4gIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHR5cGVvZiB2YWx1ZVsnbm9kZVR5cGUnXSA9PT0gJ251bWJlcic7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZyh2YWx1ZTogT3BhcXVlKTogdmFsdWUgaXMgc3RyaW5nIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZyc7XG59XG5cbmV4cG9ydCB0eXBlIEluc2VydGlvbiA9IENhdXRpb3VzSW5zZXJ0aW9uIHwgVHJ1c3RpbmdJbnNlcnRpb247XG5leHBvcnQgdHlwZSBDYXV0aW91c0luc2VydGlvbiA9IHN0cmluZyB8IFNhZmVTdHJpbmcgfCBOb2RlO1xuZXhwb3J0IHR5cGUgVHJ1c3RpbmdJbnNlcnRpb24gPSBzdHJpbmcgfCBOb2RlO1xuXG5hYnN0cmFjdCBjbGFzcyBVcHNlcnQge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgYm91bmRzOiBCb3VuZHMpIHtcbiAgfVxuXG4gIGFic3RyYWN0IHVwZGF0ZShkb206IERPTUNoYW5nZXMsIHZhbHVlOiBJbnNlcnRpb24pOiBib29sZWFuO1xufVxuXG5leHBvcnQgZGVmYXVsdCBVcHNlcnQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBjYXV0aW91c0luc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogQ2F1dGlvdXNJbnNlcnRpb24pOiBVcHNlcnQge1xuICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgcmV0dXJuIFRleHRVcHNlcnQuaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cbiAgaWYgKGlzU2FmZVN0cmluZyh2YWx1ZSkpIHtcbiAgICByZXR1cm4gU2FmZVN0cmluZ1Vwc2VydC5pbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxuICBpZiAoaXNOb2RlKHZhbHVlKSkge1xuICAgIHJldHVybiBOb2RlVXBzZXJ0Lmluc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG5cbiAgdGhyb3cgdW5yZWFjaGFibGUoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRydXN0aW5nSW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBUcnVzdGluZ0luc2VydGlvbik6IFVwc2VydCB7XG4gIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICByZXR1cm4gSFRNTFVwc2VydC5pbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxuICBpZiAoaXNOb2RlKHZhbHVlKSkge1xuICAgIHJldHVybiBOb2RlVXBzZXJ0Lmluc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG5cbiAgdGhyb3cgdW5yZWFjaGFibGUoKTtcbn1cblxuY2xhc3MgVGV4dFVwc2VydCBleHRlbmRzIFVwc2VydCB7XG4gIHN0YXRpYyBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IHN0cmluZyk6IFVwc2VydCB7XG4gICAgbGV0IHRleHROb2RlID0gZG9tLmNyZWF0ZVRleHROb2RlKHZhbHVlKTtcbiAgICBkb20uaW5zZXJ0QmVmb3JlKGN1cnNvci5lbGVtZW50LCB0ZXh0Tm9kZSwgY3Vyc29yLm5leHRTaWJsaW5nKTtcbiAgICBsZXQgYm91bmRzID0gbmV3IFNpbmdsZU5vZGVCb3VuZHMoY3Vyc29yLmVsZW1lbnQsIHRleHROb2RlKTtcbiAgICByZXR1cm4gbmV3IFRleHRVcHNlcnQoYm91bmRzLCB0ZXh0Tm9kZSk7XG4gIH1cblxuICBwcml2YXRlIHRleHROb2RlOiBUZXh0O1xuXG4gIGNvbnN0cnVjdG9yKGJvdW5kczogQm91bmRzLCB0ZXh0Tm9kZTogU2ltcGxlLlRleHQpIHtcbiAgICBzdXBlcihib3VuZHMpO1xuICAgIHRoaXMudGV4dE5vZGUgPSB0ZXh0Tm9kZSBhcyBUZXh0O1xuICB9XG5cbiAgdXBkYXRlKF9kb206IERPTUNoYW5nZXMsIHZhbHVlOiBJbnNlcnRpb24pOiBib29sZWFuIHtcbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICBsZXQgeyB0ZXh0Tm9kZSB9ID0gdGhpcztcbiAgICAgIHRleHROb2RlLm5vZGVWYWx1ZSA9IHZhbHVlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgSFRNTFVwc2VydCBleHRlbmRzIFVwc2VydCB7XG4gIHN0YXRpYyBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IHN0cmluZyk6IFVwc2VydCB7XG4gICAgbGV0IGJvdW5kcyA9IGRvbS5pbnNlcnRIVE1MQmVmb3JlKGN1cnNvci5lbGVtZW50LCB2YWx1ZSwgY3Vyc29yLm5leHRTaWJsaW5nKTtcbiAgICByZXR1cm4gbmV3IEhUTUxVcHNlcnQoYm91bmRzKTtcbiAgfVxuXG4gIHVwZGF0ZShkb206IERPTUNoYW5nZXMsIHZhbHVlOiBJbnNlcnRpb24pOiBib29sZWFuIHtcbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICBsZXQgeyBib3VuZHMgfSA9IHRoaXM7XG5cbiAgICAgIGxldCBwYXJlbnRFbGVtZW50ID0gYm91bmRzLnBhcmVudEVsZW1lbnQoKTtcbiAgICAgIGxldCBuZXh0U2libGluZyA9IGNsZWFyKGJvdW5kcyk7XG5cbiAgICAgIHRoaXMuYm91bmRzID0gZG9tLmluc2VydEhUTUxCZWZvcmUocGFyZW50RWxlbWVudCBhcyBGSVhfUkVJRklDQVRJT048RWxlbWVudD4sIG5leHRTaWJsaW5nIGFzIEZJWF9SRUlGSUNBVElPTjxOb2RlPiwgdmFsdWUpO1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBTYWZlU3RyaW5nVXBzZXJ0IGV4dGVuZHMgVXBzZXJ0IHtcbiAgc3RhdGljIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogU2FmZVN0cmluZyk6IFVwc2VydCB7XG4gICAgbGV0IHN0cmluZ1ZhbHVlID0gdmFsdWUudG9IVE1MKCk7XG4gICAgbGV0IGJvdW5kcyA9IGRvbS5pbnNlcnRIVE1MQmVmb3JlKGN1cnNvci5lbGVtZW50LCBzdHJpbmdWYWx1ZSwgY3Vyc29yLm5leHRTaWJsaW5nKTtcbiAgICByZXR1cm4gbmV3IFNhZmVTdHJpbmdVcHNlcnQoYm91bmRzLCBzdHJpbmdWYWx1ZSk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihib3VuZHM6IEJvdW5kcywgcHJpdmF0ZSBsYXN0U3RyaW5nVmFsdWU6IHN0cmluZykge1xuICAgIHN1cGVyKGJvdW5kcyk7XG4gIH1cblxuICB1cGRhdGUoZG9tOiBET01DaGFuZ2VzLCB2YWx1ZTogSW5zZXJ0aW9uKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzU2FmZVN0cmluZyh2YWx1ZSkpIHtcbiAgICAgIGxldCBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvSFRNTCgpO1xuXG4gICAgICBpZiAoc3RyaW5nVmFsdWUgIT09IHRoaXMubGFzdFN0cmluZ1ZhbHVlKSB7XG4gICAgICAgIGxldCB7IGJvdW5kcyB9ID0gdGhpcztcblxuICAgICAgICBsZXQgcGFyZW50RWxlbWVudCA9IGJvdW5kcy5wYXJlbnRFbGVtZW50KCk7XG4gICAgICAgIGxldCBuZXh0U2libGluZyA9IGNsZWFyKGJvdW5kcyk7XG5cbiAgICAgICAgdGhpcy5ib3VuZHMgPSBkb20uaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnRFbGVtZW50IGFzIEZJWF9SRUlGSUNBVElPTjxFbGVtZW50PiwgbmV4dFNpYmxpbmcgYXMgRklYX1JFSUZJQ0FUSU9OPE5vZGU+LCBzdHJpbmdWYWx1ZSk7XG4gICAgICAgIHRoaXMubGFzdFN0cmluZ1ZhbHVlID0gc3RyaW5nVmFsdWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59XG5cbmNsYXNzIE5vZGVVcHNlcnQgZXh0ZW5kcyBVcHNlcnQge1xuICBzdGF0aWMgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIG5vZGU6IFNpbXBsZS5Ob2RlKTogVXBzZXJ0IHtcbiAgICBkb20uaW5zZXJ0QmVmb3JlKGN1cnNvci5lbGVtZW50LCBub2RlLCBjdXJzb3IubmV4dFNpYmxpbmcpO1xuICAgIHJldHVybiBuZXcgTm9kZVVwc2VydChzaW5nbGUoY3Vyc29yLmVsZW1lbnQsIG5vZGUpKTtcbiAgfVxuXG4gIHVwZGF0ZShkb206IERPTUNoYW5nZXMsIHZhbHVlOiBJbnNlcnRpb24pOiBib29sZWFuIHtcbiAgICBpZiAoaXNOb2RlKHZhbHVlKSkge1xuICAgICAgbGV0IHsgYm91bmRzIH0gPSB0aGlzO1xuXG4gICAgICBsZXQgcGFyZW50RWxlbWVudCA9IGJvdW5kcy5wYXJlbnRFbGVtZW50KCk7XG4gICAgICBsZXQgbmV4dFNpYmxpbmcgPSBjbGVhcihib3VuZHMpO1xuXG4gICAgICB0aGlzLmJvdW5kcyA9IGRvbS5pbnNlcnROb2RlQmVmb3JlKHBhcmVudEVsZW1lbnQgYXMgRklYX1JFSUZJQ0FUSU9OPEVsZW1lbnQ+LCB2YWx1ZSwgbmV4dFNpYmxpbmcgYXMgRklYX1JFSUZJQ0FUSU9OPE5vZGU+KTtcblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBzZXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidXBzZXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBSUEsQUFBTyxBQUFrQixBQUFnQixBQUFFLEFBQU0sQUFBRSxBQUFLLEFBQUUsQUFBTSxBQUFVLEFBQUMsQUFNM0UsQUFBTTs7c0JBQXVCLEFBQWE7QUFDeEMsQUFBTSxXQUFDLENBQUMsQ0FBQyxBQUFLLFNBQUksT0FBTyxBQUFLLE1BQUMsQUFBUSxBQUFDLGNBQUssQUFBVSxBQUFDLEFBQzFEO0FBQUMsQUFFRCxBQUFNO2dCQUFpQixBQUFhO0FBQ2xDLEFBQU0sV0FBQyxBQUFLLFVBQUssQUFBSSxRQUFJLE9BQU8sQUFBSyxVQUFLLEFBQVEsWUFBSSxPQUFPLEFBQUssTUFBQyxBQUFVLEFBQUMsZ0JBQUssQUFBUSxBQUFDLEFBQzlGO0FBQUMsQUFFRCxBQUFNO2tCQUFtQixBQUFhO0FBQ3BDLEFBQU0sV0FBQyxPQUFPLEFBQUssVUFBSyxBQUFRLEFBQUMsQUFDbkM7QUFBQztBQU1EO0FBQ0UsZ0JBQW1CLEFBQWM7QUFBZCxhQUFNLFNBQU4sQUFBTSxBQUFRLEFBQ2pDO0FBQUMsQUFHRixBQUVEOztrQkFBZSxBQUFNLEFBQUMsQUFFdEIsQUFBTTt3QkFBeUIsQUFBd0IsS0FBRSxBQUFjLFFBQUUsQUFBd0I7QUFDL0YsQUFBRSxBQUFDLFFBQUMsQUFBUSxTQUFDLEFBQUssQUFBQyxBQUFDLFFBQUMsQUFBQztBQUNwQixBQUFNLGVBQUMsQUFBVSxXQUFDLEFBQU0sT0FBQyxBQUFHLEtBQUUsQUFBTSxRQUFFLEFBQUssQUFBQyxBQUFDLEFBQy9DO0FBQUM7QUFDRCxBQUFFLEFBQUMsUUFBQyxBQUFZLGFBQUMsQUFBSyxBQUFDLEFBQUMsUUFBQyxBQUFDO0FBQ3hCLEFBQU0sZUFBQyxBQUFnQixpQkFBQyxBQUFNLE9BQUMsQUFBRyxLQUFFLEFBQU0sUUFBRSxBQUFLLEFBQUMsQUFBQyxBQUNyRDtBQUFDO0FBQ0Qs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QztBQUFDO0FBRUQsQUFBTSxtQkFBQyxBQUFJLEFBQUMsQUFDZDtBQUFDLEFBQUMsQUFBSSxlQUFDLEFBQUM7QUFDTixBQUFNLG1CQUFDLEFBQUssQUFBQyxBQUNmO0FBQUMsQUFDSDtBQUFDLEFBQ0Y7O0FBRUQsTUFBaUIsbUJBQVEsQUFBTTtBQUM3QixBQUFNLFdBQUMsQUFBTSxPQUFDLEFBQXdCLEtBQUUsQUFBYyxRQUFFLEFBQWlCO0FBQ3ZFLEFBQUcsWUFBQyxBQUFZLGFBQUMsQUFBTSxPQUFDLEFBQU8sU0FBRSxBQUFJLE1BQUUsQUFBTSxPQUFDLEFBQVcsQUFBQyxBQUFDO0FBQzNELEFBQU0sZUFBQyxJQUFJLEFBQVUsV0FBQyxBQUFNLG9CQUFDLEFBQU0sT0FBQyxBQUFPLFNBQUUsQUFBSSxBQUFDLEFBQUMsQUFBQyxBQUN0RDtBQUFDO0FBRUQsQUFBTSxXQUFDLEFBQWUsS0FBRSxBQUFnQjtBQUN0QyxBQUFFLEFBQUMsWUFBQyxBQUFNLE9BQUMsQUFBSyxBQUFDLEFBQUMsUUFBQyxBQUFDO0FBQ2xCLGdCQUFJLEVBQUUsQUFBTSxBQUFFLFdBQUcsQUFBSSxBQUFDO0FBRXRCLGdCQUFJLEFBQWEsZ0JBQUcsQUFBTSxPQUFDLEFBQWEsQUFBRSxBQUFDO0FBQzNDLGdCQUFJLEFBQVcsY0FBRyxBQUFLLG1CQUFDLEFBQU0sQUFBQyxBQUFDO0FBRWhDLEFBQUksaUJBQUMsQUFBTSxTQUFHLEFBQUcsSUFBQyxBQUFnQixpQkFBQyxBQUF5QyxlQUFFLEFBQUssT0FBRSxBQUFvQyxBQUFDLEFBQUM7QUFFM0gsQUFBTSxtQkFBQyxBQUFJLEFBQUMsQUFDZDtBQUFDLEFBQUMsQUFBSSxlQUFDLEFBQUM7QUFDTixBQUFNLG1CQUFDLEFBQUssQUFBQyxBQUNmO0FBQUMsQUFDSDtBQUFDLEFBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcGFxdWUgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IERPTUNoYW5nZXMsIERPTVRyZWVDb25zdHJ1Y3Rpb24gfSBmcm9tICcuL2RvbS9oZWxwZXInO1xuaW1wb3J0ICogYXMgU2ltcGxlIGZyb20gJy4vZG9tL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRklYX1JFSUZJQ0FUSU9OIH0gZnJvbSAnLi9kb20vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBCb3VuZHMsIEN1cnNvciwgU2luZ2xlTm9kZUJvdW5kcywgc2luZ2xlLCBjbGVhciB9IGZyb20gJy4vYm91bmRzJztcblxuZXhwb3J0IGludGVyZmFjZSBTYWZlU3RyaW5nIHtcbiAgdG9IVE1MKCk6IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU2FmZVN0cmluZyh2YWx1ZTogT3BhcXVlKTogdmFsdWUgaXMgU2FmZVN0cmluZyB7XG4gIHJldHVybiAhIXZhbHVlICYmIHR5cGVvZiB2YWx1ZVsndG9IVE1MJ10gPT09ICdmdW5jdGlvbic7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05vZGUodmFsdWU6IE9wYXF1ZSk6IHZhbHVlIGlzIE5vZGUge1xuICByZXR1cm4gdmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgdmFsdWVbJ25vZGVUeXBlJ10gPT09ICdudW1iZXInO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmcodmFsdWU6IE9wYXF1ZSk6IHZhbHVlIGlzIHN0cmluZyB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnO1xufVxuXG5leHBvcnQgdHlwZSBJbnNlcnRpb24gPSBDYXV0aW91c0luc2VydGlvbiB8IFRydXN0aW5nSW5zZXJ0aW9uO1xuZXhwb3J0IHR5cGUgQ2F1dGlvdXNJbnNlcnRpb24gPSBzdHJpbmcgfCBTYWZlU3RyaW5nIHwgTm9kZTtcbmV4cG9ydCB0eXBlIFRydXN0aW5nSW5zZXJ0aW9uID0gc3RyaW5nIHwgTm9kZTtcblxuYWJzdHJhY3QgY2xhc3MgVXBzZXJ0IHtcbiAgY29uc3RydWN0b3IocHVibGljIGJvdW5kczogQm91bmRzKSB7XG4gIH1cblxuICBhYnN0cmFjdCB1cGRhdGUoZG9tOiBET01DaGFuZ2VzLCB2YWx1ZTogSW5zZXJ0aW9uKTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgVXBzZXJ0O1xuXG5leHBvcnQgZnVuY3Rpb24gY2F1dGlvdXNJbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IENhdXRpb3VzSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgIHJldHVybiBUZXh0VXBzZXJ0Lmluc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG4gIGlmIChpc1NhZmVTdHJpbmcodmFsdWUpKSB7XG4gICAgcmV0dXJuIFNhZmVTdHJpbmdVcHNlcnQuaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cbiAgaWYgKGlzTm9kZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gTm9kZVVwc2VydC5pbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxuXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cnVzdGluZ0luc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogVHJ1c3RpbmdJbnNlcnRpb24pOiBVcHNlcnQge1xuICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgcmV0dXJuIEhUTUxVcHNlcnQuaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cbiAgaWYgKGlzTm9kZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gTm9kZVVwc2VydC5pbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxuXG59XG5cbmNsYXNzIFRleHRVcHNlcnQgZXh0ZW5kcyBVcHNlcnQge1xuICBzdGF0aWMgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBzdHJpbmcpOiBVcHNlcnQge1xuICAgIGxldCB0ZXh0Tm9kZSA9IGRvbS5jcmVhdGVUZXh0Tm9kZSh2YWx1ZSk7XG4gICAgZG9tLmluc2VydEJlZm9yZShjdXJzb3IuZWxlbWVudCwgdGV4dE5vZGUsIGN1cnNvci5uZXh0U2libGluZyk7XG4gICAgbGV0IGJvdW5kcyA9IG5ldyBTaW5nbGVOb2RlQm91bmRzKGN1cnNvci5lbGVtZW50LCB0ZXh0Tm9kZSk7XG4gICAgcmV0dXJuIG5ldyBUZXh0VXBzZXJ0KGJvdW5kcywgdGV4dE5vZGUpO1xuICB9XG5cbiAgcHJpdmF0ZSB0ZXh0Tm9kZTogVGV4dDtcblxuICBjb25zdHJ1Y3Rvcihib3VuZHM6IEJvdW5kcywgdGV4dE5vZGU6IFNpbXBsZS5UZXh0KSB7XG4gICAgc3VwZXIoYm91bmRzKTtcbiAgICB0aGlzLnRleHROb2RlID0gdGV4dE5vZGUgYXMgVGV4dDtcbiAgfVxuXG4gIHVwZGF0ZShfZG9tOiBET01DaGFuZ2VzLCB2YWx1ZTogSW5zZXJ0aW9uKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgbGV0IHsgdGV4dE5vZGUgfSA9IHRoaXM7XG4gICAgICB0ZXh0Tm9kZS5ub2RlVmFsdWUgPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59XG5cbmNsYXNzIEhUTUxVcHNlcnQgZXh0ZW5kcyBVcHNlcnQge1xuICBzdGF0aWMgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBzdHJpbmcpOiBVcHNlcnQge1xuICAgIGxldCBib3VuZHMgPSBkb20uaW5zZXJ0SFRNTEJlZm9yZShjdXJzb3IuZWxlbWVudCwgdmFsdWUsIGN1cnNvci5uZXh0U2libGluZyk7XG4gICAgcmV0dXJuIG5ldyBIVE1MVXBzZXJ0KGJvdW5kcyk7XG4gIH1cblxuICB1cGRhdGUoZG9tOiBET01DaGFuZ2VzLCB2YWx1ZTogSW5zZXJ0aW9uKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgbGV0IHsgYm91bmRzIH0gPSB0aGlzO1xuXG4gICAgICBsZXQgcGFyZW50RWxlbWVudCA9IGJvdW5kcy5wYXJlbnRFbGVtZW50KCk7XG4gICAgICBsZXQgbmV4dFNpYmxpbmcgPSBjbGVhcihib3VuZHMpO1xuXG4gICAgICB0aGlzLmJvdW5kcyA9IGRvbS5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudEVsZW1lbnQgYXMgRklYX1JFSUZJQ0FUSU9OPEVsZW1lbnQ+LCBuZXh0U2libGluZyBhcyBGSVhfUkVJRklDQVRJT048Tm9kZT4sIHZhbHVlKTtcblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgU2FmZVN0cmluZ1Vwc2VydCBleHRlbmRzIFVwc2VydCB7XG4gIHN0YXRpYyBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IFNhZmVTdHJpbmcpOiBVcHNlcnQge1xuICAgIGxldCBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvSFRNTCgpO1xuICAgIGxldCBib3VuZHMgPSBkb20uaW5zZXJ0SFRNTEJlZm9yZShjdXJzb3IuZWxlbWVudCwgc3RyaW5nVmFsdWUsIGN1cnNvci5uZXh0U2libGluZyk7XG4gICAgcmV0dXJuIG5ldyBTYWZlU3RyaW5nVXBzZXJ0KGJvdW5kcywgc3RyaW5nVmFsdWUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoYm91bmRzOiBCb3VuZHMsIHByaXZhdGUgbGFzdFN0cmluZ1ZhbHVlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihib3VuZHMpO1xuICB9XG5cbiAgdXBkYXRlKGRvbTogRE9NQ2hhbmdlcywgdmFsdWU6IEluc2VydGlvbik6IGJvb2xlYW4ge1xuICAgIGlmIChpc1NhZmVTdHJpbmcodmFsdWUpKSB7XG4gICAgICBsZXQgc3RyaW5nVmFsdWUgPSB2YWx1ZS50b0hUTUwoKTtcblxuICAgICAgaWYgKHN0cmluZ1ZhbHVlICE9PSB0aGlzLmxhc3RTdHJpbmdWYWx1ZSkge1xuICAgICAgICBsZXQgeyBib3VuZHMgfSA9IHRoaXM7XG5cbiAgICAgICAgbGV0IHBhcmVudEVsZW1lbnQgPSBib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICAgICAgICBsZXQgbmV4dFNpYmxpbmcgPSBjbGVhcihib3VuZHMpO1xuXG4gICAgICAgIHRoaXMuYm91bmRzID0gZG9tLmluc2VydEhUTUxCZWZvcmUocGFyZW50RWxlbWVudCBhcyBGSVhfUkVJRklDQVRJT048RWxlbWVudD4sIG5leHRTaWJsaW5nIGFzIEZJWF9SRUlGSUNBVElPTjxOb2RlPiwgc3RyaW5nVmFsdWUpO1xuICAgICAgICB0aGlzLmxhc3RTdHJpbmdWYWx1ZSA9IHN0cmluZ1ZhbHVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBOb2RlVXBzZXJ0IGV4dGVuZHMgVXBzZXJ0IHtcbiAgc3RhdGljIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCBub2RlOiBTaW1wbGUuTm9kZSk6IFVwc2VydCB7XG4gICAgZG9tLmluc2VydEJlZm9yZShjdXJzb3IuZWxlbWVudCwgbm9kZSwgY3Vyc29yLm5leHRTaWJsaW5nKTtcbiAgICByZXR1cm4gbmV3IE5vZGVVcHNlcnQoc2luZ2xlKGN1cnNvci5lbGVtZW50LCBub2RlKSk7XG4gIH1cblxuICB1cGRhdGUoZG9tOiBET01DaGFuZ2VzLCB2YWx1ZTogSW5zZXJ0aW9uKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzTm9kZSh2YWx1ZSkpIHtcbiAgICAgIGxldCB7IGJvdW5kcyB9ID0gdGhpcztcblxuICAgICAgbGV0IHBhcmVudEVsZW1lbnQgPSBib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICAgICAgbGV0IG5leHRTaWJsaW5nID0gY2xlYXIoYm91bmRzKTtcblxuICAgICAgdGhpcy5ib3VuZHMgPSBkb20uaW5zZXJ0Tm9kZUJlZm9yZShwYXJlbnRFbGVtZW50IGFzIEZJWF9SRUlGSUNBVElPTjxFbGVtZW50PiwgdmFsdWUsIG5leHRTaWJsaW5nIGFzIEZJWF9SRUlGSUNBVElPTjxOb2RlPik7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59XG4iXX0=

@@ -238,6 +238,6 @@ 'use strict';

listBlock() {
return (0, _util.expect)(this.listBlockStack.current, 'expected a list block');
return this.listBlockStack.current;
}
updating() {
return (0, _util.expect)(this.updatingOpcodeStack.current, 'expected updating opcode on the updating opcode stack');
return this.updatingOpcodeStack.current;
}

@@ -248,6 +248,6 @@ elements() {

scope() {
return (0, _util.expect)(this.scopeStack.current, 'expected scope on the scope stack');
return this.scopeStack.current;
}
dynamicScope() {
return (0, _util.expect)(this.dynamicScopeStack.current, 'expected dynamic scope on the dynamic scope stack');
return this.dynamicScopeStack.current;
}

@@ -258,3 +258,3 @@ pushChildScope() {

pushCallerScope(childScope = false) {
let callerScope = (0, _util.expect)(this.scope().getCallerScope(), 'pushCallerScope is called when a caller scope is present');
let callerScope = this.scope().getCallerScope();
this.scopeStack.push(childScope ? callerScope.child() : callerScope);

@@ -309,3 +309,3 @@ }

done: true,
value: new _renderResult2.default(env, (0, _util.expect)(updatingOpcodeStack.pop(), 'there should be a final updating opcode stack'), elementStack.popBlock())
value: new _renderResult2.default(env, updatingOpcodeStack.pop(), elementStack.popBlock())
};

@@ -334,2 +334,2 @@ }

exports.default = VM;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwZW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBwZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxBQUFPLEFBQUUsQUFBUSxBQUFFLEFBQU0sQUFBWSxBQUFDOztBQUN0QyxBQUFPLEFBQUUsQUFBSyxBQUFxQyxBQUFNLEFBQWdCLEFBQUM7O0FBRTFFLEFBQU8sQUFBdUIsQUFBSyxBQUFFLEFBQVUsQUFBRSxBQUFTLEFBQWtCLEFBQU0sQUFBRSxBQUFNLEFBQWUsQUFBQzs7QUFDMUcsQUFBTyxBQUE0RCxBQUFZLEFBQUUsQUFBTSxBQUFvQixBQUFDOztBQUU1RyxBQUFPLEFBQUUsQUFBVyxBQUFFLEFBQXVCLEFBQUUsQUFBZSxBQUFFLEFBQU0sQUFBd0IsQUFBQzs7QUFDL0YsQUFBTyxBQUFXLEFBQWUsQUFBRSxBQUFTLEFBQWUsQUFBTSxBQUFVLEFBQUM7O0FBQzVFLEFBQU8sQUFBWSxBQUFNLEFBQWlCLEFBQUMsQUFFM0MsQUFBTyxBQUNMLEFBQWMsQUFFZixBQUFNLEFBQVksQUFBQyxBQWdCcEIsQUFBTTs7Ozs7OztBQVNKLGdCQUFvQixBQUFlLE9BQVMsQUFBVSxJQUFTLEFBQVU7QUFBckQsYUFBSyxRQUFMLEFBQUssQUFBVTtBQUFTLGFBQUUsS0FBRixBQUFFLEFBQVE7QUFBUyxhQUFFLEtBQUYsQUFBRSxBQUFRO0FBQ3ZFLEFBQU0sZUFBQyxBQUFJLEtBQUMsQUFBSSxBQUFDLEFBQUMsQUFDcEI7QUFBQztBQVZELEFBQU0sV0FBQyxBQUFLO0FBQ1YsQUFBTSxlQUFDLElBQUksQUFBSSxLQUFDLEFBQUUsSUFBRSxBQUFDLEdBQUUsQ0FBQyxBQUFDLEFBQUMsQUFBQyxBQUM3QjtBQUFDO0FBRUQsQUFBTSxXQUFDLEFBQU8sUUFBQyxBQUF1QjtBQUNwQyxBQUFNLGVBQUMsSUFBSSxBQUFJLEtBQUMsQUFBUSxTQUFDLEFBQUssQUFBRSxTQUFFLEFBQUMsR0FBRSxBQUFRLFNBQUMsQUFBTSxTQUFHLEFBQUMs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IHsgUmVnaXN0ZXIgfSBmcm9tICcuLi9vcGNvZGVzJztcbmltcG9ydCB7IFNjb3BlLCBEeW5hbWljU2NvcGUsIEVudmlyb25tZW50LCBPcGNvZGUgfSBmcm9tICcuLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBFbGVtZW50U3RhY2sgfSBmcm9tICcuLi9idWlsZGVyJztcbmltcG9ydCB7IE9wdGlvbiwgRGVzdHJveWFibGUsIFN0YWNrLCBMaW5rZWRMaXN0LCBMaXN0U2xpY2UsIE9wYXF1ZSwgYXNzZXJ0LCBleHBlY3QgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IFJlZmVyZW5jZUl0ZXJhdG9yLCBQYXRoUmVmZXJlbmNlLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlLCBjb21iaW5lU2xpY2UgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgQ29tcGlsZWREeW5hbWljUHJvZ3JhbSB9IGZyb20gJy4uL2NvbXBpbGVkL2Jsb2Nrcyc7XG5pbXBvcnQgeyBMYWJlbE9wY29kZSwgSnVtcElmTm90TW9kaWZpZWRPcGNvZGUsIERpZE1vZGlmeU9wY29kZSB9IGZyb20gJy4uL2NvbXBpbGVkL29wY29kZXMvdm0nO1xuaW1wb3J0IHsgVk1TdGF0ZSwgTGlzdEJsb2NrT3Bjb2RlLCBUcnlPcGNvZGUsIEJsb2NrT3Bjb2RlIH0gZnJvbSAnLi91cGRhdGUnO1xuaW1wb3J0IFJlbmRlclJlc3VsdCBmcm9tICcuL3JlbmRlci1yZXN1bHQnO1xuXG5pbXBvcnQge1xuICBBUFBFTkRfT1BDT0RFUyxcbiAgVXBkYXRpbmdPcGNvZGVcbn0gZnJvbSAnLi4vb3Bjb2Rlcyc7XG5cbmltcG9ydCB7XG4gIENvbnN0YW50cyxcbiAgQ29uc3RhbnRTdHJpbmdcbn0gZnJvbSAnLi4vZW52aXJvbm1lbnQvY29uc3RhbnRzJztcblxuZXhwb3J0IGludGVyZmFjZSBQdWJsaWNWTSB7XG4gIGVudjogRW52aXJvbm1lbnQ7XG4gIGR5bmFtaWNTY29wZSgpOiBEeW5hbWljU2NvcGU7XG4gIGdldFNlbGYoKTogUGF0aFJlZmVyZW5jZTxPcGFxdWU+O1xuICBuZXdEZXN0cm95YWJsZShkOiBEZXN0cm95YWJsZSk6IHZvaWQ7XG59XG5cbmV4cG9ydCB0eXBlIENhcHR1cmVkU3RhY2sgPSBPcGFxdWVbXTtcblxuZXhwb3J0IGNsYXNzIEV2YWx1YXRpb25TdGFjayB7XG4gIHN0YXRpYyBlbXB0eSgpOiBFdmFsdWF0aW9uU3RhY2sge1xuICAgIHJldHVybiBuZXcgdGhpcyhbXSwgMCwgLTEpO1xuICB9XG5cbiAgc3RhdGljIHJlc3RvcmUoc25hcHNob3Q6IENhcHR1cmVkU3RhY2spOiBFdmFsdWF0aW9uU3RhY2sge1xuICAgIHJldHVybiBuZXcgdGhpcyhzbmFwc2hvdC5zbGljZSgpLCAwLCBzbmFwc2hvdC5sZW5ndGggLSAxKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RhY2s6IE9wYXF1ZVtdLCBwdWJsaWMgZnA6IG51bWJlciwgcHVibGljIHNwOiBudW1iZXIpIHtcbiAgICBPYmplY3Quc2VhbCh0aGlzKTtcbiAgfVxuXG4gIGlzRW1wdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3AgPT09IC0xO1xuICB9XG5cbiAgcHVzaCh2YWx1ZTogT3BhcXVlKTogdm9pZCB7XG4gICAgdGhpcy5zdGFja1srK3RoaXMuc3BdID0gdmFsdWU7XG4gIH1cblxuICBkdXAocG9zaXRpb24gPSB0aGlzLnNwKTogdm9pZCB7XG4gICAgdGhpcy5wdXNoKHRoaXMuc3RhY2tbcG9zaXRpb25dKTtcbiAgfVxuXG4gIHBvcDxUPihuID0gMSk6IFQge1xuICAgIGxldCB0b3AgPSB0aGlzLnN0YWNrW3RoaXMuc3BdIGFzIFQ7XG4gICAgdGhpcy5zcCAtPSBuO1xuICAgIHJldHVybiB0b3A7XG4gIH1cblxuICBwZWVrPFQ+KCk6IFQge1xuICAgIHJldHVybiB0aGlzLnN0YWNrW3RoaXMuc3BdIGFzIFQ7XG4gIH1cblxuICBmcm9tQmFzZTxUPihvZmZzZXQ6IG51bWJlcik6IFQge1xuICAgIHJldHVybiB0aGlzLnN0YWNrW3RoaXMuZnAgLSBvZmZzZXRdIGFzIFQ7XG4gIH1cblxuICBmcm9tVG9wPFQ+KG9mZnNldDogbnVtYmVyKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2tbdGhpcy5zcCAtIG9mZnNldF0gYXMgVDtcbiAgfVxuXG4gIGNhcHR1cmUoaXRlbXM6IG51bWJlcik6IENhcHR1cmVkU3RhY2sge1xuICAgIGxldCBlbmQgPSB0aGlzLnNwICsgMTtcbiAgICBsZXQgc3RhcnQgPSBlbmQgLSBpdGVtcztcbiAgICByZXR1cm4gdGhpcy5zdGFjay5zbGljZShzdGFydCwgZW5kKTtcbiAgfVxuXG4gIHRvQXJyYXkoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2suc2xpY2UodGhpcy5mcCwgdGhpcy5zcCArIDEpO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIEl0ZXJhdG9yUmVzdWx0PFQ+ID0ge1xuICBkb25lOiBmYWxzZTtcbiAgdmFsdWU6IG51bGw7XG59IHwge1xuICBkb25lOiB0cnVlO1xuICB2YWx1ZTogVDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZNIGltcGxlbWVudHMgUHVibGljVk0ge1xuICBwcml2YXRlIGR5bmFtaWNTY29wZVN0YWNrID0gbmV3IFN0YWNrPER5bmFtaWNTY29wZT4oKTtcbiAgcHJpdmF0ZSBzY29wZVN0YWNrID0gbmV3IFN0YWNrPFNjb3BlPigpO1xuICBwdWJsaWMgdXBkYXRpbmdPcGNvZGVTdGFjayA9IG5ldyBTdGFjazxMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPj4oKTtcbiAgcHVibGljIGNhY2hlR3JvdXBzID0gbmV3IFN0YWNrPE9wdGlvbjxVcGRhdGluZ09wY29kZT4+KCk7XG4gIHB1YmxpYyBsaXN0QmxvY2tTdGFjayA9IG5ldyBTdGFjazxMaXN0QmxvY2tPcGNvZGU+KCk7XG4gIHB1YmxpYyBjb25zdGFudHM6IENvbnN0YW50cztcblxuICBwdWJsaWMgc3RhY2sgPSBFdmFsdWF0aW9uU3RhY2suZW1wdHkoKTtcblxuICAvKiogUmVnaXN0ZXJzICoqL1xuXG4gIHByaXZhdGUgcGMgPSAtMTtcbiAgcHJpdmF0ZSByYSA9IC0xO1xuXG4gIHByaXZhdGUgZ2V0IGZwKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2suZnA7XG4gIH1cblxuICBwcml2YXRlIHNldCBmcChmcDogbnVtYmVyKSB7XG4gICAgdGhpcy5zdGFjay5mcCA9IGZwO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgc3AoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zdGFjay5zcDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0IHNwKHNwOiBudW1iZXIpIHtcbiAgICB0aGlzLnN0YWNrLnNwID0gc3A7XG4gIH1cblxuICBwdWJsaWMgczA6IGFueSA9IG51bGw7XG4gIHB1YmxpYyBzMTogYW55ID0gbnVsbDtcbiAgcHVibGljIHQwOiBhbnkgPSBudWxsO1xuICBwdWJsaWMgdDE6IGFueSA9IG51bGw7XG5cbiAgLy8gRmV0Y2ggYSB2YWx1ZSBmcm9tIGEgcmVnaXN0ZXIgb250byB0aGUgc3RhY2tcbiAgZmV0Y2gocmVnaXN0ZXI6IFJlZ2lzdGVyKSB7XG4gICAgdGhpcy5zdGFjay5wdXNoKHRoaXNbUmVnaXN0ZXJbcmVnaXN0ZXJdXSk7XG4gIH1cblxuICAvLyBMb2FkIGEgdmFsdWUgZnJvbSB0aGUgc3RhY2sgaW50byBhIHJlZ2lzdGVyXG4gIGxvYWQocmVnaXN0ZXI6IFJlZ2lzdGVyKSB7XG4gICAgdGhpc1tSZWdpc3RlcltyZWdpc3Rlcl1dID0gdGhpcy5zdGFjay5wb3AoKTtcbiAgfVxuXG4gIC8vIEZldGNoIGEgdmFsdWUgZnJvbSBhIHJlZ2lzdGVyXG4gIGZldGNoVmFsdWU8VD4ocmVnaXN0ZXI6IFJlZ2lzdGVyKTogVCB7XG4gICAgcmV0dXJuIHRoaXNbUmVnaXN0ZXJbcmVnaXN0ZXJdXTtcbiAgfVxuXG4gIC8vIExvYWQgYSB2YWx1ZSBpbnRvIGEgcmVnaXN0ZXJcbiAgbG9hZFZhbHVlPFQ+KHJlZ2lzdGVyOiBSZWdpc3RlciwgdmFsdWU6IFQpIHtcbiAgICB0aGlzW1JlZ2lzdGVyW3JlZ2lzdGVyXV0gPSB2YWx1ZTtcbiAgfVxuXG4gIC8vIFN0YXJ0IGEgbmV3IGZyYW1lIGFuZCBzYXZlICRyYSBhbmQgJGZwIG9uIHRoZSBzdGFja1xuICBwdXNoRnJhbWUoKSB7XG4gICAgdGhpcy5zdGFjay5wdXNoKHRoaXMucmEpO1xuICAgIHRoaXMuc3RhY2sucHVzaCh0aGlzLmZwKTtcbiAgICB0aGlzLmZwID0gdGhpcy5zcCAtIDE7XG4gICAgLy8gdGhpcy5mcCA9IHRoaXMuc3AgKyAxO1xuICB9XG5cbiAgLy8gUmVzdG9yZSAkcmEsICRzcCBhbmQgJGZwXG4gIHBvcEZyYW1lKCkge1xuICAgIHRoaXMuc3AgPSB0aGlzLmZwIC0gMTtcbiAgICB0aGlzLnJhID0gdGhpcy5zdGFjay5mcm9tQmFzZTxudW1iZXI+KDApO1xuICAgIHRoaXMuZnAgPSB0aGlzLnN0YWNrLmZyb21CYXNlPG51bWJlcj4oLTEpO1xuICB9XG5cbiAgLy8gSnVtcCB0byBhbiBhZGRyZXNzIGluIGBwcm9ncmFtYFxuICBnb3RvKHBjOiBudW1iZXIpIHtcbiAgICB0aGlzLnBjID0gcGM7XG4gIH1cblxuICAvLyBTYXZlICRwYyBpbnRvICRyYSwgdGhlbiBqdW1wIHRvIGEgbmV3IGFkZHJlc3MgaW4gYHByb2dyYW1gIChqYWwgaW4gTUlQUylcbiAgY2FsbChwYzogbnVtYmVyKSB7XG4gICAgdGhpcy5yYSA9IHRoaXMucGM7XG4gICAgdGhpcy5wYyA9IHBjO1xuICB9XG5cbiAgLy8gUHV0IGEgc3BlY2lmaWMgYHByb2dyYW1gIGFkZHJlc3MgaW4gJHJhXG4gIHJldHVyblRvKHJhOiBudW1iZXIpIHtcbiAgICB0aGlzLnJhID0gcmE7XG4gIH1cblxuICAvLyBSZXR1cm4gdG8gdGhlIGBwcm9ncmFtYCBhZGRyZXNzIHN0b3JlZCBpbiAkcmFcbiAgcmV0dXJuKCkge1xuICAgIHRoaXMucGMgPSB0aGlzLnJhO1xuICB9XG5cbiAgc3RhdGljIGluaXRpYWwoXG4gICAgZW52OiBFbnZpcm9ubWVudCxcbiAgICBzZWxmOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sXG4gICAgZHluYW1pY1Njb3BlOiBEeW5hbWljU2NvcGUsXG4gICAgZWxlbWVudFN0YWNrOiBFbGVtZW50U3RhY2ssXG4gICAgcHJvZ3JhbTogQ29tcGlsZWREeW5hbWljUHJvZ3JhbVxuICApIHtcbiAgICBsZXQgc2NvcGUgPSBTY29wZS5yb290KHNlbGYsIHByb2dyYW0uc3ltYm9sVGFibGUuc3ltYm9scy5sZW5ndGgpO1xuICAgIGxldCB2bSA9IG5ldyBWTShlbnYsIHNjb3BlLCBkeW5hbWljU2NvcGUsIGVsZW1lbnRTdGFjayk7XG4gICAgdm0ucGMgPSBwcm9ncmFtLnN0YXJ0O1xuICAgIHZtLnVwZGF0aW5nT3Bjb2RlU3RhY2sucHVzaChuZXcgTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4oKSk7XG4gICAgcmV0dXJuIHZtO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGVudjogRW52aXJvbm1lbnQsXG4gICAgc2NvcGU6IFNjb3BlLFxuICAgIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlLFxuICAgIHByaXZhdGUgZWxlbWVudFN0YWNrOiBFbGVtZW50U3RhY2ssXG4gICkge1xuICAgIHRoaXMuZW52ID0gZW52O1xuICAgIHRoaXMuY29uc3RhbnRzID0gZW52LmNvbnN0YW50cztcbiAgICB0aGlzLmVsZW1lbnRTdGFjayA9IGVsZW1lbnRTdGFjaztcbiAgICB0aGlzLnNjb3BlU3RhY2sucHVzaChzY29wZSk7XG4gICAgdGhpcy5keW5hbWljU2NvcGVTdGFjay5wdXNoKGR5bmFtaWNTY29wZSk7XG4gIH1cblxuICBjYXB0dXJlKGFyZ3M6IG51bWJlcik6IFZNU3RhdGUge1xuICAgIHJldHVybiB7XG4gICAgICBlbnY6IHRoaXMuZW52LFxuICAgICAgc2NvcGU6IHRoaXMuc2NvcGUoKSxcbiAgICAgIGR5bmFtaWNTY29wZTogdGhpcy5keW5hbWljU2NvcGUoKSxcbiAgICAgIHN0YWNrOiB0aGlzLnN0YWNrLmNhcHR1cmUoYXJncylcbiAgICB9O1xuICB9XG5cbiAgYmVnaW5DYWNoZUdyb3VwKCkge1xuICAgIHRoaXMuY2FjaGVHcm91cHMucHVzaCh0aGlzLnVwZGF0aW5nKCkudGFpbCgpKTtcbiAgfVxuXG4gIGNvbW1pdENhY2hlR3JvdXAoKSB7XG4gICAgLy8gICAgICAgIEp1bXBJZk5vdE1vZGlmaWVkKEVORClcbiAgICAvLyAgICAgICAgKGhlYWQpXG4gICAgLy8gICAgICAgICguLi4uKVxuICAgIC8vICAgICAgICAodGFpbClcbiAgICAvLyAgICAgICAgRGlkTW9kaWZ5XG4gICAgLy8gRU5EOiAgIE5vb3BcblxuICAgIGxldCBFTkQgPSBuZXcgTGFiZWxPcGNvZGUoXCJFTkRcIik7XG5cbiAgICBsZXQgb3Bjb2RlcyA9IHRoaXMudXBkYXRpbmcoKTtcbiAgICBsZXQgbWFya2VyID0gdGhpcy5jYWNoZUdyb3Vwcy5wb3AoKTtcbiAgICBsZXQgaGVhZCA9IG1hcmtlciA/IG9wY29kZXMubmV4dE5vZGUobWFya2VyKSA6IG9wY29kZXMuaGVhZCgpO1xuICAgIGxldCB0YWlsID0gb3Bjb2Rlcy50YWlsKCk7XG4gICAgbGV0IHRhZyA9IGNvbWJpbmVTbGljZShuZXcgTGlzdFNsaWNlKGhlYWQsIHRhaWwpKTtcblxuICAgIGxldCBndWFyZCA9IG5ldyBKdW1wSWZOb3RNb2RpZmllZE9wY29kZSh0YWcsIEVORCk7XG5cbiAgICBvcGNvZGVzLmluc2VydEJlZm9yZShndWFyZCwgaGVhZCk7XG4gICAgb3Bjb2Rlcy5hcHBlbmQobmV3IERpZE1vZGlmeU9wY29kZShndWFyZCkpO1xuICAgIG9wY29kZXMuYXBwZW5kKEVORCk7XG4gIH1cblxuICBlbnRlcihhcmdzOiBudW1iZXIpIHtcbiAgICBsZXQgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4oKTtcblxuICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZShhcmdzKTtcbiAgICBsZXQgdHJhY2tlciA9IHRoaXMuZWxlbWVudHMoKS5wdXNoVXBkYXRhYmxlQmxvY2soKTtcblxuICAgIGxldCB0cnlPcGNvZGUgPSBuZXcgVHJ5T3Bjb2RlKHRoaXMucGMsIHN0YXRlLCB0cmFja2VyLCB1cGRhdGluZyk7XG5cbiAgICB0aGlzLmRpZEVudGVyKHRyeU9wY29kZSk7XG4gIH1cblxuICBpdGVyYXRlKG1lbW86IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgdmFsdWU6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4oKSk6IFRyeU9wY29kZSB7XG4gICAgbGV0IHN0YWNrID0gdGhpcy5zdGFjaztcbiAgICBzdGFjay5wdXNoKHZhbHVlKTtcbiAgICBzdGFjay5wdXNoKG1lbW8pO1xuXG4gICAgbGV0IHN0YXRlID0gdGhpcy5jYXB0dXJlKDIpO1xuICAgIGxldCB0cmFja2VyID0gdGhpcy5lbGVtZW50cygpLnB1c2hVcGRhdGFibGVCbG9jaygpO1xuXG4gICAgLy8gbGV0IGlwID0gdGhpcy5pcDtcbiAgICAvLyB0aGlzLmlwID0gZW5kICsgNDtcbiAgICAvLyB0aGlzLmZyYW1lcy5wdXNoKGlwKTtcblxuICAgIHJldHVybiBuZXcgVHJ5T3Bjb2RlKHRoaXMucGMsIHN0YXRlLCB0cmFja2VyLCB1cGRhdGluZyk7XG4gIH1cblxuICBlbnRlckl0ZW0oa2V5OiBzdHJpbmcsIG9wY29kZTogVHJ5T3Bjb2RlKSB7XG4gICAgdGhpcy5saXN0QmxvY2soKS5tYXBba2V5XSA9IG9wY29kZTtcbiAgICB0aGlzLmRpZEVudGVyKG9wY29kZSk7XG4gIH1cblxuICBlbnRlckxpc3Qoc3RhcnQ6IG51bWJlcikge1xuICAgIGxldCB1cGRhdGluZyA9IG5ldyBMaW5rZWRMaXN0PEJsb2NrT3Bjb2RlPigpO1xuXG4gICAgbGV0IHN0YXRlID0gdGhpcy5jYXB0dXJlKDApO1xuICAgIGxldCB0cmFja2VyID0gdGhpcy5lbGVtZW50cygpLnB1c2hCbG9ja0xpc3QodXBkYXRpbmcpO1xuICAgIGxldCBhcnRpZmFjdHMgPSB0aGlzLnN0YWNrLnBlZWs8UmVmZXJlbmNlSXRlcmF0b3I+KCkuYXJ0aWZhY3RzO1xuXG4gICAgbGV0IG9wY29kZSA9IG5ldyBMaXN0QmxvY2tPcGNvZGUoc3RhcnQsIHN0YXRlLCB0cmFja2VyLCB1cGRhdGluZywgYXJ0aWZhY3RzKTtcblxuICAgIHRoaXMubGlzdEJsb2NrU3RhY2sucHVzaChvcGNvZGUpO1xuXG4gICAgdGhpcy5kaWRFbnRlcihvcGNvZGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBkaWRFbnRlcihvcGNvZGU6IEJsb2NrT3Bjb2RlKSB7XG4gICAgdGhpcy51cGRhdGVXaXRoKG9wY29kZSk7XG4gICAgdGhpcy51cGRhdGluZ09wY29kZVN0YWNrLnB1c2gob3Bjb2RlLmNoaWxkcmVuKTtcbiAgfVxuXG4gIGV4aXQoKSB7XG4gICAgdGhpcy5lbGVtZW50cygpLnBvcEJsb2NrKCk7XG4gICAgdGhpcy51cGRhdGluZ09wY29kZVN0YWNrLnBvcCgpO1xuXG4gICAgbGV0IHBhcmVudCA9IHRoaXMudXBkYXRpbmcoKS50YWlsKCkgYXMgQmxvY2tPcGNvZGU7XG5cbiAgICBwYXJlbnQuZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKCk7XG4gIH1cblxuICBleGl0TGlzdCgpIHtcbiAgICB0aGlzLmV4aXQoKTtcbiAgICB0aGlzLmxpc3RCbG9ja1N0YWNrLnBvcCgpO1xuICB9XG5cbiAgdXBkYXRlV2l0aChvcGNvZGU6IFVwZGF0aW5nT3Bjb2RlKSB7XG4gICAgdGhpcy51cGRhdGluZygpLmFwcGVuZChvcGNvZGUpO1xuICB9XG5cbiAgbGlzdEJsb2NrKCk6IExpc3RCbG9ja09wY29kZSB7XG4gICAgcmV0dXJuIGV4cGVjdCh0aGlzLmxpc3RCbG9ja1N0YWNrLmN1cnJlbnQsICdleHBlY3RlZCBhIGxpc3QgYmxvY2snKTtcbiAgfVxuXG4gIHVwZGF0aW5nKCk6IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+IHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5jdXJyZW50LCAnZXhwZWN0ZWQgdXBkYXRpbmcgb3Bjb2RlIG9uIHRoZSB1cGRhdGluZyBvcGNvZGUgc3RhY2snKTtcbiAgfVxuXG4gIGVsZW1lbnRzKCk6IEVsZW1lbnRTdGFjayB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFN0YWNrO1xuICB9XG5cbiAgc2NvcGUoKTogU2NvcGUge1xuICAgIHJldHVybiBleHBlY3QodGhpcy5zY29wZVN0YWNrLmN1cnJlbnQsICdleHBlY3RlZCBzY29wZSBvbiB0aGUgc2NvcGUgc3RhY2snKTtcbiAgfVxuXG4gIGR5bmFtaWNTY29wZSgpOiBEeW5hbWljU2NvcGUge1xuICAgIHJldHVybiBleHBlY3QodGhpcy5keW5hbWljU2NvcGVTdGFjay5jdXJyZW50LCAnZXhwZWN0ZWQgZHluYW1pYyBzY29wZSBvbiB0aGUgZHluYW1pYyBzY29wZSBzdGFjaycpO1xuICB9XG5cbiAgcHVzaENoaWxkU2NvcGUoKSB7XG4gICAgdGhpcy5zY29wZVN0YWNrLnB1c2godGhpcy5zY29wZSgpLmNoaWxkKCkpO1xuICB9XG5cbiAgcHVzaENhbGxlclNjb3BlKGNoaWxkU2NvcGUgPSBmYWxzZSkge1xuICAgIGxldCBjYWxsZXJTY29wZSA9IGV4cGVjdCh0aGlzLnNjb3BlKCkuZ2V0Q2FsbGVyU2NvcGUoKSwgJ3B1c2hDYWxsZXJTY29wZSBpcyBjYWxsZWQgd2hlbiBhIGNhbGxlciBzY29wZSBpcyBwcmVzZW50Jyk7XG4gICAgdGhpcy5zY29wZVN0YWNrLnB1c2goY2hpbGRTY29wZSA/IGNhbGxlclNjb3BlLmNoaWxkKCkgOiBjYWxsZXJTY29wZSk7XG4gIH1cblxuICBwdXNoRHluYW1pY1Njb3BlKCk6IER5bmFtaWNTY29wZSB7XG4gICAgbGV0IGNoaWxkID0gdGhpcy5keW5hbWljU2NvcGUoKS5jaGlsZCgpO1xuICAgIHRoaXMuZHluYW1pY1Njb3BlU3RhY2sucHVzaChjaGlsZCk7XG4gICAgcmV0dXJuIGNoaWxkO1xuICB9XG5cbiAgcHVzaFJvb3RTY29wZShzaXplOiBudW1iZXIsIGJpbmRDYWxsZXI6IGJvb2xlYW4pOiBTY29wZSB7XG4gICAgbGV0IHNjb3BlID0gU2NvcGUuc2l6ZWQoc2l6ZSk7XG4gICAgaWYgKGJpbmRDYWxsZXIpIHNjb3BlLmJpbmRDYWxsZXJTY29wZSh0aGlzLnNjb3BlKCkpO1xuICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKHNjb3BlKTtcbiAgICByZXR1cm4gc2NvcGU7XG4gIH1cblxuICBwb3BTY29wZSgpIHtcbiAgICB0aGlzLnNjb3BlU3RhY2sucG9wKCk7XG4gIH1cblxuICBwb3BEeW5hbWljU2NvcGUoKSB7XG4gICAgdGhpcy5keW5hbWljU2NvcGVTdGFjay5wb3AoKTtcbiAgfVxuXG4gIG5ld0Rlc3Ryb3lhYmxlKGQ6IERlc3Ryb3lhYmxlKSB7XG4gICAgdGhpcy5lbGVtZW50cygpLm5ld0Rlc3Ryb3lhYmxlKGQpO1xuICB9XG5cbiAgLy8vIFNDT1BFIEhFTFBFUlNcblxuICBnZXRTZWxmKCk6IFBhdGhSZWZlcmVuY2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuc2NvcGUoKS5nZXRTZWxmKCk7XG4gIH1cblxuICByZWZlcmVuY2VGb3JTeW1ib2woc3ltYm9sOiBudW1iZXIpOiBQYXRoUmVmZXJlbmNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnNjb3BlKCkuZ2V0U3ltYm9sKHN5bWJvbCk7XG4gIH1cblxuICAvLy8gRVhFQ1VUSU9OXG5cbiAgZXhlY3V0ZShzdGFydDogbnVtYmVyLCBpbml0aWFsaXplPzogKHZtOiBWTSkgPT4gdm9pZCk6IFJlbmRlclJlc3VsdCB7XG4gICAgdGhpcy5wYyA9IHN0YXJ0O1xuXG4gICAgaWYgKGluaXRpYWxpemUpIGluaXRpYWxpemUodGhpcyk7XG5cbiAgICBsZXQgcmVzdWx0OiBJdGVyYXRvclJlc3VsdDxSZW5kZXJSZXN1bHQ+O1xuXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIHJlc3VsdCA9IHRoaXMubmV4dCgpO1xuICAgICAgaWYgKHJlc3VsdC5kb25lKSBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0LnZhbHVlIGFzIFJlbmRlclJlc3VsdDtcbiAgfVxuXG4gIG5leHQoKTogSXRlcmF0b3JSZXN1bHQ8UmVuZGVyUmVzdWx0PiB7XG4gICAgbGV0IHsgZW52LCB1cGRhdGluZ09wY29kZVN0YWNrLCBlbGVtZW50U3RhY2sgfSA9IHRoaXM7XG4gICAgbGV0IG9wY29kZTogT3B0aW9uPE9wY29kZT47XG5cbiAgICBpZiAob3Bjb2RlID0gdGhpcy5uZXh0U3RhdGVtZW50KGVudikpIHtcbiAgICAgIEFQUEVORF9PUENPREVTLmV2YWx1YXRlKHRoaXMsIG9wY29kZSwgb3Bjb2RlLnR5cGUpO1xuICAgICAgcmV0dXJuIHsgZG9uZTogZmFsc2UsIHZhbHVlOiBudWxsIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRvbmU6IHRydWUsXG4gICAgICB2YWx1ZTogbmV3IFJlbmRlclJlc3VsdChcbiAgICAgICAgZW52LFxuICAgICAgICBleHBlY3QodXBkYXRpbmdPcGNvZGVTdGFjay5wb3AoKSwgJ3RoZXJlIHNob3VsZCBiZSBhIGZpbmFsIHVwZGF0aW5nIG9wY29kZSBzdGFjaycpLFxuICAgICAgICBlbGVtZW50U3RhY2sucG9wQmxvY2soKVxuICAgICAgKVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIG5leHRTdGF0ZW1lbnQoZW52OiBFbnZpcm9ubWVudCk6IE9wdGlvbjxPcGNvZGU+IHtcbiAgICBsZXQgeyBwYyB9ID0gdGhpcztcblxuICAgIGlmIChwYyA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCBwcm9ncmFtID0gZW52LnByb2dyYW07XG4gICAgdGhpcy5wYyArPSA0O1xuICAgIHJldHVybiBwcm9ncmFtLm9wY29kZShwYyk7XG4gIH1cblxuICBldmFsdWF0ZU9wY29kZShvcGNvZGU6IE9wY29kZSkge1xuICAgIEFQUEVORF9PUENPREVTLmV2YWx1YXRlKHRoaXMsIG9wY29kZSwgb3Bjb2RlLnR5cGUpO1xuICB9XG5cbiAgYmluZER5bmFtaWNTY29wZShuYW1lczogQ29uc3RhbnRTdHJpbmdbXSkge1xuICAgIGxldCBzY29wZSA9IHRoaXMuZHluYW1pY1Njb3BlKCk7XG5cbiAgICBmb3IobGV0IGk9bmFtZXMubGVuZ3RoIC0gMTsgaT49MDsgaS0tKSB7XG4gICAgICBsZXQgbmFtZSA9IHRoaXMuY29uc3RhbnRzLmdldFN0cmluZyhuYW1lc1tpXSk7XG4gICAgICBzY29wZS5zZXQobmFtZSwgdGhpcy5zdGFjay5wb3A8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+PigpKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwZW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBwZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxBQUFPLEFBQUUsQUFBUSxBQUFFLEFBQU0sQUFBWSxBQUFDOztBQUN0QyxBQUFPLEFBQUUsQUFBSyxBQUFxQyxBQUFNLEFBQWdCLEFBQUM7O0FBRTFFLEFBQU8sQUFBdUIsQUFBSyxBQUFFLEFBQVUsQUFBRSxBQUFTLEFBQVUsQUFBTSxBQUFlLEFBQUM7O0FBQzFGLEFBQU8sQUFBNEQsQUFBWSxBQUFFLEFBQU0sQUFBb0IsQUFBQzs7QUFFNUcsQUFBTyxBQUFFLEFBQVcsQUFBRSxBQUF1QixBQUFFLEFBQWUsQUFBRSxBQUFNLEFBQXdCLEFBQUM7O0FBQy9GLEFBQU8sQUFBVyxBQUFlLEFBQUUsQUFBUyxBQUFlLEFBQU0sQUFBVSxBQUFDOztBQUM1RSxBQUFPLEFBQVksQUFBTSxBQUFpQixBQUFDLEFBRTNDLEFBQU8sQUFDTCxBQUFjLEFBRWYsQUFBTSxBQUFZLEFBQUMsQUFnQnBCLEFBQU07Ozs7Ozs7QUFTSixnQkFBb0IsQUFBZSxPQUFTLEFBQVUsSUFBUyxBQUFVO0FBQXJELGFBQUssUUFBTCxBQUFLLEFBQVU7QUFBUyxhQUFFLEtBQUYsQUFBRSxBQUFRO0FBQVMsYUFBRSxLQUFGLEFBQUUsQUFBUTtBQUN2RSxBQUFNLGVBQUMsQUFBSSxLQUFDLEFBQUksQUFBQyxBQUFDLEFBQ3BCO0FBQUM7QUFWRCxBQUFNLFdBQUMsQUFBSztBQUNWLEFBQU0sZUFBQyxJQUFJLEFBQUksS0FBQyxBQUFFLElBQUUsQUFBQyxHQUFFLENBQUMsQUFBQyxBQUFDLEFBQUMsQUFDN0I7QUFBQztBQUVELEFBQU0sV0FBQyxBQUFPLFFBQUMsQUFBdUI7QUFDcEMsQUFBTSxlQUFDLElBQUksQUFBSSxLQUFDLEFBQVEsU0FBQyxBQUFLLEFBQUUsU0FBRSxBQUFDLEdBQUUsQUFBUSxTQUFDLEFBQU0sU0FBRyxBQUFDLEFBQUMsQUFBQyxB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QUFBSSxBQUFDO0FBRWxCLEFBQUUsQUFBQyxZQUFDLEFBQUUsT0FBSyxDQUFDLEFBQUMsQUFBQyxHQUFDLEFBQUM7QUFDZCxBQUFNLG1CQUFDLEFBQUksQUFBQyxBQUNkO0FBQUM7QUFFRCxZQUFJLEFBQU8sVUFBRyxBQUFHLElBQUMsQUFBTyxBQUFDO0FBQzFCLEFBQUksYUFBQyxBQUFFLE1BQUksQUFBQyxBQUFDO0FBQ2IsQUFBTSxlQUFDLEFBQU8sUUFBQyxBQUFNLE9BQUMsQUFBRSxBQUFDLEFBQUMsQUFDNUI7QUFBQztBQUVELEFBQWMsbUJBQUMsQUFBYztBQUMzQixBQUFjLGdDQUFDLEFBQVEsU0FBQyxBQUFJLE1BQUUsQUFBTSxRQUFFLEFBQU0sT0FBQyxBQUFJLEFBQUMsQUFBQyxBQUNyRDtBQUFDO0FBRUQsQUFBZ0IscUJBQUMsQUFBdUI7QUFDdEMsWUFBSSxBQUFLLFFBQUcsQUFBSSxLQUFDLEFBQVksQUFBRSxBQUFDO0FBRWhDLEFBQUcsYUFBQyxJQUFJLEFBQUMsSUFBQyxBQUFLLE1BQUMsQUFBTSxTQUFHLEFBQUMsR0FBRSxBQUFDLEtBQUUsQUFBQyxHQUFFLEFBQUMsQUFBRSxLQUFFLEFBQUM7QUFDdEMsZ0JBQUksQUFBSSxPQUFHLEFBQUksS0FBQyxBQUFTLFVBQUMsQUFBUyxVQUFDLEFBQUssTUFBQyxBQUFDLEFBQUMsQUFBQyxBQUFDO0FBQzlDLEFBQUssa0JBQUMsQUFBRyxJQUFDLEFBQUksTUFBRSxBQUFJLEtBQUMsQUFBSyxNQUFDLEFBQUcsQUFBa0MsQUFBQyxBQUFDLEFBQ3BFO0FBQUMsQUFDSDtBQUFDLEFBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWdpc3RlciB9IGZyb20gJy4uL29wY29kZXMnO1xuaW1wb3J0IHsgU2NvcGUsIER5bmFtaWNTY29wZSwgRW52aXJvbm1lbnQsIE9wY29kZSB9IGZyb20gJy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IEVsZW1lbnRTdGFjayB9IGZyb20gJy4uL2J1aWxkZXInO1xuaW1wb3J0IHsgT3B0aW9uLCBEZXN0cm95YWJsZSwgU3RhY2ssIExpbmtlZExpc3QsIExpc3RTbGljZSwgT3BhcXVlIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBSZWZlcmVuY2VJdGVyYXRvciwgUGF0aFJlZmVyZW5jZSwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgY29tYmluZVNsaWNlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IENvbXBpbGVkRHluYW1pY1Byb2dyYW0gfSBmcm9tICcuLi9jb21waWxlZC9ibG9ja3MnO1xuaW1wb3J0IHsgTGFiZWxPcGNvZGUsIEp1bXBJZk5vdE1vZGlmaWVkT3Bjb2RlLCBEaWRNb2RpZnlPcGNvZGUgfSBmcm9tICcuLi9jb21waWxlZC9vcGNvZGVzL3ZtJztcbmltcG9ydCB7IFZNU3RhdGUsIExpc3RCbG9ja09wY29kZSwgVHJ5T3Bjb2RlLCBCbG9ja09wY29kZSB9IGZyb20gJy4vdXBkYXRlJztcbmltcG9ydCBSZW5kZXJSZXN1bHQgZnJvbSAnLi9yZW5kZXItcmVzdWx0JztcblxuaW1wb3J0IHtcbiAgQVBQRU5EX09QQ09ERVMsXG4gIFVwZGF0aW5nT3Bjb2RlXG59IGZyb20gJy4uL29wY29kZXMnO1xuXG5pbXBvcnQge1xuICBDb25zdGFudHMsXG4gIENvbnN0YW50U3RyaW5nXG59IGZyb20gJy4uL2Vudmlyb25tZW50L2NvbnN0YW50cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGljVk0ge1xuICBlbnY6IEVudmlyb25tZW50O1xuICBkeW5hbWljU2NvcGUoKTogRHluYW1pY1Njb3BlO1xuICBnZXRTZWxmKCk6IFBhdGhSZWZlcmVuY2U8T3BhcXVlPjtcbiAgbmV3RGVzdHJveWFibGUoZDogRGVzdHJveWFibGUpOiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBDYXB0dXJlZFN0YWNrID0gT3BhcXVlW107XG5cbmV4cG9ydCBjbGFzcyBFdmFsdWF0aW9uU3RhY2sge1xuICBzdGF0aWMgZW1wdHkoKTogRXZhbHVhdGlvblN0YWNrIHtcbiAgICByZXR1cm4gbmV3IHRoaXMoW10sIDAsIC0xKTtcbiAgfVxuXG4gIHN0YXRpYyByZXN0b3JlKHNuYXBzaG90OiBDYXB0dXJlZFN0YWNrKTogRXZhbHVhdGlvblN0YWNrIHtcbiAgICByZXR1cm4gbmV3IHRoaXMoc25hcHNob3Quc2xpY2UoKSwgMCwgc25hcHNob3QubGVuZ3RoIC0gMSk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0YWNrOiBPcGFxdWVbXSwgcHVibGljIGZwOiBudW1iZXIsIHB1YmxpYyBzcDogbnVtYmVyKSB7XG4gICAgT2JqZWN0LnNlYWwodGhpcyk7XG4gIH1cblxuICBpc0VtcHR5KCkge1xuICAgIHJldHVybiB0aGlzLnNwID09PSAtMTtcbiAgfVxuXG4gIHB1c2godmFsdWU6IE9wYXF1ZSk6IHZvaWQge1xuICAgIHRoaXMuc3RhY2tbKyt0aGlzLnNwXSA9IHZhbHVlO1xuICB9XG5cbiAgZHVwKHBvc2l0aW9uID0gdGhpcy5zcCk6IHZvaWQge1xuICAgIHRoaXMucHVzaCh0aGlzLnN0YWNrW3Bvc2l0aW9uXSk7XG4gIH1cblxuICBwb3A8VD4obiA9IDEpOiBUIHtcbiAgICBsZXQgdG9wID0gdGhpcy5zdGFja1t0aGlzLnNwXSBhcyBUO1xuICAgIHRoaXMuc3AgLT0gbjtcbiAgICByZXR1cm4gdG9wO1xuICB9XG5cbiAgcGVlazxUPigpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5zdGFja1t0aGlzLnNwXSBhcyBUO1xuICB9XG5cbiAgZnJvbUJhc2U8VD4ob2Zmc2V0OiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5zdGFja1t0aGlzLmZwIC0gb2Zmc2V0XSBhcyBUO1xuICB9XG5cbiAgZnJvbVRvcDxUPihvZmZzZXQ6IG51bWJlcik6IFQge1xuICAgIHJldHVybiB0aGlzLnN0YWNrW3RoaXMuc3AgLSBvZmZzZXRdIGFzIFQ7XG4gIH1cblxuICBjYXB0dXJlKGl0ZW1zOiBudW1iZXIpOiBDYXB0dXJlZFN0YWNrIHtcbiAgICBsZXQgZW5kID0gdGhpcy5zcCArIDE7XG4gICAgbGV0IHN0YXJ0ID0gZW5kIC0gaXRlbXM7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2suc2xpY2Uoc3RhcnQsIGVuZCk7XG4gIH1cblxuICB0b0FycmF5KCkge1xuICAgIHJldHVybiB0aGlzLnN0YWNrLnNsaWNlKHRoaXMuZnAsIHRoaXMuc3AgKyAxKTtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBJdGVyYXRvclJlc3VsdDxUPiA9IHtcbiAgZG9uZTogZmFsc2U7XG4gIHZhbHVlOiBudWxsO1xufSB8IHtcbiAgZG9uZTogdHJ1ZTtcbiAgdmFsdWU6IFQ7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWTSBpbXBsZW1lbnRzIFB1YmxpY1ZNIHtcbiAgcHJpdmF0ZSBkeW5hbWljU2NvcGVTdGFjayA9IG5ldyBTdGFjazxEeW5hbWljU2NvcGU+KCk7XG4gIHByaXZhdGUgc2NvcGVTdGFjayA9IG5ldyBTdGFjazxTY29wZT4oKTtcbiAgcHVibGljIHVwZGF0aW5nT3Bjb2RlU3RhY2sgPSBuZXcgU3RhY2s8TGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4+KCk7XG4gIHB1YmxpYyBjYWNoZUdyb3VwcyA9IG5ldyBTdGFjazxPcHRpb248VXBkYXRpbmdPcGNvZGU+PigpO1xuICBwdWJsaWMgbGlzdEJsb2NrU3RhY2sgPSBuZXcgU3RhY2s8TGlzdEJsb2NrT3Bjb2RlPigpO1xuICBwdWJsaWMgY29uc3RhbnRzOiBDb25zdGFudHM7XG5cbiAgcHVibGljIHN0YWNrID0gRXZhbHVhdGlvblN0YWNrLmVtcHR5KCk7XG5cbiAgLyoqIFJlZ2lzdGVycyAqKi9cblxuICBwcml2YXRlIHBjID0gLTE7XG4gIHByaXZhdGUgcmEgPSAtMTtcblxuICBwcml2YXRlIGdldCBmcCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnN0YWNrLmZwO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXQgZnAoZnA6IG51bWJlcikge1xuICAgIHRoaXMuc3RhY2suZnAgPSBmcDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHNwKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2suc3A7XG4gIH1cblxuICBwcml2YXRlIHNldCBzcChzcDogbnVtYmVyKSB7XG4gICAgdGhpcy5zdGFjay5zcCA9IHNwO1xuICB9XG5cbiAgcHVibGljIHMwOiBhbnkgPSBudWxsO1xuICBwdWJsaWMgczE6IGFueSA9IG51bGw7XG4gIHB1YmxpYyB0MDogYW55ID0gbnVsbDtcbiAgcHVibGljIHQxOiBhbnkgPSBudWxsO1xuXG4gIC8vIEZldGNoIGEgdmFsdWUgZnJvbSBhIHJlZ2lzdGVyIG9udG8gdGhlIHN0YWNrXG4gIGZldGNoKHJlZ2lzdGVyOiBSZWdpc3Rlcikge1xuICAgIHRoaXMuc3RhY2sucHVzaCh0aGlzW1JlZ2lzdGVyW3JlZ2lzdGVyXV0pO1xuICB9XG5cbiAgLy8gTG9hZCBhIHZhbHVlIGZyb20gdGhlIHN0YWNrIGludG8gYSByZWdpc3RlclxuICBsb2FkKHJlZ2lzdGVyOiBSZWdpc3Rlcikge1xuICAgIHRoaXNbUmVnaXN0ZXJbcmVnaXN0ZXJdXSA9IHRoaXMuc3RhY2sucG9wKCk7XG4gIH1cblxuICAvLyBGZXRjaCBhIHZhbHVlIGZyb20gYSByZWdpc3RlclxuICBmZXRjaFZhbHVlPFQ+KHJlZ2lzdGVyOiBSZWdpc3Rlcik6IFQge1xuICAgIHJldHVybiB0aGlzW1JlZ2lzdGVyW3JlZ2lzdGVyXV07XG4gIH1cblxuICAvLyBMb2FkIGEgdmFsdWUgaW50byBhIHJlZ2lzdGVyXG4gIGxvYWRWYWx1ZTxUPihyZWdpc3RlcjogUmVnaXN0ZXIsIHZhbHVlOiBUKSB7XG4gICAgdGhpc1tSZWdpc3RlcltyZWdpc3Rlcl1dID0gdmFsdWU7XG4gIH1cblxuICAvLyBTdGFydCBhIG5ldyBmcmFtZSBhbmQgc2F2ZSAkcmEgYW5kICRmcCBvbiB0aGUgc3RhY2tcbiAgcHVzaEZyYW1lKCkge1xuICAgIHRoaXMuc3RhY2sucHVzaCh0aGlzLnJhKTtcbiAgICB0aGlzLnN0YWNrLnB1c2godGhpcy5mcCk7XG4gICAgdGhpcy5mcCA9IHRoaXMuc3AgLSAxO1xuICAgIC8vIHRoaXMuZnAgPSB0aGlzLnNwICsgMTtcbiAgfVxuXG4gIC8vIFJlc3RvcmUgJHJhLCAkc3AgYW5kICRmcFxuICBwb3BGcmFtZSgpIHtcbiAgICB0aGlzLnNwID0gdGhpcy5mcCAtIDE7XG4gICAgdGhpcy5yYSA9IHRoaXMuc3RhY2suZnJvbUJhc2U8bnVtYmVyPigwKTtcbiAgICB0aGlzLmZwID0gdGhpcy5zdGFjay5mcm9tQmFzZTxudW1iZXI+KC0xKTtcbiAgfVxuXG4gIC8vIEp1bXAgdG8gYW4gYWRkcmVzcyBpbiBgcHJvZ3JhbWBcbiAgZ290byhwYzogbnVtYmVyKSB7XG4gICAgdGhpcy5wYyA9IHBjO1xuICB9XG5cbiAgLy8gU2F2ZSAkcGMgaW50byAkcmEsIHRoZW4ganVtcCB0byBhIG5ldyBhZGRyZXNzIGluIGBwcm9ncmFtYCAoamFsIGluIE1JUFMpXG4gIGNhbGwocGM6IG51bWJlcikge1xuICAgIHRoaXMucmEgPSB0aGlzLnBjO1xuICAgIHRoaXMucGMgPSBwYztcbiAgfVxuXG4gIC8vIFB1dCBhIHNwZWNpZmljIGBwcm9ncmFtYCBhZGRyZXNzIGluICRyYVxuICByZXR1cm5UbyhyYTogbnVtYmVyKSB7XG4gICAgdGhpcy5yYSA9IHJhO1xuICB9XG5cbiAgLy8gUmV0dXJuIHRvIHRoZSBgcHJvZ3JhbWAgYWRkcmVzcyBzdG9yZWQgaW4gJHJhXG4gIHJldHVybigpIHtcbiAgICB0aGlzLnBjID0gdGhpcy5yYTtcbiAgfVxuXG4gIHN0YXRpYyBpbml0aWFsKFxuICAgIGVudjogRW52aXJvbm1lbnQsXG4gICAgc2VsZjogUGF0aFJlZmVyZW5jZTxPcGFxdWU+LFxuICAgIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlLFxuICAgIGVsZW1lbnRTdGFjazogRWxlbWVudFN0YWNrLFxuICAgIHByb2dyYW06IENvbXBpbGVkRHluYW1pY1Byb2dyYW1cbiAgKSB7XG4gICAgbGV0IHNjb3BlID0gU2NvcGUucm9vdChzZWxmLCBwcm9ncmFtLnN5bWJvbFRhYmxlLnN5bWJvbHMubGVuZ3RoKTtcbiAgICBsZXQgdm0gPSBuZXcgVk0oZW52LCBzY29wZSwgZHluYW1pY1Njb3BlLCBlbGVtZW50U3RhY2spO1xuICAgIHZtLnBjID0gcHJvZ3JhbS5zdGFydDtcbiAgICB2bS51cGRhdGluZ09wY29kZVN0YWNrLnB1c2gobmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCkpO1xuICAgIHJldHVybiB2bTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBlbnY6IEVudmlyb25tZW50LFxuICAgIHNjb3BlOiBTY29wZSxcbiAgICBkeW5hbWljU2NvcGU6IER5bmFtaWNTY29wZSxcbiAgICBwcml2YXRlIGVsZW1lbnRTdGFjazogRWxlbWVudFN0YWNrLFxuICApIHtcbiAgICB0aGlzLmVudiA9IGVudjtcbiAgICB0aGlzLmNvbnN0YW50cyA9IGVudi5jb25zdGFudHM7XG4gICAgdGhpcy5lbGVtZW50U3RhY2sgPSBlbGVtZW50U3RhY2s7XG4gICAgdGhpcy5zY29wZVN0YWNrLnB1c2goc2NvcGUpO1xuICAgIHRoaXMuZHluYW1pY1Njb3BlU3RhY2sucHVzaChkeW5hbWljU2NvcGUpO1xuICB9XG5cbiAgY2FwdHVyZShhcmdzOiBudW1iZXIpOiBWTVN0YXRlIHtcbiAgICByZXR1cm4ge1xuICAgICAgZW52OiB0aGlzLmVudixcbiAgICAgIHNjb3BlOiB0aGlzLnNjb3BlKCksXG4gICAgICBkeW5hbWljU2NvcGU6IHRoaXMuZHluYW1pY1Njb3BlKCksXG4gICAgICBzdGFjazogdGhpcy5zdGFjay5jYXB0dXJlKGFyZ3MpXG4gICAgfTtcbiAgfVxuXG4gIGJlZ2luQ2FjaGVHcm91cCgpIHtcbiAgICB0aGlzLmNhY2hlR3JvdXBzLnB1c2godGhpcy51cGRhdGluZygpLnRhaWwoKSk7XG4gIH1cblxuICBjb21taXRDYWNoZUdyb3VwKCkge1xuICAgIC8vICAgICAgICBKdW1wSWZOb3RNb2RpZmllZChFTkQpXG4gICAgLy8gICAgICAgIChoZWFkKVxuICAgIC8vICAgICAgICAoLi4uLilcbiAgICAvLyAgICAgICAgKHRhaWwpXG4gICAgLy8gICAgICAgIERpZE1vZGlmeVxuICAgIC8vIEVORDogICBOb29wXG5cbiAgICBsZXQgRU5EID0gbmV3IExhYmVsT3Bjb2RlKFwiRU5EXCIpO1xuXG4gICAgbGV0IG9wY29kZXMgPSB0aGlzLnVwZGF0aW5nKCk7XG4gICAgbGV0IG1hcmtlciA9IHRoaXMuY2FjaGVHcm91cHMucG9wKCk7XG4gICAgbGV0IGhlYWQgPSBtYXJrZXIgPyBvcGNvZGVzLm5leHROb2RlKG1hcmtlcikgOiBvcGNvZGVzLmhlYWQoKTtcbiAgICBsZXQgdGFpbCA9IG9wY29kZXMudGFpbCgpO1xuICAgIGxldCB0YWcgPSBjb21iaW5lU2xpY2UobmV3IExpc3RTbGljZShoZWFkLCB0YWlsKSk7XG5cbiAgICBsZXQgZ3VhcmQgPSBuZXcgSnVtcElmTm90TW9kaWZpZWRPcGNvZGUodGFnLCBFTkQpO1xuXG4gICAgb3Bjb2Rlcy5pbnNlcnRCZWZvcmUoZ3VhcmQsIGhlYWQpO1xuICAgIG9wY29kZXMuYXBwZW5kKG5ldyBEaWRNb2RpZnlPcGNvZGUoZ3VhcmQpKTtcbiAgICBvcGNvZGVzLmFwcGVuZChFTkQpO1xuICB9XG5cbiAgZW50ZXIoYXJnczogbnVtYmVyKSB7XG4gICAgbGV0IHVwZGF0aW5nID0gbmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCk7XG5cbiAgICBsZXQgc3RhdGUgPSB0aGlzLmNhcHR1cmUoYXJncyk7XG4gICAgbGV0IHRyYWNrZXIgPSB0aGlzLmVsZW1lbnRzKCkucHVzaFVwZGF0YWJsZUJsb2NrKCk7XG5cbiAgICBsZXQgdHJ5T3Bjb2RlID0gbmV3IFRyeU9wY29kZSh0aGlzLnBjLCBzdGF0ZSwgdHJhY2tlciwgdXBkYXRpbmcpO1xuXG4gICAgdGhpcy5kaWRFbnRlcih0cnlPcGNvZGUpO1xuICB9XG5cbiAgaXRlcmF0ZShtZW1vOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIHZhbHVlOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIHVwZGF0aW5nID0gbmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCkpOiBUcnlPcGNvZGUge1xuICAgIGxldCBzdGFjayA9IHRoaXMuc3RhY2s7XG4gICAgc3RhY2sucHVzaCh2YWx1ZSk7XG4gICAgc3RhY2sucHVzaChtZW1vKTtcblxuICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZSgyKTtcbiAgICBsZXQgdHJhY2tlciA9IHRoaXMuZWxlbWVudHMoKS5wdXNoVXBkYXRhYmxlQmxvY2soKTtcblxuICAgIC8vIGxldCBpcCA9IHRoaXMuaXA7XG4gICAgLy8gdGhpcy5pcCA9IGVuZCArIDQ7XG4gICAgLy8gdGhpcy5mcmFtZXMucHVzaChpcCk7XG5cbiAgICByZXR1cm4gbmV3IFRyeU9wY29kZSh0aGlzLnBjLCBzdGF0ZSwgdHJhY2tlciwgdXBkYXRpbmcpO1xuICB9XG5cbiAgZW50ZXJJdGVtKGtleTogc3RyaW5nLCBvcGNvZGU6IFRyeU9wY29kZSkge1xuICAgIHRoaXMubGlzdEJsb2NrKCkubWFwW2tleV0gPSBvcGNvZGU7XG4gICAgdGhpcy5kaWRFbnRlcihvcGNvZGUpO1xuICB9XG5cbiAgZW50ZXJMaXN0KHN0YXJ0OiBudW1iZXIpIHtcbiAgICBsZXQgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdDxCbG9ja09wY29kZT4oKTtcblxuICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZSgwKTtcbiAgICBsZXQgdHJhY2tlciA9IHRoaXMuZWxlbWVudHMoKS5wdXNoQmxvY2tMaXN0KHVwZGF0aW5nKTtcbiAgICBsZXQgYXJ0aWZhY3RzID0gdGhpcy5zdGFjay5wZWVrPFJlZmVyZW5jZUl0ZXJhdG9yPigpLmFydGlmYWN0cztcblxuICAgIGxldCBvcGNvZGUgPSBuZXcgTGlzdEJsb2NrT3Bjb2RlKHN0YXJ0LCBzdGF0ZSwgdHJhY2tlciwgdXBkYXRpbmcsIGFydGlmYWN0cyk7XG5cbiAgICB0aGlzLmxpc3RCbG9ja1N0YWNrLnB1c2gob3Bjb2RlKTtcblxuICAgIHRoaXMuZGlkRW50ZXIob3Bjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgZGlkRW50ZXIob3Bjb2RlOiBCbG9ja09wY29kZSkge1xuICAgIHRoaXMudXBkYXRlV2l0aChvcGNvZGUpO1xuICAgIHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5wdXNoKG9wY29kZS5jaGlsZHJlbik7XG4gIH1cblxuICBleGl0KCkge1xuICAgIHRoaXMuZWxlbWVudHMoKS5wb3BCbG9jaygpO1xuICAgIHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5wb3AoKTtcblxuICAgIGxldCBwYXJlbnQgPSB0aGlzLnVwZGF0aW5nKCkudGFpbCgpIGFzIEJsb2NrT3Bjb2RlO1xuXG4gICAgcGFyZW50LmRpZEluaXRpYWxpemVDaGlsZHJlbigpO1xuICB9XG5cbiAgZXhpdExpc3QoKSB7XG4gICAgdGhpcy5leGl0KCk7XG4gICAgdGhpcy5saXN0QmxvY2tTdGFjay5wb3AoKTtcbiAgfVxuXG4gIHVwZGF0ZVdpdGgob3Bjb2RlOiBVcGRhdGluZ09wY29kZSkge1xuICAgIHRoaXMudXBkYXRpbmcoKS5hcHBlbmQob3Bjb2RlKTtcbiAgfVxuXG4gIGxpc3RCbG9jaygpOiBMaXN0QmxvY2tPcGNvZGUge1xuICAgIHJldHVybiB0aGlzLmxpc3RCbG9ja1N0YWNrLmN1cnJlbnQ7XG4gIH1cblxuICB1cGRhdGluZygpOiBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPiB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5jdXJyZW50O1xuICB9XG5cbiAgZWxlbWVudHMoKTogRWxlbWVudFN0YWNrIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50U3RhY2s7XG4gIH1cblxuICBzY29wZSgpOiBTY29wZSB7XG4gICAgcmV0dXJuIHRoaXMuc2NvcGVTdGFjay5jdXJyZW50O1xuICB9XG5cbiAgZHluYW1pY1Njb3BlKCk6IER5bmFtaWNTY29wZSB7XG4gICAgcmV0dXJuIHRoaXMuZHluYW1pY1Njb3BlU3RhY2suY3VycmVudDtcbiAgfVxuXG4gIHB1c2hDaGlsZFNjb3BlKCkge1xuICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKHRoaXMuc2NvcGUoKS5jaGlsZCgpKTtcbiAgfVxuXG4gIHB1c2hDYWxsZXJTY29wZShjaGlsZFNjb3BlID0gZmFsc2UpIHtcbiAgICBsZXQgY2FsbGVyU2NvcGUgPSB0aGlzLnNjb3BlKCkuZ2V0Q2FsbGVyU2NvcGUoKTtcbiAgICB0aGlzLnNjb3BlU3RhY2sucHVzaChjaGlsZFNjb3BlID8gY2FsbGVyU2NvcGUuY2hpbGQoKSA6IGNhbGxlclNjb3BlKTtcbiAgfVxuXG4gIHB1c2hEeW5hbWljU2NvcGUoKTogRHluYW1pY1Njb3BlIHtcbiAgICBsZXQgY2hpbGQgPSB0aGlzLmR5bmFtaWNTY29wZSgpLmNoaWxkKCk7XG4gICAgdGhpcy5keW5hbWljU2NvcGVTdGFjay5wdXNoKGNoaWxkKTtcbiAgICByZXR1cm4gY2hpbGQ7XG4gIH1cblxuICBwdXNoUm9vdFNjb3BlKHNpemU6IG51bWJlciwgYmluZENhbGxlcjogYm9vbGVhbik6IFNjb3BlIHtcbiAgICBsZXQgc2NvcGUgPSBTY29wZS5zaXplZChzaXplKTtcbiAgICBpZiAoYmluZENhbGxlcikgc2NvcGUuYmluZENhbGxlclNjb3BlKHRoaXMuc2NvcGUoKSk7XG4gICAgdGhpcy5zY29wZVN0YWNrLnB1c2goc2NvcGUpO1xuICAgIHJldHVybiBzY29wZTtcbiAgfVxuXG4gIHBvcFNjb3BlKCkge1xuICAgIHRoaXMuc2NvcGVTdGFjay5wb3AoKTtcbiAgfVxuXG4gIHBvcER5bmFtaWNTY29wZSgpIHtcbiAgICB0aGlzLmR5bmFtaWNTY29wZVN0YWNrLnBvcCgpO1xuICB9XG5cbiAgbmV3RGVzdHJveWFibGUoZDogRGVzdHJveWFibGUpIHtcbiAgICB0aGlzLmVsZW1lbnRzKCkubmV3RGVzdHJveWFibGUoZCk7XG4gIH1cblxuICAvLy8gU0NPUEUgSEVMUEVSU1xuXG4gIGdldFNlbGYoKTogUGF0aFJlZmVyZW5jZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5zY29wZSgpLmdldFNlbGYoKTtcbiAgfVxuXG4gIHJlZmVyZW5jZUZvclN5bWJvbChzeW1ib2w6IG51bWJlcik6IFBhdGhSZWZlcmVuY2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuc2NvcGUoKS5nZXRTeW1ib2woc3ltYm9sKTtcbiAgfVxuXG4gIC8vLyBFWEVDVVRJT05cblxuICBleGVjdXRlKHN0YXJ0OiBudW1iZXIsIGluaXRpYWxpemU/OiAodm06IFZNKSA9PiB2b2lkKTogUmVuZGVyUmVzdWx0IHtcbiAgICB0aGlzLnBjID0gc3RhcnQ7XG5cbiAgICBpZiAoaW5pdGlhbGl6ZSkgaW5pdGlhbGl6ZSh0aGlzKTtcblxuICAgIGxldCByZXN1bHQ6IEl0ZXJhdG9yUmVzdWx0PFJlbmRlclJlc3VsdD47XG5cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgcmVzdWx0ID0gdGhpcy5uZXh0KCk7XG4gICAgICBpZiAocmVzdWx0LmRvbmUpIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQudmFsdWUgYXMgUmVuZGVyUmVzdWx0O1xuICB9XG5cbiAgbmV4dCgpOiBJdGVyYXRvclJlc3VsdDxSZW5kZXJSZXN1bHQ+IHtcbiAgICBsZXQgeyBlbnYsIHVwZGF0aW5nT3Bjb2RlU3RhY2ssIGVsZW1lbnRTdGFjayB9ID0gdGhpcztcbiAgICBsZXQgb3Bjb2RlOiBPcHRpb248T3Bjb2RlPjtcblxuICAgIGlmIChvcGNvZGUgPSB0aGlzLm5leHRTdGF0ZW1lbnQoZW52KSkge1xuICAgICAgQVBQRU5EX09QQ09ERVMuZXZhbHVhdGUodGhpcywgb3Bjb2RlLCBvcGNvZGUudHlwZSk7XG4gICAgICByZXR1cm4geyBkb25lOiBmYWxzZSwgdmFsdWU6IG51bGwgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZG9uZTogdHJ1ZSxcbiAgICAgIHZhbHVlOiBuZXcgUmVuZGVyUmVzdWx0KFxuICAgICAgICBlbnYsXG4gICAgICAgIHVwZGF0aW5nT3Bjb2RlU3RhY2sucG9wKCksXG4gICAgICAgIGVsZW1lbnRTdGFjay5wb3BCbG9jaygpXG4gICAgICApXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgbmV4dFN0YXRlbWVudChlbnY6IEVudmlyb25tZW50KTogT3B0aW9uPE9wY29kZT4ge1xuICAgIGxldCB7IHBjIH0gPSB0aGlzO1xuXG4gICAgaWYgKHBjID09PSAtMSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgbGV0IHByb2dyYW0gPSBlbnYucHJvZ3JhbTtcbiAgICB0aGlzLnBjICs9IDQ7XG4gICAgcmV0dXJuIHByb2dyYW0ub3Bjb2RlKHBjKTtcbiAgfVxuXG4gIGV2YWx1YXRlT3Bjb2RlKG9wY29kZTogT3Bjb2RlKSB7XG4gICAgQVBQRU5EX09QQ09ERVMuZXZhbHVhdGUodGhpcywgb3Bjb2RlLCBvcGNvZGUudHlwZSk7XG4gIH1cblxuICBiaW5kRHluYW1pY1Njb3BlKG5hbWVzOiBDb25zdGFudFN0cmluZ1tdKSB7XG4gICAgbGV0IHNjb3BlID0gdGhpcy5keW5hbWljU2NvcGUoKTtcblxuICAgIGZvcihsZXQgaT1uYW1lcy5sZW5ndGggLSAxOyBpPj0wOyBpLS0pIHtcbiAgICAgIGxldCBuYW1lID0gdGhpcy5jb25zdGFudHMuZ2V0U3RyaW5nKG5hbWVzW2ldKTtcbiAgICAgIHNjb3BlLnNldChuYW1lLCB0aGlzLnN0YWNrLnBvcDxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4+KCkpO1xuICAgIH1cbiAgfVxufVxuIl19

@@ -46,3 +46,3 @@ 'use strict';

get frame() {
return (0, _util.expect)(this.frameStack.current, 'bug: expected a frame');
return this.frameStack.current;
}

@@ -97,12 +97,2 @@ goto(op) {

}
toJSON() {
let details = (0, _util.dict)();
details["guid"] = `${this._guid}`;
return {
guid: this._guid,
type: this.type,
details,
children: this.children.toArray().map(op => op.toJSON())
};
}
}

@@ -137,10 +127,2 @@ exports.BlockOpcode = BlockOpcode;

}
toJSON() {
let json = super.toJSON();
let details = json["details"];
if (!details) {
details = json["details"] = {};
}
return super.toJSON();
}
}

@@ -227,3 +209,3 @@ exports.TryOpcode = TryOpcode;

let marker = dom.createComment('');
dom.insertAfter(bounds.parentElement(), marker, (0, _util.expect)(bounds.lastNode(), "can't insert after an empty bounds"));
dom.insertAfter(bounds.parentElement(), marker, bounds.lastNode());
let target = new ListRevalidationDelegate(this, marker);

@@ -242,15 +224,2 @@ let synchronizer = new _reference.IteratorSynchronizer({ target, artifacts });

}
toJSON() {
let json = super.toJSON();
let map = this.map;
let inner = Object.keys(map).map(key => {
return `${JSON.stringify(key)}: ${map[key]._guid}`;
}).join(", ");
let details = json["details"];
if (!details) {
details = json["details"] = {};
}
details["map"] = `{${inner}}`;
return json;
}
}

@@ -281,2 +250,2 @@ exports.ListBlockOpcode = ListBlockOpcode;

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidXBkYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQSxBQUFPLEFBQXFCLEFBQUssQUFBRSxBQUFJLEFBQUksQUFBVSxBQUFFLEFBQU0sQUFBVyxBQUFDOztBQUN6RSxBQUFPLEFBQUUsQUFBWSxBQUE2QixBQUFNLEFBQVksQUFBQzs7QUFDckUsQUFBTyxBQUFrQixBQUFLLEFBQUUsQUFBVSxBQUFRLEFBQUksQUFBRSxBQUFNLEFBQUUsQUFBTSxBQUFlLEFBQUM7O0FBQ3RGLEFBQU8sQUFHTCxBQUFvQixBQUdwQixBQUFPLEFBQ1AsQUFBTyxBQUVQLEFBQVksQUFFWixBQUFZLEFBQ1osQUFBWSxBQUNaLEFBQU8sQUFDUixBQUFNLEFBQW9CLEFBQUM7O0FBQzVCLEFBQU8sQUFBYyxBQUFjLEFBQWlCLEFBQU0sQUFBWSxBQUFDOztBQUt2RSxBQUFPLEFBQUUsQUFBRSxBQUFpQixBQUFlLEFBQUUsQUFBTSxBQUFVLEFBQUMsQUFFOUQsQUFBTSxBQUFDLEFBQU87Ozs7Ozs7QUFRWixnQkFBWSxBQUFnQixLQUFFLEVBQUUsQUFBZ0IsbUJBQUcsQUFBSyxBQUFFO0FBRmxELGFBQVUsYUFBMkIsQUFBSSxBQUFLLEFBQW1CLEFBQUM7QUFHeEUsQUFBSSxhQUFDLEFBQUcsTUFBRyxBQUFHLEFBQUM7QUFDZixBQUFJLGFBQUMsQUFBUyxZQUFHLEFBQUcsSUFBQyxBQUFTLEFBQUM7QUFDL0IsQUFBSSxhQUFDLEFBQUcsTUFBRyxBQUFHLElBQUMsQUFBTSxBQUFFLEFBQUM7QUFDeEIsQUFBSSxhQUFDLEFBQWdCLG1CQUFHLEFBQWdCLEFBQUMsQUFDM0M7QUFBQztBQUVELEFBQU8sWUFBQyxBQUFzQixTQUFFLEFBQXlCO0FBQ3ZELFlBQUksRUFBRSxBQUFVLEFBQUUsZUFBRyxBQUFJLEFBQUM7QUFFMUIsQUFBSSxhQUFDLEFBQUcsSUFBQyxBQUFPLFNBQUUsQUFBTyxBQUFDLEFBQUM7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QUcsQUFBRSxBQUFDO0FBQ2IsQUFBSSxhQUFDLEFBQUcsTUFBRyxBQUFHLEFBQUM7QUFDZixBQUFJLGFBQUMsQUFBTyxVQUFHLEFBQUcsSUFBQyxBQUFJLEFBQUUsQUFBQyxBQUM1QjtBQUFDO0FBRUQsQUFBSSxTQUFDLEFBQWtCO0FBQ3JCLEFBQUksYUFBQyxBQUFPLFVBQUcsQUFBRSxBQUFDLEFBQ3BCO0FBQUM7QUFFRCxBQUFhO0FBQ1gsWUFBSSxFQUFFLEFBQU8sU0FBRSxBQUFHLEFBQUUsUUFBRyxBQUFJLEFBQUM7QUFDNUIsQUFBRSxBQUFDLFlBQUMsQUFBTyxBQUFDLFNBQUMsQUFBSSxLQUFDLEFBQU8sVUFBRyxBQUFHLElBQUMsQUFBUSxTQUFDLEFBQU8sQUFBQyxBQUFDO0FBQ2xELEFBQU0sZUFBQyxBQUFPLEFBQUMsQUFDakI7QUFBQztBQUVELEFBQWU7QUFDYixBQUFFLEFBQUMsWUFBQyxBQUFJLEtBQUMsQUFBZ0IsQUFBQyxrQkFBQyxBQUFDO0FBQzFCLEFBQUksaUJBQUMsQUFBZ0IsaUJBQUMsQUFBZSxBQUFFLEFBQUMsQUFDMUM7QUFBQyxBQUNIO0FBQUMsQUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjb3BlLCBEeW5hbWljU2NvcGUsIEVudmlyb25tZW50IH0gZnJvbSAnLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgRGVzdHJveWFibGVCb3VuZHMsIGNsZWFyLCBtb3ZlIGFzIG1vdmVCb3VuZHMgfSBmcm9tICcuLi9ib3VuZHMnO1xuaW1wb3J0IHsgRWxlbWVudFN0YWNrLCBUcmFja2VyLCBVcGRhdGFibGVUcmFja2VyIH0gZnJvbSAnLi4vYnVpbGRlcic7XG5pbXBvcnQgeyBPcHRpb24sIE9wYXF1ZSwgU3RhY2ssIExpbmtlZExpc3QsIERpY3QsIGRpY3QsIGV4cGVjdCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHtcbiAgUGF0aFJlZmVyZW5jZSxcbiAgSXRlcmF0aW9uQXJ0aWZhY3RzLFxuICBJdGVyYXRvclN5bmNocm9uaXplcixcbiAgSXRlcmF0b3JTeW5jaHJvbml6ZXJEZWxlZ2F0ZSxcblxuICAvLyBUYWdzXG4gIGNvbWJpbmUsXG4gIFJldmlzaW9uLFxuICBVcGRhdGFibGVUYWcsXG4gIFRhZ1dyYXBwZXIsXG4gIGNvbWJpbmVTbGljZSxcbiAgQ09OU1RBTlRfVEFHLFxuICBJTklUSUFMXG59IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBPcGNvZGVKU09OLCBVcGRhdGluZ09wY29kZSwgVXBkYXRpbmdPcFNlcSB9IGZyb20gJy4uL29wY29kZXMnO1xuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi4vZW52aXJvbm1lbnQvY29uc3RhbnRzJztcbmltcG9ydCB7IERPTUNoYW5nZXMgfSBmcm9tICcuLi9kb20vaGVscGVyJztcbmltcG9ydCAqIGFzIFNpbXBsZSBmcm9tICcuLi9kb20vaW50ZXJmYWNlcyc7XG5cbmltcG9ydCBWTSwgeyBDYXB0dXJlZFN0YWNrLCBFdmFsdWF0aW9uU3RhY2sgfSBmcm9tICcuL2FwcGVuZCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFVwZGF0aW5nVk0ge1xuICBwdWJsaWMgZW52OiBFbnZpcm9ubWVudDtcbiAgcHVibGljIGRvbTogRE9NQ2hhbmdlcztcbiAgcHVibGljIGFsd2F5c1JldmFsaWRhdGU6IGJvb2xlYW47XG4gIHB1YmxpYyBjb25zdGFudHM6IENvbnN0YW50cztcblxuICBwcml2YXRlIGZyYW1lU3RhY2s6IFN0YWNrPFVwZGF0aW5nVk1GcmFtZT4gPSBuZXcgU3RhY2s8VXBkYXRpbmdWTUZyYW1lPigpO1xuXG4gIGNvbnN0cnVjdG9yKGVudjogRW52aXJvbm1lbnQsIHsgYWx3YXlzUmV2YWxpZGF0ZSA9IGZhbHNlIH0pIHtcbiAgICB0aGlzLmVudiA9IGVudjtcbiAgICB0aGlzLmNvbnN0YW50cyA9IGVudi5jb25zdGFudHM7XG4gICAgdGhpcy5kb20gPSBlbnYuZ2V0RE9NKCk7XG4gICAgdGhpcy5hbHdheXNSZXZhbGlkYXRlID0gYWx3YXlzUmV2YWxpZGF0ZTtcbiAgfVxuXG4gIGV4ZWN1dGUob3Bjb2RlczogVXBkYXRpbmdPcFNlcSwgaGFuZGxlcjogRXhjZXB0aW9uSGFuZGxlcikge1xuICAgIGxldCB7IGZyYW1lU3RhY2sgfSA9IHRoaXM7XG5cbiAgICB0aGlzLnRyeShvcGNvZGVzLCBoYW5kbGVyKTtcblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBpZiAoZnJhbWVTdGFjay5pc0VtcHR5KCkpIGJyZWFrO1xuXG4gICAgICBsZXQgb3Bjb2RlID0gdGhpcy5mcmFtZS5uZXh0U3RhdGVtZW50KCk7XG5cbiAgICAgIGlmIChvcGNvZGUgPT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5mcmFtZVN0YWNrLnBvcCgpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgb3Bjb2RlLmV2YWx1YXRlKHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGZyYW1lKCkge1xuICAgIHJldHVybiBleHBlY3QodGhpcy5mcmFtZVN0YWNrLmN1cnJlbnQsICdidWc6IGV4cGVjdGVkIGEgZnJhbWUnKTtcbiAgfVxuXG4gIGdvdG8ob3A6IFVwZGF0aW5nT3Bjb2RlKSB7XG4gICAgdGhpcy5mcmFtZS5nb3RvKG9wKTtcbiAgfVxuXG4gIHRyeShvcHM6IFVwZGF0aW5nT3BTZXEsIGhhbmRsZXI6IE9wdGlvbjxFeGNlcHRpb25IYW5kbGVyPikge1xuICAgIHRoaXMuZnJhbWVTdGFjay5wdXNoKG5ldyBVcGRhdGluZ1ZNRnJhbWUodGhpcywgb3BzLCBoYW5kbGVyKSk7XG4gIH1cblxuICB0aHJvdygpIHtcbiAgICB0aGlzLmZyYW1lLmhhbmRsZUV4Y2VwdGlvbigpO1xuICAgIHRoaXMuZnJhbWVTdGFjay5wb3AoKTtcbiAgfVxuXG4gIGV2YWx1YXRlT3Bjb2RlKG9wY29kZTogVXBkYXRpbmdPcGNvZGUpIHtcbiAgICBvcGNvZGUuZXZhbHVhdGUodGhpcyk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeGNlcHRpb25IYW5kbGVyIHtcbiAgaGFuZGxlRXhjZXB0aW9uKCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVk1TdGF0ZSB7XG4gIGVudjogRW52aXJvbm1lbnQ7XG4gIHNjb3BlOiBTY29wZTtcbiAgZHluYW1pY1Njb3BlOiBEeW5hbWljU2NvcGU7XG4gIHN0YWNrOiBDYXB0dXJlZFN0YWNrO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmxvY2tPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSBpbXBsZW1lbnRzIERlc3Ryb3lhYmxlQm91bmRzIHtcbiAgcHVibGljIHR5cGUgPSBcImJsb2NrXCI7XG4gIHB1YmxpYyBuZXh0ID0gbnVsbDtcbiAgcHVibGljIHByZXYgPSBudWxsO1xuICBwdWJsaWMgY2hpbGRyZW46IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+O1xuXG4gIHByb3RlY3RlZCBlbnY6IEVudmlyb25tZW50O1xuICBwcm90ZWN0ZWQgc2NvcGU6IFNjb3BlO1xuICBwcm90ZWN0ZWQgZHluYW1pY1Njb3BlOiBEeW5hbWljU2NvcGU7XG4gIHByb3RlY3RlZCBzdGFjazogQ2FwdHVyZWRTdGFjaztcbiAgcHJvdGVjdGVkIGJvdW5kczogRGVzdHJveWFibGVCb3VuZHM7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHN0YXJ0OiBudW1iZXIsIHN0YXRlOiBWTVN0YXRlLCBib3VuZHM6IERlc3Ryb3lhYmxlQm91bmRzLCBjaGlsZHJlbjogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4pIHtcbiAgICBzdXBlcigpO1xuICAgIGxldCB7IGVudiwgc2NvcGUsIGR5bmFtaWNTY29wZSwgc3RhY2sgfSA9IHN0YXRlO1xuICAgIHRoaXMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgICB0aGlzLmVudiA9IGVudjtcbiAgICB0aGlzLnNjb3BlID0gc2NvcGU7XG4gICAgdGhpcy5keW5hbWljU2NvcGUgPSBkeW5hbWljU2NvcGU7XG4gICAgdGhpcy5zdGFjayA9IHN0YWNrO1xuICAgIHRoaXMuYm91bmRzID0gYm91bmRzO1xuICB9XG5cbiAgYWJzdHJhY3QgZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKCk6IHZvaWQ7XG5cbiAgcGFyZW50RWxlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICB9XG5cbiAgZmlyc3ROb2RlKCkge1xuICAgIHJldHVybiB0aGlzLmJvdW5kcy5maXJzdE5vZGUoKTtcbiAgfVxuXG4gIGxhc3ROb2RlKCkge1xuICAgIHJldHVybiB0aGlzLmJvdW5kcy5sYXN0Tm9kZSgpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICB2bS50cnkodGhpcy5jaGlsZHJlbiwgbnVsbCk7XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIHRoaXMuYm91bmRzLmRlc3Ryb3koKTtcbiAgfVxuXG4gIGRpZERlc3Ryb3koKSB7XG4gICAgdGhpcy5lbnYuZGlkRGVzdHJveSh0aGlzLmJvdW5kcyk7XG4gIH1cblxuICB0b0pTT04oKSA6IE9wY29kZUpTT04ge1xuICAgIGxldCBkZXRhaWxzID0gZGljdDxzdHJpbmc+KCk7XG5cbiAgICBkZXRhaWxzW1wiZ3VpZFwiXSA9IGAke3RoaXMuX2d1aWR9YDtcblxuICAgIHJldHVybiB7XG4gICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgZGV0YWlscyxcbiAgICAgIGNoaWxkcmVuOiB0aGlzLmNoaWxkcmVuLnRvQXJyYXkoKS5tYXAob3AgPT4gb3AudG9KU09OKCkpXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVHJ5T3Bjb2RlIGV4dGVuZHMgQmxvY2tPcGNvZGUgaW1wbGVtZW50cyBFeGNlcHRpb25IYW5kbGVyIHtcbiAgcHVibGljIHR5cGUgPSBcInRyeVwiO1xuXG4gIHByaXZhdGUgX3RhZzogVGFnV3JhcHBlcjxVcGRhdGFibGVUYWc+O1xuXG4gIHByb3RlY3RlZCBib3VuZHM6IFVwZGF0YWJsZVRyYWNrZXI7XG5cbiAgY29uc3RydWN0b3Ioc3RhcnQ6IG51bWJlciwgc3RhdGU6IFZNU3RhdGUsIGJvdW5kczogVXBkYXRhYmxlVHJhY2tlciwgY2hpbGRyZW46IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KSB7XG4gICAgc3VwZXIoc3RhcnQsIHN0YXRlLCBib3VuZHMsIGNoaWxkcmVuKTtcbiAgICB0aGlzLnRhZyA9IHRoaXMuX3RhZyA9IFVwZGF0YWJsZVRhZy5jcmVhdGUoQ09OU1RBTlRfVEFHKTtcbiAgfVxuXG4gIGRpZEluaXRpYWxpemVDaGlsZHJlbigpIHtcbiAgICB0aGlzLl90YWcuaW5uZXIudXBkYXRlKGNvbWJpbmVTbGljZSh0aGlzLmNoaWxkcmVuKSk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVXBkYXRpbmdWTSkge1xuICAgIHZtLnRyeSh0aGlzLmNoaWxkcmVuLCB0aGlzKTtcbiAgfVxuXG4gIGhhbmRsZUV4Y2VwdGlvbigpIHtcbiAgICBsZXQgeyBlbnYsIGJvdW5kcywgY2hpbGRyZW4sIHNjb3BlLCBkeW5hbWljU2NvcGUsIHN0YXJ0LCBzdGFjaywgcHJldiwgbmV4dCB9ID0gdGhpcztcblxuICAgIGNoaWxkcmVuLmNsZWFyKCk7XG5cbiAgICBsZXQgZWxlbWVudFN0YWNrID0gRWxlbWVudFN0YWNrLnJlc3VtZShcbiAgICAgIGVudixcbiAgICAgIGJvdW5kcyxcbiAgICAgIGJvdW5kcy5yZXNldChlbnYpXG4gICAgKTtcblxuICAgIGxldCB2bSA9IG5ldyBWTShlbnYsIHNjb3BlLCBkeW5hbWljU2NvcGUsIGVsZW1lbnRTdGFjayk7XG5cbiAgICBsZXQgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4oKTtcblxuICAgIHZtLmV4ZWN1dGUoc3RhcnQsIHZtID0+IHtcbiAgICAgIHZtLnN0YWNrID0gRXZhbHVhdGlvblN0YWNrLnJlc3RvcmUoc3RhY2spO1xuICAgICAgdm0udXBkYXRpbmdPcGNvZGVTdGFjay5wdXNoKHVwZGF0aW5nKTtcbiAgICAgIHZtLnVwZGF0ZVdpdGgodGhpcyk7XG4gICAgICB2bS51cGRhdGluZ09wY29kZVN0YWNrLnB1c2goY2hpbGRyZW4pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5wcmV2ID0gcHJldjtcbiAgICB0aGlzLm5leHQgPSBuZXh0O1xuICB9XG5cbiAgdG9KU09OKCkgOiBPcGNvZGVKU09OIHtcbiAgICBsZXQganNvbiA9IHN1cGVyLnRvSlNPTigpO1xuXG4gICAgbGV0IGRldGFpbHMgPSBqc29uW1wiZGV0YWlsc1wiXTtcbiAgICBpZiAoIWRldGFpbHMpIHtcbiAgICAgIGRldGFpbHMgPSBqc29uW1wiZGV0YWlsc1wiXSA9IHt9O1xuICAgIH1cblxuICAgIHJldHVybiBzdXBlci50b0pTT04oKTtcbiAgfVxufVxuXG5jbGFzcyBMaXN0UmV2YWxpZGF0aW9uRGVsZWdhdGUgaW1wbGVtZW50cyBJdGVyYXRvclN5bmNocm9uaXplckRlbGVnYXRlIHtcbiAgcHJpdmF0ZSBtYXA6IERpY3Q8QmxvY2tPcGNvZGU+O1xuICBwcml2YXRlIHVwZGF0aW5nOiBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPjtcblxuICBwcml2YXRlIGRpZEluc2VydCA9IGZhbHNlO1xuICBwcml2YXRlIGRpZERlbGV0ZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgb3Bjb2RlOiBMaXN0QmxvY2tPcGNvZGUsIHByaXZhdGUgbWFya2VyOiBTaW1wbGUuQ29tbWVudCkge1xuICAgIHRoaXMubWFwID0gb3Bjb2RlLm1hcDtcbiAgICB0aGlzLnVwZGF0aW5nID0gb3Bjb2RlWydjaGlsZHJlbiddO1xuICB9XG5cbiAgaW5zZXJ0KGtleTogc3RyaW5nLCBpdGVtOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIG1lbW86IFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgYmVmb3JlOiBzdHJpbmcpIHtcbiAgICBsZXQgeyBtYXAsIG9wY29kZSwgdXBkYXRpbmcgfSA9IHRoaXM7XG4gICAgbGV0IG5leHRTaWJsaW5nOiBPcHRpb248U2ltcGxlLk5vZGU+ID0gbnVsbDtcbiAgICBsZXQgcmVmZXJlbmNlOiBPcHRpb248QmxvY2tPcGNvZGU+ID0gbnVsbDtcblxuICAgIGlmIChiZWZvcmUpIHtcbiAgICAgIHJlZmVyZW5jZSA9IG1hcFtiZWZvcmVdO1xuICAgICAgbmV4dFNpYmxpbmcgPSByZWZlcmVuY2VbJ2JvdW5kcyddLmZpcnN0Tm9kZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXh0U2libGluZyA9IHRoaXMubWFya2VyO1xuICAgIH1cblxuICAgIGxldCB2bSA9IG9wY29kZS52bUZvckluc2VydGlvbihuZXh0U2libGluZyk7XG4gICAgbGV0IHRyeU9wY29kZTogT3B0aW9uPFRyeU9wY29kZT4gPSBudWxsO1xuXG4gICAgbGV0IHsgc3RhcnQgfSA9IG9wY29kZTtcblxuICAgIHZtLmV4ZWN1dGUoc3RhcnQsIHZtID0+IHtcbiAgICAgIG1hcFtrZXldID0gdHJ5T3Bjb2RlID0gdm0uaXRlcmF0ZShtZW1vLCBpdGVtKTtcbiAgICAgIHZtLnVwZGF0aW5nT3Bjb2RlU3RhY2sucHVzaChuZXcgTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4oKSk7XG4gICAgICB2bS51cGRhdGVXaXRoKHRyeU9wY29kZSk7XG4gICAgICB2bS51cGRhdGluZ09wY29kZVN0YWNrLnB1c2godHJ5T3Bjb2RlLmNoaWxkcmVuKTtcbiAgICB9KTtcblxuICAgIHVwZGF0aW5nLmluc2VydEJlZm9yZSh0cnlPcGNvZGUhLCByZWZlcmVuY2UpO1xuXG4gICAgdGhpcy5kaWRJbnNlcnQgPSB0cnVlO1xuICB9XG5cbiAgcmV0YWluKF9rZXk6IHN0cmluZywgX2l0ZW06IFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgX21lbW86IFBhdGhSZWZlcmVuY2U8T3BhcXVlPikge1xuICB9XG5cbiAgbW92ZShrZXk6IHN0cmluZywgX2l0ZW06IFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgX21lbW86IFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgYmVmb3JlOiBzdHJpbmcpIHtcbiAgICBsZXQgeyBtYXAsIHVwZGF0aW5nIH0gPSB0aGlzO1xuXG4gICAgbGV0IGVudHJ5ID0gbWFwW2tleV07XG4gICAgbGV0IHJlZmVyZW5jZSA9IG1hcFtiZWZvcmVdIHx8IG51bGw7XG5cbiAgICBpZiAoYmVmb3JlKSB7XG4gICAgICBtb3ZlQm91bmRzKGVudHJ5LCByZWZlcmVuY2UuZmlyc3ROb2RlKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBtb3ZlQm91bmRzKGVudHJ5LCB0aGlzLm1hcmtlcik7XG4gICAgfVxuXG4gICAgdXBkYXRpbmcucmVtb3ZlKGVudHJ5KTtcbiAgICB1cGRhdGluZy5pbnNlcnRCZWZvcmUoZW50cnksIHJlZmVyZW5jZSk7XG4gIH1cblxuICBkZWxldGUoa2V5OiBzdHJpbmcpIHtcbiAgICBsZXQgeyBtYXAgfSA9IHRoaXM7XG4gICAgbGV0IG9wY29kZSA9IG1hcFtrZXldO1xuICAgIG9wY29kZS5kaWREZXN0cm95KCk7XG4gICAgY2xlYXIob3Bjb2RlKTtcbiAgICB0aGlzLnVwZGF0aW5nLnJlbW92ZShvcGNvZGUpO1xuICAgIGRlbGV0ZSBtYXBba2V5XTtcblxuICAgIHRoaXMuZGlkRGVsZXRlID0gdHJ1ZTtcbiAgfVxuXG4gIGRvbmUoKSB7XG4gICAgdGhpcy5vcGNvZGUuZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKHRoaXMuZGlkSW5zZXJ0IHx8IHRoaXMuZGlkRGVsZXRlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGlzdEJsb2NrT3Bjb2RlIGV4dGVuZHMgQmxvY2tPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwibGlzdC1ibG9ja1wiO1xuICBwdWJsaWMgbWFwID0gZGljdDxCbG9ja09wY29kZT4oKTtcbiAgcHVibGljIGFydGlmYWN0czogSXRlcmF0aW9uQXJ0aWZhY3RzO1xuXG4gIHByaXZhdGUgbGFzdEl0ZXJhdGVkOiBSZXZpc2lvbiA9IElOSVRJQUw7XG4gIHByaXZhdGUgX3RhZzogVGFnV3JhcHBlcjxVcGRhdGFibGVUYWc+O1xuXG4gIGNvbnN0cnVjdG9yKHN0YXJ0OiBudW1iZXIsIHN0YXRlOiBWTVN0YXRlLCBib3VuZHM6IFRyYWNrZXIsIGNoaWxkcmVuOiBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPiwgYXJ0aWZhY3RzOiBJdGVyYXRpb25BcnRpZmFjdHMpIHtcbiAgICBzdXBlcihzdGFydCwgc3RhdGUsIGJvdW5kcywgY2hpbGRyZW4pO1xuICAgIHRoaXMuYXJ0aWZhY3RzID0gYXJ0aWZhY3RzO1xuICAgIGxldCBfdGFnID0gdGhpcy5fdGFnID0gVXBkYXRhYmxlVGFnLmNyZWF0ZShDT05TVEFOVF9UQUcpO1xuICAgIHRoaXMudGFnID0gY29tYmluZShbYXJ0aWZhY3RzLnRhZywgX3RhZ10pO1xuICB9XG5cbiAgZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKGxpc3REaWRDaGFuZ2UgPSB0cnVlKSB7XG4gICAgdGhpcy5sYXN0SXRlcmF0ZWQgPSB0aGlzLmFydGlmYWN0cy50YWcudmFsdWUoKTtcblxuICAgIGlmIChsaXN0RGlkQ2hhbmdlKSB7XG4gICAgICB0aGlzLl90YWcuaW5uZXIudXBkYXRlKGNvbWJpbmVTbGljZSh0aGlzLmNoaWxkcmVuKSk7XG4gICAgfVxuICB9XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICBsZXQgeyBhcnRpZmFjdHMsIGxhc3RJdGVyYXRlZCB9ID0gdGhpcztcblxuICAgIGlmICghYXJ0aWZhY3RzLnRhZy52YWxpZGF0ZShsYXN0SXRlcmF0ZWQpKSB7XG4gICAgICBsZXQgeyBib3VuZHMgfSA9IHRoaXM7XG4gICAgICBsZXQgeyBkb20gfSA9IHZtO1xuXG4gICAgICBsZXQgbWFya2VyID0gZG9tLmNyZWF0ZUNvbW1lbnQoJycpO1xuICAgICAgZG9tLmluc2VydEFmdGVyKGJvdW5kcy5wYXJlbnRFbGVtZW50KCksIG1hcmtlciwgZXhwZWN0KGJvdW5kcy5sYXN0Tm9kZSgpLCBcImNhbid0IGluc2VydCBhZnRlciBhbiBlbXB0eSBib3VuZHNcIikpO1xuXG4gICAgICBsZXQgdGFyZ2V0ID0gbmV3IExpc3RSZXZhbGlkYXRpb25EZWxlZ2F0ZSh0aGlzLCBtYXJrZXIpO1xuICAgICAgbGV0IHN5bmNocm9uaXplciA9IG5ldyBJdGVyYXRvclN5bmNocm9uaXplcih7IHRhcmdldCwgYXJ0aWZhY3RzIH0pO1xuXG4gICAgICBzeW5jaHJvbml6ZXIuc3luYygpO1xuXG4gICAgICB0aGlzLnBhcmVudEVsZW1lbnQoKS5yZW1vdmVDaGlsZChtYXJrZXIpO1xuICAgIH1cblxuICAgIC8vIFJ1biBub3ctdXBkYXRlZCB1cGRhdGluZyBvcGNvZGVzXG4gICAgc3VwZXIuZXZhbHVhdGUodm0pO1xuICB9XG5cbiAgdm1Gb3JJbnNlcnRpb24obmV4dFNpYmxpbmc6IE9wdGlvbjxTaW1wbGUuTm9kZT4pOiBWTSB7XG4gICAgbGV0IHsgZW52LCBzY29wZSwgZHluYW1pY1Njb3BlIH0gPSB0aGlzO1xuXG4gICAgbGV0IGVsZW1lbnRTdGFjayA9IEVsZW1lbnRTdGFjay5mb3JJbml0aWFsUmVuZGVyKFxuICAgICAgdGhpcy5lbnYsXG4gICAgICB0aGlzLmJvdW5kcy5wYXJlbnRFbGVtZW50KCksXG4gICAgICBuZXh0U2libGluZ1xuICAgICk7XG5cbiAgICByZXR1cm4gbmV3IFZNKGVudiwgc2NvcGUsIGR5bmFtaWNTY29wZSwgZWxlbWVudFN0YWNrKTtcbiAgfVxuXG4gIHRvSlNPTigpIDogT3Bjb2RlSlNPTiB7XG4gICAgbGV0IGpzb24gPSBzdXBlci50b0pTT04oKTtcbiAgICBsZXQgbWFwID0gdGhpcy5tYXA7XG5cbiAgICBsZXQgaW5uZXIgPSBPYmplY3Qua2V5cyhtYXApLm1hcChrZXkgPT4ge1xuICAgICAgcmV0dXJuIGAke0pTT04uc3RyaW5naWZ5KGtleSl9OiAke21hcFtrZXldLl9ndWlkfWA7XG4gICAgfSkuam9pbihcIiwgXCIpO1xuXG4gICAgbGV0IGRldGFpbHMgPSBqc29uW1wiZGV0YWlsc1wiXTtcbiAgICBpZiAoIWRldGFpbHMpIHtcbiAgICAgIGRldGFpbHMgPSBqc29uW1wiZGV0YWlsc1wiXSA9IHt9O1xuICAgIH1cblxuICAgIGRldGFpbHNbXCJtYXBcIl0gPSBgeyR7aW5uZXJ9fWA7XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxufVxuXG5jbGFzcyBVcGRhdGluZ1ZNRnJhbWUge1xuICBwcml2YXRlIGN1cnJlbnQ6IE9wdGlvbjxVcGRhdGluZ09wY29kZT47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB2bTogVXBkYXRpbmdWTSwgcHJpdmF0ZSBvcHM6IFVwZGF0aW5nT3BTZXEsIHByaXZhdGUgZXhjZXB0aW9uSGFuZGxlcjogT3B0aW9uPEV4Y2VwdGlvbkhhbmRsZXI+KSB7XG4gICAgdGhpcy52bSA9IHZtO1xuICAgIHRoaXMub3BzID0gb3BzO1xuICAgIHRoaXMuY3VycmVudCA9IG9wcy5oZWFkKCk7XG4gIH1cblxuICBnb3RvKG9wOiBVcGRhdGluZ09wY29kZSkge1xuICAgIHRoaXMuY3VycmVudCA9IG9wO1xuICB9XG5cbiAgbmV4dFN0YXRlbWVudCgpOiBPcHRpb248VXBkYXRpbmdPcGNvZGU+IHtcbiAgICBsZXQgeyBjdXJyZW50LCBvcHMgfSA9IHRoaXM7XG4gICAgaWYgKGN1cnJlbnQpIHRoaXMuY3VycmVudCA9IG9wcy5uZXh0Tm9kZShjdXJyZW50KTtcbiAgICByZXR1cm4gY3VycmVudDtcbiAgfVxuXG4gIGhhbmRsZUV4Y2VwdGlvbigpIHtcbiAgICBpZiAodGhpcy5leGNlcHRpb25IYW5kbGVyKSB7XG4gICAgICB0aGlzLmV4Y2VwdGlvbkhhbmRsZXIuaGFuZGxlRXhjZXB0aW9uKCk7XG4gICAgfVxuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidXBkYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQSxBQUFPLEFBQXFCLEFBQUssQUFBRSxBQUFJLEFBQUksQUFBVSxBQUFFLEFBQU0sQUFBVyxBQUFDOztBQUN6RSxBQUFPLEFBQUUsQUFBWSxBQUE2QixBQUFNLEFBQVksQUFBQzs7QUFDckUsQUFBTyxBQUFrQixBQUFLLEFBQUUsQUFBVSxBQUFRLEFBQUksQUFBVSxBQUFNLEFBQWUsQUFBQzs7QUFDdEYsQUFBTyxBQUdMLEFBQW9CLEFBR3BCLEFBQU8sQUFDUCxBQUFPLEFBRVAsQUFBWSxBQUVaLEFBQVksQUFDWixBQUFZLEFBQ1osQUFBTyxBQUNSLEFBQU0sQUFBb0IsQUFBQzs7QUFDNUIsQUFBTyxBQUFjLEFBQWMsQUFBaUIsQUFBTSxBQUFZLEFBQUM7O0FBS3ZFLEFBQU8sQUFBRSxBQUFFLEFBQWlCLEFBQWUsQUFBRSxBQUFNLEFBQVUsQUFBQyxBQUU5RCxBQUFNLEFBQUMsQUFBTzs7Ozs7OztBQVFaLGdCQUFZLEFBQWdCLEtBQUUsRUFBRSxBQUFnQixtQkFBRyxBQUFLLEFBQUU7QUFGbEQsYUFBVSxhQUEyQixBQUFJLEFBQUssQUFBbUIsQUFBQztBQUd4RSxBQUFJLGFBQUMsQUFBRyxNQUFHLEFBQUcsQUFBQztBQUNmLEFBQUksYUFBQyxBQUFTLFlBQUcsQUFBRyxJQUFDLEFBQVMsQUFBQztBQUMvQixBQUFJLGFBQUMsQUFBRyxNQUFHLEFBQUcsSUFBQyxBQUFNLEFBQUUsQUFBQztBQUN4QixBQUFJLGFBQUMsQUFBZ0IsbUJBQUcsQUFBZ0IsQUFBQyxBQUMzQztBQUFDO0FBRUQsQUFBTyxZQUFDLEFBQXNCLFNBQUUsQUFBeUI7QUFDdkQsWUFBSSxFQUFFLEFBQVUsQUFBRSxlQUFHLEFBQUksQUFBQztBQUUxQixBQUFJLGFBQUMsQUFBRyxJQUFDLEFBQU8sU0FBRSxBQUFPLEFBQUMsQUFBQztBQUUzQixlQUFP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LFVBQUcsQUFBRyxJQUFDLEFBQVEsU0FBQyxBQUFPLEFBQUMsQUFBQztBQUNsRCxBQUFNLGVBQUMsQUFBTyxBQUFDLEFBQ2pCO0FBQUM7QUFFRCxBQUFlO0FBQ2IsQUFBRSxBQUFDLFlBQUMsQUFBSSxLQUFDLEFBQWdCLEFBQUMsa0JBQUMsQUFBQztBQUMxQixBQUFJLGlCQUFDLEFBQWdCLGlCQUFDLEFBQWUsQUFBRSxBQUFDLEFBQzFDO0FBQUMsQUFDSDtBQUFDLEFBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY29wZSwgRHluYW1pY1Njb3BlLCBFbnZpcm9ubWVudCB9IGZyb20gJy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IERlc3Ryb3lhYmxlQm91bmRzLCBjbGVhciwgbW92ZSBhcyBtb3ZlQm91bmRzIH0gZnJvbSAnLi4vYm91bmRzJztcbmltcG9ydCB7IEVsZW1lbnRTdGFjaywgVHJhY2tlciwgVXBkYXRhYmxlVHJhY2tlciB9IGZyb20gJy4uL2J1aWxkZXInO1xuaW1wb3J0IHsgT3B0aW9uLCBPcGFxdWUsIFN0YWNrLCBMaW5rZWRMaXN0LCBEaWN0LCBkaWN0LCBleHBlY3QgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7XG4gIFBhdGhSZWZlcmVuY2UsXG4gIEl0ZXJhdGlvbkFydGlmYWN0cyxcbiAgSXRlcmF0b3JTeW5jaHJvbml6ZXIsXG4gIEl0ZXJhdG9yU3luY2hyb25pemVyRGVsZWdhdGUsXG5cbiAgLy8gVGFnc1xuICBjb21iaW5lLFxuICBSZXZpc2lvbixcbiAgVXBkYXRhYmxlVGFnLFxuICBUYWdXcmFwcGVyLFxuICBjb21iaW5lU2xpY2UsXG4gIENPTlNUQU5UX1RBRyxcbiAgSU5JVElBTFxufSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgT3Bjb2RlSlNPTiwgVXBkYXRpbmdPcGNvZGUsIFVwZGF0aW5nT3BTZXEgfSBmcm9tICcuLi9vcGNvZGVzJztcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4uL2Vudmlyb25tZW50L2NvbnN0YW50cyc7XG5pbXBvcnQgeyBET01DaGFuZ2VzIH0gZnJvbSAnLi4vZG9tL2hlbHBlcic7XG5pbXBvcnQgKiBhcyBTaW1wbGUgZnJvbSAnLi4vZG9tL2ludGVyZmFjZXMnO1xuXG5pbXBvcnQgVk0sIHsgQ2FwdHVyZWRTdGFjaywgRXZhbHVhdGlvblN0YWNrIH0gZnJvbSAnLi9hcHBlbmQnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBVcGRhdGluZ1ZNIHtcbiAgcHVibGljIGVudjogRW52aXJvbm1lbnQ7XG4gIHB1YmxpYyBkb206IERPTUNoYW5nZXM7XG4gIHB1YmxpYyBhbHdheXNSZXZhbGlkYXRlOiBib29sZWFuO1xuICBwdWJsaWMgY29uc3RhbnRzOiBDb25zdGFudHM7XG5cbiAgcHJpdmF0ZSBmcmFtZVN0YWNrOiBTdGFjazxVcGRhdGluZ1ZNRnJhbWU+ID0gbmV3IFN0YWNrPFVwZGF0aW5nVk1GcmFtZT4oKTtcblxuICBjb25zdHJ1Y3RvcihlbnY6IEVudmlyb25tZW50LCB7IGFsd2F5c1JldmFsaWRhdGUgPSBmYWxzZSB9KSB7XG4gICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgdGhpcy5jb25zdGFudHMgPSBlbnYuY29uc3RhbnRzO1xuICAgIHRoaXMuZG9tID0gZW52LmdldERPTSgpO1xuICAgIHRoaXMuYWx3YXlzUmV2YWxpZGF0ZSA9IGFsd2F5c1JldmFsaWRhdGU7XG4gIH1cblxuICBleGVjdXRlKG9wY29kZXM6IFVwZGF0aW5nT3BTZXEsIGhhbmRsZXI6IEV4Y2VwdGlvbkhhbmRsZXIpIHtcbiAgICBsZXQgeyBmcmFtZVN0YWNrIH0gPSB0aGlzO1xuXG4gICAgdGhpcy50cnkob3Bjb2RlcywgaGFuZGxlcik7XG5cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgaWYgKGZyYW1lU3RhY2suaXNFbXB0eSgpKSBicmVhaztcblxuICAgICAgbGV0IG9wY29kZSA9IHRoaXMuZnJhbWUubmV4dFN0YXRlbWVudCgpO1xuXG4gICAgICBpZiAob3Bjb2RlID09PSBudWxsKSB7XG4gICAgICAgIHRoaXMuZnJhbWVTdGFjay5wb3AoKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIG9wY29kZS5ldmFsdWF0ZSh0aGlzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldCBmcmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZVN0YWNrLmN1cnJlbnQ7XG4gIH1cblxuICBnb3RvKG9wOiBVcGRhdGluZ09wY29kZSkge1xuICAgIHRoaXMuZnJhbWUuZ290byhvcCk7XG4gIH1cblxuICB0cnkob3BzOiBVcGRhdGluZ09wU2VxLCBoYW5kbGVyOiBPcHRpb248RXhjZXB0aW9uSGFuZGxlcj4pIHtcbiAgICB0aGlzLmZyYW1lU3RhY2sucHVzaChuZXcgVXBkYXRpbmdWTUZyYW1lKHRoaXMsIG9wcywgaGFuZGxlcikpO1xuICB9XG5cbiAgdGhyb3coKSB7XG4gICAgdGhpcy5mcmFtZS5oYW5kbGVFeGNlcHRpb24oKTtcbiAgICB0aGlzLmZyYW1lU3RhY2sucG9wKCk7XG4gIH1cblxuICBldmFsdWF0ZU9wY29kZShvcGNvZGU6IFVwZGF0aW5nT3Bjb2RlKSB7XG4gICAgb3Bjb2RlLmV2YWx1YXRlKHRoaXMpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhjZXB0aW9uSGFuZGxlciB7XG4gIGhhbmRsZUV4Y2VwdGlvbigpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZNU3RhdGUge1xuICBlbnY6IEVudmlyb25tZW50O1xuICBzY29wZTogU2NvcGU7XG4gIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlO1xuICBzdGFjazogQ2FwdHVyZWRTdGFjaztcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJsb2NrT3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUgaW1wbGVtZW50cyBEZXN0cm95YWJsZUJvdW5kcyB7XG4gIHB1YmxpYyB0eXBlID0gXCJibG9ja1wiO1xuICBwdWJsaWMgbmV4dCA9IG51bGw7XG4gIHB1YmxpYyBwcmV2ID0gbnVsbDtcbiAgcHVibGljIGNoaWxkcmVuOiBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPjtcblxuICBwcm90ZWN0ZWQgZW52OiBFbnZpcm9ubWVudDtcbiAgcHJvdGVjdGVkIHNjb3BlOiBTY29wZTtcbiAgcHJvdGVjdGVkIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlO1xuICBwcm90ZWN0ZWQgc3RhY2s6IENhcHR1cmVkU3RhY2s7XG4gIHByb3RlY3RlZCBib3VuZHM6IERlc3Ryb3lhYmxlQm91bmRzO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBzdGFydDogbnVtYmVyLCBzdGF0ZTogVk1TdGF0ZSwgYm91bmRzOiBEZXN0cm95YWJsZUJvdW5kcywgY2hpbGRyZW46IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KSB7XG4gICAgc3VwZXIoKTtcbiAgICBsZXQgeyBlbnYsIHNjb3BlLCBkeW5hbWljU2NvcGUsIHN0YWNrIH0gPSBzdGF0ZTtcbiAgICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgdGhpcy5zY29wZSA9IHNjb3BlO1xuICAgIHRoaXMuZHluYW1pY1Njb3BlID0gZHluYW1pY1Njb3BlO1xuICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICB0aGlzLmJvdW5kcyA9IGJvdW5kcztcbiAgfVxuXG4gIGFic3RyYWN0IGRpZEluaXRpYWxpemVDaGlsZHJlbigpOiB2b2lkO1xuXG4gIHBhcmVudEVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuYm91bmRzLnBhcmVudEVsZW1lbnQoKTtcbiAgfVxuXG4gIGZpcnN0Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMuZmlyc3ROb2RlKCk7XG4gIH1cblxuICBsYXN0Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMubGFzdE5vZGUoKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgdm0udHJ5KHRoaXMuY2hpbGRyZW4sIG51bGwpO1xuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLmJvdW5kcy5kZXN0cm95KCk7XG4gIH1cblxuICBkaWREZXN0cm95KCkge1xuICAgIHRoaXMuZW52LmRpZERlc3Ryb3kodGhpcy5ib3VuZHMpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUcnlPcGNvZGUgZXh0ZW5kcyBCbG9ja09wY29kZSBpbXBsZW1lbnRzIEV4Y2VwdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdHlwZSA9IFwidHJ5XCI7XG5cbiAgcHJpdmF0ZSBfdGFnOiBUYWdXcmFwcGVyPFVwZGF0YWJsZVRhZz47XG5cbiAgcHJvdGVjdGVkIGJvdW5kczogVXBkYXRhYmxlVHJhY2tlcjtcblxuICBjb25zdHJ1Y3RvcihzdGFydDogbnVtYmVyLCBzdGF0ZTogVk1TdGF0ZSwgYm91bmRzOiBVcGRhdGFibGVUcmFja2VyLCBjaGlsZHJlbjogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4pIHtcbiAgICBzdXBlcihzdGFydCwgc3RhdGUsIGJvdW5kcywgY2hpbGRyZW4pO1xuICAgIHRoaXMudGFnID0gdGhpcy5fdGFnID0gVXBkYXRhYmxlVGFnLmNyZWF0ZShDT05TVEFOVF9UQUcpO1xuICB9XG5cbiAgZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKCkge1xuICAgIHRoaXMuX3RhZy5pbm5lci51cGRhdGUoY29tYmluZVNsaWNlKHRoaXMuY2hpbGRyZW4pKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgdm0udHJ5KHRoaXMuY2hpbGRyZW4sIHRoaXMpO1xuICB9XG5cbiAgaGFuZGxlRXhjZXB0aW9uKCkge1xuICAgIGxldCB7IGVudiwgYm91bmRzLCBjaGlsZHJlbiwgc2NvcGUsIGR5bmFtaWNTY29wZSwgc3RhcnQsIHN0YWNrLCBwcmV2LCBuZXh0IH0gPSB0aGlzO1xuXG4gICAgY2hpbGRyZW4uY2xlYXIoKTtcblxuICAgIGxldCBlbGVtZW50U3RhY2sgPSBFbGVtZW50U3RhY2sucmVzdW1lKFxuICAgICAgZW52LFxuICAgICAgYm91bmRzLFxuICAgICAgYm91bmRzLnJlc2V0KGVudilcbiAgICApO1xuXG4gICAgbGV0IHZtID0gbmV3IFZNKGVudiwgc2NvcGUsIGR5bmFtaWNTY29wZSwgZWxlbWVudFN0YWNrKTtcblxuICAgIGxldCB1cGRhdGluZyA9IG5ldyBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPigpO1xuXG4gICAgdm0uZXhlY3V0ZShzdGFydCwgdm0gPT4ge1xuICAgICAgdm0uc3RhY2sgPSBFdmFsdWF0aW9uU3RhY2sucmVzdG9yZShzdGFjayk7XG4gICAgICB2bS51cGRhdGluZ09wY29kZVN0YWNrLnB1c2godXBkYXRpbmcpO1xuICAgICAgdm0udXBkYXRlV2l0aCh0aGlzKTtcbiAgICAgIHZtLnVwZGF0aW5nT3Bjb2RlU3RhY2sucHVzaChjaGlsZHJlbik7XG4gICAgfSk7XG5cbiAgICB0aGlzLnByZXYgPSBwcmV2O1xuICAgIHRoaXMubmV4dCA9IG5leHQ7XG4gIH1cbn1cblxuY2xhc3MgTGlzdFJldmFsaWRhdGlvbkRlbGVnYXRlIGltcGxlbWVudHMgSXRlcmF0b3JTeW5jaHJvbml6ZXJEZWxlZ2F0ZSB7XG4gIHByaXZhdGUgbWFwOiBEaWN0PEJsb2NrT3Bjb2RlPjtcbiAgcHJpdmF0ZSB1cGRhdGluZzogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT47XG5cbiAgcHJpdmF0ZSBkaWRJbnNlcnQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBkaWREZWxldGUgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG9wY29kZTogTGlzdEJsb2NrT3Bjb2RlLCBwcml2YXRlIG1hcmtlcjogU2ltcGxlLkNvbW1lbnQpIHtcbiAgICB0aGlzLm1hcCA9IG9wY29kZS5tYXA7XG4gICAgdGhpcy51cGRhdGluZyA9IG9wY29kZVsnY2hpbGRyZW4nXTtcbiAgfVxuXG4gIGluc2VydChrZXk6IHN0cmluZywgaXRlbTogUGF0aFJlZmVyZW5jZTxPcGFxdWU+LCBtZW1vOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIGJlZm9yZTogc3RyaW5nKSB7XG4gICAgbGV0IHsgbWFwLCBvcGNvZGUsIHVwZGF0aW5nIH0gPSB0aGlzO1xuICAgIGxldCBuZXh0U2libGluZzogT3B0aW9uPFNpbXBsZS5Ob2RlPiA9IG51bGw7XG4gICAgbGV0IHJlZmVyZW5jZTogT3B0aW9uPEJsb2NrT3Bjb2RlPiA9IG51bGw7XG5cbiAgICBpZiAoYmVmb3JlKSB7XG4gICAgICByZWZlcmVuY2UgPSBtYXBbYmVmb3JlXTtcbiAgICAgIG5leHRTaWJsaW5nID0gcmVmZXJlbmNlWydib3VuZHMnXS5maXJzdE5vZGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV4dFNpYmxpbmcgPSB0aGlzLm1hcmtlcjtcbiAgICB9XG5cbiAgICBsZXQgdm0gPSBvcGNvZGUudm1Gb3JJbnNlcnRpb24obmV4dFNpYmxpbmcpO1xuICAgIGxldCB0cnlPcGNvZGU6IE9wdGlvbjxUcnlPcGNvZGU+ID0gbnVsbDtcblxuICAgIGxldCB7IHN0YXJ0IH0gPSBvcGNvZGU7XG5cbiAgICB2bS5leGVjdXRlKHN0YXJ0LCB2bSA9PiB7XG4gICAgICBtYXBba2V5XSA9IHRyeU9wY29kZSA9IHZtLml0ZXJhdGUobWVtbywgaXRlbSk7XG4gICAgICB2bS51cGRhdGluZ09wY29kZVN0YWNrLnB1c2gobmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCkpO1xuICAgICAgdm0udXBkYXRlV2l0aCh0cnlPcGNvZGUpO1xuICAgICAgdm0udXBkYXRpbmdPcGNvZGVTdGFjay5wdXNoKHRyeU9wY29kZS5jaGlsZHJlbik7XG4gICAgfSk7XG5cbiAgICB1cGRhdGluZy5pbnNlcnRCZWZvcmUodHJ5T3Bjb2RlISwgcmVmZXJlbmNlKTtcblxuICAgIHRoaXMuZGlkSW5zZXJ0ID0gdHJ1ZTtcbiAgfVxuXG4gIHJldGFpbihfa2V5OiBzdHJpbmcsIF9pdGVtOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIF9tZW1vOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4pIHtcbiAgfVxuXG4gIG1vdmUoa2V5OiBzdHJpbmcsIF9pdGVtOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIF9tZW1vOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIGJlZm9yZTogc3RyaW5nKSB7XG4gICAgbGV0IHsgbWFwLCB1cGRhdGluZyB9ID0gdGhpcztcblxuICAgIGxldCBlbnRyeSA9IG1hcFtrZXldO1xuICAgIGxldCByZWZlcmVuY2UgPSBtYXBbYmVmb3JlXSB8fCBudWxsO1xuXG4gICAgaWYgKGJlZm9yZSkge1xuICAgICAgbW92ZUJvdW5kcyhlbnRyeSwgcmVmZXJlbmNlLmZpcnN0Tm9kZSgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbW92ZUJvdW5kcyhlbnRyeSwgdGhpcy5tYXJrZXIpO1xuICAgIH1cblxuICAgIHVwZGF0aW5nLnJlbW92ZShlbnRyeSk7XG4gICAgdXBkYXRpbmcuaW5zZXJ0QmVmb3JlKGVudHJ5LCByZWZlcmVuY2UpO1xuICB9XG5cbiAgZGVsZXRlKGtleTogc3RyaW5nKSB7XG4gICAgbGV0IHsgbWFwIH0gPSB0aGlzO1xuICAgIGxldCBvcGNvZGUgPSBtYXBba2V5XTtcbiAgICBvcGNvZGUuZGlkRGVzdHJveSgpO1xuICAgIGNsZWFyKG9wY29kZSk7XG4gICAgdGhpcy51cGRhdGluZy5yZW1vdmUob3Bjb2RlKTtcbiAgICBkZWxldGUgbWFwW2tleV07XG5cbiAgICB0aGlzLmRpZERlbGV0ZSA9IHRydWU7XG4gIH1cblxuICBkb25lKCkge1xuICAgIHRoaXMub3Bjb2RlLmRpZEluaXRpYWxpemVDaGlsZHJlbih0aGlzLmRpZEluc2VydCB8fCB0aGlzLmRpZERlbGV0ZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIExpc3RCbG9ja09wY29kZSBleHRlbmRzIEJsb2NrT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImxpc3QtYmxvY2tcIjtcbiAgcHVibGljIG1hcCA9IGRpY3Q8QmxvY2tPcGNvZGU+KCk7XG4gIHB1YmxpYyBhcnRpZmFjdHM6IEl0ZXJhdGlvbkFydGlmYWN0cztcblxuICBwcml2YXRlIGxhc3RJdGVyYXRlZDogUmV2aXNpb24gPSBJTklUSUFMO1xuICBwcml2YXRlIF90YWc6IFRhZ1dyYXBwZXI8VXBkYXRhYmxlVGFnPjtcblxuICBjb25zdHJ1Y3RvcihzdGFydDogbnVtYmVyLCBzdGF0ZTogVk1TdGF0ZSwgYm91bmRzOiBUcmFja2VyLCBjaGlsZHJlbjogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4sIGFydGlmYWN0czogSXRlcmF0aW9uQXJ0aWZhY3RzKSB7XG4gICAgc3VwZXIoc3RhcnQsIHN0YXRlLCBib3VuZHMsIGNoaWxkcmVuKTtcbiAgICB0aGlzLmFydGlmYWN0cyA9IGFydGlmYWN0cztcbiAgICBsZXQgX3RhZyA9IHRoaXMuX3RhZyA9IFVwZGF0YWJsZVRhZy5jcmVhdGUoQ09OU1RBTlRfVEFHKTtcbiAgICB0aGlzLnRhZyA9IGNvbWJpbmUoW2FydGlmYWN0cy50YWcsIF90YWddKTtcbiAgfVxuXG4gIGRpZEluaXRpYWxpemVDaGlsZHJlbihsaXN0RGlkQ2hhbmdlID0gdHJ1ZSkge1xuICAgIHRoaXMubGFzdEl0ZXJhdGVkID0gdGhpcy5hcnRpZmFjdHMudGFnLnZhbHVlKCk7XG5cbiAgICBpZiAobGlzdERpZENoYW5nZSkge1xuICAgICAgdGhpcy5fdGFnLmlubmVyLnVwZGF0ZShjb21iaW5lU2xpY2UodGhpcy5jaGlsZHJlbikpO1xuICAgIH1cbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgbGV0IHsgYXJ0aWZhY3RzLCBsYXN0SXRlcmF0ZWQgfSA9IHRoaXM7XG5cbiAgICBpZiAoIWFydGlmYWN0cy50YWcudmFsaWRhdGUobGFzdEl0ZXJhdGVkKSkge1xuICAgICAgbGV0IHsgYm91bmRzIH0gPSB0aGlzO1xuICAgICAgbGV0IHsgZG9tIH0gPSB2bTtcblxuICAgICAgbGV0IG1hcmtlciA9IGRvbS5jcmVhdGVDb21tZW50KCcnKTtcbiAgICAgIGRvbS5pbnNlcnRBZnRlcihib3VuZHMucGFyZW50RWxlbWVudCgpLCBtYXJrZXIsIGJvdW5kcy5sYXN0Tm9kZSgpKTtcblxuICAgICAgbGV0IHRhcmdldCA9IG5ldyBMaXN0UmV2YWxpZGF0aW9uRGVsZWdhdGUodGhpcywgbWFya2VyKTtcbiAgICAgIGxldCBzeW5jaHJvbml6ZXIgPSBuZXcgSXRlcmF0b3JTeW5jaHJvbml6ZXIoeyB0YXJnZXQsIGFydGlmYWN0cyB9KTtcblxuICAgICAgc3luY2hyb25pemVyLnN5bmMoKTtcblxuICAgICAgdGhpcy5wYXJlbnRFbGVtZW50KCkucmVtb3ZlQ2hpbGQobWFya2VyKTtcbiAgICB9XG5cbiAgICAvLyBSdW4gbm93LXVwZGF0ZWQgdXBkYXRpbmcgb3Bjb2Rlc1xuICAgIHN1cGVyLmV2YWx1YXRlKHZtKTtcbiAgfVxuXG4gIHZtRm9ySW5zZXJ0aW9uKG5leHRTaWJsaW5nOiBPcHRpb248U2ltcGxlLk5vZGU+KTogVk0ge1xuICAgIGxldCB7IGVudiwgc2NvcGUsIGR5bmFtaWNTY29wZSB9ID0gdGhpcztcblxuICAgIGxldCBlbGVtZW50U3RhY2sgPSBFbGVtZW50U3RhY2suZm9ySW5pdGlhbFJlbmRlcihcbiAgICAgIHRoaXMuZW52LFxuICAgICAgdGhpcy5ib3VuZHMucGFyZW50RWxlbWVudCgpLFxuICAgICAgbmV4dFNpYmxpbmdcbiAgICApO1xuXG4gICAgcmV0dXJuIG5ldyBWTShlbnYsIHNjb3BlLCBkeW5hbWljU2NvcGUsIGVsZW1lbnRTdGFjayk7XG4gIH1cbn1cblxuY2xhc3MgVXBkYXRpbmdWTUZyYW1lIHtcbiAgcHJpdmF0ZSBjdXJyZW50OiBPcHRpb248VXBkYXRpbmdPcGNvZGU+O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdm06IFVwZGF0aW5nVk0sIHByaXZhdGUgb3BzOiBVcGRhdGluZ09wU2VxLCBwcml2YXRlIGV4Y2VwdGlvbkhhbmRsZXI6IE9wdGlvbjxFeGNlcHRpb25IYW5kbGVyPikge1xuICAgIHRoaXMudm0gPSB2bTtcbiAgICB0aGlzLm9wcyA9IG9wcztcbiAgICB0aGlzLmN1cnJlbnQgPSBvcHMuaGVhZCgpO1xuICB9XG5cbiAgZ290byhvcDogVXBkYXRpbmdPcGNvZGUpIHtcbiAgICB0aGlzLmN1cnJlbnQgPSBvcDtcbiAgfVxuXG4gIG5leHRTdGF0ZW1lbnQoKTogT3B0aW9uPFVwZGF0aW5nT3Bjb2RlPiB7XG4gICAgbGV0IHsgY3VycmVudCwgb3BzIH0gPSB0aGlzO1xuICAgIGlmIChjdXJyZW50KSB0aGlzLmN1cnJlbnQgPSBvcHMubmV4dE5vZGUoY3VycmVudCk7XG4gICAgcmV0dXJuIGN1cnJlbnQ7XG4gIH1cblxuICBoYW5kbGVFeGNlcHRpb24oKSB7XG4gICAgaWYgKHRoaXMuZXhjZXB0aW9uSGFuZGxlcikge1xuICAgICAgdGhpcy5leGNlcHRpb25IYW5kbGVyLmhhbmRsZUV4Y2VwdGlvbigpO1xuICAgIH1cbiAgfVxufVxuIl19

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

});
exports.ConcreteBounds = exports.ElementStack = exports.Simple = exports.insertHTMLBefore = exports.isWhitespace = exports.DOMTreeConstruction = exports.IDOMChanges = exports.DOMChanges = exports.isComponentDefinition = exports.ComponentDefinition = exports.PartialDefinition = exports.Environment = exports.Scope = exports.isSafeString = exports.RenderResult = exports.UpdatingVM = exports.compileStatement = exports.CompilableTemplate = exports.ClientSide = exports.compileExpression = exports.compileList = exports.InlineMacros = exports.BlockMacros = exports.getDynamicVar = exports.resetDebuggerCallback = exports.setDebuggerCallback = exports.normalizeTextValue = exports.debugSlice = exports.Register = exports.readDOMAttr = exports.defaultPropertyManagers = exports.defaultAttributeManagers = exports.defaultManagers = exports.INPUT_VALUE_PROPERTY_MANAGER = exports.PropertyManager = exports.AttributeManager = exports.IAttributeManager = exports.CompiledDynamicTemplate = exports.CompiledStaticTemplate = exports.compileLayout = exports.OpcodeBuilderDSL = exports.ConditionalReference = exports.PrimitiveReference = exports.UNDEFINED_REFERENCE = exports.NULL_REFERENCE = exports.templateFactory = undefined;
exports.ConcreteBounds = exports.ElementStack = exports.Simple = exports.insertHTMLBefore = exports.isWhitespace = exports.DOMTreeConstruction = exports.IDOMChanges = exports.DOMChanges = exports.isComponentDefinition = exports.ComponentDefinition = exports.PartialDefinition = exports.Environment = exports.Scope = exports.isSafeString = exports.RenderResult = exports.UpdatingVM = exports.compileStatement = exports.CompilableTemplate = exports.ClientSide = exports.compileExpression = exports.compileList = exports.InlineMacros = exports.BlockMacros = exports.getDynamicVar = exports.resetDebuggerCallback = exports.setDebuggerCallback = exports.normalizeTextValue = exports.Register = exports.readDOMAttr = exports.defaultPropertyManagers = exports.defaultAttributeManagers = exports.defaultManagers = exports.INPUT_VALUE_PROPERTY_MANAGER = exports.PropertyManager = exports.AttributeManager = exports.IAttributeManager = exports.CompiledDynamicTemplate = exports.CompiledStaticTemplate = exports.compileLayout = exports.OpcodeBuilderDSL = exports.ConditionalReference = exports.PrimitiveReference = exports.UNDEFINED_REFERENCE = exports.NULL_REFERENCE = exports.templateFactory = undefined;

@@ -137,8 +137,2 @@ var _template = require('./lib/template');

});
Object.defineProperty(exports, 'debugSlice', {
enumerable: true,
get: function () {
return _opcodes.debugSlice;
}
});

@@ -351,2 +345,2 @@ var _content = require('./lib/compiled/opcodes/content');

exports.Simple = Simple;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7NkNBRVMsQUFBTyxBQUFJLEFBQWUsQUFBNkIsQUFBTSxBQUFnQixBQUFDLEFBRXZGLEFBQU87Ozs7Ozs7Ozt1QkFBRSxBQUFjOzs7Ozs7dUJBQUUsQUFBbUI7Ozs7Ozt1QkFBRSxBQUFrQjs7Ozs7O3VCQUFFLEFBQW9CLEFBQUUsQUFBTSxBQUFrQixBQUFDLEFBRWpILEFBQU87Ozs7Ozs7Ozs0Q0FDSixBQUFPLEFBQUksQUFBZ0IsQUFDN0IsQUFBTSxBQUFnQyxBQUFDLEFBRXhDLEFBQU87Ozs7Ozs7OztxQkFFTCxBQUFhLEFBQ2QsQUFBTSxBQUFnQixBQUFDLEFBT3hCLEFBQU87Ozs7Ozs7OzttQkFDTCxBQUFzQjs7Ozs7O21CQUN0QixBQUF1QixBQUd4QixBQUFNLEFBQXVCLEFBQUMsQUFFL0IsQUFBTzs7Ozs7Ozs7OzhCQUNMLEFBQWdCLEFBQUksQUFBaUI7Ozs7Ozs4QkFDckMsQUFBZ0I7Ozs7Ozs4QkFDaEIsQUFBZTs7Ozs7OzhCQUNmLEFBQTRCOzs7Ozs7OEJBQzVCLEFBQWU7Ozs7Ozs4QkFDZixBQUF3Qjs7Ozs7OzhCQUN4QixBQUF1Qjs7Ozs7OzhCQUN2QixBQUFXLEFBQ1osQUFBTSxBQUE4QixBQUFDLEFBRXRDLEFBQU87Ozs7Ozs7OztvQkFDTCxBQUFROzs7Ozs7b0JBQ1IsQUFBVSxBQUNYLEFBQU0sQUFBZSxBQUFDLEFBRXZCLEFBQU87Ozs7Ozs7OztvQkFDTCxBQUFrQixBQUNuQixBQUFNLEFBQWdDLEFBQUMsQUFFeEMsQUFBTzs7Ozs7Ozs7O3FCQUNMLEFBQW1COzs7Ozs7cUJBQ25CLEFBQXFCLEFBRXRCLEFBQU0sQUFBaUMsQUFBQyxBQUV6QyxBQUFPOzs7Ozs7Ozs7a0RBQ0wsQUFBTyxBQUFJLEFBQWEsQUFDekIsQUFBTSxBQUErQixBQUFDLEFBRXZDLEFBQU87Ozs7Ozs7OztzQkFDTCxBQUFNLEFBQUksQUFBVzs7Ozs7O3NCQUNyQixBQUFPLEFBQUksQUFBWTs7Ozs7O3NCQUd2QixBQUFXOzs7Ozs7c0JBQ1gsQUFBSSxBQUFJLEFBQWlCLEFBQzFCLEFBQU0sQUFBd0IsQUFBQyxBQUVoQyxBQUFPOzs7Ozs7Ozs7b0JBQ0wsQUFBVTs7Ozs7O29CQUNWLEFBQWtCOzs7Ozs7b0JBS2xCLEFBQWdCLEFBQ2pCLEFBQU0sQUFBZSxBQUFDLEFBRXZCLEFBQU87Ozs7Ozs7OztlQUFrQixBQUFVOzs7Ozs7ZUFBRSxBQUFZLEFBQWtCLEFBQU0sQUFBVSxBQUFDLEFBV3BGLEFBQU87Ozs7Ozs7OzttQkFBYyxBQUFZLEFBQUUsQUFBTSxBQUFjLEFBQUMsQUFFeEQsQUFBTzs7Ozs7Ozs7O3dCQUNMLEFBQUs7Ozs7OztnREFDTCxBQUFPLEFBQUksQUFBVyxBQUd2QixBQUFNLEFBQW1CLEFBQUMsQUFFM0IsQUFBTzs7Ozs7Ozs7O29CQUNMLEFBQWlCLEFBQ2xCLEFBQU0sQUFBZSxBQUFDLEFBRXZCLEFBQU87Ozs7Ozs7Ozt1QkFJTCxBQUFtQjs7Ozs7O3VCQUluQixBQUFxQixBQUN0QixBQUFNLEFBQTRCLEFBQUMsQUFNcEMsQUFBTzs7Ozs7Ozs7OzJDQUFFLEFBQU8sQUFBSSxBQUFVOzs7Ozs7bUJBQUUsQUFBVSxBQUFJLEFBQVc7Ozs7OzttQkFBRSxBQUFtQjs7Ozs7O21CQUFFLEFBQVk7Ozs7OzttQkFBRSxBQUFnQixBQUFFLEFBQU0sQUFBa0IsQUFBQzs7Ozs7Ozs7O3FCQUdoSSxBQUFZLEFBQXFCLEFBQU0sQUFBZSxBQUFDLEFBQ2hFLEFBQU87Ozs7Ozs7OzttQkFBcUIsQUFBYyxBQUFFLEFBQU0sQUFBYyxBQUFDOzs7O0FBdkhqRSxBQUFPLEFBQWlCLEFBQUMsQUFFekIsQUFBTzs7QUFrSFAsQUFBUTs7SUFBSyxBQUFNLEFBQU0sQUFBc0IsQUFBQyxBQUNoRCxBQUFPOzs7Ozs7UUFBRSxBQUFNLEFBQUUsQUFBQyxBQUNsQixBQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICcuL2xpYi9ib290c3RyYXAnO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIHRlbXBsYXRlRmFjdG9yeSwgVGVtcGxhdGVGYWN0b3J5LCBUZW1wbGF0ZSB9IGZyb20gJy4vbGliL3RlbXBsYXRlJztcblxuZXhwb3J0IHsgTlVMTF9SRUZFUkVOQ0UsIFVOREVGSU5FRF9SRUZFUkVOQ0UsIFByaW1pdGl2ZVJlZmVyZW5jZSwgQ29uZGl0aW9uYWxSZWZlcmVuY2UgfSBmcm9tICcuL2xpYi9yZWZlcmVuY2VzJztcblxuZXhwb3J0IHtcbiAgIGRlZmF1bHQgYXMgT3Bjb2RlQnVpbGRlckRTTFxufSBmcm9tICcuL2xpYi9jb21waWxlZC9vcGNvZGVzL2J1aWxkZXInO1xuXG5leHBvcnQge1xuICBDb21waWxhYmxlTGF5b3V0LFxuICBjb21waWxlTGF5b3V0XG59IGZyb20gJy4vbGliL2NvbXBpbGVyJztcblxuZXhwb3J0IHtcbiAgQ29tcG9uZW50QnVpbGRlcixcbiAgQ29tcG9uZW50QXJnc1xufSBmcm9tICcuL2xpYi9vcGNvZGUtYnVpbGRlcic7XG5cbmV4cG9ydCB7XG4gIENvbXBpbGVkU3RhdGljVGVtcGxhdGUsXG4gIENvbXBpbGVkRHluYW1pY1RlbXBsYXRlLFxuICBDb21waWxlZER5bmFtaWNCbG9jayxcbiAgQ29tcGlsZWREeW5hbWljUHJvZ3JhbVxufSBmcm9tICcuL2xpYi9jb21waWxlZC9ibG9ja3MnO1xuXG5leHBvcnQge1xuICBBdHRyaWJ1dGVNYW5hZ2VyIGFzIElBdHRyaWJ1dGVNYW5hZ2VyLFxuICBBdHRyaWJ1dGVNYW5hZ2VyLFxuICBQcm9wZXJ0eU1hbmFnZXIsXG4gIElOUFVUX1ZBTFVFX1BST1BFUlRZX01BTkFHRVIsXG4gIGRlZmF1bHRNYW5hZ2VycyxcbiAgZGVmYXVsdEF0dHJpYnV0ZU1hbmFnZXJzLFxuICBkZWZhdWx0UHJvcGVydHlNYW5hZ2VycyxcbiAgcmVhZERPTUF0dHJcbn0gZnJvbSAnLi9saWIvZG9tL2F0dHJpYnV0ZS1tYW5hZ2Vycyc7XG5cbmV4cG9ydCB7XG4gIFJlZ2lzdGVyLFxuICBkZWJ1Z1NsaWNlXG59IGZyb20gJy4vbGliL29wY29kZXMnO1xuXG5leHBvcnQge1xuICBub3JtYWxpemVUZXh0VmFsdWVcbn0gZnJvbSAnLi9saWIvY29tcGlsZWQvb3Bjb2Rlcy9jb250ZW50JztcblxuZXhwb3J0IHtcbiAgc2V0RGVidWdnZXJDYWxsYmFjayxcbiAgcmVzZXREZWJ1Z2dlckNhbGxiYWNrLFxuICBEZWJ1Z0NhbGxiYWNrXG59IGZyb20gJy4vbGliL2NvbXBpbGVkL29wY29kZXMvZGVidWdnZXInO1xuXG5leHBvcnQge1xuICBkZWZhdWx0IGFzIGdldER5bmFtaWNWYXJcbn0gZnJvbSAnLi9saWIvaGVscGVycy9nZXQtZHluYW1pYy12YXInO1xuXG5leHBvcnQge1xuICBCbG9ja3MgYXMgQmxvY2tNYWNyb3MsXG4gIElubGluZXMgYXMgSW5saW5lTWFjcm9zLFxuICBCbG9ja01hY3JvLFxuICBNaXNzaW5nQmxvY2tNYWNybyxcbiAgY29tcGlsZUxpc3QsXG4gIGV4cHIgYXMgY29tcGlsZUV4cHJlc3Npb25cbn0gZnJvbSAnLi9saWIvc3ludGF4L2Z1bmN0aW9ucyc7XG5cbmV4cG9ydCB7XG4gIENsaWVudFNpZGUsXG4gIENvbXBpbGFibGVUZW1wbGF0ZSxcbiAgU2Nhbm5lZEJsb2NrLFxuICBTY2FubmVkUHJvZ3JhbSxcbiAgQmxvY2ssXG4gIFByb2dyYW0sXG4gIGNvbXBpbGVTdGF0ZW1lbnRcbn0gZnJvbSAnLi9saWIvc2Nhbm5lcic7XG5cbmV4cG9ydCB7IFB1YmxpY1ZNIGFzIFZNLCBVcGRhdGluZ1ZNLCBSZW5kZXJSZXN1bHQsIEl0ZXJhdG9yUmVzdWx0IH0gZnJvbSAnLi9saWIvdm0nO1xuXG5leHBvcnQge1xuICBJQXJndW1lbnRzIGFzIEFyZ3VtZW50cyxcbiAgSUNhcHR1cmVkQXJndW1lbnRzIGFzIENhcHR1cmVkQXJndW1lbnRzLFxuICBJUG9zaXRpb25hbEFyZ3VtZW50cyBhcyBQb3NpdGlvbmFsQXJndW1lbnRzLFxuICBJQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzIGFzIENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50cyxcbiAgSU5hbWVkQXJndW1lbnRzIGFzIE5hbWVkQXJndW1lbnRzLFxuICBJQ2FwdHVyZWROYW1lZEFyZ3VtZW50cyBhcyBDYXB0dXJlZE5hbWVkQXJndW1lbnRzLFxufSBmcm9tICcuL2xpYi92bS9hcmd1bWVudHMnO1xuXG5leHBvcnQgeyBTYWZlU3RyaW5nLCBpc1NhZmVTdHJpbmcgfSBmcm9tICcuL2xpYi91cHNlcnQnO1xuXG5leHBvcnQge1xuICBTY29wZSxcbiAgZGVmYXVsdCBhcyBFbnZpcm9ubWVudCxcbiAgSGVscGVyLFxuICBEeW5hbWljU2NvcGUsXG59IGZyb20gJy4vbGliL2Vudmlyb25tZW50JztcblxuZXhwb3J0IHtcbiAgUGFydGlhbERlZmluaXRpb25cbn0gZnJvbSAnLi9saWIvcGFydGlhbCc7XG5cbmV4cG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50Q2xhc3MsXG4gIENvbXBvbmVudE1hbmFnZXIsXG4gIENvbXBvbmVudERlZmluaXRpb24sXG4gIENvbXBvbmVudExheW91dEJ1aWxkZXIsXG4gIENvbXBvbmVudEF0dHJzQnVpbGRlcixcbiAgUHJlcGFyZWRBcmd1bWVudHMsXG4gIGlzQ29tcG9uZW50RGVmaW5pdGlvblxufSBmcm9tICcuL2xpYi9jb21wb25lbnQvaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCB7XG4gIE1vZGlmaWVyTWFuYWdlclxufSBmcm9tICcuL2xpYi9tb2RpZmllci9pbnRlcmZhY2VzJztcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBET01DaGFuZ2VzLCBET01DaGFuZ2VzIGFzIElET01DaGFuZ2VzLCBET01UcmVlQ29uc3RydWN0aW9uLCBpc1doaXRlc3BhY2UsIGluc2VydEhUTUxCZWZvcmUgfSBmcm9tICcuL2xpYi9kb20vaGVscGVyJztcbmltcG9ydCAgKiBhcyBTaW1wbGUgZnJvbSAnLi9saWIvZG9tL2ludGVyZmFjZXMnO1xuZXhwb3J0IHsgU2ltcGxlIH07XG5leHBvcnQgeyBFbGVtZW50U3RhY2ssIEVsZW1lbnRPcGVyYXRpb25zIH0gZnJvbSAnLi9saWIvYnVpbGRlcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEJvdW5kcywgQ29uY3JldGVCb3VuZHMgfSBmcm9tICcuL2xpYi9ib3VuZHMnO1xuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7NkNBRVMsQUFBTyxBQUFJLEFBQWUsQUFBNkIsQUFBTSxBQUFnQixBQUFDLEFBRXZGLEFBQU87Ozs7Ozs7Ozt1QkFBRSxBQUFjOzs7Ozs7dUJBQUUsQUFBbUI7Ozs7Ozt1QkFBRSxBQUFrQjs7Ozs7O3VCQUFFLEFBQW9CLEFBQUUsQUFBTSxBQUFrQixBQUFDLEFBRWpILEFBQU87Ozs7Ozs7Ozs0Q0FDSixBQUFPLEFBQUksQUFBZ0IsQUFDN0IsQUFBTSxBQUFnQyxBQUFDLEFBRXhDLEFBQU87Ozs7Ozs7OztxQkFFTCxBQUFhLEFBQ2QsQUFBTSxBQUFnQixBQUFDLEFBT3hCLEFBQU87Ozs7Ozs7OzttQkFDTCxBQUFzQjs7Ozs7O21CQUN0QixBQUF1QixBQUd4QixBQUFNLEFBQXVCLEFBQUMsQUFFL0IsQUFBTzs7Ozs7Ozs7OzhCQUNMLEFBQWdCLEFBQUksQUFBaUI7Ozs7Ozs4QkFDckMsQUFBZ0I7Ozs7Ozs4QkFDaEIsQUFBZTs7Ozs7OzhCQUNmLEFBQTRCOzs7Ozs7OEJBQzVCLEFBQWU7Ozs7Ozs4QkFDZixBQUF3Qjs7Ozs7OzhCQUN4QixBQUF1Qjs7Ozs7OzhCQUN2QixBQUFXLEFBQ1osQUFBTSxBQUE4QixBQUFDLEFBRXRDLEFBQU87Ozs7Ozs7OztvQkFDTCxBQUFRLEFBQ1QsQUFBTSxBQUFlLEFBQUMsQUFFdkIsQUFBTzs7Ozs7Ozs7O29CQUNMLEFBQWtCLEFBQ25CLEFBQU0sQUFBZ0MsQUFBQyxBQUV4QyxBQUFPOzs7Ozs7Ozs7cUJBQ0wsQUFBbUI7Ozs7OztxQkFDbkIsQUFBcUIsQUFFdEIsQUFBTSxBQUFpQyxBQUFDLEFBRXpDLEFBQU87Ozs7Ozs7OztrREFDTCxBQUFPLEFBQUksQUFBYSxBQUN6QixBQUFNLEFBQStCLEFBQUMsQUFFdkMsQUFBTzs7Ozs7Ozs7O3NCQUNMLEFBQU0sQUFBSSxBQUFXOzs7Ozs7c0JBQ3JCLEFBQU8sQUFBSSxBQUFZOzs7Ozs7c0JBR3ZCLEFBQVc7Ozs7OztzQkFDWCxBQUFJLEFBQUksQUFBaUIsQUFDMUIsQUFBTSxBQUF3QixBQUFDLEFBRWhDLEFBQU87Ozs7Ozs7OztvQkFDTCxBQUFVOzs7Ozs7b0JBQ1YsQUFBa0I7Ozs7OztvQkFLbEIsQUFBZ0IsQUFDakIsQUFBTSxBQUFlLEFBQUMsQUFFdkIsQUFBTzs7Ozs7Ozs7O2VBQWtCLEFBQVU7Ozs7OztlQUFFLEFBQVksQUFBa0IsQUFBTSxBQUFVLEFBQUMsQUFXcEYsQUFBTzs7Ozs7Ozs7O21CQUFjLEFBQVksQUFBRSxBQUFNLEFBQWMsQUFBQyxBQUV4RCxBQUFPOzs7Ozs7Ozs7d0JBQ0wsQUFBSzs7Ozs7O2dEQUNMLEFBQU8sQUFBSSxBQUFXLEFBR3ZCLEFBQU0sQUFBbUIsQUFBQyxBQUUzQixBQUFPOzs7Ozs7Ozs7b0JBQ0wsQUFBaUIsQUFDbEIsQUFBTSxBQUFlLEFBQUMsQUFFdkIsQUFBTzs7Ozs7Ozs7O3VCQUlMLEFBQW1COzs7Ozs7dUJBSW5CLEFBQXFCLEFBQ3RCLEFBQU0sQUFBNEIsQUFBQyxBQU1wQyxBQUFPOzs7Ozs7Ozs7MkNBQUUsQUFBTyxBQUFJLEFBQVU7Ozs7OzttQkFBRSxBQUFVLEFBQUksQUFBVzs7Ozs7O21CQUFFLEFBQW1COzs7Ozs7bUJBQUUsQUFBWTs7Ozs7O21CQUFFLEFBQWdCLEFBQUUsQUFBTSxBQUFrQixBQUFDOzs7Ozs7Ozs7cUJBR2hJLEFBQVksQUFBcUIsQUFBTSxBQUFlLEFBQUMsQUFDaEUsQUFBTzs7Ozs7Ozs7O21CQUFxQixBQUFjLEFBQUUsQUFBTSxBQUFjLEFBQUM7Ozs7QUF0SGpFLEFBQU8sQUFBaUIsQUFBQyxBQUV6QixBQUFPOztBQWlIUCxBQUFROztJQUFLLEFBQU0sQUFBTSxBQUFzQixBQUFDLEFBQ2hELEFBQU87Ozs7OztRQUFFLEFBQU0sQUFBRSxBQUFDLEFBQ2xCLEFBQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJy4vbGliL2Jvb3RzdHJhcCc7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgdGVtcGxhdGVGYWN0b3J5LCBUZW1wbGF0ZUZhY3RvcnksIFRlbXBsYXRlIH0gZnJvbSAnLi9saWIvdGVtcGxhdGUnO1xuXG5leHBvcnQgeyBOVUxMX1JFRkVSRU5DRSwgVU5ERUZJTkVEX1JFRkVSRU5DRSwgUHJpbWl0aXZlUmVmZXJlbmNlLCBDb25kaXRpb25hbFJlZmVyZW5jZSB9IGZyb20gJy4vbGliL3JlZmVyZW5jZXMnO1xuXG5leHBvcnQge1xuICAgZGVmYXVsdCBhcyBPcGNvZGVCdWlsZGVyRFNMXG59IGZyb20gJy4vbGliL2NvbXBpbGVkL29wY29kZXMvYnVpbGRlcic7XG5cbmV4cG9ydCB7XG4gIENvbXBpbGFibGVMYXlvdXQsXG4gIGNvbXBpbGVMYXlvdXRcbn0gZnJvbSAnLi9saWIvY29tcGlsZXInO1xuXG5leHBvcnQge1xuICBDb21wb25lbnRCdWlsZGVyLFxuICBDb21wb25lbnRBcmdzXG59IGZyb20gJy4vbGliL29wY29kZS1idWlsZGVyJztcblxuZXhwb3J0IHtcbiAgQ29tcGlsZWRTdGF0aWNUZW1wbGF0ZSxcbiAgQ29tcGlsZWREeW5hbWljVGVtcGxhdGUsXG4gIENvbXBpbGVkRHluYW1pY0Jsb2NrLFxuICBDb21waWxlZER5bmFtaWNQcm9ncmFtXG59IGZyb20gJy4vbGliL2NvbXBpbGVkL2Jsb2Nrcyc7XG5cbmV4cG9ydCB7XG4gIEF0dHJpYnV0ZU1hbmFnZXIgYXMgSUF0dHJpYnV0ZU1hbmFnZXIsXG4gIEF0dHJpYnV0ZU1hbmFnZXIsXG4gIFByb3BlcnR5TWFuYWdlcixcbiAgSU5QVVRfVkFMVUVfUFJPUEVSVFlfTUFOQUdFUixcbiAgZGVmYXVsdE1hbmFnZXJzLFxuICBkZWZhdWx0QXR0cmlidXRlTWFuYWdlcnMsXG4gIGRlZmF1bHRQcm9wZXJ0eU1hbmFnZXJzLFxuICByZWFkRE9NQXR0clxufSBmcm9tICcuL2xpYi9kb20vYXR0cmlidXRlLW1hbmFnZXJzJztcblxuZXhwb3J0IHtcbiAgUmVnaXN0ZXIsXG59IGZyb20gJy4vbGliL29wY29kZXMnO1xuXG5leHBvcnQge1xuICBub3JtYWxpemVUZXh0VmFsdWVcbn0gZnJvbSAnLi9saWIvY29tcGlsZWQvb3Bjb2Rlcy9jb250ZW50JztcblxuZXhwb3J0IHtcbiAgc2V0RGVidWdnZXJDYWxsYmFjayxcbiAgcmVzZXREZWJ1Z2dlckNhbGxiYWNrLFxuICBEZWJ1Z0NhbGxiYWNrXG59IGZyb20gJy4vbGliL2NvbXBpbGVkL29wY29kZXMvZGVidWdnZXInO1xuXG5leHBvcnQge1xuICBkZWZhdWx0IGFzIGdldER5bmFtaWNWYXJcbn0gZnJvbSAnLi9saWIvaGVscGVycy9nZXQtZHluYW1pYy12YXInO1xuXG5leHBvcnQge1xuICBCbG9ja3MgYXMgQmxvY2tNYWNyb3MsXG4gIElubGluZXMgYXMgSW5saW5lTWFjcm9zLFxuICBCbG9ja01hY3JvLFxuICBNaXNzaW5nQmxvY2tNYWNybyxcbiAgY29tcGlsZUxpc3QsXG4gIGV4cHIgYXMgY29tcGlsZUV4cHJlc3Npb25cbn0gZnJvbSAnLi9saWIvc3ludGF4L2Z1bmN0aW9ucyc7XG5cbmV4cG9ydCB7XG4gIENsaWVudFNpZGUsXG4gIENvbXBpbGFibGVUZW1wbGF0ZSxcbiAgU2Nhbm5lZEJsb2NrLFxuICBTY2FubmVkUHJvZ3JhbSxcbiAgQmxvY2ssXG4gIFByb2dyYW0sXG4gIGNvbXBpbGVTdGF0ZW1lbnRcbn0gZnJvbSAnLi9saWIvc2Nhbm5lcic7XG5cbmV4cG9ydCB7IFB1YmxpY1ZNIGFzIFZNLCBVcGRhdGluZ1ZNLCBSZW5kZXJSZXN1bHQsIEl0ZXJhdG9yUmVzdWx0IH0gZnJvbSAnLi9saWIvdm0nO1xuXG5leHBvcnQge1xuICBJQXJndW1lbnRzIGFzIEFyZ3VtZW50cyxcbiAgSUNhcHR1cmVkQXJndW1lbnRzIGFzIENhcHR1cmVkQXJndW1lbnRzLFxuICBJUG9zaXRpb25hbEFyZ3VtZW50cyBhcyBQb3NpdGlvbmFsQXJndW1lbnRzLFxuICBJQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzIGFzIENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50cyxcbiAgSU5hbWVkQXJndW1lbnRzIGFzIE5hbWVkQXJndW1lbnRzLFxuICBJQ2FwdHVyZWROYW1lZEFyZ3VtZW50cyBhcyBDYXB0dXJlZE5hbWVkQXJndW1lbnRzLFxufSBmcm9tICcuL2xpYi92bS9hcmd1bWVudHMnO1xuXG5leHBvcnQgeyBTYWZlU3RyaW5nLCBpc1NhZmVTdHJpbmcgfSBmcm9tICcuL2xpYi91cHNlcnQnO1xuXG5leHBvcnQge1xuICBTY29wZSxcbiAgZGVmYXVsdCBhcyBFbnZpcm9ubWVudCxcbiAgSGVscGVyLFxuICBEeW5hbWljU2NvcGUsXG59IGZyb20gJy4vbGliL2Vudmlyb25tZW50JztcblxuZXhwb3J0IHtcbiAgUGFydGlhbERlZmluaXRpb25cbn0gZnJvbSAnLi9saWIvcGFydGlhbCc7XG5cbmV4cG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50Q2xhc3MsXG4gIENvbXBvbmVudE1hbmFnZXIsXG4gIENvbXBvbmVudERlZmluaXRpb24sXG4gIENvbXBvbmVudExheW91dEJ1aWxkZXIsXG4gIENvbXBvbmVudEF0dHJzQnVpbGRlcixcbiAgUHJlcGFyZWRBcmd1bWVudHMsXG4gIGlzQ29tcG9uZW50RGVmaW5pdGlvblxufSBmcm9tICcuL2xpYi9jb21wb25lbnQvaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCB7XG4gIE1vZGlmaWVyTWFuYWdlclxufSBmcm9tICcuL2xpYi9tb2RpZmllci9pbnRlcmZhY2VzJztcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBET01DaGFuZ2VzLCBET01DaGFuZ2VzIGFzIElET01DaGFuZ2VzLCBET01UcmVlQ29uc3RydWN0aW9uLCBpc1doaXRlc3BhY2UsIGluc2VydEhUTUxCZWZvcmUgfSBmcm9tICcuL2xpYi9kb20vaGVscGVyJztcbmltcG9ydCAgKiBhcyBTaW1wbGUgZnJvbSAnLi9saWIvZG9tL2ludGVyZmFjZXMnO1xuZXhwb3J0IHsgU2ltcGxlIH07XG5leHBvcnQgeyBFbGVtZW50U3RhY2ssIEVsZW1lbnRPcGVyYXRpb25zIH0gZnJvbSAnLi9saWIvYnVpbGRlcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEJvdW5kcywgQ29uY3JldGVCb3VuZHMgfSBmcm9tICcuL2xpYi9ib3VuZHMnO1xuIl19

@@ -125,11 +125,11 @@ "use strict";

ElementStack.prototype.expectConstructing = function expectConstructing(method) {
return (0, _util.expect)(this.constructing, method + ' should only be called while constructing an element');
return this.constructing;
};
ElementStack.prototype.expectOperations = function expectOperations(method) {
return (0, _util.expect)(this.operations, method + ' should only be called while constructing an element');
return this.operations;
};
ElementStack.prototype.block = function block() {
return (0, _util.expect)(this.blockStack.current, "Expected a current block tracker");
return this.blockStack.current;
};

@@ -144,3 +144,3 @@

// LOGGER.debug(`-> element stack ${this.elementStack.toArray().map(e => e.tagName).join(', ')}`);
this.element = (0, _util.expect)(elementStack.current, "can't pop past the last element");
this.element = elementStack.current;
this.nextSibling = nextSiblingStack.current;

@@ -189,3 +189,3 @@ return topElement;

this.block().finalize(this);
return (0, _util.expect)(this.blockStack.pop(), "Expected popBlock to return a block");
return this.blockStack.pop();
};

@@ -204,3 +204,3 @@

var parent = this.element;
var element = (0, _util.expect)(this.constructing, 'flushElement should only be called when constructing an element');
var element = this.constructing;
this.dom.insertBefore(parent, element, this.nextSibling);

@@ -432,13 +432,7 @@ this.constructing = null;

BlockListTracker.prototype.openElement = function openElement(_element) {
(0, _util.assert)(false, 'Cannot openElement directly inside a block list');
};
BlockListTracker.prototype.openElement = function openElement(_element) {};
BlockListTracker.prototype.closeElement = function closeElement() {
(0, _util.assert)(false, 'Cannot closeElement directly inside a block list');
};
BlockListTracker.prototype.closeElement = function closeElement() {};
BlockListTracker.prototype.newNode = function newNode(_node) {
(0, _util.assert)(false, 'Cannot create a new node directly inside a block list');
};
BlockListTracker.prototype.newNode = function newNode(_node) {};

@@ -453,2 +447,2 @@ BlockListTracker.prototype.newBounds = function newBounds(_bounds) {};

}();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLEFBQWUsQUFBNkIsQUFBSyxBQUFFLEFBQU0sQUFBVSxBQUFDOztBQUlwRSxBQUFPLEFBQXVCLEFBQUssQUFBOEIsQUFBTSxBQUFFLEFBQU0sQUFBRSxBQUFNLEFBQWUsQUFBQzs7QUFRdkcsQUFBTyxBQUNMLEFBQXVCLEFBQ3hCLEFBQU0sQUFBd0IsQUFBQyxBQVloQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt3QkFDRTttQkFBb0IsQUFBVTs4QkFBVjs7YUFBSSxPQUFKLEFBQUksQUFBTSxBQUFJLEFBQUM7OztvQkFFbkMsQUFBUyxpQ0FDUCxBQUFNO2VBQUMsQUFBSSxLQUFDLEFBQUksQUFBQyxBQUNuQixBQUFDLEFBQ0YsQUFFRDs7Ozs7O3VCQUNFO2tCQUFvQixBQUFVOzhCQUFWOzthQUFJLE9BQUosQUFBSSxBQUFNLEFBQUksQUFBQzs7O21CQUVuQyxBQUFRLCtCQUNOLEFBQU07ZUFBQyxBQUFJLEtBQUMsQUFBSSxBQUFDLEFBQ25CLEFBQUMsQUFDRjs7OztBQVVELEFBQU07OzhDQUdKO3NCQUFZLEFBQWM7OEJBQ3hCLEFBQUk7O2FBQUMsQUFBTSxTQUFHLEFBQU0sQUFBQyxBQUN2QixBQUFDOzs7dUJBRUQsQUFBYSx5Q0FDWCxBQUFNO2VBQUMsQUFBSSxLQUFDLEFBQU0sT0FBQyxBQUFhLEFBQUUsQUFBQyxBQUNyQyxBQUFDOzs7dUJBRUQsQUFBUyxpQ0FDUCxBQUFNO2VBQUMsQUFBSSxLQUFDLEFBQU0sT0FBQyxBQUFTLEFBQUUsQUFBQyxBQUNqQyxBQUFDOzs7dUJBRUQsQUFBUSwrQkFDTixBQUFNO2VBQUMsQUFBSSxLQUFDLEFBQU0sT0FBQyxBQUFRLEFBQUUsQUFBQyxBQUNoQyxBQUFDOzs7dUJBRUQsQUFBTSx5QkFBQyxBQUFjLFFBQ25CLEFBQUk7YUFBQyxBQUFNLFNBQUcsQUFBTSxB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QkFBQyxBQUFlLFNBQ3pCLEFBQUM7OytCQUVELEFBQWMseUNBQUMsQUFBZSxJQUM5QixBQUFDOzsrQkFFRCxBQUFRLDZCQUFDLEFBQW9CLFFBQzdCLEFBQUMsQUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCb3VuZHMsIHsgQ3Vyc29yLCBEZXN0cm95YWJsZUJvdW5kcywgY2xlYXIgfSBmcm9tICcuL2JvdW5kcyc7XG5cbmltcG9ydCB7IERPTUNoYW5nZXMsIERPTVRyZWVDb25zdHJ1Y3Rpb24gfSBmcm9tICcuL2RvbS9oZWxwZXInO1xuXG5pbXBvcnQgeyBPcHRpb24sIERlc3Ryb3lhYmxlLCBTdGFjaywgTGlua2VkTGlzdCwgTGlua2VkTGlzdE5vZGUsIGFzc2VydCwgZXhwZWN0IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5cbmltcG9ydCB7IEVudmlyb25tZW50IH0gZnJvbSAnLi9lbnZpcm9ubWVudCc7XG5cbmltcG9ydCB7IFZNIH0gZnJvbSAnLi92bSc7XG5cbmltcG9ydCB7IFZlcnNpb25lZFJlZmVyZW5jZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5cbmltcG9ydCB7XG4gIFNpbXBsZUVsZW1lbnRPcGVyYXRpb25zXG59IGZyb20gJy4vY29tcGlsZWQvb3Bjb2Rlcy9kb20nO1xuXG5pbXBvcnQgKiBhcyBTaW1wbGUgZnJvbSAnLi9kb20vaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlyc3ROb2RlIHtcbiAgZmlyc3ROb2RlKCk6IE9wdGlvbjxTaW1wbGUuTm9kZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGFzdE5vZGUge1xuICBsYXN0Tm9kZSgpOiBPcHRpb248U2ltcGxlLk5vZGU+O1xufVxuXG5jbGFzcyBGaXJzdCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbm9kZTogTm9kZSkgeyB9XG5cbiAgZmlyc3ROb2RlKCk6IE5vZGUge1xuICAgIHJldHVybiB0aGlzLm5vZGU7XG4gIH1cbn1cblxuY2xhc3MgTGFzdCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbm9kZTogTm9kZSkgeyB9XG5cbiAgbGFzdE5vZGUoKTogTm9kZSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVsZW1lbnRPcGVyYXRpb25zIHtcbiAgYWRkU3RhdGljQXR0cmlidXRlKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkO1xuICBhZGRTdGF0aWNBdHRyaWJ1dGVOUyhlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZXNwYWNlOiBzdHJpbmcsIG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQ7XG4gIGFkZER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5hbWU6IHN0cmluZywgdmFsdWU6IFZlcnNpb25lZFJlZmVyZW5jZTxzdHJpbmc+LCBpc1RydXN0aW5nOiBib29sZWFuKTogdm9pZDtcbiAgYWRkRHluYW1pY0F0dHJpYnV0ZU5TKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lc3BhY2U6IHN0cmluZywgbmFtZTogc3RyaW5nLCB2YWx1ZTogVmVyc2lvbmVkUmVmZXJlbmNlPHN0cmluZz4sIGlzVHJ1c3Rpbmc6IGJvb2xlYW4pOiB2b2lkO1xuICBmbHVzaChlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgdm06IFZNKTogdm9pZDtcbn1cblxuZXhwb3J0IGNsYXNzIEZyYWdtZW50IGltcGxlbWVudHMgQm91bmRzIHtcbiAgcHJpdmF0ZSBib3VuZHM6IEJvdW5kcztcblxuICBjb25zdHJ1Y3Rvcihib3VuZHM6IEJvdW5kcykge1xuICAgIHRoaXMuYm91bmRzID0gYm91bmRzO1xuICB9XG5cbiAgcGFyZW50RWxlbWVudCgpOiBTaW1wbGUuRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuYm91bmRzLnBhcmVudEVsZW1lbnQoKTtcbiAgfVxuXG4gIGZpcnN0Tm9kZSgpOiBPcHRpb248U2ltcGxlLk5vZGU+IHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMuZmlyc3ROb2RlKCk7XG4gIH1cblxuICBsYXN0Tm9kZSgpOiBPcHRpb248U2ltcGxlLk5vZGU+IHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMubGFzdE5vZGUoKTtcbiAgfVxuXG4gIHVwZGF0ZShib3VuZHM6IEJvdW5kcykge1xuICAgIHRoaXMuYm91bmRzID0gYm91bmRzO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFbGVtZW50U3RhY2sgaW1wbGVtZW50cyBDdXJzb3Ige1xuICBwdWJsaWMgbmV4dFNpYmxpbmc6IE9wdGlvbjxTaW1wbGUuTm9kZT47XG4gIHB1YmxpYyBkb206IERPTVRyZWVDb25zdHJ1Y3Rpb247XG4gIHB1YmxpYyB1cGRhdGVPcGVyYXRpb25zOiBET01DaGFuZ2VzO1xuICBwdWJsaWMgY29uc3RydWN0aW5nOiBPcHRpb248U2ltcGxlLkVsZW1lbnQ+ID0gbnVsbDtcbiAgcHVibGljIG9wZXJhdGlvbnM6IE9wdGlvbjxFbGVtZW50T3BlcmF0aW9ucz4gPSBudWxsO1xuICBwdWJsaWMgZWxlbWVudDogU2ltcGxlLkVsZW1lbnQ7XG4gIHB1YmxpYyBlbnY6IEVudmlyb25tZW50O1xuXG4gIHByaXZhdGUgZWxlbWVudFN0YWNrID0gbmV3IFN0YWNrPFNpbXBsZS5FbGVtZW50PigpO1xuICBwcml2YXRlIG5leHRTaWJsaW5nU3RhY2sgPSBuZXcgU3RhY2s8T3B0aW9uPFNpbXBsZS5Ob2RlPj4oKTtcbiAgcHJpdmF0ZSBibG9ja1N0YWNrID0gbmV3IFN0YWNrPFRyYWNrZXI+KCk7XG5cbiAgcHJpdmF0ZSBkZWZhdWx0T3BlcmF0aW9uczogRWxlbWVudE9wZXJhdGlvbnM7XG5cbiAgc3RhdGljIGZvckluaXRpYWxSZW5kZXIoZW52OiBFbnZpcm9ubWVudCwgcGFyZW50Tm9kZTogU2ltcGxlLkVsZW1lbnQsIG5leHRTaWJsaW5nOiBPcHRpb248U2ltcGxlLk5vZGU+KSB7XG4gICAgcmV0dXJuIG5ldyBFbGVtZW50U3RhY2soZW52LCBwYXJlbnROb2RlLCBuZXh0U2libGluZyk7XG4gIH1cblxuICBzdGF0aWMgcmVzdW1lKGVudjogRW52aXJvbm1lbnQsIHRyYWNrZXI6IFRyYWNrZXIsIG5leHRTaWJsaW5nOiBPcHRpb248U2ltcGxlLk5vZGU+KSB7XG4gICAgbGV0IHBhcmVudE5vZGUgPSB0cmFja2VyLnBhcmVudEVsZW1lbnQoKTtcblxuICAgIGxldCBzdGFjayA9IG5ldyBFbGVtZW50U3RhY2soZW52LCBwYXJlbnROb2RlLCBuZXh0U2libGluZyk7XG4gICAgc3RhY2sucHVzaEJsb2NrVHJhY2tlcih0cmFja2VyKTtcblxuICAgIHJldHVybiBzdGFjaztcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGVudjogRW52aXJvbm1lbnQsIHBhcmVudE5vZGU6IFNpbXBsZS5FbGVtZW50LCBuZXh0U2libGluZzogT3B0aW9uPFNpbXBsZS5Ob2RlPikge1xuICAgIHRoaXMuZW52ID0gZW52O1xuICAgIHRoaXMuZG9tID0gZW52LmdldEFwcGVuZE9wZXJhdGlvbnMoKTtcbiAgICB0aGlzLnVwZGF0ZU9wZXJhdGlvbnMgPSBlbnYuZ2V0RE9NKCk7XG4gICAgdGhpcy5lbGVtZW50ID0gcGFyZW50Tm9kZTtcbiAgICB0aGlzLm5leHRTaWJsaW5nID0gbmV4dFNpYmxpbmc7XG5cbiAgICB0aGlzLmRlZmF1bHRPcGVyYXRpb25zID0gbmV3IFNpbXBsZUVsZW1lbnRPcGVyYXRpb25zKGVudik7XG5cbiAgICB0aGlzLnB1c2hTaW1wbGVCbG9jaygpO1xuICAgIHRoaXMuZWxlbWVudFN0YWNrLnB1c2godGhpcy5lbGVtZW50KTtcbiAgICB0aGlzLm5leHRTaWJsaW5nU3RhY2sucHVzaCh0aGlzLm5leHRTaWJsaW5nKTtcbiAgfVxuXG4gIGV4cGVjdENvbnN0cnVjdGluZyhtZXRob2Q6IHN0cmluZyk6IFNpbXBsZS5FbGVtZW50IHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXMuY29uc3RydWN0aW5nLCBgJHttZXRob2R9IHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGlsZSBjb25zdHJ1Y3RpbmcgYW4gZWxlbWVudGApO1xuICB9XG5cbiAgZXhwZWN0T3BlcmF0aW9ucyhtZXRob2Q6IHN0cmluZyk6IEVsZW1lbnRPcGVyYXRpb25zIHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXMub3BlcmF0aW9ucywgYCR7bWV0aG9kfSBzaG91bGQgb25seSBiZSBjYWxsZWQgd2hpbGUgY29uc3RydWN0aW5nIGFuIGVsZW1lbnRgKTtcbiAgfVxuXG4gIGJsb2NrKCk6IFRyYWNrZXIge1xuICAgIHJldHVybiBleHBlY3QodGhpcy5ibG9ja1N0YWNrLmN1cnJlbnQsIFwiRXhwZWN0ZWQgYSBjdXJyZW50IGJsb2NrIHRyYWNrZXJcIik7XG4gIH1cblxuICBwb3BFbGVtZW50KCkge1xuICAgIGxldCB7IGVsZW1lbnRTdGFjaywgbmV4dFNpYmxpbmdTdGFjayB9ICA9IHRoaXM7XG5cbiAgICBsZXQgdG9wRWxlbWVudCA9IGVsZW1lbnRTdGFjay5wb3AoKTtcbiAgICBuZXh0U2libGluZ1N0YWNrLnBvcCgpO1xuICAgIC8vIExPR0dFUi5kZWJ1ZyhgLT4gZWxlbWVudCBzdGFjayAke3RoaXMuZWxlbWVudFN0YWNrLnRvQXJyYXkoKS5tYXAoZSA9PiBlLnRhZ05hbWUpLmpvaW4oJywgJyl9YCk7XG5cbiAgICB0aGlzLmVsZW1lbnQgPSBleHBlY3QoZWxlbWVudFN0YWNrLmN1cnJlbnQsIFwiY2FuJ3QgcG9wIHBhc3QgdGhlIGxhc3QgZWxlbWVudFwiKTtcbiAgICB0aGlzLm5leHRTaWJsaW5nID0gbmV4dFNpYmxpbmdTdGFjay5jdXJyZW50O1xuXG4gICAgcmV0dXJuIHRvcEVsZW1lbnQ7XG4gIH1cblxuICBwdXNoU2ltcGxlQmxvY2soKTogVHJhY2tlciB7XG4gICAgbGV0IHRyYWNrZXIgPSBuZXcgU2ltcGxlQmxvY2tUcmFja2VyKHRoaXMuZWxlbWVudCk7XG4gICAgdGhpcy5wdXNoQmxvY2tUcmFja2VyKHRyYWNrZXIpO1xuICAgIHJldHVybiB0cmFja2VyO1xuICB9XG5cbiAgcHVzaFVwZGF0YWJsZUJsb2NrKCk6IFVwZGF0YWJsZVRyYWNrZXIge1xuICAgIGxldCB0cmFja2VyID0gbmV3IFVwZGF0YWJsZUJsb2NrVHJhY2tlcih0aGlzLmVsZW1lbnQpO1xuICAgIHRoaXMucHVzaEJsb2NrVHJhY2tlcih0cmFja2VyKTtcbiAgICByZXR1cm4gdHJhY2tlcjtcbiAgfVxuXG4gIHByaXZhdGUgcHVzaEJsb2NrVHJhY2tlcih0cmFja2VyOiBUcmFja2VyLCBpc1JlbW90ZSA9IGZhbHNlKSB7XG4gICAgbGV0IGN1cnJlbnQgPSB0aGlzLmJsb2NrU3RhY2suY3VycmVudDtcblxuICAgIGlmIChjdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICBjdXJyZW50Lm5ld0Rlc3Ryb3lhYmxlKHRyYWNrZXIpO1xuXG4gICAgICBpZiAoIWlzUmVtb3RlKSB7XG4gICAgICAgIGN1cnJlbnQubmV3Qm91bmRzKHRyYWNrZXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuYmxvY2tTdGFjay5wdXNoKHRyYWNrZXIpO1xuICAgIHJldHVybiB0cmFja2VyO1xuICB9XG5cbiAgcHVzaEJsb2NrTGlzdChsaXN0OiBMaW5rZWRMaXN0PExpbmtlZExpc3ROb2RlICYgQm91bmRzICYgRGVzdHJveWFibGU+KTogVHJhY2tlciB7XG4gICAgbGV0IHRyYWNrZXIgPSBuZXcgQmxvY2tMaXN0VHJhY2tlcih0aGlzLmVsZW1lbnQsIGxpc3QpO1xuICAgIGxldCBjdXJyZW50ID0gdGhpcy5ibG9ja1N0YWNrLmN1cnJlbnQ7XG5cbiAgICBpZiAoY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgY3VycmVudC5uZXdEZXN0cm95YWJsZSh0cmFja2VyKTtcbiAgICAgIGN1cnJlbnQubmV3Qm91bmRzKHRyYWNrZXIpO1xuICAgIH1cblxuICAgIHRoaXMuYmxvY2tTdGFjay5wdXNoKHRyYWNrZXIpO1xuICAgIHJldHVybiB0cmFja2VyO1xuICB9XG5cbiAgcG9wQmxvY2soKTogVHJhY2tlciB7XG4gICAgdGhpcy5ibG9jaygpLmZpbmFsaXplKHRoaXMpO1xuXG4gICAgcmV0dXJuIGV4cGVjdCh0aGlzLmJsb2NrU3RhY2sucG9wKCksIFwiRXhwZWN0ZWQgcG9wQmxvY2sgdG8gcmV0dXJuIGEgYmxvY2tcIik7XG4gIH1cblxuICBvcGVuRWxlbWVudCh0YWc6IHN0cmluZywgb3BlcmF0aW9ucyA9IHRoaXMuZGVmYXVsdE9wZXJhdGlvbnMpOiBTaW1wbGUuRWxlbWVudCB7XG4gICAgbGV0IGVsZW1lbnQgPSB0aGlzLmRvbS5jcmVhdGVFbGVtZW50KHRhZywgdGhpcy5lbGVtZW50KTtcblxuICAgIHRoaXMuY29uc3RydWN0aW5nID0gZWxlbWVudDtcbiAgICB0aGlzLm9wZXJhdGlvbnMgPSBvcGVyYXRpb25zO1xuXG4gICAgcmV0dXJuIGVsZW1lbnQ7XG4gIH1cblxuICBmbHVzaEVsZW1lbnQoKSB7XG4gICAgbGV0IHBhcmVudCAgPSB0aGlzLmVsZW1lbnQ7XG4gICAgbGV0IGVsZW1lbnQgPSBleHBlY3QodGhpcy5jb25zdHJ1Y3RpbmcsIGBmbHVzaEVsZW1lbnQgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gY29uc3RydWN0aW5nIGFuIGVsZW1lbnRgKTtcblxuICAgIHRoaXMuZG9tLmluc2VydEJlZm9yZShwYXJlbnQsIGVsZW1lbnQsIHRoaXMubmV4dFNpYmxpbmcpO1xuXG4gICAgdGhpcy5jb25zdHJ1Y3RpbmcgPSBudWxsO1xuICAgIHRoaXMub3BlcmF0aW9ucyA9IG51bGw7XG5cbiAgICB0aGlzLnB1c2hFbGVtZW50KGVsZW1lbnQpO1xuICAgIHRoaXMuYmxvY2soKS5vcGVuRWxlbWVudChlbGVtZW50KTtcbiAgfVxuXG4gIHB1c2hSZW1vdGVFbGVtZW50KGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuZXh0U2libGluZzogT3B0aW9uPFNpbXBsZS5Ob2RlPiA9IG51bGwpIHtcbiAgICB0aGlzLnB1c2hFbGVtZW50KGVsZW1lbnQsIG5leHRTaWJsaW5nKTtcblxuICAgIGxldCB0cmFja2VyID0gbmV3IFJlbW90ZUJsb2NrVHJhY2tlcihlbGVtZW50KTtcbiAgICB0aGlzLnB1c2hCbG9ja1RyYWNrZXIodHJhY2tlciwgdHJ1ZSk7XG4gIH1cblxuICBwb3BSZW1vdGVFbGVtZW50KCkge1xuICAgIHRoaXMucG9wQmxvY2soKTtcbiAgICB0aGlzLnBvcEVsZW1lbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgcHVzaEVsZW1lbnQoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5leHRTaWJsaW5nOiBPcHRpb248U2ltcGxlLk5vZGU+ID0gbnVsbCkge1xuICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgdGhpcy5lbGVtZW50U3RhY2sucHVzaChlbGVtZW50KTtcbiAgICAvLyBMT0dHRVIuZGVidWcoYC0+IGVsZW1lbnQgc3RhY2sgJHt0aGlzLmVsZW1lbnRTdGFjay50b0FycmF5KCkubWFwKGUgPT4gZS50YWdOYW1lKS5qb2luKCcsICcpfWApO1xuXG4gICAgdGhpcy5uZXh0U2libGluZyA9IG5leHRTaWJsaW5nO1xuICAgIHRoaXMubmV4dFNpYmxpbmdTdGFjay5wdXNoKG5leHRTaWJsaW5nKTtcbiAgfVxuXG4gIG5ld0Rlc3Ryb3lhYmxlKGQ6IERlc3Ryb3lhYmxlKSB7XG4gICAgdGhpcy5ibG9jaygpLm5ld0Rlc3Ryb3lhYmxlKGQpO1xuICB9XG5cbiAgbmV3Qm91bmRzKGJvdW5kczogQm91bmRzKSB7XG4gICAgdGhpcy5ibG9jaygpLm5ld0JvdW5kcyhib3VuZHMpO1xuICB9XG5cbiAgYXBwZW5kVGV4dChzdHJpbmc6IHN0cmluZyk6IFNpbXBsZS5UZXh0IHtcbiAgICBsZXQgeyBkb20gfSA9IHRoaXM7XG4gICAgbGV0IHRleHQgPSBkb20uY3JlYXRlVGV4dE5vZGUoc3RyaW5nKTtcbiAgICBkb20uaW5zZXJ0QmVmb3JlKHRoaXMuZWxlbWVudCwgdGV4dCwgdGhpcy5uZXh0U2libGluZyk7XG4gICAgdGhpcy5ibG9jaygpLm5ld05vZGUodGV4dCk7XG4gICAgcmV0dXJuIHRleHQ7XG4gIH1cblxuICBhcHBlbmRDb21tZW50KHN0cmluZzogc3RyaW5nKTogU2ltcGxlLkNvbW1lbnQge1xuICAgIGxldCB7IGRvbSB9ID0gdGhpcztcbiAgICBsZXQgY29tbWVudCA9IGRvbS5jcmVhdGVDb21tZW50KHN0cmluZyk7XG4gICAgZG9tLmluc2VydEJlZm9yZSh0aGlzLmVsZW1lbnQsIGNvbW1lbnQsIHRoaXMubmV4dFNpYmxpbmcpO1xuICAgIHRoaXMuYmxvY2soKS5uZXdOb2RlKGNvbW1lbnQpO1xuICAgIHJldHVybiBjb21tZW50O1xuICB9XG5cbiAgc2V0U3RhdGljQXR0cmlidXRlKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuZXhwZWN0T3BlcmF0aW9ucygnc2V0U3RhdGljQXR0cmlidXRlJykuYWRkU3RhdGljQXR0cmlidXRlKHRoaXMuZXhwZWN0Q29uc3RydWN0aW5nKCdzZXRTdGF0aWNBdHRyaWJ1dGUnKSwgbmFtZSwgdmFsdWUpO1xuICB9XG5cbiAgc2V0U3RhdGljQXR0cmlidXRlTlMobmFtZXNwYWNlOiBzdHJpbmcsIG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuZXhwZWN0T3BlcmF0aW9ucygnc2V0U3RhdGljQXR0cmlidXRlTlMnKS5hZGRTdGF0aWNBdHRyaWJ1dGVOUyh0aGlzLmV4cGVjdENvbnN0cnVjdGluZygnc2V0U3RhdGljQXR0cmlidXRlTlMnKSwgbmFtZXNwYWNlLCBuYW1lLCB2YWx1ZSk7XG4gIH1cblxuICBzZXREeW5hbWljQXR0cmlidXRlKG5hbWU6IHN0cmluZywgcmVmZXJlbmNlOiBWZXJzaW9uZWRSZWZlcmVuY2U8c3RyaW5nPiwgaXNUcnVzdGluZzogYm9vbGVhbikge1xuICAgIHRoaXMuZXhwZWN0T3BlcmF0aW9ucygnc2V0RHluYW1pY0F0dHJpYnV0ZScpLmFkZER5bmFtaWNBdHRyaWJ1dGUodGhpcy5leHBlY3RDb25zdHJ1Y3RpbmcoJ3NldER5bmFtaWNBdHRyaWJ1dGUnKSwgbmFtZSwgcmVmZXJlbmNlLCBpc1RydXN0aW5nKTtcbiAgfVxuXG4gIHNldER5bmFtaWNBdHRyaWJ1dGVOUyhuYW1lc3BhY2U6IHN0cmluZywgbmFtZTogc3RyaW5nLCByZWZlcmVuY2U6IFZlcnNpb25lZFJlZmVyZW5jZTxzdHJpbmc+LCBpc1RydXN0aW5nOiBib29sZWFuKSB7XG4gICAgdGhpcy5leHBlY3RPcGVyYXRpb25zKCdzZXREeW5hbWljQXR0cmlidXRlTlMnKS5hZGREeW5hbWljQXR0cmlidXRlTlModGhpcy5leHBlY3RDb25zdHJ1Y3RpbmcoJ3NldER5bmFtaWNBdHRyaWJ1dGVOUycpLCBuYW1lc3BhY2UsIG5hbWUsIHJlZmVyZW5jZSwgaXNUcnVzdGluZyk7XG4gIH1cblxuICBjbG9zZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5ibG9jaygpLmNsb3NlRWxlbWVudCgpO1xuICAgIHRoaXMucG9wRWxlbWVudCgpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhY2tlciBleHRlbmRzIERlc3Ryb3lhYmxlQm91bmRzIHtcbiAgb3BlbkVsZW1lbnQoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQpOiB2b2lkO1xuICBjbG9zZUVsZW1lbnQoKTogdm9pZDtcbiAgbmV3Tm9kZShub2RlOiBTaW1wbGUuTm9kZSk6IHZvaWQ7XG4gIG5ld0JvdW5kcyhib3VuZHM6IEJvdW5kcyk6IHZvaWQ7XG4gIG5ld0Rlc3Ryb3lhYmxlKGQ6IERlc3Ryb3lhYmxlKTogdm9pZDtcbiAgZmluYWxpemUoc3RhY2s6IEVsZW1lbnRTdGFjayk6IHZvaWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBTaW1wbGVCbG9ja1RyYWNrZXIgaW1wbGVtZW50cyBUcmFja2VyIHtcbiAgcHJvdGVjdGVkIGZpcnN0OiBPcHRpb248Rmlyc3ROb2RlPiA9IG51bGw7XG4gIHByb3RlY3RlZCBsYXN0OiBPcHRpb248TGFzdE5vZGU+ID0gbnVsbDtcbiAgcHJvdGVjdGVkIGRlc3Ryb3lhYmxlczogT3B0aW9uPERlc3Ryb3lhYmxlW10+ID0gbnVsbDtcbiAgcHJvdGVjdGVkIG5lc3RpbmcgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGFyZW50OiBTaW1wbGUuRWxlbWVudCl7fVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgbGV0IHsgZGVzdHJveWFibGVzIH0gPSB0aGlzO1xuXG4gICAgaWYgKGRlc3Ryb3lhYmxlcyAmJiBkZXN0cm95YWJsZXMubGVuZ3RoKSB7XG4gICAgICBmb3IgKGxldCBpPTA7IGk8ZGVzdHJveWFibGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGRlc3Ryb3lhYmxlc1tpXS5kZXN0cm95KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcGFyZW50RWxlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQ7XG4gIH1cblxuICBmaXJzdE5vZGUoKTogT3B0aW9uPFNpbXBsZS5Ob2RlPiB7XG4gICAgcmV0dXJuIHRoaXMuZmlyc3QgJiYgdGhpcy5maXJzdC5maXJzdE5vZGUoKTtcbiAgfVxuXG4gIGxhc3ROb2RlKCk6IE9wdGlvbjxTaW1wbGUuTm9kZT4ge1xuICAgIHJldHVybiB0aGlzLmxhc3QgJiYgdGhpcy5sYXN0Lmxhc3ROb2RlKCk7XG4gIH1cblxuICBvcGVuRWxlbWVudChlbGVtZW50OiBFbGVtZW50KSB7XG4gICAgdGhpcy5uZXdOb2RlKGVsZW1lbnQpO1xuICAgIHRoaXMubmVzdGluZysrO1xuICB9XG5cbiAgY2xvc2VFbGVtZW50KCkge1xuICAgIHRoaXMubmVzdGluZy0tO1xuICB9XG5cbiAgbmV3Tm9kZShub2RlOiBOb2RlKSB7XG4gICAgaWYgKHRoaXMubmVzdGluZyAhPT0gMCkgcmV0dXJuO1xuXG4gICAgaWYgKCF0aGlzLmZpcnN0KSB7XG4gICAgICB0aGlzLmZpcnN0ID0gbmV3IEZpcnN0KG5vZGUpO1xuICAgIH1cblxuICAgIHRoaXMubGFzdCA9IG5ldyBMYXN0KG5vZGUpO1xuICB9XG5cbiAgbmV3Qm91bmRzKGJvdW5kczogQm91bmRzKSB7XG4gICAgaWYgKHRoaXMubmVzdGluZyAhPT0gMCkgcmV0dXJuO1xuXG4gICAgaWYgKCF0aGlzLmZpcnN0KSB7XG4gICAgICB0aGlzLmZpcnN0ID0gYm91bmRzO1xuICAgIH1cblxuICAgIHRoaXMubGFzdCA9IGJvdW5kcztcbiAgfVxuXG4gIG5ld0Rlc3Ryb3lhYmxlKGQ6IERlc3Ryb3lhYmxlKSB7XG4gICAgdGhpcy5kZXN0cm95YWJsZXMgPSB0aGlzLmRlc3Ryb3lhYmxlcyB8fCBbXTtcbiAgICB0aGlzLmRlc3Ryb3lhYmxlcy5wdXNoKGQpO1xuICB9XG5cbiAgZmluYWxpemUoc3RhY2s6IEVsZW1lbnRTdGFjaykge1xuICAgIGlmICghdGhpcy5maXJzdCkge1xuICAgICAgc3RhY2suYXBwZW5kQ29tbWVudCgnJyk7XG4gICAgfVxuICB9XG59XG5cbmNsYXNzIFJlbW90ZUJsb2NrVHJhY2tlciBleHRlbmRzIFNpbXBsZUJsb2NrVHJhY2tlciB7XG4gIGRlc3Ryb3koKSB7XG4gICAgc3VwZXIuZGVzdHJveSgpO1xuXG4gICAgY2xlYXIodGhpcyk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGFibGVUcmFja2VyIGV4dGVuZHMgVHJhY2tlciB7XG4gIHJlc2V0KGVudjogRW52aXJvbm1lbnQpOiBPcHRpb248U2ltcGxlLk5vZGU+O1xufVxuXG5leHBvcnQgY2xhc3MgVXBkYXRhYmxlQmxvY2tUcmFja2VyIGV4dGVuZHMgU2ltcGxlQmxvY2tUcmFja2VyIGltcGxlbWVudHMgVXBkYXRhYmxlVHJhY2tlciB7XG4gIHJlc2V0KGVudjogRW52aXJvbm1lbnQpOiBPcHRpb248U2ltcGxlLk5vZGU+IHtcbiAgICBsZXQgeyBkZXN0cm95YWJsZXMgfSA9IHRoaXM7XG5cbiAgICBpZiAoZGVzdHJveWFibGVzICYmIGRlc3Ryb3lhYmxlcy5sZW5ndGgpIHtcbiAgICAgIGZvciAobGV0IGk9MDsgaTxkZXN0cm95YWJsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgZW52LmRpZERlc3Ryb3koZGVzdHJveWFibGVzW2ldKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgbmV4dFNpYmxpbmcgPSBjbGVhcih0aGlzKTtcblxuICAgIHRoaXMuZmlyc3QgPSBudWxsO1xuICAgIHRoaXMubGFzdCA9IG51bGw7XG4gICAgdGhpcy5kZXN0cm95YWJsZXMgPSBudWxsO1xuICAgIHRoaXMubmVzdGluZyA9IDA7XG5cbiAgICByZXR1cm4gbmV4dFNpYmxpbmc7XG4gIH1cbn1cblxuY2xhc3MgQmxvY2tMaXN0VHJhY2tlciBpbXBsZW1lbnRzIFRyYWNrZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBhcmVudDogU2ltcGxlLkVsZW1lbnQsIHByaXZhdGUgYm91bmRMaXN0OiBMaW5rZWRMaXN0PExpbmtlZExpc3ROb2RlICYgQm91bmRzICYgRGVzdHJveWFibGU+KSB7XG4gICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgdGhpcy5ib3VuZExpc3QgPSBib3VuZExpc3Q7XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIHRoaXMuYm91bmRMaXN0LmZvckVhY2hOb2RlKG5vZGUgPT4gbm9kZS5kZXN0cm95KCkpO1xuICB9XG5cbiAgcGFyZW50RWxlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQ7XG4gIH1cblxuICBmaXJzdE5vZGUoKTogT3B0aW9uPFNpbXBsZS5Ob2RlPiB7XG4gICAgbGV0IGhlYWQgPSB0aGlzLmJvdW5kTGlzdC5oZWFkKCk7XG4gICAgcmV0dXJuIGhlYWQgJiYgaGVhZC5maXJzdE5vZGUoKTtcbiAgfVxuXG4gIGxhc3ROb2RlKCk6IE9wdGlvbjxTaW1wbGUuTm9kZT4ge1xuICAgIGxldCB0YWlsID0gdGhpcy5ib3VuZExpc3QudGFpbCgpO1xuICAgIHJldHVybiB0YWlsICYmIHRhaWwubGFzdE5vZGUoKTtcbiAgfVxuXG4gIG9wZW5FbGVtZW50KF9lbGVtZW50OiBFbGVtZW50KSB7XG4gICAgYXNzZXJ0KGZhbHNlLCAnQ2Fubm90IG9wZW5FbGVtZW50IGRpcmVjdGx5IGluc2lkZSBhIGJsb2NrIGxpc3QnKTtcbiAgfVxuXG4gIGNsb3NlRWxlbWVudCgpIHtcbiAgICBhc3NlcnQoZmFsc2UsICdDYW5ub3QgY2xvc2VFbGVtZW50IGRpcmVjdGx5IGluc2lkZSBhIGJsb2NrIGxpc3QnKTtcbiAgfVxuXG4gIG5ld05vZGUoX25vZGU6IE5vZGUpIHtcbiAgICBhc3NlcnQoZmFsc2UsICdDYW5ub3QgY3JlYXRlIGEgbmV3IG5vZGUgZGlyZWN0bHkgaW5zaWRlIGEgYmxvY2sgbGlzdCcpO1xuICB9XG5cbiAgbmV3Qm91bmRzKF9ib3VuZHM6IEJvdW5kcykge1xuICB9XG5cbiAgbmV3RGVzdHJveWFibGUoX2Q6IERlc3Ryb3lhYmxlKSB7XG4gIH1cblxuICBmaW5hbGl6ZShfc3RhY2s6IEVsZW1lbnRTdGFjaykge1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLEFBQWUsQUFBNkIsQUFBSyxBQUFFLEFBQU0sQUFBVSxBQUFDOztBQUlwRSxBQUFPLEFBQXVCLEFBQUssQUFBK0IsQUFBTSxBQUFlLEFBQUM7O0FBUXhGLEFBQU8sQUFDTCxBQUF1QixBQUN4QixBQUFNLEFBQXdCLEFBQUMsQUFZaEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7d0JBQ0U7bUJBQW9CLEFBQVU7OEJBQVY7O2FBQUksT0FBSixBQUFJLEFBQU0sQUFBSSxBQUFDOzs7b0JBRW5DLEFBQVMsaUNBQ1AsQUFBTTtlQUFDLEFBQUksS0FBQyxBQUFJLEFBQUMsQUFDbkIsQUFBQyxBQUNGLEFBRUQ7Ozs7Ozt1QkFDRTtrQkFBb0IsQUFBVTs4QkFBVjs7YUFBSSxPQUFKLEFBQUksQUFBTSxBQUFJLEFBQUM7OzttQkFFbkMsQUFBUSwrQkFDTixBQUFNO2VBQUMsQUFBSSxLQUFDLEFBQUksQUFBQyxBQUNuQixBQUFDLEFBQ0Y7Ozs7QUFVRCxBQUFNOzs4Q0FHSjtzQkFBWSxBQUFjOzhCQUN4QixBQUFJOzthQUFDLEFBQU0sU0FBRyxBQUFNLEFBQUMsQUFDdkIsQUFBQzs7O3VCQUVELEFBQWEseUNBQ1gsQUFBTTtlQUFDLEFBQUksS0FBQyxBQUFNLE9BQUMsQUFBYSxBQUFFLEFBQUMsQUFDckMsQUFBQzs7O3VCQUVELEFBQVMsaUNBQ1AsQUFBTTtlQUFDLEFBQUksS0FBQyxBQUFNLE9BQUMsQUFBUyxBQUFFLEFBQUMsQUFDakMsQUFBQzs7O3VCQUVELEFBQVEsK0JBQ04sQUFBTTtlQUFDLEFBQUksS0FBQyxBQUFNLE9BQUMsQUFBUSxBQUFFLEFBQUMsQUFDaEMsQUFBQzs7O3VCQUVELEFBQU0seUJBQUMsQUFBYyxRQUNuQixBQUFJO2FBQUMsQUFBTSxTQUFHLEFBQU0sQUFBQyxBQUN2QixBQUFDLEFBQ0Y7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YUFBQyxBQUFTLFlBQUcsQUFBUyxBQUFDLEFBQzdCLEFBQUM7OzsrQkFFRCxBQUFPLDZCQUNMLEFBQUk7YUFBQyxBQUFTLFVBQUMsQUFBVyw0QkFBQyxBQUFJO21CQUFJLEFBQUksS0FBQyxBQUFPLEFBQUUsQUFBQyxBQUFDLEFBQ3JEO0FBQUM7OzsrQkFFRCxBQUFhLHlDQUNYLEFBQU07ZUFBQyxBQUFJLEtBQUMsQUFBTSxBQUFDLEFBQ3JCLEFBQUM7OzsrQkFFRCxBQUFTLGlDQUNQO1lBQUksQUFBSSxPQUFHLEFBQUksS0FBQyxBQUFTLFVBQUMsQUFBSSxBQUFFLEFBQUMsQUFDakMsQUFBTTtlQUFDLEFBQUksUUFBSSxBQUFJLEtBQUMsQUFBUyxBQUFFLEFBQUMsQUFDbEMsQUFBQzs7OytCQUVELEFBQVEsK0JBQ047WUFBSSxBQUFJLE9BQUcsQUFBSSxLQUFDLEFBQVMsVUFBQyxBQUFJLEFBQUUsQUFBQyxBQUNqQyxBQUFNO2VBQUMsQUFBSSxRQUFJLEFBQUksS0FBQyxBQUFRLEFBQUUsQUFBQyxBQUNqQyxBQUFDOzs7K0JBRUQsQUFBVyxtQ0FBQyxBQUFpQixVQUM3QixBQUFDOzsrQkFFRCxBQUFZLHVDQUNaLEFBQUM7OytCQUVELEFBQU8sMkJBQUMsQUFBVyxPQUNuQixBQUFDOzsrQkFFRCxBQUFTLCtCQUFDLEFBQWUsU0FDekIsQUFBQzs7K0JBRUQsQUFBYyx5Q0FBQyxBQUFlLElBQzlCLEFBQUM7OytCQUVELEFBQVEsNkJBQUMsQUFBb0IsUUFDN0IsQUFBQyxBQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJvdW5kcywgeyBDdXJzb3IsIERlc3Ryb3lhYmxlQm91bmRzLCBjbGVhciB9IGZyb20gJy4vYm91bmRzJztcblxuaW1wb3J0IHsgRE9NQ2hhbmdlcywgRE9NVHJlZUNvbnN0cnVjdGlvbiB9IGZyb20gJy4vZG9tL2hlbHBlcic7XG5cbmltcG9ydCB7IE9wdGlvbiwgRGVzdHJveWFibGUsIFN0YWNrLCBMaW5rZWRMaXN0LCBMaW5rZWRMaXN0Tm9kZSwgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuL2Vudmlyb25tZW50JztcblxuaW1wb3J0IHsgVk0gfSBmcm9tICcuL3ZtJztcblxuaW1wb3J0IHsgVmVyc2lvbmVkUmVmZXJlbmNlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcblxuaW1wb3J0IHtcbiAgU2ltcGxlRWxlbWVudE9wZXJhdGlvbnNcbn0gZnJvbSAnLi9jb21waWxlZC9vcGNvZGVzL2RvbSc7XG5cbmltcG9ydCAqIGFzIFNpbXBsZSBmcm9tICcuL2RvbS9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGludGVyZmFjZSBGaXJzdE5vZGUge1xuICBmaXJzdE5vZGUoKTogT3B0aW9uPFNpbXBsZS5Ob2RlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMYXN0Tm9kZSB7XG4gIGxhc3ROb2RlKCk6IE9wdGlvbjxTaW1wbGUuTm9kZT47XG59XG5cbmNsYXNzIEZpcnN0IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBub2RlOiBOb2RlKSB7IH1cblxuICBmaXJzdE5vZGUoKTogTm9kZSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZTtcbiAgfVxufVxuXG5jbGFzcyBMYXN0IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBub2RlOiBOb2RlKSB7IH1cblxuICBsYXN0Tm9kZSgpOiBOb2RlIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRWxlbWVudE9wZXJhdGlvbnMge1xuICBhZGRTdGF0aWNBdHRyaWJ1dGUoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQ7XG4gIGFkZFN0YXRpY0F0dHJpYnV0ZU5TKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lc3BhY2U6IHN0cmluZywgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcbiAgYWRkRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZTogc3RyaW5nLCB2YWx1ZTogVmVyc2lvbmVkUmVmZXJlbmNlPHN0cmluZz4sIGlzVHJ1c3Rpbmc6IGJvb2xlYW4pOiB2b2lkO1xuICBhZGREeW5hbWljQXR0cmlidXRlTlMoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5hbWVzcGFjZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBWZXJzaW9uZWRSZWZlcmVuY2U8c3RyaW5nPiwgaXNUcnVzdGluZzogYm9vbGVhbik6IHZvaWQ7XG4gIGZsdXNoKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCB2bTogVk0pOiB2b2lkO1xufVxuXG5leHBvcnQgY2xhc3MgRnJhZ21lbnQgaW1wbGVtZW50cyBCb3VuZHMge1xuICBwcml2YXRlIGJvdW5kczogQm91bmRzO1xuXG4gIGNvbnN0cnVjdG9yKGJvdW5kczogQm91bmRzKSB7XG4gICAgdGhpcy5ib3VuZHMgPSBib3VuZHM7XG4gIH1cblxuICBwYXJlbnRFbGVtZW50KCk6IFNpbXBsZS5FbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICB9XG5cbiAgZmlyc3ROb2RlKCk6IE9wdGlvbjxTaW1wbGUuTm9kZT4ge1xuICAgIHJldHVybiB0aGlzLmJvdW5kcy5maXJzdE5vZGUoKTtcbiAgfVxuXG4gIGxhc3ROb2RlKCk6IE9wdGlvbjxTaW1wbGUuTm9kZT4ge1xuICAgIHJldHVybiB0aGlzLmJvdW5kcy5sYXN0Tm9kZSgpO1xuICB9XG5cbiAgdXBkYXRlKGJvdW5kczogQm91bmRzKSB7XG4gICAgdGhpcy5ib3VuZHMgPSBib3VuZHM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVsZW1lbnRTdGFjayBpbXBsZW1lbnRzIEN1cnNvciB7XG4gIHB1YmxpYyBuZXh0U2libGluZzogT3B0aW9uPFNpbXBsZS5Ob2RlPjtcbiAgcHVibGljIGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbjtcbiAgcHVibGljIHVwZGF0ZU9wZXJhdGlvbnM6IERPTUNoYW5nZXM7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rpbmc6IE9wdGlvbjxTaW1wbGUuRWxlbWVudD4gPSBudWxsO1xuICBwdWJsaWMgb3BlcmF0aW9uczogT3B0aW9uPEVsZW1lbnRPcGVyYXRpb25zPiA9IG51bGw7XG4gIHB1YmxpYyBlbGVtZW50OiBTaW1wbGUuRWxlbWVudDtcbiAgcHVibGljIGVudjogRW52aXJvbm1lbnQ7XG5cbiAgcHJpdmF0ZSBlbGVtZW50U3RhY2sgPSBuZXcgU3RhY2s8U2ltcGxlLkVsZW1lbnQ+KCk7XG4gIHByaXZhdGUgbmV4dFNpYmxpbmdTdGFjayA9IG5ldyBTdGFjazxPcHRpb248U2ltcGxlLk5vZGU+PigpO1xuICBwcml2YXRlIGJsb2NrU3RhY2sgPSBuZXcgU3RhY2s8VHJhY2tlcj4oKTtcblxuICBwcml2YXRlIGRlZmF1bHRPcGVyYXRpb25zOiBFbGVtZW50T3BlcmF0aW9ucztcblxuICBzdGF0aWMgZm9ySW5pdGlhbFJlbmRlcihlbnY6IEVudmlyb25tZW50LCBwYXJlbnROb2RlOiBTaW1wbGUuRWxlbWVudCwgbmV4dFNpYmxpbmc6IE9wdGlvbjxTaW1wbGUuTm9kZT4pIHtcbiAgICByZXR1cm4gbmV3IEVsZW1lbnRTdGFjayhlbnYsIHBhcmVudE5vZGUsIG5leHRTaWJsaW5nKTtcbiAgfVxuXG4gIHN0YXRpYyByZXN1bWUoZW52OiBFbnZpcm9ubWVudCwgdHJhY2tlcjogVHJhY2tlciwgbmV4dFNpYmxpbmc6IE9wdGlvbjxTaW1wbGUuTm9kZT4pIHtcbiAgICBsZXQgcGFyZW50Tm9kZSA9IHRyYWNrZXIucGFyZW50RWxlbWVudCgpO1xuXG4gICAgbGV0IHN0YWNrID0gbmV3IEVsZW1lbnRTdGFjayhlbnYsIHBhcmVudE5vZGUsIG5leHRTaWJsaW5nKTtcbiAgICBzdGFjay5wdXNoQmxvY2tUcmFja2VyKHRyYWNrZXIpO1xuXG4gICAgcmV0dXJuIHN0YWNrO1xuICB9XG5cbiAgY29uc3RydWN0b3IoZW52OiBFbnZpcm9ubWVudCwgcGFyZW50Tm9kZTogU2ltcGxlLkVsZW1lbnQsIG5leHRTaWJsaW5nOiBPcHRpb248U2ltcGxlLk5vZGU+KSB7XG4gICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgdGhpcy5kb20gPSBlbnYuZ2V0QXBwZW5kT3BlcmF0aW9ucygpO1xuICAgIHRoaXMudXBkYXRlT3BlcmF0aW9ucyA9IGVudi5nZXRET00oKTtcbiAgICB0aGlzLmVsZW1lbnQgPSBwYXJlbnROb2RlO1xuICAgIHRoaXMubmV4dFNpYmxpbmcgPSBuZXh0U2libGluZztcblxuICAgIHRoaXMuZGVmYXVsdE9wZXJhdGlvbnMgPSBuZXcgU2ltcGxlRWxlbWVudE9wZXJhdGlvbnMoZW52KTtcblxuICAgIHRoaXMucHVzaFNpbXBsZUJsb2NrKCk7XG4gICAgdGhpcy5lbGVtZW50U3RhY2sucHVzaCh0aGlzLmVsZW1lbnQpO1xuICAgIHRoaXMubmV4dFNpYmxpbmdTdGFjay5wdXNoKHRoaXMubmV4dFNpYmxpbmcpO1xuICB9XG5cbiAgZXhwZWN0Q29uc3RydWN0aW5nKG1ldGhvZDogc3RyaW5nKTogU2ltcGxlLkVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdGluZztcbiAgfVxuXG4gIGV4cGVjdE9wZXJhdGlvbnMobWV0aG9kOiBzdHJpbmcpOiBFbGVtZW50T3BlcmF0aW9ucyB7XG4gICAgcmV0dXJuIHRoaXMub3BlcmF0aW9ucztcbiAgfVxuXG4gIGJsb2NrKCk6IFRyYWNrZXIge1xuICAgIHJldHVybiB0aGlzLmJsb2NrU3RhY2suY3VycmVudDtcbiAgfVxuXG4gIHBvcEVsZW1lbnQoKSB7XG4gICAgbGV0IHsgZWxlbWVudFN0YWNrLCBuZXh0U2libGluZ1N0YWNrIH0gID0gdGhpcztcblxuICAgIGxldCB0b3BFbGVtZW50ID0gZWxlbWVudFN0YWNrLnBvcCgpO1xuICAgIG5leHRTaWJsaW5nU3RhY2sucG9wKCk7XG4gICAgLy8gTE9HR0VSLmRlYnVnKGAtPiBlbGVtZW50IHN0YWNrICR7dGhpcy5lbGVtZW50U3RhY2sudG9BcnJheSgpLm1hcChlID0+IGUudGFnTmFtZSkuam9pbignLCAnKX1gKTtcblxuICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnRTdGFjay5jdXJyZW50O1xuICAgIHRoaXMubmV4dFNpYmxpbmcgPSBuZXh0U2libGluZ1N0YWNrLmN1cnJlbnQ7XG5cbiAgICByZXR1cm4gdG9wRWxlbWVudDtcbiAgfVxuXG4gIHB1c2hTaW1wbGVCbG9jaygpOiBUcmFja2VyIHtcbiAgICBsZXQgdHJhY2tlciA9IG5ldyBTaW1wbGVCbG9ja1RyYWNrZXIodGhpcy5lbGVtZW50KTtcbiAgICB0aGlzLnB1c2hCbG9ja1RyYWNrZXIodHJhY2tlcik7XG4gICAgcmV0dXJuIHRyYWNrZXI7XG4gIH1cblxuICBwdXNoVXBkYXRhYmxlQmxvY2soKTogVXBkYXRhYmxlVHJhY2tlciB7XG4gICAgbGV0IHRyYWNrZXIgPSBuZXcgVXBkYXRhYmxlQmxvY2tUcmFja2VyKHRoaXMuZWxlbWVudCk7XG4gICAgdGhpcy5wdXNoQmxvY2tUcmFja2VyKHRyYWNrZXIpO1xuICAgIHJldHVybiB0cmFja2VyO1xuICB9XG5cbiAgcHJpdmF0ZSBwdXNoQmxvY2tUcmFja2VyKHRyYWNrZXI6IFRyYWNrZXIsIGlzUmVtb3RlID0gZmFsc2UpIHtcbiAgICBsZXQgY3VycmVudCA9IHRoaXMuYmxvY2tTdGFjay5jdXJyZW50O1xuXG4gICAgaWYgKGN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgIGN1cnJlbnQubmV3RGVzdHJveWFibGUodHJhY2tlcik7XG5cbiAgICAgIGlmICghaXNSZW1vdGUpIHtcbiAgICAgICAgY3VycmVudC5uZXdCb3VuZHModHJhY2tlcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5ibG9ja1N0YWNrLnB1c2godHJhY2tlcik7XG4gICAgcmV0dXJuIHRyYWNrZXI7XG4gIH1cblxuICBwdXNoQmxvY2tMaXN0KGxpc3Q6IExpbmtlZExpc3Q8TGlua2VkTGlzdE5vZGUgJiBCb3VuZHMgJiBEZXN0cm95YWJsZT4pOiBUcmFja2VyIHtcbiAgICBsZXQgdHJhY2tlciA9IG5ldyBCbG9ja0xpc3RUcmFja2VyKHRoaXMuZWxlbWVudCwgbGlzdCk7XG4gICAgbGV0IGN1cnJlbnQgPSB0aGlzLmJsb2NrU3RhY2suY3VycmVudDtcblxuICAgIGlmIChjdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICBjdXJyZW50Lm5ld0Rlc3Ryb3lhYmxlKHRyYWNrZXIpO1xuICAgICAgY3VycmVudC5uZXdCb3VuZHModHJhY2tlcik7XG4gICAgfVxuXG4gICAgdGhpcy5ibG9ja1N0YWNrLnB1c2godHJhY2tlcik7XG4gICAgcmV0dXJuIHRyYWNrZXI7XG4gIH1cblxuICBwb3BCbG9jaygpOiBUcmFja2VyIHtcbiAgICB0aGlzLmJsb2NrKCkuZmluYWxpemUodGhpcyk7XG5cbiAgICByZXR1cm4gdGhpcy5ibG9ja1N0YWNrLnBvcCgpO1xuICB9XG5cbiAgb3BlbkVsZW1lbnQodGFnOiBzdHJpbmcsIG9wZXJhdGlvbnMgPSB0aGlzLmRlZmF1bHRPcGVyYXRpb25zKTogU2ltcGxlLkVsZW1lbnQge1xuICAgIGxldCBlbGVtZW50ID0gdGhpcy5kb20uY3JlYXRlRWxlbWVudCh0YWcsIHRoaXMuZWxlbWVudCk7XG5cbiAgICB0aGlzLmNvbnN0cnVjdGluZyA9IGVsZW1lbnQ7XG4gICAgdGhpcy5vcGVyYXRpb25zID0gb3BlcmF0aW9ucztcblxuICAgIHJldHVybiBlbGVtZW50O1xuICB9XG5cbiAgZmx1c2hFbGVtZW50KCkge1xuICAgIGxldCBwYXJlbnQgID0gdGhpcy5lbGVtZW50O1xuICAgIGxldCBlbGVtZW50ID0gdGhpcy5jb25zdHJ1Y3Rpbmc7XG5cbiAgICB0aGlzLmRvbS5pbnNlcnRCZWZvcmUocGFyZW50LCBlbGVtZW50LCB0aGlzLm5leHRTaWJsaW5nKTtcblxuICAgIHRoaXMuY29uc3RydWN0aW5nID0gbnVsbDtcbiAgICB0aGlzLm9wZXJhdGlvbnMgPSBudWxsO1xuXG4gICAgdGhpcy5wdXNoRWxlbWVudChlbGVtZW50KTtcbiAgICB0aGlzLmJsb2NrKCkub3BlbkVsZW1lbnQoZWxlbWVudCk7XG4gIH1cblxuICBwdXNoUmVtb3RlRWxlbWVudChlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmV4dFNpYmxpbmc6IE9wdGlvbjxTaW1wbGUuTm9kZT4gPSBudWxsKSB7XG4gICAgdGhpcy5wdXNoRWxlbWVudChlbGVtZW50LCBuZXh0U2libGluZyk7XG5cbiAgICBsZXQgdHJhY2tlciA9IG5ldyBSZW1vdGVCbG9ja1RyYWNrZXIoZWxlbWVudCk7XG4gICAgdGhpcy5wdXNoQmxvY2tUcmFja2VyKHRyYWNrZXIsIHRydWUpO1xuICB9XG5cbiAgcG9wUmVtb3RlRWxlbWVudCgpIHtcbiAgICB0aGlzLnBvcEJsb2NrKCk7XG4gICAgdGhpcy5wb3BFbGVtZW50KCk7XG4gIH1cblxuICBwcml2YXRlIHB1c2hFbGVtZW50KGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuZXh0U2libGluZzogT3B0aW9uPFNpbXBsZS5Ob2RlPiA9IG51bGwpIHtcbiAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50O1xuICAgIHRoaXMuZWxlbWVudFN0YWNrLnB1c2goZWxlbWVudCk7XG4gICAgLy8gTE9HR0VSLmRlYnVnKGAtPiBlbGVtZW50IHN0YWNrICR7dGhpcy5lbGVtZW50U3RhY2sudG9BcnJheSgpLm1hcChlID0+IGUudGFnTmFtZSkuam9pbignLCAnKX1gKTtcblxuICAgIHRoaXMubmV4dFNpYmxpbmcgPSBuZXh0U2libGluZztcbiAgICB0aGlzLm5leHRTaWJsaW5nU3RhY2sucHVzaChuZXh0U2libGluZyk7XG4gIH1cblxuICBuZXdEZXN0cm95YWJsZShkOiBEZXN0cm95YWJsZSkge1xuICAgIHRoaXMuYmxvY2soKS5uZXdEZXN0cm95YWJsZShkKTtcbiAgfVxuXG4gIG5ld0JvdW5kcyhib3VuZHM6IEJvdW5kcykge1xuICAgIHRoaXMuYmxvY2soKS5uZXdCb3VuZHMoYm91bmRzKTtcbiAgfVxuXG4gIGFwcGVuZFRleHQoc3RyaW5nOiBzdHJpbmcpOiBTaW1wbGUuVGV4dCB7XG4gICAgbGV0IHsgZG9tIH0gPSB0aGlzO1xuICAgIGxldCB0ZXh0ID0gZG9tLmNyZWF0ZVRleHROb2RlKHN0cmluZyk7XG4gICAgZG9tLmluc2VydEJlZm9yZSh0aGlzLmVsZW1lbnQsIHRleHQsIHRoaXMubmV4dFNpYmxpbmcpO1xuICAgIHRoaXMuYmxvY2soKS5uZXdOb2RlKHRleHQpO1xuICAgIHJldHVybiB0ZXh0O1xuICB9XG5cbiAgYXBwZW5kQ29tbWVudChzdHJpbmc6IHN0cmluZyk6IFNpbXBsZS5Db21tZW50IHtcbiAgICBsZXQgeyBkb20gfSA9IHRoaXM7XG4gICAgbGV0IGNvbW1lbnQgPSBkb20uY3JlYXRlQ29tbWVudChzdHJpbmcpO1xuICAgIGRvbS5pbnNlcnRCZWZvcmUodGhpcy5lbGVtZW50LCBjb21tZW50LCB0aGlzLm5leHRTaWJsaW5nKTtcbiAgICB0aGlzLmJsb2NrKCkubmV3Tm9kZShjb21tZW50KTtcbiAgICByZXR1cm4gY29tbWVudDtcbiAgfVxuXG4gIHNldFN0YXRpY0F0dHJpYnV0ZShuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmV4cGVjdE9wZXJhdGlvbnMoJ3NldFN0YXRpY0F0dHJpYnV0ZScpLmFkZFN0YXRpY0F0dHJpYnV0ZSh0aGlzLmV4cGVjdENvbnN0cnVjdGluZygnc2V0U3RhdGljQXR0cmlidXRlJyksIG5hbWUsIHZhbHVlKTtcbiAgfVxuXG4gIHNldFN0YXRpY0F0dHJpYnV0ZU5TKG5hbWVzcGFjZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmV4cGVjdE9wZXJhdGlvbnMoJ3NldFN0YXRpY0F0dHJpYnV0ZU5TJykuYWRkU3RhdGljQXR0cmlidXRlTlModGhpcy5leHBlY3RDb25zdHJ1Y3RpbmcoJ3NldFN0YXRpY0F0dHJpYnV0ZU5TJyksIG5hbWVzcGFjZSwgbmFtZSwgdmFsdWUpO1xuICB9XG5cbiAgc2V0RHluYW1pY0F0dHJpYnV0ZShuYW1lOiBzdHJpbmcsIHJlZmVyZW5jZTogVmVyc2lvbmVkUmVmZXJlbmNlPHN0cmluZz4sIGlzVHJ1c3Rpbmc6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmV4cGVjdE9wZXJhdGlvbnMoJ3NldER5bmFtaWNBdHRyaWJ1dGUnKS5hZGREeW5hbWljQXR0cmlidXRlKHRoaXMuZXhwZWN0Q29uc3RydWN0aW5nKCdzZXREeW5hbWljQXR0cmlidXRlJyksIG5hbWUsIHJlZmVyZW5jZSwgaXNUcnVzdGluZyk7XG4gIH1cblxuICBzZXREeW5hbWljQXR0cmlidXRlTlMobmFtZXNwYWNlOiBzdHJpbmcsIG5hbWU6IHN0cmluZywgcmVmZXJlbmNlOiBWZXJzaW9uZWRSZWZlcmVuY2U8c3RyaW5nPiwgaXNUcnVzdGluZzogYm9vbGVhbikge1xuICAgIHRoaXMuZXhwZWN0T3BlcmF0aW9ucygnc2V0RHluYW1pY0F0dHJpYnV0ZU5TJykuYWRkRHluYW1pY0F0dHJpYnV0ZU5TKHRoaXMuZXhwZWN0Q29uc3RydWN0aW5nKCdzZXREeW5hbWljQXR0cmlidXRlTlMnKSwgbmFtZXNwYWNlLCBuYW1lLCByZWZlcmVuY2UsIGlzVHJ1c3RpbmcpO1xuICB9XG5cbiAgY2xvc2VFbGVtZW50KCkge1xuICAgIHRoaXMuYmxvY2soKS5jbG9zZUVsZW1lbnQoKTtcbiAgICB0aGlzLnBvcEVsZW1lbnQoKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYWNrZXIgZXh0ZW5kcyBEZXN0cm95YWJsZUJvdW5kcyB7XG4gIG9wZW5FbGVtZW50KGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50KTogdm9pZDtcbiAgY2xvc2VFbGVtZW50KCk6IHZvaWQ7XG4gIG5ld05vZGUobm9kZTogU2ltcGxlLk5vZGUpOiB2b2lkO1xuICBuZXdCb3VuZHMoYm91bmRzOiBCb3VuZHMpOiB2b2lkO1xuICBuZXdEZXN0cm95YWJsZShkOiBEZXN0cm95YWJsZSk6IHZvaWQ7XG4gIGZpbmFsaXplKHN0YWNrOiBFbGVtZW50U3RhY2spOiB2b2lkO1xufVxuXG5leHBvcnQgY2xhc3MgU2ltcGxlQmxvY2tUcmFja2VyIGltcGxlbWVudHMgVHJhY2tlciB7XG4gIHByb3RlY3RlZCBmaXJzdDogT3B0aW9uPEZpcnN0Tm9kZT4gPSBudWxsO1xuICBwcm90ZWN0ZWQgbGFzdDogT3B0aW9uPExhc3ROb2RlPiA9IG51bGw7XG4gIHByb3RlY3RlZCBkZXN0cm95YWJsZXM6IE9wdGlvbjxEZXN0cm95YWJsZVtdPiA9IG51bGw7XG4gIHByb3RlY3RlZCBuZXN0aW5nID0gMDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBhcmVudDogU2ltcGxlLkVsZW1lbnQpe31cblxuICBkZXN0cm95KCkge1xuICAgIGxldCB7IGRlc3Ryb3lhYmxlcyB9ID0gdGhpcztcblxuICAgIGlmIChkZXN0cm95YWJsZXMgJiYgZGVzdHJveWFibGVzLmxlbmd0aCkge1xuICAgICAgZm9yIChsZXQgaT0wOyBpPGRlc3Ryb3lhYmxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBkZXN0cm95YWJsZXNbaV0uZGVzdHJveSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHBhcmVudEVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50O1xuICB9XG5cbiAgZmlyc3ROb2RlKCk6IE9wdGlvbjxTaW1wbGUuTm9kZT4ge1xuICAgIHJldHVybiB0aGlzLmZpcnN0ICYmIHRoaXMuZmlyc3QuZmlyc3ROb2RlKCk7XG4gIH1cblxuICBsYXN0Tm9kZSgpOiBPcHRpb248U2ltcGxlLk5vZGU+IHtcbiAgICByZXR1cm4gdGhpcy5sYXN0ICYmIHRoaXMubGFzdC5sYXN0Tm9kZSgpO1xuICB9XG5cbiAgb3BlbkVsZW1lbnQoZWxlbWVudDogRWxlbWVudCkge1xuICAgIHRoaXMubmV3Tm9kZShlbGVtZW50KTtcbiAgICB0aGlzLm5lc3RpbmcrKztcbiAgfVxuXG4gIGNsb3NlRWxlbWVudCgpIHtcbiAgICB0aGlzLm5lc3RpbmctLTtcbiAgfVxuXG4gIG5ld05vZGUobm9kZTogTm9kZSkge1xuICAgIGlmICh0aGlzLm5lc3RpbmcgIT09IDApIHJldHVybjtcblxuICAgIGlmICghdGhpcy5maXJzdCkge1xuICAgICAgdGhpcy5maXJzdCA9IG5ldyBGaXJzdChub2RlKTtcbiAgICB9XG5cbiAgICB0aGlzLmxhc3QgPSBuZXcgTGFzdChub2RlKTtcbiAgfVxuXG4gIG5ld0JvdW5kcyhib3VuZHM6IEJvdW5kcykge1xuICAgIGlmICh0aGlzLm5lc3RpbmcgIT09IDApIHJldHVybjtcblxuICAgIGlmICghdGhpcy5maXJzdCkge1xuICAgICAgdGhpcy5maXJzdCA9IGJvdW5kcztcbiAgICB9XG5cbiAgICB0aGlzLmxhc3QgPSBib3VuZHM7XG4gIH1cblxuICBuZXdEZXN0cm95YWJsZShkOiBEZXN0cm95YWJsZSkge1xuICAgIHRoaXMuZGVzdHJveWFibGVzID0gdGhpcy5kZXN0cm95YWJsZXMgfHwgW107XG4gICAgdGhpcy5kZXN0cm95YWJsZXMucHVzaChkKTtcbiAgfVxuXG4gIGZpbmFsaXplKHN0YWNrOiBFbGVtZW50U3RhY2spIHtcbiAgICBpZiAoIXRoaXMuZmlyc3QpIHtcbiAgICAgIHN0YWNrLmFwcGVuZENvbW1lbnQoJycpO1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBSZW1vdGVCbG9ja1RyYWNrZXIgZXh0ZW5kcyBTaW1wbGVCbG9ja1RyYWNrZXIge1xuICBkZXN0cm95KCkge1xuICAgIHN1cGVyLmRlc3Ryb3koKTtcblxuICAgIGNsZWFyKHRoaXMpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRhYmxlVHJhY2tlciBleHRlbmRzIFRyYWNrZXIge1xuICByZXNldChlbnY6IEVudmlyb25tZW50KTogT3B0aW9uPFNpbXBsZS5Ob2RlPjtcbn1cblxuZXhwb3J0IGNsYXNzIFVwZGF0YWJsZUJsb2NrVHJhY2tlciBleHRlbmRzIFNpbXBsZUJsb2NrVHJhY2tlciBpbXBsZW1lbnRzIFVwZGF0YWJsZVRyYWNrZXIge1xuICByZXNldChlbnY6IEVudmlyb25tZW50KTogT3B0aW9uPFNpbXBsZS5Ob2RlPiB7XG4gICAgbGV0IHsgZGVzdHJveWFibGVzIH0gPSB0aGlzO1xuXG4gICAgaWYgKGRlc3Ryb3lhYmxlcyAmJiBkZXN0cm95YWJsZXMubGVuZ3RoKSB7XG4gICAgICBmb3IgKGxldCBpPTA7IGk8ZGVzdHJveWFibGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGVudi5kaWREZXN0cm95KGRlc3Ryb3lhYmxlc1tpXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IG5leHRTaWJsaW5nID0gY2xlYXIodGhpcyk7XG5cbiAgICB0aGlzLmZpcnN0ID0gbnVsbDtcbiAgICB0aGlzLmxhc3QgPSBudWxsO1xuICAgIHRoaXMuZGVzdHJveWFibGVzID0gbnVsbDtcbiAgICB0aGlzLm5lc3RpbmcgPSAwO1xuXG4gICAgcmV0dXJuIG5leHRTaWJsaW5nO1xuICB9XG59XG5cbmNsYXNzIEJsb2NrTGlzdFRyYWNrZXIgaW1wbGVtZW50cyBUcmFja2VyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwYXJlbnQ6IFNpbXBsZS5FbGVtZW50LCBwcml2YXRlIGJvdW5kTGlzdDogTGlua2VkTGlzdDxMaW5rZWRMaXN0Tm9kZSAmIEJvdW5kcyAmIERlc3Ryb3lhYmxlPikge1xuICAgIHRoaXMucGFyZW50ID0gcGFyZW50O1xuICAgIHRoaXMuYm91bmRMaXN0ID0gYm91bmRMaXN0O1xuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLmJvdW5kTGlzdC5mb3JFYWNoTm9kZShub2RlID0+IG5vZGUuZGVzdHJveSgpKTtcbiAgfVxuXG4gIHBhcmVudEVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50O1xuICB9XG5cbiAgZmlyc3ROb2RlKCk6IE9wdGlvbjxTaW1wbGUuTm9kZT4ge1xuICAgIGxldCBoZWFkID0gdGhpcy5ib3VuZExpc3QuaGVhZCgpO1xuICAgIHJldHVybiBoZWFkICYmIGhlYWQuZmlyc3ROb2RlKCk7XG4gIH1cblxuICBsYXN0Tm9kZSgpOiBPcHRpb248U2ltcGxlLk5vZGU+IHtcbiAgICBsZXQgdGFpbCA9IHRoaXMuYm91bmRMaXN0LnRhaWwoKTtcbiAgICByZXR1cm4gdGFpbCAmJiB0YWlsLmxhc3ROb2RlKCk7XG4gIH1cblxuICBvcGVuRWxlbWVudChfZWxlbWVudDogRWxlbWVudCkge1xuICB9XG5cbiAgY2xvc2VFbGVtZW50KCkge1xuICB9XG5cbiAgbmV3Tm9kZShfbm9kZTogTm9kZSkge1xuICB9XG5cbiAgbmV3Qm91bmRzKF9ib3VuZHM6IEJvdW5kcykge1xuICB9XG5cbiAgbmV3RGVzdHJveWFibGUoX2Q6IERlc3Ryb3lhYmxlKSB7XG4gIH1cblxuICBmaW5hbGl6ZShfc3RhY2s6IEVsZW1lbnRTdGFjaykge1xuICB9XG59XG4iXX0=

@@ -14,4 +14,2 @@ "use strict";

var _util = require("@glimmer/util");
function _defaults(obj, defaults) {

@@ -132,3 +130,3 @@ var keys = Object.getOwnPropertyNames(defaults);for (var i = 0; i < keys.length; i++) {

// FF: Old versions will create a node in the wrong namespace
if (svg.childNodes.length === 1 && (0, _util.unwrap)(svg.firstChild).namespaceURI === SVG_NAMESPACE) {
if (svg.childNodes.length === 1 && svg.firstChild.namespaceURI === SVG_NAMESPACE) {
// The test worked as expected, no fix required

@@ -140,2 +138,2 @@ return false;

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLWlubmVyLWh0bWwtZml4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3ZnLWlubmVyLWh0bWwtZml4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLEFBQU8sQUFBVSxBQUFjLEFBQUUsQUFBTSxBQUFXLEFBQUM7O0FBQ25ELEFBQU8sQUFBRSxBQUFlLEFBQW1DLEFBQU0sQUFBZSxBQUFDOztBQUNqRixBQUFPLEFBQVUsQUFBTSxBQUFFLEFBQU0sQUFBZSxBQUFDLEFBRS9DLEFBQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQyxJQUFNLEFBQWEsd0NBQUcsQUFBNEIsQUFBQztBQUcxRCxBQUEwQztBQUMxQyxBQUE2QztBQUM3QyxBQUErRTtBQUMvRSxBQUE0RTtBQUM1RSxBQUE2RDtBQUM3RCxBQUFzRTtBQUN0RSxBQUE2RTtBQUM3RSxBQUErRTtBQUMvRSxBQUE4RTtBQUM5RSxBQUErRTtBQUMvRSxBQUEyRCxBQUMzRCxBQUFNO29CQUFxQixBQUEwQixVQUFFLEFBQWtDLGlCQUFFLEFBQTJCLGNBQ3BILEFBQUUsQUFBQztRQUFDLENBQUMsQUFBUSxBQUFDLFVBQUMsQUFBTSxPQUFDLEFBQWUsQUFBQyxBQUV0QyxBQUFFLEFBQUM7UUFBQyxDQUFDLEFBQWMsZUFBQyxBQUFRLFVBQUUsQUFBWSxBQUFDLEFBQUMsZUFBQyxBQUFDLEFBQzVDLEFBQU07ZUFBQyxBQUFlLEFBQUMsQUFDekIsQUFBQztBQUVEO1FBQUksQUFBRyxNQUFHLEFBQVEsU0FBQyxBQUFhLGNBQUMsQUFBSyxBQUFDLEFBQUMsQUFFeEMsQUFBTSxBQUFDLEFBQW9DOzs7Ozs7Ozs7O2dEQUN6QyxBQUFnQiw2Q0FBQyxBQUFtQixRQUFFLEFBQWlCLGFBQUUsQUFBWSxNQUNuRSxBQUFFLEFBQUM7Z0JBQUMsQUFBSSxTQUFLLEFBQUksUUFBSSxBQUFJLFNBQUssQUFBRSxBQUFDLElBQUMsQUFBQyxBQUNqQyxBQUFNO3VCQUFDLEFBQUssMkJB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QUFVLEFBQUMsWUFBQyxBQUFZLGlCQUFLLEFBQWEsQUFBQyxlQUFDLEFBQUMsQUFDekYsQUFBK0M7QUFDL0MsQUFBTTttQkFBQyxBQUFLLEFBQUMsQUFDZixBQUFDO0FBRUQsQUFBTTtlQUFDLEFBQUksQUFBQyxBQUNkLEFBQUMsQUFDSDtBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm91bmRzLCBDb25jcmV0ZUJvdW5kcyB9IGZyb20gJy4uL2JvdW5kcyc7XG5pbXBvcnQgeyBtb3ZlTm9kZXNCZWZvcmUsIERPTUNoYW5nZXMsIERPTVRyZWVDb25zdHJ1Y3Rpb24gfSBmcm9tICcuLi9kb20vaGVscGVyJztcbmltcG9ydCB7IE9wdGlvbiwgdW53cmFwIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5cbmV4cG9ydCBjb25zdCBTVkdfTkFNRVNQQUNFID0gJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJztcbmV4cG9ydCB0eXBlIFNWR19OQU1FU1BBQ0UgPSB0eXBlb2YgU1ZHX05BTUVTUEFDRTtcblxuLy8gUGF0Y2g6ICAgIGluc2VydEFkamFjZW50SFRNTCBvbiBTVkcgRml4XG4vLyBCcm93c2VyczogU2FmYXJpLCBJRSwgRWRnZSwgRmlyZWZveCB+MzMtMzRcbi8vIFJlYXNvbjogICBpbnNlcnRBZGphY2VudEhUTUwgZG9lcyBub3QgZXhpc3Qgb24gU1ZHIGVsZW1lbnRzIGluIFNhZmFyaS4gSXQgaXNcbi8vICAgICAgICAgICBwcmVzZW50IGJ1dCB0aHJvd3MgYW4gZXhjZXB0aW9uIG9uIElFIGFuZCBFZGdlLiBPbGQgdmVyc2lvbnMgb2Zcbi8vICAgICAgICAgICBGaXJlZm94IGNyZWF0ZSBub2RlcyBpbiB0aGUgaW5jb3JyZWN0IG5hbWVzcGFjZS5cbi8vIEZpeDogICAgICBTaW5jZSBJRSBhbmQgRWRnZSBzaWxlbnRseSBmYWlsIHRvIGNyZWF0ZSBTVkcgbm9kZXMgdXNpbmdcbi8vICAgICAgICAgICBpbm5lckhUTUwsIGFuZCBiZWNhdXNlIEZpcmVmb3ggbWF5IGNyZWF0ZSBub2RlcyBpbiB0aGUgaW5jb3JyZWN0XG4vLyAgICAgICAgICAgbmFtZXNwYWNlIHVzaW5nIGlubmVySFRNTCBvbiBTVkcgZWxlbWVudHMsIGFuIEhUTUwtc3RyaW5nIHdyYXBwaW5nXG4vLyAgICAgICAgICAgYXBwcm9hY2ggaXMgdXNlZC4gQSBwcmUvcG9zdCBTVkcgdGFnIGlzIGFkZGVkIHRvIHRoZSBzdHJpbmcsIHRoZW5cbi8vICAgICAgICAgICB0aGF0IHdob2xlIHN0cmluZyBpcyBhZGRlZCB0byBhIGRpdi4gVGhlIGNyZWF0ZWQgbm9kZXMgYXJlIHBsdWNrZWRcbi8vICAgICAgICAgICBvdXQgYW5kIGFwcGxpZWQgdG8gdGhlIHRhcmdldCBsb2NhdGlvbiBvbiBET00uXG5leHBvcnQgZnVuY3Rpb24gZG9tQ2hhbmdlcyhkb2N1bWVudDogT3B0aW9uPERvY3VtZW50PiwgRE9NQ2hhbmdlc0NsYXNzOiB0eXBlb2YgRE9NQ2hhbmdlcywgc3ZnTmFtZXNwYWNlOiBTVkdfTkFNRVNQQUNFKTogdHlwZW9mIERPTUNoYW5nZXMge1xuICBpZiAoIWRvY3VtZW50KSByZXR1cm4gRE9NQ2hhbmdlc0NsYXNzO1xuXG4gIGlmICghc2hvdWxkQXBwbHlGaXgoZG9jdW1lbnQsIHN2Z05hbWVzcGFjZSkpIHtcbiAgICByZXR1cm4gRE9NQ2hhbmdlc0NsYXNzO1xuICB9XG5cbiAgbGV0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gIHJldHVybiBjbGFzcyBET01DaGFuZ2VzV2l0aFNWR0lubmVySFRNTEZpeCBleHRlbmRzIERPTUNoYW5nZXNDbGFzcyB7XG4gICAgaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQ6IEhUTUxFbGVtZW50LCBuZXh0U2libGluZzogTm9kZSwgaHRtbDogc3RyaW5nKTogQm91bmRzIHtcbiAgICAgIGlmIChodG1sID09PSBudWxsIHx8IGh0bWwgPT09ICcnKSB7XG4gICAgICAgIHJldHVybiBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgbmV4dFNpYmxpbmcsIGh0bWwpO1xuICAgICAgfVxuXG4gICAgICBpZiAocGFyZW50Lm5hbWVzcGFjZVVSSSAhPT0gc3ZnTmFtZXNwYWNlKSB7XG4gICAgICAgIHJldHVybiBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgbmV4dFNpYmxpbmcsIGh0bWwpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZml4U1ZHKHBhcmVudCwgZGl2LCBodG1sLCBuZXh0U2libGluZyk7XG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJlZUNvbnN0cnVjdGlvbihkb2N1bWVudDogT3B0aW9uPERvY3VtZW50PiwgVHJlZUNvbnN0cnVjdGlvbkNsYXNzOiB0eXBlb2YgRE9NVHJlZUNvbnN0cnVjdGlvbiwgc3ZnTmFtZXNwYWNlOiBTVkdfTkFNRVNQQUNFKTogdHlwZW9mIERPTVRyZWVDb25zdHJ1Y3Rpb24ge1xuICBpZiAoIWRvY3VtZW50KSByZXR1cm4gVHJlZUNvbnN0cnVjdGlvbkNsYXNzO1xuXG4gIGlmICghc2hvdWxkQXBwbHlGaXgoZG9jdW1lbnQsIHN2Z05hbWVzcGFjZSkpIHtcbiAgICByZXR1cm4gVHJlZUNvbnN0cnVjdGlvbkNsYXNzO1xuICB9XG5cbiAgbGV0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gIHJldHVybiBjbGFzcyBUcmVlQ29uc3RydWN0aW9uV2l0aFNWR0lubmVySFRNTEZpeCBleHRlbmRzIFRyZWVDb25zdHJ1Y3Rpb25DbGFzcyB7XG4gICAgaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQ6IEhUTUxFbGVtZW50LCBodG1sOiBzdHJpbmcsICByZWZlcmVuY2U6IE5vZGUsKTogQm91bmRzIHtcbiAgICAgIGlmIChodG1sID09PSBudWxsIHx8IGh0bWwgPT09ICcnKSB7XG4gICAgICAgIHJldHVybiBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgaHRtbCwgcmVmZXJlbmNlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHBhcmVudC5uYW1lc3BhY2VVUkkgIT09IHN2Z05hbWVzcGFjZSkge1xuICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIGh0bWwsIHJlZmVyZW5jZSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmaXhTVkcocGFyZW50LCBkaXYsIGh0bWwsIHJlZmVyZW5jZSk7XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBmaXhTVkcocGFyZW50OiBFbGVtZW50LCBkaXY6IEhUTUxFbGVtZW50LCBodG1sOiBzdHJpbmcsIHJlZmVyZW5jZTogTm9kZSk6IEJvdW5kcyB7XG4gIC8vIElFLCBFZGdlOiBhbHNvIGRvIG5vdCBjb3JyZWN0bHkgc3VwcG9ydCB1c2luZyBgaW5uZXJIVE1MYCBvbiBTVkdcbiAgLy8gbmFtZXNwYWNlZCBlbGVtZW50cy4gU28gaGVyZSBhIHdyYXBwZXIgaXMgdXNlZC5cbiAgbGV0IHdyYXBwZWRIdG1sID0gJzxzdmc+JyArIGh0bWwgKyAnPC9zdmc+JztcblxuICBkaXYuaW5uZXJIVE1MID0gd3JhcHBlZEh0bWw7XG5cbiAgbGV0IFtmaXJzdCwgbGFzdF0gPSBtb3ZlTm9kZXNCZWZvcmUoZGl2LmZpcnN0Q2hpbGQgYXMgTm9kZSwgcGFyZW50LCByZWZlcmVuY2UpO1xuICByZXR1cm4gbmV3IENvbmNyZXRlQm91bmRzKHBhcmVudCwgZmlyc3QsIGxhc3QpO1xufVxuXG5mdW5jdGlvbiBzaG91bGRBcHBseUZpeChkb2N1bWVudDogRG9jdW1lbnQsIHN2Z05hbWVzcGFjZTogU1ZHX05BTUVTUEFDRSkge1xuICBsZXQgc3ZnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHN2Z05hbWVzcGFjZSwgJ3N2ZycpO1xuXG4gIHRyeSB7XG4gICAgc3ZnWydpbnNlcnRBZGphY2VudEhUTUwnXSgnYmVmb3JlRW5kJywgJzxjaXJjbGU+PC9jaXJjbGU+Jyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyBJRSwgRWRnZTogV2lsbCB0aHJvdywgaW5zZXJ0QWRqYWNlbnRIVE1MIGlzIHVuc3VwcG9ydGVkIG9uIFNWR1xuICAgIC8vIFNhZmFyaTogV2lsbCB0aHJvdywgaW5zZXJ0QWRqYWNlbnRIVE1MIGlzIG5vdCBwcmVzZW50IG9uIFNWR1xuICB9IGZpbmFsbHkge1xuICAgIC8vIEZGOiBPbGQgdmVyc2lvbnMgd2lsbCBjcmVhdGUgYSBub2RlIGluIHRoZSB3cm9uZyBuYW1lc3BhY2VcbiAgICBpZiAoc3ZnLmNoaWxkTm9kZXMubGVuZ3RoID09PSAxICYmIHVud3JhcChzdmcuZmlyc3RDaGlsZCkubmFtZXNwYWNlVVJJID09PSBTVkdfTkFNRVNQQUNFKSB7XG4gICAgICAvLyBUaGUgdGVzdCB3b3JrZWQgYXMgZXhwZWN0ZWQsIG5vIGZpeCByZXF1aXJlZFxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLWlubmVyLWh0bWwtZml4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3ZnLWlubmVyLWh0bWwtZml4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLEFBQU8sQUFBVSxBQUFjLEFBQUUsQUFBTSxBQUFXLEFBQUM7O0FBQ25ELEFBQU8sQUFBRSxBQUFlLEFBQW1DLEFBQU0sQUFBZSxBQUFDLEFBR2pGLEFBQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQyxJQUFNLEFBQWEsd0NBQUcsQUFBNEIsQUFBQztBQUcxRCxBQUEwQztBQUMxQyxBQUE2QztBQUM3QyxBQUErRTtBQUMvRSxBQUE0RTtBQUM1RSxBQUE2RDtBQUM3RCxBQUFzRTtBQUN0RSxBQUE2RTtBQUM3RSxBQUErRTtBQUMvRSxBQUE4RTtBQUM5RSxBQUErRTtBQUMvRSxBQUEyRCxBQUMzRCxBQUFNO29CQUFxQixBQUEwQixVQUFFLEFBQWtDLGlCQUFFLEFBQTJCLGNBQ3BILEFBQUUsQUFBQztRQUFDLENBQUMsQUFBUSxBQUFDLFVBQUMsQUFBTSxPQUFDLEFBQWUsQUFBQyxBQUV0QyxBQUFFLEFBQUM7UUFBQyxDQUFDLEFBQWMsZUFBQyxBQUFRLFVBQUUsQUFBWSxBQUFDLEFBQUMsZUFBQyxBQUFDLEFBQzVDLEFBQU07ZUFBQyxBQUFlLEFBQUMsQUFDekIsQUFBQztBQUVEO1FBQUksQUFBRyxNQUFHLEFBQVEsU0FBQyxBQUFhLGNBQUMsQUFBSyxBQUFDLEFBQUMsQUFFeEMsQUFBTSxBQUFDLEFBQW9DOzs7Ozs7Ozs7O2dEQUN6QyxBQUFnQiw2Q0FBQyxBQUFtQixRQUFFLEFBQWlCLGFBQUUsQUFBWSxNQUNuRSxBQUFFLEFBQUM7Z0JBQUMsQUFBSSxTQUFLLEFBQUksUUFBSSxBQUFJLFNBQUssQUFBRSxBQUFDLElBQUMsQUFBQyxBQUNqQyxBQUFNO3VCQUFDLEFBQUssMkJBQUMsQUFBZ0IsNEJBQUMsQUFBTSxRQUFFLEFBQVcsYUFBRSxBQUFJLEFB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QUMvQyxBQUFNO21CQUFDLEFBQUssQUFBQyxBQUNmLEFBQUM7QUFFRCxBQUFNO2VBQUMsQUFBSSxBQUFDLEFBQ2QsQUFBQyxBQUNIO0FBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb3VuZHMsIENvbmNyZXRlQm91bmRzIH0gZnJvbSAnLi4vYm91bmRzJztcbmltcG9ydCB7IG1vdmVOb2Rlc0JlZm9yZSwgRE9NQ2hhbmdlcywgRE9NVHJlZUNvbnN0cnVjdGlvbiB9IGZyb20gJy4uL2RvbS9oZWxwZXInO1xuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5cbmV4cG9ydCBjb25zdCBTVkdfTkFNRVNQQUNFID0gJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJztcbmV4cG9ydCB0eXBlIFNWR19OQU1FU1BBQ0UgPSB0eXBlb2YgU1ZHX05BTUVTUEFDRTtcblxuLy8gUGF0Y2g6ICAgIGluc2VydEFkamFjZW50SFRNTCBvbiBTVkcgRml4XG4vLyBCcm93c2VyczogU2FmYXJpLCBJRSwgRWRnZSwgRmlyZWZveCB+MzMtMzRcbi8vIFJlYXNvbjogICBpbnNlcnRBZGphY2VudEhUTUwgZG9lcyBub3QgZXhpc3Qgb24gU1ZHIGVsZW1lbnRzIGluIFNhZmFyaS4gSXQgaXNcbi8vICAgICAgICAgICBwcmVzZW50IGJ1dCB0aHJvd3MgYW4gZXhjZXB0aW9uIG9uIElFIGFuZCBFZGdlLiBPbGQgdmVyc2lvbnMgb2Zcbi8vICAgICAgICAgICBGaXJlZm94IGNyZWF0ZSBub2RlcyBpbiB0aGUgaW5jb3JyZWN0IG5hbWVzcGFjZS5cbi8vIEZpeDogICAgICBTaW5jZSBJRSBhbmQgRWRnZSBzaWxlbnRseSBmYWlsIHRvIGNyZWF0ZSBTVkcgbm9kZXMgdXNpbmdcbi8vICAgICAgICAgICBpbm5lckhUTUwsIGFuZCBiZWNhdXNlIEZpcmVmb3ggbWF5IGNyZWF0ZSBub2RlcyBpbiB0aGUgaW5jb3JyZWN0XG4vLyAgICAgICAgICAgbmFtZXNwYWNlIHVzaW5nIGlubmVySFRNTCBvbiBTVkcgZWxlbWVudHMsIGFuIEhUTUwtc3RyaW5nIHdyYXBwaW5nXG4vLyAgICAgICAgICAgYXBwcm9hY2ggaXMgdXNlZC4gQSBwcmUvcG9zdCBTVkcgdGFnIGlzIGFkZGVkIHRvIHRoZSBzdHJpbmcsIHRoZW5cbi8vICAgICAgICAgICB0aGF0IHdob2xlIHN0cmluZyBpcyBhZGRlZCB0byBhIGRpdi4gVGhlIGNyZWF0ZWQgbm9kZXMgYXJlIHBsdWNrZWRcbi8vICAgICAgICAgICBvdXQgYW5kIGFwcGxpZWQgdG8gdGhlIHRhcmdldCBsb2NhdGlvbiBvbiBET00uXG5leHBvcnQgZnVuY3Rpb24gZG9tQ2hhbmdlcyhkb2N1bWVudDogT3B0aW9uPERvY3VtZW50PiwgRE9NQ2hhbmdlc0NsYXNzOiB0eXBlb2YgRE9NQ2hhbmdlcywgc3ZnTmFtZXNwYWNlOiBTVkdfTkFNRVNQQUNFKTogdHlwZW9mIERPTUNoYW5nZXMge1xuICBpZiAoIWRvY3VtZW50KSByZXR1cm4gRE9NQ2hhbmdlc0NsYXNzO1xuXG4gIGlmICghc2hvdWxkQXBwbHlGaXgoZG9jdW1lbnQsIHN2Z05hbWVzcGFjZSkpIHtcbiAgICByZXR1cm4gRE9NQ2hhbmdlc0NsYXNzO1xuICB9XG5cbiAgbGV0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gIHJldHVybiBjbGFzcyBET01DaGFuZ2VzV2l0aFNWR0lubmVySFRNTEZpeCBleHRlbmRzIERPTUNoYW5nZXNDbGFzcyB7XG4gICAgaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQ6IEhUTUxFbGVtZW50LCBuZXh0U2libGluZzogTm9kZSwgaHRtbDogc3RyaW5nKTogQm91bmRzIHtcbiAgICAgIGlmIChodG1sID09PSBudWxsIHx8IGh0bWwgPT09ICcnKSB7XG4gICAgICAgIHJldHVybiBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgbmV4dFNpYmxpbmcsIGh0bWwpO1xuICAgICAgfVxuXG4gICAgICBpZiAocGFyZW50Lm5hbWVzcGFjZVVSSSAhPT0gc3ZnTmFtZXNwYWNlKSB7XG4gICAgICAgIHJldHVybiBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgbmV4dFNpYmxpbmcsIGh0bWwpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZml4U1ZHKHBhcmVudCwgZGl2LCBodG1sLCBuZXh0U2libGluZyk7XG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJlZUNvbnN0cnVjdGlvbihkb2N1bWVudDogT3B0aW9uPERvY3VtZW50PiwgVHJlZUNvbnN0cnVjdGlvbkNsYXNzOiB0eXBlb2YgRE9NVHJlZUNvbnN0cnVjdGlvbiwgc3ZnTmFtZXNwYWNlOiBTVkdfTkFNRVNQQUNFKTogdHlwZW9mIERPTVRyZWVDb25zdHJ1Y3Rpb24ge1xuICBpZiAoIWRvY3VtZW50KSByZXR1cm4gVHJlZUNvbnN0cnVjdGlvbkNsYXNzO1xuXG4gIGlmICghc2hvdWxkQXBwbHlGaXgoZG9jdW1lbnQsIHN2Z05hbWVzcGFjZSkpIHtcbiAgICByZXR1cm4gVHJlZUNvbnN0cnVjdGlvbkNsYXNzO1xuICB9XG5cbiAgbGV0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gIHJldHVybiBjbGFzcyBUcmVlQ29uc3RydWN0aW9uV2l0aFNWR0lubmVySFRNTEZpeCBleHRlbmRzIFRyZWVDb25zdHJ1Y3Rpb25DbGFzcyB7XG4gICAgaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQ6IEhUTUxFbGVtZW50LCBodG1sOiBzdHJpbmcsICByZWZlcmVuY2U6IE5vZGUsKTogQm91bmRzIHtcbiAgICAgIGlmIChodG1sID09PSBudWxsIHx8IGh0bWwgPT09ICcnKSB7XG4gICAgICAgIHJldHVybiBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgaHRtbCwgcmVmZXJlbmNlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHBhcmVudC5uYW1lc3BhY2VVUkkgIT09IHN2Z05hbWVzcGFjZSkge1xuICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIGh0bWwsIHJlZmVyZW5jZSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmaXhTVkcocGFyZW50LCBkaXYsIGh0bWwsIHJlZmVyZW5jZSk7XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBmaXhTVkcocGFyZW50OiBFbGVtZW50LCBkaXY6IEhUTUxFbGVtZW50LCBodG1sOiBzdHJpbmcsIHJlZmVyZW5jZTogTm9kZSk6IEJvdW5kcyB7XG4gIC8vIElFLCBFZGdlOiBhbHNvIGRvIG5vdCBjb3JyZWN0bHkgc3VwcG9ydCB1c2luZyBgaW5uZXJIVE1MYCBvbiBTVkdcbiAgLy8gbmFtZXNwYWNlZCBlbGVtZW50cy4gU28gaGVyZSBhIHdyYXBwZXIgaXMgdXNlZC5cbiAgbGV0IHdyYXBwZWRIdG1sID0gJzxzdmc+JyArIGh0bWwgKyAnPC9zdmc+JztcblxuICBkaXYuaW5uZXJIVE1MID0gd3JhcHBlZEh0bWw7XG5cbiAgbGV0IFtmaXJzdCwgbGFzdF0gPSBtb3ZlTm9kZXNCZWZvcmUoZGl2LmZpcnN0Q2hpbGQgYXMgTm9kZSwgcGFyZW50LCByZWZlcmVuY2UpO1xuICByZXR1cm4gbmV3IENvbmNyZXRlQm91bmRzKHBhcmVudCwgZmlyc3QsIGxhc3QpO1xufVxuXG5mdW5jdGlvbiBzaG91bGRBcHBseUZpeChkb2N1bWVudDogRG9jdW1lbnQsIHN2Z05hbWVzcGFjZTogU1ZHX05BTUVTUEFDRSkge1xuICBsZXQgc3ZnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHN2Z05hbWVzcGFjZSwgJ3N2ZycpO1xuXG4gIHRyeSB7XG4gICAgc3ZnWydpbnNlcnRBZGphY2VudEhUTUwnXSgnYmVmb3JlRW5kJywgJzxjaXJjbGU+PC9jaXJjbGU+Jyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyBJRSwgRWRnZTogV2lsbCB0aHJvdywgaW5zZXJ0QWRqYWNlbnRIVE1MIGlzIHVuc3VwcG9ydGVkIG9uIFNWR1xuICAgIC8vIFNhZmFyaTogV2lsbCB0aHJvdywgaW5zZXJ0QWRqYWNlbnRIVE1MIGlzIG5vdCBwcmVzZW50IG9uIFNWR1xuICB9IGZpbmFsbHkge1xuICAgIC8vIEZGOiBPbGQgdmVyc2lvbnMgd2lsbCBjcmVhdGUgYSBub2RlIGluIHRoZSB3cm9uZyBuYW1lc3BhY2VcbiAgICBpZiAoc3ZnLmNoaWxkTm9kZXMubGVuZ3RoID09PSAxICYmIHN2Zy5maXJzdENoaWxkLm5hbWVzcGFjZVVSSSA9PT0gU1ZHX05BTUVTUEFDRSkge1xuICAgICAgLy8gVGhlIHRlc3Qgd29ya2VkIGFzIGV4cGVjdGVkLCBubyBmaXggcmVxdWlyZWRcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIl19

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

BasicOpcodeBuilder.prototype.stopLabels = function stopLabels() {
var label = (0, _util.expect)(this.labelsStack.pop(), 'unbalanced push and pop labels');
var label = this.labelsStack.pop();
label.patch(this.program);

@@ -566,3 +566,3 @@ };

get: function () {
return (0, _util.expect)(this.labelsStack.current, 'bug: not in a label stack');
return this.labelsStack.current;
}

@@ -668,2 +668,2 @@ }]);

exports.default = OpcodeBuilder;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLEFBQU87O0lBQUssQUFBTyxBQUFNLEFBQVcsQUFBQzs7QUFDckMsQUFBTzs7SUFBSyxBQUFFLEFBQU0sQUFBTSxBQUFDOztBQUczQixBQUFPLEFBQUUsQUFBUSxBQUFFLEFBQU0sQUFBZSxBQUFDOztBQUV6QyxBQUFPLEFBQVUsQUFBSyxBQUFVLEFBQUksQUFBRSxBQUFNLEFBQUUsQUFBUyxBQUFFLEFBQVcsQUFBRSxBQUFNLEFBQWUsQUFBQzs7QUFjNUYsQUFBTyxBQUFFLEFBQWdCLEFBQUUsQUFBTSxBQUFnQixBQUFDOztBQUNsRCxBQUFPLEFBQUUsQUFBYyxBQUFxQixBQUFNLEFBQWUsQUFBQzs7QUFDbEUsQUFBTyxBQUFFLEFBQW1CLEFBQUUsQUFBSSxBQUFFLEFBQU0sQUFBd0IsQUFBQyxBQWNuRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt5QkFBQTs7OEJBQ0U7O2FBQU0sU0FBRyxBQUFJLEFBQVUsQUFBQyxBQUN4QjthQUFPLFVBQTJELEFBQUUsQUFBQyxBQWV2RSxBQUFDOzs7cUJBYkMsQUFBSyx1QkFBQyxBQUFZLE1BQUUsQUFBYSxPQUMvQixBQUFJO2FBQUMsQUFBTSxPQUFDLEFBQUksQUFBQyxRQUFHLEFBQUssQUFBQyxBQUM1QixBQUFDOzs7cUJBRUQsQUFBTSx5QkFBQyxBQUFVLElBQUUsQUFBb0IsUUFBRSxBQUFjLFNBQ3JELEFBQUk7YUFBQyxBQUFPLFFBQUMsQUFBSSxLQUFDLEVBQUUsQUFBRSxRQUFFLEFBQU0sZ0JBQUUsQUFBTSxBQUFFLEFBQUMsQUFBQyxBQUM1QyxRQUFDOzs7cUJBRUQsQUFBSyx1QkFBQyxBQUFnQixTQUNwQixBQUFHLEFBQUMsQUFBQyxBQUFJO3lCQUEwQixBQUFJLEtBQUMsQUFBTyxBQUFDLFNBQUMsQUFBQztnQkFBdkMsQUFBRTtn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QUFNO2VBQUMsQUFBSSxBQUFjLDRCQUFDLEFBQUksS0FBQyxBQUFHLEtBQUUsQUFBSSxLQUFDLEFBQUksTUFBRSxBQUFLLE1BQUMsQUFBVSxZQUFFLEFBQUssTUFBQyxBQUFVLEFBQUMsQUFBQyxBQUNyRixBQUFDLEFBQ0Y7Ozs7RUEvRTBDLEFBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY29udGVudCBmcm9tICcuL2NvbnRlbnQnO1xuaW1wb3J0ICogYXMgdm0gZnJvbSAnLi92bSc7XG5cbmltcG9ydCB7IEluc2VydGlvbiB9IGZyb20gJy4uLy4uL3Vwc2VydCc7XG5pbXBvcnQgeyBSZWdpc3RlciB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0ICogYXMgV2lyZUZvcm1hdCBmcm9tICdAZ2xpbW1lci93aXJlLWZvcm1hdCc7XG5pbXBvcnQgeyBPcHRpb24sIFN0YWNrLCBPcGFxdWUsIGRpY3QsIGV4cGVjdCwgZmlsbE51bGxzLCBFTVBUWV9BUlJBWSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHtcbiAgQ29uc3RhbnRzLFxuICBDb25zdGFudFN0cmluZyxcbiAgQ29uc3RhbnRBcnJheSxcbiAgQ29uc3RhbnRPdGhlcixcbiAgQ29uc3RhbnRCbG9jayxcbiAgQ29uc3RhbnRGdW5jdGlvbixcbn0gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvY29uc3RhbnRzJztcbmltcG9ydCB7IE1vZGlmaWVyTWFuYWdlciB9IGZyb20gJy4uLy4uL21vZGlmaWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQ29tcG9uZW50RGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL2NvbXBvbmVudC9pbnRlcmZhY2VzJztcbmltcG9ydCBFbnZpcm9ubWVudCwgeyBQcm9ncmFtIH0gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgU3ltYm9sVGFibGUsIENvbXBpbGF0aW9uTWV0YSB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQ29tcG9uZW50QnVpbGRlciBhcyBJQ29tcG9uZW50QnVpbGRlciB9IGZyb20gJy4uLy4uL29wY29kZS1idWlsZGVyJztcbmltcG9ydCB7IENvbXBvbmVudEJ1aWxkZXIgfSBmcm9tICcuLi8uLi9jb21waWxlcic7XG5pbXBvcnQgeyBSYXdJbmxpbmVCbG9jaywgQ2xpZW50U2lkZSwgQmxvY2sgfSBmcm9tICcuLi8uLi9zY2FubmVyJztcbmltcG9ydCB7IEludm9rZUR5bmFtaWNMYXlvdXQsIGV4cHIgfSBmcm9tICcuLi8uLi9zeW50YXgvZnVuY3Rpb25zJztcblxuaW1wb3J0IHsgT3AgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBDb21waWxlc0ludG88RT4ge1xuICBjb21waWxlKGJ1aWxkZXI6IE9wY29kZUJ1aWxkZXIpOiBFO1xufVxuXG5leHBvcnQgdHlwZSBSZXByZXNlbnRzPEU+ID0gQ29tcGlsZXNJbnRvPEU+IHwgRTtcblxuZXhwb3J0IHR5cGUgTGFiZWwgPSBzdHJpbmc7XG5cbnR5cGUgVGFyZ2V0T3Bjb2RlID0gT3AuSnVtcCB8IE9wLkp1bXBJZiB8IE9wLkp1bXBVbmxlc3MgfCBPcC5FbnRlckxpc3QgfCBPcC5JdGVyYXRlIHwgT3AuSW1tZWRpYXRlO1xuXG5jbGFzcyBMYWJlbHMge1xuICBsYWJlbHMgPSBkaWN0PG51bWJlcj4oKTtcbiAgdGFyZ2V0czogeyBhdDogbnVtYmVyLCBUYXJnZXQ6IFRhcmdldE9wY29kZSwgdGFyZ2V0OiBzdHJpbmcgfVtdID0gW107XG5cbiAgbGFiZWwobmFtZTogc3RyaW5nLCBpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5sYWJlbHNbbmFtZV0gPSBpbmRleDtcbiAgfVxuXG4gIHRhcmdldChhdDogbnVtYmVyLCBUYXJnZXQ6IFRhcmdldE9wY29kZSwgdGFyZ2V0OiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhcmdldHMucHVzaCh7IGF0LCBUYXJnZXQsIHRhcmdldCB9KTtcbiAgfVxuXG4gIHBhdGNoKG9wY29kZXM6IFByb2dyYW0pOiB2b2lkIHtcbiAgICBmb3IgKGxldCB7IGF0LCBUYXJnZXQsIHRhcmdldCB9IG9mIHRoaXMudGFyZ2V0cykge1xuICAgICAgb3Bjb2Rlcy5zZXQoYXQsIFRhcmdldCwgdGhpcy5sYWJlbHNbdGFyZ2V0XSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNpY09wY29kZUJ1aWxkZXIge1xuICBwcml2YXRlIGxhYmVsc1N0YWNrID0gbmV3IFN0YWNrPExhYmVscz4oKTtcbiAgcHVibGljIGNvbnN0YW50czogQ29uc3RhbnRzO1xuICBwdWJsaWMgc3RhcnQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZW52OiBFbnZpcm9ubWVudCwgcHVibGljIG1ldGE6IENvbXBpbGF0aW9uTWV0YSwgcHVibGljIHByb2dyYW06IFByb2dyYW0pIHtcbiAgICB0aGlzLmNvbnN0YW50cyA9IGVudi5jb25zdGFudHM7XG4gICAgdGhpcy5zdGFydCA9IHByb2dyYW0ubmV4dDtcbiAgfVxuXG4gIGFic3RyYWN0IGNvbXBpbGU8RT4oZXhwcjogUmVwcmVzZW50czxFPik6IEU7XG5cbiAgcHJpdmF0ZSBnZXQgcG9zKCkge1xuICAgIHJldHVybiB0aGlzLnByb2dyYW0uY3VycmVudDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IG5leHRQb3MoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZ3JhbS5uZXh0O1xuICB9XG5cbiAgdXB2YXJzPFQgZXh0ZW5kcyBbT3BhcXVlXT4oY291bnQ6IG51bWJlcik6IFQge1xuICAgIHJldHVybiBmaWxsTnVsbHMoY291bnQpIGFzIFQ7XG4gIH1cblxuICByZXNlcnZlKG5hbWU6IE9wKSB7XG4gICAgdGhpcy5wdXNoKG5hbWUsIDAsIDAsIDApO1xuICB9XG5cbiAgcHVzaChuYW1lOiBPcCwgb3AxID0gMCwgb3AyID0gMCwgb3AzID0gMCkge1xuICAgIHJldHVybiB0aGlzLnByb2dyYW0ucHVzaChuYW1lLCBvcDEsIG9wMiwgb3AzKTtcbiAgfVxuXG4gIGZpbmFsaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucHVzaChPcC5SZXR1cm4pO1xuICB9XG5cbiAgLy8gYXJnc1xuXG4gIHB1c2hBcmdzKHBvc2l0aW9uYWw6IG51bWJlciwgc3ludGhldGljOiBib29sZWFuKSB7XG4gICAgdGhpcy5wdXNoKE9wLlB1c2hBcmdzLCBwb3NpdGlvbmFsLCAoc3ludGhldGljIGFzIGFueSl8MCk7XG4gIH1cblxuICAvLyBoZWxwZXJzXG5cbiAgcHJpdmF0ZSBnZXQgbGFiZWxzKCk6IExhYmVscyB7XG4gICAgcmV0dXJuIGV4cGVjdCh0aGlzLmxhYmVsc1N0YWNrLmN1cnJlbnQsICdidWc6IG5vdCBpbiBhIGxhYmVsIHN0YWNrJyk7XG4gIH1cblxuICBzdGFydExhYmVscygpIHtcbiAgICB0aGlzLmxhYmVsc1N0YWNrLnB1c2gobmV3IExhYmVscygpKTtcbiAgfVxuXG4gIHN0b3BMYWJlbHMoKSB7XG4gICAgbGV0IGxhYmVsID0gZXhwZWN0KHRoaXMubGFiZWxzU3RhY2sucG9wKCksICd1bmJhbGFuY2VkIHB1c2ggYW5kIHBvcCBsYWJlbHMnKTtcbiAgICBsYWJlbC5wYXRjaCh0aGlzLnByb2dyYW0pO1xuICB9XG5cbiAgLy8gY29tcG9uZW50c1xuXG4gIHB1c2hDb21wb25lbnRNYW5hZ2VyKGRlZmluaXRpb246IENvbXBvbmVudERlZmluaXRpb248T3BhcXVlPikge1xuICAgIHRoaXMucHVzaChPcC5QdXNoQ29tcG9uZW50TWFuYWdlciwgdGhpcy5vdGhlcihkZWZpbml0aW9uKSk7XG4gIH1cblxuICBwdXNoRHluYW1pY0NvbXBvbmVudE1hbmFnZXIoKSB7XG4gICAgdGhpcy5wdXNoKE9wLlB1c2hEeW5hbWljQ29tcG9uZW50TWFuYWdlcik7XG4gIH1cblxuICBpbml0aWFsaXplQ29tcG9uZW50U3RhdGUoKSB7XG4gICAgdGhpcy5wdXNoKE9wLkluaXRpYWxpemVDb21wb25lbnRTdGF0ZSk7XG4gIH1cblxuICBwcmVwYXJlQXJncyhzdGF0ZTogUmVnaXN0ZXIpIHtcbiAgICB0aGlzLnB1c2goT3AuUHJlcGFyZUFyZ3MsIHN0YXRlKTtcbiAgfVxuXG4gIGNyZWF0ZUNvbXBvbmVudChzdGF0ZTogUmVnaXN0ZXIsIGhhc0RlZmF1bHQ6IGJvb2xlYW4sIGhhc0ludmVyc2U6IGJvb2xlYW4pIHtcbiAgICBsZXQgZmxhZyA9ICg8YW55Pmhhc0RlZmF1bHR8MCkgfCAoKDxhbnk+aGFzSW52ZXJzZXwwKSA8PCAxKTtcbiAgICB0aGlzLnB1c2goT3AuQ3JlYXRlQ29tcG9uZW50LCBmbGFnLCBzdGF0ZSk7XG4gIH1cblxuICByZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3Ioc3RhdGU6IFJlZ2lzdGVyKSB7XG4gICAgdGhpcy5wdXNoKE9wLlJlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3Rvciwgc3RhdGUpO1xuICB9XG5cbiAgYmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbigpIHtcbiAgICB0aGlzLnB1c2goT3AuQmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbik7XG4gIH1cblxuICBjb21taXRDb21wb25lbnRUcmFuc2FjdGlvbigpIHtcbiAgICB0aGlzLnB1c2goT3AuQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24pO1xuICB9XG5cbiAgcHVzaENvbXBvbmVudE9wZXJhdGlvbnMoKSB7XG4gICAgdGhpcy5wdXNoKE9wLlB1c2hDb21wb25lbnRPcGVyYXRpb25zKTtcbiAgfVxuXG4gIGdldENvbXBvbmVudFNlbGYoc3RhdGU6IFJlZ2lzdGVyKSB7XG4gICAgdGhpcy5wdXNoKE9wLkdldENvbXBvbmVudFNlbGYsIHN0YXRlKTtcbiAgfVxuXG4gIGdldENvbXBvbmVudExheW91dChzdGF0ZTogUmVnaXN0ZXIgKSB7XG4gICAgdGhpcy5wdXNoKE9wLkdldENvbXBvbmVudExheW91dCwgc3RhdGUpO1xuICB9XG5cbiAgZGlkQ3JlYXRlRWxlbWVudChzdGF0ZTogUmVnaXN0ZXIpIHtcbiAgICB0aGlzLnB1c2goT3AuRGlkQ3JlYXRlRWxlbWVudCwgc3RhdGUpO1xuICB9XG5cbiAgZGlkUmVuZGVyTGF5b3V0KHN0YXRlOiBSZWdpc3Rlcikge1xuICAgIHRoaXMucHVzaChPcC5EaWRSZW5kZXJMYXlvdXQsIHN0YXRlKTtcbiAgfVxuXG4gIC8vIHBhcnRpYWxcblxuICBnZXRQYXJ0aWFsVGVtcGxhdGUoKSB7XG4gICAgdGhpcy5wdXNoKE9wLkdldFBhcnRpYWxUZW1wbGF0ZSk7XG4gIH1cblxuICByZXNvbHZlTWF5YmVMb2NhbChuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLnB1c2goT3AuUmVzb2x2ZU1heWJlTG9jYWwsIHRoaXMuc3RyaW5nKG5hbWUpKTtcbiAgfVxuXG4gIC8vIGRlYnVnZ2VyXG5cbiAgZGVidWdnZXIoc3ltYm9sczogc3RyaW5nW10sIGV2YWxJbmZvOiBudW1iZXJbXSkge1xuICAgIHRoaXMucHVzaChPcC5EZWJ1Z2dlciwgdGhpcy5jb25zdGFudHMub3RoZXIoc3ltYm9scyksIHRoaXMuY29uc3RhbnRzLmFycmF5KGV2YWxJbmZvKSk7XG4gIH1cblxuICAvLyBjb250ZW50XG5cbiAgZHluYW1pY0NvbnRlbnQoT3Bjb2RlOiBjb250ZW50LkFwcGVuZER5bmFtaWNPcGNvZGU8SW5zZXJ0aW9uPikge1xuICAgIHRoaXMucHVzaChPcC5EeW5hbWljQ29udGVudCwgdGhpcy5vdGhlcihPcGNvZGUpKTtcbiAgfVxuXG4gIGNhdXRpb3VzQXBwZW5kKCkge1xuICAgIHRoaXMuZHluYW1pY0NvbnRlbnQobmV3IGNvbnRlbnQuT3B0aW1pemVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUoKSk7XG4gIH1cblxuICB0cnVzdGluZ0FwcGVuZCgpIHtcbiAgICB0aGlzLmR5bmFtaWNDb250ZW50KG5ldyBjb250ZW50Lk9wdGltaXplZFRydXN0aW5nQXBwZW5kT3Bjb2RlKCkpO1xuICB9XG5cbiAgLy8gZG9tXG5cbiAgdGV4dCh0ZXh0OiBzdHJpbmcpIHtcbiAgICB0aGlzLnB1c2goT3AuVGV4dCwgdGhpcy5jb25zdGFudHMuc3RyaW5nKHRleHQpKTtcbiAgfVxuXG4gIG9wZW5QcmltaXRpdmVFbGVtZW50KHRhZzogc3RyaW5nKSB7XG4gICAgdGhpcy5wdXNoKE9wLk9wZW5FbGVtZW50LCB0aGlzLmNvbnN0YW50cy5zdHJpbmcodGFnKSk7XG4gIH1cblxuICBvcGVuRWxlbWVudFdpdGhPcGVyYXRpb25zKHRhZzogc3RyaW5nKSB7XG4gICAgdGhpcy5wdXNoKE9wLk9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMsIHRoaXMuY29uc3RhbnRzLnN0cmluZyh0YWcpKTtcbiAgfVxuXG4gIG9wZW5EeW5hbWljRWxlbWVudCgpIHtcbiAgICB0aGlzLnB1c2goT3AuT3BlbkR5bmFtaWNFbGVtZW50KTtcbiAgfVxuXG4gIGZsdXNoRWxlbWVudCgpIHtcbiAgICB0aGlzLnB1c2goT3AuRmx1c2hFbGVtZW50KTtcbiAgfVxuXG4gIGNsb3NlRWxlbWVudCgpIHtcbiAgICB0aGlzLnB1c2goT3AuQ2xvc2VFbGVtZW50KTtcbiAgfVxuXG4gIHN0YXRpY0F0dHIoX25hbWU6IHN0cmluZywgX25hbWVzcGFjZTogT3B0aW9uPHN0cmluZz4sIF92YWx1ZTogc3RyaW5nKSB7XG4gICAgbGV0IG5hbWUgPSB0aGlzLmNvbnN0YW50cy5zdHJpbmcoX25hbWUpO1xuICAgIGxldCBuYW1lc3BhY2UgPSBfbmFtZXNwYWNlID8gdGhpcy5jb25zdGFudHMuc3RyaW5nKF9uYW1lc3BhY2UpIDogMDtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLmNvbnN0YW50cy5zdHJpbmcoX3ZhbHVlKTtcblxuICAgIHRoaXMucHVzaChPcC5TdGF0aWNBdHRyLCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlKTtcbiAgfVxuXG4gIGR5bmFtaWNBdHRyTlMoX25hbWU6IHN0cmluZywgX25hbWVzcGFjZTogc3RyaW5nLCB0cnVzdGluZzogYm9vbGVhbikge1xuICAgIGxldCBuYW1lID0gdGhpcy5jb25zdGFudHMuc3RyaW5nKF9uYW1lKTtcbiAgICBsZXQgbmFtZXNwYWNlID0gdGhpcy5jb25zdGFudHMuc3RyaW5nKF9uYW1lc3BhY2UpO1xuXG4gICAgdGhpcy5wdXNoKE9wLkR5bmFtaWNBdHRyTlMsIG5hbWUsIG5hbWVzcGFjZSwgKHRydXN0aW5nIGFzIGFueSl8MCk7XG4gIH1cblxuICBkeW5hbWljQXR0cihfbmFtZTogc3RyaW5nLCB0cnVzdGluZzogYm9vbGVhbikge1xuICAgIGxldCBuYW1lID0gdGhpcy5jb25zdGFudHMuc3RyaW5nKF9uYW1lKTtcbiAgICB0aGlzLnB1c2goT3AuRHluYW1pY0F0dHIsIG5hbWUsICh0cnVzdGluZyBhcyBhbnkpfDApO1xuICB9XG5cbiAgY29tbWVudChfY29tbWVudDogc3RyaW5nKSB7XG4gICAgbGV0IGNvbW1lbnQgPSB0aGlzLmNvbnN0YW50cy5zdHJpbmcoX2NvbW1lbnQpO1xuICAgIHRoaXMucHVzaChPcC5Db21tZW50LCBjb21tZW50KTtcbiAgfVxuXG4gIG1vZGlmaWVyKF9kZWZpbml0aW9uOiBNb2RpZmllck1hbmFnZXI8T3BhcXVlPikge1xuICAgIHRoaXMucHVzaChPcC5Nb2RpZmllciwgdGhpcy5vdGhlcihfZGVmaW5pdGlvbikpO1xuICB9XG5cbiAgLy8gbGlzdHNcblxuICBwdXRJdGVyYXRvcigpIHtcbiAgICB0aGlzLnB1c2goT3AuUHV0SXRlcmF0b3IpO1xuICB9XG5cbiAgZW50ZXJMaXN0KHN0YXJ0OiBzdHJpbmcpIHtcbiAgICB0aGlzLnJlc2VydmUoT3AuRW50ZXJMaXN0KTtcbiAgICB0aGlzLmxhYmVscy50YXJnZXQodGhpcy5wb3MsIE9wLkVudGVyTGlzdCwgc3RhcnQpO1xuICB9XG5cbiAgZXhpdExpc3QoKSB7XG4gICAgdGhpcy5wdXNoKE9wLkV4aXRMaXN0KTtcbiAgfVxuXG4gIGl0ZXJhdGUoYnJlYWtzOiBzdHJpbmcpIHtcbiAgICB0aGlzLnJlc2VydmUoT3AuSXRlcmF0ZSk7XG4gICAgdGhpcy5sYWJlbHMudGFyZ2V0KHRoaXMucG9zLCBPcC5JdGVyYXRlLCBicmVha3MpO1xuICB9XG5cbiAgLy8gZXhwcmVzc2lvbnNcblxuICBzZXRWYXJpYWJsZShzeW1ib2w6IG51bWJlcikge1xuICAgIHRoaXMucHVzaChPcC5TZXRWYXJpYWJsZSwgc3ltYm9sKTtcbiAgfVxuXG4gIGdldFZhcmlhYmxlKHN5bWJvbDogbnVtYmVyKSB7XG4gICAgdGhpcy5wdXNoKE9wLkdldFZhcmlhYmxlLCBzeW1ib2wpO1xuICB9XG5cbiAgZ2V0UHJvcGVydHkoa2V5OiBzdHJpbmcpIHtcbiAgICB0aGlzLnB1c2goT3AuR2V0UHJvcGVydHksIHRoaXMuc3RyaW5nKGtleSkpO1xuICB9XG5cbiAgZ2V0QmxvY2soc3ltYm9sOiBudW1iZXIpIHtcbiAgICB0aGlzLnB1c2goT3AuR2V0QmxvY2ssIHN5bWJvbCk7XG4gIH1cblxuICBoYXNCbG9jayhzeW1ib2w6IG51bWJlcikge1xuICAgIHRoaXMucHVzaChPcC5IYXNCbG9jaywgc3ltYm9sKTtcbiAgfVxuXG4gIGhhc0Jsb2NrUGFyYW1zKHN5bWJvbDogbnVtYmVyKSB7XG4gICAgdGhpcy5wdXNoKE9wLkhhc0Jsb2NrUGFyYW1zLCBzeW1ib2wpO1xuICB9XG5cbiAgY29uY2F0KHNpemU6IG51bWJlcikge1xuICAgIHRoaXMucHVzaChPcC5Db25jYXQsIHNpemUpO1xuICB9XG5cbiAgZnVuY3Rpb24oZjogQ2xpZW50U2lkZS5GdW5jdGlvbkV4cHJlc3Npb25DYWxsYmFjazxPcGFxdWU+KSB7XG4gICAgdGhpcy5wdXNoKE9wLkZ1bmN0aW9uLCB0aGlzLmZ1bmMoZikpO1xuICB9XG5cbiAgbG9hZChyZWdpc3RlcjogUmVnaXN0ZXIpIHtcbiAgICB0aGlzLnB1c2goT3AuTG9hZCwgcmVnaXN0ZXIpO1xuICB9XG5cbiAgZmV0Y2gocmVnaXN0ZXI6IFJlZ2lzdGVyKSB7XG4gICAgdGhpcy5wdXNoKE9wLkZldGNoLCByZWdpc3Rlcik7XG4gIH1cblxuICBkdXAocmVnaXN0ZXIgPSBSZWdpc3Rlci5zcCwgb2Zmc2V0ID0gMCkge1xuICAgIHJldHVybiB0aGlzLnB1c2goT3AuRHVwLCByZWdpc3Rlciwgb2Zmc2V0KTtcbiAgfVxuXG4gIHBvcChjb3VudCA9IDEpIHtcbiAgICByZXR1cm4gdGhpcy5wdXNoKE9wLlBvcCwgY291bnQpO1xuICB9XG5cbiAgLy8gdm1cblxuICBwdXNoUmVtb3RlRWxlbWVudCgpIHtcbiAgICB0aGlzLnB1c2goT3AuUHVzaFJlbW90ZUVsZW1lbnQpO1xuICB9XG5cbiAgcG9wUmVtb3RlRWxlbWVudCgpIHtcbiAgICB0aGlzLnB1c2goT3AuUG9wUmVtb3RlRWxlbWVudCk7XG4gIH1cblxuICBsYWJlbChuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLmxhYmVscy5sYWJlbChuYW1lLCB0aGlzLm5leHRQb3MpO1xuICB9XG5cbiAgcHVzaFJvb3RTY29wZShzeW1ib2xzOiBudW1iZXIsIGJpbmRDYWxsZXJTY29wZTogYm9vbGVhbikge1xuICAgIHRoaXMucHVzaChPcC5Sb290U2NvcGUsIHN5bWJvbHMsIDxhbnk+YmluZENhbGxlclNjb3BlfDApO1xuICB9XG5cbiAgcHVzaENoaWxkU2NvcGUoKSB7XG4gICAgdGhpcy5wdXNoKE9wLkNoaWxkU2NvcGUpO1xuICB9XG5cbiAgcG9wU2NvcGUoKSB7XG4gICAgdGhpcy5wdXNoKE9wLlBvcFNjb3BlKTtcbiAgfVxuXG4gIHJldHVyblRvKGxhYmVsOiBzdHJpbmcpIHtcbiAgICB0aGlzLnJlc2VydmUoT3AuSW1tZWRpYXRlKTtcbiAgICB0aGlzLmxhYmVscy50YXJnZXQodGhpcy5wb3MsIE9wLkltbWVkaWF0ZSwgbGFiZWwpO1xuICAgIHRoaXMubG9hZChSZWdpc3Rlci5yYSk7XG4gIH1cblxuICBwdXNoRHluYW1pY1Njb3BlKCkge1xuICAgIHRoaXMucHVzaChPcC5QdXNoRHluYW1pY1Njb3BlKTtcbiAgfVxuXG4gIHBvcER5bmFtaWNTY29wZSgpIHtcbiAgICB0aGlzLnB1c2goT3AuUG9wRHluYW1pY1Njb3BlKTtcbiAgfVxuXG4gIHB1c2hJbW1lZGlhdGU8VD4odmFsdWU6IFQpIHtcbiAgICB0aGlzLnB1c2goT3AuQ29uc3RhbnQsIHRoaXMub3RoZXIodmFsdWUpKTtcbiAgfVxuXG4gIHByaW1pdGl2ZShfcHJpbWl0aXZlOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkIHwgYm9vbGVhbikge1xuICAgIGxldCBmbGFnOiAwIHwgMSB8IDIgPSAwO1xuICAgIGxldCBwcmltaXRpdmU6IG51bWJlcjtcbiAgICBzd2l0Y2ggKHR5cGVvZiBfcHJpbWl0aXZlKSB7XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICBwcmltaXRpdmUgPSBfcHJpbWl0aXZlIGFzIG51bWJlcjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICBwcmltaXRpdmUgPSB0aGlzLnN0cmluZyhfcHJpbWl0aXZlIGFzIHN0cmluZyk7XG4gICAgICAgIGZsYWcgPSAxO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICBwcmltaXRpdmUgPSAoX3ByaW1pdGl2ZSBhcyBhbnkpIHwgMDtcbiAgICAgICAgZmxhZyA9IDI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgLy8gYXNzdW1lIG51bGxcbiAgICAgICAgcHJpbWl0aXZlID0gMjtcbiAgICAgICAgZmxhZyA9IDI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndW5kZWZpbmVkJzpcbiAgICAgICAgcHJpbWl0aXZlID0gMztcbiAgICAgICAgZmxhZyA9IDI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHByaW1pdGl2ZSBwYXNzZWQgdG8gcHVzaFByaW1pdGl2ZScpO1xuICAgIH1cblxuICAgIHRoaXMucHVzaChPcC5QcmltaXRpdmVSZWZlcmVuY2UsIChmbGFnIDw8IDMwKSB8IHByaW1pdGl2ZSk7XG4gIH1cblxuICBoZWxwZXIoZnVuYzogRnVuY3Rpb24pIHtcbiAgICB0aGlzLnB1c2goT3AuSGVscGVyLCB0aGlzLmZ1bmMoZnVuYykpO1xuICB9XG5cbiAgcHVzaEJsb2NrKGJsb2NrOiBPcHRpb248QmxvY2s+KSB7XG4gICAgdGhpcy5wdXNoKE9wLlB1c2hCbG9jaywgdGhpcy5ibG9jayhibG9jaykpO1xuICB9XG5cbiAgYmluZER5bmFtaWNTY29wZShfbmFtZXM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5wdXNoKE9wLkJpbmREeW5hbWljU2NvcGUsIHRoaXMubmFtZXMoX25hbWVzKSk7XG4gIH1cblxuICBlbnRlcihhcmdzOiBudW1iZXIpIHtcbiAgICB0aGlzLnB1c2goT3AuRW50ZXIsIGFyZ3MpO1xuICB9XG5cbiAgZXhpdCgpIHtcbiAgICB0aGlzLnB1c2goT3AuRXhpdCk7XG4gIH1cblxuICByZXR1cm4oKSB7XG4gICAgdGhpcy5wdXNoKE9wLlJldHVybik7XG4gIH1cblxuICBwdXNoRnJhbWUoKSB7XG4gICAgdGhpcy5wdXNoKE9wLlB1c2hGcmFtZSk7XG4gIH1cblxuICBwb3BGcmFtZSgpIHtcbiAgICB0aGlzLnB1c2goT3AuUG9wRnJhbWUpO1xuICB9XG5cbiAgY29tcGlsZUR5bmFtaWNCbG9jaygpOiB2b2lkIHtcbiAgICB0aGlzLnB1c2goT3AuQ29tcGlsZUR5bmFtaWNCbG9jayk7XG4gIH1cblxuICBpbnZva2VEeW5hbWljKGludm9rZXI6IHZtLkR5bmFtaWNJbnZva2VyPFN5bWJvbFRhYmxlPik6IHZvaWQge1xuICAgIHRoaXMucHVzaChPcC5JbnZva2VEeW5hbWljLCB0aGlzLm90aGVyKGludm9rZXIpKTtcbiAgfVxuXG4gIGludm9rZVN0YXRpYyhibG9jazogQmxvY2ssIGNhbGxlckNvdW50ID0gMCk6IHZvaWQge1xuICAgIGxldCB7IHBhcmFtZXRlcnMgfSA9IGJsb2NrLnN5bWJvbFRhYmxlO1xuICAgIGxldCBjYWxsZWVDb3VudCA9IHBhcmFtZXRlcnMubGVuZ3RoO1xuICAgIGxldCBjb3VudCA9IE1hdGgubWluKGNhbGxlckNvdW50LCBjYWxsZWVDb3VudCk7XG5cbiAgICB0aGlzLnB1c2hGcmFtZSgpO1xuXG4gICAgaWYgKGNvdW50KSB7XG4gICAgICB0aGlzLnB1c2hDaGlsZFNjb3BlKCk7XG5cbiAgICAgIGZvciAobGV0IGk9MDsgaTxjb3VudDsgaSsrKSB7XG4gICAgICAgIHRoaXMuZHVwKFJlZ2lzdGVyLmZwLCBjYWxsZXJDb3VudCAtIGkpO1xuICAgICAgICB0aGlzLnNldFZhcmlhYmxlKHBhcmFtZXRlcnNbaV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBfYmxvY2sgPSB0aGlzLmNvbnN0YW50cy5ibG9jayhibG9jayk7XG4gICAgdGhpcy5wdXNoKE9wLkludm9rZVN0YXRpYywgX2Jsb2NrKTtcblxuICAgIGlmIChjb3VudCkge1xuICAgICAgdGhpcy5wb3BTY29wZSgpO1xuICAgIH1cblxuICAgIHRoaXMucG9wRnJhbWUoKTtcbiAgfVxuXG4gIHRlc3QodGVzdEZ1bmM6ICdjb25zdCcgfCAnc2ltcGxlJyB8ICdlbnZpcm9ubWVudCcgfCB2bS5UZXN0RnVuY3Rpb24pIHtcbiAgICBsZXQgX2Z1bmM6IHZtLlRlc3RGdW5jdGlvbjtcblxuICAgIGlmICh0ZXN0RnVuYyA9PT0gJ2NvbnN0Jykge1xuICAgICAgX2Z1bmMgPSB2bS5Db25zdFRlc3Q7XG4gICAgfSBlbHNlIGlmICh0ZXN0RnVuYyA9PT0gJ3NpbXBsZScpIHtcbiAgICAgIF9mdW5jID0gdm0uU2ltcGxlVGVzdDtcbiAgICB9IGVsc2UgaWYgKHRlc3RGdW5jID09PSAnZW52aXJvbm1lbnQnKSB7XG4gICAgICBfZnVuYyA9IHZtLkVudmlyb25tZW50VGVzdDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB0ZXN0RnVuYyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgX2Z1bmMgPSB0ZXN0RnVuYztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bnJlYWNoYWJsZScpO1xuICAgIH1cblxuICAgIGxldCBmdW5jID0gdGhpcy5jb25zdGFudHMuZnVuY3Rpb24oX2Z1bmMpO1xuICAgIHRoaXMucHVzaChPcC5UZXN0LCBmdW5jKTtcbiAgfVxuXG4gIGp1bXAodGFyZ2V0OiBzdHJpbmcpIHtcbiAgICB0aGlzLnJlc2VydmUoT3AuSnVtcCk7XG4gICAgdGhpcy5sYWJlbHMudGFyZ2V0KHRoaXMucG9zLCBPcC5KdW1wLCB0YXJnZXQpO1xuICB9XG5cbiAganVtcElmKHRhcmdldDogc3RyaW5nKSB7XG4gICAgdGhpcy5yZXNlcnZlKE9wLkp1bXBJZik7XG4gICAgdGhpcy5sYWJlbHMudGFyZ2V0KHRoaXMucG9zLCBPcC5KdW1wSWYsIHRhcmdldCk7XG4gIH1cblxuICBqdW1wVW5sZXNzKHRhcmdldDogc3RyaW5nKSB7XG4gICAgdGhpcy5yZXNlcnZlKE9wLkp1bXBVbmxlc3MpO1xuICAgIHRoaXMubGFiZWxzLnRhcmdldCh0aGlzLnBvcywgT3AuSnVtcFVubGVzcywgdGFyZ2V0KTtcbiAgfVxuXG4gIHN0cmluZyhfc3RyaW5nOiBzdHJpbmcpOiBDb25zdGFudFN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29uc3RhbnRzLnN0cmluZyhfc3RyaW5nKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBuYW1lcyhfbmFtZXM6IHN0cmluZ1tdKTogQ29uc3RhbnRBcnJheSB7XG4gICAgbGV0IG5hbWVzID0gX25hbWVzLm1hcChuID0+IHRoaXMuY29uc3RhbnRzLnN0cmluZyhuKSk7XG4gICAgcmV0dXJuIHRoaXMuY29uc3RhbnRzLmFycmF5KG5hbWVzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzeW1ib2xzKHN5bWJvbHM6IG51bWJlcltdKTogQ29uc3RhbnRBcnJheSB7XG4gICAgcmV0dXJuIHRoaXMuY29uc3RhbnRzLmFycmF5KHN5bWJvbHMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG90aGVyKHZhbHVlOiBPcGFxdWUpOiBDb25zdGFudE90aGVyIHtcbiAgICByZXR1cm4gdGhpcy5jb25zdGFudHMub3RoZXIodmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJsb2NrKGJsb2NrOiBPcHRpb248QmxvY2s+KTogQ29uc3RhbnRCbG9jayB7XG4gICAgcmV0dXJuIGJsb2NrID8gdGhpcy5jb25zdGFudHMuYmxvY2soYmxvY2spIDogMDtcbiAgfVxuXG4gIHByb3RlY3RlZCBmdW5jKGZ1bmM6IEZ1bmN0aW9uKTogQ29uc3RhbnRGdW5jdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uc3RhbnRzLmZ1bmN0aW9uKGZ1bmMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzQ29tcGlsYWJsZUV4cHJlc3Npb248RT4oZXhwcjogUmVwcmVzZW50czxFPik6IGV4cHIgaXMgQ29tcGlsZXNJbnRvPEU+IHtcbiAgcmV0dXJuIGV4cHIgJiYgdHlwZW9mIGV4cHJbJ2NvbXBpbGUnXSA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgT3Bjb2RlQnVpbGRlciBleHRlbmRzIEJhc2ljT3Bjb2RlQnVpbGRlciB7XG4gIHB1YmxpYyBjb21wb25lbnQ6IElDb21wb25lbnRCdWlsZGVyO1xuXG4gIGNvbnN0cnVjdG9yKGVudjogRW52aXJvbm1lbnQsIG1ldGE6IENvbXBpbGF0aW9uTWV0YSwgcHJvZ3JhbTogUHJvZ3JhbSA9IGVudi5wcm9ncmFtKSB7XG4gICAgc3VwZXIoZW52LCBtZXRhLCBwcm9ncmFtKTtcbiAgICB0aGlzLmNvbXBvbmVudCA9IG5ldyBDb21wb25lbnRCdWlsZGVyKHRoaXMpO1xuICB9XG5cbiAgY29tcGlsZUFyZ3MocGFyYW1zOiBPcHRpb248V2lyZUZvcm1hdC5Db3JlLlBhcmFtcz4sIGhhc2g6IE9wdGlvbjxXaXJlRm9ybWF0LkNvcmUuSGFzaD4sIHN5bnRoZXRpYzogYm9vbGVhbikge1xuICAgIGxldCBwb3NpdGlvbmFsID0gMDtcblxuICAgIGlmIChwYXJhbXMpIHtcbiAgICAgIHBhcmFtcy5mb3JFYWNoKHAgPT4gZXhwcihwLCB0aGlzKSk7XG4gICAgICBwb3NpdGlvbmFsID0gcGFyYW1zLmxlbmd0aDtcbiAgICB9XG5cbiAgICBsZXQgbmFtZXMgPSBFTVBUWV9BUlJBWTtcblxuICAgIGlmIChoYXNoKSB7XG4gICAgICBuYW1lcyA9IGhhc2hbMF07XG4gICAgICBoYXNoWzFdLmZvckVhY2godiA9PiBleHByKHYsIHRoaXMpKTtcbiAgICB9XG5cbiAgICB0aGlzLnB1c2hJbW1lZGlhdGUobmFtZXMpO1xuICAgIHRoaXMucHVzaEFyZ3MocG9zaXRpb25hbCwgc3ludGhldGljKTtcbiAgfVxuXG4gIGNvbXBpbGU8RT4oZXhwcjogUmVwcmVzZW50czxFPik6IEUge1xuICAgIGlmIChpc0NvbXBpbGFibGVFeHByZXNzaW9uKGV4cHIpKSB7XG4gICAgICByZXR1cm4gZXhwci5jb21waWxlKHRoaXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZXhwcjtcbiAgICB9XG4gIH1cblxuICBndWFyZGVkQ2F1dGlvdXNBcHBlbmQoZXhwcmVzc2lvbjogV2lyZUZvcm1hdC5FeHByZXNzaW9uKSB7XG4gICAgZXhwcihleHByZXNzaW9uLCB0aGlzKTtcbiAgICB0aGlzLmR5bmFtaWNDb250ZW50KG5ldyBjb250ZW50Lkd1YXJkZWRDYXV0aW91c0FwcGVuZE9wY29kZSgpKTtcbiAgfVxuXG4gIGd1YXJkZWRUcnVzdGluZ0FwcGVuZChleHByZXNzaW9uOiBXaXJlRm9ybWF0LkV4cHJlc3Npb24pIHtcbiAgICBleHByKGV4cHJlc3Npb24sIHRoaXMpO1xuICAgIHRoaXMuZHluYW1pY0NvbnRlbnQobmV3IGNvbnRlbnQuR3VhcmRlZFRydXN0aW5nQXBwZW5kT3Bjb2RlKCkpO1xuICB9XG5cbiAgaW52b2tlQ29tcG9uZW50KGF0dHJzOiBPcHRpb248UmF3SW5saW5lQmxvY2s+LCBwYXJhbXM6IE9wdGlvbjxXaXJlRm9ybWF0LkNvcmUuUGFyYW1zPiwgaGFzaDogT3B0aW9uPFdpcmVGb3JtYXQuQ29yZS5IYXNoPiwgYmxvY2s6IE9wdGlvbjxCbG9jaz4sIGludmVyc2U6IE9wdGlvbjxCbG9jaz4gPSBudWxsKSB7XG4gICAgdGhpcy5pbml0aWFsaXplQ29tcG9uZW50U3RhdGUoKTtcblxuICAgIHRoaXMuZmV0Y2goUmVnaXN0ZXIuczApO1xuICAgIHRoaXMuZHVwKFJlZ2lzdGVyLnNwLCAxKTtcbiAgICB0aGlzLmxvYWQoUmVnaXN0ZXIuczApO1xuXG4gICAgdGhpcy5wdXNoQmxvY2soYmxvY2spO1xuICAgIHRoaXMucHVzaEJsb2NrKGludmVyc2UpO1xuXG4gICAgdGhpcy5jb21waWxlQXJncyhwYXJhbXMsIGhhc2gsIGZhbHNlKTtcbiAgICB0aGlzLnByZXBhcmVBcmdzKFJlZ2lzdGVyLnMwKTtcblxuICAgIHRoaXMuYmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbigpO1xuICAgIHRoaXMucHVzaER5bmFtaWNTY29wZSgpO1xuICAgIHRoaXMuY3JlYXRlQ29tcG9uZW50KFJlZ2lzdGVyLnMwLCB0cnVlLCBpbnZlcnNlID09PSBudWxsKTtcbiAgICB0aGlzLnJlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvcihSZWdpc3Rlci5zMCk7XG5cbiAgICB0aGlzLmdldENvbXBvbmVudFNlbGYoUmVnaXN0ZXIuczApO1xuICAgIHRoaXMuZ2V0Q29tcG9uZW50TGF5b3V0KFJlZ2lzdGVyLnMwKTtcbiAgICB0aGlzLmludm9rZUR5bmFtaWMobmV3IEludm9rZUR5bmFtaWNMYXlvdXQoYXR0cnMgJiYgYXR0cnMuc2NhbigpKSk7XG4gICAgdGhpcy5wb3BGcmFtZSgpO1xuXG4gICAgdGhpcy5wb3BTY29wZSgpO1xuICAgIHRoaXMucG9wRHluYW1pY1Njb3BlKCk7XG4gICAgdGhpcy5jb21taXRDb21wb25lbnRUcmFuc2FjdGlvbigpO1xuXG4gICAgdGhpcy5sb2FkKFJlZ2lzdGVyLnMwKTtcbiAgfVxuXG4gIHRlbXBsYXRlKGJsb2NrOiBPcHRpb248V2lyZUZvcm1hdC5TZXJpYWxpemVkSW5saW5lQmxvY2s+KTogT3B0aW9uPFJhd0lubGluZUJsb2NrPiB7XG4gICAgaWYgKCFibG9jaykgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIG5ldyBSYXdJbmxpbmVCbG9jayh0aGlzLmVudiwgdGhpcy5tZXRhLCBibG9jay5zdGF0ZW1lbnRzLCBibG9jay5wYXJhbWV0ZXJzKTtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBCbG9ja0NhbGxiYWNrID0gKGRzbDogT3Bjb2RlQnVpbGRlciwgQkVHSU46IExhYmVsLCBFTkQ6IExhYmVsKSA9PiB2b2lkO1xuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLEFBQU87O0lBQUssQUFBTyxBQUFNLEFBQVcsQUFBQzs7QUFDckMsQUFBTzs7SUFBSyxBQUFFLEFBQU0sQUFBTSxBQUFDOztBQUczQixBQUFPLEFBQUUsQUFBUSxBQUFFLEFBQU0sQUFBZSxBQUFDOztBQUV6QyxBQUFPLEFBQVUsQUFBSyxBQUFVLEFBQUksQUFBRSxBQUFTLEFBQUUsQUFBVyxBQUFFLEFBQU0sQUFBZSxBQUFDOztBQWNwRixBQUFPLEFBQUUsQUFBZ0IsQUFBRSxBQUFNLEFBQWdCLEFBQUM7O0FBQ2xELEFBQU8sQUFBRSxBQUFjLEFBQXFCLEFBQU0sQUFBZSxBQUFDOztBQUNsRSxBQUFPLEFBQUUsQUFBbUIsQUFBRSxBQUFJLEFBQUUsQUFBTSxBQUF3QixBQUFDLEFBY25FOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCQUFBOzs4QkFDRTs7YUFBTSxTQUFHLEFBQUksQUFBVSxBQUFDLEFBQ3hCO2FBQU8sVUFBMkQsQUFBRSxBQUFDLEFBZXZFLEFBQUM7OztxQkFiQyxBQUFLLHVCQUFDLEFBQVksTUFBRSxBQUFhLE9BQy9CLEFBQUk7YUFBQyxBQUFNLE9BQUMsQUFBSSxBQUFDLFFBQUcsQUFBSyxBQUFDLEFBQzVCLEFBQUM7OztxQkFFRCxBQUFNLHlCQUFDLEFBQVUsSUFBRSxBQUFvQixRQUFFLEFBQWMsU0FDckQsQUFBSTthQUFDLEFBQU8sUUFBQyxBQUFJLEtBQUMsRUFBRSxBQUFFLFFBQUUsQUFBTSxnQkFBRSxBQUFNLEFBQUUsQUFBQyxBQUFDLEFBQzVDLFFBQUM7OztxQkFFRCxBQUFLLHVCQUFDLEFBQWdCLFNBQ3BCLEFBQUcsQUFBQyxBQUFDLEFBQUk7eUJBQTBCLEFBQUksS0FBQyxBQUFPLEFBQUMsU0FBQyxBQUFDO2dCQUF2QyxBQUFFO2dCQUFFLEFBQU07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LEFBQUssTUFBQyxBQUFVLFlBQUUsQUFBSyxNQUFDLEFBQVUsQUFBQyxBQUFDLEFBQ3JGLEFBQUMsQUFDRjs7OztFQS9FMEMsQUFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjb250ZW50IGZyb20gJy4vY29udGVudCc7XG5pbXBvcnQgKiBhcyB2bSBmcm9tICcuL3ZtJztcblxuaW1wb3J0IHsgSW5zZXJ0aW9uIH0gZnJvbSAnLi4vLi4vdXBzZXJ0JztcbmltcG9ydCB7IFJlZ2lzdGVyIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgKiBhcyBXaXJlRm9ybWF0IGZyb20gJ0BnbGltbWVyL3dpcmUtZm9ybWF0JztcbmltcG9ydCB7IE9wdGlvbiwgU3RhY2ssIE9wYXF1ZSwgZGljdCwgZmlsbE51bGxzLCBFTVBUWV9BUlJBWSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHtcbiAgQ29uc3RhbnRzLFxuICBDb25zdGFudFN0cmluZyxcbiAgQ29uc3RhbnRBcnJheSxcbiAgQ29uc3RhbnRPdGhlcixcbiAgQ29uc3RhbnRCbG9jayxcbiAgQ29uc3RhbnRGdW5jdGlvbixcbn0gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvY29uc3RhbnRzJztcbmltcG9ydCB7IE1vZGlmaWVyTWFuYWdlciB9IGZyb20gJy4uLy4uL21vZGlmaWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQ29tcG9uZW50RGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL2NvbXBvbmVudC9pbnRlcmZhY2VzJztcbmltcG9ydCBFbnZpcm9ubWVudCwgeyBQcm9ncmFtIH0gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgU3ltYm9sVGFibGUsIENvbXBpbGF0aW9uTWV0YSB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQ29tcG9uZW50QnVpbGRlciBhcyBJQ29tcG9uZW50QnVpbGRlciB9IGZyb20gJy4uLy4uL29wY29kZS1idWlsZGVyJztcbmltcG9ydCB7IENvbXBvbmVudEJ1aWxkZXIgfSBmcm9tICcuLi8uLi9jb21waWxlcic7XG5pbXBvcnQgeyBSYXdJbmxpbmVCbG9jaywgQ2xpZW50U2lkZSwgQmxvY2sgfSBmcm9tICcuLi8uLi9zY2FubmVyJztcbmltcG9ydCB7IEludm9rZUR5bmFtaWNMYXlvdXQsIGV4cHIgfSBmcm9tICcuLi8uLi9zeW50YXgvZnVuY3Rpb25zJztcblxuaW1wb3J0IHsgT3AgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBDb21waWxlc0ludG88RT4ge1xuICBjb21waWxlKGJ1aWxkZXI6IE9wY29kZUJ1aWxkZXIpOiBFO1xufVxuXG5leHBvcnQgdHlwZSBSZXByZXNlbnRzPEU+ID0gQ29tcGlsZXNJbnRvPEU+IHwgRTtcblxuZXhwb3J0IHR5cGUgTGFiZWwgPSBzdHJpbmc7XG5cbnR5cGUgVGFyZ2V0T3Bjb2RlID0gT3AuSnVtcCB8IE9wLkp1bXBJZiB8IE9wLkp1bXBVbmxlc3MgfCBPcC5FbnRlckxpc3QgfCBPcC5JdGVyYXRlIHwgT3AuSW1tZWRpYXRlO1xuXG5jbGFzcyBMYWJlbHMge1xuICBsYWJlbHMgPSBkaWN0PG51bWJlcj4oKTtcbiAgdGFyZ2V0czogeyBhdDogbnVtYmVyLCBUYXJnZXQ6IFRhcmdldE9wY29kZSwgdGFyZ2V0OiBzdHJpbmcgfVtdID0gW107XG5cbiAgbGFiZWwobmFtZTogc3RyaW5nLCBpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5sYWJlbHNbbmFtZV0gPSBpbmRleDtcbiAgfVxuXG4gIHRhcmdldChhdDogbnVtYmVyLCBUYXJnZXQ6IFRhcmdldE9wY29kZSwgdGFyZ2V0OiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhcmdldHMucHVzaCh7IGF0LCBUYXJnZXQsIHRhcmdldCB9KTtcbiAgfVxuXG4gIHBhdGNoKG9wY29kZXM6IFByb2dyYW0pOiB2b2lkIHtcbiAgICBmb3IgKGxldCB7IGF0LCBUYXJnZXQsIHRhcmdldCB9IG9mIHRoaXMudGFyZ2V0cykge1xuICAgICAgb3Bjb2Rlcy5zZXQoYXQsIFRhcmdldCwgdGhpcy5sYWJlbHNbdGFyZ2V0XSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNpY09wY29kZUJ1aWxkZXIge1xuICBwcml2YXRlIGxhYmVsc1N0YWNrID0gbmV3IFN0YWNrPExhYmVscz4oKTtcbiAgcHVibGljIGNvbnN0YW50czogQ29uc3RhbnRzO1xuICBwdWJsaWMgc3RhcnQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZW52OiBFbnZpcm9ubWVudCwgcHVibGljIG1ldGE6IENvbXBpbGF0aW9uTWV0YSwgcHVibGljIHByb2dyYW06IFByb2dyYW0pIHtcbiAgICB0aGlzLmNvbnN0YW50cyA9IGVudi5jb25zdGFudHM7XG4gICAgdGhpcy5zdGFydCA9IHByb2dyYW0ubmV4dDtcbiAgfVxuXG4gIGFic3RyYWN0IGNvbXBpbGU8RT4oZXhwcjogUmVwcmVzZW50czxFPik6IEU7XG5cbiAgcHJpdmF0ZSBnZXQgcG9zKCkge1xuICAgIHJldHVybiB0aGlzLnByb2dyYW0uY3VycmVudDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IG5leHRQb3MoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZ3JhbS5uZXh0O1xuICB9XG5cbiAgdXB2YXJzPFQgZXh0ZW5kcyBbT3BhcXVlXT4oY291bnQ6IG51bWJlcik6IFQge1xuICAgIHJldHVybiBmaWxsTnVsbHMoY291bnQpIGFzIFQ7XG4gIH1cblxuICByZXNlcnZlKG5hbWU6IE9wKSB7XG4gICAgdGhpcy5wdXNoKG5hbWUsIDAsIDAsIDApO1xuICB9XG5cbiAgcHVzaChuYW1lOiBPcCwgb3AxID0gMCwgb3AyID0gMCwgb3AzID0gMCkge1xuICAgIHJldHVybiB0aGlzLnByb2dyYW0ucHVzaChuYW1lLCBvcDEsIG9wMiwgb3AzKTtcbiAgfVxuXG4gIGZpbmFsaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucHVzaChPcC5SZXR1cm4pO1xuICB9XG5cbiAgLy8gYXJnc1xuXG4gIHB1c2hBcmdzKHBvc2l0aW9uYWw6IG51bWJlciwgc3ludGhldGljOiBib29sZWFuKSB7XG4gICAgdGhpcy5wdXNoKE9wLlB1c2hBcmdzLCBwb3NpdGlvbmFsLCAoc3ludGhldGljIGFzIGFueSl8MCk7XG4gIH1cblxuICAvLyBoZWxwZXJzXG5cbiAgcHJpdmF0ZSBnZXQgbGFiZWxzKCk6IExhYmVscyB7XG4gICAgcmV0dXJuIHRoaXMubGFiZWxzU3RhY2suY3VycmVudDtcbiAgfVxuXG4gIHN0YXJ0TGFiZWxzKCkge1xuICAgIHRoaXMubGFiZWxzU3RhY2sucHVzaChuZXcgTGFiZWxzKCkpO1xuICB9XG5cbiAgc3RvcExhYmVscygpIHtcbiAgICBsZXQgbGFiZWwgPSB0aGlzLmxhYmVsc1N0YWNrLnBvcCgpO1xuICAgIGxhYmVsLnBhdGNoKHRoaXMucHJvZ3JhbSk7XG4gIH1cblxuICAvLyBjb21wb25lbnRzXG5cbiAgcHVzaENvbXBvbmVudE1hbmFnZXIoZGVmaW5pdGlvbjogQ29tcG9uZW50RGVmaW5pdGlvbjxPcGFxdWU+KSB7XG4gICAgdGhpcy5wdXNoKE9wLlB1c2hDb21wb25lbnRNYW5hZ2VyLCB0aGlzLm90aGVyKGRlZmluaXRpb24pKTtcbiAgfVxuXG4gIHB1c2hEeW5hbWljQ29tcG9uZW50TWFuYWdlcigpIHtcbiAgICB0aGlzLnB1c2goT3AuUHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyKTtcbiAgfVxuXG4gIGluaXRpYWxpemVDb21wb25lbnRTdGF0ZSgpIHtcbiAgICB0aGlzLnB1c2goT3AuSW5pdGlhbGl6ZUNvbXBvbmVudFN0YXRlKTtcbiAgfVxuXG4gIHByZXBhcmVBcmdzKHN0YXRlOiBSZWdpc3Rlcikge1xuICAgIHRoaXMucHVzaChPcC5QcmVwYXJlQXJncywgc3RhdGUpO1xuICB9XG5cbiAgY3JlYXRlQ29tcG9uZW50KHN0YXRlOiBSZWdpc3RlciwgaGFzRGVmYXVsdDogYm9vbGVhbiwgaGFzSW52ZXJzZTogYm9vbGVhbikge1xuICAgIGxldCBmbGFnID0gKDxhbnk+aGFzRGVmYXVsdHwwKSB8ICgoPGFueT5oYXNJbnZlcnNlfDApIDw8IDEpO1xuICAgIHRoaXMucHVzaChPcC5DcmVhdGVDb21wb25lbnQsIGZsYWcsIHN0YXRlKTtcbiAgfVxuXG4gIHJlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvcihzdGF0ZTogUmVnaXN0ZXIpIHtcbiAgICB0aGlzLnB1c2goT3AuUmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yLCBzdGF0ZSk7XG4gIH1cblxuICBiZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uKCkge1xuICAgIHRoaXMucHVzaChPcC5CZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uKTtcbiAgfVxuXG4gIGNvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uKCkge1xuICAgIHRoaXMucHVzaChPcC5Db21taXRDb21wb25lbnRUcmFuc2FjdGlvbik7XG4gIH1cblxuICBwdXNoQ29tcG9uZW50T3BlcmF0aW9ucygpIHtcbiAgICB0aGlzLnB1c2goT3AuUHVzaENvbXBvbmVudE9wZXJhdGlvbnMpO1xuICB9XG5cbiAgZ2V0Q29tcG9uZW50U2VsZihzdGF0ZTogUmVnaXN0ZXIpIHtcbiAgICB0aGlzLnB1c2goT3AuR2V0Q29tcG9uZW50U2VsZiwgc3RhdGUpO1xuICB9XG5cbiAgZ2V0Q29tcG9uZW50TGF5b3V0KHN0YXRlOiBSZWdpc3RlciApIHtcbiAgICB0aGlzLnB1c2goT3AuR2V0Q29tcG9uZW50TGF5b3V0LCBzdGF0ZSk7XG4gIH1cblxuICBkaWRDcmVhdGVFbGVtZW50KHN0YXRlOiBSZWdpc3Rlcikge1xuICAgIHRoaXMucHVzaChPcC5EaWRDcmVhdGVFbGVtZW50LCBzdGF0ZSk7XG4gIH1cblxuICBkaWRSZW5kZXJMYXlvdXQoc3RhdGU6IFJlZ2lzdGVyKSB7XG4gICAgdGhpcy5wdXNoKE9wLkRpZFJlbmRlckxheW91dCwgc3RhdGUpO1xuICB9XG5cbiAgLy8gcGFydGlhbFxuXG4gIGdldFBhcnRpYWxUZW1wbGF0ZSgpIHtcbiAgICB0aGlzLnB1c2goT3AuR2V0UGFydGlhbFRlbXBsYXRlKTtcbiAgfVxuXG4gIHJlc29sdmVNYXliZUxvY2FsKG5hbWU6IHN0cmluZykge1xuICAgIHRoaXMucHVzaChPcC5SZXNvbHZlTWF5YmVMb2NhbCwgdGhpcy5zdHJpbmcobmFtZSkpO1xuICB9XG5cbiAgLy8gZGVidWdnZXJcblxuICBkZWJ1Z2dlcihzeW1ib2xzOiBzdHJpbmdbXSwgZXZhbEluZm86IG51bWJlcltdKSB7XG4gICAgdGhpcy5wdXNoKE9wLkRlYnVnZ2VyLCB0aGlzLmNvbnN0YW50cy5vdGhlcihzeW1ib2xzKSwgdGhpcy5jb25zdGFudHMuYXJyYXkoZXZhbEluZm8pKTtcbiAgfVxuXG4gIC8vIGNvbnRlbnRcblxuICBkeW5hbWljQ29udGVudChPcGNvZGU6IGNvbnRlbnQuQXBwZW5kRHluYW1pY09wY29kZTxJbnNlcnRpb24+KSB7XG4gICAgdGhpcy5wdXNoKE9wLkR5bmFtaWNDb250ZW50LCB0aGlzLm90aGVyKE9wY29kZSkpO1xuICB9XG5cbiAgY2F1dGlvdXNBcHBlbmQoKSB7XG4gICAgdGhpcy5keW5hbWljQ29udGVudChuZXcgY29udGVudC5PcHRpbWl6ZWRDYXV0aW91c0FwcGVuZE9wY29kZSgpKTtcbiAgfVxuXG4gIHRydXN0aW5nQXBwZW5kKCkge1xuICAgIHRoaXMuZHluYW1pY0NvbnRlbnQobmV3IGNvbnRlbnQuT3B0aW1pemVkVHJ1c3RpbmdBcHBlbmRPcGNvZGUoKSk7XG4gIH1cblxuICAvLyBkb21cblxuICB0ZXh0KHRleHQ6IHN0cmluZykge1xuICAgIHRoaXMucHVzaChPcC5UZXh0LCB0aGlzLmNvbnN0YW50cy5zdHJpbmcodGV4dCkpO1xuICB9XG5cbiAgb3BlblByaW1pdGl2ZUVsZW1lbnQodGFnOiBzdHJpbmcpIHtcbiAgICB0aGlzLnB1c2goT3AuT3BlbkVsZW1lbnQsIHRoaXMuY29uc3RhbnRzLnN0cmluZyh0YWcpKTtcbiAgfVxuXG4gIG9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnModGFnOiBzdHJpbmcpIHtcbiAgICB0aGlzLnB1c2goT3AuT3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucywgdGhpcy5jb25zdGFudHMuc3RyaW5nKHRhZykpO1xuICB9XG5cbiAgb3BlbkR5bmFtaWNFbGVtZW50KCkge1xuICAgIHRoaXMucHVzaChPcC5PcGVuRHluYW1pY0VsZW1lbnQpO1xuICB9XG5cbiAgZmx1c2hFbGVtZW50KCkge1xuICAgIHRoaXMucHVzaChPcC5GbHVzaEVsZW1lbnQpO1xuICB9XG5cbiAgY2xvc2VFbGVtZW50KCkge1xuICAgIHRoaXMucHVzaChPcC5DbG9zZUVsZW1lbnQpO1xuICB9XG5cbiAgc3RhdGljQXR0cihfbmFtZTogc3RyaW5nLCBfbmFtZXNwYWNlOiBPcHRpb248c3RyaW5nPiwgX3ZhbHVlOiBzdHJpbmcpIHtcbiAgICBsZXQgbmFtZSA9IHRoaXMuY29uc3RhbnRzLnN0cmluZyhfbmFtZSk7XG4gICAgbGV0IG5hbWVzcGFjZSA9IF9uYW1lc3BhY2UgPyB0aGlzLmNvbnN0YW50cy5zdHJpbmcoX25hbWVzcGFjZSkgOiAwO1xuICAgIGxldCB2YWx1ZSA9IHRoaXMuY29uc3RhbnRzLnN0cmluZyhfdmFsdWUpO1xuXG4gICAgdGhpcy5wdXNoKE9wLlN0YXRpY0F0dHIsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UpO1xuICB9XG5cbiAgZHluYW1pY0F0dHJOUyhfbmFtZTogc3RyaW5nLCBfbmFtZXNwYWNlOiBzdHJpbmcsIHRydXN0aW5nOiBib29sZWFuKSB7XG4gICAgbGV0IG5hbWUgPSB0aGlzLmNvbnN0YW50cy5zdHJpbmcoX25hbWUpO1xuICAgIGxldCBuYW1lc3BhY2UgPSB0aGlzLmNvbnN0YW50cy5zdHJpbmcoX25hbWVzcGFjZSk7XG5cbiAgICB0aGlzLnB1c2goT3AuRHluYW1pY0F0dHJOUywgbmFtZSwgbmFtZXNwYWNlLCAodHJ1c3RpbmcgYXMgYW55KXwwKTtcbiAgfVxuXG4gIGR5bmFtaWNBdHRyKF9uYW1lOiBzdHJpbmcsIHRydXN0aW5nOiBib29sZWFuKSB7XG4gICAgbGV0IG5hbWUgPSB0aGlzLmNvbnN0YW50cy5zdHJpbmcoX25hbWUpO1xuICAgIHRoaXMucHVzaChPcC5EeW5hbWljQXR0ciwgbmFtZSwgKHRydXN0aW5nIGFzIGFueSl8MCk7XG4gIH1cblxuICBjb21tZW50KF9jb21tZW50OiBzdHJpbmcpIHtcbiAgICBsZXQgY29tbWVudCA9IHRoaXMuY29uc3RhbnRzLnN0cmluZyhfY29tbWVudCk7XG4gICAgdGhpcy5wdXNoKE9wLkNvbW1lbnQsIGNvbW1lbnQpO1xuICB9XG5cbiAgbW9kaWZpZXIoX2RlZmluaXRpb246IE1vZGlmaWVyTWFuYWdlcjxPcGFxdWU+KSB7XG4gICAgdGhpcy5wdXNoKE9wLk1vZGlmaWVyLCB0aGlzLm90aGVyKF9kZWZpbml0aW9uKSk7XG4gIH1cblxuICAvLyBsaXN0c1xuXG4gIHB1dEl0ZXJhdG9yKCkge1xuICAgIHRoaXMucHVzaChPcC5QdXRJdGVyYXRvcik7XG4gIH1cblxuICBlbnRlckxpc3Qoc3RhcnQ6IHN0cmluZykge1xuICAgIHRoaXMucmVzZXJ2ZShPcC5FbnRlckxpc3QpO1xuICAgIHRoaXMubGFiZWxzLnRhcmdldCh0aGlzLnBvcywgT3AuRW50ZXJMaXN0LCBzdGFydCk7XG4gIH1cblxuICBleGl0TGlzdCgpIHtcbiAgICB0aGlzLnB1c2goT3AuRXhpdExpc3QpO1xuICB9XG5cbiAgaXRlcmF0ZShicmVha3M6IHN0cmluZykge1xuICAgIHRoaXMucmVzZXJ2ZShPcC5JdGVyYXRlKTtcbiAgICB0aGlzLmxhYmVscy50YXJnZXQodGhpcy5wb3MsIE9wLkl0ZXJhdGUsIGJyZWFrcyk7XG4gIH1cblxuICAvLyBleHByZXNzaW9uc1xuXG4gIHNldFZhcmlhYmxlKHN5bWJvbDogbnVtYmVyKSB7XG4gICAgdGhpcy5wdXNoKE9wLlNldFZhcmlhYmxlLCBzeW1ib2wpO1xuICB9XG5cbiAgZ2V0VmFyaWFibGUoc3ltYm9sOiBudW1iZXIpIHtcbiAgICB0aGlzLnB1c2goT3AuR2V0VmFyaWFibGUsIHN5bWJvbCk7XG4gIH1cblxuICBnZXRQcm9wZXJ0eShrZXk6IHN0cmluZykge1xuICAgIHRoaXMucHVzaChPcC5HZXRQcm9wZXJ0eSwgdGhpcy5zdHJpbmcoa2V5KSk7XG4gIH1cblxuICBnZXRCbG9jayhzeW1ib2w6IG51bWJlcikge1xuICAgIHRoaXMucHVzaChPcC5HZXRCbG9jaywgc3ltYm9sKTtcbiAgfVxuXG4gIGhhc0Jsb2NrKHN5bWJvbDogbnVtYmVyKSB7XG4gICAgdGhpcy5wdXNoKE9wLkhhc0Jsb2NrLCBzeW1ib2wpO1xuICB9XG5cbiAgaGFzQmxvY2tQYXJhbXMoc3ltYm9sOiBudW1iZXIpIHtcbiAgICB0aGlzLnB1c2goT3AuSGFzQmxvY2tQYXJhbXMsIHN5bWJvbCk7XG4gIH1cblxuICBjb25jYXQoc2l6ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5wdXNoKE9wLkNvbmNhdCwgc2l6ZSk7XG4gIH1cblxuICBmdW5jdGlvbihmOiBDbGllbnRTaWRlLkZ1bmN0aW9uRXhwcmVzc2lvbkNhbGxiYWNrPE9wYXF1ZT4pIHtcbiAgICB0aGlzLnB1c2goT3AuRnVuY3Rpb24sIHRoaXMuZnVuYyhmKSk7XG4gIH1cblxuICBsb2FkKHJlZ2lzdGVyOiBSZWdpc3Rlcikge1xuICAgIHRoaXMucHVzaChPcC5Mb2FkLCByZWdpc3Rlcik7XG4gIH1cblxuICBmZXRjaChyZWdpc3RlcjogUmVnaXN0ZXIpIHtcbiAgICB0aGlzLnB1c2goT3AuRmV0Y2gsIHJlZ2lzdGVyKTtcbiAgfVxuXG4gIGR1cChyZWdpc3RlciA9IFJlZ2lzdGVyLnNwLCBvZmZzZXQgPSAwKSB7XG4gICAgcmV0dXJuIHRoaXMucHVzaChPcC5EdXAsIHJlZ2lzdGVyLCBvZmZzZXQpO1xuICB9XG5cbiAgcG9wKGNvdW50ID0gMSkge1xuICAgIHJldHVybiB0aGlzLnB1c2goT3AuUG9wLCBjb3VudCk7XG4gIH1cblxuICAvLyB2bVxuXG4gIHB1c2hSZW1vdGVFbGVtZW50KCkge1xuICAgIHRoaXMucHVzaChPcC5QdXNoUmVtb3RlRWxlbWVudCk7XG4gIH1cblxuICBwb3BSZW1vdGVFbGVtZW50KCkge1xuICAgIHRoaXMucHVzaChPcC5Qb3BSZW1vdGVFbGVtZW50KTtcbiAgfVxuXG4gIGxhYmVsKG5hbWU6IHN0cmluZykge1xuICAgIHRoaXMubGFiZWxzLmxhYmVsKG5hbWUsIHRoaXMubmV4dFBvcyk7XG4gIH1cblxuICBwdXNoUm9vdFNjb3BlKHN5bWJvbHM6IG51bWJlciwgYmluZENhbGxlclNjb3BlOiBib29sZWFuKSB7XG4gICAgdGhpcy5wdXNoKE9wLlJvb3RTY29wZSwgc3ltYm9scywgPGFueT5iaW5kQ2FsbGVyU2NvcGV8MCk7XG4gIH1cblxuICBwdXNoQ2hpbGRTY29wZSgpIHtcbiAgICB0aGlzLnB1c2goT3AuQ2hpbGRTY29wZSk7XG4gIH1cblxuICBwb3BTY29wZSgpIHtcbiAgICB0aGlzLnB1c2goT3AuUG9wU2NvcGUpO1xuICB9XG5cbiAgcmV0dXJuVG8obGFiZWw6IHN0cmluZykge1xuICAgIHRoaXMucmVzZXJ2ZShPcC5JbW1lZGlhdGUpO1xuICAgIHRoaXMubGFiZWxzLnRhcmdldCh0aGlzLnBvcywgT3AuSW1tZWRpYXRlLCBsYWJlbCk7XG4gICAgdGhpcy5sb2FkKFJlZ2lzdGVyLnJhKTtcbiAgfVxuXG4gIHB1c2hEeW5hbWljU2NvcGUoKSB7XG4gICAgdGhpcy5wdXNoKE9wLlB1c2hEeW5hbWljU2NvcGUpO1xuICB9XG5cbiAgcG9wRHluYW1pY1Njb3BlKCkge1xuICAgIHRoaXMucHVzaChPcC5Qb3BEeW5hbWljU2NvcGUpO1xuICB9XG5cbiAgcHVzaEltbWVkaWF0ZTxUPih2YWx1ZTogVCkge1xuICAgIHRoaXMucHVzaChPcC5Db25zdGFudCwgdGhpcy5vdGhlcih2YWx1ZSkpO1xuICB9XG5cbiAgcHJpbWl0aXZlKF9wcmltaXRpdmU6IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQgfCBib29sZWFuKSB7XG4gICAgbGV0IGZsYWc6IDAgfCAxIHwgMiA9IDA7XG4gICAgbGV0IHByaW1pdGl2ZTogbnVtYmVyO1xuICAgIHN3aXRjaCAodHlwZW9mIF9wcmltaXRpdmUpIHtcbiAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgIHByaW1pdGl2ZSA9IF9wcmltaXRpdmUgYXMgbnVtYmVyO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgIHByaW1pdGl2ZSA9IHRoaXMuc3RyaW5nKF9wcmltaXRpdmUgYXMgc3RyaW5nKTtcbiAgICAgICAgZmxhZyA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgIHByaW1pdGl2ZSA9IChfcHJpbWl0aXZlIGFzIGFueSkgfCAwO1xuICAgICAgICBmbGFnID0gMjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICAvLyBhc3N1bWUgbnVsbFxuICAgICAgICBwcmltaXRpdmUgPSAyO1xuICAgICAgICBmbGFnID0gMjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd1bmRlZmluZWQnOlxuICAgICAgICBwcmltaXRpdmUgPSAzO1xuICAgICAgICBmbGFnID0gMjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcHJpbWl0aXZlIHBhc3NlZCB0byBwdXNoUHJpbWl0aXZlJyk7XG4gICAgfVxuXG4gICAgdGhpcy5wdXNoKE9wLlByaW1pdGl2ZVJlZmVyZW5jZSwgKGZsYWcgPDwgMzApIHwgcHJpbWl0aXZlKTtcbiAgfVxuXG4gIGhlbHBlcihmdW5jOiBGdW5jdGlvbikge1xuICAgIHRoaXMucHVzaChPcC5IZWxwZXIsIHRoaXMuZnVuYyhmdW5jKSk7XG4gIH1cblxuICBwdXNoQmxvY2soYmxvY2s6IE9wdGlvbjxCbG9jaz4pIHtcbiAgICB0aGlzLnB1c2goT3AuUHVzaEJsb2NrLCB0aGlzLmJsb2NrKGJsb2NrKSk7XG4gIH1cblxuICBiaW5kRHluYW1pY1Njb3BlKF9uYW1lczogc3RyaW5nW10pIHtcbiAgICB0aGlzLnB1c2goT3AuQmluZER5bmFtaWNTY29wZSwgdGhpcy5uYW1lcyhfbmFtZXMpKTtcbiAgfVxuXG4gIGVudGVyKGFyZ3M6IG51bWJlcikge1xuICAgIHRoaXMucHVzaChPcC5FbnRlciwgYXJncyk7XG4gIH1cblxuICBleGl0KCkge1xuICAgIHRoaXMucHVzaChPcC5FeGl0KTtcbiAgfVxuXG4gIHJldHVybigpIHtcbiAgICB0aGlzLnB1c2goT3AuUmV0dXJuKTtcbiAgfVxuXG4gIHB1c2hGcmFtZSgpIHtcbiAgICB0aGlzLnB1c2goT3AuUHVzaEZyYW1lKTtcbiAgfVxuXG4gIHBvcEZyYW1lKCkge1xuICAgIHRoaXMucHVzaChPcC5Qb3BGcmFtZSk7XG4gIH1cblxuICBjb21waWxlRHluYW1pY0Jsb2NrKCk6IHZvaWQge1xuICAgIHRoaXMucHVzaChPcC5Db21waWxlRHluYW1pY0Jsb2NrKTtcbiAgfVxuXG4gIGludm9rZUR5bmFtaWMoaW52b2tlcjogdm0uRHluYW1pY0ludm9rZXI8U3ltYm9sVGFibGU+KTogdm9pZCB7XG4gICAgdGhpcy5wdXNoKE9wLkludm9rZUR5bmFtaWMsIHRoaXMub3RoZXIoaW52b2tlcikpO1xuICB9XG5cbiAgaW52b2tlU3RhdGljKGJsb2NrOiBCbG9jaywgY2FsbGVyQ291bnQgPSAwKTogdm9pZCB7XG4gICAgbGV0IHsgcGFyYW1ldGVycyB9ID0gYmxvY2suc3ltYm9sVGFibGU7XG4gICAgbGV0IGNhbGxlZUNvdW50ID0gcGFyYW1ldGVycy5sZW5ndGg7XG4gICAgbGV0IGNvdW50ID0gTWF0aC5taW4oY2FsbGVyQ291bnQsIGNhbGxlZUNvdW50KTtcblxuICAgIHRoaXMucHVzaEZyYW1lKCk7XG5cbiAgICBpZiAoY291bnQpIHtcbiAgICAgIHRoaXMucHVzaENoaWxkU2NvcGUoKTtcblxuICAgICAgZm9yIChsZXQgaT0wOyBpPGNvdW50OyBpKyspIHtcbiAgICAgICAgdGhpcy5kdXAoUmVnaXN0ZXIuZnAsIGNhbGxlckNvdW50IC0gaSk7XG4gICAgICAgIHRoaXMuc2V0VmFyaWFibGUocGFyYW1ldGVyc1tpXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IF9ibG9jayA9IHRoaXMuY29uc3RhbnRzLmJsb2NrKGJsb2NrKTtcbiAgICB0aGlzLnB1c2goT3AuSW52b2tlU3RhdGljLCBfYmxvY2spO1xuXG4gICAgaWYgKGNvdW50KSB7XG4gICAgICB0aGlzLnBvcFNjb3BlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5wb3BGcmFtZSgpO1xuICB9XG5cbiAgdGVzdCh0ZXN0RnVuYzogJ2NvbnN0JyB8ICdzaW1wbGUnIHwgJ2Vudmlyb25tZW50JyB8IHZtLlRlc3RGdW5jdGlvbikge1xuICAgIGxldCBfZnVuYzogdm0uVGVzdEZ1bmN0aW9uO1xuXG4gICAgaWYgKHRlc3RGdW5jID09PSAnY29uc3QnKSB7XG4gICAgICBfZnVuYyA9IHZtLkNvbnN0VGVzdDtcbiAgICB9IGVsc2UgaWYgKHRlc3RGdW5jID09PSAnc2ltcGxlJykge1xuICAgICAgX2Z1bmMgPSB2bS5TaW1wbGVUZXN0O1xuICAgIH0gZWxzZSBpZiAodGVzdEZ1bmMgPT09ICdlbnZpcm9ubWVudCcpIHtcbiAgICAgIF9mdW5jID0gdm0uRW52aXJvbm1lbnRUZXN0O1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHRlc3RGdW5jID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBfZnVuYyA9IHRlc3RGdW5jO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VucmVhY2hhYmxlJyk7XG4gICAgfVxuXG4gICAgbGV0IGZ1bmMgPSB0aGlzLmNvbnN0YW50cy5mdW5jdGlvbihfZnVuYyk7XG4gICAgdGhpcy5wdXNoKE9wLlRlc3QsIGZ1bmMpO1xuICB9XG5cbiAganVtcCh0YXJnZXQ6IHN0cmluZykge1xuICAgIHRoaXMucmVzZXJ2ZShPcC5KdW1wKTtcbiAgICB0aGlzLmxhYmVscy50YXJnZXQodGhpcy5wb3MsIE9wLkp1bXAsIHRhcmdldCk7XG4gIH1cblxuICBqdW1wSWYodGFyZ2V0OiBzdHJpbmcpIHtcbiAgICB0aGlzLnJlc2VydmUoT3AuSnVtcElmKTtcbiAgICB0aGlzLmxhYmVscy50YXJnZXQodGhpcy5wb3MsIE9wLkp1bXBJZiwgdGFyZ2V0KTtcbiAgfVxuXG4gIGp1bXBVbmxlc3ModGFyZ2V0OiBzdHJpbmcpIHtcbiAgICB0aGlzLnJlc2VydmUoT3AuSnVtcFVubGVzcyk7XG4gICAgdGhpcy5sYWJlbHMudGFyZ2V0KHRoaXMucG9zLCBPcC5KdW1wVW5sZXNzLCB0YXJnZXQpO1xuICB9XG5cbiAgc3RyaW5nKF9zdHJpbmc6IHN0cmluZyk6IENvbnN0YW50U3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb25zdGFudHMuc3RyaW5nKF9zdHJpbmcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG5hbWVzKF9uYW1lczogc3RyaW5nW10pOiBDb25zdGFudEFycmF5IHtcbiAgICBsZXQgbmFtZXMgPSBfbmFtZXMubWFwKG4gPT4gdGhpcy5jb25zdGFudHMuc3RyaW5nKG4pKTtcbiAgICByZXR1cm4gdGhpcy5jb25zdGFudHMuYXJyYXkobmFtZXMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN5bWJvbHMoc3ltYm9sczogbnVtYmVyW10pOiBDb25zdGFudEFycmF5IHtcbiAgICByZXR1cm4gdGhpcy5jb25zdGFudHMuYXJyYXkoc3ltYm9scyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3RoZXIodmFsdWU6IE9wYXF1ZSk6IENvbnN0YW50T3RoZXIge1xuICAgIHJldHVybiB0aGlzLmNvbnN0YW50cy5vdGhlcih2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYmxvY2soYmxvY2s6IE9wdGlvbjxCbG9jaz4pOiBDb25zdGFudEJsb2NrIHtcbiAgICByZXR1cm4gYmxvY2sgPyB0aGlzLmNvbnN0YW50cy5ibG9jayhibG9jaykgOiAwO1xuICB9XG5cbiAgcHJvdGVjdGVkIGZ1bmMoZnVuYzogRnVuY3Rpb24pOiBDb25zdGFudEZ1bmN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5jb25zdGFudHMuZnVuY3Rpb24oZnVuYyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNDb21waWxhYmxlRXhwcmVzc2lvbjxFPihleHByOiBSZXByZXNlbnRzPEU+KTogZXhwciBpcyBDb21waWxlc0ludG88RT4ge1xuICByZXR1cm4gZXhwciAmJiB0eXBlb2YgZXhwclsnY29tcGlsZSddID09PSAnZnVuY3Rpb24nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBPcGNvZGVCdWlsZGVyIGV4dGVuZHMgQmFzaWNPcGNvZGVCdWlsZGVyIHtcbiAgcHVibGljIGNvbXBvbmVudDogSUNvbXBvbmVudEJ1aWxkZXI7XG5cbiAgY29uc3RydWN0b3IoZW52OiBFbnZpcm9ubWVudCwgbWV0YTogQ29tcGlsYXRpb25NZXRhLCBwcm9ncmFtOiBQcm9ncmFtID0gZW52LnByb2dyYW0pIHtcbiAgICBzdXBlcihlbnYsIG1ldGEsIHByb2dyYW0pO1xuICAgIHRoaXMuY29tcG9uZW50ID0gbmV3IENvbXBvbmVudEJ1aWxkZXIodGhpcyk7XG4gIH1cblxuICBjb21waWxlQXJncyhwYXJhbXM6IE9wdGlvbjxXaXJlRm9ybWF0LkNvcmUuUGFyYW1zPiwgaGFzaDogT3B0aW9uPFdpcmVGb3JtYXQuQ29yZS5IYXNoPiwgc3ludGhldGljOiBib29sZWFuKSB7XG4gICAgbGV0IHBvc2l0aW9uYWwgPSAwO1xuXG4gICAgaWYgKHBhcmFtcykge1xuICAgICAgcGFyYW1zLmZvckVhY2gocCA9PiBleHByKHAsIHRoaXMpKTtcbiAgICAgIHBvc2l0aW9uYWwgPSBwYXJhbXMubGVuZ3RoO1xuICAgIH1cblxuICAgIGxldCBuYW1lcyA9IEVNUFRZX0FSUkFZO1xuXG4gICAgaWYgKGhhc2gpIHtcbiAgICAgIG5hbWVzID0gaGFzaFswXTtcbiAgICAgIGhhc2hbMV0uZm9yRWFjaCh2ID0+IGV4cHIodiwgdGhpcykpO1xuICAgIH1cblxuICAgIHRoaXMucHVzaEltbWVkaWF0ZShuYW1lcyk7XG4gICAgdGhpcy5wdXNoQXJncyhwb3NpdGlvbmFsLCBzeW50aGV0aWMpO1xuICB9XG5cbiAgY29tcGlsZTxFPihleHByOiBSZXByZXNlbnRzPEU+KTogRSB7XG4gICAgaWYgKGlzQ29tcGlsYWJsZUV4cHJlc3Npb24oZXhwcikpIHtcbiAgICAgIHJldHVybiBleHByLmNvbXBpbGUodGhpcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBleHByO1xuICAgIH1cbiAgfVxuXG4gIGd1YXJkZWRDYXV0aW91c0FwcGVuZChleHByZXNzaW9uOiBXaXJlRm9ybWF0LkV4cHJlc3Npb24pIHtcbiAgICBleHByKGV4cHJlc3Npb24sIHRoaXMpO1xuICAgIHRoaXMuZHluYW1pY0NvbnRlbnQobmV3IGNvbnRlbnQuR3VhcmRlZENhdXRpb3VzQXBwZW5kT3Bjb2RlKCkpO1xuICB9XG5cbiAgZ3VhcmRlZFRydXN0aW5nQXBwZW5kKGV4cHJlc3Npb246IFdpcmVGb3JtYXQuRXhwcmVzc2lvbikge1xuICAgIGV4cHIoZXhwcmVzc2lvbiwgdGhpcyk7XG4gICAgdGhpcy5keW5hbWljQ29udGVudChuZXcgY29udGVudC5HdWFyZGVkVHJ1c3RpbmdBcHBlbmRPcGNvZGUoKSk7XG4gIH1cblxuICBpbnZva2VDb21wb25lbnQoYXR0cnM6IE9wdGlvbjxSYXdJbmxpbmVCbG9jaz4sIHBhcmFtczogT3B0aW9uPFdpcmVGb3JtYXQuQ29yZS5QYXJhbXM+LCBoYXNoOiBPcHRpb248V2lyZUZvcm1hdC5Db3JlLkhhc2g+LCBibG9jazogT3B0aW9uPEJsb2NrPiwgaW52ZXJzZTogT3B0aW9uPEJsb2NrPiA9IG51bGwpIHtcbiAgICB0aGlzLmluaXRpYWxpemVDb21wb25lbnRTdGF0ZSgpO1xuXG4gICAgdGhpcy5mZXRjaChSZWdpc3Rlci5zMCk7XG4gICAgdGhpcy5kdXAoUmVnaXN0ZXIuc3AsIDEpO1xuICAgIHRoaXMubG9hZChSZWdpc3Rlci5zMCk7XG5cbiAgICB0aGlzLnB1c2hCbG9jayhibG9jayk7XG4gICAgdGhpcy5wdXNoQmxvY2soaW52ZXJzZSk7XG5cbiAgICB0aGlzLmNvbXBpbGVBcmdzKHBhcmFtcywgaGFzaCwgZmFsc2UpO1xuICAgIHRoaXMucHJlcGFyZUFyZ3MoUmVnaXN0ZXIuczApO1xuXG4gICAgdGhpcy5iZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uKCk7XG4gICAgdGhpcy5wdXNoRHluYW1pY1Njb3BlKCk7XG4gICAgdGhpcy5jcmVhdGVDb21wb25lbnQoUmVnaXN0ZXIuczAsIHRydWUsIGludmVyc2UgPT09IG51bGwpO1xuICAgIHRoaXMucmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yKFJlZ2lzdGVyLnMwKTtcblxuICAgIHRoaXMuZ2V0Q29tcG9uZW50U2VsZihSZWdpc3Rlci5zMCk7XG4gICAgdGhpcy5nZXRDb21wb25lbnRMYXlvdXQoUmVnaXN0ZXIuczApO1xuICAgIHRoaXMuaW52b2tlRHluYW1pYyhuZXcgSW52b2tlRHluYW1pY0xheW91dChhdHRycyAmJiBhdHRycy5zY2FuKCkpKTtcbiAgICB0aGlzLnBvcEZyYW1lKCk7XG5cbiAgICB0aGlzLnBvcFNjb3BlKCk7XG4gICAgdGhpcy5wb3BEeW5hbWljU2NvcGUoKTtcbiAgICB0aGlzLmNvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uKCk7XG5cbiAgICB0aGlzLmxvYWQoUmVnaXN0ZXIuczApO1xuICB9XG5cbiAgdGVtcGxhdGUoYmxvY2s6IE9wdGlvbjxXaXJlRm9ybWF0LlNlcmlhbGl6ZWRJbmxpbmVCbG9jaz4pOiBPcHRpb248UmF3SW5saW5lQmxvY2s+IHtcbiAgICBpZiAoIWJsb2NrKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gbmV3IFJhd0lubGluZUJsb2NrKHRoaXMuZW52LCB0aGlzLm1ldGEsIGJsb2NrLnN0YXRlbWVudHMsIGJsb2NrLnBhcmFtZXRlcnMpO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIEJsb2NrQ2FsbGJhY2sgPSAoZHNsOiBPcGNvZGVCdWlsZGVyLCBCRUdJTjogTGFiZWwsIEVORDogTGFiZWwpID0+IHZvaWQ7XG4iXX0=

@@ -215,10 +215,2 @@ "use strict";

UpdateComponentOpcode.prototype.toJSON = function toJSON() {
return {
guid: this._guid,
type: this.type,
args: [JSON.stringify(this.name)]
};
};
return UpdateComponentOpcode;

@@ -253,2 +245,2 @@ }(_opcodes.UpdatingOpcode);

}(_opcodes.UpdatingOpcode);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxBQUFPLEFBQUUsQUFBYyxBQUFrQixBQUFjLEFBQUUsQUFBTSxBQUFlLEFBQUM7O0FBQy9FLEFBQU8sQUFBRSxBQUFNLEFBQUUsQUFBTSxBQUFNLEFBQUM7O0FBRTlCLEFBQU8sQUFBK0IsQUFBTSxBQUFvQixBQUFDOzs7O0FBSWpFLEFBQU8sQUFBRSxBQUEwQixBQUFFLEFBQU0sQUFBTyxBQUFDOztBQUVuRCxBQUFPLEFBQ0wsQUFBWSxBQUNaLEFBQWMsQUFHZCxBQUFPLEFBQ1AsQUFBTyxBQUNSLEFBQU0sQUFBb0IsQUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTVCLEFBQWMsd0JBQUMsQUFBRyxJQUFDLEdBQXVCLDRCQUFFLFVBQUMsQUFBRSxBQUFFO1FBQU8sQUFBVyxBQUFFLG1CQUFsQixBQUFHLEFBQ3BEOztRQUFJLEFBQVUsYUFBRyxBQUFFLEdBQUMsQUFBUyxVQUFDLEFBQVEsU0FBOEIsQUFBVyxBQUFDLEFBQUMsQUFDakY7UUFBSSxBQUFLLFFBQUcsQUFBRSxHQUFDLEFBQUssQUFBQyxBQUVyQixBQUFLO1VBQUMsQUFBSSxLQUFDLEFBQVUsQUFBQyxBQUFDLEFBQ3ZCLEFBQUs7VUFBQyxBQUFJLEtBQUMsQUFBVSxXQUFDLEFBQU8sQUFBQyxBQUFDLEFBQ2pDLEFBQUMsQUFBQyxBQUFDOztBQUVILEFBQWMsd0JBQUMsQUFBRyxJQUFDLEdBQThCLG1DQUFFLEFBQUUsY0FDbkQ7UUFBSSxBQUFLLFFBQUcsQUFBRSxHQUFDLEFBQUssQUFBQyxBQUNyQjtRQUFJLEFBQVMsWUFBRyxBQUFLLE1BQUMsQUFBRyxBQUF1RCxBQUFDLEFBQ2pGO1FBQUksQUFBSyxRQUFHLEFBQU8sd0JBQUMsQUFBUyxBQUFDLGFBQUcsQUFBUyxZQUFHLEFBQUksQUFBYyw4QkFBOEIsQUFBUyxBQUFD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QUNmLEFBQUk7a0JBQUUsQ0FBQyxBQUFJLEtBQUMsQUFBUyxVQUFDLEFBQUksS0FIckIsQUFHc0IsQUFBSSxBQUFDLEFBQUMsQUFDbEMsQUFBQyxBQUNKLEFBQUMsQUFDRjtBQUxLLEFBQUk7Ozs7QUE3QmlDLEFBQWMsQUFvQ3pELEFBQU07SUFBNkI7cUNBSWpDOzttQ0FDVSxBQUFvQyxTQUNwQyxBQUFvQixXQUNwQixBQUFjOzs7c0RBRXRCLEFBQUssQUFBRSxBQUFDLHNCQUpBOztlQUFPLFVBQVAsQUFBTyxBQUE2QixBQUNwQztlQUFTLFlBQVQsQUFBUyxBQUFXLEFBQ3BCO2VBQU0sU0FOVCxBQU1HLEFBQU0sQUFBUTtlQU5iLE9BQUcsQUFBbUIsQUFBQyxBQUMzQjtlQUFHLEFBQVEsQUFBWSxBQUFDLEFBUS9CO2VBQUM7OztvQ0FFRCxBQUFRLDZCQUFDLEFBQWMsSUFDckIsQUFBSTtZQUFFLEFBQU87WUFBRSxBQUFTO1lBQUUsQUFBTSxBQUFFLFNBQUcsQUFBSSxBQUFDLEtBRTFDLEFBQU87O2dCQUFDLEFBQWUsZ0JBQUMsQUFBUyxXQUFFLEFBQU0sQUFBQyxBQUFDLEFBRTNDLEFBQUU7V0FBQyxBQUFHLElBQUMsQUFBUyxVQUFDLEFBQVMsV0FBRSxBQUFPLEFBQUMsQUFBQyxBQUN2QyxBQUFDLEFBQ0Y7Ozs7QUFuQjBDLEFBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBUFBFTkRfT1BDT0RFUywgT3AsIE9wY29kZUpTT04sIFVwZGF0aW5nT3Bjb2RlIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBBc3NlcnQgfSBmcm9tICcuL3ZtJztcbmltcG9ydCB7IFVwZGF0aW5nVk0gfSBmcm9tICcuLi8uLi92bSc7XG5pbXBvcnQgQVJHUywgeyBBcmd1bWVudHMsIElBcmd1bWVudHMgfSBmcm9tICcuLi8uLi92bS9hcmd1bWVudHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBDb21wb25lbnRNYW5hZ2VyLCBDb21wb25lbnREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50L2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRHluYW1pY1Njb3BlIH0gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IEJvdW5kcyBmcm9tICcuLi8uLi9ib3VuZHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50RWxlbWVudE9wZXJhdGlvbnMgfSBmcm9tICcuL2RvbSc7XG5pbXBvcnQgeyBPcGFxdWUgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7XG4gIENPTlNUQU5UX1RBRyxcbiAgUmVmZXJlbmNlQ2FjaGUsXG4gIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsXG4gIFRhZyxcbiAgY29tYmluZSxcbiAgaXNDb25zdFxufSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUHVzaENvbXBvbmVudE1hbmFnZXIsICh2bSwgeyBvcDE6IF9kZWZpbml0aW9uIH0pID0+IHtcbiAgbGV0IGRlZmluaXRpb24gPSB2bS5jb25zdGFudHMuZ2V0T3RoZXI8Q29tcG9uZW50RGVmaW5pdGlvbjxPcGFxdWU+PihfZGVmaW5pdGlvbik7XG4gIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuXG4gIHN0YWNrLnB1c2goZGVmaW5pdGlvbik7XG4gIHN0YWNrLnB1c2goZGVmaW5pdGlvbi5tYW5hZ2VyKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyLCB2bSA9PiB7XG4gIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICBsZXQgcmVmZXJlbmNlID0gc3RhY2sucG9wPFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8Q29tcG9uZW50RGVmaW5pdGlvbjxPcGFxdWU+Pj4oKTtcbiAgbGV0IGNhY2hlID0gaXNDb25zdChyZWZlcmVuY2UpID8gdW5kZWZpbmVkIDogbmV3IFJlZmVyZW5jZUNhY2hlPENvbXBvbmVudERlZmluaXRpb248T3BhcXVlPj4ocmVmZXJlbmNlKTtcbiAgbGV0IGRlZmluaXRpb24gPSBjYWNoZSA/IGNhY2hlLnBlZWsoKSA6IHJlZmVyZW5jZS52YWx1ZSgpO1xuXG4gIHN0YWNrLnB1c2goZGVmaW5pdGlvbik7XG4gIHN0YWNrLnB1c2goZGVmaW5pdGlvbi5tYW5hZ2VyKTtcblxuICBpZiAoY2FjaGUpIHtcbiAgICB2bS51cGRhdGVXaXRoKG5ldyBBc3NlcnQoY2FjaGUpKTtcbiAgfVxufSk7XG5cbmludGVyZmFjZSBJbml0aWFsQ29tcG9uZW50U3RhdGU8VD4ge1xuICBkZWZpbml0aW9uOiBDb21wb25lbnREZWZpbml0aW9uPFQ+O1xuICBtYW5hZ2VyOiBDb21wb25lbnRNYW5hZ2VyPFQ+O1xuICBjb21wb25lbnQ6IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50U3RhdGU8VD4ge1xuICBkZWZpbml0aW9uOiBDb21wb25lbnREZWZpbml0aW9uPFQ+O1xuICBtYW5hZ2VyOiBDb21wb25lbnRNYW5hZ2VyPFQ+O1xuICBjb21wb25lbnQ6IFQ7XG59XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5Jbml0aWFsaXplQ29tcG9uZW50U3RhdGUsIHZtID0+IHtcbiAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG5cbiAgbGV0IG1hbmFnZXIgPSBzdGFjay5wb3AoKTtcbiAgbGV0IGRlZmluaXRpb24gPSBzdGFjay5wb3AoKTtcblxuICBzdGFjay5wdXNoKHsgZGVmaW5pdGlvbiwgbWFuYWdlciwgY29tcG9uZW50OiBudWxsIH0pO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5QdXNoQXJncywgKHZtLCB7IG9wMTogcG9zaXRpb25hbCwgb3AyOiBzeW50aGV0aWMgfSkgPT4ge1xuICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgQVJHUy5zZXR1cChzdGFjaywgcG9zaXRpb25hbCwgISFzeW50aGV0aWMpO1xuICBzdGFjay5wdXNoKEFSR1MpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5QcmVwYXJlQXJncywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gIGxldCB7IGRlZmluaXRpb24sIG1hbmFnZXIgfSA9IHZtLmZldGNoVmFsdWU8SW5pdGlhbENvbXBvbmVudFN0YXRlPE9wYXF1ZT4+KF9zdGF0ZSk7XG4gIGxldCBhcmdzID0gc3RhY2sucG9wPEFyZ3VtZW50cz4oKTtcblxuICBsZXQgcHJlcGFyZWRBcmdzID0gbWFuYWdlci5wcmVwYXJlQXJncyhkZWZpbml0aW9uLCBhcmdzKTtcblxuICBpZiAocHJlcGFyZWRBcmdzKSB7XG4gICAgYXJncy5jbGVhcigpO1xuXG4gICAgbGV0IHsgcG9zaXRpb25hbCwgbmFtZWQgfSA9IHByZXBhcmVkQXJncztcblxuICAgIGxldCBwb3NpdGlvbmFsQ291bnQgPSBwb3NpdGlvbmFsLmxlbmd0aDtcblxuICAgIGZvciAobGV0IGk9MDsgaTxwb3NpdGlvbmFsQ291bnQ7IGkrKykge1xuICAgICAgc3RhY2sucHVzaChwb3NpdGlvbmFsW2ldKTtcbiAgICB9XG5cbiAgICBsZXQgbmFtZXMgPSBPYmplY3Qua2V5cyhuYW1lZCk7XG4gICAgbGV0IG5hbWVkQ291bnQgPSBuYW1lcy5sZW5ndGg7XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8bmFtZWRDb3VudDsgaSsrKSB7XG4gICAgICBzdGFjay5wdXNoKG5hbWVkW25hbWVzW2ldXSk7XG4gICAgfVxuXG4gICAgc3RhY2sucHVzaChuYW1lcyk7XG4gICAgYXJncy5zZXR1cChzdGFjaywgcG9zaXRpb25hbENvdW50LCB0cnVlKTtcbiAgfVxuXG4gIHN0YWNrLnB1c2goYXJncyk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkNyZWF0ZUNvbXBvbmVudCwgKHZtLCB7IG9wMTogZmxhZ3MsIG9wMjogX3N0YXRlIH0pID0+IHtcbiAgbGV0IGRlZmluaXRpb24sIG1hbmFnZXI7XG4gIGxldCBhcmdzID0gdm0uc3RhY2sucG9wPElBcmd1bWVudHM+KCk7XG4gIGxldCBkeW5hbWljU2NvcGUgPSB2bS5keW5hbWljU2NvcGUoKTtcbiAgbGV0IHN0YXRlID0geyBkZWZpbml0aW9uLCBtYW5hZ2VyIH0gPSB2bS5mZXRjaFZhbHVlPEluaXRpYWxDb21wb25lbnRTdGF0ZTxPcGFxdWU+Pihfc3RhdGUpO1xuXG4gIGxldCBoYXNEZWZhdWx0QmxvY2sgPSBmbGFncyAmIDBiMDE7XG5cbiAgbGV0IGNvbXBvbmVudCA9IG1hbmFnZXIuY3JlYXRlKHZtLmVudiwgZGVmaW5pdGlvbiwgYXJncywgZHluYW1pY1Njb3BlLCB2bS5nZXRTZWxmKCksICEhaGFzRGVmYXVsdEJsb2NrKTtcbiAgKHN0YXRlIGFzIENvbXBvbmVudFN0YXRlPHR5cGVvZiBjb21wb25lbnQ+KS5jb21wb25lbnQgPSBjb21wb25lbnQ7XG5cbiAgdm0udXBkYXRlV2l0aChuZXcgVXBkYXRlQ29tcG9uZW50T3Bjb2RlKGFyZ3MudGFnLCBkZWZpbml0aW9uLm5hbWUsIGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlKSk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlJlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvciwgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlPENvbXBvbmVudFN0YXRlPE9wYXF1ZT4+KF9zdGF0ZSk7XG5cbiAgbGV0IGRlc3RydWN0b3IgPSBtYW5hZ2VyLmdldERlc3RydWN0b3IoY29tcG9uZW50KTtcbiAgaWYgKGRlc3RydWN0b3IpIHZtLm5ld0Rlc3Ryb3lhYmxlKGRlc3RydWN0b3IpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5CZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uLCB2bSA9PiB7XG4gIHZtLmJlZ2luQ2FjaGVHcm91cCgpO1xuICB2bS5lbGVtZW50cygpLnB1c2hTaW1wbGVCbG9jaygpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5QdXNoQ29tcG9uZW50T3BlcmF0aW9ucywgdm0gPT4ge1xuICB2bS5zdGFjay5wdXNoKG5ldyBDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyh2bS5lbnYpKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuRGlkQ3JlYXRlRWxlbWVudCwgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlPENvbXBvbmVudFN0YXRlPE9wYXF1ZT4+KF9zdGF0ZSk7XG5cbiAgbGV0IGFjdGlvbiA9ICdEaWRDcmVhdGVFbGVtZW50T3Bjb2RlI2V2YWx1YXRlJztcbiAgbWFuYWdlci5kaWRDcmVhdGVFbGVtZW50KGNvbXBvbmVudCwgdm0uZWxlbWVudHMoKS5leHBlY3RDb25zdHJ1Y3RpbmcoYWN0aW9uKSwgdm0uZWxlbWVudHMoKS5leHBlY3RPcGVyYXRpb25zKGFjdGlvbikpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5HZXRDb21wb25lbnRTZWxmLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICBsZXQgc3RhdGUgPSB2bS5mZXRjaFZhbHVlPENvbXBvbmVudFN0YXRlPE9wYXF1ZT4+KF9zdGF0ZSk7XG4gIHZtLnN0YWNrLnB1c2goc3RhdGUubWFuYWdlci5nZXRTZWxmKHN0YXRlLmNvbXBvbmVudCkpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5HZXRDb21wb25lbnRMYXlvdXQsICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gIGxldCB7IG1hbmFnZXIsIGRlZmluaXRpb24sIGNvbXBvbmVudCB9ID0gdm0uZmV0Y2hWYWx1ZTxDb21wb25lbnRTdGF0ZTxPcGFxdWU+Pihfc3RhdGUpO1xuICB2bS5zdGFjay5wdXNoKG1hbmFnZXIubGF5b3V0Rm9yKGRlZmluaXRpb24sIGNvbXBvbmVudCwgdm0uZW52KSk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkRpZFJlbmRlckxheW91dCwgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlPENvbXBvbmVudFN0YXRlPE9wYXF1ZT4+KF9zdGF0ZSk7XG4gIGxldCBib3VuZHMgPSB2bS5lbGVtZW50cygpLnBvcEJsb2NrKCk7XG5cbiAgbWFuYWdlci5kaWRSZW5kZXJMYXlvdXQoY29tcG9uZW50LCBib3VuZHMpO1xuXG4gIHZtLmVudi5kaWRDcmVhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcblxuICB2bS51cGRhdGVXaXRoKG5ldyBEaWRVcGRhdGVMYXlvdXRPcGNvZGUobWFuYWdlciwgY29tcG9uZW50LCBib3VuZHMpKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24sIHZtID0+IHZtLmNvbW1pdENhY2hlR3JvdXAoKSk7XG5cbmV4cG9ydCBjbGFzcyBVcGRhdGVDb21wb25lbnRPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJ1cGRhdGUtY29tcG9uZW50XCI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgdGFnOiBUYWcsXG4gICAgcHJpdmF0ZSBuYW1lOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBjb21wb25lbnQ6IENvbXBvbmVudCxcbiAgICBwcml2YXRlIG1hbmFnZXI6IENvbXBvbmVudE1hbmFnZXI8Q29tcG9uZW50PixcbiAgICBwcml2YXRlIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlLFxuICApIHtcbiAgICBzdXBlcigpO1xuXG4gICAgbGV0IGNvbXBvbmVudFRhZyA9IG1hbmFnZXIuZ2V0VGFnKGNvbXBvbmVudCk7XG5cbiAgICBpZiAoY29tcG9uZW50VGFnKSB7XG4gICAgICB0aGlzLnRhZyA9IGNvbWJpbmUoW3RhZywgY29tcG9uZW50VGFnXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGFnID0gdGFnO1xuICAgIH1cbiAgfVxuXG4gIGV2YWx1YXRlKF92bTogVXBkYXRpbmdWTSkge1xuICAgIGxldCB7IGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlIH0gPSB0aGlzO1xuXG4gICAgbWFuYWdlci51cGRhdGUoY29tcG9uZW50LCBkeW5hbWljU2NvcGUpO1xuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIHJldHVybiB7XG4gICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgYXJnczogW0pTT04uc3RyaW5naWZ5KHRoaXMubmFtZSldXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGlkVXBkYXRlTGF5b3V0T3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwiZGlkLXVwZGF0ZS1sYXlvdXRcIjtcbiAgcHVibGljIHRhZzogVGFnID0gQ09OU1RBTlRfVEFHO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbWFuYWdlcjogQ29tcG9uZW50TWFuYWdlcjxDb21wb25lbnQ+LFxuICAgIHByaXZhdGUgY29tcG9uZW50OiBDb21wb25lbnQsXG4gICAgcHJpdmF0ZSBib3VuZHM6IEJvdW5kc1xuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICBsZXQgeyBtYW5hZ2VyLCBjb21wb25lbnQsIGJvdW5kcyB9ID0gdGhpcztcblxuICAgIG1hbmFnZXIuZGlkVXBkYXRlTGF5b3V0KGNvbXBvbmVudCwgYm91bmRzKTtcblxuICAgIHZtLmVudi5kaWRVcGRhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxBQUFPLEFBQUUsQUFBYyxBQUFrQixBQUFjLEFBQUUsQUFBTSxBQUFlLEFBQUM7O0FBQy9FLEFBQU8sQUFBRSxBQUFNLEFBQUUsQUFBTSxBQUFNLEFBQUM7O0FBRTlCLEFBQU8sQUFBK0IsQUFBTSxBQUFvQixBQUFDOzs7O0FBSWpFLEFBQU8sQUFBRSxBQUEwQixBQUFFLEFBQU0sQUFBTyxBQUFDOztBQUVuRCxBQUFPLEFBQ0wsQUFBWSxBQUNaLEFBQWMsQUFHZCxBQUFPLEFBQ1AsQUFBTyxBQUNSLEFBQU0sQUFBb0IsQUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTVCLEFBQWMsd0JBQUMsQUFBRyxJQUFDLEdBQXVCLDRCQUFFLFVBQUMsQUFBRSxBQUFFO1FBQU8sQUFBVyxBQUFFLG1CQUFsQixBQUFHLEFBQ3BEOztRQUFJLEFBQVUsYUFBRyxBQUFFLEdBQUMsQUFBUyxVQUFDLEFBQVEsU0FBOEIsQUFBVyxBQUFDLEFBQUMsQUFDakY7UUFBSSxBQUFLLFFBQUcsQUFBRSxHQUFDLEFBQUssQUFBQyxBQUVyQixBQUFLO1VBQUMsQUFBSSxLQUFDLEFBQVUsQUFBQyxBQUFDLEFBQ3ZCLEFBQUs7VUFBQyxBQUFJLEtBQUMsQUFBVSxXQUFDLEFBQU8sQUFBQyxBQUFDLEFBQ2pDLEFBQUMsQUFBQyxBQUFDOztBQUVILEFBQWMsd0JBQUMsQUFBRyxJQUFDLEdBQThCLG1DQUFFLEFBQUUsY0FDbkQ7UUFBSSxBQUFLLFFBQUcsQUFBRSxHQUFDLEFBQUssQUFBQyxBQUNyQjtRQUFJLEFBQVMsWUFBRyxBQUFLLE1BQUMsQUFBRyxBQUF1RCxBQUFDLEFBQ2pGO1FBQUksQUFBSyxRQUFHLEFBQU8sd0JBQUMsQUFBUyxBQUFDLGFBQUcsQUFBUyxZQUFHLEFBQUksQUFBYyw4QkFBOEIsQUFBUyxBQUFD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Yzs7O3NEQUV0QixBQUFLLEFBQUUsQUFBQyxzQkFKQTs7ZUFBTyxVQUFQLEFBQU8sQUFBNkIsQUFDcEM7ZUFBUyxZQUFULEFBQVMsQUFBVyxBQUNwQjtlQUFNLFNBQU4sQUFBTSxBQUFRLEFBTmpCO2VBQUksT0FBRyxBQUFtQixBQUFDLEFBQzNCO2VBQUcsQUFBUSxBQUFZLEFBQUMsQUFRL0I7ZUFBQzs7O29DQUVELEFBQVEsNkJBQUMsQUFBYyxJQUNyQixBQUFJO1lBQUUsQUFBTztZQUFFLEFBQVM7WUFBRSxBQUFNLEFBQUUsU0FBRyxBQUFJLEFBQUMsS0FFMUMsQUFBTzs7Z0JBQUMsQUFBZSxnQkFBQyxBQUFTLFdBQUUsQUFBTSxBQUFDLEFBQUMsQUFFM0MsQUFBRTtXQUFDLEFBQUcsSUFBQyxBQUFTLFVBQUMsQUFBUyxXQUFFLEFBQU8sQUFBQyxBQUFDLEFBQ3ZDLEFBQUMsQUFDRjs7OztBQW5CMEMsQUFBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUEVORF9PUENPREVTLCBPcCwgT3Bjb2RlSlNPTiwgVXBkYXRpbmdPcGNvZGUgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IEFzc2VydCB9IGZyb20gJy4vdm0nO1xuaW1wb3J0IHsgVXBkYXRpbmdWTSB9IGZyb20gJy4uLy4uL3ZtJztcbmltcG9ydCBBUkdTLCB7IEFyZ3VtZW50cywgSUFyZ3VtZW50cyB9IGZyb20gJy4uLy4uL3ZtL2FyZ3VtZW50cyc7XG5pbXBvcnQgeyBDb21wb25lbnQsIENvbXBvbmVudE1hbmFnZXIsIENvbXBvbmVudERlZmluaXRpb24gfSBmcm9tICcuLi8uLi9jb21wb25lbnQvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBEeW5hbWljU2NvcGUgfSBmcm9tICcuLi8uLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgQm91bmRzIGZyb20gJy4uLy4uL2JvdW5kcyc7XG5pbXBvcnQgeyBDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyB9IGZyb20gJy4vZG9tJztcbmltcG9ydCB7IE9wYXF1ZSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHtcbiAgQ09OU1RBTlRfVEFHLFxuICBSZWZlcmVuY2VDYWNoZSxcbiAgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSxcbiAgVGFnLFxuICBjb21iaW5lLFxuICBpc0NvbnN0XG59IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5QdXNoQ29tcG9uZW50TWFuYWdlciwgKHZtLCB7IG9wMTogX2RlZmluaXRpb24gfSkgPT4ge1xuICBsZXQgZGVmaW5pdGlvbiA9IHZtLmNvbnN0YW50cy5nZXRPdGhlcjxDb21wb25lbnREZWZpbml0aW9uPE9wYXF1ZT4+KF9kZWZpbml0aW9uKTtcbiAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG5cbiAgc3RhY2sucHVzaChkZWZpbml0aW9uKTtcbiAgc3RhY2sucHVzaChkZWZpbml0aW9uLm1hbmFnZXIpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5QdXNoRHluYW1pY0NvbXBvbmVudE1hbmFnZXIsIHZtID0+IHtcbiAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gIGxldCByZWZlcmVuY2UgPSBzdGFjay5wb3A8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxDb21wb25lbnREZWZpbml0aW9uPE9wYXF1ZT4+PigpO1xuICBsZXQgY2FjaGUgPSBpc0NvbnN0KHJlZmVyZW5jZSkgPyB1bmRlZmluZWQgOiBuZXcgUmVmZXJlbmNlQ2FjaGU8Q29tcG9uZW50RGVmaW5pdGlvbjxPcGFxdWU+PihyZWZlcmVuY2UpO1xuICBsZXQgZGVmaW5pdGlvbiA9IGNhY2hlID8gY2FjaGUucGVlaygpIDogcmVmZXJlbmNlLnZhbHVlKCk7XG5cbiAgc3RhY2sucHVzaChkZWZpbml0aW9uKTtcbiAgc3RhY2sucHVzaChkZWZpbml0aW9uLm1hbmFnZXIpO1xuXG4gIGlmIChjYWNoZSkge1xuICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICB9XG59KTtcblxuaW50ZXJmYWNlIEluaXRpYWxDb21wb25lbnRTdGF0ZTxUPiB7XG4gIGRlZmluaXRpb246IENvbXBvbmVudERlZmluaXRpb248VD47XG4gIG1hbmFnZXI6IENvbXBvbmVudE1hbmFnZXI8VD47XG4gIGNvbXBvbmVudDogbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRTdGF0ZTxUPiB7XG4gIGRlZmluaXRpb246IENvbXBvbmVudERlZmluaXRpb248VD47XG4gIG1hbmFnZXI6IENvbXBvbmVudE1hbmFnZXI8VD47XG4gIGNvbXBvbmVudDogVDtcbn1cblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkluaXRpYWxpemVDb21wb25lbnRTdGF0ZSwgdm0gPT4ge1xuICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcblxuICBsZXQgbWFuYWdlciA9IHN0YWNrLnBvcCgpO1xuICBsZXQgZGVmaW5pdGlvbiA9IHN0YWNrLnBvcCgpO1xuXG4gIHN0YWNrLnB1c2goeyBkZWZpbml0aW9uLCBtYW5hZ2VyLCBjb21wb25lbnQ6IG51bGwgfSk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlB1c2hBcmdzLCAodm0sIHsgb3AxOiBwb3NpdGlvbmFsLCBvcDI6IHN5bnRoZXRpYyB9KSA9PiB7XG4gIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICBBUkdTLnNldHVwKHN0YWNrLCBwb3NpdGlvbmFsLCAhIXN5bnRoZXRpYyk7XG4gIHN0YWNrLnB1c2goQVJHUyk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlByZXBhcmVBcmdzLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgbGV0IHsgZGVmaW5pdGlvbiwgbWFuYWdlciB9ID0gdm0uZmV0Y2hWYWx1ZTxJbml0aWFsQ29tcG9uZW50U3RhdGU8T3BhcXVlPj4oX3N0YXRlKTtcbiAgbGV0IGFyZ3MgPSBzdGFjay5wb3A8QXJndW1lbnRzPigpO1xuXG4gIGxldCBwcmVwYXJlZEFyZ3MgPSBtYW5hZ2VyLnByZXBhcmVBcmdzKGRlZmluaXRpb24sIGFyZ3MpO1xuXG4gIGlmIChwcmVwYXJlZEFyZ3MpIHtcbiAgICBhcmdzLmNsZWFyKCk7XG5cbiAgICBsZXQgeyBwb3NpdGlvbmFsLCBuYW1lZCB9ID0gcHJlcGFyZWRBcmdzO1xuXG4gICAgbGV0IHBvc2l0aW9uYWxDb3VudCA9IHBvc2l0aW9uYWwubGVuZ3RoO1xuXG4gICAgZm9yIChsZXQgaT0wOyBpPHBvc2l0aW9uYWxDb3VudDsgaSsrKSB7XG4gICAgICBzdGFjay5wdXNoKHBvc2l0aW9uYWxbaV0pO1xuICAgIH1cblxuICAgIGxldCBuYW1lcyA9IE9iamVjdC5rZXlzKG5hbWVkKTtcbiAgICBsZXQgbmFtZWRDb3VudCA9IG5hbWVzLmxlbmd0aDtcblxuICAgIGZvciAobGV0IGk9MDsgaTxuYW1lZENvdW50OyBpKyspIHtcbiAgICAgIHN0YWNrLnB1c2gobmFtZWRbbmFtZXNbaV1dKTtcbiAgICB9XG5cbiAgICBzdGFjay5wdXNoKG5hbWVzKTtcbiAgICBhcmdzLnNldHVwKHN0YWNrLCBwb3NpdGlvbmFsQ291bnQsIHRydWUpO1xuICB9XG5cbiAgc3RhY2sucHVzaChhcmdzKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuQ3JlYXRlQ29tcG9uZW50LCAodm0sIHsgb3AxOiBmbGFncywgb3AyOiBfc3RhdGUgfSkgPT4ge1xuICBsZXQgZGVmaW5pdGlvbiwgbWFuYWdlcjtcbiAgbGV0IGFyZ3MgPSB2bS5zdGFjay5wb3A8SUFyZ3VtZW50cz4oKTtcbiAgbGV0IGR5bmFtaWNTY29wZSA9IHZtLmR5bmFtaWNTY29wZSgpO1xuICBsZXQgc3RhdGUgPSB7IGRlZmluaXRpb24sIG1hbmFnZXIgfSA9IHZtLmZldGNoVmFsdWU8SW5pdGlhbENvbXBvbmVudFN0YXRlPE9wYXF1ZT4+KF9zdGF0ZSk7XG5cbiAgbGV0IGhhc0RlZmF1bHRCbG9jayA9IGZsYWdzICYgMGIwMTtcblxuICBsZXQgY29tcG9uZW50ID0gbWFuYWdlci5jcmVhdGUodm0uZW52LCBkZWZpbml0aW9uLCBhcmdzLCBkeW5hbWljU2NvcGUsIHZtLmdldFNlbGYoKSwgISFoYXNEZWZhdWx0QmxvY2spO1xuICAoc3RhdGUgYXMgQ29tcG9uZW50U3RhdGU8dHlwZW9mIGNvbXBvbmVudD4pLmNvbXBvbmVudCA9IGNvbXBvbmVudDtcblxuICB2bS51cGRhdGVXaXRoKG5ldyBVcGRhdGVDb21wb25lbnRPcGNvZGUoYXJncy50YWcsIGRlZmluaXRpb24ubmFtZSwgY29tcG9uZW50LCBtYW5hZ2VyLCBkeW5hbWljU2NvcGUpKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICBsZXQgeyBtYW5hZ2VyLCBjb21wb25lbnQgfSA9IHZtLmZldGNoVmFsdWU8Q29tcG9uZW50U3RhdGU8T3BhcXVlPj4oX3N0YXRlKTtcblxuICBsZXQgZGVzdHJ1Y3RvciA9IG1hbmFnZXIuZ2V0RGVzdHJ1Y3Rvcihjb21wb25lbnQpO1xuICBpZiAoZGVzdHJ1Y3Rvcikgdm0ubmV3RGVzdHJveWFibGUoZGVzdHJ1Y3Rvcik7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24sIHZtID0+IHtcbiAgdm0uYmVnaW5DYWNoZUdyb3VwKCk7XG4gIHZtLmVsZW1lbnRzKCkucHVzaFNpbXBsZUJsb2NrKCk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlB1c2hDb21wb25lbnRPcGVyYXRpb25zLCB2bSA9PiB7XG4gIHZtLnN0YWNrLnB1c2gobmV3IENvbXBvbmVudEVsZW1lbnRPcGVyYXRpb25zKHZtLmVudikpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5EaWRDcmVhdGVFbGVtZW50LCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICBsZXQgeyBtYW5hZ2VyLCBjb21wb25lbnQgfSA9IHZtLmZldGNoVmFsdWU8Q29tcG9uZW50U3RhdGU8T3BhcXVlPj4oX3N0YXRlKTtcblxuICBsZXQgYWN0aW9uID0gJ0RpZENyZWF0ZUVsZW1lbnRPcGNvZGUjZXZhbHVhdGUnO1xuICBtYW5hZ2VyLmRpZENyZWF0ZUVsZW1lbnQoY29tcG9uZW50LCB2bS5lbGVtZW50cygpLmV4cGVjdENvbnN0cnVjdGluZyhhY3Rpb24pLCB2bS5lbGVtZW50cygpLmV4cGVjdE9wZXJhdGlvbnMoYWN0aW9uKSk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkdldENvbXBvbmVudFNlbGYsICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gIGxldCBzdGF0ZSA9IHZtLmZldGNoVmFsdWU8Q29tcG9uZW50U3RhdGU8T3BhcXVlPj4oX3N0YXRlKTtcbiAgdm0uc3RhY2sucHVzaChzdGF0ZS5tYW5hZ2VyLmdldFNlbGYoc3RhdGUuY29tcG9uZW50KSk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkdldENvbXBvbmVudExheW91dCwgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgbGV0IHsgbWFuYWdlciwgZGVmaW5pdGlvbiwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlPENvbXBvbmVudFN0YXRlPE9wYXF1ZT4+KF9zdGF0ZSk7XG4gIHZtLnN0YWNrLnB1c2gobWFuYWdlci5sYXlvdXRGb3IoZGVmaW5pdGlvbiwgY29tcG9uZW50LCB2bS5lbnYpKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuRGlkUmVuZGVyTGF5b3V0LCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICBsZXQgeyBtYW5hZ2VyLCBjb21wb25lbnQgfSA9IHZtLmZldGNoVmFsdWU8Q29tcG9uZW50U3RhdGU8T3BhcXVlPj4oX3N0YXRlKTtcbiAgbGV0IGJvdW5kcyA9IHZtLmVsZW1lbnRzKCkucG9wQmxvY2soKTtcblxuICBtYW5hZ2VyLmRpZFJlbmRlckxheW91dChjb21wb25lbnQsIGJvdW5kcyk7XG5cbiAgdm0uZW52LmRpZENyZWF0ZShjb21wb25lbnQsIG1hbmFnZXIpO1xuXG4gIHZtLnVwZGF0ZVdpdGgobmV3IERpZFVwZGF0ZUxheW91dE9wY29kZShtYW5hZ2VyLCBjb21wb25lbnQsIGJvdW5kcykpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5Db21taXRDb21wb25lbnRUcmFuc2FjdGlvbiwgdm0gPT4gdm0uY29tbWl0Q2FjaGVHcm91cCgpKTtcblxuZXhwb3J0IGNsYXNzIFVwZGF0ZUNvbXBvbmVudE9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcInVwZGF0ZS1jb21wb25lbnRcIjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICB0YWc6IFRhZyxcbiAgICBwcml2YXRlIG5hbWU6IHN0cmluZyxcbiAgICBwcml2YXRlIGNvbXBvbmVudDogQ29tcG9uZW50LFxuICAgIHByaXZhdGUgbWFuYWdlcjogQ29tcG9uZW50TWFuYWdlcjxDb21wb25lbnQ+LFxuICAgIHByaXZhdGUgZHluYW1pY1Njb3BlOiBEeW5hbWljU2NvcGUsXG4gICkge1xuICAgIHN1cGVyKCk7XG5cbiAgICBsZXQgY29tcG9uZW50VGFnID0gbWFuYWdlci5nZXRUYWcoY29tcG9uZW50KTtcblxuICAgIGlmIChjb21wb25lbnRUYWcpIHtcbiAgICAgIHRoaXMudGFnID0gY29tYmluZShbdGFnLCBjb21wb25lbnRUYWddKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50YWcgPSB0YWc7XG4gICAgfVxuICB9XG5cbiAgZXZhbHVhdGUoX3ZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgbGV0IHsgY29tcG9uZW50LCBtYW5hZ2VyLCBkeW5hbWljU2NvcGUgfSA9IHRoaXM7XG5cbiAgICBtYW5hZ2VyLnVwZGF0ZShjb21wb25lbnQsIGR5bmFtaWNTY29wZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERpZFVwZGF0ZUxheW91dE9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImRpZC11cGRhdGUtbGF5b3V0XCI7XG4gIHB1YmxpYyB0YWc6IFRhZyA9IENPTlNUQU5UX1RBRztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1hbmFnZXI6IENvbXBvbmVudE1hbmFnZXI8Q29tcG9uZW50PixcbiAgICBwcml2YXRlIGNvbXBvbmVudDogQ29tcG9uZW50LFxuICAgIHByaXZhdGUgYm91bmRzOiBCb3VuZHNcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50LCBib3VuZHMgfSA9IHRoaXM7XG5cbiAgICBtYW5hZ2VyLmRpZFVwZGF0ZUxheW91dChjb21wb25lbnQsIGJvdW5kcyk7XG5cbiAgICB2bS5lbnYuZGlkVXBkYXRlKGNvbXBvbmVudCwgbWFuYWdlcik7XG4gIH1cbn1cbiJdfQ==

@@ -262,14 +262,2 @@ "use strict";

UpdateOpcode.prototype.toJSON = function toJSON() {
var guid = this._guid,
type = this.type,
cache = this.cache;
return {
guid: guid,
type: type,
details: { lastValue: JSON.stringify(cache.peek()) }
};
};
return UpdateOpcode;

@@ -337,19 +325,2 @@ }(_opcodes.UpdatingOpcode);

GuardedUpdateOpcode.prototype.toJSON = function toJSON() {
var guid = this._guid,
type = this.type,
deopted = this.deopted;
if (deopted) {
return {
guid: guid,
type: type,
deopted: true,
children: [deopted.toJSON()]
};
} else {
return _UpdateOpcode.prototype.toJSON.call(this);
}
};
return GuardedUpdateOpcode;

@@ -543,2 +514,2 @@ }(UpdateOpcode);

}(GuardedUpdateOpcode);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvbnRlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxBQUFlLEFBS2IsQUFBWSxBQUNaLEFBQU0sQUFDTixBQUFRLEFBRVIsQUFBYyxBQUNkLEFBQWMsQUFDZixBQUFNLEFBQWMsQUFBQzs7QUFDdEIsQUFBTyxBQUFFLEFBQXFCLEFBQUUsQUFBTSxBQUE0QixBQUFDOztBQUVuRSxBQUFPLEFBQWMsQUFBYyxBQUFFLEFBQU0sQUFBZSxBQUFDOztBQUczRCxBQUFPLEFBQXFDLEFBQWMsQUFBRSxBQUFZLEFBQWMsQUFBVSxBQUFFLEFBQU8sQUFBRSxBQUFHLEFBQUUsQUFBTSxBQUFvQixBQUFDOztBQUUzSSxBQUFPLEFBQUUsQUFBTSxBQUFFLEFBQUssQUFBRSxBQUFNLEFBQWMsQUFBQzs7QUFDN0MsQUFBTyxBQUFFLEFBQVEsQUFBRSxBQUFNLEFBQWUsQUFBQzs7QUFDekMsQUFBTyxBQUFFLEFBQW9CLEFBQUUsQUFBTSxBQUFrQixBQUFDLEFBRXhELEFBQU8sQUFBRSxBQUFjLEFBQU0sQUFBTSxBQUFlLEFBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRW5ELEFBQWMsd0JBQUMsQUFBRyxJQUFDLEdBQWlCLHNCQUFFLFVBQUMsQUFBRSxBQUFFO1FBQU8sQUFBTSxBQUFFLGNBQWIsQUFBRyxBQUM5Qzs7UUFBSSxBQUFNLFNBQUcsQUFBRSxHQUFDLEFBQVMsVUFBQyxBQUFRLFNBQUMsQUFBTSxBQUFtQyxBQUFDLEFBQzdFLEFBQU07V0FBQyxBQUFRLFNBQUMsQUFBRSxBQUFDLEFBQUMsQUFDdEIsQUFBQyxBQUFDLEFBQUM7O0FBRUgsaUJBQWlCLEFBQWEsT0FDNUIsQUFBTTtXQUFDLEFBQUssVUFBSyxBQUFJLFFBQUksQUFBSyxVQUFLLEFBQVMsYUFBSSxPQUFPLEFBQUssTUFBQyxBQUFVLEFBQUMsZ0JBQUssQUFBVSxBQUFDLEFBQzFGLEFBQUM7QUFFRCxBQUFNOzRCQUE2QixBQUFhLE9BQzlDLEFBQUUsQUFBQztRQUFDLEFBQU8sUUFBQyxBQUFLLEFBQUMsQUFBQyxRQUFDLEFBQUMsQUFDbkIsQUFBTTtlQUFDLEFBQUUsQUFBQyxBQUNaLEFBQUM7QUFDRCxBQUFNO1dBQUMsQUFBTSxPQUFDLEFBQUssQUFBQyxBQUFDLEFBQ3ZCLEFBQUM7O0FBRUQsK0JBQStCLEFBQWEsT0FDMUMsQUFBRSxBQUFDO1FBQUMsQUFBTyxRQUFDLEFBQUssQUFBQyxBQUFDLFFBQUMsQUFBQyxBQUNuQixBQUFNO2VBQUMsQUFBRSxBQUFDLEFBQ1osQUFBQztBQUNELEFBQUUsQUFBQztRQUFDLEFBQVEsc0JBQUMsQUFBSyxBQUFDLEFBQUMsUUFBQyxBQUFDLEFBQ3BCLEFBQU07ZUFBQyxBQUFLLEFBQUMsQUFDZixBQUFDO0FBQ0QsQUFBRSxBQUFDO1FBQUMsQUFBWSwwQkFBQyxBQUFLLEFBQUMsQUFBQyxRQUFDLEFBQUMsQUFDeEIsQUFBTTtlQUFDLEFBQUssTUFBQyxBQUFNLEFBQUUsQUFBQyxBQUN4QixBQUFDO0FBQ0QsQUFBRSxBQUFDO1FBQUMsQUFBTSxvQkFBQyxBQUFLLEFBQUMsQUFBQyxRQUFDLEFBQUMsQUFDbEIsQUFBTTtlQUFDLEFBQUssQUFBQyxBQUNmLEFBQUM7QUFDRCxBQUFNO1dBQUMsQUFBTSxPQUFDLEFBQUssQUFBQyxBQUFDLEFBQ3ZCLEFBQUM7O0FBRUQsd0JBQXdCLEFBQWEsT0FDbkMsQUFBRSxBQUFDO1FBQUMsQUFBTyxRQUFDLEFBQUssQUFBQyxBQUFDLFFBQUMsQUFBQyxBQUNuQixBQUFNO2VBQUMsQUFBRSxBQUFDLEFBQ1osQUFBQztBQUNELEFBQUUsQUFBQztRQUFDLEFBQVEsc0JBQUMsQUFBSyxBQUFDLEFBQUMsUUFBQyxBQUFDLEFBQ3BCLEFBQU07ZUFBQyxBQUFLLEFBQUMsQUFDZixBQUFDO0FBQ0QsQUFBRSxBQUFDO1FBQUMsQUFBWSwwQkFBQyxBQUFLLEFBQUMsVUFBSSxBQUFNLG9CQUFDLEFBQUssQUFBQyxBQUFDLFFBQUMsQUFBQyxBQUN6QyxBQUFNO2VBQUMsQUFBSyxBQUFDLEFBQ2YsQUFBQztBQUNELEFBQU07V0FBQyxBQUFNLE9BQUMsQUFBSyxBQUFDLEFBQUMsQUFDdkIsQUFBQztBQUlELEFBQU07Ozs7OztrQ0FLSixBQUFRLDZCQUFDLEFBQU0sSUFDYjtZQUFJLEFBQVMsWUFBRyxBQUFFLEdBQUMsQUFBSyxNQUFDLEFBQUcsQUFBa0MsQUFBQyxBQUMvRDtZQUFJLEFBQVUsYUFBRyxBQUFJLEtBQUMsQUFBUyxVQUFDLEFBQVMsQUFBQyxBQUFDLEFBRTNDO1lBQUksQUFBSztZQUFFLEFBQUssQUFBQyxhQUVqQixBQUFFLEFBQUM7WUFBQyxBQUFPLHlCQUFDLEFBQVMsQUFBQyxBQUFDLFlBQUMsQUFBQyxBQUN2QixBQUFLO29CQUFHLEFBQVUsV0FBQyxBQUFLLEFBQUUsQUFBQyxBQUM3QixBQUFDLEFBQUMsQUFBSTtlQUFDLEFBQUMsQUFDTixBQUFLO29CQUFHLEFBQUksQUFBYywrQkFBQyxBQUFVLEFBQUMsQUFBQyxBQUN2QyxBQUFLO29CQUFHLEFBQUssTUFBQyxBQUFJLEFBQUUsQUFBQyxBQUN2QixBQUFDO0FBRUQ7WUFBSSxBQUFLLFFBQUcsQUFBRSxHQUFDLEFBQVEsQUFBRSxBQUFDLEFBQzFCO1lBQUksQUFBTSxTQUFHLEFBQUksS0FBQyxBQUFNLE9BQUMsQUFBRSxHQUFDLEFBQUcsSUFBQyxBQUFtQixBQUFFLHVCQUFFLEFBQUssT0FBRSxBQUFLLEFBQUMsQUFBQyxBQUNyRTtZQUFJLEFBQU0sU0FBRyxBQUFJLEFBQVEsc0JBQUMsQUFBTSxPQUFDLEFBQU0sQUFBQyxBQUFDLEFBRXpDLEFBQUs7Y0FBQyxBQUFTLFVBQUMsQUFBTSxBQUFDLEFBQUMsQUFFeEIsQUFBRSxBQUFDO1lBQUMsQUFBSyxNQUFDLEFBQThCLEFBQUMsZ0NBQUMsQUFBQyxBQUN6QyxBQUFFO21CQUFDLEFBQVUsV0FBQyxBQUFJLEtBQUMsQUFBVSxXQUFDLEFBQUUsSUFBRSxBQUFTLFdBQUUsQUFBSyxPQUFFLEFBQU0sUUFBRSxBQUFNLEFBQUMsQUFBQyxBQUFDLEFBQ3ZFLEFBQUMsQUFDSDtBQUFDLEFBQ0Y7Ozs7QUFFRCxBQUFNO0lBQXlEO21DQUk3RDs7Ozs7cURBQ0UsQUFBSyxBQUFFLEFBQUMsMEJBSEY7O2NBQUssUUFBRyxDQUFDLEFBQUMsQUFBQyxBQUluQjtlQUFDLEFBRUQsQUFBSSxBQUFPOzs7a0NBSVgsQUFBUSw2QkFBQyxBQUFNLElBQ2IsQUFBRSxBQUFDO1lBQUMsQUFBSSxLQUFDLEFBQU8sQUFBQyxTQUFDLEFBQUMsQUFDakIsQUFBRTtlQUFDLEFBQUksS0FBQyxBQUFJLEtBQUMsQUFBSyxBQUFDLEFBQUMsQUFDdEIsQUFBQyxBQUFDLEFBQUk7ZUFBQyxBQUFDLEFBQ047Z0JBQUksQUFBSyxRQUFHLEFBQUUsR0FBQyxBQUFLLE1BQUMsQUFBRyxBQUFFLEFBQUMsQUFFM0IsQUFBRTtnQkFBQyxBQUFxQix1Q0FBQyxBQUFLLEFBQUMsQUFBQyxRQUFDLEFBQUMsQUFDaEMsQUFBSTtxQkFBQyxBQUFLLE1BQUMsQUFBRSxHQUFDLEFBQUcsQUFBQyxBQUFDLEFBQ25CLEFBQUU7bUJBQUMsQUFBSSxLQUFDLEFBQUksS0FBQyxBQUFLLEFBQUMsQUFBQyxBQUN0QixBQUFDLEFBQUMsQUFBSTttQkFBQyxBQUFDLEFBQ04sQUFBRTttQkFBQyxBQUFLLE1BQUMsQUFBSSxLQUFDLEFBQUssQUFBQyxBQUFDLEFBQ3JCLEFBQUs7K0NBQUMsQUFBUSxvQkFBQyxBQUFFLEFBQUMsQUFBQyxBQUNyQixBQUFDLEFBQ0g7QUFBQyxBQUNIO0FBQUM7OztrQ0FFTSxBQUFLLHVCQUFDLEFBQWlCLE1BQzVCLEFBQXVFO0FBQ3ZFLEFBQW1FO0FBQ25FLEFBQXlCO0FBQ3pCLEFBQUU7QUFDRixBQUF5RTtBQUN6RSxBQUFFO0FBQ0YsQUFBMEM7QUFDMUMsQUFBd0I7QUFDeEIsQUFBYTtBQUNiLEFBQWM7QUFDZCxBQUFZO0FBQ1osQUFBRTtBQUNGLEFBQXdFO0FBQ3hFLEFBQXlFO0FBQ3pFLEFBQXVFO0FBQ3ZFLEFBQTRCO0FBQzVCLEFBQUU7QUFDRixBQUEwRTtBQUMxRSxBQUFzRTtBQUN0RSxBQUFxRTtBQUNyRSxBQUF5RTtBQUN6RSxBQUF1RTtBQUN2RSxBQUFhO0FBQ2IsQUFBRTtBQUNGLEFBQXFDO0FBQ3JDLEFBQThDO0FBQzlDLEFBQWtDO0FBQ2xDLEFBQXFCO0FBQ3JCLEFBQWtDO0FBQ2xDLEFBQW9EO0FBQ3BELEFBQThCO0FBQzlCLEFBQStCO0FBQy9CLEFBQTBCO0FBQzFCLEFBQXFCO0FBQ3JCLEFBQWdDO0FBQ2hDLEFBQXFCO0FBQ3JCLEFBQXFCO0FBQ3JCLEFBQUU7QUFDRixBQUEwRTtBQUMxRSxBQUFzRTtBQUN0RSxBQUFzRTtBQUN0RSxBQUF3RTtBQUN4RSxBQUEyRTtBQUUzRSxBQUFNO2VBQUMsQUFBVyxBQUFDLEFBQ3JCLEFBQUMsQUFDRixBQUVEOzs7Ozt5QkFwRUksQUFBTTttQkFBQyxBQUFJLEtBQUMsQUFBSyxVQUFLLENBQUMsQUFBQyxBQUFDLEFBQzNCLEFBQUM7Ozs7O0VBVm9FLEFBQXNCOztJQTZFeEQ7Ozs7Ozs7OzttQ0FDNUIsQUFBTSx5QkFBQyxBQUF3QixPQUNwQyxBQUFNO2VBQUMsSUFBSSxBQUE4QiwrQkFBQyxBQUFLLEFBQUMsQUFBQyxBQUNuRCxBQUFDOzs7NkNBRUQsQUFBTSx5QkFBQyxBQUFhLE9BQ2xCLEFBQU07ZUFBQyxBQUFxQix1Q0FBQyxBQUFLLEFBQUMsQUFBQyxBQUN0QyxBQUFDLEFBQ0YsQUFFRDs7OztBQVY2QyxBQUFvQixBQUMvRCxBQUFNOztJQVN5Qzs0QkFDL0M7OzBCQUNZLEFBQXdCLE9BQ3hCLEFBQWdCLFFBQ2hCLEFBQWM7OztzREFFeEIsQUFBSyxBQUFFLEFBQUMscUJBSkU7O2VBQUssUUFBTCxBQUFLLEFBQW1CLEFBQ3hCO2VBQU0sU0FBTixBQUFNLEFBQVUsQUFDaEI7ZUFBTSxTQUFOLEFBQU0sQUFBUSxBQUd4QixBQUFJO2VBQUMsQUFBRyxNQUFHLEFBQUssTUFBQyxBQUFHLEFBQUMsQUFDdkI7ZUFBQzs7OzJCQUlELEFBQVEsNkJBQUMsQUFBYyxJQUNyQjtZQUFJLEFBQUssUUFBRyxBQUFJLEtBQUMsQUFBSyxNQUFDLEFBQVUsQUFBRSxBQUFDLEFBRXBDLEFBQUUsQUFBQztZQUFDLEFBQVUsNEJBQUMsQUFBSyxBQUFDLEFBQUMsUUFBQyxBQUFDLEFBQ3RCLEFBQUk7Z0JBQUUsQUFBTSxTQUFhLEFBQUksQUFBQyxBQUM5QixBQUFJO2dCQURVLEFBQU0sQUFBRTtnQkFDaEIsQUFBRyxBQUFFLE1BQUcsQUFBRSxBQUFDLEdBRWpCLEFBQUU7O2dCQUFDLENBQUMsQUFBSSxLQUFDLEFBQU0sT0FBQyxBQUFNLE9BQUMsQUFBRyxLQUFFLEFBQUssQUFBQyxBQUFDLFFBQUMsQUFBQyxBQUNuQztvQkFBSSxBQUFNLFNBQUcsQUFBSSxBQUFNLG1CQUFDLEFBQU0sT0FBQyxBQUFhLEFBQUUsaUJBQUUsQUFBSyxtQkFBQyxBQUFNLEFBQUMsQUFBQyxBQUFDLEFBQy9ELEFBQU07eUJBQUcsQUFBSSxLQUFDLEFBQU0sU0FBRyxBQUFJLEtBQUMsQUFBTSxPQUFDLEFBQUUsR0FBQyxBQUFHLElBQUMsQUFBbUIsQUFBRSx1QkFBRSxBQUFNLFFBQUUsQUFBVSxBQUFDLEFBQUMsQUFDdkYsQUFBQztBQUVELEFBQU07bUJBQUMsQUFBTSxPQUFDLEFBQU0sT0FBQyxBQUFNLEFBQUMsQUFBQyxBQUMvQixBQUFDLEFBQ0g7QUFBQzs7OzJCQUVELEFBQU0sMkJBQ0osQUFBSTtZQUFTLEFBQUksT0FBa0IsQUFBSSxBQUFDLEtBQWxDLEFBQUs7WUFBUSxBQUFJO1lBQUUsQUFBSyxBQUFFLGFBRWhDLEFBQU07OztrQkFFSixBQUFJO2tCQUNKLEFBQU87cUJBQUUsRUFBRSxBQUFTLFdBQUUsQUFBSSxLQUFDLEFBQVMsVUFBQyxBQUFLLE1BSHJDLEFBR3NDLEFBQUksQUFBRSxBQUFDLEFBQUUsQUFDckQsQUFBQyxBQUNKLEFBQUMsQUFDRixBQUVEO0FBUE0sQUFBSTs7OztBQWhDK0MsQUFBYzs7SUF1Q2Y7bUNBSXREOztpQ0FDVSxBQUE0QixXQUNwQyxBQUF3QixPQUN4QixBQUFnQixRQUNoQixBQUFjOzs7c0RBRWQsQUFBSyx5QkFBQyxBQUFLLE9BQUUsQUFBTSxRQUxYLEFBS2EsQUFBTSxBQUFDLEFBQUM7O2VBTFosWUFIWCxBQUdFLEFBQVMsQUFBbUI7ZUFIdkIsVUFBc0IsQUFBSSxBQUFDLEFBU3hDLEFBQUk7ZUFBQyxBQUFHLE1BQUcsQUFBSSxPQUFDLEFBQUksT0FBRyxBQUFZLHlCQUFDLEFBQU0sT0FBQyxBQUFJLE9BQUMsQUFBRyxBQUFDLEFBQUMsQUFDdkQ7ZUFBQzs7O2tDQUVELEFBQVEsNkJBQUMsQUFBYyxJQUNyQixBQUFFLEFBQUM7WUFBQyxBQUFJLEtBQUMsQUFBTyxBQUFDLFNBQUMsQUFBQyxBQUNqQixBQUFFO2VBQUMsQUFBYyxlQUFDLEFBQUksS0FBQyxBQUFPLEFBQUMsQUFBQyxBQUNsQyxBQUFDLEFBQUMsQUFBSTtlQUFDLEFBQUMsQUFDTixBQUFFLEFBQUM7Z0JBQUMsQUFBcUIsdUNBQUMsQUFBSSxLQUFDLEFBQVMsVUFBQyxBQUFLLEFBQUUsQUFBQyxBQUFDLFVBQUMsQUFBQyxBQUNsRCxBQUFJO3FCQUFDLEFBQVMsVUFBQyxBQUFFLEFBQUMsQUFBQyxBQUNyQixBQUFDLEFBQUMsQUFBSTttQkFBQyxBQUFDLEFBQ04sQUFBSzt3Q0FBQyxBQUFRLG9CQUFDLEFBQUUsQUFBQyxBQUFDLEFBQ3JCLEFBQUMsQUFDSDtBQUFDLEFBQ0g7QUFBQzs7O2tDQUVPLEFBQVMsK0JBQUMsQUFBZSxLQUMvQixBQUF1RTtBQUN2RSxBQUFzRTtBQUN0RSxBQUF1RTtBQUN2RSxBQUF3RTtBQUN4RSxBQUF1RTtBQUN2RSxBQUF3RTtBQUN4RSxBQUFVO0FBQ1YsQUFBRTtBQUNGLEFBQXdFO0FBQ3hFLEFBQXdFO0FBQ3hFLEFBQXVFO0FBQ3ZFLEFBQVU7QUFDVixBQUFFO0FBQ0YsQUFBc0U7QUFDdEUsQUFBc0U7QUFDdEUsQUFBK0Q7QUFDL0QsQUFBRTtBQUNGLEFBQW9CO0FBQ3BCLEFBQW9EO0FBQ3BELEFBQXNCO0FBQ3RCLEFBQUU7QUFDRixBQUF1RTtBQUN2RSxBQUFzRTtBQUN0RSxBQUF3RTtBQUN4RSxBQUF3QztBQUN4QyxBQUFFO0FBQ0YsQUFBd0U7QUFDeEUsQUFBeUU7QUFDekUsQUFBZ0Q7QUFFaEQsQUFBTTtlQUFDLEFBQVcsQUFBQyxBQUNyQixBQUFDOzs7a0NBRUQsQUFBTSwyQkFDSixBQUFJO1lBQVMsQUFBSSxPQUFvQixBQUFJLEFBQUMsS0FBcEMsQUFBSztZQUFRLEFBQUk7WUFBRSxBQUFPLEFBQUUsZUFFbEMsQUFBRSxBQUFDOztZQUFDLEFBQU8sQUFBQyxTQUFDLEFBQUMsQUFDWixBQUFNOztzQkFFSixBQUFJO3NCQUNKLEFBQU87eUJBQUUsQUFBSSxBQUNiLEFBQVE7MEJBQUUsQ0FBQyxBQUFPLFFBSmIsQUFJYyxBQUFNLEFBQUUsQUFBQyxBQUM3QixBQUFDLEFBQ0osQUFBQyxBQUFDLEFBQUk7QUFMRixBQUFJO2VBS0QsQUFBQyxBQUNOLEFBQU07bUJBQUMsQUFBSyx3QkFBQyxBQUFNLEFBQUUsQUFBQyxBQUN4QixZQUFDLEFBQ0g7QUFBQyxBQUNGOzs7O0VBMUUrRCxBQUFlLEFBNEUvRSxBQUFNOztJQUFxQzs2Q0FBM0M7Ozs7O3dGQUNFOztlQUFJLE9BQUcsQUFBMkIsQUFBQyxBQWFyQztlQUFDOzs7NENBWFcsQUFBUywrQkFBQyxBQUE0QixXQUM5QyxBQUFNO2VBQUMsQUFBRyxxQkFBQyxBQUFTLFdBQUUsQUFBYyxBQUFDLEFBQUMsQUFDeEMsQUFBQzs7OzRDQUVTLEFBQU0seUJBQUMsQUFBd0IsS0FBRSxBQUFjLFFBQUUsQUFBd0IsT0FDakYsQUFBTTtlQUFDLEFBQWMsNEJBQUMsQUFBRyxLQUFFLEFBQU0sUUFBRSxBQUFLLEFBQUMsQUFBQyxBQUM1QyxBQUFDOzs7NENBRVMsQUFBVSxpQ0FBQyxBQUFPLEtBQUUsQUFBNkIsWUFBRSxBQUF3QyxPQUFFLEFBQWdCLFFBQUUsQUFBYyxRQUNySSxBQUFNO2VBQUMsSUFBSSxBQUE2Qiw4QkFBQyxBQUFLLE9BQUUsQUFBTSxRQUFFLEFBQU0sQUFBQyxBQUFDLEFBQ2xFLEFBQUMsQUFDRixBQUVEOzs7O0VBaEJtRCxBQUFzQzs7SUFnQnJEOzZDQUFwQzs7Ozs7aUZBQ0U7O2VBQUksT0FBRyxBQUEyQixBQUFDLEFBS3JDO2VBQUM7Ozs0Q0FIVyxBQUFNLHlCQUFDLEFBQXdCLEtBQUUsQUFBYyxRQUFFLEFBQXdCLE9BQ2pGLEFBQU07ZUFBQyxBQUFjLDRCQUFDLEFBQUcsS0FBRSxBQUFNLFFBQUUsQUFBSyxBQUFDLEFBQUMsQUFDNUMsQUFBQyxBQUNGOzs7O0VBTjJDLEFBQStCLEFBUTNFLEFBQU07O0lBQW1DOzJDQUF6Qzs7Ozs7dUZBQ0U7O2VBQUksT0FBRyxBQUF5QixBQUFDLEFBRXZCO2VBQVksZUFBRyxBQUE2QixBQUFDLEFBYXpEO2VBQUM7OzswQ0FYVyxBQUFTLCtCQUFDLEFBQTRCLFdBQzlDLEFBQU07ZUFBQyxBQUFHLHFCQUFDLEFBQVMsV0FBRSxBQUFjLEFBQUMsQUFBQyxBQUN4QyxBQUFDOzs7MENBRVMsQUFBTSx5QkFBQyxBQUF3QixLQUFFLEFBQWMsUUFBRSxBQUF3QixPQUNqRixBQUFNO2VBQUMsQUFBYyw0QkFBQyxBQUFHLEtBQUUsQUFBTSxRQUFFLEFBQUssQUFBQyxBQUFDLEFBQzVDLEFBQUM7OzswQ0FFUyxBQUFVLGlDQUFDLEFBQU8sS0FBRSxBQUE0QixXQUFFLEFBQXdDLE9BQUUsQUFBZ0IsUUFBRSxBQUFjLFFBQ3BJLEFBQU07ZUFBQyxJQUFJLEFBQTJCLDRCQUFDLEFBQVMsV0FBRSxBQUFLLE9BQUUsQUFBTSxRQUFFLEFBQU0sQUFBQyxBQUFDLEFBQzNFLEFBQUMsQUFDRixBQUVEOzs7O0VBbEJpRCxBQUFzQzs7SUFrQnJEOzJDQUFsQzs7Ozs7dUZBQ0U7O2VBQUksT0FBRyxBQUF5QixBQUFDLEFBS25DO2VBQUM7OzswQ0FIVyxBQUFNLHlCQUFDLEFBQXdCLEtBQUUsQUFBYyxRQUFFLEFBQXdCLE9BQ2pGLEFBQU07ZUFBQyxBQUFjLDRCQUFDLEFBQUcsS0FBRSxBQUFNLFFBQUUsQUFBSyxBQUFDLEFBQUMsQUFDNUMsQUFBQyxBQUNGOzs7O0VBTnlDLEFBQXNDLEFBUWhGLEFBQU07O0lBQXFDOzZDQUEzQzs7Ozs7d0ZBQ0U7O2VBQUksT0FBRyxBQUEyQixBQUFDLEFBYXJDO2VBQUM7Ozs0Q0FYVyxBQUFTLCtCQUFDLEFBQTRCLFdBQzlDLEFBQU07ZUFBQyxBQUFHLHFCQUFDLEFBQVMsV0FBRSxBQUFxQixBQUFDLEFBQUMsQUFDL0MsQUFBQzs7OzRDQUVTLEFBQU0seUJBQUMsQUFBd0IsS0FBRSxBQUFjLFFBQUUsQUFBd0IsT0FDakYsQUFBTTtlQUFDLEFBQWMsNEJBQUMsQUFBRyxLQUFFLEFBQU0sUUFBRSxBQUFLLEFBQUMsQUFBQyxBQUM1QyxBQUFDOzs7NENBRVMsQUFBVSxpQ0FBQyxBQUFPLEtBQUUsQUFBNkIsWUFBRSxBQUF3QyxPQUFFLEFBQWdCLFFBQUUsQUFBYyxRQUNySSxBQUFNO2VBQUMsSUFBSSxBQUE2Qiw4QkFBQyxBQUFLLE9BQUUsQUFBTSxRQUFFLEFBQU0sQUFBQyxBQUFDLEFBQ2xFLEFBQUMsQUFDRixBQUVEOzs7O0VBaEJtRCxBQUFzQzs7SUFnQnJEOzZDQUFwQzs7Ozs7a0ZBQ0U7O2dCQUFJLE9BQUcsQUFBMkIsQUFBQyxBQUtyQztlQUFDOzs7NENBSFcsQUFBTSx5QkFBQyxBQUF3QixLQUFFLEFBQWMsUUFBRSxBQUF3QixPQUNqRixBQUFNO2VBQUMsQUFBYyw0QkFBQyxBQUFHLEtBQUUsQUFBTSxRQUFFLEFBQUssQUFBQyxBQUFDLEFBQzVDLEFBQUMsQUFDRjs7OztFQU4yQyxBQUErQixBQVEzRSxBQUFNOztJQUFtQzsyQ0FBekM7Ozs7O3lGQUNFOztnQkFBSSxPQUFHLEFBQXlCLEFBQUMsQUFFdkI7Z0JBQVksZUFBRyxBQUE2QixBQUFDLEFBYXpEO2VBQUM7OzswQ0FYVyxBQUFTLCtCQUFDLEFBQTRCLFdBQzlDLEFBQU07ZUFBQyxBQUFHLHFCQUFDLEFBQVMsV0FBRSxBQUFxQixBQUFDLEFBQUMsQUFDL0MsQUFBQzs7OzBDQUVTLEFBQU0seUJBQUMsQUFBd0IsS0FBRSxBQUFjLFFBQUUsQUFBd0IsT0FDakYsQUFBTTtlQUFDLEFBQWMsNEJBQUMsQUFBRyxLQUFFLEFBQU0sUUFBRSxBQUFLLEFBQUMsQUFBQyxBQUM1QyxBQUFDOzs7MENBRVMsQUFBVSxpQ0FBQyxBQUFPLEtBQUUsQUFBNEIsV0FBRSxBQUF3QyxPQUFFLEFBQWdCLFFBQUUsQUFBYyxRQUNwSSxBQUFNO2VBQUMsSUFBSSxBQUEyQiw0QkFBQyxBQUFTLFdBQUUsQUFBSyxPQUFFLEFBQU0sUUFBRSxBQUFNLEFBQUMsQUFBQyxBQUMzRSxBQUFDLEFBQ0YsQUFFRDs7OztFQWxCaUQsQUFBc0M7O0lBa0JyRDsyQ0FBbEM7Ozs7O3lGQUNFOztnQkFBSSxPQUFHLEFBQWlCLEFBQUMsQUFLM0I7ZUFBQzs7OzBDQUhXLEFBQU0seUJBQUMsQUFBd0IsS0FBRSxBQUFjLFFBQUUsQUFBd0IsT0FDakYsQUFBTTtlQUFDLEFBQWMsNEJBQUMsQUFBRyxLQUFFLEFBQU0sUUFBRSxBQUFLLEFBQUMsQUFBQyxBQUM1QyxBQUFDLEFBQ0Y7Ozs7RUFOeUMsQUFBc0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVXBzZXJ0LCB7XG4gIEluc2VydGlvbixcbiAgQ2F1dGlvdXNJbnNlcnRpb24sXG4gIFRydXN0aW5nSW5zZXJ0aW9uLFxuXG4gIGlzU2FmZVN0cmluZyxcbiAgaXNOb2RlLFxuICBpc1N0cmluZyxcblxuICBjYXV0aW91c0luc2VydCxcbiAgdHJ1c3RpbmdJbnNlcnRcbn0gZnJvbSAnLi4vLi4vdXBzZXJ0JztcbmltcG9ydCB7IGlzQ29tcG9uZW50RGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL2NvbXBvbmVudC9pbnRlcmZhY2VzJztcbmltcG9ydCB7IERPTVRyZWVDb25zdHJ1Y3Rpb24gfSBmcm9tICcuLi8uLi9kb20vaGVscGVyJztcbmltcG9ydCB7IE9wY29kZUpTT04sIFVwZGF0aW5nT3Bjb2RlIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBWTSwgVXBkYXRpbmdWTSB9IGZyb20gJy4uLy4uL3ZtJztcbmltcG9ydCB7IFRyeU9wY29kZSB9IGZyb20gJy4uLy4uL3ZtL3VwZGF0ZSc7XG5pbXBvcnQgeyBSZWZlcmVuY2UsIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFJlZmVyZW5jZUNhY2hlLCBVcGRhdGFibGVUYWcsIFRhZ1dyYXBwZXIsIGlzTW9kaWZpZWQsIGlzQ29uc3QsIG1hcCB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBPcHRpb24sIE9wYXF1ZSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgQ3Vyc29yLCBjbGVhciB9IGZyb20gJy4uLy4uL2JvdW5kcyc7XG5pbXBvcnQgeyBGcmFnbWVudCB9IGZyb20gJy4uLy4uL2J1aWxkZXInO1xuaW1wb3J0IHsgQ29uZGl0aW9uYWxSZWZlcmVuY2UgfSBmcm9tICcuLi8uLi9yZWZlcmVuY2VzJztcbmltcG9ydCB7IEVudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgQVBQRU5EX09QQ09ERVMsIE9wIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5EeW5hbWljQ29udGVudCwgKHZtLCB7IG9wMTogYXBwZW5kIH0pID0+IHtcbiAgbGV0IG9wY29kZSA9IHZtLmNvbnN0YW50cy5nZXRPdGhlcihhcHBlbmQpIGFzIEFwcGVuZER5bmFtaWNPcGNvZGU8SW5zZXJ0aW9uPjtcbiAgb3Bjb2RlLmV2YWx1YXRlKHZtKTtcbn0pO1xuXG5mdW5jdGlvbiBpc0VtcHR5KHZhbHVlOiBPcGFxdWUpOiBib29sZWFuIHtcbiAgcmV0dXJuIHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIHZhbHVlWyd0b1N0cmluZyddICE9PSAnZnVuY3Rpb24nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplVGV4dFZhbHVlKHZhbHVlOiBPcGFxdWUpOiBzdHJpbmcge1xuICBpZiAoaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVRydXN0ZWRWYWx1ZSh2YWx1ZTogT3BhcXVlKTogVHJ1c3RpbmdJbnNlcnRpb24ge1xuICBpZiAoaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNTYWZlU3RyaW5nKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS50b0hUTUwoKTtcbiAgfVxuICBpZiAoaXNOb2RlKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplVmFsdWUodmFsdWU6IE9wYXF1ZSk6IENhdXRpb3VzSW5zZXJ0aW9uIHtcbiAgaWYgKGlzRW1wdHkodmFsdWUpKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKGlzU2FmZVN0cmluZyh2YWx1ZSkgfHwgaXNOb2RlKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cblxuZXhwb3J0IHR5cGUgQXBwZW5kRHluYW1pY09wY29kZUNvbnN0cnVjdG9yID0gIHR5cGVvZiBPcHRpbWl6ZWRDYXV0aW91c0FwcGVuZE9wY29kZSB8IHR5cGVvZiBPcHRpbWl6ZWRUcnVzdGluZ0FwcGVuZE9wY29kZTtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFwcGVuZER5bmFtaWNPcGNvZGU8VCBleHRlbmRzIEluc2VydGlvbj4ge1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgbm9ybWFsaXplKHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4pOiBSZWZlcmVuY2U8VD47XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IFQpOiBVcHNlcnQ7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCB1cGRhdGVXaXRoKHZtOiBWTSwgcmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPiwgY2FjaGU6IFJlZmVyZW5jZUNhY2hlPFQ+LCBib3VuZHM6IEZyYWdtZW50LCB1cHNlcnQ6IFVwc2VydCk6IFVwZGF0aW5nT3Bjb2RlO1xuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIGxldCByZWZlcmVuY2UgPSB2bS5zdGFjay5wb3A8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+PigpO1xuICAgIGxldCBub3JtYWxpemVkID0gdGhpcy5ub3JtYWxpemUocmVmZXJlbmNlKTtcblxuICAgIGxldCB2YWx1ZSwgY2FjaGU7XG5cbiAgICBpZiAoaXNDb25zdChyZWZlcmVuY2UpKSB7XG4gICAgICB2YWx1ZSA9IG5vcm1hbGl6ZWQudmFsdWUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FjaGUgPSBuZXcgUmVmZXJlbmNlQ2FjaGUobm9ybWFsaXplZCk7XG4gICAgICB2YWx1ZSA9IGNhY2hlLnBlZWsoKTtcbiAgICB9XG5cbiAgICBsZXQgc3RhY2sgPSB2bS5lbGVtZW50cygpO1xuICAgIGxldCB1cHNlcnQgPSB0aGlzLmluc2VydCh2bS5lbnYuZ2V0QXBwZW5kT3BlcmF0aW9ucygpLCBzdGFjaywgdmFsdWUpO1xuICAgIGxldCBib3VuZHMgPSBuZXcgRnJhZ21lbnQodXBzZXJ0LmJvdW5kcyk7XG5cbiAgICBzdGFjay5uZXdCb3VuZHMoYm91bmRzKTtcblxuICAgIGlmIChjYWNoZSAvKiBpLmUuICFpc0NvbnN0KHJlZmVyZW5jZSkgKi8pIHtcbiAgICAgIHZtLnVwZGF0ZVdpdGgodGhpcy51cGRhdGVXaXRoKHZtLCByZWZlcmVuY2UsIGNhY2hlLCBib3VuZHMsIHVwc2VydCkpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgR3VhcmRlZEFwcGVuZE9wY29kZTxUIGV4dGVuZHMgSW5zZXJ0aW9uPiBleHRlbmRzIEFwcGVuZER5bmFtaWNPcGNvZGU8VD4ge1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgQXBwZW5kT3Bjb2RlOiB0eXBlb2YgT3B0aW1pemVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUgfCB0eXBlb2YgT3B0aW1pemVkVHJ1c3RpbmdBcHBlbmRPcGNvZGU7XG4gIHByaXZhdGUgc3RhcnQgPSAtMTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZ2V0IGRlb3B0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhcnQgPT09IC0xO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgaWYgKHRoaXMuZGVvcHRlZCkge1xuICAgICAgdm0uZ290byh0aGlzLnN0YXJ0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHZhbHVlID0gdm0uc3RhY2sucG9wKCk7XG5cbiAgICAgIGlmKGlzQ29tcG9uZW50RGVmaW5pdGlvbih2YWx1ZSkpIHtcbiAgICAgICAgdGhpcy5kZW9wdCh2bS5lbnYpO1xuICAgICAgICB2bS5nb3RvKHRoaXMuc3RhcnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdm0uc3RhY2sucHVzaCh2YWx1ZSk7XG4gICAgICAgIHN1cGVyLmV2YWx1YXRlKHZtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZGVvcHQoX2VudjogRW52aXJvbm1lbnQpOiBudW1iZXIgeyAvLyBQdWJsaWMgYmVjYXVzZSBpdCdzIHVzZWQgaW4gdGhlIGxhenkgZGVvcHRcbiAgICAvLyBBdCBjb21waWxlIHRpbWUsIHdlIGRldGVybWluZWQgdGhhdCB0aGlzIGFwcGVuZCBjYWxsc2l0ZSBtaWdodCByZWZlclxuICAgIC8vIHRvIGEgbG9jYWwgdmFyaWFibGUvcHJvcGVydHkgbG9va3VwIHRoYXQgcmVzb2x2ZXMgdG8gYSBjb21wb25lbnRcbiAgICAvLyBkZWZpbml0aW9uIGF0IHJ1bnRpbWUuXG4gICAgLy9cbiAgICAvLyBXZSBjb3VsZCBoYXZlIGVhZ2VybHkgY29tcGlsZWQgdGhpcyBjYWxsc2l0ZSBpbnRvIHNvbWV0aGluZyBsaWtlIHRoaXM6XG4gICAgLy9cbiAgICAvLyAgIHt7I2lmIChpcy1jb21wb25lbnQtZGVmaW5pdGlvbiBmb28pfX1cbiAgICAvLyAgICAge3tjb21wb25lbnQgZm9vfX1cbiAgICAvLyAgIHt7ZWxzZX19XG4gICAgLy8gICAgIHt7Zm9vfX1cbiAgICAvLyAgIHt7L2lmfX1cbiAgICAvL1xuICAgIC8vIEhvd2V2ZXIsIGluIHByYWN0aWNlLCB0aGVyZSBtaWdodCBiZSBhIGxhcmdlIGFtb3V0IG9mIHRoZXNlIGNhbGxzaXRlc1xuICAgIC8vIGFuZCBtb3N0IG9mIHRoZW0gd291bGQgcmVzb2x2ZSB0byBhIHNpbXBsZSB2YWx1ZSBsb29rdXAuIFRoZXJlZm9yZSwgd2VcbiAgICAvLyB0cmllZCB0byBiZSBvcHRpbWlzdGljIGFuZCBhc3N1bWVkIHRoYXQgdGhlIGNhbGxzaXRlIHdpbGwgcmVzb2x2ZSB0b1xuICAgIC8vIGFwcGVuZGluZyBhIHNpbXBsZSB2YWx1ZS5cbiAgICAvL1xuICAgIC8vIEhvd2V2ZXIsIHdlIGhhdmUgcmVhY2hlZCBoZXJlIGJlY2F1c2UgYXQgcnVudGltZSwgdGhlIGd1YXJkIGNvbmRpdGlvbmFsXG4gICAgLy8gaGF2ZSBkZXRlY3RlZCB0aGF0IHRoaXMgY2FsbHNpdGUgaXMgaW5kZWVkIHJlZmVycmluZyB0byBhIGNvbXBvbmVudFxuICAgIC8vIGRlZmluaXRpb24gb2JqZWN0LiBTaW5jZSB0aGlzIGlzIGxpa2VseSBnb2luZyB0byBiZSB0cnVlIGZvciBvdGhlclxuICAgIC8vIGluc3RhbmNlcyBvZiB0aGUgc2FtZSBjYWxsc2l0ZSwgaXQgaXMgbm93IGFwcHJvcGlhdGUgdG8gZGVvcHQgaW50byB0aGVcbiAgICAvLyBleHBhbmRlZCB2ZXJzaW9uIHRoYXQgaGFuZGxlcyBib3RoIGNhc2VzLiBUaGUgY29tcGlsYXRpb24gd291bGQgbG9va1xuICAgIC8vIGxpa2UgdGhpczpcbiAgICAvL1xuICAgIC8vICAgICAgICAgICAgICAgUHV0VmFsdWUoZXhwcmVzc2lvbilcbiAgICAvLyAgICAgICAgICAgICAgIFRlc3QoaXMtY29tcG9uZW50LWRlZmluaXRpb24pXG4gICAgLy8gICAgICAgICAgICAgICBFbnRlcihCRUdJTiwgRU5EKVxuICAgIC8vICAgQkVHSU46ICAgICAgTm9vcFxuICAgIC8vICAgICAgICAgICAgICAgSnVtcFVubGVzcyhWQUxVRSlcbiAgICAvLyAgICAgICAgICAgICAgIFB1dER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uT3Bjb2RlXG4gICAgLy8gICAgICAgICAgICAgICBPcGVuQ29tcG9uZW50XG4gICAgLy8gICAgICAgICAgICAgICBDbG9zZUNvbXBvbmVudFxuICAgIC8vICAgICAgICAgICAgICAgSnVtcChFTkQpXG4gICAgLy8gICBWQUxVRTogICAgICBOb29wXG4gICAgLy8gICAgICAgICAgICAgICBPcHRpbWl6ZWRBcHBlbmRcbiAgICAvLyAgIEVORDogICAgICAgIE5vb3BcbiAgICAvLyAgICAgICAgICAgICAgIEV4aXRcbiAgICAvL1xuICAgIC8vIEtlZXAgaW4gbWluZCB0aGF0IGV2ZW4gaWYgd2UgKmRvbid0KiByZWFjaCBoZXJlIGF0IGluaXRpYWwgcmVuZGVyIHRpbWUsXG4gICAgLy8gaXQgaXMgc3RpbGwgcG9zc2libGUgKGFsdGhvdWdoIHF1aXRlIHJhcmUpIHRoYXQgdGhlIHNpbXBsZSB2YWx1ZSB3ZVxuICAgIC8vIGVuY291bnRlciBkdXJpbmcgaW5pdGlhbCByZW5kZXIgY291bGQgbGF0ZXIgY2hhbmdlIGludG8gYSBjb21wb25lbnRcbiAgICAvLyBkZWZpbml0aW9uIG9iamVjdCBhdCB1cGRhdGUgdGltZS4gVGhhdCBpcyBoYW5kbGVkIGJ5IHRoZSBcImxhenkgZGVvcHRcIlxuICAgIC8vIGNvZGUgb24gdGhlIHVwZGF0ZSBzaWRlIChzY3JvbGwgZG93biBmb3IgdGhlIG5leHQgYmlnIGJsb2NrIG9mIGNvbW1lbnQpLlxuXG4gICAgcmV0dXJuIG51bGwgYXMgYW55O1xuICB9XG59XG5cbmNsYXNzIElzQ29tcG9uZW50RGVmaW5pdGlvblJlZmVyZW5jZSBleHRlbmRzIENvbmRpdGlvbmFsUmVmZXJlbmNlIHtcbiAgc3RhdGljIGNyZWF0ZShpbm5lcjogUmVmZXJlbmNlPE9wYXF1ZT4pOiBJc0NvbXBvbmVudERlZmluaXRpb25SZWZlcmVuY2Uge1xuICAgIHJldHVybiBuZXcgSXNDb21wb25lbnREZWZpbml0aW9uUmVmZXJlbmNlKGlubmVyKTtcbiAgfVxuXG4gIHRvQm9vbCh2YWx1ZTogT3BhcXVlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzQ29tcG9uZW50RGVmaW5pdGlvbih2YWx1ZSk7XG4gIH1cbn1cblxuYWJzdHJhY3QgY2xhc3MgVXBkYXRlT3Bjb2RlPFQgZXh0ZW5kcyBJbnNlcnRpb24+IGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgY2FjaGU6IFJlZmVyZW5jZUNhY2hlPFQ+LFxuICAgIHByb3RlY3RlZCBib3VuZHM6IEZyYWdtZW50LFxuICAgIHByb3RlY3RlZCB1cHNlcnQ6IFVwc2VydFxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudGFnID0gY2FjaGUudGFnO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogVCk6IFVwc2VydDtcblxuICBldmFsdWF0ZSh2bTogVXBkYXRpbmdWTSkge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMuY2FjaGUucmV2YWxpZGF0ZSgpO1xuXG4gICAgaWYgKGlzTW9kaWZpZWQodmFsdWUpKSB7XG4gICAgICBsZXQgeyBib3VuZHMsIHVwc2VydCB9ID0gdGhpcztcbiAgICAgIGxldCB7IGRvbSB9ID0gdm07XG5cbiAgICAgIGlmKCF0aGlzLnVwc2VydC51cGRhdGUoZG9tLCB2YWx1ZSkpIHtcbiAgICAgICAgbGV0IGN1cnNvciA9IG5ldyBDdXJzb3IoYm91bmRzLnBhcmVudEVsZW1lbnQoKSwgY2xlYXIoYm91bmRzKSk7XG4gICAgICAgIHVwc2VydCA9IHRoaXMudXBzZXJ0ID0gdGhpcy5pbnNlcnQodm0uZW52LmdldEFwcGVuZE9wZXJhdGlvbnMoKSwgY3Vyc29yLCB2YWx1ZSBhcyBUKTtcbiAgICAgIH1cblxuICAgICAgYm91bmRzLnVwZGF0ZSh1cHNlcnQuYm91bmRzKTtcbiAgICB9XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgbGV0IHsgX2d1aWQ6IGd1aWQsIHR5cGUsIGNhY2hlIH0gPSB0aGlzO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGd1aWQsXG4gICAgICB0eXBlLFxuICAgICAgZGV0YWlsczogeyBsYXN0VmFsdWU6IEpTT04uc3RyaW5naWZ5KGNhY2hlLnBlZWsoKSkgfVxuICAgIH07XG4gIH1cbn1cblxuYWJzdHJhY3QgY2xhc3MgR3VhcmRlZFVwZGF0ZU9wY29kZTxUIGV4dGVuZHMgSW5zZXJ0aW9uPiBleHRlbmRzIFVwZGF0ZU9wY29kZTxUPiB7XG4gIHByaXZhdGUgX3RhZzogVGFnV3JhcHBlcjxVcGRhdGFibGVUYWc+O1xuICBwcml2YXRlIGRlb3B0ZWQ6IE9wdGlvbjxUcnlPcGNvZGU+ID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4sXG4gICAgY2FjaGU6IFJlZmVyZW5jZUNhY2hlPFQ+LFxuICAgIGJvdW5kczogRnJhZ21lbnQsXG4gICAgdXBzZXJ0OiBVcHNlcnRcbiAgKSB7XG4gICAgc3VwZXIoY2FjaGUsIGJvdW5kcywgdXBzZXJ0KTtcbiAgICB0aGlzLnRhZyA9IHRoaXMuX3RhZyA9IFVwZGF0YWJsZVRhZy5jcmVhdGUodGhpcy50YWcpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICBpZiAodGhpcy5kZW9wdGVkKSB7XG4gICAgICB2bS5ldmFsdWF0ZU9wY29kZSh0aGlzLmRlb3B0ZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaXNDb21wb25lbnREZWZpbml0aW9uKHRoaXMucmVmZXJlbmNlLnZhbHVlKCkpKSB7XG4gICAgICAgIHRoaXMubGF6eURlb3B0KHZtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN1cGVyLmV2YWx1YXRlKHZtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxhenlEZW9wdChfdm06IFVwZGF0aW5nVk0pIHtcbiAgICAvLyBEdXJpZ24gaW5pdGlhbCByZW5kZXIsIHdlIGtub3cgdGhhdCB0aGUgcmVmZXJlbmNlIGRvZXMgbm90IGNvbnRhaW4gYVxuICAgIC8vIGNvbXBvbmVudCBkZWZpbml0aW9uLCBzbyB3ZSBvcHRpbWlzdGljYWxseSBhc3N1bWVkIHRoYXQgdGhpcyBhcHBlbmRcbiAgICAvLyBpcyBqdXN0IGEgbm9ybWFsIGFwcGVuZC4gSG93ZXZlciwgYXQgdXBkYXRlIHRpbWUsIHdlIGRpc2NvdmVyZWQgdGhhdFxuICAgIC8vIHRoZSByZWZlcmVuY2UgaGFzIHN3aXRjaGVkIGludG8gY29udGFpbmluZyBhIGNvbXBvbmVudCBkZWZpbml0aW9uLCBzb1xuICAgIC8vIHdlIG5lZWQgdG8gZG8gYSBcImxhenkgZGVvcHRcIiwgc2ltdWxhdGluZyB3aGF0IHdvdWxkIGhhdmUgaGFwcGVuZWQgaWZcbiAgICAvLyB3ZSBoYWQgZGVjaWRlZCB0byBwZXJmb3JtIHRoZSBkZW9wdCBpbiB0aGUgZmlyc3QgcGxhY2UgZHVyaW5nIGluaXRpYWxcbiAgICAvLyByZW5kZXIuXG4gICAgLy9cbiAgICAvLyBNb3JlIGNvbmNyZXRlbHksIHdlIHdvdWxkIGhhdmUgZXhwYW5kZWQgdGhlIGN1cmx5IGludG8gYSBpZi9lbHNlLCBhbmRcbiAgICAvLyBiYXNlZCBvbiB3aGV0aGVyIHRoZSB2YWx1ZSBpcyBhIGNvbXBvbmVudCBkZWZpbml0aW9uIG9yIG5vdCwgd2Ugd291bGRcbiAgICAvLyBoYXZlIGVudGVyZWQgZWl0aGVyIHRoZSBkeW5hbWljIGNvbXBvbmVudCBicmFuY2ggb3IgdGhlIHNpbXBsZSB2YWx1ZVxuICAgIC8vIGJyYW5jaC5cbiAgICAvL1xuICAgIC8vIFNpbmNlIHdlIHJlbmRlcmVkIGEgc2ltcGxlIHZhbHVlIGR1cmluZyBpbml0aWFsIHJlbmRlciAoYW5kIGFsbCB0aGVcbiAgICAvLyB1cGRhdGVzIHVwIHVudGlsIHRoaXMgcG9pbnQpLCB3ZSBuZWVkIHRvIHByZXRlbmQgdGhhdCB0aGUgcmVzdWx0IGlzXG4gICAgLy8gcHJvZHVjZWQgYnkgdGhlIFwiVkFMVUVcIiBicmFuY2ggb2YgdGhlIGRlb3B0ZWQgYXBwZW5kIG9wY29kZTpcbiAgICAvL1xuICAgIC8vICAgVHJ5KEJFR0lOLCBFTkQpXG4gICAgLy8gICAgIEFzc2VydChJc0NvbXBvbmVudERlZmluaXRpb24sIGV4cGVjdGVkPWZhbHNlKVxuICAgIC8vICAgICBPcHRpbWl6ZWRVcGRhdGVcbiAgICAvL1xuICAgIC8vIEluIHRoaXMgY2FzZSwgYmVjYXVzZSB0aGUgcmVmZXJlbmNlIGhhcyBzd2l0Y2hlZCBmcm9tIGJlaW5nIGEgc2ltcGxlXG4gICAgLy8gdmFsdWUgaW50byBhIGNvbXBvbmVudCBkZWZpbml0aW9uLCB3aGF0IHdvdWxkIGhhdmUgaGFwcGVuZWQgaXMgdGhhdFxuICAgIC8vIHRoZSBhc3NlcnQgd291bGQgdGhyb3csIGNhdXNpbmcgdGhlIFRyeSBvcGNvZGUgdG8gdGVhcmRvd24gdGhlIGJvdW5kc1xuICAgIC8vIGFuZCByZXJ1biB0aGUgb3JpZ2luYWwgYXBwZW5kIG9wY29kZS5cbiAgICAvL1xuICAgIC8vIFNpbmNlIHRoZSBUcnkgb3Bjb2RlIHdvdWxkIGhhdmUgbnVrZWQgdGhlIHVwZGF0aW5nIG9wY29kZXMgYW55d2F5LCB3ZVxuICAgIC8vIHdvdWxkbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgc2ltdWxhdGluZyB0aG9zZS4gQWxsIHdlIGhhdmUgdG8gZG8gaXMgdG9cbiAgICAvLyBleGVjdXRlIHRoZSBUcnkgb3Bjb2RlIGFuZCBpbW1lZGlhdGVseSB0aHJvdy5cblxuICAgIHJldHVybiBudWxsIGFzIGFueTtcbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICBsZXQgeyBfZ3VpZDogZ3VpZCwgdHlwZSwgZGVvcHRlZCB9ID0gdGhpcztcblxuICAgIGlmIChkZW9wdGVkKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBndWlkLFxuICAgICAgICB0eXBlLFxuICAgICAgICBkZW9wdGVkOiB0cnVlLFxuICAgICAgICBjaGlsZHJlbjogW2Rlb3B0ZWQudG9KU09OKCldXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gc3VwZXIudG9KU09OKCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPcHRpbWl6ZWRDYXV0aW91c0FwcGVuZE9wY29kZSBleHRlbmRzIEFwcGVuZER5bmFtaWNPcGNvZGU8Q2F1dGlvdXNJbnNlcnRpb24+IHtcbiAgdHlwZSA9ICdvcHRpbWl6ZWQtY2F1dGlvdXMtYXBwZW5kJztcblxuICBwcm90ZWN0ZWQgbm9ybWFsaXplKHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4pOiBSZWZlcmVuY2U8Q2F1dGlvdXNJbnNlcnRpb24+IHtcbiAgICByZXR1cm4gbWFwKHJlZmVyZW5jZSwgbm9ybWFsaXplVmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogQ2F1dGlvdXNJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiBjYXV0aW91c0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZVdpdGgoX3ZtOiBWTSwgX3JlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4sIGNhY2hlOiBSZWZlcmVuY2VDYWNoZTxDYXV0aW91c0luc2VydGlvbj4sIGJvdW5kczogRnJhZ21lbnQsIHVwc2VydDogVXBzZXJ0KTogVXBkYXRpbmdPcGNvZGUge1xuICAgIHJldHVybiBuZXcgT3B0aW1pemVkQ2F1dGlvdXNVcGRhdGVPcGNvZGUoY2FjaGUsIGJvdW5kcywgdXBzZXJ0KTtcbiAgfVxufVxuXG5jbGFzcyBPcHRpbWl6ZWRDYXV0aW91c1VwZGF0ZU9wY29kZSBleHRlbmRzIFVwZGF0ZU9wY29kZTxDYXV0aW91c0luc2VydGlvbj4ge1xuICB0eXBlID0gJ29wdGltaXplZC1jYXV0aW91cy11cGRhdGUnO1xuXG4gIHByb3RlY3RlZCBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IENhdXRpb3VzSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgICByZXR1cm4gY2F1dGlvdXNJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgR3VhcmRlZENhdXRpb3VzQXBwZW5kT3Bjb2RlIGV4dGVuZHMgR3VhcmRlZEFwcGVuZE9wY29kZTxDYXV0aW91c0luc2VydGlvbj4ge1xuICB0eXBlID0gJ2d1YXJkZWQtY2F1dGlvdXMtYXBwZW5kJztcblxuICBwcm90ZWN0ZWQgQXBwZW5kT3Bjb2RlID0gT3B0aW1pemVkQ2F1dGlvdXNBcHBlbmRPcGNvZGU7XG5cbiAgcHJvdGVjdGVkIG5vcm1hbGl6ZShyZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+KTogUmVmZXJlbmNlPENhdXRpb3VzSW5zZXJ0aW9uPiB7XG4gICAgcmV0dXJuIG1hcChyZWZlcmVuY2UsIG5vcm1hbGl6ZVZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IENhdXRpb3VzSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgICByZXR1cm4gY2F1dGlvdXNJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVXaXRoKF92bTogVk0sIHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4sIGNhY2hlOiBSZWZlcmVuY2VDYWNoZTxDYXV0aW91c0luc2VydGlvbj4sIGJvdW5kczogRnJhZ21lbnQsIHVwc2VydDogVXBzZXJ0KTogVXBkYXRpbmdPcGNvZGUge1xuICAgIHJldHVybiBuZXcgR3VhcmRlZENhdXRpb3VzVXBkYXRlT3Bjb2RlKHJlZmVyZW5jZSwgY2FjaGUsIGJvdW5kcywgdXBzZXJ0KTtcbiAgfVxufVxuXG5jbGFzcyBHdWFyZGVkQ2F1dGlvdXNVcGRhdGVPcGNvZGUgZXh0ZW5kcyBHdWFyZGVkVXBkYXRlT3Bjb2RlPENhdXRpb3VzSW5zZXJ0aW9uPiB7XG4gIHR5cGUgPSAnZ3VhcmRlZC1jYXV0aW91cy11cGRhdGUnO1xuXG4gIHByb3RlY3RlZCBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IENhdXRpb3VzSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgICByZXR1cm4gY2F1dGlvdXNJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT3B0aW1pemVkVHJ1c3RpbmdBcHBlbmRPcGNvZGUgZXh0ZW5kcyBBcHBlbmREeW5hbWljT3Bjb2RlPFRydXN0aW5nSW5zZXJ0aW9uPiB7XG4gIHR5cGUgPSAnb3B0aW1pemVkLXRydXN0aW5nLWFwcGVuZCc7XG5cbiAgcHJvdGVjdGVkIG5vcm1hbGl6ZShyZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+KTogUmVmZXJlbmNlPFRydXN0aW5nSW5zZXJ0aW9uPiB7XG4gICAgcmV0dXJuIG1hcChyZWZlcmVuY2UsIG5vcm1hbGl6ZVRydXN0ZWRWYWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBUcnVzdGluZ0luc2VydGlvbik6IFVwc2VydCB7XG4gICAgcmV0dXJuIHRydXN0aW5nSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlV2l0aChfdm06IFZNLCBfcmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPiwgY2FjaGU6IFJlZmVyZW5jZUNhY2hlPFRydXN0aW5nSW5zZXJ0aW9uPiwgYm91bmRzOiBGcmFnbWVudCwgdXBzZXJ0OiBVcHNlcnQpOiBVcGRhdGluZ09wY29kZSB7XG4gICAgcmV0dXJuIG5ldyBPcHRpbWl6ZWRUcnVzdGluZ1VwZGF0ZU9wY29kZShjYWNoZSwgYm91bmRzLCB1cHNlcnQpO1xuICB9XG59XG5cbmNsYXNzIE9wdGltaXplZFRydXN0aW5nVXBkYXRlT3Bjb2RlIGV4dGVuZHMgVXBkYXRlT3Bjb2RlPFRydXN0aW5nSW5zZXJ0aW9uPiB7XG4gIHR5cGUgPSAnb3B0aW1pemVkLXRydXN0aW5nLXVwZGF0ZSc7XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogVHJ1c3RpbmdJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiB0cnVzdGluZ0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHdWFyZGVkVHJ1c3RpbmdBcHBlbmRPcGNvZGUgZXh0ZW5kcyBHdWFyZGVkQXBwZW5kT3Bjb2RlPFRydXN0aW5nSW5zZXJ0aW9uPiB7XG4gIHR5cGUgPSAnZ3VhcmRlZC10cnVzdGluZy1hcHBlbmQnO1xuXG4gIHByb3RlY3RlZCBBcHBlbmRPcGNvZGUgPSBPcHRpbWl6ZWRUcnVzdGluZ0FwcGVuZE9wY29kZTtcblxuICBwcm90ZWN0ZWQgbm9ybWFsaXplKHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4pOiBSZWZlcmVuY2U8VHJ1c3RpbmdJbnNlcnRpb24+IHtcbiAgICByZXR1cm4gbWFwKHJlZmVyZW5jZSwgbm9ybWFsaXplVHJ1c3RlZFZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IFRydXN0aW5nSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgICByZXR1cm4gdHJ1c3RpbmdJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVXaXRoKF92bTogVk0sIHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4sIGNhY2hlOiBSZWZlcmVuY2VDYWNoZTxUcnVzdGluZ0luc2VydGlvbj4sIGJvdW5kczogRnJhZ21lbnQsIHVwc2VydDogVXBzZXJ0KTogVXBkYXRpbmdPcGNvZGUge1xuICAgIHJldHVybiBuZXcgR3VhcmRlZFRydXN0aW5nVXBkYXRlT3Bjb2RlKHJlZmVyZW5jZSwgY2FjaGUsIGJvdW5kcywgdXBzZXJ0KTtcbiAgfVxufVxuXG5jbGFzcyBHdWFyZGVkVHJ1c3RpbmdVcGRhdGVPcGNvZGUgZXh0ZW5kcyBHdWFyZGVkVXBkYXRlT3Bjb2RlPFRydXN0aW5nSW5zZXJ0aW9uPiB7XG4gIHR5cGUgPSAndHJ1c3RpbmctdXBkYXRlJztcblxuICBwcm90ZWN0ZWQgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBUcnVzdGluZ0luc2VydGlvbik6IFVwc2VydCB7XG4gICAgcmV0dXJuIHRydXN0aW5nSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvbnRlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxBQUFlLEFBS2IsQUFBWSxBQUNaLEFBQU0sQUFDTixBQUFRLEFBRVIsQUFBYyxBQUNkLEFBQWMsQUFDZixBQUFNLEFBQWMsQUFBQzs7QUFDdEIsQUFBTyxBQUFFLEFBQXFCLEFBQUUsQUFBTSxBQUE0QixBQUFDOztBQUVuRSxBQUFPLEFBQWMsQUFBYyxBQUFFLEFBQU0sQUFBZSxBQUFDOztBQUczRCxBQUFPLEFBQXFDLEFBQWMsQUFBRSxBQUFZLEFBQWMsQUFBVSxBQUFFLEFBQU8sQUFBRSxBQUFHLEFBQUUsQUFBTSxBQUFvQixBQUFDOztBQUUzSSxBQUFPLEFBQUUsQUFBTSxBQUFFLEFBQUssQUFBRSxBQUFNLEFBQWMsQUFBQzs7QUFDN0MsQUFBTyxBQUFFLEFBQVEsQUFBRSxBQUFNLEFBQWUsQUFBQzs7QUFDekMsQUFBTyxBQUFFLEFBQW9CLEFBQUUsQUFBTSxBQUFrQixBQUFDLEFBRXhELEFBQU8sQUFBRSxBQUFjLEFBQU0sQUFBTSxBQUFlLEFBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRW5ELEFBQWMsd0JBQUMsQUFBRyxJQUFDLEdBQWlCLHNCQUFFLFVBQUMsQUFBRSxBQUFFO1FBQU8sQUFBTSxBQUFFLGNBQWIsQUFBRyxBQUM5Qzs7UUFBSSxBQUFNLFNBQUcsQUFBRSxHQUFDLEFBQVMsVUFBQyxBQUFRLFNBQUMsQUFBTSxBQUFtQyxBQUFDLEFBQzdFLEFBQU07V0FBQyxBQUFRLFNBQUMsQUFBRSxBQUFDLEFBQUMsQUFDdEIsQUFBQyxBQUFDLEFBQUM7O0FBRUgsaUJBQWlCLEFBQWEsT0FDNUIsQUFBTTtXQUFDLEFBQUssVUFBSyxBQUFJLFFBQUksQUFBSyxVQUFLLEFBQVMsYUFBSSxPQUFPLEFBQUssTUFBQyxBQUFVLEFBQUMsZ0JBQUssQUFBVSxBQUFDLEFBQzFG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QUFLLEFBQUMsQUFBQyxBQUM1QyxBQUFDLEFBQ0Y7Ozs7RUFOMkMsQUFBK0IsQUFRM0UsQUFBTTs7SUFBbUM7MkNBQXpDOzs7Ozt5RkFDRTs7Z0JBQUksT0FBRyxBQUF5QixBQUFDLEFBRXZCO2dCQUFZLGVBQUcsQUFBNkIsQUFBQyxBQWF6RDtlQUFDOzs7MENBWFcsQUFBUywrQkFBQyxBQUE0QixXQUM5QyxBQUFNO2VBQUMsQUFBRyxxQkFBQyxBQUFTLFdBQUUsQUFBcUIsQUFBQyxBQUFDLEFBQy9DLEFBQUM7OzswQ0FFUyxBQUFNLHlCQUFDLEFBQXdCLEtBQUUsQUFBYyxRQUFFLEFBQXdCLE9BQ2pGLEFBQU07ZUFBQyxBQUFjLDRCQUFDLEFBQUcsS0FBRSxBQUFNLFFBQUUsQUFBSyxBQUFDLEFBQUMsQUFDNUMsQUFBQzs7OzBDQUVTLEFBQVUsaUNBQUMsQUFBTyxLQUFFLEFBQTRCLFdBQUUsQUFBd0MsT0FBRSxBQUFnQixRQUFFLEFBQWMsUUFDcEksQUFBTTtlQUFDLElBQUksQUFBMkIsNEJBQUMsQUFBUyxXQUFFLEFBQUssT0FBRSxBQUFNLFFBQUUsQUFBTSxBQUFDLEFBQUMsQUFDM0UsQUFBQyxBQUNGLEFBRUQ7Ozs7RUFsQmlELEFBQXNDOztJQWtCckQ7MkNBQWxDOzs7Ozt5RkFDRTs7Z0JBQUksT0FBRyxBQUFpQixBQUFDLEFBSzNCO2VBQUM7OzswQ0FIVyxBQUFNLHlCQUFDLEFBQXdCLEtBQUUsQUFBYyxRQUFFLEFBQXdCLE9BQ2pGLEFBQU07ZUFBQyxBQUFjLDRCQUFDLEFBQUcsS0FBRSxBQUFNLFFBQUUsQUFBSyxBQUFDLEFBQUMsQUFDNUMsQUFBQyxBQUNGOzs7O0VBTnlDLEFBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFVwc2VydCwge1xuICBJbnNlcnRpb24sXG4gIENhdXRpb3VzSW5zZXJ0aW9uLFxuICBUcnVzdGluZ0luc2VydGlvbixcblxuICBpc1NhZmVTdHJpbmcsXG4gIGlzTm9kZSxcbiAgaXNTdHJpbmcsXG5cbiAgY2F1dGlvdXNJbnNlcnQsXG4gIHRydXN0aW5nSW5zZXJ0XG59IGZyb20gJy4uLy4uL3Vwc2VydCc7XG5pbXBvcnQgeyBpc0NvbXBvbmVudERlZmluaXRpb24gfSBmcm9tICcuLi8uLi9jb21wb25lbnQvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBET01UcmVlQ29uc3RydWN0aW9uIH0gZnJvbSAnLi4vLi4vZG9tL2hlbHBlcic7XG5pbXBvcnQgeyBPcGNvZGVKU09OLCBVcGRhdGluZ09wY29kZSB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IHsgVk0sIFVwZGF0aW5nVk0gfSBmcm9tICcuLi8uLi92bSc7XG5pbXBvcnQgeyBUcnlPcGNvZGUgfSBmcm9tICcuLi8uLi92bS91cGRhdGUnO1xuaW1wb3J0IHsgUmVmZXJlbmNlLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlLCBSZWZlcmVuY2VDYWNoZSwgVXBkYXRhYmxlVGFnLCBUYWdXcmFwcGVyLCBpc01vZGlmaWVkLCBpc0NvbnN0LCBtYXAgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgT3B0aW9uLCBPcGFxdWUgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IEN1cnNvciwgY2xlYXIgfSBmcm9tICcuLi8uLi9ib3VuZHMnO1xuaW1wb3J0IHsgRnJhZ21lbnQgfSBmcm9tICcuLi8uLi9idWlsZGVyJztcbmltcG9ydCB7IENvbmRpdGlvbmFsUmVmZXJlbmNlIH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4uLy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IEFQUEVORF9PUENPREVTLCBPcCB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuRHluYW1pY0NvbnRlbnQsICh2bSwgeyBvcDE6IGFwcGVuZCB9KSA9PiB7XG4gIGxldCBvcGNvZGUgPSB2bS5jb25zdGFudHMuZ2V0T3RoZXIoYXBwZW5kKSBhcyBBcHBlbmREeW5hbWljT3Bjb2RlPEluc2VydGlvbj47XG4gIG9wY29kZS5ldmFsdWF0ZSh2bSk7XG59KTtcblxuZnVuY3Rpb24gaXNFbXB0eSh2YWx1ZTogT3BhcXVlKTogYm9vbGVhbiB7XG4gIHJldHVybiB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiB2YWx1ZVsndG9TdHJpbmcnXSAhPT0gJ2Z1bmN0aW9uJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVRleHRWYWx1ZSh2YWx1ZTogT3BhcXVlKTogc3RyaW5nIHtcbiAgaWYgKGlzRW1wdHkodmFsdWUpKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIHJldHVybiBTdHJpbmcodmFsdWUpO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVUcnVzdGVkVmFsdWUodmFsdWU6IE9wYXF1ZSk6IFRydXN0aW5nSW5zZXJ0aW9uIHtcbiAgaWYgKGlzRW1wdHkodmFsdWUpKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKGlzU2FmZVN0cmluZyh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWUudG9IVE1MKCk7XG4gIH1cbiAgaWYgKGlzTm9kZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVZhbHVlKHZhbHVlOiBPcGFxdWUpOiBDYXV0aW91c0luc2VydGlvbiB7XG4gIGlmIChpc0VtcHR5KHZhbHVlKSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmIChpc1NhZmVTdHJpbmcodmFsdWUpIHx8IGlzTm9kZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG59XG5cbmV4cG9ydCB0eXBlIEFwcGVuZER5bmFtaWNPcGNvZGVDb25zdHJ1Y3RvciA9ICB0eXBlb2YgT3B0aW1pemVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUgfCB0eXBlb2YgT3B0aW1pemVkVHJ1c3RpbmdBcHBlbmRPcGNvZGU7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBcHBlbmREeW5hbWljT3Bjb2RlPFQgZXh0ZW5kcyBJbnNlcnRpb24+IHtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IG5vcm1hbGl6ZShyZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+KTogUmVmZXJlbmNlPFQ+O1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBUKTogVXBzZXJ0O1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgdXBkYXRlV2l0aCh2bTogVk0sIHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4sIGNhY2hlOiBSZWZlcmVuY2VDYWNoZTxUPiwgYm91bmRzOiBGcmFnbWVudCwgdXBzZXJ0OiBVcHNlcnQpOiBVcGRhdGluZ09wY29kZTtcblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICBsZXQgcmVmZXJlbmNlID0gdm0uc3RhY2sucG9wPFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPj4oKTtcbiAgICBsZXQgbm9ybWFsaXplZCA9IHRoaXMubm9ybWFsaXplKHJlZmVyZW5jZSk7XG5cbiAgICBsZXQgdmFsdWUsIGNhY2hlO1xuXG4gICAgaWYgKGlzQ29uc3QocmVmZXJlbmNlKSkge1xuICAgICAgdmFsdWUgPSBub3JtYWxpemVkLnZhbHVlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKG5vcm1hbGl6ZWQpO1xuICAgICAgdmFsdWUgPSBjYWNoZS5wZWVrKCk7XG4gICAgfVxuXG4gICAgbGV0IHN0YWNrID0gdm0uZWxlbWVudHMoKTtcbiAgICBsZXQgdXBzZXJ0ID0gdGhpcy5pbnNlcnQodm0uZW52LmdldEFwcGVuZE9wZXJhdGlvbnMoKSwgc3RhY2ssIHZhbHVlKTtcbiAgICBsZXQgYm91bmRzID0gbmV3IEZyYWdtZW50KHVwc2VydC5ib3VuZHMpO1xuXG4gICAgc3RhY2submV3Qm91bmRzKGJvdW5kcyk7XG5cbiAgICBpZiAoY2FjaGUgLyogaS5lLiAhaXNDb25zdChyZWZlcmVuY2UpICovKSB7XG4gICAgICB2bS51cGRhdGVXaXRoKHRoaXMudXBkYXRlV2l0aCh2bSwgcmVmZXJlbmNlLCBjYWNoZSwgYm91bmRzLCB1cHNlcnQpKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEd1YXJkZWRBcHBlbmRPcGNvZGU8VCBleHRlbmRzIEluc2VydGlvbj4gZXh0ZW5kcyBBcHBlbmREeW5hbWljT3Bjb2RlPFQ+IHtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IEFwcGVuZE9wY29kZTogdHlwZW9mIE9wdGltaXplZENhdXRpb3VzQXBwZW5kT3Bjb2RlIHwgdHlwZW9mIE9wdGltaXplZFRydXN0aW5nQXBwZW5kT3Bjb2RlO1xuICBwcml2YXRlIHN0YXJ0ID0gLTE7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGdldCBkZW9wdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0YXJ0ID09PSAtMTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIGlmICh0aGlzLmRlb3B0ZWQpIHtcbiAgICAgIHZtLmdvdG8odGhpcy5zdGFydCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCB2YWx1ZSA9IHZtLnN0YWNrLnBvcCgpO1xuXG4gICAgICBpZihpc0NvbXBvbmVudERlZmluaXRpb24odmFsdWUpKSB7XG4gICAgICAgIHRoaXMuZGVvcHQodm0uZW52KTtcbiAgICAgICAgdm0uZ290byh0aGlzLnN0YXJ0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZtLnN0YWNrLnB1c2godmFsdWUpO1xuICAgICAgICBzdXBlci5ldmFsdWF0ZSh2bSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRlb3B0KF9lbnY6IEVudmlyb25tZW50KTogbnVtYmVyIHsgLy8gUHVibGljIGJlY2F1c2UgaXQncyB1c2VkIGluIHRoZSBsYXp5IGRlb3B0XG4gICAgLy8gQXQgY29tcGlsZSB0aW1lLCB3ZSBkZXRlcm1pbmVkIHRoYXQgdGhpcyBhcHBlbmQgY2FsbHNpdGUgbWlnaHQgcmVmZXJcbiAgICAvLyB0byBhIGxvY2FsIHZhcmlhYmxlL3Byb3BlcnR5IGxvb2t1cCB0aGF0IHJlc29sdmVzIHRvIGEgY29tcG9uZW50XG4gICAgLy8gZGVmaW5pdGlvbiBhdCBydW50aW1lLlxuICAgIC8vXG4gICAgLy8gV2UgY291bGQgaGF2ZSBlYWdlcmx5IGNvbXBpbGVkIHRoaXMgY2FsbHNpdGUgaW50byBzb21ldGhpbmcgbGlrZSB0aGlzOlxuICAgIC8vXG4gICAgLy8gICB7eyNpZiAoaXMtY29tcG9uZW50LWRlZmluaXRpb24gZm9vKX19XG4gICAgLy8gICAgIHt7Y29tcG9uZW50IGZvb319XG4gICAgLy8gICB7e2Vsc2V9fVxuICAgIC8vICAgICB7e2Zvb319XG4gICAgLy8gICB7ey9pZn19XG4gICAgLy9cbiAgICAvLyBIb3dldmVyLCBpbiBwcmFjdGljZSwgdGhlcmUgbWlnaHQgYmUgYSBsYXJnZSBhbW91dCBvZiB0aGVzZSBjYWxsc2l0ZXNcbiAgICAvLyBhbmQgbW9zdCBvZiB0aGVtIHdvdWxkIHJlc29sdmUgdG8gYSBzaW1wbGUgdmFsdWUgbG9va3VwLiBUaGVyZWZvcmUsIHdlXG4gICAgLy8gdHJpZWQgdG8gYmUgb3B0aW1pc3RpYyBhbmQgYXNzdW1lZCB0aGF0IHRoZSBjYWxsc2l0ZSB3aWxsIHJlc29sdmUgdG9cbiAgICAvLyBhcHBlbmRpbmcgYSBzaW1wbGUgdmFsdWUuXG4gICAgLy9cbiAgICAvLyBIb3dldmVyLCB3ZSBoYXZlIHJlYWNoZWQgaGVyZSBiZWNhdXNlIGF0IHJ1bnRpbWUsIHRoZSBndWFyZCBjb25kaXRpb25hbFxuICAgIC8vIGhhdmUgZGV0ZWN0ZWQgdGhhdCB0aGlzIGNhbGxzaXRlIGlzIGluZGVlZCByZWZlcnJpbmcgdG8gYSBjb21wb25lbnRcbiAgICAvLyBkZWZpbml0aW9uIG9iamVjdC4gU2luY2UgdGhpcyBpcyBsaWtlbHkgZ29pbmcgdG8gYmUgdHJ1ZSBmb3Igb3RoZXJcbiAgICAvLyBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgY2FsbHNpdGUsIGl0IGlzIG5vdyBhcHByb3BpYXRlIHRvIGRlb3B0IGludG8gdGhlXG4gICAgLy8gZXhwYW5kZWQgdmVyc2lvbiB0aGF0IGhhbmRsZXMgYm90aCBjYXNlcy4gVGhlIGNvbXBpbGF0aW9uIHdvdWxkIGxvb2tcbiAgICAvLyBsaWtlIHRoaXM6XG4gICAgLy9cbiAgICAvLyAgICAgICAgICAgICAgIFB1dFZhbHVlKGV4cHJlc3Npb24pXG4gICAgLy8gICAgICAgICAgICAgICBUZXN0KGlzLWNvbXBvbmVudC1kZWZpbml0aW9uKVxuICAgIC8vICAgICAgICAgICAgICAgRW50ZXIoQkVHSU4sIEVORClcbiAgICAvLyAgIEJFR0lOOiAgICAgIE5vb3BcbiAgICAvLyAgICAgICAgICAgICAgIEp1bXBVbmxlc3MoVkFMVUUpXG4gICAgLy8gICAgICAgICAgICAgICBQdXREeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvbk9wY29kZVxuICAgIC8vICAgICAgICAgICAgICAgT3BlbkNvbXBvbmVudFxuICAgIC8vICAgICAgICAgICAgICAgQ2xvc2VDb21wb25lbnRcbiAgICAvLyAgICAgICAgICAgICAgIEp1bXAoRU5EKVxuICAgIC8vICAgVkFMVUU6ICAgICAgTm9vcFxuICAgIC8vICAgICAgICAgICAgICAgT3B0aW1pemVkQXBwZW5kXG4gICAgLy8gICBFTkQ6ICAgICAgICBOb29wXG4gICAgLy8gICAgICAgICAgICAgICBFeGl0XG4gICAgLy9cbiAgICAvLyBLZWVwIGluIG1pbmQgdGhhdCBldmVuIGlmIHdlICpkb24ndCogcmVhY2ggaGVyZSBhdCBpbml0aWFsIHJlbmRlciB0aW1lLFxuICAgIC8vIGl0IGlzIHN0aWxsIHBvc3NpYmxlIChhbHRob3VnaCBxdWl0ZSByYXJlKSB0aGF0IHRoZSBzaW1wbGUgdmFsdWUgd2VcbiAgICAvLyBlbmNvdW50ZXIgZHVyaW5nIGluaXRpYWwgcmVuZGVyIGNvdWxkIGxhdGVyIGNoYW5nZSBpbnRvIGEgY29tcG9uZW50XG4gICAgLy8gZGVmaW5pdGlvbiBvYmplY3QgYXQgdXBkYXRlIHRpbWUuIFRoYXQgaXMgaGFuZGxlZCBieSB0aGUgXCJsYXp5IGRlb3B0XCJcbiAgICAvLyBjb2RlIG9uIHRoZSB1cGRhdGUgc2lkZSAoc2Nyb2xsIGRvd24gZm9yIHRoZSBuZXh0IGJpZyBibG9jayBvZiBjb21tZW50KS5cblxuICAgIHJldHVybiBudWxsIGFzIGFueTtcbiAgfVxufVxuXG5jbGFzcyBJc0NvbXBvbmVudERlZmluaXRpb25SZWZlcmVuY2UgZXh0ZW5kcyBDb25kaXRpb25hbFJlZmVyZW5jZSB7XG4gIHN0YXRpYyBjcmVhdGUoaW5uZXI6IFJlZmVyZW5jZTxPcGFxdWU+KTogSXNDb21wb25lbnREZWZpbml0aW9uUmVmZXJlbmNlIHtcbiAgICByZXR1cm4gbmV3IElzQ29tcG9uZW50RGVmaW5pdGlvblJlZmVyZW5jZShpbm5lcik7XG4gIH1cblxuICB0b0Jvb2wodmFsdWU6IE9wYXF1ZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc0NvbXBvbmVudERlZmluaXRpb24odmFsdWUpO1xuICB9XG59XG5cbmFic3RyYWN0IGNsYXNzIFVwZGF0ZU9wY29kZTxUIGV4dGVuZHMgSW5zZXJ0aW9uPiBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGNhY2hlOiBSZWZlcmVuY2VDYWNoZTxUPixcbiAgICBwcm90ZWN0ZWQgYm91bmRzOiBGcmFnbWVudCxcbiAgICBwcm90ZWN0ZWQgdXBzZXJ0OiBVcHNlcnRcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnRhZyA9IGNhY2hlLnRhZztcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IFQpOiBVcHNlcnQ7XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLmNhY2hlLnJldmFsaWRhdGUoKTtcblxuICAgIGlmIChpc01vZGlmaWVkKHZhbHVlKSkge1xuICAgICAgbGV0IHsgYm91bmRzLCB1cHNlcnQgfSA9IHRoaXM7XG4gICAgICBsZXQgeyBkb20gfSA9IHZtO1xuXG4gICAgICBpZighdGhpcy51cHNlcnQudXBkYXRlKGRvbSwgdmFsdWUpKSB7XG4gICAgICAgIGxldCBjdXJzb3IgPSBuZXcgQ3Vyc29yKGJvdW5kcy5wYXJlbnRFbGVtZW50KCksIGNsZWFyKGJvdW5kcykpO1xuICAgICAgICB1cHNlcnQgPSB0aGlzLnVwc2VydCA9IHRoaXMuaW5zZXJ0KHZtLmVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCksIGN1cnNvciwgdmFsdWUgYXMgVCk7XG4gICAgICB9XG5cbiAgICAgIGJvdW5kcy51cGRhdGUodXBzZXJ0LmJvdW5kcyk7XG4gICAgfVxuICB9XG59XG5cbmFic3RyYWN0IGNsYXNzIEd1YXJkZWRVcGRhdGVPcGNvZGU8VCBleHRlbmRzIEluc2VydGlvbj4gZXh0ZW5kcyBVcGRhdGVPcGNvZGU8VD4ge1xuICBwcml2YXRlIF90YWc6IFRhZ1dyYXBwZXI8VXBkYXRhYmxlVGFnPjtcbiAgcHJpdmF0ZSBkZW9wdGVkOiBPcHRpb248VHJ5T3Bjb2RlPiA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+LFxuICAgIGNhY2hlOiBSZWZlcmVuY2VDYWNoZTxUPixcbiAgICBib3VuZHM6IEZyYWdtZW50LFxuICAgIHVwc2VydDogVXBzZXJ0XG4gICkge1xuICAgIHN1cGVyKGNhY2hlLCBib3VuZHMsIHVwc2VydCk7XG4gICAgdGhpcy50YWcgPSB0aGlzLl90YWcgPSBVcGRhdGFibGVUYWcuY3JlYXRlKHRoaXMudGFnKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgaWYgKHRoaXMuZGVvcHRlZCkge1xuICAgICAgdm0uZXZhbHVhdGVPcGNvZGUodGhpcy5kZW9wdGVkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGlzQ29tcG9uZW50RGVmaW5pdGlvbih0aGlzLnJlZmVyZW5jZS52YWx1ZSgpKSkge1xuICAgICAgICB0aGlzLmxhenlEZW9wdCh2bSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdXBlci5ldmFsdWF0ZSh2bSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsYXp5RGVvcHQoX3ZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgLy8gRHVyaWduIGluaXRpYWwgcmVuZGVyLCB3ZSBrbm93IHRoYXQgdGhlIHJlZmVyZW5jZSBkb2VzIG5vdCBjb250YWluIGFcbiAgICAvLyBjb21wb25lbnQgZGVmaW5pdGlvbiwgc28gd2Ugb3B0aW1pc3RpY2FsbHkgYXNzdW1lZCB0aGF0IHRoaXMgYXBwZW5kXG4gICAgLy8gaXMganVzdCBhIG5vcm1hbCBhcHBlbmQuIEhvd2V2ZXIsIGF0IHVwZGF0ZSB0aW1lLCB3ZSBkaXNjb3ZlcmVkIHRoYXRcbiAgICAvLyB0aGUgcmVmZXJlbmNlIGhhcyBzd2l0Y2hlZCBpbnRvIGNvbnRhaW5pbmcgYSBjb21wb25lbnQgZGVmaW5pdGlvbiwgc29cbiAgICAvLyB3ZSBuZWVkIHRvIGRvIGEgXCJsYXp5IGRlb3B0XCIsIHNpbXVsYXRpbmcgd2hhdCB3b3VsZCBoYXZlIGhhcHBlbmVkIGlmXG4gICAgLy8gd2UgaGFkIGRlY2lkZWQgdG8gcGVyZm9ybSB0aGUgZGVvcHQgaW4gdGhlIGZpcnN0IHBsYWNlIGR1cmluZyBpbml0aWFsXG4gICAgLy8gcmVuZGVyLlxuICAgIC8vXG4gICAgLy8gTW9yZSBjb25jcmV0ZWx5LCB3ZSB3b3VsZCBoYXZlIGV4cGFuZGVkIHRoZSBjdXJseSBpbnRvIGEgaWYvZWxzZSwgYW5kXG4gICAgLy8gYmFzZWQgb24gd2hldGhlciB0aGUgdmFsdWUgaXMgYSBjb21wb25lbnQgZGVmaW5pdGlvbiBvciBub3QsIHdlIHdvdWxkXG4gICAgLy8gaGF2ZSBlbnRlcmVkIGVpdGhlciB0aGUgZHluYW1pYyBjb21wb25lbnQgYnJhbmNoIG9yIHRoZSBzaW1wbGUgdmFsdWVcbiAgICAvLyBicmFuY2guXG4gICAgLy9cbiAgICAvLyBTaW5jZSB3ZSByZW5kZXJlZCBhIHNpbXBsZSB2YWx1ZSBkdXJpbmcgaW5pdGlhbCByZW5kZXIgKGFuZCBhbGwgdGhlXG4gICAgLy8gdXBkYXRlcyB1cCB1bnRpbCB0aGlzIHBvaW50KSwgd2UgbmVlZCB0byBwcmV0ZW5kIHRoYXQgdGhlIHJlc3VsdCBpc1xuICAgIC8vIHByb2R1Y2VkIGJ5IHRoZSBcIlZBTFVFXCIgYnJhbmNoIG9mIHRoZSBkZW9wdGVkIGFwcGVuZCBvcGNvZGU6XG4gICAgLy9cbiAgICAvLyAgIFRyeShCRUdJTiwgRU5EKVxuICAgIC8vICAgICBBc3NlcnQoSXNDb21wb25lbnREZWZpbml0aW9uLCBleHBlY3RlZD1mYWxzZSlcbiAgICAvLyAgICAgT3B0aW1pemVkVXBkYXRlXG4gICAgLy9cbiAgICAvLyBJbiB0aGlzIGNhc2UsIGJlY2F1c2UgdGhlIHJlZmVyZW5jZSBoYXMgc3dpdGNoZWQgZnJvbSBiZWluZyBhIHNpbXBsZVxuICAgIC8vIHZhbHVlIGludG8gYSBjb21wb25lbnQgZGVmaW5pdGlvbiwgd2hhdCB3b3VsZCBoYXZlIGhhcHBlbmVkIGlzIHRoYXRcbiAgICAvLyB0aGUgYXNzZXJ0IHdvdWxkIHRocm93LCBjYXVzaW5nIHRoZSBUcnkgb3Bjb2RlIHRvIHRlYXJkb3duIHRoZSBib3VuZHNcbiAgICAvLyBhbmQgcmVydW4gdGhlIG9yaWdpbmFsIGFwcGVuZCBvcGNvZGUuXG4gICAgLy9cbiAgICAvLyBTaW5jZSB0aGUgVHJ5IG9wY29kZSB3b3VsZCBoYXZlIG51a2VkIHRoZSB1cGRhdGluZyBvcGNvZGVzIGFueXdheSwgd2VcbiAgICAvLyB3b3VsZG4ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IHNpbXVsYXRpbmcgdGhvc2UuIEFsbCB3ZSBoYXZlIHRvIGRvIGlzIHRvXG4gICAgLy8gZXhlY3V0ZSB0aGUgVHJ5IG9wY29kZSBhbmQgaW1tZWRpYXRlbHkgdGhyb3cuXG5cbiAgICByZXR1cm4gbnVsbCBhcyBhbnk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9wdGltaXplZENhdXRpb3VzQXBwZW5kT3Bjb2RlIGV4dGVuZHMgQXBwZW5kRHluYW1pY09wY29kZTxDYXV0aW91c0luc2VydGlvbj4ge1xuICB0eXBlID0gJ29wdGltaXplZC1jYXV0aW91cy1hcHBlbmQnO1xuXG4gIHByb3RlY3RlZCBub3JtYWxpemUocmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPik6IFJlZmVyZW5jZTxDYXV0aW91c0luc2VydGlvbj4ge1xuICAgIHJldHVybiBtYXAocmVmZXJlbmNlLCBub3JtYWxpemVWYWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBDYXV0aW91c0luc2VydGlvbik6IFVwc2VydCB7XG4gICAgcmV0dXJuIGNhdXRpb3VzSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlV2l0aChfdm06IFZNLCBfcmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPiwgY2FjaGU6IFJlZmVyZW5jZUNhY2hlPENhdXRpb3VzSW5zZXJ0aW9uPiwgYm91bmRzOiBGcmFnbWVudCwgdXBzZXJ0OiBVcHNlcnQpOiBVcGRhdGluZ09wY29kZSB7XG4gICAgcmV0dXJuIG5ldyBPcHRpbWl6ZWRDYXV0aW91c1VwZGF0ZU9wY29kZShjYWNoZSwgYm91bmRzLCB1cHNlcnQpO1xuICB9XG59XG5cbmNsYXNzIE9wdGltaXplZENhdXRpb3VzVXBkYXRlT3Bjb2RlIGV4dGVuZHMgVXBkYXRlT3Bjb2RlPENhdXRpb3VzSW5zZXJ0aW9uPiB7XG4gIHR5cGUgPSAnb3B0aW1pemVkLWNhdXRpb3VzLXVwZGF0ZSc7XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogQ2F1dGlvdXNJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiBjYXV0aW91c0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHdWFyZGVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUgZXh0ZW5kcyBHdWFyZGVkQXBwZW5kT3Bjb2RlPENhdXRpb3VzSW5zZXJ0aW9uPiB7XG4gIHR5cGUgPSAnZ3VhcmRlZC1jYXV0aW91cy1hcHBlbmQnO1xuXG4gIHByb3RlY3RlZCBBcHBlbmRPcGNvZGUgPSBPcHRpbWl6ZWRDYXV0aW91c0FwcGVuZE9wY29kZTtcblxuICBwcm90ZWN0ZWQgbm9ybWFsaXplKHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4pOiBSZWZlcmVuY2U8Q2F1dGlvdXNJbnNlcnRpb24+IHtcbiAgICByZXR1cm4gbWFwKHJlZmVyZW5jZSwgbm9ybWFsaXplVmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogQ2F1dGlvdXNJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiBjYXV0aW91c0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZVdpdGgoX3ZtOiBWTSwgcmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPiwgY2FjaGU6IFJlZmVyZW5jZUNhY2hlPENhdXRpb3VzSW5zZXJ0aW9uPiwgYm91bmRzOiBGcmFnbWVudCwgdXBzZXJ0OiBVcHNlcnQpOiBVcGRhdGluZ09wY29kZSB7XG4gICAgcmV0dXJuIG5ldyBHdWFyZGVkQ2F1dGlvdXNVcGRhdGVPcGNvZGUocmVmZXJlbmNlLCBjYWNoZSwgYm91bmRzLCB1cHNlcnQpO1xuICB9XG59XG5cbmNsYXNzIEd1YXJkZWRDYXV0aW91c1VwZGF0ZU9wY29kZSBleHRlbmRzIEd1YXJkZWRVcGRhdGVPcGNvZGU8Q2F1dGlvdXNJbnNlcnRpb24+IHtcbiAgdHlwZSA9ICdndWFyZGVkLWNhdXRpb3VzLXVwZGF0ZSc7XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogQ2F1dGlvdXNJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiBjYXV0aW91c0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPcHRpbWl6ZWRUcnVzdGluZ0FwcGVuZE9wY29kZSBleHRlbmRzIEFwcGVuZER5bmFtaWNPcGNvZGU8VHJ1c3RpbmdJbnNlcnRpb24+IHtcbiAgdHlwZSA9ICdvcHRpbWl6ZWQtdHJ1c3RpbmctYXBwZW5kJztcblxuICBwcm90ZWN0ZWQgbm9ybWFsaXplKHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4pOiBSZWZlcmVuY2U8VHJ1c3RpbmdJbnNlcnRpb24+IHtcbiAgICByZXR1cm4gbWFwKHJlZmVyZW5jZSwgbm9ybWFsaXplVHJ1c3RlZFZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IFRydXN0aW5nSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgICByZXR1cm4gdHJ1c3RpbmdJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVXaXRoKF92bTogVk0sIF9yZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+LCBjYWNoZTogUmVmZXJlbmNlQ2FjaGU8VHJ1c3RpbmdJbnNlcnRpb24+LCBib3VuZHM6IEZyYWdtZW50LCB1cHNlcnQ6IFVwc2VydCk6IFVwZGF0aW5nT3Bjb2RlIHtcbiAgICByZXR1cm4gbmV3IE9wdGltaXplZFRydXN0aW5nVXBkYXRlT3Bjb2RlKGNhY2hlLCBib3VuZHMsIHVwc2VydCk7XG4gIH1cbn1cblxuY2xhc3MgT3B0aW1pemVkVHJ1c3RpbmdVcGRhdGVPcGNvZGUgZXh0ZW5kcyBVcGRhdGVPcGNvZGU8VHJ1c3RpbmdJbnNlcnRpb24+IHtcbiAgdHlwZSA9ICdvcHRpbWl6ZWQtdHJ1c3RpbmctdXBkYXRlJztcblxuICBwcm90ZWN0ZWQgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBUcnVzdGluZ0luc2VydGlvbik6IFVwc2VydCB7XG4gICAgcmV0dXJuIHRydXN0aW5nSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEd1YXJkZWRUcnVzdGluZ0FwcGVuZE9wY29kZSBleHRlbmRzIEd1YXJkZWRBcHBlbmRPcGNvZGU8VHJ1c3RpbmdJbnNlcnRpb24+IHtcbiAgdHlwZSA9ICdndWFyZGVkLXRydXN0aW5nLWFwcGVuZCc7XG5cbiAgcHJvdGVjdGVkIEFwcGVuZE9wY29kZSA9IE9wdGltaXplZFRydXN0aW5nQXBwZW5kT3Bjb2RlO1xuXG4gIHByb3RlY3RlZCBub3JtYWxpemUocmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPik6IFJlZmVyZW5jZTxUcnVzdGluZ0luc2VydGlvbj4ge1xuICAgIHJldHVybiBtYXAocmVmZXJlbmNlLCBub3JtYWxpemVUcnVzdGVkVmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogVHJ1c3RpbmdJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiB0cnVzdGluZ0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZVdpdGgoX3ZtOiBWTSwgcmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPiwgY2FjaGU6IFJlZmVyZW5jZUNhY2hlPFRydXN0aW5nSW5zZXJ0aW9uPiwgYm91bmRzOiBGcmFnbWVudCwgdXBzZXJ0OiBVcHNlcnQpOiBVcGRhdGluZ09wY29kZSB7XG4gICAgcmV0dXJuIG5ldyBHdWFyZGVkVHJ1c3RpbmdVcGRhdGVPcGNvZGUocmVmZXJlbmNlLCBjYWNoZSwgYm91bmRzLCB1cHNlcnQpO1xuICB9XG59XG5cbmNsYXNzIEd1YXJkZWRUcnVzdGluZ1VwZGF0ZU9wY29kZSBleHRlbmRzIEd1YXJkZWRVcGRhdGVPcGNvZGU8VHJ1c3RpbmdJbnNlcnRpb24+IHtcbiAgdHlwZSA9ICd0cnVzdGluZy11cGRhdGUnO1xuXG4gIHByb3RlY3RlZCBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IFRydXN0aW5nSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgICByZXR1cm4gdHJ1c3RpbmdJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxufVxuIl19

@@ -10,4 +10,2 @@ "use strict";

var _util = require("@glimmer/util");
var _reference = require("@glimmer/reference");

@@ -320,3 +318,3 @@

attributeNames.push(name);
(0, _util.unwrap)(attributes).push(attribute);
attributes.push(attribute);
};

@@ -399,9 +397,2 @@

UpdateModifierOpcode.prototype.toJSON = function toJSON() {
return {
guid: this._guid,
type: this.type
};
};
return UpdateModifierOpcode;

@@ -443,3 +434,3 @@ }(_opcodes.UpdatingOpcode);

var value = (0, _util.expect)(cache, 'must patch after flush').revalidate();
var value = cache.revalidate();
if ((0, _reference.isModified)(value)) {

@@ -466,28 +457,2 @@ this.attributeManager.updateAttribute(env, element, value, this.namespace);

DynamicAttribute.prototype.toJSON = function toJSON() {
var element = this.element,
namespace = this.namespace,
name = this.name,
cache = this.cache;
var formattedElement = formatElement(element);
var lastValue = (0, _util.expect)(cache, 'must serialize after flush').peek();
if (namespace) {
return {
element: formattedElement,
type: 'attribute',
namespace: namespace,
name: name,
lastValue: lastValue
};
}
return {
element: formattedElement,
type: 'attribute',
namespace: namespace === undefined ? null : namespace,
name: name,
lastValue: lastValue
};
};
return DynamicAttribute;

@@ -534,16 +499,4 @@ }();

PatchElementOpcode.prototype.toJSON = function toJSON() {
var _guid = this._guid,
type = this.type,
operation = this.operation;
return {
guid: _guid,
type: type,
details: operation.toJSON()
};
};
return PatchElementOpcode;
}(_opcodes.UpdatingOpcode);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZG9tLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxBQUFPLEFBQWMsQUFBYyxBQUFFLEFBQU0sQUFBZSxBQUFDOztBQU0zRCxBQUFPLEFBQStCLEFBQU0sQUFBRSxBQUFNLEFBQUUsQUFBTSxBQUFlLEFBQUM7O0FBQzVFLEFBQU8sQUFDTCxBQUFlLEFBR2YsQUFBYyxBQUlkLEFBQWEsQUFDYixBQUFPLEFBQUksQUFBZ0IsQUFDM0IsQUFBVSxBQUNYLEFBQU0sQUFBb0IsQUFBQzs7QUFFNUIsQUFBTyxBQUFFLEFBQWMsQUFBRSxBQUFrQixBQUFFLEFBQU0sQUFBa0IsQUFBQzs7QUFHdEUsQUFBTyxBQUFFLEFBQU0sQUFBRSxBQUFNLEFBQU0sQUFBQyxBQUM5QixBQUFPLEFBQUUsQUFBYyxBQUFZLEFBQU0sQUFBZSxBQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXpELEFBQWMsd0JBQUMsQUFBRyxJQUFDLEdBQU8sWUFBRSxVQUFDLEFBQUUsQUFBRTtRQUFPLEFBQUksQUFBRSxZQUFYLEFBQUcsQUFDcEMsQUFBRTs7T0FBQyxBQUFRLEFBQUUsV0FBQyxBQUFVLFdBQUMsQUFBRSxHQUFDLEFBQVMsVUFBQyxBQUFTLFVBQUMsQUFBSSxBQUFDLEFBQUMsQUFBQyxBQUN6RCxBQUFDLEFBQUMsQUFBQzs7QUFFSCxBQUFjLHdCQUFDLEFBQUcsSUFBQyxHQUFVLGVBQUUsVUFBQyxBQUFFLEFBQUU7UUFBTyxBQUFJLEFBQUUsYUFBWCxBQUFHLEFBQ3ZDLEFBQUU7O09BQUMsQUFBUSxBQUFFLFdBQUMsQUFBYSxjQUFDLEFBQUUsR0FBQyxBQUFTLFVBQUMsQUFBUyxVQUFDLEFBQUksQUFBQyxBQUFDLEFBQUMsQUFDNUQsQUFBQyxBQUFDLEFBQUM7O0FBRUgsQUFBYyx3QkFBQyxBQUFHLElBQUMsR0FBYyxtQkFBRSxVQUFDLEFBQUUsQUFBRTtRQUFPLEFBQUcsQUFBRSxZQUFW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Z0NBQVksQUFBMkI7OztzREFDckMsQUFBSyxBQUFFLEFBQUMsc0JBTEg7O2VBQUksT0FBRyxBQUFlLEFBQUMsQUFNNUIsQUFBSTtlQUFDLEFBQUcsTUFBRyxBQUFTLFVBQUMsQUFBRyxBQUFDLEFBQ3pCLEFBQUk7ZUFBQyxBQUFTLFlBQUcsQUFBUyxBQUFDLEFBQzdCO2VBQUM7OztpQ0FFRCxBQUFRLDZCQUFDLEFBQWMsSUFDckIsQUFBSTthQUFDLEFBQVMsVUFBQyxBQUFLLE1BQUMsQUFBRSxHQUFDLEFBQUcsQUFBQyxBQUFDLEFBQy9CLEFBQUM7OztpQ0FFRCxBQUFNLDJCQUNKLEFBQUk7WUFBRSxBQUFLO1lBQUUsQUFBSSxPQUFnQixBQUFJLEFBQUM7WUFBbkIsQUFBUyxBQUFFLGlCQUU5QixBQUFNOzs7a0JBQ0UsQUFBSyxBQUNYLEFBQUk7a0JBQ0osQUFBTztxQkFBRSxBQUFTLFVBSGIsQUFHYyxBQUFNLEFBQUUsQUFDNUIsQUFBQyxBQUNKLEFBQUMsQUFDRjtBQUxLLEFBQUk7Ozs7QUFuQjhCLEFBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcGNvZGVKU09OLCBVcGRhdGluZ09wY29kZSB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IHsgVk0sIFVwZGF0aW5nVk0gfSBmcm9tICcuLi8uLi92bSc7XG5pbXBvcnQgeyBBcmd1bWVudHMgfSBmcm9tICcuLi8uLi92bS9hcmd1bWVudHMnO1xuaW1wb3J0ICogYXMgU2ltcGxlIGZyb20gJy4uLy4uL2RvbS9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEZJWF9SRUlGSUNBVElPTiB9IGZyb20gJy4uLy4uL2RvbS9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEVudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgRklYTUUsIE9wdGlvbiwgT3BhcXVlLCBEaWN0LCB1bndyYXAsIGV4cGVjdCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHtcbiAgQ2FjaGVkUmVmZXJlbmNlLFxuICBSZWZlcmVuY2UsXG4gIFZlcnNpb25lZFJlZmVyZW5jZSxcbiAgUmVmZXJlbmNlQ2FjaGUsXG4gIFRhZyxcbiAgUmV2aXNpb24sXG4gIFBhdGhSZWZlcmVuY2UsXG4gIGNvbWJpbmVUYWdnZWQsXG4gIGlzQ29uc3QgYXMgaXNDb25zdFJlZmVyZW5jZSxcbiAgaXNNb2RpZmllZFxufSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgTW9kaWZpZXJNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vbW9kaWZpZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBOVUxMX1JFRkVSRU5DRSwgUHJpbWl0aXZlUmVmZXJlbmNlIH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBBdHRyaWJ1dGVNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vZG9tL2F0dHJpYnV0ZS1tYW5hZ2Vycyc7XG5pbXBvcnQgeyBFbGVtZW50T3BlcmF0aW9ucyB9IGZyb20gJy4uLy4uL2J1aWxkZXInO1xuaW1wb3J0IHsgQXNzZXJ0IH0gZnJvbSAnLi92bSc7XG5pbXBvcnQgeyBBUFBFTkRfT1BDT0RFUywgT3AgYXMgT3AgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlRleHQsICh2bSwgeyBvcDE6IHRleHQgfSkgPT4ge1xuICB2bS5lbGVtZW50cygpLmFwcGVuZFRleHQodm0uY29uc3RhbnRzLmdldFN0cmluZyh0ZXh0KSk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkNvbW1lbnQsICh2bSwgeyBvcDE6IHRleHQgfSkgPT4ge1xuICB2bS5lbGVtZW50cygpLmFwcGVuZENvbW1lbnQodm0uY29uc3RhbnRzLmdldFN0cmluZyh0ZXh0KSk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLk9wZW5FbGVtZW50LCAodm0sIHsgb3AxOiB0YWcgfSkgPT4ge1xuICB2bS5lbGVtZW50cygpLm9wZW5FbGVtZW50KHZtLmNvbnN0YW50cy5nZXRTdHJpbmcodGFnKSk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLk9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMsICh2bSwgeyBvcDE6IHRhZyB9KSA9PiB7XG4gIGxldCB0YWdOYW1lID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyh0YWcpO1xuICBsZXQgb3BlcmF0aW9ucyA9IHZtLnN0YWNrLnBvcDxFbGVtZW50T3BlcmF0aW9ucz4oKTtcbiAgdm0uZWxlbWVudHMoKS5vcGVuRWxlbWVudCh0YWdOYW1lLCBvcGVyYXRpb25zKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuT3BlbkR5bmFtaWNFbGVtZW50LCB2bSA9PiB7XG4gIGxldCBvcGVyYXRpb25zID0gdm0uc3RhY2sucG9wPEVsZW1lbnRPcGVyYXRpb25zPigpO1xuICBsZXQgdGFnTmFtZSA9IHZtLnN0YWNrLnBvcDxSZWZlcmVuY2U8c3RyaW5nPj4oKS52YWx1ZSgpO1xuICB2bS5lbGVtZW50cygpLm9wZW5FbGVtZW50KHRhZ05hbWUsIG9wZXJhdGlvbnMpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5QdXNoUmVtb3RlRWxlbWVudCwgdm0gPT4ge1xuICBsZXQgZWxlbWVudFJlZiA9IHZtLnN0YWNrLnBvcDxSZWZlcmVuY2U8U2ltcGxlLkVsZW1lbnQ+PigpO1xuICBsZXQgbmV4dFNpYmxpbmdSZWYgPSB2bS5zdGFjay5wb3A8UmVmZXJlbmNlPE9wdGlvbjxTaW1wbGUuTm9kZT4+PigpO1xuXG4gIGxldCBlbGVtZW50OiBTaW1wbGUuRWxlbWVudDtcbiAgbGV0IG5leHRTaWJsaW5nOiBPcHRpb248U2ltcGxlLk5vZGU+O1xuXG4gIGlmIChpc0NvbnN0UmVmZXJlbmNlKGVsZW1lbnRSZWYpKSB7XG4gICAgZWxlbWVudCA9IGVsZW1lbnRSZWYudmFsdWUoKTtcbiAgfSBlbHNlIHtcbiAgICBsZXQgY2FjaGUgPSBuZXcgUmVmZXJlbmNlQ2FjaGUoZWxlbWVudFJlZik7XG4gICAgZWxlbWVudCA9IGNhY2hlLnBlZWsoKTtcbiAgICB2bS51cGRhdGVXaXRoKG5ldyBBc3NlcnQoY2FjaGUpKTtcbiAgfVxuXG4gIGlmIChpc0NvbnN0UmVmZXJlbmNlKG5leHRTaWJsaW5nUmVmKSkge1xuICAgIG5leHRTaWJsaW5nID0gbmV4dFNpYmxpbmdSZWYudmFsdWUoKTtcbiAgfSBlbHNlIHtcbiAgICBsZXQgY2FjaGUgPSBuZXcgUmVmZXJlbmNlQ2FjaGUobmV4dFNpYmxpbmdSZWYpO1xuICAgIG5leHRTaWJsaW5nID0gY2FjaGUucGVlaygpO1xuICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICB9XG5cbiAgdm0uZWxlbWVudHMoKS5wdXNoUmVtb3RlRWxlbWVudChlbGVtZW50LCBuZXh0U2libGluZyk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlBvcFJlbW90ZUVsZW1lbnQsIHZtID0+IHZtLmVsZW1lbnRzKCkucG9wUmVtb3RlRWxlbWVudCgpKTtcblxuY2xhc3MgQ2xhc3NMaXN0IHtcbiAgcHJpdmF0ZSBsaXN0OiBPcHRpb248UmVmZXJlbmNlPHN0cmluZz5bXT4gPSBudWxsO1xuICBwcml2YXRlIGlzQ29uc3QgPSB0cnVlO1xuXG4gIGFwcGVuZChyZWZlcmVuY2U6IFJlZmVyZW5jZTxzdHJpbmc+KSB7XG4gICAgbGV0IHsgbGlzdCwgaXNDb25zdCB9ID0gdGhpcztcblxuICAgIGlmIChsaXN0ID09PSBudWxsKSBsaXN0ID0gdGhpcy5saXN0ID0gW107XG5cbiAgICBsaXN0LnB1c2gocmVmZXJlbmNlKTtcbiAgICB0aGlzLmlzQ29uc3QgPSBpc0NvbnN0ICYmIGlzQ29uc3RSZWZlcmVuY2UocmVmZXJlbmNlKTtcbiAgfVxuXG4gIHRvUmVmZXJlbmNlKCk6IFJlZmVyZW5jZTxPcHRpb248c3RyaW5nPj4ge1xuICAgIGxldCB7IGxpc3QsIGlzQ29uc3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIWxpc3QpIHJldHVybiBOVUxMX1JFRkVSRU5DRTtcblxuICAgIGlmIChpc0NvbnN0KSByZXR1cm4gUHJpbWl0aXZlUmVmZXJlbmNlLmNyZWF0ZSh0b0NsYXNzTmFtZShsaXN0KSk7XG5cbiAgICByZXR1cm4gbmV3IENsYXNzTGlzdFJlZmVyZW5jZShsaXN0KTtcbiAgfVxuXG59XG5cbmNsYXNzIENsYXNzTGlzdFJlZmVyZW5jZSBleHRlbmRzIENhY2hlZFJlZmVyZW5jZTxPcHRpb248c3RyaW5nPj4ge1xuICBwdWJsaWMgdGFnOiBUYWc7XG4gIHByaXZhdGUgbGlzdDogUmVmZXJlbmNlPHN0cmluZz5bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKGxpc3Q6IFJlZmVyZW5jZTxzdHJpbmc+W10pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudGFnID0gY29tYmluZVRhZ2dlZChsaXN0KTtcbiAgICB0aGlzLmxpc3QgPSBsaXN0O1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbXB1dGUoKTogT3B0aW9uPHN0cmluZz4ge1xuICAgIHJldHVybiB0b0NsYXNzTmFtZSh0aGlzLmxpc3QpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHRvQ2xhc3NOYW1lKGxpc3Q6IFJlZmVyZW5jZTxzdHJpbmc+W10pOiBPcHRpb248c3RyaW5nPiB7XG4gIGxldCByZXQ6IE9wYXF1ZVtdID0gW107XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IHZhbHVlOiBGSVhNRTxPcGFxdWUsICd1c2UgT3BhcXVlIGFuZCBub3JtYWxpemUnPiA9IGxpc3RbaV0udmFsdWUoKTtcbiAgICBpZiAodmFsdWUgIT09IGZhbHNlICYmIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHJldC5wdXNoKHZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiAocmV0Lmxlbmd0aCA9PT0gMCkgPyBudWxsIDogcmV0LmpvaW4oJyAnKTtcbn1cblxuZXhwb3J0IGNsYXNzIFNpbXBsZUVsZW1lbnRPcGVyYXRpb25zIGltcGxlbWVudHMgRWxlbWVudE9wZXJhdGlvbnMge1xuICBwcml2YXRlIG9wY29kZXM6IE9wdGlvbjxVcGRhdGluZ09wY29kZVtdPiA9IG51bGw7XG4gIHByaXZhdGUgY2xhc3NMaXN0OiBPcHRpb248Q2xhc3NMaXN0PiA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbnY6IEVudmlyb25tZW50KSB7XG4gIH1cblxuICBhZGRTdGF0aWNBdHRyaWJ1dGUoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIGlmIChuYW1lID09PSAnY2xhc3MnKSB7XG4gICAgICB0aGlzLmFkZENsYXNzKFByaW1pdGl2ZVJlZmVyZW5jZS5jcmVhdGUodmFsdWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbnYuZ2V0QXBwZW5kT3BlcmF0aW9ucygpLnNldEF0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCB2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgYWRkU3RhdGljQXR0cmlidXRlTlMoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5hbWVzcGFjZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCkuc2V0QXR0cmlidXRlKGVsZW1lbnQsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UpO1xuICB9XG5cbiAgYWRkRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZTogc3RyaW5nLCByZWZlcmVuY2U6IFJlZmVyZW5jZTxzdHJpbmc+LCBpc1RydXN0aW5nOiBib29sZWFuKSB7XG4gICAgaWYgKG5hbWUgPT09ICdjbGFzcycpIHtcbiAgICAgIHRoaXMuYWRkQ2xhc3MocmVmZXJlbmNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSB0aGlzLmVudi5hdHRyaWJ1dGVGb3IoZWxlbWVudCwgbmFtZSwgaXNUcnVzdGluZyk7XG4gICAgICBsZXQgYXR0cmlidXRlID0gbmV3IER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlTWFuYWdlciwgbmFtZSwgcmVmZXJlbmNlKTtcblxuICAgICAgdGhpcy5hZGRBdHRyaWJ1dGUoYXR0cmlidXRlKTtcbiAgICB9XG4gIH1cblxuICBhZGREeW5hbWljQXR0cmlidXRlTlMoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5hbWVzcGFjZTogU2ltcGxlLk5hbWVzcGFjZSwgbmFtZTogc3RyaW5nLCByZWZlcmVuY2U6IFBhdGhSZWZlcmVuY2U8c3RyaW5nPiwgaXNUcnVzdGluZzogYm9vbGVhbikge1xuICAgIGxldCBhdHRyaWJ1dGVNYW5hZ2VyID0gdGhpcy5lbnYuYXR0cmlidXRlRm9yKGVsZW1lbnQsIG5hbWUsIGlzVHJ1c3RpbmcsIG5hbWVzcGFjZSk7XG4gICAgbGV0IG5zQXR0cmlidXRlID0gbmV3IER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlTWFuYWdlciwgbmFtZSwgcmVmZXJlbmNlLCBuYW1lc3BhY2UpO1xuXG4gICAgdGhpcy5hZGRBdHRyaWJ1dGUobnNBdHRyaWJ1dGUpO1xuICB9XG5cbiAgZmx1c2goZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIHZtOiBWTSkge1xuICAgIGxldCB7IGVudiB9ID0gdm07XG4gICAgbGV0IHsgb3Bjb2RlcywgY2xhc3NMaXN0IH0gPSB0aGlzO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IG9wY29kZXMgJiYgaSA8IG9wY29kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZtLnVwZGF0ZVdpdGgob3Bjb2Rlc1tpXSk7XG4gICAgfVxuXG4gICAgaWYgKGNsYXNzTGlzdCkge1xuICAgICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSBlbnYuYXR0cmlidXRlRm9yKGVsZW1lbnQsICdjbGFzcycsIGZhbHNlKTtcbiAgICAgIGxldCBhdHRyaWJ1dGUgPSBuZXcgRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCAnY2xhc3MnLCBjbGFzc0xpc3QudG9SZWZlcmVuY2UoKSk7XG4gICAgICBsZXQgb3Bjb2RlID0gYXR0cmlidXRlLmZsdXNoKGVudik7XG5cbiAgICAgIGlmIChvcGNvZGUpIHtcbiAgICAgICAgdm0udXBkYXRlV2l0aChvcGNvZGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMub3Bjb2RlcyA9IG51bGw7XG4gICAgdGhpcy5jbGFzc0xpc3QgPSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRDbGFzcyhyZWZlcmVuY2U6IFJlZmVyZW5jZTxzdHJpbmc+KSB7XG4gICAgbGV0IHsgY2xhc3NMaXN0IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFjbGFzc0xpc3QpIHtcbiAgICAgIGNsYXNzTGlzdCA9IHRoaXMuY2xhc3NMaXN0ID0gbmV3IENsYXNzTGlzdCgpO1xuICAgIH1cblxuICAgIGNsYXNzTGlzdC5hcHBlbmQocmVmZXJlbmNlKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkQXR0cmlidXRlKGF0dHJpYnV0ZTogQXR0cmlidXRlKSB7XG4gICAgbGV0IG9wY29kZSA9IGF0dHJpYnV0ZS5mbHVzaCh0aGlzLmVudik7XG5cbiAgICBpZiAob3Bjb2RlKSB7XG4gICAgICBsZXQgeyBvcGNvZGVzIH0gPSB0aGlzO1xuXG4gICAgICBpZiAoIW9wY29kZXMpIHtcbiAgICAgICAgb3Bjb2RlcyA9IHRoaXMub3Bjb2RlcyA9IFtdO1xuICAgICAgfVxuXG4gICAgICBvcGNvZGVzLnB1c2gob3Bjb2RlKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbXBvbmVudEVsZW1lbnRPcGVyYXRpb25zIGltcGxlbWVudHMgRWxlbWVudE9wZXJhdGlvbnMge1xuICBwcml2YXRlIGF0dHJpYnV0ZU5hbWVzOiBPcHRpb248c3RyaW5nW10+ID0gbnVsbDtcbiAgcHJpdmF0ZSBhdHRyaWJ1dGVzOiBPcHRpb248QXR0cmlidXRlW10+ID0gbnVsbDtcbiAgcHJpdmF0ZSBjbGFzc0xpc3Q6IE9wdGlvbjxDbGFzc0xpc3Q+ID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVudjogRW52aXJvbm1lbnQpIHtcbiAgfVxuXG4gIGFkZFN0YXRpY0F0dHJpYnV0ZShlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKG5hbWUgPT09ICdjbGFzcycpIHtcbiAgICAgIHRoaXMuYWRkQ2xhc3MoUHJpbWl0aXZlUmVmZXJlbmNlLmNyZWF0ZSh2YWx1ZSkpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zaG91bGRBZGRBdHRyaWJ1dGUobmFtZSkpIHtcbiAgICAgIHRoaXMuYWRkQXR0cmlidXRlKG5hbWUsIG5ldyBTdGF0aWNBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgdmFsdWUpKTtcbiAgICB9XG4gIH1cblxuICBhZGRTdGF0aWNBdHRyaWJ1dGVOUyhlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZXNwYWNlOiBzdHJpbmcsIG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIGlmICh0aGlzLnNob3VsZEFkZEF0dHJpYnV0ZShuYW1lKSkge1xuICAgICAgdGhpcy5hZGRBdHRyaWJ1dGUobmFtZSwgbmV3IFN0YXRpY0F0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlKSk7XG4gICAgfVxuICB9XG5cbiAgYWRkRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZTogc3RyaW5nLCByZWZlcmVuY2U6IFBhdGhSZWZlcmVuY2U8c3RyaW5nPiwgaXNUcnVzdGluZzogYm9vbGVhbikge1xuICAgIGlmIChuYW1lID09PSAnY2xhc3MnKSB7XG4gICAgICB0aGlzLmFkZENsYXNzKHJlZmVyZW5jZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNob3VsZEFkZEF0dHJpYnV0ZShuYW1lKSkge1xuICAgICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSB0aGlzLmVudi5hdHRyaWJ1dGVGb3IoZWxlbWVudCwgbmFtZSwgaXNUcnVzdGluZyk7XG4gICAgICBsZXQgYXR0cmlidXRlID0gbmV3IER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlTWFuYWdlciwgbmFtZSwgcmVmZXJlbmNlKTtcblxuICAgICAgdGhpcy5hZGRBdHRyaWJ1dGUobmFtZSwgYXR0cmlidXRlKTtcbiAgICB9XG4gIH1cblxuICBhZGREeW5hbWljQXR0cmlidXRlTlMoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5hbWVzcGFjZTogU2ltcGxlLk5hbWVzcGFjZSwgbmFtZTogc3RyaW5nLCByZWZlcmVuY2U6IFBhdGhSZWZlcmVuY2U8c3RyaW5nPiwgaXNUcnVzdGluZzogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLnNob3VsZEFkZEF0dHJpYnV0ZShuYW1lKSkge1xuICAgICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSB0aGlzLmVudi5hdHRyaWJ1dGVGb3IoZWxlbWVudCwgbmFtZSwgaXNUcnVzdGluZywgbmFtZXNwYWNlKTtcbiAgICAgIGxldCBuc0F0dHJpYnV0ZSA9IG5ldyBEeW5hbWljQXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZU1hbmFnZXIsIG5hbWUsIHJlZmVyZW5jZSwgbmFtZXNwYWNlKTtcblxuICAgICAgdGhpcy5hZGRBdHRyaWJ1dGUobmFtZSwgbnNBdHRyaWJ1dGUpO1xuICAgIH1cbiAgfVxuXG4gIGZsdXNoKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCB2bTogVk0pIHtcbiAgICBsZXQgeyBlbnYgfSA9IHRoaXM7XG4gICAgbGV0IHsgYXR0cmlidXRlcywgY2xhc3NMaXN0IH0gPSB0aGlzO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGF0dHJpYnV0ZXMgJiYgaSA8IGF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBvcGNvZGUgPSBhdHRyaWJ1dGVzW2ldLmZsdXNoKGVudik7XG5cbiAgICAgIGlmIChvcGNvZGUpIHtcbiAgICAgICAgdm0udXBkYXRlV2l0aChvcGNvZGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjbGFzc0xpc3QpIHtcbiAgICAgIGxldCBhdHRyaWJ1dGVNYW5hZ2VyID0gZW52LmF0dHJpYnV0ZUZvcihlbGVtZW50LCAnY2xhc3MnLCBmYWxzZSk7XG4gICAgICBsZXQgYXR0cmlidXRlID0gbmV3IER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlTWFuYWdlciwgJ2NsYXNzJywgY2xhc3NMaXN0LnRvUmVmZXJlbmNlKCkpO1xuICAgICAgbGV0IG9wY29kZSA9IGF0dHJpYnV0ZS5mbHVzaChlbnYpO1xuXG4gICAgICBpZiAob3Bjb2RlKSB7XG4gICAgICAgIHZtLnVwZGF0ZVdpdGgob3Bjb2RlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNob3VsZEFkZEF0dHJpYnV0ZShuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuYXR0cmlidXRlTmFtZXMgfHwgdGhpcy5hdHRyaWJ1dGVOYW1lcy5pbmRleE9mKG5hbWUpID09PSAtMTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkQ2xhc3MocmVmZXJlbmNlOiBQYXRoUmVmZXJlbmNlPHN0cmluZz4pIHtcbiAgICBsZXQgeyBjbGFzc0xpc3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIWNsYXNzTGlzdCkge1xuICAgICAgY2xhc3NMaXN0ID0gdGhpcy5jbGFzc0xpc3QgPSBuZXcgQ2xhc3NMaXN0KCk7XG4gICAgfVxuXG4gICAgY2xhc3NMaXN0LmFwcGVuZChyZWZlcmVuY2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRBdHRyaWJ1dGUobmFtZTogc3RyaW5nLCBhdHRyaWJ1dGU6IEF0dHJpYnV0ZSkge1xuICAgIGxldCB7IGF0dHJpYnV0ZU5hbWVzLCBhdHRyaWJ1dGVzIH0gPSB0aGlzO1xuXG4gICAgaWYgKCFhdHRyaWJ1dGVOYW1lcykge1xuICAgICAgYXR0cmlidXRlTmFtZXMgPSB0aGlzLmF0dHJpYnV0ZU5hbWVzID0gW107XG4gICAgICBhdHRyaWJ1dGVzID0gdGhpcy5hdHRyaWJ1dGVzID0gW107XG4gICAgfVxuXG4gICAgYXR0cmlidXRlTmFtZXMucHVzaChuYW1lKTtcbiAgICB1bndyYXAoYXR0cmlidXRlcykucHVzaChhdHRyaWJ1dGUpO1xuICB9XG59XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5GbHVzaEVsZW1lbnQsIHZtID0+IHtcbiAgbGV0IHN0YWNrID0gdm0uZWxlbWVudHMoKTtcblxuICBsZXQgYWN0aW9uID0gJ0ZsdXNoRWxlbWVudE9wY29kZSNldmFsdWF0ZSc7XG4gIHN0YWNrLmV4cGVjdE9wZXJhdGlvbnMoYWN0aW9uKS5mbHVzaChzdGFjay5leHBlY3RDb25zdHJ1Y3RpbmcoYWN0aW9uKSwgdm0pO1xuICBzdGFjay5mbHVzaEVsZW1lbnQoKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuQ2xvc2VFbGVtZW50LCB2bSA9PiB2bS5lbGVtZW50cygpLmNsb3NlRWxlbWVudCgpKTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlN0YXRpY0F0dHIsICh2bSwgeyBvcDE6IF9uYW1lLCBvcDI6IF92YWx1ZSwgb3AzOiBfbmFtZXNwYWNlIH0pID0+IHtcbiAgbGV0IG5hbWUgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKF9uYW1lKTtcbiAgbGV0IHZhbHVlID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyhfdmFsdWUpO1xuXG4gIGlmIChfbmFtZXNwYWNlKSB7XG4gICAgbGV0IG5hbWVzcGFjZSA9IHZtLmNvbnN0YW50cy5nZXRTdHJpbmcoX25hbWVzcGFjZSk7XG4gICAgdm0uZWxlbWVudHMoKS5zZXRTdGF0aWNBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICB2bS5lbGVtZW50cygpLnNldFN0YXRpY0F0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7XG4gIH1cbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuTW9kaWZpZXIsICh2bSwgeyBvcDE6IF9tYW5hZ2VyIH0pID0+IHtcbiAgbGV0IG1hbmFnZXIgPSB2bS5jb25zdGFudHMuZ2V0T3RoZXI8TW9kaWZpZXJNYW5hZ2VyPE9wYXF1ZT4+KF9tYW5hZ2VyKTtcbiAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gIGxldCBhcmdzID0gc3RhY2sucG9wPEFyZ3VtZW50cz4oKTtcbiAgbGV0IHRhZyA9IGFyZ3MudGFnO1xuICBsZXQgeyBjb25zdHJ1Y3Rpbmc6IGVsZW1lbnQsIHVwZGF0ZU9wZXJhdGlvbnMgfSA9IHZtLmVsZW1lbnRzKCk7XG4gIGxldCBkeW5hbWljU2NvcGUgPSB2bS5keW5hbWljU2NvcGUoKTtcbiAgbGV0IG1vZGlmaWVyID0gbWFuYWdlci5jcmVhdGUoZWxlbWVudCBhcyBGSVhfUkVJRklDQVRJT048RWxlbWVudD4sIGFyZ3MsIGR5bmFtaWNTY29wZSwgdXBkYXRlT3BlcmF0aW9ucyk7XG5cbiAgYXJncy5jbGVhcigpO1xuXG4gIHZtLmVudi5zY2hlZHVsZUluc3RhbGxNb2RpZmllcihtb2RpZmllciwgbWFuYWdlcik7XG4gIGxldCBkZXN0cnVjdG9yID0gbWFuYWdlci5nZXREZXN0cnVjdG9yKG1vZGlmaWVyKTtcblxuICBpZiAoZGVzdHJ1Y3Rvcikge1xuICAgIHZtLm5ld0Rlc3Ryb3lhYmxlKGRlc3RydWN0b3IpO1xuICB9XG5cbiAgdm0udXBkYXRlV2l0aChuZXcgVXBkYXRlTW9kaWZpZXJPcGNvZGUoXG4gICAgdGFnLFxuICAgIG1hbmFnZXIsXG4gICAgbW9kaWZpZXJcbiAgKSk7XG59KTtcblxuZXhwb3J0IGNsYXNzIFVwZGF0ZU1vZGlmaWVyT3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwidXBkYXRlLW1vZGlmaWVyXCI7XG4gIHByaXZhdGUgbGFzdFVwZGF0ZWQ6IFJldmlzaW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB0YWc6IFRhZyxcbiAgICBwcml2YXRlIG1hbmFnZXI6IE1vZGlmaWVyTWFuYWdlcjxPcGFxdWU+LFxuICAgIHByaXZhdGUgbW9kaWZpZXI6IE9wYXF1ZVxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubGFzdFVwZGF0ZWQgPSB0YWcudmFsdWUoKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgbGV0IHsgbWFuYWdlciwgbW9kaWZpZXIsIHRhZywgbGFzdFVwZGF0ZWQgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXRhZy52YWxpZGF0ZShsYXN0VXBkYXRlZCkpIHtcbiAgICAgIHZtLmVudi5zY2hlZHVsZVVwZGF0ZU1vZGlmaWVyKG1vZGlmaWVyLCBtYW5hZ2VyKTtcbiAgICAgIHRoaXMubGFzdFVwZGF0ZWQgPSB0YWcudmFsdWUoKTtcbiAgICB9XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICB0eXBlOiB0aGlzLnR5cGVcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXR0cmlidXRlIHtcbiAgbmFtZTogc3RyaW5nO1xuICBmbHVzaChlbnY6IEVudmlyb25tZW50KTogT3B0aW9uPFVwZGF0aW5nT3Bjb2RlPjtcbn1cblxuZXhwb3J0IGNsYXNzIFN0YXRpY0F0dHJpYnV0ZSBpbXBsZW1lbnRzIEF0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsXG4gICAgcHVibGljIG5hbWU6IHN0cmluZyxcbiAgICBwcml2YXRlIHZhbHVlOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBuYW1lc3BhY2U/OiBzdHJpbmdcbiAgKSB7fVxuXG4gIGZsdXNoKGVudjogRW52aXJvbm1lbnQpOiBPcHRpb248VXBkYXRpbmdPcGNvZGU+IHtcbiAgICBlbnYuZ2V0QXBwZW5kT3BlcmF0aW9ucygpLnNldEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnQsIHRoaXMubmFtZSwgdGhpcy52YWx1ZSwgdGhpcy5uYW1lc3BhY2UpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEeW5hbWljQXR0cmlidXRlIGltcGxlbWVudHMgQXR0cmlidXRlICB7XG4gIHByaXZhdGUgY2FjaGU6IE9wdGlvbjxSZWZlcmVuY2VDYWNoZTxPcGFxdWU+PiA9IG51bGw7XG5cbiAgcHVibGljIHRhZzogVGFnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsXG4gICAgcHJpdmF0ZSBhdHRyaWJ1dGVNYW5hZ2VyOiBBdHRyaWJ1dGVNYW5hZ2VyLFxuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+LFxuICAgIHByaXZhdGUgbmFtZXNwYWNlPzogU2ltcGxlLk5hbWVzcGFjZVxuICApIHtcbiAgICB0aGlzLnRhZyA9IHJlZmVyZW5jZS50YWc7XG4gIH1cblxuICBwYXRjaChlbnY6IEVudmlyb25tZW50KSB7XG4gICAgbGV0IHsgZWxlbWVudCwgY2FjaGUgfSA9IHRoaXM7XG5cbiAgICBsZXQgdmFsdWUgPSBleHBlY3QoY2FjaGUsICdtdXN0IHBhdGNoIGFmdGVyIGZsdXNoJykucmV2YWxpZGF0ZSgpO1xuXG4gICAgaWYgKGlzTW9kaWZpZWQodmFsdWUpKSB7XG4gICAgICB0aGlzLmF0dHJpYnV0ZU1hbmFnZXIudXBkYXRlQXR0cmlidXRlKGVudiwgZWxlbWVudCBhcyBGSVhNRTxFbGVtZW50LCAnbmVlZHMgdG8gYmUgcmVpZmllZCBwcm9wZXJseSc+LCB2YWx1ZSwgdGhpcy5uYW1lc3BhY2UpO1xuICAgIH1cbiAgfVxuXG4gIGZsdXNoKGVudjogRW52aXJvbm1lbnQpOiBPcHRpb248VXBkYXRpbmdPcGNvZGU+IHtcbiAgICBsZXQgeyByZWZlcmVuY2UsIGVsZW1lbnQgfSA9IHRoaXM7XG5cbiAgICBpZiAoaXNDb25zdFJlZmVyZW5jZShyZWZlcmVuY2UpKSB7XG4gICAgICBsZXQgdmFsdWUgPSByZWZlcmVuY2UudmFsdWUoKTtcbiAgICAgIHRoaXMuYXR0cmlidXRlTWFuYWdlci5zZXRBdHRyaWJ1dGUoZW52LCBlbGVtZW50LCB2YWx1ZSwgdGhpcy5uYW1lc3BhY2UpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBjYWNoZSA9IHRoaXMuY2FjaGUgPSBuZXcgUmVmZXJlbmNlQ2FjaGUocmVmZXJlbmNlKTtcbiAgICAgIGxldCB2YWx1ZSA9IGNhY2hlLnBlZWsoKTtcbiAgICAgIHRoaXMuYXR0cmlidXRlTWFuYWdlci5zZXRBdHRyaWJ1dGUoZW52LCBlbGVtZW50LCB2YWx1ZSwgdGhpcy5uYW1lc3BhY2UpO1xuICAgICAgcmV0dXJuIG5ldyBQYXRjaEVsZW1lbnRPcGNvZGUodGhpcyk7XG4gICAgfVxuICB9XG5cbiAgdG9KU09OKCk6IERpY3Q8T3B0aW9uPHN0cmluZz4+IHtcbiAgICBsZXQgeyBlbGVtZW50LCBuYW1lc3BhY2UsIG5hbWUsIGNhY2hlIH0gPSB0aGlzO1xuXG4gICAgbGV0IGZvcm1hdHRlZEVsZW1lbnQgPSBmb3JtYXRFbGVtZW50KGVsZW1lbnQpO1xuICAgIGxldCBsYXN0VmFsdWUgPSBleHBlY3QoY2FjaGUsICdtdXN0IHNlcmlhbGl6ZSBhZnRlciBmbHVzaCcpLnBlZWsoKSBhcyBzdHJpbmc7XG5cbiAgICBpZiAobmFtZXNwYWNlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBlbGVtZW50OiBmb3JtYXR0ZWRFbGVtZW50LFxuICAgICAgICB0eXBlOiAnYXR0cmlidXRlJyxcbiAgICAgICAgbmFtZXNwYWNlLFxuICAgICAgICBuYW1lLFxuICAgICAgICBsYXN0VmFsdWVcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGVsZW1lbnQ6IGZvcm1hdHRlZEVsZW1lbnQsXG4gICAgICB0eXBlOiAnYXR0cmlidXRlJyxcbiAgICAgIG5hbWVzcGFjZTogbmFtZXNwYWNlID09PSB1bmRlZmluZWQgPyBudWxsIDogbmFtZXNwYWNlLFxuICAgICAgbmFtZSxcbiAgICAgIGxhc3RWYWx1ZVxuICAgIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gZm9ybWF0RWxlbWVudChlbGVtZW50OiBTaW1wbGUuRWxlbWVudCk6IHN0cmluZyB7XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShgPCR7ZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCl9IC8+YCk7XG59XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5EeW5hbWljQXR0ck5TLCAodm0sIHsgb3AxOiBfbmFtZSwgb3AyOiBfbmFtZXNwYWNlLCBvcDM6IHRydXN0aW5nIH0pID0+IHtcbiAgbGV0IG5hbWUgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKF9uYW1lKTtcbiAgbGV0IG5hbWVzcGFjZSA9IHZtLmNvbnN0YW50cy5nZXRTdHJpbmcoX25hbWVzcGFjZSk7XG4gIGxldCByZWZlcmVuY2UgPSB2bS5zdGFjay5wb3A8VmVyc2lvbmVkUmVmZXJlbmNlPHN0cmluZz4+KCk7XG4gIHZtLmVsZW1lbnRzKCkuc2V0RHluYW1pY0F0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSwgcmVmZXJlbmNlLCAhIXRydXN0aW5nKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuRHluYW1pY0F0dHIsICh2bSwgeyBvcDE6IF9uYW1lLCBvcDI6IHRydXN0aW5nIH0pID0+IHtcbiAgbGV0IG5hbWUgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKF9uYW1lKTtcbiAgbGV0IHJlZmVyZW5jZSA9IHZtLnN0YWNrLnBvcDxWZXJzaW9uZWRSZWZlcmVuY2U8c3RyaW5nPj4oKTtcbiAgdm0uZWxlbWVudHMoKS5zZXREeW5hbWljQXR0cmlidXRlKG5hbWUsIHJlZmVyZW5jZSwgISF0cnVzdGluZyk7XG59KTtcblxuZXhwb3J0IGNsYXNzIFBhdGNoRWxlbWVudE9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcInBhdGNoLWVsZW1lbnRcIjtcblxuICBwcml2YXRlIG9wZXJhdGlvbjogRHluYW1pY0F0dHJpYnV0ZTtcblxuICBjb25zdHJ1Y3RvcihvcGVyYXRpb246IER5bmFtaWNBdHRyaWJ1dGUpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudGFnID0gb3BlcmF0aW9uLnRhZztcbiAgICB0aGlzLm9wZXJhdGlvbiA9IG9wZXJhdGlvbjtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgdGhpcy5vcGVyYXRpb24ucGF0Y2godm0uZW52KTtcbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICBsZXQgeyBfZ3VpZCwgdHlwZSwgb3BlcmF0aW9uIH0gPSB0aGlzO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGd1aWQ6IF9ndWlkLFxuICAgICAgdHlwZSxcbiAgICAgIGRldGFpbHM6IG9wZXJhdGlvbi50b0pTT04oKVxuICAgIH07XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZG9tLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxBQUFPLEFBQUUsQUFBYyxBQUFFLEFBQU0sQUFBZSxBQUFDOztBQU8vQyxBQUFPLEFBQ0wsQUFBZSxBQUdmLEFBQWMsQUFJZCxBQUFhLEFBQ2IsQUFBTyxBQUFJLEFBQWdCLEFBQzNCLEFBQVUsQUFDWCxBQUFNLEFBQW9CLEFBQUM7O0FBRTVCLEFBQU8sQUFBRSxBQUFjLEFBQUUsQUFBa0IsQUFBRSxBQUFNLEFBQWtCLEFBQUM7O0FBR3RFLEFBQU8sQUFBRSxBQUFNLEFBQUUsQUFBTSxBQUFNLEFBQUMsQUFDOUIsQUFBTyxBQUFFLEFBQWMsQUFBWSxBQUFNLEFBQWUsQUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV6RCxBQUFjLHdCQUFDLEFBQUcsSUFBQyxHQUFPLFlBQUUsVUFBQyxBQUFFLEFBQUU7UUFBTyxBQUFJLEFBQUUsWUFBWCxBQUFHLEFBQ3BDLEFBQUU7O09BQUMsQUFBUSxBQUFFLFdBQUMsQUFBVSxXQUFDLEFBQUUsR0FBQyxBQUFTLFVBQUMsQUFBUyxVQUFDLEFBQUksQUFBQyxBQUFDLEFBQUMsQUFDekQsQUFBQyxBQUFDLEFBQUM7O0FBRUgsQUFBYyx3QkFBQyxBQUFHLElBQUMsR0FBVSxlQUFFLFVBQUMsQUFBRSxBQUFFO1FBQU8sQUFBSSxBQUFFLGFBQVgsQUFBRyxBQUN2QyxBQUFFOztPQUFDLEFBQVEsQUFBRSxXQUFDLEFBQWEsY0FBQyxBQUFFLEdBQUMsQUFBUyxVQUFDLEFBQVMsVUFBQyxBQUFJLEFBQUMsQUFBQyxBQUFDLEFBQzVELEFBQUMsQUFBQyxBQUFDOztBQUVILEFBQWMsd0JBQUMsQUFBRyxJQUFDLEdBQWMsbUJBQUUsVUFBQyxBQUFFLEFBQUU7UUFBTyxBQUFHLEFBQUUsWUFBVixBQUFHLEFBQzNDLEFBQUU7O09BQUMsQUFBUSxBQUFFLFdBQUMsQUFBVyxZQUFDLEFBQUUs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UyxZQUFHLEFBQUUsR0FBQyxBQUFLLE1BQUMsQUFBRyxBQUE4QixBQUFDLEFBQzNELEFBQUU7T0FBQyxBQUFRLEFBQUUsV0FBQyxBQUFtQixvQkFBQyxBQUFJLE1BQUUsQUFBUyxXQUFFLENBQUMsQ0FBQyxBQUFRLEFBQUMsQUFBQyxBQUNqRSxBQUFDLEFBQUMsQUFBQztBQUVILEFBQU07SUFBMEI7a0NBSzlCOztnQ0FBWSxBQUEyQjs7O3NEQUNyQyxBQUFLLEFBQUUsQUFBQyxzQkFMSDs7ZUFBSSxPQUFHLEFBQWUsQUFBQyxBQU01QixBQUFJO2VBQUMsQUFBRyxNQUFHLEFBQVMsVUFBQyxBQUFHLEFBQUMsQUFDekIsQUFBSTtlQUFDLEFBQVMsWUFBRyxBQUFTLEFBQUMsQUFDN0I7ZUFBQzs7O2lDQUVELEFBQVEsNkJBQUMsQUFBYyxJQUNyQixBQUFJO2FBQUMsQUFBUyxVQUFDLEFBQUssTUFBQyxBQUFFLEdBQUMsQUFBRyxBQUFDLEFBQUMsQUFDL0IsQUFBQyxBQUNGOzs7O0FBZHVDLEFBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVcGRhdGluZ09wY29kZSB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IHsgVk0sIFVwZGF0aW5nVk0gfSBmcm9tICcuLi8uLi92bSc7XG5pbXBvcnQgeyBBcmd1bWVudHMgfSBmcm9tICcuLi8uLi92bS9hcmd1bWVudHMnO1xuaW1wb3J0ICogYXMgU2ltcGxlIGZyb20gJy4uLy4uL2RvbS9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEZJWF9SRUlGSUNBVElPTiB9IGZyb20gJy4uLy4uL2RvbS9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEVudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgRklYTUUsIE9wdGlvbiwgT3BhcXVlIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQge1xuICBDYWNoZWRSZWZlcmVuY2UsXG4gIFJlZmVyZW5jZSxcbiAgVmVyc2lvbmVkUmVmZXJlbmNlLFxuICBSZWZlcmVuY2VDYWNoZSxcbiAgVGFnLFxuICBSZXZpc2lvbixcbiAgUGF0aFJlZmVyZW5jZSxcbiAgY29tYmluZVRhZ2dlZCxcbiAgaXNDb25zdCBhcyBpc0NvbnN0UmVmZXJlbmNlLFxuICBpc01vZGlmaWVkXG59IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBNb2RpZmllck1hbmFnZXIgfSBmcm9tICcuLi8uLi9tb2RpZmllci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE5VTExfUkVGRVJFTkNFLCBQcmltaXRpdmVSZWZlcmVuY2UgfSBmcm9tICcuLi8uLi9yZWZlcmVuY2VzJztcbmltcG9ydCB7IEF0dHJpYnV0ZU1hbmFnZXIgfSBmcm9tICcuLi8uLi9kb20vYXR0cmlidXRlLW1hbmFnZXJzJztcbmltcG9ydCB7IEVsZW1lbnRPcGVyYXRpb25zIH0gZnJvbSAnLi4vLi4vYnVpbGRlcic7XG5pbXBvcnQgeyBBc3NlcnQgfSBmcm9tICcuL3ZtJztcbmltcG9ydCB7IEFQUEVORF9PUENPREVTLCBPcCBhcyBPcCB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuVGV4dCwgKHZtLCB7IG9wMTogdGV4dCB9KSA9PiB7XG4gIHZtLmVsZW1lbnRzKCkuYXBwZW5kVGV4dCh2bS5jb25zdGFudHMuZ2V0U3RyaW5nKHRleHQpKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuQ29tbWVudCwgKHZtLCB7IG9wMTogdGV4dCB9KSA9PiB7XG4gIHZtLmVsZW1lbnRzKCkuYXBwZW5kQ29tbWVudCh2bS5jb25zdGFudHMuZ2V0U3RyaW5nKHRleHQpKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuT3BlbkVsZW1lbnQsICh2bSwgeyBvcDE6IHRhZyB9KSA9PiB7XG4gIHZtLmVsZW1lbnRzKCkub3BlbkVsZW1lbnQodm0uY29uc3RhbnRzLmdldFN0cmluZyh0YWcpKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuT3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucywgKHZtLCB7IG9wMTogdGFnIH0pID0+IHtcbiAgbGV0IHRhZ05hbWUgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKHRhZyk7XG4gIGxldCBvcGVyYXRpb25zID0gdm0uc3RhY2sucG9wPEVsZW1lbnRPcGVyYXRpb25zPigpO1xuICB2bS5lbGVtZW50cygpLm9wZW5FbGVtZW50KHRhZ05hbWUsIG9wZXJhdGlvbnMpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5PcGVuRHluYW1pY0VsZW1lbnQsIHZtID0+IHtcbiAgbGV0IG9wZXJhdGlvbnMgPSB2bS5zdGFjay5wb3A8RWxlbWVudE9wZXJhdGlvbnM+KCk7XG4gIGxldCB0YWdOYW1lID0gdm0uc3RhY2sucG9wPFJlZmVyZW5jZTxzdHJpbmc+PigpLnZhbHVlKCk7XG4gIHZtLmVsZW1lbnRzKCkub3BlbkVsZW1lbnQodGFnTmFtZSwgb3BlcmF0aW9ucyk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlB1c2hSZW1vdGVFbGVtZW50LCB2bSA9PiB7XG4gIGxldCBlbGVtZW50UmVmID0gdm0uc3RhY2sucG9wPFJlZmVyZW5jZTxTaW1wbGUuRWxlbWVudD4+KCk7XG4gIGxldCBuZXh0U2libGluZ1JlZiA9IHZtLnN0YWNrLnBvcDxSZWZlcmVuY2U8T3B0aW9uPFNpbXBsZS5Ob2RlPj4+KCk7XG5cbiAgbGV0IGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50O1xuICBsZXQgbmV4dFNpYmxpbmc6IE9wdGlvbjxTaW1wbGUuTm9kZT47XG5cbiAgaWYgKGlzQ29uc3RSZWZlcmVuY2UoZWxlbWVudFJlZikpIHtcbiAgICBlbGVtZW50ID0gZWxlbWVudFJlZi52YWx1ZSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCBjYWNoZSA9IG5ldyBSZWZlcmVuY2VDYWNoZShlbGVtZW50UmVmKTtcbiAgICBlbGVtZW50ID0gY2FjaGUucGVlaygpO1xuICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICB9XG5cbiAgaWYgKGlzQ29uc3RSZWZlcmVuY2UobmV4dFNpYmxpbmdSZWYpKSB7XG4gICAgbmV4dFNpYmxpbmcgPSBuZXh0U2libGluZ1JlZi52YWx1ZSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCBjYWNoZSA9IG5ldyBSZWZlcmVuY2VDYWNoZShuZXh0U2libGluZ1JlZik7XG4gICAgbmV4dFNpYmxpbmcgPSBjYWNoZS5wZWVrKCk7XG4gICAgdm0udXBkYXRlV2l0aChuZXcgQXNzZXJ0KGNhY2hlKSk7XG4gIH1cblxuICB2bS5lbGVtZW50cygpLnB1c2hSZW1vdGVFbGVtZW50KGVsZW1lbnQsIG5leHRTaWJsaW5nKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUG9wUmVtb3RlRWxlbWVudCwgdm0gPT4gdm0uZWxlbWVudHMoKS5wb3BSZW1vdGVFbGVtZW50KCkpO1xuXG5jbGFzcyBDbGFzc0xpc3Qge1xuICBwcml2YXRlIGxpc3Q6IE9wdGlvbjxSZWZlcmVuY2U8c3RyaW5nPltdPiA9IG51bGw7XG4gIHByaXZhdGUgaXNDb25zdCA9IHRydWU7XG5cbiAgYXBwZW5kKHJlZmVyZW5jZTogUmVmZXJlbmNlPHN0cmluZz4pIHtcbiAgICBsZXQgeyBsaXN0LCBpc0NvbnN0IH0gPSB0aGlzO1xuXG4gICAgaWYgKGxpc3QgPT09IG51bGwpIGxpc3QgPSB0aGlzLmxpc3QgPSBbXTtcblxuICAgIGxpc3QucHVzaChyZWZlcmVuY2UpO1xuICAgIHRoaXMuaXNDb25zdCA9IGlzQ29uc3QgJiYgaXNDb25zdFJlZmVyZW5jZShyZWZlcmVuY2UpO1xuICB9XG5cbiAgdG9SZWZlcmVuY2UoKTogUmVmZXJlbmNlPE9wdGlvbjxzdHJpbmc+PiB7XG4gICAgbGV0IHsgbGlzdCwgaXNDb25zdCB9ID0gdGhpcztcblxuICAgIGlmICghbGlzdCkgcmV0dXJuIE5VTExfUkVGRVJFTkNFO1xuXG4gICAgaWYgKGlzQ29uc3QpIHJldHVybiBQcmltaXRpdmVSZWZlcmVuY2UuY3JlYXRlKHRvQ2xhc3NOYW1lKGxpc3QpKTtcblxuICAgIHJldHVybiBuZXcgQ2xhc3NMaXN0UmVmZXJlbmNlKGxpc3QpO1xuICB9XG5cbn1cblxuY2xhc3MgQ2xhc3NMaXN0UmVmZXJlbmNlIGV4dGVuZHMgQ2FjaGVkUmVmZXJlbmNlPE9wdGlvbjxzdHJpbmc+PiB7XG4gIHB1YmxpYyB0YWc6IFRhZztcbiAgcHJpdmF0ZSBsaXN0OiBSZWZlcmVuY2U8c3RyaW5nPltdID0gW107XG5cbiAgY29uc3RydWN0b3IobGlzdDogUmVmZXJlbmNlPHN0cmluZz5bXSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy50YWcgPSBjb21iaW5lVGFnZ2VkKGxpc3QpO1xuICAgIHRoaXMubGlzdCA9IGxpc3Q7XG4gIH1cblxuICBwcm90ZWN0ZWQgY29tcHV0ZSgpOiBPcHRpb248c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRvQ2xhc3NOYW1lKHRoaXMubGlzdCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdG9DbGFzc05hbWUobGlzdDogUmVmZXJlbmNlPHN0cmluZz5bXSk6IE9wdGlvbjxzdHJpbmc+IHtcbiAgbGV0IHJldDogT3BhcXVlW10gPSBbXTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgdmFsdWU6IEZJWE1FPE9wYXF1ZSwgJ3VzZSBPcGFxdWUgYW5kIG5vcm1hbGl6ZSc+ID0gbGlzdFtpXS52YWx1ZSgpO1xuICAgIGlmICh2YWx1ZSAhPT0gZmFsc2UgJiYgdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkgcmV0LnB1c2godmFsdWUpO1xuICB9XG5cbiAgcmV0dXJuIChyZXQubGVuZ3RoID09PSAwKSA/IG51bGwgOiByZXQuam9pbignICcpO1xufVxuXG5leHBvcnQgY2xhc3MgU2ltcGxlRWxlbWVudE9wZXJhdGlvbnMgaW1wbGVtZW50cyBFbGVtZW50T3BlcmF0aW9ucyB7XG4gIHByaXZhdGUgb3Bjb2RlczogT3B0aW9uPFVwZGF0aW5nT3Bjb2RlW10+ID0gbnVsbDtcbiAgcHJpdmF0ZSBjbGFzc0xpc3Q6IE9wdGlvbjxDbGFzc0xpc3Q+ID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVudjogRW52aXJvbm1lbnQpIHtcbiAgfVxuXG4gIGFkZFN0YXRpY0F0dHJpYnV0ZShlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKG5hbWUgPT09ICdjbGFzcycpIHtcbiAgICAgIHRoaXMuYWRkQ2xhc3MoUHJpbWl0aXZlUmVmZXJlbmNlLmNyZWF0ZSh2YWx1ZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCkuc2V0QXR0cmlidXRlKGVsZW1lbnQsIG5hbWUsIHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBhZGRTdGF0aWNBdHRyaWJ1dGVOUyhlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZXNwYWNlOiBzdHJpbmcsIG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuZW52LmdldEFwcGVuZE9wZXJhdGlvbnMoKS5zZXRBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZSk7XG4gIH1cblxuICBhZGREeW5hbWljQXR0cmlidXRlKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lOiBzdHJpbmcsIHJlZmVyZW5jZTogUmVmZXJlbmNlPHN0cmluZz4sIGlzVHJ1c3Rpbmc6IGJvb2xlYW4pIHtcbiAgICBpZiAobmFtZSA9PT0gJ2NsYXNzJykge1xuICAgICAgdGhpcy5hZGRDbGFzcyhyZWZlcmVuY2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgYXR0cmlidXRlTWFuYWdlciA9IHRoaXMuZW52LmF0dHJpYnV0ZUZvcihlbGVtZW50LCBuYW1lLCBpc1RydXN0aW5nKTtcbiAgICAgIGxldCBhdHRyaWJ1dGUgPSBuZXcgRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCBuYW1lLCByZWZlcmVuY2UpO1xuXG4gICAgICB0aGlzLmFkZEF0dHJpYnV0ZShhdHRyaWJ1dGUpO1xuICAgIH1cbiAgfVxuXG4gIGFkZER5bmFtaWNBdHRyaWJ1dGVOUyhlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZXNwYWNlOiBTaW1wbGUuTmFtZXNwYWNlLCBuYW1lOiBzdHJpbmcsIHJlZmVyZW5jZTogUGF0aFJlZmVyZW5jZTxzdHJpbmc+LCBpc1RydXN0aW5nOiBib29sZWFuKSB7XG4gICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSB0aGlzLmVudi5hdHRyaWJ1dGVGb3IoZWxlbWVudCwgbmFtZSwgaXNUcnVzdGluZywgbmFtZXNwYWNlKTtcbiAgICBsZXQgbnNBdHRyaWJ1dGUgPSBuZXcgRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCBuYW1lLCByZWZlcmVuY2UsIG5hbWVzcGFjZSk7XG5cbiAgICB0aGlzLmFkZEF0dHJpYnV0ZShuc0F0dHJpYnV0ZSk7XG4gIH1cblxuICBmbHVzaChlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgdm06IFZNKSB7XG4gICAgbGV0IHsgZW52IH0gPSB2bTtcbiAgICBsZXQgeyBvcGNvZGVzLCBjbGFzc0xpc3QgfSA9IHRoaXM7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgb3Bjb2RlcyAmJiBpIDwgb3Bjb2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdm0udXBkYXRlV2l0aChvcGNvZGVzW2ldKTtcbiAgICB9XG5cbiAgICBpZiAoY2xhc3NMaXN0KSB7XG4gICAgICBsZXQgYXR0cmlidXRlTWFuYWdlciA9IGVudi5hdHRyaWJ1dGVGb3IoZWxlbWVudCwgJ2NsYXNzJywgZmFsc2UpO1xuICAgICAgbGV0IGF0dHJpYnV0ZSA9IG5ldyBEeW5hbWljQXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZU1hbmFnZXIsICdjbGFzcycsIGNsYXNzTGlzdC50b1JlZmVyZW5jZSgpKTtcbiAgICAgIGxldCBvcGNvZGUgPSBhdHRyaWJ1dGUuZmx1c2goZW52KTtcblxuICAgICAgaWYgKG9wY29kZSkge1xuICAgICAgICB2bS51cGRhdGVXaXRoKG9wY29kZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5vcGNvZGVzID0gbnVsbDtcbiAgICB0aGlzLmNsYXNzTGlzdCA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGFkZENsYXNzKHJlZmVyZW5jZTogUmVmZXJlbmNlPHN0cmluZz4pIHtcbiAgICBsZXQgeyBjbGFzc0xpc3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIWNsYXNzTGlzdCkge1xuICAgICAgY2xhc3NMaXN0ID0gdGhpcy5jbGFzc0xpc3QgPSBuZXcgQ2xhc3NMaXN0KCk7XG4gICAgfVxuXG4gICAgY2xhc3NMaXN0LmFwcGVuZChyZWZlcmVuY2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRBdHRyaWJ1dGUoYXR0cmlidXRlOiBBdHRyaWJ1dGUpIHtcbiAgICBsZXQgb3Bjb2RlID0gYXR0cmlidXRlLmZsdXNoKHRoaXMuZW52KTtcblxuICAgIGlmIChvcGNvZGUpIHtcbiAgICAgIGxldCB7IG9wY29kZXMgfSA9IHRoaXM7XG5cbiAgICAgIGlmICghb3Bjb2Rlcykge1xuICAgICAgICBvcGNvZGVzID0gdGhpcy5vcGNvZGVzID0gW107XG4gICAgICB9XG5cbiAgICAgIG9wY29kZXMucHVzaChvcGNvZGUpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50RWxlbWVudE9wZXJhdGlvbnMgaW1wbGVtZW50cyBFbGVtZW50T3BlcmF0aW9ucyB7XG4gIHByaXZhdGUgYXR0cmlidXRlTmFtZXM6IE9wdGlvbjxzdHJpbmdbXT4gPSBudWxsO1xuICBwcml2YXRlIGF0dHJpYnV0ZXM6IE9wdGlvbjxBdHRyaWJ1dGVbXT4gPSBudWxsO1xuICBwcml2YXRlIGNsYXNzTGlzdDogT3B0aW9uPENsYXNzTGlzdD4gPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZW52OiBFbnZpcm9ubWVudCkge1xuICB9XG5cbiAgYWRkU3RhdGljQXR0cmlidXRlKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAobmFtZSA9PT0gJ2NsYXNzJykge1xuICAgICAgdGhpcy5hZGRDbGFzcyhQcmltaXRpdmVSZWZlcmVuY2UuY3JlYXRlKHZhbHVlKSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNob3VsZEFkZEF0dHJpYnV0ZShuYW1lKSkge1xuICAgICAgdGhpcy5hZGRBdHRyaWJ1dGUobmFtZSwgbmV3IFN0YXRpY0F0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCB2YWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIGFkZFN0YXRpY0F0dHJpYnV0ZU5TKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lc3BhY2U6IHN0cmluZywgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuc2hvdWxkQWRkQXR0cmlidXRlKG5hbWUpKSB7XG4gICAgICB0aGlzLmFkZEF0dHJpYnV0ZShuYW1lLCBuZXcgU3RhdGljQXR0cmlidXRlKGVsZW1lbnQsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UpKTtcbiAgICB9XG4gIH1cblxuICBhZGREeW5hbWljQXR0cmlidXRlKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lOiBzdHJpbmcsIHJlZmVyZW5jZTogUGF0aFJlZmVyZW5jZTxzdHJpbmc+LCBpc1RydXN0aW5nOiBib29sZWFuKSB7XG4gICAgaWYgKG5hbWUgPT09ICdjbGFzcycpIHtcbiAgICAgIHRoaXMuYWRkQ2xhc3MocmVmZXJlbmNlKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2hvdWxkQWRkQXR0cmlidXRlKG5hbWUpKSB7XG4gICAgICBsZXQgYXR0cmlidXRlTWFuYWdlciA9IHRoaXMuZW52LmF0dHJpYnV0ZUZvcihlbGVtZW50LCBuYW1lLCBpc1RydXN0aW5nKTtcbiAgICAgIGxldCBhdHRyaWJ1dGUgPSBuZXcgRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCBuYW1lLCByZWZlcmVuY2UpO1xuXG4gICAgICB0aGlzLmFkZEF0dHJpYnV0ZShuYW1lLCBhdHRyaWJ1dGUpO1xuICAgIH1cbiAgfVxuXG4gIGFkZER5bmFtaWNBdHRyaWJ1dGVOUyhlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZXNwYWNlOiBTaW1wbGUuTmFtZXNwYWNlLCBuYW1lOiBzdHJpbmcsIHJlZmVyZW5jZTogUGF0aFJlZmVyZW5jZTxzdHJpbmc+LCBpc1RydXN0aW5nOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMuc2hvdWxkQWRkQXR0cmlidXRlKG5hbWUpKSB7XG4gICAgICBsZXQgYXR0cmlidXRlTWFuYWdlciA9IHRoaXMuZW52LmF0dHJpYnV0ZUZvcihlbGVtZW50LCBuYW1lLCBpc1RydXN0aW5nLCBuYW1lc3BhY2UpO1xuICAgICAgbGV0IG5zQXR0cmlidXRlID0gbmV3IER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlTWFuYWdlciwgbmFtZSwgcmVmZXJlbmNlLCBuYW1lc3BhY2UpO1xuXG4gICAgICB0aGlzLmFkZEF0dHJpYnV0ZShuYW1lLCBuc0F0dHJpYnV0ZSk7XG4gICAgfVxuICB9XG5cbiAgZmx1c2goZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIHZtOiBWTSkge1xuICAgIGxldCB7IGVudiB9ID0gdGhpcztcbiAgICBsZXQgeyBhdHRyaWJ1dGVzLCBjbGFzc0xpc3QgfSA9IHRoaXM7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgYXR0cmlidXRlcyAmJiBpIDwgYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IG9wY29kZSA9IGF0dHJpYnV0ZXNbaV0uZmx1c2goZW52KTtcblxuICAgICAgaWYgKG9wY29kZSkge1xuICAgICAgICB2bS51cGRhdGVXaXRoKG9wY29kZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNsYXNzTGlzdCkge1xuICAgICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSBlbnYuYXR0cmlidXRlRm9yKGVsZW1lbnQsICdjbGFzcycsIGZhbHNlKTtcbiAgICAgIGxldCBhdHRyaWJ1dGUgPSBuZXcgRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCAnY2xhc3MnLCBjbGFzc0xpc3QudG9SZWZlcmVuY2UoKSk7XG4gICAgICBsZXQgb3Bjb2RlID0gYXR0cmlidXRlLmZsdXNoKGVudik7XG5cbiAgICAgIGlmIChvcGNvZGUpIHtcbiAgICAgICAgdm0udXBkYXRlV2l0aChvcGNvZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkQWRkQXR0cmlidXRlKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5hdHRyaWJ1dGVOYW1lcyB8fCB0aGlzLmF0dHJpYnV0ZU5hbWVzLmluZGV4T2YobmFtZSkgPT09IC0xO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRDbGFzcyhyZWZlcmVuY2U6IFBhdGhSZWZlcmVuY2U8c3RyaW5nPikge1xuICAgIGxldCB7IGNsYXNzTGlzdCB9ID0gdGhpcztcblxuICAgIGlmICghY2xhc3NMaXN0KSB7XG4gICAgICBjbGFzc0xpc3QgPSB0aGlzLmNsYXNzTGlzdCA9IG5ldyBDbGFzc0xpc3QoKTtcbiAgICB9XG5cbiAgICBjbGFzc0xpc3QuYXBwZW5kKHJlZmVyZW5jZSk7XG4gIH1cblxuICBwcml2YXRlIGFkZEF0dHJpYnV0ZShuYW1lOiBzdHJpbmcsIGF0dHJpYnV0ZTogQXR0cmlidXRlKSB7XG4gICAgbGV0IHsgYXR0cmlidXRlTmFtZXMsIGF0dHJpYnV0ZXMgfSA9IHRoaXM7XG5cbiAgICBpZiAoIWF0dHJpYnV0ZU5hbWVzKSB7XG4gICAgICBhdHRyaWJ1dGVOYW1lcyA9IHRoaXMuYXR0cmlidXRlTmFtZXMgPSBbXTtcbiAgICAgIGF0dHJpYnV0ZXMgPSB0aGlzLmF0dHJpYnV0ZXMgPSBbXTtcbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVOYW1lcy5wdXNoKG5hbWUpO1xuICAgIGF0dHJpYnV0ZXMucHVzaChhdHRyaWJ1dGUpO1xuICB9XG59XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5GbHVzaEVsZW1lbnQsIHZtID0+IHtcbiAgbGV0IHN0YWNrID0gdm0uZWxlbWVudHMoKTtcblxuICBsZXQgYWN0aW9uID0gJ0ZsdXNoRWxlbWVudE9wY29kZSNldmFsdWF0ZSc7XG4gIHN0YWNrLmV4cGVjdE9wZXJhdGlvbnMoYWN0aW9uKS5mbHVzaChzdGFjay5leHBlY3RDb25zdHJ1Y3RpbmcoYWN0aW9uKSwgdm0pO1xuICBzdGFjay5mbHVzaEVsZW1lbnQoKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuQ2xvc2VFbGVtZW50LCB2bSA9PiB2bS5lbGVtZW50cygpLmNsb3NlRWxlbWVudCgpKTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlN0YXRpY0F0dHIsICh2bSwgeyBvcDE6IF9uYW1lLCBvcDI6IF92YWx1ZSwgb3AzOiBfbmFtZXNwYWNlIH0pID0+IHtcbiAgbGV0IG5hbWUgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKF9uYW1lKTtcbiAgbGV0IHZhbHVlID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyhfdmFsdWUpO1xuXG4gIGlmIChfbmFtZXNwYWNlKSB7XG4gICAgbGV0IG5hbWVzcGFjZSA9IHZtLmNvbnN0YW50cy5nZXRTdHJpbmcoX25hbWVzcGFjZSk7XG4gICAgdm0uZWxlbWVudHMoKS5zZXRTdGF0aWNBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICB2bS5lbGVtZW50cygpLnNldFN0YXRpY0F0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7XG4gIH1cbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuTW9kaWZpZXIsICh2bSwgeyBvcDE6IF9tYW5hZ2VyIH0pID0+IHtcbiAgbGV0IG1hbmFnZXIgPSB2bS5jb25zdGFudHMuZ2V0T3RoZXI8TW9kaWZpZXJNYW5hZ2VyPE9wYXF1ZT4+KF9tYW5hZ2VyKTtcbiAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gIGxldCBhcmdzID0gc3RhY2sucG9wPEFyZ3VtZW50cz4oKTtcbiAgbGV0IHRhZyA9IGFyZ3MudGFnO1xuICBsZXQgeyBjb25zdHJ1Y3Rpbmc6IGVsZW1lbnQsIHVwZGF0ZU9wZXJhdGlvbnMgfSA9IHZtLmVsZW1lbnRzKCk7XG4gIGxldCBkeW5hbWljU2NvcGUgPSB2bS5keW5hbWljU2NvcGUoKTtcbiAgbGV0IG1vZGlmaWVyID0gbWFuYWdlci5jcmVhdGUoZWxlbWVudCBhcyBGSVhfUkVJRklDQVRJT048RWxlbWVudD4sIGFyZ3MsIGR5bmFtaWNTY29wZSwgdXBkYXRlT3BlcmF0aW9ucyk7XG5cbiAgYXJncy5jbGVhcigpO1xuXG4gIHZtLmVudi5zY2hlZHVsZUluc3RhbGxNb2RpZmllcihtb2RpZmllciwgbWFuYWdlcik7XG4gIGxldCBkZXN0cnVjdG9yID0gbWFuYWdlci5nZXREZXN0cnVjdG9yKG1vZGlmaWVyKTtcblxuICBpZiAoZGVzdHJ1Y3Rvcikge1xuICAgIHZtLm5ld0Rlc3Ryb3lhYmxlKGRlc3RydWN0b3IpO1xuICB9XG5cbiAgdm0udXBkYXRlV2l0aChuZXcgVXBkYXRlTW9kaWZpZXJPcGNvZGUoXG4gICAgdGFnLFxuICAgIG1hbmFnZXIsXG4gICAgbW9kaWZpZXJcbiAgKSk7XG59KTtcblxuZXhwb3J0IGNsYXNzIFVwZGF0ZU1vZGlmaWVyT3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwidXBkYXRlLW1vZGlmaWVyXCI7XG4gIHByaXZhdGUgbGFzdFVwZGF0ZWQ6IFJldmlzaW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB0YWc6IFRhZyxcbiAgICBwcml2YXRlIG1hbmFnZXI6IE1vZGlmaWVyTWFuYWdlcjxPcGFxdWU+LFxuICAgIHByaXZhdGUgbW9kaWZpZXI6IE9wYXF1ZVxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubGFzdFVwZGF0ZWQgPSB0YWcudmFsdWUoKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgbGV0IHsgbWFuYWdlciwgbW9kaWZpZXIsIHRhZywgbGFzdFVwZGF0ZWQgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXRhZy52YWxpZGF0ZShsYXN0VXBkYXRlZCkpIHtcbiAgICAgIHZtLmVudi5zY2hlZHVsZVVwZGF0ZU1vZGlmaWVyKG1vZGlmaWVyLCBtYW5hZ2VyKTtcbiAgICAgIHRoaXMubGFzdFVwZGF0ZWQgPSB0YWcudmFsdWUoKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdHRyaWJ1dGUge1xuICBuYW1lOiBzdHJpbmc7XG4gIGZsdXNoKGVudjogRW52aXJvbm1lbnQpOiBPcHRpb248VXBkYXRpbmdPcGNvZGU+O1xufVxuXG5leHBvcnQgY2xhc3MgU3RhdGljQXR0cmlidXRlIGltcGxlbWVudHMgQXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbGVtZW50OiBTaW1wbGUuRWxlbWVudCxcbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nLFxuICAgIHByaXZhdGUgdmFsdWU6IHN0cmluZyxcbiAgICBwcml2YXRlIG5hbWVzcGFjZT86IHN0cmluZ1xuICApIHt9XG5cbiAgZmx1c2goZW52OiBFbnZpcm9ubWVudCk6IE9wdGlvbjxVcGRhdGluZ09wY29kZT4ge1xuICAgIGVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCkuc2V0QXR0cmlidXRlKHRoaXMuZWxlbWVudCwgdGhpcy5uYW1lLCB0aGlzLnZhbHVlLCB0aGlzLm5hbWVzcGFjZSk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIER5bmFtaWNBdHRyaWJ1dGUgaW1wbGVtZW50cyBBdHRyaWJ1dGUgIHtcbiAgcHJpdmF0ZSBjYWNoZTogT3B0aW9uPFJlZmVyZW5jZUNhY2hlPE9wYXF1ZT4+ID0gbnVsbDtcblxuICBwdWJsaWMgdGFnOiBUYWc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbGVtZW50OiBTaW1wbGUuRWxlbWVudCxcbiAgICBwcml2YXRlIGF0dHJpYnV0ZU1hbmFnZXI6IEF0dHJpYnV0ZU1hbmFnZXIsXG4gICAgcHVibGljIG5hbWU6IHN0cmluZyxcbiAgICBwcml2YXRlIHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4sXG4gICAgcHJpdmF0ZSBuYW1lc3BhY2U/OiBTaW1wbGUuTmFtZXNwYWNlXG4gICkge1xuICAgIHRoaXMudGFnID0gcmVmZXJlbmNlLnRhZztcbiAgfVxuXG4gIHBhdGNoKGVudjogRW52aXJvbm1lbnQpIHtcbiAgICBsZXQgeyBlbGVtZW50LCBjYWNoZSB9ID0gdGhpcztcblxuICAgIGxldCB2YWx1ZSA9IGNhY2hlLnJldmFsaWRhdGUoKTtcblxuICAgIGlmIChpc01vZGlmaWVkKHZhbHVlKSkge1xuICAgICAgdGhpcy5hdHRyaWJ1dGVNYW5hZ2VyLnVwZGF0ZUF0dHJpYnV0ZShlbnYsIGVsZW1lbnQgYXMgRklYTUU8RWxlbWVudCwgJ25lZWRzIHRvIGJlIHJlaWZpZWQgcHJvcGVybHknPiwgdmFsdWUsIHRoaXMubmFtZXNwYWNlKTtcbiAgICB9XG4gIH1cblxuICBmbHVzaChlbnY6IEVudmlyb25tZW50KTogT3B0aW9uPFVwZGF0aW5nT3Bjb2RlPiB7XG4gICAgbGV0IHsgcmVmZXJlbmNlLCBlbGVtZW50IH0gPSB0aGlzO1xuXG4gICAgaWYgKGlzQ29uc3RSZWZlcmVuY2UocmVmZXJlbmNlKSkge1xuICAgICAgbGV0IHZhbHVlID0gcmVmZXJlbmNlLnZhbHVlKCk7XG4gICAgICB0aGlzLmF0dHJpYnV0ZU1hbmFnZXIuc2V0QXR0cmlidXRlKGVudiwgZWxlbWVudCwgdmFsdWUsIHRoaXMubmFtZXNwYWNlKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgY2FjaGUgPSB0aGlzLmNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKHJlZmVyZW5jZSk7XG4gICAgICBsZXQgdmFsdWUgPSBjYWNoZS5wZWVrKCk7XG4gICAgICB0aGlzLmF0dHJpYnV0ZU1hbmFnZXIuc2V0QXR0cmlidXRlKGVudiwgZWxlbWVudCwgdmFsdWUsIHRoaXMubmFtZXNwYWNlKTtcbiAgICAgIHJldHVybiBuZXcgUGF0Y2hFbGVtZW50T3Bjb2RlKHRoaXMpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBmb3JtYXRFbGVtZW50KGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50KTogc3RyaW5nIHtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGA8JHtlbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKX0gLz5gKTtcbn1cblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkR5bmFtaWNBdHRyTlMsICh2bSwgeyBvcDE6IF9uYW1lLCBvcDI6IF9uYW1lc3BhY2UsIG9wMzogdHJ1c3RpbmcgfSkgPT4ge1xuICBsZXQgbmFtZSA9IHZtLmNvbnN0YW50cy5nZXRTdHJpbmcoX25hbWUpO1xuICBsZXQgbmFtZXNwYWNlID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyhfbmFtZXNwYWNlKTtcbiAgbGV0IHJlZmVyZW5jZSA9IHZtLnN0YWNrLnBvcDxWZXJzaW9uZWRSZWZlcmVuY2U8c3RyaW5nPj4oKTtcbiAgdm0uZWxlbWVudHMoKS5zZXREeW5hbWljQXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lLCByZWZlcmVuY2UsICEhdHJ1c3RpbmcpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5EeW5hbWljQXR0ciwgKHZtLCB7IG9wMTogX25hbWUsIG9wMjogdHJ1c3RpbmcgfSkgPT4ge1xuICBsZXQgbmFtZSA9IHZtLmNvbnN0YW50cy5nZXRTdHJpbmcoX25hbWUpO1xuICBsZXQgcmVmZXJlbmNlID0gdm0uc3RhY2sucG9wPFZlcnNpb25lZFJlZmVyZW5jZTxzdHJpbmc+PigpO1xuICB2bS5lbGVtZW50cygpLnNldER5bmFtaWNBdHRyaWJ1dGUobmFtZSwgcmVmZXJlbmNlLCAhIXRydXN0aW5nKTtcbn0pO1xuXG5leHBvcnQgY2xhc3MgUGF0Y2hFbGVtZW50T3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwicGF0Y2gtZWxlbWVudFwiO1xuXG4gIHByaXZhdGUgb3BlcmF0aW9uOiBEeW5hbWljQXR0cmlidXRlO1xuXG4gIGNvbnN0cnVjdG9yKG9wZXJhdGlvbjogRHluYW1pY0F0dHJpYnV0ZSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy50YWcgPSBvcGVyYXRpb24udGFnO1xuICAgIHRoaXMub3BlcmF0aW9uID0gb3BlcmF0aW9uO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICB0aGlzLm9wZXJhdGlvbi5wYXRjaCh2bS5lbnYpO1xuICB9XG59XG4iXX0=

@@ -230,21 +230,2 @@ "use strict";

Assert.prototype.toJSON = function toJSON() {
var type = this.type,
_guid = this._guid,
cache = this.cache;
var expected = void 0;
try {
expected = JSON.stringify(cache.peek());
} catch (e) {
expected = String(cache.peek());
}
return {
guid: _guid,
type: type,
args: [],
details: { expected: expected }
};
};
return Assert;

@@ -281,10 +262,2 @@ }(_opcodes.UpdatingOpcode);

JumpIfNotModifiedOpcode.prototype.toJSON = function toJSON() {
return {
guid: this._guid,
type: this.type,
args: [JSON.stringify(this.target.inspect())]
};
};
return JumpIfNotModifiedOpcode;

@@ -331,12 +304,4 @@ }(_opcodes.UpdatingOpcode);

LabelOpcode.prototype.toJSON = function toJSON() {
return {
guid: this._guid,
type: this.type,
args: [JSON.stringify(this.inspect())]
};
};
return LabelOpcode;
}();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ2bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0EsQUFBTyxBQUFjLEFBQWMsQUFBRSxBQUFNLEFBQWUsQUFBQzs7QUFHM0QsQUFBTyxBQUFhLEFBQWMsQUFBMEIsQUFBTSxBQUFvQixBQUFDOztBQUN2RixBQUFPLEFBQWtCLEFBQWMsQUFBRSxBQUFNLEFBQWUsQUFBQyxBQUMvRCxBQUFPLEFBQUUsQUFBWSxBQUFFLEFBQWMsQUFBaUIsQUFBTyxBQUFFLEFBQVUsQUFBRSxBQUFNLEFBQW9CLEFBQUMsQUFFdEcsQUFBTyxBQUFFLEFBQWMsQUFBWSxBQUFNLEFBQWUsQUFBQzs7QUFNekQsQUFBTyxBQUNMLEFBQWMsQUFDZCxBQUFtQixBQUNuQixBQUFjLEFBQ2QsQUFBZSxBQUNmLEFBQWtCLEFBQ25CLEFBQU0sQUFBa0IsQUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUUxQixBQUFjLHdCQUFDLEFBQUcsSUFBQyxHQUFhLGdDQUFFLEFBQUU7V0FBSSxBQUFFLEdBQUMsQUFBYyxBQUFFLEFBQUMsQUFBQzs7QUFFN0QsQUFBYyx3QkFBQyxBQUFHLElBQUMsR0FBVyw4QkFBRSxBQUFFO1dBQUksQUFBRSxHQUFDLEFBQVEsQUFBRSxBQUFDLEFBQUM7O0FBRXJELEFBQWMsd0JBQUMsQUFBRyxJQUFDLEdBQW1CLHNDQUFFLEFBQUU7V0FBSSxBQUFFLEdBQUMsQUFBZ0IsQUFBRSxBQUFDLEFBQUM7O0FBRXJFLEFBQWMsd0JBQUMsQUFBRyxJQUFDLEdBQWtCLHFDQUFFLEFBQUU7V0FBSSxBQUFFLEdBQUMsQUFBZSxBQUFFLEFBQUMsQUFBQzs7QUFFbkUsQUFBYyx3QkFBQyxBQUFHLElBQUMsR0FBWSxpQkFBRSxVQUFDLEFBQUUsQUFBRTtRQUFPLEFBQU0sQUFBRSxjQUFiLEFBQUcsQUFDekMsQUFBRTs7T0FBQyxBQUFLLE1BQUMsQUFBSSxLQUFDLEFBQU0sQUFBQyxBQUFDLEFB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QVEsQUFBSSxBQUFDLEFBR2YsQUFBYztrQ0FBQyxBQUFJLEFBQUMsQUFBQyxBQUNyQixBQUFFLEFBQUM7WUFBQyxBQUFLLEFBQUMsT0FBQyxBQUFJLEtBQUMsQUFBSyxRQUFHLEFBQUssQUFBQyxBQUNoQyxBQUFDOzs7MEJBRUQsQUFBUSwrQkFBSSxBQUFDOzswQkFFYixBQUFPLDZCQUNMLEFBQU0sQUFBQztlQUFHLEFBQUksS0FBQyxBQUFLLGVBQUssQUFBSSxLQUFDLEFBQUssQUFBRyxBQUFDLEFBQ3pDLFFBQUM7OzswQkFFRCxBQUFNLDJCQUNKLEFBQU07O2tCQUNFLEFBQUksS0FBQyxBQUFLLEFBQ2hCLEFBQUk7a0JBQUUsQUFBSSxLQUFDLEFBQUksQUFDZixBQUFJO2tCQUFFLENBQUMsQUFBSSxLQUFDLEFBQVMsVUFBQyxBQUFJLEtBSHJCLEFBR3NCLEFBQU8sQUFBRSxBQUFDLEFBQUMsQUFDdkMsQUFBQyxBQUNKLEFBQUMsQUFDRjtBQUxLLEFBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21waWxlZER5bmFtaWNUZW1wbGF0ZSB9IGZyb20gJy4uL2Jsb2Nrcyc7XG5pbXBvcnQgeyBPcGNvZGVKU09OLCBVcGRhdGluZ09wY29kZSB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IHsgVXBkYXRpbmdWTSwgVk0gfSBmcm9tICcuLi8uLi92bSc7XG5pbXBvcnQgeyBTeW1ib2xUYWJsZSB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgUmVmZXJlbmNlLCBDb25zdFJlZmVyZW5jZSwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBPcHRpb24sIE9wYXF1ZSwgaW5pdGlhbGl6ZUd1aWQgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IENPTlNUQU5UX1RBRywgUmVmZXJlbmNlQ2FjaGUsIFJldmlzaW9uLCBUYWcsIGlzQ29uc3QsIGlzTW9kaWZpZWQgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IEFQUEVORF9PUENPREVTLCBPcCBhcyBPcCB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuXG5pbXBvcnQge1xuICBCbG9ja1xufSBmcm9tICcuLi8uLi9zY2FubmVyJztcblxuaW1wb3J0IHtcbiAgTlVMTF9SRUZFUkVOQ0UsXG4gIFVOREVGSU5FRF9SRUZFUkVOQ0UsXG4gIFRSVUVfUkVGRVJFTkNFLFxuICBGQUxTRV9SRUZFUkVOQ0UsXG4gIFByaW1pdGl2ZVJlZmVyZW5jZVxufSBmcm9tICcuLi8uLi9yZWZlcmVuY2VzJztcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkNoaWxkU2NvcGUsIHZtID0+IHZtLnB1c2hDaGlsZFNjb3BlKCkpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUG9wU2NvcGUsIHZtID0+IHZtLnBvcFNjb3BlKCkpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUHVzaER5bmFtaWNTY29wZSwgdm0gPT4gdm0ucHVzaER5bmFtaWNTY29wZSgpKTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlBvcER5bmFtaWNTY29wZSwgdm0gPT4gdm0ucG9wRHluYW1pY1Njb3BlKCkpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuSW1tZWRpYXRlLCAodm0sIHsgb3AxOiBudW1iZXIgfSkgPT4ge1xuICB2bS5zdGFjay5wdXNoKG51bWJlcik7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkNvbnN0YW50LCAodm0sIHsgb3AxOiBvdGhlciB9KSA9PiB7XG4gIHZtLnN0YWNrLnB1c2godm0uY29uc3RhbnRzLmdldE90aGVyKG90aGVyKSk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlByaW1pdGl2ZVJlZmVyZW5jZSwgKHZtLCB7IG9wMTogcHJpbWl0aXZlIH0pID0+IHtcbiAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gIGxldCBmbGFnID0gKHByaW1pdGl2ZSAmICgzIDw8IDMwKSkgPj4+IDMwO1xuICBsZXQgdmFsdWUgPSBwcmltaXRpdmUgJiB+KDMgPDwgMzApO1xuXG4gIHN3aXRjaCAoZmxhZykge1xuICAgIGNhc2UgMDpcbiAgICAgIHN0YWNrLnB1c2goUHJpbWl0aXZlUmVmZXJlbmNlLmNyZWF0ZSh2YWx1ZSkpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxOlxuICAgICAgc3RhY2sucHVzaChQcmltaXRpdmVSZWZlcmVuY2UuY3JlYXRlKHZtLmNvbnN0YW50cy5nZXRTdHJpbmcodmFsdWUpKSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDI6XG4gICAgICBzd2l0Y2ggKHZhbHVlKSB7XG4gICAgICAgIGNhc2UgMDogc3RhY2sucHVzaChGQUxTRV9SRUZFUkVOQ0UpOyBicmVhaztcbiAgICAgICAgY2FzZSAxOiBzdGFjay5wdXNoKFRSVUVfUkVGRVJFTkNFKTsgYnJlYWs7XG4gICAgICAgIGNhc2UgMjogc3RhY2sucHVzaChOVUxMX1JFRkVSRU5DRSk7IGJyZWFrO1xuICAgICAgICBjYXNlIDM6IHN0YWNrLnB1c2goVU5ERUZJTkVEX1JFRkVSRU5DRSk7IGJyZWFrO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gIH1cbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuRHVwLCAodm0sIHsgb3AxOiByZWdpc3Rlciwgb3AyOiBvZmZzZXQgfSkgPT4ge1xuICBsZXQgcG9zaXRpb24gPSB2bS5mZXRjaFZhbHVlPG51bWJlcj4ocmVnaXN0ZXIpIC0gb2Zmc2V0O1xuICB2bS5zdGFjay5kdXAocG9zaXRpb24pO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5Qb3AsICh2bSwgeyBvcDE6IGNvdW50IH0pID0+IHZtLnN0YWNrLnBvcChjb3VudCkpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuTG9hZCwgKHZtLCB7IG9wMTogcmVnaXN0ZXIgfSkgPT4gdm0ubG9hZChyZWdpc3RlcikpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuRmV0Y2gsICh2bSwgeyBvcDE6IHJlZ2lzdGVyIH0pID0+IHZtLmZldGNoKHJlZ2lzdGVyKSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5CaW5kRHluYW1pY1Njb3BlLCAodm0sIHsgb3AxOiBfbmFtZXMgfSkgPT4ge1xuICBsZXQgbmFtZXMgPSB2bS5jb25zdGFudHMuZ2V0QXJyYXkoX25hbWVzKTtcbiAgdm0uYmluZER5bmFtaWNTY29wZShuYW1lcyk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlB1c2hGcmFtZSwgdm0gPT4gdm0ucHVzaEZyYW1lKCkpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUG9wRnJhbWUsIHZtID0+IHZtLnBvcEZyYW1lKCkpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuRW50ZXIsICh2bSwgeyBvcDE6IGFyZ3MgfSkgPT4gdm0uZW50ZXIoYXJncykpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuRXhpdCwgKHZtKSA9PiB2bS5leGl0KCkpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuQ29tcGlsZUR5bmFtaWNCbG9jaywgdm0gPT4ge1xuICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgbGV0IGJsb2NrID0gc3RhY2sucG9wPEJsb2NrPigpO1xuICBzdGFjay5wdXNoKGJsb2NrID8gYmxvY2suY29tcGlsZUR5bmFtaWModm0uZW52KSA6IG51bGwpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5JbnZva2VTdGF0aWMsICh2bSwgeyBvcDE6IF9ibG9jayB9KSA9PiB7XG4gIGxldCBibG9jayA9IHZtLmNvbnN0YW50cy5nZXRCbG9jayhfYmxvY2spO1xuICBsZXQgY29tcGlsZWQgPSBibG9jay5jb21waWxlU3RhdGljKHZtLmVudik7XG4gIHZtLmNhbGwoY29tcGlsZWQuc3RhcnQpO1xufSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1pY0ludm9rZXI8UyBleHRlbmRzIFN5bWJvbFRhYmxlPiB7XG4gIGludm9rZSh2bTogVk0sIGJsb2NrOiBPcHRpb248Q29tcGlsZWREeW5hbWljVGVtcGxhdGU8Uz4+KTogdm9pZDtcbn1cblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkludm9rZUR5bmFtaWMsICh2bSwgeyBvcDE6IF9pbnZva2VyIH0pID0+IHtcbiAgbGV0IGludm9rZXIgPSB2bS5jb25zdGFudHMuZ2V0T3RoZXI8RHluYW1pY0ludm9rZXI8U3ltYm9sVGFibGU+PihfaW52b2tlcik7XG4gIGxldCBibG9jayA9IHZtLnN0YWNrLnBvcDxPcHRpb248Q29tcGlsZWREeW5hbWljVGVtcGxhdGU8U3ltYm9sVGFibGU+Pj4oKTtcbiAgaW52b2tlci5pbnZva2Uodm0sIGJsb2NrKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuSnVtcCwgKHZtLCB7IG9wMTogdGFyZ2V0IH0pID0+IHZtLmdvdG8odGFyZ2V0KSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5KdW1wSWYsICh2bSwgeyBvcDE6IHRhcmdldCB9KSA9PiB7XG4gIGxldCByZWZlcmVuY2UgPSB2bS5zdGFjay5wb3A8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+PigpO1xuXG4gIGlmIChpc0NvbnN0KHJlZmVyZW5jZSkpIHtcbiAgICBpZiAocmVmZXJlbmNlLnZhbHVlKCkpIHtcbiAgICAgIHZtLmdvdG8odGFyZ2V0KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbGV0IGNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKHJlZmVyZW5jZSk7XG5cbiAgICBpZiAoY2FjaGUucGVlaygpKSB7XG4gICAgICB2bS5nb3RvKHRhcmdldCk7XG4gICAgfVxuXG4gICAgdm0udXBkYXRlV2l0aChuZXcgQXNzZXJ0KGNhY2hlKSk7XG4gIH1cbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuSnVtcFVubGVzcywgKHZtLCB7IG9wMTogdGFyZ2V0IH0pID0+IHtcbiAgbGV0IHJlZmVyZW5jZSA9IHZtLnN0YWNrLnBvcDxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4+KCk7XG5cbiAgaWYgKGlzQ29uc3QocmVmZXJlbmNlKSkge1xuICAgIGlmICghcmVmZXJlbmNlLnZhbHVlKCkpIHtcbiAgICAgIHZtLmdvdG8odGFyZ2V0KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbGV0IGNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKHJlZmVyZW5jZSk7XG5cbiAgICBpZiAoIWNhY2hlLnBlZWsoKSkge1xuICAgICAgdm0uZ290byh0YXJnZXQpO1xuICAgIH1cblxuICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICB9XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlJldHVybiwgdm0gPT4gdm0ucmV0dXJuKCkpO1xuXG5leHBvcnQgdHlwZSBUZXN0RnVuY3Rpb24gPSAocmVmOiBSZWZlcmVuY2U8T3BhcXVlPiwgZW52OiBFbnZpcm9ubWVudCkgPT4gUmVmZXJlbmNlPGJvb2xlYW4+O1xuXG5leHBvcnQgY29uc3QgQ29uc3RUZXN0OiBUZXN0RnVuY3Rpb24gPSBmdW5jdGlvbihyZWY6IFJlZmVyZW5jZTxPcGFxdWU+LCBfZW52OiBFbnZpcm9ubWVudCk6IFJlZmVyZW5jZTxib29sZWFuPiB7XG4gIHJldHVybiBuZXcgQ29uc3RSZWZlcmVuY2UoISFyZWYudmFsdWUoKSk7XG59O1xuXG5leHBvcnQgY29uc3QgU2ltcGxlVGVzdDogVGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24ocmVmOiBSZWZlcmVuY2U8T3BhcXVlPiwgX2VudjogRW52aXJvbm1lbnQpOiBSZWZlcmVuY2U8Ym9vbGVhbj4ge1xuICByZXR1cm4gcmVmIGFzIFJlZmVyZW5jZTxib29sZWFuPjtcbn07XG5cbmV4cG9ydCBjb25zdCBFbnZpcm9ubWVudFRlc3Q6IFRlc3RGdW5jdGlvbiA9IGZ1bmN0aW9uKHJlZjogUmVmZXJlbmNlPE9wYXF1ZT4sIGVudjogRW52aXJvbm1lbnQpOiBSZWZlcmVuY2U8Ym9vbGVhbj4ge1xuICByZXR1cm4gZW52LnRvQ29uZGl0aW9uYWxSZWZlcmVuY2UocmVmKTtcbn07XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5UZXN0LCAodm0sIHsgb3AxOiBfZnVuYyB9KSA9PiB7XG4gIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICBsZXQgb3BlcmFuZCA9IHN0YWNrLnBvcCgpO1xuICBsZXQgZnVuYyA9IHZtLmNvbnN0YW50cy5nZXRGdW5jdGlvbihfZnVuYyk7XG4gIHN0YWNrLnB1c2goZnVuYyhvcGVyYW5kLCB2bS5lbnYpKTtcbn0pO1xuXG5leHBvcnQgY2xhc3MgQXNzZXJ0IGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwiYXNzZXJ0XCI7XG5cbiAgcHJpdmF0ZSBjYWNoZTogUmVmZXJlbmNlQ2FjaGU8T3BhcXVlPjtcblxuICBjb25zdHJ1Y3RvcihjYWNoZTogUmVmZXJlbmNlQ2FjaGU8T3BhcXVlPikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy50YWcgPSBjYWNoZS50YWc7XG4gICAgdGhpcy5jYWNoZSA9IGNhY2hlO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICBsZXQgeyBjYWNoZSB9ID0gdGhpcztcblxuICAgIGlmIChpc01vZGlmaWVkKGNhY2hlLnJldmFsaWRhdGUoKSkpIHtcbiAgICAgIHZtLnRocm93KCk7XG4gICAgfVxuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIGxldCB7IHR5cGUsIF9ndWlkLCBjYWNoZSB9ID0gdGhpcztcblxuICAgIGxldCBleHBlY3RlZDtcblxuICAgIHRyeSB7XG4gICAgICBleHBlY3RlZCA9IEpTT04uc3RyaW5naWZ5KGNhY2hlLnBlZWsoKSk7XG4gICAgfSBjYXRjaChlKSB7XG4gICAgICBleHBlY3RlZCA9IFN0cmluZyhjYWNoZS5wZWVrKCkpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBndWlkOiBfZ3VpZCxcbiAgICAgIHR5cGUsXG4gICAgICBhcmdzOiBbXSxcbiAgICAgIGRldGFpbHM6IHsgZXhwZWN0ZWQgfVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEp1bXBJZk5vdE1vZGlmaWVkT3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwianVtcC1pZi1ub3QtbW9kaWZpZWRcIjtcblxuICBwcml2YXRlIGxhc3RSZXZpc2lvbjogUmV2aXNpb247XG5cbiAgY29uc3RydWN0b3IodGFnOiBUYWcsIHByaXZhdGUgdGFyZ2V0OiBMYWJlbE9wY29kZSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy50YWcgPSB0YWc7XG4gICAgdGhpcy5sYXN0UmV2aXNpb24gPSB0YWcudmFsdWUoKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgbGV0IHsgdGFnLCB0YXJnZXQsIGxhc3RSZXZpc2lvbiB9ID0gdGhpcztcblxuICAgIGlmICghdm0uYWx3YXlzUmV2YWxpZGF0ZSAmJiB0YWcudmFsaWRhdGUobGFzdFJldmlzaW9uKSkge1xuICAgICAgdm0uZ290byh0YXJnZXQpO1xuICAgIH1cbiAgfVxuXG4gIGRpZE1vZGlmeSgpIHtcbiAgICB0aGlzLmxhc3RSZXZpc2lvbiA9IHRoaXMudGFnLnZhbHVlKCk7XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICBhcmdzOiBbSlNPTi5zdHJpbmdpZnkodGhpcy50YXJnZXQuaW5zcGVjdCgpKV1cbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEaWRNb2RpZnlPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJkaWQtbW9kaWZ5XCI7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0YXJnZXQ6IEp1bXBJZk5vdE1vZGlmaWVkT3Bjb2RlKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnRhZyA9IENPTlNUQU5UX1RBRztcbiAgfVxuXG4gIGV2YWx1YXRlKCkge1xuICAgIHRoaXMudGFyZ2V0LmRpZE1vZGlmeSgpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMYWJlbE9wY29kZSBpbXBsZW1lbnRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgcHVibGljIHRhZzogVGFnID0gQ09OU1RBTlRfVEFHO1xuICBwdWJsaWMgdHlwZSA9IFwibGFiZWxcIjtcbiAgcHVibGljIGxhYmVsOiBPcHRpb248c3RyaW5nPiA9IG51bGw7XG4gIHB1YmxpYyBfZ3VpZDogbnVtYmVyO1xuXG4gIHByZXY6IGFueSA9IG51bGw7XG4gIG5leHQ6IGFueSA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IobGFiZWw6IHN0cmluZykge1xuICAgIGluaXRpYWxpemVHdWlkKHRoaXMpO1xuICAgIGlmIChsYWJlbCkgdGhpcy5sYWJlbCA9IGxhYmVsO1xuICB9XG5cbiAgZXZhbHVhdGUoKSB7fVxuXG4gIGluc3BlY3QoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5sYWJlbH0gWyR7dGhpcy5fZ3VpZH1dYDtcbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIGFyZ3M6IFtKU09OLnN0cmluZ2lmeSh0aGlzLmluc3BlY3QoKSldXG4gICAgfTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ2bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0EsQUFBTyxBQUFjLEFBQWMsQUFBRSxBQUFNLEFBQWUsQUFBQzs7QUFHM0QsQUFBTyxBQUFhLEFBQWMsQUFBMEIsQUFBTSxBQUFvQixBQUFDOztBQUN2RixBQUFPLEFBQWtCLEFBQWMsQUFBRSxBQUFNLEFBQWUsQUFBQyxBQUMvRCxBQUFPLEFBQUUsQUFBWSxBQUFFLEFBQWMsQUFBaUIsQUFBTyxBQUFFLEFBQVUsQUFBRSxBQUFNLEFBQW9CLEFBQUMsQUFFdEcsQUFBTyxBQUFFLEFBQWMsQUFBWSxBQUFNLEFBQWUsQUFBQzs7QUFNekQsQUFBTyxBQUNMLEFBQWMsQUFDZCxBQUFtQixBQUNuQixBQUFjLEFBQ2QsQUFBZSxBQUNmLEFBQWtCLEFBQ25CLEFBQU0sQUFBa0IsQUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUUxQixBQUFjLHdCQUFDLEFBQUcsSUFBQyxHQUFhLGdDQUFFLEFBQUU7V0FBSSxBQUFFLEdBQUMsQUFBYyxBQUFFLEFBQUMsQUFBQzs7QUFFN0QsQUFBYyx3QkFBQyxBQUFHLElBQUMsR0FBVyw4QkFBRSxBQUFFO1dBQUksQUFBRSxHQUFDLEFBQVEsQUFBRSxBQUFDLEFBQUM7O0FBRXJELEFBQWMsd0JBQUMsQUFBRyxJQUFDLEdBQW1CLHNDQUFFLEFBQUU7V0FBSSxBQUFFLEdBQUMsQUFBZ0IsQUFBRSxBQUFDLEFBQUM7O0FBRXJFLEFBQWMsd0JBQUMsQUFBRyxJQUFDLEdBQWtCLHFDQUFFLEFBQUU7V0FBSSxBQUFFLEdBQUMsQUFBZSxBQUFFLEFBQUMsQUFBQzs7QUFFbkUsQUFBYyx3QkFBQyxBQUFHLElBQUMsR0FBWSxpQkFBRSxVQUFDLEFBQUUsQUFBRTtRQUFPLEFBQU0sQUFBRSxjQUFiLEFBQUcsQUFDekMsQUFBRTs7T0FBQyxBQUFLLE1BQUMsQUFBSSxLQUFDLEFBQU0sQUFBQyxBQUFDLEFB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QVksQUFBQyxBQUl6QixBQUFJO2VBQUMsQUFBRyxBQUFHLEFBQVksQUFBQyxBQUMxQjtlQUFDOzs7OEJBRUQsQUFBUSwrQkFDTixBQUFJO2FBQUMsQUFBTSxPQUFDLEFBQVMsQUFBRSxBQUFDLEFBQzFCLEFBQUMsQUFDRjs7OztBQVhvQyxBQUFjLEFBYW5ELEFBQU07b0RBU0o7eUJBQVksQUFBYTs4QkFSbEI7O2FBQUcsQUFBUSxBQUFZLEFBQUMsQUFDeEI7YUFBSSxPQUFHLEFBQU8sQUFBQyxBQUNmO2FBQUssUUFBbUIsQUFBSSxBQUFDLEFBR3BDO2FBQUksT0FBUSxBQUFJLEFBQUMsQUFDakI7YUFBSSxPQUFRLEFBQUksQUFBQyxBQUdmLEFBQWM7a0NBQUMsQUFBSSxBQUFDLEFBQUMsQUFDckIsQUFBRSxBQUFDO1lBQUMsQUFBSyxBQUFDLE9BQUMsQUFBSSxLQUFDLEFBQUssUUFBRyxBQUFLLEFBQUMsQUFDaEMsQUFBQzs7OzBCQUVELEFBQVEsK0JBQUksQUFBQzs7MEJBRWIsQUFBTyw2QkFDTCxBQUFNLEFBQUM7ZUFBRyxBQUFJLEtBQUMsQUFBSyxlQUFLLEFBQUksS0FBQyxBQUFLLEFBQUcsQUFBQyxBQUN6QyxRQUFDLEFBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21waWxlZER5bmFtaWNUZW1wbGF0ZSB9IGZyb20gJy4uL2Jsb2Nrcyc7XG5pbXBvcnQgeyBPcGNvZGVKU09OLCBVcGRhdGluZ09wY29kZSB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IHsgVXBkYXRpbmdWTSwgVk0gfSBmcm9tICcuLi8uLi92bSc7XG5pbXBvcnQgeyBTeW1ib2xUYWJsZSB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgUmVmZXJlbmNlLCBDb25zdFJlZmVyZW5jZSwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBPcHRpb24sIE9wYXF1ZSwgaW5pdGlhbGl6ZUd1aWQgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IENPTlNUQU5UX1RBRywgUmVmZXJlbmNlQ2FjaGUsIFJldmlzaW9uLCBUYWcsIGlzQ29uc3QsIGlzTW9kaWZpZWQgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IEFQUEVORF9PUENPREVTLCBPcCBhcyBPcCB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuXG5pbXBvcnQge1xuICBCbG9ja1xufSBmcm9tICcuLi8uLi9zY2FubmVyJztcblxuaW1wb3J0IHtcbiAgTlVMTF9SRUZFUkVOQ0UsXG4gIFVOREVGSU5FRF9SRUZFUkVOQ0UsXG4gIFRSVUVfUkVGRVJFTkNFLFxuICBGQUxTRV9SRUZFUkVOQ0UsXG4gIFByaW1pdGl2ZVJlZmVyZW5jZVxufSBmcm9tICcuLi8uLi9yZWZlcmVuY2VzJztcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkNoaWxkU2NvcGUsIHZtID0+IHZtLnB1c2hDaGlsZFNjb3BlKCkpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUG9wU2NvcGUsIHZtID0+IHZtLnBvcFNjb3BlKCkpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUHVzaER5bmFtaWNTY29wZSwgdm0gPT4gdm0ucHVzaER5bmFtaWNTY29wZSgpKTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlBvcER5bmFtaWNTY29wZSwgdm0gPT4gdm0ucG9wRHluYW1pY1Njb3BlKCkpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuSW1tZWRpYXRlLCAodm0sIHsgb3AxOiBudW1iZXIgfSkgPT4ge1xuICB2bS5zdGFjay5wdXNoKG51bWJlcik7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkNvbnN0YW50LCAodm0sIHsgb3AxOiBvdGhlciB9KSA9PiB7XG4gIHZtLnN0YWNrLnB1c2godm0uY29uc3RhbnRzLmdldE90aGVyKG90aGVyKSk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlByaW1pdGl2ZVJlZmVyZW5jZSwgKHZtLCB7IG9wMTogcHJpbWl0aXZlIH0pID0+IHtcbiAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gIGxldCBmbGFnID0gKHByaW1pdGl2ZSAmICgzIDw8IDMwKSkgPj4+IDMwO1xuICBsZXQgdmFsdWUgPSBwcmltaXRpdmUgJiB+KDMgPDwgMzApO1xuXG4gIHN3aXRjaCAoZmxhZykge1xuICAgIGNhc2UgMDpcbiAgICAgIHN0YWNrLnB1c2goUHJpbWl0aXZlUmVmZXJlbmNlLmNyZWF0ZSh2YWx1ZSkpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxOlxuICAgICAgc3RhY2sucHVzaChQcmltaXRpdmVSZWZlcmVuY2UuY3JlYXRlKHZtLmNvbnN0YW50cy5nZXRTdHJpbmcodmFsdWUpKSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDI6XG4gICAgICBzd2l0Y2ggKHZhbHVlKSB7XG4gICAgICAgIGNhc2UgMDogc3RhY2sucHVzaChGQUxTRV9SRUZFUkVOQ0UpOyBicmVhaztcbiAgICAgICAgY2FzZSAxOiBzdGFjay5wdXNoKFRSVUVfUkVGRVJFTkNFKTsgYnJlYWs7XG4gICAgICAgIGNhc2UgMjogc3RhY2sucHVzaChOVUxMX1JFRkVSRU5DRSk7IGJyZWFrO1xuICAgICAgICBjYXNlIDM6IHN0YWNrLnB1c2goVU5ERUZJTkVEX1JFRkVSRU5DRSk7IGJyZWFrO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gIH1cbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuRHVwLCAodm0sIHsgb3AxOiByZWdpc3Rlciwgb3AyOiBvZmZzZXQgfSkgPT4ge1xuICBsZXQgcG9zaXRpb24gPSB2bS5mZXRjaFZhbHVlPG51bWJlcj4ocmVnaXN0ZXIpIC0gb2Zmc2V0O1xuICB2bS5zdGFjay5kdXAocG9zaXRpb24pO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5Qb3AsICh2bSwgeyBvcDE6IGNvdW50IH0pID0+IHZtLnN0YWNrLnBvcChjb3VudCkpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuTG9hZCwgKHZtLCB7IG9wMTogcmVnaXN0ZXIgfSkgPT4gdm0ubG9hZChyZWdpc3RlcikpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuRmV0Y2gsICh2bSwgeyBvcDE6IHJlZ2lzdGVyIH0pID0+IHZtLmZldGNoKHJlZ2lzdGVyKSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5CaW5kRHluYW1pY1Njb3BlLCAodm0sIHsgb3AxOiBfbmFtZXMgfSkgPT4ge1xuICBsZXQgbmFtZXMgPSB2bS5jb25zdGFudHMuZ2V0QXJyYXkoX25hbWVzKTtcbiAgdm0uYmluZER5bmFtaWNTY29wZShuYW1lcyk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlB1c2hGcmFtZSwgdm0gPT4gdm0ucHVzaEZyYW1lKCkpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUG9wRnJhbWUsIHZtID0+IHZtLnBvcEZyYW1lKCkpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuRW50ZXIsICh2bSwgeyBvcDE6IGFyZ3MgfSkgPT4gdm0uZW50ZXIoYXJncykpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuRXhpdCwgKHZtKSA9PiB2bS5leGl0KCkpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuQ29tcGlsZUR5bmFtaWNCbG9jaywgdm0gPT4ge1xuICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgbGV0IGJsb2NrID0gc3RhY2sucG9wPEJsb2NrPigpO1xuICBzdGFjay5wdXNoKGJsb2NrID8gYmxvY2suY29tcGlsZUR5bmFtaWModm0uZW52KSA6IG51bGwpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5JbnZva2VTdGF0aWMsICh2bSwgeyBvcDE6IF9ibG9jayB9KSA9PiB7XG4gIGxldCBibG9jayA9IHZtLmNvbnN0YW50cy5nZXRCbG9jayhfYmxvY2spO1xuICBsZXQgY29tcGlsZWQgPSBibG9jay5jb21waWxlU3RhdGljKHZtLmVudik7XG4gIHZtLmNhbGwoY29tcGlsZWQuc3RhcnQpO1xufSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1pY0ludm9rZXI8UyBleHRlbmRzIFN5bWJvbFRhYmxlPiB7XG4gIGludm9rZSh2bTogVk0sIGJsb2NrOiBPcHRpb248Q29tcGlsZWREeW5hbWljVGVtcGxhdGU8Uz4+KTogdm9pZDtcbn1cblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkludm9rZUR5bmFtaWMsICh2bSwgeyBvcDE6IF9pbnZva2VyIH0pID0+IHtcbiAgbGV0IGludm9rZXIgPSB2bS5jb25zdGFudHMuZ2V0T3RoZXI8RHluYW1pY0ludm9rZXI8U3ltYm9sVGFibGU+PihfaW52b2tlcik7XG4gIGxldCBibG9jayA9IHZtLnN0YWNrLnBvcDxPcHRpb248Q29tcGlsZWREeW5hbWljVGVtcGxhdGU8U3ltYm9sVGFibGU+Pj4oKTtcbiAgaW52b2tlci5pbnZva2Uodm0sIGJsb2NrKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuSnVtcCwgKHZtLCB7IG9wMTogdGFyZ2V0IH0pID0+IHZtLmdvdG8odGFyZ2V0KSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5KdW1wSWYsICh2bSwgeyBvcDE6IHRhcmdldCB9KSA9PiB7XG4gIGxldCByZWZlcmVuY2UgPSB2bS5zdGFjay5wb3A8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+PigpO1xuXG4gIGlmIChpc0NvbnN0KHJlZmVyZW5jZSkpIHtcbiAgICBpZiAocmVmZXJlbmNlLnZhbHVlKCkpIHtcbiAgICAgIHZtLmdvdG8odGFyZ2V0KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbGV0IGNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKHJlZmVyZW5jZSk7XG5cbiAgICBpZiAoY2FjaGUucGVlaygpKSB7XG4gICAgICB2bS5nb3RvKHRhcmdldCk7XG4gICAgfVxuXG4gICAgdm0udXBkYXRlV2l0aChuZXcgQXNzZXJ0KGNhY2hlKSk7XG4gIH1cbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuSnVtcFVubGVzcywgKHZtLCB7IG9wMTogdGFyZ2V0IH0pID0+IHtcbiAgbGV0IHJlZmVyZW5jZSA9IHZtLnN0YWNrLnBvcDxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4+KCk7XG5cbiAgaWYgKGlzQ29uc3QocmVmZXJlbmNlKSkge1xuICAgIGlmICghcmVmZXJlbmNlLnZhbHVlKCkpIHtcbiAgICAgIHZtLmdvdG8odGFyZ2V0KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbGV0IGNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKHJlZmVyZW5jZSk7XG5cbiAgICBpZiAoIWNhY2hlLnBlZWsoKSkge1xuICAgICAgdm0uZ290byh0YXJnZXQpO1xuICAgIH1cblxuICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICB9XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlJldHVybiwgdm0gPT4gdm0ucmV0dXJuKCkpO1xuXG5leHBvcnQgdHlwZSBUZXN0RnVuY3Rpb24gPSAocmVmOiBSZWZlcmVuY2U8T3BhcXVlPiwgZW52OiBFbnZpcm9ubWVudCkgPT4gUmVmZXJlbmNlPGJvb2xlYW4+O1xuXG5leHBvcnQgY29uc3QgQ29uc3RUZXN0OiBUZXN0RnVuY3Rpb24gPSBmdW5jdGlvbihyZWY6IFJlZmVyZW5jZTxPcGFxdWU+LCBfZW52OiBFbnZpcm9ubWVudCk6IFJlZmVyZW5jZTxib29sZWFuPiB7XG4gIHJldHVybiBuZXcgQ29uc3RSZWZlcmVuY2UoISFyZWYudmFsdWUoKSk7XG59O1xuXG5leHBvcnQgY29uc3QgU2ltcGxlVGVzdDogVGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24ocmVmOiBSZWZlcmVuY2U8T3BhcXVlPiwgX2VudjogRW52aXJvbm1lbnQpOiBSZWZlcmVuY2U8Ym9vbGVhbj4ge1xuICByZXR1cm4gcmVmIGFzIFJlZmVyZW5jZTxib29sZWFuPjtcbn07XG5cbmV4cG9ydCBjb25zdCBFbnZpcm9ubWVudFRlc3Q6IFRlc3RGdW5jdGlvbiA9IGZ1bmN0aW9uKHJlZjogUmVmZXJlbmNlPE9wYXF1ZT4sIGVudjogRW52aXJvbm1lbnQpOiBSZWZlcmVuY2U8Ym9vbGVhbj4ge1xuICByZXR1cm4gZW52LnRvQ29uZGl0aW9uYWxSZWZlcmVuY2UocmVmKTtcbn07XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5UZXN0LCAodm0sIHsgb3AxOiBfZnVuYyB9KSA9PiB7XG4gIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICBsZXQgb3BlcmFuZCA9IHN0YWNrLnBvcCgpO1xuICBsZXQgZnVuYyA9IHZtLmNvbnN0YW50cy5nZXRGdW5jdGlvbihfZnVuYyk7XG4gIHN0YWNrLnB1c2goZnVuYyhvcGVyYW5kLCB2bS5lbnYpKTtcbn0pO1xuXG5leHBvcnQgY2xhc3MgQXNzZXJ0IGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwiYXNzZXJ0XCI7XG5cbiAgcHJpdmF0ZSBjYWNoZTogUmVmZXJlbmNlQ2FjaGU8T3BhcXVlPjtcblxuICBjb25zdHJ1Y3RvcihjYWNoZTogUmVmZXJlbmNlQ2FjaGU8T3BhcXVlPikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy50YWcgPSBjYWNoZS50YWc7XG4gICAgdGhpcy5jYWNoZSA9IGNhY2hlO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICBsZXQgeyBjYWNoZSB9ID0gdGhpcztcblxuICAgIGlmIChpc01vZGlmaWVkKGNhY2hlLnJldmFsaWRhdGUoKSkpIHtcbiAgICAgIHZtLnRocm93KCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBKdW1wSWZOb3RNb2RpZmllZE9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImp1bXAtaWYtbm90LW1vZGlmaWVkXCI7XG5cbiAgcHJpdmF0ZSBsYXN0UmV2aXNpb246IFJldmlzaW9uO1xuXG4gIGNvbnN0cnVjdG9yKHRhZzogVGFnLCBwcml2YXRlIHRhcmdldDogTGFiZWxPcGNvZGUpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudGFnID0gdGFnO1xuICAgIHRoaXMubGFzdFJldmlzaW9uID0gdGFnLnZhbHVlKCk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVXBkYXRpbmdWTSkge1xuICAgIGxldCB7IHRhZywgdGFyZ2V0LCBsYXN0UmV2aXNpb24gfSA9IHRoaXM7XG5cbiAgICBpZiAoIXZtLmFsd2F5c1JldmFsaWRhdGUgJiYgdGFnLnZhbGlkYXRlKGxhc3RSZXZpc2lvbikpIHtcbiAgICAgIHZtLmdvdG8odGFyZ2V0KTtcbiAgICB9XG4gIH1cblxuICBkaWRNb2RpZnkoKSB7XG4gICAgdGhpcy5sYXN0UmV2aXNpb24gPSB0aGlzLnRhZy52YWx1ZSgpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEaWRNb2RpZnlPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJkaWQtbW9kaWZ5XCI7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0YXJnZXQ6IEp1bXBJZk5vdE1vZGlmaWVkT3Bjb2RlKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnRhZyA9IENPTlNUQU5UX1RBRztcbiAgfVxuXG4gIGV2YWx1YXRlKCkge1xuICAgIHRoaXMudGFyZ2V0LmRpZE1vZGlmeSgpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMYWJlbE9wY29kZSBpbXBsZW1lbnRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgcHVibGljIHRhZzogVGFnID0gQ09OU1RBTlRfVEFHO1xuICBwdWJsaWMgdHlwZSA9IFwibGFiZWxcIjtcbiAgcHVibGljIGxhYmVsOiBPcHRpb248c3RyaW5nPiA9IG51bGw7XG4gIHB1YmxpYyBfZ3VpZDogbnVtYmVyO1xuXG4gIHByZXY6IGFueSA9IG51bGw7XG4gIG5leHQ6IGFueSA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IobGFiZWw6IHN0cmluZykge1xuICAgIGluaXRpYWxpemVHdWlkKHRoaXMpO1xuICAgIGlmIChsYWJlbCkgdGhpcy5sYWJlbCA9IGxhYmVsO1xuICB9XG5cbiAgZXZhbHVhdGUoKSB7fVxuXG4gIGluc3BlY3QoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5sYWJlbH0gWyR7dGhpcy5fZ3VpZH1dYDtcbiAgfVxufVxuIl19

@@ -168,3 +168,2 @@ "use strict";

var end = b.finalize();
(0, _opcodes.debugSlice)(env, start, end);
return new _blocks.CompiledDynamicTemplate(start, end, {

@@ -316,2 +315,2 @@ meta: meta,

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjb21waWxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFFQSxBQUFPLEFBQTBCLEFBQXVCLEFBQUUsQUFBTSxBQUFtQixBQUFDOztBQUVwRixBQUFPLEFBQUUsQUFBRyxBQUFnQixBQUFNLEFBQXNCLEFBQUM7O0FBR3pELEFBQU8sQUFBRSxBQUFRLEFBQUUsQUFBVSxBQUFFLEFBQU0sQUFBVyxBQUFDOztBQUVqRCxBQUFPLEFBQUUsQUFBVyxBQUFFLEFBQVUsQUFBRSxBQUFnQixBQUFFLEFBQU0sQUFBVyxBQUFDOztBQVF0RSxBQUFPLEFBQUUsQUFBSSxBQUFFLEFBQU0sQUFBb0IsQUFBQzs7QUFFMUMsQUFBTyxBQUFnQixBQUFNLEFBQTRCLEFBQUMsQUFjMUQsQUFBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt1QkFBd0IsQUFBNEIsWUFBRSxBQUFnQixLQUMxRTtRQUFJLEFBQU8sVUFBRyxJQUFJLEFBQXNCLHVCQUFDLEFBQUcsQUFBQyxBQUFDLEFBRTlDLEFBQVU7ZUFBQyxBQUFPLFFBQUMsQUFBTyxBQUFDLEFBQUMsQUFFNUIsQUFBTTtXQUFDLEFBQU8sUUFBQyxBQUFPLEFBQUUsQUFBQyxBQUMzQixBQUFDLEFBUUQ7Ozt5Q0FHRTtvQ0FBbUIsQUFBZ0I7OEJBQWhCOzthQUFHLE1BQUgsQUFBRyxBQUFhLEFBQUcsQUFBQzs7O3FDQUV2QyxBQUFVLGlDQUFDLEFBQThCLFFBQ3ZDLEFBQUk7YUFBQyxBQUFLLFFBQUcsSUFBSSxBQUFjLGVBQUMsQUFBSSxLQUFDLEFBQUcsS0FBRSxBQUFNLEFBQUMsQUFBQyxBQUNwRCxBQUFDOzs7cUNBRUQsQUFBVSxpQ0FBQyxBQUE4QixRQUN2QyxBQUFJO2FBQUMsQUFBSyxRQUFHLElBQUksQUFBZ0IsaUJBQUMsQUFBSSxLQUFDLEFBQUcsS0FBRSxBQUFNLEFBQUMsQUFBQyxBQUN0RCxBQUFDOzs7cUNBRUQsQUFBTyw2QkFDTCxB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LEFBRXBCLEFBQU87Z0JBQUMsQUFBUSxTQUFDLEFBQUssQUFBQyxBQUFDLEFBRXhCLEFBQU87Z0JBQUMsQUFBVyxZQUFDLEFBQWMsZUFBQyxBQUFDLEFBQUMsSUFBRSxBQUFjLGVBQUMsQUFBQyxBQUFDLElBQUUsQUFBSSxBQUFDLEFBQUMsQUFDaEUsQUFBTztnQkFBQyxBQUFNLE9BQUMsQUFBTSxBQUFDLEFBQUMsQUFFdkIsQUFBTztnQkFBQyxBQUFHLEFBQUUsQUFBQyxBQUNkLEFBQU87Z0JBQUMsQUFBSSxLQUFDLEFBQVEsQUFBQyxBQUFDLEFBRXZCLEFBQU87Z0JBQUMsQUFBSyxNQUFDLEFBQUMsQUFBQyxBQUFDLEFBRWpCLEFBQU87Z0JBQUMsQUFBVSxXQUFDLEFBQU0sQUFBQyxBQUFDLEFBRTNCLEFBQU87Z0JBQUMsQUFBMkIsQUFBRSxBQUFDLEFBQ3RDLEFBQU87Z0JBQUMsQUFBZSxnQkFBQyxBQUFJLE1BQUUsQUFBTSxRQUFFLEFBQUksTUFBRSxBQUFLLE9BQUUsQUFBTyxBQUFDLEFBQUMsQUFFNUQsQUFBTztnQkFBQyxBQUFLLE1BQUMsQUFBTSxBQUFDLEFBQUMsQUFDdEIsQUFBTztnQkFBQyxBQUFJLEFBQUUsQUFBQyxBQUNmLEFBQU87Z0JBQUMsQUFBTSxBQUFFLEFBQUMsQUFFakIsQUFBTztnQkFBQyxBQUFLLE1BQUMsQUFBSyxBQUFDLEFBQUMsQUFDckIsQUFBTztnQkFBQyxBQUFRLEFBQUUsQUFBQyxBQUVuQixBQUFPO2dCQUFDLEFBQVUsQUFBRSxBQUFDLEFBQ3ZCLEFBQUMsQUFDRjs7OztBQUVELEFBQU07aUJBQWtCLEFBQWdCLEtBQUUsQUFBcUIsTUFDN0QsQUFBTTtXQUFDLEFBQUksQUFBZ0Isc0JBQUMsQUFBRyxLQUFFLEFBQUksQUFBQyxBQUFDLEFBQ3pDLEFBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcGFxdWUsIENvbXBpbGF0aW9uTWV0YSB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgQ29tcGlsZWREeW5hbWljUHJvZ3JhbSwgQ29tcGlsZWREeW5hbWljVGVtcGxhdGUgfSBmcm9tICcuL2NvbXBpbGVkL2Jsb2Nrcyc7XG5pbXBvcnQgeyBNYXliZSwgT3B0aW9uIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBPcHMsIFRlbXBsYXRlTWV0YSB9IGZyb20gJ0BnbGltbWVyL3dpcmUtZm9ybWF0JztcblxuaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tICcuL3RlbXBsYXRlJztcbmltcG9ydCB7IFJlZ2lzdGVyLCBkZWJ1Z1NsaWNlIH0gZnJvbSAnLi9vcGNvZGVzJztcblxuaW1wb3J0IHsgQVRUUlNfQkxPQ0ssIENsaWVudFNpZGUsIGNvbXBpbGVTdGF0ZW1lbnQgfSBmcm9tICcuL3NjYW5uZXInO1xuXG5pbXBvcnQge1xuICBDb21wb25lbnRBcmdzLFxuICBDb21wb25lbnRCdWlsZGVyIGFzIElDb21wb25lbnRCdWlsZGVyLFxuICBEeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvblxufSBmcm9tICcuL29wY29kZS1idWlsZGVyJztcblxuaW1wb3J0IHsgZXhwciB9IGZyb20gJy4vc3ludGF4L2Z1bmN0aW9ucyc7XG5cbmltcG9ydCBPcGNvZGVCdWlsZGVyRFNMIGZyb20gJy4vY29tcGlsZWQvb3Bjb2Rlcy9idWlsZGVyJztcblxuaW1wb3J0ICogYXMgQ29tcG9uZW50IGZyb20gJy4vY29tcG9uZW50L2ludGVyZmFjZXMnO1xuXG5pbXBvcnQgKiBhcyBXaXJlRm9ybWF0IGZyb20gJ0BnbGltbWVyL3dpcmUtZm9ybWF0JztcblxuaW1wb3J0IHsgUHVibGljVk0gfSBmcm9tICcuL3ZtL2FwcGVuZCc7XG5pbXBvcnQgeyBJQXJndW1lbnRzIH0gZnJvbSAnLi92bS9hcmd1bWVudHMnO1xuaW1wb3J0IHsgRnVuY3Rpb25FeHByZXNzaW9uIH0gZnJvbSBcIi4vY29tcGlsZWQvb3Bjb2Rlcy9leHByZXNzaW9uc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBpbGFibGVMYXlvdXQge1xuICBjb21waWxlKGJ1aWxkZXI6IENvbXBvbmVudC5Db21wb25lbnRMYXlvdXRCdWlsZGVyKTogdm9pZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBpbGVMYXlvdXQoY29tcGlsYWJsZTogQ29tcGlsYWJsZUxheW91dCwgZW52OiBFbnZpcm9ubWVudCk6IENvbXBpbGVkRHluYW1pY1Byb2dyYW0ge1xuICBsZXQgYnVpbGRlciA9IG5ldyBDb21wb25lbnRMYXlvdXRCdWlsZGVyKGVudik7XG5cbiAgY29tcGlsYWJsZS5jb21waWxlKGJ1aWxkZXIpO1xuXG4gIHJldHVybiBidWlsZGVyLmNvbXBpbGUoKTtcbn1cblxuaW50ZXJmYWNlIElubmVyTGF5b3V0QnVpbGRlciB7XG4gIHRhZzogQ29tcG9uZW50LkNvbXBvbmVudFRhZ0J1aWxkZXI7XG4gIGF0dHJzOiBDb21wb25lbnQuQ29tcG9uZW50QXR0cnNCdWlsZGVyO1xuICBjb21waWxlKCk6IENvbXBpbGVkRHluYW1pY1Byb2dyYW07XG59XG5cbmNsYXNzIENvbXBvbmVudExheW91dEJ1aWxkZXIgaW1wbGVtZW50cyBDb21wb25lbnQuQ29tcG9uZW50TGF5b3V0QnVpbGRlciB7XG4gIHByaXZhdGUgaW5uZXI6IElubmVyTGF5b3V0QnVpbGRlcjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZW52OiBFbnZpcm9ubWVudCkge31cblxuICB3cmFwTGF5b3V0KGxheW91dDogVGVtcGxhdGU8VGVtcGxhdGVNZXRhPikge1xuICAgIHRoaXMuaW5uZXIgPSBuZXcgV3JhcHBlZEJ1aWxkZXIodGhpcy5lbnYsIGxheW91dCk7XG4gIH1cblxuICBmcm9tTGF5b3V0KGxheW91dDogVGVtcGxhdGU8VGVtcGxhdGVNZXRhPikge1xuICAgIHRoaXMuaW5uZXIgPSBuZXcgVW53cmFwcGVkQnVpbGRlcih0aGlzLmVudiwgbGF5b3V0KTtcbiAgfVxuXG4gIGNvbXBpbGUoKTogQ29tcGlsZWREeW5hbWljUHJvZ3JhbSB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXIuY29tcGlsZSgpO1xuICB9XG5cbiAgZ2V0IHRhZygpOiBDb21wb25lbnQuQ29tcG9uZW50VGFnQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXIudGFnO1xuICB9XG5cbiAgZ2V0IGF0dHJzKCk6IENvbXBvbmVudC5Db21wb25lbnRBdHRyc0J1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmlubmVyLmF0dHJzO1xuICB9XG59XG5cbmNsYXNzIFdyYXBwZWRCdWlsZGVyIGltcGxlbWVudHMgSW5uZXJMYXlvdXRCdWlsZGVyIHtcbiAgcHVibGljIHRhZyA9IG5ldyBDb21wb25lbnRUYWdCdWlsZGVyKCk7XG4gIHB1YmxpYyBhdHRycyA9IG5ldyBDb21wb25lbnRBdHRyc0J1aWxkZXIoKTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZW52OiBFbnZpcm9ubWVudCwgcHJpdmF0ZSBsYXlvdXQ6IFRlbXBsYXRlPFRlbXBsYXRlTWV0YT4pIHt9XG5cbiAgY29tcGlsZSgpOiBDb21waWxlZER5bmFtaWNQcm9ncmFtIHtcbiAgICAvLz09PT09PT09RFlOQU1JQ1xuICAgIC8vICAgICAgICBQdXRWYWx1ZShUYWdFeHByKVxuICAgIC8vICAgICAgICBUZXN0XG4gICAgLy8gICAgICAgIEp1bXBVbmxlc3MoQk9EWSlcbiAgICAvLyAgICAgICAgT3BlbkR5bmFtaWNQcmltaXRpdmVFbGVtZW50XG4gICAgLy8gICAgICAgIERpZENyZWF0ZUVsZW1lbnRcbiAgICAvLyAgICAgICAgLi4uYXR0ciBzdGF0ZW1lbnRzLi4uXG4gICAgLy8gICAgICAgIEZsdXNoRWxlbWVudFxuICAgIC8vIEJPRFk6ICBOb29wXG4gICAgLy8gICAgICAgIC4uLmJvZHkgc3RhdGVtZW50cy4uLlxuICAgIC8vICAgICAgICBQdXRWYWx1ZShUYWdFeHByKVxuICAgIC8vICAgICAgICBUZXN0XG4gICAgLy8gICAgICAgIEp1bXBVbmxlc3MoRU5EKVxuICAgIC8vICAgICAgICBDbG9zZUVsZW1lbnRcbiAgICAvLyBFTkQ6ICAgTm9vcFxuICAgIC8vICAgICAgICBEaWRSZW5kZXJMYXlvdXRcbiAgICAvLyAgICAgICAgRXhpdFxuICAgIC8vXG4gICAgLy89PT09PT09PVNUQVRJQ1xuICAgIC8vICAgICAgICBPcGVuUHJpbWl0aXZlRWxlbWVudE9wY29kZVxuICAgIC8vICAgICAgICBEaWRDcmVhdGVFbGVtZW50XG4gICAgLy8gICAgICAgIC4uLmF0dHIgc3RhdGVtZW50cy4uLlxuICAgIC8vICAgICAgICBGbHVzaEVsZW1lbnRcbiAgICAvLyAgICAgICAgLi4uYm9keSBzdGF0ZW1lbnRzLi4uXG4gICAgLy8gICAgICAgIENsb3NlRWxlbWVudFxuICAgIC8vICAgICAgICBEaWRSZW5kZXJMYXlvdXRcbiAgICAvLyAgICAgICAgRXhpdFxuXG4gICAgbGV0IHsgZW52LCBsYXlvdXQgfSA9IHRoaXM7XG4gICAgbGV0IG1ldGEgPSB7IHRlbXBsYXRlTWV0YTogbGF5b3V0Lm1ldGEsIHN5bWJvbHM6IGxheW91dC5zeW1ib2xzLCBhc1BhcnRpYWw6IGZhbHNlIH07XG5cbiAgICBsZXQgZHluYW1pY1RhZyA9IHRoaXMudGFnLmdldER5bmFtaWMoKTtcbiAgICBsZXQgc3RhdGljVGFnID0gdGhpcy50YWcuZ2V0U3RhdGljKCk7XG5cbiAgICBsZXQgYiA9IGJ1aWxkZXIoZW52LCBtZXRhKTtcblxuICAgIGIuc3RhcnRMYWJlbHMoKTtcblxuICAgIGlmIChkeW5hbWljVGFnKSB7XG4gICAgICBiLmZldGNoKFJlZ2lzdGVyLnMxKTtcblxuICAgICAgZXhwcihkeW5hbWljVGFnLCBiKTtcblxuICAgICAgYi5kdXAoKTtcbiAgICAgIGIubG9hZChSZWdpc3Rlci5zMSk7XG5cbiAgICAgIGIudGVzdCgnc2ltcGxlJyk7XG5cbiAgICAgIGIuanVtcFVubGVzcygnQk9EWScpO1xuXG4gICAgICBiLmZldGNoKFJlZ2lzdGVyLnMxKTtcbiAgICAgIGIucHVzaENvbXBvbmVudE9wZXJhdGlvbnMoKTtcbiAgICAgIGIub3BlbkR5bmFtaWNFbGVtZW50KCk7XG4gICAgfSBlbHNlIGlmIChzdGF0aWNUYWcpIHtcbiAgICAgIGIucHVzaENvbXBvbmVudE9wZXJhdGlvbnMoKTtcbiAgICAgIGIub3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucyhzdGF0aWNUYWcpO1xuICAgIH1cblxuICAgIGlmIChkeW5hbWljVGFnIHx8IHN0YXRpY1RhZykge1xuICAgICAgYi5kaWRDcmVhdGVFbGVtZW50KFJlZ2lzdGVyLnMwKTtcblxuICAgICAgbGV0IGF0dHJzID0gdGhpcy5hdHRyc1snYnVmZmVyJ107XG5cbiAgICAgIGZvciAobGV0IGk9MDsgaTxhdHRycy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb21waWxlU3RhdGVtZW50KGF0dHJzW2ldLCBiKTtcbiAgICAgIH1cblxuICAgICAgYi5mbHVzaEVsZW1lbnQoKTtcbiAgICB9XG5cbiAgICBiLmxhYmVsKCdCT0RZJyk7XG4gICAgYi5pbnZva2VTdGF0aWMobGF5b3V0LmFzQmxvY2soKSk7XG5cbiAgICBpZiAoZHluYW1pY1RhZykge1xuICAgICAgYi5mZXRjaChSZWdpc3Rlci5zMSk7XG4gICAgICBiLnRlc3QoJ3NpbXBsZScpO1xuICAgICAgYi5qdW1wVW5sZXNzKCdFTkQnKTtcbiAgICAgIGIuY2xvc2VFbGVtZW50KCk7XG4gICAgfSBlbHNlIGlmIChzdGF0aWNUYWcpIHtcbiAgICAgIGIuY2xvc2VFbGVtZW50KCk7XG4gICAgfVxuXG4gICAgYi5sYWJlbCgnRU5EJyk7XG5cbiAgICBiLmRpZFJlbmRlckxheW91dChSZWdpc3Rlci5zMCk7XG5cbiAgICBpZiAoZHluYW1pY1RhZykge1xuICAgICAgYi5sb2FkKFJlZ2lzdGVyLnMxKTtcbiAgICB9XG5cbiAgICBiLnN0b3BMYWJlbHMoKTtcblxuICAgIGxldCBzdGFydCA9IGIuc3RhcnQ7XG4gICAgbGV0IGVuZCA9IGIuZmluYWxpemUoKTtcblxuICAgIGRlYnVnU2xpY2UoZW52LCBzdGFydCwgZW5kKTtcblxuICAgIHJldHVybiBuZXcgQ29tcGlsZWREeW5hbWljVGVtcGxhdGUoc3RhcnQsIGVuZCwge1xuICAgICAgbWV0YSxcbiAgICAgIGhhc0V2YWw6IGxheW91dC5oYXNFdmFsLFxuICAgICAgc3ltYm9sczogbGF5b3V0LnN5bWJvbHMuY29uY2F0KFtBVFRSU19CTE9DS10pXG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgVW53cmFwcGVkQnVpbGRlciBpbXBsZW1lbnRzIElubmVyTGF5b3V0QnVpbGRlciB7XG4gIHB1YmxpYyBhdHRycyA9IG5ldyBDb21wb25lbnRBdHRyc0J1aWxkZXIoKTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZW52OiBFbnZpcm9ubWVudCwgcHJpdmF0ZSBsYXlvdXQ6IFRlbXBsYXRlPFRlbXBsYXRlTWV0YT4pIHt9XG5cbiAgZ2V0IHRhZygpOiBDb21wb25lbnQuQ29tcG9uZW50VGFnQnVpbGRlciB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdCVUc6IENhbm5vdCBjYWxsIGB0YWdgIG9uIGFuIFVud3JhcHBlZEJ1aWxkZXInKTtcbiAgfVxuXG4gIGNvbXBpbGUoKTogQ29tcGlsZWREeW5hbWljUHJvZ3JhbSB7XG4gICAgbGV0IHsgZW52LCBsYXlvdXQgfSA9IHRoaXM7XG4gICAgcmV0dXJuIGxheW91dC5hc0xheW91dCh0aGlzLmF0dHJzWydidWZmZXInXSkuY29tcGlsZUR5bmFtaWMoZW52KTtcbiAgfVxufVxuXG5jbGFzcyBDb21wb25lbnRUYWdCdWlsZGVyIGltcGxlbWVudHMgQ29tcG9uZW50LkNvbXBvbmVudFRhZ0J1aWxkZXIge1xuICBwdWJsaWMgaXNEeW5hbWljOiBPcHRpb248Ym9vbGVhbj4gPSBudWxsO1xuICBwdWJsaWMgaXNTdGF0aWM6IE9wdGlvbjxib29sZWFuPiA9IG51bGw7XG4gIHB1YmxpYyBzdGF0aWNUYWdOYW1lOiBPcHRpb248c3RyaW5nPiA9IG51bGw7XG4gIHB1YmxpYyBkeW5hbWljVGFnTmFtZTogT3B0aW9uPFdpcmVGb3JtYXQuRXhwcmVzc2lvbj4gPSBudWxsO1xuXG4gIGdldER5bmFtaWMoKTogTWF5YmU8V2lyZUZvcm1hdC5FeHByZXNzaW9uPiB7XG4gICAgaWYgKHRoaXMuaXNEeW5hbWljKSB7XG4gICAgICByZXR1cm4gdGhpcy5keW5hbWljVGFnTmFtZTtcbiAgICB9XG4gIH1cblxuICBnZXRTdGF0aWMoKTogTWF5YmU8c3RyaW5nPiB7XG4gICAgaWYgKHRoaXMuaXNTdGF0aWMpIHtcbiAgICAgIHJldHVybiB0aGlzLnN0YXRpY1RhZ05hbWU7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljKHRhZ05hbWU6IHN0cmluZykge1xuICAgIHRoaXMuaXNTdGF0aWMgPSB0cnVlO1xuICAgIHRoaXMuc3RhdGljVGFnTmFtZSA9IHRhZ05hbWU7XG4gIH1cblxuICBkeW5hbWljKHRhZ05hbWU6IEZ1bmN0aW9uRXhwcmVzc2lvbjxzdHJpbmc+KSB7XG4gICAgdGhpcy5pc0R5bmFtaWMgPSB0cnVlO1xuICAgIHRoaXMuZHluYW1pY1RhZ05hbWUgPSBbT3BzLkNsaWVudFNpZGVFeHByZXNzaW9uLCBDbGllbnRTaWRlLk9wcy5GdW5jdGlvbkV4cHJlc3Npb24sIHRhZ05hbWVdO1xuICB9XG59XG5cbmNsYXNzIENvbXBvbmVudEF0dHJzQnVpbGRlciBpbXBsZW1lbnRzIENvbXBvbmVudC5Db21wb25lbnRBdHRyc0J1aWxkZXIge1xuICBwcml2YXRlIGJ1ZmZlcjogV2lyZUZvcm1hdC5TdGF0ZW1lbnRzLkF0dHJpYnV0ZVtdID0gW107XG5cbiAgc3RhdGljKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuYnVmZmVyLnB1c2goW09wcy5TdGF0aWNBdHRyLCBuYW1lLCB2YWx1ZSwgbnVsbF0pO1xuICB9XG5cbiAgZHluYW1pYyhuYW1lOiBzdHJpbmcsIHZhbHVlOiBGdW5jdGlvbkV4cHJlc3Npb248c3RyaW5nPikge1xuICAgIHRoaXMuYnVmZmVyLnB1c2goW09wcy5EeW5hbWljQXR0ciwgbmFtZSwgW09wcy5DbGllbnRTaWRlRXhwcmVzc2lvbiwgQ2xpZW50U2lkZS5PcHMuRnVuY3Rpb25FeHByZXNzaW9uLCB2YWx1ZV0sIG51bGxdKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50QnVpbGRlciBpbXBsZW1lbnRzIElDb21wb25lbnRCdWlsZGVyIHtcbiAgcHJpdmF0ZSBlbnY6IEVudmlyb25tZW50O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYnVpbGRlcjogT3Bjb2RlQnVpbGRlckRTTCkge1xuICAgIHRoaXMuZW52ID0gYnVpbGRlci5lbnY7XG4gIH1cblxuICBzdGF0aWMoZGVmaW5pdGlvbjogQ29tcG9uZW50LkNvbXBvbmVudERlZmluaXRpb248T3BhcXVlPiwgYXJnczogQ29tcG9uZW50QXJncykge1xuICAgIGxldCBbcGFyYW1zLCBoYXNoLCBfZGVmYXVsdCwgaW52ZXJzZV0gPSBhcmdzO1xuICAgIGxldCB7IGJ1aWxkZXIgfSA9IHRoaXM7XG5cbiAgICBidWlsZGVyLnB1c2hDb21wb25lbnRNYW5hZ2VyKGRlZmluaXRpb24pO1xuICAgIGJ1aWxkZXIuaW52b2tlQ29tcG9uZW50KG51bGwsIHBhcmFtcywgaGFzaCwgX2RlZmF1bHQsIGludmVyc2UpO1xuICB9XG5cbiAgZHluYW1pYyhkZWZpbml0aW9uQXJnczogQ29tcG9uZW50QXJncywgZ2V0RGVmaW5pdGlvbjogRHluYW1pY0NvbXBvbmVudERlZmluaXRpb24sIGFyZ3M6IENvbXBvbmVudEFyZ3MpIHtcbiAgICBsZXQgW3BhcmFtcywgaGFzaCwgYmxvY2ssIGludmVyc2VdID0gYXJncztcbiAgICBsZXQgeyBidWlsZGVyIH0gPSB0aGlzO1xuXG4gICAgaWYgKCFkZWZpbml0aW9uQXJncyB8fCBkZWZpbml0aW9uQXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkR5bmFtaWMgc3ludGF4IHdpdGhvdXQgYW4gYXJndW1lbnRcIik7XG4gICAgfVxuXG4gICAgbGV0IG1ldGEgPSB0aGlzLmJ1aWxkZXIubWV0YS50ZW1wbGF0ZU1ldGE7XG5cbiAgICBmdW5jdGlvbiBoZWxwZXIodm06IFB1YmxpY1ZNLCBhcmdzOiBJQXJndW1lbnRzKSB7XG4gICAgICByZXR1cm4gZ2V0RGVmaW5pdGlvbih2bSwgYXJncywgbWV0YSk7XG4gICAgfVxuXG4gICAgYnVpbGRlci5zdGFydExhYmVscygpO1xuXG4gICAgYnVpbGRlci5wdXNoRnJhbWUoKTtcblxuICAgIGJ1aWxkZXIucmV0dXJuVG8oJ0VORCcpO1xuXG4gICAgYnVpbGRlci5jb21waWxlQXJncyhkZWZpbml0aW9uQXJnc1swXSwgZGVmaW5pdGlvbkFyZ3NbMV0sIHRydWUpO1xuICAgIGJ1aWxkZXIuaGVscGVyKGhlbHBlcik7XG5cbiAgICBidWlsZGVyLmR1cCgpO1xuICAgIGJ1aWxkZXIudGVzdCgnc2ltcGxlJyk7XG5cbiAgICBidWlsZGVyLmVudGVyKDIpO1xuXG4gICAgYnVpbGRlci5qdW1wVW5sZXNzKCdFTFNFJyk7XG5cbiAgICBidWlsZGVyLnB1c2hEeW5hbWljQ29tcG9uZW50TWFuYWdlcigpO1xuICAgIGJ1aWxkZXIuaW52b2tlQ29tcG9uZW50KG51bGwsIHBhcmFtcywgaGFzaCwgYmxvY2ssIGludmVyc2UpO1xuXG4gICAgYnVpbGRlci5sYWJlbCgnRUxTRScpO1xuICAgIGJ1aWxkZXIuZXhpdCgpO1xuICAgIGJ1aWxkZXIucmV0dXJuKCk7XG5cbiAgICBidWlsZGVyLmxhYmVsKCdFTkQnKTtcbiAgICBidWlsZGVyLnBvcEZyYW1lKCk7XG5cbiAgICBidWlsZGVyLnN0b3BMYWJlbHMoKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRlcihlbnY6IEVudmlyb25tZW50LCBtZXRhOiBDb21waWxhdGlvbk1ldGEpIHtcbiAgcmV0dXJuIG5ldyBPcGNvZGVCdWlsZGVyRFNMKGVudiwgbWV0YSk7XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjb21waWxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFFQSxBQUFPLEFBQTBCLEFBQXVCLEFBQUUsQUFBTSxBQUFtQixBQUFDOztBQUVwRixBQUFPLEFBQUUsQUFBRyxBQUFnQixBQUFNLEFBQXNCLEFBQUM7O0FBR3pELEFBQU8sQUFBRSxBQUFRLEFBQUUsQUFBTSxBQUFXLEFBQUM7O0FBRXJDLEFBQU8sQUFBRSxBQUFXLEFBQUUsQUFBVSxBQUFFLEFBQWdCLEFBQUUsQUFBTSxBQUFXLEFBQUM7O0FBUXRFLEFBQU8sQUFBRSxBQUFJLEFBQUUsQUFBTSxBQUFvQixBQUFDOztBQUUxQyxBQUFPLEFBQWdCLEFBQU0sQUFBNEIsQUFBQyxBQWMxRCxBQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3VCQUF3QixBQUE0QixZQUFFLEFBQWdCLEtBQzFFO1FBQUksQUFBTyxVQUFHLElBQUksQUFBc0IsdUJBQUMsQUFBRyxBQUFDLEFBQUMsQUFFOUMsQUFBVTtlQUFDLEFBQU8sUUFBQyxBQUFPLEFBQUMsQUFBQyxBQUU1QixBQUFNO1dBQUMsQUFBTyxRQUFDLEFBQU8sQUFBRSxBQUFDLEFBQzNCLEFBQUMsQUFRRDs7O3lDQUdFO29DQUFtQixBQUFnQjs4QkFBaEI7O2FBQUcsTUFBSCxBQUFHLEFBQWEsQUFBRyxBQUFDOzs7cUNBRXZDLEFBQVUsaUNBQUMsQUFBOEIsUUFDdkMsQUFBSTthQUFDLEFBQUssUUFBRyxJQUFJLEFBQWMsZUFBQyxBQUFJLEtBQUMsQUFBRyxLQUFFLEFBQU0sQUFBQyxBQUFDLEFBQ3BELEFBQUM7OztxQ0FFRCxBQUFVLGlDQUFDLEFBQThCLFFBQ3ZDLEFBQUk7YUFBQyxBQUFLLFFBQUcsSUFBSSxBQUFnQixpQkFBQyxBQUFJLEtBQUMsQUFBRyxLQUFFLEFBQU0sQUFBQyxBQUFDLEFBQ3RELEFBQUM7OztxQ0FFRCxBQUFPLDZCQUNMLEFBQU07ZUFBQyxB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QVcsWUFBQyxBQUFjLGVBQUMsQUFBQyxBQUFDLElBQUUsQUFBYyxlQUFDLEFBQUMsQUFBQyxJQUFFLEFBQUksQUFBQyxBQUFDLEFBQ2hFLEFBQU87Z0JBQUMsQUFBTSxPQUFDLEFBQU0sQUFBQyxBQUFDLEFBRXZCLEFBQU87Z0JBQUMsQUFBRyxBQUFFLEFBQUMsQUFDZCxBQUFPO2dCQUFDLEFBQUksS0FBQyxBQUFRLEFBQUMsQUFBQyxBQUV2QixBQUFPO2dCQUFDLEFBQUssTUFBQyxBQUFDLEFBQUMsQUFBQyxBQUVqQixBQUFPO2dCQUFDLEFBQVUsV0FBQyxBQUFNLEFBQUMsQUFBQyxBQUUzQixBQUFPO2dCQUFDLEFBQTJCLEFBQUUsQUFBQyxBQUN0QyxBQUFPO2dCQUFDLEFBQWUsZ0JBQUMsQUFBSSxNQUFFLEFBQU0sUUFBRSxBQUFJLE1BQUUsQUFBSyxPQUFFLEFBQU8sQUFBQyxBQUFDLEFBRTVELEFBQU87Z0JBQUMsQUFBSyxNQUFDLEFBQU0sQUFBQyxBQUFDLEFBQ3RCLEFBQU87Z0JBQUMsQUFBSSxBQUFFLEFBQUMsQUFDZixBQUFPO2dCQUFDLEFBQU0sQUFBRSxBQUFDLEFBRWpCLEFBQU87Z0JBQUMsQUFBSyxNQUFDLEFBQUssQUFBQyxBQUFDLEFBQ3JCLEFBQU87Z0JBQUMsQUFBUSxBQUFFLEFBQUMsQUFFbkIsQUFBTztnQkFBQyxBQUFVLEFBQUUsQUFBQyxBQUN2QixBQUFDLEFBQ0Y7Ozs7QUFFRCxBQUFNO2lCQUFrQixBQUFnQixLQUFFLEFBQXFCLE1BQzdELEFBQU07V0FBQyxBQUFJLEFBQWdCLHNCQUFDLEFBQUcsS0FBRSxBQUFJLEFBQUMsQUFBQyxBQUN6QyxBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3BhcXVlLCBDb21waWxhdGlvbk1ldGEgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCBFbnZpcm9ubWVudCBmcm9tICcuL2Vudmlyb25tZW50JztcbmltcG9ydCB7IENvbXBpbGVkRHluYW1pY1Byb2dyYW0sIENvbXBpbGVkRHluYW1pY1RlbXBsYXRlIH0gZnJvbSAnLi9jb21waWxlZC9ibG9ja3MnO1xuaW1wb3J0IHsgTWF5YmUsIE9wdGlvbiB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgT3BzLCBUZW1wbGF0ZU1ldGEgfSBmcm9tICdAZ2xpbW1lci93aXJlLWZvcm1hdCc7XG5cbmltcG9ydCB7IFRlbXBsYXRlIH0gZnJvbSAnLi90ZW1wbGF0ZSc7XG5pbXBvcnQgeyBSZWdpc3RlciB9IGZyb20gJy4vb3Bjb2Rlcyc7XG5cbmltcG9ydCB7IEFUVFJTX0JMT0NLLCBDbGllbnRTaWRlLCBjb21waWxlU3RhdGVtZW50IH0gZnJvbSAnLi9zY2FubmVyJztcblxuaW1wb3J0IHtcbiAgQ29tcG9uZW50QXJncyxcbiAgQ29tcG9uZW50QnVpbGRlciBhcyBJQ29tcG9uZW50QnVpbGRlcixcbiAgRHluYW1pY0NvbXBvbmVudERlZmluaXRpb25cbn0gZnJvbSAnLi9vcGNvZGUtYnVpbGRlcic7XG5cbmltcG9ydCB7IGV4cHIgfSBmcm9tICcuL3N5bnRheC9mdW5jdGlvbnMnO1xuXG5pbXBvcnQgT3Bjb2RlQnVpbGRlckRTTCBmcm9tICcuL2NvbXBpbGVkL29wY29kZXMvYnVpbGRlcic7XG5cbmltcG9ydCAqIGFzIENvbXBvbmVudCBmcm9tICcuL2NvbXBvbmVudC9pbnRlcmZhY2VzJztcblxuaW1wb3J0ICogYXMgV2lyZUZvcm1hdCBmcm9tICdAZ2xpbW1lci93aXJlLWZvcm1hdCc7XG5cbmltcG9ydCB7IFB1YmxpY1ZNIH0gZnJvbSAnLi92bS9hcHBlbmQnO1xuaW1wb3J0IHsgSUFyZ3VtZW50cyB9IGZyb20gJy4vdm0vYXJndW1lbnRzJztcbmltcG9ydCB7IEZ1bmN0aW9uRXhwcmVzc2lvbiB9IGZyb20gXCIuL2NvbXBpbGVkL29wY29kZXMvZXhwcmVzc2lvbnNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDb21waWxhYmxlTGF5b3V0IHtcbiAgY29tcGlsZShidWlsZGVyOiBDb21wb25lbnQuQ29tcG9uZW50TGF5b3V0QnVpbGRlcik6IHZvaWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21waWxlTGF5b3V0KGNvbXBpbGFibGU6IENvbXBpbGFibGVMYXlvdXQsIGVudjogRW52aXJvbm1lbnQpOiBDb21waWxlZER5bmFtaWNQcm9ncmFtIHtcbiAgbGV0IGJ1aWxkZXIgPSBuZXcgQ29tcG9uZW50TGF5b3V0QnVpbGRlcihlbnYpO1xuXG4gIGNvbXBpbGFibGUuY29tcGlsZShidWlsZGVyKTtcblxuICByZXR1cm4gYnVpbGRlci5jb21waWxlKCk7XG59XG5cbmludGVyZmFjZSBJbm5lckxheW91dEJ1aWxkZXIge1xuICB0YWc6IENvbXBvbmVudC5Db21wb25lbnRUYWdCdWlsZGVyO1xuICBhdHRyczogQ29tcG9uZW50LkNvbXBvbmVudEF0dHJzQnVpbGRlcjtcbiAgY29tcGlsZSgpOiBDb21waWxlZER5bmFtaWNQcm9ncmFtO1xufVxuXG5jbGFzcyBDb21wb25lbnRMYXlvdXRCdWlsZGVyIGltcGxlbWVudHMgQ29tcG9uZW50LkNvbXBvbmVudExheW91dEJ1aWxkZXIge1xuICBwcml2YXRlIGlubmVyOiBJbm5lckxheW91dEJ1aWxkZXI7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGVudjogRW52aXJvbm1lbnQpIHt9XG5cbiAgd3JhcExheW91dChsYXlvdXQ6IFRlbXBsYXRlPFRlbXBsYXRlTWV0YT4pIHtcbiAgICB0aGlzLmlubmVyID0gbmV3IFdyYXBwZWRCdWlsZGVyKHRoaXMuZW52LCBsYXlvdXQpO1xuICB9XG5cbiAgZnJvbUxheW91dChsYXlvdXQ6IFRlbXBsYXRlPFRlbXBsYXRlTWV0YT4pIHtcbiAgICB0aGlzLmlubmVyID0gbmV3IFVud3JhcHBlZEJ1aWxkZXIodGhpcy5lbnYsIGxheW91dCk7XG4gIH1cblxuICBjb21waWxlKCk6IENvbXBpbGVkRHluYW1pY1Byb2dyYW0ge1xuICAgIHJldHVybiB0aGlzLmlubmVyLmNvbXBpbGUoKTtcbiAgfVxuXG4gIGdldCB0YWcoKTogQ29tcG9uZW50LkNvbXBvbmVudFRhZ0J1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmlubmVyLnRhZztcbiAgfVxuXG4gIGdldCBhdHRycygpOiBDb21wb25lbnQuQ29tcG9uZW50QXR0cnNCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbm5lci5hdHRycztcbiAgfVxufVxuXG5jbGFzcyBXcmFwcGVkQnVpbGRlciBpbXBsZW1lbnRzIElubmVyTGF5b3V0QnVpbGRlciB7XG4gIHB1YmxpYyB0YWcgPSBuZXcgQ29tcG9uZW50VGFnQnVpbGRlcigpO1xuICBwdWJsaWMgYXR0cnMgPSBuZXcgQ29tcG9uZW50QXR0cnNCdWlsZGVyKCk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGVudjogRW52aXJvbm1lbnQsIHByaXZhdGUgbGF5b3V0OiBUZW1wbGF0ZTxUZW1wbGF0ZU1ldGE+KSB7fVxuXG4gIGNvbXBpbGUoKTogQ29tcGlsZWREeW5hbWljUHJvZ3JhbSB7XG4gICAgLy89PT09PT09PURZTkFNSUNcbiAgICAvLyAgICAgICAgUHV0VmFsdWUoVGFnRXhwcilcbiAgICAvLyAgICAgICAgVGVzdFxuICAgIC8vICAgICAgICBKdW1wVW5sZXNzKEJPRFkpXG4gICAgLy8gICAgICAgIE9wZW5EeW5hbWljUHJpbWl0aXZlRWxlbWVudFxuICAgIC8vICAgICAgICBEaWRDcmVhdGVFbGVtZW50XG4gICAgLy8gICAgICAgIC4uLmF0dHIgc3RhdGVtZW50cy4uLlxuICAgIC8vICAgICAgICBGbHVzaEVsZW1lbnRcbiAgICAvLyBCT0RZOiAgTm9vcFxuICAgIC8vICAgICAgICAuLi5ib2R5IHN0YXRlbWVudHMuLi5cbiAgICAvLyAgICAgICAgUHV0VmFsdWUoVGFnRXhwcilcbiAgICAvLyAgICAgICAgVGVzdFxuICAgIC8vICAgICAgICBKdW1wVW5sZXNzKEVORClcbiAgICAvLyAgICAgICAgQ2xvc2VFbGVtZW50XG4gICAgLy8gRU5EOiAgIE5vb3BcbiAgICAvLyAgICAgICAgRGlkUmVuZGVyTGF5b3V0XG4gICAgLy8gICAgICAgIEV4aXRcbiAgICAvL1xuICAgIC8vPT09PT09PT1TVEFUSUNcbiAgICAvLyAgICAgICAgT3BlblByaW1pdGl2ZUVsZW1lbnRPcGNvZGVcbiAgICAvLyAgICAgICAgRGlkQ3JlYXRlRWxlbWVudFxuICAgIC8vICAgICAgICAuLi5hdHRyIHN0YXRlbWVudHMuLi5cbiAgICAvLyAgICAgICAgRmx1c2hFbGVtZW50XG4gICAgLy8gICAgICAgIC4uLmJvZHkgc3RhdGVtZW50cy4uLlxuICAgIC8vICAgICAgICBDbG9zZUVsZW1lbnRcbiAgICAvLyAgICAgICAgRGlkUmVuZGVyTGF5b3V0XG4gICAgLy8gICAgICAgIEV4aXRcblxuICAgIGxldCB7IGVudiwgbGF5b3V0IH0gPSB0aGlzO1xuICAgIGxldCBtZXRhID0geyB0ZW1wbGF0ZU1ldGE6IGxheW91dC5tZXRhLCBzeW1ib2xzOiBsYXlvdXQuc3ltYm9scywgYXNQYXJ0aWFsOiBmYWxzZSB9O1xuXG4gICAgbGV0IGR5bmFtaWNUYWcgPSB0aGlzLnRhZy5nZXREeW5hbWljKCk7XG4gICAgbGV0IHN0YXRpY1RhZyA9IHRoaXMudGFnLmdldFN0YXRpYygpO1xuXG4gICAgbGV0IGIgPSBidWlsZGVyKGVudiwgbWV0YSk7XG5cbiAgICBiLnN0YXJ0TGFiZWxzKCk7XG5cbiAgICBpZiAoZHluYW1pY1RhZykge1xuICAgICAgYi5mZXRjaChSZWdpc3Rlci5zMSk7XG5cbiAgICAgIGV4cHIoZHluYW1pY1RhZywgYik7XG5cbiAgICAgIGIuZHVwKCk7XG4gICAgICBiLmxvYWQoUmVnaXN0ZXIuczEpO1xuXG4gICAgICBiLnRlc3QoJ3NpbXBsZScpO1xuXG4gICAgICBiLmp1bXBVbmxlc3MoJ0JPRFknKTtcblxuICAgICAgYi5mZXRjaChSZWdpc3Rlci5zMSk7XG4gICAgICBiLnB1c2hDb21wb25lbnRPcGVyYXRpb25zKCk7XG4gICAgICBiLm9wZW5EeW5hbWljRWxlbWVudCgpO1xuICAgIH0gZWxzZSBpZiAoc3RhdGljVGFnKSB7XG4gICAgICBiLnB1c2hDb21wb25lbnRPcGVyYXRpb25zKCk7XG4gICAgICBiLm9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMoc3RhdGljVGFnKTtcbiAgICB9XG5cbiAgICBpZiAoZHluYW1pY1RhZyB8fCBzdGF0aWNUYWcpIHtcbiAgICAgIGIuZGlkQ3JlYXRlRWxlbWVudChSZWdpc3Rlci5zMCk7XG5cbiAgICAgIGxldCBhdHRycyA9IHRoaXMuYXR0cnNbJ2J1ZmZlciddO1xuXG4gICAgICBmb3IgKGxldCBpPTA7IGk8YXR0cnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29tcGlsZVN0YXRlbWVudChhdHRyc1tpXSwgYik7XG4gICAgICB9XG5cbiAgICAgIGIuZmx1c2hFbGVtZW50KCk7XG4gICAgfVxuXG4gICAgYi5sYWJlbCgnQk9EWScpO1xuICAgIGIuaW52b2tlU3RhdGljKGxheW91dC5hc0Jsb2NrKCkpO1xuXG4gICAgaWYgKGR5bmFtaWNUYWcpIHtcbiAgICAgIGIuZmV0Y2goUmVnaXN0ZXIuczEpO1xuICAgICAgYi50ZXN0KCdzaW1wbGUnKTtcbiAgICAgIGIuanVtcFVubGVzcygnRU5EJyk7XG4gICAgICBiLmNsb3NlRWxlbWVudCgpO1xuICAgIH0gZWxzZSBpZiAoc3RhdGljVGFnKSB7XG4gICAgICBiLmNsb3NlRWxlbWVudCgpO1xuICAgIH1cblxuICAgIGIubGFiZWwoJ0VORCcpO1xuXG4gICAgYi5kaWRSZW5kZXJMYXlvdXQoUmVnaXN0ZXIuczApO1xuXG4gICAgaWYgKGR5bmFtaWNUYWcpIHtcbiAgICAgIGIubG9hZChSZWdpc3Rlci5zMSk7XG4gICAgfVxuXG4gICAgYi5zdG9wTGFiZWxzKCk7XG5cbiAgICBsZXQgc3RhcnQgPSBiLnN0YXJ0O1xuICAgIGxldCBlbmQgPSBiLmZpbmFsaXplKCk7XG5cbiAgICByZXR1cm4gbmV3IENvbXBpbGVkRHluYW1pY1RlbXBsYXRlKHN0YXJ0LCBlbmQsIHtcbiAgICAgIG1ldGEsXG4gICAgICBoYXNFdmFsOiBsYXlvdXQuaGFzRXZhbCxcbiAgICAgIHN5bWJvbHM6IGxheW91dC5zeW1ib2xzLmNvbmNhdChbQVRUUlNfQkxPQ0tdKVxuICAgIH0pO1xuICB9XG59XG5cbmNsYXNzIFVud3JhcHBlZEJ1aWxkZXIgaW1wbGVtZW50cyBJbm5lckxheW91dEJ1aWxkZXIge1xuICBwdWJsaWMgYXR0cnMgPSBuZXcgQ29tcG9uZW50QXR0cnNCdWlsZGVyKCk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGVudjogRW52aXJvbm1lbnQsIHByaXZhdGUgbGF5b3V0OiBUZW1wbGF0ZTxUZW1wbGF0ZU1ldGE+KSB7fVxuXG4gIGdldCB0YWcoKTogQ29tcG9uZW50LkNvbXBvbmVudFRhZ0J1aWxkZXIge1xuICAgIHRocm93IG5ldyBFcnJvcignQlVHOiBDYW5ub3QgY2FsbCBgdGFnYCBvbiBhbiBVbndyYXBwZWRCdWlsZGVyJyk7XG4gIH1cblxuICBjb21waWxlKCk6IENvbXBpbGVkRHluYW1pY1Byb2dyYW0ge1xuICAgIGxldCB7IGVudiwgbGF5b3V0IH0gPSB0aGlzO1xuICAgIHJldHVybiBsYXlvdXQuYXNMYXlvdXQodGhpcy5hdHRyc1snYnVmZmVyJ10pLmNvbXBpbGVEeW5hbWljKGVudik7XG4gIH1cbn1cblxuY2xhc3MgQ29tcG9uZW50VGFnQnVpbGRlciBpbXBsZW1lbnRzIENvbXBvbmVudC5Db21wb25lbnRUYWdCdWlsZGVyIHtcbiAgcHVibGljIGlzRHluYW1pYzogT3B0aW9uPGJvb2xlYW4+ID0gbnVsbDtcbiAgcHVibGljIGlzU3RhdGljOiBPcHRpb248Ym9vbGVhbj4gPSBudWxsO1xuICBwdWJsaWMgc3RhdGljVGFnTmFtZTogT3B0aW9uPHN0cmluZz4gPSBudWxsO1xuICBwdWJsaWMgZHluYW1pY1RhZ05hbWU6IE9wdGlvbjxXaXJlRm9ybWF0LkV4cHJlc3Npb24+ID0gbnVsbDtcblxuICBnZXREeW5hbWljKCk6IE1heWJlPFdpcmVGb3JtYXQuRXhwcmVzc2lvbj4ge1xuICAgIGlmICh0aGlzLmlzRHluYW1pYykge1xuICAgICAgcmV0dXJuIHRoaXMuZHluYW1pY1RhZ05hbWU7XG4gICAgfVxuICB9XG5cbiAgZ2V0U3RhdGljKCk6IE1heWJlPHN0cmluZz4ge1xuICAgIGlmICh0aGlzLmlzU3RhdGljKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdGF0aWNUYWdOYW1lO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyh0YWdOYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLmlzU3RhdGljID0gdHJ1ZTtcbiAgICB0aGlzLnN0YXRpY1RhZ05hbWUgPSB0YWdOYW1lO1xuICB9XG5cbiAgZHluYW1pYyh0YWdOYW1lOiBGdW5jdGlvbkV4cHJlc3Npb248c3RyaW5nPikge1xuICAgIHRoaXMuaXNEeW5hbWljID0gdHJ1ZTtcbiAgICB0aGlzLmR5bmFtaWNUYWdOYW1lID0gW09wcy5DbGllbnRTaWRlRXhwcmVzc2lvbiwgQ2xpZW50U2lkZS5PcHMuRnVuY3Rpb25FeHByZXNzaW9uLCB0YWdOYW1lXTtcbiAgfVxufVxuXG5jbGFzcyBDb21wb25lbnRBdHRyc0J1aWxkZXIgaW1wbGVtZW50cyBDb21wb25lbnQuQ29tcG9uZW50QXR0cnNCdWlsZGVyIHtcbiAgcHJpdmF0ZSBidWZmZXI6IFdpcmVGb3JtYXQuU3RhdGVtZW50cy5BdHRyaWJ1dGVbXSA9IFtdO1xuXG4gIHN0YXRpYyhuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmJ1ZmZlci5wdXNoKFtPcHMuU3RhdGljQXR0ciwgbmFtZSwgdmFsdWUsIG51bGxdKTtcbiAgfVxuXG4gIGR5bmFtaWMobmFtZTogc3RyaW5nLCB2YWx1ZTogRnVuY3Rpb25FeHByZXNzaW9uPHN0cmluZz4pIHtcbiAgICB0aGlzLmJ1ZmZlci5wdXNoKFtPcHMuRHluYW1pY0F0dHIsIG5hbWUsIFtPcHMuQ2xpZW50U2lkZUV4cHJlc3Npb24sIENsaWVudFNpZGUuT3BzLkZ1bmN0aW9uRXhwcmVzc2lvbiwgdmFsdWVdLCBudWxsXSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbXBvbmVudEJ1aWxkZXIgaW1wbGVtZW50cyBJQ29tcG9uZW50QnVpbGRlciB7XG4gIHByaXZhdGUgZW52OiBFbnZpcm9ubWVudDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJ1aWxkZXI6IE9wY29kZUJ1aWxkZXJEU0wpIHtcbiAgICB0aGlzLmVudiA9IGJ1aWxkZXIuZW52O1xuICB9XG5cbiAgc3RhdGljKGRlZmluaXRpb246IENvbXBvbmVudC5Db21wb25lbnREZWZpbml0aW9uPE9wYXF1ZT4sIGFyZ3M6IENvbXBvbmVudEFyZ3MpIHtcbiAgICBsZXQgW3BhcmFtcywgaGFzaCwgX2RlZmF1bHQsIGludmVyc2VdID0gYXJncztcbiAgICBsZXQgeyBidWlsZGVyIH0gPSB0aGlzO1xuXG4gICAgYnVpbGRlci5wdXNoQ29tcG9uZW50TWFuYWdlcihkZWZpbml0aW9uKTtcbiAgICBidWlsZGVyLmludm9rZUNvbXBvbmVudChudWxsLCBwYXJhbXMsIGhhc2gsIF9kZWZhdWx0LCBpbnZlcnNlKTtcbiAgfVxuXG4gIGR5bmFtaWMoZGVmaW5pdGlvbkFyZ3M6IENvbXBvbmVudEFyZ3MsIGdldERlZmluaXRpb246IER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uLCBhcmdzOiBDb21wb25lbnRBcmdzKSB7XG4gICAgbGV0IFtwYXJhbXMsIGhhc2gsIGJsb2NrLCBpbnZlcnNlXSA9IGFyZ3M7XG4gICAgbGV0IHsgYnVpbGRlciB9ID0gdGhpcztcblxuICAgIGlmICghZGVmaW5pdGlvbkFyZ3MgfHwgZGVmaW5pdGlvbkFyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEeW5hbWljIHN5bnRheCB3aXRob3V0IGFuIGFyZ3VtZW50XCIpO1xuICAgIH1cblxuICAgIGxldCBtZXRhID0gdGhpcy5idWlsZGVyLm1ldGEudGVtcGxhdGVNZXRhO1xuXG4gICAgZnVuY3Rpb24gaGVscGVyKHZtOiBQdWJsaWNWTSwgYXJnczogSUFyZ3VtZW50cykge1xuICAgICAgcmV0dXJuIGdldERlZmluaXRpb24odm0sIGFyZ3MsIG1ldGEpO1xuICAgIH1cblxuICAgIGJ1aWxkZXIuc3RhcnRMYWJlbHMoKTtcblxuICAgIGJ1aWxkZXIucHVzaEZyYW1lKCk7XG5cbiAgICBidWlsZGVyLnJldHVyblRvKCdFTkQnKTtcblxuICAgIGJ1aWxkZXIuY29tcGlsZUFyZ3MoZGVmaW5pdGlvbkFyZ3NbMF0sIGRlZmluaXRpb25BcmdzWzFdLCB0cnVlKTtcbiAgICBidWlsZGVyLmhlbHBlcihoZWxwZXIpO1xuXG4gICAgYnVpbGRlci5kdXAoKTtcbiAgICBidWlsZGVyLnRlc3QoJ3NpbXBsZScpO1xuXG4gICAgYnVpbGRlci5lbnRlcigyKTtcblxuICAgIGJ1aWxkZXIuanVtcFVubGVzcygnRUxTRScpO1xuXG4gICAgYnVpbGRlci5wdXNoRHluYW1pY0NvbXBvbmVudE1hbmFnZXIoKTtcbiAgICBidWlsZGVyLmludm9rZUNvbXBvbmVudChudWxsLCBwYXJhbXMsIGhhc2gsIGJsb2NrLCBpbnZlcnNlKTtcblxuICAgIGJ1aWxkZXIubGFiZWwoJ0VMU0UnKTtcbiAgICBidWlsZGVyLmV4aXQoKTtcbiAgICBidWlsZGVyLnJldHVybigpO1xuXG4gICAgYnVpbGRlci5sYWJlbCgnRU5EJyk7XG4gICAgYnVpbGRlci5wb3BGcmFtZSgpO1xuXG4gICAgYnVpbGRlci5zdG9wTGFiZWxzKCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkZXIoZW52OiBFbnZpcm9ubWVudCwgbWV0YTogQ29tcGlsYXRpb25NZXRhKSB7XG4gIHJldHVybiBuZXcgT3Bjb2RlQnVpbGRlckRTTChlbnYsIG1ldGEpO1xufVxuIl19

@@ -348,3 +348,2 @@ "use strict";

Environment.prototype.begin = function begin() {
(0, _util.assert)(!this._transaction, 'Cannot start a nested transaction');
this._transaction = new Transaction();

@@ -397,3 +396,3 @@ };

get: function () {
return (0, _util.expect)(this._transaction, 'must be in a transaction');
return this._transaction;
}

@@ -405,2 +404,2 @@ }]);

exports.default = Environment;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJlbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0EsQUFBTyxBQUFtQixBQUFnQixBQUFFLEFBQU0sQUFBb0IsQUFBQzs7QUFFdkUsQUFBTyxBQUFFLEFBQVMsQUFBRSxBQUFNLEFBQXlCLEFBQUM7O0FBS3BELEFBQU8sQUFBRSxBQUFtQixBQUFFLEFBQW9CLEFBQUUsQUFBTSxBQUFjLEFBQUM7O0FBQ3pFLEFBQU8sQUFDTCxBQUFlLEFBRWhCLEFBQU0sQUFBMEIsQUFBQzs7QUFnQmxDLEFBQU8sQUFNTCxBQUFNLEFBQ04sQUFBVSxBQUNWLEFBQU0sQUFDUCxBQUFNLEFBQWUsQUFBQyxBQW9CdkIsQUFBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dDQXFCSjthQUNFLEFBQXlCO0FBQ2pCLEFBQWtCOztZQUNsQixrRkFBNkIsQUFBSSxBQUN6QyxBQUErRDtZQUN2RCxnRkFBcUMsQUFBSSxBQUNqRCxBQUErQztZQUN2QyxpRkFBMkQsQUFBSTs7OEJBTC9EOzthQUFLLFFBQUwsQUFBSyxBQUFhLEFBQ2xCO2FBQVcsY0FBWCxBQUFXLEFBQXNCLEFBRWpDO2FBQVMsWUFBVCxBQUFTLEFBQWdDLEFBRXpDO2FBQVUsYUFBVixBQUFVLEFBQXFELEFBQ3pFLEFBNUJBLEFBQU0sQUE0Qkw7OztVQTVCTSxBQUFJLHFCQUFDLEFBQW9DO1lBQUUsQUFBSSwyRUFBRyxBQUFDLEFBQ3hEOztZQUFJLEFBQUksT0FBcUMsSUFBSSxBQUFLLE1BQUMsQUFBSSxPQUFHLEFBQUMsQUFBQyxBQUFDLEFBRWpFLEFBQUcsQUFBQzthQUFDLElBQUksQUFBQyxJQUFHLEFBQUMsR0FBRSxBQUFDLEtBQUksQUFBSSxNQUFFLEFBQUMsQUFBRSxLQUFFLEFBQUMsQUFDL0IsQUFBSTtpQkFBQyxBQUFDLEFBQUMsQUFBRyxBQUFtQixBQUFDLEFBQ2hDLEFBQUM7QUFFRCxBQUFNO2VBQUMsSUFBSSxBQUFLLE1BQUMsQUFBSSxBQUFDLE1BQUMsQUFBSSxLQUFDLEVBQUUsQUFBSSxBQUFFLEFBQUMsQUFBQyxBQUN4QyxNQUFDLEFBRUQsQUFBTTs7O1VBQUMsQUFBSztZQUFDLEFBQUksMkVBQUcsQUFBQyxBQUNuQjs7WUFBSSxBQUFJLE9BQXFDLElBQUksQUFBSyxNQUFDLEFBQUksT0FBRyxBQUFDLEFBQUMsQUFBQyxBQUVqRSxBQUFHLEFBQUM7YUFBQyxJQUFJLEFBQUMsSUFBRyxBQUFDLEdBQUUsQUFBQyxLQUFJLEFBQUksTUFBRSxBQUFDLEFBQUUsS0FBRSxBQUFDLEFBQy9CLEFBQUk7aUJBQUMsQUFBQyxBQUFDLEFBQUcsQUFBbUIsQUFBQyxBQUNoQyxBQUFDO0FBRUQsQUFBTTtlQUFDLElBQUksQUFBSyxNQUFDLEFBQUksQUFBQyxBQUFDLEFBQ3pCLEFBQUM7OztvQkFZRCxBQUFJLEFBQUM7WUFBRSxBQUFJLEFBQTRDLFlBQ3JELEFBQUk7O2FBQUMsQUFBSyxNQUFDLEFBQUMsQUFBQyxLQUFHLEFBQUksQUFBQyxBQUNyQixBQUFNO2VBQUMsQUFBSSxBQUFDLEFBQ2QsQUFBQzs7O29CQUVELEFBQU8sNkJBQ0wsQUFBTTtlQUFDLEFBQUksS0FBQyxBQUFHLElBQWlDLEFBQUMsQUFBQyxBQUFDLEFBQ3JELEFBQUM7OztvQkFFRCxBQUFTLCtCQUFDLEFBQWMsUUFDdEIsQUFBTTtlQUFDLEFBQUksS0FBQyxBQUFHLElBQWlDLEFBQU0sQUFBQyxBQUFDLEFBQzFELEFBQUM7OztvQkFFRCxBQUFRLDZCQUFDLEFBQWMsUUFDckIsQUFBTTtlQUFDLEFBQUksS0FBQyxBQUFHLElBQVEsQUFBTSxBQUFDLEFBQUMsQUFDakMsQUFBQzs7O29CQUVELEFBQVksdUNBQ1YsQUFBTTtlQUFDLEFBQUksS0FBQyxBQUFTLEFBQUMsQUFDeEIsQUFBQzs7O29CQUVELEFBQWEseUNBQ1gsQUFBTTtlQUFDLEFBQUksS0FBQyxBQUFVLEFBQUMsQUFDekIsQUFBQzs7O29CQUVELEFBQUkscUJBQUMsQUFBYyxRQUFFLEFBQWdCLE9BQ25DLEFBQUk7YUFBQyxBQUFHLElBQUMsQUFBTSxRQUFFLEFBQUssQUFBQyxBQUFDLEFBQzFCLEFBQUM7OztvQkFFRCxBQUFRLDZCQUFDLEFBQW9DLE1BQzNDLEFBQUk7YUFBQyxBQUFHLElBQWlDLEFBQUMsR0FBRSxBQUFJLEFBQUMsQUFBQyxBQUNwRCxBQUFDOzs7b0JBRUQsQUFBVSxpQ0FBQyxBQUFjLFFBQUUsQUFBcUMsT0FDOUQsQUFBSTthQUFDLEFBQUcsSUFBaUMsQUFBTSxRQUFFLEFBQUssQUFBQyxBQUFDLEFBQzFELEFBQUM7OztvQkFFRCxBQUFTLCtCQUFDLEFBQWMsUUFBRSxBQUFvQixPQUM1QyxBQUFJO2FBQUMsQUFBRyxJQUFnQixBQUFNLFFBQUUsQUFBSyxBQUFDLEFBQUMsQUFDekMsQUFBQzs7O29CQUVELEFBQWEsdUNBQUMsQUFBNEIsS0FDeEMsQUFBSTthQUFDLEFBQVMsWUFBRyxBQUFHLEFBQUMsQUFDdkIsQUFBQzs7O29CQUVELEFBQWMseUNBQUMsQUFBeUMsS0FDdEQsQUFBSTthQUFDLEFBQVUsYUFBRyxBQUFHLEFBQUMsQUFDeEIsQUFBQzs7O29CQUVELEFBQWUsMkNBQUMsQUFBb0IsT0FDbEMsQUFBSTthQUFDLEFBQVcsY0FBRyxBQUFLLEFBQUMsQUFDM0IsQUFBQzs7O29CQUVELEFBQWMsMkNBQ1osQUFBTTtlQUFDLEFBQUksS0FBQyxBQUFXLEFBQUMsQUFDMUIsQUFBQzs7O29CQUVELEFBQUsseUJBQ0gsQUFBTTtlQUFDLElBQUksQUFBSyxNQUFDLEFBQUksS0FBQyxBQUFLLE1BQUMsQUFBSyxBQUFFLFNBQUUsQUFBSSxLQUFDLEFBQVcsYUFBRSxBQUFJLEtBQUMsQUFBUyxXQUFFLEFBQUksS0FBQyxBQUFVLEFBQUMsQUFBQyxBQUMxRixBQUFDOzs7b0JBRU8sQUFBRyxtQkFBSSxBQUFhLE9BQzFCLEFBQUUsQUFBQztZQUFDLEFBQUssU0FBSSxBQUFJLEtBQUMsQUFBSyxNQUFDLEFBQU0sQUFBQyxRQUFDLEFBQUMsQUFDL0I7a0JBQU0sSUFBSSxBQUFVLEFBQUMsaUNBQW9CLEFBQUssaUNBQXVCLEFBQUksS0FBQyxBQUFLLE1BQUMsQUFBTSxBQUFFLEFBQUMsQUFBQyxBQUM1RixBQUFDO0FBRUQsQUFBTTtlQUFDLEFBQUksS0FBQyxBQUFLLE1BQUMsQUFBSyxBQUFhLEFBQUMsQUFDdkMsQUFBQzs7O29CQUVPLEFBQUcsbUJBQUksQUFBYSxPQUFFLEFBQVEsT0FDcEMsQUFBRSxBQUFDO1lBQUMsQUFBSyxTQUFJLEFBQUksS0FBQyxBQUFLLE1BQUMsQUFBTSxBQUFDLFFBQUMsQUFBQyxBQUMvQjtrQkFBTSxJQUFJLEFBQVUsQUFBQyxpQ0FBb0IsQUFBSyxpQ0FBdUIsQUFBSSxLQUFDLEFBQUssTUFBQyxBQUFNLEFBQUUsQUFBQyxBQUFDLEFBQzVGLEFBQUM7QUFFRCxBQUFJO2FBQUMsQUFBSyxNQUFDLEFBQUssQUFBQyxTQUFHLEFBQVksQUFBQyxBQUNuQyxBQUFDLEFBQ0YsQUFFRDs7Ozs7OzhCQUFBOzs4QkFDUzs7YUFBd0IsMkJBQThCLEFBQUUsQUFBQyxBQUN6RDthQUF5Qiw0QkFBYSxBQUFFLEFBQUMsQUFDekM7YUFBK0Isa0NBQThCLEFBQUUsQUFBQyxBQUNoRTthQUF3QiwyQkFBYSxBQUFFLEFBQUMsQUFDeEM7YUFBaUIsb0JBQWdCLEFBQUUsQUFBQyxBQUNwQzthQUFlLGtCQUFrQyxBQUFFLEFBQUMsQUFDcEQ7YUFBaUIsb0JBQWdCLEFBQUUsQUFBQyxBQUNwQzthQUFlLGtCQUFrQyxBQUFFLEFBQUMsQUFDcEQ7YUFBVyxjQUFrQixBQUFFLEFBQUMsQUFpRXpDLEFBQUM7OzswQkEvREMsQUFBUywrQkFBSSxBQUFZLFdBQUUsQUFBNEIsU0FDckQsQUFBSTthQUFDLEFBQWlCLGtCQUFDLEFBQUksS0FBQyxBQUFTLEFBQUMsQUFBQyxBQUN2QyxBQUFJO2FBQUMsQUFBZSxnQkFBQyxBQUFJLEtBQUMsQUFBTyxBQUFDLEFBQUMsQUFDckMsQUFBQzs7OzBCQUVELEFBQVMsK0JBQUksQUFBWSxXQUFFLEFBQTRCLFNBQ3JELEFBQUk7YUFBQyxBQUFpQixrQkFBQyxBQUFJLEtBQUMsQUFBUyxBQUFDLEFBQUMsQUFDdkMsQUFBSTthQUFDLEFBQWUsZ0JBQUMsQUFBSSxLQUFDLEFBQU8sQUFBQyxBQUFDLEFBQ3JDLEFBQUM7OzswQkFFRCxBQUF1QiwyREFBSSxBQUFXLFVBQUUsQUFBMkIsU0FDakUsQUFBSTthQUFDLEFBQXdCLHlCQUFDLEFBQUksS0FBQyxBQUFPLEFBQUMsQUFBQyxBQUM1QyxBQUFJO2FBQUMsQUFBeUIsMEJBQUMsQUFBSSxLQUFDLEFBQVEsQUFBQyxBQUFDLEFBQ2hELEFBQUM7OzswQkFFRCxBQUFzQix5REFBSSxBQUFXLFVBQUUsQUFBMkIsU0FDaEUsQUFBSTthQUFDLEFBQStCLGdDQUFDLEFBQUksS0FBQyxBQUFPLEFBQUMsQUFBQyxBQUNuRCxBQUFJO2FBQUMsQUFBd0IseUJBQUMsQUFBSSxLQUFDLEFBQVEsQUFBQyxBQUFDLEFBQy9DLEFBQUM7OzswQkFFRCxBQUFVLGlDQUFDLEFBQWMsR0FDdkIsQUFBSTthQUFDLEFBQVcsWUFBQyxBQUFJLEtBQUMsQUFBQyxBQUFDLEFBQUMsQUFDM0IsQUFBQzs7OzBCQUVELEFBQU0sMkJBQ0osQUFBSTtZQUFFLEFBQWlCO1lBQUUsQUFBZSxBQUFFLGtCQUFHLEFBQUksQUFBQyxLQUVsRCxBQUFHLEFBQUM7O2FBQUMsSUFBSSxBQUFDLElBQUMsQUFBQyxHQUFFLEFBQUMsSUFBQyxBQUFpQixrQkFBQyxBQUFNLFFBQUUsQUFBQyxBQUFFLEtBQUUsQUFBQyxBQUM5QztnQkFBSSxBQUFTLFlBQUcsQUFBaUIsa0JBQUMsQUFBQyxBQUFDLEFBQUMsQUFDckM7Z0JBQUksQUFBTyxVQUFHLEFBQWUsZ0JBQUMsQUFBQyxBQUFDLEFBQUMsQUFDakMsQUFBTztvQkFBQyxBQUFTLFVBQUMsQUFBUyxBQUFDLEFBQUMsQUFDL0IsQUFBQyxBQUVELEFBQUk7O1lBQUUsQUFBaUI7WUFBRSxBQUFlLEFBQUUsa0JBQUcsQUFBSSxBQUFDLEtBRWxELEFBQUcsQUFBQzs7YUFBQyxJQUFJLEFBQUMsS0FBQyxBQUFDLEdBQUUsQUFBQyxLQUFDLEFBQWlCLGtCQUFDLEFBQU0sUUFBRSxBQUFDLEFBQUUsTUFBRSxBQUFDLEFBQzlDO2dCQUFJLEFBQVMsYUFBRyxBQUFpQixrQkFBQyxBQUFDLEFBQUMsQUFBQyxBQUNyQztnQkFBSSxBQUFPLFdBQUcsQUFBZSxnQkFBQyxBQUFDLEFBQUMsQUFBQyxBQUNqQyxBQUFPO3FCQUFDLEFBQVMsVUFBQyxBQUFTLEFBQUMsQUFBQyxBQUMvQixBQUFDLEFBRUQsQUFBSTs7WUFBRSxBQUFXLEFBQUUsY0FBRyxBQUFJLEFBQUMsS0FFM0IsQUFBRyxBQUFDOzthQUFDLElBQUksQUFBQyxNQUFDLEFBQUMsR0FBRSxBQUFDLE1BQUMsQUFBVyxZQUFDLEFBQU0sUUFBRSxBQUFDLEFBQUUsT0FBRSxBQUFDLEFBQ3hDLEFBQVc7d0JBQUMsQUFBQyxBQUFDLEtBQUMsQUFBTyxBQUFFLEFBQUMsQUFDM0IsQUFBQyxBQUVELEFBQUk7O1lBQUUsQUFBd0IsMkJBQWdDLEFBQUksQUFBQztZQUFuQyxBQUF5QixBQUFFLGlDQUUzRCxBQUFHLEFBQUM7O2FBQUMsSUFBSSxBQUFDLE1BQUcsQUFBQyxHQUFFLEFBQUMsTUFBRyxBQUF3Qix5QkFBQyxBQUFNLFFBQUUsQUFBQyxBQUFFLE9BQUUsQUFBQyxBQUN6RDtnQkFBSSxBQUFPLFlBQUcsQUFBd0IseUJBQUMsQUFBQyxBQUFDLEFBQUMsQUFDMUM7Z0JBQUksQUFBUSxXQUFHLEFBQXlCLDBCQUFDLEFBQUMsQUFBQyxBQUFDLEFBQzVDLEFBQU87c0JBQUMsQUFBTyxRQUFDLEFBQVEsQUFBQyxBQUFDLEFBQzVCLEFBQUMsQUFFRCxBQUFJOztZQUFFLEFBQStCO1lBQUUsQUFBd0IsQUFBRSwyQkFBRyxBQUFJLEFBQUMsS0FFekUsQUFBRyxBQUFDOzthQUFDLElBQUksQUFBQyxNQUFHLEFBQUMsR0FBRSxBQUFDLE1BQUcsQUFBK0IsZ0NBQUMsQUFBTSxRQUFFLEFBQUMsQUFBRSxPQUFFLEFBQUMsQUFDaEU7Z0JBQUksQUFBTyxZQUFHLEFBQStCLGdDQUFDLEFBQUMsQUFBQyxBQUFDLEFBQ2pEO2dCQUFJLEFBQVEsWUFBRyxBQUF3Qix5QkFBQyxBQUFDLEFBQUMsQUFBQyxBQUMzQyxBQUFPO3NCQUFDLEFBQU0sT0FBQyxBQUFRLEFBQUMsQUFBQyxBQUMzQixBQUFDLEFBQ0g7QUFBQyxBQUNGOzs7O0FBRUQsQUFBTTs7MENBRUo7b0JBQW9CLEFBQWtDOzhCQUFsQzs7YUFBSyxRQUFMLEFBQUssQUFBNkIsQUFEL0M7YUFBTSxTQUFHLEFBQUMsQUFBQyxBQUN1QyxBQUFDLEFBRTFELEFBQUksQUFBSTs7Ozs7eUJBQ04sQUFBTTttQkFBQyxBQUFJLEtBQUMsQUFBSyxNQUFDLEFBQUksS0FBQyxBQUFNLEFBQUMsQUFBQyxBQUNqQyxBQUFDLEFBRUQsQUFBSSxBQUFHOzs7O3lCQUNMLEFBQU07bUJBQUMsQUFBSSxLQUFDLEFBQUssTUFBQyxBQUFJLEtBQUMsQUFBTSxTQUFHLEFBQUMsQUFBQyxBQUFDLEFBQ3JDLEFBQUMsQUFFRCxBQUFJLEFBQUc7Ozs7eUJBQ0wsQUFBTTttQkFBQyxBQUFJLEtBQUMsQUFBSyxNQUFDLEFBQUksS0FBQyxBQUFNLFNBQUcsQUFBQyxBQUFDLEFBQUMsQUFDckMsQUFBQyxBQUVELEFBQUksQUFBRzs7Ozt5QkFDTCxBQUFNO21CQUFDLEFBQUksS0FBQyxBQUFLLE1BQUMsQUFBSSxLQUFDLEFBQU0sU0FBRyxBQUFDLEFBQUMsQUFBQyxBQUNyQyxBQUFDLEFBQ0Y7Ozs7O0FBRUQsQUFBTTs0Q0FPSjs7OEJBSlE7O2FBQU8sVUFBYSxBQUFFLEFBQUMsQUFDdkI7YUFBTyxVQUFHLEFBQUMsQUFBQyxBQUlsQixBQUFJO2FBQUMsQUFBTyxVQUFHLElBQUksQUFBTSxPQUFDLEFBQUksS0FBQyxBQUFPLEFBQUMsQUFBQyxBQUMxQyxBQUFDLEFBRUQsQUFBSSxBQUFJOzs7c0JBUVIsQUFBTSx5QkFBQyxBQUFjLFFBQ25CLEFBQUk7YUFBQyxBQUFPLFFBQUMsQUFBTSxTQUFHLEFBQU0sQUFBQyxBQUM3QixBQUFNO2VBQUMsQUFBSSxLQUFDLEFBQU8sQUFBQyxBQUN0QixBQUFDOzs7c0JBRUQsQUFBRyxtQkFBQyxBQUFXLEtBQUUsQUFBWTtZQUFFLEFBQUcsMEVBQUcsQUFBQztZQUFFLEFBQUcsMEVBQUcsQUFBQztZQUFFLEFBQUcsMEVBQUcsQUFBQyxBQUN0RCxBQUFJOzthQUFDLEFBQU8sUUFBQyxBQUFHLEFBQUMsT0FBRyxBQUFJLEFBQUMsQUFDekIsQUFBSTthQUFDLEFBQU8sUUFBQyxBQUFHLE1BQUcsQUFBQyxBQUFDLEtBQUcsQUFBRyxBQUFDLEFBQzVCLEFBQUk7YUFBQyxBQUFPLFFBQUMsQUFBRyxNQUFHLEFBQUMsQUFBQyxLQUFHLEFBQUcsQUFBQyxBQUM1QixBQUFJO2FBQUMsQUFBTyxRQUFDLEFBQUcsTUFBRyxBQUFDLEFBQUMsS0FBRyxBQUFHLEFBQUMsQUFDOUIsQUFBQzs7O3NCQUVELEFBQUkscUJBQUMsQUFBWTtZQUFFLEFBQUcsMEVBQUcsQUFBQztZQUFFLEFBQUcsMEVBQUcsQUFBQztZQUFFLEFBQUcsMEVBQUcsQUFBQyxBQUMxQzs7WUFBSSxBQUFNLFNBQUcsQUFBSSxLQUFDLEFBQU8sQUFBQyxBQUMxQixBQUFJO2FBQUMsQUFBTyxRQUFDLEFBQUksS0FBQyxBQUFPLEFBQUUsQUFBQyxhQUFHLEFBQUksQUFBQyxBQUNwQyxBQUFJO2FBQUMsQUFBTyxRQUFDLEFBQUksS0FBQyxBQUFPLEFBQUUsQUFBQyxhQUFHLEFBQUcsQUFBQyxBQUNuQyxBQUFJO2FBQUMsQUFBTyxRQUFDLEFBQUksS0FBQyxBQUFPLEFBQUUsQUFBQyxhQUFHLEFBQUcsQUFBQyxBQUNuQyxBQUFJO2FBQUMsQUFBTyxRQUFDLEFBQUksS0FBQyxBQUFPLEFBQUUsQUFBQyxhQUFHLEFBQUcsQUFBQyxBQUNuQyxBQUFNO2VBQUMsQUFBTSxBQUFDLEFBQ2hCLEFBQUMsQUFDRjs7Ozs7eUJBM0JHLEFBQU07bUJBQUMsQUFBSSxLQUFDLEFBQU8sQUFBQyxBQUN0QixBQUFDLEFBRUQsQUFBSSxBQUFPOzs7O3lCQUNULEFBQU07bUJBQUMsQUFBSSxLQUFDLEFBQU8sVUFBRyxBQUFDLEFBQUMsQUFDMUIsQUFBQzs7Ozs7QUF3QkgsQUFBTTtvREFRSixBQUFZOztZQUFFLEFBQWdCO1lBQUUsQUFBZ0IsQUFBMkU7OzhCQUxuSDs7YUFBTyxVQUFpRCxBQUFJLEFBQUMsQUFDN0Q7YUFBWSxlQUF3QixBQUFJLEFBQUMsQUFDMUM7YUFBUyxZQUFjLEFBQUksQUFBUyxBQUFFLEFBQUMsQUFDdkM7YUFBTyxVQUFHLElBQUksQUFBTyxBQUFFLEFBQUMsQUFHN0IsQUFBSTthQUFDLEFBQWdCLG1CQUFHLEFBQWdCLEFBQUMsQUFDekMsQUFBSTthQUFDLEFBQWdCLG1CQUFHLEFBQWdCLEFBQUMsQUFDM0MsQUFBQzs7OzBCQUVELEFBQXNCLHlEQUFDLEFBQTRCLFdBQ2pELEFBQU07ZUFBQyxBQUFJLEFBQW9CLHFDQUFDLEFBQVMsQUFBQyxBQUFDLEFBQzdDLEFBQUM7OzswQkFLRCxBQUFtQixxREFBMEIsQUFBTTtlQUFDLEFBQUksS0FBQyxBQUFnQixBQUFDLEFBQUMsQUFBQzs7OzBCQUM1RSxBQUFNLDJCQUFpQixBQUFNO2VBQUMsQUFBSSxLQUFDLEFBQWdCLEFBQUMsQUFBQyxBQUFDOzs7MEJBRXRELEFBQVcsbUNBQUMsQUFBZSxRQUN6QixBQUFNO2VBQUMsQUFBVSxzQkFBQyxBQUFNLEFBQUMsVUFBRyxBQUFFLEFBQUMsQUFDakMsQUFBQzs7OzBCQUVELEFBQUsseUJBQ0gsQUFBTTswQkFBQyxDQUFDLEFBQUksS0FBQyxBQUFZLGNBQUUsQUFBbUMsQUFBQyxBQUFDLEFBQ2hFLEFBQUk7YUFBQyxBQUFZLGVBQUcsSUFBSSxBQUFXLEFBQUUsQUFBQyxBQUN4QyxBQUFDLEFBRUQsQUFBWSxBQUFXOzs7MEJBSXZCLEFBQVMsK0JBQUksQUFBWSxXQUFFLEFBQTRCLFNBQ3JELEFBQUk7YUFBQyxBQUFXLFlBQUMsQUFBUyxVQUFDLEFBQVMsV0FBRSxBQUFPLEFBQUMsQUFBQyxBQUNqRCxBQUFDOzs7MEJBRUQsQUFBUywrQkFBSSxBQUFZLFdBQUUsQUFBNEIsU0FDckQsQUFBSTthQUFDLEFBQVcsWUFBQyxBQUFTLFVBQUMsQUFBUyxXQUFFLEFBQU8sQUFBQyxBQUFDLEFBQ2pELEFBQUM7OzswQkFFRCxBQUF1QiwyREFBSSxBQUFXLFVBQUUsQUFBMkIsU0FDakUsQUFBSTthQUFDLEFBQVcsWUFBQyxBQUF1Qix3QkFBQyxBQUFRLFVBQUUsQUFBTyxBQUFDLEFBQUMsQUFDOUQsQUFBQzs7OzBCQUVELEFBQXNCLHlEQUFJLEFBQVcsVUFBRSxBQUEyQixTQUNoRSxBQUFJO2FBQUMsQUFBVyxZQUFDLEFBQXNCLHVCQUFDLEFBQVEsVUFBRSxBQUFPLEFBQUMsQUFBQyxBQUM3RCxBQUFDOzs7MEJBRUQsQUFBVSxpQ0FBQyxBQUFjLEdBQ3ZCLEFBQUk7YUFBQyxBQUFXLFlBQUMsQUFBVSxXQUFDLEFBQUMsQUFBQyxBQUFDLEFBQ2pDLEFBQUM7OzswQkFFRCxBQUFNLDJCQUNKLEFBQUk7YUFBQyxBQUFXLFlBQUMsQUFBTSxBQUFFLEFBQUMsQUFDMUIsQUFBSTthQUFDLEFBQVksZUFBRyxBQUFJLEFBQUMsQUFDM0IsQUFBQzs7OzBCQUVELEFBQVkscUNBQUMsQUFBdUIsU0FBRSxBQUFZLE1BQUUsQUFBbUIsWUFBRSxBQUFrQixXQUN6RixBQUFNO2VBQUMsQUFBZSx3Q0FBQyxBQUFPLFNBQUUsQUFBSSxNQUFFLEFBQVUsWUFBRSxBQUFTLGNBQUssQUFBUyxZQUFHLEFBQUksT0FBRyxBQUFTLEFBQUMsQUFBQyxBQUNoRyxBQUFDOzs7MEJBRUQsQUFBTSwyQkFDSjtZQUFJLEFBQU0sU0FBRyxBQUFJLEtBQUMsQUFBTyxBQUFDLEFBQzFCLEFBQUUsQUFBQztZQUFDLENBQUMsQUFBTSxBQUFDLFFBQUMsQUFBQyxBQUNaLEFBQUk7aUJBQUMsQUFBTyxVQUFHLEFBQU0sU0FBRyxBQUFJLEtBQUMsQUFBZ0IsQUFBRSxBQUFDLEFBQ2xELEFBQUM7QUFFRCxBQUFNO2VBQUMsQUFBTSxBQUFDLEFBQ2hCLEFBQUM7OzswQkFFRCxBQUFnQiwrQ0FDZCxBQUFNO2VBQUMsQUFBZ0IsQUFBRSxBQUFDLEFBQzVCLEFBQUMsQUFhRjs7Ozs7eUJBeERHLEFBQU07bUJBQUMsQUFBTSxrQkFBQyxBQUFJLEtBQUMsQUFBWSxjQUFFLEFBQTBCLEFBQUMsQUFBQyxBQUMvRCxBQUFDOzs7OztBQXlESDtrQkFBZSxBQUFXLEFBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IEJsb2NrcywgSW5saW5lcywgcG9wdWxhdGVCdWlsdGlucyB9IGZyb20gJy4vc3ludGF4L2Z1bmN0aW9ucyc7XG5cbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4vZW52aXJvbm1lbnQvY29uc3RhbnRzJztcblxuaW1wb3J0ICogYXMgU2ltcGxlIGZyb20gJy4vZG9tL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRE9NQ2hhbmdlcywgRE9NVHJlZUNvbnN0cnVjdGlvbiB9IGZyb20gJy4vZG9tL2hlbHBlcic7XG5pbXBvcnQgeyBSZWZlcmVuY2UsIE9wYXF1ZUl0ZXJhYmxlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IFVOREVGSU5FRF9SRUZFUkVOQ0UsIENvbmRpdGlvbmFsUmVmZXJlbmNlIH0gZnJvbSAnLi9yZWZlcmVuY2VzJztcbmltcG9ydCB7XG4gIGRlZmF1bHRNYW5hZ2VycyxcbiAgQXR0cmlidXRlTWFuYWdlclxufSBmcm9tICcuL2RvbS9hdHRyaWJ1dGUtbWFuYWdlcnMnO1xuXG5pbXBvcnQge1xuICBQYXJ0aWFsRGVmaW5pdGlvblxufSBmcm9tICcuL3BhcnRpYWwnO1xuXG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENvbXBvbmVudE1hbmFnZXIsXG4gIENvbXBvbmVudERlZmluaXRpb25cbn0gZnJvbSAnLi9jb21wb25lbnQvaW50ZXJmYWNlcyc7XG5cbmltcG9ydCB7XG4gIE1vZGlmaWVyTWFuYWdlclxufSBmcm9tICcuL21vZGlmaWVyL2ludGVyZmFjZXMnO1xuXG5pbXBvcnQge1xuICBEaWN0LFxuICBPcHRpb24sXG4gIERlc3Ryb3lhYmxlLFxuICBPcGFxdWUsXG4gIEhhc0d1aWQsXG4gIGFzc2VydCxcbiAgZW5zdXJlR3VpZCxcbiAgZXhwZWN0XG59IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuXG5pbXBvcnQge1xuICBUZW1wbGF0ZU1ldGFcbn0gZnJvbSAnQGdsaW1tZXIvd2lyZS1mb3JtYXQnO1xuXG5pbXBvcnQgeyBCbG9jayB9IGZyb20gJy4vc2Nhbm5lcic7XG5cbmltcG9ydCB7IFB1YmxpY1ZNIH0gZnJvbSAnLi92bS9hcHBlbmQnO1xuXG5pbXBvcnQgeyBJQXJndW1lbnRzIH0gZnJvbSAnLi92bS9hcmd1bWVudHMnO1xuXG5leHBvcnQgdHlwZSBTY29wZVNsb3QgPSBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4gfCBPcHRpb248QmxvY2s+O1xuXG5leHBvcnQgaW50ZXJmYWNlIER5bmFtaWNTY29wZSB7XG4gIGdldChrZXk6IHN0cmluZyk6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPjtcbiAgc2V0KGtleTogc3RyaW5nLCByZWZlcmVuY2U6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPik6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPjtcbiAgY2hpbGQoKTogRHluYW1pY1Njb3BlO1xufVxuXG5leHBvcnQgY2xhc3MgU2NvcGUge1xuICBzdGF0aWMgcm9vdChzZWxmOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIHNpemUgPSAwKSB7XG4gICAgbGV0IHJlZnM6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPltdID0gbmV3IEFycmF5KHNpemUgKyAxKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IHNpemU7IGkrKykge1xuICAgICAgcmVmc1tpXSA9IFVOREVGSU5FRF9SRUZFUkVOQ0U7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBTY29wZShyZWZzKS5pbml0KHsgc2VsZiB9KTtcbiAgfVxuXG4gIHN0YXRpYyBzaXplZChzaXplID0gMCkge1xuICAgIGxldCByZWZzOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT5bXSA9IG5ldyBBcnJheShzaXplICsgMSk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBzaXplOyBpKyspIHtcbiAgICAgIHJlZnNbaV0gPSBVTkRFRklORURfUkVGRVJFTkNFO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgU2NvcGUocmVmcyk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICAvLyB0aGUgMHRoIHNsb3QgaXMgYHNlbGZgXG4gICAgcHJpdmF0ZSBzbG90czogU2NvcGVTbG90W10sXG4gICAgcHJpdmF0ZSBjYWxsZXJTY29wZTogT3B0aW9uPFNjb3BlPiA9IG51bGwsXG4gICAgLy8gbmFtZWQgYXJndW1lbnRzIGFuZCBibG9ja3MgcGFzc2VkIHRvIGEgbGF5b3V0IHRoYXQgdXNlcyBldmFsXG4gICAgcHJpdmF0ZSBldmFsU2NvcGU6IE9wdGlvbjxEaWN0PFNjb3BlU2xvdD4+ID0gbnVsbCxcbiAgICAvLyBsb2NhbHMgaW4gc2NvcGUgd2hlbiB0aGUgcGFydGlhbCB3YXMgaW52b2tlZFxuICAgIHByaXZhdGUgcGFydGlhbE1hcDogT3B0aW9uPERpY3Q8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+Pj4gPSBudWxsKSB7XG4gIH1cblxuICBpbml0KHsgc2VsZiB9OiB7IHNlbGY6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiB9KTogdGhpcyB7XG4gICAgdGhpcy5zbG90c1swXSA9IHNlbGY7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBnZXRTZWxmKCk6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0PFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPj4oMCk7XG4gIH1cblxuICBnZXRTeW1ib2woc3ltYm9sOiBudW1iZXIpOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4ge1xuICAgIHJldHVybiB0aGlzLmdldDxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4+KHN5bWJvbCk7XG4gIH1cblxuICBnZXRCbG9jayhzeW1ib2w6IG51bWJlcik6IEJsb2NrIHtcbiAgICByZXR1cm4gdGhpcy5nZXQ8QmxvY2s+KHN5bWJvbCk7XG4gIH1cblxuICBnZXRFdmFsU2NvcGUoKTogT3B0aW9uPERpY3Q8U2NvcGVTbG90Pj4ge1xuICAgIHJldHVybiB0aGlzLmV2YWxTY29wZTtcbiAgfVxuXG4gIGdldFBhcnRpYWxNYXAoKTogT3B0aW9uPERpY3Q8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+Pj4ge1xuICAgIHJldHVybiB0aGlzLnBhcnRpYWxNYXA7XG4gIH1cblxuICBiaW5kKHN5bWJvbDogbnVtYmVyLCB2YWx1ZTogU2NvcGVTbG90KSB7XG4gICAgdGhpcy5zZXQoc3ltYm9sLCB2YWx1ZSk7XG4gIH1cblxuICBiaW5kU2VsZihzZWxmOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4pIHtcbiAgICB0aGlzLnNldDxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4+KDAsIHNlbGYpO1xuICB9XG5cbiAgYmluZFN5bWJvbChzeW1ib2w6IG51bWJlciwgdmFsdWU6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPikge1xuICAgIHRoaXMuc2V0PFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPj4oc3ltYm9sLCB2YWx1ZSk7XG4gIH1cblxuICBiaW5kQmxvY2soc3ltYm9sOiBudW1iZXIsIHZhbHVlOiBPcHRpb248QmxvY2s+KSB7XG4gICAgdGhpcy5zZXQ8T3B0aW9uPEJsb2NrPj4oc3ltYm9sLCB2YWx1ZSk7XG4gIH1cblxuICBiaW5kRXZhbFNjb3BlKG1hcDogT3B0aW9uPERpY3Q8U2NvcGVTbG90Pj4pIHtcbiAgICB0aGlzLmV2YWxTY29wZSA9IG1hcDtcbiAgfVxuXG4gIGJpbmRQYXJ0aWFsTWFwKG1hcDogRGljdDxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4+KSB7XG4gICAgdGhpcy5wYXJ0aWFsTWFwID0gbWFwO1xuICB9XG5cbiAgYmluZENhbGxlclNjb3BlKHNjb3BlOiBPcHRpb248U2NvcGU+KSB7XG4gICAgdGhpcy5jYWxsZXJTY29wZSA9IHNjb3BlO1xuICB9XG5cbiAgZ2V0Q2FsbGVyU2NvcGUoKTogT3B0aW9uPFNjb3BlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGVyU2NvcGU7XG4gIH1cblxuICBjaGlsZCgpOiBTY29wZSB7XG4gICAgcmV0dXJuIG5ldyBTY29wZSh0aGlzLnNsb3RzLnNsaWNlKCksIHRoaXMuY2FsbGVyU2NvcGUsIHRoaXMuZXZhbFNjb3BlLCB0aGlzLnBhcnRpYWxNYXApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQ8VD4oaW5kZXg6IG51bWJlcik6IFQge1xuICAgIGlmIChpbmRleCA+PSB0aGlzLnNsb3RzLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYEJVRzogY2Fubm90IGdldCAkJHtpbmRleH0gZnJvbSBzY29wZTsgbGVuZ3RoPSR7dGhpcy5zbG90cy5sZW5ndGh9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc2xvdHNbaW5kZXhdIGFzIGFueSBhcyBUO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXQ8VD4oaW5kZXg6IG51bWJlciwgdmFsdWU6IFQpOiB2b2lkIHtcbiAgICBpZiAoaW5kZXggPj0gdGhpcy5zbG90cy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKGBCVUc6IGNhbm5vdCBnZXQgJCR7aW5kZXh9IGZyb20gc2NvcGU7IGxlbmd0aD0ke3RoaXMuc2xvdHMubGVuZ3RofWApO1xuICAgIH1cblxuICAgIHRoaXMuc2xvdHNbaW5kZXhdID0gdmFsdWUgYXMgYW55O1xuICB9XG59XG5cbmNsYXNzIFRyYW5zYWN0aW9uIHtcbiAgcHVibGljIHNjaGVkdWxlZEluc3RhbGxNYW5hZ2VyczogTW9kaWZpZXJNYW5hZ2VyPE9wYXF1ZT5bXSA9IFtdO1xuICBwdWJsaWMgc2NoZWR1bGVkSW5zdGFsbE1vZGlmaWVyczogT2JqZWN0W10gPSBbXTtcbiAgcHVibGljIHNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVyTWFuYWdlcnM6IE1vZGlmaWVyTWFuYWdlcjxPcGFxdWU+W10gPSBbXTtcbiAgcHVibGljIHNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVyczogT2JqZWN0W10gPSBbXTtcbiAgcHVibGljIGNyZWF0ZWRDb21wb25lbnRzOiBDb21wb25lbnRbXSA9IFtdO1xuICBwdWJsaWMgY3JlYXRlZE1hbmFnZXJzOiBDb21wb25lbnRNYW5hZ2VyPENvbXBvbmVudD5bXSA9IFtdO1xuICBwdWJsaWMgdXBkYXRlZENvbXBvbmVudHM6IENvbXBvbmVudFtdID0gW107XG4gIHB1YmxpYyB1cGRhdGVkTWFuYWdlcnM6IENvbXBvbmVudE1hbmFnZXI8Q29tcG9uZW50PltdID0gW107XG4gIHB1YmxpYyBkZXN0cnVjdG9yczogRGVzdHJveWFibGVbXSA9IFtdO1xuXG4gIGRpZENyZWF0ZTxUPihjb21wb25lbnQ6IFQsIG1hbmFnZXI6IENvbXBvbmVudE1hbmFnZXI8VD4pIHtcbiAgICB0aGlzLmNyZWF0ZWRDb21wb25lbnRzLnB1c2goY29tcG9uZW50KTtcbiAgICB0aGlzLmNyZWF0ZWRNYW5hZ2Vycy5wdXNoKG1hbmFnZXIpO1xuICB9XG5cbiAgZGlkVXBkYXRlPFQ+KGNvbXBvbmVudDogVCwgbWFuYWdlcjogQ29tcG9uZW50TWFuYWdlcjxUPikge1xuICAgIHRoaXMudXBkYXRlZENvbXBvbmVudHMucHVzaChjb21wb25lbnQpO1xuICAgIHRoaXMudXBkYXRlZE1hbmFnZXJzLnB1c2gobWFuYWdlcik7XG4gIH1cblxuICBzY2hlZHVsZUluc3RhbGxNb2RpZmllcjxUPihtb2RpZmllcjogVCwgbWFuYWdlcjogTW9kaWZpZXJNYW5hZ2VyPFQ+KSB7XG4gICAgdGhpcy5zY2hlZHVsZWRJbnN0YWxsTWFuYWdlcnMucHVzaChtYW5hZ2VyKTtcbiAgICB0aGlzLnNjaGVkdWxlZEluc3RhbGxNb2RpZmllcnMucHVzaChtb2RpZmllcik7XG4gIH1cblxuICBzY2hlZHVsZVVwZGF0ZU1vZGlmaWVyPFQ+KG1vZGlmaWVyOiBULCBtYW5hZ2VyOiBNb2RpZmllck1hbmFnZXI8VD4pIHtcbiAgICB0aGlzLnNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVyTWFuYWdlcnMucHVzaChtYW5hZ2VyKTtcbiAgICB0aGlzLnNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcbiAgfVxuXG4gIGRpZERlc3Ryb3koZDogRGVzdHJveWFibGUpIHtcbiAgICB0aGlzLmRlc3RydWN0b3JzLnB1c2goZCk7XG4gIH1cblxuICBjb21taXQoKSB7XG4gICAgbGV0IHsgY3JlYXRlZENvbXBvbmVudHMsIGNyZWF0ZWRNYW5hZ2VycyB9ID0gdGhpcztcblxuICAgIGZvciAobGV0IGk9MDsgaTxjcmVhdGVkQ29tcG9uZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IGNvbXBvbmVudCA9IGNyZWF0ZWRDb21wb25lbnRzW2ldO1xuICAgICAgbGV0IG1hbmFnZXIgPSBjcmVhdGVkTWFuYWdlcnNbaV07XG4gICAgICBtYW5hZ2VyLmRpZENyZWF0ZShjb21wb25lbnQpO1xuICAgIH1cblxuICAgIGxldCB7IHVwZGF0ZWRDb21wb25lbnRzLCB1cGRhdGVkTWFuYWdlcnMgfSA9IHRoaXM7XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8dXBkYXRlZENvbXBvbmVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBjb21wb25lbnQgPSB1cGRhdGVkQ29tcG9uZW50c1tpXTtcbiAgICAgIGxldCBtYW5hZ2VyID0gdXBkYXRlZE1hbmFnZXJzW2ldO1xuICAgICAgbWFuYWdlci5kaWRVcGRhdGUoY29tcG9uZW50KTtcbiAgICB9XG5cbiAgICBsZXQgeyBkZXN0cnVjdG9ycyB9ID0gdGhpcztcblxuICAgIGZvciAobGV0IGk9MDsgaTxkZXN0cnVjdG9ycy5sZW5ndGg7IGkrKykge1xuICAgICAgZGVzdHJ1Y3RvcnNbaV0uZGVzdHJveSgpO1xuICAgIH1cblxuICAgIGxldCB7IHNjaGVkdWxlZEluc3RhbGxNYW5hZ2Vycywgc2NoZWR1bGVkSW5zdGFsbE1vZGlmaWVycyB9ID0gdGhpcztcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2NoZWR1bGVkSW5zdGFsbE1hbmFnZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgbWFuYWdlciA9IHNjaGVkdWxlZEluc3RhbGxNYW5hZ2Vyc1tpXTtcbiAgICAgIGxldCBtb2RpZmllciA9IHNjaGVkdWxlZEluc3RhbGxNb2RpZmllcnNbaV07XG4gICAgICBtYW5hZ2VyLmluc3RhbGwobW9kaWZpZXIpO1xuICAgIH1cblxuICAgIGxldCB7IHNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVyTWFuYWdlcnMsIHNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVycyB9ID0gdGhpcztcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJNYW5hZ2Vycy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IG1hbmFnZXIgPSBzY2hlZHVsZWRVcGRhdGVNb2RpZmllck1hbmFnZXJzW2ldO1xuICAgICAgbGV0IG1vZGlmaWVyID0gc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJzW2ldO1xuICAgICAgbWFuYWdlci51cGRhdGUobW9kaWZpZXIpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT3Bjb2RlIHtcbiAgcHVibGljIG9mZnNldCA9IDA7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXJyYXk6IFVpbnQzMkFycmF5IHwgQXJyYXk8bnVtYmVyPikge31cblxuICBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5hcnJheVt0aGlzLm9mZnNldF07XG4gIH1cblxuICBnZXQgb3AxKCkge1xuICAgIHJldHVybiB0aGlzLmFycmF5W3RoaXMub2Zmc2V0ICsgMV07XG4gIH1cblxuICBnZXQgb3AyKCkge1xuICAgIHJldHVybiB0aGlzLmFycmF5W3RoaXMub2Zmc2V0ICsgMl07XG4gIH1cblxuICBnZXQgb3AzKCkge1xuICAgIHJldHVybiB0aGlzLmFycmF5W3RoaXMub2Zmc2V0ICsgM107XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFByb2dyYW0ge1xuICBba2V5OiBudW1iZXJdOiBuZXZlcjtcblxuICBwcml2YXRlIG9wY29kZXM6IG51bWJlcltdID0gW107XG4gIHByaXZhdGUgX29mZnNldCA9IDA7XG4gIHByaXZhdGUgX29wY29kZTogT3Bjb2RlO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX29wY29kZSA9IG5ldyBPcGNvZGUodGhpcy5vcGNvZGVzKTtcbiAgfVxuXG4gIGdldCBuZXh0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX29mZnNldDtcbiAgfVxuXG4gIGdldCBjdXJyZW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX29mZnNldCAtIDQ7XG4gIH1cblxuICBvcGNvZGUob2Zmc2V0OiBudW1iZXIpOiBPcGNvZGUge1xuICAgIHRoaXMuX29wY29kZS5vZmZzZXQgPSBvZmZzZXQ7XG4gICAgcmV0dXJuIHRoaXMuX29wY29kZTtcbiAgfVxuXG4gIHNldChwb3M6IG51bWJlciwgdHlwZTogbnVtYmVyLCBvcDEgPSAwLCBvcDIgPSAwLCBvcDMgPSAwKSB7XG4gICAgdGhpcy5vcGNvZGVzW3Bvc10gPSB0eXBlO1xuICAgIHRoaXMub3Bjb2Rlc1twb3MgKyAxXSA9IG9wMTtcbiAgICB0aGlzLm9wY29kZXNbcG9zICsgMl0gPSBvcDI7XG4gICAgdGhpcy5vcGNvZGVzW3BvcyArIDNdID0gb3AzO1xuICB9XG5cbiAgcHVzaCh0eXBlOiBudW1iZXIsIG9wMSA9IDAsIG9wMiA9IDAsIG9wMyA9IDApOiBudW1iZXIge1xuICAgIGxldCBvZmZzZXQgPSB0aGlzLl9vZmZzZXQ7XG4gICAgdGhpcy5vcGNvZGVzW3RoaXMuX29mZnNldCsrXSA9IHR5cGU7XG4gICAgdGhpcy5vcGNvZGVzW3RoaXMuX29mZnNldCsrXSA9IG9wMTtcbiAgICB0aGlzLm9wY29kZXNbdGhpcy5fb2Zmc2V0KytdID0gb3AyO1xuICAgIHRoaXMub3Bjb2Rlc1t0aGlzLl9vZmZzZXQrK10gPSBvcDM7XG4gICAgcmV0dXJuIG9mZnNldDtcbiAgfVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRW52aXJvbm1lbnQge1xuICBwcm90ZWN0ZWQgdXBkYXRlT3BlcmF0aW9uczogRE9NQ2hhbmdlcztcbiAgcHJvdGVjdGVkIGFwcGVuZE9wZXJhdGlvbnM6IERPTVRyZWVDb25zdHJ1Y3Rpb247XG4gIHByaXZhdGUgX21hY3JvczogT3B0aW9uPHsgYmxvY2tzOiBCbG9ja3MsIGlubGluZXM6IElubGluZXMgfT4gPSBudWxsO1xuICBwcml2YXRlIF90cmFuc2FjdGlvbjogT3B0aW9uPFRyYW5zYWN0aW9uPiA9IG51bGw7XG4gIHB1YmxpYyBjb25zdGFudHM6IENvbnN0YW50cyA9IG5ldyBDb25zdGFudHMoKTtcbiAgcHVibGljIHByb2dyYW0gPSBuZXcgUHJvZ3JhbSgpO1xuXG4gIGNvbnN0cnVjdG9yKHsgYXBwZW5kT3BlcmF0aW9ucywgdXBkYXRlT3BlcmF0aW9ucyB9OiB7IGFwcGVuZE9wZXJhdGlvbnM6IERPTVRyZWVDb25zdHJ1Y3Rpb24sIHVwZGF0ZU9wZXJhdGlvbnM6IERPTUNoYW5nZXMgfSkge1xuICAgIHRoaXMuYXBwZW5kT3BlcmF0aW9ucyA9IGFwcGVuZE9wZXJhdGlvbnM7XG4gICAgdGhpcy51cGRhdGVPcGVyYXRpb25zID0gdXBkYXRlT3BlcmF0aW9ucztcbiAgfVxuXG4gIHRvQ29uZGl0aW9uYWxSZWZlcmVuY2UocmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPik6IFJlZmVyZW5jZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG5ldyBDb25kaXRpb25hbFJlZmVyZW5jZShyZWZlcmVuY2UpO1xuICB9XG5cbiAgYWJzdHJhY3QgaXRlcmFibGVGb3IocmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPiwga2V5OiBzdHJpbmcpOiBPcGFxdWVJdGVyYWJsZTtcbiAgYWJzdHJhY3QgcHJvdG9jb2xGb3JVUkwoczogc3RyaW5nKTogc3RyaW5nO1xuXG4gIGdldEFwcGVuZE9wZXJhdGlvbnMoKTogRE9NVHJlZUNvbnN0cnVjdGlvbiB7IHJldHVybiB0aGlzLmFwcGVuZE9wZXJhdGlvbnM7IH1cbiAgZ2V0RE9NKCk6IERPTUNoYW5nZXMgeyByZXR1cm4gdGhpcy51cGRhdGVPcGVyYXRpb25zOyB9XG5cbiAgZ2V0SWRlbnRpdHkob2JqZWN0OiBIYXNHdWlkKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZW5zdXJlR3VpZChvYmplY3QpICsgJyc7XG4gIH1cblxuICBiZWdpbigpIHtcbiAgICBhc3NlcnQoIXRoaXMuX3RyYW5zYWN0aW9uLCAnQ2Fubm90IHN0YXJ0IGEgbmVzdGVkIHRyYW5zYWN0aW9uJyk7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHRyYW5zYWN0aW9uKCk6IFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXMuX3RyYW5zYWN0aW9uLCAnbXVzdCBiZSBpbiBhIHRyYW5zYWN0aW9uJyk7XG4gIH1cblxuICBkaWRDcmVhdGU8VD4oY29tcG9uZW50OiBULCBtYW5hZ2VyOiBDb21wb25lbnRNYW5hZ2VyPFQ+KSB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5kaWRDcmVhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcbiAgfVxuXG4gIGRpZFVwZGF0ZTxUPihjb21wb25lbnQ6IFQsIG1hbmFnZXI6IENvbXBvbmVudE1hbmFnZXI8VD4pIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLmRpZFVwZGF0ZShjb21wb25lbnQsIG1hbmFnZXIpO1xuICB9XG5cbiAgc2NoZWR1bGVJbnN0YWxsTW9kaWZpZXI8VD4obW9kaWZpZXI6IFQsIG1hbmFnZXI6IE1vZGlmaWVyTWFuYWdlcjxUPikge1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2NoZWR1bGVJbnN0YWxsTW9kaWZpZXIobW9kaWZpZXIsIG1hbmFnZXIpO1xuICB9XG5cbiAgc2NoZWR1bGVVcGRhdGVNb2RpZmllcjxUPihtb2RpZmllcjogVCwgbWFuYWdlcjogTW9kaWZpZXJNYW5hZ2VyPFQ+KSB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zY2hlZHVsZVVwZGF0ZU1vZGlmaWVyKG1vZGlmaWVyLCBtYW5hZ2VyKTtcbiAgfVxuXG4gIGRpZERlc3Ryb3koZDogRGVzdHJveWFibGUpIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLmRpZERlc3Ryb3koZCk7XG4gIH1cblxuICBjb21taXQoKSB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5jb21taXQoKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG51bGw7XG4gIH1cblxuICBhdHRyaWJ1dGVGb3IoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIGF0dHI6IHN0cmluZywgaXNUcnVzdGluZzogYm9vbGVhbiwgbmFtZXNwYWNlPzogc3RyaW5nKTogQXR0cmlidXRlTWFuYWdlciB7XG4gICAgcmV0dXJuIGRlZmF1bHRNYW5hZ2VycyhlbGVtZW50LCBhdHRyLCBpc1RydXN0aW5nLCBuYW1lc3BhY2UgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBuYW1lc3BhY2UpO1xuICB9XG5cbiAgbWFjcm9zKCk6IHsgYmxvY2tzOiBCbG9ja3MsIGlubGluZXM6IElubGluZXMgfSB7XG4gICAgbGV0IG1hY3JvcyA9IHRoaXMuX21hY3JvcztcbiAgICBpZiAoIW1hY3Jvcykge1xuICAgICAgdGhpcy5fbWFjcm9zID0gbWFjcm9zID0gdGhpcy5wb3B1bGF0ZUJ1aWx0aW5zKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hY3JvcztcbiAgfVxuXG4gIHBvcHVsYXRlQnVpbHRpbnMoKTogeyBibG9ja3M6IEJsb2NrcywgaW5saW5lczogSW5saW5lcyB9IHtcbiAgICByZXR1cm4gcG9wdWxhdGVCdWlsdGlucygpO1xuICB9XG5cbiAgYWJzdHJhY3QgaGFzSGVscGVyKGhlbHBlck5hbWU6IHN0cmluZywgbWV0YTogVGVtcGxhdGVNZXRhKTogYm9vbGVhbjtcbiAgYWJzdHJhY3QgbG9va3VwSGVscGVyKGhlbHBlck5hbWU6IHN0cmluZywgbWV0YTogVGVtcGxhdGVNZXRhKTogSGVscGVyO1xuXG4gIGFic3RyYWN0IGhhc01vZGlmaWVyKG1vZGlmaWVyTmFtZTogc3RyaW5nLCBtZXRhOiBUZW1wbGF0ZU1ldGEpOiBib29sZWFuO1xuICBhYnN0cmFjdCBsb29rdXBNb2RpZmllcihtb2RpZmllck5hbWU6IHN0cmluZywgbWV0YTogVGVtcGxhdGVNZXRhKTogTW9kaWZpZXJNYW5hZ2VyPE9wYXF1ZT47XG5cbiAgYWJzdHJhY3QgaGFzQ29tcG9uZW50RGVmaW5pdGlvbih0YWdOYW1lOiBzdHJpbmcsIG1ldGE6IFRlbXBsYXRlTWV0YSk6IGJvb2xlYW47XG4gIGFic3RyYWN0IGdldENvbXBvbmVudERlZmluaXRpb24odGFnTmFtZTogc3RyaW5nLCBtZXRhOiBUZW1wbGF0ZU1ldGEpOiBDb21wb25lbnREZWZpbml0aW9uPE9wYXF1ZT47XG5cbiAgYWJzdHJhY3QgaGFzUGFydGlhbChwYXJ0aWFsTmFtZTogc3RyaW5nLCBtZXRhOiBUZW1wbGF0ZU1ldGEpOiBib29sZWFuO1xuICBhYnN0cmFjdCBsb29rdXBQYXJ0aWFsKFBhcnRpYWxOYW1lOiBzdHJpbmcsIG1ldGE6IFRlbXBsYXRlTWV0YSk6IFBhcnRpYWxEZWZpbml0aW9uPFRlbXBsYXRlTWV0YT47XG59XG5cbmV4cG9ydCBkZWZhdWx0IEVudmlyb25tZW50O1xuXG5leHBvcnQgaW50ZXJmYWNlIEhlbHBlciB7XG4gICh2bTogUHVibGljVk0sIGFyZ3M6IElBcmd1bWVudHMpOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT47XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJlbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0EsQUFBTyxBQUFtQixBQUFnQixBQUFFLEFBQU0sQUFBb0IsQUFBQzs7QUFFdkUsQUFBTyxBQUFFLEFBQVMsQUFBRSxBQUFNLEFBQXlCLEFBQUM7O0FBS3BELEFBQU8sQUFBRSxBQUFtQixBQUFFLEFBQW9CLEFBQUUsQUFBTSxBQUFjLEFBQUM7O0FBQ3pFLEFBQU8sQUFDTCxBQUFlLEFBRWhCLEFBQU0sQUFBMEIsQUFBQzs7QUFnQmxDLEFBQU8sQUFNTCxBQUFVLEFBQ1gsQUFBTSxBQUFlLEFBQUMsQUFvQnZCLEFBQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozt3Q0FxQko7YUFDRSxBQUF5QjtBQUNqQixBQUFrQjs7WUFDbEIsa0ZBQTZCLEFBQUksQUFDekMsQUFBK0Q7WUFDdkQsZ0ZBQXFDLEFBQUksQUFDakQsQUFBK0M7WUFDdkMsaUZBQTJELEFBQUk7OzhCQUwvRDs7YUFBSyxRQUFMLEFBQUssQUFBYSxBQUNsQjthQUFXLGNBQVgsQUFBVyxBQUFzQixBQUVqQzthQUFTLFlBQVQsQUFBUyxBQUFnQyxBQUV6QzthQUFVLGFBQVYsQUFBVSxBQUFxRCxBQUN6RSxBQTVCQSxBQUFNLEFBNEJMOzs7VUE1Qk0sQUFBSSxxQkFBQyxBQUFvQztZQUFFLEFBQUksMkVBQUcsQUFBQyxBQUN4RDs7WUFBSSxBQUFJLE9BQXFDLElBQUksQUFBSyxNQUFDLEFBQUksT0FBRyxBQUFDLEFBQUMsQUFBQyxBQUVqRSxBQUFHLEFBQUM7YUFBQyxJQUFJLEFBQUMsSUFBRyxBQUFDLEdBQUUsQUFBQyxLQUFJLEFBQUksTUFBRSxBQUFDLEFBQUUsS0FBRSxBQUFDLEFBQy9CLEFBQUk7aUJBQUMsQUFBQyxBQUFDLEFBQUcsQUFBbUIsQUFBQyxBQUNoQyxBQUFDO0FBRUQsQUFBTTtlQUFDLElBQUksQUFBSyxNQUFDLEFBQUksQUFBQyxN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WyJpbXBvcnQgeyBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IEJsb2NrcywgSW5saW5lcywgcG9wdWxhdGVCdWlsdGlucyB9IGZyb20gJy4vc3ludGF4L2Z1bmN0aW9ucyc7XG5cbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4vZW52aXJvbm1lbnQvY29uc3RhbnRzJztcblxuaW1wb3J0ICogYXMgU2ltcGxlIGZyb20gJy4vZG9tL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRE9NQ2hhbmdlcywgRE9NVHJlZUNvbnN0cnVjdGlvbiB9IGZyb20gJy4vZG9tL2hlbHBlcic7XG5pbXBvcnQgeyBSZWZlcmVuY2UsIE9wYXF1ZUl0ZXJhYmxlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IFVOREVGSU5FRF9SRUZFUkVOQ0UsIENvbmRpdGlvbmFsUmVmZXJlbmNlIH0gZnJvbSAnLi9yZWZlcmVuY2VzJztcbmltcG9ydCB7XG4gIGRlZmF1bHRNYW5hZ2VycyxcbiAgQXR0cmlidXRlTWFuYWdlclxufSBmcm9tICcuL2RvbS9hdHRyaWJ1dGUtbWFuYWdlcnMnO1xuXG5pbXBvcnQge1xuICBQYXJ0aWFsRGVmaW5pdGlvblxufSBmcm9tICcuL3BhcnRpYWwnO1xuXG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENvbXBvbmVudE1hbmFnZXIsXG4gIENvbXBvbmVudERlZmluaXRpb25cbn0gZnJvbSAnLi9jb21wb25lbnQvaW50ZXJmYWNlcyc7XG5cbmltcG9ydCB7XG4gIE1vZGlmaWVyTWFuYWdlclxufSBmcm9tICcuL21vZGlmaWVyL2ludGVyZmFjZXMnO1xuXG5pbXBvcnQge1xuICBEaWN0LFxuICBPcHRpb24sXG4gIERlc3Ryb3lhYmxlLFxuICBPcGFxdWUsXG4gIEhhc0d1aWQsXG4gIGVuc3VyZUd1aWQsXG59IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuXG5pbXBvcnQge1xuICBUZW1wbGF0ZU1ldGFcbn0gZnJvbSAnQGdsaW1tZXIvd2lyZS1mb3JtYXQnO1xuXG5pbXBvcnQgeyBCbG9jayB9IGZyb20gJy4vc2Nhbm5lcic7XG5cbmltcG9ydCB7IFB1YmxpY1ZNIH0gZnJvbSAnLi92bS9hcHBlbmQnO1xuXG5pbXBvcnQgeyBJQXJndW1lbnRzIH0gZnJvbSAnLi92bS9hcmd1bWVudHMnO1xuXG5leHBvcnQgdHlwZSBTY29wZVNsb3QgPSBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4gfCBPcHRpb248QmxvY2s+O1xuXG5leHBvcnQgaW50ZXJmYWNlIER5bmFtaWNTY29wZSB7XG4gIGdldChrZXk6IHN0cmluZyk6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPjtcbiAgc2V0KGtleTogc3RyaW5nLCByZWZlcmVuY2U6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPik6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPjtcbiAgY2hpbGQoKTogRHluYW1pY1Njb3BlO1xufVxuXG5leHBvcnQgY2xhc3MgU2NvcGUge1xuICBzdGF0aWMgcm9vdChzZWxmOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIHNpemUgPSAwKSB7XG4gICAgbGV0IHJlZnM6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPltdID0gbmV3IEFycmF5KHNpemUgKyAxKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IHNpemU7IGkrKykge1xuICAgICAgcmVmc1tpXSA9IFVOREVGSU5FRF9SRUZFUkVOQ0U7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBTY29wZShyZWZzKS5pbml0KHsgc2VsZiB9KTtcbiAgfVxuXG4gIHN0YXRpYyBzaXplZChzaXplID0gMCkge1xuICAgIGxldCByZWZzOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT5bXSA9IG5ldyBBcnJheShzaXplICsgMSk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBzaXplOyBpKyspIHtcbiAgICAgIHJlZnNbaV0gPSBVTkRFRklORURfUkVGRVJFTkNFO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgU2NvcGUocmVmcyk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICAvLyB0aGUgMHRoIHNsb3QgaXMgYHNlbGZgXG4gICAgcHJpdmF0ZSBzbG90czogU2NvcGVTbG90W10sXG4gICAgcHJpdmF0ZSBjYWxsZXJTY29wZTogT3B0aW9uPFNjb3BlPiA9IG51bGwsXG4gICAgLy8gbmFtZWQgYXJndW1lbnRzIGFuZCBibG9ja3MgcGFzc2VkIHRvIGEgbGF5b3V0IHRoYXQgdXNlcyBldmFsXG4gICAgcHJpdmF0ZSBldmFsU2NvcGU6IE9wdGlvbjxEaWN0PFNjb3BlU2xvdD4+ID0gbnVsbCxcbiAgICAvLyBsb2NhbHMgaW4gc2NvcGUgd2hlbiB0aGUgcGFydGlhbCB3YXMgaW52b2tlZFxuICAgIHByaXZhdGUgcGFydGlhbE1hcDogT3B0aW9uPERpY3Q8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+Pj4gPSBudWxsKSB7XG4gIH1cblxuICBpbml0KHsgc2VsZiB9OiB7IHNlbGY6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiB9KTogdGhpcyB7XG4gICAgdGhpcy5zbG90c1swXSA9IHNlbGY7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBnZXRTZWxmKCk6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0PFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPj4oMCk7XG4gIH1cblxuICBnZXRTeW1ib2woc3ltYm9sOiBudW1iZXIpOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4ge1xuICAgIHJldHVybiB0aGlzLmdldDxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4+KHN5bWJvbCk7XG4gIH1cblxuICBnZXRCbG9jayhzeW1ib2w6IG51bWJlcik6IEJsb2NrIHtcbiAgICByZXR1cm4gdGhpcy5nZXQ8QmxvY2s+KHN5bWJvbCk7XG4gIH1cblxuICBnZXRFdmFsU2NvcGUoKTogT3B0aW9uPERpY3Q8U2NvcGVTbG90Pj4ge1xuICAgIHJldHVybiB0aGlzLmV2YWxTY29wZTtcbiAgfVxuXG4gIGdldFBhcnRpYWxNYXAoKTogT3B0aW9uPERpY3Q8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+Pj4ge1xuICAgIHJldHVybiB0aGlzLnBhcnRpYWxNYXA7XG4gIH1cblxuICBiaW5kKHN5bWJvbDogbnVtYmVyLCB2YWx1ZTogU2NvcGVTbG90KSB7XG4gICAgdGhpcy5zZXQoc3ltYm9sLCB2YWx1ZSk7XG4gIH1cblxuICBiaW5kU2VsZihzZWxmOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4pIHtcbiAgICB0aGlzLnNldDxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4+KDAsIHNlbGYpO1xuICB9XG5cbiAgYmluZFN5bWJvbChzeW1ib2w6IG51bWJlciwgdmFsdWU6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPikge1xuICAgIHRoaXMuc2V0PFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPj4oc3ltYm9sLCB2YWx1ZSk7XG4gIH1cblxuICBiaW5kQmxvY2soc3ltYm9sOiBudW1iZXIsIHZhbHVlOiBPcHRpb248QmxvY2s+KSB7XG4gICAgdGhpcy5zZXQ8T3B0aW9uPEJsb2NrPj4oc3ltYm9sLCB2YWx1ZSk7XG4gIH1cblxuICBiaW5kRXZhbFNjb3BlKG1hcDogT3B0aW9uPERpY3Q8U2NvcGVTbG90Pj4pIHtcbiAgICB0aGlzLmV2YWxTY29wZSA9IG1hcDtcbiAgfVxuXG4gIGJpbmRQYXJ0aWFsTWFwKG1hcDogRGljdDxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4+KSB7XG4gICAgdGhpcy5wYXJ0aWFsTWFwID0gbWFwO1xuICB9XG5cbiAgYmluZENhbGxlclNjb3BlKHNjb3BlOiBPcHRpb248U2NvcGU+KSB7XG4gICAgdGhpcy5jYWxsZXJTY29wZSA9IHNjb3BlO1xuICB9XG5cbiAgZ2V0Q2FsbGVyU2NvcGUoKTogT3B0aW9uPFNjb3BlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGVyU2NvcGU7XG4gIH1cblxuICBjaGlsZCgpOiBTY29wZSB7XG4gICAgcmV0dXJuIG5ldyBTY29wZSh0aGlzLnNsb3RzLnNsaWNlKCksIHRoaXMuY2FsbGVyU2NvcGUsIHRoaXMuZXZhbFNjb3BlLCB0aGlzLnBhcnRpYWxNYXApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQ8VD4oaW5kZXg6IG51bWJlcik6IFQge1xuICAgIGlmIChpbmRleCA+PSB0aGlzLnNsb3RzLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYEJVRzogY2Fubm90IGdldCAkJHtpbmRleH0gZnJvbSBzY29wZTsgbGVuZ3RoPSR7dGhpcy5zbG90cy5sZW5ndGh9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc2xvdHNbaW5kZXhdIGFzIGFueSBhcyBUO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXQ8VD4oaW5kZXg6IG51bWJlciwgdmFsdWU6IFQpOiB2b2lkIHtcbiAgICBpZiAoaW5kZXggPj0gdGhpcy5zbG90cy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKGBCVUc6IGNhbm5vdCBnZXQgJCR7aW5kZXh9IGZyb20gc2NvcGU7IGxlbmd0aD0ke3RoaXMuc2xvdHMubGVuZ3RofWApO1xuICAgIH1cblxuICAgIHRoaXMuc2xvdHNbaW5kZXhdID0gdmFsdWUgYXMgYW55O1xuICB9XG59XG5cbmNsYXNzIFRyYW5zYWN0aW9uIHtcbiAgcHVibGljIHNjaGVkdWxlZEluc3RhbGxNYW5hZ2VyczogTW9kaWZpZXJNYW5hZ2VyPE9wYXF1ZT5bXSA9IFtdO1xuICBwdWJsaWMgc2NoZWR1bGVkSW5zdGFsbE1vZGlmaWVyczogT2JqZWN0W10gPSBbXTtcbiAgcHVibGljIHNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVyTWFuYWdlcnM6IE1vZGlmaWVyTWFuYWdlcjxPcGFxdWU+W10gPSBbXTtcbiAgcHVibGljIHNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVyczogT2JqZWN0W10gPSBbXTtcbiAgcHVibGljIGNyZWF0ZWRDb21wb25lbnRzOiBDb21wb25lbnRbXSA9IFtdO1xuICBwdWJsaWMgY3JlYXRlZE1hbmFnZXJzOiBDb21wb25lbnRNYW5hZ2VyPENvbXBvbmVudD5bXSA9IFtdO1xuICBwdWJsaWMgdXBkYXRlZENvbXBvbmVudHM6IENvbXBvbmVudFtdID0gW107XG4gIHB1YmxpYyB1cGRhdGVkTWFuYWdlcnM6IENvbXBvbmVudE1hbmFnZXI8Q29tcG9uZW50PltdID0gW107XG4gIHB1YmxpYyBkZXN0cnVjdG9yczogRGVzdHJveWFibGVbXSA9IFtdO1xuXG4gIGRpZENyZWF0ZTxUPihjb21wb25lbnQ6IFQsIG1hbmFnZXI6IENvbXBvbmVudE1hbmFnZXI8VD4pIHtcbiAgICB0aGlzLmNyZWF0ZWRDb21wb25lbnRzLnB1c2goY29tcG9uZW50KTtcbiAgICB0aGlzLmNyZWF0ZWRNYW5hZ2Vycy5wdXNoKG1hbmFnZXIpO1xuICB9XG5cbiAgZGlkVXBkYXRlPFQ+KGNvbXBvbmVudDogVCwgbWFuYWdlcjogQ29tcG9uZW50TWFuYWdlcjxUPikge1xuICAgIHRoaXMudXBkYXRlZENvbXBvbmVudHMucHVzaChjb21wb25lbnQpO1xuICAgIHRoaXMudXBkYXRlZE1hbmFnZXJzLnB1c2gobWFuYWdlcik7XG4gIH1cblxuICBzY2hlZHVsZUluc3RhbGxNb2RpZmllcjxUPihtb2RpZmllcjogVCwgbWFuYWdlcjogTW9kaWZpZXJNYW5hZ2VyPFQ+KSB7XG4gICAgdGhpcy5zY2hlZHVsZWRJbnN0YWxsTWFuYWdlcnMucHVzaChtYW5hZ2VyKTtcbiAgICB0aGlzLnNjaGVkdWxlZEluc3RhbGxNb2RpZmllcnMucHVzaChtb2RpZmllcik7XG4gIH1cblxuICBzY2hlZHVsZVVwZGF0ZU1vZGlmaWVyPFQ+KG1vZGlmaWVyOiBULCBtYW5hZ2VyOiBNb2RpZmllck1hbmFnZXI8VD4pIHtcbiAgICB0aGlzLnNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVyTWFuYWdlcnMucHVzaChtYW5hZ2VyKTtcbiAgICB0aGlzLnNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcbiAgfVxuXG4gIGRpZERlc3Ryb3koZDogRGVzdHJveWFibGUpIHtcbiAgICB0aGlzLmRlc3RydWN0b3JzLnB1c2goZCk7XG4gIH1cblxuICBjb21taXQoKSB7XG4gICAgbGV0IHsgY3JlYXRlZENvbXBvbmVudHMsIGNyZWF0ZWRNYW5hZ2VycyB9ID0gdGhpcztcblxuICAgIGZvciAobGV0IGk9MDsgaTxjcmVhdGVkQ29tcG9uZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IGNvbXBvbmVudCA9IGNyZWF0ZWRDb21wb25lbnRzW2ldO1xuICAgICAgbGV0IG1hbmFnZXIgPSBjcmVhdGVkTWFuYWdlcnNbaV07XG4gICAgICBtYW5hZ2VyLmRpZENyZWF0ZShjb21wb25lbnQpO1xuICAgIH1cblxuICAgIGxldCB7IHVwZGF0ZWRDb21wb25lbnRzLCB1cGRhdGVkTWFuYWdlcnMgfSA9IHRoaXM7XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8dXBkYXRlZENvbXBvbmVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBjb21wb25lbnQgPSB1cGRhdGVkQ29tcG9uZW50c1tpXTtcbiAgICAgIGxldCBtYW5hZ2VyID0gdXBkYXRlZE1hbmFnZXJzW2ldO1xuICAgICAgbWFuYWdlci5kaWRVcGRhdGUoY29tcG9uZW50KTtcbiAgICB9XG5cbiAgICBsZXQgeyBkZXN0cnVjdG9ycyB9ID0gdGhpcztcblxuICAgIGZvciAobGV0IGk9MDsgaTxkZXN0cnVjdG9ycy5sZW5ndGg7IGkrKykge1xuICAgICAgZGVzdHJ1Y3RvcnNbaV0uZGVzdHJveSgpO1xuICAgIH1cblxuICAgIGxldCB7IHNjaGVkdWxlZEluc3RhbGxNYW5hZ2Vycywgc2NoZWR1bGVkSW5zdGFsbE1vZGlmaWVycyB9ID0gdGhpcztcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2NoZWR1bGVkSW5zdGFsbE1hbmFnZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgbWFuYWdlciA9IHNjaGVkdWxlZEluc3RhbGxNYW5hZ2Vyc1tpXTtcbiAgICAgIGxldCBtb2RpZmllciA9IHNjaGVkdWxlZEluc3RhbGxNb2RpZmllcnNbaV07XG4gICAgICBtYW5hZ2VyLmluc3RhbGwobW9kaWZpZXIpO1xuICAgIH1cblxuICAgIGxldCB7IHNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVyTWFuYWdlcnMsIHNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVycyB9ID0gdGhpcztcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJNYW5hZ2Vycy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IG1hbmFnZXIgPSBzY2hlZHVsZWRVcGRhdGVNb2RpZmllck1hbmFnZXJzW2ldO1xuICAgICAgbGV0IG1vZGlmaWVyID0gc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJzW2ldO1xuICAgICAgbWFuYWdlci51cGRhdGUobW9kaWZpZXIpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT3Bjb2RlIHtcbiAgcHVibGljIG9mZnNldCA9IDA7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXJyYXk6IFVpbnQzMkFycmF5IHwgQXJyYXk8bnVtYmVyPikge31cblxuICBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5hcnJheVt0aGlzLm9mZnNldF07XG4gIH1cblxuICBnZXQgb3AxKCkge1xuICAgIHJldHVybiB0aGlzLmFycmF5W3RoaXMub2Zmc2V0ICsgMV07XG4gIH1cblxuICBnZXQgb3AyKCkge1xuICAgIHJldHVybiB0aGlzLmFycmF5W3RoaXMub2Zmc2V0ICsgMl07XG4gIH1cblxuICBnZXQgb3AzKCkge1xuICAgIHJldHVybiB0aGlzLmFycmF5W3RoaXMub2Zmc2V0ICsgM107XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFByb2dyYW0ge1xuICBba2V5OiBudW1iZXJdOiBuZXZlcjtcblxuICBwcml2YXRlIG9wY29kZXM6IG51bWJlcltdID0gW107XG4gIHByaXZhdGUgX29mZnNldCA9IDA7XG4gIHByaXZhdGUgX29wY29kZTogT3Bjb2RlO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX29wY29kZSA9IG5ldyBPcGNvZGUodGhpcy5vcGNvZGVzKTtcbiAgfVxuXG4gIGdldCBuZXh0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX29mZnNldDtcbiAgfVxuXG4gIGdldCBjdXJyZW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX29mZnNldCAtIDQ7XG4gIH1cblxuICBvcGNvZGUob2Zmc2V0OiBudW1iZXIpOiBPcGNvZGUge1xuICAgIHRoaXMuX29wY29kZS5vZmZzZXQgPSBvZmZzZXQ7XG4gICAgcmV0dXJuIHRoaXMuX29wY29kZTtcbiAgfVxuXG4gIHNldChwb3M6IG51bWJlciwgdHlwZTogbnVtYmVyLCBvcDEgPSAwLCBvcDIgPSAwLCBvcDMgPSAwKSB7XG4gICAgdGhpcy5vcGNvZGVzW3Bvc10gPSB0eXBlO1xuICAgIHRoaXMub3Bjb2Rlc1twb3MgKyAxXSA9IG9wMTtcbiAgICB0aGlzLm9wY29kZXNbcG9zICsgMl0gPSBvcDI7XG4gICAgdGhpcy5vcGNvZGVzW3BvcyArIDNdID0gb3AzO1xuICB9XG5cbiAgcHVzaCh0eXBlOiBudW1iZXIsIG9wMSA9IDAsIG9wMiA9IDAsIG9wMyA9IDApOiBudW1iZXIge1xuICAgIGxldCBvZmZzZXQgPSB0aGlzLl9vZmZzZXQ7XG4gICAgdGhpcy5vcGNvZGVzW3RoaXMuX29mZnNldCsrXSA9IHR5cGU7XG4gICAgdGhpcy5vcGNvZGVzW3RoaXMuX29mZnNldCsrXSA9IG9wMTtcbiAgICB0aGlzLm9wY29kZXNbdGhpcy5fb2Zmc2V0KytdID0gb3AyO1xuICAgIHRoaXMub3Bjb2Rlc1t0aGlzLl9vZmZzZXQrK10gPSBvcDM7XG4gICAgcmV0dXJuIG9mZnNldDtcbiAgfVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRW52aXJvbm1lbnQge1xuICBwcm90ZWN0ZWQgdXBkYXRlT3BlcmF0aW9uczogRE9NQ2hhbmdlcztcbiAgcHJvdGVjdGVkIGFwcGVuZE9wZXJhdGlvbnM6IERPTVRyZWVDb25zdHJ1Y3Rpb247XG4gIHByaXZhdGUgX21hY3JvczogT3B0aW9uPHsgYmxvY2tzOiBCbG9ja3MsIGlubGluZXM6IElubGluZXMgfT4gPSBudWxsO1xuICBwcml2YXRlIF90cmFuc2FjdGlvbjogT3B0aW9uPFRyYW5zYWN0aW9uPiA9IG51bGw7XG4gIHB1YmxpYyBjb25zdGFudHM6IENvbnN0YW50cyA9IG5ldyBDb25zdGFudHMoKTtcbiAgcHVibGljIHByb2dyYW0gPSBuZXcgUHJvZ3JhbSgpO1xuXG4gIGNvbnN0cnVjdG9yKHsgYXBwZW5kT3BlcmF0aW9ucywgdXBkYXRlT3BlcmF0aW9ucyB9OiB7IGFwcGVuZE9wZXJhdGlvbnM6IERPTVRyZWVDb25zdHJ1Y3Rpb24sIHVwZGF0ZU9wZXJhdGlvbnM6IERPTUNoYW5nZXMgfSkge1xuICAgIHRoaXMuYXBwZW5kT3BlcmF0aW9ucyA9IGFwcGVuZE9wZXJhdGlvbnM7XG4gICAgdGhpcy51cGRhdGVPcGVyYXRpb25zID0gdXBkYXRlT3BlcmF0aW9ucztcbiAgfVxuXG4gIHRvQ29uZGl0aW9uYWxSZWZlcmVuY2UocmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPik6IFJlZmVyZW5jZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG5ldyBDb25kaXRpb25hbFJlZmVyZW5jZShyZWZlcmVuY2UpO1xuICB9XG5cbiAgYWJzdHJhY3QgaXRlcmFibGVGb3IocmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPiwga2V5OiBzdHJpbmcpOiBPcGFxdWVJdGVyYWJsZTtcbiAgYWJzdHJhY3QgcHJvdG9jb2xGb3JVUkwoczogc3RyaW5nKTogc3RyaW5nO1xuXG4gIGdldEFwcGVuZE9wZXJhdGlvbnMoKTogRE9NVHJlZUNvbnN0cnVjdGlvbiB7IHJldHVybiB0aGlzLmFwcGVuZE9wZXJhdGlvbnM7IH1cbiAgZ2V0RE9NKCk6IERPTUNoYW5nZXMgeyByZXR1cm4gdGhpcy51cGRhdGVPcGVyYXRpb25zOyB9XG5cbiAgZ2V0SWRlbnRpdHkob2JqZWN0OiBIYXNHdWlkKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZW5zdXJlR3VpZChvYmplY3QpICsgJyc7XG4gIH1cblxuICBiZWdpbigpIHtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgdHJhbnNhY3Rpb24oKTogVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbjtcbiAgfVxuXG4gIGRpZENyZWF0ZTxUPihjb21wb25lbnQ6IFQsIG1hbmFnZXI6IENvbXBvbmVudE1hbmFnZXI8VD4pIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLmRpZENyZWF0ZShjb21wb25lbnQsIG1hbmFnZXIpO1xuICB9XG5cbiAgZGlkVXBkYXRlPFQ+KGNvbXBvbmVudDogVCwgbWFuYWdlcjogQ29tcG9uZW50TWFuYWdlcjxUPikge1xuICAgIHRoaXMudHJhbnNhY3Rpb24uZGlkVXBkYXRlKGNvbXBvbmVudCwgbWFuYWdlcik7XG4gIH1cblxuICBzY2hlZHVsZUluc3RhbGxNb2RpZmllcjxUPihtb2RpZmllcjogVCwgbWFuYWdlcjogTW9kaWZpZXJNYW5hZ2VyPFQ+KSB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zY2hlZHVsZUluc3RhbGxNb2RpZmllcihtb2RpZmllciwgbWFuYWdlcik7XG4gIH1cblxuICBzY2hlZHVsZVVwZGF0ZU1vZGlmaWVyPFQ+KG1vZGlmaWVyOiBULCBtYW5hZ2VyOiBNb2RpZmllck1hbmFnZXI8VD4pIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNjaGVkdWxlVXBkYXRlTW9kaWZpZXIobW9kaWZpZXIsIG1hbmFnZXIpO1xuICB9XG5cbiAgZGlkRGVzdHJveShkOiBEZXN0cm95YWJsZSkge1xuICAgIHRoaXMudHJhbnNhY3Rpb24uZGlkRGVzdHJveShkKTtcbiAgfVxuXG4gIGNvbW1pdCgpIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLmNvbW1pdCgpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gbnVsbDtcbiAgfVxuXG4gIGF0dHJpYnV0ZUZvcihlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgYXR0cjogc3RyaW5nLCBpc1RydXN0aW5nOiBib29sZWFuLCBuYW1lc3BhY2U/OiBzdHJpbmcpOiBBdHRyaWJ1dGVNYW5hZ2VyIHtcbiAgICByZXR1cm4gZGVmYXVsdE1hbmFnZXJzKGVsZW1lbnQsIGF0dHIsIGlzVHJ1c3RpbmcsIG5hbWVzcGFjZSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IG5hbWVzcGFjZSk7XG4gIH1cblxuICBtYWNyb3MoKTogeyBibG9ja3M6IEJsb2NrcywgaW5saW5lczogSW5saW5lcyB9IHtcbiAgICBsZXQgbWFjcm9zID0gdGhpcy5fbWFjcm9zO1xuICAgIGlmICghbWFjcm9zKSB7XG4gICAgICB0aGlzLl9tYWNyb3MgPSBtYWNyb3MgPSB0aGlzLnBvcHVsYXRlQnVpbHRpbnMoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWFjcm9zO1xuICB9XG5cbiAgcG9wdWxhdGVCdWlsdGlucygpOiB7IGJsb2NrczogQmxvY2tzLCBpbmxpbmVzOiBJbmxpbmVzIH0ge1xuICAgIHJldHVybiBwb3B1bGF0ZUJ1aWx0aW5zKCk7XG4gIH1cblxuICBhYnN0cmFjdCBoYXNIZWxwZXIoaGVscGVyTmFtZTogc3RyaW5nLCBtZXRhOiBUZW1wbGF0ZU1ldGEpOiBib29sZWFuO1xuICBhYnN0cmFjdCBsb29rdXBIZWxwZXIoaGVscGVyTmFtZTogc3RyaW5nLCBtZXRhOiBUZW1wbGF0ZU1ldGEpOiBIZWxwZXI7XG5cbiAgYWJzdHJhY3QgaGFzTW9kaWZpZXIobW9kaWZpZXJOYW1lOiBzdHJpbmcsIG1ldGE6IFRlbXBsYXRlTWV0YSk6IGJvb2xlYW47XG4gIGFic3RyYWN0IGxvb2t1cE1vZGlmaWVyKG1vZGlmaWVyTmFtZTogc3RyaW5nLCBtZXRhOiBUZW1wbGF0ZU1ldGEpOiBNb2RpZmllck1hbmFnZXI8T3BhcXVlPjtcblxuICBhYnN0cmFjdCBoYXNDb21wb25lbnREZWZpbml0aW9uKHRhZ05hbWU6IHN0cmluZywgbWV0YTogVGVtcGxhdGVNZXRhKTogYm9vbGVhbjtcbiAgYWJzdHJhY3QgZ2V0Q29tcG9uZW50RGVmaW5pdGlvbih0YWdOYW1lOiBzdHJpbmcsIG1ldGE6IFRlbXBsYXRlTWV0YSk6IENvbXBvbmVudERlZmluaXRpb248T3BhcXVlPjtcblxuICBhYnN0cmFjdCBoYXNQYXJ0aWFsKHBhcnRpYWxOYW1lOiBzdHJpbmcsIG1ldGE6IFRlbXBsYXRlTWV0YSk6IGJvb2xlYW47XG4gIGFic3RyYWN0IGxvb2t1cFBhcnRpYWwoUGFydGlhbE5hbWU6IHN0cmluZywgbWV0YTogVGVtcGxhdGVNZXRhKTogUGFydGlhbERlZmluaXRpb248VGVtcGxhdGVNZXRhPjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgRW52aXJvbm1lbnQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGVscGVyIHtcbiAgKHZtOiBQdWJsaWNWTSwgYXJnczogSUFyZ3VtZW50cyk6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPjtcbn1cbiJdfQ==

@@ -21,4 +21,2 @@ "use strict";

var _opcodes = require("./opcodes");
var _functions = require("./syntax/functions");

@@ -74,3 +72,2 @@

var end = _builder.finalize();
(0, _opcodes.debugSlice)(env, start, end);
compiledStatic = this.compiledStatic = new _blocks.CompiledStaticTemplate(start, end);

@@ -91,6 +88,2 @@ }

CompilableTemplate.prototype.toJSON = function toJSON() {
return { GlimmerDebug: '<template>' };
};
return CompilableTemplate;

@@ -269,2 +262,2 @@ }();

}(RawBlock);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNjYW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLEFBQU8sQUFBRSxBQUF1QixBQUFFLEFBQXNCLEFBQUUsQUFBTSxBQUFtQixBQUFDOztBQUNwRixBQUFPLEFBQUUsQUFBTyxBQUFFLEFBQU0sQUFBWSxBQUFDOztBQUdyQyxBQUFPLEFBQVUsQUFBVyxBQUFFLEFBQU0sQUFBZSxBQUFDOztBQUNwRCxBQUFPOztJQUFLLEFBQVUsQUFBTSxBQUFzQixBQUFDOztBQUVuRCxBQUFPLEFBQUUsQUFBVSxBQUFFLEFBQU0sQUFBVyxBQUFDOztBQUd2QyxBQUFPLEFBQ0wsQUFBVSxBQUNYLEFBQU0sQUFBb0IsQUFBQyxBQUk1QixBQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MEJBQTJCLEFBQStCLFdBQUUsQUFBc0IsU0FDdEYsQUFBVTswQkFBQyxBQUFPLFFBQUMsQUFBUyxXQUFFLEFBQU8sQUFBQyxBQUFDLEFBQ3pDLEFBQUM7QUFPRCxBQUFNO2tFQUlKO2dDQUFtQixBQUFrQyxZQUFTLEFBQWM7OEJBQXpEOzthQUFVLGFBQVYsQUFBVSxBQUF3QixBQUFTO2FBQVcsY0FBWCxBQUFXLEFBQUcsQUFIcEU7YUFBYyxpQkFBbUMsQUFBSSxBQUFDLEFBQ3REO2FBQWUsa0JBQXVDLEFBQUksQUFBQyxBQUVZLEFBQUM7OztpQ0FFaEYsQUFBYSx1Q0FBQyxBQUFnQixLQUM1QixBQUFJO1lBQUUsQUFBYyxBQUFFLGlCQUFHLEFBQUksQUFBQyxLQUU5QixBQUFFLEFBQUM7O1lBQUMsQ0FBQyxBQUFjLEFBQUMsZ0JBQUMsQUFBQyxBQUNwQjtnQkFBSSxBQUFPLFdBQUcsQUFBaUIsa0JBQUMsQUFBSSxLQUFDLEFBQVUsWUFBRSxBQUFJLEtBQUMsQUFBVyxZQUFDLEFBQUksTUFBRSxBQUFHLEFBQUMsQUFBQyxBQUU3RTtnQkFBSSxBQUFLLFFBQUcsQUFBTyxTQUFD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QUFBZ0I7OztzREFDMUksQUFBSyxzQkFBQyxBQUFHLEtBQUUsQUFBSSxNQUFFLEFBQVUsQUFBQyxBQUFDLEFBRGtFOztlQUFPLFVBQVAsQUFBTyxBQUFVLEFBQVU7ZUFBTyxVQUFQLEFBQU8sQUFBUyxBQUU1STtlQUFDOzs7eUJBRUQsQUFBSSx1QkFDRjtZQUFJLEFBQVUsYUFBRyxBQUFJLEtBQUMsQUFBYyxBQUFFLEFBQUMsQUFDdkMsQUFBTTtlQUFDLElBQUksQUFBa0IsbUJBQUMsQUFBVSxZQUFFLEVBQUUsQUFBTyxTQUFFLEFBQUksS0FBQyxBQUFPLFNBQUUsQUFBTyxTQUFFLEFBQUksS0FBQyxBQUFPLFNBQUUsQUFBSSxNQUFFLEFBQUksS0FBQyxBQUFJLEFBQUUsQUFBQyxBQUFDLEFBQy9HLEFBQUMsQUFDRjs7OztFQVQrQixBQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBpbGVkRHluYW1pY1RlbXBsYXRlLCBDb21waWxlZFN0YXRpY1RlbXBsYXRlIH0gZnJvbSAnLi9jb21waWxlZC9ibG9ja3MnO1xuaW1wb3J0IHsgYnVpbGRlciB9IGZyb20gJy4vY29tcGlsZXInO1xuaW1wb3J0IE9wY29kZUJ1aWxkZXIgZnJvbSAnLi9jb21waWxlZC9vcGNvZGVzL2J1aWxkZXInO1xuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgT3B0aW9uLCBFTVBUWV9BUlJBWSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0ICogYXMgV2lyZUZvcm1hdCBmcm9tICdAZ2xpbW1lci93aXJlLWZvcm1hdCc7XG5pbXBvcnQgeyBPcGFxdWUsIFN5bWJvbFRhYmxlLCBQcm9ncmFtU3ltYm9sVGFibGUsIEJsb2NrU3ltYm9sVGFibGUgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGRlYnVnU2xpY2UgfSBmcm9tICcuL29wY29kZXMnO1xuaW1wb3J0IHsgQ29tcGlsYXRpb25NZXRhIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5cbmltcG9ydCB7XG4gIFNUQVRFTUVOVFNcbn0gZnJvbSAnLi9zeW50YXgvZnVuY3Rpb25zJztcblxuZXhwb3J0IHR5cGUgRGVzZXJpYWxpemVkU3RhdGVtZW50ID0gV2lyZUZvcm1hdC5TdGF0ZW1lbnQgfCBXaXJlRm9ybWF0LlN0YXRlbWVudHMuQXR0cmlidXRlIHwgV2lyZUZvcm1hdC5TdGF0ZW1lbnRzLkFyZ3VtZW50O1xuXG5leHBvcnQgZnVuY3Rpb24gY29tcGlsZVN0YXRlbWVudChzdGF0ZW1lbnQ6IFdpcmVGb3JtYXQuU3RhdGVtZW50LCBidWlsZGVyOiBPcGNvZGVCdWlsZGVyKSB7XG4gIFNUQVRFTUVOVFMuY29tcGlsZShzdGF0ZW1lbnQsIGJ1aWxkZXIpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjYW5uZWRUZW1wbGF0ZTxTIGV4dGVuZHMgU3ltYm9sVGFibGU+IHtcbiAgY29tcGlsZVN0YXRpYyhlbnY6IEVudmlyb25tZW50KTogQ29tcGlsZWRTdGF0aWNUZW1wbGF0ZTtcbiAgY29tcGlsZUR5bmFtaWMoZW52OiBFbnZpcm9ubWVudCk6IENvbXBpbGVkRHluYW1pY1RlbXBsYXRlPFM+O1xufVxuXG5leHBvcnQgY2xhc3MgQ29tcGlsYWJsZVRlbXBsYXRlPFMgZXh0ZW5kcyBTeW1ib2xUYWJsZT4gaW1wbGVtZW50cyBTY2FubmVkVGVtcGxhdGU8Uz4ge1xuICBwcml2YXRlIGNvbXBpbGVkU3RhdGljOiBPcHRpb248Q29tcGlsZWRTdGF0aWNUZW1wbGF0ZT4gPSBudWxsO1xuICBwcml2YXRlIGNvbXBpbGVkRHluYW1pYzogT3B0aW9uPENvbXBpbGVkRHluYW1pY1RlbXBsYXRlPFM+PiA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHN0YXRlbWVudHM6IFdpcmVGb3JtYXQuU3RhdGVtZW50W10sIHB1YmxpYyBzeW1ib2xUYWJsZTogUykge31cblxuICBjb21waWxlU3RhdGljKGVudjogRW52aXJvbm1lbnQpOiBDb21waWxlZFN0YXRpY1RlbXBsYXRlIHtcbiAgICBsZXQgeyBjb21waWxlZFN0YXRpYyB9ID0gdGhpcztcblxuICAgIGlmICghY29tcGlsZWRTdGF0aWMpIHtcbiAgICAgIGxldCBidWlsZGVyID0gY29tcGlsZVN0YXRlbWVudHModGhpcy5zdGF0ZW1lbnRzLCB0aGlzLnN5bWJvbFRhYmxlLm1ldGEsIGVudik7XG5cbiAgICAgIGxldCBzdGFydCA9IGJ1aWxkZXIuc3RhcnQ7XG4gICAgICBsZXQgZW5kID0gYnVpbGRlci5maW5hbGl6ZSgpO1xuXG4gICAgICBkZWJ1Z1NsaWNlKGVudiwgc3RhcnQsIGVuZCk7XG5cbiAgICAgIGNvbXBpbGVkU3RhdGljID0gdGhpcy5jb21waWxlZFN0YXRpYyA9IG5ldyBDb21waWxlZFN0YXRpY1RlbXBsYXRlKHN0YXJ0LCBlbmQpO1xuICAgIH1cblxuICAgIHJldHVybiBjb21waWxlZFN0YXRpYztcbiAgfVxuXG4gIGNvbXBpbGVEeW5hbWljKGVudjogRW52aXJvbm1lbnQpOiBDb21waWxlZER5bmFtaWNUZW1wbGF0ZTxTPiB7XG4gICAgbGV0IHsgY29tcGlsZWREeW5hbWljIH0gPSB0aGlzO1xuXG4gICAgaWYgKCFjb21waWxlZER5bmFtaWMpIHtcbiAgICAgIGxldCBzdGF0aWNCbG9jayA9IHRoaXMuY29tcGlsZVN0YXRpYyhlbnYpO1xuICAgICAgY29tcGlsZWREeW5hbWljID0gbmV3IENvbXBpbGVkRHluYW1pY1RlbXBsYXRlKHN0YXRpY0Jsb2NrLnN0YXJ0LCBzdGF0aWNCbG9jay5lbmQsIHRoaXMuc3ltYm9sVGFibGUpO1xuICAgIH1cblxuICAgIHJldHVybiBjb21waWxlZER5bmFtaWM7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHsgR2xpbW1lckRlYnVnOiAnPHRlbXBsYXRlPicgfTtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBUZW1wbGF0ZSA9IENvbXBpbGFibGVUZW1wbGF0ZTxTeW1ib2xUYWJsZT47XG5leHBvcnQgdHlwZSBQcm9ncmFtID0gQ29tcGlsYWJsZVRlbXBsYXRlPFByb2dyYW1TeW1ib2xUYWJsZT47XG5leHBvcnQgdHlwZSBCbG9jayA9IENvbXBpbGFibGVUZW1wbGF0ZTxCbG9ja1N5bWJvbFRhYmxlPjtcblxuZXhwb3J0IHR5cGUgU2Nhbm5lZFByb2dyYW0gPSBTY2FubmVkVGVtcGxhdGU8UHJvZ3JhbVN5bWJvbFRhYmxlPjtcbmV4cG9ydCB0eXBlIFNjYW5uZWRCbG9jayA9IFNjYW5uZWRUZW1wbGF0ZTxCbG9ja1N5bWJvbFRhYmxlPjtcblxuZnVuY3Rpb24gY29tcGlsZVN0YXRlbWVudHMoc3RhdGVtZW50czogV2lyZUZvcm1hdC5TdGF0ZW1lbnRbXSwgbWV0YTogQ29tcGlsYXRpb25NZXRhLCBlbnY6IEVudmlyb25tZW50KSB7XG4gIGxldCBiID0gYnVpbGRlcihlbnYsIG1ldGEpO1xuXG4gIGZvciAobGV0IHN0YXRlbWVudCBvZiBzdGF0ZW1lbnRzKSB7XG4gICAgY29tcGlsZVN0YXRlbWVudChzdGF0ZW1lbnQsIGIpO1xuICB9XG5cbiAgcmV0dXJuIGI7XG59XG5cbmV4cG9ydCBjb25zdCBBVFRSU19CTE9DSyA9ICcmYXR0cnMnO1xuXG5leHBvcnQgZnVuY3Rpb24gbGF5b3V0KHByZWx1ZGU6IFdpcmVGb3JtYXQuU3RhdGVtZW50W10sIGhlYWQ6IFdpcmVGb3JtYXQuU3RhdGVtZW50W10sIGJvZHk6IFdpcmVGb3JtYXQuU3RhdGVtZW50W10sIHN5bWJvbFRhYmxlOiBQcm9ncmFtU3ltYm9sVGFibGUpIHtcbiAgbGV0IFssIHRhZ10gPSBwcmVsdWRlLnBvcCgpIGFzIFdpcmVGb3JtYXQuU3RhdGVtZW50cy5PcGVuRWxlbWVudDtcbiAgcHJlbHVkZS5wdXNoKFtPcHMuQ2xpZW50U2lkZVN0YXRlbWVudCwgQ2xpZW50U2lkZS5PcHMuT3BlbkNvbXBvbmVudEVsZW1lbnQsIHRhZ10pO1xuICBwcmVsdWRlLnB1c2goW09wcy5DbGllbnRTaWRlU3RhdGVtZW50LCBDbGllbnRTaWRlLk9wcy5EaWRDcmVhdGVFbGVtZW50XSk7XG5cbiAgbGV0IGF0dHJzU3ltYm9sID0gc3ltYm9sVGFibGUuc3ltYm9scy5sZW5ndGggKyAxO1xuICBzeW1ib2xUYWJsZS5zeW1ib2xzLnB1c2goQVRUUlNfQkxPQ0spO1xuXG4gIGxldCBzdGF0ZW1lbnRzID0gcHJlbHVkZVxuICAgIC5jb25jYXQoW1tPcHMuWWllbGQsIGF0dHJzU3ltYm9sLCBFTVBUWV9BUlJBWV1dKVxuICAgIC5jb25jYXQoaGVhZClcbiAgICAuY29uY2F0KGJvZHkpXG4gICAgLmNvbmNhdChbW09wcy5DbGllbnRTaWRlU3RhdGVtZW50LCBDbGllbnRTaWRlLk9wcy5EaWRSZW5kZXJMYXlvdXRdXSk7XG5cbiAgcmV0dXJuIG5ldyBDb21waWxhYmxlVGVtcGxhdGUoc3RhdGVtZW50cywgc3ltYm9sVGFibGUpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTY2FubmVyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBibG9jazogV2lyZUZvcm1hdC5TZXJpYWxpemVkVGVtcGxhdGVCbG9jaywgcHJpdmF0ZSBlbnY6IEVudmlyb25tZW50KSB7XG4gIH1cblxuICBzY2FuRW50cnlQb2ludChtZXRhOiBDb21waWxhdGlvbk1ldGEpOiBQcm9ncmFtIHtcbiAgICBsZXQgeyBibG9jaywgZW52IH0gPSB0aGlzO1xuXG4gICAgbGV0IHN0YXRlbWVudHM7XG4gICAgaWYgKGJsb2NrLnByZWx1ZGUgJiYgYmxvY2suaGVhZCkge1xuICAgICAgc3RhdGVtZW50cyA9IGJsb2NrLnByZWx1ZGUuY29uY2F0KGJsb2NrLmhlYWQpLmNvbmNhdChibG9jay5zdGF0ZW1lbnRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGVtZW50cyA9IGJsb2NrLnN0YXRlbWVudHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBSYXdQcm9ncmFtKGVudiwgbWV0YSwgc3RhdGVtZW50cywgYmxvY2suc3ltYm9scywgYmxvY2suaGFzRXZhbCkuc2NhbigpO1xuICB9XG5cbiAgc2NhbkJsb2NrKG1ldGE6IENvbXBpbGF0aW9uTWV0YSk6IEJsb2NrIHtcbiAgICBsZXQgeyBibG9jaywgZW52IH0gPSB0aGlzO1xuXG4gICAgbGV0IHN0YXRlbWVudHM7XG4gICAgaWYgKGJsb2NrLnByZWx1ZGUgJiYgYmxvY2suaGVhZCkge1xuICAgICAgc3RhdGVtZW50cyA9IGJsb2NrLnByZWx1ZGUuY29uY2F0KGJsb2NrLmhlYWQpLmNvbmNhdChibG9jay5zdGF0ZW1lbnRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGVtZW50cyA9IGJsb2NrLnN0YXRlbWVudHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBSYXdJbmxpbmVCbG9jayhlbnYsIG1ldGEsIHN0YXRlbWVudHMsIEVNUFRZX0FSUkFZKS5zY2FuKCk7XG4gIH1cblxuICBzY2FuTGF5b3V0KG1ldGE6IENvbXBpbGF0aW9uTWV0YSwgYXR0cnM6IFdpcmVGb3JtYXQuU3RhdGVtZW50cy5BdHRyaWJ1dGVbXSk6IFByb2dyYW0ge1xuICAgIGxldCB7IGJsb2NrIH0gPSB0aGlzO1xuICAgIGxldCB7IHN5bWJvbHMsIGhhc0V2YWwgfSA9IGJsb2NrO1xuXG4gICAgaWYgKCFibG9jay5wcmVsdWRlIHx8ICFibG9jay5oZWFkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEEgbGF5b3V0IG11c3QgaGF2ZSBhIHRvcC1sZXZlbCBlbGVtZW50YCk7XG4gICAgfVxuXG4gICAgbGV0IHN5bWJvbFRhYmxlID0geyBtZXRhLCBoYXNFdmFsLCBzeW1ib2xzIH07XG4gICAgbGV0IHsgc3RhdGVtZW50czogcHJlbHVkZSB9ID0gc2NhbkJsb2NrKHsgc3RhdGVtZW50czogYmxvY2sucHJlbHVkZSwgcGFyYW1ldGVyczogRU1QVFlfQVJSQVkgfSwgbWV0YSwgdGhpcy5lbnYpO1xuICAgIGxldCB7IHN0YXRlbWVudHM6IGhlYWQgfSA9IHNjYW5CbG9jayh7IHN0YXRlbWVudHM6IFsuLi5hdHRycywgLi4uYmxvY2suaGVhZF0sIHBhcmFtZXRlcnM6IEVNUFRZX0FSUkFZIH0sIG1ldGEsIHRoaXMuZW52KTtcbiAgICBsZXQgeyBzdGF0ZW1lbnRzOiBib2R5IH0gPSBzY2FuQmxvY2soeyBzdGF0ZW1lbnRzOiBibG9jay5zdGF0ZW1lbnRzLCBwYXJhbWV0ZXJzOiBFTVBUWV9BUlJBWSB9LCBtZXRhLCB0aGlzLmVudik7XG5cbiAgICByZXR1cm4gbGF5b3V0KHByZWx1ZGUsIGhlYWQsIGJvZHksIHN5bWJvbFRhYmxlKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2NhbkJsb2NrKGJsb2NrOiBXaXJlRm9ybWF0LlNlcmlhbGl6ZWRJbmxpbmVCbG9jaywgbWV0YTogQ29tcGlsYXRpb25NZXRhLCBlbnY6IEVudmlyb25tZW50KTogQmxvY2sge1xuICByZXR1cm4gbmV3IFJhd0lubGluZUJsb2NrKGVudiwgbWV0YSwgYmxvY2suc3RhdGVtZW50cywgRU1QVFlfQVJSQVkpLnNjYW4oKTtcbn1cblxuaW1wb3J0IHsgUHVibGljVk0gfSBmcm9tICcuL3ZtJztcbmltcG9ydCB7IFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuXG5leHBvcnQgbmFtZXNwYWNlIENsaWVudFNpZGUge1xuICBleHBvcnQgZW51bSBPcHMge1xuICAgIE9wZW5Db21wb25lbnRFbGVtZW50LFxuICAgIERpZENyZWF0ZUVsZW1lbnQsXG4gICAgRGlkUmVuZGVyTGF5b3V0LFxuICAgIE9wdGltaXplZEFwcGVuZCxcbiAgICBVbm9wdGltaXplZEFwcGVuZCxcbiAgICBTdGF0aWNQYXJ0aWFsLFxuICAgIER5bmFtaWNQYXJ0aWFsLFxuICAgIE5lc3RlZEJsb2NrLFxuICAgIFNjYW5uZWRCbG9jayxcblxuICAgIEZ1bmN0aW9uRXhwcmVzc2lvblxuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzPFQgZXh0ZW5kcyBhbnlbXT4odmFyaWFudDogT3BzKTogKHZhbHVlOiBhbnlbXSkgPT4gdmFsdWUgaXMgVCB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlOiBhbnlbXSk6IHZhbHVlIGlzIFQge1xuICAgICAgcmV0dXJuIHZhbHVlWzBdID09PSBXaXJlRm9ybWF0Lk9wcy5DbGllbnRTaWRlRXhwcmVzc2lvbiB8fCB2YWx1ZVswXSA9PT0gV2lyZUZvcm1hdC5PcHMuQ2xpZW50U2lkZVN0YXRlbWVudCAmJiB2YWx1ZVsxXSA9PT0gdmFyaWFudDtcbiAgICB9O1xuICB9XG5cbiAgaW1wb3J0IENsaWVudFNpZGVTdGF0ZW1lbnQgPSBXaXJlRm9ybWF0Lk9wcy5DbGllbnRTaWRlU3RhdGVtZW50O1xuICBpbXBvcnQgQ2xpZW50U2lkZUV4cHJlc3Npb24gPSBXaXJlRm9ybWF0Lk9wcy5DbGllbnRTaWRlRXhwcmVzc2lvbjtcblxuICBleHBvcnQgdHlwZSBPcGVuQ29tcG9uZW50RWxlbWVudCAgPSBbQ2xpZW50U2lkZVN0YXRlbWVudCwgT3BzLk9wZW5Db21wb25lbnRFbGVtZW50LCBzdHJpbmddO1xuICBleHBvcnQgdHlwZSBEaWRDcmVhdGVFbGVtZW50ICAgICAgPSBbQ2xpZW50U2lkZVN0YXRlbWVudCwgT3BzLkRpZENyZWF0ZUVsZW1lbnRdO1xuICBleHBvcnQgdHlwZSBEaWRSZW5kZXJMYXlvdXQgICAgICAgPSBbQ2xpZW50U2lkZVN0YXRlbWVudCwgT3BzLkRpZFJlbmRlckxheW91dF07XG4gIGV4cG9ydCB0eXBlIE9wdGltaXplZEFwcGVuZCAgICAgICA9IFtDbGllbnRTaWRlU3RhdGVtZW50LCBPcHMuT3B0aW1pemVkQXBwZW5kLCBXaXJlRm9ybWF0LkV4cHJlc3Npb24sIGJvb2xlYW5dO1xuICBleHBvcnQgdHlwZSBVbm9wdGltaXplZEFwcGVuZCAgICAgPSBbQ2xpZW50U2lkZVN0YXRlbWVudCwgT3BzLlVub3B0aW1pemVkQXBwZW5kLCBXaXJlRm9ybWF0LkV4cHJlc3Npb24sIGJvb2xlYW5dO1xuICBleHBvcnQgdHlwZSBTdGF0aWNQYXJ0aWFsICAgICAgICAgPSBbQ2xpZW50U2lkZVN0YXRlbWVudCwgT3BzLlN0YXRpY1BhcnRpYWwsIHN0cmluZywgV2lyZUZvcm1hdC5Db3JlLkV2YWxJbmZvXTtcbiAgZXhwb3J0IHR5cGUgRHluYW1pY1BhcnRpYWwgICAgICAgID0gW0NsaWVudFNpZGVTdGF0ZW1lbnQsIE9wcy5EeW5hbWljUGFydGlhbCwgV2lyZUZvcm1hdC5FeHByZXNzaW9uLCBXaXJlRm9ybWF0LkNvcmUuRXZhbEluZm9dO1xuXG4gIGV4cG9ydCB0eXBlIEZ1bmN0aW9uRXhwcmVzc2lvbiAgICA9IFtDbGllbnRTaWRlRXhwcmVzc2lvbiwgT3BzLkZ1bmN0aW9uRXhwcmVzc2lvbiwgRnVuY3Rpb25FeHByZXNzaW9uQ2FsbGJhY2s8T3BhcXVlPl07XG5cbiAgZXhwb3J0IHR5cGUgRnVuY3Rpb25FeHByZXNzaW9uQ2FsbGJhY2s8VD4gPSAoVk06IFB1YmxpY1ZNLCBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUpID0+IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8VD47XG5cbiAgZXhwb3J0IHR5cGUgQ2xpZW50U2lkZVN0YXRlbWVudCA9XG4gICAgfCBPcGVuQ29tcG9uZW50RWxlbWVudFxuICAgIHwgRGlkQ3JlYXRlRWxlbWVudFxuICAgIHwgRGlkUmVuZGVyTGF5b3V0XG4gICAgfCBPcHRpbWl6ZWRBcHBlbmRcbiAgICB8IFVub3B0aW1pemVkQXBwZW5kXG4gICAgfCBTdGF0aWNQYXJ0aWFsXG4gICAgfCBEeW5hbWljUGFydGlhbFxuICAgIDtcblxuICBleHBvcnQgdHlwZSBDbGllbnRTaWRlRXhwcmVzc2lvbiA9XG4gICAgfCBGdW5jdGlvbkV4cHJlc3Npb25cbiAgICA7XG59XG5cbmNvbnN0IHsgT3BzIH0gPSBXaXJlRm9ybWF0O1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUmF3QmxvY2s8UyBleHRlbmRzIFN5bWJvbFRhYmxlPiB7XG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBlbnY6IEVudmlyb25tZW50LCBwcm90ZWN0ZWQgbWV0YTogQ29tcGlsYXRpb25NZXRhLCBwcml2YXRlIHN0YXRlbWVudHM6IFdpcmVGb3JtYXQuU3RhdGVtZW50W10pIHt9XG5cbiAgc2NhblN0YXRlbWVudHMoKTogV2lyZUZvcm1hdC5TdGF0ZW1lbnRbXSB7XG4gICAgbGV0IGJ1ZmZlcjogV2lyZUZvcm1hdC5TdGF0ZW1lbnRbXSA9IFtdO1xuICAgIGxldCBzdGF0ZW1lbnRzID0gdGhpcy5zdGF0ZW1lbnRzO1xuICAgIGZvciAobGV0IHN0YXRlbWVudCBvZiBzdGF0ZW1lbnRzKSB7XG4gICAgICBidWZmZXIucHVzaChzdGF0ZW1lbnQpO1xuICAgIH1cblxuICAgIHJldHVybiBidWZmZXI7XG4gIH1cblxuICBjaGlsZChibG9jazogT3B0aW9uPFdpcmVGb3JtYXQuU2VyaWFsaXplZElubGluZUJsb2NrPik6IE9wdGlvbjxSYXdJbmxpbmVCbG9jaz4ge1xuICAgIGlmICghYmxvY2spIHJldHVybiBudWxsO1xuICAgIHJldHVybiBuZXcgUmF3SW5saW5lQmxvY2sodGhpcy5lbnYsIHRoaXMubWV0YSwgYmxvY2suc3RhdGVtZW50cywgYmxvY2sucGFyYW1ldGVycyk7XG4gIH1cblxuICBhYnN0cmFjdCBzY2FuKCk6IENvbXBpbGFibGVUZW1wbGF0ZTxTPjtcbn1cblxuZXhwb3J0IGNsYXNzIFJhd0lubGluZUJsb2NrIGV4dGVuZHMgUmF3QmxvY2s8QmxvY2tTeW1ib2xUYWJsZT4ge1xuICBjb25zdHJ1Y3RvcihlbnY6IEVudmlyb25tZW50LCBtZXRhOiBDb21waWxhdGlvbk1ldGEsIHN0YXRlbWVudHM6IFdpcmVGb3JtYXQuU3RhdGVtZW50W10sIHByaXZhdGUgcGFyYW1ldGVyczogbnVtYmVyW10pIHtcbiAgICBzdXBlcihlbnYsIG1ldGEsIHN0YXRlbWVudHMpO1xuICB9XG5cbiAgc2NhbigpOiBCbG9jayB7XG4gICAgbGV0IHN0YXRlbWVudHMgPSB0aGlzLnNjYW5TdGF0ZW1lbnRzKCk7XG4gICAgcmV0dXJuIG5ldyBDb21waWxhYmxlVGVtcGxhdGUoc3RhdGVtZW50cywgeyBwYXJhbWV0ZXJzOiB0aGlzLnBhcmFtZXRlcnMsIG1ldGE6IHRoaXMubWV0YSB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUmF3UHJvZ3JhbSBleHRlbmRzIFJhd0Jsb2NrPFByb2dyYW1TeW1ib2xUYWJsZT4ge1xuICBjb25zdHJ1Y3RvcihlbnY6IEVudmlyb25tZW50LCBtZXRhOiBDb21waWxhdGlvbk1ldGEsIHN0YXRlbWVudHM6IFdpcmVGb3JtYXQuU3RhdGVtZW50W10sIHByaXZhdGUgc3ltYm9sczogc3RyaW5nW10sIHByaXZhdGUgaGFzRXZhbDogYm9vbGVhbikge1xuICAgIHN1cGVyKGVudiwgbWV0YSwgc3RhdGVtZW50cyk7XG4gIH1cblxuICBzY2FuKCk6IFByb2dyYW0ge1xuICAgIGxldCBzdGF0ZW1lbnRzID0gdGhpcy5zY2FuU3RhdGVtZW50cygpO1xuICAgIHJldHVybiBuZXcgQ29tcGlsYWJsZVRlbXBsYXRlKHN0YXRlbWVudHMsIHsgc3ltYm9sczogdGhpcy5zeW1ib2xzLCBoYXNFdmFsOiB0aGlzLmhhc0V2YWwsIG1ldGE6IHRoaXMubWV0YSB9KTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNjYW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLEFBQU8sQUFBRSxBQUF1QixBQUFFLEFBQXNCLEFBQUUsQUFBTSxBQUFtQixBQUFDOztBQUNwRixBQUFPLEFBQUUsQUFBTyxBQUFFLEFBQU0sQUFBWSxBQUFDOztBQUdyQyxBQUFPLEFBQVUsQUFBVyxBQUFFLEFBQU0sQUFBZSxBQUFDOztBQUNwRCxBQUFPOztJQUFLLEFBQVUsQUFBTSxBQUFzQixBQUFDOztBQUluRCxBQUFPLEFBQ0wsQUFBVSxBQUNYLEFBQU0sQUFBb0IsQUFBQyxBQUk1QixBQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MEJBQTJCLEFBQStCLFdBQUUsQUFBc0IsU0FDdEYsQUFBVTswQkFBQyxBQUFPLFFBQUMsQUFBUyxXQUFFLEFBQU8sQUFBQyxBQUFDLEFBQ3pDLEFBQUM7QUFPRCxBQUFNO2tFQUlKO2dDQUFtQixBQUFrQyxZQUFTLEFBQWM7OEJBQXpEOzthQUFVLGFBQVYsQUFBVSxBQUF3QixBQUFTO2FBQVcsY0FBWCxBQUFXLEFBQUcsQUFIcEU7YUFBYyxpQkFBbUMsQUFBSSxBQUFDLEFBQ3REO2FBQWUsa0JBQXVDLEFBQUksQUFBQyxBQUVZLEFBQUM7OztpQ0FFaEYsQUFBYSx1Q0FBQyxBQUFnQixLQUM1QixBQUFJO1lBQUUsQUFBYyxBQUFFLGlCQUFHLEFBQUksQUFBQyxLQUU5QixBQUFFLEFBQUM7O1lBQUMsQ0FBQyxBQUFjLEFBQUMsZ0JBQUMsQUFBQyxBQUNwQjtnQkFBSSxBQUFPLFdBQUcsQUFBaUIsa0JBQUMsQUFBSSxLQUFDLEFBQVUsWUFBRSxBQUFJLEtBQUMsQUFBVyxZQUFDLEFBQUksTUFBRSxBQUFHLEFBQUMsQUFBQyxBQUU3RTtnQkFBSSxBQUFLLFFBQUcsQUFBTyxTQUFDLEFBQUssQUFBQyxBQUMxQjtnQkFBSSxBQUFHLE1BQUcsQUFBTyxTQUFD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QUFDLEFBQWMsQUFBRSxBQUFDLEFBQ3ZDLEFBQU07ZUFBQyxJQUFJLEFBQWtCLG1CQUFDLEFBQVUsWUFBRSxFQUFFLEFBQU8sU0FBRSxBQUFJLEtBQUMsQUFBTyxTQUFFLEFBQU8sU0FBRSxBQUFJLEtBQUMsQUFBTyxTQUFFLEFBQUksTUFBRSxBQUFJLEtBQUMsQUFBSSxBQUFFLEFBQUMsQUFBQyxBQUMvRyxBQUFDLEFBQ0Y7Ozs7RUFUK0IsQUFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21waWxlZER5bmFtaWNUZW1wbGF0ZSwgQ29tcGlsZWRTdGF0aWNUZW1wbGF0ZSB9IGZyb20gJy4vY29tcGlsZWQvYmxvY2tzJztcbmltcG9ydCB7IGJ1aWxkZXIgfSBmcm9tICcuL2NvbXBpbGVyJztcbmltcG9ydCBPcGNvZGVCdWlsZGVyIGZyb20gJy4vY29tcGlsZWQvb3Bjb2Rlcy9idWlsZGVyJztcbmltcG9ydCBFbnZpcm9ubWVudCBmcm9tICcuL2Vudmlyb25tZW50JztcbmltcG9ydCB7IE9wdGlvbiwgRU1QVFlfQVJSQVkgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCAqIGFzIFdpcmVGb3JtYXQgZnJvbSAnQGdsaW1tZXIvd2lyZS1mb3JtYXQnO1xuaW1wb3J0IHsgT3BhcXVlLCBTeW1ib2xUYWJsZSwgUHJvZ3JhbVN5bWJvbFRhYmxlLCBCbG9ja1N5bWJvbFRhYmxlIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBDb21waWxhdGlvbk1ldGEgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcblxuaW1wb3J0IHtcbiAgU1RBVEVNRU5UU1xufSBmcm9tICcuL3N5bnRheC9mdW5jdGlvbnMnO1xuXG5leHBvcnQgdHlwZSBEZXNlcmlhbGl6ZWRTdGF0ZW1lbnQgPSBXaXJlRm9ybWF0LlN0YXRlbWVudCB8IFdpcmVGb3JtYXQuU3RhdGVtZW50cy5BdHRyaWJ1dGUgfCBXaXJlRm9ybWF0LlN0YXRlbWVudHMuQXJndW1lbnQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21waWxlU3RhdGVtZW50KHN0YXRlbWVudDogV2lyZUZvcm1hdC5TdGF0ZW1lbnQsIGJ1aWxkZXI6IE9wY29kZUJ1aWxkZXIpIHtcbiAgU1RBVEVNRU5UUy5jb21waWxlKHN0YXRlbWVudCwgYnVpbGRlcik7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2Nhbm5lZFRlbXBsYXRlPFMgZXh0ZW5kcyBTeW1ib2xUYWJsZT4ge1xuICBjb21waWxlU3RhdGljKGVudjogRW52aXJvbm1lbnQpOiBDb21waWxlZFN0YXRpY1RlbXBsYXRlO1xuICBjb21waWxlRHluYW1pYyhlbnY6IEVudmlyb25tZW50KTogQ29tcGlsZWREeW5hbWljVGVtcGxhdGU8Uz47XG59XG5cbmV4cG9ydCBjbGFzcyBDb21waWxhYmxlVGVtcGxhdGU8UyBleHRlbmRzIFN5bWJvbFRhYmxlPiBpbXBsZW1lbnRzIFNjYW5uZWRUZW1wbGF0ZTxTPiB7XG4gIHByaXZhdGUgY29tcGlsZWRTdGF0aWM6IE9wdGlvbjxDb21waWxlZFN0YXRpY1RlbXBsYXRlPiA9IG51bGw7XG4gIHByaXZhdGUgY29tcGlsZWREeW5hbWljOiBPcHRpb248Q29tcGlsZWREeW5hbWljVGVtcGxhdGU8Uz4+ID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgc3RhdGVtZW50czogV2lyZUZvcm1hdC5TdGF0ZW1lbnRbXSwgcHVibGljIHN5bWJvbFRhYmxlOiBTKSB7fVxuXG4gIGNvbXBpbGVTdGF0aWMoZW52OiBFbnZpcm9ubWVudCk6IENvbXBpbGVkU3RhdGljVGVtcGxhdGUge1xuICAgIGxldCB7IGNvbXBpbGVkU3RhdGljIH0gPSB0aGlzO1xuXG4gICAgaWYgKCFjb21waWxlZFN0YXRpYykge1xuICAgICAgbGV0IGJ1aWxkZXIgPSBjb21waWxlU3RhdGVtZW50cyh0aGlzLnN0YXRlbWVudHMsIHRoaXMuc3ltYm9sVGFibGUubWV0YSwgZW52KTtcblxuICAgICAgbGV0IHN0YXJ0ID0gYnVpbGRlci5zdGFydDtcbiAgICAgIGxldCBlbmQgPSBidWlsZGVyLmZpbmFsaXplKCk7XG5cbiAgICAgIGNvbXBpbGVkU3RhdGljID0gdGhpcy5jb21waWxlZFN0YXRpYyA9IG5ldyBDb21waWxlZFN0YXRpY1RlbXBsYXRlKHN0YXJ0LCBlbmQpO1xuICAgIH1cblxuICAgIHJldHVybiBjb21waWxlZFN0YXRpYztcbiAgfVxuXG4gIGNvbXBpbGVEeW5hbWljKGVudjogRW52aXJvbm1lbnQpOiBDb21waWxlZER5bmFtaWNUZW1wbGF0ZTxTPiB7XG4gICAgbGV0IHsgY29tcGlsZWREeW5hbWljIH0gPSB0aGlzO1xuXG4gICAgaWYgKCFjb21waWxlZER5bmFtaWMpIHtcbiAgICAgIGxldCBzdGF0aWNCbG9jayA9IHRoaXMuY29tcGlsZVN0YXRpYyhlbnYpO1xuICAgICAgY29tcGlsZWREeW5hbWljID0gbmV3IENvbXBpbGVkRHluYW1pY1RlbXBsYXRlKHN0YXRpY0Jsb2NrLnN0YXJ0LCBzdGF0aWNCbG9jay5lbmQsIHRoaXMuc3ltYm9sVGFibGUpO1xuICAgIH1cblxuICAgIHJldHVybiBjb21waWxlZER5bmFtaWM7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgVGVtcGxhdGUgPSBDb21waWxhYmxlVGVtcGxhdGU8U3ltYm9sVGFibGU+O1xuZXhwb3J0IHR5cGUgUHJvZ3JhbSA9IENvbXBpbGFibGVUZW1wbGF0ZTxQcm9ncmFtU3ltYm9sVGFibGU+O1xuZXhwb3J0IHR5cGUgQmxvY2sgPSBDb21waWxhYmxlVGVtcGxhdGU8QmxvY2tTeW1ib2xUYWJsZT47XG5cbmV4cG9ydCB0eXBlIFNjYW5uZWRQcm9ncmFtID0gU2Nhbm5lZFRlbXBsYXRlPFByb2dyYW1TeW1ib2xUYWJsZT47XG5leHBvcnQgdHlwZSBTY2FubmVkQmxvY2sgPSBTY2FubmVkVGVtcGxhdGU8QmxvY2tTeW1ib2xUYWJsZT47XG5cbmZ1bmN0aW9uIGNvbXBpbGVTdGF0ZW1lbnRzKHN0YXRlbWVudHM6IFdpcmVGb3JtYXQuU3RhdGVtZW50W10sIG1ldGE6IENvbXBpbGF0aW9uTWV0YSwgZW52OiBFbnZpcm9ubWVudCkge1xuICBsZXQgYiA9IGJ1aWxkZXIoZW52LCBtZXRhKTtcblxuICBmb3IgKGxldCBzdGF0ZW1lbnQgb2Ygc3RhdGVtZW50cykge1xuICAgIGNvbXBpbGVTdGF0ZW1lbnQoc3RhdGVtZW50LCBiKTtcbiAgfVxuXG4gIHJldHVybiBiO1xufVxuXG5leHBvcnQgY29uc3QgQVRUUlNfQkxPQ0sgPSAnJmF0dHJzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGxheW91dChwcmVsdWRlOiBXaXJlRm9ybWF0LlN0YXRlbWVudFtdLCBoZWFkOiBXaXJlRm9ybWF0LlN0YXRlbWVudFtdLCBib2R5OiBXaXJlRm9ybWF0LlN0YXRlbWVudFtdLCBzeW1ib2xUYWJsZTogUHJvZ3JhbVN5bWJvbFRhYmxlKSB7XG4gIGxldCBbLCB0YWddID0gcHJlbHVkZS5wb3AoKSBhcyBXaXJlRm9ybWF0LlN0YXRlbWVudHMuT3BlbkVsZW1lbnQ7XG4gIHByZWx1ZGUucHVzaChbT3BzLkNsaWVudFNpZGVTdGF0ZW1lbnQsIENsaWVudFNpZGUuT3BzLk9wZW5Db21wb25lbnRFbGVtZW50LCB0YWddKTtcbiAgcHJlbHVkZS5wdXNoKFtPcHMuQ2xpZW50U2lkZVN0YXRlbWVudCwgQ2xpZW50U2lkZS5PcHMuRGlkQ3JlYXRlRWxlbWVudF0pO1xuXG4gIGxldCBhdHRyc1N5bWJvbCA9IHN5bWJvbFRhYmxlLnN5bWJvbHMubGVuZ3RoICsgMTtcbiAgc3ltYm9sVGFibGUuc3ltYm9scy5wdXNoKEFUVFJTX0JMT0NLKTtcblxuICBsZXQgc3RhdGVtZW50cyA9IHByZWx1ZGVcbiAgICAuY29uY2F0KFtbT3BzLllpZWxkLCBhdHRyc1N5bWJvbCwgRU1QVFlfQVJSQVldXSlcbiAgICAuY29uY2F0KGhlYWQpXG4gICAgLmNvbmNhdChib2R5KVxuICAgIC5jb25jYXQoW1tPcHMuQ2xpZW50U2lkZVN0YXRlbWVudCwgQ2xpZW50U2lkZS5PcHMuRGlkUmVuZGVyTGF5b3V0XV0pO1xuXG4gIHJldHVybiBuZXcgQ29tcGlsYWJsZVRlbXBsYXRlKHN0YXRlbWVudHMsIHN5bWJvbFRhYmxlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2Nhbm5lciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYmxvY2s6IFdpcmVGb3JtYXQuU2VyaWFsaXplZFRlbXBsYXRlQmxvY2ssIHByaXZhdGUgZW52OiBFbnZpcm9ubWVudCkge1xuICB9XG5cbiAgc2NhbkVudHJ5UG9pbnQobWV0YTogQ29tcGlsYXRpb25NZXRhKTogUHJvZ3JhbSB7XG4gICAgbGV0IHsgYmxvY2ssIGVudiB9ID0gdGhpcztcblxuICAgIGxldCBzdGF0ZW1lbnRzO1xuICAgIGlmIChibG9jay5wcmVsdWRlICYmIGJsb2NrLmhlYWQpIHtcbiAgICAgIHN0YXRlbWVudHMgPSBibG9jay5wcmVsdWRlLmNvbmNhdChibG9jay5oZWFkKS5jb25jYXQoYmxvY2suc3RhdGVtZW50cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlbWVudHMgPSBibG9jay5zdGF0ZW1lbnRzO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUmF3UHJvZ3JhbShlbnYsIG1ldGEsIHN0YXRlbWVudHMsIGJsb2NrLnN5bWJvbHMsIGJsb2NrLmhhc0V2YWwpLnNjYW4oKTtcbiAgfVxuXG4gIHNjYW5CbG9jayhtZXRhOiBDb21waWxhdGlvbk1ldGEpOiBCbG9jayB7XG4gICAgbGV0IHsgYmxvY2ssIGVudiB9ID0gdGhpcztcblxuICAgIGxldCBzdGF0ZW1lbnRzO1xuICAgIGlmIChibG9jay5wcmVsdWRlICYmIGJsb2NrLmhlYWQpIHtcbiAgICAgIHN0YXRlbWVudHMgPSBibG9jay5wcmVsdWRlLmNvbmNhdChibG9jay5oZWFkKS5jb25jYXQoYmxvY2suc3RhdGVtZW50cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlbWVudHMgPSBibG9jay5zdGF0ZW1lbnRzO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUmF3SW5saW5lQmxvY2soZW52LCBtZXRhLCBzdGF0ZW1lbnRzLCBFTVBUWV9BUlJBWSkuc2NhbigpO1xuICB9XG5cbiAgc2NhbkxheW91dChtZXRhOiBDb21waWxhdGlvbk1ldGEsIGF0dHJzOiBXaXJlRm9ybWF0LlN0YXRlbWVudHMuQXR0cmlidXRlW10pOiBQcm9ncmFtIHtcbiAgICBsZXQgeyBibG9jayB9ID0gdGhpcztcbiAgICBsZXQgeyBzeW1ib2xzLCBoYXNFdmFsIH0gPSBibG9jaztcblxuICAgIGlmICghYmxvY2sucHJlbHVkZSB8fCAhYmxvY2suaGVhZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBBIGxheW91dCBtdXN0IGhhdmUgYSB0b3AtbGV2ZWwgZWxlbWVudGApO1xuICAgIH1cblxuICAgIGxldCBzeW1ib2xUYWJsZSA9IHsgbWV0YSwgaGFzRXZhbCwgc3ltYm9scyB9O1xuICAgIGxldCB7IHN0YXRlbWVudHM6IHByZWx1ZGUgfSA9IHNjYW5CbG9jayh7IHN0YXRlbWVudHM6IGJsb2NrLnByZWx1ZGUsIHBhcmFtZXRlcnM6IEVNUFRZX0FSUkFZIH0sIG1ldGEsIHRoaXMuZW52KTtcbiAgICBsZXQgeyBzdGF0ZW1lbnRzOiBoZWFkIH0gPSBzY2FuQmxvY2soeyBzdGF0ZW1lbnRzOiBbLi4uYXR0cnMsIC4uLmJsb2NrLmhlYWRdLCBwYXJhbWV0ZXJzOiBFTVBUWV9BUlJBWSB9LCBtZXRhLCB0aGlzLmVudik7XG4gICAgbGV0IHsgc3RhdGVtZW50czogYm9keSB9ID0gc2NhbkJsb2NrKHsgc3RhdGVtZW50czogYmxvY2suc3RhdGVtZW50cywgcGFyYW1ldGVyczogRU1QVFlfQVJSQVkgfSwgbWV0YSwgdGhpcy5lbnYpO1xuXG4gICAgcmV0dXJuIGxheW91dChwcmVsdWRlLCBoZWFkLCBib2R5LCBzeW1ib2xUYWJsZSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNjYW5CbG9jayhibG9jazogV2lyZUZvcm1hdC5TZXJpYWxpemVkSW5saW5lQmxvY2ssIG1ldGE6IENvbXBpbGF0aW9uTWV0YSwgZW52OiBFbnZpcm9ubWVudCk6IEJsb2NrIHtcbiAgcmV0dXJuIG5ldyBSYXdJbmxpbmVCbG9jayhlbnYsIG1ldGEsIGJsb2NrLnN0YXRlbWVudHMsIEVNUFRZX0FSUkFZKS5zY2FuKCk7XG59XG5cbmltcG9ydCB7IFB1YmxpY1ZNIH0gZnJvbSAnLi92bSc7XG5pbXBvcnQgeyBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcblxuZXhwb3J0IG5hbWVzcGFjZSBDbGllbnRTaWRlIHtcbiAgZXhwb3J0IGVudW0gT3BzIHtcbiAgICBPcGVuQ29tcG9uZW50RWxlbWVudCxcbiAgICBEaWRDcmVhdGVFbGVtZW50LFxuICAgIERpZFJlbmRlckxheW91dCxcbiAgICBPcHRpbWl6ZWRBcHBlbmQsXG4gICAgVW5vcHRpbWl6ZWRBcHBlbmQsXG4gICAgU3RhdGljUGFydGlhbCxcbiAgICBEeW5hbWljUGFydGlhbCxcbiAgICBOZXN0ZWRCbG9jayxcbiAgICBTY2FubmVkQmxvY2ssXG5cbiAgICBGdW5jdGlvbkV4cHJlc3Npb25cbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBpczxUIGV4dGVuZHMgYW55W10+KHZhcmlhbnQ6IE9wcyk6ICh2YWx1ZTogYW55W10pID0+IHZhbHVlIGlzIFQge1xuICAgIHJldHVybiBmdW5jdGlvbih2YWx1ZTogYW55W10pOiB2YWx1ZSBpcyBUIHtcbiAgICAgIHJldHVybiB2YWx1ZVswXSA9PT0gV2lyZUZvcm1hdC5PcHMuQ2xpZW50U2lkZUV4cHJlc3Npb24gfHwgdmFsdWVbMF0gPT09IFdpcmVGb3JtYXQuT3BzLkNsaWVudFNpZGVTdGF0ZW1lbnQgJiYgdmFsdWVbMV0gPT09IHZhcmlhbnQ7XG4gICAgfTtcbiAgfVxuXG4gIGltcG9ydCBDbGllbnRTaWRlU3RhdGVtZW50ID0gV2lyZUZvcm1hdC5PcHMuQ2xpZW50U2lkZVN0YXRlbWVudDtcbiAgaW1wb3J0IENsaWVudFNpZGVFeHByZXNzaW9uID0gV2lyZUZvcm1hdC5PcHMuQ2xpZW50U2lkZUV4cHJlc3Npb247XG5cbiAgZXhwb3J0IHR5cGUgT3BlbkNvbXBvbmVudEVsZW1lbnQgID0gW0NsaWVudFNpZGVTdGF0ZW1lbnQsIE9wcy5PcGVuQ29tcG9uZW50RWxlbWVudCwgc3RyaW5nXTtcbiAgZXhwb3J0IHR5cGUgRGlkQ3JlYXRlRWxlbWVudCAgICAgID0gW0NsaWVudFNpZGVTdGF0ZW1lbnQsIE9wcy5EaWRDcmVhdGVFbGVtZW50XTtcbiAgZXhwb3J0IHR5cGUgRGlkUmVuZGVyTGF5b3V0ICAgICAgID0gW0NsaWVudFNpZGVTdGF0ZW1lbnQsIE9wcy5EaWRSZW5kZXJMYXlvdXRdO1xuICBleHBvcnQgdHlwZSBPcHRpbWl6ZWRBcHBlbmQgICAgICAgPSBbQ2xpZW50U2lkZVN0YXRlbWVudCwgT3BzLk9wdGltaXplZEFwcGVuZCwgV2lyZUZvcm1hdC5FeHByZXNzaW9uLCBib29sZWFuXTtcbiAgZXhwb3J0IHR5cGUgVW5vcHRpbWl6ZWRBcHBlbmQgICAgID0gW0NsaWVudFNpZGVTdGF0ZW1lbnQsIE9wcy5Vbm9wdGltaXplZEFwcGVuZCwgV2lyZUZvcm1hdC5FeHByZXNzaW9uLCBib29sZWFuXTtcbiAgZXhwb3J0IHR5cGUgU3RhdGljUGFydGlhbCAgICAgICAgID0gW0NsaWVudFNpZGVTdGF0ZW1lbnQsIE9wcy5TdGF0aWNQYXJ0aWFsLCBzdHJpbmcsIFdpcmVGb3JtYXQuQ29yZS5FdmFsSW5mb107XG4gIGV4cG9ydCB0eXBlIER5bmFtaWNQYXJ0aWFsICAgICAgICA9IFtDbGllbnRTaWRlU3RhdGVtZW50LCBPcHMuRHluYW1pY1BhcnRpYWwsIFdpcmVGb3JtYXQuRXhwcmVzc2lvbiwgV2lyZUZvcm1hdC5Db3JlLkV2YWxJbmZvXTtcblxuICBleHBvcnQgdHlwZSBGdW5jdGlvbkV4cHJlc3Npb24gICAgPSBbQ2xpZW50U2lkZUV4cHJlc3Npb24sIE9wcy5GdW5jdGlvbkV4cHJlc3Npb24sIEZ1bmN0aW9uRXhwcmVzc2lvbkNhbGxiYWNrPE9wYXF1ZT5dO1xuXG4gIGV4cG9ydCB0eXBlIEZ1bmN0aW9uRXhwcmVzc2lvbkNhbGxiYWNrPFQ+ID0gKFZNOiBQdWJsaWNWTSwgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlKSA9PiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPFQ+O1xuXG4gIGV4cG9ydCB0eXBlIENsaWVudFNpZGVTdGF0ZW1lbnQgPVxuICAgIHwgT3BlbkNvbXBvbmVudEVsZW1lbnRcbiAgICB8IERpZENyZWF0ZUVsZW1lbnRcbiAgICB8IERpZFJlbmRlckxheW91dFxuICAgIHwgT3B0aW1pemVkQXBwZW5kXG4gICAgfCBVbm9wdGltaXplZEFwcGVuZFxuICAgIHwgU3RhdGljUGFydGlhbFxuICAgIHwgRHluYW1pY1BhcnRpYWxcbiAgICA7XG5cbiAgZXhwb3J0IHR5cGUgQ2xpZW50U2lkZUV4cHJlc3Npb24gPVxuICAgIHwgRnVuY3Rpb25FeHByZXNzaW9uXG4gICAgO1xufVxuXG5jb25zdCB7IE9wcyB9ID0gV2lyZUZvcm1hdDtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFJhd0Jsb2NrPFMgZXh0ZW5kcyBTeW1ib2xUYWJsZT4ge1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgZW52OiBFbnZpcm9ubWVudCwgcHJvdGVjdGVkIG1ldGE6IENvbXBpbGF0aW9uTWV0YSwgcHJpdmF0ZSBzdGF0ZW1lbnRzOiBXaXJlRm9ybWF0LlN0YXRlbWVudFtdKSB7fVxuXG4gIHNjYW5TdGF0ZW1lbnRzKCk6IFdpcmVGb3JtYXQuU3RhdGVtZW50W10ge1xuICAgIGxldCBidWZmZXI6IFdpcmVGb3JtYXQuU3RhdGVtZW50W10gPSBbXTtcbiAgICBsZXQgc3RhdGVtZW50cyA9IHRoaXMuc3RhdGVtZW50cztcbiAgICBmb3IgKGxldCBzdGF0ZW1lbnQgb2Ygc3RhdGVtZW50cykge1xuICAgICAgYnVmZmVyLnB1c2goc3RhdGVtZW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYnVmZmVyO1xuICB9XG5cbiAgY2hpbGQoYmxvY2s6IE9wdGlvbjxXaXJlRm9ybWF0LlNlcmlhbGl6ZWRJbmxpbmVCbG9jaz4pOiBPcHRpb248UmF3SW5saW5lQmxvY2s+IHtcbiAgICBpZiAoIWJsb2NrKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gbmV3IFJhd0lubGluZUJsb2NrKHRoaXMuZW52LCB0aGlzLm1ldGEsIGJsb2NrLnN0YXRlbWVudHMsIGJsb2NrLnBhcmFtZXRlcnMpO1xuICB9XG5cbiAgYWJzdHJhY3Qgc2NhbigpOiBDb21waWxhYmxlVGVtcGxhdGU8Uz47XG59XG5cbmV4cG9ydCBjbGFzcyBSYXdJbmxpbmVCbG9jayBleHRlbmRzIFJhd0Jsb2NrPEJsb2NrU3ltYm9sVGFibGU+IHtcbiAgY29uc3RydWN0b3IoZW52OiBFbnZpcm9ubWVudCwgbWV0YTogQ29tcGlsYXRpb25NZXRhLCBzdGF0ZW1lbnRzOiBXaXJlRm9ybWF0LlN0YXRlbWVudFtdLCBwcml2YXRlIHBhcmFtZXRlcnM6IG51bWJlcltdKSB7XG4gICAgc3VwZXIoZW52LCBtZXRhLCBzdGF0ZW1lbnRzKTtcbiAgfVxuXG4gIHNjYW4oKTogQmxvY2sge1xuICAgIGxldCBzdGF0ZW1lbnRzID0gdGhpcy5zY2FuU3RhdGVtZW50cygpO1xuICAgIHJldHVybiBuZXcgQ29tcGlsYWJsZVRlbXBsYXRlKHN0YXRlbWVudHMsIHsgcGFyYW1ldGVyczogdGhpcy5wYXJhbWV0ZXJzLCBtZXRhOiB0aGlzLm1ldGEgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJhd1Byb2dyYW0gZXh0ZW5kcyBSYXdCbG9jazxQcm9ncmFtU3ltYm9sVGFibGU+IHtcbiAgY29uc3RydWN0b3IoZW52OiBFbnZpcm9ubWVudCwgbWV0YTogQ29tcGlsYXRpb25NZXRhLCBzdGF0ZW1lbnRzOiBXaXJlRm9ybWF0LlN0YXRlbWVudFtdLCBwcml2YXRlIHN5bWJvbHM6IHN0cmluZ1tdLCBwcml2YXRlIGhhc0V2YWw6IGJvb2xlYW4pIHtcbiAgICBzdXBlcihlbnYsIG1ldGEsIHN0YXRlbWVudHMpO1xuICB9XG5cbiAgc2NhbigpOiBQcm9ncmFtIHtcbiAgICBsZXQgc3RhdGVtZW50cyA9IHRoaXMuc2NhblN0YXRlbWVudHMoKTtcbiAgICByZXR1cm4gbmV3IENvbXBpbGFibGVUZW1wbGF0ZShzdGF0ZW1lbnRzLCB7IHN5bWJvbHM6IHRoaXMuc3ltYm9scywgaGFzRXZhbDogdGhpcy5oYXNFdmFsLCBtZXRhOiB0aGlzLm1ldGEgfSk7XG4gIH1cbn1cbiJdfQ==

@@ -12,4 +12,2 @@ "use strict";

var _util = require("@glimmer/util");
var _bounds = require("./bounds");

@@ -70,3 +68,2 @@

}
throw (0, _util.unreachable)();
}

@@ -80,3 +77,2 @@ function trustingInsert(dom, cursor, value) {

}
throw (0, _util.unreachable)();
}

@@ -214,2 +210,2 @@

}(Upsert);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBzZXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidXBzZXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUEsQUFBTyxBQUFVLEFBQVcsQUFBRSxBQUFNLEFBQWUsQUFBQzs7QUFJcEQsQUFBTyxBQUFrQixBQUFnQixBQUFFLEFBQU0sQUFBRSxBQUFLLEFBQUUsQUFBTSxBQUFVLEFBQUMsQUFNM0UsQUFBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQkFBdUIsQUFBYSxPQUN4QyxBQUFNO1dBQUMsQ0FBQyxDQUFDLEFBQUssU0FBSSxPQUFPLEFBQUssTUFBQyxBQUFRLEFBQUMsY0FBSyxBQUFVLEFBQUMsQUFDMUQsQUFBQztBQUVELEFBQU07Z0JBQWlCLEFBQWEsT0FDbEMsQUFBTTtXQUFDLEFBQUssVUFBSyxBQUFJLFFBQUksT0FBTyxBQUFLLFVBQUssQUFBUSxZQUFJLE9BQU8sQUFBSyxNQUFDLEFBQVUsQUFBQyxnQkFBSyxBQUFRLEFBQUMsQUFDOUYsQUFBQztBQUVELEFBQU07a0JBQW1CLEFBQWEsT0FDcEMsQUFBTTtXQUFDLE9BQU8sQUFBSyxVQUFLLEFBQVEsQUFBQyxBQUNuQyxBQUFDLEFBTUQ7OzthQUNFLGdCQUFtQixBQUFjOzBCQUFkOztTQUFNLFNBQU4sQUFBTSxBQUFRLEFBQ2pDLEFBQUMsQUFHRjtBQUVEOztrQkFBZSxBQUFNLEFBQUMsQUFFdEIsQUFBTTt3QkFBeUIsQUFBd0IsS0FBRSxBQUFjLFFBQUUsQUFBd0IsT0FDL0YsQUFBRSxBQUFDO1FBQUMsQUFBUSxTQUFDLEFBQUssQUFBQyxBQUFDLFFBQUMsQUFBQyxBQUNwQixBQUFNO2VBQUMsQUFBVSxXQUFDLEFBQU0sT0FBQyxBQUFHLEtBQUUsQUFBTSxRQUFFLEFBQUssQUFBQyxBQUFDLEFBQy9DLEFBQUM7QUFDRCxBQUFFLEFBQUM7UUFBQyxBQUFZLGFBQUMsQUFBSyxBQUFDLEFBQUMsUUFBQyxBQUFDLEFBQ3hCLEFBQU07ZUFBQyxB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QyxBQUFDLEFBQ04sQUFBTTttQkFBQyxBQUFLLEFBQUMsQUFDZixBQUFDLEFBQ0g7QUFBQyxBQUNGOzs7O0VBcEJ3QixBQUFNLEFBQzdCLEFBQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcGFxdWUsIHVucmVhY2hhYmxlIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBET01DaGFuZ2VzLCBET01UcmVlQ29uc3RydWN0aW9uIH0gZnJvbSAnLi9kb20vaGVscGVyJztcbmltcG9ydCAqIGFzIFNpbXBsZSBmcm9tICcuL2RvbS9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEZJWF9SRUlGSUNBVElPTiB9IGZyb20gJy4vZG9tL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQm91bmRzLCBDdXJzb3IsIFNpbmdsZU5vZGVCb3VuZHMsIHNpbmdsZSwgY2xlYXIgfSBmcm9tICcuL2JvdW5kcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2FmZVN0cmluZyB7XG4gIHRvSFRNTCgpOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1NhZmVTdHJpbmcodmFsdWU6IE9wYXF1ZSk6IHZhbHVlIGlzIFNhZmVTdHJpbmcge1xuICByZXR1cm4gISF2YWx1ZSAmJiB0eXBlb2YgdmFsdWVbJ3RvSFRNTCddID09PSAnZnVuY3Rpb24nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOb2RlKHZhbHVlOiBPcGFxdWUpOiB2YWx1ZSBpcyBOb2RlIHtcbiAgcmV0dXJuIHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIHZhbHVlWydub2RlVHlwZSddID09PSAnbnVtYmVyJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU3RyaW5nKHZhbHVlOiBPcGFxdWUpOiB2YWx1ZSBpcyBzdHJpbmcge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJztcbn1cblxuZXhwb3J0IHR5cGUgSW5zZXJ0aW9uID0gQ2F1dGlvdXNJbnNlcnRpb24gfCBUcnVzdGluZ0luc2VydGlvbjtcbmV4cG9ydCB0eXBlIENhdXRpb3VzSW5zZXJ0aW9uID0gc3RyaW5nIHwgU2FmZVN0cmluZyB8IE5vZGU7XG5leHBvcnQgdHlwZSBUcnVzdGluZ0luc2VydGlvbiA9IHN0cmluZyB8IE5vZGU7XG5cbmFic3RyYWN0IGNsYXNzIFVwc2VydCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBib3VuZHM6IEJvdW5kcykge1xuICB9XG5cbiAgYWJzdHJhY3QgdXBkYXRlKGRvbTogRE9NQ2hhbmdlcywgdmFsdWU6IEluc2VydGlvbik6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBkZWZhdWx0IFVwc2VydDtcblxuZXhwb3J0IGZ1bmN0aW9uIGNhdXRpb3VzSW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBDYXV0aW91c0luc2VydGlvbik6IFVwc2VydCB7XG4gIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICByZXR1cm4gVGV4dFVwc2VydC5pbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxuICBpZiAoaXNTYWZlU3RyaW5nKHZhbHVlKSkge1xuICAgIHJldHVybiBTYWZlU3RyaW5nVXBzZXJ0Lmluc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG4gIGlmIChpc05vZGUodmFsdWUpKSB7XG4gICAgcmV0dXJuIE5vZGVVcHNlcnQuaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cblxuICB0aHJvdyB1bnJlYWNoYWJsZSgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJ1c3RpbmdJbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IFRydXN0aW5nSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgIHJldHVybiBIVE1MVXBzZXJ0Lmluc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG4gIGlmIChpc05vZGUodmFsdWUpKSB7XG4gICAgcmV0dXJuIE5vZGVVcHNlcnQuaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cblxuICB0aHJvdyB1bnJlYWNoYWJsZSgpO1xufVxuXG5jbGFzcyBUZXh0VXBzZXJ0IGV4dGVuZHMgVXBzZXJ0IHtcbiAgc3RhdGljIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogc3RyaW5nKTogVXBzZXJ0IHtcbiAgICBsZXQgdGV4dE5vZGUgPSBkb20uY3JlYXRlVGV4dE5vZGUodmFsdWUpO1xuICAgIGRvbS5pbnNlcnRCZWZvcmUoY3Vyc29yLmVsZW1lbnQsIHRleHROb2RlLCBjdXJzb3IubmV4dFNpYmxpbmcpO1xuICAgIGxldCBib3VuZHMgPSBuZXcgU2luZ2xlTm9kZUJvdW5kcyhjdXJzb3IuZWxlbWVudCwgdGV4dE5vZGUpO1xuICAgIHJldHVybiBuZXcgVGV4dFVwc2VydChib3VuZHMsIHRleHROb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgdGV4dE5vZGU6IFRleHQ7XG5cbiAgY29uc3RydWN0b3IoYm91bmRzOiBCb3VuZHMsIHRleHROb2RlOiBTaW1wbGUuVGV4dCkge1xuICAgIHN1cGVyKGJvdW5kcyk7XG4gICAgdGhpcy50ZXh0Tm9kZSA9IHRleHROb2RlIGFzIFRleHQ7XG4gIH1cblxuICB1cGRhdGUoX2RvbTogRE9NQ2hhbmdlcywgdmFsdWU6IEluc2VydGlvbik6IGJvb2xlYW4ge1xuICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgIGxldCB7IHRleHROb2RlIH0gPSB0aGlzO1xuICAgICAgdGV4dE5vZGUubm9kZVZhbHVlID0gdmFsdWU7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBIVE1MVXBzZXJ0IGV4dGVuZHMgVXBzZXJ0IHtcbiAgc3RhdGljIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogc3RyaW5nKTogVXBzZXJ0IHtcbiAgICBsZXQgYm91bmRzID0gZG9tLmluc2VydEhUTUxCZWZvcmUoY3Vyc29yLmVsZW1lbnQsIHZhbHVlLCBjdXJzb3IubmV4dFNpYmxpbmcpO1xuICAgIHJldHVybiBuZXcgSFRNTFVwc2VydChib3VuZHMpO1xuICB9XG5cbiAgdXBkYXRlKGRvbTogRE9NQ2hhbmdlcywgdmFsdWU6IEluc2VydGlvbik6IGJvb2xlYW4ge1xuICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgIGxldCB7IGJvdW5kcyB9ID0gdGhpcztcblxuICAgICAgbGV0IHBhcmVudEVsZW1lbnQgPSBib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICAgICAgbGV0IG5leHRTaWJsaW5nID0gY2xlYXIoYm91bmRzKTtcblxuICAgICAgdGhpcy5ib3VuZHMgPSBkb20uaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnRFbGVtZW50IGFzIEZJWF9SRUlGSUNBVElPTjxFbGVtZW50PiwgbmV4dFNpYmxpbmcgYXMgRklYX1JFSUZJQ0FUSU9OPE5vZGU+LCB2YWx1ZSk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59XG5cbmNsYXNzIFNhZmVTdHJpbmdVcHNlcnQgZXh0ZW5kcyBVcHNlcnQge1xuICBzdGF0aWMgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBTYWZlU3RyaW5nKTogVXBzZXJ0IHtcbiAgICBsZXQgc3RyaW5nVmFsdWUgPSB2YWx1ZS50b0hUTUwoKTtcbiAgICBsZXQgYm91bmRzID0gZG9tLmluc2VydEhUTUxCZWZvcmUoY3Vyc29yLmVsZW1lbnQsIHN0cmluZ1ZhbHVlLCBjdXJzb3IubmV4dFNpYmxpbmcpO1xuICAgIHJldHVybiBuZXcgU2FmZVN0cmluZ1Vwc2VydChib3VuZHMsIHN0cmluZ1ZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGJvdW5kczogQm91bmRzLCBwcml2YXRlIGxhc3RTdHJpbmdWYWx1ZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoYm91bmRzKTtcbiAgfVxuXG4gIHVwZGF0ZShkb206IERPTUNoYW5nZXMsIHZhbHVlOiBJbnNlcnRpb24pOiBib29sZWFuIHtcbiAgICBpZiAoaXNTYWZlU3RyaW5nKHZhbHVlKSkge1xuICAgICAgbGV0IHN0cmluZ1ZhbHVlID0gdmFsdWUudG9IVE1MKCk7XG5cbiAgICAgIGlmIChzdHJpbmdWYWx1ZSAhPT0gdGhpcy5sYXN0U3RyaW5nVmFsdWUpIHtcbiAgICAgICAgbGV0IHsgYm91bmRzIH0gPSB0aGlzO1xuXG4gICAgICAgIGxldCBwYXJlbnRFbGVtZW50ID0gYm91bmRzLnBhcmVudEVsZW1lbnQoKTtcbiAgICAgICAgbGV0IG5leHRTaWJsaW5nID0gY2xlYXIoYm91bmRzKTtcblxuICAgICAgICB0aGlzLmJvdW5kcyA9IGRvbS5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudEVsZW1lbnQgYXMgRklYX1JFSUZJQ0FUSU9OPEVsZW1lbnQ+LCBuZXh0U2libGluZyBhcyBGSVhfUkVJRklDQVRJT048Tm9kZT4sIHN0cmluZ1ZhbHVlKTtcbiAgICAgICAgdGhpcy5sYXN0U3RyaW5nVmFsdWUgPSBzdHJpbmdWYWx1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgTm9kZVVwc2VydCBleHRlbmRzIFVwc2VydCB7XG4gIHN0YXRpYyBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgbm9kZTogU2ltcGxlLk5vZGUpOiBVcHNlcnQge1xuICAgIGRvbS5pbnNlcnRCZWZvcmUoY3Vyc29yLmVsZW1lbnQsIG5vZGUsIGN1cnNvci5uZXh0U2libGluZyk7XG4gICAgcmV0dXJuIG5ldyBOb2RlVXBzZXJ0KHNpbmdsZShjdXJzb3IuZWxlbWVudCwgbm9kZSkpO1xuICB9XG5cbiAgdXBkYXRlKGRvbTogRE9NQ2hhbmdlcywgdmFsdWU6IEluc2VydGlvbik6IGJvb2xlYW4ge1xuICAgIGlmIChpc05vZGUodmFsdWUpKSB7XG4gICAgICBsZXQgeyBib3VuZHMgfSA9IHRoaXM7XG5cbiAgICAgIGxldCBwYXJlbnRFbGVtZW50ID0gYm91bmRzLnBhcmVudEVsZW1lbnQoKTtcbiAgICAgIGxldCBuZXh0U2libGluZyA9IGNsZWFyKGJvdW5kcyk7XG5cbiAgICAgIHRoaXMuYm91bmRzID0gZG9tLmluc2VydE5vZGVCZWZvcmUocGFyZW50RWxlbWVudCBhcyBGSVhfUkVJRklDQVRJT048RWxlbWVudD4sIHZhbHVlLCBuZXh0U2libGluZyBhcyBGSVhfUkVJRklDQVRJT048Tm9kZT4pO1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBzZXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidXBzZXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBSUEsQUFBTyxBQUFrQixBQUFnQixBQUFFLEFBQU0sQUFBRSxBQUFLLEFBQUUsQUFBTSxBQUFVLEFBQUMsQUFNM0UsQUFBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQkFBdUIsQUFBYSxPQUN4QyxBQUFNO1dBQUMsQ0FBQyxDQUFDLEFBQUssU0FBSSxPQUFPLEFBQUssTUFBQyxBQUFRLEFBQUMsY0FBSyxBQUFVLEFBQUMsQUFDMUQsQUFBQztBQUVELEFBQU07Z0JBQWlCLEFBQWEsT0FDbEMsQUFBTTtXQUFDLEFBQUssVUFBSyxBQUFJLFFBQUksT0FBTyxBQUFLLFVBQUssQUFBUSxZQUFJLE9BQU8sQUFBSyxNQUFDLEFBQVUsQUFBQyxnQkFBSyxBQUFRLEFBQUMsQUFDOUYsQUFBQztBQUVELEFBQU07a0JBQW1CLEFBQWEsT0FDcEMsQUFBTTtXQUFDLE9BQU8sQUFBSyxVQUFLLEFBQVEsQUFBQyxBQUNuQyxBQUFDLEFBTUQ7OzthQUNFLGdCQUFtQixBQUFjOzBCQUFkOztTQUFNLFNBQU4sQUFBTSxBQUFRLEFBQ2pDLEFBQUMsQUFHRjtBQUVEOztrQkFBZSxBQUFNLEFBQUMsQUFFdEIsQUFBTTt3QkFBeUIsQUFBd0IsS0FBRSxBQUFjLFFBQUUsQUFBd0IsT0FDL0YsQUFBRSxBQUFDO1FBQUMsQUFBUSxTQUFDLEFBQUssQUFBQyxBQUFDLFFBQUMsQUFBQyxBQUNwQixBQUFNO2VBQUMsQUFBVSxXQUFDLEFBQU0sT0FBQyxBQUFHLEtBQUUsQUFBTSxRQUFFLEFBQUssQUFBQyxBQUFDLEFBQy9DLEFBQUM7QUFDRCxBQUFFLEFBQUM7UUFBQyxBQUFZLGFBQUMsQUFBSyxBQUFDLEFBQUMsUUFBQyxBQUFDLEFBQ3hCLEFBQU07ZUFBQyxBQUFnQixpQkFBQyxBQUFNLE9BQUMsQUFBRyxLQUFFLEFBQU0sUUFBRSxB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b250ZW50IjpbImltcG9ydCB7IE9wYXF1ZSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgRE9NQ2hhbmdlcywgRE9NVHJlZUNvbnN0cnVjdGlvbiB9IGZyb20gJy4vZG9tL2hlbHBlcic7XG5pbXBvcnQgKiBhcyBTaW1wbGUgZnJvbSAnLi9kb20vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBGSVhfUkVJRklDQVRJT04gfSBmcm9tICcuL2RvbS9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEJvdW5kcywgQ3Vyc29yLCBTaW5nbGVOb2RlQm91bmRzLCBzaW5nbGUsIGNsZWFyIH0gZnJvbSAnLi9ib3VuZHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNhZmVTdHJpbmcge1xuICB0b0hUTUwoKTogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTYWZlU3RyaW5nKHZhbHVlOiBPcGFxdWUpOiB2YWx1ZSBpcyBTYWZlU3RyaW5nIHtcbiAgcmV0dXJuICEhdmFsdWUgJiYgdHlwZW9mIHZhbHVlWyd0b0hUTUwnXSA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZSh2YWx1ZTogT3BhcXVlKTogdmFsdWUgaXMgTm9kZSB7XG4gIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHR5cGVvZiB2YWx1ZVsnbm9kZVR5cGUnXSA9PT0gJ251bWJlcic7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZyh2YWx1ZTogT3BhcXVlKTogdmFsdWUgaXMgc3RyaW5nIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZyc7XG59XG5cbmV4cG9ydCB0eXBlIEluc2VydGlvbiA9IENhdXRpb3VzSW5zZXJ0aW9uIHwgVHJ1c3RpbmdJbnNlcnRpb247XG5leHBvcnQgdHlwZSBDYXV0aW91c0luc2VydGlvbiA9IHN0cmluZyB8IFNhZmVTdHJpbmcgfCBOb2RlO1xuZXhwb3J0IHR5cGUgVHJ1c3RpbmdJbnNlcnRpb24gPSBzdHJpbmcgfCBOb2RlO1xuXG5hYnN0cmFjdCBjbGFzcyBVcHNlcnQge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgYm91bmRzOiBCb3VuZHMpIHtcbiAgfVxuXG4gIGFic3RyYWN0IHVwZGF0ZShkb206IERPTUNoYW5nZXMsIHZhbHVlOiBJbnNlcnRpb24pOiBib29sZWFuO1xufVxuXG5leHBvcnQgZGVmYXVsdCBVcHNlcnQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBjYXV0aW91c0luc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogQ2F1dGlvdXNJbnNlcnRpb24pOiBVcHNlcnQge1xuICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgcmV0dXJuIFRleHRVcHNlcnQuaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cbiAgaWYgKGlzU2FmZVN0cmluZyh2YWx1ZSkpIHtcbiAgICByZXR1cm4gU2FmZVN0cmluZ1Vwc2VydC5pbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxuICBpZiAoaXNOb2RlKHZhbHVlKSkge1xuICAgIHJldHVybiBOb2RlVXBzZXJ0Lmluc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRydXN0aW5nSW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBUcnVzdGluZ0luc2VydGlvbik6IFVwc2VydCB7XG4gIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICByZXR1cm4gSFRNTFVwc2VydC5pbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxuICBpZiAoaXNOb2RlKHZhbHVlKSkge1xuICAgIHJldHVybiBOb2RlVXBzZXJ0Lmluc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG5cbn1cblxuY2xhc3MgVGV4dFVwc2VydCBleHRlbmRzIFVwc2VydCB7XG4gIHN0YXRpYyBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IHN0cmluZyk6IFVwc2VydCB7XG4gICAgbGV0IHRleHROb2RlID0gZG9tLmNyZWF0ZVRleHROb2RlKHZhbHVlKTtcbiAgICBkb20uaW5zZXJ0QmVmb3JlKGN1cnNvci5lbGVtZW50LCB0ZXh0Tm9kZSwgY3Vyc29yLm5leHRTaWJsaW5nKTtcbiAgICBsZXQgYm91bmRzID0gbmV3IFNpbmdsZU5vZGVCb3VuZHMoY3Vyc29yLmVsZW1lbnQsIHRleHROb2RlKTtcbiAgICByZXR1cm4gbmV3IFRleHRVcHNlcnQoYm91bmRzLCB0ZXh0Tm9kZSk7XG4gIH1cblxuICBwcml2YXRlIHRleHROb2RlOiBUZXh0O1xuXG4gIGNvbnN0cnVjdG9yKGJvdW5kczogQm91bmRzLCB0ZXh0Tm9kZTogU2ltcGxlLlRleHQpIHtcbiAgICBzdXBlcihib3VuZHMpO1xuICAgIHRoaXMudGV4dE5vZGUgPSB0ZXh0Tm9kZSBhcyBUZXh0O1xuICB9XG5cbiAgdXBkYXRlKF9kb206IERPTUNoYW5nZXMsIHZhbHVlOiBJbnNlcnRpb24pOiBib29sZWFuIHtcbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICBsZXQgeyB0ZXh0Tm9kZSB9ID0gdGhpcztcbiAgICAgIHRleHROb2RlLm5vZGVWYWx1ZSA9IHZhbHVlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgSFRNTFVwc2VydCBleHRlbmRzIFVwc2VydCB7XG4gIHN0YXRpYyBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IHN0cmluZyk6IFVwc2VydCB7XG4gICAgbGV0IGJvdW5kcyA9IGRvbS5pbnNlcnRIVE1MQmVmb3JlKGN1cnNvci5lbGVtZW50LCB2YWx1ZSwgY3Vyc29yLm5leHRTaWJsaW5nKTtcbiAgICByZXR1cm4gbmV3IEhUTUxVcHNlcnQoYm91bmRzKTtcbiAgfVxuXG4gIHVwZGF0ZShkb206IERPTUNoYW5nZXMsIHZhbHVlOiBJbnNlcnRpb24pOiBib29sZWFuIHtcbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICBsZXQgeyBib3VuZHMgfSA9IHRoaXM7XG5cbiAgICAgIGxldCBwYXJlbnRFbGVtZW50ID0gYm91bmRzLnBhcmVudEVsZW1lbnQoKTtcbiAgICAgIGxldCBuZXh0U2libGluZyA9IGNsZWFyKGJvdW5kcyk7XG5cbiAgICAgIHRoaXMuYm91bmRzID0gZG9tLmluc2VydEhUTUxCZWZvcmUocGFyZW50RWxlbWVudCBhcyBGSVhfUkVJRklDQVRJT048RWxlbWVudD4sIG5leHRTaWJsaW5nIGFzIEZJWF9SRUlGSUNBVElPTjxOb2RlPiwgdmFsdWUpO1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBTYWZlU3RyaW5nVXBzZXJ0IGV4dGVuZHMgVXBzZXJ0IHtcbiAgc3RhdGljIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogU2FmZVN0cmluZyk6IFVwc2VydCB7XG4gICAgbGV0IHN0cmluZ1ZhbHVlID0gdmFsdWUudG9IVE1MKCk7XG4gICAgbGV0IGJvdW5kcyA9IGRvbS5pbnNlcnRIVE1MQmVmb3JlKGN1cnNvci5lbGVtZW50LCBzdHJpbmdWYWx1ZSwgY3Vyc29yLm5leHRTaWJsaW5nKTtcbiAgICByZXR1cm4gbmV3IFNhZmVTdHJpbmdVcHNlcnQoYm91bmRzLCBzdHJpbmdWYWx1ZSk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihib3VuZHM6IEJvdW5kcywgcHJpdmF0ZSBsYXN0U3RyaW5nVmFsdWU6IHN0cmluZykge1xuICAgIHN1cGVyKGJvdW5kcyk7XG4gIH1cblxuICB1cGRhdGUoZG9tOiBET01DaGFuZ2VzLCB2YWx1ZTogSW5zZXJ0aW9uKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzU2FmZVN0cmluZyh2YWx1ZSkpIHtcbiAgICAgIGxldCBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvSFRNTCgpO1xuXG4gICAgICBpZiAoc3RyaW5nVmFsdWUgIT09IHRoaXMubGFzdFN0cmluZ1ZhbHVlKSB7XG4gICAgICAgIGxldCB7IGJvdW5kcyB9ID0gdGhpcztcblxuICAgICAgICBsZXQgcGFyZW50RWxlbWVudCA9IGJvdW5kcy5wYXJlbnRFbGVtZW50KCk7XG4gICAgICAgIGxldCBuZXh0U2libGluZyA9IGNsZWFyKGJvdW5kcyk7XG5cbiAgICAgICAgdGhpcy5ib3VuZHMgPSBkb20uaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnRFbGVtZW50IGFzIEZJWF9SRUlGSUNBVElPTjxFbGVtZW50PiwgbmV4dFNpYmxpbmcgYXMgRklYX1JFSUZJQ0FUSU9OPE5vZGU+LCBzdHJpbmdWYWx1ZSk7XG4gICAgICAgIHRoaXMubGFzdFN0cmluZ1ZhbHVlID0gc3RyaW5nVmFsdWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59XG5cbmNsYXNzIE5vZGVVcHNlcnQgZXh0ZW5kcyBVcHNlcnQge1xuICBzdGF0aWMgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIG5vZGU6IFNpbXBsZS5Ob2RlKTogVXBzZXJ0IHtcbiAgICBkb20uaW5zZXJ0QmVmb3JlKGN1cnNvci5lbGVtZW50LCBub2RlLCBjdXJzb3IubmV4dFNpYmxpbmcpO1xuICAgIHJldHVybiBuZXcgTm9kZVVwc2VydChzaW5nbGUoY3Vyc29yLmVsZW1lbnQsIG5vZGUpKTtcbiAgfVxuXG4gIHVwZGF0ZShkb206IERPTUNoYW5nZXMsIHZhbHVlOiBJbnNlcnRpb24pOiBib29sZWFuIHtcbiAgICBpZiAoaXNOb2RlKHZhbHVlKSkge1xuICAgICAgbGV0IHsgYm91bmRzIH0gPSB0aGlzO1xuXG4gICAgICBsZXQgcGFyZW50RWxlbWVudCA9IGJvdW5kcy5wYXJlbnRFbGVtZW50KCk7XG4gICAgICBsZXQgbmV4dFNpYmxpbmcgPSBjbGVhcihib3VuZHMpO1xuXG4gICAgICB0aGlzLmJvdW5kcyA9IGRvbS5pbnNlcnROb2RlQmVmb3JlKHBhcmVudEVsZW1lbnQgYXMgRklYX1JFSUZJQ0FUSU9OPEVsZW1lbnQ+LCB2YWx1ZSwgbmV4dFNpYmxpbmcgYXMgRklYX1JFSUZJQ0FUSU9OPE5vZGU+KTtcblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==

@@ -297,7 +297,7 @@ "use strict";

VM.prototype.listBlock = function listBlock() {
return (0, _util.expect)(this.listBlockStack.current, 'expected a list block');
return this.listBlockStack.current;
};
VM.prototype.updating = function updating() {
return (0, _util.expect)(this.updatingOpcodeStack.current, 'expected updating opcode on the updating opcode stack');
return this.updatingOpcodeStack.current;
};

@@ -310,7 +310,7 @@

VM.prototype.scope = function scope() {
return (0, _util.expect)(this.scopeStack.current, 'expected scope on the scope stack');
return this.scopeStack.current;
};
VM.prototype.dynamicScope = function dynamicScope() {
return (0, _util.expect)(this.dynamicScopeStack.current, 'expected dynamic scope on the dynamic scope stack');
return this.dynamicScopeStack.current;
};

@@ -325,3 +325,3 @@

var callerScope = (0, _util.expect)(this.scope().getCallerScope(), 'pushCallerScope is called when a caller scope is present');
var callerScope = this.scope().getCallerScope();
this.scopeStack.push(childScope ? callerScope.child() : callerScope);

@@ -390,3 +390,3 @@ };

done: true,
value: new _renderResult2.default(env, (0, _util.expect)(updatingOpcodeStack.pop(), 'there should be a final updating opcode stack'), elementStack.popBlock())
value: new _renderResult2.default(env, updatingOpcodeStack.pop(), elementStack.popBlock())
};

@@ -440,2 +440,2 @@ };

exports.default = VM;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwZW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBwZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxBQUFPLEFBQUUsQUFBUSxBQUFFLEFBQU0sQUFBWSxBQUFDOztBQUN0QyxBQUFPLEFBQUUsQUFBSyxBQUFxQyxBQUFNLEFBQWdCLEFBQUM7O0FBRTFFLEFBQU8sQUFBdUIsQUFBSyxBQUFFLEFBQVUsQUFBRSxBQUFTLEFBQWtCLEFBQU0sQUFBRSxBQUFNLEFBQWUsQUFBQzs7QUFDMUcsQUFBTyxBQUE0RCxBQUFZLEFBQUUsQUFBTSxBQUFvQixBQUFDOztBQUU1RyxBQUFPLEFBQUUsQUFBVyxBQUFFLEFBQXVCLEFBQUUsQUFBZSxBQUFFLEFBQU0sQUFBd0IsQUFBQzs7QUFDL0YsQUFBTyxBQUFXLEFBQWUsQUFBRSxBQUFTLEFBQWUsQUFBTSxBQUFVLEFBQUM7O0FBQzVFLEFBQU8sQUFBWSxBQUFNLEFBQWlCLEFBQUMsQUFFM0MsQUFBTyxBQUNMLEFBQWMsQUFFZixBQUFNLEFBQVksQUFBQyxBQWdCcEIsQUFBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs0REFTSjs2QkFBb0IsQUFBZSxPQUFTLEFBQVUsSUFBUyxBQUFVOzhCQUFyRDs7YUFBSyxRQUFMLEFBQUssQUFBVSxBQUFTO2FBQUUsS0FBRixBQUFFLEFBQVEsQUFBUzthQUFFLEtBQUYsQUFBRSxBQUFRLEFBQ3ZFLEFBQU07ZUFBQyxBQUFJLEtBVGIsQUFBTSxBQVNRLEFBQUksQUFBQyxBQUFDLEFBQ3BCLEFBQUM7OztvQkFWTSxBQUFLLHlCQUNWLEFBQU07ZUFBQyxJQUFJLEFBQUksS0FBQyxBQUFFLElBQUUsQUFBQyxHQUFFLENBQUMsQUFBQyxBQUFDLEFBQUMsQUFDN0IsQUFBQyxBQUVELEFBQU07OztvQkFBQyxBQUFPLDJCQUFDLEFBQXVCLFVBQ3BDLEFBQU07ZUFBQyxJQUFJLEFBQUksS0FBQyxBQUFRLFNBQUMsQUFBSyxBQUFFLFNBQUUsQUFBQyxHQUFF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LEFBQVksQUFBRTs7dUJBQUMsQUFBVSxJQUN2QixBQUFJO2lCQUFDLEFBQUssTUFBQyxBQUFFLEtBQUcsQUFBRSxBQUFDLEFBQ3JCLEFBQUMsQUFFRCxBQUFZLEFBQUU7Ozs7eUJBQ1osQUFBTTttQkFBQyxBQUFJLEtBQUMsQUFBSyxNQUFDLEFBQUUsQUFBQyxBQUN2QixBQUFDLEFBRUQsQUFBWSxBQUFFOzt1QkFBQyxBQUFVLElBQ3ZCLEFBQUk7aUJBQUMsQUFBSyxNQUFDLEFBQUUsS0FBRyxBQUFFLEFBQUMsQUFDckIsQUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlZ2lzdGVyIH0gZnJvbSAnLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBTY29wZSwgRHluYW1pY1Njb3BlLCBFbnZpcm9ubWVudCwgT3Bjb2RlIH0gZnJvbSAnLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgRWxlbWVudFN0YWNrIH0gZnJvbSAnLi4vYnVpbGRlcic7XG5pbXBvcnQgeyBPcHRpb24sIERlc3Ryb3lhYmxlLCBTdGFjaywgTGlua2VkTGlzdCwgTGlzdFNsaWNlLCBPcGFxdWUsIGFzc2VydCwgZXhwZWN0IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBSZWZlcmVuY2VJdGVyYXRvciwgUGF0aFJlZmVyZW5jZSwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgY29tYmluZVNsaWNlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IENvbXBpbGVkRHluYW1pY1Byb2dyYW0gfSBmcm9tICcuLi9jb21waWxlZC9ibG9ja3MnO1xuaW1wb3J0IHsgTGFiZWxPcGNvZGUsIEp1bXBJZk5vdE1vZGlmaWVkT3Bjb2RlLCBEaWRNb2RpZnlPcGNvZGUgfSBmcm9tICcuLi9jb21waWxlZC9vcGNvZGVzL3ZtJztcbmltcG9ydCB7IFZNU3RhdGUsIExpc3RCbG9ja09wY29kZSwgVHJ5T3Bjb2RlLCBCbG9ja09wY29kZSB9IGZyb20gJy4vdXBkYXRlJztcbmltcG9ydCBSZW5kZXJSZXN1bHQgZnJvbSAnLi9yZW5kZXItcmVzdWx0JztcblxuaW1wb3J0IHtcbiAgQVBQRU5EX09QQ09ERVMsXG4gIFVwZGF0aW5nT3Bjb2RlXG59IGZyb20gJy4uL29wY29kZXMnO1xuXG5pbXBvcnQge1xuICBDb25zdGFudHMsXG4gIENvbnN0YW50U3RyaW5nXG59IGZyb20gJy4uL2Vudmlyb25tZW50L2NvbnN0YW50cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGljVk0ge1xuICBlbnY6IEVudmlyb25tZW50O1xuICBkeW5hbWljU2NvcGUoKTogRHluYW1pY1Njb3BlO1xuICBnZXRTZWxmKCk6IFBhdGhSZWZlcmVuY2U8T3BhcXVlPjtcbiAgbmV3RGVzdHJveWFibGUoZDogRGVzdHJveWFibGUpOiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBDYXB0dXJlZFN0YWNrID0gT3BhcXVlW107XG5cbmV4cG9ydCBjbGFzcyBFdmFsdWF0aW9uU3RhY2sge1xuICBzdGF0aWMgZW1wdHkoKTogRXZhbHVhdGlvblN0YWNrIHtcbiAgICByZXR1cm4gbmV3IHRoaXMoW10sIDAsIC0xKTtcbiAgfVxuXG4gIHN0YXRpYyByZXN0b3JlKHNuYXBzaG90OiBDYXB0dXJlZFN0YWNrKTogRXZhbHVhdGlvblN0YWNrIHtcbiAgICByZXR1cm4gbmV3IHRoaXMoc25hcHNob3Quc2xpY2UoKSwgMCwgc25hcHNob3QubGVuZ3RoIC0gMSk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0YWNrOiBPcGFxdWVbXSwgcHVibGljIGZwOiBudW1iZXIsIHB1YmxpYyBzcDogbnVtYmVyKSB7XG4gICAgT2JqZWN0LnNlYWwodGhpcyk7XG4gIH1cblxuICBpc0VtcHR5KCkge1xuICAgIHJldHVybiB0aGlzLnNwID09PSAtMTtcbiAgfVxuXG4gIHB1c2godmFsdWU6IE9wYXF1ZSk6IHZvaWQge1xuICAgIHRoaXMuc3RhY2tbKyt0aGlzLnNwXSA9IHZhbHVlO1xuICB9XG5cbiAgZHVwKHBvc2l0aW9uID0gdGhpcy5zcCk6IHZvaWQge1xuICAgIHRoaXMucHVzaCh0aGlzLnN0YWNrW3Bvc2l0aW9uXSk7XG4gIH1cblxuICBwb3A8VD4obiA9IDEpOiBUIHtcbiAgICBsZXQgdG9wID0gdGhpcy5zdGFja1t0aGlzLnNwXSBhcyBUO1xuICAgIHRoaXMuc3AgLT0gbjtcbiAgICByZXR1cm4gdG9wO1xuICB9XG5cbiAgcGVlazxUPigpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5zdGFja1t0aGlzLnNwXSBhcyBUO1xuICB9XG5cbiAgZnJvbUJhc2U8VD4ob2Zmc2V0OiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5zdGFja1t0aGlzLmZwIC0gb2Zmc2V0XSBhcyBUO1xuICB9XG5cbiAgZnJvbVRvcDxUPihvZmZzZXQ6IG51bWJlcik6IFQge1xuICAgIHJldHVybiB0aGlzLnN0YWNrW3RoaXMuc3AgLSBvZmZzZXRdIGFzIFQ7XG4gIH1cblxuICBjYXB0dXJlKGl0ZW1zOiBudW1iZXIpOiBDYXB0dXJlZFN0YWNrIHtcbiAgICBsZXQgZW5kID0gdGhpcy5zcCArIDE7XG4gICAgbGV0IHN0YXJ0ID0gZW5kIC0gaXRlbXM7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2suc2xpY2Uoc3RhcnQsIGVuZCk7XG4gIH1cblxuICB0b0FycmF5KCkge1xuICAgIHJldHVybiB0aGlzLnN0YWNrLnNsaWNlKHRoaXMuZnAsIHRoaXMuc3AgKyAxKTtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBJdGVyYXRvclJlc3VsdDxUPiA9IHtcbiAgZG9uZTogZmFsc2U7XG4gIHZhbHVlOiBudWxsO1xufSB8IHtcbiAgZG9uZTogdHJ1ZTtcbiAgdmFsdWU6IFQ7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWTSBpbXBsZW1lbnRzIFB1YmxpY1ZNIHtcbiAgcHJpdmF0ZSBkeW5hbWljU2NvcGVTdGFjayA9IG5ldyBTdGFjazxEeW5hbWljU2NvcGU+KCk7XG4gIHByaXZhdGUgc2NvcGVTdGFjayA9IG5ldyBTdGFjazxTY29wZT4oKTtcbiAgcHVibGljIHVwZGF0aW5nT3Bjb2RlU3RhY2sgPSBuZXcgU3RhY2s8TGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4+KCk7XG4gIHB1YmxpYyBjYWNoZUdyb3VwcyA9IG5ldyBTdGFjazxPcHRpb248VXBkYXRpbmdPcGNvZGU+PigpO1xuICBwdWJsaWMgbGlzdEJsb2NrU3RhY2sgPSBuZXcgU3RhY2s8TGlzdEJsb2NrT3Bjb2RlPigpO1xuICBwdWJsaWMgY29uc3RhbnRzOiBDb25zdGFudHM7XG5cbiAgcHVibGljIHN0YWNrID0gRXZhbHVhdGlvblN0YWNrLmVtcHR5KCk7XG5cbiAgLyoqIFJlZ2lzdGVycyAqKi9cblxuICBwcml2YXRlIHBjID0gLTE7XG4gIHByaXZhdGUgcmEgPSAtMTtcblxuICBwcml2YXRlIGdldCBmcCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnN0YWNrLmZwO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXQgZnAoZnA6IG51bWJlcikge1xuICAgIHRoaXMuc3RhY2suZnAgPSBmcDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHNwKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2suc3A7XG4gIH1cblxuICBwcml2YXRlIHNldCBzcChzcDogbnVtYmVyKSB7XG4gICAgdGhpcy5zdGFjay5zcCA9IHNwO1xuICB9XG5cbiAgcHVibGljIHMwOiBhbnkgPSBudWxsO1xuICBwdWJsaWMgczE6IGFueSA9IG51bGw7XG4gIHB1YmxpYyB0MDogYW55ID0gbnVsbDtcbiAgcHVibGljIHQxOiBhbnkgPSBudWxsO1xuXG4gIC8vIEZldGNoIGEgdmFsdWUgZnJvbSBhIHJlZ2lzdGVyIG9udG8gdGhlIHN0YWNrXG4gIGZldGNoKHJlZ2lzdGVyOiBSZWdpc3Rlcikge1xuICAgIHRoaXMuc3RhY2sucHVzaCh0aGlzW1JlZ2lzdGVyW3JlZ2lzdGVyXV0pO1xuICB9XG5cbiAgLy8gTG9hZCBhIHZhbHVlIGZyb20gdGhlIHN0YWNrIGludG8gYSByZWdpc3RlclxuICBsb2FkKHJlZ2lzdGVyOiBSZWdpc3Rlcikge1xuICAgIHRoaXNbUmVnaXN0ZXJbcmVnaXN0ZXJdXSA9IHRoaXMuc3RhY2sucG9wKCk7XG4gIH1cblxuICAvLyBGZXRjaCBhIHZhbHVlIGZyb20gYSByZWdpc3RlclxuICBmZXRjaFZhbHVlPFQ+KHJlZ2lzdGVyOiBSZWdpc3Rlcik6IFQge1xuICAgIHJldHVybiB0aGlzW1JlZ2lzdGVyW3JlZ2lzdGVyXV07XG4gIH1cblxuICAvLyBMb2FkIGEgdmFsdWUgaW50byBhIHJlZ2lzdGVyXG4gIGxvYWRWYWx1ZTxUPihyZWdpc3RlcjogUmVnaXN0ZXIsIHZhbHVlOiBUKSB7XG4gICAgdGhpc1tSZWdpc3RlcltyZWdpc3Rlcl1dID0gdmFsdWU7XG4gIH1cblxuICAvLyBTdGFydCBhIG5ldyBmcmFtZSBhbmQgc2F2ZSAkcmEgYW5kICRmcCBvbiB0aGUgc3RhY2tcbiAgcHVzaEZyYW1lKCkge1xuICAgIHRoaXMuc3RhY2sucHVzaCh0aGlzLnJhKTtcbiAgICB0aGlzLnN0YWNrLnB1c2godGhpcy5mcCk7XG4gICAgdGhpcy5mcCA9IHRoaXMuc3AgLSAxO1xuICAgIC8vIHRoaXMuZnAgPSB0aGlzLnNwICsgMTtcbiAgfVxuXG4gIC8vIFJlc3RvcmUgJHJhLCAkc3AgYW5kICRmcFxuICBwb3BGcmFtZSgpIHtcbiAgICB0aGlzLnNwID0gdGhpcy5mcCAtIDE7XG4gICAgdGhpcy5yYSA9IHRoaXMuc3RhY2suZnJvbUJhc2U8bnVtYmVyPigwKTtcbiAgICB0aGlzLmZwID0gdGhpcy5zdGFjay5mcm9tQmFzZTxudW1iZXI+KC0xKTtcbiAgfVxuXG4gIC8vIEp1bXAgdG8gYW4gYWRkcmVzcyBpbiBgcHJvZ3JhbWBcbiAgZ290byhwYzogbnVtYmVyKSB7XG4gICAgdGhpcy5wYyA9IHBjO1xuICB9XG5cbiAgLy8gU2F2ZSAkcGMgaW50byAkcmEsIHRoZW4ganVtcCB0byBhIG5ldyBhZGRyZXNzIGluIGBwcm9ncmFtYCAoamFsIGluIE1JUFMpXG4gIGNhbGwocGM6IG51bWJlcikge1xuICAgIHRoaXMucmEgPSB0aGlzLnBjO1xuICAgIHRoaXMucGMgPSBwYztcbiAgfVxuXG4gIC8vIFB1dCBhIHNwZWNpZmljIGBwcm9ncmFtYCBhZGRyZXNzIGluICRyYVxuICByZXR1cm5UbyhyYTogbnVtYmVyKSB7XG4gICAgdGhpcy5yYSA9IHJhO1xuICB9XG5cbiAgLy8gUmV0dXJuIHRvIHRoZSBgcHJvZ3JhbWAgYWRkcmVzcyBzdG9yZWQgaW4gJHJhXG4gIHJldHVybigpIHtcbiAgICB0aGlzLnBjID0gdGhpcy5yYTtcbiAgfVxuXG4gIHN0YXRpYyBpbml0aWFsKFxuICAgIGVudjogRW52aXJvbm1lbnQsXG4gICAgc2VsZjogUGF0aFJlZmVyZW5jZTxPcGFxdWU+LFxuICAgIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlLFxuICAgIGVsZW1lbnRTdGFjazogRWxlbWVudFN0YWNrLFxuICAgIHByb2dyYW06IENvbXBpbGVkRHluYW1pY1Byb2dyYW1cbiAgKSB7XG4gICAgbGV0IHNjb3BlID0gU2NvcGUucm9vdChzZWxmLCBwcm9ncmFtLnN5bWJvbFRhYmxlLnN5bWJvbHMubGVuZ3RoKTtcbiAgICBsZXQgdm0gPSBuZXcgVk0oZW52LCBzY29wZSwgZHluYW1pY1Njb3BlLCBlbGVtZW50U3RhY2spO1xuICAgIHZtLnBjID0gcHJvZ3JhbS5zdGFydDtcbiAgICB2bS51cGRhdGluZ09wY29kZVN0YWNrLnB1c2gobmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCkpO1xuICAgIHJldHVybiB2bTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBlbnY6IEVudmlyb25tZW50LFxuICAgIHNjb3BlOiBTY29wZSxcbiAgICBkeW5hbWljU2NvcGU6IER5bmFtaWNTY29wZSxcbiAgICBwcml2YXRlIGVsZW1lbnRTdGFjazogRWxlbWVudFN0YWNrLFxuICApIHtcbiAgICB0aGlzLmVudiA9IGVudjtcbiAgICB0aGlzLmNvbnN0YW50cyA9IGVudi5jb25zdGFudHM7XG4gICAgdGhpcy5lbGVtZW50U3RhY2sgPSBlbGVtZW50U3RhY2s7XG4gICAgdGhpcy5zY29wZVN0YWNrLnB1c2goc2NvcGUpO1xuICAgIHRoaXMuZHluYW1pY1Njb3BlU3RhY2sucHVzaChkeW5hbWljU2NvcGUpO1xuICB9XG5cbiAgY2FwdHVyZShhcmdzOiBudW1iZXIpOiBWTVN0YXRlIHtcbiAgICByZXR1cm4ge1xuICAgICAgZW52OiB0aGlzLmVudixcbiAgICAgIHNjb3BlOiB0aGlzLnNjb3BlKCksXG4gICAgICBkeW5hbWljU2NvcGU6IHRoaXMuZHluYW1pY1Njb3BlKCksXG4gICAgICBzdGFjazogdGhpcy5zdGFjay5jYXB0dXJlKGFyZ3MpXG4gICAgfTtcbiAgfVxuXG4gIGJlZ2luQ2FjaGVHcm91cCgpIHtcbiAgICB0aGlzLmNhY2hlR3JvdXBzLnB1c2godGhpcy51cGRhdGluZygpLnRhaWwoKSk7XG4gIH1cblxuICBjb21taXRDYWNoZUdyb3VwKCkge1xuICAgIC8vICAgICAgICBKdW1wSWZOb3RNb2RpZmllZChFTkQpXG4gICAgLy8gICAgICAgIChoZWFkKVxuICAgIC8vICAgICAgICAoLi4uLilcbiAgICAvLyAgICAgICAgKHRhaWwpXG4gICAgLy8gICAgICAgIERpZE1vZGlmeVxuICAgIC8vIEVORDogICBOb29wXG5cbiAgICBsZXQgRU5EID0gbmV3IExhYmVsT3Bjb2RlKFwiRU5EXCIpO1xuXG4gICAgbGV0IG9wY29kZXMgPSB0aGlzLnVwZGF0aW5nKCk7XG4gICAgbGV0IG1hcmtlciA9IHRoaXMuY2FjaGVHcm91cHMucG9wKCk7XG4gICAgbGV0IGhlYWQgPSBtYXJrZXIgPyBvcGNvZGVzLm5leHROb2RlKG1hcmtlcikgOiBvcGNvZGVzLmhlYWQoKTtcbiAgICBsZXQgdGFpbCA9IG9wY29kZXMudGFpbCgpO1xuICAgIGxldCB0YWcgPSBjb21iaW5lU2xpY2UobmV3IExpc3RTbGljZShoZWFkLCB0YWlsKSk7XG5cbiAgICBsZXQgZ3VhcmQgPSBuZXcgSnVtcElmTm90TW9kaWZpZWRPcGNvZGUodGFnLCBFTkQpO1xuXG4gICAgb3Bjb2Rlcy5pbnNlcnRCZWZvcmUoZ3VhcmQsIGhlYWQpO1xuICAgIG9wY29kZXMuYXBwZW5kKG5ldyBEaWRNb2RpZnlPcGNvZGUoZ3VhcmQpKTtcbiAgICBvcGNvZGVzLmFwcGVuZChFTkQpO1xuICB9XG5cbiAgZW50ZXIoYXJnczogbnVtYmVyKSB7XG4gICAgbGV0IHVwZGF0aW5nID0gbmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCk7XG5cbiAgICBsZXQgc3RhdGUgPSB0aGlzLmNhcHR1cmUoYXJncyk7XG4gICAgbGV0IHRyYWNrZXIgPSB0aGlzLmVsZW1lbnRzKCkucHVzaFVwZGF0YWJsZUJsb2NrKCk7XG5cbiAgICBsZXQgdHJ5T3Bjb2RlID0gbmV3IFRyeU9wY29kZSh0aGlzLnBjLCBzdGF0ZSwgdHJhY2tlciwgdXBkYXRpbmcpO1xuXG4gICAgdGhpcy5kaWRFbnRlcih0cnlPcGNvZGUpO1xuICB9XG5cbiAgaXRlcmF0ZShtZW1vOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIHZhbHVlOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIHVwZGF0aW5nID0gbmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCkpOiBUcnlPcGNvZGUge1xuICAgIGxldCBzdGFjayA9IHRoaXMuc3RhY2s7XG4gICAgc3RhY2sucHVzaCh2YWx1ZSk7XG4gICAgc3RhY2sucHVzaChtZW1vKTtcblxuICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZSgyKTtcbiAgICBsZXQgdHJhY2tlciA9IHRoaXMuZWxlbWVudHMoKS5wdXNoVXBkYXRhYmxlQmxvY2soKTtcblxuICAgIC8vIGxldCBpcCA9IHRoaXMuaXA7XG4gICAgLy8gdGhpcy5pcCA9IGVuZCArIDQ7XG4gICAgLy8gdGhpcy5mcmFtZXMucHVzaChpcCk7XG5cbiAgICByZXR1cm4gbmV3IFRyeU9wY29kZSh0aGlzLnBjLCBzdGF0ZSwgdHJhY2tlciwgdXBkYXRpbmcpO1xuICB9XG5cbiAgZW50ZXJJdGVtKGtleTogc3RyaW5nLCBvcGNvZGU6IFRyeU9wY29kZSkge1xuICAgIHRoaXMubGlzdEJsb2NrKCkubWFwW2tleV0gPSBvcGNvZGU7XG4gICAgdGhpcy5kaWRFbnRlcihvcGNvZGUpO1xuICB9XG5cbiAgZW50ZXJMaXN0KHN0YXJ0OiBudW1iZXIpIHtcbiAgICBsZXQgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdDxCbG9ja09wY29kZT4oKTtcblxuICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZSgwKTtcbiAgICBsZXQgdHJhY2tlciA9IHRoaXMuZWxlbWVudHMoKS5wdXNoQmxvY2tMaXN0KHVwZGF0aW5nKTtcbiAgICBsZXQgYXJ0aWZhY3RzID0gdGhpcy5zdGFjay5wZWVrPFJlZmVyZW5jZUl0ZXJhdG9yPigpLmFydGlmYWN0cztcblxuICAgIGxldCBvcGNvZGUgPSBuZXcgTGlzdEJsb2NrT3Bjb2RlKHN0YXJ0LCBzdGF0ZSwgdHJhY2tlciwgdXBkYXRpbmcsIGFydGlmYWN0cyk7XG5cbiAgICB0aGlzLmxpc3RCbG9ja1N0YWNrLnB1c2gob3Bjb2RlKTtcblxuICAgIHRoaXMuZGlkRW50ZXIob3Bjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgZGlkRW50ZXIob3Bjb2RlOiBCbG9ja09wY29kZSkge1xuICAgIHRoaXMudXBkYXRlV2l0aChvcGNvZGUpO1xuICAgIHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5wdXNoKG9wY29kZS5jaGlsZHJlbik7XG4gIH1cblxuICBleGl0KCkge1xuICAgIHRoaXMuZWxlbWVudHMoKS5wb3BCbG9jaygpO1xuICAgIHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5wb3AoKTtcblxuICAgIGxldCBwYXJlbnQgPSB0aGlzLnVwZGF0aW5nKCkudGFpbCgpIGFzIEJsb2NrT3Bjb2RlO1xuXG4gICAgcGFyZW50LmRpZEluaXRpYWxpemVDaGlsZHJlbigpO1xuICB9XG5cbiAgZXhpdExpc3QoKSB7XG4gICAgdGhpcy5leGl0KCk7XG4gICAgdGhpcy5saXN0QmxvY2tTdGFjay5wb3AoKTtcbiAgfVxuXG4gIHVwZGF0ZVdpdGgob3Bjb2RlOiBVcGRhdGluZ09wY29kZSkge1xuICAgIHRoaXMudXBkYXRpbmcoKS5hcHBlbmQob3Bjb2RlKTtcbiAgfVxuXG4gIGxpc3RCbG9jaygpOiBMaXN0QmxvY2tPcGNvZGUge1xuICAgIHJldHVybiBleHBlY3QodGhpcy5saXN0QmxvY2tTdGFjay5jdXJyZW50LCAnZXhwZWN0ZWQgYSBsaXN0IGJsb2NrJyk7XG4gIH1cblxuICB1cGRhdGluZygpOiBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPiB7XG4gICAgcmV0dXJuIGV4cGVjdCh0aGlzLnVwZGF0aW5nT3Bjb2RlU3RhY2suY3VycmVudCwgJ2V4cGVjdGVkIHVwZGF0aW5nIG9wY29kZSBvbiB0aGUgdXBkYXRpbmcgb3Bjb2RlIHN0YWNrJyk7XG4gIH1cblxuICBlbGVtZW50cygpOiBFbGVtZW50U3RhY2sge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRTdGFjaztcbiAgfVxuXG4gIHNjb3BlKCk6IFNjb3BlIHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXMuc2NvcGVTdGFjay5jdXJyZW50LCAnZXhwZWN0ZWQgc2NvcGUgb24gdGhlIHNjb3BlIHN0YWNrJyk7XG4gIH1cblxuICBkeW5hbWljU2NvcGUoKTogRHluYW1pY1Njb3BlIHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXMuZHluYW1pY1Njb3BlU3RhY2suY3VycmVudCwgJ2V4cGVjdGVkIGR5bmFtaWMgc2NvcGUgb24gdGhlIGR5bmFtaWMgc2NvcGUgc3RhY2snKTtcbiAgfVxuXG4gIHB1c2hDaGlsZFNjb3BlKCkge1xuICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKHRoaXMuc2NvcGUoKS5jaGlsZCgpKTtcbiAgfVxuXG4gIHB1c2hDYWxsZXJTY29wZShjaGlsZFNjb3BlID0gZmFsc2UpIHtcbiAgICBsZXQgY2FsbGVyU2NvcGUgPSBleHBlY3QodGhpcy5zY29wZSgpLmdldENhbGxlclNjb3BlKCksICdwdXNoQ2FsbGVyU2NvcGUgaXMgY2FsbGVkIHdoZW4gYSBjYWxsZXIgc2NvcGUgaXMgcHJlc2VudCcpO1xuICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKGNoaWxkU2NvcGUgPyBjYWxsZXJTY29wZS5jaGlsZCgpIDogY2FsbGVyU2NvcGUpO1xuICB9XG5cbiAgcHVzaER5bmFtaWNTY29wZSgpOiBEeW5hbWljU2NvcGUge1xuICAgIGxldCBjaGlsZCA9IHRoaXMuZHluYW1pY1Njb3BlKCkuY2hpbGQoKTtcbiAgICB0aGlzLmR5bmFtaWNTY29wZVN0YWNrLnB1c2goY2hpbGQpO1xuICAgIHJldHVybiBjaGlsZDtcbiAgfVxuXG4gIHB1c2hSb290U2NvcGUoc2l6ZTogbnVtYmVyLCBiaW5kQ2FsbGVyOiBib29sZWFuKTogU2NvcGUge1xuICAgIGxldCBzY29wZSA9IFNjb3BlLnNpemVkKHNpemUpO1xuICAgIGlmIChiaW5kQ2FsbGVyKSBzY29wZS5iaW5kQ2FsbGVyU2NvcGUodGhpcy5zY29wZSgpKTtcbiAgICB0aGlzLnNjb3BlU3RhY2sucHVzaChzY29wZSk7XG4gICAgcmV0dXJuIHNjb3BlO1xuICB9XG5cbiAgcG9wU2NvcGUoKSB7XG4gICAgdGhpcy5zY29wZVN0YWNrLnBvcCgpO1xuICB9XG5cbiAgcG9wRHluYW1pY1Njb3BlKCkge1xuICAgIHRoaXMuZHluYW1pY1Njb3BlU3RhY2sucG9wKCk7XG4gIH1cblxuICBuZXdEZXN0cm95YWJsZShkOiBEZXN0cm95YWJsZSkge1xuICAgIHRoaXMuZWxlbWVudHMoKS5uZXdEZXN0cm95YWJsZShkKTtcbiAgfVxuXG4gIC8vLyBTQ09QRSBIRUxQRVJTXG5cbiAgZ2V0U2VsZigpOiBQYXRoUmVmZXJlbmNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnNjb3BlKCkuZ2V0U2VsZigpO1xuICB9XG5cbiAgcmVmZXJlbmNlRm9yU3ltYm9sKHN5bWJvbDogbnVtYmVyKTogUGF0aFJlZmVyZW5jZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5zY29wZSgpLmdldFN5bWJvbChzeW1ib2wpO1xuICB9XG5cbiAgLy8vIEVYRUNVVElPTlxuXG4gIGV4ZWN1dGUoc3RhcnQ6IG51bWJlciwgaW5pdGlhbGl6ZT86ICh2bTogVk0pID0+IHZvaWQpOiBSZW5kZXJSZXN1bHQge1xuICAgIHRoaXMucGMgPSBzdGFydDtcblxuICAgIGlmIChpbml0aWFsaXplKSBpbml0aWFsaXplKHRoaXMpO1xuXG4gICAgbGV0IHJlc3VsdDogSXRlcmF0b3JSZXN1bHQ8UmVuZGVyUmVzdWx0PjtcblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICByZXN1bHQgPSB0aGlzLm5leHQoKTtcbiAgICAgIGlmIChyZXN1bHQuZG9uZSkgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdC52YWx1ZSBhcyBSZW5kZXJSZXN1bHQ7XG4gIH1cblxuICBuZXh0KCk6IEl0ZXJhdG9yUmVzdWx0PFJlbmRlclJlc3VsdD4ge1xuICAgIGxldCB7IGVudiwgdXBkYXRpbmdPcGNvZGVTdGFjaywgZWxlbWVudFN0YWNrIH0gPSB0aGlzO1xuICAgIGxldCBvcGNvZGU6IE9wdGlvbjxPcGNvZGU+O1xuXG4gICAgaWYgKG9wY29kZSA9IHRoaXMubmV4dFN0YXRlbWVudChlbnYpKSB7XG4gICAgICBBUFBFTkRfT1BDT0RFUy5ldmFsdWF0ZSh0aGlzLCBvcGNvZGUsIG9wY29kZS50eXBlKTtcbiAgICAgIHJldHVybiB7IGRvbmU6IGZhbHNlLCB2YWx1ZTogbnVsbCB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkb25lOiB0cnVlLFxuICAgICAgdmFsdWU6IG5ldyBSZW5kZXJSZXN1bHQoXG4gICAgICAgIGVudixcbiAgICAgICAgZXhwZWN0KHVwZGF0aW5nT3Bjb2RlU3RhY2sucG9wKCksICd0aGVyZSBzaG91bGQgYmUgYSBmaW5hbCB1cGRhdGluZyBvcGNvZGUgc3RhY2snKSxcbiAgICAgICAgZWxlbWVudFN0YWNrLnBvcEJsb2NrKClcbiAgICAgIClcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBuZXh0U3RhdGVtZW50KGVudjogRW52aXJvbm1lbnQpOiBPcHRpb248T3Bjb2RlPiB7XG4gICAgbGV0IHsgcGMgfSA9IHRoaXM7XG5cbiAgICBpZiAocGMgPT09IC0xKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgcHJvZ3JhbSA9IGVudi5wcm9ncmFtO1xuICAgIHRoaXMucGMgKz0gNDtcbiAgICByZXR1cm4gcHJvZ3JhbS5vcGNvZGUocGMpO1xuICB9XG5cbiAgZXZhbHVhdGVPcGNvZGUob3Bjb2RlOiBPcGNvZGUpIHtcbiAgICBBUFBFTkRfT1BDT0RFUy5ldmFsdWF0ZSh0aGlzLCBvcGNvZGUsIG9wY29kZS50eXBlKTtcbiAgfVxuXG4gIGJpbmREeW5hbWljU2NvcGUobmFtZXM6IENvbnN0YW50U3RyaW5nW10pIHtcbiAgICBsZXQgc2NvcGUgPSB0aGlzLmR5bmFtaWNTY29wZSgpO1xuXG4gICAgZm9yKGxldCBpPW5hbWVzLmxlbmd0aCAtIDE7IGk+PTA7IGktLSkge1xuICAgICAgbGV0IG5hbWUgPSB0aGlzLmNvbnN0YW50cy5nZXRTdHJpbmcobmFtZXNbaV0pO1xuICAgICAgc2NvcGUuc2V0KG5hbWUsIHRoaXMuc3RhY2sucG9wPFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPj4oKSk7XG4gICAgfVxuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwZW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBwZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxBQUFPLEFBQUUsQUFBUSxBQUFFLEFBQU0sQUFBWSxBQUFDOztBQUN0QyxBQUFPLEFBQUUsQUFBSyxBQUFxQyxBQUFNLEFBQWdCLEFBQUM7O0FBRTFFLEFBQU8sQUFBdUIsQUFBSyxBQUFFLEFBQVUsQUFBRSxBQUFTLEFBQVUsQUFBTSxBQUFlLEFBQUM7O0FBQzFGLEFBQU8sQUFBNEQsQUFBWSxBQUFFLEFBQU0sQUFBb0IsQUFBQzs7QUFFNUcsQUFBTyxBQUFFLEFBQVcsQUFBRSxBQUF1QixBQUFFLEFBQWUsQUFBRSxBQUFNLEFBQXdCLEFBQUM7O0FBQy9GLEFBQU8sQUFBVyxBQUFlLEFBQUUsQUFBUyxBQUFlLEFBQU0sQUFBVSxBQUFDOztBQUM1RSxBQUFPLEFBQVksQUFBTSxBQUFpQixBQUFDLEFBRTNDLEFBQU8sQUFDTCxBQUFjLEFBRWYsQUFBTSxBQUFZLEFBQUMsQUFnQnBCLEFBQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7NERBU0o7NkJBQW9CLEFBQWUsT0FBUyxBQUFVLElBQVMsQUFBVTs4QkFBckQ7O2FBQUssUUFBTCxBQUFLLEFBQVUsQUFBUzthQUFFLEtBQUYsQUFBRSxBQUFRLEFBQVM7YUFBRSxLQUFGLEFBQUUsQUFBUSxBQUN2RSxBQUFNO2VBQUMsQUFBSSxLQVRiLEFBQU0sQUFTUSxBQUFJLEFBQUMsQUFBQyxBQUNwQixBQUFDOzs7b0JBVk0sQUFBSyx5QkFDVixBQUFNO2VBQUMsSUFBSSxBQUFJLEtBQUMsQUFBRSxJQUFFLEFBQUMsR0FBRSxDQUFDLEFBQUMsQUFBQyxBQUFDLEFBQzdCLEFBQUMsQUFFRCxBQUFNOzs7b0JBQUMsQUFBTywyQkFBQyxBQUF1QixVQUNwQyxBQUFNO2VBQUMsSUFBSSxBQUFJLEtBQUMsQUFBUSxTQUFDLEFBQUssQUFBRSxTQUFFLEFBQUMsR0FBRSxBQUFRLFNBQUMs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QUFDLEFBQVUsSUFDdkIsQUFBSTtpQkFBQyxBQUFLLE1BQUMsQUFBRSxLQUFHLEFBQUUsQUFBQyxBQUNyQixBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVnaXN0ZXIgfSBmcm9tICcuLi9vcGNvZGVzJztcbmltcG9ydCB7IFNjb3BlLCBEeW5hbWljU2NvcGUsIEVudmlyb25tZW50LCBPcGNvZGUgfSBmcm9tICcuLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBFbGVtZW50U3RhY2sgfSBmcm9tICcuLi9idWlsZGVyJztcbmltcG9ydCB7IE9wdGlvbiwgRGVzdHJveWFibGUsIFN0YWNrLCBMaW5rZWRMaXN0LCBMaXN0U2xpY2UsIE9wYXF1ZSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgUmVmZXJlbmNlSXRlcmF0b3IsIFBhdGhSZWZlcmVuY2UsIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIGNvbWJpbmVTbGljZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBDb21waWxlZER5bmFtaWNQcm9ncmFtIH0gZnJvbSAnLi4vY29tcGlsZWQvYmxvY2tzJztcbmltcG9ydCB7IExhYmVsT3Bjb2RlLCBKdW1wSWZOb3RNb2RpZmllZE9wY29kZSwgRGlkTW9kaWZ5T3Bjb2RlIH0gZnJvbSAnLi4vY29tcGlsZWQvb3Bjb2Rlcy92bSc7XG5pbXBvcnQgeyBWTVN0YXRlLCBMaXN0QmxvY2tPcGNvZGUsIFRyeU9wY29kZSwgQmxvY2tPcGNvZGUgfSBmcm9tICcuL3VwZGF0ZSc7XG5pbXBvcnQgUmVuZGVyUmVzdWx0IGZyb20gJy4vcmVuZGVyLXJlc3VsdCc7XG5cbmltcG9ydCB7XG4gIEFQUEVORF9PUENPREVTLFxuICBVcGRhdGluZ09wY29kZVxufSBmcm9tICcuLi9vcGNvZGVzJztcblxuaW1wb3J0IHtcbiAgQ29uc3RhbnRzLFxuICBDb25zdGFudFN0cmluZ1xufSBmcm9tICcuLi9lbnZpcm9ubWVudC9jb25zdGFudHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFB1YmxpY1ZNIHtcbiAgZW52OiBFbnZpcm9ubWVudDtcbiAgZHluYW1pY1Njb3BlKCk6IER5bmFtaWNTY29wZTtcbiAgZ2V0U2VsZigpOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT47XG4gIG5ld0Rlc3Ryb3lhYmxlKGQ6IERlc3Ryb3lhYmxlKTogdm9pZDtcbn1cblxuZXhwb3J0IHR5cGUgQ2FwdHVyZWRTdGFjayA9IE9wYXF1ZVtdO1xuXG5leHBvcnQgY2xhc3MgRXZhbHVhdGlvblN0YWNrIHtcbiAgc3RhdGljIGVtcHR5KCk6IEV2YWx1YXRpb25TdGFjayB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKFtdLCAwLCAtMSk7XG4gIH1cblxuICBzdGF0aWMgcmVzdG9yZShzbmFwc2hvdDogQ2FwdHVyZWRTdGFjayk6IEV2YWx1YXRpb25TdGFjayB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKHNuYXBzaG90LnNsaWNlKCksIDAsIHNuYXBzaG90Lmxlbmd0aCAtIDEpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdGFjazogT3BhcXVlW10sIHB1YmxpYyBmcDogbnVtYmVyLCBwdWJsaWMgc3A6IG51bWJlcikge1xuICAgIE9iamVjdC5zZWFsKHRoaXMpO1xuICB9XG5cbiAgaXNFbXB0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5zcCA9PT0gLTE7XG4gIH1cblxuICBwdXNoKHZhbHVlOiBPcGFxdWUpOiB2b2lkIHtcbiAgICB0aGlzLnN0YWNrWysrdGhpcy5zcF0gPSB2YWx1ZTtcbiAgfVxuXG4gIGR1cChwb3NpdGlvbiA9IHRoaXMuc3ApOiB2b2lkIHtcbiAgICB0aGlzLnB1c2godGhpcy5zdGFja1twb3NpdGlvbl0pO1xuICB9XG5cbiAgcG9wPFQ+KG4gPSAxKTogVCB7XG4gICAgbGV0IHRvcCA9IHRoaXMuc3RhY2tbdGhpcy5zcF0gYXMgVDtcbiAgICB0aGlzLnNwIC09IG47XG4gICAgcmV0dXJuIHRvcDtcbiAgfVxuXG4gIHBlZWs8VD4oKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2tbdGhpcy5zcF0gYXMgVDtcbiAgfVxuXG4gIGZyb21CYXNlPFQ+KG9mZnNldDogbnVtYmVyKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2tbdGhpcy5mcCAtIG9mZnNldF0gYXMgVDtcbiAgfVxuXG4gIGZyb21Ub3A8VD4ob2Zmc2V0OiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5zdGFja1t0aGlzLnNwIC0gb2Zmc2V0XSBhcyBUO1xuICB9XG5cbiAgY2FwdHVyZShpdGVtczogbnVtYmVyKTogQ2FwdHVyZWRTdGFjayB7XG4gICAgbGV0IGVuZCA9IHRoaXMuc3AgKyAxO1xuICAgIGxldCBzdGFydCA9IGVuZCAtIGl0ZW1zO1xuICAgIHJldHVybiB0aGlzLnN0YWNrLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICB9XG5cbiAgdG9BcnJheSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGFjay5zbGljZSh0aGlzLmZwLCB0aGlzLnNwICsgMSk7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgSXRlcmF0b3JSZXN1bHQ8VD4gPSB7XG4gIGRvbmU6IGZhbHNlO1xuICB2YWx1ZTogbnVsbDtcbn0gfCB7XG4gIGRvbmU6IHRydWU7XG4gIHZhbHVlOiBUO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVk0gaW1wbGVtZW50cyBQdWJsaWNWTSB7XG4gIHByaXZhdGUgZHluYW1pY1Njb3BlU3RhY2sgPSBuZXcgU3RhY2s8RHluYW1pY1Njb3BlPigpO1xuICBwcml2YXRlIHNjb3BlU3RhY2sgPSBuZXcgU3RhY2s8U2NvcGU+KCk7XG4gIHB1YmxpYyB1cGRhdGluZ09wY29kZVN0YWNrID0gbmV3IFN0YWNrPExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+PigpO1xuICBwdWJsaWMgY2FjaGVHcm91cHMgPSBuZXcgU3RhY2s8T3B0aW9uPFVwZGF0aW5nT3Bjb2RlPj4oKTtcbiAgcHVibGljIGxpc3RCbG9ja1N0YWNrID0gbmV3IFN0YWNrPExpc3RCbG9ja09wY29kZT4oKTtcbiAgcHVibGljIGNvbnN0YW50czogQ29uc3RhbnRzO1xuXG4gIHB1YmxpYyBzdGFjayA9IEV2YWx1YXRpb25TdGFjay5lbXB0eSgpO1xuXG4gIC8qKiBSZWdpc3RlcnMgKiovXG5cbiAgcHJpdmF0ZSBwYyA9IC0xO1xuICBwcml2YXRlIHJhID0gLTE7XG5cbiAgcHJpdmF0ZSBnZXQgZnAoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zdGFjay5mcDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0IGZwKGZwOiBudW1iZXIpIHtcbiAgICB0aGlzLnN0YWNrLmZwID0gZnA7XG4gIH1cblxuICBwcml2YXRlIGdldCBzcCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnN0YWNrLnNwO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXQgc3Aoc3A6IG51bWJlcikge1xuICAgIHRoaXMuc3RhY2suc3AgPSBzcDtcbiAgfVxuXG4gIHB1YmxpYyBzMDogYW55ID0gbnVsbDtcbiAgcHVibGljIHMxOiBhbnkgPSBudWxsO1xuICBwdWJsaWMgdDA6IGFueSA9IG51bGw7XG4gIHB1YmxpYyB0MTogYW55ID0gbnVsbDtcblxuICAvLyBGZXRjaCBhIHZhbHVlIGZyb20gYSByZWdpc3RlciBvbnRvIHRoZSBzdGFja1xuICBmZXRjaChyZWdpc3RlcjogUmVnaXN0ZXIpIHtcbiAgICB0aGlzLnN0YWNrLnB1c2godGhpc1tSZWdpc3RlcltyZWdpc3Rlcl1dKTtcbiAgfVxuXG4gIC8vIExvYWQgYSB2YWx1ZSBmcm9tIHRoZSBzdGFjayBpbnRvIGEgcmVnaXN0ZXJcbiAgbG9hZChyZWdpc3RlcjogUmVnaXN0ZXIpIHtcbiAgICB0aGlzW1JlZ2lzdGVyW3JlZ2lzdGVyXV0gPSB0aGlzLnN0YWNrLnBvcCgpO1xuICB9XG5cbiAgLy8gRmV0Y2ggYSB2YWx1ZSBmcm9tIGEgcmVnaXN0ZXJcbiAgZmV0Y2hWYWx1ZTxUPihyZWdpc3RlcjogUmVnaXN0ZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpc1tSZWdpc3RlcltyZWdpc3Rlcl1dO1xuICB9XG5cbiAgLy8gTG9hZCBhIHZhbHVlIGludG8gYSByZWdpc3RlclxuICBsb2FkVmFsdWU8VD4ocmVnaXN0ZXI6IFJlZ2lzdGVyLCB2YWx1ZTogVCkge1xuICAgIHRoaXNbUmVnaXN0ZXJbcmVnaXN0ZXJdXSA9IHZhbHVlO1xuICB9XG5cbiAgLy8gU3RhcnQgYSBuZXcgZnJhbWUgYW5kIHNhdmUgJHJhIGFuZCAkZnAgb24gdGhlIHN0YWNrXG4gIHB1c2hGcmFtZSgpIHtcbiAgICB0aGlzLnN0YWNrLnB1c2godGhpcy5yYSk7XG4gICAgdGhpcy5zdGFjay5wdXNoKHRoaXMuZnApO1xuICAgIHRoaXMuZnAgPSB0aGlzLnNwIC0gMTtcbiAgICAvLyB0aGlzLmZwID0gdGhpcy5zcCArIDE7XG4gIH1cblxuICAvLyBSZXN0b3JlICRyYSwgJHNwIGFuZCAkZnBcbiAgcG9wRnJhbWUoKSB7XG4gICAgdGhpcy5zcCA9IHRoaXMuZnAgLSAxO1xuICAgIHRoaXMucmEgPSB0aGlzLnN0YWNrLmZyb21CYXNlPG51bWJlcj4oMCk7XG4gICAgdGhpcy5mcCA9IHRoaXMuc3RhY2suZnJvbUJhc2U8bnVtYmVyPigtMSk7XG4gIH1cblxuICAvLyBKdW1wIHRvIGFuIGFkZHJlc3MgaW4gYHByb2dyYW1gXG4gIGdvdG8ocGM6IG51bWJlcikge1xuICAgIHRoaXMucGMgPSBwYztcbiAgfVxuXG4gIC8vIFNhdmUgJHBjIGludG8gJHJhLCB0aGVuIGp1bXAgdG8gYSBuZXcgYWRkcmVzcyBpbiBgcHJvZ3JhbWAgKGphbCBpbiBNSVBTKVxuICBjYWxsKHBjOiBudW1iZXIpIHtcbiAgICB0aGlzLnJhID0gdGhpcy5wYztcbiAgICB0aGlzLnBjID0gcGM7XG4gIH1cblxuICAvLyBQdXQgYSBzcGVjaWZpYyBgcHJvZ3JhbWAgYWRkcmVzcyBpbiAkcmFcbiAgcmV0dXJuVG8ocmE6IG51bWJlcikge1xuICAgIHRoaXMucmEgPSByYTtcbiAgfVxuXG4gIC8vIFJldHVybiB0byB0aGUgYHByb2dyYW1gIGFkZHJlc3Mgc3RvcmVkIGluICRyYVxuICByZXR1cm4oKSB7XG4gICAgdGhpcy5wYyA9IHRoaXMucmE7XG4gIH1cblxuICBzdGF0aWMgaW5pdGlhbChcbiAgICBlbnY6IEVudmlyb25tZW50LFxuICAgIHNlbGY6IFBhdGhSZWZlcmVuY2U8T3BhcXVlPixcbiAgICBkeW5hbWljU2NvcGU6IER5bmFtaWNTY29wZSxcbiAgICBlbGVtZW50U3RhY2s6IEVsZW1lbnRTdGFjayxcbiAgICBwcm9ncmFtOiBDb21waWxlZER5bmFtaWNQcm9ncmFtXG4gICkge1xuICAgIGxldCBzY29wZSA9IFNjb3BlLnJvb3Qoc2VsZiwgcHJvZ3JhbS5zeW1ib2xUYWJsZS5zeW1ib2xzLmxlbmd0aCk7XG4gICAgbGV0IHZtID0gbmV3IFZNKGVudiwgc2NvcGUsIGR5bmFtaWNTY29wZSwgZWxlbWVudFN0YWNrKTtcbiAgICB2bS5wYyA9IHByb2dyYW0uc3RhcnQ7XG4gICAgdm0udXBkYXRpbmdPcGNvZGVTdGFjay5wdXNoKG5ldyBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPigpKTtcbiAgICByZXR1cm4gdm07XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZW52OiBFbnZpcm9ubWVudCxcbiAgICBzY29wZTogU2NvcGUsXG4gICAgZHluYW1pY1Njb3BlOiBEeW5hbWljU2NvcGUsXG4gICAgcHJpdmF0ZSBlbGVtZW50U3RhY2s6IEVsZW1lbnRTdGFjayxcbiAgKSB7XG4gICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgdGhpcy5jb25zdGFudHMgPSBlbnYuY29uc3RhbnRzO1xuICAgIHRoaXMuZWxlbWVudFN0YWNrID0gZWxlbWVudFN0YWNrO1xuICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKHNjb3BlKTtcbiAgICB0aGlzLmR5bmFtaWNTY29wZVN0YWNrLnB1c2goZHluYW1pY1Njb3BlKTtcbiAgfVxuXG4gIGNhcHR1cmUoYXJnczogbnVtYmVyKTogVk1TdGF0ZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVudjogdGhpcy5lbnYsXG4gICAgICBzY29wZTogdGhpcy5zY29wZSgpLFxuICAgICAgZHluYW1pY1Njb3BlOiB0aGlzLmR5bmFtaWNTY29wZSgpLFxuICAgICAgc3RhY2s6IHRoaXMuc3RhY2suY2FwdHVyZShhcmdzKVxuICAgIH07XG4gIH1cblxuICBiZWdpbkNhY2hlR3JvdXAoKSB7XG4gICAgdGhpcy5jYWNoZUdyb3Vwcy5wdXNoKHRoaXMudXBkYXRpbmcoKS50YWlsKCkpO1xuICB9XG5cbiAgY29tbWl0Q2FjaGVHcm91cCgpIHtcbiAgICAvLyAgICAgICAgSnVtcElmTm90TW9kaWZpZWQoRU5EKVxuICAgIC8vICAgICAgICAoaGVhZClcbiAgICAvLyAgICAgICAgKC4uLi4pXG4gICAgLy8gICAgICAgICh0YWlsKVxuICAgIC8vICAgICAgICBEaWRNb2RpZnlcbiAgICAvLyBFTkQ6ICAgTm9vcFxuXG4gICAgbGV0IEVORCA9IG5ldyBMYWJlbE9wY29kZShcIkVORFwiKTtcblxuICAgIGxldCBvcGNvZGVzID0gdGhpcy51cGRhdGluZygpO1xuICAgIGxldCBtYXJrZXIgPSB0aGlzLmNhY2hlR3JvdXBzLnBvcCgpO1xuICAgIGxldCBoZWFkID0gbWFya2VyID8gb3Bjb2Rlcy5uZXh0Tm9kZShtYXJrZXIpIDogb3Bjb2Rlcy5oZWFkKCk7XG4gICAgbGV0IHRhaWwgPSBvcGNvZGVzLnRhaWwoKTtcbiAgICBsZXQgdGFnID0gY29tYmluZVNsaWNlKG5ldyBMaXN0U2xpY2UoaGVhZCwgdGFpbCkpO1xuXG4gICAgbGV0IGd1YXJkID0gbmV3IEp1bXBJZk5vdE1vZGlmaWVkT3Bjb2RlKHRhZywgRU5EKTtcblxuICAgIG9wY29kZXMuaW5zZXJ0QmVmb3JlKGd1YXJkLCBoZWFkKTtcbiAgICBvcGNvZGVzLmFwcGVuZChuZXcgRGlkTW9kaWZ5T3Bjb2RlKGd1YXJkKSk7XG4gICAgb3Bjb2Rlcy5hcHBlbmQoRU5EKTtcbiAgfVxuXG4gIGVudGVyKGFyZ3M6IG51bWJlcikge1xuICAgIGxldCB1cGRhdGluZyA9IG5ldyBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPigpO1xuXG4gICAgbGV0IHN0YXRlID0gdGhpcy5jYXB0dXJlKGFyZ3MpO1xuICAgIGxldCB0cmFja2VyID0gdGhpcy5lbGVtZW50cygpLnB1c2hVcGRhdGFibGVCbG9jaygpO1xuXG4gICAgbGV0IHRyeU9wY29kZSA9IG5ldyBUcnlPcGNvZGUodGhpcy5wYywgc3RhdGUsIHRyYWNrZXIsIHVwZGF0aW5nKTtcblxuICAgIHRoaXMuZGlkRW50ZXIodHJ5T3Bjb2RlKTtcbiAgfVxuXG4gIGl0ZXJhdGUobWVtbzogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+LCB2YWx1ZTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+LCB1cGRhdGluZyA9IG5ldyBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPigpKTogVHJ5T3Bjb2RlIHtcbiAgICBsZXQgc3RhY2sgPSB0aGlzLnN0YWNrO1xuICAgIHN0YWNrLnB1c2godmFsdWUpO1xuICAgIHN0YWNrLnB1c2gobWVtbyk7XG5cbiAgICBsZXQgc3RhdGUgPSB0aGlzLmNhcHR1cmUoMik7XG4gICAgbGV0IHRyYWNrZXIgPSB0aGlzLmVsZW1lbnRzKCkucHVzaFVwZGF0YWJsZUJsb2NrKCk7XG5cbiAgICAvLyBsZXQgaXAgPSB0aGlzLmlwO1xuICAgIC8vIHRoaXMuaXAgPSBlbmQgKyA0O1xuICAgIC8vIHRoaXMuZnJhbWVzLnB1c2goaXApO1xuXG4gICAgcmV0dXJuIG5ldyBUcnlPcGNvZGUodGhpcy5wYywgc3RhdGUsIHRyYWNrZXIsIHVwZGF0aW5nKTtcbiAgfVxuXG4gIGVudGVySXRlbShrZXk6IHN0cmluZywgb3Bjb2RlOiBUcnlPcGNvZGUpIHtcbiAgICB0aGlzLmxpc3RCbG9jaygpLm1hcFtrZXldID0gb3Bjb2RlO1xuICAgIHRoaXMuZGlkRW50ZXIob3Bjb2RlKTtcbiAgfVxuXG4gIGVudGVyTGlzdChzdGFydDogbnVtYmVyKSB7XG4gICAgbGV0IHVwZGF0aW5nID0gbmV3IExpbmtlZExpc3Q8QmxvY2tPcGNvZGU+KCk7XG5cbiAgICBsZXQgc3RhdGUgPSB0aGlzLmNhcHR1cmUoMCk7XG4gICAgbGV0IHRyYWNrZXIgPSB0aGlzLmVsZW1lbnRzKCkucHVzaEJsb2NrTGlzdCh1cGRhdGluZyk7XG4gICAgbGV0IGFydGlmYWN0cyA9IHRoaXMuc3RhY2sucGVlazxSZWZlcmVuY2VJdGVyYXRvcj4oKS5hcnRpZmFjdHM7XG5cbiAgICBsZXQgb3Bjb2RlID0gbmV3IExpc3RCbG9ja09wY29kZShzdGFydCwgc3RhdGUsIHRyYWNrZXIsIHVwZGF0aW5nLCBhcnRpZmFjdHMpO1xuXG4gICAgdGhpcy5saXN0QmxvY2tTdGFjay5wdXNoKG9wY29kZSk7XG5cbiAgICB0aGlzLmRpZEVudGVyKG9wY29kZSk7XG4gIH1cblxuICBwcml2YXRlIGRpZEVudGVyKG9wY29kZTogQmxvY2tPcGNvZGUpIHtcbiAgICB0aGlzLnVwZGF0ZVdpdGgob3Bjb2RlKTtcbiAgICB0aGlzLnVwZGF0aW5nT3Bjb2RlU3RhY2sucHVzaChvcGNvZGUuY2hpbGRyZW4pO1xuICB9XG5cbiAgZXhpdCgpIHtcbiAgICB0aGlzLmVsZW1lbnRzKCkucG9wQmxvY2soKTtcbiAgICB0aGlzLnVwZGF0aW5nT3Bjb2RlU3RhY2sucG9wKCk7XG5cbiAgICBsZXQgcGFyZW50ID0gdGhpcy51cGRhdGluZygpLnRhaWwoKSBhcyBCbG9ja09wY29kZTtcblxuICAgIHBhcmVudC5kaWRJbml0aWFsaXplQ2hpbGRyZW4oKTtcbiAgfVxuXG4gIGV4aXRMaXN0KCkge1xuICAgIHRoaXMuZXhpdCgpO1xuICAgIHRoaXMubGlzdEJsb2NrU3RhY2sucG9wKCk7XG4gIH1cblxuICB1cGRhdGVXaXRoKG9wY29kZTogVXBkYXRpbmdPcGNvZGUpIHtcbiAgICB0aGlzLnVwZGF0aW5nKCkuYXBwZW5kKG9wY29kZSk7XG4gIH1cblxuICBsaXN0QmxvY2soKTogTGlzdEJsb2NrT3Bjb2RlIHtcbiAgICByZXR1cm4gdGhpcy5saXN0QmxvY2tTdGFjay5jdXJyZW50O1xuICB9XG5cbiAgdXBkYXRpbmcoKTogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4ge1xuICAgIHJldHVybiB0aGlzLnVwZGF0aW5nT3Bjb2RlU3RhY2suY3VycmVudDtcbiAgfVxuXG4gIGVsZW1lbnRzKCk6IEVsZW1lbnRTdGFjayB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFN0YWNrO1xuICB9XG5cbiAgc2NvcGUoKTogU2NvcGUge1xuICAgIHJldHVybiB0aGlzLnNjb3BlU3RhY2suY3VycmVudDtcbiAgfVxuXG4gIGR5bmFtaWNTY29wZSgpOiBEeW5hbWljU2NvcGUge1xuICAgIHJldHVybiB0aGlzLmR5bmFtaWNTY29wZVN0YWNrLmN1cnJlbnQ7XG4gIH1cblxuICBwdXNoQ2hpbGRTY29wZSgpIHtcbiAgICB0aGlzLnNjb3BlU3RhY2sucHVzaCh0aGlzLnNjb3BlKCkuY2hpbGQoKSk7XG4gIH1cblxuICBwdXNoQ2FsbGVyU2NvcGUoY2hpbGRTY29wZSA9IGZhbHNlKSB7XG4gICAgbGV0IGNhbGxlclNjb3BlID0gdGhpcy5zY29wZSgpLmdldENhbGxlclNjb3BlKCk7XG4gICAgdGhpcy5zY29wZVN0YWNrLnB1c2goY2hpbGRTY29wZSA/IGNhbGxlclNjb3BlLmNoaWxkKCkgOiBjYWxsZXJTY29wZSk7XG4gIH1cblxuICBwdXNoRHluYW1pY1Njb3BlKCk6IER5bmFtaWNTY29wZSB7XG4gICAgbGV0IGNoaWxkID0gdGhpcy5keW5hbWljU2NvcGUoKS5jaGlsZCgpO1xuICAgIHRoaXMuZHluYW1pY1Njb3BlU3RhY2sucHVzaChjaGlsZCk7XG4gICAgcmV0dXJuIGNoaWxkO1xuICB9XG5cbiAgcHVzaFJvb3RTY29wZShzaXplOiBudW1iZXIsIGJpbmRDYWxsZXI6IGJvb2xlYW4pOiBTY29wZSB7XG4gICAgbGV0IHNjb3BlID0gU2NvcGUuc2l6ZWQoc2l6ZSk7XG4gICAgaWYgKGJpbmRDYWxsZXIpIHNjb3BlLmJpbmRDYWxsZXJTY29wZSh0aGlzLnNjb3BlKCkpO1xuICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKHNjb3BlKTtcbiAgICByZXR1cm4gc2NvcGU7XG4gIH1cblxuICBwb3BTY29wZSgpIHtcbiAgICB0aGlzLnNjb3BlU3RhY2sucG9wKCk7XG4gIH1cblxuICBwb3BEeW5hbWljU2NvcGUoKSB7XG4gICAgdGhpcy5keW5hbWljU2NvcGVTdGFjay5wb3AoKTtcbiAgfVxuXG4gIG5ld0Rlc3Ryb3lhYmxlKGQ6IERlc3Ryb3lhYmxlKSB7XG4gICAgdGhpcy5lbGVtZW50cygpLm5ld0Rlc3Ryb3lhYmxlKGQpO1xuICB9XG5cbiAgLy8vIFNDT1BFIEhFTFBFUlNcblxuICBnZXRTZWxmKCk6IFBhdGhSZWZlcmVuY2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuc2NvcGUoKS5nZXRTZWxmKCk7XG4gIH1cblxuICByZWZlcmVuY2VGb3JTeW1ib2woc3ltYm9sOiBudW1iZXIpOiBQYXRoUmVmZXJlbmNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnNjb3BlKCkuZ2V0U3ltYm9sKHN5bWJvbCk7XG4gIH1cblxuICAvLy8gRVhFQ1VUSU9OXG5cbiAgZXhlY3V0ZShzdGFydDogbnVtYmVyLCBpbml0aWFsaXplPzogKHZtOiBWTSkgPT4gdm9pZCk6IFJlbmRlclJlc3VsdCB7XG4gICAgdGhpcy5wYyA9IHN0YXJ0O1xuXG4gICAgaWYgKGluaXRpYWxpemUpIGluaXRpYWxpemUodGhpcyk7XG5cbiAgICBsZXQgcmVzdWx0OiBJdGVyYXRvclJlc3VsdDxSZW5kZXJSZXN1bHQ+O1xuXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIHJlc3VsdCA9IHRoaXMubmV4dCgpO1xuICAgICAgaWYgKHJlc3VsdC5kb25lKSBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0LnZhbHVlIGFzIFJlbmRlclJlc3VsdDtcbiAgfVxuXG4gIG5leHQoKTogSXRlcmF0b3JSZXN1bHQ8UmVuZGVyUmVzdWx0PiB7XG4gICAgbGV0IHsgZW52LCB1cGRhdGluZ09wY29kZVN0YWNrLCBlbGVtZW50U3RhY2sgfSA9IHRoaXM7XG4gICAgbGV0IG9wY29kZTogT3B0aW9uPE9wY29kZT47XG5cbiAgICBpZiAob3Bjb2RlID0gdGhpcy5uZXh0U3RhdGVtZW50KGVudikpIHtcbiAgICAgIEFQUEVORF9PUENPREVTLmV2YWx1YXRlKHRoaXMsIG9wY29kZSwgb3Bjb2RlLnR5cGUpO1xuICAgICAgcmV0dXJuIHsgZG9uZTogZmFsc2UsIHZhbHVlOiBudWxsIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRvbmU6IHRydWUsXG4gICAgICB2YWx1ZTogbmV3IFJlbmRlclJlc3VsdChcbiAgICAgICAgZW52LFxuICAgICAgICB1cGRhdGluZ09wY29kZVN0YWNrLnBvcCgpLFxuICAgICAgICBlbGVtZW50U3RhY2sucG9wQmxvY2soKVxuICAgICAgKVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIG5leHRTdGF0ZW1lbnQoZW52OiBFbnZpcm9ubWVudCk6IE9wdGlvbjxPcGNvZGU+IHtcbiAgICBsZXQgeyBwYyB9ID0gdGhpcztcblxuICAgIGlmIChwYyA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCBwcm9ncmFtID0gZW52LnByb2dyYW07XG4gICAgdGhpcy5wYyArPSA0O1xuICAgIHJldHVybiBwcm9ncmFtLm9wY29kZShwYyk7XG4gIH1cblxuICBldmFsdWF0ZU9wY29kZShvcGNvZGU6IE9wY29kZSkge1xuICAgIEFQUEVORF9PUENPREVTLmV2YWx1YXRlKHRoaXMsIG9wY29kZSwgb3Bjb2RlLnR5cGUpO1xuICB9XG5cbiAgYmluZER5bmFtaWNTY29wZShuYW1lczogQ29uc3RhbnRTdHJpbmdbXSkge1xuICAgIGxldCBzY29wZSA9IHRoaXMuZHluYW1pY1Njb3BlKCk7XG5cbiAgICBmb3IobGV0IGk9bmFtZXMubGVuZ3RoIC0gMTsgaT49MDsgaS0tKSB7XG4gICAgICBsZXQgbmFtZSA9IHRoaXMuY29uc3RhbnRzLmdldFN0cmluZyhuYW1lc1tpXSk7XG4gICAgICBzY29wZS5zZXQobmFtZSwgdGhpcy5zdGFjay5wb3A8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+PigpKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==

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

get: function () {
return (0, _util.expect)(this.frameStack.current, 'bug: expected a frame');
return this.frameStack.current;
}

@@ -168,15 +168,2 @@ }]);

BlockOpcode.prototype.toJSON = function toJSON() {
var details = (0, _util.dict)();
details["guid"] = '' + this._guid;
return {
guid: this._guid,
type: this.type,
details: details,
children: this.children.toArray().map(function (op) {
return op.toJSON();
})
};
};
return BlockOpcode;

@@ -232,11 +219,2 @@ }(_opcodes.UpdatingOpcode);

TryOpcode.prototype.toJSON = function toJSON() {
var json = _BlockOpcode.prototype.toJSON.call(this);
var details = json["details"];
if (!details) {
details = json["details"] = {};
}
return _BlockOpcode.prototype.toJSON.call(this);
};
return TryOpcode;

@@ -354,3 +332,3 @@ }(BlockOpcode);

var marker = dom.createComment('');
dom.insertAfter(bounds.parentElement(), marker, (0, _util.expect)(bounds.lastNode(), "can't insert after an empty bounds"));
dom.insertAfter(bounds.parentElement(), marker, bounds.lastNode());
var target = new ListRevalidationDelegate(this, marker);

@@ -374,16 +352,2 @@ var synchronizer = new _reference.IteratorSynchronizer({ target: target, artifacts: artifacts });

ListBlockOpcode.prototype.toJSON = function toJSON() {
var json = _BlockOpcode2.prototype.toJSON.call(this);
var map = this.map;
var inner = Object.keys(map).map(function (key) {
return JSON.stringify(key) + ': ' + map[key]._guid;
}).join(", ");
var details = json["details"];
if (!details) {
details = json["details"] = {};
}
details["map"] = '{' + inner + '}';
return json;
};
return ListBlockOpcode;

@@ -424,2 +388,2 @@ }(BlockOpcode);

}();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidXBkYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQSxBQUFPLEFBQXFCLEFBQUssQUFBRSxBQUFJLEFBQUksQUFBVSxBQUFFLEFBQU0sQUFBVyxBQUFDOztBQUN6RSxBQUFPLEFBQUUsQUFBWSxBQUE2QixBQUFNLEFBQVksQUFBQzs7QUFDckUsQUFBTyxBQUFrQixBQUFLLEFBQUUsQUFBVSxBQUFRLEFBQUksQUFBRSxBQUFNLEFBQUUsQUFBTSxBQUFlLEFBQUM7O0FBQ3RGLEFBQU8sQUFHTCxBQUFvQixBQUdwQixBQUFPLEFBQ1AsQUFBTyxBQUVQLEFBQVksQUFFWixBQUFZLEFBQ1osQUFBWSxBQUNaLEFBQU8sQUFDUixBQUFNLEFBQW9CLEFBQUM7O0FBQzVCLEFBQU8sQUFBYyxBQUFjLEFBQWlCLEFBQU0sQUFBWSxBQUFDOztBQUt2RSxBQUFPLEFBQUUsQUFBRSxBQUFpQixBQUFlLEFBQUUsQUFBTSxBQUFVLEFBQUMsQUFFOUQsQUFBTSxBQUFDLEFBQU87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2QkFRWjt3QkFBWSxBQUFnQixBQUFFOztZQUFFLEFBQWdCLHlEQUFHLEFBQUssQUFBRTs7OEJBRmxEOzthQUFVLGFBQTJCLEFBQUksQUFBSyxBQUFtQixBQUFDLEFBR3hFLEFBQUk7YUFBQyxBQUFHLE1BQUcsQUFBRyxBQUFDLEFBQ2YsQUFBSTthQUFDLEFBQVMsWUFBRyxBQUFHLElBQUMsQUFBUyxBQUFDLEFBQy9CLEFBQUk7YUFBQyxBQUFHLE1BQUcsQUFBRyxJQUFDLEFBQU0sQUFBRSxBQUFDLEFBQ3hCLEFBQUk7YUFBQyxBQUFnQixtQkFBRyxBQUFnQixBQUFDLEFBQzNDLEFBQUM7Ozt5QkFFRCxBQUFPLDJCQUFDLEFBQXNCLFNBQUUsQUFBeUIsU0FDdkQsQUFBSTtZQUFFLEFBQVUsQUFBRSxhQUFHLEFBQUksQUFBQyxLQUUxQixB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QUMsQUFBRyxlQUFJLEFBQUssQUFBRyxBQUFDLFFBRTlCLEFBQU07ZUFBQyxBQUFJLEFBQUMsQUFDZCxBQUFDLEFBQ0YsQUFFRDs7OztFQTVFcUMsQUFBVzs7a0NBK0U5Qzs2QkFBb0IsQUFBYyxJQUFVLEFBQWtCLEtBQVUsQUFBMEM7OEJBQTlGOzthQUFFLEtBQUYsQUFBRSxBQUFZLEFBQVU7YUFBRyxNQUFILEFBQUcsQUFBZSxBQUFVO2FBQWdCLG1CQUFoQixBQUFnQixBQUEwQixBQUNoSCxBQUFJO2FBQUMsQUFBRSxLQUFHLEFBQUUsQUFBQyxBQUNiLEFBQUk7YUFBQyxBQUFHLE1BQUcsQUFBRyxBQUFDLEFBQ2YsQUFBSTthQUFDLEFBQU8sVUFBRyxBQUFHLElBQUMsQUFBSSxBQUFFLEFBQUMsQUFDNUIsQUFBQzs7OzhCQUVELEFBQUkscUJBQUMsQUFBa0IsSUFDckIsQUFBSTthQUFDLEFBQU8sVUFBRyxBQUFFLEFBQUMsQUFDcEIsQUFBQzs7OzhCQUVELEFBQWEseUNBQ1gsQUFBSTtZQUFFLEFBQU87WUFBRSxBQUFHLEFBQUUsTUFBRyxBQUFJLEFBQUMsS0FDNUIsQUFBRSxBQUFDOztZQUFDLEFBQU8sQUFBQyxTQUFDLEFBQUksS0FBQyxBQUFPLFVBQUcsQUFBRyxJQUFDLEFBQVEsU0FBQyxBQUFPLEFBQUMsQUFBQyxBQUNsRCxBQUFNO2VBQUMsQUFBTyxBQUFDLEFBQ2pCLEFBQUM7Ozs4QkFFRCxBQUFlLDZDQUNiLEFBQUUsQUFBQztZQUFDLEFBQUksS0FBQyxBQUFnQixBQUFDLGtCQUFDLEFBQUMsQUFDMUIsQUFBSTtpQkFBQyxBQUFnQixpQkFBQyxBQUFlLEFBQUUsQUFBQyxBQUMxQyxBQUFDLEFBQ0g7QUFBQyxBQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2NvcGUsIER5bmFtaWNTY29wZSwgRW52aXJvbm1lbnQgfSBmcm9tICcuLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBEZXN0cm95YWJsZUJvdW5kcywgY2xlYXIsIG1vdmUgYXMgbW92ZUJvdW5kcyB9IGZyb20gJy4uL2JvdW5kcyc7XG5pbXBvcnQgeyBFbGVtZW50U3RhY2ssIFRyYWNrZXIsIFVwZGF0YWJsZVRyYWNrZXIgfSBmcm9tICcuLi9idWlsZGVyJztcbmltcG9ydCB7IE9wdGlvbiwgT3BhcXVlLCBTdGFjaywgTGlua2VkTGlzdCwgRGljdCwgZGljdCwgZXhwZWN0IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQge1xuICBQYXRoUmVmZXJlbmNlLFxuICBJdGVyYXRpb25BcnRpZmFjdHMsXG4gIEl0ZXJhdG9yU3luY2hyb25pemVyLFxuICBJdGVyYXRvclN5bmNocm9uaXplckRlbGVnYXRlLFxuXG4gIC8vIFRhZ3NcbiAgY29tYmluZSxcbiAgUmV2aXNpb24sXG4gIFVwZGF0YWJsZVRhZyxcbiAgVGFnV3JhcHBlcixcbiAgY29tYmluZVNsaWNlLFxuICBDT05TVEFOVF9UQUcsXG4gIElOSVRJQUxcbn0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IE9wY29kZUpTT04sIFVwZGF0aW5nT3Bjb2RlLCBVcGRhdGluZ09wU2VxIH0gZnJvbSAnLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tICcuLi9lbnZpcm9ubWVudC9jb25zdGFudHMnO1xuaW1wb3J0IHsgRE9NQ2hhbmdlcyB9IGZyb20gJy4uL2RvbS9oZWxwZXInO1xuaW1wb3J0ICogYXMgU2ltcGxlIGZyb20gJy4uL2RvbS9pbnRlcmZhY2VzJztcblxuaW1wb3J0IFZNLCB7IENhcHR1cmVkU3RhY2ssIEV2YWx1YXRpb25TdGFjayB9IGZyb20gJy4vYXBwZW5kJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVXBkYXRpbmdWTSB7XG4gIHB1YmxpYyBlbnY6IEVudmlyb25tZW50O1xuICBwdWJsaWMgZG9tOiBET01DaGFuZ2VzO1xuICBwdWJsaWMgYWx3YXlzUmV2YWxpZGF0ZTogYm9vbGVhbjtcbiAgcHVibGljIGNvbnN0YW50czogQ29uc3RhbnRzO1xuXG4gIHByaXZhdGUgZnJhbWVTdGFjazogU3RhY2s8VXBkYXRpbmdWTUZyYW1lPiA9IG5ldyBTdGFjazxVcGRhdGluZ1ZNRnJhbWU+KCk7XG5cbiAgY29uc3RydWN0b3IoZW52OiBFbnZpcm9ubWVudCwgeyBhbHdheXNSZXZhbGlkYXRlID0gZmFsc2UgfSkge1xuICAgIHRoaXMuZW52ID0gZW52O1xuICAgIHRoaXMuY29uc3RhbnRzID0gZW52LmNvbnN0YW50cztcbiAgICB0aGlzLmRvbSA9IGVudi5nZXRET00oKTtcbiAgICB0aGlzLmFsd2F5c1JldmFsaWRhdGUgPSBhbHdheXNSZXZhbGlkYXRlO1xuICB9XG5cbiAgZXhlY3V0ZShvcGNvZGVzOiBVcGRhdGluZ09wU2VxLCBoYW5kbGVyOiBFeGNlcHRpb25IYW5kbGVyKSB7XG4gICAgbGV0IHsgZnJhbWVTdGFjayB9ID0gdGhpcztcblxuICAgIHRoaXMudHJ5KG9wY29kZXMsIGhhbmRsZXIpO1xuXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGlmIChmcmFtZVN0YWNrLmlzRW1wdHkoKSkgYnJlYWs7XG5cbiAgICAgIGxldCBvcGNvZGUgPSB0aGlzLmZyYW1lLm5leHRTdGF0ZW1lbnQoKTtcblxuICAgICAgaWYgKG9wY29kZSA9PT0gbnVsbCkge1xuICAgICAgICB0aGlzLmZyYW1lU3RhY2sucG9wKCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBvcGNvZGUuZXZhbHVhdGUodGhpcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXQgZnJhbWUoKSB7XG4gICAgcmV0dXJuIGV4cGVjdCh0aGlzLmZyYW1lU3RhY2suY3VycmVudCwgJ2J1ZzogZXhwZWN0ZWQgYSBmcmFtZScpO1xuICB9XG5cbiAgZ290byhvcDogVXBkYXRpbmdPcGNvZGUpIHtcbiAgICB0aGlzLmZyYW1lLmdvdG8ob3ApO1xuICB9XG5cbiAgdHJ5KG9wczogVXBkYXRpbmdPcFNlcSwgaGFuZGxlcjogT3B0aW9uPEV4Y2VwdGlvbkhhbmRsZXI+KSB7XG4gICAgdGhpcy5mcmFtZVN0YWNrLnB1c2gobmV3IFVwZGF0aW5nVk1GcmFtZSh0aGlzLCBvcHMsIGhhbmRsZXIpKTtcbiAgfVxuXG4gIHRocm93KCkge1xuICAgIHRoaXMuZnJhbWUuaGFuZGxlRXhjZXB0aW9uKCk7XG4gICAgdGhpcy5mcmFtZVN0YWNrLnBvcCgpO1xuICB9XG5cbiAgZXZhbHVhdGVPcGNvZGUob3Bjb2RlOiBVcGRhdGluZ09wY29kZSkge1xuICAgIG9wY29kZS5ldmFsdWF0ZSh0aGlzKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4Y2VwdGlvbkhhbmRsZXIge1xuICBoYW5kbGVFeGNlcHRpb24oKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWTVN0YXRlIHtcbiAgZW52OiBFbnZpcm9ubWVudDtcbiAgc2NvcGU6IFNjb3BlO1xuICBkeW5hbWljU2NvcGU6IER5bmFtaWNTY29wZTtcbiAgc3RhY2s6IENhcHR1cmVkU3RhY2s7XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCbG9ja09wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIGltcGxlbWVudHMgRGVzdHJveWFibGVCb3VuZHMge1xuICBwdWJsaWMgdHlwZSA9IFwiYmxvY2tcIjtcbiAgcHVibGljIG5leHQgPSBudWxsO1xuICBwdWJsaWMgcHJldiA9IG51bGw7XG4gIHB1YmxpYyBjaGlsZHJlbjogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT47XG5cbiAgcHJvdGVjdGVkIGVudjogRW52aXJvbm1lbnQ7XG4gIHByb3RlY3RlZCBzY29wZTogU2NvcGU7XG4gIHByb3RlY3RlZCBkeW5hbWljU2NvcGU6IER5bmFtaWNTY29wZTtcbiAgcHJvdGVjdGVkIHN0YWNrOiBDYXB0dXJlZFN0YWNrO1xuICBwcm90ZWN0ZWQgYm91bmRzOiBEZXN0cm95YWJsZUJvdW5kcztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgc3RhcnQ6IG51bWJlciwgc3RhdGU6IFZNU3RhdGUsIGJvdW5kczogRGVzdHJveWFibGVCb3VuZHMsIGNoaWxkcmVuOiBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPikge1xuICAgIHN1cGVyKCk7XG4gICAgbGV0IHsgZW52LCBzY29wZSwgZHluYW1pY1Njb3BlLCBzdGFjayB9ID0gc3RhdGU7XG4gICAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICAgIHRoaXMuZW52ID0gZW52O1xuICAgIHRoaXMuc2NvcGUgPSBzY29wZTtcbiAgICB0aGlzLmR5bmFtaWNTY29wZSA9IGR5bmFtaWNTY29wZTtcbiAgICB0aGlzLnN0YWNrID0gc3RhY2s7XG4gICAgdGhpcy5ib3VuZHMgPSBib3VuZHM7XG4gIH1cblxuICBhYnN0cmFjdCBkaWRJbml0aWFsaXplQ2hpbGRyZW4oKTogdm9pZDtcblxuICBwYXJlbnRFbGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLmJvdW5kcy5wYXJlbnRFbGVtZW50KCk7XG4gIH1cblxuICBmaXJzdE5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuYm91bmRzLmZpcnN0Tm9kZSgpO1xuICB9XG5cbiAgbGFzdE5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuYm91bmRzLmxhc3ROb2RlKCk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVXBkYXRpbmdWTSkge1xuICAgIHZtLnRyeSh0aGlzLmNoaWxkcmVuLCBudWxsKTtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5ib3VuZHMuZGVzdHJveSgpO1xuICB9XG5cbiAgZGlkRGVzdHJveSgpIHtcbiAgICB0aGlzLmVudi5kaWREZXN0cm95KHRoaXMuYm91bmRzKTtcbiAgfVxuXG4gIHRvSlNPTigpIDogT3Bjb2RlSlNPTiB7XG4gICAgbGV0IGRldGFpbHMgPSBkaWN0PHN0cmluZz4oKTtcblxuICAgIGRldGFpbHNbXCJndWlkXCJdID0gYCR7dGhpcy5fZ3VpZH1gO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICBkZXRhaWxzLFxuICAgICAgY2hpbGRyZW46IHRoaXMuY2hpbGRyZW4udG9BcnJheSgpLm1hcChvcCA9PiBvcC50b0pTT04oKSlcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUcnlPcGNvZGUgZXh0ZW5kcyBCbG9ja09wY29kZSBpbXBsZW1lbnRzIEV4Y2VwdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdHlwZSA9IFwidHJ5XCI7XG5cbiAgcHJpdmF0ZSBfdGFnOiBUYWdXcmFwcGVyPFVwZGF0YWJsZVRhZz47XG5cbiAgcHJvdGVjdGVkIGJvdW5kczogVXBkYXRhYmxlVHJhY2tlcjtcblxuICBjb25zdHJ1Y3RvcihzdGFydDogbnVtYmVyLCBzdGF0ZTogVk1TdGF0ZSwgYm91bmRzOiBVcGRhdGFibGVUcmFja2VyLCBjaGlsZHJlbjogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4pIHtcbiAgICBzdXBlcihzdGFydCwgc3RhdGUsIGJvdW5kcywgY2hpbGRyZW4pO1xuICAgIHRoaXMudGFnID0gdGhpcy5fdGFnID0gVXBkYXRhYmxlVGFnLmNyZWF0ZShDT05TVEFOVF9UQUcpO1xuICB9XG5cbiAgZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKCkge1xuICAgIHRoaXMuX3RhZy5pbm5lci51cGRhdGUoY29tYmluZVNsaWNlKHRoaXMuY2hpbGRyZW4pKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgdm0udHJ5KHRoaXMuY2hpbGRyZW4sIHRoaXMpO1xuICB9XG5cbiAgaGFuZGxlRXhjZXB0aW9uKCkge1xuICAgIGxldCB7IGVudiwgYm91bmRzLCBjaGlsZHJlbiwgc2NvcGUsIGR5bmFtaWNTY29wZSwgc3RhcnQsIHN0YWNrLCBwcmV2LCBuZXh0IH0gPSB0aGlzO1xuXG4gICAgY2hpbGRyZW4uY2xlYXIoKTtcblxuICAgIGxldCBlbGVtZW50U3RhY2sgPSBFbGVtZW50U3RhY2sucmVzdW1lKFxuICAgICAgZW52LFxuICAgICAgYm91bmRzLFxuICAgICAgYm91bmRzLnJlc2V0KGVudilcbiAgICApO1xuXG4gICAgbGV0IHZtID0gbmV3IFZNKGVudiwgc2NvcGUsIGR5bmFtaWNTY29wZSwgZWxlbWVudFN0YWNrKTtcblxuICAgIGxldCB1cGRhdGluZyA9IG5ldyBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPigpO1xuXG4gICAgdm0uZXhlY3V0ZShzdGFydCwgdm0gPT4ge1xuICAgICAgdm0uc3RhY2sgPSBFdmFsdWF0aW9uU3RhY2sucmVzdG9yZShzdGFjayk7XG4gICAgICB2bS51cGRhdGluZ09wY29kZVN0YWNrLnB1c2godXBkYXRpbmcpO1xuICAgICAgdm0udXBkYXRlV2l0aCh0aGlzKTtcbiAgICAgIHZtLnVwZGF0aW5nT3Bjb2RlU3RhY2sucHVzaChjaGlsZHJlbik7XG4gICAgfSk7XG5cbiAgICB0aGlzLnByZXYgPSBwcmV2O1xuICAgIHRoaXMubmV4dCA9IG5leHQ7XG4gIH1cblxuICB0b0pTT04oKSA6IE9wY29kZUpTT04ge1xuICAgIGxldCBqc29uID0gc3VwZXIudG9KU09OKCk7XG5cbiAgICBsZXQgZGV0YWlscyA9IGpzb25bXCJkZXRhaWxzXCJdO1xuICAgIGlmICghZGV0YWlscykge1xuICAgICAgZGV0YWlscyA9IGpzb25bXCJkZXRhaWxzXCJdID0ge307XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1cGVyLnRvSlNPTigpO1xuICB9XG59XG5cbmNsYXNzIExpc3RSZXZhbGlkYXRpb25EZWxlZ2F0ZSBpbXBsZW1lbnRzIEl0ZXJhdG9yU3luY2hyb25pemVyRGVsZWdhdGUge1xuICBwcml2YXRlIG1hcDogRGljdDxCbG9ja09wY29kZT47XG4gIHByaXZhdGUgdXBkYXRpbmc6IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+O1xuXG4gIHByaXZhdGUgZGlkSW5zZXJ0ID0gZmFsc2U7XG4gIHByaXZhdGUgZGlkRGVsZXRlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBvcGNvZGU6IExpc3RCbG9ja09wY29kZSwgcHJpdmF0ZSBtYXJrZXI6IFNpbXBsZS5Db21tZW50KSB7XG4gICAgdGhpcy5tYXAgPSBvcGNvZGUubWFwO1xuICAgIHRoaXMudXBkYXRpbmcgPSBvcGNvZGVbJ2NoaWxkcmVuJ107XG4gIH1cblxuICBpbnNlcnQoa2V5OiBzdHJpbmcsIGl0ZW06IFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgbWVtbzogUGF0aFJlZmVyZW5jZTxPcGFxdWU+LCBiZWZvcmU6IHN0cmluZykge1xuICAgIGxldCB7IG1hcCwgb3Bjb2RlLCB1cGRhdGluZyB9ID0gdGhpcztcbiAgICBsZXQgbmV4dFNpYmxpbmc6IE9wdGlvbjxTaW1wbGUuTm9kZT4gPSBudWxsO1xuICAgIGxldCByZWZlcmVuY2U6IE9wdGlvbjxCbG9ja09wY29kZT4gPSBudWxsO1xuXG4gICAgaWYgKGJlZm9yZSkge1xuICAgICAgcmVmZXJlbmNlID0gbWFwW2JlZm9yZV07XG4gICAgICBuZXh0U2libGluZyA9IHJlZmVyZW5jZVsnYm91bmRzJ10uZmlyc3ROb2RlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5leHRTaWJsaW5nID0gdGhpcy5tYXJrZXI7XG4gICAgfVxuXG4gICAgbGV0IHZtID0gb3Bjb2RlLnZtRm9ySW5zZXJ0aW9uKG5leHRTaWJsaW5nKTtcbiAgICBsZXQgdHJ5T3Bjb2RlOiBPcHRpb248VHJ5T3Bjb2RlPiA9IG51bGw7XG5cbiAgICBsZXQgeyBzdGFydCB9ID0gb3Bjb2RlO1xuXG4gICAgdm0uZXhlY3V0ZShzdGFydCwgdm0gPT4ge1xuICAgICAgbWFwW2tleV0gPSB0cnlPcGNvZGUgPSB2bS5pdGVyYXRlKG1lbW8sIGl0ZW0pO1xuICAgICAgdm0udXBkYXRpbmdPcGNvZGVTdGFjay5wdXNoKG5ldyBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPigpKTtcbiAgICAgIHZtLnVwZGF0ZVdpdGgodHJ5T3Bjb2RlKTtcbiAgICAgIHZtLnVwZGF0aW5nT3Bjb2RlU3RhY2sucHVzaCh0cnlPcGNvZGUuY2hpbGRyZW4pO1xuICAgIH0pO1xuXG4gICAgdXBkYXRpbmcuaW5zZXJ0QmVmb3JlKHRyeU9wY29kZSEsIHJlZmVyZW5jZSk7XG5cbiAgICB0aGlzLmRpZEluc2VydCA9IHRydWU7XG4gIH1cblxuICByZXRhaW4oX2tleTogc3RyaW5nLCBfaXRlbTogUGF0aFJlZmVyZW5jZTxPcGFxdWU+LCBfbWVtbzogUGF0aFJlZmVyZW5jZTxPcGFxdWU+KSB7XG4gIH1cblxuICBtb3ZlKGtleTogc3RyaW5nLCBfaXRlbTogUGF0aFJlZmVyZW5jZTxPcGFxdWU+LCBfbWVtbzogUGF0aFJlZmVyZW5jZTxPcGFxdWU+LCBiZWZvcmU6IHN0cmluZykge1xuICAgIGxldCB7IG1hcCwgdXBkYXRpbmcgfSA9IHRoaXM7XG5cbiAgICBsZXQgZW50cnkgPSBtYXBba2V5XTtcbiAgICBsZXQgcmVmZXJlbmNlID0gbWFwW2JlZm9yZV0gfHwgbnVsbDtcblxuICAgIGlmIChiZWZvcmUpIHtcbiAgICAgIG1vdmVCb3VuZHMoZW50cnksIHJlZmVyZW5jZS5maXJzdE5vZGUoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1vdmVCb3VuZHMoZW50cnksIHRoaXMubWFya2VyKTtcbiAgICB9XG5cbiAgICB1cGRhdGluZy5yZW1vdmUoZW50cnkpO1xuICAgIHVwZGF0aW5nLmluc2VydEJlZm9yZShlbnRyeSwgcmVmZXJlbmNlKTtcbiAgfVxuXG4gIGRlbGV0ZShrZXk6IHN0cmluZykge1xuICAgIGxldCB7IG1hcCB9ID0gdGhpcztcbiAgICBsZXQgb3Bjb2RlID0gbWFwW2tleV07XG4gICAgb3Bjb2RlLmRpZERlc3Ryb3koKTtcbiAgICBjbGVhcihvcGNvZGUpO1xuICAgIHRoaXMudXBkYXRpbmcucmVtb3ZlKG9wY29kZSk7XG4gICAgZGVsZXRlIG1hcFtrZXldO1xuXG4gICAgdGhpcy5kaWREZWxldGUgPSB0cnVlO1xuICB9XG5cbiAgZG9uZSgpIHtcbiAgICB0aGlzLm9wY29kZS5kaWRJbml0aWFsaXplQ2hpbGRyZW4odGhpcy5kaWRJbnNlcnQgfHwgdGhpcy5kaWREZWxldGUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaXN0QmxvY2tPcGNvZGUgZXh0ZW5kcyBCbG9ja09wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJsaXN0LWJsb2NrXCI7XG4gIHB1YmxpYyBtYXAgPSBkaWN0PEJsb2NrT3Bjb2RlPigpO1xuICBwdWJsaWMgYXJ0aWZhY3RzOiBJdGVyYXRpb25BcnRpZmFjdHM7XG5cbiAgcHJpdmF0ZSBsYXN0SXRlcmF0ZWQ6IFJldmlzaW9uID0gSU5JVElBTDtcbiAgcHJpdmF0ZSBfdGFnOiBUYWdXcmFwcGVyPFVwZGF0YWJsZVRhZz47XG5cbiAgY29uc3RydWN0b3Ioc3RhcnQ6IG51bWJlciwgc3RhdGU6IFZNU3RhdGUsIGJvdW5kczogVHJhY2tlciwgY2hpbGRyZW46IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+LCBhcnRpZmFjdHM6IEl0ZXJhdGlvbkFydGlmYWN0cykge1xuICAgIHN1cGVyKHN0YXJ0LCBzdGF0ZSwgYm91bmRzLCBjaGlsZHJlbik7XG4gICAgdGhpcy5hcnRpZmFjdHMgPSBhcnRpZmFjdHM7XG4gICAgbGV0IF90YWcgPSB0aGlzLl90YWcgPSBVcGRhdGFibGVUYWcuY3JlYXRlKENPTlNUQU5UX1RBRyk7XG4gICAgdGhpcy50YWcgPSBjb21iaW5lKFthcnRpZmFjdHMudGFnLCBfdGFnXSk7XG4gIH1cblxuICBkaWRJbml0aWFsaXplQ2hpbGRyZW4obGlzdERpZENoYW5nZSA9IHRydWUpIHtcbiAgICB0aGlzLmxhc3RJdGVyYXRlZCA9IHRoaXMuYXJ0aWZhY3RzLnRhZy52YWx1ZSgpO1xuXG4gICAgaWYgKGxpc3REaWRDaGFuZ2UpIHtcbiAgICAgIHRoaXMuX3RhZy5pbm5lci51cGRhdGUoY29tYmluZVNsaWNlKHRoaXMuY2hpbGRyZW4pKTtcbiAgICB9XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVXBkYXRpbmdWTSkge1xuICAgIGxldCB7IGFydGlmYWN0cywgbGFzdEl0ZXJhdGVkIH0gPSB0aGlzO1xuXG4gICAgaWYgKCFhcnRpZmFjdHMudGFnLnZhbGlkYXRlKGxhc3RJdGVyYXRlZCkpIHtcbiAgICAgIGxldCB7IGJvdW5kcyB9ID0gdGhpcztcbiAgICAgIGxldCB7IGRvbSB9ID0gdm07XG5cbiAgICAgIGxldCBtYXJrZXIgPSBkb20uY3JlYXRlQ29tbWVudCgnJyk7XG4gICAgICBkb20uaW5zZXJ0QWZ0ZXIoYm91bmRzLnBhcmVudEVsZW1lbnQoKSwgbWFya2VyLCBleHBlY3QoYm91bmRzLmxhc3ROb2RlKCksIFwiY2FuJ3QgaW5zZXJ0IGFmdGVyIGFuIGVtcHR5IGJvdW5kc1wiKSk7XG5cbiAgICAgIGxldCB0YXJnZXQgPSBuZXcgTGlzdFJldmFsaWRhdGlvbkRlbGVnYXRlKHRoaXMsIG1hcmtlcik7XG4gICAgICBsZXQgc3luY2hyb25pemVyID0gbmV3IEl0ZXJhdG9yU3luY2hyb25pemVyKHsgdGFyZ2V0LCBhcnRpZmFjdHMgfSk7XG5cbiAgICAgIHN5bmNocm9uaXplci5zeW5jKCk7XG5cbiAgICAgIHRoaXMucGFyZW50RWxlbWVudCgpLnJlbW92ZUNoaWxkKG1hcmtlcik7XG4gICAgfVxuXG4gICAgLy8gUnVuIG5vdy11cGRhdGVkIHVwZGF0aW5nIG9wY29kZXNcbiAgICBzdXBlci5ldmFsdWF0ZSh2bSk7XG4gIH1cblxuICB2bUZvckluc2VydGlvbihuZXh0U2libGluZzogT3B0aW9uPFNpbXBsZS5Ob2RlPik6IFZNIHtcbiAgICBsZXQgeyBlbnYsIHNjb3BlLCBkeW5hbWljU2NvcGUgfSA9IHRoaXM7XG5cbiAgICBsZXQgZWxlbWVudFN0YWNrID0gRWxlbWVudFN0YWNrLmZvckluaXRpYWxSZW5kZXIoXG4gICAgICB0aGlzLmVudixcbiAgICAgIHRoaXMuYm91bmRzLnBhcmVudEVsZW1lbnQoKSxcbiAgICAgIG5leHRTaWJsaW5nXG4gICAgKTtcblxuICAgIHJldHVybiBuZXcgVk0oZW52LCBzY29wZSwgZHluYW1pY1Njb3BlLCBlbGVtZW50U3RhY2spO1xuICB9XG5cbiAgdG9KU09OKCkgOiBPcGNvZGVKU09OIHtcbiAgICBsZXQganNvbiA9IHN1cGVyLnRvSlNPTigpO1xuICAgIGxldCBtYXAgPSB0aGlzLm1hcDtcblxuICAgIGxldCBpbm5lciA9IE9iamVjdC5rZXlzKG1hcCkubWFwKGtleSA9PiB7XG4gICAgICByZXR1cm4gYCR7SlNPTi5zdHJpbmdpZnkoa2V5KX06ICR7bWFwW2tleV0uX2d1aWR9YDtcbiAgICB9KS5qb2luKFwiLCBcIik7XG5cbiAgICBsZXQgZGV0YWlscyA9IGpzb25bXCJkZXRhaWxzXCJdO1xuICAgIGlmICghZGV0YWlscykge1xuICAgICAgZGV0YWlscyA9IGpzb25bXCJkZXRhaWxzXCJdID0ge307XG4gICAgfVxuXG4gICAgZGV0YWlsc1tcIm1hcFwiXSA9IGB7JHtpbm5lcn19YDtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG59XG5cbmNsYXNzIFVwZGF0aW5nVk1GcmFtZSB7XG4gIHByaXZhdGUgY3VycmVudDogT3B0aW9uPFVwZGF0aW5nT3Bjb2RlPjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHZtOiBVcGRhdGluZ1ZNLCBwcml2YXRlIG9wczogVXBkYXRpbmdPcFNlcSwgcHJpdmF0ZSBleGNlcHRpb25IYW5kbGVyOiBPcHRpb248RXhjZXB0aW9uSGFuZGxlcj4pIHtcbiAgICB0aGlzLnZtID0gdm07XG4gICAgdGhpcy5vcHMgPSBvcHM7XG4gICAgdGhpcy5jdXJyZW50ID0gb3BzLmhlYWQoKTtcbiAgfVxuXG4gIGdvdG8ob3A6IFVwZGF0aW5nT3Bjb2RlKSB7XG4gICAgdGhpcy5jdXJyZW50ID0gb3A7XG4gIH1cblxuICBuZXh0U3RhdGVtZW50KCk6IE9wdGlvbjxVcGRhdGluZ09wY29kZT4ge1xuICAgIGxldCB7IGN1cnJlbnQsIG9wcyB9ID0gdGhpcztcbiAgICBpZiAoY3VycmVudCkgdGhpcy5jdXJyZW50ID0gb3BzLm5leHROb2RlKGN1cnJlbnQpO1xuICAgIHJldHVybiBjdXJyZW50O1xuICB9XG5cbiAgaGFuZGxlRXhjZXB0aW9uKCkge1xuICAgIGlmICh0aGlzLmV4Y2VwdGlvbkhhbmRsZXIpIHtcbiAgICAgIHRoaXMuZXhjZXB0aW9uSGFuZGxlci5oYW5kbGVFeGNlcHRpb24oKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidXBkYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQSxBQUFPLEFBQXFCLEFBQUssQUFBRSxBQUFJLEFBQUksQUFBVSxBQUFFLEFBQU0sQUFBVyxBQUFDOztBQUN6RSxBQUFPLEFBQUUsQUFBWSxBQUE2QixBQUFNLEFBQVksQUFBQzs7QUFDckUsQUFBTyxBQUFrQixBQUFLLEFBQUUsQUFBVSxBQUFRLEFBQUksQUFBVSxBQUFNLEFBQWUsQUFBQzs7QUFDdEYsQUFBTyxBQUdMLEFBQW9CLEFBR3BCLEFBQU8sQUFDUCxBQUFPLEFBRVAsQUFBWSxBQUVaLEFBQVksQUFDWixBQUFZLEFBQ1osQUFBTyxBQUNSLEFBQU0sQUFBb0IsQUFBQzs7QUFDNUIsQUFBTyxBQUFjLEFBQWMsQUFBaUIsQUFBTSxBQUFZLEFBQUM7O0FBS3ZFLEFBQU8sQUFBRSxBQUFFLEFBQWlCLEFBQWUsQUFBRSxBQUFNLEFBQVUsQUFBQyxBQUU5RCxBQUFNLEFBQUMsQUFBTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzZCQVFaO3dCQUFZLEFBQWdCLEFBQUU7O1lBQUUsQUFBZ0IseURBQUcsQUFBSyxBQUFFOzs4QkFGbEQ7O2FBQVUsYUFBMkIsQUFBSSxBQUFLLEFBQW1CLEFBQUMsQUFHeEUsQUFBSTthQUFDLEFBQUcsTUFBRyxBQUFHLEFBQUMsQUFDZixBQUFJO2FBQUMsQUFBUyxZQUFHLEFBQUcsSUFBQyxBQUFTLEFBQUMsQUFDL0IsQUFBSTthQUFDLEFBQUcsTUFBRyxBQUFHLElBQUMsQUFBTSxBQUFFLEFBQUMsQUFDeEIsQUFBSTthQUFDLEFBQWdCLG1CQUFHLEFBQWdCLEFBQUMsQUFDM0MsQUFBQzs7O3lCQUVELEFBQU8sMkJBQUMsQUFBc0IsU0FBRSxBQUF5QixTQUN2RCxBQUFJO1lBQUUsQUFBVSxBQUFFLGFBQUcsQUFBSSxBQUFDLEtBRTFCLEFBQUk7O2FBQUMsQUFBRyxJQUFDLEFBQU8sU0FBRSxBQUFPLEFBQUMsQUFBQyxBQUUzQjtlQUFPLEFBQUksTUFBRSxBQUFDLEFBQ1osQUFBRSxBQUFDO2dCQUFDLEFBQVUsV0FBQyxBQUFPLEFBQUUsQUFBQyxXQUFDLEFBQUssQUFBQyxBQUVoQztnQkFBSSxBQUFNLFNBQUcsQUFBSSxLQUFDLEFBQUssTUFBQyxBQUFhLEFBQUUsQUFBQyxBQUV4QyxBQUFFLEFBQUM7Z0JBQUMsQUFBTSxXQUFLLEFBQUksQUFBQyxNQUFDLEFBQUMsQUFDcEIsQUFBSTtxQkFBQyxBQUFVLFdBQUMsQUFBRyxBQUFFLEFBQUMsQUFDdEIsQUFBUSxBQUFDLEFBQ1g7QUFBQztBQUVELEFBQU07bUJBQUMsQUFBUSxTQUFDLEFBQUksQUFBQyxBQUFDLEFBQ3hCLEFBQUMsQUFDSDtBQUFDLEFBRUQsQUFBWSxBQUFLOzs7eUJBSWpCLEFBQUkscUJBQUMsQUFBa0IsSUFDckIsQUFBSTthQUFDLEFBQUssTUFBQyxBQUFJLEtBQUMsQUFBRSxBQUFDLEFBQUMsQUFDdEIsQUFBQzs7O3lCQUVELEFBQUcsb0JBQUMsQUFBa0IsS0FBRSxBQUFpQyxTQUN2RCxBQUFJO2FBQUMsQUFBVSxXQUFDLEFBQUksS0FBQyxJQUFJLEFBQWUsZ0JBQUMsQUFBSSxNQUFFLEFBQUcsS0FBRSxBQUFPLEFBQUMsQUFBQyxBQUFDLEFBQ2hFLEFBQUM7Ozt5QkFFRCxBQUFLLDBCQUNILEFBQUk7YUFBQyxBQUFLLE1BQUMsQUFBZSxBQUFFLEFBQUMsQUFDN0IsQUFBSTthQUFDLEFBQVUsV0FBQyxBQUFHLEFBQUUsQUFBQyxBQUN4QixBQUFDOzs7eUJBRUQsQUFBYyx5Q0FBQyxBQUFzQixRQUNuQyxBQUFNO2VBQUMsQUFBUSxTQUFDLEFBQUksQUFBQyxBQUFDLEFBQ3hCLEFBQUMsQUFDRjs7Ozs7eUJBbkJHLEFBQU07bUJBQUMsQUFBSSxLQUFDLEFBQVUsV0FBQyxBQUFPLEFBQUMsQUFDakMsQUFBQzs7Ozs7OztrQkErQkgsQUFBTTtJQUE0QjsyQkFZaEM7O3lCQUFtQixBQUFhLE9BQUUsQUFBYyxPQUFFLEFBQXlCLFFBQUUsQUFBb0M7OztxREFDL0csQUFBSyxBQUFFLEFBQUMscUJBRFM7O2NBQUssUUFBTCxBQUFLLEFBQVEsQUFYekI7Y0FBSSxPQUFHLEFBQU8sQUFBQyxBQUNmO2NBQUksT0FBRyxBQUFJLEFBQUMsQUFDWjtjQUFJLE9BQUcsQUFBSSxBQUFDLEFBV2pCLEFBQUk7WUFBRSxBQUFHLE1BQWlDLEFBQUssQUFBQztZQUFyQyxBQUFLO1lBQUUsQUFBWTtZQUFFLEFBQUssQUFBRSxjQUN2QyxBQUFJOztjQUFDLEFBQVEsV0FBRyxBQUFRLEFBQUMsQUFDekIsQUFBSTtjQUFDLEFBQUcsTUFBRyxBQUFHLEFBQUMsQUFDZixBQUFJO2NBQUMsQUFBSyxRQUFHLEFBQUssQUFBQyxBQUNuQixBQUFJO2NBQUMsQUFBWSxlQUFHLEFBQVksQUFBQyxBQUNqQyxBQUFJO2NBQUMsQUFBSyxRQUFHLEFBQUssQUFBQyxBQUNuQixBQUFJO2NBQUMsQUFBTSxTQUFHLEFBQU0sQUFBQyxBQUN2QjtlQUFDOzs7MEJBSUQsQUFBYSx5Q0FDWCxBQUFNO2VBQUMsQUFBSSxLQUFDLEFBQU0sT0FBQyxBQUFhLEFBQUUsQUFBQyxBQUNyQyxBQUFDOzs7MEJBRUQsQUFBUyxpQ0FDUCxBQUFNO2VBQUMsQUFBSSxLQUFDLEFBQU0sT0FBQyxBQUFTLEFBQUUsQUFBQyxBQUNqQyxBQUFDOzs7MEJBRUQsQUFBUSwrQkFDTixBQUFNO2VBQUMsQUFBSSxLQUFDLEFBQU0sT0FBQyxBQUFRLEFBQUUsQUFBQyxBQUNoQyxBQUFDOzs7MEJBRUQsQUFBUSw2QkFBQyxBQUFjLElBQ3JCLEFBQUU7V0FBQyxBQUFHLElBQUMsQUFBSSxLQUFDLEFBQVEsVUFBRSxBQUFJLEFBQUMsQUFBQyxBQUM5QixBQUFDOzs7MEJBRUQsQUFBTyw2QkFDTCxBQUFJO2FBQUMsQUFBTSxPQUFDLEFBQU8sQUFBRSxBQUFDLEFBQ3hCLEFBQUM7OzswQkFFRCxBQUFVLG1DQUNSLEFBQUk7YUFBQyxBQUFHLElBQUMsQUFBVSxXQUFDLEFBQUksS0FBQyxBQUFNLEFBQUMsQUFBQyxBQUNuQyxBQUFDLEFBQ0Y7Ozs7QUFoRHlDLEFBQWMsQUFrRHhELEFBQU07SUFBaUI7eUJBT3JCOzt1QkFBWSxBQUFhLE9BQUUsQUFBYyxPQUFFLEFBQXdCLFFBQUUsQUFBb0M7OztzREFDdkcsQUFBSyx3QkFBQyxBQUFLLE9BQUUsQUFBSyxPQUFFLEFBQU0sUUFBRSxBQUFRLEFBQUMsQUFBQyxBQVBqQzs7ZUFBSSxPQUFHLEFBQUssQUFBQyxBQVFsQixBQUFJO2VBQUMsQUFBRyxNQUFHLEFBQUksT0FBQyxBQUFJLE9BQUcsQUFBWSx3QkFBQyxBQUFNLEFBQUMsQUFBWSxBQUFDLEFBQUMsQUFDM0Q7ZUFBQzs7O3dCQUVELEFBQXFCLHlEQUNuQixBQUFJO2FBQUMsQUFBSSxLQUFDLEFBQUssTUFBQyxBQUFNLE9BQUMsQUFBWSw2QkFBQyxBQUFJLEtBQUMsQUFBUSxBQUFDLEFBQUMsQUFBQyxBQUN0RCxBQUFDOzs7d0JBRUQsQUFBUSw2QkFBQyxBQUFjLElBQ3JCLEFBQUU7V0FBQyxBQUFHLElBQUMsQUFBSSxLQUFDLEFBQVEsVUFBRSxBQUFJLEFBQUMsQUFBQyxBQUM5QixBQUFDOzs7d0JBRUQsQUFBZSw2Q0FDYixBQUFJOzs7WUFBRSxBQUFHLE1BQXNFLEFBQUksQUFBQztZQUF6RSxBQUFNO1lBQUUsQUFBUTtZQUFFLEFBQUs7WUFBRSxBQUFZO1lBQUUsQUFBSztZQUFFLEFBQUs7WUFBRSxBQUFJO1lBQUUsQUFBSSxBQUFFLFlBRTVFLEFBQVE7O2lCQUFDLEFBQUssQUFBRSxBQUFDLEFBRWpCO1lBQUksQUFBWSxlQUFHLEFBQVksc0JBQUMsQUFBTSxPQUNwQyxBQUFHLEtBQ0gsQUFBTSxRQUNOLEFBQU0sT0FBQyxBQUFLLE1BQUMsQUFBRyxBQUFDLEFBQ2xCLEFBQUMsQUFFRjtZQUFJLEFBQUUsS0FBRyxBQUFJLEFBQUUscUJBQUMsQUFBRyxLQUFFLEFBQUssT0FBRSxBQUFZLGNBQUUsQUFBWSxBQUFDLEFBQUMsQUFFeEQ7WUFBSSxBQUFRLFdBQUcsQUFBSSxBQUFVLEFBQWtCLEFBQUMsQUFFaEQsQUFBRTtXQUFDLEFBQU8sUUFBQyxBQUFLLE9BQUUsQUFBRSxjQUNsQixBQUFFO2VBQUMsQUFBSyxRQUFHLEFBQWUsd0JBQUMsQUFBTyxRQUFDLEFBQUssQUFBQyxBQUFDLEFBQzFDLEFBQUU7ZUFBQyxBQUFtQixvQkFBQyxBQUFJLEtBQUMsQUFBUSxBQUFDLEFBQUMsQUFDdEMsQUFBRTtlQUFDLEFBQVUsQUFBQyxBQUFJLEFBQUMsQUFBQyxXQUNwQixBQUFFO2VBQUMsQUFBbUIsb0JBQUMsQUFBSSxLQUFDLEFBQVEsQUFBQyxBQUFDLEFBQ3hDLEFBQUMsQUFBQyxBQUFDO0FBRUgsQUFBSTthQUFDLEFBQUksT0FBRyxBQUFJLEFBQUMsQUFDakIsQUFBSTthQUFDLEFBQUksT0FBRyxBQUFJLEFBQUMsQUFDbkIsQUFBQyxBQUNGLEFBRUQ7Ozs7RUEvQytCLEFBQVc7OzJDQXNEeEM7c0NBQW9CLEFBQXVCLFFBQVUsQUFBc0I7OEJBQXZEOzthQUFNLFNBQU4sQUFBTSxBQUFpQixBQUFVO2FBQU0sU0FBTixBQUFNLEFBQWdCLEFBSG5FO2FBQVMsWUFBRyxBQUFLLEFBQUMsQUFDbEI7YUFBUyxZQUFHLEFBQUssQUFBQyxBQUd4QixBQUFJO2FBQUMsQUFBRyxNQUFHLEFBQU0sT0FBQyxBQUFHLEFBQUMsQUFDdEIsQUFBSTthQUFDLEFBQVEsV0FBRyxBQUFNLE9BQUMsQUFBVSxBQUFDLEFBQUMsQUFDckMsQUFBQzs7O3VDQUVELEFBQU0seUJBQUMsQUFBVyxLQUFFLEFBQTJCLE1BQUUsQUFBMkIsTUFBRSxBQUFjLFFBQzFGLEFBQUk7WUFBRSxBQUFHLE1BQXVCLEFBQUksQUFBQztZQUExQixBQUFNO1lBQUUsQUFBUSxBQUFFLGdCQUM3Qjs7WUFBSSxBQUFXLGNBQXdCLEFBQUksQUFBQyxBQUM1QztZQUFJLEFBQVMsWUFBd0IsQUFBSSxBQUFDLEFBRTFDLEFBQUUsQUFBQztZQUFDLEFBQU0sQUFBQyxRQUFDLEFBQUMsQUFDWCxBQUFTO3dCQUFHLEFBQUcsSUFBQyxBQUFNLEFBQUMsQUFBQyxBQUN4QixBQUFXOzBCQUFHLEFBQVMsVUFBQyxBQUFRLEFBQUMsVUFBQyxBQUFTLEFBQUUsQUFBQyxBQUNoRCxBQUFDLEFBQUMsQUFBSTtlQUFDLEFBQUMsQUFDTixBQUFXOzBCQUFHLEFBQUksS0FBQyxBQUFNLEFBQUMsQUFDNUIsQUFBQztBQUVEO1lBQUksQUFBRSxLQUFHLEFBQU0sT0FBQyxBQUFjLGVBQUMsQUFBVyxBQUFDLEFBQUMsQUFDNUM7WUFBSSxBQUFTLFlBQXNCLEFBQUksQUFBQyxBQUV4QyxBQUFJO1lBQUUsQUFBSyxBQUFFLFFBQUcsQUFBTSxBQUFDLE9BRXZCLEFBQUU7O1dBQUMsQUFBTyxRQUFDLEFBQUssT0FBRSxBQUFFLGNBQ2xCLEFBQUc7Z0JBQUMsQUFBRyxBQUFDLE9BQUcsQUFBUyxZQUFHLEFBQUUsR0FBQyxBQUFPLFFBQUMsQUFBSSxNQUFFLEFBQUksQUFBQyxBQUFDLEFBQzlDLEFBQUU7ZUFBQyxBQUFtQixvQkFBQyxBQUFJLEtBQUMsQUFBSSxBQUFVLEFBQWtCLEFBQUMsQUFBQyxBQUM5RCxBQUFFO2VBQUMsQUFBVSxXQUFDLEFBQVMsQUFBQyxBQUFDLEFBQ3pCLEFBQUU7ZUFBQyxBQUFtQixvQkFBQyxBQUFJLEtBQUMsQUFBUyxVQUFDLEFBQVEsQUFBQyxBQUFDLEFBQ2xELEFBQUMsQUFBQyxBQUFDO0FBRUgsQUFBUTtpQkFBQyxBQUFZLGFBQUMsQUFBVSxXQUFFLEFBQVMsQUFBQyxBQUFDLEFBRTdDLEFBQUk7YUFBQyxBQUFTLFlBQUcsQUFBSSxBQUFDLEFBQ3hCLEFBQUM7Ozt1Q0FFRCxBQUFNLHlCQUFDLEFBQVksTUFBRSxBQUE0QixPQUFFLEFBQTRCLE9BQy9FLEFBQUM7O3VDQUVELEFBQUkscUJBQUMsQUFBVyxLQUFFLEFBQTRCLE9BQUUsQUFBNEIsT0FBRSxBQUFjLFFBQzFGLEFBQUk7WUFBRSxBQUFHLE1BQWUsQUFBSSxBQUFDO1lBQWxCLEFBQVEsQUFBRSxnQkFFckI7O1lBQUksQUFBSyxRQUFHLEFBQUcsSUFBQyxBQUFHLEFBQUMsQUFBQyxBQUNyQjtZQUFJLEFBQVMsWUFBRyxBQUFHLElBQUMsQUFBTSxBQUFDLFdBQUksQUFBSSxBQUFDLEFBRXBDLEFBQUUsQUFBQztZQUFDLEFBQU0sQUFBQyxRQUFDLEFBQUMsQUFDWCxBQUFVOzhCQUFDLEFBQUssT0FBRSxBQUFTLFVBQUMsQUFBUyxBQUFFLEFBQUMsQUFBQyxBQUMzQyxBQUFDLEFBQUMsQUFBSTtlQUFDLEFBQUMsQUFDTixBQUFVOzhCQUFDLEFBQUssT0FBRSxBQUFJLEtBQUMsQUFBTSxBQUFDLEFBQUMsQUFDakMsQUFBQztBQUVELEFBQVE7aUJBQUMsQUFBTSxPQUFDLEFBQUssQUFBQyxBQUFDLEFBQ3ZCLEFBQVE7aUJBQUMsQUFBWSxhQUFDLEFBQUssT0FBRSxBQUFTLEFBQUMsQUFBQyxBQUMxQyxBQUFDOzs7dUNBRUQsQUFBTSwwQkFBQyxBQUFXLEtBQ2hCLEFBQUk7WUFBRSxBQUFHLEFBQUUsTUFBRyxBQUFJLEFBQUMsS0FDbkI7O1lBQUksQUFBTSxTQUFHLEFBQUcsSUFBQyxBQUFHLEFBQUMsQUFBQyxBQUN0QixBQUFNO2VBQUMsQUFBVSxBQUFFLEFBQUMsQUFDcEIsQUFBSzsyQkFBQyxBQUFNLEFBQUMsQUFBQyxBQUNkLEFBQUk7YUFBQyxBQUFRLFNBQUMsQUFBTSxPQUFDLEFBQU0sQUFBQyxBQUFDLEFBQzdCO2VBQU8sQUFBRyxJQUFDLEFBQUcsQUFBQyxBQUFDLEFBRWhCLEFBQUk7YUFBQyxBQUFTLFlBQUcsQUFBSSxBQUFDLEFBQ3hCLEFBQUM7Ozt1Q0FFRCxBQUFJLHVCQUNGLEFBQUk7YUFBQyxBQUFNLE9BQUMsQUFBcUIsc0JBQUMsQUFBSSxLQUFDLEFBQVMsYUFBSSxBQUFJLEtBQUMsQUFBUyxBQUFDLEFBQUMsQUFDdEUsQUFBQyxBQUNGOzs7O0FBRUQsQUFBTTs7SUFBdUI7K0JBUTNCOzs2QkFBWSxBQUFhLE9BQUUsQUFBYyxPQUFFLEFBQWUsUUFBRSxBQUFvQyxVQUFFLEFBQTZCOzs7c0RBQzdILEFBQUsseUJBQUMsQUFBSyxPQUFFLEFBQUssT0FBRSxBQUFNLFFBQUUsQUFBUSxBQUFDLEFBQUMsQUFSakM7O2VBQUksT0FBRyxBQUFZLEFBQUMsQUFDcEI7ZUFBRyxNQUFHLEFBQUksQUFBZSxBQUFDLEFBR3pCO2VBQVksQUFBYSxBQUFPLEFBQUMsQUFLdkMsQUFBSTtlQUFDLEFBQVMsWUFBRyxBQUFTLEFBQUMsQUFDM0I7WUFBSSxBQUFJLE9BQUcsQUFBSSxPQUFDLEFBQUksT0FBRyxBQUFZLHdCQUFDLEFBQU0sQUFBQyxBQUFZLEFBQUMsQUFBQyxBQUN6RCxBQUFJO2VBQUMsQUFBRyxNQUFHLEFBQU8sd0JBQUMsQ0FBQyxBQUFTLFVBQUMsQUFBRyxLQUFFLEFBQUksQUFBQyxBQUFDLEFBQUMsQUFDNUM7ZUFBQzs7OzhCQUVELEFBQXFCO1lBQUMsQUFBYSxvRkFBRyxBQUFJLEFBQ3hDLEFBQUk7O2FBQUMsQUFBWSxlQUFHLEFBQUksS0FBQyxBQUFTLFVBQUMsQUFBRyxJQUFDLEFBQUssQUFBRSxBQUFDLEFBRS9DLEFBQUUsQUFBQztZQUFDLEFBQWEsQUFBQyxlQUFDLEFBQUMsQUFDbEIsQUFBSTtpQkFBQyxBQUFJLEtBQUMsQUFBSyxNQUFDLEFBQU0sT0FBQyxBQUFZLDZCQUFDLEFBQUksS0FBQyxBQUFRLEFBQUMsQUFBQyxBQUFDLEFBQ3RELEFBQUMsQUFDSDtBQUFDOzs7OEJBRUQsQUFBUSw2QkFBQyxBQUFjLElBQ3JCLEFBQUk7WUFBRSxBQUFTLFlBQW1CLEFBQUksQUFBQztZQUF0QixBQUFZLEFBQUUsb0JBRS9CLEFBQUUsQUFBQzs7WUFBQyxDQUFDLEFBQVMsVUFBQyxBQUFHLElBQUMsQUFBUSxTQUFDLEFBQVksQUFBQyxBQUFDLGVBQUMsQUFBQyxBQUMxQyxBQUFJO2dCQUFFLEFBQU0sQUFBRSxTQUFHLEFBQUksQUFBQyxBQUN0QixBQUFJO2dCQUFFLEFBQUcsQUFBRSxNQUFHLEFBQUUsQUFBQyxHQUVqQjs7Z0JBQUksQUFBTSxTQUFHLEFBQUcsSUFBQyxBQUFhLGNBQUMsQUFBRSxBQUFDLEFBQUMsQUFDbkMsQUFBRztnQkFBQyxBQUFXLFlBQUMsQUFBTSxPQUFDLEFBQWEsQUFBRSxpQkFBRSxBQUFNLFFBQUUsQUFBTSxPQUFDLEFBQVEsQUFBRSxBQUFDLEFBQUMsQUFFbkU7Z0JBQUksQUFBTSxTQUFHLElBQUksQUFBd0IseUJBQUMsQUFBSSxNQUFFLEFBQU0sQUFBQyxBQUFDLEFBQ3hEO2dCQUFJLEFBQVksZUFBRyxBQUFJLEFBQW9CLG9DQUFDLEVBQUUsQUFBTSxnQkFBRSxBQUFTLEFBQUUsQUFBQyxBQUFDLFdBRW5FLEFBQVk7eUJBQUMsQUFBSSxBQUFFLEFBQUMsQUFFcEIsQUFBSTtpQkFBQyxBQUFhLEFBQUUsZ0JBQUMsQUFBVyxZQUFDLEFBQU0sQUFBQyxBQUFDLEFBQzNDLEFBQUM7QUFFRCxBQUFtQztBQUNuQyxBQUFLO2dDQUFDLEFBQVEsb0JBQUMsQUFBRSxBQUFDLEFBQUMsQUFDckIsQUFBQzs7OzhCQUVELEFBQWMseUNBQUMsQUFBZ0MsYUFDN0MsQUFBSTtZQUFFLEFBQUcsTUFBMEIsQUFBSSxBQUFDO1lBQTdCLEFBQUs7WUFBRSxBQUFZLEFBQUUsb0JBRWhDOztZQUFJLEFBQVksZUFBRyxBQUFZLHNCQUFDLEFBQWdCLGlCQUM5QyxBQUFJLEtBQUMsQUFBRyxLQUNSLEFBQUksS0FBQyxBQUFNLE9BQUMsQUFBYSxBQUFFLGlCQUMzQixBQUFXLEFBQ1osQUFBQyxBQUVGLEFBQU07ZUFBQyxBQUFJLEFBQUUscUJBQUMsQUFBRyxLQUFFLEFBQUssT0FBRSxBQUFZLGNBQUUsQUFBWSxBQUFDLEFBQUMsQUFDeEQsQUFBQyxBQUNGLEFBRUQ7Ozs7RUExRHFDLEFBQVc7O2tDQTZEOUM7NkJBQW9CLEFBQWMsSUFBVSxBQUFrQixLQUFVLEFBQTBDOzhCQUE5Rjs7YUFBRSxLQUFGLEFBQUUsQUFBWSxBQUFVO2FBQUcsTUFBSCxBQUFHLEFBQWUsQUFBVTthQUFnQixtQkFBaEIsQUFBZ0IsQUFBMEIsQUFDaEgsQUFBSTthQUFDLEFBQUUsS0FBRyxBQUFFLEFBQUMsQUFDYixBQUFJO2FBQUMsQUFBRyxNQUFHLEFBQUcsQUFBQyxBQUNmLEFBQUk7YUFBQyxBQUFPLFVBQUcsQUFBRyxJQUFDLEFBQUksQUFBRSxBQUFDLEFBQzVCLEFBQUM7Ozs4QkFFRCxBQUFJLHFCQUFDLEFBQWtCLElBQ3JCLEFBQUk7YUFBQyxBQUFPLFVBQUcsQUFBRSxBQUFDLEFBQ3BCLEFBQUM7Ozs4QkFFRCxBQUFhLHlDQUNYLEFBQUk7WUFBRSxBQUFPO1lBQUUsQUFBRyxBQUFFLE1BQUcsQUFBSSxBQUFDLEtBQzVCLEFBQUUsQUFBQzs7WUFBQyxBQUFPLEFBQUMsU0FBQyxBQUFJLEtBQUMsQUFBTyxVQUFHLEFBQUcsSUFBQyxBQUFRLFNBQUMsQUFBTyxBQUFDLEFBQUMsQUFDbEQsQUFBTTtlQUFDLEFBQU8sQUFBQyxBQUNqQixBQUFDOzs7OEJBRUQsQUFBZSw2Q0FDYixBQUFFLEFBQUM7WUFBQyxBQUFJLEtBQUMsQUFBZ0IsQUFBQyxrQkFBQyxBQUFDLEFBQzFCLEFBQUk7aUJBQUMsQUFBZ0IsaUJBQUMsQUFBZSxBQUFFLEFBQUMsQUFDMUMsQUFBQyxBQUNIO0FBQUMsQUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjb3BlLCBEeW5hbWljU2NvcGUsIEVudmlyb25tZW50IH0gZnJvbSAnLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgRGVzdHJveWFibGVCb3VuZHMsIGNsZWFyLCBtb3ZlIGFzIG1vdmVCb3VuZHMgfSBmcm9tICcuLi9ib3VuZHMnO1xuaW1wb3J0IHsgRWxlbWVudFN0YWNrLCBUcmFja2VyLCBVcGRhdGFibGVUcmFja2VyIH0gZnJvbSAnLi4vYnVpbGRlcic7XG5pbXBvcnQgeyBPcHRpb24sIE9wYXF1ZSwgU3RhY2ssIExpbmtlZExpc3QsIERpY3QsIGRpY3QsIGV4cGVjdCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHtcbiAgUGF0aFJlZmVyZW5jZSxcbiAgSXRlcmF0aW9uQXJ0aWZhY3RzLFxuICBJdGVyYXRvclN5bmNocm9uaXplcixcbiAgSXRlcmF0b3JTeW5jaHJvbml6ZXJEZWxlZ2F0ZSxcblxuICAvLyBUYWdzXG4gIGNvbWJpbmUsXG4gIFJldmlzaW9uLFxuICBVcGRhdGFibGVUYWcsXG4gIFRhZ1dyYXBwZXIsXG4gIGNvbWJpbmVTbGljZSxcbiAgQ09OU1RBTlRfVEFHLFxuICBJTklUSUFMXG59IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBPcGNvZGVKU09OLCBVcGRhdGluZ09wY29kZSwgVXBkYXRpbmdPcFNlcSB9IGZyb20gJy4uL29wY29kZXMnO1xuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi4vZW52aXJvbm1lbnQvY29uc3RhbnRzJztcbmltcG9ydCB7IERPTUNoYW5nZXMgfSBmcm9tICcuLi9kb20vaGVscGVyJztcbmltcG9ydCAqIGFzIFNpbXBsZSBmcm9tICcuLi9kb20vaW50ZXJmYWNlcyc7XG5cbmltcG9ydCBWTSwgeyBDYXB0dXJlZFN0YWNrLCBFdmFsdWF0aW9uU3RhY2sgfSBmcm9tICcuL2FwcGVuZCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFVwZGF0aW5nVk0ge1xuICBwdWJsaWMgZW52OiBFbnZpcm9ubWVudDtcbiAgcHVibGljIGRvbTogRE9NQ2hhbmdlcztcbiAgcHVibGljIGFsd2F5c1JldmFsaWRhdGU6IGJvb2xlYW47XG4gIHB1YmxpYyBjb25zdGFudHM6IENvbnN0YW50cztcblxuICBwcml2YXRlIGZyYW1lU3RhY2s6IFN0YWNrPFVwZGF0aW5nVk1GcmFtZT4gPSBuZXcgU3RhY2s8VXBkYXRpbmdWTUZyYW1lPigpO1xuXG4gIGNvbnN0cnVjdG9yKGVudjogRW52aXJvbm1lbnQsIHsgYWx3YXlzUmV2YWxpZGF0ZSA9IGZhbHNlIH0pIHtcbiAgICB0aGlzLmVudiA9IGVudjtcbiAgICB0aGlzLmNvbnN0YW50cyA9IGVudi5jb25zdGFudHM7XG4gICAgdGhpcy5kb20gPSBlbnYuZ2V0RE9NKCk7XG4gICAgdGhpcy5hbHdheXNSZXZhbGlkYXRlID0gYWx3YXlzUmV2YWxpZGF0ZTtcbiAgfVxuXG4gIGV4ZWN1dGUob3Bjb2RlczogVXBkYXRpbmdPcFNlcSwgaGFuZGxlcjogRXhjZXB0aW9uSGFuZGxlcikge1xuICAgIGxldCB7IGZyYW1lU3RhY2sgfSA9IHRoaXM7XG5cbiAgICB0aGlzLnRyeShvcGNvZGVzLCBoYW5kbGVyKTtcblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBpZiAoZnJhbWVTdGFjay5pc0VtcHR5KCkpIGJyZWFrO1xuXG4gICAgICBsZXQgb3Bjb2RlID0gdGhpcy5mcmFtZS5uZXh0U3RhdGVtZW50KCk7XG5cbiAgICAgIGlmIChvcGNvZGUgPT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5mcmFtZVN0YWNrLnBvcCgpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgb3Bjb2RlLmV2YWx1YXRlKHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGZyYW1lKCkge1xuICAgIHJldHVybiB0aGlzLmZyYW1lU3RhY2suY3VycmVudDtcbiAgfVxuXG4gIGdvdG8ob3A6IFVwZGF0aW5nT3Bjb2RlKSB7XG4gICAgdGhpcy5mcmFtZS5nb3RvKG9wKTtcbiAgfVxuXG4gIHRyeShvcHM6IFVwZGF0aW5nT3BTZXEsIGhhbmRsZXI6IE9wdGlvbjxFeGNlcHRpb25IYW5kbGVyPikge1xuICAgIHRoaXMuZnJhbWVTdGFjay5wdXNoKG5ldyBVcGRhdGluZ1ZNRnJhbWUodGhpcywgb3BzLCBoYW5kbGVyKSk7XG4gIH1cblxuICB0aHJvdygpIHtcbiAgICB0aGlzLmZyYW1lLmhhbmRsZUV4Y2VwdGlvbigpO1xuICAgIHRoaXMuZnJhbWVTdGFjay5wb3AoKTtcbiAgfVxuXG4gIGV2YWx1YXRlT3Bjb2RlKG9wY29kZTogVXBkYXRpbmdPcGNvZGUpIHtcbiAgICBvcGNvZGUuZXZhbHVhdGUodGhpcyk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeGNlcHRpb25IYW5kbGVyIHtcbiAgaGFuZGxlRXhjZXB0aW9uKCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVk1TdGF0ZSB7XG4gIGVudjogRW52aXJvbm1lbnQ7XG4gIHNjb3BlOiBTY29wZTtcbiAgZHluYW1pY1Njb3BlOiBEeW5hbWljU2NvcGU7XG4gIHN0YWNrOiBDYXB0dXJlZFN0YWNrO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmxvY2tPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSBpbXBsZW1lbnRzIERlc3Ryb3lhYmxlQm91bmRzIHtcbiAgcHVibGljIHR5cGUgPSBcImJsb2NrXCI7XG4gIHB1YmxpYyBuZXh0ID0gbnVsbDtcbiAgcHVibGljIHByZXYgPSBudWxsO1xuICBwdWJsaWMgY2hpbGRyZW46IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+O1xuXG4gIHByb3RlY3RlZCBlbnY6IEVudmlyb25tZW50O1xuICBwcm90ZWN0ZWQgc2NvcGU6IFNjb3BlO1xuICBwcm90ZWN0ZWQgZHluYW1pY1Njb3BlOiBEeW5hbWljU2NvcGU7XG4gIHByb3RlY3RlZCBzdGFjazogQ2FwdHVyZWRTdGFjaztcbiAgcHJvdGVjdGVkIGJvdW5kczogRGVzdHJveWFibGVCb3VuZHM7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHN0YXJ0OiBudW1iZXIsIHN0YXRlOiBWTVN0YXRlLCBib3VuZHM6IERlc3Ryb3lhYmxlQm91bmRzLCBjaGlsZHJlbjogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4pIHtcbiAgICBzdXBlcigpO1xuICAgIGxldCB7IGVudiwgc2NvcGUsIGR5bmFtaWNTY29wZSwgc3RhY2sgfSA9IHN0YXRlO1xuICAgIHRoaXMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgICB0aGlzLmVudiA9IGVudjtcbiAgICB0aGlzLnNjb3BlID0gc2NvcGU7XG4gICAgdGhpcy5keW5hbWljU2NvcGUgPSBkeW5hbWljU2NvcGU7XG4gICAgdGhpcy5zdGFjayA9IHN0YWNrO1xuICAgIHRoaXMuYm91bmRzID0gYm91bmRzO1xuICB9XG5cbiAgYWJzdHJhY3QgZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKCk6IHZvaWQ7XG5cbiAgcGFyZW50RWxlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICB9XG5cbiAgZmlyc3ROb2RlKCkge1xuICAgIHJldHVybiB0aGlzLmJvdW5kcy5maXJzdE5vZGUoKTtcbiAgfVxuXG4gIGxhc3ROb2RlKCkge1xuICAgIHJldHVybiB0aGlzLmJvdW5kcy5sYXN0Tm9kZSgpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICB2bS50cnkodGhpcy5jaGlsZHJlbiwgbnVsbCk7XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIHRoaXMuYm91bmRzLmRlc3Ryb3koKTtcbiAgfVxuXG4gIGRpZERlc3Ryb3koKSB7XG4gICAgdGhpcy5lbnYuZGlkRGVzdHJveSh0aGlzLmJvdW5kcyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRyeU9wY29kZSBleHRlbmRzIEJsb2NrT3Bjb2RlIGltcGxlbWVudHMgRXhjZXB0aW9uSGFuZGxlciB7XG4gIHB1YmxpYyB0eXBlID0gXCJ0cnlcIjtcblxuICBwcml2YXRlIF90YWc6IFRhZ1dyYXBwZXI8VXBkYXRhYmxlVGFnPjtcblxuICBwcm90ZWN0ZWQgYm91bmRzOiBVcGRhdGFibGVUcmFja2VyO1xuXG4gIGNvbnN0cnVjdG9yKHN0YXJ0OiBudW1iZXIsIHN0YXRlOiBWTVN0YXRlLCBib3VuZHM6IFVwZGF0YWJsZVRyYWNrZXIsIGNoaWxkcmVuOiBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPikge1xuICAgIHN1cGVyKHN0YXJ0LCBzdGF0ZSwgYm91bmRzLCBjaGlsZHJlbik7XG4gICAgdGhpcy50YWcgPSB0aGlzLl90YWcgPSBVcGRhdGFibGVUYWcuY3JlYXRlKENPTlNUQU5UX1RBRyk7XG4gIH1cblxuICBkaWRJbml0aWFsaXplQ2hpbGRyZW4oKSB7XG4gICAgdGhpcy5fdGFnLmlubmVyLnVwZGF0ZShjb21iaW5lU2xpY2UodGhpcy5jaGlsZHJlbikpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICB2bS50cnkodGhpcy5jaGlsZHJlbiwgdGhpcyk7XG4gIH1cblxuICBoYW5kbGVFeGNlcHRpb24oKSB7XG4gICAgbGV0IHsgZW52LCBib3VuZHMsIGNoaWxkcmVuLCBzY29wZSwgZHluYW1pY1Njb3BlLCBzdGFydCwgc3RhY2ssIHByZXYsIG5leHQgfSA9IHRoaXM7XG5cbiAgICBjaGlsZHJlbi5jbGVhcigpO1xuXG4gICAgbGV0IGVsZW1lbnRTdGFjayA9IEVsZW1lbnRTdGFjay5yZXN1bWUoXG4gICAgICBlbnYsXG4gICAgICBib3VuZHMsXG4gICAgICBib3VuZHMucmVzZXQoZW52KVxuICAgICk7XG5cbiAgICBsZXQgdm0gPSBuZXcgVk0oZW52LCBzY29wZSwgZHluYW1pY1Njb3BlLCBlbGVtZW50U3RhY2spO1xuXG4gICAgbGV0IHVwZGF0aW5nID0gbmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCk7XG5cbiAgICB2bS5leGVjdXRlKHN0YXJ0LCB2bSA9PiB7XG4gICAgICB2bS5zdGFjayA9IEV2YWx1YXRpb25TdGFjay5yZXN0b3JlKHN0YWNrKTtcbiAgICAgIHZtLnVwZGF0aW5nT3Bjb2RlU3RhY2sucHVzaCh1cGRhdGluZyk7XG4gICAgICB2bS51cGRhdGVXaXRoKHRoaXMpO1xuICAgICAgdm0udXBkYXRpbmdPcGNvZGVTdGFjay5wdXNoKGNoaWxkcmVuKTtcbiAgICB9KTtcblxuICAgIHRoaXMucHJldiA9IHByZXY7XG4gICAgdGhpcy5uZXh0ID0gbmV4dDtcbiAgfVxufVxuXG5jbGFzcyBMaXN0UmV2YWxpZGF0aW9uRGVsZWdhdGUgaW1wbGVtZW50cyBJdGVyYXRvclN5bmNocm9uaXplckRlbGVnYXRlIHtcbiAgcHJpdmF0ZSBtYXA6IERpY3Q8QmxvY2tPcGNvZGU+O1xuICBwcml2YXRlIHVwZGF0aW5nOiBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPjtcblxuICBwcml2YXRlIGRpZEluc2VydCA9IGZhbHNlO1xuICBwcml2YXRlIGRpZERlbGV0ZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgb3Bjb2RlOiBMaXN0QmxvY2tPcGNvZGUsIHByaXZhdGUgbWFya2VyOiBTaW1wbGUuQ29tbWVudCkge1xuICAgIHRoaXMubWFwID0gb3Bjb2RlLm1hcDtcbiAgICB0aGlzLnVwZGF0aW5nID0gb3Bjb2RlWydjaGlsZHJlbiddO1xuICB9XG5cbiAgaW5zZXJ0KGtleTogc3RyaW5nLCBpdGVtOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIG1lbW86IFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgYmVmb3JlOiBzdHJpbmcpIHtcbiAgICBsZXQgeyBtYXAsIG9wY29kZSwgdXBkYXRpbmcgfSA9IHRoaXM7XG4gICAgbGV0IG5leHRTaWJsaW5nOiBPcHRpb248U2ltcGxlLk5vZGU+ID0gbnVsbDtcbiAgICBsZXQgcmVmZXJlbmNlOiBPcHRpb248QmxvY2tPcGNvZGU+ID0gbnVsbDtcblxuICAgIGlmIChiZWZvcmUpIHtcbiAgICAgIHJlZmVyZW5jZSA9IG1hcFtiZWZvcmVdO1xuICAgICAgbmV4dFNpYmxpbmcgPSByZWZlcmVuY2VbJ2JvdW5kcyddLmZpcnN0Tm9kZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXh0U2libGluZyA9IHRoaXMubWFya2VyO1xuICAgIH1cblxuICAgIGxldCB2bSA9IG9wY29kZS52bUZvckluc2VydGlvbihuZXh0U2libGluZyk7XG4gICAgbGV0IHRyeU9wY29kZTogT3B0aW9uPFRyeU9wY29kZT4gPSBudWxsO1xuXG4gICAgbGV0IHsgc3RhcnQgfSA9IG9wY29kZTtcblxuICAgIHZtLmV4ZWN1dGUoc3RhcnQsIHZtID0+IHtcbiAgICAgIG1hcFtrZXldID0gdHJ5T3Bjb2RlID0gdm0uaXRlcmF0ZShtZW1vLCBpdGVtKTtcbiAgICAgIHZtLnVwZGF0aW5nT3Bjb2RlU3RhY2sucHVzaChuZXcgTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4oKSk7XG4gICAgICB2bS51cGRhdGVXaXRoKHRyeU9wY29kZSk7XG4gICAgICB2bS51cGRhdGluZ09wY29kZVN0YWNrLnB1c2godHJ5T3Bjb2RlLmNoaWxkcmVuKTtcbiAgICB9KTtcblxuICAgIHVwZGF0aW5nLmluc2VydEJlZm9yZSh0cnlPcGNvZGUhLCByZWZlcmVuY2UpO1xuXG4gICAgdGhpcy5kaWRJbnNlcnQgPSB0cnVlO1xuICB9XG5cbiAgcmV0YWluKF9rZXk6IHN0cmluZywgX2l0ZW06IFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgX21lbW86IFBhdGhSZWZlcmVuY2U8T3BhcXVlPikge1xuICB9XG5cbiAgbW92ZShrZXk6IHN0cmluZywgX2l0ZW06IFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgX21lbW86IFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgYmVmb3JlOiBzdHJpbmcpIHtcbiAgICBsZXQgeyBtYXAsIHVwZGF0aW5nIH0gPSB0aGlzO1xuXG4gICAgbGV0IGVudHJ5ID0gbWFwW2tleV07XG4gICAgbGV0IHJlZmVyZW5jZSA9IG1hcFtiZWZvcmVdIHx8IG51bGw7XG5cbiAgICBpZiAoYmVmb3JlKSB7XG4gICAgICBtb3ZlQm91bmRzKGVudHJ5LCByZWZlcmVuY2UuZmlyc3ROb2RlKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBtb3ZlQm91bmRzKGVudHJ5LCB0aGlzLm1hcmtlcik7XG4gICAgfVxuXG4gICAgdXBkYXRpbmcucmVtb3ZlKGVudHJ5KTtcbiAgICB1cGRhdGluZy5pbnNlcnRCZWZvcmUoZW50cnksIHJlZmVyZW5jZSk7XG4gIH1cblxuICBkZWxldGUoa2V5OiBzdHJpbmcpIHtcbiAgICBsZXQgeyBtYXAgfSA9IHRoaXM7XG4gICAgbGV0IG9wY29kZSA9IG1hcFtrZXldO1xuICAgIG9wY29kZS5kaWREZXN0cm95KCk7XG4gICAgY2xlYXIob3Bjb2RlKTtcbiAgICB0aGlzLnVwZGF0aW5nLnJlbW92ZShvcGNvZGUpO1xuICAgIGRlbGV0ZSBtYXBba2V5XTtcblxuICAgIHRoaXMuZGlkRGVsZXRlID0gdHJ1ZTtcbiAgfVxuXG4gIGRvbmUoKSB7XG4gICAgdGhpcy5vcGNvZGUuZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKHRoaXMuZGlkSW5zZXJ0IHx8IHRoaXMuZGlkRGVsZXRlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGlzdEJsb2NrT3Bjb2RlIGV4dGVuZHMgQmxvY2tPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwibGlzdC1ibG9ja1wiO1xuICBwdWJsaWMgbWFwID0gZGljdDxCbG9ja09wY29kZT4oKTtcbiAgcHVibGljIGFydGlmYWN0czogSXRlcmF0aW9uQXJ0aWZhY3RzO1xuXG4gIHByaXZhdGUgbGFzdEl0ZXJhdGVkOiBSZXZpc2lvbiA9IElOSVRJQUw7XG4gIHByaXZhdGUgX3RhZzogVGFnV3JhcHBlcjxVcGRhdGFibGVUYWc+O1xuXG4gIGNvbnN0cnVjdG9yKHN0YXJ0OiBudW1iZXIsIHN0YXRlOiBWTVN0YXRlLCBib3VuZHM6IFRyYWNrZXIsIGNoaWxkcmVuOiBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPiwgYXJ0aWZhY3RzOiBJdGVyYXRpb25BcnRpZmFjdHMpIHtcbiAgICBzdXBlcihzdGFydCwgc3RhdGUsIGJvdW5kcywgY2hpbGRyZW4pO1xuICAgIHRoaXMuYXJ0aWZhY3RzID0gYXJ0aWZhY3RzO1xuICAgIGxldCBfdGFnID0gdGhpcy5fdGFnID0gVXBkYXRhYmxlVGFnLmNyZWF0ZShDT05TVEFOVF9UQUcpO1xuICAgIHRoaXMudGFnID0gY29tYmluZShbYXJ0aWZhY3RzLnRhZywgX3RhZ10pO1xuICB9XG5cbiAgZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKGxpc3REaWRDaGFuZ2UgPSB0cnVlKSB7XG4gICAgdGhpcy5sYXN0SXRlcmF0ZWQgPSB0aGlzLmFydGlmYWN0cy50YWcudmFsdWUoKTtcblxuICAgIGlmIChsaXN0RGlkQ2hhbmdlKSB7XG4gICAgICB0aGlzLl90YWcuaW5uZXIudXBkYXRlKGNvbWJpbmVTbGljZSh0aGlzLmNoaWxkcmVuKSk7XG4gICAgfVxuICB9XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICBsZXQgeyBhcnRpZmFjdHMsIGxhc3RJdGVyYXRlZCB9ID0gdGhpcztcblxuICAgIGlmICghYXJ0aWZhY3RzLnRhZy52YWxpZGF0ZShsYXN0SXRlcmF0ZWQpKSB7XG4gICAgICBsZXQgeyBib3VuZHMgfSA9IHRoaXM7XG4gICAgICBsZXQgeyBkb20gfSA9IHZtO1xuXG4gICAgICBsZXQgbWFya2VyID0gZG9tLmNyZWF0ZUNvbW1lbnQoJycpO1xuICAgICAgZG9tLmluc2VydEFmdGVyKGJvdW5kcy5wYXJlbnRFbGVtZW50KCksIG1hcmtlciwgYm91bmRzLmxhc3ROb2RlKCkpO1xuXG4gICAgICBsZXQgdGFyZ2V0ID0gbmV3IExpc3RSZXZhbGlkYXRpb25EZWxlZ2F0ZSh0aGlzLCBtYXJrZXIpO1xuICAgICAgbGV0IHN5bmNocm9uaXplciA9IG5ldyBJdGVyYXRvclN5bmNocm9uaXplcih7IHRhcmdldCwgYXJ0aWZhY3RzIH0pO1xuXG4gICAgICBzeW5jaHJvbml6ZXIuc3luYygpO1xuXG4gICAgICB0aGlzLnBhcmVudEVsZW1lbnQoKS5yZW1vdmVDaGlsZChtYXJrZXIpO1xuICAgIH1cblxuICAgIC8vIFJ1biBub3ctdXBkYXRlZCB1cGRhdGluZyBvcGNvZGVzXG4gICAgc3VwZXIuZXZhbHVhdGUodm0pO1xuICB9XG5cbiAgdm1Gb3JJbnNlcnRpb24obmV4dFNpYmxpbmc6IE9wdGlvbjxTaW1wbGUuTm9kZT4pOiBWTSB7XG4gICAgbGV0IHsgZW52LCBzY29wZSwgZHluYW1pY1Njb3BlIH0gPSB0aGlzO1xuXG4gICAgbGV0IGVsZW1lbnRTdGFjayA9IEVsZW1lbnRTdGFjay5mb3JJbml0aWFsUmVuZGVyKFxuICAgICAgdGhpcy5lbnYsXG4gICAgICB0aGlzLmJvdW5kcy5wYXJlbnRFbGVtZW50KCksXG4gICAgICBuZXh0U2libGluZ1xuICAgICk7XG5cbiAgICByZXR1cm4gbmV3IFZNKGVudiwgc2NvcGUsIGR5bmFtaWNTY29wZSwgZWxlbWVudFN0YWNrKTtcbiAgfVxufVxuXG5jbGFzcyBVcGRhdGluZ1ZNRnJhbWUge1xuICBwcml2YXRlIGN1cnJlbnQ6IE9wdGlvbjxVcGRhdGluZ09wY29kZT47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB2bTogVXBkYXRpbmdWTSwgcHJpdmF0ZSBvcHM6IFVwZGF0aW5nT3BTZXEsIHByaXZhdGUgZXhjZXB0aW9uSGFuZGxlcjogT3B0aW9uPEV4Y2VwdGlvbkhhbmRsZXI+KSB7XG4gICAgdGhpcy52bSA9IHZtO1xuICAgIHRoaXMub3BzID0gb3BzO1xuICAgIHRoaXMuY3VycmVudCA9IG9wcy5oZWFkKCk7XG4gIH1cblxuICBnb3RvKG9wOiBVcGRhdGluZ09wY29kZSkge1xuICAgIHRoaXMuY3VycmVudCA9IG9wO1xuICB9XG5cbiAgbmV4dFN0YXRlbWVudCgpOiBPcHRpb248VXBkYXRpbmdPcGNvZGU+IHtcbiAgICBsZXQgeyBjdXJyZW50LCBvcHMgfSA9IHRoaXM7XG4gICAgaWYgKGN1cnJlbnQpIHRoaXMuY3VycmVudCA9IG9wcy5uZXh0Tm9kZShjdXJyZW50KTtcbiAgICByZXR1cm4gY3VycmVudDtcbiAgfVxuXG4gIGhhbmRsZUV4Y2VwdGlvbigpIHtcbiAgICBpZiAodGhpcy5leGNlcHRpb25IYW5kbGVyKSB7XG4gICAgICB0aGlzLmV4Y2VwdGlvbkhhbmRsZXIuaGFuZGxlRXhjZXB0aW9uKCk7XG4gICAgfVxuICB9XG59XG4iXX0=

@@ -8,3 +8,3 @@ import './lib/bootstrap';

export { AttributeManager as IAttributeManager, AttributeManager, PropertyManager, INPUT_VALUE_PROPERTY_MANAGER, defaultManagers, defaultAttributeManagers, defaultPropertyManagers, readDOMAttr } from './lib/dom/attribute-managers';
export { Register, debugSlice } from './lib/opcodes';
export { Register, } from './lib/opcodes';
export { normalizeTextValue } from './lib/compiled/opcodes/content';

@@ -25,2 +25,2 @@ export { setDebuggerCallback, resetDebuggerCallback } from './lib/compiled/opcodes/debugger';

export { ConcreteBounds } from './lib/bounds';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLGlCQUFpQixDQUFDO0FBRXpCLE9BQU8sRUFBRSxPQUFPLElBQUksZUFBZSxFQUE2QixNQUFNLGdCQUFnQixDQUFDO0FBRXZGLE9BQU8sRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVqSCxPQUFPLEVBQ0osT0FBTyxJQUFJLGdCQUFnQixFQUM3QixNQUFNLGdDQUFnQyxDQUFDO0FBRXhDLE9BQU8sRUFFTCxhQUFhLEVBQ2QsTUFBTSxnQkFBZ0IsQ0FBQztBQU94QixPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUd4QixNQUFNLHVCQUF1QixDQUFDO0FBRS9CLE9BQU8sRUFDTCxnQkFBZ0IsSUFBSSxpQkFBaUIsRUFDckMsZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDZiw0QkFBNEIsRUFDNUIsZUFBZSxFQUNmLHdCQUF3QixFQUN4Qix1QkFBdUIsRUFDdkIsV0FBVyxFQUNaLE1BQU0sOEJBQThCLENBQUM7QUFFdEMsT0FBTyxFQUNMLFFBQVEsRUFDUixVQUFVLEVBQ1gsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNMLGtCQUFrQixFQUNuQixNQUFNLGdDQUFnQyxDQUFDO0FBRXhDLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIscUJBQXFCLEVBRXRCLE1BQU0saUNBQWlDLENBQUM7QUFFekMsT0FBTyxFQUNMLE9BQU8sSUFBSSxhQUFhLEVBQ3pCLE1BQU0sK0JBQStCLENBQUM7QUFFdkMsT0FBTyxFQUNMLE1BQU0sSUFBSSxXQUFXLEVBQ3JCLE9BQU8sSUFBSSxZQUFZLEVBR3ZCLFdBQVcsRUFDWCxJQUFJLElBQUksaUJBQWlCLEVBQzFCLE1BQU0sd0JBQXdCLENBQUM7QUFFaEMsT0FBTyxFQUNMLFVBQVUsRUFDVixrQkFBa0IsRUFLbEIsZ0JBQWdCLEVBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBa0IsVUFBVSxFQUFFLFlBQVksRUFBa0IsTUFBTSxVQUFVLENBQUM7QUFXcEYsT0FBTyxFQUFjLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV4RCxPQUFPLEVBQ0wsS0FBSyxFQUNMLE9BQU8sSUFBSSxXQUFXLEdBR3ZCLE1BQU0sbUJBQW1CLENBQUM7QUFFM0IsT0FBTyxFQUNMLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBSUwsbUJBQW1CLEVBSW5CLHFCQUFxQixFQUN0QixNQUFNLDRCQUE0QixDQUFDO0FBTXBDLE9BQU8sRUFBRSxPQUFPLElBQUksVUFBVSxFQUFFLFVBQVUsSUFBSSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDekksT0FBUSxLQUFLLE1BQU0sTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7QUFDbEIsT0FBTyxFQUFFLFlBQVksRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFxQixjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJy4vbGliL2Jvb3RzdHJhcCc7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgdGVtcGxhdGVGYWN0b3J5LCBUZW1wbGF0ZUZhY3RvcnksIFRlbXBsYXRlIH0gZnJvbSAnLi9saWIvdGVtcGxhdGUnO1xuXG5leHBvcnQgeyBOVUxMX1JFRkVSRU5DRSwgVU5ERUZJTkVEX1JFRkVSRU5DRSwgUHJpbWl0aXZlUmVmZXJlbmNlLCBDb25kaXRpb25hbFJlZmVyZW5jZSB9IGZyb20gJy4vbGliL3JlZmVyZW5jZXMnO1xuXG5leHBvcnQge1xuICAgZGVmYXVsdCBhcyBPcGNvZGVCdWlsZGVyRFNMXG59IGZyb20gJy4vbGliL2NvbXBpbGVkL29wY29kZXMvYnVpbGRlcic7XG5cbmV4cG9ydCB7XG4gIENvbXBpbGFibGVMYXlvdXQsXG4gIGNvbXBpbGVMYXlvdXRcbn0gZnJvbSAnLi9saWIvY29tcGlsZXInO1xuXG5leHBvcnQge1xuICBDb21wb25lbnRCdWlsZGVyLFxuICBDb21wb25lbnRBcmdzXG59IGZyb20gJy4vbGliL29wY29kZS1idWlsZGVyJztcblxuZXhwb3J0IHtcbiAgQ29tcGlsZWRTdGF0aWNUZW1wbGF0ZSxcbiAgQ29tcGlsZWREeW5hbWljVGVtcGxhdGUsXG4gIENvbXBpbGVkRHluYW1pY0Jsb2NrLFxuICBDb21waWxlZER5bmFtaWNQcm9ncmFtXG59IGZyb20gJy4vbGliL2NvbXBpbGVkL2Jsb2Nrcyc7XG5cbmV4cG9ydCB7XG4gIEF0dHJpYnV0ZU1hbmFnZXIgYXMgSUF0dHJpYnV0ZU1hbmFnZXIsXG4gIEF0dHJpYnV0ZU1hbmFnZXIsXG4gIFByb3BlcnR5TWFuYWdlcixcbiAgSU5QVVRfVkFMVUVfUFJPUEVSVFlfTUFOQUdFUixcbiAgZGVmYXVsdE1hbmFnZXJzLFxuICBkZWZhdWx0QXR0cmlidXRlTWFuYWdlcnMsXG4gIGRlZmF1bHRQcm9wZXJ0eU1hbmFnZXJzLFxuICByZWFkRE9NQXR0clxufSBmcm9tICcuL2xpYi9kb20vYXR0cmlidXRlLW1hbmFnZXJzJztcblxuZXhwb3J0IHtcbiAgUmVnaXN0ZXIsXG4gIGRlYnVnU2xpY2Vcbn0gZnJvbSAnLi9saWIvb3Bjb2Rlcyc7XG5cbmV4cG9ydCB7XG4gIG5vcm1hbGl6ZVRleHRWYWx1ZVxufSBmcm9tICcuL2xpYi9jb21waWxlZC9vcGNvZGVzL2NvbnRlbnQnO1xuXG5leHBvcnQge1xuICBzZXREZWJ1Z2dlckNhbGxiYWNrLFxuICByZXNldERlYnVnZ2VyQ2FsbGJhY2ssXG4gIERlYnVnQ2FsbGJhY2tcbn0gZnJvbSAnLi9saWIvY29tcGlsZWQvb3Bjb2Rlcy9kZWJ1Z2dlcic7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgZ2V0RHluYW1pY1ZhclxufSBmcm9tICcuL2xpYi9oZWxwZXJzL2dldC1keW5hbWljLXZhcic7XG5cbmV4cG9ydCB7XG4gIEJsb2NrcyBhcyBCbG9ja01hY3JvcyxcbiAgSW5saW5lcyBhcyBJbmxpbmVNYWNyb3MsXG4gIEJsb2NrTWFjcm8sXG4gIE1pc3NpbmdCbG9ja01hY3JvLFxuICBjb21waWxlTGlzdCxcbiAgZXhwciBhcyBjb21waWxlRXhwcmVzc2lvblxufSBmcm9tICcuL2xpYi9zeW50YXgvZnVuY3Rpb25zJztcblxuZXhwb3J0IHtcbiAgQ2xpZW50U2lkZSxcbiAgQ29tcGlsYWJsZVRlbXBsYXRlLFxuICBTY2FubmVkQmxvY2ssXG4gIFNjYW5uZWRQcm9ncmFtLFxuICBCbG9jayxcbiAgUHJvZ3JhbSxcbiAgY29tcGlsZVN0YXRlbWVudFxufSBmcm9tICcuL2xpYi9zY2FubmVyJztcblxuZXhwb3J0IHsgUHVibGljVk0gYXMgVk0sIFVwZGF0aW5nVk0sIFJlbmRlclJlc3VsdCwgSXRlcmF0b3JSZXN1bHQgfSBmcm9tICcuL2xpYi92bSc7XG5cbmV4cG9ydCB7XG4gIElBcmd1bWVudHMgYXMgQXJndW1lbnRzLFxuICBJQ2FwdHVyZWRBcmd1bWVudHMgYXMgQ2FwdHVyZWRBcmd1bWVudHMsXG4gIElQb3NpdGlvbmFsQXJndW1lbnRzIGFzIFBvc2l0aW9uYWxBcmd1bWVudHMsXG4gIElDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHMgYXMgQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzLFxuICBJTmFtZWRBcmd1bWVudHMgYXMgTmFtZWRBcmd1bWVudHMsXG4gIElDYXB0dXJlZE5hbWVkQXJndW1lbnRzIGFzIENhcHR1cmVkTmFtZWRBcmd1bWVudHMsXG59IGZyb20gJy4vbGliL3ZtL2FyZ3VtZW50cyc7XG5cbmV4cG9ydCB7IFNhZmVTdHJpbmcsIGlzU2FmZVN0cmluZyB9IGZyb20gJy4vbGliL3Vwc2VydCc7XG5cbmV4cG9ydCB7XG4gIFNjb3BlLFxuICBkZWZhdWx0IGFzIEVudmlyb25tZW50LFxuICBIZWxwZXIsXG4gIER5bmFtaWNTY29wZSxcbn0gZnJvbSAnLi9saWIvZW52aXJvbm1lbnQnO1xuXG5leHBvcnQge1xuICBQYXJ0aWFsRGVmaW5pdGlvblxufSBmcm9tICcuL2xpYi9wYXJ0aWFsJztcblxuZXhwb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDb21wb25lbnRDbGFzcyxcbiAgQ29tcG9uZW50TWFuYWdlcixcbiAgQ29tcG9uZW50RGVmaW5pdGlvbixcbiAgQ29tcG9uZW50TGF5b3V0QnVpbGRlcixcbiAgQ29tcG9uZW50QXR0cnNCdWlsZGVyLFxuICBQcmVwYXJlZEFyZ3VtZW50cyxcbiAgaXNDb21wb25lbnREZWZpbml0aW9uXG59IGZyb20gJy4vbGliL2NvbXBvbmVudC9pbnRlcmZhY2VzJztcblxuZXhwb3J0IHtcbiAgTW9kaWZpZXJNYW5hZ2VyXG59IGZyb20gJy4vbGliL21vZGlmaWVyL2ludGVyZmFjZXMnO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIERPTUNoYW5nZXMsIERPTUNoYW5nZXMgYXMgSURPTUNoYW5nZXMsIERPTVRyZWVDb25zdHJ1Y3Rpb24sIGlzV2hpdGVzcGFjZSwgaW5zZXJ0SFRNTEJlZm9yZSB9IGZyb20gJy4vbGliL2RvbS9oZWxwZXInO1xuaW1wb3J0ICAqIGFzIFNpbXBsZSBmcm9tICcuL2xpYi9kb20vaW50ZXJmYWNlcyc7XG5leHBvcnQgeyBTaW1wbGUgfTtcbmV4cG9ydCB7IEVsZW1lbnRTdGFjaywgRWxlbWVudE9wZXJhdGlvbnMgfSBmcm9tICcuL2xpYi9idWlsZGVyJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQm91bmRzLCBDb25jcmV0ZUJvdW5kcyB9IGZyb20gJy4vbGliL2JvdW5kcyc7XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLGlCQUFpQixDQUFDO0FBRXpCLE9BQU8sRUFBRSxPQUFPLElBQUksZUFBZSxFQUE2QixNQUFNLGdCQUFnQixDQUFDO0FBRXZGLE9BQU8sRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVqSCxPQUFPLEVBQ0osT0FBTyxJQUFJLGdCQUFnQixFQUM3QixNQUFNLGdDQUFnQyxDQUFDO0FBRXhDLE9BQU8sRUFFTCxhQUFhLEVBQ2QsTUFBTSxnQkFBZ0IsQ0FBQztBQU94QixPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUd4QixNQUFNLHVCQUF1QixDQUFDO0FBRS9CLE9BQU8sRUFDTCxnQkFBZ0IsSUFBSSxpQkFBaUIsRUFDckMsZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDZiw0QkFBNEIsRUFDNUIsZUFBZSxFQUNmLHdCQUF3QixFQUN4Qix1QkFBdUIsRUFDdkIsV0FBVyxFQUNaLE1BQU0sOEJBQThCLENBQUM7QUFFdEMsT0FBTyxFQUNMLFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsa0JBQWtCLEVBQ25CLE1BQU0sZ0NBQWdDLENBQUM7QUFFeEMsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixxQkFBcUIsRUFFdEIsTUFBTSxpQ0FBaUMsQ0FBQztBQUV6QyxPQUFPLEVBQ0wsT0FBTyxJQUFJLGFBQWEsRUFDekIsTUFBTSwrQkFBK0IsQ0FBQztBQUV2QyxPQUFPLEVBQ0wsTUFBTSxJQUFJLFdBQVcsRUFDckIsT0FBTyxJQUFJLFlBQVksRUFHdkIsV0FBVyxFQUNYLElBQUksSUFBSSxpQkFBaUIsRUFDMUIsTUFBTSx3QkFBd0IsQ0FBQztBQUVoQyxPQUFPLEVBQ0wsVUFBVSxFQUNWLGtCQUFrQixFQUtsQixnQkFBZ0IsRUFDakIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFrQixVQUFVLEVBQUUsWUFBWSxFQUFrQixNQUFNLFVBQVUsQ0FBQztBQVdwRixPQUFPLEVBQWMsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXhELE9BQU8sRUFDTCxLQUFLLEVBQ0wsT0FBTyxJQUFJLFdBQVcsR0FHdkIsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQixPQUFPLEVBQ0wsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFJTCxtQkFBbUIsRUFJbkIscUJBQXFCLEVBQ3RCLE1BQU0sNEJBQTRCLENBQUM7QUFNcEMsT0FBTyxFQUFFLE9BQU8sSUFBSSxVQUFVLEVBQUUsVUFBVSxJQUFJLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN6SSxPQUFRLEtBQUssTUFBTSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUNsQixPQUFPLEVBQUUsWUFBWSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQXFCLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnLi9saWIvYm9vdHN0cmFwJztcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyB0ZW1wbGF0ZUZhY3RvcnksIFRlbXBsYXRlRmFjdG9yeSwgVGVtcGxhdGUgfSBmcm9tICcuL2xpYi90ZW1wbGF0ZSc7XG5cbmV4cG9ydCB7IE5VTExfUkVGRVJFTkNFLCBVTkRFRklORURfUkVGRVJFTkNFLCBQcmltaXRpdmVSZWZlcmVuY2UsIENvbmRpdGlvbmFsUmVmZXJlbmNlIH0gZnJvbSAnLi9saWIvcmVmZXJlbmNlcyc7XG5cbmV4cG9ydCB7XG4gICBkZWZhdWx0IGFzIE9wY29kZUJ1aWxkZXJEU0xcbn0gZnJvbSAnLi9saWIvY29tcGlsZWQvb3Bjb2Rlcy9idWlsZGVyJztcblxuZXhwb3J0IHtcbiAgQ29tcGlsYWJsZUxheW91dCxcbiAgY29tcGlsZUxheW91dFxufSBmcm9tICcuL2xpYi9jb21waWxlcic7XG5cbmV4cG9ydCB7XG4gIENvbXBvbmVudEJ1aWxkZXIsXG4gIENvbXBvbmVudEFyZ3Ncbn0gZnJvbSAnLi9saWIvb3Bjb2RlLWJ1aWxkZXInO1xuXG5leHBvcnQge1xuICBDb21waWxlZFN0YXRpY1RlbXBsYXRlLFxuICBDb21waWxlZER5bmFtaWNUZW1wbGF0ZSxcbiAgQ29tcGlsZWREeW5hbWljQmxvY2ssXG4gIENvbXBpbGVkRHluYW1pY1Byb2dyYW1cbn0gZnJvbSAnLi9saWIvY29tcGlsZWQvYmxvY2tzJztcblxuZXhwb3J0IHtcbiAgQXR0cmlidXRlTWFuYWdlciBhcyBJQXR0cmlidXRlTWFuYWdlcixcbiAgQXR0cmlidXRlTWFuYWdlcixcbiAgUHJvcGVydHlNYW5hZ2VyLFxuICBJTlBVVF9WQUxVRV9QUk9QRVJUWV9NQU5BR0VSLFxuICBkZWZhdWx0TWFuYWdlcnMsXG4gIGRlZmF1bHRBdHRyaWJ1dGVNYW5hZ2VycyxcbiAgZGVmYXVsdFByb3BlcnR5TWFuYWdlcnMsXG4gIHJlYWRET01BdHRyXG59IGZyb20gJy4vbGliL2RvbS9hdHRyaWJ1dGUtbWFuYWdlcnMnO1xuXG5leHBvcnQge1xuICBSZWdpc3Rlcixcbn0gZnJvbSAnLi9saWIvb3Bjb2Rlcyc7XG5cbmV4cG9ydCB7XG4gIG5vcm1hbGl6ZVRleHRWYWx1ZVxufSBmcm9tICcuL2xpYi9jb21waWxlZC9vcGNvZGVzL2NvbnRlbnQnO1xuXG5leHBvcnQge1xuICBzZXREZWJ1Z2dlckNhbGxiYWNrLFxuICByZXNldERlYnVnZ2VyQ2FsbGJhY2ssXG4gIERlYnVnQ2FsbGJhY2tcbn0gZnJvbSAnLi9saWIvY29tcGlsZWQvb3Bjb2Rlcy9kZWJ1Z2dlcic7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgZ2V0RHluYW1pY1ZhclxufSBmcm9tICcuL2xpYi9oZWxwZXJzL2dldC1keW5hbWljLXZhcic7XG5cbmV4cG9ydCB7XG4gIEJsb2NrcyBhcyBCbG9ja01hY3JvcyxcbiAgSW5saW5lcyBhcyBJbmxpbmVNYWNyb3MsXG4gIEJsb2NrTWFjcm8sXG4gIE1pc3NpbmdCbG9ja01hY3JvLFxuICBjb21waWxlTGlzdCxcbiAgZXhwciBhcyBjb21waWxlRXhwcmVzc2lvblxufSBmcm9tICcuL2xpYi9zeW50YXgvZnVuY3Rpb25zJztcblxuZXhwb3J0IHtcbiAgQ2xpZW50U2lkZSxcbiAgQ29tcGlsYWJsZVRlbXBsYXRlLFxuICBTY2FubmVkQmxvY2ssXG4gIFNjYW5uZWRQcm9ncmFtLFxuICBCbG9jayxcbiAgUHJvZ3JhbSxcbiAgY29tcGlsZVN0YXRlbWVudFxufSBmcm9tICcuL2xpYi9zY2FubmVyJztcblxuZXhwb3J0IHsgUHVibGljVk0gYXMgVk0sIFVwZGF0aW5nVk0sIFJlbmRlclJlc3VsdCwgSXRlcmF0b3JSZXN1bHQgfSBmcm9tICcuL2xpYi92bSc7XG5cbmV4cG9ydCB7XG4gIElBcmd1bWVudHMgYXMgQXJndW1lbnRzLFxuICBJQ2FwdHVyZWRBcmd1bWVudHMgYXMgQ2FwdHVyZWRBcmd1bWVudHMsXG4gIElQb3NpdGlvbmFsQXJndW1lbnRzIGFzIFBvc2l0aW9uYWxBcmd1bWVudHMsXG4gIElDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHMgYXMgQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzLFxuICBJTmFtZWRBcmd1bWVudHMgYXMgTmFtZWRBcmd1bWVudHMsXG4gIElDYXB0dXJlZE5hbWVkQXJndW1lbnRzIGFzIENhcHR1cmVkTmFtZWRBcmd1bWVudHMsXG59IGZyb20gJy4vbGliL3ZtL2FyZ3VtZW50cyc7XG5cbmV4cG9ydCB7IFNhZmVTdHJpbmcsIGlzU2FmZVN0cmluZyB9IGZyb20gJy4vbGliL3Vwc2VydCc7XG5cbmV4cG9ydCB7XG4gIFNjb3BlLFxuICBkZWZhdWx0IGFzIEVudmlyb25tZW50LFxuICBIZWxwZXIsXG4gIER5bmFtaWNTY29wZSxcbn0gZnJvbSAnLi9saWIvZW52aXJvbm1lbnQnO1xuXG5leHBvcnQge1xuICBQYXJ0aWFsRGVmaW5pdGlvblxufSBmcm9tICcuL2xpYi9wYXJ0aWFsJztcblxuZXhwb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDb21wb25lbnRDbGFzcyxcbiAgQ29tcG9uZW50TWFuYWdlcixcbiAgQ29tcG9uZW50RGVmaW5pdGlvbixcbiAgQ29tcG9uZW50TGF5b3V0QnVpbGRlcixcbiAgQ29tcG9uZW50QXR0cnNCdWlsZGVyLFxuICBQcmVwYXJlZEFyZ3VtZW50cyxcbiAgaXNDb21wb25lbnREZWZpbml0aW9uXG59IGZyb20gJy4vbGliL2NvbXBvbmVudC9pbnRlcmZhY2VzJztcblxuZXhwb3J0IHtcbiAgTW9kaWZpZXJNYW5hZ2VyXG59IGZyb20gJy4vbGliL21vZGlmaWVyL2ludGVyZmFjZXMnO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIERPTUNoYW5nZXMsIERPTUNoYW5nZXMgYXMgSURPTUNoYW5nZXMsIERPTVRyZWVDb25zdHJ1Y3Rpb24sIGlzV2hpdGVzcGFjZSwgaW5zZXJ0SFRNTEJlZm9yZSB9IGZyb20gJy4vbGliL2RvbS9oZWxwZXInO1xuaW1wb3J0ICAqIGFzIFNpbXBsZSBmcm9tICcuL2xpYi9kb20vaW50ZXJmYWNlcyc7XG5leHBvcnQgeyBTaW1wbGUgfTtcbmV4cG9ydCB7IEVsZW1lbnRTdGFjaywgRWxlbWVudE9wZXJhdGlvbnMgfSBmcm9tICcuL2xpYi9idWlsZGVyJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQm91bmRzLCBDb25jcmV0ZUJvdW5kcyB9IGZyb20gJy4vbGliL2JvdW5kcyc7XG4iXX0=
import { clear } from './bounds';
import { Stack, assert, expect } from '@glimmer/util';
import { Stack, } from '@glimmer/util';
import { SimpleElementOperations } from './compiled/opcodes/dom';

@@ -64,9 +64,9 @@ class First {

expectConstructing(method) {
return expect(this.constructing, `${method} should only be called while constructing an element`);
return this.constructing;
}
expectOperations(method) {
return expect(this.operations, `${method} should only be called while constructing an element`);
return this.operations;
}
block() {
return expect(this.blockStack.current, "Expected a current block tracker");
return this.blockStack.current;
}

@@ -78,3 +78,3 @@ popElement() {

// LOGGER.debug(`-> element stack ${this.elementStack.toArray().map(e => e.tagName).join(', ')}`);
this.element = expect(elementStack.current, "can't pop past the last element");
this.element = elementStack.current;
this.nextSibling = nextSiblingStack.current;

@@ -116,3 +116,3 @@ return topElement;

this.block().finalize(this);
return expect(this.blockStack.pop(), "Expected popBlock to return a block");
return this.blockStack.pop();
}

@@ -127,3 +127,3 @@ openElement(tag, operations = this.defaultOperations) {

let parent = this.element;
let element = expect(this.constructing, `flushElement should only be called when constructing an element`);
let element = this.constructing;
this.dom.insertBefore(parent, element, this.nextSibling);

@@ -290,9 +290,6 @@ this.constructing = null;

openElement(_element) {
assert(false, 'Cannot openElement directly inside a block list');
}
closeElement() {
assert(false, 'Cannot closeElement directly inside a block list');
}
newNode(_node) {
assert(false, 'Cannot create a new node directly inside a block list');
}

@@ -306,2 +303,2 @@ newBounds(_bounds) {

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBZSxFQUE2QixLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFJcEUsT0FBTyxFQUF1QixLQUFLLEVBQThCLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFRdkcsT0FBTyxFQUNMLHVCQUF1QixFQUN4QixNQUFNLHdCQUF3QixDQUFDO0FBWWhDO0lBQ0UsWUFBb0IsSUFBVTtRQUFWLFNBQUksR0FBSixJQUFJLENBQU07SUFBSSxDQUFDO0lBRW5DLFNBQVM7UUFDUCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0NBQ0Y7QUFFRDtJQUNFLFlBQW9CLElBQVU7UUFBVixTQUFJLEdBQUosSUFBSSxDQUFNO0lBQUksQ0FBQztJQUVuQyxRQUFRO1FBQ04sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztDQUNGO0FBVUQsTUFBTTtJQUdKLFlBQVksTUFBYztRQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsYUFBYTtRQUNYLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxTQUFTO1FBQ1AsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELFFBQVE7UUFDTixNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQWM7UUFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztDQUNGO0FBRUQsTUFBTTtJQTRCSixZQUFZLEdBQWdCLEVBQUUsVUFBMEIsRUFBRSxXQUFnQztRQXhCbkYsaUJB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SSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxhQUFhO1FBQ1gsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pDLE1BQU0sQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqQyxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQWlCO1FBQzNCLE1BQU0sQ0FBQyxLQUFLLEVBQUUsaURBQWlELENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsWUFBWTtRQUNWLE1BQU0sQ0FBQyxLQUFLLEVBQUUsa0RBQWtELENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQVc7UUFDakIsTUFBTSxDQUFDLEtBQUssRUFBRSx1REFBdUQsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxTQUFTLENBQUMsT0FBZTtJQUN6QixDQUFDO0lBRUQsY0FBYyxDQUFDLEVBQWU7SUFDOUIsQ0FBQztJQUVELFFBQVEsQ0FBQyxNQUFvQjtJQUM3QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQm91bmRzLCB7IEN1cnNvciwgRGVzdHJveWFibGVCb3VuZHMsIGNsZWFyIH0gZnJvbSAnLi9ib3VuZHMnO1xuXG5pbXBvcnQgeyBET01DaGFuZ2VzLCBET01UcmVlQ29uc3RydWN0aW9uIH0gZnJvbSAnLi9kb20vaGVscGVyJztcblxuaW1wb3J0IHsgT3B0aW9uLCBEZXN0cm95YWJsZSwgU3RhY2ssIExpbmtlZExpc3QsIExpbmtlZExpc3ROb2RlLCBhc3NlcnQsIGV4cGVjdCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuXG5pbXBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4vZW52aXJvbm1lbnQnO1xuXG5pbXBvcnQgeyBWTSB9IGZyb20gJy4vdm0nO1xuXG5pbXBvcnQgeyBWZXJzaW9uZWRSZWZlcmVuY2UgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuXG5pbXBvcnQge1xuICBTaW1wbGVFbGVtZW50T3BlcmF0aW9uc1xufSBmcm9tICcuL2NvbXBpbGVkL29wY29kZXMvZG9tJztcblxuaW1wb3J0ICogYXMgU2ltcGxlIGZyb20gJy4vZG9tL2ludGVyZmFjZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpcnN0Tm9kZSB7XG4gIGZpcnN0Tm9kZSgpOiBPcHRpb248U2ltcGxlLk5vZGU+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExhc3ROb2RlIHtcbiAgbGFzdE5vZGUoKTogT3B0aW9uPFNpbXBsZS5Ob2RlPjtcbn1cblxuY2xhc3MgRmlyc3Qge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5vZGU6IE5vZGUpIHsgfVxuXG4gIGZpcnN0Tm9kZSgpOiBOb2RlIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlO1xuICB9XG59XG5cbmNsYXNzIExhc3Qge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5vZGU6IE5vZGUpIHsgfVxuXG4gIGxhc3ROb2RlKCk6IE5vZGUge1xuICAgIHJldHVybiB0aGlzLm5vZGU7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbGVtZW50T3BlcmF0aW9ucyB7XG4gIGFkZFN0YXRpY0F0dHJpYnV0ZShlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcbiAgYWRkU3RhdGljQXR0cmlidXRlTlMoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5hbWVzcGFjZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkO1xuICBhZGREeW5hbWljQXR0cmlidXRlKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBWZXJzaW9uZWRSZWZlcmVuY2U8c3RyaW5nPiwgaXNUcnVzdGluZzogYm9vbGVhbik6IHZvaWQ7XG4gIGFkZER5bmFtaWNBdHRyaWJ1dGVOUyhlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZXNwYWNlOiBzdHJpbmcsIG5hbWU6IHN0cmluZywgdmFsdWU6IFZlcnNpb25lZFJlZmVyZW5jZTxzdHJpbmc+LCBpc1RydXN0aW5nOiBib29sZWFuKTogdm9pZDtcbiAgZmx1c2goZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIHZtOiBWTSk6IHZvaWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBGcmFnbWVudCBpbXBsZW1lbnRzIEJvdW5kcyB7XG4gIHByaXZhdGUgYm91bmRzOiBCb3VuZHM7XG5cbiAgY29uc3RydWN0b3IoYm91bmRzOiBCb3VuZHMpIHtcbiAgICB0aGlzLmJvdW5kcyA9IGJvdW5kcztcbiAgfVxuXG4gIHBhcmVudEVsZW1lbnQoKTogU2ltcGxlLkVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLmJvdW5kcy5wYXJlbnRFbGVtZW50KCk7XG4gIH1cblxuICBmaXJzdE5vZGUoKTogT3B0aW9uPFNpbXBsZS5Ob2RlPiB7XG4gICAgcmV0dXJuIHRoaXMuYm91bmRzLmZpcnN0Tm9kZSgpO1xuICB9XG5cbiAgbGFzdE5vZGUoKTogT3B0aW9uPFNpbXBsZS5Ob2RlPiB7XG4gICAgcmV0dXJuIHRoaXMuYm91bmRzLmxhc3ROb2RlKCk7XG4gIH1cblxuICB1cGRhdGUoYm91bmRzOiBCb3VuZHMpIHtcbiAgICB0aGlzLmJvdW5kcyA9IGJvdW5kcztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRWxlbWVudFN0YWNrIGltcGxlbWVudHMgQ3Vyc29yIHtcbiAgcHVibGljIG5leHRTaWJsaW5nOiBPcHRpb248U2ltcGxlLk5vZGU+O1xuICBwdWJsaWMgZG9tOiBET01UcmVlQ29uc3RydWN0aW9uO1xuICBwdWJsaWMgdXBkYXRlT3BlcmF0aW9uczogRE9NQ2hhbmdlcztcbiAgcHVibGljIGNvbnN0cnVjdGluZzogT3B0aW9uPFNpbXBsZS5FbGVtZW50PiA9IG51bGw7XG4gIHB1YmxpYyBvcGVyYXRpb25zOiBPcHRpb248RWxlbWVudE9wZXJhdGlvbnM+ID0gbnVsbDtcbiAgcHVibGljIGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50O1xuICBwdWJsaWMgZW52OiBFbnZpcm9ubWVudDtcblxuICBwcml2YXRlIGVsZW1lbnRTdGFjayA9IG5ldyBTdGFjazxTaW1wbGUuRWxlbWVudD4oKTtcbiAgcHJpdmF0ZSBuZXh0U2libGluZ1N0YWNrID0gbmV3IFN0YWNrPE9wdGlvbjxTaW1wbGUuTm9kZT4+KCk7XG4gIHByaXZhdGUgYmxvY2tTdGFjayA9IG5ldyBTdGFjazxUcmFja2VyPigpO1xuXG4gIHByaXZhdGUgZGVmYXVsdE9wZXJhdGlvbnM6IEVsZW1lbnRPcGVyYXRpb25zO1xuXG4gIHN0YXRpYyBmb3JJbml0aWFsUmVuZGVyKGVudjogRW52aXJvbm1lbnQsIHBhcmVudE5vZGU6IFNpbXBsZS5FbGVtZW50LCBuZXh0U2libGluZzogT3B0aW9uPFNpbXBsZS5Ob2RlPikge1xuICAgIHJldHVybiBuZXcgRWxlbWVudFN0YWNrKGVudiwgcGFyZW50Tm9kZSwgbmV4dFNpYmxpbmcpO1xuICB9XG5cbiAgc3RhdGljIHJlc3VtZShlbnY6IEVudmlyb25tZW50LCB0cmFja2VyOiBUcmFja2VyLCBuZXh0U2libGluZzogT3B0aW9uPFNpbXBsZS5Ob2RlPikge1xuICAgIGxldCBwYXJlbnROb2RlID0gdHJhY2tlci5wYXJlbnRFbGVtZW50KCk7XG5cbiAgICBsZXQgc3RhY2sgPSBuZXcgRWxlbWVudFN0YWNrKGVudiwgcGFyZW50Tm9kZSwgbmV4dFNpYmxpbmcpO1xuICAgIHN0YWNrLnB1c2hCbG9ja1RyYWNrZXIodHJhY2tlcik7XG5cbiAgICByZXR1cm4gc3RhY2s7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihlbnY6IEVudmlyb25tZW50LCBwYXJlbnROb2RlOiBTaW1wbGUuRWxlbWVudCwgbmV4dFNpYmxpbmc6IE9wdGlvbjxTaW1wbGUuTm9kZT4pIHtcbiAgICB0aGlzLmVudiA9IGVudjtcbiAgICB0aGlzLmRvbSA9IGVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCk7XG4gICAgdGhpcy51cGRhdGVPcGVyYXRpb25zID0gZW52LmdldERPTSgpO1xuICAgIHRoaXMuZWxlbWVudCA9IHBhcmVudE5vZGU7XG4gICAgdGhpcy5uZXh0U2libGluZyA9IG5leHRTaWJsaW5nO1xuXG4gICAgdGhpcy5kZWZhdWx0T3BlcmF0aW9ucyA9IG5ldyBTaW1wbGVFbGVtZW50T3BlcmF0aW9ucyhlbnYpO1xuXG4gICAgdGhpcy5wdXNoU2ltcGxlQmxvY2soKTtcbiAgICB0aGlzLmVsZW1lbnRTdGFjay5wdXNoKHRoaXMuZWxlbWVudCk7XG4gICAgdGhpcy5uZXh0U2libGluZ1N0YWNrLnB1c2godGhpcy5uZXh0U2libGluZyk7XG4gIH1cblxuICBleHBlY3RDb25zdHJ1Y3RpbmcobWV0aG9kOiBzdHJpbmcpOiBTaW1wbGUuRWxlbWVudCB7XG4gICAgcmV0dXJuIGV4cGVjdCh0aGlzLmNvbnN0cnVjdGluZywgYCR7bWV0aG9kfSBzaG91bGQgb25seSBiZSBjYWxsZWQgd2hpbGUgY29uc3RydWN0aW5nIGFuIGVsZW1lbnRgKTtcbiAgfVxuXG4gIGV4cGVjdE9wZXJhdGlvbnMobWV0aG9kOiBzdHJpbmcpOiBFbGVtZW50T3BlcmF0aW9ucyB7XG4gICAgcmV0dXJuIGV4cGVjdCh0aGlzLm9wZXJhdGlvbnMsIGAke21ldGhvZH0gc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoaWxlIGNvbnN0cnVjdGluZyBhbiBlbGVtZW50YCk7XG4gIH1cblxuICBibG9jaygpOiBUcmFja2VyIHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXMuYmxvY2tTdGFjay5jdXJyZW50LCBcIkV4cGVjdGVkIGEgY3VycmVudCBibG9jayB0cmFja2VyXCIpO1xuICB9XG5cbiAgcG9wRWxlbWVudCgpIHtcbiAgICBsZXQgeyBlbGVtZW50U3RhY2ssIG5leHRTaWJsaW5nU3RhY2sgfSAgPSB0aGlzO1xuXG4gICAgbGV0IHRvcEVsZW1lbnQgPSBlbGVtZW50U3RhY2sucG9wKCk7XG4gICAgbmV4dFNpYmxpbmdTdGFjay5wb3AoKTtcbiAgICAvLyBMT0dHRVIuZGVidWcoYC0+IGVsZW1lbnQgc3RhY2sgJHt0aGlzLmVsZW1lbnRTdGFjay50b0FycmF5KCkubWFwKGUgPT4gZS50YWdOYW1lKS5qb2luKCcsICcpfWApO1xuXG4gICAgdGhpcy5lbGVtZW50ID0gZXhwZWN0KGVsZW1lbnRTdGFjay5jdXJyZW50LCBcImNhbid0IHBvcCBwYXN0IHRoZSBsYXN0IGVsZW1lbnRcIik7XG4gICAgdGhpcy5uZXh0U2libGluZyA9IG5leHRTaWJsaW5nU3RhY2suY3VycmVudDtcblxuICAgIHJldHVybiB0b3BFbGVtZW50O1xuICB9XG5cbiAgcHVzaFNpbXBsZUJsb2NrKCk6IFRyYWNrZXIge1xuICAgIGxldCB0cmFja2VyID0gbmV3IFNpbXBsZUJsb2NrVHJhY2tlcih0aGlzLmVsZW1lbnQpO1xuICAgIHRoaXMucHVzaEJsb2NrVHJhY2tlcih0cmFja2VyKTtcbiAgICByZXR1cm4gdHJhY2tlcjtcbiAgfVxuXG4gIHB1c2hVcGRhdGFibGVCbG9jaygpOiBVcGRhdGFibGVUcmFja2VyIHtcbiAgICBsZXQgdHJhY2tlciA9IG5ldyBVcGRhdGFibGVCbG9ja1RyYWNrZXIodGhpcy5lbGVtZW50KTtcbiAgICB0aGlzLnB1c2hCbG9ja1RyYWNrZXIodHJhY2tlcik7XG4gICAgcmV0dXJuIHRyYWNrZXI7XG4gIH1cblxuICBwcml2YXRlIHB1c2hCbG9ja1RyYWNrZXIodHJhY2tlcjogVHJhY2tlciwgaXNSZW1vdGUgPSBmYWxzZSkge1xuICAgIGxldCBjdXJyZW50ID0gdGhpcy5ibG9ja1N0YWNrLmN1cnJlbnQ7XG5cbiAgICBpZiAoY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgY3VycmVudC5uZXdEZXN0cm95YWJsZSh0cmFja2VyKTtcblxuICAgICAgaWYgKCFpc1JlbW90ZSkge1xuICAgICAgICBjdXJyZW50Lm5ld0JvdW5kcyh0cmFja2VyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmJsb2NrU3RhY2sucHVzaCh0cmFja2VyKTtcbiAgICByZXR1cm4gdHJhY2tlcjtcbiAgfVxuXG4gIHB1c2hCbG9ja0xpc3QobGlzdDogTGlua2VkTGlzdDxMaW5rZWRMaXN0Tm9kZSAmIEJvdW5kcyAmIERlc3Ryb3lhYmxlPik6IFRyYWNrZXIge1xuICAgIGxldCB0cmFja2VyID0gbmV3IEJsb2NrTGlzdFRyYWNrZXIodGhpcy5lbGVtZW50LCBsaXN0KTtcbiAgICBsZXQgY3VycmVudCA9IHRoaXMuYmxvY2tTdGFjay5jdXJyZW50O1xuXG4gICAgaWYgKGN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgIGN1cnJlbnQubmV3RGVzdHJveWFibGUodHJhY2tlcik7XG4gICAgICBjdXJyZW50Lm5ld0JvdW5kcyh0cmFja2VyKTtcbiAgICB9XG5cbiAgICB0aGlzLmJsb2NrU3RhY2sucHVzaCh0cmFja2VyKTtcbiAgICByZXR1cm4gdHJhY2tlcjtcbiAgfVxuXG4gIHBvcEJsb2NrKCk6IFRyYWNrZXIge1xuICAgIHRoaXMuYmxvY2soKS5maW5hbGl6ZSh0aGlzKTtcblxuICAgIHJldHVybiBleHBlY3QodGhpcy5ibG9ja1N0YWNrLnBvcCgpLCBcIkV4cGVjdGVkIHBvcEJsb2NrIHRvIHJldHVybiBhIGJsb2NrXCIpO1xuICB9XG5cbiAgb3BlbkVsZW1lbnQodGFnOiBzdHJpbmcsIG9wZXJhdGlvbnMgPSB0aGlzLmRlZmF1bHRPcGVyYXRpb25zKTogU2ltcGxlLkVsZW1lbnQge1xuICAgIGxldCBlbGVtZW50ID0gdGhpcy5kb20uY3JlYXRlRWxlbWVudCh0YWcsIHRoaXMuZWxlbWVudCk7XG5cbiAgICB0aGlzLmNvbnN0cnVjdGluZyA9IGVsZW1lbnQ7XG4gICAgdGhpcy5vcGVyYXRpb25zID0gb3BlcmF0aW9ucztcblxuICAgIHJldHVybiBlbGVtZW50O1xuICB9XG5cbiAgZmx1c2hFbGVtZW50KCkge1xuICAgIGxldCBwYXJlbnQgID0gdGhpcy5lbGVtZW50O1xuICAgIGxldCBlbGVtZW50ID0gZXhwZWN0KHRoaXMuY29uc3RydWN0aW5nLCBgZmx1c2hFbGVtZW50IHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIGNvbnN0cnVjdGluZyBhbiBlbGVtZW50YCk7XG5cbiAgICB0aGlzLmRvbS5pbnNlcnRCZWZvcmUocGFyZW50LCBlbGVtZW50LCB0aGlzLm5leHRTaWJsaW5nKTtcblxuICAgIHRoaXMuY29uc3RydWN0aW5nID0gbnVsbDtcbiAgICB0aGlzLm9wZXJhdGlvbnMgPSBudWxsO1xuXG4gICAgdGhpcy5wdXNoRWxlbWVudChlbGVtZW50KTtcbiAgICB0aGlzLmJsb2NrKCkub3BlbkVsZW1lbnQoZWxlbWVudCk7XG4gIH1cblxuICBwdXNoUmVtb3RlRWxlbWVudChlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmV4dFNpYmxpbmc6IE9wdGlvbjxTaW1wbGUuTm9kZT4gPSBudWxsKSB7XG4gICAgdGhpcy5wdXNoRWxlbWVudChlbGVtZW50LCBuZXh0U2libGluZyk7XG5cbiAgICBsZXQgdHJhY2tlciA9IG5ldyBSZW1vdGVCbG9ja1RyYWNrZXIoZWxlbWVudCk7XG4gICAgdGhpcy5wdXNoQmxvY2tUcmFja2VyKHRyYWNrZXIsIHRydWUpO1xuICB9XG5cbiAgcG9wUmVtb3RlRWxlbWVudCgpIHtcbiAgICB0aGlzLnBvcEJsb2NrKCk7XG4gICAgdGhpcy5wb3BFbGVtZW50KCk7XG4gIH1cblxuICBwcml2YXRlIHB1c2hFbGVtZW50KGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuZXh0U2libGluZzogT3B0aW9uPFNpbXBsZS5Ob2RlPiA9IG51bGwpIHtcbiAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50O1xuICAgIHRoaXMuZWxlbWVudFN0YWNrLnB1c2goZWxlbWVudCk7XG4gICAgLy8gTE9HR0VSLmRlYnVnKGAtPiBlbGVtZW50IHN0YWNrICR7dGhpcy5lbGVtZW50U3RhY2sudG9BcnJheSgpLm1hcChlID0+IGUudGFnTmFtZSkuam9pbignLCAnKX1gKTtcblxuICAgIHRoaXMubmV4dFNpYmxpbmcgPSBuZXh0U2libGluZztcbiAgICB0aGlzLm5leHRTaWJsaW5nU3RhY2sucHVzaChuZXh0U2libGluZyk7XG4gIH1cblxuICBuZXdEZXN0cm95YWJsZShkOiBEZXN0cm95YWJsZSkge1xuICAgIHRoaXMuYmxvY2soKS5uZXdEZXN0cm95YWJsZShkKTtcbiAgfVxuXG4gIG5ld0JvdW5kcyhib3VuZHM6IEJvdW5kcykge1xuICAgIHRoaXMuYmxvY2soKS5uZXdCb3VuZHMoYm91bmRzKTtcbiAgfVxuXG4gIGFwcGVuZFRleHQoc3RyaW5nOiBzdHJpbmcpOiBTaW1wbGUuVGV4dCB7XG4gICAgbGV0IHsgZG9tIH0gPSB0aGlzO1xuICAgIGxldCB0ZXh0ID0gZG9tLmNyZWF0ZVRleHROb2RlKHN0cmluZyk7XG4gICAgZG9tLmluc2VydEJlZm9yZSh0aGlzLmVsZW1lbnQsIHRleHQsIHRoaXMubmV4dFNpYmxpbmcpO1xuICAgIHRoaXMuYmxvY2soKS5uZXdOb2RlKHRleHQpO1xuICAgIHJldHVybiB0ZXh0O1xuICB9XG5cbiAgYXBwZW5kQ29tbWVudChzdHJpbmc6IHN0cmluZyk6IFNpbXBsZS5Db21tZW50IHtcbiAgICBsZXQgeyBkb20gfSA9IHRoaXM7XG4gICAgbGV0IGNvbW1lbnQgPSBkb20uY3JlYXRlQ29tbWVudChzdHJpbmcpO1xuICAgIGRvbS5pbnNlcnRCZWZvcmUodGhpcy5lbGVtZW50LCBjb21tZW50LCB0aGlzLm5leHRTaWJsaW5nKTtcbiAgICB0aGlzLmJsb2NrKCkubmV3Tm9kZShjb21tZW50KTtcbiAgICByZXR1cm4gY29tbWVudDtcbiAgfVxuXG4gIHNldFN0YXRpY0F0dHJpYnV0ZShuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmV4cGVjdE9wZXJhdGlvbnMoJ3NldFN0YXRpY0F0dHJpYnV0ZScpLmFkZFN0YXRpY0F0dHJpYnV0ZSh0aGlzLmV4cGVjdENvbnN0cnVjdGluZygnc2V0U3RhdGljQXR0cmlidXRlJyksIG5hbWUsIHZhbHVlKTtcbiAgfVxuXG4gIHNldFN0YXRpY0F0dHJpYnV0ZU5TKG5hbWVzcGFjZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmV4cGVjdE9wZXJhdGlvbnMoJ3NldFN0YXRpY0F0dHJpYnV0ZU5TJykuYWRkU3RhdGljQXR0cmlidXRlTlModGhpcy5leHBlY3RDb25zdHJ1Y3RpbmcoJ3NldFN0YXRpY0F0dHJpYnV0ZU5TJyksIG5hbWVzcGFjZSwgbmFtZSwgdmFsdWUpO1xuICB9XG5cbiAgc2V0RHluYW1pY0F0dHJpYnV0ZShuYW1lOiBzdHJpbmcsIHJlZmVyZW5jZTogVmVyc2lvbmVkUmVmZXJlbmNlPHN0cmluZz4sIGlzVHJ1c3Rpbmc6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmV4cGVjdE9wZXJhdGlvbnMoJ3NldER5bmFtaWNBdHRyaWJ1dGUnKS5hZGREeW5hbWljQXR0cmlidXRlKHRoaXMuZXhwZWN0Q29uc3RydWN0aW5nKCdzZXREeW5hbWljQXR0cmlidXRlJyksIG5hbWUsIHJlZmVyZW5jZSwgaXNUcnVzdGluZyk7XG4gIH1cblxuICBzZXREeW5hbWljQXR0cmlidXRlTlMobmFtZXNwYWNlOiBzdHJpbmcsIG5hbWU6IHN0cmluZywgcmVmZXJlbmNlOiBWZXJzaW9uZWRSZWZlcmVuY2U8c3RyaW5nPiwgaXNUcnVzdGluZzogYm9vbGVhbikge1xuICAgIHRoaXMuZXhwZWN0T3BlcmF0aW9ucygnc2V0RHluYW1pY0F0dHJpYnV0ZU5TJykuYWRkRHluYW1pY0F0dHJpYnV0ZU5TKHRoaXMuZXhwZWN0Q29uc3RydWN0aW5nKCdzZXREeW5hbWljQXR0cmlidXRlTlMnKSwgbmFtZXNwYWNlLCBuYW1lLCByZWZlcmVuY2UsIGlzVHJ1c3RpbmcpO1xuICB9XG5cbiAgY2xvc2VFbGVtZW50KCkge1xuICAgIHRoaXMuYmxvY2soKS5jbG9zZUVsZW1lbnQoKTtcbiAgICB0aGlzLnBvcEVsZW1lbnQoKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYWNrZXIgZXh0ZW5kcyBEZXN0cm95YWJsZUJvdW5kcyB7XG4gIG9wZW5FbGVtZW50KGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50KTogdm9pZDtcbiAgY2xvc2VFbGVtZW50KCk6IHZvaWQ7XG4gIG5ld05vZGUobm9kZTogU2ltcGxlLk5vZGUpOiB2b2lkO1xuICBuZXdCb3VuZHMoYm91bmRzOiBCb3VuZHMpOiB2b2lkO1xuICBuZXdEZXN0cm95YWJsZShkOiBEZXN0cm95YWJsZSk6IHZvaWQ7XG4gIGZpbmFsaXplKHN0YWNrOiBFbGVtZW50U3RhY2spOiB2b2lkO1xufVxuXG5leHBvcnQgY2xhc3MgU2ltcGxlQmxvY2tUcmFja2VyIGltcGxlbWVudHMgVHJhY2tlciB7XG4gIHByb3RlY3RlZCBmaXJzdDogT3B0aW9uPEZpcnN0Tm9kZT4gPSBudWxsO1xuICBwcm90ZWN0ZWQgbGFzdDogT3B0aW9uPExhc3ROb2RlPiA9IG51bGw7XG4gIHByb3RlY3RlZCBkZXN0cm95YWJsZXM6IE9wdGlvbjxEZXN0cm95YWJsZVtdPiA9IG51bGw7XG4gIHByb3RlY3RlZCBuZXN0aW5nID0gMDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBhcmVudDogU2ltcGxlLkVsZW1lbnQpe31cblxuICBkZXN0cm95KCkge1xuICAgIGxldCB7IGRlc3Ryb3lhYmxlcyB9ID0gdGhpcztcblxuICAgIGlmIChkZXN0cm95YWJsZXMgJiYgZGVzdHJveWFibGVzLmxlbmd0aCkge1xuICAgICAgZm9yIChsZXQgaT0wOyBpPGRlc3Ryb3lhYmxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBkZXN0cm95YWJsZXNbaV0uZGVzdHJveSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHBhcmVudEVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50O1xuICB9XG5cbiAgZmlyc3ROb2RlKCk6IE9wdGlvbjxTaW1wbGUuTm9kZT4ge1xuICAgIHJldHVybiB0aGlzLmZpcnN0ICYmIHRoaXMuZmlyc3QuZmlyc3ROb2RlKCk7XG4gIH1cblxuICBsYXN0Tm9kZSgpOiBPcHRpb248U2ltcGxlLk5vZGU+IHtcbiAgICByZXR1cm4gdGhpcy5sYXN0ICYmIHRoaXMubGFzdC5sYXN0Tm9kZSgpO1xuICB9XG5cbiAgb3BlbkVsZW1lbnQoZWxlbWVudDogRWxlbWVudCkge1xuICAgIHRoaXMubmV3Tm9kZShlbGVtZW50KTtcbiAgICB0aGlzLm5lc3RpbmcrKztcbiAgfVxuXG4gIGNsb3NlRWxlbWVudCgpIHtcbiAgICB0aGlzLm5lc3RpbmctLTtcbiAgfVxuXG4gIG5ld05vZGUobm9kZTogTm9kZSkge1xuICAgIGlmICh0aGlzLm5lc3RpbmcgIT09IDApIHJldHVybjtcblxuICAgIGlmICghdGhpcy5maXJzdCkge1xuICAgICAgdGhpcy5maXJzdCA9IG5ldyBGaXJzdChub2RlKTtcbiAgICB9XG5cbiAgICB0aGlzLmxhc3QgPSBuZXcgTGFzdChub2RlKTtcbiAgfVxuXG4gIG5ld0JvdW5kcyhib3VuZHM6IEJvdW5kcykge1xuICAgIGlmICh0aGlzLm5lc3RpbmcgIT09IDApIHJldHVybjtcblxuICAgIGlmICghdGhpcy5maXJzdCkge1xuICAgICAgdGhpcy5maXJzdCA9IGJvdW5kcztcbiAgICB9XG5cbiAgICB0aGlzLmxhc3QgPSBib3VuZHM7XG4gIH1cblxuICBuZXdEZXN0cm95YWJsZShkOiBEZXN0cm95YWJsZSkge1xuICAgIHRoaXMuZGVzdHJveWFibGVzID0gdGhpcy5kZXN0cm95YWJsZXMgfHwgW107XG4gICAgdGhpcy5kZXN0cm95YWJsZXMucHVzaChkKTtcbiAgfVxuXG4gIGZpbmFsaXplKHN0YWNrOiBFbGVtZW50U3RhY2spIHtcbiAgICBpZiAoIXRoaXMuZmlyc3QpIHtcbiAgICAgIHN0YWNrLmFwcGVuZENvbW1lbnQoJycpO1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBSZW1vdGVCbG9ja1RyYWNrZXIgZXh0ZW5kcyBTaW1wbGVCbG9ja1RyYWNrZXIge1xuICBkZXN0cm95KCkge1xuICAgIHN1cGVyLmRlc3Ryb3koKTtcblxuICAgIGNsZWFyKHRoaXMpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRhYmxlVHJhY2tlciBleHRlbmRzIFRyYWNrZXIge1xuICByZXNldChlbnY6IEVudmlyb25tZW50KTogT3B0aW9uPFNpbXBsZS5Ob2RlPjtcbn1cblxuZXhwb3J0IGNsYXNzIFVwZGF0YWJsZUJsb2NrVHJhY2tlciBleHRlbmRzIFNpbXBsZUJsb2NrVHJhY2tlciBpbXBsZW1lbnRzIFVwZGF0YWJsZVRyYWNrZXIge1xuICByZXNldChlbnY6IEVudmlyb25tZW50KTogT3B0aW9uPFNpbXBsZS5Ob2RlPiB7XG4gICAgbGV0IHsgZGVzdHJveWFibGVzIH0gPSB0aGlzO1xuXG4gICAgaWYgKGRlc3Ryb3lhYmxlcyAmJiBkZXN0cm95YWJsZXMubGVuZ3RoKSB7XG4gICAgICBmb3IgKGxldCBpPTA7IGk8ZGVzdHJveWFibGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGVudi5kaWREZXN0cm95KGRlc3Ryb3lhYmxlc1tpXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IG5leHRTaWJsaW5nID0gY2xlYXIodGhpcyk7XG5cbiAgICB0aGlzLmZpcnN0ID0gbnVsbDtcbiAgICB0aGlzLmxhc3QgPSBudWxsO1xuICAgIHRoaXMuZGVzdHJveWFibGVzID0gbnVsbDtcbiAgICB0aGlzLm5lc3RpbmcgPSAwO1xuXG4gICAgcmV0dXJuIG5leHRTaWJsaW5nO1xuICB9XG59XG5cbmNsYXNzIEJsb2NrTGlzdFRyYWNrZXIgaW1wbGVtZW50cyBUcmFja2VyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwYXJlbnQ6IFNpbXBsZS5FbGVtZW50LCBwcml2YXRlIGJvdW5kTGlzdDogTGlua2VkTGlzdDxMaW5rZWRMaXN0Tm9kZSAmIEJvdW5kcyAmIERlc3Ryb3lhYmxlPikge1xuICAgIHRoaXMucGFyZW50ID0gcGFyZW50O1xuICAgIHRoaXMuYm91bmRMaXN0ID0gYm91bmRMaXN0O1xuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLmJvdW5kTGlzdC5mb3JFYWNoTm9kZShub2RlID0+IG5vZGUuZGVzdHJveSgpKTtcbiAgfVxuXG4gIHBhcmVudEVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50O1xuICB9XG5cbiAgZmlyc3ROb2RlKCk6IE9wdGlvbjxTaW1wbGUuTm9kZT4ge1xuICAgIGxldCBoZWFkID0gdGhpcy5ib3VuZExpc3QuaGVhZCgpO1xuICAgIHJldHVybiBoZWFkICYmIGhlYWQuZmlyc3ROb2RlKCk7XG4gIH1cblxuICBsYXN0Tm9kZSgpOiBPcHRpb248U2ltcGxlLk5vZGU+IHtcbiAgICBsZXQgdGFpbCA9IHRoaXMuYm91bmRMaXN0LnRhaWwoKTtcbiAgICByZXR1cm4gdGFpbCAmJiB0YWlsLmxhc3ROb2RlKCk7XG4gIH1cblxuICBvcGVuRWxlbWVudChfZWxlbWVudDogRWxlbWVudCkge1xuICAgIGFzc2VydChmYWxzZSwgJ0Nhbm5vdCBvcGVuRWxlbWVudCBkaXJlY3RseSBpbnNpZGUgYSBibG9jayBsaXN0Jyk7XG4gIH1cblxuICBjbG9zZUVsZW1lbnQoKSB7XG4gICAgYXNzZXJ0KGZhbHNlLCAnQ2Fubm90IGNsb3NlRWxlbWVudCBkaXJlY3RseSBpbnNpZGUgYSBibG9jayBsaXN0Jyk7XG4gIH1cblxuICBuZXdOb2RlKF9ub2RlOiBOb2RlKSB7XG4gICAgYXNzZXJ0KGZhbHNlLCAnQ2Fubm90IGNyZWF0ZSBhIG5ldyBub2RlIGRpcmVjdGx5IGluc2lkZSBhIGJsb2NrIGxpc3QnKTtcbiAgfVxuXG4gIG5ld0JvdW5kcyhfYm91bmRzOiBCb3VuZHMpIHtcbiAgfVxuXG4gIG5ld0Rlc3Ryb3lhYmxlKF9kOiBEZXN0cm95YWJsZSkge1xuICB9XG5cbiAgZmluYWxpemUoX3N0YWNrOiBFbGVtZW50U3RhY2spIHtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBZSxFQUE2QixLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFJcEUsT0FBTyxFQUF1QixLQUFLLEdBQStCLE1BQU0sZUFBZSxDQUFDO0FBUXhGLE9BQU8sRUFDTCx1QkFBdUIsRUFDeEIsTUFBTSx3QkFBd0IsQ0FBQztBQVloQztJQUNFLFlBQW9CLElBQVU7UUFBVixTQUFJLEdBQUosSUFBSSxDQUFNO0lBQUksQ0FBQztJQUVuQyxTQUFTO1FBQ1AsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztDQUNGO0FBRUQ7SUFDRSxZQUFvQixJQUFVO1FBQVYsU0FBSSxHQUFKLElBQUksQ0FBTTtJQUFJLENBQUM7SUFFbkMsUUFBUTtRQUNOLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7Q0FDRjtBQVVELE1BQU07SUFHSixZQUFZLE1BQWM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELGFBQWE7UUFDWCxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsU0FBUztRQUNQLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxRQUFRO1FBQ04sTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFjO1FBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7Q0FDRjtBQUVELE1BQU07SUE0QkosWUFBWSxHQUFnQixFQUFFLFVBQTBCLEVBQUUsV0FBZ0M7UUF4Qm5GLGlCQUFZLEdBQTJCLElBQUksQ0FBQztR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QUMsU0FBUyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pDLE1BQU0sQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxXQUFXLENBQUMsUUFBaUI7SUFDN0IsQ0FBQztJQUVELFlBQVk7SUFDWixDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQVc7SUFDbkIsQ0FBQztJQUVELFNBQVMsQ0FBQyxPQUFlO0lBQ3pCLENBQUM7SUFFRCxjQUFjLENBQUMsRUFBZTtJQUM5QixDQUFDO0lBRUQsUUFBUSxDQUFDLE1BQW9CO0lBQzdCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCb3VuZHMsIHsgQ3Vyc29yLCBEZXN0cm95YWJsZUJvdW5kcywgY2xlYXIgfSBmcm9tICcuL2JvdW5kcyc7XG5cbmltcG9ydCB7IERPTUNoYW5nZXMsIERPTVRyZWVDb25zdHJ1Y3Rpb24gfSBmcm9tICcuL2RvbS9oZWxwZXInO1xuXG5pbXBvcnQgeyBPcHRpb24sIERlc3Ryb3lhYmxlLCBTdGFjaywgTGlua2VkTGlzdCwgTGlua2VkTGlzdE5vZGUsIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5cbmltcG9ydCB7IEVudmlyb25tZW50IH0gZnJvbSAnLi9lbnZpcm9ubWVudCc7XG5cbmltcG9ydCB7IFZNIH0gZnJvbSAnLi92bSc7XG5cbmltcG9ydCB7IFZlcnNpb25lZFJlZmVyZW5jZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5cbmltcG9ydCB7XG4gIFNpbXBsZUVsZW1lbnRPcGVyYXRpb25zXG59IGZyb20gJy4vY29tcGlsZWQvb3Bjb2Rlcy9kb20nO1xuXG5pbXBvcnQgKiBhcyBTaW1wbGUgZnJvbSAnLi9kb20vaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlyc3ROb2RlIHtcbiAgZmlyc3ROb2RlKCk6IE9wdGlvbjxTaW1wbGUuTm9kZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGFzdE5vZGUge1xuICBsYXN0Tm9kZSgpOiBPcHRpb248U2ltcGxlLk5vZGU+O1xufVxuXG5jbGFzcyBGaXJzdCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbm9kZTogTm9kZSkgeyB9XG5cbiAgZmlyc3ROb2RlKCk6IE5vZGUge1xuICAgIHJldHVybiB0aGlzLm5vZGU7XG4gIH1cbn1cblxuY2xhc3MgTGFzdCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbm9kZTogTm9kZSkgeyB9XG5cbiAgbGFzdE5vZGUoKTogTm9kZSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVsZW1lbnRPcGVyYXRpb25zIHtcbiAgYWRkU3RhdGljQXR0cmlidXRlKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkO1xuICBhZGRTdGF0aWNBdHRyaWJ1dGVOUyhlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZXNwYWNlOiBzdHJpbmcsIG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQ7XG4gIGFkZER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5hbWU6IHN0cmluZywgdmFsdWU6IFZlcnNpb25lZFJlZmVyZW5jZTxzdHJpbmc+LCBpc1RydXN0aW5nOiBib29sZWFuKTogdm9pZDtcbiAgYWRkRHluYW1pY0F0dHJpYnV0ZU5TKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lc3BhY2U6IHN0cmluZywgbmFtZTogc3RyaW5nLCB2YWx1ZTogVmVyc2lvbmVkUmVmZXJlbmNlPHN0cmluZz4sIGlzVHJ1c3Rpbmc6IGJvb2xlYW4pOiB2b2lkO1xuICBmbHVzaChlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgdm06IFZNKTogdm9pZDtcbn1cblxuZXhwb3J0IGNsYXNzIEZyYWdtZW50IGltcGxlbWVudHMgQm91bmRzIHtcbiAgcHJpdmF0ZSBib3VuZHM6IEJvdW5kcztcblxuICBjb25zdHJ1Y3Rvcihib3VuZHM6IEJvdW5kcykge1xuICAgIHRoaXMuYm91bmRzID0gYm91bmRzO1xuICB9XG5cbiAgcGFyZW50RWxlbWVudCgpOiBTaW1wbGUuRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuYm91bmRzLnBhcmVudEVsZW1lbnQoKTtcbiAgfVxuXG4gIGZpcnN0Tm9kZSgpOiBPcHRpb248U2ltcGxlLk5vZGU+IHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMuZmlyc3ROb2RlKCk7XG4gIH1cblxuICBsYXN0Tm9kZSgpOiBPcHRpb248U2ltcGxlLk5vZGU+IHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMubGFzdE5vZGUoKTtcbiAgfVxuXG4gIHVwZGF0ZShib3VuZHM6IEJvdW5kcykge1xuICAgIHRoaXMuYm91bmRzID0gYm91bmRzO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFbGVtZW50U3RhY2sgaW1wbGVtZW50cyBDdXJzb3Ige1xuICBwdWJsaWMgbmV4dFNpYmxpbmc6IE9wdGlvbjxTaW1wbGUuTm9kZT47XG4gIHB1YmxpYyBkb206IERPTVRyZWVDb25zdHJ1Y3Rpb247XG4gIHB1YmxpYyB1cGRhdGVPcGVyYXRpb25zOiBET01DaGFuZ2VzO1xuICBwdWJsaWMgY29uc3RydWN0aW5nOiBPcHRpb248U2ltcGxlLkVsZW1lbnQ+ID0gbnVsbDtcbiAgcHVibGljIG9wZXJhdGlvbnM6IE9wdGlvbjxFbGVtZW50T3BlcmF0aW9ucz4gPSBudWxsO1xuICBwdWJsaWMgZWxlbWVudDogU2ltcGxlLkVsZW1lbnQ7XG4gIHB1YmxpYyBlbnY6IEVudmlyb25tZW50O1xuXG4gIHByaXZhdGUgZWxlbWVudFN0YWNrID0gbmV3IFN0YWNrPFNpbXBsZS5FbGVtZW50PigpO1xuICBwcml2YXRlIG5leHRTaWJsaW5nU3RhY2sgPSBuZXcgU3RhY2s8T3B0aW9uPFNpbXBsZS5Ob2RlPj4oKTtcbiAgcHJpdmF0ZSBibG9ja1N0YWNrID0gbmV3IFN0YWNrPFRyYWNrZXI+KCk7XG5cbiAgcHJpdmF0ZSBkZWZhdWx0T3BlcmF0aW9uczogRWxlbWVudE9wZXJhdGlvbnM7XG5cbiAgc3RhdGljIGZvckluaXRpYWxSZW5kZXIoZW52OiBFbnZpcm9ubWVudCwgcGFyZW50Tm9kZTogU2ltcGxlLkVsZW1lbnQsIG5leHRTaWJsaW5nOiBPcHRpb248U2ltcGxlLk5vZGU+KSB7XG4gICAgcmV0dXJuIG5ldyBFbGVtZW50U3RhY2soZW52LCBwYXJlbnROb2RlLCBuZXh0U2libGluZyk7XG4gIH1cblxuICBzdGF0aWMgcmVzdW1lKGVudjogRW52aXJvbm1lbnQsIHRyYWNrZXI6IFRyYWNrZXIsIG5leHRTaWJsaW5nOiBPcHRpb248U2ltcGxlLk5vZGU+KSB7XG4gICAgbGV0IHBhcmVudE5vZGUgPSB0cmFja2VyLnBhcmVudEVsZW1lbnQoKTtcblxuICAgIGxldCBzdGFjayA9IG5ldyBFbGVtZW50U3RhY2soZW52LCBwYXJlbnROb2RlLCBuZXh0U2libGluZyk7XG4gICAgc3RhY2sucHVzaEJsb2NrVHJhY2tlcih0cmFja2VyKTtcblxuICAgIHJldHVybiBzdGFjaztcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGVudjogRW52aXJvbm1lbnQsIHBhcmVudE5vZGU6IFNpbXBsZS5FbGVtZW50LCBuZXh0U2libGluZzogT3B0aW9uPFNpbXBsZS5Ob2RlPikge1xuICAgIHRoaXMuZW52ID0gZW52O1xuICAgIHRoaXMuZG9tID0gZW52LmdldEFwcGVuZE9wZXJhdGlvbnMoKTtcbiAgICB0aGlzLnVwZGF0ZU9wZXJhdGlvbnMgPSBlbnYuZ2V0RE9NKCk7XG4gICAgdGhpcy5lbGVtZW50ID0gcGFyZW50Tm9kZTtcbiAgICB0aGlzLm5leHRTaWJsaW5nID0gbmV4dFNpYmxpbmc7XG5cbiAgICB0aGlzLmRlZmF1bHRPcGVyYXRpb25zID0gbmV3IFNpbXBsZUVsZW1lbnRPcGVyYXRpb25zKGVudik7XG5cbiAgICB0aGlzLnB1c2hTaW1wbGVCbG9jaygpO1xuICAgIHRoaXMuZWxlbWVudFN0YWNrLnB1c2godGhpcy5lbGVtZW50KTtcbiAgICB0aGlzLm5leHRTaWJsaW5nU3RhY2sucHVzaCh0aGlzLm5leHRTaWJsaW5nKTtcbiAgfVxuXG4gIGV4cGVjdENvbnN0cnVjdGluZyhtZXRob2Q6IHN0cmluZyk6IFNpbXBsZS5FbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3Rpbmc7XG4gIH1cblxuICBleHBlY3RPcGVyYXRpb25zKG1ldGhvZDogc3RyaW5nKTogRWxlbWVudE9wZXJhdGlvbnMge1xuICAgIHJldHVybiB0aGlzLm9wZXJhdGlvbnM7XG4gIH1cblxuICBibG9jaygpOiBUcmFja2VyIHtcbiAgICByZXR1cm4gdGhpcy5ibG9ja1N0YWNrLmN1cnJlbnQ7XG4gIH1cblxuICBwb3BFbGVtZW50KCkge1xuICAgIGxldCB7IGVsZW1lbnRTdGFjaywgbmV4dFNpYmxpbmdTdGFjayB9ICA9IHRoaXM7XG5cbiAgICBsZXQgdG9wRWxlbWVudCA9IGVsZW1lbnRTdGFjay5wb3AoKTtcbiAgICBuZXh0U2libGluZ1N0YWNrLnBvcCgpO1xuICAgIC8vIExPR0dFUi5kZWJ1ZyhgLT4gZWxlbWVudCBzdGFjayAke3RoaXMuZWxlbWVudFN0YWNrLnRvQXJyYXkoKS5tYXAoZSA9PiBlLnRhZ05hbWUpLmpvaW4oJywgJyl9YCk7XG5cbiAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50U3RhY2suY3VycmVudDtcbiAgICB0aGlzLm5leHRTaWJsaW5nID0gbmV4dFNpYmxpbmdTdGFjay5jdXJyZW50O1xuXG4gICAgcmV0dXJuIHRvcEVsZW1lbnQ7XG4gIH1cblxuICBwdXNoU2ltcGxlQmxvY2soKTogVHJhY2tlciB7XG4gICAgbGV0IHRyYWNrZXIgPSBuZXcgU2ltcGxlQmxvY2tUcmFja2VyKHRoaXMuZWxlbWVudCk7XG4gICAgdGhpcy5wdXNoQmxvY2tUcmFja2VyKHRyYWNrZXIpO1xuICAgIHJldHVybiB0cmFja2VyO1xuICB9XG5cbiAgcHVzaFVwZGF0YWJsZUJsb2NrKCk6IFVwZGF0YWJsZVRyYWNrZXIge1xuICAgIGxldCB0cmFja2VyID0gbmV3IFVwZGF0YWJsZUJsb2NrVHJhY2tlcih0aGlzLmVsZW1lbnQpO1xuICAgIHRoaXMucHVzaEJsb2NrVHJhY2tlcih0cmFja2VyKTtcbiAgICByZXR1cm4gdHJhY2tlcjtcbiAgfVxuXG4gIHByaXZhdGUgcHVzaEJsb2NrVHJhY2tlcih0cmFja2VyOiBUcmFja2VyLCBpc1JlbW90ZSA9IGZhbHNlKSB7XG4gICAgbGV0IGN1cnJlbnQgPSB0aGlzLmJsb2NrU3RhY2suY3VycmVudDtcblxuICAgIGlmIChjdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICBjdXJyZW50Lm5ld0Rlc3Ryb3lhYmxlKHRyYWNrZXIpO1xuXG4gICAgICBpZiAoIWlzUmVtb3RlKSB7XG4gICAgICAgIGN1cnJlbnQubmV3Qm91bmRzKHRyYWNrZXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuYmxvY2tTdGFjay5wdXNoKHRyYWNrZXIpO1xuICAgIHJldHVybiB0cmFja2VyO1xuICB9XG5cbiAgcHVzaEJsb2NrTGlzdChsaXN0OiBMaW5rZWRMaXN0PExpbmtlZExpc3ROb2RlICYgQm91bmRzICYgRGVzdHJveWFibGU+KTogVHJhY2tlciB7XG4gICAgbGV0IHRyYWNrZXIgPSBuZXcgQmxvY2tMaXN0VHJhY2tlcih0aGlzLmVsZW1lbnQsIGxpc3QpO1xuICAgIGxldCBjdXJyZW50ID0gdGhpcy5ibG9ja1N0YWNrLmN1cnJlbnQ7XG5cbiAgICBpZiAoY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgY3VycmVudC5uZXdEZXN0cm95YWJsZSh0cmFja2VyKTtcbiAgICAgIGN1cnJlbnQubmV3Qm91bmRzKHRyYWNrZXIpO1xuICAgIH1cblxuICAgIHRoaXMuYmxvY2tTdGFjay5wdXNoKHRyYWNrZXIpO1xuICAgIHJldHVybiB0cmFja2VyO1xuICB9XG5cbiAgcG9wQmxvY2soKTogVHJhY2tlciB7XG4gICAgdGhpcy5ibG9jaygpLmZpbmFsaXplKHRoaXMpO1xuXG4gICAgcmV0dXJuIHRoaXMuYmxvY2tTdGFjay5wb3AoKTtcbiAgfVxuXG4gIG9wZW5FbGVtZW50KHRhZzogc3RyaW5nLCBvcGVyYXRpb25zID0gdGhpcy5kZWZhdWx0T3BlcmF0aW9ucyk6IFNpbXBsZS5FbGVtZW50IHtcbiAgICBsZXQgZWxlbWVudCA9IHRoaXMuZG9tLmNyZWF0ZUVsZW1lbnQodGFnLCB0aGlzLmVsZW1lbnQpO1xuXG4gICAgdGhpcy5jb25zdHJ1Y3RpbmcgPSBlbGVtZW50O1xuICAgIHRoaXMub3BlcmF0aW9ucyA9IG9wZXJhdGlvbnM7XG5cbiAgICByZXR1cm4gZWxlbWVudDtcbiAgfVxuXG4gIGZsdXNoRWxlbWVudCgpIHtcbiAgICBsZXQgcGFyZW50ICA9IHRoaXMuZWxlbWVudDtcbiAgICBsZXQgZWxlbWVudCA9IHRoaXMuY29uc3RydWN0aW5nO1xuXG4gICAgdGhpcy5kb20uaW5zZXJ0QmVmb3JlKHBhcmVudCwgZWxlbWVudCwgdGhpcy5uZXh0U2libGluZyk7XG5cbiAgICB0aGlzLmNvbnN0cnVjdGluZyA9IG51bGw7XG4gICAgdGhpcy5vcGVyYXRpb25zID0gbnVsbDtcblxuICAgIHRoaXMucHVzaEVsZW1lbnQoZWxlbWVudCk7XG4gICAgdGhpcy5ibG9jaygpLm9wZW5FbGVtZW50KGVsZW1lbnQpO1xuICB9XG5cbiAgcHVzaFJlbW90ZUVsZW1lbnQoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5leHRTaWJsaW5nOiBPcHRpb248U2ltcGxlLk5vZGU+ID0gbnVsbCkge1xuICAgIHRoaXMucHVzaEVsZW1lbnQoZWxlbWVudCwgbmV4dFNpYmxpbmcpO1xuXG4gICAgbGV0IHRyYWNrZXIgPSBuZXcgUmVtb3RlQmxvY2tUcmFja2VyKGVsZW1lbnQpO1xuICAgIHRoaXMucHVzaEJsb2NrVHJhY2tlcih0cmFja2VyLCB0cnVlKTtcbiAgfVxuXG4gIHBvcFJlbW90ZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5wb3BCbG9jaygpO1xuICAgIHRoaXMucG9wRWxlbWVudCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBwdXNoRWxlbWVudChlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmV4dFNpYmxpbmc6IE9wdGlvbjxTaW1wbGUuTm9kZT4gPSBudWxsKSB7XG4gICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDtcbiAgICB0aGlzLmVsZW1lbnRTdGFjay5wdXNoKGVsZW1lbnQpO1xuICAgIC8vIExPR0dFUi5kZWJ1ZyhgLT4gZWxlbWVudCBzdGFjayAke3RoaXMuZWxlbWVudFN0YWNrLnRvQXJyYXkoKS5tYXAoZSA9PiBlLnRhZ05hbWUpLmpvaW4oJywgJyl9YCk7XG5cbiAgICB0aGlzLm5leHRTaWJsaW5nID0gbmV4dFNpYmxpbmc7XG4gICAgdGhpcy5uZXh0U2libGluZ1N0YWNrLnB1c2gobmV4dFNpYmxpbmcpO1xuICB9XG5cbiAgbmV3RGVzdHJveWFibGUoZDogRGVzdHJveWFibGUpIHtcbiAgICB0aGlzLmJsb2NrKCkubmV3RGVzdHJveWFibGUoZCk7XG4gIH1cblxuICBuZXdCb3VuZHMoYm91bmRzOiBCb3VuZHMpIHtcbiAgICB0aGlzLmJsb2NrKCkubmV3Qm91bmRzKGJvdW5kcyk7XG4gIH1cblxuICBhcHBlbmRUZXh0KHN0cmluZzogc3RyaW5nKTogU2ltcGxlLlRleHQge1xuICAgIGxldCB7IGRvbSB9ID0gdGhpcztcbiAgICBsZXQgdGV4dCA9IGRvbS5jcmVhdGVUZXh0Tm9kZShzdHJpbmcpO1xuICAgIGRvbS5pbnNlcnRCZWZvcmUodGhpcy5lbGVtZW50LCB0ZXh0LCB0aGlzLm5leHRTaWJsaW5nKTtcbiAgICB0aGlzLmJsb2NrKCkubmV3Tm9kZSh0ZXh0KTtcbiAgICByZXR1cm4gdGV4dDtcbiAgfVxuXG4gIGFwcGVuZENvbW1lbnQoc3RyaW5nOiBzdHJpbmcpOiBTaW1wbGUuQ29tbWVudCB7XG4gICAgbGV0IHsgZG9tIH0gPSB0aGlzO1xuICAgIGxldCBjb21tZW50ID0gZG9tLmNyZWF0ZUNvbW1lbnQoc3RyaW5nKTtcbiAgICBkb20uaW5zZXJ0QmVmb3JlKHRoaXMuZWxlbWVudCwgY29tbWVudCwgdGhpcy5uZXh0U2libGluZyk7XG4gICAgdGhpcy5ibG9jaygpLm5ld05vZGUoY29tbWVudCk7XG4gICAgcmV0dXJuIGNvbW1lbnQ7XG4gIH1cblxuICBzZXRTdGF0aWNBdHRyaWJ1dGUobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5leHBlY3RPcGVyYXRpb25zKCdzZXRTdGF0aWNBdHRyaWJ1dGUnKS5hZGRTdGF0aWNBdHRyaWJ1dGUodGhpcy5leHBlY3RDb25zdHJ1Y3RpbmcoJ3NldFN0YXRpY0F0dHJpYnV0ZScpLCBuYW1lLCB2YWx1ZSk7XG4gIH1cblxuICBzZXRTdGF0aWNBdHRyaWJ1dGVOUyhuYW1lc3BhY2U6IHN0cmluZywgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5leHBlY3RPcGVyYXRpb25zKCdzZXRTdGF0aWNBdHRyaWJ1dGVOUycpLmFkZFN0YXRpY0F0dHJpYnV0ZU5TKHRoaXMuZXhwZWN0Q29uc3RydWN0aW5nKCdzZXRTdGF0aWNBdHRyaWJ1dGVOUycpLCBuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKTtcbiAgfVxuXG4gIHNldER5bmFtaWNBdHRyaWJ1dGUobmFtZTogc3RyaW5nLCByZWZlcmVuY2U6IFZlcnNpb25lZFJlZmVyZW5jZTxzdHJpbmc+LCBpc1RydXN0aW5nOiBib29sZWFuKSB7XG4gICAgdGhpcy5leHBlY3RPcGVyYXRpb25zKCdzZXREeW5hbWljQXR0cmlidXRlJykuYWRkRHluYW1pY0F0dHJpYnV0ZSh0aGlzLmV4cGVjdENvbnN0cnVjdGluZygnc2V0RHluYW1pY0F0dHJpYnV0ZScpLCBuYW1lLCByZWZlcmVuY2UsIGlzVHJ1c3RpbmcpO1xuICB9XG5cbiAgc2V0RHluYW1pY0F0dHJpYnV0ZU5TKG5hbWVzcGFjZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIHJlZmVyZW5jZTogVmVyc2lvbmVkUmVmZXJlbmNlPHN0cmluZz4sIGlzVHJ1c3Rpbmc6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmV4cGVjdE9wZXJhdGlvbnMoJ3NldER5bmFtaWNBdHRyaWJ1dGVOUycpLmFkZER5bmFtaWNBdHRyaWJ1dGVOUyh0aGlzLmV4cGVjdENvbnN0cnVjdGluZygnc2V0RHluYW1pY0F0dHJpYnV0ZU5TJyksIG5hbWVzcGFjZSwgbmFtZSwgcmVmZXJlbmNlLCBpc1RydXN0aW5nKTtcbiAgfVxuXG4gIGNsb3NlRWxlbWVudCgpIHtcbiAgICB0aGlzLmJsb2NrKCkuY2xvc2VFbGVtZW50KCk7XG4gICAgdGhpcy5wb3BFbGVtZW50KCk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFja2VyIGV4dGVuZHMgRGVzdHJveWFibGVCb3VuZHMge1xuICBvcGVuRWxlbWVudChlbGVtZW50OiBTaW1wbGUuRWxlbWVudCk6IHZvaWQ7XG4gIGNsb3NlRWxlbWVudCgpOiB2b2lkO1xuICBuZXdOb2RlKG5vZGU6IFNpbXBsZS5Ob2RlKTogdm9pZDtcbiAgbmV3Qm91bmRzKGJvdW5kczogQm91bmRzKTogdm9pZDtcbiAgbmV3RGVzdHJveWFibGUoZDogRGVzdHJveWFibGUpOiB2b2lkO1xuICBmaW5hbGl6ZShzdGFjazogRWxlbWVudFN0YWNrKTogdm9pZDtcbn1cblxuZXhwb3J0IGNsYXNzIFNpbXBsZUJsb2NrVHJhY2tlciBpbXBsZW1lbnRzIFRyYWNrZXIge1xuICBwcm90ZWN0ZWQgZmlyc3Q6IE9wdGlvbjxGaXJzdE5vZGU+ID0gbnVsbDtcbiAgcHJvdGVjdGVkIGxhc3Q6IE9wdGlvbjxMYXN0Tm9kZT4gPSBudWxsO1xuICBwcm90ZWN0ZWQgZGVzdHJveWFibGVzOiBPcHRpb248RGVzdHJveWFibGVbXT4gPSBudWxsO1xuICBwcm90ZWN0ZWQgbmVzdGluZyA9IDA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwYXJlbnQ6IFNpbXBsZS5FbGVtZW50KXt9XG5cbiAgZGVzdHJveSgpIHtcbiAgICBsZXQgeyBkZXN0cm95YWJsZXMgfSA9IHRoaXM7XG5cbiAgICBpZiAoZGVzdHJveWFibGVzICYmIGRlc3Ryb3lhYmxlcy5sZW5ndGgpIHtcbiAgICAgIGZvciAobGV0IGk9MDsgaTxkZXN0cm95YWJsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgZGVzdHJveWFibGVzW2ldLmRlc3Ryb3koKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwYXJlbnRFbGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnBhcmVudDtcbiAgfVxuXG4gIGZpcnN0Tm9kZSgpOiBPcHRpb248U2ltcGxlLk5vZGU+IHtcbiAgICByZXR1cm4gdGhpcy5maXJzdCAmJiB0aGlzLmZpcnN0LmZpcnN0Tm9kZSgpO1xuICB9XG5cbiAgbGFzdE5vZGUoKTogT3B0aW9uPFNpbXBsZS5Ob2RlPiB7XG4gICAgcmV0dXJuIHRoaXMubGFzdCAmJiB0aGlzLmxhc3QubGFzdE5vZGUoKTtcbiAgfVxuXG4gIG9wZW5FbGVtZW50KGVsZW1lbnQ6IEVsZW1lbnQpIHtcbiAgICB0aGlzLm5ld05vZGUoZWxlbWVudCk7XG4gICAgdGhpcy5uZXN0aW5nKys7XG4gIH1cblxuICBjbG9zZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5uZXN0aW5nLS07XG4gIH1cblxuICBuZXdOb2RlKG5vZGU6IE5vZGUpIHtcbiAgICBpZiAodGhpcy5uZXN0aW5nICE9PSAwKSByZXR1cm47XG5cbiAgICBpZiAoIXRoaXMuZmlyc3QpIHtcbiAgICAgIHRoaXMuZmlyc3QgPSBuZXcgRmlyc3Qobm9kZSk7XG4gICAgfVxuXG4gICAgdGhpcy5sYXN0ID0gbmV3IExhc3Qobm9kZSk7XG4gIH1cblxuICBuZXdCb3VuZHMoYm91bmRzOiBCb3VuZHMpIHtcbiAgICBpZiAodGhpcy5uZXN0aW5nICE9PSAwKSByZXR1cm47XG5cbiAgICBpZiAoIXRoaXMuZmlyc3QpIHtcbiAgICAgIHRoaXMuZmlyc3QgPSBib3VuZHM7XG4gICAgfVxuXG4gICAgdGhpcy5sYXN0ID0gYm91bmRzO1xuICB9XG5cbiAgbmV3RGVzdHJveWFibGUoZDogRGVzdHJveWFibGUpIHtcbiAgICB0aGlzLmRlc3Ryb3lhYmxlcyA9IHRoaXMuZGVzdHJveWFibGVzIHx8IFtdO1xuICAgIHRoaXMuZGVzdHJveWFibGVzLnB1c2goZCk7XG4gIH1cblxuICBmaW5hbGl6ZShzdGFjazogRWxlbWVudFN0YWNrKSB7XG4gICAgaWYgKCF0aGlzLmZpcnN0KSB7XG4gICAgICBzdGFjay5hcHBlbmRDb21tZW50KCcnKTtcbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgUmVtb3RlQmxvY2tUcmFja2VyIGV4dGVuZHMgU2ltcGxlQmxvY2tUcmFja2VyIHtcbiAgZGVzdHJveSgpIHtcbiAgICBzdXBlci5kZXN0cm95KCk7XG5cbiAgICBjbGVhcih0aGlzKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0YWJsZVRyYWNrZXIgZXh0ZW5kcyBUcmFja2VyIHtcbiAgcmVzZXQoZW52OiBFbnZpcm9ubWVudCk6IE9wdGlvbjxTaW1wbGUuTm9kZT47XG59XG5cbmV4cG9ydCBjbGFzcyBVcGRhdGFibGVCbG9ja1RyYWNrZXIgZXh0ZW5kcyBTaW1wbGVCbG9ja1RyYWNrZXIgaW1wbGVtZW50cyBVcGRhdGFibGVUcmFja2VyIHtcbiAgcmVzZXQoZW52OiBFbnZpcm9ubWVudCk6IE9wdGlvbjxTaW1wbGUuTm9kZT4ge1xuICAgIGxldCB7IGRlc3Ryb3lhYmxlcyB9ID0gdGhpcztcblxuICAgIGlmIChkZXN0cm95YWJsZXMgJiYgZGVzdHJveWFibGVzLmxlbmd0aCkge1xuICAgICAgZm9yIChsZXQgaT0wOyBpPGRlc3Ryb3lhYmxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBlbnYuZGlkRGVzdHJveShkZXN0cm95YWJsZXNbaV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBuZXh0U2libGluZyA9IGNsZWFyKHRoaXMpO1xuXG4gICAgdGhpcy5maXJzdCA9IG51bGw7XG4gICAgdGhpcy5sYXN0ID0gbnVsbDtcbiAgICB0aGlzLmRlc3Ryb3lhYmxlcyA9IG51bGw7XG4gICAgdGhpcy5uZXN0aW5nID0gMDtcblxuICAgIHJldHVybiBuZXh0U2libGluZztcbiAgfVxufVxuXG5jbGFzcyBCbG9ja0xpc3RUcmFja2VyIGltcGxlbWVudHMgVHJhY2tlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGFyZW50OiBTaW1wbGUuRWxlbWVudCwgcHJpdmF0ZSBib3VuZExpc3Q6IExpbmtlZExpc3Q8TGlua2VkTGlzdE5vZGUgJiBCb3VuZHMgJiBEZXN0cm95YWJsZT4pIHtcbiAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgICB0aGlzLmJvdW5kTGlzdCA9IGJvdW5kTGlzdDtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5ib3VuZExpc3QuZm9yRWFjaE5vZGUobm9kZSA9PiBub2RlLmRlc3Ryb3koKSk7XG4gIH1cblxuICBwYXJlbnRFbGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnBhcmVudDtcbiAgfVxuXG4gIGZpcnN0Tm9kZSgpOiBPcHRpb248U2ltcGxlLk5vZGU+IHtcbiAgICBsZXQgaGVhZCA9IHRoaXMuYm91bmRMaXN0LmhlYWQoKTtcbiAgICByZXR1cm4gaGVhZCAmJiBoZWFkLmZpcnN0Tm9kZSgpO1xuICB9XG5cbiAgbGFzdE5vZGUoKTogT3B0aW9uPFNpbXBsZS5Ob2RlPiB7XG4gICAgbGV0IHRhaWwgPSB0aGlzLmJvdW5kTGlzdC50YWlsKCk7XG4gICAgcmV0dXJuIHRhaWwgJiYgdGFpbC5sYXN0Tm9kZSgpO1xuICB9XG5cbiAgb3BlbkVsZW1lbnQoX2VsZW1lbnQ6IEVsZW1lbnQpIHtcbiAgfVxuXG4gIGNsb3NlRWxlbWVudCgpIHtcbiAgfVxuXG4gIG5ld05vZGUoX25vZGU6IE5vZGUpIHtcbiAgfVxuXG4gIG5ld0JvdW5kcyhfYm91bmRzOiBCb3VuZHMpIHtcbiAgfVxuXG4gIG5ld0Rlc3Ryb3lhYmxlKF9kOiBEZXN0cm95YWJsZSkge1xuICB9XG5cbiAgZmluYWxpemUoX3N0YWNrOiBFbGVtZW50U3RhY2spIHtcbiAgfVxufVxuIl19
import { ConcreteBounds } from '../bounds';
import { moveNodesBefore } from '../dom/helper';
import { unwrap } from '@glimmer/util';
export const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';

@@ -73,3 +72,3 @@ // Patch: insertAdjacentHTML on SVG Fix

// FF: Old versions will create a node in the wrong namespace
if (svg.childNodes.length === 1 && unwrap(svg.firstChild).namespaceURI === SVG_NAMESPACE) {
if (svg.childNodes.length === 1 && svg.firstChild.namespaceURI === SVG_NAMESPACE) {
// The test worked as expected, no fix required

@@ -81,2 +80,2 @@ return false;

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLWlubmVyLWh0bWwtZml4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3ZnLWlubmVyLWh0bWwtZml4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVSxjQUFjLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBbUMsTUFBTSxlQUFlLENBQUM7QUFDakYsT0FBTyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsNEJBQTRCLENBQUM7QUFHMUQsMENBQTBDO0FBQzFDLDZDQUE2QztBQUM3QywrRUFBK0U7QUFDL0UsNEVBQTRFO0FBQzVFLDZEQUE2RDtBQUM3RCxzRUFBc0U7QUFDdEUsNkVBQTZFO0FBQzdFLCtFQUErRTtBQUMvRSw4RUFBOEU7QUFDOUUsK0VBQStFO0FBQy9FLDJEQUEyRDtBQUMzRCxNQUFNLHFCQUFxQixRQUEwQixFQUFFLGVBQWtDLEVBQUUsWUFBMkI7SUFDcEgsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFBQyxNQUFNLENBQUMsZUFBZSxDQUFDO0lBRXRDLEVBQUUsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUMsTUFBTSxDQUFDLGVBQWUsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUV4QyxNQUFNLENBQUMsbUNBQW9DLFNBQVEsZUFBZTtRQUNoRSxnQkFBZ0IsQ0FBQyxNQUFtQixFQUFFLFdBQWlCLEVBQUUsSUFBWTtZQUNuRSxFQUFFLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNqQyxNQUFNLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxXQUFX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QyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsTUFBTSxDQUFDLElBQUksQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm91bmRzLCBDb25jcmV0ZUJvdW5kcyB9IGZyb20gJy4uL2JvdW5kcyc7XG5pbXBvcnQgeyBtb3ZlTm9kZXNCZWZvcmUsIERPTUNoYW5nZXMsIERPTVRyZWVDb25zdHJ1Y3Rpb24gfSBmcm9tICcuLi9kb20vaGVscGVyJztcbmltcG9ydCB7IE9wdGlvbiwgdW53cmFwIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5cbmV4cG9ydCBjb25zdCBTVkdfTkFNRVNQQUNFID0gJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJztcbmV4cG9ydCB0eXBlIFNWR19OQU1FU1BBQ0UgPSB0eXBlb2YgU1ZHX05BTUVTUEFDRTtcblxuLy8gUGF0Y2g6ICAgIGluc2VydEFkamFjZW50SFRNTCBvbiBTVkcgRml4XG4vLyBCcm93c2VyczogU2FmYXJpLCBJRSwgRWRnZSwgRmlyZWZveCB+MzMtMzRcbi8vIFJlYXNvbjogICBpbnNlcnRBZGphY2VudEhUTUwgZG9lcyBub3QgZXhpc3Qgb24gU1ZHIGVsZW1lbnRzIGluIFNhZmFyaS4gSXQgaXNcbi8vICAgICAgICAgICBwcmVzZW50IGJ1dCB0aHJvd3MgYW4gZXhjZXB0aW9uIG9uIElFIGFuZCBFZGdlLiBPbGQgdmVyc2lvbnMgb2Zcbi8vICAgICAgICAgICBGaXJlZm94IGNyZWF0ZSBub2RlcyBpbiB0aGUgaW5jb3JyZWN0IG5hbWVzcGFjZS5cbi8vIEZpeDogICAgICBTaW5jZSBJRSBhbmQgRWRnZSBzaWxlbnRseSBmYWlsIHRvIGNyZWF0ZSBTVkcgbm9kZXMgdXNpbmdcbi8vICAgICAgICAgICBpbm5lckhUTUwsIGFuZCBiZWNhdXNlIEZpcmVmb3ggbWF5IGNyZWF0ZSBub2RlcyBpbiB0aGUgaW5jb3JyZWN0XG4vLyAgICAgICAgICAgbmFtZXNwYWNlIHVzaW5nIGlubmVySFRNTCBvbiBTVkcgZWxlbWVudHMsIGFuIEhUTUwtc3RyaW5nIHdyYXBwaW5nXG4vLyAgICAgICAgICAgYXBwcm9hY2ggaXMgdXNlZC4gQSBwcmUvcG9zdCBTVkcgdGFnIGlzIGFkZGVkIHRvIHRoZSBzdHJpbmcsIHRoZW5cbi8vICAgICAgICAgICB0aGF0IHdob2xlIHN0cmluZyBpcyBhZGRlZCB0byBhIGRpdi4gVGhlIGNyZWF0ZWQgbm9kZXMgYXJlIHBsdWNrZWRcbi8vICAgICAgICAgICBvdXQgYW5kIGFwcGxpZWQgdG8gdGhlIHRhcmdldCBsb2NhdGlvbiBvbiBET00uXG5leHBvcnQgZnVuY3Rpb24gZG9tQ2hhbmdlcyhkb2N1bWVudDogT3B0aW9uPERvY3VtZW50PiwgRE9NQ2hhbmdlc0NsYXNzOiB0eXBlb2YgRE9NQ2hhbmdlcywgc3ZnTmFtZXNwYWNlOiBTVkdfTkFNRVNQQUNFKTogdHlwZW9mIERPTUNoYW5nZXMge1xuICBpZiAoIWRvY3VtZW50KSByZXR1cm4gRE9NQ2hhbmdlc0NsYXNzO1xuXG4gIGlmICghc2hvdWxkQXBwbHlGaXgoZG9jdW1lbnQsIHN2Z05hbWVzcGFjZSkpIHtcbiAgICByZXR1cm4gRE9NQ2hhbmdlc0NsYXNzO1xuICB9XG5cbiAgbGV0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gIHJldHVybiBjbGFzcyBET01DaGFuZ2VzV2l0aFNWR0lubmVySFRNTEZpeCBleHRlbmRzIERPTUNoYW5nZXNDbGFzcyB7XG4gICAgaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQ6IEhUTUxFbGVtZW50LCBuZXh0U2libGluZzogTm9kZSwgaHRtbDogc3RyaW5nKTogQm91bmRzIHtcbiAgICAgIGlmIChodG1sID09PSBudWxsIHx8IGh0bWwgPT09ICcnKSB7XG4gICAgICAgIHJldHVybiBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgbmV4dFNpYmxpbmcsIGh0bWwpO1xuICAgICAgfVxuXG4gICAgICBpZiAocGFyZW50Lm5hbWVzcGFjZVVSSSAhPT0gc3ZnTmFtZXNwYWNlKSB7XG4gICAgICAgIHJldHVybiBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgbmV4dFNpYmxpbmcsIGh0bWwpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZml4U1ZHKHBhcmVudCwgZGl2LCBodG1sLCBuZXh0U2libGluZyk7XG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJlZUNvbnN0cnVjdGlvbihkb2N1bWVudDogT3B0aW9uPERvY3VtZW50PiwgVHJlZUNvbnN0cnVjdGlvbkNsYXNzOiB0eXBlb2YgRE9NVHJlZUNvbnN0cnVjdGlvbiwgc3ZnTmFtZXNwYWNlOiBTVkdfTkFNRVNQQUNFKTogdHlwZW9mIERPTVRyZWVDb25zdHJ1Y3Rpb24ge1xuICBpZiAoIWRvY3VtZW50KSByZXR1cm4gVHJlZUNvbnN0cnVjdGlvbkNsYXNzO1xuXG4gIGlmICghc2hvdWxkQXBwbHlGaXgoZG9jdW1lbnQsIHN2Z05hbWVzcGFjZSkpIHtcbiAgICByZXR1cm4gVHJlZUNvbnN0cnVjdGlvbkNsYXNzO1xuICB9XG5cbiAgbGV0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gIHJldHVybiBjbGFzcyBUcmVlQ29uc3RydWN0aW9uV2l0aFNWR0lubmVySFRNTEZpeCBleHRlbmRzIFRyZWVDb25zdHJ1Y3Rpb25DbGFzcyB7XG4gICAgaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQ6IEhUTUxFbGVtZW50LCBodG1sOiBzdHJpbmcsICByZWZlcmVuY2U6IE5vZGUsKTogQm91bmRzIHtcbiAgICAgIGlmIChodG1sID09PSBudWxsIHx8IGh0bWwgPT09ICcnKSB7XG4gICAgICAgIHJldHVybiBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgaHRtbCwgcmVmZXJlbmNlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHBhcmVudC5uYW1lc3BhY2VVUkkgIT09IHN2Z05hbWVzcGFjZSkge1xuICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIGh0bWwsIHJlZmVyZW5jZSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmaXhTVkcocGFyZW50LCBkaXYsIGh0bWwsIHJlZmVyZW5jZSk7XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBmaXhTVkcocGFyZW50OiBFbGVtZW50LCBkaXY6IEhUTUxFbGVtZW50LCBodG1sOiBzdHJpbmcsIHJlZmVyZW5jZTogTm9kZSk6IEJvdW5kcyB7XG4gIC8vIElFLCBFZGdlOiBhbHNvIGRvIG5vdCBjb3JyZWN0bHkgc3VwcG9ydCB1c2luZyBgaW5uZXJIVE1MYCBvbiBTVkdcbiAgLy8gbmFtZXNwYWNlZCBlbGVtZW50cy4gU28gaGVyZSBhIHdyYXBwZXIgaXMgdXNlZC5cbiAgbGV0IHdyYXBwZWRIdG1sID0gJzxzdmc+JyArIGh0bWwgKyAnPC9zdmc+JztcblxuICBkaXYuaW5uZXJIVE1MID0gd3JhcHBlZEh0bWw7XG5cbiAgbGV0IFtmaXJzdCwgbGFzdF0gPSBtb3ZlTm9kZXNCZWZvcmUoZGl2LmZpcnN0Q2hpbGQgYXMgTm9kZSwgcGFyZW50LCByZWZlcmVuY2UpO1xuICByZXR1cm4gbmV3IENvbmNyZXRlQm91bmRzKHBhcmVudCwgZmlyc3QsIGxhc3QpO1xufVxuXG5mdW5jdGlvbiBzaG91bGRBcHBseUZpeChkb2N1bWVudDogRG9jdW1lbnQsIHN2Z05hbWVzcGFjZTogU1ZHX05BTUVTUEFDRSkge1xuICBsZXQgc3ZnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHN2Z05hbWVzcGFjZSwgJ3N2ZycpO1xuXG4gIHRyeSB7XG4gICAgc3ZnWydpbnNlcnRBZGphY2VudEhUTUwnXSgnYmVmb3JlRW5kJywgJzxjaXJjbGU+PC9jaXJjbGU+Jyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyBJRSwgRWRnZTogV2lsbCB0aHJvdywgaW5zZXJ0QWRqYWNlbnRIVE1MIGlzIHVuc3VwcG9ydGVkIG9uIFNWR1xuICAgIC8vIFNhZmFyaTogV2lsbCB0aHJvdywgaW5zZXJ0QWRqYWNlbnRIVE1MIGlzIG5vdCBwcmVzZW50IG9uIFNWR1xuICB9IGZpbmFsbHkge1xuICAgIC8vIEZGOiBPbGQgdmVyc2lvbnMgd2lsbCBjcmVhdGUgYSBub2RlIGluIHRoZSB3cm9uZyBuYW1lc3BhY2VcbiAgICBpZiAoc3ZnLmNoaWxkTm9kZXMubGVuZ3RoID09PSAxICYmIHVud3JhcChzdmcuZmlyc3RDaGlsZCkubmFtZXNwYWNlVVJJID09PSBTVkdfTkFNRVNQQUNFKSB7XG4gICAgICAvLyBUaGUgdGVzdCB3b3JrZWQgYXMgZXhwZWN0ZWQsIG5vIGZpeCByZXF1aXJlZFxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLWlubmVyLWh0bWwtZml4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3ZnLWlubmVyLWh0bWwtZml4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVSxjQUFjLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBbUMsTUFBTSxlQUFlLENBQUM7QUFHakYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLDRCQUE0QixDQUFDO0FBRzFELDBDQUEwQztBQUMxQyw2Q0FBNkM7QUFDN0MsK0VBQStFO0FBQy9FLDRFQUE0RTtBQUM1RSw2REFBNkQ7QUFDN0Qsc0VBQXNFO0FBQ3RFLDZFQUE2RTtBQUM3RSwrRUFBK0U7QUFDL0UsOEVBQThFO0FBQzlFLCtFQUErRTtBQUMvRSwyREFBMkQ7QUFDM0QsTUFBTSxxQkFBcUIsUUFBMEIsRUFBRSxlQUFrQyxFQUFFLFlBQTJCO0lBQ3BILEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQztJQUV0QyxFQUFFLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVDLE1BQU0sQ0FBQyxlQUFlLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFeEMsTUFBTSxDQUFDLG1DQUFvQyxTQUFRLGVBQWU7UUFDaEUsZ0JBQWdCLENBQUMsTUFBbUIsRUFBRSxXQUFpQixFQUFFLElBQVk7WUFDbkUsRUFBRSxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDakMsTUFBTSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzNELENBQUM7WUFFRCxFQUFF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O0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJvdW5kcywgQ29uY3JldGVCb3VuZHMgfSBmcm9tICcuLi9ib3VuZHMnO1xuaW1wb3J0IHsgbW92ZU5vZGVzQmVmb3JlLCBET01DaGFuZ2VzLCBET01UcmVlQ29uc3RydWN0aW9uIH0gZnJvbSAnLi4vZG9tL2hlbHBlcic7XG5pbXBvcnQgeyBPcHRpb24gfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuZXhwb3J0IGNvbnN0IFNWR19OQU1FU1BBQ0UgPSAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnO1xuZXhwb3J0IHR5cGUgU1ZHX05BTUVTUEFDRSA9IHR5cGVvZiBTVkdfTkFNRVNQQUNFO1xuXG4vLyBQYXRjaDogICAgaW5zZXJ0QWRqYWNlbnRIVE1MIG9uIFNWRyBGaXhcbi8vIEJyb3dzZXJzOiBTYWZhcmksIElFLCBFZGdlLCBGaXJlZm94IH4zMy0zNFxuLy8gUmVhc29uOiAgIGluc2VydEFkamFjZW50SFRNTCBkb2VzIG5vdCBleGlzdCBvbiBTVkcgZWxlbWVudHMgaW4gU2FmYXJpLiBJdCBpc1xuLy8gICAgICAgICAgIHByZXNlbnQgYnV0IHRocm93cyBhbiBleGNlcHRpb24gb24gSUUgYW5kIEVkZ2UuIE9sZCB2ZXJzaW9ucyBvZlxuLy8gICAgICAgICAgIEZpcmVmb3ggY3JlYXRlIG5vZGVzIGluIHRoZSBpbmNvcnJlY3QgbmFtZXNwYWNlLlxuLy8gRml4OiAgICAgIFNpbmNlIElFIGFuZCBFZGdlIHNpbGVudGx5IGZhaWwgdG8gY3JlYXRlIFNWRyBub2RlcyB1c2luZ1xuLy8gICAgICAgICAgIGlubmVySFRNTCwgYW5kIGJlY2F1c2UgRmlyZWZveCBtYXkgY3JlYXRlIG5vZGVzIGluIHRoZSBpbmNvcnJlY3Rcbi8vICAgICAgICAgICBuYW1lc3BhY2UgdXNpbmcgaW5uZXJIVE1MIG9uIFNWRyBlbGVtZW50cywgYW4gSFRNTC1zdHJpbmcgd3JhcHBpbmdcbi8vICAgICAgICAgICBhcHByb2FjaCBpcyB1c2VkLiBBIHByZS9wb3N0IFNWRyB0YWcgaXMgYWRkZWQgdG8gdGhlIHN0cmluZywgdGhlblxuLy8gICAgICAgICAgIHRoYXQgd2hvbGUgc3RyaW5nIGlzIGFkZGVkIHRvIGEgZGl2LiBUaGUgY3JlYXRlZCBub2RlcyBhcmUgcGx1Y2tlZFxuLy8gICAgICAgICAgIG91dCBhbmQgYXBwbGllZCB0byB0aGUgdGFyZ2V0IGxvY2F0aW9uIG9uIERPTS5cbmV4cG9ydCBmdW5jdGlvbiBkb21DaGFuZ2VzKGRvY3VtZW50OiBPcHRpb248RG9jdW1lbnQ+LCBET01DaGFuZ2VzQ2xhc3M6IHR5cGVvZiBET01DaGFuZ2VzLCBzdmdOYW1lc3BhY2U6IFNWR19OQU1FU1BBQ0UpOiB0eXBlb2YgRE9NQ2hhbmdlcyB7XG4gIGlmICghZG9jdW1lbnQpIHJldHVybiBET01DaGFuZ2VzQ2xhc3M7XG5cbiAgaWYgKCFzaG91bGRBcHBseUZpeChkb2N1bWVudCwgc3ZnTmFtZXNwYWNlKSkge1xuICAgIHJldHVybiBET01DaGFuZ2VzQ2xhc3M7XG4gIH1cblxuICBsZXQgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cbiAgcmV0dXJuIGNsYXNzIERPTUNoYW5nZXNXaXRoU1ZHSW5uZXJIVE1MRml4IGV4dGVuZHMgRE9NQ2hhbmdlc0NsYXNzIHtcbiAgICBpbnNlcnRIVE1MQmVmb3JlKHBhcmVudDogSFRNTEVsZW1lbnQsIG5leHRTaWJsaW5nOiBOb2RlLCBodG1sOiBzdHJpbmcpOiBCb3VuZHMge1xuICAgICAgaWYgKGh0bWwgPT09IG51bGwgfHwgaHRtbCA9PT0gJycpIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBuZXh0U2libGluZywgaHRtbCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwYXJlbnQubmFtZXNwYWNlVVJJICE9PSBzdmdOYW1lc3BhY2UpIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBuZXh0U2libGluZywgaHRtbCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmaXhTVkcocGFyZW50LCBkaXYsIGh0bWwsIG5leHRTaWJsaW5nKTtcbiAgICB9XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmVlQ29uc3RydWN0aW9uKGRvY3VtZW50OiBPcHRpb248RG9jdW1lbnQ+LCBUcmVlQ29uc3RydWN0aW9uQ2xhc3M6IHR5cGVvZiBET01UcmVlQ29uc3RydWN0aW9uLCBzdmdOYW1lc3BhY2U6IFNWR19OQU1FU1BBQ0UpOiB0eXBlb2YgRE9NVHJlZUNvbnN0cnVjdGlvbiB7XG4gIGlmICghZG9jdW1lbnQpIHJldHVybiBUcmVlQ29uc3RydWN0aW9uQ2xhc3M7XG5cbiAgaWYgKCFzaG91bGRBcHBseUZpeChkb2N1bWVudCwgc3ZnTmFtZXNwYWNlKSkge1xuICAgIHJldHVybiBUcmVlQ29uc3RydWN0aW9uQ2xhc3M7XG4gIH1cblxuICBsZXQgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cbiAgcmV0dXJuIGNsYXNzIFRyZWVDb25zdHJ1Y3Rpb25XaXRoU1ZHSW5uZXJIVE1MRml4IGV4dGVuZHMgVHJlZUNvbnN0cnVjdGlvbkNsYXNzIHtcbiAgICBpbnNlcnRIVE1MQmVmb3JlKHBhcmVudDogSFRNTEVsZW1lbnQsIGh0bWw6IHN0cmluZywgIHJlZmVyZW5jZTogTm9kZSwpOiBCb3VuZHMge1xuICAgICAgaWYgKGh0bWwgPT09IG51bGwgfHwgaHRtbCA9PT0gJycpIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBodG1sLCByZWZlcmVuY2UpO1xuICAgICAgfVxuXG4gICAgICBpZiAocGFyZW50Lm5hbWVzcGFjZVVSSSAhPT0gc3ZnTmFtZXNwYWNlKSB7XG4gICAgICAgIHJldHVybiBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgaHRtbCwgcmVmZXJlbmNlKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZpeFNWRyhwYXJlbnQsIGRpdiwgaHRtbCwgcmVmZXJlbmNlKTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGZpeFNWRyhwYXJlbnQ6IEVsZW1lbnQsIGRpdjogSFRNTEVsZW1lbnQsIGh0bWw6IHN0cmluZywgcmVmZXJlbmNlOiBOb2RlKTogQm91bmRzIHtcbiAgLy8gSUUsIEVkZ2U6IGFsc28gZG8gbm90IGNvcnJlY3RseSBzdXBwb3J0IHVzaW5nIGBpbm5lckhUTUxgIG9uIFNWR1xuICAvLyBuYW1lc3BhY2VkIGVsZW1lbnRzLiBTbyBoZXJlIGEgd3JhcHBlciBpcyB1c2VkLlxuICBsZXQgd3JhcHBlZEh0bWwgPSAnPHN2Zz4nICsgaHRtbCArICc8L3N2Zz4nO1xuXG4gIGRpdi5pbm5lckhUTUwgPSB3cmFwcGVkSHRtbDtcblxuICBsZXQgW2ZpcnN0LCBsYXN0XSA9IG1vdmVOb2Rlc0JlZm9yZShkaXYuZmlyc3RDaGlsZCBhcyBOb2RlLCBwYXJlbnQsIHJlZmVyZW5jZSk7XG4gIHJldHVybiBuZXcgQ29uY3JldGVCb3VuZHMocGFyZW50LCBmaXJzdCwgbGFzdCk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZEFwcGx5Rml4KGRvY3VtZW50OiBEb2N1bWVudCwgc3ZnTmFtZXNwYWNlOiBTVkdfTkFNRVNQQUNFKSB7XG4gIGxldCBzdmcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoc3ZnTmFtZXNwYWNlLCAnc3ZnJyk7XG5cbiAgdHJ5IHtcbiAgICBzdmdbJ2luc2VydEFkamFjZW50SFRNTCddKCdiZWZvcmVFbmQnLCAnPGNpcmNsZT48L2NpcmNsZT4nKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIElFLCBFZGdlOiBXaWxsIHRocm93LCBpbnNlcnRBZGphY2VudEhUTUwgaXMgdW5zdXBwb3J0ZWQgb24gU1ZHXG4gICAgLy8gU2FmYXJpOiBXaWxsIHRocm93LCBpbnNlcnRBZGphY2VudEhUTUwgaXMgbm90IHByZXNlbnQgb24gU1ZHXG4gIH0gZmluYWxseSB7XG4gICAgLy8gRkY6IE9sZCB2ZXJzaW9ucyB3aWxsIGNyZWF0ZSBhIG5vZGUgaW4gdGhlIHdyb25nIG5hbWVzcGFjZVxuICAgIGlmIChzdmcuY2hpbGROb2Rlcy5sZW5ndGggPT09IDEgJiYgc3ZnLmZpcnN0Q2hpbGQubmFtZXNwYWNlVVJJID09PSBTVkdfTkFNRVNQQUNFKSB7XG4gICAgICAvLyBUaGUgdGVzdCB3b3JrZWQgYXMgZXhwZWN0ZWQsIG5vIGZpeCByZXF1aXJlZFxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG4iXX0=
import * as content from './content';
import * as vm from './vm';
import { Register } from '../../opcodes';
import { Stack, dict, expect, fillNulls, EMPTY_ARRAY } from '@glimmer/util';
import { Stack, dict, fillNulls, EMPTY_ARRAY } from '@glimmer/util';
import { ComponentBuilder } from '../../compiler';

@@ -58,3 +58,3 @@ import { RawInlineBlock } from '../../scanner';

get labels() {
return expect(this.labelsStack.current, 'bug: not in a label stack');
return this.labelsStack.current;
}

@@ -65,3 +65,3 @@ startLabels() {

stopLabels() {
let label = expect(this.labelsStack.pop(), 'unbalanced push and pop labels');
let label = this.labelsStack.pop();
label.patch(this.program);

@@ -453,2 +453,2 @@ }

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxXQUFXLENBQUM7QUFDckMsT0FBTyxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHM0IsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQVUsS0FBSyxFQUFVLElBQUksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQWM1RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFjbkU7SUFBQTtRQUNFLFdBQU0sR0FBRyxJQUFJLEVBQVUsQ0FBQztRQUN4QixZQUFPLEdBQTJELEVBQUUsQ0FBQztJQWV2RSxDQUFDO0lBYkMsS0FBSyxDQUFDLElBQVksRUFBRSxLQUFhO1FBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFFRCxNQUFNLENBQUMsRUFBVSxFQUFFLE1BQW9CLEVBQUUsTUFBYztRQUNyRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQWdCO1FBQ3BCLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ2hELE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJ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SSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksbUJBQW1CLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWhCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFFbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUErQztRQUN0RCxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDeEIsTUFBTSxDQUFDLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyRixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjb250ZW50IGZyb20gJy4vY29udGVudCc7XG5pbXBvcnQgKiBhcyB2bSBmcm9tICcuL3ZtJztcblxuaW1wb3J0IHsgSW5zZXJ0aW9uIH0gZnJvbSAnLi4vLi4vdXBzZXJ0JztcbmltcG9ydCB7IFJlZ2lzdGVyIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgKiBhcyBXaXJlRm9ybWF0IGZyb20gJ0BnbGltbWVyL3dpcmUtZm9ybWF0JztcbmltcG9ydCB7IE9wdGlvbiwgU3RhY2ssIE9wYXF1ZSwgZGljdCwgZXhwZWN0LCBmaWxsTnVsbHMsIEVNUFRZX0FSUkFZIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQge1xuICBDb25zdGFudHMsXG4gIENvbnN0YW50U3RyaW5nLFxuICBDb25zdGFudEFycmF5LFxuICBDb25zdGFudE90aGVyLFxuICBDb25zdGFudEJsb2NrLFxuICBDb25zdGFudEZ1bmN0aW9uLFxufSBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9jb25zdGFudHMnO1xuaW1wb3J0IHsgTW9kaWZpZXJNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vbW9kaWZpZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBDb21wb25lbnREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50L2ludGVyZmFjZXMnO1xuaW1wb3J0IEVudmlyb25tZW50LCB7IFByb2dyYW0gfSBmcm9tICcuLi8uLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBTeW1ib2xUYWJsZSwgQ29tcGlsYXRpb25NZXRhIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBDb21wb25lbnRCdWlsZGVyIGFzIElDb21wb25lbnRCdWlsZGVyIH0gZnJvbSAnLi4vLi4vb3Bjb2RlLWJ1aWxkZXInO1xuaW1wb3J0IHsgQ29tcG9uZW50QnVpbGRlciB9IGZyb20gJy4uLy4uL2NvbXBpbGVyJztcbmltcG9ydCB7IFJhd0lubGluZUJsb2NrLCBDbGllbnRTaWRlLCBCbG9jayB9IGZyb20gJy4uLy4uL3NjYW5uZXInO1xuaW1wb3J0IHsgSW52b2tlRHluYW1pY0xheW91dCwgZXhwciB9IGZyb20gJy4uLy4uL3N5bnRheC9mdW5jdGlvbnMnO1xuXG5pbXBvcnQgeyBPcCB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBpbGVzSW50bzxFPiB7XG4gIGNvbXBpbGUoYnVpbGRlcjogT3Bjb2RlQnVpbGRlcik6IEU7XG59XG5cbmV4cG9ydCB0eXBlIFJlcHJlc2VudHM8RT4gPSBDb21waWxlc0ludG88RT4gfCBFO1xuXG5leHBvcnQgdHlwZSBMYWJlbCA9IHN0cmluZztcblxudHlwZSBUYXJnZXRPcGNvZGUgPSBPcC5KdW1wIHwgT3AuSnVtcElmIHwgT3AuSnVtcFVubGVzcyB8IE9wLkVudGVyTGlzdCB8IE9wLkl0ZXJhdGUgfCBPcC5JbW1lZGlhdGU7XG5cbmNsYXNzIExhYmVscyB7XG4gIGxhYmVscyA9IGRpY3Q8bnVtYmVyPigpO1xuICB0YXJnZXRzOiB7IGF0OiBudW1iZXIsIFRhcmdldDogVGFyZ2V0T3Bjb2RlLCB0YXJnZXQ6IHN0cmluZyB9W10gPSBbXTtcblxuICBsYWJlbChuYW1lOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmxhYmVsc1tuYW1lXSA9IGluZGV4O1xuICB9XG5cbiAgdGFyZ2V0KGF0OiBudW1iZXIsIFRhcmdldDogVGFyZ2V0T3Bjb2RlLCB0YXJnZXQ6IHN0cmluZykge1xuICAgIHRoaXMudGFyZ2V0cy5wdXNoKHsgYXQsIFRhcmdldCwgdGFyZ2V0IH0pO1xuICB9XG5cbiAgcGF0Y2gob3Bjb2RlczogUHJvZ3JhbSk6IHZvaWQge1xuICAgIGZvciAobGV0IHsgYXQsIFRhcmdldCwgdGFyZ2V0IH0gb2YgdGhpcy50YXJnZXRzKSB7XG4gICAgICBvcGNvZGVzLnNldChhdCwgVGFyZ2V0LCB0aGlzLmxhYmVsc1t0YXJnZXRdKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2ljT3Bjb2RlQnVpbGRlciB7XG4gIHByaXZhdGUgbGFiZWxzU3RhY2sgPSBuZXcgU3RhY2s8TGFiZWxzPigpO1xuICBwdWJsaWMgY29uc3RhbnRzOiBDb25zdGFudHM7XG4gIHB1YmxpYyBzdGFydDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlbnY6IEVudmlyb25tZW50LCBwdWJsaWMgbWV0YTogQ29tcGlsYXRpb25NZXRhLCBwdWJsaWMgcHJvZ3JhbTogUHJvZ3JhbSkge1xuICAgIHRoaXMuY29uc3RhbnRzID0gZW52LmNvbnN0YW50cztcbiAgICB0aGlzLnN0YXJ0ID0gcHJvZ3JhbS5uZXh0O1xuICB9XG5cbiAgYWJzdHJhY3QgY29tcGlsZTxFPihleHByOiBSZXByZXNlbnRzPEU+KTogRTtcblxuICBwcml2YXRlIGdldCBwb3MoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZ3JhbS5jdXJyZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgbmV4dFBvcygpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9ncmFtLm5leHQ7XG4gIH1cblxuICB1cHZhcnM8VCBleHRlbmRzIFtPcGFxdWVdPihjb3VudDogbnVtYmVyKTogVCB7XG4gICAgcmV0dXJuIGZpbGxOdWxscyhjb3VudCkgYXMgVDtcbiAgfVxuXG4gIHJlc2VydmUobmFtZTogT3ApIHtcbiAgICB0aGlzLnB1c2gobmFtZSwgMCwgMCwgMCk7XG4gIH1cblxuICBwdXNoKG5hbWU6IE9wLCBvcDEgPSAwLCBvcDIgPSAwLCBvcDMgPSAwKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZ3JhbS5wdXNoKG5hbWUsIG9wMSwgb3AyLCBvcDMpO1xuICB9XG5cbiAgZmluYWxpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wdXNoKE9wLlJldHVybik7XG4gIH1cblxuICAvLyBhcmdzXG5cbiAgcHVzaEFyZ3MocG9zaXRpb25hbDogbnVtYmVyLCBzeW50aGV0aWM6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnB1c2goT3AuUHVzaEFyZ3MsIHBvc2l0aW9uYWwsIChzeW50aGV0aWMgYXMgYW55KXwwKTtcbiAgfVxuXG4gIC8vIGhlbHBlcnNcblxuICBwcml2YXRlIGdldCBsYWJlbHMoKTogTGFiZWxzIHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXMubGFiZWxzU3RhY2suY3VycmVudCwgJ2J1Zzogbm90IGluIGEgbGFiZWwgc3RhY2snKTtcbiAgfVxuXG4gIHN0YXJ0TGFiZWxzKCkge1xuICAgIHRoaXMubGFiZWxzU3RhY2sucHVzaChuZXcgTGFiZWxzKCkpO1xuICB9XG5cbiAgc3RvcExhYmVscygpIHtcbiAgICBsZXQgbGFiZWwgPSBleHBlY3QodGhpcy5sYWJlbHNTdGFjay5wb3AoKSwgJ3VuYmFsYW5jZWQgcHVzaCBhbmQgcG9wIGxhYmVscycpO1xuICAgIGxhYmVsLnBhdGNoKHRoaXMucHJvZ3JhbSk7XG4gIH1cblxuICAvLyBjb21wb25lbnRzXG5cbiAgcHVzaENvbXBvbmVudE1hbmFnZXIoZGVmaW5pdGlvbjogQ29tcG9uZW50RGVmaW5pdGlvbjxPcGFxdWU+KSB7XG4gICAgdGhpcy5wdXNoKE9wLlB1c2hDb21wb25lbnRNYW5hZ2VyLCB0aGlzLm90aGVyKGRlZmluaXRpb24pKTtcbiAgfVxuXG4gIHB1c2hEeW5hbWljQ29tcG9uZW50TWFuYWdlcigpIHtcbiAgICB0aGlzLnB1c2goT3AuUHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyKTtcbiAgfVxuXG4gIGluaXRpYWxpemVDb21wb25lbnRTdGF0ZSgpIHtcbiAgICB0aGlzLnB1c2goT3AuSW5pdGlhbGl6ZUNvbXBvbmVudFN0YXRlKTtcbiAgfVxuXG4gIHByZXBhcmVBcmdzKHN0YXRlOiBSZWdpc3Rlcikge1xuICAgIHRoaXMucHVzaChPcC5QcmVwYXJlQXJncywgc3RhdGUpO1xuICB9XG5cbiAgY3JlYXRlQ29tcG9uZW50KHN0YXRlOiBSZWdpc3RlciwgaGFzRGVmYXVsdDogYm9vbGVhbiwgaGFzSW52ZXJzZTogYm9vbGVhbikge1xuICAgIGxldCBmbGFnID0gKDxhbnk+aGFzRGVmYXVsdHwwKSB8ICgoPGFueT5oYXNJbnZlcnNlfDApIDw8IDEpO1xuICAgIHRoaXMucHVzaChPcC5DcmVhdGVDb21wb25lbnQsIGZsYWcsIHN0YXRlKTtcbiAgfVxuXG4gIHJlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvcihzdGF0ZTogUmVnaXN0ZXIpIHtcbiAgICB0aGlzLnB1c2goT3AuUmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yLCBzdGF0ZSk7XG4gIH1cblxuICBiZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uKCkge1xuICAgIHRoaXMucHVzaChPcC5CZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uKTtcbiAgfVxuXG4gIGNvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uKCkge1xuICAgIHRoaXMucHVzaChPcC5Db21taXRDb21wb25lbnRUcmFuc2FjdGlvbik7XG4gIH1cblxuICBwdXNoQ29tcG9uZW50T3BlcmF0aW9ucygpIHtcbiAgICB0aGlzLnB1c2goT3AuUHVzaENvbXBvbmVudE9wZXJhdGlvbnMpO1xuICB9XG5cbiAgZ2V0Q29tcG9uZW50U2VsZihzdGF0ZTogUmVnaXN0ZXIpIHtcbiAgICB0aGlzLnB1c2goT3AuR2V0Q29tcG9uZW50U2VsZiwgc3RhdGUpO1xuICB9XG5cbiAgZ2V0Q29tcG9uZW50TGF5b3V0KHN0YXRlOiBSZWdpc3RlciApIHtcbiAgICB0aGlzLnB1c2goT3AuR2V0Q29tcG9uZW50TGF5b3V0LCBzdGF0ZSk7XG4gIH1cblxuICBkaWRDcmVhdGVFbGVtZW50KHN0YXRlOiBSZWdpc3Rlcikge1xuICAgIHRoaXMucHVzaChPcC5EaWRDcmVhdGVFbGVtZW50LCBzdGF0ZSk7XG4gIH1cblxuICBkaWRSZW5kZXJMYXlvdXQoc3RhdGU6IFJlZ2lzdGVyKSB7XG4gICAgdGhpcy5wdXNoKE9wLkRpZFJlbmRlckxheW91dCwgc3RhdGUpO1xuICB9XG5cbiAgLy8gcGFydGlhbFxuXG4gIGdldFBhcnRpYWxUZW1wbGF0ZSgpIHtcbiAgICB0aGlzLnB1c2goT3AuR2V0UGFydGlhbFRlbXBsYXRlKTtcbiAgfVxuXG4gIHJlc29sdmVNYXliZUxvY2FsKG5hbWU6IHN0cmluZykge1xuICAgIHRoaXMucHVzaChPcC5SZXNvbHZlTWF5YmVMb2NhbCwgdGhpcy5zdHJpbmcobmFtZSkpO1xuICB9XG5cbiAgLy8gZGVidWdnZXJcblxuICBkZWJ1Z2dlcihzeW1ib2xzOiBzdHJpbmdbXSwgZXZhbEluZm86IG51bWJlcltdKSB7XG4gICAgdGhpcy5wdXNoKE9wLkRlYnVnZ2VyLCB0aGlzLmNvbnN0YW50cy5vdGhlcihzeW1ib2xzKSwgdGhpcy5jb25zdGFudHMuYXJyYXkoZXZhbEluZm8pKTtcbiAgfVxuXG4gIC8vIGNvbnRlbnRcblxuICBkeW5hbWljQ29udGVudChPcGNvZGU6IGNvbnRlbnQuQXBwZW5kRHluYW1pY09wY29kZTxJbnNlcnRpb24+KSB7XG4gICAgdGhpcy5wdXNoKE9wLkR5bmFtaWNDb250ZW50LCB0aGlzLm90aGVyKE9wY29kZSkpO1xuICB9XG5cbiAgY2F1dGlvdXNBcHBlbmQoKSB7XG4gICAgdGhpcy5keW5hbWljQ29udGVudChuZXcgY29udGVudC5PcHRpbWl6ZWRDYXV0aW91c0FwcGVuZE9wY29kZSgpKTtcbiAgfVxuXG4gIHRydXN0aW5nQXBwZW5kKCkge1xuICAgIHRoaXMuZHluYW1pY0NvbnRlbnQobmV3IGNvbnRlbnQuT3B0aW1pemVkVHJ1c3RpbmdBcHBlbmRPcGNvZGUoKSk7XG4gIH1cblxuICAvLyBkb21cblxuICB0ZXh0KHRleHQ6IHN0cmluZykge1xuICAgIHRoaXMucHVzaChPcC5UZXh0LCB0aGlzLmNvbnN0YW50cy5zdHJpbmcodGV4dCkpO1xuICB9XG5cbiAgb3BlblByaW1pdGl2ZUVsZW1lbnQodGFnOiBzdHJpbmcpIHtcbiAgICB0aGlzLnB1c2goT3AuT3BlbkVsZW1lbnQsIHRoaXMuY29uc3RhbnRzLnN0cmluZyh0YWcpKTtcbiAgfVxuXG4gIG9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnModGFnOiBzdHJpbmcpIHtcbiAgICB0aGlzLnB1c2goT3AuT3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucywgdGhpcy5jb25zdGFudHMuc3RyaW5nKHRhZykpO1xuICB9XG5cbiAgb3BlbkR5bmFtaWNFbGVtZW50KCkge1xuICAgIHRoaXMucHVzaChPcC5PcGVuRHluYW1pY0VsZW1lbnQpO1xuICB9XG5cbiAgZmx1c2hFbGVtZW50KCkge1xuICAgIHRoaXMucHVzaChPcC5GbHVzaEVsZW1lbnQpO1xuICB9XG5cbiAgY2xvc2VFbGVtZW50KCkge1xuICAgIHRoaXMucHVzaChPcC5DbG9zZUVsZW1lbnQpO1xuICB9XG5cbiAgc3RhdGljQXR0cihfbmFtZTogc3RyaW5nLCBfbmFtZXNwYWNlOiBPcHRpb248c3RyaW5nPiwgX3ZhbHVlOiBzdHJpbmcpIHtcbiAgICBsZXQgbmFtZSA9IHRoaXMuY29uc3RhbnRzLnN0cmluZyhfbmFtZSk7XG4gICAgbGV0IG5hbWVzcGFjZSA9IF9uYW1lc3BhY2UgPyB0aGlzLmNvbnN0YW50cy5zdHJpbmcoX25hbWVzcGFjZSkgOiAwO1xuICAgIGxldCB2YWx1ZSA9IHRoaXMuY29uc3RhbnRzLnN0cmluZyhfdmFsdWUpO1xuXG4gICAgdGhpcy5wdXNoKE9wLlN0YXRpY0F0dHIsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UpO1xuICB9XG5cbiAgZHluYW1pY0F0dHJOUyhfbmFtZTogc3RyaW5nLCBfbmFtZXNwYWNlOiBzdHJpbmcsIHRydXN0aW5nOiBib29sZWFuKSB7XG4gICAgbGV0IG5hbWUgPSB0aGlzLmNvbnN0YW50cy5zdHJpbmcoX25hbWUpO1xuICAgIGxldCBuYW1lc3BhY2UgPSB0aGlzLmNvbnN0YW50cy5zdHJpbmcoX25hbWVzcGFjZSk7XG5cbiAgICB0aGlzLnB1c2goT3AuRHluYW1pY0F0dHJOUywgbmFtZSwgbmFtZXNwYWNlLCAodHJ1c3RpbmcgYXMgYW55KXwwKTtcbiAgfVxuXG4gIGR5bmFtaWNBdHRyKF9uYW1lOiBzdHJpbmcsIHRydXN0aW5nOiBib29sZWFuKSB7XG4gICAgbGV0IG5hbWUgPSB0aGlzLmNvbnN0YW50cy5zdHJpbmcoX25hbWUpO1xuICAgIHRoaXMucHVzaChPcC5EeW5hbWljQXR0ciwgbmFtZSwgKHRydXN0aW5nIGFzIGFueSl8MCk7XG4gIH1cblxuICBjb21tZW50KF9jb21tZW50OiBzdHJpbmcpIHtcbiAgICBsZXQgY29tbWVudCA9IHRoaXMuY29uc3RhbnRzLnN0cmluZyhfY29tbWVudCk7XG4gICAgdGhpcy5wdXNoKE9wLkNvbW1lbnQsIGNvbW1lbnQpO1xuICB9XG5cbiAgbW9kaWZpZXIoX2RlZmluaXRpb246IE1vZGlmaWVyTWFuYWdlcjxPcGFxdWU+KSB7XG4gICAgdGhpcy5wdXNoKE9wLk1vZGlmaWVyLCB0aGlzLm90aGVyKF9kZWZpbml0aW9uKSk7XG4gIH1cblxuICAvLyBsaXN0c1xuXG4gIHB1dEl0ZXJhdG9yKCkge1xuICAgIHRoaXMucHVzaChPcC5QdXRJdGVyYXRvcik7XG4gIH1cblxuICBlbnRlckxpc3Qoc3RhcnQ6IHN0cmluZykge1xuICAgIHRoaXMucmVzZXJ2ZShPcC5FbnRlckxpc3QpO1xuICAgIHRoaXMubGFiZWxzLnRhcmdldCh0aGlzLnBvcywgT3AuRW50ZXJMaXN0LCBzdGFydCk7XG4gIH1cblxuICBleGl0TGlzdCgpIHtcbiAgICB0aGlzLnB1c2goT3AuRXhpdExpc3QpO1xuICB9XG5cbiAgaXRlcmF0ZShicmVha3M6IHN0cmluZykge1xuICAgIHRoaXMucmVzZXJ2ZShPcC5JdGVyYXRlKTtcbiAgICB0aGlzLmxhYmVscy50YXJnZXQodGhpcy5wb3MsIE9wLkl0ZXJhdGUsIGJyZWFrcyk7XG4gIH1cblxuICAvLyBleHByZXNzaW9uc1xuXG4gIHNldFZhcmlhYmxlKHN5bWJvbDogbnVtYmVyKSB7XG4gICAgdGhpcy5wdXNoKE9wLlNldFZhcmlhYmxlLCBzeW1ib2wpO1xuICB9XG5cbiAgZ2V0VmFyaWFibGUoc3ltYm9sOiBudW1iZXIpIHtcbiAgICB0aGlzLnB1c2goT3AuR2V0VmFyaWFibGUsIHN5bWJvbCk7XG4gIH1cblxuICBnZXRQcm9wZXJ0eShrZXk6IHN0cmluZykge1xuICAgIHRoaXMucHVzaChPcC5HZXRQcm9wZXJ0eSwgdGhpcy5zdHJpbmcoa2V5KSk7XG4gIH1cblxuICBnZXRCbG9jayhzeW1ib2w6IG51bWJlcikge1xuICAgIHRoaXMucHVzaChPcC5HZXRCbG9jaywgc3ltYm9sKTtcbiAgfVxuXG4gIGhhc0Jsb2NrKHN5bWJvbDogbnVtYmVyKSB7XG4gICAgdGhpcy5wdXNoKE9wLkhhc0Jsb2NrLCBzeW1ib2wpO1xuICB9XG5cbiAgaGFzQmxvY2tQYXJhbXMoc3ltYm9sOiBudW1iZXIpIHtcbiAgICB0aGlzLnB1c2goT3AuSGFzQmxvY2tQYXJhbXMsIHN5bWJvbCk7XG4gIH1cblxuICBjb25jYXQoc2l6ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5wdXNoKE9wLkNvbmNhdCwgc2l6ZSk7XG4gIH1cblxuICBmdW5jdGlvbihmOiBDbGllbnRTaWRlLkZ1bmN0aW9uRXhwcmVzc2lvbkNhbGxiYWNrPE9wYXF1ZT4pIHtcbiAgICB0aGlzLnB1c2goT3AuRnVuY3Rpb24sIHRoaXMuZnVuYyhmKSk7XG4gIH1cblxuICBsb2FkKHJlZ2lzdGVyOiBSZWdpc3Rlcikge1xuICAgIHRoaXMucHVzaChPcC5Mb2FkLCByZWdpc3Rlcik7XG4gIH1cblxuICBmZXRjaChyZWdpc3RlcjogUmVnaXN0ZXIpIHtcbiAgICB0aGlzLnB1c2goT3AuRmV0Y2gsIHJlZ2lzdGVyKTtcbiAgfVxuXG4gIGR1cChyZWdpc3RlciA9IFJlZ2lzdGVyLnNwLCBvZmZzZXQgPSAwKSB7XG4gICAgcmV0dXJuIHRoaXMucHVzaChPcC5EdXAsIHJlZ2lzdGVyLCBvZmZzZXQpO1xuICB9XG5cbiAgcG9wKGNvdW50ID0gMSkge1xuICAgIHJldHVybiB0aGlzLnB1c2goT3AuUG9wLCBjb3VudCk7XG4gIH1cblxuICAvLyB2bVxuXG4gIHB1c2hSZW1vdGVFbGVtZW50KCkge1xuICAgIHRoaXMucHVzaChPcC5QdXNoUmVtb3RlRWxlbWVudCk7XG4gIH1cblxuICBwb3BSZW1vdGVFbGVtZW50KCkge1xuICAgIHRoaXMucHVzaChPcC5Qb3BSZW1vdGVFbGVtZW50KTtcbiAgfVxuXG4gIGxhYmVsKG5hbWU6IHN0cmluZykge1xuICAgIHRoaXMubGFiZWxzLmxhYmVsKG5hbWUsIHRoaXMubmV4dFBvcyk7XG4gIH1cblxuICBwdXNoUm9vdFNjb3BlKHN5bWJvbHM6IG51bWJlciwgYmluZENhbGxlclNjb3BlOiBib29sZWFuKSB7XG4gICAgdGhpcy5wdXNoKE9wLlJvb3RTY29wZSwgc3ltYm9scywgPGFueT5iaW5kQ2FsbGVyU2NvcGV8MCk7XG4gIH1cblxuICBwdXNoQ2hpbGRTY29wZSgpIHtcbiAgICB0aGlzLnB1c2goT3AuQ2hpbGRTY29wZSk7XG4gIH1cblxuICBwb3BTY29wZSgpIHtcbiAgICB0aGlzLnB1c2goT3AuUG9wU2NvcGUpO1xuICB9XG5cbiAgcmV0dXJuVG8obGFiZWw6IHN0cmluZykge1xuICAgIHRoaXMucmVzZXJ2ZShPcC5JbW1lZGlhdGUpO1xuICAgIHRoaXMubGFiZWxzLnRhcmdldCh0aGlzLnBvcywgT3AuSW1tZWRpYXRlLCBsYWJlbCk7XG4gICAgdGhpcy5sb2FkKFJlZ2lzdGVyLnJhKTtcbiAgfVxuXG4gIHB1c2hEeW5hbWljU2NvcGUoKSB7XG4gICAgdGhpcy5wdXNoKE9wLlB1c2hEeW5hbWljU2NvcGUpO1xuICB9XG5cbiAgcG9wRHluYW1pY1Njb3BlKCkge1xuICAgIHRoaXMucHVzaChPcC5Qb3BEeW5hbWljU2NvcGUpO1xuICB9XG5cbiAgcHVzaEltbWVkaWF0ZTxUPih2YWx1ZTogVCkge1xuICAgIHRoaXMucHVzaChPcC5Db25zdGFudCwgdGhpcy5vdGhlcih2YWx1ZSkpO1xuICB9XG5cbiAgcHJpbWl0aXZlKF9wcmltaXRpdmU6IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQgfCBib29sZWFuKSB7XG4gICAgbGV0IGZsYWc6IDAgfCAxIHwgMiA9IDA7XG4gICAgbGV0IHByaW1pdGl2ZTogbnVtYmVyO1xuICAgIHN3aXRjaCAodHlwZW9mIF9wcmltaXRpdmUpIHtcbiAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgIHByaW1pdGl2ZSA9IF9wcmltaXRpdmUgYXMgbnVtYmVyO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgIHByaW1pdGl2ZSA9IHRoaXMuc3RyaW5nKF9wcmltaXRpdmUgYXMgc3RyaW5nKTtcbiAgICAgICAgZmxhZyA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgIHByaW1pdGl2ZSA9IChfcHJpbWl0aXZlIGFzIGFueSkgfCAwO1xuICAgICAgICBmbGFnID0gMjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICAvLyBhc3N1bWUgbnVsbFxuICAgICAgICBwcmltaXRpdmUgPSAyO1xuICAgICAgICBmbGFnID0gMjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd1bmRlZmluZWQnOlxuICAgICAgICBwcmltaXRpdmUgPSAzO1xuICAgICAgICBmbGFnID0gMjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcHJpbWl0aXZlIHBhc3NlZCB0byBwdXNoUHJpbWl0aXZlJyk7XG4gICAgfVxuXG4gICAgdGhpcy5wdXNoKE9wLlByaW1pdGl2ZVJlZmVyZW5jZSwgKGZsYWcgPDwgMzApIHwgcHJpbWl0aXZlKTtcbiAgfVxuXG4gIGhlbHBlcihmdW5jOiBGdW5jdGlvbikge1xuICAgIHRoaXMucHVzaChPcC5IZWxwZXIsIHRoaXMuZnVuYyhmdW5jKSk7XG4gIH1cblxuICBwdXNoQmxvY2soYmxvY2s6IE9wdGlvbjxCbG9jaz4pIHtcbiAgICB0aGlzLnB1c2goT3AuUHVzaEJsb2NrLCB0aGlzLmJsb2NrKGJsb2NrKSk7XG4gIH1cblxuICBiaW5kRHluYW1pY1Njb3BlKF9uYW1lczogc3RyaW5nW10pIHtcbiAgICB0aGlzLnB1c2goT3AuQmluZER5bmFtaWNTY29wZSwgdGhpcy5uYW1lcyhfbmFtZXMpKTtcbiAgfVxuXG4gIGVudGVyKGFyZ3M6IG51bWJlcikge1xuICAgIHRoaXMucHVzaChPcC5FbnRlciwgYXJncyk7XG4gIH1cblxuICBleGl0KCkge1xuICAgIHRoaXMucHVzaChPcC5FeGl0KTtcbiAgfVxuXG4gIHJldHVybigpIHtcbiAgICB0aGlzLnB1c2goT3AuUmV0dXJuKTtcbiAgfVxuXG4gIHB1c2hGcmFtZSgpIHtcbiAgICB0aGlzLnB1c2goT3AuUHVzaEZyYW1lKTtcbiAgfVxuXG4gIHBvcEZyYW1lKCkge1xuICAgIHRoaXMucHVzaChPcC5Qb3BGcmFtZSk7XG4gIH1cblxuICBjb21waWxlRHluYW1pY0Jsb2NrKCk6IHZvaWQge1xuICAgIHRoaXMucHVzaChPcC5Db21waWxlRHluYW1pY0Jsb2NrKTtcbiAgfVxuXG4gIGludm9rZUR5bmFtaWMoaW52b2tlcjogdm0uRHluYW1pY0ludm9rZXI8U3ltYm9sVGFibGU+KTogdm9pZCB7XG4gICAgdGhpcy5wdXNoKE9wLkludm9rZUR5bmFtaWMsIHRoaXMub3RoZXIoaW52b2tlcikpO1xuICB9XG5cbiAgaW52b2tlU3RhdGljKGJsb2NrOiBCbG9jaywgY2FsbGVyQ291bnQgPSAwKTogdm9pZCB7XG4gICAgbGV0IHsgcGFyYW1ldGVycyB9ID0gYmxvY2suc3ltYm9sVGFibGU7XG4gICAgbGV0IGNhbGxlZUNvdW50ID0gcGFyYW1ldGVycy5sZW5ndGg7XG4gICAgbGV0IGNvdW50ID0gTWF0aC5taW4oY2FsbGVyQ291bnQsIGNhbGxlZUNvdW50KTtcblxuICAgIHRoaXMucHVzaEZyYW1lKCk7XG5cbiAgICBpZiAoY291bnQpIHtcbiAgICAgIHRoaXMucHVzaENoaWxkU2NvcGUoKTtcblxuICAgICAgZm9yIChsZXQgaT0wOyBpPGNvdW50OyBpKyspIHtcbiAgICAgICAgdGhpcy5kdXAoUmVnaXN0ZXIuZnAsIGNhbGxlckNvdW50IC0gaSk7XG4gICAgICAgIHRoaXMuc2V0VmFyaWFibGUocGFyYW1ldGVyc1tpXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IF9ibG9jayA9IHRoaXMuY29uc3RhbnRzLmJsb2NrKGJsb2NrKTtcbiAgICB0aGlzLnB1c2goT3AuSW52b2tlU3RhdGljLCBfYmxvY2spO1xuXG4gICAgaWYgKGNvdW50KSB7XG4gICAgICB0aGlzLnBvcFNjb3BlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5wb3BGcmFtZSgpO1xuICB9XG5cbiAgdGVzdCh0ZXN0RnVuYzogJ2NvbnN0JyB8ICdzaW1wbGUnIHwgJ2Vudmlyb25tZW50JyB8IHZtLlRlc3RGdW5jdGlvbikge1xuICAgIGxldCBfZnVuYzogdm0uVGVzdEZ1bmN0aW9uO1xuXG4gICAgaWYgKHRlc3RGdW5jID09PSAnY29uc3QnKSB7XG4gICAgICBfZnVuYyA9IHZtLkNvbnN0VGVzdDtcbiAgICB9IGVsc2UgaWYgKHRlc3RGdW5jID09PSAnc2ltcGxlJykge1xuICAgICAgX2Z1bmMgPSB2bS5TaW1wbGVUZXN0O1xuICAgIH0gZWxzZSBpZiAodGVzdEZ1bmMgPT09ICdlbnZpcm9ubWVudCcpIHtcbiAgICAgIF9mdW5jID0gdm0uRW52aXJvbm1lbnRUZXN0O1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHRlc3RGdW5jID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBfZnVuYyA9IHRlc3RGdW5jO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VucmVhY2hhYmxlJyk7XG4gICAgfVxuXG4gICAgbGV0IGZ1bmMgPSB0aGlzLmNvbnN0YW50cy5mdW5jdGlvbihfZnVuYyk7XG4gICAgdGhpcy5wdXNoKE9wLlRlc3QsIGZ1bmMpO1xuICB9XG5cbiAganVtcCh0YXJnZXQ6IHN0cmluZykge1xuICAgIHRoaXMucmVzZXJ2ZShPcC5KdW1wKTtcbiAgICB0aGlzLmxhYmVscy50YXJnZXQodGhpcy5wb3MsIE9wLkp1bXAsIHRhcmdldCk7XG4gIH1cblxuICBqdW1wSWYodGFyZ2V0OiBzdHJpbmcpIHtcbiAgICB0aGlzLnJlc2VydmUoT3AuSnVtcElmKTtcbiAgICB0aGlzLmxhYmVscy50YXJnZXQodGhpcy5wb3MsIE9wLkp1bXBJZiwgdGFyZ2V0KTtcbiAgfVxuXG4gIGp1bXBVbmxlc3ModGFyZ2V0OiBzdHJpbmcpIHtcbiAgICB0aGlzLnJlc2VydmUoT3AuSnVtcFVubGVzcyk7XG4gICAgdGhpcy5sYWJlbHMudGFyZ2V0KHRoaXMucG9zLCBPcC5KdW1wVW5sZXNzLCB0YXJnZXQpO1xuICB9XG5cbiAgc3RyaW5nKF9zdHJpbmc6IHN0cmluZyk6IENvbnN0YW50U3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb25zdGFudHMuc3RyaW5nKF9zdHJpbmcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG5hbWVzKF9uYW1lczogc3RyaW5nW10pOiBDb25zdGFudEFycmF5IHtcbiAgICBsZXQgbmFtZXMgPSBfbmFtZXMubWFwKG4gPT4gdGhpcy5jb25zdGFudHMuc3RyaW5nKG4pKTtcbiAgICByZXR1cm4gdGhpcy5jb25zdGFudHMuYXJyYXkobmFtZXMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN5bWJvbHMoc3ltYm9sczogbnVtYmVyW10pOiBDb25zdGFudEFycmF5IHtcbiAgICByZXR1cm4gdGhpcy5jb25zdGFudHMuYXJyYXkoc3ltYm9scyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3RoZXIodmFsdWU6IE9wYXF1ZSk6IENvbnN0YW50T3RoZXIge1xuICAgIHJldHVybiB0aGlzLmNvbnN0YW50cy5vdGhlcih2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYmxvY2soYmxvY2s6IE9wdGlvbjxCbG9jaz4pOiBDb25zdGFudEJsb2NrIHtcbiAgICByZXR1cm4gYmxvY2sgPyB0aGlzLmNvbnN0YW50cy5ibG9jayhibG9jaykgOiAwO1xuICB9XG5cbiAgcHJvdGVjdGVkIGZ1bmMoZnVuYzogRnVuY3Rpb24pOiBDb25zdGFudEZ1bmN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5jb25zdGFudHMuZnVuY3Rpb24oZnVuYyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNDb21waWxhYmxlRXhwcmVzc2lvbjxFPihleHByOiBSZXByZXNlbnRzPEU+KTogZXhwciBpcyBDb21waWxlc0ludG88RT4ge1xuICByZXR1cm4gZXhwciAmJiB0eXBlb2YgZXhwclsnY29tcGlsZSddID09PSAnZnVuY3Rpb24nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBPcGNvZGVCdWlsZGVyIGV4dGVuZHMgQmFzaWNPcGNvZGVCdWlsZGVyIHtcbiAgcHVibGljIGNvbXBvbmVudDogSUNvbXBvbmVudEJ1aWxkZXI7XG5cbiAgY29uc3RydWN0b3IoZW52OiBFbnZpcm9ubWVudCwgbWV0YTogQ29tcGlsYXRpb25NZXRhLCBwcm9ncmFtOiBQcm9ncmFtID0gZW52LnByb2dyYW0pIHtcbiAgICBzdXBlcihlbnYsIG1ldGEsIHByb2dyYW0pO1xuICAgIHRoaXMuY29tcG9uZW50ID0gbmV3IENvbXBvbmVudEJ1aWxkZXIodGhpcyk7XG4gIH1cblxuICBjb21waWxlQXJncyhwYXJhbXM6IE9wdGlvbjxXaXJlRm9ybWF0LkNvcmUuUGFyYW1zPiwgaGFzaDogT3B0aW9uPFdpcmVGb3JtYXQuQ29yZS5IYXNoPiwgc3ludGhldGljOiBib29sZWFuKSB7XG4gICAgbGV0IHBvc2l0aW9uYWwgPSAwO1xuXG4gICAgaWYgKHBhcmFtcykge1xuICAgICAgcGFyYW1zLmZvckVhY2gocCA9PiBleHByKHAsIHRoaXMpKTtcbiAgICAgIHBvc2l0aW9uYWwgPSBwYXJhbXMubGVuZ3RoO1xuICAgIH1cblxuICAgIGxldCBuYW1lcyA9IEVNUFRZX0FSUkFZO1xuXG4gICAgaWYgKGhhc2gpIHtcbiAgICAgIG5hbWVzID0gaGFzaFswXTtcbiAgICAgIGhhc2hbMV0uZm9yRWFjaCh2ID0+IGV4cHIodiwgdGhpcykpO1xuICAgIH1cblxuICAgIHRoaXMucHVzaEltbWVkaWF0ZShuYW1lcyk7XG4gICAgdGhpcy5wdXNoQXJncyhwb3NpdGlvbmFsLCBzeW50aGV0aWMpO1xuICB9XG5cbiAgY29tcGlsZTxFPihleHByOiBSZXByZXNlbnRzPEU+KTogRSB7XG4gICAgaWYgKGlzQ29tcGlsYWJsZUV4cHJlc3Npb24oZXhwcikpIHtcbiAgICAgIHJldHVybiBleHByLmNvbXBpbGUodGhpcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBleHByO1xuICAgIH1cbiAgfVxuXG4gIGd1YXJkZWRDYXV0aW91c0FwcGVuZChleHByZXNzaW9uOiBXaXJlRm9ybWF0LkV4cHJlc3Npb24pIHtcbiAgICBleHByKGV4cHJlc3Npb24sIHRoaXMpO1xuICAgIHRoaXMuZHluYW1pY0NvbnRlbnQobmV3IGNvbnRlbnQuR3VhcmRlZENhdXRpb3VzQXBwZW5kT3Bjb2RlKCkpO1xuICB9XG5cbiAgZ3VhcmRlZFRydXN0aW5nQXBwZW5kKGV4cHJlc3Npb246IFdpcmVGb3JtYXQuRXhwcmVzc2lvbikge1xuICAgIGV4cHIoZXhwcmVzc2lvbiwgdGhpcyk7XG4gICAgdGhpcy5keW5hbWljQ29udGVudChuZXcgY29udGVudC5HdWFyZGVkVHJ1c3RpbmdBcHBlbmRPcGNvZGUoKSk7XG4gIH1cblxuICBpbnZva2VDb21wb25lbnQoYXR0cnM6IE9wdGlvbjxSYXdJbmxpbmVCbG9jaz4sIHBhcmFtczogT3B0aW9uPFdpcmVGb3JtYXQuQ29yZS5QYXJhbXM+LCBoYXNoOiBPcHRpb248V2lyZUZvcm1hdC5Db3JlLkhhc2g+LCBibG9jazogT3B0aW9uPEJsb2NrPiwgaW52ZXJzZTogT3B0aW9uPEJsb2NrPiA9IG51bGwpIHtcbiAgICB0aGlzLmluaXRpYWxpemVDb21wb25lbnRTdGF0ZSgpO1xuXG4gICAgdGhpcy5mZXRjaChSZWdpc3Rlci5zMCk7XG4gICAgdGhpcy5kdXAoUmVnaXN0ZXIuc3AsIDEpO1xuICAgIHRoaXMubG9hZChSZWdpc3Rlci5zMCk7XG5cbiAgICB0aGlzLnB1c2hCbG9jayhibG9jayk7XG4gICAgdGhpcy5wdXNoQmxvY2soaW52ZXJzZSk7XG5cbiAgICB0aGlzLmNvbXBpbGVBcmdzKHBhcmFtcywgaGFzaCwgZmFsc2UpO1xuICAgIHRoaXMucHJlcGFyZUFyZ3MoUmVnaXN0ZXIuczApO1xuXG4gICAgdGhpcy5iZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uKCk7XG4gICAgdGhpcy5wdXNoRHluYW1pY1Njb3BlKCk7XG4gICAgdGhpcy5jcmVhdGVDb21wb25lbnQoUmVnaXN0ZXIuczAsIHRydWUsIGludmVyc2UgPT09IG51bGwpO1xuICAgIHRoaXMucmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yKFJlZ2lzdGVyLnMwKTtcblxuICAgIHRoaXMuZ2V0Q29tcG9uZW50U2VsZihSZWdpc3Rlci5zMCk7XG4gICAgdGhpcy5nZXRDb21wb25lbnRMYXlvdXQoUmVnaXN0ZXIuczApO1xuICAgIHRoaXMuaW52b2tlRHluYW1pYyhuZXcgSW52b2tlRHluYW1pY0xheW91dChhdHRycyAmJiBhdHRycy5zY2FuKCkpKTtcbiAgICB0aGlzLnBvcEZyYW1lKCk7XG5cbiAgICB0aGlzLnBvcFNjb3BlKCk7XG4gICAgdGhpcy5wb3BEeW5hbWljU2NvcGUoKTtcbiAgICB0aGlzLmNvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uKCk7XG5cbiAgICB0aGlzLmxvYWQoUmVnaXN0ZXIuczApO1xuICB9XG5cbiAgdGVtcGxhdGUoYmxvY2s6IE9wdGlvbjxXaXJlRm9ybWF0LlNlcmlhbGl6ZWRJbmxpbmVCbG9jaz4pOiBPcHRpb248UmF3SW5saW5lQmxvY2s+IHtcbiAgICBpZiAoIWJsb2NrKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gbmV3IFJhd0lubGluZUJsb2NrKHRoaXMuZW52LCB0aGlzLm1ldGEsIGJsb2NrLnN0YXRlbWVudHMsIGJsb2NrLnBhcmFtZXRlcnMpO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIEJsb2NrQ2FsbGJhY2sgPSAoZHNsOiBPcGNvZGVCdWlsZGVyLCBCRUdJTjogTGFiZWwsIEVORDogTGFiZWwpID0+IHZvaWQ7XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxXQUFXLENBQUM7QUFDckMsT0FBTyxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHM0IsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQVUsS0FBSyxFQUFVLElBQUksRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBY3BGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQWNuRTtJQUFBO1FBQ0UsV0FBTSxHQUFHLElBQUksRUFBVSxDQUFDO1FBQ3hCLFlBQU8sR0FBMkQsRUFBRSxDQUFDO0lBZXZFLENBQUM7SUFiQyxLQUFLLENBQUMsSUFBWSxFQUFFLEtBQWE7UUFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVELE1BQU0sQ0FBQyxFQUFVLEVBQUUsTUFBb0IsRUFBRSxNQUFjO1FBQ3JELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBZ0I7UUFDcEIsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDaEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxN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LENBQUMsSUFBSSxtQkFBbUIsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFaEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUVsQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQStDO1FBQ3RELEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztRQUN4QixNQUFNLENBQUMsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNvbnRlbnQgZnJvbSAnLi9jb250ZW50JztcbmltcG9ydCAqIGFzIHZtIGZyb20gJy4vdm0nO1xuXG5pbXBvcnQgeyBJbnNlcnRpb24gfSBmcm9tICcuLi8uLi91cHNlcnQnO1xuaW1wb3J0IHsgUmVnaXN0ZXIgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCAqIGFzIFdpcmVGb3JtYXQgZnJvbSAnQGdsaW1tZXIvd2lyZS1mb3JtYXQnO1xuaW1wb3J0IHsgT3B0aW9uLCBTdGFjaywgT3BhcXVlLCBkaWN0LCBmaWxsTnVsbHMsIEVNUFRZX0FSUkFZIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQge1xuICBDb25zdGFudHMsXG4gIENvbnN0YW50U3RyaW5nLFxuICBDb25zdGFudEFycmF5LFxuICBDb25zdGFudE90aGVyLFxuICBDb25zdGFudEJsb2NrLFxuICBDb25zdGFudEZ1bmN0aW9uLFxufSBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9jb25zdGFudHMnO1xuaW1wb3J0IHsgTW9kaWZpZXJNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vbW9kaWZpZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBDb21wb25lbnREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50L2ludGVyZmFjZXMnO1xuaW1wb3J0IEVudmlyb25tZW50LCB7IFByb2dyYW0gfSBmcm9tICcuLi8uLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBTeW1ib2xUYWJsZSwgQ29tcGlsYXRpb25NZXRhIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBDb21wb25lbnRCdWlsZGVyIGFzIElDb21wb25lbnRCdWlsZGVyIH0gZnJvbSAnLi4vLi4vb3Bjb2RlLWJ1aWxkZXInO1xuaW1wb3J0IHsgQ29tcG9uZW50QnVpbGRlciB9IGZyb20gJy4uLy4uL2NvbXBpbGVyJztcbmltcG9ydCB7IFJhd0lubGluZUJsb2NrLCBDbGllbnRTaWRlLCBCbG9jayB9IGZyb20gJy4uLy4uL3NjYW5uZXInO1xuaW1wb3J0IHsgSW52b2tlRHluYW1pY0xheW91dCwgZXhwciB9IGZyb20gJy4uLy4uL3N5bnRheC9mdW5jdGlvbnMnO1xuXG5pbXBvcnQgeyBPcCB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBpbGVzSW50bzxFPiB7XG4gIGNvbXBpbGUoYnVpbGRlcjogT3Bjb2RlQnVpbGRlcik6IEU7XG59XG5cbmV4cG9ydCB0eXBlIFJlcHJlc2VudHM8RT4gPSBDb21waWxlc0ludG88RT4gfCBFO1xuXG5leHBvcnQgdHlwZSBMYWJlbCA9IHN0cmluZztcblxudHlwZSBUYXJnZXRPcGNvZGUgPSBPcC5KdW1wIHwgT3AuSnVtcElmIHwgT3AuSnVtcFVubGVzcyB8IE9wLkVudGVyTGlzdCB8IE9wLkl0ZXJhdGUgfCBPcC5JbW1lZGlhdGU7XG5cbmNsYXNzIExhYmVscyB7XG4gIGxhYmVscyA9IGRpY3Q8bnVtYmVyPigpO1xuICB0YXJnZXRzOiB7IGF0OiBudW1iZXIsIFRhcmdldDogVGFyZ2V0T3Bjb2RlLCB0YXJnZXQ6IHN0cmluZyB9W10gPSBbXTtcblxuICBsYWJlbChuYW1lOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmxhYmVsc1tuYW1lXSA9IGluZGV4O1xuICB9XG5cbiAgdGFyZ2V0KGF0OiBudW1iZXIsIFRhcmdldDogVGFyZ2V0T3Bjb2RlLCB0YXJnZXQ6IHN0cmluZykge1xuICAgIHRoaXMudGFyZ2V0cy5wdXNoKHsgYXQsIFRhcmdldCwgdGFyZ2V0IH0pO1xuICB9XG5cbiAgcGF0Y2gob3Bjb2RlczogUHJvZ3JhbSk6IHZvaWQge1xuICAgIGZvciAobGV0IHsgYXQsIFRhcmdldCwgdGFyZ2V0IH0gb2YgdGhpcy50YXJnZXRzKSB7XG4gICAgICBvcGNvZGVzLnNldChhdCwgVGFyZ2V0LCB0aGlzLmxhYmVsc1t0YXJnZXRdKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2ljT3Bjb2RlQnVpbGRlciB7XG4gIHByaXZhdGUgbGFiZWxzU3RhY2sgPSBuZXcgU3RhY2s8TGFiZWxzPigpO1xuICBwdWJsaWMgY29uc3RhbnRzOiBDb25zdGFudHM7XG4gIHB1YmxpYyBzdGFydDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlbnY6IEVudmlyb25tZW50LCBwdWJsaWMgbWV0YTogQ29tcGlsYXRpb25NZXRhLCBwdWJsaWMgcHJvZ3JhbTogUHJvZ3JhbSkge1xuICAgIHRoaXMuY29uc3RhbnRzID0gZW52LmNvbnN0YW50cztcbiAgICB0aGlzLnN0YXJ0ID0gcHJvZ3JhbS5uZXh0O1xuICB9XG5cbiAgYWJzdHJhY3QgY29tcGlsZTxFPihleHByOiBSZXByZXNlbnRzPEU+KTogRTtcblxuICBwcml2YXRlIGdldCBwb3MoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZ3JhbS5jdXJyZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgbmV4dFBvcygpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9ncmFtLm5leHQ7XG4gIH1cblxuICB1cHZhcnM8VCBleHRlbmRzIFtPcGFxdWVdPihjb3VudDogbnVtYmVyKTogVCB7XG4gICAgcmV0dXJuIGZpbGxOdWxscyhjb3VudCkgYXMgVDtcbiAgfVxuXG4gIHJlc2VydmUobmFtZTogT3ApIHtcbiAgICB0aGlzLnB1c2gobmFtZSwgMCwgMCwgMCk7XG4gIH1cblxuICBwdXNoKG5hbWU6IE9wLCBvcDEgPSAwLCBvcDIgPSAwLCBvcDMgPSAwKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZ3JhbS5wdXNoKG5hbWUsIG9wMSwgb3AyLCBvcDMpO1xuICB9XG5cbiAgZmluYWxpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wdXNoKE9wLlJldHVybik7XG4gIH1cblxuICAvLyBhcmdzXG5cbiAgcHVzaEFyZ3MocG9zaXRpb25hbDogbnVtYmVyLCBzeW50aGV0aWM6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnB1c2goT3AuUHVzaEFyZ3MsIHBvc2l0aW9uYWwsIChzeW50aGV0aWMgYXMgYW55KXwwKTtcbiAgfVxuXG4gIC8vIGhlbHBlcnNcblxuICBwcml2YXRlIGdldCBsYWJlbHMoKTogTGFiZWxzIHtcbiAgICByZXR1cm4gdGhpcy5sYWJlbHNTdGFjay5jdXJyZW50O1xuICB9XG5cbiAgc3RhcnRMYWJlbHMoKSB7XG4gICAgdGhpcy5sYWJlbHNTdGFjay5wdXNoKG5ldyBMYWJlbHMoKSk7XG4gIH1cblxuICBzdG9wTGFiZWxzKCkge1xuICAgIGxldCBsYWJlbCA9IHRoaXMubGFiZWxzU3RhY2sucG9wKCk7XG4gICAgbGFiZWwucGF0Y2godGhpcy5wcm9ncmFtKTtcbiAgfVxuXG4gIC8vIGNvbXBvbmVudHNcblxuICBwdXNoQ29tcG9uZW50TWFuYWdlcihkZWZpbml0aW9uOiBDb21wb25lbnREZWZpbml0aW9uPE9wYXF1ZT4pIHtcbiAgICB0aGlzLnB1c2goT3AuUHVzaENvbXBvbmVudE1hbmFnZXIsIHRoaXMub3RoZXIoZGVmaW5pdGlvbikpO1xuICB9XG5cbiAgcHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyKCkge1xuICAgIHRoaXMucHVzaChPcC5QdXNoRHluYW1pY0NvbXBvbmVudE1hbmFnZXIpO1xuICB9XG5cbiAgaW5pdGlhbGl6ZUNvbXBvbmVudFN0YXRlKCkge1xuICAgIHRoaXMucHVzaChPcC5Jbml0aWFsaXplQ29tcG9uZW50U3RhdGUpO1xuICB9XG5cbiAgcHJlcGFyZUFyZ3Moc3RhdGU6IFJlZ2lzdGVyKSB7XG4gICAgdGhpcy5wdXNoKE9wLlByZXBhcmVBcmdzLCBzdGF0ZSk7XG4gIH1cblxuICBjcmVhdGVDb21wb25lbnQoc3RhdGU6IFJlZ2lzdGVyLCBoYXNEZWZhdWx0OiBib29sZWFuLCBoYXNJbnZlcnNlOiBib29sZWFuKSB7XG4gICAgbGV0IGZsYWcgPSAoPGFueT5oYXNEZWZhdWx0fDApIHwgKCg8YW55Pmhhc0ludmVyc2V8MCkgPDwgMSk7XG4gICAgdGhpcy5wdXNoKE9wLkNyZWF0ZUNvbXBvbmVudCwgZmxhZywgc3RhdGUpO1xuICB9XG5cbiAgcmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yKHN0YXRlOiBSZWdpc3Rlcikge1xuICAgIHRoaXMucHVzaChPcC5SZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3IsIHN0YXRlKTtcbiAgfVxuXG4gIGJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24oKSB7XG4gICAgdGhpcy5wdXNoKE9wLkJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24pO1xuICB9XG5cbiAgY29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24oKSB7XG4gICAgdGhpcy5wdXNoKE9wLkNvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uKTtcbiAgfVxuXG4gIHB1c2hDb21wb25lbnRPcGVyYXRpb25zKCkge1xuICAgIHRoaXMucHVzaChPcC5QdXNoQ29tcG9uZW50T3BlcmF0aW9ucyk7XG4gIH1cblxuICBnZXRDb21wb25lbnRTZWxmKHN0YXRlOiBSZWdpc3Rlcikge1xuICAgIHRoaXMucHVzaChPcC5HZXRDb21wb25lbnRTZWxmLCBzdGF0ZSk7XG4gIH1cblxuICBnZXRDb21wb25lbnRMYXlvdXQoc3RhdGU6IFJlZ2lzdGVyICkge1xuICAgIHRoaXMucHVzaChPcC5HZXRDb21wb25lbnRMYXlvdXQsIHN0YXRlKTtcbiAgfVxuXG4gIGRpZENyZWF0ZUVsZW1lbnQoc3RhdGU6IFJlZ2lzdGVyKSB7XG4gICAgdGhpcy5wdXNoKE9wLkRpZENyZWF0ZUVsZW1lbnQsIHN0YXRlKTtcbiAgfVxuXG4gIGRpZFJlbmRlckxheW91dChzdGF0ZTogUmVnaXN0ZXIpIHtcbiAgICB0aGlzLnB1c2goT3AuRGlkUmVuZGVyTGF5b3V0LCBzdGF0ZSk7XG4gIH1cblxuICAvLyBwYXJ0aWFsXG5cbiAgZ2V0UGFydGlhbFRlbXBsYXRlKCkge1xuICAgIHRoaXMucHVzaChPcC5HZXRQYXJ0aWFsVGVtcGxhdGUpO1xuICB9XG5cbiAgcmVzb2x2ZU1heWJlTG9jYWwobmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5wdXNoKE9wLlJlc29sdmVNYXliZUxvY2FsLCB0aGlzLnN0cmluZyhuYW1lKSk7XG4gIH1cblxuICAvLyBkZWJ1Z2dlclxuXG4gIGRlYnVnZ2VyKHN5bWJvbHM6IHN0cmluZ1tdLCBldmFsSW5mbzogbnVtYmVyW10pIHtcbiAgICB0aGlzLnB1c2goT3AuRGVidWdnZXIsIHRoaXMuY29uc3RhbnRzLm90aGVyKHN5bWJvbHMpLCB0aGlzLmNvbnN0YW50cy5hcnJheShldmFsSW5mbykpO1xuICB9XG5cbiAgLy8gY29udGVudFxuXG4gIGR5bmFtaWNDb250ZW50KE9wY29kZTogY29udGVudC5BcHBlbmREeW5hbWljT3Bjb2RlPEluc2VydGlvbj4pIHtcbiAgICB0aGlzLnB1c2goT3AuRHluYW1pY0NvbnRlbnQsIHRoaXMub3RoZXIoT3Bjb2RlKSk7XG4gIH1cblxuICBjYXV0aW91c0FwcGVuZCgpIHtcbiAgICB0aGlzLmR5bmFtaWNDb250ZW50KG5ldyBjb250ZW50Lk9wdGltaXplZENhdXRpb3VzQXBwZW5kT3Bjb2RlKCkpO1xuICB9XG5cbiAgdHJ1c3RpbmdBcHBlbmQoKSB7XG4gICAgdGhpcy5keW5hbWljQ29udGVudChuZXcgY29udGVudC5PcHRpbWl6ZWRUcnVzdGluZ0FwcGVuZE9wY29kZSgpKTtcbiAgfVxuXG4gIC8vIGRvbVxuXG4gIHRleHQodGV4dDogc3RyaW5nKSB7XG4gICAgdGhpcy5wdXNoKE9wLlRleHQsIHRoaXMuY29uc3RhbnRzLnN0cmluZyh0ZXh0KSk7XG4gIH1cblxuICBvcGVuUHJpbWl0aXZlRWxlbWVudCh0YWc6IHN0cmluZykge1xuICAgIHRoaXMucHVzaChPcC5PcGVuRWxlbWVudCwgdGhpcy5jb25zdGFudHMuc3RyaW5nKHRhZykpO1xuICB9XG5cbiAgb3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucyh0YWc6IHN0cmluZykge1xuICAgIHRoaXMucHVzaChPcC5PcGVuRWxlbWVudFdpdGhPcGVyYXRpb25zLCB0aGlzLmNvbnN0YW50cy5zdHJpbmcodGFnKSk7XG4gIH1cblxuICBvcGVuRHluYW1pY0VsZW1lbnQoKSB7XG4gICAgdGhpcy5wdXNoKE9wLk9wZW5EeW5hbWljRWxlbWVudCk7XG4gIH1cblxuICBmbHVzaEVsZW1lbnQoKSB7XG4gICAgdGhpcy5wdXNoKE9wLkZsdXNoRWxlbWVudCk7XG4gIH1cblxuICBjbG9zZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5wdXNoKE9wLkNsb3NlRWxlbWVudCk7XG4gIH1cblxuICBzdGF0aWNBdHRyKF9uYW1lOiBzdHJpbmcsIF9uYW1lc3BhY2U6IE9wdGlvbjxzdHJpbmc+LCBfdmFsdWU6IHN0cmluZykge1xuICAgIGxldCBuYW1lID0gdGhpcy5jb25zdGFudHMuc3RyaW5nKF9uYW1lKTtcbiAgICBsZXQgbmFtZXNwYWNlID0gX25hbWVzcGFjZSA/IHRoaXMuY29uc3RhbnRzLnN0cmluZyhfbmFtZXNwYWNlKSA6IDA7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5jb25zdGFudHMuc3RyaW5nKF92YWx1ZSk7XG5cbiAgICB0aGlzLnB1c2goT3AuU3RhdGljQXR0ciwgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZSk7XG4gIH1cblxuICBkeW5hbWljQXR0ck5TKF9uYW1lOiBzdHJpbmcsIF9uYW1lc3BhY2U6IHN0cmluZywgdHJ1c3Rpbmc6IGJvb2xlYW4pIHtcbiAgICBsZXQgbmFtZSA9IHRoaXMuY29uc3RhbnRzLnN0cmluZyhfbmFtZSk7XG4gICAgbGV0IG5hbWVzcGFjZSA9IHRoaXMuY29uc3RhbnRzLnN0cmluZyhfbmFtZXNwYWNlKTtcblxuICAgIHRoaXMucHVzaChPcC5EeW5hbWljQXR0ck5TLCBuYW1lLCBuYW1lc3BhY2UsICh0cnVzdGluZyBhcyBhbnkpfDApO1xuICB9XG5cbiAgZHluYW1pY0F0dHIoX25hbWU6IHN0cmluZywgdHJ1c3Rpbmc6IGJvb2xlYW4pIHtcbiAgICBsZXQgbmFtZSA9IHRoaXMuY29uc3RhbnRzLnN0cmluZyhfbmFtZSk7XG4gICAgdGhpcy5wdXNoKE9wLkR5bmFtaWNBdHRyLCBuYW1lLCAodHJ1c3RpbmcgYXMgYW55KXwwKTtcbiAgfVxuXG4gIGNvbW1lbnQoX2NvbW1lbnQ6IHN0cmluZykge1xuICAgIGxldCBjb21tZW50ID0gdGhpcy5jb25zdGFudHMuc3RyaW5nKF9jb21tZW50KTtcbiAgICB0aGlzLnB1c2goT3AuQ29tbWVudCwgY29tbWVudCk7XG4gIH1cblxuICBtb2RpZmllcihfZGVmaW5pdGlvbjogTW9kaWZpZXJNYW5hZ2VyPE9wYXF1ZT4pIHtcbiAgICB0aGlzLnB1c2goT3AuTW9kaWZpZXIsIHRoaXMub3RoZXIoX2RlZmluaXRpb24pKTtcbiAgfVxuXG4gIC8vIGxpc3RzXG5cbiAgcHV0SXRlcmF0b3IoKSB7XG4gICAgdGhpcy5wdXNoKE9wLlB1dEl0ZXJhdG9yKTtcbiAgfVxuXG4gIGVudGVyTGlzdChzdGFydDogc3RyaW5nKSB7XG4gICAgdGhpcy5yZXNlcnZlKE9wLkVudGVyTGlzdCk7XG4gICAgdGhpcy5sYWJlbHMudGFyZ2V0KHRoaXMucG9zLCBPcC5FbnRlckxpc3QsIHN0YXJ0KTtcbiAgfVxuXG4gIGV4aXRMaXN0KCkge1xuICAgIHRoaXMucHVzaChPcC5FeGl0TGlzdCk7XG4gIH1cblxuICBpdGVyYXRlKGJyZWFrczogc3RyaW5nKSB7XG4gICAgdGhpcy5yZXNlcnZlKE9wLkl0ZXJhdGUpO1xuICAgIHRoaXMubGFiZWxzLnRhcmdldCh0aGlzLnBvcywgT3AuSXRlcmF0ZSwgYnJlYWtzKTtcbiAgfVxuXG4gIC8vIGV4cHJlc3Npb25zXG5cbiAgc2V0VmFyaWFibGUoc3ltYm9sOiBudW1iZXIpIHtcbiAgICB0aGlzLnB1c2goT3AuU2V0VmFyaWFibGUsIHN5bWJvbCk7XG4gIH1cblxuICBnZXRWYXJpYWJsZShzeW1ib2w6IG51bWJlcikge1xuICAgIHRoaXMucHVzaChPcC5HZXRWYXJpYWJsZSwgc3ltYm9sKTtcbiAgfVxuXG4gIGdldFByb3BlcnR5KGtleTogc3RyaW5nKSB7XG4gICAgdGhpcy5wdXNoKE9wLkdldFByb3BlcnR5LCB0aGlzLnN0cmluZyhrZXkpKTtcbiAgfVxuXG4gIGdldEJsb2NrKHN5bWJvbDogbnVtYmVyKSB7XG4gICAgdGhpcy5wdXNoKE9wLkdldEJsb2NrLCBzeW1ib2wpO1xuICB9XG5cbiAgaGFzQmxvY2soc3ltYm9sOiBudW1iZXIpIHtcbiAgICB0aGlzLnB1c2goT3AuSGFzQmxvY2ssIHN5bWJvbCk7XG4gIH1cblxuICBoYXNCbG9ja1BhcmFtcyhzeW1ib2w6IG51bWJlcikge1xuICAgIHRoaXMucHVzaChPcC5IYXNCbG9ja1BhcmFtcywgc3ltYm9sKTtcbiAgfVxuXG4gIGNvbmNhdChzaXplOiBudW1iZXIpIHtcbiAgICB0aGlzLnB1c2goT3AuQ29uY2F0LCBzaXplKTtcbiAgfVxuXG4gIGZ1bmN0aW9uKGY6IENsaWVudFNpZGUuRnVuY3Rpb25FeHByZXNzaW9uQ2FsbGJhY2s8T3BhcXVlPikge1xuICAgIHRoaXMucHVzaChPcC5GdW5jdGlvbiwgdGhpcy5mdW5jKGYpKTtcbiAgfVxuXG4gIGxvYWQocmVnaXN0ZXI6IFJlZ2lzdGVyKSB7XG4gICAgdGhpcy5wdXNoKE9wLkxvYWQsIHJlZ2lzdGVyKTtcbiAgfVxuXG4gIGZldGNoKHJlZ2lzdGVyOiBSZWdpc3Rlcikge1xuICAgIHRoaXMucHVzaChPcC5GZXRjaCwgcmVnaXN0ZXIpO1xuICB9XG5cbiAgZHVwKHJlZ2lzdGVyID0gUmVnaXN0ZXIuc3AsIG9mZnNldCA9IDApIHtcbiAgICByZXR1cm4gdGhpcy5wdXNoKE9wLkR1cCwgcmVnaXN0ZXIsIG9mZnNldCk7XG4gIH1cblxuICBwb3AoY291bnQgPSAxKSB7XG4gICAgcmV0dXJuIHRoaXMucHVzaChPcC5Qb3AsIGNvdW50KTtcbiAgfVxuXG4gIC8vIHZtXG5cbiAgcHVzaFJlbW90ZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5wdXNoKE9wLlB1c2hSZW1vdGVFbGVtZW50KTtcbiAgfVxuXG4gIHBvcFJlbW90ZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5wdXNoKE9wLlBvcFJlbW90ZUVsZW1lbnQpO1xuICB9XG5cbiAgbGFiZWwobmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5sYWJlbHMubGFiZWwobmFtZSwgdGhpcy5uZXh0UG9zKTtcbiAgfVxuXG4gIHB1c2hSb290U2NvcGUoc3ltYm9sczogbnVtYmVyLCBiaW5kQ2FsbGVyU2NvcGU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnB1c2goT3AuUm9vdFNjb3BlLCBzeW1ib2xzLCA8YW55PmJpbmRDYWxsZXJTY29wZXwwKTtcbiAgfVxuXG4gIHB1c2hDaGlsZFNjb3BlKCkge1xuICAgIHRoaXMucHVzaChPcC5DaGlsZFNjb3BlKTtcbiAgfVxuXG4gIHBvcFNjb3BlKCkge1xuICAgIHRoaXMucHVzaChPcC5Qb3BTY29wZSk7XG4gIH1cblxuICByZXR1cm5UbyhsYWJlbDogc3RyaW5nKSB7XG4gICAgdGhpcy5yZXNlcnZlKE9wLkltbWVkaWF0ZSk7XG4gICAgdGhpcy5sYWJlbHMudGFyZ2V0KHRoaXMucG9zLCBPcC5JbW1lZGlhdGUsIGxhYmVsKTtcbiAgICB0aGlzLmxvYWQoUmVnaXN0ZXIucmEpO1xuICB9XG5cbiAgcHVzaER5bmFtaWNTY29wZSgpIHtcbiAgICB0aGlzLnB1c2goT3AuUHVzaER5bmFtaWNTY29wZSk7XG4gIH1cblxuICBwb3BEeW5hbWljU2NvcGUoKSB7XG4gICAgdGhpcy5wdXNoKE9wLlBvcER5bmFtaWNTY29wZSk7XG4gIH1cblxuICBwdXNoSW1tZWRpYXRlPFQ+KHZhbHVlOiBUKSB7XG4gICAgdGhpcy5wdXNoKE9wLkNvbnN0YW50LCB0aGlzLm90aGVyKHZhbHVlKSk7XG4gIH1cblxuICBwcmltaXRpdmUoX3ByaW1pdGl2ZTogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCB8IGJvb2xlYW4pIHtcbiAgICBsZXQgZmxhZzogMCB8IDEgfCAyID0gMDtcbiAgICBsZXQgcHJpbWl0aXZlOiBudW1iZXI7XG4gICAgc3dpdGNoICh0eXBlb2YgX3ByaW1pdGl2ZSkge1xuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgcHJpbWl0aXZlID0gX3ByaW1pdGl2ZSBhcyBudW1iZXI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgcHJpbWl0aXZlID0gdGhpcy5zdHJpbmcoX3ByaW1pdGl2ZSBhcyBzdHJpbmcpO1xuICAgICAgICBmbGFnID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgcHJpbWl0aXZlID0gKF9wcmltaXRpdmUgYXMgYW55KSB8IDA7XG4gICAgICAgIGZsYWcgPSAyO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgIC8vIGFzc3VtZSBudWxsXG4gICAgICAgIHByaW1pdGl2ZSA9IDI7XG4gICAgICAgIGZsYWcgPSAyO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3VuZGVmaW5lZCc6XG4gICAgICAgIHByaW1pdGl2ZSA9IDM7XG4gICAgICAgIGZsYWcgPSAyO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBwcmltaXRpdmUgcGFzc2VkIHRvIHB1c2hQcmltaXRpdmUnKTtcbiAgICB9XG5cbiAgICB0aGlzLnB1c2goT3AuUHJpbWl0aXZlUmVmZXJlbmNlLCAoZmxhZyA8PCAzMCkgfCBwcmltaXRpdmUpO1xuICB9XG5cbiAgaGVscGVyKGZ1bmM6IEZ1bmN0aW9uKSB7XG4gICAgdGhpcy5wdXNoKE9wLkhlbHBlciwgdGhpcy5mdW5jKGZ1bmMpKTtcbiAgfVxuXG4gIHB1c2hCbG9jayhibG9jazogT3B0aW9uPEJsb2NrPikge1xuICAgIHRoaXMucHVzaChPcC5QdXNoQmxvY2ssIHRoaXMuYmxvY2soYmxvY2spKTtcbiAgfVxuXG4gIGJpbmREeW5hbWljU2NvcGUoX25hbWVzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMucHVzaChPcC5CaW5kRHluYW1pY1Njb3BlLCB0aGlzLm5hbWVzKF9uYW1lcykpO1xuICB9XG5cbiAgZW50ZXIoYXJnczogbnVtYmVyKSB7XG4gICAgdGhpcy5wdXNoKE9wLkVudGVyLCBhcmdzKTtcbiAgfVxuXG4gIGV4aXQoKSB7XG4gICAgdGhpcy5wdXNoKE9wLkV4aXQpO1xuICB9XG5cbiAgcmV0dXJuKCkge1xuICAgIHRoaXMucHVzaChPcC5SZXR1cm4pO1xuICB9XG5cbiAgcHVzaEZyYW1lKCkge1xuICAgIHRoaXMucHVzaChPcC5QdXNoRnJhbWUpO1xuICB9XG5cbiAgcG9wRnJhbWUoKSB7XG4gICAgdGhpcy5wdXNoKE9wLlBvcEZyYW1lKTtcbiAgfVxuXG4gIGNvbXBpbGVEeW5hbWljQmxvY2soKTogdm9pZCB7XG4gICAgdGhpcy5wdXNoKE9wLkNvbXBpbGVEeW5hbWljQmxvY2spO1xuICB9XG5cbiAgaW52b2tlRHluYW1pYyhpbnZva2VyOiB2bS5EeW5hbWljSW52b2tlcjxTeW1ib2xUYWJsZT4pOiB2b2lkIHtcbiAgICB0aGlzLnB1c2goT3AuSW52b2tlRHluYW1pYywgdGhpcy5vdGhlcihpbnZva2VyKSk7XG4gIH1cblxuICBpbnZva2VTdGF0aWMoYmxvY2s6IEJsb2NrLCBjYWxsZXJDb3VudCA9IDApOiB2b2lkIHtcbiAgICBsZXQgeyBwYXJhbWV0ZXJzIH0gPSBibG9jay5zeW1ib2xUYWJsZTtcbiAgICBsZXQgY2FsbGVlQ291bnQgPSBwYXJhbWV0ZXJzLmxlbmd0aDtcbiAgICBsZXQgY291bnQgPSBNYXRoLm1pbihjYWxsZXJDb3VudCwgY2FsbGVlQ291bnQpO1xuXG4gICAgdGhpcy5wdXNoRnJhbWUoKTtcblxuICAgIGlmIChjb3VudCkge1xuICAgICAgdGhpcy5wdXNoQ2hpbGRTY29wZSgpO1xuXG4gICAgICBmb3IgKGxldCBpPTA7IGk8Y291bnQ7IGkrKykge1xuICAgICAgICB0aGlzLmR1cChSZWdpc3Rlci5mcCwgY2FsbGVyQ291bnQgLSBpKTtcbiAgICAgICAgdGhpcy5zZXRWYXJpYWJsZShwYXJhbWV0ZXJzW2ldKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgX2Jsb2NrID0gdGhpcy5jb25zdGFudHMuYmxvY2soYmxvY2spO1xuICAgIHRoaXMucHVzaChPcC5JbnZva2VTdGF0aWMsIF9ibG9jayk7XG5cbiAgICBpZiAoY291bnQpIHtcbiAgICAgIHRoaXMucG9wU2NvcGUoKTtcbiAgICB9XG5cbiAgICB0aGlzLnBvcEZyYW1lKCk7XG4gIH1cblxuICB0ZXN0KHRlc3RGdW5jOiAnY29uc3QnIHwgJ3NpbXBsZScgfCAnZW52aXJvbm1lbnQnIHwgdm0uVGVzdEZ1bmN0aW9uKSB7XG4gICAgbGV0IF9mdW5jOiB2bS5UZXN0RnVuY3Rpb247XG5cbiAgICBpZiAodGVzdEZ1bmMgPT09ICdjb25zdCcpIHtcbiAgICAgIF9mdW5jID0gdm0uQ29uc3RUZXN0O1xuICAgIH0gZWxzZSBpZiAodGVzdEZ1bmMgPT09ICdzaW1wbGUnKSB7XG4gICAgICBfZnVuYyA9IHZtLlNpbXBsZVRlc3Q7XG4gICAgfSBlbHNlIGlmICh0ZXN0RnVuYyA9PT0gJ2Vudmlyb25tZW50Jykge1xuICAgICAgX2Z1bmMgPSB2bS5FbnZpcm9ubWVudFRlc3Q7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGVzdEZ1bmMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIF9mdW5jID0gdGVzdEZ1bmM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5yZWFjaGFibGUnKTtcbiAgICB9XG5cbiAgICBsZXQgZnVuYyA9IHRoaXMuY29uc3RhbnRzLmZ1bmN0aW9uKF9mdW5jKTtcbiAgICB0aGlzLnB1c2goT3AuVGVzdCwgZnVuYyk7XG4gIH1cblxuICBqdW1wKHRhcmdldDogc3RyaW5nKSB7XG4gICAgdGhpcy5yZXNlcnZlKE9wLkp1bXApO1xuICAgIHRoaXMubGFiZWxzLnRhcmdldCh0aGlzLnBvcywgT3AuSnVtcCwgdGFyZ2V0KTtcbiAgfVxuXG4gIGp1bXBJZih0YXJnZXQ6IHN0cmluZykge1xuICAgIHRoaXMucmVzZXJ2ZShPcC5KdW1wSWYpO1xuICAgIHRoaXMubGFiZWxzLnRhcmdldCh0aGlzLnBvcywgT3AuSnVtcElmLCB0YXJnZXQpO1xuICB9XG5cbiAganVtcFVubGVzcyh0YXJnZXQ6IHN0cmluZykge1xuICAgIHRoaXMucmVzZXJ2ZShPcC5KdW1wVW5sZXNzKTtcbiAgICB0aGlzLmxhYmVscy50YXJnZXQodGhpcy5wb3MsIE9wLkp1bXBVbmxlc3MsIHRhcmdldCk7XG4gIH1cblxuICBzdHJpbmcoX3N0cmluZzogc3RyaW5nKTogQ29uc3RhbnRTdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNvbnN0YW50cy5zdHJpbmcoX3N0cmluZyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbmFtZXMoX25hbWVzOiBzdHJpbmdbXSk6IENvbnN0YW50QXJyYXkge1xuICAgIGxldCBuYW1lcyA9IF9uYW1lcy5tYXAobiA9PiB0aGlzLmNvbnN0YW50cy5zdHJpbmcobikpO1xuICAgIHJldHVybiB0aGlzLmNvbnN0YW50cy5hcnJheShuYW1lcyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3ltYm9scyhzeW1ib2xzOiBudW1iZXJbXSk6IENvbnN0YW50QXJyYXkge1xuICAgIHJldHVybiB0aGlzLmNvbnN0YW50cy5hcnJheShzeW1ib2xzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdGhlcih2YWx1ZTogT3BhcXVlKTogQ29uc3RhbnRPdGhlciB7XG4gICAgcmV0dXJuIHRoaXMuY29uc3RhbnRzLm90aGVyKHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBibG9jayhibG9jazogT3B0aW9uPEJsb2NrPik6IENvbnN0YW50QmxvY2sge1xuICAgIHJldHVybiBibG9jayA/IHRoaXMuY29uc3RhbnRzLmJsb2NrKGJsb2NrKSA6IDA7XG4gIH1cblxuICBwcm90ZWN0ZWQgZnVuYyhmdW5jOiBGdW5jdGlvbik6IENvbnN0YW50RnVuY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLmNvbnN0YW50cy5mdW5jdGlvbihmdW5jKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0NvbXBpbGFibGVFeHByZXNzaW9uPEU+KGV4cHI6IFJlcHJlc2VudHM8RT4pOiBleHByIGlzIENvbXBpbGVzSW50bzxFPiB7XG4gIHJldHVybiBleHByICYmIHR5cGVvZiBleHByWydjb21waWxlJ10gPT09ICdmdW5jdGlvbic7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE9wY29kZUJ1aWxkZXIgZXh0ZW5kcyBCYXNpY09wY29kZUJ1aWxkZXIge1xuICBwdWJsaWMgY29tcG9uZW50OiBJQ29tcG9uZW50QnVpbGRlcjtcblxuICBjb25zdHJ1Y3RvcihlbnY6IEVudmlyb25tZW50LCBtZXRhOiBDb21waWxhdGlvbk1ldGEsIHByb2dyYW06IFByb2dyYW0gPSBlbnYucHJvZ3JhbSkge1xuICAgIHN1cGVyKGVudiwgbWV0YSwgcHJvZ3JhbSk7XG4gICAgdGhpcy5jb21wb25lbnQgPSBuZXcgQ29tcG9uZW50QnVpbGRlcih0aGlzKTtcbiAgfVxuXG4gIGNvbXBpbGVBcmdzKHBhcmFtczogT3B0aW9uPFdpcmVGb3JtYXQuQ29yZS5QYXJhbXM+LCBoYXNoOiBPcHRpb248V2lyZUZvcm1hdC5Db3JlLkhhc2g+LCBzeW50aGV0aWM6IGJvb2xlYW4pIHtcbiAgICBsZXQgcG9zaXRpb25hbCA9IDA7XG5cbiAgICBpZiAocGFyYW1zKSB7XG4gICAgICBwYXJhbXMuZm9yRWFjaChwID0+IGV4cHIocCwgdGhpcykpO1xuICAgICAgcG9zaXRpb25hbCA9IHBhcmFtcy5sZW5ndGg7XG4gICAgfVxuXG4gICAgbGV0IG5hbWVzID0gRU1QVFlfQVJSQVk7XG5cbiAgICBpZiAoaGFzaCkge1xuICAgICAgbmFtZXMgPSBoYXNoWzBdO1xuICAgICAgaGFzaFsxXS5mb3JFYWNoKHYgPT4gZXhwcih2LCB0aGlzKSk7XG4gICAgfVxuXG4gICAgdGhpcy5wdXNoSW1tZWRpYXRlKG5hbWVzKTtcbiAgICB0aGlzLnB1c2hBcmdzKHBvc2l0aW9uYWwsIHN5bnRoZXRpYyk7XG4gIH1cblxuICBjb21waWxlPEU+KGV4cHI6IFJlcHJlc2VudHM8RT4pOiBFIHtcbiAgICBpZiAoaXNDb21waWxhYmxlRXhwcmVzc2lvbihleHByKSkge1xuICAgICAgcmV0dXJuIGV4cHIuY29tcGlsZSh0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGV4cHI7XG4gICAgfVxuICB9XG5cbiAgZ3VhcmRlZENhdXRpb3VzQXBwZW5kKGV4cHJlc3Npb246IFdpcmVGb3JtYXQuRXhwcmVzc2lvbikge1xuICAgIGV4cHIoZXhwcmVzc2lvbiwgdGhpcyk7XG4gICAgdGhpcy5keW5hbWljQ29udGVudChuZXcgY29udGVudC5HdWFyZGVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUoKSk7XG4gIH1cblxuICBndWFyZGVkVHJ1c3RpbmdBcHBlbmQoZXhwcmVzc2lvbjogV2lyZUZvcm1hdC5FeHByZXNzaW9uKSB7XG4gICAgZXhwcihleHByZXNzaW9uLCB0aGlzKTtcbiAgICB0aGlzLmR5bmFtaWNDb250ZW50KG5ldyBjb250ZW50Lkd1YXJkZWRUcnVzdGluZ0FwcGVuZE9wY29kZSgpKTtcbiAgfVxuXG4gIGludm9rZUNvbXBvbmVudChhdHRyczogT3B0aW9uPFJhd0lubGluZUJsb2NrPiwgcGFyYW1zOiBPcHRpb248V2lyZUZvcm1hdC5Db3JlLlBhcmFtcz4sIGhhc2g6IE9wdGlvbjxXaXJlRm9ybWF0LkNvcmUuSGFzaD4sIGJsb2NrOiBPcHRpb248QmxvY2s+LCBpbnZlcnNlOiBPcHRpb248QmxvY2s+ID0gbnVsbCkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZUNvbXBvbmVudFN0YXRlKCk7XG5cbiAgICB0aGlzLmZldGNoKFJlZ2lzdGVyLnMwKTtcbiAgICB0aGlzLmR1cChSZWdpc3Rlci5zcCwgMSk7XG4gICAgdGhpcy5sb2FkKFJlZ2lzdGVyLnMwKTtcblxuICAgIHRoaXMucHVzaEJsb2NrKGJsb2NrKTtcbiAgICB0aGlzLnB1c2hCbG9jayhpbnZlcnNlKTtcblxuICAgIHRoaXMuY29tcGlsZUFyZ3MocGFyYW1zLCBoYXNoLCBmYWxzZSk7XG4gICAgdGhpcy5wcmVwYXJlQXJncyhSZWdpc3Rlci5zMCk7XG5cbiAgICB0aGlzLmJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24oKTtcbiAgICB0aGlzLnB1c2hEeW5hbWljU2NvcGUoKTtcbiAgICB0aGlzLmNyZWF0ZUNvbXBvbmVudChSZWdpc3Rlci5zMCwgdHJ1ZSwgaW52ZXJzZSA9PT0gbnVsbCk7XG4gICAgdGhpcy5yZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3IoUmVnaXN0ZXIuczApO1xuXG4gICAgdGhpcy5nZXRDb21wb25lbnRTZWxmKFJlZ2lzdGVyLnMwKTtcbiAgICB0aGlzLmdldENvbXBvbmVudExheW91dChSZWdpc3Rlci5zMCk7XG4gICAgdGhpcy5pbnZva2VEeW5hbWljKG5ldyBJbnZva2VEeW5hbWljTGF5b3V0KGF0dHJzICYmIGF0dHJzLnNjYW4oKSkpO1xuICAgIHRoaXMucG9wRnJhbWUoKTtcblxuICAgIHRoaXMucG9wU2NvcGUoKTtcbiAgICB0aGlzLnBvcER5bmFtaWNTY29wZSgpO1xuICAgIHRoaXMuY29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24oKTtcblxuICAgIHRoaXMubG9hZChSZWdpc3Rlci5zMCk7XG4gIH1cblxuICB0ZW1wbGF0ZShibG9jazogT3B0aW9uPFdpcmVGb3JtYXQuU2VyaWFsaXplZElubGluZUJsb2NrPik6IE9wdGlvbjxSYXdJbmxpbmVCbG9jaz4ge1xuICAgIGlmICghYmxvY2spIHJldHVybiBudWxsO1xuICAgIHJldHVybiBuZXcgUmF3SW5saW5lQmxvY2sodGhpcy5lbnYsIHRoaXMubWV0YSwgYmxvY2suc3RhdGVtZW50cywgYmxvY2sucGFyYW1ldGVycyk7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgQmxvY2tDYWxsYmFjayA9IChkc2w6IE9wY29kZUJ1aWxkZXIsIEJFR0lOOiBMYWJlbCwgRU5EOiBMYWJlbCkgPT4gdm9pZDtcbiJdfQ==

@@ -120,9 +120,2 @@ import { APPEND_OPCODES, UpdatingOpcode } from '../../opcodes';

}
toJSON() {
return {
guid: this._guid,
type: this.type,
args: [JSON.stringify(this.name)]
};
}
}

@@ -144,2 +137,2 @@ export class DidUpdateLayoutOpcode extends UpdatingOpcode {

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQWtCLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTlCLE9BQU8sSUFBK0IsTUFBTSxvQkFBb0IsQ0FBQztBQUlqRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFFbkQsT0FBTyxFQUNMLFlBQVksRUFDWixjQUFjLEVBR2QsT0FBTyxFQUNQLE9BQU8sRUFDUixNQUFNLG9CQUFvQixDQUFDO0FBRTVCLGNBQWMsQ0FBQyxHQUFHLENBQUMsNkJBQXVCLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFO0lBQ25FLElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUE4QixXQUFXLENBQUMsQ0FBQztJQUNqRixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBRXJCLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkIsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDakMsQ0FBQyxDQUFDLENBQUM7QUFFSCxjQUFjLENBQUMsR0FBRyxDQUFDLG9DQUE4QixFQUFFLEVBQUU7SUFDbkQsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUNyQixJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUF1RCxDQUFDO0lBQ2pGLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxTQUFTLEdBQUcsSUFBSSxjQUFjLENBQThCLFNBQVMsQ0FBQyxDQUFDO0lBQ3hHLElBQUksVUFBVSxHQUFHLEtBQUssR0FBRyxLQUFLLENBQUMs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T0FBb0MsRUFDcEMsU0FBb0IsRUFDcEIsTUFBYztRQUV0QixLQUFLLEVBQUUsQ0FBQztRQUpBLFlBQU8sR0FBUCxPQUFPLENBQTZCO1FBQ3BDLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDcEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQU5qQixTQUFJLEdBQUcsbUJBQW1CLENBQUM7UUFDM0IsUUFBRyxHQUFRLFlBQVksQ0FBQztJQVEvQixDQUFDO0lBRUQsUUFBUSxDQUFDLEVBQWM7UUFDckIsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBRTFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRTNDLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN2QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBUFBFTkRfT1BDT0RFUywgT3AsIE9wY29kZUpTT04sIFVwZGF0aW5nT3Bjb2RlIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBBc3NlcnQgfSBmcm9tICcuL3ZtJztcbmltcG9ydCB7IFVwZGF0aW5nVk0gfSBmcm9tICcuLi8uLi92bSc7XG5pbXBvcnQgQVJHUywgeyBBcmd1bWVudHMsIElBcmd1bWVudHMgfSBmcm9tICcuLi8uLi92bS9hcmd1bWVudHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBDb21wb25lbnRNYW5hZ2VyLCBDb21wb25lbnREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50L2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRHluYW1pY1Njb3BlIH0gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IEJvdW5kcyBmcm9tICcuLi8uLi9ib3VuZHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50RWxlbWVudE9wZXJhdGlvbnMgfSBmcm9tICcuL2RvbSc7XG5pbXBvcnQgeyBPcGFxdWUgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7XG4gIENPTlNUQU5UX1RBRyxcbiAgUmVmZXJlbmNlQ2FjaGUsXG4gIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsXG4gIFRhZyxcbiAgY29tYmluZSxcbiAgaXNDb25zdFxufSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUHVzaENvbXBvbmVudE1hbmFnZXIsICh2bSwgeyBvcDE6IF9kZWZpbml0aW9uIH0pID0+IHtcbiAgbGV0IGRlZmluaXRpb24gPSB2bS5jb25zdGFudHMuZ2V0T3RoZXI8Q29tcG9uZW50RGVmaW5pdGlvbjxPcGFxdWU+PihfZGVmaW5pdGlvbik7XG4gIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuXG4gIHN0YWNrLnB1c2goZGVmaW5pdGlvbik7XG4gIHN0YWNrLnB1c2goZGVmaW5pdGlvbi5tYW5hZ2VyKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyLCB2bSA9PiB7XG4gIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICBsZXQgcmVmZXJlbmNlID0gc3RhY2sucG9wPFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8Q29tcG9uZW50RGVmaW5pdGlvbjxPcGFxdWU+Pj4oKTtcbiAgbGV0IGNhY2hlID0gaXNDb25zdChyZWZlcmVuY2UpID8gdW5kZWZpbmVkIDogbmV3IFJlZmVyZW5jZUNhY2hlPENvbXBvbmVudERlZmluaXRpb248T3BhcXVlPj4ocmVmZXJlbmNlKTtcbiAgbGV0IGRlZmluaXRpb24gPSBjYWNoZSA/IGNhY2hlLnBlZWsoKSA6IHJlZmVyZW5jZS52YWx1ZSgpO1xuXG4gIHN0YWNrLnB1c2goZGVmaW5pdGlvbik7XG4gIHN0YWNrLnB1c2goZGVmaW5pdGlvbi5tYW5hZ2VyKTtcblxuICBpZiAoY2FjaGUpIHtcbiAgICB2bS51cGRhdGVXaXRoKG5ldyBBc3NlcnQoY2FjaGUpKTtcbiAgfVxufSk7XG5cbmludGVyZmFjZSBJbml0aWFsQ29tcG9uZW50U3RhdGU8VD4ge1xuICBkZWZpbml0aW9uOiBDb21wb25lbnREZWZpbml0aW9uPFQ+O1xuICBtYW5hZ2VyOiBDb21wb25lbnRNYW5hZ2VyPFQ+O1xuICBjb21wb25lbnQ6IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50U3RhdGU8VD4ge1xuICBkZWZpbml0aW9uOiBDb21wb25lbnREZWZpbml0aW9uPFQ+O1xuICBtYW5hZ2VyOiBDb21wb25lbnRNYW5hZ2VyPFQ+O1xuICBjb21wb25lbnQ6IFQ7XG59XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5Jbml0aWFsaXplQ29tcG9uZW50U3RhdGUsIHZtID0+IHtcbiAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG5cbiAgbGV0IG1hbmFnZXIgPSBzdGFjay5wb3AoKTtcbiAgbGV0IGRlZmluaXRpb24gPSBzdGFjay5wb3AoKTtcblxuICBzdGFjay5wdXNoKHsgZGVmaW5pdGlvbiwgbWFuYWdlciwgY29tcG9uZW50OiBudWxsIH0pO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5QdXNoQXJncywgKHZtLCB7IG9wMTogcG9zaXRpb25hbCwgb3AyOiBzeW50aGV0aWMgfSkgPT4ge1xuICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgQVJHUy5zZXR1cChzdGFjaywgcG9zaXRpb25hbCwgISFzeW50aGV0aWMpO1xuICBzdGFjay5wdXNoKEFSR1MpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5QcmVwYXJlQXJncywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gIGxldCB7IGRlZmluaXRpb24sIG1hbmFnZXIgfSA9IHZtLmZldGNoVmFsdWU8SW5pdGlhbENvbXBvbmVudFN0YXRlPE9wYXF1ZT4+KF9zdGF0ZSk7XG4gIGxldCBhcmdzID0gc3RhY2sucG9wPEFyZ3VtZW50cz4oKTtcblxuICBsZXQgcHJlcGFyZWRBcmdzID0gbWFuYWdlci5wcmVwYXJlQXJncyhkZWZpbml0aW9uLCBhcmdzKTtcblxuICBpZiAocHJlcGFyZWRBcmdzKSB7XG4gICAgYXJncy5jbGVhcigpO1xuXG4gICAgbGV0IHsgcG9zaXRpb25hbCwgbmFtZWQgfSA9IHByZXBhcmVkQXJncztcblxuICAgIGxldCBwb3NpdGlvbmFsQ291bnQgPSBwb3NpdGlvbmFsLmxlbmd0aDtcblxuICAgIGZvciAobGV0IGk9MDsgaTxwb3NpdGlvbmFsQ291bnQ7IGkrKykge1xuICAgICAgc3RhY2sucHVzaChwb3NpdGlvbmFsW2ldKTtcbiAgICB9XG5cbiAgICBsZXQgbmFtZXMgPSBPYmplY3Qua2V5cyhuYW1lZCk7XG4gICAgbGV0IG5hbWVkQ291bnQgPSBuYW1lcy5sZW5ndGg7XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8bmFtZWRDb3VudDsgaSsrKSB7XG4gICAgICBzdGFjay5wdXNoKG5hbWVkW25hbWVzW2ldXSk7XG4gICAgfVxuXG4gICAgc3RhY2sucHVzaChuYW1lcyk7XG4gICAgYXJncy5zZXR1cChzdGFjaywgcG9zaXRpb25hbENvdW50LCB0cnVlKTtcbiAgfVxuXG4gIHN0YWNrLnB1c2goYXJncyk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkNyZWF0ZUNvbXBvbmVudCwgKHZtLCB7IG9wMTogZmxhZ3MsIG9wMjogX3N0YXRlIH0pID0+IHtcbiAgbGV0IGRlZmluaXRpb24sIG1hbmFnZXI7XG4gIGxldCBhcmdzID0gdm0uc3RhY2sucG9wPElBcmd1bWVudHM+KCk7XG4gIGxldCBkeW5hbWljU2NvcGUgPSB2bS5keW5hbWljU2NvcGUoKTtcbiAgbGV0IHN0YXRlID0geyBkZWZpbml0aW9uLCBtYW5hZ2VyIH0gPSB2bS5mZXRjaFZhbHVlPEluaXRpYWxDb21wb25lbnRTdGF0ZTxPcGFxdWU+Pihfc3RhdGUpO1xuXG4gIGxldCBoYXNEZWZhdWx0QmxvY2sgPSBmbGFncyAmIDBiMDE7XG5cbiAgbGV0IGNvbXBvbmVudCA9IG1hbmFnZXIuY3JlYXRlKHZtLmVudiwgZGVmaW5pdGlvbiwgYXJncywgZHluYW1pY1Njb3BlLCB2bS5nZXRTZWxmKCksICEhaGFzRGVmYXVsdEJsb2NrKTtcbiAgKHN0YXRlIGFzIENvbXBvbmVudFN0YXRlPHR5cGVvZiBjb21wb25lbnQ+KS5jb21wb25lbnQgPSBjb21wb25lbnQ7XG5cbiAgdm0udXBkYXRlV2l0aChuZXcgVXBkYXRlQ29tcG9uZW50T3Bjb2RlKGFyZ3MudGFnLCBkZWZpbml0aW9uLm5hbWUsIGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlKSk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlJlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvciwgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlPENvbXBvbmVudFN0YXRlPE9wYXF1ZT4+KF9zdGF0ZSk7XG5cbiAgbGV0IGRlc3RydWN0b3IgPSBtYW5hZ2VyLmdldERlc3RydWN0b3IoY29tcG9uZW50KTtcbiAgaWYgKGRlc3RydWN0b3IpIHZtLm5ld0Rlc3Ryb3lhYmxlKGRlc3RydWN0b3IpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5CZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uLCB2bSA9PiB7XG4gIHZtLmJlZ2luQ2FjaGVHcm91cCgpO1xuICB2bS5lbGVtZW50cygpLnB1c2hTaW1wbGVCbG9jaygpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5QdXNoQ29tcG9uZW50T3BlcmF0aW9ucywgdm0gPT4ge1xuICB2bS5zdGFjay5wdXNoKG5ldyBDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyh2bS5lbnYpKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuRGlkQ3JlYXRlRWxlbWVudCwgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlPENvbXBvbmVudFN0YXRlPE9wYXF1ZT4+KF9zdGF0ZSk7XG5cbiAgbGV0IGFjdGlvbiA9ICdEaWRDcmVhdGVFbGVtZW50T3Bjb2RlI2V2YWx1YXRlJztcbiAgbWFuYWdlci5kaWRDcmVhdGVFbGVtZW50KGNvbXBvbmVudCwgdm0uZWxlbWVudHMoKS5leHBlY3RDb25zdHJ1Y3RpbmcoYWN0aW9uKSwgdm0uZWxlbWVudHMoKS5leHBlY3RPcGVyYXRpb25zKGFjdGlvbikpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5HZXRDb21wb25lbnRTZWxmLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICBsZXQgc3RhdGUgPSB2bS5mZXRjaFZhbHVlPENvbXBvbmVudFN0YXRlPE9wYXF1ZT4+KF9zdGF0ZSk7XG4gIHZtLnN0YWNrLnB1c2goc3RhdGUubWFuYWdlci5nZXRTZWxmKHN0YXRlLmNvbXBvbmVudCkpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5HZXRDb21wb25lbnRMYXlvdXQsICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gIGxldCB7IG1hbmFnZXIsIGRlZmluaXRpb24sIGNvbXBvbmVudCB9ID0gdm0uZmV0Y2hWYWx1ZTxDb21wb25lbnRTdGF0ZTxPcGFxdWU+Pihfc3RhdGUpO1xuICB2bS5zdGFjay5wdXNoKG1hbmFnZXIubGF5b3V0Rm9yKGRlZmluaXRpb24sIGNvbXBvbmVudCwgdm0uZW52KSk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkRpZFJlbmRlckxheW91dCwgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlPENvbXBvbmVudFN0YXRlPE9wYXF1ZT4+KF9zdGF0ZSk7XG4gIGxldCBib3VuZHMgPSB2bS5lbGVtZW50cygpLnBvcEJsb2NrKCk7XG5cbiAgbWFuYWdlci5kaWRSZW5kZXJMYXlvdXQoY29tcG9uZW50LCBib3VuZHMpO1xuXG4gIHZtLmVudi5kaWRDcmVhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcblxuICB2bS51cGRhdGVXaXRoKG5ldyBEaWRVcGRhdGVMYXlvdXRPcGNvZGUobWFuYWdlciwgY29tcG9uZW50LCBib3VuZHMpKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24sIHZtID0+IHZtLmNvbW1pdENhY2hlR3JvdXAoKSk7XG5cbmV4cG9ydCBjbGFzcyBVcGRhdGVDb21wb25lbnRPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJ1cGRhdGUtY29tcG9uZW50XCI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgdGFnOiBUYWcsXG4gICAgcHJpdmF0ZSBuYW1lOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBjb21wb25lbnQ6IENvbXBvbmVudCxcbiAgICBwcml2YXRlIG1hbmFnZXI6IENvbXBvbmVudE1hbmFnZXI8Q29tcG9uZW50PixcbiAgICBwcml2YXRlIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlLFxuICApIHtcbiAgICBzdXBlcigpO1xuXG4gICAgbGV0IGNvbXBvbmVudFRhZyA9IG1hbmFnZXIuZ2V0VGFnKGNvbXBvbmVudCk7XG5cbiAgICBpZiAoY29tcG9uZW50VGFnKSB7XG4gICAgICB0aGlzLnRhZyA9IGNvbWJpbmUoW3RhZywgY29tcG9uZW50VGFnXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGFnID0gdGFnO1xuICAgIH1cbiAgfVxuXG4gIGV2YWx1YXRlKF92bTogVXBkYXRpbmdWTSkge1xuICAgIGxldCB7IGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlIH0gPSB0aGlzO1xuXG4gICAgbWFuYWdlci51cGRhdGUoY29tcG9uZW50LCBkeW5hbWljU2NvcGUpO1xuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIHJldHVybiB7XG4gICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgYXJnczogW0pTT04uc3RyaW5naWZ5KHRoaXMubmFtZSldXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGlkVXBkYXRlTGF5b3V0T3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwiZGlkLXVwZGF0ZS1sYXlvdXRcIjtcbiAgcHVibGljIHRhZzogVGFnID0gQ09OU1RBTlRfVEFHO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbWFuYWdlcjogQ29tcG9uZW50TWFuYWdlcjxDb21wb25lbnQ+LFxuICAgIHByaXZhdGUgY29tcG9uZW50OiBDb21wb25lbnQsXG4gICAgcHJpdmF0ZSBib3VuZHM6IEJvdW5kc1xuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICBsZXQgeyBtYW5hZ2VyLCBjb21wb25lbnQsIGJvdW5kcyB9ID0gdGhpcztcblxuICAgIG1hbmFnZXIuZGlkVXBkYXRlTGF5b3V0KGNvbXBvbmVudCwgYm91bmRzKTtcblxuICAgIHZtLmVudi5kaWRVcGRhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQWtCLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTlCLE9BQU8sSUFBK0IsTUFBTSxvQkFBb0IsQ0FBQztBQUlqRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFFbkQsT0FBTyxFQUNMLFlBQVksRUFDWixjQUFjLEVBR2QsT0FBTyxFQUNQLE9BQU8sRUFDUixNQUFNLG9CQUFvQixDQUFDO0FBRTVCLGNBQWMsQ0FBQyxHQUFHLENBQUMsNkJBQXVCLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFO0lBQ25FLElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUE4QixXQUFXLENBQUMsQ0FBQztJQUNqRixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBRXJCLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkIsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDakMsQ0FBQyxDQUFDLENBQUM7QUFFSCxjQUFjLENBQUMsR0FBRyxDQUFDLG9DQUE4QixFQUFFLEVBQUU7SUFDbkQsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUNyQixJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUF1RCxDQUFDO0lBQ2pGLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxTQUFTLEdBQUcsSUFBSSxjQUFjLENBQThCLFNBQVMsQ0FBQyxDQUFDO0lBQ3hHLElBQUksVUFBVSxHQUFHLEtBQUssR0FBRyxLQUFLLENBQUMs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WUFBWSxDQUFDO0lBUS9CLENBQUM7SUFFRCxRQUFRLENBQUMsRUFBYztRQUNyQixJQUFJLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFFMUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFM0MsRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUEVORF9PUENPREVTLCBPcCwgT3Bjb2RlSlNPTiwgVXBkYXRpbmdPcGNvZGUgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IEFzc2VydCB9IGZyb20gJy4vdm0nO1xuaW1wb3J0IHsgVXBkYXRpbmdWTSB9IGZyb20gJy4uLy4uL3ZtJztcbmltcG9ydCBBUkdTLCB7IEFyZ3VtZW50cywgSUFyZ3VtZW50cyB9IGZyb20gJy4uLy4uL3ZtL2FyZ3VtZW50cyc7XG5pbXBvcnQgeyBDb21wb25lbnQsIENvbXBvbmVudE1hbmFnZXIsIENvbXBvbmVudERlZmluaXRpb24gfSBmcm9tICcuLi8uLi9jb21wb25lbnQvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBEeW5hbWljU2NvcGUgfSBmcm9tICcuLi8uLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgQm91bmRzIGZyb20gJy4uLy4uL2JvdW5kcyc7XG5pbXBvcnQgeyBDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyB9IGZyb20gJy4vZG9tJztcbmltcG9ydCB7IE9wYXF1ZSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHtcbiAgQ09OU1RBTlRfVEFHLFxuICBSZWZlcmVuY2VDYWNoZSxcbiAgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSxcbiAgVGFnLFxuICBjb21iaW5lLFxuICBpc0NvbnN0XG59IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5QdXNoQ29tcG9uZW50TWFuYWdlciwgKHZtLCB7IG9wMTogX2RlZmluaXRpb24gfSkgPT4ge1xuICBsZXQgZGVmaW5pdGlvbiA9IHZtLmNvbnN0YW50cy5nZXRPdGhlcjxDb21wb25lbnREZWZpbml0aW9uPE9wYXF1ZT4+KF9kZWZpbml0aW9uKTtcbiAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG5cbiAgc3RhY2sucHVzaChkZWZpbml0aW9uKTtcbiAgc3RhY2sucHVzaChkZWZpbml0aW9uLm1hbmFnZXIpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5QdXNoRHluYW1pY0NvbXBvbmVudE1hbmFnZXIsIHZtID0+IHtcbiAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gIGxldCByZWZlcmVuY2UgPSBzdGFjay5wb3A8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxDb21wb25lbnREZWZpbml0aW9uPE9wYXF1ZT4+PigpO1xuICBsZXQgY2FjaGUgPSBpc0NvbnN0KHJlZmVyZW5jZSkgPyB1bmRlZmluZWQgOiBuZXcgUmVmZXJlbmNlQ2FjaGU8Q29tcG9uZW50RGVmaW5pdGlvbjxPcGFxdWU+PihyZWZlcmVuY2UpO1xuICBsZXQgZGVmaW5pdGlvbiA9IGNhY2hlID8gY2FjaGUucGVlaygpIDogcmVmZXJlbmNlLnZhbHVlKCk7XG5cbiAgc3RhY2sucHVzaChkZWZpbml0aW9uKTtcbiAgc3RhY2sucHVzaChkZWZpbml0aW9uLm1hbmFnZXIpO1xuXG4gIGlmIChjYWNoZSkge1xuICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICB9XG59KTtcblxuaW50ZXJmYWNlIEluaXRpYWxDb21wb25lbnRTdGF0ZTxUPiB7XG4gIGRlZmluaXRpb246IENvbXBvbmVudERlZmluaXRpb248VD47XG4gIG1hbmFnZXI6IENvbXBvbmVudE1hbmFnZXI8VD47XG4gIGNvbXBvbmVudDogbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRTdGF0ZTxUPiB7XG4gIGRlZmluaXRpb246IENvbXBvbmVudERlZmluaXRpb248VD47XG4gIG1hbmFnZXI6IENvbXBvbmVudE1hbmFnZXI8VD47XG4gIGNvbXBvbmVudDogVDtcbn1cblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkluaXRpYWxpemVDb21wb25lbnRTdGF0ZSwgdm0gPT4ge1xuICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcblxuICBsZXQgbWFuYWdlciA9IHN0YWNrLnBvcCgpO1xuICBsZXQgZGVmaW5pdGlvbiA9IHN0YWNrLnBvcCgpO1xuXG4gIHN0YWNrLnB1c2goeyBkZWZpbml0aW9uLCBtYW5hZ2VyLCBjb21wb25lbnQ6IG51bGwgfSk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlB1c2hBcmdzLCAodm0sIHsgb3AxOiBwb3NpdGlvbmFsLCBvcDI6IHN5bnRoZXRpYyB9KSA9PiB7XG4gIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICBBUkdTLnNldHVwKHN0YWNrLCBwb3NpdGlvbmFsLCAhIXN5bnRoZXRpYyk7XG4gIHN0YWNrLnB1c2goQVJHUyk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlByZXBhcmVBcmdzLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgbGV0IHsgZGVmaW5pdGlvbiwgbWFuYWdlciB9ID0gdm0uZmV0Y2hWYWx1ZTxJbml0aWFsQ29tcG9uZW50U3RhdGU8T3BhcXVlPj4oX3N0YXRlKTtcbiAgbGV0IGFyZ3MgPSBzdGFjay5wb3A8QXJndW1lbnRzPigpO1xuXG4gIGxldCBwcmVwYXJlZEFyZ3MgPSBtYW5hZ2VyLnByZXBhcmVBcmdzKGRlZmluaXRpb24sIGFyZ3MpO1xuXG4gIGlmIChwcmVwYXJlZEFyZ3MpIHtcbiAgICBhcmdzLmNsZWFyKCk7XG5cbiAgICBsZXQgeyBwb3NpdGlvbmFsLCBuYW1lZCB9ID0gcHJlcGFyZWRBcmdzO1xuXG4gICAgbGV0IHBvc2l0aW9uYWxDb3VudCA9IHBvc2l0aW9uYWwubGVuZ3RoO1xuXG4gICAgZm9yIChsZXQgaT0wOyBpPHBvc2l0aW9uYWxDb3VudDsgaSsrKSB7XG4gICAgICBzdGFjay5wdXNoKHBvc2l0aW9uYWxbaV0pO1xuICAgIH1cblxuICAgIGxldCBuYW1lcyA9IE9iamVjdC5rZXlzKG5hbWVkKTtcbiAgICBsZXQgbmFtZWRDb3VudCA9IG5hbWVzLmxlbmd0aDtcblxuICAgIGZvciAobGV0IGk9MDsgaTxuYW1lZENvdW50OyBpKyspIHtcbiAgICAgIHN0YWNrLnB1c2gobmFtZWRbbmFtZXNbaV1dKTtcbiAgICB9XG5cbiAgICBzdGFjay5wdXNoKG5hbWVzKTtcbiAgICBhcmdzLnNldHVwKHN0YWNrLCBwb3NpdGlvbmFsQ291bnQsIHRydWUpO1xuICB9XG5cbiAgc3RhY2sucHVzaChhcmdzKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuQ3JlYXRlQ29tcG9uZW50LCAodm0sIHsgb3AxOiBmbGFncywgb3AyOiBfc3RhdGUgfSkgPT4ge1xuICBsZXQgZGVmaW5pdGlvbiwgbWFuYWdlcjtcbiAgbGV0IGFyZ3MgPSB2bS5zdGFjay5wb3A8SUFyZ3VtZW50cz4oKTtcbiAgbGV0IGR5bmFtaWNTY29wZSA9IHZtLmR5bmFtaWNTY29wZSgpO1xuICBsZXQgc3RhdGUgPSB7IGRlZmluaXRpb24sIG1hbmFnZXIgfSA9IHZtLmZldGNoVmFsdWU8SW5pdGlhbENvbXBvbmVudFN0YXRlPE9wYXF1ZT4+KF9zdGF0ZSk7XG5cbiAgbGV0IGhhc0RlZmF1bHRCbG9jayA9IGZsYWdzICYgMGIwMTtcblxuICBsZXQgY29tcG9uZW50ID0gbWFuYWdlci5jcmVhdGUodm0uZW52LCBkZWZpbml0aW9uLCBhcmdzLCBkeW5hbWljU2NvcGUsIHZtLmdldFNlbGYoKSwgISFoYXNEZWZhdWx0QmxvY2spO1xuICAoc3RhdGUgYXMgQ29tcG9uZW50U3RhdGU8dHlwZW9mIGNvbXBvbmVudD4pLmNvbXBvbmVudCA9IGNvbXBvbmVudDtcblxuICB2bS51cGRhdGVXaXRoKG5ldyBVcGRhdGVDb21wb25lbnRPcGNvZGUoYXJncy50YWcsIGRlZmluaXRpb24ubmFtZSwgY29tcG9uZW50LCBtYW5hZ2VyLCBkeW5hbWljU2NvcGUpKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICBsZXQgeyBtYW5hZ2VyLCBjb21wb25lbnQgfSA9IHZtLmZldGNoVmFsdWU8Q29tcG9uZW50U3RhdGU8T3BhcXVlPj4oX3N0YXRlKTtcblxuICBsZXQgZGVzdHJ1Y3RvciA9IG1hbmFnZXIuZ2V0RGVzdHJ1Y3Rvcihjb21wb25lbnQpO1xuICBpZiAoZGVzdHJ1Y3Rvcikgdm0ubmV3RGVzdHJveWFibGUoZGVzdHJ1Y3Rvcik7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24sIHZtID0+IHtcbiAgdm0uYmVnaW5DYWNoZUdyb3VwKCk7XG4gIHZtLmVsZW1lbnRzKCkucHVzaFNpbXBsZUJsb2NrKCk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlB1c2hDb21wb25lbnRPcGVyYXRpb25zLCB2bSA9PiB7XG4gIHZtLnN0YWNrLnB1c2gobmV3IENvbXBvbmVudEVsZW1lbnRPcGVyYXRpb25zKHZtLmVudikpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5EaWRDcmVhdGVFbGVtZW50LCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICBsZXQgeyBtYW5hZ2VyLCBjb21wb25lbnQgfSA9IHZtLmZldGNoVmFsdWU8Q29tcG9uZW50U3RhdGU8T3BhcXVlPj4oX3N0YXRlKTtcblxuICBsZXQgYWN0aW9uID0gJ0RpZENyZWF0ZUVsZW1lbnRPcGNvZGUjZXZhbHVhdGUnO1xuICBtYW5hZ2VyLmRpZENyZWF0ZUVsZW1lbnQoY29tcG9uZW50LCB2bS5lbGVtZW50cygpLmV4cGVjdENvbnN0cnVjdGluZyhhY3Rpb24pLCB2bS5lbGVtZW50cygpLmV4cGVjdE9wZXJhdGlvbnMoYWN0aW9uKSk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkdldENvbXBvbmVudFNlbGYsICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gIGxldCBzdGF0ZSA9IHZtLmZldGNoVmFsdWU8Q29tcG9uZW50U3RhdGU8T3BhcXVlPj4oX3N0YXRlKTtcbiAgdm0uc3RhY2sucHVzaChzdGF0ZS5tYW5hZ2VyLmdldFNlbGYoc3RhdGUuY29tcG9uZW50KSk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkdldENvbXBvbmVudExheW91dCwgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgbGV0IHsgbWFuYWdlciwgZGVmaW5pdGlvbiwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlPENvbXBvbmVudFN0YXRlPE9wYXF1ZT4+KF9zdGF0ZSk7XG4gIHZtLnN0YWNrLnB1c2gobWFuYWdlci5sYXlvdXRGb3IoZGVmaW5pdGlvbiwgY29tcG9uZW50LCB2bS5lbnYpKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuRGlkUmVuZGVyTGF5b3V0LCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICBsZXQgeyBtYW5hZ2VyLCBjb21wb25lbnQgfSA9IHZtLmZldGNoVmFsdWU8Q29tcG9uZW50U3RhdGU8T3BhcXVlPj4oX3N0YXRlKTtcbiAgbGV0IGJvdW5kcyA9IHZtLmVsZW1lbnRzKCkucG9wQmxvY2soKTtcblxuICBtYW5hZ2VyLmRpZFJlbmRlckxheW91dChjb21wb25lbnQsIGJvdW5kcyk7XG5cbiAgdm0uZW52LmRpZENyZWF0ZShjb21wb25lbnQsIG1hbmFnZXIpO1xuXG4gIHZtLnVwZGF0ZVdpdGgobmV3IERpZFVwZGF0ZUxheW91dE9wY29kZShtYW5hZ2VyLCBjb21wb25lbnQsIGJvdW5kcykpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5Db21taXRDb21wb25lbnRUcmFuc2FjdGlvbiwgdm0gPT4gdm0uY29tbWl0Q2FjaGVHcm91cCgpKTtcblxuZXhwb3J0IGNsYXNzIFVwZGF0ZUNvbXBvbmVudE9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcInVwZGF0ZS1jb21wb25lbnRcIjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICB0YWc6IFRhZyxcbiAgICBwcml2YXRlIG5hbWU6IHN0cmluZyxcbiAgICBwcml2YXRlIGNvbXBvbmVudDogQ29tcG9uZW50LFxuICAgIHByaXZhdGUgbWFuYWdlcjogQ29tcG9uZW50TWFuYWdlcjxDb21wb25lbnQ+LFxuICAgIHByaXZhdGUgZHluYW1pY1Njb3BlOiBEeW5hbWljU2NvcGUsXG4gICkge1xuICAgIHN1cGVyKCk7XG5cbiAgICBsZXQgY29tcG9uZW50VGFnID0gbWFuYWdlci5nZXRUYWcoY29tcG9uZW50KTtcblxuICAgIGlmIChjb21wb25lbnRUYWcpIHtcbiAgICAgIHRoaXMudGFnID0gY29tYmluZShbdGFnLCBjb21wb25lbnRUYWddKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50YWcgPSB0YWc7XG4gICAgfVxuICB9XG5cbiAgZXZhbHVhdGUoX3ZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgbGV0IHsgY29tcG9uZW50LCBtYW5hZ2VyLCBkeW5hbWljU2NvcGUgfSA9IHRoaXM7XG5cbiAgICBtYW5hZ2VyLnVwZGF0ZShjb21wb25lbnQsIGR5bmFtaWNTY29wZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERpZFVwZGF0ZUxheW91dE9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImRpZC11cGRhdGUtbGF5b3V0XCI7XG4gIHB1YmxpYyB0YWc6IFRhZyA9IENPTlNUQU5UX1RBRztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1hbmFnZXI6IENvbXBvbmVudE1hbmFnZXI8Q29tcG9uZW50PixcbiAgICBwcml2YXRlIGNvbXBvbmVudDogQ29tcG9uZW50LFxuICAgIHByaXZhdGUgYm91bmRzOiBCb3VuZHNcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50LCBib3VuZHMgfSA9IHRoaXM7XG5cbiAgICBtYW5hZ2VyLmRpZFVwZGF0ZUxheW91dChjb21wb25lbnQsIGJvdW5kcyk7XG5cbiAgICB2bS5lbnYuZGlkVXBkYXRlKGNvbXBvbmVudCwgbWFuYWdlcik7XG4gIH1cbn1cbiJdfQ==

@@ -169,10 +169,2 @@ import { isSafeString, isNode, isString, cautiousInsert, trustingInsert } from '../../upsert';

}
toJSON() {
let { _guid: guid, type, cache } = this;
return {
guid,
type,
details: { lastValue: JSON.stringify(cache.peek()) }
};
}
}

@@ -231,16 +223,2 @@ class GuardedUpdateOpcode extends UpdateOpcode {

}
toJSON() {
let { _guid: guid, type, deopted } = this;
if (deopted) {
return {
guid,
type,
deopted: true,
children: [deopted.toJSON()]
};
}
else {
return super.toJSON();
}
}
}

@@ -345,2 +323,2 @@ export class OptimizedCautiousAppendOpcode extends AppendDynamicOpcode {

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvbnRlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBZSxFQUtiLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUVSLGNBQWMsRUFDZCxjQUFjLEVBQ2YsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFbkUsT0FBTyxFQUFjLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczRCxPQUFPLEVBQXFDLGNBQWMsRUFBRSxZQUFZLEVBQWMsVUFBVSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUUzSSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM3QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXhELE9BQU8sRUFBRSxjQUFjLEVBQU0sTUFBTSxlQUFlLENBQUM7QUFFbkQsY0FBYyxDQUFDLEdBQUcsQ0FBQyx1QkFBaUIsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUU7SUFDeEQsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFtQyxDQUFDO0lBQzdFLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDdEIsQ0FBQyxDQUFDLENBQUM7QUFFSCxpQkFBaUIsS0FBYTtJQUM1QixNQUFNLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLE9BQU8sS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLFVBQVUsQ0FBQztBQUMxRixDQUFDO0FBRUQsTUFBTSw2QkFBNkIsS0FBYTtJQUM5QyxFQUFFLENBQUMsQ0FBQyxP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Q0FBQyxHQUF3QixFQUFFLE1BQWMsRUFBRSxLQUF3QjtRQUNqRixNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDNUMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFVwc2VydCwge1xuICBJbnNlcnRpb24sXG4gIENhdXRpb3VzSW5zZXJ0aW9uLFxuICBUcnVzdGluZ0luc2VydGlvbixcblxuICBpc1NhZmVTdHJpbmcsXG4gIGlzTm9kZSxcbiAgaXNTdHJpbmcsXG5cbiAgY2F1dGlvdXNJbnNlcnQsXG4gIHRydXN0aW5nSW5zZXJ0XG59IGZyb20gJy4uLy4uL3Vwc2VydCc7XG5pbXBvcnQgeyBpc0NvbXBvbmVudERlZmluaXRpb24gfSBmcm9tICcuLi8uLi9jb21wb25lbnQvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBET01UcmVlQ29uc3RydWN0aW9uIH0gZnJvbSAnLi4vLi4vZG9tL2hlbHBlcic7XG5pbXBvcnQgeyBPcGNvZGVKU09OLCBVcGRhdGluZ09wY29kZSB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IHsgVk0sIFVwZGF0aW5nVk0gfSBmcm9tICcuLi8uLi92bSc7XG5pbXBvcnQgeyBUcnlPcGNvZGUgfSBmcm9tICcuLi8uLi92bS91cGRhdGUnO1xuaW1wb3J0IHsgUmVmZXJlbmNlLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlLCBSZWZlcmVuY2VDYWNoZSwgVXBkYXRhYmxlVGFnLCBUYWdXcmFwcGVyLCBpc01vZGlmaWVkLCBpc0NvbnN0LCBtYXAgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgT3B0aW9uLCBPcGFxdWUgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IEN1cnNvciwgY2xlYXIgfSBmcm9tICcuLi8uLi9ib3VuZHMnO1xuaW1wb3J0IHsgRnJhZ21lbnQgfSBmcm9tICcuLi8uLi9idWlsZGVyJztcbmltcG9ydCB7IENvbmRpdGlvbmFsUmVmZXJlbmNlIH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4uLy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IEFQUEVORF9PUENPREVTLCBPcCB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuRHluYW1pY0NvbnRlbnQsICh2bSwgeyBvcDE6IGFwcGVuZCB9KSA9PiB7XG4gIGxldCBvcGNvZGUgPSB2bS5jb25zdGFudHMuZ2V0T3RoZXIoYXBwZW5kKSBhcyBBcHBlbmREeW5hbWljT3Bjb2RlPEluc2VydGlvbj47XG4gIG9wY29kZS5ldmFsdWF0ZSh2bSk7XG59KTtcblxuZnVuY3Rpb24gaXNFbXB0eSh2YWx1ZTogT3BhcXVlKTogYm9vbGVhbiB7XG4gIHJldHVybiB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiB2YWx1ZVsndG9TdHJpbmcnXSAhPT0gJ2Z1bmN0aW9uJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVRleHRWYWx1ZSh2YWx1ZTogT3BhcXVlKTogc3RyaW5nIHtcbiAgaWYgKGlzRW1wdHkodmFsdWUpKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIHJldHVybiBTdHJpbmcodmFsdWUpO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVUcnVzdGVkVmFsdWUodmFsdWU6IE9wYXF1ZSk6IFRydXN0aW5nSW5zZXJ0aW9uIHtcbiAgaWYgKGlzRW1wdHkodmFsdWUpKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKGlzU2FmZVN0cmluZyh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWUudG9IVE1MKCk7XG4gIH1cbiAgaWYgKGlzTm9kZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVZhbHVlKHZhbHVlOiBPcGFxdWUpOiBDYXV0aW91c0luc2VydGlvbiB7XG4gIGlmIChpc0VtcHR5KHZhbHVlKSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmIChpc1NhZmVTdHJpbmcodmFsdWUpIHx8IGlzTm9kZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG59XG5cbmV4cG9ydCB0eXBlIEFwcGVuZER5bmFtaWNPcGNvZGVDb25zdHJ1Y3RvciA9ICB0eXBlb2YgT3B0aW1pemVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUgfCB0eXBlb2YgT3B0aW1pemVkVHJ1c3RpbmdBcHBlbmRPcGNvZGU7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBcHBlbmREeW5hbWljT3Bjb2RlPFQgZXh0ZW5kcyBJbnNlcnRpb24+IHtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IG5vcm1hbGl6ZShyZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+KTogUmVmZXJlbmNlPFQ+O1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBUKTogVXBzZXJ0O1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgdXBkYXRlV2l0aCh2bTogVk0sIHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4sIGNhY2hlOiBSZWZlcmVuY2VDYWNoZTxUPiwgYm91bmRzOiBGcmFnbWVudCwgdXBzZXJ0OiBVcHNlcnQpOiBVcGRhdGluZ09wY29kZTtcblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICBsZXQgcmVmZXJlbmNlID0gdm0uc3RhY2sucG9wPFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPj4oKTtcbiAgICBsZXQgbm9ybWFsaXplZCA9IHRoaXMubm9ybWFsaXplKHJlZmVyZW5jZSk7XG5cbiAgICBsZXQgdmFsdWUsIGNhY2hlO1xuXG4gICAgaWYgKGlzQ29uc3QocmVmZXJlbmNlKSkge1xuICAgICAgdmFsdWUgPSBub3JtYWxpemVkLnZhbHVlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKG5vcm1hbGl6ZWQpO1xuICAgICAgdmFsdWUgPSBjYWNoZS5wZWVrKCk7XG4gICAgfVxuXG4gICAgbGV0IHN0YWNrID0gdm0uZWxlbWVudHMoKTtcbiAgICBsZXQgdXBzZXJ0ID0gdGhpcy5pbnNlcnQodm0uZW52LmdldEFwcGVuZE9wZXJhdGlvbnMoKSwgc3RhY2ssIHZhbHVlKTtcbiAgICBsZXQgYm91bmRzID0gbmV3IEZyYWdtZW50KHVwc2VydC5ib3VuZHMpO1xuXG4gICAgc3RhY2submV3Qm91bmRzKGJvdW5kcyk7XG5cbiAgICBpZiAoY2FjaGUgLyogaS5lLiAhaXNDb25zdChyZWZlcmVuY2UpICovKSB7XG4gICAgICB2bS51cGRhdGVXaXRoKHRoaXMudXBkYXRlV2l0aCh2bSwgcmVmZXJlbmNlLCBjYWNoZSwgYm91bmRzLCB1cHNlcnQpKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEd1YXJkZWRBcHBlbmRPcGNvZGU8VCBleHRlbmRzIEluc2VydGlvbj4gZXh0ZW5kcyBBcHBlbmREeW5hbWljT3Bjb2RlPFQ+IHtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IEFwcGVuZE9wY29kZTogdHlwZW9mIE9wdGltaXplZENhdXRpb3VzQXBwZW5kT3Bjb2RlIHwgdHlwZW9mIE9wdGltaXplZFRydXN0aW5nQXBwZW5kT3Bjb2RlO1xuICBwcml2YXRlIHN0YXJ0ID0gLTE7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGdldCBkZW9wdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0YXJ0ID09PSAtMTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIGlmICh0aGlzLmRlb3B0ZWQpIHtcbiAgICAgIHZtLmdvdG8odGhpcy5zdGFydCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCB2YWx1ZSA9IHZtLnN0YWNrLnBvcCgpO1xuXG4gICAgICBpZihpc0NvbXBvbmVudERlZmluaXRpb24odmFsdWUpKSB7XG4gICAgICAgIHRoaXMuZGVvcHQodm0uZW52KTtcbiAgICAgICAgdm0uZ290byh0aGlzLnN0YXJ0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZtLnN0YWNrLnB1c2godmFsdWUpO1xuICAgICAgICBzdXBlci5ldmFsdWF0ZSh2bSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRlb3B0KF9lbnY6IEVudmlyb25tZW50KTogbnVtYmVyIHsgLy8gUHVibGljIGJlY2F1c2UgaXQncyB1c2VkIGluIHRoZSBsYXp5IGRlb3B0XG4gICAgLy8gQXQgY29tcGlsZSB0aW1lLCB3ZSBkZXRlcm1pbmVkIHRoYXQgdGhpcyBhcHBlbmQgY2FsbHNpdGUgbWlnaHQgcmVmZXJcbiAgICAvLyB0byBhIGxvY2FsIHZhcmlhYmxlL3Byb3BlcnR5IGxvb2t1cCB0aGF0IHJlc29sdmVzIHRvIGEgY29tcG9uZW50XG4gICAgLy8gZGVmaW5pdGlvbiBhdCBydW50aW1lLlxuICAgIC8vXG4gICAgLy8gV2UgY291bGQgaGF2ZSBlYWdlcmx5IGNvbXBpbGVkIHRoaXMgY2FsbHNpdGUgaW50byBzb21ldGhpbmcgbGlrZSB0aGlzOlxuICAgIC8vXG4gICAgLy8gICB7eyNpZiAoaXMtY29tcG9uZW50LWRlZmluaXRpb24gZm9vKX19XG4gICAgLy8gICAgIHt7Y29tcG9uZW50IGZvb319XG4gICAgLy8gICB7e2Vsc2V9fVxuICAgIC8vICAgICB7e2Zvb319XG4gICAgLy8gICB7ey9pZn19XG4gICAgLy9cbiAgICAvLyBIb3dldmVyLCBpbiBwcmFjdGljZSwgdGhlcmUgbWlnaHQgYmUgYSBsYXJnZSBhbW91dCBvZiB0aGVzZSBjYWxsc2l0ZXNcbiAgICAvLyBhbmQgbW9zdCBvZiB0aGVtIHdvdWxkIHJlc29sdmUgdG8gYSBzaW1wbGUgdmFsdWUgbG9va3VwLiBUaGVyZWZvcmUsIHdlXG4gICAgLy8gdHJpZWQgdG8gYmUgb3B0aW1pc3RpYyBhbmQgYXNzdW1lZCB0aGF0IHRoZSBjYWxsc2l0ZSB3aWxsIHJlc29sdmUgdG9cbiAgICAvLyBhcHBlbmRpbmcgYSBzaW1wbGUgdmFsdWUuXG4gICAgLy9cbiAgICAvLyBIb3dldmVyLCB3ZSBoYXZlIHJlYWNoZWQgaGVyZSBiZWNhdXNlIGF0IHJ1bnRpbWUsIHRoZSBndWFyZCBjb25kaXRpb25hbFxuICAgIC8vIGhhdmUgZGV0ZWN0ZWQgdGhhdCB0aGlzIGNhbGxzaXRlIGlzIGluZGVlZCByZWZlcnJpbmcgdG8gYSBjb21wb25lbnRcbiAgICAvLyBkZWZpbml0aW9uIG9iamVjdC4gU2luY2UgdGhpcyBpcyBsaWtlbHkgZ29pbmcgdG8gYmUgdHJ1ZSBmb3Igb3RoZXJcbiAgICAvLyBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgY2FsbHNpdGUsIGl0IGlzIG5vdyBhcHByb3BpYXRlIHRvIGRlb3B0IGludG8gdGhlXG4gICAgLy8gZXhwYW5kZWQgdmVyc2lvbiB0aGF0IGhhbmRsZXMgYm90aCBjYXNlcy4gVGhlIGNvbXBpbGF0aW9uIHdvdWxkIGxvb2tcbiAgICAvLyBsaWtlIHRoaXM6XG4gICAgLy9cbiAgICAvLyAgICAgICAgICAgICAgIFB1dFZhbHVlKGV4cHJlc3Npb24pXG4gICAgLy8gICAgICAgICAgICAgICBUZXN0KGlzLWNvbXBvbmVudC1kZWZpbml0aW9uKVxuICAgIC8vICAgICAgICAgICAgICAgRW50ZXIoQkVHSU4sIEVORClcbiAgICAvLyAgIEJFR0lOOiAgICAgIE5vb3BcbiAgICAvLyAgICAgICAgICAgICAgIEp1bXBVbmxlc3MoVkFMVUUpXG4gICAgLy8gICAgICAgICAgICAgICBQdXREeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvbk9wY29kZVxuICAgIC8vICAgICAgICAgICAgICAgT3BlbkNvbXBvbmVudFxuICAgIC8vICAgICAgICAgICAgICAgQ2xvc2VDb21wb25lbnRcbiAgICAvLyAgICAgICAgICAgICAgIEp1bXAoRU5EKVxuICAgIC8vICAgVkFMVUU6ICAgICAgTm9vcFxuICAgIC8vICAgICAgICAgICAgICAgT3B0aW1pemVkQXBwZW5kXG4gICAgLy8gICBFTkQ6ICAgICAgICBOb29wXG4gICAgLy8gICAgICAgICAgICAgICBFeGl0XG4gICAgLy9cbiAgICAvLyBLZWVwIGluIG1pbmQgdGhhdCBldmVuIGlmIHdlICpkb24ndCogcmVhY2ggaGVyZSBhdCBpbml0aWFsIHJlbmRlciB0aW1lLFxuICAgIC8vIGl0IGlzIHN0aWxsIHBvc3NpYmxlIChhbHRob3VnaCBxdWl0ZSByYXJlKSB0aGF0IHRoZSBzaW1wbGUgdmFsdWUgd2VcbiAgICAvLyBlbmNvdW50ZXIgZHVyaW5nIGluaXRpYWwgcmVuZGVyIGNvdWxkIGxhdGVyIGNoYW5nZSBpbnRvIGEgY29tcG9uZW50XG4gICAgLy8gZGVmaW5pdGlvbiBvYmplY3QgYXQgdXBkYXRlIHRpbWUuIFRoYXQgaXMgaGFuZGxlZCBieSB0aGUgXCJsYXp5IGRlb3B0XCJcbiAgICAvLyBjb2RlIG9uIHRoZSB1cGRhdGUgc2lkZSAoc2Nyb2xsIGRvd24gZm9yIHRoZSBuZXh0IGJpZyBibG9jayBvZiBjb21tZW50KS5cblxuICAgIHJldHVybiBudWxsIGFzIGFueTtcbiAgfVxufVxuXG5jbGFzcyBJc0NvbXBvbmVudERlZmluaXRpb25SZWZlcmVuY2UgZXh0ZW5kcyBDb25kaXRpb25hbFJlZmVyZW5jZSB7XG4gIHN0YXRpYyBjcmVhdGUoaW5uZXI6IFJlZmVyZW5jZTxPcGFxdWU+KTogSXNDb21wb25lbnREZWZpbml0aW9uUmVmZXJlbmNlIHtcbiAgICByZXR1cm4gbmV3IElzQ29tcG9uZW50RGVmaW5pdGlvblJlZmVyZW5jZShpbm5lcik7XG4gIH1cblxuICB0b0Jvb2wodmFsdWU6IE9wYXF1ZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc0NvbXBvbmVudERlZmluaXRpb24odmFsdWUpO1xuICB9XG59XG5cbmFic3RyYWN0IGNsYXNzIFVwZGF0ZU9wY29kZTxUIGV4dGVuZHMgSW5zZXJ0aW9uPiBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGNhY2hlOiBSZWZlcmVuY2VDYWNoZTxUPixcbiAgICBwcm90ZWN0ZWQgYm91bmRzOiBGcmFnbWVudCxcbiAgICBwcm90ZWN0ZWQgdXBzZXJ0OiBVcHNlcnRcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnRhZyA9IGNhY2hlLnRhZztcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IFQpOiBVcHNlcnQ7XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLmNhY2hlLnJldmFsaWRhdGUoKTtcblxuICAgIGlmIChpc01vZGlmaWVkKHZhbHVlKSkge1xuICAgICAgbGV0IHsgYm91bmRzLCB1cHNlcnQgfSA9IHRoaXM7XG4gICAgICBsZXQgeyBkb20gfSA9IHZtO1xuXG4gICAgICBpZighdGhpcy51cHNlcnQudXBkYXRlKGRvbSwgdmFsdWUpKSB7XG4gICAgICAgIGxldCBjdXJzb3IgPSBuZXcgQ3Vyc29yKGJvdW5kcy5wYXJlbnRFbGVtZW50KCksIGNsZWFyKGJvdW5kcykpO1xuICAgICAgICB1cHNlcnQgPSB0aGlzLnVwc2VydCA9IHRoaXMuaW5zZXJ0KHZtLmVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCksIGN1cnNvciwgdmFsdWUgYXMgVCk7XG4gICAgICB9XG5cbiAgICAgIGJvdW5kcy51cGRhdGUodXBzZXJ0LmJvdW5kcyk7XG4gICAgfVxuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIGxldCB7IF9ndWlkOiBndWlkLCB0eXBlLCBjYWNoZSB9ID0gdGhpcztcblxuICAgIHJldHVybiB7XG4gICAgICBndWlkLFxuICAgICAgdHlwZSxcbiAgICAgIGRldGFpbHM6IHsgbGFzdFZhbHVlOiBKU09OLnN0cmluZ2lmeShjYWNoZS5wZWVrKCkpIH1cbiAgICB9O1xuICB9XG59XG5cbmFic3RyYWN0IGNsYXNzIEd1YXJkZWRVcGRhdGVPcGNvZGU8VCBleHRlbmRzIEluc2VydGlvbj4gZXh0ZW5kcyBVcGRhdGVPcGNvZGU8VD4ge1xuICBwcml2YXRlIF90YWc6IFRhZ1dyYXBwZXI8VXBkYXRhYmxlVGFnPjtcbiAgcHJpdmF0ZSBkZW9wdGVkOiBPcHRpb248VHJ5T3Bjb2RlPiA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+LFxuICAgIGNhY2hlOiBSZWZlcmVuY2VDYWNoZTxUPixcbiAgICBib3VuZHM6IEZyYWdtZW50LFxuICAgIHVwc2VydDogVXBzZXJ0XG4gICkge1xuICAgIHN1cGVyKGNhY2hlLCBib3VuZHMsIHVwc2VydCk7XG4gICAgdGhpcy50YWcgPSB0aGlzLl90YWcgPSBVcGRhdGFibGVUYWcuY3JlYXRlKHRoaXMudGFnKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgaWYgKHRoaXMuZGVvcHRlZCkge1xuICAgICAgdm0uZXZhbHVhdGVPcGNvZGUodGhpcy5kZW9wdGVkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGlzQ29tcG9uZW50RGVmaW5pdGlvbih0aGlzLnJlZmVyZW5jZS52YWx1ZSgpKSkge1xuICAgICAgICB0aGlzLmxhenlEZW9wdCh2bSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdXBlci5ldmFsdWF0ZSh2bSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsYXp5RGVvcHQoX3ZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgLy8gRHVyaWduIGluaXRpYWwgcmVuZGVyLCB3ZSBrbm93IHRoYXQgdGhlIHJlZmVyZW5jZSBkb2VzIG5vdCBjb250YWluIGFcbiAgICAvLyBjb21wb25lbnQgZGVmaW5pdGlvbiwgc28gd2Ugb3B0aW1pc3RpY2FsbHkgYXNzdW1lZCB0aGF0IHRoaXMgYXBwZW5kXG4gICAgLy8gaXMganVzdCBhIG5vcm1hbCBhcHBlbmQuIEhvd2V2ZXIsIGF0IHVwZGF0ZSB0aW1lLCB3ZSBkaXNjb3ZlcmVkIHRoYXRcbiAgICAvLyB0aGUgcmVmZXJlbmNlIGhhcyBzd2l0Y2hlZCBpbnRvIGNvbnRhaW5pbmcgYSBjb21wb25lbnQgZGVmaW5pdGlvbiwgc29cbiAgICAvLyB3ZSBuZWVkIHRvIGRvIGEgXCJsYXp5IGRlb3B0XCIsIHNpbXVsYXRpbmcgd2hhdCB3b3VsZCBoYXZlIGhhcHBlbmVkIGlmXG4gICAgLy8gd2UgaGFkIGRlY2lkZWQgdG8gcGVyZm9ybSB0aGUgZGVvcHQgaW4gdGhlIGZpcnN0IHBsYWNlIGR1cmluZyBpbml0aWFsXG4gICAgLy8gcmVuZGVyLlxuICAgIC8vXG4gICAgLy8gTW9yZSBjb25jcmV0ZWx5LCB3ZSB3b3VsZCBoYXZlIGV4cGFuZGVkIHRoZSBjdXJseSBpbnRvIGEgaWYvZWxzZSwgYW5kXG4gICAgLy8gYmFzZWQgb24gd2hldGhlciB0aGUgdmFsdWUgaXMgYSBjb21wb25lbnQgZGVmaW5pdGlvbiBvciBub3QsIHdlIHdvdWxkXG4gICAgLy8gaGF2ZSBlbnRlcmVkIGVpdGhlciB0aGUgZHluYW1pYyBjb21wb25lbnQgYnJhbmNoIG9yIHRoZSBzaW1wbGUgdmFsdWVcbiAgICAvLyBicmFuY2guXG4gICAgLy9cbiAgICAvLyBTaW5jZSB3ZSByZW5kZXJlZCBhIHNpbXBsZSB2YWx1ZSBkdXJpbmcgaW5pdGlhbCByZW5kZXIgKGFuZCBhbGwgdGhlXG4gICAgLy8gdXBkYXRlcyB1cCB1bnRpbCB0aGlzIHBvaW50KSwgd2UgbmVlZCB0byBwcmV0ZW5kIHRoYXQgdGhlIHJlc3VsdCBpc1xuICAgIC8vIHByb2R1Y2VkIGJ5IHRoZSBcIlZBTFVFXCIgYnJhbmNoIG9mIHRoZSBkZW9wdGVkIGFwcGVuZCBvcGNvZGU6XG4gICAgLy9cbiAgICAvLyAgIFRyeShCRUdJTiwgRU5EKVxuICAgIC8vICAgICBBc3NlcnQoSXNDb21wb25lbnREZWZpbml0aW9uLCBleHBlY3RlZD1mYWxzZSlcbiAgICAvLyAgICAgT3B0aW1pemVkVXBkYXRlXG4gICAgLy9cbiAgICAvLyBJbiB0aGlzIGNhc2UsIGJlY2F1c2UgdGhlIHJlZmVyZW5jZSBoYXMgc3dpdGNoZWQgZnJvbSBiZWluZyBhIHNpbXBsZVxuICAgIC8vIHZhbHVlIGludG8gYSBjb21wb25lbnQgZGVmaW5pdGlvbiwgd2hhdCB3b3VsZCBoYXZlIGhhcHBlbmVkIGlzIHRoYXRcbiAgICAvLyB0aGUgYXNzZXJ0IHdvdWxkIHRocm93LCBjYXVzaW5nIHRoZSBUcnkgb3Bjb2RlIHRvIHRlYXJkb3duIHRoZSBib3VuZHNcbiAgICAvLyBhbmQgcmVydW4gdGhlIG9yaWdpbmFsIGFwcGVuZCBvcGNvZGUuXG4gICAgLy9cbiAgICAvLyBTaW5jZSB0aGUgVHJ5IG9wY29kZSB3b3VsZCBoYXZlIG51a2VkIHRoZSB1cGRhdGluZyBvcGNvZGVzIGFueXdheSwgd2VcbiAgICAvLyB3b3VsZG4ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IHNpbXVsYXRpbmcgdGhvc2UuIEFsbCB3ZSBoYXZlIHRvIGRvIGlzIHRvXG4gICAgLy8gZXhlY3V0ZSB0aGUgVHJ5IG9wY29kZSBhbmQgaW1tZWRpYXRlbHkgdGhyb3cuXG5cbiAgICByZXR1cm4gbnVsbCBhcyBhbnk7XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgbGV0IHsgX2d1aWQ6IGd1aWQsIHR5cGUsIGRlb3B0ZWQgfSA9IHRoaXM7XG5cbiAgICBpZiAoZGVvcHRlZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZ3VpZCxcbiAgICAgICAgdHlwZSxcbiAgICAgICAgZGVvcHRlZDogdHJ1ZSxcbiAgICAgICAgY2hpbGRyZW46IFtkZW9wdGVkLnRvSlNPTigpXVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHN1cGVyLnRvSlNPTigpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT3B0aW1pemVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUgZXh0ZW5kcyBBcHBlbmREeW5hbWljT3Bjb2RlPENhdXRpb3VzSW5zZXJ0aW9uPiB7XG4gIHR5cGUgPSAnb3B0aW1pemVkLWNhdXRpb3VzLWFwcGVuZCc7XG5cbiAgcHJvdGVjdGVkIG5vcm1hbGl6ZShyZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+KTogUmVmZXJlbmNlPENhdXRpb3VzSW5zZXJ0aW9uPiB7XG4gICAgcmV0dXJuIG1hcChyZWZlcmVuY2UsIG5vcm1hbGl6ZVZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IENhdXRpb3VzSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgICByZXR1cm4gY2F1dGlvdXNJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVXaXRoKF92bTogVk0sIF9yZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+LCBjYWNoZTogUmVmZXJlbmNlQ2FjaGU8Q2F1dGlvdXNJbnNlcnRpb24+LCBib3VuZHM6IEZyYWdtZW50LCB1cHNlcnQ6IFVwc2VydCk6IFVwZGF0aW5nT3Bjb2RlIHtcbiAgICByZXR1cm4gbmV3IE9wdGltaXplZENhdXRpb3VzVXBkYXRlT3Bjb2RlKGNhY2hlLCBib3VuZHMsIHVwc2VydCk7XG4gIH1cbn1cblxuY2xhc3MgT3B0aW1pemVkQ2F1dGlvdXNVcGRhdGVPcGNvZGUgZXh0ZW5kcyBVcGRhdGVPcGNvZGU8Q2F1dGlvdXNJbnNlcnRpb24+IHtcbiAgdHlwZSA9ICdvcHRpbWl6ZWQtY2F1dGlvdXMtdXBkYXRlJztcblxuICBwcm90ZWN0ZWQgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBDYXV0aW91c0luc2VydGlvbik6IFVwc2VydCB7XG4gICAgcmV0dXJuIGNhdXRpb3VzSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEd1YXJkZWRDYXV0aW91c0FwcGVuZE9wY29kZSBleHRlbmRzIEd1YXJkZWRBcHBlbmRPcGNvZGU8Q2F1dGlvdXNJbnNlcnRpb24+IHtcbiAgdHlwZSA9ICdndWFyZGVkLWNhdXRpb3VzLWFwcGVuZCc7XG5cbiAgcHJvdGVjdGVkIEFwcGVuZE9wY29kZSA9IE9wdGltaXplZENhdXRpb3VzQXBwZW5kT3Bjb2RlO1xuXG4gIHByb3RlY3RlZCBub3JtYWxpemUocmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPik6IFJlZmVyZW5jZTxDYXV0aW91c0luc2VydGlvbj4ge1xuICAgIHJldHVybiBtYXAocmVmZXJlbmNlLCBub3JtYWxpemVWYWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBDYXV0aW91c0luc2VydGlvbik6IFVwc2VydCB7XG4gICAgcmV0dXJuIGNhdXRpb3VzSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlV2l0aChfdm06IFZNLCByZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+LCBjYWNoZTogUmVmZXJlbmNlQ2FjaGU8Q2F1dGlvdXNJbnNlcnRpb24+LCBib3VuZHM6IEZyYWdtZW50LCB1cHNlcnQ6IFVwc2VydCk6IFVwZGF0aW5nT3Bjb2RlIHtcbiAgICByZXR1cm4gbmV3IEd1YXJkZWRDYXV0aW91c1VwZGF0ZU9wY29kZShyZWZlcmVuY2UsIGNhY2hlLCBib3VuZHMsIHVwc2VydCk7XG4gIH1cbn1cblxuY2xhc3MgR3VhcmRlZENhdXRpb3VzVXBkYXRlT3Bjb2RlIGV4dGVuZHMgR3VhcmRlZFVwZGF0ZU9wY29kZTxDYXV0aW91c0luc2VydGlvbj4ge1xuICB0eXBlID0gJ2d1YXJkZWQtY2F1dGlvdXMtdXBkYXRlJztcblxuICBwcm90ZWN0ZWQgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBDYXV0aW91c0luc2VydGlvbik6IFVwc2VydCB7XG4gICAgcmV0dXJuIGNhdXRpb3VzSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9wdGltaXplZFRydXN0aW5nQXBwZW5kT3Bjb2RlIGV4dGVuZHMgQXBwZW5kRHluYW1pY09wY29kZTxUcnVzdGluZ0luc2VydGlvbj4ge1xuICB0eXBlID0gJ29wdGltaXplZC10cnVzdGluZy1hcHBlbmQnO1xuXG4gIHByb3RlY3RlZCBub3JtYWxpemUocmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPik6IFJlZmVyZW5jZTxUcnVzdGluZ0luc2VydGlvbj4ge1xuICAgIHJldHVybiBtYXAocmVmZXJlbmNlLCBub3JtYWxpemVUcnVzdGVkVmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogVHJ1c3RpbmdJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiB0cnVzdGluZ0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZVdpdGgoX3ZtOiBWTSwgX3JlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4sIGNhY2hlOiBSZWZlcmVuY2VDYWNoZTxUcnVzdGluZ0luc2VydGlvbj4sIGJvdW5kczogRnJhZ21lbnQsIHVwc2VydDogVXBzZXJ0KTogVXBkYXRpbmdPcGNvZGUge1xuICAgIHJldHVybiBuZXcgT3B0aW1pemVkVHJ1c3RpbmdVcGRhdGVPcGNvZGUoY2FjaGUsIGJvdW5kcywgdXBzZXJ0KTtcbiAgfVxufVxuXG5jbGFzcyBPcHRpbWl6ZWRUcnVzdGluZ1VwZGF0ZU9wY29kZSBleHRlbmRzIFVwZGF0ZU9wY29kZTxUcnVzdGluZ0luc2VydGlvbj4ge1xuICB0eXBlID0gJ29wdGltaXplZC10cnVzdGluZy11cGRhdGUnO1xuXG4gIHByb3RlY3RlZCBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IFRydXN0aW5nSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgICByZXR1cm4gdHJ1c3RpbmdJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgR3VhcmRlZFRydXN0aW5nQXBwZW5kT3Bjb2RlIGV4dGVuZHMgR3VhcmRlZEFwcGVuZE9wY29kZTxUcnVzdGluZ0luc2VydGlvbj4ge1xuICB0eXBlID0gJ2d1YXJkZWQtdHJ1c3RpbmctYXBwZW5kJztcblxuICBwcm90ZWN0ZWQgQXBwZW5kT3Bjb2RlID0gT3B0aW1pemVkVHJ1c3RpbmdBcHBlbmRPcGNvZGU7XG5cbiAgcHJvdGVjdGVkIG5vcm1hbGl6ZShyZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+KTogUmVmZXJlbmNlPFRydXN0aW5nSW5zZXJ0aW9uPiB7XG4gICAgcmV0dXJuIG1hcChyZWZlcmVuY2UsIG5vcm1hbGl6ZVRydXN0ZWRWYWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBUcnVzdGluZ0luc2VydGlvbik6IFVwc2VydCB7XG4gICAgcmV0dXJuIHRydXN0aW5nSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlV2l0aChfdm06IFZNLCByZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+LCBjYWNoZTogUmVmZXJlbmNlQ2FjaGU8VHJ1c3RpbmdJbnNlcnRpb24+LCBib3VuZHM6IEZyYWdtZW50LCB1cHNlcnQ6IFVwc2VydCk6IFVwZGF0aW5nT3Bjb2RlIHtcbiAgICByZXR1cm4gbmV3IEd1YXJkZWRUcnVzdGluZ1VwZGF0ZU9wY29kZShyZWZlcmVuY2UsIGNhY2hlLCBib3VuZHMsIHVwc2VydCk7XG4gIH1cbn1cblxuY2xhc3MgR3VhcmRlZFRydXN0aW5nVXBkYXRlT3Bjb2RlIGV4dGVuZHMgR3VhcmRlZFVwZGF0ZU9wY29kZTxUcnVzdGluZ0luc2VydGlvbj4ge1xuICB0eXBlID0gJ3RydXN0aW5nLXVwZGF0ZSc7XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogVHJ1c3RpbmdJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiB0cnVzdGluZ0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvbnRlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBZSxFQUtiLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUVSLGNBQWMsRUFDZCxjQUFjLEVBQ2YsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFbkUsT0FBTyxFQUFjLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczRCxPQUFPLEVBQXFDLGNBQWMsRUFBRSxZQUFZLEVBQWMsVUFBVSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUUzSSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM3QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXhELE9BQU8sRUFBRSxjQUFjLEVBQU0sTUFBTSxlQUFlLENBQUM7QUFFbkQsY0FBYyxDQUFDLEdBQUcsQ0FBQyx1QkFBaUIsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUU7SUFDeEQsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFtQyxDQUFDO0lBQzdFLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDdEIsQ0FBQyxDQUFDLENBQUM7QUFFSCxpQkFBaUIsS0FBYTtJQUM1QixNQUFNLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLE9BQU8sS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLFVBQVUsQ0FBQztBQUMxRixDQUFDO0FBRUQsTUFBTSw2QkFBNkIsS0FBYTtJQUM5QyxFQUFFLENBQUMsQ0FBQyxP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LENBQUM7SUFFUyxNQUFNLENBQUMsR0FBd0IsRUFBRSxNQUFjLEVBQUUsS0FBd0I7UUFDakYsTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFUyxVQUFVLENBQUMsR0FBTyxFQUFFLFNBQTRCLEVBQUUsS0FBd0MsRUFBRSxNQUFnQixFQUFFLE1BQWM7UUFDcEksTUFBTSxDQUFDLElBQUksMkJBQTJCLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDM0UsQ0FBQztDQUNGO0FBRUQsaUNBQWtDLFNBQVEsbUJBQXNDO0lBQWhGOztRQUNFLFNBQUksR0FBRyxpQkFBaUIsQ0FBQztJQUszQixDQUFDO0lBSFcsTUFBTSxDQUFDLEdBQXdCLEVBQUUsTUFBYyxFQUFFLEtBQXdCO1FBQ2pGLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM1QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVXBzZXJ0LCB7XG4gIEluc2VydGlvbixcbiAgQ2F1dGlvdXNJbnNlcnRpb24sXG4gIFRydXN0aW5nSW5zZXJ0aW9uLFxuXG4gIGlzU2FmZVN0cmluZyxcbiAgaXNOb2RlLFxuICBpc1N0cmluZyxcblxuICBjYXV0aW91c0luc2VydCxcbiAgdHJ1c3RpbmdJbnNlcnRcbn0gZnJvbSAnLi4vLi4vdXBzZXJ0JztcbmltcG9ydCB7IGlzQ29tcG9uZW50RGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL2NvbXBvbmVudC9pbnRlcmZhY2VzJztcbmltcG9ydCB7IERPTVRyZWVDb25zdHJ1Y3Rpb24gfSBmcm9tICcuLi8uLi9kb20vaGVscGVyJztcbmltcG9ydCB7IE9wY29kZUpTT04sIFVwZGF0aW5nT3Bjb2RlIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBWTSwgVXBkYXRpbmdWTSB9IGZyb20gJy4uLy4uL3ZtJztcbmltcG9ydCB7IFRyeU9wY29kZSB9IGZyb20gJy4uLy4uL3ZtL3VwZGF0ZSc7XG5pbXBvcnQgeyBSZWZlcmVuY2UsIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIFJlZmVyZW5jZUNhY2hlLCBVcGRhdGFibGVUYWcsIFRhZ1dyYXBwZXIsIGlzTW9kaWZpZWQsIGlzQ29uc3QsIG1hcCB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBPcHRpb24sIE9wYXF1ZSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgQ3Vyc29yLCBjbGVhciB9IGZyb20gJy4uLy4uL2JvdW5kcyc7XG5pbXBvcnQgeyBGcmFnbWVudCB9IGZyb20gJy4uLy4uL2J1aWxkZXInO1xuaW1wb3J0IHsgQ29uZGl0aW9uYWxSZWZlcmVuY2UgfSBmcm9tICcuLi8uLi9yZWZlcmVuY2VzJztcbmltcG9ydCB7IEVudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgQVBQRU5EX09QQ09ERVMsIE9wIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5EeW5hbWljQ29udGVudCwgKHZtLCB7IG9wMTogYXBwZW5kIH0pID0+IHtcbiAgbGV0IG9wY29kZSA9IHZtLmNvbnN0YW50cy5nZXRPdGhlcihhcHBlbmQpIGFzIEFwcGVuZER5bmFtaWNPcGNvZGU8SW5zZXJ0aW9uPjtcbiAgb3Bjb2RlLmV2YWx1YXRlKHZtKTtcbn0pO1xuXG5mdW5jdGlvbiBpc0VtcHR5KHZhbHVlOiBPcGFxdWUpOiBib29sZWFuIHtcbiAgcmV0dXJuIHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIHZhbHVlWyd0b1N0cmluZyddICE9PSAnZnVuY3Rpb24nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplVGV4dFZhbHVlKHZhbHVlOiBPcGFxdWUpOiBzdHJpbmcge1xuICBpZiAoaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVRydXN0ZWRWYWx1ZSh2YWx1ZTogT3BhcXVlKTogVHJ1c3RpbmdJbnNlcnRpb24ge1xuICBpZiAoaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNTYWZlU3RyaW5nKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS50b0hUTUwoKTtcbiAgfVxuICBpZiAoaXNOb2RlKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplVmFsdWUodmFsdWU6IE9wYXF1ZSk6IENhdXRpb3VzSW5zZXJ0aW9uIHtcbiAgaWYgKGlzRW1wdHkodmFsdWUpKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKGlzU2FmZVN0cmluZyh2YWx1ZSkgfHwgaXNOb2RlKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cblxuZXhwb3J0IHR5cGUgQXBwZW5kRHluYW1pY09wY29kZUNvbnN0cnVjdG9yID0gIHR5cGVvZiBPcHRpbWl6ZWRDYXV0aW91c0FwcGVuZE9wY29kZSB8IHR5cGVvZiBPcHRpbWl6ZWRUcnVzdGluZ0FwcGVuZE9wY29kZTtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFwcGVuZER5bmFtaWNPcGNvZGU8VCBleHRlbmRzIEluc2VydGlvbj4ge1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgbm9ybWFsaXplKHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4pOiBSZWZlcmVuY2U8VD47XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IFQpOiBVcHNlcnQ7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCB1cGRhdGVXaXRoKHZtOiBWTSwgcmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPiwgY2FjaGU6IFJlZmVyZW5jZUNhY2hlPFQ+LCBib3VuZHM6IEZyYWdtZW50LCB1cHNlcnQ6IFVwc2VydCk6IFVwZGF0aW5nT3Bjb2RlO1xuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIGxldCByZWZlcmVuY2UgPSB2bS5zdGFjay5wb3A8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+PigpO1xuICAgIGxldCBub3JtYWxpemVkID0gdGhpcy5ub3JtYWxpemUocmVmZXJlbmNlKTtcblxuICAgIGxldCB2YWx1ZSwgY2FjaGU7XG5cbiAgICBpZiAoaXNDb25zdChyZWZlcmVuY2UpKSB7XG4gICAgICB2YWx1ZSA9IG5vcm1hbGl6ZWQudmFsdWUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FjaGUgPSBuZXcgUmVmZXJlbmNlQ2FjaGUobm9ybWFsaXplZCk7XG4gICAgICB2YWx1ZSA9IGNhY2hlLnBlZWsoKTtcbiAgICB9XG5cbiAgICBsZXQgc3RhY2sgPSB2bS5lbGVtZW50cygpO1xuICAgIGxldCB1cHNlcnQgPSB0aGlzLmluc2VydCh2bS5lbnYuZ2V0QXBwZW5kT3BlcmF0aW9ucygpLCBzdGFjaywgdmFsdWUpO1xuICAgIGxldCBib3VuZHMgPSBuZXcgRnJhZ21lbnQodXBzZXJ0LmJvdW5kcyk7XG5cbiAgICBzdGFjay5uZXdCb3VuZHMoYm91bmRzKTtcblxuICAgIGlmIChjYWNoZSAvKiBpLmUuICFpc0NvbnN0KHJlZmVyZW5jZSkgKi8pIHtcbiAgICAgIHZtLnVwZGF0ZVdpdGgodGhpcy51cGRhdGVXaXRoKHZtLCByZWZlcmVuY2UsIGNhY2hlLCBib3VuZHMsIHVwc2VydCkpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgR3VhcmRlZEFwcGVuZE9wY29kZTxUIGV4dGVuZHMgSW5zZXJ0aW9uPiBleHRlbmRzIEFwcGVuZER5bmFtaWNPcGNvZGU8VD4ge1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgQXBwZW5kT3Bjb2RlOiB0eXBlb2YgT3B0aW1pemVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUgfCB0eXBlb2YgT3B0aW1pemVkVHJ1c3RpbmdBcHBlbmRPcGNvZGU7XG4gIHByaXZhdGUgc3RhcnQgPSAtMTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZ2V0IGRlb3B0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhcnQgPT09IC0xO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgaWYgKHRoaXMuZGVvcHRlZCkge1xuICAgICAgdm0uZ290byh0aGlzLnN0YXJ0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHZhbHVlID0gdm0uc3RhY2sucG9wKCk7XG5cbiAgICAgIGlmKGlzQ29tcG9uZW50RGVmaW5pdGlvbih2YWx1ZSkpIHtcbiAgICAgICAgdGhpcy5kZW9wdCh2bS5lbnYpO1xuICAgICAgICB2bS5nb3RvKHRoaXMuc3RhcnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdm0uc3RhY2sucHVzaCh2YWx1ZSk7XG4gICAgICAgIHN1cGVyLmV2YWx1YXRlKHZtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZGVvcHQoX2VudjogRW52aXJvbm1lbnQpOiBudW1iZXIgeyAvLyBQdWJsaWMgYmVjYXVzZSBpdCdzIHVzZWQgaW4gdGhlIGxhenkgZGVvcHRcbiAgICAvLyBBdCBjb21waWxlIHRpbWUsIHdlIGRldGVybWluZWQgdGhhdCB0aGlzIGFwcGVuZCBjYWxsc2l0ZSBtaWdodCByZWZlclxuICAgIC8vIHRvIGEgbG9jYWwgdmFyaWFibGUvcHJvcGVydHkgbG9va3VwIHRoYXQgcmVzb2x2ZXMgdG8gYSBjb21wb25lbnRcbiAgICAvLyBkZWZpbml0aW9uIGF0IHJ1bnRpbWUuXG4gICAgLy9cbiAgICAvLyBXZSBjb3VsZCBoYXZlIGVhZ2VybHkgY29tcGlsZWQgdGhpcyBjYWxsc2l0ZSBpbnRvIHNvbWV0aGluZyBsaWtlIHRoaXM6XG4gICAgLy9cbiAgICAvLyAgIHt7I2lmIChpcy1jb21wb25lbnQtZGVmaW5pdGlvbiBmb28pfX1cbiAgICAvLyAgICAge3tjb21wb25lbnQgZm9vfX1cbiAgICAvLyAgIHt7ZWxzZX19XG4gICAgLy8gICAgIHt7Zm9vfX1cbiAgICAvLyAgIHt7L2lmfX1cbiAgICAvL1xuICAgIC8vIEhvd2V2ZXIsIGluIHByYWN0aWNlLCB0aGVyZSBtaWdodCBiZSBhIGxhcmdlIGFtb3V0IG9mIHRoZXNlIGNhbGxzaXRlc1xuICAgIC8vIGFuZCBtb3N0IG9mIHRoZW0gd291bGQgcmVzb2x2ZSB0byBhIHNpbXBsZSB2YWx1ZSBsb29rdXAuIFRoZXJlZm9yZSwgd2VcbiAgICAvLyB0cmllZCB0byBiZSBvcHRpbWlzdGljIGFuZCBhc3N1bWVkIHRoYXQgdGhlIGNhbGxzaXRlIHdpbGwgcmVzb2x2ZSB0b1xuICAgIC8vIGFwcGVuZGluZyBhIHNpbXBsZSB2YWx1ZS5cbiAgICAvL1xuICAgIC8vIEhvd2V2ZXIsIHdlIGhhdmUgcmVhY2hlZCBoZXJlIGJlY2F1c2UgYXQgcnVudGltZSwgdGhlIGd1YXJkIGNvbmRpdGlvbmFsXG4gICAgLy8gaGF2ZSBkZXRlY3RlZCB0aGF0IHRoaXMgY2FsbHNpdGUgaXMgaW5kZWVkIHJlZmVycmluZyB0byBhIGNvbXBvbmVudFxuICAgIC8vIGRlZmluaXRpb24gb2JqZWN0LiBTaW5jZSB0aGlzIGlzIGxpa2VseSBnb2luZyB0byBiZSB0cnVlIGZvciBvdGhlclxuICAgIC8vIGluc3RhbmNlcyBvZiB0aGUgc2FtZSBjYWxsc2l0ZSwgaXQgaXMgbm93IGFwcHJvcGlhdGUgdG8gZGVvcHQgaW50byB0aGVcbiAgICAvLyBleHBhbmRlZCB2ZXJzaW9uIHRoYXQgaGFuZGxlcyBib3RoIGNhc2VzLiBUaGUgY29tcGlsYXRpb24gd291bGQgbG9va1xuICAgIC8vIGxpa2UgdGhpczpcbiAgICAvL1xuICAgIC8vICAgICAgICAgICAgICAgUHV0VmFsdWUoZXhwcmVzc2lvbilcbiAgICAvLyAgICAgICAgICAgICAgIFRlc3QoaXMtY29tcG9uZW50LWRlZmluaXRpb24pXG4gICAgLy8gICAgICAgICAgICAgICBFbnRlcihCRUdJTiwgRU5EKVxuICAgIC8vICAgQkVHSU46ICAgICAgTm9vcFxuICAgIC8vICAgICAgICAgICAgICAgSnVtcFVubGVzcyhWQUxVRSlcbiAgICAvLyAgICAgICAgICAgICAgIFB1dER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uT3Bjb2RlXG4gICAgLy8gICAgICAgICAgICAgICBPcGVuQ29tcG9uZW50XG4gICAgLy8gICAgICAgICAgICAgICBDbG9zZUNvbXBvbmVudFxuICAgIC8vICAgICAgICAgICAgICAgSnVtcChFTkQpXG4gICAgLy8gICBWQUxVRTogICAgICBOb29wXG4gICAgLy8gICAgICAgICAgICAgICBPcHRpbWl6ZWRBcHBlbmRcbiAgICAvLyAgIEVORDogICAgICAgIE5vb3BcbiAgICAvLyAgICAgICAgICAgICAgIEV4aXRcbiAgICAvL1xuICAgIC8vIEtlZXAgaW4gbWluZCB0aGF0IGV2ZW4gaWYgd2UgKmRvbid0KiByZWFjaCBoZXJlIGF0IGluaXRpYWwgcmVuZGVyIHRpbWUsXG4gICAgLy8gaXQgaXMgc3RpbGwgcG9zc2libGUgKGFsdGhvdWdoIHF1aXRlIHJhcmUpIHRoYXQgdGhlIHNpbXBsZSB2YWx1ZSB3ZVxuICAgIC8vIGVuY291bnRlciBkdXJpbmcgaW5pdGlhbCByZW5kZXIgY291bGQgbGF0ZXIgY2hhbmdlIGludG8gYSBjb21wb25lbnRcbiAgICAvLyBkZWZpbml0aW9uIG9iamVjdCBhdCB1cGRhdGUgdGltZS4gVGhhdCBpcyBoYW5kbGVkIGJ5IHRoZSBcImxhenkgZGVvcHRcIlxuICAgIC8vIGNvZGUgb24gdGhlIHVwZGF0ZSBzaWRlIChzY3JvbGwgZG93biBmb3IgdGhlIG5leHQgYmlnIGJsb2NrIG9mIGNvbW1lbnQpLlxuXG4gICAgcmV0dXJuIG51bGwgYXMgYW55O1xuICB9XG59XG5cbmNsYXNzIElzQ29tcG9uZW50RGVmaW5pdGlvblJlZmVyZW5jZSBleHRlbmRzIENvbmRpdGlvbmFsUmVmZXJlbmNlIHtcbiAgc3RhdGljIGNyZWF0ZShpbm5lcjogUmVmZXJlbmNlPE9wYXF1ZT4pOiBJc0NvbXBvbmVudERlZmluaXRpb25SZWZlcmVuY2Uge1xuICAgIHJldHVybiBuZXcgSXNDb21wb25lbnREZWZpbml0aW9uUmVmZXJlbmNlKGlubmVyKTtcbiAgfVxuXG4gIHRvQm9vbCh2YWx1ZTogT3BhcXVlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzQ29tcG9uZW50RGVmaW5pdGlvbih2YWx1ZSk7XG4gIH1cbn1cblxuYWJzdHJhY3QgY2xhc3MgVXBkYXRlT3Bjb2RlPFQgZXh0ZW5kcyBJbnNlcnRpb24+IGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgY2FjaGU6IFJlZmVyZW5jZUNhY2hlPFQ+LFxuICAgIHByb3RlY3RlZCBib3VuZHM6IEZyYWdtZW50LFxuICAgIHByb3RlY3RlZCB1cHNlcnQ6IFVwc2VydFxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudGFnID0gY2FjaGUudGFnO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogVCk6IFVwc2VydDtcblxuICBldmFsdWF0ZSh2bTogVXBkYXRpbmdWTSkge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMuY2FjaGUucmV2YWxpZGF0ZSgpO1xuXG4gICAgaWYgKGlzTW9kaWZpZWQodmFsdWUpKSB7XG4gICAgICBsZXQgeyBib3VuZHMsIHVwc2VydCB9ID0gdGhpcztcbiAgICAgIGxldCB7IGRvbSB9ID0gdm07XG5cbiAgICAgIGlmKCF0aGlzLnVwc2VydC51cGRhdGUoZG9tLCB2YWx1ZSkpIHtcbiAgICAgICAgbGV0IGN1cnNvciA9IG5ldyBDdXJzb3IoYm91bmRzLnBhcmVudEVsZW1lbnQoKSwgY2xlYXIoYm91bmRzKSk7XG4gICAgICAgIHVwc2VydCA9IHRoaXMudXBzZXJ0ID0gdGhpcy5pbnNlcnQodm0uZW52LmdldEFwcGVuZE9wZXJhdGlvbnMoKSwgY3Vyc29yLCB2YWx1ZSBhcyBUKTtcbiAgICAgIH1cblxuICAgICAgYm91bmRzLnVwZGF0ZSh1cHNlcnQuYm91bmRzKTtcbiAgICB9XG4gIH1cbn1cblxuYWJzdHJhY3QgY2xhc3MgR3VhcmRlZFVwZGF0ZU9wY29kZTxUIGV4dGVuZHMgSW5zZXJ0aW9uPiBleHRlbmRzIFVwZGF0ZU9wY29kZTxUPiB7XG4gIHByaXZhdGUgX3RhZzogVGFnV3JhcHBlcjxVcGRhdGFibGVUYWc+O1xuICBwcml2YXRlIGRlb3B0ZWQ6IE9wdGlvbjxUcnlPcGNvZGU+ID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4sXG4gICAgY2FjaGU6IFJlZmVyZW5jZUNhY2hlPFQ+LFxuICAgIGJvdW5kczogRnJhZ21lbnQsXG4gICAgdXBzZXJ0OiBVcHNlcnRcbiAgKSB7XG4gICAgc3VwZXIoY2FjaGUsIGJvdW5kcywgdXBzZXJ0KTtcbiAgICB0aGlzLnRhZyA9IHRoaXMuX3RhZyA9IFVwZGF0YWJsZVRhZy5jcmVhdGUodGhpcy50YWcpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICBpZiAodGhpcy5kZW9wdGVkKSB7XG4gICAgICB2bS5ldmFsdWF0ZU9wY29kZSh0aGlzLmRlb3B0ZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaXNDb21wb25lbnREZWZpbml0aW9uKHRoaXMucmVmZXJlbmNlLnZhbHVlKCkpKSB7XG4gICAgICAgIHRoaXMubGF6eURlb3B0KHZtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN1cGVyLmV2YWx1YXRlKHZtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxhenlEZW9wdChfdm06IFVwZGF0aW5nVk0pIHtcbiAgICAvLyBEdXJpZ24gaW5pdGlhbCByZW5kZXIsIHdlIGtub3cgdGhhdCB0aGUgcmVmZXJlbmNlIGRvZXMgbm90IGNvbnRhaW4gYVxuICAgIC8vIGNvbXBvbmVudCBkZWZpbml0aW9uLCBzbyB3ZSBvcHRpbWlzdGljYWxseSBhc3N1bWVkIHRoYXQgdGhpcyBhcHBlbmRcbiAgICAvLyBpcyBqdXN0IGEgbm9ybWFsIGFwcGVuZC4gSG93ZXZlciwgYXQgdXBkYXRlIHRpbWUsIHdlIGRpc2NvdmVyZWQgdGhhdFxuICAgIC8vIHRoZSByZWZlcmVuY2UgaGFzIHN3aXRjaGVkIGludG8gY29udGFpbmluZyBhIGNvbXBvbmVudCBkZWZpbml0aW9uLCBzb1xuICAgIC8vIHdlIG5lZWQgdG8gZG8gYSBcImxhenkgZGVvcHRcIiwgc2ltdWxhdGluZyB3aGF0IHdvdWxkIGhhdmUgaGFwcGVuZWQgaWZcbiAgICAvLyB3ZSBoYWQgZGVjaWRlZCB0byBwZXJmb3JtIHRoZSBkZW9wdCBpbiB0aGUgZmlyc3QgcGxhY2UgZHVyaW5nIGluaXRpYWxcbiAgICAvLyByZW5kZXIuXG4gICAgLy9cbiAgICAvLyBNb3JlIGNvbmNyZXRlbHksIHdlIHdvdWxkIGhhdmUgZXhwYW5kZWQgdGhlIGN1cmx5IGludG8gYSBpZi9lbHNlLCBhbmRcbiAgICAvLyBiYXNlZCBvbiB3aGV0aGVyIHRoZSB2YWx1ZSBpcyBhIGNvbXBvbmVudCBkZWZpbml0aW9uIG9yIG5vdCwgd2Ugd291bGRcbiAgICAvLyBoYXZlIGVudGVyZWQgZWl0aGVyIHRoZSBkeW5hbWljIGNvbXBvbmVudCBicmFuY2ggb3IgdGhlIHNpbXBsZSB2YWx1ZVxuICAgIC8vIGJyYW5jaC5cbiAgICAvL1xuICAgIC8vIFNpbmNlIHdlIHJlbmRlcmVkIGEgc2ltcGxlIHZhbHVlIGR1cmluZyBpbml0aWFsIHJlbmRlciAoYW5kIGFsbCB0aGVcbiAgICAvLyB1cGRhdGVzIHVwIHVudGlsIHRoaXMgcG9pbnQpLCB3ZSBuZWVkIHRvIHByZXRlbmQgdGhhdCB0aGUgcmVzdWx0IGlzXG4gICAgLy8gcHJvZHVjZWQgYnkgdGhlIFwiVkFMVUVcIiBicmFuY2ggb2YgdGhlIGRlb3B0ZWQgYXBwZW5kIG9wY29kZTpcbiAgICAvL1xuICAgIC8vICAgVHJ5KEJFR0lOLCBFTkQpXG4gICAgLy8gICAgIEFzc2VydChJc0NvbXBvbmVudERlZmluaXRpb24sIGV4cGVjdGVkPWZhbHNlKVxuICAgIC8vICAgICBPcHRpbWl6ZWRVcGRhdGVcbiAgICAvL1xuICAgIC8vIEluIHRoaXMgY2FzZSwgYmVjYXVzZSB0aGUgcmVmZXJlbmNlIGhhcyBzd2l0Y2hlZCBmcm9tIGJlaW5nIGEgc2ltcGxlXG4gICAgLy8gdmFsdWUgaW50byBhIGNvbXBvbmVudCBkZWZpbml0aW9uLCB3aGF0IHdvdWxkIGhhdmUgaGFwcGVuZWQgaXMgdGhhdFxuICAgIC8vIHRoZSBhc3NlcnQgd291bGQgdGhyb3csIGNhdXNpbmcgdGhlIFRyeSBvcGNvZGUgdG8gdGVhcmRvd24gdGhlIGJvdW5kc1xuICAgIC8vIGFuZCByZXJ1biB0aGUgb3JpZ2luYWwgYXBwZW5kIG9wY29kZS5cbiAgICAvL1xuICAgIC8vIFNpbmNlIHRoZSBUcnkgb3Bjb2RlIHdvdWxkIGhhdmUgbnVrZWQgdGhlIHVwZGF0aW5nIG9wY29kZXMgYW55d2F5LCB3ZVxuICAgIC8vIHdvdWxkbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgc2ltdWxhdGluZyB0aG9zZS4gQWxsIHdlIGhhdmUgdG8gZG8gaXMgdG9cbiAgICAvLyBleGVjdXRlIHRoZSBUcnkgb3Bjb2RlIGFuZCBpbW1lZGlhdGVseSB0aHJvdy5cblxuICAgIHJldHVybiBudWxsIGFzIGFueTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT3B0aW1pemVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUgZXh0ZW5kcyBBcHBlbmREeW5hbWljT3Bjb2RlPENhdXRpb3VzSW5zZXJ0aW9uPiB7XG4gIHR5cGUgPSAnb3B0aW1pemVkLWNhdXRpb3VzLWFwcGVuZCc7XG5cbiAgcHJvdGVjdGVkIG5vcm1hbGl6ZShyZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+KTogUmVmZXJlbmNlPENhdXRpb3VzSW5zZXJ0aW9uPiB7XG4gICAgcmV0dXJuIG1hcChyZWZlcmVuY2UsIG5vcm1hbGl6ZVZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IENhdXRpb3VzSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgICByZXR1cm4gY2F1dGlvdXNJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVXaXRoKF92bTogVk0sIF9yZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+LCBjYWNoZTogUmVmZXJlbmNlQ2FjaGU8Q2F1dGlvdXNJbnNlcnRpb24+LCBib3VuZHM6IEZyYWdtZW50LCB1cHNlcnQ6IFVwc2VydCk6IFVwZGF0aW5nT3Bjb2RlIHtcbiAgICByZXR1cm4gbmV3IE9wdGltaXplZENhdXRpb3VzVXBkYXRlT3Bjb2RlKGNhY2hlLCBib3VuZHMsIHVwc2VydCk7XG4gIH1cbn1cblxuY2xhc3MgT3B0aW1pemVkQ2F1dGlvdXNVcGRhdGVPcGNvZGUgZXh0ZW5kcyBVcGRhdGVPcGNvZGU8Q2F1dGlvdXNJbnNlcnRpb24+IHtcbiAgdHlwZSA9ICdvcHRpbWl6ZWQtY2F1dGlvdXMtdXBkYXRlJztcblxuICBwcm90ZWN0ZWQgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBDYXV0aW91c0luc2VydGlvbik6IFVwc2VydCB7XG4gICAgcmV0dXJuIGNhdXRpb3VzSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEd1YXJkZWRDYXV0aW91c0FwcGVuZE9wY29kZSBleHRlbmRzIEd1YXJkZWRBcHBlbmRPcGNvZGU8Q2F1dGlvdXNJbnNlcnRpb24+IHtcbiAgdHlwZSA9ICdndWFyZGVkLWNhdXRpb3VzLWFwcGVuZCc7XG5cbiAgcHJvdGVjdGVkIEFwcGVuZE9wY29kZSA9IE9wdGltaXplZENhdXRpb3VzQXBwZW5kT3Bjb2RlO1xuXG4gIHByb3RlY3RlZCBub3JtYWxpemUocmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPik6IFJlZmVyZW5jZTxDYXV0aW91c0luc2VydGlvbj4ge1xuICAgIHJldHVybiBtYXAocmVmZXJlbmNlLCBub3JtYWxpemVWYWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBDYXV0aW91c0luc2VydGlvbik6IFVwc2VydCB7XG4gICAgcmV0dXJuIGNhdXRpb3VzSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlV2l0aChfdm06IFZNLCByZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+LCBjYWNoZTogUmVmZXJlbmNlQ2FjaGU8Q2F1dGlvdXNJbnNlcnRpb24+LCBib3VuZHM6IEZyYWdtZW50LCB1cHNlcnQ6IFVwc2VydCk6IFVwZGF0aW5nT3Bjb2RlIHtcbiAgICByZXR1cm4gbmV3IEd1YXJkZWRDYXV0aW91c1VwZGF0ZU9wY29kZShyZWZlcmVuY2UsIGNhY2hlLCBib3VuZHMsIHVwc2VydCk7XG4gIH1cbn1cblxuY2xhc3MgR3VhcmRlZENhdXRpb3VzVXBkYXRlT3Bjb2RlIGV4dGVuZHMgR3VhcmRlZFVwZGF0ZU9wY29kZTxDYXV0aW91c0luc2VydGlvbj4ge1xuICB0eXBlID0gJ2d1YXJkZWQtY2F1dGlvdXMtdXBkYXRlJztcblxuICBwcm90ZWN0ZWQgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBDYXV0aW91c0luc2VydGlvbik6IFVwc2VydCB7XG4gICAgcmV0dXJuIGNhdXRpb3VzSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9wdGltaXplZFRydXN0aW5nQXBwZW5kT3Bjb2RlIGV4dGVuZHMgQXBwZW5kRHluYW1pY09wY29kZTxUcnVzdGluZ0luc2VydGlvbj4ge1xuICB0eXBlID0gJ29wdGltaXplZC10cnVzdGluZy1hcHBlbmQnO1xuXG4gIHByb3RlY3RlZCBub3JtYWxpemUocmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPik6IFJlZmVyZW5jZTxUcnVzdGluZ0luc2VydGlvbj4ge1xuICAgIHJldHVybiBtYXAocmVmZXJlbmNlLCBub3JtYWxpemVUcnVzdGVkVmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogVHJ1c3RpbmdJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiB0cnVzdGluZ0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZVdpdGgoX3ZtOiBWTSwgX3JlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4sIGNhY2hlOiBSZWZlcmVuY2VDYWNoZTxUcnVzdGluZ0luc2VydGlvbj4sIGJvdW5kczogRnJhZ21lbnQsIHVwc2VydDogVXBzZXJ0KTogVXBkYXRpbmdPcGNvZGUge1xuICAgIHJldHVybiBuZXcgT3B0aW1pemVkVHJ1c3RpbmdVcGRhdGVPcGNvZGUoY2FjaGUsIGJvdW5kcywgdXBzZXJ0KTtcbiAgfVxufVxuXG5jbGFzcyBPcHRpbWl6ZWRUcnVzdGluZ1VwZGF0ZU9wY29kZSBleHRlbmRzIFVwZGF0ZU9wY29kZTxUcnVzdGluZ0luc2VydGlvbj4ge1xuICB0eXBlID0gJ29wdGltaXplZC10cnVzdGluZy11cGRhdGUnO1xuXG4gIHByb3RlY3RlZCBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IFRydXN0aW5nSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgICByZXR1cm4gdHJ1c3RpbmdJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgR3VhcmRlZFRydXN0aW5nQXBwZW5kT3Bjb2RlIGV4dGVuZHMgR3VhcmRlZEFwcGVuZE9wY29kZTxUcnVzdGluZ0luc2VydGlvbj4ge1xuICB0eXBlID0gJ2d1YXJkZWQtdHJ1c3RpbmctYXBwZW5kJztcblxuICBwcm90ZWN0ZWQgQXBwZW5kT3Bjb2RlID0gT3B0aW1pemVkVHJ1c3RpbmdBcHBlbmRPcGNvZGU7XG5cbiAgcHJvdGVjdGVkIG5vcm1hbGl6ZShyZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+KTogUmVmZXJlbmNlPFRydXN0aW5nSW5zZXJ0aW9uPiB7XG4gICAgcmV0dXJuIG1hcChyZWZlcmVuY2UsIG5vcm1hbGl6ZVRydXN0ZWRWYWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBUcnVzdGluZ0luc2VydGlvbik6IFVwc2VydCB7XG4gICAgcmV0dXJuIHRydXN0aW5nSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlV2l0aChfdm06IFZNLCByZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+LCBjYWNoZTogUmVmZXJlbmNlQ2FjaGU8VHJ1c3RpbmdJbnNlcnRpb24+LCBib3VuZHM6IEZyYWdtZW50LCB1cHNlcnQ6IFVwc2VydCk6IFVwZGF0aW5nT3Bjb2RlIHtcbiAgICByZXR1cm4gbmV3IEd1YXJkZWRUcnVzdGluZ1VwZGF0ZU9wY29kZShyZWZlcmVuY2UsIGNhY2hlLCBib3VuZHMsIHVwc2VydCk7XG4gIH1cbn1cblxuY2xhc3MgR3VhcmRlZFRydXN0aW5nVXBkYXRlT3Bjb2RlIGV4dGVuZHMgR3VhcmRlZFVwZGF0ZU9wY29kZTxUcnVzdGluZ0luc2VydGlvbj4ge1xuICB0eXBlID0gJ3RydXN0aW5nLXVwZGF0ZSc7XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogVHJ1c3RpbmdJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiB0cnVzdGluZ0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG59XG4iXX0=
import { UpdatingOpcode } from '../../opcodes';
import { unwrap, expect } from '@glimmer/util';
import { CachedReference, ReferenceCache, combineTagged, isConst as isConstReference, isModified } from '@glimmer/reference';

@@ -230,3 +229,3 @@ import { NULL_REFERENCE, PrimitiveReference } from '../../references';

attributeNames.push(name);
unwrap(attributes).push(attribute);
attributes.push(attribute);
}

@@ -284,8 +283,2 @@ }

}
toJSON() {
return {
guid: this._guid,
type: this.type
};
}
}

@@ -316,3 +309,3 @@ export class StaticAttribute {

let { element, cache } = this;
let value = expect(cache, 'must patch after flush').revalidate();
let value = cache.revalidate();
if (isModified(value)) {

@@ -336,23 +329,2 @@ this.attributeManager.updateAttribute(env, element, value, this.namespace);

}
toJSON() {
let { element, namespace, name, cache } = this;
let formattedElement = formatElement(element);
let lastValue = expect(cache, 'must serialize after flush').peek();
if (namespace) {
return {
element: formattedElement,
type: 'attribute',
namespace,
name,
lastValue
};
}
return {
element: formattedElement,
type: 'attribute',
namespace: namespace === undefined ? null : namespace,
name,
lastValue
};
}
}

@@ -383,11 +355,3 @@ function formatElement(element) {

}
toJSON() {
let { _guid, type, operation } = this;
return {
guid: _guid,
type,
details: operation.toJSON()
};
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZG9tLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFNM0QsT0FBTyxFQUErQixNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFDTCxlQUFlLEVBR2YsY0FBYyxFQUlkLGFBQWEsRUFDYixPQUFPLElBQUksZ0JBQWdCLEVBQzNCLFVBQVUsRUFDWCxNQUFNLG9CQUFvQixDQUFDO0FBRTVCLE9BQU8sRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUd0RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxjQUFjLEVBQVksTUFBTSxlQUFlLENBQUM7QUFFekQsY0FBYyxDQUFDLEdBQUcsQ0FBQyxhQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFO0lBQzVDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUN6RCxDQUFDLENBQUMsQ0FBQztBQUVILGNBQWMsQ0FBQyxHQUFHLENBQUMsZ0JBQVUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUU7SUFDL0MsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzVELENBQUMsQ0FBQyxDQUFDO0FBRUgsY0FBYyxDQUFDLEdBQUcsQ0FBQyxvQkFBYyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRTtJQUNsRCxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsV0FB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dEMsTUFBTSxDQUFDO1lBQ0wsSUFBSSxFQUFFLEtBQUs7WUFDWCxJQUFJO1lBQ0osT0FBTyxFQUFFLFNBQVMsQ0FBQyxNQUFNLEVBQUU7U0FDNUIsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wY29kZUpTT04sIFVwZGF0aW5nT3Bjb2RlIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBWTSwgVXBkYXRpbmdWTSB9IGZyb20gJy4uLy4uL3ZtJztcbmltcG9ydCB7IEFyZ3VtZW50cyB9IGZyb20gJy4uLy4uL3ZtL2FyZ3VtZW50cyc7XG5pbXBvcnQgKiBhcyBTaW1wbGUgZnJvbSAnLi4vLi4vZG9tL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRklYX1JFSUZJQ0FUSU9OIH0gZnJvbSAnLi4vLi4vZG9tL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBGSVhNRSwgT3B0aW9uLCBPcGFxdWUsIERpY3QsIHVud3JhcCwgZXhwZWN0IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQge1xuICBDYWNoZWRSZWZlcmVuY2UsXG4gIFJlZmVyZW5jZSxcbiAgVmVyc2lvbmVkUmVmZXJlbmNlLFxuICBSZWZlcmVuY2VDYWNoZSxcbiAgVGFnLFxuICBSZXZpc2lvbixcbiAgUGF0aFJlZmVyZW5jZSxcbiAgY29tYmluZVRhZ2dlZCxcbiAgaXNDb25zdCBhcyBpc0NvbnN0UmVmZXJlbmNlLFxuICBpc01vZGlmaWVkXG59IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBNb2RpZmllck1hbmFnZXIgfSBmcm9tICcuLi8uLi9tb2RpZmllci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE5VTExfUkVGRVJFTkNFLCBQcmltaXRpdmVSZWZlcmVuY2UgfSBmcm9tICcuLi8uLi9yZWZlcmVuY2VzJztcbmltcG9ydCB7IEF0dHJpYnV0ZU1hbmFnZXIgfSBmcm9tICcuLi8uLi9kb20vYXR0cmlidXRlLW1hbmFnZXJzJztcbmltcG9ydCB7IEVsZW1lbnRPcGVyYXRpb25zIH0gZnJvbSAnLi4vLi4vYnVpbGRlcic7XG5pbXBvcnQgeyBBc3NlcnQgfSBmcm9tICcuL3ZtJztcbmltcG9ydCB7IEFQUEVORF9PUENPREVTLCBPcCBhcyBPcCB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuVGV4dCwgKHZtLCB7IG9wMTogdGV4dCB9KSA9PiB7XG4gIHZtLmVsZW1lbnRzKCkuYXBwZW5kVGV4dCh2bS5jb25zdGFudHMuZ2V0U3RyaW5nKHRleHQpKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuQ29tbWVudCwgKHZtLCB7IG9wMTogdGV4dCB9KSA9PiB7XG4gIHZtLmVsZW1lbnRzKCkuYXBwZW5kQ29tbWVudCh2bS5jb25zdGFudHMuZ2V0U3RyaW5nKHRleHQpKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuT3BlbkVsZW1lbnQsICh2bSwgeyBvcDE6IHRhZyB9KSA9PiB7XG4gIHZtLmVsZW1lbnRzKCkub3BlbkVsZW1lbnQodm0uY29uc3RhbnRzLmdldFN0cmluZyh0YWcpKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuT3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucywgKHZtLCB7IG9wMTogdGFnIH0pID0+IHtcbiAgbGV0IHRhZ05hbWUgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKHRhZyk7XG4gIGxldCBvcGVyYXRpb25zID0gdm0uc3RhY2sucG9wPEVsZW1lbnRPcGVyYXRpb25zPigpO1xuICB2bS5lbGVtZW50cygpLm9wZW5FbGVtZW50KHRhZ05hbWUsIG9wZXJhdGlvbnMpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5PcGVuRHluYW1pY0VsZW1lbnQsIHZtID0+IHtcbiAgbGV0IG9wZXJhdGlvbnMgPSB2bS5zdGFjay5wb3A8RWxlbWVudE9wZXJhdGlvbnM+KCk7XG4gIGxldCB0YWdOYW1lID0gdm0uc3RhY2sucG9wPFJlZmVyZW5jZTxzdHJpbmc+PigpLnZhbHVlKCk7XG4gIHZtLmVsZW1lbnRzKCkub3BlbkVsZW1lbnQodGFnTmFtZSwgb3BlcmF0aW9ucyk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlB1c2hSZW1vdGVFbGVtZW50LCB2bSA9PiB7XG4gIGxldCBlbGVtZW50UmVmID0gdm0uc3RhY2sucG9wPFJlZmVyZW5jZTxTaW1wbGUuRWxlbWVudD4+KCk7XG4gIGxldCBuZXh0U2libGluZ1JlZiA9IHZtLnN0YWNrLnBvcDxSZWZlcmVuY2U8T3B0aW9uPFNpbXBsZS5Ob2RlPj4+KCk7XG5cbiAgbGV0IGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50O1xuICBsZXQgbmV4dFNpYmxpbmc6IE9wdGlvbjxTaW1wbGUuTm9kZT47XG5cbiAgaWYgKGlzQ29uc3RSZWZlcmVuY2UoZWxlbWVudFJlZikpIHtcbiAgICBlbGVtZW50ID0gZWxlbWVudFJlZi52YWx1ZSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCBjYWNoZSA9IG5ldyBSZWZlcmVuY2VDYWNoZShlbGVtZW50UmVmKTtcbiAgICBlbGVtZW50ID0gY2FjaGUucGVlaygpO1xuICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICB9XG5cbiAgaWYgKGlzQ29uc3RSZWZlcmVuY2UobmV4dFNpYmxpbmdSZWYpKSB7XG4gICAgbmV4dFNpYmxpbmcgPSBuZXh0U2libGluZ1JlZi52YWx1ZSgpO1xuICB9IGVsc2Uge1xuICAgIGxldCBjYWNoZSA9IG5ldyBSZWZlcmVuY2VDYWNoZShuZXh0U2libGluZ1JlZik7XG4gICAgbmV4dFNpYmxpbmcgPSBjYWNoZS5wZWVrKCk7XG4gICAgdm0udXBkYXRlV2l0aChuZXcgQXNzZXJ0KGNhY2hlKSk7XG4gIH1cblxuICB2bS5lbGVtZW50cygpLnB1c2hSZW1vdGVFbGVtZW50KGVsZW1lbnQsIG5leHRTaWJsaW5nKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUG9wUmVtb3RlRWxlbWVudCwgdm0gPT4gdm0uZWxlbWVudHMoKS5wb3BSZW1vdGVFbGVtZW50KCkpO1xuXG5jbGFzcyBDbGFzc0xpc3Qge1xuICBwcml2YXRlIGxpc3Q6IE9wdGlvbjxSZWZlcmVuY2U8c3RyaW5nPltdPiA9IG51bGw7XG4gIHByaXZhdGUgaXNDb25zdCA9IHRydWU7XG5cbiAgYXBwZW5kKHJlZmVyZW5jZTogUmVmZXJlbmNlPHN0cmluZz4pIHtcbiAgICBsZXQgeyBsaXN0LCBpc0NvbnN0IH0gPSB0aGlzO1xuXG4gICAgaWYgKGxpc3QgPT09IG51bGwpIGxpc3QgPSB0aGlzLmxpc3QgPSBbXTtcblxuICAgIGxpc3QucHVzaChyZWZlcmVuY2UpO1xuICAgIHRoaXMuaXNDb25zdCA9IGlzQ29uc3QgJiYgaXNDb25zdFJlZmVyZW5jZShyZWZlcmVuY2UpO1xuICB9XG5cbiAgdG9SZWZlcmVuY2UoKTogUmVmZXJlbmNlPE9wdGlvbjxzdHJpbmc+PiB7XG4gICAgbGV0IHsgbGlzdCwgaXNDb25zdCB9ID0gdGhpcztcblxuICAgIGlmICghbGlzdCkgcmV0dXJuIE5VTExfUkVGRVJFTkNFO1xuXG4gICAgaWYgKGlzQ29uc3QpIHJldHVybiBQcmltaXRpdmVSZWZlcmVuY2UuY3JlYXRlKHRvQ2xhc3NOYW1lKGxpc3QpKTtcblxuICAgIHJldHVybiBuZXcgQ2xhc3NMaXN0UmVmZXJlbmNlKGxpc3QpO1xuICB9XG5cbn1cblxuY2xhc3MgQ2xhc3NMaXN0UmVmZXJlbmNlIGV4dGVuZHMgQ2FjaGVkUmVmZXJlbmNlPE9wdGlvbjxzdHJpbmc+PiB7XG4gIHB1YmxpYyB0YWc6IFRhZztcbiAgcHJpdmF0ZSBsaXN0OiBSZWZlcmVuY2U8c3RyaW5nPltdID0gW107XG5cbiAgY29uc3RydWN0b3IobGlzdDogUmVmZXJlbmNlPHN0cmluZz5bXSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy50YWcgPSBjb21iaW5lVGFnZ2VkKGxpc3QpO1xuICAgIHRoaXMubGlzdCA9IGxpc3Q7XG4gIH1cblxuICBwcm90ZWN0ZWQgY29tcHV0ZSgpOiBPcHRpb248c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRvQ2xhc3NOYW1lKHRoaXMubGlzdCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdG9DbGFzc05hbWUobGlzdDogUmVmZXJlbmNlPHN0cmluZz5bXSk6IE9wdGlvbjxzdHJpbmc+IHtcbiAgbGV0IHJldDogT3BhcXVlW10gPSBbXTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgdmFsdWU6IEZJWE1FPE9wYXF1ZSwgJ3VzZSBPcGFxdWUgYW5kIG5vcm1hbGl6ZSc+ID0gbGlzdFtpXS52YWx1ZSgpO1xuICAgIGlmICh2YWx1ZSAhPT0gZmFsc2UgJiYgdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkgcmV0LnB1c2godmFsdWUpO1xuICB9XG5cbiAgcmV0dXJuIChyZXQubGVuZ3RoID09PSAwKSA/IG51bGwgOiByZXQuam9pbignICcpO1xufVxuXG5leHBvcnQgY2xhc3MgU2ltcGxlRWxlbWVudE9wZXJhdGlvbnMgaW1wbGVtZW50cyBFbGVtZW50T3BlcmF0aW9ucyB7XG4gIHByaXZhdGUgb3Bjb2RlczogT3B0aW9uPFVwZGF0aW5nT3Bjb2RlW10+ID0gbnVsbDtcbiAgcHJpdmF0ZSBjbGFzc0xpc3Q6IE9wdGlvbjxDbGFzc0xpc3Q+ID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVudjogRW52aXJvbm1lbnQpIHtcbiAgfVxuXG4gIGFkZFN0YXRpY0F0dHJpYnV0ZShlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKG5hbWUgPT09ICdjbGFzcycpIHtcbiAgICAgIHRoaXMuYWRkQ2xhc3MoUHJpbWl0aXZlUmVmZXJlbmNlLmNyZWF0ZSh2YWx1ZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCkuc2V0QXR0cmlidXRlKGVsZW1lbnQsIG5hbWUsIHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBhZGRTdGF0aWNBdHRyaWJ1dGVOUyhlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZXNwYWNlOiBzdHJpbmcsIG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuZW52LmdldEFwcGVuZE9wZXJhdGlvbnMoKS5zZXRBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZSk7XG4gIH1cblxuICBhZGREeW5hbWljQXR0cmlidXRlKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lOiBzdHJpbmcsIHJlZmVyZW5jZTogUmVmZXJlbmNlPHN0cmluZz4sIGlzVHJ1c3Rpbmc6IGJvb2xlYW4pIHtcbiAgICBpZiAobmFtZSA9PT0gJ2NsYXNzJykge1xuICAgICAgdGhpcy5hZGRDbGFzcyhyZWZlcmVuY2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgYXR0cmlidXRlTWFuYWdlciA9IHRoaXMuZW52LmF0dHJpYnV0ZUZvcihlbGVtZW50LCBuYW1lLCBpc1RydXN0aW5nKTtcbiAgICAgIGxldCBhdHRyaWJ1dGUgPSBuZXcgRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCBuYW1lLCByZWZlcmVuY2UpO1xuXG4gICAgICB0aGlzLmFkZEF0dHJpYnV0ZShhdHRyaWJ1dGUpO1xuICAgIH1cbiAgfVxuXG4gIGFkZER5bmFtaWNBdHRyaWJ1dGVOUyhlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZXNwYWNlOiBTaW1wbGUuTmFtZXNwYWNlLCBuYW1lOiBzdHJpbmcsIHJlZmVyZW5jZTogUGF0aFJlZmVyZW5jZTxzdHJpbmc+LCBpc1RydXN0aW5nOiBib29sZWFuKSB7XG4gICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSB0aGlzLmVudi5hdHRyaWJ1dGVGb3IoZWxlbWVudCwgbmFtZSwgaXNUcnVzdGluZywgbmFtZXNwYWNlKTtcbiAgICBsZXQgbnNBdHRyaWJ1dGUgPSBuZXcgRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCBuYW1lLCByZWZlcmVuY2UsIG5hbWVzcGFjZSk7XG5cbiAgICB0aGlzLmFkZEF0dHJpYnV0ZShuc0F0dHJpYnV0ZSk7XG4gIH1cblxuICBmbHVzaChlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgdm06IFZNKSB7XG4gICAgbGV0IHsgZW52IH0gPSB2bTtcbiAgICBsZXQgeyBvcGNvZGVzLCBjbGFzc0xpc3QgfSA9IHRoaXM7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgb3Bjb2RlcyAmJiBpIDwgb3Bjb2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdm0udXBkYXRlV2l0aChvcGNvZGVzW2ldKTtcbiAgICB9XG5cbiAgICBpZiAoY2xhc3NMaXN0KSB7XG4gICAgICBsZXQgYXR0cmlidXRlTWFuYWdlciA9IGVudi5hdHRyaWJ1dGVGb3IoZWxlbWVudCwgJ2NsYXNzJywgZmFsc2UpO1xuICAgICAgbGV0IGF0dHJpYnV0ZSA9IG5ldyBEeW5hbWljQXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZU1hbmFnZXIsICdjbGFzcycsIGNsYXNzTGlzdC50b1JlZmVyZW5jZSgpKTtcbiAgICAgIGxldCBvcGNvZGUgPSBhdHRyaWJ1dGUuZmx1c2goZW52KTtcblxuICAgICAgaWYgKG9wY29kZSkge1xuICAgICAgICB2bS51cGRhdGVXaXRoKG9wY29kZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5vcGNvZGVzID0gbnVsbDtcbiAgICB0aGlzLmNsYXNzTGlzdCA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGFkZENsYXNzKHJlZmVyZW5jZTogUmVmZXJlbmNlPHN0cmluZz4pIHtcbiAgICBsZXQgeyBjbGFzc0xpc3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIWNsYXNzTGlzdCkge1xuICAgICAgY2xhc3NMaXN0ID0gdGhpcy5jbGFzc0xpc3QgPSBuZXcgQ2xhc3NMaXN0KCk7XG4gICAgfVxuXG4gICAgY2xhc3NMaXN0LmFwcGVuZChyZWZlcmVuY2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRBdHRyaWJ1dGUoYXR0cmlidXRlOiBBdHRyaWJ1dGUpIHtcbiAgICBsZXQgb3Bjb2RlID0gYXR0cmlidXRlLmZsdXNoKHRoaXMuZW52KTtcblxuICAgIGlmIChvcGNvZGUpIHtcbiAgICAgIGxldCB7IG9wY29kZXMgfSA9IHRoaXM7XG5cbiAgICAgIGlmICghb3Bjb2Rlcykge1xuICAgICAgICBvcGNvZGVzID0gdGhpcy5vcGNvZGVzID0gW107XG4gICAgICB9XG5cbiAgICAgIG9wY29kZXMucHVzaChvcGNvZGUpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50RWxlbWVudE9wZXJhdGlvbnMgaW1wbGVtZW50cyBFbGVtZW50T3BlcmF0aW9ucyB7XG4gIHByaXZhdGUgYXR0cmlidXRlTmFtZXM6IE9wdGlvbjxzdHJpbmdbXT4gPSBudWxsO1xuICBwcml2YXRlIGF0dHJpYnV0ZXM6IE9wdGlvbjxBdHRyaWJ1dGVbXT4gPSBudWxsO1xuICBwcml2YXRlIGNsYXNzTGlzdDogT3B0aW9uPENsYXNzTGlzdD4gPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZW52OiBFbnZpcm9ubWVudCkge1xuICB9XG5cbiAgYWRkU3RhdGljQXR0cmlidXRlKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAobmFtZSA9PT0gJ2NsYXNzJykge1xuICAgICAgdGhpcy5hZGRDbGFzcyhQcmltaXRpdmVSZWZlcmVuY2UuY3JlYXRlKHZhbHVlKSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNob3VsZEFkZEF0dHJpYnV0ZShuYW1lKSkge1xuICAgICAgdGhpcy5hZGRBdHRyaWJ1dGUobmFtZSwgbmV3IFN0YXRpY0F0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCB2YWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIGFkZFN0YXRpY0F0dHJpYnV0ZU5TKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lc3BhY2U6IHN0cmluZywgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuc2hvdWxkQWRkQXR0cmlidXRlKG5hbWUpKSB7XG4gICAgICB0aGlzLmFkZEF0dHJpYnV0ZShuYW1lLCBuZXcgU3RhdGljQXR0cmlidXRlKGVsZW1lbnQsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UpKTtcbiAgICB9XG4gIH1cblxuICBhZGREeW5hbWljQXR0cmlidXRlKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lOiBzdHJpbmcsIHJlZmVyZW5jZTogUGF0aFJlZmVyZW5jZTxzdHJpbmc+LCBpc1RydXN0aW5nOiBib29sZWFuKSB7XG4gICAgaWYgKG5hbWUgPT09ICdjbGFzcycpIHtcbiAgICAgIHRoaXMuYWRkQ2xhc3MocmVmZXJlbmNlKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2hvdWxkQWRkQXR0cmlidXRlKG5hbWUpKSB7XG4gICAgICBsZXQgYXR0cmlidXRlTWFuYWdlciA9IHRoaXMuZW52LmF0dHJpYnV0ZUZvcihlbGVtZW50LCBuYW1lLCBpc1RydXN0aW5nKTtcbiAgICAgIGxldCBhdHRyaWJ1dGUgPSBuZXcgRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCBuYW1lLCByZWZlcmVuY2UpO1xuXG4gICAgICB0aGlzLmFkZEF0dHJpYnV0ZShuYW1lLCBhdHRyaWJ1dGUpO1xuICAgIH1cbiAgfVxuXG4gIGFkZER5bmFtaWNBdHRyaWJ1dGVOUyhlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZXNwYWNlOiBTaW1wbGUuTmFtZXNwYWNlLCBuYW1lOiBzdHJpbmcsIHJlZmVyZW5jZTogUGF0aFJlZmVyZW5jZTxzdHJpbmc+LCBpc1RydXN0aW5nOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMuc2hvdWxkQWRkQXR0cmlidXRlKG5hbWUpKSB7XG4gICAgICBsZXQgYXR0cmlidXRlTWFuYWdlciA9IHRoaXMuZW52LmF0dHJpYnV0ZUZvcihlbGVtZW50LCBuYW1lLCBpc1RydXN0aW5nLCBuYW1lc3BhY2UpO1xuICAgICAgbGV0IG5zQXR0cmlidXRlID0gbmV3IER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlTWFuYWdlciwgbmFtZSwgcmVmZXJlbmNlLCBuYW1lc3BhY2UpO1xuXG4gICAgICB0aGlzLmFkZEF0dHJpYnV0ZShuYW1lLCBuc0F0dHJpYnV0ZSk7XG4gICAgfVxuICB9XG5cbiAgZmx1c2goZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIHZtOiBWTSkge1xuICAgIGxldCB7IGVudiB9ID0gdGhpcztcbiAgICBsZXQgeyBhdHRyaWJ1dGVzLCBjbGFzc0xpc3QgfSA9IHRoaXM7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgYXR0cmlidXRlcyAmJiBpIDwgYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IG9wY29kZSA9IGF0dHJpYnV0ZXNbaV0uZmx1c2goZW52KTtcblxuICAgICAgaWYgKG9wY29kZSkge1xuICAgICAgICB2bS51cGRhdGVXaXRoKG9wY29kZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNsYXNzTGlzdCkge1xuICAgICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSBlbnYuYXR0cmlidXRlRm9yKGVsZW1lbnQsICdjbGFzcycsIGZhbHNlKTtcbiAgICAgIGxldCBhdHRyaWJ1dGUgPSBuZXcgRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCAnY2xhc3MnLCBjbGFzc0xpc3QudG9SZWZlcmVuY2UoKSk7XG4gICAgICBsZXQgb3Bjb2RlID0gYXR0cmlidXRlLmZsdXNoKGVudik7XG5cbiAgICAgIGlmIChvcGNvZGUpIHtcbiAgICAgICAgdm0udXBkYXRlV2l0aChvcGNvZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkQWRkQXR0cmlidXRlKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5hdHRyaWJ1dGVOYW1lcyB8fCB0aGlzLmF0dHJpYnV0ZU5hbWVzLmluZGV4T2YobmFtZSkgPT09IC0xO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRDbGFzcyhyZWZlcmVuY2U6IFBhdGhSZWZlcmVuY2U8c3RyaW5nPikge1xuICAgIGxldCB7IGNsYXNzTGlzdCB9ID0gdGhpcztcblxuICAgIGlmICghY2xhc3NMaXN0KSB7XG4gICAgICBjbGFzc0xpc3QgPSB0aGlzLmNsYXNzTGlzdCA9IG5ldyBDbGFzc0xpc3QoKTtcbiAgICB9XG5cbiAgICBjbGFzc0xpc3QuYXBwZW5kKHJlZmVyZW5jZSk7XG4gIH1cblxuICBwcml2YXRlIGFkZEF0dHJpYnV0ZShuYW1lOiBzdHJpbmcsIGF0dHJpYnV0ZTogQXR0cmlidXRlKSB7XG4gICAgbGV0IHsgYXR0cmlidXRlTmFtZXMsIGF0dHJpYnV0ZXMgfSA9IHRoaXM7XG5cbiAgICBpZiAoIWF0dHJpYnV0ZU5hbWVzKSB7XG4gICAgICBhdHRyaWJ1dGVOYW1lcyA9IHRoaXMuYXR0cmlidXRlTmFtZXMgPSBbXTtcbiAgICAgIGF0dHJpYnV0ZXMgPSB0aGlzLmF0dHJpYnV0ZXMgPSBbXTtcbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVOYW1lcy5wdXNoKG5hbWUpO1xuICAgIHVud3JhcChhdHRyaWJ1dGVzKS5wdXNoKGF0dHJpYnV0ZSk7XG4gIH1cbn1cblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkZsdXNoRWxlbWVudCwgdm0gPT4ge1xuICBsZXQgc3RhY2sgPSB2bS5lbGVtZW50cygpO1xuXG4gIGxldCBhY3Rpb24gPSAnRmx1c2hFbGVtZW50T3Bjb2RlI2V2YWx1YXRlJztcbiAgc3RhY2suZXhwZWN0T3BlcmF0aW9ucyhhY3Rpb24pLmZsdXNoKHN0YWNrLmV4cGVjdENvbnN0cnVjdGluZyhhY3Rpb24pLCB2bSk7XG4gIHN0YWNrLmZsdXNoRWxlbWVudCgpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5DbG9zZUVsZW1lbnQsIHZtID0+IHZtLmVsZW1lbnRzKCkuY2xvc2VFbGVtZW50KCkpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuU3RhdGljQXR0ciwgKHZtLCB7IG9wMTogX25hbWUsIG9wMjogX3ZhbHVlLCBvcDM6IF9uYW1lc3BhY2UgfSkgPT4ge1xuICBsZXQgbmFtZSA9IHZtLmNvbnN0YW50cy5nZXRTdHJpbmcoX25hbWUpO1xuICBsZXQgdmFsdWUgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKF92YWx1ZSk7XG5cbiAgaWYgKF9uYW1lc3BhY2UpIHtcbiAgICBsZXQgbmFtZXNwYWNlID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyhfbmFtZXNwYWNlKTtcbiAgICB2bS5lbGVtZW50cygpLnNldFN0YXRpY0F0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSwgdmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHZtLmVsZW1lbnRzKCkuc2V0U3RhdGljQXR0cmlidXRlKG5hbWUsIHZhbHVlKTtcbiAgfVxufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5Nb2RpZmllciwgKHZtLCB7IG9wMTogX21hbmFnZXIgfSkgPT4ge1xuICBsZXQgbWFuYWdlciA9IHZtLmNvbnN0YW50cy5nZXRPdGhlcjxNb2RpZmllck1hbmFnZXI8T3BhcXVlPj4oX21hbmFnZXIpO1xuICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgbGV0IGFyZ3MgPSBzdGFjay5wb3A8QXJndW1lbnRzPigpO1xuICBsZXQgdGFnID0gYXJncy50YWc7XG4gIGxldCB7IGNvbnN0cnVjdGluZzogZWxlbWVudCwgdXBkYXRlT3BlcmF0aW9ucyB9ID0gdm0uZWxlbWVudHMoKTtcbiAgbGV0IGR5bmFtaWNTY29wZSA9IHZtLmR5bmFtaWNTY29wZSgpO1xuICBsZXQgbW9kaWZpZXIgPSBtYW5hZ2VyLmNyZWF0ZShlbGVtZW50IGFzIEZJWF9SRUlGSUNBVElPTjxFbGVtZW50PiwgYXJncywgZHluYW1pY1Njb3BlLCB1cGRhdGVPcGVyYXRpb25zKTtcblxuICBhcmdzLmNsZWFyKCk7XG5cbiAgdm0uZW52LnNjaGVkdWxlSW5zdGFsbE1vZGlmaWVyKG1vZGlmaWVyLCBtYW5hZ2VyKTtcbiAgbGV0IGRlc3RydWN0b3IgPSBtYW5hZ2VyLmdldERlc3RydWN0b3IobW9kaWZpZXIpO1xuXG4gIGlmIChkZXN0cnVjdG9yKSB7XG4gICAgdm0ubmV3RGVzdHJveWFibGUoZGVzdHJ1Y3Rvcik7XG4gIH1cblxuICB2bS51cGRhdGVXaXRoKG5ldyBVcGRhdGVNb2RpZmllck9wY29kZShcbiAgICB0YWcsXG4gICAgbWFuYWdlcixcbiAgICBtb2RpZmllclxuICApKTtcbn0pO1xuXG5leHBvcnQgY2xhc3MgVXBkYXRlTW9kaWZpZXJPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJ1cGRhdGUtbW9kaWZpZXJcIjtcbiAgcHJpdmF0ZSBsYXN0VXBkYXRlZDogUmV2aXNpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHRhZzogVGFnLFxuICAgIHByaXZhdGUgbWFuYWdlcjogTW9kaWZpZXJNYW5hZ2VyPE9wYXF1ZT4sXG4gICAgcHJpdmF0ZSBtb2RpZmllcjogT3BhcXVlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5sYXN0VXBkYXRlZCA9IHRhZy52YWx1ZSgpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICBsZXQgeyBtYW5hZ2VyLCBtb2RpZmllciwgdGFnLCBsYXN0VXBkYXRlZCB9ID0gdGhpcztcblxuICAgIGlmICghdGFnLnZhbGlkYXRlKGxhc3RVcGRhdGVkKSkge1xuICAgICAgdm0uZW52LnNjaGVkdWxlVXBkYXRlTW9kaWZpZXIobW9kaWZpZXIsIG1hbmFnZXIpO1xuICAgICAgdGhpcy5sYXN0VXBkYXRlZCA9IHRhZy52YWx1ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgIHR5cGU6IHRoaXMudHlwZVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdHRyaWJ1dGUge1xuICBuYW1lOiBzdHJpbmc7XG4gIGZsdXNoKGVudjogRW52aXJvbm1lbnQpOiBPcHRpb248VXBkYXRpbmdPcGNvZGU+O1xufVxuXG5leHBvcnQgY2xhc3MgU3RhdGljQXR0cmlidXRlIGltcGxlbWVudHMgQXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbGVtZW50OiBTaW1wbGUuRWxlbWVudCxcbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nLFxuICAgIHByaXZhdGUgdmFsdWU6IHN0cmluZyxcbiAgICBwcml2YXRlIG5hbWVzcGFjZT86IHN0cmluZ1xuICApIHt9XG5cbiAgZmx1c2goZW52OiBFbnZpcm9ubWVudCk6IE9wdGlvbjxVcGRhdGluZ09wY29kZT4ge1xuICAgIGVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCkuc2V0QXR0cmlidXRlKHRoaXMuZWxlbWVudCwgdGhpcy5uYW1lLCB0aGlzLnZhbHVlLCB0aGlzLm5hbWVzcGFjZSk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIER5bmFtaWNBdHRyaWJ1dGUgaW1wbGVtZW50cyBBdHRyaWJ1dGUgIHtcbiAgcHJpdmF0ZSBjYWNoZTogT3B0aW9uPFJlZmVyZW5jZUNhY2hlPE9wYXF1ZT4+ID0gbnVsbDtcblxuICBwdWJsaWMgdGFnOiBUYWc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbGVtZW50OiBTaW1wbGUuRWxlbWVudCxcbiAgICBwcml2YXRlIGF0dHJpYnV0ZU1hbmFnZXI6IEF0dHJpYnV0ZU1hbmFnZXIsXG4gICAgcHVibGljIG5hbWU6IHN0cmluZyxcbiAgICBwcml2YXRlIHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4sXG4gICAgcHJpdmF0ZSBuYW1lc3BhY2U/OiBTaW1wbGUuTmFtZXNwYWNlXG4gICkge1xuICAgIHRoaXMudGFnID0gcmVmZXJlbmNlLnRhZztcbiAgfVxuXG4gIHBhdGNoKGVudjogRW52aXJvbm1lbnQpIHtcbiAgICBsZXQgeyBlbGVtZW50LCBjYWNoZSB9ID0gdGhpcztcblxuICAgIGxldCB2YWx1ZSA9IGV4cGVjdChjYWNoZSwgJ211c3QgcGF0Y2ggYWZ0ZXIgZmx1c2gnKS5yZXZhbGlkYXRlKCk7XG5cbiAgICBpZiAoaXNNb2RpZmllZCh2YWx1ZSkpIHtcbiAgICAgIHRoaXMuYXR0cmlidXRlTWFuYWdlci51cGRhdGVBdHRyaWJ1dGUoZW52LCBlbGVtZW50IGFzIEZJWE1FPEVsZW1lbnQsICduZWVkcyB0byBiZSByZWlmaWVkIHByb3Blcmx5Jz4sIHZhbHVlLCB0aGlzLm5hbWVzcGFjZSk7XG4gICAgfVxuICB9XG5cbiAgZmx1c2goZW52OiBFbnZpcm9ubWVudCk6IE9wdGlvbjxVcGRhdGluZ09wY29kZT4ge1xuICAgIGxldCB7IHJlZmVyZW5jZSwgZWxlbWVudCB9ID0gdGhpcztcblxuICAgIGlmIChpc0NvbnN0UmVmZXJlbmNlKHJlZmVyZW5jZSkpIHtcbiAgICAgIGxldCB2YWx1ZSA9IHJlZmVyZW5jZS52YWx1ZSgpO1xuICAgICAgdGhpcy5hdHRyaWJ1dGVNYW5hZ2VyLnNldEF0dHJpYnV0ZShlbnYsIGVsZW1lbnQsIHZhbHVlLCB0aGlzLm5hbWVzcGFjZSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGNhY2hlID0gdGhpcy5jYWNoZSA9IG5ldyBSZWZlcmVuY2VDYWNoZShyZWZlcmVuY2UpO1xuICAgICAgbGV0IHZhbHVlID0gY2FjaGUucGVlaygpO1xuICAgICAgdGhpcy5hdHRyaWJ1dGVNYW5hZ2VyLnNldEF0dHJpYnV0ZShlbnYsIGVsZW1lbnQsIHZhbHVlLCB0aGlzLm5hbWVzcGFjZSk7XG4gICAgICByZXR1cm4gbmV3IFBhdGNoRWxlbWVudE9wY29kZSh0aGlzKTtcbiAgICB9XG4gIH1cblxuICB0b0pTT04oKTogRGljdDxPcHRpb248c3RyaW5nPj4ge1xuICAgIGxldCB7IGVsZW1lbnQsIG5hbWVzcGFjZSwgbmFtZSwgY2FjaGUgfSA9IHRoaXM7XG5cbiAgICBsZXQgZm9ybWF0dGVkRWxlbWVudCA9IGZvcm1hdEVsZW1lbnQoZWxlbWVudCk7XG4gICAgbGV0IGxhc3RWYWx1ZSA9IGV4cGVjdChjYWNoZSwgJ211c3Qgc2VyaWFsaXplIGFmdGVyIGZsdXNoJykucGVlaygpIGFzIHN0cmluZztcblxuICAgIGlmIChuYW1lc3BhY2UpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGVsZW1lbnQ6IGZvcm1hdHRlZEVsZW1lbnQsXG4gICAgICAgIHR5cGU6ICdhdHRyaWJ1dGUnLFxuICAgICAgICBuYW1lc3BhY2UsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIGxhc3RWYWx1ZVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZWxlbWVudDogZm9ybWF0dGVkRWxlbWVudCxcbiAgICAgIHR5cGU6ICdhdHRyaWJ1dGUnLFxuICAgICAgbmFtZXNwYWNlOiBuYW1lc3BhY2UgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBuYW1lc3BhY2UsXG4gICAgICBuYW1lLFxuICAgICAgbGFzdFZhbHVlXG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmb3JtYXRFbGVtZW50KGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50KTogc3RyaW5nIHtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGA8JHtlbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKX0gLz5gKTtcbn1cblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkR5bmFtaWNBdHRyTlMsICh2bSwgeyBvcDE6IF9uYW1lLCBvcDI6IF9uYW1lc3BhY2UsIG9wMzogdHJ1c3RpbmcgfSkgPT4ge1xuICBsZXQgbmFtZSA9IHZtLmNvbnN0YW50cy5nZXRTdHJpbmcoX25hbWUpO1xuICBsZXQgbmFtZXNwYWNlID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyhfbmFtZXNwYWNlKTtcbiAgbGV0IHJlZmVyZW5jZSA9IHZtLnN0YWNrLnBvcDxWZXJzaW9uZWRSZWZlcmVuY2U8c3RyaW5nPj4oKTtcbiAgdm0uZWxlbWVudHMoKS5zZXREeW5hbWljQXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lLCByZWZlcmVuY2UsICEhdHJ1c3RpbmcpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5EeW5hbWljQXR0ciwgKHZtLCB7IG9wMTogX25hbWUsIG9wMjogdHJ1c3RpbmcgfSkgPT4ge1xuICBsZXQgbmFtZSA9IHZtLmNvbnN0YW50cy5nZXRTdHJpbmcoX25hbWUpO1xuICBsZXQgcmVmZXJlbmNlID0gdm0uc3RhY2sucG9wPFZlcnNpb25lZFJlZmVyZW5jZTxzdHJpbmc+PigpO1xuICB2bS5lbGVtZW50cygpLnNldER5bmFtaWNBdHRyaWJ1dGUobmFtZSwgcmVmZXJlbmNlLCAhIXRydXN0aW5nKTtcbn0pO1xuXG5leHBvcnQgY2xhc3MgUGF0Y2hFbGVtZW50T3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwicGF0Y2gtZWxlbWVudFwiO1xuXG4gIHByaXZhdGUgb3BlcmF0aW9uOiBEeW5hbWljQXR0cmlidXRlO1xuXG4gIGNvbnN0cnVjdG9yKG9wZXJhdGlvbjogRHluYW1pY0F0dHJpYnV0ZSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy50YWcgPSBvcGVyYXRpb24udGFnO1xuICAgIHRoaXMub3BlcmF0aW9uID0gb3BlcmF0aW9uO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICB0aGlzLm9wZXJhdGlvbi5wYXRjaCh2bS5lbnYpO1xuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIGxldCB7IF9ndWlkLCB0eXBlLCBvcGVyYXRpb24gfSA9IHRoaXM7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZDogX2d1aWQsXG4gICAgICB0eXBlLFxuICAgICAgZGV0YWlsczogb3BlcmF0aW9uLnRvSlNPTigpXG4gICAgfTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZG9tLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFPL0MsT0FBTyxFQUNMLGVBQWUsRUFHZixjQUFjLEVBSWQsYUFBYSxFQUNiLE9BQU8sSUFBSSxnQkFBZ0IsRUFDM0IsVUFBVSxFQUNYLE1BQU0sb0JBQW9CLENBQUM7QUFFNUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR3RFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUIsT0FBTyxFQUFFLGNBQWMsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUV6RCxjQUFjLENBQUMsR0FBRyxDQUFDLGFBQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUU7SUFDNUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3pELENBQUMsQ0FBQyxDQUFDO0FBRUgsY0FBYyxDQUFDLEdBQUcsQ0FBQyxnQkFBVSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUMvQyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDNUQsQ0FBQyxDQUFDLENBQUM7QUFFSCxjQUFjLENBQUMsR0FBRyxDQUFDLG9CQUFjLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFO0lBQ2xELEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMs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UyxHQUFHLFNBQVMsQ0FBQztJQUM3QixDQUFDO0lBRUQsUUFBUSxDQUFDLEVBQWM7UUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFVwZGF0aW5nT3Bjb2RlIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBWTSwgVXBkYXRpbmdWTSB9IGZyb20gJy4uLy4uL3ZtJztcbmltcG9ydCB7IEFyZ3VtZW50cyB9IGZyb20gJy4uLy4uL3ZtL2FyZ3VtZW50cyc7XG5pbXBvcnQgKiBhcyBTaW1wbGUgZnJvbSAnLi4vLi4vZG9tL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRklYX1JFSUZJQ0FUSU9OIH0gZnJvbSAnLi4vLi4vZG9tL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBGSVhNRSwgT3B0aW9uLCBPcGFxdWUgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7XG4gIENhY2hlZFJlZmVyZW5jZSxcbiAgUmVmZXJlbmNlLFxuICBWZXJzaW9uZWRSZWZlcmVuY2UsXG4gIFJlZmVyZW5jZUNhY2hlLFxuICBUYWcsXG4gIFJldmlzaW9uLFxuICBQYXRoUmVmZXJlbmNlLFxuICBjb21iaW5lVGFnZ2VkLFxuICBpc0NvbnN0IGFzIGlzQ29uc3RSZWZlcmVuY2UsXG4gIGlzTW9kaWZpZWRcbn0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IE1vZGlmaWVyTWFuYWdlciB9IGZyb20gJy4uLy4uL21vZGlmaWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTlVMTF9SRUZFUkVOQ0UsIFByaW1pdGl2ZVJlZmVyZW5jZSB9IGZyb20gJy4uLy4uL3JlZmVyZW5jZXMnO1xuaW1wb3J0IHsgQXR0cmlidXRlTWFuYWdlciB9IGZyb20gJy4uLy4uL2RvbS9hdHRyaWJ1dGUtbWFuYWdlcnMnO1xuaW1wb3J0IHsgRWxlbWVudE9wZXJhdGlvbnMgfSBmcm9tICcuLi8uLi9idWlsZGVyJztcbmltcG9ydCB7IEFzc2VydCB9IGZyb20gJy4vdm0nO1xuaW1wb3J0IHsgQVBQRU5EX09QQ09ERVMsIE9wIGFzIE9wIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5UZXh0LCAodm0sIHsgb3AxOiB0ZXh0IH0pID0+IHtcbiAgdm0uZWxlbWVudHMoKS5hcHBlbmRUZXh0KHZtLmNvbnN0YW50cy5nZXRTdHJpbmcodGV4dCkpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5Db21tZW50LCAodm0sIHsgb3AxOiB0ZXh0IH0pID0+IHtcbiAgdm0uZWxlbWVudHMoKS5hcHBlbmRDb21tZW50KHZtLmNvbnN0YW50cy5nZXRTdHJpbmcodGV4dCkpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5PcGVuRWxlbWVudCwgKHZtLCB7IG9wMTogdGFnIH0pID0+IHtcbiAgdm0uZWxlbWVudHMoKS5vcGVuRWxlbWVudCh2bS5jb25zdGFudHMuZ2V0U3RyaW5nKHRhZykpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5PcGVuRWxlbWVudFdpdGhPcGVyYXRpb25zLCAodm0sIHsgb3AxOiB0YWcgfSkgPT4ge1xuICBsZXQgdGFnTmFtZSA9IHZtLmNvbnN0YW50cy5nZXRTdHJpbmcodGFnKTtcbiAgbGV0IG9wZXJhdGlvbnMgPSB2bS5zdGFjay5wb3A8RWxlbWVudE9wZXJhdGlvbnM+KCk7XG4gIHZtLmVsZW1lbnRzKCkub3BlbkVsZW1lbnQodGFnTmFtZSwgb3BlcmF0aW9ucyk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLk9wZW5EeW5hbWljRWxlbWVudCwgdm0gPT4ge1xuICBsZXQgb3BlcmF0aW9ucyA9IHZtLnN0YWNrLnBvcDxFbGVtZW50T3BlcmF0aW9ucz4oKTtcbiAgbGV0IHRhZ05hbWUgPSB2bS5zdGFjay5wb3A8UmVmZXJlbmNlPHN0cmluZz4+KCkudmFsdWUoKTtcbiAgdm0uZWxlbWVudHMoKS5vcGVuRWxlbWVudCh0YWdOYW1lLCBvcGVyYXRpb25zKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUHVzaFJlbW90ZUVsZW1lbnQsIHZtID0+IHtcbiAgbGV0IGVsZW1lbnRSZWYgPSB2bS5zdGFjay5wb3A8UmVmZXJlbmNlPFNpbXBsZS5FbGVtZW50Pj4oKTtcbiAgbGV0IG5leHRTaWJsaW5nUmVmID0gdm0uc3RhY2sucG9wPFJlZmVyZW5jZTxPcHRpb248U2ltcGxlLk5vZGU+Pj4oKTtcblxuICBsZXQgZWxlbWVudDogU2ltcGxlLkVsZW1lbnQ7XG4gIGxldCBuZXh0U2libGluZzogT3B0aW9uPFNpbXBsZS5Ob2RlPjtcblxuICBpZiAoaXNDb25zdFJlZmVyZW5jZShlbGVtZW50UmVmKSkge1xuICAgIGVsZW1lbnQgPSBlbGVtZW50UmVmLnZhbHVlKCk7XG4gIH0gZWxzZSB7XG4gICAgbGV0IGNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKGVsZW1lbnRSZWYpO1xuICAgIGVsZW1lbnQgPSBjYWNoZS5wZWVrKCk7XG4gICAgdm0udXBkYXRlV2l0aChuZXcgQXNzZXJ0KGNhY2hlKSk7XG4gIH1cblxuICBpZiAoaXNDb25zdFJlZmVyZW5jZShuZXh0U2libGluZ1JlZikpIHtcbiAgICBuZXh0U2libGluZyA9IG5leHRTaWJsaW5nUmVmLnZhbHVlKCk7XG4gIH0gZWxzZSB7XG4gICAgbGV0IGNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKG5leHRTaWJsaW5nUmVmKTtcbiAgICBuZXh0U2libGluZyA9IGNhY2hlLnBlZWsoKTtcbiAgICB2bS51cGRhdGVXaXRoKG5ldyBBc3NlcnQoY2FjaGUpKTtcbiAgfVxuXG4gIHZtLmVsZW1lbnRzKCkucHVzaFJlbW90ZUVsZW1lbnQoZWxlbWVudCwgbmV4dFNpYmxpbmcpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5Qb3BSZW1vdGVFbGVtZW50LCB2bSA9PiB2bS5lbGVtZW50cygpLnBvcFJlbW90ZUVsZW1lbnQoKSk7XG5cbmNsYXNzIENsYXNzTGlzdCB7XG4gIHByaXZhdGUgbGlzdDogT3B0aW9uPFJlZmVyZW5jZTxzdHJpbmc+W10+ID0gbnVsbDtcbiAgcHJpdmF0ZSBpc0NvbnN0ID0gdHJ1ZTtcblxuICBhcHBlbmQocmVmZXJlbmNlOiBSZWZlcmVuY2U8c3RyaW5nPikge1xuICAgIGxldCB7IGxpc3QsIGlzQ29uc3QgfSA9IHRoaXM7XG5cbiAgICBpZiAobGlzdCA9PT0gbnVsbCkgbGlzdCA9IHRoaXMubGlzdCA9IFtdO1xuXG4gICAgbGlzdC5wdXNoKHJlZmVyZW5jZSk7XG4gICAgdGhpcy5pc0NvbnN0ID0gaXNDb25zdCAmJiBpc0NvbnN0UmVmZXJlbmNlKHJlZmVyZW5jZSk7XG4gIH1cblxuICB0b1JlZmVyZW5jZSgpOiBSZWZlcmVuY2U8T3B0aW9uPHN0cmluZz4+IHtcbiAgICBsZXQgeyBsaXN0LCBpc0NvbnN0IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFsaXN0KSByZXR1cm4gTlVMTF9SRUZFUkVOQ0U7XG5cbiAgICBpZiAoaXNDb25zdCkgcmV0dXJuIFByaW1pdGl2ZVJlZmVyZW5jZS5jcmVhdGUodG9DbGFzc05hbWUobGlzdCkpO1xuXG4gICAgcmV0dXJuIG5ldyBDbGFzc0xpc3RSZWZlcmVuY2UobGlzdCk7XG4gIH1cblxufVxuXG5jbGFzcyBDbGFzc0xpc3RSZWZlcmVuY2UgZXh0ZW5kcyBDYWNoZWRSZWZlcmVuY2U8T3B0aW9uPHN0cmluZz4+IHtcbiAgcHVibGljIHRhZzogVGFnO1xuICBwcml2YXRlIGxpc3Q6IFJlZmVyZW5jZTxzdHJpbmc+W10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihsaXN0OiBSZWZlcmVuY2U8c3RyaW5nPltdKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnRhZyA9IGNvbWJpbmVUYWdnZWQobGlzdCk7XG4gICAgdGhpcy5saXN0ID0gbGlzdDtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb21wdXRlKCk6IE9wdGlvbjxzdHJpbmc+IHtcbiAgICByZXR1cm4gdG9DbGFzc05hbWUodGhpcy5saXN0KTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0b0NsYXNzTmFtZShsaXN0OiBSZWZlcmVuY2U8c3RyaW5nPltdKTogT3B0aW9uPHN0cmluZz4ge1xuICBsZXQgcmV0OiBPcGFxdWVbXSA9IFtdO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgIGxldCB2YWx1ZTogRklYTUU8T3BhcXVlLCAndXNlIE9wYXF1ZSBhbmQgbm9ybWFsaXplJz4gPSBsaXN0W2ldLnZhbHVlKCk7XG4gICAgaWYgKHZhbHVlICE9PSBmYWxzZSAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSByZXQucHVzaCh2YWx1ZSk7XG4gIH1cblxuICByZXR1cm4gKHJldC5sZW5ndGggPT09IDApID8gbnVsbCA6IHJldC5qb2luKCcgJyk7XG59XG5cbmV4cG9ydCBjbGFzcyBTaW1wbGVFbGVtZW50T3BlcmF0aW9ucyBpbXBsZW1lbnRzIEVsZW1lbnRPcGVyYXRpb25zIHtcbiAgcHJpdmF0ZSBvcGNvZGVzOiBPcHRpb248VXBkYXRpbmdPcGNvZGVbXT4gPSBudWxsO1xuICBwcml2YXRlIGNsYXNzTGlzdDogT3B0aW9uPENsYXNzTGlzdD4gPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZW52OiBFbnZpcm9ubWVudCkge1xuICB9XG5cbiAgYWRkU3RhdGljQXR0cmlidXRlKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAobmFtZSA9PT0gJ2NsYXNzJykge1xuICAgICAgdGhpcy5hZGRDbGFzcyhQcmltaXRpdmVSZWZlcmVuY2UuY3JlYXRlKHZhbHVlKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW52LmdldEFwcGVuZE9wZXJhdGlvbnMoKS5zZXRBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGFkZFN0YXRpY0F0dHJpYnV0ZU5TKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lc3BhY2U6IHN0cmluZywgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5lbnYuZ2V0QXBwZW5kT3BlcmF0aW9ucygpLnNldEF0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlKTtcbiAgfVxuXG4gIGFkZER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5hbWU6IHN0cmluZywgcmVmZXJlbmNlOiBSZWZlcmVuY2U8c3RyaW5nPiwgaXNUcnVzdGluZzogYm9vbGVhbikge1xuICAgIGlmIChuYW1lID09PSAnY2xhc3MnKSB7XG4gICAgICB0aGlzLmFkZENsYXNzKHJlZmVyZW5jZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBhdHRyaWJ1dGVNYW5hZ2VyID0gdGhpcy5lbnYuYXR0cmlidXRlRm9yKGVsZW1lbnQsIG5hbWUsIGlzVHJ1c3RpbmcpO1xuICAgICAgbGV0IGF0dHJpYnV0ZSA9IG5ldyBEeW5hbWljQXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZU1hbmFnZXIsIG5hbWUsIHJlZmVyZW5jZSk7XG5cbiAgICAgIHRoaXMuYWRkQXR0cmlidXRlKGF0dHJpYnV0ZSk7XG4gICAgfVxuICB9XG5cbiAgYWRkRHluYW1pY0F0dHJpYnV0ZU5TKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lc3BhY2U6IFNpbXBsZS5OYW1lc3BhY2UsIG5hbWU6IHN0cmluZywgcmVmZXJlbmNlOiBQYXRoUmVmZXJlbmNlPHN0cmluZz4sIGlzVHJ1c3Rpbmc6IGJvb2xlYW4pIHtcbiAgICBsZXQgYXR0cmlidXRlTWFuYWdlciA9IHRoaXMuZW52LmF0dHJpYnV0ZUZvcihlbGVtZW50LCBuYW1lLCBpc1RydXN0aW5nLCBuYW1lc3BhY2UpO1xuICAgIGxldCBuc0F0dHJpYnV0ZSA9IG5ldyBEeW5hbWljQXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZU1hbmFnZXIsIG5hbWUsIHJlZmVyZW5jZSwgbmFtZXNwYWNlKTtcblxuICAgIHRoaXMuYWRkQXR0cmlidXRlKG5zQXR0cmlidXRlKTtcbiAgfVxuXG4gIGZsdXNoKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCB2bTogVk0pIHtcbiAgICBsZXQgeyBlbnYgfSA9IHZtO1xuICAgIGxldCB7IG9wY29kZXMsIGNsYXNzTGlzdCB9ID0gdGhpcztcblxuICAgIGZvciAobGV0IGkgPSAwOyBvcGNvZGVzICYmIGkgPCBvcGNvZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2bS51cGRhdGVXaXRoKG9wY29kZXNbaV0pO1xuICAgIH1cblxuICAgIGlmIChjbGFzc0xpc3QpIHtcbiAgICAgIGxldCBhdHRyaWJ1dGVNYW5hZ2VyID0gZW52LmF0dHJpYnV0ZUZvcihlbGVtZW50LCAnY2xhc3MnLCBmYWxzZSk7XG4gICAgICBsZXQgYXR0cmlidXRlID0gbmV3IER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlTWFuYWdlciwgJ2NsYXNzJywgY2xhc3NMaXN0LnRvUmVmZXJlbmNlKCkpO1xuICAgICAgbGV0IG9wY29kZSA9IGF0dHJpYnV0ZS5mbHVzaChlbnYpO1xuXG4gICAgICBpZiAob3Bjb2RlKSB7XG4gICAgICAgIHZtLnVwZGF0ZVdpdGgob3Bjb2RlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLm9wY29kZXMgPSBudWxsO1xuICAgIHRoaXMuY2xhc3NMaXN0ID0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgYWRkQ2xhc3MocmVmZXJlbmNlOiBSZWZlcmVuY2U8c3RyaW5nPikge1xuICAgIGxldCB7IGNsYXNzTGlzdCB9ID0gdGhpcztcblxuICAgIGlmICghY2xhc3NMaXN0KSB7XG4gICAgICBjbGFzc0xpc3QgPSB0aGlzLmNsYXNzTGlzdCA9IG5ldyBDbGFzc0xpc3QoKTtcbiAgICB9XG5cbiAgICBjbGFzc0xpc3QuYXBwZW5kKHJlZmVyZW5jZSk7XG4gIH1cblxuICBwcml2YXRlIGFkZEF0dHJpYnV0ZShhdHRyaWJ1dGU6IEF0dHJpYnV0ZSkge1xuICAgIGxldCBvcGNvZGUgPSBhdHRyaWJ1dGUuZmx1c2godGhpcy5lbnYpO1xuXG4gICAgaWYgKG9wY29kZSkge1xuICAgICAgbGV0IHsgb3Bjb2RlcyB9ID0gdGhpcztcblxuICAgICAgaWYgKCFvcGNvZGVzKSB7XG4gICAgICAgIG9wY29kZXMgPSB0aGlzLm9wY29kZXMgPSBbXTtcbiAgICAgIH1cblxuICAgICAgb3Bjb2Rlcy5wdXNoKG9wY29kZSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyBpbXBsZW1lbnRzIEVsZW1lbnRPcGVyYXRpb25zIHtcbiAgcHJpdmF0ZSBhdHRyaWJ1dGVOYW1lczogT3B0aW9uPHN0cmluZ1tdPiA9IG51bGw7XG4gIHByaXZhdGUgYXR0cmlidXRlczogT3B0aW9uPEF0dHJpYnV0ZVtdPiA9IG51bGw7XG4gIHByaXZhdGUgY2xhc3NMaXN0OiBPcHRpb248Q2xhc3NMaXN0PiA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbnY6IEVudmlyb25tZW50KSB7XG4gIH1cblxuICBhZGRTdGF0aWNBdHRyaWJ1dGUoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIGlmIChuYW1lID09PSAnY2xhc3MnKSB7XG4gICAgICB0aGlzLmFkZENsYXNzKFByaW1pdGl2ZVJlZmVyZW5jZS5jcmVhdGUodmFsdWUpKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2hvdWxkQWRkQXR0cmlidXRlKG5hbWUpKSB7XG4gICAgICB0aGlzLmFkZEF0dHJpYnV0ZShuYW1lLCBuZXcgU3RhdGljQXR0cmlidXRlKGVsZW1lbnQsIG5hbWUsIHZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgYWRkU3RhdGljQXR0cmlidXRlTlMoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5hbWVzcGFjZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5zaG91bGRBZGRBdHRyaWJ1dGUobmFtZSkpIHtcbiAgICAgIHRoaXMuYWRkQXR0cmlidXRlKG5hbWUsIG5ldyBTdGF0aWNBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZSkpO1xuICAgIH1cbiAgfVxuXG4gIGFkZER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5hbWU6IHN0cmluZywgcmVmZXJlbmNlOiBQYXRoUmVmZXJlbmNlPHN0cmluZz4sIGlzVHJ1c3Rpbmc6IGJvb2xlYW4pIHtcbiAgICBpZiAobmFtZSA9PT0gJ2NsYXNzJykge1xuICAgICAgdGhpcy5hZGRDbGFzcyhyZWZlcmVuY2UpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zaG91bGRBZGRBdHRyaWJ1dGUobmFtZSkpIHtcbiAgICAgIGxldCBhdHRyaWJ1dGVNYW5hZ2VyID0gdGhpcy5lbnYuYXR0cmlidXRlRm9yKGVsZW1lbnQsIG5hbWUsIGlzVHJ1c3RpbmcpO1xuICAgICAgbGV0IGF0dHJpYnV0ZSA9IG5ldyBEeW5hbWljQXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZU1hbmFnZXIsIG5hbWUsIHJlZmVyZW5jZSk7XG5cbiAgICAgIHRoaXMuYWRkQXR0cmlidXRlKG5hbWUsIGF0dHJpYnV0ZSk7XG4gICAgfVxuICB9XG5cbiAgYWRkRHluYW1pY0F0dHJpYnV0ZU5TKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lc3BhY2U6IFNpbXBsZS5OYW1lc3BhY2UsIG5hbWU6IHN0cmluZywgcmVmZXJlbmNlOiBQYXRoUmVmZXJlbmNlPHN0cmluZz4sIGlzVHJ1c3Rpbmc6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5zaG91bGRBZGRBdHRyaWJ1dGUobmFtZSkpIHtcbiAgICAgIGxldCBhdHRyaWJ1dGVNYW5hZ2VyID0gdGhpcy5lbnYuYXR0cmlidXRlRm9yKGVsZW1lbnQsIG5hbWUsIGlzVHJ1c3RpbmcsIG5hbWVzcGFjZSk7XG4gICAgICBsZXQgbnNBdHRyaWJ1dGUgPSBuZXcgRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCBuYW1lLCByZWZlcmVuY2UsIG5hbWVzcGFjZSk7XG5cbiAgICAgIHRoaXMuYWRkQXR0cmlidXRlKG5hbWUsIG5zQXR0cmlidXRlKTtcbiAgICB9XG4gIH1cblxuICBmbHVzaChlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgdm06IFZNKSB7XG4gICAgbGV0IHsgZW52IH0gPSB0aGlzO1xuICAgIGxldCB7IGF0dHJpYnV0ZXMsIGNsYXNzTGlzdCB9ID0gdGhpcztcblxuICAgIGZvciAobGV0IGkgPSAwOyBhdHRyaWJ1dGVzICYmIGkgPCBhdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgb3Bjb2RlID0gYXR0cmlidXRlc1tpXS5mbHVzaChlbnYpO1xuXG4gICAgICBpZiAob3Bjb2RlKSB7XG4gICAgICAgIHZtLnVwZGF0ZVdpdGgob3Bjb2RlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2xhc3NMaXN0KSB7XG4gICAgICBsZXQgYXR0cmlidXRlTWFuYWdlciA9IGVudi5hdHRyaWJ1dGVGb3IoZWxlbWVudCwgJ2NsYXNzJywgZmFsc2UpO1xuICAgICAgbGV0IGF0dHJpYnV0ZSA9IG5ldyBEeW5hbWljQXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZU1hbmFnZXIsICdjbGFzcycsIGNsYXNzTGlzdC50b1JlZmVyZW5jZSgpKTtcbiAgICAgIGxldCBvcGNvZGUgPSBhdHRyaWJ1dGUuZmx1c2goZW52KTtcblxuICAgICAgaWYgKG9wY29kZSkge1xuICAgICAgICB2bS51cGRhdGVXaXRoKG9wY29kZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGRBZGRBdHRyaWJ1dGUobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmF0dHJpYnV0ZU5hbWVzIHx8IHRoaXMuYXR0cmlidXRlTmFtZXMuaW5kZXhPZihuYW1lKSA9PT0gLTE7XG4gIH1cblxuICBwcml2YXRlIGFkZENsYXNzKHJlZmVyZW5jZTogUGF0aFJlZmVyZW5jZTxzdHJpbmc+KSB7XG4gICAgbGV0IHsgY2xhc3NMaXN0IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFjbGFzc0xpc3QpIHtcbiAgICAgIGNsYXNzTGlzdCA9IHRoaXMuY2xhc3NMaXN0ID0gbmV3IENsYXNzTGlzdCgpO1xuICAgIH1cblxuICAgIGNsYXNzTGlzdC5hcHBlbmQocmVmZXJlbmNlKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkQXR0cmlidXRlKG5hbWU6IHN0cmluZywgYXR0cmlidXRlOiBBdHRyaWJ1dGUpIHtcbiAgICBsZXQgeyBhdHRyaWJ1dGVOYW1lcywgYXR0cmlidXRlcyB9ID0gdGhpcztcblxuICAgIGlmICghYXR0cmlidXRlTmFtZXMpIHtcbiAgICAgIGF0dHJpYnV0ZU5hbWVzID0gdGhpcy5hdHRyaWJ1dGVOYW1lcyA9IFtdO1xuICAgICAgYXR0cmlidXRlcyA9IHRoaXMuYXR0cmlidXRlcyA9IFtdO1xuICAgIH1cblxuICAgIGF0dHJpYnV0ZU5hbWVzLnB1c2gobmFtZSk7XG4gICAgYXR0cmlidXRlcy5wdXNoKGF0dHJpYnV0ZSk7XG4gIH1cbn1cblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkZsdXNoRWxlbWVudCwgdm0gPT4ge1xuICBsZXQgc3RhY2sgPSB2bS5lbGVtZW50cygpO1xuXG4gIGxldCBhY3Rpb24gPSAnRmx1c2hFbGVtZW50T3Bjb2RlI2V2YWx1YXRlJztcbiAgc3RhY2suZXhwZWN0T3BlcmF0aW9ucyhhY3Rpb24pLmZsdXNoKHN0YWNrLmV4cGVjdENvbnN0cnVjdGluZyhhY3Rpb24pLCB2bSk7XG4gIHN0YWNrLmZsdXNoRWxlbWVudCgpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5DbG9zZUVsZW1lbnQsIHZtID0+IHZtLmVsZW1lbnRzKCkuY2xvc2VFbGVtZW50KCkpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuU3RhdGljQXR0ciwgKHZtLCB7IG9wMTogX25hbWUsIG9wMjogX3ZhbHVlLCBvcDM6IF9uYW1lc3BhY2UgfSkgPT4ge1xuICBsZXQgbmFtZSA9IHZtLmNvbnN0YW50cy5nZXRTdHJpbmcoX25hbWUpO1xuICBsZXQgdmFsdWUgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKF92YWx1ZSk7XG5cbiAgaWYgKF9uYW1lc3BhY2UpIHtcbiAgICBsZXQgbmFtZXNwYWNlID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyhfbmFtZXNwYWNlKTtcbiAgICB2bS5lbGVtZW50cygpLnNldFN0YXRpY0F0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSwgdmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHZtLmVsZW1lbnRzKCkuc2V0U3RhdGljQXR0cmlidXRlKG5hbWUsIHZhbHVlKTtcbiAgfVxufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5Nb2RpZmllciwgKHZtLCB7IG9wMTogX21hbmFnZXIgfSkgPT4ge1xuICBsZXQgbWFuYWdlciA9IHZtLmNvbnN0YW50cy5nZXRPdGhlcjxNb2RpZmllck1hbmFnZXI8T3BhcXVlPj4oX21hbmFnZXIpO1xuICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgbGV0IGFyZ3MgPSBzdGFjay5wb3A8QXJndW1lbnRzPigpO1xuICBsZXQgdGFnID0gYXJncy50YWc7XG4gIGxldCB7IGNvbnN0cnVjdGluZzogZWxlbWVudCwgdXBkYXRlT3BlcmF0aW9ucyB9ID0gdm0uZWxlbWVudHMoKTtcbiAgbGV0IGR5bmFtaWNTY29wZSA9IHZtLmR5bmFtaWNTY29wZSgpO1xuICBsZXQgbW9kaWZpZXIgPSBtYW5hZ2VyLmNyZWF0ZShlbGVtZW50IGFzIEZJWF9SRUlGSUNBVElPTjxFbGVtZW50PiwgYXJncywgZHluYW1pY1Njb3BlLCB1cGRhdGVPcGVyYXRpb25zKTtcblxuICBhcmdzLmNsZWFyKCk7XG5cbiAgdm0uZW52LnNjaGVkdWxlSW5zdGFsbE1vZGlmaWVyKG1vZGlmaWVyLCBtYW5hZ2VyKTtcbiAgbGV0IGRlc3RydWN0b3IgPSBtYW5hZ2VyLmdldERlc3RydWN0b3IobW9kaWZpZXIpO1xuXG4gIGlmIChkZXN0cnVjdG9yKSB7XG4gICAgdm0ubmV3RGVzdHJveWFibGUoZGVzdHJ1Y3Rvcik7XG4gIH1cblxuICB2bS51cGRhdGVXaXRoKG5ldyBVcGRhdGVNb2RpZmllck9wY29kZShcbiAgICB0YWcsXG4gICAgbWFuYWdlcixcbiAgICBtb2RpZmllclxuICApKTtcbn0pO1xuXG5leHBvcnQgY2xhc3MgVXBkYXRlTW9kaWZpZXJPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJ1cGRhdGUtbW9kaWZpZXJcIjtcbiAgcHJpdmF0ZSBsYXN0VXBkYXRlZDogUmV2aXNpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHRhZzogVGFnLFxuICAgIHByaXZhdGUgbWFuYWdlcjogTW9kaWZpZXJNYW5hZ2VyPE9wYXF1ZT4sXG4gICAgcHJpdmF0ZSBtb2RpZmllcjogT3BhcXVlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5sYXN0VXBkYXRlZCA9IHRhZy52YWx1ZSgpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICBsZXQgeyBtYW5hZ2VyLCBtb2RpZmllciwgdGFnLCBsYXN0VXBkYXRlZCB9ID0gdGhpcztcblxuICAgIGlmICghdGFnLnZhbGlkYXRlKGxhc3RVcGRhdGVkKSkge1xuICAgICAgdm0uZW52LnNjaGVkdWxlVXBkYXRlTW9kaWZpZXIobW9kaWZpZXIsIG1hbmFnZXIpO1xuICAgICAgdGhpcy5sYXN0VXBkYXRlZCA9IHRhZy52YWx1ZSgpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF0dHJpYnV0ZSB7XG4gIG5hbWU6IHN0cmluZztcbiAgZmx1c2goZW52OiBFbnZpcm9ubWVudCk6IE9wdGlvbjxVcGRhdGluZ09wY29kZT47XG59XG5cbmV4cG9ydCBjbGFzcyBTdGF0aWNBdHRyaWJ1dGUgaW1wbGVtZW50cyBBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LFxuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSB2YWx1ZTogc3RyaW5nLFxuICAgIHByaXZhdGUgbmFtZXNwYWNlPzogc3RyaW5nXG4gICkge31cblxuICBmbHVzaChlbnY6IEVudmlyb25tZW50KTogT3B0aW9uPFVwZGF0aW5nT3Bjb2RlPiB7XG4gICAgZW52LmdldEFwcGVuZE9wZXJhdGlvbnMoKS5zZXRBdHRyaWJ1dGUodGhpcy5lbGVtZW50LCB0aGlzLm5hbWUsIHRoaXMudmFsdWUsIHRoaXMubmFtZXNwYWNlKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRHluYW1pY0F0dHJpYnV0ZSBpbXBsZW1lbnRzIEF0dHJpYnV0ZSAge1xuICBwcml2YXRlIGNhY2hlOiBPcHRpb248UmVmZXJlbmNlQ2FjaGU8T3BhcXVlPj4gPSBudWxsO1xuXG4gIHB1YmxpYyB0YWc6IFRhZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LFxuICAgIHByaXZhdGUgYXR0cmlidXRlTWFuYWdlcjogQXR0cmlidXRlTWFuYWdlcixcbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPixcbiAgICBwcml2YXRlIG5hbWVzcGFjZT86IFNpbXBsZS5OYW1lc3BhY2VcbiAgKSB7XG4gICAgdGhpcy50YWcgPSByZWZlcmVuY2UudGFnO1xuICB9XG5cbiAgcGF0Y2goZW52OiBFbnZpcm9ubWVudCkge1xuICAgIGxldCB7IGVsZW1lbnQsIGNhY2hlIH0gPSB0aGlzO1xuXG4gICAgbGV0IHZhbHVlID0gY2FjaGUucmV2YWxpZGF0ZSgpO1xuXG4gICAgaWYgKGlzTW9kaWZpZWQodmFsdWUpKSB7XG4gICAgICB0aGlzLmF0dHJpYnV0ZU1hbmFnZXIudXBkYXRlQXR0cmlidXRlKGVudiwgZWxlbWVudCBhcyBGSVhNRTxFbGVtZW50LCAnbmVlZHMgdG8gYmUgcmVpZmllZCBwcm9wZXJseSc+LCB2YWx1ZSwgdGhpcy5uYW1lc3BhY2UpO1xuICAgIH1cbiAgfVxuXG4gIGZsdXNoKGVudjogRW52aXJvbm1lbnQpOiBPcHRpb248VXBkYXRpbmdPcGNvZGU+IHtcbiAgICBsZXQgeyByZWZlcmVuY2UsIGVsZW1lbnQgfSA9IHRoaXM7XG5cbiAgICBpZiAoaXNDb25zdFJlZmVyZW5jZShyZWZlcmVuY2UpKSB7XG4gICAgICBsZXQgdmFsdWUgPSByZWZlcmVuY2UudmFsdWUoKTtcbiAgICAgIHRoaXMuYXR0cmlidXRlTWFuYWdlci5zZXRBdHRyaWJ1dGUoZW52LCBlbGVtZW50LCB2YWx1ZSwgdGhpcy5uYW1lc3BhY2UpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBjYWNoZSA9IHRoaXMuY2FjaGUgPSBuZXcgUmVmZXJlbmNlQ2FjaGUocmVmZXJlbmNlKTtcbiAgICAgIGxldCB2YWx1ZSA9IGNhY2hlLnBlZWsoKTtcbiAgICAgIHRoaXMuYXR0cmlidXRlTWFuYWdlci5zZXRBdHRyaWJ1dGUoZW52LCBlbGVtZW50LCB2YWx1ZSwgdGhpcy5uYW1lc3BhY2UpO1xuICAgICAgcmV0dXJuIG5ldyBQYXRjaEVsZW1lbnRPcGNvZGUodGhpcyk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGZvcm1hdEVsZW1lbnQoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQpOiBzdHJpbmcge1xuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoYDwke2VsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpfSAvPmApO1xufVxuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuRHluYW1pY0F0dHJOUywgKHZtLCB7IG9wMTogX25hbWUsIG9wMjogX25hbWVzcGFjZSwgb3AzOiB0cnVzdGluZyB9KSA9PiB7XG4gIGxldCBuYW1lID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyhfbmFtZSk7XG4gIGxldCBuYW1lc3BhY2UgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKF9uYW1lc3BhY2UpO1xuICBsZXQgcmVmZXJlbmNlID0gdm0uc3RhY2sucG9wPFZlcnNpb25lZFJlZmVyZW5jZTxzdHJpbmc+PigpO1xuICB2bS5lbGVtZW50cygpLnNldER5bmFtaWNBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUsIHJlZmVyZW5jZSwgISF0cnVzdGluZyk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkR5bmFtaWNBdHRyLCAodm0sIHsgb3AxOiBfbmFtZSwgb3AyOiB0cnVzdGluZyB9KSA9PiB7XG4gIGxldCBuYW1lID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyhfbmFtZSk7XG4gIGxldCByZWZlcmVuY2UgPSB2bS5zdGFjay5wb3A8VmVyc2lvbmVkUmVmZXJlbmNlPHN0cmluZz4+KCk7XG4gIHZtLmVsZW1lbnRzKCkuc2V0RHluYW1pY0F0dHJpYnV0ZShuYW1lLCByZWZlcmVuY2UsICEhdHJ1c3RpbmcpO1xufSk7XG5cbmV4cG9ydCBjbGFzcyBQYXRjaEVsZW1lbnRPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJwYXRjaC1lbGVtZW50XCI7XG5cbiAgcHJpdmF0ZSBvcGVyYXRpb246IER5bmFtaWNBdHRyaWJ1dGU7XG5cbiAgY29uc3RydWN0b3Iob3BlcmF0aW9uOiBEeW5hbWljQXR0cmlidXRlKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnRhZyA9IG9wZXJhdGlvbi50YWc7XG4gICAgdGhpcy5vcGVyYXRpb24gPSBvcGVyYXRpb247XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVXBkYXRpbmdWTSkge1xuICAgIHRoaXMub3BlcmF0aW9uLnBhdGNoKHZtLmVudik7XG4gIH1cbn1cbiJdfQ==

@@ -136,18 +136,2 @@ import { UpdatingOpcode } from '../../opcodes';

}
toJSON() {
let { type, _guid, cache } = this;
let expected;
try {
expected = JSON.stringify(cache.peek());
}
catch (e) {
expected = String(cache.peek());
}
return {
guid: _guid,
type,
args: [],
details: { expected }
};
}
}

@@ -171,9 +155,2 @@ export class JumpIfNotModifiedOpcode extends UpdatingOpcode {

}
toJSON() {
return {
guid: this._guid,
type: this.type,
args: [JSON.stringify(this.target.inspect())]
};
}
}

@@ -206,10 +183,3 @@ export class DidModifyOpcode extends UpdatingOpcode {

}
toJSON() {
return {
guid: this._guid,
type: this.type,
args: [JSON.stringify(this.inspect())]
};
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ2bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWMsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNELE9BQU8sRUFBYSxjQUFjLEVBQTBCLE1BQU0sb0JBQW9CLENBQUM7QUFDdkYsT0FBTyxFQUFrQixjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQWlCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV0RyxPQUFPLEVBQUUsY0FBYyxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBTXpELE9BQU8sRUFDTCxjQUFjLEVBQ2QsbUJBQW1CLEVBQ25CLGNBQWMsRUFDZCxlQUFlLEVBQ2Ysa0JBQWtCLEVBQ25CLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsY0FBYyxDQUFDLEdBQUcsQ0FBQyxtQkFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztBQUU3RCxjQUFjLENBQUMsR0FBRyxDQUFDLGlCQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0FBRXJELGNBQWMsQ0FBQyxHQUFHLENBQUMseUJBQW1CLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7QUFFckUsY0FBYyxDQUFDLEdBQUcsQ0FBQyx3QkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7QUFFbkUsY0FBYyxDQUFDLEdBQUcsQ0FBQyxrQkFBWSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRTtJQUNuRCxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN4QixDQUFDLENBQUMsQ0FBQztBQUVILGNBQWMsQ0FBQyxHQUFHLENBQUMsaUJBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUU7SUFDakQsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUM5QyxDQUFDLENBQUMsQ0FBQztBQUVILGNBQWMsQ0FBQyxHQUFHLENBQUMsMkJBQXFCLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFO0lBQy9ELElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDckIsSUFBSSxJQUFJLEdBQUcsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDMUMsSUFBSSxLQUFLLEdBQUcsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFFbkMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNiLEtBQUssQ0FBQztZQUNKLEtBQUssQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDN0MsS0FBSyxDQUFDO1FBQ1IsS0FBSyxDQUFDO1lBQ0osS0FBSyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JFLEtBQUssQ0FBQztRQUNSLEtBQUssQ0FBQztZQUNKLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ2QsS0FBSyxDQUFDO29CQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7b0JBQUMsS0FBSyxDQUFDO2dCQUMzQyxLQUFLLENBQUM7b0JBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztvQkFBQyxLQUFLLENBQUM7Z0JBQzFDLEtBQUssQ0FBQztvQkFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO29CQUFDLEtBQUssQ0FBQztnQkFDMUMsS0FBSyxDQUFDO29CQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztvQkFBQyxLQUFLLENBQUM7WUFDakQsQ0FBQztZQUNELEtBQUssQ0FBQztJQUNWLENBQUM7QUFDSCxDQUFDLENBQUMsQ0FBQztBQUVILGNBQWMsQ0FBQyxHQUFHLENBQUMsWUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFO0lBQzVELElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQVMsUUFBUSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQ3hELEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3pCLENBQUMsQ0FBQyxDQUFDO0FBRUgsY0FBYyxDQUFDLEdBQUcsQ0FBQyxZQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUV4RSxjQUFjLENBQUMsR0FBRyxDQUFDLGFBQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFFMUUsY0FBYyxDQUFDLEdBQUcsQ0FBQyxjQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBRTVFLGNBQWMsQ0FBQyxHQUFHLENBQUMseUJBQW1CLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFO0lBQzFELElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM3QixDQUFDLENBQUMsQ0FBQztBQUVILGNBQWMsQ0FBQyxHQUFHLENBQUMsa0JBQVksRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7QUFFdkQsY0FBYyxDQUFDLEdBQUcsQ0FBQyxpQkFBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztBQUVyRCxjQUFjLENBQUMsR0FBRyxDQUFDLGNBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFFcEUsY0FBYyxDQUFDLEdBQUcsQ0FBQyxhQUFPLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7QUFFL0MsY0FBYyxDQUFDLEdBQUcsQ0FBQyw0QkFBc0IsRUFBRSxFQUFFO0lBQzNDLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDckIsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBUyxDQUFDO0lBQy9CLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQzFELENBQUMsQ0FBQyxDQUFDO0FBRUgsY0FBYyxDQUFDLEdBQUcsQ0FBQyxxQkFBZSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRTtJQUN0RCxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxQyxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMxQixDQUFDLENBQUMsQ0FBQztBQU1ILGNBQWMsQ0FBQyxHQUFHLENBQUMsc0JBQWdCLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFO0lBQ3pELElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUE4QixRQUFRLENBQUMsQ0FBQztJQUMzRSxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBZ0QsQ0FBQztJQUN6RSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM1QixDQUFDLENBQUMsQ0FBQztBQUVILGNBQWMsQ0FBQyxHQUFHLENBQUMsYUFBTyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUV0RSxjQUFjLENBQUMsR0FBRyxDQUFDLGVBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUU7SUFDaEQsSUFBSSxTQUFTLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQWtDLENBQUM7SUFFL0QsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2QixFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUM7SUFBQyxJQUFJLENBQUMsQ0FBQztRQUNOLElBQUksS0FBSyxHQUFHLElBQUksY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDakIsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQixDQUFDO1FBRUQsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7QUFDSCxDQUFDLENBQUMsQ0FBQztBQUVILGNBQWMsQ0FBQyxHQUFHLENBQUMsbUJBQWEsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUU7SUFDcEQsSUFBSSxTQUFTLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQWtDLENBQUM7SUFFL0QsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2QixFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDdkIsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQixDQUFDO0lBQ0gsQ0FBQztJQUFDLElBQUksQ0FBQyxDQUFDO1FBQ04sSUFBSSxLQUFLLEdBQUcsSUFBSSxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFMUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2xCLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEIsQ0FBQztRQUVELEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNuQyxDQUFDO0FBQ0gsQ0FBQyxDQUFDLENBQUM7QUFFSCxjQUFjLENBQUMsR0FBRyxDQUFDLGVBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFJakQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFpQixVQUFTLEdBQXNCLEVBQUUsSUFBaUI7SUFDdkYsTUFBTSxDQUFDLElBQUksY0FBYyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUMzQyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQWlCLFVBQVMsR0FBc0IsRUFBRSxJQUFpQjtJQUN4RixNQUFNLENBQUMsR0FBeUIsQ0FBQztBQUNuQyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQWlCLFVBQVMsR0FBc0IsRUFBRSxHQUFnQjtJQUM1RixNQUFNLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3pDLENBQUMsQ0FBQztBQUVGLGNBQWMsQ0FBQyxHQUFHLENBQUMsYUFBTyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtJQUM3QyxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3JCLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUMxQixJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDcEMsQ0FBQyxDQUFDLENBQUM7QUFFSCxNQUFNLGFBQWMsU0FBUSxjQUFjO0lBS3hDLFlBQVksS0FBNkI7UUFDdkMsS0FBSyxFQUFFLENBQUM7UUFMSCxTQUFJLEdBQUcsUUFBUSxDQUFDO1FBTXJCLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUNyQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBRUQsUUFBUSxDQUFDLEVBQWM7UUFDckIsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQztRQUVyQixFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25DLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQztRQUVsQyxJQUFJLFFBQVEsQ0FBQztRQUViLElBQUksQ0FBQztZQUNILFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFBQyxLQUFLLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ1YsUUFBUSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNsQyxDQUFDO1FBRUQsTUFBTSxDQUFDO1lBQ0wsSUFBSSxFQUFFLEtBQUs7WUFDWCxJQUFJO1lBQ0osSUFBSSxFQUFFLEVBQUU7WUFDUixPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUU7U0FDdEIsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQUVELE1BQU0sOEJBQStCLFNBQVEsY0FBYztJQUt6RCxZQUFZLEdBQVEsRUFBVSxNQUFtQjtRQUMvQyxLQUFLLEVBQUUsQ0FBQztRQURvQixXQUFNLEdBQU4sTUFBTSxDQUFhO1FBSjFDLFNBQUksR0FBRyxzQkFBc0IsQ0FBQztRQU1uQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxRQUFRLENBQUMsRUFBYztRQUNyQixJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFFekMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkQsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQixDQUFDO0lBQ0gsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELE1BQU07UUFDSixNQUFNLENBQUM7WUFDTCxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDaEIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDOUMsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQUVELE1BQU0sc0JBQXVCLFNBQVEsY0FBYztJQUdqRCxZQUFvQixNQUErQjtRQUNqRCxLQUFLLEVBQUUsQ0FBQztRQURVLFdBQU0sR0FBTixNQUFNLENBQXlCO1FBRjVDLFNBQUksR0FBRyxZQUFZLENBQUM7UUFJekIsSUFBSSxDQUFDLEdBQUcsR0FBRyxZQUFZLENBQUM7SUFDMUIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzFCLENBQUM7Q0FDRjtBQUVELE1BQU07SUFTSixZQUFZLEtBQWE7UUFSbEIsUUFBRyxHQUFRLFlBQVksQ0FBQztRQUN4QixTQUFJLEdBQUcsT0FBTyxDQUFDO1FBQ2YsVUFBSyxHQUFtQixJQUFJLENBQUM7UUFHcEMsU0FBSSxHQUFRLElBQUksQ0FBQztRQUNqQixTQUFJLEdBQVEsSUFBSSxDQUFDO1FBR2YsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JCLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxRQUFRLEtBQUksQ0FBQztJQUViLE9BQU87UUFDTCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQztJQUN6QyxDQUFDO0lBRUQsTUFBTTtRQUNKLE1BQU0sQ0FBQztZQUNMLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSztZQUNoQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1NBQ3ZDLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21waWxlZER5bmFtaWNUZW1wbGF0ZSB9IGZyb20gJy4uL2Jsb2Nrcyc7XG5pbXBvcnQgeyBPcGNvZGVKU09OLCBVcGRhdGluZ09wY29kZSB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IHsgVXBkYXRpbmdWTSwgVk0gfSBmcm9tICcuLi8uLi92bSc7XG5pbXBvcnQgeyBTeW1ib2xUYWJsZSB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgUmVmZXJlbmNlLCBDb25zdFJlZmVyZW5jZSwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBPcHRpb24sIE9wYXF1ZSwgaW5pdGlhbGl6ZUd1aWQgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IENPTlNUQU5UX1RBRywgUmVmZXJlbmNlQ2FjaGUsIFJldmlzaW9uLCBUYWcsIGlzQ29uc3QsIGlzTW9kaWZpZWQgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IEFQUEVORF9PUENPREVTLCBPcCBhcyBPcCB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuXG5pbXBvcnQge1xuICBCbG9ja1xufSBmcm9tICcuLi8uLi9zY2FubmVyJztcblxuaW1wb3J0IHtcbiAgTlVMTF9SRUZFUkVOQ0UsXG4gIFVOREVGSU5FRF9SRUZFUkVOQ0UsXG4gIFRSVUVfUkVGRVJFTkNFLFxuICBGQUxTRV9SRUZFUkVOQ0UsXG4gIFByaW1pdGl2ZVJlZmVyZW5jZVxufSBmcm9tICcuLi8uLi9yZWZlcmVuY2VzJztcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkNoaWxkU2NvcGUsIHZtID0+IHZtLnB1c2hDaGlsZFNjb3BlKCkpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUG9wU2NvcGUsIHZtID0+IHZtLnBvcFNjb3BlKCkpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUHVzaER5bmFtaWNTY29wZSwgdm0gPT4gdm0ucHVzaER5bmFtaWNTY29wZSgpKTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlBvcER5bmFtaWNTY29wZSwgdm0gPT4gdm0ucG9wRHluYW1pY1Njb3BlKCkpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuSW1tZWRpYXRlLCAodm0sIHsgb3AxOiBudW1iZXIgfSkgPT4ge1xuICB2bS5zdGFjay5wdXNoKG51bWJlcik7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkNvbnN0YW50LCAodm0sIHsgb3AxOiBvdGhlciB9KSA9PiB7XG4gIHZtLnN0YWNrLnB1c2godm0uY29uc3RhbnRzLmdldE90aGVyKG90aGVyKSk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlByaW1pdGl2ZVJlZmVyZW5jZSwgKHZtLCB7IG9wMTogcHJpbWl0aXZlIH0pID0+IHtcbiAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gIGxldCBmbGFnID0gKHByaW1pdGl2ZSAmICgzIDw8IDMwKSkgPj4+IDMwO1xuICBsZXQgdmFsdWUgPSBwcmltaXRpdmUgJiB+KDMgPDwgMzApO1xuXG4gIHN3aXRjaCAoZmxhZykge1xuICAgIGNhc2UgMDpcbiAgICAgIHN0YWNrLnB1c2goUHJpbWl0aXZlUmVmZXJlbmNlLmNyZWF0ZSh2YWx1ZSkpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxOlxuICAgICAgc3RhY2sucHVzaChQcmltaXRpdmVSZWZlcmVuY2UuY3JlYXRlKHZtLmNvbnN0YW50cy5nZXRTdHJpbmcodmFsdWUpKSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDI6XG4gICAgICBzd2l0Y2ggKHZhbHVlKSB7XG4gICAgICAgIGNhc2UgMDogc3RhY2sucHVzaChGQUxTRV9SRUZFUkVOQ0UpOyBicmVhaztcbiAgICAgICAgY2FzZSAxOiBzdGFjay5wdXNoKFRSVUVfUkVGRVJFTkNFKTsgYnJlYWs7XG4gICAgICAgIGNhc2UgMjogc3RhY2sucHVzaChOVUxMX1JFRkVSRU5DRSk7IGJyZWFrO1xuICAgICAgICBjYXNlIDM6IHN0YWNrLnB1c2goVU5ERUZJTkVEX1JFRkVSRU5DRSk7IGJyZWFrO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gIH1cbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuRHVwLCAodm0sIHsgb3AxOiByZWdpc3Rlciwgb3AyOiBvZmZzZXQgfSkgPT4ge1xuICBsZXQgcG9zaXRpb24gPSB2bS5mZXRjaFZhbHVlPG51bWJlcj4ocmVnaXN0ZXIpIC0gb2Zmc2V0O1xuICB2bS5zdGFjay5kdXAocG9zaXRpb24pO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5Qb3AsICh2bSwgeyBvcDE6IGNvdW50IH0pID0+IHZtLnN0YWNrLnBvcChjb3VudCkpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuTG9hZCwgKHZtLCB7IG9wMTogcmVnaXN0ZXIgfSkgPT4gdm0ubG9hZChyZWdpc3RlcikpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuRmV0Y2gsICh2bSwgeyBvcDE6IHJlZ2lzdGVyIH0pID0+IHZtLmZldGNoKHJlZ2lzdGVyKSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5CaW5kRHluYW1pY1Njb3BlLCAodm0sIHsgb3AxOiBfbmFtZXMgfSkgPT4ge1xuICBsZXQgbmFtZXMgPSB2bS5jb25zdGFudHMuZ2V0QXJyYXkoX25hbWVzKTtcbiAgdm0uYmluZER5bmFtaWNTY29wZShuYW1lcyk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlB1c2hGcmFtZSwgdm0gPT4gdm0ucHVzaEZyYW1lKCkpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUG9wRnJhbWUsIHZtID0+IHZtLnBvcEZyYW1lKCkpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuRW50ZXIsICh2bSwgeyBvcDE6IGFyZ3MgfSkgPT4gdm0uZW50ZXIoYXJncykpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuRXhpdCwgKHZtKSA9PiB2bS5leGl0KCkpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuQ29tcGlsZUR5bmFtaWNCbG9jaywgdm0gPT4ge1xuICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgbGV0IGJsb2NrID0gc3RhY2sucG9wPEJsb2NrPigpO1xuICBzdGFjay5wdXNoKGJsb2NrID8gYmxvY2suY29tcGlsZUR5bmFtaWModm0uZW52KSA6IG51bGwpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5JbnZva2VTdGF0aWMsICh2bSwgeyBvcDE6IF9ibG9jayB9KSA9PiB7XG4gIGxldCBibG9jayA9IHZtLmNvbnN0YW50cy5nZXRCbG9jayhfYmxvY2spO1xuICBsZXQgY29tcGlsZWQgPSBibG9jay5jb21waWxlU3RhdGljKHZtLmVudik7XG4gIHZtLmNhbGwoY29tcGlsZWQuc3RhcnQpO1xufSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1pY0ludm9rZXI8UyBleHRlbmRzIFN5bWJvbFRhYmxlPiB7XG4gIGludm9rZSh2bTogVk0sIGJsb2NrOiBPcHRpb248Q29tcGlsZWREeW5hbWljVGVtcGxhdGU8Uz4+KTogdm9pZDtcbn1cblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkludm9rZUR5bmFtaWMsICh2bSwgeyBvcDE6IF9pbnZva2VyIH0pID0+IHtcbiAgbGV0IGludm9rZXIgPSB2bS5jb25zdGFudHMuZ2V0T3RoZXI8RHluYW1pY0ludm9rZXI8U3ltYm9sVGFibGU+PihfaW52b2tlcik7XG4gIGxldCBibG9jayA9IHZtLnN0YWNrLnBvcDxPcHRpb248Q29tcGlsZWREeW5hbWljVGVtcGxhdGU8U3ltYm9sVGFibGU+Pj4oKTtcbiAgaW52b2tlci5pbnZva2Uodm0sIGJsb2NrKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuSnVtcCwgKHZtLCB7IG9wMTogdGFyZ2V0IH0pID0+IHZtLmdvdG8odGFyZ2V0KSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5KdW1wSWYsICh2bSwgeyBvcDE6IHRhcmdldCB9KSA9PiB7XG4gIGxldCByZWZlcmVuY2UgPSB2bS5zdGFjay5wb3A8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+PigpO1xuXG4gIGlmIChpc0NvbnN0KHJlZmVyZW5jZSkpIHtcbiAgICBpZiAocmVmZXJlbmNlLnZhbHVlKCkpIHtcbiAgICAgIHZtLmdvdG8odGFyZ2V0KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbGV0IGNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKHJlZmVyZW5jZSk7XG5cbiAgICBpZiAoY2FjaGUucGVlaygpKSB7XG4gICAgICB2bS5nb3RvKHRhcmdldCk7XG4gICAgfVxuXG4gICAgdm0udXBkYXRlV2l0aChuZXcgQXNzZXJ0KGNhY2hlKSk7XG4gIH1cbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuSnVtcFVubGVzcywgKHZtLCB7IG9wMTogdGFyZ2V0IH0pID0+IHtcbiAgbGV0IHJlZmVyZW5jZSA9IHZtLnN0YWNrLnBvcDxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4+KCk7XG5cbiAgaWYgKGlzQ29uc3QocmVmZXJlbmNlKSkge1xuICAgIGlmICghcmVmZXJlbmNlLnZhbHVlKCkpIHtcbiAgICAgIHZtLmdvdG8odGFyZ2V0KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbGV0IGNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKHJlZmVyZW5jZSk7XG5cbiAgICBpZiAoIWNhY2hlLnBlZWsoKSkge1xuICAgICAgdm0uZ290byh0YXJnZXQpO1xuICAgIH1cblxuICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICB9XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlJldHVybiwgdm0gPT4gdm0ucmV0dXJuKCkpO1xuXG5leHBvcnQgdHlwZSBUZXN0RnVuY3Rpb24gPSAocmVmOiBSZWZlcmVuY2U8T3BhcXVlPiwgZW52OiBFbnZpcm9ubWVudCkgPT4gUmVmZXJlbmNlPGJvb2xlYW4+O1xuXG5leHBvcnQgY29uc3QgQ29uc3RUZXN0OiBUZXN0RnVuY3Rpb24gPSBmdW5jdGlvbihyZWY6IFJlZmVyZW5jZTxPcGFxdWU+LCBfZW52OiBFbnZpcm9ubWVudCk6IFJlZmVyZW5jZTxib29sZWFuPiB7XG4gIHJldHVybiBuZXcgQ29uc3RSZWZlcmVuY2UoISFyZWYudmFsdWUoKSk7XG59O1xuXG5leHBvcnQgY29uc3QgU2ltcGxlVGVzdDogVGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24ocmVmOiBSZWZlcmVuY2U8T3BhcXVlPiwgX2VudjogRW52aXJvbm1lbnQpOiBSZWZlcmVuY2U8Ym9vbGVhbj4ge1xuICByZXR1cm4gcmVmIGFzIFJlZmVyZW5jZTxib29sZWFuPjtcbn07XG5cbmV4cG9ydCBjb25zdCBFbnZpcm9ubWVudFRlc3Q6IFRlc3RGdW5jdGlvbiA9IGZ1bmN0aW9uKHJlZjogUmVmZXJlbmNlPE9wYXF1ZT4sIGVudjogRW52aXJvbm1lbnQpOiBSZWZlcmVuY2U8Ym9vbGVhbj4ge1xuICByZXR1cm4gZW52LnRvQ29uZGl0aW9uYWxSZWZlcmVuY2UocmVmKTtcbn07XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5UZXN0LCAodm0sIHsgb3AxOiBfZnVuYyB9KSA9PiB7XG4gIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICBsZXQgb3BlcmFuZCA9IHN0YWNrLnBvcCgpO1xuICBsZXQgZnVuYyA9IHZtLmNvbnN0YW50cy5nZXRGdW5jdGlvbihfZnVuYyk7XG4gIHN0YWNrLnB1c2goZnVuYyhvcGVyYW5kLCB2bS5lbnYpKTtcbn0pO1xuXG5leHBvcnQgY2xhc3MgQXNzZXJ0IGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwiYXNzZXJ0XCI7XG5cbiAgcHJpdmF0ZSBjYWNoZTogUmVmZXJlbmNlQ2FjaGU8T3BhcXVlPjtcblxuICBjb25zdHJ1Y3RvcihjYWNoZTogUmVmZXJlbmNlQ2FjaGU8T3BhcXVlPikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy50YWcgPSBjYWNoZS50YWc7XG4gICAgdGhpcy5jYWNoZSA9IGNhY2hlO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICBsZXQgeyBjYWNoZSB9ID0gdGhpcztcblxuICAgIGlmIChpc01vZGlmaWVkKGNhY2hlLnJldmFsaWRhdGUoKSkpIHtcbiAgICAgIHZtLnRocm93KCk7XG4gICAgfVxuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIGxldCB7IHR5cGUsIF9ndWlkLCBjYWNoZSB9ID0gdGhpcztcblxuICAgIGxldCBleHBlY3RlZDtcblxuICAgIHRyeSB7XG4gICAgICBleHBlY3RlZCA9IEpTT04uc3RyaW5naWZ5KGNhY2hlLnBlZWsoKSk7XG4gICAgfSBjYXRjaChlKSB7XG4gICAgICBleHBlY3RlZCA9IFN0cmluZyhjYWNoZS5wZWVrKCkpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBndWlkOiBfZ3VpZCxcbiAgICAgIHR5cGUsXG4gICAgICBhcmdzOiBbXSxcbiAgICAgIGRldGFpbHM6IHsgZXhwZWN0ZWQgfVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEp1bXBJZk5vdE1vZGlmaWVkT3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwianVtcC1pZi1ub3QtbW9kaWZpZWRcIjtcblxuICBwcml2YXRlIGxhc3RSZXZpc2lvbjogUmV2aXNpb247XG5cbiAgY29uc3RydWN0b3IodGFnOiBUYWcsIHByaXZhdGUgdGFyZ2V0OiBMYWJlbE9wY29kZSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy50YWcgPSB0YWc7XG4gICAgdGhpcy5sYXN0UmV2aXNpb24gPSB0YWcudmFsdWUoKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgbGV0IHsgdGFnLCB0YXJnZXQsIGxhc3RSZXZpc2lvbiB9ID0gdGhpcztcblxuICAgIGlmICghdm0uYWx3YXlzUmV2YWxpZGF0ZSAmJiB0YWcudmFsaWRhdGUobGFzdFJldmlzaW9uKSkge1xuICAgICAgdm0uZ290byh0YXJnZXQpO1xuICAgIH1cbiAgfVxuXG4gIGRpZE1vZGlmeSgpIHtcbiAgICB0aGlzLmxhc3RSZXZpc2lvbiA9IHRoaXMudGFnLnZhbHVlKCk7XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICBhcmdzOiBbSlNPTi5zdHJpbmdpZnkodGhpcy50YXJnZXQuaW5zcGVjdCgpKV1cbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEaWRNb2RpZnlPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJkaWQtbW9kaWZ5XCI7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0YXJnZXQ6IEp1bXBJZk5vdE1vZGlmaWVkT3Bjb2RlKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnRhZyA9IENPTlNUQU5UX1RBRztcbiAgfVxuXG4gIGV2YWx1YXRlKCkge1xuICAgIHRoaXMudGFyZ2V0LmRpZE1vZGlmeSgpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMYWJlbE9wY29kZSBpbXBsZW1lbnRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgcHVibGljIHRhZzogVGFnID0gQ09OU1RBTlRfVEFHO1xuICBwdWJsaWMgdHlwZSA9IFwibGFiZWxcIjtcbiAgcHVibGljIGxhYmVsOiBPcHRpb248c3RyaW5nPiA9IG51bGw7XG4gIHB1YmxpYyBfZ3VpZDogbnVtYmVyO1xuXG4gIHByZXY6IGFueSA9IG51bGw7XG4gIG5leHQ6IGFueSA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IobGFiZWw6IHN0cmluZykge1xuICAgIGluaXRpYWxpemVHdWlkKHRoaXMpO1xuICAgIGlmIChsYWJlbCkgdGhpcy5sYWJlbCA9IGxhYmVsO1xuICB9XG5cbiAgZXZhbHVhdGUoKSB7fVxuXG4gIGluc3BlY3QoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5sYWJlbH0gWyR7dGhpcy5fZ3VpZH1dYDtcbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIGFyZ3M6IFtKU09OLnN0cmluZ2lmeSh0aGlzLmluc3BlY3QoKSldXG4gICAgfTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ2bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWMsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNELE9BQU8sRUFBYSxjQUFjLEVBQTBCLE1BQU0sb0JBQW9CLENBQUM7QUFDdkYsT0FBTyxFQUFrQixjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQWlCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV0RyxPQUFPLEVBQUUsY0FBYyxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBTXpELE9BQU8sRUFDTCxjQUFjLEVBQ2QsbUJBQW1CLEVBQ25CLGNBQWMsRUFDZCxlQUFlLEVBQ2Ysa0JBQWtCLEVBQ25CLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsY0FBYyxDQUFDLEdBQUcsQ0FBQyxtQkFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztBQUU3RCxjQUFjLENBQUMsR0FBRyxDQUFDLGlCQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0FBRXJELGNBQWMsQ0FBQyxHQUFHLENBQUMseUJBQW1CLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7QUFFckUsY0FBYyxDQUFDLEdBQUcsQ0FBQyx3QkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7QUFFbkUsY0FBYyxDQUFDLEdBQUcsQ0FBQyxrQkFBWSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRTtJQUNuRCxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN4QixDQUFDLENBQUMsQ0FBQztBQUVILGNBQWMsQ0FBQyxHQUFHLENB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QUFRLFlBQVksQ0FBQztRQUN4QixTQUFJLEdBQUcsT0FBTyxDQUFDO1FBQ2YsVUFBSyxHQUFtQixJQUFJLENBQUM7UUFHcEMsU0FBSSxHQUFRLElBQUksQ0FBQztRQUNqQixTQUFJLEdBQVEsSUFBSSxDQUFDO1FBR2YsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JCLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxRQUFRLEtBQUksQ0FBQztJQUViLE9BQU87UUFDTCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQztJQUN6QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21waWxlZER5bmFtaWNUZW1wbGF0ZSB9IGZyb20gJy4uL2Jsb2Nrcyc7XG5pbXBvcnQgeyBPcGNvZGVKU09OLCBVcGRhdGluZ09wY29kZSB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IHsgVXBkYXRpbmdWTSwgVk0gfSBmcm9tICcuLi8uLi92bSc7XG5pbXBvcnQgeyBTeW1ib2xUYWJsZSB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgUmVmZXJlbmNlLCBDb25zdFJlZmVyZW5jZSwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBPcHRpb24sIE9wYXF1ZSwgaW5pdGlhbGl6ZUd1aWQgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IENPTlNUQU5UX1RBRywgUmVmZXJlbmNlQ2FjaGUsIFJldmlzaW9uLCBUYWcsIGlzQ29uc3QsIGlzTW9kaWZpZWQgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IEFQUEVORF9PUENPREVTLCBPcCBhcyBPcCB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuXG5pbXBvcnQge1xuICBCbG9ja1xufSBmcm9tICcuLi8uLi9zY2FubmVyJztcblxuaW1wb3J0IHtcbiAgTlVMTF9SRUZFUkVOQ0UsXG4gIFVOREVGSU5FRF9SRUZFUkVOQ0UsXG4gIFRSVUVfUkVGRVJFTkNFLFxuICBGQUxTRV9SRUZFUkVOQ0UsXG4gIFByaW1pdGl2ZVJlZmVyZW5jZVxufSBmcm9tICcuLi8uLi9yZWZlcmVuY2VzJztcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkNoaWxkU2NvcGUsIHZtID0+IHZtLnB1c2hDaGlsZFNjb3BlKCkpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUG9wU2NvcGUsIHZtID0+IHZtLnBvcFNjb3BlKCkpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUHVzaER5bmFtaWNTY29wZSwgdm0gPT4gdm0ucHVzaER5bmFtaWNTY29wZSgpKTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlBvcER5bmFtaWNTY29wZSwgdm0gPT4gdm0ucG9wRHluYW1pY1Njb3BlKCkpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuSW1tZWRpYXRlLCAodm0sIHsgb3AxOiBudW1iZXIgfSkgPT4ge1xuICB2bS5zdGFjay5wdXNoKG51bWJlcik7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkNvbnN0YW50LCAodm0sIHsgb3AxOiBvdGhlciB9KSA9PiB7XG4gIHZtLnN0YWNrLnB1c2godm0uY29uc3RhbnRzLmdldE90aGVyKG90aGVyKSk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlByaW1pdGl2ZVJlZmVyZW5jZSwgKHZtLCB7IG9wMTogcHJpbWl0aXZlIH0pID0+IHtcbiAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gIGxldCBmbGFnID0gKHByaW1pdGl2ZSAmICgzIDw8IDMwKSkgPj4+IDMwO1xuICBsZXQgdmFsdWUgPSBwcmltaXRpdmUgJiB+KDMgPDwgMzApO1xuXG4gIHN3aXRjaCAoZmxhZykge1xuICAgIGNhc2UgMDpcbiAgICAgIHN0YWNrLnB1c2goUHJpbWl0aXZlUmVmZXJlbmNlLmNyZWF0ZSh2YWx1ZSkpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxOlxuICAgICAgc3RhY2sucHVzaChQcmltaXRpdmVSZWZlcmVuY2UuY3JlYXRlKHZtLmNvbnN0YW50cy5nZXRTdHJpbmcodmFsdWUpKSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDI6XG4gICAgICBzd2l0Y2ggKHZhbHVlKSB7XG4gICAgICAgIGNhc2UgMDogc3RhY2sucHVzaChGQUxTRV9SRUZFUkVOQ0UpOyBicmVhaztcbiAgICAgICAgY2FzZSAxOiBzdGFjay5wdXNoKFRSVUVfUkVGRVJFTkNFKTsgYnJlYWs7XG4gICAgICAgIGNhc2UgMjogc3RhY2sucHVzaChOVUxMX1JFRkVSRU5DRSk7IGJyZWFrO1xuICAgICAgICBjYXNlIDM6IHN0YWNrLnB1c2goVU5ERUZJTkVEX1JFRkVSRU5DRSk7IGJyZWFrO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gIH1cbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuRHVwLCAodm0sIHsgb3AxOiByZWdpc3Rlciwgb3AyOiBvZmZzZXQgfSkgPT4ge1xuICBsZXQgcG9zaXRpb24gPSB2bS5mZXRjaFZhbHVlPG51bWJlcj4ocmVnaXN0ZXIpIC0gb2Zmc2V0O1xuICB2bS5zdGFjay5kdXAocG9zaXRpb24pO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5Qb3AsICh2bSwgeyBvcDE6IGNvdW50IH0pID0+IHZtLnN0YWNrLnBvcChjb3VudCkpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuTG9hZCwgKHZtLCB7IG9wMTogcmVnaXN0ZXIgfSkgPT4gdm0ubG9hZChyZWdpc3RlcikpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuRmV0Y2gsICh2bSwgeyBvcDE6IHJlZ2lzdGVyIH0pID0+IHZtLmZldGNoKHJlZ2lzdGVyKSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5CaW5kRHluYW1pY1Njb3BlLCAodm0sIHsgb3AxOiBfbmFtZXMgfSkgPT4ge1xuICBsZXQgbmFtZXMgPSB2bS5jb25zdGFudHMuZ2V0QXJyYXkoX25hbWVzKTtcbiAgdm0uYmluZER5bmFtaWNTY29wZShuYW1lcyk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlB1c2hGcmFtZSwgdm0gPT4gdm0ucHVzaEZyYW1lKCkpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUG9wRnJhbWUsIHZtID0+IHZtLnBvcEZyYW1lKCkpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuRW50ZXIsICh2bSwgeyBvcDE6IGFyZ3MgfSkgPT4gdm0uZW50ZXIoYXJncykpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuRXhpdCwgKHZtKSA9PiB2bS5leGl0KCkpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuQ29tcGlsZUR5bmFtaWNCbG9jaywgdm0gPT4ge1xuICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgbGV0IGJsb2NrID0gc3RhY2sucG9wPEJsb2NrPigpO1xuICBzdGFjay5wdXNoKGJsb2NrID8gYmxvY2suY29tcGlsZUR5bmFtaWModm0uZW52KSA6IG51bGwpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5JbnZva2VTdGF0aWMsICh2bSwgeyBvcDE6IF9ibG9jayB9KSA9PiB7XG4gIGxldCBibG9jayA9IHZtLmNvbnN0YW50cy5nZXRCbG9jayhfYmxvY2spO1xuICBsZXQgY29tcGlsZWQgPSBibG9jay5jb21waWxlU3RhdGljKHZtLmVudik7XG4gIHZtLmNhbGwoY29tcGlsZWQuc3RhcnQpO1xufSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1pY0ludm9rZXI8UyBleHRlbmRzIFN5bWJvbFRhYmxlPiB7XG4gIGludm9rZSh2bTogVk0sIGJsb2NrOiBPcHRpb248Q29tcGlsZWREeW5hbWljVGVtcGxhdGU8Uz4+KTogdm9pZDtcbn1cblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkludm9rZUR5bmFtaWMsICh2bSwgeyBvcDE6IF9pbnZva2VyIH0pID0+IHtcbiAgbGV0IGludm9rZXIgPSB2bS5jb25zdGFudHMuZ2V0T3RoZXI8RHluYW1pY0ludm9rZXI8U3ltYm9sVGFibGU+PihfaW52b2tlcik7XG4gIGxldCBibG9jayA9IHZtLnN0YWNrLnBvcDxPcHRpb248Q29tcGlsZWREeW5hbWljVGVtcGxhdGU8U3ltYm9sVGFibGU+Pj4oKTtcbiAgaW52b2tlci5pbnZva2Uodm0sIGJsb2NrKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuSnVtcCwgKHZtLCB7IG9wMTogdGFyZ2V0IH0pID0+IHZtLmdvdG8odGFyZ2V0KSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5KdW1wSWYsICh2bSwgeyBvcDE6IHRhcmdldCB9KSA9PiB7XG4gIGxldCByZWZlcmVuY2UgPSB2bS5zdGFjay5wb3A8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+PigpO1xuXG4gIGlmIChpc0NvbnN0KHJlZmVyZW5jZSkpIHtcbiAgICBpZiAocmVmZXJlbmNlLnZhbHVlKCkpIHtcbiAgICAgIHZtLmdvdG8odGFyZ2V0KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbGV0IGNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKHJlZmVyZW5jZSk7XG5cbiAgICBpZiAoY2FjaGUucGVlaygpKSB7XG4gICAgICB2bS5nb3RvKHRhcmdldCk7XG4gICAgfVxuXG4gICAgdm0udXBkYXRlV2l0aChuZXcgQXNzZXJ0KGNhY2hlKSk7XG4gIH1cbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuSnVtcFVubGVzcywgKHZtLCB7IG9wMTogdGFyZ2V0IH0pID0+IHtcbiAgbGV0IHJlZmVyZW5jZSA9IHZtLnN0YWNrLnBvcDxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4+KCk7XG5cbiAgaWYgKGlzQ29uc3QocmVmZXJlbmNlKSkge1xuICAgIGlmICghcmVmZXJlbmNlLnZhbHVlKCkpIHtcbiAgICAgIHZtLmdvdG8odGFyZ2V0KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbGV0IGNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKHJlZmVyZW5jZSk7XG5cbiAgICBpZiAoIWNhY2hlLnBlZWsoKSkge1xuICAgICAgdm0uZ290byh0YXJnZXQpO1xuICAgIH1cblxuICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICB9XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlJldHVybiwgdm0gPT4gdm0ucmV0dXJuKCkpO1xuXG5leHBvcnQgdHlwZSBUZXN0RnVuY3Rpb24gPSAocmVmOiBSZWZlcmVuY2U8T3BhcXVlPiwgZW52OiBFbnZpcm9ubWVudCkgPT4gUmVmZXJlbmNlPGJvb2xlYW4+O1xuXG5leHBvcnQgY29uc3QgQ29uc3RUZXN0OiBUZXN0RnVuY3Rpb24gPSBmdW5jdGlvbihyZWY6IFJlZmVyZW5jZTxPcGFxdWU+LCBfZW52OiBFbnZpcm9ubWVudCk6IFJlZmVyZW5jZTxib29sZWFuPiB7XG4gIHJldHVybiBuZXcgQ29uc3RSZWZlcmVuY2UoISFyZWYudmFsdWUoKSk7XG59O1xuXG5leHBvcnQgY29uc3QgU2ltcGxlVGVzdDogVGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24ocmVmOiBSZWZlcmVuY2U8T3BhcXVlPiwgX2VudjogRW52aXJvbm1lbnQpOiBSZWZlcmVuY2U8Ym9vbGVhbj4ge1xuICByZXR1cm4gcmVmIGFzIFJlZmVyZW5jZTxib29sZWFuPjtcbn07XG5cbmV4cG9ydCBjb25zdCBFbnZpcm9ubWVudFRlc3Q6IFRlc3RGdW5jdGlvbiA9IGZ1bmN0aW9uKHJlZjogUmVmZXJlbmNlPE9wYXF1ZT4sIGVudjogRW52aXJvbm1lbnQpOiBSZWZlcmVuY2U8Ym9vbGVhbj4ge1xuICByZXR1cm4gZW52LnRvQ29uZGl0aW9uYWxSZWZlcmVuY2UocmVmKTtcbn07XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5UZXN0LCAodm0sIHsgb3AxOiBfZnVuYyB9KSA9PiB7XG4gIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICBsZXQgb3BlcmFuZCA9IHN0YWNrLnBvcCgpO1xuICBsZXQgZnVuYyA9IHZtLmNvbnN0YW50cy5nZXRGdW5jdGlvbihfZnVuYyk7XG4gIHN0YWNrLnB1c2goZnVuYyhvcGVyYW5kLCB2bS5lbnYpKTtcbn0pO1xuXG5leHBvcnQgY2xhc3MgQXNzZXJ0IGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwiYXNzZXJ0XCI7XG5cbiAgcHJpdmF0ZSBjYWNoZTogUmVmZXJlbmNlQ2FjaGU8T3BhcXVlPjtcblxuICBjb25zdHJ1Y3RvcihjYWNoZTogUmVmZXJlbmNlQ2FjaGU8T3BhcXVlPikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy50YWcgPSBjYWNoZS50YWc7XG4gICAgdGhpcy5jYWNoZSA9IGNhY2hlO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICBsZXQgeyBjYWNoZSB9ID0gdGhpcztcblxuICAgIGlmIChpc01vZGlmaWVkKGNhY2hlLnJldmFsaWRhdGUoKSkpIHtcbiAgICAgIHZtLnRocm93KCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBKdW1wSWZOb3RNb2RpZmllZE9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImp1bXAtaWYtbm90LW1vZGlmaWVkXCI7XG5cbiAgcHJpdmF0ZSBsYXN0UmV2aXNpb246IFJldmlzaW9uO1xuXG4gIGNvbnN0cnVjdG9yKHRhZzogVGFnLCBwcml2YXRlIHRhcmdldDogTGFiZWxPcGNvZGUpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudGFnID0gdGFnO1xuICAgIHRoaXMubGFzdFJldmlzaW9uID0gdGFnLnZhbHVlKCk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVXBkYXRpbmdWTSkge1xuICAgIGxldCB7IHRhZywgdGFyZ2V0LCBsYXN0UmV2aXNpb24gfSA9IHRoaXM7XG5cbiAgICBpZiAoIXZtLmFsd2F5c1JldmFsaWRhdGUgJiYgdGFnLnZhbGlkYXRlKGxhc3RSZXZpc2lvbikpIHtcbiAgICAgIHZtLmdvdG8odGFyZ2V0KTtcbiAgICB9XG4gIH1cblxuICBkaWRNb2RpZnkoKSB7XG4gICAgdGhpcy5sYXN0UmV2aXNpb24gPSB0aGlzLnRhZy52YWx1ZSgpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEaWRNb2RpZnlPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJkaWQtbW9kaWZ5XCI7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0YXJnZXQ6IEp1bXBJZk5vdE1vZGlmaWVkT3Bjb2RlKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnRhZyA9IENPTlNUQU5UX1RBRztcbiAgfVxuXG4gIGV2YWx1YXRlKCkge1xuICAgIHRoaXMudGFyZ2V0LmRpZE1vZGlmeSgpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMYWJlbE9wY29kZSBpbXBsZW1lbnRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgcHVibGljIHRhZzogVGFnID0gQ09OU1RBTlRfVEFHO1xuICBwdWJsaWMgdHlwZSA9IFwibGFiZWxcIjtcbiAgcHVibGljIGxhYmVsOiBPcHRpb248c3RyaW5nPiA9IG51bGw7XG4gIHB1YmxpYyBfZ3VpZDogbnVtYmVyO1xuXG4gIHByZXY6IGFueSA9IG51bGw7XG4gIG5leHQ6IGFueSA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IobGFiZWw6IHN0cmluZykge1xuICAgIGluaXRpYWxpemVHdWlkKHRoaXMpO1xuICAgIGlmIChsYWJlbCkgdGhpcy5sYWJlbCA9IGxhYmVsO1xuICB9XG5cbiAgZXZhbHVhdGUoKSB7fVxuXG4gIGluc3BlY3QoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5sYWJlbH0gWyR7dGhpcy5fZ3VpZH1dYDtcbiAgfVxufVxuIl19
import { CompiledDynamicTemplate } from './compiled/blocks';
import { Ops } from '@glimmer/wire-format';
import { Register, debugSlice } from './opcodes';
import { Register } from './opcodes';
import { ATTRS_BLOCK, ClientSide, compileStatement } from './scanner';

@@ -115,3 +115,2 @@ import { expr } from './syntax/functions';

let end = b.finalize();
debugSlice(env, start, end);
return new CompiledDynamicTemplate(start, end, {

@@ -218,2 +217,2 @@ meta,

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjb21waWxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQTBCLHVCQUF1QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFcEYsT0FBTyxFQUFFLEdBQUcsRUFBZ0IsTUFBTSxzQkFBc0IsQ0FBQztBQUd6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQVF0RSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFMUMsT0FBTyxnQkFBZ0IsTUFBTSw0QkFBNEIsQ0FBQztBQWMxRCxNQUFNLHdCQUF3QixVQUE0QixFQUFFLEdBQWdCO0lBQzFFLElBQUksT0FBTyxHQUFHLElBQUksc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFOUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUU1QixNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQzNCLENBQUM7QUFRRDtJQUdFLFlBQW1CLEdBQWdCO1FBQWhCLFFBQUcsR0FBSCxHQUFHLENBQWE7SUFBRyxDQUFDO0lBRXZDLFVBQVUsQ0FBQyxNQUE4QjtRQUN2QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUE4QjtRQUN2QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsT0FBTztRQUNMLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lB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O1FBRXZCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNkLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFdkIsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVqQixPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTNCLE9BQU8sQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1FBQ3RDLE9BQU8sQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRTVELE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEIsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2YsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRWpCLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRW5CLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN2QixDQUFDO0NBQ0Y7QUFFRCxNQUFNLGtCQUFrQixHQUFnQixFQUFFLElBQXFCO0lBQzdELE1BQU0sQ0FBQyxJQUFJLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN6QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3BhcXVlLCBDb21waWxhdGlvbk1ldGEgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCBFbnZpcm9ubWVudCBmcm9tICcuL2Vudmlyb25tZW50JztcbmltcG9ydCB7IENvbXBpbGVkRHluYW1pY1Byb2dyYW0sIENvbXBpbGVkRHluYW1pY1RlbXBsYXRlIH0gZnJvbSAnLi9jb21waWxlZC9ibG9ja3MnO1xuaW1wb3J0IHsgTWF5YmUsIE9wdGlvbiB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgT3BzLCBUZW1wbGF0ZU1ldGEgfSBmcm9tICdAZ2xpbW1lci93aXJlLWZvcm1hdCc7XG5cbmltcG9ydCB7IFRlbXBsYXRlIH0gZnJvbSAnLi90ZW1wbGF0ZSc7XG5pbXBvcnQgeyBSZWdpc3RlciwgZGVidWdTbGljZSB9IGZyb20gJy4vb3Bjb2Rlcyc7XG5cbmltcG9ydCB7IEFUVFJTX0JMT0NLLCBDbGllbnRTaWRlLCBjb21waWxlU3RhdGVtZW50IH0gZnJvbSAnLi9zY2FubmVyJztcblxuaW1wb3J0IHtcbiAgQ29tcG9uZW50QXJncyxcbiAgQ29tcG9uZW50QnVpbGRlciBhcyBJQ29tcG9uZW50QnVpbGRlcixcbiAgRHluYW1pY0NvbXBvbmVudERlZmluaXRpb25cbn0gZnJvbSAnLi9vcGNvZGUtYnVpbGRlcic7XG5cbmltcG9ydCB7IGV4cHIgfSBmcm9tICcuL3N5bnRheC9mdW5jdGlvbnMnO1xuXG5pbXBvcnQgT3Bjb2RlQnVpbGRlckRTTCBmcm9tICcuL2NvbXBpbGVkL29wY29kZXMvYnVpbGRlcic7XG5cbmltcG9ydCAqIGFzIENvbXBvbmVudCBmcm9tICcuL2NvbXBvbmVudC9pbnRlcmZhY2VzJztcblxuaW1wb3J0ICogYXMgV2lyZUZvcm1hdCBmcm9tICdAZ2xpbW1lci93aXJlLWZvcm1hdCc7XG5cbmltcG9ydCB7IFB1YmxpY1ZNIH0gZnJvbSAnLi92bS9hcHBlbmQnO1xuaW1wb3J0IHsgSUFyZ3VtZW50cyB9IGZyb20gJy4vdm0vYXJndW1lbnRzJztcbmltcG9ydCB7IEZ1bmN0aW9uRXhwcmVzc2lvbiB9IGZyb20gXCIuL2NvbXBpbGVkL29wY29kZXMvZXhwcmVzc2lvbnNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDb21waWxhYmxlTGF5b3V0IHtcbiAgY29tcGlsZShidWlsZGVyOiBDb21wb25lbnQuQ29tcG9uZW50TGF5b3V0QnVpbGRlcik6IHZvaWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21waWxlTGF5b3V0KGNvbXBpbGFibGU6IENvbXBpbGFibGVMYXlvdXQsIGVudjogRW52aXJvbm1lbnQpOiBDb21waWxlZER5bmFtaWNQcm9ncmFtIHtcbiAgbGV0IGJ1aWxkZXIgPSBuZXcgQ29tcG9uZW50TGF5b3V0QnVpbGRlcihlbnYpO1xuXG4gIGNvbXBpbGFibGUuY29tcGlsZShidWlsZGVyKTtcblxuICByZXR1cm4gYnVpbGRlci5jb21waWxlKCk7XG59XG5cbmludGVyZmFjZSBJbm5lckxheW91dEJ1aWxkZXIge1xuICB0YWc6IENvbXBvbmVudC5Db21wb25lbnRUYWdCdWlsZGVyO1xuICBhdHRyczogQ29tcG9uZW50LkNvbXBvbmVudEF0dHJzQnVpbGRlcjtcbiAgY29tcGlsZSgpOiBDb21waWxlZER5bmFtaWNQcm9ncmFtO1xufVxuXG5jbGFzcyBDb21wb25lbnRMYXlvdXRCdWlsZGVyIGltcGxlbWVudHMgQ29tcG9uZW50LkNvbXBvbmVudExheW91dEJ1aWxkZXIge1xuICBwcml2YXRlIGlubmVyOiBJbm5lckxheW91dEJ1aWxkZXI7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGVudjogRW52aXJvbm1lbnQpIHt9XG5cbiAgd3JhcExheW91dChsYXlvdXQ6IFRlbXBsYXRlPFRlbXBsYXRlTWV0YT4pIHtcbiAgICB0aGlzLmlubmVyID0gbmV3IFdyYXBwZWRCdWlsZGVyKHRoaXMuZW52LCBsYXlvdXQpO1xuICB9XG5cbiAgZnJvbUxheW91dChsYXlvdXQ6IFRlbXBsYXRlPFRlbXBsYXRlTWV0YT4pIHtcbiAgICB0aGlzLmlubmVyID0gbmV3IFVud3JhcHBlZEJ1aWxkZXIodGhpcy5lbnYsIGxheW91dCk7XG4gIH1cblxuICBjb21waWxlKCk6IENvbXBpbGVkRHluYW1pY1Byb2dyYW0ge1xuICAgIHJldHVybiB0aGlzLmlubmVyLmNvbXBpbGUoKTtcbiAgfVxuXG4gIGdldCB0YWcoKTogQ29tcG9uZW50LkNvbXBvbmVudFRhZ0J1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmlubmVyLnRhZztcbiAgfVxuXG4gIGdldCBhdHRycygpOiBDb21wb25lbnQuQ29tcG9uZW50QXR0cnNCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbm5lci5hdHRycztcbiAgfVxufVxuXG5jbGFzcyBXcmFwcGVkQnVpbGRlciBpbXBsZW1lbnRzIElubmVyTGF5b3V0QnVpbGRlciB7XG4gIHB1YmxpYyB0YWcgPSBuZXcgQ29tcG9uZW50VGFnQnVpbGRlcigpO1xuICBwdWJsaWMgYXR0cnMgPSBuZXcgQ29tcG9uZW50QXR0cnNCdWlsZGVyKCk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGVudjogRW52aXJvbm1lbnQsIHByaXZhdGUgbGF5b3V0OiBUZW1wbGF0ZTxUZW1wbGF0ZU1ldGE+KSB7fVxuXG4gIGNvbXBpbGUoKTogQ29tcGlsZWREeW5hbWljUHJvZ3JhbSB7XG4gICAgLy89PT09PT09PURZTkFNSUNcbiAgICAvLyAgICAgICAgUHV0VmFsdWUoVGFnRXhwcilcbiAgICAvLyAgICAgICAgVGVzdFxuICAgIC8vICAgICAgICBKdW1wVW5sZXNzKEJPRFkpXG4gICAgLy8gICAgICAgIE9wZW5EeW5hbWljUHJpbWl0aXZlRWxlbWVudFxuICAgIC8vICAgICAgICBEaWRDcmVhdGVFbGVtZW50XG4gICAgLy8gICAgICAgIC4uLmF0dHIgc3RhdGVtZW50cy4uLlxuICAgIC8vICAgICAgICBGbHVzaEVsZW1lbnRcbiAgICAvLyBCT0RZOiAgTm9vcFxuICAgIC8vICAgICAgICAuLi5ib2R5IHN0YXRlbWVudHMuLi5cbiAgICAvLyAgICAgICAgUHV0VmFsdWUoVGFnRXhwcilcbiAgICAvLyAgICAgICAgVGVzdFxuICAgIC8vICAgICAgICBKdW1wVW5sZXNzKEVORClcbiAgICAvLyAgICAgICAgQ2xvc2VFbGVtZW50XG4gICAgLy8gRU5EOiAgIE5vb3BcbiAgICAvLyAgICAgICAgRGlkUmVuZGVyTGF5b3V0XG4gICAgLy8gICAgICAgIEV4aXRcbiAgICAvL1xuICAgIC8vPT09PT09PT1TVEFUSUNcbiAgICAvLyAgICAgICAgT3BlblByaW1pdGl2ZUVsZW1lbnRPcGNvZGVcbiAgICAvLyAgICAgICAgRGlkQ3JlYXRlRWxlbWVudFxuICAgIC8vICAgICAgICAuLi5hdHRyIHN0YXRlbWVudHMuLi5cbiAgICAvLyAgICAgICAgRmx1c2hFbGVtZW50XG4gICAgLy8gICAgICAgIC4uLmJvZHkgc3RhdGVtZW50cy4uLlxuICAgIC8vICAgICAgICBDbG9zZUVsZW1lbnRcbiAgICAvLyAgICAgICAgRGlkUmVuZGVyTGF5b3V0XG4gICAgLy8gICAgICAgIEV4aXRcblxuICAgIGxldCB7IGVudiwgbGF5b3V0IH0gPSB0aGlzO1xuICAgIGxldCBtZXRhID0geyB0ZW1wbGF0ZU1ldGE6IGxheW91dC5tZXRhLCBzeW1ib2xzOiBsYXlvdXQuc3ltYm9scywgYXNQYXJ0aWFsOiBmYWxzZSB9O1xuXG4gICAgbGV0IGR5bmFtaWNUYWcgPSB0aGlzLnRhZy5nZXREeW5hbWljKCk7XG4gICAgbGV0IHN0YXRpY1RhZyA9IHRoaXMudGFnLmdldFN0YXRpYygpO1xuXG4gICAgbGV0IGIgPSBidWlsZGVyKGVudiwgbWV0YSk7XG5cbiAgICBiLnN0YXJ0TGFiZWxzKCk7XG5cbiAgICBpZiAoZHluYW1pY1RhZykge1xuICAgICAgYi5mZXRjaChSZWdpc3Rlci5zMSk7XG5cbiAgICAgIGV4cHIoZHluYW1pY1RhZywgYik7XG5cbiAgICAgIGIuZHVwKCk7XG4gICAgICBiLmxvYWQoUmVnaXN0ZXIuczEpO1xuXG4gICAgICBiLnRlc3QoJ3NpbXBsZScpO1xuXG4gICAgICBiLmp1bXBVbmxlc3MoJ0JPRFknKTtcblxuICAgICAgYi5mZXRjaChSZWdpc3Rlci5zMSk7XG4gICAgICBiLnB1c2hDb21wb25lbnRPcGVyYXRpb25zKCk7XG4gICAgICBiLm9wZW5EeW5hbWljRWxlbWVudCgpO1xuICAgIH0gZWxzZSBpZiAoc3RhdGljVGFnKSB7XG4gICAgICBiLnB1c2hDb21wb25lbnRPcGVyYXRpb25zKCk7XG4gICAgICBiLm9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMoc3RhdGljVGFnKTtcbiAgICB9XG5cbiAgICBpZiAoZHluYW1pY1RhZyB8fCBzdGF0aWNUYWcpIHtcbiAgICAgIGIuZGlkQ3JlYXRlRWxlbWVudChSZWdpc3Rlci5zMCk7XG5cbiAgICAgIGxldCBhdHRycyA9IHRoaXMuYXR0cnNbJ2J1ZmZlciddO1xuXG4gICAgICBmb3IgKGxldCBpPTA7IGk8YXR0cnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29tcGlsZVN0YXRlbWVudChhdHRyc1tpXSwgYik7XG4gICAgICB9XG5cbiAgICAgIGIuZmx1c2hFbGVtZW50KCk7XG4gICAgfVxuXG4gICAgYi5sYWJlbCgnQk9EWScpO1xuICAgIGIuaW52b2tlU3RhdGljKGxheW91dC5hc0Jsb2NrKCkpO1xuXG4gICAgaWYgKGR5bmFtaWNUYWcpIHtcbiAgICAgIGIuZmV0Y2goUmVnaXN0ZXIuczEpO1xuICAgICAgYi50ZXN0KCdzaW1wbGUnKTtcbiAgICAgIGIuanVtcFVubGVzcygnRU5EJyk7XG4gICAgICBiLmNsb3NlRWxlbWVudCgpO1xuICAgIH0gZWxzZSBpZiAoc3RhdGljVGFnKSB7XG4gICAgICBiLmNsb3NlRWxlbWVudCgpO1xuICAgIH1cblxuICAgIGIubGFiZWwoJ0VORCcpO1xuXG4gICAgYi5kaWRSZW5kZXJMYXlvdXQoUmVnaXN0ZXIuczApO1xuXG4gICAgaWYgKGR5bmFtaWNUYWcpIHtcbiAgICAgIGIubG9hZChSZWdpc3Rlci5zMSk7XG4gICAgfVxuXG4gICAgYi5zdG9wTGFiZWxzKCk7XG5cbiAgICBsZXQgc3RhcnQgPSBiLnN0YXJ0O1xuICAgIGxldCBlbmQgPSBiLmZpbmFsaXplKCk7XG5cbiAgICBkZWJ1Z1NsaWNlKGVudiwgc3RhcnQsIGVuZCk7XG5cbiAgICByZXR1cm4gbmV3IENvbXBpbGVkRHluYW1pY1RlbXBsYXRlKHN0YXJ0LCBlbmQsIHtcbiAgICAgIG1ldGEsXG4gICAgICBoYXNFdmFsOiBsYXlvdXQuaGFzRXZhbCxcbiAgICAgIHN5bWJvbHM6IGxheW91dC5zeW1ib2xzLmNvbmNhdChbQVRUUlNfQkxPQ0tdKVxuICAgIH0pO1xuICB9XG59XG5cbmNsYXNzIFVud3JhcHBlZEJ1aWxkZXIgaW1wbGVtZW50cyBJbm5lckxheW91dEJ1aWxkZXIge1xuICBwdWJsaWMgYXR0cnMgPSBuZXcgQ29tcG9uZW50QXR0cnNCdWlsZGVyKCk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGVudjogRW52aXJvbm1lbnQsIHByaXZhdGUgbGF5b3V0OiBUZW1wbGF0ZTxUZW1wbGF0ZU1ldGE+KSB7fVxuXG4gIGdldCB0YWcoKTogQ29tcG9uZW50LkNvbXBvbmVudFRhZ0J1aWxkZXIge1xuICAgIHRocm93IG5ldyBFcnJvcignQlVHOiBDYW5ub3QgY2FsbCBgdGFnYCBvbiBhbiBVbndyYXBwZWRCdWlsZGVyJyk7XG4gIH1cblxuICBjb21waWxlKCk6IENvbXBpbGVkRHluYW1pY1Byb2dyYW0ge1xuICAgIGxldCB7IGVudiwgbGF5b3V0IH0gPSB0aGlzO1xuICAgIHJldHVybiBsYXlvdXQuYXNMYXlvdXQodGhpcy5hdHRyc1snYnVmZmVyJ10pLmNvbXBpbGVEeW5hbWljKGVudik7XG4gIH1cbn1cblxuY2xhc3MgQ29tcG9uZW50VGFnQnVpbGRlciBpbXBsZW1lbnRzIENvbXBvbmVudC5Db21wb25lbnRUYWdCdWlsZGVyIHtcbiAgcHVibGljIGlzRHluYW1pYzogT3B0aW9uPGJvb2xlYW4+ID0gbnVsbDtcbiAgcHVibGljIGlzU3RhdGljOiBPcHRpb248Ym9vbGVhbj4gPSBudWxsO1xuICBwdWJsaWMgc3RhdGljVGFnTmFtZTogT3B0aW9uPHN0cmluZz4gPSBudWxsO1xuICBwdWJsaWMgZHluYW1pY1RhZ05hbWU6IE9wdGlvbjxXaXJlRm9ybWF0LkV4cHJlc3Npb24+ID0gbnVsbDtcblxuICBnZXREeW5hbWljKCk6IE1heWJlPFdpcmVGb3JtYXQuRXhwcmVzc2lvbj4ge1xuICAgIGlmICh0aGlzLmlzRHluYW1pYykge1xuICAgICAgcmV0dXJuIHRoaXMuZHluYW1pY1RhZ05hbWU7XG4gICAgfVxuICB9XG5cbiAgZ2V0U3RhdGljKCk6IE1heWJlPHN0cmluZz4ge1xuICAgIGlmICh0aGlzLmlzU3RhdGljKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdGF0aWNUYWdOYW1lO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyh0YWdOYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLmlzU3RhdGljID0gdHJ1ZTtcbiAgICB0aGlzLnN0YXRpY1RhZ05hbWUgPSB0YWdOYW1lO1xuICB9XG5cbiAgZHluYW1pYyh0YWdOYW1lOiBGdW5jdGlvbkV4cHJlc3Npb248c3RyaW5nPikge1xuICAgIHRoaXMuaXNEeW5hbWljID0gdHJ1ZTtcbiAgICB0aGlzLmR5bmFtaWNUYWdOYW1lID0gW09wcy5DbGllbnRTaWRlRXhwcmVzc2lvbiwgQ2xpZW50U2lkZS5PcHMuRnVuY3Rpb25FeHByZXNzaW9uLCB0YWdOYW1lXTtcbiAgfVxufVxuXG5jbGFzcyBDb21wb25lbnRBdHRyc0J1aWxkZXIgaW1wbGVtZW50cyBDb21wb25lbnQuQ29tcG9uZW50QXR0cnNCdWlsZGVyIHtcbiAgcHJpdmF0ZSBidWZmZXI6IFdpcmVGb3JtYXQuU3RhdGVtZW50cy5BdHRyaWJ1dGVbXSA9IFtdO1xuXG4gIHN0YXRpYyhuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmJ1ZmZlci5wdXNoKFtPcHMuU3RhdGljQXR0ciwgbmFtZSwgdmFsdWUsIG51bGxdKTtcbiAgfVxuXG4gIGR5bmFtaWMobmFtZTogc3RyaW5nLCB2YWx1ZTogRnVuY3Rpb25FeHByZXNzaW9uPHN0cmluZz4pIHtcbiAgICB0aGlzLmJ1ZmZlci5wdXNoKFtPcHMuRHluYW1pY0F0dHIsIG5hbWUsIFtPcHMuQ2xpZW50U2lkZUV4cHJlc3Npb24sIENsaWVudFNpZGUuT3BzLkZ1bmN0aW9uRXhwcmVzc2lvbiwgdmFsdWVdLCBudWxsXSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbXBvbmVudEJ1aWxkZXIgaW1wbGVtZW50cyBJQ29tcG9uZW50QnVpbGRlciB7XG4gIHByaXZhdGUgZW52OiBFbnZpcm9ubWVudDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJ1aWxkZXI6IE9wY29kZUJ1aWxkZXJEU0wpIHtcbiAgICB0aGlzLmVudiA9IGJ1aWxkZXIuZW52O1xuICB9XG5cbiAgc3RhdGljKGRlZmluaXRpb246IENvbXBvbmVudC5Db21wb25lbnREZWZpbml0aW9uPE9wYXF1ZT4sIGFyZ3M6IENvbXBvbmVudEFyZ3MpIHtcbiAgICBsZXQgW3BhcmFtcywgaGFzaCwgX2RlZmF1bHQsIGludmVyc2VdID0gYXJncztcbiAgICBsZXQgeyBidWlsZGVyIH0gPSB0aGlzO1xuXG4gICAgYnVpbGRlci5wdXNoQ29tcG9uZW50TWFuYWdlcihkZWZpbml0aW9uKTtcbiAgICBidWlsZGVyLmludm9rZUNvbXBvbmVudChudWxsLCBwYXJhbXMsIGhhc2gsIF9kZWZhdWx0LCBpbnZlcnNlKTtcbiAgfVxuXG4gIGR5bmFtaWMoZGVmaW5pdGlvbkFyZ3M6IENvbXBvbmVudEFyZ3MsIGdldERlZmluaXRpb246IER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uLCBhcmdzOiBDb21wb25lbnRBcmdzKSB7XG4gICAgbGV0IFtwYXJhbXMsIGhhc2gsIGJsb2NrLCBpbnZlcnNlXSA9IGFyZ3M7XG4gICAgbGV0IHsgYnVpbGRlciB9ID0gdGhpcztcblxuICAgIGlmICghZGVmaW5pdGlvbkFyZ3MgfHwgZGVmaW5pdGlvbkFyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEeW5hbWljIHN5bnRheCB3aXRob3V0IGFuIGFyZ3VtZW50XCIpO1xuICAgIH1cblxuICAgIGxldCBtZXRhID0gdGhpcy5idWlsZGVyLm1ldGEudGVtcGxhdGVNZXRhO1xuXG4gICAgZnVuY3Rpb24gaGVscGVyKHZtOiBQdWJsaWNWTSwgYXJnczogSUFyZ3VtZW50cykge1xuICAgICAgcmV0dXJuIGdldERlZmluaXRpb24odm0sIGFyZ3MsIG1ldGEpO1xuICAgIH1cblxuICAgIGJ1aWxkZXIuc3RhcnRMYWJlbHMoKTtcblxuICAgIGJ1aWxkZXIucHVzaEZyYW1lKCk7XG5cbiAgICBidWlsZGVyLnJldHVyblRvKCdFTkQnKTtcblxuICAgIGJ1aWxkZXIuY29tcGlsZUFyZ3MoZGVmaW5pdGlvbkFyZ3NbMF0sIGRlZmluaXRpb25BcmdzWzFdLCB0cnVlKTtcbiAgICBidWlsZGVyLmhlbHBlcihoZWxwZXIpO1xuXG4gICAgYnVpbGRlci5kdXAoKTtcbiAgICBidWlsZGVyLnRlc3QoJ3NpbXBsZScpO1xuXG4gICAgYnVpbGRlci5lbnRlcigyKTtcblxuICAgIGJ1aWxkZXIuanVtcFVubGVzcygnRUxTRScpO1xuXG4gICAgYnVpbGRlci5wdXNoRHluYW1pY0NvbXBvbmVudE1hbmFnZXIoKTtcbiAgICBidWlsZGVyLmludm9rZUNvbXBvbmVudChudWxsLCBwYXJhbXMsIGhhc2gsIGJsb2NrLCBpbnZlcnNlKTtcblxuICAgIGJ1aWxkZXIubGFiZWwoJ0VMU0UnKTtcbiAgICBidWlsZGVyLmV4aXQoKTtcbiAgICBidWlsZGVyLnJldHVybigpO1xuXG4gICAgYnVpbGRlci5sYWJlbCgnRU5EJyk7XG4gICAgYnVpbGRlci5wb3BGcmFtZSgpO1xuXG4gICAgYnVpbGRlci5zdG9wTGFiZWxzKCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkZXIoZW52OiBFbnZpcm9ubWVudCwgbWV0YTogQ29tcGlsYXRpb25NZXRhKSB7XG4gIHJldHVybiBuZXcgT3Bjb2RlQnVpbGRlckRTTChlbnYsIG1ldGEpO1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjb21waWxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQTBCLHVCQUF1QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFcEYsT0FBTyxFQUFFLEdBQUcsRUFBZ0IsTUFBTSxzQkFBc0IsQ0FBQztBQUd6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXJDLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBUXRFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUUxQyxPQUFPLGdCQUFnQixNQUFNLDRCQUE0QixDQUFDO0FBYzFELE1BQU0sd0JBQXdCLFVBQTRCLEVBQUUsR0FBZ0I7SUFDMUUsSUFBSSxPQUFPLEdBQUcsSUFBSSxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUU5QyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRTVCLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDM0IsQ0FBQztBQVFEO0lBR0UsWUFBbUIsR0FBZ0I7UUFBaEIsUUFBRyxHQUFILEdBQUcsQ0FBYTtJQUFHLENBQUM7SUFFdkMsVUFBVSxDQUFDLE1BQThCO1FBQ3ZDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsVUFBVSxDQUFDLE1BQThCO1FBQ3ZDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxPQUFPO1FBQ0wsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJ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LENBQUMsQ0FBQztRQUV2QixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWpCLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFM0IsT0FBTyxDQUFDLDJCQUEyQixFQUFFLENBQUM7UUFDdEMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFNUQsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QixPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZixPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFakIsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFbkIsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7Q0FDRjtBQUVELE1BQU0sa0JBQWtCLEdBQWdCLEVBQUUsSUFBcUI7SUFDN0QsTUFBTSxDQUFDLElBQUksZ0JBQWdCLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3pDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcGFxdWUsIENvbXBpbGF0aW9uTWV0YSB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgQ29tcGlsZWREeW5hbWljUHJvZ3JhbSwgQ29tcGlsZWREeW5hbWljVGVtcGxhdGUgfSBmcm9tICcuL2NvbXBpbGVkL2Jsb2Nrcyc7XG5pbXBvcnQgeyBNYXliZSwgT3B0aW9uIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBPcHMsIFRlbXBsYXRlTWV0YSB9IGZyb20gJ0BnbGltbWVyL3dpcmUtZm9ybWF0JztcblxuaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tICcuL3RlbXBsYXRlJztcbmltcG9ydCB7IFJlZ2lzdGVyIH0gZnJvbSAnLi9vcGNvZGVzJztcblxuaW1wb3J0IHsgQVRUUlNfQkxPQ0ssIENsaWVudFNpZGUsIGNvbXBpbGVTdGF0ZW1lbnQgfSBmcm9tICcuL3NjYW5uZXInO1xuXG5pbXBvcnQge1xuICBDb21wb25lbnRBcmdzLFxuICBDb21wb25lbnRCdWlsZGVyIGFzIElDb21wb25lbnRCdWlsZGVyLFxuICBEeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvblxufSBmcm9tICcuL29wY29kZS1idWlsZGVyJztcblxuaW1wb3J0IHsgZXhwciB9IGZyb20gJy4vc3ludGF4L2Z1bmN0aW9ucyc7XG5cbmltcG9ydCBPcGNvZGVCdWlsZGVyRFNMIGZyb20gJy4vY29tcGlsZWQvb3Bjb2Rlcy9idWlsZGVyJztcblxuaW1wb3J0ICogYXMgQ29tcG9uZW50IGZyb20gJy4vY29tcG9uZW50L2ludGVyZmFjZXMnO1xuXG5pbXBvcnQgKiBhcyBXaXJlRm9ybWF0IGZyb20gJ0BnbGltbWVyL3dpcmUtZm9ybWF0JztcblxuaW1wb3J0IHsgUHVibGljVk0gfSBmcm9tICcuL3ZtL2FwcGVuZCc7XG5pbXBvcnQgeyBJQXJndW1lbnRzIH0gZnJvbSAnLi92bS9hcmd1bWVudHMnO1xuaW1wb3J0IHsgRnVuY3Rpb25FeHByZXNzaW9uIH0gZnJvbSBcIi4vY29tcGlsZWQvb3Bjb2Rlcy9leHByZXNzaW9uc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBpbGFibGVMYXlvdXQge1xuICBjb21waWxlKGJ1aWxkZXI6IENvbXBvbmVudC5Db21wb25lbnRMYXlvdXRCdWlsZGVyKTogdm9pZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBpbGVMYXlvdXQoY29tcGlsYWJsZTogQ29tcGlsYWJsZUxheW91dCwgZW52OiBFbnZpcm9ubWVudCk6IENvbXBpbGVkRHluYW1pY1Byb2dyYW0ge1xuICBsZXQgYnVpbGRlciA9IG5ldyBDb21wb25lbnRMYXlvdXRCdWlsZGVyKGVudik7XG5cbiAgY29tcGlsYWJsZS5jb21waWxlKGJ1aWxkZXIpO1xuXG4gIHJldHVybiBidWlsZGVyLmNvbXBpbGUoKTtcbn1cblxuaW50ZXJmYWNlIElubmVyTGF5b3V0QnVpbGRlciB7XG4gIHRhZzogQ29tcG9uZW50LkNvbXBvbmVudFRhZ0J1aWxkZXI7XG4gIGF0dHJzOiBDb21wb25lbnQuQ29tcG9uZW50QXR0cnNCdWlsZGVyO1xuICBjb21waWxlKCk6IENvbXBpbGVkRHluYW1pY1Byb2dyYW07XG59XG5cbmNsYXNzIENvbXBvbmVudExheW91dEJ1aWxkZXIgaW1wbGVtZW50cyBDb21wb25lbnQuQ29tcG9uZW50TGF5b3V0QnVpbGRlciB7XG4gIHByaXZhdGUgaW5uZXI6IElubmVyTGF5b3V0QnVpbGRlcjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZW52OiBFbnZpcm9ubWVudCkge31cblxuICB3cmFwTGF5b3V0KGxheW91dDogVGVtcGxhdGU8VGVtcGxhdGVNZXRhPikge1xuICAgIHRoaXMuaW5uZXIgPSBuZXcgV3JhcHBlZEJ1aWxkZXIodGhpcy5lbnYsIGxheW91dCk7XG4gIH1cblxuICBmcm9tTGF5b3V0KGxheW91dDogVGVtcGxhdGU8VGVtcGxhdGVNZXRhPikge1xuICAgIHRoaXMuaW5uZXIgPSBuZXcgVW53cmFwcGVkQnVpbGRlcih0aGlzLmVudiwgbGF5b3V0KTtcbiAgfVxuXG4gIGNvbXBpbGUoKTogQ29tcGlsZWREeW5hbWljUHJvZ3JhbSB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXIuY29tcGlsZSgpO1xuICB9XG5cbiAgZ2V0IHRhZygpOiBDb21wb25lbnQuQ29tcG9uZW50VGFnQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXIudGFnO1xuICB9XG5cbiAgZ2V0IGF0dHJzKCk6IENvbXBvbmVudC5Db21wb25lbnRBdHRyc0J1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmlubmVyLmF0dHJzO1xuICB9XG59XG5cbmNsYXNzIFdyYXBwZWRCdWlsZGVyIGltcGxlbWVudHMgSW5uZXJMYXlvdXRCdWlsZGVyIHtcbiAgcHVibGljIHRhZyA9IG5ldyBDb21wb25lbnRUYWdCdWlsZGVyKCk7XG4gIHB1YmxpYyBhdHRycyA9IG5ldyBDb21wb25lbnRBdHRyc0J1aWxkZXIoKTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZW52OiBFbnZpcm9ubWVudCwgcHJpdmF0ZSBsYXlvdXQ6IFRlbXBsYXRlPFRlbXBsYXRlTWV0YT4pIHt9XG5cbiAgY29tcGlsZSgpOiBDb21waWxlZER5bmFtaWNQcm9ncmFtIHtcbiAgICAvLz09PT09PT09RFlOQU1JQ1xuICAgIC8vICAgICAgICBQdXRWYWx1ZShUYWdFeHByKVxuICAgIC8vICAgICAgICBUZXN0XG4gICAgLy8gICAgICAgIEp1bXBVbmxlc3MoQk9EWSlcbiAgICAvLyAgICAgICAgT3BlbkR5bmFtaWNQcmltaXRpdmVFbGVtZW50XG4gICAgLy8gICAgICAgIERpZENyZWF0ZUVsZW1lbnRcbiAgICAvLyAgICAgICAgLi4uYXR0ciBzdGF0ZW1lbnRzLi4uXG4gICAgLy8gICAgICAgIEZsdXNoRWxlbWVudFxuICAgIC8vIEJPRFk6ICBOb29wXG4gICAgLy8gICAgICAgIC4uLmJvZHkgc3RhdGVtZW50cy4uLlxuICAgIC8vICAgICAgICBQdXRWYWx1ZShUYWdFeHByKVxuICAgIC8vICAgICAgICBUZXN0XG4gICAgLy8gICAgICAgIEp1bXBVbmxlc3MoRU5EKVxuICAgIC8vICAgICAgICBDbG9zZUVsZW1lbnRcbiAgICAvLyBFTkQ6ICAgTm9vcFxuICAgIC8vICAgICAgICBEaWRSZW5kZXJMYXlvdXRcbiAgICAvLyAgICAgICAgRXhpdFxuICAgIC8vXG4gICAgLy89PT09PT09PVNUQVRJQ1xuICAgIC8vICAgICAgICBPcGVuUHJpbWl0aXZlRWxlbWVudE9wY29kZVxuICAgIC8vICAgICAgICBEaWRDcmVhdGVFbGVtZW50XG4gICAgLy8gICAgICAgIC4uLmF0dHIgc3RhdGVtZW50cy4uLlxuICAgIC8vICAgICAgICBGbHVzaEVsZW1lbnRcbiAgICAvLyAgICAgICAgLi4uYm9keSBzdGF0ZW1lbnRzLi4uXG4gICAgLy8gICAgICAgIENsb3NlRWxlbWVudFxuICAgIC8vICAgICAgICBEaWRSZW5kZXJMYXlvdXRcbiAgICAvLyAgICAgICAgRXhpdFxuXG4gICAgbGV0IHsgZW52LCBsYXlvdXQgfSA9IHRoaXM7XG4gICAgbGV0IG1ldGEgPSB7IHRlbXBsYXRlTWV0YTogbGF5b3V0Lm1ldGEsIHN5bWJvbHM6IGxheW91dC5zeW1ib2xzLCBhc1BhcnRpYWw6IGZhbHNlIH07XG5cbiAgICBsZXQgZHluYW1pY1RhZyA9IHRoaXMudGFnLmdldER5bmFtaWMoKTtcbiAgICBsZXQgc3RhdGljVGFnID0gdGhpcy50YWcuZ2V0U3RhdGljKCk7XG5cbiAgICBsZXQgYiA9IGJ1aWxkZXIoZW52LCBtZXRhKTtcblxuICAgIGIuc3RhcnRMYWJlbHMoKTtcblxuICAgIGlmIChkeW5hbWljVGFnKSB7XG4gICAgICBiLmZldGNoKFJlZ2lzdGVyLnMxKTtcblxuICAgICAgZXhwcihkeW5hbWljVGFnLCBiKTtcblxuICAgICAgYi5kdXAoKTtcbiAgICAgIGIubG9hZChSZWdpc3Rlci5zMSk7XG5cbiAgICAgIGIudGVzdCgnc2ltcGxlJyk7XG5cbiAgICAgIGIuanVtcFVubGVzcygnQk9EWScpO1xuXG4gICAgICBiLmZldGNoKFJlZ2lzdGVyLnMxKTtcbiAgICAgIGIucHVzaENvbXBvbmVudE9wZXJhdGlvbnMoKTtcbiAgICAgIGIub3BlbkR5bmFtaWNFbGVtZW50KCk7XG4gICAgfSBlbHNlIGlmIChzdGF0aWNUYWcpIHtcbiAgICAgIGIucHVzaENvbXBvbmVudE9wZXJhdGlvbnMoKTtcbiAgICAgIGIub3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucyhzdGF0aWNUYWcpO1xuICAgIH1cblxuICAgIGlmIChkeW5hbWljVGFnIHx8IHN0YXRpY1RhZykge1xuICAgICAgYi5kaWRDcmVhdGVFbGVtZW50KFJlZ2lzdGVyLnMwKTtcblxuICAgICAgbGV0IGF0dHJzID0gdGhpcy5hdHRyc1snYnVmZmVyJ107XG5cbiAgICAgIGZvciAobGV0IGk9MDsgaTxhdHRycy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb21waWxlU3RhdGVtZW50KGF0dHJzW2ldLCBiKTtcbiAgICAgIH1cblxuICAgICAgYi5mbHVzaEVsZW1lbnQoKTtcbiAgICB9XG5cbiAgICBiLmxhYmVsKCdCT0RZJyk7XG4gICAgYi5pbnZva2VTdGF0aWMobGF5b3V0LmFzQmxvY2soKSk7XG5cbiAgICBpZiAoZHluYW1pY1RhZykge1xuICAgICAgYi5mZXRjaChSZWdpc3Rlci5zMSk7XG4gICAgICBiLnRlc3QoJ3NpbXBsZScpO1xuICAgICAgYi5qdW1wVW5sZXNzKCdFTkQnKTtcbiAgICAgIGIuY2xvc2VFbGVtZW50KCk7XG4gICAgfSBlbHNlIGlmIChzdGF0aWNUYWcpIHtcbiAgICAgIGIuY2xvc2VFbGVtZW50KCk7XG4gICAgfVxuXG4gICAgYi5sYWJlbCgnRU5EJyk7XG5cbiAgICBiLmRpZFJlbmRlckxheW91dChSZWdpc3Rlci5zMCk7XG5cbiAgICBpZiAoZHluYW1pY1RhZykge1xuICAgICAgYi5sb2FkKFJlZ2lzdGVyLnMxKTtcbiAgICB9XG5cbiAgICBiLnN0b3BMYWJlbHMoKTtcblxuICAgIGxldCBzdGFydCA9IGIuc3RhcnQ7XG4gICAgbGV0IGVuZCA9IGIuZmluYWxpemUoKTtcblxuICAgIHJldHVybiBuZXcgQ29tcGlsZWREeW5hbWljVGVtcGxhdGUoc3RhcnQsIGVuZCwge1xuICAgICAgbWV0YSxcbiAgICAgIGhhc0V2YWw6IGxheW91dC5oYXNFdmFsLFxuICAgICAgc3ltYm9sczogbGF5b3V0LnN5bWJvbHMuY29uY2F0KFtBVFRSU19CTE9DS10pXG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgVW53cmFwcGVkQnVpbGRlciBpbXBsZW1lbnRzIElubmVyTGF5b3V0QnVpbGRlciB7XG4gIHB1YmxpYyBhdHRycyA9IG5ldyBDb21wb25lbnRBdHRyc0J1aWxkZXIoKTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZW52OiBFbnZpcm9ubWVudCwgcHJpdmF0ZSBsYXlvdXQ6IFRlbXBsYXRlPFRlbXBsYXRlTWV0YT4pIHt9XG5cbiAgZ2V0IHRhZygpOiBDb21wb25lbnQuQ29tcG9uZW50VGFnQnVpbGRlciB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdCVUc6IENhbm5vdCBjYWxsIGB0YWdgIG9uIGFuIFVud3JhcHBlZEJ1aWxkZXInKTtcbiAgfVxuXG4gIGNvbXBpbGUoKTogQ29tcGlsZWREeW5hbWljUHJvZ3JhbSB7XG4gICAgbGV0IHsgZW52LCBsYXlvdXQgfSA9IHRoaXM7XG4gICAgcmV0dXJuIGxheW91dC5hc0xheW91dCh0aGlzLmF0dHJzWydidWZmZXInXSkuY29tcGlsZUR5bmFtaWMoZW52KTtcbiAgfVxufVxuXG5jbGFzcyBDb21wb25lbnRUYWdCdWlsZGVyIGltcGxlbWVudHMgQ29tcG9uZW50LkNvbXBvbmVudFRhZ0J1aWxkZXIge1xuICBwdWJsaWMgaXNEeW5hbWljOiBPcHRpb248Ym9vbGVhbj4gPSBudWxsO1xuICBwdWJsaWMgaXNTdGF0aWM6IE9wdGlvbjxib29sZWFuPiA9IG51bGw7XG4gIHB1YmxpYyBzdGF0aWNUYWdOYW1lOiBPcHRpb248c3RyaW5nPiA9IG51bGw7XG4gIHB1YmxpYyBkeW5hbWljVGFnTmFtZTogT3B0aW9uPFdpcmVGb3JtYXQuRXhwcmVzc2lvbj4gPSBudWxsO1xuXG4gIGdldER5bmFtaWMoKTogTWF5YmU8V2lyZUZvcm1hdC5FeHByZXNzaW9uPiB7XG4gICAgaWYgKHRoaXMuaXNEeW5hbWljKSB7XG4gICAgICByZXR1cm4gdGhpcy5keW5hbWljVGFnTmFtZTtcbiAgICB9XG4gIH1cblxuICBnZXRTdGF0aWMoKTogTWF5YmU8c3RyaW5nPiB7XG4gICAgaWYgKHRoaXMuaXNTdGF0aWMpIHtcbiAgICAgIHJldHVybiB0aGlzLnN0YXRpY1RhZ05hbWU7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljKHRhZ05hbWU6IHN0cmluZykge1xuICAgIHRoaXMuaXNTdGF0aWMgPSB0cnVlO1xuICAgIHRoaXMuc3RhdGljVGFnTmFtZSA9IHRhZ05hbWU7XG4gIH1cblxuICBkeW5hbWljKHRhZ05hbWU6IEZ1bmN0aW9uRXhwcmVzc2lvbjxzdHJpbmc+KSB7XG4gICAgdGhpcy5pc0R5bmFtaWMgPSB0cnVlO1xuICAgIHRoaXMuZHluYW1pY1RhZ05hbWUgPSBbT3BzLkNsaWVudFNpZGVFeHByZXNzaW9uLCBDbGllbnRTaWRlLk9wcy5GdW5jdGlvbkV4cHJlc3Npb24sIHRhZ05hbWVdO1xuICB9XG59XG5cbmNsYXNzIENvbXBvbmVudEF0dHJzQnVpbGRlciBpbXBsZW1lbnRzIENvbXBvbmVudC5Db21wb25lbnRBdHRyc0J1aWxkZXIge1xuICBwcml2YXRlIGJ1ZmZlcjogV2lyZUZvcm1hdC5TdGF0ZW1lbnRzLkF0dHJpYnV0ZVtdID0gW107XG5cbiAgc3RhdGljKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuYnVmZmVyLnB1c2goW09wcy5TdGF0aWNBdHRyLCBuYW1lLCB2YWx1ZSwgbnVsbF0pO1xuICB9XG5cbiAgZHluYW1pYyhuYW1lOiBzdHJpbmcsIHZhbHVlOiBGdW5jdGlvbkV4cHJlc3Npb248c3RyaW5nPikge1xuICAgIHRoaXMuYnVmZmVyLnB1c2goW09wcy5EeW5hbWljQXR0ciwgbmFtZSwgW09wcy5DbGllbnRTaWRlRXhwcmVzc2lvbiwgQ2xpZW50U2lkZS5PcHMuRnVuY3Rpb25FeHByZXNzaW9uLCB2YWx1ZV0sIG51bGxdKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50QnVpbGRlciBpbXBsZW1lbnRzIElDb21wb25lbnRCdWlsZGVyIHtcbiAgcHJpdmF0ZSBlbnY6IEVudmlyb25tZW50O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYnVpbGRlcjogT3Bjb2RlQnVpbGRlckRTTCkge1xuICAgIHRoaXMuZW52ID0gYnVpbGRlci5lbnY7XG4gIH1cblxuICBzdGF0aWMoZGVmaW5pdGlvbjogQ29tcG9uZW50LkNvbXBvbmVudERlZmluaXRpb248T3BhcXVlPiwgYXJnczogQ29tcG9uZW50QXJncykge1xuICAgIGxldCBbcGFyYW1zLCBoYXNoLCBfZGVmYXVsdCwgaW52ZXJzZV0gPSBhcmdzO1xuICAgIGxldCB7IGJ1aWxkZXIgfSA9IHRoaXM7XG5cbiAgICBidWlsZGVyLnB1c2hDb21wb25lbnRNYW5hZ2VyKGRlZmluaXRpb24pO1xuICAgIGJ1aWxkZXIuaW52b2tlQ29tcG9uZW50KG51bGwsIHBhcmFtcywgaGFzaCwgX2RlZmF1bHQsIGludmVyc2UpO1xuICB9XG5cbiAgZHluYW1pYyhkZWZpbml0aW9uQXJnczogQ29tcG9uZW50QXJncywgZ2V0RGVmaW5pdGlvbjogRHluYW1pY0NvbXBvbmVudERlZmluaXRpb24sIGFyZ3M6IENvbXBvbmVudEFyZ3MpIHtcbiAgICBsZXQgW3BhcmFtcywgaGFzaCwgYmxvY2ssIGludmVyc2VdID0gYXJncztcbiAgICBsZXQgeyBidWlsZGVyIH0gPSB0aGlzO1xuXG4gICAgaWYgKCFkZWZpbml0aW9uQXJncyB8fCBkZWZpbml0aW9uQXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkR5bmFtaWMgc3ludGF4IHdpdGhvdXQgYW4gYXJndW1lbnRcIik7XG4gICAgfVxuXG4gICAgbGV0IG1ldGEgPSB0aGlzLmJ1aWxkZXIubWV0YS50ZW1wbGF0ZU1ldGE7XG5cbiAgICBmdW5jdGlvbiBoZWxwZXIodm06IFB1YmxpY1ZNLCBhcmdzOiBJQXJndW1lbnRzKSB7XG4gICAgICByZXR1cm4gZ2V0RGVmaW5pdGlvbih2bSwgYXJncywgbWV0YSk7XG4gICAgfVxuXG4gICAgYnVpbGRlci5zdGFydExhYmVscygpO1xuXG4gICAgYnVpbGRlci5wdXNoRnJhbWUoKTtcblxuICAgIGJ1aWxkZXIucmV0dXJuVG8oJ0VORCcpO1xuXG4gICAgYnVpbGRlci5jb21waWxlQXJncyhkZWZpbml0aW9uQXJnc1swXSwgZGVmaW5pdGlvbkFyZ3NbMV0sIHRydWUpO1xuICAgIGJ1aWxkZXIuaGVscGVyKGhlbHBlcik7XG5cbiAgICBidWlsZGVyLmR1cCgpO1xuICAgIGJ1aWxkZXIudGVzdCgnc2ltcGxlJyk7XG5cbiAgICBidWlsZGVyLmVudGVyKDIpO1xuXG4gICAgYnVpbGRlci5qdW1wVW5sZXNzKCdFTFNFJyk7XG5cbiAgICBidWlsZGVyLnB1c2hEeW5hbWljQ29tcG9uZW50TWFuYWdlcigpO1xuICAgIGJ1aWxkZXIuaW52b2tlQ29tcG9uZW50KG51bGwsIHBhcmFtcywgaGFzaCwgYmxvY2ssIGludmVyc2UpO1xuXG4gICAgYnVpbGRlci5sYWJlbCgnRUxTRScpO1xuICAgIGJ1aWxkZXIuZXhpdCgpO1xuICAgIGJ1aWxkZXIucmV0dXJuKCk7XG5cbiAgICBidWlsZGVyLmxhYmVsKCdFTkQnKTtcbiAgICBidWlsZGVyLnBvcEZyYW1lKCk7XG5cbiAgICBidWlsZGVyLnN0b3BMYWJlbHMoKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRlcihlbnY6IEVudmlyb25tZW50LCBtZXRhOiBDb21waWxhdGlvbk1ldGEpIHtcbiAgcmV0dXJuIG5ldyBPcGNvZGVCdWlsZGVyRFNMKGVudiwgbWV0YSk7XG59XG4iXX0=

@@ -5,3 +5,3 @@ import { populateBuiltins } from './syntax/functions';

import { defaultManagers } from './dom/attribute-managers';
import { assert, ensureGuid, expect } from '@glimmer/util';
import { ensureGuid, } from '@glimmer/util';
export class Scope {

@@ -222,7 +222,6 @@ constructor(

begin() {
assert(!this._transaction, 'Cannot start a nested transaction');
this._transaction = new Transaction();
}
get transaction() {
return expect(this._transaction, 'must be in a transaction');
return this._transaction;
}

@@ -263,2 +262,2 @@ didCreate(component, manager) {

export default Environment;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJlbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQW1CLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBS3BELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6RSxPQUFPLEVBQ0wsZUFBZSxFQUVoQixNQUFNLDBCQUEwQixDQUFDO0FBZ0JsQyxPQUFPLEVBTUwsTUFBTSxFQUNOLFVBQVUsRUFDVixNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFvQnZCLE1BQU07SUFxQko7UUFDRSx5QkFBeUI7UUFDakIsS0FBa0IsRUFDbEIsY0FBNkIsSUFBSTtRQUN6QywrREFBK0Q7UUFDdkQsWUFBcUMsSUFBSTtRQUNqRCwrQ0FBK0M7UUFDdkMsYUFBMkQsSUFBSTtRQUwvRCxVQUFLLEdBQUwsS0FBSyxDQUFhO1FBQ2xCLGdCQUFXLEdBQVgsV0FBVyxDQUFzQjtRQUVqQyxjQUFTLEdBQVQsU0FBUyxDQUFnQztRQUV6QyxlQUFVLEdBQVYsVUFBVSxDQUFxRDtJQUN6RSxDQUFDO0lBNUJELE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBb0MsRUFBRSxJQUFJLEdBQUcsQ0FBQztRQUN4RCxJQUFJLElBQUksR0FBcUMsSUFBSSxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRWpFLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLG1CQUFtQixDQUFDO1FBQ2hDLENBQUM7UUFFRCxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFD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QUFXLENBQUMsc0JBQXNCLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxVQUFVLENBQUMsQ0FBYztRQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDM0IsQ0FBQztJQUVELFlBQVksQ0FBQyxPQUF1QixFQUFFLElBQVksRUFBRSxVQUFtQixFQUFFLFNBQWtCO1FBQ3pGLE1BQU0sQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsU0FBUyxLQUFLLFNBQVMsR0FBRyxJQUFJLEdBQUcsU0FBUyxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzFCLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNaLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ2xELENBQUM7UUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0NBYUY7QUFFRCxlQUFlLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgQmxvY2tzLCBJbmxpbmVzLCBwb3B1bGF0ZUJ1aWx0aW5zIH0gZnJvbSAnLi9zeW50YXgvZnVuY3Rpb25zJztcblxuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi9lbnZpcm9ubWVudC9jb25zdGFudHMnO1xuXG5pbXBvcnQgKiBhcyBTaW1wbGUgZnJvbSAnLi9kb20vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBET01DaGFuZ2VzLCBET01UcmVlQ29uc3RydWN0aW9uIH0gZnJvbSAnLi9kb20vaGVscGVyJztcbmltcG9ydCB7IFJlZmVyZW5jZSwgT3BhcXVlSXRlcmFibGUgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgVU5ERUZJTkVEX1JFRkVSRU5DRSwgQ29uZGl0aW9uYWxSZWZlcmVuY2UgfSBmcm9tICcuL3JlZmVyZW5jZXMnO1xuaW1wb3J0IHtcbiAgZGVmYXVsdE1hbmFnZXJzLFxuICBBdHRyaWJ1dGVNYW5hZ2VyXG59IGZyb20gJy4vZG9tL2F0dHJpYnV0ZS1tYW5hZ2Vycyc7XG5cbmltcG9ydCB7XG4gIFBhcnRpYWxEZWZpbml0aW9uXG59IGZyb20gJy4vcGFydGlhbCc7XG5cbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50TWFuYWdlcixcbiAgQ29tcG9uZW50RGVmaW5pdGlvblxufSBmcm9tICcuL2NvbXBvbmVudC9pbnRlcmZhY2VzJztcblxuaW1wb3J0IHtcbiAgTW9kaWZpZXJNYW5hZ2VyXG59IGZyb20gJy4vbW9kaWZpZXIvaW50ZXJmYWNlcyc7XG5cbmltcG9ydCB7XG4gIERpY3QsXG4gIE9wdGlvbixcbiAgRGVzdHJveWFibGUsXG4gIE9wYXF1ZSxcbiAgSGFzR3VpZCxcbiAgYXNzZXJ0LFxuICBlbnN1cmVHdWlkLFxuICBleHBlY3Rcbn0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5cbmltcG9ydCB7XG4gIFRlbXBsYXRlTWV0YVxufSBmcm9tICdAZ2xpbW1lci93aXJlLWZvcm1hdCc7XG5cbmltcG9ydCB7IEJsb2NrIH0gZnJvbSAnLi9zY2FubmVyJztcblxuaW1wb3J0IHsgUHVibGljVk0gfSBmcm9tICcuL3ZtL2FwcGVuZCc7XG5cbmltcG9ydCB7IElBcmd1bWVudHMgfSBmcm9tICcuL3ZtL2FyZ3VtZW50cyc7XG5cbmV4cG9ydCB0eXBlIFNjb3BlU2xvdCA9IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiB8IE9wdGlvbjxCbG9jaz47XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1pY1Njb3BlIHtcbiAgZ2V0KGtleTogc3RyaW5nKTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+O1xuICBzZXQoa2V5OiBzdHJpbmcsIHJlZmVyZW5jZTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+KTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+O1xuICBjaGlsZCgpOiBEeW5hbWljU2NvcGU7XG59XG5cbmV4cG9ydCBjbGFzcyBTY29wZSB7XG4gIHN0YXRpYyByb290KHNlbGY6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgc2l6ZSA9IDApIHtcbiAgICBsZXQgcmVmczogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+W10gPSBuZXcgQXJyYXkoc2l6ZSArIDEpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gc2l6ZTsgaSsrKSB7XG4gICAgICByZWZzW2ldID0gVU5ERUZJTkVEX1JFRkVSRU5DRTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFNjb3BlKHJlZnMpLmluaXQoeyBzZWxmIH0pO1xuICB9XG5cbiAgc3RhdGljIHNpemVkKHNpemUgPSAwKSB7XG4gICAgbGV0IHJlZnM6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPltdID0gbmV3IEFycmF5KHNpemUgKyAxKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IHNpemU7IGkrKykge1xuICAgICAgcmVmc1tpXSA9IFVOREVGSU5FRF9SRUZFUkVOQ0U7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBTY29wZShyZWZzKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIC8vIHRoZSAwdGggc2xvdCBpcyBgc2VsZmBcbiAgICBwcml2YXRlIHNsb3RzOiBTY29wZVNsb3RbXSxcbiAgICBwcml2YXRlIGNhbGxlclNjb3BlOiBPcHRpb248U2NvcGU+ID0gbnVsbCxcbiAgICAvLyBuYW1lZCBhcmd1bWVudHMgYW5kIGJsb2NrcyBwYXNzZWQgdG8gYSBsYXlvdXQgdGhhdCB1c2VzIGV2YWxcbiAgICBwcml2YXRlIGV2YWxTY29wZTogT3B0aW9uPERpY3Q8U2NvcGVTbG90Pj4gPSBudWxsLFxuICAgIC8vIGxvY2FscyBpbiBzY29wZSB3aGVuIHRoZSBwYXJ0aWFsIHdhcyBpbnZva2VkXG4gICAgcHJpdmF0ZSBwYXJ0aWFsTWFwOiBPcHRpb248RGljdDxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4+PiA9IG51bGwpIHtcbiAgfVxuXG4gIGluaXQoeyBzZWxmIH06IHsgc2VsZjogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+IH0pOiB0aGlzIHtcbiAgICB0aGlzLnNsb3RzWzBdID0gc2VsZjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGdldFNlbGYoKTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+IHtcbiAgICByZXR1cm4gdGhpcy5nZXQ8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+PigwKTtcbiAgfVxuXG4gIGdldFN5bWJvbChzeW1ib2w6IG51bWJlcik6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0PFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPj4oc3ltYm9sKTtcbiAgfVxuXG4gIGdldEJsb2NrKHN5bWJvbDogbnVtYmVyKTogQmxvY2sge1xuICAgIHJldHVybiB0aGlzLmdldDxCbG9jaz4oc3ltYm9sKTtcbiAgfVxuXG4gIGdldEV2YWxTY29wZSgpOiBPcHRpb248RGljdDxTY29wZVNsb3Q+PiB7XG4gICAgcmV0dXJuIHRoaXMuZXZhbFNjb3BlO1xuICB9XG5cbiAgZ2V0UGFydGlhbE1hcCgpOiBPcHRpb248RGljdDxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4+PiB7XG4gICAgcmV0dXJuIHRoaXMucGFydGlhbE1hcDtcbiAgfVxuXG4gIGJpbmQoc3ltYm9sOiBudW1iZXIsIHZhbHVlOiBTY29wZVNsb3QpIHtcbiAgICB0aGlzLnNldChzeW1ib2wsIHZhbHVlKTtcbiAgfVxuXG4gIGJpbmRTZWxmKHNlbGY6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPikge1xuICAgIHRoaXMuc2V0PFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPj4oMCwgc2VsZik7XG4gIH1cblxuICBiaW5kU3ltYm9sKHN5bWJvbDogbnVtYmVyLCB2YWx1ZTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+KSB7XG4gICAgdGhpcy5zZXQ8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+PihzeW1ib2wsIHZhbHVlKTtcbiAgfVxuXG4gIGJpbmRCbG9jayhzeW1ib2w6IG51bWJlciwgdmFsdWU6IE9wdGlvbjxCbG9jaz4pIHtcbiAgICB0aGlzLnNldDxPcHRpb248QmxvY2s+PihzeW1ib2wsIHZhbHVlKTtcbiAgfVxuXG4gIGJpbmRFdmFsU2NvcGUobWFwOiBPcHRpb248RGljdDxTY29wZVNsb3Q+Pikge1xuICAgIHRoaXMuZXZhbFNjb3BlID0gbWFwO1xuICB9XG5cbiAgYmluZFBhcnRpYWxNYXAobWFwOiBEaWN0PFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPj4pIHtcbiAgICB0aGlzLnBhcnRpYWxNYXAgPSBtYXA7XG4gIH1cblxuICBiaW5kQ2FsbGVyU2NvcGUoc2NvcGU6IE9wdGlvbjxTY29wZT4pIHtcbiAgICB0aGlzLmNhbGxlclNjb3BlID0gc2NvcGU7XG4gIH1cblxuICBnZXRDYWxsZXJTY29wZSgpOiBPcHRpb248U2NvcGU+IHtcbiAgICByZXR1cm4gdGhpcy5jYWxsZXJTY29wZTtcbiAgfVxuXG4gIGNoaWxkKCk6IFNjb3BlIHtcbiAgICByZXR1cm4gbmV3IFNjb3BlKHRoaXMuc2xvdHMuc2xpY2UoKSwgdGhpcy5jYWxsZXJTY29wZSwgdGhpcy5ldmFsU2NvcGUsIHRoaXMucGFydGlhbE1hcCk7XG4gIH1cblxuICBwcml2YXRlIGdldDxUPihpbmRleDogbnVtYmVyKTogVCB7XG4gICAgaWYgKGluZGV4ID49IHRoaXMuc2xvdHMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgQlVHOiBjYW5ub3QgZ2V0ICQke2luZGV4fSBmcm9tIHNjb3BlOyBsZW5ndGg9JHt0aGlzLnNsb3RzLmxlbmd0aH1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zbG90c1tpbmRleF0gYXMgYW55IGFzIFQ7XG4gIH1cblxuICBwcml2YXRlIHNldDxUPihpbmRleDogbnVtYmVyLCB2YWx1ZTogVCk6IHZvaWQge1xuICAgIGlmIChpbmRleCA+PSB0aGlzLnNsb3RzLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYEJVRzogY2Fubm90IGdldCAkJHtpbmRleH0gZnJvbSBzY29wZTsgbGVuZ3RoPSR7dGhpcy5zbG90cy5sZW5ndGh9YCk7XG4gICAgfVxuXG4gICAgdGhpcy5zbG90c1tpbmRleF0gPSB2YWx1ZSBhcyBhbnk7XG4gIH1cbn1cblxuY2xhc3MgVHJhbnNhY3Rpb24ge1xuICBwdWJsaWMgc2NoZWR1bGVkSW5zdGFsbE1hbmFnZXJzOiBNb2RpZmllck1hbmFnZXI8T3BhcXVlPltdID0gW107XG4gIHB1YmxpYyBzY2hlZHVsZWRJbnN0YWxsTW9kaWZpZXJzOiBPYmplY3RbXSA9IFtdO1xuICBwdWJsaWMgc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJNYW5hZ2VyczogTW9kaWZpZXJNYW5hZ2VyPE9wYXF1ZT5bXSA9IFtdO1xuICBwdWJsaWMgc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJzOiBPYmplY3RbXSA9IFtdO1xuICBwdWJsaWMgY3JlYXRlZENvbXBvbmVudHM6IENvbXBvbmVudFtdID0gW107XG4gIHB1YmxpYyBjcmVhdGVkTWFuYWdlcnM6IENvbXBvbmVudE1hbmFnZXI8Q29tcG9uZW50PltdID0gW107XG4gIHB1YmxpYyB1cGRhdGVkQ29tcG9uZW50czogQ29tcG9uZW50W10gPSBbXTtcbiAgcHVibGljIHVwZGF0ZWRNYW5hZ2VyczogQ29tcG9uZW50TWFuYWdlcjxDb21wb25lbnQ+W10gPSBbXTtcbiAgcHVibGljIGRlc3RydWN0b3JzOiBEZXN0cm95YWJsZVtdID0gW107XG5cbiAgZGlkQ3JlYXRlPFQ+KGNvbXBvbmVudDogVCwgbWFuYWdlcjogQ29tcG9uZW50TWFuYWdlcjxUPikge1xuICAgIHRoaXMuY3JlYXRlZENvbXBvbmVudHMucHVzaChjb21wb25lbnQpO1xuICAgIHRoaXMuY3JlYXRlZE1hbmFnZXJzLnB1c2gobWFuYWdlcik7XG4gIH1cblxuICBkaWRVcGRhdGU8VD4oY29tcG9uZW50OiBULCBtYW5hZ2VyOiBDb21wb25lbnRNYW5hZ2VyPFQ+KSB7XG4gICAgdGhpcy51cGRhdGVkQ29tcG9uZW50cy5wdXNoKGNvbXBvbmVudCk7XG4gICAgdGhpcy51cGRhdGVkTWFuYWdlcnMucHVzaChtYW5hZ2VyKTtcbiAgfVxuXG4gIHNjaGVkdWxlSW5zdGFsbE1vZGlmaWVyPFQ+KG1vZGlmaWVyOiBULCBtYW5hZ2VyOiBNb2RpZmllck1hbmFnZXI8VD4pIHtcbiAgICB0aGlzLnNjaGVkdWxlZEluc3RhbGxNYW5hZ2Vycy5wdXNoKG1hbmFnZXIpO1xuICAgIHRoaXMuc2NoZWR1bGVkSW5zdGFsbE1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcbiAgfVxuXG4gIHNjaGVkdWxlVXBkYXRlTW9kaWZpZXI8VD4obW9kaWZpZXI6IFQsIG1hbmFnZXI6IE1vZGlmaWVyTWFuYWdlcjxUPikge1xuICAgIHRoaXMuc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJNYW5hZ2Vycy5wdXNoKG1hbmFnZXIpO1xuICAgIHRoaXMuc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJzLnB1c2gobW9kaWZpZXIpO1xuICB9XG5cbiAgZGlkRGVzdHJveShkOiBEZXN0cm95YWJsZSkge1xuICAgIHRoaXMuZGVzdHJ1Y3RvcnMucHVzaChkKTtcbiAgfVxuXG4gIGNvbW1pdCgpIHtcbiAgICBsZXQgeyBjcmVhdGVkQ29tcG9uZW50cywgY3JlYXRlZE1hbmFnZXJzIH0gPSB0aGlzO1xuXG4gICAgZm9yIChsZXQgaT0wOyBpPGNyZWF0ZWRDb21wb25lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgY29tcG9uZW50ID0gY3JlYXRlZENvbXBvbmVudHNbaV07XG4gICAgICBsZXQgbWFuYWdlciA9IGNyZWF0ZWRNYW5hZ2Vyc1tpXTtcbiAgICAgIG1hbmFnZXIuZGlkQ3JlYXRlKGNvbXBvbmVudCk7XG4gICAgfVxuXG4gICAgbGV0IHsgdXBkYXRlZENvbXBvbmVudHMsIHVwZGF0ZWRNYW5hZ2VycyB9ID0gdGhpcztcblxuICAgIGZvciAobGV0IGk9MDsgaTx1cGRhdGVkQ29tcG9uZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IGNvbXBvbmVudCA9IHVwZGF0ZWRDb21wb25lbnRzW2ldO1xuICAgICAgbGV0IG1hbmFnZXIgPSB1cGRhdGVkTWFuYWdlcnNbaV07XG4gICAgICBtYW5hZ2VyLmRpZFVwZGF0ZShjb21wb25lbnQpO1xuICAgIH1cblxuICAgIGxldCB7IGRlc3RydWN0b3JzIH0gPSB0aGlzO1xuXG4gICAgZm9yIChsZXQgaT0wOyBpPGRlc3RydWN0b3JzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBkZXN0cnVjdG9yc1tpXS5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgbGV0IHsgc2NoZWR1bGVkSW5zdGFsbE1hbmFnZXJzLCBzY2hlZHVsZWRJbnN0YWxsTW9kaWZpZXJzIH0gPSB0aGlzO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzY2hlZHVsZWRJbnN0YWxsTWFuYWdlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBtYW5hZ2VyID0gc2NoZWR1bGVkSW5zdGFsbE1hbmFnZXJzW2ldO1xuICAgICAgbGV0IG1vZGlmaWVyID0gc2NoZWR1bGVkSW5zdGFsbE1vZGlmaWVyc1tpXTtcbiAgICAgIG1hbmFnZXIuaW5zdGFsbChtb2RpZmllcik7XG4gICAgfVxuXG4gICAgbGV0IHsgc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJNYW5hZ2Vycywgc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJzIH0gPSB0aGlzO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzY2hlZHVsZWRVcGRhdGVNb2RpZmllck1hbmFnZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgbWFuYWdlciA9IHNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVyTWFuYWdlcnNbaV07XG4gICAgICBsZXQgbW9kaWZpZXIgPSBzY2hlZHVsZWRVcGRhdGVNb2RpZmllcnNbaV07XG4gICAgICBtYW5hZ2VyLnVwZGF0ZShtb2RpZmllcik7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPcGNvZGUge1xuICBwdWJsaWMgb2Zmc2V0ID0gMDtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhcnJheTogVWludDMyQXJyYXkgfCBBcnJheTxudW1iZXI+KSB7fVxuXG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiB0aGlzLmFycmF5W3RoaXMub2Zmc2V0XTtcbiAgfVxuXG4gIGdldCBvcDEoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXJyYXlbdGhpcy5vZmZzZXQgKyAxXTtcbiAgfVxuXG4gIGdldCBvcDIoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXJyYXlbdGhpcy5vZmZzZXQgKyAyXTtcbiAgfVxuXG4gIGdldCBvcDMoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXJyYXlbdGhpcy5vZmZzZXQgKyAzXTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJvZ3JhbSB7XG4gIFtrZXk6IG51bWJlcl06IG5ldmVyO1xuXG4gIHByaXZhdGUgb3Bjb2RlczogbnVtYmVyW10gPSBbXTtcbiAgcHJpdmF0ZSBfb2Zmc2V0ID0gMDtcbiAgcHJpdmF0ZSBfb3Bjb2RlOiBPcGNvZGU7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5fb3Bjb2RlID0gbmV3IE9wY29kZSh0aGlzLm9wY29kZXMpO1xuICB9XG5cbiAgZ2V0IG5leHQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fb2Zmc2V0O1xuICB9XG5cbiAgZ2V0IGN1cnJlbnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fb2Zmc2V0IC0gNDtcbiAgfVxuXG4gIG9wY29kZShvZmZzZXQ6IG51bWJlcik6IE9wY29kZSB7XG4gICAgdGhpcy5fb3Bjb2RlLm9mZnNldCA9IG9mZnNldDtcbiAgICByZXR1cm4gdGhpcy5fb3Bjb2RlO1xuICB9XG5cbiAgc2V0KHBvczogbnVtYmVyLCB0eXBlOiBudW1iZXIsIG9wMSA9IDAsIG9wMiA9IDAsIG9wMyA9IDApIHtcbiAgICB0aGlzLm9wY29kZXNbcG9zXSA9IHR5cGU7XG4gICAgdGhpcy5vcGNvZGVzW3BvcyArIDFdID0gb3AxO1xuICAgIHRoaXMub3Bjb2Rlc1twb3MgKyAyXSA9IG9wMjtcbiAgICB0aGlzLm9wY29kZXNbcG9zICsgM10gPSBvcDM7XG4gIH1cblxuICBwdXNoKHR5cGU6IG51bWJlciwgb3AxID0gMCwgb3AyID0gMCwgb3AzID0gMCk6IG51bWJlciB7XG4gICAgbGV0IG9mZnNldCA9IHRoaXMuX29mZnNldDtcbiAgICB0aGlzLm9wY29kZXNbdGhpcy5fb2Zmc2V0KytdID0gdHlwZTtcbiAgICB0aGlzLm9wY29kZXNbdGhpcy5fb2Zmc2V0KytdID0gb3AxO1xuICAgIHRoaXMub3Bjb2Rlc1t0aGlzLl9vZmZzZXQrK10gPSBvcDI7XG4gICAgdGhpcy5vcGNvZGVzW3RoaXMuX29mZnNldCsrXSA9IG9wMztcbiAgICByZXR1cm4gb2Zmc2V0O1xuICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBFbnZpcm9ubWVudCB7XG4gIHByb3RlY3RlZCB1cGRhdGVPcGVyYXRpb25zOiBET01DaGFuZ2VzO1xuICBwcm90ZWN0ZWQgYXBwZW5kT3BlcmF0aW9uczogRE9NVHJlZUNvbnN0cnVjdGlvbjtcbiAgcHJpdmF0ZSBfbWFjcm9zOiBPcHRpb248eyBibG9ja3M6IEJsb2NrcywgaW5saW5lczogSW5saW5lcyB9PiA9IG51bGw7XG4gIHByaXZhdGUgX3RyYW5zYWN0aW9uOiBPcHRpb248VHJhbnNhY3Rpb24+ID0gbnVsbDtcbiAgcHVibGljIGNvbnN0YW50czogQ29uc3RhbnRzID0gbmV3IENvbnN0YW50cygpO1xuICBwdWJsaWMgcHJvZ3JhbSA9IG5ldyBQcm9ncmFtKCk7XG5cbiAgY29uc3RydWN0b3IoeyBhcHBlbmRPcGVyYXRpb25zLCB1cGRhdGVPcGVyYXRpb25zIH06IHsgYXBwZW5kT3BlcmF0aW9uczogRE9NVHJlZUNvbnN0cnVjdGlvbiwgdXBkYXRlT3BlcmF0aW9uczogRE9NQ2hhbmdlcyB9KSB7XG4gICAgdGhpcy5hcHBlbmRPcGVyYXRpb25zID0gYXBwZW5kT3BlcmF0aW9ucztcbiAgICB0aGlzLnVwZGF0ZU9wZXJhdGlvbnMgPSB1cGRhdGVPcGVyYXRpb25zO1xuICB9XG5cbiAgdG9Db25kaXRpb25hbFJlZmVyZW5jZShyZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+KTogUmVmZXJlbmNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gbmV3IENvbmRpdGlvbmFsUmVmZXJlbmNlKHJlZmVyZW5jZSk7XG4gIH1cblxuICBhYnN0cmFjdCBpdGVyYWJsZUZvcihyZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+LCBrZXk6IHN0cmluZyk6IE9wYXF1ZUl0ZXJhYmxlO1xuICBhYnN0cmFjdCBwcm90b2NvbEZvclVSTChzOiBzdHJpbmcpOiBzdHJpbmc7XG5cbiAgZ2V0QXBwZW5kT3BlcmF0aW9ucygpOiBET01UcmVlQ29uc3RydWN0aW9uIHsgcmV0dXJuIHRoaXMuYXBwZW5kT3BlcmF0aW9uczsgfVxuICBnZXRET00oKTogRE9NQ2hhbmdlcyB7IHJldHVybiB0aGlzLnVwZGF0ZU9wZXJhdGlvbnM7IH1cblxuICBnZXRJZGVudGl0eShvYmplY3Q6IEhhc0d1aWQpOiBzdHJpbmcge1xuICAgIHJldHVybiBlbnN1cmVHdWlkKG9iamVjdCkgKyAnJztcbiAgfVxuXG4gIGJlZ2luKCkge1xuICAgIGFzc2VydCghdGhpcy5fdHJhbnNhY3Rpb24sICdDYW5ub3Qgc3RhcnQgYSBuZXN0ZWQgdHJhbnNhY3Rpb24nKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgdHJhbnNhY3Rpb24oKTogVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiBleHBlY3QodGhpcy5fdHJhbnNhY3Rpb24sICdtdXN0IGJlIGluIGEgdHJhbnNhY3Rpb24nKTtcbiAgfVxuXG4gIGRpZENyZWF0ZTxUPihjb21wb25lbnQ6IFQsIG1hbmFnZXI6IENvbXBvbmVudE1hbmFnZXI8VD4pIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLmRpZENyZWF0ZShjb21wb25lbnQsIG1hbmFnZXIpO1xuICB9XG5cbiAgZGlkVXBkYXRlPFQ+KGNvbXBvbmVudDogVCwgbWFuYWdlcjogQ29tcG9uZW50TWFuYWdlcjxUPikge1xuICAgIHRoaXMudHJhbnNhY3Rpb24uZGlkVXBkYXRlKGNvbXBvbmVudCwgbWFuYWdlcik7XG4gIH1cblxuICBzY2hlZHVsZUluc3RhbGxNb2RpZmllcjxUPihtb2RpZmllcjogVCwgbWFuYWdlcjogTW9kaWZpZXJNYW5hZ2VyPFQ+KSB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zY2hlZHVsZUluc3RhbGxNb2RpZmllcihtb2RpZmllciwgbWFuYWdlcik7XG4gIH1cblxuICBzY2hlZHVsZVVwZGF0ZU1vZGlmaWVyPFQ+KG1vZGlmaWVyOiBULCBtYW5hZ2VyOiBNb2RpZmllck1hbmFnZXI8VD4pIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNjaGVkdWxlVXBkYXRlTW9kaWZpZXIobW9kaWZpZXIsIG1hbmFnZXIpO1xuICB9XG5cbiAgZGlkRGVzdHJveShkOiBEZXN0cm95YWJsZSkge1xuICAgIHRoaXMudHJhbnNhY3Rpb24uZGlkRGVzdHJveShkKTtcbiAgfVxuXG4gIGNvbW1pdCgpIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLmNvbW1pdCgpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gbnVsbDtcbiAgfVxuXG4gIGF0dHJpYnV0ZUZvcihlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgYXR0cjogc3RyaW5nLCBpc1RydXN0aW5nOiBib29sZWFuLCBuYW1lc3BhY2U/OiBzdHJpbmcpOiBBdHRyaWJ1dGVNYW5hZ2VyIHtcbiAgICByZXR1cm4gZGVmYXVsdE1hbmFnZXJzKGVsZW1lbnQsIGF0dHIsIGlzVHJ1c3RpbmcsIG5hbWVzcGFjZSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IG5hbWVzcGFjZSk7XG4gIH1cblxuICBtYWNyb3MoKTogeyBibG9ja3M6IEJsb2NrcywgaW5saW5lczogSW5saW5lcyB9IHtcbiAgICBsZXQgbWFjcm9zID0gdGhpcy5fbWFjcm9zO1xuICAgIGlmICghbWFjcm9zKSB7XG4gICAgICB0aGlzLl9tYWNyb3MgPSBtYWNyb3MgPSB0aGlzLnBvcHVsYXRlQnVpbHRpbnMoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWFjcm9zO1xuICB9XG5cbiAgcG9wdWxhdGVCdWlsdGlucygpOiB7IGJsb2NrczogQmxvY2tzLCBpbmxpbmVzOiBJbmxpbmVzIH0ge1xuICAgIHJldHVybiBwb3B1bGF0ZUJ1aWx0aW5zKCk7XG4gIH1cblxuICBhYnN0cmFjdCBoYXNIZWxwZXIoaGVscGVyTmFtZTogc3RyaW5nLCBtZXRhOiBUZW1wbGF0ZU1ldGEpOiBib29sZWFuO1xuICBhYnN0cmFjdCBsb29rdXBIZWxwZXIoaGVscGVyTmFtZTogc3RyaW5nLCBtZXRhOiBUZW1wbGF0ZU1ldGEpOiBIZWxwZXI7XG5cbiAgYWJzdHJhY3QgaGFzTW9kaWZpZXIobW9kaWZpZXJOYW1lOiBzdHJpbmcsIG1ldGE6IFRlbXBsYXRlTWV0YSk6IGJvb2xlYW47XG4gIGFic3RyYWN0IGxvb2t1cE1vZGlmaWVyKG1vZGlmaWVyTmFtZTogc3RyaW5nLCBtZXRhOiBUZW1wbGF0ZU1ldGEpOiBNb2RpZmllck1hbmFnZXI8T3BhcXVlPjtcblxuICBhYnN0cmFjdCBoYXNDb21wb25lbnREZWZpbml0aW9uKHRhZ05hbWU6IHN0cmluZywgbWV0YTogVGVtcGxhdGVNZXRhKTogYm9vbGVhbjtcbiAgYWJzdHJhY3QgZ2V0Q29tcG9uZW50RGVmaW5pdGlvbih0YWdOYW1lOiBzdHJpbmcsIG1ldGE6IFRlbXBsYXRlTWV0YSk6IENvbXBvbmVudERlZmluaXRpb248T3BhcXVlPjtcblxuICBhYnN0cmFjdCBoYXNQYXJ0aWFsKHBhcnRpYWxOYW1lOiBzdHJpbmcsIG1ldGE6IFRlbXBsYXRlTWV0YSk6IGJvb2xlYW47XG4gIGFic3RyYWN0IGxvb2t1cFBhcnRpYWwoUGFydGlhbE5hbWU6IHN0cmluZywgbWV0YTogVGVtcGxhdGVNZXRhKTogUGFydGlhbERlZmluaXRpb248VGVtcGxhdGVNZXRhPjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgRW52aXJvbm1lbnQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGVscGVyIHtcbiAgKHZtOiBQdWJsaWNWTSwgYXJnczogSUFyZ3VtZW50cyk6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPjtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJlbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQW1CLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBS3BELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6RSxPQUFPLEVBQ0wsZUFBZSxFQUVoQixNQUFNLDBCQUEwQixDQUFDO0FBZ0JsQyxPQUFPLEVBTUwsVUFBVSxHQUNYLE1BQU0sZUFBZSxDQUFDO0FBb0J2QixNQUFNO0lBcUJKO1FBQ0UseUJBQXlCO1FBQ2pCLEtBQWtCLEVBQ2xCLGNBQTZCLElBQUk7UUFDekMsK0RBQStEO1FBQ3ZELFlBQXFDLElBQUk7UUFDakQsK0NBQStDO1FBQ3ZDLGFBQTJELElBQUk7UUFML0QsVUFBSyxHQUFMLEtBQUssQ0FBYTtRQUNsQixnQkFBVyxHQUFYLFdBQVcsQ0FBc0I7UUFFakMsY0FBUyxHQUFULFNBQVMsQ0FBZ0M7UUFFekMsZUFBVSxHQUFWLFVBQVUsQ0FBcUQ7SUFDekUsQ0FBQztJQTVCRCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQW9DLEVBQUUsSUFBSSxHQUFHLENBQUM7UUFDeEQsSUFBSSxJQUFJLEdBQXFDLElBQUksS0FBSyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVqRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxtQkFBbUIsQ0FBQztRQUNoQyxDQUFDO1FBRUQsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFD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QVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDM0IsQ0FBQztJQUVELFlBQVksQ0FBQyxPQUF1QixFQUFFLElBQVksRUFBRSxVQUFtQixFQUFFLFNBQWtCO1FBQ3pGLE1BQU0sQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsU0FBUyxLQUFLLFNBQVMsR0FBRyxJQUFJLEdBQUcsU0FBUyxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzFCLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNaLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ2xELENBQUM7UUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0NBYUY7QUFFRCxlQUFlLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgQmxvY2tzLCBJbmxpbmVzLCBwb3B1bGF0ZUJ1aWx0aW5zIH0gZnJvbSAnLi9zeW50YXgvZnVuY3Rpb25zJztcblxuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi9lbnZpcm9ubWVudC9jb25zdGFudHMnO1xuXG5pbXBvcnQgKiBhcyBTaW1wbGUgZnJvbSAnLi9kb20vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBET01DaGFuZ2VzLCBET01UcmVlQ29uc3RydWN0aW9uIH0gZnJvbSAnLi9kb20vaGVscGVyJztcbmltcG9ydCB7IFJlZmVyZW5jZSwgT3BhcXVlSXRlcmFibGUgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgVU5ERUZJTkVEX1JFRkVSRU5DRSwgQ29uZGl0aW9uYWxSZWZlcmVuY2UgfSBmcm9tICcuL3JlZmVyZW5jZXMnO1xuaW1wb3J0IHtcbiAgZGVmYXVsdE1hbmFnZXJzLFxuICBBdHRyaWJ1dGVNYW5hZ2VyXG59IGZyb20gJy4vZG9tL2F0dHJpYnV0ZS1tYW5hZ2Vycyc7XG5cbmltcG9ydCB7XG4gIFBhcnRpYWxEZWZpbml0aW9uXG59IGZyb20gJy4vcGFydGlhbCc7XG5cbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50TWFuYWdlcixcbiAgQ29tcG9uZW50RGVmaW5pdGlvblxufSBmcm9tICcuL2NvbXBvbmVudC9pbnRlcmZhY2VzJztcblxuaW1wb3J0IHtcbiAgTW9kaWZpZXJNYW5hZ2VyXG59IGZyb20gJy4vbW9kaWZpZXIvaW50ZXJmYWNlcyc7XG5cbmltcG9ydCB7XG4gIERpY3QsXG4gIE9wdGlvbixcbiAgRGVzdHJveWFibGUsXG4gIE9wYXF1ZSxcbiAgSGFzR3VpZCxcbiAgZW5zdXJlR3VpZCxcbn0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5cbmltcG9ydCB7XG4gIFRlbXBsYXRlTWV0YVxufSBmcm9tICdAZ2xpbW1lci93aXJlLWZvcm1hdCc7XG5cbmltcG9ydCB7IEJsb2NrIH0gZnJvbSAnLi9zY2FubmVyJztcblxuaW1wb3J0IHsgUHVibGljVk0gfSBmcm9tICcuL3ZtL2FwcGVuZCc7XG5cbmltcG9ydCB7IElBcmd1bWVudHMgfSBmcm9tICcuL3ZtL2FyZ3VtZW50cyc7XG5cbmV4cG9ydCB0eXBlIFNjb3BlU2xvdCA9IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiB8IE9wdGlvbjxCbG9jaz47XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1pY1Njb3BlIHtcbiAgZ2V0KGtleTogc3RyaW5nKTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+O1xuICBzZXQoa2V5OiBzdHJpbmcsIHJlZmVyZW5jZTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+KTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+O1xuICBjaGlsZCgpOiBEeW5hbWljU2NvcGU7XG59XG5cbmV4cG9ydCBjbGFzcyBTY29wZSB7XG4gIHN0YXRpYyByb290KHNlbGY6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgc2l6ZSA9IDApIHtcbiAgICBsZXQgcmVmczogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+W10gPSBuZXcgQXJyYXkoc2l6ZSArIDEpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gc2l6ZTsgaSsrKSB7XG4gICAgICByZWZzW2ldID0gVU5ERUZJTkVEX1JFRkVSRU5DRTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFNjb3BlKHJlZnMpLmluaXQoeyBzZWxmIH0pO1xuICB9XG5cbiAgc3RhdGljIHNpemVkKHNpemUgPSAwKSB7XG4gICAgbGV0IHJlZnM6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPltdID0gbmV3IEFycmF5KHNpemUgKyAxKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IHNpemU7IGkrKykge1xuICAgICAgcmVmc1tpXSA9IFVOREVGSU5FRF9SRUZFUkVOQ0U7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBTY29wZShyZWZzKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIC8vIHRoZSAwdGggc2xvdCBpcyBgc2VsZmBcbiAgICBwcml2YXRlIHNsb3RzOiBTY29wZVNsb3RbXSxcbiAgICBwcml2YXRlIGNhbGxlclNjb3BlOiBPcHRpb248U2NvcGU+ID0gbnVsbCxcbiAgICAvLyBuYW1lZCBhcmd1bWVudHMgYW5kIGJsb2NrcyBwYXNzZWQgdG8gYSBsYXlvdXQgdGhhdCB1c2VzIGV2YWxcbiAgICBwcml2YXRlIGV2YWxTY29wZTogT3B0aW9uPERpY3Q8U2NvcGVTbG90Pj4gPSBudWxsLFxuICAgIC8vIGxvY2FscyBpbiBzY29wZSB3aGVuIHRoZSBwYXJ0aWFsIHdhcyBpbnZva2VkXG4gICAgcHJpdmF0ZSBwYXJ0aWFsTWFwOiBPcHRpb248RGljdDxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4+PiA9IG51bGwpIHtcbiAgfVxuXG4gIGluaXQoeyBzZWxmIH06IHsgc2VsZjogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+IH0pOiB0aGlzIHtcbiAgICB0aGlzLnNsb3RzWzBdID0gc2VsZjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGdldFNlbGYoKTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+IHtcbiAgICByZXR1cm4gdGhpcy5nZXQ8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+PigwKTtcbiAgfVxuXG4gIGdldFN5bWJvbChzeW1ib2w6IG51bWJlcik6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0PFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPj4oc3ltYm9sKTtcbiAgfVxuXG4gIGdldEJsb2NrKHN5bWJvbDogbnVtYmVyKTogQmxvY2sge1xuICAgIHJldHVybiB0aGlzLmdldDxCbG9jaz4oc3ltYm9sKTtcbiAgfVxuXG4gIGdldEV2YWxTY29wZSgpOiBPcHRpb248RGljdDxTY29wZVNsb3Q+PiB7XG4gICAgcmV0dXJuIHRoaXMuZXZhbFNjb3BlO1xuICB9XG5cbiAgZ2V0UGFydGlhbE1hcCgpOiBPcHRpb248RGljdDxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4+PiB7XG4gICAgcmV0dXJuIHRoaXMucGFydGlhbE1hcDtcbiAgfVxuXG4gIGJpbmQoc3ltYm9sOiBudW1iZXIsIHZhbHVlOiBTY29wZVNsb3QpIHtcbiAgICB0aGlzLnNldChzeW1ib2wsIHZhbHVlKTtcbiAgfVxuXG4gIGJpbmRTZWxmKHNlbGY6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPikge1xuICAgIHRoaXMuc2V0PFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPj4oMCwgc2VsZik7XG4gIH1cblxuICBiaW5kU3ltYm9sKHN5bWJvbDogbnVtYmVyLCB2YWx1ZTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+KSB7XG4gICAgdGhpcy5zZXQ8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+PihzeW1ib2wsIHZhbHVlKTtcbiAgfVxuXG4gIGJpbmRCbG9jayhzeW1ib2w6IG51bWJlciwgdmFsdWU6IE9wdGlvbjxCbG9jaz4pIHtcbiAgICB0aGlzLnNldDxPcHRpb248QmxvY2s+PihzeW1ib2wsIHZhbHVlKTtcbiAgfVxuXG4gIGJpbmRFdmFsU2NvcGUobWFwOiBPcHRpb248RGljdDxTY29wZVNsb3Q+Pikge1xuICAgIHRoaXMuZXZhbFNjb3BlID0gbWFwO1xuICB9XG5cbiAgYmluZFBhcnRpYWxNYXAobWFwOiBEaWN0PFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPj4pIHtcbiAgICB0aGlzLnBhcnRpYWxNYXAgPSBtYXA7XG4gIH1cblxuICBiaW5kQ2FsbGVyU2NvcGUoc2NvcGU6IE9wdGlvbjxTY29wZT4pIHtcbiAgICB0aGlzLmNhbGxlclNjb3BlID0gc2NvcGU7XG4gIH1cblxuICBnZXRDYWxsZXJTY29wZSgpOiBPcHRpb248U2NvcGU+IHtcbiAgICByZXR1cm4gdGhpcy5jYWxsZXJTY29wZTtcbiAgfVxuXG4gIGNoaWxkKCk6IFNjb3BlIHtcbiAgICByZXR1cm4gbmV3IFNjb3BlKHRoaXMuc2xvdHMuc2xpY2UoKSwgdGhpcy5jYWxsZXJTY29wZSwgdGhpcy5ldmFsU2NvcGUsIHRoaXMucGFydGlhbE1hcCk7XG4gIH1cblxuICBwcml2YXRlIGdldDxUPihpbmRleDogbnVtYmVyKTogVCB7XG4gICAgaWYgKGluZGV4ID49IHRoaXMuc2xvdHMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgQlVHOiBjYW5ub3QgZ2V0ICQke2luZGV4fSBmcm9tIHNjb3BlOyBsZW5ndGg9JHt0aGlzLnNsb3RzLmxlbmd0aH1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zbG90c1tpbmRleF0gYXMgYW55IGFzIFQ7XG4gIH1cblxuICBwcml2YXRlIHNldDxUPihpbmRleDogbnVtYmVyLCB2YWx1ZTogVCk6IHZvaWQge1xuICAgIGlmIChpbmRleCA+PSB0aGlzLnNsb3RzLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYEJVRzogY2Fubm90IGdldCAkJHtpbmRleH0gZnJvbSBzY29wZTsgbGVuZ3RoPSR7dGhpcy5zbG90cy5sZW5ndGh9YCk7XG4gICAgfVxuXG4gICAgdGhpcy5zbG90c1tpbmRleF0gPSB2YWx1ZSBhcyBhbnk7XG4gIH1cbn1cblxuY2xhc3MgVHJhbnNhY3Rpb24ge1xuICBwdWJsaWMgc2NoZWR1bGVkSW5zdGFsbE1hbmFnZXJzOiBNb2RpZmllck1hbmFnZXI8T3BhcXVlPltdID0gW107XG4gIHB1YmxpYyBzY2hlZHVsZWRJbnN0YWxsTW9kaWZpZXJzOiBPYmplY3RbXSA9IFtdO1xuICBwdWJsaWMgc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJNYW5hZ2VyczogTW9kaWZpZXJNYW5hZ2VyPE9wYXF1ZT5bXSA9IFtdO1xuICBwdWJsaWMgc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJzOiBPYmplY3RbXSA9IFtdO1xuICBwdWJsaWMgY3JlYXRlZENvbXBvbmVudHM6IENvbXBvbmVudFtdID0gW107XG4gIHB1YmxpYyBjcmVhdGVkTWFuYWdlcnM6IENvbXBvbmVudE1hbmFnZXI8Q29tcG9uZW50PltdID0gW107XG4gIHB1YmxpYyB1cGRhdGVkQ29tcG9uZW50czogQ29tcG9uZW50W10gPSBbXTtcbiAgcHVibGljIHVwZGF0ZWRNYW5hZ2VyczogQ29tcG9uZW50TWFuYWdlcjxDb21wb25lbnQ+W10gPSBbXTtcbiAgcHVibGljIGRlc3RydWN0b3JzOiBEZXN0cm95YWJsZVtdID0gW107XG5cbiAgZGlkQ3JlYXRlPFQ+KGNvbXBvbmVudDogVCwgbWFuYWdlcjogQ29tcG9uZW50TWFuYWdlcjxUPikge1xuICAgIHRoaXMuY3JlYXRlZENvbXBvbmVudHMucHVzaChjb21wb25lbnQpO1xuICAgIHRoaXMuY3JlYXRlZE1hbmFnZXJzLnB1c2gobWFuYWdlcik7XG4gIH1cblxuICBkaWRVcGRhdGU8VD4oY29tcG9uZW50OiBULCBtYW5hZ2VyOiBDb21wb25lbnRNYW5hZ2VyPFQ+KSB7XG4gICAgdGhpcy51cGRhdGVkQ29tcG9uZW50cy5wdXNoKGNvbXBvbmVudCk7XG4gICAgdGhpcy51cGRhdGVkTWFuYWdlcnMucHVzaChtYW5hZ2VyKTtcbiAgfVxuXG4gIHNjaGVkdWxlSW5zdGFsbE1vZGlmaWVyPFQ+KG1vZGlmaWVyOiBULCBtYW5hZ2VyOiBNb2RpZmllck1hbmFnZXI8VD4pIHtcbiAgICB0aGlzLnNjaGVkdWxlZEluc3RhbGxNYW5hZ2Vycy5wdXNoKG1hbmFnZXIpO1xuICAgIHRoaXMuc2NoZWR1bGVkSW5zdGFsbE1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcbiAgfVxuXG4gIHNjaGVkdWxlVXBkYXRlTW9kaWZpZXI8VD4obW9kaWZpZXI6IFQsIG1hbmFnZXI6IE1vZGlmaWVyTWFuYWdlcjxUPikge1xuICAgIHRoaXMuc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJNYW5hZ2Vycy5wdXNoKG1hbmFnZXIpO1xuICAgIHRoaXMuc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJzLnB1c2gobW9kaWZpZXIpO1xuICB9XG5cbiAgZGlkRGVzdHJveShkOiBEZXN0cm95YWJsZSkge1xuICAgIHRoaXMuZGVzdHJ1Y3RvcnMucHVzaChkKTtcbiAgfVxuXG4gIGNvbW1pdCgpIHtcbiAgICBsZXQgeyBjcmVhdGVkQ29tcG9uZW50cywgY3JlYXRlZE1hbmFnZXJzIH0gPSB0aGlzO1xuXG4gICAgZm9yIChsZXQgaT0wOyBpPGNyZWF0ZWRDb21wb25lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgY29tcG9uZW50ID0gY3JlYXRlZENvbXBvbmVudHNbaV07XG4gICAgICBsZXQgbWFuYWdlciA9IGNyZWF0ZWRNYW5hZ2Vyc1tpXTtcbiAgICAgIG1hbmFnZXIuZGlkQ3JlYXRlKGNvbXBvbmVudCk7XG4gICAgfVxuXG4gICAgbGV0IHsgdXBkYXRlZENvbXBvbmVudHMsIHVwZGF0ZWRNYW5hZ2VycyB9ID0gdGhpcztcblxuICAgIGZvciAobGV0IGk9MDsgaTx1cGRhdGVkQ29tcG9uZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IGNvbXBvbmVudCA9IHVwZGF0ZWRDb21wb25lbnRzW2ldO1xuICAgICAgbGV0IG1hbmFnZXIgPSB1cGRhdGVkTWFuYWdlcnNbaV07XG4gICAgICBtYW5hZ2VyLmRpZFVwZGF0ZShjb21wb25lbnQpO1xuICAgIH1cblxuICAgIGxldCB7IGRlc3RydWN0b3JzIH0gPSB0aGlzO1xuXG4gICAgZm9yIChsZXQgaT0wOyBpPGRlc3RydWN0b3JzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBkZXN0cnVjdG9yc1tpXS5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgbGV0IHsgc2NoZWR1bGVkSW5zdGFsbE1hbmFnZXJzLCBzY2hlZHVsZWRJbnN0YWxsTW9kaWZpZXJzIH0gPSB0aGlzO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzY2hlZHVsZWRJbnN0YWxsTWFuYWdlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBtYW5hZ2VyID0gc2NoZWR1bGVkSW5zdGFsbE1hbmFnZXJzW2ldO1xuICAgICAgbGV0IG1vZGlmaWVyID0gc2NoZWR1bGVkSW5zdGFsbE1vZGlmaWVyc1tpXTtcbiAgICAgIG1hbmFnZXIuaW5zdGFsbChtb2RpZmllcik7XG4gICAgfVxuXG4gICAgbGV0IHsgc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJNYW5hZ2Vycywgc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJzIH0gPSB0aGlzO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzY2hlZHVsZWRVcGRhdGVNb2RpZmllck1hbmFnZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgbWFuYWdlciA9IHNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVyTWFuYWdlcnNbaV07XG4gICAgICBsZXQgbW9kaWZpZXIgPSBzY2hlZHVsZWRVcGRhdGVNb2RpZmllcnNbaV07XG4gICAgICBtYW5hZ2VyLnVwZGF0ZShtb2RpZmllcik7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPcGNvZGUge1xuICBwdWJsaWMgb2Zmc2V0ID0gMDtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhcnJheTogVWludDMyQXJyYXkgfCBBcnJheTxudW1iZXI+KSB7fVxuXG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiB0aGlzLmFycmF5W3RoaXMub2Zmc2V0XTtcbiAgfVxuXG4gIGdldCBvcDEoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXJyYXlbdGhpcy5vZmZzZXQgKyAxXTtcbiAgfVxuXG4gIGdldCBvcDIoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXJyYXlbdGhpcy5vZmZzZXQgKyAyXTtcbiAgfVxuXG4gIGdldCBvcDMoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXJyYXlbdGhpcy5vZmZzZXQgKyAzXTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJvZ3JhbSB7XG4gIFtrZXk6IG51bWJlcl06IG5ldmVyO1xuXG4gIHByaXZhdGUgb3Bjb2RlczogbnVtYmVyW10gPSBbXTtcbiAgcHJpdmF0ZSBfb2Zmc2V0ID0gMDtcbiAgcHJpdmF0ZSBfb3Bjb2RlOiBPcGNvZGU7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5fb3Bjb2RlID0gbmV3IE9wY29kZSh0aGlzLm9wY29kZXMpO1xuICB9XG5cbiAgZ2V0IG5leHQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fb2Zmc2V0O1xuICB9XG5cbiAgZ2V0IGN1cnJlbnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fb2Zmc2V0IC0gNDtcbiAgfVxuXG4gIG9wY29kZShvZmZzZXQ6IG51bWJlcik6IE9wY29kZSB7XG4gICAgdGhpcy5fb3Bjb2RlLm9mZnNldCA9IG9mZnNldDtcbiAgICByZXR1cm4gdGhpcy5fb3Bjb2RlO1xuICB9XG5cbiAgc2V0KHBvczogbnVtYmVyLCB0eXBlOiBudW1iZXIsIG9wMSA9IDAsIG9wMiA9IDAsIG9wMyA9IDApIHtcbiAgICB0aGlzLm9wY29kZXNbcG9zXSA9IHR5cGU7XG4gICAgdGhpcy5vcGNvZGVzW3BvcyArIDFdID0gb3AxO1xuICAgIHRoaXMub3Bjb2Rlc1twb3MgKyAyXSA9IG9wMjtcbiAgICB0aGlzLm9wY29kZXNbcG9zICsgM10gPSBvcDM7XG4gIH1cblxuICBwdXNoKHR5cGU6IG51bWJlciwgb3AxID0gMCwgb3AyID0gMCwgb3AzID0gMCk6IG51bWJlciB7XG4gICAgbGV0IG9mZnNldCA9IHRoaXMuX29mZnNldDtcbiAgICB0aGlzLm9wY29kZXNbdGhpcy5fb2Zmc2V0KytdID0gdHlwZTtcbiAgICB0aGlzLm9wY29kZXNbdGhpcy5fb2Zmc2V0KytdID0gb3AxO1xuICAgIHRoaXMub3Bjb2Rlc1t0aGlzLl9vZmZzZXQrK10gPSBvcDI7XG4gICAgdGhpcy5vcGNvZGVzW3RoaXMuX29mZnNldCsrXSA9IG9wMztcbiAgICByZXR1cm4gb2Zmc2V0O1xuICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBFbnZpcm9ubWVudCB7XG4gIHByb3RlY3RlZCB1cGRhdGVPcGVyYXRpb25zOiBET01DaGFuZ2VzO1xuICBwcm90ZWN0ZWQgYXBwZW5kT3BlcmF0aW9uczogRE9NVHJlZUNvbnN0cnVjdGlvbjtcbiAgcHJpdmF0ZSBfbWFjcm9zOiBPcHRpb248eyBibG9ja3M6IEJsb2NrcywgaW5saW5lczogSW5saW5lcyB9PiA9IG51bGw7XG4gIHByaXZhdGUgX3RyYW5zYWN0aW9uOiBPcHRpb248VHJhbnNhY3Rpb24+ID0gbnVsbDtcbiAgcHVibGljIGNvbnN0YW50czogQ29uc3RhbnRzID0gbmV3IENvbnN0YW50cygpO1xuICBwdWJsaWMgcHJvZ3JhbSA9IG5ldyBQcm9ncmFtKCk7XG5cbiAgY29uc3RydWN0b3IoeyBhcHBlbmRPcGVyYXRpb25zLCB1cGRhdGVPcGVyYXRpb25zIH06IHsgYXBwZW5kT3BlcmF0aW9uczogRE9NVHJlZUNvbnN0cnVjdGlvbiwgdXBkYXRlT3BlcmF0aW9uczogRE9NQ2hhbmdlcyB9KSB7XG4gICAgdGhpcy5hcHBlbmRPcGVyYXRpb25zID0gYXBwZW5kT3BlcmF0aW9ucztcbiAgICB0aGlzLnVwZGF0ZU9wZXJhdGlvbnMgPSB1cGRhdGVPcGVyYXRpb25zO1xuICB9XG5cbiAgdG9Db25kaXRpb25hbFJlZmVyZW5jZShyZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+KTogUmVmZXJlbmNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gbmV3IENvbmRpdGlvbmFsUmVmZXJlbmNlKHJlZmVyZW5jZSk7XG4gIH1cblxuICBhYnN0cmFjdCBpdGVyYWJsZUZvcihyZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+LCBrZXk6IHN0cmluZyk6IE9wYXF1ZUl0ZXJhYmxlO1xuICBhYnN0cmFjdCBwcm90b2NvbEZvclVSTChzOiBzdHJpbmcpOiBzdHJpbmc7XG5cbiAgZ2V0QXBwZW5kT3BlcmF0aW9ucygpOiBET01UcmVlQ29uc3RydWN0aW9uIHsgcmV0dXJuIHRoaXMuYXBwZW5kT3BlcmF0aW9uczsgfVxuICBnZXRET00oKTogRE9NQ2hhbmdlcyB7IHJldHVybiB0aGlzLnVwZGF0ZU9wZXJhdGlvbnM7IH1cblxuICBnZXRJZGVudGl0eShvYmplY3Q6IEhhc0d1aWQpOiBzdHJpbmcge1xuICAgIHJldHVybiBlbnN1cmVHdWlkKG9iamVjdCkgKyAnJztcbiAgfVxuXG4gIGJlZ2luKCkge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKCk7XG4gIH1cblxuICBwcml2YXRlIGdldCB0cmFuc2FjdGlvbigpOiBUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgZGlkQ3JlYXRlPFQ+KGNvbXBvbmVudDogVCwgbWFuYWdlcjogQ29tcG9uZW50TWFuYWdlcjxUPikge1xuICAgIHRoaXMudHJhbnNhY3Rpb24uZGlkQ3JlYXRlKGNvbXBvbmVudCwgbWFuYWdlcik7XG4gIH1cblxuICBkaWRVcGRhdGU8VD4oY29tcG9uZW50OiBULCBtYW5hZ2VyOiBDb21wb25lbnRNYW5hZ2VyPFQ+KSB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5kaWRVcGRhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcbiAgfVxuXG4gIHNjaGVkdWxlSW5zdGFsbE1vZGlmaWVyPFQ+KG1vZGlmaWVyOiBULCBtYW5hZ2VyOiBNb2RpZmllck1hbmFnZXI8VD4pIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNjaGVkdWxlSW5zdGFsbE1vZGlmaWVyKG1vZGlmaWVyLCBtYW5hZ2VyKTtcbiAgfVxuXG4gIHNjaGVkdWxlVXBkYXRlTW9kaWZpZXI8VD4obW9kaWZpZXI6IFQsIG1hbmFnZXI6IE1vZGlmaWVyTWFuYWdlcjxUPikge1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2NoZWR1bGVVcGRhdGVNb2RpZmllcihtb2RpZmllciwgbWFuYWdlcik7XG4gIH1cblxuICBkaWREZXN0cm95KGQ6IERlc3Ryb3lhYmxlKSB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5kaWREZXN0cm95KGQpO1xuICB9XG5cbiAgY29tbWl0KCkge1xuICAgIHRoaXMudHJhbnNhY3Rpb24uY29tbWl0KCk7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSBudWxsO1xuICB9XG5cbiAgYXR0cmlidXRlRm9yKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBhdHRyOiBzdHJpbmcsIGlzVHJ1c3Rpbmc6IGJvb2xlYW4sIG5hbWVzcGFjZT86IHN0cmluZyk6IEF0dHJpYnV0ZU1hbmFnZXIge1xuICAgIHJldHVybiBkZWZhdWx0TWFuYWdlcnMoZWxlbWVudCwgYXR0ciwgaXNUcnVzdGluZywgbmFtZXNwYWNlID09PSB1bmRlZmluZWQgPyBudWxsIDogbmFtZXNwYWNlKTtcbiAgfVxuXG4gIG1hY3JvcygpOiB7IGJsb2NrczogQmxvY2tzLCBpbmxpbmVzOiBJbmxpbmVzIH0ge1xuICAgIGxldCBtYWNyb3MgPSB0aGlzLl9tYWNyb3M7XG4gICAgaWYgKCFtYWNyb3MpIHtcbiAgICAgIHRoaXMuX21hY3JvcyA9IG1hY3JvcyA9IHRoaXMucG9wdWxhdGVCdWlsdGlucygpO1xuICAgIH1cblxuICAgIHJldHVybiBtYWNyb3M7XG4gIH1cblxuICBwb3B1bGF0ZUJ1aWx0aW5zKCk6IHsgYmxvY2tzOiBCbG9ja3MsIGlubGluZXM6IElubGluZXMgfSB7XG4gICAgcmV0dXJuIHBvcHVsYXRlQnVpbHRpbnMoKTtcbiAgfVxuXG4gIGFic3RyYWN0IGhhc0hlbHBlcihoZWxwZXJOYW1lOiBzdHJpbmcsIG1ldGE6IFRlbXBsYXRlTWV0YSk6IGJvb2xlYW47XG4gIGFic3RyYWN0IGxvb2t1cEhlbHBlcihoZWxwZXJOYW1lOiBzdHJpbmcsIG1ldGE6IFRlbXBsYXRlTWV0YSk6IEhlbHBlcjtcblxuICBhYnN0cmFjdCBoYXNNb2RpZmllcihtb2RpZmllck5hbWU6IHN0cmluZywgbWV0YTogVGVtcGxhdGVNZXRhKTogYm9vbGVhbjtcbiAgYWJzdHJhY3QgbG9va3VwTW9kaWZpZXIobW9kaWZpZXJOYW1lOiBzdHJpbmcsIG1ldGE6IFRlbXBsYXRlTWV0YSk6IE1vZGlmaWVyTWFuYWdlcjxPcGFxdWU+O1xuXG4gIGFic3RyYWN0IGhhc0NvbXBvbmVudERlZmluaXRpb24odGFnTmFtZTogc3RyaW5nLCBtZXRhOiBUZW1wbGF0ZU1ldGEpOiBib29sZWFuO1xuICBhYnN0cmFjdCBnZXRDb21wb25lbnREZWZpbml0aW9uKHRhZ05hbWU6IHN0cmluZywgbWV0YTogVGVtcGxhdGVNZXRhKTogQ29tcG9uZW50RGVmaW5pdGlvbjxPcGFxdWU+O1xuXG4gIGFic3RyYWN0IGhhc1BhcnRpYWwocGFydGlhbE5hbWU6IHN0cmluZywgbWV0YTogVGVtcGxhdGVNZXRhKTogYm9vbGVhbjtcbiAgYWJzdHJhY3QgbG9va3VwUGFydGlhbChQYXJ0aWFsTmFtZTogc3RyaW5nLCBtZXRhOiBUZW1wbGF0ZU1ldGEpOiBQYXJ0aWFsRGVmaW5pdGlvbjxUZW1wbGF0ZU1ldGE+O1xufVxuXG5leHBvcnQgZGVmYXVsdCBFbnZpcm9ubWVudDtcblxuZXhwb3J0IGludGVyZmFjZSBIZWxwZXIge1xuICAodm06IFB1YmxpY1ZNLCBhcmdzOiBJQXJndW1lbnRzKTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+O1xufVxuIl19

@@ -5,3 +5,2 @@ import { CompiledDynamicTemplate, CompiledStaticTemplate } from './compiled/blocks';

import * as WireFormat from '@glimmer/wire-format';
import { debugSlice } from './opcodes';
import { STATEMENTS } from './syntax/functions';

@@ -24,3 +23,2 @@ export function compileStatement(statement, builder) {

let end = builder.finalize();
debugSlice(env, start, end);
compiledStatic = this.compiledStatic = new CompiledStaticTemplate(start, end);

@@ -38,5 +36,2 @@ }

}
toJSON() {
return { GlimmerDebug: '<template>' };
}
}

@@ -171,2 +166,2 @@ function compileStatements(statements, meta, env) {

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNjYW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUdyQyxPQUFPLEVBQVUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sS0FBSyxVQUFVLE1BQU0sc0JBQXNCLENBQUM7QUFFbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUd2QyxPQUFPLEVBQ0wsVUFBVSxFQUNYLE1BQU0sb0JBQW9CLENBQUM7QUFJNUIsTUFBTSwyQkFBMkIsU0FBK0IsRUFBRSxPQUFzQjtJQUN0RixVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBT0QsTUFBTTtJQUlKLFlBQW1CLFVBQWtDLEVBQVMsV0FBYztRQUF6RCxlQUFVLEdBQVYsVUFBVSxDQUF3QjtRQUFTLGdCQUFXLEdBQVgsV0FBVyxDQUFHO1FBSHBFLG1CQUFjLEdBQW1DLElBQUksQ0FBQztRQUN0RCxvQkFBZSxHQUF1QyxJQUFJLENBQUM7SUFFWSxDQUFDO0lBRWhGLGFBQWEsQ0FBQyxHQUFnQjtRQUM1QixJQUFJLEVBQUUsY0FBYyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBRTlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztZQUNwQixJQUFJLE9BQU8sR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBRTdFLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDMUIsSUFBSSxHQUFHLEdBQUcsT0FBTyxDQUFDLFFBQVEsRUFBRSxD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QUU1SSxDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QyxNQUFNLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDL0csQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcGlsZWREeW5hbWljVGVtcGxhdGUsIENvbXBpbGVkU3RhdGljVGVtcGxhdGUgfSBmcm9tICcuL2NvbXBpbGVkL2Jsb2Nrcyc7XG5pbXBvcnQgeyBidWlsZGVyIH0gZnJvbSAnLi9jb21waWxlcic7XG5pbXBvcnQgT3Bjb2RlQnVpbGRlciBmcm9tICcuL2NvbXBpbGVkL29wY29kZXMvYnVpbGRlcic7XG5pbXBvcnQgRW52aXJvbm1lbnQgZnJvbSAnLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBPcHRpb24sIEVNUFRZX0FSUkFZIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgKiBhcyBXaXJlRm9ybWF0IGZyb20gJ0BnbGltbWVyL3dpcmUtZm9ybWF0JztcbmltcG9ydCB7IE9wYXF1ZSwgU3ltYm9sVGFibGUsIFByb2dyYW1TeW1ib2xUYWJsZSwgQmxvY2tTeW1ib2xUYWJsZSB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZGVidWdTbGljZSB9IGZyb20gJy4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBDb21waWxhdGlvbk1ldGEgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcblxuaW1wb3J0IHtcbiAgU1RBVEVNRU5UU1xufSBmcm9tICcuL3N5bnRheC9mdW5jdGlvbnMnO1xuXG5leHBvcnQgdHlwZSBEZXNlcmlhbGl6ZWRTdGF0ZW1lbnQgPSBXaXJlRm9ybWF0LlN0YXRlbWVudCB8IFdpcmVGb3JtYXQuU3RhdGVtZW50cy5BdHRyaWJ1dGUgfCBXaXJlRm9ybWF0LlN0YXRlbWVudHMuQXJndW1lbnQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21waWxlU3RhdGVtZW50KHN0YXRlbWVudDogV2lyZUZvcm1hdC5TdGF0ZW1lbnQsIGJ1aWxkZXI6IE9wY29kZUJ1aWxkZXIpIHtcbiAgU1RBVEVNRU5UUy5jb21waWxlKHN0YXRlbWVudCwgYnVpbGRlcik7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2Nhbm5lZFRlbXBsYXRlPFMgZXh0ZW5kcyBTeW1ib2xUYWJsZT4ge1xuICBjb21waWxlU3RhdGljKGVudjogRW52aXJvbm1lbnQpOiBDb21waWxlZFN0YXRpY1RlbXBsYXRlO1xuICBjb21waWxlRHluYW1pYyhlbnY6IEVudmlyb25tZW50KTogQ29tcGlsZWREeW5hbWljVGVtcGxhdGU8Uz47XG59XG5cbmV4cG9ydCBjbGFzcyBDb21waWxhYmxlVGVtcGxhdGU8UyBleHRlbmRzIFN5bWJvbFRhYmxlPiBpbXBsZW1lbnRzIFNjYW5uZWRUZW1wbGF0ZTxTPiB7XG4gIHByaXZhdGUgY29tcGlsZWRTdGF0aWM6IE9wdGlvbjxDb21waWxlZFN0YXRpY1RlbXBsYXRlPiA9IG51bGw7XG4gIHByaXZhdGUgY29tcGlsZWREeW5hbWljOiBPcHRpb248Q29tcGlsZWREeW5hbWljVGVtcGxhdGU8Uz4+ID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgc3RhdGVtZW50czogV2lyZUZvcm1hdC5TdGF0ZW1lbnRbXSwgcHVibGljIHN5bWJvbFRhYmxlOiBTKSB7fVxuXG4gIGNvbXBpbGVTdGF0aWMoZW52OiBFbnZpcm9ubWVudCk6IENvbXBpbGVkU3RhdGljVGVtcGxhdGUge1xuICAgIGxldCB7IGNvbXBpbGVkU3RhdGljIH0gPSB0aGlzO1xuXG4gICAgaWYgKCFjb21waWxlZFN0YXRpYykge1xuICAgICAgbGV0IGJ1aWxkZXIgPSBjb21waWxlU3RhdGVtZW50cyh0aGlzLnN0YXRlbWVudHMsIHRoaXMuc3ltYm9sVGFibGUubWV0YSwgZW52KTtcblxuICAgICAgbGV0IHN0YXJ0ID0gYnVpbGRlci5zdGFydDtcbiAgICAgIGxldCBlbmQgPSBidWlsZGVyLmZpbmFsaXplKCk7XG5cbiAgICAgIGRlYnVnU2xpY2UoZW52LCBzdGFydCwgZW5kKTtcblxuICAgICAgY29tcGlsZWRTdGF0aWMgPSB0aGlzLmNvbXBpbGVkU3RhdGljID0gbmV3IENvbXBpbGVkU3RhdGljVGVtcGxhdGUoc3RhcnQsIGVuZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBpbGVkU3RhdGljO1xuICB9XG5cbiAgY29tcGlsZUR5bmFtaWMoZW52OiBFbnZpcm9ubWVudCk6IENvbXBpbGVkRHluYW1pY1RlbXBsYXRlPFM+IHtcbiAgICBsZXQgeyBjb21waWxlZER5bmFtaWMgfSA9IHRoaXM7XG5cbiAgICBpZiAoIWNvbXBpbGVkRHluYW1pYykge1xuICAgICAgbGV0IHN0YXRpY0Jsb2NrID0gdGhpcy5jb21waWxlU3RhdGljKGVudik7XG4gICAgICBjb21waWxlZER5bmFtaWMgPSBuZXcgQ29tcGlsZWREeW5hbWljVGVtcGxhdGUoc3RhdGljQmxvY2suc3RhcnQsIHN0YXRpY0Jsb2NrLmVuZCwgdGhpcy5zeW1ib2xUYWJsZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBpbGVkRHluYW1pYztcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICByZXR1cm4geyBHbGltbWVyRGVidWc6ICc8dGVtcGxhdGU+JyB9O1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIFRlbXBsYXRlID0gQ29tcGlsYWJsZVRlbXBsYXRlPFN5bWJvbFRhYmxlPjtcbmV4cG9ydCB0eXBlIFByb2dyYW0gPSBDb21waWxhYmxlVGVtcGxhdGU8UHJvZ3JhbVN5bWJvbFRhYmxlPjtcbmV4cG9ydCB0eXBlIEJsb2NrID0gQ29tcGlsYWJsZVRlbXBsYXRlPEJsb2NrU3ltYm9sVGFibGU+O1xuXG5leHBvcnQgdHlwZSBTY2FubmVkUHJvZ3JhbSA9IFNjYW5uZWRUZW1wbGF0ZTxQcm9ncmFtU3ltYm9sVGFibGU+O1xuZXhwb3J0IHR5cGUgU2Nhbm5lZEJsb2NrID0gU2Nhbm5lZFRlbXBsYXRlPEJsb2NrU3ltYm9sVGFibGU+O1xuXG5mdW5jdGlvbiBjb21waWxlU3RhdGVtZW50cyhzdGF0ZW1lbnRzOiBXaXJlRm9ybWF0LlN0YXRlbWVudFtdLCBtZXRhOiBDb21waWxhdGlvbk1ldGEsIGVudjogRW52aXJvbm1lbnQpIHtcbiAgbGV0IGIgPSBidWlsZGVyKGVudiwgbWV0YSk7XG5cbiAgZm9yIChsZXQgc3RhdGVtZW50IG9mIHN0YXRlbWVudHMpIHtcbiAgICBjb21waWxlU3RhdGVtZW50KHN0YXRlbWVudCwgYik7XG4gIH1cblxuICByZXR1cm4gYjtcbn1cblxuZXhwb3J0IGNvbnN0IEFUVFJTX0JMT0NLID0gJyZhdHRycyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBsYXlvdXQocHJlbHVkZTogV2lyZUZvcm1hdC5TdGF0ZW1lbnRbXSwgaGVhZDogV2lyZUZvcm1hdC5TdGF0ZW1lbnRbXSwgYm9keTogV2lyZUZvcm1hdC5TdGF0ZW1lbnRbXSwgc3ltYm9sVGFibGU6IFByb2dyYW1TeW1ib2xUYWJsZSkge1xuICBsZXQgWywgdGFnXSA9IHByZWx1ZGUucG9wKCkgYXMgV2lyZUZvcm1hdC5TdGF0ZW1lbnRzLk9wZW5FbGVtZW50O1xuICBwcmVsdWRlLnB1c2goW09wcy5DbGllbnRTaWRlU3RhdGVtZW50LCBDbGllbnRTaWRlLk9wcy5PcGVuQ29tcG9uZW50RWxlbWVudCwgdGFnXSk7XG4gIHByZWx1ZGUucHVzaChbT3BzLkNsaWVudFNpZGVTdGF0ZW1lbnQsIENsaWVudFNpZGUuT3BzLkRpZENyZWF0ZUVsZW1lbnRdKTtcblxuICBsZXQgYXR0cnNTeW1ib2wgPSBzeW1ib2xUYWJsZS5zeW1ib2xzLmxlbmd0aCArIDE7XG4gIHN5bWJvbFRhYmxlLnN5bWJvbHMucHVzaChBVFRSU19CTE9DSyk7XG5cbiAgbGV0IHN0YXRlbWVudHMgPSBwcmVsdWRlXG4gICAgLmNvbmNhdChbW09wcy5ZaWVsZCwgYXR0cnNTeW1ib2wsIEVNUFRZX0FSUkFZXV0pXG4gICAgLmNvbmNhdChoZWFkKVxuICAgIC5jb25jYXQoYm9keSlcbiAgICAuY29uY2F0KFtbT3BzLkNsaWVudFNpZGVTdGF0ZW1lbnQsIENsaWVudFNpZGUuT3BzLkRpZFJlbmRlckxheW91dF1dKTtcblxuICByZXR1cm4gbmV3IENvbXBpbGFibGVUZW1wbGF0ZShzdGF0ZW1lbnRzLCBzeW1ib2xUYWJsZSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNjYW5uZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJsb2NrOiBXaXJlRm9ybWF0LlNlcmlhbGl6ZWRUZW1wbGF0ZUJsb2NrLCBwcml2YXRlIGVudjogRW52aXJvbm1lbnQpIHtcbiAgfVxuXG4gIHNjYW5FbnRyeVBvaW50KG1ldGE6IENvbXBpbGF0aW9uTWV0YSk6IFByb2dyYW0ge1xuICAgIGxldCB7IGJsb2NrLCBlbnYgfSA9IHRoaXM7XG5cbiAgICBsZXQgc3RhdGVtZW50cztcbiAgICBpZiAoYmxvY2sucHJlbHVkZSAmJiBibG9jay5oZWFkKSB7XG4gICAgICBzdGF0ZW1lbnRzID0gYmxvY2sucHJlbHVkZS5jb25jYXQoYmxvY2suaGVhZCkuY29uY2F0KGJsb2NrLnN0YXRlbWVudHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZW1lbnRzID0gYmxvY2suc3RhdGVtZW50cztcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFJhd1Byb2dyYW0oZW52LCBtZXRhLCBzdGF0ZW1lbnRzLCBibG9jay5zeW1ib2xzLCBibG9jay5oYXNFdmFsKS5zY2FuKCk7XG4gIH1cblxuICBzY2FuQmxvY2sobWV0YTogQ29tcGlsYXRpb25NZXRhKTogQmxvY2sge1xuICAgIGxldCB7IGJsb2NrLCBlbnYgfSA9IHRoaXM7XG5cbiAgICBsZXQgc3RhdGVtZW50cztcbiAgICBpZiAoYmxvY2sucHJlbHVkZSAmJiBibG9jay5oZWFkKSB7XG4gICAgICBzdGF0ZW1lbnRzID0gYmxvY2sucHJlbHVkZS5jb25jYXQoYmxvY2suaGVhZCkuY29uY2F0KGJsb2NrLnN0YXRlbWVudHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZW1lbnRzID0gYmxvY2suc3RhdGVtZW50cztcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFJhd0lubGluZUJsb2NrKGVudiwgbWV0YSwgc3RhdGVtZW50cywgRU1QVFlfQVJSQVkpLnNjYW4oKTtcbiAgfVxuXG4gIHNjYW5MYXlvdXQobWV0YTogQ29tcGlsYXRpb25NZXRhLCBhdHRyczogV2lyZUZvcm1hdC5TdGF0ZW1lbnRzLkF0dHJpYnV0ZVtdKTogUHJvZ3JhbSB7XG4gICAgbGV0IHsgYmxvY2sgfSA9IHRoaXM7XG4gICAgbGV0IHsgc3ltYm9scywgaGFzRXZhbCB9ID0gYmxvY2s7XG5cbiAgICBpZiAoIWJsb2NrLnByZWx1ZGUgfHwgIWJsb2NrLmhlYWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQSBsYXlvdXQgbXVzdCBoYXZlIGEgdG9wLWxldmVsIGVsZW1lbnRgKTtcbiAgICB9XG5cbiAgICBsZXQgc3ltYm9sVGFibGUgPSB7IG1ldGEsIGhhc0V2YWwsIHN5bWJvbHMgfTtcbiAgICBsZXQgeyBzdGF0ZW1lbnRzOiBwcmVsdWRlIH0gPSBzY2FuQmxvY2soeyBzdGF0ZW1lbnRzOiBibG9jay5wcmVsdWRlLCBwYXJhbWV0ZXJzOiBFTVBUWV9BUlJBWSB9LCBtZXRhLCB0aGlzLmVudik7XG4gICAgbGV0IHsgc3RhdGVtZW50czogaGVhZCB9ID0gc2NhbkJsb2NrKHsgc3RhdGVtZW50czogWy4uLmF0dHJzLCAuLi5ibG9jay5oZWFkXSwgcGFyYW1ldGVyczogRU1QVFlfQVJSQVkgfSwgbWV0YSwgdGhpcy5lbnYpO1xuICAgIGxldCB7IHN0YXRlbWVudHM6IGJvZHkgfSA9IHNjYW5CbG9jayh7IHN0YXRlbWVudHM6IGJsb2NrLnN0YXRlbWVudHMsIHBhcmFtZXRlcnM6IEVNUFRZX0FSUkFZIH0sIG1ldGEsIHRoaXMuZW52KTtcblxuICAgIHJldHVybiBsYXlvdXQocHJlbHVkZSwgaGVhZCwgYm9keSwgc3ltYm9sVGFibGUpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzY2FuQmxvY2soYmxvY2s6IFdpcmVGb3JtYXQuU2VyaWFsaXplZElubGluZUJsb2NrLCBtZXRhOiBDb21waWxhdGlvbk1ldGEsIGVudjogRW52aXJvbm1lbnQpOiBCbG9jayB7XG4gIHJldHVybiBuZXcgUmF3SW5saW5lQmxvY2soZW52LCBtZXRhLCBibG9jay5zdGF0ZW1lbnRzLCBFTVBUWV9BUlJBWSkuc2NhbigpO1xufVxuXG5pbXBvcnQgeyBQdWJsaWNWTSB9IGZyb20gJy4vdm0nO1xuaW1wb3J0IHsgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5cbmV4cG9ydCBuYW1lc3BhY2UgQ2xpZW50U2lkZSB7XG4gIGV4cG9ydCBlbnVtIE9wcyB7XG4gICAgT3BlbkNvbXBvbmVudEVsZW1lbnQsXG4gICAgRGlkQ3JlYXRlRWxlbWVudCxcbiAgICBEaWRSZW5kZXJMYXlvdXQsXG4gICAgT3B0aW1pemVkQXBwZW5kLFxuICAgIFVub3B0aW1pemVkQXBwZW5kLFxuICAgIFN0YXRpY1BhcnRpYWwsXG4gICAgRHluYW1pY1BhcnRpYWwsXG4gICAgTmVzdGVkQmxvY2ssXG4gICAgU2Nhbm5lZEJsb2NrLFxuXG4gICAgRnVuY3Rpb25FeHByZXNzaW9uXG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gaXM8VCBleHRlbmRzIGFueVtdPih2YXJpYW50OiBPcHMpOiAodmFsdWU6IGFueVtdKSA9PiB2YWx1ZSBpcyBUIHtcbiAgICByZXR1cm4gZnVuY3Rpb24odmFsdWU6IGFueVtdKTogdmFsdWUgaXMgVCB7XG4gICAgICByZXR1cm4gdmFsdWVbMF0gPT09IFdpcmVGb3JtYXQuT3BzLkNsaWVudFNpZGVFeHByZXNzaW9uIHx8IHZhbHVlWzBdID09PSBXaXJlRm9ybWF0Lk9wcy5DbGllbnRTaWRlU3RhdGVtZW50ICYmIHZhbHVlWzFdID09PSB2YXJpYW50O1xuICAgIH07XG4gIH1cblxuICBpbXBvcnQgQ2xpZW50U2lkZVN0YXRlbWVudCA9IFdpcmVGb3JtYXQuT3BzLkNsaWVudFNpZGVTdGF0ZW1lbnQ7XG4gIGltcG9ydCBDbGllbnRTaWRlRXhwcmVzc2lvbiA9IFdpcmVGb3JtYXQuT3BzLkNsaWVudFNpZGVFeHByZXNzaW9uO1xuXG4gIGV4cG9ydCB0eXBlIE9wZW5Db21wb25lbnRFbGVtZW50ICA9IFtDbGllbnRTaWRlU3RhdGVtZW50LCBPcHMuT3BlbkNvbXBvbmVudEVsZW1lbnQsIHN0cmluZ107XG4gIGV4cG9ydCB0eXBlIERpZENyZWF0ZUVsZW1lbnQgICAgICA9IFtDbGllbnRTaWRlU3RhdGVtZW50LCBPcHMuRGlkQ3JlYXRlRWxlbWVudF07XG4gIGV4cG9ydCB0eXBlIERpZFJlbmRlckxheW91dCAgICAgICA9IFtDbGllbnRTaWRlU3RhdGVtZW50LCBPcHMuRGlkUmVuZGVyTGF5b3V0XTtcbiAgZXhwb3J0IHR5cGUgT3B0aW1pemVkQXBwZW5kICAgICAgID0gW0NsaWVudFNpZGVTdGF0ZW1lbnQsIE9wcy5PcHRpbWl6ZWRBcHBlbmQsIFdpcmVGb3JtYXQuRXhwcmVzc2lvbiwgYm9vbGVhbl07XG4gIGV4cG9ydCB0eXBlIFVub3B0aW1pemVkQXBwZW5kICAgICA9IFtDbGllbnRTaWRlU3RhdGVtZW50LCBPcHMuVW5vcHRpbWl6ZWRBcHBlbmQsIFdpcmVGb3JtYXQuRXhwcmVzc2lvbiwgYm9vbGVhbl07XG4gIGV4cG9ydCB0eXBlIFN0YXRpY1BhcnRpYWwgICAgICAgICA9IFtDbGllbnRTaWRlU3RhdGVtZW50LCBPcHMuU3RhdGljUGFydGlhbCwgc3RyaW5nLCBXaXJlRm9ybWF0LkNvcmUuRXZhbEluZm9dO1xuICBleHBvcnQgdHlwZSBEeW5hbWljUGFydGlhbCAgICAgICAgPSBbQ2xpZW50U2lkZVN0YXRlbWVudCwgT3BzLkR5bmFtaWNQYXJ0aWFsLCBXaXJlRm9ybWF0LkV4cHJlc3Npb24sIFdpcmVGb3JtYXQuQ29yZS5FdmFsSW5mb107XG5cbiAgZXhwb3J0IHR5cGUgRnVuY3Rpb25FeHByZXNzaW9uICAgID0gW0NsaWVudFNpZGVFeHByZXNzaW9uLCBPcHMuRnVuY3Rpb25FeHByZXNzaW9uLCBGdW5jdGlvbkV4cHJlc3Npb25DYWxsYmFjazxPcGFxdWU+XTtcblxuICBleHBvcnQgdHlwZSBGdW5jdGlvbkV4cHJlc3Npb25DYWxsYmFjazxUPiA9IChWTTogUHVibGljVk0sIHN5bWJvbFRhYmxlOiBTeW1ib2xUYWJsZSkgPT4gVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxUPjtcblxuICBleHBvcnQgdHlwZSBDbGllbnRTaWRlU3RhdGVtZW50ID1cbiAgICB8IE9wZW5Db21wb25lbnRFbGVtZW50XG4gICAgfCBEaWRDcmVhdGVFbGVtZW50XG4gICAgfCBEaWRSZW5kZXJMYXlvdXRcbiAgICB8IE9wdGltaXplZEFwcGVuZFxuICAgIHwgVW5vcHRpbWl6ZWRBcHBlbmRcbiAgICB8IFN0YXRpY1BhcnRpYWxcbiAgICB8IER5bmFtaWNQYXJ0aWFsXG4gICAgO1xuXG4gIGV4cG9ydCB0eXBlIENsaWVudFNpZGVFeHByZXNzaW9uID1cbiAgICB8IEZ1bmN0aW9uRXhwcmVzc2lvblxuICAgIDtcbn1cblxuY29uc3QgeyBPcHMgfSA9IFdpcmVGb3JtYXQ7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBSYXdCbG9jazxTIGV4dGVuZHMgU3ltYm9sVGFibGU+IHtcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGVudjogRW52aXJvbm1lbnQsIHByb3RlY3RlZCBtZXRhOiBDb21waWxhdGlvbk1ldGEsIHByaXZhdGUgc3RhdGVtZW50czogV2lyZUZvcm1hdC5TdGF0ZW1lbnRbXSkge31cblxuICBzY2FuU3RhdGVtZW50cygpOiBXaXJlRm9ybWF0LlN0YXRlbWVudFtdIHtcbiAgICBsZXQgYnVmZmVyOiBXaXJlRm9ybWF0LlN0YXRlbWVudFtdID0gW107XG4gICAgbGV0IHN0YXRlbWVudHMgPSB0aGlzLnN0YXRlbWVudHM7XG4gICAgZm9yIChsZXQgc3RhdGVtZW50IG9mIHN0YXRlbWVudHMpIHtcbiAgICAgIGJ1ZmZlci5wdXNoKHN0YXRlbWVudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJ1ZmZlcjtcbiAgfVxuXG4gIGNoaWxkKGJsb2NrOiBPcHRpb248V2lyZUZvcm1hdC5TZXJpYWxpemVkSW5saW5lQmxvY2s+KTogT3B0aW9uPFJhd0lubGluZUJsb2NrPiB7XG4gICAgaWYgKCFibG9jaykgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIG5ldyBSYXdJbmxpbmVCbG9jayh0aGlzLmVudiwgdGhpcy5tZXRhLCBibG9jay5zdGF0ZW1lbnRzLCBibG9jay5wYXJhbWV0ZXJzKTtcbiAgfVxuXG4gIGFic3RyYWN0IHNjYW4oKTogQ29tcGlsYWJsZVRlbXBsYXRlPFM+O1xufVxuXG5leHBvcnQgY2xhc3MgUmF3SW5saW5lQmxvY2sgZXh0ZW5kcyBSYXdCbG9jazxCbG9ja1N5bWJvbFRhYmxlPiB7XG4gIGNvbnN0cnVjdG9yKGVudjogRW52aXJvbm1lbnQsIG1ldGE6IENvbXBpbGF0aW9uTWV0YSwgc3RhdGVtZW50czogV2lyZUZvcm1hdC5TdGF0ZW1lbnRbXSwgcHJpdmF0ZSBwYXJhbWV0ZXJzOiBudW1iZXJbXSkge1xuICAgIHN1cGVyKGVudiwgbWV0YSwgc3RhdGVtZW50cyk7XG4gIH1cblxuICBzY2FuKCk6IEJsb2NrIHtcbiAgICBsZXQgc3RhdGVtZW50cyA9IHRoaXMuc2NhblN0YXRlbWVudHMoKTtcbiAgICByZXR1cm4gbmV3IENvbXBpbGFibGVUZW1wbGF0ZShzdGF0ZW1lbnRzLCB7IHBhcmFtZXRlcnM6IHRoaXMucGFyYW1ldGVycywgbWV0YTogdGhpcy5tZXRhIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSYXdQcm9ncmFtIGV4dGVuZHMgUmF3QmxvY2s8UHJvZ3JhbVN5bWJvbFRhYmxlPiB7XG4gIGNvbnN0cnVjdG9yKGVudjogRW52aXJvbm1lbnQsIG1ldGE6IENvbXBpbGF0aW9uTWV0YSwgc3RhdGVtZW50czogV2lyZUZvcm1hdC5TdGF0ZW1lbnRbXSwgcHJpdmF0ZSBzeW1ib2xzOiBzdHJpbmdbXSwgcHJpdmF0ZSBoYXNFdmFsOiBib29sZWFuKSB7XG4gICAgc3VwZXIoZW52LCBtZXRhLCBzdGF0ZW1lbnRzKTtcbiAgfVxuXG4gIHNjYW4oKTogUHJvZ3JhbSB7XG4gICAgbGV0IHN0YXRlbWVudHMgPSB0aGlzLnNjYW5TdGF0ZW1lbnRzKCk7XG4gICAgcmV0dXJuIG5ldyBDb21waWxhYmxlVGVtcGxhdGUoc3RhdGVtZW50cywgeyBzeW1ib2xzOiB0aGlzLnN5bWJvbHMsIGhhc0V2YWw6IHRoaXMuaGFzRXZhbCwgbWV0YTogdGhpcy5tZXRhIH0pO1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNjYW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUdyQyxPQUFPLEVBQVUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sS0FBSyxVQUFVLE1BQU0sc0JBQXNCLENBQUM7QUFJbkQsT0FBTyxFQUNMLFVBQVUsRUFDWCxNQUFNLG9CQUFvQixDQUFDO0FBSTVCLE1BQU0sMkJBQTJCLFNBQStCLEVBQUUsT0FBc0I7SUFDdEYsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDekMsQ0FBQztBQU9ELE1BQU07SUFJSixZQUFtQixVQUFrQyxFQUFTLFdBQWM7UUFBekQsZUFBVSxHQUFWLFVBQVUsQ0FBd0I7UUFBUyxnQkFBVyxHQUFYLFdBQVcsQ0FBRztRQUhwRSxtQkFBYyxHQUFtQyxJQUFJLENBQUM7UUFDdEQsb0JBQWUsR0FBdUMsSUFBSSxDQUFDO0lBRVksQ0FBQztJQUVoRixhQUFhLENBQUMsR0FBZ0I7UUFDNUIsSUFBSSxFQUFFLGNBQWMsRUFBRSxHQUFHLElBQUksQ0FBQztRQUU5QixFQUFFLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7WUFDcEIsSUFBSSxPQUFPLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztZQUU3RSxJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQzFCLElBQUksR0FBRyxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUU3QixjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsR0FBRyxJ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Q0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQy9HLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBpbGVkRHluYW1pY1RlbXBsYXRlLCBDb21waWxlZFN0YXRpY1RlbXBsYXRlIH0gZnJvbSAnLi9jb21waWxlZC9ibG9ja3MnO1xuaW1wb3J0IHsgYnVpbGRlciB9IGZyb20gJy4vY29tcGlsZXInO1xuaW1wb3J0IE9wY29kZUJ1aWxkZXIgZnJvbSAnLi9jb21waWxlZC9vcGNvZGVzL2J1aWxkZXInO1xuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgT3B0aW9uLCBFTVBUWV9BUlJBWSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0ICogYXMgV2lyZUZvcm1hdCBmcm9tICdAZ2xpbW1lci93aXJlLWZvcm1hdCc7XG5pbXBvcnQgeyBPcGFxdWUsIFN5bWJvbFRhYmxlLCBQcm9ncmFtU3ltYm9sVGFibGUsIEJsb2NrU3ltYm9sVGFibGUgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IENvbXBpbGF0aW9uTWV0YSB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuXG5pbXBvcnQge1xuICBTVEFURU1FTlRTXG59IGZyb20gJy4vc3ludGF4L2Z1bmN0aW9ucyc7XG5cbmV4cG9ydCB0eXBlIERlc2VyaWFsaXplZFN0YXRlbWVudCA9IFdpcmVGb3JtYXQuU3RhdGVtZW50IHwgV2lyZUZvcm1hdC5TdGF0ZW1lbnRzLkF0dHJpYnV0ZSB8IFdpcmVGb3JtYXQuU3RhdGVtZW50cy5Bcmd1bWVudDtcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBpbGVTdGF0ZW1lbnQoc3RhdGVtZW50OiBXaXJlRm9ybWF0LlN0YXRlbWVudCwgYnVpbGRlcjogT3Bjb2RlQnVpbGRlcikge1xuICBTVEFURU1FTlRTLmNvbXBpbGUoc3RhdGVtZW50LCBidWlsZGVyKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY2FubmVkVGVtcGxhdGU8UyBleHRlbmRzIFN5bWJvbFRhYmxlPiB7XG4gIGNvbXBpbGVTdGF0aWMoZW52OiBFbnZpcm9ubWVudCk6IENvbXBpbGVkU3RhdGljVGVtcGxhdGU7XG4gIGNvbXBpbGVEeW5hbWljKGVudjogRW52aXJvbm1lbnQpOiBDb21waWxlZER5bmFtaWNUZW1wbGF0ZTxTPjtcbn1cblxuZXhwb3J0IGNsYXNzIENvbXBpbGFibGVUZW1wbGF0ZTxTIGV4dGVuZHMgU3ltYm9sVGFibGU+IGltcGxlbWVudHMgU2Nhbm5lZFRlbXBsYXRlPFM+IHtcbiAgcHJpdmF0ZSBjb21waWxlZFN0YXRpYzogT3B0aW9uPENvbXBpbGVkU3RhdGljVGVtcGxhdGU+ID0gbnVsbDtcbiAgcHJpdmF0ZSBjb21waWxlZER5bmFtaWM6IE9wdGlvbjxDb21waWxlZER5bmFtaWNUZW1wbGF0ZTxTPj4gPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBzdGF0ZW1lbnRzOiBXaXJlRm9ybWF0LlN0YXRlbWVudFtdLCBwdWJsaWMgc3ltYm9sVGFibGU6IFMpIHt9XG5cbiAgY29tcGlsZVN0YXRpYyhlbnY6IEVudmlyb25tZW50KTogQ29tcGlsZWRTdGF0aWNUZW1wbGF0ZSB7XG4gICAgbGV0IHsgY29tcGlsZWRTdGF0aWMgfSA9IHRoaXM7XG5cbiAgICBpZiAoIWNvbXBpbGVkU3RhdGljKSB7XG4gICAgICBsZXQgYnVpbGRlciA9IGNvbXBpbGVTdGF0ZW1lbnRzKHRoaXMuc3RhdGVtZW50cywgdGhpcy5zeW1ib2xUYWJsZS5tZXRhLCBlbnYpO1xuXG4gICAgICBsZXQgc3RhcnQgPSBidWlsZGVyLnN0YXJ0O1xuICAgICAgbGV0IGVuZCA9IGJ1aWxkZXIuZmluYWxpemUoKTtcblxuICAgICAgY29tcGlsZWRTdGF0aWMgPSB0aGlzLmNvbXBpbGVkU3RhdGljID0gbmV3IENvbXBpbGVkU3RhdGljVGVtcGxhdGUoc3RhcnQsIGVuZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBpbGVkU3RhdGljO1xuICB9XG5cbiAgY29tcGlsZUR5bmFtaWMoZW52OiBFbnZpcm9ubWVudCk6IENvbXBpbGVkRHluYW1pY1RlbXBsYXRlPFM+IHtcbiAgICBsZXQgeyBjb21waWxlZER5bmFtaWMgfSA9IHRoaXM7XG5cbiAgICBpZiAoIWNvbXBpbGVkRHluYW1pYykge1xuICAgICAgbGV0IHN0YXRpY0Jsb2NrID0gdGhpcy5jb21waWxlU3RhdGljKGVudik7XG4gICAgICBjb21waWxlZER5bmFtaWMgPSBuZXcgQ29tcGlsZWREeW5hbWljVGVtcGxhdGUoc3RhdGljQmxvY2suc3RhcnQsIHN0YXRpY0Jsb2NrLmVuZCwgdGhpcy5zeW1ib2xUYWJsZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBpbGVkRHluYW1pYztcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBUZW1wbGF0ZSA9IENvbXBpbGFibGVUZW1wbGF0ZTxTeW1ib2xUYWJsZT47XG5leHBvcnQgdHlwZSBQcm9ncmFtID0gQ29tcGlsYWJsZVRlbXBsYXRlPFByb2dyYW1TeW1ib2xUYWJsZT47XG5leHBvcnQgdHlwZSBCbG9jayA9IENvbXBpbGFibGVUZW1wbGF0ZTxCbG9ja1N5bWJvbFRhYmxlPjtcblxuZXhwb3J0IHR5cGUgU2Nhbm5lZFByb2dyYW0gPSBTY2FubmVkVGVtcGxhdGU8UHJvZ3JhbVN5bWJvbFRhYmxlPjtcbmV4cG9ydCB0eXBlIFNjYW5uZWRCbG9jayA9IFNjYW5uZWRUZW1wbGF0ZTxCbG9ja1N5bWJvbFRhYmxlPjtcblxuZnVuY3Rpb24gY29tcGlsZVN0YXRlbWVudHMoc3RhdGVtZW50czogV2lyZUZvcm1hdC5TdGF0ZW1lbnRbXSwgbWV0YTogQ29tcGlsYXRpb25NZXRhLCBlbnY6IEVudmlyb25tZW50KSB7XG4gIGxldCBiID0gYnVpbGRlcihlbnYsIG1ldGEpO1xuXG4gIGZvciAobGV0IHN0YXRlbWVudCBvZiBzdGF0ZW1lbnRzKSB7XG4gICAgY29tcGlsZVN0YXRlbWVudChzdGF0ZW1lbnQsIGIpO1xuICB9XG5cbiAgcmV0dXJuIGI7XG59XG5cbmV4cG9ydCBjb25zdCBBVFRSU19CTE9DSyA9ICcmYXR0cnMnO1xuXG5leHBvcnQgZnVuY3Rpb24gbGF5b3V0KHByZWx1ZGU6IFdpcmVGb3JtYXQuU3RhdGVtZW50W10sIGhlYWQ6IFdpcmVGb3JtYXQuU3RhdGVtZW50W10sIGJvZHk6IFdpcmVGb3JtYXQuU3RhdGVtZW50W10sIHN5bWJvbFRhYmxlOiBQcm9ncmFtU3ltYm9sVGFibGUpIHtcbiAgbGV0IFssIHRhZ10gPSBwcmVsdWRlLnBvcCgpIGFzIFdpcmVGb3JtYXQuU3RhdGVtZW50cy5PcGVuRWxlbWVudDtcbiAgcHJlbHVkZS5wdXNoKFtPcHMuQ2xpZW50U2lkZVN0YXRlbWVudCwgQ2xpZW50U2lkZS5PcHMuT3BlbkNvbXBvbmVudEVsZW1lbnQsIHRhZ10pO1xuICBwcmVsdWRlLnB1c2goW09wcy5DbGllbnRTaWRlU3RhdGVtZW50LCBDbGllbnRTaWRlLk9wcy5EaWRDcmVhdGVFbGVtZW50XSk7XG5cbiAgbGV0IGF0dHJzU3ltYm9sID0gc3ltYm9sVGFibGUuc3ltYm9scy5sZW5ndGggKyAxO1xuICBzeW1ib2xUYWJsZS5zeW1ib2xzLnB1c2goQVRUUlNfQkxPQ0spO1xuXG4gIGxldCBzdGF0ZW1lbnRzID0gcHJlbHVkZVxuICAgIC5jb25jYXQoW1tPcHMuWWllbGQsIGF0dHJzU3ltYm9sLCBFTVBUWV9BUlJBWV1dKVxuICAgIC5jb25jYXQoaGVhZClcbiAgICAuY29uY2F0KGJvZHkpXG4gICAgLmNvbmNhdChbW09wcy5DbGllbnRTaWRlU3RhdGVtZW50LCBDbGllbnRTaWRlLk9wcy5EaWRSZW5kZXJMYXlvdXRdXSk7XG5cbiAgcmV0dXJuIG5ldyBDb21waWxhYmxlVGVtcGxhdGUoc3RhdGVtZW50cywgc3ltYm9sVGFibGUpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTY2FubmVyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBibG9jazogV2lyZUZvcm1hdC5TZXJpYWxpemVkVGVtcGxhdGVCbG9jaywgcHJpdmF0ZSBlbnY6IEVudmlyb25tZW50KSB7XG4gIH1cblxuICBzY2FuRW50cnlQb2ludChtZXRhOiBDb21waWxhdGlvbk1ldGEpOiBQcm9ncmFtIHtcbiAgICBsZXQgeyBibG9jaywgZW52IH0gPSB0aGlzO1xuXG4gICAgbGV0IHN0YXRlbWVudHM7XG4gICAgaWYgKGJsb2NrLnByZWx1ZGUgJiYgYmxvY2suaGVhZCkge1xuICAgICAgc3RhdGVtZW50cyA9IGJsb2NrLnByZWx1ZGUuY29uY2F0KGJsb2NrLmhlYWQpLmNvbmNhdChibG9jay5zdGF0ZW1lbnRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGVtZW50cyA9IGJsb2NrLnN0YXRlbWVudHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBSYXdQcm9ncmFtKGVudiwgbWV0YSwgc3RhdGVtZW50cywgYmxvY2suc3ltYm9scywgYmxvY2suaGFzRXZhbCkuc2NhbigpO1xuICB9XG5cbiAgc2NhbkJsb2NrKG1ldGE6IENvbXBpbGF0aW9uTWV0YSk6IEJsb2NrIHtcbiAgICBsZXQgeyBibG9jaywgZW52IH0gPSB0aGlzO1xuXG4gICAgbGV0IHN0YXRlbWVudHM7XG4gICAgaWYgKGJsb2NrLnByZWx1ZGUgJiYgYmxvY2suaGVhZCkge1xuICAgICAgc3RhdGVtZW50cyA9IGJsb2NrLnByZWx1ZGUuY29uY2F0KGJsb2NrLmhlYWQpLmNvbmNhdChibG9jay5zdGF0ZW1lbnRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGVtZW50cyA9IGJsb2NrLnN0YXRlbWVudHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBSYXdJbmxpbmVCbG9jayhlbnYsIG1ldGEsIHN0YXRlbWVudHMsIEVNUFRZX0FSUkFZKS5zY2FuKCk7XG4gIH1cblxuICBzY2FuTGF5b3V0KG1ldGE6IENvbXBpbGF0aW9uTWV0YSwgYXR0cnM6IFdpcmVGb3JtYXQuU3RhdGVtZW50cy5BdHRyaWJ1dGVbXSk6IFByb2dyYW0ge1xuICAgIGxldCB7IGJsb2NrIH0gPSB0aGlzO1xuICAgIGxldCB7IHN5bWJvbHMsIGhhc0V2YWwgfSA9IGJsb2NrO1xuXG4gICAgaWYgKCFibG9jay5wcmVsdWRlIHx8ICFibG9jay5oZWFkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEEgbGF5b3V0IG11c3QgaGF2ZSBhIHRvcC1sZXZlbCBlbGVtZW50YCk7XG4gICAgfVxuXG4gICAgbGV0IHN5bWJvbFRhYmxlID0geyBtZXRhLCBoYXNFdmFsLCBzeW1ib2xzIH07XG4gICAgbGV0IHsgc3RhdGVtZW50czogcHJlbHVkZSB9ID0gc2NhbkJsb2NrKHsgc3RhdGVtZW50czogYmxvY2sucHJlbHVkZSwgcGFyYW1ldGVyczogRU1QVFlfQVJSQVkgfSwgbWV0YSwgdGhpcy5lbnYpO1xuICAgIGxldCB7IHN0YXRlbWVudHM6IGhlYWQgfSA9IHNjYW5CbG9jayh7IHN0YXRlbWVudHM6IFsuLi5hdHRycywgLi4uYmxvY2suaGVhZF0sIHBhcmFtZXRlcnM6IEVNUFRZX0FSUkFZIH0sIG1ldGEsIHRoaXMuZW52KTtcbiAgICBsZXQgeyBzdGF0ZW1lbnRzOiBib2R5IH0gPSBzY2FuQmxvY2soeyBzdGF0ZW1lbnRzOiBibG9jay5zdGF0ZW1lbnRzLCBwYXJhbWV0ZXJzOiBFTVBUWV9BUlJBWSB9LCBtZXRhLCB0aGlzLmVudik7XG5cbiAgICByZXR1cm4gbGF5b3V0KHByZWx1ZGUsIGhlYWQsIGJvZHksIHN5bWJvbFRhYmxlKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2NhbkJsb2NrKGJsb2NrOiBXaXJlRm9ybWF0LlNlcmlhbGl6ZWRJbmxpbmVCbG9jaywgbWV0YTogQ29tcGlsYXRpb25NZXRhLCBlbnY6IEVudmlyb25tZW50KTogQmxvY2sge1xuICByZXR1cm4gbmV3IFJhd0lubGluZUJsb2NrKGVudiwgbWV0YSwgYmxvY2suc3RhdGVtZW50cywgRU1QVFlfQVJSQVkpLnNjYW4oKTtcbn1cblxuaW1wb3J0IHsgUHVibGljVk0gfSBmcm9tICcuL3ZtJztcbmltcG9ydCB7IFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuXG5leHBvcnQgbmFtZXNwYWNlIENsaWVudFNpZGUge1xuICBleHBvcnQgZW51bSBPcHMge1xuICAgIE9wZW5Db21wb25lbnRFbGVtZW50LFxuICAgIERpZENyZWF0ZUVsZW1lbnQsXG4gICAgRGlkUmVuZGVyTGF5b3V0LFxuICAgIE9wdGltaXplZEFwcGVuZCxcbiAgICBVbm9wdGltaXplZEFwcGVuZCxcbiAgICBTdGF0aWNQYXJ0aWFsLFxuICAgIER5bmFtaWNQYXJ0aWFsLFxuICAgIE5lc3RlZEJsb2NrLFxuICAgIFNjYW5uZWRCbG9jayxcblxuICAgIEZ1bmN0aW9uRXhwcmVzc2lvblxuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzPFQgZXh0ZW5kcyBhbnlbXT4odmFyaWFudDogT3BzKTogKHZhbHVlOiBhbnlbXSkgPT4gdmFsdWUgaXMgVCB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlOiBhbnlbXSk6IHZhbHVlIGlzIFQge1xuICAgICAgcmV0dXJuIHZhbHVlWzBdID09PSBXaXJlRm9ybWF0Lk9wcy5DbGllbnRTaWRlRXhwcmVzc2lvbiB8fCB2YWx1ZVswXSA9PT0gV2lyZUZvcm1hdC5PcHMuQ2xpZW50U2lkZVN0YXRlbWVudCAmJiB2YWx1ZVsxXSA9PT0gdmFyaWFudDtcbiAgICB9O1xuICB9XG5cbiAgaW1wb3J0IENsaWVudFNpZGVTdGF0ZW1lbnQgPSBXaXJlRm9ybWF0Lk9wcy5DbGllbnRTaWRlU3RhdGVtZW50O1xuICBpbXBvcnQgQ2xpZW50U2lkZUV4cHJlc3Npb24gPSBXaXJlRm9ybWF0Lk9wcy5DbGllbnRTaWRlRXhwcmVzc2lvbjtcblxuICBleHBvcnQgdHlwZSBPcGVuQ29tcG9uZW50RWxlbWVudCAgPSBbQ2xpZW50U2lkZVN0YXRlbWVudCwgT3BzLk9wZW5Db21wb25lbnRFbGVtZW50LCBzdHJpbmddO1xuICBleHBvcnQgdHlwZSBEaWRDcmVhdGVFbGVtZW50ICAgICAgPSBbQ2xpZW50U2lkZVN0YXRlbWVudCwgT3BzLkRpZENyZWF0ZUVsZW1lbnRdO1xuICBleHBvcnQgdHlwZSBEaWRSZW5kZXJMYXlvdXQgICAgICAgPSBbQ2xpZW50U2lkZVN0YXRlbWVudCwgT3BzLkRpZFJlbmRlckxheW91dF07XG4gIGV4cG9ydCB0eXBlIE9wdGltaXplZEFwcGVuZCAgICAgICA9IFtDbGllbnRTaWRlU3RhdGVtZW50LCBPcHMuT3B0aW1pemVkQXBwZW5kLCBXaXJlRm9ybWF0LkV4cHJlc3Npb24sIGJvb2xlYW5dO1xuICBleHBvcnQgdHlwZSBVbm9wdGltaXplZEFwcGVuZCAgICAgPSBbQ2xpZW50U2lkZVN0YXRlbWVudCwgT3BzLlVub3B0aW1pemVkQXBwZW5kLCBXaXJlRm9ybWF0LkV4cHJlc3Npb24sIGJvb2xlYW5dO1xuICBleHBvcnQgdHlwZSBTdGF0aWNQYXJ0aWFsICAgICAgICAgPSBbQ2xpZW50U2lkZVN0YXRlbWVudCwgT3BzLlN0YXRpY1BhcnRpYWwsIHN0cmluZywgV2lyZUZvcm1hdC5Db3JlLkV2YWxJbmZvXTtcbiAgZXhwb3J0IHR5cGUgRHluYW1pY1BhcnRpYWwgICAgICAgID0gW0NsaWVudFNpZGVTdGF0ZW1lbnQsIE9wcy5EeW5hbWljUGFydGlhbCwgV2lyZUZvcm1hdC5FeHByZXNzaW9uLCBXaXJlRm9ybWF0LkNvcmUuRXZhbEluZm9dO1xuXG4gIGV4cG9ydCB0eXBlIEZ1bmN0aW9uRXhwcmVzc2lvbiAgICA9IFtDbGllbnRTaWRlRXhwcmVzc2lvbiwgT3BzLkZ1bmN0aW9uRXhwcmVzc2lvbiwgRnVuY3Rpb25FeHByZXNzaW9uQ2FsbGJhY2s8T3BhcXVlPl07XG5cbiAgZXhwb3J0IHR5cGUgRnVuY3Rpb25FeHByZXNzaW9uQ2FsbGJhY2s8VD4gPSAoVk06IFB1YmxpY1ZNLCBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUpID0+IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8VD47XG5cbiAgZXhwb3J0IHR5cGUgQ2xpZW50U2lkZVN0YXRlbWVudCA9XG4gICAgfCBPcGVuQ29tcG9uZW50RWxlbWVudFxuICAgIHwgRGlkQ3JlYXRlRWxlbWVudFxuICAgIHwgRGlkUmVuZGVyTGF5b3V0XG4gICAgfCBPcHRpbWl6ZWRBcHBlbmRcbiAgICB8IFVub3B0aW1pemVkQXBwZW5kXG4gICAgfCBTdGF0aWNQYXJ0aWFsXG4gICAgfCBEeW5hbWljUGFydGlhbFxuICAgIDtcblxuICBleHBvcnQgdHlwZSBDbGllbnRTaWRlRXhwcmVzc2lvbiA9XG4gICAgfCBGdW5jdGlvbkV4cHJlc3Npb25cbiAgICA7XG59XG5cbmNvbnN0IHsgT3BzIH0gPSBXaXJlRm9ybWF0O1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUmF3QmxvY2s8UyBleHRlbmRzIFN5bWJvbFRhYmxlPiB7XG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBlbnY6IEVudmlyb25tZW50LCBwcm90ZWN0ZWQgbWV0YTogQ29tcGlsYXRpb25NZXRhLCBwcml2YXRlIHN0YXRlbWVudHM6IFdpcmVGb3JtYXQuU3RhdGVtZW50W10pIHt9XG5cbiAgc2NhblN0YXRlbWVudHMoKTogV2lyZUZvcm1hdC5TdGF0ZW1lbnRbXSB7XG4gICAgbGV0IGJ1ZmZlcjogV2lyZUZvcm1hdC5TdGF0ZW1lbnRbXSA9IFtdO1xuICAgIGxldCBzdGF0ZW1lbnRzID0gdGhpcy5zdGF0ZW1lbnRzO1xuICAgIGZvciAobGV0IHN0YXRlbWVudCBvZiBzdGF0ZW1lbnRzKSB7XG4gICAgICBidWZmZXIucHVzaChzdGF0ZW1lbnQpO1xuICAgIH1cblxuICAgIHJldHVybiBidWZmZXI7XG4gIH1cblxuICBjaGlsZChibG9jazogT3B0aW9uPFdpcmVGb3JtYXQuU2VyaWFsaXplZElubGluZUJsb2NrPik6IE9wdGlvbjxSYXdJbmxpbmVCbG9jaz4ge1xuICAgIGlmICghYmxvY2spIHJldHVybiBudWxsO1xuICAgIHJldHVybiBuZXcgUmF3SW5saW5lQmxvY2sodGhpcy5lbnYsIHRoaXMubWV0YSwgYmxvY2suc3RhdGVtZW50cywgYmxvY2sucGFyYW1ldGVycyk7XG4gIH1cblxuICBhYnN0cmFjdCBzY2FuKCk6IENvbXBpbGFibGVUZW1wbGF0ZTxTPjtcbn1cblxuZXhwb3J0IGNsYXNzIFJhd0lubGluZUJsb2NrIGV4dGVuZHMgUmF3QmxvY2s8QmxvY2tTeW1ib2xUYWJsZT4ge1xuICBjb25zdHJ1Y3RvcihlbnY6IEVudmlyb25tZW50LCBtZXRhOiBDb21waWxhdGlvbk1ldGEsIHN0YXRlbWVudHM6IFdpcmVGb3JtYXQuU3RhdGVtZW50W10sIHByaXZhdGUgcGFyYW1ldGVyczogbnVtYmVyW10pIHtcbiAgICBzdXBlcihlbnYsIG1ldGEsIHN0YXRlbWVudHMpO1xuICB9XG5cbiAgc2NhbigpOiBCbG9jayB7XG4gICAgbGV0IHN0YXRlbWVudHMgPSB0aGlzLnNjYW5TdGF0ZW1lbnRzKCk7XG4gICAgcmV0dXJuIG5ldyBDb21waWxhYmxlVGVtcGxhdGUoc3RhdGVtZW50cywgeyBwYXJhbWV0ZXJzOiB0aGlzLnBhcmFtZXRlcnMsIG1ldGE6IHRoaXMubWV0YSB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUmF3UHJvZ3JhbSBleHRlbmRzIFJhd0Jsb2NrPFByb2dyYW1TeW1ib2xUYWJsZT4ge1xuICBjb25zdHJ1Y3RvcihlbnY6IEVudmlyb25tZW50LCBtZXRhOiBDb21waWxhdGlvbk1ldGEsIHN0YXRlbWVudHM6IFdpcmVGb3JtYXQuU3RhdGVtZW50W10sIHByaXZhdGUgc3ltYm9sczogc3RyaW5nW10sIHByaXZhdGUgaGFzRXZhbDogYm9vbGVhbikge1xuICAgIHN1cGVyKGVudiwgbWV0YSwgc3RhdGVtZW50cyk7XG4gIH1cblxuICBzY2FuKCk6IFByb2dyYW0ge1xuICAgIGxldCBzdGF0ZW1lbnRzID0gdGhpcy5zY2FuU3RhdGVtZW50cygpO1xuICAgIHJldHVybiBuZXcgQ29tcGlsYWJsZVRlbXBsYXRlKHN0YXRlbWVudHMsIHsgc3ltYm9sczogdGhpcy5zeW1ib2xzLCBoYXNFdmFsOiB0aGlzLmhhc0V2YWwsIG1ldGE6IHRoaXMubWV0YSB9KTtcbiAgfVxufVxuIl19

@@ -1,2 +0,1 @@

import { unreachable } from '@glimmer/util';
import { SingleNodeBounds, single, clear } from './bounds';

@@ -28,3 +27,2 @@ export function isSafeString(value) {

}
throw unreachable();
}

@@ -38,3 +36,2 @@ export function trustingInsert(dom, cursor, value) {

}
throw unreachable();
}

@@ -126,2 +123,2 @@ class TextUpsert extends Upsert {

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBzZXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidXBzZXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJcEQsT0FBTyxFQUFrQixnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBTTNFLE1BQU0sdUJBQXVCLEtBQWE7SUFDeEMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssVUFBVSxDQUFDO0FBQzFELENBQUM7QUFFRCxNQUFNLGlCQUFpQixLQUFhO0lBQ2xDLE1BQU0sQ0FBQyxLQUFLLEtBQUssSUFBSSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxRQUFRLENBQUM7QUFDOUYsQ0FBQztBQUVELE1BQU0sbUJBQW1CLEtBQWE7SUFDcEMsTUFBTSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQztBQUNuQyxDQUFDO0FBTUQ7SUFDRSxZQUFtQixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUNqQyxDQUFDO0NBR0Y7QUFFRCxlQUFlLE1BQU0sQ0FBQztBQUV0QixNQUFNLHlCQUF5QixHQUF3QixFQUFFLE1BQWMsRUFBRSxLQUF3QjtJQUMvRixFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUNELEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUss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QUFXLENBQUMsQ0FBQztnQkFDakksSUFBSSxDQUFDLGVBQWUsR0FBRyxXQUFXLENBQUM7WUFDckMsQ0FBQztZQUVELE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDTixNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7Q0FDRjtBQUVELGdCQUFpQixTQUFRLE1BQU07SUFDN0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUF3QixFQUFFLE1BQWMsRUFBRSxJQUFpQjtRQUN2RSxHQUFHLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzRCxNQUFNLENBQUMsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQWUsRUFBRSxLQUFnQjtRQUN0QyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xCLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUM7WUFFdEIsSUFBSSxhQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzNDLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUVoQyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUF5QyxFQUFFLEtBQUssRUFBRSxXQUFvQyxDQUFDLENBQUM7WUFFM0gsTUFBTSxDQUFDLElBQUksQ0FBQztRQUNkLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNOLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3BhcXVlLCB1bnJlYWNoYWJsZSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgRE9NQ2hhbmdlcywgRE9NVHJlZUNvbnN0cnVjdGlvbiB9IGZyb20gJy4vZG9tL2hlbHBlcic7XG5pbXBvcnQgKiBhcyBTaW1wbGUgZnJvbSAnLi9kb20vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBGSVhfUkVJRklDQVRJT04gfSBmcm9tICcuL2RvbS9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEJvdW5kcywgQ3Vyc29yLCBTaW5nbGVOb2RlQm91bmRzLCBzaW5nbGUsIGNsZWFyIH0gZnJvbSAnLi9ib3VuZHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNhZmVTdHJpbmcge1xuICB0b0hUTUwoKTogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTYWZlU3RyaW5nKHZhbHVlOiBPcGFxdWUpOiB2YWx1ZSBpcyBTYWZlU3RyaW5nIHtcbiAgcmV0dXJuICEhdmFsdWUgJiYgdHlwZW9mIHZhbHVlWyd0b0hUTUwnXSA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZSh2YWx1ZTogT3BhcXVlKTogdmFsdWUgaXMgTm9kZSB7XG4gIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHR5cGVvZiB2YWx1ZVsnbm9kZVR5cGUnXSA9PT0gJ251bWJlcic7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZyh2YWx1ZTogT3BhcXVlKTogdmFsdWUgaXMgc3RyaW5nIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZyc7XG59XG5cbmV4cG9ydCB0eXBlIEluc2VydGlvbiA9IENhdXRpb3VzSW5zZXJ0aW9uIHwgVHJ1c3RpbmdJbnNlcnRpb247XG5leHBvcnQgdHlwZSBDYXV0aW91c0luc2VydGlvbiA9IHN0cmluZyB8IFNhZmVTdHJpbmcgfCBOb2RlO1xuZXhwb3J0IHR5cGUgVHJ1c3RpbmdJbnNlcnRpb24gPSBzdHJpbmcgfCBOb2RlO1xuXG5hYnN0cmFjdCBjbGFzcyBVcHNlcnQge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgYm91bmRzOiBCb3VuZHMpIHtcbiAgfVxuXG4gIGFic3RyYWN0IHVwZGF0ZShkb206IERPTUNoYW5nZXMsIHZhbHVlOiBJbnNlcnRpb24pOiBib29sZWFuO1xufVxuXG5leHBvcnQgZGVmYXVsdCBVcHNlcnQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBjYXV0aW91c0luc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogQ2F1dGlvdXNJbnNlcnRpb24pOiBVcHNlcnQge1xuICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgcmV0dXJuIFRleHRVcHNlcnQuaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cbiAgaWYgKGlzU2FmZVN0cmluZyh2YWx1ZSkpIHtcbiAgICByZXR1cm4gU2FmZVN0cmluZ1Vwc2VydC5pbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxuICBpZiAoaXNOb2RlKHZhbHVlKSkge1xuICAgIHJldHVybiBOb2RlVXBzZXJ0Lmluc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG5cbiAgdGhyb3cgdW5yZWFjaGFibGUoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRydXN0aW5nSW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBUcnVzdGluZ0luc2VydGlvbik6IFVwc2VydCB7XG4gIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICByZXR1cm4gSFRNTFVwc2VydC5pbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxuICBpZiAoaXNOb2RlKHZhbHVlKSkge1xuICAgIHJldHVybiBOb2RlVXBzZXJ0Lmluc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG5cbiAgdGhyb3cgdW5yZWFjaGFibGUoKTtcbn1cblxuY2xhc3MgVGV4dFVwc2VydCBleHRlbmRzIFVwc2VydCB7XG4gIHN0YXRpYyBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IHN0cmluZyk6IFVwc2VydCB7XG4gICAgbGV0IHRleHROb2RlID0gZG9tLmNyZWF0ZVRleHROb2RlKHZhbHVlKTtcbiAgICBkb20uaW5zZXJ0QmVmb3JlKGN1cnNvci5lbGVtZW50LCB0ZXh0Tm9kZSwgY3Vyc29yLm5leHRTaWJsaW5nKTtcbiAgICBsZXQgYm91bmRzID0gbmV3IFNpbmdsZU5vZGVCb3VuZHMoY3Vyc29yLmVsZW1lbnQsIHRleHROb2RlKTtcbiAgICByZXR1cm4gbmV3IFRleHRVcHNlcnQoYm91bmRzLCB0ZXh0Tm9kZSk7XG4gIH1cblxuICBwcml2YXRlIHRleHROb2RlOiBUZXh0O1xuXG4gIGNvbnN0cnVjdG9yKGJvdW5kczogQm91bmRzLCB0ZXh0Tm9kZTogU2ltcGxlLlRleHQpIHtcbiAgICBzdXBlcihib3VuZHMpO1xuICAgIHRoaXMudGV4dE5vZGUgPSB0ZXh0Tm9kZSBhcyBUZXh0O1xuICB9XG5cbiAgdXBkYXRlKF9kb206IERPTUNoYW5nZXMsIHZhbHVlOiBJbnNlcnRpb24pOiBib29sZWFuIHtcbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICBsZXQgeyB0ZXh0Tm9kZSB9ID0gdGhpcztcbiAgICAgIHRleHROb2RlLm5vZGVWYWx1ZSA9IHZhbHVlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgSFRNTFVwc2VydCBleHRlbmRzIFVwc2VydCB7XG4gIHN0YXRpYyBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IHN0cmluZyk6IFVwc2VydCB7XG4gICAgbGV0IGJvdW5kcyA9IGRvbS5pbnNlcnRIVE1MQmVmb3JlKGN1cnNvci5lbGVtZW50LCB2YWx1ZSwgY3Vyc29yLm5leHRTaWJsaW5nKTtcbiAgICByZXR1cm4gbmV3IEhUTUxVcHNlcnQoYm91bmRzKTtcbiAgfVxuXG4gIHVwZGF0ZShkb206IERPTUNoYW5nZXMsIHZhbHVlOiBJbnNlcnRpb24pOiBib29sZWFuIHtcbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICBsZXQgeyBib3VuZHMgfSA9IHRoaXM7XG5cbiAgICAgIGxldCBwYXJlbnRFbGVtZW50ID0gYm91bmRzLnBhcmVudEVsZW1lbnQoKTtcbiAgICAgIGxldCBuZXh0U2libGluZyA9IGNsZWFyKGJvdW5kcyk7XG5cbiAgICAgIHRoaXMuYm91bmRzID0gZG9tLmluc2VydEhUTUxCZWZvcmUocGFyZW50RWxlbWVudCBhcyBGSVhfUkVJRklDQVRJT048RWxlbWVudD4sIG5leHRTaWJsaW5nIGFzIEZJWF9SRUlGSUNBVElPTjxOb2RlPiwgdmFsdWUpO1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBTYWZlU3RyaW5nVXBzZXJ0IGV4dGVuZHMgVXBzZXJ0IHtcbiAgc3RhdGljIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogU2FmZVN0cmluZyk6IFVwc2VydCB7XG4gICAgbGV0IHN0cmluZ1ZhbHVlID0gdmFsdWUudG9IVE1MKCk7XG4gICAgbGV0IGJvdW5kcyA9IGRvbS5pbnNlcnRIVE1MQmVmb3JlKGN1cnNvci5lbGVtZW50LCBzdHJpbmdWYWx1ZSwgY3Vyc29yLm5leHRTaWJsaW5nKTtcbiAgICByZXR1cm4gbmV3IFNhZmVTdHJpbmdVcHNlcnQoYm91bmRzLCBzdHJpbmdWYWx1ZSk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihib3VuZHM6IEJvdW5kcywgcHJpdmF0ZSBsYXN0U3RyaW5nVmFsdWU6IHN0cmluZykge1xuICAgIHN1cGVyKGJvdW5kcyk7XG4gIH1cblxuICB1cGRhdGUoZG9tOiBET01DaGFuZ2VzLCB2YWx1ZTogSW5zZXJ0aW9uKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzU2FmZVN0cmluZyh2YWx1ZSkpIHtcbiAgICAgIGxldCBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvSFRNTCgpO1xuXG4gICAgICBpZiAoc3RyaW5nVmFsdWUgIT09IHRoaXMubGFzdFN0cmluZ1ZhbHVlKSB7XG4gICAgICAgIGxldCB7IGJvdW5kcyB9ID0gdGhpcztcblxuICAgICAgICBsZXQgcGFyZW50RWxlbWVudCA9IGJvdW5kcy5wYXJlbnRFbGVtZW50KCk7XG4gICAgICAgIGxldCBuZXh0U2libGluZyA9IGNsZWFyKGJvdW5kcyk7XG5cbiAgICAgICAgdGhpcy5ib3VuZHMgPSBkb20uaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnRFbGVtZW50IGFzIEZJWF9SRUlGSUNBVElPTjxFbGVtZW50PiwgbmV4dFNpYmxpbmcgYXMgRklYX1JFSUZJQ0FUSU9OPE5vZGU+LCBzdHJpbmdWYWx1ZSk7XG4gICAgICAgIHRoaXMubGFzdFN0cmluZ1ZhbHVlID0gc3RyaW5nVmFsdWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59XG5cbmNsYXNzIE5vZGVVcHNlcnQgZXh0ZW5kcyBVcHNlcnQge1xuICBzdGF0aWMgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIG5vZGU6IFNpbXBsZS5Ob2RlKTogVXBzZXJ0IHtcbiAgICBkb20uaW5zZXJ0QmVmb3JlKGN1cnNvci5lbGVtZW50LCBub2RlLCBjdXJzb3IubmV4dFNpYmxpbmcpO1xuICAgIHJldHVybiBuZXcgTm9kZVVwc2VydChzaW5nbGUoY3Vyc29yLmVsZW1lbnQsIG5vZGUpKTtcbiAgfVxuXG4gIHVwZGF0ZShkb206IERPTUNoYW5nZXMsIHZhbHVlOiBJbnNlcnRpb24pOiBib29sZWFuIHtcbiAgICBpZiAoaXNOb2RlKHZhbHVlKSkge1xuICAgICAgbGV0IHsgYm91bmRzIH0gPSB0aGlzO1xuXG4gICAgICBsZXQgcGFyZW50RWxlbWVudCA9IGJvdW5kcy5wYXJlbnRFbGVtZW50KCk7XG4gICAgICBsZXQgbmV4dFNpYmxpbmcgPSBjbGVhcihib3VuZHMpO1xuXG4gICAgICB0aGlzLmJvdW5kcyA9IGRvbS5pbnNlcnROb2RlQmVmb3JlKHBhcmVudEVsZW1lbnQgYXMgRklYX1JFSUZJQ0FUSU9OPEVsZW1lbnQ+LCB2YWx1ZSwgbmV4dFNpYmxpbmcgYXMgRklYX1JFSUZJQ0FUSU9OPE5vZGU+KTtcblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBzZXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidXBzZXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBa0IsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQztBQU0zRSxNQUFNLHVCQUF1QixLQUFhO0lBQ3hDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLFVBQVUsQ0FBQztBQUMxRCxDQUFDO0FBRUQsTUFBTSxpQkFBaUIsS0FBYTtJQUNsQyxNQUFNLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksT0FBTyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssUUFBUSxDQUFDO0FBQzlGLENBQUM7QUFFRCxNQUFNLG1CQUFtQixLQUFhO0lBQ3BDLE1BQU0sQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUM7QUFDbkMsQ0FBQztBQU1EO0lBQ0UsWUFBbUIsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7SUFDakMsQ0FBQztDQUdGO0FBRUQsZUFBZSxNQUFNLENBQUM7QUFFdEIsTUFBTSx5QkFBeUIsR0FBd0IsRUFBRSxNQUFjLEVBQUUsS0FBd0I7SUFDL0YsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQixNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFDRCxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBQ0QsRUFBRSxDQUFDLENBQUMs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QUFDO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDTixNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7Q0FDRjtBQUVELGdCQUFpQixTQUFRLE1BQU07SUFDN0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUF3QixFQUFFLE1BQWMsRUFBRSxJQUFpQjtRQUN2RSxHQUFHLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzRCxNQUFNLENBQUMsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQWUsRUFBRSxLQUFnQjtRQUN0QyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xCLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUM7WUFFdEIsSUFBSSxhQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzNDLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUVoQyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUF5QyxFQUFFLEtBQUssRUFBRSxXQUFvQyxDQUFDLENBQUM7WUFFM0gsTUFBTSxDQUFDLElBQUksQ0FBQztRQUNkLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNOLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3BhcXVlIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBET01DaGFuZ2VzLCBET01UcmVlQ29uc3RydWN0aW9uIH0gZnJvbSAnLi9kb20vaGVscGVyJztcbmltcG9ydCAqIGFzIFNpbXBsZSBmcm9tICcuL2RvbS9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEZJWF9SRUlGSUNBVElPTiB9IGZyb20gJy4vZG9tL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQm91bmRzLCBDdXJzb3IsIFNpbmdsZU5vZGVCb3VuZHMsIHNpbmdsZSwgY2xlYXIgfSBmcm9tICcuL2JvdW5kcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2FmZVN0cmluZyB7XG4gIHRvSFRNTCgpOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1NhZmVTdHJpbmcodmFsdWU6IE9wYXF1ZSk6IHZhbHVlIGlzIFNhZmVTdHJpbmcge1xuICByZXR1cm4gISF2YWx1ZSAmJiB0eXBlb2YgdmFsdWVbJ3RvSFRNTCddID09PSAnZnVuY3Rpb24nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOb2RlKHZhbHVlOiBPcGFxdWUpOiB2YWx1ZSBpcyBOb2RlIHtcbiAgcmV0dXJuIHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIHZhbHVlWydub2RlVHlwZSddID09PSAnbnVtYmVyJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU3RyaW5nKHZhbHVlOiBPcGFxdWUpOiB2YWx1ZSBpcyBzdHJpbmcge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJztcbn1cblxuZXhwb3J0IHR5cGUgSW5zZXJ0aW9uID0gQ2F1dGlvdXNJbnNlcnRpb24gfCBUcnVzdGluZ0luc2VydGlvbjtcbmV4cG9ydCB0eXBlIENhdXRpb3VzSW5zZXJ0aW9uID0gc3RyaW5nIHwgU2FmZVN0cmluZyB8IE5vZGU7XG5leHBvcnQgdHlwZSBUcnVzdGluZ0luc2VydGlvbiA9IHN0cmluZyB8IE5vZGU7XG5cbmFic3RyYWN0IGNsYXNzIFVwc2VydCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBib3VuZHM6IEJvdW5kcykge1xuICB9XG5cbiAgYWJzdHJhY3QgdXBkYXRlKGRvbTogRE9NQ2hhbmdlcywgdmFsdWU6IEluc2VydGlvbik6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBkZWZhdWx0IFVwc2VydDtcblxuZXhwb3J0IGZ1bmN0aW9uIGNhdXRpb3VzSW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBDYXV0aW91c0luc2VydGlvbik6IFVwc2VydCB7XG4gIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICByZXR1cm4gVGV4dFVwc2VydC5pbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxuICBpZiAoaXNTYWZlU3RyaW5nKHZhbHVlKSkge1xuICAgIHJldHVybiBTYWZlU3RyaW5nVXBzZXJ0Lmluc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG4gIGlmIChpc05vZGUodmFsdWUpKSB7XG4gICAgcmV0dXJuIE5vZGVVcHNlcnQuaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cblxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJ1c3RpbmdJbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IFRydXN0aW5nSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgIHJldHVybiBIVE1MVXBzZXJ0Lmluc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG4gIGlmIChpc05vZGUodmFsdWUpKSB7XG4gICAgcmV0dXJuIE5vZGVVcHNlcnQuaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cblxufVxuXG5jbGFzcyBUZXh0VXBzZXJ0IGV4dGVuZHMgVXBzZXJ0IHtcbiAgc3RhdGljIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogc3RyaW5nKTogVXBzZXJ0IHtcbiAgICBsZXQgdGV4dE5vZGUgPSBkb20uY3JlYXRlVGV4dE5vZGUodmFsdWUpO1xuICAgIGRvbS5pbnNlcnRCZWZvcmUoY3Vyc29yLmVsZW1lbnQsIHRleHROb2RlLCBjdXJzb3IubmV4dFNpYmxpbmcpO1xuICAgIGxldCBib3VuZHMgPSBuZXcgU2luZ2xlTm9kZUJvdW5kcyhjdXJzb3IuZWxlbWVudCwgdGV4dE5vZGUpO1xuICAgIHJldHVybiBuZXcgVGV4dFVwc2VydChib3VuZHMsIHRleHROb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgdGV4dE5vZGU6IFRleHQ7XG5cbiAgY29uc3RydWN0b3IoYm91bmRzOiBCb3VuZHMsIHRleHROb2RlOiBTaW1wbGUuVGV4dCkge1xuICAgIHN1cGVyKGJvdW5kcyk7XG4gICAgdGhpcy50ZXh0Tm9kZSA9IHRleHROb2RlIGFzIFRleHQ7XG4gIH1cblxuICB1cGRhdGUoX2RvbTogRE9NQ2hhbmdlcywgdmFsdWU6IEluc2VydGlvbik6IGJvb2xlYW4ge1xuICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgIGxldCB7IHRleHROb2RlIH0gPSB0aGlzO1xuICAgICAgdGV4dE5vZGUubm9kZVZhbHVlID0gdmFsdWU7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBIVE1MVXBzZXJ0IGV4dGVuZHMgVXBzZXJ0IHtcbiAgc3RhdGljIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogc3RyaW5nKTogVXBzZXJ0IHtcbiAgICBsZXQgYm91bmRzID0gZG9tLmluc2VydEhUTUxCZWZvcmUoY3Vyc29yLmVsZW1lbnQsIHZhbHVlLCBjdXJzb3IubmV4dFNpYmxpbmcpO1xuICAgIHJldHVybiBuZXcgSFRNTFVwc2VydChib3VuZHMpO1xuICB9XG5cbiAgdXBkYXRlKGRvbTogRE9NQ2hhbmdlcywgdmFsdWU6IEluc2VydGlvbik6IGJvb2xlYW4ge1xuICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgIGxldCB7IGJvdW5kcyB9ID0gdGhpcztcblxuICAgICAgbGV0IHBhcmVudEVsZW1lbnQgPSBib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICAgICAgbGV0IG5leHRTaWJsaW5nID0gY2xlYXIoYm91bmRzKTtcblxuICAgICAgdGhpcy5ib3VuZHMgPSBkb20uaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnRFbGVtZW50IGFzIEZJWF9SRUlGSUNBVElPTjxFbGVtZW50PiwgbmV4dFNpYmxpbmcgYXMgRklYX1JFSUZJQ0FUSU9OPE5vZGU+LCB2YWx1ZSk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59XG5cbmNsYXNzIFNhZmVTdHJpbmdVcHNlcnQgZXh0ZW5kcyBVcHNlcnQge1xuICBzdGF0aWMgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBTYWZlU3RyaW5nKTogVXBzZXJ0IHtcbiAgICBsZXQgc3RyaW5nVmFsdWUgPSB2YWx1ZS50b0hUTUwoKTtcbiAgICBsZXQgYm91bmRzID0gZG9tLmluc2VydEhUTUxCZWZvcmUoY3Vyc29yLmVsZW1lbnQsIHN0cmluZ1ZhbHVlLCBjdXJzb3IubmV4dFNpYmxpbmcpO1xuICAgIHJldHVybiBuZXcgU2FmZVN0cmluZ1Vwc2VydChib3VuZHMsIHN0cmluZ1ZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGJvdW5kczogQm91bmRzLCBwcml2YXRlIGxhc3RTdHJpbmdWYWx1ZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoYm91bmRzKTtcbiAgfVxuXG4gIHVwZGF0ZShkb206IERPTUNoYW5nZXMsIHZhbHVlOiBJbnNlcnRpb24pOiBib29sZWFuIHtcbiAgICBpZiAoaXNTYWZlU3RyaW5nKHZhbHVlKSkge1xuICAgICAgbGV0IHN0cmluZ1ZhbHVlID0gdmFsdWUudG9IVE1MKCk7XG5cbiAgICAgIGlmIChzdHJpbmdWYWx1ZSAhPT0gdGhpcy5sYXN0U3RyaW5nVmFsdWUpIHtcbiAgICAgICAgbGV0IHsgYm91bmRzIH0gPSB0aGlzO1xuXG4gICAgICAgIGxldCBwYXJlbnRFbGVtZW50ID0gYm91bmRzLnBhcmVudEVsZW1lbnQoKTtcbiAgICAgICAgbGV0IG5leHRTaWJsaW5nID0gY2xlYXIoYm91bmRzKTtcblxuICAgICAgICB0aGlzLmJvdW5kcyA9IGRvbS5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudEVsZW1lbnQgYXMgRklYX1JFSUZJQ0FUSU9OPEVsZW1lbnQ+LCBuZXh0U2libGluZyBhcyBGSVhfUkVJRklDQVRJT048Tm9kZT4sIHN0cmluZ1ZhbHVlKTtcbiAgICAgICAgdGhpcy5sYXN0U3RyaW5nVmFsdWUgPSBzdHJpbmdWYWx1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgTm9kZVVwc2VydCBleHRlbmRzIFVwc2VydCB7XG4gIHN0YXRpYyBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgbm9kZTogU2ltcGxlLk5vZGUpOiBVcHNlcnQge1xuICAgIGRvbS5pbnNlcnRCZWZvcmUoY3Vyc29yLmVsZW1lbnQsIG5vZGUsIGN1cnNvci5uZXh0U2libGluZyk7XG4gICAgcmV0dXJuIG5ldyBOb2RlVXBzZXJ0KHNpbmdsZShjdXJzb3IuZWxlbWVudCwgbm9kZSkpO1xuICB9XG5cbiAgdXBkYXRlKGRvbTogRE9NQ2hhbmdlcywgdmFsdWU6IEluc2VydGlvbik6IGJvb2xlYW4ge1xuICAgIGlmIChpc05vZGUodmFsdWUpKSB7XG4gICAgICBsZXQgeyBib3VuZHMgfSA9IHRoaXM7XG5cbiAgICAgIGxldCBwYXJlbnRFbGVtZW50ID0gYm91bmRzLnBhcmVudEVsZW1lbnQoKTtcbiAgICAgIGxldCBuZXh0U2libGluZyA9IGNsZWFyKGJvdW5kcyk7XG5cbiAgICAgIHRoaXMuYm91bmRzID0gZG9tLmluc2VydE5vZGVCZWZvcmUocGFyZW50RWxlbWVudCBhcyBGSVhfUkVJRklDQVRJT048RWxlbWVudD4sIHZhbHVlLCBuZXh0U2libGluZyBhcyBGSVhfUkVJRklDQVRJT048Tm9kZT4pO1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufVxuIl19
import { Register } from '../opcodes';
import { Scope } from '../environment';
import { Stack, LinkedList, ListSlice, expect } from '@glimmer/util';
import { Stack, LinkedList, ListSlice } from '@glimmer/util';
import { combineSlice } from '@glimmer/reference';

@@ -220,6 +220,6 @@ import { LabelOpcode, JumpIfNotModifiedOpcode, DidModifyOpcode } from '../compiled/opcodes/vm';

listBlock() {
return expect(this.listBlockStack.current, 'expected a list block');
return this.listBlockStack.current;
}
updating() {
return expect(this.updatingOpcodeStack.current, 'expected updating opcode on the updating opcode stack');
return this.updatingOpcodeStack.current;
}

@@ -230,6 +230,6 @@ elements() {

scope() {
return expect(this.scopeStack.current, 'expected scope on the scope stack');
return this.scopeStack.current;
}
dynamicScope() {
return expect(this.dynamicScopeStack.current, 'expected dynamic scope on the dynamic scope stack');
return this.dynamicScopeStack.current;
}

@@ -240,3 +240,3 @@ pushChildScope() {

pushCallerScope(childScope = false) {
let callerScope = expect(this.scope().getCallerScope(), 'pushCallerScope is called when a caller scope is present');
let callerScope = this.scope().getCallerScope();
this.scopeStack.push(childScope ? callerScope.child() : callerScope);

@@ -294,3 +294,3 @@ }

done: true,
value: new RenderResult(env, expect(updatingOpcodeStack.pop(), 'there should be a final updating opcode stack'), elementStack.popBlock())
value: new RenderResult(env, updatingOpcodeStack.pop(), elementStack.popBlock())
};

@@ -318,2 +318,2 @@ }

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwZW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBwZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdEMsT0FBTyxFQUFFLEtBQUssRUFBcUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRSxPQUFPLEVBQXVCLEtBQUssRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFrQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUE0RCxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU1RyxPQUFPLEVBQUUsV0FBVyxFQUFFLHVCQUF1QixFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9GLE9BQU8sRUFBVyxlQUFlLEVBQUUsU0FBUyxFQUFlLE1BQU0sVUFBVSxDQUFDO0FBQzVFLE9BQU8sWUFBWSxNQUFNLGlCQUFpQixDQUFDO0FBRTNDLE9BQU8sRUFDTCxjQUFjLEVBRWYsTUFBTSxZQUFZLENBQUM7QUFnQnBCLE1BQU07SUFTSixZQUFvQixLQUFlLEVBQVMsRUFBVSxFQUFTLEVBQVU7UUFBckQsVUFBSyxHQUFMLEtBQUssQ0FBVTtRQUFTLE9BQUUsR0FBRixFQUFFLENBQVE7UUFBUyxPQUFFLEdBQUYsRUFBRSxDQUFRO1FBQ3ZFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQVZELE1BQU0sQ0FBQyxLQUFLO1FBQ1YsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUF1QjtRQUNwQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzVE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b2Rlcyc7XG5pbXBvcnQgeyBTY29wZSwgRHluYW1pY1Njb3BlLCBFbnZpcm9ubWVudCwgT3Bjb2RlIH0gZnJvbSAnLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgRWxlbWVudFN0YWNrIH0gZnJvbSAnLi4vYnVpbGRlcic7XG5pbXBvcnQgeyBPcHRpb24sIERlc3Ryb3lhYmxlLCBTdGFjaywgTGlua2VkTGlzdCwgTGlzdFNsaWNlLCBPcGFxdWUsIGFzc2VydCwgZXhwZWN0IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBSZWZlcmVuY2VJdGVyYXRvciwgUGF0aFJlZmVyZW5jZSwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgY29tYmluZVNsaWNlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IENvbXBpbGVkRHluYW1pY1Byb2dyYW0gfSBmcm9tICcuLi9jb21waWxlZC9ibG9ja3MnO1xuaW1wb3J0IHsgTGFiZWxPcGNvZGUsIEp1bXBJZk5vdE1vZGlmaWVkT3Bjb2RlLCBEaWRNb2RpZnlPcGNvZGUgfSBmcm9tICcuLi9jb21waWxlZC9vcGNvZGVzL3ZtJztcbmltcG9ydCB7IFZNU3RhdGUsIExpc3RCbG9ja09wY29kZSwgVHJ5T3Bjb2RlLCBCbG9ja09wY29kZSB9IGZyb20gJy4vdXBkYXRlJztcbmltcG9ydCBSZW5kZXJSZXN1bHQgZnJvbSAnLi9yZW5kZXItcmVzdWx0JztcblxuaW1wb3J0IHtcbiAgQVBQRU5EX09QQ09ERVMsXG4gIFVwZGF0aW5nT3Bjb2RlXG59IGZyb20gJy4uL29wY29kZXMnO1xuXG5pbXBvcnQge1xuICBDb25zdGFudHMsXG4gIENvbnN0YW50U3RyaW5nXG59IGZyb20gJy4uL2Vudmlyb25tZW50L2NvbnN0YW50cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGljVk0ge1xuICBlbnY6IEVudmlyb25tZW50O1xuICBkeW5hbWljU2NvcGUoKTogRHluYW1pY1Njb3BlO1xuICBnZXRTZWxmKCk6IFBhdGhSZWZlcmVuY2U8T3BhcXVlPjtcbiAgbmV3RGVzdHJveWFibGUoZDogRGVzdHJveWFibGUpOiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBDYXB0dXJlZFN0YWNrID0gT3BhcXVlW107XG5cbmV4cG9ydCBjbGFzcyBFdmFsdWF0aW9uU3RhY2sge1xuICBzdGF0aWMgZW1wdHkoKTogRXZhbHVhdGlvblN0YWNrIHtcbiAgICByZXR1cm4gbmV3IHRoaXMoW10sIDAsIC0xKTtcbiAgfVxuXG4gIHN0YXRpYyByZXN0b3JlKHNuYXBzaG90OiBDYXB0dXJlZFN0YWNrKTogRXZhbHVhdGlvblN0YWNrIHtcbiAgICByZXR1cm4gbmV3IHRoaXMoc25hcHNob3Quc2xpY2UoKSwgMCwgc25hcHNob3QubGVuZ3RoIC0gMSk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0YWNrOiBPcGFxdWVbXSwgcHVibGljIGZwOiBudW1iZXIsIHB1YmxpYyBzcDogbnVtYmVyKSB7XG4gICAgT2JqZWN0LnNlYWwodGhpcyk7XG4gIH1cblxuICBpc0VtcHR5KCkge1xuICAgIHJldHVybiB0aGlzLnNwID09PSAtMTtcbiAgfVxuXG4gIHB1c2godmFsdWU6IE9wYXF1ZSk6IHZvaWQge1xuICAgIHRoaXMuc3RhY2tbKyt0aGlzLnNwXSA9IHZhbHVlO1xuICB9XG5cbiAgZHVwKHBvc2l0aW9uID0gdGhpcy5zcCk6IHZvaWQge1xuICAgIHRoaXMucHVzaCh0aGlzLnN0YWNrW3Bvc2l0aW9uXSk7XG4gIH1cblxuICBwb3A8VD4obiA9IDEpOiBUIHtcbiAgICBsZXQgdG9wID0gdGhpcy5zdGFja1t0aGlzLnNwXSBhcyBUO1xuICAgIHRoaXMuc3AgLT0gbjtcbiAgICByZXR1cm4gdG9wO1xuICB9XG5cbiAgcGVlazxUPigpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5zdGFja1t0aGlzLnNwXSBhcyBUO1xuICB9XG5cbiAgZnJvbUJhc2U8VD4ob2Zmc2V0OiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5zdGFja1t0aGlzLmZwIC0gb2Zmc2V0XSBhcyBUO1xuICB9XG5cbiAgZnJvbVRvcDxUPihvZmZzZXQ6IG51bWJlcik6IFQge1xuICAgIHJldHVybiB0aGlzLnN0YWNrW3RoaXMuc3AgLSBvZmZzZXRdIGFzIFQ7XG4gIH1cblxuICBjYXB0dXJlKGl0ZW1zOiBudW1iZXIpOiBDYXB0dXJlZFN0YWNrIHtcbiAgICBsZXQgZW5kID0gdGhpcy5zcCArIDE7XG4gICAgbGV0IHN0YXJ0ID0gZW5kIC0gaXRlbXM7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2suc2xpY2Uoc3RhcnQsIGVuZCk7XG4gIH1cblxuICB0b0FycmF5KCkge1xuICAgIHJldHVybiB0aGlzLnN0YWNrLnNsaWNlKHRoaXMuZnAsIHRoaXMuc3AgKyAxKTtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBJdGVyYXRvclJlc3VsdDxUPiA9IHtcbiAgZG9uZTogZmFsc2U7XG4gIHZhbHVlOiBudWxsO1xufSB8IHtcbiAgZG9uZTogdHJ1ZTtcbiAgdmFsdWU6IFQ7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWTSBpbXBsZW1lbnRzIFB1YmxpY1ZNIHtcbiAgcHJpdmF0ZSBkeW5hbWljU2NvcGVTdGFjayA9IG5ldyBTdGFjazxEeW5hbWljU2NvcGU+KCk7XG4gIHByaXZhdGUgc2NvcGVTdGFjayA9IG5ldyBTdGFjazxTY29wZT4oKTtcbiAgcHVibGljIHVwZGF0aW5nT3Bjb2RlU3RhY2sgPSBuZXcgU3RhY2s8TGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4+KCk7XG4gIHB1YmxpYyBjYWNoZUdyb3VwcyA9IG5ldyBTdGFjazxPcHRpb248VXBkYXRpbmdPcGNvZGU+PigpO1xuICBwdWJsaWMgbGlzdEJsb2NrU3RhY2sgPSBuZXcgU3RhY2s8TGlzdEJsb2NrT3Bjb2RlPigpO1xuICBwdWJsaWMgY29uc3RhbnRzOiBDb25zdGFudHM7XG5cbiAgcHVibGljIHN0YWNrID0gRXZhbHVhdGlvblN0YWNrLmVtcHR5KCk7XG5cbiAgLyoqIFJlZ2lzdGVycyAqKi9cblxuICBwcml2YXRlIHBjID0gLTE7XG4gIHByaXZhdGUgcmEgPSAtMTtcblxuICBwcml2YXRlIGdldCBmcCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnN0YWNrLmZwO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXQgZnAoZnA6IG51bWJlcikge1xuICAgIHRoaXMuc3RhY2suZnAgPSBmcDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHNwKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2suc3A7XG4gIH1cblxuICBwcml2YXRlIHNldCBzcChzcDogbnVtYmVyKSB7XG4gICAgdGhpcy5zdGFjay5zcCA9IHNwO1xuICB9XG5cbiAgcHVibGljIHMwOiBhbnkgPSBudWxsO1xuICBwdWJsaWMgczE6IGFueSA9IG51bGw7XG4gIHB1YmxpYyB0MDogYW55ID0gbnVsbDtcbiAgcHVibGljIHQxOiBhbnkgPSBudWxsO1xuXG4gIC8vIEZldGNoIGEgdmFsdWUgZnJvbSBhIHJlZ2lzdGVyIG9udG8gdGhlIHN0YWNrXG4gIGZldGNoKHJlZ2lzdGVyOiBSZWdpc3Rlcikge1xuICAgIHRoaXMuc3RhY2sucHVzaCh0aGlzW1JlZ2lzdGVyW3JlZ2lzdGVyXV0pO1xuICB9XG5cbiAgLy8gTG9hZCBhIHZhbHVlIGZyb20gdGhlIHN0YWNrIGludG8gYSByZWdpc3RlclxuICBsb2FkKHJlZ2lzdGVyOiBSZWdpc3Rlcikge1xuICAgIHRoaXNbUmVnaXN0ZXJbcmVnaXN0ZXJdXSA9IHRoaXMuc3RhY2sucG9wKCk7XG4gIH1cblxuICAvLyBGZXRjaCBhIHZhbHVlIGZyb20gYSByZWdpc3RlclxuICBmZXRjaFZhbHVlPFQ+KHJlZ2lzdGVyOiBSZWdpc3Rlcik6IFQge1xuICAgIHJldHVybiB0aGlzW1JlZ2lzdGVyW3JlZ2lzdGVyXV07XG4gIH1cblxuICAvLyBMb2FkIGEgdmFsdWUgaW50byBhIHJlZ2lzdGVyXG4gIGxvYWRWYWx1ZTxUPihyZWdpc3RlcjogUmVnaXN0ZXIsIHZhbHVlOiBUKSB7XG4gICAgdGhpc1tSZWdpc3RlcltyZWdpc3Rlcl1dID0gdmFsdWU7XG4gIH1cblxuICAvLyBTdGFydCBhIG5ldyBmcmFtZSBhbmQgc2F2ZSAkcmEgYW5kICRmcCBvbiB0aGUgc3RhY2tcbiAgcHVzaEZyYW1lKCkge1xuICAgIHRoaXMuc3RhY2sucHVzaCh0aGlzLnJhKTtcbiAgICB0aGlzLnN0YWNrLnB1c2godGhpcy5mcCk7XG4gICAgdGhpcy5mcCA9IHRoaXMuc3AgLSAxO1xuICAgIC8vIHRoaXMuZnAgPSB0aGlzLnNwICsgMTtcbiAgfVxuXG4gIC8vIFJlc3RvcmUgJHJhLCAkc3AgYW5kICRmcFxuICBwb3BGcmFtZSgpIHtcbiAgICB0aGlzLnNwID0gdGhpcy5mcCAtIDE7XG4gICAgdGhpcy5yYSA9IHRoaXMuc3RhY2suZnJvbUJhc2U8bnVtYmVyPigwKTtcbiAgICB0aGlzLmZwID0gdGhpcy5zdGFjay5mcm9tQmFzZTxudW1iZXI+KC0xKTtcbiAgfVxuXG4gIC8vIEp1bXAgdG8gYW4gYWRkcmVzcyBpbiBgcHJvZ3JhbWBcbiAgZ290byhwYzogbnVtYmVyKSB7XG4gICAgdGhpcy5wYyA9IHBjO1xuICB9XG5cbiAgLy8gU2F2ZSAkcGMgaW50byAkcmEsIHRoZW4ganVtcCB0byBhIG5ldyBhZGRyZXNzIGluIGBwcm9ncmFtYCAoamFsIGluIE1JUFMpXG4gIGNhbGwocGM6IG51bWJlcikge1xuICAgIHRoaXMucmEgPSB0aGlzLnBjO1xuICAgIHRoaXMucGMgPSBwYztcbiAgfVxuXG4gIC8vIFB1dCBhIHNwZWNpZmljIGBwcm9ncmFtYCBhZGRyZXNzIGluICRyYVxuICByZXR1cm5UbyhyYTogbnVtYmVyKSB7XG4gICAgdGhpcy5yYSA9IHJhO1xuICB9XG5cbiAgLy8gUmV0dXJuIHRvIHRoZSBgcHJvZ3JhbWAgYWRkcmVzcyBzdG9yZWQgaW4gJHJhXG4gIHJldHVybigpIHtcbiAgICB0aGlzLnBjID0gdGhpcy5yYTtcbiAgfVxuXG4gIHN0YXRpYyBpbml0aWFsKFxuICAgIGVudjogRW52aXJvbm1lbnQsXG4gICAgc2VsZjogUGF0aFJlZmVyZW5jZTxPcGFxdWU+LFxuICAgIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlLFxuICAgIGVsZW1lbnRTdGFjazogRWxlbWVudFN0YWNrLFxuICAgIHByb2dyYW06IENvbXBpbGVkRHluYW1pY1Byb2dyYW1cbiAgKSB7XG4gICAgbGV0IHNjb3BlID0gU2NvcGUucm9vdChzZWxmLCBwcm9ncmFtLnN5bWJvbFRhYmxlLnN5bWJvbHMubGVuZ3RoKTtcbiAgICBsZXQgdm0gPSBuZXcgVk0oZW52LCBzY29wZSwgZHluYW1pY1Njb3BlLCBlbGVtZW50U3RhY2spO1xuICAgIHZtLnBjID0gcHJvZ3JhbS5zdGFydDtcbiAgICB2bS51cGRhdGluZ09wY29kZVN0YWNrLnB1c2gobmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCkpO1xuICAgIHJldHVybiB2bTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBlbnY6IEVudmlyb25tZW50LFxuICAgIHNjb3BlOiBTY29wZSxcbiAgICBkeW5hbWljU2NvcGU6IER5bmFtaWNTY29wZSxcbiAgICBwcml2YXRlIGVsZW1lbnRTdGFjazogRWxlbWVudFN0YWNrLFxuICApIHtcbiAgICB0aGlzLmVudiA9IGVudjtcbiAgICB0aGlzLmNvbnN0YW50cyA9IGVudi5jb25zdGFudHM7XG4gICAgdGhpcy5lbGVtZW50U3RhY2sgPSBlbGVtZW50U3RhY2s7XG4gICAgdGhpcy5zY29wZVN0YWNrLnB1c2goc2NvcGUpO1xuICAgIHRoaXMuZHluYW1pY1Njb3BlU3RhY2sucHVzaChkeW5hbWljU2NvcGUpO1xuICB9XG5cbiAgY2FwdHVyZShhcmdzOiBudW1iZXIpOiBWTVN0YXRlIHtcbiAgICByZXR1cm4ge1xuICAgICAgZW52OiB0aGlzLmVudixcbiAgICAgIHNjb3BlOiB0aGlzLnNjb3BlKCksXG4gICAgICBkeW5hbWljU2NvcGU6IHRoaXMuZHluYW1pY1Njb3BlKCksXG4gICAgICBzdGFjazogdGhpcy5zdGFjay5jYXB0dXJlKGFyZ3MpXG4gICAgfTtcbiAgfVxuXG4gIGJlZ2luQ2FjaGVHcm91cCgpIHtcbiAgICB0aGlzLmNhY2hlR3JvdXBzLnB1c2godGhpcy51cGRhdGluZygpLnRhaWwoKSk7XG4gIH1cblxuICBjb21taXRDYWNoZUdyb3VwKCkge1xuICAgIC8vICAgICAgICBKdW1wSWZOb3RNb2RpZmllZChFTkQpXG4gICAgLy8gICAgICAgIChoZWFkKVxuICAgIC8vICAgICAgICAoLi4uLilcbiAgICAvLyAgICAgICAgKHRhaWwpXG4gICAgLy8gICAgICAgIERpZE1vZGlmeVxuICAgIC8vIEVORDogICBOb29wXG5cbiAgICBsZXQgRU5EID0gbmV3IExhYmVsT3Bjb2RlKFwiRU5EXCIpO1xuXG4gICAgbGV0IG9wY29kZXMgPSB0aGlzLnVwZGF0aW5nKCk7XG4gICAgbGV0IG1hcmtlciA9IHRoaXMuY2FjaGVHcm91cHMucG9wKCk7XG4gICAgbGV0IGhlYWQgPSBtYXJrZXIgPyBvcGNvZGVzLm5leHROb2RlKG1hcmtlcikgOiBvcGNvZGVzLmhlYWQoKTtcbiAgICBsZXQgdGFpbCA9IG9wY29kZXMudGFpbCgpO1xuICAgIGxldCB0YWcgPSBjb21iaW5lU2xpY2UobmV3IExpc3RTbGljZShoZWFkLCB0YWlsKSk7XG5cbiAgICBsZXQgZ3VhcmQgPSBuZXcgSnVtcElmTm90TW9kaWZpZWRPcGNvZGUodGFnLCBFTkQpO1xuXG4gICAgb3Bjb2Rlcy5pbnNlcnRCZWZvcmUoZ3VhcmQsIGhlYWQpO1xuICAgIG9wY29kZXMuYXBwZW5kKG5ldyBEaWRNb2RpZnlPcGNvZGUoZ3VhcmQpKTtcbiAgICBvcGNvZGVzLmFwcGVuZChFTkQpO1xuICB9XG5cbiAgZW50ZXIoYXJnczogbnVtYmVyKSB7XG4gICAgbGV0IHVwZGF0aW5nID0gbmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCk7XG5cbiAgICBsZXQgc3RhdGUgPSB0aGlzLmNhcHR1cmUoYXJncyk7XG4gICAgbGV0IHRyYWNrZXIgPSB0aGlzLmVsZW1lbnRzKCkucHVzaFVwZGF0YWJsZUJsb2NrKCk7XG5cbiAgICBsZXQgdHJ5T3Bjb2RlID0gbmV3IFRyeU9wY29kZSh0aGlzLnBjLCBzdGF0ZSwgdHJhY2tlciwgdXBkYXRpbmcpO1xuXG4gICAgdGhpcy5kaWRFbnRlcih0cnlPcGNvZGUpO1xuICB9XG5cbiAgaXRlcmF0ZShtZW1vOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIHZhbHVlOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIHVwZGF0aW5nID0gbmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCkpOiBUcnlPcGNvZGUge1xuICAgIGxldCBzdGFjayA9IHRoaXMuc3RhY2s7XG4gICAgc3RhY2sucHVzaCh2YWx1ZSk7XG4gICAgc3RhY2sucHVzaChtZW1vKTtcblxuICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZSgyKTtcbiAgICBsZXQgdHJhY2tlciA9IHRoaXMuZWxlbWVudHMoKS5wdXNoVXBkYXRhYmxlQmxvY2soKTtcblxuICAgIC8vIGxldCBpcCA9IHRoaXMuaXA7XG4gICAgLy8gdGhpcy5pcCA9IGVuZCArIDQ7XG4gICAgLy8gdGhpcy5mcmFtZXMucHVzaChpcCk7XG5cbiAgICByZXR1cm4gbmV3IFRyeU9wY29kZSh0aGlzLnBjLCBzdGF0ZSwgdHJhY2tlciwgdXBkYXRpbmcpO1xuICB9XG5cbiAgZW50ZXJJdGVtKGtleTogc3RyaW5nLCBvcGNvZGU6IFRyeU9wY29kZSkge1xuICAgIHRoaXMubGlzdEJsb2NrKCkubWFwW2tleV0gPSBvcGNvZGU7XG4gICAgdGhpcy5kaWRFbnRlcihvcGNvZGUpO1xuICB9XG5cbiAgZW50ZXJMaXN0KHN0YXJ0OiBudW1iZXIpIHtcbiAgICBsZXQgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdDxCbG9ja09wY29kZT4oKTtcblxuICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZSgwKTtcbiAgICBsZXQgdHJhY2tlciA9IHRoaXMuZWxlbWVudHMoKS5wdXNoQmxvY2tMaXN0KHVwZGF0aW5nKTtcbiAgICBsZXQgYXJ0aWZhY3RzID0gdGhpcy5zdGFjay5wZWVrPFJlZmVyZW5jZUl0ZXJhdG9yPigpLmFydGlmYWN0cztcblxuICAgIGxldCBvcGNvZGUgPSBuZXcgTGlzdEJsb2NrT3Bjb2RlKHN0YXJ0LCBzdGF0ZSwgdHJhY2tlciwgdXBkYXRpbmcsIGFydGlmYWN0cyk7XG5cbiAgICB0aGlzLmxpc3RCbG9ja1N0YWNrLnB1c2gob3Bjb2RlKTtcblxuICAgIHRoaXMuZGlkRW50ZXIob3Bjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgZGlkRW50ZXIob3Bjb2RlOiBCbG9ja09wY29kZSkge1xuICAgIHRoaXMudXBkYXRlV2l0aChvcGNvZGUpO1xuICAgIHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5wdXNoKG9wY29kZS5jaGlsZHJlbik7XG4gIH1cblxuICBleGl0KCkge1xuICAgIHRoaXMuZWxlbWVudHMoKS5wb3BCbG9jaygpO1xuICAgIHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5wb3AoKTtcblxuICAgIGxldCBwYXJlbnQgPSB0aGlzLnVwZGF0aW5nKCkudGFpbCgpIGFzIEJsb2NrT3Bjb2RlO1xuXG4gICAgcGFyZW50LmRpZEluaXRpYWxpemVDaGlsZHJlbigpO1xuICB9XG5cbiAgZXhpdExpc3QoKSB7XG4gICAgdGhpcy5leGl0KCk7XG4gICAgdGhpcy5saXN0QmxvY2tTdGFjay5wb3AoKTtcbiAgfVxuXG4gIHVwZGF0ZVdpdGgob3Bjb2RlOiBVcGRhdGluZ09wY29kZSkge1xuICAgIHRoaXMudXBkYXRpbmcoKS5hcHBlbmQob3Bjb2RlKTtcbiAgfVxuXG4gIGxpc3RCbG9jaygpOiBMaXN0QmxvY2tPcGNvZGUge1xuICAgIHJldHVybiBleHBlY3QodGhpcy5saXN0QmxvY2tTdGFjay5jdXJyZW50LCAnZXhwZWN0ZWQgYSBsaXN0IGJsb2NrJyk7XG4gIH1cblxuICB1cGRhdGluZygpOiBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPiB7XG4gICAgcmV0dXJuIGV4cGVjdCh0aGlzLnVwZGF0aW5nT3Bjb2RlU3RhY2suY3VycmVudCwgJ2V4cGVjdGVkIHVwZGF0aW5nIG9wY29kZSBvbiB0aGUgdXBkYXRpbmcgb3Bjb2RlIHN0YWNrJyk7XG4gIH1cblxuICBlbGVtZW50cygpOiBFbGVtZW50U3RhY2sge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRTdGFjaztcbiAgfVxuXG4gIHNjb3BlKCk6IFNjb3BlIHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXMuc2NvcGVTdGFjay5jdXJyZW50LCAnZXhwZWN0ZWQgc2NvcGUgb24gdGhlIHNjb3BlIHN0YWNrJyk7XG4gIH1cblxuICBkeW5hbWljU2NvcGUoKTogRHluYW1pY1Njb3BlIHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXMuZHluYW1pY1Njb3BlU3RhY2suY3VycmVudCwgJ2V4cGVjdGVkIGR5bmFtaWMgc2NvcGUgb24gdGhlIGR5bmFtaWMgc2NvcGUgc3RhY2snKTtcbiAgfVxuXG4gIHB1c2hDaGlsZFNjb3BlKCkge1xuICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKHRoaXMuc2NvcGUoKS5jaGlsZCgpKTtcbiAgfVxuXG4gIHB1c2hDYWxsZXJTY29wZShjaGlsZFNjb3BlID0gZmFsc2UpIHtcbiAgICBsZXQgY2FsbGVyU2NvcGUgPSBleHBlY3QodGhpcy5zY29wZSgpLmdldENhbGxlclNjb3BlKCksICdwdXNoQ2FsbGVyU2NvcGUgaXMgY2FsbGVkIHdoZW4gYSBjYWxsZXIgc2NvcGUgaXMgcHJlc2VudCcpO1xuICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKGNoaWxkU2NvcGUgPyBjYWxsZXJTY29wZS5jaGlsZCgpIDogY2FsbGVyU2NvcGUpO1xuICB9XG5cbiAgcHVzaER5bmFtaWNTY29wZSgpOiBEeW5hbWljU2NvcGUge1xuICAgIGxldCBjaGlsZCA9IHRoaXMuZHluYW1pY1Njb3BlKCkuY2hpbGQoKTtcbiAgICB0aGlzLmR5bmFtaWNTY29wZVN0YWNrLnB1c2goY2hpbGQpO1xuICAgIHJldHVybiBjaGlsZDtcbiAgfVxuXG4gIHB1c2hSb290U2NvcGUoc2l6ZTogbnVtYmVyLCBiaW5kQ2FsbGVyOiBib29sZWFuKTogU2NvcGUge1xuICAgIGxldCBzY29wZSA9IFNjb3BlLnNpemVkKHNpemUpO1xuICAgIGlmIChiaW5kQ2FsbGVyKSBzY29wZS5iaW5kQ2FsbGVyU2NvcGUodGhpcy5zY29wZSgpKTtcbiAgICB0aGlzLnNjb3BlU3RhY2sucHVzaChzY29wZSk7XG4gICAgcmV0dXJuIHNjb3BlO1xuICB9XG5cbiAgcG9wU2NvcGUoKSB7XG4gICAgdGhpcy5zY29wZVN0YWNrLnBvcCgpO1xuICB9XG5cbiAgcG9wRHluYW1pY1Njb3BlKCkge1xuICAgIHRoaXMuZHluYW1pY1Njb3BlU3RhY2sucG9wKCk7XG4gIH1cblxuICBuZXdEZXN0cm95YWJsZShkOiBEZXN0cm95YWJsZSkge1xuICAgIHRoaXMuZWxlbWVudHMoKS5uZXdEZXN0cm95YWJsZShkKTtcbiAgfVxuXG4gIC8vLyBTQ09QRSBIRUxQRVJTXG5cbiAgZ2V0U2VsZigpOiBQYXRoUmVmZXJlbmNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnNjb3BlKCkuZ2V0U2VsZigpO1xuICB9XG5cbiAgcmVmZXJlbmNlRm9yU3ltYm9sKHN5bWJvbDogbnVtYmVyKTogUGF0aFJlZmVyZW5jZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5zY29wZSgpLmdldFN5bWJvbChzeW1ib2wpO1xuICB9XG5cbiAgLy8vIEVYRUNVVElPTlxuXG4gIGV4ZWN1dGUoc3RhcnQ6IG51bWJlciwgaW5pdGlhbGl6ZT86ICh2bTogVk0pID0+IHZvaWQpOiBSZW5kZXJSZXN1bHQge1xuICAgIHRoaXMucGMgPSBzdGFydDtcblxuICAgIGlmIChpbml0aWFsaXplKSBpbml0aWFsaXplKHRoaXMpO1xuXG4gICAgbGV0IHJlc3VsdDogSXRlcmF0b3JSZXN1bHQ8UmVuZGVyUmVzdWx0PjtcblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICByZXN1bHQgPSB0aGlzLm5leHQoKTtcbiAgICAgIGlmIChyZXN1bHQuZG9uZSkgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdC52YWx1ZSBhcyBSZW5kZXJSZXN1bHQ7XG4gIH1cblxuICBuZXh0KCk6IEl0ZXJhdG9yUmVzdWx0PFJlbmRlclJlc3VsdD4ge1xuICAgIGxldCB7IGVudiwgdXBkYXRpbmdPcGNvZGVTdGFjaywgZWxlbWVudFN0YWNrIH0gPSB0aGlzO1xuICAgIGxldCBvcGNvZGU6IE9wdGlvbjxPcGNvZGU+O1xuXG4gICAgaWYgKG9wY29kZSA9IHRoaXMubmV4dFN0YXRlbWVudChlbnYpKSB7XG4gICAgICBBUFBFTkRfT1BDT0RFUy5ldmFsdWF0ZSh0aGlzLCBvcGNvZGUsIG9wY29kZS50eXBlKTtcbiAgICAgIHJldHVybiB7IGRvbmU6IGZhbHNlLCB2YWx1ZTogbnVsbCB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkb25lOiB0cnVlLFxuICAgICAgdmFsdWU6IG5ldyBSZW5kZXJSZXN1bHQoXG4gICAgICAgIGVudixcbiAgICAgICAgZXhwZWN0KHVwZGF0aW5nT3Bjb2RlU3RhY2sucG9wKCksICd0aGVyZSBzaG91bGQgYmUgYSBmaW5hbCB1cGRhdGluZyBvcGNvZGUgc3RhY2snKSxcbiAgICAgICAgZWxlbWVudFN0YWNrLnBvcEJsb2NrKClcbiAgICAgIClcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBuZXh0U3RhdGVtZW50KGVudjogRW52aXJvbm1lbnQpOiBPcHRpb248T3Bjb2RlPiB7XG4gICAgbGV0IHsgcGMgfSA9IHRoaXM7XG5cbiAgICBpZiAocGMgPT09IC0xKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgcHJvZ3JhbSA9IGVudi5wcm9ncmFtO1xuICAgIHRoaXMucGMgKz0gNDtcbiAgICByZXR1cm4gcHJvZ3JhbS5vcGNvZGUocGMpO1xuICB9XG5cbiAgZXZhbHVhdGVPcGNvZGUob3Bjb2RlOiBPcGNvZGUpIHtcbiAgICBBUFBFTkRfT1BDT0RFUy5ldmFsdWF0ZSh0aGlzLCBvcGNvZGUsIG9wY29kZS50eXBlKTtcbiAgfVxuXG4gIGJpbmREeW5hbWljU2NvcGUobmFtZXM6IENvbnN0YW50U3RyaW5nW10pIHtcbiAgICBsZXQgc2NvcGUgPSB0aGlzLmR5bmFtaWNTY29wZSgpO1xuXG4gICAgZm9yKGxldCBpPW5hbWVzLmxlbmd0aCAtIDE7IGk+PTA7IGktLSkge1xuICAgICAgbGV0IG5hbWUgPSB0aGlzLmNvbnN0YW50cy5nZXRTdHJpbmcobmFtZXNbaV0pO1xuICAgICAgc2NvcGUuc2V0KG5hbWUsIHRoaXMuc3RhY2sucG9wPFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPj4oKSk7XG4gICAgfVxuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwZW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBwZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdEMsT0FBTyxFQUFFLEtBQUssRUFBcUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRSxPQUFPLEVBQXVCLEtBQUssRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBNEQsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFNUcsT0FBTyxFQUFFLFdBQVcsRUFBRSx1QkFBdUIsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRixPQUFPLEVBQVcsZUFBZSxFQUFFLFNBQVMsRUFBZSxNQUFNLFVBQVUsQ0FBQztBQUM1RSxPQUFPLFlBQVksTUFBTSxpQkFBaUIsQ0FBQztBQUUzQyxPQUFPLEVBQ0wsY0FBYyxFQUVmLE1BQU0sWUFBWSxDQUFDO0FBZ0JwQixNQUFNO0lBU0osWUFBb0IsS0FBZSxFQUFTLEVBQVUsRUFBUyxFQUFVO1FBQXJELFVBQUssR0FBTCxLQUFLLENBQVU7UUFBUyxPQUFFLEdBQUYsRUFBRSxDQUFRO1FBQVMsT0FBRSxHQUFGLEVBQUUsQ0FBUTtRQUN2RSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFWRCxNQUFNLENBQUMsS0FBSztRQUNWLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBdUI7UUFDcEMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBTUQs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QyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDZCxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELElBQUksT0FBTyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUM7UUFDMUIsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDYixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsY0FBYyxDQUFDLE1BQWM7UUFDM0IsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBdUI7UUFDdEMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRWhDLEdBQUcsQ0FBQSxDQUFDLElBQUksQ0FBQyxHQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUN0QyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBa0MsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWdpc3RlciB9IGZyb20gJy4uL29wY29kZXMnO1xuaW1wb3J0IHsgU2NvcGUsIER5bmFtaWNTY29wZSwgRW52aXJvbm1lbnQsIE9wY29kZSB9IGZyb20gJy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IEVsZW1lbnRTdGFjayB9IGZyb20gJy4uL2J1aWxkZXInO1xuaW1wb3J0IHsgT3B0aW9uLCBEZXN0cm95YWJsZSwgU3RhY2ssIExpbmtlZExpc3QsIExpc3RTbGljZSwgT3BhcXVlIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBSZWZlcmVuY2VJdGVyYXRvciwgUGF0aFJlZmVyZW5jZSwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgY29tYmluZVNsaWNlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IENvbXBpbGVkRHluYW1pY1Byb2dyYW0gfSBmcm9tICcuLi9jb21waWxlZC9ibG9ja3MnO1xuaW1wb3J0IHsgTGFiZWxPcGNvZGUsIEp1bXBJZk5vdE1vZGlmaWVkT3Bjb2RlLCBEaWRNb2RpZnlPcGNvZGUgfSBmcm9tICcuLi9jb21waWxlZC9vcGNvZGVzL3ZtJztcbmltcG9ydCB7IFZNU3RhdGUsIExpc3RCbG9ja09wY29kZSwgVHJ5T3Bjb2RlLCBCbG9ja09wY29kZSB9IGZyb20gJy4vdXBkYXRlJztcbmltcG9ydCBSZW5kZXJSZXN1bHQgZnJvbSAnLi9yZW5kZXItcmVzdWx0JztcblxuaW1wb3J0IHtcbiAgQVBQRU5EX09QQ09ERVMsXG4gIFVwZGF0aW5nT3Bjb2RlXG59IGZyb20gJy4uL29wY29kZXMnO1xuXG5pbXBvcnQge1xuICBDb25zdGFudHMsXG4gIENvbnN0YW50U3RyaW5nXG59IGZyb20gJy4uL2Vudmlyb25tZW50L2NvbnN0YW50cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGljVk0ge1xuICBlbnY6IEVudmlyb25tZW50O1xuICBkeW5hbWljU2NvcGUoKTogRHluYW1pY1Njb3BlO1xuICBnZXRTZWxmKCk6IFBhdGhSZWZlcmVuY2U8T3BhcXVlPjtcbiAgbmV3RGVzdHJveWFibGUoZDogRGVzdHJveWFibGUpOiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBDYXB0dXJlZFN0YWNrID0gT3BhcXVlW107XG5cbmV4cG9ydCBjbGFzcyBFdmFsdWF0aW9uU3RhY2sge1xuICBzdGF0aWMgZW1wdHkoKTogRXZhbHVhdGlvblN0YWNrIHtcbiAgICByZXR1cm4gbmV3IHRoaXMoW10sIDAsIC0xKTtcbiAgfVxuXG4gIHN0YXRpYyByZXN0b3JlKHNuYXBzaG90OiBDYXB0dXJlZFN0YWNrKTogRXZhbHVhdGlvblN0YWNrIHtcbiAgICByZXR1cm4gbmV3IHRoaXMoc25hcHNob3Quc2xpY2UoKSwgMCwgc25hcHNob3QubGVuZ3RoIC0gMSk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0YWNrOiBPcGFxdWVbXSwgcHVibGljIGZwOiBudW1iZXIsIHB1YmxpYyBzcDogbnVtYmVyKSB7XG4gICAgT2JqZWN0LnNlYWwodGhpcyk7XG4gIH1cblxuICBpc0VtcHR5KCkge1xuICAgIHJldHVybiB0aGlzLnNwID09PSAtMTtcbiAgfVxuXG4gIHB1c2godmFsdWU6IE9wYXF1ZSk6IHZvaWQge1xuICAgIHRoaXMuc3RhY2tbKyt0aGlzLnNwXSA9IHZhbHVlO1xuICB9XG5cbiAgZHVwKHBvc2l0aW9uID0gdGhpcy5zcCk6IHZvaWQge1xuICAgIHRoaXMucHVzaCh0aGlzLnN0YWNrW3Bvc2l0aW9uXSk7XG4gIH1cblxuICBwb3A8VD4obiA9IDEpOiBUIHtcbiAgICBsZXQgdG9wID0gdGhpcy5zdGFja1t0aGlzLnNwXSBhcyBUO1xuICAgIHRoaXMuc3AgLT0gbjtcbiAgICByZXR1cm4gdG9wO1xuICB9XG5cbiAgcGVlazxUPigpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5zdGFja1t0aGlzLnNwXSBhcyBUO1xuICB9XG5cbiAgZnJvbUJhc2U8VD4ob2Zmc2V0OiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5zdGFja1t0aGlzLmZwIC0gb2Zmc2V0XSBhcyBUO1xuICB9XG5cbiAgZnJvbVRvcDxUPihvZmZzZXQ6IG51bWJlcik6IFQge1xuICAgIHJldHVybiB0aGlzLnN0YWNrW3RoaXMuc3AgLSBvZmZzZXRdIGFzIFQ7XG4gIH1cblxuICBjYXB0dXJlKGl0ZW1zOiBudW1iZXIpOiBDYXB0dXJlZFN0YWNrIHtcbiAgICBsZXQgZW5kID0gdGhpcy5zcCArIDE7XG4gICAgbGV0IHN0YXJ0ID0gZW5kIC0gaXRlbXM7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2suc2xpY2Uoc3RhcnQsIGVuZCk7XG4gIH1cblxuICB0b0FycmF5KCkge1xuICAgIHJldHVybiB0aGlzLnN0YWNrLnNsaWNlKHRoaXMuZnAsIHRoaXMuc3AgKyAxKTtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBJdGVyYXRvclJlc3VsdDxUPiA9IHtcbiAgZG9uZTogZmFsc2U7XG4gIHZhbHVlOiBudWxsO1xufSB8IHtcbiAgZG9uZTogdHJ1ZTtcbiAgdmFsdWU6IFQ7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWTSBpbXBsZW1lbnRzIFB1YmxpY1ZNIHtcbiAgcHJpdmF0ZSBkeW5hbWljU2NvcGVTdGFjayA9IG5ldyBTdGFjazxEeW5hbWljU2NvcGU+KCk7XG4gIHByaXZhdGUgc2NvcGVTdGFjayA9IG5ldyBTdGFjazxTY29wZT4oKTtcbiAgcHVibGljIHVwZGF0aW5nT3Bjb2RlU3RhY2sgPSBuZXcgU3RhY2s8TGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4+KCk7XG4gIHB1YmxpYyBjYWNoZUdyb3VwcyA9IG5ldyBTdGFjazxPcHRpb248VXBkYXRpbmdPcGNvZGU+PigpO1xuICBwdWJsaWMgbGlzdEJsb2NrU3RhY2sgPSBuZXcgU3RhY2s8TGlzdEJsb2NrT3Bjb2RlPigpO1xuICBwdWJsaWMgY29uc3RhbnRzOiBDb25zdGFudHM7XG5cbiAgcHVibGljIHN0YWNrID0gRXZhbHVhdGlvblN0YWNrLmVtcHR5KCk7XG5cbiAgLyoqIFJlZ2lzdGVycyAqKi9cblxuICBwcml2YXRlIHBjID0gLTE7XG4gIHByaXZhdGUgcmEgPSAtMTtcblxuICBwcml2YXRlIGdldCBmcCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnN0YWNrLmZwO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXQgZnAoZnA6IG51bWJlcikge1xuICAgIHRoaXMuc3RhY2suZnAgPSBmcDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHNwKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2suc3A7XG4gIH1cblxuICBwcml2YXRlIHNldCBzcChzcDogbnVtYmVyKSB7XG4gICAgdGhpcy5zdGFjay5zcCA9IHNwO1xuICB9XG5cbiAgcHVibGljIHMwOiBhbnkgPSBudWxsO1xuICBwdWJsaWMgczE6IGFueSA9IG51bGw7XG4gIHB1YmxpYyB0MDogYW55ID0gbnVsbDtcbiAgcHVibGljIHQxOiBhbnkgPSBudWxsO1xuXG4gIC8vIEZldGNoIGEgdmFsdWUgZnJvbSBhIHJlZ2lzdGVyIG9udG8gdGhlIHN0YWNrXG4gIGZldGNoKHJlZ2lzdGVyOiBSZWdpc3Rlcikge1xuICAgIHRoaXMuc3RhY2sucHVzaCh0aGlzW1JlZ2lzdGVyW3JlZ2lzdGVyXV0pO1xuICB9XG5cbiAgLy8gTG9hZCBhIHZhbHVlIGZyb20gdGhlIHN0YWNrIGludG8gYSByZWdpc3RlclxuICBsb2FkKHJlZ2lzdGVyOiBSZWdpc3Rlcikge1xuICAgIHRoaXNbUmVnaXN0ZXJbcmVnaXN0ZXJdXSA9IHRoaXMuc3RhY2sucG9wKCk7XG4gIH1cblxuICAvLyBGZXRjaCBhIHZhbHVlIGZyb20gYSByZWdpc3RlclxuICBmZXRjaFZhbHVlPFQ+KHJlZ2lzdGVyOiBSZWdpc3Rlcik6IFQge1xuICAgIHJldHVybiB0aGlzW1JlZ2lzdGVyW3JlZ2lzdGVyXV07XG4gIH1cblxuICAvLyBMb2FkIGEgdmFsdWUgaW50byBhIHJlZ2lzdGVyXG4gIGxvYWRWYWx1ZTxUPihyZWdpc3RlcjogUmVnaXN0ZXIsIHZhbHVlOiBUKSB7XG4gICAgdGhpc1tSZWdpc3RlcltyZWdpc3Rlcl1dID0gdmFsdWU7XG4gIH1cblxuICAvLyBTdGFydCBhIG5ldyBmcmFtZSBhbmQgc2F2ZSAkcmEgYW5kICRmcCBvbiB0aGUgc3RhY2tcbiAgcHVzaEZyYW1lKCkge1xuICAgIHRoaXMuc3RhY2sucHVzaCh0aGlzLnJhKTtcbiAgICB0aGlzLnN0YWNrLnB1c2godGhpcy5mcCk7XG4gICAgdGhpcy5mcCA9IHRoaXMuc3AgLSAxO1xuICAgIC8vIHRoaXMuZnAgPSB0aGlzLnNwICsgMTtcbiAgfVxuXG4gIC8vIFJlc3RvcmUgJHJhLCAkc3AgYW5kICRmcFxuICBwb3BGcmFtZSgpIHtcbiAgICB0aGlzLnNwID0gdGhpcy5mcCAtIDE7XG4gICAgdGhpcy5yYSA9IHRoaXMuc3RhY2suZnJvbUJhc2U8bnVtYmVyPigwKTtcbiAgICB0aGlzLmZwID0gdGhpcy5zdGFjay5mcm9tQmFzZTxudW1iZXI+KC0xKTtcbiAgfVxuXG4gIC8vIEp1bXAgdG8gYW4gYWRkcmVzcyBpbiBgcHJvZ3JhbWBcbiAgZ290byhwYzogbnVtYmVyKSB7XG4gICAgdGhpcy5wYyA9IHBjO1xuICB9XG5cbiAgLy8gU2F2ZSAkcGMgaW50byAkcmEsIHRoZW4ganVtcCB0byBhIG5ldyBhZGRyZXNzIGluIGBwcm9ncmFtYCAoamFsIGluIE1JUFMpXG4gIGNhbGwocGM6IG51bWJlcikge1xuICAgIHRoaXMucmEgPSB0aGlzLnBjO1xuICAgIHRoaXMucGMgPSBwYztcbiAgfVxuXG4gIC8vIFB1dCBhIHNwZWNpZmljIGBwcm9ncmFtYCBhZGRyZXNzIGluICRyYVxuICByZXR1cm5UbyhyYTogbnVtYmVyKSB7XG4gICAgdGhpcy5yYSA9IHJhO1xuICB9XG5cbiAgLy8gUmV0dXJuIHRvIHRoZSBgcHJvZ3JhbWAgYWRkcmVzcyBzdG9yZWQgaW4gJHJhXG4gIHJldHVybigpIHtcbiAgICB0aGlzLnBjID0gdGhpcy5yYTtcbiAgfVxuXG4gIHN0YXRpYyBpbml0aWFsKFxuICAgIGVudjogRW52aXJvbm1lbnQsXG4gICAgc2VsZjogUGF0aFJlZmVyZW5jZTxPcGFxdWU+LFxuICAgIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlLFxuICAgIGVsZW1lbnRTdGFjazogRWxlbWVudFN0YWNrLFxuICAgIHByb2dyYW06IENvbXBpbGVkRHluYW1pY1Byb2dyYW1cbiAgKSB7XG4gICAgbGV0IHNjb3BlID0gU2NvcGUucm9vdChzZWxmLCBwcm9ncmFtLnN5bWJvbFRhYmxlLnN5bWJvbHMubGVuZ3RoKTtcbiAgICBsZXQgdm0gPSBuZXcgVk0oZW52LCBzY29wZSwgZHluYW1pY1Njb3BlLCBlbGVtZW50U3RhY2spO1xuICAgIHZtLnBjID0gcHJvZ3JhbS5zdGFydDtcbiAgICB2bS51cGRhdGluZ09wY29kZVN0YWNrLnB1c2gobmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCkpO1xuICAgIHJldHVybiB2bTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBlbnY6IEVudmlyb25tZW50LFxuICAgIHNjb3BlOiBTY29wZSxcbiAgICBkeW5hbWljU2NvcGU6IER5bmFtaWNTY29wZSxcbiAgICBwcml2YXRlIGVsZW1lbnRTdGFjazogRWxlbWVudFN0YWNrLFxuICApIHtcbiAgICB0aGlzLmVudiA9IGVudjtcbiAgICB0aGlzLmNvbnN0YW50cyA9IGVudi5jb25zdGFudHM7XG4gICAgdGhpcy5lbGVtZW50U3RhY2sgPSBlbGVtZW50U3RhY2s7XG4gICAgdGhpcy5zY29wZVN0YWNrLnB1c2goc2NvcGUpO1xuICAgIHRoaXMuZHluYW1pY1Njb3BlU3RhY2sucHVzaChkeW5hbWljU2NvcGUpO1xuICB9XG5cbiAgY2FwdHVyZShhcmdzOiBudW1iZXIpOiBWTVN0YXRlIHtcbiAgICByZXR1cm4ge1xuICAgICAgZW52OiB0aGlzLmVudixcbiAgICAgIHNjb3BlOiB0aGlzLnNjb3BlKCksXG4gICAgICBkeW5hbWljU2NvcGU6IHRoaXMuZHluYW1pY1Njb3BlKCksXG4gICAgICBzdGFjazogdGhpcy5zdGFjay5jYXB0dXJlKGFyZ3MpXG4gICAgfTtcbiAgfVxuXG4gIGJlZ2luQ2FjaGVHcm91cCgpIHtcbiAgICB0aGlzLmNhY2hlR3JvdXBzLnB1c2godGhpcy51cGRhdGluZygpLnRhaWwoKSk7XG4gIH1cblxuICBjb21taXRDYWNoZUdyb3VwKCkge1xuICAgIC8vICAgICAgICBKdW1wSWZOb3RNb2RpZmllZChFTkQpXG4gICAgLy8gICAgICAgIChoZWFkKVxuICAgIC8vICAgICAgICAoLi4uLilcbiAgICAvLyAgICAgICAgKHRhaWwpXG4gICAgLy8gICAgICAgIERpZE1vZGlmeVxuICAgIC8vIEVORDogICBOb29wXG5cbiAgICBsZXQgRU5EID0gbmV3IExhYmVsT3Bjb2RlKFwiRU5EXCIpO1xuXG4gICAgbGV0IG9wY29kZXMgPSB0aGlzLnVwZGF0aW5nKCk7XG4gICAgbGV0IG1hcmtlciA9IHRoaXMuY2FjaGVHcm91cHMucG9wKCk7XG4gICAgbGV0IGhlYWQgPSBtYXJrZXIgPyBvcGNvZGVzLm5leHROb2RlKG1hcmtlcikgOiBvcGNvZGVzLmhlYWQoKTtcbiAgICBsZXQgdGFpbCA9IG9wY29kZXMudGFpbCgpO1xuICAgIGxldCB0YWcgPSBjb21iaW5lU2xpY2UobmV3IExpc3RTbGljZShoZWFkLCB0YWlsKSk7XG5cbiAgICBsZXQgZ3VhcmQgPSBuZXcgSnVtcElmTm90TW9kaWZpZWRPcGNvZGUodGFnLCBFTkQpO1xuXG4gICAgb3Bjb2Rlcy5pbnNlcnRCZWZvcmUoZ3VhcmQsIGhlYWQpO1xuICAgIG9wY29kZXMuYXBwZW5kKG5ldyBEaWRNb2RpZnlPcGNvZGUoZ3VhcmQpKTtcbiAgICBvcGNvZGVzLmFwcGVuZChFTkQpO1xuICB9XG5cbiAgZW50ZXIoYXJnczogbnVtYmVyKSB7XG4gICAgbGV0IHVwZGF0aW5nID0gbmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCk7XG5cbiAgICBsZXQgc3RhdGUgPSB0aGlzLmNhcHR1cmUoYXJncyk7XG4gICAgbGV0IHRyYWNrZXIgPSB0aGlzLmVsZW1lbnRzKCkucHVzaFVwZGF0YWJsZUJsb2NrKCk7XG5cbiAgICBsZXQgdHJ5T3Bjb2RlID0gbmV3IFRyeU9wY29kZSh0aGlzLnBjLCBzdGF0ZSwgdHJhY2tlciwgdXBkYXRpbmcpO1xuXG4gICAgdGhpcy5kaWRFbnRlcih0cnlPcGNvZGUpO1xuICB9XG5cbiAgaXRlcmF0ZShtZW1vOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIHZhbHVlOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIHVwZGF0aW5nID0gbmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCkpOiBUcnlPcGNvZGUge1xuICAgIGxldCBzdGFjayA9IHRoaXMuc3RhY2s7XG4gICAgc3RhY2sucHVzaCh2YWx1ZSk7XG4gICAgc3RhY2sucHVzaChtZW1vKTtcblxuICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZSgyKTtcbiAgICBsZXQgdHJhY2tlciA9IHRoaXMuZWxlbWVudHMoKS5wdXNoVXBkYXRhYmxlQmxvY2soKTtcblxuICAgIC8vIGxldCBpcCA9IHRoaXMuaXA7XG4gICAgLy8gdGhpcy5pcCA9IGVuZCArIDQ7XG4gICAgLy8gdGhpcy5mcmFtZXMucHVzaChpcCk7XG5cbiAgICByZXR1cm4gbmV3IFRyeU9wY29kZSh0aGlzLnBjLCBzdGF0ZSwgdHJhY2tlciwgdXBkYXRpbmcpO1xuICB9XG5cbiAgZW50ZXJJdGVtKGtleTogc3RyaW5nLCBvcGNvZGU6IFRyeU9wY29kZSkge1xuICAgIHRoaXMubGlzdEJsb2NrKCkubWFwW2tleV0gPSBvcGNvZGU7XG4gICAgdGhpcy5kaWRFbnRlcihvcGNvZGUpO1xuICB9XG5cbiAgZW50ZXJMaXN0KHN0YXJ0OiBudW1iZXIpIHtcbiAgICBsZXQgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdDxCbG9ja09wY29kZT4oKTtcblxuICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZSgwKTtcbiAgICBsZXQgdHJhY2tlciA9IHRoaXMuZWxlbWVudHMoKS5wdXNoQmxvY2tMaXN0KHVwZGF0aW5nKTtcbiAgICBsZXQgYXJ0aWZhY3RzID0gdGhpcy5zdGFjay5wZWVrPFJlZmVyZW5jZUl0ZXJhdG9yPigpLmFydGlmYWN0cztcblxuICAgIGxldCBvcGNvZGUgPSBuZXcgTGlzdEJsb2NrT3Bjb2RlKHN0YXJ0LCBzdGF0ZSwgdHJhY2tlciwgdXBkYXRpbmcsIGFydGlmYWN0cyk7XG5cbiAgICB0aGlzLmxpc3RCbG9ja1N0YWNrLnB1c2gob3Bjb2RlKTtcblxuICAgIHRoaXMuZGlkRW50ZXIob3Bjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgZGlkRW50ZXIob3Bjb2RlOiBCbG9ja09wY29kZSkge1xuICAgIHRoaXMudXBkYXRlV2l0aChvcGNvZGUpO1xuICAgIHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5wdXNoKG9wY29kZS5jaGlsZHJlbik7XG4gIH1cblxuICBleGl0KCkge1xuICAgIHRoaXMuZWxlbWVudHMoKS5wb3BCbG9jaygpO1xuICAgIHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5wb3AoKTtcblxuICAgIGxldCBwYXJlbnQgPSB0aGlzLnVwZGF0aW5nKCkudGFpbCgpIGFzIEJsb2NrT3Bjb2RlO1xuXG4gICAgcGFyZW50LmRpZEluaXRpYWxpemVDaGlsZHJlbigpO1xuICB9XG5cbiAgZXhpdExpc3QoKSB7XG4gICAgdGhpcy5leGl0KCk7XG4gICAgdGhpcy5saXN0QmxvY2tTdGFjay5wb3AoKTtcbiAgfVxuXG4gIHVwZGF0ZVdpdGgob3Bjb2RlOiBVcGRhdGluZ09wY29kZSkge1xuICAgIHRoaXMudXBkYXRpbmcoKS5hcHBlbmQob3Bjb2RlKTtcbiAgfVxuXG4gIGxpc3RCbG9jaygpOiBMaXN0QmxvY2tPcGNvZGUge1xuICAgIHJldHVybiB0aGlzLmxpc3RCbG9ja1N0YWNrLmN1cnJlbnQ7XG4gIH1cblxuICB1cGRhdGluZygpOiBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPiB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5jdXJyZW50O1xuICB9XG5cbiAgZWxlbWVudHMoKTogRWxlbWVudFN0YWNrIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50U3RhY2s7XG4gIH1cblxuICBzY29wZSgpOiBTY29wZSB7XG4gICAgcmV0dXJuIHRoaXMuc2NvcGVTdGFjay5jdXJyZW50O1xuICB9XG5cbiAgZHluYW1pY1Njb3BlKCk6IER5bmFtaWNTY29wZSB7XG4gICAgcmV0dXJuIHRoaXMuZHluYW1pY1Njb3BlU3RhY2suY3VycmVudDtcbiAgfVxuXG4gIHB1c2hDaGlsZFNjb3BlKCkge1xuICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKHRoaXMuc2NvcGUoKS5jaGlsZCgpKTtcbiAgfVxuXG4gIHB1c2hDYWxsZXJTY29wZShjaGlsZFNjb3BlID0gZmFsc2UpIHtcbiAgICBsZXQgY2FsbGVyU2NvcGUgPSB0aGlzLnNjb3BlKCkuZ2V0Q2FsbGVyU2NvcGUoKTtcbiAgICB0aGlzLnNjb3BlU3RhY2sucHVzaChjaGlsZFNjb3BlID8gY2FsbGVyU2NvcGUuY2hpbGQoKSA6IGNhbGxlclNjb3BlKTtcbiAgfVxuXG4gIHB1c2hEeW5hbWljU2NvcGUoKTogRHluYW1pY1Njb3BlIHtcbiAgICBsZXQgY2hpbGQgPSB0aGlzLmR5bmFtaWNTY29wZSgpLmNoaWxkKCk7XG4gICAgdGhpcy5keW5hbWljU2NvcGVTdGFjay5wdXNoKGNoaWxkKTtcbiAgICByZXR1cm4gY2hpbGQ7XG4gIH1cblxuICBwdXNoUm9vdFNjb3BlKHNpemU6IG51bWJlciwgYmluZENhbGxlcjogYm9vbGVhbik6IFNjb3BlIHtcbiAgICBsZXQgc2NvcGUgPSBTY29wZS5zaXplZChzaXplKTtcbiAgICBpZiAoYmluZENhbGxlcikgc2NvcGUuYmluZENhbGxlclNjb3BlKHRoaXMuc2NvcGUoKSk7XG4gICAgdGhpcy5zY29wZVN0YWNrLnB1c2goc2NvcGUpO1xuICAgIHJldHVybiBzY29wZTtcbiAgfVxuXG4gIHBvcFNjb3BlKCkge1xuICAgIHRoaXMuc2NvcGVTdGFjay5wb3AoKTtcbiAgfVxuXG4gIHBvcER5bmFtaWNTY29wZSgpIHtcbiAgICB0aGlzLmR5bmFtaWNTY29wZVN0YWNrLnBvcCgpO1xuICB9XG5cbiAgbmV3RGVzdHJveWFibGUoZDogRGVzdHJveWFibGUpIHtcbiAgICB0aGlzLmVsZW1lbnRzKCkubmV3RGVzdHJveWFibGUoZCk7XG4gIH1cblxuICAvLy8gU0NPUEUgSEVMUEVSU1xuXG4gIGdldFNlbGYoKTogUGF0aFJlZmVyZW5jZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5zY29wZSgpLmdldFNlbGYoKTtcbiAgfVxuXG4gIHJlZmVyZW5jZUZvclN5bWJvbChzeW1ib2w6IG51bWJlcik6IFBhdGhSZWZlcmVuY2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuc2NvcGUoKS5nZXRTeW1ib2woc3ltYm9sKTtcbiAgfVxuXG4gIC8vLyBFWEVDVVRJT05cblxuICBleGVjdXRlKHN0YXJ0OiBudW1iZXIsIGluaXRpYWxpemU/OiAodm06IFZNKSA9PiB2b2lkKTogUmVuZGVyUmVzdWx0IHtcbiAgICB0aGlzLnBjID0gc3RhcnQ7XG5cbiAgICBpZiAoaW5pdGlhbGl6ZSkgaW5pdGlhbGl6ZSh0aGlzKTtcblxuICAgIGxldCByZXN1bHQ6IEl0ZXJhdG9yUmVzdWx0PFJlbmRlclJlc3VsdD47XG5cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgcmVzdWx0ID0gdGhpcy5uZXh0KCk7XG4gICAgICBpZiAocmVzdWx0LmRvbmUpIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQudmFsdWUgYXMgUmVuZGVyUmVzdWx0O1xuICB9XG5cbiAgbmV4dCgpOiBJdGVyYXRvclJlc3VsdDxSZW5kZXJSZXN1bHQ+IHtcbiAgICBsZXQgeyBlbnYsIHVwZGF0aW5nT3Bjb2RlU3RhY2ssIGVsZW1lbnRTdGFjayB9ID0gdGhpcztcbiAgICBsZXQgb3Bjb2RlOiBPcHRpb248T3Bjb2RlPjtcblxuICAgIGlmIChvcGNvZGUgPSB0aGlzLm5leHRTdGF0ZW1lbnQoZW52KSkge1xuICAgICAgQVBQRU5EX09QQ09ERVMuZXZhbHVhdGUodGhpcywgb3Bjb2RlLCBvcGNvZGUudHlwZSk7XG4gICAgICByZXR1cm4geyBkb25lOiBmYWxzZSwgdmFsdWU6IG51bGwgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZG9uZTogdHJ1ZSxcbiAgICAgIHZhbHVlOiBuZXcgUmVuZGVyUmVzdWx0KFxuICAgICAgICBlbnYsXG4gICAgICAgIHVwZGF0aW5nT3Bjb2RlU3RhY2sucG9wKCksXG4gICAgICAgIGVsZW1lbnRTdGFjay5wb3BCbG9jaygpXG4gICAgICApXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgbmV4dFN0YXRlbWVudChlbnY6IEVudmlyb25tZW50KTogT3B0aW9uPE9wY29kZT4ge1xuICAgIGxldCB7IHBjIH0gPSB0aGlzO1xuXG4gICAgaWYgKHBjID09PSAtMSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgbGV0IHByb2dyYW0gPSBlbnYucHJvZ3JhbTtcbiAgICB0aGlzLnBjICs9IDQ7XG4gICAgcmV0dXJuIHByb2dyYW0ub3Bjb2RlKHBjKTtcbiAgfVxuXG4gIGV2YWx1YXRlT3Bjb2RlKG9wY29kZTogT3Bjb2RlKSB7XG4gICAgQVBQRU5EX09QQ09ERVMuZXZhbHVhdGUodGhpcywgb3Bjb2RlLCBvcGNvZGUudHlwZSk7XG4gIH1cblxuICBiaW5kRHluYW1pY1Njb3BlKG5hbWVzOiBDb25zdGFudFN0cmluZ1tdKSB7XG4gICAgbGV0IHNjb3BlID0gdGhpcy5keW5hbWljU2NvcGUoKTtcblxuICAgIGZvcihsZXQgaT1uYW1lcy5sZW5ndGggLSAxOyBpPj0wOyBpLS0pIHtcbiAgICAgIGxldCBuYW1lID0gdGhpcy5jb25zdGFudHMuZ2V0U3RyaW5nKG5hbWVzW2ldKTtcbiAgICAgIHNjb3BlLnNldChuYW1lLCB0aGlzLnN0YWNrLnBvcDxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4+KCkpO1xuICAgIH1cbiAgfVxufVxuIl19
import { clear, move as moveBounds } from '../bounds';
import { ElementStack } from '../builder';
import { Stack, LinkedList, dict, expect } from '@glimmer/util';
import { Stack, LinkedList, dict } from '@glimmer/util';
import { IteratorSynchronizer,

@@ -32,3 +32,3 @@ // Tags

get frame() {
return expect(this.frameStack.current, 'bug: expected a frame');
return this.frameStack.current;
}

@@ -82,12 +82,2 @@ goto(op) {

}
toJSON() {
let details = dict();
details["guid"] = `${this._guid}`;
return {
guid: this._guid,
type: this.type,
details,
children: this.children.toArray().map(op => op.toJSON())
};
}
}

@@ -121,10 +111,2 @@ export class TryOpcode extends BlockOpcode {

}
toJSON() {
let json = super.toJSON();
let details = json["details"];
if (!details) {
details = json["details"] = {};
}
return super.toJSON();
}
}

@@ -213,3 +195,3 @@ class ListRevalidationDelegate {

let marker = dom.createComment('');
dom.insertAfter(bounds.parentElement(), marker, expect(bounds.lastNode(), "can't insert after an empty bounds"));
dom.insertAfter(bounds.parentElement(), marker, bounds.lastNode());
let target = new ListRevalidationDelegate(this, marker);

@@ -228,15 +210,2 @@ let synchronizer = new IteratorSynchronizer({ target, artifacts });

}
toJSON() {
let json = super.toJSON();
let map = this.map;
let inner = Object.keys(map).map(key => {
return `${JSON.stringify(key)}: ${map[key]._guid}`;
}).join(", ");
let details = json["details"];
if (!details) {
details = json["details"] = {};
}
details["map"] = `{${inner}}`;
return json;
}
}

@@ -267,2 +236,2 @@ class UpdatingVMFrame {

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidXBkYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBcUIsS0FBSyxFQUFFLElBQUksSUFBSSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDekUsT0FBTyxFQUFFLFlBQVksRUFBNkIsTUFBTSxZQUFZLENBQUM7QUFDckUsT0FBTyxFQUFrQixLQUFLLEVBQUUsVUFBVSxFQUFRLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEYsT0FBTyxFQUdMLG9CQUFvQjtBQUdwQixPQUFPO0FBQ1AsT0FBTyxFQUVQLFlBQVksRUFFWixZQUFZLEVBQ1osWUFBWSxFQUNaLE9BQU8sRUFDUixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBYyxjQUFjLEVBQWlCLE1BQU0sWUFBWSxDQUFDO0FBS3ZFLE9BQU8sRUFBRSxFQUFFLEVBQWlCLGVBQWUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUU5RCxNQUFNLENBQUMsT0FBTztJQVFaLFlBQVksR0FBZ0IsRUFBRSxFQUFFLGdCQUFnQixHQUFHLEtBQUssRUFBRTtRQUZsRCxlQUFVLEdBQTJCLElBQUksS0FBSyxFQUFtQixDQUFDO1FBR3hFLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQy9CLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztJQUMzQyxDQUFDO0lBRUQsT0FBTyxDQUFDLE9BQXNCLEVBQUUsT0FBeUI7UUFDdkQsSUFBSSxFQUFFLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQztRQUUxQixJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUUzQixPQUFPLElBQUks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R0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFJLENBQUMsRUFBa0I7UUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztRQUM1QixFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFBQyxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEQsTUFBTSxDQUFDLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsZUFBZTtRQUNiLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzFDLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY29wZSwgRHluYW1pY1Njb3BlLCBFbnZpcm9ubWVudCB9IGZyb20gJy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IERlc3Ryb3lhYmxlQm91bmRzLCBjbGVhciwgbW92ZSBhcyBtb3ZlQm91bmRzIH0gZnJvbSAnLi4vYm91bmRzJztcbmltcG9ydCB7IEVsZW1lbnRTdGFjaywgVHJhY2tlciwgVXBkYXRhYmxlVHJhY2tlciB9IGZyb20gJy4uL2J1aWxkZXInO1xuaW1wb3J0IHsgT3B0aW9uLCBPcGFxdWUsIFN0YWNrLCBMaW5rZWRMaXN0LCBEaWN0LCBkaWN0LCBleHBlY3QgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7XG4gIFBhdGhSZWZlcmVuY2UsXG4gIEl0ZXJhdGlvbkFydGlmYWN0cyxcbiAgSXRlcmF0b3JTeW5jaHJvbml6ZXIsXG4gIEl0ZXJhdG9yU3luY2hyb25pemVyRGVsZWdhdGUsXG5cbiAgLy8gVGFnc1xuICBjb21iaW5lLFxuICBSZXZpc2lvbixcbiAgVXBkYXRhYmxlVGFnLFxuICBUYWdXcmFwcGVyLFxuICBjb21iaW5lU2xpY2UsXG4gIENPTlNUQU5UX1RBRyxcbiAgSU5JVElBTFxufSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgT3Bjb2RlSlNPTiwgVXBkYXRpbmdPcGNvZGUsIFVwZGF0aW5nT3BTZXEgfSBmcm9tICcuLi9vcGNvZGVzJztcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4uL2Vudmlyb25tZW50L2NvbnN0YW50cyc7XG5pbXBvcnQgeyBET01DaGFuZ2VzIH0gZnJvbSAnLi4vZG9tL2hlbHBlcic7XG5pbXBvcnQgKiBhcyBTaW1wbGUgZnJvbSAnLi4vZG9tL2ludGVyZmFjZXMnO1xuXG5pbXBvcnQgVk0sIHsgQ2FwdHVyZWRTdGFjaywgRXZhbHVhdGlvblN0YWNrIH0gZnJvbSAnLi9hcHBlbmQnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBVcGRhdGluZ1ZNIHtcbiAgcHVibGljIGVudjogRW52aXJvbm1lbnQ7XG4gIHB1YmxpYyBkb206IERPTUNoYW5nZXM7XG4gIHB1YmxpYyBhbHdheXNSZXZhbGlkYXRlOiBib29sZWFuO1xuICBwdWJsaWMgY29uc3RhbnRzOiBDb25zdGFudHM7XG5cbiAgcHJpdmF0ZSBmcmFtZVN0YWNrOiBTdGFjazxVcGRhdGluZ1ZNRnJhbWU+ID0gbmV3IFN0YWNrPFVwZGF0aW5nVk1GcmFtZT4oKTtcblxuICBjb25zdHJ1Y3RvcihlbnY6IEVudmlyb25tZW50LCB7IGFsd2F5c1JldmFsaWRhdGUgPSBmYWxzZSB9KSB7XG4gICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgdGhpcy5jb25zdGFudHMgPSBlbnYuY29uc3RhbnRzO1xuICAgIHRoaXMuZG9tID0gZW52LmdldERPTSgpO1xuICAgIHRoaXMuYWx3YXlzUmV2YWxpZGF0ZSA9IGFsd2F5c1JldmFsaWRhdGU7XG4gIH1cblxuICBleGVjdXRlKG9wY29kZXM6IFVwZGF0aW5nT3BTZXEsIGhhbmRsZXI6IEV4Y2VwdGlvbkhhbmRsZXIpIHtcbiAgICBsZXQgeyBmcmFtZVN0YWNrIH0gPSB0aGlzO1xuXG4gICAgdGhpcy50cnkob3Bjb2RlcywgaGFuZGxlcik7XG5cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgaWYgKGZyYW1lU3RhY2suaXNFbXB0eSgpKSBicmVhaztcblxuICAgICAgbGV0IG9wY29kZSA9IHRoaXMuZnJhbWUubmV4dFN0YXRlbWVudCgpO1xuXG4gICAgICBpZiAob3Bjb2RlID09PSBudWxsKSB7XG4gICAgICAgIHRoaXMuZnJhbWVTdGFjay5wb3AoKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIG9wY29kZS5ldmFsdWF0ZSh0aGlzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldCBmcmFtZSgpIHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXMuZnJhbWVTdGFjay5jdXJyZW50LCAnYnVnOiBleHBlY3RlZCBhIGZyYW1lJyk7XG4gIH1cblxuICBnb3RvKG9wOiBVcGRhdGluZ09wY29kZSkge1xuICAgIHRoaXMuZnJhbWUuZ290byhvcCk7XG4gIH1cblxuICB0cnkob3BzOiBVcGRhdGluZ09wU2VxLCBoYW5kbGVyOiBPcHRpb248RXhjZXB0aW9uSGFuZGxlcj4pIHtcbiAgICB0aGlzLmZyYW1lU3RhY2sucHVzaChuZXcgVXBkYXRpbmdWTUZyYW1lKHRoaXMsIG9wcywgaGFuZGxlcikpO1xuICB9XG5cbiAgdGhyb3coKSB7XG4gICAgdGhpcy5mcmFtZS5oYW5kbGVFeGNlcHRpb24oKTtcbiAgICB0aGlzLmZyYW1lU3RhY2sucG9wKCk7XG4gIH1cblxuICBldmFsdWF0ZU9wY29kZShvcGNvZGU6IFVwZGF0aW5nT3Bjb2RlKSB7XG4gICAgb3Bjb2RlLmV2YWx1YXRlKHRoaXMpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhjZXB0aW9uSGFuZGxlciB7XG4gIGhhbmRsZUV4Y2VwdGlvbigpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZNU3RhdGUge1xuICBlbnY6IEVudmlyb25tZW50O1xuICBzY29wZTogU2NvcGU7XG4gIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlO1xuICBzdGFjazogQ2FwdHVyZWRTdGFjaztcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJsb2NrT3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUgaW1wbGVtZW50cyBEZXN0cm95YWJsZUJvdW5kcyB7XG4gIHB1YmxpYyB0eXBlID0gXCJibG9ja1wiO1xuICBwdWJsaWMgbmV4dCA9IG51bGw7XG4gIHB1YmxpYyBwcmV2ID0gbnVsbDtcbiAgcHVibGljIGNoaWxkcmVuOiBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPjtcblxuICBwcm90ZWN0ZWQgZW52OiBFbnZpcm9ubWVudDtcbiAgcHJvdGVjdGVkIHNjb3BlOiBTY29wZTtcbiAgcHJvdGVjdGVkIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlO1xuICBwcm90ZWN0ZWQgc3RhY2s6IENhcHR1cmVkU3RhY2s7XG4gIHByb3RlY3RlZCBib3VuZHM6IERlc3Ryb3lhYmxlQm91bmRzO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBzdGFydDogbnVtYmVyLCBzdGF0ZTogVk1TdGF0ZSwgYm91bmRzOiBEZXN0cm95YWJsZUJvdW5kcywgY2hpbGRyZW46IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KSB7XG4gICAgc3VwZXIoKTtcbiAgICBsZXQgeyBlbnYsIHNjb3BlLCBkeW5hbWljU2NvcGUsIHN0YWNrIH0gPSBzdGF0ZTtcbiAgICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgdGhpcy5zY29wZSA9IHNjb3BlO1xuICAgIHRoaXMuZHluYW1pY1Njb3BlID0gZHluYW1pY1Njb3BlO1xuICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICB0aGlzLmJvdW5kcyA9IGJvdW5kcztcbiAgfVxuXG4gIGFic3RyYWN0IGRpZEluaXRpYWxpemVDaGlsZHJlbigpOiB2b2lkO1xuXG4gIHBhcmVudEVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuYm91bmRzLnBhcmVudEVsZW1lbnQoKTtcbiAgfVxuXG4gIGZpcnN0Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMuZmlyc3ROb2RlKCk7XG4gIH1cblxuICBsYXN0Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMubGFzdE5vZGUoKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgdm0udHJ5KHRoaXMuY2hpbGRyZW4sIG51bGwpO1xuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLmJvdW5kcy5kZXN0cm95KCk7XG4gIH1cblxuICBkaWREZXN0cm95KCkge1xuICAgIHRoaXMuZW52LmRpZERlc3Ryb3kodGhpcy5ib3VuZHMpO1xuICB9XG5cbiAgdG9KU09OKCkgOiBPcGNvZGVKU09OIHtcbiAgICBsZXQgZGV0YWlscyA9IGRpY3Q8c3RyaW5nPigpO1xuXG4gICAgZGV0YWlsc1tcImd1aWRcIl0gPSBgJHt0aGlzLl9ndWlkfWA7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIGRldGFpbHMsXG4gICAgICBjaGlsZHJlbjogdGhpcy5jaGlsZHJlbi50b0FycmF5KCkubWFwKG9wID0+IG9wLnRvSlNPTigpKVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRyeU9wY29kZSBleHRlbmRzIEJsb2NrT3Bjb2RlIGltcGxlbWVudHMgRXhjZXB0aW9uSGFuZGxlciB7XG4gIHB1YmxpYyB0eXBlID0gXCJ0cnlcIjtcblxuICBwcml2YXRlIF90YWc6IFRhZ1dyYXBwZXI8VXBkYXRhYmxlVGFnPjtcblxuICBwcm90ZWN0ZWQgYm91bmRzOiBVcGRhdGFibGVUcmFja2VyO1xuXG4gIGNvbnN0cnVjdG9yKHN0YXJ0OiBudW1iZXIsIHN0YXRlOiBWTVN0YXRlLCBib3VuZHM6IFVwZGF0YWJsZVRyYWNrZXIsIGNoaWxkcmVuOiBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPikge1xuICAgIHN1cGVyKHN0YXJ0LCBzdGF0ZSwgYm91bmRzLCBjaGlsZHJlbik7XG4gICAgdGhpcy50YWcgPSB0aGlzLl90YWcgPSBVcGRhdGFibGVUYWcuY3JlYXRlKENPTlNUQU5UX1RBRyk7XG4gIH1cblxuICBkaWRJbml0aWFsaXplQ2hpbGRyZW4oKSB7XG4gICAgdGhpcy5fdGFnLmlubmVyLnVwZGF0ZShjb21iaW5lU2xpY2UodGhpcy5jaGlsZHJlbikpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICB2bS50cnkodGhpcy5jaGlsZHJlbiwgdGhpcyk7XG4gIH1cblxuICBoYW5kbGVFeGNlcHRpb24oKSB7XG4gICAgbGV0IHsgZW52LCBib3VuZHMsIGNoaWxkcmVuLCBzY29wZSwgZHluYW1pY1Njb3BlLCBzdGFydCwgc3RhY2ssIHByZXYsIG5leHQgfSA9IHRoaXM7XG5cbiAgICBjaGlsZHJlbi5jbGVhcigpO1xuXG4gICAgbGV0IGVsZW1lbnRTdGFjayA9IEVsZW1lbnRTdGFjay5yZXN1bWUoXG4gICAgICBlbnYsXG4gICAgICBib3VuZHMsXG4gICAgICBib3VuZHMucmVzZXQoZW52KVxuICAgICk7XG5cbiAgICBsZXQgdm0gPSBuZXcgVk0oZW52LCBzY29wZSwgZHluYW1pY1Njb3BlLCBlbGVtZW50U3RhY2spO1xuXG4gICAgbGV0IHVwZGF0aW5nID0gbmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCk7XG5cbiAgICB2bS5leGVjdXRlKHN0YXJ0LCB2bSA9PiB7XG4gICAgICB2bS5zdGFjayA9IEV2YWx1YXRpb25TdGFjay5yZXN0b3JlKHN0YWNrKTtcbiAgICAgIHZtLnVwZGF0aW5nT3Bjb2RlU3RhY2sucHVzaCh1cGRhdGluZyk7XG4gICAgICB2bS51cGRhdGVXaXRoKHRoaXMpO1xuICAgICAgdm0udXBkYXRpbmdPcGNvZGVTdGFjay5wdXNoKGNoaWxkcmVuKTtcbiAgICB9KTtcblxuICAgIHRoaXMucHJldiA9IHByZXY7XG4gICAgdGhpcy5uZXh0ID0gbmV4dDtcbiAgfVxuXG4gIHRvSlNPTigpIDogT3Bjb2RlSlNPTiB7XG4gICAgbGV0IGpzb24gPSBzdXBlci50b0pTT04oKTtcblxuICAgIGxldCBkZXRhaWxzID0ganNvbltcImRldGFpbHNcIl07XG4gICAgaWYgKCFkZXRhaWxzKSB7XG4gICAgICBkZXRhaWxzID0ganNvbltcImRldGFpbHNcIl0gPSB7fTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VwZXIudG9KU09OKCk7XG4gIH1cbn1cblxuY2xhc3MgTGlzdFJldmFsaWRhdGlvbkRlbGVnYXRlIGltcGxlbWVudHMgSXRlcmF0b3JTeW5jaHJvbml6ZXJEZWxlZ2F0ZSB7XG4gIHByaXZhdGUgbWFwOiBEaWN0PEJsb2NrT3Bjb2RlPjtcbiAgcHJpdmF0ZSB1cGRhdGluZzogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT47XG5cbiAgcHJpdmF0ZSBkaWRJbnNlcnQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBkaWREZWxldGUgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG9wY29kZTogTGlzdEJsb2NrT3Bjb2RlLCBwcml2YXRlIG1hcmtlcjogU2ltcGxlLkNvbW1lbnQpIHtcbiAgICB0aGlzLm1hcCA9IG9wY29kZS5tYXA7XG4gICAgdGhpcy51cGRhdGluZyA9IG9wY29kZVsnY2hpbGRyZW4nXTtcbiAgfVxuXG4gIGluc2VydChrZXk6IHN0cmluZywgaXRlbTogUGF0aFJlZmVyZW5jZTxPcGFxdWU+LCBtZW1vOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIGJlZm9yZTogc3RyaW5nKSB7XG4gICAgbGV0IHsgbWFwLCBvcGNvZGUsIHVwZGF0aW5nIH0gPSB0aGlzO1xuICAgIGxldCBuZXh0U2libGluZzogT3B0aW9uPFNpbXBsZS5Ob2RlPiA9IG51bGw7XG4gICAgbGV0IHJlZmVyZW5jZTogT3B0aW9uPEJsb2NrT3Bjb2RlPiA9IG51bGw7XG5cbiAgICBpZiAoYmVmb3JlKSB7XG4gICAgICByZWZlcmVuY2UgPSBtYXBbYmVmb3JlXTtcbiAgICAgIG5leHRTaWJsaW5nID0gcmVmZXJlbmNlWydib3VuZHMnXS5maXJzdE5vZGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV4dFNpYmxpbmcgPSB0aGlzLm1hcmtlcjtcbiAgICB9XG5cbiAgICBsZXQgdm0gPSBvcGNvZGUudm1Gb3JJbnNlcnRpb24obmV4dFNpYmxpbmcpO1xuICAgIGxldCB0cnlPcGNvZGU6IE9wdGlvbjxUcnlPcGNvZGU+ID0gbnVsbDtcblxuICAgIGxldCB7IHN0YXJ0IH0gPSBvcGNvZGU7XG5cbiAgICB2bS5leGVjdXRlKHN0YXJ0LCB2bSA9PiB7XG4gICAgICBtYXBba2V5XSA9IHRyeU9wY29kZSA9IHZtLml0ZXJhdGUobWVtbywgaXRlbSk7XG4gICAgICB2bS51cGRhdGluZ09wY29kZVN0YWNrLnB1c2gobmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCkpO1xuICAgICAgdm0udXBkYXRlV2l0aCh0cnlPcGNvZGUpO1xuICAgICAgdm0udXBkYXRpbmdPcGNvZGVTdGFjay5wdXNoKHRyeU9wY29kZS5jaGlsZHJlbik7XG4gICAgfSk7XG5cbiAgICB1cGRhdGluZy5pbnNlcnRCZWZvcmUodHJ5T3Bjb2RlISwgcmVmZXJlbmNlKTtcblxuICAgIHRoaXMuZGlkSW5zZXJ0ID0gdHJ1ZTtcbiAgfVxuXG4gIHJldGFpbihfa2V5OiBzdHJpbmcsIF9pdGVtOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIF9tZW1vOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4pIHtcbiAgfVxuXG4gIG1vdmUoa2V5OiBzdHJpbmcsIF9pdGVtOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIF9tZW1vOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIGJlZm9yZTogc3RyaW5nKSB7XG4gICAgbGV0IHsgbWFwLCB1cGRhdGluZyB9ID0gdGhpcztcblxuICAgIGxldCBlbnRyeSA9IG1hcFtrZXldO1xuICAgIGxldCByZWZlcmVuY2UgPSBtYXBbYmVmb3JlXSB8fCBudWxsO1xuXG4gICAgaWYgKGJlZm9yZSkge1xuICAgICAgbW92ZUJvdW5kcyhlbnRyeSwgcmVmZXJlbmNlLmZpcnN0Tm9kZSgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbW92ZUJvdW5kcyhlbnRyeSwgdGhpcy5tYXJrZXIpO1xuICAgIH1cblxuICAgIHVwZGF0aW5nLnJlbW92ZShlbnRyeSk7XG4gICAgdXBkYXRpbmcuaW5zZXJ0QmVmb3JlKGVudHJ5LCByZWZlcmVuY2UpO1xuICB9XG5cbiAgZGVsZXRlKGtleTogc3RyaW5nKSB7XG4gICAgbGV0IHsgbWFwIH0gPSB0aGlzO1xuICAgIGxldCBvcGNvZGUgPSBtYXBba2V5XTtcbiAgICBvcGNvZGUuZGlkRGVzdHJveSgpO1xuICAgIGNsZWFyKG9wY29kZSk7XG4gICAgdGhpcy51cGRhdGluZy5yZW1vdmUob3Bjb2RlKTtcbiAgICBkZWxldGUgbWFwW2tleV07XG5cbiAgICB0aGlzLmRpZERlbGV0ZSA9IHRydWU7XG4gIH1cblxuICBkb25lKCkge1xuICAgIHRoaXMub3Bjb2RlLmRpZEluaXRpYWxpemVDaGlsZHJlbih0aGlzLmRpZEluc2VydCB8fCB0aGlzLmRpZERlbGV0ZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIExpc3RCbG9ja09wY29kZSBleHRlbmRzIEJsb2NrT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImxpc3QtYmxvY2tcIjtcbiAgcHVibGljIG1hcCA9IGRpY3Q8QmxvY2tPcGNvZGU+KCk7XG4gIHB1YmxpYyBhcnRpZmFjdHM6IEl0ZXJhdGlvbkFydGlmYWN0cztcblxuICBwcml2YXRlIGxhc3RJdGVyYXRlZDogUmV2aXNpb24gPSBJTklUSUFMO1xuICBwcml2YXRlIF90YWc6IFRhZ1dyYXBwZXI8VXBkYXRhYmxlVGFnPjtcblxuICBjb25zdHJ1Y3RvcihzdGFydDogbnVtYmVyLCBzdGF0ZTogVk1TdGF0ZSwgYm91bmRzOiBUcmFja2VyLCBjaGlsZHJlbjogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4sIGFydGlmYWN0czogSXRlcmF0aW9uQXJ0aWZhY3RzKSB7XG4gICAgc3VwZXIoc3RhcnQsIHN0YXRlLCBib3VuZHMsIGNoaWxkcmVuKTtcbiAgICB0aGlzLmFydGlmYWN0cyA9IGFydGlmYWN0cztcbiAgICBsZXQgX3RhZyA9IHRoaXMuX3RhZyA9IFVwZGF0YWJsZVRhZy5jcmVhdGUoQ09OU1RBTlRfVEFHKTtcbiAgICB0aGlzLnRhZyA9IGNvbWJpbmUoW2FydGlmYWN0cy50YWcsIF90YWddKTtcbiAgfVxuXG4gIGRpZEluaXRpYWxpemVDaGlsZHJlbihsaXN0RGlkQ2hhbmdlID0gdHJ1ZSkge1xuICAgIHRoaXMubGFzdEl0ZXJhdGVkID0gdGhpcy5hcnRpZmFjdHMudGFnLnZhbHVlKCk7XG5cbiAgICBpZiAobGlzdERpZENoYW5nZSkge1xuICAgICAgdGhpcy5fdGFnLmlubmVyLnVwZGF0ZShjb21iaW5lU2xpY2UodGhpcy5jaGlsZHJlbikpO1xuICAgIH1cbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgbGV0IHsgYXJ0aWZhY3RzLCBsYXN0SXRlcmF0ZWQgfSA9IHRoaXM7XG5cbiAgICBpZiAoIWFydGlmYWN0cy50YWcudmFsaWRhdGUobGFzdEl0ZXJhdGVkKSkge1xuICAgICAgbGV0IHsgYm91bmRzIH0gPSB0aGlzO1xuICAgICAgbGV0IHsgZG9tIH0gPSB2bTtcblxuICAgICAgbGV0IG1hcmtlciA9IGRvbS5jcmVhdGVDb21tZW50KCcnKTtcbiAgICAgIGRvbS5pbnNlcnRBZnRlcihib3VuZHMucGFyZW50RWxlbWVudCgpLCBtYXJrZXIsIGV4cGVjdChib3VuZHMubGFzdE5vZGUoKSwgXCJjYW4ndCBpbnNlcnQgYWZ0ZXIgYW4gZW1wdHkgYm91bmRzXCIpKTtcblxuICAgICAgbGV0IHRhcmdldCA9IG5ldyBMaXN0UmV2YWxpZGF0aW9uRGVsZWdhdGUodGhpcywgbWFya2VyKTtcbiAgICAgIGxldCBzeW5jaHJvbml6ZXIgPSBuZXcgSXRlcmF0b3JTeW5jaHJvbml6ZXIoeyB0YXJnZXQsIGFydGlmYWN0cyB9KTtcblxuICAgICAgc3luY2hyb25pemVyLnN5bmMoKTtcblxuICAgICAgdGhpcy5wYXJlbnRFbGVtZW50KCkucmVtb3ZlQ2hpbGQobWFya2VyKTtcbiAgICB9XG5cbiAgICAvLyBSdW4gbm93LXVwZGF0ZWQgdXBkYXRpbmcgb3Bjb2Rlc1xuICAgIHN1cGVyLmV2YWx1YXRlKHZtKTtcbiAgfVxuXG4gIHZtRm9ySW5zZXJ0aW9uKG5leHRTaWJsaW5nOiBPcHRpb248U2ltcGxlLk5vZGU+KTogVk0ge1xuICAgIGxldCB7IGVudiwgc2NvcGUsIGR5bmFtaWNTY29wZSB9ID0gdGhpcztcblxuICAgIGxldCBlbGVtZW50U3RhY2sgPSBFbGVtZW50U3RhY2suZm9ySW5pdGlhbFJlbmRlcihcbiAgICAgIHRoaXMuZW52LFxuICAgICAgdGhpcy5ib3VuZHMucGFyZW50RWxlbWVudCgpLFxuICAgICAgbmV4dFNpYmxpbmdcbiAgICApO1xuXG4gICAgcmV0dXJuIG5ldyBWTShlbnYsIHNjb3BlLCBkeW5hbWljU2NvcGUsIGVsZW1lbnRTdGFjayk7XG4gIH1cblxuICB0b0pTT04oKSA6IE9wY29kZUpTT04ge1xuICAgIGxldCBqc29uID0gc3VwZXIudG9KU09OKCk7XG4gICAgbGV0IG1hcCA9IHRoaXMubWFwO1xuXG4gICAgbGV0IGlubmVyID0gT2JqZWN0LmtleXMobWFwKS5tYXAoa2V5ID0+IHtcbiAgICAgIHJldHVybiBgJHtKU09OLnN0cmluZ2lmeShrZXkpfTogJHttYXBba2V5XS5fZ3VpZH1gO1xuICAgIH0pLmpvaW4oXCIsIFwiKTtcblxuICAgIGxldCBkZXRhaWxzID0ganNvbltcImRldGFpbHNcIl07XG4gICAgaWYgKCFkZXRhaWxzKSB7XG4gICAgICBkZXRhaWxzID0ganNvbltcImRldGFpbHNcIl0gPSB7fTtcbiAgICB9XG5cbiAgICBkZXRhaWxzW1wibWFwXCJdID0gYHske2lubmVyfX1gO1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cbn1cblxuY2xhc3MgVXBkYXRpbmdWTUZyYW1lIHtcbiAgcHJpdmF0ZSBjdXJyZW50OiBPcHRpb248VXBkYXRpbmdPcGNvZGU+O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdm06IFVwZGF0aW5nVk0sIHByaXZhdGUgb3BzOiBVcGRhdGluZ09wU2VxLCBwcml2YXRlIGV4Y2VwdGlvbkhhbmRsZXI6IE9wdGlvbjxFeGNlcHRpb25IYW5kbGVyPikge1xuICAgIHRoaXMudm0gPSB2bTtcbiAgICB0aGlzLm9wcyA9IG9wcztcbiAgICB0aGlzLmN1cnJlbnQgPSBvcHMuaGVhZCgpO1xuICB9XG5cbiAgZ290byhvcDogVXBkYXRpbmdPcGNvZGUpIHtcbiAgICB0aGlzLmN1cnJlbnQgPSBvcDtcbiAgfVxuXG4gIG5leHRTdGF0ZW1lbnQoKTogT3B0aW9uPFVwZGF0aW5nT3Bjb2RlPiB7XG4gICAgbGV0IHsgY3VycmVudCwgb3BzIH0gPSB0aGlzO1xuICAgIGlmIChjdXJyZW50KSB0aGlzLmN1cnJlbnQgPSBvcHMubmV4dE5vZGUoY3VycmVudCk7XG4gICAgcmV0dXJuIGN1cnJlbnQ7XG4gIH1cblxuICBoYW5kbGVFeGNlcHRpb24oKSB7XG4gICAgaWYgKHRoaXMuZXhjZXB0aW9uSGFuZGxlcikge1xuICAgICAgdGhpcy5leGNlcHRpb25IYW5kbGVyLmhhbmRsZUV4Y2VwdGlvbigpO1xuICAgIH1cbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidXBkYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBcUIsS0FBSyxFQUFFLElBQUksSUFBSSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDekUsT0FBTyxFQUFFLFlBQVksRUFBNkIsTUFBTSxZQUFZLENBQUM7QUFDckUsT0FBTyxFQUFrQixLQUFLLEVBQUUsVUFBVSxFQUFRLElBQUksRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLEVBR0wsb0JBQW9CO0FBR3BCLE9BQU87QUFDUCxPQUFPLEVBRVAsWUFBWSxFQUVaLFlBQVksRUFDWixZQUFZLEVBQ1osT0FBTyxFQUNSLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFjLGNBQWMsRUFBaUIsTUFBTSxZQUFZLENBQUM7QUFLdkUsT0FBTyxFQUFFLEVBQUUsRUFBaUIsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRTlELE1BQU0sQ0FBQyxPQUFPO0lBUVosWUFBWSxHQUFnQixFQUFFLEVBQUUsZ0JBQWdCLEdBQUcsS0FBSyxFQUFFO1FBRmxELGVBQVUsR0FBMkIsSUFBSSxLQUFLLEVBQW1CLENBQUM7UUFHeEUsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUM7UUFDL0IsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO0lBQzNDLENBQUM7SUFFRCxPQUFPLENBQUMsT0FBc0IsRUFBRSxPQUF5QjtRQUN2RCxJQUFJLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBRTFCLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRTNCLE9BQU8sSUFBSSxFQUFFLENBQUM7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QztJQUNqQixDQUFDO0lBRUQsZUFBZTtRQUNiLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzFDLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY29wZSwgRHluYW1pY1Njb3BlLCBFbnZpcm9ubWVudCB9IGZyb20gJy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IERlc3Ryb3lhYmxlQm91bmRzLCBjbGVhciwgbW92ZSBhcyBtb3ZlQm91bmRzIH0gZnJvbSAnLi4vYm91bmRzJztcbmltcG9ydCB7IEVsZW1lbnRTdGFjaywgVHJhY2tlciwgVXBkYXRhYmxlVHJhY2tlciB9IGZyb20gJy4uL2J1aWxkZXInO1xuaW1wb3J0IHsgT3B0aW9uLCBPcGFxdWUsIFN0YWNrLCBMaW5rZWRMaXN0LCBEaWN0LCBkaWN0LCBleHBlY3QgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7XG4gIFBhdGhSZWZlcmVuY2UsXG4gIEl0ZXJhdGlvbkFydGlmYWN0cyxcbiAgSXRlcmF0b3JTeW5jaHJvbml6ZXIsXG4gIEl0ZXJhdG9yU3luY2hyb25pemVyRGVsZWdhdGUsXG5cbiAgLy8gVGFnc1xuICBjb21iaW5lLFxuICBSZXZpc2lvbixcbiAgVXBkYXRhYmxlVGFnLFxuICBUYWdXcmFwcGVyLFxuICBjb21iaW5lU2xpY2UsXG4gIENPTlNUQU5UX1RBRyxcbiAgSU5JVElBTFxufSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgT3Bjb2RlSlNPTiwgVXBkYXRpbmdPcGNvZGUsIFVwZGF0aW5nT3BTZXEgfSBmcm9tICcuLi9vcGNvZGVzJztcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4uL2Vudmlyb25tZW50L2NvbnN0YW50cyc7XG5pbXBvcnQgeyBET01DaGFuZ2VzIH0gZnJvbSAnLi4vZG9tL2hlbHBlcic7XG5pbXBvcnQgKiBhcyBTaW1wbGUgZnJvbSAnLi4vZG9tL2ludGVyZmFjZXMnO1xuXG5pbXBvcnQgVk0sIHsgQ2FwdHVyZWRTdGFjaywgRXZhbHVhdGlvblN0YWNrIH0gZnJvbSAnLi9hcHBlbmQnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBVcGRhdGluZ1ZNIHtcbiAgcHVibGljIGVudjogRW52aXJvbm1lbnQ7XG4gIHB1YmxpYyBkb206IERPTUNoYW5nZXM7XG4gIHB1YmxpYyBhbHdheXNSZXZhbGlkYXRlOiBib29sZWFuO1xuICBwdWJsaWMgY29uc3RhbnRzOiBDb25zdGFudHM7XG5cbiAgcHJpdmF0ZSBmcmFtZVN0YWNrOiBTdGFjazxVcGRhdGluZ1ZNRnJhbWU+ID0gbmV3IFN0YWNrPFVwZGF0aW5nVk1GcmFtZT4oKTtcblxuICBjb25zdHJ1Y3RvcihlbnY6IEVudmlyb25tZW50LCB7IGFsd2F5c1JldmFsaWRhdGUgPSBmYWxzZSB9KSB7XG4gICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgdGhpcy5jb25zdGFudHMgPSBlbnYuY29uc3RhbnRzO1xuICAgIHRoaXMuZG9tID0gZW52LmdldERPTSgpO1xuICAgIHRoaXMuYWx3YXlzUmV2YWxpZGF0ZSA9IGFsd2F5c1JldmFsaWRhdGU7XG4gIH1cblxuICBleGVjdXRlKG9wY29kZXM6IFVwZGF0aW5nT3BTZXEsIGhhbmRsZXI6IEV4Y2VwdGlvbkhhbmRsZXIpIHtcbiAgICBsZXQgeyBmcmFtZVN0YWNrIH0gPSB0aGlzO1xuXG4gICAgdGhpcy50cnkob3Bjb2RlcywgaGFuZGxlcik7XG5cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgaWYgKGZyYW1lU3RhY2suaXNFbXB0eSgpKSBicmVhaztcblxuICAgICAgbGV0IG9wY29kZSA9IHRoaXMuZnJhbWUubmV4dFN0YXRlbWVudCgpO1xuXG4gICAgICBpZiAob3Bjb2RlID09PSBudWxsKSB7XG4gICAgICAgIHRoaXMuZnJhbWVTdGFjay5wb3AoKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIG9wY29kZS5ldmFsdWF0ZSh0aGlzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldCBmcmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZVN0YWNrLmN1cnJlbnQ7XG4gIH1cblxuICBnb3RvKG9wOiBVcGRhdGluZ09wY29kZSkge1xuICAgIHRoaXMuZnJhbWUuZ290byhvcCk7XG4gIH1cblxuICB0cnkob3BzOiBVcGRhdGluZ09wU2VxLCBoYW5kbGVyOiBPcHRpb248RXhjZXB0aW9uSGFuZGxlcj4pIHtcbiAgICB0aGlzLmZyYW1lU3RhY2sucHVzaChuZXcgVXBkYXRpbmdWTUZyYW1lKHRoaXMsIG9wcywgaGFuZGxlcikpO1xuICB9XG5cbiAgdGhyb3coKSB7XG4gICAgdGhpcy5mcmFtZS5oYW5kbGVFeGNlcHRpb24oKTtcbiAgICB0aGlzLmZyYW1lU3RhY2sucG9wKCk7XG4gIH1cblxuICBldmFsdWF0ZU9wY29kZShvcGNvZGU6IFVwZGF0aW5nT3Bjb2RlKSB7XG4gICAgb3Bjb2RlLmV2YWx1YXRlKHRoaXMpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhjZXB0aW9uSGFuZGxlciB7XG4gIGhhbmRsZUV4Y2VwdGlvbigpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZNU3RhdGUge1xuICBlbnY6IEVudmlyb25tZW50O1xuICBzY29wZTogU2NvcGU7XG4gIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlO1xuICBzdGFjazogQ2FwdHVyZWRTdGFjaztcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJsb2NrT3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUgaW1wbGVtZW50cyBEZXN0cm95YWJsZUJvdW5kcyB7XG4gIHB1YmxpYyB0eXBlID0gXCJibG9ja1wiO1xuICBwdWJsaWMgbmV4dCA9IG51bGw7XG4gIHB1YmxpYyBwcmV2ID0gbnVsbDtcbiAgcHVibGljIGNoaWxkcmVuOiBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPjtcblxuICBwcm90ZWN0ZWQgZW52OiBFbnZpcm9ubWVudDtcbiAgcHJvdGVjdGVkIHNjb3BlOiBTY29wZTtcbiAgcHJvdGVjdGVkIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlO1xuICBwcm90ZWN0ZWQgc3RhY2s6IENhcHR1cmVkU3RhY2s7XG4gIHByb3RlY3RlZCBib3VuZHM6IERlc3Ryb3lhYmxlQm91bmRzO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBzdGFydDogbnVtYmVyLCBzdGF0ZTogVk1TdGF0ZSwgYm91bmRzOiBEZXN0cm95YWJsZUJvdW5kcywgY2hpbGRyZW46IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KSB7XG4gICAgc3VwZXIoKTtcbiAgICBsZXQgeyBlbnYsIHNjb3BlLCBkeW5hbWljU2NvcGUsIHN0YWNrIH0gPSBzdGF0ZTtcbiAgICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgdGhpcy5zY29wZSA9IHNjb3BlO1xuICAgIHRoaXMuZHluYW1pY1Njb3BlID0gZHluYW1pY1Njb3BlO1xuICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICB0aGlzLmJvdW5kcyA9IGJvdW5kcztcbiAgfVxuXG4gIGFic3RyYWN0IGRpZEluaXRpYWxpemVDaGlsZHJlbigpOiB2b2lkO1xuXG4gIHBhcmVudEVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuYm91bmRzLnBhcmVudEVsZW1lbnQoKTtcbiAgfVxuXG4gIGZpcnN0Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMuZmlyc3ROb2RlKCk7XG4gIH1cblxuICBsYXN0Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMubGFzdE5vZGUoKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgdm0udHJ5KHRoaXMuY2hpbGRyZW4sIG51bGwpO1xuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLmJvdW5kcy5kZXN0cm95KCk7XG4gIH1cblxuICBkaWREZXN0cm95KCkge1xuICAgIHRoaXMuZW52LmRpZERlc3Ryb3kodGhpcy5ib3VuZHMpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUcnlPcGNvZGUgZXh0ZW5kcyBCbG9ja09wY29kZSBpbXBsZW1lbnRzIEV4Y2VwdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdHlwZSA9IFwidHJ5XCI7XG5cbiAgcHJpdmF0ZSBfdGFnOiBUYWdXcmFwcGVyPFVwZGF0YWJsZVRhZz47XG5cbiAgcHJvdGVjdGVkIGJvdW5kczogVXBkYXRhYmxlVHJhY2tlcjtcblxuICBjb25zdHJ1Y3RvcihzdGFydDogbnVtYmVyLCBzdGF0ZTogVk1TdGF0ZSwgYm91bmRzOiBVcGRhdGFibGVUcmFja2VyLCBjaGlsZHJlbjogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4pIHtcbiAgICBzdXBlcihzdGFydCwgc3RhdGUsIGJvdW5kcywgY2hpbGRyZW4pO1xuICAgIHRoaXMudGFnID0gdGhpcy5fdGFnID0gVXBkYXRhYmxlVGFnLmNyZWF0ZShDT05TVEFOVF9UQUcpO1xuICB9XG5cbiAgZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKCkge1xuICAgIHRoaXMuX3RhZy5pbm5lci51cGRhdGUoY29tYmluZVNsaWNlKHRoaXMuY2hpbGRyZW4pKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgdm0udHJ5KHRoaXMuY2hpbGRyZW4sIHRoaXMpO1xuICB9XG5cbiAgaGFuZGxlRXhjZXB0aW9uKCkge1xuICAgIGxldCB7IGVudiwgYm91bmRzLCBjaGlsZHJlbiwgc2NvcGUsIGR5bmFtaWNTY29wZSwgc3RhcnQsIHN0YWNrLCBwcmV2LCBuZXh0IH0gPSB0aGlzO1xuXG4gICAgY2hpbGRyZW4uY2xlYXIoKTtcblxuICAgIGxldCBlbGVtZW50U3RhY2sgPSBFbGVtZW50U3RhY2sucmVzdW1lKFxuICAgICAgZW52LFxuICAgICAgYm91bmRzLFxuICAgICAgYm91bmRzLnJlc2V0KGVudilcbiAgICApO1xuXG4gICAgbGV0IHZtID0gbmV3IFZNKGVudiwgc2NvcGUsIGR5bmFtaWNTY29wZSwgZWxlbWVudFN0YWNrKTtcblxuICAgIGxldCB1cGRhdGluZyA9IG5ldyBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPigpO1xuXG4gICAgdm0uZXhlY3V0ZShzdGFydCwgdm0gPT4ge1xuICAgICAgdm0uc3RhY2sgPSBFdmFsdWF0aW9uU3RhY2sucmVzdG9yZShzdGFjayk7XG4gICAgICB2bS51cGRhdGluZ09wY29kZVN0YWNrLnB1c2godXBkYXRpbmcpO1xuICAgICAgdm0udXBkYXRlV2l0aCh0aGlzKTtcbiAgICAgIHZtLnVwZGF0aW5nT3Bjb2RlU3RhY2sucHVzaChjaGlsZHJlbik7XG4gICAgfSk7XG5cbiAgICB0aGlzLnByZXYgPSBwcmV2O1xuICAgIHRoaXMubmV4dCA9IG5leHQ7XG4gIH1cbn1cblxuY2xhc3MgTGlzdFJldmFsaWRhdGlvbkRlbGVnYXRlIGltcGxlbWVudHMgSXRlcmF0b3JTeW5jaHJvbml6ZXJEZWxlZ2F0ZSB7XG4gIHByaXZhdGUgbWFwOiBEaWN0PEJsb2NrT3Bjb2RlPjtcbiAgcHJpdmF0ZSB1cGRhdGluZzogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT47XG5cbiAgcHJpdmF0ZSBkaWRJbnNlcnQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBkaWREZWxldGUgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG9wY29kZTogTGlzdEJsb2NrT3Bjb2RlLCBwcml2YXRlIG1hcmtlcjogU2ltcGxlLkNvbW1lbnQpIHtcbiAgICB0aGlzLm1hcCA9IG9wY29kZS5tYXA7XG4gICAgdGhpcy51cGRhdGluZyA9IG9wY29kZVsnY2hpbGRyZW4nXTtcbiAgfVxuXG4gIGluc2VydChrZXk6IHN0cmluZywgaXRlbTogUGF0aFJlZmVyZW5jZTxPcGFxdWU+LCBtZW1vOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIGJlZm9yZTogc3RyaW5nKSB7XG4gICAgbGV0IHsgbWFwLCBvcGNvZGUsIHVwZGF0aW5nIH0gPSB0aGlzO1xuICAgIGxldCBuZXh0U2libGluZzogT3B0aW9uPFNpbXBsZS5Ob2RlPiA9IG51bGw7XG4gICAgbGV0IHJlZmVyZW5jZTogT3B0aW9uPEJsb2NrT3Bjb2RlPiA9IG51bGw7XG5cbiAgICBpZiAoYmVmb3JlKSB7XG4gICAgICByZWZlcmVuY2UgPSBtYXBbYmVmb3JlXTtcbiAgICAgIG5leHRTaWJsaW5nID0gcmVmZXJlbmNlWydib3VuZHMnXS5maXJzdE5vZGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV4dFNpYmxpbmcgPSB0aGlzLm1hcmtlcjtcbiAgICB9XG5cbiAgICBsZXQgdm0gPSBvcGNvZGUudm1Gb3JJbnNlcnRpb24obmV4dFNpYmxpbmcpO1xuICAgIGxldCB0cnlPcGNvZGU6IE9wdGlvbjxUcnlPcGNvZGU+ID0gbnVsbDtcblxuICAgIGxldCB7IHN0YXJ0IH0gPSBvcGNvZGU7XG5cbiAgICB2bS5leGVjdXRlKHN0YXJ0LCB2bSA9PiB7XG4gICAgICBtYXBba2V5XSA9IHRyeU9wY29kZSA9IHZtLml0ZXJhdGUobWVtbywgaXRlbSk7XG4gICAgICB2bS51cGRhdGluZ09wY29kZVN0YWNrLnB1c2gobmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCkpO1xuICAgICAgdm0udXBkYXRlV2l0aCh0cnlPcGNvZGUpO1xuICAgICAgdm0udXBkYXRpbmdPcGNvZGVTdGFjay5wdXNoKHRyeU9wY29kZS5jaGlsZHJlbik7XG4gICAgfSk7XG5cbiAgICB1cGRhdGluZy5pbnNlcnRCZWZvcmUodHJ5T3Bjb2RlISwgcmVmZXJlbmNlKTtcblxuICAgIHRoaXMuZGlkSW5zZXJ0ID0gdHJ1ZTtcbiAgfVxuXG4gIHJldGFpbihfa2V5OiBzdHJpbmcsIF9pdGVtOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIF9tZW1vOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4pIHtcbiAgfVxuXG4gIG1vdmUoa2V5OiBzdHJpbmcsIF9pdGVtOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIF9tZW1vOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIGJlZm9yZTogc3RyaW5nKSB7XG4gICAgbGV0IHsgbWFwLCB1cGRhdGluZyB9ID0gdGhpcztcblxuICAgIGxldCBlbnRyeSA9IG1hcFtrZXldO1xuICAgIGxldCByZWZlcmVuY2UgPSBtYXBbYmVmb3JlXSB8fCBudWxsO1xuXG4gICAgaWYgKGJlZm9yZSkge1xuICAgICAgbW92ZUJvdW5kcyhlbnRyeSwgcmVmZXJlbmNlLmZpcnN0Tm9kZSgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbW92ZUJvdW5kcyhlbnRyeSwgdGhpcy5tYXJrZXIpO1xuICAgIH1cblxuICAgIHVwZGF0aW5nLnJlbW92ZShlbnRyeSk7XG4gICAgdXBkYXRpbmcuaW5zZXJ0QmVmb3JlKGVudHJ5LCByZWZlcmVuY2UpO1xuICB9XG5cbiAgZGVsZXRlKGtleTogc3RyaW5nKSB7XG4gICAgbGV0IHsgbWFwIH0gPSB0aGlzO1xuICAgIGxldCBvcGNvZGUgPSBtYXBba2V5XTtcbiAgICBvcGNvZGUuZGlkRGVzdHJveSgpO1xuICAgIGNsZWFyKG9wY29kZSk7XG4gICAgdGhpcy51cGRhdGluZy5yZW1vdmUob3Bjb2RlKTtcbiAgICBkZWxldGUgbWFwW2tleV07XG5cbiAgICB0aGlzLmRpZERlbGV0ZSA9IHRydWU7XG4gIH1cblxuICBkb25lKCkge1xuICAgIHRoaXMub3Bjb2RlLmRpZEluaXRpYWxpemVDaGlsZHJlbih0aGlzLmRpZEluc2VydCB8fCB0aGlzLmRpZERlbGV0ZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIExpc3RCbG9ja09wY29kZSBleHRlbmRzIEJsb2NrT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImxpc3QtYmxvY2tcIjtcbiAgcHVibGljIG1hcCA9IGRpY3Q8QmxvY2tPcGNvZGU+KCk7XG4gIHB1YmxpYyBhcnRpZmFjdHM6IEl0ZXJhdGlvbkFydGlmYWN0cztcblxuICBwcml2YXRlIGxhc3RJdGVyYXRlZDogUmV2aXNpb24gPSBJTklUSUFMO1xuICBwcml2YXRlIF90YWc6IFRhZ1dyYXBwZXI8VXBkYXRhYmxlVGFnPjtcblxuICBjb25zdHJ1Y3RvcihzdGFydDogbnVtYmVyLCBzdGF0ZTogVk1TdGF0ZSwgYm91bmRzOiBUcmFja2VyLCBjaGlsZHJlbjogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4sIGFydGlmYWN0czogSXRlcmF0aW9uQXJ0aWZhY3RzKSB7XG4gICAgc3VwZXIoc3RhcnQsIHN0YXRlLCBib3VuZHMsIGNoaWxkcmVuKTtcbiAgICB0aGlzLmFydGlmYWN0cyA9IGFydGlmYWN0cztcbiAgICBsZXQgX3RhZyA9IHRoaXMuX3RhZyA9IFVwZGF0YWJsZVRhZy5jcmVhdGUoQ09OU1RBTlRfVEFHKTtcbiAgICB0aGlzLnRhZyA9IGNvbWJpbmUoW2FydGlmYWN0cy50YWcsIF90YWddKTtcbiAgfVxuXG4gIGRpZEluaXRpYWxpemVDaGlsZHJlbihsaXN0RGlkQ2hhbmdlID0gdHJ1ZSkge1xuICAgIHRoaXMubGFzdEl0ZXJhdGVkID0gdGhpcy5hcnRpZmFjdHMudGFnLnZhbHVlKCk7XG5cbiAgICBpZiAobGlzdERpZENoYW5nZSkge1xuICAgICAgdGhpcy5fdGFnLmlubmVyLnVwZGF0ZShjb21iaW5lU2xpY2UodGhpcy5jaGlsZHJlbikpO1xuICAgIH1cbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgbGV0IHsgYXJ0aWZhY3RzLCBsYXN0SXRlcmF0ZWQgfSA9IHRoaXM7XG5cbiAgICBpZiAoIWFydGlmYWN0cy50YWcudmFsaWRhdGUobGFzdEl0ZXJhdGVkKSkge1xuICAgICAgbGV0IHsgYm91bmRzIH0gPSB0aGlzO1xuICAgICAgbGV0IHsgZG9tIH0gPSB2bTtcblxuICAgICAgbGV0IG1hcmtlciA9IGRvbS5jcmVhdGVDb21tZW50KCcnKTtcbiAgICAgIGRvbS5pbnNlcnRBZnRlcihib3VuZHMucGFyZW50RWxlbWVudCgpLCBtYXJrZXIsIGJvdW5kcy5sYXN0Tm9kZSgpKTtcblxuICAgICAgbGV0IHRhcmdldCA9IG5ldyBMaXN0UmV2YWxpZGF0aW9uRGVsZWdhdGUodGhpcywgbWFya2VyKTtcbiAgICAgIGxldCBzeW5jaHJvbml6ZXIgPSBuZXcgSXRlcmF0b3JTeW5jaHJvbml6ZXIoeyB0YXJnZXQsIGFydGlmYWN0cyB9KTtcblxuICAgICAgc3luY2hyb25pemVyLnN5bmMoKTtcblxuICAgICAgdGhpcy5wYXJlbnRFbGVtZW50KCkucmVtb3ZlQ2hpbGQobWFya2VyKTtcbiAgICB9XG5cbiAgICAvLyBSdW4gbm93LXVwZGF0ZWQgdXBkYXRpbmcgb3Bjb2Rlc1xuICAgIHN1cGVyLmV2YWx1YXRlKHZtKTtcbiAgfVxuXG4gIHZtRm9ySW5zZXJ0aW9uKG5leHRTaWJsaW5nOiBPcHRpb248U2ltcGxlLk5vZGU+KTogVk0ge1xuICAgIGxldCB7IGVudiwgc2NvcGUsIGR5bmFtaWNTY29wZSB9ID0gdGhpcztcblxuICAgIGxldCBlbGVtZW50U3RhY2sgPSBFbGVtZW50U3RhY2suZm9ySW5pdGlhbFJlbmRlcihcbiAgICAgIHRoaXMuZW52LFxuICAgICAgdGhpcy5ib3VuZHMucGFyZW50RWxlbWVudCgpLFxuICAgICAgbmV4dFNpYmxpbmdcbiAgICApO1xuXG4gICAgcmV0dXJuIG5ldyBWTShlbnYsIHNjb3BlLCBkeW5hbWljU2NvcGUsIGVsZW1lbnRTdGFjayk7XG4gIH1cbn1cblxuY2xhc3MgVXBkYXRpbmdWTUZyYW1lIHtcbiAgcHJpdmF0ZSBjdXJyZW50OiBPcHRpb248VXBkYXRpbmdPcGNvZGU+O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdm06IFVwZGF0aW5nVk0sIHByaXZhdGUgb3BzOiBVcGRhdGluZ09wU2VxLCBwcml2YXRlIGV4Y2VwdGlvbkhhbmRsZXI6IE9wdGlvbjxFeGNlcHRpb25IYW5kbGVyPikge1xuICAgIHRoaXMudm0gPSB2bTtcbiAgICB0aGlzLm9wcyA9IG9wcztcbiAgICB0aGlzLmN1cnJlbnQgPSBvcHMuaGVhZCgpO1xuICB9XG5cbiAgZ290byhvcDogVXBkYXRpbmdPcGNvZGUpIHtcbiAgICB0aGlzLmN1cnJlbnQgPSBvcDtcbiAgfVxuXG4gIG5leHRTdGF0ZW1lbnQoKTogT3B0aW9uPFVwZGF0aW5nT3Bjb2RlPiB7XG4gICAgbGV0IHsgY3VycmVudCwgb3BzIH0gPSB0aGlzO1xuICAgIGlmIChjdXJyZW50KSB0aGlzLmN1cnJlbnQgPSBvcHMubmV4dE5vZGUoY3VycmVudCk7XG4gICAgcmV0dXJuIGN1cnJlbnQ7XG4gIH1cblxuICBoYW5kbGVFeGNlcHRpb24oKSB7XG4gICAgaWYgKHRoaXMuZXhjZXB0aW9uSGFuZGxlcikge1xuICAgICAgdGhpcy5leGNlcHRpb25IYW5kbGVyLmhhbmRsZUV4Y2VwdGlvbigpO1xuICAgIH1cbiAgfVxufVxuIl19

@@ -8,3 +8,3 @@ import './lib/bootstrap';

export { AttributeManager as IAttributeManager, AttributeManager, PropertyManager, INPUT_VALUE_PROPERTY_MANAGER, defaultManagers, defaultAttributeManagers, defaultPropertyManagers, readDOMAttr } from './lib/dom/attribute-managers';
export { Register, debugSlice } from './lib/opcodes';
export { Register } from './lib/opcodes';
export { normalizeTextValue } from './lib/compiled/opcodes/content';

@@ -25,2 +25,2 @@ export { setDebuggerCallback, resetDebuggerCallback } from './lib/compiled/opcodes/debugger';

export { ConcreteBounds } from './lib/bounds';
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEFBQWlCLEFBQUM7QUFFekIsQUFBTyxTQUFFLEFBQU8sV0FBSSxBQUFlLEFBQTZCLHVCQUFNLEFBQWdCLEFBQUM7QUFFdkYsQUFBTyxTQUFFLEFBQWMsZ0JBQUUsQUFBbUIscUJBQUUsQUFBa0Isb0JBQUUsQUFBb0IsQUFBRSw0QkFBTSxBQUFrQixBQUFDO0FBRWpILEFBQU8sU0FDSixBQUFPLFdBQUksQUFBZ0IsQUFDN0Isd0JBQU0sQUFBZ0MsQUFBQztBQUV4QyxBQUFPLFNBRUwsQUFBYSxBQUNkLHFCQUFNLEFBQWdCLEFBQUM7QUFPeEIsQUFBTyxTQUNMLEFBQXNCLHdCQUN0QixBQUF1QixBQUd4QiwrQkFBTSxBQUF1QixBQUFDO0FBRS9CLEFBQU8sU0FDTCxBQUFnQixvQkFBSSxBQUFpQixtQkFDckMsQUFBZ0Isa0JBQ2hCLEFBQWUsaUJBQ2YsQUFBNEIsOEJBQzVCLEFBQWUsaUJBQ2YsQUFBd0IsMEJBQ3hCLEFBQXVCLHlCQUN2QixBQUFXLEFBQ1osbUJBQU0sQUFBOEIsQUFBQztBQUV0QyxBQUFPLFNBQ0wsQUFBUSxVQUNSLEFBQVUsQUFDWCxrQkFBTSxBQUFlLEFBQUM7QUFFdkIsQUFBTyxTQUNMLEFBQWtCLEFBQ25CLDBCQUFNLEFBQWdDLEFBQUM7QUFFeEMsQUFBTyxTQUNMLEFBQW1CLHFCQUNuQixBQUFxQixBQUV0Qiw2QkFBTSxBQUFpQyxBQUFDO0FBRXpDLEFBQU8sU0FDTCxBQUFPLFdBQUksQUFBYSxBQUN6QixxQkFBTSxBQUErQixBQUFDO0FBRXZDLEFBQU8sU0FDTCxBQUFNLFVBQUksQUFBVyxhQUNyQixBQUFPLFdBQUksQUFBWSxjQUd2QixBQUFXLGFBQ1gsQUFBSSxRQUFJLEFBQWlCLEFBQzFCLHlCQUFNLEFBQXdCLEFBQUM7QUFFaEMsQUFBTyxTQUNMLEFBQVUsWUFDVixBQUFrQixvQkFLbEIsQUFBZ0IsQUFDakIsd0JBQU0sQUFBZSxBQUFDO0FBRXZCLEFBQU8sU0FBa0IsQUFBVSxZQUFFLEFBQVksQUFBa0Isb0JBQU0sQUFBVSxBQUFDO0FBV3BGLEFBQU8sU0FBYyxBQUFZLEFBQUUsb0JBQU0sQUFBYyxBQUFDO0FBRXhELEFBQU8sU0FDTCxBQUFLLE9BQ0wsQUFBTyxXQUFJLEFBQVcsQUFHdkIsbUJBQU0sQUFBbUIsQUFBQztBQUUzQixBQUFPLFNBQ0wsQUFBaUIsQUFDbEIseUJBQU0sQUFBZSxBQUFDO0FBRXZCLEFBQU8sU0FJTCxBQUFtQixxQkFJbkIsQUFBcUIsQUFDdEIsNkJBQU0sQUFBNEIsQUFBQztBQU1wQyxBQUFPLFNBQUUsQUFBTyxXQUFJLEFBQVUsWUFBRSxBQUFVLGNBQUksQUFBVyxhQUFFLEFBQW1CLHFCQUFFLEFBQVksY0FBRSxBQUFnQixBQUFFLHdCQUFNLEFBQWtCLEFBQUM7QUFDekksT0FBUSxLQUFLLEFBQU0sWUFBTSxBQUFzQixBQUFDO0FBQ2hELEFBQU8sU0FBRSxBQUFNLEFBQUUsQUFBQztBQUNsQixBQUFPLFNBQUUsQUFBWSxBQUFxQixvQkFBTSxBQUFlLEFBQUM7QUFDaEUsQUFBTyxTQUFxQixBQUFjLEFBQUUsc0JBQU0sQUFBYyxBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICcuL2xpYi9ib290c3RyYXAnO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIHRlbXBsYXRlRmFjdG9yeSwgVGVtcGxhdGVGYWN0b3J5LCBUZW1wbGF0ZSB9IGZyb20gJy4vbGliL3RlbXBsYXRlJztcblxuZXhwb3J0IHsgTlVMTF9SRUZFUkVOQ0UsIFVOREVGSU5FRF9SRUZFUkVOQ0UsIFByaW1pdGl2ZVJlZmVyZW5jZSwgQ29uZGl0aW9uYWxSZWZlcmVuY2UgfSBmcm9tICcuL2xpYi9yZWZlcmVuY2VzJztcblxuZXhwb3J0IHtcbiAgIGRlZmF1bHQgYXMgT3Bjb2RlQnVpbGRlckRTTFxufSBmcm9tICcuL2xpYi9jb21waWxlZC9vcGNvZGVzL2J1aWxkZXInO1xuXG5leHBvcnQge1xuICBDb21waWxhYmxlTGF5b3V0LFxuICBjb21waWxlTGF5b3V0XG59IGZyb20gJy4vbGliL2NvbXBpbGVyJztcblxuZXhwb3J0IHtcbiAgQ29tcG9uZW50QnVpbGRlcixcbiAgQ29tcG9uZW50QXJnc1xufSBmcm9tICcuL2xpYi9vcGNvZGUtYnVpbGRlcic7XG5cbmV4cG9ydCB7XG4gIENvbXBpbGVkU3RhdGljVGVtcGxhdGUsXG4gIENvbXBpbGVkRHluYW1pY1RlbXBsYXRlLFxuICBDb21waWxlZER5bmFtaWNCbG9jayxcbiAgQ29tcGlsZWREeW5hbWljUHJvZ3JhbVxufSBmcm9tICcuL2xpYi9jb21waWxlZC9ibG9ja3MnO1xuXG5leHBvcnQge1xuICBBdHRyaWJ1dGVNYW5hZ2VyIGFzIElBdHRyaWJ1dGVNYW5hZ2VyLFxuICBBdHRyaWJ1dGVNYW5hZ2VyLFxuICBQcm9wZXJ0eU1hbmFnZXIsXG4gIElOUFVUX1ZBTFVFX1BST1BFUlRZX01BTkFHRVIsXG4gIGRlZmF1bHRNYW5hZ2VycyxcbiAgZGVmYXVsdEF0dHJpYnV0ZU1hbmFnZXJzLFxuICBkZWZhdWx0UHJvcGVydHlNYW5hZ2VycyxcbiAgcmVhZERPTUF0dHJcbn0gZnJvbSAnLi9saWIvZG9tL2F0dHJpYnV0ZS1tYW5hZ2Vycyc7XG5cbmV4cG9ydCB7XG4gIFJlZ2lzdGVyLFxuICBkZWJ1Z1NsaWNlXG59IGZyb20gJy4vbGliL29wY29kZXMnO1xuXG5leHBvcnQge1xuICBub3JtYWxpemVUZXh0VmFsdWVcbn0gZnJvbSAnLi9saWIvY29tcGlsZWQvb3Bjb2Rlcy9jb250ZW50JztcblxuZXhwb3J0IHtcbiAgc2V0RGVidWdnZXJDYWxsYmFjayxcbiAgcmVzZXREZWJ1Z2dlckNhbGxiYWNrLFxuICBEZWJ1Z0NhbGxiYWNrXG59IGZyb20gJy4vbGliL2NvbXBpbGVkL29wY29kZXMvZGVidWdnZXInO1xuXG5leHBvcnQge1xuICBkZWZhdWx0IGFzIGdldER5bmFtaWNWYXJcbn0gZnJvbSAnLi9saWIvaGVscGVycy9nZXQtZHluYW1pYy12YXInO1xuXG5leHBvcnQge1xuICBCbG9ja3MgYXMgQmxvY2tNYWNyb3MsXG4gIElubGluZXMgYXMgSW5saW5lTWFjcm9zLFxuICBCbG9ja01hY3JvLFxuICBNaXNzaW5nQmxvY2tNYWNybyxcbiAgY29tcGlsZUxpc3QsXG4gIGV4cHIgYXMgY29tcGlsZUV4cHJlc3Npb25cbn0gZnJvbSAnLi9saWIvc3ludGF4L2Z1bmN0aW9ucyc7XG5cbmV4cG9ydCB7XG4gIENsaWVudFNpZGUsXG4gIENvbXBpbGFibGVUZW1wbGF0ZSxcbiAgU2Nhbm5lZEJsb2NrLFxuICBTY2FubmVkUHJvZ3JhbSxcbiAgQmxvY2ssXG4gIFByb2dyYW0sXG4gIGNvbXBpbGVTdGF0ZW1lbnRcbn0gZnJvbSAnLi9saWIvc2Nhbm5lcic7XG5cbmV4cG9ydCB7IFB1YmxpY1ZNIGFzIFZNLCBVcGRhdGluZ1ZNLCBSZW5kZXJSZXN1bHQsIEl0ZXJhdG9yUmVzdWx0IH0gZnJvbSAnLi9saWIvdm0nO1xuXG5leHBvcnQge1xuICBJQXJndW1lbnRzIGFzIEFyZ3VtZW50cyxcbiAgSUNhcHR1cmVkQXJndW1lbnRzIGFzIENhcHR1cmVkQXJndW1lbnRzLFxuICBJUG9zaXRpb25hbEFyZ3VtZW50cyBhcyBQb3NpdGlvbmFsQXJndW1lbnRzLFxuICBJQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzIGFzIENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50cyxcbiAgSU5hbWVkQXJndW1lbnRzIGFzIE5hbWVkQXJndW1lbnRzLFxuICBJQ2FwdHVyZWROYW1lZEFyZ3VtZW50cyBhcyBDYXB0dXJlZE5hbWVkQXJndW1lbnRzLFxufSBmcm9tICcuL2xpYi92bS9hcmd1bWVudHMnO1xuXG5leHBvcnQgeyBTYWZlU3RyaW5nLCBpc1NhZmVTdHJpbmcgfSBmcm9tICcuL2xpYi91cHNlcnQnO1xuXG5leHBvcnQge1xuICBTY29wZSxcbiAgZGVmYXVsdCBhcyBFbnZpcm9ubWVudCxcbiAgSGVscGVyLFxuICBEeW5hbWljU2NvcGUsXG59IGZyb20gJy4vbGliL2Vudmlyb25tZW50JztcblxuZXhwb3J0IHtcbiAgUGFydGlhbERlZmluaXRpb25cbn0gZnJvbSAnLi9saWIvcGFydGlhbCc7XG5cbmV4cG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50Q2xhc3MsXG4gIENvbXBvbmVudE1hbmFnZXIsXG4gIENvbXBvbmVudERlZmluaXRpb24sXG4gIENvbXBvbmVudExheW91dEJ1aWxkZXIsXG4gIENvbXBvbmVudEF0dHJzQnVpbGRlcixcbiAgUHJlcGFyZWRBcmd1bWVudHMsXG4gIGlzQ29tcG9uZW50RGVmaW5pdGlvblxufSBmcm9tICcuL2xpYi9jb21wb25lbnQvaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCB7XG4gIE1vZGlmaWVyTWFuYWdlclxufSBmcm9tICcuL2xpYi9tb2RpZmllci9pbnRlcmZhY2VzJztcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBET01DaGFuZ2VzLCBET01DaGFuZ2VzIGFzIElET01DaGFuZ2VzLCBET01UcmVlQ29uc3RydWN0aW9uLCBpc1doaXRlc3BhY2UsIGluc2VydEhUTUxCZWZvcmUgfSBmcm9tICcuL2xpYi9kb20vaGVscGVyJztcbmltcG9ydCAgKiBhcyBTaW1wbGUgZnJvbSAnLi9saWIvZG9tL2ludGVyZmFjZXMnO1xuZXhwb3J0IHsgU2ltcGxlIH07XG5leHBvcnQgeyBFbGVtZW50U3RhY2ssIEVsZW1lbnRPcGVyYXRpb25zIH0gZnJvbSAnLi9saWIvYnVpbGRlcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEJvdW5kcywgQ29uY3JldGVCb3VuZHMgfSBmcm9tICcuL2xpYi9ib3VuZHMnO1xuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEFBQWlCLEFBQUM7QUFFekIsQUFBTyxTQUFFLEFBQU8sV0FBSSxBQUFlLEFBQTZCLHVCQUFNLEFBQWdCLEFBQUM7QUFFdkYsQUFBTyxTQUFFLEFBQWMsZ0JBQUUsQUFBbUIscUJBQUUsQUFBa0Isb0JBQUUsQUFBb0IsQUFBRSw0QkFBTSxBQUFrQixBQUFDO0FBRWpILEFBQU8sU0FDSixBQUFPLFdBQUksQUFBZ0IsQUFDN0Isd0JBQU0sQUFBZ0MsQUFBQztBQUV4QyxBQUFPLFNBRUwsQUFBYSxBQUNkLHFCQUFNLEFBQWdCLEFBQUM7QUFPeEIsQUFBTyxTQUNMLEFBQXNCLHdCQUN0QixBQUF1QixBQUd4QiwrQkFBTSxBQUF1QixBQUFDO0FBRS9CLEFBQU8sU0FDTCxBQUFnQixvQkFBSSxBQUFpQixtQkFDckMsQUFBZ0Isa0JBQ2hCLEFBQWUsaUJBQ2YsQUFBNEIsOEJBQzVCLEFBQWUsaUJBQ2YsQUFBd0IsMEJBQ3hCLEFBQXVCLHlCQUN2QixBQUFXLEFBQ1osbUJBQU0sQUFBOEIsQUFBQztBQUV0QyxBQUFPLFNBQ0wsQUFBUSxBQUNULGdCQUFNLEFBQWUsQUFBQztBQUV2QixBQUFPLFNBQ0wsQUFBa0IsQUFDbkIsMEJBQU0sQUFBZ0MsQUFBQztBQUV4QyxBQUFPLFNBQ0wsQUFBbUIscUJBQ25CLEFBQXFCLEFBRXRCLDZCQUFNLEFBQWlDLEFBQUM7QUFFekMsQUFBTyxTQUNMLEFBQU8sV0FBSSxBQUFhLEFBQ3pCLHFCQUFNLEFBQStCLEFBQUM7QUFFdkMsQUFBTyxTQUNMLEFBQU0sVUFBSSxBQUFXLGFBQ3JCLEFBQU8sV0FBSSxBQUFZLGNBR3ZCLEFBQVcsYUFDWCxBQUFJLFFBQUksQUFBaUIsQUFDMUIseUJBQU0sQUFBd0IsQUFBQztBQUVoQyxBQUFPLFNBQ0wsQUFBVSxZQUNWLEFBQWtCLG9CQUtsQixBQUFnQixBQUNqQix3QkFBTSxBQUFlLEFBQUM7QUFFdkIsQUFBTyxTQUFrQixBQUFVLFlBQUUsQUFBWSxBQUFrQixvQkFBTSxBQUFVLEFBQUM7QUFXcEYsQUFBTyxTQUFjLEFBQVksQUFBRSxvQkFBTSxBQUFjLEFBQUM7QUFFeEQsQUFBTyxTQUNMLEFBQUssT0FDTCxBQUFPLFdBQUksQUFBVyxBQUd2QixtQkFBTSxBQUFtQixBQUFDO0FBRTNCLEFBQU8sU0FDTCxBQUFpQixBQUNsQix5QkFBTSxBQUFlLEFBQUM7QUFFdkIsQUFBTyxTQUlMLEFBQW1CLHFCQUluQixBQUFxQixBQUN0Qiw2QkFBTSxBQUE0QixBQUFDO0FBTXBDLEFBQU8sU0FBRSxBQUFPLFdBQUksQUFBVSxZQUFFLEFBQVUsY0FBSSxBQUFXLGFBQUUsQUFBbUIscUJBQUUsQUFBWSxjQUFFLEFBQWdCLEFBQUUsd0JBQU0sQUFBa0IsQUFBQztBQUN6SSxPQUFRLEtBQUssQUFBTSxZQUFNLEFBQXNCLEFBQUM7QUFDaEQsQUFBTyxTQUFFLEFBQU0sQUFBRSxBQUFDO0FBQ2xCLEFBQU8sU0FBRSxBQUFZLEFBQXFCLG9CQUFNLEFBQWUsQUFBQztBQUNoRSxBQUFPLFNBQXFCLEFBQWMsQUFBRSxzQkFBTSxBQUFjLEFBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJy4vbGliL2Jvb3RzdHJhcCc7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgdGVtcGxhdGVGYWN0b3J5LCBUZW1wbGF0ZUZhY3RvcnksIFRlbXBsYXRlIH0gZnJvbSAnLi9saWIvdGVtcGxhdGUnO1xuXG5leHBvcnQgeyBOVUxMX1JFRkVSRU5DRSwgVU5ERUZJTkVEX1JFRkVSRU5DRSwgUHJpbWl0aXZlUmVmZXJlbmNlLCBDb25kaXRpb25hbFJlZmVyZW5jZSB9IGZyb20gJy4vbGliL3JlZmVyZW5jZXMnO1xuXG5leHBvcnQge1xuICAgZGVmYXVsdCBhcyBPcGNvZGVCdWlsZGVyRFNMXG59IGZyb20gJy4vbGliL2NvbXBpbGVkL29wY29kZXMvYnVpbGRlcic7XG5cbmV4cG9ydCB7XG4gIENvbXBpbGFibGVMYXlvdXQsXG4gIGNvbXBpbGVMYXlvdXRcbn0gZnJvbSAnLi9saWIvY29tcGlsZXInO1xuXG5leHBvcnQge1xuICBDb21wb25lbnRCdWlsZGVyLFxuICBDb21wb25lbnRBcmdzXG59IGZyb20gJy4vbGliL29wY29kZS1idWlsZGVyJztcblxuZXhwb3J0IHtcbiAgQ29tcGlsZWRTdGF0aWNUZW1wbGF0ZSxcbiAgQ29tcGlsZWREeW5hbWljVGVtcGxhdGUsXG4gIENvbXBpbGVkRHluYW1pY0Jsb2NrLFxuICBDb21waWxlZER5bmFtaWNQcm9ncmFtXG59IGZyb20gJy4vbGliL2NvbXBpbGVkL2Jsb2Nrcyc7XG5cbmV4cG9ydCB7XG4gIEF0dHJpYnV0ZU1hbmFnZXIgYXMgSUF0dHJpYnV0ZU1hbmFnZXIsXG4gIEF0dHJpYnV0ZU1hbmFnZXIsXG4gIFByb3BlcnR5TWFuYWdlcixcbiAgSU5QVVRfVkFMVUVfUFJPUEVSVFlfTUFOQUdFUixcbiAgZGVmYXVsdE1hbmFnZXJzLFxuICBkZWZhdWx0QXR0cmlidXRlTWFuYWdlcnMsXG4gIGRlZmF1bHRQcm9wZXJ0eU1hbmFnZXJzLFxuICByZWFkRE9NQXR0clxufSBmcm9tICcuL2xpYi9kb20vYXR0cmlidXRlLW1hbmFnZXJzJztcblxuZXhwb3J0IHtcbiAgUmVnaXN0ZXIsXG59IGZyb20gJy4vbGliL29wY29kZXMnO1xuXG5leHBvcnQge1xuICBub3JtYWxpemVUZXh0VmFsdWVcbn0gZnJvbSAnLi9saWIvY29tcGlsZWQvb3Bjb2Rlcy9jb250ZW50JztcblxuZXhwb3J0IHtcbiAgc2V0RGVidWdnZXJDYWxsYmFjayxcbiAgcmVzZXREZWJ1Z2dlckNhbGxiYWNrLFxuICBEZWJ1Z0NhbGxiYWNrXG59IGZyb20gJy4vbGliL2NvbXBpbGVkL29wY29kZXMvZGVidWdnZXInO1xuXG5leHBvcnQge1xuICBkZWZhdWx0IGFzIGdldER5bmFtaWNWYXJcbn0gZnJvbSAnLi9saWIvaGVscGVycy9nZXQtZHluYW1pYy12YXInO1xuXG5leHBvcnQge1xuICBCbG9ja3MgYXMgQmxvY2tNYWNyb3MsXG4gIElubGluZXMgYXMgSW5saW5lTWFjcm9zLFxuICBCbG9ja01hY3JvLFxuICBNaXNzaW5nQmxvY2tNYWNybyxcbiAgY29tcGlsZUxpc3QsXG4gIGV4cHIgYXMgY29tcGlsZUV4cHJlc3Npb25cbn0gZnJvbSAnLi9saWIvc3ludGF4L2Z1bmN0aW9ucyc7XG5cbmV4cG9ydCB7XG4gIENsaWVudFNpZGUsXG4gIENvbXBpbGFibGVUZW1wbGF0ZSxcbiAgU2Nhbm5lZEJsb2NrLFxuICBTY2FubmVkUHJvZ3JhbSxcbiAgQmxvY2ssXG4gIFByb2dyYW0sXG4gIGNvbXBpbGVTdGF0ZW1lbnRcbn0gZnJvbSAnLi9saWIvc2Nhbm5lcic7XG5cbmV4cG9ydCB7IFB1YmxpY1ZNIGFzIFZNLCBVcGRhdGluZ1ZNLCBSZW5kZXJSZXN1bHQsIEl0ZXJhdG9yUmVzdWx0IH0gZnJvbSAnLi9saWIvdm0nO1xuXG5leHBvcnQge1xuICBJQXJndW1lbnRzIGFzIEFyZ3VtZW50cyxcbiAgSUNhcHR1cmVkQXJndW1lbnRzIGFzIENhcHR1cmVkQXJndW1lbnRzLFxuICBJUG9zaXRpb25hbEFyZ3VtZW50cyBhcyBQb3NpdGlvbmFsQXJndW1lbnRzLFxuICBJQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzIGFzIENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50cyxcbiAgSU5hbWVkQXJndW1lbnRzIGFzIE5hbWVkQXJndW1lbnRzLFxuICBJQ2FwdHVyZWROYW1lZEFyZ3VtZW50cyBhcyBDYXB0dXJlZE5hbWVkQXJndW1lbnRzLFxufSBmcm9tICcuL2xpYi92bS9hcmd1bWVudHMnO1xuXG5leHBvcnQgeyBTYWZlU3RyaW5nLCBpc1NhZmVTdHJpbmcgfSBmcm9tICcuL2xpYi91cHNlcnQnO1xuXG5leHBvcnQge1xuICBTY29wZSxcbiAgZGVmYXVsdCBhcyBFbnZpcm9ubWVudCxcbiAgSGVscGVyLFxuICBEeW5hbWljU2NvcGUsXG59IGZyb20gJy4vbGliL2Vudmlyb25tZW50JztcblxuZXhwb3J0IHtcbiAgUGFydGlhbERlZmluaXRpb25cbn0gZnJvbSAnLi9saWIvcGFydGlhbCc7XG5cbmV4cG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50Q2xhc3MsXG4gIENvbXBvbmVudE1hbmFnZXIsXG4gIENvbXBvbmVudERlZmluaXRpb24sXG4gIENvbXBvbmVudExheW91dEJ1aWxkZXIsXG4gIENvbXBvbmVudEF0dHJzQnVpbGRlcixcbiAgUHJlcGFyZWRBcmd1bWVudHMsXG4gIGlzQ29tcG9uZW50RGVmaW5pdGlvblxufSBmcm9tICcuL2xpYi9jb21wb25lbnQvaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCB7XG4gIE1vZGlmaWVyTWFuYWdlclxufSBmcm9tICcuL2xpYi9tb2RpZmllci9pbnRlcmZhY2VzJztcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBET01DaGFuZ2VzLCBET01DaGFuZ2VzIGFzIElET01DaGFuZ2VzLCBET01UcmVlQ29uc3RydWN0aW9uLCBpc1doaXRlc3BhY2UsIGluc2VydEhUTUxCZWZvcmUgfSBmcm9tICcuL2xpYi9kb20vaGVscGVyJztcbmltcG9ydCAgKiBhcyBTaW1wbGUgZnJvbSAnLi9saWIvZG9tL2ludGVyZmFjZXMnO1xuZXhwb3J0IHsgU2ltcGxlIH07XG5leHBvcnQgeyBFbGVtZW50U3RhY2ssIEVsZW1lbnRPcGVyYXRpb25zIH0gZnJvbSAnLi9saWIvYnVpbGRlcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEJvdW5kcywgQ29uY3JldGVCb3VuZHMgfSBmcm9tICcuL2xpYi9ib3VuZHMnO1xuIl19

@@ -10,3 +10,3 @@ 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; }

import { clear } from './bounds';
import { Stack, assert, expect } from '@glimmer/util';
import { Stack } from '@glimmer/util';
import { SimpleElementOperations } from './compiled/opcodes/dom';

@@ -99,11 +99,11 @@

ElementStack.prototype.expectConstructing = function expectConstructing(method) {
return expect(this.constructing, method + ' should only be called while constructing an element');
return this.constructing;
};
ElementStack.prototype.expectOperations = function expectOperations(method) {
return expect(this.operations, method + ' should only be called while constructing an element');
return this.operations;
};
ElementStack.prototype.block = function block() {
return expect(this.blockStack.current, "Expected a current block tracker");
return this.blockStack.current;
};

@@ -118,3 +118,3 @@

// LOGGER.debug(`-> element stack ${this.elementStack.toArray().map(e => e.tagName).join(', ')}`);
this.element = expect(elementStack.current, "can't pop past the last element");
this.element = elementStack.current;
this.nextSibling = nextSiblingStack.current;

@@ -163,3 +163,3 @@ return topElement;

this.block().finalize(this);
return expect(this.blockStack.pop(), "Expected popBlock to return a block");
return this.blockStack.pop();
};

@@ -178,3 +178,3 @@

var parent = this.element;
var element = expect(this.constructing, 'flushElement should only be called when constructing an element');
var element = this.constructing;
this.dom.insertBefore(parent, element, this.nextSibling);

@@ -406,13 +406,7 @@ this.constructing = null;

BlockListTracker.prototype.openElement = function openElement(_element) {
assert(false, 'Cannot openElement directly inside a block list');
};
BlockListTracker.prototype.openElement = function openElement(_element) {};
BlockListTracker.prototype.closeElement = function closeElement() {
assert(false, 'Cannot closeElement directly inside a block list');
};
BlockListTracker.prototype.closeElement = function closeElement() {};
BlockListTracker.prototype.newNode = function newNode(_node) {
assert(false, 'Cannot create a new node directly inside a block list');
};
BlockListTracker.prototype.newNode = function newNode(_node) {};

@@ -427,2 +421,2 @@ BlockListTracker.prototype.newBounds = function newBounds(_bounds) {};

}();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxBQUFlLFNBQTZCLEFBQUssQUFBRSxhQUFNLEFBQVUsQUFBQztBQUlwRSxBQUFPLFNBQXVCLEFBQUssT0FBOEIsQUFBTSxRQUFFLEFBQU0sQUFBRSxjQUFNLEFBQWUsQUFBQztBQVF2RyxBQUFPLFNBQ0wsQUFBdUIsQUFDeEIsK0JBQU0sQUFBd0IsQUFBQyxBQVloQzs7O0FBQ0UsbUJBQW9CLEFBQVU7OztBQUFWLGFBQUksT0FBSixBQUFJLEFBQU0sQUFBSTtBQUFDOztvQkFFbkMsQUFBUztBQUNQLEFBQU0sZUFBQyxBQUFJLEtBQUMsQUFBSSxBQUFDLEFBQ25CO0FBQUMsQUFDRixBQUVEOzs7Ozs7QUFDRSxrQkFBb0IsQUFBVTs7O0FBQVYsYUFBSSxPQUFKLEFBQUksQUFBTSxBQUFJO0FBQUM7O21CQUVuQyxBQUFRO0FBQ04sQUFBTSxlQUFDLEFBQUksS0FBQyxBQUFJLEFBQUMsQUFDbkI7QUFBQyxBQUNGOzs7OztBQVVELEFBQU07QUFHSixzQkFBWSxBQUFjOzs7QUFDeEIsQUFBSSxhQUFDLEFBQU0sU0FBRyxBQUFNLEFBQUMsQUFDdkI7QUFBQzs7dUJBRUQsQUFBYTtBQUNYLEFBQU0sZUFBQyxBQUFJLEtBQUMsQUFBTSxPQUFDLEFBQWEsQUFBRSxBQUFDLEFBQ3JDO0FBQUM7O3VCQUVELEFBQVM7QUFDUCxBQUFNLGVBQUMsQUFBSSxLQUFDLEFBQU0sT0FBQyxBQUFTLEFBQUUsQUFBQyxBQUNqQztBQUFDOzt1QkFFRCxBQUFRO0FBQ04sQUFBTSxlQUFDLEFBQUksS0FBQyxBQUFNLE9BQUMsQUFBUSxBQUFFLEFBQUMsQUFDaEM7QUFBQzs7dUJBRUQsQUFBTSx5QkFBQyxBQUFjO0FBQ25CLEFBQUksYUFBQyxBQUFNLFNBQUcsQUFBTSxBQUFDLEFBQ3ZCO0FBQUMsQUFDRjs7OztBQUVELEFBQU07QUE0Qkos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b3J0IEJvdW5kcywgeyBDdXJzb3IsIERlc3Ryb3lhYmxlQm91bmRzLCBjbGVhciB9IGZyb20gJy4vYm91bmRzJztcblxuaW1wb3J0IHsgRE9NQ2hhbmdlcywgRE9NVHJlZUNvbnN0cnVjdGlvbiB9IGZyb20gJy4vZG9tL2hlbHBlcic7XG5cbmltcG9ydCB7IE9wdGlvbiwgRGVzdHJveWFibGUsIFN0YWNrLCBMaW5rZWRMaXN0LCBMaW5rZWRMaXN0Tm9kZSwgYXNzZXJ0LCBleHBlY3QgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuL2Vudmlyb25tZW50JztcblxuaW1wb3J0IHsgVk0gfSBmcm9tICcuL3ZtJztcblxuaW1wb3J0IHsgVmVyc2lvbmVkUmVmZXJlbmNlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcblxuaW1wb3J0IHtcbiAgU2ltcGxlRWxlbWVudE9wZXJhdGlvbnNcbn0gZnJvbSAnLi9jb21waWxlZC9vcGNvZGVzL2RvbSc7XG5cbmltcG9ydCAqIGFzIFNpbXBsZSBmcm9tICcuL2RvbS9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGludGVyZmFjZSBGaXJzdE5vZGUge1xuICBmaXJzdE5vZGUoKTogT3B0aW9uPFNpbXBsZS5Ob2RlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMYXN0Tm9kZSB7XG4gIGxhc3ROb2RlKCk6IE9wdGlvbjxTaW1wbGUuTm9kZT47XG59XG5cbmNsYXNzIEZpcnN0IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBub2RlOiBOb2RlKSB7IH1cblxuICBmaXJzdE5vZGUoKTogTm9kZSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZTtcbiAgfVxufVxuXG5jbGFzcyBMYXN0IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBub2RlOiBOb2RlKSB7IH1cblxuICBsYXN0Tm9kZSgpOiBOb2RlIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRWxlbWVudE9wZXJhdGlvbnMge1xuICBhZGRTdGF0aWNBdHRyaWJ1dGUoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQ7XG4gIGFkZFN0YXRpY0F0dHJpYnV0ZU5TKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lc3BhY2U6IHN0cmluZywgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcbiAgYWRkRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZTogc3RyaW5nLCB2YWx1ZTogVmVyc2lvbmVkUmVmZXJlbmNlPHN0cmluZz4sIGlzVHJ1c3Rpbmc6IGJvb2xlYW4pOiB2b2lkO1xuICBhZGREeW5hbWljQXR0cmlidXRlTlMoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5hbWVzcGFjZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBWZXJzaW9uZWRSZWZlcmVuY2U8c3RyaW5nPiwgaXNUcnVzdGluZzogYm9vbGVhbik6IHZvaWQ7XG4gIGZsdXNoKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCB2bTogVk0pOiB2b2lkO1xufVxuXG5leHBvcnQgY2xhc3MgRnJhZ21lbnQgaW1wbGVtZW50cyBCb3VuZHMge1xuICBwcml2YXRlIGJvdW5kczogQm91bmRzO1xuXG4gIGNvbnN0cnVjdG9yKGJvdW5kczogQm91bmRzKSB7XG4gICAgdGhpcy5ib3VuZHMgPSBib3VuZHM7XG4gIH1cblxuICBwYXJlbnRFbGVtZW50KCk6IFNpbXBsZS5FbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICB9XG5cbiAgZmlyc3ROb2RlKCk6IE9wdGlvbjxTaW1wbGUuTm9kZT4ge1xuICAgIHJldHVybiB0aGlzLmJvdW5kcy5maXJzdE5vZGUoKTtcbiAgfVxuXG4gIGxhc3ROb2RlKCk6IE9wdGlvbjxTaW1wbGUuTm9kZT4ge1xuICAgIHJldHVybiB0aGlzLmJvdW5kcy5sYXN0Tm9kZSgpO1xuICB9XG5cbiAgdXBkYXRlKGJvdW5kczogQm91bmRzKSB7XG4gICAgdGhpcy5ib3VuZHMgPSBib3VuZHM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVsZW1lbnRTdGFjayBpbXBsZW1lbnRzIEN1cnNvciB7XG4gIHB1YmxpYyBuZXh0U2libGluZzogT3B0aW9uPFNpbXBsZS5Ob2RlPjtcbiAgcHVibGljIGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbjtcbiAgcHVibGljIHVwZGF0ZU9wZXJhdGlvbnM6IERPTUNoYW5nZXM7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rpbmc6IE9wdGlvbjxTaW1wbGUuRWxlbWVudD4gPSBudWxsO1xuICBwdWJsaWMgb3BlcmF0aW9uczogT3B0aW9uPEVsZW1lbnRPcGVyYXRpb25zPiA9IG51bGw7XG4gIHB1YmxpYyBlbGVtZW50OiBTaW1wbGUuRWxlbWVudDtcbiAgcHVibGljIGVudjogRW52aXJvbm1lbnQ7XG5cbiAgcHJpdmF0ZSBlbGVtZW50U3RhY2sgPSBuZXcgU3RhY2s8U2ltcGxlLkVsZW1lbnQ+KCk7XG4gIHByaXZhdGUgbmV4dFNpYmxpbmdTdGFjayA9IG5ldyBTdGFjazxPcHRpb248U2ltcGxlLk5vZGU+PigpO1xuICBwcml2YXRlIGJsb2NrU3RhY2sgPSBuZXcgU3RhY2s8VHJhY2tlcj4oKTtcblxuICBwcml2YXRlIGRlZmF1bHRPcGVyYXRpb25zOiBFbGVtZW50T3BlcmF0aW9ucztcblxuICBzdGF0aWMgZm9ySW5pdGlhbFJlbmRlcihlbnY6IEVudmlyb25tZW50LCBwYXJlbnROb2RlOiBTaW1wbGUuRWxlbWVudCwgbmV4dFNpYmxpbmc6IE9wdGlvbjxTaW1wbGUuTm9kZT4pIHtcbiAgICByZXR1cm4gbmV3IEVsZW1lbnRTdGFjayhlbnYsIHBhcmVudE5vZGUsIG5leHRTaWJsaW5nKTtcbiAgfVxuXG4gIHN0YXRpYyByZXN1bWUoZW52OiBFbnZpcm9ubWVudCwgdHJhY2tlcjogVHJhY2tlciwgbmV4dFNpYmxpbmc6IE9wdGlvbjxTaW1wbGUuTm9kZT4pIHtcbiAgICBsZXQgcGFyZW50Tm9kZSA9IHRyYWNrZXIucGFyZW50RWxlbWVudCgpO1xuXG4gICAgbGV0IHN0YWNrID0gbmV3IEVsZW1lbnRTdGFjayhlbnYsIHBhcmVudE5vZGUsIG5leHRTaWJsaW5nKTtcbiAgICBzdGFjay5wdXNoQmxvY2tUcmFja2VyKHRyYWNrZXIpO1xuXG4gICAgcmV0dXJuIHN0YWNrO1xuICB9XG5cbiAgY29uc3RydWN0b3IoZW52OiBFbnZpcm9ubWVudCwgcGFyZW50Tm9kZTogU2ltcGxlLkVsZW1lbnQsIG5leHRTaWJsaW5nOiBPcHRpb248U2ltcGxlLk5vZGU+KSB7XG4gICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgdGhpcy5kb20gPSBlbnYuZ2V0QXBwZW5kT3BlcmF0aW9ucygpO1xuICAgIHRoaXMudXBkYXRlT3BlcmF0aW9ucyA9IGVudi5nZXRET00oKTtcbiAgICB0aGlzLmVsZW1lbnQgPSBwYXJlbnROb2RlO1xuICAgIHRoaXMubmV4dFNpYmxpbmcgPSBuZXh0U2libGluZztcblxuICAgIHRoaXMuZGVmYXVsdE9wZXJhdGlvbnMgPSBuZXcgU2ltcGxlRWxlbWVudE9wZXJhdGlvbnMoZW52KTtcblxuICAgIHRoaXMucHVzaFNpbXBsZUJsb2NrKCk7XG4gICAgdGhpcy5lbGVtZW50U3RhY2sucHVzaCh0aGlzLmVsZW1lbnQpO1xuICAgIHRoaXMubmV4dFNpYmxpbmdTdGFjay5wdXNoKHRoaXMubmV4dFNpYmxpbmcpO1xuICB9XG5cbiAgZXhwZWN0Q29uc3RydWN0aW5nKG1ldGhvZDogc3RyaW5nKTogU2ltcGxlLkVsZW1lbnQge1xuICAgIHJldHVybiBleHBlY3QodGhpcy5jb25zdHJ1Y3RpbmcsIGAke21ldGhvZH0gc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoaWxlIGNvbnN0cnVjdGluZyBhbiBlbGVtZW50YCk7XG4gIH1cblxuICBleHBlY3RPcGVyYXRpb25zKG1ldGhvZDogc3RyaW5nKTogRWxlbWVudE9wZXJhdGlvbnMge1xuICAgIHJldHVybiBleHBlY3QodGhpcy5vcGVyYXRpb25zLCBgJHttZXRob2R9IHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGlsZSBjb25zdHJ1Y3RpbmcgYW4gZWxlbWVudGApO1xuICB9XG5cbiAgYmxvY2soKTogVHJhY2tlciB7XG4gICAgcmV0dXJuIGV4cGVjdCh0aGlzLmJsb2NrU3RhY2suY3VycmVudCwgXCJFeHBlY3RlZCBhIGN1cnJlbnQgYmxvY2sgdHJhY2tlclwiKTtcbiAgfVxuXG4gIHBvcEVsZW1lbnQoKSB7XG4gICAgbGV0IHsgZWxlbWVudFN0YWNrLCBuZXh0U2libGluZ1N0YWNrIH0gID0gdGhpcztcblxuICAgIGxldCB0b3BFbGVtZW50ID0gZWxlbWVudFN0YWNrLnBvcCgpO1xuICAgIG5leHRTaWJsaW5nU3RhY2sucG9wKCk7XG4gICAgLy8gTE9HR0VSLmRlYnVnKGAtPiBlbGVtZW50IHN0YWNrICR7dGhpcy5lbGVtZW50U3RhY2sudG9BcnJheSgpLm1hcChlID0+IGUudGFnTmFtZSkuam9pbignLCAnKX1gKTtcblxuICAgIHRoaXMuZWxlbWVudCA9IGV4cGVjdChlbGVtZW50U3RhY2suY3VycmVudCwgXCJjYW4ndCBwb3AgcGFzdCB0aGUgbGFzdCBlbGVtZW50XCIpO1xuICAgIHRoaXMubmV4dFNpYmxpbmcgPSBuZXh0U2libGluZ1N0YWNrLmN1cnJlbnQ7XG5cbiAgICByZXR1cm4gdG9wRWxlbWVudDtcbiAgfVxuXG4gIHB1c2hTaW1wbGVCbG9jaygpOiBUcmFja2VyIHtcbiAgICBsZXQgdHJhY2tlciA9IG5ldyBTaW1wbGVCbG9ja1RyYWNrZXIodGhpcy5lbGVtZW50KTtcbiAgICB0aGlzLnB1c2hCbG9ja1RyYWNrZXIodHJhY2tlcik7XG4gICAgcmV0dXJuIHRyYWNrZXI7XG4gIH1cblxuICBwdXNoVXBkYXRhYmxlQmxvY2soKTogVXBkYXRhYmxlVHJhY2tlciB7XG4gICAgbGV0IHRyYWNrZXIgPSBuZXcgVXBkYXRhYmxlQmxvY2tUcmFja2VyKHRoaXMuZWxlbWVudCk7XG4gICAgdGhpcy5wdXNoQmxvY2tUcmFja2VyKHRyYWNrZXIpO1xuICAgIHJldHVybiB0cmFja2VyO1xuICB9XG5cbiAgcHJpdmF0ZSBwdXNoQmxvY2tUcmFja2VyKHRyYWNrZXI6IFRyYWNrZXIsIGlzUmVtb3RlID0gZmFsc2UpIHtcbiAgICBsZXQgY3VycmVudCA9IHRoaXMuYmxvY2tTdGFjay5jdXJyZW50O1xuXG4gICAgaWYgKGN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgIGN1cnJlbnQubmV3RGVzdHJveWFibGUodHJhY2tlcik7XG5cbiAgICAgIGlmICghaXNSZW1vdGUpIHtcbiAgICAgICAgY3VycmVudC5uZXdCb3VuZHModHJhY2tlcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5ibG9ja1N0YWNrLnB1c2godHJhY2tlcik7XG4gICAgcmV0dXJuIHRyYWNrZXI7XG4gIH1cblxuICBwdXNoQmxvY2tMaXN0KGxpc3Q6IExpbmtlZExpc3Q8TGlua2VkTGlzdE5vZGUgJiBCb3VuZHMgJiBEZXN0cm95YWJsZT4pOiBUcmFja2VyIHtcbiAgICBsZXQgdHJhY2tlciA9IG5ldyBCbG9ja0xpc3RUcmFja2VyKHRoaXMuZWxlbWVudCwgbGlzdCk7XG4gICAgbGV0IGN1cnJlbnQgPSB0aGlzLmJsb2NrU3RhY2suY3VycmVudDtcblxuICAgIGlmIChjdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICBjdXJyZW50Lm5ld0Rlc3Ryb3lhYmxlKHRyYWNrZXIpO1xuICAgICAgY3VycmVudC5uZXdCb3VuZHModHJhY2tlcik7XG4gICAgfVxuXG4gICAgdGhpcy5ibG9ja1N0YWNrLnB1c2godHJhY2tlcik7XG4gICAgcmV0dXJuIHRyYWNrZXI7XG4gIH1cblxuICBwb3BCbG9jaygpOiBUcmFja2VyIHtcbiAgICB0aGlzLmJsb2NrKCkuZmluYWxpemUodGhpcyk7XG5cbiAgICByZXR1cm4gZXhwZWN0KHRoaXMuYmxvY2tTdGFjay5wb3AoKSwgXCJFeHBlY3RlZCBwb3BCbG9jayB0byByZXR1cm4gYSBibG9ja1wiKTtcbiAgfVxuXG4gIG9wZW5FbGVtZW50KHRhZzogc3RyaW5nLCBvcGVyYXRpb25zID0gdGhpcy5kZWZhdWx0T3BlcmF0aW9ucyk6IFNpbXBsZS5FbGVtZW50IHtcbiAgICBsZXQgZWxlbWVudCA9IHRoaXMuZG9tLmNyZWF0ZUVsZW1lbnQodGFnLCB0aGlzLmVsZW1lbnQpO1xuXG4gICAgdGhpcy5jb25zdHJ1Y3RpbmcgPSBlbGVtZW50O1xuICAgIHRoaXMub3BlcmF0aW9ucyA9IG9wZXJhdGlvbnM7XG5cbiAgICByZXR1cm4gZWxlbWVudDtcbiAgfVxuXG4gIGZsdXNoRWxlbWVudCgpIHtcbiAgICBsZXQgcGFyZW50ICA9IHRoaXMuZWxlbWVudDtcbiAgICBsZXQgZWxlbWVudCA9IGV4cGVjdCh0aGlzLmNvbnN0cnVjdGluZywgYGZsdXNoRWxlbWVudCBzaG91bGQgb25seSBiZSBjYWxsZWQgd2hlbiBjb25zdHJ1Y3RpbmcgYW4gZWxlbWVudGApO1xuXG4gICAgdGhpcy5kb20uaW5zZXJ0QmVmb3JlKHBhcmVudCwgZWxlbWVudCwgdGhpcy5uZXh0U2libGluZyk7XG5cbiAgICB0aGlzLmNvbnN0cnVjdGluZyA9IG51bGw7XG4gICAgdGhpcy5vcGVyYXRpb25zID0gbnVsbDtcblxuICAgIHRoaXMucHVzaEVsZW1lbnQoZWxlbWVudCk7XG4gICAgdGhpcy5ibG9jaygpLm9wZW5FbGVtZW50KGVsZW1lbnQpO1xuICB9XG5cbiAgcHVzaFJlbW90ZUVsZW1lbnQoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5leHRTaWJsaW5nOiBPcHRpb248U2ltcGxlLk5vZGU+ID0gbnVsbCkge1xuICAgIHRoaXMucHVzaEVsZW1lbnQoZWxlbWVudCwgbmV4dFNpYmxpbmcpO1xuXG4gICAgbGV0IHRyYWNrZXIgPSBuZXcgUmVtb3RlQmxvY2tUcmFja2VyKGVsZW1lbnQpO1xuICAgIHRoaXMucHVzaEJsb2NrVHJhY2tlcih0cmFja2VyLCB0cnVlKTtcbiAgfVxuXG4gIHBvcFJlbW90ZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5wb3BCbG9jaygpO1xuICAgIHRoaXMucG9wRWxlbWVudCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBwdXNoRWxlbWVudChlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmV4dFNpYmxpbmc6IE9wdGlvbjxTaW1wbGUuTm9kZT4gPSBudWxsKSB7XG4gICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDtcbiAgICB0aGlzLmVsZW1lbnRTdGFjay5wdXNoKGVsZW1lbnQpO1xuICAgIC8vIExPR0dFUi5kZWJ1ZyhgLT4gZWxlbWVudCBzdGFjayAke3RoaXMuZWxlbWVudFN0YWNrLnRvQXJyYXkoKS5tYXAoZSA9PiBlLnRhZ05hbWUpLmpvaW4oJywgJyl9YCk7XG5cbiAgICB0aGlzLm5leHRTaWJsaW5nID0gbmV4dFNpYmxpbmc7XG4gICAgdGhpcy5uZXh0U2libGluZ1N0YWNrLnB1c2gobmV4dFNpYmxpbmcpO1xuICB9XG5cbiAgbmV3RGVzdHJveWFibGUoZDogRGVzdHJveWFibGUpIHtcbiAgICB0aGlzLmJsb2NrKCkubmV3RGVzdHJveWFibGUoZCk7XG4gIH1cblxuICBuZXdCb3VuZHMoYm91bmRzOiBCb3VuZHMpIHtcbiAgICB0aGlzLmJsb2NrKCkubmV3Qm91bmRzKGJvdW5kcyk7XG4gIH1cblxuICBhcHBlbmRUZXh0KHN0cmluZzogc3RyaW5nKTogU2ltcGxlLlRleHQge1xuICAgIGxldCB7IGRvbSB9ID0gdGhpcztcbiAgICBsZXQgdGV4dCA9IGRvbS5jcmVhdGVUZXh0Tm9kZShzdHJpbmcpO1xuICAgIGRvbS5pbnNlcnRCZWZvcmUodGhpcy5lbGVtZW50LCB0ZXh0LCB0aGlzLm5leHRTaWJsaW5nKTtcbiAgICB0aGlzLmJsb2NrKCkubmV3Tm9kZSh0ZXh0KTtcbiAgICByZXR1cm4gdGV4dDtcbiAgfVxuXG4gIGFwcGVuZENvbW1lbnQoc3RyaW5nOiBzdHJpbmcpOiBTaW1wbGUuQ29tbWVudCB7XG4gICAgbGV0IHsgZG9tIH0gPSB0aGlzO1xuICAgIGxldCBjb21tZW50ID0gZG9tLmNyZWF0ZUNvbW1lbnQoc3RyaW5nKTtcbiAgICBkb20uaW5zZXJ0QmVmb3JlKHRoaXMuZWxlbWVudCwgY29tbWVudCwgdGhpcy5uZXh0U2libGluZyk7XG4gICAgdGhpcy5ibG9jaygpLm5ld05vZGUoY29tbWVudCk7XG4gICAgcmV0dXJuIGNvbW1lbnQ7XG4gIH1cblxuICBzZXRTdGF0aWNBdHRyaWJ1dGUobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5leHBlY3RPcGVyYXRpb25zKCdzZXRTdGF0aWNBdHRyaWJ1dGUnKS5hZGRTdGF0aWNBdHRyaWJ1dGUodGhpcy5leHBlY3RDb25zdHJ1Y3RpbmcoJ3NldFN0YXRpY0F0dHJpYnV0ZScpLCBuYW1lLCB2YWx1ZSk7XG4gIH1cblxuICBzZXRTdGF0aWNBdHRyaWJ1dGVOUyhuYW1lc3BhY2U6IHN0cmluZywgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5leHBlY3RPcGVyYXRpb25zKCdzZXRTdGF0aWNBdHRyaWJ1dGVOUycpLmFkZFN0YXRpY0F0dHJpYnV0ZU5TKHRoaXMuZXhwZWN0Q29uc3RydWN0aW5nKCdzZXRTdGF0aWNBdHRyaWJ1dGVOUycpLCBuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKTtcbiAgfVxuXG4gIHNldER5bmFtaWNBdHRyaWJ1dGUobmFtZTogc3RyaW5nLCByZWZlcmVuY2U6IFZlcnNpb25lZFJlZmVyZW5jZTxzdHJpbmc+LCBpc1RydXN0aW5nOiBib29sZWFuKSB7XG4gICAgdGhpcy5leHBlY3RPcGVyYXRpb25zKCdzZXREeW5hbWljQXR0cmlidXRlJykuYWRkRHluYW1pY0F0dHJpYnV0ZSh0aGlzLmV4cGVjdENvbnN0cnVjdGluZygnc2V0RHluYW1pY0F0dHJpYnV0ZScpLCBuYW1lLCByZWZlcmVuY2UsIGlzVHJ1c3RpbmcpO1xuICB9XG5cbiAgc2V0RHluYW1pY0F0dHJpYnV0ZU5TKG5hbWVzcGFjZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIHJlZmVyZW5jZTogVmVyc2lvbmVkUmVmZXJlbmNlPHN0cmluZz4sIGlzVHJ1c3Rpbmc6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmV4cGVjdE9wZXJhdGlvbnMoJ3NldER5bmFtaWNBdHRyaWJ1dGVOUycpLmFkZER5bmFtaWNBdHRyaWJ1dGVOUyh0aGlzLmV4cGVjdENvbnN0cnVjdGluZygnc2V0RHluYW1pY0F0dHJpYnV0ZU5TJyksIG5hbWVzcGFjZSwgbmFtZSwgcmVmZXJlbmNlLCBpc1RydXN0aW5nKTtcbiAgfVxuXG4gIGNsb3NlRWxlbWVudCgpIHtcbiAgICB0aGlzLmJsb2NrKCkuY2xvc2VFbGVtZW50KCk7XG4gICAgdGhpcy5wb3BFbGVtZW50KCk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFja2VyIGV4dGVuZHMgRGVzdHJveWFibGVCb3VuZHMge1xuICBvcGVuRWxlbWVudChlbGVtZW50OiBTaW1wbGUuRWxlbWVudCk6IHZvaWQ7XG4gIGNsb3NlRWxlbWVudCgpOiB2b2lkO1xuICBuZXdOb2RlKG5vZGU6IFNpbXBsZS5Ob2RlKTogdm9pZDtcbiAgbmV3Qm91bmRzKGJvdW5kczogQm91bmRzKTogdm9pZDtcbiAgbmV3RGVzdHJveWFibGUoZDogRGVzdHJveWFibGUpOiB2b2lkO1xuICBmaW5hbGl6ZShzdGFjazogRWxlbWVudFN0YWNrKTogdm9pZDtcbn1cblxuZXhwb3J0IGNsYXNzIFNpbXBsZUJsb2NrVHJhY2tlciBpbXBsZW1lbnRzIFRyYWNrZXIge1xuICBwcm90ZWN0ZWQgZmlyc3Q6IE9wdGlvbjxGaXJzdE5vZGU+ID0gbnVsbDtcbiAgcHJvdGVjdGVkIGxhc3Q6IE9wdGlvbjxMYXN0Tm9kZT4gPSBudWxsO1xuICBwcm90ZWN0ZWQgZGVzdHJveWFibGVzOiBPcHRpb248RGVzdHJveWFibGVbXT4gPSBudWxsO1xuICBwcm90ZWN0ZWQgbmVzdGluZyA9IDA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwYXJlbnQ6IFNpbXBsZS5FbGVtZW50KXt9XG5cbiAgZGVzdHJveSgpIHtcbiAgICBsZXQgeyBkZXN0cm95YWJsZXMgfSA9IHRoaXM7XG5cbiAgICBpZiAoZGVzdHJveWFibGVzICYmIGRlc3Ryb3lhYmxlcy5sZW5ndGgpIHtcbiAgICAgIGZvciAobGV0IGk9MDsgaTxkZXN0cm95YWJsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgZGVzdHJveWFibGVzW2ldLmRlc3Ryb3koKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwYXJlbnRFbGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnBhcmVudDtcbiAgfVxuXG4gIGZpcnN0Tm9kZSgpOiBPcHRpb248U2ltcGxlLk5vZGU+IHtcbiAgICByZXR1cm4gdGhpcy5maXJzdCAmJiB0aGlzLmZpcnN0LmZpcnN0Tm9kZSgpO1xuICB9XG5cbiAgbGFzdE5vZGUoKTogT3B0aW9uPFNpbXBsZS5Ob2RlPiB7XG4gICAgcmV0dXJuIHRoaXMubGFzdCAmJiB0aGlzLmxhc3QubGFzdE5vZGUoKTtcbiAgfVxuXG4gIG9wZW5FbGVtZW50KGVsZW1lbnQ6IEVsZW1lbnQpIHtcbiAgICB0aGlzLm5ld05vZGUoZWxlbWVudCk7XG4gICAgdGhpcy5uZXN0aW5nKys7XG4gIH1cblxuICBjbG9zZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5uZXN0aW5nLS07XG4gIH1cblxuICBuZXdOb2RlKG5vZGU6IE5vZGUpIHtcbiAgICBpZiAodGhpcy5uZXN0aW5nICE9PSAwKSByZXR1cm47XG5cbiAgICBpZiAoIXRoaXMuZmlyc3QpIHtcbiAgICAgIHRoaXMuZmlyc3QgPSBuZXcgRmlyc3Qobm9kZSk7XG4gICAgfVxuXG4gICAgdGhpcy5sYXN0ID0gbmV3IExhc3Qobm9kZSk7XG4gIH1cblxuICBuZXdCb3VuZHMoYm91bmRzOiBCb3VuZHMpIHtcbiAgICBpZiAodGhpcy5uZXN0aW5nICE9PSAwKSByZXR1cm47XG5cbiAgICBpZiAoIXRoaXMuZmlyc3QpIHtcbiAgICAgIHRoaXMuZmlyc3QgPSBib3VuZHM7XG4gICAgfVxuXG4gICAgdGhpcy5sYXN0ID0gYm91bmRzO1xuICB9XG5cbiAgbmV3RGVzdHJveWFibGUoZDogRGVzdHJveWFibGUpIHtcbiAgICB0aGlzLmRlc3Ryb3lhYmxlcyA9IHRoaXMuZGVzdHJveWFibGVzIHx8IFtdO1xuICAgIHRoaXMuZGVzdHJveWFibGVzLnB1c2goZCk7XG4gIH1cblxuICBmaW5hbGl6ZShzdGFjazogRWxlbWVudFN0YWNrKSB7XG4gICAgaWYgKCF0aGlzLmZpcnN0KSB7XG4gICAgICBzdGFjay5hcHBlbmRDb21tZW50KCcnKTtcbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgUmVtb3RlQmxvY2tUcmFja2VyIGV4dGVuZHMgU2ltcGxlQmxvY2tUcmFja2VyIHtcbiAgZGVzdHJveSgpIHtcbiAgICBzdXBlci5kZXN0cm95KCk7XG5cbiAgICBjbGVhcih0aGlzKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0YWJsZVRyYWNrZXIgZXh0ZW5kcyBUcmFja2VyIHtcbiAgcmVzZXQoZW52OiBFbnZpcm9ubWVudCk6IE9wdGlvbjxTaW1wbGUuTm9kZT47XG59XG5cbmV4cG9ydCBjbGFzcyBVcGRhdGFibGVCbG9ja1RyYWNrZXIgZXh0ZW5kcyBTaW1wbGVCbG9ja1RyYWNrZXIgaW1wbGVtZW50cyBVcGRhdGFibGVUcmFja2VyIHtcbiAgcmVzZXQoZW52OiBFbnZpcm9ubWVudCk6IE9wdGlvbjxTaW1wbGUuTm9kZT4ge1xuICAgIGxldCB7IGRlc3Ryb3lhYmxlcyB9ID0gdGhpcztcblxuICAgIGlmIChkZXN0cm95YWJsZXMgJiYgZGVzdHJveWFibGVzLmxlbmd0aCkge1xuICAgICAgZm9yIChsZXQgaT0wOyBpPGRlc3Ryb3lhYmxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBlbnYuZGlkRGVzdHJveShkZXN0cm95YWJsZXNbaV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBuZXh0U2libGluZyA9IGNsZWFyKHRoaXMpO1xuXG4gICAgdGhpcy5maXJzdCA9IG51bGw7XG4gICAgdGhpcy5sYXN0ID0gbnVsbDtcbiAgICB0aGlzLmRlc3Ryb3lhYmxlcyA9IG51bGw7XG4gICAgdGhpcy5uZXN0aW5nID0gMDtcblxuICAgIHJldHVybiBuZXh0U2libGluZztcbiAgfVxufVxuXG5jbGFzcyBCbG9ja0xpc3RUcmFja2VyIGltcGxlbWVudHMgVHJhY2tlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGFyZW50OiBTaW1wbGUuRWxlbWVudCwgcHJpdmF0ZSBib3VuZExpc3Q6IExpbmtlZExpc3Q8TGlua2VkTGlzdE5vZGUgJiBCb3VuZHMgJiBEZXN0cm95YWJsZT4pIHtcbiAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgICB0aGlzLmJvdW5kTGlzdCA9IGJvdW5kTGlzdDtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5ib3VuZExpc3QuZm9yRWFjaE5vZGUobm9kZSA9PiBub2RlLmRlc3Ryb3koKSk7XG4gIH1cblxuICBwYXJlbnRFbGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnBhcmVudDtcbiAgfVxuXG4gIGZpcnN0Tm9kZSgpOiBPcHRpb248U2ltcGxlLk5vZGU+IHtcbiAgICBsZXQgaGVhZCA9IHRoaXMuYm91bmRMaXN0LmhlYWQoKTtcbiAgICByZXR1cm4gaGVhZCAmJiBoZWFkLmZpcnN0Tm9kZSgpO1xuICB9XG5cbiAgbGFzdE5vZGUoKTogT3B0aW9uPFNpbXBsZS5Ob2RlPiB7XG4gICAgbGV0IHRhaWwgPSB0aGlzLmJvdW5kTGlzdC50YWlsKCk7XG4gICAgcmV0dXJuIHRhaWwgJiYgdGFpbC5sYXN0Tm9kZSgpO1xuICB9XG5cbiAgb3BlbkVsZW1lbnQoX2VsZW1lbnQ6IEVsZW1lbnQpIHtcbiAgICBhc3NlcnQoZmFsc2UsICdDYW5ub3Qgb3BlbkVsZW1lbnQgZGlyZWN0bHkgaW5zaWRlIGEgYmxvY2sgbGlzdCcpO1xuICB9XG5cbiAgY2xvc2VFbGVtZW50KCkge1xuICAgIGFzc2VydChmYWxzZSwgJ0Nhbm5vdCBjbG9zZUVsZW1lbnQgZGlyZWN0bHkgaW5zaWRlIGEgYmxvY2sgbGlzdCcpO1xuICB9XG5cbiAgbmV3Tm9kZShfbm9kZTogTm9kZSkge1xuICAgIGFzc2VydChmYWxzZSwgJ0Nhbm5vdCBjcmVhdGUgYSBuZXcgbm9kZSBkaXJlY3RseSBpbnNpZGUgYSBibG9jayBsaXN0Jyk7XG4gIH1cblxuICBuZXdCb3VuZHMoX2JvdW5kczogQm91bmRzKSB7XG4gIH1cblxuICBuZXdEZXN0cm95YWJsZShfZDogRGVzdHJveWFibGUpIHtcbiAgfVxuXG4gIGZpbmFsaXplKF9zdGFjazogRWxlbWVudFN0YWNrKSB7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxBQUFlLFNBQTZCLEFBQUssQUFBRSxhQUFNLEFBQVUsQUFBQztBQUlwRSxBQUFPLFNBQXVCLEFBQUssQUFBK0IsYUFBTSxBQUFlLEFBQUM7QUFReEYsQUFBTyxTQUNMLEFBQXVCLEFBQ3hCLCtCQUFNLEFBQXdCLEFBQUMsQUFZaEM7OztBQUNFLG1CQUFvQixBQUFVOzs7QUFBVixhQUFJLE9BQUosQUFBSSxBQUFNLEFBQUk7QUFBQzs7b0JBRW5DLEFBQVM7QUFDUCxBQUFNLGVBQUMsQUFBSSxLQUFDLEFBQUksQUFBQyxBQUNuQjtBQUFDLEFBQ0YsQUFFRDs7Ozs7O0FBQ0Usa0JBQW9CLEFBQVU7OztBQUFWLGFBQUksT0FBSixBQUFJLEFBQU0sQUFBSTtBQUFDOzttQkFFbkMsQUFBUTtBQUNOLEFBQU0sZUFBQyxBQUFJLEtBQUMsQUFBSSxBQUFDLEFBQ25CO0FBQUMsQUFDRjs7Ozs7QUFVRCxBQUFNO0FBR0osc0JBQVksQUFBYzs7O0FBQ3hCLEFBQUksYUFBQyxBQUFNLFNBQUcsQUFBTSxBQUFDLEFBQ3ZCO0FBQUM7O3VCQUVELEFBQWE7QUFDWCxBQUFNLGVBQUMsQUFBSSxLQUFDLEFBQU0sT0FBQyxBQUFhLEFBQUUsQUFBQyxBQUNyQztBQUFDOzt1QkFFRCxBQUFTO0FBQ1AsQUFBTSxlQUFDLEFBQUksS0FBQyxBQUFNLE9BQUMsQUFBUyxBQUFFLEFBQUMsQUFDakM7QUFBQzs7dUJBRUQsQUFBUTtBQUNOLEFBQU0sZUFBQyxBQUFJLEtBQUMsQUFBTSxPQUFDLEFBQVEsQUFBRSxBQUFDLEFBQ2hDO0FBQUM7O3VCQUVELEFBQU0seUJBQUMsQUFBYztBQUNuQixBQUFJLGFBQUMsQUFBTSxTQUFHLEFBQU0sQUFBQyxBQUN2QjtBQUFDLEFBQ0Y7Ozs7QUFFRCxBQUFNO0FBNEJKLDBCQUFZLEFBQWdCLEtBQUUsQUFB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QUksS0FBQyxBQUFPLEFBQUUsQUFBQyxBQUFDLEFBQ3JEOztBQUFDOzsrQkFFRCxBQUFhO0FBQ1gsQUFBTSxlQUFDLEFBQUksS0FBQyxBQUFNLEFBQUMsQUFDckI7QUFBQzs7K0JBRUQsQUFBUztBQUNQLFlBQUksQUFBSSxPQUFHLEFBQUksS0FBQyxBQUFTLFVBQUMsQUFBSSxBQUFFLEFBQUM7QUFDakMsQUFBTSxlQUFDLEFBQUksUUFBSSxBQUFJLEtBQUMsQUFBUyxBQUFFLEFBQUMsQUFDbEM7QUFBQzs7K0JBRUQsQUFBUTtBQUNOLFlBQUksQUFBSSxPQUFHLEFBQUksS0FBQyxBQUFTLFVBQUMsQUFBSSxBQUFFLEFBQUM7QUFDakMsQUFBTSxlQUFDLEFBQUksUUFBSSxBQUFJLEtBQUMsQUFBUSxBQUFFLEFBQUMsQUFDakM7QUFBQzs7K0JBRUQsQUFBVyxtQ0FBQyxBQUFpQixVQUM3QixDQUFDOzsrQkFFRCxBQUFZLHVDQUNaLENBQUM7OytCQUVELEFBQU8sMkJBQUMsQUFBVyxPQUNuQixDQUFDOzsrQkFFRCxBQUFTLCtCQUFDLEFBQWUsU0FDekIsQ0FBQzs7K0JBRUQsQUFBYyx5Q0FBQyxBQUFlLElBQzlCLENBQUM7OytCQUVELEFBQVEsNkJBQUMsQUFBb0IsUUFDN0IsQ0FBQyxBQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJvdW5kcywgeyBDdXJzb3IsIERlc3Ryb3lhYmxlQm91bmRzLCBjbGVhciB9IGZyb20gJy4vYm91bmRzJztcblxuaW1wb3J0IHsgRE9NQ2hhbmdlcywgRE9NVHJlZUNvbnN0cnVjdGlvbiB9IGZyb20gJy4vZG9tL2hlbHBlcic7XG5cbmltcG9ydCB7IE9wdGlvbiwgRGVzdHJveWFibGUsIFN0YWNrLCBMaW5rZWRMaXN0LCBMaW5rZWRMaXN0Tm9kZSwgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuL2Vudmlyb25tZW50JztcblxuaW1wb3J0IHsgVk0gfSBmcm9tICcuL3ZtJztcblxuaW1wb3J0IHsgVmVyc2lvbmVkUmVmZXJlbmNlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcblxuaW1wb3J0IHtcbiAgU2ltcGxlRWxlbWVudE9wZXJhdGlvbnNcbn0gZnJvbSAnLi9jb21waWxlZC9vcGNvZGVzL2RvbSc7XG5cbmltcG9ydCAqIGFzIFNpbXBsZSBmcm9tICcuL2RvbS9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGludGVyZmFjZSBGaXJzdE5vZGUge1xuICBmaXJzdE5vZGUoKTogT3B0aW9uPFNpbXBsZS5Ob2RlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMYXN0Tm9kZSB7XG4gIGxhc3ROb2RlKCk6IE9wdGlvbjxTaW1wbGUuTm9kZT47XG59XG5cbmNsYXNzIEZpcnN0IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBub2RlOiBOb2RlKSB7IH1cblxuICBmaXJzdE5vZGUoKTogTm9kZSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZTtcbiAgfVxufVxuXG5jbGFzcyBMYXN0IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBub2RlOiBOb2RlKSB7IH1cblxuICBsYXN0Tm9kZSgpOiBOb2RlIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRWxlbWVudE9wZXJhdGlvbnMge1xuICBhZGRTdGF0aWNBdHRyaWJ1dGUoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQ7XG4gIGFkZFN0YXRpY0F0dHJpYnV0ZU5TKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lc3BhY2U6IHN0cmluZywgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcbiAgYWRkRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZTogc3RyaW5nLCB2YWx1ZTogVmVyc2lvbmVkUmVmZXJlbmNlPHN0cmluZz4sIGlzVHJ1c3Rpbmc6IGJvb2xlYW4pOiB2b2lkO1xuICBhZGREeW5hbWljQXR0cmlidXRlTlMoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5hbWVzcGFjZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBWZXJzaW9uZWRSZWZlcmVuY2U8c3RyaW5nPiwgaXNUcnVzdGluZzogYm9vbGVhbik6IHZvaWQ7XG4gIGZsdXNoKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCB2bTogVk0pOiB2b2lkO1xufVxuXG5leHBvcnQgY2xhc3MgRnJhZ21lbnQgaW1wbGVtZW50cyBCb3VuZHMge1xuICBwcml2YXRlIGJvdW5kczogQm91bmRzO1xuXG4gIGNvbnN0cnVjdG9yKGJvdW5kczogQm91bmRzKSB7XG4gICAgdGhpcy5ib3VuZHMgPSBib3VuZHM7XG4gIH1cblxuICBwYXJlbnRFbGVtZW50KCk6IFNpbXBsZS5FbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICB9XG5cbiAgZmlyc3ROb2RlKCk6IE9wdGlvbjxTaW1wbGUuTm9kZT4ge1xuICAgIHJldHVybiB0aGlzLmJvdW5kcy5maXJzdE5vZGUoKTtcbiAgfVxuXG4gIGxhc3ROb2RlKCk6IE9wdGlvbjxTaW1wbGUuTm9kZT4ge1xuICAgIHJldHVybiB0aGlzLmJvdW5kcy5sYXN0Tm9kZSgpO1xuICB9XG5cbiAgdXBkYXRlKGJvdW5kczogQm91bmRzKSB7XG4gICAgdGhpcy5ib3VuZHMgPSBib3VuZHM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVsZW1lbnRTdGFjayBpbXBsZW1lbnRzIEN1cnNvciB7XG4gIHB1YmxpYyBuZXh0U2libGluZzogT3B0aW9uPFNpbXBsZS5Ob2RlPjtcbiAgcHVibGljIGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbjtcbiAgcHVibGljIHVwZGF0ZU9wZXJhdGlvbnM6IERPTUNoYW5nZXM7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rpbmc6IE9wdGlvbjxTaW1wbGUuRWxlbWVudD4gPSBudWxsO1xuICBwdWJsaWMgb3BlcmF0aW9uczogT3B0aW9uPEVsZW1lbnRPcGVyYXRpb25zPiA9IG51bGw7XG4gIHB1YmxpYyBlbGVtZW50OiBTaW1wbGUuRWxlbWVudDtcbiAgcHVibGljIGVudjogRW52aXJvbm1lbnQ7XG5cbiAgcHJpdmF0ZSBlbGVtZW50U3RhY2sgPSBuZXcgU3RhY2s8U2ltcGxlLkVsZW1lbnQ+KCk7XG4gIHByaXZhdGUgbmV4dFNpYmxpbmdTdGFjayA9IG5ldyBTdGFjazxPcHRpb248U2ltcGxlLk5vZGU+PigpO1xuICBwcml2YXRlIGJsb2NrU3RhY2sgPSBuZXcgU3RhY2s8VHJhY2tlcj4oKTtcblxuICBwcml2YXRlIGRlZmF1bHRPcGVyYXRpb25zOiBFbGVtZW50T3BlcmF0aW9ucztcblxuICBzdGF0aWMgZm9ySW5pdGlhbFJlbmRlcihlbnY6IEVudmlyb25tZW50LCBwYXJlbnROb2RlOiBTaW1wbGUuRWxlbWVudCwgbmV4dFNpYmxpbmc6IE9wdGlvbjxTaW1wbGUuTm9kZT4pIHtcbiAgICByZXR1cm4gbmV3IEVsZW1lbnRTdGFjayhlbnYsIHBhcmVudE5vZGUsIG5leHRTaWJsaW5nKTtcbiAgfVxuXG4gIHN0YXRpYyByZXN1bWUoZW52OiBFbnZpcm9ubWVudCwgdHJhY2tlcjogVHJhY2tlciwgbmV4dFNpYmxpbmc6IE9wdGlvbjxTaW1wbGUuTm9kZT4pIHtcbiAgICBsZXQgcGFyZW50Tm9kZSA9IHRyYWNrZXIucGFyZW50RWxlbWVudCgpO1xuXG4gICAgbGV0IHN0YWNrID0gbmV3IEVsZW1lbnRTdGFjayhlbnYsIHBhcmVudE5vZGUsIG5leHRTaWJsaW5nKTtcbiAgICBzdGFjay5wdXNoQmxvY2tUcmFja2VyKHRyYWNrZXIpO1xuXG4gICAgcmV0dXJuIHN0YWNrO1xuICB9XG5cbiAgY29uc3RydWN0b3IoZW52OiBFbnZpcm9ubWVudCwgcGFyZW50Tm9kZTogU2ltcGxlLkVsZW1lbnQsIG5leHRTaWJsaW5nOiBPcHRpb248U2ltcGxlLk5vZGU+KSB7XG4gICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgdGhpcy5kb20gPSBlbnYuZ2V0QXBwZW5kT3BlcmF0aW9ucygpO1xuICAgIHRoaXMudXBkYXRlT3BlcmF0aW9ucyA9IGVudi5nZXRET00oKTtcbiAgICB0aGlzLmVsZW1lbnQgPSBwYXJlbnROb2RlO1xuICAgIHRoaXMubmV4dFNpYmxpbmcgPSBuZXh0U2libGluZztcblxuICAgIHRoaXMuZGVmYXVsdE9wZXJhdGlvbnMgPSBuZXcgU2ltcGxlRWxlbWVudE9wZXJhdGlvbnMoZW52KTtcblxuICAgIHRoaXMucHVzaFNpbXBsZUJsb2NrKCk7XG4gICAgdGhpcy5lbGVtZW50U3RhY2sucHVzaCh0aGlzLmVsZW1lbnQpO1xuICAgIHRoaXMubmV4dFNpYmxpbmdTdGFjay5wdXNoKHRoaXMubmV4dFNpYmxpbmcpO1xuICB9XG5cbiAgZXhwZWN0Q29uc3RydWN0aW5nKG1ldGhvZDogc3RyaW5nKTogU2ltcGxlLkVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdGluZztcbiAgfVxuXG4gIGV4cGVjdE9wZXJhdGlvbnMobWV0aG9kOiBzdHJpbmcpOiBFbGVtZW50T3BlcmF0aW9ucyB7XG4gICAgcmV0dXJuIHRoaXMub3BlcmF0aW9ucztcbiAgfVxuXG4gIGJsb2NrKCk6IFRyYWNrZXIge1xuICAgIHJldHVybiB0aGlzLmJsb2NrU3RhY2suY3VycmVudDtcbiAgfVxuXG4gIHBvcEVsZW1lbnQoKSB7XG4gICAgbGV0IHsgZWxlbWVudFN0YWNrLCBuZXh0U2libGluZ1N0YWNrIH0gID0gdGhpcztcblxuICAgIGxldCB0b3BFbGVtZW50ID0gZWxlbWVudFN0YWNrLnBvcCgpO1xuICAgIG5leHRTaWJsaW5nU3RhY2sucG9wKCk7XG4gICAgLy8gTE9HR0VSLmRlYnVnKGAtPiBlbGVtZW50IHN0YWNrICR7dGhpcy5lbGVtZW50U3RhY2sudG9BcnJheSgpLm1hcChlID0+IGUudGFnTmFtZSkuam9pbignLCAnKX1gKTtcblxuICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnRTdGFjay5jdXJyZW50O1xuICAgIHRoaXMubmV4dFNpYmxpbmcgPSBuZXh0U2libGluZ1N0YWNrLmN1cnJlbnQ7XG5cbiAgICByZXR1cm4gdG9wRWxlbWVudDtcbiAgfVxuXG4gIHB1c2hTaW1wbGVCbG9jaygpOiBUcmFja2VyIHtcbiAgICBsZXQgdHJhY2tlciA9IG5ldyBTaW1wbGVCbG9ja1RyYWNrZXIodGhpcy5lbGVtZW50KTtcbiAgICB0aGlzLnB1c2hCbG9ja1RyYWNrZXIodHJhY2tlcik7XG4gICAgcmV0dXJuIHRyYWNrZXI7XG4gIH1cblxuICBwdXNoVXBkYXRhYmxlQmxvY2soKTogVXBkYXRhYmxlVHJhY2tlciB7XG4gICAgbGV0IHRyYWNrZXIgPSBuZXcgVXBkYXRhYmxlQmxvY2tUcmFja2VyKHRoaXMuZWxlbWVudCk7XG4gICAgdGhpcy5wdXNoQmxvY2tUcmFja2VyKHRyYWNrZXIpO1xuICAgIHJldHVybiB0cmFja2VyO1xuICB9XG5cbiAgcHJpdmF0ZSBwdXNoQmxvY2tUcmFja2VyKHRyYWNrZXI6IFRyYWNrZXIsIGlzUmVtb3RlID0gZmFsc2UpIHtcbiAgICBsZXQgY3VycmVudCA9IHRoaXMuYmxvY2tTdGFjay5jdXJyZW50O1xuXG4gICAgaWYgKGN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgIGN1cnJlbnQubmV3RGVzdHJveWFibGUodHJhY2tlcik7XG5cbiAgICAgIGlmICghaXNSZW1vdGUpIHtcbiAgICAgICAgY3VycmVudC5uZXdCb3VuZHModHJhY2tlcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5ibG9ja1N0YWNrLnB1c2godHJhY2tlcik7XG4gICAgcmV0dXJuIHRyYWNrZXI7XG4gIH1cblxuICBwdXNoQmxvY2tMaXN0KGxpc3Q6IExpbmtlZExpc3Q8TGlua2VkTGlzdE5vZGUgJiBCb3VuZHMgJiBEZXN0cm95YWJsZT4pOiBUcmFja2VyIHtcbiAgICBsZXQgdHJhY2tlciA9IG5ldyBCbG9ja0xpc3RUcmFja2VyKHRoaXMuZWxlbWVudCwgbGlzdCk7XG4gICAgbGV0IGN1cnJlbnQgPSB0aGlzLmJsb2NrU3RhY2suY3VycmVudDtcblxuICAgIGlmIChjdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICBjdXJyZW50Lm5ld0Rlc3Ryb3lhYmxlKHRyYWNrZXIpO1xuICAgICAgY3VycmVudC5uZXdCb3VuZHModHJhY2tlcik7XG4gICAgfVxuXG4gICAgdGhpcy5ibG9ja1N0YWNrLnB1c2godHJhY2tlcik7XG4gICAgcmV0dXJuIHRyYWNrZXI7XG4gIH1cblxuICBwb3BCbG9jaygpOiBUcmFja2VyIHtcbiAgICB0aGlzLmJsb2NrKCkuZmluYWxpemUodGhpcyk7XG5cbiAgICByZXR1cm4gdGhpcy5ibG9ja1N0YWNrLnBvcCgpO1xuICB9XG5cbiAgb3BlbkVsZW1lbnQodGFnOiBzdHJpbmcsIG9wZXJhdGlvbnMgPSB0aGlzLmRlZmF1bHRPcGVyYXRpb25zKTogU2ltcGxlLkVsZW1lbnQge1xuICAgIGxldCBlbGVtZW50ID0gdGhpcy5kb20uY3JlYXRlRWxlbWVudCh0YWcsIHRoaXMuZWxlbWVudCk7XG5cbiAgICB0aGlzLmNvbnN0cnVjdGluZyA9IGVsZW1lbnQ7XG4gICAgdGhpcy5vcGVyYXRpb25zID0gb3BlcmF0aW9ucztcblxuICAgIHJldHVybiBlbGVtZW50O1xuICB9XG5cbiAgZmx1c2hFbGVtZW50KCkge1xuICAgIGxldCBwYXJlbnQgID0gdGhpcy5lbGVtZW50O1xuICAgIGxldCBlbGVtZW50ID0gdGhpcy5jb25zdHJ1Y3Rpbmc7XG5cbiAgICB0aGlzLmRvbS5pbnNlcnRCZWZvcmUocGFyZW50LCBlbGVtZW50LCB0aGlzLm5leHRTaWJsaW5nKTtcblxuICAgIHRoaXMuY29uc3RydWN0aW5nID0gbnVsbDtcbiAgICB0aGlzLm9wZXJhdGlvbnMgPSBudWxsO1xuXG4gICAgdGhpcy5wdXNoRWxlbWVudChlbGVtZW50KTtcbiAgICB0aGlzLmJsb2NrKCkub3BlbkVsZW1lbnQoZWxlbWVudCk7XG4gIH1cblxuICBwdXNoUmVtb3RlRWxlbWVudChlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmV4dFNpYmxpbmc6IE9wdGlvbjxTaW1wbGUuTm9kZT4gPSBudWxsKSB7XG4gICAgdGhpcy5wdXNoRWxlbWVudChlbGVtZW50LCBuZXh0U2libGluZyk7XG5cbiAgICBsZXQgdHJhY2tlciA9IG5ldyBSZW1vdGVCbG9ja1RyYWNrZXIoZWxlbWVudCk7XG4gICAgdGhpcy5wdXNoQmxvY2tUcmFja2VyKHRyYWNrZXIsIHRydWUpO1xuICB9XG5cbiAgcG9wUmVtb3RlRWxlbWVudCgpIHtcbiAgICB0aGlzLnBvcEJsb2NrKCk7XG4gICAgdGhpcy5wb3BFbGVtZW50KCk7XG4gIH1cblxuICBwcml2YXRlIHB1c2hFbGVtZW50KGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuZXh0U2libGluZzogT3B0aW9uPFNpbXBsZS5Ob2RlPiA9IG51bGwpIHtcbiAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50O1xuICAgIHRoaXMuZWxlbWVudFN0YWNrLnB1c2goZWxlbWVudCk7XG4gICAgLy8gTE9HR0VSLmRlYnVnKGAtPiBlbGVtZW50IHN0YWNrICR7dGhpcy5lbGVtZW50U3RhY2sudG9BcnJheSgpLm1hcChlID0+IGUudGFnTmFtZSkuam9pbignLCAnKX1gKTtcblxuICAgIHRoaXMubmV4dFNpYmxpbmcgPSBuZXh0U2libGluZztcbiAgICB0aGlzLm5leHRTaWJsaW5nU3RhY2sucHVzaChuZXh0U2libGluZyk7XG4gIH1cblxuICBuZXdEZXN0cm95YWJsZShkOiBEZXN0cm95YWJsZSkge1xuICAgIHRoaXMuYmxvY2soKS5uZXdEZXN0cm95YWJsZShkKTtcbiAgfVxuXG4gIG5ld0JvdW5kcyhib3VuZHM6IEJvdW5kcykge1xuICAgIHRoaXMuYmxvY2soKS5uZXdCb3VuZHMoYm91bmRzKTtcbiAgfVxuXG4gIGFwcGVuZFRleHQoc3RyaW5nOiBzdHJpbmcpOiBTaW1wbGUuVGV4dCB7XG4gICAgbGV0IHsgZG9tIH0gPSB0aGlzO1xuICAgIGxldCB0ZXh0ID0gZG9tLmNyZWF0ZVRleHROb2RlKHN0cmluZyk7XG4gICAgZG9tLmluc2VydEJlZm9yZSh0aGlzLmVsZW1lbnQsIHRleHQsIHRoaXMubmV4dFNpYmxpbmcpO1xuICAgIHRoaXMuYmxvY2soKS5uZXdOb2RlKHRleHQpO1xuICAgIHJldHVybiB0ZXh0O1xuICB9XG5cbiAgYXBwZW5kQ29tbWVudChzdHJpbmc6IHN0cmluZyk6IFNpbXBsZS5Db21tZW50IHtcbiAgICBsZXQgeyBkb20gfSA9IHRoaXM7XG4gICAgbGV0IGNvbW1lbnQgPSBkb20uY3JlYXRlQ29tbWVudChzdHJpbmcpO1xuICAgIGRvbS5pbnNlcnRCZWZvcmUodGhpcy5lbGVtZW50LCBjb21tZW50LCB0aGlzLm5leHRTaWJsaW5nKTtcbiAgICB0aGlzLmJsb2NrKCkubmV3Tm9kZShjb21tZW50KTtcbiAgICByZXR1cm4gY29tbWVudDtcbiAgfVxuXG4gIHNldFN0YXRpY0F0dHJpYnV0ZShuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmV4cGVjdE9wZXJhdGlvbnMoJ3NldFN0YXRpY0F0dHJpYnV0ZScpLmFkZFN0YXRpY0F0dHJpYnV0ZSh0aGlzLmV4cGVjdENvbnN0cnVjdGluZygnc2V0U3RhdGljQXR0cmlidXRlJyksIG5hbWUsIHZhbHVlKTtcbiAgfVxuXG4gIHNldFN0YXRpY0F0dHJpYnV0ZU5TKG5hbWVzcGFjZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmV4cGVjdE9wZXJhdGlvbnMoJ3NldFN0YXRpY0F0dHJpYnV0ZU5TJykuYWRkU3RhdGljQXR0cmlidXRlTlModGhpcy5leHBlY3RDb25zdHJ1Y3RpbmcoJ3NldFN0YXRpY0F0dHJpYnV0ZU5TJyksIG5hbWVzcGFjZSwgbmFtZSwgdmFsdWUpO1xuICB9XG5cbiAgc2V0RHluYW1pY0F0dHJpYnV0ZShuYW1lOiBzdHJpbmcsIHJlZmVyZW5jZTogVmVyc2lvbmVkUmVmZXJlbmNlPHN0cmluZz4sIGlzVHJ1c3Rpbmc6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmV4cGVjdE9wZXJhdGlvbnMoJ3NldER5bmFtaWNBdHRyaWJ1dGUnKS5hZGREeW5hbWljQXR0cmlidXRlKHRoaXMuZXhwZWN0Q29uc3RydWN0aW5nKCdzZXREeW5hbWljQXR0cmlidXRlJyksIG5hbWUsIHJlZmVyZW5jZSwgaXNUcnVzdGluZyk7XG4gIH1cblxuICBzZXREeW5hbWljQXR0cmlidXRlTlMobmFtZXNwYWNlOiBzdHJpbmcsIG5hbWU6IHN0cmluZywgcmVmZXJlbmNlOiBWZXJzaW9uZWRSZWZlcmVuY2U8c3RyaW5nPiwgaXNUcnVzdGluZzogYm9vbGVhbikge1xuICAgIHRoaXMuZXhwZWN0T3BlcmF0aW9ucygnc2V0RHluYW1pY0F0dHJpYnV0ZU5TJykuYWRkRHluYW1pY0F0dHJpYnV0ZU5TKHRoaXMuZXhwZWN0Q29uc3RydWN0aW5nKCdzZXREeW5hbWljQXR0cmlidXRlTlMnKSwgbmFtZXNwYWNlLCBuYW1lLCByZWZlcmVuY2UsIGlzVHJ1c3RpbmcpO1xuICB9XG5cbiAgY2xvc2VFbGVtZW50KCkge1xuICAgIHRoaXMuYmxvY2soKS5jbG9zZUVsZW1lbnQoKTtcbiAgICB0aGlzLnBvcEVsZW1lbnQoKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYWNrZXIgZXh0ZW5kcyBEZXN0cm95YWJsZUJvdW5kcyB7XG4gIG9wZW5FbGVtZW50KGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50KTogdm9pZDtcbiAgY2xvc2VFbGVtZW50KCk6IHZvaWQ7XG4gIG5ld05vZGUobm9kZTogU2ltcGxlLk5vZGUpOiB2b2lkO1xuICBuZXdCb3VuZHMoYm91bmRzOiBCb3VuZHMpOiB2b2lkO1xuICBuZXdEZXN0cm95YWJsZShkOiBEZXN0cm95YWJsZSk6IHZvaWQ7XG4gIGZpbmFsaXplKHN0YWNrOiBFbGVtZW50U3RhY2spOiB2b2lkO1xufVxuXG5leHBvcnQgY2xhc3MgU2ltcGxlQmxvY2tUcmFja2VyIGltcGxlbWVudHMgVHJhY2tlciB7XG4gIHByb3RlY3RlZCBmaXJzdDogT3B0aW9uPEZpcnN0Tm9kZT4gPSBudWxsO1xuICBwcm90ZWN0ZWQgbGFzdDogT3B0aW9uPExhc3ROb2RlPiA9IG51bGw7XG4gIHByb3RlY3RlZCBkZXN0cm95YWJsZXM6IE9wdGlvbjxEZXN0cm95YWJsZVtdPiA9IG51bGw7XG4gIHByb3RlY3RlZCBuZXN0aW5nID0gMDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBhcmVudDogU2ltcGxlLkVsZW1lbnQpe31cblxuICBkZXN0cm95KCkge1xuICAgIGxldCB7IGRlc3Ryb3lhYmxlcyB9ID0gdGhpcztcblxuICAgIGlmIChkZXN0cm95YWJsZXMgJiYgZGVzdHJveWFibGVzLmxlbmd0aCkge1xuICAgICAgZm9yIChsZXQgaT0wOyBpPGRlc3Ryb3lhYmxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBkZXN0cm95YWJsZXNbaV0uZGVzdHJveSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHBhcmVudEVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50O1xuICB9XG5cbiAgZmlyc3ROb2RlKCk6IE9wdGlvbjxTaW1wbGUuTm9kZT4ge1xuICAgIHJldHVybiB0aGlzLmZpcnN0ICYmIHRoaXMuZmlyc3QuZmlyc3ROb2RlKCk7XG4gIH1cblxuICBsYXN0Tm9kZSgpOiBPcHRpb248U2ltcGxlLk5vZGU+IHtcbiAgICByZXR1cm4gdGhpcy5sYXN0ICYmIHRoaXMubGFzdC5sYXN0Tm9kZSgpO1xuICB9XG5cbiAgb3BlbkVsZW1lbnQoZWxlbWVudDogRWxlbWVudCkge1xuICAgIHRoaXMubmV3Tm9kZShlbGVtZW50KTtcbiAgICB0aGlzLm5lc3RpbmcrKztcbiAgfVxuXG4gIGNsb3NlRWxlbWVudCgpIHtcbiAgICB0aGlzLm5lc3RpbmctLTtcbiAgfVxuXG4gIG5ld05vZGUobm9kZTogTm9kZSkge1xuICAgIGlmICh0aGlzLm5lc3RpbmcgIT09IDApIHJldHVybjtcblxuICAgIGlmICghdGhpcy5maXJzdCkge1xuICAgICAgdGhpcy5maXJzdCA9IG5ldyBGaXJzdChub2RlKTtcbiAgICB9XG5cbiAgICB0aGlzLmxhc3QgPSBuZXcgTGFzdChub2RlKTtcbiAgfVxuXG4gIG5ld0JvdW5kcyhib3VuZHM6IEJvdW5kcykge1xuICAgIGlmICh0aGlzLm5lc3RpbmcgIT09IDApIHJldHVybjtcblxuICAgIGlmICghdGhpcy5maXJzdCkge1xuICAgICAgdGhpcy5maXJzdCA9IGJvdW5kcztcbiAgICB9XG5cbiAgICB0aGlzLmxhc3QgPSBib3VuZHM7XG4gIH1cblxuICBuZXdEZXN0cm95YWJsZShkOiBEZXN0cm95YWJsZSkge1xuICAgIHRoaXMuZGVzdHJveWFibGVzID0gdGhpcy5kZXN0cm95YWJsZXMgfHwgW107XG4gICAgdGhpcy5kZXN0cm95YWJsZXMucHVzaChkKTtcbiAgfVxuXG4gIGZpbmFsaXplKHN0YWNrOiBFbGVtZW50U3RhY2spIHtcbiAgICBpZiAoIXRoaXMuZmlyc3QpIHtcbiAgICAgIHN0YWNrLmFwcGVuZENvbW1lbnQoJycpO1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBSZW1vdGVCbG9ja1RyYWNrZXIgZXh0ZW5kcyBTaW1wbGVCbG9ja1RyYWNrZXIge1xuICBkZXN0cm95KCkge1xuICAgIHN1cGVyLmRlc3Ryb3koKTtcblxuICAgIGNsZWFyKHRoaXMpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRhYmxlVHJhY2tlciBleHRlbmRzIFRyYWNrZXIge1xuICByZXNldChlbnY6IEVudmlyb25tZW50KTogT3B0aW9uPFNpbXBsZS5Ob2RlPjtcbn1cblxuZXhwb3J0IGNsYXNzIFVwZGF0YWJsZUJsb2NrVHJhY2tlciBleHRlbmRzIFNpbXBsZUJsb2NrVHJhY2tlciBpbXBsZW1lbnRzIFVwZGF0YWJsZVRyYWNrZXIge1xuICByZXNldChlbnY6IEVudmlyb25tZW50KTogT3B0aW9uPFNpbXBsZS5Ob2RlPiB7XG4gICAgbGV0IHsgZGVzdHJveWFibGVzIH0gPSB0aGlzO1xuXG4gICAgaWYgKGRlc3Ryb3lhYmxlcyAmJiBkZXN0cm95YWJsZXMubGVuZ3RoKSB7XG4gICAgICBmb3IgKGxldCBpPTA7IGk8ZGVzdHJveWFibGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGVudi5kaWREZXN0cm95KGRlc3Ryb3lhYmxlc1tpXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IG5leHRTaWJsaW5nID0gY2xlYXIodGhpcyk7XG5cbiAgICB0aGlzLmZpcnN0ID0gbnVsbDtcbiAgICB0aGlzLmxhc3QgPSBudWxsO1xuICAgIHRoaXMuZGVzdHJveWFibGVzID0gbnVsbDtcbiAgICB0aGlzLm5lc3RpbmcgPSAwO1xuXG4gICAgcmV0dXJuIG5leHRTaWJsaW5nO1xuICB9XG59XG5cbmNsYXNzIEJsb2NrTGlzdFRyYWNrZXIgaW1wbGVtZW50cyBUcmFja2VyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwYXJlbnQ6IFNpbXBsZS5FbGVtZW50LCBwcml2YXRlIGJvdW5kTGlzdDogTGlua2VkTGlzdDxMaW5rZWRMaXN0Tm9kZSAmIEJvdW5kcyAmIERlc3Ryb3lhYmxlPikge1xuICAgIHRoaXMucGFyZW50ID0gcGFyZW50O1xuICAgIHRoaXMuYm91bmRMaXN0ID0gYm91bmRMaXN0O1xuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLmJvdW5kTGlzdC5mb3JFYWNoTm9kZShub2RlID0+IG5vZGUuZGVzdHJveSgpKTtcbiAgfVxuXG4gIHBhcmVudEVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50O1xuICB9XG5cbiAgZmlyc3ROb2RlKCk6IE9wdGlvbjxTaW1wbGUuTm9kZT4ge1xuICAgIGxldCBoZWFkID0gdGhpcy5ib3VuZExpc3QuaGVhZCgpO1xuICAgIHJldHVybiBoZWFkICYmIGhlYWQuZmlyc3ROb2RlKCk7XG4gIH1cblxuICBsYXN0Tm9kZSgpOiBPcHRpb248U2ltcGxlLk5vZGU+IHtcbiAgICBsZXQgdGFpbCA9IHRoaXMuYm91bmRMaXN0LnRhaWwoKTtcbiAgICByZXR1cm4gdGFpbCAmJiB0YWlsLmxhc3ROb2RlKCk7XG4gIH1cblxuICBvcGVuRWxlbWVudChfZWxlbWVudDogRWxlbWVudCkge1xuICB9XG5cbiAgY2xvc2VFbGVtZW50KCkge1xuICB9XG5cbiAgbmV3Tm9kZShfbm9kZTogTm9kZSkge1xuICB9XG5cbiAgbmV3Qm91bmRzKF9ib3VuZHM6IEJvdW5kcykge1xuICB9XG5cbiAgbmV3RGVzdHJveWFibGUoX2Q6IERlc3Ryb3lhYmxlKSB7XG4gIH1cblxuICBmaW5hbGl6ZShfc3RhY2s6IEVsZW1lbnRTdGFjaykge1xuICB9XG59XG4iXX0=

@@ -11,3 +11,2 @@ 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; }

import { moveNodesBefore } from '../dom/helper';
import { unwrap } from '@glimmer/util';
export var SVG_NAMESPACE = 'http://www.w3.org/2000/svg';

@@ -102,3 +101,3 @@ // Patch: insertAdjacentHTML on SVG Fix

// FF: Old versions will create a node in the wrong namespace
if (svg.childNodes.length === 1 && unwrap(svg.firstChild).namespaceURI === SVG_NAMESPACE) {
if (svg.childNodes.length === 1 && svg.firstChild.namespaceURI === SVG_NAMESPACE) {
// The test worked as expected, no fix required

@@ -110,2 +109,2 @@ return false;

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLWlubmVyLWh0bWwtZml4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3ZnLWlubmVyLWh0bWwtZml4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsQUFBTyxTQUFVLEFBQWMsQUFBRSxzQkFBTSxBQUFXLEFBQUM7QUFDbkQsQUFBTyxTQUFFLEFBQWUsQUFBbUMsdUJBQU0sQUFBZSxBQUFDO0FBQ2pGLEFBQU8sU0FBVSxBQUFNLEFBQUUsY0FBTSxBQUFlLEFBQUM7QUFFL0MsQUFBTSxPQUFDLElBQU0sQUFBYSxnQkFBRyxBQUE0QixBQUFDO0FBRzFELEFBQTBDO0FBQzFDLEFBQTZDO0FBQzdDLEFBQStFO0FBQy9FLEFBQTRFO0FBQzVFLEFBQTZEO0FBQzdELEFBQXNFO0FBQ3RFLEFBQTZFO0FBQzdFLEFBQStFO0FBQy9FLEFBQThFO0FBQzlFLEFBQStFO0FBQy9FLEFBQTJEO0FBQzNELEFBQU0sMkJBQXFCLEFBQTBCLFVBQUUsQUFBa0MsaUJBQUUsQUFBMkI7QUFDcEgsQUFBRSxBQUFDLFFBQUMsQ0FBQyxBQUFRLEFBQUMsVUFBQyxBQUFNLE9BQUMsQUFBZSxBQUFDO0FBRXRDLEFBQUUsQUFBQyxRQUFDLENBQUMsQUFBYyxlQUFDLEFBQVEsVUFBRSxBQUFZLEFBQUMsQUFBQyxlQUFDLEFBQUM7QUFDNUMsQUFBTSxlQUFDLEFBQWUsQUFBQyxBQUN6QjtBQUFDO0FBRUQsUUFBSSxBQUFHLE1BQUcsQUFBUSxTQUFDLEFBQWEsY0FBQyxBQUFLLEFBQUMsQUFBQztBQUV4QyxBQUFNLEFBQUMsQUFBb0M7Ozs7Ozs7OztnREFDekMsQUFBZ0IsNkNBQUMsQUFBbUIsUUFBRSxBQUFpQixhQUFFLEFBQVk7QUFDbkUsQUFBRSxBQUFDLGdCQUFDLEFBQUksU0FBSyxBQUFJLFFBQUksQUFBSSxTQUFLLEFBQUUsQUFBQyxJQUFDLEFBQUM7QUFDakMsQUFBTSx1QkFBQyxBQUFLLDJCQUFDLEFBQWdCLDRCQUFDLEFBQU0sUUFBRSxBQUFX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QUMsQUFBQztBQUN6RixBQUErQztBQUMvQyxBQUFNLG1CQUFDLEFBQUssQUFBQyxBQUNmO0FBQUM7QUFFRCxBQUFNLGVBQUMsQUFBSSxBQUFDLEFBQ2Q7QUFBQyxBQUNIO0FBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb3VuZHMsIENvbmNyZXRlQm91bmRzIH0gZnJvbSAnLi4vYm91bmRzJztcbmltcG9ydCB7IG1vdmVOb2Rlc0JlZm9yZSwgRE9NQ2hhbmdlcywgRE9NVHJlZUNvbnN0cnVjdGlvbiB9IGZyb20gJy4uL2RvbS9oZWxwZXInO1xuaW1wb3J0IHsgT3B0aW9uLCB1bndyYXAgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuZXhwb3J0IGNvbnN0IFNWR19OQU1FU1BBQ0UgPSAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnO1xuZXhwb3J0IHR5cGUgU1ZHX05BTUVTUEFDRSA9IHR5cGVvZiBTVkdfTkFNRVNQQUNFO1xuXG4vLyBQYXRjaDogICAgaW5zZXJ0QWRqYWNlbnRIVE1MIG9uIFNWRyBGaXhcbi8vIEJyb3dzZXJzOiBTYWZhcmksIElFLCBFZGdlLCBGaXJlZm94IH4zMy0zNFxuLy8gUmVhc29uOiAgIGluc2VydEFkamFjZW50SFRNTCBkb2VzIG5vdCBleGlzdCBvbiBTVkcgZWxlbWVudHMgaW4gU2FmYXJpLiBJdCBpc1xuLy8gICAgICAgICAgIHByZXNlbnQgYnV0IHRocm93cyBhbiBleGNlcHRpb24gb24gSUUgYW5kIEVkZ2UuIE9sZCB2ZXJzaW9ucyBvZlxuLy8gICAgICAgICAgIEZpcmVmb3ggY3JlYXRlIG5vZGVzIGluIHRoZSBpbmNvcnJlY3QgbmFtZXNwYWNlLlxuLy8gRml4OiAgICAgIFNpbmNlIElFIGFuZCBFZGdlIHNpbGVudGx5IGZhaWwgdG8gY3JlYXRlIFNWRyBub2RlcyB1c2luZ1xuLy8gICAgICAgICAgIGlubmVySFRNTCwgYW5kIGJlY2F1c2UgRmlyZWZveCBtYXkgY3JlYXRlIG5vZGVzIGluIHRoZSBpbmNvcnJlY3Rcbi8vICAgICAgICAgICBuYW1lc3BhY2UgdXNpbmcgaW5uZXJIVE1MIG9uIFNWRyBlbGVtZW50cywgYW4gSFRNTC1zdHJpbmcgd3JhcHBpbmdcbi8vICAgICAgICAgICBhcHByb2FjaCBpcyB1c2VkLiBBIHByZS9wb3N0IFNWRyB0YWcgaXMgYWRkZWQgdG8gdGhlIHN0cmluZywgdGhlblxuLy8gICAgICAgICAgIHRoYXQgd2hvbGUgc3RyaW5nIGlzIGFkZGVkIHRvIGEgZGl2LiBUaGUgY3JlYXRlZCBub2RlcyBhcmUgcGx1Y2tlZFxuLy8gICAgICAgICAgIG91dCBhbmQgYXBwbGllZCB0byB0aGUgdGFyZ2V0IGxvY2F0aW9uIG9uIERPTS5cbmV4cG9ydCBmdW5jdGlvbiBkb21DaGFuZ2VzKGRvY3VtZW50OiBPcHRpb248RG9jdW1lbnQ+LCBET01DaGFuZ2VzQ2xhc3M6IHR5cGVvZiBET01DaGFuZ2VzLCBzdmdOYW1lc3BhY2U6IFNWR19OQU1FU1BBQ0UpOiB0eXBlb2YgRE9NQ2hhbmdlcyB7XG4gIGlmICghZG9jdW1lbnQpIHJldHVybiBET01DaGFuZ2VzQ2xhc3M7XG5cbiAgaWYgKCFzaG91bGRBcHBseUZpeChkb2N1bWVudCwgc3ZnTmFtZXNwYWNlKSkge1xuICAgIHJldHVybiBET01DaGFuZ2VzQ2xhc3M7XG4gIH1cblxuICBsZXQgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cbiAgcmV0dXJuIGNsYXNzIERPTUNoYW5nZXNXaXRoU1ZHSW5uZXJIVE1MRml4IGV4dGVuZHMgRE9NQ2hhbmdlc0NsYXNzIHtcbiAgICBpbnNlcnRIVE1MQmVmb3JlKHBhcmVudDogSFRNTEVsZW1lbnQsIG5leHRTaWJsaW5nOiBOb2RlLCBodG1sOiBzdHJpbmcpOiBCb3VuZHMge1xuICAgICAgaWYgKGh0bWwgPT09IG51bGwgfHwgaHRtbCA9PT0gJycpIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBuZXh0U2libGluZywgaHRtbCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwYXJlbnQubmFtZXNwYWNlVVJJICE9PSBzdmdOYW1lc3BhY2UpIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBuZXh0U2libGluZywgaHRtbCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmaXhTVkcocGFyZW50LCBkaXYsIGh0bWwsIG5leHRTaWJsaW5nKTtcbiAgICB9XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmVlQ29uc3RydWN0aW9uKGRvY3VtZW50OiBPcHRpb248RG9jdW1lbnQ+LCBUcmVlQ29uc3RydWN0aW9uQ2xhc3M6IHR5cGVvZiBET01UcmVlQ29uc3RydWN0aW9uLCBzdmdOYW1lc3BhY2U6IFNWR19OQU1FU1BBQ0UpOiB0eXBlb2YgRE9NVHJlZUNvbnN0cnVjdGlvbiB7XG4gIGlmICghZG9jdW1lbnQpIHJldHVybiBUcmVlQ29uc3RydWN0aW9uQ2xhc3M7XG5cbiAgaWYgKCFzaG91bGRBcHBseUZpeChkb2N1bWVudCwgc3ZnTmFtZXNwYWNlKSkge1xuICAgIHJldHVybiBUcmVlQ29uc3RydWN0aW9uQ2xhc3M7XG4gIH1cblxuICBsZXQgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cbiAgcmV0dXJuIGNsYXNzIFRyZWVDb25zdHJ1Y3Rpb25XaXRoU1ZHSW5uZXJIVE1MRml4IGV4dGVuZHMgVHJlZUNvbnN0cnVjdGlvbkNsYXNzIHtcbiAgICBpbnNlcnRIVE1MQmVmb3JlKHBhcmVudDogSFRNTEVsZW1lbnQsIGh0bWw6IHN0cmluZywgIHJlZmVyZW5jZTogTm9kZSwpOiBCb3VuZHMge1xuICAgICAgaWYgKGh0bWwgPT09IG51bGwgfHwgaHRtbCA9PT0gJycpIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBodG1sLCByZWZlcmVuY2UpO1xuICAgICAgfVxuXG4gICAgICBpZiAocGFyZW50Lm5hbWVzcGFjZVVSSSAhPT0gc3ZnTmFtZXNwYWNlKSB7XG4gICAgICAgIHJldHVybiBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgaHRtbCwgcmVmZXJlbmNlKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZpeFNWRyhwYXJlbnQsIGRpdiwgaHRtbCwgcmVmZXJlbmNlKTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGZpeFNWRyhwYXJlbnQ6IEVsZW1lbnQsIGRpdjogSFRNTEVsZW1lbnQsIGh0bWw6IHN0cmluZywgcmVmZXJlbmNlOiBOb2RlKTogQm91bmRzIHtcbiAgLy8gSUUsIEVkZ2U6IGFsc28gZG8gbm90IGNvcnJlY3RseSBzdXBwb3J0IHVzaW5nIGBpbm5lckhUTUxgIG9uIFNWR1xuICAvLyBuYW1lc3BhY2VkIGVsZW1lbnRzLiBTbyBoZXJlIGEgd3JhcHBlciBpcyB1c2VkLlxuICBsZXQgd3JhcHBlZEh0bWwgPSAnPHN2Zz4nICsgaHRtbCArICc8L3N2Zz4nO1xuXG4gIGRpdi5pbm5lckhUTUwgPSB3cmFwcGVkSHRtbDtcblxuICBsZXQgW2ZpcnN0LCBsYXN0XSA9IG1vdmVOb2Rlc0JlZm9yZShkaXYuZmlyc3RDaGlsZCBhcyBOb2RlLCBwYXJlbnQsIHJlZmVyZW5jZSk7XG4gIHJldHVybiBuZXcgQ29uY3JldGVCb3VuZHMocGFyZW50LCBmaXJzdCwgbGFzdCk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZEFwcGx5Rml4KGRvY3VtZW50OiBEb2N1bWVudCwgc3ZnTmFtZXNwYWNlOiBTVkdfTkFNRVNQQUNFKSB7XG4gIGxldCBzdmcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoc3ZnTmFtZXNwYWNlLCAnc3ZnJyk7XG5cbiAgdHJ5IHtcbiAgICBzdmdbJ2luc2VydEFkamFjZW50SFRNTCddKCdiZWZvcmVFbmQnLCAnPGNpcmNsZT48L2NpcmNsZT4nKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIElFLCBFZGdlOiBXaWxsIHRocm93LCBpbnNlcnRBZGphY2VudEhUTUwgaXMgdW5zdXBwb3J0ZWQgb24gU1ZHXG4gICAgLy8gU2FmYXJpOiBXaWxsIHRocm93LCBpbnNlcnRBZGphY2VudEhUTUwgaXMgbm90IHByZXNlbnQgb24gU1ZHXG4gIH0gZmluYWxseSB7XG4gICAgLy8gRkY6IE9sZCB2ZXJzaW9ucyB3aWxsIGNyZWF0ZSBhIG5vZGUgaW4gdGhlIHdyb25nIG5hbWVzcGFjZVxuICAgIGlmIChzdmcuY2hpbGROb2Rlcy5sZW5ndGggPT09IDEgJiYgdW53cmFwKHN2Zy5maXJzdENoaWxkKS5uYW1lc3BhY2VVUkkgPT09IFNWR19OQU1FU1BBQ0UpIHtcbiAgICAgIC8vIFRoZSB0ZXN0IHdvcmtlZCBhcyBleHBlY3RlZCwgbm8gZml4IHJlcXVpcmVkXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLWlubmVyLWh0bWwtZml4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3ZnLWlubmVyLWh0bWwtZml4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsQUFBTyxTQUFVLEFBQWMsQUFBRSxzQkFBTSxBQUFXLEFBQUM7QUFDbkQsQUFBTyxTQUFFLEFBQWUsQUFBbUMsdUJBQU0sQUFBZSxBQUFDO0FBR2pGLEFBQU0sT0FBQyxJQUFNLEFBQWEsZ0JBQUcsQUFBNEIsQUFBQztBQUcxRCxBQUEwQztBQUMxQyxBQUE2QztBQUM3QyxBQUErRTtBQUMvRSxBQUE0RTtBQUM1RSxBQUE2RDtBQUM3RCxBQUFzRTtBQUN0RSxBQUE2RTtBQUM3RSxBQUErRTtBQUMvRSxBQUE4RTtBQUM5RSxBQUErRTtBQUMvRSxBQUEyRDtBQUMzRCxBQUFNLDJCQUFxQixBQUEwQixVQUFFLEFBQWtDLGlCQUFFLEFBQTJCO0FBQ3BILEFBQUUsQUFBQyxRQUFDLENBQUMsQUFBUSxBQUFDLFVBQUMsQUFBTSxPQUFDLEFBQWUsQUFBQztBQUV0QyxBQUFFLEFBQUMsUUFBQyxDQUFDLEFBQWMsZUFBQyxBQUFRLFVBQUUsQUFBWSxBQUFDLEFBQUMsZUFBQyxBQUFDO0FBQzVDLEFBQU0sZUFBQyxBQUFlLEFBQUMsQUFDekI7QUFBQztBQUVELFFBQUksQUFBRyxNQUFHLEFBQVEsU0FBQyxBQUFhLGNBQUMsQUFBSyxBQUFDLEFBQUM7QUFFeEMsQUFBTSxBQUFDLEFBQW9DOzs7Ozs7Ozs7Z0RBQ3pDLEFBQWdCLDZDQUFDLEFBQW1CLFFBQUUsQUFBaUIsYUFBRSxBQUFZO0FBQ25FLEFBQUUsQUFBQyxnQkFBQyxBQUFJLFNBQUssQUFBSSxRQUFJLEFBQUksU0FBSyxBQUFFLEFBQUMsSUFBQyxBQUFDO0FBQ2pDLEFBQU0sdUJBQUMsQUFBSywyQkFBQyxBQUFnQiw0QkFBQyxBQUFNLFFBQUUsQUFBVyxhQUFFLEFBQUksQUFBQyxBQUFDLEFBQzNEO0FBQUM7QUFFRCxBQUFF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O0FBRUQsQUFBTSxlQUFDLEFBQUksQUFBQyxBQUNkO0FBQUMsQUFDSDtBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm91bmRzLCBDb25jcmV0ZUJvdW5kcyB9IGZyb20gJy4uL2JvdW5kcyc7XG5pbXBvcnQgeyBtb3ZlTm9kZXNCZWZvcmUsIERPTUNoYW5nZXMsIERPTVRyZWVDb25zdHJ1Y3Rpb24gfSBmcm9tICcuLi9kb20vaGVscGVyJztcbmltcG9ydCB7IE9wdGlvbiB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuXG5leHBvcnQgY29uc3QgU1ZHX05BTUVTUEFDRSA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc7XG5leHBvcnQgdHlwZSBTVkdfTkFNRVNQQUNFID0gdHlwZW9mIFNWR19OQU1FU1BBQ0U7XG5cbi8vIFBhdGNoOiAgICBpbnNlcnRBZGphY2VudEhUTUwgb24gU1ZHIEZpeFxuLy8gQnJvd3NlcnM6IFNhZmFyaSwgSUUsIEVkZ2UsIEZpcmVmb3ggfjMzLTM0XG4vLyBSZWFzb246ICAgaW5zZXJ0QWRqYWNlbnRIVE1MIGRvZXMgbm90IGV4aXN0IG9uIFNWRyBlbGVtZW50cyBpbiBTYWZhcmkuIEl0IGlzXG4vLyAgICAgICAgICAgcHJlc2VudCBidXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBvbiBJRSBhbmQgRWRnZS4gT2xkIHZlcnNpb25zIG9mXG4vLyAgICAgICAgICAgRmlyZWZveCBjcmVhdGUgbm9kZXMgaW4gdGhlIGluY29ycmVjdCBuYW1lc3BhY2UuXG4vLyBGaXg6ICAgICAgU2luY2UgSUUgYW5kIEVkZ2Ugc2lsZW50bHkgZmFpbCB0byBjcmVhdGUgU1ZHIG5vZGVzIHVzaW5nXG4vLyAgICAgICAgICAgaW5uZXJIVE1MLCBhbmQgYmVjYXVzZSBGaXJlZm94IG1heSBjcmVhdGUgbm9kZXMgaW4gdGhlIGluY29ycmVjdFxuLy8gICAgICAgICAgIG5hbWVzcGFjZSB1c2luZyBpbm5lckhUTUwgb24gU1ZHIGVsZW1lbnRzLCBhbiBIVE1MLXN0cmluZyB3cmFwcGluZ1xuLy8gICAgICAgICAgIGFwcHJvYWNoIGlzIHVzZWQuIEEgcHJlL3Bvc3QgU1ZHIHRhZyBpcyBhZGRlZCB0byB0aGUgc3RyaW5nLCB0aGVuXG4vLyAgICAgICAgICAgdGhhdCB3aG9sZSBzdHJpbmcgaXMgYWRkZWQgdG8gYSBkaXYuIFRoZSBjcmVhdGVkIG5vZGVzIGFyZSBwbHVja2VkXG4vLyAgICAgICAgICAgb3V0IGFuZCBhcHBsaWVkIHRvIHRoZSB0YXJnZXQgbG9jYXRpb24gb24gRE9NLlxuZXhwb3J0IGZ1bmN0aW9uIGRvbUNoYW5nZXMoZG9jdW1lbnQ6IE9wdGlvbjxEb2N1bWVudD4sIERPTUNoYW5nZXNDbGFzczogdHlwZW9mIERPTUNoYW5nZXMsIHN2Z05hbWVzcGFjZTogU1ZHX05BTUVTUEFDRSk6IHR5cGVvZiBET01DaGFuZ2VzIHtcbiAgaWYgKCFkb2N1bWVudCkgcmV0dXJuIERPTUNoYW5nZXNDbGFzcztcblxuICBpZiAoIXNob3VsZEFwcGx5Rml4KGRvY3VtZW50LCBzdmdOYW1lc3BhY2UpKSB7XG4gICAgcmV0dXJuIERPTUNoYW5nZXNDbGFzcztcbiAgfVxuXG4gIGxldCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblxuICByZXR1cm4gY2xhc3MgRE9NQ2hhbmdlc1dpdGhTVkdJbm5lckhUTUxGaXggZXh0ZW5kcyBET01DaGFuZ2VzQ2xhc3Mge1xuICAgIGluc2VydEhUTUxCZWZvcmUocGFyZW50OiBIVE1MRWxlbWVudCwgbmV4dFNpYmxpbmc6IE5vZGUsIGh0bWw6IHN0cmluZyk6IEJvdW5kcyB7XG4gICAgICBpZiAoaHRtbCA9PT0gbnVsbCB8fCBodG1sID09PSAnJykge1xuICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIG5leHRTaWJsaW5nLCBodG1sKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHBhcmVudC5uYW1lc3BhY2VVUkkgIT09IHN2Z05hbWVzcGFjZSkge1xuICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIG5leHRTaWJsaW5nLCBodG1sKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZpeFNWRyhwYXJlbnQsIGRpdiwgaHRtbCwgbmV4dFNpYmxpbmcpO1xuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyZWVDb25zdHJ1Y3Rpb24oZG9jdW1lbnQ6IE9wdGlvbjxEb2N1bWVudD4sIFRyZWVDb25zdHJ1Y3Rpb25DbGFzczogdHlwZW9mIERPTVRyZWVDb25zdHJ1Y3Rpb24sIHN2Z05hbWVzcGFjZTogU1ZHX05BTUVTUEFDRSk6IHR5cGVvZiBET01UcmVlQ29uc3RydWN0aW9uIHtcbiAgaWYgKCFkb2N1bWVudCkgcmV0dXJuIFRyZWVDb25zdHJ1Y3Rpb25DbGFzcztcblxuICBpZiAoIXNob3VsZEFwcGx5Rml4KGRvY3VtZW50LCBzdmdOYW1lc3BhY2UpKSB7XG4gICAgcmV0dXJuIFRyZWVDb25zdHJ1Y3Rpb25DbGFzcztcbiAgfVxuXG4gIGxldCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblxuICByZXR1cm4gY2xhc3MgVHJlZUNvbnN0cnVjdGlvbldpdGhTVkdJbm5lckhUTUxGaXggZXh0ZW5kcyBUcmVlQ29uc3RydWN0aW9uQ2xhc3Mge1xuICAgIGluc2VydEhUTUxCZWZvcmUocGFyZW50OiBIVE1MRWxlbWVudCwgaHRtbDogc3RyaW5nLCAgcmVmZXJlbmNlOiBOb2RlLCk6IEJvdW5kcyB7XG4gICAgICBpZiAoaHRtbCA9PT0gbnVsbCB8fCBodG1sID09PSAnJykge1xuICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIGh0bWwsIHJlZmVyZW5jZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwYXJlbnQubmFtZXNwYWNlVVJJICE9PSBzdmdOYW1lc3BhY2UpIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBodG1sLCByZWZlcmVuY2UpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZml4U1ZHKHBhcmVudCwgZGl2LCBodG1sLCByZWZlcmVuY2UpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gZml4U1ZHKHBhcmVudDogRWxlbWVudCwgZGl2OiBIVE1MRWxlbWVudCwgaHRtbDogc3RyaW5nLCByZWZlcmVuY2U6IE5vZGUpOiBCb3VuZHMge1xuICAvLyBJRSwgRWRnZTogYWxzbyBkbyBub3QgY29ycmVjdGx5IHN1cHBvcnQgdXNpbmcgYGlubmVySFRNTGAgb24gU1ZHXG4gIC8vIG5hbWVzcGFjZWQgZWxlbWVudHMuIFNvIGhlcmUgYSB3cmFwcGVyIGlzIHVzZWQuXG4gIGxldCB3cmFwcGVkSHRtbCA9ICc8c3ZnPicgKyBodG1sICsgJzwvc3ZnPic7XG5cbiAgZGl2LmlubmVySFRNTCA9IHdyYXBwZWRIdG1sO1xuXG4gIGxldCBbZmlyc3QsIGxhc3RdID0gbW92ZU5vZGVzQmVmb3JlKGRpdi5maXJzdENoaWxkIGFzIE5vZGUsIHBhcmVudCwgcmVmZXJlbmNlKTtcbiAgcmV0dXJuIG5ldyBDb25jcmV0ZUJvdW5kcyhwYXJlbnQsIGZpcnN0LCBsYXN0KTtcbn1cblxuZnVuY3Rpb24gc2hvdWxkQXBwbHlGaXgoZG9jdW1lbnQ6IERvY3VtZW50LCBzdmdOYW1lc3BhY2U6IFNWR19OQU1FU1BBQ0UpIHtcbiAgbGV0IHN2ZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhzdmdOYW1lc3BhY2UsICdzdmcnKTtcblxuICB0cnkge1xuICAgIHN2Z1snaW5zZXJ0QWRqYWNlbnRIVE1MJ10oJ2JlZm9yZUVuZCcsICc8Y2lyY2xlPjwvY2lyY2xlPicpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgLy8gSUUsIEVkZ2U6IFdpbGwgdGhyb3csIGluc2VydEFkamFjZW50SFRNTCBpcyB1bnN1cHBvcnRlZCBvbiBTVkdcbiAgICAvLyBTYWZhcmk6IFdpbGwgdGhyb3csIGluc2VydEFkamFjZW50SFRNTCBpcyBub3QgcHJlc2VudCBvbiBTVkdcbiAgfSBmaW5hbGx5IHtcbiAgICAvLyBGRjogT2xkIHZlcnNpb25zIHdpbGwgY3JlYXRlIGEgbm9kZSBpbiB0aGUgd3JvbmcgbmFtZXNwYWNlXG4gICAgaWYgKHN2Zy5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMSAmJiBzdmcuZmlyc3RDaGlsZC5uYW1lc3BhY2VVUkkgPT09IFNWR19OQU1FU1BBQ0UpIHtcbiAgICAgIC8vIFRoZSB0ZXN0IHdvcmtlZCBhcyBleHBlY3RlZCwgbm8gZml4IHJlcXVpcmVkXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbiJdfQ==

@@ -14,3 +14,3 @@ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();

import { Register } from '../../opcodes';
import { Stack, dict, expect, fillNulls, EMPTY_ARRAY } from '@glimmer/util';
import { Stack, dict, fillNulls, EMPTY_ARRAY } from '@glimmer/util';
import { ComponentBuilder } from '../../compiler';

@@ -94,3 +94,3 @@ import { RawInlineBlock } from '../../scanner';

BasicOpcodeBuilder.prototype.stopLabels = function stopLabels() {
var label = expect(this.labelsStack.pop(), 'unbalanced push and pop labels');
var label = this.labelsStack.pop();
label.patch(this.program);

@@ -522,3 +522,3 @@ };

get: function () {
return expect(this.labelsStack.current, 'bug: not in a label stack');
return this.labelsStack.current;
}

@@ -623,2 +623,2 @@ }]);

export default OpcodeBuilder;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBSyxBQUFPLGFBQU0sQUFBVyxBQUFDO0FBQ3JDLE9BQU8sS0FBSyxBQUFFLFFBQU0sQUFBTSxBQUFDO0FBRzNCLEFBQU8sU0FBRSxBQUFRLEFBQUUsZ0JBQU0sQUFBZSxBQUFDO0FBRXpDLEFBQU8sU0FBVSxBQUFLLE9BQVUsQUFBSSxNQUFFLEFBQU0sUUFBRSxBQUFTLFdBQUUsQUFBVyxBQUFFLG1CQUFNLEFBQWUsQUFBQztBQWM1RixBQUFPLFNBQUUsQUFBZ0IsQUFBRSx3QkFBTSxBQUFnQixBQUFDO0FBQ2xELEFBQU8sU0FBRSxBQUFjLEFBQXFCLHNCQUFNLEFBQWUsQUFBQztBQUNsRSxBQUFPLFNBQUUsQUFBbUIscUJBQUUsQUFBSSxBQUFFLFlBQU0sQUFBd0IsQUFBQyxBQWNuRTs7O0FBQUE7OztBQUNFLGFBQU0sU0FBRyxBQUFJLEFBQVUsQUFBQztBQUN4QixhQUFPLFVBQTJELEFBQUUsQUFBQyxBQWV2RTtBQUFDOztxQkFiQyxBQUFLLHVCQUFDLEFBQVksTUFBRSxBQUFhO0FBQy9CLEFBQUksYUFBQyxBQUFNLE9BQUMsQUFBSSxBQUFDLFFBQUcsQUFBSyxBQUFDLEFBQzVCO0FBQUM7O3FCQUVELEFBQU0seUJBQUMsQUFBVSxJQUFFLEFBQW9CLFFBQUUsQUFBYztBQUNyRCxBQUFJLGFBQUMsQUFBTyxRQUFDLEFBQUksS0FBQyxFQUFFLEFBQUUsUUFBRSxBQUFNLGdCQUFFLEFBQU0sQUFBRSxBQUFDLEFBQUMsQUFDNUM7QUFBQzs7cUJBRUQsQUFBSyx1QkFBQyxBQUFnQjtBQUNwQixBQUFHLEFBQUMsQUFBQyxBQUFJLHlCQUEwQixBQUFJLEtBQUMsQUFBTyxBQUFDO0FBQUMsQUFBQyxnQkFBdkMsQUFBRTtnQkFBRSxBQUFNO2dCQUFFLEFBQU0sQUFBRTs7QUFDN0IsQUFBTyxvQkFB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bnRlbnQnO1xuaW1wb3J0ICogYXMgdm0gZnJvbSAnLi92bSc7XG5cbmltcG9ydCB7IEluc2VydGlvbiB9IGZyb20gJy4uLy4uL3Vwc2VydCc7XG5pbXBvcnQgeyBSZWdpc3RlciB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0ICogYXMgV2lyZUZvcm1hdCBmcm9tICdAZ2xpbW1lci93aXJlLWZvcm1hdCc7XG5pbXBvcnQgeyBPcHRpb24sIFN0YWNrLCBPcGFxdWUsIGRpY3QsIGV4cGVjdCwgZmlsbE51bGxzLCBFTVBUWV9BUlJBWSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHtcbiAgQ29uc3RhbnRzLFxuICBDb25zdGFudFN0cmluZyxcbiAgQ29uc3RhbnRBcnJheSxcbiAgQ29uc3RhbnRPdGhlcixcbiAgQ29uc3RhbnRCbG9jayxcbiAgQ29uc3RhbnRGdW5jdGlvbixcbn0gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvY29uc3RhbnRzJztcbmltcG9ydCB7IE1vZGlmaWVyTWFuYWdlciB9IGZyb20gJy4uLy4uL21vZGlmaWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQ29tcG9uZW50RGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL2NvbXBvbmVudC9pbnRlcmZhY2VzJztcbmltcG9ydCBFbnZpcm9ubWVudCwgeyBQcm9ncmFtIH0gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgU3ltYm9sVGFibGUsIENvbXBpbGF0aW9uTWV0YSB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQ29tcG9uZW50QnVpbGRlciBhcyBJQ29tcG9uZW50QnVpbGRlciB9IGZyb20gJy4uLy4uL29wY29kZS1idWlsZGVyJztcbmltcG9ydCB7IENvbXBvbmVudEJ1aWxkZXIgfSBmcm9tICcuLi8uLi9jb21waWxlcic7XG5pbXBvcnQgeyBSYXdJbmxpbmVCbG9jaywgQ2xpZW50U2lkZSwgQmxvY2sgfSBmcm9tICcuLi8uLi9zY2FubmVyJztcbmltcG9ydCB7IEludm9rZUR5bmFtaWNMYXlvdXQsIGV4cHIgfSBmcm9tICcuLi8uLi9zeW50YXgvZnVuY3Rpb25zJztcblxuaW1wb3J0IHsgT3AgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBDb21waWxlc0ludG88RT4ge1xuICBjb21waWxlKGJ1aWxkZXI6IE9wY29kZUJ1aWxkZXIpOiBFO1xufVxuXG5leHBvcnQgdHlwZSBSZXByZXNlbnRzPEU+ID0gQ29tcGlsZXNJbnRvPEU+IHwgRTtcblxuZXhwb3J0IHR5cGUgTGFiZWwgPSBzdHJpbmc7XG5cbnR5cGUgVGFyZ2V0T3Bjb2RlID0gT3AuSnVtcCB8IE9wLkp1bXBJZiB8IE9wLkp1bXBVbmxlc3MgfCBPcC5FbnRlckxpc3QgfCBPcC5JdGVyYXRlIHwgT3AuSW1tZWRpYXRlO1xuXG5jbGFzcyBMYWJlbHMge1xuICBsYWJlbHMgPSBkaWN0PG51bWJlcj4oKTtcbiAgdGFyZ2V0czogeyBhdDogbnVtYmVyLCBUYXJnZXQ6IFRhcmdldE9wY29kZSwgdGFyZ2V0OiBzdHJpbmcgfVtdID0gW107XG5cbiAgbGFiZWwobmFtZTogc3RyaW5nLCBpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5sYWJlbHNbbmFtZV0gPSBpbmRleDtcbiAgfVxuXG4gIHRhcmdldChhdDogbnVtYmVyLCBUYXJnZXQ6IFRhcmdldE9wY29kZSwgdGFyZ2V0OiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhcmdldHMucHVzaCh7IGF0LCBUYXJnZXQsIHRhcmdldCB9KTtcbiAgfVxuXG4gIHBhdGNoKG9wY29kZXM6IFByb2dyYW0pOiB2b2lkIHtcbiAgICBmb3IgKGxldCB7IGF0LCBUYXJnZXQsIHRhcmdldCB9IG9mIHRoaXMudGFyZ2V0cykge1xuICAgICAgb3Bjb2Rlcy5zZXQoYXQsIFRhcmdldCwgdGhpcy5sYWJlbHNbdGFyZ2V0XSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNpY09wY29kZUJ1aWxkZXIge1xuICBwcml2YXRlIGxhYmVsc1N0YWNrID0gbmV3IFN0YWNrPExhYmVscz4oKTtcbiAgcHVibGljIGNvbnN0YW50czogQ29uc3RhbnRzO1xuICBwdWJsaWMgc3RhcnQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZW52OiBFbnZpcm9ubWVudCwgcHVibGljIG1ldGE6IENvbXBpbGF0aW9uTWV0YSwgcHVibGljIHByb2dyYW06IFByb2dyYW0pIHtcbiAgICB0aGlzLmNvbnN0YW50cyA9IGVudi5jb25zdGFudHM7XG4gICAgdGhpcy5zdGFydCA9IHByb2dyYW0ubmV4dDtcbiAgfVxuXG4gIGFic3RyYWN0IGNvbXBpbGU8RT4oZXhwcjogUmVwcmVzZW50czxFPik6IEU7XG5cbiAgcHJpdmF0ZSBnZXQgcG9zKCkge1xuICAgIHJldHVybiB0aGlzLnByb2dyYW0uY3VycmVudDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IG5leHRQb3MoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZ3JhbS5uZXh0O1xuICB9XG5cbiAgdXB2YXJzPFQgZXh0ZW5kcyBbT3BhcXVlXT4oY291bnQ6IG51bWJlcik6IFQge1xuICAgIHJldHVybiBmaWxsTnVsbHMoY291bnQpIGFzIFQ7XG4gIH1cblxuICByZXNlcnZlKG5hbWU6IE9wKSB7XG4gICAgdGhpcy5wdXNoKG5hbWUsIDAsIDAsIDApO1xuICB9XG5cbiAgcHVzaChuYW1lOiBPcCwgb3AxID0gMCwgb3AyID0gMCwgb3AzID0gMCkge1xuICAgIHJldHVybiB0aGlzLnByb2dyYW0ucHVzaChuYW1lLCBvcDEsIG9wMiwgb3AzKTtcbiAgfVxuXG4gIGZpbmFsaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucHVzaChPcC5SZXR1cm4pO1xuICB9XG5cbiAgLy8gYXJnc1xuXG4gIHB1c2hBcmdzKHBvc2l0aW9uYWw6IG51bWJlciwgc3ludGhldGljOiBib29sZWFuKSB7XG4gICAgdGhpcy5wdXNoKE9wLlB1c2hBcmdzLCBwb3NpdGlvbmFsLCAoc3ludGhldGljIGFzIGFueSl8MCk7XG4gIH1cblxuICAvLyBoZWxwZXJzXG5cbiAgcHJpdmF0ZSBnZXQgbGFiZWxzKCk6IExhYmVscyB7XG4gICAgcmV0dXJuIGV4cGVjdCh0aGlzLmxhYmVsc1N0YWNrLmN1cnJlbnQsICdidWc6IG5vdCBpbiBhIGxhYmVsIHN0YWNrJyk7XG4gIH1cblxuICBzdGFydExhYmVscygpIHtcbiAgICB0aGlzLmxhYmVsc1N0YWNrLnB1c2gobmV3IExhYmVscygpKTtcbiAgfVxuXG4gIHN0b3BMYWJlbHMoKSB7XG4gICAgbGV0IGxhYmVsID0gZXhwZWN0KHRoaXMubGFiZWxzU3RhY2sucG9wKCksICd1bmJhbGFuY2VkIHB1c2ggYW5kIHBvcCBsYWJlbHMnKTtcbiAgICBsYWJlbC5wYXRjaCh0aGlzLnByb2dyYW0pO1xuICB9XG5cbiAgLy8gY29tcG9uZW50c1xuXG4gIHB1c2hDb21wb25lbnRNYW5hZ2VyKGRlZmluaXRpb246IENvbXBvbmVudERlZmluaXRpb248T3BhcXVlPikge1xuICAgIHRoaXMucHVzaChPcC5QdXNoQ29tcG9uZW50TWFuYWdlciwgdGhpcy5vdGhlcihkZWZpbml0aW9uKSk7XG4gIH1cblxuICBwdXNoRHluYW1pY0NvbXBvbmVudE1hbmFnZXIoKSB7XG4gICAgdGhpcy5wdXNoKE9wLlB1c2hEeW5hbWljQ29tcG9uZW50TWFuYWdlcik7XG4gIH1cblxuICBpbml0aWFsaXplQ29tcG9uZW50U3RhdGUoKSB7XG4gICAgdGhpcy5wdXNoKE9wLkluaXRpYWxpemVDb21wb25lbnRTdGF0ZSk7XG4gIH1cblxuICBwcmVwYXJlQXJncyhzdGF0ZTogUmVnaXN0ZXIpIHtcbiAgICB0aGlzLnB1c2goT3AuUHJlcGFyZUFyZ3MsIHN0YXRlKTtcbiAgfVxuXG4gIGNyZWF0ZUNvbXBvbmVudChzdGF0ZTogUmVnaXN0ZXIsIGhhc0RlZmF1bHQ6IGJvb2xlYW4sIGhhc0ludmVyc2U6IGJvb2xlYW4pIHtcbiAgICBsZXQgZmxhZyA9ICg8YW55Pmhhc0RlZmF1bHR8MCkgfCAoKDxhbnk+aGFzSW52ZXJzZXwwKSA8PCAxKTtcbiAgICB0aGlzLnB1c2goT3AuQ3JlYXRlQ29tcG9uZW50LCBmbGFnLCBzdGF0ZSk7XG4gIH1cblxuICByZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3Ioc3RhdGU6IFJlZ2lzdGVyKSB7XG4gICAgdGhpcy5wdXNoKE9wLlJlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3Rvciwgc3RhdGUpO1xuICB9XG5cbiAgYmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbigpIHtcbiAgICB0aGlzLnB1c2goT3AuQmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbik7XG4gIH1cblxuICBjb21taXRDb21wb25lbnRUcmFuc2FjdGlvbigpIHtcbiAgICB0aGlzLnB1c2goT3AuQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24pO1xuICB9XG5cbiAgcHVzaENvbXBvbmVudE9wZXJhdGlvbnMoKSB7XG4gICAgdGhpcy5wdXNoKE9wLlB1c2hDb21wb25lbnRPcGVyYXRpb25zKTtcbiAgfVxuXG4gIGdldENvbXBvbmVudFNlbGYoc3RhdGU6IFJlZ2lzdGVyKSB7XG4gICAgdGhpcy5wdXNoKE9wLkdldENvbXBvbmVudFNlbGYsIHN0YXRlKTtcbiAgfVxuXG4gIGdldENvbXBvbmVudExheW91dChzdGF0ZTogUmVnaXN0ZXIgKSB7XG4gICAgdGhpcy5wdXNoKE9wLkdldENvbXBvbmVudExheW91dCwgc3RhdGUpO1xuICB9XG5cbiAgZGlkQ3JlYXRlRWxlbWVudChzdGF0ZTogUmVnaXN0ZXIpIHtcbiAgICB0aGlzLnB1c2goT3AuRGlkQ3JlYXRlRWxlbWVudCwgc3RhdGUpO1xuICB9XG5cbiAgZGlkUmVuZGVyTGF5b3V0KHN0YXRlOiBSZWdpc3Rlcikge1xuICAgIHRoaXMucHVzaChPcC5EaWRSZW5kZXJMYXlvdXQsIHN0YXRlKTtcbiAgfVxuXG4gIC8vIHBhcnRpYWxcblxuICBnZXRQYXJ0aWFsVGVtcGxhdGUoKSB7XG4gICAgdGhpcy5wdXNoKE9wLkdldFBhcnRpYWxUZW1wbGF0ZSk7XG4gIH1cblxuICByZXNvbHZlTWF5YmVMb2NhbChuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLnB1c2goT3AuUmVzb2x2ZU1heWJlTG9jYWwsIHRoaXMuc3RyaW5nKG5hbWUpKTtcbiAgfVxuXG4gIC8vIGRlYnVnZ2VyXG5cbiAgZGVidWdnZXIoc3ltYm9sczogc3RyaW5nW10sIGV2YWxJbmZvOiBudW1iZXJbXSkge1xuICAgIHRoaXMucHVzaChPcC5EZWJ1Z2dlciwgdGhpcy5jb25zdGFudHMub3RoZXIoc3ltYm9scyksIHRoaXMuY29uc3RhbnRzLmFycmF5KGV2YWxJbmZvKSk7XG4gIH1cblxuICAvLyBjb250ZW50XG5cbiAgZHluYW1pY0NvbnRlbnQoT3Bjb2RlOiBjb250ZW50LkFwcGVuZER5bmFtaWNPcGNvZGU8SW5zZXJ0aW9uPikge1xuICAgIHRoaXMucHVzaChPcC5EeW5hbWljQ29udGVudCwgdGhpcy5vdGhlcihPcGNvZGUpKTtcbiAgfVxuXG4gIGNhdXRpb3VzQXBwZW5kKCkge1xuICAgIHRoaXMuZHluYW1pY0NvbnRlbnQobmV3IGNvbnRlbnQuT3B0aW1pemVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUoKSk7XG4gIH1cblxuICB0cnVzdGluZ0FwcGVuZCgpIHtcbiAgICB0aGlzLmR5bmFtaWNDb250ZW50KG5ldyBjb250ZW50Lk9wdGltaXplZFRydXN0aW5nQXBwZW5kT3Bjb2RlKCkpO1xuICB9XG5cbiAgLy8gZG9tXG5cbiAgdGV4dCh0ZXh0OiBzdHJpbmcpIHtcbiAgICB0aGlzLnB1c2goT3AuVGV4dCwgdGhpcy5jb25zdGFudHMuc3RyaW5nKHRleHQpKTtcbiAgfVxuXG4gIG9wZW5QcmltaXRpdmVFbGVtZW50KHRhZzogc3RyaW5nKSB7XG4gICAgdGhpcy5wdXNoKE9wLk9wZW5FbGVtZW50LCB0aGlzLmNvbnN0YW50cy5zdHJpbmcodGFnKSk7XG4gIH1cblxuICBvcGVuRWxlbWVudFdpdGhPcGVyYXRpb25zKHRhZzogc3RyaW5nKSB7XG4gICAgdGhpcy5wdXNoKE9wLk9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMsIHRoaXMuY29uc3RhbnRzLnN0cmluZyh0YWcpKTtcbiAgfVxuXG4gIG9wZW5EeW5hbWljRWxlbWVudCgpIHtcbiAgICB0aGlzLnB1c2goT3AuT3BlbkR5bmFtaWNFbGVtZW50KTtcbiAgfVxuXG4gIGZsdXNoRWxlbWVudCgpIHtcbiAgICB0aGlzLnB1c2goT3AuRmx1c2hFbGVtZW50KTtcbiAgfVxuXG4gIGNsb3NlRWxlbWVudCgpIHtcbiAgICB0aGlzLnB1c2goT3AuQ2xvc2VFbGVtZW50KTtcbiAgfVxuXG4gIHN0YXRpY0F0dHIoX25hbWU6IHN0cmluZywgX25hbWVzcGFjZTogT3B0aW9uPHN0cmluZz4sIF92YWx1ZTogc3RyaW5nKSB7XG4gICAgbGV0IG5hbWUgPSB0aGlzLmNvbnN0YW50cy5zdHJpbmcoX25hbWUpO1xuICAgIGxldCBuYW1lc3BhY2UgPSBfbmFtZXNwYWNlID8gdGhpcy5jb25zdGFudHMuc3RyaW5nKF9uYW1lc3BhY2UpIDogMDtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLmNvbnN0YW50cy5zdHJpbmcoX3ZhbHVlKTtcblxuICAgIHRoaXMucHVzaChPcC5TdGF0aWNBdHRyLCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlKTtcbiAgfVxuXG4gIGR5bmFtaWNBdHRyTlMoX25hbWU6IHN0cmluZywgX25hbWVzcGFjZTogc3RyaW5nLCB0cnVzdGluZzogYm9vbGVhbikge1xuICAgIGxldCBuYW1lID0gdGhpcy5jb25zdGFudHMuc3RyaW5nKF9uYW1lKTtcbiAgICBsZXQgbmFtZXNwYWNlID0gdGhpcy5jb25zdGFudHMuc3RyaW5nKF9uYW1lc3BhY2UpO1xuXG4gICAgdGhpcy5wdXNoKE9wLkR5bmFtaWNBdHRyTlMsIG5hbWUsIG5hbWVzcGFjZSwgKHRydXN0aW5nIGFzIGFueSl8MCk7XG4gIH1cblxuICBkeW5hbWljQXR0cihfbmFtZTogc3RyaW5nLCB0cnVzdGluZzogYm9vbGVhbikge1xuICAgIGxldCBuYW1lID0gdGhpcy5jb25zdGFudHMuc3RyaW5nKF9uYW1lKTtcbiAgICB0aGlzLnB1c2goT3AuRHluYW1pY0F0dHIsIG5hbWUsICh0cnVzdGluZyBhcyBhbnkpfDApO1xuICB9XG5cbiAgY29tbWVudChfY29tbWVudDogc3RyaW5nKSB7XG4gICAgbGV0IGNvbW1lbnQgPSB0aGlzLmNvbnN0YW50cy5zdHJpbmcoX2NvbW1lbnQpO1xuICAgIHRoaXMucHVzaChPcC5Db21tZW50LCBjb21tZW50KTtcbiAgfVxuXG4gIG1vZGlmaWVyKF9kZWZpbml0aW9uOiBNb2RpZmllck1hbmFnZXI8T3BhcXVlPikge1xuICAgIHRoaXMucHVzaChPcC5Nb2RpZmllciwgdGhpcy5vdGhlcihfZGVmaW5pdGlvbikpO1xuICB9XG5cbiAgLy8gbGlzdHNcblxuICBwdXRJdGVyYXRvcigpIHtcbiAgICB0aGlzLnB1c2goT3AuUHV0SXRlcmF0b3IpO1xuICB9XG5cbiAgZW50ZXJMaXN0KHN0YXJ0OiBzdHJpbmcpIHtcbiAgICB0aGlzLnJlc2VydmUoT3AuRW50ZXJMaXN0KTtcbiAgICB0aGlzLmxhYmVscy50YXJnZXQodGhpcy5wb3MsIE9wLkVudGVyTGlzdCwgc3RhcnQpO1xuICB9XG5cbiAgZXhpdExpc3QoKSB7XG4gICAgdGhpcy5wdXNoKE9wLkV4aXRMaXN0KTtcbiAgfVxuXG4gIGl0ZXJhdGUoYnJlYWtzOiBzdHJpbmcpIHtcbiAgICB0aGlzLnJlc2VydmUoT3AuSXRlcmF0ZSk7XG4gICAgdGhpcy5sYWJlbHMudGFyZ2V0KHRoaXMucG9zLCBPcC5JdGVyYXRlLCBicmVha3MpO1xuICB9XG5cbiAgLy8gZXhwcmVzc2lvbnNcblxuICBzZXRWYXJpYWJsZShzeW1ib2w6IG51bWJlcikge1xuICAgIHRoaXMucHVzaChPcC5TZXRWYXJpYWJsZSwgc3ltYm9sKTtcbiAgfVxuXG4gIGdldFZhcmlhYmxlKHN5bWJvbDogbnVtYmVyKSB7XG4gICAgdGhpcy5wdXNoKE9wLkdldFZhcmlhYmxlLCBzeW1ib2wpO1xuICB9XG5cbiAgZ2V0UHJvcGVydHkoa2V5OiBzdHJpbmcpIHtcbiAgICB0aGlzLnB1c2goT3AuR2V0UHJvcGVydHksIHRoaXMuc3RyaW5nKGtleSkpO1xuICB9XG5cbiAgZ2V0QmxvY2soc3ltYm9sOiBudW1iZXIpIHtcbiAgICB0aGlzLnB1c2goT3AuR2V0QmxvY2ssIHN5bWJvbCk7XG4gIH1cblxuICBoYXNCbG9jayhzeW1ib2w6IG51bWJlcikge1xuICAgIHRoaXMucHVzaChPcC5IYXNCbG9jaywgc3ltYm9sKTtcbiAgfVxuXG4gIGhhc0Jsb2NrUGFyYW1zKHN5bWJvbDogbnVtYmVyKSB7XG4gICAgdGhpcy5wdXNoKE9wLkhhc0Jsb2NrUGFyYW1zLCBzeW1ib2wpO1xuICB9XG5cbiAgY29uY2F0KHNpemU6IG51bWJlcikge1xuICAgIHRoaXMucHVzaChPcC5Db25jYXQsIHNpemUpO1xuICB9XG5cbiAgZnVuY3Rpb24oZjogQ2xpZW50U2lkZS5GdW5jdGlvbkV4cHJlc3Npb25DYWxsYmFjazxPcGFxdWU+KSB7XG4gICAgdGhpcy5wdXNoKE9wLkZ1bmN0aW9uLCB0aGlzLmZ1bmMoZikpO1xuICB9XG5cbiAgbG9hZChyZWdpc3RlcjogUmVnaXN0ZXIpIHtcbiAgICB0aGlzLnB1c2goT3AuTG9hZCwgcmVnaXN0ZXIpO1xuICB9XG5cbiAgZmV0Y2gocmVnaXN0ZXI6IFJlZ2lzdGVyKSB7XG4gICAgdGhpcy5wdXNoKE9wLkZldGNoLCByZWdpc3Rlcik7XG4gIH1cblxuICBkdXAocmVnaXN0ZXIgPSBSZWdpc3Rlci5zcCwgb2Zmc2V0ID0gMCkge1xuICAgIHJldHVybiB0aGlzLnB1c2goT3AuRHVwLCByZWdpc3Rlciwgb2Zmc2V0KTtcbiAgfVxuXG4gIHBvcChjb3VudCA9IDEpIHtcbiAgICByZXR1cm4gdGhpcy5wdXNoKE9wLlBvcCwgY291bnQpO1xuICB9XG5cbiAgLy8gdm1cblxuICBwdXNoUmVtb3RlRWxlbWVudCgpIHtcbiAgICB0aGlzLnB1c2goT3AuUHVzaFJlbW90ZUVsZW1lbnQpO1xuICB9XG5cbiAgcG9wUmVtb3RlRWxlbWVudCgpIHtcbiAgICB0aGlzLnB1c2goT3AuUG9wUmVtb3RlRWxlbWVudCk7XG4gIH1cblxuICBsYWJlbChuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLmxhYmVscy5sYWJlbChuYW1lLCB0aGlzLm5leHRQb3MpO1xuICB9XG5cbiAgcHVzaFJvb3RTY29wZShzeW1ib2xzOiBudW1iZXIsIGJpbmRDYWxsZXJTY29wZTogYm9vbGVhbikge1xuICAgIHRoaXMucHVzaChPcC5Sb290U2NvcGUsIHN5bWJvbHMsIDxhbnk+YmluZENhbGxlclNjb3BlfDApO1xuICB9XG5cbiAgcHVzaENoaWxkU2NvcGUoKSB7XG4gICAgdGhpcy5wdXNoKE9wLkNoaWxkU2NvcGUpO1xuICB9XG5cbiAgcG9wU2NvcGUoKSB7XG4gICAgdGhpcy5wdXNoKE9wLlBvcFNjb3BlKTtcbiAgfVxuXG4gIHJldHVyblRvKGxhYmVsOiBzdHJpbmcpIHtcbiAgICB0aGlzLnJlc2VydmUoT3AuSW1tZWRpYXRlKTtcbiAgICB0aGlzLmxhYmVscy50YXJnZXQodGhpcy5wb3MsIE9wLkltbWVkaWF0ZSwgbGFiZWwpO1xuICAgIHRoaXMubG9hZChSZWdpc3Rlci5yYSk7XG4gIH1cblxuICBwdXNoRHluYW1pY1Njb3BlKCkge1xuICAgIHRoaXMucHVzaChPcC5QdXNoRHluYW1pY1Njb3BlKTtcbiAgfVxuXG4gIHBvcER5bmFtaWNTY29wZSgpIHtcbiAgICB0aGlzLnB1c2goT3AuUG9wRHluYW1pY1Njb3BlKTtcbiAgfVxuXG4gIHB1c2hJbW1lZGlhdGU8VD4odmFsdWU6IFQpIHtcbiAgICB0aGlzLnB1c2goT3AuQ29uc3RhbnQsIHRoaXMub3RoZXIodmFsdWUpKTtcbiAgfVxuXG4gIHByaW1pdGl2ZShfcHJpbWl0aXZlOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkIHwgYm9vbGVhbikge1xuICAgIGxldCBmbGFnOiAwIHwgMSB8IDIgPSAwO1xuICAgIGxldCBwcmltaXRpdmU6IG51bWJlcjtcbiAgICBzd2l0Y2ggKHR5cGVvZiBfcHJpbWl0aXZlKSB7XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICBwcmltaXRpdmUgPSBfcHJpbWl0aXZlIGFzIG51bWJlcjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICBwcmltaXRpdmUgPSB0aGlzLnN0cmluZyhfcHJpbWl0aXZlIGFzIHN0cmluZyk7XG4gICAgICAgIGZsYWcgPSAxO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICBwcmltaXRpdmUgPSAoX3ByaW1pdGl2ZSBhcyBhbnkpIHwgMDtcbiAgICAgICAgZmxhZyA9IDI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgLy8gYXNzdW1lIG51bGxcbiAgICAgICAgcHJpbWl0aXZlID0gMjtcbiAgICAgICAgZmxhZyA9IDI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndW5kZWZpbmVkJzpcbiAgICAgICAgcHJpbWl0aXZlID0gMztcbiAgICAgICAgZmxhZyA9IDI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHByaW1pdGl2ZSBwYXNzZWQgdG8gcHVzaFByaW1pdGl2ZScpO1xuICAgIH1cblxuICAgIHRoaXMucHVzaChPcC5QcmltaXRpdmVSZWZlcmVuY2UsIChmbGFnIDw8IDMwKSB8IHByaW1pdGl2ZSk7XG4gIH1cblxuICBoZWxwZXIoZnVuYzogRnVuY3Rpb24pIHtcbiAgICB0aGlzLnB1c2goT3AuSGVscGVyLCB0aGlzLmZ1bmMoZnVuYykpO1xuICB9XG5cbiAgcHVzaEJsb2NrKGJsb2NrOiBPcHRpb248QmxvY2s+KSB7XG4gICAgdGhpcy5wdXNoKE9wLlB1c2hCbG9jaywgdGhpcy5ibG9jayhibG9jaykpO1xuICB9XG5cbiAgYmluZER5bmFtaWNTY29wZShfbmFtZXM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5wdXNoKE9wLkJpbmREeW5hbWljU2NvcGUsIHRoaXMubmFtZXMoX25hbWVzKSk7XG4gIH1cblxuICBlbnRlcihhcmdzOiBudW1iZXIpIHtcbiAgICB0aGlzLnB1c2goT3AuRW50ZXIsIGFyZ3MpO1xuICB9XG5cbiAgZXhpdCgpIHtcbiAgICB0aGlzLnB1c2goT3AuRXhpdCk7XG4gIH1cblxuICByZXR1cm4oKSB7XG4gICAgdGhpcy5wdXNoKE9wLlJldHVybik7XG4gIH1cblxuICBwdXNoRnJhbWUoKSB7XG4gICAgdGhpcy5wdXNoKE9wLlB1c2hGcmFtZSk7XG4gIH1cblxuICBwb3BGcmFtZSgpIHtcbiAgICB0aGlzLnB1c2goT3AuUG9wRnJhbWUpO1xuICB9XG5cbiAgY29tcGlsZUR5bmFtaWNCbG9jaygpOiB2b2lkIHtcbiAgICB0aGlzLnB1c2goT3AuQ29tcGlsZUR5bmFtaWNCbG9jayk7XG4gIH1cblxuICBpbnZva2VEeW5hbWljKGludm9rZXI6IHZtLkR5bmFtaWNJbnZva2VyPFN5bWJvbFRhYmxlPik6IHZvaWQge1xuICAgIHRoaXMucHVzaChPcC5JbnZva2VEeW5hbWljLCB0aGlzLm90aGVyKGludm9rZXIpKTtcbiAgfVxuXG4gIGludm9rZVN0YXRpYyhibG9jazogQmxvY2ssIGNhbGxlckNvdW50ID0gMCk6IHZvaWQge1xuICAgIGxldCB7IHBhcmFtZXRlcnMgfSA9IGJsb2NrLnN5bWJvbFRhYmxlO1xuICAgIGxldCBjYWxsZWVDb3VudCA9IHBhcmFtZXRlcnMubGVuZ3RoO1xuICAgIGxldCBjb3VudCA9IE1hdGgubWluKGNhbGxlckNvdW50LCBjYWxsZWVDb3VudCk7XG5cbiAgICB0aGlzLnB1c2hGcmFtZSgpO1xuXG4gICAgaWYgKGNvdW50KSB7XG4gICAgICB0aGlzLnB1c2hDaGlsZFNjb3BlKCk7XG5cbiAgICAgIGZvciAobGV0IGk9MDsgaTxjb3VudDsgaSsrKSB7XG4gICAgICAgIHRoaXMuZHVwKFJlZ2lzdGVyLmZwLCBjYWxsZXJDb3VudCAtIGkpO1xuICAgICAgICB0aGlzLnNldFZhcmlhYmxlKHBhcmFtZXRlcnNbaV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBfYmxvY2sgPSB0aGlzLmNvbnN0YW50cy5ibG9jayhibG9jayk7XG4gICAgdGhpcy5wdXNoKE9wLkludm9rZVN0YXRpYywgX2Jsb2NrKTtcblxuICAgIGlmIChjb3VudCkge1xuICAgICAgdGhpcy5wb3BTY29wZSgpO1xuICAgIH1cblxuICAgIHRoaXMucG9wRnJhbWUoKTtcbiAgfVxuXG4gIHRlc3QodGVzdEZ1bmM6ICdjb25zdCcgfCAnc2ltcGxlJyB8ICdlbnZpcm9ubWVudCcgfCB2bS5UZXN0RnVuY3Rpb24pIHtcbiAgICBsZXQgX2Z1bmM6IHZtLlRlc3RGdW5jdGlvbjtcblxuICAgIGlmICh0ZXN0RnVuYyA9PT0gJ2NvbnN0Jykge1xuICAgICAgX2Z1bmMgPSB2bS5Db25zdFRlc3Q7XG4gICAgfSBlbHNlIGlmICh0ZXN0RnVuYyA9PT0gJ3NpbXBsZScpIHtcbiAgICAgIF9mdW5jID0gdm0uU2ltcGxlVGVzdDtcbiAgICB9IGVsc2UgaWYgKHRlc3RGdW5jID09PSAnZW52aXJvbm1lbnQnKSB7XG4gICAgICBfZnVuYyA9IHZtLkVudmlyb25tZW50VGVzdDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB0ZXN0RnVuYyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgX2Z1bmMgPSB0ZXN0RnVuYztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bnJlYWNoYWJsZScpO1xuICAgIH1cblxuICAgIGxldCBmdW5jID0gdGhpcy5jb25zdGFudHMuZnVuY3Rpb24oX2Z1bmMpO1xuICAgIHRoaXMucHVzaChPcC5UZXN0LCBmdW5jKTtcbiAgfVxuXG4gIGp1bXAodGFyZ2V0OiBzdHJpbmcpIHtcbiAgICB0aGlzLnJlc2VydmUoT3AuSnVtcCk7XG4gICAgdGhpcy5sYWJlbHMudGFyZ2V0KHRoaXMucG9zLCBPcC5KdW1wLCB0YXJnZXQpO1xuICB9XG5cbiAganVtcElmKHRhcmdldDogc3RyaW5nKSB7XG4gICAgdGhpcy5yZXNlcnZlKE9wLkp1bXBJZik7XG4gICAgdGhpcy5sYWJlbHMudGFyZ2V0KHRoaXMucG9zLCBPcC5KdW1wSWYsIHRhcmdldCk7XG4gIH1cblxuICBqdW1wVW5sZXNzKHRhcmdldDogc3RyaW5nKSB7XG4gICAgdGhpcy5yZXNlcnZlKE9wLkp1bXBVbmxlc3MpO1xuICAgIHRoaXMubGFiZWxzLnRhcmdldCh0aGlzLnBvcywgT3AuSnVtcFVubGVzcywgdGFyZ2V0KTtcbiAgfVxuXG4gIHN0cmluZyhfc3RyaW5nOiBzdHJpbmcpOiBDb25zdGFudFN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29uc3RhbnRzLnN0cmluZyhfc3RyaW5nKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBuYW1lcyhfbmFtZXM6IHN0cmluZ1tdKTogQ29uc3RhbnRBcnJheSB7XG4gICAgbGV0IG5hbWVzID0gX25hbWVzLm1hcChuID0+IHRoaXMuY29uc3RhbnRzLnN0cmluZyhuKSk7XG4gICAgcmV0dXJuIHRoaXMuY29uc3RhbnRzLmFycmF5KG5hbWVzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzeW1ib2xzKHN5bWJvbHM6IG51bWJlcltdKTogQ29uc3RhbnRBcnJheSB7XG4gICAgcmV0dXJuIHRoaXMuY29uc3RhbnRzLmFycmF5KHN5bWJvbHMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG90aGVyKHZhbHVlOiBPcGFxdWUpOiBDb25zdGFudE90aGVyIHtcbiAgICByZXR1cm4gdGhpcy5jb25zdGFudHMub3RoZXIodmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJsb2NrKGJsb2NrOiBPcHRpb248QmxvY2s+KTogQ29uc3RhbnRCbG9jayB7XG4gICAgcmV0dXJuIGJsb2NrID8gdGhpcy5jb25zdGFudHMuYmxvY2soYmxvY2spIDogMDtcbiAgfVxuXG4gIHByb3RlY3RlZCBmdW5jKGZ1bmM6IEZ1bmN0aW9uKTogQ29uc3RhbnRGdW5jdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uc3RhbnRzLmZ1bmN0aW9uKGZ1bmMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzQ29tcGlsYWJsZUV4cHJlc3Npb248RT4oZXhwcjogUmVwcmVzZW50czxFPik6IGV4cHIgaXMgQ29tcGlsZXNJbnRvPEU+IHtcbiAgcmV0dXJuIGV4cHIgJiYgdHlwZW9mIGV4cHJbJ2NvbXBpbGUnXSA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgT3Bjb2RlQnVpbGRlciBleHRlbmRzIEJhc2ljT3Bjb2RlQnVpbGRlciB7XG4gIHB1YmxpYyBjb21wb25lbnQ6IElDb21wb25lbnRCdWlsZGVyO1xuXG4gIGNvbnN0cnVjdG9yKGVudjogRW52aXJvbm1lbnQsIG1ldGE6IENvbXBpbGF0aW9uTWV0YSwgcHJvZ3JhbTogUHJvZ3JhbSA9IGVudi5wcm9ncmFtKSB7XG4gICAgc3VwZXIoZW52LCBtZXRhLCBwcm9ncmFtKTtcbiAgICB0aGlzLmNvbXBvbmVudCA9IG5ldyBDb21wb25lbnRCdWlsZGVyKHRoaXMpO1xuICB9XG5cbiAgY29tcGlsZUFyZ3MocGFyYW1zOiBPcHRpb248V2lyZUZvcm1hdC5Db3JlLlBhcmFtcz4sIGhhc2g6IE9wdGlvbjxXaXJlRm9ybWF0LkNvcmUuSGFzaD4sIHN5bnRoZXRpYzogYm9vbGVhbikge1xuICAgIGxldCBwb3NpdGlvbmFsID0gMDtcblxuICAgIGlmIChwYXJhbXMpIHtcbiAgICAgIHBhcmFtcy5mb3JFYWNoKHAgPT4gZXhwcihwLCB0aGlzKSk7XG4gICAgICBwb3NpdGlvbmFsID0gcGFyYW1zLmxlbmd0aDtcbiAgICB9XG5cbiAgICBsZXQgbmFtZXMgPSBFTVBUWV9BUlJBWTtcblxuICAgIGlmIChoYXNoKSB7XG4gICAgICBuYW1lcyA9IGhhc2hbMF07XG4gICAgICBoYXNoWzFdLmZvckVhY2godiA9PiBleHByKHYsIHRoaXMpKTtcbiAgICB9XG5cbiAgICB0aGlzLnB1c2hJbW1lZGlhdGUobmFtZXMpO1xuICAgIHRoaXMucHVzaEFyZ3MocG9zaXRpb25hbCwgc3ludGhldGljKTtcbiAgfVxuXG4gIGNvbXBpbGU8RT4oZXhwcjogUmVwcmVzZW50czxFPik6IEUge1xuICAgIGlmIChpc0NvbXBpbGFibGVFeHByZXNzaW9uKGV4cHIpKSB7XG4gICAgICByZXR1cm4gZXhwci5jb21waWxlKHRoaXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZXhwcjtcbiAgICB9XG4gIH1cblxuICBndWFyZGVkQ2F1dGlvdXNBcHBlbmQoZXhwcmVzc2lvbjogV2lyZUZvcm1hdC5FeHByZXNzaW9uKSB7XG4gICAgZXhwcihleHByZXNzaW9uLCB0aGlzKTtcbiAgICB0aGlzLmR5bmFtaWNDb250ZW50KG5ldyBjb250ZW50Lkd1YXJkZWRDYXV0aW91c0FwcGVuZE9wY29kZSgpKTtcbiAgfVxuXG4gIGd1YXJkZWRUcnVzdGluZ0FwcGVuZChleHByZXNzaW9uOiBXaXJlRm9ybWF0LkV4cHJlc3Npb24pIHtcbiAgICBleHByKGV4cHJlc3Npb24sIHRoaXMpO1xuICAgIHRoaXMuZHluYW1pY0NvbnRlbnQobmV3IGNvbnRlbnQuR3VhcmRlZFRydXN0aW5nQXBwZW5kT3Bjb2RlKCkpO1xuICB9XG5cbiAgaW52b2tlQ29tcG9uZW50KGF0dHJzOiBPcHRpb248UmF3SW5saW5lQmxvY2s+LCBwYXJhbXM6IE9wdGlvbjxXaXJlRm9ybWF0LkNvcmUuUGFyYW1zPiwgaGFzaDogT3B0aW9uPFdpcmVGb3JtYXQuQ29yZS5IYXNoPiwgYmxvY2s6IE9wdGlvbjxCbG9jaz4sIGludmVyc2U6IE9wdGlvbjxCbG9jaz4gPSBudWxsKSB7XG4gICAgdGhpcy5pbml0aWFsaXplQ29tcG9uZW50U3RhdGUoKTtcblxuICAgIHRoaXMuZmV0Y2goUmVnaXN0ZXIuczApO1xuICAgIHRoaXMuZHVwKFJlZ2lzdGVyLnNwLCAxKTtcbiAgICB0aGlzLmxvYWQoUmVnaXN0ZXIuczApO1xuXG4gICAgdGhpcy5wdXNoQmxvY2soYmxvY2spO1xuICAgIHRoaXMucHVzaEJsb2NrKGludmVyc2UpO1xuXG4gICAgdGhpcy5jb21waWxlQXJncyhwYXJhbXMsIGhhc2gsIGZhbHNlKTtcbiAgICB0aGlzLnByZXBhcmVBcmdzKFJlZ2lzdGVyLnMwKTtcblxuICAgIHRoaXMuYmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbigpO1xuICAgIHRoaXMucHVzaER5bmFtaWNTY29wZSgpO1xuICAgIHRoaXMuY3JlYXRlQ29tcG9uZW50KFJlZ2lzdGVyLnMwLCB0cnVlLCBpbnZlcnNlID09PSBudWxsKTtcbiAgICB0aGlzLnJlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvcihSZWdpc3Rlci5zMCk7XG5cbiAgICB0aGlzLmdldENvbXBvbmVudFNlbGYoUmVnaXN0ZXIuczApO1xuICAgIHRoaXMuZ2V0Q29tcG9uZW50TGF5b3V0KFJlZ2lzdGVyLnMwKTtcbiAgICB0aGlzLmludm9rZUR5bmFtaWMobmV3IEludm9rZUR5bmFtaWNMYXlvdXQoYXR0cnMgJiYgYXR0cnMuc2NhbigpKSk7XG4gICAgdGhpcy5wb3BGcmFtZSgpO1xuXG4gICAgdGhpcy5wb3BTY29wZSgpO1xuICAgIHRoaXMucG9wRHluYW1pY1Njb3BlKCk7XG4gICAgdGhpcy5jb21taXRDb21wb25lbnRUcmFuc2FjdGlvbigpO1xuXG4gICAgdGhpcy5sb2FkKFJlZ2lzdGVyLnMwKTtcbiAgfVxuXG4gIHRlbXBsYXRlKGJsb2NrOiBPcHRpb248V2lyZUZvcm1hdC5TZXJpYWxpemVkSW5saW5lQmxvY2s+KTogT3B0aW9uPFJhd0lubGluZUJsb2NrPiB7XG4gICAgaWYgKCFibG9jaykgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIG5ldyBSYXdJbmxpbmVCbG9jayh0aGlzLmVudiwgdGhpcy5tZXRhLCBibG9jay5zdGF0ZW1lbnRzLCBibG9jay5wYXJhbWV0ZXJzKTtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBCbG9ja0NhbGxiYWNrID0gKGRzbDogT3Bjb2RlQnVpbGRlciwgQkVHSU46IExhYmVsLCBFTkQ6IExhYmVsKSA9PiB2b2lkO1xuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBSyxBQUFPLGFBQU0sQUFBVyxBQUFDO0FBQ3JDLE9BQU8sS0FBSyxBQUFFLFFBQU0sQUFBTSxBQUFDO0FBRzNCLEFBQU8sU0FBRSxBQUFRLEFBQUUsZ0JBQU0sQUFBZSxBQUFDO0FBRXpDLEFBQU8sU0FBVSxBQUFLLE9BQVUsQUFBSSxNQUFFLEFBQVMsV0FBRSxBQUFXLEFBQUUsbUJBQU0sQUFBZSxBQUFDO0FBY3BGLEFBQU8sU0FBRSxBQUFnQixBQUFFLHdCQUFNLEFBQWdCLEFBQUM7QUFDbEQsQUFBTyxTQUFFLEFBQWMsQUFBcUIsc0JBQU0sQUFBZSxBQUFDO0FBQ2xFLEFBQU8sU0FBRSxBQUFtQixxQkFBRSxBQUFJLEFBQUUsWUFBTSxBQUF3QixBQUFDLEFBY25FOzs7QUFBQTs7O0FBQ0UsYUFBTSxTQUFHLEFBQUksQUFBVSxBQUFDO0FBQ3hCLGFBQU8sVUFBMkQsQUFBRSxBQUFDLEFBZXZFO0FBQUM7O3FCQWJDLEFBQUssdUJBQUMsQUFBWSxNQUFFLEFBQWE7QUFDL0IsQUFBSSxhQUFDLEFBQU0sT0FBQyxBQUFJLEFBQUMsUUFBRyxBQUFLLEFBQUMsQUFDNUI7QUFBQzs7cUJBRUQsQUFBTSx5QkFBQyxBQUFVLElBQUUsQUFBb0IsUUFBRSxBQUFjO0FBQ3JELEFBQUksYUFBQyxBQUFPLFFBQUMsQUFBSSxLQUFDLEVBQUUsQUFBRSxRQUFFLEFBQU0sZ0JBQUUsQUFBTSxBQUFFLEFBQUMsQUFBQyxBQUM1QztBQUFDOztxQkFFRCxBQUFLLHVCQUFDLEFBQWdCO0FBQ3BCLEFBQUcsQUFBQyxBQUFDLEFBQUkseUJBQTBCLEFBQUksS0FBQyxBQUFPLEFBQUM7QUFBQyxBQUFDLGdCQUF2QyxBQUFFO2dCQUFFLEFBQU07Z0JBQUUsQUFBTSxBQUFFOztBQUM3QixBQUFPLG9CQUFDLEFBQUcsSUFBQyxBQUFFLElBQUUsQUFBTSxRQUFFLEFBQUksS0FBQyxBQUFNLE9BQUMsQUFBTSxBQUFDLEFBQUMsQUFBQyxBQUMvQztBQUFDLEFBQ0g7QUFBQyxBQUNGLEFBRUQsQUFBTTs7Ozs7O0FBS0osZ0NBQW1CLEFBQWdCLEtBQVMsQUFBcUIsTUFBUyxBQUFnQjs7O0FBQXZFLGFBQUcsTUFBSCxBQUFHLEFBQWE7QUFBUyxhQUFJLE9BQUosQUFBSSxBQUFpQjtBQUFTLGFBQU8sVUFBUCxBQUFPLEFBQVM7QUFKbEYsYUFBVyxjQUFHLElBQUksQUFBSyxBQUFVLEFBQUM7QUFLeEMsQUFBSSxhQUFDLEFBQVMsWUFBRyxBQUFHLElBQUMsQUFBUyxBQUFDO0FBQy9CLEFBQUksYUFBQyxBQUFLLFFBQUcsQUFBTyxRQUFDLEFBQUksQUFBQyxBQUM1QjtBQUFDLEFBSUQsQUFBWSxBQUFHOztpQ0FRZixBQUFNLHlCQUFxQixBQUFhO0FBQ3RDLEFBQU0sZUFBQyxBQUFTLFVBQUMsQUFBSyxBQUFNLEFBQUMsQUFDL0I7QUFBQzs7aUNBRUQsQUFBTywyQkFBQyxBQUFRO0FBQ2QsQUFBSSxhQUFDLEFBQUksS0FBQyxBQUFJLE1BQUUsQUFBQyxHQUFFLEFBQUMsR0FBRSxBQUFDLEFBQUMsQUFBQyxBQUMzQjtBQUFDOztpQ0FFRCxBQUFJLHFCQUFDLEFBQVE7WUFBRSxBQUFHLDBFQUFHLEFBQUM7WUFBRSxBQUFHLDBFQUFHLEFBQUM7WUFBRSxBQUFHLDBFQUFHLEFBQUM7O0FBQ3RDLEFBQU0sZUFBQyxBQUFJLEtBQUMsQUFBTyxRQUFDLEFBQUksS0FBQyxBQUFJLE1BQUUsQUFBRyxLQUFFLEFBQUcsS0FBRSxBQUFHLEFBQUMsQUFBQyxBQUNoRDtBQUFDOztpQ0FFRCxBQUFRO0FBQ04sQUFBTSxlQUFDLEFBQUksS0FBQyxBQUFJLEtBQUMsR0FBUyxBQUFDLEFBQUMsQUFDOUI7QUFBQztBQUVELEFBQU87OztpQ0FFUCxBQUFRLDZCQUFDLEFBQWtCLFlBQUUsQUFBa0I7QUFDN0MsQUFBSSxhQUFDLEFBQUksS0FBQyxHQUFXLGdCQUFFLEFBQVUsWUFBRyxBQUFpQixZQUFDLEFBQUMsQUFBQyxBQUFDLEFBQzNEO0FBQUM7QUFFRCxBQUFVLEFBRVYsQUFBWSxBQUFNOzs7aUNBSWxCLEFBQVc7QUFDVCxBQUFJLGFBQUMsQUFBVyxZQUFDLEFBQUksS0FBQyxJQUFJLEFBQU0sQUFBRSxBQUFDLEFBQUMsQUFDdEM7QUFBQzs7aUNBRUQsQUFBVTtBQUNSLFlBQUksQUFBSyxRQUFHLEFBQUksS0FBQyxBQUFXLFlBQUMsQUFBRyxBQUFFLEFBQUM7QUFDbkMsQUFBSyxjQUFDLEFBQUssTUFBQyxBQUFJLEtBQUMsQUFBTyxBQUFDLEFBQUMsQUFDNUI7QUFBQztBQUVELEFBQWE7OztpQ0FFYixBQUFvQixxREFBQyxBQUF1QztBQUMxRCxBQUFJLGFBQUMsQUFBSSxLQUFDLEdBQXVCLDRCQUFFLEFBQUksS0FBQyxBQUFLLE1BQUMsQUFBVSxBQUFDLEFBQUMsQUFBQyxBQUM3RDtBQUFDOztpQ0FFRCxBQUEyQjtBQUN6QixBQUFJLGFBQUMsQUFBSSxLQUFDLEdBQThCLEFBQUMsQUFBQyxBQUM1QztBQUFDOztpQ0FFRCxBQUF3QjtBQUN0QixBQUFJLGFBQUMsQUFBSSxLQUFDLEdBQTJCLEFBQUMsQUFBQyxBQUN6QztBQUFDOztpQ0FFRCxBQUFXLG1DQUFDLEFBQWU7QUFDekIsQUFBSSxhQUFDLEFBQUksS0FBQyxHQUFjLG1CQUFFLEFBQUssQUFBQyxBQUFDLEFBQ25DO0FBQUM7O2lDQUVELEFBQWUsMkNBQUMsQUFBZSxPQUFFLEFBQW1CLFlBQUUsQUFBbUI7QUFDdkUsWUFBSSxBQUFJLE9BQVMsQUFBVSxhQUFDLEFBQUMsQUFBQyxBQUFHLENBQXRCLEdBQXVCLENBQU0sQUFBVSxhQUFDLEFBQUMsQUFBQyxNQUFJLEFBQUMsQUFBQyxBQUFDO0FBQzVELEFBQUksYUFBQyxBQUFJLEtBQUMsR0FBa0IsdUJBQUUsQUFBSSxNQUFFLEFBQUssQUFBQyxBQUFDLEFBQzdDO0FBQUM7O2lDQUVELEFBQTJCLG1FQUFDLEFBQWU7QUFDekMsQUFBSSxhQUFDLEFBQUksS0FBQyxHQUE4QixtQ0FBRSxBQUFLLEFBQUMsQUFBQyxBQUNuRDtBQUFDOztpQ0FFRCxBQUF5QjtBQUN2QixBQUFJLGFBQUMsQUFBSSxLQUFDLEdBQTRCLEFBQUMsQUFBQyxBQUMxQztBQUFDOztpQ0FFRCxBQUEwQjtBQUN4QixBQUFJLGFBQUMsQUFBSSxLQUFDLEdBQTZCLEFBQUMsQUFBQyxBQUMzQztBQUFDOztpQ0FFRCxBQUF1QjtBQUNyQixBQUFJLGFBQUMsQUFBSSxLQUFDLEdBQTBCLEFBQUMsQUFBQyxBQUN4QztBQUFDOztpQ0FFRCxBQUFnQiw2Q0FBQyxBQUFlO0FBQzlCLEFBQUksYUFBQyxBQUFJLEtBQUMsR0FBbUIsd0JBQUUsQUFBSyxBQUFDLEFBQUMsQUFDeEM7QUFBQzs7aUNBRUQsQUFBa0IsaURBQUMsQUFBZTtBQUNoQyxBQUFJLGFBQUMsQUFBSSxLQUFDLEdBQXFCLDBCQUFFLEFBQUssQUFBQyxBQUFDLEFBQzFDO0FBQUM7O2lDQUVELEFBQWdCLDZDQUFDLEFBQWU7QUFDOUIsQUFBSSxhQUFDLEFBQUksS0FBQyxHQUFtQix3QkFBRSxBQUFLLEFBQUMsQUFBQyxBQUN4QztBQUFDOztpQ0FFRCxBQUFlLDJDQUFDLEFBQWU7QUFDN0IsQUFBSSxhQUFDLEFBQUksS0FBQyxHQUFrQix1QkFBRSxBQUFLLEFBQUMsQUFBQyxBQUN2QztBQUFDO0FBRUQsQUFBVTs7O2lDQUVWLEFBQWtCO0FBQ2hCLEFBQUksYUFBQyxBQUFJLEtBQUMsR0FBcUIsQUFBQyxBQUFDLEFBQ25DO0FBQUM7O2lDQUVELEFBQWlCLCtDQUFDLEFBQVk7QUFDNUIsQUFBSSxhQUFDLEFBQUksS0FBQyxHQUFvQix5QkFBRSxBQUFJLEtBQUMsQUFBTSxPQUFDLEFBQUksQUFBQyxBQUFDLEFBQUMsQUFDckQ7QUFBQztBQUVELEFBQVc7OztpQ0FFWCxBQUFRLDhCQUFDLEFBQWlCLFNBQUUsQUFBa0I7QUFDNUMsQUFBSSxhQUFDLEFBQUksS0FBQyxHQUFXLGdCQUFFLEFBQUksS0FBQyxBQUFTLFVBQUMsQUFBSyxNQUFDLEFBQU8sQUFBQyxVQUFFLEFBQUksS0FBQyxBQUFTLFVBQUMsQUFBSyxNQUFDLEFBQVEsQUFBQyxBQUFDLEFBQUMsQUFDeEY7QUFBQztBQUVELEFBQVU7OztpQ0FFVixBQUFjLHlDQUFDLEFBQThDO0FBQzNELEFBQUksYUFBQyxBQUFJLEtBQUMsR0FBaUIsc0JBQUUsQUFBSSxLQUFDLEFBQUssTUFBQyxBQUFNLEFBQUMsQUFBQyxBQUFDLEFBQ25EO0FBQUM7O2lDQUVELEFBQWM7QUFDWixBQUFJLGFBQUMsQUFBYyxlQUFDLElBQUksQUFBTyxRQUFDLEFBQTZCLEFBQUUsQUFBQyxBQUFDLEFBQ25FO0FBQUM7O2lDQUVELEFBQWM7QUFDWixBQUFJLGFBQUMsQUFBYyxlQUFDLElBQUksQUFBTyxRQUFDLEFBQTZCLEFBQUUsQUFBQyxBQUFDLEFBQ25FO0FBQUM7QUFFRCxBQUFNOzs7aUNBRU4sQUFBSSxxQkFBQyxBQUFZO0FBQ2YsQUFBSSxhQUFDLEFBQUksS0FBQyxHQUFPLFlBQUUsQUFBSSxLQUFDLEFBQVMsVUFBQyxBQUFNLE9BQUMsQUFBSSxBQUFDLEFBQUMsQUFBQyxBQUNsRDtBQUFDOztpQ0FFRCxBQUFvQixxREFBQyxBQUFXO0FBQzlCLEFBQUksYUFBQyxBQUFJLEtBQUMsR0FBYyxtQkFBRSxBQUFJLEtBQUMsQUFBUyxVQUFDLEFBQU0sT0FBQyxBQUFHLEFBQUMsQUFBQyxBQUFDLEFBQ3hEO0FBQUM7O2lDQUVELEFBQXlCLCtEQUFDLEFBQVc7QUFDbkMsQUFBSSxhQUFDLEFBQUksS0FBQyxHQUE0QixpQ0FBRSxBQUFJLEtBQUMsQUFBUyxVQUFDLEFBQU0sT0FBQyxBQUFHLEFBQUMsQUFBQyxBQUFDLEFBQ3RFO0FBQUM7O2lDQUVELEFBQWtCO0FBQ2hCLEFBQUksYUFBQyxBQUFJLEtBQUMsR0FBcUIsQUFBQyxBQUFDLEFBQ25DO0FBQUM7O2lDQUVELEFBQVk7QUFDVixBQUFJLGFBQUMsQUFBSSxLQUFDLEdBQWUsQUFBQyxBQUFDLEFBQzdCO0FBQUM7O2lDQUVELEFBQVk7QUFDVixBQUFJLGFBQUMsQUFBSSxLQUFDLEdBQWUsQUFBQyxBQUFDLEFBQzdCO0FBQUM7O2lDQUVELEFBQVUsaUNBQUMsQUFBYSxPQUFFLEFBQTBCLFlBQUUsQUFBYztBQUNsRSxZQUFJLEFBQUksT0FBRyxBQUFJLEtBQUMsQUFBUyxVQUFDLEFBQU0sT0FBQyxBQUFLLEFBQUMsQUFBQztBQUN4QyxZQUFJLEFBQVMsWUFBRyxBQUFVLGFBQUcsQUFBSSxLQUFDLEFBQVMsVUFBQyxBQUFNLE9BQUMsQUFBVSxBQUFDLGNBQUcsQUFBQyxBQUFDO0FBQ25FLFlBQUksQUFBSyxRQUFHLEFBQUksS0FBQyxBQUFTLFVBQUMsQUFBTSxPQUFDLEFBQU0sQUFBQyxBQUFDO0FBRTFDLEFBQUksYUFBQyxBQUFJLEtBQUMsR0FBYSxrQkFBRSxBQUFJLE1BQUUsQUFBSyxPQUFFLEFBQVMsQUFBQyxBQUFDLEFBQ25EO0FBQUM7O2lDQUVELEFBQWEsdUNBQUMsQUFBYSxPQUFFLEFBQWtCLFlBQUUsQUFBaUI7QUFDaEUsWUFBSSxBQUFJLE9BQUcsQUFBSSxLQUFDLEFBQVMsVUFBQyxBQUFNLE9BQUMsQUFBSyxBQUFDLEFBQUM7QUFDeEMsWUFBSSxBQUFTLFlBQUcsQUFBSSxLQUFDLEFBQVMsVUFBQyxBQUFNLE9BQUMsQUFBVSxBQUFDLEFBQUM7QUFFbEQsQUFBSSxhQUFDLEFBQUksS0FBQyxHQUFnQixxQkFBRSxBQUFJLE1BQUUsQUFBUyxXQUFHLEFBQWdCLFdBQUMsQUFBQyxBQUFDLEFBQUMsQUFDcEU7QUFBQzs7aUNBRUQsQUFBVyxtQ0FBQyxBQUFhLE9BQUUsQUFBaUI7QUFDMUMsWUFBSSxBQUFJLE9BQUcsQUFBSSxLQUFDLEFBQVMsVUFBQyxBQUFNLE9BQUMsQUFBSyxBQUFDLEFBQUM7QUFDeEMsQUFBSSxhQUFDLEFBQUksS0FBQyxHQUFjLG1CQUFFLEFBQUksTUFBRyxBQUFnQixXQUFDLEFBQUMsQUFBQyxBQUFDLEFBQ3ZEO0FBQUM7O2lDQUVELEFBQU8sMkJBQUMsQUFBZ0I7QUFDdEIsWUFBSSxBQUFPLFVBQUcsQUFBSSxLQUFDLEFBQVMsVUFBQyxBQUFNLE9BQUMsQUFBUSxBQUFDLEFBQUM7QUFDOUMsQUFBSSxhQUFDLEFBQUksS0FBQyxHQUFVLGVBQUUsQUFBTyxBQUFDLEFBQUMsQUFDakM7QUFBQzs7aUNBRUQsQUFBUSw2QkFBQyxBQUFvQztBQUMzQyxBQUFJLGFBQUMsQUFBSSxLQUFDLEdBQVcsZ0JBQUUsQUFBSSxLQUFDLEFBQUssTUFBQyxBQUFXLEFBQUMsQUFBQyxBQUFDLEFBQ2xEO0FBQUM7QUFFRCxBQUFROzs7aUNBRVIsQUFBVztBQUNULEFBQUksYUFBQyxBQUFJLEtBQUMsR0FBYyxBQUFDLEFBQUMsQUFDNUI7QUFBQzs7aUNBRUQsQUFBUywrQkFBQyxBQUFhO0FBQ3JCLEFBQUksYUFBQyxBQUFPLFFBQUMsR0FBWSxBQUFDLEFBQUM7QUFDM0IsQUFBSSxhQUFDLEFBQU0sT0FBQyxBQUFNLE9BQUMsQUFBSSxLQUFDLEFBQUcsS0FBRSxHQUFZLGlCQUFFLEFBQUssQUFBQyxBQUFDLEFBQ3BEO0FBQUM7O2lDQUVELEFBQVE7QUFDTixBQUFJLGFBQUMsQUFBSSxLQUFDLEdBQVcsQUFBQyxBQUFDLEFBQ3pCO0FBQUM7O2lDQUVELEFBQU8sMkJBQUMsQUFBYztBQUNwQixBQUFJLGFBQUMsQUFBTyxRQUFDLEdBQVUsQUFBQyxBQUFDO0FBQ3pCLEFBQUksYUFBQyxBQUFNLE9BQUMsQUFBTSxPQUFDLEFBQUksS0FBQyxBQUFHLEtBQUUsR0FBVSxlQUFFLEFBQU0sQUFBQyxBQUFDLEFBQ25EO0FBQUM7QUFFRCxBQUFjOzs7aUNBRWQsQUFBVyxtQ0FBQyxBQUFjO0FBQ3hCLEFBQUksYUFBQyxBQUFJLEtBQUMsRUFBYyxtQkFBRSxBQUFNLEFBQUMsQUFBQyxBQUNwQztBQUFDOztpQ0FFRCxBQUFXLG1DQUFDLEFBQWM7QUFDeEIsQUFBSSxhQUFDLEFBQUksS0FBQyxFQUFjLG1CQUFFLEFBQU0sQUFBQyxBQUFDLEFBQ3BDO0FBQUM7O2lDQUVELEFBQVcsbUNBQUMsQUFBVztBQUNyQixBQUFJLGFBQUMsQUFBSSxLQUFDLEVBQWMsbUJBQUUsQUFBSSxLQUFDLEFBQU0sT0FBQyxBQUFHLEFBQUMsQUFBQyxBQUFDLEFBQzlDO0FBQUM7O2lDQUVELEFBQVEsNkJBQUMsQUFBYztBQUNyQixBQUFJLGFBQUMsQUFBSSxLQUFDLEVBQVcsZ0JBQUUsQUFBTSxBQUFDLEFBQUMsQUFDakM7QUFBQzs7aUNBRUQsQUFBUSw2QkFBQyxBQUFjO0FBQ3JCLEFBQUksYUFBQyxBQUFJLEtBQUMsRUFBVyxnQkFBRSxBQUFNLEFBQUMsQUFBQyxBQUNqQztBQUFDOztpQ0FFRCxBQUFjLHlDQUFDLEFBQWM7QUFDM0IsQUFBSSxhQUFDLEFBQUksS0FBQyxHQUFpQixzQkFBRSxBQUFNLEFBQUMsQUFBQyxBQUN2QztBQUFDOztpQ0FFRCxBQUFNLHlCQUFDLEFBQVk7QUFDakIsQUFBSSxhQUFDLEFBQUksS0FBQyxHQUFTLGNBQUUsQUFBSSxBQUFDLEFBQUMsQUFDN0I7QUFBQzs7aUNBRUQsQUFBUSw4QkFBQyxBQUFnRDtBQUN2RCxBQUFJLGFBQUMsQUFBSSxLQUFDLEVBQVcsZ0JBQUUsQUFBSSxLQUFDLEFBQUksS0FBQyxBQUFDLEFBQUMsQUFBQyxBQUFDLEFBQ3ZDO0FBQUM7O2lDQUVELEFBQUkscUJBQUMsQUFBa0I7QUFDckIsQUFBSSxhQUFDLEFBQUksS0FBQyxHQUFPLFlBQUUsQUFBUSxBQUFDLEFBQUMsQUFDL0I7QUFBQzs7aUNBRUQsQUFBSyx1QkFBQyxBQUFrQjtBQUN0QixBQUFJLGFBQUMsQUFBSSxLQUFDLEdBQVEsYUFBRSxBQUFRLEFBQUMsQUFBQyxBQUNoQztBQUFDOztpQ0FFRCxBQUFHO1lBQUMsQUFBUSwrRUFBRyxBQUFRLFNBQUMsQUFBRTtZQUFFLEFBQU0sNkVBQUcsQUFBQzs7QUFDcEMsQUFBTSxlQUFDLEFBQUksS0FBQyxBQUFJLEtBQUMsR0FBTSxXQUFFLEFBQVEsVUFBRSxBQUFNLEFBQUMsQUFBQyxBQUM3QztBQUFDOztpQ0FFRCxBQUFHO1lBQUMsQUFBSyw0RUFBRyxBQUFDOztBQUNYLEFBQU0sZUFBQyxBQUFJLEtBQUMsQUFBSSxLQUFDLEdBQU0sV0FBRSxBQUFLLEFBQUMsQUFBQyxBQUNsQztBQUFDO0FBRUQsQUFBSzs7O2lDQUVMLEFBQWlCO0FBQ2YsQUFBSSxhQUFDLEFBQUksS0FBQyxHQUFvQixBQUFDLEFBQUMsQUFDbEM7QUFBQzs7aUNBRUQsQUFBZ0I7QUFDZCxBQUFJLGFBQUMsQUFBSSxLQUFDLEdBQW1CLEFBQUMsQUFBQyxBQUNqQztBQUFDOztpQ0FFRCxBQUFLLHVCQUFDLEFBQVk7QUFDaEIsQUFBSSxhQUFDLEFBQU0sT0FBQyxBQUFLLE1BQUMsQUFBSSxNQUFFLEFBQUksS0FBQyxBQUFPLEFBQUMsQUFBQyxBQUN4QztBQUFDOztpQ0FFRCxBQUFhLHVDQUFDLEFBQWUsU0FBRSxBQUF3QjtBQUNyRCxBQUFJLGFBQUMsQUFBSSxLQUFDLEdBQVksaUJBQUUsQUFBTyxTQUFPLEFBQWUsa0JBQUMsQUFBQyxBQUFDLEFBQUMsQUFDM0Q7QUFBQzs7aUNBRUQsQUFBYztBQUNaLEFBQUksYUFBQyxBQUFJLEtBQUMsR0FBYSxBQUFDLEFBQUMsQUFDM0I7QUFBQzs7aUNBRUQsQUFBUTtBQUNOLEFBQUksYUFBQyxBQUFJLEtBQUMsR0FBVyxBQUFDLEFBQUMsQUFDekI7QUFBQzs7aUNBRUQsQUFBUSw2QkFBQyxBQUFhO0FBQ3BCLEFBQUksYUFBQyxBQUFPLFFBQUMsR0FBWSxBQUFDLEFBQUM7QUFDM0IsQUFBSSxhQUFDLEFBQU0sT0FBQyxBQUFNLE9BQUMsQUFBSSxLQUFDLEFBQUcsS0FBRSxHQUFZLGlCQUFFLEFBQUssQUFBQyxBQUFDO0FBQ2xELEFBQUksYUFBQyxBQUFJLEtBQUMsQUFBUSxTQUFDLEFBQUUsQUFBQyxBQUFDLEFBQ3pCO0FBQUM7O2lDQUVELEFBQWdCO0FBQ2QsQUFBSSxhQUFDLEFBQUksS0FBQyxHQUFtQixBQUFDLEFBQUMsQUFDakM7QUFBQzs7aUNBRUQsQUFBZTtBQUNiLEFBQUksYUFBQyxBQUFJLEtBQUMsR0FBa0IsQUFBQyxBQUFDLEFBQ2hDO0FBQUM7O2lDQUVELEFBQWEsdUNBQUksQUFBUTtBQUN2QixBQUFJLGFBQUMsQUFBSSxLQUFDLEdBQVcsZ0JBQUUsQUFBSSxLQUFDLEFBQUssTUFBQyxBQUFLLEFBQUMsQUFBQyxBQUFDLEFBQzVDO0FBQUM7O2lDQUVELEFBQVMsK0JBQUMsQUFBd0Q7QUFDaEUsWUFBSSxBQUFJLE9BQWMsQUFBQyxBQUFDO0FBQ3hCLFlBQUksQUFBaUIsQUFBQztBQUN0QixBQUFNLEFBQUMsZ0JBQUMsT0FBTyxBQUFVLEFBQUMsQUFBQyxBQUFDO0FBQzFCLGlCQUFLLEFBQVE7QUFDWCxBQUFTLDRCQUFHLEFBQW9CLEFBQUM7QUFDakMsQUFBSyxBQUFDO0FBQ1IsaUJBQUssQUFBUTtBQUNYLEFBQVMsNEJBQUcsQUFBSSxLQUFDLEFBQU0sT0FBQyxBQUFvQixBQUFDLEFBQUM7QUFDOUMsQUFBSSx1QkFBRyxBQUFDLEFBQUM7QUFDVCxBQUFLLEFBQUM7QUFDUixpQkFBSyxBQUFTO0FBQ1osQUFBUyw0QkFBSSxBQUFrQixhQUFHLEFBQUMsQUFBQztBQUNwQyxBQUFJLHVCQUFHLEFBQUMsQUFBQztBQUNULEFBQUssQUFBQztBQUNSLGlCQUFLLEFBQVE7QUFDWCxBQUFjO0FBQ2QsQUFBUyw0QkFBRyxBQUFDLEFBQUM7QUFDZCxBQUFJLHVCQUFHLEFBQUMsQUFBQztBQUNULEFBQUssQUFBQztBQUNSLGlCQUFLLEFBQVc7QUFDZCxBQUFTLDRCQUFHLEFBQUMsQUFBQztBQUNkLEFBQUksdUJBQUcsQUFBQyxBQUFDO0FBQ1QsQUFBSyxBQUFDO0FBQ1I7QUFDRSxzQkFBTSxJQUFJLEFBQUssTUFBQyxBQUEyQyxBQUFDLEFBQUMsQUFDakUsQUFBQzs7QUFFRCxBQUFJLGFBQUMsQUFBSSxLQUFDLEdBQXFCLDBCQUFHLEFBQUksUUFBSSxBQUFFLEFBQUMsRUFBWixHQUFlLEFBQVMsQUFBQyxBQUFDLEFBQzdEO0FBQUM7O2lDQUVELEFBQU0seUJBQUMsQUFBYztBQUNuQixBQUFJLGFBQUMsQUFBSSxLQUFDLEVBQVMsY0FBRSxBQUFJLEtBQUMsQUFBSSxLQUFDLEFBQUksQUFBQyxBQUFDLEFBQUMsQUFDeEM7QUFBQzs7aUNBRUQsQUFBUywrQkFBQyxBQUFvQjtBQUM1QixBQUFJLGFBQUMsQUFBSSxLQUFDLEVBQVksaUJBQUUsQUFBSSxLQUFDLEFBQUssTUFBQyxBQUFLLEFBQUMsQUFBQyxBQUFDLEFBQzdDO0FBQUM7O2lDQUVELEFBQWdCLDZDQUFDLEFBQWdCO0FBQy9CLEFBQUksYUFBQyxBQUFJLEtBQUMsR0FBbUIsd0JBQUUsQUFBSSxLQUFDLEFBQUssTUFBQyxBQUFNLEFBQUMsQUFBQyxBQUFDLEFBQ3JEO0FBQUM7O2lDQUVELEFBQUssdUJBQUMsQUFBWTtBQUNoQixBQUFJLGFBQUMsQUFBSSxLQUFDLEdBQVEsYUFBRSxBQUFJLEFBQUMsQUFBQyxBQUM1QjtBQUFDOztpQ0FFRCxBQUFJO0FBQ0YsQUFBSSxhQUFDLEFBQUksS0FBQyxHQUFPLEFBQUMsQUFBQyxBQUNyQjtBQUFDOztpQ0FFRCxBQUFNO0FBQ0osQUFBSSxhQUFDLEFBQUksS0FBQyxHQUFTLEFBQUMsQUFBQyxBQUN2QjtBQUFDOztpQ0FFRCxBQUFTO0FBQ1AsQUFBSSxhQUFDLEFBQUksS0FBQyxHQUFZLEFBQUMsQUFBQyxBQUMxQjtBQUFDOztpQ0FFRCxBQUFRO0FBQ04sQUFBSSxhQUFDLEFBQUksS0FBQyxHQUFXLEFBQUMsQUFBQyxBQUN6QjtBQUFDOztpQ0FFRCxBQUFtQjtBQUNqQixBQUFJLGFBQUMsQUFBSSxLQUFDLEdBQXNCLEFBQUMsQUFBQyxBQUNwQztBQUFDOztpQ0FFRCxBQUFhLHVDQUFDLEFBQXVDO0FBQ25ELEFBQUksYUFBQyxBQUFJLEtBQUMsR0FBZ0IscUJBQUUsQUFBSSxLQUFDLEFBQUssTUFBQyxBQUFPLEFBQUMsQUFBQyxBQUFDLEFBQ25EO0FBQUM7O2lDQUVELEFBQVkscUNBQUMsQUFBWTtBQUN2QixBQUFJLFlBRHFCLEFBQVcsa0ZBQUcsQUFBQztZQUNsQyxBQUFVLEFBQUUsYUFBRyxBQUFLLE1BQUMsQUFBVyxBQUFDOztBQUN2QyxZQUFJLEFBQVcsY0FBRyxBQUFVLFdBQUMsQUFBTSxBQUFDO0FBQ3BDLFlBQUksQUFBSyxRQUFHLEFBQUksS0FBQyxBQUFHLElBQUMsQUFBVyxhQUFFLEFBQVcsQUFBQyxBQUFDO0FBRS9DLEFBQUksYUFBQyxBQUFTLEFBQUUsQUFBQztBQUVqQixBQUFFLEFBQUMsWUFBQyxBQUFLLEFBQUMsT0FBQyxBQUFDO0FBQ1YsQUFBSSxpQkFBQyxBQUFjLEFBQUUsQUFBQztBQUV0QixBQUFHLEFBQUMsaUJBQUMsSUFBSSxBQUFDLElBQUMsQUFBQyxHQUFFLEFBQUMsSUFBQyxBQUFLLE9BQUUsQUFBQyxBQUFFLEtBQUUsQUFBQztBQUMzQixBQUFJLHFCQUFDLEFBQUcsSUFBQyxBQUFRLFNBQUMsQUFBRSxJQUFFLEFBQVcsY0FBRyxBQUFDLEFBQUMsQUFBQztBQUN2QyxBQUFJLHFCQUFDLEFBQVcsWUFBQyxBQUFVLFdBQUMsQUFBQyxBQUFDLEFBQUMsQUFBQyxBQUNsQztBQUFDLEFBQ0g7QUFBQztBQUVELFlBQUksQUFBTSxTQUFHLEFBQUksS0FBQyxBQUFTLFVBQUMsQUFBSyxNQUFDLEFBQUssQUFBQyxBQUFDO0FBQ3pDLEFBQUksYUFBQyxBQUFJLEtBQUMsR0FBZSxvQkFBRSxBQUFNLEFBQUMsQUFBQztBQUVuQyxBQUFFLEFBQUMsWUFBQyxBQUFLLEFBQUMsT0FBQyxBQUFDO0FBQ1YsQUFBSSxpQkFBQyxBQUFRLEFBQUUsQUFBQyxBQUNsQjtBQUFDO0FBRUQsQUFBSSxhQUFDLEFBQVEsQUFBRSxBQUFDLEFBQ2xCO0FBQUM7O2lDQUVELEFBQUkscUJBQUMsQUFBOEQ7QUFDakUsWUFBSSxBQUFzQixBQUFDO0FBRTNCLEFBQUUsQUFBQyxZQUFDLEFBQVEsYUFBSyxBQUFPLEFBQUMsU0FBQyxBQUFDO0FBQ3pCLEFBQUssb0JBQUcsQUFBRSxHQUFDLEFBQVMsQUFBQyxBQUN2QjtBQUFDLEFBQUMsQUFBSSxtQkFBSyxBQUFRLGFBQUssQUFBUSxBQUFDLFVBQUMsQUFBQztBQUNqQyxBQUFLLG9CQUFHLEFBQUUsR0FBQyxBQUFVLEFBQUMsQUFDeEI7QUFBQyxBQUFDLEFBQUksU0FGQyxBQUFFLEFBQUMsVUFFQyxBQUFRLGFBQUssQUFBYSxBQUFDLGVBQUMsQUFBQztBQUN0QyxBQUFLLG9CQUFHLEFBQUUsR0FBQyxBQUFlLEFBQUMsQUFDN0I7QUFBQyxBQUFDLEFBQUksU0FGQyxBQUFFLEFBQUMsVUFFQyxPQUFPLEFBQVEsYUFBSyxBQUFVLEFBQUMsWUFBQyxBQUFDO0FBQzFDLEFBQUssb0JBQUcsQUFBUSxBQUFDLEFBQ25CO0FBQUMsQUFBQyxBQUFJLFNBRkMsQUFBRSxBQUFDLE1BRUgsQUFBQztBQUNOLGtCQUFNLElBQUksQUFBSyxNQUFDLEFBQWEsQUFBQyxBQUFDLEFBQ2pDO0FBQUM7QUFFRCxZQUFJLEFBQUksT0FBRyxBQUFJLEtBQUMsQUFBUyxVQUFDLEFBQVEsU0FBQyxBQUFLLEFBQUMsQUFBQztBQUMxQyxBQUFJLGFBQUMsQUFBSSxLQUFDLEdBQU8sWUFBRSxBQUFJLEFBQUMsQUFBQyxBQUMzQjtBQUFDOztpQ0FFRCxBQUFJLHFCQUFDLEFBQWM7QUFDakIsQUFBSSxhQUFDLEFBQU8sUUFBQyxHQUFPLEFBQUMsQUFBQztBQUN0QixBQUFJLGFBQUMsQUFBTSxPQUFDLEFBQU0sT0FBQyxBQUFJLEtBQUMsQUFBRyxLQUFFLEdBQU8sWUFBRSxBQUFNLEFBQUMsQUFBQyxBQUNoRDtBQUFDOztpQ0FFRCxBQUFNLHlCQUFDLEFBQWM7QUFDbkIsQUFBSSxhQUFDLEFBQU8sUUFBQyxHQUFTLEFBQUMsQUFBQztBQUN4QixBQUFJLGFBQUMsQUFBTSxPQUFDLEFBQU0sT0FBQyxBQUFJLEtBQUMsQUFBRyxLQUFFLEdBQVMsY0FBRSxBQUFNLEFBQUMsQUFBQyxBQUNsRDtBQUFDOztpQ0FFRCxBQUFVLGlDQUFDLEFBQWM7QUFDdkIsQUFBSSxhQUFDLEFBQU8sUUFBQyxHQUFhLEFBQUMsQUFBQztBQUM1QixBQUFJLGFBQUMsQUFBTSxPQUFDLEFBQU0sT0FBQyxBQUFJLEtBQUMsQUFBRyxLQUFFLEdBQWEsa0JBQUUsQUFBTSxBQUFDLEFBQUMsQUFDdEQ7QUFBQzs7aUNBRUQsQUFBTSx5QkFBQyxBQUFlO0FBQ3BCLEFBQU0sZUFBQyxBQUFJLEtBQUMsQUFBUyxVQUFDLEFBQU0sT0FBQyxBQUFPLEFBQUMsQUFBQyxBQUN4QztBQUFDOztpQ0FFUyxBQUFLLHVCQUFDLEFBQWdCOzs7QUFDOUIsWUFBSSxBQUFLLGVBQVUsQUFBRztBQUFDLEFBQUMsbUJBQUksQUFBSSxNQUFDLEFBQVMsVUFBQyxBQUFNLE9BQUMsQUFBQyxBQUFDLEFBQUMsQUFBQztTQUExQyxBQUFNO0FBQ2xCLEFBQU0sZUFBQyxBQUFJLEtBQUMsQUFBUyxVQUFDLEFBQUssTUFBQyxBQUFLLEFBQUMsQUFBQyxBQUNyQztBQUFDOztpQ0FFUyxBQUFPLDJCQUFDLEFBQWlCO0FBQ2pDLEFBQU0sZUFBQyxBQUFJLEtBQUMsQUFBUyxVQUFDLEFBQUssTUFBQyxBQUFPLEFBQUMsQUFBQyxBQUN2QztBQUFDOztpQ0FFUyxBQUFLLHVCQUFDLEFBQWE7QUFDM0IsQUFBTSxlQUFDLEFBQUksS0FBQyxBQUFTLFVBQUMsQUFBSyxNQUFDLEFBQUssQUFBQyxBQUFDLEFBQ3JDO0FBQUM7O2lDQUVTLEFBQUssdUJBQUMsQUFBb0I7QUFDbEMsQUFBTSxlQUFDLEFBQUssVUFBRyxBQUFJLEtBQUMsQUFBUyxVQUFDLEFBQUssTUFBQyxBQUFLLEFBQUMsV0FBRyxBQUFDLEFBQUMsQUFDakQ7QUFBQzs7aUNBRVMsQUFBSSxxQkFBQyxBQUFjO0FBQzNCLEFBQU0sZUFBQyxBQUFJLEtBQUMsQUFBUyxVQUFDLEFBQVEsU0FBQyxBQUFJLEFBQUMsQUFBQyxBQUN2QztBQUFDLEFBQ0Y7Ozs7O0FBcmNHLEFBQU0sbUJBQUMsQUFBSSxLQUFDLEFBQU8sUUFBQyxBQUFPLEFBQUMsQUFDOUI7QUFBQyxBQUVELEFBQVksQUFBTzs7OztBQUNqQixBQUFNLG1CQUFDLEFBQUksS0FBQyxBQUFPLFFBQUMsQUFBSSxBQUFDLEFBQzNCO0FBQUM7Ozs7QUEyQkMsQUFBTSxtQkFBQyxBQUFJLEtBQUMsQUFBVyxZQUFDLEFBQU8sQUFBQyxBQUNsQztBQUFDOzs7Ozs7OztBQXNhSCxnQ0FBbUMsQUFBbUI7QUFDcEQsQUFBTSxXQUFDLEFBQUksUUFBSSxPQUFPLEFBQUksS0FBQyxBQUFTLEFBQUMsZUFBSyxBQUFVLEFBQUMsQUFDdkQ7QUFBQyxBQUVELEFBQU0sQUFBQyxBQUFPOztJQUFxQjs7O0FBR2pDLDJCQUFZLEFBQWdCLEtBQUUsQUFBcUI7WUFBRSw4RUFBbUIsQUFBRyxJQUFDLEFBQU87Ozs7c0RBQ2pGLEFBQUssK0JBQUMsQUFBRyxLQUFFLEFBQUksTUFBRSxBQUFPLEFBQUMsQUFBQzs7QUFDMUIsQUFBSSxlQUFDLEFBQVMsWUFBRyxJQUFJLEFBQWdCLEFBQUMsQUFBSSxBQUFDLEFBQUMsQUFDOUM7O0FBQUM7OzRCQUVELEFBQVcsbUNBQUMsQUFBc0MsUUFBRSxBQUFrQyxNQUFFLEFBQWtCOzs7QUFDeEcsWUFBSSxBQUFVLGFBQUcsQUFBQyxBQUFDO0FBRW5CLEFBQUUsQUFBQyxZQUFDLEFBQU0sQUFBQyxRQUFDLEFBQUM7QUFDWCxBQUFNLG1CQUFDLEFBQU87QUFBQyxBQUFDLHVCQUFJLEFBQUksS0FBQyxBQUFDLEFBQUUsQUFBSSxBQUFDLEFBQUMsQUFBQzs7QUFDbkMsQUFBVSx5QkFBRyxBQUFNLE9BQUMsQUFBTSxBQUFDLEFBQzdCO0FBQUM7QUFFRCxZQUFJLEFBQUssUUFBRyxBQUFXLEFBQUM7QUFFeEIsQUFBRSxBQUFDLFlBQUMsQUFBSSxBQUFDLE1BQUMsQUFBQztBQUNULEFBQUssb0JBQUcsQUFBSSxLQUFDLEFBQUMsQUFBQyxBQUFDO0FBQ2hCLEFBQUksaUJBQUMsQUFBQyxBQUFDLEdBQUMsQUFBTztBQUFDLEFBQUMsdUJBQUksQUFBSSxLQUFDLEFBQUMsQUFBRSxBQUFJLEFBQUMsQUFBQyxBQUFDLEFBQ3RDOztBQUFDO0FBRUQsQUFBSSxhQUFDLEFBQWEsY0FBQyxBQUFLLEFBQUMsQUFBQztBQUMxQixBQUFJLGFBQUMsQUFBUSxTQUFDLEFBQVUsWUFBRSxBQUFTLEFBQUMsQUFBQyxBQUN2QztBQUFDOzs0QkFFRCxBQUFPLDJCQUFJLEFBQW1CO0FBQzVCLEFBQUUsQUFBQyxZQUFDLEFBQXNCLHVCQUFDLEFBQUksQUFBQyxBQUFDLE9BQUMsQUFBQztBQUNqQyxBQUFNLG1CQUFDLEFBQUksS0FBQyxBQUFPLFFBQUMsQUFBSSxBQUFDLEFBQUMsQUFDNUI7QUFBQyxBQUFDLEFBQUksZUFBQyxBQUFDO0FBQ04sQUFBTSxtQkFBQyxBQUFJLEFBQUMsQUFDZDtBQUFDLEFBQ0g7QUFBQzs7NEJBRUQsQUFBcUIsdURBQUMsQUFBaUM7QUFDckQsQUFBSSxhQUFDLEFBQVUsWUFBRSxBQUFJLEFBQUMsQUFBQztBQUN2QixBQUFJLGFBQUMsQUFBYyxlQUFDLElBQUksQUFBTyxRQUFDLEFBQTJCLEFBQUUsQUFBQyxBQUFDLEFBQ2pFO0FBQUM7OzRCQUVELEFBQXFCLHVEQUFDLEFBQWlDO0FBQ3JELEFBQUksYUFBQyxBQUFVLFlBQUUsQUFBSSxBQUFDLEFBQUM7QUFDdkIsQUFBSSxhQUFDLEFBQWMsZUFBQyxJQUFJLEFBQU8sUUFBQyxBQUEyQixBQUFFLEFBQUMsQUFBQyxBQUNqRTtBQUFDOzs0QkFFRCxBQUFlLDJDQUFDLEFBQTZCLE9BQUUsQUFBc0MsUUFBRSxBQUFrQyxNQUFFLEFBQW9CO1lBQUUsOEVBQXlCLEFBQUk7O0FBQzVLLEFBQUksYUFBQyxBQUF3QixBQUFFLEFBQUM7QUFFaEMsQUFBSSxhQUFDLEFBQUssTUFBQyxBQUFRLFNBQUMsQUFBRSxBQUFDLEFBQUM7QUFDeEIsQUFBSSxhQUFDLEFBQUcsSUFBQyxBQUFRLFNBQUMsQUFBRSxJQUFFLEFBQUMsQUFBQyxBQUFDO0FBQ3pCLEFBQUksYUFBQyxBQUFJLEtBQUMsQUFBUSxTQUFDLEFBQUUsQUFBQyxBQUFDO0FBRXZCLEFBQUksYUFBQyxBQUFTLFVBQUMsQUFBSyxBQUFDLEFBQUM7QUFDdEIsQUFBSSxhQUFDLEFBQVMsVUFBQyxBQUFPLEFBQUMsQUFBQztBQUV4QixBQUFJLGFBQUMsQUFBVyxZQUFDLEFBQU0sUUFBRSxBQUFJLE1BQUUsQUFBSyxBQUFDLEFBQUM7QUFDdEMsQUFBSSxhQUFDLEFBQVcsWUFBQyxBQUFRLFNBQUMsQUFBRSxBQUFDLEFBQUM7QUFFOUIsQUFBSSxhQUFDLEFBQXlCLEFBQUUsQUFBQztBQUNqQyxBQUFJLGFBQUMsQUFBZ0IsQUFBRSxBQUFDO0FBQ3hCLEFBQUksYUFBQyxBQUFlLGdCQUFDLEFBQVEsU0FBQyxBQUFFLElBQUUsQUFBSSxNQUFFLEFBQU8sWUFBSyxBQUFJLEFBQUMsQUFBQztBQUMxRCxBQUFJLGFBQUMsQUFBMkIsNEJBQUMsQUFBUSxTQUFDLEFBQUUsQUFBQyxBQUFDO0FBRTlDLEFBQUksYUFBQyxBQUFnQixpQkFBQyxBQUFRLFNBQUMsQUFBRSxBQUFDLEFBQUM7QUFDbkMsQUFBSSxhQUFDLEFBQWtCLG1CQUFDLEFBQVEsU0FBQyxBQUFFLEFBQUMsQUFBQztBQUNyQyxBQUFJLGFBQUMsQUFBYSxjQUFDLElBQUksQUFBbUIsb0JBQUMsQUFBSyxTQUFJLEFBQUssTUFBQyxBQUFJLEFBQUUsQUFBQyxBQUFDLEFBQUM7QUFDbkUsQUFBSSxhQUFDLEFBQVEsQUFBRSxBQUFDO0FBRWhCLEFBQUksYUFBQyxBQUFRLEFBQUUsQUFBQztBQUNoQixBQUFJLGFBQUMsQUFBZSxBQUFFLEFBQUM7QUFDdkIsQUFBSSxhQUFDLEFBQTBCLEFBQUUsQUFBQztBQUVsQyxBQUFJLGFBQUMsQUFBSSxLQUFDLEFBQVEsU0FBQyxBQUFFLEFBQUMsQUFBQyxBQUN6QjtBQUFDOzs0QkFFRCxBQUFRLDZCQUFDLEFBQStDO0FBQ3RELEFBQUUsQUFBQyxZQUFDLENBQUMsQUFBSyxBQUFDLE9BQUMsQUFBTSxPQUFDLEFBQUksQUFBQztBQUN4QixBQUFNLGVBQUMsSUFBSSxBQUFjLGVBQUMsQUFBSSxLQUFDLEFBQUcsS0FBRSxBQUFJLEtBQUMsQUFBSSxNQUFFLEFBQUssTUFBQyxBQUFVLFlBQUUsQUFBSyxNQUFDLEFBQVUsQUFBQyxBQUFDLEFBQ3JGO0FBQUMsQUFDRjs7O0VBL0UwQyxBQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNvbnRlbnQgZnJvbSAnLi9jb250ZW50JztcbmltcG9ydCAqIGFzIHZtIGZyb20gJy4vdm0nO1xuXG5pbXBvcnQgeyBJbnNlcnRpb24gfSBmcm9tICcuLi8uLi91cHNlcnQnO1xuaW1wb3J0IHsgUmVnaXN0ZXIgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCAqIGFzIFdpcmVGb3JtYXQgZnJvbSAnQGdsaW1tZXIvd2lyZS1mb3JtYXQnO1xuaW1wb3J0IHsgT3B0aW9uLCBTdGFjaywgT3BhcXVlLCBkaWN0LCBmaWxsTnVsbHMsIEVNUFRZX0FSUkFZIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQge1xuICBDb25zdGFudHMsXG4gIENvbnN0YW50U3RyaW5nLFxuICBDb25zdGFudEFycmF5LFxuICBDb25zdGFudE90aGVyLFxuICBDb25zdGFudEJsb2NrLFxuICBDb25zdGFudEZ1bmN0aW9uLFxufSBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9jb25zdGFudHMnO1xuaW1wb3J0IHsgTW9kaWZpZXJNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vbW9kaWZpZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBDb21wb25lbnREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50L2ludGVyZmFjZXMnO1xuaW1wb3J0IEVudmlyb25tZW50LCB7IFByb2dyYW0gfSBmcm9tICcuLi8uLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBTeW1ib2xUYWJsZSwgQ29tcGlsYXRpb25NZXRhIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBDb21wb25lbnRCdWlsZGVyIGFzIElDb21wb25lbnRCdWlsZGVyIH0gZnJvbSAnLi4vLi4vb3Bjb2RlLWJ1aWxkZXInO1xuaW1wb3J0IHsgQ29tcG9uZW50QnVpbGRlciB9IGZyb20gJy4uLy4uL2NvbXBpbGVyJztcbmltcG9ydCB7IFJhd0lubGluZUJsb2NrLCBDbGllbnRTaWRlLCBCbG9jayB9IGZyb20gJy4uLy4uL3NjYW5uZXInO1xuaW1wb3J0IHsgSW52b2tlRHluYW1pY0xheW91dCwgZXhwciB9IGZyb20gJy4uLy4uL3N5bnRheC9mdW5jdGlvbnMnO1xuXG5pbXBvcnQgeyBPcCB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBpbGVzSW50bzxFPiB7XG4gIGNvbXBpbGUoYnVpbGRlcjogT3Bjb2RlQnVpbGRlcik6IEU7XG59XG5cbmV4cG9ydCB0eXBlIFJlcHJlc2VudHM8RT4gPSBDb21waWxlc0ludG88RT4gfCBFO1xuXG5leHBvcnQgdHlwZSBMYWJlbCA9IHN0cmluZztcblxudHlwZSBUYXJnZXRPcGNvZGUgPSBPcC5KdW1wIHwgT3AuSnVtcElmIHwgT3AuSnVtcFVubGVzcyB8IE9wLkVudGVyTGlzdCB8IE9wLkl0ZXJhdGUgfCBPcC5JbW1lZGlhdGU7XG5cbmNsYXNzIExhYmVscyB7XG4gIGxhYmVscyA9IGRpY3Q8bnVtYmVyPigpO1xuICB0YXJnZXRzOiB7IGF0OiBudW1iZXIsIFRhcmdldDogVGFyZ2V0T3Bjb2RlLCB0YXJnZXQ6IHN0cmluZyB9W10gPSBbXTtcblxuICBsYWJlbChuYW1lOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmxhYmVsc1tuYW1lXSA9IGluZGV4O1xuICB9XG5cbiAgdGFyZ2V0KGF0OiBudW1iZXIsIFRhcmdldDogVGFyZ2V0T3Bjb2RlLCB0YXJnZXQ6IHN0cmluZykge1xuICAgIHRoaXMudGFyZ2V0cy5wdXNoKHsgYXQsIFRhcmdldCwgdGFyZ2V0IH0pO1xuICB9XG5cbiAgcGF0Y2gob3Bjb2RlczogUHJvZ3JhbSk6IHZvaWQge1xuICAgIGZvciAobGV0IHsgYXQsIFRhcmdldCwgdGFyZ2V0IH0gb2YgdGhpcy50YXJnZXRzKSB7XG4gICAgICBvcGNvZGVzLnNldChhdCwgVGFyZ2V0LCB0aGlzLmxhYmVsc1t0YXJnZXRdKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2ljT3Bjb2RlQnVpbGRlciB7XG4gIHByaXZhdGUgbGFiZWxzU3RhY2sgPSBuZXcgU3RhY2s8TGFiZWxzPigpO1xuICBwdWJsaWMgY29uc3RhbnRzOiBDb25zdGFudHM7XG4gIHB1YmxpYyBzdGFydDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlbnY6IEVudmlyb25tZW50LCBwdWJsaWMgbWV0YTogQ29tcGlsYXRpb25NZXRhLCBwdWJsaWMgcHJvZ3JhbTogUHJvZ3JhbSkge1xuICAgIHRoaXMuY29uc3RhbnRzID0gZW52LmNvbnN0YW50cztcbiAgICB0aGlzLnN0YXJ0ID0gcHJvZ3JhbS5uZXh0O1xuICB9XG5cbiAgYWJzdHJhY3QgY29tcGlsZTxFPihleHByOiBSZXByZXNlbnRzPEU+KTogRTtcblxuICBwcml2YXRlIGdldCBwb3MoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZ3JhbS5jdXJyZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgbmV4dFBvcygpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9ncmFtLm5leHQ7XG4gIH1cblxuICB1cHZhcnM8VCBleHRlbmRzIFtPcGFxdWVdPihjb3VudDogbnVtYmVyKTogVCB7XG4gICAgcmV0dXJuIGZpbGxOdWxscyhjb3VudCkgYXMgVDtcbiAgfVxuXG4gIHJlc2VydmUobmFtZTogT3ApIHtcbiAgICB0aGlzLnB1c2gobmFtZSwgMCwgMCwgMCk7XG4gIH1cblxuICBwdXNoKG5hbWU6IE9wLCBvcDEgPSAwLCBvcDIgPSAwLCBvcDMgPSAwKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZ3JhbS5wdXNoKG5hbWUsIG9wMSwgb3AyLCBvcDMpO1xuICB9XG5cbiAgZmluYWxpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wdXNoKE9wLlJldHVybik7XG4gIH1cblxuICAvLyBhcmdzXG5cbiAgcHVzaEFyZ3MocG9zaXRpb25hbDogbnVtYmVyLCBzeW50aGV0aWM6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnB1c2goT3AuUHVzaEFyZ3MsIHBvc2l0aW9uYWwsIChzeW50aGV0aWMgYXMgYW55KXwwKTtcbiAgfVxuXG4gIC8vIGhlbHBlcnNcblxuICBwcml2YXRlIGdldCBsYWJlbHMoKTogTGFiZWxzIHtcbiAgICByZXR1cm4gdGhpcy5sYWJlbHNTdGFjay5jdXJyZW50O1xuICB9XG5cbiAgc3RhcnRMYWJlbHMoKSB7XG4gICAgdGhpcy5sYWJlbHNTdGFjay5wdXNoKG5ldyBMYWJlbHMoKSk7XG4gIH1cblxuICBzdG9wTGFiZWxzKCkge1xuICAgIGxldCBsYWJlbCA9IHRoaXMubGFiZWxzU3RhY2sucG9wKCk7XG4gICAgbGFiZWwucGF0Y2godGhpcy5wcm9ncmFtKTtcbiAgfVxuXG4gIC8vIGNvbXBvbmVudHNcblxuICBwdXNoQ29tcG9uZW50TWFuYWdlcihkZWZpbml0aW9uOiBDb21wb25lbnREZWZpbml0aW9uPE9wYXF1ZT4pIHtcbiAgICB0aGlzLnB1c2goT3AuUHVzaENvbXBvbmVudE1hbmFnZXIsIHRoaXMub3RoZXIoZGVmaW5pdGlvbikpO1xuICB9XG5cbiAgcHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyKCkge1xuICAgIHRoaXMucHVzaChPcC5QdXNoRHluYW1pY0NvbXBvbmVudE1hbmFnZXIpO1xuICB9XG5cbiAgaW5pdGlhbGl6ZUNvbXBvbmVudFN0YXRlKCkge1xuICAgIHRoaXMucHVzaChPcC5Jbml0aWFsaXplQ29tcG9uZW50U3RhdGUpO1xuICB9XG5cbiAgcHJlcGFyZUFyZ3Moc3RhdGU6IFJlZ2lzdGVyKSB7XG4gICAgdGhpcy5wdXNoKE9wLlByZXBhcmVBcmdzLCBzdGF0ZSk7XG4gIH1cblxuICBjcmVhdGVDb21wb25lbnQoc3RhdGU6IFJlZ2lzdGVyLCBoYXNEZWZhdWx0OiBib29sZWFuLCBoYXNJbnZlcnNlOiBib29sZWFuKSB7XG4gICAgbGV0IGZsYWcgPSAoPGFueT5oYXNEZWZhdWx0fDApIHwgKCg8YW55Pmhhc0ludmVyc2V8MCkgPDwgMSk7XG4gICAgdGhpcy5wdXNoKE9wLkNyZWF0ZUNvbXBvbmVudCwgZmxhZywgc3RhdGUpO1xuICB9XG5cbiAgcmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yKHN0YXRlOiBSZWdpc3Rlcikge1xuICAgIHRoaXMucHVzaChPcC5SZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3IsIHN0YXRlKTtcbiAgfVxuXG4gIGJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24oKSB7XG4gICAgdGhpcy5wdXNoKE9wLkJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24pO1xuICB9XG5cbiAgY29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24oKSB7XG4gICAgdGhpcy5wdXNoKE9wLkNvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uKTtcbiAgfVxuXG4gIHB1c2hDb21wb25lbnRPcGVyYXRpb25zKCkge1xuICAgIHRoaXMucHVzaChPcC5QdXNoQ29tcG9uZW50T3BlcmF0aW9ucyk7XG4gIH1cblxuICBnZXRDb21wb25lbnRTZWxmKHN0YXRlOiBSZWdpc3Rlcikge1xuICAgIHRoaXMucHVzaChPcC5HZXRDb21wb25lbnRTZWxmLCBzdGF0ZSk7XG4gIH1cblxuICBnZXRDb21wb25lbnRMYXlvdXQoc3RhdGU6IFJlZ2lzdGVyICkge1xuICAgIHRoaXMucHVzaChPcC5HZXRDb21wb25lbnRMYXlvdXQsIHN0YXRlKTtcbiAgfVxuXG4gIGRpZENyZWF0ZUVsZW1lbnQoc3RhdGU6IFJlZ2lzdGVyKSB7XG4gICAgdGhpcy5wdXNoKE9wLkRpZENyZWF0ZUVsZW1lbnQsIHN0YXRlKTtcbiAgfVxuXG4gIGRpZFJlbmRlckxheW91dChzdGF0ZTogUmVnaXN0ZXIpIHtcbiAgICB0aGlzLnB1c2goT3AuRGlkUmVuZGVyTGF5b3V0LCBzdGF0ZSk7XG4gIH1cblxuICAvLyBwYXJ0aWFsXG5cbiAgZ2V0UGFydGlhbFRlbXBsYXRlKCkge1xuICAgIHRoaXMucHVzaChPcC5HZXRQYXJ0aWFsVGVtcGxhdGUpO1xuICB9XG5cbiAgcmVzb2x2ZU1heWJlTG9jYWwobmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5wdXNoKE9wLlJlc29sdmVNYXliZUxvY2FsLCB0aGlzLnN0cmluZyhuYW1lKSk7XG4gIH1cblxuICAvLyBkZWJ1Z2dlclxuXG4gIGRlYnVnZ2VyKHN5bWJvbHM6IHN0cmluZ1tdLCBldmFsSW5mbzogbnVtYmVyW10pIHtcbiAgICB0aGlzLnB1c2goT3AuRGVidWdnZXIsIHRoaXMuY29uc3RhbnRzLm90aGVyKHN5bWJvbHMpLCB0aGlzLmNvbnN0YW50cy5hcnJheShldmFsSW5mbykpO1xuICB9XG5cbiAgLy8gY29udGVudFxuXG4gIGR5bmFtaWNDb250ZW50KE9wY29kZTogY29udGVudC5BcHBlbmREeW5hbWljT3Bjb2RlPEluc2VydGlvbj4pIHtcbiAgICB0aGlzLnB1c2goT3AuRHluYW1pY0NvbnRlbnQsIHRoaXMub3RoZXIoT3Bjb2RlKSk7XG4gIH1cblxuICBjYXV0aW91c0FwcGVuZCgpIHtcbiAgICB0aGlzLmR5bmFtaWNDb250ZW50KG5ldyBjb250ZW50Lk9wdGltaXplZENhdXRpb3VzQXBwZW5kT3Bjb2RlKCkpO1xuICB9XG5cbiAgdHJ1c3RpbmdBcHBlbmQoKSB7XG4gICAgdGhpcy5keW5hbWljQ29udGVudChuZXcgY29udGVudC5PcHRpbWl6ZWRUcnVzdGluZ0FwcGVuZE9wY29kZSgpKTtcbiAgfVxuXG4gIC8vIGRvbVxuXG4gIHRleHQodGV4dDogc3RyaW5nKSB7XG4gICAgdGhpcy5wdXNoKE9wLlRleHQsIHRoaXMuY29uc3RhbnRzLnN0cmluZyh0ZXh0KSk7XG4gIH1cblxuICBvcGVuUHJpbWl0aXZlRWxlbWVudCh0YWc6IHN0cmluZykge1xuICAgIHRoaXMucHVzaChPcC5PcGVuRWxlbWVudCwgdGhpcy5jb25zdGFudHMuc3RyaW5nKHRhZykpO1xuICB9XG5cbiAgb3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucyh0YWc6IHN0cmluZykge1xuICAgIHRoaXMucHVzaChPcC5PcGVuRWxlbWVudFdpdGhPcGVyYXRpb25zLCB0aGlzLmNvbnN0YW50cy5zdHJpbmcodGFnKSk7XG4gIH1cblxuICBvcGVuRHluYW1pY0VsZW1lbnQoKSB7XG4gICAgdGhpcy5wdXNoKE9wLk9wZW5EeW5hbWljRWxlbWVudCk7XG4gIH1cblxuICBmbHVzaEVsZW1lbnQoKSB7XG4gICAgdGhpcy5wdXNoKE9wLkZsdXNoRWxlbWVudCk7XG4gIH1cblxuICBjbG9zZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5wdXNoKE9wLkNsb3NlRWxlbWVudCk7XG4gIH1cblxuICBzdGF0aWNBdHRyKF9uYW1lOiBzdHJpbmcsIF9uYW1lc3BhY2U6IE9wdGlvbjxzdHJpbmc+LCBfdmFsdWU6IHN0cmluZykge1xuICAgIGxldCBuYW1lID0gdGhpcy5jb25zdGFudHMuc3RyaW5nKF9uYW1lKTtcbiAgICBsZXQgbmFtZXNwYWNlID0gX25hbWVzcGFjZSA/IHRoaXMuY29uc3RhbnRzLnN0cmluZyhfbmFtZXNwYWNlKSA6IDA7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5jb25zdGFudHMuc3RyaW5nKF92YWx1ZSk7XG5cbiAgICB0aGlzLnB1c2goT3AuU3RhdGljQXR0ciwgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZSk7XG4gIH1cblxuICBkeW5hbWljQXR0ck5TKF9uYW1lOiBzdHJpbmcsIF9uYW1lc3BhY2U6IHN0cmluZywgdHJ1c3Rpbmc6IGJvb2xlYW4pIHtcbiAgICBsZXQgbmFtZSA9IHRoaXMuY29uc3RhbnRzLnN0cmluZyhfbmFtZSk7XG4gICAgbGV0IG5hbWVzcGFjZSA9IHRoaXMuY29uc3RhbnRzLnN0cmluZyhfbmFtZXNwYWNlKTtcblxuICAgIHRoaXMucHVzaChPcC5EeW5hbWljQXR0ck5TLCBuYW1lLCBuYW1lc3BhY2UsICh0cnVzdGluZyBhcyBhbnkpfDApO1xuICB9XG5cbiAgZHluYW1pY0F0dHIoX25hbWU6IHN0cmluZywgdHJ1c3Rpbmc6IGJvb2xlYW4pIHtcbiAgICBsZXQgbmFtZSA9IHRoaXMuY29uc3RhbnRzLnN0cmluZyhfbmFtZSk7XG4gICAgdGhpcy5wdXNoKE9wLkR5bmFtaWNBdHRyLCBuYW1lLCAodHJ1c3RpbmcgYXMgYW55KXwwKTtcbiAgfVxuXG4gIGNvbW1lbnQoX2NvbW1lbnQ6IHN0cmluZykge1xuICAgIGxldCBjb21tZW50ID0gdGhpcy5jb25zdGFudHMuc3RyaW5nKF9jb21tZW50KTtcbiAgICB0aGlzLnB1c2goT3AuQ29tbWVudCwgY29tbWVudCk7XG4gIH1cblxuICBtb2RpZmllcihfZGVmaW5pdGlvbjogTW9kaWZpZXJNYW5hZ2VyPE9wYXF1ZT4pIHtcbiAgICB0aGlzLnB1c2goT3AuTW9kaWZpZXIsIHRoaXMub3RoZXIoX2RlZmluaXRpb24pKTtcbiAgfVxuXG4gIC8vIGxpc3RzXG5cbiAgcHV0SXRlcmF0b3IoKSB7XG4gICAgdGhpcy5wdXNoKE9wLlB1dEl0ZXJhdG9yKTtcbiAgfVxuXG4gIGVudGVyTGlzdChzdGFydDogc3RyaW5nKSB7XG4gICAgdGhpcy5yZXNlcnZlKE9wLkVudGVyTGlzdCk7XG4gICAgdGhpcy5sYWJlbHMudGFyZ2V0KHRoaXMucG9zLCBPcC5FbnRlckxpc3QsIHN0YXJ0KTtcbiAgfVxuXG4gIGV4aXRMaXN0KCkge1xuICAgIHRoaXMucHVzaChPcC5FeGl0TGlzdCk7XG4gIH1cblxuICBpdGVyYXRlKGJyZWFrczogc3RyaW5nKSB7XG4gICAgdGhpcy5yZXNlcnZlKE9wLkl0ZXJhdGUpO1xuICAgIHRoaXMubGFiZWxzLnRhcmdldCh0aGlzLnBvcywgT3AuSXRlcmF0ZSwgYnJlYWtzKTtcbiAgfVxuXG4gIC8vIGV4cHJlc3Npb25zXG5cbiAgc2V0VmFyaWFibGUoc3ltYm9sOiBudW1iZXIpIHtcbiAgICB0aGlzLnB1c2goT3AuU2V0VmFyaWFibGUsIHN5bWJvbCk7XG4gIH1cblxuICBnZXRWYXJpYWJsZShzeW1ib2w6IG51bWJlcikge1xuICAgIHRoaXMucHVzaChPcC5HZXRWYXJpYWJsZSwgc3ltYm9sKTtcbiAgfVxuXG4gIGdldFByb3BlcnR5KGtleTogc3RyaW5nKSB7XG4gICAgdGhpcy5wdXNoKE9wLkdldFByb3BlcnR5LCB0aGlzLnN0cmluZyhrZXkpKTtcbiAgfVxuXG4gIGdldEJsb2NrKHN5bWJvbDogbnVtYmVyKSB7XG4gICAgdGhpcy5wdXNoKE9wLkdldEJsb2NrLCBzeW1ib2wpO1xuICB9XG5cbiAgaGFzQmxvY2soc3ltYm9sOiBudW1iZXIpIHtcbiAgICB0aGlzLnB1c2goT3AuSGFzQmxvY2ssIHN5bWJvbCk7XG4gIH1cblxuICBoYXNCbG9ja1BhcmFtcyhzeW1ib2w6IG51bWJlcikge1xuICAgIHRoaXMucHVzaChPcC5IYXNCbG9ja1BhcmFtcywgc3ltYm9sKTtcbiAgfVxuXG4gIGNvbmNhdChzaXplOiBudW1iZXIpIHtcbiAgICB0aGlzLnB1c2goT3AuQ29uY2F0LCBzaXplKTtcbiAgfVxuXG4gIGZ1bmN0aW9uKGY6IENsaWVudFNpZGUuRnVuY3Rpb25FeHByZXNzaW9uQ2FsbGJhY2s8T3BhcXVlPikge1xuICAgIHRoaXMucHVzaChPcC5GdW5jdGlvbiwgdGhpcy5mdW5jKGYpKTtcbiAgfVxuXG4gIGxvYWQocmVnaXN0ZXI6IFJlZ2lzdGVyKSB7XG4gICAgdGhpcy5wdXNoKE9wLkxvYWQsIHJlZ2lzdGVyKTtcbiAgfVxuXG4gIGZldGNoKHJlZ2lzdGVyOiBSZWdpc3Rlcikge1xuICAgIHRoaXMucHVzaChPcC5GZXRjaCwgcmVnaXN0ZXIpO1xuICB9XG5cbiAgZHVwKHJlZ2lzdGVyID0gUmVnaXN0ZXIuc3AsIG9mZnNldCA9IDApIHtcbiAgICByZXR1cm4gdGhpcy5wdXNoKE9wLkR1cCwgcmVnaXN0ZXIsIG9mZnNldCk7XG4gIH1cblxuICBwb3AoY291bnQgPSAxKSB7XG4gICAgcmV0dXJuIHRoaXMucHVzaChPcC5Qb3AsIGNvdW50KTtcbiAgfVxuXG4gIC8vIHZtXG5cbiAgcHVzaFJlbW90ZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5wdXNoKE9wLlB1c2hSZW1vdGVFbGVtZW50KTtcbiAgfVxuXG4gIHBvcFJlbW90ZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5wdXNoKE9wLlBvcFJlbW90ZUVsZW1lbnQpO1xuICB9XG5cbiAgbGFiZWwobmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5sYWJlbHMubGFiZWwobmFtZSwgdGhpcy5uZXh0UG9zKTtcbiAgfVxuXG4gIHB1c2hSb290U2NvcGUoc3ltYm9sczogbnVtYmVyLCBiaW5kQ2FsbGVyU2NvcGU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnB1c2goT3AuUm9vdFNjb3BlLCBzeW1ib2xzLCA8YW55PmJpbmRDYWxsZXJTY29wZXwwKTtcbiAgfVxuXG4gIHB1c2hDaGlsZFNjb3BlKCkge1xuICAgIHRoaXMucHVzaChPcC5DaGlsZFNjb3BlKTtcbiAgfVxuXG4gIHBvcFNjb3BlKCkge1xuICAgIHRoaXMucHVzaChPcC5Qb3BTY29wZSk7XG4gIH1cblxuICByZXR1cm5UbyhsYWJlbDogc3RyaW5nKSB7XG4gICAgdGhpcy5yZXNlcnZlKE9wLkltbWVkaWF0ZSk7XG4gICAgdGhpcy5sYWJlbHMudGFyZ2V0KHRoaXMucG9zLCBPcC5JbW1lZGlhdGUsIGxhYmVsKTtcbiAgICB0aGlzLmxvYWQoUmVnaXN0ZXIucmEpO1xuICB9XG5cbiAgcHVzaER5bmFtaWNTY29wZSgpIHtcbiAgICB0aGlzLnB1c2goT3AuUHVzaER5bmFtaWNTY29wZSk7XG4gIH1cblxuICBwb3BEeW5hbWljU2NvcGUoKSB7XG4gICAgdGhpcy5wdXNoKE9wLlBvcER5bmFtaWNTY29wZSk7XG4gIH1cblxuICBwdXNoSW1tZWRpYXRlPFQ+KHZhbHVlOiBUKSB7XG4gICAgdGhpcy5wdXNoKE9wLkNvbnN0YW50LCB0aGlzLm90aGVyKHZhbHVlKSk7XG4gIH1cblxuICBwcmltaXRpdmUoX3ByaW1pdGl2ZTogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCB8IGJvb2xlYW4pIHtcbiAgICBsZXQgZmxhZzogMCB8IDEgfCAyID0gMDtcbiAgICBsZXQgcHJpbWl0aXZlOiBudW1iZXI7XG4gICAgc3dpdGNoICh0eXBlb2YgX3ByaW1pdGl2ZSkge1xuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgcHJpbWl0aXZlID0gX3ByaW1pdGl2ZSBhcyBudW1iZXI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgcHJpbWl0aXZlID0gdGhpcy5zdHJpbmcoX3ByaW1pdGl2ZSBhcyBzdHJpbmcpO1xuICAgICAgICBmbGFnID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgcHJpbWl0aXZlID0gKF9wcmltaXRpdmUgYXMgYW55KSB8IDA7XG4gICAgICAgIGZsYWcgPSAyO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgIC8vIGFzc3VtZSBudWxsXG4gICAgICAgIHByaW1pdGl2ZSA9IDI7XG4gICAgICAgIGZsYWcgPSAyO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3VuZGVmaW5lZCc6XG4gICAgICAgIHByaW1pdGl2ZSA9IDM7XG4gICAgICAgIGZsYWcgPSAyO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBwcmltaXRpdmUgcGFzc2VkIHRvIHB1c2hQcmltaXRpdmUnKTtcbiAgICB9XG5cbiAgICB0aGlzLnB1c2goT3AuUHJpbWl0aXZlUmVmZXJlbmNlLCAoZmxhZyA8PCAzMCkgfCBwcmltaXRpdmUpO1xuICB9XG5cbiAgaGVscGVyKGZ1bmM6IEZ1bmN0aW9uKSB7XG4gICAgdGhpcy5wdXNoKE9wLkhlbHBlciwgdGhpcy5mdW5jKGZ1bmMpKTtcbiAgfVxuXG4gIHB1c2hCbG9jayhibG9jazogT3B0aW9uPEJsb2NrPikge1xuICAgIHRoaXMucHVzaChPcC5QdXNoQmxvY2ssIHRoaXMuYmxvY2soYmxvY2spKTtcbiAgfVxuXG4gIGJpbmREeW5hbWljU2NvcGUoX25hbWVzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMucHVzaChPcC5CaW5kRHluYW1pY1Njb3BlLCB0aGlzLm5hbWVzKF9uYW1lcykpO1xuICB9XG5cbiAgZW50ZXIoYXJnczogbnVtYmVyKSB7XG4gICAgdGhpcy5wdXNoKE9wLkVudGVyLCBhcmdzKTtcbiAgfVxuXG4gIGV4aXQoKSB7XG4gICAgdGhpcy5wdXNoKE9wLkV4aXQpO1xuICB9XG5cbiAgcmV0dXJuKCkge1xuICAgIHRoaXMucHVzaChPcC5SZXR1cm4pO1xuICB9XG5cbiAgcHVzaEZyYW1lKCkge1xuICAgIHRoaXMucHVzaChPcC5QdXNoRnJhbWUpO1xuICB9XG5cbiAgcG9wRnJhbWUoKSB7XG4gICAgdGhpcy5wdXNoKE9wLlBvcEZyYW1lKTtcbiAgfVxuXG4gIGNvbXBpbGVEeW5hbWljQmxvY2soKTogdm9pZCB7XG4gICAgdGhpcy5wdXNoKE9wLkNvbXBpbGVEeW5hbWljQmxvY2spO1xuICB9XG5cbiAgaW52b2tlRHluYW1pYyhpbnZva2VyOiB2bS5EeW5hbWljSW52b2tlcjxTeW1ib2xUYWJsZT4pOiB2b2lkIHtcbiAgICB0aGlzLnB1c2goT3AuSW52b2tlRHluYW1pYywgdGhpcy5vdGhlcihpbnZva2VyKSk7XG4gIH1cblxuICBpbnZva2VTdGF0aWMoYmxvY2s6IEJsb2NrLCBjYWxsZXJDb3VudCA9IDApOiB2b2lkIHtcbiAgICBsZXQgeyBwYXJhbWV0ZXJzIH0gPSBibG9jay5zeW1ib2xUYWJsZTtcbiAgICBsZXQgY2FsbGVlQ291bnQgPSBwYXJhbWV0ZXJzLmxlbmd0aDtcbiAgICBsZXQgY291bnQgPSBNYXRoLm1pbihjYWxsZXJDb3VudCwgY2FsbGVlQ291bnQpO1xuXG4gICAgdGhpcy5wdXNoRnJhbWUoKTtcblxuICAgIGlmIChjb3VudCkge1xuICAgICAgdGhpcy5wdXNoQ2hpbGRTY29wZSgpO1xuXG4gICAgICBmb3IgKGxldCBpPTA7IGk8Y291bnQ7IGkrKykge1xuICAgICAgICB0aGlzLmR1cChSZWdpc3Rlci5mcCwgY2FsbGVyQ291bnQgLSBpKTtcbiAgICAgICAgdGhpcy5zZXRWYXJpYWJsZShwYXJhbWV0ZXJzW2ldKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgX2Jsb2NrID0gdGhpcy5jb25zdGFudHMuYmxvY2soYmxvY2spO1xuICAgIHRoaXMucHVzaChPcC5JbnZva2VTdGF0aWMsIF9ibG9jayk7XG5cbiAgICBpZiAoY291bnQpIHtcbiAgICAgIHRoaXMucG9wU2NvcGUoKTtcbiAgICB9XG5cbiAgICB0aGlzLnBvcEZyYW1lKCk7XG4gIH1cblxuICB0ZXN0KHRlc3RGdW5jOiAnY29uc3QnIHwgJ3NpbXBsZScgfCAnZW52aXJvbm1lbnQnIHwgdm0uVGVzdEZ1bmN0aW9uKSB7XG4gICAgbGV0IF9mdW5jOiB2bS5UZXN0RnVuY3Rpb247XG5cbiAgICBpZiAodGVzdEZ1bmMgPT09ICdjb25zdCcpIHtcbiAgICAgIF9mdW5jID0gdm0uQ29uc3RUZXN0O1xuICAgIH0gZWxzZSBpZiAodGVzdEZ1bmMgPT09ICdzaW1wbGUnKSB7XG4gICAgICBfZnVuYyA9IHZtLlNpbXBsZVRlc3Q7XG4gICAgfSBlbHNlIGlmICh0ZXN0RnVuYyA9PT0gJ2Vudmlyb25tZW50Jykge1xuICAgICAgX2Z1bmMgPSB2bS5FbnZpcm9ubWVudFRlc3Q7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGVzdEZ1bmMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIF9mdW5jID0gdGVzdEZ1bmM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5yZWFjaGFibGUnKTtcbiAgICB9XG5cbiAgICBsZXQgZnVuYyA9IHRoaXMuY29uc3RhbnRzLmZ1bmN0aW9uKF9mdW5jKTtcbiAgICB0aGlzLnB1c2goT3AuVGVzdCwgZnVuYyk7XG4gIH1cblxuICBqdW1wKHRhcmdldDogc3RyaW5nKSB7XG4gICAgdGhpcy5yZXNlcnZlKE9wLkp1bXApO1xuICAgIHRoaXMubGFiZWxzLnRhcmdldCh0aGlzLnBvcywgT3AuSnVtcCwgdGFyZ2V0KTtcbiAgfVxuXG4gIGp1bXBJZih0YXJnZXQ6IHN0cmluZykge1xuICAgIHRoaXMucmVzZXJ2ZShPcC5KdW1wSWYpO1xuICAgIHRoaXMubGFiZWxzLnRhcmdldCh0aGlzLnBvcywgT3AuSnVtcElmLCB0YXJnZXQpO1xuICB9XG5cbiAganVtcFVubGVzcyh0YXJnZXQ6IHN0cmluZykge1xuICAgIHRoaXMucmVzZXJ2ZShPcC5KdW1wVW5sZXNzKTtcbiAgICB0aGlzLmxhYmVscy50YXJnZXQodGhpcy5wb3MsIE9wLkp1bXBVbmxlc3MsIHRhcmdldCk7XG4gIH1cblxuICBzdHJpbmcoX3N0cmluZzogc3RyaW5nKTogQ29uc3RhbnRTdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNvbnN0YW50cy5zdHJpbmcoX3N0cmluZyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbmFtZXMoX25hbWVzOiBzdHJpbmdbXSk6IENvbnN0YW50QXJyYXkge1xuICAgIGxldCBuYW1lcyA9IF9uYW1lcy5tYXAobiA9PiB0aGlzLmNvbnN0YW50cy5zdHJpbmcobikpO1xuICAgIHJldHVybiB0aGlzLmNvbnN0YW50cy5hcnJheShuYW1lcyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3ltYm9scyhzeW1ib2xzOiBudW1iZXJbXSk6IENvbnN0YW50QXJyYXkge1xuICAgIHJldHVybiB0aGlzLmNvbnN0YW50cy5hcnJheShzeW1ib2xzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdGhlcih2YWx1ZTogT3BhcXVlKTogQ29uc3RhbnRPdGhlciB7XG4gICAgcmV0dXJuIHRoaXMuY29uc3RhbnRzLm90aGVyKHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBibG9jayhibG9jazogT3B0aW9uPEJsb2NrPik6IENvbnN0YW50QmxvY2sge1xuICAgIHJldHVybiBibG9jayA/IHRoaXMuY29uc3RhbnRzLmJsb2NrKGJsb2NrKSA6IDA7XG4gIH1cblxuICBwcm90ZWN0ZWQgZnVuYyhmdW5jOiBGdW5jdGlvbik6IENvbnN0YW50RnVuY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLmNvbnN0YW50cy5mdW5jdGlvbihmdW5jKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0NvbXBpbGFibGVFeHByZXNzaW9uPEU+KGV4cHI6IFJlcHJlc2VudHM8RT4pOiBleHByIGlzIENvbXBpbGVzSW50bzxFPiB7XG4gIHJldHVybiBleHByICYmIHR5cGVvZiBleHByWydjb21waWxlJ10gPT09ICdmdW5jdGlvbic7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE9wY29kZUJ1aWxkZXIgZXh0ZW5kcyBCYXNpY09wY29kZUJ1aWxkZXIge1xuICBwdWJsaWMgY29tcG9uZW50OiBJQ29tcG9uZW50QnVpbGRlcjtcblxuICBjb25zdHJ1Y3RvcihlbnY6IEVudmlyb25tZW50LCBtZXRhOiBDb21waWxhdGlvbk1ldGEsIHByb2dyYW06IFByb2dyYW0gPSBlbnYucHJvZ3JhbSkge1xuICAgIHN1cGVyKGVudiwgbWV0YSwgcHJvZ3JhbSk7XG4gICAgdGhpcy5jb21wb25lbnQgPSBuZXcgQ29tcG9uZW50QnVpbGRlcih0aGlzKTtcbiAgfVxuXG4gIGNvbXBpbGVBcmdzKHBhcmFtczogT3B0aW9uPFdpcmVGb3JtYXQuQ29yZS5QYXJhbXM+LCBoYXNoOiBPcHRpb248V2lyZUZvcm1hdC5Db3JlLkhhc2g+LCBzeW50aGV0aWM6IGJvb2xlYW4pIHtcbiAgICBsZXQgcG9zaXRpb25hbCA9IDA7XG5cbiAgICBpZiAocGFyYW1zKSB7XG4gICAgICBwYXJhbXMuZm9yRWFjaChwID0+IGV4cHIocCwgdGhpcykpO1xuICAgICAgcG9zaXRpb25hbCA9IHBhcmFtcy5sZW5ndGg7XG4gICAgfVxuXG4gICAgbGV0IG5hbWVzID0gRU1QVFlfQVJSQVk7XG5cbiAgICBpZiAoaGFzaCkge1xuICAgICAgbmFtZXMgPSBoYXNoWzBdO1xuICAgICAgaGFzaFsxXS5mb3JFYWNoKHYgPT4gZXhwcih2LCB0aGlzKSk7XG4gICAgfVxuXG4gICAgdGhpcy5wdXNoSW1tZWRpYXRlKG5hbWVzKTtcbiAgICB0aGlzLnB1c2hBcmdzKHBvc2l0aW9uYWwsIHN5bnRoZXRpYyk7XG4gIH1cblxuICBjb21waWxlPEU+KGV4cHI6IFJlcHJlc2VudHM8RT4pOiBFIHtcbiAgICBpZiAoaXNDb21waWxhYmxlRXhwcmVzc2lvbihleHByKSkge1xuICAgICAgcmV0dXJuIGV4cHIuY29tcGlsZSh0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGV4cHI7XG4gICAgfVxuICB9XG5cbiAgZ3VhcmRlZENhdXRpb3VzQXBwZW5kKGV4cHJlc3Npb246IFdpcmVGb3JtYXQuRXhwcmVzc2lvbikge1xuICAgIGV4cHIoZXhwcmVzc2lvbiwgdGhpcyk7XG4gICAgdGhpcy5keW5hbWljQ29udGVudChuZXcgY29udGVudC5HdWFyZGVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUoKSk7XG4gIH1cblxuICBndWFyZGVkVHJ1c3RpbmdBcHBlbmQoZXhwcmVzc2lvbjogV2lyZUZvcm1hdC5FeHByZXNzaW9uKSB7XG4gICAgZXhwcihleHByZXNzaW9uLCB0aGlzKTtcbiAgICB0aGlzLmR5bmFtaWNDb250ZW50KG5ldyBjb250ZW50Lkd1YXJkZWRUcnVzdGluZ0FwcGVuZE9wY29kZSgpKTtcbiAgfVxuXG4gIGludm9rZUNvbXBvbmVudChhdHRyczogT3B0aW9uPFJhd0lubGluZUJsb2NrPiwgcGFyYW1zOiBPcHRpb248V2lyZUZvcm1hdC5Db3JlLlBhcmFtcz4sIGhhc2g6IE9wdGlvbjxXaXJlRm9ybWF0LkNvcmUuSGFzaD4sIGJsb2NrOiBPcHRpb248QmxvY2s+LCBpbnZlcnNlOiBPcHRpb248QmxvY2s+ID0gbnVsbCkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZUNvbXBvbmVudFN0YXRlKCk7XG5cbiAgICB0aGlzLmZldGNoKFJlZ2lzdGVyLnMwKTtcbiAgICB0aGlzLmR1cChSZWdpc3Rlci5zcCwgMSk7XG4gICAgdGhpcy5sb2FkKFJlZ2lzdGVyLnMwKTtcblxuICAgIHRoaXMucHVzaEJsb2NrKGJsb2NrKTtcbiAgICB0aGlzLnB1c2hCbG9jayhpbnZlcnNlKTtcblxuICAgIHRoaXMuY29tcGlsZUFyZ3MocGFyYW1zLCBoYXNoLCBmYWxzZSk7XG4gICAgdGhpcy5wcmVwYXJlQXJncyhSZWdpc3Rlci5zMCk7XG5cbiAgICB0aGlzLmJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24oKTtcbiAgICB0aGlzLnB1c2hEeW5hbWljU2NvcGUoKTtcbiAgICB0aGlzLmNyZWF0ZUNvbXBvbmVudChSZWdpc3Rlci5zMCwgdHJ1ZSwgaW52ZXJzZSA9PT0gbnVsbCk7XG4gICAgdGhpcy5yZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3IoUmVnaXN0ZXIuczApO1xuXG4gICAgdGhpcy5nZXRDb21wb25lbnRTZWxmKFJlZ2lzdGVyLnMwKTtcbiAgICB0aGlzLmdldENvbXBvbmVudExheW91dChSZWdpc3Rlci5zMCk7XG4gICAgdGhpcy5pbnZva2VEeW5hbWljKG5ldyBJbnZva2VEeW5hbWljTGF5b3V0KGF0dHJzICYmIGF0dHJzLnNjYW4oKSkpO1xuICAgIHRoaXMucG9wRnJhbWUoKTtcblxuICAgIHRoaXMucG9wU2NvcGUoKTtcbiAgICB0aGlzLnBvcER5bmFtaWNTY29wZSgpO1xuICAgIHRoaXMuY29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24oKTtcblxuICAgIHRoaXMubG9hZChSZWdpc3Rlci5zMCk7XG4gIH1cblxuICB0ZW1wbGF0ZShibG9jazogT3B0aW9uPFdpcmVGb3JtYXQuU2VyaWFsaXplZElubGluZUJsb2NrPik6IE9wdGlvbjxSYXdJbmxpbmVCbG9jaz4ge1xuICAgIGlmICghYmxvY2spIHJldHVybiBudWxsO1xuICAgIHJldHVybiBuZXcgUmF3SW5saW5lQmxvY2sodGhpcy5lbnYsIHRoaXMubWV0YSwgYmxvY2suc3RhdGVtZW50cywgYmxvY2sucGFyYW1ldGVycyk7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgQmxvY2tDYWxsYmFjayA9IChkc2w6IE9wY29kZUJ1aWxkZXIsIEJFR0lOOiBMYWJlbCwgRU5EOiBMYWJlbCkgPT4gdm9pZDtcbiJdfQ==

@@ -181,10 +181,2 @@ 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; }

UpdateComponentOpcode.prototype.toJSON = function toJSON() {
return {
guid: this._guid,
type: this.type,
args: [JSON.stringify(this.name)]
};
};
return UpdateComponentOpcode;

@@ -219,2 +211,2 @@ }(UpdatingOpcode);

}(UpdatingOpcode);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsQUFBTyxTQUFFLEFBQWMsZ0JBQWtCLEFBQWMsQUFBRSxzQkFBTSxBQUFlLEFBQUM7QUFDL0UsQUFBTyxTQUFFLEFBQU0sQUFBRSxjQUFNLEFBQU0sQUFBQztBQUU5QixPQUFPLEFBQStCLFVBQU0sQUFBb0IsQUFBQztBQUlqRSxBQUFPLFNBQUUsQUFBMEIsQUFBRSxrQ0FBTSxBQUFPLEFBQUM7QUFFbkQsQUFBTyxTQUNMLEFBQVksY0FDWixBQUFjLGdCQUdkLEFBQU8sU0FDUCxBQUFPLEFBQ1IsZUFBTSxBQUFvQixBQUFDO0FBRTVCLEFBQWMsZUFBQyxBQUFHLElBQUMsR0FBdUIsNEJBQUUsVUFBQyxBQUFFLEFBQUU7UUFBTyxBQUFXLEFBQUUsbUJBQWxCLEFBQUc7O0FBQ3BELFFBQUksQUFBVSxhQUFHLEFBQUUsR0FBQyxBQUFTLFVBQUMsQUFBUSxTQUE4QixBQUFXLEFBQUMsQUFBQztBQUNqRixRQUFJLEFBQUssUUFBRyxBQUFFLEdBQUMsQUFBSyxBQUFDO0FBRXJCLEFBQUssVUFBQyxBQUFJLEtBQUMsQUFBVSxBQUFDLEFBQUM7QUFDdkIsQUFBSyxVQUFDLEFBQUksS0FBQyxBQUFVLFdBQUMsQUFBTyxBQUFDLEFBQUMsQUFDakM7QUFBQyxBQUFDLEFBQUM7QUFFSCxBQUFjLGVBQUMsQUFBRyxJQUFDLEdBQThCLG1DQUFFLEFBQUU7QUFDbkQsUUFBSSxBQUFLLFFBQUcsQUFBRSxHQUFDLEFBQUssQUFBQztBQUNyQixRQUFJLEFBQVMsWUFBRyxBQUFLLE1BQUMsQUFBRyxBQUF1RCxBQUFDO0FBQ2pGLFFBQUksQUFBSyxRQUFHLEFBQU8sUUFBQyxBQUFTLEFBQUMsYUFBRyxBQUFTLFlBQUcsSUFBSSxBQUFjLGVBQThCLEFBQVMsQUFBQyxBQUFDO0FBQ3hHLFFBQUksQUFBVSxhQUFHLEFBQUssUUFB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LEFBQ2xDLEFBQUMsQUFDSjtBQUxTO0FBS1IsQUFDRjs7O0VBbEMwQyxBQUFjO0FBb0N6RCxBQUFNLFdBQTZCOzs7QUFJakMsbUNBQ1UsQUFBb0MsU0FDcEMsQUFBb0IsV0FDcEIsQUFBYzs7O3NEQUV0QixBQUFLLEFBQUUsQUFBQzs7QUFKQSxlQUFPLFVBQVAsQUFBTyxBQUE2QjtBQUNwQyxlQUFTLFlBQVQsQUFBUyxBQUFXO0FBQ3BCLGVBQU0sU0FBTixBQUFNLEFBQVE7QUFOakIsZUFBSSxPQUFHLEFBQW1CLEFBQUM7QUFDM0IsZUFBRyxNQUFRLEFBQVksQUFBQyxBQVEvQjs7QUFBQzs7b0NBRUQsQUFBUSw2QkFBQyxBQUFjO0FBQ3JCLEFBQUksWUFBRSxBQUFPO1lBQUUsQUFBUztZQUFFLEFBQU0sQUFBRSxTQUFHLEFBQUksQUFBQzs7QUFFMUMsQUFBTyxnQkFBQyxBQUFlLGdCQUFDLEFBQVMsV0FBRSxBQUFNLEFBQUMsQUFBQztBQUUzQyxBQUFFLFdBQUMsQUFBRyxJQUFDLEFBQVMsVUFBQyxBQUFTLFdBQUUsQUFBTyxBQUFDLEFBQUMsQUFDdkM7QUFBQyxBQUNGOzs7RUFuQjBDLEFBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBUFBFTkRfT1BDT0RFUywgT3AsIE9wY29kZUpTT04sIFVwZGF0aW5nT3Bjb2RlIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBBc3NlcnQgfSBmcm9tICcuL3ZtJztcbmltcG9ydCB7IFVwZGF0aW5nVk0gfSBmcm9tICcuLi8uLi92bSc7XG5pbXBvcnQgQVJHUywgeyBBcmd1bWVudHMsIElBcmd1bWVudHMgfSBmcm9tICcuLi8uLi92bS9hcmd1bWVudHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBDb21wb25lbnRNYW5hZ2VyLCBDb21wb25lbnREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50L2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRHluYW1pY1Njb3BlIH0gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IEJvdW5kcyBmcm9tICcuLi8uLi9ib3VuZHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50RWxlbWVudE9wZXJhdGlvbnMgfSBmcm9tICcuL2RvbSc7XG5pbXBvcnQgeyBPcGFxdWUgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7XG4gIENPTlNUQU5UX1RBRyxcbiAgUmVmZXJlbmNlQ2FjaGUsXG4gIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsXG4gIFRhZyxcbiAgY29tYmluZSxcbiAgaXNDb25zdFxufSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUHVzaENvbXBvbmVudE1hbmFnZXIsICh2bSwgeyBvcDE6IF9kZWZpbml0aW9uIH0pID0+IHtcbiAgbGV0IGRlZmluaXRpb24gPSB2bS5jb25zdGFudHMuZ2V0T3RoZXI8Q29tcG9uZW50RGVmaW5pdGlvbjxPcGFxdWU+PihfZGVmaW5pdGlvbik7XG4gIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuXG4gIHN0YWNrLnB1c2goZGVmaW5pdGlvbik7XG4gIHN0YWNrLnB1c2goZGVmaW5pdGlvbi5tYW5hZ2VyKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyLCB2bSA9PiB7XG4gIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICBsZXQgcmVmZXJlbmNlID0gc3RhY2sucG9wPFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8Q29tcG9uZW50RGVmaW5pdGlvbjxPcGFxdWU+Pj4oKTtcbiAgbGV0IGNhY2hlID0gaXNDb25zdChyZWZlcmVuY2UpID8gdW5kZWZpbmVkIDogbmV3IFJlZmVyZW5jZUNhY2hlPENvbXBvbmVudERlZmluaXRpb248T3BhcXVlPj4ocmVmZXJlbmNlKTtcbiAgbGV0IGRlZmluaXRpb24gPSBjYWNoZSA/IGNhY2hlLnBlZWsoKSA6IHJlZmVyZW5jZS52YWx1ZSgpO1xuXG4gIHN0YWNrLnB1c2goZGVmaW5pdGlvbik7XG4gIHN0YWNrLnB1c2goZGVmaW5pdGlvbi5tYW5hZ2VyKTtcblxuICBpZiAoY2FjaGUpIHtcbiAgICB2bS51cGRhdGVXaXRoKG5ldyBBc3NlcnQoY2FjaGUpKTtcbiAgfVxufSk7XG5cbmludGVyZmFjZSBJbml0aWFsQ29tcG9uZW50U3RhdGU8VD4ge1xuICBkZWZpbml0aW9uOiBDb21wb25lbnREZWZpbml0aW9uPFQ+O1xuICBtYW5hZ2VyOiBDb21wb25lbnRNYW5hZ2VyPFQ+O1xuICBjb21wb25lbnQ6IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50U3RhdGU8VD4ge1xuICBkZWZpbml0aW9uOiBDb21wb25lbnREZWZpbml0aW9uPFQ+O1xuICBtYW5hZ2VyOiBDb21wb25lbnRNYW5hZ2VyPFQ+O1xuICBjb21wb25lbnQ6IFQ7XG59XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5Jbml0aWFsaXplQ29tcG9uZW50U3RhdGUsIHZtID0+IHtcbiAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG5cbiAgbGV0IG1hbmFnZXIgPSBzdGFjay5wb3AoKTtcbiAgbGV0IGRlZmluaXRpb24gPSBzdGFjay5wb3AoKTtcblxuICBzdGFjay5wdXNoKHsgZGVmaW5pdGlvbiwgbWFuYWdlciwgY29tcG9uZW50OiBudWxsIH0pO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5QdXNoQXJncywgKHZtLCB7IG9wMTogcG9zaXRpb25hbCwgb3AyOiBzeW50aGV0aWMgfSkgPT4ge1xuICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgQVJHUy5zZXR1cChzdGFjaywgcG9zaXRpb25hbCwgISFzeW50aGV0aWMpO1xuICBzdGFjay5wdXNoKEFSR1MpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5QcmVwYXJlQXJncywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gIGxldCB7IGRlZmluaXRpb24sIG1hbmFnZXIgfSA9IHZtLmZldGNoVmFsdWU8SW5pdGlhbENvbXBvbmVudFN0YXRlPE9wYXF1ZT4+KF9zdGF0ZSk7XG4gIGxldCBhcmdzID0gc3RhY2sucG9wPEFyZ3VtZW50cz4oKTtcblxuICBsZXQgcHJlcGFyZWRBcmdzID0gbWFuYWdlci5wcmVwYXJlQXJncyhkZWZpbml0aW9uLCBhcmdzKTtcblxuICBpZiAocHJlcGFyZWRBcmdzKSB7XG4gICAgYXJncy5jbGVhcigpO1xuXG4gICAgbGV0IHsgcG9zaXRpb25hbCwgbmFtZWQgfSA9IHByZXBhcmVkQXJncztcblxuICAgIGxldCBwb3NpdGlvbmFsQ291bnQgPSBwb3NpdGlvbmFsLmxlbmd0aDtcblxuICAgIGZvciAobGV0IGk9MDsgaTxwb3NpdGlvbmFsQ291bnQ7IGkrKykge1xuICAgICAgc3RhY2sucHVzaChwb3NpdGlvbmFsW2ldKTtcbiAgICB9XG5cbiAgICBsZXQgbmFtZXMgPSBPYmplY3Qua2V5cyhuYW1lZCk7XG4gICAgbGV0IG5hbWVkQ291bnQgPSBuYW1lcy5sZW5ndGg7XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8bmFtZWRDb3VudDsgaSsrKSB7XG4gICAgICBzdGFjay5wdXNoKG5hbWVkW25hbWVzW2ldXSk7XG4gICAgfVxuXG4gICAgc3RhY2sucHVzaChuYW1lcyk7XG4gICAgYXJncy5zZXR1cChzdGFjaywgcG9zaXRpb25hbENvdW50LCB0cnVlKTtcbiAgfVxuXG4gIHN0YWNrLnB1c2goYXJncyk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkNyZWF0ZUNvbXBvbmVudCwgKHZtLCB7IG9wMTogZmxhZ3MsIG9wMjogX3N0YXRlIH0pID0+IHtcbiAgbGV0IGRlZmluaXRpb24sIG1hbmFnZXI7XG4gIGxldCBhcmdzID0gdm0uc3RhY2sucG9wPElBcmd1bWVudHM+KCk7XG4gIGxldCBkeW5hbWljU2NvcGUgPSB2bS5keW5hbWljU2NvcGUoKTtcbiAgbGV0IHN0YXRlID0geyBkZWZpbml0aW9uLCBtYW5hZ2VyIH0gPSB2bS5mZXRjaFZhbHVlPEluaXRpYWxDb21wb25lbnRTdGF0ZTxPcGFxdWU+Pihfc3RhdGUpO1xuXG4gIGxldCBoYXNEZWZhdWx0QmxvY2sgPSBmbGFncyAmIDBiMDE7XG5cbiAgbGV0IGNvbXBvbmVudCA9IG1hbmFnZXIuY3JlYXRlKHZtLmVudiwgZGVmaW5pdGlvbiwgYXJncywgZHluYW1pY1Njb3BlLCB2bS5nZXRTZWxmKCksICEhaGFzRGVmYXVsdEJsb2NrKTtcbiAgKHN0YXRlIGFzIENvbXBvbmVudFN0YXRlPHR5cGVvZiBjb21wb25lbnQ+KS5jb21wb25lbnQgPSBjb21wb25lbnQ7XG5cbiAgdm0udXBkYXRlV2l0aChuZXcgVXBkYXRlQ29tcG9uZW50T3Bjb2RlKGFyZ3MudGFnLCBkZWZpbml0aW9uLm5hbWUsIGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlKSk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlJlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvciwgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlPENvbXBvbmVudFN0YXRlPE9wYXF1ZT4+KF9zdGF0ZSk7XG5cbiAgbGV0IGRlc3RydWN0b3IgPSBtYW5hZ2VyLmdldERlc3RydWN0b3IoY29tcG9uZW50KTtcbiAgaWYgKGRlc3RydWN0b3IpIHZtLm5ld0Rlc3Ryb3lhYmxlKGRlc3RydWN0b3IpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5CZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uLCB2bSA9PiB7XG4gIHZtLmJlZ2luQ2FjaGVHcm91cCgpO1xuICB2bS5lbGVtZW50cygpLnB1c2hTaW1wbGVCbG9jaygpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5QdXNoQ29tcG9uZW50T3BlcmF0aW9ucywgdm0gPT4ge1xuICB2bS5zdGFjay5wdXNoKG5ldyBDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyh2bS5lbnYpKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuRGlkQ3JlYXRlRWxlbWVudCwgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlPENvbXBvbmVudFN0YXRlPE9wYXF1ZT4+KF9zdGF0ZSk7XG5cbiAgbGV0IGFjdGlvbiA9ICdEaWRDcmVhdGVFbGVtZW50T3Bjb2RlI2V2YWx1YXRlJztcbiAgbWFuYWdlci5kaWRDcmVhdGVFbGVtZW50KGNvbXBvbmVudCwgdm0uZWxlbWVudHMoKS5leHBlY3RDb25zdHJ1Y3RpbmcoYWN0aW9uKSwgdm0uZWxlbWVudHMoKS5leHBlY3RPcGVyYXRpb25zKGFjdGlvbikpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5HZXRDb21wb25lbnRTZWxmLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICBsZXQgc3RhdGUgPSB2bS5mZXRjaFZhbHVlPENvbXBvbmVudFN0YXRlPE9wYXF1ZT4+KF9zdGF0ZSk7XG4gIHZtLnN0YWNrLnB1c2goc3RhdGUubWFuYWdlci5nZXRTZWxmKHN0YXRlLmNvbXBvbmVudCkpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5HZXRDb21wb25lbnRMYXlvdXQsICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gIGxldCB7IG1hbmFnZXIsIGRlZmluaXRpb24sIGNvbXBvbmVudCB9ID0gdm0uZmV0Y2hWYWx1ZTxDb21wb25lbnRTdGF0ZTxPcGFxdWU+Pihfc3RhdGUpO1xuICB2bS5zdGFjay5wdXNoKG1hbmFnZXIubGF5b3V0Rm9yKGRlZmluaXRpb24sIGNvbXBvbmVudCwgdm0uZW52KSk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkRpZFJlbmRlckxheW91dCwgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlPENvbXBvbmVudFN0YXRlPE9wYXF1ZT4+KF9zdGF0ZSk7XG4gIGxldCBib3VuZHMgPSB2bS5lbGVtZW50cygpLnBvcEJsb2NrKCk7XG5cbiAgbWFuYWdlci5kaWRSZW5kZXJMYXlvdXQoY29tcG9uZW50LCBib3VuZHMpO1xuXG4gIHZtLmVudi5kaWRDcmVhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcblxuICB2bS51cGRhdGVXaXRoKG5ldyBEaWRVcGRhdGVMYXlvdXRPcGNvZGUobWFuYWdlciwgY29tcG9uZW50LCBib3VuZHMpKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24sIHZtID0+IHZtLmNvbW1pdENhY2hlR3JvdXAoKSk7XG5cbmV4cG9ydCBjbGFzcyBVcGRhdGVDb21wb25lbnRPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJ1cGRhdGUtY29tcG9uZW50XCI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgdGFnOiBUYWcsXG4gICAgcHJpdmF0ZSBuYW1lOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBjb21wb25lbnQ6IENvbXBvbmVudCxcbiAgICBwcml2YXRlIG1hbmFnZXI6IENvbXBvbmVudE1hbmFnZXI8Q29tcG9uZW50PixcbiAgICBwcml2YXRlIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlLFxuICApIHtcbiAgICBzdXBlcigpO1xuXG4gICAgbGV0IGNvbXBvbmVudFRhZyA9IG1hbmFnZXIuZ2V0VGFnKGNvbXBvbmVudCk7XG5cbiAgICBpZiAoY29tcG9uZW50VGFnKSB7XG4gICAgICB0aGlzLnRhZyA9IGNvbWJpbmUoW3RhZywgY29tcG9uZW50VGFnXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGFnID0gdGFnO1xuICAgIH1cbiAgfVxuXG4gIGV2YWx1YXRlKF92bTogVXBkYXRpbmdWTSkge1xuICAgIGxldCB7IGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlIH0gPSB0aGlzO1xuXG4gICAgbWFuYWdlci51cGRhdGUoY29tcG9uZW50LCBkeW5hbWljU2NvcGUpO1xuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIHJldHVybiB7XG4gICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgYXJnczogW0pTT04uc3RyaW5naWZ5KHRoaXMubmFtZSldXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGlkVXBkYXRlTGF5b3V0T3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwiZGlkLXVwZGF0ZS1sYXlvdXRcIjtcbiAgcHVibGljIHRhZzogVGFnID0gQ09OU1RBTlRfVEFHO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbWFuYWdlcjogQ29tcG9uZW50TWFuYWdlcjxDb21wb25lbnQ+LFxuICAgIHByaXZhdGUgY29tcG9uZW50OiBDb21wb25lbnQsXG4gICAgcHJpdmF0ZSBib3VuZHM6IEJvdW5kc1xuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICBsZXQgeyBtYW5hZ2VyLCBjb21wb25lbnQsIGJvdW5kcyB9ID0gdGhpcztcblxuICAgIG1hbmFnZXIuZGlkVXBkYXRlTGF5b3V0KGNvbXBvbmVudCwgYm91bmRzKTtcblxuICAgIHZtLmVudi5kaWRVcGRhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsQUFBTyxTQUFFLEFBQWMsZ0JBQWtCLEFBQWMsQUFBRSxzQkFBTSxBQUFlLEFBQUM7QUFDL0UsQUFBTyxTQUFFLEFBQU0sQUFBRSxjQUFNLEFBQU0sQUFBQztBQUU5QixPQUFPLEFBQStCLFVBQU0sQUFBb0IsQUFBQztBQUlqRSxBQUFPLFNBQUUsQUFBMEIsQUFBRSxrQ0FBTSxBQUFPLEFBQUM7QUFFbkQsQUFBTyxTQUNMLEFBQVksY0FDWixBQUFjLGdCQUdkLEFBQU8sU0FDUCxBQUFPLEFBQ1IsZUFBTSxBQUFvQixBQUFDO0FBRTVCLEFBQWMsZUFBQyxBQUFHLElBQUMsR0FBdUIsNEJBQUUsVUFBQyxBQUFFLEFBQUU7UUFBTyxBQUFXLEFBQUUsbUJBQWxCLEFBQUc7O0FBQ3BELFFBQUksQUFBVSxhQUFHLEFBQUUsR0FBQyxBQUFTLFVBQUMsQUFBUSxTQUE4QixBQUFXLEFBQUMsQUFBQztBQUNqRixRQUFJLEFBQUssUUFBRyxBQUFFLEdBQUMsQUFBSyxBQUFDO0FBRXJCLEFBQUssVUFBQyxBQUFJLEtBQUMsQUFBVSxBQUFDLEFBQUM7QUFDdkIsQUFBSyxVQUFDLEFBQUksS0FBQyxBQUFVLFdBQUMsQUFBTyxBQUFDLEFBQUMsQUFDakM7QUFBQyxBQUFDLEFBQUM7QUFFSCxBQUFjLGVBQUMsQUFBRyxJQUFDLEdBQThCLG1DQUFFLEFBQUU7QUFDbkQsUUFBSSxBQUFLLFFBQUcsQUFBRSxHQUFDLEFBQUssQUFBQztBQUNyQixRQUFJLEFBQVMsWUFBRyxBQUFLLE1BQUMsQUFBRyxBQUF1RCxBQUFDO0FBQ2pGLFFBQUksQUFBSyxRQUFHLEFBQU8sUUFBQyxBQUFTLEFBQUMsYUFBRyxBQUFTLFlBQUcsSUFBSSxBQUFjLGVBQThCLEFBQVMsQUFBQyxBQUFDO0FBQ3hHLFFBQUksQUFBVSxhQUFHLEFBQUssUUFB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UyxBQUFXO0FBQ3BCLGVBQU0sU0FBTixBQUFNLEFBQVE7QUFOakIsZUFBSSxPQUFHLEFBQW1CLEFBQUM7QUFDM0IsZUFBRyxNQUFRLEFBQVksQUFBQyxBQVEvQjs7QUFBQzs7b0NBRUQsQUFBUSw2QkFBQyxBQUFjO0FBQ3JCLEFBQUksWUFBRSxBQUFPO1lBQUUsQUFBUztZQUFFLEFBQU0sQUFBRSxTQUFHLEFBQUksQUFBQzs7QUFFMUMsQUFBTyxnQkFBQyxBQUFlLGdCQUFDLEFBQVMsV0FBRSxBQUFNLEFBQUMsQUFBQztBQUUzQyxBQUFFLFdBQUMsQUFBRyxJQUFDLEFBQVMsVUFBQyxBQUFTLFdBQUUsQUFBTyxBQUFDLEFBQUMsQUFDdkM7QUFBQyxBQUNGOzs7RUFuQjBDLEFBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBUFBFTkRfT1BDT0RFUywgT3AsIE9wY29kZUpTT04sIFVwZGF0aW5nT3Bjb2RlIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBBc3NlcnQgfSBmcm9tICcuL3ZtJztcbmltcG9ydCB7IFVwZGF0aW5nVk0gfSBmcm9tICcuLi8uLi92bSc7XG5pbXBvcnQgQVJHUywgeyBBcmd1bWVudHMsIElBcmd1bWVudHMgfSBmcm9tICcuLi8uLi92bS9hcmd1bWVudHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBDb21wb25lbnRNYW5hZ2VyLCBDb21wb25lbnREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50L2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRHluYW1pY1Njb3BlIH0gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IEJvdW5kcyBmcm9tICcuLi8uLi9ib3VuZHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50RWxlbWVudE9wZXJhdGlvbnMgfSBmcm9tICcuL2RvbSc7XG5pbXBvcnQgeyBPcGFxdWUgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7XG4gIENPTlNUQU5UX1RBRyxcbiAgUmVmZXJlbmNlQ2FjaGUsXG4gIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsXG4gIFRhZyxcbiAgY29tYmluZSxcbiAgaXNDb25zdFxufSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUHVzaENvbXBvbmVudE1hbmFnZXIsICh2bSwgeyBvcDE6IF9kZWZpbml0aW9uIH0pID0+IHtcbiAgbGV0IGRlZmluaXRpb24gPSB2bS5jb25zdGFudHMuZ2V0T3RoZXI8Q29tcG9uZW50RGVmaW5pdGlvbjxPcGFxdWU+PihfZGVmaW5pdGlvbik7XG4gIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuXG4gIHN0YWNrLnB1c2goZGVmaW5pdGlvbik7XG4gIHN0YWNrLnB1c2goZGVmaW5pdGlvbi5tYW5hZ2VyKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyLCB2bSA9PiB7XG4gIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICBsZXQgcmVmZXJlbmNlID0gc3RhY2sucG9wPFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8Q29tcG9uZW50RGVmaW5pdGlvbjxPcGFxdWU+Pj4oKTtcbiAgbGV0IGNhY2hlID0gaXNDb25zdChyZWZlcmVuY2UpID8gdW5kZWZpbmVkIDogbmV3IFJlZmVyZW5jZUNhY2hlPENvbXBvbmVudERlZmluaXRpb248T3BhcXVlPj4ocmVmZXJlbmNlKTtcbiAgbGV0IGRlZmluaXRpb24gPSBjYWNoZSA/IGNhY2hlLnBlZWsoKSA6IHJlZmVyZW5jZS52YWx1ZSgpO1xuXG4gIHN0YWNrLnB1c2goZGVmaW5pdGlvbik7XG4gIHN0YWNrLnB1c2goZGVmaW5pdGlvbi5tYW5hZ2VyKTtcblxuICBpZiAoY2FjaGUpIHtcbiAgICB2bS51cGRhdGVXaXRoKG5ldyBBc3NlcnQoY2FjaGUpKTtcbiAgfVxufSk7XG5cbmludGVyZmFjZSBJbml0aWFsQ29tcG9uZW50U3RhdGU8VD4ge1xuICBkZWZpbml0aW9uOiBDb21wb25lbnREZWZpbml0aW9uPFQ+O1xuICBtYW5hZ2VyOiBDb21wb25lbnRNYW5hZ2VyPFQ+O1xuICBjb21wb25lbnQ6IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50U3RhdGU8VD4ge1xuICBkZWZpbml0aW9uOiBDb21wb25lbnREZWZpbml0aW9uPFQ+O1xuICBtYW5hZ2VyOiBDb21wb25lbnRNYW5hZ2VyPFQ+O1xuICBjb21wb25lbnQ6IFQ7XG59XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5Jbml0aWFsaXplQ29tcG9uZW50U3RhdGUsIHZtID0+IHtcbiAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG5cbiAgbGV0IG1hbmFnZXIgPSBzdGFjay5wb3AoKTtcbiAgbGV0IGRlZmluaXRpb24gPSBzdGFjay5wb3AoKTtcblxuICBzdGFjay5wdXNoKHsgZGVmaW5pdGlvbiwgbWFuYWdlciwgY29tcG9uZW50OiBudWxsIH0pO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5QdXNoQXJncywgKHZtLCB7IG9wMTogcG9zaXRpb25hbCwgb3AyOiBzeW50aGV0aWMgfSkgPT4ge1xuICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgQVJHUy5zZXR1cChzdGFjaywgcG9zaXRpb25hbCwgISFzeW50aGV0aWMpO1xuICBzdGFjay5wdXNoKEFSR1MpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5QcmVwYXJlQXJncywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gIGxldCB7IGRlZmluaXRpb24sIG1hbmFnZXIgfSA9IHZtLmZldGNoVmFsdWU8SW5pdGlhbENvbXBvbmVudFN0YXRlPE9wYXF1ZT4+KF9zdGF0ZSk7XG4gIGxldCBhcmdzID0gc3RhY2sucG9wPEFyZ3VtZW50cz4oKTtcblxuICBsZXQgcHJlcGFyZWRBcmdzID0gbWFuYWdlci5wcmVwYXJlQXJncyhkZWZpbml0aW9uLCBhcmdzKTtcblxuICBpZiAocHJlcGFyZWRBcmdzKSB7XG4gICAgYXJncy5jbGVhcigpO1xuXG4gICAgbGV0IHsgcG9zaXRpb25hbCwgbmFtZWQgfSA9IHByZXBhcmVkQXJncztcblxuICAgIGxldCBwb3NpdGlvbmFsQ291bnQgPSBwb3NpdGlvbmFsLmxlbmd0aDtcblxuICAgIGZvciAobGV0IGk9MDsgaTxwb3NpdGlvbmFsQ291bnQ7IGkrKykge1xuICAgICAgc3RhY2sucHVzaChwb3NpdGlvbmFsW2ldKTtcbiAgICB9XG5cbiAgICBsZXQgbmFtZXMgPSBPYmplY3Qua2V5cyhuYW1lZCk7XG4gICAgbGV0IG5hbWVkQ291bnQgPSBuYW1lcy5sZW5ndGg7XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8bmFtZWRDb3VudDsgaSsrKSB7XG4gICAgICBzdGFjay5wdXNoKG5hbWVkW25hbWVzW2ldXSk7XG4gICAgfVxuXG4gICAgc3RhY2sucHVzaChuYW1lcyk7XG4gICAgYXJncy5zZXR1cChzdGFjaywgcG9zaXRpb25hbENvdW50LCB0cnVlKTtcbiAgfVxuXG4gIHN0YWNrLnB1c2goYXJncyk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkNyZWF0ZUNvbXBvbmVudCwgKHZtLCB7IG9wMTogZmxhZ3MsIG9wMjogX3N0YXRlIH0pID0+IHtcbiAgbGV0IGRlZmluaXRpb24sIG1hbmFnZXI7XG4gIGxldCBhcmdzID0gdm0uc3RhY2sucG9wPElBcmd1bWVudHM+KCk7XG4gIGxldCBkeW5hbWljU2NvcGUgPSB2bS5keW5hbWljU2NvcGUoKTtcbiAgbGV0IHN0YXRlID0geyBkZWZpbml0aW9uLCBtYW5hZ2VyIH0gPSB2bS5mZXRjaFZhbHVlPEluaXRpYWxDb21wb25lbnRTdGF0ZTxPcGFxdWU+Pihfc3RhdGUpO1xuXG4gIGxldCBoYXNEZWZhdWx0QmxvY2sgPSBmbGFncyAmIDBiMDE7XG5cbiAgbGV0IGNvbXBvbmVudCA9IG1hbmFnZXIuY3JlYXRlKHZtLmVudiwgZGVmaW5pdGlvbiwgYXJncywgZHluYW1pY1Njb3BlLCB2bS5nZXRTZWxmKCksICEhaGFzRGVmYXVsdEJsb2NrKTtcbiAgKHN0YXRlIGFzIENvbXBvbmVudFN0YXRlPHR5cGVvZiBjb21wb25lbnQ+KS5jb21wb25lbnQgPSBjb21wb25lbnQ7XG5cbiAgdm0udXBkYXRlV2l0aChuZXcgVXBkYXRlQ29tcG9uZW50T3Bjb2RlKGFyZ3MudGFnLCBkZWZpbml0aW9uLm5hbWUsIGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlKSk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlJlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvciwgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlPENvbXBvbmVudFN0YXRlPE9wYXF1ZT4+KF9zdGF0ZSk7XG5cbiAgbGV0IGRlc3RydWN0b3IgPSBtYW5hZ2VyLmdldERlc3RydWN0b3IoY29tcG9uZW50KTtcbiAgaWYgKGRlc3RydWN0b3IpIHZtLm5ld0Rlc3Ryb3lhYmxlKGRlc3RydWN0b3IpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5CZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uLCB2bSA9PiB7XG4gIHZtLmJlZ2luQ2FjaGVHcm91cCgpO1xuICB2bS5lbGVtZW50cygpLnB1c2hTaW1wbGVCbG9jaygpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5QdXNoQ29tcG9uZW50T3BlcmF0aW9ucywgdm0gPT4ge1xuICB2bS5zdGFjay5wdXNoKG5ldyBDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyh2bS5lbnYpKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuRGlkQ3JlYXRlRWxlbWVudCwgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlPENvbXBvbmVudFN0YXRlPE9wYXF1ZT4+KF9zdGF0ZSk7XG5cbiAgbGV0IGFjdGlvbiA9ICdEaWRDcmVhdGVFbGVtZW50T3Bjb2RlI2V2YWx1YXRlJztcbiAgbWFuYWdlci5kaWRDcmVhdGVFbGVtZW50KGNvbXBvbmVudCwgdm0uZWxlbWVudHMoKS5leHBlY3RDb25zdHJ1Y3RpbmcoYWN0aW9uKSwgdm0uZWxlbWVudHMoKS5leHBlY3RPcGVyYXRpb25zKGFjdGlvbikpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5HZXRDb21wb25lbnRTZWxmLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICBsZXQgc3RhdGUgPSB2bS5mZXRjaFZhbHVlPENvbXBvbmVudFN0YXRlPE9wYXF1ZT4+KF9zdGF0ZSk7XG4gIHZtLnN0YWNrLnB1c2goc3RhdGUubWFuYWdlci5nZXRTZWxmKHN0YXRlLmNvbXBvbmVudCkpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5HZXRDb21wb25lbnRMYXlvdXQsICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gIGxldCB7IG1hbmFnZXIsIGRlZmluaXRpb24sIGNvbXBvbmVudCB9ID0gdm0uZmV0Y2hWYWx1ZTxDb21wb25lbnRTdGF0ZTxPcGFxdWU+Pihfc3RhdGUpO1xuICB2bS5zdGFjay5wdXNoKG1hbmFnZXIubGF5b3V0Rm9yKGRlZmluaXRpb24sIGNvbXBvbmVudCwgdm0uZW52KSk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkRpZFJlbmRlckxheW91dCwgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlPENvbXBvbmVudFN0YXRlPE9wYXF1ZT4+KF9zdGF0ZSk7XG4gIGxldCBib3VuZHMgPSB2bS5lbGVtZW50cygpLnBvcEJsb2NrKCk7XG5cbiAgbWFuYWdlci5kaWRSZW5kZXJMYXlvdXQoY29tcG9uZW50LCBib3VuZHMpO1xuXG4gIHZtLmVudi5kaWRDcmVhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcblxuICB2bS51cGRhdGVXaXRoKG5ldyBEaWRVcGRhdGVMYXlvdXRPcGNvZGUobWFuYWdlciwgY29tcG9uZW50LCBib3VuZHMpKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24sIHZtID0+IHZtLmNvbW1pdENhY2hlR3JvdXAoKSk7XG5cbmV4cG9ydCBjbGFzcyBVcGRhdGVDb21wb25lbnRPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJ1cGRhdGUtY29tcG9uZW50XCI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgdGFnOiBUYWcsXG4gICAgcHJpdmF0ZSBuYW1lOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBjb21wb25lbnQ6IENvbXBvbmVudCxcbiAgICBwcml2YXRlIG1hbmFnZXI6IENvbXBvbmVudE1hbmFnZXI8Q29tcG9uZW50PixcbiAgICBwcml2YXRlIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlLFxuICApIHtcbiAgICBzdXBlcigpO1xuXG4gICAgbGV0IGNvbXBvbmVudFRhZyA9IG1hbmFnZXIuZ2V0VGFnKGNvbXBvbmVudCk7XG5cbiAgICBpZiAoY29tcG9uZW50VGFnKSB7XG4gICAgICB0aGlzLnRhZyA9IGNvbWJpbmUoW3RhZywgY29tcG9uZW50VGFnXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGFnID0gdGFnO1xuICAgIH1cbiAgfVxuXG4gIGV2YWx1YXRlKF92bTogVXBkYXRpbmdWTSkge1xuICAgIGxldCB7IGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlIH0gPSB0aGlzO1xuXG4gICAgbWFuYWdlci51cGRhdGUoY29tcG9uZW50LCBkeW5hbWljU2NvcGUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEaWRVcGRhdGVMYXlvdXRPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJkaWQtdXBkYXRlLWxheW91dFwiO1xuICBwdWJsaWMgdGFnOiBUYWcgPSBDT05TVEFOVF9UQUc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBtYW5hZ2VyOiBDb21wb25lbnRNYW5hZ2VyPENvbXBvbmVudD4sXG4gICAgcHJpdmF0ZSBjb21wb25lbnQ6IENvbXBvbmVudCxcbiAgICBwcml2YXRlIGJvdW5kczogQm91bmRzXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVXBkYXRpbmdWTSkge1xuICAgIGxldCB7IG1hbmFnZXIsIGNvbXBvbmVudCwgYm91bmRzIH0gPSB0aGlzO1xuXG4gICAgbWFuYWdlci5kaWRVcGRhdGVMYXlvdXQoY29tcG9uZW50LCBib3VuZHMpO1xuXG4gICAgdm0uZW52LmRpZFVwZGF0ZShjb21wb25lbnQsIG1hbmFnZXIpO1xuICB9XG59XG4iXX0=

@@ -222,14 +222,2 @@ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();

UpdateOpcode.prototype.toJSON = function toJSON() {
var guid = this._guid,
type = this.type,
cache = this.cache;
return {
guid: guid,
type: type,
details: { lastValue: JSON.stringify(cache.peek()) }
};
};
return UpdateOpcode;

@@ -297,19 +285,2 @@ }(UpdatingOpcode);

GuardedUpdateOpcode.prototype.toJSON = function toJSON() {
var guid = this._guid,
type = this.type,
deopted = this.deopted;
if (deopted) {
return {
guid: guid,
type: type,
deopted: true,
children: [deopted.toJSON()]
};
} else {
return _UpdateOpcode.prototype.toJSON.call(this);
}
};
return GuardedUpdateOpcode;

@@ -503,2 +474,2 @@ }(UpdateOpcode);

}(GuardedUpdateOpcode);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvbnRlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLEFBQWUsU0FLYixBQUFZLGNBQ1osQUFBTSxRQUNOLEFBQVEsVUFFUixBQUFjLGdCQUNkLEFBQWMsQUFDZixzQkFBTSxBQUFjLEFBQUM7QUFDdEIsQUFBTyxTQUFFLEFBQXFCLEFBQUUsNkJBQU0sQUFBNEIsQUFBQztBQUVuRSxBQUFPLFNBQWMsQUFBYyxBQUFFLHNCQUFNLEFBQWUsQUFBQztBQUczRCxBQUFPLFNBQXFDLEFBQWMsZ0JBQUUsQUFBWSxjQUFjLEFBQVUsWUFBRSxBQUFPLFNBQUUsQUFBRyxBQUFFLFdBQU0sQUFBb0IsQUFBQztBQUUzSSxBQUFPLFNBQUUsQUFBTSxRQUFFLEFBQUssQUFBRSxhQUFNLEFBQWMsQUFBQztBQUM3QyxBQUFPLFNBQUUsQUFBUSxBQUFFLGdCQUFNLEFBQWUsQUFBQztBQUN6QyxBQUFPLFNBQUUsQUFBb0IsQUFBRSw0QkFBTSxBQUFrQixBQUFDO0FBRXhELEFBQU8sU0FBRSxBQUFjLEFBQU0sc0JBQU0sQUFBZSxBQUFDO0FBRW5ELEFBQWMsZUFBQyxBQUFHLElBQUMsR0FBaUIsc0JBQUUsVUFBQyxBQUFFLEFBQUU7UUFBTyxBQUFNLEFBQUUsY0FBYixBQUFHOztBQUM5QyxRQUFJLEFBQU0sU0FBRyxBQUFFLEdBQUMsQUFBUyxVQUFDLEFBQVEsU0FBQyxBQUFNLEFBQW1DLEFBQUM7QUFDN0UsQUFBTSxXQUFDLEFBQVEsU0FBQyxBQUFFLEFBQUMsQUFBQyxBQUN0QjtBQUFDLEFBQUMsQUFBQztBQUVILGlCQUFpQixBQUFhO0FBQzVCLEFBQU0sV0FBQyxBQUFLLFVBQUssQUFBSSxRQUFJLEFBQUssVUFBSyxBQUFTLGFBQUksT0FBTyxBQUFLLE1BQUMsQUFBVSxBQUFDLGdCQUFLLEFBQVUsQUFBQyxBQUMxRjtBQUFDO0FBRUQsQUFBTSxtQ0FBNkIsQUFBYTtBQUM5QyxB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QUEyQiw0QkFBQyxBQUFTLFdBQUUsQUFBSyxPQUFFLEFBQU0sUUFBRSxBQUFNLEFBQUMsQUFBQyxBQUMzRTtBQUFDLEFBQ0YsQUFFRDs7O0VBbEJpRCxBQUFzQzs7SUFrQnJEOzs7QUFBbEM7Ozs7O0FBQ0UsZ0JBQUksT0FBRyxBQUFpQixBQUFDLEFBSzNCOztBQUFDOzswQ0FIVyxBQUFNLHlCQUFDLEFBQXdCLEtBQUUsQUFBYyxRQUFFLEFBQXdCO0FBQ2pGLEFBQU0sZUFBQyxBQUFjLGVBQUMsQUFBRyxLQUFFLEFBQU0sUUFBRSxBQUFLLEFBQUMsQUFBQyxBQUM1QztBQUFDLEFBQ0Y7OztFQU55QyxBQUFzQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBVcHNlcnQsIHtcbiAgSW5zZXJ0aW9uLFxuICBDYXV0aW91c0luc2VydGlvbixcbiAgVHJ1c3RpbmdJbnNlcnRpb24sXG5cbiAgaXNTYWZlU3RyaW5nLFxuICBpc05vZGUsXG4gIGlzU3RyaW5nLFxuXG4gIGNhdXRpb3VzSW5zZXJ0LFxuICB0cnVzdGluZ0luc2VydFxufSBmcm9tICcuLi8uLi91cHNlcnQnO1xuaW1wb3J0IHsgaXNDb21wb25lbnREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50L2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRE9NVHJlZUNvbnN0cnVjdGlvbiB9IGZyb20gJy4uLy4uL2RvbS9oZWxwZXInO1xuaW1wb3J0IHsgT3Bjb2RlSlNPTiwgVXBkYXRpbmdPcGNvZGUgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IFZNLCBVcGRhdGluZ1ZNIH0gZnJvbSAnLi4vLi4vdm0nO1xuaW1wb3J0IHsgVHJ5T3Bjb2RlIH0gZnJvbSAnLi4vLi4vdm0vdXBkYXRlJztcbmltcG9ydCB7IFJlZmVyZW5jZSwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgUmVmZXJlbmNlQ2FjaGUsIFVwZGF0YWJsZVRhZywgVGFnV3JhcHBlciwgaXNNb2RpZmllZCwgaXNDb25zdCwgbWFwIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IE9wdGlvbiwgT3BhcXVlIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBDdXJzb3IsIGNsZWFyIH0gZnJvbSAnLi4vLi4vYm91bmRzJztcbmltcG9ydCB7IEZyYWdtZW50IH0gZnJvbSAnLi4vLi4vYnVpbGRlcic7XG5pbXBvcnQgeyBDb25kaXRpb25hbFJlZmVyZW5jZSB9IGZyb20gJy4uLy4uL3JlZmVyZW5jZXMnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBBUFBFTkRfT1BDT0RFUywgT3AgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkR5bmFtaWNDb250ZW50LCAodm0sIHsgb3AxOiBhcHBlbmQgfSkgPT4ge1xuICBsZXQgb3Bjb2RlID0gdm0uY29uc3RhbnRzLmdldE90aGVyKGFwcGVuZCkgYXMgQXBwZW5kRHluYW1pY09wY29kZTxJbnNlcnRpb24+O1xuICBvcGNvZGUuZXZhbHVhdGUodm0pO1xufSk7XG5cbmZ1bmN0aW9uIGlzRW1wdHkodmFsdWU6IE9wYXF1ZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgdmFsdWVbJ3RvU3RyaW5nJ10gIT09ICdmdW5jdGlvbic7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVUZXh0VmFsdWUodmFsdWU6IE9wYXF1ZSk6IHN0cmluZyB7XG4gIGlmIChpc0VtcHR5KHZhbHVlKSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplVHJ1c3RlZFZhbHVlKHZhbHVlOiBPcGFxdWUpOiBUcnVzdGluZ0luc2VydGlvbiB7XG4gIGlmIChpc0VtcHR5KHZhbHVlKSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmIChpc1NhZmVTdHJpbmcodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLnRvSFRNTCgpO1xuICB9XG4gIGlmIChpc05vZGUodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBTdHJpbmcodmFsdWUpO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVWYWx1ZSh2YWx1ZTogT3BhcXVlKTogQ2F1dGlvdXNJbnNlcnRpb24ge1xuICBpZiAoaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNTYWZlU3RyaW5nKHZhbHVlKSB8fCBpc05vZGUodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBTdHJpbmcodmFsdWUpO1xufVxuXG5leHBvcnQgdHlwZSBBcHBlbmREeW5hbWljT3Bjb2RlQ29uc3RydWN0b3IgPSAgdHlwZW9mIE9wdGltaXplZENhdXRpb3VzQXBwZW5kT3Bjb2RlIHwgdHlwZW9mIE9wdGltaXplZFRydXN0aW5nQXBwZW5kT3Bjb2RlO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXBwZW5kRHluYW1pY09wY29kZTxUIGV4dGVuZHMgSW5zZXJ0aW9uPiB7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBub3JtYWxpemUocmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPik6IFJlZmVyZW5jZTxUPjtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogVCk6IFVwc2VydDtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHVwZGF0ZVdpdGgodm06IFZNLCByZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+LCBjYWNoZTogUmVmZXJlbmNlQ2FjaGU8VD4sIGJvdW5kczogRnJhZ21lbnQsIHVwc2VydDogVXBzZXJ0KTogVXBkYXRpbmdPcGNvZGU7XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgbGV0IHJlZmVyZW5jZSA9IHZtLnN0YWNrLnBvcDxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4+KCk7XG4gICAgbGV0IG5vcm1hbGl6ZWQgPSB0aGlzLm5vcm1hbGl6ZShyZWZlcmVuY2UpO1xuXG4gICAgbGV0IHZhbHVlLCBjYWNoZTtcblxuICAgIGlmIChpc0NvbnN0KHJlZmVyZW5jZSkpIHtcbiAgICAgIHZhbHVlID0gbm9ybWFsaXplZC52YWx1ZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYWNoZSA9IG5ldyBSZWZlcmVuY2VDYWNoZShub3JtYWxpemVkKTtcbiAgICAgIHZhbHVlID0gY2FjaGUucGVlaygpO1xuICAgIH1cblxuICAgIGxldCBzdGFjayA9IHZtLmVsZW1lbnRzKCk7XG4gICAgbGV0IHVwc2VydCA9IHRoaXMuaW5zZXJ0KHZtLmVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCksIHN0YWNrLCB2YWx1ZSk7XG4gICAgbGV0IGJvdW5kcyA9IG5ldyBGcmFnbWVudCh1cHNlcnQuYm91bmRzKTtcblxuICAgIHN0YWNrLm5ld0JvdW5kcyhib3VuZHMpO1xuXG4gICAgaWYgKGNhY2hlIC8qIGkuZS4gIWlzQ29uc3QocmVmZXJlbmNlKSAqLykge1xuICAgICAgdm0udXBkYXRlV2l0aCh0aGlzLnVwZGF0ZVdpdGgodm0sIHJlZmVyZW5jZSwgY2FjaGUsIGJvdW5kcywgdXBzZXJ0KSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBHdWFyZGVkQXBwZW5kT3Bjb2RlPFQgZXh0ZW5kcyBJbnNlcnRpb24+IGV4dGVuZHMgQXBwZW5kRHluYW1pY09wY29kZTxUPiB7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBBcHBlbmRPcGNvZGU6IHR5cGVvZiBPcHRpbWl6ZWRDYXV0aW91c0FwcGVuZE9wY29kZSB8IHR5cGVvZiBPcHRpbWl6ZWRUcnVzdGluZ0FwcGVuZE9wY29kZTtcbiAgcHJpdmF0ZSBzdGFydCA9IC0xO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBnZXQgZGVvcHRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zdGFydCA9PT0gLTE7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICBpZiAodGhpcy5kZW9wdGVkKSB7XG4gICAgICB2bS5nb3RvKHRoaXMuc3RhcnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgdmFsdWUgPSB2bS5zdGFjay5wb3AoKTtcblxuICAgICAgaWYoaXNDb21wb25lbnREZWZpbml0aW9uKHZhbHVlKSkge1xuICAgICAgICB0aGlzLmRlb3B0KHZtLmVudik7XG4gICAgICAgIHZtLmdvdG8odGhpcy5zdGFydCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2bS5zdGFjay5wdXNoKHZhbHVlKTtcbiAgICAgICAgc3VwZXIuZXZhbHVhdGUodm0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkZW9wdChfZW52OiBFbnZpcm9ubWVudCk6IG51bWJlciB7IC8vIFB1YmxpYyBiZWNhdXNlIGl0J3MgdXNlZCBpbiB0aGUgbGF6eSBkZW9wdFxuICAgIC8vIEF0IGNvbXBpbGUgdGltZSwgd2UgZGV0ZXJtaW5lZCB0aGF0IHRoaXMgYXBwZW5kIGNhbGxzaXRlIG1pZ2h0IHJlZmVyXG4gICAgLy8gdG8gYSBsb2NhbCB2YXJpYWJsZS9wcm9wZXJ0eSBsb29rdXAgdGhhdCByZXNvbHZlcyB0byBhIGNvbXBvbmVudFxuICAgIC8vIGRlZmluaXRpb24gYXQgcnVudGltZS5cbiAgICAvL1xuICAgIC8vIFdlIGNvdWxkIGhhdmUgZWFnZXJseSBjb21waWxlZCB0aGlzIGNhbGxzaXRlIGludG8gc29tZXRoaW5nIGxpa2UgdGhpczpcbiAgICAvL1xuICAgIC8vICAge3sjaWYgKGlzLWNvbXBvbmVudC1kZWZpbml0aW9uIGZvbyl9fVxuICAgIC8vICAgICB7e2NvbXBvbmVudCBmb299fVxuICAgIC8vICAge3tlbHNlfX1cbiAgICAvLyAgICAge3tmb299fVxuICAgIC8vICAge3svaWZ9fVxuICAgIC8vXG4gICAgLy8gSG93ZXZlciwgaW4gcHJhY3RpY2UsIHRoZXJlIG1pZ2h0IGJlIGEgbGFyZ2UgYW1vdXQgb2YgdGhlc2UgY2FsbHNpdGVzXG4gICAgLy8gYW5kIG1vc3Qgb2YgdGhlbSB3b3VsZCByZXNvbHZlIHRvIGEgc2ltcGxlIHZhbHVlIGxvb2t1cC4gVGhlcmVmb3JlLCB3ZVxuICAgIC8vIHRyaWVkIHRvIGJlIG9wdGltaXN0aWMgYW5kIGFzc3VtZWQgdGhhdCB0aGUgY2FsbHNpdGUgd2lsbCByZXNvbHZlIHRvXG4gICAgLy8gYXBwZW5kaW5nIGEgc2ltcGxlIHZhbHVlLlxuICAgIC8vXG4gICAgLy8gSG93ZXZlciwgd2UgaGF2ZSByZWFjaGVkIGhlcmUgYmVjYXVzZSBhdCBydW50aW1lLCB0aGUgZ3VhcmQgY29uZGl0aW9uYWxcbiAgICAvLyBoYXZlIGRldGVjdGVkIHRoYXQgdGhpcyBjYWxsc2l0ZSBpcyBpbmRlZWQgcmVmZXJyaW5nIHRvIGEgY29tcG9uZW50XG4gICAgLy8gZGVmaW5pdGlvbiBvYmplY3QuIFNpbmNlIHRoaXMgaXMgbGlrZWx5IGdvaW5nIHRvIGJlIHRydWUgZm9yIG90aGVyXG4gICAgLy8gaW5zdGFuY2VzIG9mIHRoZSBzYW1lIGNhbGxzaXRlLCBpdCBpcyBub3cgYXBwcm9waWF0ZSB0byBkZW9wdCBpbnRvIHRoZVxuICAgIC8vIGV4cGFuZGVkIHZlcnNpb24gdGhhdCBoYW5kbGVzIGJvdGggY2FzZXMuIFRoZSBjb21waWxhdGlvbiB3b3VsZCBsb29rXG4gICAgLy8gbGlrZSB0aGlzOlxuICAgIC8vXG4gICAgLy8gICAgICAgICAgICAgICBQdXRWYWx1ZShleHByZXNzaW9uKVxuICAgIC8vICAgICAgICAgICAgICAgVGVzdChpcy1jb21wb25lbnQtZGVmaW5pdGlvbilcbiAgICAvLyAgICAgICAgICAgICAgIEVudGVyKEJFR0lOLCBFTkQpXG4gICAgLy8gICBCRUdJTjogICAgICBOb29wXG4gICAgLy8gICAgICAgICAgICAgICBKdW1wVW5sZXNzKFZBTFVFKVxuICAgIC8vICAgICAgICAgICAgICAgUHV0RHluYW1pY0NvbXBvbmVudERlZmluaXRpb25PcGNvZGVcbiAgICAvLyAgICAgICAgICAgICAgIE9wZW5Db21wb25lbnRcbiAgICAvLyAgICAgICAgICAgICAgIENsb3NlQ29tcG9uZW50XG4gICAgLy8gICAgICAgICAgICAgICBKdW1wKEVORClcbiAgICAvLyAgIFZBTFVFOiAgICAgIE5vb3BcbiAgICAvLyAgICAgICAgICAgICAgIE9wdGltaXplZEFwcGVuZFxuICAgIC8vICAgRU5EOiAgICAgICAgTm9vcFxuICAgIC8vICAgICAgICAgICAgICAgRXhpdFxuICAgIC8vXG4gICAgLy8gS2VlcCBpbiBtaW5kIHRoYXQgZXZlbiBpZiB3ZSAqZG9uJ3QqIHJlYWNoIGhlcmUgYXQgaW5pdGlhbCByZW5kZXIgdGltZSxcbiAgICAvLyBpdCBpcyBzdGlsbCBwb3NzaWJsZSAoYWx0aG91Z2ggcXVpdGUgcmFyZSkgdGhhdCB0aGUgc2ltcGxlIHZhbHVlIHdlXG4gICAgLy8gZW5jb3VudGVyIGR1cmluZyBpbml0aWFsIHJlbmRlciBjb3VsZCBsYXRlciBjaGFuZ2UgaW50byBhIGNvbXBvbmVudFxuICAgIC8vIGRlZmluaXRpb24gb2JqZWN0IGF0IHVwZGF0ZSB0aW1lLiBUaGF0IGlzIGhhbmRsZWQgYnkgdGhlIFwibGF6eSBkZW9wdFwiXG4gICAgLy8gY29kZSBvbiB0aGUgdXBkYXRlIHNpZGUgKHNjcm9sbCBkb3duIGZvciB0aGUgbmV4dCBiaWcgYmxvY2sgb2YgY29tbWVudCkuXG5cbiAgICByZXR1cm4gbnVsbCBhcyBhbnk7XG4gIH1cbn1cblxuY2xhc3MgSXNDb21wb25lbnREZWZpbml0aW9uUmVmZXJlbmNlIGV4dGVuZHMgQ29uZGl0aW9uYWxSZWZlcmVuY2Uge1xuICBzdGF0aWMgY3JlYXRlKGlubmVyOiBSZWZlcmVuY2U8T3BhcXVlPik6IElzQ29tcG9uZW50RGVmaW5pdGlvblJlZmVyZW5jZSB7XG4gICAgcmV0dXJuIG5ldyBJc0NvbXBvbmVudERlZmluaXRpb25SZWZlcmVuY2UoaW5uZXIpO1xuICB9XG5cbiAgdG9Cb29sKHZhbHVlOiBPcGFxdWUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNDb21wb25lbnREZWZpbml0aW9uKHZhbHVlKTtcbiAgfVxufVxuXG5hYnN0cmFjdCBjbGFzcyBVcGRhdGVPcGNvZGU8VCBleHRlbmRzIEluc2VydGlvbj4gZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBjYWNoZTogUmVmZXJlbmNlQ2FjaGU8VD4sXG4gICAgcHJvdGVjdGVkIGJvdW5kczogRnJhZ21lbnQsXG4gICAgcHJvdGVjdGVkIHVwc2VydDogVXBzZXJ0XG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy50YWcgPSBjYWNoZS50YWc7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBUKTogVXBzZXJ0O1xuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5jYWNoZS5yZXZhbGlkYXRlKCk7XG5cbiAgICBpZiAoaXNNb2RpZmllZCh2YWx1ZSkpIHtcbiAgICAgIGxldCB7IGJvdW5kcywgdXBzZXJ0IH0gPSB0aGlzO1xuICAgICAgbGV0IHsgZG9tIH0gPSB2bTtcblxuICAgICAgaWYoIXRoaXMudXBzZXJ0LnVwZGF0ZShkb20sIHZhbHVlKSkge1xuICAgICAgICBsZXQgY3Vyc29yID0gbmV3IEN1cnNvcihib3VuZHMucGFyZW50RWxlbWVudCgpLCBjbGVhcihib3VuZHMpKTtcbiAgICAgICAgdXBzZXJ0ID0gdGhpcy51cHNlcnQgPSB0aGlzLmluc2VydCh2bS5lbnYuZ2V0QXBwZW5kT3BlcmF0aW9ucygpLCBjdXJzb3IsIHZhbHVlIGFzIFQpO1xuICAgICAgfVxuXG4gICAgICBib3VuZHMudXBkYXRlKHVwc2VydC5ib3VuZHMpO1xuICAgIH1cbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICBsZXQgeyBfZ3VpZDogZ3VpZCwgdHlwZSwgY2FjaGUgfSA9IHRoaXM7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZCxcbiAgICAgIHR5cGUsXG4gICAgICBkZXRhaWxzOiB7IGxhc3RWYWx1ZTogSlNPTi5zdHJpbmdpZnkoY2FjaGUucGVlaygpKSB9XG4gICAgfTtcbiAgfVxufVxuXG5hYnN0cmFjdCBjbGFzcyBHdWFyZGVkVXBkYXRlT3Bjb2RlPFQgZXh0ZW5kcyBJbnNlcnRpb24+IGV4dGVuZHMgVXBkYXRlT3Bjb2RlPFQ+IHtcbiAgcHJpdmF0ZSBfdGFnOiBUYWdXcmFwcGVyPFVwZGF0YWJsZVRhZz47XG4gIHByaXZhdGUgZGVvcHRlZDogT3B0aW9uPFRyeU9wY29kZT4gPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPixcbiAgICBjYWNoZTogUmVmZXJlbmNlQ2FjaGU8VD4sXG4gICAgYm91bmRzOiBGcmFnbWVudCxcbiAgICB1cHNlcnQ6IFVwc2VydFxuICApIHtcbiAgICBzdXBlcihjYWNoZSwgYm91bmRzLCB1cHNlcnQpO1xuICAgIHRoaXMudGFnID0gdGhpcy5fdGFnID0gVXBkYXRhYmxlVGFnLmNyZWF0ZSh0aGlzLnRhZyk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVXBkYXRpbmdWTSkge1xuICAgIGlmICh0aGlzLmRlb3B0ZWQpIHtcbiAgICAgIHZtLmV2YWx1YXRlT3Bjb2RlKHRoaXMuZGVvcHRlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChpc0NvbXBvbmVudERlZmluaXRpb24odGhpcy5yZWZlcmVuY2UudmFsdWUoKSkpIHtcbiAgICAgICAgdGhpcy5sYXp5RGVvcHQodm0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3VwZXIuZXZhbHVhdGUodm0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbGF6eURlb3B0KF92bTogVXBkYXRpbmdWTSkge1xuICAgIC8vIER1cmlnbiBpbml0aWFsIHJlbmRlciwgd2Uga25vdyB0aGF0IHRoZSByZWZlcmVuY2UgZG9lcyBub3QgY29udGFpbiBhXG4gICAgLy8gY29tcG9uZW50IGRlZmluaXRpb24sIHNvIHdlIG9wdGltaXN0aWNhbGx5IGFzc3VtZWQgdGhhdCB0aGlzIGFwcGVuZFxuICAgIC8vIGlzIGp1c3QgYSBub3JtYWwgYXBwZW5kLiBIb3dldmVyLCBhdCB1cGRhdGUgdGltZSwgd2UgZGlzY292ZXJlZCB0aGF0XG4gICAgLy8gdGhlIHJlZmVyZW5jZSBoYXMgc3dpdGNoZWQgaW50byBjb250YWluaW5nIGEgY29tcG9uZW50IGRlZmluaXRpb24sIHNvXG4gICAgLy8gd2UgbmVlZCB0byBkbyBhIFwibGF6eSBkZW9wdFwiLCBzaW11bGF0aW5nIHdoYXQgd291bGQgaGF2ZSBoYXBwZW5lZCBpZlxuICAgIC8vIHdlIGhhZCBkZWNpZGVkIHRvIHBlcmZvcm0gdGhlIGRlb3B0IGluIHRoZSBmaXJzdCBwbGFjZSBkdXJpbmcgaW5pdGlhbFxuICAgIC8vIHJlbmRlci5cbiAgICAvL1xuICAgIC8vIE1vcmUgY29uY3JldGVseSwgd2Ugd291bGQgaGF2ZSBleHBhbmRlZCB0aGUgY3VybHkgaW50byBhIGlmL2Vsc2UsIGFuZFxuICAgIC8vIGJhc2VkIG9uIHdoZXRoZXIgdGhlIHZhbHVlIGlzIGEgY29tcG9uZW50IGRlZmluaXRpb24gb3Igbm90LCB3ZSB3b3VsZFxuICAgIC8vIGhhdmUgZW50ZXJlZCBlaXRoZXIgdGhlIGR5bmFtaWMgY29tcG9uZW50IGJyYW5jaCBvciB0aGUgc2ltcGxlIHZhbHVlXG4gICAgLy8gYnJhbmNoLlxuICAgIC8vXG4gICAgLy8gU2luY2Ugd2UgcmVuZGVyZWQgYSBzaW1wbGUgdmFsdWUgZHVyaW5nIGluaXRpYWwgcmVuZGVyIChhbmQgYWxsIHRoZVxuICAgIC8vIHVwZGF0ZXMgdXAgdW50aWwgdGhpcyBwb2ludCksIHdlIG5lZWQgdG8gcHJldGVuZCB0aGF0IHRoZSByZXN1bHQgaXNcbiAgICAvLyBwcm9kdWNlZCBieSB0aGUgXCJWQUxVRVwiIGJyYW5jaCBvZiB0aGUgZGVvcHRlZCBhcHBlbmQgb3Bjb2RlOlxuICAgIC8vXG4gICAgLy8gICBUcnkoQkVHSU4sIEVORClcbiAgICAvLyAgICAgQXNzZXJ0KElzQ29tcG9uZW50RGVmaW5pdGlvbiwgZXhwZWN0ZWQ9ZmFsc2UpXG4gICAgLy8gICAgIE9wdGltaXplZFVwZGF0ZVxuICAgIC8vXG4gICAgLy8gSW4gdGhpcyBjYXNlLCBiZWNhdXNlIHRoZSByZWZlcmVuY2UgaGFzIHN3aXRjaGVkIGZyb20gYmVpbmcgYSBzaW1wbGVcbiAgICAvLyB2YWx1ZSBpbnRvIGEgY29tcG9uZW50IGRlZmluaXRpb24sIHdoYXQgd291bGQgaGF2ZSBoYXBwZW5lZCBpcyB0aGF0XG4gICAgLy8gdGhlIGFzc2VydCB3b3VsZCB0aHJvdywgY2F1c2luZyB0aGUgVHJ5IG9wY29kZSB0byB0ZWFyZG93biB0aGUgYm91bmRzXG4gICAgLy8gYW5kIHJlcnVuIHRoZSBvcmlnaW5hbCBhcHBlbmQgb3Bjb2RlLlxuICAgIC8vXG4gICAgLy8gU2luY2UgdGhlIFRyeSBvcGNvZGUgd291bGQgaGF2ZSBudWtlZCB0aGUgdXBkYXRpbmcgb3Bjb2RlcyBhbnl3YXksIHdlXG4gICAgLy8gd291bGRuJ3QgaGF2ZSB0byB3b3JyeSBhYm91dCBzaW11bGF0aW5nIHRob3NlLiBBbGwgd2UgaGF2ZSB0byBkbyBpcyB0b1xuICAgIC8vIGV4ZWN1dGUgdGhlIFRyeSBvcGNvZGUgYW5kIGltbWVkaWF0ZWx5IHRocm93LlxuXG4gICAgcmV0dXJuIG51bGwgYXMgYW55O1xuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIGxldCB7IF9ndWlkOiBndWlkLCB0eXBlLCBkZW9wdGVkIH0gPSB0aGlzO1xuXG4gICAgaWYgKGRlb3B0ZWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGd1aWQsXG4gICAgICAgIHR5cGUsXG4gICAgICAgIGRlb3B0ZWQ6IHRydWUsXG4gICAgICAgIGNoaWxkcmVuOiBbZGVvcHRlZC50b0pTT04oKV1cbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBzdXBlci50b0pTT04oKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9wdGltaXplZENhdXRpb3VzQXBwZW5kT3Bjb2RlIGV4dGVuZHMgQXBwZW5kRHluYW1pY09wY29kZTxDYXV0aW91c0luc2VydGlvbj4ge1xuICB0eXBlID0gJ29wdGltaXplZC1jYXV0aW91cy1hcHBlbmQnO1xuXG4gIHByb3RlY3RlZCBub3JtYWxpemUocmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPik6IFJlZmVyZW5jZTxDYXV0aW91c0luc2VydGlvbj4ge1xuICAgIHJldHVybiBtYXAocmVmZXJlbmNlLCBub3JtYWxpemVWYWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBDYXV0aW91c0luc2VydGlvbik6IFVwc2VydCB7XG4gICAgcmV0dXJuIGNhdXRpb3VzSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlV2l0aChfdm06IFZNLCBfcmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPiwgY2FjaGU6IFJlZmVyZW5jZUNhY2hlPENhdXRpb3VzSW5zZXJ0aW9uPiwgYm91bmRzOiBGcmFnbWVudCwgdXBzZXJ0OiBVcHNlcnQpOiBVcGRhdGluZ09wY29kZSB7XG4gICAgcmV0dXJuIG5ldyBPcHRpbWl6ZWRDYXV0aW91c1VwZGF0ZU9wY29kZShjYWNoZSwgYm91bmRzLCB1cHNlcnQpO1xuICB9XG59XG5cbmNsYXNzIE9wdGltaXplZENhdXRpb3VzVXBkYXRlT3Bjb2RlIGV4dGVuZHMgVXBkYXRlT3Bjb2RlPENhdXRpb3VzSW5zZXJ0aW9uPiB7XG4gIHR5cGUgPSAnb3B0aW1pemVkLWNhdXRpb3VzLXVwZGF0ZSc7XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogQ2F1dGlvdXNJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiBjYXV0aW91c0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHdWFyZGVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUgZXh0ZW5kcyBHdWFyZGVkQXBwZW5kT3Bjb2RlPENhdXRpb3VzSW5zZXJ0aW9uPiB7XG4gIHR5cGUgPSAnZ3VhcmRlZC1jYXV0aW91cy1hcHBlbmQnO1xuXG4gIHByb3RlY3RlZCBBcHBlbmRPcGNvZGUgPSBPcHRpbWl6ZWRDYXV0aW91c0FwcGVuZE9wY29kZTtcblxuICBwcm90ZWN0ZWQgbm9ybWFsaXplKHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4pOiBSZWZlcmVuY2U8Q2F1dGlvdXNJbnNlcnRpb24+IHtcbiAgICByZXR1cm4gbWFwKHJlZmVyZW5jZSwgbm9ybWFsaXplVmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogQ2F1dGlvdXNJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiBjYXV0aW91c0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZVdpdGgoX3ZtOiBWTSwgcmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPiwgY2FjaGU6IFJlZmVyZW5jZUNhY2hlPENhdXRpb3VzSW5zZXJ0aW9uPiwgYm91bmRzOiBGcmFnbWVudCwgdXBzZXJ0OiBVcHNlcnQpOiBVcGRhdGluZ09wY29kZSB7XG4gICAgcmV0dXJuIG5ldyBHdWFyZGVkQ2F1dGlvdXNVcGRhdGVPcGNvZGUocmVmZXJlbmNlLCBjYWNoZSwgYm91bmRzLCB1cHNlcnQpO1xuICB9XG59XG5cbmNsYXNzIEd1YXJkZWRDYXV0aW91c1VwZGF0ZU9wY29kZSBleHRlbmRzIEd1YXJkZWRVcGRhdGVPcGNvZGU8Q2F1dGlvdXNJbnNlcnRpb24+IHtcbiAgdHlwZSA9ICdndWFyZGVkLWNhdXRpb3VzLXVwZGF0ZSc7XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogQ2F1dGlvdXNJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiBjYXV0aW91c0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPcHRpbWl6ZWRUcnVzdGluZ0FwcGVuZE9wY29kZSBleHRlbmRzIEFwcGVuZER5bmFtaWNPcGNvZGU8VHJ1c3RpbmdJbnNlcnRpb24+IHtcbiAgdHlwZSA9ICdvcHRpbWl6ZWQtdHJ1c3RpbmctYXBwZW5kJztcblxuICBwcm90ZWN0ZWQgbm9ybWFsaXplKHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4pOiBSZWZlcmVuY2U8VHJ1c3RpbmdJbnNlcnRpb24+IHtcbiAgICByZXR1cm4gbWFwKHJlZmVyZW5jZSwgbm9ybWFsaXplVHJ1c3RlZFZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IFRydXN0aW5nSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgICByZXR1cm4gdHJ1c3RpbmdJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVXaXRoKF92bTogVk0sIF9yZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+LCBjYWNoZTogUmVmZXJlbmNlQ2FjaGU8VHJ1c3RpbmdJbnNlcnRpb24+LCBib3VuZHM6IEZyYWdtZW50LCB1cHNlcnQ6IFVwc2VydCk6IFVwZGF0aW5nT3Bjb2RlIHtcbiAgICByZXR1cm4gbmV3IE9wdGltaXplZFRydXN0aW5nVXBkYXRlT3Bjb2RlKGNhY2hlLCBib3VuZHMsIHVwc2VydCk7XG4gIH1cbn1cblxuY2xhc3MgT3B0aW1pemVkVHJ1c3RpbmdVcGRhdGVPcGNvZGUgZXh0ZW5kcyBVcGRhdGVPcGNvZGU8VHJ1c3RpbmdJbnNlcnRpb24+IHtcbiAgdHlwZSA9ICdvcHRpbWl6ZWQtdHJ1c3RpbmctdXBkYXRlJztcblxuICBwcm90ZWN0ZWQgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBUcnVzdGluZ0luc2VydGlvbik6IFVwc2VydCB7XG4gICAgcmV0dXJuIHRydXN0aW5nSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEd1YXJkZWRUcnVzdGluZ0FwcGVuZE9wY29kZSBleHRlbmRzIEd1YXJkZWRBcHBlbmRPcGNvZGU8VHJ1c3RpbmdJbnNlcnRpb24+IHtcbiAgdHlwZSA9ICdndWFyZGVkLXRydXN0aW5nLWFwcGVuZCc7XG5cbiAgcHJvdGVjdGVkIEFwcGVuZE9wY29kZSA9IE9wdGltaXplZFRydXN0aW5nQXBwZW5kT3Bjb2RlO1xuXG4gIHByb3RlY3RlZCBub3JtYWxpemUocmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPik6IFJlZmVyZW5jZTxUcnVzdGluZ0luc2VydGlvbj4ge1xuICAgIHJldHVybiBtYXAocmVmZXJlbmNlLCBub3JtYWxpemVUcnVzdGVkVmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogVHJ1c3RpbmdJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiB0cnVzdGluZ0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZVdpdGgoX3ZtOiBWTSwgcmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPiwgY2FjaGU6IFJlZmVyZW5jZUNhY2hlPFRydXN0aW5nSW5zZXJ0aW9uPiwgYm91bmRzOiBGcmFnbWVudCwgdXBzZXJ0OiBVcHNlcnQpOiBVcGRhdGluZ09wY29kZSB7XG4gICAgcmV0dXJuIG5ldyBHdWFyZGVkVHJ1c3RpbmdVcGRhdGVPcGNvZGUocmVmZXJlbmNlLCBjYWNoZSwgYm91bmRzLCB1cHNlcnQpO1xuICB9XG59XG5cbmNsYXNzIEd1YXJkZWRUcnVzdGluZ1VwZGF0ZU9wY29kZSBleHRlbmRzIEd1YXJkZWRVcGRhdGVPcGNvZGU8VHJ1c3RpbmdJbnNlcnRpb24+IHtcbiAgdHlwZSA9ICd0cnVzdGluZy11cGRhdGUnO1xuXG4gIHByb3RlY3RlZCBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IFRydXN0aW5nSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgICByZXR1cm4gdHJ1c3RpbmdJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvbnRlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLEFBQWUsU0FLYixBQUFZLGNBQ1osQUFBTSxRQUNOLEFBQVEsVUFFUixBQUFjLGdCQUNkLEFBQWMsQUFDZixzQkFBTSxBQUFjLEFBQUM7QUFDdEIsQUFBTyxTQUFFLEFBQXFCLEFBQUUsNkJBQU0sQUFBNEIsQUFBQztBQUVuRSxBQUFPLFNBQWMsQUFBYyxBQUFFLHNCQUFNLEFBQWUsQUFBQztBQUczRCxBQUFPLFNBQXFDLEFBQWMsZ0JBQUUsQUFBWSxjQUFjLEFBQVUsWUFBRSxBQUFPLFNBQUUsQUFBRyxBQUFFLFdBQU0sQUFBb0IsQUFBQztBQUUzSSxBQUFPLFNBQUUsQUFBTSxRQUFFLEFBQUssQUFBRSxhQUFNLEFBQWMsQUFBQztBQUM3QyxBQUFPLFNBQUUsQUFBUSxBQUFFLGdCQUFNLEFBQWUsQUFBQztBQUN6QyxBQUFPLFNBQUUsQUFBb0IsQUFBRSw0QkFBTSxBQUFrQixBQUFDO0FBRXhELEFBQU8sU0FBRSxBQUFjLEFBQU0sc0JBQU0sQUFBZSxBQUFDO0FBRW5ELEFBQWMsZUFBQyxBQUFHLElBQUMsR0FBaUIsc0JBQUUsVUFBQyxBQUFFLEFBQUU7UUFBTyxBQUFNLEFBQUUsY0FBYixBQUFHOztBQUM5QyxRQUFJLEFBQU0sU0FBRyxBQUFFLEdBQUMsQUFBUyxVQUFDLEFBQVEsU0FBQyxBQUFNLEFBQW1DLEFBQUM7QUFDN0UsQUFBTSxXQUFDLEFBQVEsU0FBQyxBQUFFLEFBQUMsQUFBQyxBQUN0QjtBQUFDLEFBQUMsQUFBQztBQUVILGlCQUFpQixBQUFhO0FBQzVCLEFBQU0sV0FBQyxBQUFLLFVBQUssQUFBSSxRQUFJLEFBQUssVUFBSyxBQUFTLGFBQUksT0FBTyxBQUFLLE1BQUMsQUFBVSxBQUFDLGdCQUFLLEFBQVUsQUFBQyxBQUMxRjtBQUFDO0FBRUQsQUFBTSxtQ0FBNkIsQUFBYTtBQUM5QyxB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RyxBQUF5QixBQUFDO0FBRXZCLGdCQUFZLGVBQUcsQUFBNkIsQUFBQyxBQWF6RDs7QUFBQzs7MENBWFcsQUFBUywrQkFBQyxBQUE0QjtBQUM5QyxBQUFNLGVBQUMsQUFBRyxJQUFDLEFBQVMsV0FBRSxBQUFxQixBQUFDLEFBQUMsQUFDL0M7QUFBQzs7MENBRVMsQUFBTSx5QkFBQyxBQUF3QixLQUFFLEFBQWMsUUFBRSxBQUF3QjtBQUNqRixBQUFNLGVBQUMsQUFBYyxlQUFDLEFBQUcsS0FBRSxBQUFNLFFBQUUsQUFBSyxBQUFDLEFBQUMsQUFDNUM7QUFBQzs7MENBRVMsQUFBVSxpQ0FBQyxBQUFPLEtBQUUsQUFBNEIsV0FBRSxBQUF3QyxPQUFFLEFBQWdCLFFBQUUsQUFBYztBQUNwSSxBQUFNLGVBQUMsSUFBSSxBQUEyQiw0QkFBQyxBQUFTLFdBQUUsQUFBSyxPQUFFLEFBQU0sUUFBRSxBQUFNLEFBQUMsQUFBQyxBQUMzRTtBQUFDLEFBQ0YsQUFFRDs7O0VBbEJpRCxBQUFzQzs7SUFrQnJEOzs7QUFBbEM7Ozs7O0FBQ0UsZ0JBQUksT0FBRyxBQUFpQixBQUFDLEFBSzNCOztBQUFDOzswQ0FIVyxBQUFNLHlCQUFDLEFBQXdCLEtBQUUsQUFBYyxRQUFFLEFBQXdCO0FBQ2pGLEFBQU0sZUFBQyxBQUFjLGVBQUMsQUFBRyxLQUFFLEFBQU0sUUFBRSxBQUFLLEFBQUMsQUFBQyxBQUM1QztBQUFDLEFBQ0Y7OztFQU55QyxBQUFzQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBVcHNlcnQsIHtcbiAgSW5zZXJ0aW9uLFxuICBDYXV0aW91c0luc2VydGlvbixcbiAgVHJ1c3RpbmdJbnNlcnRpb24sXG5cbiAgaXNTYWZlU3RyaW5nLFxuICBpc05vZGUsXG4gIGlzU3RyaW5nLFxuXG4gIGNhdXRpb3VzSW5zZXJ0LFxuICB0cnVzdGluZ0luc2VydFxufSBmcm9tICcuLi8uLi91cHNlcnQnO1xuaW1wb3J0IHsgaXNDb21wb25lbnREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50L2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRE9NVHJlZUNvbnN0cnVjdGlvbiB9IGZyb20gJy4uLy4uL2RvbS9oZWxwZXInO1xuaW1wb3J0IHsgT3Bjb2RlSlNPTiwgVXBkYXRpbmdPcGNvZGUgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IFZNLCBVcGRhdGluZ1ZNIH0gZnJvbSAnLi4vLi4vdm0nO1xuaW1wb3J0IHsgVHJ5T3Bjb2RlIH0gZnJvbSAnLi4vLi4vdm0vdXBkYXRlJztcbmltcG9ydCB7IFJlZmVyZW5jZSwgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSwgUmVmZXJlbmNlQ2FjaGUsIFVwZGF0YWJsZVRhZywgVGFnV3JhcHBlciwgaXNNb2RpZmllZCwgaXNDb25zdCwgbWFwIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IE9wdGlvbiwgT3BhcXVlIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBDdXJzb3IsIGNsZWFyIH0gZnJvbSAnLi4vLi4vYm91bmRzJztcbmltcG9ydCB7IEZyYWdtZW50IH0gZnJvbSAnLi4vLi4vYnVpbGRlcic7XG5pbXBvcnQgeyBDb25kaXRpb25hbFJlZmVyZW5jZSB9IGZyb20gJy4uLy4uL3JlZmVyZW5jZXMnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBBUFBFTkRfT1BDT0RFUywgT3AgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkR5bmFtaWNDb250ZW50LCAodm0sIHsgb3AxOiBhcHBlbmQgfSkgPT4ge1xuICBsZXQgb3Bjb2RlID0gdm0uY29uc3RhbnRzLmdldE90aGVyKGFwcGVuZCkgYXMgQXBwZW5kRHluYW1pY09wY29kZTxJbnNlcnRpb24+O1xuICBvcGNvZGUuZXZhbHVhdGUodm0pO1xufSk7XG5cbmZ1bmN0aW9uIGlzRW1wdHkodmFsdWU6IE9wYXF1ZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgdmFsdWVbJ3RvU3RyaW5nJ10gIT09ICdmdW5jdGlvbic7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVUZXh0VmFsdWUodmFsdWU6IE9wYXF1ZSk6IHN0cmluZyB7XG4gIGlmIChpc0VtcHR5KHZhbHVlKSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplVHJ1c3RlZFZhbHVlKHZhbHVlOiBPcGFxdWUpOiBUcnVzdGluZ0luc2VydGlvbiB7XG4gIGlmIChpc0VtcHR5KHZhbHVlKSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmIChpc1NhZmVTdHJpbmcodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLnRvSFRNTCgpO1xuICB9XG4gIGlmIChpc05vZGUodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBTdHJpbmcodmFsdWUpO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVWYWx1ZSh2YWx1ZTogT3BhcXVlKTogQ2F1dGlvdXNJbnNlcnRpb24ge1xuICBpZiAoaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNTYWZlU3RyaW5nKHZhbHVlKSB8fCBpc05vZGUodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBTdHJpbmcodmFsdWUpO1xufVxuXG5leHBvcnQgdHlwZSBBcHBlbmREeW5hbWljT3Bjb2RlQ29uc3RydWN0b3IgPSAgdHlwZW9mIE9wdGltaXplZENhdXRpb3VzQXBwZW5kT3Bjb2RlIHwgdHlwZW9mIE9wdGltaXplZFRydXN0aW5nQXBwZW5kT3Bjb2RlO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXBwZW5kRHluYW1pY09wY29kZTxUIGV4dGVuZHMgSW5zZXJ0aW9uPiB7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBub3JtYWxpemUocmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPik6IFJlZmVyZW5jZTxUPjtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogVCk6IFVwc2VydDtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHVwZGF0ZVdpdGgodm06IFZNLCByZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+LCBjYWNoZTogUmVmZXJlbmNlQ2FjaGU8VD4sIGJvdW5kczogRnJhZ21lbnQsIHVwc2VydDogVXBzZXJ0KTogVXBkYXRpbmdPcGNvZGU7XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgbGV0IHJlZmVyZW5jZSA9IHZtLnN0YWNrLnBvcDxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4+KCk7XG4gICAgbGV0IG5vcm1hbGl6ZWQgPSB0aGlzLm5vcm1hbGl6ZShyZWZlcmVuY2UpO1xuXG4gICAgbGV0IHZhbHVlLCBjYWNoZTtcblxuICAgIGlmIChpc0NvbnN0KHJlZmVyZW5jZSkpIHtcbiAgICAgIHZhbHVlID0gbm9ybWFsaXplZC52YWx1ZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYWNoZSA9IG5ldyBSZWZlcmVuY2VDYWNoZShub3JtYWxpemVkKTtcbiAgICAgIHZhbHVlID0gY2FjaGUucGVlaygpO1xuICAgIH1cblxuICAgIGxldCBzdGFjayA9IHZtLmVsZW1lbnRzKCk7XG4gICAgbGV0IHVwc2VydCA9IHRoaXMuaW5zZXJ0KHZtLmVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCksIHN0YWNrLCB2YWx1ZSk7XG4gICAgbGV0IGJvdW5kcyA9IG5ldyBGcmFnbWVudCh1cHNlcnQuYm91bmRzKTtcblxuICAgIHN0YWNrLm5ld0JvdW5kcyhib3VuZHMpO1xuXG4gICAgaWYgKGNhY2hlIC8qIGkuZS4gIWlzQ29uc3QocmVmZXJlbmNlKSAqLykge1xuICAgICAgdm0udXBkYXRlV2l0aCh0aGlzLnVwZGF0ZVdpdGgodm0sIHJlZmVyZW5jZSwgY2FjaGUsIGJvdW5kcywgdXBzZXJ0KSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBHdWFyZGVkQXBwZW5kT3Bjb2RlPFQgZXh0ZW5kcyBJbnNlcnRpb24+IGV4dGVuZHMgQXBwZW5kRHluYW1pY09wY29kZTxUPiB7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBBcHBlbmRPcGNvZGU6IHR5cGVvZiBPcHRpbWl6ZWRDYXV0aW91c0FwcGVuZE9wY29kZSB8IHR5cGVvZiBPcHRpbWl6ZWRUcnVzdGluZ0FwcGVuZE9wY29kZTtcbiAgcHJpdmF0ZSBzdGFydCA9IC0xO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBnZXQgZGVvcHRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zdGFydCA9PT0gLTE7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICBpZiAodGhpcy5kZW9wdGVkKSB7XG4gICAgICB2bS5nb3RvKHRoaXMuc3RhcnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgdmFsdWUgPSB2bS5zdGFjay5wb3AoKTtcblxuICAgICAgaWYoaXNDb21wb25lbnREZWZpbml0aW9uKHZhbHVlKSkge1xuICAgICAgICB0aGlzLmRlb3B0KHZtLmVudik7XG4gICAgICAgIHZtLmdvdG8odGhpcy5zdGFydCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2bS5zdGFjay5wdXNoKHZhbHVlKTtcbiAgICAgICAgc3VwZXIuZXZhbHVhdGUodm0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkZW9wdChfZW52OiBFbnZpcm9ubWVudCk6IG51bWJlciB7IC8vIFB1YmxpYyBiZWNhdXNlIGl0J3MgdXNlZCBpbiB0aGUgbGF6eSBkZW9wdFxuICAgIC8vIEF0IGNvbXBpbGUgdGltZSwgd2UgZGV0ZXJtaW5lZCB0aGF0IHRoaXMgYXBwZW5kIGNhbGxzaXRlIG1pZ2h0IHJlZmVyXG4gICAgLy8gdG8gYSBsb2NhbCB2YXJpYWJsZS9wcm9wZXJ0eSBsb29rdXAgdGhhdCByZXNvbHZlcyB0byBhIGNvbXBvbmVudFxuICAgIC8vIGRlZmluaXRpb24gYXQgcnVudGltZS5cbiAgICAvL1xuICAgIC8vIFdlIGNvdWxkIGhhdmUgZWFnZXJseSBjb21waWxlZCB0aGlzIGNhbGxzaXRlIGludG8gc29tZXRoaW5nIGxpa2UgdGhpczpcbiAgICAvL1xuICAgIC8vICAge3sjaWYgKGlzLWNvbXBvbmVudC1kZWZpbml0aW9uIGZvbyl9fVxuICAgIC8vICAgICB7e2NvbXBvbmVudCBmb299fVxuICAgIC8vICAge3tlbHNlfX1cbiAgICAvLyAgICAge3tmb299fVxuICAgIC8vICAge3svaWZ9fVxuICAgIC8vXG4gICAgLy8gSG93ZXZlciwgaW4gcHJhY3RpY2UsIHRoZXJlIG1pZ2h0IGJlIGEgbGFyZ2UgYW1vdXQgb2YgdGhlc2UgY2FsbHNpdGVzXG4gICAgLy8gYW5kIG1vc3Qgb2YgdGhlbSB3b3VsZCByZXNvbHZlIHRvIGEgc2ltcGxlIHZhbHVlIGxvb2t1cC4gVGhlcmVmb3JlLCB3ZVxuICAgIC8vIHRyaWVkIHRvIGJlIG9wdGltaXN0aWMgYW5kIGFzc3VtZWQgdGhhdCB0aGUgY2FsbHNpdGUgd2lsbCByZXNvbHZlIHRvXG4gICAgLy8gYXBwZW5kaW5nIGEgc2ltcGxlIHZhbHVlLlxuICAgIC8vXG4gICAgLy8gSG93ZXZlciwgd2UgaGF2ZSByZWFjaGVkIGhlcmUgYmVjYXVzZSBhdCBydW50aW1lLCB0aGUgZ3VhcmQgY29uZGl0aW9uYWxcbiAgICAvLyBoYXZlIGRldGVjdGVkIHRoYXQgdGhpcyBjYWxsc2l0ZSBpcyBpbmRlZWQgcmVmZXJyaW5nIHRvIGEgY29tcG9uZW50XG4gICAgLy8gZGVmaW5pdGlvbiBvYmplY3QuIFNpbmNlIHRoaXMgaXMgbGlrZWx5IGdvaW5nIHRvIGJlIHRydWUgZm9yIG90aGVyXG4gICAgLy8gaW5zdGFuY2VzIG9mIHRoZSBzYW1lIGNhbGxzaXRlLCBpdCBpcyBub3cgYXBwcm9waWF0ZSB0byBkZW9wdCBpbnRvIHRoZVxuICAgIC8vIGV4cGFuZGVkIHZlcnNpb24gdGhhdCBoYW5kbGVzIGJvdGggY2FzZXMuIFRoZSBjb21waWxhdGlvbiB3b3VsZCBsb29rXG4gICAgLy8gbGlrZSB0aGlzOlxuICAgIC8vXG4gICAgLy8gICAgICAgICAgICAgICBQdXRWYWx1ZShleHByZXNzaW9uKVxuICAgIC8vICAgICAgICAgICAgICAgVGVzdChpcy1jb21wb25lbnQtZGVmaW5pdGlvbilcbiAgICAvLyAgICAgICAgICAgICAgIEVudGVyKEJFR0lOLCBFTkQpXG4gICAgLy8gICBCRUdJTjogICAgICBOb29wXG4gICAgLy8gICAgICAgICAgICAgICBKdW1wVW5sZXNzKFZBTFVFKVxuICAgIC8vICAgICAgICAgICAgICAgUHV0RHluYW1pY0NvbXBvbmVudERlZmluaXRpb25PcGNvZGVcbiAgICAvLyAgICAgICAgICAgICAgIE9wZW5Db21wb25lbnRcbiAgICAvLyAgICAgICAgICAgICAgIENsb3NlQ29tcG9uZW50XG4gICAgLy8gICAgICAgICAgICAgICBKdW1wKEVORClcbiAgICAvLyAgIFZBTFVFOiAgICAgIE5vb3BcbiAgICAvLyAgICAgICAgICAgICAgIE9wdGltaXplZEFwcGVuZFxuICAgIC8vICAgRU5EOiAgICAgICAgTm9vcFxuICAgIC8vICAgICAgICAgICAgICAgRXhpdFxuICAgIC8vXG4gICAgLy8gS2VlcCBpbiBtaW5kIHRoYXQgZXZlbiBpZiB3ZSAqZG9uJ3QqIHJlYWNoIGhlcmUgYXQgaW5pdGlhbCByZW5kZXIgdGltZSxcbiAgICAvLyBpdCBpcyBzdGlsbCBwb3NzaWJsZSAoYWx0aG91Z2ggcXVpdGUgcmFyZSkgdGhhdCB0aGUgc2ltcGxlIHZhbHVlIHdlXG4gICAgLy8gZW5jb3VudGVyIGR1cmluZyBpbml0aWFsIHJlbmRlciBjb3VsZCBsYXRlciBjaGFuZ2UgaW50byBhIGNvbXBvbmVudFxuICAgIC8vIGRlZmluaXRpb24gb2JqZWN0IGF0IHVwZGF0ZSB0aW1lLiBUaGF0IGlzIGhhbmRsZWQgYnkgdGhlIFwibGF6eSBkZW9wdFwiXG4gICAgLy8gY29kZSBvbiB0aGUgdXBkYXRlIHNpZGUgKHNjcm9sbCBkb3duIGZvciB0aGUgbmV4dCBiaWcgYmxvY2sgb2YgY29tbWVudCkuXG5cbiAgICByZXR1cm4gbnVsbCBhcyBhbnk7XG4gIH1cbn1cblxuY2xhc3MgSXNDb21wb25lbnREZWZpbml0aW9uUmVmZXJlbmNlIGV4dGVuZHMgQ29uZGl0aW9uYWxSZWZlcmVuY2Uge1xuICBzdGF0aWMgY3JlYXRlKGlubmVyOiBSZWZlcmVuY2U8T3BhcXVlPik6IElzQ29tcG9uZW50RGVmaW5pdGlvblJlZmVyZW5jZSB7XG4gICAgcmV0dXJuIG5ldyBJc0NvbXBvbmVudERlZmluaXRpb25SZWZlcmVuY2UoaW5uZXIpO1xuICB9XG5cbiAgdG9Cb29sKHZhbHVlOiBPcGFxdWUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNDb21wb25lbnREZWZpbml0aW9uKHZhbHVlKTtcbiAgfVxufVxuXG5hYnN0cmFjdCBjbGFzcyBVcGRhdGVPcGNvZGU8VCBleHRlbmRzIEluc2VydGlvbj4gZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBjYWNoZTogUmVmZXJlbmNlQ2FjaGU8VD4sXG4gICAgcHJvdGVjdGVkIGJvdW5kczogRnJhZ21lbnQsXG4gICAgcHJvdGVjdGVkIHVwc2VydDogVXBzZXJ0XG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy50YWcgPSBjYWNoZS50YWc7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBUKTogVXBzZXJ0O1xuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5jYWNoZS5yZXZhbGlkYXRlKCk7XG5cbiAgICBpZiAoaXNNb2RpZmllZCh2YWx1ZSkpIHtcbiAgICAgIGxldCB7IGJvdW5kcywgdXBzZXJ0IH0gPSB0aGlzO1xuICAgICAgbGV0IHsgZG9tIH0gPSB2bTtcblxuICAgICAgaWYoIXRoaXMudXBzZXJ0LnVwZGF0ZShkb20sIHZhbHVlKSkge1xuICAgICAgICBsZXQgY3Vyc29yID0gbmV3IEN1cnNvcihib3VuZHMucGFyZW50RWxlbWVudCgpLCBjbGVhcihib3VuZHMpKTtcbiAgICAgICAgdXBzZXJ0ID0gdGhpcy51cHNlcnQgPSB0aGlzLmluc2VydCh2bS5lbnYuZ2V0QXBwZW5kT3BlcmF0aW9ucygpLCBjdXJzb3IsIHZhbHVlIGFzIFQpO1xuICAgICAgfVxuXG4gICAgICBib3VuZHMudXBkYXRlKHVwc2VydC5ib3VuZHMpO1xuICAgIH1cbiAgfVxufVxuXG5hYnN0cmFjdCBjbGFzcyBHdWFyZGVkVXBkYXRlT3Bjb2RlPFQgZXh0ZW5kcyBJbnNlcnRpb24+IGV4dGVuZHMgVXBkYXRlT3Bjb2RlPFQ+IHtcbiAgcHJpdmF0ZSBfdGFnOiBUYWdXcmFwcGVyPFVwZGF0YWJsZVRhZz47XG4gIHByaXZhdGUgZGVvcHRlZDogT3B0aW9uPFRyeU9wY29kZT4gPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPixcbiAgICBjYWNoZTogUmVmZXJlbmNlQ2FjaGU8VD4sXG4gICAgYm91bmRzOiBGcmFnbWVudCxcbiAgICB1cHNlcnQ6IFVwc2VydFxuICApIHtcbiAgICBzdXBlcihjYWNoZSwgYm91bmRzLCB1cHNlcnQpO1xuICAgIHRoaXMudGFnID0gdGhpcy5fdGFnID0gVXBkYXRhYmxlVGFnLmNyZWF0ZSh0aGlzLnRhZyk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVXBkYXRpbmdWTSkge1xuICAgIGlmICh0aGlzLmRlb3B0ZWQpIHtcbiAgICAgIHZtLmV2YWx1YXRlT3Bjb2RlKHRoaXMuZGVvcHRlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChpc0NvbXBvbmVudERlZmluaXRpb24odGhpcy5yZWZlcmVuY2UudmFsdWUoKSkpIHtcbiAgICAgICAgdGhpcy5sYXp5RGVvcHQodm0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3VwZXIuZXZhbHVhdGUodm0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbGF6eURlb3B0KF92bTogVXBkYXRpbmdWTSkge1xuICAgIC8vIER1cmlnbiBpbml0aWFsIHJlbmRlciwgd2Uga25vdyB0aGF0IHRoZSByZWZlcmVuY2UgZG9lcyBub3QgY29udGFpbiBhXG4gICAgLy8gY29tcG9uZW50IGRlZmluaXRpb24sIHNvIHdlIG9wdGltaXN0aWNhbGx5IGFzc3VtZWQgdGhhdCB0aGlzIGFwcGVuZFxuICAgIC8vIGlzIGp1c3QgYSBub3JtYWwgYXBwZW5kLiBIb3dldmVyLCBhdCB1cGRhdGUgdGltZSwgd2UgZGlzY292ZXJlZCB0aGF0XG4gICAgLy8gdGhlIHJlZmVyZW5jZSBoYXMgc3dpdGNoZWQgaW50byBjb250YWluaW5nIGEgY29tcG9uZW50IGRlZmluaXRpb24sIHNvXG4gICAgLy8gd2UgbmVlZCB0byBkbyBhIFwibGF6eSBkZW9wdFwiLCBzaW11bGF0aW5nIHdoYXQgd291bGQgaGF2ZSBoYXBwZW5lZCBpZlxuICAgIC8vIHdlIGhhZCBkZWNpZGVkIHRvIHBlcmZvcm0gdGhlIGRlb3B0IGluIHRoZSBmaXJzdCBwbGFjZSBkdXJpbmcgaW5pdGlhbFxuICAgIC8vIHJlbmRlci5cbiAgICAvL1xuICAgIC8vIE1vcmUgY29uY3JldGVseSwgd2Ugd291bGQgaGF2ZSBleHBhbmRlZCB0aGUgY3VybHkgaW50byBhIGlmL2Vsc2UsIGFuZFxuICAgIC8vIGJhc2VkIG9uIHdoZXRoZXIgdGhlIHZhbHVlIGlzIGEgY29tcG9uZW50IGRlZmluaXRpb24gb3Igbm90LCB3ZSB3b3VsZFxuICAgIC8vIGhhdmUgZW50ZXJlZCBlaXRoZXIgdGhlIGR5bmFtaWMgY29tcG9uZW50IGJyYW5jaCBvciB0aGUgc2ltcGxlIHZhbHVlXG4gICAgLy8gYnJhbmNoLlxuICAgIC8vXG4gICAgLy8gU2luY2Ugd2UgcmVuZGVyZWQgYSBzaW1wbGUgdmFsdWUgZHVyaW5nIGluaXRpYWwgcmVuZGVyIChhbmQgYWxsIHRoZVxuICAgIC8vIHVwZGF0ZXMgdXAgdW50aWwgdGhpcyBwb2ludCksIHdlIG5lZWQgdG8gcHJldGVuZCB0aGF0IHRoZSByZXN1bHQgaXNcbiAgICAvLyBwcm9kdWNlZCBieSB0aGUgXCJWQUxVRVwiIGJyYW5jaCBvZiB0aGUgZGVvcHRlZCBhcHBlbmQgb3Bjb2RlOlxuICAgIC8vXG4gICAgLy8gICBUcnkoQkVHSU4sIEVORClcbiAgICAvLyAgICAgQXNzZXJ0KElzQ29tcG9uZW50RGVmaW5pdGlvbiwgZXhwZWN0ZWQ9ZmFsc2UpXG4gICAgLy8gICAgIE9wdGltaXplZFVwZGF0ZVxuICAgIC8vXG4gICAgLy8gSW4gdGhpcyBjYXNlLCBiZWNhdXNlIHRoZSByZWZlcmVuY2UgaGFzIHN3aXRjaGVkIGZyb20gYmVpbmcgYSBzaW1wbGVcbiAgICAvLyB2YWx1ZSBpbnRvIGEgY29tcG9uZW50IGRlZmluaXRpb24sIHdoYXQgd291bGQgaGF2ZSBoYXBwZW5lZCBpcyB0aGF0XG4gICAgLy8gdGhlIGFzc2VydCB3b3VsZCB0aHJvdywgY2F1c2luZyB0aGUgVHJ5IG9wY29kZSB0byB0ZWFyZG93biB0aGUgYm91bmRzXG4gICAgLy8gYW5kIHJlcnVuIHRoZSBvcmlnaW5hbCBhcHBlbmQgb3Bjb2RlLlxuICAgIC8vXG4gICAgLy8gU2luY2UgdGhlIFRyeSBvcGNvZGUgd291bGQgaGF2ZSBudWtlZCB0aGUgdXBkYXRpbmcgb3Bjb2RlcyBhbnl3YXksIHdlXG4gICAgLy8gd291bGRuJ3QgaGF2ZSB0byB3b3JyeSBhYm91dCBzaW11bGF0aW5nIHRob3NlLiBBbGwgd2UgaGF2ZSB0byBkbyBpcyB0b1xuICAgIC8vIGV4ZWN1dGUgdGhlIFRyeSBvcGNvZGUgYW5kIGltbWVkaWF0ZWx5IHRocm93LlxuXG4gICAgcmV0dXJuIG51bGwgYXMgYW55O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPcHRpbWl6ZWRDYXV0aW91c0FwcGVuZE9wY29kZSBleHRlbmRzIEFwcGVuZER5bmFtaWNPcGNvZGU8Q2F1dGlvdXNJbnNlcnRpb24+IHtcbiAgdHlwZSA9ICdvcHRpbWl6ZWQtY2F1dGlvdXMtYXBwZW5kJztcblxuICBwcm90ZWN0ZWQgbm9ybWFsaXplKHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4pOiBSZWZlcmVuY2U8Q2F1dGlvdXNJbnNlcnRpb24+IHtcbiAgICByZXR1cm4gbWFwKHJlZmVyZW5jZSwgbm9ybWFsaXplVmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogQ2F1dGlvdXNJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiBjYXV0aW91c0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZVdpdGgoX3ZtOiBWTSwgX3JlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4sIGNhY2hlOiBSZWZlcmVuY2VDYWNoZTxDYXV0aW91c0luc2VydGlvbj4sIGJvdW5kczogRnJhZ21lbnQsIHVwc2VydDogVXBzZXJ0KTogVXBkYXRpbmdPcGNvZGUge1xuICAgIHJldHVybiBuZXcgT3B0aW1pemVkQ2F1dGlvdXNVcGRhdGVPcGNvZGUoY2FjaGUsIGJvdW5kcywgdXBzZXJ0KTtcbiAgfVxufVxuXG5jbGFzcyBPcHRpbWl6ZWRDYXV0aW91c1VwZGF0ZU9wY29kZSBleHRlbmRzIFVwZGF0ZU9wY29kZTxDYXV0aW91c0luc2VydGlvbj4ge1xuICB0eXBlID0gJ29wdGltaXplZC1jYXV0aW91cy11cGRhdGUnO1xuXG4gIHByb3RlY3RlZCBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IENhdXRpb3VzSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgICByZXR1cm4gY2F1dGlvdXNJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgR3VhcmRlZENhdXRpb3VzQXBwZW5kT3Bjb2RlIGV4dGVuZHMgR3VhcmRlZEFwcGVuZE9wY29kZTxDYXV0aW91c0luc2VydGlvbj4ge1xuICB0eXBlID0gJ2d1YXJkZWQtY2F1dGlvdXMtYXBwZW5kJztcblxuICBwcm90ZWN0ZWQgQXBwZW5kT3Bjb2RlID0gT3B0aW1pemVkQ2F1dGlvdXNBcHBlbmRPcGNvZGU7XG5cbiAgcHJvdGVjdGVkIG5vcm1hbGl6ZShyZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+KTogUmVmZXJlbmNlPENhdXRpb3VzSW5zZXJ0aW9uPiB7XG4gICAgcmV0dXJuIG1hcChyZWZlcmVuY2UsIG5vcm1hbGl6ZVZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IENhdXRpb3VzSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgICByZXR1cm4gY2F1dGlvdXNJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVXaXRoKF92bTogVk0sIHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4sIGNhY2hlOiBSZWZlcmVuY2VDYWNoZTxDYXV0aW91c0luc2VydGlvbj4sIGJvdW5kczogRnJhZ21lbnQsIHVwc2VydDogVXBzZXJ0KTogVXBkYXRpbmdPcGNvZGUge1xuICAgIHJldHVybiBuZXcgR3VhcmRlZENhdXRpb3VzVXBkYXRlT3Bjb2RlKHJlZmVyZW5jZSwgY2FjaGUsIGJvdW5kcywgdXBzZXJ0KTtcbiAgfVxufVxuXG5jbGFzcyBHdWFyZGVkQ2F1dGlvdXNVcGRhdGVPcGNvZGUgZXh0ZW5kcyBHdWFyZGVkVXBkYXRlT3Bjb2RlPENhdXRpb3VzSW5zZXJ0aW9uPiB7XG4gIHR5cGUgPSAnZ3VhcmRlZC1jYXV0aW91cy11cGRhdGUnO1xuXG4gIHByb3RlY3RlZCBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IENhdXRpb3VzSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgICByZXR1cm4gY2F1dGlvdXNJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT3B0aW1pemVkVHJ1c3RpbmdBcHBlbmRPcGNvZGUgZXh0ZW5kcyBBcHBlbmREeW5hbWljT3Bjb2RlPFRydXN0aW5nSW5zZXJ0aW9uPiB7XG4gIHR5cGUgPSAnb3B0aW1pemVkLXRydXN0aW5nLWFwcGVuZCc7XG5cbiAgcHJvdGVjdGVkIG5vcm1hbGl6ZShyZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+KTogUmVmZXJlbmNlPFRydXN0aW5nSW5zZXJ0aW9uPiB7XG4gICAgcmV0dXJuIG1hcChyZWZlcmVuY2UsIG5vcm1hbGl6ZVRydXN0ZWRWYWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBUcnVzdGluZ0luc2VydGlvbik6IFVwc2VydCB7XG4gICAgcmV0dXJuIHRydXN0aW5nSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlV2l0aChfdm06IFZNLCBfcmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPiwgY2FjaGU6IFJlZmVyZW5jZUNhY2hlPFRydXN0aW5nSW5zZXJ0aW9uPiwgYm91bmRzOiBGcmFnbWVudCwgdXBzZXJ0OiBVcHNlcnQpOiBVcGRhdGluZ09wY29kZSB7XG4gICAgcmV0dXJuIG5ldyBPcHRpbWl6ZWRUcnVzdGluZ1VwZGF0ZU9wY29kZShjYWNoZSwgYm91bmRzLCB1cHNlcnQpO1xuICB9XG59XG5cbmNsYXNzIE9wdGltaXplZFRydXN0aW5nVXBkYXRlT3Bjb2RlIGV4dGVuZHMgVXBkYXRlT3Bjb2RlPFRydXN0aW5nSW5zZXJ0aW9uPiB7XG4gIHR5cGUgPSAnb3B0aW1pemVkLXRydXN0aW5nLXVwZGF0ZSc7XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogVHJ1c3RpbmdJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiB0cnVzdGluZ0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHdWFyZGVkVHJ1c3RpbmdBcHBlbmRPcGNvZGUgZXh0ZW5kcyBHdWFyZGVkQXBwZW5kT3Bjb2RlPFRydXN0aW5nSW5zZXJ0aW9uPiB7XG4gIHR5cGUgPSAnZ3VhcmRlZC10cnVzdGluZy1hcHBlbmQnO1xuXG4gIHByb3RlY3RlZCBBcHBlbmRPcGNvZGUgPSBPcHRpbWl6ZWRUcnVzdGluZ0FwcGVuZE9wY29kZTtcblxuICBwcm90ZWN0ZWQgbm9ybWFsaXplKHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4pOiBSZWZlcmVuY2U8VHJ1c3RpbmdJbnNlcnRpb24+IHtcbiAgICByZXR1cm4gbWFwKHJlZmVyZW5jZSwgbm9ybWFsaXplVHJ1c3RlZFZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IFRydXN0aW5nSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgICByZXR1cm4gdHJ1c3RpbmdJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVXaXRoKF92bTogVk0sIHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4sIGNhY2hlOiBSZWZlcmVuY2VDYWNoZTxUcnVzdGluZ0luc2VydGlvbj4sIGJvdW5kczogRnJhZ21lbnQsIHVwc2VydDogVXBzZXJ0KTogVXBkYXRpbmdPcGNvZGUge1xuICAgIHJldHVybiBuZXcgR3VhcmRlZFRydXN0aW5nVXBkYXRlT3Bjb2RlKHJlZmVyZW5jZSwgY2FjaGUsIGJvdW5kcywgdXBzZXJ0KTtcbiAgfVxufVxuXG5jbGFzcyBHdWFyZGVkVHJ1c3RpbmdVcGRhdGVPcGNvZGUgZXh0ZW5kcyBHdWFyZGVkVXBkYXRlT3Bjb2RlPFRydXN0aW5nSW5zZXJ0aW9uPiB7XG4gIHR5cGUgPSAndHJ1c3RpbmctdXBkYXRlJztcblxuICBwcm90ZWN0ZWQgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBUcnVzdGluZ0luc2VydGlvbik6IFVwc2VydCB7XG4gICAgcmV0dXJuIHRydXN0aW5nSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cbn1cbiJdfQ==

@@ -10,3 +10,2 @@ 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; }

import { UpdatingOpcode } from '../../opcodes';
import { unwrap, expect } from '@glimmer/util';
import { CachedReference, ReferenceCache, combineTagged, isConst as isConstReference, isModified } from '@glimmer/reference';

@@ -291,3 +290,3 @@ import { NULL_REFERENCE, PrimitiveReference } from '../../references';

attributeNames.push(name);
unwrap(attributes).push(attribute);
attributes.push(attribute);
};

@@ -370,9 +369,2 @@

UpdateModifierOpcode.prototype.toJSON = function toJSON() {
return {
guid: this._guid,
type: this.type
};
};
return UpdateModifierOpcode;

@@ -414,3 +406,3 @@ }(UpdatingOpcode);

var value = expect(cache, 'must patch after flush').revalidate();
var value = cache.revalidate();
if (isModified(value)) {

@@ -437,28 +429,2 @@ this.attributeManager.updateAttribute(env, element, value, this.namespace);

DynamicAttribute.prototype.toJSON = function toJSON() {
var element = this.element,
namespace = this.namespace,
name = this.name,
cache = this.cache;
var formattedElement = formatElement(element);
var lastValue = expect(cache, 'must serialize after flush').peek();
if (namespace) {
return {
element: formattedElement,
type: 'attribute',
namespace: namespace,
name: name,
lastValue: lastValue
};
}
return {
element: formattedElement,
type: 'attribute',
namespace: namespace === undefined ? null : namespace,
name: name,
lastValue: lastValue
};
};
return DynamicAttribute;

@@ -505,16 +471,4 @@ }();

PatchElementOpcode.prototype.toJSON = function toJSON() {
var _guid = this._guid,
type = this.type,
operation = this.operation;
return {
guid: _guid,
type: type,
details: operation.toJSON()
};
};
return PatchElementOpcode;
}(UpdatingOpcode);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZG9tLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsQUFBTyxTQUFjLEFBQWMsQUFBRSxzQkFBTSxBQUFlLEFBQUM7QUFNM0QsQUFBTyxTQUErQixBQUFNLFFBQUUsQUFBTSxBQUFFLGNBQU0sQUFBZSxBQUFDO0FBQzVFLEFBQU8sU0FDTCxBQUFlLGlCQUdmLEFBQWMsZ0JBSWQsQUFBYSxlQUNiLEFBQU8sV0FBSSxBQUFnQixrQkFDM0IsQUFBVSxBQUNYLGtCQUFNLEFBQW9CLEFBQUM7QUFFNUIsQUFBTyxTQUFFLEFBQWMsZ0JBQUUsQUFBa0IsQUFBRSwwQkFBTSxBQUFrQixBQUFDO0FBR3RFLEFBQU8sU0FBRSxBQUFNLEFBQUUsY0FBTSxBQUFNLEFBQUM7QUFDOUIsQUFBTyxTQUFFLEFBQWMsQUFBWSxzQkFBTSxBQUFlLEFBQUM7QUFFekQsQUFBYyxlQUFDLEFBQUcsSUFBQyxHQUFPLFlBQUUsVUFBQyxBQUFFLEFBQUU7UUFBTyxBQUFJLEFBQUUsWUFBWCxBQUFHOztBQUNwQyxBQUFFLE9BQUMsQUFBUSxBQUFFLFdBQUMsQUFBVSxXQUFDLEFBQUUsR0FBQyxBQUFTLFVBQUMsQUFBUyxVQUFDLEFBQUksQUFBQyxBQUFDLEFBQUMsQUFDekQ7QUFBQyxBQUFDLEFBQUM7QUFFSCxBQUFjLGVBQUMsQUFBRyxJQUFDLEdBQVUsZUFBRSxVQUFDLEFBQUUsQUFBRTtRQUFPLEFBQUksQUFBRSxhQUFYLEFBQUc7O0FBQ3ZDLEFBQUUsT0FBQyxBQUFRLEFBQUUsV0FBQyxBQUFhLGNBQUMsQUFBRSxHQUFDLEFBQVMsVUFBQyxBQUFTLFVBQUMsQUFBSSxBQUFDLEFBQUMsQUFBQyxBQUM1RDtBQUFDLEFBQUMsQUFBQztBQUVILEFBQWMsZUFBQyxBQUFHLElBQUMsR0FBYyxtQkFBRSxVQUFDLEFBQUUsQUFBRTtRQUFPLEFBQUcsQUFBRSxZQUFWLEFBQUc7O0FBQzNDLEFBQUUsT0FBQyxBQUFR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QUFBQztBQUN6QixBQUFJLGVBQUMsQUFBUyxZQUFHLEFBQVMsQUFBQyxBQUM3Qjs7QUFBQzs7aUNBRUQsQUFBUSw2QkFBQyxBQUFjO0FBQ3JCLEFBQUksYUFBQyxBQUFTLFVBQUMsQUFBSyxNQUFDLEFBQUUsR0FBQyxBQUFHLEFBQUMsQUFBQyxBQUMvQjtBQUFDOztpQ0FFRCxBQUFNO0FBQ0osQUFBSSxZQUFFLEFBQUs7WUFBRSxBQUFJLE9BQWdCLEFBQUksQUFBQztZQUFuQixBQUFTLEFBQUU7O0FBRTlCLEFBQU07QUFDSixBQUFJLGtCQUFFLEFBQUs7QUFDWCxBQUFJO0FBQ0osQUFBTyxxQkFBRSxBQUFTLFVBQUMsQUFBTSxBQUFFLEFBQzVCLEFBQUMsQUFDSjtBQUxTO0FBS1IsQUFDRjs7O0VBeEJ1QyxBQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3Bjb2RlSlNPTiwgVXBkYXRpbmdPcGNvZGUgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IFZNLCBVcGRhdGluZ1ZNIH0gZnJvbSAnLi4vLi4vdm0nO1xuaW1wb3J0IHsgQXJndW1lbnRzIH0gZnJvbSAnLi4vLi4vdm0vYXJndW1lbnRzJztcbmltcG9ydCAqIGFzIFNpbXBsZSBmcm9tICcuLi8uLi9kb20vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBGSVhfUkVJRklDQVRJT04gfSBmcm9tICcuLi8uLi9kb20vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4uLy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IEZJWE1FLCBPcHRpb24sIE9wYXF1ZSwgRGljdCwgdW53cmFwLCBleHBlY3QgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7XG4gIENhY2hlZFJlZmVyZW5jZSxcbiAgUmVmZXJlbmNlLFxuICBWZXJzaW9uZWRSZWZlcmVuY2UsXG4gIFJlZmVyZW5jZUNhY2hlLFxuICBUYWcsXG4gIFJldmlzaW9uLFxuICBQYXRoUmVmZXJlbmNlLFxuICBjb21iaW5lVGFnZ2VkLFxuICBpc0NvbnN0IGFzIGlzQ29uc3RSZWZlcmVuY2UsXG4gIGlzTW9kaWZpZWRcbn0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IE1vZGlmaWVyTWFuYWdlciB9IGZyb20gJy4uLy4uL21vZGlmaWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTlVMTF9SRUZFUkVOQ0UsIFByaW1pdGl2ZVJlZmVyZW5jZSB9IGZyb20gJy4uLy4uL3JlZmVyZW5jZXMnO1xuaW1wb3J0IHsgQXR0cmlidXRlTWFuYWdlciB9IGZyb20gJy4uLy4uL2RvbS9hdHRyaWJ1dGUtbWFuYWdlcnMnO1xuaW1wb3J0IHsgRWxlbWVudE9wZXJhdGlvbnMgfSBmcm9tICcuLi8uLi9idWlsZGVyJztcbmltcG9ydCB7IEFzc2VydCB9IGZyb20gJy4vdm0nO1xuaW1wb3J0IHsgQVBQRU5EX09QQ09ERVMsIE9wIGFzIE9wIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5UZXh0LCAodm0sIHsgb3AxOiB0ZXh0IH0pID0+IHtcbiAgdm0uZWxlbWVudHMoKS5hcHBlbmRUZXh0KHZtLmNvbnN0YW50cy5nZXRTdHJpbmcodGV4dCkpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5Db21tZW50LCAodm0sIHsgb3AxOiB0ZXh0IH0pID0+IHtcbiAgdm0uZWxlbWVudHMoKS5hcHBlbmRDb21tZW50KHZtLmNvbnN0YW50cy5nZXRTdHJpbmcodGV4dCkpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5PcGVuRWxlbWVudCwgKHZtLCB7IG9wMTogdGFnIH0pID0+IHtcbiAgdm0uZWxlbWVudHMoKS5vcGVuRWxlbWVudCh2bS5jb25zdGFudHMuZ2V0U3RyaW5nKHRhZykpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5PcGVuRWxlbWVudFdpdGhPcGVyYXRpb25zLCAodm0sIHsgb3AxOiB0YWcgfSkgPT4ge1xuICBsZXQgdGFnTmFtZSA9IHZtLmNvbnN0YW50cy5nZXRTdHJpbmcodGFnKTtcbiAgbGV0IG9wZXJhdGlvbnMgPSB2bS5zdGFjay5wb3A8RWxlbWVudE9wZXJhdGlvbnM+KCk7XG4gIHZtLmVsZW1lbnRzKCkub3BlbkVsZW1lbnQodGFnTmFtZSwgb3BlcmF0aW9ucyk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLk9wZW5EeW5hbWljRWxlbWVudCwgdm0gPT4ge1xuICBsZXQgb3BlcmF0aW9ucyA9IHZtLnN0YWNrLnBvcDxFbGVtZW50T3BlcmF0aW9ucz4oKTtcbiAgbGV0IHRhZ05hbWUgPSB2bS5zdGFjay5wb3A8UmVmZXJlbmNlPHN0cmluZz4+KCkudmFsdWUoKTtcbiAgdm0uZWxlbWVudHMoKS5vcGVuRWxlbWVudCh0YWdOYW1lLCBvcGVyYXRpb25zKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUHVzaFJlbW90ZUVsZW1lbnQsIHZtID0+IHtcbiAgbGV0IGVsZW1lbnRSZWYgPSB2bS5zdGFjay5wb3A8UmVmZXJlbmNlPFNpbXBsZS5FbGVtZW50Pj4oKTtcbiAgbGV0IG5leHRTaWJsaW5nUmVmID0gdm0uc3RhY2sucG9wPFJlZmVyZW5jZTxPcHRpb248U2ltcGxlLk5vZGU+Pj4oKTtcblxuICBsZXQgZWxlbWVudDogU2ltcGxlLkVsZW1lbnQ7XG4gIGxldCBuZXh0U2libGluZzogT3B0aW9uPFNpbXBsZS5Ob2RlPjtcblxuICBpZiAoaXNDb25zdFJlZmVyZW5jZShlbGVtZW50UmVmKSkge1xuICAgIGVsZW1lbnQgPSBlbGVtZW50UmVmLnZhbHVlKCk7XG4gIH0gZWxzZSB7XG4gICAgbGV0IGNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKGVsZW1lbnRSZWYpO1xuICAgIGVsZW1lbnQgPSBjYWNoZS5wZWVrKCk7XG4gICAgdm0udXBkYXRlV2l0aChuZXcgQXNzZXJ0KGNhY2hlKSk7XG4gIH1cblxuICBpZiAoaXNDb25zdFJlZmVyZW5jZShuZXh0U2libGluZ1JlZikpIHtcbiAgICBuZXh0U2libGluZyA9IG5leHRTaWJsaW5nUmVmLnZhbHVlKCk7XG4gIH0gZWxzZSB7XG4gICAgbGV0IGNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKG5leHRTaWJsaW5nUmVmKTtcbiAgICBuZXh0U2libGluZyA9IGNhY2hlLnBlZWsoKTtcbiAgICB2bS51cGRhdGVXaXRoKG5ldyBBc3NlcnQoY2FjaGUpKTtcbiAgfVxuXG4gIHZtLmVsZW1lbnRzKCkucHVzaFJlbW90ZUVsZW1lbnQoZWxlbWVudCwgbmV4dFNpYmxpbmcpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5Qb3BSZW1vdGVFbGVtZW50LCB2bSA9PiB2bS5lbGVtZW50cygpLnBvcFJlbW90ZUVsZW1lbnQoKSk7XG5cbmNsYXNzIENsYXNzTGlzdCB7XG4gIHByaXZhdGUgbGlzdDogT3B0aW9uPFJlZmVyZW5jZTxzdHJpbmc+W10+ID0gbnVsbDtcbiAgcHJpdmF0ZSBpc0NvbnN0ID0gdHJ1ZTtcblxuICBhcHBlbmQocmVmZXJlbmNlOiBSZWZlcmVuY2U8c3RyaW5nPikge1xuICAgIGxldCB7IGxpc3QsIGlzQ29uc3QgfSA9IHRoaXM7XG5cbiAgICBpZiAobGlzdCA9PT0gbnVsbCkgbGlzdCA9IHRoaXMubGlzdCA9IFtdO1xuXG4gICAgbGlzdC5wdXNoKHJlZmVyZW5jZSk7XG4gICAgdGhpcy5pc0NvbnN0ID0gaXNDb25zdCAmJiBpc0NvbnN0UmVmZXJlbmNlKHJlZmVyZW5jZSk7XG4gIH1cblxuICB0b1JlZmVyZW5jZSgpOiBSZWZlcmVuY2U8T3B0aW9uPHN0cmluZz4+IHtcbiAgICBsZXQgeyBsaXN0LCBpc0NvbnN0IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFsaXN0KSByZXR1cm4gTlVMTF9SRUZFUkVOQ0U7XG5cbiAgICBpZiAoaXNDb25zdCkgcmV0dXJuIFByaW1pdGl2ZVJlZmVyZW5jZS5jcmVhdGUodG9DbGFzc05hbWUobGlzdCkpO1xuXG4gICAgcmV0dXJuIG5ldyBDbGFzc0xpc3RSZWZlcmVuY2UobGlzdCk7XG4gIH1cblxufVxuXG5jbGFzcyBDbGFzc0xpc3RSZWZlcmVuY2UgZXh0ZW5kcyBDYWNoZWRSZWZlcmVuY2U8T3B0aW9uPHN0cmluZz4+IHtcbiAgcHVibGljIHRhZzogVGFnO1xuICBwcml2YXRlIGxpc3Q6IFJlZmVyZW5jZTxzdHJpbmc+W10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihsaXN0OiBSZWZlcmVuY2U8c3RyaW5nPltdKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnRhZyA9IGNvbWJpbmVUYWdnZWQobGlzdCk7XG4gICAgdGhpcy5saXN0ID0gbGlzdDtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb21wdXRlKCk6IE9wdGlvbjxzdHJpbmc+IHtcbiAgICByZXR1cm4gdG9DbGFzc05hbWUodGhpcy5saXN0KTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0b0NsYXNzTmFtZShsaXN0OiBSZWZlcmVuY2U8c3RyaW5nPltdKTogT3B0aW9uPHN0cmluZz4ge1xuICBsZXQgcmV0OiBPcGFxdWVbXSA9IFtdO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgIGxldCB2YWx1ZTogRklYTUU8T3BhcXVlLCAndXNlIE9wYXF1ZSBhbmQgbm9ybWFsaXplJz4gPSBsaXN0W2ldLnZhbHVlKCk7XG4gICAgaWYgKHZhbHVlICE9PSBmYWxzZSAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSByZXQucHVzaCh2YWx1ZSk7XG4gIH1cblxuICByZXR1cm4gKHJldC5sZW5ndGggPT09IDApID8gbnVsbCA6IHJldC5qb2luKCcgJyk7XG59XG5cbmV4cG9ydCBjbGFzcyBTaW1wbGVFbGVtZW50T3BlcmF0aW9ucyBpbXBsZW1lbnRzIEVsZW1lbnRPcGVyYXRpb25zIHtcbiAgcHJpdmF0ZSBvcGNvZGVzOiBPcHRpb248VXBkYXRpbmdPcGNvZGVbXT4gPSBudWxsO1xuICBwcml2YXRlIGNsYXNzTGlzdDogT3B0aW9uPENsYXNzTGlzdD4gPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZW52OiBFbnZpcm9ubWVudCkge1xuICB9XG5cbiAgYWRkU3RhdGljQXR0cmlidXRlKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAobmFtZSA9PT0gJ2NsYXNzJykge1xuICAgICAgdGhpcy5hZGRDbGFzcyhQcmltaXRpdmVSZWZlcmVuY2UuY3JlYXRlKHZhbHVlKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW52LmdldEFwcGVuZE9wZXJhdGlvbnMoKS5zZXRBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGFkZFN0YXRpY0F0dHJpYnV0ZU5TKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lc3BhY2U6IHN0cmluZywgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5lbnYuZ2V0QXBwZW5kT3BlcmF0aW9ucygpLnNldEF0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlKTtcbiAgfVxuXG4gIGFkZER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5hbWU6IHN0cmluZywgcmVmZXJlbmNlOiBSZWZlcmVuY2U8c3RyaW5nPiwgaXNUcnVzdGluZzogYm9vbGVhbikge1xuICAgIGlmIChuYW1lID09PSAnY2xhc3MnKSB7XG4gICAgICB0aGlzLmFkZENsYXNzKHJlZmVyZW5jZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBhdHRyaWJ1dGVNYW5hZ2VyID0gdGhpcy5lbnYuYXR0cmlidXRlRm9yKGVsZW1lbnQsIG5hbWUsIGlzVHJ1c3RpbmcpO1xuICAgICAgbGV0IGF0dHJpYnV0ZSA9IG5ldyBEeW5hbWljQXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZU1hbmFnZXIsIG5hbWUsIHJlZmVyZW5jZSk7XG5cbiAgICAgIHRoaXMuYWRkQXR0cmlidXRlKGF0dHJpYnV0ZSk7XG4gICAgfVxuICB9XG5cbiAgYWRkRHluYW1pY0F0dHJpYnV0ZU5TKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lc3BhY2U6IFNpbXBsZS5OYW1lc3BhY2UsIG5hbWU6IHN0cmluZywgcmVmZXJlbmNlOiBQYXRoUmVmZXJlbmNlPHN0cmluZz4sIGlzVHJ1c3Rpbmc6IGJvb2xlYW4pIHtcbiAgICBsZXQgYXR0cmlidXRlTWFuYWdlciA9IHRoaXMuZW52LmF0dHJpYnV0ZUZvcihlbGVtZW50LCBuYW1lLCBpc1RydXN0aW5nLCBuYW1lc3BhY2UpO1xuICAgIGxldCBuc0F0dHJpYnV0ZSA9IG5ldyBEeW5hbWljQXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZU1hbmFnZXIsIG5hbWUsIHJlZmVyZW5jZSwgbmFtZXNwYWNlKTtcblxuICAgIHRoaXMuYWRkQXR0cmlidXRlKG5zQXR0cmlidXRlKTtcbiAgfVxuXG4gIGZsdXNoKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCB2bTogVk0pIHtcbiAgICBsZXQgeyBlbnYgfSA9IHZtO1xuICAgIGxldCB7IG9wY29kZXMsIGNsYXNzTGlzdCB9ID0gdGhpcztcblxuICAgIGZvciAobGV0IGkgPSAwOyBvcGNvZGVzICYmIGkgPCBvcGNvZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2bS51cGRhdGVXaXRoKG9wY29kZXNbaV0pO1xuICAgIH1cblxuICAgIGlmIChjbGFzc0xpc3QpIHtcbiAgICAgIGxldCBhdHRyaWJ1dGVNYW5hZ2VyID0gZW52LmF0dHJpYnV0ZUZvcihlbGVtZW50LCAnY2xhc3MnLCBmYWxzZSk7XG4gICAgICBsZXQgYXR0cmlidXRlID0gbmV3IER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlTWFuYWdlciwgJ2NsYXNzJywgY2xhc3NMaXN0LnRvUmVmZXJlbmNlKCkpO1xuICAgICAgbGV0IG9wY29kZSA9IGF0dHJpYnV0ZS5mbHVzaChlbnYpO1xuXG4gICAgICBpZiAob3Bjb2RlKSB7XG4gICAgICAgIHZtLnVwZGF0ZVdpdGgob3Bjb2RlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLm9wY29kZXMgPSBudWxsO1xuICAgIHRoaXMuY2xhc3NMaXN0ID0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgYWRkQ2xhc3MocmVmZXJlbmNlOiBSZWZlcmVuY2U8c3RyaW5nPikge1xuICAgIGxldCB7IGNsYXNzTGlzdCB9ID0gdGhpcztcblxuICAgIGlmICghY2xhc3NMaXN0KSB7XG4gICAgICBjbGFzc0xpc3QgPSB0aGlzLmNsYXNzTGlzdCA9IG5ldyBDbGFzc0xpc3QoKTtcbiAgICB9XG5cbiAgICBjbGFzc0xpc3QuYXBwZW5kKHJlZmVyZW5jZSk7XG4gIH1cblxuICBwcml2YXRlIGFkZEF0dHJpYnV0ZShhdHRyaWJ1dGU6IEF0dHJpYnV0ZSkge1xuICAgIGxldCBvcGNvZGUgPSBhdHRyaWJ1dGUuZmx1c2godGhpcy5lbnYpO1xuXG4gICAgaWYgKG9wY29kZSkge1xuICAgICAgbGV0IHsgb3Bjb2RlcyB9ID0gdGhpcztcblxuICAgICAgaWYgKCFvcGNvZGVzKSB7XG4gICAgICAgIG9wY29kZXMgPSB0aGlzLm9wY29kZXMgPSBbXTtcbiAgICAgIH1cblxuICAgICAgb3Bjb2Rlcy5wdXNoKG9wY29kZSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyBpbXBsZW1lbnRzIEVsZW1lbnRPcGVyYXRpb25zIHtcbiAgcHJpdmF0ZSBhdHRyaWJ1dGVOYW1lczogT3B0aW9uPHN0cmluZ1tdPiA9IG51bGw7XG4gIHByaXZhdGUgYXR0cmlidXRlczogT3B0aW9uPEF0dHJpYnV0ZVtdPiA9IG51bGw7XG4gIHByaXZhdGUgY2xhc3NMaXN0OiBPcHRpb248Q2xhc3NMaXN0PiA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbnY6IEVudmlyb25tZW50KSB7XG4gIH1cblxuICBhZGRTdGF0aWNBdHRyaWJ1dGUoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIGlmIChuYW1lID09PSAnY2xhc3MnKSB7XG4gICAgICB0aGlzLmFkZENsYXNzKFByaW1pdGl2ZVJlZmVyZW5jZS5jcmVhdGUodmFsdWUpKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2hvdWxkQWRkQXR0cmlidXRlKG5hbWUpKSB7XG4gICAgICB0aGlzLmFkZEF0dHJpYnV0ZShuYW1lLCBuZXcgU3RhdGljQXR0cmlidXRlKGVsZW1lbnQsIG5hbWUsIHZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgYWRkU3RhdGljQXR0cmlidXRlTlMoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5hbWVzcGFjZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5zaG91bGRBZGRBdHRyaWJ1dGUobmFtZSkpIHtcbiAgICAgIHRoaXMuYWRkQXR0cmlidXRlKG5hbWUsIG5ldyBTdGF0aWNBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZSkpO1xuICAgIH1cbiAgfVxuXG4gIGFkZER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5hbWU6IHN0cmluZywgcmVmZXJlbmNlOiBQYXRoUmVmZXJlbmNlPHN0cmluZz4sIGlzVHJ1c3Rpbmc6IGJvb2xlYW4pIHtcbiAgICBpZiAobmFtZSA9PT0gJ2NsYXNzJykge1xuICAgICAgdGhpcy5hZGRDbGFzcyhyZWZlcmVuY2UpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zaG91bGRBZGRBdHRyaWJ1dGUobmFtZSkpIHtcbiAgICAgIGxldCBhdHRyaWJ1dGVNYW5hZ2VyID0gdGhpcy5lbnYuYXR0cmlidXRlRm9yKGVsZW1lbnQsIG5hbWUsIGlzVHJ1c3RpbmcpO1xuICAgICAgbGV0IGF0dHJpYnV0ZSA9IG5ldyBEeW5hbWljQXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZU1hbmFnZXIsIG5hbWUsIHJlZmVyZW5jZSk7XG5cbiAgICAgIHRoaXMuYWRkQXR0cmlidXRlKG5hbWUsIGF0dHJpYnV0ZSk7XG4gICAgfVxuICB9XG5cbiAgYWRkRHluYW1pY0F0dHJpYnV0ZU5TKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lc3BhY2U6IFNpbXBsZS5OYW1lc3BhY2UsIG5hbWU6IHN0cmluZywgcmVmZXJlbmNlOiBQYXRoUmVmZXJlbmNlPHN0cmluZz4sIGlzVHJ1c3Rpbmc6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5zaG91bGRBZGRBdHRyaWJ1dGUobmFtZSkpIHtcbiAgICAgIGxldCBhdHRyaWJ1dGVNYW5hZ2VyID0gdGhpcy5lbnYuYXR0cmlidXRlRm9yKGVsZW1lbnQsIG5hbWUsIGlzVHJ1c3RpbmcsIG5hbWVzcGFjZSk7XG4gICAgICBsZXQgbnNBdHRyaWJ1dGUgPSBuZXcgRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCBuYW1lLCByZWZlcmVuY2UsIG5hbWVzcGFjZSk7XG5cbiAgICAgIHRoaXMuYWRkQXR0cmlidXRlKG5hbWUsIG5zQXR0cmlidXRlKTtcbiAgICB9XG4gIH1cblxuICBmbHVzaChlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgdm06IFZNKSB7XG4gICAgbGV0IHsgZW52IH0gPSB0aGlzO1xuICAgIGxldCB7IGF0dHJpYnV0ZXMsIGNsYXNzTGlzdCB9ID0gdGhpcztcblxuICAgIGZvciAobGV0IGkgPSAwOyBhdHRyaWJ1dGVzICYmIGkgPCBhdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgb3Bjb2RlID0gYXR0cmlidXRlc1tpXS5mbHVzaChlbnYpO1xuXG4gICAgICBpZiAob3Bjb2RlKSB7XG4gICAgICAgIHZtLnVwZGF0ZVdpdGgob3Bjb2RlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2xhc3NMaXN0KSB7XG4gICAgICBsZXQgYXR0cmlidXRlTWFuYWdlciA9IGVudi5hdHRyaWJ1dGVGb3IoZWxlbWVudCwgJ2NsYXNzJywgZmFsc2UpO1xuICAgICAgbGV0IGF0dHJpYnV0ZSA9IG5ldyBEeW5hbWljQXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZU1hbmFnZXIsICdjbGFzcycsIGNsYXNzTGlzdC50b1JlZmVyZW5jZSgpKTtcbiAgICAgIGxldCBvcGNvZGUgPSBhdHRyaWJ1dGUuZmx1c2goZW52KTtcblxuICAgICAgaWYgKG9wY29kZSkge1xuICAgICAgICB2bS51cGRhdGVXaXRoKG9wY29kZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGRBZGRBdHRyaWJ1dGUobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmF0dHJpYnV0ZU5hbWVzIHx8IHRoaXMuYXR0cmlidXRlTmFtZXMuaW5kZXhPZihuYW1lKSA9PT0gLTE7XG4gIH1cblxuICBwcml2YXRlIGFkZENsYXNzKHJlZmVyZW5jZTogUGF0aFJlZmVyZW5jZTxzdHJpbmc+KSB7XG4gICAgbGV0IHsgY2xhc3NMaXN0IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFjbGFzc0xpc3QpIHtcbiAgICAgIGNsYXNzTGlzdCA9IHRoaXMuY2xhc3NMaXN0ID0gbmV3IENsYXNzTGlzdCgpO1xuICAgIH1cblxuICAgIGNsYXNzTGlzdC5hcHBlbmQocmVmZXJlbmNlKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkQXR0cmlidXRlKG5hbWU6IHN0cmluZywgYXR0cmlidXRlOiBBdHRyaWJ1dGUpIHtcbiAgICBsZXQgeyBhdHRyaWJ1dGVOYW1lcywgYXR0cmlidXRlcyB9ID0gdGhpcztcblxuICAgIGlmICghYXR0cmlidXRlTmFtZXMpIHtcbiAgICAgIGF0dHJpYnV0ZU5hbWVzID0gdGhpcy5hdHRyaWJ1dGVOYW1lcyA9IFtdO1xuICAgICAgYXR0cmlidXRlcyA9IHRoaXMuYXR0cmlidXRlcyA9IFtdO1xuICAgIH1cblxuICAgIGF0dHJpYnV0ZU5hbWVzLnB1c2gobmFtZSk7XG4gICAgdW53cmFwKGF0dHJpYnV0ZXMpLnB1c2goYXR0cmlidXRlKTtcbiAgfVxufVxuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuRmx1c2hFbGVtZW50LCB2bSA9PiB7XG4gIGxldCBzdGFjayA9IHZtLmVsZW1lbnRzKCk7XG5cbiAgbGV0IGFjdGlvbiA9ICdGbHVzaEVsZW1lbnRPcGNvZGUjZXZhbHVhdGUnO1xuICBzdGFjay5leHBlY3RPcGVyYXRpb25zKGFjdGlvbikuZmx1c2goc3RhY2suZXhwZWN0Q29uc3RydWN0aW5nKGFjdGlvbiksIHZtKTtcbiAgc3RhY2suZmx1c2hFbGVtZW50KCk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkNsb3NlRWxlbWVudCwgdm0gPT4gdm0uZWxlbWVudHMoKS5jbG9zZUVsZW1lbnQoKSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5TdGF0aWNBdHRyLCAodm0sIHsgb3AxOiBfbmFtZSwgb3AyOiBfdmFsdWUsIG9wMzogX25hbWVzcGFjZSB9KSA9PiB7XG4gIGxldCBuYW1lID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyhfbmFtZSk7XG4gIGxldCB2YWx1ZSA9IHZtLmNvbnN0YW50cy5nZXRTdHJpbmcoX3ZhbHVlKTtcblxuICBpZiAoX25hbWVzcGFjZSkge1xuICAgIGxldCBuYW1lc3BhY2UgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKF9uYW1lc3BhY2UpO1xuICAgIHZtLmVsZW1lbnRzKCkuc2V0U3RhdGljQXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lLCB2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgdm0uZWxlbWVudHMoKS5zZXRTdGF0aWNBdHRyaWJ1dGUobmFtZSwgdmFsdWUpO1xuICB9XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLk1vZGlmaWVyLCAodm0sIHsgb3AxOiBfbWFuYWdlciB9KSA9PiB7XG4gIGxldCBtYW5hZ2VyID0gdm0uY29uc3RhbnRzLmdldE90aGVyPE1vZGlmaWVyTWFuYWdlcjxPcGFxdWU+PihfbWFuYWdlcik7XG4gIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICBsZXQgYXJncyA9IHN0YWNrLnBvcDxBcmd1bWVudHM+KCk7XG4gIGxldCB0YWcgPSBhcmdzLnRhZztcbiAgbGV0IHsgY29uc3RydWN0aW5nOiBlbGVtZW50LCB1cGRhdGVPcGVyYXRpb25zIH0gPSB2bS5lbGVtZW50cygpO1xuICBsZXQgZHluYW1pY1Njb3BlID0gdm0uZHluYW1pY1Njb3BlKCk7XG4gIGxldCBtb2RpZmllciA9IG1hbmFnZXIuY3JlYXRlKGVsZW1lbnQgYXMgRklYX1JFSUZJQ0FUSU9OPEVsZW1lbnQ+LCBhcmdzLCBkeW5hbWljU2NvcGUsIHVwZGF0ZU9wZXJhdGlvbnMpO1xuXG4gIGFyZ3MuY2xlYXIoKTtcblxuICB2bS5lbnYuc2NoZWR1bGVJbnN0YWxsTW9kaWZpZXIobW9kaWZpZXIsIG1hbmFnZXIpO1xuICBsZXQgZGVzdHJ1Y3RvciA9IG1hbmFnZXIuZ2V0RGVzdHJ1Y3Rvcihtb2RpZmllcik7XG5cbiAgaWYgKGRlc3RydWN0b3IpIHtcbiAgICB2bS5uZXdEZXN0cm95YWJsZShkZXN0cnVjdG9yKTtcbiAgfVxuXG4gIHZtLnVwZGF0ZVdpdGgobmV3IFVwZGF0ZU1vZGlmaWVyT3Bjb2RlKFxuICAgIHRhZyxcbiAgICBtYW5hZ2VyLFxuICAgIG1vZGlmaWVyXG4gICkpO1xufSk7XG5cbmV4cG9ydCBjbGFzcyBVcGRhdGVNb2RpZmllck9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcInVwZGF0ZS1tb2RpZmllclwiO1xuICBwcml2YXRlIGxhc3RVcGRhdGVkOiBSZXZpc2lvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdGFnOiBUYWcsXG4gICAgcHJpdmF0ZSBtYW5hZ2VyOiBNb2RpZmllck1hbmFnZXI8T3BhcXVlPixcbiAgICBwcml2YXRlIG1vZGlmaWVyOiBPcGFxdWVcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmxhc3RVcGRhdGVkID0gdGFnLnZhbHVlKCk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVXBkYXRpbmdWTSkge1xuICAgIGxldCB7IG1hbmFnZXIsIG1vZGlmaWVyLCB0YWcsIGxhc3RVcGRhdGVkIH0gPSB0aGlzO1xuXG4gICAgaWYgKCF0YWcudmFsaWRhdGUobGFzdFVwZGF0ZWQpKSB7XG4gICAgICB2bS5lbnYuc2NoZWR1bGVVcGRhdGVNb2RpZmllcihtb2RpZmllciwgbWFuYWdlcik7XG4gICAgICB0aGlzLmxhc3RVcGRhdGVkID0gdGFnLnZhbHVlKCk7XG4gICAgfVxuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIHJldHVybiB7XG4gICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgdHlwZTogdGhpcy50eXBlXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF0dHJpYnV0ZSB7XG4gIG5hbWU6IHN0cmluZztcbiAgZmx1c2goZW52OiBFbnZpcm9ubWVudCk6IE9wdGlvbjxVcGRhdGluZ09wY29kZT47XG59XG5cbmV4cG9ydCBjbGFzcyBTdGF0aWNBdHRyaWJ1dGUgaW1wbGVtZW50cyBBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LFxuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSB2YWx1ZTogc3RyaW5nLFxuICAgIHByaXZhdGUgbmFtZXNwYWNlPzogc3RyaW5nXG4gICkge31cblxuICBmbHVzaChlbnY6IEVudmlyb25tZW50KTogT3B0aW9uPFVwZGF0aW5nT3Bjb2RlPiB7XG4gICAgZW52LmdldEFwcGVuZE9wZXJhdGlvbnMoKS5zZXRBdHRyaWJ1dGUodGhpcy5lbGVtZW50LCB0aGlzLm5hbWUsIHRoaXMudmFsdWUsIHRoaXMubmFtZXNwYWNlKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRHluYW1pY0F0dHJpYnV0ZSBpbXBsZW1lbnRzIEF0dHJpYnV0ZSAge1xuICBwcml2YXRlIGNhY2hlOiBPcHRpb248UmVmZXJlbmNlQ2FjaGU8T3BhcXVlPj4gPSBudWxsO1xuXG4gIHB1YmxpYyB0YWc6IFRhZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LFxuICAgIHByaXZhdGUgYXR0cmlidXRlTWFuYWdlcjogQXR0cmlidXRlTWFuYWdlcixcbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPixcbiAgICBwcml2YXRlIG5hbWVzcGFjZT86IFNpbXBsZS5OYW1lc3BhY2VcbiAgKSB7XG4gICAgdGhpcy50YWcgPSByZWZlcmVuY2UudGFnO1xuICB9XG5cbiAgcGF0Y2goZW52OiBFbnZpcm9ubWVudCkge1xuICAgIGxldCB7IGVsZW1lbnQsIGNhY2hlIH0gPSB0aGlzO1xuXG4gICAgbGV0IHZhbHVlID0gZXhwZWN0KGNhY2hlLCAnbXVzdCBwYXRjaCBhZnRlciBmbHVzaCcpLnJldmFsaWRhdGUoKTtcblxuICAgIGlmIChpc01vZGlmaWVkKHZhbHVlKSkge1xuICAgICAgdGhpcy5hdHRyaWJ1dGVNYW5hZ2VyLnVwZGF0ZUF0dHJpYnV0ZShlbnYsIGVsZW1lbnQgYXMgRklYTUU8RWxlbWVudCwgJ25lZWRzIHRvIGJlIHJlaWZpZWQgcHJvcGVybHknPiwgdmFsdWUsIHRoaXMubmFtZXNwYWNlKTtcbiAgICB9XG4gIH1cblxuICBmbHVzaChlbnY6IEVudmlyb25tZW50KTogT3B0aW9uPFVwZGF0aW5nT3Bjb2RlPiB7XG4gICAgbGV0IHsgcmVmZXJlbmNlLCBlbGVtZW50IH0gPSB0aGlzO1xuXG4gICAgaWYgKGlzQ29uc3RSZWZlcmVuY2UocmVmZXJlbmNlKSkge1xuICAgICAgbGV0IHZhbHVlID0gcmVmZXJlbmNlLnZhbHVlKCk7XG4gICAgICB0aGlzLmF0dHJpYnV0ZU1hbmFnZXIuc2V0QXR0cmlidXRlKGVudiwgZWxlbWVudCwgdmFsdWUsIHRoaXMubmFtZXNwYWNlKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgY2FjaGUgPSB0aGlzLmNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKHJlZmVyZW5jZSk7XG4gICAgICBsZXQgdmFsdWUgPSBjYWNoZS5wZWVrKCk7XG4gICAgICB0aGlzLmF0dHJpYnV0ZU1hbmFnZXIuc2V0QXR0cmlidXRlKGVudiwgZWxlbWVudCwgdmFsdWUsIHRoaXMubmFtZXNwYWNlKTtcbiAgICAgIHJldHVybiBuZXcgUGF0Y2hFbGVtZW50T3Bjb2RlKHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIHRvSlNPTigpOiBEaWN0PE9wdGlvbjxzdHJpbmc+PiB7XG4gICAgbGV0IHsgZWxlbWVudCwgbmFtZXNwYWNlLCBuYW1lLCBjYWNoZSB9ID0gdGhpcztcblxuICAgIGxldCBmb3JtYXR0ZWRFbGVtZW50ID0gZm9ybWF0RWxlbWVudChlbGVtZW50KTtcbiAgICBsZXQgbGFzdFZhbHVlID0gZXhwZWN0KGNhY2hlLCAnbXVzdCBzZXJpYWxpemUgYWZ0ZXIgZmx1c2gnKS5wZWVrKCkgYXMgc3RyaW5nO1xuXG4gICAgaWYgKG5hbWVzcGFjZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZWxlbWVudDogZm9ybWF0dGVkRWxlbWVudCxcbiAgICAgICAgdHlwZTogJ2F0dHJpYnV0ZScsXG4gICAgICAgIG5hbWVzcGFjZSxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgbGFzdFZhbHVlXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBlbGVtZW50OiBmb3JtYXR0ZWRFbGVtZW50LFxuICAgICAgdHlwZTogJ2F0dHJpYnV0ZScsXG4gICAgICBuYW1lc3BhY2U6IG5hbWVzcGFjZSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IG5hbWVzcGFjZSxcbiAgICAgIG5hbWUsXG4gICAgICBsYXN0VmFsdWVcbiAgICB9O1xuICB9XG59XG5cbmZ1bmN0aW9uIGZvcm1hdEVsZW1lbnQoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQpOiBzdHJpbmcge1xuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoYDwke2VsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpfSAvPmApO1xufVxuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuRHluYW1pY0F0dHJOUywgKHZtLCB7IG9wMTogX25hbWUsIG9wMjogX25hbWVzcGFjZSwgb3AzOiB0cnVzdGluZyB9KSA9PiB7XG4gIGxldCBuYW1lID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyhfbmFtZSk7XG4gIGxldCBuYW1lc3BhY2UgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKF9uYW1lc3BhY2UpO1xuICBsZXQgcmVmZXJlbmNlID0gdm0uc3RhY2sucG9wPFZlcnNpb25lZFJlZmVyZW5jZTxzdHJpbmc+PigpO1xuICB2bS5lbGVtZW50cygpLnNldER5bmFtaWNBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUsIHJlZmVyZW5jZSwgISF0cnVzdGluZyk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkR5bmFtaWNBdHRyLCAodm0sIHsgb3AxOiBfbmFtZSwgb3AyOiB0cnVzdGluZyB9KSA9PiB7XG4gIGxldCBuYW1lID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyhfbmFtZSk7XG4gIGxldCByZWZlcmVuY2UgPSB2bS5zdGFjay5wb3A8VmVyc2lvbmVkUmVmZXJlbmNlPHN0cmluZz4+KCk7XG4gIHZtLmVsZW1lbnRzKCkuc2V0RHluYW1pY0F0dHJpYnV0ZShuYW1lLCByZWZlcmVuY2UsICEhdHJ1c3RpbmcpO1xufSk7XG5cbmV4cG9ydCBjbGFzcyBQYXRjaEVsZW1lbnRPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJwYXRjaC1lbGVtZW50XCI7XG5cbiAgcHJpdmF0ZSBvcGVyYXRpb246IER5bmFtaWNBdHRyaWJ1dGU7XG5cbiAgY29uc3RydWN0b3Iob3BlcmF0aW9uOiBEeW5hbWljQXR0cmlidXRlKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnRhZyA9IG9wZXJhdGlvbi50YWc7XG4gICAgdGhpcy5vcGVyYXRpb24gPSBvcGVyYXRpb247XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVXBkYXRpbmdWTSkge1xuICAgIHRoaXMub3BlcmF0aW9uLnBhdGNoKHZtLmVudik7XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgbGV0IHsgX2d1aWQsIHR5cGUsIG9wZXJhdGlvbiB9ID0gdGhpcztcblxuICAgIHJldHVybiB7XG4gICAgICBndWlkOiBfZ3VpZCxcbiAgICAgIHR5cGUsXG4gICAgICBkZXRhaWxzOiBvcGVyYXRpb24udG9KU09OKClcbiAgICB9O1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZG9tLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsQUFBTyxTQUFFLEFBQWMsQUFBRSxzQkFBTSxBQUFlLEFBQUM7QUFPL0MsQUFBTyxTQUNMLEFBQWUsaUJBR2YsQUFBYyxnQkFJZCxBQUFhLGVBQ2IsQUFBTyxXQUFJLEFBQWdCLGtCQUMzQixBQUFVLEFBQ1gsa0JBQU0sQUFBb0IsQUFBQztBQUU1QixBQUFPLFNBQUUsQUFBYyxnQkFBRSxBQUFrQixBQUFFLDBCQUFNLEFBQWtCLEFBQUM7QUFHdEUsQUFBTyxTQUFFLEFBQU0sQUFBRSxjQUFNLEFBQU0sQUFBQztBQUM5QixBQUFPLFNBQUUsQUFBYyxBQUFZLHNCQUFNLEFBQWUsQUFBQztBQUV6RCxBQUFjLGVBQUMsQUFBRyxJQUFDLEdBQU8sWUFBRSxVQUFDLEFBQUUsQUFBRTtRQUFPLEFBQUksQUFBRSxZQUFYLEFBQUc7O0FBQ3BDLEFBQUUsT0FBQyxBQUFRLEFBQUUsV0FBQyxBQUFVLFdBQUMsQUFBRSxHQUFDLEFBQVMsVUFBQyxBQUFTLFVBQUMsQUFBSSxBQUFDLEFBQUMsQUFBQyxBQUN6RDtBQUFDLEFBQUMsQUFBQztBQUVILEFBQWMsZUFBQyxBQUFHLElBQUMsR0FBVSxlQUFFLFVBQUMsQUFBRSxBQUFFO1FBQU8sQUFBSSxBQUFFLGFBQVgsQUFBRzs7QUFDdkMsQUFBRSxPQUFDLEFBQVEsQUFBRSxXQUFDLEFBQWEsY0FBQyxBQUFFLEdBQUMsQUFBUyxVQUFDLEFBQVMsVUFBQyxBQUFJLEFBQUMsQUFBQyxBQUFDLEFBQzVEO0FBQUMsQUFBQyxBQUFDO0FBRUgsQUFBYyxlQUFDLEFBQUcsSUFBQyxHQUFjLG1CQUFFLFVBQUMsQUFBRSxBQUFFO1FBQU8sQUFBRyxBQUFFLFlBQVYsQUFBRzs7QUFDM0MsQUFBRSxPQUFDLEFBQVEsQUFBRSxXQUFDLEFBQVcsWUFBQyxBQUFFLEdBQUMsQUFBUyxVQUFDLEFBQVMsVUFBQyxBQUFHLEFBQUMsQUFBQyxBQUFDLEFBQ3pEO0FBQUMsQUFBQyxBQUFDO0FBRUgsQUFBYyxlQUFDLEFBQUcsSUFBQyxHQUE0QixpQ0FBRSxVQUFDLEFBQUUsQUFBRTtRQUFPLEFBQUcsQUFBRSxZQUFWLEFBQUc7O0FBQ3pELFFBQUksQUFBTyxVQUFHLEFBQUUsR0FBQyxBQUFTLFVBQUMsQUFBUyxVQUFDLEFBQUcsQUFBQyxBQUFDO0FBQzFDLFFBQUksQUFBVSxhQUFHLEFBQUUsR0FBQyxBQUFLLE1BQUMsQUFBRyxBQUFxQixBQUFDO0FBQ25ELEFBQUUsT0FBQyxBQUFRLEFBQUUsV0FBQyxBQUFXLFlBQUMsQUFBTyxTQUFFLEFBQVUsQUFBQyxBQUFDLEFBQ2pEO0FBQUMsQUFBQyxBQUFDO0FBRUgsQUFBYyxlQUFDLEFBQUcsSUFBQyxHQUFxQiwwQkFBRSxBQUFFO0FBQzFDLFFBQUksQUFBVSxhQUFHLEFBQUUsR0FBQyxBQUFLLE1BQUMsQUFBRyxBQUFxQixBQUFDO0FBQ25ELFFBQUksQUFBTyxVQUFHLEFBQUUsR0FBQyxBQUFLLE1BQUMsQUFBRyxBQUFxQixNQUFDLEFBQUssQUFBRSxBQUFDO0FBQ3hELEFBQUUsT0FBQyxBQUFRLEFBQUUsV0FBQyxBQUFXLFlBQUMsQUFBTyxTQUFFLEFBQVUsQUFBQyxBQUFDLEFBQ2pEO0FBQUMsQUFBQyxBQUFDO0FBRUgsQUFBYyxlQUFDLEFBQUcsSUFBQyxHQUFvQix5QkFBRSxBQUFFO0FBQ3pDLFFBQUksQUFBVSxhQUFHLEFBQUUsR0FBQyxBQUFLLE1BQUMsQUFBRyxBQUE2QixBQUFDO0FBQzNELFFBQUksQUFBYyxpQkFBRyxBQUFFLEdBQUMsQUFBSyxNQUFDLEFBQUcsQUFBa0MsQUFBQztBQUVwRSxRQUFJLEFBQXVCLEFBQUM7QUFDNUIsUUFBSSxBQUFnQyxBQUFDO0FBRXJDLEFBQUUsQUFBQyxRQUFDLEFBQWdCLGlCQUFDLEFBQVUsQUFBQyxBQUFDLGFBQUMsQUFBQztBQUNqQyxBQUFPLGtCQUFHLEFBQVUsV0FBQyxBQUFLLEFBQUUsQUFBQyxBQUMvQjtBQUFDLEFBQUMsQUFBSSxXQUFDLEFBQUM7QUFDTixZQUFJLEFBQUssUUFBRyxJQUFJLEFBQWMsZUFBQyxBQUFVLEFBQUMsQUFBQztBQUMzQyxBQUFPLGtCQUFHLEFBQUssTUFBQyxBQUFJLEFBQUUsQUFBQztBQUN2QixBQUFFLFdBQUMsQUFBVSxXQUFDLElBQUksQUFBTSxPQUFDLEFBQUssQUFBQyxBQUFDLEFBQUMsQUFDbkM7QUFBQztBQUVELEFBQUUsQUFBQyxRQUFDLEFBQWdCLGlCQUFDLEFBQWMsQUFBQyxBQUFDLGlCQUFDLEFBQUM7QUFDckMsQUFBVyxzQkFBRyxBQUFjLGVBQUMsQUFBSyxBQUFFLEFBQUMsQUFDdkM7QUFBQyxBQUFDLEFBQUksV0FBQyxBQUFDO0FBQ04sWUFBSSxBQUFLLFNBQUcsSUFBSSxBQUFjLGVBQUMsQUFBYyxBQUFDLEFBQUM7QUFDL0MsQUFBVyxzQkFBRyxBQUFLLE9BQUMsQUFBSSxBQUFFLEFBQUM7QUFDM0IsQUFBRSxXQUFDLEFBQVUsV0FBQyxJQUFJLEFBQU0sT0FBQyxBQUFLLEFBQUMsQUFBQyxBQUFDLEFBQ25DO0FBQUM7QUFFRCxBQUFFLE9BQUMsQUFBUSxBQUFFLFdBQUMsQUFBaUIsa0JBQUMsQUFBTyxTQUFFLEFBQVcsQUFBQyxBQUFDLEFBQ3hEO0FBQUMsQUFBQyxBQUFDO0FBRUgsQUFBYyxlQUFDLEFBQUcsSUFBQyxHQUFtQjtBQUFFLEFBQUUsV0FBSSxBQUFFLEdBQUMsQUFBUSxBQUFFLFdBQUMsQUFBZ0IsQUFBRSxBQUFDLEFBQUMsQUFFaEY7Ozs7QUFBQTs7O0FBQ1UsYUFBSSxPQUFnQyxBQUFJLEFBQUM7QUFDekMsYUFBTyxVQUFHLEFBQUksQUFBQyxBQXFCekI7QUFBQzs7d0JBbkJDLEFBQU0seUJBQUMsQUFBNEI7QUFDakMsQUFBSSxZQUFFLEFBQUksT0FBYyxBQUFJLEFBQUM7WUFBakIsQUFBTyxBQUFFOztBQUVyQixBQUFFLEFBQUMsWUFBQyxBQUFJLFNBQUssQUFBSSxBQUFDLE1BQUMsQUFBSSxPQUFHLEFBQUksS0FBQyxBQUFJLE9BQUcsQUFBRSxBQUFDO0FBRXpDLEFBQUksYUFBQyxBQUFJLEtBQUMsQUFBUyxBQUFDLEFBQUM7QUFDckIsQUFBSSxhQUFDLEFBQU8sVUFBRyxBQUFPLFdBQUksQUFBZ0IsaUJBQUMsQUFBUyxBQUFDLEFBQUMsQUFDeEQ7QUFBQzs7d0JBRUQsQUFBVztBQUNULEFBQUksWUFBRSxBQUFJLE9BQWMsQUFBSSxBQUFDO1lBQWpCLEFBQU8sQUFBRTs7QUFFckIsQUFBRSxBQUFDLFlBQUMsQ0FBQyxBQUFJLEFBQUMsTUFBQyxBQUFNLE9BQUMsQUFBYyxBQUFDO0FBRWpDLEFBQUUsQUFBQyxZQUFDLEFBQU8sQUFBQyxTQUFDLEFBQU0sT0FBQyxBQUFrQixtQkFBQyxBQUFNLE9BQUMsQUFBVyxZQUFDLEFBQUksQUFBQyxBQUFDLEFBQUM7QUFFakUsQUFBTSxlQUFDLElBQUksQUFBa0IsbUJBQUMsQUFBSSxBQUFDLEFBQUMsQUFDdEM7QUFBQyxBQUVGLEFBRUQ7Ozs7O0lBQXlCOzs7QUFJdkIsZ0NBQVksQUFBeUI7OztxREFDbkMsQUFBSyxBQUFFLEFBQUM7O0FBSEYsY0FBSSxPQUF3QixBQUFFLEFBQUM7QUFJckMsQUFBSSxjQUFDLEFBQUcsTUFBRyxBQUFhLGNBQUMsQUFBSSxBQUFDLEFBQUM7QUFDL0IsQUFBSSxjQUFDLEFBQUksT0FBRyxBQUFJLEFBQUMsQUFDbkI7O0FBQUM7O2lDQUVTLEFBQU87QUFDZixBQUFNLGVBQUMsQUFBVyxZQUFDLEFBQUksS0FBQyxBQUFJLEFBQUMsQUFBQyxBQUNoQztBQUFDLEFBQ0Y7OztFQWJnQyxBQUErQjs7QUFlaEUscUJBQXFCLEFBQXlCO0FBQzVDLFFBQUksQUFBRyxNQUFhLEFBQUUsQUFBQztBQUV2QixBQUFHLEFBQUMsU0FBQyxJQUFJLEFBQUMsSUFBRyxBQUFDLEdBQUUsQUFBQyxJQUFHLEFBQUksS0FBQyxBQUFNLFFBQUUsQUFBQyxBQUFFLEtBQUUsQUFBQztBQUNyQyxZQUFJLEFBQUssUUFBOEMsQUFBSSxLQUFDLEFBQUMsQUFBQyxHQUFDLEFBQUssQUFBRSxBQUFDO0FBQ3ZFLEFBQUUsQUFBQyxZQUFDLEFBQUssVUFBSyxBQUFLLFNBQUksQUFBSyxVQUFLLEFBQUksUUFBSSxBQUFLLFVBQUssQUFBUyxBQUFDLFdBQUMsQUFBRyxJQUFDLEFBQUksS0FBQyxBQUFLLEFBQUMsQUFBQyxBQUNoRjtBQUFDO0FBRUQsQUFBTSxXQUFFLEFBQUcsSUFBQyxBQUFNLFdBQUssQUFBQyxBQUFDLENBQWxCLEdBQXFCLEFBQUksT0FBRyxBQUFHLElBQUMsQUFBSSxLQUFDLEFBQUcsQUFBQyxBQUFDLEFBQ25EO0FBQUM7QUFFRCxBQUFNO0FBSUoscUNBQW9CLEFBQWdCOzs7QUFBaEIsYUFBRyxNQUFILEFBQUcsQUFBYTtBQUg1QixhQUFPLFVBQTZCLEFBQUksQUFBQztBQUN6QyxhQUFTLFlBQXNCLEFBQUksQUFBQyxBQUc1QztBQUFDOztzQ0FFRCxBQUFrQixpREFBQyxBQUF1QixTQUFFLEFBQVksTUFBRSxBQUFhO0FBQ3JFLEFBQUUsQUFBQyxZQUFDLEFBQUksU0FBSyxBQUFPLEFBQUMsU0FBQyxBQUFDO0FBQ3JCLEFBQUksaUJBQUMsQUFBUSxTQUFDLEFBQWtCLG1CQUFDLEFBQU0sT0FBQyxBQUFLLEFBQUMsQUFBQyxBQUFDLEFBQ2xEO0FBQUMsQUFBQyxBQUFJLGVBQUMsQUFBQztBQUNOLEFBQUksaUJBQUMsQUFBRyxJQUFDLEFBQW1CLEFBQUUsc0JBQUMsQUFBWSxhQUFDLEFBQU8sU0FBRSxBQUFJLE1BQUUsQUFBSyxBQUFDLEFBQUMsQUFDcEU7QUFBQyxBQUNIO0FBQUM7O3NDQUVELEFBQW9CLHFEQUFDLEFBQXVCLFNBQUUsQUFBaUIsV0FBRSxBQUFZLE1BQUUsQUFBYTtBQUMxRixBQUFJLGFBQUMsQUFBRyxJQUFDLEFBQW1CLEFBQUUsc0JBQUMsQUFBWSxhQUFDLEFBQU8sU0FBRSxBQUFJLE1BQUUsQUFBSyxPQUFFLEFBQVMsQUFBQyxBQUFDLEFBQy9FO0FBQUM7O3NDQUVELEFBQW1CLG1EQUFDLEFBQXVCLFNBQUUsQUFBWSxNQUFFLEFBQTRCLFdBQUUsQUFBbUI7QUFDMUcsQUFBRSxBQUFDLFlBQUMsQUFBSSxTQUFLLEFBQU8sQUFBQyxTQUFDLEFBQUM7QUFDckIsQUFBSSxpQkFBQyxBQUFRLFNBQUMsQUFBUyxBQUFDLEFBQUMsQUFDM0I7QUFBQyxBQUFDLEFBQUksZUFBQyxBQUFDO0FBQ04sZ0JBQUksQUFBZ0IsbUJBQUcsQUFBSSxLQUFDLEFBQUcsSUFBQyxBQUFZLGFBQUMsQUFBTyxTQUFFLEFBQUksTUFBRSxBQUFVLEFBQUMsQUFBQztBQUN4RSxnQkFBSSxBQUFTLFlBQUcsSUFBSSxBQUFnQixpQkFBQyxBQUFPLFNBQUUsQUFBZ0Isa0JBQUUsQUFBSSxNQUFFLEFBQVMsQUFBQyxBQUFDO0FBRWpGLEFBQUksaUJBQUMsQUFBWSxhQUFDLEFBQVMsQUFBQyxBQUFDLEFBQy9CO0FBQUMsQUFDSDtBQUFDOztzQ0FFRCxBQUFxQix1REFBQyxBQUF1QixTQUFFLEFBQTJCLFdBQUUsQUFBWSxNQUFFLEFBQWdDLFdBQUUsQUFBbUI7QUFDN0ksWUFBSSxBQUFnQixtQkFBRyxBQUFJLEtBQUMsQUFBRyxJQUFDLEFBQVksYUFBQyxBQUFPLFNBQUUsQUFBSSxNQUFFLEFBQVUsWUFBRSxBQUFTLEFBQUMsQUFBQztBQUNuRixZQUFJLEFBQVcsY0FBRyxJQUFJLEFBQWdCLGlCQUFDLEFBQU8sU0FBRSxBQUFnQixrQkFBRSxBQUFJLE1BQUUsQUFBUyxXQUFFLEFBQVMsQUFBQyxBQUFDO0FBRTlGLEFBQUksYUFBQyxBQUFZLGFBQUMsQUFBVyxBQUFDLEFBQUMsQUFDakM7QUFBQzs7c0NBRUQsQUFBSyx1QkFBQyxBQUF1QixTQUFFLEFBQU07QUFDbkMsQUFBSSxZQUFFLEFBQUcsQUFBRSxNQUFHLEFBQUUsQUFBQyxBQUNqQixBQUFJO1lBQUUsQUFBTyxVQUFnQixBQUFJLEFBQUM7WUFBbkIsQUFBUyxBQUFFOztBQUUxQixBQUFHLEFBQUMsYUFBQyxJQUFJLEFBQUMsSUFBRyxBQUFDLEdBQUUsQUFBTyxXQUFJLEFBQUMsSUFBRyxBQUFPLFFBQUMsQUFBTSxRQUFFLEFBQUMsQUFBRSxLQUFFLEFBQUM7QUFDbkQsQUFBRSxlQUFDLEFBQVUsV0FBQyxBQUFPLFFBQUMsQUFBQyxBQUFDLEFBQUMsQUFBQyxBQUM1QjtBQUFDO0FBRUQsQUFBRSxBQUFDLFlBQUMsQUFBUyxBQUFDLFdBQUMsQUFBQztBQUNkLGdCQUFJLEFBQWdCLG1CQUFHLEFBQUcsSUFBQyxBQUFZLGFBQUMsQUFBTyxTQUFFLEFBQU8sU0FBRSxBQUFLLEFBQUMsQUFBQztBQUNqRSxnQkFBSSxBQUFTLFlBQUcsSUFBSSxBQUFnQixpQkFBQyxBQUFPLFNBQUUsQUFBZ0Isa0JBQUUsQUFBTyxTQUFFLEFBQVMsVUFBQyxBQUFXLEFBQUUsQUFBQyxBQUFDO0FBQ2xHLGdCQUFJLEFBQU0sU0FBRyxBQUFTLFVBQUMsQUFBSyxNQUFDLEFBQUcsQUFBQyxBQUFDO0FBRWxDLEFBQUUsQUFBQyxnQkFBQyxBQUFNLEFBQUMsUUFBQyxBQUFDO0FBQ1gsQUFBRSxtQkFBQyxBQUFVLFdBQUMsQUFBTSxBQUFDLEFBQUMsQUFDeEI7QUFBQyxBQUNIO0FBQUM7QUFFRCxBQUFJLGFBQUMsQUFBTyxVQUFHLEFBQUksQUFBQztBQUNwQixBQUFJLGFBQUMsQUFBUyxZQUFHLEFBQUksQUFBQyxBQUN4QjtBQUFDOztzQ0FFTyxBQUFRLDZCQUFDLEFBQTRCO0FBQzNDLEFBQUksWUFBRSxBQUFTLEFBQUUsWUFBRyxBQUFJLEFBQUM7O0FBRXpCLEFBQUUsQUFBQyxZQUFDLENBQUMsQUFBUyxBQUFDLFdBQUMsQUFBQztBQUNmLEFBQVMsd0JBQUcsQUFBSSxLQUFDLEFBQVMsWUFBRyxJQUFJLEFBQVMsQUFBRSxBQUFDLEFBQy9DO0FBQUM7QUFFRCxBQUFTLGtCQUFDLEFBQU0sT0FBQyxBQUFTLEFBQUMsQUFBQyxBQUM5QjtBQUFDOztzQ0FFTyxBQUFZLHFDQUFDLEFBQW9CO0FBQ3ZDLFlBQUksQUFBTSxTQUFHLEFBQVMsVUFBQyxBQUFLLE1BQUMsQUFBSSxLQUFDLEFBQUcsQUFBQyxBQUFDO0FBRXZDLEFBQUUsQUFBQyxZQUFDLEFBQU0sQUFBQztBQUFDLEFBQUMsQUFDWCxBQUFJLGdCQUFFLEFBQU8sQUFBRSxVQUFHLEFBQUksQUFBQzs7QUFFdkIsQUFBRSxBQUFDLGdCQUFDLENBQUMsQUFBTyxBQUFDLFNBQUMsQUFBQztBQUNiLEFBQU8sMEJBQUcsQUFBSSxLQUFDLEFBQU8sVUFBRyxBQUFFLEFBQUMsQUFDOUI7QUFBQztBQUVELEFBQU8sb0JBQUMsQUFBSSxLQUFDLEFBQU0sQUFBQyxBQUFDLEFBQ3ZCO0FBQUMsQUFDSDtBQUFDLEFBQ0Y7Ozs7QUFFRCxBQUFNO0FBS0osd0NBQW9CLEFBQWdCOzs7QUFBaEIsYUFBRyxNQUFILEFBQUcsQUFBYTtBQUo1QixhQUFjLGlCQUFxQixBQUFJLEFBQUM7QUFDeEMsYUFBVSxhQUF3QixBQUFJLEFBQUM7QUFDdkMsYUFBUyxZQUFzQixBQUFJLEFBQUMsQUFHNUM7QUFBQzs7eUNBRUQsQUFBa0IsaURBQUMsQUFBdUIsU0FBRSxBQUFZLE1BQUUsQUFBYTtBQUNyRSxBQUFFLEFBQUMsWUFBQyxBQUFJLFNBQUssQUFBTyxBQUFDLFNBQUMsQUFBQztBQUNyQixBQUFJLGlCQUFDLEFBQVEsU0FBQyxBQUFrQixtQkFBQyxBQUFNLE9BQUMsQUFBSyxBQUFDLEFBQUMsQUFBQyxBQUNsRDtBQUFDLEFBQUMsQUFBSSxlQUFDLEFBQUUsQUFBQyxJQUFDLEFBQUksS0FBQyxBQUFrQixtQkFBQyxBQUFJLEFBQUMsQUFBQyxPQUFDLEFBQUM7QUFDekMsQUFBSSxpQkFBQyxBQUFZLGFBQUMsQUFBSSxNQUFFLElBQUksQUFBZSxnQkFBQyxBQUFPLFNBQUUsQUFBSSxNQUFFLEFBQUssQUFBQyxBQUFDLEFBQUMsQUFDckU7QUFBQyxBQUNIO0FBQUM7O3lDQUVELEFBQW9CLHFEQUFDLEFBQXVCLFNBQUUsQUFBaUIsV0FBRSxBQUFZLE1BQUUsQUFBYTtBQUMxRixBQUFFLEFBQUMsWUFBQyxBQUFJLEtBQUMsQUFBa0IsbUJBQUMsQUFBSSxBQUFDLEFBQUMsT0FBQyxBQUFDO0FBQ2xDLEFBQUksaUJBQUMsQUFBWSxhQUFDLEFBQUksTUFBRSxJQUFJLEFBQWUsZ0JBQUMsQUFBTyxTQUFFLEFBQUksTUFBRSxBQUFLLE9BQUUsQUFBUyxBQUFDLEFBQUMsQUFBQyxBQUNoRjtBQUFDLEFBQ0g7QUFBQzs7eUNBRUQsQUFBbUIsbURBQUMsQUFBdUIsU0FBRSxBQUFZLE1BQUUsQUFBZ0MsV0FBRSxBQUFtQjtBQUM5RyxBQUFFLEFBQUMsWUFBQyxBQUFJLFNBQUssQUFBTyxBQUFDLFNBQUMsQUFBQztBQUNyQixBQUFJLGlCQUFDLEFBQVEsU0FBQyxBQUFTLEFBQUMsQUFBQyxBQUMzQjtBQUFDLEFBQUMsQUFBSSxlQUFDLEFBQUUsQUFBQyxJQUFDLEFBQUksS0FBQyxBQUFrQixtQkFBQyxBQUFJLEFBQUMsQUFBQyxPQUFDLEFBQUM7QUFDekMsZ0JBQUksQUFBZ0IsbUJBQUcsQUFBSSxLQUFDLEFBQUcsSUFBQyxBQUFZLGFBQUMsQUFBTyxTQUFFLEFBQUksTUFBRSxBQUFVLEFBQUMsQUFBQztBQUN4RSxnQkFBSSxBQUFTLFlBQUcsSUFBSSxBQUFnQixpQkFBQyxBQUFPLFNBQUUsQUFBZ0Isa0JBQUUsQUFBSSxNQUFFLEFBQVMsQUFBQyxBQUFDO0FBRWpGLEFBQUksaUJBQUMsQUFBWSxhQUFDLEFBQUksTUFBRSxBQUFTLEFBQUMsQUFBQyxBQUNyQztBQUFDLEFBQ0g7QUFBQzs7eUNBRUQsQUFBcUIsdURBQUMsQUFBdUIsU0FBRSxBQUEyQixXQUFFLEFBQVksTUFBRSxBQUFnQyxXQUFFLEFBQW1CO0FBQzdJLEFBQUUsQUFBQyxZQUFDLEFBQUksS0FBQyxBQUFrQixtQkFBQyxBQUFJLEFBQUMsQUFBQyxPQUFDLEFBQUM7QUFDbEMsZ0JBQUksQUFBZ0IsbUJBQUcsQUFBSSxLQUFDLEFBQUcsSUFBQyxBQUFZLGFBQUMsQUFBTyxTQUFFLEFBQUksTUFBRSxBQUFVLFlBQUUsQUFBUyxBQUFDLEFBQUM7QUFDbkYsZ0JBQUksQUFBVyxjQUFHLElBQUksQUFBZ0IsaUJBQUMsQUFBTyxTQUFFLEFBQWdCLGtCQUFFLEFBQUksTUFBRSxBQUFTLFdBQUUsQUFBUyxBQUFDLEFBQUM7QUFFOUYsQUFBSSxpQkFBQyxBQUFZLGFBQUMsQUFBSSxNQUFFLEFBQVcsQUFBQyxBQUFDLEFBQ3ZDO0FBQUMsQUFDSDtBQUFDOzt5Q0FFRCxBQUFLLHVCQUFDLEFBQXVCLFNBQUUsQUFBTTtBQUNuQyxBQUFJLFlBQUUsQUFBRyxBQUFFLE1BQUcsQUFBSSxBQUFDLEFBQ25CLEFBQUk7WUFBRSxBQUFVO1lBQUUsQUFBUyxBQUFFLFlBQUcsQUFBSSxBQUFDOztBQUVyQyxBQUFHLEFBQUMsYUFBQyxJQUFJLEFBQUMsSUFBRyxBQUFDLEdBQUUsQUFBVSxjQUFJLEFBQUMsSUFBRyxBQUFVLFdBQUMsQUFBTSxRQUFFLEFBQUMsQUFBRSxLQUFFLEFBQUM7QUFDekQsZ0JBQUksQUFBTSxTQUFHLEFBQVUsV0FBQyxBQUFDLEFBQUMsR0FBQyxBQUFLLE1BQUMsQUFBRyxBQUFDLEFBQUM7QUFFdEMsQUFBRSxBQUFDLGdCQUFDLEFBQU0sQUFBQyxRQUFDLEFBQUM7QUFDWCxBQUFFLG1CQUFDLEFBQVUsV0FBQyxBQUFNLEFBQUMsQUFBQyxBQUN4QjtBQUFDLEFBQ0g7QUFBQztBQUVELEFBQUUsQUFBQyxZQUFDLEFBQVMsQUFBQyxXQUFDLEFBQUM7QUFDZCxnQkFBSSxBQUFnQixtQkFBRyxBQUFHLElBQUMsQUFBWSxhQUFDLEFBQU8sU0FBRSxBQUFPLFNBQUUsQUFBSyxBQUFDLEFBQUM7QUFDakUsZ0JBQUksQUFBUyxZQUFHLElBQUksQUFBZ0IsaUJBQUMsQUFBTyxTQUFFLEFBQWdCLGtCQUFFLEFBQU8sU0FBRSxBQUFTLFVBQUMsQUFBVyxBQUFFLEFBQUMsQUFBQztBQUNsRyxnQkFBSSxBQUFNLFVBQUcsQUFBUyxVQUFDLEFBQUssTUFBQyxBQUFHLEFBQUMsQUFBQztBQUVsQyxBQUFFLEFBQUMsZ0JBQUMsQUFBTSxBQUFDLFNBQUMsQUFBQztBQUNYLEFBQUUsbUJBQUMsQUFBVSxXQUFDLEFBQU0sQUFBQyxBQUFDLEFBQ3hCO0FBQUMsQUFDSDtBQUFDLEFBQ0g7QUFBQzs7eUNBRU8sQUFBa0IsaURBQUMsQUFBWTtBQUNyQyxBQUFNLGVBQUMsQ0FBQyxBQUFJLEtBQUMsQUFBYyxrQkFBSSxBQUFJLEtBQUMsQUFBYyxlQUFDLEFBQU8sUUFBQyxBQUFJLEFBQUMsVUFBSyxDQUFDLEFBQUMsQUFBQyxBQUMxRTtBQUFDOzt5Q0FFTyxBQUFRLDZCQUFDLEFBQWdDO0FBQy9DLEFBQUksWUFBRSxBQUFTLEFBQUUsWUFBRyxBQUFJLEFBQUM7O0FBRXpCLEFBQUUsQUFBQyxZQUFDLENBQUMsQUFBUyxBQUFDLFdBQUMsQUFBQztBQUNmLEFBQVMsd0JBQUcsQUFBSSxLQUFDLEFBQVMsWUFBRyxJQUFJLEFBQVMsQUFBRSxBQUFDLEFBQy9DO0FBQUM7QUFFRCxBQUFTLGtCQUFDLEFBQU0sT0FBQyxBQUFTLEFBQUMsQUFBQyxBQUM5QjtBQUFDOzt5Q0FFTyxBQUFZLHFDQUFDLEFBQVksTUFBRSxBQUFvQjtBQUNyRCxBQUFJLFlBQUUsQUFBYztZQUFFLEFBQVUsQUFBRSxhQUFHLEFBQUksQUFBQzs7QUFFMUMsQUFBRSxBQUFDLFlBQUMsQ0FBQyxBQUFjLEFBQUMsZ0JBQUMsQUFBQztBQUNwQixBQUFjLDZCQUFHLEFBQUksS0FBQyxBQUFjLGlCQUFHLEFBQUUsQUFBQztBQUMxQyxBQUFVLHlCQUFHLEFBQUksS0FBQyxBQUFVLGFBQUcsQUFBRSxBQUFDLEFBQ3BDO0FBQUM7QUFFRCxBQUFjLHVCQUFDLEFBQUksS0FBQyxBQUFJLEFBQUMsQUFBQztBQUMxQixBQUFVLG1CQUFDLEFBQUksS0FBQyxBQUFTLEFBQUMsQUFBQyxBQUM3QjtBQUFDLEFBQ0Y7Ozs7QUFFRCxBQUFjLGVBQUMsQUFBRyxJQUFDLEdBQWUsb0JBQUUsQUFBRTtBQUNwQyxRQUFJLEFBQUssUUFBRyxBQUFFLEdBQUMsQUFBUSxBQUFFLEFBQUM7QUFFMUIsUUFBSSxBQUFNLFNBQUcsQUFBNkIsQUFBQztBQUMzQyxBQUFLLFVBQUMsQUFBZ0IsaUJBQUMsQUFBTSxBQUFDLFFBQUMsQUFBSyxNQUFDLEFBQUssTUFBQyxBQUFrQixtQkFBQyxBQUFNLEFBQUMsU0FBRSxBQUFFLEFBQUMsQUFBQztBQUMzRSxBQUFLLFVBQUMsQUFBWSxBQUFFLEFBQUMsQUFDdkI7QUFBQyxBQUFDLEFBQUM7QUFFSCxBQUFjLGVBQUMsQUFBRyxJQUFDLEdBQWU7QUFBRSxBQUFFLFdBQUksQUFBRSxHQUFDLEFBQVEsQUFBRSxXQUFDLEFBQVksQUFBRSxBQUFDLEFBQUM7O0FBRXhFLEFBQWMsZUFBQyxBQUFHLElBQUMsR0FBYSxrQkFBRSxVQUFDLEFBQUUsQUFBRTtRQUFPLEFBQUssY0FBVixBQUFHO1FBQWMsQUFBTSxlQUFYLEFBQUc7UUFBZSxBQUFVLEFBQUUsbUJBQWpCLEFBQUc7O0FBQ25FLFFBQUksQUFBSSxPQUFHLEFBQUUsR0FBQyxBQUFTLFVBQUMsQUFBUyxVQUFDLEFBQUssQUFBQyxBQUFDO0FBQ3pDLFFBQUksQUFBSyxRQUFHLEFBQUUsR0FBQyxBQUFTLFVBQUMsQUFBUyxVQUFDLEFBQU0sQUFBQyxBQUFDO0FBRTNDLEFBQUUsQUFBQyxRQUFDLEFBQVUsQUFBQyxZQUFDLEFBQUM7QUFDZixZQUFJLEFBQVMsWUFBRyxBQUFFLEdBQUMsQUFBUyxVQUFDLEFBQVMsVUFBQyxBQUFVLEFBQUMsQUFBQztBQUNuRCxBQUFFLFdBQUMsQUFBUSxBQUFFLFdBQUMsQUFBb0IscUJBQUMsQUFBUyxXQUFFLEFBQUksTUFBRSxBQUFLLEFBQUMsQUFBQyxBQUM3RDtBQUFDLEFBQUMsQUFBSSxXQUFDLEFBQUM7QUFDTixBQUFFLFdBQUMsQUFBUSxBQUFFLFdBQUMsQUFBa0IsbUJBQUMsQUFBSSxNQUFFLEFBQUssQUFBQyxBQUFDLEFBQ2hEO0FBQUMsQUFDSDtBQUFDLEFBQUMsQUFBQztBQUVILEFBQWMsZUFBQyxBQUFHLElBQUMsR0FBVyxnQkFBRSxVQUFDLEFBQUUsQUFBRTtRQUFPLEFBQVEsQUFBRSxpQkFBZixBQUFHOztBQUN4QyxRQUFJLEFBQU8sVUFBRyxBQUFFLEdBQUMsQUFBUyxVQUFDLEFBQVEsU0FBMEIsQUFBUSxBQUFDLEFBQUM7QUFDdkUsUUFBSSxBQUFLLFFBQUcsQUFBRSxHQUFDLEFBQUssQUFBQztBQUNyQixRQUFJLEFBQUksT0FBRyxBQUFLLE1BQUMsQUFBRyxBQUFhLEFBQUM7QUFDbEMsUUFBSSxBQUFHLE1BQUcsQUFBSSxLQUFDLEFBQUcsQUFBQyxBQUNuQixBQUFJOzt1QkFBOEMsQUFBRSxHQUFDLEFBQVEsQUFBRSxBQUFDO1FBQTVDLEFBQU8sdUJBQXJCLEFBQVk7UUFBVyxBQUFnQixBQUFFOztBQUMvQyxRQUFJLEFBQVksZUFBRyxBQUFFLEdBQUMsQUFBWSxBQUFFLEFBQUM7QUFDckMsUUFBSSxBQUFRLFdBQUcsQUFBTyxRQUFDLEFBQU0sT0FBQyxBQUFtQyxTQUFFLEFBQUksTUFBRSxBQUFZLGNBQUUsQUFBZ0IsQUFBQyxBQUFDO0FBRXpHLEFBQUksU0FBQyxBQUFLLEFBQUUsQUFBQztBQUViLEFBQUUsT0FBQyxBQUFHLElBQUMsQUFBdUIsd0JBQUMsQUFBUSxVQUFFLEFBQU8sQUFBQyxBQUFDO0FBQ2xELFFBQUksQUFBVSxhQUFHLEFBQU8sUUFBQyxBQUFhLGNBQUMsQUFBUSxBQUFDLEFBQUM7QUFFakQsQUFBRSxBQUFDLFFBQUMsQUFBVSxBQUFDLFlBQUMsQUFBQztBQUNmLEFBQUUsV0FBQyxBQUFjLGVBQUMsQUFBVSxBQUFDLEFBQUMsQUFDaEM7QUFBQztBQUVELEFBQUUsT0FBQyxBQUFVLFdBQUMsSUFBSSxBQUFvQixxQkFDcEMsQUFBRyxLQUNILEFBQU8sU0FDUCxBQUFRLEFBQ1QsQUFBQyxBQUFDLEFBQ0w7QUFBQyxBQUFDLEFBQUM7QUFFSCxBQUFNLFdBQTRCOzs7QUFJaEMsa0NBQ1MsQUFBUSxLQUNQLEFBQWdDLFNBQ2hDLEFBQWdCOzs7c0RBRXhCLEFBQUssQUFBRSxBQUFDOztBQUpELGVBQUcsTUFBSCxBQUFHLEFBQUs7QUFDUCxlQUFPLFVBQVAsQUFBTyxBQUF5QjtBQUNoQyxlQUFRLFdBQVIsQUFBUSxBQUFRO0FBTm5CLGVBQUksT0FBRyxBQUFpQixBQUFDO0FBUzlCLEFBQUksZUFBQyxBQUFXLGNBQUcsQUFBRyxJQUFDLEFBQUssQUFBRSxBQUFDLEFBQ2pDOztBQUFDOzttQ0FFRCxBQUFRLDZCQUFDLEFBQWM7QUFDckIsQUFBSSxZQUFFLEFBQU87WUFBRSxBQUFRO1lBQUUsQUFBRyxNQUFrQixBQUFJLEFBQUM7WUFBckIsQUFBVyxBQUFFOztBQUUzQyxBQUFFLEFBQUMsWUFBQyxDQUFDLEFBQUcsSUFBQyxBQUFRLFNBQUMsQUFBVyxBQUFDLEFBQUMsY0FBQyxBQUFDO0FBQy9CLEFBQUUsZUFBQyxBQUFHLElBQUMsQUFBc0IsdUJBQUMsQUFBUSxVQUFFLEFBQU8sQUFBQyxBQUFDO0FBQ2pELEFBQUksaUJBQUMsQUFBVyxjQUFHLEFBQUcsSUFBQyxBQUFLLEFBQUUsQUFBQyxBQUNqQztBQUFDLEFBQ0g7QUFBQyxBQUNGOzs7RUFyQnlDLEFBQWM7QUE0QnhELEFBQU07QUFDSiw2QkFDVSxBQUF1QixTQUN4QixBQUFZLE1BQ1gsQUFBYSxPQUNiLEFBQWtCOzs7QUFIbEIsYUFBTyxVQUFQLEFBQU8sQUFBZ0I7QUFDeEIsYUFBSSxPQUFKLEFBQUksQUFBUTtBQUNYLGFBQUssUUFBTCxBQUFLLEFBQVE7QUFDYixhQUFTLFlBQVQsQUFBUyxBQUFTLEFBQ3pCO0FBQUM7OzhCQUVKLEFBQUssdUJBQUMsQUFBZ0I7QUFDcEIsQUFBRyxZQUFDLEFBQW1CLEFBQUUsc0JBQUMsQUFBWSxhQUFDLEFBQUksS0FBQyxBQUFPLFNBQUUsQUFBSSxLQUFDLEFBQUksTUFBRSxBQUFJLEtBQUMsQUFBSyxPQUFFLEFBQUksS0FBQyxBQUFTLEFBQUMsQUFBQztBQUM1RixBQUFNLGVBQUMsQUFBSSxBQUFDLEFBQ2Q7QUFBQyxBQUNGOzs7O0FBRUQsQUFBTTtBQUtKLDhCQUNVLEFBQXVCLFNBQ3ZCLEFBQWtDLGtCQUNuQyxBQUFZLE1BQ1gsQUFBNEIsV0FDNUIsQUFBNEI7OztBQUo1QixhQUFPLFVBQVAsQUFBTyxBQUFnQjtBQUN2QixhQUFnQixtQkFBaEIsQUFBZ0IsQUFBa0I7QUFDbkMsYUFBSSxPQUFKLEFBQUksQUFBUTtBQUNYLGFBQVMsWUFBVCxBQUFTLEFBQW1CO0FBQzVCLGFBQVMsWUFBVCxBQUFTLEFBQW1CO0FBVDlCLGFBQUssUUFBbUMsQUFBSSxBQUFDO0FBV25ELEFBQUksYUFBQyxBQUFHLE1BQUcsQUFBUyxVQUFDLEFBQUcsQUFBQyxBQUMzQjtBQUFDOzsrQkFFRCxBQUFLLHVCQUFDLEFBQWdCO0FBQ3BCLEFBQUksWUFBRSxBQUFPO1lBQUUsQUFBSyxBQUFFLFFBQUcsQUFBSSxBQUFDOztBQUU5QixZQUFJLEFBQUssUUFBRyxBQUFLLE1BQUMsQUFBVSxBQUFFLEFBQUM7QUFFL0IsQUFBRSxBQUFDLFlBQUMsQUFBVSxXQUFDLEFBQUssQUFBQyxBQUFDLFFBQUMsQUFBQztBQUN0QixBQUFJLGlCQUFDLEFBQWdCLGlCQUFDLEFBQWUsZ0JBQUMsQUFBRyxLQUFFLEFBQXlELFNBQUUsQUFBSyxPQUFFLEFBQUksS0FBQyxBQUFTLEFBQUMsQUFBQyxBQUMvSDtBQUFDLEFBQ0g7QUFBQzs7K0JBRUQsQUFBSyx1QkFBQyxBQUFnQjtBQUNwQixBQUFJLFlBQUUsQUFBUztZQUFFLEFBQU8sQUFBRSxVQUFHLEFBQUksQUFBQzs7QUFFbEMsQUFBRSxBQUFDLFlBQUMsQUFBZ0IsaUJBQUMsQUFBUyxBQUFDLEFBQUMsWUFBQyxBQUFDO0FBQ2hDLGdCQUFJLEFBQUssUUFBRyxBQUFTLFVBQUMsQUFBSyxBQUFFLEFBQUM7QUFDOUIsQUFBSSxpQkFBQyxBQUFnQixpQkFBQyxBQUFZLGFBQUMsQUFBRyxLQUFFLEFBQU8sU0FBRSxBQUFLLE9BQUUsQUFBSSxLQUFDLEFBQVMsQUFBQyxBQUFDO0FBQ3hFLEFBQU0sbUJBQUMsQUFBSSxBQUFDLEFBQ2Q7QUFBQyxBQUFDLEFBQUksZUFBQyxBQUFDO0FBQ04sZ0JBQUksQUFBSyxRQUFHLEFBQUksS0FBQyxBQUFLLFFBQUcsSUFBSSxBQUFjLGVBQUMsQUFBUyxBQUFDLEFBQUM7QUFDdkQsZ0JBQUksQUFBSyxVQUFHLEFBQUssTUFBQyxBQUFJLEFBQUUsQUFBQztBQUN6QixBQUFJLGlCQUFDLEFBQWdCLGlCQUFDLEFBQVksYUFBQyxBQUFHLEtBQUUsQUFBTyxTQUFFLEFBQUssU0FBRSxBQUFJLEtBQUMsQUFBUyxBQUFDLEFBQUM7QUFDeEUsQUFBTSxtQkFBQyxJQUFJLEFBQWtCLG1CQUFDLEFBQUksQUFBQyxBQUFDLEFBQ3RDO0FBQUMsQUFDSDtBQUFDLEFBQ0Y7Ozs7QUFFRCx1QkFBdUIsQUFBdUI7QUFDNUMsQUFBTSxXQUFDLEFBQUksS0FBQyxBQUFTLEFBQUMsZ0JBQUksQUFBTyxRQUFDLEFBQU8sUUFBQyxBQUFXLEFBQUUsQUFBSyxBQUFDLEFBQUMsQUFDaEU7QUFBQztBQUVELEFBQWMsZUFBQyxBQUFHLElBQUMsR0FBZ0IscUJBQUUsVUFBQyxBQUFFLEFBQUU7UUFBTyxBQUFLLGNBQVYsQUFBRztRQUFjLEFBQVUsbUJBQWYsQUFBRztRQUFtQixBQUFRLEFBQUUsaUJBQWYsQUFBRzs7QUFDMUUsUUFBSSxBQUFJLE9BQUcsQUFBRSxHQUFDLEFBQVMsVUFBQyxBQUFTLFVBQUMsQUFBSyxBQUFDLEFBQUM7QUFDekMsUUFBSSxBQUFTLFlBQUcsQUFBRSxHQUFDLEFBQVMsVUFBQyxBQUFTLFVBQUMsQUFBVSxBQUFDLEFBQUM7QUFDbkQsUUFBSSxBQUFTLFlBQUcsQUFBRSxHQUFDLEFBQUssTUFBQyxBQUFHLEFBQThCLEFBQUM7QUFDM0QsQUFBRSxPQUFDLEFBQVEsQUFBRSxXQUFDLEFBQXFCLHNCQUFDLEFBQVMsV0FBRSxBQUFJLE1BQUUsQUFBUyxXQUFFLENBQUMsQ0FBQyxBQUFRLEFBQUMsQUFBQyxBQUM5RTtBQUFDLEFBQUMsQUFBQztBQUVILEFBQWMsZUFBQyxBQUFHLElBQUMsR0FBYyxtQkFBRSxVQUFDLEFBQUUsQUFBRTtRQUFPLEFBQUssY0FBVixBQUFHO1FBQWMsQUFBUSxBQUFFLGlCQUFmLEFBQUc7O0FBQ3ZELFFBQUksQUFBSSxPQUFHLEFBQUUsR0FBQyxBQUFTLFVBQUMsQUFBUyxVQUFDLEFBQUssQUFBQyxBQUFDO0FBQ3pDLFFBQUksQUFBUyxZQUFHLEFBQUUsR0FBQyxBQUFLLE1BQUMsQUFBRyxBQUE4QixBQUFDO0FBQzNELEFBQUUsT0FBQyxBQUFRLEFBQUUsV0FBQyxBQUFtQixvQkFBQyxBQUFJLE1BQUUsQUFBUyxXQUFFLENBQUMsQ0FBQyxBQUFRLEFBQUMsQUFBQyxBQUNqRTtBQUFDLEFBQUMsQUFBQztBQUVILEFBQU0sV0FBMEI7OztBQUs5QixnQ0FBWSxBQUEyQjs7O3NEQUNyQyxBQUFLLEFBQUUsQUFBQzs7QUFMSCxlQUFJLE9BQUcsQUFBZSxBQUFDO0FBTTVCLEFBQUksZUFBQyxBQUFHLE1BQUcsQUFBUyxVQUFDLEFBQUcsQUFBQztBQUN6QixBQUFJLGVBQUMsQUFBUyxZQUFHLEFBQVMsQUFBQyxBQUM3Qjs7QUFBQzs7aUNBRUQsQUFBUSw2QkFBQyxBQUFjO0FBQ3JCLEFBQUksYUFBQyxBQUFTLFVBQUMsQUFBSyxNQUFDLEFBQUUsR0FBQyxBQUFHLEFBQUMsQUFBQyxBQUMvQjtBQUFDLEFBQ0Y7OztFQWR1QyxBQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVXBkYXRpbmdPcGNvZGUgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IFZNLCBVcGRhdGluZ1ZNIH0gZnJvbSAnLi4vLi4vdm0nO1xuaW1wb3J0IHsgQXJndW1lbnRzIH0gZnJvbSAnLi4vLi4vdm0vYXJndW1lbnRzJztcbmltcG9ydCAqIGFzIFNpbXBsZSBmcm9tICcuLi8uLi9kb20vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBGSVhfUkVJRklDQVRJT04gfSBmcm9tICcuLi8uLi9kb20vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4uLy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IEZJWE1FLCBPcHRpb24sIE9wYXF1ZSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHtcbiAgQ2FjaGVkUmVmZXJlbmNlLFxuICBSZWZlcmVuY2UsXG4gIFZlcnNpb25lZFJlZmVyZW5jZSxcbiAgUmVmZXJlbmNlQ2FjaGUsXG4gIFRhZyxcbiAgUmV2aXNpb24sXG4gIFBhdGhSZWZlcmVuY2UsXG4gIGNvbWJpbmVUYWdnZWQsXG4gIGlzQ29uc3QgYXMgaXNDb25zdFJlZmVyZW5jZSxcbiAgaXNNb2RpZmllZFxufSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgTW9kaWZpZXJNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vbW9kaWZpZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBOVUxMX1JFRkVSRU5DRSwgUHJpbWl0aXZlUmVmZXJlbmNlIH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBBdHRyaWJ1dGVNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vZG9tL2F0dHJpYnV0ZS1tYW5hZ2Vycyc7XG5pbXBvcnQgeyBFbGVtZW50T3BlcmF0aW9ucyB9IGZyb20gJy4uLy4uL2J1aWxkZXInO1xuaW1wb3J0IHsgQXNzZXJ0IH0gZnJvbSAnLi92bSc7XG5pbXBvcnQgeyBBUFBFTkRfT1BDT0RFUywgT3AgYXMgT3AgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlRleHQsICh2bSwgeyBvcDE6IHRleHQgfSkgPT4ge1xuICB2bS5lbGVtZW50cygpLmFwcGVuZFRleHQodm0uY29uc3RhbnRzLmdldFN0cmluZyh0ZXh0KSk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkNvbW1lbnQsICh2bSwgeyBvcDE6IHRleHQgfSkgPT4ge1xuICB2bS5lbGVtZW50cygpLmFwcGVuZENvbW1lbnQodm0uY29uc3RhbnRzLmdldFN0cmluZyh0ZXh0KSk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLk9wZW5FbGVtZW50LCAodm0sIHsgb3AxOiB0YWcgfSkgPT4ge1xuICB2bS5lbGVtZW50cygpLm9wZW5FbGVtZW50KHZtLmNvbnN0YW50cy5nZXRTdHJpbmcodGFnKSk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLk9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMsICh2bSwgeyBvcDE6IHRhZyB9KSA9PiB7XG4gIGxldCB0YWdOYW1lID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyh0YWcpO1xuICBsZXQgb3BlcmF0aW9ucyA9IHZtLnN0YWNrLnBvcDxFbGVtZW50T3BlcmF0aW9ucz4oKTtcbiAgdm0uZWxlbWVudHMoKS5vcGVuRWxlbWVudCh0YWdOYW1lLCBvcGVyYXRpb25zKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuT3BlbkR5bmFtaWNFbGVtZW50LCB2bSA9PiB7XG4gIGxldCBvcGVyYXRpb25zID0gdm0uc3RhY2sucG9wPEVsZW1lbnRPcGVyYXRpb25zPigpO1xuICBsZXQgdGFnTmFtZSA9IHZtLnN0YWNrLnBvcDxSZWZlcmVuY2U8c3RyaW5nPj4oKS52YWx1ZSgpO1xuICB2bS5lbGVtZW50cygpLm9wZW5FbGVtZW50KHRhZ05hbWUsIG9wZXJhdGlvbnMpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5QdXNoUmVtb3RlRWxlbWVudCwgdm0gPT4ge1xuICBsZXQgZWxlbWVudFJlZiA9IHZtLnN0YWNrLnBvcDxSZWZlcmVuY2U8U2ltcGxlLkVsZW1lbnQ+PigpO1xuICBsZXQgbmV4dFNpYmxpbmdSZWYgPSB2bS5zdGFjay5wb3A8UmVmZXJlbmNlPE9wdGlvbjxTaW1wbGUuTm9kZT4+PigpO1xuXG4gIGxldCBlbGVtZW50OiBTaW1wbGUuRWxlbWVudDtcbiAgbGV0IG5leHRTaWJsaW5nOiBPcHRpb248U2ltcGxlLk5vZGU+O1xuXG4gIGlmIChpc0NvbnN0UmVmZXJlbmNlKGVsZW1lbnRSZWYpKSB7XG4gICAgZWxlbWVudCA9IGVsZW1lbnRSZWYudmFsdWUoKTtcbiAgfSBlbHNlIHtcbiAgICBsZXQgY2FjaGUgPSBuZXcgUmVmZXJlbmNlQ2FjaGUoZWxlbWVudFJlZik7XG4gICAgZWxlbWVudCA9IGNhY2hlLnBlZWsoKTtcbiAgICB2bS51cGRhdGVXaXRoKG5ldyBBc3NlcnQoY2FjaGUpKTtcbiAgfVxuXG4gIGlmIChpc0NvbnN0UmVmZXJlbmNlKG5leHRTaWJsaW5nUmVmKSkge1xuICAgIG5leHRTaWJsaW5nID0gbmV4dFNpYmxpbmdSZWYudmFsdWUoKTtcbiAgfSBlbHNlIHtcbiAgICBsZXQgY2FjaGUgPSBuZXcgUmVmZXJlbmNlQ2FjaGUobmV4dFNpYmxpbmdSZWYpO1xuICAgIG5leHRTaWJsaW5nID0gY2FjaGUucGVlaygpO1xuICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICB9XG5cbiAgdm0uZWxlbWVudHMoKS5wdXNoUmVtb3RlRWxlbWVudChlbGVtZW50LCBuZXh0U2libGluZyk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlBvcFJlbW90ZUVsZW1lbnQsIHZtID0+IHZtLmVsZW1lbnRzKCkucG9wUmVtb3RlRWxlbWVudCgpKTtcblxuY2xhc3MgQ2xhc3NMaXN0IHtcbiAgcHJpdmF0ZSBsaXN0OiBPcHRpb248UmVmZXJlbmNlPHN0cmluZz5bXT4gPSBudWxsO1xuICBwcml2YXRlIGlzQ29uc3QgPSB0cnVlO1xuXG4gIGFwcGVuZChyZWZlcmVuY2U6IFJlZmVyZW5jZTxzdHJpbmc+KSB7XG4gICAgbGV0IHsgbGlzdCwgaXNDb25zdCB9ID0gdGhpcztcblxuICAgIGlmIChsaXN0ID09PSBudWxsKSBsaXN0ID0gdGhpcy5saXN0ID0gW107XG5cbiAgICBsaXN0LnB1c2gocmVmZXJlbmNlKTtcbiAgICB0aGlzLmlzQ29uc3QgPSBpc0NvbnN0ICYmIGlzQ29uc3RSZWZlcmVuY2UocmVmZXJlbmNlKTtcbiAgfVxuXG4gIHRvUmVmZXJlbmNlKCk6IFJlZmVyZW5jZTxPcHRpb248c3RyaW5nPj4ge1xuICAgIGxldCB7IGxpc3QsIGlzQ29uc3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIWxpc3QpIHJldHVybiBOVUxMX1JFRkVSRU5DRTtcblxuICAgIGlmIChpc0NvbnN0KSByZXR1cm4gUHJpbWl0aXZlUmVmZXJlbmNlLmNyZWF0ZSh0b0NsYXNzTmFtZShsaXN0KSk7XG5cbiAgICByZXR1cm4gbmV3IENsYXNzTGlzdFJlZmVyZW5jZShsaXN0KTtcbiAgfVxuXG59XG5cbmNsYXNzIENsYXNzTGlzdFJlZmVyZW5jZSBleHRlbmRzIENhY2hlZFJlZmVyZW5jZTxPcHRpb248c3RyaW5nPj4ge1xuICBwdWJsaWMgdGFnOiBUYWc7XG4gIHByaXZhdGUgbGlzdDogUmVmZXJlbmNlPHN0cmluZz5bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKGxpc3Q6IFJlZmVyZW5jZTxzdHJpbmc+W10pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudGFnID0gY29tYmluZVRhZ2dlZChsaXN0KTtcbiAgICB0aGlzLmxpc3QgPSBsaXN0O1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbXB1dGUoKTogT3B0aW9uPHN0cmluZz4ge1xuICAgIHJldHVybiB0b0NsYXNzTmFtZSh0aGlzLmxpc3QpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHRvQ2xhc3NOYW1lKGxpc3Q6IFJlZmVyZW5jZTxzdHJpbmc+W10pOiBPcHRpb248c3RyaW5nPiB7XG4gIGxldCByZXQ6IE9wYXF1ZVtdID0gW107XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IHZhbHVlOiBGSVhNRTxPcGFxdWUsICd1c2UgT3BhcXVlIGFuZCBub3JtYWxpemUnPiA9IGxpc3RbaV0udmFsdWUoKTtcbiAgICBpZiAodmFsdWUgIT09IGZhbHNlICYmIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHJldC5wdXNoKHZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiAocmV0Lmxlbmd0aCA9PT0gMCkgPyBudWxsIDogcmV0LmpvaW4oJyAnKTtcbn1cblxuZXhwb3J0IGNsYXNzIFNpbXBsZUVsZW1lbnRPcGVyYXRpb25zIGltcGxlbWVudHMgRWxlbWVudE9wZXJhdGlvbnMge1xuICBwcml2YXRlIG9wY29kZXM6IE9wdGlvbjxVcGRhdGluZ09wY29kZVtdPiA9IG51bGw7XG4gIHByaXZhdGUgY2xhc3NMaXN0OiBPcHRpb248Q2xhc3NMaXN0PiA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbnY6IEVudmlyb25tZW50KSB7XG4gIH1cblxuICBhZGRTdGF0aWNBdHRyaWJ1dGUoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIGlmIChuYW1lID09PSAnY2xhc3MnKSB7XG4gICAgICB0aGlzLmFkZENsYXNzKFByaW1pdGl2ZVJlZmVyZW5jZS5jcmVhdGUodmFsdWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbnYuZ2V0QXBwZW5kT3BlcmF0aW9ucygpLnNldEF0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCB2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgYWRkU3RhdGljQXR0cmlidXRlTlMoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5hbWVzcGFjZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCkuc2V0QXR0cmlidXRlKGVsZW1lbnQsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UpO1xuICB9XG5cbiAgYWRkRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZTogc3RyaW5nLCByZWZlcmVuY2U6IFJlZmVyZW5jZTxzdHJpbmc+LCBpc1RydXN0aW5nOiBib29sZWFuKSB7XG4gICAgaWYgKG5hbWUgPT09ICdjbGFzcycpIHtcbiAgICAgIHRoaXMuYWRkQ2xhc3MocmVmZXJlbmNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSB0aGlzLmVudi5hdHRyaWJ1dGVGb3IoZWxlbWVudCwgbmFtZSwgaXNUcnVzdGluZyk7XG4gICAgICBsZXQgYXR0cmlidXRlID0gbmV3IER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlTWFuYWdlciwgbmFtZSwgcmVmZXJlbmNlKTtcblxuICAgICAgdGhpcy5hZGRBdHRyaWJ1dGUoYXR0cmlidXRlKTtcbiAgICB9XG4gIH1cblxuICBhZGREeW5hbWljQXR0cmlidXRlTlMoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5hbWVzcGFjZTogU2ltcGxlLk5hbWVzcGFjZSwgbmFtZTogc3RyaW5nLCByZWZlcmVuY2U6IFBhdGhSZWZlcmVuY2U8c3RyaW5nPiwgaXNUcnVzdGluZzogYm9vbGVhbikge1xuICAgIGxldCBhdHRyaWJ1dGVNYW5hZ2VyID0gdGhpcy5lbnYuYXR0cmlidXRlRm9yKGVsZW1lbnQsIG5hbWUsIGlzVHJ1c3RpbmcsIG5hbWVzcGFjZSk7XG4gICAgbGV0IG5zQXR0cmlidXRlID0gbmV3IER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlTWFuYWdlciwgbmFtZSwgcmVmZXJlbmNlLCBuYW1lc3BhY2UpO1xuXG4gICAgdGhpcy5hZGRBdHRyaWJ1dGUobnNBdHRyaWJ1dGUpO1xuICB9XG5cbiAgZmx1c2goZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIHZtOiBWTSkge1xuICAgIGxldCB7IGVudiB9ID0gdm07XG4gICAgbGV0IHsgb3Bjb2RlcywgY2xhc3NMaXN0IH0gPSB0aGlzO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IG9wY29kZXMgJiYgaSA8IG9wY29kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZtLnVwZGF0ZVdpdGgob3Bjb2Rlc1tpXSk7XG4gICAgfVxuXG4gICAgaWYgKGNsYXNzTGlzdCkge1xuICAgICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSBlbnYuYXR0cmlidXRlRm9yKGVsZW1lbnQsICdjbGFzcycsIGZhbHNlKTtcbiAgICAgIGxldCBhdHRyaWJ1dGUgPSBuZXcgRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCAnY2xhc3MnLCBjbGFzc0xpc3QudG9SZWZlcmVuY2UoKSk7XG4gICAgICBsZXQgb3Bjb2RlID0gYXR0cmlidXRlLmZsdXNoKGVudik7XG5cbiAgICAgIGlmIChvcGNvZGUpIHtcbiAgICAgICAgdm0udXBkYXRlV2l0aChvcGNvZGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMub3Bjb2RlcyA9IG51bGw7XG4gICAgdGhpcy5jbGFzc0xpc3QgPSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRDbGFzcyhyZWZlcmVuY2U6IFJlZmVyZW5jZTxzdHJpbmc+KSB7XG4gICAgbGV0IHsgY2xhc3NMaXN0IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFjbGFzc0xpc3QpIHtcbiAgICAgIGNsYXNzTGlzdCA9IHRoaXMuY2xhc3NMaXN0ID0gbmV3IENsYXNzTGlzdCgpO1xuICAgIH1cblxuICAgIGNsYXNzTGlzdC5hcHBlbmQocmVmZXJlbmNlKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkQXR0cmlidXRlKGF0dHJpYnV0ZTogQXR0cmlidXRlKSB7XG4gICAgbGV0IG9wY29kZSA9IGF0dHJpYnV0ZS5mbHVzaCh0aGlzLmVudik7XG5cbiAgICBpZiAob3Bjb2RlKSB7XG4gICAgICBsZXQgeyBvcGNvZGVzIH0gPSB0aGlzO1xuXG4gICAgICBpZiAoIW9wY29kZXMpIHtcbiAgICAgICAgb3Bjb2RlcyA9IHRoaXMub3Bjb2RlcyA9IFtdO1xuICAgICAgfVxuXG4gICAgICBvcGNvZGVzLnB1c2gob3Bjb2RlKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbXBvbmVudEVsZW1lbnRPcGVyYXRpb25zIGltcGxlbWVudHMgRWxlbWVudE9wZXJhdGlvbnMge1xuICBwcml2YXRlIGF0dHJpYnV0ZU5hbWVzOiBPcHRpb248c3RyaW5nW10+ID0gbnVsbDtcbiAgcHJpdmF0ZSBhdHRyaWJ1dGVzOiBPcHRpb248QXR0cmlidXRlW10+ID0gbnVsbDtcbiAgcHJpdmF0ZSBjbGFzc0xpc3Q6IE9wdGlvbjxDbGFzc0xpc3Q+ID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVudjogRW52aXJvbm1lbnQpIHtcbiAgfVxuXG4gIGFkZFN0YXRpY0F0dHJpYnV0ZShlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKG5hbWUgPT09ICdjbGFzcycpIHtcbiAgICAgIHRoaXMuYWRkQ2xhc3MoUHJpbWl0aXZlUmVmZXJlbmNlLmNyZWF0ZSh2YWx1ZSkpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zaG91bGRBZGRBdHRyaWJ1dGUobmFtZSkpIHtcbiAgICAgIHRoaXMuYWRkQXR0cmlidXRlKG5hbWUsIG5ldyBTdGF0aWNBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgdmFsdWUpKTtcbiAgICB9XG4gIH1cblxuICBhZGRTdGF0aWNBdHRyaWJ1dGVOUyhlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZXNwYWNlOiBzdHJpbmcsIG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIGlmICh0aGlzLnNob3VsZEFkZEF0dHJpYnV0ZShuYW1lKSkge1xuICAgICAgdGhpcy5hZGRBdHRyaWJ1dGUobmFtZSwgbmV3IFN0YXRpY0F0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlKSk7XG4gICAgfVxuICB9XG5cbiAgYWRkRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZTogc3RyaW5nLCByZWZlcmVuY2U6IFBhdGhSZWZlcmVuY2U8c3RyaW5nPiwgaXNUcnVzdGluZzogYm9vbGVhbikge1xuICAgIGlmIChuYW1lID09PSAnY2xhc3MnKSB7XG4gICAgICB0aGlzLmFkZENsYXNzKHJlZmVyZW5jZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNob3VsZEFkZEF0dHJpYnV0ZShuYW1lKSkge1xuICAgICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSB0aGlzLmVudi5hdHRyaWJ1dGVGb3IoZWxlbWVudCwgbmFtZSwgaXNUcnVzdGluZyk7XG4gICAgICBsZXQgYXR0cmlidXRlID0gbmV3IER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlTWFuYWdlciwgbmFtZSwgcmVmZXJlbmNlKTtcblxuICAgICAgdGhpcy5hZGRBdHRyaWJ1dGUobmFtZSwgYXR0cmlidXRlKTtcbiAgICB9XG4gIH1cblxuICBhZGREeW5hbWljQXR0cmlidXRlTlMoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5hbWVzcGFjZTogU2ltcGxlLk5hbWVzcGFjZSwgbmFtZTogc3RyaW5nLCByZWZlcmVuY2U6IFBhdGhSZWZlcmVuY2U8c3RyaW5nPiwgaXNUcnVzdGluZzogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLnNob3VsZEFkZEF0dHJpYnV0ZShuYW1lKSkge1xuICAgICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSB0aGlzLmVudi5hdHRyaWJ1dGVGb3IoZWxlbWVudCwgbmFtZSwgaXNUcnVzdGluZywgbmFtZXNwYWNlKTtcbiAgICAgIGxldCBuc0F0dHJpYnV0ZSA9IG5ldyBEeW5hbWljQXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZU1hbmFnZXIsIG5hbWUsIHJlZmVyZW5jZSwgbmFtZXNwYWNlKTtcblxuICAgICAgdGhpcy5hZGRBdHRyaWJ1dGUobmFtZSwgbnNBdHRyaWJ1dGUpO1xuICAgIH1cbiAgfVxuXG4gIGZsdXNoKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCB2bTogVk0pIHtcbiAgICBsZXQgeyBlbnYgfSA9IHRoaXM7XG4gICAgbGV0IHsgYXR0cmlidXRlcywgY2xhc3NMaXN0IH0gPSB0aGlzO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGF0dHJpYnV0ZXMgJiYgaSA8IGF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBvcGNvZGUgPSBhdHRyaWJ1dGVzW2ldLmZsdXNoKGVudik7XG5cbiAgICAgIGlmIChvcGNvZGUpIHtcbiAgICAgICAgdm0udXBkYXRlV2l0aChvcGNvZGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjbGFzc0xpc3QpIHtcbiAgICAgIGxldCBhdHRyaWJ1dGVNYW5hZ2VyID0gZW52LmF0dHJpYnV0ZUZvcihlbGVtZW50LCAnY2xhc3MnLCBmYWxzZSk7XG4gICAgICBsZXQgYXR0cmlidXRlID0gbmV3IER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlTWFuYWdlciwgJ2NsYXNzJywgY2xhc3NMaXN0LnRvUmVmZXJlbmNlKCkpO1xuICAgICAgbGV0IG9wY29kZSA9IGF0dHJpYnV0ZS5mbHVzaChlbnYpO1xuXG4gICAgICBpZiAob3Bjb2RlKSB7XG4gICAgICAgIHZtLnVwZGF0ZVdpdGgob3Bjb2RlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNob3VsZEFkZEF0dHJpYnV0ZShuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuYXR0cmlidXRlTmFtZXMgfHwgdGhpcy5hdHRyaWJ1dGVOYW1lcy5pbmRleE9mKG5hbWUpID09PSAtMTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkQ2xhc3MocmVmZXJlbmNlOiBQYXRoUmVmZXJlbmNlPHN0cmluZz4pIHtcbiAgICBsZXQgeyBjbGFzc0xpc3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIWNsYXNzTGlzdCkge1xuICAgICAgY2xhc3NMaXN0ID0gdGhpcy5jbGFzc0xpc3QgPSBuZXcgQ2xhc3NMaXN0KCk7XG4gICAgfVxuXG4gICAgY2xhc3NMaXN0LmFwcGVuZChyZWZlcmVuY2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRBdHRyaWJ1dGUobmFtZTogc3RyaW5nLCBhdHRyaWJ1dGU6IEF0dHJpYnV0ZSkge1xuICAgIGxldCB7IGF0dHJpYnV0ZU5hbWVzLCBhdHRyaWJ1dGVzIH0gPSB0aGlzO1xuXG4gICAgaWYgKCFhdHRyaWJ1dGVOYW1lcykge1xuICAgICAgYXR0cmlidXRlTmFtZXMgPSB0aGlzLmF0dHJpYnV0ZU5hbWVzID0gW107XG4gICAgICBhdHRyaWJ1dGVzID0gdGhpcy5hdHRyaWJ1dGVzID0gW107XG4gICAgfVxuXG4gICAgYXR0cmlidXRlTmFtZXMucHVzaChuYW1lKTtcbiAgICBhdHRyaWJ1dGVzLnB1c2goYXR0cmlidXRlKTtcbiAgfVxufVxuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuRmx1c2hFbGVtZW50LCB2bSA9PiB7XG4gIGxldCBzdGFjayA9IHZtLmVsZW1lbnRzKCk7XG5cbiAgbGV0IGFjdGlvbiA9ICdGbHVzaEVsZW1lbnRPcGNvZGUjZXZhbHVhdGUnO1xuICBzdGFjay5leHBlY3RPcGVyYXRpb25zKGFjdGlvbikuZmx1c2goc3RhY2suZXhwZWN0Q29uc3RydWN0aW5nKGFjdGlvbiksIHZtKTtcbiAgc3RhY2suZmx1c2hFbGVtZW50KCk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkNsb3NlRWxlbWVudCwgdm0gPT4gdm0uZWxlbWVudHMoKS5jbG9zZUVsZW1lbnQoKSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5TdGF0aWNBdHRyLCAodm0sIHsgb3AxOiBfbmFtZSwgb3AyOiBfdmFsdWUsIG9wMzogX25hbWVzcGFjZSB9KSA9PiB7XG4gIGxldCBuYW1lID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyhfbmFtZSk7XG4gIGxldCB2YWx1ZSA9IHZtLmNvbnN0YW50cy5nZXRTdHJpbmcoX3ZhbHVlKTtcblxuICBpZiAoX25hbWVzcGFjZSkge1xuICAgIGxldCBuYW1lc3BhY2UgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKF9uYW1lc3BhY2UpO1xuICAgIHZtLmVsZW1lbnRzKCkuc2V0U3RhdGljQXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lLCB2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgdm0uZWxlbWVudHMoKS5zZXRTdGF0aWNBdHRyaWJ1dGUobmFtZSwgdmFsdWUpO1xuICB9XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLk1vZGlmaWVyLCAodm0sIHsgb3AxOiBfbWFuYWdlciB9KSA9PiB7XG4gIGxldCBtYW5hZ2VyID0gdm0uY29uc3RhbnRzLmdldE90aGVyPE1vZGlmaWVyTWFuYWdlcjxPcGFxdWU+PihfbWFuYWdlcik7XG4gIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICBsZXQgYXJncyA9IHN0YWNrLnBvcDxBcmd1bWVudHM+KCk7XG4gIGxldCB0YWcgPSBhcmdzLnRhZztcbiAgbGV0IHsgY29uc3RydWN0aW5nOiBlbGVtZW50LCB1cGRhdGVPcGVyYXRpb25zIH0gPSB2bS5lbGVtZW50cygpO1xuICBsZXQgZHluYW1pY1Njb3BlID0gdm0uZHluYW1pY1Njb3BlKCk7XG4gIGxldCBtb2RpZmllciA9IG1hbmFnZXIuY3JlYXRlKGVsZW1lbnQgYXMgRklYX1JFSUZJQ0FUSU9OPEVsZW1lbnQ+LCBhcmdzLCBkeW5hbWljU2NvcGUsIHVwZGF0ZU9wZXJhdGlvbnMpO1xuXG4gIGFyZ3MuY2xlYXIoKTtcblxuICB2bS5lbnYuc2NoZWR1bGVJbnN0YWxsTW9kaWZpZXIobW9kaWZpZXIsIG1hbmFnZXIpO1xuICBsZXQgZGVzdHJ1Y3RvciA9IG1hbmFnZXIuZ2V0RGVzdHJ1Y3Rvcihtb2RpZmllcik7XG5cbiAgaWYgKGRlc3RydWN0b3IpIHtcbiAgICB2bS5uZXdEZXN0cm95YWJsZShkZXN0cnVjdG9yKTtcbiAgfVxuXG4gIHZtLnVwZGF0ZVdpdGgobmV3IFVwZGF0ZU1vZGlmaWVyT3Bjb2RlKFxuICAgIHRhZyxcbiAgICBtYW5hZ2VyLFxuICAgIG1vZGlmaWVyXG4gICkpO1xufSk7XG5cbmV4cG9ydCBjbGFzcyBVcGRhdGVNb2RpZmllck9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcInVwZGF0ZS1tb2RpZmllclwiO1xuICBwcml2YXRlIGxhc3RVcGRhdGVkOiBSZXZpc2lvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdGFnOiBUYWcsXG4gICAgcHJpdmF0ZSBtYW5hZ2VyOiBNb2RpZmllck1hbmFnZXI8T3BhcXVlPixcbiAgICBwcml2YXRlIG1vZGlmaWVyOiBPcGFxdWVcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmxhc3RVcGRhdGVkID0gdGFnLnZhbHVlKCk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVXBkYXRpbmdWTSkge1xuICAgIGxldCB7IG1hbmFnZXIsIG1vZGlmaWVyLCB0YWcsIGxhc3RVcGRhdGVkIH0gPSB0aGlzO1xuXG4gICAgaWYgKCF0YWcudmFsaWRhdGUobGFzdFVwZGF0ZWQpKSB7XG4gICAgICB2bS5lbnYuc2NoZWR1bGVVcGRhdGVNb2RpZmllcihtb2RpZmllciwgbWFuYWdlcik7XG4gICAgICB0aGlzLmxhc3RVcGRhdGVkID0gdGFnLnZhbHVlKCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXR0cmlidXRlIHtcbiAgbmFtZTogc3RyaW5nO1xuICBmbHVzaChlbnY6IEVudmlyb25tZW50KTogT3B0aW9uPFVwZGF0aW5nT3Bjb2RlPjtcbn1cblxuZXhwb3J0IGNsYXNzIFN0YXRpY0F0dHJpYnV0ZSBpbXBsZW1lbnRzIEF0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsXG4gICAgcHVibGljIG5hbWU6IHN0cmluZyxcbiAgICBwcml2YXRlIHZhbHVlOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBuYW1lc3BhY2U/OiBzdHJpbmdcbiAgKSB7fVxuXG4gIGZsdXNoKGVudjogRW52aXJvbm1lbnQpOiBPcHRpb248VXBkYXRpbmdPcGNvZGU+IHtcbiAgICBlbnYuZ2V0QXBwZW5kT3BlcmF0aW9ucygpLnNldEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnQsIHRoaXMubmFtZSwgdGhpcy52YWx1ZSwgdGhpcy5uYW1lc3BhY2UpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEeW5hbWljQXR0cmlidXRlIGltcGxlbWVudHMgQXR0cmlidXRlICB7XG4gIHByaXZhdGUgY2FjaGU6IE9wdGlvbjxSZWZlcmVuY2VDYWNoZTxPcGFxdWU+PiA9IG51bGw7XG5cbiAgcHVibGljIHRhZzogVGFnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsXG4gICAgcHJpdmF0ZSBhdHRyaWJ1dGVNYW5hZ2VyOiBBdHRyaWJ1dGVNYW5hZ2VyLFxuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+LFxuICAgIHByaXZhdGUgbmFtZXNwYWNlPzogU2ltcGxlLk5hbWVzcGFjZVxuICApIHtcbiAgICB0aGlzLnRhZyA9IHJlZmVyZW5jZS50YWc7XG4gIH1cblxuICBwYXRjaChlbnY6IEVudmlyb25tZW50KSB7XG4gICAgbGV0IHsgZWxlbWVudCwgY2FjaGUgfSA9IHRoaXM7XG5cbiAgICBsZXQgdmFsdWUgPSBjYWNoZS5yZXZhbGlkYXRlKCk7XG5cbiAgICBpZiAoaXNNb2RpZmllZCh2YWx1ZSkpIHtcbiAgICAgIHRoaXMuYXR0cmlidXRlTWFuYWdlci51cGRhdGVBdHRyaWJ1dGUoZW52LCBlbGVtZW50IGFzIEZJWE1FPEVsZW1lbnQsICduZWVkcyB0byBiZSByZWlmaWVkIHByb3Blcmx5Jz4sIHZhbHVlLCB0aGlzLm5hbWVzcGFjZSk7XG4gICAgfVxuICB9XG5cbiAgZmx1c2goZW52OiBFbnZpcm9ubWVudCk6IE9wdGlvbjxVcGRhdGluZ09wY29kZT4ge1xuICAgIGxldCB7IHJlZmVyZW5jZSwgZWxlbWVudCB9ID0gdGhpcztcblxuICAgIGlmIChpc0NvbnN0UmVmZXJlbmNlKHJlZmVyZW5jZSkpIHtcbiAgICAgIGxldCB2YWx1ZSA9IHJlZmVyZW5jZS52YWx1ZSgpO1xuICAgICAgdGhpcy5hdHRyaWJ1dGVNYW5hZ2VyLnNldEF0dHJpYnV0ZShlbnYsIGVsZW1lbnQsIHZhbHVlLCB0aGlzLm5hbWVzcGFjZSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGNhY2hlID0gdGhpcy5jYWNoZSA9IG5ldyBSZWZlcmVuY2VDYWNoZShyZWZlcmVuY2UpO1xuICAgICAgbGV0IHZhbHVlID0gY2FjaGUucGVlaygpO1xuICAgICAgdGhpcy5hdHRyaWJ1dGVNYW5hZ2VyLnNldEF0dHJpYnV0ZShlbnYsIGVsZW1lbnQsIHZhbHVlLCB0aGlzLm5hbWVzcGFjZSk7XG4gICAgICByZXR1cm4gbmV3IFBhdGNoRWxlbWVudE9wY29kZSh0aGlzKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZm9ybWF0RWxlbWVudChlbGVtZW50OiBTaW1wbGUuRWxlbWVudCk6IHN0cmluZyB7XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShgPCR7ZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCl9IC8+YCk7XG59XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5EeW5hbWljQXR0ck5TLCAodm0sIHsgb3AxOiBfbmFtZSwgb3AyOiBfbmFtZXNwYWNlLCBvcDM6IHRydXN0aW5nIH0pID0+IHtcbiAgbGV0IG5hbWUgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKF9uYW1lKTtcbiAgbGV0IG5hbWVzcGFjZSA9IHZtLmNvbnN0YW50cy5nZXRTdHJpbmcoX25hbWVzcGFjZSk7XG4gIGxldCByZWZlcmVuY2UgPSB2bS5zdGFjay5wb3A8VmVyc2lvbmVkUmVmZXJlbmNlPHN0cmluZz4+KCk7XG4gIHZtLmVsZW1lbnRzKCkuc2V0RHluYW1pY0F0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSwgcmVmZXJlbmNlLCAhIXRydXN0aW5nKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuRHluYW1pY0F0dHIsICh2bSwgeyBvcDE6IF9uYW1lLCBvcDI6IHRydXN0aW5nIH0pID0+IHtcbiAgbGV0IG5hbWUgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKF9uYW1lKTtcbiAgbGV0IHJlZmVyZW5jZSA9IHZtLnN0YWNrLnBvcDxWZXJzaW9uZWRSZWZlcmVuY2U8c3RyaW5nPj4oKTtcbiAgdm0uZWxlbWVudHMoKS5zZXREeW5hbWljQXR0cmlidXRlKG5hbWUsIHJlZmVyZW5jZSwgISF0cnVzdGluZyk7XG59KTtcblxuZXhwb3J0IGNsYXNzIFBhdGNoRWxlbWVudE9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcInBhdGNoLWVsZW1lbnRcIjtcblxuICBwcml2YXRlIG9wZXJhdGlvbjogRHluYW1pY0F0dHJpYnV0ZTtcblxuICBjb25zdHJ1Y3RvcihvcGVyYXRpb246IER5bmFtaWNBdHRyaWJ1dGUpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudGFnID0gb3BlcmF0aW9uLnRhZztcbiAgICB0aGlzLm9wZXJhdGlvbiA9IG9wZXJhdGlvbjtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgdGhpcy5vcGVyYXRpb24ucGF0Y2godm0uZW52KTtcbiAgfVxufVxuIl19

@@ -203,21 +203,2 @@ 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; }

Assert.prototype.toJSON = function toJSON() {
var type = this.type,
_guid = this._guid,
cache = this.cache;
var expected = void 0;
try {
expected = JSON.stringify(cache.peek());
} catch (e) {
expected = String(cache.peek());
}
return {
guid: _guid,
type: type,
args: [],
details: { expected: expected }
};
};
return Assert;

@@ -254,10 +235,2 @@ }(UpdatingOpcode);

JumpIfNotModifiedOpcode.prototype.toJSON = function toJSON() {
return {
guid: this._guid,
type: this.type,
args: [JSON.stringify(this.target.inspect())]
};
};
return JumpIfNotModifiedOpcode;

@@ -304,12 +277,4 @@ }(UpdatingOpcode);

LabelOpcode.prototype.toJSON = function toJSON() {
return {
guid: this._guid,
type: this.type,
args: [JSON.stringify(this.inspect())]
};
};
return LabelOpcode;
}();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ2bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUNBLEFBQU8sU0FBYyxBQUFjLEFBQUUsc0JBQU0sQUFBZSxBQUFDO0FBRzNELEFBQU8sU0FBYSxBQUFjLEFBQTBCLHNCQUFNLEFBQW9CLEFBQUM7QUFDdkYsQUFBTyxTQUFrQixBQUFjLEFBQUUsc0JBQU0sQUFBZSxBQUFDO0FBQy9ELEFBQU8sU0FBRSxBQUFZLGNBQUUsQUFBYyxnQkFBaUIsQUFBTyxTQUFFLEFBQVUsQUFBRSxrQkFBTSxBQUFvQixBQUFDO0FBRXRHLEFBQU8sU0FBRSxBQUFjLEFBQVksc0JBQU0sQUFBZSxBQUFDO0FBTXpELEFBQU8sU0FDTCxBQUFjLGdCQUNkLEFBQW1CLHFCQUNuQixBQUFjLGdCQUNkLEFBQWUsaUJBQ2YsQUFBa0IsQUFDbkIsMEJBQU0sQUFBa0IsQUFBQztBQUUxQixBQUFjLGVBQUMsQUFBRyxJQUFDLEdBQWE7QUFBRSxBQUFFLFdBQUksQUFBRSxHQUFDLEFBQWMsQUFBRSxBQUFDLEFBQUM7O0FBRTdELEFBQWMsZUFBQyxBQUFHLElBQUMsR0FBVztBQUFFLEFBQUUsV0FBSSxBQUFFLEdBQUMsQUFBUSxBQUFFLEFBQUMsQUFBQzs7QUFFckQsQUFBYyxlQUFDLEFBQUcsSUFBQyxHQUFtQjtBQUFFLEFBQUUsV0FBSSxBQUFFLEdBQUMsQUFBZ0IsQUFBRSxBQUFDLEFBQUM7O0FBRXJFLEFBQWMsZUFBQyxBQUFHLElBQUMsR0FBa0I7QUFBRSxBQUFFLFdBQUksQUFBRSxHQUFDLEFBQWUsQUFBRSxBQUFDLEFBQUM7O0FBRW5FLEFBQWMsZUFBQyxBQUFHLElBQUMsR0FBWSxpQkFBRSxVQUFDLEFBQUUsQUFBRTtRQUFPLEFBQU0sQUFBRSxjQUFiLEFBQUc7O0FBQ3pDLEFBQUUsT0FBQyxBQUFLLE1BQUMsQUFBSSxLQUFDLEFBQU0sQUFBQyxBQUFDLEFBQ3hCO0FBQUMsQUFBQyxBQUFDO0FBRUgsQUFB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QUFBSyxRQUFHLEFBQUssQUFBQyxBQUNoQztBQUFDOzswQkFFRCxBQUFRLCtCQUFJLENBQUM7OzBCQUViLEFBQU87QUFDTCxBQUFNLEFBQUMsZUFBRyxBQUFJLEtBQUMsQUFBSyxlQUFLLEFBQUksS0FBQyxBQUFLLEFBQUcsQUFBQyxBQUN6QztBQUFDOzswQkFFRCxBQUFNO0FBQ0osQUFBTTtBQUNKLEFBQUksa0JBQUUsQUFBSSxLQUFDLEFBQUs7QUFDaEIsQUFBSSxrQkFBRSxBQUFJLEtBQUMsQUFBSTtBQUNmLEFBQUksa0JBQUUsQ0FBQyxBQUFJLEtBQUMsQUFBUyxVQUFDLEFBQUksS0FBQyxBQUFPLEFBQUUsQUFBQyxBQUFDLEFBQ3ZDLEFBQUMsQUFDSjtBQUxTO0FBS1IsQUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBpbGVkRHluYW1pY1RlbXBsYXRlIH0gZnJvbSAnLi4vYmxvY2tzJztcbmltcG9ydCB7IE9wY29kZUpTT04sIFVwZGF0aW5nT3Bjb2RlIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBVcGRhdGluZ1ZNLCBWTSB9IGZyb20gJy4uLy4uL3ZtJztcbmltcG9ydCB7IFN5bWJvbFRhYmxlIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBSZWZlcmVuY2UsIENvbnN0UmVmZXJlbmNlLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IE9wdGlvbiwgT3BhcXVlLCBpbml0aWFsaXplR3VpZCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgQ09OU1RBTlRfVEFHLCBSZWZlcmVuY2VDYWNoZSwgUmV2aXNpb24sIFRhZywgaXNDb25zdCwgaXNNb2RpZmllZCB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgRW52aXJvbm1lbnQgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgQVBQRU5EX09QQ09ERVMsIE9wIGFzIE9wIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5cbmltcG9ydCB7XG4gIEJsb2NrXG59IGZyb20gJy4uLy4uL3NjYW5uZXInO1xuXG5pbXBvcnQge1xuICBOVUxMX1JFRkVSRU5DRSxcbiAgVU5ERUZJTkVEX1JFRkVSRU5DRSxcbiAgVFJVRV9SRUZFUkVOQ0UsXG4gIEZBTFNFX1JFRkVSRU5DRSxcbiAgUHJpbWl0aXZlUmVmZXJlbmNlXG59IGZyb20gJy4uLy4uL3JlZmVyZW5jZXMnO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuQ2hpbGRTY29wZSwgdm0gPT4gdm0ucHVzaENoaWxkU2NvcGUoKSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5Qb3BTY29wZSwgdm0gPT4gdm0ucG9wU2NvcGUoKSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5QdXNoRHluYW1pY1Njb3BlLCB2bSA9PiB2bS5wdXNoRHluYW1pY1Njb3BlKCkpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUG9wRHluYW1pY1Njb3BlLCB2bSA9PiB2bS5wb3BEeW5hbWljU2NvcGUoKSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5JbW1lZGlhdGUsICh2bSwgeyBvcDE6IG51bWJlciB9KSA9PiB7XG4gIHZtLnN0YWNrLnB1c2gobnVtYmVyKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuQ29uc3RhbnQsICh2bSwgeyBvcDE6IG90aGVyIH0pID0+IHtcbiAgdm0uc3RhY2sucHVzaCh2bS5jb25zdGFudHMuZ2V0T3RoZXIob3RoZXIpKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUHJpbWl0aXZlUmVmZXJlbmNlLCAodm0sIHsgb3AxOiBwcmltaXRpdmUgfSkgPT4ge1xuICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgbGV0IGZsYWcgPSAocHJpbWl0aXZlICYgKDMgPDwgMzApKSA+Pj4gMzA7XG4gIGxldCB2YWx1ZSA9IHByaW1pdGl2ZSAmIH4oMyA8PCAzMCk7XG5cbiAgc3dpdGNoIChmbGFnKSB7XG4gICAgY2FzZSAwOlxuICAgICAgc3RhY2sucHVzaChQcmltaXRpdmVSZWZlcmVuY2UuY3JlYXRlKHZhbHVlKSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDE6XG4gICAgICBzdGFjay5wdXNoKFByaW1pdGl2ZVJlZmVyZW5jZS5jcmVhdGUodm0uY29uc3RhbnRzLmdldFN0cmluZyh2YWx1ZSkpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMjpcbiAgICAgIHN3aXRjaCAodmFsdWUpIHtcbiAgICAgICAgY2FzZSAwOiBzdGFjay5wdXNoKEZBTFNFX1JFRkVSRU5DRSk7IGJyZWFrO1xuICAgICAgICBjYXNlIDE6IHN0YWNrLnB1c2goVFJVRV9SRUZFUkVOQ0UpOyBicmVhaztcbiAgICAgICAgY2FzZSAyOiBzdGFjay5wdXNoKE5VTExfUkVGRVJFTkNFKTsgYnJlYWs7XG4gICAgICAgIGNhc2UgMzogc3RhY2sucHVzaChVTkRFRklORURfUkVGRVJFTkNFKTsgYnJlYWs7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgfVxufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5EdXAsICh2bSwgeyBvcDE6IHJlZ2lzdGVyLCBvcDI6IG9mZnNldCB9KSA9PiB7XG4gIGxldCBwb3NpdGlvbiA9IHZtLmZldGNoVmFsdWU8bnVtYmVyPihyZWdpc3RlcikgLSBvZmZzZXQ7XG4gIHZtLnN0YWNrLmR1cChwb3NpdGlvbik7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlBvcCwgKHZtLCB7IG9wMTogY291bnQgfSkgPT4gdm0uc3RhY2sucG9wKGNvdW50KSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5Mb2FkLCAodm0sIHsgb3AxOiByZWdpc3RlciB9KSA9PiB2bS5sb2FkKHJlZ2lzdGVyKSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5GZXRjaCwgKHZtLCB7IG9wMTogcmVnaXN0ZXIgfSkgPT4gdm0uZmV0Y2gocmVnaXN0ZXIpKTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkJpbmREeW5hbWljU2NvcGUsICh2bSwgeyBvcDE6IF9uYW1lcyB9KSA9PiB7XG4gIGxldCBuYW1lcyA9IHZtLmNvbnN0YW50cy5nZXRBcnJheShfbmFtZXMpO1xuICB2bS5iaW5kRHluYW1pY1Njb3BlKG5hbWVzKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUHVzaEZyYW1lLCB2bSA9PiB2bS5wdXNoRnJhbWUoKSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5Qb3BGcmFtZSwgdm0gPT4gdm0ucG9wRnJhbWUoKSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5FbnRlciwgKHZtLCB7IG9wMTogYXJncyB9KSA9PiB2bS5lbnRlcihhcmdzKSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5FeGl0LCAodm0pID0+IHZtLmV4aXQoKSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5Db21waWxlRHluYW1pY0Jsb2NrLCB2bSA9PiB7XG4gIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICBsZXQgYmxvY2sgPSBzdGFjay5wb3A8QmxvY2s+KCk7XG4gIHN0YWNrLnB1c2goYmxvY2sgPyBibG9jay5jb21waWxlRHluYW1pYyh2bS5lbnYpIDogbnVsbCk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkludm9rZVN0YXRpYywgKHZtLCB7IG9wMTogX2Jsb2NrIH0pID0+IHtcbiAgbGV0IGJsb2NrID0gdm0uY29uc3RhbnRzLmdldEJsb2NrKF9ibG9jayk7XG4gIGxldCBjb21waWxlZCA9IGJsb2NrLmNvbXBpbGVTdGF0aWModm0uZW52KTtcbiAgdm0uY2FsbChjb21waWxlZC5zdGFydCk7XG59KTtcblxuZXhwb3J0IGludGVyZmFjZSBEeW5hbWljSW52b2tlcjxTIGV4dGVuZHMgU3ltYm9sVGFibGU+IHtcbiAgaW52b2tlKHZtOiBWTSwgYmxvY2s6IE9wdGlvbjxDb21waWxlZER5bmFtaWNUZW1wbGF0ZTxTPj4pOiB2b2lkO1xufVxuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuSW52b2tlRHluYW1pYywgKHZtLCB7IG9wMTogX2ludm9rZXIgfSkgPT4ge1xuICBsZXQgaW52b2tlciA9IHZtLmNvbnN0YW50cy5nZXRPdGhlcjxEeW5hbWljSW52b2tlcjxTeW1ib2xUYWJsZT4+KF9pbnZva2VyKTtcbiAgbGV0IGJsb2NrID0gdm0uc3RhY2sucG9wPE9wdGlvbjxDb21waWxlZER5bmFtaWNUZW1wbGF0ZTxTeW1ib2xUYWJsZT4+PigpO1xuICBpbnZva2VyLmludm9rZSh2bSwgYmxvY2spO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5KdW1wLCAodm0sIHsgb3AxOiB0YXJnZXQgfSkgPT4gdm0uZ290byh0YXJnZXQpKTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkp1bXBJZiwgKHZtLCB7IG9wMTogdGFyZ2V0IH0pID0+IHtcbiAgbGV0IHJlZmVyZW5jZSA9IHZtLnN0YWNrLnBvcDxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4+KCk7XG5cbiAgaWYgKGlzQ29uc3QocmVmZXJlbmNlKSkge1xuICAgIGlmIChyZWZlcmVuY2UudmFsdWUoKSkge1xuICAgICAgdm0uZ290byh0YXJnZXQpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBsZXQgY2FjaGUgPSBuZXcgUmVmZXJlbmNlQ2FjaGUocmVmZXJlbmNlKTtcblxuICAgIGlmIChjYWNoZS5wZWVrKCkpIHtcbiAgICAgIHZtLmdvdG8odGFyZ2V0KTtcbiAgICB9XG5cbiAgICB2bS51cGRhdGVXaXRoKG5ldyBBc3NlcnQoY2FjaGUpKTtcbiAgfVxufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5KdW1wVW5sZXNzLCAodm0sIHsgb3AxOiB0YXJnZXQgfSkgPT4ge1xuICBsZXQgcmVmZXJlbmNlID0gdm0uc3RhY2sucG9wPFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPj4oKTtcblxuICBpZiAoaXNDb25zdChyZWZlcmVuY2UpKSB7XG4gICAgaWYgKCFyZWZlcmVuY2UudmFsdWUoKSkge1xuICAgICAgdm0uZ290byh0YXJnZXQpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBsZXQgY2FjaGUgPSBuZXcgUmVmZXJlbmNlQ2FjaGUocmVmZXJlbmNlKTtcblxuICAgIGlmICghY2FjaGUucGVlaygpKSB7XG4gICAgICB2bS5nb3RvKHRhcmdldCk7XG4gICAgfVxuXG4gICAgdm0udXBkYXRlV2l0aChuZXcgQXNzZXJ0KGNhY2hlKSk7XG4gIH1cbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUmV0dXJuLCB2bSA9PiB2bS5yZXR1cm4oKSk7XG5cbmV4cG9ydCB0eXBlIFRlc3RGdW5jdGlvbiA9IChyZWY6IFJlZmVyZW5jZTxPcGFxdWU+LCBlbnY6IEVudmlyb25tZW50KSA9PiBSZWZlcmVuY2U8Ym9vbGVhbj47XG5cbmV4cG9ydCBjb25zdCBDb25zdFRlc3Q6IFRlc3RGdW5jdGlvbiA9IGZ1bmN0aW9uKHJlZjogUmVmZXJlbmNlPE9wYXF1ZT4sIF9lbnY6IEVudmlyb25tZW50KTogUmVmZXJlbmNlPGJvb2xlYW4+IHtcbiAgcmV0dXJuIG5ldyBDb25zdFJlZmVyZW5jZSghIXJlZi52YWx1ZSgpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBTaW1wbGVUZXN0OiBUZXN0RnVuY3Rpb24gPSBmdW5jdGlvbihyZWY6IFJlZmVyZW5jZTxPcGFxdWU+LCBfZW52OiBFbnZpcm9ubWVudCk6IFJlZmVyZW5jZTxib29sZWFuPiB7XG4gIHJldHVybiByZWYgYXMgUmVmZXJlbmNlPGJvb2xlYW4+O1xufTtcblxuZXhwb3J0IGNvbnN0IEVudmlyb25tZW50VGVzdDogVGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24ocmVmOiBSZWZlcmVuY2U8T3BhcXVlPiwgZW52OiBFbnZpcm9ubWVudCk6IFJlZmVyZW5jZTxib29sZWFuPiB7XG4gIHJldHVybiBlbnYudG9Db25kaXRpb25hbFJlZmVyZW5jZShyZWYpO1xufTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlRlc3QsICh2bSwgeyBvcDE6IF9mdW5jIH0pID0+IHtcbiAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gIGxldCBvcGVyYW5kID0gc3RhY2sucG9wKCk7XG4gIGxldCBmdW5jID0gdm0uY29uc3RhbnRzLmdldEZ1bmN0aW9uKF9mdW5jKTtcbiAgc3RhY2sucHVzaChmdW5jKG9wZXJhbmQsIHZtLmVudikpO1xufSk7XG5cbmV4cG9ydCBjbGFzcyBBc3NlcnQgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJhc3NlcnRcIjtcblxuICBwcml2YXRlIGNhY2hlOiBSZWZlcmVuY2VDYWNoZTxPcGFxdWU+O1xuXG4gIGNvbnN0cnVjdG9yKGNhY2hlOiBSZWZlcmVuY2VDYWNoZTxPcGFxdWU+KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnRhZyA9IGNhY2hlLnRhZztcbiAgICB0aGlzLmNhY2hlID0gY2FjaGU7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVXBkYXRpbmdWTSkge1xuICAgIGxldCB7IGNhY2hlIH0gPSB0aGlzO1xuXG4gICAgaWYgKGlzTW9kaWZpZWQoY2FjaGUucmV2YWxpZGF0ZSgpKSkge1xuICAgICAgdm0udGhyb3coKTtcbiAgICB9XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgbGV0IHsgdHlwZSwgX2d1aWQsIGNhY2hlIH0gPSB0aGlzO1xuXG4gICAgbGV0IGV4cGVjdGVkO1xuXG4gICAgdHJ5IHtcbiAgICAgIGV4cGVjdGVkID0gSlNPTi5zdHJpbmdpZnkoY2FjaGUucGVlaygpKTtcbiAgICB9IGNhdGNoKGUpIHtcbiAgICAgIGV4cGVjdGVkID0gU3RyaW5nKGNhY2hlLnBlZWsoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGd1aWQ6IF9ndWlkLFxuICAgICAgdHlwZSxcbiAgICAgIGFyZ3M6IFtdLFxuICAgICAgZGV0YWlsczogeyBleHBlY3RlZCB9XG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSnVtcElmTm90TW9kaWZpZWRPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJqdW1wLWlmLW5vdC1tb2RpZmllZFwiO1xuXG4gIHByaXZhdGUgbGFzdFJldmlzaW9uOiBSZXZpc2lvbjtcblxuICBjb25zdHJ1Y3Rvcih0YWc6IFRhZywgcHJpdmF0ZSB0YXJnZXQ6IExhYmVsT3Bjb2RlKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnRhZyA9IHRhZztcbiAgICB0aGlzLmxhc3RSZXZpc2lvbiA9IHRhZy52YWx1ZSgpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICBsZXQgeyB0YWcsIHRhcmdldCwgbGFzdFJldmlzaW9uIH0gPSB0aGlzO1xuXG4gICAgaWYgKCF2bS5hbHdheXNSZXZhbGlkYXRlICYmIHRhZy52YWxpZGF0ZShsYXN0UmV2aXNpb24pKSB7XG4gICAgICB2bS5nb3RvKHRhcmdldCk7XG4gICAgfVxuICB9XG5cbiAgZGlkTW9kaWZ5KCkge1xuICAgIHRoaXMubGFzdFJldmlzaW9uID0gdGhpcy50YWcudmFsdWUoKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIGFyZ3M6IFtKU09OLnN0cmluZ2lmeSh0aGlzLnRhcmdldC5pbnNwZWN0KCkpXVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERpZE1vZGlmeU9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImRpZC1tb2RpZnlcIjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRhcmdldDogSnVtcElmTm90TW9kaWZpZWRPcGNvZGUpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudGFnID0gQ09OU1RBTlRfVEFHO1xuICB9XG5cbiAgZXZhbHVhdGUoKSB7XG4gICAgdGhpcy50YXJnZXQuZGlkTW9kaWZ5KCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIExhYmVsT3Bjb2RlIGltcGxlbWVudHMgVXBkYXRpbmdPcGNvZGUge1xuICBwdWJsaWMgdGFnOiBUYWcgPSBDT05TVEFOVF9UQUc7XG4gIHB1YmxpYyB0eXBlID0gXCJsYWJlbFwiO1xuICBwdWJsaWMgbGFiZWw6IE9wdGlvbjxzdHJpbmc+ID0gbnVsbDtcbiAgcHVibGljIF9ndWlkOiBudW1iZXI7XG5cbiAgcHJldjogYW55ID0gbnVsbDtcbiAgbmV4dDogYW55ID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihsYWJlbDogc3RyaW5nKSB7XG4gICAgaW5pdGlhbGl6ZUd1aWQodGhpcyk7XG4gICAgaWYgKGxhYmVsKSB0aGlzLmxhYmVsID0gbGFiZWw7XG4gIH1cblxuICBldmFsdWF0ZSgpIHt9XG5cbiAgaW5zcGVjdCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmxhYmVsfSBbJHt0aGlzLl9ndWlkfV1gO1xuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIHJldHVybiB7XG4gICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgYXJnczogW0pTT04uc3RyaW5naWZ5KHRoaXMuaW5zcGVjdCgpKV1cbiAgICB9O1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ2bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUNBLEFBQU8sU0FBYyxBQUFjLEFBQUUsc0JBQU0sQUFBZSxBQUFDO0FBRzNELEFBQU8sU0FBYSxBQUFjLEFBQTBCLHNCQUFNLEFBQW9CLEFBQUM7QUFDdkYsQUFBTyxTQUFrQixBQUFjLEFBQUUsc0JBQU0sQUFBZSxBQUFDO0FBQy9ELEFBQU8sU0FBRSxBQUFZLGNBQUUsQUFBYyxnQkFBaUIsQUFBTyxTQUFFLEFBQVUsQUFBRSxrQkFBTSxBQUFvQixBQUFDO0FBRXRHLEFBQU8sU0FBRSxBQUFjLEFBQVksc0JBQU0sQUFBZSxBQUFDO0FBTXpELEFBQU8sU0FDTCxBQUFjLGdCQUNkLEFBQW1CLHFCQUNuQixBQUFjLGdCQUNkLEFBQWUsaUJBQ2YsQUFBa0IsQUFDbkIsMEJBQU0sQUFBa0IsQUFBQztBQUUxQixBQUFjLGVBQUMsQUFBRyxJQUFDLEdBQWE7QUFBRSxBQUFFLFdBQUksQUFBRSxHQUFDLEFBQWMsQUFBRSxBQUFDLEFBQUM7O0FBRTdELEFBQWMsZUFBQyxBQUFHLElBQUMsR0FBVztBQUFFLEFBQUUsV0FBSSxBQUFFLEdBQUMsQUFBUSxBQUFFLEFBQUMsQUFBQzs7QUFFckQsQUFBYyxlQUFDLEFBQUcsSUFBQyxHQUFtQjtBQUFFLEFBQUUsV0FBSSxBQUFFLEdBQUMsQUFBZ0IsQUFBRSxBQUFDLEFBQUM7O0FBRXJFLEFBQWMsZUFBQyxBQUFHLElBQUMsR0FBa0I7QUFBRSxBQUFFLFdBQUksQUFBRSxHQUFDLEFBQWUsQUFBRSxBQUFDLEFBQUM7O0FBRW5FLEFBQWMsZUFBQyxBQUFHLElBQUMsR0FBWSxpQkFBRSxVQUFDLEFBQUUsQUFBRTtRQUFPLEFBQU0sQUFBRSxjQUFiLEFBQUc7O0FBQ3pDLEFBQUUsT0FBQyxBQUFLLE1BQUMsQUFBSSxLQUFDLEFBQU0sQUFBQyxBQUFDLEFBQ3hCO0FBQUMsQUFBQyxBQUFDO0FBRUgsQUFB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QUFJLGFBQUMsQUFBTSxPQUFDLEFBQVMsQUFBRSxBQUFDLEFBQzFCO0FBQUMsQUFDRjs7O0VBWG9DLEFBQWM7QUFhbkQsQUFBTTtBQVNKLHlCQUFZLEFBQWE7OztBQVJsQixhQUFHLE1BQVEsQUFBWSxBQUFDO0FBQ3hCLGFBQUksT0FBRyxBQUFPLEFBQUM7QUFDZixhQUFLLFFBQW1CLEFBQUksQUFBQztBQUdwQyxhQUFJLE9BQVEsQUFBSSxBQUFDO0FBQ2pCLGFBQUksT0FBUSxBQUFJLEFBQUM7QUFHZixBQUFjLHVCQUFDLEFBQUksQUFBQyxBQUFDO0FBQ3JCLEFBQUUsQUFBQyxZQUFDLEFBQUssQUFBQyxPQUFDLEFBQUksS0FBQyxBQUFLLFFBQUcsQUFBSyxBQUFDLEFBQ2hDO0FBQUM7OzBCQUVELEFBQVEsK0JBQUksQ0FBQzs7MEJBRWIsQUFBTztBQUNMLEFBQU0sQUFBQyxlQUFHLEFBQUksS0FBQyxBQUFLLGVBQUssQUFBSSxLQUFDLEFBQUssQUFBRyxBQUFDLEFBQ3pDO0FBQUMsQUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBpbGVkRHluYW1pY1RlbXBsYXRlIH0gZnJvbSAnLi4vYmxvY2tzJztcbmltcG9ydCB7IE9wY29kZUpTT04sIFVwZGF0aW5nT3Bjb2RlIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBVcGRhdGluZ1ZNLCBWTSB9IGZyb20gJy4uLy4uL3ZtJztcbmltcG9ydCB7IFN5bWJvbFRhYmxlIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBSZWZlcmVuY2UsIENvbnN0UmVmZXJlbmNlLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IE9wdGlvbiwgT3BhcXVlLCBpbml0aWFsaXplR3VpZCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgQ09OU1RBTlRfVEFHLCBSZWZlcmVuY2VDYWNoZSwgUmV2aXNpb24sIFRhZywgaXNDb25zdCwgaXNNb2RpZmllZCB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgRW52aXJvbm1lbnQgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgQVBQRU5EX09QQ09ERVMsIE9wIGFzIE9wIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5cbmltcG9ydCB7XG4gIEJsb2NrXG59IGZyb20gJy4uLy4uL3NjYW5uZXInO1xuXG5pbXBvcnQge1xuICBOVUxMX1JFRkVSRU5DRSxcbiAgVU5ERUZJTkVEX1JFRkVSRU5DRSxcbiAgVFJVRV9SRUZFUkVOQ0UsXG4gIEZBTFNFX1JFRkVSRU5DRSxcbiAgUHJpbWl0aXZlUmVmZXJlbmNlXG59IGZyb20gJy4uLy4uL3JlZmVyZW5jZXMnO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuQ2hpbGRTY29wZSwgdm0gPT4gdm0ucHVzaENoaWxkU2NvcGUoKSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5Qb3BTY29wZSwgdm0gPT4gdm0ucG9wU2NvcGUoKSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5QdXNoRHluYW1pY1Njb3BlLCB2bSA9PiB2bS5wdXNoRHluYW1pY1Njb3BlKCkpO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUG9wRHluYW1pY1Njb3BlLCB2bSA9PiB2bS5wb3BEeW5hbWljU2NvcGUoKSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5JbW1lZGlhdGUsICh2bSwgeyBvcDE6IG51bWJlciB9KSA9PiB7XG4gIHZtLnN0YWNrLnB1c2gobnVtYmVyKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuQ29uc3RhbnQsICh2bSwgeyBvcDE6IG90aGVyIH0pID0+IHtcbiAgdm0uc3RhY2sucHVzaCh2bS5jb25zdGFudHMuZ2V0T3RoZXIob3RoZXIpKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUHJpbWl0aXZlUmVmZXJlbmNlLCAodm0sIHsgb3AxOiBwcmltaXRpdmUgfSkgPT4ge1xuICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgbGV0IGZsYWcgPSAocHJpbWl0aXZlICYgKDMgPDwgMzApKSA+Pj4gMzA7XG4gIGxldCB2YWx1ZSA9IHByaW1pdGl2ZSAmIH4oMyA8PCAzMCk7XG5cbiAgc3dpdGNoIChmbGFnKSB7XG4gICAgY2FzZSAwOlxuICAgICAgc3RhY2sucHVzaChQcmltaXRpdmVSZWZlcmVuY2UuY3JlYXRlKHZhbHVlKSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDE6XG4gICAgICBzdGFjay5wdXNoKFByaW1pdGl2ZVJlZmVyZW5jZS5jcmVhdGUodm0uY29uc3RhbnRzLmdldFN0cmluZyh2YWx1ZSkpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMjpcbiAgICAgIHN3aXRjaCAodmFsdWUpIHtcbiAgICAgICAgY2FzZSAwOiBzdGFjay5wdXNoKEZBTFNFX1JFRkVSRU5DRSk7IGJyZWFrO1xuICAgICAgICBjYXNlIDE6IHN0YWNrLnB1c2goVFJVRV9SRUZFUkVOQ0UpOyBicmVhaztcbiAgICAgICAgY2FzZSAyOiBzdGFjay5wdXNoKE5VTExfUkVGRVJFTkNFKTsgYnJlYWs7XG4gICAgICAgIGNhc2UgMzogc3RhY2sucHVzaChVTkRFRklORURfUkVGRVJFTkNFKTsgYnJlYWs7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgfVxufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5EdXAsICh2bSwgeyBvcDE6IHJlZ2lzdGVyLCBvcDI6IG9mZnNldCB9KSA9PiB7XG4gIGxldCBwb3NpdGlvbiA9IHZtLmZldGNoVmFsdWU8bnVtYmVyPihyZWdpc3RlcikgLSBvZmZzZXQ7XG4gIHZtLnN0YWNrLmR1cChwb3NpdGlvbik7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlBvcCwgKHZtLCB7IG9wMTogY291bnQgfSkgPT4gdm0uc3RhY2sucG9wKGNvdW50KSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5Mb2FkLCAodm0sIHsgb3AxOiByZWdpc3RlciB9KSA9PiB2bS5sb2FkKHJlZ2lzdGVyKSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5GZXRjaCwgKHZtLCB7IG9wMTogcmVnaXN0ZXIgfSkgPT4gdm0uZmV0Y2gocmVnaXN0ZXIpKTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkJpbmREeW5hbWljU2NvcGUsICh2bSwgeyBvcDE6IF9uYW1lcyB9KSA9PiB7XG4gIGxldCBuYW1lcyA9IHZtLmNvbnN0YW50cy5nZXRBcnJheShfbmFtZXMpO1xuICB2bS5iaW5kRHluYW1pY1Njb3BlKG5hbWVzKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUHVzaEZyYW1lLCB2bSA9PiB2bS5wdXNoRnJhbWUoKSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5Qb3BGcmFtZSwgdm0gPT4gdm0ucG9wRnJhbWUoKSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5FbnRlciwgKHZtLCB7IG9wMTogYXJncyB9KSA9PiB2bS5lbnRlcihhcmdzKSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5FeGl0LCAodm0pID0+IHZtLmV4aXQoKSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5Db21waWxlRHluYW1pY0Jsb2NrLCB2bSA9PiB7XG4gIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICBsZXQgYmxvY2sgPSBzdGFjay5wb3A8QmxvY2s+KCk7XG4gIHN0YWNrLnB1c2goYmxvY2sgPyBibG9jay5jb21waWxlRHluYW1pYyh2bS5lbnYpIDogbnVsbCk7XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkludm9rZVN0YXRpYywgKHZtLCB7IG9wMTogX2Jsb2NrIH0pID0+IHtcbiAgbGV0IGJsb2NrID0gdm0uY29uc3RhbnRzLmdldEJsb2NrKF9ibG9jayk7XG4gIGxldCBjb21waWxlZCA9IGJsb2NrLmNvbXBpbGVTdGF0aWModm0uZW52KTtcbiAgdm0uY2FsbChjb21waWxlZC5zdGFydCk7XG59KTtcblxuZXhwb3J0IGludGVyZmFjZSBEeW5hbWljSW52b2tlcjxTIGV4dGVuZHMgU3ltYm9sVGFibGU+IHtcbiAgaW52b2tlKHZtOiBWTSwgYmxvY2s6IE9wdGlvbjxDb21waWxlZER5bmFtaWNUZW1wbGF0ZTxTPj4pOiB2b2lkO1xufVxuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuSW52b2tlRHluYW1pYywgKHZtLCB7IG9wMTogX2ludm9rZXIgfSkgPT4ge1xuICBsZXQgaW52b2tlciA9IHZtLmNvbnN0YW50cy5nZXRPdGhlcjxEeW5hbWljSW52b2tlcjxTeW1ib2xUYWJsZT4+KF9pbnZva2VyKTtcbiAgbGV0IGJsb2NrID0gdm0uc3RhY2sucG9wPE9wdGlvbjxDb21waWxlZER5bmFtaWNUZW1wbGF0ZTxTeW1ib2xUYWJsZT4+PigpO1xuICBpbnZva2VyLmludm9rZSh2bSwgYmxvY2spO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5KdW1wLCAodm0sIHsgb3AxOiB0YXJnZXQgfSkgPT4gdm0uZ290byh0YXJnZXQpKTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkp1bXBJZiwgKHZtLCB7IG9wMTogdGFyZ2V0IH0pID0+IHtcbiAgbGV0IHJlZmVyZW5jZSA9IHZtLnN0YWNrLnBvcDxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4+KCk7XG5cbiAgaWYgKGlzQ29uc3QocmVmZXJlbmNlKSkge1xuICAgIGlmIChyZWZlcmVuY2UudmFsdWUoKSkge1xuICAgICAgdm0uZ290byh0YXJnZXQpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBsZXQgY2FjaGUgPSBuZXcgUmVmZXJlbmNlQ2FjaGUocmVmZXJlbmNlKTtcblxuICAgIGlmIChjYWNoZS5wZWVrKCkpIHtcbiAgICAgIHZtLmdvdG8odGFyZ2V0KTtcbiAgICB9XG5cbiAgICB2bS51cGRhdGVXaXRoKG5ldyBBc3NlcnQoY2FjaGUpKTtcbiAgfVxufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5KdW1wVW5sZXNzLCAodm0sIHsgb3AxOiB0YXJnZXQgfSkgPT4ge1xuICBsZXQgcmVmZXJlbmNlID0gdm0uc3RhY2sucG9wPFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPj4oKTtcblxuICBpZiAoaXNDb25zdChyZWZlcmVuY2UpKSB7XG4gICAgaWYgKCFyZWZlcmVuY2UudmFsdWUoKSkge1xuICAgICAgdm0uZ290byh0YXJnZXQpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBsZXQgY2FjaGUgPSBuZXcgUmVmZXJlbmNlQ2FjaGUocmVmZXJlbmNlKTtcblxuICAgIGlmICghY2FjaGUucGVlaygpKSB7XG4gICAgICB2bS5nb3RvKHRhcmdldCk7XG4gICAgfVxuXG4gICAgdm0udXBkYXRlV2l0aChuZXcgQXNzZXJ0KGNhY2hlKSk7XG4gIH1cbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuUmV0dXJuLCB2bSA9PiB2bS5yZXR1cm4oKSk7XG5cbmV4cG9ydCB0eXBlIFRlc3RGdW5jdGlvbiA9IChyZWY6IFJlZmVyZW5jZTxPcGFxdWU+LCBlbnY6IEVudmlyb25tZW50KSA9PiBSZWZlcmVuY2U8Ym9vbGVhbj47XG5cbmV4cG9ydCBjb25zdCBDb25zdFRlc3Q6IFRlc3RGdW5jdGlvbiA9IGZ1bmN0aW9uKHJlZjogUmVmZXJlbmNlPE9wYXF1ZT4sIF9lbnY6IEVudmlyb25tZW50KTogUmVmZXJlbmNlPGJvb2xlYW4+IHtcbiAgcmV0dXJuIG5ldyBDb25zdFJlZmVyZW5jZSghIXJlZi52YWx1ZSgpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBTaW1wbGVUZXN0OiBUZXN0RnVuY3Rpb24gPSBmdW5jdGlvbihyZWY6IFJlZmVyZW5jZTxPcGFxdWU+LCBfZW52OiBFbnZpcm9ubWVudCk6IFJlZmVyZW5jZTxib29sZWFuPiB7XG4gIHJldHVybiByZWYgYXMgUmVmZXJlbmNlPGJvb2xlYW4+O1xufTtcblxuZXhwb3J0IGNvbnN0IEVudmlyb25tZW50VGVzdDogVGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24ocmVmOiBSZWZlcmVuY2U8T3BhcXVlPiwgZW52OiBFbnZpcm9ubWVudCk6IFJlZmVyZW5jZTxib29sZWFuPiB7XG4gIHJldHVybiBlbnYudG9Db25kaXRpb25hbFJlZmVyZW5jZShyZWYpO1xufTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLlRlc3QsICh2bSwgeyBvcDE6IF9mdW5jIH0pID0+IHtcbiAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gIGxldCBvcGVyYW5kID0gc3RhY2sucG9wKCk7XG4gIGxldCBmdW5jID0gdm0uY29uc3RhbnRzLmdldEZ1bmN0aW9uKF9mdW5jKTtcbiAgc3RhY2sucHVzaChmdW5jKG9wZXJhbmQsIHZtLmVudikpO1xufSk7XG5cbmV4cG9ydCBjbGFzcyBBc3NlcnQgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJhc3NlcnRcIjtcblxuICBwcml2YXRlIGNhY2hlOiBSZWZlcmVuY2VDYWNoZTxPcGFxdWU+O1xuXG4gIGNvbnN0cnVjdG9yKGNhY2hlOiBSZWZlcmVuY2VDYWNoZTxPcGFxdWU+KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnRhZyA9IGNhY2hlLnRhZztcbiAgICB0aGlzLmNhY2hlID0gY2FjaGU7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVXBkYXRpbmdWTSkge1xuICAgIGxldCB7IGNhY2hlIH0gPSB0aGlzO1xuXG4gICAgaWYgKGlzTW9kaWZpZWQoY2FjaGUucmV2YWxpZGF0ZSgpKSkge1xuICAgICAgdm0udGhyb3coKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEp1bXBJZk5vdE1vZGlmaWVkT3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwianVtcC1pZi1ub3QtbW9kaWZpZWRcIjtcblxuICBwcml2YXRlIGxhc3RSZXZpc2lvbjogUmV2aXNpb247XG5cbiAgY29uc3RydWN0b3IodGFnOiBUYWcsIHByaXZhdGUgdGFyZ2V0OiBMYWJlbE9wY29kZSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy50YWcgPSB0YWc7XG4gICAgdGhpcy5sYXN0UmV2aXNpb24gPSB0YWcudmFsdWUoKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgbGV0IHsgdGFnLCB0YXJnZXQsIGxhc3RSZXZpc2lvbiB9ID0gdGhpcztcblxuICAgIGlmICghdm0uYWx3YXlzUmV2YWxpZGF0ZSAmJiB0YWcudmFsaWRhdGUobGFzdFJldmlzaW9uKSkge1xuICAgICAgdm0uZ290byh0YXJnZXQpO1xuICAgIH1cbiAgfVxuXG4gIGRpZE1vZGlmeSgpIHtcbiAgICB0aGlzLmxhc3RSZXZpc2lvbiA9IHRoaXMudGFnLnZhbHVlKCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERpZE1vZGlmeU9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImRpZC1tb2RpZnlcIjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRhcmdldDogSnVtcElmTm90TW9kaWZpZWRPcGNvZGUpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudGFnID0gQ09OU1RBTlRfVEFHO1xuICB9XG5cbiAgZXZhbHVhdGUoKSB7XG4gICAgdGhpcy50YXJnZXQuZGlkTW9kaWZ5KCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIExhYmVsT3Bjb2RlIGltcGxlbWVudHMgVXBkYXRpbmdPcGNvZGUge1xuICBwdWJsaWMgdGFnOiBUYWcgPSBDT05TVEFOVF9UQUc7XG4gIHB1YmxpYyB0eXBlID0gXCJsYWJlbFwiO1xuICBwdWJsaWMgbGFiZWw6IE9wdGlvbjxzdHJpbmc+ID0gbnVsbDtcbiAgcHVibGljIF9ndWlkOiBudW1iZXI7XG5cbiAgcHJldjogYW55ID0gbnVsbDtcbiAgbmV4dDogYW55ID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihsYWJlbDogc3RyaW5nKSB7XG4gICAgaW5pdGlhbGl6ZUd1aWQodGhpcyk7XG4gICAgaWYgKGxhYmVsKSB0aGlzLmxhYmVsID0gbGFiZWw7XG4gIH1cblxuICBldmFsdWF0ZSgpIHt9XG5cbiAgaW5zcGVjdCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmxhYmVsfSBbJHt0aGlzLl9ndWlkfV1gO1xuICB9XG59XG4iXX0=

@@ -7,3 +7,3 @@ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();

import { Ops } from '@glimmer/wire-format';
import { Register, debugSlice } from './opcodes';
import { Register } from './opcodes';
import { ATTRS_BLOCK, ClientSide, compileStatement } from './scanner';

@@ -138,3 +138,2 @@ import { expr } from './syntax/functions';

var end = b.finalize();
debugSlice(env, start, end);
return new CompiledDynamicTemplate(start, end, {

@@ -286,2 +285,2 @@ meta: meta,

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjb21waWxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBRUEsQUFBTyxTQUEwQixBQUF1QixBQUFFLCtCQUFNLEFBQW1CLEFBQUM7QUFFcEYsQUFBTyxTQUFFLEFBQUcsQUFBZ0IsV0FBTSxBQUFzQixBQUFDO0FBR3pELEFBQU8sU0FBRSxBQUFRLFVBQUUsQUFBVSxBQUFFLGtCQUFNLEFBQVcsQUFBQztBQUVqRCxBQUFPLFNBQUUsQUFBVyxhQUFFLEFBQVUsWUFBRSxBQUFnQixBQUFFLHdCQUFNLEFBQVcsQUFBQztBQVF0RSxBQUFPLFNBQUUsQUFBSSxBQUFFLFlBQU0sQUFBb0IsQUFBQztBQUUxQyxPQUFPLEFBQWdCLHNCQUFNLEFBQTRCLEFBQUM7QUFjMUQsQUFBTSw4QkFBd0IsQUFBNEIsWUFBRSxBQUFnQjtBQUMxRSxRQUFJLEFBQU8sVUFBRyxJQUFJLEFBQXNCLHVCQUFDLEFBQUcsQUFBQyxBQUFDO0FBRTlDLEFBQVUsZUFBQyxBQUFPLFFBQUMsQUFBTyxBQUFDLEFBQUM7QUFFNUIsQUFBTSxXQUFDLEFBQU8sUUFBQyxBQUFPLEFBQUUsQUFBQyxBQUMzQjtBQUFDLEFBUUQ7OztBQUdFLG9DQUFtQixBQUFnQjs7O0FBQWhCLGFBQUcsTUFBSCxBQUFHLEFBQWEsQUFBRztBQUFDOztxQ0FFdkMsQUFBVSxpQ0FBQyxBQUE4QjtBQUN2QyxBQUFJLGFBQUMsQUFBSyxRQUFHLElBQUksQUFBYyxlQUFDLEFBQUksS0FBQyxBQUFHLEtBQUUsQUFBTSxBQUFDLEFBQUMsQUFDcEQ7QUFBQzs7cUNBRUQsQUFBVSxpQ0FBQyxBQUE4QjtBQUN2QyxBQUFJLGFBQUMsQUFBSyxRQUFHLElBQUksQUFBZ0IsaUJBQUMsQUFBSSxLQUFDLEFBQUcsS0FBRSxBQUFNLEFBQUMsQUFBQyxBQUN0RDtBQUFDOztxQ0FFRCxBQUFPO0FBQ0wsQUFBTSxlQUFDLEFBQUksS0FBQyxBQUFLLE1BQUMsQUFB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QUFDLEFBQUMsQUFBQyxJQUFFLEFBQWMsZUFBQyxBQUFDLEFBQUMsSUFBRSxBQUFJLEFBQUMsQUFBQztBQUNoRSxBQUFPLGdCQUFDLEFBQU0sT0FBQyxBQUFNLEFBQUMsQUFBQztBQUV2QixBQUFPLGdCQUFDLEFBQUcsQUFBRSxBQUFDO0FBQ2QsQUFBTyxnQkFBQyxBQUFJLEtBQUMsQUFBUSxBQUFDLEFBQUM7QUFFdkIsQUFBTyxnQkFBQyxBQUFLLE1BQUMsQUFBQyxBQUFDLEFBQUM7QUFFakIsQUFBTyxnQkFBQyxBQUFVLFdBQUMsQUFBTSxBQUFDLEFBQUM7QUFFM0IsQUFBTyxnQkFBQyxBQUEyQixBQUFFLEFBQUM7QUFDdEMsQUFBTyxnQkFBQyxBQUFlLGdCQUFDLEFBQUksTUFBRSxBQUFNLFFBQUUsQUFBSSxNQUFFLEFBQUssT0FBRSxBQUFPLEFBQUMsQUFBQztBQUU1RCxBQUFPLGdCQUFDLEFBQUssTUFBQyxBQUFNLEFBQUMsQUFBQztBQUN0QixBQUFPLGdCQUFDLEFBQUksQUFBRSxBQUFDO0FBQ2YsQUFBTyxnQkFBQyxBQUFNLEFBQUUsQUFBQztBQUVqQixBQUFPLGdCQUFDLEFBQUssTUFBQyxBQUFLLEFBQUMsQUFBQztBQUNyQixBQUFPLGdCQUFDLEFBQVEsQUFBRSxBQUFDO0FBRW5CLEFBQU8sZ0JBQUMsQUFBVSxBQUFFLEFBQUMsQUFDdkI7QUFBQyxBQUNGOzs7O0FBRUQsQUFBTSx3QkFBa0IsQUFBZ0IsS0FBRSxBQUFxQjtBQUM3RCxBQUFNLFdBQUMsSUFBSSxBQUFnQixpQkFBQyxBQUFHLEtBQUUsQUFBSSxBQUFDLEFBQUMsQUFDekM7QUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wYXF1ZSwgQ29tcGlsYXRpb25NZXRhIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgRW52aXJvbm1lbnQgZnJvbSAnLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBDb21waWxlZER5bmFtaWNQcm9ncmFtLCBDb21waWxlZER5bmFtaWNUZW1wbGF0ZSB9IGZyb20gJy4vY29tcGlsZWQvYmxvY2tzJztcbmltcG9ydCB7IE1heWJlLCBPcHRpb24gfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IE9wcywgVGVtcGxhdGVNZXRhIH0gZnJvbSAnQGdsaW1tZXIvd2lyZS1mb3JtYXQnO1xuXG5pbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gJy4vdGVtcGxhdGUnO1xuaW1wb3J0IHsgUmVnaXN0ZXIsIGRlYnVnU2xpY2UgfSBmcm9tICcuL29wY29kZXMnO1xuXG5pbXBvcnQgeyBBVFRSU19CTE9DSywgQ2xpZW50U2lkZSwgY29tcGlsZVN0YXRlbWVudCB9IGZyb20gJy4vc2Nhbm5lcic7XG5cbmltcG9ydCB7XG4gIENvbXBvbmVudEFyZ3MsXG4gIENvbXBvbmVudEJ1aWxkZXIgYXMgSUNvbXBvbmVudEJ1aWxkZXIsXG4gIER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uXG59IGZyb20gJy4vb3Bjb2RlLWJ1aWxkZXInO1xuXG5pbXBvcnQgeyBleHByIH0gZnJvbSAnLi9zeW50YXgvZnVuY3Rpb25zJztcblxuaW1wb3J0IE9wY29kZUJ1aWxkZXJEU0wgZnJvbSAnLi9jb21waWxlZC9vcGNvZGVzL2J1aWxkZXInO1xuXG5pbXBvcnQgKiBhcyBDb21wb25lbnQgZnJvbSAnLi9jb21wb25lbnQvaW50ZXJmYWNlcyc7XG5cbmltcG9ydCAqIGFzIFdpcmVGb3JtYXQgZnJvbSAnQGdsaW1tZXIvd2lyZS1mb3JtYXQnO1xuXG5pbXBvcnQgeyBQdWJsaWNWTSB9IGZyb20gJy4vdm0vYXBwZW5kJztcbmltcG9ydCB7IElBcmd1bWVudHMgfSBmcm9tICcuL3ZtL2FyZ3VtZW50cyc7XG5pbXBvcnQgeyBGdW5jdGlvbkV4cHJlc3Npb24gfSBmcm9tIFwiLi9jb21waWxlZC9vcGNvZGVzL2V4cHJlc3Npb25zXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGlsYWJsZUxheW91dCB7XG4gIGNvbXBpbGUoYnVpbGRlcjogQ29tcG9uZW50LkNvbXBvbmVudExheW91dEJ1aWxkZXIpOiB2b2lkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcGlsZUxheW91dChjb21waWxhYmxlOiBDb21waWxhYmxlTGF5b3V0LCBlbnY6IEVudmlyb25tZW50KTogQ29tcGlsZWREeW5hbWljUHJvZ3JhbSB7XG4gIGxldCBidWlsZGVyID0gbmV3IENvbXBvbmVudExheW91dEJ1aWxkZXIoZW52KTtcblxuICBjb21waWxhYmxlLmNvbXBpbGUoYnVpbGRlcik7XG5cbiAgcmV0dXJuIGJ1aWxkZXIuY29tcGlsZSgpO1xufVxuXG5pbnRlcmZhY2UgSW5uZXJMYXlvdXRCdWlsZGVyIHtcbiAgdGFnOiBDb21wb25lbnQuQ29tcG9uZW50VGFnQnVpbGRlcjtcbiAgYXR0cnM6IENvbXBvbmVudC5Db21wb25lbnRBdHRyc0J1aWxkZXI7XG4gIGNvbXBpbGUoKTogQ29tcGlsZWREeW5hbWljUHJvZ3JhbTtcbn1cblxuY2xhc3MgQ29tcG9uZW50TGF5b3V0QnVpbGRlciBpbXBsZW1lbnRzIENvbXBvbmVudC5Db21wb25lbnRMYXlvdXRCdWlsZGVyIHtcbiAgcHJpdmF0ZSBpbm5lcjogSW5uZXJMYXlvdXRCdWlsZGVyO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlbnY6IEVudmlyb25tZW50KSB7fVxuXG4gIHdyYXBMYXlvdXQobGF5b3V0OiBUZW1wbGF0ZTxUZW1wbGF0ZU1ldGE+KSB7XG4gICAgdGhpcy5pbm5lciA9IG5ldyBXcmFwcGVkQnVpbGRlcih0aGlzLmVudiwgbGF5b3V0KTtcbiAgfVxuXG4gIGZyb21MYXlvdXQobGF5b3V0OiBUZW1wbGF0ZTxUZW1wbGF0ZU1ldGE+KSB7XG4gICAgdGhpcy5pbm5lciA9IG5ldyBVbndyYXBwZWRCdWlsZGVyKHRoaXMuZW52LCBsYXlvdXQpO1xuICB9XG5cbiAgY29tcGlsZSgpOiBDb21waWxlZER5bmFtaWNQcm9ncmFtIHtcbiAgICByZXR1cm4gdGhpcy5pbm5lci5jb21waWxlKCk7XG4gIH1cblxuICBnZXQgdGFnKCk6IENvbXBvbmVudC5Db21wb25lbnRUYWdCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbm5lci50YWc7XG4gIH1cblxuICBnZXQgYXR0cnMoKTogQ29tcG9uZW50LkNvbXBvbmVudEF0dHJzQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXIuYXR0cnM7XG4gIH1cbn1cblxuY2xhc3MgV3JhcHBlZEJ1aWxkZXIgaW1wbGVtZW50cyBJbm5lckxheW91dEJ1aWxkZXIge1xuICBwdWJsaWMgdGFnID0gbmV3IENvbXBvbmVudFRhZ0J1aWxkZXIoKTtcbiAgcHVibGljIGF0dHJzID0gbmV3IENvbXBvbmVudEF0dHJzQnVpbGRlcigpO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlbnY6IEVudmlyb25tZW50LCBwcml2YXRlIGxheW91dDogVGVtcGxhdGU8VGVtcGxhdGVNZXRhPikge31cblxuICBjb21waWxlKCk6IENvbXBpbGVkRHluYW1pY1Byb2dyYW0ge1xuICAgIC8vPT09PT09PT1EWU5BTUlDXG4gICAgLy8gICAgICAgIFB1dFZhbHVlKFRhZ0V4cHIpXG4gICAgLy8gICAgICAgIFRlc3RcbiAgICAvLyAgICAgICAgSnVtcFVubGVzcyhCT0RZKVxuICAgIC8vICAgICAgICBPcGVuRHluYW1pY1ByaW1pdGl2ZUVsZW1lbnRcbiAgICAvLyAgICAgICAgRGlkQ3JlYXRlRWxlbWVudFxuICAgIC8vICAgICAgICAuLi5hdHRyIHN0YXRlbWVudHMuLi5cbiAgICAvLyAgICAgICAgRmx1c2hFbGVtZW50XG4gICAgLy8gQk9EWTogIE5vb3BcbiAgICAvLyAgICAgICAgLi4uYm9keSBzdGF0ZW1lbnRzLi4uXG4gICAgLy8gICAgICAgIFB1dFZhbHVlKFRhZ0V4cHIpXG4gICAgLy8gICAgICAgIFRlc3RcbiAgICAvLyAgICAgICAgSnVtcFVubGVzcyhFTkQpXG4gICAgLy8gICAgICAgIENsb3NlRWxlbWVudFxuICAgIC8vIEVORDogICBOb29wXG4gICAgLy8gICAgICAgIERpZFJlbmRlckxheW91dFxuICAgIC8vICAgICAgICBFeGl0XG4gICAgLy9cbiAgICAvLz09PT09PT09U1RBVElDXG4gICAgLy8gICAgICAgIE9wZW5QcmltaXRpdmVFbGVtZW50T3Bjb2RlXG4gICAgLy8gICAgICAgIERpZENyZWF0ZUVsZW1lbnRcbiAgICAvLyAgICAgICAgLi4uYXR0ciBzdGF0ZW1lbnRzLi4uXG4gICAgLy8gICAgICAgIEZsdXNoRWxlbWVudFxuICAgIC8vICAgICAgICAuLi5ib2R5IHN0YXRlbWVudHMuLi5cbiAgICAvLyAgICAgICAgQ2xvc2VFbGVtZW50XG4gICAgLy8gICAgICAgIERpZFJlbmRlckxheW91dFxuICAgIC8vICAgICAgICBFeGl0XG5cbiAgICBsZXQgeyBlbnYsIGxheW91dCB9ID0gdGhpcztcbiAgICBsZXQgbWV0YSA9IHsgdGVtcGxhdGVNZXRhOiBsYXlvdXQubWV0YSwgc3ltYm9sczogbGF5b3V0LnN5bWJvbHMsIGFzUGFydGlhbDogZmFsc2UgfTtcblxuICAgIGxldCBkeW5hbWljVGFnID0gdGhpcy50YWcuZ2V0RHluYW1pYygpO1xuICAgIGxldCBzdGF0aWNUYWcgPSB0aGlzLnRhZy5nZXRTdGF0aWMoKTtcblxuICAgIGxldCBiID0gYnVpbGRlcihlbnYsIG1ldGEpO1xuXG4gICAgYi5zdGFydExhYmVscygpO1xuXG4gICAgaWYgKGR5bmFtaWNUYWcpIHtcbiAgICAgIGIuZmV0Y2goUmVnaXN0ZXIuczEpO1xuXG4gICAgICBleHByKGR5bmFtaWNUYWcsIGIpO1xuXG4gICAgICBiLmR1cCgpO1xuICAgICAgYi5sb2FkKFJlZ2lzdGVyLnMxKTtcblxuICAgICAgYi50ZXN0KCdzaW1wbGUnKTtcblxuICAgICAgYi5qdW1wVW5sZXNzKCdCT0RZJyk7XG5cbiAgICAgIGIuZmV0Y2goUmVnaXN0ZXIuczEpO1xuICAgICAgYi5wdXNoQ29tcG9uZW50T3BlcmF0aW9ucygpO1xuICAgICAgYi5vcGVuRHluYW1pY0VsZW1lbnQoKTtcbiAgICB9IGVsc2UgaWYgKHN0YXRpY1RhZykge1xuICAgICAgYi5wdXNoQ29tcG9uZW50T3BlcmF0aW9ucygpO1xuICAgICAgYi5vcGVuRWxlbWVudFdpdGhPcGVyYXRpb25zKHN0YXRpY1RhZyk7XG4gICAgfVxuXG4gICAgaWYgKGR5bmFtaWNUYWcgfHwgc3RhdGljVGFnKSB7XG4gICAgICBiLmRpZENyZWF0ZUVsZW1lbnQoUmVnaXN0ZXIuczApO1xuXG4gICAgICBsZXQgYXR0cnMgPSB0aGlzLmF0dHJzWydidWZmZXInXTtcblxuICAgICAgZm9yIChsZXQgaT0wOyBpPGF0dHJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbXBpbGVTdGF0ZW1lbnQoYXR0cnNbaV0sIGIpO1xuICAgICAgfVxuXG4gICAgICBiLmZsdXNoRWxlbWVudCgpO1xuICAgIH1cblxuICAgIGIubGFiZWwoJ0JPRFknKTtcbiAgICBiLmludm9rZVN0YXRpYyhsYXlvdXQuYXNCbG9jaygpKTtcblxuICAgIGlmIChkeW5hbWljVGFnKSB7XG4gICAgICBiLmZldGNoKFJlZ2lzdGVyLnMxKTtcbiAgICAgIGIudGVzdCgnc2ltcGxlJyk7XG4gICAgICBiLmp1bXBVbmxlc3MoJ0VORCcpO1xuICAgICAgYi5jbG9zZUVsZW1lbnQoKTtcbiAgICB9IGVsc2UgaWYgKHN0YXRpY1RhZykge1xuICAgICAgYi5jbG9zZUVsZW1lbnQoKTtcbiAgICB9XG5cbiAgICBiLmxhYmVsKCdFTkQnKTtcblxuICAgIGIuZGlkUmVuZGVyTGF5b3V0KFJlZ2lzdGVyLnMwKTtcblxuICAgIGlmIChkeW5hbWljVGFnKSB7XG4gICAgICBiLmxvYWQoUmVnaXN0ZXIuczEpO1xuICAgIH1cblxuICAgIGIuc3RvcExhYmVscygpO1xuXG4gICAgbGV0IHN0YXJ0ID0gYi5zdGFydDtcbiAgICBsZXQgZW5kID0gYi5maW5hbGl6ZSgpO1xuXG4gICAgZGVidWdTbGljZShlbnYsIHN0YXJ0LCBlbmQpO1xuXG4gICAgcmV0dXJuIG5ldyBDb21waWxlZER5bmFtaWNUZW1wbGF0ZShzdGFydCwgZW5kLCB7XG4gICAgICBtZXRhLFxuICAgICAgaGFzRXZhbDogbGF5b3V0Lmhhc0V2YWwsXG4gICAgICBzeW1ib2xzOiBsYXlvdXQuc3ltYm9scy5jb25jYXQoW0FUVFJTX0JMT0NLXSlcbiAgICB9KTtcbiAgfVxufVxuXG5jbGFzcyBVbndyYXBwZWRCdWlsZGVyIGltcGxlbWVudHMgSW5uZXJMYXlvdXRCdWlsZGVyIHtcbiAgcHVibGljIGF0dHJzID0gbmV3IENvbXBvbmVudEF0dHJzQnVpbGRlcigpO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlbnY6IEVudmlyb25tZW50LCBwcml2YXRlIGxheW91dDogVGVtcGxhdGU8VGVtcGxhdGVNZXRhPikge31cblxuICBnZXQgdGFnKCk6IENvbXBvbmVudC5Db21wb25lbnRUYWdCdWlsZGVyIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0JVRzogQ2Fubm90IGNhbGwgYHRhZ2Agb24gYW4gVW53cmFwcGVkQnVpbGRlcicpO1xuICB9XG5cbiAgY29tcGlsZSgpOiBDb21waWxlZER5bmFtaWNQcm9ncmFtIHtcbiAgICBsZXQgeyBlbnYsIGxheW91dCB9ID0gdGhpcztcbiAgICByZXR1cm4gbGF5b3V0LmFzTGF5b3V0KHRoaXMuYXR0cnNbJ2J1ZmZlciddKS5jb21waWxlRHluYW1pYyhlbnYpO1xuICB9XG59XG5cbmNsYXNzIENvbXBvbmVudFRhZ0J1aWxkZXIgaW1wbGVtZW50cyBDb21wb25lbnQuQ29tcG9uZW50VGFnQnVpbGRlciB7XG4gIHB1YmxpYyBpc0R5bmFtaWM6IE9wdGlvbjxib29sZWFuPiA9IG51bGw7XG4gIHB1YmxpYyBpc1N0YXRpYzogT3B0aW9uPGJvb2xlYW4+ID0gbnVsbDtcbiAgcHVibGljIHN0YXRpY1RhZ05hbWU6IE9wdGlvbjxzdHJpbmc+ID0gbnVsbDtcbiAgcHVibGljIGR5bmFtaWNUYWdOYW1lOiBPcHRpb248V2lyZUZvcm1hdC5FeHByZXNzaW9uPiA9IG51bGw7XG5cbiAgZ2V0RHluYW1pYygpOiBNYXliZTxXaXJlRm9ybWF0LkV4cHJlc3Npb24+IHtcbiAgICBpZiAodGhpcy5pc0R5bmFtaWMpIHtcbiAgICAgIHJldHVybiB0aGlzLmR5bmFtaWNUYWdOYW1lO1xuICAgIH1cbiAgfVxuXG4gIGdldFN0YXRpYygpOiBNYXliZTxzdHJpbmc+IHtcbiAgICBpZiAodGhpcy5pc1N0YXRpYykge1xuICAgICAgcmV0dXJuIHRoaXMuc3RhdGljVGFnTmFtZTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWModGFnTmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5pc1N0YXRpYyA9IHRydWU7XG4gICAgdGhpcy5zdGF0aWNUYWdOYW1lID0gdGFnTmFtZTtcbiAgfVxuXG4gIGR5bmFtaWModGFnTmFtZTogRnVuY3Rpb25FeHByZXNzaW9uPHN0cmluZz4pIHtcbiAgICB0aGlzLmlzRHluYW1pYyA9IHRydWU7XG4gICAgdGhpcy5keW5hbWljVGFnTmFtZSA9IFtPcHMuQ2xpZW50U2lkZUV4cHJlc3Npb24sIENsaWVudFNpZGUuT3BzLkZ1bmN0aW9uRXhwcmVzc2lvbiwgdGFnTmFtZV07XG4gIH1cbn1cblxuY2xhc3MgQ29tcG9uZW50QXR0cnNCdWlsZGVyIGltcGxlbWVudHMgQ29tcG9uZW50LkNvbXBvbmVudEF0dHJzQnVpbGRlciB7XG4gIHByaXZhdGUgYnVmZmVyOiBXaXJlRm9ybWF0LlN0YXRlbWVudHMuQXR0cmlidXRlW10gPSBbXTtcblxuICBzdGF0aWMobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5idWZmZXIucHVzaChbT3BzLlN0YXRpY0F0dHIsIG5hbWUsIHZhbHVlLCBudWxsXSk7XG4gIH1cblxuICBkeW5hbWljKG5hbWU6IHN0cmluZywgdmFsdWU6IEZ1bmN0aW9uRXhwcmVzc2lvbjxzdHJpbmc+KSB7XG4gICAgdGhpcy5idWZmZXIucHVzaChbT3BzLkR5bmFtaWNBdHRyLCBuYW1lLCBbT3BzLkNsaWVudFNpZGVFeHByZXNzaW9uLCBDbGllbnRTaWRlLk9wcy5GdW5jdGlvbkV4cHJlc3Npb24sIHZhbHVlXSwgbnVsbF0pO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb21wb25lbnRCdWlsZGVyIGltcGxlbWVudHMgSUNvbXBvbmVudEJ1aWxkZXIge1xuICBwcml2YXRlIGVudjogRW52aXJvbm1lbnQ7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBidWlsZGVyOiBPcGNvZGVCdWlsZGVyRFNMKSB7XG4gICAgdGhpcy5lbnYgPSBidWlsZGVyLmVudjtcbiAgfVxuXG4gIHN0YXRpYyhkZWZpbml0aW9uOiBDb21wb25lbnQuQ29tcG9uZW50RGVmaW5pdGlvbjxPcGFxdWU+LCBhcmdzOiBDb21wb25lbnRBcmdzKSB7XG4gICAgbGV0IFtwYXJhbXMsIGhhc2gsIF9kZWZhdWx0LCBpbnZlcnNlXSA9IGFyZ3M7XG4gICAgbGV0IHsgYnVpbGRlciB9ID0gdGhpcztcblxuICAgIGJ1aWxkZXIucHVzaENvbXBvbmVudE1hbmFnZXIoZGVmaW5pdGlvbik7XG4gICAgYnVpbGRlci5pbnZva2VDb21wb25lbnQobnVsbCwgcGFyYW1zLCBoYXNoLCBfZGVmYXVsdCwgaW52ZXJzZSk7XG4gIH1cblxuICBkeW5hbWljKGRlZmluaXRpb25BcmdzOiBDb21wb25lbnRBcmdzLCBnZXREZWZpbml0aW9uOiBEeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvbiwgYXJnczogQ29tcG9uZW50QXJncykge1xuICAgIGxldCBbcGFyYW1zLCBoYXNoLCBibG9jaywgaW52ZXJzZV0gPSBhcmdzO1xuICAgIGxldCB7IGJ1aWxkZXIgfSA9IHRoaXM7XG5cbiAgICBpZiAoIWRlZmluaXRpb25BcmdzIHx8IGRlZmluaXRpb25BcmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRHluYW1pYyBzeW50YXggd2l0aG91dCBhbiBhcmd1bWVudFwiKTtcbiAgICB9XG5cbiAgICBsZXQgbWV0YSA9IHRoaXMuYnVpbGRlci5tZXRhLnRlbXBsYXRlTWV0YTtcblxuICAgIGZ1bmN0aW9uIGhlbHBlcih2bTogUHVibGljVk0sIGFyZ3M6IElBcmd1bWVudHMpIHtcbiAgICAgIHJldHVybiBnZXREZWZpbml0aW9uKHZtLCBhcmdzLCBtZXRhKTtcbiAgICB9XG5cbiAgICBidWlsZGVyLnN0YXJ0TGFiZWxzKCk7XG5cbiAgICBidWlsZGVyLnB1c2hGcmFtZSgpO1xuXG4gICAgYnVpbGRlci5yZXR1cm5UbygnRU5EJyk7XG5cbiAgICBidWlsZGVyLmNvbXBpbGVBcmdzKGRlZmluaXRpb25BcmdzWzBdLCBkZWZpbml0aW9uQXJnc1sxXSwgdHJ1ZSk7XG4gICAgYnVpbGRlci5oZWxwZXIoaGVscGVyKTtcblxuICAgIGJ1aWxkZXIuZHVwKCk7XG4gICAgYnVpbGRlci50ZXN0KCdzaW1wbGUnKTtcblxuICAgIGJ1aWxkZXIuZW50ZXIoMik7XG5cbiAgICBidWlsZGVyLmp1bXBVbmxlc3MoJ0VMU0UnKTtcblxuICAgIGJ1aWxkZXIucHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyKCk7XG4gICAgYnVpbGRlci5pbnZva2VDb21wb25lbnQobnVsbCwgcGFyYW1zLCBoYXNoLCBibG9jaywgaW52ZXJzZSk7XG5cbiAgICBidWlsZGVyLmxhYmVsKCdFTFNFJyk7XG4gICAgYnVpbGRlci5leGl0KCk7XG4gICAgYnVpbGRlci5yZXR1cm4oKTtcblxuICAgIGJ1aWxkZXIubGFiZWwoJ0VORCcpO1xuICAgIGJ1aWxkZXIucG9wRnJhbWUoKTtcblxuICAgIGJ1aWxkZXIuc3RvcExhYmVscygpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZGVyKGVudjogRW52aXJvbm1lbnQsIG1ldGE6IENvbXBpbGF0aW9uTWV0YSkge1xuICByZXR1cm4gbmV3IE9wY29kZUJ1aWxkZXJEU0woZW52LCBtZXRhKTtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjb21waWxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBRUEsQUFBTyxTQUEwQixBQUF1QixBQUFFLCtCQUFNLEFBQW1CLEFBQUM7QUFFcEYsQUFBTyxTQUFFLEFBQUcsQUFBZ0IsV0FBTSxBQUFzQixBQUFDO0FBR3pELEFBQU8sU0FBRSxBQUFRLEFBQUUsZ0JBQU0sQUFBVyxBQUFDO0FBRXJDLEFBQU8sU0FBRSxBQUFXLGFBQUUsQUFBVSxZQUFFLEFBQWdCLEFBQUUsd0JBQU0sQUFBVyxBQUFDO0FBUXRFLEFBQU8sU0FBRSxBQUFJLEFBQUUsWUFBTSxBQUFvQixBQUFDO0FBRTFDLE9BQU8sQUFBZ0Isc0JBQU0sQUFBNEIsQUFBQztBQWMxRCxBQUFNLDhCQUF3QixBQUE0QixZQUFFLEFBQWdCO0FBQzFFLFFBQUksQUFBTyxVQUFHLElBQUksQUFBc0IsdUJBQUMsQUFBRyxBQUFDLEFBQUM7QUFFOUMsQUFBVSxlQUFDLEFBQU8sUUFBQyxBQUFPLEFBQUMsQUFBQztBQUU1QixBQUFNLFdBQUMsQUFBTyxRQUFDLEFBQU8sQUFBRSxBQUFDLEFBQzNCO0FBQUMsQUFRRDs7O0FBR0Usb0NBQW1CLEFBQWdCOzs7QUFBaEIsYUFBRyxNQUFILEFBQUcsQUFBYSxBQUFHO0FBQUM7O3FDQUV2QyxBQUFVLGlDQUFDLEFBQThCO0FBQ3ZDLEFBQUksYUFBQyxBQUFLLFFBQUcsSUFBSSxBQUFjLGVBQUMsQUFBSSxLQUFDLEFBQUcsS0FBRSxBQUFNLEFBQUMsQUFBQyxBQUNwRDtBQUFDOztxQ0FFRCxBQUFVLGlDQUFDLEFBQThCO0FBQ3ZDLEFBQUksYUFBQyxBQUFLLFFBQUcsSUFBSSxBQUFnQixpQkFBQyxBQUFJLEtBQUMsQUFBRyxLQUFFLEFBQU0sQUFBQyxBQUFDLEFBQ3REO0FBQUM7O3FDQUVELEFBQU87QUFDTCxBQUFNLGVBQUMsQUFBSSxLQUFDLEFBQUssTUFBQyxBQUFPLEFBQUUsQUFB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aEUsQUFBTyxnQkFBQyxBQUFNLE9BQUMsQUFBTSxBQUFDLEFBQUM7QUFFdkIsQUFBTyxnQkFBQyxBQUFHLEFBQUUsQUFBQztBQUNkLEFBQU8sZ0JBQUMsQUFBSSxLQUFDLEFBQVEsQUFBQyxBQUFDO0FBRXZCLEFBQU8sZ0JBQUMsQUFBSyxNQUFDLEFBQUMsQUFBQyxBQUFDO0FBRWpCLEFBQU8sZ0JBQUMsQUFBVSxXQUFDLEFBQU0sQUFBQyxBQUFDO0FBRTNCLEFBQU8sZ0JBQUMsQUFBMkIsQUFBRSxBQUFDO0FBQ3RDLEFBQU8sZ0JBQUMsQUFBZSxnQkFBQyxBQUFJLE1BQUUsQUFBTSxRQUFFLEFBQUksTUFBRSxBQUFLLE9BQUUsQUFBTyxBQUFDLEFBQUM7QUFFNUQsQUFBTyxnQkFBQyxBQUFLLE1BQUMsQUFBTSxBQUFDLEFBQUM7QUFDdEIsQUFBTyxnQkFBQyxBQUFJLEFBQUUsQUFBQztBQUNmLEFBQU8sZ0JBQUMsQUFBTSxBQUFFLEFBQUM7QUFFakIsQUFBTyxnQkFBQyxBQUFLLE1BQUMsQUFBSyxBQUFDLEFBQUM7QUFDckIsQUFBTyxnQkFBQyxBQUFRLEFBQUUsQUFBQztBQUVuQixBQUFPLGdCQUFDLEFBQVUsQUFBRSxBQUFDLEFBQ3ZCO0FBQUMsQUFDRjs7OztBQUVELEFBQU0sd0JBQWtCLEFBQWdCLEtBQUUsQUFBcUI7QUFDN0QsQUFBTSxXQUFDLElBQUksQUFBZ0IsaUJBQUMsQUFBRyxLQUFFLEFBQUksQUFBQyxBQUFDLEFBQ3pDO0FBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcGFxdWUsIENvbXBpbGF0aW9uTWV0YSB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgQ29tcGlsZWREeW5hbWljUHJvZ3JhbSwgQ29tcGlsZWREeW5hbWljVGVtcGxhdGUgfSBmcm9tICcuL2NvbXBpbGVkL2Jsb2Nrcyc7XG5pbXBvcnQgeyBNYXliZSwgT3B0aW9uIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBPcHMsIFRlbXBsYXRlTWV0YSB9IGZyb20gJ0BnbGltbWVyL3dpcmUtZm9ybWF0JztcblxuaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tICcuL3RlbXBsYXRlJztcbmltcG9ydCB7IFJlZ2lzdGVyIH0gZnJvbSAnLi9vcGNvZGVzJztcblxuaW1wb3J0IHsgQVRUUlNfQkxPQ0ssIENsaWVudFNpZGUsIGNvbXBpbGVTdGF0ZW1lbnQgfSBmcm9tICcuL3NjYW5uZXInO1xuXG5pbXBvcnQge1xuICBDb21wb25lbnRBcmdzLFxuICBDb21wb25lbnRCdWlsZGVyIGFzIElDb21wb25lbnRCdWlsZGVyLFxuICBEeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvblxufSBmcm9tICcuL29wY29kZS1idWlsZGVyJztcblxuaW1wb3J0IHsgZXhwciB9IGZyb20gJy4vc3ludGF4L2Z1bmN0aW9ucyc7XG5cbmltcG9ydCBPcGNvZGVCdWlsZGVyRFNMIGZyb20gJy4vY29tcGlsZWQvb3Bjb2Rlcy9idWlsZGVyJztcblxuaW1wb3J0ICogYXMgQ29tcG9uZW50IGZyb20gJy4vY29tcG9uZW50L2ludGVyZmFjZXMnO1xuXG5pbXBvcnQgKiBhcyBXaXJlRm9ybWF0IGZyb20gJ0BnbGltbWVyL3dpcmUtZm9ybWF0JztcblxuaW1wb3J0IHsgUHVibGljVk0gfSBmcm9tICcuL3ZtL2FwcGVuZCc7XG5pbXBvcnQgeyBJQXJndW1lbnRzIH0gZnJvbSAnLi92bS9hcmd1bWVudHMnO1xuaW1wb3J0IHsgRnVuY3Rpb25FeHByZXNzaW9uIH0gZnJvbSBcIi4vY29tcGlsZWQvb3Bjb2Rlcy9leHByZXNzaW9uc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBpbGFibGVMYXlvdXQge1xuICBjb21waWxlKGJ1aWxkZXI6IENvbXBvbmVudC5Db21wb25lbnRMYXlvdXRCdWlsZGVyKTogdm9pZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBpbGVMYXlvdXQoY29tcGlsYWJsZTogQ29tcGlsYWJsZUxheW91dCwgZW52OiBFbnZpcm9ubWVudCk6IENvbXBpbGVkRHluYW1pY1Byb2dyYW0ge1xuICBsZXQgYnVpbGRlciA9IG5ldyBDb21wb25lbnRMYXlvdXRCdWlsZGVyKGVudik7XG5cbiAgY29tcGlsYWJsZS5jb21waWxlKGJ1aWxkZXIpO1xuXG4gIHJldHVybiBidWlsZGVyLmNvbXBpbGUoKTtcbn1cblxuaW50ZXJmYWNlIElubmVyTGF5b3V0QnVpbGRlciB7XG4gIHRhZzogQ29tcG9uZW50LkNvbXBvbmVudFRhZ0J1aWxkZXI7XG4gIGF0dHJzOiBDb21wb25lbnQuQ29tcG9uZW50QXR0cnNCdWlsZGVyO1xuICBjb21waWxlKCk6IENvbXBpbGVkRHluYW1pY1Byb2dyYW07XG59XG5cbmNsYXNzIENvbXBvbmVudExheW91dEJ1aWxkZXIgaW1wbGVtZW50cyBDb21wb25lbnQuQ29tcG9uZW50TGF5b3V0QnVpbGRlciB7XG4gIHByaXZhdGUgaW5uZXI6IElubmVyTGF5b3V0QnVpbGRlcjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZW52OiBFbnZpcm9ubWVudCkge31cblxuICB3cmFwTGF5b3V0KGxheW91dDogVGVtcGxhdGU8VGVtcGxhdGVNZXRhPikge1xuICAgIHRoaXMuaW5uZXIgPSBuZXcgV3JhcHBlZEJ1aWxkZXIodGhpcy5lbnYsIGxheW91dCk7XG4gIH1cblxuICBmcm9tTGF5b3V0KGxheW91dDogVGVtcGxhdGU8VGVtcGxhdGVNZXRhPikge1xuICAgIHRoaXMuaW5uZXIgPSBuZXcgVW53cmFwcGVkQnVpbGRlcih0aGlzLmVudiwgbGF5b3V0KTtcbiAgfVxuXG4gIGNvbXBpbGUoKTogQ29tcGlsZWREeW5hbWljUHJvZ3JhbSB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXIuY29tcGlsZSgpO1xuICB9XG5cbiAgZ2V0IHRhZygpOiBDb21wb25lbnQuQ29tcG9uZW50VGFnQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXIudGFnO1xuICB9XG5cbiAgZ2V0IGF0dHJzKCk6IENvbXBvbmVudC5Db21wb25lbnRBdHRyc0J1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmlubmVyLmF0dHJzO1xuICB9XG59XG5cbmNsYXNzIFdyYXBwZWRCdWlsZGVyIGltcGxlbWVudHMgSW5uZXJMYXlvdXRCdWlsZGVyIHtcbiAgcHVibGljIHRhZyA9IG5ldyBDb21wb25lbnRUYWdCdWlsZGVyKCk7XG4gIHB1YmxpYyBhdHRycyA9IG5ldyBDb21wb25lbnRBdHRyc0J1aWxkZXIoKTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZW52OiBFbnZpcm9ubWVudCwgcHJpdmF0ZSBsYXlvdXQ6IFRlbXBsYXRlPFRlbXBsYXRlTWV0YT4pIHt9XG5cbiAgY29tcGlsZSgpOiBDb21waWxlZER5bmFtaWNQcm9ncmFtIHtcbiAgICAvLz09PT09PT09RFlOQU1JQ1xuICAgIC8vICAgICAgICBQdXRWYWx1ZShUYWdFeHByKVxuICAgIC8vICAgICAgICBUZXN0XG4gICAgLy8gICAgICAgIEp1bXBVbmxlc3MoQk9EWSlcbiAgICAvLyAgICAgICAgT3BlbkR5bmFtaWNQcmltaXRpdmVFbGVtZW50XG4gICAgLy8gICAgICAgIERpZENyZWF0ZUVsZW1lbnRcbiAgICAvLyAgICAgICAgLi4uYXR0ciBzdGF0ZW1lbnRzLi4uXG4gICAgLy8gICAgICAgIEZsdXNoRWxlbWVudFxuICAgIC8vIEJPRFk6ICBOb29wXG4gICAgLy8gICAgICAgIC4uLmJvZHkgc3RhdGVtZW50cy4uLlxuICAgIC8vICAgICAgICBQdXRWYWx1ZShUYWdFeHByKVxuICAgIC8vICAgICAgICBUZXN0XG4gICAgLy8gICAgICAgIEp1bXBVbmxlc3MoRU5EKVxuICAgIC8vICAgICAgICBDbG9zZUVsZW1lbnRcbiAgICAvLyBFTkQ6ICAgTm9vcFxuICAgIC8vICAgICAgICBEaWRSZW5kZXJMYXlvdXRcbiAgICAvLyAgICAgICAgRXhpdFxuICAgIC8vXG4gICAgLy89PT09PT09PVNUQVRJQ1xuICAgIC8vICAgICAgICBPcGVuUHJpbWl0aXZlRWxlbWVudE9wY29kZVxuICAgIC8vICAgICAgICBEaWRDcmVhdGVFbGVtZW50XG4gICAgLy8gICAgICAgIC4uLmF0dHIgc3RhdGVtZW50cy4uLlxuICAgIC8vICAgICAgICBGbHVzaEVsZW1lbnRcbiAgICAvLyAgICAgICAgLi4uYm9keSBzdGF0ZW1lbnRzLi4uXG4gICAgLy8gICAgICAgIENsb3NlRWxlbWVudFxuICAgIC8vICAgICAgICBEaWRSZW5kZXJMYXlvdXRcbiAgICAvLyAgICAgICAgRXhpdFxuXG4gICAgbGV0IHsgZW52LCBsYXlvdXQgfSA9IHRoaXM7XG4gICAgbGV0IG1ldGEgPSB7IHRlbXBsYXRlTWV0YTogbGF5b3V0Lm1ldGEsIHN5bWJvbHM6IGxheW91dC5zeW1ib2xzLCBhc1BhcnRpYWw6IGZhbHNlIH07XG5cbiAgICBsZXQgZHluYW1pY1RhZyA9IHRoaXMudGFnLmdldER5bmFtaWMoKTtcbiAgICBsZXQgc3RhdGljVGFnID0gdGhpcy50YWcuZ2V0U3RhdGljKCk7XG5cbiAgICBsZXQgYiA9IGJ1aWxkZXIoZW52LCBtZXRhKTtcblxuICAgIGIuc3RhcnRMYWJlbHMoKTtcblxuICAgIGlmIChkeW5hbWljVGFnKSB7XG4gICAgICBiLmZldGNoKFJlZ2lzdGVyLnMxKTtcblxuICAgICAgZXhwcihkeW5hbWljVGFnLCBiKTtcblxuICAgICAgYi5kdXAoKTtcbiAgICAgIGIubG9hZChSZWdpc3Rlci5zMSk7XG5cbiAgICAgIGIudGVzdCgnc2ltcGxlJyk7XG5cbiAgICAgIGIuanVtcFVubGVzcygnQk9EWScpO1xuXG4gICAgICBiLmZldGNoKFJlZ2lzdGVyLnMxKTtcbiAgICAgIGIucHVzaENvbXBvbmVudE9wZXJhdGlvbnMoKTtcbiAgICAgIGIub3BlbkR5bmFtaWNFbGVtZW50KCk7XG4gICAgfSBlbHNlIGlmIChzdGF0aWNUYWcpIHtcbiAgICAgIGIucHVzaENvbXBvbmVudE9wZXJhdGlvbnMoKTtcbiAgICAgIGIub3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucyhzdGF0aWNUYWcpO1xuICAgIH1cblxuICAgIGlmIChkeW5hbWljVGFnIHx8IHN0YXRpY1RhZykge1xuICAgICAgYi5kaWRDcmVhdGVFbGVtZW50KFJlZ2lzdGVyLnMwKTtcblxuICAgICAgbGV0IGF0dHJzID0gdGhpcy5hdHRyc1snYnVmZmVyJ107XG5cbiAgICAgIGZvciAobGV0IGk9MDsgaTxhdHRycy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb21waWxlU3RhdGVtZW50KGF0dHJzW2ldLCBiKTtcbiAgICAgIH1cblxuICAgICAgYi5mbHVzaEVsZW1lbnQoKTtcbiAgICB9XG5cbiAgICBiLmxhYmVsKCdCT0RZJyk7XG4gICAgYi5pbnZva2VTdGF0aWMobGF5b3V0LmFzQmxvY2soKSk7XG5cbiAgICBpZiAoZHluYW1pY1RhZykge1xuICAgICAgYi5mZXRjaChSZWdpc3Rlci5zMSk7XG4gICAgICBiLnRlc3QoJ3NpbXBsZScpO1xuICAgICAgYi5qdW1wVW5sZXNzKCdFTkQnKTtcbiAgICAgIGIuY2xvc2VFbGVtZW50KCk7XG4gICAgfSBlbHNlIGlmIChzdGF0aWNUYWcpIHtcbiAgICAgIGIuY2xvc2VFbGVtZW50KCk7XG4gICAgfVxuXG4gICAgYi5sYWJlbCgnRU5EJyk7XG5cbiAgICBiLmRpZFJlbmRlckxheW91dChSZWdpc3Rlci5zMCk7XG5cbiAgICBpZiAoZHluYW1pY1RhZykge1xuICAgICAgYi5sb2FkKFJlZ2lzdGVyLnMxKTtcbiAgICB9XG5cbiAgICBiLnN0b3BMYWJlbHMoKTtcblxuICAgIGxldCBzdGFydCA9IGIuc3RhcnQ7XG4gICAgbGV0IGVuZCA9IGIuZmluYWxpemUoKTtcblxuICAgIHJldHVybiBuZXcgQ29tcGlsZWREeW5hbWljVGVtcGxhdGUoc3RhcnQsIGVuZCwge1xuICAgICAgbWV0YSxcbiAgICAgIGhhc0V2YWw6IGxheW91dC5oYXNFdmFsLFxuICAgICAgc3ltYm9sczogbGF5b3V0LnN5bWJvbHMuY29uY2F0KFtBVFRSU19CTE9DS10pXG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgVW53cmFwcGVkQnVpbGRlciBpbXBsZW1lbnRzIElubmVyTGF5b3V0QnVpbGRlciB7XG4gIHB1YmxpYyBhdHRycyA9IG5ldyBDb21wb25lbnRBdHRyc0J1aWxkZXIoKTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZW52OiBFbnZpcm9ubWVudCwgcHJpdmF0ZSBsYXlvdXQ6IFRlbXBsYXRlPFRlbXBsYXRlTWV0YT4pIHt9XG5cbiAgZ2V0IHRhZygpOiBDb21wb25lbnQuQ29tcG9uZW50VGFnQnVpbGRlciB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdCVUc6IENhbm5vdCBjYWxsIGB0YWdgIG9uIGFuIFVud3JhcHBlZEJ1aWxkZXInKTtcbiAgfVxuXG4gIGNvbXBpbGUoKTogQ29tcGlsZWREeW5hbWljUHJvZ3JhbSB7XG4gICAgbGV0IHsgZW52LCBsYXlvdXQgfSA9IHRoaXM7XG4gICAgcmV0dXJuIGxheW91dC5hc0xheW91dCh0aGlzLmF0dHJzWydidWZmZXInXSkuY29tcGlsZUR5bmFtaWMoZW52KTtcbiAgfVxufVxuXG5jbGFzcyBDb21wb25lbnRUYWdCdWlsZGVyIGltcGxlbWVudHMgQ29tcG9uZW50LkNvbXBvbmVudFRhZ0J1aWxkZXIge1xuICBwdWJsaWMgaXNEeW5hbWljOiBPcHRpb248Ym9vbGVhbj4gPSBudWxsO1xuICBwdWJsaWMgaXNTdGF0aWM6IE9wdGlvbjxib29sZWFuPiA9IG51bGw7XG4gIHB1YmxpYyBzdGF0aWNUYWdOYW1lOiBPcHRpb248c3RyaW5nPiA9IG51bGw7XG4gIHB1YmxpYyBkeW5hbWljVGFnTmFtZTogT3B0aW9uPFdpcmVGb3JtYXQuRXhwcmVzc2lvbj4gPSBudWxsO1xuXG4gIGdldER5bmFtaWMoKTogTWF5YmU8V2lyZUZvcm1hdC5FeHByZXNzaW9uPiB7XG4gICAgaWYgKHRoaXMuaXNEeW5hbWljKSB7XG4gICAgICByZXR1cm4gdGhpcy5keW5hbWljVGFnTmFtZTtcbiAgICB9XG4gIH1cblxuICBnZXRTdGF0aWMoKTogTWF5YmU8c3RyaW5nPiB7XG4gICAgaWYgKHRoaXMuaXNTdGF0aWMpIHtcbiAgICAgIHJldHVybiB0aGlzLnN0YXRpY1RhZ05hbWU7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljKHRhZ05hbWU6IHN0cmluZykge1xuICAgIHRoaXMuaXNTdGF0aWMgPSB0cnVlO1xuICAgIHRoaXMuc3RhdGljVGFnTmFtZSA9IHRhZ05hbWU7XG4gIH1cblxuICBkeW5hbWljKHRhZ05hbWU6IEZ1bmN0aW9uRXhwcmVzc2lvbjxzdHJpbmc+KSB7XG4gICAgdGhpcy5pc0R5bmFtaWMgPSB0cnVlO1xuICAgIHRoaXMuZHluYW1pY1RhZ05hbWUgPSBbT3BzLkNsaWVudFNpZGVFeHByZXNzaW9uLCBDbGllbnRTaWRlLk9wcy5GdW5jdGlvbkV4cHJlc3Npb24sIHRhZ05hbWVdO1xuICB9XG59XG5cbmNsYXNzIENvbXBvbmVudEF0dHJzQnVpbGRlciBpbXBsZW1lbnRzIENvbXBvbmVudC5Db21wb25lbnRBdHRyc0J1aWxkZXIge1xuICBwcml2YXRlIGJ1ZmZlcjogV2lyZUZvcm1hdC5TdGF0ZW1lbnRzLkF0dHJpYnV0ZVtdID0gW107XG5cbiAgc3RhdGljKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuYnVmZmVyLnB1c2goW09wcy5TdGF0aWNBdHRyLCBuYW1lLCB2YWx1ZSwgbnVsbF0pO1xuICB9XG5cbiAgZHluYW1pYyhuYW1lOiBzdHJpbmcsIHZhbHVlOiBGdW5jdGlvbkV4cHJlc3Npb248c3RyaW5nPikge1xuICAgIHRoaXMuYnVmZmVyLnB1c2goW09wcy5EeW5hbWljQXR0ciwgbmFtZSwgW09wcy5DbGllbnRTaWRlRXhwcmVzc2lvbiwgQ2xpZW50U2lkZS5PcHMuRnVuY3Rpb25FeHByZXNzaW9uLCB2YWx1ZV0sIG51bGxdKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50QnVpbGRlciBpbXBsZW1lbnRzIElDb21wb25lbnRCdWlsZGVyIHtcbiAgcHJpdmF0ZSBlbnY6IEVudmlyb25tZW50O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYnVpbGRlcjogT3Bjb2RlQnVpbGRlckRTTCkge1xuICAgIHRoaXMuZW52ID0gYnVpbGRlci5lbnY7XG4gIH1cblxuICBzdGF0aWMoZGVmaW5pdGlvbjogQ29tcG9uZW50LkNvbXBvbmVudERlZmluaXRpb248T3BhcXVlPiwgYXJnczogQ29tcG9uZW50QXJncykge1xuICAgIGxldCBbcGFyYW1zLCBoYXNoLCBfZGVmYXVsdCwgaW52ZXJzZV0gPSBhcmdzO1xuICAgIGxldCB7IGJ1aWxkZXIgfSA9IHRoaXM7XG5cbiAgICBidWlsZGVyLnB1c2hDb21wb25lbnRNYW5hZ2VyKGRlZmluaXRpb24pO1xuICAgIGJ1aWxkZXIuaW52b2tlQ29tcG9uZW50KG51bGwsIHBhcmFtcywgaGFzaCwgX2RlZmF1bHQsIGludmVyc2UpO1xuICB9XG5cbiAgZHluYW1pYyhkZWZpbml0aW9uQXJnczogQ29tcG9uZW50QXJncywgZ2V0RGVmaW5pdGlvbjogRHluYW1pY0NvbXBvbmVudERlZmluaXRpb24sIGFyZ3M6IENvbXBvbmVudEFyZ3MpIHtcbiAgICBsZXQgW3BhcmFtcywgaGFzaCwgYmxvY2ssIGludmVyc2VdID0gYXJncztcbiAgICBsZXQgeyBidWlsZGVyIH0gPSB0aGlzO1xuXG4gICAgaWYgKCFkZWZpbml0aW9uQXJncyB8fCBkZWZpbml0aW9uQXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkR5bmFtaWMgc3ludGF4IHdpdGhvdXQgYW4gYXJndW1lbnRcIik7XG4gICAgfVxuXG4gICAgbGV0IG1ldGEgPSB0aGlzLmJ1aWxkZXIubWV0YS50ZW1wbGF0ZU1ldGE7XG5cbiAgICBmdW5jdGlvbiBoZWxwZXIodm06IFB1YmxpY1ZNLCBhcmdzOiBJQXJndW1lbnRzKSB7XG4gICAgICByZXR1cm4gZ2V0RGVmaW5pdGlvbih2bSwgYXJncywgbWV0YSk7XG4gICAgfVxuXG4gICAgYnVpbGRlci5zdGFydExhYmVscygpO1xuXG4gICAgYnVpbGRlci5wdXNoRnJhbWUoKTtcblxuICAgIGJ1aWxkZXIucmV0dXJuVG8oJ0VORCcpO1xuXG4gICAgYnVpbGRlci5jb21waWxlQXJncyhkZWZpbml0aW9uQXJnc1swXSwgZGVmaW5pdGlvbkFyZ3NbMV0sIHRydWUpO1xuICAgIGJ1aWxkZXIuaGVscGVyKGhlbHBlcik7XG5cbiAgICBidWlsZGVyLmR1cCgpO1xuICAgIGJ1aWxkZXIudGVzdCgnc2ltcGxlJyk7XG5cbiAgICBidWlsZGVyLmVudGVyKDIpO1xuXG4gICAgYnVpbGRlci5qdW1wVW5sZXNzKCdFTFNFJyk7XG5cbiAgICBidWlsZGVyLnB1c2hEeW5hbWljQ29tcG9uZW50TWFuYWdlcigpO1xuICAgIGJ1aWxkZXIuaW52b2tlQ29tcG9uZW50KG51bGwsIHBhcmFtcywgaGFzaCwgYmxvY2ssIGludmVyc2UpO1xuXG4gICAgYnVpbGRlci5sYWJlbCgnRUxTRScpO1xuICAgIGJ1aWxkZXIuZXhpdCgpO1xuICAgIGJ1aWxkZXIucmV0dXJuKCk7XG5cbiAgICBidWlsZGVyLmxhYmVsKCdFTkQnKTtcbiAgICBidWlsZGVyLnBvcEZyYW1lKCk7XG5cbiAgICBidWlsZGVyLnN0b3BMYWJlbHMoKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRlcihlbnY6IEVudmlyb25tZW50LCBtZXRhOiBDb21waWxhdGlvbk1ldGEpIHtcbiAgcmV0dXJuIG5ldyBPcGNvZGVCdWlsZGVyRFNMKGVudiwgbWV0YSk7XG59XG4iXX0=

@@ -9,3 +9,3 @@ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();

import { defaultManagers } from './dom/attribute-managers';
import { assert, ensureGuid, expect } from '@glimmer/util';
import { ensureGuid } from '@glimmer/util';
export var Scope = function () {

@@ -325,3 +325,2 @@ function Scope(

Environment.prototype.begin = function begin() {
assert(!this._transaction, 'Cannot start a nested transaction');
this._transaction = new Transaction();

@@ -374,3 +373,3 @@ };

get: function () {
return expect(this._transaction, 'must be in a transaction');
return this._transaction;
}

@@ -382,2 +381,2 @@ }]);

export default Environment;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJlbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQ0EsQUFBTyxTQUFtQixBQUFnQixBQUFFLDZDQUFNLEFBQW9CLEFBQUM7QUFFdkUsQUFBTyxTQUFFLEFBQVMsQUFBRSxpQkFBTSxBQUF5QixBQUFDO0FBS3BELEFBQU8sU0FBRSxBQUFtQixxQkFBRSxBQUFvQixBQUFFLDRCQUFNLEFBQWMsQUFBQztBQUN6RSxBQUFPLFNBQ0wsQUFBZSxBQUVoQix1QkFBTSxBQUEwQixBQUFDO0FBZ0JsQyxBQUFPLFNBTUwsQUFBTSxRQUNOLEFBQVUsWUFDVixBQUFNLEFBQ1AsY0FBTSxBQUFlLEFBQUM7QUFvQnZCLEFBQU07QUFxQko7QUFDRSxBQUF5QjtBQUNqQixBQUFrQjtZQUNsQixrRkFBNkIsQUFBSSxBQUN6QyxBQUErRDtZQUN2RCxnRkFBcUMsQUFBSSxBQUNqRCxBQUErQztZQUN2QyxpRkFBMkQsQUFBSTs7OztBQUwvRCxhQUFLLFFBQUwsQUFBSyxBQUFhO0FBQ2xCLGFBQVcsY0FBWCxBQUFXLEFBQXNCO0FBRWpDLGFBQVMsWUFBVCxBQUFTLEFBQWdDO0FBRXpDLGFBQVUsYUFBVixBQUFVLEFBQXFELEFBQ3pFO0FBNUJBLEFBQU0sQUE0Qkw7O1VBNUJNLEFBQUkscUJBQUMsQUFBb0M7WUFBRSxBQUFJLDJFQUFHLEFBQUM7O0FBQ3hELFlBQUksQUFBSSxPQUFxQyxJQUFJLEFBQUssTUFBQyxBQUFJLE9BQUcsQUFBQyxBQUFDLEFBQUM7QUFFakUsQUFBRyxBQUFDLGFBQUMsSUFBSSxBQUFDLElBQUcsQUFBQyxHQUFFLEFBQUMsS0FBSSxBQUFJLE1BQUUsQUFBQyxBQUFFLEtBQUUsQUFBQztBQUMvQixBQUFJLGlCQUFDLEFBQUMsQUFBQyxLQUFHLEFBQW1CLEFBQUMsQUFDaEM7QUFBQztBQUVELEFBQU0sZUFBQyxJQUFJLEFBQUssTUFBQyxBQUFJLEFBQUMsTUFB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bnRlbnQiOlsiaW1wb3J0IHsgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBCbG9ja3MsIElubGluZXMsIHBvcHVsYXRlQnVpbHRpbnMgfSBmcm9tICcuL3N5bnRheC9mdW5jdGlvbnMnO1xuXG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tICcuL2Vudmlyb25tZW50L2NvbnN0YW50cyc7XG5cbmltcG9ydCAqIGFzIFNpbXBsZSBmcm9tICcuL2RvbS9pbnRlcmZhY2VzJztcbmltcG9ydCB7IERPTUNoYW5nZXMsIERPTVRyZWVDb25zdHJ1Y3Rpb24gfSBmcm9tICcuL2RvbS9oZWxwZXInO1xuaW1wb3J0IHsgUmVmZXJlbmNlLCBPcGFxdWVJdGVyYWJsZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBVTkRFRklORURfUkVGRVJFTkNFLCBDb25kaXRpb25hbFJlZmVyZW5jZSB9IGZyb20gJy4vcmVmZXJlbmNlcyc7XG5pbXBvcnQge1xuICBkZWZhdWx0TWFuYWdlcnMsXG4gIEF0dHJpYnV0ZU1hbmFnZXJcbn0gZnJvbSAnLi9kb20vYXR0cmlidXRlLW1hbmFnZXJzJztcblxuaW1wb3J0IHtcbiAgUGFydGlhbERlZmluaXRpb25cbn0gZnJvbSAnLi9wYXJ0aWFsJztcblxuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDb21wb25lbnRNYW5hZ2VyLFxuICBDb21wb25lbnREZWZpbml0aW9uXG59IGZyb20gJy4vY29tcG9uZW50L2ludGVyZmFjZXMnO1xuXG5pbXBvcnQge1xuICBNb2RpZmllck1hbmFnZXJcbn0gZnJvbSAnLi9tb2RpZmllci9pbnRlcmZhY2VzJztcblxuaW1wb3J0IHtcbiAgRGljdCxcbiAgT3B0aW9uLFxuICBEZXN0cm95YWJsZSxcbiAgT3BhcXVlLFxuICBIYXNHdWlkLFxuICBhc3NlcnQsXG4gIGVuc3VyZUd1aWQsXG4gIGV4cGVjdFxufSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuaW1wb3J0IHtcbiAgVGVtcGxhdGVNZXRhXG59IGZyb20gJ0BnbGltbWVyL3dpcmUtZm9ybWF0JztcblxuaW1wb3J0IHsgQmxvY2sgfSBmcm9tICcuL3NjYW5uZXInO1xuXG5pbXBvcnQgeyBQdWJsaWNWTSB9IGZyb20gJy4vdm0vYXBwZW5kJztcblxuaW1wb3J0IHsgSUFyZ3VtZW50cyB9IGZyb20gJy4vdm0vYXJndW1lbnRzJztcblxuZXhwb3J0IHR5cGUgU2NvcGVTbG90ID0gVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+IHwgT3B0aW9uPEJsb2NrPjtcblxuZXhwb3J0IGludGVyZmFjZSBEeW5hbWljU2NvcGUge1xuICBnZXQoa2V5OiBzdHJpbmcpOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT47XG4gIHNldChrZXk6IHN0cmluZywgcmVmZXJlbmNlOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4pOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT47XG4gIGNoaWxkKCk6IER5bmFtaWNTY29wZTtcbn1cblxuZXhwb3J0IGNsYXNzIFNjb3BlIHtcbiAgc3RhdGljIHJvb3Qoc2VsZjogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+LCBzaXplID0gMCkge1xuICAgIGxldCByZWZzOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT5bXSA9IG5ldyBBcnJheShzaXplICsgMSk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBzaXplOyBpKyspIHtcbiAgICAgIHJlZnNbaV0gPSBVTkRFRklORURfUkVGRVJFTkNFO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgU2NvcGUocmVmcykuaW5pdCh7IHNlbGYgfSk7XG4gIH1cblxuICBzdGF0aWMgc2l6ZWQoc2l6ZSA9IDApIHtcbiAgICBsZXQgcmVmczogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+W10gPSBuZXcgQXJyYXkoc2l6ZSArIDEpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gc2l6ZTsgaSsrKSB7XG4gICAgICByZWZzW2ldID0gVU5ERUZJTkVEX1JFRkVSRU5DRTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFNjb3BlKHJlZnMpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgLy8gdGhlIDB0aCBzbG90IGlzIGBzZWxmYFxuICAgIHByaXZhdGUgc2xvdHM6IFNjb3BlU2xvdFtdLFxuICAgIHByaXZhdGUgY2FsbGVyU2NvcGU6IE9wdGlvbjxTY29wZT4gPSBudWxsLFxuICAgIC8vIG5hbWVkIGFyZ3VtZW50cyBhbmQgYmxvY2tzIHBhc3NlZCB0byBhIGxheW91dCB0aGF0IHVzZXMgZXZhbFxuICAgIHByaXZhdGUgZXZhbFNjb3BlOiBPcHRpb248RGljdDxTY29wZVNsb3Q+PiA9IG51bGwsXG4gICAgLy8gbG9jYWxzIGluIHNjb3BlIHdoZW4gdGhlIHBhcnRpYWwgd2FzIGludm9rZWRcbiAgICBwcml2YXRlIHBhcnRpYWxNYXA6IE9wdGlvbjxEaWN0PFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPj4+ID0gbnVsbCkge1xuICB9XG5cbiAgaW5pdCh7IHNlbGYgfTogeyBzZWxmOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4gfSk6IHRoaXMge1xuICAgIHRoaXMuc2xvdHNbMF0gPSBzZWxmO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZ2V0U2VsZigpOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4ge1xuICAgIHJldHVybiB0aGlzLmdldDxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4+KDApO1xuICB9XG5cbiAgZ2V0U3ltYm9sKHN5bWJvbDogbnVtYmVyKTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+IHtcbiAgICByZXR1cm4gdGhpcy5nZXQ8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+PihzeW1ib2wpO1xuICB9XG5cbiAgZ2V0QmxvY2soc3ltYm9sOiBudW1iZXIpOiBCbG9jayB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0PEJsb2NrPihzeW1ib2wpO1xuICB9XG5cbiAgZ2V0RXZhbFNjb3BlKCk6IE9wdGlvbjxEaWN0PFNjb3BlU2xvdD4+IHtcbiAgICByZXR1cm4gdGhpcy5ldmFsU2NvcGU7XG4gIH1cblxuICBnZXRQYXJ0aWFsTWFwKCk6IE9wdGlvbjxEaWN0PFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPj4+IHtcbiAgICByZXR1cm4gdGhpcy5wYXJ0aWFsTWFwO1xuICB9XG5cbiAgYmluZChzeW1ib2w6IG51bWJlciwgdmFsdWU6IFNjb3BlU2xvdCkge1xuICAgIHRoaXMuc2V0KHN5bWJvbCwgdmFsdWUpO1xuICB9XG5cbiAgYmluZFNlbGYoc2VsZjogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+KSB7XG4gICAgdGhpcy5zZXQ8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+PigwLCBzZWxmKTtcbiAgfVxuXG4gIGJpbmRTeW1ib2woc3ltYm9sOiBudW1iZXIsIHZhbHVlOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4pIHtcbiAgICB0aGlzLnNldDxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4+KHN5bWJvbCwgdmFsdWUpO1xuICB9XG5cbiAgYmluZEJsb2NrKHN5bWJvbDogbnVtYmVyLCB2YWx1ZTogT3B0aW9uPEJsb2NrPikge1xuICAgIHRoaXMuc2V0PE9wdGlvbjxCbG9jaz4+KHN5bWJvbCwgdmFsdWUpO1xuICB9XG5cbiAgYmluZEV2YWxTY29wZShtYXA6IE9wdGlvbjxEaWN0PFNjb3BlU2xvdD4+KSB7XG4gICAgdGhpcy5ldmFsU2NvcGUgPSBtYXA7XG4gIH1cblxuICBiaW5kUGFydGlhbE1hcChtYXA6IERpY3Q8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+Pikge1xuICAgIHRoaXMucGFydGlhbE1hcCA9IG1hcDtcbiAgfVxuXG4gIGJpbmRDYWxsZXJTY29wZShzY29wZTogT3B0aW9uPFNjb3BlPikge1xuICAgIHRoaXMuY2FsbGVyU2NvcGUgPSBzY29wZTtcbiAgfVxuXG4gIGdldENhbGxlclNjb3BlKCk6IE9wdGlvbjxTY29wZT4ge1xuICAgIHJldHVybiB0aGlzLmNhbGxlclNjb3BlO1xuICB9XG5cbiAgY2hpbGQoKTogU2NvcGUge1xuICAgIHJldHVybiBuZXcgU2NvcGUodGhpcy5zbG90cy5zbGljZSgpLCB0aGlzLmNhbGxlclNjb3BlLCB0aGlzLmV2YWxTY29wZSwgdGhpcy5wYXJ0aWFsTWFwKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0PFQ+KGluZGV4OiBudW1iZXIpOiBUIHtcbiAgICBpZiAoaW5kZXggPj0gdGhpcy5zbG90cy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKGBCVUc6IGNhbm5vdCBnZXQgJCR7aW5kZXh9IGZyb20gc2NvcGU7IGxlbmd0aD0ke3RoaXMuc2xvdHMubGVuZ3RofWApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNsb3RzW2luZGV4XSBhcyBhbnkgYXMgVDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0PFQ+KGluZGV4OiBudW1iZXIsIHZhbHVlOiBUKTogdm9pZCB7XG4gICAgaWYgKGluZGV4ID49IHRoaXMuc2xvdHMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgQlVHOiBjYW5ub3QgZ2V0ICQke2luZGV4fSBmcm9tIHNjb3BlOyBsZW5ndGg9JHt0aGlzLnNsb3RzLmxlbmd0aH1gKTtcbiAgICB9XG5cbiAgICB0aGlzLnNsb3RzW2luZGV4XSA9IHZhbHVlIGFzIGFueTtcbiAgfVxufVxuXG5jbGFzcyBUcmFuc2FjdGlvbiB7XG4gIHB1YmxpYyBzY2hlZHVsZWRJbnN0YWxsTWFuYWdlcnM6IE1vZGlmaWVyTWFuYWdlcjxPcGFxdWU+W10gPSBbXTtcbiAgcHVibGljIHNjaGVkdWxlZEluc3RhbGxNb2RpZmllcnM6IE9iamVjdFtdID0gW107XG4gIHB1YmxpYyBzY2hlZHVsZWRVcGRhdGVNb2RpZmllck1hbmFnZXJzOiBNb2RpZmllck1hbmFnZXI8T3BhcXVlPltdID0gW107XG4gIHB1YmxpYyBzY2hlZHVsZWRVcGRhdGVNb2RpZmllcnM6IE9iamVjdFtdID0gW107XG4gIHB1YmxpYyBjcmVhdGVkQ29tcG9uZW50czogQ29tcG9uZW50W10gPSBbXTtcbiAgcHVibGljIGNyZWF0ZWRNYW5hZ2VyczogQ29tcG9uZW50TWFuYWdlcjxDb21wb25lbnQ+W10gPSBbXTtcbiAgcHVibGljIHVwZGF0ZWRDb21wb25lbnRzOiBDb21wb25lbnRbXSA9IFtdO1xuICBwdWJsaWMgdXBkYXRlZE1hbmFnZXJzOiBDb21wb25lbnRNYW5hZ2VyPENvbXBvbmVudD5bXSA9IFtdO1xuICBwdWJsaWMgZGVzdHJ1Y3RvcnM6IERlc3Ryb3lhYmxlW10gPSBbXTtcblxuICBkaWRDcmVhdGU8VD4oY29tcG9uZW50OiBULCBtYW5hZ2VyOiBDb21wb25lbnRNYW5hZ2VyPFQ+KSB7XG4gICAgdGhpcy5jcmVhdGVkQ29tcG9uZW50cy5wdXNoKGNvbXBvbmVudCk7XG4gICAgdGhpcy5jcmVhdGVkTWFuYWdlcnMucHVzaChtYW5hZ2VyKTtcbiAgfVxuXG4gIGRpZFVwZGF0ZTxUPihjb21wb25lbnQ6IFQsIG1hbmFnZXI6IENvbXBvbmVudE1hbmFnZXI8VD4pIHtcbiAgICB0aGlzLnVwZGF0ZWRDb21wb25lbnRzLnB1c2goY29tcG9uZW50KTtcbiAgICB0aGlzLnVwZGF0ZWRNYW5hZ2Vycy5wdXNoKG1hbmFnZXIpO1xuICB9XG5cbiAgc2NoZWR1bGVJbnN0YWxsTW9kaWZpZXI8VD4obW9kaWZpZXI6IFQsIG1hbmFnZXI6IE1vZGlmaWVyTWFuYWdlcjxUPikge1xuICAgIHRoaXMuc2NoZWR1bGVkSW5zdGFsbE1hbmFnZXJzLnB1c2gobWFuYWdlcik7XG4gICAgdGhpcy5zY2hlZHVsZWRJbnN0YWxsTW9kaWZpZXJzLnB1c2gobW9kaWZpZXIpO1xuICB9XG5cbiAgc2NoZWR1bGVVcGRhdGVNb2RpZmllcjxUPihtb2RpZmllcjogVCwgbWFuYWdlcjogTW9kaWZpZXJNYW5hZ2VyPFQ+KSB7XG4gICAgdGhpcy5zY2hlZHVsZWRVcGRhdGVNb2RpZmllck1hbmFnZXJzLnB1c2gobWFuYWdlcik7XG4gICAgdGhpcy5zY2hlZHVsZWRVcGRhdGVNb2RpZmllcnMucHVzaChtb2RpZmllcik7XG4gIH1cblxuICBkaWREZXN0cm95KGQ6IERlc3Ryb3lhYmxlKSB7XG4gICAgdGhpcy5kZXN0cnVjdG9ycy5wdXNoKGQpO1xuICB9XG5cbiAgY29tbWl0KCkge1xuICAgIGxldCB7IGNyZWF0ZWRDb21wb25lbnRzLCBjcmVhdGVkTWFuYWdlcnMgfSA9IHRoaXM7XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8Y3JlYXRlZENvbXBvbmVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBjb21wb25lbnQgPSBjcmVhdGVkQ29tcG9uZW50c1tpXTtcbiAgICAgIGxldCBtYW5hZ2VyID0gY3JlYXRlZE1hbmFnZXJzW2ldO1xuICAgICAgbWFuYWdlci5kaWRDcmVhdGUoY29tcG9uZW50KTtcbiAgICB9XG5cbiAgICBsZXQgeyB1cGRhdGVkQ29tcG9uZW50cywgdXBkYXRlZE1hbmFnZXJzIH0gPSB0aGlzO1xuXG4gICAgZm9yIChsZXQgaT0wOyBpPHVwZGF0ZWRDb21wb25lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgY29tcG9uZW50ID0gdXBkYXRlZENvbXBvbmVudHNbaV07XG4gICAgICBsZXQgbWFuYWdlciA9IHVwZGF0ZWRNYW5hZ2Vyc1tpXTtcbiAgICAgIG1hbmFnZXIuZGlkVXBkYXRlKGNvbXBvbmVudCk7XG4gICAgfVxuXG4gICAgbGV0IHsgZGVzdHJ1Y3RvcnMgfSA9IHRoaXM7XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8ZGVzdHJ1Y3RvcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGRlc3RydWN0b3JzW2ldLmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBsZXQgeyBzY2hlZHVsZWRJbnN0YWxsTWFuYWdlcnMsIHNjaGVkdWxlZEluc3RhbGxNb2RpZmllcnMgfSA9IHRoaXM7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNjaGVkdWxlZEluc3RhbGxNYW5hZ2Vycy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IG1hbmFnZXIgPSBzY2hlZHVsZWRJbnN0YWxsTWFuYWdlcnNbaV07XG4gICAgICBsZXQgbW9kaWZpZXIgPSBzY2hlZHVsZWRJbnN0YWxsTW9kaWZpZXJzW2ldO1xuICAgICAgbWFuYWdlci5pbnN0YWxsKG1vZGlmaWVyKTtcbiAgICB9XG5cbiAgICBsZXQgeyBzY2hlZHVsZWRVcGRhdGVNb2RpZmllck1hbmFnZXJzLCBzY2hlZHVsZWRVcGRhdGVNb2RpZmllcnMgfSA9IHRoaXM7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVyTWFuYWdlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBtYW5hZ2VyID0gc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJNYW5hZ2Vyc1tpXTtcbiAgICAgIGxldCBtb2RpZmllciA9IHNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVyc1tpXTtcbiAgICAgIG1hbmFnZXIudXBkYXRlKG1vZGlmaWVyKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9wY29kZSB7XG4gIHB1YmxpYyBvZmZzZXQgPSAwO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFycmF5OiBVaW50MzJBcnJheSB8IEFycmF5PG51bWJlcj4pIHt9XG5cbiAgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXJyYXlbdGhpcy5vZmZzZXRdO1xuICB9XG5cbiAgZ2V0IG9wMSgpIHtcbiAgICByZXR1cm4gdGhpcy5hcnJheVt0aGlzLm9mZnNldCArIDFdO1xuICB9XG5cbiAgZ2V0IG9wMigpIHtcbiAgICByZXR1cm4gdGhpcy5hcnJheVt0aGlzLm9mZnNldCArIDJdO1xuICB9XG5cbiAgZ2V0IG9wMygpIHtcbiAgICByZXR1cm4gdGhpcy5hcnJheVt0aGlzLm9mZnNldCArIDNdO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQcm9ncmFtIHtcbiAgW2tleTogbnVtYmVyXTogbmV2ZXI7XG5cbiAgcHJpdmF0ZSBvcGNvZGVzOiBudW1iZXJbXSA9IFtdO1xuICBwcml2YXRlIF9vZmZzZXQgPSAwO1xuICBwcml2YXRlIF9vcGNvZGU6IE9wY29kZTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9vcGNvZGUgPSBuZXcgT3Bjb2RlKHRoaXMub3Bjb2Rlcyk7XG4gIH1cblxuICBnZXQgbmV4dCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9vZmZzZXQ7XG4gIH1cblxuICBnZXQgY3VycmVudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9vZmZzZXQgLSA0O1xuICB9XG5cbiAgb3Bjb2RlKG9mZnNldDogbnVtYmVyKTogT3Bjb2RlIHtcbiAgICB0aGlzLl9vcGNvZGUub2Zmc2V0ID0gb2Zmc2V0O1xuICAgIHJldHVybiB0aGlzLl9vcGNvZGU7XG4gIH1cblxuICBzZXQocG9zOiBudW1iZXIsIHR5cGU6IG51bWJlciwgb3AxID0gMCwgb3AyID0gMCwgb3AzID0gMCkge1xuICAgIHRoaXMub3Bjb2Rlc1twb3NdID0gdHlwZTtcbiAgICB0aGlzLm9wY29kZXNbcG9zICsgMV0gPSBvcDE7XG4gICAgdGhpcy5vcGNvZGVzW3BvcyArIDJdID0gb3AyO1xuICAgIHRoaXMub3Bjb2Rlc1twb3MgKyAzXSA9IG9wMztcbiAgfVxuXG4gIHB1c2godHlwZTogbnVtYmVyLCBvcDEgPSAwLCBvcDIgPSAwLCBvcDMgPSAwKTogbnVtYmVyIHtcbiAgICBsZXQgb2Zmc2V0ID0gdGhpcy5fb2Zmc2V0O1xuICAgIHRoaXMub3Bjb2Rlc1t0aGlzLl9vZmZzZXQrK10gPSB0eXBlO1xuICAgIHRoaXMub3Bjb2Rlc1t0aGlzLl9vZmZzZXQrK10gPSBvcDE7XG4gICAgdGhpcy5vcGNvZGVzW3RoaXMuX29mZnNldCsrXSA9IG9wMjtcbiAgICB0aGlzLm9wY29kZXNbdGhpcy5fb2Zmc2V0KytdID0gb3AzO1xuICAgIHJldHVybiBvZmZzZXQ7XG4gIH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEVudmlyb25tZW50IHtcbiAgcHJvdGVjdGVkIHVwZGF0ZU9wZXJhdGlvbnM6IERPTUNoYW5nZXM7XG4gIHByb3RlY3RlZCBhcHBlbmRPcGVyYXRpb25zOiBET01UcmVlQ29uc3RydWN0aW9uO1xuICBwcml2YXRlIF9tYWNyb3M6IE9wdGlvbjx7IGJsb2NrczogQmxvY2tzLCBpbmxpbmVzOiBJbmxpbmVzIH0+ID0gbnVsbDtcbiAgcHJpdmF0ZSBfdHJhbnNhY3Rpb246IE9wdGlvbjxUcmFuc2FjdGlvbj4gPSBudWxsO1xuICBwdWJsaWMgY29uc3RhbnRzOiBDb25zdGFudHMgPSBuZXcgQ29uc3RhbnRzKCk7XG4gIHB1YmxpYyBwcm9ncmFtID0gbmV3IFByb2dyYW0oKTtcblxuICBjb25zdHJ1Y3Rvcih7IGFwcGVuZE9wZXJhdGlvbnMsIHVwZGF0ZU9wZXJhdGlvbnMgfTogeyBhcHBlbmRPcGVyYXRpb25zOiBET01UcmVlQ29uc3RydWN0aW9uLCB1cGRhdGVPcGVyYXRpb25zOiBET01DaGFuZ2VzIH0pIHtcbiAgICB0aGlzLmFwcGVuZE9wZXJhdGlvbnMgPSBhcHBlbmRPcGVyYXRpb25zO1xuICAgIHRoaXMudXBkYXRlT3BlcmF0aW9ucyA9IHVwZGF0ZU9wZXJhdGlvbnM7XG4gIH1cblxuICB0b0NvbmRpdGlvbmFsUmVmZXJlbmNlKHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4pOiBSZWZlcmVuY2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBuZXcgQ29uZGl0aW9uYWxSZWZlcmVuY2UocmVmZXJlbmNlKTtcbiAgfVxuXG4gIGFic3RyYWN0IGl0ZXJhYmxlRm9yKHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4sIGtleTogc3RyaW5nKTogT3BhcXVlSXRlcmFibGU7XG4gIGFic3RyYWN0IHByb3RvY29sRm9yVVJMKHM6IHN0cmluZyk6IHN0cmluZztcblxuICBnZXRBcHBlbmRPcGVyYXRpb25zKCk6IERPTVRyZWVDb25zdHJ1Y3Rpb24geyByZXR1cm4gdGhpcy5hcHBlbmRPcGVyYXRpb25zOyB9XG4gIGdldERPTSgpOiBET01DaGFuZ2VzIHsgcmV0dXJuIHRoaXMudXBkYXRlT3BlcmF0aW9uczsgfVxuXG4gIGdldElkZW50aXR5KG9iamVjdDogSGFzR3VpZCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGVuc3VyZUd1aWQob2JqZWN0KSArICcnO1xuICB9XG5cbiAgYmVnaW4oKSB7XG4gICAgYXNzZXJ0KCF0aGlzLl90cmFuc2FjdGlvbiwgJ0Nhbm5vdCBzdGFydCBhIG5lc3RlZCB0cmFuc2FjdGlvbicpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKCk7XG4gIH1cblxuICBwcml2YXRlIGdldCB0cmFuc2FjdGlvbigpOiBUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIGV4cGVjdCh0aGlzLl90cmFuc2FjdGlvbiwgJ211c3QgYmUgaW4gYSB0cmFuc2FjdGlvbicpO1xuICB9XG5cbiAgZGlkQ3JlYXRlPFQ+KGNvbXBvbmVudDogVCwgbWFuYWdlcjogQ29tcG9uZW50TWFuYWdlcjxUPikge1xuICAgIHRoaXMudHJhbnNhY3Rpb24uZGlkQ3JlYXRlKGNvbXBvbmVudCwgbWFuYWdlcik7XG4gIH1cblxuICBkaWRVcGRhdGU8VD4oY29tcG9uZW50OiBULCBtYW5hZ2VyOiBDb21wb25lbnRNYW5hZ2VyPFQ+KSB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5kaWRVcGRhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcbiAgfVxuXG4gIHNjaGVkdWxlSW5zdGFsbE1vZGlmaWVyPFQ+KG1vZGlmaWVyOiBULCBtYW5hZ2VyOiBNb2RpZmllck1hbmFnZXI8VD4pIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNjaGVkdWxlSW5zdGFsbE1vZGlmaWVyKG1vZGlmaWVyLCBtYW5hZ2VyKTtcbiAgfVxuXG4gIHNjaGVkdWxlVXBkYXRlTW9kaWZpZXI8VD4obW9kaWZpZXI6IFQsIG1hbmFnZXI6IE1vZGlmaWVyTWFuYWdlcjxUPikge1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2NoZWR1bGVVcGRhdGVNb2RpZmllcihtb2RpZmllciwgbWFuYWdlcik7XG4gIH1cblxuICBkaWREZXN0cm95KGQ6IERlc3Ryb3lhYmxlKSB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5kaWREZXN0cm95KGQpO1xuICB9XG5cbiAgY29tbWl0KCkge1xuICAgIHRoaXMudHJhbnNhY3Rpb24uY29tbWl0KCk7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSBudWxsO1xuICB9XG5cbiAgYXR0cmlidXRlRm9yKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBhdHRyOiBzdHJpbmcsIGlzVHJ1c3Rpbmc6IGJvb2xlYW4sIG5hbWVzcGFjZT86IHN0cmluZyk6IEF0dHJpYnV0ZU1hbmFnZXIge1xuICAgIHJldHVybiBkZWZhdWx0TWFuYWdlcnMoZWxlbWVudCwgYXR0ciwgaXNUcnVzdGluZywgbmFtZXNwYWNlID09PSB1bmRlZmluZWQgPyBudWxsIDogbmFtZXNwYWNlKTtcbiAgfVxuXG4gIG1hY3JvcygpOiB7IGJsb2NrczogQmxvY2tzLCBpbmxpbmVzOiBJbmxpbmVzIH0ge1xuICAgIGxldCBtYWNyb3MgPSB0aGlzLl9tYWNyb3M7XG4gICAgaWYgKCFtYWNyb3MpIHtcbiAgICAgIHRoaXMuX21hY3JvcyA9IG1hY3JvcyA9IHRoaXMucG9wdWxhdGVCdWlsdGlucygpO1xuICAgIH1cblxuICAgIHJldHVybiBtYWNyb3M7XG4gIH1cblxuICBwb3B1bGF0ZUJ1aWx0aW5zKCk6IHsgYmxvY2tzOiBCbG9ja3MsIGlubGluZXM6IElubGluZXMgfSB7XG4gICAgcmV0dXJuIHBvcHVsYXRlQnVpbHRpbnMoKTtcbiAgfVxuXG4gIGFic3RyYWN0IGhhc0hlbHBlcihoZWxwZXJOYW1lOiBzdHJpbmcsIG1ldGE6IFRlbXBsYXRlTWV0YSk6IGJvb2xlYW47XG4gIGFic3RyYWN0IGxvb2t1cEhlbHBlcihoZWxwZXJOYW1lOiBzdHJpbmcsIG1ldGE6IFRlbXBsYXRlTWV0YSk6IEhlbHBlcjtcblxuICBhYnN0cmFjdCBoYXNNb2RpZmllcihtb2RpZmllck5hbWU6IHN0cmluZywgbWV0YTogVGVtcGxhdGVNZXRhKTogYm9vbGVhbjtcbiAgYWJzdHJhY3QgbG9va3VwTW9kaWZpZXIobW9kaWZpZXJOYW1lOiBzdHJpbmcsIG1ldGE6IFRlbXBsYXRlTWV0YSk6IE1vZGlmaWVyTWFuYWdlcjxPcGFxdWU+O1xuXG4gIGFic3RyYWN0IGhhc0NvbXBvbmVudERlZmluaXRpb24odGFnTmFtZTogc3RyaW5nLCBtZXRhOiBUZW1wbGF0ZU1ldGEpOiBib29sZWFuO1xuICBhYnN0cmFjdCBnZXRDb21wb25lbnREZWZpbml0aW9uKHRhZ05hbWU6IHN0cmluZywgbWV0YTogVGVtcGxhdGVNZXRhKTogQ29tcG9uZW50RGVmaW5pdGlvbjxPcGFxdWU+O1xuXG4gIGFic3RyYWN0IGhhc1BhcnRpYWwocGFydGlhbE5hbWU6IHN0cmluZywgbWV0YTogVGVtcGxhdGVNZXRhKTogYm9vbGVhbjtcbiAgYWJzdHJhY3QgbG9va3VwUGFydGlhbChQYXJ0aWFsTmFtZTogc3RyaW5nLCBtZXRhOiBUZW1wbGF0ZU1ldGEpOiBQYXJ0aWFsRGVmaW5pdGlvbjxUZW1wbGF0ZU1ldGE+O1xufVxuXG5leHBvcnQgZGVmYXVsdCBFbnZpcm9ubWVudDtcblxuZXhwb3J0IGludGVyZmFjZSBIZWxwZXIge1xuICAodm06IFB1YmxpY1ZNLCBhcmdzOiBJQXJndW1lbnRzKTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+O1xufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJlbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQ0EsQUFBTyxTQUFtQixBQUFnQixBQUFFLDZDQUFNLEFBQW9CLEFBQUM7QUFFdkUsQUFBTyxTQUFFLEFBQVMsQUFBRSxpQkFBTSxBQUF5QixBQUFDO0FBS3BELEFBQU8sU0FBRSxBQUFtQixxQkFBRSxBQUFvQixBQUFFLDRCQUFNLEFBQWMsQUFBQztBQUN6RSxBQUFPLFNBQ0wsQUFBZSxBQUVoQix1QkFBTSxBQUEwQixBQUFDO0FBZ0JsQyxBQUFPLFNBTUwsQUFBVSxBQUNYLGtCQUFNLEFBQWUsQUFBQztBQW9CdkIsQUFBTTtBQXFCSjtBQUNFLEFBQXlCO0FBQ2pCLEFBQWtCO1lBQ2xCLGtGQUE2QixBQUFJLEFBQ3pDLEFBQStEO1lBQ3ZELGdGQUFxQyxBQUFJLEFBQ2pELEFBQStDO1lBQ3ZDLGlGQUEyRCxBQUFJOzs7O0FBTC9ELGFBQUssUUFBTCxBQUFLLEFBQWE7QUFDbEIsYUFBVyxjQUFYLEFBQVcsQUFBc0I7QUFFakMsYUFBUyxZQUFULEFBQVMsQUFBZ0M7QUFFekMsYUFBVSxhQUFWLEFBQVUsQUFBcUQsQUFDekU7QUE1QkEsQUFBTSxBQTRCTDs7VUE1Qk0sQUFBSSxxQkFBQyxBQUFvQztZQUFFLEFBQUksMkVBQUcsQUFBQzs7QUFDeEQsWUFBSSxBQUFJLE9BQXFDLElBQUksQUFBSyxNQUFDLEFBQUksT0FBRyxBQUFDLEFBQUMsQUFBQztBQUVqRSxBQUFHLEFBQUMsYUFBQyxJQUFJLEFBQUMsSUFBRyxBQUFDLEdBQUUsQUFBQyxLQUFJLEFBQUksTUFBRSxBQUFDLEFBQUUsS0FBRSxBQUFDO0FBQy9CLEFBQUksaUJBQUMsQUFBQyxBQUFDLEtBQUcsQUFBbUIsQUFBQyxBQUNoQztBQUFDO0FBRUQsQUFBTSxlQUFDLElBQUksQUFBSyxNQUFDLEFBQUksQUFBQyxNQUFDLEFBQUksS0FBQyxFQUFFLEFB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QUFBVyxVQUFFLEFBQTJCO0FBQ2hFLEFBQUksYUFBQyxBQUFXLFlBQUMsQUFBc0IsdUJBQUMsQUFBUSxVQUFFLEFBQU8sQUFBQyxBQUFDLEFBQzdEO0FBQUM7OzBCQUVELEFBQVUsaUNBQUMsQUFBYztBQUN2QixBQUFJLGFBQUMsQUFBVyxZQUFDLEFBQVUsV0FBQyxBQUFDLEFBQUMsQUFBQyxBQUNqQztBQUFDOzswQkFFRCxBQUFNO0FBQ0osQUFBSSxhQUFDLEFBQVcsWUFBQyxBQUFNLEFBQUUsQUFBQztBQUMxQixBQUFJLGFBQUMsQUFBWSxlQUFHLEFBQUksQUFBQyxBQUMzQjtBQUFDOzswQkFFRCxBQUFZLHFDQUFDLEFBQXVCLFNBQUUsQUFBWSxNQUFFLEFBQW1CLFlBQUUsQUFBa0I7QUFDekYsQUFBTSxlQUFDLEFBQWUsZ0JBQUMsQUFBTyxTQUFFLEFBQUksTUFBRSxBQUFVLFlBQUUsQUFBUyxjQUFLLEFBQVMsWUFBRyxBQUFJLE9BQUcsQUFBUyxBQUFDLEFBQUMsQUFDaEc7QUFBQzs7MEJBRUQsQUFBTTtBQUNKLFlBQUksQUFBTSxTQUFHLEFBQUksS0FBQyxBQUFPLEFBQUM7QUFDMUIsQUFBRSxBQUFDLFlBQUMsQ0FBQyxBQUFNLEFBQUMsUUFBQyxBQUFDO0FBQ1osQUFBSSxpQkFBQyxBQUFPLFVBQUcsQUFBTSxTQUFHLEFBQUksS0FBQyxBQUFnQixBQUFFLEFBQUMsQUFDbEQ7QUFBQztBQUVELEFBQU0sZUFBQyxBQUFNLEFBQUMsQUFDaEI7QUFBQzs7MEJBRUQsQUFBZ0I7QUFDZCxBQUFNLGVBQUMsQUFBZ0IsQUFBRSxBQUFDLEFBQzVCO0FBQUMsQUFhRjs7Ozs7QUF4REcsQUFBTSxtQkFBQyxBQUFJLEtBQUMsQUFBWSxBQUFDLEFBQzNCO0FBQUM7Ozs7O0FBeURILGVBQWUsQUFBVyxBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBCbG9ja3MsIElubGluZXMsIHBvcHVsYXRlQnVpbHRpbnMgfSBmcm9tICcuL3N5bnRheC9mdW5jdGlvbnMnO1xuXG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tICcuL2Vudmlyb25tZW50L2NvbnN0YW50cyc7XG5cbmltcG9ydCAqIGFzIFNpbXBsZSBmcm9tICcuL2RvbS9pbnRlcmZhY2VzJztcbmltcG9ydCB7IERPTUNoYW5nZXMsIERPTVRyZWVDb25zdHJ1Y3Rpb24gfSBmcm9tICcuL2RvbS9oZWxwZXInO1xuaW1wb3J0IHsgUmVmZXJlbmNlLCBPcGFxdWVJdGVyYWJsZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBVTkRFRklORURfUkVGRVJFTkNFLCBDb25kaXRpb25hbFJlZmVyZW5jZSB9IGZyb20gJy4vcmVmZXJlbmNlcyc7XG5pbXBvcnQge1xuICBkZWZhdWx0TWFuYWdlcnMsXG4gIEF0dHJpYnV0ZU1hbmFnZXJcbn0gZnJvbSAnLi9kb20vYXR0cmlidXRlLW1hbmFnZXJzJztcblxuaW1wb3J0IHtcbiAgUGFydGlhbERlZmluaXRpb25cbn0gZnJvbSAnLi9wYXJ0aWFsJztcblxuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDb21wb25lbnRNYW5hZ2VyLFxuICBDb21wb25lbnREZWZpbml0aW9uXG59IGZyb20gJy4vY29tcG9uZW50L2ludGVyZmFjZXMnO1xuXG5pbXBvcnQge1xuICBNb2RpZmllck1hbmFnZXJcbn0gZnJvbSAnLi9tb2RpZmllci9pbnRlcmZhY2VzJztcblxuaW1wb3J0IHtcbiAgRGljdCxcbiAgT3B0aW9uLFxuICBEZXN0cm95YWJsZSxcbiAgT3BhcXVlLFxuICBIYXNHdWlkLFxuICBlbnN1cmVHdWlkLFxufSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuaW1wb3J0IHtcbiAgVGVtcGxhdGVNZXRhXG59IGZyb20gJ0BnbGltbWVyL3dpcmUtZm9ybWF0JztcblxuaW1wb3J0IHsgQmxvY2sgfSBmcm9tICcuL3NjYW5uZXInO1xuXG5pbXBvcnQgeyBQdWJsaWNWTSB9IGZyb20gJy4vdm0vYXBwZW5kJztcblxuaW1wb3J0IHsgSUFyZ3VtZW50cyB9IGZyb20gJy4vdm0vYXJndW1lbnRzJztcblxuZXhwb3J0IHR5cGUgU2NvcGVTbG90ID0gVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+IHwgT3B0aW9uPEJsb2NrPjtcblxuZXhwb3J0IGludGVyZmFjZSBEeW5hbWljU2NvcGUge1xuICBnZXQoa2V5OiBzdHJpbmcpOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT47XG4gIHNldChrZXk6IHN0cmluZywgcmVmZXJlbmNlOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4pOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT47XG4gIGNoaWxkKCk6IER5bmFtaWNTY29wZTtcbn1cblxuZXhwb3J0IGNsYXNzIFNjb3BlIHtcbiAgc3RhdGljIHJvb3Qoc2VsZjogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+LCBzaXplID0gMCkge1xuICAgIGxldCByZWZzOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT5bXSA9IG5ldyBBcnJheShzaXplICsgMSk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBzaXplOyBpKyspIHtcbiAgICAgIHJlZnNbaV0gPSBVTkRFRklORURfUkVGRVJFTkNFO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgU2NvcGUocmVmcykuaW5pdCh7IHNlbGYgfSk7XG4gIH1cblxuICBzdGF0aWMgc2l6ZWQoc2l6ZSA9IDApIHtcbiAgICBsZXQgcmVmczogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+W10gPSBuZXcgQXJyYXkoc2l6ZSArIDEpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gc2l6ZTsgaSsrKSB7XG4gICAgICByZWZzW2ldID0gVU5ERUZJTkVEX1JFRkVSRU5DRTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFNjb3BlKHJlZnMpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgLy8gdGhlIDB0aCBzbG90IGlzIGBzZWxmYFxuICAgIHByaXZhdGUgc2xvdHM6IFNjb3BlU2xvdFtdLFxuICAgIHByaXZhdGUgY2FsbGVyU2NvcGU6IE9wdGlvbjxTY29wZT4gPSBudWxsLFxuICAgIC8vIG5hbWVkIGFyZ3VtZW50cyBhbmQgYmxvY2tzIHBhc3NlZCB0byBhIGxheW91dCB0aGF0IHVzZXMgZXZhbFxuICAgIHByaXZhdGUgZXZhbFNjb3BlOiBPcHRpb248RGljdDxTY29wZVNsb3Q+PiA9IG51bGwsXG4gICAgLy8gbG9jYWxzIGluIHNjb3BlIHdoZW4gdGhlIHBhcnRpYWwgd2FzIGludm9rZWRcbiAgICBwcml2YXRlIHBhcnRpYWxNYXA6IE9wdGlvbjxEaWN0PFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPj4+ID0gbnVsbCkge1xuICB9XG5cbiAgaW5pdCh7IHNlbGYgfTogeyBzZWxmOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4gfSk6IHRoaXMge1xuICAgIHRoaXMuc2xvdHNbMF0gPSBzZWxmO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZ2V0U2VsZigpOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4ge1xuICAgIHJldHVybiB0aGlzLmdldDxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4+KDApO1xuICB9XG5cbiAgZ2V0U3ltYm9sKHN5bWJvbDogbnVtYmVyKTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+IHtcbiAgICByZXR1cm4gdGhpcy5nZXQ8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+PihzeW1ib2wpO1xuICB9XG5cbiAgZ2V0QmxvY2soc3ltYm9sOiBudW1iZXIpOiBCbG9jayB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0PEJsb2NrPihzeW1ib2wpO1xuICB9XG5cbiAgZ2V0RXZhbFNjb3BlKCk6IE9wdGlvbjxEaWN0PFNjb3BlU2xvdD4+IHtcbiAgICByZXR1cm4gdGhpcy5ldmFsU2NvcGU7XG4gIH1cblxuICBnZXRQYXJ0aWFsTWFwKCk6IE9wdGlvbjxEaWN0PFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPj4+IHtcbiAgICByZXR1cm4gdGhpcy5wYXJ0aWFsTWFwO1xuICB9XG5cbiAgYmluZChzeW1ib2w6IG51bWJlciwgdmFsdWU6IFNjb3BlU2xvdCkge1xuICAgIHRoaXMuc2V0KHN5bWJvbCwgdmFsdWUpO1xuICB9XG5cbiAgYmluZFNlbGYoc2VsZjogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+KSB7XG4gICAgdGhpcy5zZXQ8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+PigwLCBzZWxmKTtcbiAgfVxuXG4gIGJpbmRTeW1ib2woc3ltYm9sOiBudW1iZXIsIHZhbHVlOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4pIHtcbiAgICB0aGlzLnNldDxWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT4+KHN5bWJvbCwgdmFsdWUpO1xuICB9XG5cbiAgYmluZEJsb2NrKHN5bWJvbDogbnVtYmVyLCB2YWx1ZTogT3B0aW9uPEJsb2NrPikge1xuICAgIHRoaXMuc2V0PE9wdGlvbjxCbG9jaz4+KHN5bWJvbCwgdmFsdWUpO1xuICB9XG5cbiAgYmluZEV2YWxTY29wZShtYXA6IE9wdGlvbjxEaWN0PFNjb3BlU2xvdD4+KSB7XG4gICAgdGhpcy5ldmFsU2NvcGUgPSBtYXA7XG4gIH1cblxuICBiaW5kUGFydGlhbE1hcChtYXA6IERpY3Q8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+Pikge1xuICAgIHRoaXMucGFydGlhbE1hcCA9IG1hcDtcbiAgfVxuXG4gIGJpbmRDYWxsZXJTY29wZShzY29wZTogT3B0aW9uPFNjb3BlPikge1xuICAgIHRoaXMuY2FsbGVyU2NvcGUgPSBzY29wZTtcbiAgfVxuXG4gIGdldENhbGxlclNjb3BlKCk6IE9wdGlvbjxTY29wZT4ge1xuICAgIHJldHVybiB0aGlzLmNhbGxlclNjb3BlO1xuICB9XG5cbiAgY2hpbGQoKTogU2NvcGUge1xuICAgIHJldHVybiBuZXcgU2NvcGUodGhpcy5zbG90cy5zbGljZSgpLCB0aGlzLmNhbGxlclNjb3BlLCB0aGlzLmV2YWxTY29wZSwgdGhpcy5wYXJ0aWFsTWFwKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0PFQ+KGluZGV4OiBudW1iZXIpOiBUIHtcbiAgICBpZiAoaW5kZXggPj0gdGhpcy5zbG90cy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKGBCVUc6IGNhbm5vdCBnZXQgJCR7aW5kZXh9IGZyb20gc2NvcGU7IGxlbmd0aD0ke3RoaXMuc2xvdHMubGVuZ3RofWApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNsb3RzW2luZGV4XSBhcyBhbnkgYXMgVDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0PFQ+KGluZGV4OiBudW1iZXIsIHZhbHVlOiBUKTogdm9pZCB7XG4gICAgaWYgKGluZGV4ID49IHRoaXMuc2xvdHMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgQlVHOiBjYW5ub3QgZ2V0ICQke2luZGV4fSBmcm9tIHNjb3BlOyBsZW5ndGg9JHt0aGlzLnNsb3RzLmxlbmd0aH1gKTtcbiAgICB9XG5cbiAgICB0aGlzLnNsb3RzW2luZGV4XSA9IHZhbHVlIGFzIGFueTtcbiAgfVxufVxuXG5jbGFzcyBUcmFuc2FjdGlvbiB7XG4gIHB1YmxpYyBzY2hlZHVsZWRJbnN0YWxsTWFuYWdlcnM6IE1vZGlmaWVyTWFuYWdlcjxPcGFxdWU+W10gPSBbXTtcbiAgcHVibGljIHNjaGVkdWxlZEluc3RhbGxNb2RpZmllcnM6IE9iamVjdFtdID0gW107XG4gIHB1YmxpYyBzY2hlZHVsZWRVcGRhdGVNb2RpZmllck1hbmFnZXJzOiBNb2RpZmllck1hbmFnZXI8T3BhcXVlPltdID0gW107XG4gIHB1YmxpYyBzY2hlZHVsZWRVcGRhdGVNb2RpZmllcnM6IE9iamVjdFtdID0gW107XG4gIHB1YmxpYyBjcmVhdGVkQ29tcG9uZW50czogQ29tcG9uZW50W10gPSBbXTtcbiAgcHVibGljIGNyZWF0ZWRNYW5hZ2VyczogQ29tcG9uZW50TWFuYWdlcjxDb21wb25lbnQ+W10gPSBbXTtcbiAgcHVibGljIHVwZGF0ZWRDb21wb25lbnRzOiBDb21wb25lbnRbXSA9IFtdO1xuICBwdWJsaWMgdXBkYXRlZE1hbmFnZXJzOiBDb21wb25lbnRNYW5hZ2VyPENvbXBvbmVudD5bXSA9IFtdO1xuICBwdWJsaWMgZGVzdHJ1Y3RvcnM6IERlc3Ryb3lhYmxlW10gPSBbXTtcblxuICBkaWRDcmVhdGU8VD4oY29tcG9uZW50OiBULCBtYW5hZ2VyOiBDb21wb25lbnRNYW5hZ2VyPFQ+KSB7XG4gICAgdGhpcy5jcmVhdGVkQ29tcG9uZW50cy5wdXNoKGNvbXBvbmVudCk7XG4gICAgdGhpcy5jcmVhdGVkTWFuYWdlcnMucHVzaChtYW5hZ2VyKTtcbiAgfVxuXG4gIGRpZFVwZGF0ZTxUPihjb21wb25lbnQ6IFQsIG1hbmFnZXI6IENvbXBvbmVudE1hbmFnZXI8VD4pIHtcbiAgICB0aGlzLnVwZGF0ZWRDb21wb25lbnRzLnB1c2goY29tcG9uZW50KTtcbiAgICB0aGlzLnVwZGF0ZWRNYW5hZ2Vycy5wdXNoKG1hbmFnZXIpO1xuICB9XG5cbiAgc2NoZWR1bGVJbnN0YWxsTW9kaWZpZXI8VD4obW9kaWZpZXI6IFQsIG1hbmFnZXI6IE1vZGlmaWVyTWFuYWdlcjxUPikge1xuICAgIHRoaXMuc2NoZWR1bGVkSW5zdGFsbE1hbmFnZXJzLnB1c2gobWFuYWdlcik7XG4gICAgdGhpcy5zY2hlZHVsZWRJbnN0YWxsTW9kaWZpZXJzLnB1c2gobW9kaWZpZXIpO1xuICB9XG5cbiAgc2NoZWR1bGVVcGRhdGVNb2RpZmllcjxUPihtb2RpZmllcjogVCwgbWFuYWdlcjogTW9kaWZpZXJNYW5hZ2VyPFQ+KSB7XG4gICAgdGhpcy5zY2hlZHVsZWRVcGRhdGVNb2RpZmllck1hbmFnZXJzLnB1c2gobWFuYWdlcik7XG4gICAgdGhpcy5zY2hlZHVsZWRVcGRhdGVNb2RpZmllcnMucHVzaChtb2RpZmllcik7XG4gIH1cblxuICBkaWREZXN0cm95KGQ6IERlc3Ryb3lhYmxlKSB7XG4gICAgdGhpcy5kZXN0cnVjdG9ycy5wdXNoKGQpO1xuICB9XG5cbiAgY29tbWl0KCkge1xuICAgIGxldCB7IGNyZWF0ZWRDb21wb25lbnRzLCBjcmVhdGVkTWFuYWdlcnMgfSA9IHRoaXM7XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8Y3JlYXRlZENvbXBvbmVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBjb21wb25lbnQgPSBjcmVhdGVkQ29tcG9uZW50c1tpXTtcbiAgICAgIGxldCBtYW5hZ2VyID0gY3JlYXRlZE1hbmFnZXJzW2ldO1xuICAgICAgbWFuYWdlci5kaWRDcmVhdGUoY29tcG9uZW50KTtcbiAgICB9XG5cbiAgICBsZXQgeyB1cGRhdGVkQ29tcG9uZW50cywgdXBkYXRlZE1hbmFnZXJzIH0gPSB0aGlzO1xuXG4gICAgZm9yIChsZXQgaT0wOyBpPHVwZGF0ZWRDb21wb25lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgY29tcG9uZW50ID0gdXBkYXRlZENvbXBvbmVudHNbaV07XG4gICAgICBsZXQgbWFuYWdlciA9IHVwZGF0ZWRNYW5hZ2Vyc1tpXTtcbiAgICAgIG1hbmFnZXIuZGlkVXBkYXRlKGNvbXBvbmVudCk7XG4gICAgfVxuXG4gICAgbGV0IHsgZGVzdHJ1Y3RvcnMgfSA9IHRoaXM7XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8ZGVzdHJ1Y3RvcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGRlc3RydWN0b3JzW2ldLmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBsZXQgeyBzY2hlZHVsZWRJbnN0YWxsTWFuYWdlcnMsIHNjaGVkdWxlZEluc3RhbGxNb2RpZmllcnMgfSA9IHRoaXM7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNjaGVkdWxlZEluc3RhbGxNYW5hZ2Vycy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IG1hbmFnZXIgPSBzY2hlZHVsZWRJbnN0YWxsTWFuYWdlcnNbaV07XG4gICAgICBsZXQgbW9kaWZpZXIgPSBzY2hlZHVsZWRJbnN0YWxsTW9kaWZpZXJzW2ldO1xuICAgICAgbWFuYWdlci5pbnN0YWxsKG1vZGlmaWVyKTtcbiAgICB9XG5cbiAgICBsZXQgeyBzY2hlZHVsZWRVcGRhdGVNb2RpZmllck1hbmFnZXJzLCBzY2hlZHVsZWRVcGRhdGVNb2RpZmllcnMgfSA9IHRoaXM7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVyTWFuYWdlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBtYW5hZ2VyID0gc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJNYW5hZ2Vyc1tpXTtcbiAgICAgIGxldCBtb2RpZmllciA9IHNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVyc1tpXTtcbiAgICAgIG1hbmFnZXIudXBkYXRlKG1vZGlmaWVyKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9wY29kZSB7XG4gIHB1YmxpYyBvZmZzZXQgPSAwO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFycmF5OiBVaW50MzJBcnJheSB8IEFycmF5PG51bWJlcj4pIHt9XG5cbiAgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXJyYXlbdGhpcy5vZmZzZXRdO1xuICB9XG5cbiAgZ2V0IG9wMSgpIHtcbiAgICByZXR1cm4gdGhpcy5hcnJheVt0aGlzLm9mZnNldCArIDFdO1xuICB9XG5cbiAgZ2V0IG9wMigpIHtcbiAgICByZXR1cm4gdGhpcy5hcnJheVt0aGlzLm9mZnNldCArIDJdO1xuICB9XG5cbiAgZ2V0IG9wMygpIHtcbiAgICByZXR1cm4gdGhpcy5hcnJheVt0aGlzLm9mZnNldCArIDNdO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQcm9ncmFtIHtcbiAgW2tleTogbnVtYmVyXTogbmV2ZXI7XG5cbiAgcHJpdmF0ZSBvcGNvZGVzOiBudW1iZXJbXSA9IFtdO1xuICBwcml2YXRlIF9vZmZzZXQgPSAwO1xuICBwcml2YXRlIF9vcGNvZGU6IE9wY29kZTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9vcGNvZGUgPSBuZXcgT3Bjb2RlKHRoaXMub3Bjb2Rlcyk7XG4gIH1cblxuICBnZXQgbmV4dCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9vZmZzZXQ7XG4gIH1cblxuICBnZXQgY3VycmVudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9vZmZzZXQgLSA0O1xuICB9XG5cbiAgb3Bjb2RlKG9mZnNldDogbnVtYmVyKTogT3Bjb2RlIHtcbiAgICB0aGlzLl9vcGNvZGUub2Zmc2V0ID0gb2Zmc2V0O1xuICAgIHJldHVybiB0aGlzLl9vcGNvZGU7XG4gIH1cblxuICBzZXQocG9zOiBudW1iZXIsIHR5cGU6IG51bWJlciwgb3AxID0gMCwgb3AyID0gMCwgb3AzID0gMCkge1xuICAgIHRoaXMub3Bjb2Rlc1twb3NdID0gdHlwZTtcbiAgICB0aGlzLm9wY29kZXNbcG9zICsgMV0gPSBvcDE7XG4gICAgdGhpcy5vcGNvZGVzW3BvcyArIDJdID0gb3AyO1xuICAgIHRoaXMub3Bjb2Rlc1twb3MgKyAzXSA9IG9wMztcbiAgfVxuXG4gIHB1c2godHlwZTogbnVtYmVyLCBvcDEgPSAwLCBvcDIgPSAwLCBvcDMgPSAwKTogbnVtYmVyIHtcbiAgICBsZXQgb2Zmc2V0ID0gdGhpcy5fb2Zmc2V0O1xuICAgIHRoaXMub3Bjb2Rlc1t0aGlzLl9vZmZzZXQrK10gPSB0eXBlO1xuICAgIHRoaXMub3Bjb2Rlc1t0aGlzLl9vZmZzZXQrK10gPSBvcDE7XG4gICAgdGhpcy5vcGNvZGVzW3RoaXMuX29mZnNldCsrXSA9IG9wMjtcbiAgICB0aGlzLm9wY29kZXNbdGhpcy5fb2Zmc2V0KytdID0gb3AzO1xuICAgIHJldHVybiBvZmZzZXQ7XG4gIH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEVudmlyb25tZW50IHtcbiAgcHJvdGVjdGVkIHVwZGF0ZU9wZXJhdGlvbnM6IERPTUNoYW5nZXM7XG4gIHByb3RlY3RlZCBhcHBlbmRPcGVyYXRpb25zOiBET01UcmVlQ29uc3RydWN0aW9uO1xuICBwcml2YXRlIF9tYWNyb3M6IE9wdGlvbjx7IGJsb2NrczogQmxvY2tzLCBpbmxpbmVzOiBJbmxpbmVzIH0+ID0gbnVsbDtcbiAgcHJpdmF0ZSBfdHJhbnNhY3Rpb246IE9wdGlvbjxUcmFuc2FjdGlvbj4gPSBudWxsO1xuICBwdWJsaWMgY29uc3RhbnRzOiBDb25zdGFudHMgPSBuZXcgQ29uc3RhbnRzKCk7XG4gIHB1YmxpYyBwcm9ncmFtID0gbmV3IFByb2dyYW0oKTtcblxuICBjb25zdHJ1Y3Rvcih7IGFwcGVuZE9wZXJhdGlvbnMsIHVwZGF0ZU9wZXJhdGlvbnMgfTogeyBhcHBlbmRPcGVyYXRpb25zOiBET01UcmVlQ29uc3RydWN0aW9uLCB1cGRhdGVPcGVyYXRpb25zOiBET01DaGFuZ2VzIH0pIHtcbiAgICB0aGlzLmFwcGVuZE9wZXJhdGlvbnMgPSBhcHBlbmRPcGVyYXRpb25zO1xuICAgIHRoaXMudXBkYXRlT3BlcmF0aW9ucyA9IHVwZGF0ZU9wZXJhdGlvbnM7XG4gIH1cblxuICB0b0NvbmRpdGlvbmFsUmVmZXJlbmNlKHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4pOiBSZWZlcmVuY2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBuZXcgQ29uZGl0aW9uYWxSZWZlcmVuY2UocmVmZXJlbmNlKTtcbiAgfVxuXG4gIGFic3RyYWN0IGl0ZXJhYmxlRm9yKHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4sIGtleTogc3RyaW5nKTogT3BhcXVlSXRlcmFibGU7XG4gIGFic3RyYWN0IHByb3RvY29sRm9yVVJMKHM6IHN0cmluZyk6IHN0cmluZztcblxuICBnZXRBcHBlbmRPcGVyYXRpb25zKCk6IERPTVRyZWVDb25zdHJ1Y3Rpb24geyByZXR1cm4gdGhpcy5hcHBlbmRPcGVyYXRpb25zOyB9XG4gIGdldERPTSgpOiBET01DaGFuZ2VzIHsgcmV0dXJuIHRoaXMudXBkYXRlT3BlcmF0aW9uczsgfVxuXG4gIGdldElkZW50aXR5KG9iamVjdDogSGFzR3VpZCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGVuc3VyZUd1aWQob2JqZWN0KSArICcnO1xuICB9XG5cbiAgYmVnaW4oKSB7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHRyYW5zYWN0aW9uKCk6IFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb247XG4gIH1cblxuICBkaWRDcmVhdGU8VD4oY29tcG9uZW50OiBULCBtYW5hZ2VyOiBDb21wb25lbnRNYW5hZ2VyPFQ+KSB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5kaWRDcmVhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcbiAgfVxuXG4gIGRpZFVwZGF0ZTxUPihjb21wb25lbnQ6IFQsIG1hbmFnZXI6IENvbXBvbmVudE1hbmFnZXI8VD4pIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLmRpZFVwZGF0ZShjb21wb25lbnQsIG1hbmFnZXIpO1xuICB9XG5cbiAgc2NoZWR1bGVJbnN0YWxsTW9kaWZpZXI8VD4obW9kaWZpZXI6IFQsIG1hbmFnZXI6IE1vZGlmaWVyTWFuYWdlcjxUPikge1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2NoZWR1bGVJbnN0YWxsTW9kaWZpZXIobW9kaWZpZXIsIG1hbmFnZXIpO1xuICB9XG5cbiAgc2NoZWR1bGVVcGRhdGVNb2RpZmllcjxUPihtb2RpZmllcjogVCwgbWFuYWdlcjogTW9kaWZpZXJNYW5hZ2VyPFQ+KSB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zY2hlZHVsZVVwZGF0ZU1vZGlmaWVyKG1vZGlmaWVyLCBtYW5hZ2VyKTtcbiAgfVxuXG4gIGRpZERlc3Ryb3koZDogRGVzdHJveWFibGUpIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLmRpZERlc3Ryb3koZCk7XG4gIH1cblxuICBjb21taXQoKSB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5jb21taXQoKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG51bGw7XG4gIH1cblxuICBhdHRyaWJ1dGVGb3IoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIGF0dHI6IHN0cmluZywgaXNUcnVzdGluZzogYm9vbGVhbiwgbmFtZXNwYWNlPzogc3RyaW5nKTogQXR0cmlidXRlTWFuYWdlciB7XG4gICAgcmV0dXJuIGRlZmF1bHRNYW5hZ2VycyhlbGVtZW50LCBhdHRyLCBpc1RydXN0aW5nLCBuYW1lc3BhY2UgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBuYW1lc3BhY2UpO1xuICB9XG5cbiAgbWFjcm9zKCk6IHsgYmxvY2tzOiBCbG9ja3MsIGlubGluZXM6IElubGluZXMgfSB7XG4gICAgbGV0IG1hY3JvcyA9IHRoaXMuX21hY3JvcztcbiAgICBpZiAoIW1hY3Jvcykge1xuICAgICAgdGhpcy5fbWFjcm9zID0gbWFjcm9zID0gdGhpcy5wb3B1bGF0ZUJ1aWx0aW5zKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hY3JvcztcbiAgfVxuXG4gIHBvcHVsYXRlQnVpbHRpbnMoKTogeyBibG9ja3M6IEJsb2NrcywgaW5saW5lczogSW5saW5lcyB9IHtcbiAgICByZXR1cm4gcG9wdWxhdGVCdWlsdGlucygpO1xuICB9XG5cbiAgYWJzdHJhY3QgaGFzSGVscGVyKGhlbHBlck5hbWU6IHN0cmluZywgbWV0YTogVGVtcGxhdGVNZXRhKTogYm9vbGVhbjtcbiAgYWJzdHJhY3QgbG9va3VwSGVscGVyKGhlbHBlck5hbWU6IHN0cmluZywgbWV0YTogVGVtcGxhdGVNZXRhKTogSGVscGVyO1xuXG4gIGFic3RyYWN0IGhhc01vZGlmaWVyKG1vZGlmaWVyTmFtZTogc3RyaW5nLCBtZXRhOiBUZW1wbGF0ZU1ldGEpOiBib29sZWFuO1xuICBhYnN0cmFjdCBsb29rdXBNb2RpZmllcihtb2RpZmllck5hbWU6IHN0cmluZywgbWV0YTogVGVtcGxhdGVNZXRhKTogTW9kaWZpZXJNYW5hZ2VyPE9wYXF1ZT47XG5cbiAgYWJzdHJhY3QgaGFzQ29tcG9uZW50RGVmaW5pdGlvbih0YWdOYW1lOiBzdHJpbmcsIG1ldGE6IFRlbXBsYXRlTWV0YSk6IGJvb2xlYW47XG4gIGFic3RyYWN0IGdldENvbXBvbmVudERlZmluaXRpb24odGFnTmFtZTogc3RyaW5nLCBtZXRhOiBUZW1wbGF0ZU1ldGEpOiBDb21wb25lbnREZWZpbml0aW9uPE9wYXF1ZT47XG5cbiAgYWJzdHJhY3QgaGFzUGFydGlhbChwYXJ0aWFsTmFtZTogc3RyaW5nLCBtZXRhOiBUZW1wbGF0ZU1ldGEpOiBib29sZWFuO1xuICBhYnN0cmFjdCBsb29rdXBQYXJ0aWFsKFBhcnRpYWxOYW1lOiBzdHJpbmcsIG1ldGE6IFRlbXBsYXRlTWV0YSk6IFBhcnRpYWxEZWZpbml0aW9uPFRlbXBsYXRlTWV0YT47XG59XG5cbmV4cG9ydCBkZWZhdWx0IEVudmlyb25tZW50O1xuXG5leHBvcnQgaW50ZXJmYWNlIEhlbHBlciB7XG4gICh2bTogUHVibGljVk0sIGFyZ3M6IElBcmd1bWVudHMpOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT47XG59XG4iXX0=

@@ -13,3 +13,2 @@ 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; }

import * as WireFormat from '@glimmer/wire-format';
import { debugSlice } from './opcodes';
import { STATEMENTS } from './syntax/functions';

@@ -36,3 +35,2 @@ export function compileStatement(statement, builder) {

var end = _builder.finalize();
debugSlice(env, start, end);
compiledStatic = this.compiledStatic = new CompiledStaticTemplate(start, end);

@@ -53,6 +51,2 @@ }

CompilableTemplate.prototype.toJSON = function toJSON() {
return { GlimmerDebug: '<template>' };
};
return CompilableTemplate;

@@ -232,2 +226,2 @@ }();

}(RawBlock);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNjYW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxBQUFPLFNBQUUsQUFBdUIseUJBQUUsQUFBc0IsQUFBRSw4QkFBTSxBQUFtQixBQUFDO0FBQ3BGLEFBQU8sU0FBRSxBQUFPLEFBQUUsZUFBTSxBQUFZLEFBQUM7QUFHckMsQUFBTyxTQUFVLEFBQVcsQUFBRSxtQkFBTSxBQUFlLEFBQUM7QUFDcEQsT0FBTyxLQUFLLEFBQVUsZ0JBQU0sQUFBc0IsQUFBQztBQUVuRCxBQUFPLFNBQUUsQUFBVSxBQUFFLGtCQUFNLEFBQVcsQUFBQztBQUd2QyxBQUFPLFNBQ0wsQUFBVSxBQUNYLGtCQUFNLEFBQW9CLEFBQUM7QUFJNUIsQUFBTSxpQ0FBMkIsQUFBK0IsV0FBRSxBQUFzQjtBQUN0RixBQUFVLGVBQUMsQUFBTyxRQUFDLEFBQVMsV0FBRSxBQUFPLEFBQUMsQUFBQyxBQUN6QztBQUFDO0FBT0QsQUFBTTtBQUlKLGdDQUFtQixBQUFrQyxZQUFTLEFBQWM7OztBQUF6RCxhQUFVLGFBQVYsQUFBVSxBQUF3QjtBQUFTLGFBQVcsY0FBWCxBQUFXLEFBQUc7QUFIcEUsYUFBYyxpQkFBbUMsQUFBSSxBQUFDO0FBQ3RELGFBQWUsa0JBQXVDLEFBQUksQUFBQyxBQUVZO0FBQUM7O2lDQUVoRixBQUFhLHVDQUFDLEFBQWdCO0FBQzVCLEFBQUksWUFBRSxBQUFjLEFBQUUsaUJBQUcsQUFBSSxBQUFDOztBQUU5QixBQUFFLEFBQUMsWUFBQyxDQUFDLEFBQWMsQUFBQyxnQkFBQyxBQUFDO0FBQ3BCLGdCQUFJLEFBQU8sV0FBRyxBQUFpQixrQkFBQyxBQUFJLEtBQUMsQUFBVSxZQUFFLEFBQUksS0FBQyxBQUFXLFlBQUMsQUFBSSxNQUFFLEFBQUcsQUFBQyxBQUFDO0FBRTdFLGdCQUFJLEFBQUssUUFBRyxBQUFPLFNBQUMsQUFBSyxBQUFDO0FBQzFCLGdCQUFJLEFBQUcsTUFBRyxB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O0FBRGtFLGVBQU8sVUFBUCxBQUFPLEFBQVU7QUFBVSxlQUFPLFVBQVAsQUFBTyxBQUFTLEFBRTVJOztBQUFDOzt5QkFFRCxBQUFJO0FBQ0YsWUFBSSxBQUFVLGFBQUcsQUFBSSxLQUFDLEFBQWMsQUFBRSxBQUFDO0FBQ3ZDLEFBQU0sZUFBQyxJQUFJLEFBQWtCLG1CQUFDLEFBQVUsWUFBRSxFQUFFLEFBQU8sU0FBRSxBQUFJLEtBQUMsQUFBTyxTQUFFLEFBQU8sU0FBRSxBQUFJLEtBQUMsQUFBTyxTQUFFLEFBQUksTUFBRSxBQUFJLEtBQUMsQUFBSSxBQUFFLEFBQUMsQUFBQyxBQUMvRztBQUFDLEFBQ0Y7OztFQVQrQixBQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBpbGVkRHluYW1pY1RlbXBsYXRlLCBDb21waWxlZFN0YXRpY1RlbXBsYXRlIH0gZnJvbSAnLi9jb21waWxlZC9ibG9ja3MnO1xuaW1wb3J0IHsgYnVpbGRlciB9IGZyb20gJy4vY29tcGlsZXInO1xuaW1wb3J0IE9wY29kZUJ1aWxkZXIgZnJvbSAnLi9jb21waWxlZC9vcGNvZGVzL2J1aWxkZXInO1xuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgT3B0aW9uLCBFTVBUWV9BUlJBWSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0ICogYXMgV2lyZUZvcm1hdCBmcm9tICdAZ2xpbW1lci93aXJlLWZvcm1hdCc7XG5pbXBvcnQgeyBPcGFxdWUsIFN5bWJvbFRhYmxlLCBQcm9ncmFtU3ltYm9sVGFibGUsIEJsb2NrU3ltYm9sVGFibGUgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGRlYnVnU2xpY2UgfSBmcm9tICcuL29wY29kZXMnO1xuaW1wb3J0IHsgQ29tcGlsYXRpb25NZXRhIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5cbmltcG9ydCB7XG4gIFNUQVRFTUVOVFNcbn0gZnJvbSAnLi9zeW50YXgvZnVuY3Rpb25zJztcblxuZXhwb3J0IHR5cGUgRGVzZXJpYWxpemVkU3RhdGVtZW50ID0gV2lyZUZvcm1hdC5TdGF0ZW1lbnQgfCBXaXJlRm9ybWF0LlN0YXRlbWVudHMuQXR0cmlidXRlIHwgV2lyZUZvcm1hdC5TdGF0ZW1lbnRzLkFyZ3VtZW50O1xuXG5leHBvcnQgZnVuY3Rpb24gY29tcGlsZVN0YXRlbWVudChzdGF0ZW1lbnQ6IFdpcmVGb3JtYXQuU3RhdGVtZW50LCBidWlsZGVyOiBPcGNvZGVCdWlsZGVyKSB7XG4gIFNUQVRFTUVOVFMuY29tcGlsZShzdGF0ZW1lbnQsIGJ1aWxkZXIpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjYW5uZWRUZW1wbGF0ZTxTIGV4dGVuZHMgU3ltYm9sVGFibGU+IHtcbiAgY29tcGlsZVN0YXRpYyhlbnY6IEVudmlyb25tZW50KTogQ29tcGlsZWRTdGF0aWNUZW1wbGF0ZTtcbiAgY29tcGlsZUR5bmFtaWMoZW52OiBFbnZpcm9ubWVudCk6IENvbXBpbGVkRHluYW1pY1RlbXBsYXRlPFM+O1xufVxuXG5leHBvcnQgY2xhc3MgQ29tcGlsYWJsZVRlbXBsYXRlPFMgZXh0ZW5kcyBTeW1ib2xUYWJsZT4gaW1wbGVtZW50cyBTY2FubmVkVGVtcGxhdGU8Uz4ge1xuICBwcml2YXRlIGNvbXBpbGVkU3RhdGljOiBPcHRpb248Q29tcGlsZWRTdGF0aWNUZW1wbGF0ZT4gPSBudWxsO1xuICBwcml2YXRlIGNvbXBpbGVkRHluYW1pYzogT3B0aW9uPENvbXBpbGVkRHluYW1pY1RlbXBsYXRlPFM+PiA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHN0YXRlbWVudHM6IFdpcmVGb3JtYXQuU3RhdGVtZW50W10sIHB1YmxpYyBzeW1ib2xUYWJsZTogUykge31cblxuICBjb21waWxlU3RhdGljKGVudjogRW52aXJvbm1lbnQpOiBDb21waWxlZFN0YXRpY1RlbXBsYXRlIHtcbiAgICBsZXQgeyBjb21waWxlZFN0YXRpYyB9ID0gdGhpcztcblxuICAgIGlmICghY29tcGlsZWRTdGF0aWMpIHtcbiAgICAgIGxldCBidWlsZGVyID0gY29tcGlsZVN0YXRlbWVudHModGhpcy5zdGF0ZW1lbnRzLCB0aGlzLnN5bWJvbFRhYmxlLm1ldGEsIGVudik7XG5cbiAgICAgIGxldCBzdGFydCA9IGJ1aWxkZXIuc3RhcnQ7XG4gICAgICBsZXQgZW5kID0gYnVpbGRlci5maW5hbGl6ZSgpO1xuXG4gICAgICBkZWJ1Z1NsaWNlKGVudiwgc3RhcnQsIGVuZCk7XG5cbiAgICAgIGNvbXBpbGVkU3RhdGljID0gdGhpcy5jb21waWxlZFN0YXRpYyA9IG5ldyBDb21waWxlZFN0YXRpY1RlbXBsYXRlKHN0YXJ0LCBlbmQpO1xuICAgIH1cblxuICAgIHJldHVybiBjb21waWxlZFN0YXRpYztcbiAgfVxuXG4gIGNvbXBpbGVEeW5hbWljKGVudjogRW52aXJvbm1lbnQpOiBDb21waWxlZER5bmFtaWNUZW1wbGF0ZTxTPiB7XG4gICAgbGV0IHsgY29tcGlsZWREeW5hbWljIH0gPSB0aGlzO1xuXG4gICAgaWYgKCFjb21waWxlZER5bmFtaWMpIHtcbiAgICAgIGxldCBzdGF0aWNCbG9jayA9IHRoaXMuY29tcGlsZVN0YXRpYyhlbnYpO1xuICAgICAgY29tcGlsZWREeW5hbWljID0gbmV3IENvbXBpbGVkRHluYW1pY1RlbXBsYXRlKHN0YXRpY0Jsb2NrLnN0YXJ0LCBzdGF0aWNCbG9jay5lbmQsIHRoaXMuc3ltYm9sVGFibGUpO1xuICAgIH1cblxuICAgIHJldHVybiBjb21waWxlZER5bmFtaWM7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHsgR2xpbW1lckRlYnVnOiAnPHRlbXBsYXRlPicgfTtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBUZW1wbGF0ZSA9IENvbXBpbGFibGVUZW1wbGF0ZTxTeW1ib2xUYWJsZT47XG5leHBvcnQgdHlwZSBQcm9ncmFtID0gQ29tcGlsYWJsZVRlbXBsYXRlPFByb2dyYW1TeW1ib2xUYWJsZT47XG5leHBvcnQgdHlwZSBCbG9jayA9IENvbXBpbGFibGVUZW1wbGF0ZTxCbG9ja1N5bWJvbFRhYmxlPjtcblxuZXhwb3J0IHR5cGUgU2Nhbm5lZFByb2dyYW0gPSBTY2FubmVkVGVtcGxhdGU8UHJvZ3JhbVN5bWJvbFRhYmxlPjtcbmV4cG9ydCB0eXBlIFNjYW5uZWRCbG9jayA9IFNjYW5uZWRUZW1wbGF0ZTxCbG9ja1N5bWJvbFRhYmxlPjtcblxuZnVuY3Rpb24gY29tcGlsZVN0YXRlbWVudHMoc3RhdGVtZW50czogV2lyZUZvcm1hdC5TdGF0ZW1lbnRbXSwgbWV0YTogQ29tcGlsYXRpb25NZXRhLCBlbnY6IEVudmlyb25tZW50KSB7XG4gIGxldCBiID0gYnVpbGRlcihlbnYsIG1ldGEpO1xuXG4gIGZvciAobGV0IHN0YXRlbWVudCBvZiBzdGF0ZW1lbnRzKSB7XG4gICAgY29tcGlsZVN0YXRlbWVudChzdGF0ZW1lbnQsIGIpO1xuICB9XG5cbiAgcmV0dXJuIGI7XG59XG5cbmV4cG9ydCBjb25zdCBBVFRSU19CTE9DSyA9ICcmYXR0cnMnO1xuXG5leHBvcnQgZnVuY3Rpb24gbGF5b3V0KHByZWx1ZGU6IFdpcmVGb3JtYXQuU3RhdGVtZW50W10sIGhlYWQ6IFdpcmVGb3JtYXQuU3RhdGVtZW50W10sIGJvZHk6IFdpcmVGb3JtYXQuU3RhdGVtZW50W10sIHN5bWJvbFRhYmxlOiBQcm9ncmFtU3ltYm9sVGFibGUpIHtcbiAgbGV0IFssIHRhZ10gPSBwcmVsdWRlLnBvcCgpIGFzIFdpcmVGb3JtYXQuU3RhdGVtZW50cy5PcGVuRWxlbWVudDtcbiAgcHJlbHVkZS5wdXNoKFtPcHMuQ2xpZW50U2lkZVN0YXRlbWVudCwgQ2xpZW50U2lkZS5PcHMuT3BlbkNvbXBvbmVudEVsZW1lbnQsIHRhZ10pO1xuICBwcmVsdWRlLnB1c2goW09wcy5DbGllbnRTaWRlU3RhdGVtZW50LCBDbGllbnRTaWRlLk9wcy5EaWRDcmVhdGVFbGVtZW50XSk7XG5cbiAgbGV0IGF0dHJzU3ltYm9sID0gc3ltYm9sVGFibGUuc3ltYm9scy5sZW5ndGggKyAxO1xuICBzeW1ib2xUYWJsZS5zeW1ib2xzLnB1c2goQVRUUlNfQkxPQ0spO1xuXG4gIGxldCBzdGF0ZW1lbnRzID0gcHJlbHVkZVxuICAgIC5jb25jYXQoW1tPcHMuWWllbGQsIGF0dHJzU3ltYm9sLCBFTVBUWV9BUlJBWV1dKVxuICAgIC5jb25jYXQoaGVhZClcbiAgICAuY29uY2F0KGJvZHkpXG4gICAgLmNvbmNhdChbW09wcy5DbGllbnRTaWRlU3RhdGVtZW50LCBDbGllbnRTaWRlLk9wcy5EaWRSZW5kZXJMYXlvdXRdXSk7XG5cbiAgcmV0dXJuIG5ldyBDb21waWxhYmxlVGVtcGxhdGUoc3RhdGVtZW50cywgc3ltYm9sVGFibGUpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTY2FubmVyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBibG9jazogV2lyZUZvcm1hdC5TZXJpYWxpemVkVGVtcGxhdGVCbG9jaywgcHJpdmF0ZSBlbnY6IEVudmlyb25tZW50KSB7XG4gIH1cblxuICBzY2FuRW50cnlQb2ludChtZXRhOiBDb21waWxhdGlvbk1ldGEpOiBQcm9ncmFtIHtcbiAgICBsZXQgeyBibG9jaywgZW52IH0gPSB0aGlzO1xuXG4gICAgbGV0IHN0YXRlbWVudHM7XG4gICAgaWYgKGJsb2NrLnByZWx1ZGUgJiYgYmxvY2suaGVhZCkge1xuICAgICAgc3RhdGVtZW50cyA9IGJsb2NrLnByZWx1ZGUuY29uY2F0KGJsb2NrLmhlYWQpLmNvbmNhdChibG9jay5zdGF0ZW1lbnRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGVtZW50cyA9IGJsb2NrLnN0YXRlbWVudHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBSYXdQcm9ncmFtKGVudiwgbWV0YSwgc3RhdGVtZW50cywgYmxvY2suc3ltYm9scywgYmxvY2suaGFzRXZhbCkuc2NhbigpO1xuICB9XG5cbiAgc2NhbkJsb2NrKG1ldGE6IENvbXBpbGF0aW9uTWV0YSk6IEJsb2NrIHtcbiAgICBsZXQgeyBibG9jaywgZW52IH0gPSB0aGlzO1xuXG4gICAgbGV0IHN0YXRlbWVudHM7XG4gICAgaWYgKGJsb2NrLnByZWx1ZGUgJiYgYmxvY2suaGVhZCkge1xuICAgICAgc3RhdGVtZW50cyA9IGJsb2NrLnByZWx1ZGUuY29uY2F0KGJsb2NrLmhlYWQpLmNvbmNhdChibG9jay5zdGF0ZW1lbnRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGVtZW50cyA9IGJsb2NrLnN0YXRlbWVudHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBSYXdJbmxpbmVCbG9jayhlbnYsIG1ldGEsIHN0YXRlbWVudHMsIEVNUFRZX0FSUkFZKS5zY2FuKCk7XG4gIH1cblxuICBzY2FuTGF5b3V0KG1ldGE6IENvbXBpbGF0aW9uTWV0YSwgYXR0cnM6IFdpcmVGb3JtYXQuU3RhdGVtZW50cy5BdHRyaWJ1dGVbXSk6IFByb2dyYW0ge1xuICAgIGxldCB7IGJsb2NrIH0gPSB0aGlzO1xuICAgIGxldCB7IHN5bWJvbHMsIGhhc0V2YWwgfSA9IGJsb2NrO1xuXG4gICAgaWYgKCFibG9jay5wcmVsdWRlIHx8ICFibG9jay5oZWFkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEEgbGF5b3V0IG11c3QgaGF2ZSBhIHRvcC1sZXZlbCBlbGVtZW50YCk7XG4gICAgfVxuXG4gICAgbGV0IHN5bWJvbFRhYmxlID0geyBtZXRhLCBoYXNFdmFsLCBzeW1ib2xzIH07XG4gICAgbGV0IHsgc3RhdGVtZW50czogcHJlbHVkZSB9ID0gc2NhbkJsb2NrKHsgc3RhdGVtZW50czogYmxvY2sucHJlbHVkZSwgcGFyYW1ldGVyczogRU1QVFlfQVJSQVkgfSwgbWV0YSwgdGhpcy5lbnYpO1xuICAgIGxldCB7IHN0YXRlbWVudHM6IGhlYWQgfSA9IHNjYW5CbG9jayh7IHN0YXRlbWVudHM6IFsuLi5hdHRycywgLi4uYmxvY2suaGVhZF0sIHBhcmFtZXRlcnM6IEVNUFRZX0FSUkFZIH0sIG1ldGEsIHRoaXMuZW52KTtcbiAgICBsZXQgeyBzdGF0ZW1lbnRzOiBib2R5IH0gPSBzY2FuQmxvY2soeyBzdGF0ZW1lbnRzOiBibG9jay5zdGF0ZW1lbnRzLCBwYXJhbWV0ZXJzOiBFTVBUWV9BUlJBWSB9LCBtZXRhLCB0aGlzLmVudik7XG5cbiAgICByZXR1cm4gbGF5b3V0KHByZWx1ZGUsIGhlYWQsIGJvZHksIHN5bWJvbFRhYmxlKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2NhbkJsb2NrKGJsb2NrOiBXaXJlRm9ybWF0LlNlcmlhbGl6ZWRJbmxpbmVCbG9jaywgbWV0YTogQ29tcGlsYXRpb25NZXRhLCBlbnY6IEVudmlyb25tZW50KTogQmxvY2sge1xuICByZXR1cm4gbmV3IFJhd0lubGluZUJsb2NrKGVudiwgbWV0YSwgYmxvY2suc3RhdGVtZW50cywgRU1QVFlfQVJSQVkpLnNjYW4oKTtcbn1cblxuaW1wb3J0IHsgUHVibGljVk0gfSBmcm9tICcuL3ZtJztcbmltcG9ydCB7IFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuXG5leHBvcnQgbmFtZXNwYWNlIENsaWVudFNpZGUge1xuICBleHBvcnQgZW51bSBPcHMge1xuICAgIE9wZW5Db21wb25lbnRFbGVtZW50LFxuICAgIERpZENyZWF0ZUVsZW1lbnQsXG4gICAgRGlkUmVuZGVyTGF5b3V0LFxuICAgIE9wdGltaXplZEFwcGVuZCxcbiAgICBVbm9wdGltaXplZEFwcGVuZCxcbiAgICBTdGF0aWNQYXJ0aWFsLFxuICAgIER5bmFtaWNQYXJ0aWFsLFxuICAgIE5lc3RlZEJsb2NrLFxuICAgIFNjYW5uZWRCbG9jayxcblxuICAgIEZ1bmN0aW9uRXhwcmVzc2lvblxuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzPFQgZXh0ZW5kcyBhbnlbXT4odmFyaWFudDogT3BzKTogKHZhbHVlOiBhbnlbXSkgPT4gdmFsdWUgaXMgVCB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlOiBhbnlbXSk6IHZhbHVlIGlzIFQge1xuICAgICAgcmV0dXJuIHZhbHVlWzBdID09PSBXaXJlRm9ybWF0Lk9wcy5DbGllbnRTaWRlRXhwcmVzc2lvbiB8fCB2YWx1ZVswXSA9PT0gV2lyZUZvcm1hdC5PcHMuQ2xpZW50U2lkZVN0YXRlbWVudCAmJiB2YWx1ZVsxXSA9PT0gdmFyaWFudDtcbiAgICB9O1xuICB9XG5cbiAgaW1wb3J0IENsaWVudFNpZGVTdGF0ZW1lbnQgPSBXaXJlRm9ybWF0Lk9wcy5DbGllbnRTaWRlU3RhdGVtZW50O1xuICBpbXBvcnQgQ2xpZW50U2lkZUV4cHJlc3Npb24gPSBXaXJlRm9ybWF0Lk9wcy5DbGllbnRTaWRlRXhwcmVzc2lvbjtcblxuICBleHBvcnQgdHlwZSBPcGVuQ29tcG9uZW50RWxlbWVudCAgPSBbQ2xpZW50U2lkZVN0YXRlbWVudCwgT3BzLk9wZW5Db21wb25lbnRFbGVtZW50LCBzdHJpbmddO1xuICBleHBvcnQgdHlwZSBEaWRDcmVhdGVFbGVtZW50ICAgICAgPSBbQ2xpZW50U2lkZVN0YXRlbWVudCwgT3BzLkRpZENyZWF0ZUVsZW1lbnRdO1xuICBleHBvcnQgdHlwZSBEaWRSZW5kZXJMYXlvdXQgICAgICAgPSBbQ2xpZW50U2lkZVN0YXRlbWVudCwgT3BzLkRpZFJlbmRlckxheW91dF07XG4gIGV4cG9ydCB0eXBlIE9wdGltaXplZEFwcGVuZCAgICAgICA9IFtDbGllbnRTaWRlU3RhdGVtZW50LCBPcHMuT3B0aW1pemVkQXBwZW5kLCBXaXJlRm9ybWF0LkV4cHJlc3Npb24sIGJvb2xlYW5dO1xuICBleHBvcnQgdHlwZSBVbm9wdGltaXplZEFwcGVuZCAgICAgPSBbQ2xpZW50U2lkZVN0YXRlbWVudCwgT3BzLlVub3B0aW1pemVkQXBwZW5kLCBXaXJlRm9ybWF0LkV4cHJlc3Npb24sIGJvb2xlYW5dO1xuICBleHBvcnQgdHlwZSBTdGF0aWNQYXJ0aWFsICAgICAgICAgPSBbQ2xpZW50U2lkZVN0YXRlbWVudCwgT3BzLlN0YXRpY1BhcnRpYWwsIHN0cmluZywgV2lyZUZvcm1hdC5Db3JlLkV2YWxJbmZvXTtcbiAgZXhwb3J0IHR5cGUgRHluYW1pY1BhcnRpYWwgICAgICAgID0gW0NsaWVudFNpZGVTdGF0ZW1lbnQsIE9wcy5EeW5hbWljUGFydGlhbCwgV2lyZUZvcm1hdC5FeHByZXNzaW9uLCBXaXJlRm9ybWF0LkNvcmUuRXZhbEluZm9dO1xuXG4gIGV4cG9ydCB0eXBlIEZ1bmN0aW9uRXhwcmVzc2lvbiAgICA9IFtDbGllbnRTaWRlRXhwcmVzc2lvbiwgT3BzLkZ1bmN0aW9uRXhwcmVzc2lvbiwgRnVuY3Rpb25FeHByZXNzaW9uQ2FsbGJhY2s8T3BhcXVlPl07XG5cbiAgZXhwb3J0IHR5cGUgRnVuY3Rpb25FeHByZXNzaW9uQ2FsbGJhY2s8VD4gPSAoVk06IFB1YmxpY1ZNLCBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUpID0+IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8VD47XG5cbiAgZXhwb3J0IHR5cGUgQ2xpZW50U2lkZVN0YXRlbWVudCA9XG4gICAgfCBPcGVuQ29tcG9uZW50RWxlbWVudFxuICAgIHwgRGlkQ3JlYXRlRWxlbWVudFxuICAgIHwgRGlkUmVuZGVyTGF5b3V0XG4gICAgfCBPcHRpbWl6ZWRBcHBlbmRcbiAgICB8IFVub3B0aW1pemVkQXBwZW5kXG4gICAgfCBTdGF0aWNQYXJ0aWFsXG4gICAgfCBEeW5hbWljUGFydGlhbFxuICAgIDtcblxuICBleHBvcnQgdHlwZSBDbGllbnRTaWRlRXhwcmVzc2lvbiA9XG4gICAgfCBGdW5jdGlvbkV4cHJlc3Npb25cbiAgICA7XG59XG5cbmNvbnN0IHsgT3BzIH0gPSBXaXJlRm9ybWF0O1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUmF3QmxvY2s8UyBleHRlbmRzIFN5bWJvbFRhYmxlPiB7XG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBlbnY6IEVudmlyb25tZW50LCBwcm90ZWN0ZWQgbWV0YTogQ29tcGlsYXRpb25NZXRhLCBwcml2YXRlIHN0YXRlbWVudHM6IFdpcmVGb3JtYXQuU3RhdGVtZW50W10pIHt9XG5cbiAgc2NhblN0YXRlbWVudHMoKTogV2lyZUZvcm1hdC5TdGF0ZW1lbnRbXSB7XG4gICAgbGV0IGJ1ZmZlcjogV2lyZUZvcm1hdC5TdGF0ZW1lbnRbXSA9IFtdO1xuICAgIGxldCBzdGF0ZW1lbnRzID0gdGhpcy5zdGF0ZW1lbnRzO1xuICAgIGZvciAobGV0IHN0YXRlbWVudCBvZiBzdGF0ZW1lbnRzKSB7XG4gICAgICBidWZmZXIucHVzaChzdGF0ZW1lbnQpO1xuICAgIH1cblxuICAgIHJldHVybiBidWZmZXI7XG4gIH1cblxuICBjaGlsZChibG9jazogT3B0aW9uPFdpcmVGb3JtYXQuU2VyaWFsaXplZElubGluZUJsb2NrPik6IE9wdGlvbjxSYXdJbmxpbmVCbG9jaz4ge1xuICAgIGlmICghYmxvY2spIHJldHVybiBudWxsO1xuICAgIHJldHVybiBuZXcgUmF3SW5saW5lQmxvY2sodGhpcy5lbnYsIHRoaXMubWV0YSwgYmxvY2suc3RhdGVtZW50cywgYmxvY2sucGFyYW1ldGVycyk7XG4gIH1cblxuICBhYnN0cmFjdCBzY2FuKCk6IENvbXBpbGFibGVUZW1wbGF0ZTxTPjtcbn1cblxuZXhwb3J0IGNsYXNzIFJhd0lubGluZUJsb2NrIGV4dGVuZHMgUmF3QmxvY2s8QmxvY2tTeW1ib2xUYWJsZT4ge1xuICBjb25zdHJ1Y3RvcihlbnY6IEVudmlyb25tZW50LCBtZXRhOiBDb21waWxhdGlvbk1ldGEsIHN0YXRlbWVudHM6IFdpcmVGb3JtYXQuU3RhdGVtZW50W10sIHByaXZhdGUgcGFyYW1ldGVyczogbnVtYmVyW10pIHtcbiAgICBzdXBlcihlbnYsIG1ldGEsIHN0YXRlbWVudHMpO1xuICB9XG5cbiAgc2NhbigpOiBCbG9jayB7XG4gICAgbGV0IHN0YXRlbWVudHMgPSB0aGlzLnNjYW5TdGF0ZW1lbnRzKCk7XG4gICAgcmV0dXJuIG5ldyBDb21waWxhYmxlVGVtcGxhdGUoc3RhdGVtZW50cywgeyBwYXJhbWV0ZXJzOiB0aGlzLnBhcmFtZXRlcnMsIG1ldGE6IHRoaXMubWV0YSB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUmF3UHJvZ3JhbSBleHRlbmRzIFJhd0Jsb2NrPFByb2dyYW1TeW1ib2xUYWJsZT4ge1xuICBjb25zdHJ1Y3RvcihlbnY6IEVudmlyb25tZW50LCBtZXRhOiBDb21waWxhdGlvbk1ldGEsIHN0YXRlbWVudHM6IFdpcmVGb3JtYXQuU3RhdGVtZW50W10sIHByaXZhdGUgc3ltYm9sczogc3RyaW5nW10sIHByaXZhdGUgaGFzRXZhbDogYm9vbGVhbikge1xuICAgIHN1cGVyKGVudiwgbWV0YSwgc3RhdGVtZW50cyk7XG4gIH1cblxuICBzY2FuKCk6IFByb2dyYW0ge1xuICAgIGxldCBzdGF0ZW1lbnRzID0gdGhpcy5zY2FuU3RhdGVtZW50cygpO1xuICAgIHJldHVybiBuZXcgQ29tcGlsYWJsZVRlbXBsYXRlKHN0YXRlbWVudHMsIHsgc3ltYm9sczogdGhpcy5zeW1ib2xzLCBoYXNFdmFsOiB0aGlzLmhhc0V2YWwsIG1ldGE6IHRoaXMubWV0YSB9KTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNjYW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxBQUFPLFNBQUUsQUFBdUIseUJBQUUsQUFBc0IsQUFBRSw4QkFBTSxBQUFtQixBQUFDO0FBQ3BGLEFBQU8sU0FBRSxBQUFPLEFBQUUsZUFBTSxBQUFZLEFBQUM7QUFHckMsQUFBTyxTQUFVLEFBQVcsQUFBRSxtQkFBTSxBQUFlLEFBQUM7QUFDcEQsT0FBTyxLQUFLLEFBQVUsZ0JBQU0sQUFBc0IsQUFBQztBQUluRCxBQUFPLFNBQ0wsQUFBVSxBQUNYLGtCQUFNLEFBQW9CLEFBQUM7QUFJNUIsQUFBTSxpQ0FBMkIsQUFBK0IsV0FBRSxBQUFzQjtBQUN0RixBQUFVLGVBQUMsQUFBTyxRQUFDLEFBQVMsV0FBRSxBQUFPLEFBQUMsQUFBQyxBQUN6QztBQUFDO0FBT0QsQUFBTTtBQUlKLGdDQUFtQixBQUFrQyxZQUFTLEFBQWM7OztBQUF6RCxhQUFVLGFBQVYsQUFBVSxBQUF3QjtBQUFTLGFBQVcsY0FBWCxBQUFXLEFBQUc7QUFIcEUsYUFBYyxpQkFBbUMsQUFBSSxBQUFDO0FBQ3RELGFBQWUsa0JBQXVDLEFBQUksQUFBQyxBQUVZO0FBQUM7O2lDQUVoRixBQUFhLHVDQUFDLEFBQWdCO0FBQzVCLEFBQUksWUFBRSxBQUFjLEFBQUUsaUJBQUcsQUFBSSxBQUFDOztBQUU5QixBQUFFLEFBQUMsWUFBQyxDQUFDLEFBQWMsQUFBQyxnQkFBQyxBQUFDO0FBQ3BCLGdCQUFJLEFBQU8sV0FBRyxBQUFpQixrQkFBQyxBQUFJLEtBQUMsQUFBVSxZQUFFLEFBQUksS0FBQyxBQUFXLFlBQUMsQUFBSSxNQUFFLEFBQUcsQUFBQyxBQUFDO0FBRTdFLGdCQUFJLEFBQUssUUFBRyxBQUFPLFNBQUMsQUFBSyxBQUFDO0FBQzFCLGdCQUFJLEFBQUcsTUFBRyxBQUFPLFNBQUMsQUFBUSxBQUFFLEFBQUM7QUFFN0IsQUFBYyw2QkFBRyxB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RSxFQUFFLEFBQU8sU0FBRSxBQUFJLEtBQUMsQUFBTyxTQUFFLEFBQU8sU0FBRSxBQUFJLEtBQUMsQUFBTyxTQUFFLEFBQUksTUFBRSxBQUFJLEtBQUMsQUFBSSxBQUFFLEFBQUMsQUFBQyxBQUMvRztBQUFDLEFBQ0Y7OztFQVQrQixBQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBpbGVkRHluYW1pY1RlbXBsYXRlLCBDb21waWxlZFN0YXRpY1RlbXBsYXRlIH0gZnJvbSAnLi9jb21waWxlZC9ibG9ja3MnO1xuaW1wb3J0IHsgYnVpbGRlciB9IGZyb20gJy4vY29tcGlsZXInO1xuaW1wb3J0IE9wY29kZUJ1aWxkZXIgZnJvbSAnLi9jb21waWxlZC9vcGNvZGVzL2J1aWxkZXInO1xuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgT3B0aW9uLCBFTVBUWV9BUlJBWSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0ICogYXMgV2lyZUZvcm1hdCBmcm9tICdAZ2xpbW1lci93aXJlLWZvcm1hdCc7XG5pbXBvcnQgeyBPcGFxdWUsIFN5bWJvbFRhYmxlLCBQcm9ncmFtU3ltYm9sVGFibGUsIEJsb2NrU3ltYm9sVGFibGUgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IENvbXBpbGF0aW9uTWV0YSB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuXG5pbXBvcnQge1xuICBTVEFURU1FTlRTXG59IGZyb20gJy4vc3ludGF4L2Z1bmN0aW9ucyc7XG5cbmV4cG9ydCB0eXBlIERlc2VyaWFsaXplZFN0YXRlbWVudCA9IFdpcmVGb3JtYXQuU3RhdGVtZW50IHwgV2lyZUZvcm1hdC5TdGF0ZW1lbnRzLkF0dHJpYnV0ZSB8IFdpcmVGb3JtYXQuU3RhdGVtZW50cy5Bcmd1bWVudDtcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBpbGVTdGF0ZW1lbnQoc3RhdGVtZW50OiBXaXJlRm9ybWF0LlN0YXRlbWVudCwgYnVpbGRlcjogT3Bjb2RlQnVpbGRlcikge1xuICBTVEFURU1FTlRTLmNvbXBpbGUoc3RhdGVtZW50LCBidWlsZGVyKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY2FubmVkVGVtcGxhdGU8UyBleHRlbmRzIFN5bWJvbFRhYmxlPiB7XG4gIGNvbXBpbGVTdGF0aWMoZW52OiBFbnZpcm9ubWVudCk6IENvbXBpbGVkU3RhdGljVGVtcGxhdGU7XG4gIGNvbXBpbGVEeW5hbWljKGVudjogRW52aXJvbm1lbnQpOiBDb21waWxlZER5bmFtaWNUZW1wbGF0ZTxTPjtcbn1cblxuZXhwb3J0IGNsYXNzIENvbXBpbGFibGVUZW1wbGF0ZTxTIGV4dGVuZHMgU3ltYm9sVGFibGU+IGltcGxlbWVudHMgU2Nhbm5lZFRlbXBsYXRlPFM+IHtcbiAgcHJpdmF0ZSBjb21waWxlZFN0YXRpYzogT3B0aW9uPENvbXBpbGVkU3RhdGljVGVtcGxhdGU+ID0gbnVsbDtcbiAgcHJpdmF0ZSBjb21waWxlZER5bmFtaWM6IE9wdGlvbjxDb21waWxlZER5bmFtaWNUZW1wbGF0ZTxTPj4gPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBzdGF0ZW1lbnRzOiBXaXJlRm9ybWF0LlN0YXRlbWVudFtdLCBwdWJsaWMgc3ltYm9sVGFibGU6IFMpIHt9XG5cbiAgY29tcGlsZVN0YXRpYyhlbnY6IEVudmlyb25tZW50KTogQ29tcGlsZWRTdGF0aWNUZW1wbGF0ZSB7XG4gICAgbGV0IHsgY29tcGlsZWRTdGF0aWMgfSA9IHRoaXM7XG5cbiAgICBpZiAoIWNvbXBpbGVkU3RhdGljKSB7XG4gICAgICBsZXQgYnVpbGRlciA9IGNvbXBpbGVTdGF0ZW1lbnRzKHRoaXMuc3RhdGVtZW50cywgdGhpcy5zeW1ib2xUYWJsZS5tZXRhLCBlbnYpO1xuXG4gICAgICBsZXQgc3RhcnQgPSBidWlsZGVyLnN0YXJ0O1xuICAgICAgbGV0IGVuZCA9IGJ1aWxkZXIuZmluYWxpemUoKTtcblxuICAgICAgY29tcGlsZWRTdGF0aWMgPSB0aGlzLmNvbXBpbGVkU3RhdGljID0gbmV3IENvbXBpbGVkU3RhdGljVGVtcGxhdGUoc3RhcnQsIGVuZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBpbGVkU3RhdGljO1xuICB9XG5cbiAgY29tcGlsZUR5bmFtaWMoZW52OiBFbnZpcm9ubWVudCk6IENvbXBpbGVkRHluYW1pY1RlbXBsYXRlPFM+IHtcbiAgICBsZXQgeyBjb21waWxlZER5bmFtaWMgfSA9IHRoaXM7XG5cbiAgICBpZiAoIWNvbXBpbGVkRHluYW1pYykge1xuICAgICAgbGV0IHN0YXRpY0Jsb2NrID0gdGhpcy5jb21waWxlU3RhdGljKGVudik7XG4gICAgICBjb21waWxlZER5bmFtaWMgPSBuZXcgQ29tcGlsZWREeW5hbWljVGVtcGxhdGUoc3RhdGljQmxvY2suc3RhcnQsIHN0YXRpY0Jsb2NrLmVuZCwgdGhpcy5zeW1ib2xUYWJsZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBpbGVkRHluYW1pYztcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBUZW1wbGF0ZSA9IENvbXBpbGFibGVUZW1wbGF0ZTxTeW1ib2xUYWJsZT47XG5leHBvcnQgdHlwZSBQcm9ncmFtID0gQ29tcGlsYWJsZVRlbXBsYXRlPFByb2dyYW1TeW1ib2xUYWJsZT47XG5leHBvcnQgdHlwZSBCbG9jayA9IENvbXBpbGFibGVUZW1wbGF0ZTxCbG9ja1N5bWJvbFRhYmxlPjtcblxuZXhwb3J0IHR5cGUgU2Nhbm5lZFByb2dyYW0gPSBTY2FubmVkVGVtcGxhdGU8UHJvZ3JhbVN5bWJvbFRhYmxlPjtcbmV4cG9ydCB0eXBlIFNjYW5uZWRCbG9jayA9IFNjYW5uZWRUZW1wbGF0ZTxCbG9ja1N5bWJvbFRhYmxlPjtcblxuZnVuY3Rpb24gY29tcGlsZVN0YXRlbWVudHMoc3RhdGVtZW50czogV2lyZUZvcm1hdC5TdGF0ZW1lbnRbXSwgbWV0YTogQ29tcGlsYXRpb25NZXRhLCBlbnY6IEVudmlyb25tZW50KSB7XG4gIGxldCBiID0gYnVpbGRlcihlbnYsIG1ldGEpO1xuXG4gIGZvciAobGV0IHN0YXRlbWVudCBvZiBzdGF0ZW1lbnRzKSB7XG4gICAgY29tcGlsZVN0YXRlbWVudChzdGF0ZW1lbnQsIGIpO1xuICB9XG5cbiAgcmV0dXJuIGI7XG59XG5cbmV4cG9ydCBjb25zdCBBVFRSU19CTE9DSyA9ICcmYXR0cnMnO1xuXG5leHBvcnQgZnVuY3Rpb24gbGF5b3V0KHByZWx1ZGU6IFdpcmVGb3JtYXQuU3RhdGVtZW50W10sIGhlYWQ6IFdpcmVGb3JtYXQuU3RhdGVtZW50W10sIGJvZHk6IFdpcmVGb3JtYXQuU3RhdGVtZW50W10sIHN5bWJvbFRhYmxlOiBQcm9ncmFtU3ltYm9sVGFibGUpIHtcbiAgbGV0IFssIHRhZ10gPSBwcmVsdWRlLnBvcCgpIGFzIFdpcmVGb3JtYXQuU3RhdGVtZW50cy5PcGVuRWxlbWVudDtcbiAgcHJlbHVkZS5wdXNoKFtPcHMuQ2xpZW50U2lkZVN0YXRlbWVudCwgQ2xpZW50U2lkZS5PcHMuT3BlbkNvbXBvbmVudEVsZW1lbnQsIHRhZ10pO1xuICBwcmVsdWRlLnB1c2goW09wcy5DbGllbnRTaWRlU3RhdGVtZW50LCBDbGllbnRTaWRlLk9wcy5EaWRDcmVhdGVFbGVtZW50XSk7XG5cbiAgbGV0IGF0dHJzU3ltYm9sID0gc3ltYm9sVGFibGUuc3ltYm9scy5sZW5ndGggKyAxO1xuICBzeW1ib2xUYWJsZS5zeW1ib2xzLnB1c2goQVRUUlNfQkxPQ0spO1xuXG4gIGxldCBzdGF0ZW1lbnRzID0gcHJlbHVkZVxuICAgIC5jb25jYXQoW1tPcHMuWWllbGQsIGF0dHJzU3ltYm9sLCBFTVBUWV9BUlJBWV1dKVxuICAgIC5jb25jYXQoaGVhZClcbiAgICAuY29uY2F0KGJvZHkpXG4gICAgLmNvbmNhdChbW09wcy5DbGllbnRTaWRlU3RhdGVtZW50LCBDbGllbnRTaWRlLk9wcy5EaWRSZW5kZXJMYXlvdXRdXSk7XG5cbiAgcmV0dXJuIG5ldyBDb21waWxhYmxlVGVtcGxhdGUoc3RhdGVtZW50cywgc3ltYm9sVGFibGUpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTY2FubmVyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBibG9jazogV2lyZUZvcm1hdC5TZXJpYWxpemVkVGVtcGxhdGVCbG9jaywgcHJpdmF0ZSBlbnY6IEVudmlyb25tZW50KSB7XG4gIH1cblxuICBzY2FuRW50cnlQb2ludChtZXRhOiBDb21waWxhdGlvbk1ldGEpOiBQcm9ncmFtIHtcbiAgICBsZXQgeyBibG9jaywgZW52IH0gPSB0aGlzO1xuXG4gICAgbGV0IHN0YXRlbWVudHM7XG4gICAgaWYgKGJsb2NrLnByZWx1ZGUgJiYgYmxvY2suaGVhZCkge1xuICAgICAgc3RhdGVtZW50cyA9IGJsb2NrLnByZWx1ZGUuY29uY2F0KGJsb2NrLmhlYWQpLmNvbmNhdChibG9jay5zdGF0ZW1lbnRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGVtZW50cyA9IGJsb2NrLnN0YXRlbWVudHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBSYXdQcm9ncmFtKGVudiwgbWV0YSwgc3RhdGVtZW50cywgYmxvY2suc3ltYm9scywgYmxvY2suaGFzRXZhbCkuc2NhbigpO1xuICB9XG5cbiAgc2NhbkJsb2NrKG1ldGE6IENvbXBpbGF0aW9uTWV0YSk6IEJsb2NrIHtcbiAgICBsZXQgeyBibG9jaywgZW52IH0gPSB0aGlzO1xuXG4gICAgbGV0IHN0YXRlbWVudHM7XG4gICAgaWYgKGJsb2NrLnByZWx1ZGUgJiYgYmxvY2suaGVhZCkge1xuICAgICAgc3RhdGVtZW50cyA9IGJsb2NrLnByZWx1ZGUuY29uY2F0KGJsb2NrLmhlYWQpLmNvbmNhdChibG9jay5zdGF0ZW1lbnRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGVtZW50cyA9IGJsb2NrLnN0YXRlbWVudHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBSYXdJbmxpbmVCbG9jayhlbnYsIG1ldGEsIHN0YXRlbWVudHMsIEVNUFRZX0FSUkFZKS5zY2FuKCk7XG4gIH1cblxuICBzY2FuTGF5b3V0KG1ldGE6IENvbXBpbGF0aW9uTWV0YSwgYXR0cnM6IFdpcmVGb3JtYXQuU3RhdGVtZW50cy5BdHRyaWJ1dGVbXSk6IFByb2dyYW0ge1xuICAgIGxldCB7IGJsb2NrIH0gPSB0aGlzO1xuICAgIGxldCB7IHN5bWJvbHMsIGhhc0V2YWwgfSA9IGJsb2NrO1xuXG4gICAgaWYgKCFibG9jay5wcmVsdWRlIHx8ICFibG9jay5oZWFkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEEgbGF5b3V0IG11c3QgaGF2ZSBhIHRvcC1sZXZlbCBlbGVtZW50YCk7XG4gICAgfVxuXG4gICAgbGV0IHN5bWJvbFRhYmxlID0geyBtZXRhLCBoYXNFdmFsLCBzeW1ib2xzIH07XG4gICAgbGV0IHsgc3RhdGVtZW50czogcHJlbHVkZSB9ID0gc2NhbkJsb2NrKHsgc3RhdGVtZW50czogYmxvY2sucHJlbHVkZSwgcGFyYW1ldGVyczogRU1QVFlfQVJSQVkgfSwgbWV0YSwgdGhpcy5lbnYpO1xuICAgIGxldCB7IHN0YXRlbWVudHM6IGhlYWQgfSA9IHNjYW5CbG9jayh7IHN0YXRlbWVudHM6IFsuLi5hdHRycywgLi4uYmxvY2suaGVhZF0sIHBhcmFtZXRlcnM6IEVNUFRZX0FSUkFZIH0sIG1ldGEsIHRoaXMuZW52KTtcbiAgICBsZXQgeyBzdGF0ZW1lbnRzOiBib2R5IH0gPSBzY2FuQmxvY2soeyBzdGF0ZW1lbnRzOiBibG9jay5zdGF0ZW1lbnRzLCBwYXJhbWV0ZXJzOiBFTVBUWV9BUlJBWSB9LCBtZXRhLCB0aGlzLmVudik7XG5cbiAgICByZXR1cm4gbGF5b3V0KHByZWx1ZGUsIGhlYWQsIGJvZHksIHN5bWJvbFRhYmxlKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2NhbkJsb2NrKGJsb2NrOiBXaXJlRm9ybWF0LlNlcmlhbGl6ZWRJbmxpbmVCbG9jaywgbWV0YTogQ29tcGlsYXRpb25NZXRhLCBlbnY6IEVudmlyb25tZW50KTogQmxvY2sge1xuICByZXR1cm4gbmV3IFJhd0lubGluZUJsb2NrKGVudiwgbWV0YSwgYmxvY2suc3RhdGVtZW50cywgRU1QVFlfQVJSQVkpLnNjYW4oKTtcbn1cblxuaW1wb3J0IHsgUHVibGljVk0gfSBmcm9tICcuL3ZtJztcbmltcG9ydCB7IFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuXG5leHBvcnQgbmFtZXNwYWNlIENsaWVudFNpZGUge1xuICBleHBvcnQgZW51bSBPcHMge1xuICAgIE9wZW5Db21wb25lbnRFbGVtZW50LFxuICAgIERpZENyZWF0ZUVsZW1lbnQsXG4gICAgRGlkUmVuZGVyTGF5b3V0LFxuICAgIE9wdGltaXplZEFwcGVuZCxcbiAgICBVbm9wdGltaXplZEFwcGVuZCxcbiAgICBTdGF0aWNQYXJ0aWFsLFxuICAgIER5bmFtaWNQYXJ0aWFsLFxuICAgIE5lc3RlZEJsb2NrLFxuICAgIFNjYW5uZWRCbG9jayxcblxuICAgIEZ1bmN0aW9uRXhwcmVzc2lvblxuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzPFQgZXh0ZW5kcyBhbnlbXT4odmFyaWFudDogT3BzKTogKHZhbHVlOiBhbnlbXSkgPT4gdmFsdWUgaXMgVCB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlOiBhbnlbXSk6IHZhbHVlIGlzIFQge1xuICAgICAgcmV0dXJuIHZhbHVlWzBdID09PSBXaXJlRm9ybWF0Lk9wcy5DbGllbnRTaWRlRXhwcmVzc2lvbiB8fCB2YWx1ZVswXSA9PT0gV2lyZUZvcm1hdC5PcHMuQ2xpZW50U2lkZVN0YXRlbWVudCAmJiB2YWx1ZVsxXSA9PT0gdmFyaWFudDtcbiAgICB9O1xuICB9XG5cbiAgaW1wb3J0IENsaWVudFNpZGVTdGF0ZW1lbnQgPSBXaXJlRm9ybWF0Lk9wcy5DbGllbnRTaWRlU3RhdGVtZW50O1xuICBpbXBvcnQgQ2xpZW50U2lkZUV4cHJlc3Npb24gPSBXaXJlRm9ybWF0Lk9wcy5DbGllbnRTaWRlRXhwcmVzc2lvbjtcblxuICBleHBvcnQgdHlwZSBPcGVuQ29tcG9uZW50RWxlbWVudCAgPSBbQ2xpZW50U2lkZVN0YXRlbWVudCwgT3BzLk9wZW5Db21wb25lbnRFbGVtZW50LCBzdHJpbmddO1xuICBleHBvcnQgdHlwZSBEaWRDcmVhdGVFbGVtZW50ICAgICAgPSBbQ2xpZW50U2lkZVN0YXRlbWVudCwgT3BzLkRpZENyZWF0ZUVsZW1lbnRdO1xuICBleHBvcnQgdHlwZSBEaWRSZW5kZXJMYXlvdXQgICAgICAgPSBbQ2xpZW50U2lkZVN0YXRlbWVudCwgT3BzLkRpZFJlbmRlckxheW91dF07XG4gIGV4cG9ydCB0eXBlIE9wdGltaXplZEFwcGVuZCAgICAgICA9IFtDbGllbnRTaWRlU3RhdGVtZW50LCBPcHMuT3B0aW1pemVkQXBwZW5kLCBXaXJlRm9ybWF0LkV4cHJlc3Npb24sIGJvb2xlYW5dO1xuICBleHBvcnQgdHlwZSBVbm9wdGltaXplZEFwcGVuZCAgICAgPSBbQ2xpZW50U2lkZVN0YXRlbWVudCwgT3BzLlVub3B0aW1pemVkQXBwZW5kLCBXaXJlRm9ybWF0LkV4cHJlc3Npb24sIGJvb2xlYW5dO1xuICBleHBvcnQgdHlwZSBTdGF0aWNQYXJ0aWFsICAgICAgICAgPSBbQ2xpZW50U2lkZVN0YXRlbWVudCwgT3BzLlN0YXRpY1BhcnRpYWwsIHN0cmluZywgV2lyZUZvcm1hdC5Db3JlLkV2YWxJbmZvXTtcbiAgZXhwb3J0IHR5cGUgRHluYW1pY1BhcnRpYWwgICAgICAgID0gW0NsaWVudFNpZGVTdGF0ZW1lbnQsIE9wcy5EeW5hbWljUGFydGlhbCwgV2lyZUZvcm1hdC5FeHByZXNzaW9uLCBXaXJlRm9ybWF0LkNvcmUuRXZhbEluZm9dO1xuXG4gIGV4cG9ydCB0eXBlIEZ1bmN0aW9uRXhwcmVzc2lvbiAgICA9IFtDbGllbnRTaWRlRXhwcmVzc2lvbiwgT3BzLkZ1bmN0aW9uRXhwcmVzc2lvbiwgRnVuY3Rpb25FeHByZXNzaW9uQ2FsbGJhY2s8T3BhcXVlPl07XG5cbiAgZXhwb3J0IHR5cGUgRnVuY3Rpb25FeHByZXNzaW9uQ2FsbGJhY2s8VD4gPSAoVk06IFB1YmxpY1ZNLCBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUpID0+IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8VD47XG5cbiAgZXhwb3J0IHR5cGUgQ2xpZW50U2lkZVN0YXRlbWVudCA9XG4gICAgfCBPcGVuQ29tcG9uZW50RWxlbWVudFxuICAgIHwgRGlkQ3JlYXRlRWxlbWVudFxuICAgIHwgRGlkUmVuZGVyTGF5b3V0XG4gICAgfCBPcHRpbWl6ZWRBcHBlbmRcbiAgICB8IFVub3B0aW1pemVkQXBwZW5kXG4gICAgfCBTdGF0aWNQYXJ0aWFsXG4gICAgfCBEeW5hbWljUGFydGlhbFxuICAgIDtcblxuICBleHBvcnQgdHlwZSBDbGllbnRTaWRlRXhwcmVzc2lvbiA9XG4gICAgfCBGdW5jdGlvbkV4cHJlc3Npb25cbiAgICA7XG59XG5cbmNvbnN0IHsgT3BzIH0gPSBXaXJlRm9ybWF0O1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUmF3QmxvY2s8UyBleHRlbmRzIFN5bWJvbFRhYmxlPiB7XG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBlbnY6IEVudmlyb25tZW50LCBwcm90ZWN0ZWQgbWV0YTogQ29tcGlsYXRpb25NZXRhLCBwcml2YXRlIHN0YXRlbWVudHM6IFdpcmVGb3JtYXQuU3RhdGVtZW50W10pIHt9XG5cbiAgc2NhblN0YXRlbWVudHMoKTogV2lyZUZvcm1hdC5TdGF0ZW1lbnRbXSB7XG4gICAgbGV0IGJ1ZmZlcjogV2lyZUZvcm1hdC5TdGF0ZW1lbnRbXSA9IFtdO1xuICAgIGxldCBzdGF0ZW1lbnRzID0gdGhpcy5zdGF0ZW1lbnRzO1xuICAgIGZvciAobGV0IHN0YXRlbWVudCBvZiBzdGF0ZW1lbnRzKSB7XG4gICAgICBidWZmZXIucHVzaChzdGF0ZW1lbnQpO1xuICAgIH1cblxuICAgIHJldHVybiBidWZmZXI7XG4gIH1cblxuICBjaGlsZChibG9jazogT3B0aW9uPFdpcmVGb3JtYXQuU2VyaWFsaXplZElubGluZUJsb2NrPik6IE9wdGlvbjxSYXdJbmxpbmVCbG9jaz4ge1xuICAgIGlmICghYmxvY2spIHJldHVybiBudWxsO1xuICAgIHJldHVybiBuZXcgUmF3SW5saW5lQmxvY2sodGhpcy5lbnYsIHRoaXMubWV0YSwgYmxvY2suc3RhdGVtZW50cywgYmxvY2sucGFyYW1ldGVycyk7XG4gIH1cblxuICBhYnN0cmFjdCBzY2FuKCk6IENvbXBpbGFibGVUZW1wbGF0ZTxTPjtcbn1cblxuZXhwb3J0IGNsYXNzIFJhd0lubGluZUJsb2NrIGV4dGVuZHMgUmF3QmxvY2s8QmxvY2tTeW1ib2xUYWJsZT4ge1xuICBjb25zdHJ1Y3RvcihlbnY6IEVudmlyb25tZW50LCBtZXRhOiBDb21waWxhdGlvbk1ldGEsIHN0YXRlbWVudHM6IFdpcmVGb3JtYXQuU3RhdGVtZW50W10sIHByaXZhdGUgcGFyYW1ldGVyczogbnVtYmVyW10pIHtcbiAgICBzdXBlcihlbnYsIG1ldGEsIHN0YXRlbWVudHMpO1xuICB9XG5cbiAgc2NhbigpOiBCbG9jayB7XG4gICAgbGV0IHN0YXRlbWVudHMgPSB0aGlzLnNjYW5TdGF0ZW1lbnRzKCk7XG4gICAgcmV0dXJuIG5ldyBDb21waWxhYmxlVGVtcGxhdGUoc3RhdGVtZW50cywgeyBwYXJhbWV0ZXJzOiB0aGlzLnBhcmFtZXRlcnMsIG1ldGE6IHRoaXMubWV0YSB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUmF3UHJvZ3JhbSBleHRlbmRzIFJhd0Jsb2NrPFByb2dyYW1TeW1ib2xUYWJsZT4ge1xuICBjb25zdHJ1Y3RvcihlbnY6IEVudmlyb25tZW50LCBtZXRhOiBDb21waWxhdGlvbk1ldGEsIHN0YXRlbWVudHM6IFdpcmVGb3JtYXQuU3RhdGVtZW50W10sIHByaXZhdGUgc3ltYm9sczogc3RyaW5nW10sIHByaXZhdGUgaGFzRXZhbDogYm9vbGVhbikge1xuICAgIHN1cGVyKGVudiwgbWV0YSwgc3RhdGVtZW50cyk7XG4gIH1cblxuICBzY2FuKCk6IFByb2dyYW0ge1xuICAgIGxldCBzdGF0ZW1lbnRzID0gdGhpcy5zY2FuU3RhdGVtZW50cygpO1xuICAgIHJldHVybiBuZXcgQ29tcGlsYWJsZVRlbXBsYXRlKHN0YXRlbWVudHMsIHsgc3ltYm9sczogdGhpcy5zeW1ib2xzLCBoYXNFdmFsOiB0aGlzLmhhc0V2YWwsIG1ldGE6IHRoaXMubWV0YSB9KTtcbiAgfVxufVxuIl19

@@ -9,3 +9,2 @@ 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; }

import { unreachable } from '@glimmer/util';
import { SingleNodeBounds, single, clear } from './bounds';

@@ -39,3 +38,2 @@ export function isSafeString(value) {

}
throw unreachable();
}

@@ -49,3 +47,2 @@ export function trustingInsert(dom, cursor, value) {

}
throw unreachable();
}

@@ -183,2 +180,2 @@

}(Upsert);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBzZXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidXBzZXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsQUFBTyxTQUFVLEFBQVcsQUFBRSxtQkFBTSxBQUFlLEFBQUM7QUFJcEQsQUFBTyxTQUFrQixBQUFnQixrQkFBRSxBQUFNLFFBQUUsQUFBSyxBQUFFLGFBQU0sQUFBVSxBQUFDO0FBTTNFLEFBQU0sNkJBQXVCLEFBQWE7QUFDeEMsQUFBTSxXQUFDLENBQUMsQ0FBQyxBQUFLLFNBQUksT0FBTyxBQUFLLE1BQUMsQUFBUSxBQUFDLGNBQUssQUFBVSxBQUFDLEFBQzFEO0FBQUM7QUFFRCxBQUFNLHVCQUFpQixBQUFhO0FBQ2xDLEFBQU0sV0FBQyxBQUFLLFVBQUssQUFBSSxRQUFJLE9BQU8sQUFBSyxVQUFLLEFBQVEsWUFBSSxPQUFPLEFBQUssTUFBQyxBQUFVLEFBQUMsZ0JBQUssQUFBUSxBQUFDLEFBQzlGO0FBQUM7QUFFRCxBQUFNLHlCQUFtQixBQUFhO0FBQ3BDLEFBQU0sV0FBQyxPQUFPLEFBQUssVUFBSyxBQUFRLEFBQUMsQUFDbkM7QUFBQyxBQU1EOzthQUNFLGdCQUFtQixBQUFjOzs7QUFBZCxTQUFNLFNBQU4sQUFBTSxBQUFRLEFBQ2pDO0FBQUMsQUFHRjs7QUFFRCxlQUFlLEFBQU0sQUFBQztBQUV0QixBQUFNLCtCQUF5QixBQUF3QixLQUFFLEFBQWMsUUFBRSxBQUF3QjtBQUMvRixBQUFFLEFBQUMsUUFBQyxBQUFRLFNBQUMsQUFBSyxBQUFDLEFBQUMsUUFBQyxBQUFDO0FBQ3BCLEFBQU0sZUFBQyxBQUFVLFdBQUMsQUFBTSxPQUFDLEFBQUcsS0FBRSxBQUFNLFFBQUUsQUFBSyxBQUFDLEFBQUMsQUFDL0M7QUFBQztBQUNELEFBQUUsQUFBQyxRQUFDLEFBQVksYUFBQyxBQUFLLEFBQUMsQUFBQyxRQUFDLEFBQUM7QUFDeEIsQUFBTSxlQUFDLEFBQWdCLGlCQUFDLEFBQU0sT0FBQyxBQUFHLEtBQUUs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QUFDSDtBQUFDLEFBQ0Y7OztFQXBCd0IsQUFBTSxBQUM3QixBQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3BhcXVlLCB1bnJlYWNoYWJsZSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgRE9NQ2hhbmdlcywgRE9NVHJlZUNvbnN0cnVjdGlvbiB9IGZyb20gJy4vZG9tL2hlbHBlcic7XG5pbXBvcnQgKiBhcyBTaW1wbGUgZnJvbSAnLi9kb20vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBGSVhfUkVJRklDQVRJT04gfSBmcm9tICcuL2RvbS9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEJvdW5kcywgQ3Vyc29yLCBTaW5nbGVOb2RlQm91bmRzLCBzaW5nbGUsIGNsZWFyIH0gZnJvbSAnLi9ib3VuZHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNhZmVTdHJpbmcge1xuICB0b0hUTUwoKTogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTYWZlU3RyaW5nKHZhbHVlOiBPcGFxdWUpOiB2YWx1ZSBpcyBTYWZlU3RyaW5nIHtcbiAgcmV0dXJuICEhdmFsdWUgJiYgdHlwZW9mIHZhbHVlWyd0b0hUTUwnXSA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZSh2YWx1ZTogT3BhcXVlKTogdmFsdWUgaXMgTm9kZSB7XG4gIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHR5cGVvZiB2YWx1ZVsnbm9kZVR5cGUnXSA9PT0gJ251bWJlcic7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZyh2YWx1ZTogT3BhcXVlKTogdmFsdWUgaXMgc3RyaW5nIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZyc7XG59XG5cbmV4cG9ydCB0eXBlIEluc2VydGlvbiA9IENhdXRpb3VzSW5zZXJ0aW9uIHwgVHJ1c3RpbmdJbnNlcnRpb247XG5leHBvcnQgdHlwZSBDYXV0aW91c0luc2VydGlvbiA9IHN0cmluZyB8IFNhZmVTdHJpbmcgfCBOb2RlO1xuZXhwb3J0IHR5cGUgVHJ1c3RpbmdJbnNlcnRpb24gPSBzdHJpbmcgfCBOb2RlO1xuXG5hYnN0cmFjdCBjbGFzcyBVcHNlcnQge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgYm91bmRzOiBCb3VuZHMpIHtcbiAgfVxuXG4gIGFic3RyYWN0IHVwZGF0ZShkb206IERPTUNoYW5nZXMsIHZhbHVlOiBJbnNlcnRpb24pOiBib29sZWFuO1xufVxuXG5leHBvcnQgZGVmYXVsdCBVcHNlcnQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBjYXV0aW91c0luc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogQ2F1dGlvdXNJbnNlcnRpb24pOiBVcHNlcnQge1xuICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgcmV0dXJuIFRleHRVcHNlcnQuaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cbiAgaWYgKGlzU2FmZVN0cmluZyh2YWx1ZSkpIHtcbiAgICByZXR1cm4gU2FmZVN0cmluZ1Vwc2VydC5pbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxuICBpZiAoaXNOb2RlKHZhbHVlKSkge1xuICAgIHJldHVybiBOb2RlVXBzZXJ0Lmluc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG5cbiAgdGhyb3cgdW5yZWFjaGFibGUoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRydXN0aW5nSW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBUcnVzdGluZ0luc2VydGlvbik6IFVwc2VydCB7XG4gIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICByZXR1cm4gSFRNTFVwc2VydC5pbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxuICBpZiAoaXNOb2RlKHZhbHVlKSkge1xuICAgIHJldHVybiBOb2RlVXBzZXJ0Lmluc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG5cbiAgdGhyb3cgdW5yZWFjaGFibGUoKTtcbn1cblxuY2xhc3MgVGV4dFVwc2VydCBleHRlbmRzIFVwc2VydCB7XG4gIHN0YXRpYyBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IHN0cmluZyk6IFVwc2VydCB7XG4gICAgbGV0IHRleHROb2RlID0gZG9tLmNyZWF0ZVRleHROb2RlKHZhbHVlKTtcbiAgICBkb20uaW5zZXJ0QmVmb3JlKGN1cnNvci5lbGVtZW50LCB0ZXh0Tm9kZSwgY3Vyc29yLm5leHRTaWJsaW5nKTtcbiAgICBsZXQgYm91bmRzID0gbmV3IFNpbmdsZU5vZGVCb3VuZHMoY3Vyc29yLmVsZW1lbnQsIHRleHROb2RlKTtcbiAgICByZXR1cm4gbmV3IFRleHRVcHNlcnQoYm91bmRzLCB0ZXh0Tm9kZSk7XG4gIH1cblxuICBwcml2YXRlIHRleHROb2RlOiBUZXh0O1xuXG4gIGNvbnN0cnVjdG9yKGJvdW5kczogQm91bmRzLCB0ZXh0Tm9kZTogU2ltcGxlLlRleHQpIHtcbiAgICBzdXBlcihib3VuZHMpO1xuICAgIHRoaXMudGV4dE5vZGUgPSB0ZXh0Tm9kZSBhcyBUZXh0O1xuICB9XG5cbiAgdXBkYXRlKF9kb206IERPTUNoYW5nZXMsIHZhbHVlOiBJbnNlcnRpb24pOiBib29sZWFuIHtcbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICBsZXQgeyB0ZXh0Tm9kZSB9ID0gdGhpcztcbiAgICAgIHRleHROb2RlLm5vZGVWYWx1ZSA9IHZhbHVlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgSFRNTFVwc2VydCBleHRlbmRzIFVwc2VydCB7XG4gIHN0YXRpYyBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IHN0cmluZyk6IFVwc2VydCB7XG4gICAgbGV0IGJvdW5kcyA9IGRvbS5pbnNlcnRIVE1MQmVmb3JlKGN1cnNvci5lbGVtZW50LCB2YWx1ZSwgY3Vyc29yLm5leHRTaWJsaW5nKTtcbiAgICByZXR1cm4gbmV3IEhUTUxVcHNlcnQoYm91bmRzKTtcbiAgfVxuXG4gIHVwZGF0ZShkb206IERPTUNoYW5nZXMsIHZhbHVlOiBJbnNlcnRpb24pOiBib29sZWFuIHtcbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICBsZXQgeyBib3VuZHMgfSA9IHRoaXM7XG5cbiAgICAgIGxldCBwYXJlbnRFbGVtZW50ID0gYm91bmRzLnBhcmVudEVsZW1lbnQoKTtcbiAgICAgIGxldCBuZXh0U2libGluZyA9IGNsZWFyKGJvdW5kcyk7XG5cbiAgICAgIHRoaXMuYm91bmRzID0gZG9tLmluc2VydEhUTUxCZWZvcmUocGFyZW50RWxlbWVudCBhcyBGSVhfUkVJRklDQVRJT048RWxlbWVudD4sIG5leHRTaWJsaW5nIGFzIEZJWF9SRUlGSUNBVElPTjxOb2RlPiwgdmFsdWUpO1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBTYWZlU3RyaW5nVXBzZXJ0IGV4dGVuZHMgVXBzZXJ0IHtcbiAgc3RhdGljIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogU2FmZVN0cmluZyk6IFVwc2VydCB7XG4gICAgbGV0IHN0cmluZ1ZhbHVlID0gdmFsdWUudG9IVE1MKCk7XG4gICAgbGV0IGJvdW5kcyA9IGRvbS5pbnNlcnRIVE1MQmVmb3JlKGN1cnNvci5lbGVtZW50LCBzdHJpbmdWYWx1ZSwgY3Vyc29yLm5leHRTaWJsaW5nKTtcbiAgICByZXR1cm4gbmV3IFNhZmVTdHJpbmdVcHNlcnQoYm91bmRzLCBzdHJpbmdWYWx1ZSk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihib3VuZHM6IEJvdW5kcywgcHJpdmF0ZSBsYXN0U3RyaW5nVmFsdWU6IHN0cmluZykge1xuICAgIHN1cGVyKGJvdW5kcyk7XG4gIH1cblxuICB1cGRhdGUoZG9tOiBET01DaGFuZ2VzLCB2YWx1ZTogSW5zZXJ0aW9uKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzU2FmZVN0cmluZyh2YWx1ZSkpIHtcbiAgICAgIGxldCBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvSFRNTCgpO1xuXG4gICAgICBpZiAoc3RyaW5nVmFsdWUgIT09IHRoaXMubGFzdFN0cmluZ1ZhbHVlKSB7XG4gICAgICAgIGxldCB7IGJvdW5kcyB9ID0gdGhpcztcblxuICAgICAgICBsZXQgcGFyZW50RWxlbWVudCA9IGJvdW5kcy5wYXJlbnRFbGVtZW50KCk7XG4gICAgICAgIGxldCBuZXh0U2libGluZyA9IGNsZWFyKGJvdW5kcyk7XG5cbiAgICAgICAgdGhpcy5ib3VuZHMgPSBkb20uaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnRFbGVtZW50IGFzIEZJWF9SRUlGSUNBVElPTjxFbGVtZW50PiwgbmV4dFNpYmxpbmcgYXMgRklYX1JFSUZJQ0FUSU9OPE5vZGU+LCBzdHJpbmdWYWx1ZSk7XG4gICAgICAgIHRoaXMubGFzdFN0cmluZ1ZhbHVlID0gc3RyaW5nVmFsdWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59XG5cbmNsYXNzIE5vZGVVcHNlcnQgZXh0ZW5kcyBVcHNlcnQge1xuICBzdGF0aWMgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIG5vZGU6IFNpbXBsZS5Ob2RlKTogVXBzZXJ0IHtcbiAgICBkb20uaW5zZXJ0QmVmb3JlKGN1cnNvci5lbGVtZW50LCBub2RlLCBjdXJzb3IubmV4dFNpYmxpbmcpO1xuICAgIHJldHVybiBuZXcgTm9kZVVwc2VydChzaW5nbGUoY3Vyc29yLmVsZW1lbnQsIG5vZGUpKTtcbiAgfVxuXG4gIHVwZGF0ZShkb206IERPTUNoYW5nZXMsIHZhbHVlOiBJbnNlcnRpb24pOiBib29sZWFuIHtcbiAgICBpZiAoaXNOb2RlKHZhbHVlKSkge1xuICAgICAgbGV0IHsgYm91bmRzIH0gPSB0aGlzO1xuXG4gICAgICBsZXQgcGFyZW50RWxlbWVudCA9IGJvdW5kcy5wYXJlbnRFbGVtZW50KCk7XG4gICAgICBsZXQgbmV4dFNpYmxpbmcgPSBjbGVhcihib3VuZHMpO1xuXG4gICAgICB0aGlzLmJvdW5kcyA9IGRvbS5pbnNlcnROb2RlQmVmb3JlKHBhcmVudEVsZW1lbnQgYXMgRklYX1JFSUZJQ0FUSU9OPEVsZW1lbnQ+LCB2YWx1ZSwgbmV4dFNpYmxpbmcgYXMgRklYX1JFSUZJQ0FUSU9OPE5vZGU+KTtcblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBzZXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidXBzZXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBSUEsQUFBTyxTQUFrQixBQUFnQixrQkFBRSxBQUFNLFFBQUUsQUFBSyxBQUFFLGFBQU0sQUFBVSxBQUFDO0FBTTNFLEFBQU0sNkJBQXVCLEFBQWE7QUFDeEMsQUFBTSxXQUFDLENBQUMsQ0FBQyxBQUFLLFNBQUksT0FBTyxBQUFLLE1BQUMsQUFBUSxBQUFDLGNBQUssQUFBVSxBQUFDLEFBQzFEO0FBQUM7QUFFRCxBQUFNLHVCQUFpQixBQUFhO0FBQ2xDLEFBQU0sV0FBQyxBQUFLLFVBQUssQUFBSSxRQUFJLE9BQU8sQUFBSyxVQUFLLEFBQVEsWUFBSSxPQUFPLEFBQUssTUFBQyxBQUFVLEFBQUMsZ0JBQUssQUFBUSxBQUFDLEFBQzlGO0FBQUM7QUFFRCxBQUFNLHlCQUFtQixBQUFhO0FBQ3BDLEFBQU0sV0FBQyxPQUFPLEFBQUssVUFBSyxBQUFRLEFBQUMsQUFDbkM7QUFBQyxBQU1EOzthQUNFLGdCQUFtQixBQUFjOzs7QUFBZCxTQUFNLFNBQU4sQUFBTSxBQUFRLEFBQ2pDO0FBQUMsQUFHRjs7QUFFRCxlQUFlLEFBQU0sQUFBQztBQUV0QixBQUFNLCtCQUF5QixBQUF3QixLQUFFLEFBQWMsUUFBRSxBQUF3QjtBQUMvRixBQUFFLEFBQUMsUUFBQyxBQUFRLFNBQUMsQUFBSyxBQUFDLEFBQUMsUUFBQyxBQUFDO0FBQ3BCLEFBQU0sZUFBQyxBQUFVLFdBQUMsQUFBTSxPQUFDLEFBQUcsS0FBRSxBQUFNLFFBQUUsQUFBSyxBQUFDLEFBQUMsQUFDL0M7QUFBQztBQUNELEFBQUUsQUFBQyxRQUFDLEFBQVksYUFBQyxBQUFLLEFBQUMsQUFBQyxRQUFDLEFBQUM7QUFDeEIsQUFBTSxlQUFDLEFBQWdCLGlCQUFDLEFBQU0sT0FBQyxBQUFHLEtBQUUsQUFBTSxRQUFFLEFBQUssQUFBQyxBQUFDLEFBQ3JEO0FBQUM7QUFDRCxB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dGlsJztcbmltcG9ydCB7IERPTUNoYW5nZXMsIERPTVRyZWVDb25zdHJ1Y3Rpb24gfSBmcm9tICcuL2RvbS9oZWxwZXInO1xuaW1wb3J0ICogYXMgU2ltcGxlIGZyb20gJy4vZG9tL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRklYX1JFSUZJQ0FUSU9OIH0gZnJvbSAnLi9kb20vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBCb3VuZHMsIEN1cnNvciwgU2luZ2xlTm9kZUJvdW5kcywgc2luZ2xlLCBjbGVhciB9IGZyb20gJy4vYm91bmRzJztcblxuZXhwb3J0IGludGVyZmFjZSBTYWZlU3RyaW5nIHtcbiAgdG9IVE1MKCk6IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU2FmZVN0cmluZyh2YWx1ZTogT3BhcXVlKTogdmFsdWUgaXMgU2FmZVN0cmluZyB7XG4gIHJldHVybiAhIXZhbHVlICYmIHR5cGVvZiB2YWx1ZVsndG9IVE1MJ10gPT09ICdmdW5jdGlvbic7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05vZGUodmFsdWU6IE9wYXF1ZSk6IHZhbHVlIGlzIE5vZGUge1xuICByZXR1cm4gdmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgdmFsdWVbJ25vZGVUeXBlJ10gPT09ICdudW1iZXInO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmcodmFsdWU6IE9wYXF1ZSk6IHZhbHVlIGlzIHN0cmluZyB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnO1xufVxuXG5leHBvcnQgdHlwZSBJbnNlcnRpb24gPSBDYXV0aW91c0luc2VydGlvbiB8IFRydXN0aW5nSW5zZXJ0aW9uO1xuZXhwb3J0IHR5cGUgQ2F1dGlvdXNJbnNlcnRpb24gPSBzdHJpbmcgfCBTYWZlU3RyaW5nIHwgTm9kZTtcbmV4cG9ydCB0eXBlIFRydXN0aW5nSW5zZXJ0aW9uID0gc3RyaW5nIHwgTm9kZTtcblxuYWJzdHJhY3QgY2xhc3MgVXBzZXJ0IHtcbiAgY29uc3RydWN0b3IocHVibGljIGJvdW5kczogQm91bmRzKSB7XG4gIH1cblxuICBhYnN0cmFjdCB1cGRhdGUoZG9tOiBET01DaGFuZ2VzLCB2YWx1ZTogSW5zZXJ0aW9uKTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgVXBzZXJ0O1xuXG5leHBvcnQgZnVuY3Rpb24gY2F1dGlvdXNJbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IENhdXRpb3VzSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgIHJldHVybiBUZXh0VXBzZXJ0Lmluc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG4gIGlmIChpc1NhZmVTdHJpbmcodmFsdWUpKSB7XG4gICAgcmV0dXJuIFNhZmVTdHJpbmdVcHNlcnQuaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cbiAgaWYgKGlzTm9kZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gTm9kZVVwc2VydC5pbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxuXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cnVzdGluZ0luc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogVHJ1c3RpbmdJbnNlcnRpb24pOiBVcHNlcnQge1xuICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgcmV0dXJuIEhUTUxVcHNlcnQuaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cbiAgaWYgKGlzTm9kZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gTm9kZVVwc2VydC5pbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxuXG59XG5cbmNsYXNzIFRleHRVcHNlcnQgZXh0ZW5kcyBVcHNlcnQge1xuICBzdGF0aWMgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBzdHJpbmcpOiBVcHNlcnQge1xuICAgIGxldCB0ZXh0Tm9kZSA9IGRvbS5jcmVhdGVUZXh0Tm9kZSh2YWx1ZSk7XG4gICAgZG9tLmluc2VydEJlZm9yZShjdXJzb3IuZWxlbWVudCwgdGV4dE5vZGUsIGN1cnNvci5uZXh0U2libGluZyk7XG4gICAgbGV0IGJvdW5kcyA9IG5ldyBTaW5nbGVOb2RlQm91bmRzKGN1cnNvci5lbGVtZW50LCB0ZXh0Tm9kZSk7XG4gICAgcmV0dXJuIG5ldyBUZXh0VXBzZXJ0KGJvdW5kcywgdGV4dE5vZGUpO1xuICB9XG5cbiAgcHJpdmF0ZSB0ZXh0Tm9kZTogVGV4dDtcblxuICBjb25zdHJ1Y3Rvcihib3VuZHM6IEJvdW5kcywgdGV4dE5vZGU6IFNpbXBsZS5UZXh0KSB7XG4gICAgc3VwZXIoYm91bmRzKTtcbiAgICB0aGlzLnRleHROb2RlID0gdGV4dE5vZGUgYXMgVGV4dDtcbiAgfVxuXG4gIHVwZGF0ZShfZG9tOiBET01DaGFuZ2VzLCB2YWx1ZTogSW5zZXJ0aW9uKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgbGV0IHsgdGV4dE5vZGUgfSA9IHRoaXM7XG4gICAgICB0ZXh0Tm9kZS5ub2RlVmFsdWUgPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59XG5cbmNsYXNzIEhUTUxVcHNlcnQgZXh0ZW5kcyBVcHNlcnQge1xuICBzdGF0aWMgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBzdHJpbmcpOiBVcHNlcnQge1xuICAgIGxldCBib3VuZHMgPSBkb20uaW5zZXJ0SFRNTEJlZm9yZShjdXJzb3IuZWxlbWVudCwgdmFsdWUsIGN1cnNvci5uZXh0U2libGluZyk7XG4gICAgcmV0dXJuIG5ldyBIVE1MVXBzZXJ0KGJvdW5kcyk7XG4gIH1cblxuICB1cGRhdGUoZG9tOiBET01DaGFuZ2VzLCB2YWx1ZTogSW5zZXJ0aW9uKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgbGV0IHsgYm91bmRzIH0gPSB0aGlzO1xuXG4gICAgICBsZXQgcGFyZW50RWxlbWVudCA9IGJvdW5kcy5wYXJlbnRFbGVtZW50KCk7XG4gICAgICBsZXQgbmV4dFNpYmxpbmcgPSBjbGVhcihib3VuZHMpO1xuXG4gICAgICB0aGlzLmJvdW5kcyA9IGRvbS5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudEVsZW1lbnQgYXMgRklYX1JFSUZJQ0FUSU9OPEVsZW1lbnQ+LCBuZXh0U2libGluZyBhcyBGSVhfUkVJRklDQVRJT048Tm9kZT4sIHZhbHVlKTtcblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgU2FmZVN0cmluZ1Vwc2VydCBleHRlbmRzIFVwc2VydCB7XG4gIHN0YXRpYyBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IFNhZmVTdHJpbmcpOiBVcHNlcnQge1xuICAgIGxldCBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvSFRNTCgpO1xuICAgIGxldCBib3VuZHMgPSBkb20uaW5zZXJ0SFRNTEJlZm9yZShjdXJzb3IuZWxlbWVudCwgc3RyaW5nVmFsdWUsIGN1cnNvci5uZXh0U2libGluZyk7XG4gICAgcmV0dXJuIG5ldyBTYWZlU3RyaW5nVXBzZXJ0KGJvdW5kcywgc3RyaW5nVmFsdWUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoYm91bmRzOiBCb3VuZHMsIHByaXZhdGUgbGFzdFN0cmluZ1ZhbHVlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihib3VuZHMpO1xuICB9XG5cbiAgdXBkYXRlKGRvbTogRE9NQ2hhbmdlcywgdmFsdWU6IEluc2VydGlvbik6IGJvb2xlYW4ge1xuICAgIGlmIChpc1NhZmVTdHJpbmcodmFsdWUpKSB7XG4gICAgICBsZXQgc3RyaW5nVmFsdWUgPSB2YWx1ZS50b0hUTUwoKTtcblxuICAgICAgaWYgKHN0cmluZ1ZhbHVlICE9PSB0aGlzLmxhc3RTdHJpbmdWYWx1ZSkge1xuICAgICAgICBsZXQgeyBib3VuZHMgfSA9IHRoaXM7XG5cbiAgICAgICAgbGV0IHBhcmVudEVsZW1lbnQgPSBib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICAgICAgICBsZXQgbmV4dFNpYmxpbmcgPSBjbGVhcihib3VuZHMpO1xuXG4gICAgICAgIHRoaXMuYm91bmRzID0gZG9tLmluc2VydEhUTUxCZWZvcmUocGFyZW50RWxlbWVudCBhcyBGSVhfUkVJRklDQVRJT048RWxlbWVudD4sIG5leHRTaWJsaW5nIGFzIEZJWF9SRUlGSUNBVElPTjxOb2RlPiwgc3RyaW5nVmFsdWUpO1xuICAgICAgICB0aGlzLmxhc3RTdHJpbmdWYWx1ZSA9IHN0cmluZ1ZhbHVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBOb2RlVXBzZXJ0IGV4dGVuZHMgVXBzZXJ0IHtcbiAgc3RhdGljIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCBub2RlOiBTaW1wbGUuTm9kZSk6IFVwc2VydCB7XG4gICAgZG9tLmluc2VydEJlZm9yZShjdXJzb3IuZWxlbWVudCwgbm9kZSwgY3Vyc29yLm5leHRTaWJsaW5nKTtcbiAgICByZXR1cm4gbmV3IE5vZGVVcHNlcnQoc2luZ2xlKGN1cnNvci5lbGVtZW50LCBub2RlKSk7XG4gIH1cblxuICB1cGRhdGUoZG9tOiBET01DaGFuZ2VzLCB2YWx1ZTogSW5zZXJ0aW9uKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzTm9kZSh2YWx1ZSkpIHtcbiAgICAgIGxldCB7IGJvdW5kcyB9ID0gdGhpcztcblxuICAgICAgbGV0IHBhcmVudEVsZW1lbnQgPSBib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICAgICAgbGV0IG5leHRTaWJsaW5nID0gY2xlYXIoYm91bmRzKTtcblxuICAgICAgdGhpcy5ib3VuZHMgPSBkb20uaW5zZXJ0Tm9kZUJlZm9yZShwYXJlbnRFbGVtZW50IGFzIEZJWF9SRUlGSUNBVElPTjxFbGVtZW50PiwgdmFsdWUsIG5leHRTaWJsaW5nIGFzIEZJWF9SRUlGSUNBVElPTjxOb2RlPik7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59XG4iXX0=

@@ -7,3 +7,3 @@ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();

import { Scope } from '../environment';
import { Stack, LinkedList, ListSlice, expect } from '@glimmer/util';
import { Stack, LinkedList, ListSlice } from '@glimmer/util';
import { combineSlice } from '@glimmer/reference';

@@ -269,7 +269,7 @@ import { LabelOpcode, JumpIfNotModifiedOpcode, DidModifyOpcode } from '../compiled/opcodes/vm';

VM.prototype.listBlock = function listBlock() {
return expect(this.listBlockStack.current, 'expected a list block');
return this.listBlockStack.current;
};
VM.prototype.updating = function updating() {
return expect(this.updatingOpcodeStack.current, 'expected updating opcode on the updating opcode stack');
return this.updatingOpcodeStack.current;
};

@@ -282,7 +282,7 @@

VM.prototype.scope = function scope() {
return expect(this.scopeStack.current, 'expected scope on the scope stack');
return this.scopeStack.current;
};
VM.prototype.dynamicScope = function dynamicScope() {
return expect(this.dynamicScopeStack.current, 'expected dynamic scope on the dynamic scope stack');
return this.dynamicScopeStack.current;
};

@@ -297,3 +297,3 @@

var callerScope = expect(this.scope().getCallerScope(), 'pushCallerScope is called when a caller scope is present');
var callerScope = this.scope().getCallerScope();
this.scopeStack.push(childScope ? callerScope.child() : callerScope);

@@ -362,3 +362,3 @@ };

done: true,
value: new RenderResult(env, expect(updatingOpcodeStack.pop(), 'there should be a final updating opcode stack'), elementStack.popBlock())
value: new RenderResult(env, updatingOpcodeStack.pop(), elementStack.popBlock())
};

@@ -412,2 +412,2 @@ };

export default VM;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwZW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBwZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxBQUFPLFNBQUUsQUFBUSxBQUFFLGdCQUFNLEFBQVksQUFBQztBQUN0QyxBQUFPLFNBQUUsQUFBSyxBQUFxQyxhQUFNLEFBQWdCLEFBQUM7QUFFMUUsQUFBTyxTQUF1QixBQUFLLE9BQUUsQUFBVSxZQUFFLEFBQVMsV0FBa0IsQUFBTSxBQUFFLGNBQU0sQUFBZSxBQUFDO0FBQzFHLEFBQU8sU0FBNEQsQUFBWSxBQUFFLG9CQUFNLEFBQW9CLEFBQUM7QUFFNUcsQUFBTyxTQUFFLEFBQVcsYUFBRSxBQUF1Qix5QkFBRSxBQUFlLEFBQUUsdUJBQU0sQUFBd0IsQUFBQztBQUMvRixBQUFPLFNBQVcsQUFBZSxpQkFBRSxBQUFTLEFBQWUsaUJBQU0sQUFBVSxBQUFDO0FBQzVFLE9BQU8sQUFBWSxrQkFBTSxBQUFpQixBQUFDO0FBRTNDLEFBQU8sU0FDTCxBQUFjLEFBRWYsc0JBQU0sQUFBWSxBQUFDO0FBZ0JwQixBQUFNO0FBU0osNkJBQW9CLEFBQWUsT0FBUyxBQUFVLElBQVMsQUFBVTs7O0FBQXJELGFBQUssUUFBTCxBQUFLLEFBQVU7QUFBUyxhQUFFLEtBQUYsQUFBRSxBQUFRO0FBQVMsYUFBRSxLQUFGLEFBQUUsQUFBUTtBQUN2RSxBQUFNLGVBQUMsQUFBSSxLQUFDLEFBQUksQUFBQyxBQUFDLEFBQ3BCO0FBVkEsQUFBTSxBQVVMOztvQkFWTSxBQUFLO0FBQ1YsQUFBTSxlQUFDLElBQUksQUFBSSxLQUFDLEFBQUUsSUFBRSxBQUFDLEdBQUUsQ0FBQyxBQUFDLEFBQUMsQUFBQyxBQUM3QjtBQUFDLEFBRUQsQUFBTTs7b0JBQUMsQUFBTywyQkFBQyxBQUF1QjtBQUNwQyxBQUFNLGVBQUMsSUFBSSxBQUFJLEtBQUMsQUFBUSxTQUFDLEFBQUssQUFBRSxTQUFFLEFBQUMsR0FBRSxBQUFRLFNBQUMsQUFBTSxTQUFHLEFBQUMs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QUFBSyxNQUFDLEFBQUUsQUFBQyxBQUN2QjtBQUFDLEFBRUQsQUFBWSxBQUFFO3VCQUFDLEFBQVU7QUFDdkIsQUFBSSxpQkFBQyxBQUFLLE1BQUMsQUFBRSxLQUFHLEFBQUUsQUFBQyxBQUNyQjtBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVnaXN0ZXIgfSBmcm9tICcuLi9vcGNvZGVzJztcbmltcG9ydCB7IFNjb3BlLCBEeW5hbWljU2NvcGUsIEVudmlyb25tZW50LCBPcGNvZGUgfSBmcm9tICcuLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBFbGVtZW50U3RhY2sgfSBmcm9tICcuLi9idWlsZGVyJztcbmltcG9ydCB7IE9wdGlvbiwgRGVzdHJveWFibGUsIFN0YWNrLCBMaW5rZWRMaXN0LCBMaXN0U2xpY2UsIE9wYXF1ZSwgYXNzZXJ0LCBleHBlY3QgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IFJlZmVyZW5jZUl0ZXJhdG9yLCBQYXRoUmVmZXJlbmNlLCBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlLCBjb21iaW5lU2xpY2UgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgQ29tcGlsZWREeW5hbWljUHJvZ3JhbSB9IGZyb20gJy4uL2NvbXBpbGVkL2Jsb2Nrcyc7XG5pbXBvcnQgeyBMYWJlbE9wY29kZSwgSnVtcElmTm90TW9kaWZpZWRPcGNvZGUsIERpZE1vZGlmeU9wY29kZSB9IGZyb20gJy4uL2NvbXBpbGVkL29wY29kZXMvdm0nO1xuaW1wb3J0IHsgVk1TdGF0ZSwgTGlzdEJsb2NrT3Bjb2RlLCBUcnlPcGNvZGUsIEJsb2NrT3Bjb2RlIH0gZnJvbSAnLi91cGRhdGUnO1xuaW1wb3J0IFJlbmRlclJlc3VsdCBmcm9tICcuL3JlbmRlci1yZXN1bHQnO1xuXG5pbXBvcnQge1xuICBBUFBFTkRfT1BDT0RFUyxcbiAgVXBkYXRpbmdPcGNvZGVcbn0gZnJvbSAnLi4vb3Bjb2Rlcyc7XG5cbmltcG9ydCB7XG4gIENvbnN0YW50cyxcbiAgQ29uc3RhbnRTdHJpbmdcbn0gZnJvbSAnLi4vZW52aXJvbm1lbnQvY29uc3RhbnRzJztcblxuZXhwb3J0IGludGVyZmFjZSBQdWJsaWNWTSB7XG4gIGVudjogRW52aXJvbm1lbnQ7XG4gIGR5bmFtaWNTY29wZSgpOiBEeW5hbWljU2NvcGU7XG4gIGdldFNlbGYoKTogUGF0aFJlZmVyZW5jZTxPcGFxdWU+O1xuICBuZXdEZXN0cm95YWJsZShkOiBEZXN0cm95YWJsZSk6IHZvaWQ7XG59XG5cbmV4cG9ydCB0eXBlIENhcHR1cmVkU3RhY2sgPSBPcGFxdWVbXTtcblxuZXhwb3J0IGNsYXNzIEV2YWx1YXRpb25TdGFjayB7XG4gIHN0YXRpYyBlbXB0eSgpOiBFdmFsdWF0aW9uU3RhY2sge1xuICAgIHJldHVybiBuZXcgdGhpcyhbXSwgMCwgLTEpO1xuICB9XG5cbiAgc3RhdGljIHJlc3RvcmUoc25hcHNob3Q6IENhcHR1cmVkU3RhY2spOiBFdmFsdWF0aW9uU3RhY2sge1xuICAgIHJldHVybiBuZXcgdGhpcyhzbmFwc2hvdC5zbGljZSgpLCAwLCBzbmFwc2hvdC5sZW5ndGggLSAxKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RhY2s6IE9wYXF1ZVtdLCBwdWJsaWMgZnA6IG51bWJlciwgcHVibGljIHNwOiBudW1iZXIpIHtcbiAgICBPYmplY3Quc2VhbCh0aGlzKTtcbiAgfVxuXG4gIGlzRW1wdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3AgPT09IC0xO1xuICB9XG5cbiAgcHVzaCh2YWx1ZTogT3BhcXVlKTogdm9pZCB7XG4gICAgdGhpcy5zdGFja1srK3RoaXMuc3BdID0gdmFsdWU7XG4gIH1cblxuICBkdXAocG9zaXRpb24gPSB0aGlzLnNwKTogdm9pZCB7XG4gICAgdGhpcy5wdXNoKHRoaXMuc3RhY2tbcG9zaXRpb25dKTtcbiAgfVxuXG4gIHBvcDxUPihuID0gMSk6IFQge1xuICAgIGxldCB0b3AgPSB0aGlzLnN0YWNrW3RoaXMuc3BdIGFzIFQ7XG4gICAgdGhpcy5zcCAtPSBuO1xuICAgIHJldHVybiB0b3A7XG4gIH1cblxuICBwZWVrPFQ+KCk6IFQge1xuICAgIHJldHVybiB0aGlzLnN0YWNrW3RoaXMuc3BdIGFzIFQ7XG4gIH1cblxuICBmcm9tQmFzZTxUPihvZmZzZXQ6IG51bWJlcik6IFQge1xuICAgIHJldHVybiB0aGlzLnN0YWNrW3RoaXMuZnAgLSBvZmZzZXRdIGFzIFQ7XG4gIH1cblxuICBmcm9tVG9wPFQ+KG9mZnNldDogbnVtYmVyKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2tbdGhpcy5zcCAtIG9mZnNldF0gYXMgVDtcbiAgfVxuXG4gIGNhcHR1cmUoaXRlbXM6IG51bWJlcik6IENhcHR1cmVkU3RhY2sge1xuICAgIGxldCBlbmQgPSB0aGlzLnNwICsgMTtcbiAgICBsZXQgc3RhcnQgPSBlbmQgLSBpdGVtcztcbiAgICByZXR1cm4gdGhpcy5zdGFjay5zbGljZShzdGFydCwgZW5kKTtcbiAgfVxuXG4gIHRvQXJyYXkoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2suc2xpY2UodGhpcy5mcCwgdGhpcy5zcCArIDEpO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIEl0ZXJhdG9yUmVzdWx0PFQ+ID0ge1xuICBkb25lOiBmYWxzZTtcbiAgdmFsdWU6IG51bGw7XG59IHwge1xuICBkb25lOiB0cnVlO1xuICB2YWx1ZTogVDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZNIGltcGxlbWVudHMgUHVibGljVk0ge1xuICBwcml2YXRlIGR5bmFtaWNTY29wZVN0YWNrID0gbmV3IFN0YWNrPER5bmFtaWNTY29wZT4oKTtcbiAgcHJpdmF0ZSBzY29wZVN0YWNrID0gbmV3IFN0YWNrPFNjb3BlPigpO1xuICBwdWJsaWMgdXBkYXRpbmdPcGNvZGVTdGFjayA9IG5ldyBTdGFjazxMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPj4oKTtcbiAgcHVibGljIGNhY2hlR3JvdXBzID0gbmV3IFN0YWNrPE9wdGlvbjxVcGRhdGluZ09wY29kZT4+KCk7XG4gIHB1YmxpYyBsaXN0QmxvY2tTdGFjayA9IG5ldyBTdGFjazxMaXN0QmxvY2tPcGNvZGU+KCk7XG4gIHB1YmxpYyBjb25zdGFudHM6IENvbnN0YW50cztcblxuICBwdWJsaWMgc3RhY2sgPSBFdmFsdWF0aW9uU3RhY2suZW1wdHkoKTtcblxuICAvKiogUmVnaXN0ZXJzICoqL1xuXG4gIHByaXZhdGUgcGMgPSAtMTtcbiAgcHJpdmF0ZSByYSA9IC0xO1xuXG4gIHByaXZhdGUgZ2V0IGZwKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2suZnA7XG4gIH1cblxuICBwcml2YXRlIHNldCBmcChmcDogbnVtYmVyKSB7XG4gICAgdGhpcy5zdGFjay5mcCA9IGZwO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgc3AoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zdGFjay5zcDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0IHNwKHNwOiBudW1iZXIpIHtcbiAgICB0aGlzLnN0YWNrLnNwID0gc3A7XG4gIH1cblxuICBwdWJsaWMgczA6IGFueSA9IG51bGw7XG4gIHB1YmxpYyBzMTogYW55ID0gbnVsbDtcbiAgcHVibGljIHQwOiBhbnkgPSBudWxsO1xuICBwdWJsaWMgdDE6IGFueSA9IG51bGw7XG5cbiAgLy8gRmV0Y2ggYSB2YWx1ZSBmcm9tIGEgcmVnaXN0ZXIgb250byB0aGUgc3RhY2tcbiAgZmV0Y2gocmVnaXN0ZXI6IFJlZ2lzdGVyKSB7XG4gICAgdGhpcy5zdGFjay5wdXNoKHRoaXNbUmVnaXN0ZXJbcmVnaXN0ZXJdXSk7XG4gIH1cblxuICAvLyBMb2FkIGEgdmFsdWUgZnJvbSB0aGUgc3RhY2sgaW50byBhIHJlZ2lzdGVyXG4gIGxvYWQocmVnaXN0ZXI6IFJlZ2lzdGVyKSB7XG4gICAgdGhpc1tSZWdpc3RlcltyZWdpc3Rlcl1dID0gdGhpcy5zdGFjay5wb3AoKTtcbiAgfVxuXG4gIC8vIEZldGNoIGEgdmFsdWUgZnJvbSBhIHJlZ2lzdGVyXG4gIGZldGNoVmFsdWU8VD4ocmVnaXN0ZXI6IFJlZ2lzdGVyKTogVCB7XG4gICAgcmV0dXJuIHRoaXNbUmVnaXN0ZXJbcmVnaXN0ZXJdXTtcbiAgfVxuXG4gIC8vIExvYWQgYSB2YWx1ZSBpbnRvIGEgcmVnaXN0ZXJcbiAgbG9hZFZhbHVlPFQ+KHJlZ2lzdGVyOiBSZWdpc3RlciwgdmFsdWU6IFQpIHtcbiAgICB0aGlzW1JlZ2lzdGVyW3JlZ2lzdGVyXV0gPSB2YWx1ZTtcbiAgfVxuXG4gIC8vIFN0YXJ0IGEgbmV3IGZyYW1lIGFuZCBzYXZlICRyYSBhbmQgJGZwIG9uIHRoZSBzdGFja1xuICBwdXNoRnJhbWUoKSB7XG4gICAgdGhpcy5zdGFjay5wdXNoKHRoaXMucmEpO1xuICAgIHRoaXMuc3RhY2sucHVzaCh0aGlzLmZwKTtcbiAgICB0aGlzLmZwID0gdGhpcy5zcCAtIDE7XG4gICAgLy8gdGhpcy5mcCA9IHRoaXMuc3AgKyAxO1xuICB9XG5cbiAgLy8gUmVzdG9yZSAkcmEsICRzcCBhbmQgJGZwXG4gIHBvcEZyYW1lKCkge1xuICAgIHRoaXMuc3AgPSB0aGlzLmZwIC0gMTtcbiAgICB0aGlzLnJhID0gdGhpcy5zdGFjay5mcm9tQmFzZTxudW1iZXI+KDApO1xuICAgIHRoaXMuZnAgPSB0aGlzLnN0YWNrLmZyb21CYXNlPG51bWJlcj4oLTEpO1xuICB9XG5cbiAgLy8gSnVtcCB0byBhbiBhZGRyZXNzIGluIGBwcm9ncmFtYFxuICBnb3RvKHBjOiBudW1iZXIpIHtcbiAgICB0aGlzLnBjID0gcGM7XG4gIH1cblxuICAvLyBTYXZlICRwYyBpbnRvICRyYSwgdGhlbiBqdW1wIHRvIGEgbmV3IGFkZHJlc3MgaW4gYHByb2dyYW1gIChqYWwgaW4gTUlQUylcbiAgY2FsbChwYzogbnVtYmVyKSB7XG4gICAgdGhpcy5yYSA9IHRoaXMucGM7XG4gICAgdGhpcy5wYyA9IHBjO1xuICB9XG5cbiAgLy8gUHV0IGEgc3BlY2lmaWMgYHByb2dyYW1gIGFkZHJlc3MgaW4gJHJhXG4gIHJldHVyblRvKHJhOiBudW1iZXIpIHtcbiAgICB0aGlzLnJhID0gcmE7XG4gIH1cblxuICAvLyBSZXR1cm4gdG8gdGhlIGBwcm9ncmFtYCBhZGRyZXNzIHN0b3JlZCBpbiAkcmFcbiAgcmV0dXJuKCkge1xuICAgIHRoaXMucGMgPSB0aGlzLnJhO1xuICB9XG5cbiAgc3RhdGljIGluaXRpYWwoXG4gICAgZW52OiBFbnZpcm9ubWVudCxcbiAgICBzZWxmOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sXG4gICAgZHluYW1pY1Njb3BlOiBEeW5hbWljU2NvcGUsXG4gICAgZWxlbWVudFN0YWNrOiBFbGVtZW50U3RhY2ssXG4gICAgcHJvZ3JhbTogQ29tcGlsZWREeW5hbWljUHJvZ3JhbVxuICApIHtcbiAgICBsZXQgc2NvcGUgPSBTY29wZS5yb290KHNlbGYsIHByb2dyYW0uc3ltYm9sVGFibGUuc3ltYm9scy5sZW5ndGgpO1xuICAgIGxldCB2bSA9IG5ldyBWTShlbnYsIHNjb3BlLCBkeW5hbWljU2NvcGUsIGVsZW1lbnRTdGFjayk7XG4gICAgdm0ucGMgPSBwcm9ncmFtLnN0YXJ0O1xuICAgIHZtLnVwZGF0aW5nT3Bjb2RlU3RhY2sucHVzaChuZXcgTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4oKSk7XG4gICAgcmV0dXJuIHZtO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGVudjogRW52aXJvbm1lbnQsXG4gICAgc2NvcGU6IFNjb3BlLFxuICAgIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlLFxuICAgIHByaXZhdGUgZWxlbWVudFN0YWNrOiBFbGVtZW50U3RhY2ssXG4gICkge1xuICAgIHRoaXMuZW52ID0gZW52O1xuICAgIHRoaXMuY29uc3RhbnRzID0gZW52LmNvbnN0YW50cztcbiAgICB0aGlzLmVsZW1lbnRTdGFjayA9IGVsZW1lbnRTdGFjaztcbiAgICB0aGlzLnNjb3BlU3RhY2sucHVzaChzY29wZSk7XG4gICAgdGhpcy5keW5hbWljU2NvcGVTdGFjay5wdXNoKGR5bmFtaWNTY29wZSk7XG4gIH1cblxuICBjYXB0dXJlKGFyZ3M6IG51bWJlcik6IFZNU3RhdGUge1xuICAgIHJldHVybiB7XG4gICAgICBlbnY6IHRoaXMuZW52LFxuICAgICAgc2NvcGU6IHRoaXMuc2NvcGUoKSxcbiAgICAgIGR5bmFtaWNTY29wZTogdGhpcy5keW5hbWljU2NvcGUoKSxcbiAgICAgIHN0YWNrOiB0aGlzLnN0YWNrLmNhcHR1cmUoYXJncylcbiAgICB9O1xuICB9XG5cbiAgYmVnaW5DYWNoZUdyb3VwKCkge1xuICAgIHRoaXMuY2FjaGVHcm91cHMucHVzaCh0aGlzLnVwZGF0aW5nKCkudGFpbCgpKTtcbiAgfVxuXG4gIGNvbW1pdENhY2hlR3JvdXAoKSB7XG4gICAgLy8gICAgICAgIEp1bXBJZk5vdE1vZGlmaWVkKEVORClcbiAgICAvLyAgICAgICAgKGhlYWQpXG4gICAgLy8gICAgICAgICguLi4uKVxuICAgIC8vICAgICAgICAodGFpbClcbiAgICAvLyAgICAgICAgRGlkTW9kaWZ5XG4gICAgLy8gRU5EOiAgIE5vb3BcblxuICAgIGxldCBFTkQgPSBuZXcgTGFiZWxPcGNvZGUoXCJFTkRcIik7XG5cbiAgICBsZXQgb3Bjb2RlcyA9IHRoaXMudXBkYXRpbmcoKTtcbiAgICBsZXQgbWFya2VyID0gdGhpcy5jYWNoZUdyb3Vwcy5wb3AoKTtcbiAgICBsZXQgaGVhZCA9IG1hcmtlciA/IG9wY29kZXMubmV4dE5vZGUobWFya2VyKSA6IG9wY29kZXMuaGVhZCgpO1xuICAgIGxldCB0YWlsID0gb3Bjb2Rlcy50YWlsKCk7XG4gICAgbGV0IHRhZyA9IGNvbWJpbmVTbGljZShuZXcgTGlzdFNsaWNlKGhlYWQsIHRhaWwpKTtcblxuICAgIGxldCBndWFyZCA9IG5ldyBKdW1wSWZOb3RNb2RpZmllZE9wY29kZSh0YWcsIEVORCk7XG5cbiAgICBvcGNvZGVzLmluc2VydEJlZm9yZShndWFyZCwgaGVhZCk7XG4gICAgb3Bjb2Rlcy5hcHBlbmQobmV3IERpZE1vZGlmeU9wY29kZShndWFyZCkpO1xuICAgIG9wY29kZXMuYXBwZW5kKEVORCk7XG4gIH1cblxuICBlbnRlcihhcmdzOiBudW1iZXIpIHtcbiAgICBsZXQgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4oKTtcblxuICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZShhcmdzKTtcbiAgICBsZXQgdHJhY2tlciA9IHRoaXMuZWxlbWVudHMoKS5wdXNoVXBkYXRhYmxlQmxvY2soKTtcblxuICAgIGxldCB0cnlPcGNvZGUgPSBuZXcgVHJ5T3Bjb2RlKHRoaXMucGMsIHN0YXRlLCB0cmFja2VyLCB1cGRhdGluZyk7XG5cbiAgICB0aGlzLmRpZEVudGVyKHRyeU9wY29kZSk7XG4gIH1cblxuICBpdGVyYXRlKG1lbW86IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgdmFsdWU6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4oKSk6IFRyeU9wY29kZSB7XG4gICAgbGV0IHN0YWNrID0gdGhpcy5zdGFjaztcbiAgICBzdGFjay5wdXNoKHZhbHVlKTtcbiAgICBzdGFjay5wdXNoKG1lbW8pO1xuXG4gICAgbGV0IHN0YXRlID0gdGhpcy5jYXB0dXJlKDIpO1xuICAgIGxldCB0cmFja2VyID0gdGhpcy5lbGVtZW50cygpLnB1c2hVcGRhdGFibGVCbG9jaygpO1xuXG4gICAgLy8gbGV0IGlwID0gdGhpcy5pcDtcbiAgICAvLyB0aGlzLmlwID0gZW5kICsgNDtcbiAgICAvLyB0aGlzLmZyYW1lcy5wdXNoKGlwKTtcblxuICAgIHJldHVybiBuZXcgVHJ5T3Bjb2RlKHRoaXMucGMsIHN0YXRlLCB0cmFja2VyLCB1cGRhdGluZyk7XG4gIH1cblxuICBlbnRlckl0ZW0oa2V5OiBzdHJpbmcsIG9wY29kZTogVHJ5T3Bjb2RlKSB7XG4gICAgdGhpcy5saXN0QmxvY2soKS5tYXBba2V5XSA9IG9wY29kZTtcbiAgICB0aGlzLmRpZEVudGVyKG9wY29kZSk7XG4gIH1cblxuICBlbnRlckxpc3Qoc3RhcnQ6IG51bWJlcikge1xuICAgIGxldCB1cGRhdGluZyA9IG5ldyBMaW5rZWRMaXN0PEJsb2NrT3Bjb2RlPigpO1xuXG4gICAgbGV0IHN0YXRlID0gdGhpcy5jYXB0dXJlKDApO1xuICAgIGxldCB0cmFja2VyID0gdGhpcy5lbGVtZW50cygpLnB1c2hCbG9ja0xpc3QodXBkYXRpbmcpO1xuICAgIGxldCBhcnRpZmFjdHMgPSB0aGlzLnN0YWNrLnBlZWs8UmVmZXJlbmNlSXRlcmF0b3I+KCkuYXJ0aWZhY3RzO1xuXG4gICAgbGV0IG9wY29kZSA9IG5ldyBMaXN0QmxvY2tPcGNvZGUoc3RhcnQsIHN0YXRlLCB0cmFja2VyLCB1cGRhdGluZywgYXJ0aWZhY3RzKTtcblxuICAgIHRoaXMubGlzdEJsb2NrU3RhY2sucHVzaChvcGNvZGUpO1xuXG4gICAgdGhpcy5kaWRFbnRlcihvcGNvZGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBkaWRFbnRlcihvcGNvZGU6IEJsb2NrT3Bjb2RlKSB7XG4gICAgdGhpcy51cGRhdGVXaXRoKG9wY29kZSk7XG4gICAgdGhpcy51cGRhdGluZ09wY29kZVN0YWNrLnB1c2gob3Bjb2RlLmNoaWxkcmVuKTtcbiAgfVxuXG4gIGV4aXQoKSB7XG4gICAgdGhpcy5lbGVtZW50cygpLnBvcEJsb2NrKCk7XG4gICAgdGhpcy51cGRhdGluZ09wY29kZVN0YWNrLnBvcCgpO1xuXG4gICAgbGV0IHBhcmVudCA9IHRoaXMudXBkYXRpbmcoKS50YWlsKCkgYXMgQmxvY2tPcGNvZGU7XG5cbiAgICBwYXJlbnQuZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKCk7XG4gIH1cblxuICBleGl0TGlzdCgpIHtcbiAgICB0aGlzLmV4aXQoKTtcbiAgICB0aGlzLmxpc3RCbG9ja1N0YWNrLnBvcCgpO1xuICB9XG5cbiAgdXBkYXRlV2l0aChvcGNvZGU6IFVwZGF0aW5nT3Bjb2RlKSB7XG4gICAgdGhpcy51cGRhdGluZygpLmFwcGVuZChvcGNvZGUpO1xuICB9XG5cbiAgbGlzdEJsb2NrKCk6IExpc3RCbG9ja09wY29kZSB7XG4gICAgcmV0dXJuIGV4cGVjdCh0aGlzLmxpc3RCbG9ja1N0YWNrLmN1cnJlbnQsICdleHBlY3RlZCBhIGxpc3QgYmxvY2snKTtcbiAgfVxuXG4gIHVwZGF0aW5nKCk6IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+IHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5jdXJyZW50LCAnZXhwZWN0ZWQgdXBkYXRpbmcgb3Bjb2RlIG9uIHRoZSB1cGRhdGluZyBvcGNvZGUgc3RhY2snKTtcbiAgfVxuXG4gIGVsZW1lbnRzKCk6IEVsZW1lbnRTdGFjayB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFN0YWNrO1xuICB9XG5cbiAgc2NvcGUoKTogU2NvcGUge1xuICAgIHJldHVybiBleHBlY3QodGhpcy5zY29wZVN0YWNrLmN1cnJlbnQsICdleHBlY3RlZCBzY29wZSBvbiB0aGUgc2NvcGUgc3RhY2snKTtcbiAgfVxuXG4gIGR5bmFtaWNTY29wZSgpOiBEeW5hbWljU2NvcGUge1xuICAgIHJldHVybiBleHBlY3QodGhpcy5keW5hbWljU2NvcGVTdGFjay5jdXJyZW50LCAnZXhwZWN0ZWQgZHluYW1pYyBzY29wZSBvbiB0aGUgZHluYW1pYyBzY29wZSBzdGFjaycpO1xuICB9XG5cbiAgcHVzaENoaWxkU2NvcGUoKSB7XG4gICAgdGhpcy5zY29wZVN0YWNrLnB1c2godGhpcy5zY29wZSgpLmNoaWxkKCkpO1xuICB9XG5cbiAgcHVzaENhbGxlclNjb3BlKGNoaWxkU2NvcGUgPSBmYWxzZSkge1xuICAgIGxldCBjYWxsZXJTY29wZSA9IGV4cGVjdCh0aGlzLnNjb3BlKCkuZ2V0Q2FsbGVyU2NvcGUoKSwgJ3B1c2hDYWxsZXJTY29wZSBpcyBjYWxsZWQgd2hlbiBhIGNhbGxlciBzY29wZSBpcyBwcmVzZW50Jyk7XG4gICAgdGhpcy5zY29wZVN0YWNrLnB1c2goY2hpbGRTY29wZSA/IGNhbGxlclNjb3BlLmNoaWxkKCkgOiBjYWxsZXJTY29wZSk7XG4gIH1cblxuICBwdXNoRHluYW1pY1Njb3BlKCk6IER5bmFtaWNTY29wZSB7XG4gICAgbGV0IGNoaWxkID0gdGhpcy5keW5hbWljU2NvcGUoKS5jaGlsZCgpO1xuICAgIHRoaXMuZHluYW1pY1Njb3BlU3RhY2sucHVzaChjaGlsZCk7XG4gICAgcmV0dXJuIGNoaWxkO1xuICB9XG5cbiAgcHVzaFJvb3RTY29wZShzaXplOiBudW1iZXIsIGJpbmRDYWxsZXI6IGJvb2xlYW4pOiBTY29wZSB7XG4gICAgbGV0IHNjb3BlID0gU2NvcGUuc2l6ZWQoc2l6ZSk7XG4gICAgaWYgKGJpbmRDYWxsZXIpIHNjb3BlLmJpbmRDYWxsZXJTY29wZSh0aGlzLnNjb3BlKCkpO1xuICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKHNjb3BlKTtcbiAgICByZXR1cm4gc2NvcGU7XG4gIH1cblxuICBwb3BTY29wZSgpIHtcbiAgICB0aGlzLnNjb3BlU3RhY2sucG9wKCk7XG4gIH1cblxuICBwb3BEeW5hbWljU2NvcGUoKSB7XG4gICAgdGhpcy5keW5hbWljU2NvcGVTdGFjay5wb3AoKTtcbiAgfVxuXG4gIG5ld0Rlc3Ryb3lhYmxlKGQ6IERlc3Ryb3lhYmxlKSB7XG4gICAgdGhpcy5lbGVtZW50cygpLm5ld0Rlc3Ryb3lhYmxlKGQpO1xuICB9XG5cbiAgLy8vIFNDT1BFIEhFTFBFUlNcblxuICBnZXRTZWxmKCk6IFBhdGhSZWZlcmVuY2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuc2NvcGUoKS5nZXRTZWxmKCk7XG4gIH1cblxuICByZWZlcmVuY2VGb3JTeW1ib2woc3ltYm9sOiBudW1iZXIpOiBQYXRoUmVmZXJlbmNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnNjb3BlKCkuZ2V0U3ltYm9sKHN5bWJvbCk7XG4gIH1cblxuICAvLy8gRVhFQ1VUSU9OXG5cbiAgZXhlY3V0ZShzdGFydDogbnVtYmVyLCBpbml0aWFsaXplPzogKHZtOiBWTSkgPT4gdm9pZCk6IFJlbmRlclJlc3VsdCB7XG4gICAgdGhpcy5wYyA9IHN0YXJ0O1xuXG4gICAgaWYgKGluaXRpYWxpemUpIGluaXRpYWxpemUodGhpcyk7XG5cbiAgICBsZXQgcmVzdWx0OiBJdGVyYXRvclJlc3VsdDxSZW5kZXJSZXN1bHQ+O1xuXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIHJlc3VsdCA9IHRoaXMubmV4dCgpO1xuICAgICAgaWYgKHJlc3VsdC5kb25lKSBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0LnZhbHVlIGFzIFJlbmRlclJlc3VsdDtcbiAgfVxuXG4gIG5leHQoKTogSXRlcmF0b3JSZXN1bHQ8UmVuZGVyUmVzdWx0PiB7XG4gICAgbGV0IHsgZW52LCB1cGRhdGluZ09wY29kZVN0YWNrLCBlbGVtZW50U3RhY2sgfSA9IHRoaXM7XG4gICAgbGV0IG9wY29kZTogT3B0aW9uPE9wY29kZT47XG5cbiAgICBpZiAob3Bjb2RlID0gdGhpcy5uZXh0U3RhdGVtZW50KGVudikpIHtcbiAgICAgIEFQUEVORF9PUENPREVTLmV2YWx1YXRlKHRoaXMsIG9wY29kZSwgb3Bjb2RlLnR5cGUpO1xuICAgICAgcmV0dXJuIHsgZG9uZTogZmFsc2UsIHZhbHVlOiBudWxsIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRvbmU6IHRydWUsXG4gICAgICB2YWx1ZTogbmV3IFJlbmRlclJlc3VsdChcbiAgICAgICAgZW52LFxuICAgICAgICBleHBlY3QodXBkYXRpbmdPcGNvZGVTdGFjay5wb3AoKSwgJ3RoZXJlIHNob3VsZCBiZSBhIGZpbmFsIHVwZGF0aW5nIG9wY29kZSBzdGFjaycpLFxuICAgICAgICBlbGVtZW50U3RhY2sucG9wQmxvY2soKVxuICAgICAgKVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIG5leHRTdGF0ZW1lbnQoZW52OiBFbnZpcm9ubWVudCk6IE9wdGlvbjxPcGNvZGU+IHtcbiAgICBsZXQgeyBwYyB9ID0gdGhpcztcblxuICAgIGlmIChwYyA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCBwcm9ncmFtID0gZW52LnByb2dyYW07XG4gICAgdGhpcy5wYyArPSA0O1xuICAgIHJldHVybiBwcm9ncmFtLm9wY29kZShwYyk7XG4gIH1cblxuICBldmFsdWF0ZU9wY29kZShvcGNvZGU6IE9wY29kZSkge1xuICAgIEFQUEVORF9PUENPREVTLmV2YWx1YXRlKHRoaXMsIG9wY29kZSwgb3Bjb2RlLnR5cGUpO1xuICB9XG5cbiAgYmluZER5bmFtaWNTY29wZShuYW1lczogQ29uc3RhbnRTdHJpbmdbXSkge1xuICAgIGxldCBzY29wZSA9IHRoaXMuZHluYW1pY1Njb3BlKCk7XG5cbiAgICBmb3IobGV0IGk9bmFtZXMubGVuZ3RoIC0gMTsgaT49MDsgaS0tKSB7XG4gICAgICBsZXQgbmFtZSA9IHRoaXMuY29uc3RhbnRzLmdldFN0cmluZyhuYW1lc1tpXSk7XG4gICAgICBzY29wZS5zZXQobmFtZSwgdGhpcy5zdGFjay5wb3A8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+PigpKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwZW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBwZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxBQUFPLFNBQUUsQUFBUSxBQUFFLGdCQUFNLEFBQVksQUFBQztBQUN0QyxBQUFPLFNBQUUsQUFBSyxBQUFxQyxhQUFNLEFBQWdCLEFBQUM7QUFFMUUsQUFBTyxTQUF1QixBQUFLLE9BQUUsQUFBVSxZQUFFLEFBQVMsQUFBVSxpQkFBTSxBQUFlLEFBQUM7QUFDMUYsQUFBTyxTQUE0RCxBQUFZLEFBQUUsb0JBQU0sQUFBb0IsQUFBQztBQUU1RyxBQUFPLFNBQUUsQUFBVyxhQUFFLEFBQXVCLHlCQUFFLEFBQWUsQUFBRSx1QkFBTSxBQUF3QixBQUFDO0FBQy9GLEFBQU8sU0FBVyxBQUFlLGlCQUFFLEFBQVMsQUFBZSxpQkFBTSxBQUFVLEFBQUM7QUFDNUUsT0FBTyxBQUFZLGtCQUFNLEFBQWlCLEFBQUM7QUFFM0MsQUFBTyxTQUNMLEFBQWMsQUFFZixzQkFBTSxBQUFZLEFBQUM7QUFnQnBCLEFBQU07QUFTSiw2QkFBb0IsQUFBZSxPQUFTLEFBQVUsSUFBUyxBQUFVOzs7QUFBckQsYUFBSyxRQUFMLEFBQUssQUFBVTtBQUFTLGFBQUUsS0FBRixBQUFFLEFBQVE7QUFBUyxhQUFFLEtBQUYsQUFBRSxBQUFRO0FBQ3ZFLEFBQU0sZUFBQyxBQUFJLEtBQUMsQUFBSSxBQUFDLEFBQUMsQUFDcEI7QUFWQSxBQUFNLEFBVUw7O29CQVZNLEFBQUs7QUFDVixBQUFNLGVBQUMsSUFBSSxBQUFJLEtBQUMsQUFBRSxJQUFFLEFBQUMsR0FBRSxDQUFDLEFBQUMsQUFBQyxBQUFDLEFBQzdCO0FBQUMsQUFFRCxBQUFNOztvQkFBQyxBQUFPLDJCQUFDLEFBQXVCO0FBQ3BDLEFBQU0sZUFBQyxJQUFJLEFBQUksS0FBQyxBQUFRLFNBQUMsQUFBSyxBQUFFLFNBQUUsQUFBQyxHQUFFLEFBQVEsU0FBQyxBQUFNLFNBQUcsQUFBQyxBQUFDLEFBQUMsQUFDNUQ7QUFBQzs7OEJBTUQsQUFBTztBQUNMLEFBQU0sZUFBQyxBQUFJLEtBQUMsQUFBRSxPQUFLLENBQUMsQUFBQyxBQUFDLEFBQ3hCO0FBQUM7OzhCQUVELEFBQUkscUJBQUMsQUFBYTtBQUNoQixBQUFJLGFBQUMsQUFBSyxNQUFDLEVBQUUsQUFBSSxLQUFDLEFBQUUsQUFBQyxNQUFHLEFBQUssQUFBQyxBQUNoQztBQUFDOzs4QkFFRCxBQUFHO1lBQUMsQUFBUSwrRUFBRyxBQUFJLEtBQUMsQUFBRTs7QUFDcEIsQUFBSSxhQUFDLEFBQUksS0FBQyxBQUFJLEtBQUMsQUFBSyxNQUFDLEFBQVEsQUFBQyxBQUFDLEFBQUMsQUFDbEM7QUFBQzs7OEJBRUQsQUFBRztZQUFJLEFBQUMsd0VBQUcsQUFBQzs7QUFDVixZQUFJLEFBQUcsTUFBRyxBQUFJLEtBQUMsQUFBSyxNQUFDLEFBQUksS0FBQyxBQUFFLEFBQU0sQUFBQztBQUNuQyxBQUFJLGFBQUMsQUFBRSxNQUFJLEFBQUMsQUFBQztBQUNiLEFBQU0sZUFBQyxBQUFHLEFBQUMsQUFDYjtBQUFDOzs4QkFFRCxBQUFJO0FBQ0YsQUFBTSxlQUFDLEFBQUksS0FBQyxBQUFLLE1BQUMsQUFBSSxLQUFDLEFBQUUsQUFBTSxBQUFDLEFBQ2xDO0FBQUM7OzhCQUVELEFBQVEsNkJBQUksQUFBYztBQUN4QixBQUFNLGVBQUMsQUFBSSxLQUFDLEFBQUssTUFBQyxBQUFJLEtBQUMsQUFBRSxLQUFHLEFBQU0sQUFBTSxBQUFDLEFBQzNDO0FBQUM7OzhCQUVELEFBQU8sMkJBQUksQUFBYztBQUN2QixBQUFNLGVBQUMsQUFBSSxLQUFDLEFBQUssTUFBQyxBQUFJLEtBQUMsQUFBRSxLQUFHLEFBQU0sQUFBTSxBQUFDLEFBQzNDO0FBQUM7OzhCQUVELEFBQU8sMkJBQUMsQUFBYTtBQUNuQixZQUFJLEFBQUcsTUFBRyxBQUFJLEtBQUMsQUFBRSxLQUFHLEFBQUMsQUFBQztBQUN0QixZQUFJLEFBQUssUUFBRyxBQUFHLE1BQUcsQUFBSyxBQUFDO0FBQ3hCLEFBQU0sZUFBQyxBQUFJLEtBQUMsQUFBSyxNQUFDLEFBQUssTUFBQyxBQUFLLE9BQUUsQUFBRyxBQUFDLEFBQUMsQUFDdEM7QUFBQzs7OEJBRUQsQUFBTztBQUNMLEFBQU0sZUFBQyxBQUFJLEtBQUMsQUFBSyxNQUFDLEFBQUssTUFBQyxBQUFJLEtBQUMsQUFBRSxJQUFFLEFBQUksS0FBQyxBQUFFLEtBQUcsQUFBQyxBQUFDLEFBQUMsQUFDaEQ7QUFBQyxBQUNGLEFBVUQsQUFBTSxBQUFDLEFBQU87Ozs7OztBQTBHWixnQkFDUyxBQUFnQixLQUN2QixBQUFZLE9BQ1osQUFBMEIsY0FDbEIsQUFBMEI7OztBQUgzQixhQUFHLE1BQUgsQUFBRyxBQUFhO0FBR2YsYUFBWSxlQUFaLEFBQVksQUFBYztBQTdHNUIsYUFBaUIsb0JBQUcsSUFBSSxBQUFLLEFBQWdCLEFBQUM7QUFDOUMsYUFBVSxhQUFHLElBQUksQUFBSyxBQUFTLEFBQUM7QUFDakMsYUFBbUIsc0JBQUcsSUFBSSxBQUFLLEFBQThCLEFBQUM7QUFDOUQsYUFBVyxjQUFHLElBQUksQUFBSyxBQUEwQixBQUFDO0FBQ2xELGFBQWMsaUJBQUcsSUFBSSxBQUFLLEFBQW1CLEFBQUM7QUFHOUMsYUFBSyxRQUFHLEFBQWUsZ0JBQUMsQUFBSyxBQUFFLEFBQUM7QUFFdkMsQUFBaUI7QUFFVCxhQUFFLEtBQUcsQ0FBQyxBQUFDLEFBQUM7QUFDUixhQUFFLEtBQUcsQ0FBQyxBQUFDLEFBQUM7QUFrQlQsYUFBRSxLQUFRLEFBQUksQUFBQztBQUNmLGFBQUUsS0FBUSxBQUFJLEFBQUM7QUFDZixhQUFFLEtBQVEsQUFBSSxBQUFDO0FBQ2YsYUFBRSxLQUFRLEFBQUksQUFBQztBQThFcEIsQUFBSSxhQUFDLEFBQUcsTUFBRyxBQUFHLEFBQUM7QUFDZixBQUFJLGFBQUMsQUFBUyxZQUFHLEFBQUcsSUFBQyxBQUFTLEFBQUM7QUFDL0IsQUFBSSxhQUFDLEFBQVksZUFBRyxBQUFZLEFBQUM7QUFDakMsQUFBSSxhQUFDLEFBQVUsV0FBQyxBQUFJLEtBQUMsQUFBSyxBQUFDLEFBQUM7QUFDNUIsQUFBSSxhQUFDLEFBQWlCLGtCQUFDLEFBQUksS0FBQyxBQUFZLEFBQUMsQUFBQyxBQUM1QztBQXRHQSxBQUFZLEFBQUUsQUFzR2I7O0FBakZELEFBQStDO2lCQUMvQyxBQUFLLHVCQUFDLEFBQWtCO0FBQ3RCLEFBQUksYUFBQyxBQUFLLE1BQUMsQUFBSSxLQUFDLEFBQUksS0FBQyxBQUFRLFNBQUMsQUFBUSxBQUFDLEFBQUMsQUFBQyxBQUFDLEFBQzVDO0FBQUM7QUFFRCxBQUE4Qzs7O2lCQUM5QyxBQUFJLHFCQUFDLEFBQWtCO0FBQ3JCLEFBQUksYUFBQyxBQUFRLFNBQUMsQUFBUSxBQUFDLEFBQUMsYUFBRyxBQUFJLEtBQUMsQUFBSyxNQUFDLEFBQUcsQUFBRSxBQUFDLEFBQzlDO0FBQUM7QUFFRCxBQUFnQzs7O2lCQUNoQyxBQUFVLGlDQUFJLEFBQWtCO0FBQzlCLEFBQU0sZUFBQyxBQUFJLEtBQUMsQUFBUSxTQUFDLEFBQVEsQUFBQyxBQUFDLEFBQUMsQUFDbEM7QUFBQztBQUVELEFBQStCOzs7aUJBQy9CLEFBQVMsK0JBQUksQUFBa0IsVUFBRSxBQUFRO0FBQ3ZDLEFBQUksYUFBQyxBQUFRLFNBQUMsQUFBUSxBQUFDLEFBQUMsYUFBRyxBQUFLLEFBQUMsQUFDbkM7QUFBQztBQUVELEFBQXNEOzs7aUJBQ3RELEFBQVM7QUFDUCxBQUFJLGFBQUMsQUFBSyxNQUFDLEFBQUksS0FBQyxBQUFJLEtBQUMsQUFBRSxBQUFDLEFBQUM7QUFDekIsQUFBSSxhQUFDLEFBQUssTUFBQyxBQUFJLEtBQUMsQUFBSSxLQUFDLEFBQUUsQUFBQyxBQUFDO0FBQ3pCLEFBQUksYUFBQyxBQUFFLEtBQUcsQUFBSSxLQUFDLEFBQUUsS0FBRyxBQUFDLEFBQUM7QUFDdEIsQUFBeUIsQUFDM0I7QUFBQztBQUVELEFBQTJCOzs7aUJBQzNCLEFBQVE7QUFDTixBQUFJLGFBQUMsQUFBRSxLQUFHLEFBQUksS0FBQyxBQUFFLEtBQUcsQUFBQyxBQUFDO0FBQ3RCLEFBQUksYUFBQyxBQUFFLEtBQUcsQUFBSSxLQUFDLEFBQUssTUFBQyxBQUFRLFNBQVMsQUFBQyxBQUFDLEFBQUM7QUFDekMsQUFBSSxhQUFDLEFBQUUsS0FBRyxBQUFJLEtBQUMsQUFBSyxNQUFDLEFBQVEsU0FBUyxDQUFDLEFBQUMsQUFBQyxBQUFDLEFBQzVDO0FBQUM7QUFFRCxBQUFrQzs7O2lCQUNsQyxBQUFJLHFCQUFDLEFBQVU7QUFDYixBQUFJLGFBQUMsQUFBRSxLQUFHLEFBQUUsQUFBQyxBQUNmO0FBQUM7QUFFRCxBQUEyRTs7O2lCQUMzRSxBQUFJLHFCQUFDLEFBQVU7QUFDYixBQUFJLGFBQUMsQUFBRSxLQUFHLEFBQUksS0FBQyxBQUFFLEFBQUM7QUFDbEIsQUFBSSxhQUFDLEFBQUUsS0FBRyxBQUFFLEFBQUMsQUFDZjtBQUFDO0FBRUQsQUFBMEM7OztpQkFDMUMsQUFBUSw2QkFBQyxBQUFVO0FBQ2pCLEFBQUksYUFBQyxBQUFFLEtBQUcsQUFBRSxBQUFDLEFBQ2Y7QUFBQztBQUVELEFBQWdEOzs7aUJBQ2hELEFBQU07QUFDSixBQUFJLGFBQUMsQUFBRSxLQUFHLEFBQUksS0FBQyxBQUFFLEFBQUMsQUFDcEI7QUFBQyxBQUVELEFBQU07O09BQUMsQUFBTywyQkFDWixBQUFnQixLQUNoQixBQUEyQixNQUMzQixBQUEwQixjQUMxQixBQUEwQixjQUMxQixBQUErQjtBQUUvQixZQUFJLEFBQUssUUFBRyxBQUFLLE1BQUMsQUFBSSxLQUFDLEFBQUksTUFBRSxBQUFPLFFBQUMsQUFBVyxZQUFDLEFBQU8sUUFBQyxBQUFNLEFBQUMsQUFBQztBQUNqRSxZQUFJLEFBQUUsS0FBRyxJQUFJLEFBQUUsR0FBQyxBQUFHLEtBQUUsQUFBSyxPQUFFLEFBQVksY0FBRSxBQUFZLEFBQUMsQUFBQztBQUN4RCxBQUFFLFdBQUMsQUFBRSxLQUFHLEFBQU8sUUFBQyxBQUFLLEFBQUM7QUFDdEIsQUFBRSxXQUFDLEFBQW1CLG9CQUFDLEFBQUksS0FBQyxJQUFJLEFBQVUsQUFBa0IsQUFBQyxBQUFDO0FBQzlELEFBQU0sZUFBQyxBQUFFLEFBQUMsQUFDWjtBQUFDOztpQkFlRCxBQUFPLDJCQUFDLEFBQVk7QUFDbEIsQUFBTTtBQUNKLEFBQUcsaUJBQUUsQUFBSSxLQUFDLEFBQUc7QUFDYixBQUFLLG1CQUFFLEFBQUksS0FBQyxBQUFLLEFBQUU7QUFDbkIsQUFBWSwwQkFBRSxBQUFJLEtBQUMsQUFBWSxBQUFFO0FBQ2pDLEFBQUssbUJBQUUsQUFBSSxLQUFDLEFBQUssTUFBQyxBQUFPLFFBQUMsQUFBSSxBQUFDLEFBQ2hDLEFBQUMsQUFDSjtBQU5TO0FBTVI7O2lCQUVELEFBQWU7QUFDYixBQUFJLGFBQUMsQUFBVyxZQUFDLEFBQUksS0FBQyxBQUFJLEtBQUMsQUFBUSxBQUFFLFdBQUMsQUFBSSxBQUFFLEFBQUMsQUFBQyxBQUNoRDtBQUFDOztpQkFFRCxBQUFnQjtBQUNkLEFBQWdDO0FBQ2hDLEFBQWdCO0FBQ2hCLEFBQWdCO0FBQ2hCLEFBQWdCO0FBQ2hCLEFBQW1CO0FBQ25CLEFBQWM7QUFFZCxZQUFJLEFBQUcsTUFBRyxJQUFJLEFBQVcsWUFBQyxBQUFLLEFBQUMsQUFBQztBQUVqQyxZQUFJLEFBQU8sVUFBRyxBQUFJLEtBQUMsQUFBUSxBQUFFLEFBQUM7QUFDOUIsWUFBSSxBQUFNLFNBQUcsQUFBSSxLQUFDLEFBQVcsWUFBQyxBQUFHLEFBQUUsQUFBQztBQUNwQyxZQUFJLEFBQUksT0FBRyxBQUFNLFNBQUcsQUFBTyxRQUFDLEFBQVEsU0FBQyxBQUFNLEFBQUMsVUFBRyxBQUFPLFFBQUMsQUFBSSxBQUFFLEFBQUM7QUFDOUQsWUFBSSxBQUFJLE9BQUcsQUFBTyxRQUFDLEFBQUksQUFBRSxBQUFDO0FBQzFCLFlBQUksQUFBRyxNQUFHLEFBQVksYUFBQyxJQUFJLEFBQVMsVUFBQyxBQUFJLE1BQUUsQUFBSSxBQUFDLEFBQUMsQUFBQztBQUVsRCxZQUFJLEFBQUssUUFBRyxJQUFJLEFBQXVCLHdCQUFDLEFBQUcsS0FBRSxBQUFHLEFBQUMsQUFBQztBQUVsRCxBQUFPLGdCQUFDLEFBQVksYUFBQyxBQUFLLE9BQUUsQUFBSSxBQUFDLEFBQUM7QUFDbEMsQUFBTyxnQkFBQyxBQUFNLE9BQUMsSUFBSSxBQUFlLGdCQUFDLEFBQUssQUFBQyxBQUFDLEFBQUM7QUFDM0MsQUFBTyxnQkFBQyxBQUFNLE9BQUMsQUFBRyxBQUFDLEFBQUMsQUFDdEI7QUFBQzs7aUJBRUQsQUFBSyx1QkFBQyxBQUFZO0FBQ2hCLFlBQUksQUFBUSxXQUFHLElBQUksQUFBVSxBQUFrQixBQUFDO0FBRWhELFlBQUksQUFBSyxRQUFHLEFBQUksS0FBQyxBQUFPLFFBQUMsQUFBSSxBQUFDLEFBQUM7QUFDL0IsWUFBSSxBQUFPLFVBQUcsQUFBSSxLQUFDLEFBQVEsQUFBRSxXQUFDLEFBQWtCLEFBQUUsQUFBQztBQUVuRCxZQUFJLEFBQVMsWUFBRyxJQUFJLEFBQVMsVUFBQyxBQUFJLEtBQUMsQUFBRSxJQUFFLEFBQUssT0FBRSxBQUFPLFNBQUUsQUFBUSxBQUFDLEFBQUM7QUFFakUsQUFBSSxhQUFDLEFBQVEsU0FBQyxBQUFTLEFBQUMsQUFBQyxBQUMzQjtBQUFDOztpQkFFRCxBQUFPLDJCQUFDLEFBQW9DLE1BQUUsQUFBcUM7WUFBRSxBQUFRLCtFQUFHLElBQUksQUFBVSxBQUFrQjs7QUFDOUgsWUFBSSxBQUFLLFFBQUcsQUFBSSxLQUFDLEFBQUssQUFBQztBQUN2QixBQUFLLGNBQUMsQUFBSSxLQUFDLEFBQUssQUFBQyxBQUFDO0FBQ2xCLEFBQUssY0FBQyxBQUFJLEtBQUMsQUFBSSxBQUFDLEFBQUM7QUFFakIsWUFBSSxBQUFLLFFBQUcsQUFBSSxLQUFDLEFBQU8sUUFBQyxBQUFDLEFBQUMsQUFBQztBQUM1QixZQUFJLEFBQU8sVUFBRyxBQUFJLEtBQUMsQUFBUSxBQUFFLFdBQUMsQUFBa0IsQUFBRSxBQUFDO0FBRW5ELEFBQW9CO0FBQ3BCLEFBQXFCO0FBQ3JCLEFBQXdCO0FBRXhCLEFBQU0sZUFBQyxJQUFJLEFBQVMsVUFBQyxBQUFJLEtBQUMsQUFBRSxJQUFFLEFBQUssT0FBRSxBQUFPLFNBQUUsQUFBUSxBQUFDLEFBQUMsQUFDMUQ7QUFBQzs7aUJBRUQsQUFBUywrQkFBQyxBQUFXLEtBQUUsQUFBaUI7QUFDdEMsQUFBSSxhQUFDLEFBQVMsQUFBRSxZQUFDLEFBQUcsSUFBQyxBQUFHLEFBQUMsT0FBRyxBQUFNLEFBQUM7QUFDbkMsQUFBSSxhQUFDLEFBQVEsU0FBQyxBQUFNLEFBQUMsQUFBQyxBQUN4QjtBQUFDOztpQkFFRCxBQUFTLCtCQUFDLEFBQWE7QUFDckIsWUFBSSxBQUFRLFdBQUcsSUFBSSxBQUFVLEFBQWUsQUFBQztBQUU3QyxZQUFJLEFBQUssUUFBRyxBQUFJLEtBQUMsQUFBTyxRQUFDLEFBQUMsQUFBQyxBQUFDO0FBQzVCLFlBQUksQUFBTyxVQUFHLEFBQUksS0FBQyxBQUFRLEFBQUUsV0FBQyxBQUFhLGNBQUMsQUFBUSxBQUFDLEFBQUM7QUFDdEQsWUFBSSxBQUFTLFlBQUcsQUFBSSxLQUFDLEFBQUssTUFBQyxBQUFJLEFBQXFCLE9BQUMsQUFBUyxBQUFDO0FBRS9ELFlBQUksQUFBTSxTQUFHLElBQUksQUFBZSxnQkFBQyxBQUFLLE9BQUUsQUFBSyxPQUFFLEFBQU8sU0FBRSxBQUFRLFVBQUUsQUFBUyxBQUFDLEFBQUM7QUFFN0UsQUFBSSxhQUFDLEFBQWMsZUFBQyxBQUFJLEtBQUMsQUFBTSxBQUFDLEFBQUM7QUFFakMsQUFBSSxhQUFDLEFBQVEsU0FBQyxBQUFNLEFBQUMsQUFBQyxBQUN4QjtBQUFDOztpQkFFTyxBQUFRLDZCQUFDLEFBQW1CO0FBQ2xDLEFBQUksYUFBQyxBQUFVLFdBQUMsQUFBTSxBQUFDLEFBQUM7QUFDeEIsQUFBSSxhQUFDLEFBQW1CLG9CQUFDLEFBQUksS0FBQyxBQUFNLE9BQUMsQUFBUSxBQUFDLEFBQUMsQUFDakQ7QUFBQzs7aUJBRUQsQUFBSTtBQUNGLEFBQUksYUFBQyxBQUFRLEFBQUUsV0FBQyxBQUFRLEFBQUUsQUFBQztBQUMzQixBQUFJLGFBQUMsQUFBbUIsb0JBQUMsQUFBRyxBQUFFLEFBQUM7QUFFL0IsWUFBSSxBQUFNLFNBQUcsQUFBSSxLQUFDLEFBQVEsQUFBRSxXQUFDLEFBQUksQUFBaUIsQUFBQztBQUVuRCxBQUFNLGVBQUMsQUFBcUIsQUFBRSxBQUFDLEFBQ2pDO0FBQUM7O2lCQUVELEFBQVE7QUFDTixBQUFJLGFBQUMsQUFBSSxBQUFFLEFBQUM7QUFDWixBQUFJLGFBQUMsQUFBYyxlQUFDLEFBQUcsQUFBRSxBQUFDLEFBQzVCO0FBQUM7O2lCQUVELEFBQVUsaUNBQUMsQUFBc0I7QUFDL0IsQUFBSSxhQUFDLEFBQVEsQUFBRSxXQUFDLEFBQU0sT0FBQyxBQUFNLEFBQUMsQUFBQyxBQUNqQztBQUFDOztpQkFFRCxBQUFTO0FBQ1AsQUFBTSxlQUFDLEFBQUksS0FBQyxBQUFjLGVBQUMsQUFBTyxBQUFDLEFBQ3JDO0FBQUM7O2lCQUVELEFBQVE7QUFDTixBQUFNLGVBQUMsQUFBSSxLQUFDLEFBQW1CLG9CQUFDLEFBQU8sQUFBQyxBQUMxQztBQUFDOztpQkFFRCxBQUFRO0FBQ04sQUFBTSxlQUFDLEFBQUksS0FBQyxBQUFZLEFBQUMsQUFDM0I7QUFBQzs7aUJBRUQsQUFBSztBQUNILEFBQU0sZUFBQyxBQUFJLEtBQUMsQUFBVSxXQUFDLEFBQU8sQUFBQyxBQUNqQztBQUFDOztpQkFFRCxBQUFZO0FBQ1YsQUFBTSxlQUFDLEFBQUksS0FBQyxBQUFpQixrQkFBQyxBQUFPLEFBQUMsQUFDeEM7QUFBQzs7aUJBRUQsQUFBYztBQUNaLEFBQUksYUFBQyxBQUFVLFdBQUMsQUFBSSxLQUFDLEFBQUksS0FBQyxBQUFLLEFBQUUsUUFBQyxBQUFLLEFBQUUsQUFBQyxBQUFDLEFBQzdDO0FBQUM7O2lCQUVELEFBQWU7WUFBQyxBQUFVLGlGQUFHLEFBQUs7O0FBQ2hDLFlBQUksQUFBVyxjQUFHLEFBQUksS0FBQyxBQUFLLEFBQUUsUUFBQyxBQUFjLEFBQUUsQUFBQztBQUNoRCxBQUFJLGFBQUMsQUFBVSxXQUFDLEFBQUksS0FBQyxBQUFVLGFBQUcsQUFBVyxZQUFDLEFBQUssQUFBRSxVQUFHLEFBQVcsQUFBQyxBQUFDLEFBQ3ZFO0FBQUM7O2lCQUVELEFBQWdCO0FBQ2QsWUFBSSxBQUFLLFFBQUcsQUFBSSxLQUFDLEFBQVksQUFBRSxlQUFDLEFBQUssQUFBRSxBQUFDO0FBQ3hDLEFBQUksYUFBQyxBQUFpQixrQkFBQyxBQUFJLEtBQUMsQUFBSyxBQUFDLEFBQUM7QUFDbkMsQUFBTSxlQUFDLEFBQUssQUFBQyxBQUNmO0FBQUM7O2lCQUVELEFBQWEsdUNBQUMsQUFBWSxNQUFFLEFBQW1CO0FBQzdDLFlBQUksQUFBSyxRQUFHLEFBQUssTUFBQyxBQUFLLE1BQUMsQUFBSSxBQUFDLEFBQUM7QUFDOUIsQUFBRSxBQUFDLFlBQUMsQUFBVSxBQUFDLFlBQUMsQUFBSyxNQUFDLEFBQWUsZ0JBQUMsQUFBSSxLQUFDLEFBQUssQUFBRSxBQUFDLEFBQUM7QUFDcEQsQUFBSSxhQUFDLEFBQVUsV0FBQyxBQUFJLEtBQUMsQUFBSyxBQUFDLEFBQUM7QUFDNUIsQUFBTSxlQUFDLEFBQUssQUFBQyxBQUNmO0FBQUM7O2lCQUVELEFBQVE7QUFDTixBQUFJLGFBQUMsQUFBVSxXQUFDLEFBQUcsQUFBRSxBQUFDLEFBQ3hCO0FBQUM7O2lCQUVELEFBQWU7QUFDYixBQUFJLGFBQUMsQUFBaUIsa0JBQUMsQUFBRyxBQUFFLEFBQUMsQUFDL0I7QUFBQzs7aUJBRUQsQUFBYyx5Q0FBQyxBQUFjO0FBQzNCLEFBQUksYUFBQyxBQUFRLEFBQUUsV0FBQyxBQUFjLGVBQUMsQUFBQyxBQUFDLEFBQUMsQUFDcEM7QUFBQztBQUVELEFBQWlCOzs7aUJBRWpCLEFBQU87QUFDTCxBQUFNLGVBQUMsQUFBSSxLQUFDLEFBQUssQUFBRSxRQUFDLEFBQU8sQUFBRSxBQUFDLEFBQ2hDO0FBQUM7O2lCQUVELEFBQWtCLGlEQUFDLEFBQWM7QUFDL0IsQUFBTSxlQUFDLEFBQUksS0FBQyxBQUFLLEFBQUUsUUFBQyxBQUFTLFVBQUMsQUFBTSxBQUFDLEFBQUMsQUFDeEM7QUFBQztBQUVELEFBQWE7OztpQkFFYixBQUFPLDJCQUFDLEFBQWEsT0FBRSxBQUE2QjtBQUNsRCxBQUFJLGFBQUMsQUFBRSxLQUFHLEFBQUssQUFBQztBQUVoQixBQUFFLEFBQUMsWUFBQyxBQUFVLEFBQUMsWUFBQyxBQUFVLFdBQUMsQUFBSSxBQUFDLEFBQUM7QUFFakMsWUFBSSxBQUFvQyxBQUFDO0FBRXpDLGVBQU8sQUFBSSxNQUFFLEFBQUM7QUFDWixBQUFNLHFCQUFHLEFBQUksS0FBQyxBQUFJLEFBQUUsQUFBQztBQUNyQixBQUFFLEFBQUMsZ0JBQUMsQUFBTSxPQUFDLEFBQUksQUFBQyxNQUFDLEFBQUssQUFBQyxBQUN6QjtBQUFDO0FBRUQsQUFBTSxlQUFDLEFBQU0sT0FBQyxBQUFxQixBQUFDLEFBQ3RDO0FBQUM7O2lCQUVELEFBQUk7QUFDRixBQUFJLFlBQUUsQUFBRyxNQUF3QyxBQUFJLEFBQUM7WUFBM0MsQUFBbUI7WUFBRSxBQUFZLEFBQUU7O0FBQzlDLFlBQUksQUFBc0IsQUFBQztBQUUzQixBQUFFLEFBQUMsWUFBQyxBQUFNLFNBQUcsQUFBSSxLQUFDLEFBQWEsY0FBQyxBQUFHLEFBQUMsQUFBQyxNQUFDLEFBQUM7QUFDckMsQUFBYywyQkFBQyxBQUFRLFNBQUMsQUFBSSxNQUFFLEFBQU0sUUFBRSxBQUFNLE9BQUMsQUFBSSxBQUFDLEFBQUM7QUFDbkQsQUFBTSxtQkFBQyxFQUFFLEFBQUksTUFBRSxBQUFLLE9BQUUsQUFBSyxPQUFFLEFBQUksQUFBRSxBQUFDLEFBQ3RDO0FBQUM7QUFFRCxBQUFNO0FBQ0osQUFBSSxrQkFBRSxBQUFJO0FBQ1YsQUFBSyxtQkFBRSxJQUFJLEFBQVksYUFDckIsQUFBRyxLQUNILEFBQW1CLG9CQUFDLEFBQUcsQUFBRSxPQUN6QixBQUFZLGFBQUMsQUFBUSxBQUFFLEFBQ3hCLEFBQ0YsQUFBQyxBQUNKO0FBUlM7QUFRUjs7aUJBRU8sQUFBYSx1Q0FBQyxBQUFnQjtBQUNwQyxBQUFJLFlBQUUsQUFBRSxBQUFFLEtBQUcsQUFBSSxBQUFDOztBQUVsQixBQUFFLEFBQUMsWUFBQyxBQUFFLE9BQUssQ0FBQyxBQUFDLEFBQUMsR0FBQyxBQUFDO0FBQ2QsQUFBTSxtQkFBQyxBQUFJLEFBQUMsQUFDZDtBQUFDO0FBRUQsWUFBSSxBQUFPLFVBQUcsQUFBRyxJQUFDLEFBQU8sQUFBQztBQUMxQixBQUFJLGFBQUMsQUFBRSxNQUFJLEFBQUMsQUFBQztBQUNiLEFBQU0sZUFBQyxBQUFPLFFBQUMsQUFBTSxPQUFDLEFBQUUsQUFBQyxBQUFDLEFBQzVCO0FBQUM7O2lCQUVELEFBQWMseUNBQUMsQUFBYztBQUMzQixBQUFjLHVCQUFDLEFBQVEsU0FBQyxBQUFJLE1BQUUsQUFBTSxRQUFFLEFBQU0sT0FBQyxBQUFJLEFBQUMsQUFBQyxBQUNyRDtBQUFDOztpQkFFRCxBQUFnQiw2Q0FBQyxBQUF1QjtBQUN0QyxZQUFJLEFBQUssUUFBRyxBQUFJLEtBQUMsQUFBWSxBQUFFLEFBQUM7QUFFaEMsQUFBRyxhQUFDLElBQUksQUFBQyxJQUFDLEFBQUssTUFBQyxBQUFNLFNBQUcsQUFBQyxHQUFFLEFBQUMsS0FBRSxBQUFDLEdBQUUsQUFBQyxBQUFFLEtBQUUsQUFBQztBQUN0QyxnQkFBSSxBQUFJLE9BQUcsQUFBSSxLQUFDLEFBQVMsVUFBQyxBQUFTLFVBQUMsQUFBSyxNQUFDLEFBQUMsQUFBQyxBQUFDLEFBQUM7QUFDOUMsQUFBSyxrQkFBQyxBQUFHLElBQUMsQUFBSSxNQUFFLEFBQUksS0FBQyxBQUFLLE1BQUMsQUFBRyxBQUFrQyxBQUFDLEFBQUMsQUFDcEU7QUFBQyxBQUNIO0FBQUMsQUFDRjs7Ozs7QUEzVUcsQUFBTSxtQkFBQyxBQUFJLEtBQUMsQUFBSyxNQUFDLEFBQUUsQUFBQyxBQUN2QjtBQUFDLEFBRUQsQUFBWSxBQUFFO3VCQUFDLEFBQVU7QUFDdkIsQUFBSSxpQkFBQyxBQUFLLE1BQUMsQUFBRSxLQUFHLEFBQUUsQUFBQyxBQUNyQjtBQUFDLEFBRUQsQUFBWSxBQUFFOzs7O0FBQ1osQUFBTSxtQkFBQyxBQUFJLEtBQUMsQUFBSyxNQUFDLEFBQUUsQUFBQyxBQUN2QjtBQUFDLEFBRUQsQUFBWSxBQUFFO3VCQUFDLEFBQVU7QUFDdkIsQUFBSSxpQkFBQyxBQUFLLE1BQUMsQUFBRSxLQUFHLEFBQUUsQUFBQyxBQUNyQjtBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVnaXN0ZXIgfSBmcm9tICcuLi9vcGNvZGVzJztcbmltcG9ydCB7IFNjb3BlLCBEeW5hbWljU2NvcGUsIEVudmlyb25tZW50LCBPcGNvZGUgfSBmcm9tICcuLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBFbGVtZW50U3RhY2sgfSBmcm9tICcuLi9idWlsZGVyJztcbmltcG9ydCB7IE9wdGlvbiwgRGVzdHJveWFibGUsIFN0YWNrLCBMaW5rZWRMaXN0LCBMaXN0U2xpY2UsIE9wYXF1ZSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgUmVmZXJlbmNlSXRlcmF0b3IsIFBhdGhSZWZlcmVuY2UsIFZlcnNpb25lZFBhdGhSZWZlcmVuY2UsIGNvbWJpbmVTbGljZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBDb21waWxlZER5bmFtaWNQcm9ncmFtIH0gZnJvbSAnLi4vY29tcGlsZWQvYmxvY2tzJztcbmltcG9ydCB7IExhYmVsT3Bjb2RlLCBKdW1wSWZOb3RNb2RpZmllZE9wY29kZSwgRGlkTW9kaWZ5T3Bjb2RlIH0gZnJvbSAnLi4vY29tcGlsZWQvb3Bjb2Rlcy92bSc7XG5pbXBvcnQgeyBWTVN0YXRlLCBMaXN0QmxvY2tPcGNvZGUsIFRyeU9wY29kZSwgQmxvY2tPcGNvZGUgfSBmcm9tICcuL3VwZGF0ZSc7XG5pbXBvcnQgUmVuZGVyUmVzdWx0IGZyb20gJy4vcmVuZGVyLXJlc3VsdCc7XG5cbmltcG9ydCB7XG4gIEFQUEVORF9PUENPREVTLFxuICBVcGRhdGluZ09wY29kZVxufSBmcm9tICcuLi9vcGNvZGVzJztcblxuaW1wb3J0IHtcbiAgQ29uc3RhbnRzLFxuICBDb25zdGFudFN0cmluZ1xufSBmcm9tICcuLi9lbnZpcm9ubWVudC9jb25zdGFudHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFB1YmxpY1ZNIHtcbiAgZW52OiBFbnZpcm9ubWVudDtcbiAgZHluYW1pY1Njb3BlKCk6IER5bmFtaWNTY29wZTtcbiAgZ2V0U2VsZigpOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT47XG4gIG5ld0Rlc3Ryb3lhYmxlKGQ6IERlc3Ryb3lhYmxlKTogdm9pZDtcbn1cblxuZXhwb3J0IHR5cGUgQ2FwdHVyZWRTdGFjayA9IE9wYXF1ZVtdO1xuXG5leHBvcnQgY2xhc3MgRXZhbHVhdGlvblN0YWNrIHtcbiAgc3RhdGljIGVtcHR5KCk6IEV2YWx1YXRpb25TdGFjayB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKFtdLCAwLCAtMSk7XG4gIH1cblxuICBzdGF0aWMgcmVzdG9yZShzbmFwc2hvdDogQ2FwdHVyZWRTdGFjayk6IEV2YWx1YXRpb25TdGFjayB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKHNuYXBzaG90LnNsaWNlKCksIDAsIHNuYXBzaG90Lmxlbmd0aCAtIDEpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdGFjazogT3BhcXVlW10sIHB1YmxpYyBmcDogbnVtYmVyLCBwdWJsaWMgc3A6IG51bWJlcikge1xuICAgIE9iamVjdC5zZWFsKHRoaXMpO1xuICB9XG5cbiAgaXNFbXB0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5zcCA9PT0gLTE7XG4gIH1cblxuICBwdXNoKHZhbHVlOiBPcGFxdWUpOiB2b2lkIHtcbiAgICB0aGlzLnN0YWNrWysrdGhpcy5zcF0gPSB2YWx1ZTtcbiAgfVxuXG4gIGR1cChwb3NpdGlvbiA9IHRoaXMuc3ApOiB2b2lkIHtcbiAgICB0aGlzLnB1c2godGhpcy5zdGFja1twb3NpdGlvbl0pO1xuICB9XG5cbiAgcG9wPFQ+KG4gPSAxKTogVCB7XG4gICAgbGV0IHRvcCA9IHRoaXMuc3RhY2tbdGhpcy5zcF0gYXMgVDtcbiAgICB0aGlzLnNwIC09IG47XG4gICAgcmV0dXJuIHRvcDtcbiAgfVxuXG4gIHBlZWs8VD4oKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2tbdGhpcy5zcF0gYXMgVDtcbiAgfVxuXG4gIGZyb21CYXNlPFQ+KG9mZnNldDogbnVtYmVyKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2tbdGhpcy5mcCAtIG9mZnNldF0gYXMgVDtcbiAgfVxuXG4gIGZyb21Ub3A8VD4ob2Zmc2V0OiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5zdGFja1t0aGlzLnNwIC0gb2Zmc2V0XSBhcyBUO1xuICB9XG5cbiAgY2FwdHVyZShpdGVtczogbnVtYmVyKTogQ2FwdHVyZWRTdGFjayB7XG4gICAgbGV0IGVuZCA9IHRoaXMuc3AgKyAxO1xuICAgIGxldCBzdGFydCA9IGVuZCAtIGl0ZW1zO1xuICAgIHJldHVybiB0aGlzLnN0YWNrLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICB9XG5cbiAgdG9BcnJheSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGFjay5zbGljZSh0aGlzLmZwLCB0aGlzLnNwICsgMSk7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgSXRlcmF0b3JSZXN1bHQ8VD4gPSB7XG4gIGRvbmU6IGZhbHNlO1xuICB2YWx1ZTogbnVsbDtcbn0gfCB7XG4gIGRvbmU6IHRydWU7XG4gIHZhbHVlOiBUO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVk0gaW1wbGVtZW50cyBQdWJsaWNWTSB7XG4gIHByaXZhdGUgZHluYW1pY1Njb3BlU3RhY2sgPSBuZXcgU3RhY2s8RHluYW1pY1Njb3BlPigpO1xuICBwcml2YXRlIHNjb3BlU3RhY2sgPSBuZXcgU3RhY2s8U2NvcGU+KCk7XG4gIHB1YmxpYyB1cGRhdGluZ09wY29kZVN0YWNrID0gbmV3IFN0YWNrPExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+PigpO1xuICBwdWJsaWMgY2FjaGVHcm91cHMgPSBuZXcgU3RhY2s8T3B0aW9uPFVwZGF0aW5nT3Bjb2RlPj4oKTtcbiAgcHVibGljIGxpc3RCbG9ja1N0YWNrID0gbmV3IFN0YWNrPExpc3RCbG9ja09wY29kZT4oKTtcbiAgcHVibGljIGNvbnN0YW50czogQ29uc3RhbnRzO1xuXG4gIHB1YmxpYyBzdGFjayA9IEV2YWx1YXRpb25TdGFjay5lbXB0eSgpO1xuXG4gIC8qKiBSZWdpc3RlcnMgKiovXG5cbiAgcHJpdmF0ZSBwYyA9IC0xO1xuICBwcml2YXRlIHJhID0gLTE7XG5cbiAgcHJpdmF0ZSBnZXQgZnAoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zdGFjay5mcDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0IGZwKGZwOiBudW1iZXIpIHtcbiAgICB0aGlzLnN0YWNrLmZwID0gZnA7XG4gIH1cblxuICBwcml2YXRlIGdldCBzcCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnN0YWNrLnNwO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXQgc3Aoc3A6IG51bWJlcikge1xuICAgIHRoaXMuc3RhY2suc3AgPSBzcDtcbiAgfVxuXG4gIHB1YmxpYyBzMDogYW55ID0gbnVsbDtcbiAgcHVibGljIHMxOiBhbnkgPSBudWxsO1xuICBwdWJsaWMgdDA6IGFueSA9IG51bGw7XG4gIHB1YmxpYyB0MTogYW55ID0gbnVsbDtcblxuICAvLyBGZXRjaCBhIHZhbHVlIGZyb20gYSByZWdpc3RlciBvbnRvIHRoZSBzdGFja1xuICBmZXRjaChyZWdpc3RlcjogUmVnaXN0ZXIpIHtcbiAgICB0aGlzLnN0YWNrLnB1c2godGhpc1tSZWdpc3RlcltyZWdpc3Rlcl1dKTtcbiAgfVxuXG4gIC8vIExvYWQgYSB2YWx1ZSBmcm9tIHRoZSBzdGFjayBpbnRvIGEgcmVnaXN0ZXJcbiAgbG9hZChyZWdpc3RlcjogUmVnaXN0ZXIpIHtcbiAgICB0aGlzW1JlZ2lzdGVyW3JlZ2lzdGVyXV0gPSB0aGlzLnN0YWNrLnBvcCgpO1xuICB9XG5cbiAgLy8gRmV0Y2ggYSB2YWx1ZSBmcm9tIGEgcmVnaXN0ZXJcbiAgZmV0Y2hWYWx1ZTxUPihyZWdpc3RlcjogUmVnaXN0ZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpc1tSZWdpc3RlcltyZWdpc3Rlcl1dO1xuICB9XG5cbiAgLy8gTG9hZCBhIHZhbHVlIGludG8gYSByZWdpc3RlclxuICBsb2FkVmFsdWU8VD4ocmVnaXN0ZXI6IFJlZ2lzdGVyLCB2YWx1ZTogVCkge1xuICAgIHRoaXNbUmVnaXN0ZXJbcmVnaXN0ZXJdXSA9IHZhbHVlO1xuICB9XG5cbiAgLy8gU3RhcnQgYSBuZXcgZnJhbWUgYW5kIHNhdmUgJHJhIGFuZCAkZnAgb24gdGhlIHN0YWNrXG4gIHB1c2hGcmFtZSgpIHtcbiAgICB0aGlzLnN0YWNrLnB1c2godGhpcy5yYSk7XG4gICAgdGhpcy5zdGFjay5wdXNoKHRoaXMuZnApO1xuICAgIHRoaXMuZnAgPSB0aGlzLnNwIC0gMTtcbiAgICAvLyB0aGlzLmZwID0gdGhpcy5zcCArIDE7XG4gIH1cblxuICAvLyBSZXN0b3JlICRyYSwgJHNwIGFuZCAkZnBcbiAgcG9wRnJhbWUoKSB7XG4gICAgdGhpcy5zcCA9IHRoaXMuZnAgLSAxO1xuICAgIHRoaXMucmEgPSB0aGlzLnN0YWNrLmZyb21CYXNlPG51bWJlcj4oMCk7XG4gICAgdGhpcy5mcCA9IHRoaXMuc3RhY2suZnJvbUJhc2U8bnVtYmVyPigtMSk7XG4gIH1cblxuICAvLyBKdW1wIHRvIGFuIGFkZHJlc3MgaW4gYHByb2dyYW1gXG4gIGdvdG8ocGM6IG51bWJlcikge1xuICAgIHRoaXMucGMgPSBwYztcbiAgfVxuXG4gIC8vIFNhdmUgJHBjIGludG8gJHJhLCB0aGVuIGp1bXAgdG8gYSBuZXcgYWRkcmVzcyBpbiBgcHJvZ3JhbWAgKGphbCBpbiBNSVBTKVxuICBjYWxsKHBjOiBudW1iZXIpIHtcbiAgICB0aGlzLnJhID0gdGhpcy5wYztcbiAgICB0aGlzLnBjID0gcGM7XG4gIH1cblxuICAvLyBQdXQgYSBzcGVjaWZpYyBgcHJvZ3JhbWAgYWRkcmVzcyBpbiAkcmFcbiAgcmV0dXJuVG8ocmE6IG51bWJlcikge1xuICAgIHRoaXMucmEgPSByYTtcbiAgfVxuXG4gIC8vIFJldHVybiB0byB0aGUgYHByb2dyYW1gIGFkZHJlc3Mgc3RvcmVkIGluICRyYVxuICByZXR1cm4oKSB7XG4gICAgdGhpcy5wYyA9IHRoaXMucmE7XG4gIH1cblxuICBzdGF0aWMgaW5pdGlhbChcbiAgICBlbnY6IEVudmlyb25tZW50LFxuICAgIHNlbGY6IFBhdGhSZWZlcmVuY2U8T3BhcXVlPixcbiAgICBkeW5hbWljU2NvcGU6IER5bmFtaWNTY29wZSxcbiAgICBlbGVtZW50U3RhY2s6IEVsZW1lbnRTdGFjayxcbiAgICBwcm9ncmFtOiBDb21waWxlZER5bmFtaWNQcm9ncmFtXG4gICkge1xuICAgIGxldCBzY29wZSA9IFNjb3BlLnJvb3Qoc2VsZiwgcHJvZ3JhbS5zeW1ib2xUYWJsZS5zeW1ib2xzLmxlbmd0aCk7XG4gICAgbGV0IHZtID0gbmV3IFZNKGVudiwgc2NvcGUsIGR5bmFtaWNTY29wZSwgZWxlbWVudFN0YWNrKTtcbiAgICB2bS5wYyA9IHByb2dyYW0uc3RhcnQ7XG4gICAgdm0udXBkYXRpbmdPcGNvZGVTdGFjay5wdXNoKG5ldyBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPigpKTtcbiAgICByZXR1cm4gdm07XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZW52OiBFbnZpcm9ubWVudCxcbiAgICBzY29wZTogU2NvcGUsXG4gICAgZHluYW1pY1Njb3BlOiBEeW5hbWljU2NvcGUsXG4gICAgcHJpdmF0ZSBlbGVtZW50U3RhY2s6IEVsZW1lbnRTdGFjayxcbiAgKSB7XG4gICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgdGhpcy5jb25zdGFudHMgPSBlbnYuY29uc3RhbnRzO1xuICAgIHRoaXMuZWxlbWVudFN0YWNrID0gZWxlbWVudFN0YWNrO1xuICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKHNjb3BlKTtcbiAgICB0aGlzLmR5bmFtaWNTY29wZVN0YWNrLnB1c2goZHluYW1pY1Njb3BlKTtcbiAgfVxuXG4gIGNhcHR1cmUoYXJnczogbnVtYmVyKTogVk1TdGF0ZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVudjogdGhpcy5lbnYsXG4gICAgICBzY29wZTogdGhpcy5zY29wZSgpLFxuICAgICAgZHluYW1pY1Njb3BlOiB0aGlzLmR5bmFtaWNTY29wZSgpLFxuICAgICAgc3RhY2s6IHRoaXMuc3RhY2suY2FwdHVyZShhcmdzKVxuICAgIH07XG4gIH1cblxuICBiZWdpbkNhY2hlR3JvdXAoKSB7XG4gICAgdGhpcy5jYWNoZUdyb3Vwcy5wdXNoKHRoaXMudXBkYXRpbmcoKS50YWlsKCkpO1xuICB9XG5cbiAgY29tbWl0Q2FjaGVHcm91cCgpIHtcbiAgICAvLyAgICAgICAgSnVtcElmTm90TW9kaWZpZWQoRU5EKVxuICAgIC8vICAgICAgICAoaGVhZClcbiAgICAvLyAgICAgICAgKC4uLi4pXG4gICAgLy8gICAgICAgICh0YWlsKVxuICAgIC8vICAgICAgICBEaWRNb2RpZnlcbiAgICAvLyBFTkQ6ICAgTm9vcFxuXG4gICAgbGV0IEVORCA9IG5ldyBMYWJlbE9wY29kZShcIkVORFwiKTtcblxuICAgIGxldCBvcGNvZGVzID0gdGhpcy51cGRhdGluZygpO1xuICAgIGxldCBtYXJrZXIgPSB0aGlzLmNhY2hlR3JvdXBzLnBvcCgpO1xuICAgIGxldCBoZWFkID0gbWFya2VyID8gb3Bjb2Rlcy5uZXh0Tm9kZShtYXJrZXIpIDogb3Bjb2Rlcy5oZWFkKCk7XG4gICAgbGV0IHRhaWwgPSBvcGNvZGVzLnRhaWwoKTtcbiAgICBsZXQgdGFnID0gY29tYmluZVNsaWNlKG5ldyBMaXN0U2xpY2UoaGVhZCwgdGFpbCkpO1xuXG4gICAgbGV0IGd1YXJkID0gbmV3IEp1bXBJZk5vdE1vZGlmaWVkT3Bjb2RlKHRhZywgRU5EKTtcblxuICAgIG9wY29kZXMuaW5zZXJ0QmVmb3JlKGd1YXJkLCBoZWFkKTtcbiAgICBvcGNvZGVzLmFwcGVuZChuZXcgRGlkTW9kaWZ5T3Bjb2RlKGd1YXJkKSk7XG4gICAgb3Bjb2Rlcy5hcHBlbmQoRU5EKTtcbiAgfVxuXG4gIGVudGVyKGFyZ3M6IG51bWJlcikge1xuICAgIGxldCB1cGRhdGluZyA9IG5ldyBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPigpO1xuXG4gICAgbGV0IHN0YXRlID0gdGhpcy5jYXB0dXJlKGFyZ3MpO1xuICAgIGxldCB0cmFja2VyID0gdGhpcy5lbGVtZW50cygpLnB1c2hVcGRhdGFibGVCbG9jaygpO1xuXG4gICAgbGV0IHRyeU9wY29kZSA9IG5ldyBUcnlPcGNvZGUodGhpcy5wYywgc3RhdGUsIHRyYWNrZXIsIHVwZGF0aW5nKTtcblxuICAgIHRoaXMuZGlkRW50ZXIodHJ5T3Bjb2RlKTtcbiAgfVxuXG4gIGl0ZXJhdGUobWVtbzogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+LCB2YWx1ZTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+LCB1cGRhdGluZyA9IG5ldyBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPigpKTogVHJ5T3Bjb2RlIHtcbiAgICBsZXQgc3RhY2sgPSB0aGlzLnN0YWNrO1xuICAgIHN0YWNrLnB1c2godmFsdWUpO1xuICAgIHN0YWNrLnB1c2gobWVtbyk7XG5cbiAgICBsZXQgc3RhdGUgPSB0aGlzLmNhcHR1cmUoMik7XG4gICAgbGV0IHRyYWNrZXIgPSB0aGlzLmVsZW1lbnRzKCkucHVzaFVwZGF0YWJsZUJsb2NrKCk7XG5cbiAgICAvLyBsZXQgaXAgPSB0aGlzLmlwO1xuICAgIC8vIHRoaXMuaXAgPSBlbmQgKyA0O1xuICAgIC8vIHRoaXMuZnJhbWVzLnB1c2goaXApO1xuXG4gICAgcmV0dXJuIG5ldyBUcnlPcGNvZGUodGhpcy5wYywgc3RhdGUsIHRyYWNrZXIsIHVwZGF0aW5nKTtcbiAgfVxuXG4gIGVudGVySXRlbShrZXk6IHN0cmluZywgb3Bjb2RlOiBUcnlPcGNvZGUpIHtcbiAgICB0aGlzLmxpc3RCbG9jaygpLm1hcFtrZXldID0gb3Bjb2RlO1xuICAgIHRoaXMuZGlkRW50ZXIob3Bjb2RlKTtcbiAgfVxuXG4gIGVudGVyTGlzdChzdGFydDogbnVtYmVyKSB7XG4gICAgbGV0IHVwZGF0aW5nID0gbmV3IExpbmtlZExpc3Q8QmxvY2tPcGNvZGU+KCk7XG5cbiAgICBsZXQgc3RhdGUgPSB0aGlzLmNhcHR1cmUoMCk7XG4gICAgbGV0IHRyYWNrZXIgPSB0aGlzLmVsZW1lbnRzKCkucHVzaEJsb2NrTGlzdCh1cGRhdGluZyk7XG4gICAgbGV0IGFydGlmYWN0cyA9IHRoaXMuc3RhY2sucGVlazxSZWZlcmVuY2VJdGVyYXRvcj4oKS5hcnRpZmFjdHM7XG5cbiAgICBsZXQgb3Bjb2RlID0gbmV3IExpc3RCbG9ja09wY29kZShzdGFydCwgc3RhdGUsIHRyYWNrZXIsIHVwZGF0aW5nLCBhcnRpZmFjdHMpO1xuXG4gICAgdGhpcy5saXN0QmxvY2tTdGFjay5wdXNoKG9wY29kZSk7XG5cbiAgICB0aGlzLmRpZEVudGVyKG9wY29kZSk7XG4gIH1cblxuICBwcml2YXRlIGRpZEVudGVyKG9wY29kZTogQmxvY2tPcGNvZGUpIHtcbiAgICB0aGlzLnVwZGF0ZVdpdGgob3Bjb2RlKTtcbiAgICB0aGlzLnVwZGF0aW5nT3Bjb2RlU3RhY2sucHVzaChvcGNvZGUuY2hpbGRyZW4pO1xuICB9XG5cbiAgZXhpdCgpIHtcbiAgICB0aGlzLmVsZW1lbnRzKCkucG9wQmxvY2soKTtcbiAgICB0aGlzLnVwZGF0aW5nT3Bjb2RlU3RhY2sucG9wKCk7XG5cbiAgICBsZXQgcGFyZW50ID0gdGhpcy51cGRhdGluZygpLnRhaWwoKSBhcyBCbG9ja09wY29kZTtcblxuICAgIHBhcmVudC5kaWRJbml0aWFsaXplQ2hpbGRyZW4oKTtcbiAgfVxuXG4gIGV4aXRMaXN0KCkge1xuICAgIHRoaXMuZXhpdCgpO1xuICAgIHRoaXMubGlzdEJsb2NrU3RhY2sucG9wKCk7XG4gIH1cblxuICB1cGRhdGVXaXRoKG9wY29kZTogVXBkYXRpbmdPcGNvZGUpIHtcbiAgICB0aGlzLnVwZGF0aW5nKCkuYXBwZW5kKG9wY29kZSk7XG4gIH1cblxuICBsaXN0QmxvY2soKTogTGlzdEJsb2NrT3Bjb2RlIHtcbiAgICByZXR1cm4gdGhpcy5saXN0QmxvY2tTdGFjay5jdXJyZW50O1xuICB9XG5cbiAgdXBkYXRpbmcoKTogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4ge1xuICAgIHJldHVybiB0aGlzLnVwZGF0aW5nT3Bjb2RlU3RhY2suY3VycmVudDtcbiAgfVxuXG4gIGVsZW1lbnRzKCk6IEVsZW1lbnRTdGFjayB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFN0YWNrO1xuICB9XG5cbiAgc2NvcGUoKTogU2NvcGUge1xuICAgIHJldHVybiB0aGlzLnNjb3BlU3RhY2suY3VycmVudDtcbiAgfVxuXG4gIGR5bmFtaWNTY29wZSgpOiBEeW5hbWljU2NvcGUge1xuICAgIHJldHVybiB0aGlzLmR5bmFtaWNTY29wZVN0YWNrLmN1cnJlbnQ7XG4gIH1cblxuICBwdXNoQ2hpbGRTY29wZSgpIHtcbiAgICB0aGlzLnNjb3BlU3RhY2sucHVzaCh0aGlzLnNjb3BlKCkuY2hpbGQoKSk7XG4gIH1cblxuICBwdXNoQ2FsbGVyU2NvcGUoY2hpbGRTY29wZSA9IGZhbHNlKSB7XG4gICAgbGV0IGNhbGxlclNjb3BlID0gdGhpcy5zY29wZSgpLmdldENhbGxlclNjb3BlKCk7XG4gICAgdGhpcy5zY29wZVN0YWNrLnB1c2goY2hpbGRTY29wZSA/IGNhbGxlclNjb3BlLmNoaWxkKCkgOiBjYWxsZXJTY29wZSk7XG4gIH1cblxuICBwdXNoRHluYW1pY1Njb3BlKCk6IER5bmFtaWNTY29wZSB7XG4gICAgbGV0IGNoaWxkID0gdGhpcy5keW5hbWljU2NvcGUoKS5jaGlsZCgpO1xuICAgIHRoaXMuZHluYW1pY1Njb3BlU3RhY2sucHVzaChjaGlsZCk7XG4gICAgcmV0dXJuIGNoaWxkO1xuICB9XG5cbiAgcHVzaFJvb3RTY29wZShzaXplOiBudW1iZXIsIGJpbmRDYWxsZXI6IGJvb2xlYW4pOiBTY29wZSB7XG4gICAgbGV0IHNjb3BlID0gU2NvcGUuc2l6ZWQoc2l6ZSk7XG4gICAgaWYgKGJpbmRDYWxsZXIpIHNjb3BlLmJpbmRDYWxsZXJTY29wZSh0aGlzLnNjb3BlKCkpO1xuICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKHNjb3BlKTtcbiAgICByZXR1cm4gc2NvcGU7XG4gIH1cblxuICBwb3BTY29wZSgpIHtcbiAgICB0aGlzLnNjb3BlU3RhY2sucG9wKCk7XG4gIH1cblxuICBwb3BEeW5hbWljU2NvcGUoKSB7XG4gICAgdGhpcy5keW5hbWljU2NvcGVTdGFjay5wb3AoKTtcbiAgfVxuXG4gIG5ld0Rlc3Ryb3lhYmxlKGQ6IERlc3Ryb3lhYmxlKSB7XG4gICAgdGhpcy5lbGVtZW50cygpLm5ld0Rlc3Ryb3lhYmxlKGQpO1xuICB9XG5cbiAgLy8vIFNDT1BFIEhFTFBFUlNcblxuICBnZXRTZWxmKCk6IFBhdGhSZWZlcmVuY2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuc2NvcGUoKS5nZXRTZWxmKCk7XG4gIH1cblxuICByZWZlcmVuY2VGb3JTeW1ib2woc3ltYm9sOiBudW1iZXIpOiBQYXRoUmVmZXJlbmNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnNjb3BlKCkuZ2V0U3ltYm9sKHN5bWJvbCk7XG4gIH1cblxuICAvLy8gRVhFQ1VUSU9OXG5cbiAgZXhlY3V0ZShzdGFydDogbnVtYmVyLCBpbml0aWFsaXplPzogKHZtOiBWTSkgPT4gdm9pZCk6IFJlbmRlclJlc3VsdCB7XG4gICAgdGhpcy5wYyA9IHN0YXJ0O1xuXG4gICAgaWYgKGluaXRpYWxpemUpIGluaXRpYWxpemUodGhpcyk7XG5cbiAgICBsZXQgcmVzdWx0OiBJdGVyYXRvclJlc3VsdDxSZW5kZXJSZXN1bHQ+O1xuXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIHJlc3VsdCA9IHRoaXMubmV4dCgpO1xuICAgICAgaWYgKHJlc3VsdC5kb25lKSBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0LnZhbHVlIGFzIFJlbmRlclJlc3VsdDtcbiAgfVxuXG4gIG5leHQoKTogSXRlcmF0b3JSZXN1bHQ8UmVuZGVyUmVzdWx0PiB7XG4gICAgbGV0IHsgZW52LCB1cGRhdGluZ09wY29kZVN0YWNrLCBlbGVtZW50U3RhY2sgfSA9IHRoaXM7XG4gICAgbGV0IG9wY29kZTogT3B0aW9uPE9wY29kZT47XG5cbiAgICBpZiAob3Bjb2RlID0gdGhpcy5uZXh0U3RhdGVtZW50KGVudikpIHtcbiAgICAgIEFQUEVORF9PUENPREVTLmV2YWx1YXRlKHRoaXMsIG9wY29kZSwgb3Bjb2RlLnR5cGUpO1xuICAgICAgcmV0dXJuIHsgZG9uZTogZmFsc2UsIHZhbHVlOiBudWxsIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRvbmU6IHRydWUsXG4gICAgICB2YWx1ZTogbmV3IFJlbmRlclJlc3VsdChcbiAgICAgICAgZW52LFxuICAgICAgICB1cGRhdGluZ09wY29kZVN0YWNrLnBvcCgpLFxuICAgICAgICBlbGVtZW50U3RhY2sucG9wQmxvY2soKVxuICAgICAgKVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIG5leHRTdGF0ZW1lbnQoZW52OiBFbnZpcm9ubWVudCk6IE9wdGlvbjxPcGNvZGU+IHtcbiAgICBsZXQgeyBwYyB9ID0gdGhpcztcblxuICAgIGlmIChwYyA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCBwcm9ncmFtID0gZW52LnByb2dyYW07XG4gICAgdGhpcy5wYyArPSA0O1xuICAgIHJldHVybiBwcm9ncmFtLm9wY29kZShwYyk7XG4gIH1cblxuICBldmFsdWF0ZU9wY29kZShvcGNvZGU6IE9wY29kZSkge1xuICAgIEFQUEVORF9PUENPREVTLmV2YWx1YXRlKHRoaXMsIG9wY29kZSwgb3Bjb2RlLnR5cGUpO1xuICB9XG5cbiAgYmluZER5bmFtaWNTY29wZShuYW1lczogQ29uc3RhbnRTdHJpbmdbXSkge1xuICAgIGxldCBzY29wZSA9IHRoaXMuZHluYW1pY1Njb3BlKCk7XG5cbiAgICBmb3IobGV0IGk9bmFtZXMubGVuZ3RoIC0gMTsgaT49MDsgaS0tKSB7XG4gICAgICBsZXQgbmFtZSA9IHRoaXMuY29uc3RhbnRzLmdldFN0cmluZyhuYW1lc1tpXSk7XG4gICAgICBzY29wZS5zZXQobmFtZSwgdGhpcy5zdGFjay5wb3A8VmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+PigpKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==

@@ -13,3 +13,3 @@ 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; }

import { ElementStack } from '../builder';
import { Stack, LinkedList, dict, expect } from '@glimmer/util';
import { Stack, LinkedList, dict } from '@glimmer/util';
import { IteratorSynchronizer,

@@ -70,3 +70,3 @@ // Tags

get: function () {
return expect(this.frameStack.current, 'bug: expected a frame');
return this.frameStack.current;
}

@@ -130,15 +130,2 @@ }]);

BlockOpcode.prototype.toJSON = function toJSON() {
var details = dict();
details["guid"] = '' + this._guid;
return {
guid: this._guid,
type: this.type,
details: details,
children: this.children.toArray().map(function (op) {
return op.toJSON();
})
};
};
return BlockOpcode;

@@ -194,11 +181,2 @@ }(UpdatingOpcode);

TryOpcode.prototype.toJSON = function toJSON() {
var json = _BlockOpcode.prototype.toJSON.call(this);
var details = json["details"];
if (!details) {
details = json["details"] = {};
}
return _BlockOpcode.prototype.toJSON.call(this);
};
return TryOpcode;

@@ -316,3 +294,3 @@ }(BlockOpcode);

var marker = dom.createComment('');
dom.insertAfter(bounds.parentElement(), marker, expect(bounds.lastNode(), "can't insert after an empty bounds"));
dom.insertAfter(bounds.parentElement(), marker, bounds.lastNode());
var target = new ListRevalidationDelegate(this, marker);

@@ -336,16 +314,2 @@ var synchronizer = new IteratorSynchronizer({ target: target, artifacts: artifacts });

ListBlockOpcode.prototype.toJSON = function toJSON() {
var json = _BlockOpcode2.prototype.toJSON.call(this);
var map = this.map;
var inner = Object.keys(map).map(function (key) {
return JSON.stringify(key) + ': ' + map[key]._guid;
}).join(", ");
var details = json["details"];
if (!details) {
details = json["details"] = {};
}
details["map"] = '{' + inner + '}';
return json;
};
return ListBlockOpcode;

@@ -386,2 +350,2 @@ }(BlockOpcode);

}();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidXBkYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFDQSxBQUFPLFNBQXFCLEFBQUssT0FBRSxBQUFJLFFBQUksQUFBVSxBQUFFLGtCQUFNLEFBQVcsQUFBQztBQUN6RSxBQUFPLFNBQUUsQUFBWSxBQUE2QixvQkFBTSxBQUFZLEFBQUM7QUFDckUsQUFBTyxTQUFrQixBQUFLLE9BQUUsQUFBVSxZQUFRLEFBQUksTUFBRSxBQUFNLEFBQUUsY0FBTSxBQUFlLEFBQUM7QUFDdEYsQUFBTyxTQUdMLEFBQW9CO0FBR3BCLEFBQU87QUFDUCxBQUFPLFNBRVAsQUFBWSxjQUVaLEFBQVksY0FDWixBQUFZLGNBQ1osQUFBTyxBQUNSLGVBQU0sQUFBb0IsQUFBQztBQUM1QixBQUFPLFNBQWMsQUFBYyxBQUFpQixzQkFBTSxBQUFZLEFBQUM7QUFLdkUsT0FBTyxBQUFFLEFBQUUsTUFBaUIsQUFBZSxBQUFFLHVCQUFNLEFBQVUsQUFBQyxBQUU5RCxBQUFNLEFBQUMsQUFBTzs7O0FBUVosd0JBQVksQUFBZ0IsQUFBRTs7WUFBRSxBQUFnQix5REFBRyxBQUFLLEFBQUU7Ozs7QUFGbEQsYUFBVSxhQUEyQixJQUFJLEFBQUssQUFBbUIsQUFBQztBQUd4RSxBQUFJLGFBQUMsQUFBRyxNQUFHLEFBQUcsQUFBQztBQUNmLEFBQUksYUFBQyxBQUFTLFlBQUcsQUFBRyxJQUFDLEFBQVMsQUFBQztBQUMvQixBQUFJLGFBQUMsQUFBRyxNQUFHLEFBQUcsSUFBQyxBQUFNLEFBQUUsQUFBQztBQUN4QixBQUFJLGFBQUMsQUFBZ0IsbUJBQUcsQUFBZ0IsQUFBQyxBQUMzQztBQUFDOzt5QkFFRCxBQUFPLDJCQUFDLEFBQXNCLFNBQUUsQUFBeUI7QUFDdkQsQUFBSSxZQUFFLEFBQVUsQUFBRSxhQUFHLEFBQUksQUFBQzs7QUFFMUIsQUFBSSxhQUFDLEFBQUcsSUFBQyxBQUFPLFNBQUUsQUFBTyxBQUFD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LEFBQWMsSUFBVSxBQUFrQixLQUFVLEFBQTBDOzs7QUFBOUYsYUFBRSxLQUFGLEFBQUUsQUFBWTtBQUFVLGFBQUcsTUFBSCxBQUFHLEFBQWU7QUFBVSxhQUFnQixtQkFBaEIsQUFBZ0IsQUFBMEI7QUFDaEgsQUFBSSxhQUFDLEFBQUUsS0FBRyxBQUFFLEFBQUM7QUFDYixBQUFJLGFBQUMsQUFBRyxNQUFHLEFBQUcsQUFBQztBQUNmLEFBQUksYUFBQyxBQUFPLFVBQUcsQUFBRyxJQUFDLEFBQUksQUFBRSxBQUFDLEFBQzVCO0FBQUM7OzhCQUVELEFBQUkscUJBQUMsQUFBa0I7QUFDckIsQUFBSSxhQUFDLEFBQU8sVUFBRyxBQUFFLEFBQUMsQUFDcEI7QUFBQzs7OEJBRUQsQUFBYTtBQUNYLEFBQUksWUFBRSxBQUFPO1lBQUUsQUFBRyxBQUFFLE1BQUcsQUFBSSxBQUFDOztBQUM1QixBQUFFLEFBQUMsWUFBQyxBQUFPLEFBQUMsU0FBQyxBQUFJLEtBQUMsQUFBTyxVQUFHLEFBQUcsSUFBQyxBQUFRLFNBQUMsQUFBTyxBQUFDLEFBQUM7QUFDbEQsQUFBTSxlQUFDLEFBQU8sQUFBQyxBQUNqQjtBQUFDOzs4QkFFRCxBQUFlO0FBQ2IsQUFBRSxBQUFDLFlBQUMsQUFBSSxLQUFDLEFBQWdCLEFBQUMsa0JBQUMsQUFBQztBQUMxQixBQUFJLGlCQUFDLEFBQWdCLGlCQUFDLEFBQWUsQUFBRSxBQUFDLEFBQzFDO0FBQUMsQUFDSDtBQUFDLEFBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY29wZSwgRHluYW1pY1Njb3BlLCBFbnZpcm9ubWVudCB9IGZyb20gJy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IERlc3Ryb3lhYmxlQm91bmRzLCBjbGVhciwgbW92ZSBhcyBtb3ZlQm91bmRzIH0gZnJvbSAnLi4vYm91bmRzJztcbmltcG9ydCB7IEVsZW1lbnRTdGFjaywgVHJhY2tlciwgVXBkYXRhYmxlVHJhY2tlciB9IGZyb20gJy4uL2J1aWxkZXInO1xuaW1wb3J0IHsgT3B0aW9uLCBPcGFxdWUsIFN0YWNrLCBMaW5rZWRMaXN0LCBEaWN0LCBkaWN0LCBleHBlY3QgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7XG4gIFBhdGhSZWZlcmVuY2UsXG4gIEl0ZXJhdGlvbkFydGlmYWN0cyxcbiAgSXRlcmF0b3JTeW5jaHJvbml6ZXIsXG4gIEl0ZXJhdG9yU3luY2hyb25pemVyRGVsZWdhdGUsXG5cbiAgLy8gVGFnc1xuICBjb21iaW5lLFxuICBSZXZpc2lvbixcbiAgVXBkYXRhYmxlVGFnLFxuICBUYWdXcmFwcGVyLFxuICBjb21iaW5lU2xpY2UsXG4gIENPTlNUQU5UX1RBRyxcbiAgSU5JVElBTFxufSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgT3Bjb2RlSlNPTiwgVXBkYXRpbmdPcGNvZGUsIFVwZGF0aW5nT3BTZXEgfSBmcm9tICcuLi9vcGNvZGVzJztcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4uL2Vudmlyb25tZW50L2NvbnN0YW50cyc7XG5pbXBvcnQgeyBET01DaGFuZ2VzIH0gZnJvbSAnLi4vZG9tL2hlbHBlcic7XG5pbXBvcnQgKiBhcyBTaW1wbGUgZnJvbSAnLi4vZG9tL2ludGVyZmFjZXMnO1xuXG5pbXBvcnQgVk0sIHsgQ2FwdHVyZWRTdGFjaywgRXZhbHVhdGlvblN0YWNrIH0gZnJvbSAnLi9hcHBlbmQnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBVcGRhdGluZ1ZNIHtcbiAgcHVibGljIGVudjogRW52aXJvbm1lbnQ7XG4gIHB1YmxpYyBkb206IERPTUNoYW5nZXM7XG4gIHB1YmxpYyBhbHdheXNSZXZhbGlkYXRlOiBib29sZWFuO1xuICBwdWJsaWMgY29uc3RhbnRzOiBDb25zdGFudHM7XG5cbiAgcHJpdmF0ZSBmcmFtZVN0YWNrOiBTdGFjazxVcGRhdGluZ1ZNRnJhbWU+ID0gbmV3IFN0YWNrPFVwZGF0aW5nVk1GcmFtZT4oKTtcblxuICBjb25zdHJ1Y3RvcihlbnY6IEVudmlyb25tZW50LCB7IGFsd2F5c1JldmFsaWRhdGUgPSBmYWxzZSB9KSB7XG4gICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgdGhpcy5jb25zdGFudHMgPSBlbnYuY29uc3RhbnRzO1xuICAgIHRoaXMuZG9tID0gZW52LmdldERPTSgpO1xuICAgIHRoaXMuYWx3YXlzUmV2YWxpZGF0ZSA9IGFsd2F5c1JldmFsaWRhdGU7XG4gIH1cblxuICBleGVjdXRlKG9wY29kZXM6IFVwZGF0aW5nT3BTZXEsIGhhbmRsZXI6IEV4Y2VwdGlvbkhhbmRsZXIpIHtcbiAgICBsZXQgeyBmcmFtZVN0YWNrIH0gPSB0aGlzO1xuXG4gICAgdGhpcy50cnkob3Bjb2RlcywgaGFuZGxlcik7XG5cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgaWYgKGZyYW1lU3RhY2suaXNFbXB0eSgpKSBicmVhaztcblxuICAgICAgbGV0IG9wY29kZSA9IHRoaXMuZnJhbWUubmV4dFN0YXRlbWVudCgpO1xuXG4gICAgICBpZiAob3Bjb2RlID09PSBudWxsKSB7XG4gICAgICAgIHRoaXMuZnJhbWVTdGFjay5wb3AoKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIG9wY29kZS5ldmFsdWF0ZSh0aGlzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldCBmcmFtZSgpIHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXMuZnJhbWVTdGFjay5jdXJyZW50LCAnYnVnOiBleHBlY3RlZCBhIGZyYW1lJyk7XG4gIH1cblxuICBnb3RvKG9wOiBVcGRhdGluZ09wY29kZSkge1xuICAgIHRoaXMuZnJhbWUuZ290byhvcCk7XG4gIH1cblxuICB0cnkob3BzOiBVcGRhdGluZ09wU2VxLCBoYW5kbGVyOiBPcHRpb248RXhjZXB0aW9uSGFuZGxlcj4pIHtcbiAgICB0aGlzLmZyYW1lU3RhY2sucHVzaChuZXcgVXBkYXRpbmdWTUZyYW1lKHRoaXMsIG9wcywgaGFuZGxlcikpO1xuICB9XG5cbiAgdGhyb3coKSB7XG4gICAgdGhpcy5mcmFtZS5oYW5kbGVFeGNlcHRpb24oKTtcbiAgICB0aGlzLmZyYW1lU3RhY2sucG9wKCk7XG4gIH1cblxuICBldmFsdWF0ZU9wY29kZShvcGNvZGU6IFVwZGF0aW5nT3Bjb2RlKSB7XG4gICAgb3Bjb2RlLmV2YWx1YXRlKHRoaXMpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhjZXB0aW9uSGFuZGxlciB7XG4gIGhhbmRsZUV4Y2VwdGlvbigpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZNU3RhdGUge1xuICBlbnY6IEVudmlyb25tZW50O1xuICBzY29wZTogU2NvcGU7XG4gIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlO1xuICBzdGFjazogQ2FwdHVyZWRTdGFjaztcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJsb2NrT3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUgaW1wbGVtZW50cyBEZXN0cm95YWJsZUJvdW5kcyB7XG4gIHB1YmxpYyB0eXBlID0gXCJibG9ja1wiO1xuICBwdWJsaWMgbmV4dCA9IG51bGw7XG4gIHB1YmxpYyBwcmV2ID0gbnVsbDtcbiAgcHVibGljIGNoaWxkcmVuOiBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPjtcblxuICBwcm90ZWN0ZWQgZW52OiBFbnZpcm9ubWVudDtcbiAgcHJvdGVjdGVkIHNjb3BlOiBTY29wZTtcbiAgcHJvdGVjdGVkIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlO1xuICBwcm90ZWN0ZWQgc3RhY2s6IENhcHR1cmVkU3RhY2s7XG4gIHByb3RlY3RlZCBib3VuZHM6IERlc3Ryb3lhYmxlQm91bmRzO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBzdGFydDogbnVtYmVyLCBzdGF0ZTogVk1TdGF0ZSwgYm91bmRzOiBEZXN0cm95YWJsZUJvdW5kcywgY2hpbGRyZW46IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KSB7XG4gICAgc3VwZXIoKTtcbiAgICBsZXQgeyBlbnYsIHNjb3BlLCBkeW5hbWljU2NvcGUsIHN0YWNrIH0gPSBzdGF0ZTtcbiAgICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgdGhpcy5zY29wZSA9IHNjb3BlO1xuICAgIHRoaXMuZHluYW1pY1Njb3BlID0gZHluYW1pY1Njb3BlO1xuICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICB0aGlzLmJvdW5kcyA9IGJvdW5kcztcbiAgfVxuXG4gIGFic3RyYWN0IGRpZEluaXRpYWxpemVDaGlsZHJlbigpOiB2b2lkO1xuXG4gIHBhcmVudEVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuYm91bmRzLnBhcmVudEVsZW1lbnQoKTtcbiAgfVxuXG4gIGZpcnN0Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMuZmlyc3ROb2RlKCk7XG4gIH1cblxuICBsYXN0Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMubGFzdE5vZGUoKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgdm0udHJ5KHRoaXMuY2hpbGRyZW4sIG51bGwpO1xuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLmJvdW5kcy5kZXN0cm95KCk7XG4gIH1cblxuICBkaWREZXN0cm95KCkge1xuICAgIHRoaXMuZW52LmRpZERlc3Ryb3kodGhpcy5ib3VuZHMpO1xuICB9XG5cbiAgdG9KU09OKCkgOiBPcGNvZGVKU09OIHtcbiAgICBsZXQgZGV0YWlscyA9IGRpY3Q8c3RyaW5nPigpO1xuXG4gICAgZGV0YWlsc1tcImd1aWRcIl0gPSBgJHt0aGlzLl9ndWlkfWA7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIGRldGFpbHMsXG4gICAgICBjaGlsZHJlbjogdGhpcy5jaGlsZHJlbi50b0FycmF5KCkubWFwKG9wID0+IG9wLnRvSlNPTigpKVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRyeU9wY29kZSBleHRlbmRzIEJsb2NrT3Bjb2RlIGltcGxlbWVudHMgRXhjZXB0aW9uSGFuZGxlciB7XG4gIHB1YmxpYyB0eXBlID0gXCJ0cnlcIjtcblxuICBwcml2YXRlIF90YWc6IFRhZ1dyYXBwZXI8VXBkYXRhYmxlVGFnPjtcblxuICBwcm90ZWN0ZWQgYm91bmRzOiBVcGRhdGFibGVUcmFja2VyO1xuXG4gIGNvbnN0cnVjdG9yKHN0YXJ0OiBudW1iZXIsIHN0YXRlOiBWTVN0YXRlLCBib3VuZHM6IFVwZGF0YWJsZVRyYWNrZXIsIGNoaWxkcmVuOiBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPikge1xuICAgIHN1cGVyKHN0YXJ0LCBzdGF0ZSwgYm91bmRzLCBjaGlsZHJlbik7XG4gICAgdGhpcy50YWcgPSB0aGlzLl90YWcgPSBVcGRhdGFibGVUYWcuY3JlYXRlKENPTlNUQU5UX1RBRyk7XG4gIH1cblxuICBkaWRJbml0aWFsaXplQ2hpbGRyZW4oKSB7XG4gICAgdGhpcy5fdGFnLmlubmVyLnVwZGF0ZShjb21iaW5lU2xpY2UodGhpcy5jaGlsZHJlbikpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICB2bS50cnkodGhpcy5jaGlsZHJlbiwgdGhpcyk7XG4gIH1cblxuICBoYW5kbGVFeGNlcHRpb24oKSB7XG4gICAgbGV0IHsgZW52LCBib3VuZHMsIGNoaWxkcmVuLCBzY29wZSwgZHluYW1pY1Njb3BlLCBzdGFydCwgc3RhY2ssIHByZXYsIG5leHQgfSA9IHRoaXM7XG5cbiAgICBjaGlsZHJlbi5jbGVhcigpO1xuXG4gICAgbGV0IGVsZW1lbnRTdGFjayA9IEVsZW1lbnRTdGFjay5yZXN1bWUoXG4gICAgICBlbnYsXG4gICAgICBib3VuZHMsXG4gICAgICBib3VuZHMucmVzZXQoZW52KVxuICAgICk7XG5cbiAgICBsZXQgdm0gPSBuZXcgVk0oZW52LCBzY29wZSwgZHluYW1pY1Njb3BlLCBlbGVtZW50U3RhY2spO1xuXG4gICAgbGV0IHVwZGF0aW5nID0gbmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCk7XG5cbiAgICB2bS5leGVjdXRlKHN0YXJ0LCB2bSA9PiB7XG4gICAgICB2bS5zdGFjayA9IEV2YWx1YXRpb25TdGFjay5yZXN0b3JlKHN0YWNrKTtcbiAgICAgIHZtLnVwZGF0aW5nT3Bjb2RlU3RhY2sucHVzaCh1cGRhdGluZyk7XG4gICAgICB2bS51cGRhdGVXaXRoKHRoaXMpO1xuICAgICAgdm0udXBkYXRpbmdPcGNvZGVTdGFjay5wdXNoKGNoaWxkcmVuKTtcbiAgICB9KTtcblxuICAgIHRoaXMucHJldiA9IHByZXY7XG4gICAgdGhpcy5uZXh0ID0gbmV4dDtcbiAgfVxuXG4gIHRvSlNPTigpIDogT3Bjb2RlSlNPTiB7XG4gICAgbGV0IGpzb24gPSBzdXBlci50b0pTT04oKTtcblxuICAgIGxldCBkZXRhaWxzID0ganNvbltcImRldGFpbHNcIl07XG4gICAgaWYgKCFkZXRhaWxzKSB7XG4gICAgICBkZXRhaWxzID0ganNvbltcImRldGFpbHNcIl0gPSB7fTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VwZXIudG9KU09OKCk7XG4gIH1cbn1cblxuY2xhc3MgTGlzdFJldmFsaWRhdGlvbkRlbGVnYXRlIGltcGxlbWVudHMgSXRlcmF0b3JTeW5jaHJvbml6ZXJEZWxlZ2F0ZSB7XG4gIHByaXZhdGUgbWFwOiBEaWN0PEJsb2NrT3Bjb2RlPjtcbiAgcHJpdmF0ZSB1cGRhdGluZzogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT47XG5cbiAgcHJpdmF0ZSBkaWRJbnNlcnQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBkaWREZWxldGUgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG9wY29kZTogTGlzdEJsb2NrT3Bjb2RlLCBwcml2YXRlIG1hcmtlcjogU2ltcGxlLkNvbW1lbnQpIHtcbiAgICB0aGlzLm1hcCA9IG9wY29kZS5tYXA7XG4gICAgdGhpcy51cGRhdGluZyA9IG9wY29kZVsnY2hpbGRyZW4nXTtcbiAgfVxuXG4gIGluc2VydChrZXk6IHN0cmluZywgaXRlbTogUGF0aFJlZmVyZW5jZTxPcGFxdWU+LCBtZW1vOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIGJlZm9yZTogc3RyaW5nKSB7XG4gICAgbGV0IHsgbWFwLCBvcGNvZGUsIHVwZGF0aW5nIH0gPSB0aGlzO1xuICAgIGxldCBuZXh0U2libGluZzogT3B0aW9uPFNpbXBsZS5Ob2RlPiA9IG51bGw7XG4gICAgbGV0IHJlZmVyZW5jZTogT3B0aW9uPEJsb2NrT3Bjb2RlPiA9IG51bGw7XG5cbiAgICBpZiAoYmVmb3JlKSB7XG4gICAgICByZWZlcmVuY2UgPSBtYXBbYmVmb3JlXTtcbiAgICAgIG5leHRTaWJsaW5nID0gcmVmZXJlbmNlWydib3VuZHMnXS5maXJzdE5vZGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV4dFNpYmxpbmcgPSB0aGlzLm1hcmtlcjtcbiAgICB9XG5cbiAgICBsZXQgdm0gPSBvcGNvZGUudm1Gb3JJbnNlcnRpb24obmV4dFNpYmxpbmcpO1xuICAgIGxldCB0cnlPcGNvZGU6IE9wdGlvbjxUcnlPcGNvZGU+ID0gbnVsbDtcblxuICAgIGxldCB7IHN0YXJ0IH0gPSBvcGNvZGU7XG5cbiAgICB2bS5leGVjdXRlKHN0YXJ0LCB2bSA9PiB7XG4gICAgICBtYXBba2V5XSA9IHRyeU9wY29kZSA9IHZtLml0ZXJhdGUobWVtbywgaXRlbSk7XG4gICAgICB2bS51cGRhdGluZ09wY29kZVN0YWNrLnB1c2gobmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCkpO1xuICAgICAgdm0udXBkYXRlV2l0aCh0cnlPcGNvZGUpO1xuICAgICAgdm0udXBkYXRpbmdPcGNvZGVTdGFjay5wdXNoKHRyeU9wY29kZS5jaGlsZHJlbik7XG4gICAgfSk7XG5cbiAgICB1cGRhdGluZy5pbnNlcnRCZWZvcmUodHJ5T3Bjb2RlISwgcmVmZXJlbmNlKTtcblxuICAgIHRoaXMuZGlkSW5zZXJ0ID0gdHJ1ZTtcbiAgfVxuXG4gIHJldGFpbihfa2V5OiBzdHJpbmcsIF9pdGVtOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIF9tZW1vOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4pIHtcbiAgfVxuXG4gIG1vdmUoa2V5OiBzdHJpbmcsIF9pdGVtOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIF9tZW1vOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIGJlZm9yZTogc3RyaW5nKSB7XG4gICAgbGV0IHsgbWFwLCB1cGRhdGluZyB9ID0gdGhpcztcblxuICAgIGxldCBlbnRyeSA9IG1hcFtrZXldO1xuICAgIGxldCByZWZlcmVuY2UgPSBtYXBbYmVmb3JlXSB8fCBudWxsO1xuXG4gICAgaWYgKGJlZm9yZSkge1xuICAgICAgbW92ZUJvdW5kcyhlbnRyeSwgcmVmZXJlbmNlLmZpcnN0Tm9kZSgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbW92ZUJvdW5kcyhlbnRyeSwgdGhpcy5tYXJrZXIpO1xuICAgIH1cblxuICAgIHVwZGF0aW5nLnJlbW92ZShlbnRyeSk7XG4gICAgdXBkYXRpbmcuaW5zZXJ0QmVmb3JlKGVudHJ5LCByZWZlcmVuY2UpO1xuICB9XG5cbiAgZGVsZXRlKGtleTogc3RyaW5nKSB7XG4gICAgbGV0IHsgbWFwIH0gPSB0aGlzO1xuICAgIGxldCBvcGNvZGUgPSBtYXBba2V5XTtcbiAgICBvcGNvZGUuZGlkRGVzdHJveSgpO1xuICAgIGNsZWFyKG9wY29kZSk7XG4gICAgdGhpcy51cGRhdGluZy5yZW1vdmUob3Bjb2RlKTtcbiAgICBkZWxldGUgbWFwW2tleV07XG5cbiAgICB0aGlzLmRpZERlbGV0ZSA9IHRydWU7XG4gIH1cblxuICBkb25lKCkge1xuICAgIHRoaXMub3Bjb2RlLmRpZEluaXRpYWxpemVDaGlsZHJlbih0aGlzLmRpZEluc2VydCB8fCB0aGlzLmRpZERlbGV0ZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIExpc3RCbG9ja09wY29kZSBleHRlbmRzIEJsb2NrT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImxpc3QtYmxvY2tcIjtcbiAgcHVibGljIG1hcCA9IGRpY3Q8QmxvY2tPcGNvZGU+KCk7XG4gIHB1YmxpYyBhcnRpZmFjdHM6IEl0ZXJhdGlvbkFydGlmYWN0cztcblxuICBwcml2YXRlIGxhc3RJdGVyYXRlZDogUmV2aXNpb24gPSBJTklUSUFMO1xuICBwcml2YXRlIF90YWc6IFRhZ1dyYXBwZXI8VXBkYXRhYmxlVGFnPjtcblxuICBjb25zdHJ1Y3RvcihzdGFydDogbnVtYmVyLCBzdGF0ZTogVk1TdGF0ZSwgYm91bmRzOiBUcmFja2VyLCBjaGlsZHJlbjogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4sIGFydGlmYWN0czogSXRlcmF0aW9uQXJ0aWZhY3RzKSB7XG4gICAgc3VwZXIoc3RhcnQsIHN0YXRlLCBib3VuZHMsIGNoaWxkcmVuKTtcbiAgICB0aGlzLmFydGlmYWN0cyA9IGFydGlmYWN0cztcbiAgICBsZXQgX3RhZyA9IHRoaXMuX3RhZyA9IFVwZGF0YWJsZVRhZy5jcmVhdGUoQ09OU1RBTlRfVEFHKTtcbiAgICB0aGlzLnRhZyA9IGNvbWJpbmUoW2FydGlmYWN0cy50YWcsIF90YWddKTtcbiAgfVxuXG4gIGRpZEluaXRpYWxpemVDaGlsZHJlbihsaXN0RGlkQ2hhbmdlID0gdHJ1ZSkge1xuICAgIHRoaXMubGFzdEl0ZXJhdGVkID0gdGhpcy5hcnRpZmFjdHMudGFnLnZhbHVlKCk7XG5cbiAgICBpZiAobGlzdERpZENoYW5nZSkge1xuICAgICAgdGhpcy5fdGFnLmlubmVyLnVwZGF0ZShjb21iaW5lU2xpY2UodGhpcy5jaGlsZHJlbikpO1xuICAgIH1cbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgbGV0IHsgYXJ0aWZhY3RzLCBsYXN0SXRlcmF0ZWQgfSA9IHRoaXM7XG5cbiAgICBpZiAoIWFydGlmYWN0cy50YWcudmFsaWRhdGUobGFzdEl0ZXJhdGVkKSkge1xuICAgICAgbGV0IHsgYm91bmRzIH0gPSB0aGlzO1xuICAgICAgbGV0IHsgZG9tIH0gPSB2bTtcblxuICAgICAgbGV0IG1hcmtlciA9IGRvbS5jcmVhdGVDb21tZW50KCcnKTtcbiAgICAgIGRvbS5pbnNlcnRBZnRlcihib3VuZHMucGFyZW50RWxlbWVudCgpLCBtYXJrZXIsIGV4cGVjdChib3VuZHMubGFzdE5vZGUoKSwgXCJjYW4ndCBpbnNlcnQgYWZ0ZXIgYW4gZW1wdHkgYm91bmRzXCIpKTtcblxuICAgICAgbGV0IHRhcmdldCA9IG5ldyBMaXN0UmV2YWxpZGF0aW9uRGVsZWdhdGUodGhpcywgbWFya2VyKTtcbiAgICAgIGxldCBzeW5jaHJvbml6ZXIgPSBuZXcgSXRlcmF0b3JTeW5jaHJvbml6ZXIoeyB0YXJnZXQsIGFydGlmYWN0cyB9KTtcblxuICAgICAgc3luY2hyb25pemVyLnN5bmMoKTtcblxuICAgICAgdGhpcy5wYXJlbnRFbGVtZW50KCkucmVtb3ZlQ2hpbGQobWFya2VyKTtcbiAgICB9XG5cbiAgICAvLyBSdW4gbm93LXVwZGF0ZWQgdXBkYXRpbmcgb3Bjb2Rlc1xuICAgIHN1cGVyLmV2YWx1YXRlKHZtKTtcbiAgfVxuXG4gIHZtRm9ySW5zZXJ0aW9uKG5leHRTaWJsaW5nOiBPcHRpb248U2ltcGxlLk5vZGU+KTogVk0ge1xuICAgIGxldCB7IGVudiwgc2NvcGUsIGR5bmFtaWNTY29wZSB9ID0gdGhpcztcblxuICAgIGxldCBlbGVtZW50U3RhY2sgPSBFbGVtZW50U3RhY2suZm9ySW5pdGlhbFJlbmRlcihcbiAgICAgIHRoaXMuZW52LFxuICAgICAgdGhpcy5ib3VuZHMucGFyZW50RWxlbWVudCgpLFxuICAgICAgbmV4dFNpYmxpbmdcbiAgICApO1xuXG4gICAgcmV0dXJuIG5ldyBWTShlbnYsIHNjb3BlLCBkeW5hbWljU2NvcGUsIGVsZW1lbnRTdGFjayk7XG4gIH1cblxuICB0b0pTT04oKSA6IE9wY29kZUpTT04ge1xuICAgIGxldCBqc29uID0gc3VwZXIudG9KU09OKCk7XG4gICAgbGV0IG1hcCA9IHRoaXMubWFwO1xuXG4gICAgbGV0IGlubmVyID0gT2JqZWN0LmtleXMobWFwKS5tYXAoa2V5ID0+IHtcbiAgICAgIHJldHVybiBgJHtKU09OLnN0cmluZ2lmeShrZXkpfTogJHttYXBba2V5XS5fZ3VpZH1gO1xuICAgIH0pLmpvaW4oXCIsIFwiKTtcblxuICAgIGxldCBkZXRhaWxzID0ganNvbltcImRldGFpbHNcIl07XG4gICAgaWYgKCFkZXRhaWxzKSB7XG4gICAgICBkZXRhaWxzID0ganNvbltcImRldGFpbHNcIl0gPSB7fTtcbiAgICB9XG5cbiAgICBkZXRhaWxzW1wibWFwXCJdID0gYHske2lubmVyfX1gO1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cbn1cblxuY2xhc3MgVXBkYXRpbmdWTUZyYW1lIHtcbiAgcHJpdmF0ZSBjdXJyZW50OiBPcHRpb248VXBkYXRpbmdPcGNvZGU+O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdm06IFVwZGF0aW5nVk0sIHByaXZhdGUgb3BzOiBVcGRhdGluZ09wU2VxLCBwcml2YXRlIGV4Y2VwdGlvbkhhbmRsZXI6IE9wdGlvbjxFeGNlcHRpb25IYW5kbGVyPikge1xuICAgIHRoaXMudm0gPSB2bTtcbiAgICB0aGlzLm9wcyA9IG9wcztcbiAgICB0aGlzLmN1cnJlbnQgPSBvcHMuaGVhZCgpO1xuICB9XG5cbiAgZ290byhvcDogVXBkYXRpbmdPcGNvZGUpIHtcbiAgICB0aGlzLmN1cnJlbnQgPSBvcDtcbiAgfVxuXG4gIG5leHRTdGF0ZW1lbnQoKTogT3B0aW9uPFVwZGF0aW5nT3Bjb2RlPiB7XG4gICAgbGV0IHsgY3VycmVudCwgb3BzIH0gPSB0aGlzO1xuICAgIGlmIChjdXJyZW50KSB0aGlzLmN1cnJlbnQgPSBvcHMubmV4dE5vZGUoY3VycmVudCk7XG4gICAgcmV0dXJuIGN1cnJlbnQ7XG4gIH1cblxuICBoYW5kbGVFeGNlcHRpb24oKSB7XG4gICAgaWYgKHRoaXMuZXhjZXB0aW9uSGFuZGxlcikge1xuICAgICAgdGhpcy5leGNlcHRpb25IYW5kbGVyLmhhbmRsZUV4Y2VwdGlvbigpO1xuICAgIH1cbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidXBkYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFDQSxBQUFPLFNBQXFCLEFBQUssT0FBRSxBQUFJLFFBQUksQUFBVSxBQUFFLGtCQUFNLEFBQVcsQUFBQztBQUN6RSxBQUFPLFNBQUUsQUFBWSxBQUE2QixvQkFBTSxBQUFZLEFBQUM7QUFDckUsQUFBTyxTQUFrQixBQUFLLE9BQUUsQUFBVSxZQUFRLEFBQUksQUFBVSxZQUFNLEFBQWUsQUFBQztBQUN0RixBQUFPLFNBR0wsQUFBb0I7QUFHcEIsQUFBTztBQUNQLEFBQU8sU0FFUCxBQUFZLGNBRVosQUFBWSxjQUNaLEFBQVksY0FDWixBQUFPLEFBQ1IsZUFBTSxBQUFvQixBQUFDO0FBQzVCLEFBQU8sU0FBYyxBQUFjLEFBQWlCLHNCQUFNLEFBQVksQUFBQztBQUt2RSxPQUFPLEFBQUUsQUFBRSxNQUFpQixBQUFlLEFBQUUsdUJBQU0sQUFBVSxBQUFDLEFBRTlELEFBQU0sQUFBQyxBQUFPOzs7QUFRWix3QkFBWSxBQUFnQixBQUFFOztZQUFFLEFBQWdCLHlEQUFHLEFBQUssQUFBRTs7OztBQUZsRCxhQUFVLGFBQTJCLElBQUksQUFBSyxBQUFtQixBQUFDO0FBR3hFLEFBQUksYUFBQyxBQUFHLE1BQUcsQUFBRyxBQUFDO0FBQ2YsQUFBSSxhQUFDLEFBQVMsWUFBRyxBQUFHLElBQUMsQUFBUyxBQUFDO0FBQy9CLEFBQUksYUFBQyxBQUFHLE1BQUcsQUFBRyxJQUFDLEFBQU0sQUFBRSxBQUFDO0FBQ3hCLEFBQUksYUFBQyxBQUFnQixtQkFBRyxBQUFnQixBQUFDLEFBQzNDO0FBQUM7O3lCQUVELEFBQU8sMkJBQUMsQUFBc0IsU0FBRSxBQUF5QjtBQUN2RCxBQUFJLFlBQUUsQUFBVSxBQUFFLGFBQUcsQUFBSSxBQUFDOztBQUUxQixBQUFJLGFBQUMsQUFBRyxJQUFDLEFBQU8sU0FBRSxBQUFPLEFBQUMsQUFBQztBQUUz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QUUsQUFBQyxBQUNwQjtBQUFDOzs4QkFFRCxBQUFhO0FBQ1gsQUFBSSxZQUFFLEFBQU87WUFBRSxBQUFHLEFBQUUsTUFBRyxBQUFJLEFBQUM7O0FBQzVCLEFBQUUsQUFBQyxZQUFDLEFBQU8sQUFBQyxTQUFDLEFBQUksS0FBQyxBQUFPLFVBQUcsQUFBRyxJQUFDLEFBQVEsU0FBQyxBQUFPLEFBQUMsQUFBQztBQUNsRCxBQUFNLGVBQUMsQUFBTyxBQUFDLEFBQ2pCO0FBQUM7OzhCQUVELEFBQWU7QUFDYixBQUFFLEFBQUMsWUFBQyxBQUFJLEtBQUMsQUFBZ0IsQUFBQyxrQkFBQyxBQUFDO0FBQzFCLEFBQUksaUJBQUMsQUFBZ0IsaUJBQUMsQUFBZSxBQUFFLEFBQUMsQUFDMUM7QUFBQyxBQUNIO0FBQUMsQUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjb3BlLCBEeW5hbWljU2NvcGUsIEVudmlyb25tZW50IH0gZnJvbSAnLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgRGVzdHJveWFibGVCb3VuZHMsIGNsZWFyLCBtb3ZlIGFzIG1vdmVCb3VuZHMgfSBmcm9tICcuLi9ib3VuZHMnO1xuaW1wb3J0IHsgRWxlbWVudFN0YWNrLCBUcmFja2VyLCBVcGRhdGFibGVUcmFja2VyIH0gZnJvbSAnLi4vYnVpbGRlcic7XG5pbXBvcnQgeyBPcHRpb24sIE9wYXF1ZSwgU3RhY2ssIExpbmtlZExpc3QsIERpY3QsIGRpY3QsIGV4cGVjdCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHtcbiAgUGF0aFJlZmVyZW5jZSxcbiAgSXRlcmF0aW9uQXJ0aWZhY3RzLFxuICBJdGVyYXRvclN5bmNocm9uaXplcixcbiAgSXRlcmF0b3JTeW5jaHJvbml6ZXJEZWxlZ2F0ZSxcblxuICAvLyBUYWdzXG4gIGNvbWJpbmUsXG4gIFJldmlzaW9uLFxuICBVcGRhdGFibGVUYWcsXG4gIFRhZ1dyYXBwZXIsXG4gIGNvbWJpbmVTbGljZSxcbiAgQ09OU1RBTlRfVEFHLFxuICBJTklUSUFMXG59IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBPcGNvZGVKU09OLCBVcGRhdGluZ09wY29kZSwgVXBkYXRpbmdPcFNlcSB9IGZyb20gJy4uL29wY29kZXMnO1xuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi4vZW52aXJvbm1lbnQvY29uc3RhbnRzJztcbmltcG9ydCB7IERPTUNoYW5nZXMgfSBmcm9tICcuLi9kb20vaGVscGVyJztcbmltcG9ydCAqIGFzIFNpbXBsZSBmcm9tICcuLi9kb20vaW50ZXJmYWNlcyc7XG5cbmltcG9ydCBWTSwgeyBDYXB0dXJlZFN0YWNrLCBFdmFsdWF0aW9uU3RhY2sgfSBmcm9tICcuL2FwcGVuZCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFVwZGF0aW5nVk0ge1xuICBwdWJsaWMgZW52OiBFbnZpcm9ubWVudDtcbiAgcHVibGljIGRvbTogRE9NQ2hhbmdlcztcbiAgcHVibGljIGFsd2F5c1JldmFsaWRhdGU6IGJvb2xlYW47XG4gIHB1YmxpYyBjb25zdGFudHM6IENvbnN0YW50cztcblxuICBwcml2YXRlIGZyYW1lU3RhY2s6IFN0YWNrPFVwZGF0aW5nVk1GcmFtZT4gPSBuZXcgU3RhY2s8VXBkYXRpbmdWTUZyYW1lPigpO1xuXG4gIGNvbnN0cnVjdG9yKGVudjogRW52aXJvbm1lbnQsIHsgYWx3YXlzUmV2YWxpZGF0ZSA9IGZhbHNlIH0pIHtcbiAgICB0aGlzLmVudiA9IGVudjtcbiAgICB0aGlzLmNvbnN0YW50cyA9IGVudi5jb25zdGFudHM7XG4gICAgdGhpcy5kb20gPSBlbnYuZ2V0RE9NKCk7XG4gICAgdGhpcy5hbHdheXNSZXZhbGlkYXRlID0gYWx3YXlzUmV2YWxpZGF0ZTtcbiAgfVxuXG4gIGV4ZWN1dGUob3Bjb2RlczogVXBkYXRpbmdPcFNlcSwgaGFuZGxlcjogRXhjZXB0aW9uSGFuZGxlcikge1xuICAgIGxldCB7IGZyYW1lU3RhY2sgfSA9IHRoaXM7XG5cbiAgICB0aGlzLnRyeShvcGNvZGVzLCBoYW5kbGVyKTtcblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBpZiAoZnJhbWVTdGFjay5pc0VtcHR5KCkpIGJyZWFrO1xuXG4gICAgICBsZXQgb3Bjb2RlID0gdGhpcy5mcmFtZS5uZXh0U3RhdGVtZW50KCk7XG5cbiAgICAgIGlmIChvcGNvZGUgPT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5mcmFtZVN0YWNrLnBvcCgpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgb3Bjb2RlLmV2YWx1YXRlKHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGZyYW1lKCkge1xuICAgIHJldHVybiB0aGlzLmZyYW1lU3RhY2suY3VycmVudDtcbiAgfVxuXG4gIGdvdG8ob3A6IFVwZGF0aW5nT3Bjb2RlKSB7XG4gICAgdGhpcy5mcmFtZS5nb3RvKG9wKTtcbiAgfVxuXG4gIHRyeShvcHM6IFVwZGF0aW5nT3BTZXEsIGhhbmRsZXI6IE9wdGlvbjxFeGNlcHRpb25IYW5kbGVyPikge1xuICAgIHRoaXMuZnJhbWVTdGFjay5wdXNoKG5ldyBVcGRhdGluZ1ZNRnJhbWUodGhpcywgb3BzLCBoYW5kbGVyKSk7XG4gIH1cblxuICB0aHJvdygpIHtcbiAgICB0aGlzLmZyYW1lLmhhbmRsZUV4Y2VwdGlvbigpO1xuICAgIHRoaXMuZnJhbWVTdGFjay5wb3AoKTtcbiAgfVxuXG4gIGV2YWx1YXRlT3Bjb2RlKG9wY29kZTogVXBkYXRpbmdPcGNvZGUpIHtcbiAgICBvcGNvZGUuZXZhbHVhdGUodGhpcyk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeGNlcHRpb25IYW5kbGVyIHtcbiAgaGFuZGxlRXhjZXB0aW9uKCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVk1TdGF0ZSB7XG4gIGVudjogRW52aXJvbm1lbnQ7XG4gIHNjb3BlOiBTY29wZTtcbiAgZHluYW1pY1Njb3BlOiBEeW5hbWljU2NvcGU7XG4gIHN0YWNrOiBDYXB0dXJlZFN0YWNrO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmxvY2tPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSBpbXBsZW1lbnRzIERlc3Ryb3lhYmxlQm91bmRzIHtcbiAgcHVibGljIHR5cGUgPSBcImJsb2NrXCI7XG4gIHB1YmxpYyBuZXh0ID0gbnVsbDtcbiAgcHVibGljIHByZXYgPSBudWxsO1xuICBwdWJsaWMgY2hpbGRyZW46IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+O1xuXG4gIHByb3RlY3RlZCBlbnY6IEVudmlyb25tZW50O1xuICBwcm90ZWN0ZWQgc2NvcGU6IFNjb3BlO1xuICBwcm90ZWN0ZWQgZHluYW1pY1Njb3BlOiBEeW5hbWljU2NvcGU7XG4gIHByb3RlY3RlZCBzdGFjazogQ2FwdHVyZWRTdGFjaztcbiAgcHJvdGVjdGVkIGJvdW5kczogRGVzdHJveWFibGVCb3VuZHM7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHN0YXJ0OiBudW1iZXIsIHN0YXRlOiBWTVN0YXRlLCBib3VuZHM6IERlc3Ryb3lhYmxlQm91bmRzLCBjaGlsZHJlbjogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4pIHtcbiAgICBzdXBlcigpO1xuICAgIGxldCB7IGVudiwgc2NvcGUsIGR5bmFtaWNTY29wZSwgc3RhY2sgfSA9IHN0YXRlO1xuICAgIHRoaXMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgICB0aGlzLmVudiA9IGVudjtcbiAgICB0aGlzLnNjb3BlID0gc2NvcGU7XG4gICAgdGhpcy5keW5hbWljU2NvcGUgPSBkeW5hbWljU2NvcGU7XG4gICAgdGhpcy5zdGFjayA9IHN0YWNrO1xuICAgIHRoaXMuYm91bmRzID0gYm91bmRzO1xuICB9XG5cbiAgYWJzdHJhY3QgZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKCk6IHZvaWQ7XG5cbiAgcGFyZW50RWxlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICB9XG5cbiAgZmlyc3ROb2RlKCkge1xuICAgIHJldHVybiB0aGlzLmJvdW5kcy5maXJzdE5vZGUoKTtcbiAgfVxuXG4gIGxhc3ROb2RlKCkge1xuICAgIHJldHVybiB0aGlzLmJvdW5kcy5sYXN0Tm9kZSgpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICB2bS50cnkodGhpcy5jaGlsZHJlbiwgbnVsbCk7XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIHRoaXMuYm91bmRzLmRlc3Ryb3koKTtcbiAgfVxuXG4gIGRpZERlc3Ryb3koKSB7XG4gICAgdGhpcy5lbnYuZGlkRGVzdHJveSh0aGlzLmJvdW5kcyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRyeU9wY29kZSBleHRlbmRzIEJsb2NrT3Bjb2RlIGltcGxlbWVudHMgRXhjZXB0aW9uSGFuZGxlciB7XG4gIHB1YmxpYyB0eXBlID0gXCJ0cnlcIjtcblxuICBwcml2YXRlIF90YWc6IFRhZ1dyYXBwZXI8VXBkYXRhYmxlVGFnPjtcblxuICBwcm90ZWN0ZWQgYm91bmRzOiBVcGRhdGFibGVUcmFja2VyO1xuXG4gIGNvbnN0cnVjdG9yKHN0YXJ0OiBudW1iZXIsIHN0YXRlOiBWTVN0YXRlLCBib3VuZHM6IFVwZGF0YWJsZVRyYWNrZXIsIGNoaWxkcmVuOiBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPikge1xuICAgIHN1cGVyKHN0YXJ0LCBzdGF0ZSwgYm91bmRzLCBjaGlsZHJlbik7XG4gICAgdGhpcy50YWcgPSB0aGlzLl90YWcgPSBVcGRhdGFibGVUYWcuY3JlYXRlKENPTlNUQU5UX1RBRyk7XG4gIH1cblxuICBkaWRJbml0aWFsaXplQ2hpbGRyZW4oKSB7XG4gICAgdGhpcy5fdGFnLmlubmVyLnVwZGF0ZShjb21iaW5lU2xpY2UodGhpcy5jaGlsZHJlbikpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICB2bS50cnkodGhpcy5jaGlsZHJlbiwgdGhpcyk7XG4gIH1cblxuICBoYW5kbGVFeGNlcHRpb24oKSB7XG4gICAgbGV0IHsgZW52LCBib3VuZHMsIGNoaWxkcmVuLCBzY29wZSwgZHluYW1pY1Njb3BlLCBzdGFydCwgc3RhY2ssIHByZXYsIG5leHQgfSA9IHRoaXM7XG5cbiAgICBjaGlsZHJlbi5jbGVhcigpO1xuXG4gICAgbGV0IGVsZW1lbnRTdGFjayA9IEVsZW1lbnRTdGFjay5yZXN1bWUoXG4gICAgICBlbnYsXG4gICAgICBib3VuZHMsXG4gICAgICBib3VuZHMucmVzZXQoZW52KVxuICAgICk7XG5cbiAgICBsZXQgdm0gPSBuZXcgVk0oZW52LCBzY29wZSwgZHluYW1pY1Njb3BlLCBlbGVtZW50U3RhY2spO1xuXG4gICAgbGV0IHVwZGF0aW5nID0gbmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCk7XG5cbiAgICB2bS5leGVjdXRlKHN0YXJ0LCB2bSA9PiB7XG4gICAgICB2bS5zdGFjayA9IEV2YWx1YXRpb25TdGFjay5yZXN0b3JlKHN0YWNrKTtcbiAgICAgIHZtLnVwZGF0aW5nT3Bjb2RlU3RhY2sucHVzaCh1cGRhdGluZyk7XG4gICAgICB2bS51cGRhdGVXaXRoKHRoaXMpO1xuICAgICAgdm0udXBkYXRpbmdPcGNvZGVTdGFjay5wdXNoKGNoaWxkcmVuKTtcbiAgICB9KTtcblxuICAgIHRoaXMucHJldiA9IHByZXY7XG4gICAgdGhpcy5uZXh0ID0gbmV4dDtcbiAgfVxufVxuXG5jbGFzcyBMaXN0UmV2YWxpZGF0aW9uRGVsZWdhdGUgaW1wbGVtZW50cyBJdGVyYXRvclN5bmNocm9uaXplckRlbGVnYXRlIHtcbiAgcHJpdmF0ZSBtYXA6IERpY3Q8QmxvY2tPcGNvZGU+O1xuICBwcml2YXRlIHVwZGF0aW5nOiBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPjtcblxuICBwcml2YXRlIGRpZEluc2VydCA9IGZhbHNlO1xuICBwcml2YXRlIGRpZERlbGV0ZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgb3Bjb2RlOiBMaXN0QmxvY2tPcGNvZGUsIHByaXZhdGUgbWFya2VyOiBTaW1wbGUuQ29tbWVudCkge1xuICAgIHRoaXMubWFwID0gb3Bjb2RlLm1hcDtcbiAgICB0aGlzLnVwZGF0aW5nID0gb3Bjb2RlWydjaGlsZHJlbiddO1xuICB9XG5cbiAgaW5zZXJ0KGtleTogc3RyaW5nLCBpdGVtOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIG1lbW86IFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgYmVmb3JlOiBzdHJpbmcpIHtcbiAgICBsZXQgeyBtYXAsIG9wY29kZSwgdXBkYXRpbmcgfSA9IHRoaXM7XG4gICAgbGV0IG5leHRTaWJsaW5nOiBPcHRpb248U2ltcGxlLk5vZGU+ID0gbnVsbDtcbiAgICBsZXQgcmVmZXJlbmNlOiBPcHRpb248QmxvY2tPcGNvZGU+ID0gbnVsbDtcblxuICAgIGlmIChiZWZvcmUpIHtcbiAgICAgIHJlZmVyZW5jZSA9IG1hcFtiZWZvcmVdO1xuICAgICAgbmV4dFNpYmxpbmcgPSByZWZlcmVuY2VbJ2JvdW5kcyddLmZpcnN0Tm9kZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXh0U2libGluZyA9IHRoaXMubWFya2VyO1xuICAgIH1cblxuICAgIGxldCB2bSA9IG9wY29kZS52bUZvckluc2VydGlvbihuZXh0U2libGluZyk7XG4gICAgbGV0IHRyeU9wY29kZTogT3B0aW9uPFRyeU9wY29kZT4gPSBudWxsO1xuXG4gICAgbGV0IHsgc3RhcnQgfSA9IG9wY29kZTtcblxuICAgIHZtLmV4ZWN1dGUoc3RhcnQsIHZtID0+IHtcbiAgICAgIG1hcFtrZXldID0gdHJ5T3Bjb2RlID0gdm0uaXRlcmF0ZShtZW1vLCBpdGVtKTtcbiAgICAgIHZtLnVwZGF0aW5nT3Bjb2RlU3RhY2sucHVzaChuZXcgTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4oKSk7XG4gICAgICB2bS51cGRhdGVXaXRoKHRyeU9wY29kZSk7XG4gICAgICB2bS51cGRhdGluZ09wY29kZVN0YWNrLnB1c2godHJ5T3Bjb2RlLmNoaWxkcmVuKTtcbiAgICB9KTtcblxuICAgIHVwZGF0aW5nLmluc2VydEJlZm9yZSh0cnlPcGNvZGUhLCByZWZlcmVuY2UpO1xuXG4gICAgdGhpcy5kaWRJbnNlcnQgPSB0cnVlO1xuICB9XG5cbiAgcmV0YWluKF9rZXk6IHN0cmluZywgX2l0ZW06IFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgX21lbW86IFBhdGhSZWZlcmVuY2U8T3BhcXVlPikge1xuICB9XG5cbiAgbW92ZShrZXk6IHN0cmluZywgX2l0ZW06IFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgX21lbW86IFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgYmVmb3JlOiBzdHJpbmcpIHtcbiAgICBsZXQgeyBtYXAsIHVwZGF0aW5nIH0gPSB0aGlzO1xuXG4gICAgbGV0IGVudHJ5ID0gbWFwW2tleV07XG4gICAgbGV0IHJlZmVyZW5jZSA9IG1hcFtiZWZvcmVdIHx8IG51bGw7XG5cbiAgICBpZiAoYmVmb3JlKSB7XG4gICAgICBtb3ZlQm91bmRzKGVudHJ5LCByZWZlcmVuY2UuZmlyc3ROb2RlKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBtb3ZlQm91bmRzKGVudHJ5LCB0aGlzLm1hcmtlcik7XG4gICAgfVxuXG4gICAgdXBkYXRpbmcucmVtb3ZlKGVudHJ5KTtcbiAgICB1cGRhdGluZy5pbnNlcnRCZWZvcmUoZW50cnksIHJlZmVyZW5jZSk7XG4gIH1cblxuICBkZWxldGUoa2V5OiBzdHJpbmcpIHtcbiAgICBsZXQgeyBtYXAgfSA9IHRoaXM7XG4gICAgbGV0IG9wY29kZSA9IG1hcFtrZXldO1xuICAgIG9wY29kZS5kaWREZXN0cm95KCk7XG4gICAgY2xlYXIob3Bjb2RlKTtcbiAgICB0aGlzLnVwZGF0aW5nLnJlbW92ZShvcGNvZGUpO1xuICAgIGRlbGV0ZSBtYXBba2V5XTtcblxuICAgIHRoaXMuZGlkRGVsZXRlID0gdHJ1ZTtcbiAgfVxuXG4gIGRvbmUoKSB7XG4gICAgdGhpcy5vcGNvZGUuZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKHRoaXMuZGlkSW5zZXJ0IHx8IHRoaXMuZGlkRGVsZXRlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGlzdEJsb2NrT3Bjb2RlIGV4dGVuZHMgQmxvY2tPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwibGlzdC1ibG9ja1wiO1xuICBwdWJsaWMgbWFwID0gZGljdDxCbG9ja09wY29kZT4oKTtcbiAgcHVibGljIGFydGlmYWN0czogSXRlcmF0aW9uQXJ0aWZhY3RzO1xuXG4gIHByaXZhdGUgbGFzdEl0ZXJhdGVkOiBSZXZpc2lvbiA9IElOSVRJQUw7XG4gIHByaXZhdGUgX3RhZzogVGFnV3JhcHBlcjxVcGRhdGFibGVUYWc+O1xuXG4gIGNvbnN0cnVjdG9yKHN0YXJ0OiBudW1iZXIsIHN0YXRlOiBWTVN0YXRlLCBib3VuZHM6IFRyYWNrZXIsIGNoaWxkcmVuOiBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPiwgYXJ0aWZhY3RzOiBJdGVyYXRpb25BcnRpZmFjdHMpIHtcbiAgICBzdXBlcihzdGFydCwgc3RhdGUsIGJvdW5kcywgY2hpbGRyZW4pO1xuICAgIHRoaXMuYXJ0aWZhY3RzID0gYXJ0aWZhY3RzO1xuICAgIGxldCBfdGFnID0gdGhpcy5fdGFnID0gVXBkYXRhYmxlVGFnLmNyZWF0ZShDT05TVEFOVF9UQUcpO1xuICAgIHRoaXMudGFnID0gY29tYmluZShbYXJ0aWZhY3RzLnRhZywgX3RhZ10pO1xuICB9XG5cbiAgZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKGxpc3REaWRDaGFuZ2UgPSB0cnVlKSB7XG4gICAgdGhpcy5sYXN0SXRlcmF0ZWQgPSB0aGlzLmFydGlmYWN0cy50YWcudmFsdWUoKTtcblxuICAgIGlmIChsaXN0RGlkQ2hhbmdlKSB7XG4gICAgICB0aGlzLl90YWcuaW5uZXIudXBkYXRlKGNvbWJpbmVTbGljZSh0aGlzLmNoaWxkcmVuKSk7XG4gICAgfVxuICB9XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICBsZXQgeyBhcnRpZmFjdHMsIGxhc3RJdGVyYXRlZCB9ID0gdGhpcztcblxuICAgIGlmICghYXJ0aWZhY3RzLnRhZy52YWxpZGF0ZShsYXN0SXRlcmF0ZWQpKSB7XG4gICAgICBsZXQgeyBib3VuZHMgfSA9IHRoaXM7XG4gICAgICBsZXQgeyBkb20gfSA9IHZtO1xuXG4gICAgICBsZXQgbWFya2VyID0gZG9tLmNyZWF0ZUNvbW1lbnQoJycpO1xuICAgICAgZG9tLmluc2VydEFmdGVyKGJvdW5kcy5wYXJlbnRFbGVtZW50KCksIG1hcmtlciwgYm91bmRzLmxhc3ROb2RlKCkpO1xuXG4gICAgICBsZXQgdGFyZ2V0ID0gbmV3IExpc3RSZXZhbGlkYXRpb25EZWxlZ2F0ZSh0aGlzLCBtYXJrZXIpO1xuICAgICAgbGV0IHN5bmNocm9uaXplciA9IG5ldyBJdGVyYXRvclN5bmNocm9uaXplcih7IHRhcmdldCwgYXJ0aWZhY3RzIH0pO1xuXG4gICAgICBzeW5jaHJvbml6ZXIuc3luYygpO1xuXG4gICAgICB0aGlzLnBhcmVudEVsZW1lbnQoKS5yZW1vdmVDaGlsZChtYXJrZXIpO1xuICAgIH1cblxuICAgIC8vIFJ1biBub3ctdXBkYXRlZCB1cGRhdGluZyBvcGNvZGVzXG4gICAgc3VwZXIuZXZhbHVhdGUodm0pO1xuICB9XG5cbiAgdm1Gb3JJbnNlcnRpb24obmV4dFNpYmxpbmc6IE9wdGlvbjxTaW1wbGUuTm9kZT4pOiBWTSB7XG4gICAgbGV0IHsgZW52LCBzY29wZSwgZHluYW1pY1Njb3BlIH0gPSB0aGlzO1xuXG4gICAgbGV0IGVsZW1lbnRTdGFjayA9IEVsZW1lbnRTdGFjay5mb3JJbml0aWFsUmVuZGVyKFxuICAgICAgdGhpcy5lbnYsXG4gICAgICB0aGlzLmJvdW5kcy5wYXJlbnRFbGVtZW50KCksXG4gICAgICBuZXh0U2libGluZ1xuICAgICk7XG5cbiAgICByZXR1cm4gbmV3IFZNKGVudiwgc2NvcGUsIGR5bmFtaWNTY29wZSwgZWxlbWVudFN0YWNrKTtcbiAgfVxufVxuXG5jbGFzcyBVcGRhdGluZ1ZNRnJhbWUge1xuICBwcml2YXRlIGN1cnJlbnQ6IE9wdGlvbjxVcGRhdGluZ09wY29kZT47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB2bTogVXBkYXRpbmdWTSwgcHJpdmF0ZSBvcHM6IFVwZGF0aW5nT3BTZXEsIHByaXZhdGUgZXhjZXB0aW9uSGFuZGxlcjogT3B0aW9uPEV4Y2VwdGlvbkhhbmRsZXI+KSB7XG4gICAgdGhpcy52bSA9IHZtO1xuICAgIHRoaXMub3BzID0gb3BzO1xuICAgIHRoaXMuY3VycmVudCA9IG9wcy5oZWFkKCk7XG4gIH1cblxuICBnb3RvKG9wOiBVcGRhdGluZ09wY29kZSkge1xuICAgIHRoaXMuY3VycmVudCA9IG9wO1xuICB9XG5cbiAgbmV4dFN0YXRlbWVudCgpOiBPcHRpb248VXBkYXRpbmdPcGNvZGU+IHtcbiAgICBsZXQgeyBjdXJyZW50LCBvcHMgfSA9IHRoaXM7XG4gICAgaWYgKGN1cnJlbnQpIHRoaXMuY3VycmVudCA9IG9wcy5uZXh0Tm9kZShjdXJyZW50KTtcbiAgICByZXR1cm4gY3VycmVudDtcbiAgfVxuXG4gIGhhbmRsZUV4Y2VwdGlvbigpIHtcbiAgICBpZiAodGhpcy5leGNlcHRpb25IYW5kbGVyKSB7XG4gICAgICB0aGlzLmV4Y2VwdGlvbkhhbmRsZXIuaGFuZGxlRXhjZXB0aW9uKCk7XG4gICAgfVxuICB9XG59XG4iXX0=

@@ -9,3 +9,3 @@ import './lib/bootstrap';

export { AttributeManager as IAttributeManager, AttributeManager, PropertyManager, INPUT_VALUE_PROPERTY_MANAGER, defaultManagers, defaultAttributeManagers, defaultPropertyManagers, readDOMAttr } from './lib/dom/attribute-managers';
export { Register, debugSlice } from './lib/opcodes';
export { Register } from './lib/opcodes';
export { normalizeTextValue } from './lib/compiled/opcodes/content';

@@ -12,0 +12,0 @@ export { setDebuggerCallback, resetDebuggerCallback, DebugCallback } from './lib/compiled/opcodes/debugger';

@@ -1,2 +0,2 @@

import { OpcodeJSON, UpdatingOpcode } from '../../opcodes';
import { UpdatingOpcode } from '../../opcodes';
import { UpdatingVM } from '../../vm';

@@ -20,3 +20,2 @@ import { Component, ComponentManager, ComponentDefinition } from '../../component/interfaces';

evaluate(_vm: UpdatingVM): void;
toJSON(): OpcodeJSON;
}

@@ -23,0 +22,0 @@ export declare class DidUpdateLayoutOpcode extends UpdatingOpcode {

@@ -1,6 +0,6 @@

import { OpcodeJSON, UpdatingOpcode } from '../../opcodes';
import { UpdatingOpcode } from '../../opcodes';
import { VM, UpdatingVM } from '../../vm';
import * as Simple from '../../dom/interfaces';
import { Environment } from '../../environment';
import { Option, Opaque, Dict } from '@glimmer/util';
import { Option, Opaque } from '@glimmer/util';
import { Reference, Tag, PathReference } from '@glimmer/reference';

@@ -46,3 +46,2 @@ import { ModifierManager } from '../../modifier/interfaces';

evaluate(vm: UpdatingVM): void;
toJSON(): OpcodeJSON;
}

@@ -72,3 +71,2 @@ export interface Attribute {

flush(env: Environment): Option<UpdatingOpcode>;
toJSON(): Dict<Option<string>>;
}

@@ -80,3 +78,2 @@ export declare class PatchElementOpcode extends UpdatingOpcode {

evaluate(vm: UpdatingVM): void;
toJSON(): OpcodeJSON;
}
import { CompiledDynamicTemplate } from '../blocks';
import { OpcodeJSON, UpdatingOpcode } from '../../opcodes';
import { UpdatingOpcode } from '../../opcodes';
import { UpdatingVM, VM } from '../../vm';

@@ -21,3 +21,2 @@ import { SymbolTable } from '@glimmer/interfaces';

evaluate(vm: UpdatingVM): void;
toJSON(): OpcodeJSON;
}

@@ -31,3 +30,2 @@ export declare class JumpIfNotModifiedOpcode extends UpdatingOpcode {

didModify(): void;
toJSON(): OpcodeJSON;
}

@@ -50,3 +48,2 @@ export declare class DidModifyOpcode extends UpdatingOpcode {

inspect(): string;
toJSON(): OpcodeJSON;
}
import { Option, Dict, Slice as ListSlice } from '@glimmer/util';
import { Tag } from '@glimmer/reference';
import { VM, UpdatingVM } from './vm';
import { Opcode, Environment } from './environment';
import { Opcode } from './environment';
export interface OpcodeJSON {

@@ -785,3 +785,2 @@ type: number | string;

}
export declare function debugSlice(env: Environment, start: number, end: number): void;
export declare type Operand1 = number;

@@ -801,3 +800,2 @@ export declare type Operand2 = number;

constructor();
toJSON(): OpcodeJSON;
}

@@ -811,2 +809,1 @@ export declare abstract class UpdatingOpcode extends AbstractOpcode {

export declare type UpdatingOpSeq = ListSlice<UpdatingOpcode>;
export declare function inspect(opcodes: ReadonlyArray<AbstractOpcode>): string;

@@ -22,5 +22,2 @@ import { CompiledDynamicTemplate, CompiledStaticTemplate } from './compiled/blocks';

compileDynamic(env: Environment): CompiledDynamicTemplate<S>;
toJSON(): {
GlimmerDebug: string;
};
}

@@ -27,0 +24,0 @@ export declare type Template = CompilableTemplate<SymbolTable>;

@@ -27,5 +27,2 @@ import { CompiledDynamicProgram } from '../compiled/blocks';

invoke(vm: VM, layout: Option<CompiledDynamicProgram>): void;
toJSON(): {
GlimmerDebug: string;
};
}

@@ -32,0 +29,0 @@ export declare class PartialInvoker implements DynamicInvoker<ProgramSymbolTable> {

@@ -6,3 +6,3 @@ import { Scope, DynamicScope, Environment } from '../environment';

import { IterationArtifacts } from '@glimmer/reference';
import { OpcodeJSON, UpdatingOpcode, UpdatingOpSeq } from '../opcodes';
import { UpdatingOpcode, UpdatingOpSeq } from '../opcodes';
import { Constants } from '../environment/constants';

@@ -56,3 +56,2 @@ import { DOMChanges } from '../dom/helper';

didDestroy(): void;
toJSON(): OpcodeJSON;
}

@@ -67,3 +66,2 @@ export declare class TryOpcode extends BlockOpcode implements ExceptionHandler {

handleException(): void;
toJSON(): OpcodeJSON;
}

@@ -80,3 +78,2 @@ export declare class ListBlockOpcode extends BlockOpcode {

vmForInsertion(nextSibling: Option<Simple.Node>): VM;
toJSON(): OpcodeJSON;
}
{
"name": "@glimmer/runtime",
"version": "0.23.0-alpha.10",
"version": "0.23.0-alpha.11",
"description": "Minimal runtime needed to render Glimmer templates",

@@ -8,8 +8,8 @@ "repository": "https://github.com/tildeio/glimmer/tree/master/packages/@glimmer/runtime",

"dependencies": {
"@glimmer/util": "^0.23.0-alpha.10",
"@glimmer/reference": "^0.23.0-alpha.10",
"@glimmer/object": "^0.23.0-alpha.10",
"@glimmer/object-reference": "^0.23.0-alpha.10",
"@glimmer/wire-format": "^0.23.0-alpha.10",
"@glimmer/interfaces": "^0.23.0-alpha.10"
"@glimmer/util": "^0.23.0-alpha.11",
"@glimmer/reference": "^0.23.0-alpha.11",
"@glimmer/object": "^0.23.0-alpha.11",
"@glimmer/object-reference": "^0.23.0-alpha.11",
"@glimmer/wire-format": "^0.23.0-alpha.11",
"@glimmer/interfaces": "^0.23.0-alpha.11"
},

@@ -16,0 +16,0 @@ "devDependencies": {

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

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

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

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

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

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

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

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

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

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