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.17 to 0.23.0-alpha.18

dist/commonjs/es2017/lib/utils.js

25

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.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.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;

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

var _scanner = require('./lib/scanner');
Object.defineProperty(exports, 'ClientSide', {
enumerable: true,
get: function () {
return _scanner.ClientSide;
}
});
Object.defineProperty(exports, 'CompilableTemplate', {
enumerable: true,
get: function () {
return _scanner.CompilableTemplate;
}
});
Object.defineProperty(exports, 'compileStatement', {
enumerable: true,
get: function () {
return _scanner.compileStatement;
}
});
var _vm = require('./lib/vm');

@@ -330,2 +351,2 @@

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

4

dist/commonjs/es2017/lib/compiled/expressions/concat.js

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

function castToString(value) {
if (typeof value.toString !== 'function') {
if (typeof value['toString'] !== 'function') {
return '';

@@ -38,2 +38,2 @@ }

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9leHByZXNzaW9ucy9jb25jYXQuanMiXSwibmFtZXMiOlsiQ29uY2F0UmVmZXJlbmNlIiwiY29uc3RydWN0b3IiLCJwYXJ0cyIsInRhZyIsImNvbXB1dGUiLCJBcnJheSIsImkiLCJsZW5ndGgiLCJ2YWx1ZSIsInVuZGVmaW5lZCIsImNhc3RUb1N0cmluZyIsImpvaW4iLCJ0b1N0cmluZyIsIlN0cmluZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNPLE1BQU1BLGVBQU4sb0NBQThDO0FBQ2pEQyxnQkFBWUMsS0FBWixFQUFtQjtBQUNmO0FBQ0EsYUFBS0EsS0FBTCxHQUFhQSxLQUFiO0FBQ0EsYUFBS0MsR0FBTCxHQUFXLDhCQUFjRCxLQUFkLENBQVg7QUFDSDtBQUNERSxjQUFVO0FBQ04sWUFBSUYsUUFBUSxJQUFJRyxLQUFKLEVBQVo7QUFDQSxhQUFLLElBQUlDLElBQUksQ0FBYixFQUFnQkEsSUFBSSxLQUFLSixLQUFMLENBQVdLLE1BQS9CLEVBQXVDRCxHQUF2QyxFQUE0QztBQUN4QyxnQkFBSUUsUUFBUSxLQUFLTixLQUFMLENBQVdJLENBQVgsRUFBY0UsS0FBZCxFQUFaO0FBQ0EsZ0JBQUlBLFVBQVUsSUFBVixJQUFrQkEsVUFBVUMsU0FBaEMsRUFBMkM7QUFDdkNQLHNCQUFNSSxDQUFOLElBQVdJLGFBQWFGLEtBQWIsQ0FBWDtBQUNIO0FBQ0o7QUFDRCxZQUFJTixNQUFNSyxNQUFOLEdBQWUsQ0FBbkIsRUFBc0I7QUFDbEIsbUJBQU9MLE1BQU1TLElBQU4sQ0FBVyxFQUFYLENBQVA7QUFDSDtBQUNELGVBQU8sSUFBUDtBQUNIO0FBbEJnRDtRQUF4Q1gsZSxHQUFBQSxlO0FBb0JiLFNBQVNVLFlBQVQsQ0FBc0JGLEtBQXRCLEVBQTZCO0FBQ3pCLFFBQUksT0FBT0EsTUFBTUksUUFBYixLQUEwQixVQUE5QixFQUEwQztBQUN0QyxlQUFPLEVBQVA7QUFDSDtBQUNELFdBQU9DLE9BQU9MLEtBQVAsQ0FBUDtBQUNIIiwiZmlsZSI6ImxpYi9jb21waWxlZC9leHByZXNzaW9ucy9jb25jYXQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDYWNoZWRSZWZlcmVuY2UsIGNvbWJpbmVUYWdnZWQgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuZXhwb3J0IGNsYXNzIENvbmNhdFJlZmVyZW5jZSBleHRlbmRzIENhY2hlZFJlZmVyZW5jZSB7XG4gICAgY29uc3RydWN0b3IocGFydHMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5wYXJ0cyA9IHBhcnRzO1xuICAgICAgICB0aGlzLnRhZyA9IGNvbWJpbmVUYWdnZWQocGFydHMpO1xuICAgIH1cbiAgICBjb21wdXRlKCkge1xuICAgICAgICBsZXQgcGFydHMgPSBuZXcgQXJyYXkoKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLnBhcnRzW2ldLnZhbHVlKCk7XG4gICAgICAgICAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHBhcnRzW2ldID0gY2FzdFRvU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocGFydHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnRzLmpvaW4oJycpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGNhc3RUb1N0cmluZyh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUudG9TdHJpbmcgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn0iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9leHByZXNzaW9ucy9jb25jYXQuanMiXSwibmFtZXMiOlsiQ29uY2F0UmVmZXJlbmNlIiwiY29uc3RydWN0b3IiLCJwYXJ0cyIsInRhZyIsImNvbXB1dGUiLCJBcnJheSIsImkiLCJsZW5ndGgiLCJ2YWx1ZSIsInVuZGVmaW5lZCIsImNhc3RUb1N0cmluZyIsImpvaW4iLCJTdHJpbmciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDTyxNQUFNQSxlQUFOLG9DQUE4QztBQUNqREMsZ0JBQVlDLEtBQVosRUFBbUI7QUFDZjtBQUNBLGFBQUtBLEtBQUwsR0FBYUEsS0FBYjtBQUNBLGFBQUtDLEdBQUwsR0FBVyw4QkFBY0QsS0FBZCxDQUFYO0FBQ0g7QUFDREUsY0FBVTtBQUNOLFlBQUlGLFFBQVEsSUFBSUcsS0FBSixFQUFaO0FBQ0EsYUFBSyxJQUFJQyxJQUFJLENBQWIsRUFBZ0JBLElBQUksS0FBS0osS0FBTCxDQUFXSyxNQUEvQixFQUF1Q0QsR0FBdkMsRUFBNEM7QUFDeEMsZ0JBQUlFLFFBQVEsS0FBS04sS0FBTCxDQUFXSSxDQUFYLEVBQWNFLEtBQWQsRUFBWjtBQUNBLGdCQUFJQSxVQUFVLElBQVYsSUFBa0JBLFVBQVVDLFNBQWhDLEVBQTJDO0FBQ3ZDUCxzQkFBTUksQ0FBTixJQUFXSSxhQUFhRixLQUFiLENBQVg7QUFDSDtBQUNKO0FBQ0QsWUFBSU4sTUFBTUssTUFBTixHQUFlLENBQW5CLEVBQXNCO0FBQ2xCLG1CQUFPTCxNQUFNUyxJQUFOLENBQVcsRUFBWCxDQUFQO0FBQ0g7QUFDRCxlQUFPLElBQVA7QUFDSDtBQWxCZ0Q7UUFBeENYLGUsR0FBQUEsZTtBQW9CYixTQUFTVSxZQUFULENBQXNCRixLQUF0QixFQUE2QjtBQUN6QixRQUFJLE9BQU9BLE1BQU0sVUFBTixDQUFQLEtBQTZCLFVBQWpDLEVBQTZDO0FBQ3pDLGVBQU8sRUFBUDtBQUNIO0FBQ0QsV0FBT0ksT0FBT0osS0FBUCxDQUFQO0FBQ0giLCJmaWxlIjoibGliL2NvbXBpbGVkL2V4cHJlc3Npb25zL2NvbmNhdC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENhY2hlZFJlZmVyZW5jZSwgY29tYmluZVRhZ2dlZCB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5leHBvcnQgY2xhc3MgQ29uY2F0UmVmZXJlbmNlIGV4dGVuZHMgQ2FjaGVkUmVmZXJlbmNlIHtcbiAgICBjb25zdHJ1Y3RvcihwYXJ0cykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnBhcnRzID0gcGFydHM7XG4gICAgICAgIHRoaXMudGFnID0gY29tYmluZVRhZ2dlZChwYXJ0cyk7XG4gICAgfVxuICAgIGNvbXB1dGUoKSB7XG4gICAgICAgIGxldCBwYXJ0cyA9IG5ldyBBcnJheSgpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IHRoaXMucGFydHNbaV0udmFsdWUoKTtcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcGFydHNbaV0gPSBjYXN0VG9TdHJpbmcodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJ0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFydHMuam9pbignJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufVxuZnVuY3Rpb24gY2FzdFRvU3RyaW5nKHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZVsndG9TdHJpbmcnXSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xufSJdfQ==

@@ -8,28 +8,24 @@ 'use strict';

var _util = require('@glimmer/util');
var _content = require('./content');
var _compiler = require('../../compiler');
var content = _interopRequireWildcard(_content);
var _opcodes = require('../../opcodes');
var _vm = require('./vm');
var _functions = require('../../syntax/functions');
var vm = _interopRequireWildcard(_vm);
var _rawBlock = require('../../syntax/raw-block');
var _opcodes = require('../../opcodes');
var _rawBlock2 = _interopRequireDefault(_rawBlock);
var _util = require('@glimmer/util');
var _content = require('../opcodes/content');
var _compiler = require('../../compiler');
var _content2 = require('./content');
var _scanner = require('../../scanner');
var content = _interopRequireWildcard(_content2);
var _functions = require('../../syntax/functions');
var _vm = require('./vm');
var _content2 = require('../opcodes/content');
var vm = _interopRequireWildcard(_vm);
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
class Labels {

@@ -81,3 +77,3 @@ constructor() {

pushArgs(positional, synthetic) {
this.push(58 /* PushArgs */, positional, synthetic === true ? 1 : 0);
this.push(58 /* PushArgs */, positional, synthetic | 0);
}

@@ -109,3 +105,3 @@ // helpers

createComponent(state, hasDefault, hasInverse) {
let flag = (hasDefault === true ? 1 : 0) | (hasInverse === true ? 1 : 0) << 1;
let flag = hasDefault | 0 | (hasInverse | 0) << 1;
this.push(60 /* CreateComponent */, flag, state);

@@ -186,7 +182,7 @@ }

let namespace = this.constants.string(_namespace);
this.push(31 /* DynamicAttrNS */, name, namespace, trusting === true ? 1 : 0);
this.push(31 /* DynamicAttrNS */, name, namespace, trusting | 0);
}
dynamicAttr(_name, trusting) {
let name = this.constants.string(_name);
this.push(30 /* DynamicAttr */, name, trusting === true ? 1 : 0);
this.push(30 /* DynamicAttr */, name, trusting | 0);
}

@@ -263,3 +259,3 @@ comment(_comment) {

pushRootScope(symbols, bindCallerScope) {
this.push(19 /* RootScope */, symbols, bindCallerScope ? 1 : 0);
this.push(19 /* RootScope */, symbols, bindCallerScope | 0);
}

@@ -396,7 +392,3 @@ pushChildScope() {

names(_names) {
let names = [];
for (let i = 0; i < _names.length; i++) {
let n = _names[i];
names[i] = this.constants.string(n);
}
let names = _names.map(n => this.constants.string(n));
return this.constants.array(names);

@@ -419,3 +411,3 @@ }

function isCompilableExpression(expr) {
return typeof expr === 'object' && expr !== null && typeof expr.compile === 'function';
return expr && typeof expr['compile'] === 'function';
}

@@ -430,5 +422,3 @@ class OpcodeBuilder extends BasicOpcodeBuilder {

if (params) {
for (let i = 0; i < params.length; i++) {
(0, _functions.expr)(params[i], this);
}
params.forEach(p => (0, _functions.expr)(p, this));
positional = params.length;

@@ -439,6 +429,3 @@ }

names = hash[0];
let val = hash[1];
for (let i = 0; i < val.length; i++) {
(0, _functions.expr)(val[i], this);
}
hash[1].forEach(v => (0, _functions.expr)(v, this));
}

@@ -462,3 +449,3 @@ this.pushImmediate(names);

this.test(reference => {
return _content.IsComponentDefinitionReference.create(reference);
return _content2.IsComponentDefinitionReference.create(reference);
});

@@ -483,2 +470,10 @@ this.enter(2);

}
guardedCautiousAppend(expression) {
(0, _functions.expr)(expression, this);
this.dynamicContent(new content.GuardedCautiousAppendOpcode());
}
guardedTrustingAppend(expression) {
(0, _functions.expr)(expression, this);
this.dynamicContent(new content.GuardedTrustingAppendOpcode());
}
invokeComponent(attrs, params, hash, block, inverse = null) {

@@ -508,6 +503,6 @@ this.initializeComponentState();

if (!block) return null;
return new _rawBlock2.default(this.meta, block.statements, block.parameters);
return new _scanner.RawInlineBlock(this.env, this.meta, block.statements, block.parameters);
}
}
exports.default = OpcodeBuilder;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2J1aWxkZXIuanMiXSwibmFtZXMiOlsiY29udGVudCIsInZtIiwiTGFiZWxzIiwiY29uc3RydWN0b3IiLCJsYWJlbHMiLCJ0YXJnZXRzIiwibGFiZWwiLCJuYW1lIiwiaW5kZXgiLCJ0YXJnZXQiLCJhdCIsIlRhcmdldCIsInB1c2giLCJwYXRjaCIsIm9wY29kZXMiLCJzZXQiLCJCYXNpY09wY29kZUJ1aWxkZXIiLCJlbnYiLCJtZXRhIiwicHJvZ3JhbSIsImxhYmVsc1N0YWNrIiwiY29uc3RhbnRzIiwic3RhcnQiLCJuZXh0IiwicG9zIiwiY3VycmVudCIsIm5leHRQb3MiLCJ1cHZhcnMiLCJjb3VudCIsInJlc2VydmUiLCJvcDEiLCJvcDIiLCJvcDMiLCJmaW5hbGl6ZSIsInB1c2hBcmdzIiwicG9zaXRpb25hbCIsInN5bnRoZXRpYyIsInN0YXJ0TGFiZWxzIiwic3RvcExhYmVscyIsInBvcCIsInB1c2hDb21wb25lbnRNYW5hZ2VyIiwiZGVmaW5pdGlvbiIsIm90aGVyIiwicHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyIiwiaW5pdGlhbGl6ZUNvbXBvbmVudFN0YXRlIiwicHJlcGFyZUFyZ3MiLCJzdGF0ZSIsImNyZWF0ZUNvbXBvbmVudCIsImhhc0RlZmF1bHQiLCJoYXNJbnZlcnNlIiwiZmxhZyIsInJlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvciIsImJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24iLCJjb21taXRDb21wb25lbnRUcmFuc2FjdGlvbiIsInB1c2hDb21wb25lbnRPcGVyYXRpb25zIiwiZ2V0Q29tcG9uZW50U2VsZiIsImdldENvbXBvbmVudExheW91dCIsImRpZENyZWF0ZUVsZW1lbnQiLCJkaWRSZW5kZXJMYXlvdXQiLCJnZXRQYXJ0aWFsVGVtcGxhdGUiLCJyZXNvbHZlTWF5YmVMb2NhbCIsInN0cmluZyIsImRlYnVnZ2VyIiwic3ltYm9scyIsImV2YWxJbmZvIiwiYXJyYXkiLCJkeW5hbWljQ29udGVudCIsIk9wY29kZSIsImNhdXRpb3VzQXBwZW5kIiwiT3B0aW1pemVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUiLCJ0cnVzdGluZ0FwcGVuZCIsIk9wdGltaXplZFRydXN0aW5nQXBwZW5kT3Bjb2RlIiwidGV4dCIsIm9wZW5QcmltaXRpdmVFbGVtZW50IiwidGFnIiwib3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucyIsIm9wZW5EeW5hbWljRWxlbWVudCIsImZsdXNoRWxlbWVudCIsImNsb3NlRWxlbWVudCIsInN0YXRpY0F0dHIiLCJfbmFtZSIsIl9uYW1lc3BhY2UiLCJfdmFsdWUiLCJuYW1lc3BhY2UiLCJ2YWx1ZSIsImR5bmFtaWNBdHRyTlMiLCJ0cnVzdGluZyIsImR5bmFtaWNBdHRyIiwiY29tbWVudCIsIl9jb21tZW50IiwibW9kaWZpZXIiLCJfZGVmaW5pdGlvbiIsInB1dEl0ZXJhdG9yIiwiZW50ZXJMaXN0IiwiZXhpdExpc3QiLCJpdGVyYXRlIiwiYnJlYWtzIiwic2V0VmFyaWFibGUiLCJzeW1ib2wiLCJnZXRWYXJpYWJsZSIsImdldFByb3BlcnR5Iiwia2V5IiwiZ2V0QmxvY2siLCJoYXNCbG9jayIsImhhc0Jsb2NrUGFyYW1zIiwiY29uY2F0Iiwic2l6ZSIsImZ1bmN0aW9uIiwiZiIsImZ1bmMiLCJsb2FkIiwicmVnaXN0ZXIiLCJmZXRjaCIsImR1cCIsInNwIiwib2Zmc2V0IiwicHVzaFJlbW90ZUVsZW1lbnQiLCJwb3BSZW1vdGVFbGVtZW50IiwicHVzaFJvb3RTY29wZSIsImJpbmRDYWxsZXJTY29wZSIsInB1c2hDaGlsZFNjb3BlIiwicG9wU2NvcGUiLCJyZXR1cm5UbyIsInJhIiwicHVzaER5bmFtaWNTY29wZSIsInBvcER5bmFtaWNTY29wZSIsInB1c2hJbW1lZGlhdGUiLCJwcmltaXRpdmUiLCJfcHJpbWl0aXZlIiwiRXJyb3IiLCJoZWxwZXIiLCJwdXNoQmxvY2siLCJibG9jayIsImJpbmREeW5hbWljU2NvcGUiLCJfbmFtZXMiLCJuYW1lcyIsImVudGVyIiwiYXJncyIsImV4aXQiLCJyZXR1cm4iLCJwdXNoRnJhbWUiLCJwb3BGcmFtZSIsImNvbXBpbGVEeW5hbWljQmxvY2siLCJpbnZva2VEeW5hbWljIiwiaW52b2tlciIsImludm9rZVN0YXRpYyIsImNhbGxlckNvdW50IiwicGFyYW1ldGVycyIsInN5bWJvbFRhYmxlIiwiY2FsbGVlQ291bnQiLCJsZW5ndGgiLCJNYXRoIiwibWluIiwiaSIsImZwIiwiX2Jsb2NrIiwidGVzdCIsInRlc3RGdW5jIiwiX2Z1bmMiLCJDb25zdFRlc3QiLCJTaW1wbGVUZXN0IiwiRW52aXJvbm1lbnRUZXN0IiwianVtcCIsImp1bXBJZiIsImp1bXBVbmxlc3MiLCJfc3RyaW5nIiwibiIsImlzQ29tcGlsYWJsZUV4cHJlc3Npb24iLCJleHByIiwiY29tcGlsZSIsIk9wY29kZUJ1aWxkZXIiLCJjb21wb25lbnQiLCJjb21waWxlQXJncyIsInBhcmFtcyIsImhhc2giLCJ2YWwiLCJndWFyZGVkQXBwZW5kIiwiZXhwcmVzc2lvbiIsInJlZmVyZW5jZSIsImNyZWF0ZSIsImludm9rZUNvbXBvbmVudCIsImF0dHJzIiwiaW52ZXJzZSIsInMwIiwic2NhbiIsInRlbXBsYXRlIiwic3RhdGVtZW50cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7O0FBQ0E7O0FBQ0E7O0lBQVlBLE87O0FBQ1o7O0lBQVlDLEU7Ozs7OztBQUNaLE1BQU1DLE1BQU4sQ0FBYTtBQUNUQyxrQkFBYztBQUNWLGFBQUtDLE1BQUwsR0FBYyxpQkFBZDtBQUNBLGFBQUtDLE9BQUwsR0FBZSxFQUFmO0FBQ0g7QUFDREMsVUFBTUMsSUFBTixFQUFZQyxLQUFaLEVBQW1CO0FBQ2YsYUFBS0osTUFBTCxDQUFZRyxJQUFaLElBQW9CQyxLQUFwQjtBQUNIO0FBQ0RDLFdBQU9DLEVBQVAsRUFBV0MsTUFBWCxFQUFtQkYsTUFBbkIsRUFBMkI7QUFDdkIsYUFBS0osT0FBTCxDQUFhTyxJQUFiLENBQWtCLEVBQUVGLEVBQUYsRUFBTUMsTUFB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SzdFLGVBQUwsQ0FBcUIsa0JBQVN3SSxFQUE5QixFQUFrQyxJQUFsQyxFQUF3Q0QsWUFBWSxJQUFwRDtBQUNBLGFBQUtuSSwyQkFBTCxDQUFpQyxrQkFBU29JLEVBQTFDO0FBQ0EsYUFBS2hJLGdCQUFMLENBQXNCLGtCQUFTZ0ksRUFBL0I7QUFDQSxhQUFLL0gsa0JBQUwsQ0FBd0Isa0JBQVMrSCxFQUFqQztBQUNBLGFBQUt4QyxhQUFMLENBQW1CLG1DQUF3QnNDLFNBQVNBLE1BQU1HLElBQU4sRUFBakMsQ0FBbkI7QUFDQSxhQUFLM0MsUUFBTDtBQUNBLGFBQUtwQixRQUFMO0FBQ0EsYUFBS0ksZUFBTDtBQUNBLGFBQUt4RSwwQkFBTDtBQUNBLGFBQUt5RCxJQUFMLENBQVUsa0JBQVN5RSxFQUFuQjtBQUNIO0FBQ0RFLGFBQVNyRCxLQUFULEVBQWdCO0FBQ1osWUFBSSxDQUFDQSxLQUFMLEVBQVksT0FBTyxJQUFQO0FBQ1osZUFBTyx1QkFBbUIsS0FBS2xILElBQXhCLEVBQThCa0gsTUFBTXNELFVBQXBDLEVBQWdEdEQsTUFBTWUsVUFBdEQsQ0FBUDtBQUNIO0FBbkZ5RDtrQkFBekN1QixhIiwiZmlsZSI6ImxpYi9jb21waWxlZC9vcGNvZGVzL2J1aWxkZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkaWN0LCBFTVBUWV9BUlJBWSwgZXhwZWN0LCBmaWxsTnVsbHMsIFN0YWNrIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBDb21wb25lbnRCdWlsZGVyIH0gZnJvbSAnLi4vLi4vY29tcGlsZXInO1xuaW1wb3J0IHsgUmVnaXN0ZXIgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IGV4cHIsIEludm9rZUR5bmFtaWNMYXlvdXQgfSBmcm9tICcuLi8uLi9zeW50YXgvZnVuY3Rpb25zJztcbmltcG9ydCBSYXdJbmxpbmVCbG9jayBmcm9tICcuLi8uLi9zeW50YXgvcmF3LWJsb2NrJztcbmltcG9ydCB7IElzQ29tcG9uZW50RGVmaW5pdGlvblJlZmVyZW5jZSB9IGZyb20gJy4uL29wY29kZXMvY29udGVudCc7XG5pbXBvcnQgKiBhcyBjb250ZW50IGZyb20gJy4vY29udGVudCc7XG5pbXBvcnQgKiBhcyB2bSBmcm9tICcuL3ZtJztcbmNsYXNzIExhYmVscyB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMubGFiZWxzID0gZGljdCgpO1xuICAgICAgICB0aGlzLnRhcmdldHMgPSBbXTtcbiAgICB9XG4gICAgbGFiZWwobmFtZSwgaW5kZXgpIHtcbiAgICAgICAgdGhpcy5sYWJlbHNbbmFtZV0gPSBpbmRleDtcbiAgICB9XG4gICAgdGFyZ2V0KGF0LCBUYXJnZXQsIHRhcmdldCkge1xuICAgICAgICB0aGlzLnRhcmdldHMucHVzaCh7IGF0LCBUYXJnZXQsIHRhcmdldCB9KTtcbiAgICB9XG4gICAgcGF0Y2gob3Bjb2Rlcykge1xuICAgICAgICBmb3IgKGxldCB7IGF0LCBUYXJnZXQsIHRhcmdldCB9IG9mIHRoaXMudGFyZ2V0cykge1xuICAgICAgICAgICAgb3Bjb2Rlcy5zZXQoYXQsIFRhcmdldCwgdGhpcy5sYWJlbHNbdGFyZ2V0XSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnQgY2xhc3MgQmFzaWNPcGNvZGVCdWlsZGVyIHtcbiAgICBjb25zdHJ1Y3RvcihlbnYsIG1ldGEsIHByb2dyYW0pIHtcbiAgICAgICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgICAgIHRoaXMubWV0YSA9IG1ldGE7XG4gICAgICAgIHRoaXMucHJvZ3JhbSA9IHByb2dyYW07XG4gICAgICAgIHRoaXMubGFiZWxzU3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgICAgICAgdGhpcy5jb25zdGFudHMgPSBlbnYuY29uc3RhbnRzO1xuICAgICAgICB0aGlzLnN0YXJ0ID0gcHJvZ3JhbS5uZXh0O1xuICAgIH1cbiAgICBnZXQgcG9zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9ncmFtLmN1cnJlbnQ7XG4gICAgfVxuICAgIGdldCBuZXh0UG9zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9ncmFtLm5leHQ7XG4gICAgfVxuICAgIHVwdmFycyhjb3VudCkge1xuICAgICAgICByZXR1cm4gZmlsbE51bGxzKGNvdW50KTtcbiAgICB9XG4gICAgcmVzZXJ2ZShuYW1lKSB7XG4gICAgICAgIHRoaXMucHVzaChuYW1lLCAwLCAwLCAwKTtcbiAgICB9XG4gICAgcHVzaChuYW1lLCBvcDEgPSAwLCBvcDIgPSAwLCBvcDMgPSAwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb2dyYW0ucHVzaChuYW1lLCBvcDEsIG9wMiwgb3AzKTtcbiAgICB9XG4gICAgZmluYWxpemUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnB1c2goMjIgLyogUmV0dXJuICovKTtcbiAgICB9XG4gICAgLy8gYXJnc1xuICAgIHB1c2hBcmdzKHBvc2l0aW9uYWwsIHN5bnRoZXRpYykge1xuICAgICAgICB0aGlzLnB1c2goNTggLyogUHVzaEFyZ3MgKi8sIHBvc2l0aW9uYWwsIHN5bnRoZXRpYyA9PT0gdHJ1ZSA/IDEgOiAwKTtcbiAgICB9XG4gICAgLy8gaGVscGVyc1xuICAgIGdldCBsYWJlbHMoKSB7XG4gICAgICAgIHJldHVybiBleHBlY3QodGhpcy5sYWJlbHNTdGFjay5jdXJyZW50LCAnYnVnOiBub3QgaW4gYSBsYWJlbCBzdGFjaycpO1xuICAgIH1cbiAgICBzdGFydExhYmVscygpIHtcbiAgICAgICAgdGhpcy5sYWJlbHNTdGFjay5wdXNoKG5ldyBMYWJlbHMoKSk7XG4gICAgfVxuICAgIHN0b3BMYWJlbHMoKSB7XG4gICAgICAgIGxldCBsYWJlbCA9IGV4cGVjdCh0aGlzLmxhYmVsc1N0YWNrLnBvcCgpLCAndW5iYWxhbmNlZCBwdXNoIGFuZCBwb3AgbGFiZWxzJyk7XG4gICAgICAgIGxhYmVsLnBhdGNoKHRoaXMucHJvZ3JhbSk7XG4gICAgfVxuICAgIC8vIGNvbXBvbmVudHNcbiAgICBwdXNoQ29tcG9uZW50TWFuYWdlcihkZWZpbml0aW9uKSB7XG4gICAgICAgIHRoaXMucHVzaCg1NSAvKiBQdXNoQ29tcG9uZW50TWFuYWdlciAqLywgdGhpcy5vdGhlcihkZWZpbml0aW9uKSk7XG4gICAgfVxuICAgIHB1c2hEeW5hbWljQ29tcG9uZW50TWFuYWdlcigpIHtcbiAgICAgICAgdGhpcy5wdXNoKDU2IC8qIFB1c2hEeW5hbWljQ29tcG9uZW50TWFuYWdlciAqLyk7XG4gICAgfVxuICAgIGluaXRpYWxpemVDb21wb25lbnRTdGF0ZSgpIHtcbiAgICAgICAgdGhpcy5wdXNoKDU3IC8qIEluaXRpYWxpemVDb21wb25lbnRTdGF0ZSAqLyk7XG4gICAgfVxuICAgIHByZXBhcmVBcmdzKHN0YXRlKSB7XG4gICAgICAgIHRoaXMucHVzaCg1OSAvKiBQcmVwYXJlQXJncyAqLywgc3RhdGUpO1xuICAgIH1cbiAgICBjcmVhdGVDb21wb25lbnQoc3RhdGUsIGhhc0RlZmF1bHQsIGhhc0ludmVyc2UpIHtcbiAgICAgICAgbGV0IGZsYWcgPSAoaGFzRGVmYXVsdCA9PT0gdHJ1ZSA/IDEgOiAwKSB8IChoYXNJbnZlcnNlID09PSB0cnVlID8gMSA6IDApIDw8IDE7XG4gICAgICAgIHRoaXMucHVzaCg2MCAvKiBDcmVhdGVDb21wb25lbnQgKi8sIGZsYWcsIHN0YXRlKTtcbiAgICB9XG4gICAgcmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yKHN0YXRlKSB7XG4gICAgICAgIHRoaXMucHVzaCg2MSAvKiBSZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3IgKi8sIHN0YXRlKTtcbiAgICB9XG4gICAgYmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbigpIHtcbiAgICAgICAgdGhpcy5wdXNoKDY1IC8qIEJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24gKi8pO1xuICAgIH1cbiAgICBjb21taXRDb21wb25lbnRUcmFuc2FjdGlvbigpIHtcbiAgICAgICAgdGhpcy5wdXNoKDY2IC8qIENvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uICovKTtcbiAgICB9XG4gICAgcHVzaENvbXBvbmVudE9wZXJhdGlvbnMoKSB7XG4gICAgICAgIHRoaXMucHVzaCg2MiAvKiBQdXNoQ29tcG9uZW50T3BlcmF0aW9ucyAqLyk7XG4gICAgfVxuICAgIGdldENvbXBvbmVudFNlbGYoc3RhdGUpIHtcbiAgICAgICAgdGhpcy5wdXNoKDYzIC8qIEdldENvbXBvbmVudFNlbGYgKi8sIHN0YXRlKTtcbiAgICB9XG4gICAgZ2V0Q29tcG9uZW50TGF5b3V0KHN0YXRlKSB7XG4gICAgICAgIHRoaXMucHVzaCg2NCAvKiBHZXRDb21wb25lbnRMYXlvdXQgKi8sIHN0YXRlKTtcbiAgICB9XG4gICAgZGlkQ3JlYXRlRWxlbWVudChzdGF0ZSkge1xuICAgICAgICB0aGlzLnB1c2goNjcgLyogRGlkQ3JlYXRlRWxlbWVudCAqLywgc3RhdGUpO1xuICAgIH1cbiAgICBkaWRSZW5kZXJMYXlvdXQoc3RhdGUpIHtcbiAgICAgICAgdGhpcy5wdXNoKDY4IC8qIERpZFJlbmRlckxheW91dCAqLywgc3RhdGUpO1xuICAgIH1cbiAgICAvLyBwYXJ0aWFsXG4gICAgZ2V0UGFydGlhbFRlbXBsYXRlKCkge1xuICAgICAgICB0aGlzLnB1c2goNjkgLyogR2V0UGFydGlhbFRlbXBsYXRlICovKTtcbiAgICB9XG4gICAgcmVzb2x2ZU1heWJlTG9jYWwobmFtZSkge1xuICAgICAgICB0aGlzLnB1c2goNzAgLyogUmVzb2x2ZU1heWJlTG9jYWwgKi8sIHRoaXMuc3RyaW5nKG5hbWUpKTtcbiAgICB9XG4gICAgLy8gZGVidWdnZXJcbiAgICBkZWJ1Z2dlcihzeW1ib2xzLCBldmFsSW5mbykge1xuICAgICAgICB0aGlzLnB1c2goNzEgLyogRGVidWdnZXIgKi8sIHRoaXMuY29uc3RhbnRzLm90aGVyKHN5bWJvbHMpLCB0aGlzLmNvbnN0YW50cy5hcnJheShldmFsSW5mbykpO1xuICAgIH1cbiAgICAvLyBjb250ZW50XG4gICAgZHluYW1pY0NvbnRlbnQoT3Bjb2RlKSB7XG4gICAgICAgIHRoaXMucHVzaCgyNSAvKiBEeW5hbWljQ29udGVudCAqLywgdGhpcy5vdGhlcihPcGNvZGUpKTtcbiAgICB9XG4gICAgY2F1dGlvdXNBcHBlbmQoKSB7XG4gICAgICAgIHRoaXMuZHluYW1pY0NvbnRlbnQobmV3IGNvbnRlbnQuT3B0aW1pemVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUoKSk7XG4gICAgfVxuICAgIHRydXN0aW5nQXBwZW5kKCkge1xuICAgICAgICB0aGlzLmR5bmFtaWNDb250ZW50KG5ldyBjb250ZW50Lk9wdGltaXplZFRydXN0aW5nQXBwZW5kT3Bjb2RlKCkpO1xuICAgIH1cbiAgICAvLyBkb21cbiAgICB0ZXh0KHRleHQpIHtcbiAgICAgICAgdGhpcy5wdXNoKDIzIC8qIFRleHQgKi8sIHRoaXMuY29uc3RhbnRzLnN0cmluZyh0ZXh0KSk7XG4gICAgfVxuICAgIG9wZW5QcmltaXRpdmVFbGVtZW50KHRhZykge1xuICAgICAgICB0aGlzLnB1c2goMjYgLyogT3BlbkVsZW1lbnQgKi8sIHRoaXMuY29uc3RhbnRzLnN0cmluZyh0YWcpKTtcbiAgICB9XG4gICAgb3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucyh0YWcpIHtcbiAgICAgICAgdGhpcy5wdXNoKDI3IC8qIE9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMgKi8sIHRoaXMuY29uc3RhbnRzLnN0cmluZyh0YWcpKTtcbiAgICB9XG4gICAgb3BlbkR5bmFtaWNFbGVtZW50KCkge1xuICAgICAgICB0aGlzLnB1c2goMjggLyogT3BlbkR5bmFtaWNFbGVtZW50ICovKTtcbiAgICB9XG4gICAgZmx1c2hFbGVtZW50KCkge1xuICAgICAgICB0aGlzLnB1c2goMzIgLyogRmx1c2hFbGVtZW50ICovKTtcbiAgICB9XG4gICAgY2xvc2VFbGVtZW50KCkge1xuICAgICAgICB0aGlzLnB1c2goMzMgLyogQ2xvc2VFbGVtZW50ICovKTtcbiAgICB9XG4gICAgc3RhdGljQXR0cihfbmFtZSwgX25hbWVzcGFjZSwgX3ZhbHVlKSB7XG4gICAgICAgIGxldCBuYW1lID0gdGhpcy5jb25zdGFudHMuc3RyaW5nKF9uYW1lKTtcbiAgICAgICAgbGV0IG5hbWVzcGFjZSA9IF9uYW1lc3BhY2UgPyB0aGlzLmNvbnN0YW50cy5zdHJpbmcoX25hbWVzcGFjZSkgOiAwO1xuICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLmNvbnN0YW50cy5zdHJpbmcoX3ZhbHVlKTtcbiAgICAgICAgdGhpcy5wdXNoKDI5IC8qIFN0YXRpY0F0dHIgKi8sIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UpO1xuICAgIH1cbiAgICBkeW5hbWljQXR0ck5TKF9uYW1lLCBfbmFtZXNwYWNlLCB0cnVzdGluZykge1xuICAgICAgICBsZXQgbmFtZSA9IHRoaXMuY29uc3RhbnRzLnN0cmluZyhfbmFtZSk7XG4gICAgICAgIGxldCBuYW1lc3BhY2UgPSB0aGlzLmNvbnN0YW50cy5zdHJpbmcoX25hbWVzcGFjZSk7XG4gICAgICAgIHRoaXMucHVzaCgzMSAvKiBEeW5hbWljQXR0ck5TICovLCBuYW1lLCBuYW1lc3BhY2UsIHRydXN0aW5nID09PSB0cnVlID8gMSA6IDApO1xuICAgIH1cbiAgICBkeW5hbWljQXR0cihfbmFtZSwgdHJ1c3RpbmcpIHtcbiAgICAgICAgbGV0IG5hbWUgPSB0aGlzLmNvbnN0YW50cy5zdHJpbmcoX25hbWUpO1xuICAgICAgICB0aGlzLnB1c2goMzAgLyogRHluYW1pY0F0dHIgKi8sIG5hbWUsIHRydXN0aW5nID09PSB0cnVlID8gMSA6IDApO1xuICAgIH1cbiAgICBjb21tZW50KF9jb21tZW50KSB7XG4gICAgICAgIGxldCBjb21tZW50ID0gdGhpcy5jb25zdGFudHMuc3RyaW5nKF9jb21tZW50KTtcbiAgICAgICAgdGhpcy5wdXNoKDI0IC8qIENvbW1lbnQgKi8sIGNvbW1lbnQpO1xuICAgIH1cbiAgICBtb2RpZmllcihfZGVmaW5pdGlvbikge1xuICAgICAgICB0aGlzLnB1c2goMzQgLyogTW9kaWZpZXIgKi8sIHRoaXMub3RoZXIoX2RlZmluaXRpb24pKTtcbiAgICB9XG4gICAgLy8gbGlzdHNcbiAgICBwdXRJdGVyYXRvcigpIHtcbiAgICAgICAgdGhpcy5wdXNoKDUzIC8qIFB1dEl0ZXJhdG9yICovKTtcbiAgICB9XG4gICAgZW50ZXJMaXN0KHN0YXJ0KSB7XG4gICAgICAgIHRoaXMucmVzZXJ2ZSg1MSAvKiBFbnRlckxpc3QgKi8pO1xuICAgICAgICB0aGlzLmxhYmVscy50YXJnZXQodGhpcy5wb3MsIDUxIC8qIEVudGVyTGlzdCAqLywgc3RhcnQpO1xuICAgIH1cbiAgICBleGl0TGlzdCgpIHtcbiAgICAgICAgdGhpcy5wdXNoKDUyIC8qIEV4aXRMaXN0ICovKTtcbiAgICB9XG4gICAgaXRlcmF0ZShicmVha3MpIHtcbiAgICAgICAgdGhpcy5yZXNlcnZlKDU0IC8qIEl0ZXJhdGUgKi8pO1xuICAgICAgICB0aGlzLmxhYmVscy50YXJnZXQodGhpcy5wb3MsIDU0IC8qIEl0ZXJhdGUgKi8sIGJyZWFrcyk7XG4gICAgfVxuICAgIC8vIGV4cHJlc3Npb25zXG4gICAgc2V0VmFyaWFibGUoc3ltYm9sKSB7XG4gICAgICAgIHRoaXMucHVzaCg0IC8qIFNldFZhcmlhYmxlICovLCBzeW1ib2wpO1xuICAgIH1cbiAgICBnZXRWYXJpYWJsZShzeW1ib2wpIHtcbiAgICAgICAgdGhpcy5wdXNoKDUgLyogR2V0VmFyaWFibGUgKi8sIHN5bWJvbCk7XG4gICAgfVxuICAgIGdldFByb3BlcnR5KGtleSkge1xuICAgICAgICB0aGlzLnB1c2goNiAvKiBHZXRQcm9wZXJ0eSAqLywgdGhpcy5zdHJpbmcoa2V5KSk7XG4gICAgfVxuICAgIGdldEJsb2NrKHN5bWJvbCkge1xuICAgICAgICB0aGlzLnB1c2goOCAvKiBHZXRCbG9jayAqLywgc3ltYm9sKTtcbiAgICB9XG4gICAgaGFzQmxvY2soc3ltYm9sKSB7XG4gICAgICAgIHRoaXMucHVzaCg5IC8qIEhhc0Jsb2NrICovLCBzeW1ib2wpO1xuICAgIH1cbiAgICBoYXNCbG9ja1BhcmFtcyhzeW1ib2wpIHtcbiAgICAgICAgdGhpcy5wdXNoKDEwIC8qIEhhc0Jsb2NrUGFyYW1zICovLCBzeW1ib2wpO1xuICAgIH1cbiAgICBjb25jYXQoc2l6ZSkge1xuICAgICAgICB0aGlzLnB1c2goMTEgLyogQ29uY2F0ICovLCBzaXplKTtcbiAgICB9XG4gICAgZnVuY3Rpb24oZikge1xuICAgICAgICB0aGlzLnB1c2goMiAvKiBGdW5jdGlvbiAqLywgdGhpcy5mdW5jKGYpKTtcbiAgICB9XG4gICAgbG9hZChyZWdpc3Rlcikge1xuICAgICAgICB0aGlzLnB1c2goMTcgLyogTG9hZCAqLywgcmVnaXN0ZXIpO1xuICAgIH1cbiAgICBmZXRjaChyZWdpc3Rlcikge1xuICAgICAgICB0aGlzLnB1c2goMTggLyogRmV0Y2ggKi8sIHJlZ2lzdGVyKTtcbiAgICB9XG4gICAgZHVwKHJlZ2lzdGVyID0gUmVnaXN0ZXIuc3AsIG9mZnNldCA9IDApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHVzaCgxNSAvKiBEdXAgKi8sIHJlZ2lzdGVyLCBvZmZzZXQpO1xuICAgIH1cbiAgICBwb3AoY291bnQgPSAxKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnB1c2goMTYgLyogUG9wICovLCBjb3VudCk7XG4gICAgfVxuICAgIC8vIHZtXG4gICAgcHVzaFJlbW90ZUVsZW1lbnQoKSB7XG4gICAgICAgIHRoaXMucHVzaCgzNSAvKiBQdXNoUmVtb3RlRWxlbWVudCAqLyk7XG4gICAgfVxuICAgIHBvcFJlbW90ZUVsZW1lbnQoKSB7XG4gICAgICAgIHRoaXMucHVzaCgzNiAvKiBQb3BSZW1vdGVFbGVtZW50ICovKTtcbiAgICB9XG4gICAgbGFiZWwobmFtZSkge1xuICAgICAgICB0aGlzLmxhYmVscy5sYWJlbChuYW1lLCB0aGlzLm5leHRQb3MpO1xuICAgIH1cbiAgICBwdXNoUm9vdFNjb3BlKHN5bWJvbHMsIGJpbmRDYWxsZXJTY29wZSkge1xuICAgICAgICB0aGlzLnB1c2goMTkgLyogUm9vdFNjb3BlICovLCBzeW1ib2xzLCBiaW5kQ2FsbGVyU2NvcGUgPyAxIDogMCk7XG4gICAgfVxuICAgIHB1c2hDaGlsZFNjb3BlKCkge1xuICAgICAgICB0aGlzLnB1c2goMjAgLyogQ2hpbGRTY29wZSAqLyk7XG4gICAgfVxuICAgIHBvcFNjb3BlKCkge1xuICAgICAgICB0aGlzLnB1c2goMjEgLyogUG9wU2NvcGUgKi8pO1xuICAgIH1cbiAgICByZXR1cm5UbyhsYWJlbCkge1xuICAgICAgICB0aGlzLnJlc2VydmUoMTIgLyogSW1tZWRpYXRlICovKTtcbiAgICAgICAgdGhpcy5sYWJlbHMudGFyZ2V0KHRoaXMucG9zLCAxMiAvKiBJbW1lZGlhdGUgKi8sIGxhYmVsKTtcbiAgICAgICAgdGhpcy5sb2FkKFJlZ2lzdGVyLnJhKTtcbiAgICB9XG4gICAgcHVzaER5bmFtaWNTY29wZSgpIHtcbiAgICAgICAgdGhpcy5wdXNoKDM4IC8qIFB1c2hEeW5hbWljU2NvcGUgKi8pO1xuICAgIH1cbiAgICBwb3BEeW5hbWljU2NvcGUoKSB7XG4gICAgICAgIHRoaXMucHVzaCgzOSAvKiBQb3BEeW5hbWljU2NvcGUgKi8pO1xuICAgIH1cbiAgICBwdXNoSW1tZWRpYXRlKHZhbHVlKSB7XG4gICAgICAgIHRoaXMucHVzaCgxMyAvKiBDb25zdGFudCAqLywgdGhpcy5vdGhlcih2YWx1ZSkpO1xuICAgIH1cbiAgICBwcmltaXRpdmUoX3ByaW1pdGl2ZSkge1xuICAgICAgICBsZXQgZmxhZyA9IDA7XG4gICAgICAgIGxldCBwcmltaXRpdmU7XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIF9wcmltaXRpdmUpIHtcbiAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgICAgICAgICAgcHJpbWl0aXZlID0gX3ByaW1pdGl2ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgICAgICAgICAgcHJpbWl0aXZlID0gdGhpcy5zdHJpbmcoX3ByaW1pdGl2ZSk7XG4gICAgICAgICAgICAgICAgZmxhZyA9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgICAgICAgICBwcmltaXRpdmUgPSBfcHJpbWl0aXZlIHwgMDtcbiAgICAgICAgICAgICAgICBmbGFnID0gMjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICAgICAgLy8gYXNzdW1lIG51bGxcbiAgICAgICAgICAgICAgICBwcmltaXRpdmUgPSAyO1xuICAgICAgICAgICAgICAgIGZsYWcgPSAyO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndW5kZWZpbmVkJzpcbiAgICAgICAgICAgICAgICBwcmltaXRpdmUgPSAzO1xuICAgICAgICAgICAgICAgIGZsYWcgPSAyO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcHJpbWl0aXZlIHBhc3NlZCB0byBwdXNoUHJpbWl0aXZlJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wdXNoKDE0IC8qIFByaW1pdGl2ZVJlZmVyZW5jZSAqLywgZmxhZyA8PCAzMCB8IHByaW1pdGl2ZSk7XG4gICAgfVxuICAgIGhlbHBlcihmdW5jKSB7XG4gICAgICAgIHRoaXMucHVzaCgxIC8qIEhlbHBlciAqLywgdGhpcy5mdW5jKGZ1bmMpKTtcbiAgICB9XG4gICAgcHVzaEJsb2NrKGJsb2NrKSB7XG4gICAgICAgIHRoaXMucHVzaCg3IC8qIFB1c2hCbG9jayAqLywgdGhpcy5ibG9jayhibG9jaykpO1xuICAgIH1cbiAgICBiaW5kRHluYW1pY1Njb3BlKF9uYW1lcykge1xuICAgICAgICB0aGlzLnB1c2goMzcgLyogQmluZER5bmFtaWNTY29wZSAqLywgdGhpcy5uYW1lcyhfbmFtZXMpKTtcbiAgICB9XG4gICAgZW50ZXIoYXJncykge1xuICAgICAgICB0aGlzLnB1c2goNDggLyogRW50ZXIgKi8sIGFyZ3MpO1xuICAgIH1cbiAgICBleGl0KCkge1xuICAgICAgICB0aGlzLnB1c2goNDkgLyogRXhpdCAqLyk7XG4gICAgfVxuICAgIHJldHVybigpIHtcbiAgICAgICAgdGhpcy5wdXNoKDIyIC8qIFJldHVybiAqLyk7XG4gICAgfVxuICAgIHB1c2hGcmFtZSgpIHtcbiAgICAgICAgdGhpcy5wdXNoKDQ2IC8qIFB1c2hGcmFtZSAqLyk7XG4gICAgfVxuICAgIHBvcEZyYW1lKCkge1xuICAgICAgICB0aGlzLnB1c2goNDcgLyogUG9wRnJhbWUgKi8pO1xuICAgIH1cbiAgICBjb21waWxlRHluYW1pY0Jsb2NrKCkge1xuICAgICAgICB0aGlzLnB1c2goNDAgLyogQ29tcGlsZUR5bmFtaWNCbG9jayAqLyk7XG4gICAgfVxuICAgIGludm9rZUR5bmFtaWMoaW52b2tlcikge1xuICAgICAgICB0aGlzLnB1c2goNDIgLyogSW52b2tlRHluYW1pYyAqLywgdGhpcy5vdGhlcihpbnZva2VyKSk7XG4gICAgfVxuICAgIGludm9rZVN0YXRpYyhibG9jaywgY2FsbGVyQ291bnQgPSAwKSB7XG4gICAgICAgIGxldCB7IHBhcmFtZXRlcnMgfSA9IGJsb2NrLnN5bWJvbFRhYmxlO1xuICAgICAgICBsZXQgY2FsbGVlQ291bnQgPSBwYXJhbWV0ZXJzLmxlbmd0aDtcbiAgICAgICAgbGV0IGNvdW50ID0gTWF0aC5taW4oY2FsbGVyQ291bnQsIGNhbGxlZUNvdW50KTtcbiAgICAgICAgdGhpcy5wdXNoRnJhbWUoKTtcbiAgICAgICAgaWYgKGNvdW50KSB7XG4gICAgICAgICAgICB0aGlzLnB1c2hDaGlsZFNjb3BlKCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLmR1cChSZWdpc3Rlci5mcCwgY2FsbGVyQ291bnQgLSBpKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFZhcmlhYmxlKHBhcmFtZXRlcnNbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCBfYmxvY2sgPSB0aGlzLmNvbnN0YW50cy5ibG9jayhibG9jayk7XG4gICAgICAgIHRoaXMucHVzaCg0MSAvKiBJbnZva2VTdGF0aWMgKi8sIF9ibG9jayk7XG4gICAgICAgIGlmIChjb3VudCkge1xuICAgICAgICAgICAgdGhpcy5wb3BTY29wZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucG9wRnJhbWUoKTtcbiAgICB9XG4gICAgdGVzdCh0ZXN0RnVuYykge1xuICAgICAgICBsZXQgX2Z1bmM7XG4gICAgICAgIGlmICh0ZXN0RnVuYyA9PT0gJ2NvbnN0Jykge1xuICAgICAgICAgICAgX2Z1bmMgPSB2bS5Db25zdFRlc3Q7XG4gICAgICAgIH0gZWxzZSBpZiAodGVzdEZ1bmMgPT09ICdzaW1wbGUnKSB7XG4gICAgICAgICAgICBfZnVuYyA9IHZtLlNpbXBsZVRlc3Q7XG4gICAgICAgIH0gZWxzZSBpZiAodGVzdEZ1bmMgPT09ICdlbnZpcm9ubWVudCcpIHtcbiAgICAgICAgICAgIF9mdW5jID0gdm0uRW52aXJvbm1lbnRUZXN0O1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0ZXN0RnVuYyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgX2Z1bmMgPSB0ZXN0RnVuYztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigndW5yZWFjaGFibGUnKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgZnVuYyA9IHRoaXMuY29uc3RhbnRzLmZ1bmN0aW9uKF9mdW5jKTtcbiAgICAgICAgdGhpcy5wdXNoKDUwIC8qIFRlc3QgKi8sIGZ1bmMpO1xuICAgIH1cbiAgICBqdW1wKHRhcmdldCkge1xuICAgICAgICB0aGlzLnJlc2VydmUoNDMgLyogSnVtcCAqLyk7XG4gICAgICAgIHRoaXMubGFiZWxzLnRhcmdldCh0aGlzLnBvcywgNDMgLyogSnVtcCAqLywgdGFyZ2V0KTtcbiAgICB9XG4gICAganVtcElmKHRhcmdldCkge1xuICAgICAgICB0aGlzLnJlc2VydmUoNDQgLyogSnVtcElmICovKTtcbiAgICAgICAgdGhpcy5sYWJlbHMudGFyZ2V0KHRoaXMucG9zLCA0NCAvKiBKdW1wSWYgKi8sIHRhcmdldCk7XG4gICAgfVxuICAgIGp1bXBVbmxlc3ModGFyZ2V0KSB7XG4gICAgICAgIHRoaXMucmVzZXJ2ZSg0NSAvKiBKdW1wVW5sZXNzICovKTtcbiAgICAgICAgdGhpcy5sYWJlbHMudGFyZ2V0KHRoaXMucG9zLCA0NSAvKiBKdW1wVW5sZXNzICovLCB0YXJnZXQpO1xuICAgIH1cbiAgICBzdHJpbmcoX3N0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25zdGFudHMuc3RyaW5nKF9zdHJpbmcpO1xuICAgIH1cbiAgICBuYW1lcyhfbmFtZXMpIHtcbiAgICAgICAgbGV0IG5hbWVzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgX25hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgbiA9IF9uYW1lc1tpXTtcbiAgICAgICAgICAgIG5hbWVzW2ldID0gdGhpcy5jb25zdGFudHMuc3RyaW5nKG4pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnN0YW50cy5hcnJheShuYW1lcyk7XG4gICAgfVxuICAgIHN5bWJvbHMoc3ltYm9scykge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25zdGFudHMuYXJyYXkoc3ltYm9scyk7XG4gICAgfVxuICAgIG90aGVyKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnN0YW50cy5vdGhlcih2YWx1ZSk7XG4gICAgfVxuICAgIGJsb2NrKGJsb2NrKSB7XG4gICAgICAgIHJldHVybiBibG9jayA/IHRoaXMuY29uc3RhbnRzLmJsb2NrKGJsb2NrKSA6IDA7XG4gICAgfVxuICAgIGZ1bmMoZnVuYykge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25zdGFudHMuZnVuY3Rpb24oZnVuYyk7XG4gICAgfVxufVxuZnVuY3Rpb24gaXNDb21waWxhYmxlRXhwcmVzc2lvbihleHByKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBleHByID09PSAnb2JqZWN0JyAmJiBleHByICE9PSBudWxsICYmIHR5cGVvZiBleHByLmNvbXBpbGUgPT09ICdmdW5jdGlvbic7XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBPcGNvZGVCdWlsZGVyIGV4dGVuZHMgQmFzaWNPcGNvZGVCdWlsZGVyIHtcbiAgICBjb25zdHJ1Y3RvcihlbnYsIG1ldGEsIHByb2dyYW0gPSBlbnYucHJvZ3JhbSkge1xuICAgICAgICBzdXBlcihlbnYsIG1ldGEsIHByb2dyYW0pO1xuICAgICAgICB0aGlzLmNvbXBvbmVudCA9IG5ldyBDb21wb25lbnRCdWlsZGVyKHRoaXMpO1xuICAgIH1cbiAgICBjb21waWxlQXJncyhwYXJhbXMsIGhhc2gsIHN5bnRoZXRpYykge1xuICAgICAgICBsZXQgcG9zaXRpb25hbCA9IDA7XG4gICAgICAgIGlmIChwYXJhbXMpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFyYW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgZXhwcihwYXJhbXNbaV0sIHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcG9zaXRpb25hbCA9IHBhcmFtcy5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IG5hbWVzID0gRU1QVFlfQVJSQVk7XG4gICAgICAgIGlmIChoYXNoKSB7XG4gICAgICAgICAgICBuYW1lcyA9IGhhc2hbMF07XG4gICAgICAgICAgICBsZXQgdmFsID0gaGFzaFsxXTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgZXhwcih2YWxbaV0sIHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMucHVzaEltbWVkaWF0ZShuYW1lcyk7XG4gICAgICAgIHRoaXMucHVzaEFyZ3MocG9zaXRpb25hbCwgc3ludGhldGljKTtcbiAgICB9XG4gICAgY29tcGlsZShleHByKSB7XG4gICAgICAgIGlmIChpc0NvbXBpbGFibGVFeHByZXNzaW9uKGV4cHIpKSB7XG4gICAgICAgICAgICByZXR1cm4gZXhwci5jb21waWxlKHRoaXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGV4cHI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ3VhcmRlZEFwcGVuZChleHByZXNzaW9uLCB0cnVzdGluZykge1xuICAgICAgICB0aGlzLnN0YXJ0TGFiZWxzKCk7XG4gICAgICAgIHRoaXMucHVzaEZyYW1lKCk7XG4gICAgICAgIHRoaXMucmV0dXJuVG8oJ0VORCcpO1xuICAgICAgICBleHByKGV4cHJlc3Npb24sIHRoaXMpO1xuICAgICAgICB0aGlzLmR1cCgpO1xuICAgICAgICB0aGlzLnRlc3QocmVmZXJlbmNlID0+IHtcbiAgICAgICAgICAgIHJldHVybiBJc0NvbXBvbmVudERlZmluaXRpb25SZWZlcmVuY2UuY3JlYXRlKHJlZmVyZW5jZSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmVudGVyKDIpO1xuICAgICAgICB0aGlzLmp1bXBVbmxlc3MoJ0VMU0UnKTtcbiAgICAgICAgdGhpcy5wdXNoRHluYW1pY0NvbXBvbmVudE1hbmFnZXIoKTtcbiAgICAgICAgdGhpcy5pbnZva2VDb21wb25lbnQobnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCk7XG4gICAgICAgIHRoaXMuZXhpdCgpO1xuICAgICAgICB0aGlzLnJldHVybigpO1xuICAgICAgICB0aGlzLmxhYmVsKCdFTFNFJyk7XG4gICAgICAgIGlmICh0cnVzdGluZykge1xuICAgICAgICAgICAgdGhpcy50cnVzdGluZ0FwcGVuZCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jYXV0aW91c0FwcGVuZCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZXhpdCgpO1xuICAgICAgICB0aGlzLnJldHVybigpO1xuICAgICAgICB0aGlzLmxhYmVsKCdFTkQnKTtcbiAgICAgICAgdGhpcy5wb3BGcmFtZSgpO1xuICAgICAgICB0aGlzLnN0b3BMYWJlbHMoKTtcbiAgICB9XG4gICAgaW52b2tlQ29tcG9uZW50KGF0dHJzLCBwYXJhbXMsIGhhc2gsIGJsb2NrLCBpbnZlcnNlID0gbnVsbCkge1xuICAgICAgICB0aGlzLmluaXRpYWxpemVDb21wb25lbnRTdGF0ZSgpO1xuICAgICAgICB0aGlzLmZldGNoKFJlZ2lzdGVyLnMwKTtcbiAgICAgICAgdGhpcy5kdXAoUmVnaXN0ZXIuc3AsIDEpO1xuICAgICAgICB0aGlzLmxvYWQoUmVnaXN0ZXIuczApO1xuICAgICAgICB0aGlzLnB1c2hCbG9jayhibG9jayk7XG4gICAgICAgIHRoaXMucHVzaEJsb2NrKGludmVyc2UpO1xuICAgICAgICB0aGlzLmNvbXBpbGVBcmdzKHBhcmFtcywgaGFzaCwgZmFsc2UpO1xuICAgICAgICB0aGlzLnByZXBhcmVBcmdzKFJlZ2lzdGVyLnMwKTtcbiAgICAgICAgdGhpcy5iZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uKCk7XG4gICAgICAgIHRoaXMucHVzaER5bmFtaWNTY29wZSgpO1xuICAgICAgICB0aGlzLmNyZWF0ZUNvbXBvbmVudChSZWdpc3Rlci5zMCwgdHJ1ZSwgaW52ZXJzZSA9PT0gbnVsbCk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yKFJlZ2lzdGVyLnMwKTtcbiAgICAgICAgdGhpcy5nZXRDb21wb25lbnRTZWxmKFJlZ2lzdGVyLnMwKTtcbiAgICAgICAgdGhpcy5nZXRDb21wb25lbnRMYXlvdXQoUmVnaXN0ZXIuczApO1xuICAgICAgICB0aGlzLmludm9rZUR5bmFtaWMobmV3IEludm9rZUR5bmFtaWNMYXlvdXQoYXR0cnMgJiYgYXR0cnMuc2NhbigpKSk7XG4gICAgICAgIHRoaXMucG9wRnJhbWUoKTtcbiAgICAgICAgdGhpcy5wb3BTY29wZSgpO1xuICAgICAgICB0aGlzLnBvcER5bmFtaWNTY29wZSgpO1xuICAgICAgICB0aGlzLmNvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uKCk7XG4gICAgICAgIHRoaXMubG9hZChSZWdpc3Rlci5zMCk7XG4gICAgfVxuICAgIHRlbXBsYXRlKGJsb2NrKSB7XG4gICAgICAgIGlmICghYmxvY2spIHJldHVybiBudWxsO1xuICAgICAgICByZXR1cm4gbmV3IFJhd0lubGluZUJsb2NrKHRoaXMubWV0YSwgYmxvY2suc3RhdGVtZW50cywgYmxvY2sucGFyYW1ldGVycyk7XG4gICAgfVxufSJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2J1aWxkZXIuanMiXSwibmFtZXMiOlsiY29udGVudCIsInZtIiwiTGFiZWxzIiwiY29uc3RydWN0b3IiLCJsYWJlbHMiLCJ0YXJnZXRzIiwibGFiZWwiLCJuYW1lIiwiaW5kZXgiLCJ0YXJnZXQiLCJhdCIsIlRhcmdldCIsInB1c2giLCJwYXRjaCIsIm9wY29kZXMiLCJzZXQiLCJCYXNpY09wY29kZUJ1aWxkZXIiLCJlbnYiLCJtZXRhIiwicHJvZ3JhbSIsImxhYmVsc1N0YWNrIiwiY29uc3RhbnRzIiwic3RhcnQiLCJuZXh0IiwicG9zIiwiY3VycmVudCIsIm5leHRQb3MiLCJ1cHZhcnMiLCJjb3VudCIsInJlc2VydmUiLCJvcDEiLCJvcDIiLCJvcDMiLCJmaW5hbGl6ZSIsInB1c2hBcmdzIiwicG9zaXRpb25hbCIsInN5bnRoZXRpYyIsInN0YXJ0TGFiZWxzIiwic3RvcExhYmVscyIsInBvcCIsInB1c2hDb21wb25lbnRNYW5hZ2VyIiwiZGVmaW5pdGlvbiIsIm90aGVyIiwicHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyIiwiaW5pdGlhbGl6ZUNvbXBvbmVudFN0YXRlIiwicHJlcGFyZUFyZ3MiLCJzdGF0ZSIsImNyZWF0ZUNvbXBvbmVudCIsImhhc0RlZmF1bHQiLCJoYXNJbnZlcnNlIiwiZmxhZyIsInJlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvciIsImJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24iLCJjb21taXRDb21wb25lbnRUcmFuc2FjdGlvbiIsInB1c2hDb21wb25lbnRPcGVyYXRpb25zIiwiZ2V0Q29tcG9uZW50U2VsZiIsImdldENvbXBvbmVudExheW91dCIsImRpZENyZWF0ZUVsZW1lbnQiLCJkaWRSZW5kZXJMYXlvdXQiLCJnZXRQYXJ0aWFsVGVtcGxhdGUiLCJyZXNvbHZlTWF5YmVMb2NhbCIsInN0cmluZyIsImRlYnVnZ2VyIiwic3ltYm9scyIsImV2YWxJbmZvIiwiYXJyYXkiLCJkeW5hbWljQ29udGVudCIsIk9wY29kZSIsImNhdXRpb3VzQXBwZW5kIiwiT3B0aW1pemVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUiLCJ0cnVzdGluZ0FwcGVuZCIsIk9wdGltaXplZFRydXN0aW5nQXBwZW5kT3Bjb2RlIiwidGV4dCIsIm9wZW5QcmltaXRpdmVFbGVtZW50IiwidGFnIiwib3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucyIsIm9wZW5EeW5hbWljRWxlbWVudCIsImZsdXNoRWxlbWVudCIsImNsb3NlRWxlbWVudCIsInN0YXRpY0F0dHIiLCJfbmFtZSIsIl9uYW1lc3BhY2UiLCJfdmFsdWUiLCJuYW1lc3BhY2UiLCJ2YWx1ZSIsImR5bmFtaWNBdHRyTlMiLCJ0cnVzdGluZyIsImR5bmFtaWNBdHRyIiwiY29tbWVudCIsIl9jb21tZW50IiwibW9kaWZpZXIiLCJfZGVmaW5pdGlvbiIsInB1dEl0ZXJhdG9yIiwiZW50ZXJMaXN0IiwiZXhpdExpc3QiLCJpdGVyYXRlIiwiYnJlYWtzIiwic2V0VmFyaWFibGUiLCJzeW1ib2wiLCJnZXRWYXJpYWJsZSIsImdldFByb3BlcnR5Iiwia2V5IiwiZ2V0QmxvY2siLCJoYXNCbG9jayIsImhhc0Jsb2NrUGFyYW1zIiwiY29uY2F0Iiwic2l6ZSIsImZ1bmN0aW9uIiwiZiIsImZ1bmMiLCJsb2FkIiwicmVnaXN0ZXIiLCJmZXRjaCIsImR1cCIsInNwIiwib2Zmc2V0IiwicHVzaFJlbW90ZUVsZW1lbnQiLCJwb3BSZW1vdGVFbGVtZW50IiwicHVzaFJvb3RTY29wZSIsImJpbmRDYWxsZXJTY29wZSIsInB1c2hDaGlsZFNjb3BlIiwicG9wU2NvcGUiLCJyZXR1cm5UbyIsInJhIiwicHVzaER5bmFtaWNTY29wZSIsInBvcER5bmFtaWNTY29wZSIsInB1c2hJbW1lZGlhdGUiLCJwcmltaXRpdmUiLCJfcHJpbWl0aXZlIiwiRXJyb3IiLCJoZWxwZXIiLCJwdXNoQmxvY2siLCJibG9jayIsImJpbmREeW5hbWljU2NvcGUiLCJfbmFtZXMiLCJuYW1lcyIsImVudGVyIiwiYXJncyIsImV4aXQiLCJyZXR1cm4iLCJwdXNoRnJhbWUiLCJwb3BGcmFtZSIsImNvbXBpbGVEeW5hbWljQmxvY2siLCJpbnZva2VEeW5hbWljIiwiaW52b2tlciIsImludm9rZVN0YXRpYyIsImNhbGxlckNvdW50IiwicGFyYW1ldGVycyIsInN5bWJvbFRhYmxlIiwiY2FsbGVlQ291bnQiLCJsZW5ndGgiLCJNYXRoIiwibWluIiwiaSIsImZwIiwiX2Jsb2NrIiwidGVzdCIsInRlc3RGdW5jIiwiX2Z1bmMiLCJDb25zdFRlc3QiLCJTaW1wbGVUZXN0IiwiRW52aXJvbm1lbnRUZXN0IiwianVtcCIsImp1bXBJZiIsImp1bXBVbmxlc3MiLCJfc3RyaW5nIiwibWFwIiwibiIsImlzQ29tcGlsYWJsZUV4cHJlc3Npb24iLCJleHByIiwiT3Bjb2RlQnVpbGRlciIsImNvbXBvbmVudCIsImNvbXBpbGVBcmdzIiwicGFyYW1zIiwiaGFzaCIsImZvckVhY2giLCJwIiwidiIsImNvbXBpbGUiLCJndWFyZGVkQXBwZW5kIiwiZXhwcmVzc2lvbiIsInJlZmVyZW5jZSIsImNyZWF0ZSIsImludm9rZUNvbXBvbmVudCIsImd1YXJkZWRDYXV0aW91c0FwcGVuZCIsIkd1YXJkZWRDYXV0aW91c0FwcGVuZE9wY29kZSIsImd1YXJkZWRUcnVzdGluZ0FwcGVuZCIsIkd1YXJkZWRUcnVzdGluZ0FwcGVuZE9wY29kZSIsImF0dHJzIiwiaW52ZXJzZSIsInMwIiwic2NhbiIsInRlbXBsYXRlIiwic3RhdGVtZW50cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztJQUFZQSxPOztBQUNaOztJQUFZQyxFOztBQUNaOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7O0FBQ0EsTUFBTUMsTUFBTixDQUFhO0FBQ1RDLGtCQUFjO0FBQ1YsYUFBS0MsTUFBTCxHQUFjLGlCQUFkO0FBQ0EsYUFBS0MsT0FBTCxHQUFlLEVBQWY7QUFDSDtBQUNEQyxVQUFNQyxJQUFOLEVBQVlDLEtBQVosRUFBbUI7QUFDZixhQUFLSixNQUFMLENBQVlHLElB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QTFDO0FBQ0EsYUFBS3ZJLGdCQUFMLENBQXNCLGtCQUFTdUksRUFBL0I7QUFDQSxhQUFLdEksa0JBQUwsQ0FBd0Isa0JBQVNzSSxFQUFqQztBQUNBLGFBQUsvQyxhQUFMLENBQW1CLG1DQUF3QjZDLFNBQVNBLE1BQU1HLElBQU4sRUFBakMsQ0FBbkI7QUFDQSxhQUFLbEQsUUFBTDtBQUNBLGFBQUtwQixRQUFMO0FBQ0EsYUFBS0ksZUFBTDtBQUNBLGFBQUt4RSwwQkFBTDtBQUNBLGFBQUt5RCxJQUFMLENBQVUsa0JBQVNnRixFQUFuQjtBQUNIO0FBQ0RFLGFBQVM1RCxLQUFULEVBQWdCO0FBQ1osWUFBSSxDQUFDQSxLQUFMLEVBQVksT0FBTyxJQUFQO0FBQ1osZUFBTyw0QkFBbUIsS0FBS25ILEdBQXhCLEVBQTZCLEtBQUtDLElBQWxDLEVBQXdDa0gsTUFBTTZELFVBQTlDLEVBQTBEN0QsTUFBTWUsVUFBaEUsQ0FBUDtBQUNIO0FBdEZ5RDtrQkFBekN1QixhIiwiZmlsZSI6ImxpYi9jb21waWxlZC9vcGNvZGVzL2J1aWxkZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjb250ZW50IGZyb20gJy4vY29udGVudCc7XG5pbXBvcnQgKiBhcyB2bSBmcm9tICcuL3ZtJztcbmltcG9ydCB7IFJlZ2lzdGVyIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBTdGFjaywgZGljdCwgZXhwZWN0LCBmaWxsTnVsbHMsIEVNUFRZX0FSUkFZIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBDb21wb25lbnRCdWlsZGVyIH0gZnJvbSAnLi4vLi4vY29tcGlsZXInO1xuaW1wb3J0IHsgUmF3SW5saW5lQmxvY2sgfSBmcm9tICcuLi8uLi9zY2FubmVyJztcbmltcG9ydCB7IEludm9rZUR5bmFtaWNMYXlvdXQsIGV4cHIgfSBmcm9tICcuLi8uLi9zeW50YXgvZnVuY3Rpb25zJztcbmltcG9ydCB7IElzQ29tcG9uZW50RGVmaW5pdGlvblJlZmVyZW5jZSB9IGZyb20gJy4uL29wY29kZXMvY29udGVudCc7XG5jbGFzcyBMYWJlbHMge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmxhYmVscyA9IGRpY3QoKTtcbiAgICAgICAgdGhpcy50YXJnZXRzID0gW107XG4gICAgfVxuICAgIGxhYmVsKG5hbWUsIGluZGV4KSB7XG4gICAgICAgIHRoaXMubGFiZWxzW25hbWVdID0gaW5kZXg7XG4gICAgfVxuICAgIHRhcmdldChhdCwgVGFyZ2V0LCB0YXJnZXQpIHtcbiAgICAgICAgdGhpcy50YXJnZXRzLnB1c2goeyBhdCwgVGFyZ2V0LCB0YXJnZXQgfSk7XG4gICAgfVxuICAgIHBhdGNoKG9wY29kZXMpIHtcbiAgICAgICAgZm9yIChsZXQgeyBhdCwgVGFyZ2V0LCB0YXJnZXQgfSBvZiB0aGlzLnRhcmdldHMpIHtcbiAgICAgICAgICAgIG9wY29kZXMuc2V0KGF0LCBUYXJnZXQsIHRoaXMubGFiZWxzW3RhcmdldF0pO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIEJhc2ljT3Bjb2RlQnVpbGRlciB7XG4gICAgY29uc3RydWN0b3IoZW52LCBtZXRhLCBwcm9ncmFtKSB7XG4gICAgICAgIHRoaXMuZW52ID0gZW52O1xuICAgICAgICB0aGlzLm1ldGEgPSBtZXRhO1xuICAgICAgICB0aGlzLnByb2dyYW0gPSBwcm9ncmFtO1xuICAgICAgICB0aGlzLmxhYmVsc1N0YWNrID0gbmV3IFN0YWNrKCk7XG4gICAgICAgIHRoaXMuY29uc3RhbnRzID0gZW52LmNvbnN0YW50cztcbiAgICAgICAgdGhpcy5zdGFydCA9IHByb2dyYW0ubmV4dDtcbiAgICB9XG4gICAgZ2V0IHBvcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvZ3JhbS5jdXJyZW50O1xuICAgIH1cbiAgICBnZXQgbmV4dFBvcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvZ3JhbS5uZXh0O1xuICAgIH1cbiAgICB1cHZhcnMoY291bnQpIHtcbiAgICAgICAgcmV0dXJuIGZpbGxOdWxscyhjb3VudCk7XG4gICAgfVxuICAgIHJlc2VydmUobmFtZSkge1xuICAgICAgICB0aGlzLnB1c2gobmFtZSwgMCwgMCwgMCk7XG4gICAgfVxuICAgIHB1c2gobmFtZSwgb3AxID0gMCwgb3AyID0gMCwgb3AzID0gMCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9ncmFtLnB1c2gobmFtZSwgb3AxLCBvcDIsIG9wMyk7XG4gICAgfVxuICAgIGZpbmFsaXplKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wdXNoKDIyIC8qIFJldHVybiAqLyk7XG4gICAgfVxuICAgIC8vIGFyZ3NcbiAgICBwdXNoQXJncyhwb3NpdGlvbmFsLCBzeW50aGV0aWMpIHtcbiAgICAgICAgdGhpcy5wdXNoKDU4IC8qIFB1c2hBcmdzICovLCBwb3NpdGlvbmFsLCBzeW50aGV0aWMgfCAwKTtcbiAgICB9XG4gICAgLy8gaGVscGVyc1xuICAgIGdldCBsYWJlbHMoKSB7XG4gICAgICAgIHJldHVybiBleHBlY3QodGhpcy5sYWJlbHNTdGFjay5jdXJyZW50LCAnYnVnOiBub3QgaW4gYSBsYWJlbCBzdGFjaycpO1xuICAgIH1cbiAgICBzdGFydExhYmVscygpIHtcbiAgICAgICAgdGhpcy5sYWJlbHNTdGFjay5wdXNoKG5ldyBMYWJlbHMoKSk7XG4gICAgfVxuICAgIHN0b3BMYWJlbHMoKSB7XG4gICAgICAgIGxldCBsYWJlbCA9IGV4cGVjdCh0aGlzLmxhYmVsc1N0YWNrLnBvcCgpLCAndW5iYWxhbmNlZCBwdXNoIGFuZCBwb3AgbGFiZWxzJyk7XG4gICAgICAgIGxhYmVsLnBhdGNoKHRoaXMucHJvZ3JhbSk7XG4gICAgfVxuICAgIC8vIGNvbXBvbmVudHNcbiAgICBwdXNoQ29tcG9uZW50TWFuYWdlcihkZWZpbml0aW9uKSB7XG4gICAgICAgIHRoaXMucHVzaCg1NSAvKiBQdXNoQ29tcG9uZW50TWFuYWdlciAqLywgdGhpcy5vdGhlcihkZWZpbml0aW9uKSk7XG4gICAgfVxuICAgIHB1c2hEeW5hbWljQ29tcG9uZW50TWFuYWdlcigpIHtcbiAgICAgICAgdGhpcy5wdXNoKDU2IC8qIFB1c2hEeW5hbWljQ29tcG9uZW50TWFuYWdlciAqLyk7XG4gICAgfVxuICAgIGluaXRpYWxpemVDb21wb25lbnRTdGF0ZSgpIHtcbiAgICAgICAgdGhpcy5wdXNoKDU3IC8qIEluaXRpYWxpemVDb21wb25lbnRTdGF0ZSAqLyk7XG4gICAgfVxuICAgIHByZXBhcmVBcmdzKHN0YXRlKSB7XG4gICAgICAgIHRoaXMucHVzaCg1OSAvKiBQcmVwYXJlQXJncyAqLywgc3RhdGUpO1xuICAgIH1cbiAgICBjcmVhdGVDb21wb25lbnQoc3RhdGUsIGhhc0RlZmF1bHQsIGhhc0ludmVyc2UpIHtcbiAgICAgICAgbGV0IGZsYWcgPSBoYXNEZWZhdWx0IHwgMCB8IChoYXNJbnZlcnNlIHwgMCkgPDwgMTtcbiAgICAgICAgdGhpcy5wdXNoKDYwIC8qIENyZWF0ZUNvbXBvbmVudCAqLywgZmxhZywgc3RhdGUpO1xuICAgIH1cbiAgICByZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3Ioc3RhdGUpIHtcbiAgICAgICAgdGhpcy5wdXNoKDYxIC8qIFJlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvciAqLywgc3RhdGUpO1xuICAgIH1cbiAgICBiZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uKCkge1xuICAgICAgICB0aGlzLnB1c2goNjUgLyogQmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbiAqLyk7XG4gICAgfVxuICAgIGNvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uKCkge1xuICAgICAgICB0aGlzLnB1c2goNjYgLyogQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24gKi8pO1xuICAgIH1cbiAgICBwdXNoQ29tcG9uZW50T3BlcmF0aW9ucygpIHtcbiAgICAgICAgdGhpcy5wdXNoKDYyIC8qIFB1c2hDb21wb25lbnRPcGVyYXRpb25zICovKTtcbiAgICB9XG4gICAgZ2V0Q29tcG9uZW50U2VsZihzdGF0ZSkge1xuICAgICAgICB0aGlzLnB1c2goNjMgLyogR2V0Q29tcG9uZW50U2VsZiAqLywgc3RhdGUpO1xuICAgIH1cbiAgICBnZXRDb21wb25lbnRMYXlvdXQoc3RhdGUpIHtcbiAgICAgICAgdGhpcy5wdXNoKDY0IC8qIEdldENvbXBvbmVudExheW91dCAqLywgc3RhdGUpO1xuICAgIH1cbiAgICBkaWRDcmVhdGVFbGVtZW50KHN0YXRlKSB7XG4gICAgICAgIHRoaXMucHVzaCg2NyAvKiBEaWRDcmVhdGVFbGVtZW50ICovLCBzdGF0ZSk7XG4gICAgfVxuICAgIGRpZFJlbmRlckxheW91dChzdGF0ZSkge1xuICAgICAgICB0aGlzLnB1c2goNjggLyogRGlkUmVuZGVyTGF5b3V0ICovLCBzdGF0ZSk7XG4gICAgfVxuICAgIC8vIHBhcnRpYWxcbiAgICBnZXRQYXJ0aWFsVGVtcGxhdGUoKSB7XG4gICAgICAgIHRoaXMucHVzaCg2OSAvKiBHZXRQYXJ0aWFsVGVtcGxhdGUgKi8pO1xuICAgIH1cbiAgICByZXNvbHZlTWF5YmVMb2NhbChuYW1lKSB7XG4gICAgICAgIHRoaXMucHVzaCg3MCAvKiBSZXNvbHZlTWF5YmVMb2NhbCAqLywgdGhpcy5zdHJpbmcobmFtZSkpO1xuICAgIH1cbiAgICAvLyBkZWJ1Z2dlclxuICAgIGRlYnVnZ2VyKHN5bWJvbHMsIGV2YWxJbmZvKSB7XG4gICAgICAgIHRoaXMucHVzaCg3MSAvKiBEZWJ1Z2dlciAqLywgdGhpcy5jb25zdGFudHMub3RoZXIoc3ltYm9scyksIHRoaXMuY29uc3RhbnRzLmFycmF5KGV2YWxJbmZvKSk7XG4gICAgfVxuICAgIC8vIGNvbnRlbnRcbiAgICBkeW5hbWljQ29udGVudChPcGNvZGUpIHtcbiAgICAgICAgdGhpcy5wdXNoKDI1IC8qIER5bmFtaWNDb250ZW50ICovLCB0aGlzLm90aGVyKE9wY29kZSkpO1xuICAgIH1cbiAgICBjYXV0aW91c0FwcGVuZCgpIHtcbiAgICAgICAgdGhpcy5keW5hbWljQ29udGVudChuZXcgY29udGVudC5PcHRpbWl6ZWRDYXV0aW91c0FwcGVuZE9wY29kZSgpKTtcbiAgICB9XG4gICAgdHJ1c3RpbmdBcHBlbmQoKSB7XG4gICAgICAgIHRoaXMuZHluYW1pY0NvbnRlbnQobmV3IGNvbnRlbnQuT3B0aW1pemVkVHJ1c3RpbmdBcHBlbmRPcGNvZGUoKSk7XG4gICAgfVxuICAgIC8vIGRvbVxuICAgIHRleHQodGV4dCkge1xuICAgICAgICB0aGlzLnB1c2goMjMgLyogVGV4dCAqLywgdGhpcy5jb25zdGFudHMuc3RyaW5nKHRleHQpKTtcbiAgICB9XG4gICAgb3BlblByaW1pdGl2ZUVsZW1lbnQodGFnKSB7XG4gICAgICAgIHRoaXMucHVzaCgyNiAvKiBPcGVuRWxlbWVudCAqLywgdGhpcy5jb25zdGFudHMuc3RyaW5nKHRhZykpO1xuICAgIH1cbiAgICBvcGVuRWxlbWVudFdpdGhPcGVyYXRpb25zKHRhZykge1xuICAgICAgICB0aGlzLnB1c2goMjcgLyogT3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucyAqLywgdGhpcy5jb25zdGFudHMuc3RyaW5nKHRhZykpO1xuICAgIH1cbiAgICBvcGVuRHluYW1pY0VsZW1lbnQoKSB7XG4gICAgICAgIHRoaXMucHVzaCgyOCAvKiBPcGVuRHluYW1pY0VsZW1lbnQgKi8pO1xuICAgIH1cbiAgICBmbHVzaEVsZW1lbnQoKSB7XG4gICAgICAgIHRoaXMucHVzaCgzMiAvKiBGbHVzaEVsZW1lbnQgKi8pO1xuICAgIH1cbiAgICBjbG9zZUVsZW1lbnQoKSB7XG4gICAgICAgIHRoaXMucHVzaCgzMyAvKiBDbG9zZUVsZW1lbnQgKi8pO1xuICAgIH1cbiAgICBzdGF0aWNBdHRyKF9uYW1lLCBfbmFtZXNwYWNlLCBfdmFsdWUpIHtcbiAgICAgICAgbGV0IG5hbWUgPSB0aGlzLmNvbnN0YW50cy5zdHJpbmcoX25hbWUpO1xuICAgICAgICBsZXQgbmFtZXNwYWNlID0gX25hbWVzcGFjZSA/IHRoaXMuY29uc3RhbnRzLnN0cmluZyhfbmFtZXNwYWNlKSA6IDA7XG4gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuY29uc3RhbnRzLnN0cmluZyhfdmFsdWUpO1xuICAgICAgICB0aGlzLnB1c2goMjkgLyogU3RhdGljQXR0ciAqLywgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZSk7XG4gICAgfVxuICAgIGR5bmFtaWNBdHRyTlMoX25hbWUsIF9uYW1lc3BhY2UsIHRydXN0aW5nKSB7XG4gICAgICAgIGxldCBuYW1lID0gdGhpcy5jb25zdGFudHMuc3RyaW5nKF9uYW1lKTtcbiAgICAgICAgbGV0IG5hbWVzcGFjZSA9IHRoaXMuY29uc3RhbnRzLnN0cmluZyhfbmFtZXNwYWNlKTtcbiAgICAgICAgdGhpcy5wdXNoKDMxIC8qIER5bmFtaWNBdHRyTlMgKi8sIG5hbWUsIG5hbWVzcGFjZSwgdHJ1c3RpbmcgfCAwKTtcbiAgICB9XG4gICAgZHluYW1pY0F0dHIoX25hbWUsIHRydXN0aW5nKSB7XG4gICAgICAgIGxldCBuYW1lID0gdGhpcy5jb25zdGFudHMuc3RyaW5nKF9uYW1lKTtcbiAgICAgICAgdGhpcy5wdXNoKDMwIC8qIER5bmFtaWNBdHRyICovLCBuYW1lLCB0cnVzdGluZyB8IDApO1xuICAgIH1cbiAgICBjb21tZW50KF9jb21tZW50KSB7XG4gICAgICAgIGxldCBjb21tZW50ID0gdGhpcy5jb25zdGFudHMuc3RyaW5nKF9jb21tZW50KTtcbiAgICAgICAgdGhpcy5wdXNoKDI0IC8qIENvbW1lbnQgKi8sIGNvbW1lbnQpO1xuICAgIH1cbiAgICBtb2RpZmllcihfZGVmaW5pdGlvbikge1xuICAgICAgICB0aGlzLnB1c2goMzQgLyogTW9kaWZpZXIgKi8sIHRoaXMub3RoZXIoX2RlZmluaXRpb24pKTtcbiAgICB9XG4gICAgLy8gbGlzdHNcbiAgICBwdXRJdGVyYXRvcigpIHtcbiAgICAgICAgdGhpcy5wdXNoKDUzIC8qIFB1dEl0ZXJhdG9yICovKTtcbiAgICB9XG4gICAgZW50ZXJMaXN0KHN0YXJ0KSB7XG4gICAgICAgIHRoaXMucmVzZXJ2ZSg1MSAvKiBFbnRlckxpc3QgKi8pO1xuICAgICAgICB0aGlzLmxhYmVscy50YXJnZXQodGhpcy5wb3MsIDUxIC8qIEVudGVyTGlzdCAqLywgc3RhcnQpO1xuICAgIH1cbiAgICBleGl0TGlzdCgpIHtcbiAgICAgICAgdGhpcy5wdXNoKDUyIC8qIEV4aXRMaXN0ICovKTtcbiAgICB9XG4gICAgaXRlcmF0ZShicmVha3MpIHtcbiAgICAgICAgdGhpcy5yZXNlcnZlKDU0IC8qIEl0ZXJhdGUgKi8pO1xuICAgICAgICB0aGlzLmxhYmVscy50YXJnZXQodGhpcy5wb3MsIDU0IC8qIEl0ZXJhdGUgKi8sIGJyZWFrcyk7XG4gICAgfVxuICAgIC8vIGV4cHJlc3Npb25zXG4gICAgc2V0VmFyaWFibGUoc3ltYm9sKSB7XG4gICAgICAgIHRoaXMucHVzaCg0IC8qIFNldFZhcmlhYmxlICovLCBzeW1ib2wpO1xuICAgIH1cbiAgICBnZXRWYXJpYWJsZShzeW1ib2wpIHtcbiAgICAgICAgdGhpcy5wdXNoKDUgLyogR2V0VmFyaWFibGUgKi8sIHN5bWJvbCk7XG4gICAgfVxuICAgIGdldFByb3BlcnR5KGtleSkge1xuICAgICAgICB0aGlzLnB1c2goNiAvKiBHZXRQcm9wZXJ0eSAqLywgdGhpcy5zdHJpbmcoa2V5KSk7XG4gICAgfVxuICAgIGdldEJsb2NrKHN5bWJvbCkge1xuICAgICAgICB0aGlzLnB1c2goOCAvKiBHZXRCbG9jayAqLywgc3ltYm9sKTtcbiAgICB9XG4gICAgaGFzQmxvY2soc3ltYm9sKSB7XG4gICAgICAgIHRoaXMucHVzaCg5IC8qIEhhc0Jsb2NrICovLCBzeW1ib2wpO1xuICAgIH1cbiAgICBoYXNCbG9ja1BhcmFtcyhzeW1ib2wpIHtcbiAgICAgICAgdGhpcy5wdXNoKDEwIC8qIEhhc0Jsb2NrUGFyYW1zICovLCBzeW1ib2wpO1xuICAgIH1cbiAgICBjb25jYXQoc2l6ZSkge1xuICAgICAgICB0aGlzLnB1c2goMTEgLyogQ29uY2F0ICovLCBzaXplKTtcbiAgICB9XG4gICAgZnVuY3Rpb24oZikge1xuICAgICAgICB0aGlzLnB1c2goMiAvKiBGdW5jdGlvbiAqLywgdGhpcy5mdW5jKGYpKTtcbiAgICB9XG4gICAgbG9hZChyZWdpc3Rlcikge1xuICAgICAgICB0aGlzLnB1c2goMTcgLyogTG9hZCAqLywgcmVnaXN0ZXIpO1xuICAgIH1cbiAgICBmZXRjaChyZWdpc3Rlcikge1xuICAgICAgICB0aGlzLnB1c2goMTggLyogRmV0Y2ggKi8sIHJlZ2lzdGVyKTtcbiAgICB9XG4gICAgZHVwKHJlZ2lzdGVyID0gUmVnaXN0ZXIuc3AsIG9mZnNldCA9IDApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHVzaCgxNSAvKiBEdXAgKi8sIHJlZ2lzdGVyLCBvZmZzZXQpO1xuICAgIH1cbiAgICBwb3AoY291bnQgPSAxKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnB1c2goMTYgLyogUG9wICovLCBjb3VudCk7XG4gICAgfVxuICAgIC8vIHZtXG4gICAgcHVzaFJlbW90ZUVsZW1lbnQoKSB7XG4gICAgICAgIHRoaXMucHVzaCgzNSAvKiBQdXNoUmVtb3RlRWxlbWVudCAqLyk7XG4gICAgfVxuICAgIHBvcFJlbW90ZUVsZW1lbnQoKSB7XG4gICAgICAgIHRoaXMucHVzaCgzNiAvKiBQb3BSZW1vdGVFbGVtZW50ICovKTtcbiAgICB9XG4gICAgbGFiZWwobmFtZSkge1xuICAgICAgICB0aGlzLmxhYmVscy5sYWJlbChuYW1lLCB0aGlzLm5leHRQb3MpO1xuICAgIH1cbiAgICBwdXNoUm9vdFNjb3BlKHN5bWJvbHMsIGJpbmRDYWxsZXJTY29wZSkge1xuICAgICAgICB0aGlzLnB1c2goMTkgLyogUm9vdFNjb3BlICovLCBzeW1ib2xzLCBiaW5kQ2FsbGVyU2NvcGUgfCAwKTtcbiAgICB9XG4gICAgcHVzaENoaWxkU2NvcGUoKSB7XG4gICAgICAgIHRoaXMucHVzaCgyMCAvKiBDaGlsZFNjb3BlICovKTtcbiAgICB9XG4gICAgcG9wU2NvcGUoKSB7XG4gICAgICAgIHRoaXMucHVzaCgyMSAvKiBQb3BTY29wZSAqLyk7XG4gICAgfVxuICAgIHJldHVyblRvKGxhYmVsKSB7XG4gICAgICAgIHRoaXMucmVzZXJ2ZSgxMiAvKiBJbW1lZGlhdGUgKi8pO1xuICAgICAgICB0aGlzLmxhYmVscy50YXJnZXQodGhpcy5wb3MsIDEyIC8qIEltbWVkaWF0ZSAqLywgbGFiZWwpO1xuICAgICAgICB0aGlzLmxvYWQoUmVnaXN0ZXIucmEpO1xuICAgIH1cbiAgICBwdXNoRHluYW1pY1Njb3BlKCkge1xuICAgICAgICB0aGlzLnB1c2goMzggLyogUHVzaER5bmFtaWNTY29wZSAqLyk7XG4gICAgfVxuICAgIHBvcER5bmFtaWNTY29wZSgpIHtcbiAgICAgICAgdGhpcy5wdXNoKDM5IC8qIFBvcER5bmFtaWNTY29wZSAqLyk7XG4gICAgfVxuICAgIHB1c2hJbW1lZGlhdGUodmFsdWUpIHtcbiAgICAgICAgdGhpcy5wdXNoKDEzIC8qIENvbnN0YW50ICovLCB0aGlzLm90aGVyKHZhbHVlKSk7XG4gICAgfVxuICAgIHByaW1pdGl2ZShfcHJpbWl0aXZlKSB7XG4gICAgICAgIGxldCBmbGFnID0gMDtcbiAgICAgICAgbGV0IHByaW1pdGl2ZTtcbiAgICAgICAgc3dpdGNoICh0eXBlb2YgX3ByaW1pdGl2ZSkge1xuICAgICAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgICAgICAgICBwcmltaXRpdmUgPSBfcHJpbWl0aXZlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICAgICAgICBwcmltaXRpdmUgPSB0aGlzLnN0cmluZyhfcHJpbWl0aXZlKTtcbiAgICAgICAgICAgICAgICBmbGFnID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICAgICAgICAgIHByaW1pdGl2ZSA9IF9wcmltaXRpdmUgfCAwO1xuICAgICAgICAgICAgICAgIGZsYWcgPSAyO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgICAgICAgICAvLyBhc3N1bWUgbnVsbFxuICAgICAgICAgICAgICAgIHByaW1pdGl2ZSA9IDI7XG4gICAgICAgICAgICAgICAgZmxhZyA9IDI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd1bmRlZmluZWQnOlxuICAgICAgICAgICAgICAgIHByaW1pdGl2ZSA9IDM7XG4gICAgICAgICAgICAgICAgZmxhZyA9IDI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBwcmltaXRpdmUgcGFzc2VkIHRvIHB1c2hQcmltaXRpdmUnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnB1c2goMTQgLyogUHJpbWl0aXZlUmVmZXJlbmNlICovLCBmbGFnIDw8IDMwIHwgcHJpbWl0aXZlKTtcbiAgICB9XG4gICAgaGVscGVyKGZ1bmMpIHtcbiAgICAgICAgdGhpcy5wdXNoKDEgLyogSGVscGVyICovLCB0aGlzLmZ1bmMoZnVuYykpO1xuICAgIH1cbiAgICBwdXNoQmxvY2soYmxvY2spIHtcbiAgICAgICAgdGhpcy5wdXNoKDcgLyogUHVzaEJsb2NrICovLCB0aGlzLmJsb2NrKGJsb2NrKSk7XG4gICAgfVxuICAgIGJpbmREeW5hbWljU2NvcGUoX25hbWVzKSB7XG4gICAgICAgIHRoaXMucHVzaCgzNyAvKiBCaW5kRHluYW1pY1Njb3BlICovLCB0aGlzLm5hbWVzKF9uYW1lcykpO1xuICAgIH1cbiAgICBlbnRlcihhcmdzKSB7XG4gICAgICAgIHRoaXMucHVzaCg0OCAvKiBFbnRlciAqLywgYXJncyk7XG4gICAgfVxuICAgIGV4aXQoKSB7XG4gICAgICAgIHRoaXMucHVzaCg0OSAvKiBFeGl0ICovKTtcbiAgICB9XG4gICAgcmV0dXJuKCkge1xuICAgICAgICB0aGlzLnB1c2goMjIgLyogUmV0dXJuICovKTtcbiAgICB9XG4gICAgcHVzaEZyYW1lKCkge1xuICAgICAgICB0aGlzLnB1c2goNDYgLyogUHVzaEZyYW1lICovKTtcbiAgICB9XG4gICAgcG9wRnJhbWUoKSB7XG4gICAgICAgIHRoaXMucHVzaCg0NyAvKiBQb3BGcmFtZSAqLyk7XG4gICAgfVxuICAgIGNvbXBpbGVEeW5hbWljQmxvY2soKSB7XG4gICAgICAgIHRoaXMucHVzaCg0MCAvKiBDb21waWxlRHluYW1pY0Jsb2NrICovKTtcbiAgICB9XG4gICAgaW52b2tlRHluYW1pYyhpbnZva2VyKSB7XG4gICAgICAgIHRoaXMucHVzaCg0MiAvKiBJbnZva2VEeW5hbWljICovLCB0aGlzLm90aGVyKGludm9rZXIpKTtcbiAgICB9XG4gICAgaW52b2tlU3RhdGljKGJsb2NrLCBjYWxsZXJDb3VudCA9IDApIHtcbiAgICAgICAgbGV0IHsgcGFyYW1ldGVycyB9ID0gYmxvY2suc3ltYm9sVGFibGU7XG4gICAgICAgIGxldCBjYWxsZWVDb3VudCA9IHBhcmFtZXRlcnMubGVuZ3RoO1xuICAgICAgICBsZXQgY291bnQgPSBNYXRoLm1pbihjYWxsZXJDb3VudCwgY2FsbGVlQ291bnQpO1xuICAgICAgICB0aGlzLnB1c2hGcmFtZSgpO1xuICAgICAgICBpZiAoY291bnQpIHtcbiAgICAgICAgICAgIHRoaXMucHVzaENoaWxkU2NvcGUoKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuICAgICAgICAgICAgICAgIHRoaXMuZHVwKFJlZ2lzdGVyLmZwLCBjYWxsZXJDb3VudCAtIGkpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFyaWFibGUocGFyYW1ldGVyc1tpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGV0IF9ibG9jayA9IHRoaXMuY29uc3RhbnRzLmJsb2NrKGJsb2NrKTtcbiAgICAgICAgdGhpcy5wdXNoKDQxIC8qIEludm9rZVN0YXRpYyAqLywgX2Jsb2NrKTtcbiAgICAgICAgaWYgKGNvdW50KSB7XG4gICAgICAgICAgICB0aGlzLnBvcFNjb3BlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wb3BGcmFtZSgpO1xuICAgIH1cbiAgICB0ZXN0KHRlc3RGdW5jKSB7XG4gICAgICAgIGxldCBfZnVuYztcbiAgICAgICAgaWYgKHRlc3RGdW5jID09PSAnY29uc3QnKSB7XG4gICAgICAgICAgICBfZnVuYyA9IHZtLkNvbnN0VGVzdDtcbiAgICAgICAgfSBlbHNlIGlmICh0ZXN0RnVuYyA9PT0gJ3NpbXBsZScpIHtcbiAgICAgICAgICAgIF9mdW5jID0gdm0uU2ltcGxlVGVzdDtcbiAgICAgICAgfSBlbHNlIGlmICh0ZXN0RnVuYyA9PT0gJ2Vudmlyb25tZW50Jykge1xuICAgICAgICAgICAgX2Z1bmMgPSB2bS5FbnZpcm9ubWVudFRlc3Q7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRlc3RGdW5jID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBfZnVuYyA9IHRlc3RGdW5jO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bnJlYWNoYWJsZScpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBmdW5jID0gdGhpcy5jb25zdGFudHMuZnVuY3Rpb24oX2Z1bmMpO1xuICAgICAgICB0aGlzLnB1c2goNTAgLyogVGVzdCAqLywgZnVuYyk7XG4gICAgfVxuICAgIGp1bXAodGFyZ2V0KSB7XG4gICAgICAgIHRoaXMucmVzZXJ2ZSg0MyAvKiBKdW1wICovKTtcbiAgICAgICAgdGhpcy5sYWJlbHMudGFyZ2V0KHRoaXMucG9zLCA0MyAvKiBKdW1wICovLCB0YXJnZXQpO1xuICAgIH1cbiAgICBqdW1wSWYodGFyZ2V0KSB7XG4gICAgICAgIHRoaXMucmVzZXJ2ZSg0NCAvKiBKdW1wSWYgKi8pO1xuICAgICAgICB0aGlzLmxhYmVscy50YXJnZXQodGhpcy5wb3MsIDQ0IC8qIEp1bXBJZiAqLywgdGFyZ2V0KTtcbiAgICB9XG4gICAganVtcFVubGVzcyh0YXJnZXQpIHtcbiAgICAgICAgdGhpcy5yZXNlcnZlKDQ1IC8qIEp1bXBVbmxlc3MgKi8pO1xuICAgICAgICB0aGlzLmxhYmVscy50YXJnZXQodGhpcy5wb3MsIDQ1IC8qIEp1bXBVbmxlc3MgKi8sIHRhcmdldCk7XG4gICAgfVxuICAgIHN0cmluZyhfc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnN0YW50cy5zdHJpbmcoX3N0cmluZyk7XG4gICAgfVxuICAgIG5hbWVzKF9uYW1lcykge1xuICAgICAgICBsZXQgbmFtZXMgPSBfbmFtZXMubWFwKG4gPT4gdGhpcy5jb25zdGFudHMuc3RyaW5nKG4pKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uc3RhbnRzLmFycmF5KG5hbWVzKTtcbiAgICB9XG4gICAgc3ltYm9scyhzeW1ib2xzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnN0YW50cy5hcnJheShzeW1ib2xzKTtcbiAgICB9XG4gICAgb3RoZXIodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uc3RhbnRzLm90aGVyKHZhbHVlKTtcbiAgICB9XG4gICAgYmxvY2soYmxvY2spIHtcbiAgICAgICAgcmV0dXJuIGJsb2NrID8gdGhpcy5jb25zdGFudHMuYmxvY2soYmxvY2spIDogMDtcbiAgICB9XG4gICAgZnVuYyhmdW5jKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnN0YW50cy5mdW5jdGlvbihmdW5jKTtcbiAgICB9XG59XG5mdW5jdGlvbiBpc0NvbXBpbGFibGVFeHByZXNzaW9uKGV4cHIpIHtcbiAgICByZXR1cm4gZXhwciAmJiB0eXBlb2YgZXhwclsnY29tcGlsZSddID09PSAnZnVuY3Rpb24nO1xufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgT3Bjb2RlQnVpbGRlciBleHRlbmRzIEJhc2ljT3Bjb2RlQnVpbGRlciB7XG4gICAgY29uc3RydWN0b3IoZW52LCBtZXRhLCBwcm9ncmFtID0gZW52LnByb2dyYW0pIHtcbiAgICAgICAgc3VwZXIoZW52LCBtZXRhLCBwcm9ncmFtKTtcbiAgICAgICAgdGhpcy5jb21wb25lbnQgPSBuZXcgQ29tcG9uZW50QnVpbGRlcih0aGlzKTtcbiAgICB9XG4gICAgY29tcGlsZUFyZ3MocGFyYW1zLCBoYXNoLCBzeW50aGV0aWMpIHtcbiAgICAgICAgbGV0IHBvc2l0aW9uYWwgPSAwO1xuICAgICAgICBpZiAocGFyYW1zKSB7XG4gICAgICAgICAgICBwYXJhbXMuZm9yRWFjaChwID0+IGV4cHIocCwgdGhpcykpO1xuICAgICAgICAgICAgcG9zaXRpb25hbCA9IHBhcmFtcy5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IG5hbWVzID0gRU1QVFlfQVJSQVk7XG4gICAgICAgIGlmIChoYXNoKSB7XG4gICAgICAgICAgICBuYW1lcyA9IGhhc2hbMF07XG4gICAgICAgICAgICBoYXNoWzFdLmZvckVhY2godiA9PiBleHByKHYsIHRoaXMpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnB1c2hJbW1lZGlhdGUobmFtZXMpO1xuICAgICAgICB0aGlzLnB1c2hBcmdzKHBvc2l0aW9uYWwsIHN5bnRoZXRpYyk7XG4gICAgfVxuICAgIGNvbXBpbGUoZXhwcikge1xuICAgICAgICBpZiAoaXNDb21waWxhYmxlRXhwcmVzc2lvbihleHByKSkge1xuICAgICAgICAgICAgcmV0dXJuIGV4cHIuY29tcGlsZSh0aGlzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBleHByO1xuICAgICAgICB9XG4gICAgfVxuICAgIGd1YXJkZWRBcHBlbmQoZXhwcmVzc2lvbiwgdHJ1c3RpbmcpIHtcbiAgICAgICAgdGhpcy5zdGFydExhYmVscygpO1xuICAgICAgICB0aGlzLnB1c2hGcmFtZSgpO1xuICAgICAgICB0aGlzLnJldHVyblRvKCdFTkQnKTtcbiAgICAgICAgZXhwcihleHByZXNzaW9uLCB0aGlzKTtcbiAgICAgICAgdGhpcy5kdXAoKTtcbiAgICAgICAgdGhpcy50ZXN0KHJlZmVyZW5jZSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gSXNDb21wb25lbnREZWZpbml0aW9uUmVmZXJlbmNlLmNyZWF0ZShyZWZlcmVuY2UpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5lbnRlcigyKTtcbiAgICAgICAgdGhpcy5qdW1wVW5sZXNzKCdFTFNFJyk7XG4gICAgICAgIHRoaXMucHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyKCk7XG4gICAgICAgIHRoaXMuaW52b2tlQ29tcG9uZW50KG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwpO1xuICAgICAgICB0aGlzLmV4aXQoKTtcbiAgICAgICAgdGhpcy5yZXR1cm4oKTtcbiAgICAgICAgdGhpcy5sYWJlbCgnRUxTRScpO1xuICAgICAgICBpZiAodHJ1c3RpbmcpIHtcbiAgICAgICAgICAgIHRoaXMudHJ1c3RpbmdBcHBlbmQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2F1dGlvdXNBcHBlbmQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmV4aXQoKTtcbiAgICAgICAgdGhpcy5yZXR1cm4oKTtcbiAgICAgICAgdGhpcy5sYWJlbCgnRU5EJyk7XG4gICAgICAgIHRoaXMucG9wRnJhbWUoKTtcbiAgICAgICAgdGhpcy5zdG9wTGFiZWxzKCk7XG4gICAgfVxuICAgIGd1YXJkZWRDYXV0aW91c0FwcGVuZChleHByZXNzaW9uKSB7XG4gICAgICAgIGV4cHIoZXhwcmVzc2lvbiwgdGhpcyk7XG4gICAgICAgIHRoaXMuZHluYW1pY0NvbnRlbnQobmV3IGNvbnRlbnQuR3VhcmRlZENhdXRpb3VzQXBwZW5kT3Bjb2RlKCkpO1xuICAgIH1cbiAgICBndWFyZGVkVHJ1c3RpbmdBcHBlbmQoZXhwcmVzc2lvbikge1xuICAgICAgICBleHByKGV4cHJlc3Npb24sIHRoaXMpO1xuICAgICAgICB0aGlzLmR5bmFtaWNDb250ZW50KG5ldyBjb250ZW50Lkd1YXJkZWRUcnVzdGluZ0FwcGVuZE9wY29kZSgpKTtcbiAgICB9XG4gICAgaW52b2tlQ29tcG9uZW50KGF0dHJzLCBwYXJhbXMsIGhhc2gsIGJsb2NrLCBpbnZlcnNlID0gbnVsbCkge1xuICAgICAgICB0aGlzLmluaXRpYWxpemVDb21wb25lbnRTdGF0ZSgpO1xuICAgICAgICB0aGlzLmZldGNoKFJlZ2lzdGVyLnMwKTtcbiAgICAgICAgdGhpcy5kdXAoUmVnaXN0ZXIuc3AsIDEpO1xuICAgICAgICB0aGlzLmxvYWQoUmVnaXN0ZXIuczApO1xuICAgICAgICB0aGlzLnB1c2hCbG9jayhibG9jayk7XG4gICAgICAgIHRoaXMucHVzaEJsb2NrKGludmVyc2UpO1xuICAgICAgICB0aGlzLmNvbXBpbGVBcmdzKHBhcmFtcywgaGFzaCwgZmFsc2UpO1xuICAgICAgICB0aGlzLnByZXBhcmVBcmdzKFJlZ2lzdGVyLnMwKTtcbiAgICAgICAgdGhpcy5iZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uKCk7XG4gICAgICAgIHRoaXMucHVzaER5bmFtaWNTY29wZSgpO1xuICAgICAgICB0aGlzLmNyZWF0ZUNvbXBvbmVudChSZWdpc3Rlci5zMCwgdHJ1ZSwgaW52ZXJzZSA9PT0gbnVsbCk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yKFJlZ2lzdGVyLnMwKTtcbiAgICAgICAgdGhpcy5nZXRDb21wb25lbnRTZWxmKFJlZ2lzdGVyLnMwKTtcbiAgICAgICAgdGhpcy5nZXRDb21wb25lbnRMYXlvdXQoUmVnaXN0ZXIuczApO1xuICAgICAgICB0aGlzLmludm9rZUR5bmFtaWMobmV3IEludm9rZUR5bmFtaWNMYXlvdXQoYXR0cnMgJiYgYXR0cnMuc2NhbigpKSk7XG4gICAgICAgIHRoaXMucG9wRnJhbWUoKTtcbiAgICAgICAgdGhpcy5wb3BTY29wZSgpO1xuICAgICAgICB0aGlzLnBvcER5bmFtaWNTY29wZSgpO1xuICAgICAgICB0aGlzLmNvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uKCk7XG4gICAgICAgIHRoaXMubG9hZChSZWdpc3Rlci5zMCk7XG4gICAgfVxuICAgIHRlbXBsYXRlKGJsb2NrKSB7XG4gICAgICAgIGlmICghYmxvY2spIHJldHVybiBudWxsO1xuICAgICAgICByZXR1cm4gbmV3IFJhd0lubGluZUJsb2NrKHRoaXMuZW52LCB0aGlzLm1ldGEsIGJsb2NrLnN0YXRlbWVudHMsIGJsb2NrLnBhcmFtZXRlcnMpO1xuICAgIH1cbn0iXX0=

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

var _reference = require('@glimmer/reference');
var _opcodes = require('../../opcodes');
var _vm2 = require('./vm');
var _arguments = require('../../vm/arguments');

@@ -19,3 +19,3 @@

var _vm2 = require('./vm');
var _reference = require('@glimmer/reference');

@@ -75,4 +75,3 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

_opcodes.APPEND_OPCODES.add(60 /* CreateComponent */, (vm, { op1: flags, op2: _state }) => {
let definition;
let manager;
let definition, manager;
let args = vm.stack.pop();

@@ -126,3 +125,3 @@ let dynamicScope = vm.dynamicScope();

this.dynamicScope = dynamicScope;
this.type = 'update-component';
this.type = "update-component";
let componentTag = manager.getTag(component);

@@ -141,5 +140,5 @@ if (componentTag) {

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

@@ -155,3 +154,3 @@ }

this.bounds = bounds;
this.type = 'did-update-layout';
this.type = "did-update-layout";
this.tag = _reference.CONSTANT_TAG;

@@ -166,2 +165,2 @@ }

exports.DidUpdateLayoutOpcode = DidUpdateLayoutOpcode;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2NvbXBvbmVudC5qcyJdLCJuYW1lcyI6WyJhZGQiLCJ2bSIsIm9wMSIsIl9kZWZpbml0aW9uIiwiZGVmaW5pdGlvbiIsImNvbnN0YW50cyIsImdldE90aGVyIiwic3RhY2siLCJwdXNoIiwibWFuYWdlciIsInJlZmVyZW5jZSIsInBvcCIsImNhY2hlIiwidW5kZWZpbmVkIiwicGVlayIsInZhbHVlIiwidXBkYXRlV2l0aCIsImNvbXBvbmVudCIsInBvc2l0aW9uYWwiLCJvcDIiLCJzeW50aGV0aWMiLCJzZXR1cCIsIl9zdGF0ZSIsImZldGNoVmFsdWUiLCJhcmdzIiwicHJlcGFyZWRBcmdzIiwicHJlcGFyZUFyZ3MiLCJjbGVhciIsIm5hbWVkIiwicG9zaXRpb25hbENvdW50IiwibGVuZ3RoIiwiaSIsIm5hbWVzIiwiT2JqZWN0Iiwia2V5cyIsIm5hbWVkQ291bnQiLCJmbGFncyIsImR5bmFtaWNTY29wZSIsInN0YXRlIiwiaGFzRGVmYXVsdEJsb2NrIiwiY3JlYXRlIiwiZW52IiwiZ2V0U2VsZiIsIlVwZGF0ZUNvbXBvbmVudE9wY29kZSIsInRhZyIsIm5hbWUiLCJkZXN0cnVjdG9yIiwiZ2V0RGVzdHJ1Y3RvciIsIm5ld0Rlc3Ryb3lhYmxlIiwiYmVnaW5DYWNoZUdyb3VwIiwiZWxlbWVudHMiLCJwdXNoU2ltcGxlQmxvY2siLCJhY3Rpb24iLCJkaWRDcmVhdGVFbGVtZW50IiwiZXhwZWN0Q29uc3RydWN0aW5nIiwiZXhwZWN0T3BlcmF0aW9ucyIsImxheW91dEZvciIsImJvdW5kcyIsInBvcEJsb2NrIiwiZGlkUmVuZGVyTGF5b3V0IiwiZGlkQ3JlYXRlIiwiRGlkVXBkYXRlTGF5b3V0T3Bjb2RlIiwiY29tbWl0Q2FjaGVHcm91cCIsImNvbnN0cnVjdG9yIiwidHlwZSIsImNvbXBvbmVudFRhZyIsImdldFRhZyIsImV2YWx1YXRlIiwiX3ZtIiwidXBkYXRlIiwidG9KU09OIiwiSlNPTiIsInN0cmluZ2lmeSIsImd1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LFNBQUwsR0FBaUJBLFNBQWpCO0FBQ0EsYUFBS3dDLE1BQUwsR0FBY0EsTUFBZDtBQUNBLGFBQUtPLElBQUwsR0FBWSxtQkFBWjtBQUNBLGFBQUtwQixHQUFMO0FBQ0g7QUFDRHVCLGFBQVNsRSxFQUFULEVBQWE7QUFDVCxZQUFJLEVBQUVRLE9BQUYsRUFBV1EsU0FBWCxFQUFzQndDLE1BQXRCLEtBQWlDLElBQXJDO0FBQ0FoRCxnQkFBUWtFLGVBQVIsQ0FBd0IxRCxTQUF4QixFQUFtQ3dDLE1BQW5DO0FBQ0F4RCxXQUFHd0MsR0FBSCxDQUFPbUMsU0FBUCxDQUFpQjNELFNBQWpCLEVBQTRCUixPQUE1QjtBQUNIO0FBYnFEO1FBQTdDb0QscUIsR0FBQUEscUIiLCJmaWxlIjoibGliL2NvbXBpbGVkL29wY29kZXMvY29tcG9uZW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tYmluZSwgQ09OU1RBTlRfVEFHLCBpc0NvbnN0LCBSZWZlcmVuY2VDYWNoZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBBUFBFTkRfT1BDT0RFUywgVXBkYXRpbmdPcGNvZGUgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCBBUkdTIGZyb20gJy4uLy4uL3ZtL2FyZ3VtZW50cyc7XG5pbXBvcnQgeyBDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyB9IGZyb20gJy4vZG9tJztcbmltcG9ydCB7IEFzc2VydCB9IGZyb20gJy4vdm0nO1xuQVBQRU5EX09QQ09ERVMuYWRkKDU1IC8qIFB1c2hDb21wb25lbnRNYW5hZ2VyICovLCAodm0sIHsgb3AxOiBfZGVmaW5pdGlvbiB9KSA9PiB7XG4gICAgbGV0IGRlZmluaXRpb24gPSB2bS5jb25zdGFudHMuZ2V0T3RoZXIoX2RlZmluaXRpb24pO1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIHN0YWNrLnB1c2goZGVmaW5pdGlvbik7XG4gICAgc3RhY2sucHVzaChkZWZpbml0aW9uLm1hbmFnZXIpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTYgLyogUHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyICovLCB2bSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IHJlZmVyZW5jZSA9IHN0YWNrLnBvcCgpO1xuICAgIGxldCBjYWNoZSA9IGlzQ29uc3QocmVmZXJlbmNlKSA/IHVuZGVmaW5lZCA6IG5ldyBSZWZlcmVuY2VDYWNoZShyZWZlcmVuY2UpO1xuICAgIGxldCBkZWZpbml0aW9uID0gY2FjaGUgPyBjYWNoZS5wZWVrKCkgOiByZWZlcmVuY2UudmFsdWUoKTtcbiAgICBzdGFjay5wdXNoKGRlZmluaXRpb24pO1xuICAgIHN0YWNrLnB1c2goZGVmaW5pdGlvbi5tYW5hZ2VyKTtcbiAgICBpZiAoY2FjaGUpIHtcbiAgICAgICAgdm0udXBkYXRlV2l0aChuZXcgQXNzZXJ0KGNhY2hlKSk7XG4gICAgfVxufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTcgLyogSW5pdGlhbGl6ZUNvbXBvbmVudFN0YXRlICovLCB2bSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IG1hbmFnZXIgPSBzdGFjay5wb3AoKTtcbiAgICBsZXQgZGVmaW5pdGlvbiA9IHN0YWNrLnBvcCgpO1xuICAgIHN0YWNrLnB1c2goeyBkZWZpbml0aW9uLCBtYW5hZ2VyLCBjb21wb25lbnQ6IG51bGwgfSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg1OCAvKiBQdXNoQXJncyAqLywgKHZtLCB7IG9wMTogcG9zaXRpb25hbCwgb3AyOiBzeW50aGV0aWMgfSkgPT4ge1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIEFSR1Muc2V0dXAoc3RhY2ssIHBvc2l0aW9uYWwsICEhc3ludGhldGljKTtcbiAgICBzdGFjay5wdXNoKEFSR1MpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTkgLyogUHJlcGFyZUFyZ3MgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IHsgZGVmaW5pdGlvbiwgbWFuYWdlciB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIGxldCBhcmdzID0gc3RhY2sucG9wKCk7XG4gICAgbGV0IHByZXBhcmVkQXJncyA9IG1hbmFnZXIucHJlcGFyZUFyZ3MoZGVmaW5pdGlvbiwgYXJncyk7XG4gICAgaWYgKHByZXBhcmVkQXJncykge1xuICAgICAgICBhcmdzLmNsZWFyKCk7XG4gICAgICAgIGxldCB7IHBvc2l0aW9uYWwsIG5hbWVkIH0gPSBwcmVwYXJlZEFyZ3M7XG4gICAgICAgIGxldCBwb3NpdGlvbmFsQ291bnQgPSBwb3NpdGlvbmFsLmxlbmd0aDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbmFsQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgc3RhY2sucHVzaChwb3NpdGlvbmFsW2ldKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbmFtZXMgPSBPYmplY3Qua2V5cyhuYW1lZCk7XG4gICAgICAgIGxldCBuYW1lZENvdW50ID0gbmFtZXMubGVuZ3RoO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVkQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgc3RhY2sucHVzaChuYW1lZFtuYW1lc1tpXV0pO1xuICAgICAgICB9XG4gICAgICAgIHN0YWNrLnB1c2gobmFtZXMpO1xuICAgICAgICBhcmdzLnNldHVwKHN0YWNrLCBwb3NpdGlvbmFsQ291bnQsIHRydWUpO1xuICAgIH1cbiAgICBzdGFjay5wdXNoKGFyZ3MpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjAgLyogQ3JlYXRlQ29tcG9uZW50ICovLCAodm0sIHsgb3AxOiBmbGFncywgb3AyOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCBkZWZpbml0aW9uO1xuICAgIGxldCBtYW5hZ2VyO1xuICAgIGxldCBhcmdzID0gdm0uc3RhY2sucG9wKCk7XG4gICAgbGV0IGR5bmFtaWNTY29wZSA9IHZtLmR5bmFtaWNTY29wZSgpO1xuICAgIGxldCBzdGF0ZSA9ICh7IGRlZmluaXRpb24sIG1hbmFnZXIgfSA9IHZtLmZldGNoVmFsdWUoX3N0YXRlKSk7XG4gICAgbGV0IGhhc0RlZmF1bHRCbG9jayA9IGZsYWdzICYgMGIwMTtcbiAgICBsZXQgY29tcG9uZW50ID0gbWFuYWdlci5jcmVhdGUodm0uZW52LCBkZWZpbml0aW9uLCBhcmdzLCBkeW5hbWljU2NvcGUsIHZtLmdldFNlbGYoKSwgISFoYXNEZWZhdWx0QmxvY2spO1xuICAgIHN0YXRlLmNvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgICB2bS51cGRhdGVXaXRoKG5ldyBVcGRhdGVDb21wb25lbnRPcGNvZGUoYXJncy50YWcsIGRlZmluaXRpb24ubmFtZSwgY29tcG9uZW50LCBtYW5hZ2VyLCBkeW5hbWljU2NvcGUpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDYxIC8qIFJlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvciAqLywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgeyBtYW5hZ2VyLCBjb21wb25lbnQgfSA9IHZtLmZldGNoVmFsdWUoX3N0YXRlKTtcbiAgICBsZXQgZGVzdHJ1Y3RvciA9IG1hbmFnZXIuZ2V0RGVzdHJ1Y3Rvcihjb21wb25lbnQpO1xuICAgIGlmIChkZXN0cnVjdG9yKSB2bS5uZXdEZXN0cm95YWJsZShkZXN0cnVjdG9yKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDY1IC8qIEJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24gKi8sIHZtID0+IHtcbiAgICB2bS5iZWdpbkNhY2hlR3JvdXAoKTtcbiAgICB2bS5lbGVtZW50cygpLnB1c2hTaW1wbGVCbG9jaygpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjIgLyogUHVzaENvbXBvbmVudE9wZXJhdGlvbnMgKi8sIHZtID0+IHtcbiAgICB2bS5zdGFjay5wdXNoKG5ldyBDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyh2bS5lbnYpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDY3IC8qIERpZENyZWF0ZUVsZW1lbnQgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgbGV0IGFjdGlvbiA9ICdEaWRDcmVhdGVFbGVtZW50T3Bjb2RlI2V2YWx1YXRlJztcbiAgICBtYW5hZ2VyLmRpZENyZWF0ZUVsZW1lbnQoY29tcG9uZW50LCB2bS5lbGVtZW50cygpLmV4cGVjdENvbnN0cnVjdGluZyhhY3Rpb24pLCB2bS5lbGVtZW50cygpLmV4cGVjdE9wZXJhdGlvbnMoYWN0aW9uKSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2MyAvKiBHZXRDb21wb25lbnRTZWxmICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCBzdGF0ZSA9IHZtLmZldGNoVmFsdWUoX3N0YXRlKTtcbiAgICB2bS5zdGFjay5wdXNoKHN0YXRlLm1hbmFnZXIuZ2V0U2VsZihzdGF0ZS5jb21wb25lbnQpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDY0IC8qIEdldENvbXBvbmVudExheW91dCAqLywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgeyBtYW5hZ2VyLCBkZWZpbml0aW9uLCBjb21wb25lbnQgfSA9IHZtLmZldGNoVmFsdWUoX3N0YXRlKTtcbiAgICB2bS5zdGFjay5wdXNoKG1hbmFnZXIubGF5b3V0Rm9yKGRlZmluaXRpb24sIGNvbXBvbmVudCwgdm0uZW52KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2OCAvKiBEaWRSZW5kZXJMYXlvdXQgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgbGV0IGJvdW5kcyA9IHZtLmVsZW1lbnRzKCkucG9wQmxvY2soKTtcbiAgICBtYW5hZ2VyLmRpZFJlbmRlckxheW91dChjb21wb25lbnQsIGJvdW5kcyk7XG4gICAgdm0uZW52LmRpZENyZWF0ZShjb21wb25lbnQsIG1hbmFnZXIpO1xuICAgIHZtLnVwZGF0ZVdpdGgobmV3IERpZFVwZGF0ZUxheW91dE9wY29kZShtYW5hZ2VyLCBjb21wb25lbnQsIGJvdW5kcykpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjYgLyogQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24gKi8sIHZtID0+IHZtLmNvbW1pdENhY2hlR3JvdXAoKSk7XG5leHBvcnQgY2xhc3MgVXBkYXRlQ29tcG9uZW50T3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKHRhZywgbmFtZSwgY29tcG9uZW50LCBtYW5hZ2VyLCBkeW5hbWljU2NvcGUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5jb21wb25lbnQgPSBjb21wb25lbnQ7XG4gICAgICAgIHRoaXMubWFuYWdlciA9IG1hbmFnZXI7XG4gICAgICAgIHRoaXMuZHluYW1pY1Njb3BlID0gZHluYW1pY1Njb3BlO1xuICAgICAgICB0aGlzLnR5cGUgPSAndXBkYXRlLWNvbXBvbmVudCc7XG4gICAgICAgIGxldCBjb21wb25lbnRUYWcgPSBtYW5hZ2VyLmdldFRhZyhjb21wb25lbnQpO1xuICAgICAgICBpZiAoY29tcG9uZW50VGFnKSB7XG4gICAgICAgICAgICB0aGlzLnRhZyA9IGNvbWJpbmUoW3RhZywgY29tcG9uZW50VGFnXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRhZyA9IHRhZztcbiAgICAgICAgfVxuICAgIH1cbiAgICBldmFsdWF0ZShfdm0pIHtcbiAgICAgICAgbGV0IHsgY29tcG9uZW50LCBtYW5hZ2VyLCBkeW5hbWljU2NvcGUgfSA9IHRoaXM7XG4gICAgICAgIG1hbmFnZXIudXBkYXRlKGNvbXBvbmVudCwgZHluYW1pY1Njb3BlKTtcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYXJnczogW0pTT04uc3RyaW5naWZ5KHRoaXMubmFtZSldLFxuICAgICAgICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZVxuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBEaWRVcGRhdGVMYXlvdXRPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gICAgY29uc3RydWN0b3IobWFuYWdlciwgY29tcG9uZW50LCBib3VuZHMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5tYW5hZ2VyID0gbWFuYWdlcjtcbiAgICAgICAgdGhpcy5jb21wb25lbnQgPSBjb21wb25lbnQ7XG4gICAgICAgIHRoaXMuYm91bmRzID0gYm91bmRzO1xuICAgICAgICB0aGlzLnR5cGUgPSAnZGlkLXVwZGF0ZS1sYXlvdXQnO1xuICAgICAgICB0aGlzLnRhZyA9IENPTlNUQU5UX1RBRztcbiAgICB9XG4gICAgZXZhbHVhdGUodm0pIHtcbiAgICAgICAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50LCBib3VuZHMgfSA9IHRoaXM7XG4gICAgICAgIG1hbmFnZXIuZGlkVXBkYXRlTGF5b3V0KGNvbXBvbmVudCwgYm91bmRzKTtcbiAgICAgICAgdm0uZW52LmRpZFVwZGF0ZShjb21wb25lbnQsIG1hbmFnZXIpO1xuICAgIH1cbn0iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2NvbXBvbmVudC5qcyJdLCJuYW1lcyI6WyJhZGQiLCJ2bSIsIm9wMSIsIl9kZWZpbml0aW9uIiwiZGVmaW5pdGlvbiIsImNvbnN0YW50cyIsImdldE90aGVyIiwic3RhY2siLCJwdXNoIiwibWFuYWdlciIsInJlZmVyZW5jZSIsInBvcCIsImNhY2hlIiwidW5kZWZpbmVkIiwicGVlayIsInZhbHVlIiwidXBkYXRlV2l0aCIsImNvbXBvbmVudCIsInBvc2l0aW9uYWwiLCJvcDIiLCJzeW50aGV0aWMiLCJzZXR1cCIsIl9zdGF0ZSIsImZldGNoVmFsdWUiLCJhcmdzIiwicHJlcGFyZWRBcmdzIiwicHJlcGFyZUFyZ3MiLCJjbGVhciIsIm5hbWVkIiwicG9zaXRpb25hbENvdW50IiwibGVuZ3RoIiwiaSIsIm5hbWVzIiwiT2JqZWN0Iiwia2V5cyIsIm5hbWVkQ291bnQiLCJmbGFncyIsImR5bmFtaWNTY29wZSIsInN0YXRlIiwiaGFzRGVmYXVsdEJsb2NrIiwiY3JlYXRlIiwiZW52IiwiZ2V0U2VsZiIsIlVwZGF0ZUNvbXBvbmVudE9wY29kZSIsInRhZyIsIm5hbWUiLCJkZXN0cnVjdG9yIiwiZ2V0RGVzdHJ1Y3RvciIsIm5ld0Rlc3Ryb3lhYmxlIiwiYmVnaW5DYWNoZUdyb3VwIiwiZWxlbWVudHMiLCJwdXNoU2ltcGxlQmxvY2siLCJhY3Rpb24iLCJkaWRDcmVhdGVFbGVtZW50IiwiZXhwZWN0Q29uc3RydWN0aW5nIiwiZXhwZWN0T3BlcmF0aW9ucyIsImxheW91dEZvciIsImJvdW5kcyIsInBvcEJsb2NrIiwiZGlkUmVuZGVyTGF5b3V0IiwiZGlkQ3JlYXRlIiwiRGlkVXBkYXRlTGF5b3V0T3Bjb2RlIiwiY29tbWl0Q2FjaGVHcm91cCIsImNvbnN0cnVjdG9yIiwidHlwZSIsImNvbXBvbmVudFRhZyIsImdldFRhZyIsImV2YWx1YXRlIiwiX3ZtIiwidXBkYXRlIiwidG9KU09OIiwiZ3VpZCIsIl9ndWlkIiwiSlNPTiIs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LEdBQWlCQSxTQUFqQjtBQUNBLGFBQUt3QyxNQUFMLEdBQWNBLE1BQWQ7QUFDQSxhQUFLTyxJQUFMLEdBQVksbUJBQVo7QUFDQSxhQUFLcEIsR0FBTDtBQUNIO0FBQ0R1QixhQUFTbEUsRUFBVCxFQUFhO0FBQ1QsWUFBSSxFQUFFUSxPQUFGLEVBQVdRLFNBQVgsRUFBc0J3QyxNQUF0QixLQUFpQyxJQUFyQztBQUNBaEQsZ0JBQVFrRSxlQUFSLENBQXdCMUQsU0FBeEIsRUFBbUN3QyxNQUFuQztBQUNBeEQsV0FBR3dDLEdBQUgsQ0FBT21DLFNBQVAsQ0FBaUIzRCxTQUFqQixFQUE0QlIsT0FBNUI7QUFDSDtBQWJxRDtRQUE3Q29ELHFCLEdBQUFBLHFCIiwiZmlsZSI6ImxpYi9jb21waWxlZC9vcGNvZGVzL2NvbXBvbmVudC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUEVORF9PUENPREVTLCBVcGRhdGluZ09wY29kZSB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IHsgQXNzZXJ0IH0gZnJvbSAnLi92bSc7XG5pbXBvcnQgQVJHUyBmcm9tICcuLi8uLi92bS9hcmd1bWVudHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50RWxlbWVudE9wZXJhdGlvbnMgfSBmcm9tICcuL2RvbSc7XG5pbXBvcnQgeyBDT05TVEFOVF9UQUcsIFJlZmVyZW5jZUNhY2hlLCBjb21iaW5lLCBpc0NvbnN0IH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbkFQUEVORF9PUENPREVTLmFkZCg1NSAvKiBQdXNoQ29tcG9uZW50TWFuYWdlciAqLywgKHZtLCB7IG9wMTogX2RlZmluaXRpb24gfSkgPT4ge1xuICAgIGxldCBkZWZpbml0aW9uID0gdm0uY29uc3RhbnRzLmdldE90aGVyKF9kZWZpbml0aW9uKTtcbiAgICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgICBzdGFjay5wdXNoKGRlZmluaXRpb24pO1xuICAgIHN0YWNrLnB1c2goZGVmaW5pdGlvbi5tYW5hZ2VyKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDU2IC8qIFB1c2hEeW5hbWljQ29tcG9uZW50TWFuYWdlciAqLywgdm0gPT4ge1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIGxldCByZWZlcmVuY2UgPSBzdGFjay5wb3AoKTtcbiAgICBsZXQgY2FjaGUgPSBpc0NvbnN0KHJlZmVyZW5jZSkgPyB1bmRlZmluZWQgOiBuZXcgUmVmZXJlbmNlQ2FjaGUocmVmZXJlbmNlKTtcbiAgICBsZXQgZGVmaW5pdGlvbiA9IGNhY2hlID8gY2FjaGUucGVlaygpIDogcmVmZXJlbmNlLnZhbHVlKCk7XG4gICAgc3RhY2sucHVzaChkZWZpbml0aW9uKTtcbiAgICBzdGFjay5wdXNoKGRlZmluaXRpb24ubWFuYWdlcik7XG4gICAgaWYgKGNhY2hlKSB7XG4gICAgICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICAgIH1cbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDU3IC8qIEluaXRpYWxpemVDb21wb25lbnRTdGF0ZSAqLywgdm0gPT4ge1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIGxldCBtYW5hZ2VyID0gc3RhY2sucG9wKCk7XG4gICAgbGV0IGRlZmluaXRpb24gPSBzdGFjay5wb3AoKTtcbiAgICBzdGFjay5wdXNoKHsgZGVmaW5pdGlvbiwgbWFuYWdlciwgY29tcG9uZW50OiBudWxsIH0pO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTggLyogUHVzaEFyZ3MgKi8sICh2bSwgeyBvcDE6IHBvc2l0aW9uYWwsIG9wMjogc3ludGhldGljIH0pID0+IHtcbiAgICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgICBBUkdTLnNldHVwKHN0YWNrLCBwb3NpdGlvbmFsLCAhIXN5bnRoZXRpYyk7XG4gICAgc3RhY2sucHVzaChBUkdTKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDU5IC8qIFByZXBhcmVBcmdzICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIGxldCB7IGRlZmluaXRpb24sIG1hbmFnZXIgfSA9IHZtLmZldGNoVmFsdWUoX3N0YXRlKTtcbiAgICBsZXQgYXJncyA9IHN0YWNrLnBvcCgpO1xuICAgIGxldCBwcmVwYXJlZEFyZ3MgPSBtYW5hZ2VyLnByZXBhcmVBcmdzKGRlZmluaXRpb24sIGFyZ3MpO1xuICAgIGlmIChwcmVwYXJlZEFyZ3MpIHtcbiAgICAgICAgYXJncy5jbGVhcigpO1xuICAgICAgICBsZXQgeyBwb3NpdGlvbmFsLCBuYW1lZCB9ID0gcHJlcGFyZWRBcmdzO1xuICAgICAgICBsZXQgcG9zaXRpb25hbENvdW50ID0gcG9zaXRpb25hbC5sZW5ndGg7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25hbENvdW50OyBpKyspIHtcbiAgICAgICAgICAgIHN0YWNrLnB1c2gocG9zaXRpb25hbFtpXSk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IG5hbWVzID0gT2JqZWN0LmtleXMobmFtZWQpO1xuICAgICAgICBsZXQgbmFtZWRDb3VudCA9IG5hbWVzLmxlbmd0aDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lZENvdW50OyBpKyspIHtcbiAgICAgICAgICAgIHN0YWNrLnB1c2gobmFtZWRbbmFtZXNbaV1dKTtcbiAgICAgICAgfVxuICAgICAgICBzdGFjay5wdXNoKG5hbWVzKTtcbiAgICAgICAgYXJncy5zZXR1cChzdGFjaywgcG9zaXRpb25hbENvdW50LCB0cnVlKTtcbiAgICB9XG4gICAgc3RhY2sucHVzaChhcmdzKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDYwIC8qIENyZWF0ZUNvbXBvbmVudCAqLywgKHZtLCB7IG9wMTogZmxhZ3MsIG9wMjogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgZGVmaW5pdGlvbiwgbWFuYWdlcjtcbiAgICBsZXQgYXJncyA9IHZtLnN0YWNrLnBvcCgpO1xuICAgIGxldCBkeW5hbWljU2NvcGUgPSB2bS5keW5hbWljU2NvcGUoKTtcbiAgICBsZXQgc3RhdGUgPSAoeyBkZWZpbml0aW9uLCBtYW5hZ2VyIH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSkpO1xuICAgIGxldCBoYXNEZWZhdWx0QmxvY2sgPSBmbGFncyAmIDBiMDE7XG4gICAgbGV0IGNvbXBvbmVudCA9IG1hbmFnZXIuY3JlYXRlKHZtLmVudiwgZGVmaW5pdGlvbiwgYXJncywgZHluYW1pY1Njb3BlLCB2bS5nZXRTZWxmKCksICEhaGFzRGVmYXVsdEJsb2NrKTtcbiAgICBzdGF0ZS5jb21wb25lbnQgPSBjb21wb25lbnQ7XG4gICAgdm0udXBkYXRlV2l0aChuZXcgVXBkYXRlQ29tcG9uZW50T3Bjb2RlKGFyZ3MudGFnLCBkZWZpbml0aW9uLm5hbWUsIGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlKSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2MSAvKiBSZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3IgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgbGV0IGRlc3RydWN0b3IgPSBtYW5hZ2VyLmdldERlc3RydWN0b3IoY29tcG9uZW50KTtcbiAgICBpZiAoZGVzdHJ1Y3Rvcikgdm0ubmV3RGVzdHJveWFibGUoZGVzdHJ1Y3Rvcik7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2NSAvKiBCZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uICovLCB2bSA9PiB7XG4gICAgdm0uYmVnaW5DYWNoZUdyb3VwKCk7XG4gICAgdm0uZWxlbWVudHMoKS5wdXNoU2ltcGxlQmxvY2soKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDYyIC8qIFB1c2hDb21wb25lbnRPcGVyYXRpb25zICovLCB2bSA9PiB7XG4gICAgdm0uc3RhY2sucHVzaChuZXcgQ29tcG9uZW50RWxlbWVudE9wZXJhdGlvbnModm0uZW52KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2NyAvKiBEaWRDcmVhdGVFbGVtZW50ICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCB7IG1hbmFnZXIsIGNvbXBvbmVudCB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIGxldCBhY3Rpb24gPSAnRGlkQ3JlYXRlRWxlbWVudE9wY29kZSNldmFsdWF0ZSc7XG4gICAgbWFuYWdlci5kaWRDcmVhdGVFbGVtZW50KGNvbXBvbmVudCwgdm0uZWxlbWVudHMoKS5leHBlY3RDb25zdHJ1Y3RpbmcoYWN0aW9uKSwgdm0uZWxlbWVudHMoKS5leHBlY3RPcGVyYXRpb25zKGFjdGlvbikpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjMgLyogR2V0Q29tcG9uZW50U2VsZiAqLywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgc3RhdGUgPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgdm0uc3RhY2sucHVzaChzdGF0ZS5tYW5hZ2VyLmdldFNlbGYoc3RhdGUuY29tcG9uZW50KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2NCAvKiBHZXRDb21wb25lbnRMYXlvdXQgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHsgbWFuYWdlciwgZGVmaW5pdGlvbiwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgdm0uc3RhY2sucHVzaChtYW5hZ2VyLmxheW91dEZvcihkZWZpbml0aW9uLCBjb21wb25lbnQsIHZtLmVudikpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjggLyogRGlkUmVuZGVyTGF5b3V0ICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCB7IG1hbmFnZXIsIGNvbXBvbmVudCB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIGxldCBib3VuZHMgPSB2bS5lbGVtZW50cygpLnBvcEJsb2NrKCk7XG4gICAgbWFuYWdlci5kaWRSZW5kZXJMYXlvdXQoY29tcG9uZW50LCBib3VuZHMpO1xuICAgIHZtLmVudi5kaWRDcmVhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcbiAgICB2bS51cGRhdGVXaXRoKG5ldyBEaWRVcGRhdGVMYXlvdXRPcGNvZGUobWFuYWdlciwgY29tcG9uZW50LCBib3VuZHMpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDY2IC8qIENvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uICovLCB2bSA9PiB2bS5jb21taXRDYWNoZUdyb3VwKCkpO1xuZXhwb3J0IGNsYXNzIFVwZGF0ZUNvbXBvbmVudE9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3Rvcih0YWcsIG5hbWUsIGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuY29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgICAgICB0aGlzLm1hbmFnZXIgPSBtYW5hZ2VyO1xuICAgICAgICB0aGlzLmR5bmFtaWNTY29wZSA9IGR5bmFtaWNTY29wZTtcbiAgICAgICAgdGhpcy50eXBlID0gXCJ1cGRhdGUtY29tcG9uZW50XCI7XG4gICAgICAgIGxldCBjb21wb25lbnRUYWcgPSBtYW5hZ2VyLmdldFRhZyhjb21wb25lbnQpO1xuICAgICAgICBpZiAoY29tcG9uZW50VGFnKSB7XG4gICAgICAgICAgICB0aGlzLnRhZyA9IGNvbWJpbmUoW3RhZywgY29tcG9uZW50VGFnXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRhZyA9IHRhZztcbiAgICAgICAgfVxuICAgIH1cbiAgICBldmFsdWF0ZShfdm0pIHtcbiAgICAgICAgbGV0IHsgY29tcG9uZW50LCBtYW5hZ2VyLCBkeW5hbWljU2NvcGUgfSA9IHRoaXM7XG4gICAgICAgIG1hbmFnZXIudXBkYXRlKGNvbXBvbmVudCwgZHluYW1pY1Njb3BlKTtcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgICAgICAgIGFyZ3M6IFtKU09OLnN0cmluZ2lmeSh0aGlzLm5hbWUpXVxuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBEaWRVcGRhdGVMYXlvdXRPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gICAgY29uc3RydWN0b3IobWFuYWdlciwgY29tcG9uZW50LCBib3VuZHMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5tYW5hZ2VyID0gbWFuYWdlcjtcbiAgICAgICAgdGhpcy5jb21wb25lbnQgPSBjb21wb25lbnQ7XG4gICAgICAgIHRoaXMuYm91bmRzID0gYm91bmRzO1xuICAgICAgICB0aGlzLnR5cGUgPSBcImRpZC11cGRhdGUtbGF5b3V0XCI7XG4gICAgICAgIHRoaXMudGFnID0gQ09OU1RBTlRfVEFHO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICBsZXQgeyBtYW5hZ2VyLCBjb21wb25lbnQsIGJvdW5kcyB9ID0gdGhpcztcbiAgICAgICAgbWFuYWdlci5kaWRVcGRhdGVMYXlvdXQoY29tcG9uZW50LCBib3VuZHMpO1xuICAgICAgICB2bS5lbnYuZGlkVXBkYXRlKGNvbXBvbmVudCwgbWFuYWdlcik7XG4gICAgfVxufSJdfQ==

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

var _upsert = require('../../upsert');
var _interfaces = require('../../component/interfaces');
var _opcodes = require('../../opcodes');
var _reference2 = require('@glimmer/reference');

@@ -16,10 +22,4 @@

var _interfaces = require('../../component/interfaces');
var _opcodes = require('../../opcodes');
var _references = require('../../references');
var _upsert = require('../../upsert');
_opcodes.APPEND_OPCODES.add(25 /* DynamicContent */, (vm, { op1: append }) => {

@@ -30,3 +30,3 @@ let opcode = vm.constants.getOther(append);

function isEmpty(value) {
return value === null || value === undefined || typeof value.toString !== 'function';
return value === null || value === undefined || typeof value['toString'] !== 'function';
}

@@ -70,4 +70,3 @@ function normalizeTextValue(value) {

let normalized = this.normalize(reference);
let value;
let cache;
let value, cache;
if ((0, _reference2.isConst)(reference)) {

@@ -121,5 +120,5 @@ value = normalized.value();

return {
details: { lastValue: JSON.stringify(cache.peek()) },
guid,
type
type,
details: { lastValue: JSON.stringify(cache.peek()) }
};

@@ -178,2 +177,2 @@ }

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2NvbnRlbnQuanMiXSwibmFtZXMiOlsibm9ybWFsaXplVGV4dFZhbHVlIiwiYWRkIiwidm0iLCJvcDEiLCJhcHBlbmQiLCJvcGNvZGUiLCJjb25zdGFudHMiLCJnZXRPdGhlciIsImV2YWx1YXRlIiwiaXNFbXB0eSIsInZhbHVlIiwidW5kZWZpbmVkIiwidG9TdHJpbmciLCJTdHJpbmciLCJub3JtYWxpemVUcnVzdGVkVmFsdWUiLCJ0b0hUTUwiLCJub3JtYWxpemVWYWx1ZSIsIkFwcGVuZER5bmFtaWNPcGNvZGUiLCJyZWZlcmVuY2UiLCJzdGFjayIsInBvcCIsIm5vcm1hbGl6ZWQiLCJub3JtYWxpemUiLCJjYWNoZSIsInBlZWsiLCJlbGVtZW50cyIsInVwc2VydCIsImluc2VydCIsImVudiIsImdldEFwcGVuZE9wZXJhdGlvbnMiLCJib3VuZHMiLCJuZXdCb3VuZHMiLCJ1cGRhdGVXaXRoIiwiSXNDb21wb25lbnREZWZpbml0aW9uUmVmZXJlbmNlIiwiY3JlYXRlIiwiaW5uZXIiLCJ0b0Jvb2wiLCJVcGRhdGVPcGNvZGUiLCJjb25zdHJ1Y3RvciIsInRhZyIsInJldmFsaWRhdGUiLCJkb20iLCJ1cGRhdGUiLCJjdXJzb3IiLCJwYXJlbnRFbGVtZW50IiwidG9KU09OIiwiX2d1aWQiLCJndWlkIiwidHlwZSIsImRldGFpbHMiLCJsYXN0VmFsdWUiLCJKU09OIiwic3RyaW5naWZ5IiwiT3B0aW1pemVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUiLCJhcmd1bWVudHMiLCJfdm0iLCJfcmVmZXJlbmNlIiwiT3B0aW1pemVkQ2F1dGlvdXNVcGRhdGVPcGNvZGUiLCJPcHRpbWl6ZWRUcnVzdGluZ0FwcGVuZE9wY29kZSIsIk9wdGltaXplZFRydXN0aW5nVXBkYXRlT3Bjb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7UUFjZ0JBLGtCLEdBQUFBLGtCOztBQWRoQjs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFD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QUNIO0FBQ0RhLFdBQU9jLEdBQVAsRUFBWUUsTUFBWixFQUFvQmpDLEtBQXBCLEVBQTJCO0FBQ3ZCLGVBQU8sNEJBQWUrQixHQUFmLEVBQW9CRSxNQUFwQixFQUE0QmpDLEtBQTVCLENBQVA7QUFDSDtBQUNEc0IsZUFBV3VCLEdBQVgsRUFBZ0JDLFVBQWhCLEVBQTRCakMsS0FBNUIsRUFBbUNPLE1BQW5DLEVBQTJDSixNQUEzQyxFQUFtRDtBQUMvQyxlQUFPLElBQUlpQyw2QkFBSixDQUFrQ3BDLEtBQWxDLEVBQXlDTyxNQUF6QyxFQUFpREosTUFBakQsQ0FBUDtBQUNIO0FBYmtFO1FBQTFEZ0MsNkIsR0FBQUEsNkI7QUFlYixNQUFNQyw2QkFBTixTQUE0Q3RCLFlBQTVDLENBQXlEO0FBQ3JEQyxrQkFBYztBQUNWLGNBQU0sR0FBR2dCLFNBQVQ7QUFDQSxhQUFLTixJQUFMLEdBQVksMkJBQVo7QUFDSDtBQUNEckIsV0FBT2MsR0FBUCxFQUFZRSxNQUFaLEVBQW9CakMsS0FBcEIsRUFBMkI7QUFDdkIsZUFBTyw0QkFBZStCLEdBQWYsRUFBb0JFLE1BQXBCLEVBQTRCakMsS0FBNUIsQ0FBUDtBQUNIO0FBUG9EIiwiZmlsZSI6ImxpYi9jb21waWxlZC9vcGNvZGVzL2NvbnRlbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0NvbnN0LCBpc01vZGlmaWVkLCBtYXAsIFJlZmVyZW5jZUNhY2hlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IGNsZWFyLCBDdXJzb3IgfSBmcm9tICcuLi8uLi9ib3VuZHMnO1xuaW1wb3J0IHsgRnJhZ21lbnQgfSBmcm9tICcuLi8uLi9idWlsZGVyJztcbmltcG9ydCB7IGlzQ29tcG9uZW50RGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL2NvbXBvbmVudC9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEFQUEVORF9PUENPREVTLCBVcGRhdGluZ09wY29kZSB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IHsgQ29uZGl0aW9uYWxSZWZlcmVuY2UgfSBmcm9tICcuLi8uLi9yZWZlcmVuY2VzJztcbmltcG9ydCB7IGNhdXRpb3VzSW5zZXJ0LCBpc05vZGUsIGlzU2FmZVN0cmluZywgaXNTdHJpbmcsIHRydXN0aW5nSW5zZXJ0IH0gZnJvbSAnLi4vLi4vdXBzZXJ0JztcbkFQUEVORF9PUENPREVTLmFkZCgyNSAvKiBEeW5hbWljQ29udGVudCAqLywgKHZtLCB7IG9wMTogYXBwZW5kIH0pID0+IHtcbiAgICBsZXQgb3Bjb2RlID0gdm0uY29uc3RhbnRzLmdldE90aGVyKGFwcGVuZCk7XG4gICAgb3Bjb2RlLmV2YWx1YXRlKHZtKTtcbn0pO1xuZnVuY3Rpb24gaXNFbXB0eSh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiB2YWx1ZS50b1N0cmluZyAhPT0gJ2Z1bmN0aW9uJztcbn1cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVUZXh0VmFsdWUodmFsdWUpIHtcbiAgICBpZiAoaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cbmZ1bmN0aW9uIG5vcm1hbGl6ZVRydXN0ZWRWYWx1ZSh2YWx1ZSkge1xuICAgIGlmIChpc0VtcHR5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBpZiAoaXNTYWZlU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWUudG9IVE1MKCk7XG4gICAgfVxuICAgIGlmIChpc05vZGUodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG59XG5mdW5jdGlvbiBub3JtYWxpemVWYWx1ZSh2YWx1ZSkge1xuICAgIGlmIChpc0VtcHR5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBpZiAoaXNTYWZlU3RyaW5nKHZhbHVlKSB8fCBpc05vZGUodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG59XG5leHBvcnQgY2xhc3MgQXBwZW5kRHluYW1pY09wY29kZSB7XG4gICAgZXZhbHVhdGUodm0pIHtcbiAgICAgICAgbGV0IHJlZmVyZW5jZSA9IHZtLnN0YWNrLnBvcCgpO1xuICAgICAgICBsZXQgbm9ybWFsaXplZCA9IHRoaXMubm9ybWFsaXplKHJlZmVyZW5jZSk7XG4gICAgICAgIGxldCB2YWx1ZTtcbiAgICAgICAgbGV0IGNhY2hlO1xuICAgICAgICBpZiAoaXNDb25zdChyZWZlcmVuY2UpKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IG5vcm1hbGl6ZWQudmFsdWUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKG5vcm1hbGl6ZWQpO1xuICAgICAgICAgICAgdmFsdWUgPSBjYWNoZS5wZWVrKCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHN0YWNrID0gdm0uZWxlbWVudHMoKTtcbiAgICAgICAgbGV0IHVwc2VydCA9IHRoaXMuaW5zZXJ0KHZtLmVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCksIHN0YWNrLCB2YWx1ZSk7XG4gICAgICAgIGxldCBib3VuZHMgPSBuZXcgRnJhZ21lbnQodXBzZXJ0LmJvdW5kcyk7XG4gICAgICAgIHN0YWNrLm5ld0JvdW5kcyhib3VuZHMpO1xuICAgICAgICBpZiAoY2FjaGUgLyogaS5lLiAhaXNDb25zdChyZWZlcmVuY2UpICovKSB7XG4gICAgICAgICAgICAgICAgdm0udXBkYXRlV2l0aCh0aGlzLnVwZGF0ZVdpdGgodm0sIHJlZmVyZW5jZSwgY2FjaGUsIGJvdW5kcywgdXBzZXJ0KSk7XG4gICAgICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIElzQ29tcG9uZW50RGVmaW5pdGlvblJlZmVyZW5jZSBleHRlbmRzIENvbmRpdGlvbmFsUmVmZXJlbmNlIHtcbiAgICBzdGF0aWMgY3JlYXRlKGlubmVyKSB7XG4gICAgICAgIHJldHVybiBuZXcgSXNDb21wb25lbnREZWZpbml0aW9uUmVmZXJlbmNlKGlubmVyKTtcbiAgICB9XG4gICAgdG9Cb29sKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBpc0NvbXBvbmVudERlZmluaXRpb24odmFsdWUpO1xuICAgIH1cbn1cbmNsYXNzIFVwZGF0ZU9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcihjYWNoZSwgYm91bmRzLCB1cHNlcnQpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5jYWNoZSA9IGNhY2hlO1xuICAgICAgICB0aGlzLmJvdW5kcyA9IGJvdW5kcztcbiAgICAgICAgdGhpcy51cHNlcnQgPSB1cHNlcnQ7XG4gICAgICAgIHRoaXMudGFnID0gY2FjaGUudGFnO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLmNhY2hlLnJldmFsaWRhdGUoKTtcbiAgICAgICAgaWYgKGlzTW9kaWZpZWQodmFsdWUpKSB7XG4gICAgICAgICAgICBsZXQgeyBib3VuZHMsIHVwc2VydCB9ID0gdGhpcztcbiAgICAgICAgICAgIGxldCB7IGRvbSB9ID0gdm07XG4gICAgICAgICAgICBpZiAoIXRoaXMudXBzZXJ0LnVwZGF0ZShkb20sIHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGxldCBjdXJzb3IgPSBuZXcgQ3Vyc29yKGJvdW5kcy5wYXJlbnRFbGVtZW50KCksIGNsZWFyKGJvdW5kcykpO1xuICAgICAgICAgICAgICAgIHVwc2VydCA9IHRoaXMudXBzZXJ0ID0gdGhpcy5pbnNlcnQodm0uZW52LmdldEFwcGVuZE9wZXJhdGlvbnMoKSwgY3Vyc29yLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBib3VuZHMudXBkYXRlKHVwc2VydC5ib3VuZHMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgbGV0IHsgX2d1aWQ6IGd1aWQsIHR5cGUsIGNhY2hlIH0gPSB0aGlzO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGV0YWlsczogeyBsYXN0VmFsdWU6IEpTT04uc3RyaW5naWZ5KGNhY2hlLnBlZWsoKSkgfSxcbiAgICAgICAgICAgIGd1aWQsXG4gICAgICAgICAgICB0eXBlXG4gICAgICAgIH07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIE9wdGltaXplZENhdXRpb3VzQXBwZW5kT3Bjb2RlIGV4dGVuZHMgQXBwZW5kRHluYW1pY09wY29kZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMudHlwZSA9ICdvcHRpbWl6ZWQtY2F1dGlvdXMtYXBwZW5kJztcbiAgICB9XG4gICAgbm9ybWFsaXplKHJlZmVyZW5jZSkge1xuICAgICAgICByZXR1cm4gbWFwKHJlZmVyZW5jZSwgbm9ybWFsaXplVmFsdWUpO1xuICAgIH1cbiAgICBpbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBjYXV0aW91c0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICAgIH1cbiAgICB1cGRhdGVXaXRoKF92bSwgX3JlZmVyZW5jZSwgY2FjaGUsIGJvdW5kcywgdXBzZXJ0KSB7XG4gICAgICAgIHJldHVybiBuZXcgT3B0aW1pemVkQ2F1dGlvdXNVcGRhdGVPcGNvZGUoY2FjaGUsIGJvdW5kcywgdXBzZXJ0KTtcbiAgICB9XG59XG5jbGFzcyBPcHRpbWl6ZWRDYXV0aW91c1VwZGF0ZU9wY29kZSBleHRlbmRzIFVwZGF0ZU9wY29kZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMudHlwZSA9ICdvcHRpbWl6ZWQtY2F1dGlvdXMtdXBkYXRlJztcbiAgICB9XG4gICAgaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gY2F1dGlvdXNJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgT3B0aW1pemVkVHJ1c3RpbmdBcHBlbmRPcGNvZGUgZXh0ZW5kcyBBcHBlbmREeW5hbWljT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy50eXBlID0gJ29wdGltaXplZC10cnVzdGluZy1hcHBlbmQnO1xuICAgIH1cbiAgICBub3JtYWxpemUocmVmZXJlbmNlKSB7XG4gICAgICAgIHJldHVybiBtYXAocmVmZXJlbmNlLCBub3JtYWxpemVUcnVzdGVkVmFsdWUpO1xuICAgIH1cbiAgICBpbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0cnVzdGluZ0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICAgIH1cbiAgICB1cGRhdGVXaXRoKF92bSwgX3JlZmVyZW5jZSwgY2FjaGUsIGJvdW5kcywgdXBzZXJ0KSB7XG4gICAgICAgIHJldHVybiBuZXcgT3B0aW1pemVkVHJ1c3RpbmdVcGRhdGVPcGNvZGUoY2FjaGUsIGJvdW5kcywgdXBzZXJ0KTtcbiAgICB9XG59XG5jbGFzcyBPcHRpbWl6ZWRUcnVzdGluZ1VwZGF0ZU9wY29kZSBleHRlbmRzIFVwZGF0ZU9wY29kZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMudHlwZSA9ICdvcHRpbWl6ZWQtdHJ1c3RpbmctdXBkYXRlJztcbiAgICB9XG4gICAgaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdHJ1c3RpbmdJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG59Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2NvbnRlbnQuanMiXSwibmFtZXMiOlsibm9ybWFsaXplVGV4dFZhbHVlIiwiYWRkIiwidm0iLCJvcDEiLCJhcHBlbmQiLCJvcGNvZGUiLCJjb25zdGFudHMiLCJnZXRPdGhlciIsImV2YWx1YXRlIiwiaXNFbXB0eSIsInZhbHVlIiwidW5kZWZpbmVkIiwiU3RyaW5nIiwibm9ybWFsaXplVHJ1c3RlZFZhbHVlIiwidG9IVE1MIiwibm9ybWFsaXplVmFsdWUiLCJBcHBlbmREeW5hbWljT3Bjb2RlIiwicmVmZXJlbmNlIiwic3RhY2siLCJwb3AiLCJub3JtYWxpemVkIiwibm9ybWFsaXplIiwiY2FjaGUiLCJwZWVrIiwiZWxlbWVudHMiLCJ1cHNlcnQiLCJpbnNlcnQiLCJlbnYiLCJnZXRBcHBlbmRPcGVyYXRpb25zIiwiYm91bmRzIiwibmV3Qm91bmRzIiwidXBkYXRlV2l0aCIsIklzQ29tcG9uZW50RGVmaW5pdGlvblJlZmVyZW5jZSIsImNyZWF0ZSIsImlubmVyIiwidG9Cb29sIiwiVXBkYXRlT3Bjb2RlIiwiY29uc3RydWN0b3IiLCJ0YWciLCJyZXZhbGlkYXRlIiwiZG9tIiwidXBkYXRlIiwiY3Vyc29yIiwicGFyZW50RWxlbWVudCIsInRvSlNPTiIsIl9ndWlkIiwiZ3VpZCIsInR5cGUiLCJkZXRhaWxzIiwibGFzdFZhbHVlIiwiSlNPTiIsInN0cmluZ2lmeSIsIk9wdGltaXplZENhdXRpb3VzQXBwZW5kT3Bjb2RlIiwiYXJndW1lbnRzIiwiX3ZtIiwiX3JlZmVyZW5jZSIsIk9wdGltaXplZENhdXRpb3VzVXBkYXRlT3Bjb2RlIiwiT3B0aW1pemVkVHJ1c3RpbmdBcHBlbmRPcGNvZGUiLCJPcHRpbWl6ZWRUcnVzdGluZ1VwZGF0ZU9wY29kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O1FBZWdCQSxrQixHQUFBQSxrQjs7QUFmaEI7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsd0JBQWVDLEdB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YyxHQUFQLEVBQVlFLE1BQVosRUFBb0JoQyxLQUFwQixFQUEyQjtBQUN2QixlQUFPLDRCQUFlOEIsR0FBZixFQUFvQkUsTUFBcEIsRUFBNEJoQyxLQUE1QixDQUFQO0FBQ0g7QUFDRHFCLGVBQVd1QixHQUFYLEVBQWdCQyxVQUFoQixFQUE0QmpDLEtBQTVCLEVBQW1DTyxNQUFuQyxFQUEyQ0osTUFBM0MsRUFBbUQ7QUFDL0MsZUFBTyxJQUFJaUMsNkJBQUosQ0FBa0NwQyxLQUFsQyxFQUF5Q08sTUFBekMsRUFBaURKLE1BQWpELENBQVA7QUFDSDtBQWJrRTtRQUExRGdDLDZCLEdBQUFBLDZCO0FBZWIsTUFBTUMsNkJBQU4sU0FBNEN0QixZQUE1QyxDQUF5RDtBQUNyREMsa0JBQWM7QUFDVixjQUFNLEdBQUdnQixTQUFUO0FBQ0EsYUFBS04sSUFBTCxHQUFZLDJCQUFaO0FBQ0g7QUFDRHJCLFdBQU9jLEdBQVAsRUFBWUUsTUFBWixFQUFvQmhDLEtBQXBCLEVBQTJCO0FBQ3ZCLGVBQU8sNEJBQWU4QixHQUFmLEVBQW9CRSxNQUFwQixFQUE0QmhDLEtBQTVCLENBQVA7QUFDSDtBQVBvRCIsImZpbGUiOiJsaWIvY29tcGlsZWQvb3Bjb2Rlcy9jb250ZW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNTYWZlU3RyaW5nLCBpc05vZGUsIGlzU3RyaW5nLCBjYXV0aW91c0luc2VydCwgdHJ1c3RpbmdJbnNlcnQgfSBmcm9tICcuLi8uLi91cHNlcnQnO1xuaW1wb3J0IHsgaXNDb21wb25lbnREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50L2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVXBkYXRpbmdPcGNvZGUgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IFJlZmVyZW5jZUNhY2hlLCBpc01vZGlmaWVkLCBpc0NvbnN0LCBtYXAgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgQ3Vyc29yLCBjbGVhciB9IGZyb20gJy4uLy4uL2JvdW5kcyc7XG5pbXBvcnQgeyBGcmFnbWVudCB9IGZyb20gJy4uLy4uL2J1aWxkZXInO1xuaW1wb3J0IHsgQ29uZGl0aW9uYWxSZWZlcmVuY2UgfSBmcm9tICcuLi8uLi9yZWZlcmVuY2VzJztcbmltcG9ydCB7IEFQUEVORF9PUENPREVTIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMjUgLyogRHluYW1pY0NvbnRlbnQgKi8sICh2bSwgeyBvcDE6IGFwcGVuZCB9KSA9PiB7XG4gICAgbGV0IG9wY29kZSA9IHZtLmNvbnN0YW50cy5nZXRPdGhlcihhcHBlbmQpO1xuICAgIG9wY29kZS5ldmFsdWF0ZSh2bSk7XG59KTtcbmZ1bmN0aW9uIGlzRW1wdHkodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgdmFsdWVbJ3RvU3RyaW5nJ10gIT09ICdmdW5jdGlvbic7XG59XG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplVGV4dFZhbHVlKHZhbHVlKSB7XG4gICAgaWYgKGlzRW1wdHkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG59XG5mdW5jdGlvbiBub3JtYWxpemVUcnVzdGVkVmFsdWUodmFsdWUpIHtcbiAgICBpZiAoaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgaWYgKGlzU2FmZVN0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLnRvSFRNTCgpO1xuICAgIH1cbiAgICBpZiAoaXNOb2RlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xufVxuZnVuY3Rpb24gbm9ybWFsaXplVmFsdWUodmFsdWUpIHtcbiAgICBpZiAoaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgaWYgKGlzU2FmZVN0cmluZyh2YWx1ZSkgfHwgaXNOb2RlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xufVxuZXhwb3J0IGNsYXNzIEFwcGVuZER5bmFtaWNPcGNvZGUge1xuICAgIGV2YWx1YXRlKHZtKSB7XG4gICAgICAgIGxldCByZWZlcmVuY2UgPSB2bS5zdGFjay5wb3AoKTtcbiAgICAgICAgbGV0IG5vcm1hbGl6ZWQgPSB0aGlzLm5vcm1hbGl6ZShyZWZlcmVuY2UpO1xuICAgICAgICBsZXQgdmFsdWUsIGNhY2hlO1xuICAgICAgICBpZiAoaXNDb25zdChyZWZlcmVuY2UpKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IG5vcm1hbGl6ZWQudmFsdWUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKG5vcm1hbGl6ZWQpO1xuICAgICAgICAgICAgdmFsdWUgPSBjYWNoZS5wZWVrKCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHN0YWNrID0gdm0uZWxlbWVudHMoKTtcbiAgICAgICAgbGV0IHVwc2VydCA9IHRoaXMuaW5zZXJ0KHZtLmVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCksIHN0YWNrLCB2YWx1ZSk7XG4gICAgICAgIGxldCBib3VuZHMgPSBuZXcgRnJhZ21lbnQodXBzZXJ0LmJvdW5kcyk7XG4gICAgICAgIHN0YWNrLm5ld0JvdW5kcyhib3VuZHMpO1xuICAgICAgICBpZiAoY2FjaGUgLyogaS5lLiAhaXNDb25zdChyZWZlcmVuY2UpICovKSB7XG4gICAgICAgICAgICAgICAgdm0udXBkYXRlV2l0aCh0aGlzLnVwZGF0ZVdpdGgodm0sIHJlZmVyZW5jZSwgY2FjaGUsIGJvdW5kcywgdXBzZXJ0KSk7XG4gICAgICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIElzQ29tcG9uZW50RGVmaW5pdGlvblJlZmVyZW5jZSBleHRlbmRzIENvbmRpdGlvbmFsUmVmZXJlbmNlIHtcbiAgICBzdGF0aWMgY3JlYXRlKGlubmVyKSB7XG4gICAgICAgIHJldHVybiBuZXcgSXNDb21wb25lbnREZWZpbml0aW9uUmVmZXJlbmNlKGlubmVyKTtcbiAgICB9XG4gICAgdG9Cb29sKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBpc0NvbXBvbmVudERlZmluaXRpb24odmFsdWUpO1xuICAgIH1cbn1cbmNsYXNzIFVwZGF0ZU9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcihjYWNoZSwgYm91bmRzLCB1cHNlcnQpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5jYWNoZSA9IGNhY2hlO1xuICAgICAgICB0aGlzLmJvdW5kcyA9IGJvdW5kcztcbiAgICAgICAgdGhpcy51cHNlcnQgPSB1cHNlcnQ7XG4gICAgICAgIHRoaXMudGFnID0gY2FjaGUudGFnO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLmNhY2hlLnJldmFsaWRhdGUoKTtcbiAgICAgICAgaWYgKGlzTW9kaWZpZWQodmFsdWUpKSB7XG4gICAgICAgICAgICBsZXQgeyBib3VuZHMsIHVwc2VydCB9ID0gdGhpcztcbiAgICAgICAgICAgIGxldCB7IGRvbSB9ID0gdm07XG4gICAgICAgICAgICBpZiAoIXRoaXMudXBzZXJ0LnVwZGF0ZShkb20sIHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGxldCBjdXJzb3IgPSBuZXcgQ3Vyc29yKGJvdW5kcy5wYXJlbnRFbGVtZW50KCksIGNsZWFyKGJvdW5kcykpO1xuICAgICAgICAgICAgICAgIHVwc2VydCA9IHRoaXMudXBzZXJ0ID0gdGhpcy5pbnNlcnQodm0uZW52LmdldEFwcGVuZE9wZXJhdGlvbnMoKSwgY3Vyc29yLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBib3VuZHMudXBkYXRlKHVwc2VydC5ib3VuZHMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgbGV0IHsgX2d1aWQ6IGd1aWQsIHR5cGUsIGNhY2hlIH0gPSB0aGlzO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ3VpZCxcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBkZXRhaWxzOiB7IGxhc3RWYWx1ZTogSlNPTi5zdHJpbmdpZnkoY2FjaGUucGVlaygpKSB9XG4gICAgICAgIH07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIE9wdGltaXplZENhdXRpb3VzQXBwZW5kT3Bjb2RlIGV4dGVuZHMgQXBwZW5kRHluYW1pY09wY29kZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMudHlwZSA9ICdvcHRpbWl6ZWQtY2F1dGlvdXMtYXBwZW5kJztcbiAgICB9XG4gICAgbm9ybWFsaXplKHJlZmVyZW5jZSkge1xuICAgICAgICByZXR1cm4gbWFwKHJlZmVyZW5jZSwgbm9ybWFsaXplVmFsdWUpO1xuICAgIH1cbiAgICBpbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBjYXV0aW91c0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICAgIH1cbiAgICB1cGRhdGVXaXRoKF92bSwgX3JlZmVyZW5jZSwgY2FjaGUsIGJvdW5kcywgdXBzZXJ0KSB7XG4gICAgICAgIHJldHVybiBuZXcgT3B0aW1pemVkQ2F1dGlvdXNVcGRhdGVPcGNvZGUoY2FjaGUsIGJvdW5kcywgdXBzZXJ0KTtcbiAgICB9XG59XG5jbGFzcyBPcHRpbWl6ZWRDYXV0aW91c1VwZGF0ZU9wY29kZSBleHRlbmRzIFVwZGF0ZU9wY29kZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMudHlwZSA9ICdvcHRpbWl6ZWQtY2F1dGlvdXMtdXBkYXRlJztcbiAgICB9XG4gICAgaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gY2F1dGlvdXNJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgT3B0aW1pemVkVHJ1c3RpbmdBcHBlbmRPcGNvZGUgZXh0ZW5kcyBBcHBlbmREeW5hbWljT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy50eXBlID0gJ29wdGltaXplZC10cnVzdGluZy1hcHBlbmQnO1xuICAgIH1cbiAgICBub3JtYWxpemUocmVmZXJlbmNlKSB7XG4gICAgICAgIHJldHVybiBtYXAocmVmZXJlbmNlLCBub3JtYWxpemVUcnVzdGVkVmFsdWUpO1xuICAgIH1cbiAgICBpbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0cnVzdGluZ0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICAgIH1cbiAgICB1cGRhdGVXaXRoKF92bSwgX3JlZmVyZW5jZSwgY2FjaGUsIGJvdW5kcywgdXBzZXJ0KSB7XG4gICAgICAgIHJldHVybiBuZXcgT3B0aW1pemVkVHJ1c3RpbmdVcGRhdGVPcGNvZGUoY2FjaGUsIGJvdW5kcywgdXBzZXJ0KTtcbiAgICB9XG59XG5jbGFzcyBPcHRpbWl6ZWRUcnVzdGluZ1VwZGF0ZU9wY29kZSBleHRlbmRzIFVwZGF0ZU9wY29kZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMudHlwZSA9ICdvcHRpbWl6ZWQtdHJ1c3RpbmctdXBkYXRlJztcbiAgICB9XG4gICAgaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdHJ1c3RpbmdJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG59Il19

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

var _opcodes = require('../../opcodes');
var _util = require('@glimmer/util');
var _opcodes = require('../../opcodes');
/* tslint:disable */

@@ -34,8 +34,7 @@ function debugCallback(context, get) {

this.locals = (0, _util.dict)();
for (let i = 0; i < evalInfo.length; i++) {
let slot = evalInfo[i];
evalInfo.forEach(slot => {
let name = symbols[slot - 1];
let ref = scope.getSymbol(slot);
this.locals[name] = ref;
}
});
}

@@ -58,3 +57,3 @@ get(path) {

}
return tail.reduce((r, part) => r.get(part), ref);
return tail.reduce((ref, part) => ref.get(part), ref);
}

@@ -68,2 +67,2 @@ }

});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2RlYnVnZ2VyLmpzIl0sIm5hbWVzIjpbInNldERlYnVnZ2VyQ2FsbGJhY2siLCJyZXNldERlYnVnZ2VyQ2FsbGJhY2siLCJkZWJ1Z0NhbGxiYWNrIiwiY29udGV4dCIsImdldCIsImNvbnNvbGUiLCJpbmZvIiwiY2FsbGJhY2siLCJjYiIsIlNjb3BlSW5zcGVjdG9yIiwiY29uc3RydWN0b3IiLCJzY29wZSIsInN5bWJvbHMiLCJldmFsSW5mbyIsImxvY2FscyIsImkiLCJsZW5ndGgiLCJzbG90IiwibmFtZSIsInJlZiIsImdldFN5bWJvbCIsInBhdGgiLCJwYXJ0cyIsInNwbGl0IiwiaGVhZCIsInRhaWwiLCJldmFsU2NvcGUiLCJnZXRFdmFsU2NvcGUiLCJnZXRTZWxmIiwiaW5kZXhPZiIsInJlZHVjZSIsInIiLCJwYXJ0IiwiYWRkIiwidm0iLCJvcDEiLCJfc3ltYm9scyIsIm9wMiIsIl9ldmFsSW5mbyIsImNvbnN0YW50cyIsImdldE90aGVyIiwiZ2V0QXJyYXkiLCJpbnNwZWN0b3IiLCJ2YWx1ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7UUFZZ0JBLG1CLEdBQUFBLG1CO1FBR0FDLHFCLEdBQUFBLHFCOztBQWZoQjs7QUFDQTs7QUFDQTtBQUNBLFNBQVNDLGFBQVQsQ0FBdUJDLE9BQXZCLEVBQWdDQyxHQUFoQyxFQUFxQztBQUNqQ0MsWUFBUUMsSUFBUixDQUFhLDBEQUFiO0FBQ0E7QUFDQUgsZ0JBQVlDLElBQUksTUFBSixDQUFaO0FBQ0E7QUFDSDtBQUNEO0FBQ0EsSUFBSUcsV0FBV0wsYUFBZjtBQUNBO0FBQ08sU0FBU0YsbUJBQVQsQ0FBNkJRLEVBQTdCLEVBQWlDO0FBQ3BDRCxlQUFXQyxFQUFYO0FBQ0g7QUFDTSxTQUFTUCxxQkFBVCxHQUFpQztBQUNwQ00sZUFBV0wsYUFBWDtBQUNIO0FBQ0QsTUFBTU8sY0FBTixDQUFxQjtBQUNqQkMsZ0JBQVlDLEtBQVosRUFBbUJDLE9BQW5CLEVBQTRCQyxRQUE1QixFQUFzQztBQUNsQyxhQUFLRixLQUFMLEdBQWFBLEtBQWI7QUFDQSxhQUFLRyxNQUFMLEdBQWMsaUJBQWQ7QUFDQSxhQUFLLElBQUlDLElBQUksQ0FBYixFQUFnQkEsSUFBSUYsU0FBU0csTUFBN0IsRUFBcUNELEdBQXJDLEVBQTBDO0FBQ3RDLGdCQUFJRSxPQUFPSixTQUFTRSxDQUFULENBQVg7QUFDQSxnQkFBSUcsT0FBT04sUUFBUUssT0FBTyxDQUFmLENBQVg7QUFDQSxnQkFBSUUsTUFBTVIsTUFBTVMsU0FBTixDQUFnQkgsSUFBaEIsQ0FBVjtBQUNBLGlCQUFLSCxNQUFMLENBQVlJLElBQVosSUFBb0JDLEdBQXBCO0FBQ0g7QUFDSjtBQUNEZixRQUFJaUIsSUFBSixFQUFVO0FBQ04sWUFBSSxFQUFFVixLQUFGLEVBQVNHLE1BQVQsS0FBb0IsSUFBeEI7QUFDQSxZQUFJUSxRQUFRRCxLQUFLRSxLQUFMLENBQVcsR0FBWCxDQUFaO0FBQ0EsWUFBSSxDQUFDQyxJQUFELEVBQU8sR0FBR0MsSUFBVixJQUFrQkosS0FBS0UsS0FBTCxDQUFXLEdBQVgsQ0FBdEI7QUFDQSxZQUFJRyxZQUFZZixNQUFNZ0IsWUFBTixFQUFoQjtBQUNBLFlBQUlSLEdBQUo7QUFDQSxZQUFJSyxTQUFTLE1BQWIsRUFBcUI7QUFDakJMLGtCQUFNUixNQUFNaUIsT0FBTixFQUFOO0FBQ0gsU0FGRCxNQUVPLElBQUlkLE9BQU9VLElBQVAsQ0FBSixFQUFrQjtBQUNyQkwsa0JBQU1MLE9BQU9VLElBQVAsQ0FBTjtBQUNILFNBRk0sTUFFQSxJQUFJQSxLQUFLSyxPQUFMLENBQWEsR0FBYixNQUFzQixDQUF0QixJQUEyQkgsVUFBVUYsSUFBVixDQUEvQixFQUFnRDtBQUNuREwsa0JBQU1PLFVBQVVGLElBQVYsQ0FBTjtBQUNILFNBRk0sTUFFQTtBQUNITCxrQkFBTSxLQUFLUixLQUFMLENBQVdpQixPQUFYLEVBQU47QUFDQUgsbUJBQU9ILEtBQVA7QUFDSDtBQUNELGVBQU9HLEtBQUtLLE1BQUwsQ0FBWSxDQUFDQyxDQUFELEVBQUlDLElBQUosS0FBYUQsRUFBRTNCLEdBQUYsQ0FBTTRCLElBQU4sQ0FBekIsRUFBc0NiLEdBQXRDLENBQVA7QUFDSDtBQTVCZ0I7QUE4QnJCLHdCQUFlYyxHQUFmLENBQW1CLEVBQW5CLENBQXNCLGNBQXRCLEVBQXNDLENBQUNDLEVBQUQsRUFBSyxFQUFFQyxLQUFLQyxRQUFQLEVBQWlCQyxLQUFLQyxTQUF0QixFQUFMLEtBQTJDO0FBQzdFLFFBQUkxQixVQUFVc0IsR0FBR0ssU0FBSCxDQUFhQyxRQUFiLENBQXNCSixRQUF0QixDQUFkO0FBQ0EsUUFBSXZCLFdBQVdxQixHQUFHSyxTQUFILENBQWFFLFFBQWIsQ0FBc0JILFNBQXRCLENBQWY7QUFDQSxRQUFJSSxZQUFZLElBQUlqQyxjQUFKLENBQW1CeUIsR0FBR3ZCLEtBQUgsRUFBbkIsRUFBK0JDLE9BQS9CLEVBQXdDQyxRQUF4QyxDQUFoQjtBQUNBTixhQUFTMkIsR0FBR04sT0FBSCxHQUFhZSxLQUFiLEVBQVQsRUFBK0J0QixRQUFRcUIsVUFBVXRDLEdBQVYsQ0FBY2lCLElBQWQsRUFBb0JzQixLQUFwQixFQUF2QztBQUNILENBTEQiLCJmaWxlIjoibGliL2NvbXBpbGVkL29wY29kZXMvZGVidWdnZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkaWN0IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBBUFBFTkRfT1BDT0RFUyB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuLyogdHNsaW50OmRpc2FibGUgKi9cbmZ1bmN0aW9uIGRlYnVnQ2FsbGJhY2soY29udGV4dCwgZ2V0KSB7XG4gICAgY29uc29sZS5pbmZvKCdVc2UgYGNvbnRleHRgLCBhbmQgYGdldCg8cGF0aD4pYCB0byBkZWJ1ZyB0aGlzIHRlbXBsYXRlLicpO1xuICAgIC8vIGZvciBleGFtcGxlLi4uXG4gICAgY29udGV4dCA9PT0gZ2V0KCd0aGlzJyk7XG4gICAgZGVidWdnZXI7XG59XG4vKiB0c2xpbnQ6ZW5hYmxlICovXG5sZXQgY2FsbGJhY2sgPSBkZWJ1Z0NhbGxiYWNrO1xuLy8gRm9yIHRlc3RpbmcgcHVycG9zZXNcbmV4cG9ydCBmdW5jdGlvbiBzZXREZWJ1Z2dlckNhbGxiYWNrKGNiKSB7XG4gICAgY2FsbGJhY2sgPSBjYjtcbn1cbmV4cG9ydCBmdW5jdGlvbiByZXNldERlYnVnZ2VyQ2FsbGJhY2soKSB7XG4gICAgY2FsbGJhY2sgPSBkZWJ1Z0NhbGxiYWNrO1xufVxuY2xhc3MgU2NvcGVJbnNwZWN0b3Ige1xuICAgIGNvbnN0cnVjdG9yKHNjb3BlLCBzeW1ib2xzLCBldmFsSW5mbykge1xuICAgICAgICB0aGlzLnNjb3BlID0gc2NvcGU7XG4gICAgICAgIHRoaXMubG9jYWxzID0gZGljdCgpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGV2YWxJbmZvLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgc2xvdCA9IGV2YWxJbmZvW2ldO1xuICAgICAgICAgICAgbGV0IG5hbWUgPSBzeW1ib2xzW3Nsb3QgLSAxXTtcbiAgICAgICAgICAgIGxldCByZWYgPSBzY29wZS5nZXRTeW1ib2woc2xvdCk7XG4gICAgICAgICAgICB0aGlzLmxvY2Fsc1tuYW1lXSA9IHJlZjtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQocGF0aCkge1xuICAgICAgICBsZXQgeyBzY29wZSwgbG9jYWxzIH0gPSB0aGlzO1xuICAgICAgICBsZXQgcGFydHMgPSBwYXRoLnNwbGl0KCcuJyk7XG4gICAgICAgIGxldCBbaGVhZCwgLi4udGFpbF0gPSBwYXRoLnNwbGl0KCcuJyk7XG4gICAgICAgIGxldCBldmFsU2NvcGUgPSBzY29wZS5nZXRFdmFsU2NvcGUoKTtcbiAgICAgICAgbGV0IHJlZjtcbiAgICAgICAgaWYgKGhlYWQgPT09ICd0aGlzJykge1xuICAgICAgICAgICAgcmVmID0gc2NvcGUuZ2V0U2VsZigpO1xuICAgICAgICB9IGVsc2UgaWYgKGxvY2Fsc1toZWFkXSkge1xuICAgICAgICAgICAgcmVmID0gbG9jYWxzW2hlYWRdO1xuICAgICAgICB9IGVsc2UgaWYgKGhlYWQuaW5kZXhPZignQCcpID09PSAwICYmIGV2YWxTY29wZVtoZWFkXSkge1xuICAgICAgICAgICAgcmVmID0gZXZhbFNjb3BlW2hlYWRdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVmID0gdGhpcy5zY29wZS5nZXRTZWxmKCk7XG4gICAgICAgICAgICB0YWlsID0gcGFydHM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRhaWwucmVkdWNlKChyLCBwYXJ0KSA9PiByLmdldChwYXJ0KSwgcmVmKTtcbiAgICB9XG59XG5BUFBFTkRfT1BDT0RFUy5hZGQoNzEgLyogRGVidWdnZXIgKi8sICh2bSwgeyBvcDE6IF9zeW1ib2xzLCBvcDI6IF9ldmFsSW5mbyB9KSA9PiB7XG4gICAgbGV0IHN5bWJvbHMgPSB2bS5jb25zdGFudHMuZ2V0T3RoZXIoX3N5bWJvbHMpO1xuICAgIGxldCBldmFsSW5mbyA9IHZtLmNvbnN0YW50cy5nZXRBcnJheShfZXZhbEluZm8pO1xuICAgIGxldCBpbnNwZWN0b3IgPSBuZXcgU2NvcGVJbnNwZWN0b3Iodm0uc2NvcGUoKSwgc3ltYm9scywgZXZhbEluZm8pO1xuICAgIGNhbGxiYWNrKHZtLmdldFNlbGYoKS52YWx1ZSgpLCBwYXRoID0+IGluc3BlY3Rvci5nZXQocGF0aCkudmFsdWUoKSk7XG59KTsiXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2RlYnVnZ2VyLmpzIl0sIm5hbWVzIjpbInNldERlYnVnZ2VyQ2FsbGJhY2siLCJyZXNldERlYnVnZ2VyQ2FsbGJhY2siLCJkZWJ1Z0NhbGxiYWNrIiwiY29udGV4dCIsImdldCIsImNvbnNvbGUiLCJpbmZvIiwiY2FsbGJhY2siLCJjYiIsIlNjb3BlSW5zcGVjdG9yIiwiY29uc3RydWN0b3IiLCJzY29wZSIsInN5bWJvbHMiLCJldmFsSW5mbyIsImxvY2FscyIsImZvckVhY2giLCJzbG90IiwibmFtZSIsInJlZiIsImdldFN5bWJvbCIsInBhdGgiLCJwYXJ0cyIsInNwbGl0IiwiaGVhZCIsInRhaWwiLCJldmFsU2NvcGUiLCJnZXRFdmFsU2NvcGUiLCJnZXRTZWxmIiwiaW5kZXhPZiIsInJlZHVjZSIsInBhcnQiLCJhZGQiLCJ2bSIsIm9wMSIsIl9zeW1ib2xzIiwib3AyIiwiX2V2YWxJbmZvIiwiY29uc3RhbnRzIiwiZ2V0T3RoZXIiLCJnZXRBcnJheSIsImluc3BlY3RvciIsInZhbHVlIl0sIm1hcHBpbmdzIjoiOzs7OztRQVlnQkEsbUIsR0FBQUEsbUI7UUFHQUMscUIsR0FBQUEscUI7O0FBZmhCOztBQUNBOztBQUNBO0FBQ0EsU0FBU0MsYUFBVCxDQUF1QkMsT0FBdkIsRUFBZ0NDLEdBQWhDLEVBQXFDO0FBQ2pDQyxZQUFRQyxJQUFSLENBQWEsMERBQWI7QUFDQTtBQUNBSCxnQkFBWUMsSUFBSSxNQUFKLENBQVo7QUFDQTtBQUNIO0FBQ0Q7QUFDQSxJQUFJRyxXQUFXTCxhQUFmO0FBQ0E7QUFDTyxTQUFTRixtQkFBVCxDQUE2QlEsRUFBN0IsRUFBaUM7QUFDcENELGVBQVdDLEVBQVg7QUFDSDtBQUNNLFNBQVNQLHFCQUFULEdBQWlDO0FBQ3BDTSxlQUFXTCxhQUFYO0FBQ0g7QUFDRCxNQUFNTyxjQUFOLENBQXFCO0FBQ2pCQyxnQkFBWUMsS0FBWixFQUFtQkMsT0FBbkIsRUFBNEJDLFFBQTVCLEVBQXNDO0FBQ2xDLGFBQUtGLEtBQUwsR0FBYUEsS0FBYjtBQUNBLGFBQUtHLE1BQUwsR0FBYyxpQkFBZDtBQUNBRCxpQkFBU0UsT0FBVCxDQUFpQkMsUUFBUTtBQUNyQixnQkFBSUMsT0FBT0wsUUFBUUksT0FBTyxDQUFmLENBQVg7QUFDQSxnQkFBSUUsTUFBTVAsTUFBTVEsU0FBTixDQUFnQkgsSUFBaEIsQ0FBVjtBQUNBLGlCQUFLRixNQUFMLENBQVlHLElBQVosSUFBb0JDLEdBQXBCO0FBQ0gsU0FKRDtBQUtIO0FBQ0RkLFFBQUlnQixJQUFKLEVBQVU7QUFDTixZQUFJLEVBQUVULEtBQUYsRUFBU0csTUFBVCxLQUFvQixJQUF4QjtBQUNBLFlBQUlPLFFBQVFELEtBQUtFLEtBQUwsQ0FBVyxHQUFYLENBQVo7QUFDQSxZQUFJLENBQUNDLElBQUQsRUFBTyxHQUFHQyxJQUFWLElBQWtCSixLQUFLRSxLQUFMLENBQVcsR0FBWCxDQUF0QjtBQUNBLFlBQUlHLFlBQVlkLE1BQU1lLFlBQU4sRUFBaEI7QUFDQSxZQUFJUixHQUFKO0FBQ0EsWUFBSUssU0FBUyxNQUFiLEVBQXFCO0FBQ2pCTCxrQkFBTVAsTUFBTWdCLE9BQU4sRUFBTjtBQUNILFNBRkQsTUFFTyxJQUFJYixPQUFPUyxJQUFQLENBQUosRUFBa0I7QUFDckJMLGtCQUFNSixPQUFPUyxJQUFQLENBQU47QUFDSCxTQUZNLE1BRUEsSUFBSUEsS0FBS0ssT0FBTCxDQUFhLEdBQWIsTUFBc0IsQ0FBdEIsSUFBMkJILFVBQVVGLElBQVYsQ0FBL0IsRUFBZ0Q7QUFDbkRMLGtCQUFNTyxVQUFVRixJQUFWLENBQU47QUFDSCxTQUZNLE1BRUE7QUFDSEwsa0JBQU0sS0FBS1AsS0FBTCxDQUFXZ0IsT0FBWCxFQUFOO0FBQ0FILG1CQUFPSCxLQUFQO0FBQ0g7QUFDRCxlQUFPRyxLQUFLSyxNQUFMLENBQVksQ0FBQ1gsR0FBRCxFQUFNWSxJQUFOLEtBQWVaLElBQUlkLEdBQUosQ0FBUTBCLElBQVIsQ0FBM0IsRUFBMENaLEdBQTFDLENBQVA7QUFDSDtBQTNCZ0I7QUE2QnJCLHdCQUFlYSxHQUFmLENBQW1CLEVBQW5CLENBQXNCLGNBQXRCLEVBQXNDLENBQUNDLEVBQUQsRUFBSyxFQUFFQyxLQUFLQyxRQUFQLEVBQWlCQyxLQUFLQyxTQUF0QixFQUFMLEtBQTJDO0FBQzdFLFFBQUl4QixVQUFVb0IsR0FBR0ssU0FBSCxDQUFhQyxRQUFiLENBQXNCSixRQUF0QixDQUFkO0FBQ0EsUUFBSXJCLFdBQVdtQixHQUFHSyxTQUFILENBQWFFLFFBQWIsQ0FBc0JILFNBQXRCLENBQWY7QUFDQSxRQUFJSSxZQUFZLElBQUkvQixjQUFKLENBQW1CdUIsR0FBR3JCLEtBQUgsRUFBbkIsRUFBK0JDLE9BQS9CLEVBQXdDQyxRQUF4QyxDQUFoQjtBQUNBTixhQUFTeUIsR0FBR0wsT0FBSCxHQUFhYyxLQUFiLEVBQVQsRUFBK0JyQixRQUFRb0IsVUFBVXBDLEdBQVYsQ0FBY2dCLElBQWQsRUFBb0JxQixLQUFwQixFQUF2QztBQUNILENBTEQiLCJmaWxlIjoibGliL2NvbXBpbGVkL29wY29kZXMvZGVidWdnZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBUFBFTkRfT1BDT0RFUyB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IHsgZGljdCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuLyogdHNsaW50OmRpc2FibGUgKi9cbmZ1bmN0aW9uIGRlYnVnQ2FsbGJhY2soY29udGV4dCwgZ2V0KSB7XG4gICAgY29uc29sZS5pbmZvKCdVc2UgYGNvbnRleHRgLCBhbmQgYGdldCg8cGF0aD4pYCB0byBkZWJ1ZyB0aGlzIHRlbXBsYXRlLicpO1xuICAgIC8vIGZvciBleGFtcGxlLi4uXG4gICAgY29udGV4dCA9PT0gZ2V0KCd0aGlzJyk7XG4gICAgZGVidWdnZXI7XG59XG4vKiB0c2xpbnQ6ZW5hYmxlICovXG5sZXQgY2FsbGJhY2sgPSBkZWJ1Z0NhbGxiYWNrO1xuLy8gRm9yIHRlc3RpbmcgcHVycG9zZXNcbmV4cG9ydCBmdW5jdGlvbiBzZXREZWJ1Z2dlckNhbGxiYWNrKGNiKSB7XG4gICAgY2FsbGJhY2sgPSBjYjtcbn1cbmV4cG9ydCBmdW5jdGlvbiByZXNldERlYnVnZ2VyQ2FsbGJhY2soKSB7XG4gICAgY2FsbGJhY2sgPSBkZWJ1Z0NhbGxiYWNrO1xufVxuY2xhc3MgU2NvcGVJbnNwZWN0b3Ige1xuICAgIGNvbnN0cnVjdG9yKHNjb3BlLCBzeW1ib2xzLCBldmFsSW5mbykge1xuICAgICAgICB0aGlzLnNjb3BlID0gc2NvcGU7XG4gICAgICAgIHRoaXMubG9jYWxzID0gZGljdCgpO1xuICAgICAgICBldmFsSW5mby5mb3JFYWNoKHNsb3QgPT4ge1xuICAgICAgICAgICAgbGV0IG5hbWUgPSBzeW1ib2xzW3Nsb3QgLSAxXTtcbiAgICAgICAgICAgIGxldCByZWYgPSBzY29wZS5nZXRTeW1ib2woc2xvdCk7XG4gICAgICAgICAgICB0aGlzLmxvY2Fsc1tuYW1lXSA9IHJlZjtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGdldChwYXRoKSB7XG4gICAgICAgIGxldCB7IHNjb3BlLCBsb2NhbHMgfSA9IHRoaXM7XG4gICAgICAgIGxldCBwYXJ0cyA9IHBhdGguc3BsaXQoJy4nKTtcbiAgICAgICAgbGV0IFtoZWFkLCAuLi50YWlsXSA9IHBhdGguc3BsaXQoJy4nKTtcbiAgICAgICAgbGV0IGV2YWxTY29wZSA9IHNjb3BlLmdldEV2YWxTY29wZSgpO1xuICAgICAgICBsZXQgcmVmO1xuICAgICAgICBpZiAoaGVhZCA9PT0gJ3RoaXMnKSB7XG4gICAgICAgICAgICByZWYgPSBzY29wZS5nZXRTZWxmKCk7XG4gICAgICAgIH0gZWxzZSBpZiAobG9jYWxzW2hlYWRdKSB7XG4gICAgICAgICAgICByZWYgPSBsb2NhbHNbaGVhZF07XG4gICAgICAgIH0gZWxzZSBpZiAoaGVhZC5pbmRleE9mKCdAJykgPT09IDAgJiYgZXZhbFNjb3BlW2hlYWRdKSB7XG4gICAgICAgICAgICByZWYgPSBldmFsU2NvcGVbaGVhZF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZWYgPSB0aGlzLnNjb3BlLmdldFNlbGYoKTtcbiAgICAgICAgICAgIHRhaWwgPSBwYXJ0cztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGFpbC5yZWR1Y2UoKHJlZiwgcGFydCkgPT4gcmVmLmdldChwYXJ0KSwgcmVmKTtcbiAgICB9XG59XG5BUFBFTkRfT1BDT0RFUy5hZGQoNzEgLyogRGVidWdnZXIgKi8sICh2bSwgeyBvcDE6IF9zeW1ib2xzLCBvcDI6IF9ldmFsSW5mbyB9KSA9PiB7XG4gICAgbGV0IHN5bWJvbHMgPSB2bS5jb25zdGFudHMuZ2V0T3RoZXIoX3N5bWJvbHMpO1xuICAgIGxldCBldmFsSW5mbyA9IHZtLmNvbnN0YW50cy5nZXRBcnJheShfZXZhbEluZm8pO1xuICAgIGxldCBpbnNwZWN0b3IgPSBuZXcgU2NvcGVJbnNwZWN0b3Iodm0uc2NvcGUoKSwgc3ltYm9scywgZXZhbEluZm8pO1xuICAgIGNhbGxiYWNrKHZtLmdldFNlbGYoKS52YWx1ZSgpLCBwYXRoID0+IGluc3BlY3Rvci5nZXQocGF0aCkudmFsdWUoKSk7XG59KTsiXX0=

@@ -8,7 +8,7 @@ 'use strict';

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

@@ -276,3 +276,3 @@ var _references = require('../../references');

this.modifier = modifier;
this.type = 'update-modifier';
this.type = "update-modifier";
this.lastUpdated = tag.value();

@@ -345,6 +345,6 @@ }

element: formattedElement,
lastValue,
type: 'attribute',
namespace,
name,
namespace,
type: 'attribute'
lastValue
};

@@ -354,6 +354,6 @@ }

element: formattedElement,
lastValue,
type: 'attribute',
namespace: namespace === undefined ? null : namespace,
name,
namespace: namespace === undefined ? null : namespace,
type: 'attribute'
lastValue
};

@@ -380,3 +380,3 @@ }

super();
this.type = 'patch-element';
this.type = "patch-element";
this.tag = operation.tag;

@@ -391,5 +391,5 @@ this.operation = operation;

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

@@ -399,2 +399,2 @@ }

exports.PatchElementOpcode = PatchElementOpcode;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2RvbS5qcyJdLCJuYW1lcyI6WyJhZGQiLCJ2bSIsIm9wMSIsInRleHQiLCJlbGVtZW50cyIsImFwcGVuZFRleHQiLCJjb25zdGFudHMiLCJnZXRTdHJpbmciLCJhcHBlbmRDb21tZW50IiwidGFnIiwib3BlbkVsZW1lbnQiLCJ0YWdOYW1lIiwib3BlcmF0aW9ucyIsInN0YWNrIiwicG9wIiwidmFsdWUiLCJlbGVtZW50UmVmIiwibmV4dFNpYmxpbmdSZWYiLCJlbGVtZW50IiwibmV4dFNpYmxpbmciLCJjYWNoZSIsInBlZWsiLCJ1cGRhdGVXaXRoIiwicHVzaFJlbW90ZUVsZW1lbnQiLCJwb3BSZW1vdGVFbGVtZW50IiwiQ2xhc3NMaXN0IiwiY29uc3RydWN0b3IiLCJsaXN0IiwiaXNDb25zdCIsImFwcGVuZCIsInJlZmVyZW5jZSIsInB1c2giLCJ0b1JlZmVyZW5jZSIsImNyZWF0ZSIsInRvQ2xhc3NOYW1lIiwiQ2xhc3NMaXN0UmVmZXJlbmNlIiwiY29tcHV0ZSIsInJldCIsImkiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJqb2luIiwiU2ltcGxlRWxlbWVudE9wZXJhdGlvbnMiLCJlbnYiLCJvcGNvZGVzIiwiY2xhc3NMaXN0IiwiYWRkU3RhdGljQXR0cmlidXRlIiwibmFtZSIsImFkZENsYXNzIiwiZ2V0QXBwZW5kT3BlcmF0aW9ucyIsInNldEF0dHJpYnV0ZSIsImFkZFN0YXRpY0F0dHJpYnV0ZU5TIiwibmFtZXNwYWNlIiwiYWRkRHluYW1pY0F0dHJpYnV0ZSIsImlzVHJ1c3RpbmciLCJhdHRyaWJ1dGVNYW5hZ2VyIiwiYXR0cmlidXRlRm9yIiwiYXR0cmlidXRlIiwiRHluYW1pY0F0dHJpYnV0ZSIsImFkZEF0dHJpYnV0ZSIsImFkZER5bmFtaWNBdHRyaWJ1dGVOUyIsIm5zQXR0cmlidXRlIiwiZmx1c2giLCJvcGNvZGUiLCJDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyIsImF0dHJpYnV0ZU5hbWVzIiwiYXR0cmlidXRlcyIsInNob3VsZEFkZEF0dHJpYnV0ZSIsIlN0YXRpY0F0dHJpYnV0ZSIsImluZGV4T2YiLCJhY3Rpb24iLCJleHBlY3RPcGVyYXRpb25zIiwiZXhwZWN0Q29uc3RydWN0aW5nIiwiZmx1c2hFbGVtZW50IiwiY2xvc2VFbGVtZW50IiwiX25hbWUiLCJvcDIiLCJfdmFsdWUiLCJvcDMiLCJfbmFtZXNwYWNlIiwic2V0U3RhdGljQXR0cmlidXRlTlMiLCJzZXRTdGF0aWNBdHRyaWJ1dGUiLCJfbWFuYWdlciIsIm1hbmFnZXIiLCJnZXRPdGhlciIsImFyZ3MiLCJjb25zdHJ1Y3RpbmciLCJ1cGRhdGVPcGVyYXRpb25zIiwiZHluYW1pY1Njb3BlIiwibW9kaWZpZXIiLCJjbGVhciIsInNjaGVkdWxlSW5zdGFsbE1vZGlmaWVyIiwiZGVzdHJ1Y3RvciIsImdldERlc3RydWN0b3IiLCJuZXdEZXN0cm95YWJsZSIsIlVwZGF0ZU1vZGlmaWVyT3Bjb2RlIiwidHlwZSIsImxhc3RVcGRhdGVkIiwiZXZhbHVhdGUiLCJ2YWxpZGF0ZSIsInNjaGVkdWxlVXBkYXRlTW9kaWZpZXIiLCJ0b0pTT04iLCJndWlkIiwiX2d1aWQiLCJwYXRjaCIsInJldmFsaWRhdGUiLCJ1cGRhdGVBdHRyaWJ1dGUiLCJQYXRjaEVsZW1lbnRPcGNvZGUiLCJmb3JtYXR0ZWRFbGVtZW50IiwiZm9ybWF0RWxlbWVudCIsImxhc3RWYWx1ZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJ0b0xvd2VyQ2FzZSIsInRydXN0aW5nIiwic2V0RHluYW1pY0F0dHJpYnV0ZU5TIiwic2V0RHluYW1pY0F0dHJpYnV0ZSIsIm9wZXJhdGlvbiIsImRldGFpbHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQSx3QkFBZUEsR0FBZixDQUFtQixFQUFuQixDQUFzQixVQUF0QixFQUFrQyxDQUFDQyxFQUFELEVBQUssRUFBRUMsS0FBS0MsSUFBUCxFQUFMLEtBQXVCO0FBQ3JERixPQUFHRyxRQUFILEdBQWNDLFVBQWQsQ0FBeUJKLEdBQUdLLFNBQUgsQ0FBYUMsU0FBYixDQUF1QkosSUFBdkIsQ0FBekI7QUFDSCxDQUZEO0FBR0Esd0JBQWVILEdBQWYsQ0FBbUIsRUFBbkIsQ0FBc0IsYUFBdEIsRUFBcUMsQ0FBQ0MsRUFBRCxFQUFLLEVBQUVDLEtBQUtDLElBQVAsRUFBTCxLQUF1QjtBQUN4REYsT0FBR0csUUFBSCxHQUFjSSxhQUFkLENBQTRCUCxHQUFHSyxTQUFILENBQWFDLFNBQWIsQ0FBdUJKLElBQXZCLENBQTVCO0FBQ0gsQ0FGRDtBQUdBLHdCQUFlSCxHQUFmLENBQW1CLEVBQW5CLENBQXNCLGlCQUF0QixFQUF5QyxDQUFDQyxFQUFELEVBQUssRUFBRUMsS0FBS08sR0FBUCxFQUFMLEtBQXNCO0FBQzNEUixPQUFHRyxRQUFILEdBQWNNLFdBQWQsQ0FBMEJULEdBQUdLLFNBQUgsQ0FBYUMsU0FBYixDQUF1QkUsR0FBdkIsQ0FBMUI7QUFDSCxDQUZEO0FBR0Esd0JBQWVULEdBQWYsQ0FBbUIsRUFBbkIsQ0FBc0IsK0JBQXRCLEVBQXVELENBQUNDLEVBQUQsRUFBSyxFQUFFQyxLQUFLTyxHQUFQLEVBQUwsS0FBc0I7QUFDekUsUUFBSUUsVUFBVVYsR0FBR0ssU0FBSCxDQUFhQyxTQUFiLENBQXVCRSxHQUF2QixDQUFkO0FBQ0EsUUFBSUcsYUFBYVgsR0FBR1ksS0FBSCxDQUFTQyxHQUFULEVBQWpCO0FBQ0FiLE9BQUdHLFFBQUgsR0FBY00sV0FBZCxDQUEwQkMsT0FBMUIsRUFBbUNDLFVBQW5DO0FBQ0gsQ0FKRDtBQUtBLHdCQUFlWixHQUFmLENBQW1CLEVBQW5CLENBQXNCLHdCQUF0QixFQUFnREMsTUFBTTtBQUNsRCxRQUFJVyxhQUFhWCxHQUFHWSxLQUFILENBQVNDLEdBQVQsRUFBakI7QUFDQSxRQUFJSCxVQUFVVixHQUFHWSxLQUFILENBQVNDLEdBQVQsR0FBZUMsS0FBZixFQUFkO0FBQ0FkLE9BQUdHLFFBQUgsR0FBY00sV0FBZCxDQUEwQkMsT0FBMUIsRUFBbUNDLFVBQW5DO0FBQ0gsQ0FKRDtBQUtBLHdCQUFlWixHQUFmLENBQW1CLEVBQW5CLENBQXNCLHVCQUF0QixFQUErQ0MsTUFBTTtBQUNqRCxRQUFJZSxhQUFhZixHQUFHWSxLQUFILENBQVNDLEdBQVQsRUFBakI7QUFDQSxRQUFJRyxpQkFBaUJoQixHQUFHWSxLQUFILENBQVNDLEdBQVQsRUFBckI7QUFDQSxRQUFJSSxPQUFKO0FBQ0EsUUFBSUMsV0FBSjtBQUNBLFFBQUksd0JBQWlCSCxVQUFqQixDQUFKLEVBQWtDO0FBQzlCRSxrQkFBVUYsV0FBV0QsS0FBWCxFQUFWO0FBQ0gsS0FGRCxNQUVPO0FBQ0gsWUFBSUssUUFBUSw4QkFBbUJKLFVBQW5CLENBQVo7QUFDQUUsa0JBQVVFLE1BQU1DLElBQU4sRUFBVjtBQUNBcEIsV0FBR3FCLFVBQUgsQ0FBYyxlQUFXRixLQUFYLENBQWQ7QUFDSDtBQUNELFFBQUksd0JBQWlCSCxjQUFqQixDQUFKLEVBQXNDO0FBQ2xDRSxzQkFBY0YsZUFBZUYsS0FBZixFQUFkO0FBQ0gsS0FGRCxNQUVPO0FBQ0gsWUFBSUssUUFBUSw4QkFBbUJILGNBQW5CLENBQVo7QUFDQUUsc0JBQWNDLE1BQU1DLElBQU4sRUFBZDtBQUNBcEIsV0FBR3FCLFVBQUgsQ0FBYyxlQUFXRixLQUFYLENBQWQ7QUFDSDtBQUNEbkIsT0FBR0csUUFBSCxHQUFjbUIsaUJBQWQsQ0FBZ0NMLE9BQWhDLEVBQXlDQyxXQUF6QztBQUNILENBcEJEO0FBcUJBLHdCQUFlbkIsR0FBZixDQUFtQixFQUFuQixDQUFzQixzQkFBdEIsRUFBOENDLE1BQU1BLEdBQUdHLFFBQUgsR0FBY29CLGdCQUFkLEVBQXBEO0FBQ0EsTUFBTUMsU0FBTixDQUFnQjtBQUNaQyxrQkFBYztBQUNWLGFBQUtDLElBQUwsR0FBWSxJQUFaO0FBQ0EsYUFBS0MsT0FBTCxHQUFlLElBQWY7QUFDSDtBQUNEQyxXQUFPQyxTQUFQLEVBQWtCO0FBQ2QsWUFBSSxFQUFFSCxJQUFGLEVBQVFDLE9BQVIsS0FBb0IsSUFBeEI7QUFDQSxZQUFJRCxTQUFTLElBQWIsRUFBbUJBLE9BQU8sS0FBS0EsSUFBTCxHQUFZLEVBQW5CO0FBQ25CQSxhQUFLSSxJQUFMLENBQVVELFNBQVY7QUFDQSxhQUFLRixPQUFMLEdBQWVBLFdBQVcsd0JBQWlCRSxTQUFqQixDQUExQjtBQUNIO0FBQ0RFLGtCQUFjO0FBQ1YsWUFBSSxFQUFFTCxJQUFGLEVBQVFDLE9BQVIsS0FBb0IsSUFBeEI7QUFDQSxZQUFJLENBQUNELElBQUwsRUFBVztBQUNYLFlBQUlDLE9BQUosRUFBYSxPQUFPLCtCQUFtQkssTUFBbkIsQ0FBMEJDLFlBQVlQLElBQVosQ0FBMUIsQ0FBUDtBQUNiLGVBQU8sSUFBSVEsa0JBQUosQ0FBdUJSLElBQXZCLENBQVA7QUFDSDtBQWhCVztBQWtCaEIsTUFBTVEsa0JBQU4sb0NBQWlEO0FBQzdDVCxnQkFBWUMsSUFBWixFQUFrQjtBQUNkO0FBQ0EsYUFBS0EsSUFBTCxHQUFZLEVBQVo7QUFDQSxhQUFLbEIsR0FBTCxHQUFXLDhCQUFja0IsSUFBZCxDQUFYO0FBQ0EsYUFBS0EsSUFBTCxHQUFZQSxJQUFaO0FBQ0g7QUFDRFMsY0FBVTtBQUNOLGVBQU9GLFlBQVksS0FBS1AsSUFBakIsQ0FBUDtBQUNIO0FBVDRDO0FBV2pELFNBQVNPLFdBQVQsQ0FBcUJQLElBQXJCLEVBQTJCO0FBQ3ZCLFFBQUlVLE1BQU0sRUFBVjtBQUNBLFNBQUssSUFBSUMsSUFBSSxDQUFiLEVBQWdCQSxJQUFJWCxLQUFLWSxNQUF6QixFQUFpQ0QsR0FBakMsRUFBc0M7QUFDbEMsWUFBSXZCLFFBQVFZLEtBQUtXLENBQUwsRUFBUXZCLEtBQVIsRUFBWjtBQUNBLFlBQUlBLFVBQVUsS0FBVixJQUFtQkEsVUFBVSxJQUE3QixJQUFxQ0EsVUFBVXlCLFNBQW5ELEVBQThESCxJQUFJTixJQUFKLENBQVNoQixLQUFUO0FBQ2pFO0FBQ0QsV0FBT3NCLElBQUlFLE1BQUosS0FBZSxDQUFmLEdBQW1CLElBQW5CLEdBQTBCRixJQUFJSSxJQUFKLENBQVMsR0FBVCxDQUFqQztBQUNIO0FBQ00sTUFBTUMsdUJBQU4sQ0FBOEI7QUFDakNoQixnQkFBWWlCLEdBQVosRUFBaUI7QUFDYixhQUFLQSxHQUFMLEdBQVdBLEdBQVg7QUFDQSxhQUFLQyxPQUFMLEdBQWUsSUFBZjtBQUNBLGFBQUtDLFNBQUwsR0FBaUIsSUFBakI7QUFDSDtBQUNEQyx1QkFBbUI1QixPQUFuQixFQUE0QjZCLElBQTVCLEVBQWtDaEMsS0FBbEMsRUFBeUM7QUFDckMsWUFBSWdDLFNBQVMsT0FBYixFQUFzQjtBQUNsQixpQkFBS0MsUUFBTCxDQUFjLCtCQUFtQmYsTUFBbkIsQ0FBMEJsQixLQUExQixDQUFkO0FBQ0gsU0FGRCxNQUVPO0FBQ0gsaUJBQUs0QixHQUFMLENBQVNNLG1CQUFULEdBQStCQyxZQUEvQixDQUE0Q2hDLE9BQTVDLEVBQXFENkIsSUFBckQsRUFBMkRoQyxLQUEzRDtBQUNIO0FBQ0o7QUFDRG9DLHlCQUFxQmpDLE9BQXJCLEVBQThCa0MsU0FBOUIsRUFBeUNMLElBQXpDLEVBQStDaEMsS0FBL0MsRUFBc0Q7QUFDbEQsYUFBSzRCLEdBQUwsQ0FBU00sbUJBQVQsR0FBK0JDLFlBQS9CLENBQTRDaEMsT0FBNUMsRUFBcUQ2QixJQUFyRCxFQUEyRGhDLEtBQTNELEVBQWtFcUMsU0FBbEU7QUFDSDtBQUNEQyx3QkFBb0JuQyxPQUFwQixFQUE2QjZCLElBQTdCLEVBQW1DakIsU0FBbkMsRUFBOEN3QixVQUE5QyxFQUEwRDtBQUN0RCxZQUFJUCxTQUFTLE9BQWIsRUFBc0I7QUFDbEIsaUJBQUtDLFFBQUwsQ0FBY2xCLFNBQWQ7QUFDSCxTQUZELE1BRU87QUFDSCxnQkFBSXlCLG1CQUFtQixLQUFLWixHQUFMLENBQVNhLFlBQVQsQ0FBc0J0QyxPQUF0QixFQUErQjZCLElBQS9CLEVBQXFDTyxVQUFyQyxDQUF2QjtBQUNBLGdCQUFJRyxZQUFZLElBQUlDLGdCQUFKLENBQXFCeEMsT0FBckIsRUFBOEJxQyxnQkFBOUIsRUFBZ0RSLElBQWhELEVBQXNEakIsU0FBdEQsQ0FBaEI7QUFDQSxpQkFBSzZCLFlBQUwsQ0FBa0JGLFNBQWxCO0FBQ0g7QUFDSjtBQUNERywwQkFBc0IxQyxPQUF0QixFQUErQmtDLFNBQS9CLEVBQTBDTCxJQUExQyxFQUFnRGpCLFNBQWhELEVBQTJEd0IsVUFBM0QsRUFBdUU7QUFDbkUsWUFBSUMsbUJBQW1CLEtBQUtaLEdBQUwsQ0FBU2EsWUFBVCxDQUFzQnRDLE9BQXRCLEVBQStCNkIsSUFBL0IsRUFBcUNPLFVBQXJDLEVBQWlERixTQUFqRCxDQUF2QjtBQUNBLFlBQUlTLGNBQWMsSUFBSUgsZ0JBQUosQ0FBcUJ4QyxPQUFyQixFQUE4QnFDLGdCQUE5QixFQUFnRFIsSUFBaEQsRUFBc0RqQixTQUF0RCxFQUFpRXNCLFNBQWpFLENBQWxCO0FBQ0EsYUFBS08sWUFBTCxDQUFrQkUsV0FBbEI7QUFDSDtBQUNEQyxVQUFNNUMsT0FBTixFQUFlakIsRUFBZixFQUFtQjtBQUNmLFlBQUksRUFBRTBDLEdBQUYsS0FBVTFDLEVBQWQ7QUFDQSxZQUFJLEVBQUUyQyxPQUFGLEVBQVdDLFNBQVgsS0FBeUIsSUFBN0I7QUFDQSxhQUFLLElBQUlQLElBQUksQ0FBYixFQUFnQk0sV0FBV04sSUFBSU0sUUFBUUwsTUFBdkMsRUFBK0NELEdBQS9DLEVBQW9EO0FBQ2hEckMsZUFBR3FCLFVBQUgsQ0FBY3NCLFFBQVFOLENBQVIsQ0FBZDtBQUNIO0FBQ0QsWUFBSU8sU0FBSixFQUFlO0FBQ1gsZ0JBQUlVLG1CQUFtQlosSUFBSWEsWUFBSixDQUFpQnRDLE9BQWpCLEVBQTBCLE9BQTFCLEVBQW1DLEtBQW5DLENBQXZCO0FBQ0EsZ0JBQUl1QyxZQUFZLElBQUlDLGdCQUFKLENBQXFCeEMsT0FBckIsRUFBOEJxQyxnQkFBOUIsRUFBZ0QsT0FBaEQsRUFBeURWLFVBQVViLFdBQVYsRUFBekQsQ0FBaEI7QUFDQSxnQkFBSStCLFNBQVNOLFVBQVVLLEtBQVYsQ0FBZ0JuQixHQUFoQixDQUFiO0FBQ0EsZ0JBQUlvQixNQUFKLEVBQVk7QUFDUjlELG1CQUFHcUIsVUFBSCxDQUFjeUMsTUFBZDtBQUNIO0FBQ0o7QUFDRCxhQUFLbkIsT0FBTCxHQUFlLElBQWY7QUFDQSxhQUFLQyxTQUFMLEdBQWlCLElBQWpCO0FBQ0g7QUFDREcsYUFBU2xCLFNBQVQsRUFBb0I7QUFDaEIsWUFBSSxFQUFFZSxTQUFGLEtBQWdCLElBQXBCO0FBQ0EsWUFBSSxDQUFDQSxTQUFMLEVBQWdCO0FBQ1pBLHdCQUFZLEtBQUtBLFNBQUwsR0FBaUIsSUFBSXBCLFNBQUosRUFBN0I7QUFDSDtBQUNEb0Isa0JBQVVoQixNQUFWLENBQWlCQyxTQUFqQjtBQUNIO0FBQ0Q2QixpQkFBYUYsU0FBYixFQUF3QjtBQUNwQixZQUFJTSxTQUFTTixVQUFVSyxLQUFWLENBQWdCLEtBQUtuQixHQUFyQixDQUFiO0FBQ0EsWUFBSW9CLE1BQUosRUFBWTtBQUNSLGdCQUFJLEVBQUVuQixPQUFGLEtBQWMsSUFBbEI7QUFDQSxnQkFBSSxDQUFDQSxPQUFMLEVBQWM7QUFDVkEsMEJBQVUsS0FBS0EsT0FBTCxHQUFlLEVBQXpCO0FBQ0g7QUFDREEsb0JBQVFiLElBQVIsQ0FBYWdDLE1BQWI7QUFDSDtBQUNKO0FBL0RnQztRQUF4QnJCLHVCLEdBQUFBLHVCO0FBaUVOLE1BQU1zQiwwQkFBTixDQUFpQztBQUNwQ3RDLGdCQUFZaUIsR0FBWixFQUFpQjtBQUNiLGFBQUtBLEdBQUwsR0FBV0EsR0FBWDtBQUNBLGFBQUtzQixjQUFMLEdBQXNCLElBQXRCO0FBQ0EsYUFBS0MsVUFBTCxHQUFrQixJQUFsQjtBQUNBLGFBQUtyQixTQUFMLEdBQWlCLElBQWpCO0FBQ0g7QUFDREMsdUJBQW1CNUIsT0FBbkIsRUFBNEI2QixJQUE1QixFQUFrQ2hDLEtBQWxDLEVBQXlDO0FBQ3JDLFlBQUlnQyxTQUFTLE9BQWIsRUFBc0I7QUFDbEIsaUJBQUtDLFFBQUwsQ0FBYywrQkFBbUJmLE1BQW5CLENBQTBCbEIsS0FBMUIsQ0FBZDtBQUNILFNBRkQsTUFFTyxJQUFJLEtBQUtvRCxrQkFBTCxDQUF3QnBCLElBQXhCLENBQUosRUFBbUM7QUFDdEMsaUJBQUtZLFlBQUwsQ0FBa0JaLElBQWxCLEVBQXdCLElBQUlxQixlQUFKLENBQW9CbEQsT0FBcEIsRUFBNkI2QixJQUE3QixFQUFtQ2hDLEtBQW5DLENBQXhCO0FBQ0g7QUFDSjtBQUNEb0MseUJBQXFCakMsT0FBckIsRUFBOEJrQyxTQUE5QixFQUF5Q0wsSUFBekMsRUFBK0NoQyxLQUEvQyxFQUFzRDtBQUNsRCxZQUFJLEtBQUtvRCxrQkFBTCxDQUF3QnBCLElBQXhCLENBQUosRUFBbUM7QUFDL0IsaUJBQUtZLFlBQUwsQ0FBa0JaLElBQWxCLEVBQXdCLElBQUlxQixlQUFKLENBQW9CbEQsT0FBcEIsRUFBNkI2QixJQUE3QixFQUFtQ2hDLEtBQW5DLEVBQTBDcUMsU0FBMUMsQ0FBeEI7QUFDSDtBQUNKO0FBQ0RDLHdCQUFvQm5DLE9BQXBCLEVBQTZCNkIsSUFBN0IsRUFBbUNqQixTQUFuQyxFQUE4Q3dCLFVBQTlDLEVBQTBEO0FBQ3RELFlBQUlQLFNBQVMsT0FBYixFQUFzQjtBQUNsQixpQkFBS0MsUUFBTCxDQUFjbEIsU0FBZDtBQUNILFNBRkQsTUFFTyxJQUFJLEtBQUtxQyxrQkFBTCxDQUF3QnBCLElBQXhCLENBQUosRUFBbUM7QUFDdEMsZ0JBQUlRLG1CQUFtQixLQUFLWixHQUFMLENBQVNhLFlBQVQsQ0FBc0J0QyxPQUF0QixFQUErQjZCLElBQS9CLEVBQXFDTyxVQUFyQyxDQUF2QjtBQUNBLGdCQUFJRyxZQUFZLElBQUlDLGdCQUFKLENBQXFCeEMsT0FBckIsRUFBOEJxQyxnQkFBOUIsRUFBZ0RSLElBQWhELEVBQXNEakIsU0FBdEQsQ0FBaEI7QUFDQSxpQkFBSzZCLFlBQUwsQ0FBa0JaLElBQWxCLEVBQXdCVSxTQUF4QjtBQUNIO0FBQ0o7QUFDREcsMEJBQXNCMUMsT0FBdEIsRUFBK0JrQyxTQUEvQixFQUEwQ0wsSUFBMUMsRUFBZ0RqQixTQUFoRCxFQUEyRHdCLFVBQTNELEVBQXVFO0FBQ25FLFlBQUksS0FBS2Esa0JBQUwsQ0FBd0JwQixJQUF4QixDQUFKLEVBQW1DO0FBQy9CLGdCQUFJUSxtQkFBbUIsS0FBS1osR0FBTCxDQUFTYSxZQUFULENBQXNCdEMsT0FBdEIsRUFBK0I2QixJQUEvQixFQUFxQ08sVUFBckMsRUFBaURGLFNBQWpELENBQXZCO0FBQ0EsZ0JBQUlTLGNBQWMsSUFBSUgsZ0JBQUosQ0FBcUJ4QyxPQUFyQixFQUE4QnFDLGdCQUE5QixFQUFnRFIsSUFBaEQsRUFBc0RqQixTQUF0RCxFQUFpRXNCLFNBQWpFLENBQWxCO0FBQ0EsaUJBQUtPLFlBQUwsQ0FBa0JaLElBQWxCLEVBQXdCYyxXQUF4QjtBQUNIO0FBQ0o7QUFDREMsVUFBTTVDLE9BQU4sRUFBZWpCLEVBQWYsRUFBbUI7QUFDZixZQUFJLEVBQUUwQyxHQUFGLEtBQVUsSUFBZDtBQUNBLFlBQUksRUFBRXVCLFVBQUYsRUFBY3JCLFNBQWQsS0FBNEIsSUFBaEM7QUFDQSxhQUFLLElBQUlQLElBQUksQ0FBYixFQUFnQjRCLGNBQWM1QixJQUFJNEIsV0FBVzNCLE1BQTdDLEVBQXFERCxHQUFyRCxFQUEwRDtBQUN0RCxnQkFBSXlCLFNBQVNHLFdBQVc1QixDQUFYLEVBQWN3QixLQUFkLENBQW9CbkIsR0FBcEIsQ0FBYjtBQUNBLGdCQUFJb0IsTUFBSixFQUFZO0FBQ1I5RCxtQkFBR3FCLFVBQUgsQ0FBY3lDLE1BQWQ7QUFDSDtBQUNKO0FBQ0QsWUFBSWxCLFNBQUosRUFBZTtBQUNYLGdCQUFJVSxtQkFBbUJaLElBQUlhLFlBQUosQ0FBaUJ0QyxPQUFqQixFQUEwQixPQUExQixFQUFtQyxLQUFuQyxDQUF2QjtBQUNBLGdCQUFJdUMsWUFBWSxJQUFJQyxnQkFBSixDQUFxQnhDLE9BQXJCLEVBQThCcUMsZ0JBQTlCLEVBQWdELE9BQWhELEVBQXlEVixVQUFVYixXQUFWLEVBQXpELENBQWhCO0FBQ0EsZ0JBQUkrQixTQUFTTixVQUFVSyxLQUFWLENBQWdCbkIsR0FBaEIsQ0FBYjtBQUNBLGdCQUFJb0IsTUFBSixFQUFZO0FBQ1I5RCxtQkFBR3FCLFVBQUgsQ0FBY3lDLE1BQWQ7QUFDSDtBQUNKO0FBQ0o7QUFDREksdUJBQW1CcEIsSUFBbkIsRUFBeUI7QUFDckIsZUFBTyxDQUFDLEtBQUtrQixjQUFOLElBQXdCLEtBQUtBLGNBQUwsQ0FBb0JJLE9BQXBCLENBQTRCdEIsSUFBNUIsTUFBc0MsQ0FBQyxDQUF0RTtBQUNIO0FBQ0RDLGFBQVNsQixTQUFULEVBQW9CO0FBQ2hCLFlBQUksRUFBRWUsU0FBRixLQUFnQixJQUFwQjtBQUNBLFlBQUksQ0FBQ0EsU0FBTCxFQUFnQjtBQUNaQSx3QkFBWSxLQUFLQSxTQUFMLEdBQWlCLElBQUlwQixTQUFKLEVBQTdCO0FBQ0g7QUFDRG9CLGtCQUFVaEIsTUFBVixDQUFpQkMsU0FBakI7QUFDSDtBQUNENkIsaUJBQWFaLElBQWIsRUFBbUJVLFNBQW5CLEVBQThCO0FBQzFCLFlBQUksRUFBRVEsY0FBRixFQUFrQkMsVUFBbEIsS0FBaUMsSUFBckM7QUFDQSxZQUFJLENBQUNELGNBQUwsRUFBcUI7QUFDakJBLDZCQUFpQixLQUFLQSxjQUFMLEdBQXNCLEVBQXZDO0FBQ0FDLHlCQUFhLEtBQUtBLFVBQUwsR0FBa0IsRUFBL0I7QUFDSDtBQUNERCx1QkFBZWxDLElBQWYsQ0FBb0JnQixJQUFwQjtBQUNBLDBCQUFPbUIsVUFBUCxFQUFtQm5DLElBQW5CLENBQXdCMEIsU0FBeEI7QUFDSDtBQXZFbUM7UUFBM0JPLDBCLEdBQUFBLDBCO0FBeUViLHdCQUFlaEUsR0FBZixDQUFtQixFQUFuQixDQUFzQixrQkFBdEIsRUFBMENDLE1BQU07QUFDNUMsUUFBSVksUUFBUVosR0FBR0csUUFBSCxFQUFaO0FBQ0EsUUFBSWtFLFNBQVMsNkJBQWI7QUFDQXpELFVBQU0wRCxnQkFBTixDQUF1QkQsTUFBdkIsRUFBK0JSLEtBQS9CLENBQXFDakQsTUFBTTJELGtCQUFOLENBQXlCRixNQUF6QixDQUFyQyxFQUF1RXJFLEVBQXZFO0FBQ0FZLFVBQU00RCxZQUFOO0FBQ0gsQ0FMRDtBQU1BLHdCQUFlekUsR0FBZixDQUFtQixFQUFuQixDQUFzQixrQkFBdEIsRUFBMENDLE1BQU1BLEdBQUdHLFFBQUgsR0FBY3NFLFlBQWQsRUFBaEQ7QUFDQSx3QkFBZTFFLEdBQWYsQ0FBbUIsRUFBbkIsQ0FBc0IsZ0JBQXRCLEVBQXdDLENBQUNDLEVBQUQsRUFBSyxFQUFFQyxLQUFLeUUsS0FBUCxFQUFjQyxLQUFLQyxNQUFuQixFQUEyQkMsS0FBS0MsVUFBaEMsRUFBTCxLQUFzRDtBQUMxRixRQUFJaEMsT0FBTzlDLEdBQUdLLFNBQUgsQ0FBYUMsU0FBYixDQUF1Qm9FLEtBQXZCLENBQVg7QUFDQSxRQUFJNUQsUUFBUWQsR0FBR0ssU0FBSCxDQUFhQyxTQUFiLENBQXVCc0UsTUFBdkIsQ0FBWjtBQUNBLFFBQUlFLFVBQUosRUFBZ0I7QUFDWixZQUFJM0IsWUFBWW5ELEdBQUdLLFNBQUgsQ0FBYUMsU0FBYixDQUF1QndFLFVBQXZCLENBQWhCO0FBQ0E5RSxXQUFHRyxRQUFILEdBQWM0RSxvQkFBZCxDQUFtQzVCLFNBQW5DLEVBQThDTCxJQUE5QyxFQUFvRGhDLEtBQXBEO0FBQ0gsS0FIRCxNQUdPO0FBQ0hkLFdBQUdHLFFBQUgsR0FBYzZFLGtCQUFkLENBQWlDbEMsSUFBakMsRUFBdUNoQyxLQUF2QztBQUNIO0FBQ0osQ0FURDtBQVVBLHdCQUFlZixHQUFmLENBQW1CLEVBQW5CLENBQXNCLGNBQXRCLEVBQXNDLENBQUNDLEVBQUQsRUFBSyxFQUFFQyxLQUFLZ0YsUUFBUCxFQUFMLEtBQTJCO0FBQzdELFFBQUlDLFVBQVVsRixHQUFHSyxTQUFILENBQWE4RSxRQUFiLENBQXNCRixRQUF0QixDQUFkO0FBQ0EsUUFBSXJFLFFBQVFaLEdBQUdZLEtBQWY7QUFDQSxRQUFJd0UsT0FBT3hFLE1BQU1DLEdBQU4sRUFBWDtBQUNBLFFBQUlMLE1BQU00RSxLQUFLNUUsR0FBZjtBQUNBLFFBQUksRUFBRTZFLGNBQWNwRSxPQUFoQixFQUF5QnFFLGdCQUF6QixLQUE4Q3RGLEdBQUdHLFFBQUgsRUFBbEQ7QUFDQSxRQUFJb0YsZUFBZXZGLEdBQUd1RixZQUFILEVBQW5CO0FBQ0EsUUFBSUMsV0FBV04sUUFBUWxELE1BQVIsQ0FBZWYsT0FBZixFQUF3Qm1FLElBQXhCLEVBQThCRyxZQUE5QixFQUE0Q0QsZ0JBQTVDLENBQWY7QUFDQUYsU0FBS0ssS0FBTDtBQUNBekYsT0FBRzBDLEdBQUgsQ0FBT2dELHVCQUFQLENBQStCRixRQUEvQixFQUF5Q04sT0FBekM7QUFDQSxRQUFJUyxhQUFhVCxRQUFRVSxhQUFSLENBQXNCSixRQUF0QixDQUFqQjtBQUNBLFFBQUlHLFVBQUosRUFBZ0I7QUFDWjNGLFdBQUc2RixjQUFILENBQWtCRixVQUFsQjtBQUNIO0FBQ0QzRixPQUFHcUIsVUFBSCxDQUFjLElBQUl5RSxvQkFBSixDQUF5QnRGLEdBQXpCLEVBQThCMEUsT0FBOUIsRUFBdUNNLFFBQXZDLENBQWQ7QUFDSCxDQWZEO0FBZ0JPLE1BQU1NLG9CQUFOLGlDQUFrRDtBQUNyRHJFLGdCQUFZakIsR0FBWixFQUFpQjBFLE9BQWpCLEVBQTBCTSxRQUExQixFQUFvQztBQUNoQztBQUNBLGFBQUtoRixHQUFMLEdBQVdBLEdBQVg7QUFDQSxhQUFLMEUsT0FBTCxHQUFlQSxPQUFmO0FBQ0EsYUFBS00sUUFBTCxHQUFnQkEsUUFBaEI7QUFDQSxhQUFLTyxJQUFMLEdBQVksaUJBQVo7QUFDQSxhQUFLQyxXQUFMLEdBQW1CeEYsSUFBSU0sS0FBSixFQUFuQjtBQUNIO0FBQ0RtRixhQUFTakcsRUFBVCxFQUFhO0FBQ1QsWUFBSSxFQUFFa0YsT0FBRixFQUFXTSxRQUFYLEVBQXFCaEYsR0FBckIsRUFBMEJ3RixXQUExQixLQUEwQyxJQUE5QztBQUNBLFlBQUksQ0FBQ3hGLElBQUkwRixRQUFKLENBQWFGLFdBQWIsQ0FBTCxFQUFnQztBQUM1QmhHLGVBQUcwQyxHQUFILENBQU95RCxzQkFBUCxDQUE4QlgsUUFBOUIsRUFBd0NOLE9BQXhDO0FBQ0EsaUJBQUtjLFdBQUwsR0FBbUJ4RixJQUFJTSxLQUFKLEVBQW5CO0FBQ0g7QUFDSjtBQUNEc0YsYUFBUztBQUNMLGVBQU87QUFDSEMsa0JBQU0sS0FBS0MsS0FEUjtBQUVIUCxrQkFBTSxLQUFLQTtBQUZSLFNBQVA7QUFJSDtBQXJCb0Q7UUFBNUNELG9CLEdBQUFBLG9CO0FBdUJOLE1BQU0zQixlQUFOLENBQXNCO0FBQ3pCMUMsZ0JBQVlSLE9BQVosRUFBcUI2QixJQUFyQixFQUEyQmhDLEtBQTNCLEVBQWtDcUMsU0FBbEMsRUFBNkM7QUFDekMsYUFBS2xDLE9BQUwsR0FBZUEsT0FBZjtBQUNBLGFBQUs2QixJQUFMLEdBQVlBLElBQVo7QUFDQSxhQUFLaEMsS0FBTCxHQUFhQSxLQUFiO0FBQ0EsYUFBS3FDLFNBQUwsR0FBaUJBLFNBQWpCO0FBQ0g7QUFDRFUsVUFBTW5CLEdBQU4sRUFBVztBQUNQQSxZQUFJTSxtQkFBSixHQUEwQkMsWUFBMUIsQ0FBdUMsS0FBS2hDLE9BQTVDLEVBQXFELEtBQUs2QixJQUExRCxFQUFnRSxLQUFLaEMsS0FBckUsRUFBNEUsS0FBS3FDLFNBQWpGO0FBQ0EsZUFBTyxJQUFQO0FBQ0g7QUFWd0I7UUFBaEJnQixlLEdBQUFBLGU7QUFZTixNQUFNVixnQkFBTixDQUF1QjtBQUMxQmhDLGdCQUFZUixPQUFaLEVBQXFCcUMsZ0JBQXJCLEVBQXVDUixJQUF2QyxFQUE2Q2pCLFNBQTdDLEVBQXdEc0IsU0FBeEQsRUFBbUU7QUFDL0QsYUFBS2xDLE9BQUwsR0FBZUEsT0FBZjtBQUNBLGFBQUtxQyxnQkFBTCxHQUF3QkEsZ0JBQXhCO0FBQ0EsYUFBS1IsSUFBTCxHQUFZQSxJQUFaO0FBQ0EsYUFBS2pCLFNBQUwsR0FBaUJBLFNBQWpCO0FBQ0EsYUFBS3NCLFNBQUwsR0FBaUJBLFNBQWpCO0FBQ0EsYUFBS2hDLEtBQUwsR0FBYSxJQUFiO0FBQ0EsYUFBS1gsR0FBTCxHQUFXcUIsVUFBVXJCLEdBQXJCO0FBQ0g7QUFDRCtGLFVBQU03RCxHQUFOLEVBQVc7QUFDUCxZQUFJLEVBQUV6QixPQUFGLEVBQVdFLEtBQVgsS0FBcUIsSUFBekI7QUFDQSxZQUFJTCxRQUFRLGtCQUFPSyxLQUFQLEVBQWMsd0JBQWQsRUFBd0NxRixVQUF4QyxFQUFaO0FBQ0EsWUFBSSwyQkFBVzFGLEtBQVgsQ0FBSixFQUF1QjtBQUNuQixpQkFBS3dDLGdCQUFMLENBQXNCbUQsZUFBdEIsQ0FBc0MvRCxHQUF0QyxFQUEyQ3pCLE9BQTNDLEVBQW9ESCxLQUFwRCxFQUEyRCxLQUFLcUMsU0FBaEU7QUFDSDtBQUNKO0FBQ0RVLFVBQU1uQixHQUFOLEVBQVc7QUFDUCxZQUFJLEVBQUViLFNBQUYsRUFBYVosT0FBYixLQUF5QixJQUE3QjtBQUNBLFlBQUksd0JBQWlCWSxTQUFqQixDQUFKLEVBQWlDO0FBQzdCLGdCQUFJZixRQUFRZSxVQUFVZixLQUFWLEVBQVo7QUFDQSxpQkFBS3dDLGdCQUFMLENBQXNCTCxZQUF0QixDQUFtQ1AsR0FBbkMsRUFBd0N6QixPQUF4QyxFQUFpREgsS0FBakQsRUFBd0QsS0FBS3FDLFNBQTdEO0FBQ0EsbUJBQU8sSUFBUDtBQUNILFNBSkQsTUFJTztBQUNILGdCQUFJaEMsUUFBUSxLQUFLQSxLQUFMLEdBQWEsOEJBQW1CVSxTQUFuQixDQUF6QjtBQUNBLGdCQUFJZixRQUFRSyxNQUFNQyxJQUFOLEVBQVo7QUFDQSxpQkFBS2tDLGdCQUFMLENBQXNCTCxZQUF0QixDQUFtQ1AsR0FBbkMsRUFBd0N6QixPQUF4QyxFQUFpREgsS0FBakQsRUFBd0QsS0FBS3FDLFNBQTdEO0FBQ0EsbUJBQU8sSUFBSXVELGtCQUFKLENBQXVCLElBQXZCLENBQVA7QUFDSDtBQUNKO0FBQ0ROLGFBQVM7QUFDTCxZQUFJLEVBQUVuRixPQUFGLEVBQVdrQyxTQUFYLEVBQXNCTCxJQUF0QixFQUE0QjNCLEtBQTVCLEtBQXNDLElBQTFDO0FBQ0EsWUFBSXdGLG1CQUFtQkMsY0FBYzNGLE9BQWQsQ0FBdkI7QUFDQSxZQUFJNEYsWUFBWSxrQkFBTzFGLEtBQVAsRUFBYyw0QkFBZCxFQUE0Q0MsSUFBNUMsRUFBaEI7QUFDQSxZQUFJK0IsU0FBSixFQUFlO0FBQ1gsbUJBQU87QUFDSGxDLHlCQUFTMEYsZ0JBRE47QUFFSEUseUJBRkc7QUFHSC9ELG9CQUhHO0FBSUhLLHlCQUpHO0FBS0g0QyxzQkFBTTtBQUxILGFBQVA7QUFPSDtBQUNELGVBQU87QUFDSDlFLHFCQUFTMEYsZ0JBRE47QUFFSEUscUJBRkc7QUFHSC9ELGdCQUhHO0FBSUhLLHVCQUFXQSxjQUFjWixTQUFkLEdBQTBCLElBQTFCLEdBQWlDWSxTQUp6QztBQUtINEMsa0JBQU07QUFMSCxTQUFQO0FBT0g7QUFsRHlCO1FBQWpCdEMsZ0IsR0FBQUEsZ0I7QUFvRGIsU0FBU21ELGFBQVQsQ0FBdUIzRixPQUF2QixFQUFnQztBQUM1QixXQUFPNkYsS0FBS0MsU0FBTCxDQUFnQixJQUFHOUYsUUFBUVAsT0FBUixDQUFnQnNHLFdBQWhCLEVBQThCLEtBQWpELENBQVA7QUFDSDtBQUNELHdCQUFlakgsR0FBZixDQUFtQixFQUFuQixDQUFzQixtQkFBdEIsRUFBMkMsQ0FBQ0MsRUFBRCxFQUFLLEVBQUVDLEtBQUt5RSxLQUFQLEVBQWNDLEtBQUtHLFVBQW5CLEVBQStCRCxLQUFLb0MsUUFBcEMsRUFBTCxLQUF3RDtBQUMvRixRQUFJbkUsT0FBTzlDLEdBQUdLLFNBQUgsQ0FBYUMsU0FBYixDQUF1Qm9FLEtBQXZCLENBQVg7QUFDQSxRQUFJdkIsWUFBWW5ELEdBQUdLLFNBQUgsQ0FBYUMsU0FBYixDQUF1QndFLFVBQXZCLENBQWhCO0FBQ0EsUUFBSWpELFlBQVk3QixHQUFHWSxLQUFILENBQVNDLEdBQVQsRUFBaEI7QUFDQWIsT0FBR0csUUFBSCxHQUFjK0cscUJBQWQsQ0FBb0MvRCxTQUFwQyxFQUErQ0wsSUFBL0MsRUFBcURqQixTQUFyRCxFQUFnRSxDQUFDLENBQUNvRixRQUFsRTtBQUNILENBTEQ7QUFNQSx3QkFBZWxILEdBQWYsQ0FBbUIsRUFBbkIsQ0FBc0IsaUJBQXRCLEVBQXlDLENBQUNDLEVBQUQsRUFBSyxFQUFFQyxLQUFLeUUsS0FBUCxFQUFjQyxLQUFLc0MsUUFBbkIsRUFBTCxLQUF1QztBQUM1RSxRQUFJbkUsT0FBTzlDLEdBQUdLLFNBQUgsQ0FBYUMsU0FBYixDQUF1Qm9FLEtBQXZCLENBQVg7QUFDQSxRQUFJN0MsWUFBWTdCLEdBQUdZLEtBQUgsQ0FBU0MsR0FBVCxFQUFoQjtBQUNBYixPQUFHRyxRQUFILEdBQWNnSCxtQkFBZCxDQUFrQ3JFLElBQWxDLEVBQXdDakIsU0FBeEMsRUFBbUQsQ0FBQyxDQUFDb0YsUUFBckQ7QUFDSCxDQUpEO0FBS08sTUFBTVAsa0JBQU4saUNBQWdEO0FBQ25EakYsZ0JBQVkyRixTQUFaLEVBQXVCO0FBQ25CO0FBQ0EsYUFBS3JCLElBQUwsR0FBWSxlQUFaO0FBQ0EsYUFBS3ZGLEdBQUwsR0FBVzRHLFVBQVU1RyxHQUFyQjtBQUNBLGFBQUs0RyxTQUFMLEdBQWlCQSxTQUFqQjtBQUNIO0FBQ0RuQixhQUFTakcsRUFBVCxFQUFhO0FBQ1QsYUFBS29ILFNBQUwsQ0FBZWIsS0FBZixDQUFxQnZHLEdBQUcwQyxHQUF4QjtBQUNIO0FBQ0QwRCxhQUFTO0FBQ0wsWUFBSSxFQUFFRSxLQUFGLEVBQVNQLElBQVQsRUFBZXFCLFNBQWYsS0FBNkIsSUFBakM7QUFDQSxlQUFPO0FBQ0hDLHFCQUFTRCxVQUFVaEIsTUFBVixFQUROO0FBRUhDLGtCQUFNQyxLQUZIO0FBR0hQO0FBSEcsU0FBUDtBQUtIO0FBakJrRDtRQUExQ1csa0IsR0FBQUEsa0IiLCJmaWxlIjoibGliL2NvbXBpbGVkL29wY29kZXMvZG9tLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2FjaGVkUmVmZXJlbmNlLCBjb21iaW5lVGFnZ2VkLCBpc0NvbnN0IGFzIGlzQ29uc3RSZWZlcmVuY2UsIGlzTW9kaWZpZWQsIFJlZmVyZW5jZUNhY2hlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IGV4cGVjdCwgdW53cmFwIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBBUFBFTkRfT1BDT0RFUywgVXBkYXRpbmdPcGNvZGUgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IE5VTExfUkVGRVJFTkNFLCBQcmltaXRpdmVSZWZlcmVuY2UgfSBmcm9tICcuLi8uLi9yZWZlcmVuY2VzJztcbmltcG9ydCB7IEFzc2VydCB9IGZyb20gJy4vdm0nO1xuQVBQRU5EX09QQ09ERVMuYWRkKDIzIC8qIFRleHQgKi8sICh2bSwgeyBvcDE6IHRleHQgfSkgPT4ge1xuICAgIHZtLmVsZW1lbnRzKCkuYXBwZW5kVGV4dCh2bS5jb25zdGFudHMuZ2V0U3RyaW5nKHRleHQpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDI0IC8qIENvbW1lbnQgKi8sICh2bSwgeyBvcDE6IHRleHQgfSkgPT4ge1xuICAgIHZtLmVsZW1lbnRzKCkuYXBwZW5kQ29tbWVudCh2bS5jb25zdGFudHMuZ2V0U3RyaW5nKHRleHQpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDI2IC8qIE9wZW5FbGVtZW50ICovLCAodm0sIHsgb3AxOiB0YWcgfSkgPT4ge1xuICAgIHZtLmVsZW1lbnRzKCkub3BlbkVsZW1lbnQodm0uY29uc3RhbnRzLmdldFN0cmluZyh0YWcpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDI3IC8qIE9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMgKi8sICh2bSwgeyBvcDE6IHRhZyB9KSA9PiB7XG4gICAgbGV0IHRhZ05hbWUgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKHRhZyk7XG4gICAgbGV0IG9wZXJhdGlvbnMgPSB2bS5zdGFjay5wb3AoKTtcbiAgICB2bS5lbGVtZW50cygpLm9wZW5FbGVtZW50KHRhZ05hbWUsIG9wZXJhdGlvbnMpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMjggLyogT3BlbkR5bmFtaWNFbGVtZW50ICovLCB2bSA9PiB7XG4gICAgbGV0IG9wZXJhdGlvbnMgPSB2bS5zdGFjay5wb3AoKTtcbiAgICBsZXQgdGFnTmFtZSA9IHZtLnN0YWNrLnBvcCgpLnZhbHVlKCk7XG4gICAgdm0uZWxlbWVudHMoKS5vcGVuRWxlbWVudCh0YWdOYW1lLCBvcGVyYXRpb25zKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDM1IC8qIFB1c2hSZW1vdGVFbGVtZW50ICovLCB2bSA9PiB7XG4gICAgbGV0IGVsZW1lbnRSZWYgPSB2bS5zdGFjay5wb3AoKTtcbiAgICBsZXQgbmV4dFNpYmxpbmdSZWYgPSB2bS5zdGFjay5wb3AoKTtcbiAgICBsZXQgZWxlbWVudDtcbiAgICBsZXQgbmV4dFNpYmxpbmc7XG4gICAgaWYgKGlzQ29uc3RSZWZlcmVuY2UoZWxlbWVudFJlZikpIHtcbiAgICAgICAgZWxlbWVudCA9IGVsZW1lbnRSZWYudmFsdWUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgY2FjaGUgPSBuZXcgUmVmZXJlbmNlQ2FjaGUoZWxlbWVudFJlZik7XG4gICAgICAgIGVsZW1lbnQgPSBjYWNoZS5wZWVrKCk7XG4gICAgICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICAgIH1cbiAgICBpZiAoaXNDb25zdFJlZmVyZW5jZShuZXh0U2libGluZ1JlZikpIHtcbiAgICAgICAgbmV4dFNpYmxpbmcgPSBuZXh0U2libGluZ1JlZi52YWx1ZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBjYWNoZSA9IG5ldyBSZWZlcmVuY2VDYWNoZShuZXh0U2libGluZ1JlZik7XG4gICAgICAgIG5leHRTaWJsaW5nID0gY2FjaGUucGVlaygpO1xuICAgICAgICB2bS51cGRhdGVXaXRoKG5ldyBBc3NlcnQoY2FjaGUpKTtcbiAgICB9XG4gICAgdm0uZWxlbWVudHMoKS5wdXNoUmVtb3RlRWxlbWVudChlbGVtZW50LCBuZXh0U2libGluZyk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCgzNiAvKiBQb3BSZW1vdGVFbGVtZW50ICovLCB2bSA9PiB2bS5lbGVtZW50cygpLnBvcFJlbW90ZUVsZW1lbnQoKSk7XG5jbGFzcyBDbGFzc0xpc3Qge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmxpc3QgPSBudWxsO1xuICAgICAgICB0aGlzLmlzQ29uc3QgPSB0cnVlO1xuICAgIH1cbiAgICBhcHBlbmQocmVmZXJlbmNlKSB7XG4gICAgICAgIGxldCB7IGxpc3QsIGlzQ29uc3QgfSA9IHRoaXM7XG4gICAgICAgIGlmIChsaXN0ID09PSBudWxsKSBsaXN0ID0gdGhpcy5saXN0ID0gW107XG4gICAgICAgIGxpc3QucHVzaChyZWZlcmVuY2UpO1xuICAgICAgICB0aGlzLmlzQ29uc3QgPSBpc0NvbnN0ICYmIGlzQ29uc3RSZWZlcmVuY2UocmVmZXJlbmNlKTtcbiAgICB9XG4gICAgdG9SZWZlcmVuY2UoKSB7XG4gICAgICAgIGxldCB7IGxpc3QsIGlzQ29uc3QgfSA9IHRoaXM7XG4gICAgICAgIGlmICghbGlzdCkgcmV0dXJuIE5VTExfUkVGRVJFTkNFO1xuICAgICAgICBpZiAoaXNDb25zdCkgcmV0dXJuIFByaW1pdGl2ZVJlZmVyZW5jZS5jcmVhdGUodG9DbGFzc05hbWUobGlzdCkpO1xuICAgICAgICByZXR1cm4gbmV3IENsYXNzTGlzdFJlZmVyZW5jZShsaXN0KTtcbiAgICB9XG59XG5jbGFzcyBDbGFzc0xpc3RSZWZlcmVuY2UgZXh0ZW5kcyBDYWNoZWRSZWZlcmVuY2Uge1xuICAgIGNvbnN0cnVjdG9yKGxpc3QpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5saXN0ID0gW107XG4gICAgICAgIHRoaXMudGFnID0gY29tYmluZVRhZ2dlZChsaXN0KTtcbiAgICAgICAgdGhpcy5saXN0ID0gbGlzdDtcbiAgICB9XG4gICAgY29tcHV0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRvQ2xhc3NOYW1lKHRoaXMubGlzdCk7XG4gICAgfVxufVxuZnVuY3Rpb24gdG9DbGFzc05hbWUobGlzdCkge1xuICAgIGxldCByZXQgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IHZhbHVlID0gbGlzdFtpXS52YWx1ZSgpO1xuICAgICAgICBpZiAodmFsdWUgIT09IGZhbHNlICYmIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHJldC5wdXNoKHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJldC5sZW5ndGggPT09IDAgPyBudWxsIDogcmV0LmpvaW4oJyAnKTtcbn1cbmV4cG9ydCBjbGFzcyBTaW1wbGVFbGVtZW50T3BlcmF0aW9ucyB7XG4gICAgY29uc3RydWN0b3IoZW52KSB7XG4gICAgICAgIHRoaXMuZW52ID0gZW52O1xuICAgICAgICB0aGlzLm9wY29kZXMgPSBudWxsO1xuICAgICAgICB0aGlzLmNsYXNzTGlzdCA9IG51bGw7XG4gICAgfVxuICAgIGFkZFN0YXRpY0F0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCB2YWx1ZSkge1xuICAgICAgICBpZiAobmFtZSA9PT0gJ2NsYXNzJykge1xuICAgICAgICAgICAgdGhpcy5hZGRDbGFzcyhQcmltaXRpdmVSZWZlcmVuY2UuY3JlYXRlKHZhbHVlKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCkuc2V0QXR0cmlidXRlKGVsZW1lbnQsIG5hbWUsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhZGRTdGF0aWNBdHRyaWJ1dGVOUyhlbGVtZW50LCBuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIHRoaXMuZW52LmdldEFwcGVuZE9wZXJhdGlvbnMoKS5zZXRBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZSk7XG4gICAgfVxuICAgIGFkZER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgcmVmZXJlbmNlLCBpc1RydXN0aW5nKSB7XG4gICAgICAgIGlmIChuYW1lID09PSAnY2xhc3MnKSB7XG4gICAgICAgICAgICB0aGlzLmFkZENsYXNzKHJlZmVyZW5jZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgYXR0cmlidXRlTWFuYWdlciA9IHRoaXMuZW52LmF0dHJpYnV0ZUZvcihlbGVtZW50LCBuYW1lLCBpc1RydXN0aW5nKTtcbiAgICAgICAgICAgIGxldCBhdHRyaWJ1dGUgPSBuZXcgRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCBuYW1lLCByZWZlcmVuY2UpO1xuICAgICAgICAgICAgdGhpcy5hZGRBdHRyaWJ1dGUoYXR0cmlidXRlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhZGREeW5hbWljQXR0cmlidXRlTlMoZWxlbWVudCwgbmFtZXNwYWNlLCBuYW1lLCByZWZlcmVuY2UsIGlzVHJ1c3RpbmcpIHtcbiAgICAgICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSB0aGlzLmVudi5hdHRyaWJ1dGVGb3IoZWxlbWVudCwgbmFtZSwgaXNUcnVzdGluZywgbmFtZXNwYWNlKTtcbiAgICAgICAgbGV0IG5zQXR0cmlidXRlID0gbmV3IER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlTWFuYWdlciwgbmFtZSwgcmVmZXJlbmNlLCBuYW1lc3BhY2UpO1xuICAgICAgICB0aGlzLmFkZEF0dHJpYnV0ZShuc0F0dHJpYnV0ZSk7XG4gICAgfVxuICAgIGZsdXNoKGVsZW1lbnQsIHZtKSB7XG4gICAgICAgIGxldCB7IGVudiB9ID0gdm07XG4gICAgICAgIGxldCB7IG9wY29kZXMsIGNsYXNzTGlzdCB9ID0gdGhpcztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IG9wY29kZXMgJiYgaSA8IG9wY29kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZtLnVwZGF0ZVdpdGgob3Bjb2Rlc1tpXSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNsYXNzTGlzdCkge1xuICAgICAgICAgICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSBlbnYuYXR0cmlidXRlRm9yKGVsZW1lbnQsICdjbGFzcycsIGZhbHNlKTtcbiAgICAgICAgICAgIGxldCBhdHRyaWJ1dGUgPSBuZXcgRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCAnY2xhc3MnLCBjbGFzc0xpc3QudG9SZWZlcmVuY2UoKSk7XG4gICAgICAgICAgICBsZXQgb3Bjb2RlID0gYXR0cmlidXRlLmZsdXNoKGVudik7XG4gICAgICAgICAgICBpZiAob3Bjb2RlKSB7XG4gICAgICAgICAgICAgICAgdm0udXBkYXRlV2l0aChvcGNvZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMub3Bjb2RlcyA9IG51bGw7XG4gICAgICAgIHRoaXMuY2xhc3NMaXN0ID0gbnVsbDtcbiAgICB9XG4gICAgYWRkQ2xhc3MocmVmZXJlbmNlKSB7XG4gICAgICAgIGxldCB7IGNsYXNzTGlzdCB9ID0gdGhpcztcbiAgICAgICAgaWYgKCFjbGFzc0xpc3QpIHtcbiAgICAgICAgICAgIGNsYXNzTGlzdCA9IHRoaXMuY2xhc3NMaXN0ID0gbmV3IENsYXNzTGlzdCgpO1xuICAgICAgICB9XG4gICAgICAgIGNsYXNzTGlzdC5hcHBlbmQocmVmZXJlbmNlKTtcbiAgICB9XG4gICAgYWRkQXR0cmlidXRlKGF0dHJpYnV0ZSkge1xuICAgICAgICBsZXQgb3Bjb2RlID0gYXR0cmlidXRlLmZsdXNoKHRoaXMuZW52KTtcbiAgICAgICAgaWYgKG9wY29kZSkge1xuICAgICAgICAgICAgbGV0IHsgb3Bjb2RlcyB9ID0gdGhpcztcbiAgICAgICAgICAgIGlmICghb3Bjb2Rlcykge1xuICAgICAgICAgICAgICAgIG9wY29kZXMgPSB0aGlzLm9wY29kZXMgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wY29kZXMucHVzaChvcGNvZGUpO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIENvbXBvbmVudEVsZW1lbnRPcGVyYXRpb25zIHtcbiAgICBjb25zdHJ1Y3RvcihlbnYpIHtcbiAgICAgICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgICAgIHRoaXMuYXR0cmlidXRlTmFtZXMgPSBudWxsO1xuICAgICAgICB0aGlzLmF0dHJpYnV0ZXMgPSBudWxsO1xuICAgICAgICB0aGlzLmNsYXNzTGlzdCA9IG51bGw7XG4gICAgfVxuICAgIGFkZFN0YXRpY0F0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCB2YWx1ZSkge1xuICAgICAgICBpZiAobmFtZSA9PT0gJ2NsYXNzJykge1xuICAgICAgICAgICAgdGhpcy5hZGRDbGFzcyhQcmltaXRpdmVSZWZlcmVuY2UuY3JlYXRlKHZhbHVlKSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zaG91bGRBZGRBdHRyaWJ1dGUobmFtZSkpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkQXR0cmlidXRlKG5hbWUsIG5ldyBTdGF0aWNBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgdmFsdWUpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhZGRTdGF0aWNBdHRyaWJ1dGVOUyhlbGVtZW50LCBuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIGlmICh0aGlzLnNob3VsZEFkZEF0dHJpYnV0ZShuYW1lKSkge1xuICAgICAgICAgICAgdGhpcy5hZGRBdHRyaWJ1dGUobmFtZSwgbmV3IFN0YXRpY0F0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYWRkRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCByZWZlcmVuY2UsIGlzVHJ1c3RpbmcpIHtcbiAgICAgICAgaWYgKG5hbWUgPT09ICdjbGFzcycpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkQ2xhc3MocmVmZXJlbmNlKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNob3VsZEFkZEF0dHJpYnV0ZShuYW1lKSkge1xuICAgICAgICAgICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSB0aGlzLmVudi5hdHRyaWJ1dGVGb3IoZWxlbWVudCwgbmFtZSwgaXNUcnVzdGluZyk7XG4gICAgICAgICAgICBsZXQgYXR0cmlidXRlID0gbmV3IER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlTWFuYWdlciwgbmFtZSwgcmVmZXJlbmNlKTtcbiAgICAgICAgICAgIHRoaXMuYWRkQXR0cmlidXRlKG5hbWUsIGF0dHJpYnV0ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYWRkRHluYW1pY0F0dHJpYnV0ZU5TKGVsZW1lbnQsIG5hbWVzcGFjZSwgbmFtZSwgcmVmZXJlbmNlLCBpc1RydXN0aW5nKSB7XG4gICAgICAgIGlmICh0aGlzLnNob3VsZEFkZEF0dHJpYnV0ZShuYW1lKSkge1xuICAgICAgICAgICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSB0aGlzLmVudi5hdHRyaWJ1dGVGb3IoZWxlbWVudCwgbmFtZSwgaXNUcnVzdGluZywgbmFtZXNwYWNlKTtcbiAgICAgICAgICAgIGxldCBuc0F0dHJpYnV0ZSA9IG5ldyBEeW5hbWljQXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZU1hbmFnZXIsIG5hbWUsIHJlZmVyZW5jZSwgbmFtZXNwYWNlKTtcbiAgICAgICAgICAgIHRoaXMuYWRkQXR0cmlidXRlKG5hbWUsIG5zQXR0cmlidXRlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmbHVzaChlbGVtZW50LCB2bSkge1xuICAgICAgICBsZXQgeyBlbnYgfSA9IHRoaXM7XG4gICAgICAgIGxldCB7IGF0dHJpYnV0ZXMsIGNsYXNzTGlzdCB9ID0gdGhpcztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGF0dHJpYnV0ZXMgJiYgaSA8IGF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBvcGNvZGUgPSBhdHRyaWJ1dGVzW2ldLmZsdXNoKGVudik7XG4gICAgICAgICAgICBpZiAob3Bjb2RlKSB7XG4gICAgICAgICAgICAgICAgdm0udXBkYXRlV2l0aChvcGNvZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChjbGFzc0xpc3QpIHtcbiAgICAgICAgICAgIGxldCBhdHRyaWJ1dGVNYW5hZ2VyID0gZW52LmF0dHJpYnV0ZUZvcihlbGVtZW50LCAnY2xhc3MnLCBmYWxzZSk7XG4gICAgICAgICAgICBsZXQgYXR0cmlidXRlID0gbmV3IER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlTWFuYWdlciwgJ2NsYXNzJywgY2xhc3NMaXN0LnRvUmVmZXJlbmNlKCkpO1xuICAgICAgICAgICAgbGV0IG9wY29kZSA9IGF0dHJpYnV0ZS5mbHVzaChlbnYpO1xuICAgICAgICAgICAgaWYgKG9wY29kZSkge1xuICAgICAgICAgICAgICAgIHZtLnVwZGF0ZVdpdGgob3Bjb2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBzaG91bGRBZGRBdHRyaWJ1dGUobmFtZSkge1xuICAgICAgICByZXR1cm4gIXRoaXMuYXR0cmlidXRlTmFtZXMgfHwgdGhpcy5hdHRyaWJ1dGVOYW1lcy5pbmRleE9mKG5hbWUpID09PSAtMTtcbiAgICB9XG4gICAgYWRkQ2xhc3MocmVmZXJlbmNlKSB7XG4gICAgICAgIGxldCB7IGNsYXNzTGlzdCB9ID0gdGhpcztcbiAgICAgICAgaWYgKCFjbGFzc0xpc3QpIHtcbiAgICAgICAgICAgIGNsYXNzTGlzdCA9IHRoaXMuY2xhc3NMaXN0ID0gbmV3IENsYXNzTGlzdCgpO1xuICAgICAgICB9XG4gICAgICAgIGNsYXNzTGlzdC5hcHBlbmQocmVmZXJlbmNlKTtcbiAgICB9XG4gICAgYWRkQXR0cmlidXRlKG5hbWUsIGF0dHJpYnV0ZSkge1xuICAgICAgICBsZXQgeyBhdHRyaWJ1dGVOYW1lcywgYXR0cmlidXRlcyB9ID0gdGhpcztcbiAgICAgICAgaWYgKCFhdHRyaWJ1dGVOYW1lcykge1xuICAgICAgICAgICAgYXR0cmlidXRlTmFtZXMgPSB0aGlzLmF0dHJpYnV0ZU5hbWVzID0gW107XG4gICAgICAgICAgICBhdHRyaWJ1dGVzID0gdGhpcy5hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgYXR0cmlidXRlTmFtZXMucHVzaChuYW1lKTtcbiAgICAgICAgdW53cmFwKGF0dHJpYnV0ZXMpLnB1c2goYXR0cmlidXRlKTtcbiAgICB9XG59XG5BUFBFTkRfT1BDT0RFUy5hZGQoMzIgLyogRmx1c2hFbGVtZW50ICovLCB2bSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uZWxlbWVudHMoKTtcbiAgICBsZXQgYWN0aW9uID0gJ0ZsdXNoRWxlbWVudE9wY29kZSNldmFsdWF0ZSc7XG4gICAgc3RhY2suZXhwZWN0T3BlcmF0aW9ucyhhY3Rpb24pLmZsdXNoKHN0YWNrLmV4cGVjdENvbnN0cnVjdGluZyhhY3Rpb24pLCB2bSk7XG4gICAgc3RhY2suZmx1c2hFbGVtZW50KCk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCgzMyAvKiBDbG9zZUVsZW1lbnQgKi8sIHZtID0+IHZtLmVsZW1lbnRzKCkuY2xvc2VFbGVtZW50KCkpO1xuQVBQRU5EX09QQ09ERVMuYWRkKDI5IC8qIFN0YXRpY0F0dHIgKi8sICh2bSwgeyBvcDE6IF9uYW1lLCBvcDI6IF92YWx1ZSwgb3AzOiBfbmFtZXNwYWNlIH0pID0+IHtcbiAgICBsZXQgbmFtZSA9IHZtLmNvbnN0YW50cy5nZXRTdHJpbmcoX25hbWUpO1xuICAgIGxldCB2YWx1ZSA9IHZtLmNvbnN0YW50cy5nZXRTdHJpbmcoX3ZhbHVlKTtcbiAgICBpZiAoX25hbWVzcGFjZSkge1xuICAgICAgICBsZXQgbmFtZXNwYWNlID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyhfbmFtZXNwYWNlKTtcbiAgICAgICAgdm0uZWxlbWVudHMoKS5zZXRTdGF0aWNBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB2bS5lbGVtZW50cygpLnNldFN0YXRpY0F0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7XG4gICAgfVxufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMzQgLyogTW9kaWZpZXIgKi8sICh2bSwgeyBvcDE6IF9tYW5hZ2VyIH0pID0+IHtcbiAgICBsZXQgbWFuYWdlciA9IHZtLmNvbnN0YW50cy5nZXRPdGhlcihfbWFuYWdlcik7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IGFyZ3MgPSBzdGFjay5wb3AoKTtcbiAgICBsZXQgdGFnID0gYXJncy50YWc7XG4gICAgbGV0IHsgY29uc3RydWN0aW5nOiBlbGVtZW50LCB1cGRhdGVPcGVyYXRpb25zIH0gPSB2bS5lbGVtZW50cygpO1xuICAgIGxldCBkeW5hbWljU2NvcGUgPSB2bS5keW5hbWljU2NvcGUoKTtcbiAgICBsZXQgbW9kaWZpZXIgPSBtYW5hZ2VyLmNyZWF0ZShlbGVtZW50LCBhcmdzLCBkeW5hbWljU2NvcGUsIHVwZGF0ZU9wZXJhdGlvbnMpO1xuICAgIGFyZ3MuY2xlYXIoKTtcbiAgICB2bS5lbnYuc2NoZWR1bGVJbnN0YWxsTW9kaWZpZXIobW9kaWZpZXIsIG1hbmFnZXIpO1xuICAgIGxldCBkZXN0cnVjdG9yID0gbWFuYWdlci5nZXREZXN0cnVjdG9yKG1vZGlmaWVyKTtcbiAgICBpZiAoZGVzdHJ1Y3Rvcikge1xuICAgICAgICB2bS5uZXdEZXN0cm95YWJsZShkZXN0cnVjdG9yKTtcbiAgICB9XG4gICAgdm0udXBkYXRlV2l0aChuZXcgVXBkYXRlTW9kaWZpZXJPcGNvZGUodGFnLCBtYW5hZ2VyLCBtb2RpZmllcikpO1xufSk7XG5leHBvcnQgY2xhc3MgVXBkYXRlTW9kaWZpZXJPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gICAgY29uc3RydWN0b3IodGFnLCBtYW5hZ2VyLCBtb2RpZmllcikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnRhZyA9IHRhZztcbiAgICAgICAgdGhpcy5tYW5hZ2VyID0gbWFuYWdlcjtcbiAgICAgICAgdGhpcy5tb2RpZmllciA9IG1vZGlmaWVyO1xuICAgICAgICB0aGlzLnR5cGUgPSAndXBkYXRlLW1vZGlmaWVyJztcbiAgICAgICAgdGhpcy5sYXN0VXBkYXRlZCA9IHRhZy52YWx1ZSgpO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICBsZXQgeyBtYW5hZ2VyLCBtb2RpZmllciwgdGFnLCBsYXN0VXBkYXRlZCB9ID0gdGhpcztcbiAgICAgICAgaWYgKCF0YWcudmFsaWRhdGUobGFzdFVwZGF0ZWQpKSB7XG4gICAgICAgICAgICB2bS5lbnYuc2NoZWR1bGVVcGRhdGVNb2RpZmllcihtb2RpZmllciwgbWFuYWdlcik7XG4gICAgICAgICAgICB0aGlzLmxhc3RVcGRhdGVkID0gdGFnLnZhbHVlKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZVxuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBTdGF0aWNBdHRyaWJ1dGUge1xuICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLm5hbWVzcGFjZSA9IG5hbWVzcGFjZTtcbiAgICB9XG4gICAgZmx1c2goZW52KSB7XG4gICAgICAgIGVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCkuc2V0QXR0cmlidXRlKHRoaXMuZWxlbWVudCwgdGhpcy5uYW1lLCB0aGlzLnZhbHVlLCB0aGlzLm5hbWVzcGFjZSk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBEeW5hbWljQXR0cmlidXRlIHtcbiAgICBjb25zdHJ1Y3RvcihlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCBuYW1lLCByZWZlcmVuY2UsIG5hbWVzcGFjZSkge1xuICAgICAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgICB0aGlzLmF0dHJpYnV0ZU1hbmFnZXIgPSBhdHRyaWJ1dGVNYW5hZ2VyO1xuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLnJlZmVyZW5jZSA9IHJlZmVyZW5jZTtcbiAgICAgICAgdGhpcy5uYW1lc3BhY2UgPSBuYW1lc3BhY2U7XG4gICAgICAgIHRoaXMuY2FjaGUgPSBudWxsO1xuICAgICAgICB0aGlzLnRhZyA9IHJlZmVyZW5jZS50YWc7XG4gICAgfVxuICAgIHBhdGNoKGVudikge1xuICAgICAgICBsZXQgeyBlbGVtZW50LCBjYWNoZSB9ID0gdGhpcztcbiAgICAgICAgbGV0IHZhbHVlID0gZXhwZWN0KGNhY2hlLCAnbXVzdCBwYXRjaCBhZnRlciBmbHVzaCcpLnJldmFsaWRhdGUoKTtcbiAgICAgICAgaWYgKGlzTW9kaWZpZWQodmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLmF0dHJpYnV0ZU1hbmFnZXIudXBkYXRlQXR0cmlidXRlKGVudiwgZWxlbWVudCwgdmFsdWUsIHRoaXMubmFtZXNwYWNlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmbHVzaChlbnYpIHtcbiAgICAgICAgbGV0IHsgcmVmZXJlbmNlLCBlbGVtZW50IH0gPSB0aGlzO1xuICAgICAgICBpZiAoaXNDb25zdFJlZmVyZW5jZShyZWZlcmVuY2UpKSB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSByZWZlcmVuY2UudmFsdWUoKTtcbiAgICAgICAgICAgIHRoaXMuYXR0cmlidXRlTWFuYWdlci5zZXRBdHRyaWJ1dGUoZW52LCBlbGVtZW50LCB2YWx1ZSwgdGhpcy5uYW1lc3BhY2UpO1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgY2FjaGUgPSB0aGlzLmNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKHJlZmVyZW5jZSk7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBjYWNoZS5wZWVrKCk7XG4gICAgICAgICAgICB0aGlzLmF0dHJpYnV0ZU1hbmFnZXIuc2V0QXR0cmlidXRlKGVudiwgZWxlbWVudCwgdmFsdWUsIHRoaXMubmFtZXNwYWNlKTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUGF0Y2hFbGVtZW50T3Bjb2RlKHRoaXMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgbGV0IHsgZWxlbWVudCwgbmFtZXNwYWNlLCBuYW1lLCBjYWNoZSB9ID0gdGhpcztcbiAgICAgICAgbGV0IGZvcm1hdHRlZEVsZW1lbnQgPSBmb3JtYXRFbGVtZW50KGVsZW1lbnQpO1xuICAgICAgICBsZXQgbGFzdFZhbHVlID0gZXhwZWN0KGNhY2hlLCAnbXVzdCBzZXJpYWxpemUgYWZ0ZXIgZmx1c2gnKS5wZWVrKCk7XG4gICAgICAgIGlmIChuYW1lc3BhY2UpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZWxlbWVudDogZm9ybWF0dGVkRWxlbWVudCxcbiAgICAgICAgICAgICAgICBsYXN0VmFsdWUsXG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICBuYW1lc3BhY2UsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2F0dHJpYnV0ZSdcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGVsZW1lbnQ6IGZvcm1hdHRlZEVsZW1lbnQsXG4gICAgICAgICAgICBsYXN0VmFsdWUsXG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgbmFtZXNwYWNlOiBuYW1lc3BhY2UgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBuYW1lc3BhY2UsXG4gICAgICAgICAgICB0eXBlOiAnYXR0cmlidXRlJ1xuICAgICAgICB9O1xuICAgIH1cbn1cbmZ1bmN0aW9uIGZvcm1hdEVsZW1lbnQoZWxlbWVudCkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShgPCR7ZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCl9IC8+YCk7XG59XG5BUFBFTkRfT1BDT0RFUy5hZGQoMzEgLyogRHluYW1pY0F0dHJOUyAqLywgKHZtLCB7IG9wMTogX25hbWUsIG9wMjogX25hbWVzcGFjZSwgb3AzOiB0cnVzdGluZyB9KSA9PiB7XG4gICAgbGV0IG5hbWUgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKF9uYW1lKTtcbiAgICBsZXQgbmFtZXNwYWNlID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyhfbmFtZXNwYWNlKTtcbiAgICBsZXQgcmVmZXJlbmNlID0gdm0uc3RhY2sucG9wKCk7XG4gICAgdm0uZWxlbWVudHMoKS5zZXREeW5hbWljQXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lLCByZWZlcmVuY2UsICEhdHJ1c3RpbmcpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMzAgLyogRHluYW1pY0F0dHIgKi8sICh2bSwgeyBvcDE6IF9uYW1lLCBvcDI6IHRydXN0aW5nIH0pID0+IHtcbiAgICBsZXQgbmFtZSA9IHZtLmNvbnN0YW50cy5nZXRTdHJpbmcoX25hbWUpO1xuICAgIGxldCByZWZlcmVuY2UgPSB2bS5zdGFjay5wb3AoKTtcbiAgICB2bS5lbGVtZW50cygpLnNldER5bmFtaWNBdHRyaWJ1dGUobmFtZSwgcmVmZXJlbmNlLCAhIXRydXN0aW5nKTtcbn0pO1xuZXhwb3J0IGNsYXNzIFBhdGNoRWxlbWVudE9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcihvcGVyYXRpb24pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy50eXBlID0gJ3BhdGNoLWVsZW1lbnQnO1xuICAgICAgICB0aGlzLnRhZyA9IG9wZXJhdGlvbi50YWc7XG4gICAgICAgIHRoaXMub3BlcmF0aW9uID0gb3BlcmF0aW9uO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICB0aGlzLm9wZXJhdGlvbi5wYXRjaCh2bS5lbnYpO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIGxldCB7IF9ndWlkLCB0eXBlLCBvcGVyYXRpb24gfSA9IHRoaXM7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkZXRhaWxzOiBvcGVyYXRpb24udG9KU09OKCksXG4gICAgICAgICAgICBndWlkOiBfZ3VpZCxcbiAgICAgICAgICAgIHR5cGVcbiAgICAgICAgfTtcbiAgICB9XG59Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2RvbS5qcyJdLCJuYW1lcyI6WyJhZGQiLCJ2bSIsIm9wMSIsInRleHQiLCJlbGVtZW50cyIsImFwcGVuZFRleHQiLCJjb25zdGFudHMiLCJnZXRTdHJpbmciLCJhcHBlbmRDb21tZW50IiwidGFnIiwib3BlbkVsZW1lbnQiLCJ0YWdOYW1lIiwib3BlcmF0aW9ucyIsInN0YWNrIiwicG9wIiwidmFsdWUiLCJlbGVtZW50UmVmIiwibmV4dFNpYmxpbmdSZWYiLCJlbGVtZW50IiwibmV4dFNpYmxpbmciLCJjYWNoZSIsInBlZWsiLCJ1cGRhdGVXaXRoIiwicHVzaFJlbW90ZUVsZW1lbnQiLCJwb3BSZW1vdGVFbGVtZW50IiwiQ2xhc3NMaXN0IiwiY29uc3RydWN0b3IiLCJsaXN0IiwiaXNDb25zdCIsImFwcGVuZCIsInJlZmVyZW5jZSIsInB1c2giLCJ0b1JlZmVyZW5jZSIsImNyZWF0ZSIsInRvQ2xhc3NOYW1lIiwiQ2xhc3NMaXN0UmVmZXJlbmNlIiwiY29tcHV0ZSIsInJldCIsImkiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJqb2luIiwiU2ltcGxlRWxlbWVudE9wZXJhdGlvbnMiLCJlbnYiLCJvcGNvZGVzIiwiY2xhc3NMaXN0IiwiYWRkU3RhdGljQXR0cmlidXRlIiwibmFtZSIsImFkZENsYXNzIiwiZ2V0QXBwZW5kT3BlcmF0aW9ucyIsInNldEF0dHJpYnV0ZSIsImFkZFN0YXRpY0F0dHJpYnV0ZU5TIiwibmFtZXNwYWNlIiwiYWRkRHluYW1pY0F0dHJpYnV0ZSIsImlzVHJ1c3RpbmciLCJhdHRyaWJ1dGVNYW5hZ2VyIiwiYXR0cmlidXRlRm9yIiwiYXR0cmlidXRlIiwiRHluYW1pY0F0dHJpYnV0ZSIsImFkZEF0dHJpYnV0ZSIsImFkZER5bmFtaWNBdHRyaWJ1dGVOUyIsIm5zQXR0cmlidXRlIiwiZmx1c2giLCJvcGNvZGUiLCJDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyIsImF0dHJpYnV0ZU5hbWVzIiwiYXR0cmlidXRlcyIsInNob3VsZEFkZEF0dHJpYnV0ZSIsIlN0YXRpY0F0dHJpYnV0ZSIsImluZGV4T2YiLCJhY3Rpb24iLCJleHBlY3RPcGVyYXRpb25zIiwiZXhwZWN0Q29uc3RydWN0aW5nIiwiZmx1c2hFbGVtZW50IiwiY2xvc2VFbGVtZW50IiwiX25hbWUiLCJvcDIiLCJfdmFsdWUiLCJvcDMiLCJfbmFtZXNwYWNlIiwic2V0U3RhdGljQXR0cmlidXRlTlMiLCJzZXRTdGF0aWNBdHRyaWJ1dGUiLCJfbWFuYWdlciIsIm1hbmFnZXIiLCJnZXRPdGhlciIsImFyZ3MiLCJjb25zdHJ1Y3RpbmciLCJ1cGRhdGVPcGVyYXRpb25zIiwiZHluYW1pY1Njb3BlIiwibW9kaWZpZXIiLCJjbGVhciIsInNjaGVkdWxlSW5zdGFsbE1vZGlmaWVyIiwiZGVzdHJ1Y3RvciIsImdldERlc3RydWN0b3IiLCJuZXdEZXN0cm95YWJsZSIsIlVwZGF0ZU1vZGlmaWVyT3Bjb2RlIiwidHlwZSIsImxhc3RVcGRhdGVkIiwiZXZhbHVhdGUiLCJ2YWxpZGF0ZSIsInNjaGVkdWxlVXBkYXRlTW9kaWZpZXIiLCJ0b0pTT04iLCJndWlkIiwiX2d1aWQiLCJwYXRjaCIsInJldmFsaWRhdGUiLCJ1cGRhdGVBdHRyaWJ1dGUiLCJQYXRjaEVsZW1lbnRPcGNvZGUiLCJmb3JtYXR0ZWRFbGVtZW50IiwiZm9ybWF0RWxlbWVudCIsImxhc3RWYWx1ZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJ0b0xvd2VyQ2FzZSIsInRydXN0aW5nIiwic2V0RHluYW1pY0F0dHJpYnV0ZU5TIiwic2V0RHluYW1pY0F0dHJpYnV0ZSIsIm9wZXJhdGlvbiIsImRldGFpbHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSx3QkFBZUEsR0FBZixDQUFtQixFQUFuQixDQUFzQixVQUF0QixFQUFrQyxDQUFDQyxFQUFELEVBQUssRUFBRUMsS0FBS0MsSUFBUCxFQUFMLEtBQXVCO0FBQ3JERixPQUFHRyxRQUFILEdBQWNDLFVBQWQsQ0FBeUJKLEdBQUdLLFNBQUgsQ0FBYUMsU0FBYixDQUF1QkosSUFBdkIsQ0FBekI7QUFDSCxDQUZEO0FBR0Esd0JBQWVILEdBQWYsQ0FBbUIsRUFBbkIsQ0FBc0IsYUFBdEIsRUFBcUMsQ0FBQ0MsRUFBRCxFQUFLLEVBQUVDLEtBQUtDLElBQVAsRUFBTCxLQUF1QjtBQUN4REYsT0FBR0csUUFBSCxHQUFjSSxhQUFkLENBQTRCUCxHQUFHSyxTQUFILENBQWFDLFNBQWIsQ0FBdUJKLElBQXZCLENBQTVCO0FBQ0gsQ0FGRDtBQUdBLHdCQUFlSCxHQUFmLENBQW1CLEVBQW5CLENBQXNCLGlCQUF0QixFQUF5QyxDQUFDQyxFQUFELEVBQUssRUFBRUMsS0FBS08sR0FBUCxFQUFMLEtBQXNCO0FBQzNEUixPQUFHRyxRQUFILEdBQWNNLFdBQWQsQ0FBMEJULEdBQUdLLFNBQUgsQ0FBYUMsU0FBYixDQUF1QkUsR0FBdkIsQ0FBMUI7QUFDSCxDQUZEO0FBR0Esd0JBQWVULEdBQWYsQ0FBbUIsRUFBbkIsQ0FBc0IsK0JBQXRCLEVBQXVELENBQUNDLEVBQUQsRUFBSyxFQUFFQyxLQUFLTyxHQUFQLEVBQUwsS0FBc0I7QUFDekUsUUFBSUUsVUFBVVYsR0FBR0ssU0FBSCxDQUFhQyxTQUFiLENBQXVCRSxHQUF2QixDQUFkO0FBQ0EsUUFBSUcsYUFBYVgsR0FBR1ksS0FBSCxDQUFTQyxHQUFULEVBQWpCO0FBQ0FiLE9BQUdHLFFBQUgsR0FBY00sV0FBZCxDQUEwQkMsT0FBMUIsRUFBbUNDLFVBQW5DO0FBQ0gsQ0FKRDtBQUtBLHdCQUFlWixHQUFmLENBQW1CLEVBQW5CLENBQXNCLHdCQUF0QixFQUFnREMsTUFBTTtBQUNsRCxRQUFJVyxhQUFhWCxHQUFHWSxLQUFILENBQVNDLEdBQVQsRUFBakI7QUFDQSxRQUFJSCxVQUFVVixHQUFHWSxLQUFILENBQVNDLEdBQVQsR0FBZUMsS0FBZixFQUFkO0FBQ0FkLE9BQUdHLFFBQUgsR0FBY00sV0FBZCxDQUEwQkMsT0FBMUIsRUFBbUNDLFVBQW5DO0FBQ0gsQ0FKRDtBQUtBLHdCQUFlWixHQUFmLENBQW1CLEVBQW5CLENBQXNCLHVCQUF0QixFQUErQ0MsTUFBTTtBQUNqRCxRQUFJZSxhQUFhZixHQUFHWSxLQUFILENBQVNDLEdBQVQsRUFBakI7QUFDQSxRQUFJRyxpQkFBaUJoQixHQUFHWSxLQUFILENBQVNDLEdBQVQsRUFBckI7QUFDQSxRQUFJSSxPQUFKO0FBQ0EsUUFBSUMsV0FBSjtBQUNBLFFBQUksd0JBQWlCSCxVQUFqQixDQUFKLEVBQWtDO0FBQzlCRSxrQkFBVUYsV0FBV0QsS0FBWCxFQUFWO0FBQ0gsS0FGRCxNQUVPO0FBQ0gsWUFBSUssUUFBUSw4QkFBbUJKLFVBQW5CLENBQVo7QUFDQUUsa0JBQVVFLE1BQU1DLElBQU4sRUFBVjtBQUNBcEIsV0FBR3FCLFVBQUgsQ0FBYyxlQUFXRixLQUFYLENBQWQ7QUFDSDtBQUNELFFBQUksd0JBQWlCSCxjQUFqQixDQUFKLEVBQXNDO0FBQ2xDRSxzQkFBY0YsZUFBZUYsS0FBZixFQUFkO0FBQ0gsS0FGRCxNQUVPO0FBQ0gsWUFBSUssUUFBUSw4QkFBbUJILGNBQW5CLENBQVo7QUFDQUUsc0JBQWNDLE1BQU1DLElBQU4sRUFBZDtBQUNBcEIsV0FBR3FCLFVBQUgsQ0FBYyxlQUFXRixLQUFYLENBQWQ7QUFDSDtBQUNEbkIsT0FBR0csUUFBSCxHQUFjbUIsaUJBQWQsQ0FBZ0NMLE9BQWhDLEVBQXlDQyxXQUF6QztBQUNILENBcEJEO0FBcUJBLHdCQUFlbkIsR0FBZixDQUFtQixFQUFuQixDQUFzQixzQkFBdEIsRUFBOENDLE1BQU1BLEdBQUdHLFFBQUgsR0FBY29CLGdCQUFkLEVBQXBEO0FBQ0EsTUFBTUMsU0FBTixDQUFnQjtBQUNaQyxrQkFBYztBQUNWLGFBQUtDLElBQUwsR0FBWSxJQUFaO0FBQ0EsYUFBS0MsT0FBTCxHQUFlLElBQWY7QUFDSDtBQUNEQyxXQUFPQyxTQUFQLEVBQWtCO0FBQ2QsWUFBSSxFQUFFSCxJQUFGLEVBQVFDLE9BQVIsS0FBb0IsSUFBeEI7QUFDQSxZQUFJRCxTQUFTLElBQWIsRUFBbUJBLE9BQU8sS0FBS0EsSUFBTCxHQUFZLEVBQW5CO0FBQ25CQSxhQUFLSSxJQUFMLENBQVVELFNBQVY7QUFDQSxhQUFLRixPQUFMLEdBQWVBLFdBQVcsd0JBQWlCRSxTQUFqQixDQUExQjtBQUNIO0FBQ0RFLGtCQUFjO0FBQ1YsWUFBSSxFQUFFTCxJQUFGLEVBQVFDLE9BQVIsS0FBb0IsSUFBeEI7QUFDQSxZQUFJLENBQUNELElBQUwsRUFBVztBQUNYLFlBQUlDLE9BQUosRUFBYSxPQUFPLCtCQUFtQkssTUFBbkIsQ0FBMEJDLFlBQVlQLElBQVosQ0FBMUIsQ0FBUDtBQUNiLGVBQU8sSUFBSVEsa0JBQUosQ0FBdUJSLElBQXZCLENBQVA7QUFDSDtBQWhCVztBQWtCaEIsTUFBTVEsa0JBQU4sb0NBQWlEO0FBQzdDVCxnQkFBWUMsSUFBWixFQUFrQjtBQUNkO0FBQ0EsYUFBS0EsSUFBTCxHQUFZLEVBQVo7QUFDQSxhQUFLbEIsR0FBTCxHQUFXLDhCQUFja0IsSUFBZCxDQUFYO0FBQ0EsYUFBS0EsSUFBTCxHQUFZQSxJQUFaO0FBQ0g7QUFDRFMsY0FBVTtBQUNOLGVBQU9GLFlBQVksS0FBS1AsSUFBakIsQ0FBUDtBQUNIO0FBVDRDO0FBV2pELFNBQVNPLFdBQVQsQ0FBcUJQLElBQXJCLEVBQTJCO0FBQ3ZCLFFBQUlVLE1BQU0sRUFBVjtBQUNBLFNBQUssSUFBSUMsSUFBSSxDQUFiLEVBQWdCQSxJQUFJWCxLQUFLWSxNQUF6QixFQUFpQ0QsR0FBakMsRUFBc0M7QUFDbEMsWUFBSXZCLFFBQVFZLEtBQUtXLENBQUwsRUFBUXZCLEtBQVIsRUFBWjtBQUNBLFlBQUlBLFVBQVUsS0FBVixJQUFtQkEsVUFBVSxJQUE3QixJQUFxQ0EsVUFBVXlCLFNBQW5ELEVBQThESCxJQUFJTixJQUFKLENBQVNoQixLQUFUO0FBQ2pFO0FBQ0QsV0FBT3NCLElBQUlFLE1BQUosS0FBZSxDQUFmLEdBQW1CLElBQW5CLEdBQTBCRixJQUFJSSxJQUFKLENBQVMsR0FBVCxDQUFqQztBQUNIO0FBQ00sTUFBTUMsdUJBQU4sQ0FBOEI7QUFDakNoQixnQkFBWWlCLEdBQVosRUFBaUI7QUFDYixhQUFLQSxHQUFMLEdBQVdBLEdBQVg7QUFDQSxhQUFLQyxPQUFMLEdBQWUsSUFBZjtBQUNBLGFBQUtDLFNBQUwsR0FBaUIsSUFBakI7QUFDSDtBQUNEQyx1QkFBbUI1QixPQUFuQixFQUE0QjZCLElBQTVCLEVBQWtDaEMsS0FBbEMsRUFBeUM7QUFDckMsWUFBSWdDLFNBQVMsT0FBYixFQUFzQjtBQUNsQixpQkFBS0MsUUFBTCxDQUFjLCtCQUFtQmYsTUFBbkIsQ0FBMEJsQixLQUExQixDQUFkO0FBQ0gsU0FGRCxNQUVPO0FBQ0gsaUJBQUs0QixHQUFMLENBQVNNLG1CQUFULEdBQStCQyxZQUEvQixDQUE0Q2hDLE9BQTVDLEVBQXFENkIsSUFBckQsRUFBMkRoQyxLQUEzRDtBQUNIO0FBQ0o7QUFDRG9DLHlCQUFxQmpDLE9BQXJCLEVBQThCa0MsU0FBOUIsRUFBeUNMLElBQXpDLEVBQStDaEMsS0FBL0MsRUFBc0Q7QUFDbEQsYUFBSzRCLEdBQUwsQ0FBU00sbUJBQVQsR0FBK0JDLFlBQS9CLENBQTRDaEMsT0FBNUMsRUFBcUQ2QixJQUFyRCxFQUEyRGhDLEtBQTNELEVBQWtFcUMsU0FBbEU7QUFDSDtBQUNEQyx3QkFBb0JuQyxPQUFwQixFQUE2QjZCLElBQTdCLEVBQW1DakIsU0FBbkMsRUFBOEN3QixVQUE5QyxFQUEwRDtBQUN0RCxZQUFJUCxTQUFTLE9BQWIsRUFBc0I7QUFDbEIsaUJBQUtDLFFBQUwsQ0FBY2xCLFNBQWQ7QUFDSCxTQUZELE1BRU87QUFDSCxnQkFBSXlCLG1CQUFtQixLQUFLWixHQUFMLENBQVNhLFlBQVQsQ0FBc0J0QyxPQUF0QixFQUErQjZCLElBQS9CLEVBQXFDTyxVQUFyQyxDQUF2QjtBQUNBLGdCQUFJRyxZQUFZLElBQUlDLGdCQUFKLENBQXFCeEMsT0FBckIsRUFBOEJxQyxnQkFBOUIsRUFBZ0RSLElBQWhELEVBQXNEakIsU0FBdEQsQ0FBaEI7QUFDQSxpQkFBSzZCLFlBQUwsQ0FBa0JGLFNBQWxCO0FBQ0g7QUFDSjtBQUNERywwQkFBc0IxQyxPQUF0QixFQUErQmtDLFNBQS9CLEVBQTBDTCxJQUExQyxFQUFnRGpCLFNBQWhELEVBQTJEd0IsVUFBM0QsRUFBdUU7QUFDbkUsWUFBSUMsbUJBQW1CLEtBQUtaLEdBQUwsQ0FBU2EsWUFBVCxDQUFzQnRDLE9BQXRCLEVBQStCNkIsSUFBL0IsRUFBcUNPLFVBQXJDLEVBQWlERixTQUFqRCxDQUF2QjtBQUNBLFlBQUlTLGNBQWMsSUFBSUgsZ0JBQUosQ0FBcUJ4QyxPQUFyQixFQUE4QnFDLGdCQUE5QixFQUFnRFIsSUFBaEQsRUFBc0RqQixTQUF0RCxFQUFpRXNCLFNBQWpFLENBQWxCO0FBQ0EsYUFBS08sWUFBTCxDQUFrQkUsV0FBbEI7QUFDSDtBQUNEQyxVQUFNNUMsT0FBTixFQUFlakIsRUFBZixFQUFtQjtBQUNmLFlBQUksRUFBRTBDLEdBQUYsS0FBVTFDLEVBQWQ7QUFDQSxZQUFJLEVBQUUyQyxPQUFGLEVBQVdDLFNBQVgsS0FBeUIsSUFBN0I7QUFDQSxhQUFLLElBQUlQLElBQUksQ0FBYixFQUFnQk0sV0FBV04sSUFBSU0sUUFBUUwsTUFBdkMsRUFBK0NELEdBQS9DLEVBQW9EO0FBQ2hEckMsZUFBR3FCLFVBQUgsQ0FBY3NCLFFBQVFOLENBQVIsQ0FBZDtBQUNIO0FBQ0QsWUFBSU8sU0FBSixFQUFlO0FBQ1gsZ0JBQUlVLG1CQUFtQlosSUFBSWEsWUFBSixDQUFpQnRDLE9BQWpCLEVBQTBCLE9BQTFCLEVBQW1DLEtBQW5DLENBQXZCO0FBQ0EsZ0JBQUl1QyxZQUFZLElBQUlDLGdCQUFKLENBQXFCeEMsT0FBckIsRUFBOEJxQyxnQkFBOUIsRUFBZ0QsT0FBaEQsRUFBeURWLFVBQVViLFdBQVYsRUFBekQsQ0FBaEI7QUFDQSxnQkFBSStCLFNBQVNOLFVBQVVLLEtBQVYsQ0FBZ0JuQixHQUFoQixDQUFiO0FBQ0EsZ0JBQUlvQixNQUFKLEVBQVk7QUFDUjlELG1CQUFHcUIsVUFBSCxDQUFjeUMsTUFBZDtBQUNIO0FBQ0o7QUFDRCxhQUFLbkIsT0FBTCxHQUFlLElBQWY7QUFDQSxhQUFLQyxTQUFMLEdBQWlCLElBQWpCO0FBQ0g7QUFDREcsYUFBU2xCLFNBQVQsRUFBb0I7QUFDaEIsWUFBSSxFQUFFZSxTQUFGLEtBQWdCLElBQXBCO0FBQ0EsWUFBSSxDQUFDQSxTQUFMLEVBQWdCO0FBQ1pBLHdCQUFZLEtBQUtBLFNBQUwsR0FBaUIsSUFBSXBCLFNBQUosRUFBN0I7QUFDSDtBQUNEb0Isa0JBQVVoQixNQUFWLENBQWlCQyxTQUFqQjtBQUNIO0FBQ0Q2QixpQkFBYUYsU0FBYixFQUF3QjtBQUNwQixZQUFJTSxTQUFTTixVQUFVSyxLQUFWLENBQWdCLEtBQUtuQixHQUFyQixDQUFiO0FBQ0EsWUFBSW9CLE1BQUosRUFBWTtBQUNSLGdCQUFJLEVBQUVuQixPQUFGLEtBQWMsSUFBbEI7QUFDQSxnQkFBSSxDQUFDQSxPQUFMLEVBQWM7QUFDVkEsMEJBQVUsS0FBS0EsT0FBTCxHQUFlLEVBQXpCO0FBQ0g7QUFDREEsb0JBQVFiLElBQVIsQ0FBYWdDLE1BQWI7QUFDSDtBQUNKO0FBL0RnQztRQUF4QnJCLHVCLEdBQUFBLHVCO0FBaUVOLE1BQU1zQiwwQkFBTixDQUFpQztBQUNwQ3RDLGdCQUFZaUIsR0FBWixFQUFpQjtBQUNiLGFBQUtBLEdBQUwsR0FBV0EsR0FBWDtBQUNBLGFBQUtzQixjQUFMLEdBQXNCLElBQXRCO0FBQ0EsYUFBS0MsVUFBTCxHQUFrQixJQUFsQjtBQUNBLGFBQUtyQixTQUFMLEdBQWlCLElBQWpCO0FBQ0g7QUFDREMsdUJBQW1CNUIsT0FBbkIsRUFBNEI2QixJQUE1QixFQUFrQ2hDLEtBQWxDLEVBQXlDO0FBQ3JDLFlBQUlnQyxTQUFTLE9BQWIsRUFBc0I7QUFDbEIsaUJBQUtDLFFBQUwsQ0FBYywrQkFBbUJmLE1BQW5CLENBQTBCbEIsS0FBMUIsQ0FBZDtBQUNILFNBRkQsTUFFTyxJQUFJLEtBQUtvRCxrQkFBTCxDQUF3QnBCLElBQXhCLENBQUosRUFBbUM7QUFDdEMsaUJBQUtZLFlBQUwsQ0FBa0JaLElBQWxCLEVBQXdCLElBQUlxQixlQUFKLENBQW9CbEQsT0FBcEIsRUFBNkI2QixJQUE3QixFQUFtQ2hDLEtBQW5DLENBQXhCO0FBQ0g7QUFDSjtBQUNEb0MseUJBQXFCakMsT0FBckIsRUFBOEJrQyxTQUE5QixFQUF5Q0wsSUFBekMsRUFBK0NoQyxLQUEvQyxFQUFzRDtBQUNsRCxZQUFJLEtBQUtvRCxrQkFBTCxDQUF3QnBCLElBQXhCLENBQUosRUFBbUM7QUFDL0IsaUJBQUtZLFlBQUwsQ0FBa0JaLElBQWxCLEVBQXdCLElBQUlxQixlQUFKLENBQW9CbEQsT0FBcEIsRUFBNkI2QixJQUE3QixFQUFtQ2hDLEtBQW5DLEVBQTBDcUMsU0FBMUMsQ0FBeEI7QUFDSDtBQUNKO0FBQ0RDLHdCQUFvQm5DLE9BQXBCLEVBQTZCNkIsSUFBN0IsRUFBbUNqQixTQUFuQyxFQUE4Q3dCLFVBQTlDLEVBQTBEO0FBQ3RELFlBQUlQLFNBQVMsT0FBYixFQUFzQjtBQUNsQixpQkFBS0MsUUFBTCxDQUFjbEIsU0FBZDtBQUNILFNBRkQsTUFFTyxJQUFJLEtBQUtxQyxrQkFBTCxDQUF3QnBCLElBQXhCLENBQUosRUFBbUM7QUFDdEMsZ0JBQUlRLG1CQUFtQixLQUFLWixHQUFMLENBQVNhLFlBQVQsQ0FBc0J0QyxPQUF0QixFQUErQjZCLElBQS9CLEVBQXFDTyxVQUFyQyxDQUF2QjtBQUNBLGdCQUFJRyxZQUFZLElBQUlDLGdCQUFKLENBQXFCeEMsT0FBckIsRUFBOEJxQyxnQkFBOUIsRUFBZ0RSLElBQWhELEVBQXNEakIsU0FBdEQsQ0FBaEI7QUFDQSxpQkFBSzZCLFlBQUwsQ0FBa0JaLElBQWxCLEVBQXdCVSxTQUF4QjtBQUNIO0FBQ0o7QUFDREcsMEJBQXNCMUMsT0FBdEIsRUFBK0JrQyxTQUEvQixFQUEwQ0wsSUFBMUMsRUFBZ0RqQixTQUFoRCxFQUEyRHdCLFVBQTNELEVBQXVFO0FBQ25FLFlBQUksS0FBS2Esa0JBQUwsQ0FBd0JwQixJQUF4QixDQUFKLEVBQW1DO0FBQy9CLGdCQUFJUSxtQkFBbUIsS0FBS1osR0FBTCxDQUFTYSxZQUFULENBQXNCdEMsT0FBdEIsRUFBK0I2QixJQUEvQixFQUFxQ08sVUFBckMsRUFBaURGLFNBQWpELENBQXZCO0FBQ0EsZ0JBQUlTLGNBQWMsSUFBSUgsZ0JBQUosQ0FBcUJ4QyxPQUFyQixFQUE4QnFDLGdCQUE5QixFQUFnRFIsSUFBaEQsRUFBc0RqQixTQUF0RCxFQUFpRXNCLFNBQWpFLENBQWxCO0FBQ0EsaUJBQUtPLFlBQUwsQ0FBa0JaLElBQWxCLEVBQXdCYyxXQUF4QjtBQUNIO0FBQ0o7QUFDREMsVUFBTTVDLE9BQU4sRUFBZWpCLEVBQWYsRUFBbUI7QUFDZixZQUFJLEVBQUUwQyxHQUFGLEtBQVUsSUFBZDtBQUNBLFlBQUksRUFBRXVCLFVBQUYsRUFBY3JCLFNBQWQsS0FBNEIsSUFBaEM7QUFDQSxhQUFLLElBQUlQLElBQUksQ0FBYixFQUFnQjRCLGNBQWM1QixJQUFJNEIsV0FBVzNCLE1BQTdDLEVBQXFERCxHQUFyRCxFQUEwRDtBQUN0RCxnQkFBSXlCLFNBQVNHLFdBQVc1QixDQUFYLEVBQWN3QixLQUFkLENBQW9CbkIsR0FBcEIsQ0FBYjtBQUNBLGdCQUFJb0IsTUFBSixFQUFZO0FBQ1I5RCxtQkFBR3FCLFVBQUgsQ0FBY3lDLE1BQWQ7QUFDSDtBQUNKO0FBQ0QsWUFBSWxCLFNBQUosRUFBZTtBQUNYLGdCQUFJVSxtQkFBbUJaLElBQUlhLFlBQUosQ0FBaUJ0QyxPQUFqQixFQUEwQixPQUExQixFQUFtQyxLQUFuQyxDQUF2QjtBQUNBLGdCQUFJdUMsWUFBWSxJQUFJQyxnQkFBSixDQUFxQnhDLE9BQXJCLEVBQThCcUMsZ0JBQTlCLEVBQWdELE9BQWhELEVBQXlEVixVQUFVYixXQUFWLEVBQXpELENBQWhCO0FBQ0EsZ0JBQUkrQixTQUFTTixVQUFVSyxLQUFWLENBQWdCbkIsR0FBaEIsQ0FBYjtBQUNBLGdCQUFJb0IsTUFBSixFQUFZO0FBQ1I5RCxtQkFBR3FCLFVBQUgsQ0FBY3lDLE1BQWQ7QUFDSDtBQUNKO0FBQ0o7QUFDREksdUJBQW1CcEIsSUFBbkIsRUFBeUI7QUFDckIsZUFBTyxDQUFDLEtBQUtrQixjQUFOLElBQXdCLEtBQUtBLGNBQUwsQ0FBb0JJLE9BQXBCLENBQTRCdEIsSUFBNUIsTUFBc0MsQ0FBQyxDQUF0RTtBQUNIO0FBQ0RDLGFBQVNsQixTQUFULEVBQW9CO0FBQ2hCLFlBQUksRUFBRWUsU0FBRixLQUFnQixJQUFwQjtBQUNBLFlBQUksQ0FBQ0EsU0FBTCxFQUFnQjtBQUNaQSx3QkFBWSxLQUFLQSxTQUFMLEdBQWlCLElBQUlwQixTQUFKLEVBQTdCO0FBQ0g7QUFDRG9CLGtCQUFVaEIsTUFBVixDQUFpQkMsU0FBakI7QUFDSDtBQUNENkIsaUJBQWFaLElBQWIsRUFBbUJVLFNBQW5CLEVBQThCO0FBQzFCLFlBQUksRUFBRVEsY0FBRixFQUFrQkMsVUFBbEIsS0FBaUMsSUFBckM7QUFDQSxZQUFJLENBQUNELGNBQUwsRUFBcUI7QUFDakJBLDZCQUFpQixLQUFLQSxjQUFMLEdBQXNCLEVBQXZDO0FBQ0FDLHlCQUFhLEtBQUtBLFVBQUwsR0FBa0IsRUFBL0I7QUFDSDtBQUNERCx1QkFBZWxDLElBQWYsQ0FBb0JnQixJQUFwQjtBQUNBLDBCQUFPbUIsVUFBUCxFQUFtQm5DLElBQW5CLENBQXdCMEIsU0FBeEI7QUFDSDtBQXZFbUM7UUFBM0JPLDBCLEdBQUFBLDBCO0FBeUViLHdCQUFlaEUsR0FBZixDQUFtQixFQUFuQixDQUFzQixrQkFBdEIsRUFBMENDLE1BQU07QUFDNUMsUUFBSVksUUFBUVosR0FBR0csUUFBSCxFQUFaO0FBQ0EsUUFBSWtFLFNBQVMsNkJBQWI7QUFDQXpELFVBQU0wRCxnQkFBTixDQUF1QkQsTUFBdkIsRUFBK0JSLEtBQS9CLENBQXFDakQsTUFBTTJELGtCQUFOLENBQXlCRixNQUF6QixDQUFyQyxFQUF1RXJFLEVBQXZFO0FBQ0FZLFVBQU00RCxZQUFOO0FBQ0gsQ0FMRDtBQU1BLHdCQUFlekUsR0FBZixDQUFtQixFQUFuQixDQUFzQixrQkFBdEIsRUFBMENDLE1BQU1BLEdBQUdHLFFBQUgsR0FBY3NFLFlBQWQsRUFBaEQ7QUFDQSx3QkFBZTFFLEdBQWYsQ0FBbUIsRUFBbkIsQ0FBc0IsZ0JBQXRCLEVBQXdDLENBQUNDLEVBQUQsRUFBSyxFQUFFQyxLQUFLeUUsS0FBUCxFQUFjQyxLQUFLQyxNQUFuQixFQUEyQkMsS0FBS0MsVUFBaEMsRUFBTCxLQUFzRDtBQUMxRixRQUFJaEMsT0FBTzlDLEdBQUdLLFNBQUgsQ0FBYUMsU0FBYixDQUF1Qm9FLEtBQXZCLENBQVg7QUFDQSxRQUFJNUQsUUFBUWQsR0FBR0ssU0FBSCxDQUFhQyxTQUFiLENBQXVCc0UsTUFBdkIsQ0FBWjtBQUNBLFFBQUlFLFVBQUosRUFBZ0I7QUFDWixZQUFJM0IsWUFBWW5ELEdBQUdLLFNBQUgsQ0FBYUMsU0FBYixDQUF1QndFLFVBQXZCLENBQWhCO0FBQ0E5RSxXQUFHRyxRQUFILEdBQWM0RSxvQkFBZCxDQUFtQzVCLFNBQW5DLEVBQThDTCxJQUE5QyxFQUFvRGhDLEtBQXBEO0FBQ0gsS0FIRCxNQUdPO0FBQ0hkLFdBQUdHLFFBQUgsR0FBYzZFLGtCQUFkLENBQWlDbEMsSUFBakMsRUFBdUNoQyxLQUF2QztBQUNIO0FBQ0osQ0FURDtBQVVBLHdCQUFlZixHQUFmLENBQW1CLEVBQW5CLENBQXNCLGNBQXRCLEVBQXNDLENBQUNDLEVBQUQsRUFBSyxFQUFFQyxLQUFLZ0YsUUFBUCxFQUFMLEtBQTJCO0FBQzdELFFBQUlDLFVBQVVsRixHQUFHSyxTQUFILENBQWE4RSxRQUFiLENBQXNCRixRQUF0QixDQUFkO0FBQ0EsUUFBSXJFLFFBQVFaLEdBQUdZLEtBQWY7QUFDQSxRQUFJd0UsT0FBT3hFLE1BQU1DLEdBQU4sRUFBWDtBQUNBLFFBQUlMLE1BQU00RSxLQUFLNUUsR0FBZjtBQUNBLFFBQUksRUFBRTZFLGNBQWNwRSxPQUFoQixFQUF5QnFFLGdCQUF6QixLQUE4Q3RGLEdBQUdHLFFBQUgsRUFBbEQ7QUFDQSxRQUFJb0YsZUFBZXZGLEdBQUd1RixZQUFILEVBQW5CO0FBQ0EsUUFBSUMsV0FBV04sUUFBUWxELE1BQVIsQ0FBZWYsT0FBZixFQUF3Qm1FLElBQXhCLEVBQThCRyxZQUE5QixFQUE0Q0QsZ0JBQTVDLENBQWY7QUFDQUYsU0FBS0ssS0FBTDtBQUNBekYsT0FBRzBDLEdBQUgsQ0FBT2dELHVCQUFQLENBQStCRixRQUEvQixFQUF5Q04sT0FBekM7QUFDQSxRQUFJUyxhQUFhVCxRQUFRVSxhQUFSLENBQXNCSixRQUF0QixDQUFqQjtBQUNBLFFBQUlHLFVBQUosRUFBZ0I7QUFDWjNGLFdBQUc2RixjQUFILENBQWtCRixVQUFsQjtBQUNIO0FBQ0QzRixPQUFHcUIsVUFBSCxDQUFjLElBQUl5RSxvQkFBSixDQUF5QnRGLEdBQXpCLEVBQThCMEUsT0FBOUIsRUFBdUNNLFFBQXZDLENBQWQ7QUFDSCxDQWZEO0FBZ0JPLE1BQU1NLG9CQUFOLGlDQUFrRDtBQUNyRHJFLGdCQUFZakIsR0FBWixFQUFpQjBFLE9BQWpCLEVBQTBCTSxRQUExQixFQUFvQztBQUNoQztBQUNBLGFBQUtoRixHQUFMLEdBQVdBLEdBQVg7QUFDQSxhQUFLMEUsT0FBTCxHQUFlQSxPQUFmO0FBQ0EsYUFBS00sUUFBTCxHQUFnQkEsUUFBaEI7QUFDQSxhQUFLTyxJQUFMLEdBQVksaUJBQVo7QUFDQSxhQUFLQyxXQUFMLEdBQW1CeEYsSUFBSU0sS0FBSixFQUFuQjtBQUNIO0FBQ0RtRixhQUFTakcsRUFBVCxFQUFhO0FBQ1QsWUFBSSxFQUFFa0YsT0FBRixFQUFXTSxRQUFYLEVBQXFCaEYsR0FBckIsRUFBMEJ3RixXQUExQixLQUEwQyxJQUE5QztBQUNBLFlBQUksQ0FBQ3hGLElBQUkwRixRQUFKLENBQWFGLFdBQWIsQ0FBTCxFQUFnQztBQUM1QmhHLGVBQUcwQyxHQUFILENBQU95RCxzQkFBUCxDQUE4QlgsUUFBOUIsRUFBd0NOLE9BQXhDO0FBQ0EsaUJBQUtjLFdBQUwsR0FBbUJ4RixJQUFJTSxLQUFKLEVBQW5CO0FBQ0g7QUFDSjtBQUNEc0YsYUFBUztBQUNMLGVBQU87QUFDSEMsa0JBQU0sS0FBS0MsS0FEUjtBQUVIUCxrQkFBTSxLQUFLQTtBQUZSLFNBQVA7QUFJSDtBQXJCb0Q7UUFBNUNELG9CLEdBQUFBLG9CO0FBdUJOLE1BQU0zQixlQUFOLENBQXNCO0FBQ3pCMUMsZ0JBQVlSLE9BQVosRUFBcUI2QixJQUFyQixFQUEyQmhDLEtBQTNCLEVBQWtDcUMsU0FBbEMsRUFBNkM7QUFDekMsYUFBS2xDLE9BQUwsR0FBZUEsT0FBZjtBQUNBLGFBQUs2QixJQUFMLEdBQVlBLElBQVo7QUFDQSxhQUFLaEMsS0FBTCxHQUFhQSxLQUFiO0FBQ0EsYUFBS3FDLFNBQUwsR0FBaUJBLFNBQWpCO0FBQ0g7QUFDRFUsVUFBTW5CLEdBQU4sRUFBVztBQUNQQSxZQUFJTSxtQkFBSixHQUEwQkMsWUFBMUIsQ0FBdUMsS0FBS2hDLE9BQTVDLEVBQXFELEtBQUs2QixJQUExRCxFQUFnRSxLQUFLaEMsS0FBckUsRUFBNEUsS0FBS3FDLFNBQWpGO0FBQ0EsZUFBTyxJQUFQO0FBQ0g7QUFWd0I7UUFBaEJnQixlLEdBQUFBLGU7QUFZTixNQUFNVixnQkFBTixDQUF1QjtBQUMxQmhDLGdCQUFZUixPQUFaLEVBQXFCcUMsZ0JBQXJCLEVBQXVDUixJQUF2QyxFQUE2Q2pCLFNBQTdDLEVBQXdEc0IsU0FBeEQsRUFBbUU7QUFDL0QsYUFBS2xDLE9BQUwsR0FBZUEsT0FBZjtBQUNBLGFBQUtxQyxnQkFBTCxHQUF3QkEsZ0JBQXhCO0FBQ0EsYUFBS1IsSUFBTCxHQUFZQSxJQUFaO0FBQ0EsYUFBS2pCLFNBQUwsR0FBaUJBLFNBQWpCO0FBQ0EsYUFBS3NCLFNBQUwsR0FBaUJBLFNBQWpCO0FBQ0EsYUFBS2hDLEtBQUwsR0FBYSxJQUFiO0FBQ0EsYUFBS1gsR0FBTCxHQUFXcUIsVUFBVXJCLEdBQXJCO0FBQ0g7QUFDRCtGLFVBQU03RCxHQUFOLEVBQVc7QUFDUCxZQUFJLEVBQUV6QixPQUFGLEVBQVdFLEtBQVgsS0FBcUIsSUFBekI7QUFDQSxZQUFJTCxRQUFRLGtCQUFPSyxLQUFQLEVBQWMsd0JBQWQsRUFBd0NxRixVQUF4QyxFQUFaO0FBQ0EsWUFBSSwyQkFBVzFGLEtBQVgsQ0FBSixFQUF1QjtBQUNuQixpQkFBS3dDLGdCQUFMLENBQXNCbUQsZUFBdEIsQ0FBc0MvRCxHQUF0QyxFQUEyQ3pCLE9BQTNDLEVBQW9ESCxLQUFwRCxFQUEyRCxLQUFLcUMsU0FBaEU7QUFDSDtBQUNKO0FBQ0RVLFVBQU1uQixHQUFOLEVBQVc7QUFDUCxZQUFJLEVBQUViLFNBQUYsRUFBYVosT0FBYixLQUF5QixJQUE3QjtBQUNBLFlBQUksd0JBQWlCWSxTQUFqQixDQUFKLEVBQWlDO0FBQzdCLGdCQUFJZixRQUFRZSxVQUFVZixLQUFWLEVBQVo7QUFDQSxpQkFBS3dDLGdCQUFMLENBQXNCTCxZQUF0QixDQUFtQ1AsR0FBbkMsRUFBd0N6QixPQUF4QyxFQUFpREgsS0FBakQsRUFBd0QsS0FBS3FDLFNBQTdEO0FBQ0EsbUJBQU8sSUFBUDtBQUNILFNBSkQsTUFJTztBQUNILGdCQUFJaEMsUUFBUSxLQUFLQSxLQUFMLEdBQWEsOEJBQW1CVSxTQUFuQixDQUF6QjtBQUNBLGdCQUFJZixRQUFRSyxNQUFNQyxJQUFOLEVBQVo7QUFDQSxpQkFBS2tDLGdCQUFMLENBQXNCTCxZQUF0QixDQUFtQ1AsR0FBbkMsRUFBd0N6QixPQUF4QyxFQUFpREgsS0FBakQsRUFBd0QsS0FBS3FDLFNBQTdEO0FBQ0EsbUJBQU8sSUFBSXVELGtCQUFKLENBQXVCLElBQXZCLENBQVA7QUFDSDtBQUNKO0FBQ0ROLGFBQVM7QUFDTCxZQUFJLEVBQUVuRixPQUFGLEVBQVdrQyxTQUFYLEVBQXNCTCxJQUF0QixFQUE0QjNCLEtBQTVCLEtBQXNDLElBQTFDO0FBQ0EsWUFBSXdGLG1CQUFtQkMsY0FBYzNGLE9BQWQsQ0FBdkI7QUFDQSxZQUFJNEYsWUFBWSxrQkFBTzFGLEtBQVAsRUFBYyw0QkFBZCxFQUE0Q0MsSUFBNUMsRUFBaEI7QUFDQSxZQUFJK0IsU0FBSixFQUFlO0FBQ1gsbUJBQU87QUFDSGxDLHlCQUFTMEYsZ0JBRE47QUFFSFosc0JBQU0sV0FGSDtBQUdINUMseUJBSEc7QUFJSEwsb0JBSkc7QUFLSCtEO0FBTEcsYUFBUDtBQU9IO0FBQ0QsZUFBTztBQUNINUYscUJBQVMwRixnQkFETjtBQUVIWixrQkFBTSxXQUZIO0FBR0g1Qyx1QkFBV0EsY0FBY1osU0FBZCxHQUEwQixJQUExQixHQUFpQ1ksU0FIekM7QUFJSEwsZ0JBSkc7QUFLSCtEO0FBTEcsU0FBUDtBQU9IO0FBbER5QjtRQUFqQnBELGdCLEdBQUFBLGdCO0FBb0RiLFNBQVNtRCxhQUFULENBQXVCM0YsT0FBdkIsRUFBZ0M7QUFDNUIsV0FBTzZGLEtBQUtDLFNBQUwsQ0FBZ0IsSUFBRzlGLFFBQVFQLE9BQVIsQ0FBZ0JzRyxXQUFoQixFQUE4QixLQUFqRCxDQUFQO0FBQ0g7QUFDRCx3QkFBZWpILEdBQWYsQ0FBbUIsRUFBbkIsQ0FBc0IsbUJBQXRCLEVBQTJDLENBQUNDLEVBQUQsRUFBSyxFQUFFQyxLQUFLeUUsS0FBUCxFQUFjQyxLQUFLRyxVQUFuQixFQUErQkQsS0FBS29DLFFBQXBDLEVBQUwsS0FBd0Q7QUFDL0YsUUFBSW5FLE9BQU85QyxHQUFHSyxTQUFILENBQWFDLFNBQWIsQ0FBdUJvRSxLQUF2QixDQUFYO0FBQ0EsUUFBSXZCLFlBQVluRCxHQUFHSyxTQUFILENBQWFDLFNBQWIsQ0FBdUJ3RSxVQUF2QixDQUFoQjtBQUNBLFFBQUlqRCxZQUFZN0IsR0FBR1ksS0FBSCxDQUFTQyxHQUFULEVBQWhCO0FBQ0FiLE9BQUdHLFFBQUgsR0FBYytHLHFCQUFkLENBQW9DL0QsU0FBcEMsRUFBK0NMLElBQS9DLEVBQXFEakIsU0FBckQsRUFBZ0UsQ0FBQyxDQUFDb0YsUUFBbEU7QUFDSCxDQUxEO0FBTUEsd0JBQWVsSCxHQUFmLENBQW1CLEVBQW5CLENBQXNCLGlCQUF0QixFQUF5QyxDQUFDQyxFQUFELEVBQUssRUFBRUMsS0FBS3lFLEtBQVAsRUFBY0MsS0FBS3NDLFFBQW5CLEVBQUwsS0FBdUM7QUFDNUUsUUFBSW5FLE9BQU85QyxHQUFHSyxTQUFILENBQWFDLFNBQWIsQ0FBdUJvRSxLQUF2QixDQUFYO0FBQ0EsUUFBSTdDLFlBQVk3QixHQUFHWSxLQUFILENBQVNDLEdBQVQsRUFBaEI7QUFDQWIsT0FBR0csUUFBSCxHQUFjZ0gsbUJBQWQsQ0FBa0NyRSxJQUFsQyxFQUF3Q2pCLFNBQXhDLEVBQW1ELENBQUMsQ0FBQ29GLFFBQXJEO0FBQ0gsQ0FKRDtBQUtPLE1BQU1QLGtCQUFOLGlDQUFnRDtBQUNuRGpGLGdCQUFZMkYsU0FBWixFQUF1QjtBQUNuQjtBQUNBLGFBQUtyQixJQUFMLEdBQVksZUFBWjtBQUNBLGFBQUt2RixHQUFMLEdBQVc0RyxVQUFVNUcsR0FBckI7QUFDQSxhQUFLNEcsU0FBTCxHQUFpQkEsU0FBakI7QUFDSDtBQUNEbkIsYUFBU2pHLEVBQVQsRUFBYTtBQUNULGFBQUtvSCxTQUFMLENBQWViLEtBQWYsQ0FBcUJ2RyxHQUFHMEMsR0FBeEI7QUFDSDtBQUNEMEQsYUFBUztBQUNMLFlBQUksRUFBRUUsS0FBRixFQUFTUCxJQUFULEVBQWVxQixTQUFmLEtBQTZCLElBQWpDO0FBQ0EsZUFBTztBQUNIZixrQkFBTUMsS0FESDtBQUVIUCxnQkFGRztBQUdIc0IscUJBQVNELFVBQVVoQixNQUFWO0FBSE4sU0FBUDtBQUtIO0FBakJrRDtRQUExQ00sa0IsR0FBQUEsa0IiLCJmaWxlIjoibGliL2NvbXBpbGVkL29wY29kZXMvZG9tLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVXBkYXRpbmdPcGNvZGUgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IHVud3JhcCwgZXhwZWN0IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBDYWNoZWRSZWZlcmVuY2UsIFJlZmVyZW5jZUNhY2hlLCBjb21iaW5lVGFnZ2VkLCBpc0NvbnN0IGFzIGlzQ29uc3RSZWZlcmVuY2UsIGlzTW9kaWZpZWQgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgTlVMTF9SRUZFUkVOQ0UsIFByaW1pdGl2ZVJlZmVyZW5jZSB9IGZyb20gJy4uLy4uL3JlZmVyZW5jZXMnO1xuaW1wb3J0IHsgQXNzZXJ0IH0gZnJvbSAnLi92bSc7XG5pbXBvcnQgeyBBUFBFTkRfT1BDT0RFUyB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuQVBQRU5EX09QQ09ERVMuYWRkKDIzIC8qIFRleHQgKi8sICh2bSwgeyBvcDE6IHRleHQgfSkgPT4ge1xuICAgIHZtLmVsZW1lbnRzKCkuYXBwZW5kVGV4dCh2bS5jb25zdGFudHMuZ2V0U3RyaW5nKHRleHQpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDI0IC8qIENvbW1lbnQgKi8sICh2bSwgeyBvcDE6IHRleHQgfSkgPT4ge1xuICAgIHZtLmVsZW1lbnRzKCkuYXBwZW5kQ29tbWVudCh2bS5jb25zdGFudHMuZ2V0U3RyaW5nKHRleHQpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDI2IC8qIE9wZW5FbGVtZW50ICovLCAodm0sIHsgb3AxOiB0YWcgfSkgPT4ge1xuICAgIHZtLmVsZW1lbnRzKCkub3BlbkVsZW1lbnQodm0uY29uc3RhbnRzLmdldFN0cmluZyh0YWcpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDI3IC8qIE9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMgKi8sICh2bSwgeyBvcDE6IHRhZyB9KSA9PiB7XG4gICAgbGV0IHRhZ05hbWUgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKHRhZyk7XG4gICAgbGV0IG9wZXJhdGlvbnMgPSB2bS5zdGFjay5wb3AoKTtcbiAgICB2bS5lbGVtZW50cygpLm9wZW5FbGVtZW50KHRhZ05hbWUsIG9wZXJhdGlvbnMpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMjggLyogT3BlbkR5bmFtaWNFbGVtZW50ICovLCB2bSA9PiB7XG4gICAgbGV0IG9wZXJhdGlvbnMgPSB2bS5zdGFjay5wb3AoKTtcbiAgICBsZXQgdGFnTmFtZSA9IHZtLnN0YWNrLnBvcCgpLnZhbHVlKCk7XG4gICAgdm0uZWxlbWVudHMoKS5vcGVuRWxlbWVudCh0YWdOYW1lLCBvcGVyYXRpb25zKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDM1IC8qIFB1c2hSZW1vdGVFbGVtZW50ICovLCB2bSA9PiB7XG4gICAgbGV0IGVsZW1lbnRSZWYgPSB2bS5zdGFjay5wb3AoKTtcbiAgICBsZXQgbmV4dFNpYmxpbmdSZWYgPSB2bS5zdGFjay5wb3AoKTtcbiAgICBsZXQgZWxlbWVudDtcbiAgICBsZXQgbmV4dFNpYmxpbmc7XG4gICAgaWYgKGlzQ29uc3RSZWZlcmVuY2UoZWxlbWVudFJlZikpIHtcbiAgICAgICAgZWxlbWVudCA9IGVsZW1lbnRSZWYudmFsdWUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgY2FjaGUgPSBuZXcgUmVmZXJlbmNlQ2FjaGUoZWxlbWVudFJlZik7XG4gICAgICAgIGVsZW1lbnQgPSBjYWNoZS5wZWVrKCk7XG4gICAgICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICAgIH1cbiAgICBpZiAoaXNDb25zdFJlZmVyZW5jZShuZXh0U2libGluZ1JlZikpIHtcbiAgICAgICAgbmV4dFNpYmxpbmcgPSBuZXh0U2libGluZ1JlZi52YWx1ZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBjYWNoZSA9IG5ldyBSZWZlcmVuY2VDYWNoZShuZXh0U2libGluZ1JlZik7XG4gICAgICAgIG5leHRTaWJsaW5nID0gY2FjaGUucGVlaygpO1xuICAgICAgICB2bS51cGRhdGVXaXRoKG5ldyBBc3NlcnQoY2FjaGUpKTtcbiAgICB9XG4gICAgdm0uZWxlbWVudHMoKS5wdXNoUmVtb3RlRWxlbWVudChlbGVtZW50LCBuZXh0U2libGluZyk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCgzNiAvKiBQb3BSZW1vdGVFbGVtZW50ICovLCB2bSA9PiB2bS5lbGVtZW50cygpLnBvcFJlbW90ZUVsZW1lbnQoKSk7XG5jbGFzcyBDbGFzc0xpc3Qge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmxpc3QgPSBudWxsO1xuICAgICAgICB0aGlzLmlzQ29uc3QgPSB0cnVlO1xuICAgIH1cbiAgICBhcHBlbmQocmVmZXJlbmNlKSB7XG4gICAgICAgIGxldCB7IGxpc3QsIGlzQ29uc3QgfSA9IHRoaXM7XG4gICAgICAgIGlmIChsaXN0ID09PSBudWxsKSBsaXN0ID0gdGhpcy5saXN0ID0gW107XG4gICAgICAgIGxpc3QucHVzaChyZWZlcmVuY2UpO1xuICAgICAgICB0aGlzLmlzQ29uc3QgPSBpc0NvbnN0ICYmIGlzQ29uc3RSZWZlcmVuY2UocmVmZXJlbmNlKTtcbiAgICB9XG4gICAgdG9SZWZlcmVuY2UoKSB7XG4gICAgICAgIGxldCB7IGxpc3QsIGlzQ29uc3QgfSA9IHRoaXM7XG4gICAgICAgIGlmICghbGlzdCkgcmV0dXJuIE5VTExfUkVGRVJFTkNFO1xuICAgICAgICBpZiAoaXNDb25zdCkgcmV0dXJuIFByaW1pdGl2ZVJlZmVyZW5jZS5jcmVhdGUodG9DbGFzc05hbWUobGlzdCkpO1xuICAgICAgICByZXR1cm4gbmV3IENsYXNzTGlzdFJlZmVyZW5jZShsaXN0KTtcbiAgICB9XG59XG5jbGFzcyBDbGFzc0xpc3RSZWZlcmVuY2UgZXh0ZW5kcyBDYWNoZWRSZWZlcmVuY2Uge1xuICAgIGNvbnN0cnVjdG9yKGxpc3QpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5saXN0ID0gW107XG4gICAgICAgIHRoaXMudGFnID0gY29tYmluZVRhZ2dlZChsaXN0KTtcbiAgICAgICAgdGhpcy5saXN0ID0gbGlzdDtcbiAgICB9XG4gICAgY29tcHV0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRvQ2xhc3NOYW1lKHRoaXMubGlzdCk7XG4gICAgfVxufVxuZnVuY3Rpb24gdG9DbGFzc05hbWUobGlzdCkge1xuICAgIGxldCByZXQgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IHZhbHVlID0gbGlzdFtpXS52YWx1ZSgpO1xuICAgICAgICBpZiAodmFsdWUgIT09IGZhbHNlICYmIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHJldC5wdXNoKHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJldC5sZW5ndGggPT09IDAgPyBudWxsIDogcmV0LmpvaW4oJyAnKTtcbn1cbmV4cG9ydCBjbGFzcyBTaW1wbGVFbGVtZW50T3BlcmF0aW9ucyB7XG4gICAgY29uc3RydWN0b3IoZW52KSB7XG4gICAgICAgIHRoaXMuZW52ID0gZW52O1xuICAgICAgICB0aGlzLm9wY29kZXMgPSBudWxsO1xuICAgICAgICB0aGlzLmNsYXNzTGlzdCA9IG51bGw7XG4gICAgfVxuICAgIGFkZFN0YXRpY0F0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCB2YWx1ZSkge1xuICAgICAgICBpZiAobmFtZSA9PT0gJ2NsYXNzJykge1xuICAgICAgICAgICAgdGhpcy5hZGRDbGFzcyhQcmltaXRpdmVSZWZlcmVuY2UuY3JlYXRlKHZhbHVlKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCkuc2V0QXR0cmlidXRlKGVsZW1lbnQsIG5hbWUsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhZGRTdGF0aWNBdHRyaWJ1dGVOUyhlbGVtZW50LCBuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIHRoaXMuZW52LmdldEFwcGVuZE9wZXJhdGlvbnMoKS5zZXRBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZSk7XG4gICAgfVxuICAgIGFkZER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgcmVmZXJlbmNlLCBpc1RydXN0aW5nKSB7XG4gICAgICAgIGlmIChuYW1lID09PSAnY2xhc3MnKSB7XG4gICAgICAgICAgICB0aGlzLmFkZENsYXNzKHJlZmVyZW5jZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgYXR0cmlidXRlTWFuYWdlciA9IHRoaXMuZW52LmF0dHJpYnV0ZUZvcihlbGVtZW50LCBuYW1lLCBpc1RydXN0aW5nKTtcbiAgICAgICAgICAgIGxldCBhdHRyaWJ1dGUgPSBuZXcgRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCBuYW1lLCByZWZlcmVuY2UpO1xuICAgICAgICAgICAgdGhpcy5hZGRBdHRyaWJ1dGUoYXR0cmlidXRlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhZGREeW5hbWljQXR0cmlidXRlTlMoZWxlbWVudCwgbmFtZXNwYWNlLCBuYW1lLCByZWZlcmVuY2UsIGlzVHJ1c3RpbmcpIHtcbiAgICAgICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSB0aGlzLmVudi5hdHRyaWJ1dGVGb3IoZWxlbWVudCwgbmFtZSwgaXNUcnVzdGluZywgbmFtZXNwYWNlKTtcbiAgICAgICAgbGV0IG5zQXR0cmlidXRlID0gbmV3IER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlTWFuYWdlciwgbmFtZSwgcmVmZXJlbmNlLCBuYW1lc3BhY2UpO1xuICAgICAgICB0aGlzLmFkZEF0dHJpYnV0ZShuc0F0dHJpYnV0ZSk7XG4gICAgfVxuICAgIGZsdXNoKGVsZW1lbnQsIHZtKSB7XG4gICAgICAgIGxldCB7IGVudiB9ID0gdm07XG4gICAgICAgIGxldCB7IG9wY29kZXMsIGNsYXNzTGlzdCB9ID0gdGhpcztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IG9wY29kZXMgJiYgaSA8IG9wY29kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZtLnVwZGF0ZVdpdGgob3Bjb2Rlc1tpXSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNsYXNzTGlzdCkge1xuICAgICAgICAgICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSBlbnYuYXR0cmlidXRlRm9yKGVsZW1lbnQsICdjbGFzcycsIGZhbHNlKTtcbiAgICAgICAgICAgIGxldCBhdHRyaWJ1dGUgPSBuZXcgRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCAnY2xhc3MnLCBjbGFzc0xpc3QudG9SZWZlcmVuY2UoKSk7XG4gICAgICAgICAgICBsZXQgb3Bjb2RlID0gYXR0cmlidXRlLmZsdXNoKGVudik7XG4gICAgICAgICAgICBpZiAob3Bjb2RlKSB7XG4gICAgICAgICAgICAgICAgdm0udXBkYXRlV2l0aChvcGNvZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMub3Bjb2RlcyA9IG51bGw7XG4gICAgICAgIHRoaXMuY2xhc3NMaXN0ID0gbnVsbDtcbiAgICB9XG4gICAgYWRkQ2xhc3MocmVmZXJlbmNlKSB7XG4gICAgICAgIGxldCB7IGNsYXNzTGlzdCB9ID0gdGhpcztcbiAgICAgICAgaWYgKCFjbGFzc0xpc3QpIHtcbiAgICAgICAgICAgIGNsYXNzTGlzdCA9IHRoaXMuY2xhc3NMaXN0ID0gbmV3IENsYXNzTGlzdCgpO1xuICAgICAgICB9XG4gICAgICAgIGNsYXNzTGlzdC5hcHBlbmQocmVmZXJlbmNlKTtcbiAgICB9XG4gICAgYWRkQXR0cmlidXRlKGF0dHJpYnV0ZSkge1xuICAgICAgICBsZXQgb3Bjb2RlID0gYXR0cmlidXRlLmZsdXNoKHRoaXMuZW52KTtcbiAgICAgICAgaWYgKG9wY29kZSkge1xuICAgICAgICAgICAgbGV0IHsgb3Bjb2RlcyB9ID0gdGhpcztcbiAgICAgICAgICAgIGlmICghb3Bjb2Rlcykge1xuICAgICAgICAgICAgICAgIG9wY29kZXMgPSB0aGlzLm9wY29kZXMgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wY29kZXMucHVzaChvcGNvZGUpO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIENvbXBvbmVudEVsZW1lbnRPcGVyYXRpb25zIHtcbiAgICBjb25zdHJ1Y3RvcihlbnYpIHtcbiAgICAgICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgICAgIHRoaXMuYXR0cmlidXRlTmFtZXMgPSBudWxsO1xuICAgICAgICB0aGlzLmF0dHJpYnV0ZXMgPSBudWxsO1xuICAgICAgICB0aGlzLmNsYXNzTGlzdCA9IG51bGw7XG4gICAgfVxuICAgIGFkZFN0YXRpY0F0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCB2YWx1ZSkge1xuICAgICAgICBpZiAobmFtZSA9PT0gJ2NsYXNzJykge1xuICAgICAgICAgICAgdGhpcy5hZGRDbGFzcyhQcmltaXRpdmVSZWZlcmVuY2UuY3JlYXRlKHZhbHVlKSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zaG91bGRBZGRBdHRyaWJ1dGUobmFtZSkpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkQXR0cmlidXRlKG5hbWUsIG5ldyBTdGF0aWNBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgdmFsdWUpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhZGRTdGF0aWNBdHRyaWJ1dGVOUyhlbGVtZW50LCBuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIGlmICh0aGlzLnNob3VsZEFkZEF0dHJpYnV0ZShuYW1lKSkge1xuICAgICAgICAgICAgdGhpcy5hZGRBdHRyaWJ1dGUobmFtZSwgbmV3IFN0YXRpY0F0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYWRkRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCByZWZlcmVuY2UsIGlzVHJ1c3RpbmcpIHtcbiAgICAgICAgaWYgKG5hbWUgPT09ICdjbGFzcycpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkQ2xhc3MocmVmZXJlbmNlKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNob3VsZEFkZEF0dHJpYnV0ZShuYW1lKSkge1xuICAgICAgICAgICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSB0aGlzLmVudi5hdHRyaWJ1dGVGb3IoZWxlbWVudCwgbmFtZSwgaXNUcnVzdGluZyk7XG4gICAgICAgICAgICBsZXQgYXR0cmlidXRlID0gbmV3IER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlTWFuYWdlciwgbmFtZSwgcmVmZXJlbmNlKTtcbiAgICAgICAgICAgIHRoaXMuYWRkQXR0cmlidXRlKG5hbWUsIGF0dHJpYnV0ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYWRkRHluYW1pY0F0dHJpYnV0ZU5TKGVsZW1lbnQsIG5hbWVzcGFjZSwgbmFtZSwgcmVmZXJlbmNlLCBpc1RydXN0aW5nKSB7XG4gICAgICAgIGlmICh0aGlzLnNob3VsZEFkZEF0dHJpYnV0ZShuYW1lKSkge1xuICAgICAgICAgICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSB0aGlzLmVudi5hdHRyaWJ1dGVGb3IoZWxlbWVudCwgbmFtZSwgaXNUcnVzdGluZywgbmFtZXNwYWNlKTtcbiAgICAgICAgICAgIGxldCBuc0F0dHJpYnV0ZSA9IG5ldyBEeW5hbWljQXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZU1hbmFnZXIsIG5hbWUsIHJlZmVyZW5jZSwgbmFtZXNwYWNlKTtcbiAgICAgICAgICAgIHRoaXMuYWRkQXR0cmlidXRlKG5hbWUsIG5zQXR0cmlidXRlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmbHVzaChlbGVtZW50LCB2bSkge1xuICAgICAgICBsZXQgeyBlbnYgfSA9IHRoaXM7XG4gICAgICAgIGxldCB7IGF0dHJpYnV0ZXMsIGNsYXNzTGlzdCB9ID0gdGhpcztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGF0dHJpYnV0ZXMgJiYgaSA8IGF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBvcGNvZGUgPSBhdHRyaWJ1dGVzW2ldLmZsdXNoKGVudik7XG4gICAgICAgICAgICBpZiAob3Bjb2RlKSB7XG4gICAgICAgICAgICAgICAgdm0udXBkYXRlV2l0aChvcGNvZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChjbGFzc0xpc3QpIHtcbiAgICAgICAgICAgIGxldCBhdHRyaWJ1dGVNYW5hZ2VyID0gZW52LmF0dHJpYnV0ZUZvcihlbGVtZW50LCAnY2xhc3MnLCBmYWxzZSk7XG4gICAgICAgICAgICBsZXQgYXR0cmlidXRlID0gbmV3IER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlTWFuYWdlciwgJ2NsYXNzJywgY2xhc3NMaXN0LnRvUmVmZXJlbmNlKCkpO1xuICAgICAgICAgICAgbGV0IG9wY29kZSA9IGF0dHJpYnV0ZS5mbHVzaChlbnYpO1xuICAgICAgICAgICAgaWYgKG9wY29kZSkge1xuICAgICAgICAgICAgICAgIHZtLnVwZGF0ZVdpdGgob3Bjb2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBzaG91bGRBZGRBdHRyaWJ1dGUobmFtZSkge1xuICAgICAgICByZXR1cm4gIXRoaXMuYXR0cmlidXRlTmFtZXMgfHwgdGhpcy5hdHRyaWJ1dGVOYW1lcy5pbmRleE9mKG5hbWUpID09PSAtMTtcbiAgICB9XG4gICAgYWRkQ2xhc3MocmVmZXJlbmNlKSB7XG4gICAgICAgIGxldCB7IGNsYXNzTGlzdCB9ID0gdGhpcztcbiAgICAgICAgaWYgKCFjbGFzc0xpc3QpIHtcbiAgICAgICAgICAgIGNsYXNzTGlzdCA9IHRoaXMuY2xhc3NMaXN0ID0gbmV3IENsYXNzTGlzdCgpO1xuICAgICAgICB9XG4gICAgICAgIGNsYXNzTGlzdC5hcHBlbmQocmVmZXJlbmNlKTtcbiAgICB9XG4gICAgYWRkQXR0cmlidXRlKG5hbWUsIGF0dHJpYnV0ZSkge1xuICAgICAgICBsZXQgeyBhdHRyaWJ1dGVOYW1lcywgYXR0cmlidXRlcyB9ID0gdGhpcztcbiAgICAgICAgaWYgKCFhdHRyaWJ1dGVOYW1lcykge1xuICAgICAgICAgICAgYXR0cmlidXRlTmFtZXMgPSB0aGlzLmF0dHJpYnV0ZU5hbWVzID0gW107XG4gICAgICAgICAgICBhdHRyaWJ1dGVzID0gdGhpcy5hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgYXR0cmlidXRlTmFtZXMucHVzaChuYW1lKTtcbiAgICAgICAgdW53cmFwKGF0dHJpYnV0ZXMpLnB1c2goYXR0cmlidXRlKTtcbiAgICB9XG59XG5BUFBFTkRfT1BDT0RFUy5hZGQoMzIgLyogRmx1c2hFbGVtZW50ICovLCB2bSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uZWxlbWVudHMoKTtcbiAgICBsZXQgYWN0aW9uID0gJ0ZsdXNoRWxlbWVudE9wY29kZSNldmFsdWF0ZSc7XG4gICAgc3RhY2suZXhwZWN0T3BlcmF0aW9ucyhhY3Rpb24pLmZsdXNoKHN0YWNrLmV4cGVjdENvbnN0cnVjdGluZyhhY3Rpb24pLCB2bSk7XG4gICAgc3RhY2suZmx1c2hFbGVtZW50KCk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCgzMyAvKiBDbG9zZUVsZW1lbnQgKi8sIHZtID0+IHZtLmVsZW1lbnRzKCkuY2xvc2VFbGVtZW50KCkpO1xuQVBQRU5EX09QQ09ERVMuYWRkKDI5IC8qIFN0YXRpY0F0dHIgKi8sICh2bSwgeyBvcDE6IF9uYW1lLCBvcDI6IF92YWx1ZSwgb3AzOiBfbmFtZXNwYWNlIH0pID0+IHtcbiAgICBsZXQgbmFtZSA9IHZtLmNvbnN0YW50cy5nZXRTdHJpbmcoX25hbWUpO1xuICAgIGxldCB2YWx1ZSA9IHZtLmNvbnN0YW50cy5nZXRTdHJpbmcoX3ZhbHVlKTtcbiAgICBpZiAoX25hbWVzcGFjZSkge1xuICAgICAgICBsZXQgbmFtZXNwYWNlID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyhfbmFtZXNwYWNlKTtcbiAgICAgICAgdm0uZWxlbWVudHMoKS5zZXRTdGF0aWNBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB2bS5lbGVtZW50cygpLnNldFN0YXRpY0F0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7XG4gICAgfVxufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMzQgLyogTW9kaWZpZXIgKi8sICh2bSwgeyBvcDE6IF9tYW5hZ2VyIH0pID0+IHtcbiAgICBsZXQgbWFuYWdlciA9IHZtLmNvbnN0YW50cy5nZXRPdGhlcihfbWFuYWdlcik7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IGFyZ3MgPSBzdGFjay5wb3AoKTtcbiAgICBsZXQgdGFnID0gYXJncy50YWc7XG4gICAgbGV0IHsgY29uc3RydWN0aW5nOiBlbGVtZW50LCB1cGRhdGVPcGVyYXRpb25zIH0gPSB2bS5lbGVtZW50cygpO1xuICAgIGxldCBkeW5hbWljU2NvcGUgPSB2bS5keW5hbWljU2NvcGUoKTtcbiAgICBsZXQgbW9kaWZpZXIgPSBtYW5hZ2VyLmNyZWF0ZShlbGVtZW50LCBhcmdzLCBkeW5hbWljU2NvcGUsIHVwZGF0ZU9wZXJhdGlvbnMpO1xuICAgIGFyZ3MuY2xlYXIoKTtcbiAgICB2bS5lbnYuc2NoZWR1bGVJbnN0YWxsTW9kaWZpZXIobW9kaWZpZXIsIG1hbmFnZXIpO1xuICAgIGxldCBkZXN0cnVjdG9yID0gbWFuYWdlci5nZXREZXN0cnVjdG9yKG1vZGlmaWVyKTtcbiAgICBpZiAoZGVzdHJ1Y3Rvcikge1xuICAgICAgICB2bS5uZXdEZXN0cm95YWJsZShkZXN0cnVjdG9yKTtcbiAgICB9XG4gICAgdm0udXBkYXRlV2l0aChuZXcgVXBkYXRlTW9kaWZpZXJPcGNvZGUodGFnLCBtYW5hZ2VyLCBtb2RpZmllcikpO1xufSk7XG5leHBvcnQgY2xhc3MgVXBkYXRlTW9kaWZpZXJPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gICAgY29uc3RydWN0b3IodGFnLCBtYW5hZ2VyLCBtb2RpZmllcikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnRhZyA9IHRhZztcbiAgICAgICAgdGhpcy5tYW5hZ2VyID0gbWFuYWdlcjtcbiAgICAgICAgdGhpcy5tb2RpZmllciA9IG1vZGlmaWVyO1xuICAgICAgICB0aGlzLnR5cGUgPSBcInVwZGF0ZS1tb2RpZmllclwiO1xuICAgICAgICB0aGlzLmxhc3RVcGRhdGVkID0gdGFnLnZhbHVlKCk7XG4gICAgfVxuICAgIGV2YWx1YXRlKHZtKSB7XG4gICAgICAgIGxldCB7IG1hbmFnZXIsIG1vZGlmaWVyLCB0YWcsIGxhc3RVcGRhdGVkIH0gPSB0aGlzO1xuICAgICAgICBpZiAoIXRhZy52YWxpZGF0ZShsYXN0VXBkYXRlZCkpIHtcbiAgICAgICAgICAgIHZtLmVudi5zY2hlZHVsZVVwZGF0ZU1vZGlmaWVyKG1vZGlmaWVyLCBtYW5hZ2VyKTtcbiAgICAgICAgICAgIHRoaXMubGFzdFVwZGF0ZWQgPSB0YWcudmFsdWUoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgICAgICAgdHlwZTogdGhpcy50eXBlXG4gICAgICAgIH07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFN0YXRpY0F0dHJpYnV0ZSB7XG4gICAgY29uc3RydWN0b3IoZWxlbWVudCwgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZSkge1xuICAgICAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMubmFtZXNwYWNlID0gbmFtZXNwYWNlO1xuICAgIH1cbiAgICBmbHVzaChlbnYpIHtcbiAgICAgICAgZW52LmdldEFwcGVuZE9wZXJhdGlvbnMoKS5zZXRBdHRyaWJ1dGUodGhpcy5lbGVtZW50LCB0aGlzLm5hbWUsIHRoaXMudmFsdWUsIHRoaXMubmFtZXNwYWNlKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIER5bmFtaWNBdHRyaWJ1dGUge1xuICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQsIGF0dHJpYnV0ZU1hbmFnZXIsIG5hbWUsIHJlZmVyZW5jZSwgbmFtZXNwYWNlKSB7XG4gICAgICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgICAgIHRoaXMuYXR0cmlidXRlTWFuYWdlciA9IGF0dHJpYnV0ZU1hbmFnZXI7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMucmVmZXJlbmNlID0gcmVmZXJlbmNlO1xuICAgICAgICB0aGlzLm5hbWVzcGFjZSA9IG5hbWVzcGFjZTtcbiAgICAgICAgdGhpcy5jYWNoZSA9IG51bGw7XG4gICAgICAgIHRoaXMudGFnID0gcmVmZXJlbmNlLnRhZztcbiAgICB9XG4gICAgcGF0Y2goZW52KSB7XG4gICAgICAgIGxldCB7IGVsZW1lbnQsIGNhY2hlIH0gPSB0aGlzO1xuICAgICAgICBsZXQgdmFsdWUgPSBleHBlY3QoY2FjaGUsICdtdXN0IHBhdGNoIGFmdGVyIGZsdXNoJykucmV2YWxpZGF0ZSgpO1xuICAgICAgICBpZiAoaXNNb2RpZmllZCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuYXR0cmlidXRlTWFuYWdlci51cGRhdGVBdHRyaWJ1dGUoZW52LCBlbGVtZW50LCB2YWx1ZSwgdGhpcy5uYW1lc3BhY2UpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZsdXNoKGVudikge1xuICAgICAgICBsZXQgeyByZWZlcmVuY2UsIGVsZW1lbnQgfSA9IHRoaXM7XG4gICAgICAgIGlmIChpc0NvbnN0UmVmZXJlbmNlKHJlZmVyZW5jZSkpIHtcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IHJlZmVyZW5jZS52YWx1ZSgpO1xuICAgICAgICAgICAgdGhpcy5hdHRyaWJ1dGVNYW5hZ2VyLnNldEF0dHJpYnV0ZShlbnYsIGVsZW1lbnQsIHZhbHVlLCB0aGlzLm5hbWVzcGFjZSk7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBjYWNoZSA9IHRoaXMuY2FjaGUgPSBuZXcgUmVmZXJlbmNlQ2FjaGUocmVmZXJlbmNlKTtcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IGNhY2hlLnBlZWsoKTtcbiAgICAgICAgICAgIHRoaXMuYXR0cmlidXRlTWFuYWdlci5zZXRBdHRyaWJ1dGUoZW52LCBlbGVtZW50LCB2YWx1ZSwgdGhpcy5uYW1lc3BhY2UpO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBQYXRjaEVsZW1lbnRPcGNvZGUodGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICBsZXQgeyBlbGVtZW50LCBuYW1lc3BhY2UsIG5hbWUsIGNhY2hlIH0gPSB0aGlzO1xuICAgICAgICBsZXQgZm9ybWF0dGVkRWxlbWVudCA9IGZvcm1hdEVsZW1lbnQoZWxlbWVudCk7XG4gICAgICAgIGxldCBsYXN0VmFsdWUgPSBleHBlY3QoY2FjaGUsICdtdXN0IHNlcmlhbGl6ZSBhZnRlciBmbHVzaCcpLnBlZWsoKTtcbiAgICAgICAgaWYgKG5hbWVzcGFjZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50OiBmb3JtYXR0ZWRFbGVtZW50LFxuICAgICAgICAgICAgICAgIHR5cGU6ICdhdHRyaWJ1dGUnLFxuICAgICAgICAgICAgICAgIG5hbWVzcGFjZSxcbiAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgIGxhc3RWYWx1ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZWxlbWVudDogZm9ybWF0dGVkRWxlbWVudCxcbiAgICAgICAgICAgIHR5cGU6ICdhdHRyaWJ1dGUnLFxuICAgICAgICAgICAgbmFtZXNwYWNlOiBuYW1lc3BhY2UgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBuYW1lc3BhY2UsXG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgbGFzdFZhbHVlXG4gICAgICAgIH07XG4gICAgfVxufVxuZnVuY3Rpb24gZm9ybWF0RWxlbWVudChlbGVtZW50KSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGA8JHtlbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKX0gLz5gKTtcbn1cbkFQUEVORF9PUENPREVTLmFkZCgzMSAvKiBEeW5hbWljQXR0ck5TICovLCAodm0sIHsgb3AxOiBfbmFtZSwgb3AyOiBfbmFtZXNwYWNlLCBvcDM6IHRydXN0aW5nIH0pID0+IHtcbiAgICBsZXQgbmFtZSA9IHZtLmNvbnN0YW50cy5nZXRTdHJpbmcoX25hbWUpO1xuICAgIGxldCBuYW1lc3BhY2UgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKF9uYW1lc3BhY2UpO1xuICAgIGxldCByZWZlcmVuY2UgPSB2bS5zdGFjay5wb3AoKTtcbiAgICB2bS5lbGVtZW50cygpLnNldER5bmFtaWNBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUsIHJlZmVyZW5jZSwgISF0cnVzdGluZyk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCgzMCAvKiBEeW5hbWljQXR0ciAqLywgKHZtLCB7IG9wMTogX25hbWUsIG9wMjogdHJ1c3RpbmcgfSkgPT4ge1xuICAgIGxldCBuYW1lID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyhfbmFtZSk7XG4gICAgbGV0IHJlZmVyZW5jZSA9IHZtLnN0YWNrLnBvcCgpO1xuICAgIHZtLmVsZW1lbnRzKCkuc2V0RHluYW1pY0F0dHJpYnV0ZShuYW1lLCByZWZlcmVuY2UsICEhdHJ1c3RpbmcpO1xufSk7XG5leHBvcnQgY2xhc3MgUGF0Y2hFbGVtZW50T3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKG9wZXJhdGlvbikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnR5cGUgPSBcInBhdGNoLWVsZW1lbnRcIjtcbiAgICAgICAgdGhpcy50YWcgPSBvcGVyYXRpb24udGFnO1xuICAgICAgICB0aGlzLm9wZXJhdGlvbiA9IG9wZXJhdGlvbjtcbiAgICB9XG4gICAgZXZhbHVhdGUodm0pIHtcbiAgICAgICAgdGhpcy5vcGVyYXRpb24ucGF0Y2godm0uZW52KTtcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICBsZXQgeyBfZ3VpZCwgdHlwZSwgb3BlcmF0aW9uIH0gPSB0aGlzO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ3VpZDogX2d1aWQsXG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgZGV0YWlsczogb3BlcmF0aW9uLnRvSlNPTigpXG4gICAgICAgIH07XG4gICAgfVxufSJdfQ==

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

var _concat = require('../expressions/concat');
var _references = require('../../references');
var _concat = require('../expressions/concat');
_opcodes.APPEND_OPCODES.add(1 /* Helper */, (vm, { op1: _helper }) => {

@@ -70,2 +70,2 @@ let stack = vm.stack;

});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2V4cHJlc3Npb25zLmpzIl0sIm5hbWVzIjpbImFkZCIsInZtIiwib3AxIiwiX2hlbHBlciIsInN0YWNrIiwiaGVscGVyIiwiY29uc3RhbnRzIiwiZ2V0RnVuY3Rpb24iLCJhcmdzIiwicG9wIiwidmFsdWUiLCJjbGVhciIsInB1c2giLCJfZnVuY3Rpb24iLCJmdW5jIiwic3ltYm9sIiwiZXhwciIsInJlZmVyZW5jZUZvclN5bWJvbCIsInNjb3BlIiwiYmluZFN5bWJvbCIsIl9uYW1lIiwibmFtZSIsImdldFN0cmluZyIsImxvY2FscyIsImdldFBhcnRpYWxNYXAiLCJyZWYiLCJ1bmRlZmluZWQiLCJnZXRTZWxmIiwiZ2V0Iiwic3ltYm9scyIsIm9wMiIsImJpbmRDYWxsZXJTY29wZSIsInB1c2hSb290U2NvcGUiLCJfa2V5Iiwia2V5IiwiX2Jsb2NrIiwiYmxvY2siLCJnZXRCbG9jayIsImhhc0Jsb2NrIiwiaGFzQmxvY2tQYXJhbXMiLCJzeW1ib2xUYWJsZSIsInBhcmFtZXRlcnMiLCJsZW5ndGgiLCJjb3VudCIsIm91dCIsImkiLCJyZXZlcnNlIl0sIm1hcHBpbmdzIjoiOztBQUFBOztBQUNBOztBQUNBOztBQUNBLHdCQUFlQSxHQUFmLENBQW1CLENBQW5CLENBQXFCLFlBQXJCLEVBQW1DLENBQUNDLEVBQUQsRUFBSyxFQUFFQyxLQUFLQyxPQUFQLEVBQUwsS0FBMEI7QUFDekQsUUFBSUMsUUFBUUgsR0FBR0csS0FBZjtBQUNBLFFBQUlDLFNBQVNKLEdBQUdLLFNBQUgsQ0FBYUMsV0FBYixDQUF5QkosT0FBekIsQ0FBYjtBQUNBLFFBQUlLLE9BQU9KLE1BQU1LLEdBQU4sRUFBWDtBQUNBLFFBQUlDLFFBQVFMLE9BQU9KLEVBQVAsRUFBV08sSUFBWCxDQUFaO0FBQ0FBLFNBQUtHLEtBQUw7QUFDQVYsT0FBR0csS0FBSCxDQUFTUSxJQUFULENBQWNGLEtBQWQ7QUFDSCxDQVBEO0FBUUEsd0JBQWVWLEdBQWYsQ0FBbUIs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O0FBR0Esd0JBQWVuQyxHQUFmLENBQW1CLENBQW5CLENBQXFCLGNBQXJCLEVBQXFDLENBQUNDLEVBQUQsRUFBSyxFQUFFQyxLQUFLaUMsTUFBUCxFQUFMLEtBQXlCO0FBQzFELFFBQUlHLFdBQVcsQ0FBQyxDQUFDckMsR0FBR2lCLEtBQUgsR0FBV21CLFFBQVgsQ0FBb0JGLE1BQXBCLENBQWpCO0FBQ0FsQyxPQUFHRyxLQUFILENBQVNRLElBQVQsQ0FBYzBCLG1FQUFkO0FBQ0gsQ0FIRDtBQUlBLHdCQUFldEMsR0FBZixDQUFtQixFQUFuQixDQUFzQixvQkFBdEIsRUFBNEMsQ0FBQ0MsRUFBRCxFQUFLLEVBQUVDLEtBQUtpQyxNQUFQLEVBQUwsS0FBeUI7QUFDakUsUUFBSUMsUUFBUW5DLEdBQUdpQixLQUFILEdBQVdtQixRQUFYLENBQW9CRixNQUFwQixDQUFaO0FBQ0EsUUFBSUksaUJBQWlCSCxTQUFTQSxNQUFNSSxXQUFOLENBQWtCQyxVQUFsQixDQUE2QkMsTUFBM0Q7QUFDQXpDLE9BQUdHLEtBQUgsQ0FBU1EsSUFBVCxDQUFjMkIseUVBQWQ7QUFDSCxDQUpEO0FBS0Esd0JBQWV2QyxHQUFmLENBQW1CLEVBQW5CLENBQXNCLFlBQXRCLEVBQW9DLENBQUNDLEVBQUQsRUFBSyxFQUFFQyxLQUFLeUMsS0FBUCxFQUFMLEtBQXdCO0FBQ3hELFFBQUlDLE1BQU0sRUFBVjtBQUNBLFNBQUssSUFBSUMsSUFBSUYsS0FBYixFQUFvQkUsSUFBSSxDQUF4QixFQUEyQkEsR0FBM0IsRUFBZ0M7QUFDNUJELFlBQUloQyxJQUFKLENBQVNYLEdBQUdHLEtBQUgsQ0FBU0ssR0FBVCxFQUFUO0FBQ0g7QUFDRFIsT0FBR0csS0FBSCxDQUFTUSxJQUFULENBQWMsNEJBQW9CZ0MsSUFBSUUsT0FBSixFQUFwQixDQUFkO0FBQ0gsQ0FORCIsImZpbGUiOiJsaWIvY29tcGlsZWQvb3Bjb2Rlcy9leHByZXNzaW9ucy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUEVORF9PUENPREVTIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBGQUxTRV9SRUZFUkVOQ0UsIFRSVUVfUkVGRVJFTkNFIH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBDb25jYXRSZWZlcmVuY2UgfSBmcm9tICcuLi9leHByZXNzaW9ucy9jb25jYXQnO1xuQVBQRU5EX09QQ09ERVMuYWRkKDEgLyogSGVscGVyICovLCAodm0sIHsgb3AxOiBfaGVscGVyIH0pID0+IHtcbiAgICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgICBsZXQgaGVscGVyID0gdm0uY29uc3RhbnRzLmdldEZ1bmN0aW9uKF9oZWxwZXIpO1xuICAgIGxldCBhcmdzID0gc3RhY2sucG9wKCk7XG4gICAgbGV0IHZhbHVlID0gaGVscGVyKHZtLCBhcmdzKTtcbiAgICBhcmdzLmNsZWFyKCk7XG4gICAgdm0uc3RhY2sucHVzaCh2YWx1ZSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCgyIC8qIEZ1bmN0aW9uICovLCAodm0sIHsgb3AxOiBfZnVuY3Rpb24gfSkgPT4ge1xuICAgIGxldCBmdW5jID0gdm0uY29uc3RhbnRzLmdldEZ1bmN0aW9uKF9mdW5jdGlvbik7XG4gICAgdm0uc3RhY2sucHVzaChmdW5jKHZtKSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg1IC8qIEdldFZhcmlhYmxlICovLCAodm0sIHsgb3AxOiBzeW1ib2wgfSkgPT4ge1xuICAgIGxldCBleHByID0gdm0ucmVmZXJlbmNlRm9yU3ltYm9sKHN5bWJvbCk7XG4gICAgdm0uc3RhY2sucHVzaChleHByKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDQgLyogU2V0VmFyaWFibGUgKi8sICh2bSwgeyBvcDE6IHN5bWJvbCB9KSA9PiB7XG4gICAgbGV0IGV4cHIgPSB2bS5zdGFjay5wb3AoKTtcbiAgICB2bS5zY29wZSgpLmJpbmRTeW1ib2woc3ltYm9sLCBleHByKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDcwIC8qIFJlc29sdmVNYXliZUxvY2FsICovLCAodm0sIHsgb3AxOiBfbmFtZSB9KSA9PiB7XG4gICAgbGV0IG5hbWUgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKF9uYW1lKTtcbiAgICBsZXQgbG9jYWxzID0gdm0uc2NvcGUoKS5nZXRQYXJ0aWFsTWFwKCk7XG4gICAgbGV0IHJlZiA9IGxvY2Fsc1tuYW1lXTtcbiAgICBpZiAocmVmID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmVmID0gdm0uZ2V0U2VsZigpLmdldChuYW1lKTtcbiAgICB9XG4gICAgdm0uc3RhY2sucHVzaChyZWYpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMTkgLyogUm9vdFNjb3BlICovLCAodm0sIHsgb3AxOiBzeW1ib2xzLCBvcDI6IGJpbmRDYWxsZXJTY29wZSB9KSA9PiB7XG4gICAgdm0ucHVzaFJvb3RTY29wZShzeW1ib2xzLCAhIWJpbmRDYWxsZXJTY29wZSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2IC8qIEdldFByb3BlcnR5ICovLCAodm0sIHsgb3AxOiBfa2V5IH0pID0+IHtcbiAgICBsZXQga2V5ID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyhfa2V5KTtcbiAgICBsZXQgZXhwciA9IHZtLnN0YWNrLnBvcCgpO1xuICAgIHZtLnN0YWNrLnB1c2goZXhwci5nZXQoa2V5KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg3IC8qIFB1c2hCbG9jayAqLywgKHZtLCB7IG9wMTogX2Jsb2NrIH0pID0+IHtcbiAgICBsZXQgYmxvY2sgPSBfYmxvY2sgPyB2bS5jb25zdGFudHMuZ2V0QmxvY2soX2Jsb2NrKSA6IG51bGw7XG4gICAgdm0uc3RhY2sucHVzaChibG9jayk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg4IC8qIEdldEJsb2NrICovLCAodm0sIHsgb3AxOiBfYmxvY2sgfSkgPT4ge1xuICAgIHZtLnN0YWNrLnB1c2godm0uc2NvcGUoKS5nZXRCbG9jayhfYmxvY2spKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDkgLyogSGFzQmxvY2sgKi8sICh2bSwgeyBvcDE6IF9ibG9jayB9KSA9PiB7XG4gICAgbGV0IGhhc0Jsb2NrID0gISF2bS5zY29wZSgpLmdldEJsb2NrKF9ibG9jayk7XG4gICAgdm0uc3RhY2sucHVzaChoYXNCbG9jayA/IFRSVUVfUkVGRVJFTkNFIDogRkFMU0VfUkVGRVJFTkNFKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDEwIC8qIEhhc0Jsb2NrUGFyYW1zICovLCAodm0sIHsgb3AxOiBfYmxvY2sgfSkgPT4ge1xuICAgIGxldCBibG9jayA9IHZtLnNjb3BlKCkuZ2V0QmxvY2soX2Jsb2NrKTtcbiAgICBsZXQgaGFzQmxvY2tQYXJhbXMgPSBibG9jayAmJiBibG9jay5zeW1ib2xUYWJsZS5wYXJhbWV0ZXJzLmxlbmd0aDtcbiAgICB2bS5zdGFjay5wdXNoKGhhc0Jsb2NrUGFyYW1zID8gVFJVRV9SRUZFUkVOQ0UgOiBGQUxTRV9SRUZFUkVOQ0UpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMTEgLyogQ29uY2F0ICovLCAodm0sIHsgb3AxOiBjb3VudCB9KSA9PiB7XG4gICAgbGV0IG91dCA9IFtdO1xuICAgIGZvciAobGV0IGkgPSBjb3VudDsgaSA+IDA7IGktLSkge1xuICAgICAgICBvdXQucHVzaCh2bS5zdGFjay5wb3AoKSk7XG4gICAgfVxuICAgIHZtLnN0YWNrLnB1c2gobmV3IENvbmNhdFJlZmVyZW5jZShvdXQucmV2ZXJzZSgpKSk7XG59KTsiXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2V4cHJlc3Npb25zLmpzIl0sIm5hbWVzIjpbImFkZCIsInZtIiwib3AxIiwiX2hlbHBlciIsInN0YWNrIiwiaGVscGVyIiwiY29uc3RhbnRzIiwiZ2V0RnVuY3Rpb24iLCJhcmdzIiwicG9wIiwidmFsdWUiLCJjbGVhciIsInB1c2giLCJfZnVuY3Rpb24iLCJmdW5jIiwic3ltYm9sIiwiZXhwciIsInJlZmVyZW5jZUZvclN5bWJvbCIsInNjb3BlIiwiYmluZFN5bWJvbCIsIl9uYW1lIiwibmFtZSIsImdldFN0cmluZyIsImxvY2FscyIsImdldFBhcnRpYWxNYXAiLCJyZWYiLCJ1bmRlZmluZWQiLCJnZXRTZWxmIiwiZ2V0Iiwic3ltYm9scyIsIm9wMiIsImJpbmRDYWxsZXJTY29wZSIsInB1c2hSb290U2NvcGUiLCJfa2V5Iiwia2V5IiwiX2Jsb2NrIiwiYmxvY2siLCJnZXRCbG9jayIsImhhc0Jsb2NrIiwiaGFzQmxvY2tQYXJhbXMiLCJzeW1ib2xUYWJsZSIsInBhcmFtZXRlcnMiLCJsZW5ndGgiLCJjb3VudCIsIm91dCIsImkiLCJyZXZlcnNlIl0sIm1hcHBpbmdzIjoiOztBQUFBOztBQUNBOztBQUNBOztBQUNBLHdCQUFlQSxHQUFmLENBQW1CLENBQW5CLENBQXFCLFlBQXJCLEVBQW1DLENBQUNDLEVBQUQsRUFBSyxFQUFFQyxLQUFLQyxPQUFQLEVBQUwsS0FBMEI7QUFDekQsUUFBSUMsUUFBUUgsR0FBR0csS0FBZjtBQUNBLFFBQUlDLFNBQVNKLEdBQUdLLFNBQUgsQ0FBYUMsV0FBYixDQUF5QkosT0FBekIsQ0FBYjtBQUNBLFFBQUlLLE9BQU9KLE1BQU1LLEdBQU4sRUFBWDtBQUNBLFFBQUlDLFFBQVFMLE9BQU9KLEVBQVAsRUFBV08sSUFBWCxDQUFaO0FBQ0FBLFNBQUtHLEtBQUw7QUFDQVYsT0FBR0csS0FBSCxDQUFTUSxJQUFULENBQWNGLEtBQWQ7QUFDSCxDQVBEO0FBUUEsd0JBQWVWLEdBQWYsQ0FBbUIs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O0FBR0Esd0JBQWVuQyxHQUFmLENBQW1CLENBQW5CLENBQXFCLGNBQXJCLEVBQXFDLENBQUNDLEVBQUQsRUFBSyxFQUFFQyxLQUFLaUMsTUFBUCxFQUFMLEtBQXlCO0FBQzFELFFBQUlHLFdBQVcsQ0FBQyxDQUFDckMsR0FBR2lCLEtBQUgsR0FBV21CLFFBQVgsQ0FBb0JGLE1BQXBCLENBQWpCO0FBQ0FsQyxPQUFHRyxLQUFILENBQVNRLElBQVQsQ0FBYzBCLG1FQUFkO0FBQ0gsQ0FIRDtBQUlBLHdCQUFldEMsR0FBZixDQUFtQixFQUFuQixDQUFzQixvQkFBdEIsRUFBNEMsQ0FBQ0MsRUFBRCxFQUFLLEVBQUVDLEtBQUtpQyxNQUFQLEVBQUwsS0FBeUI7QUFDakUsUUFBSUMsUUFBUW5DLEdBQUdpQixLQUFILEdBQVdtQixRQUFYLENBQW9CRixNQUFwQixDQUFaO0FBQ0EsUUFBSUksaUJBQWlCSCxTQUFTQSxNQUFNSSxXQUFOLENBQWtCQyxVQUFsQixDQUE2QkMsTUFBM0Q7QUFDQXpDLE9BQUdHLEtBQUgsQ0FBU1EsSUFBVCxDQUFjMkIseUVBQWQ7QUFDSCxDQUpEO0FBS0Esd0JBQWV2QyxHQUFmLENBQW1CLEVBQW5CLENBQXNCLFlBQXRCLEVBQW9DLENBQUNDLEVBQUQsRUFBSyxFQUFFQyxLQUFLeUMsS0FBUCxFQUFMLEtBQXdCO0FBQ3hELFFBQUlDLE1BQU0sRUFBVjtBQUNBLFNBQUssSUFBSUMsSUFBSUYsS0FBYixFQUFvQkUsSUFBSSxDQUF4QixFQUEyQkEsR0FBM0IsRUFBZ0M7QUFDNUJELFlBQUloQyxJQUFKLENBQVNYLEdBQUdHLEtBQUgsQ0FBU0ssR0FBVCxFQUFUO0FBQ0g7QUFDRFIsT0FBR0csS0FBSCxDQUFTUSxJQUFULENBQWMsNEJBQW9CZ0MsSUFBSUUsT0FBSixFQUFwQixDQUFkO0FBQ0gsQ0FORCIsImZpbGUiOiJsaWIvY29tcGlsZWQvb3Bjb2Rlcy9leHByZXNzaW9ucy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUEVORF9PUENPREVTIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBDb25jYXRSZWZlcmVuY2UgfSBmcm9tICcuLi9leHByZXNzaW9ucy9jb25jYXQnO1xuaW1wb3J0IHsgVFJVRV9SRUZFUkVOQ0UsIEZBTFNFX1JFRkVSRU5DRSB9IGZyb20gJy4uLy4uL3JlZmVyZW5jZXMnO1xuQVBQRU5EX09QQ09ERVMuYWRkKDEgLyogSGVscGVyICovLCAodm0sIHsgb3AxOiBfaGVscGVyIH0pID0+IHtcbiAgICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgICBsZXQgaGVscGVyID0gdm0uY29uc3RhbnRzLmdldEZ1bmN0aW9uKF9oZWxwZXIpO1xuICAgIGxldCBhcmdzID0gc3RhY2sucG9wKCk7XG4gICAgbGV0IHZhbHVlID0gaGVscGVyKHZtLCBhcmdzKTtcbiAgICBhcmdzLmNsZWFyKCk7XG4gICAgdm0uc3RhY2sucHVzaCh2YWx1ZSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCgyIC8qIEZ1bmN0aW9uICovLCAodm0sIHsgb3AxOiBfZnVuY3Rpb24gfSkgPT4ge1xuICAgIGxldCBmdW5jID0gdm0uY29uc3RhbnRzLmdldEZ1bmN0aW9uKF9mdW5jdGlvbik7XG4gICAgdm0uc3RhY2sucHVzaChmdW5jKHZtKSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg1IC8qIEdldFZhcmlhYmxlICovLCAodm0sIHsgb3AxOiBzeW1ib2wgfSkgPT4ge1xuICAgIGxldCBleHByID0gdm0ucmVmZXJlbmNlRm9yU3ltYm9sKHN5bWJvbCk7XG4gICAgdm0uc3RhY2sucHVzaChleHByKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDQgLyogU2V0VmFyaWFibGUgKi8sICh2bSwgeyBvcDE6IHN5bWJvbCB9KSA9PiB7XG4gICAgbGV0IGV4cHIgPSB2bS5zdGFjay5wb3AoKTtcbiAgICB2bS5zY29wZSgpLmJpbmRTeW1ib2woc3ltYm9sLCBleHByKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDcwIC8qIFJlc29sdmVNYXliZUxvY2FsICovLCAodm0sIHsgb3AxOiBfbmFtZSB9KSA9PiB7XG4gICAgbGV0IG5hbWUgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKF9uYW1lKTtcbiAgICBsZXQgbG9jYWxzID0gdm0uc2NvcGUoKS5nZXRQYXJ0aWFsTWFwKCk7XG4gICAgbGV0IHJlZiA9IGxvY2Fsc1tuYW1lXTtcbiAgICBpZiAocmVmID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmVmID0gdm0uZ2V0U2VsZigpLmdldChuYW1lKTtcbiAgICB9XG4gICAgdm0uc3RhY2sucHVzaChyZWYpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMTkgLyogUm9vdFNjb3BlICovLCAodm0sIHsgb3AxOiBzeW1ib2xzLCBvcDI6IGJpbmRDYWxsZXJTY29wZSB9KSA9PiB7XG4gICAgdm0ucHVzaFJvb3RTY29wZShzeW1ib2xzLCAhIWJpbmRDYWxsZXJTY29wZSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2IC8qIEdldFByb3BlcnR5ICovLCAodm0sIHsgb3AxOiBfa2V5IH0pID0+IHtcbiAgICBsZXQga2V5ID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyhfa2V5KTtcbiAgICBsZXQgZXhwciA9IHZtLnN0YWNrLnBvcCgpO1xuICAgIHZtLnN0YWNrLnB1c2goZXhwci5nZXQoa2V5KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg3IC8qIFB1c2hCbG9jayAqLywgKHZtLCB7IG9wMTogX2Jsb2NrIH0pID0+IHtcbiAgICBsZXQgYmxvY2sgPSBfYmxvY2sgPyB2bS5jb25zdGFudHMuZ2V0QmxvY2soX2Jsb2NrKSA6IG51bGw7XG4gICAgdm0uc3RhY2sucHVzaChibG9jayk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg4IC8qIEdldEJsb2NrICovLCAodm0sIHsgb3AxOiBfYmxvY2sgfSkgPT4ge1xuICAgIHZtLnN0YWNrLnB1c2godm0uc2NvcGUoKS5nZXRCbG9jayhfYmxvY2spKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDkgLyogSGFzQmxvY2sgKi8sICh2bSwgeyBvcDE6IF9ibG9jayB9KSA9PiB7XG4gICAgbGV0IGhhc0Jsb2NrID0gISF2bS5zY29wZSgpLmdldEJsb2NrKF9ibG9jayk7XG4gICAgdm0uc3RhY2sucHVzaChoYXNCbG9jayA/IFRSVUVfUkVGRVJFTkNFIDogRkFMU0VfUkVGRVJFTkNFKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDEwIC8qIEhhc0Jsb2NrUGFyYW1zICovLCAodm0sIHsgb3AxOiBfYmxvY2sgfSkgPT4ge1xuICAgIGxldCBibG9jayA9IHZtLnNjb3BlKCkuZ2V0QmxvY2soX2Jsb2NrKTtcbiAgICBsZXQgaGFzQmxvY2tQYXJhbXMgPSBibG9jayAmJiBibG9jay5zeW1ib2xUYWJsZS5wYXJhbWV0ZXJzLmxlbmd0aDtcbiAgICB2bS5zdGFjay5wdXNoKGhhc0Jsb2NrUGFyYW1zID8gVFJVRV9SRUZFUkVOQ0UgOiBGQUxTRV9SRUZFUkVOQ0UpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMTEgLyogQ29uY2F0ICovLCAodm0sIHsgb3AxOiBjb3VudCB9KSA9PiB7XG4gICAgbGV0IG91dCA9IFtdO1xuICAgIGZvciAobGV0IGkgPSBjb3VudDsgaSA+IDA7IGktLSkge1xuICAgICAgICBvdXQucHVzaCh2bS5zdGFjay5wb3AoKSk7XG4gICAgfVxuICAgIHZtLnN0YWNrLnB1c2gobmV3IENvbmNhdFJlZmVyZW5jZShvdXQucmV2ZXJzZSgpKSk7XG59KTsiXX0=

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

var _opcodes = require('../../opcodes');
var _reference = require('@glimmer/reference');

@@ -13,4 +15,2 @@

var _opcodes = require('../../opcodes');
var _references = require('../../references');

@@ -135,3 +135,3 @@

super();
this.type = 'assert';
this.type = "assert";
this.tag = cache.tag;

@@ -155,6 +155,6 @@ this.cache = cache;

return {
guid: _guid,
type,
args: [],
details: { expected },
guid: _guid,
type
details: { expected }
};

@@ -168,3 +168,3 @@ }

this.target = target;
this.type = 'jump-if-not-modified';
this.type = "jump-if-not-modified";
this.tag = tag;

@@ -184,5 +184,5 @@ this.lastRevision = tag.value();

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

@@ -196,3 +196,3 @@ }

this.target = target;
this.type = 'did-modify';
this.type = "did-modify";
this.tag = _reference.CONSTANT_TAG;

@@ -208,3 +208,3 @@ }

this.tag = _reference.CONSTANT_TAG;
this.type = 'label';
this.type = "label";
this.label = null;

@@ -214,3 +214,3 @@ this.prev = null;

(0, _util.initializeGuid)(this);
this.label = label;
if (label) this.label = label;
}

@@ -223,5 +223,5 @@ evaluate() {}

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

@@ -231,2 +231,2 @@ }

exports.LabelOpcode = LabelOpcode;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL3ZtLmpzIl0sIm5hbWVzIjpbImFkZCIsInZtIiwicHVzaENoaWxkU2NvcGUiLCJwb3BTY29wZSIsInB1c2hEeW5hbWljU2NvcGUiLCJwb3BEeW5hbWljU2NvcGUiLCJvcDEiLCJudW1iZXIiLCJzdGFjayIsInB1c2giLCJvdGhlciIsImNvbnN0YW50cyIsImdldE90aGVyIiwicHJpbWl0aXZlIiwiZmxhZyIsInZhbHVlIiwiY3JlYXRlIiwiZ2V0U3RyaW5nIiwicmVnaXN0ZXIiLCJvcDIiLCJvZmZzZXQiLCJwb3NpdGlvbiIsImZldGNoVmFsdWUiLCJkdXAiLCJjb3VudCIsInBvcCIsImxvYWQiLCJmZXRjaCIsIl9uYW1lcyIsIm5hbWVzIiwiZ2V0QXJyYXkiLCJiaW5kRHluYW1pY1Njb3BlIiwicHVzaEZyYW1lIiwicG9wRnJhbWUiLCJhcmdzIiwiZW50ZXIiLCJleGl0IiwiYmxvY2siLCJjb21waWxlRHluYW1pYyIsImVudiIsIl9ibG9jayIsImdldEJsb2NrIiwiY29tcGlsZWQiLCJjb21waWxlU3RhdGljIiwiY2FsbCIsInN0YXJ0IiwiX2ludm9rZXIiLCJpbnZva2VyIiwiaW52b2tlIiwidGFyZ2V0IiwiZ290byIsInJlZmVyZW5jZSIsImNhY2hlIiwicGVlayIsInVwZGF0ZVdpdGgiLCJBc3NlcnQiLCJyZXR1cm4iLCJDb25zdFRlc3QiLCJyZWYiLCJfZW52IiwiU2ltcGxlVGVzdCIsIkVudmlyb25tZW50VGVzdCIsInRvQ29uZGl0aW9uYWxSZWZlcmVuY2UiLCJfZnVuYyIsIm9wZXJhbmQiLCJmdW5jIiwiZ2V0RnVuY3Rpb24iLCJjb25zdHJ1Y3RvciIsInR5cGUiLCJ0YWciLCJldmFsdWF0ZSIsInJldmFsaWRhdGUiLCJ0aHJvdyIsInRvSlNPTiIsIl9ndWlkIiwiZXhwZWN0ZWQiLCJKU09OIiwic3RyaW5naWZ5IiwiZSIsIlN0cmluZyIsImRldGFpbHMiLCJndWlkIiwiSnVtcElmTm90TW9kaWZpZWRPcGNvZGUiLCJsYXN0UmV2aXNpb24iLCJhbHdheXNSZXZhbGlkYXRlIiwidmFsaWRhdGUiLCJkaWRNb2RpZnkiLCJpbnNwZWN0IiwiRGlkTW9kaWZ5T3Bjb2RlIiwiTGFiZWxPcGNvZGUiLCJsYWJlbCIsInByZXYiLCJuZXh0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0Esd0JBQWVBLEdBQWYsQ0FBbUIsRUFBbkIsQ0FBc0IsZ0JBQXRCLEVBQXdDQyxNQUFNQSxHQUFHQyxjQUFILEVBQTlDO0FBQ0Esd0JBQWVGLEdBQWYsQ0FBbUIsRUFBbkIsQ0FBc0IsY0FBdEIsRUFBc0NDLE1BQU1BLEdBQUdFLFFBQUgsRUFBNUM7QUFDQSx3QkFBZUgsR0FBZixDQUFtQixFQUFuQixDQUFzQixzQkFBdEIsRUFBOENDLE1BQU1BLEdBQUdHLGdCQUFILEVBQXBEO0FBQ0Esd0JBQWVKLEdBQWYsQ0FBbUIsRUFBbkIsQ0FBc0IscUJBQXRCLEVBQTZDQyxNQUFNQSxHQUFHSSxlQUFILEVBQW5EO0FBQ0Esd0JBQWVMLEdBQWYsQ0FBbUIsRUFBbkIsQ0FBc0IsZUFBdEIsRUFBdUMsQ0FBQ0MsRUFBRCxFQUFLLEVBQUVLLEtBQUtDLE1BQVAsRUFBTCxLQUF5QjtBQUM1RE4sT0FBR08sS0FBSCxDQUFTQyxJQUFULENBQWNGLE1BQWQ7QUFDSCxDQUZEO0FBR0Esd0JBQWVQLEdBQWYsQ0FBbUIsRUFBbkIsQ0FBc0IsY0FBdEIsRUFBc0MsQ0FBQ0MsRUFBRCxFQUFLLEVBQUVLLEtBQUtJLEtBQVAsRUFBTCxLQUF3QjtBQUMxRFQsT0FBR08sS0FBSCxDQUFTQyxJQUFULENBQWNSLEdBQUdVLFNBQUgsQ0FBYUMsUUFBYixDQUFzQkYsS0FBdEIsQ0FBZDtBQUNILENBRkQ7QUFHQSx3QkFBZVYsR0FBZixDQUFtQixFQUFuQixDQUFzQix3QkFBdEIsRUFBZ0QsQ0FBQ0MsRUFBRCxFQUFLLEVBQUVLLEtBQUtPLFNBQVAsRUFBTCxLQUE0QjtBQUN4RSxRQUFJTCxRQUFRUCxHQUFHTyxLQUFmO0FBQ0Es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REMsZUFBVztBQUNQLGFBQUtyQixNQUFMLENBQVlxQyxTQUFaO0FBQ0g7QUFUK0M7UUFBdkNFLGUsR0FBQUEsZTtBQVdOLE1BQU1DLFdBQU4sQ0FBa0I7QUFDckJ0QixnQkFBWXVCLEtBQVosRUFBbUI7QUFDZixhQUFLckIsR0FBTDtBQUNBLGFBQUtELElBQUwsR0FBWSxPQUFaO0FBQ0EsYUFBS3NCLEtBQUwsR0FBYSxJQUFiO0FBQ0EsYUFBS0MsSUFBTCxHQUFZLElBQVo7QUFDQSxhQUFLQyxJQUFMLEdBQVksSUFBWjtBQUNBLGtDQUFlLElBQWY7QUFDQSxhQUFLRixLQUFMLEdBQWFBLEtBQWI7QUFDSDtBQUNEcEIsZUFBVyxDQUFFO0FBQ2JpQixjQUFVO0FBQ04sZUFBUSxHQUFFLEtBQUtHLEtBQU0sS0FBSSxLQUFLaEIsS0FBTSxHQUFwQztBQUNIO0FBQ0RELGFBQVM7QUFDTCxlQUFPO0FBQ0h2QyxrQkFBTSxDQUFDMEMsS0FBS0MsU0FBTCxDQUFlLEtBQUtVLE9BQUwsRUFBZixDQUFELENBREg7QUFFSE4sa0JBQU0sS0FBS1AsS0FGUjtBQUdITixrQkFBTSxLQUFLQTtBQUhSLFNBQVA7QUFLSDtBQXBCb0I7UUFBWnFCLFcsR0FBQUEsVyIsImZpbGUiOiJsaWIvY29tcGlsZWQvb3Bjb2Rlcy92bS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0UmVmZXJlbmNlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IENPTlNUQU5UX1RBRywgaXNDb25zdCwgaXNNb2RpZmllZCwgUmVmZXJlbmNlQ2FjaGUgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgaW5pdGlhbGl6ZUd1aWQgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IEFQUEVORF9PUENPREVTLCBVcGRhdGluZ09wY29kZSB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IHsgRkFMU0VfUkVGRVJFTkNFLCBOVUxMX1JFRkVSRU5DRSwgUHJpbWl0aXZlUmVmZXJlbmNlLCBUUlVFX1JFRkVSRU5DRSwgVU5ERUZJTkVEX1JFRkVSRU5DRSB9IGZyb20gJy4uLy4uL3JlZmVyZW5jZXMnO1xuQVBQRU5EX09QQ09ERVMuYWRkKDIwIC8qIENoaWxkU2NvcGUgKi8sIHZtID0+IHZtLnB1c2hDaGlsZFNjb3BlKCkpO1xuQVBQRU5EX09QQ09ERVMuYWRkKDIxIC8qIFBvcFNjb3BlICovLCB2bSA9PiB2bS5wb3BTY29wZSgpKTtcbkFQUEVORF9PUENPREVTLmFkZCgzOCAvKiBQdXNoRHluYW1pY1Njb3BlICovLCB2bSA9PiB2bS5wdXNoRHluYW1pY1Njb3BlKCkpO1xuQVBQRU5EX09QQ09ERVMuYWRkKDM5IC8qIFBvcER5bmFtaWNTY29wZSAqLywgdm0gPT4gdm0ucG9wRHluYW1pY1Njb3BlKCkpO1xuQVBQRU5EX09QQ09ERVMuYWRkKDEyIC8qIEltbWVkaWF0ZSAqLywgKHZtLCB7IG9wMTogbnVtYmVyIH0pID0+IHtcbiAgICB2bS5zdGFjay5wdXNoKG51bWJlcik7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCgxMyAvKiBDb25zdGFudCAqLywgKHZtLCB7IG9wMTogb3RoZXIgfSkgPT4ge1xuICAgIHZtLnN0YWNrLnB1c2godm0uY29uc3RhbnRzLmdldE90aGVyKG90aGVyKSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCgxNCAvKiBQcmltaXRpdmVSZWZlcmVuY2UgKi8sICh2bSwgeyBvcDE6IHByaW1pdGl2ZSB9KSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IGZsYWcgPSAocHJpbWl0aXZlICYgMyA8PCAzMCkgPj4+IDMwO1xuICAgIGxldCB2YWx1ZSA9IHByaW1pdGl2ZSAmIH4oMyA8PCAzMCk7XG4gICAgc3dpdGNoIChmbGFnKSB7XG4gICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgIHN0YWNrLnB1c2goUHJpbWl0aXZlUmVmZXJlbmNlLmNyZWF0ZSh2YWx1ZSkpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIHN0YWNrLnB1c2goUHJpbWl0aXZlUmVmZXJlbmNlLmNyZWF0ZSh2bS5jb25zdGFudHMuZ2V0U3RyaW5nKHZhbHVlKSkpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIHN3aXRjaCAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgIHN0YWNrLnB1c2goRkFMU0VfUkVGRVJFTkNFKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKFRSVUVfUkVGRVJFTkNFKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKE5VTExfUkVGRVJFTkNFKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKFVOREVGSU5FRF9SRUZFUkVOQ0UpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDE1IC8qIER1cCAqLywgKHZtLCB7IG9wMTogcmVnaXN0ZXIsIG9wMjogb2Zmc2V0IH0pID0+IHtcbiAgICBsZXQgcG9zaXRpb24gPSB2bS5mZXRjaFZhbHVlKHJlZ2lzdGVyKSAtIG9mZnNldDtcbiAgICB2bS5zdGFjay5kdXAocG9zaXRpb24pO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMTYgLyogUG9wICovLCAodm0sIHsgb3AxOiBjb3VudCB9KSA9PiB2bS5zdGFjay5wb3AoY291bnQpKTtcbkFQUEVORF9PUENPREVTLmFkZCgxNyAvKiBMb2FkICovLCAodm0sIHsgb3AxOiByZWdpc3RlciB9KSA9PiB2bS5sb2FkKHJlZ2lzdGVyKSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMTggLyogRmV0Y2ggKi8sICh2bSwgeyBvcDE6IHJlZ2lzdGVyIH0pID0+IHZtLmZldGNoKHJlZ2lzdGVyKSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMzcgLyogQmluZER5bmFtaWNTY29wZSAqLywgKHZtLCB7IG9wMTogX25hbWVzIH0pID0+IHtcbiAgICBsZXQgbmFtZXMgPSB2bS5jb25zdGFudHMuZ2V0QXJyYXkoX25hbWVzKTtcbiAgICB2bS5iaW5kRHluYW1pY1Njb3BlKG5hbWVzKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDQ2IC8qIFB1c2hGcmFtZSAqLywgdm0gPT4gdm0ucHVzaEZyYW1lKCkpO1xuQVBQRU5EX09QQ09ERVMuYWRkKDQ3IC8qIFBvcEZyYW1lICovLCB2bSA9PiB2bS5wb3BGcmFtZSgpKTtcbkFQUEVORF9PUENPREVTLmFkZCg0OCAvKiBFbnRlciAqLywgKHZtLCB7IG9wMTogYXJncyB9KSA9PiB2bS5lbnRlcihhcmdzKSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNDkgLyogRXhpdCAqLywgdm0gPT4gdm0uZXhpdCgpKTtcbkFQUEVORF9PUENPREVTLmFkZCg0MCAvKiBDb21waWxlRHluYW1pY0Jsb2NrICovLCB2bSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IGJsb2NrID0gc3RhY2sucG9wKCk7XG4gICAgc3RhY2sucHVzaChibG9jayA/IGJsb2NrLmNvbXBpbGVEeW5hbWljKHZtLmVudikgOiBudWxsKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDQxIC8qIEludm9rZVN0YXRpYyAqLywgKHZtLCB7IG9wMTogX2Jsb2NrIH0pID0+IHtcbiAgICBsZXQgYmxvY2sgPSB2bS5jb25zdGFudHMuZ2V0QmxvY2soX2Jsb2NrKTtcbiAgICBsZXQgY29tcGlsZWQgPSBibG9jay5jb21waWxlU3RhdGljKHZtLmVudik7XG4gICAgdm0uY2FsbChjb21waWxlZC5zdGFydCk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg0MiAvKiBJbnZva2VEeW5hbWljICovLCAodm0sIHsgb3AxOiBfaW52b2tlciB9KSA9PiB7XG4gICAgbGV0IGludm9rZXIgPSB2bS5jb25zdGFudHMuZ2V0T3RoZXIoX2ludm9rZXIpO1xuICAgIGxldCBibG9jayA9IHZtLnN0YWNrLnBvcCgpO1xuICAgIGludm9rZXIuaW52b2tlKHZtLCBibG9jayk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg0MyAvKiBKdW1wICovLCAodm0sIHsgb3AxOiB0YXJnZXQgfSkgPT4gdm0uZ290byh0YXJnZXQpKTtcbkFQUEVORF9PUENPREVTLmFkZCg0NCAvKiBKdW1wSWYgKi8sICh2bSwgeyBvcDE6IHRhcmdldCB9KSA9PiB7XG4gICAgbGV0IHJlZmVyZW5jZSA9IHZtLnN0YWNrLnBvcCgpO1xuICAgIGlmIChpc0NvbnN0KHJlZmVyZW5jZSkpIHtcbiAgICAgICAgaWYgKHJlZmVyZW5jZS52YWx1ZSgpKSB7XG4gICAgICAgICAgICB2bS5nb3RvKHRhcmdldCk7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgY2FjaGUgPSBuZXcgUmVmZXJlbmNlQ2FjaGUocmVmZXJlbmNlKTtcbiAgICAgICAgaWYgKGNhY2hlLnBlZWsoKSkge1xuICAgICAgICAgICAgdm0uZ290byh0YXJnZXQpO1xuICAgICAgICB9XG4gICAgICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICAgIH1cbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDQ1IC8qIEp1bXBVbmxlc3MgKi8sICh2bSwgeyBvcDE6IHRhcmdldCB9KSA9PiB7XG4gICAgbGV0IHJlZmVyZW5jZSA9IHZtLnN0YWNrLnBvcCgpO1xuICAgIGlmIChpc0NvbnN0KHJlZmVyZW5jZSkpIHtcbiAgICAgICAgaWYgKCFyZWZlcmVuY2UudmFsdWUoKSkge1xuICAgICAgICAgICAgdm0uZ290byh0YXJnZXQpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKHJlZmVyZW5jZSk7XG4gICAgICAgIGlmICghY2FjaGUucGVlaygpKSB7XG4gICAgICAgICAgICB2bS5nb3RvKHRhcmdldCk7XG4gICAgICAgIH1cbiAgICAgICAgdm0udXBkYXRlV2l0aChuZXcgQXNzZXJ0KGNhY2hlKSk7XG4gICAgfVxufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMjIgLyogUmV0dXJuICovLCB2bSA9PiB2bS5yZXR1cm4oKSk7XG5leHBvcnQgY29uc3QgQ29uc3RUZXN0ID0gZnVuY3Rpb24gKHJlZiwgX2Vudikge1xuICAgIHJldHVybiBuZXcgQ29uc3RSZWZlcmVuY2UoISFyZWYudmFsdWUoKSk7XG59O1xuZXhwb3J0IGNvbnN0IFNpbXBsZVRlc3QgPSBmdW5jdGlvbiAocmVmLCBfZW52KSB7XG4gICAgcmV0dXJuIHJlZjtcbn07XG5leHBvcnQgY29uc3QgRW52aXJvbm1lbnRUZXN0ID0gZnVuY3Rpb24gKHJlZiwgZW52KSB7XG4gICAgcmV0dXJuIGVudi50b0NvbmRpdGlvbmFsUmVmZXJlbmNlKHJlZik7XG59O1xuQVBQRU5EX09QQ09ERVMuYWRkKDUwIC8qIFRlc3QgKi8sICh2bSwgeyBvcDE6IF9mdW5jIH0pID0+IHtcbiAgICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgICBsZXQgb3BlcmFuZCA9IHN0YWNrLnBvcCgpO1xuICAgIGxldCBmdW5jID0gdm0uY29uc3RhbnRzLmdldEZ1bmN0aW9uKF9mdW5jKTtcbiAgICBzdGFjay5wdXNoKGZ1bmMob3BlcmFuZCwgdm0uZW52KSk7XG59KTtcbmV4cG9ydCBjbGFzcyBBc3NlcnQgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gICAgY29uc3RydWN0b3IoY2FjaGUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy50eXBlID0gJ2Fzc2VydCc7XG4gICAgICAgIHRoaXMudGFnID0gY2FjaGUudGFnO1xuICAgICAgICB0aGlzLmNhY2hlID0gY2FjaGU7XG4gICAgfVxuICAgIGV2YWx1YXRlKHZtKSB7XG4gICAgICAgIGxldCB7IGNhY2hlIH0gPSB0aGlzO1xuICAgICAgICBpZiAoaXNNb2RpZmllZChjYWNoZS5yZXZhbGlkYXRlKCkpKSB7XG4gICAgICAgICAgICB2bS50aHJvdygpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgbGV0IHsgdHlwZSwgX2d1aWQsIGNhY2hlIH0gPSB0aGlzO1xuICAgICAgICBsZXQgZXhwZWN0ZWQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBleHBlY3RlZCA9IEpTT04uc3RyaW5naWZ5KGNhY2hlLnBlZWsoKSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGV4cGVjdGVkID0gU3RyaW5nKGNhY2hlLnBlZWsoKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFyZ3M6IFtdLFxuICAgICAgICAgICAgZGV0YWlsczogeyBleHBlY3RlZCB9LFxuICAgICAgICAgICAgZ3VpZDogX2d1aWQsXG4gICAgICAgICAgICB0eXBlXG4gICAgICAgIH07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIEp1bXBJZk5vdE1vZGlmaWVkT3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKHRhZywgdGFyZ2V0KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0O1xuICAgICAgICB0aGlzLnR5cGUgPSAnanVtcC1pZi1ub3QtbW9kaWZpZWQnO1xuICAgICAgICB0aGlzLnRhZyA9IHRhZztcbiAgICAgICAgdGhpcy5sYXN0UmV2aXNpb24gPSB0YWcudmFsdWUoKTtcbiAgICB9XG4gICAgZXZhbHVhdGUodm0pIHtcbiAgICAgICAgbGV0IHsgdGFnLCB0YXJnZXQsIGxhc3RSZXZpc2lvbiB9ID0gdGhpcztcbiAgICAgICAgaWYgKCF2bS5hbHdheXNSZXZhbGlkYXRlICYmIHRhZy52YWxpZGF0ZShsYXN0UmV2aXNpb24pKSB7XG4gICAgICAgICAgICB2bS5nb3RvKHRhcmdldCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZGlkTW9kaWZ5KCkge1xuICAgICAgICB0aGlzLmxhc3RSZXZpc2lvbiA9IHRoaXMudGFnLnZhbHVlKCk7XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFyZ3M6IFtKU09OLnN0cmluZ2lmeSh0aGlzLnRhcmdldC5pbnNwZWN0KCkpXSxcbiAgICAgICAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICAgICAgICB0eXBlOiB0aGlzLnR5cGVcbiAgICAgICAgfTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgRGlkTW9kaWZ5T3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKHRhcmdldCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnRhcmdldCA9IHRhcmdldDtcbiAgICAgICAgdGhpcy50eXBlID0gJ2RpZC1tb2RpZnknO1xuICAgICAgICB0aGlzLnRhZyA9IENPTlNUQU5UX1RBRztcbiAgICB9XG4gICAgZXZhbHVhdGUoKSB7XG4gICAgICAgIHRoaXMudGFyZ2V0LmRpZE1vZGlmeSgpO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBMYWJlbE9wY29kZSB7XG4gICAgY29uc3RydWN0b3IobGFiZWwpIHtcbiAgICAgICAgdGhpcy50YWcgPSBDT05TVEFOVF9UQUc7XG4gICAgICAgIHRoaXMudHlwZSA9ICdsYWJlbCc7XG4gICAgICAgIHRoaXMubGFiZWwgPSBudWxsO1xuICAgICAgICB0aGlzLnByZXYgPSBudWxsO1xuICAgICAgICB0aGlzLm5leHQgPSBudWxsO1xuICAgICAgICBpbml0aWFsaXplR3VpZCh0aGlzKTtcbiAgICAgICAgdGhpcy5sYWJlbCA9IGxhYmVsO1xuICAgIH1cbiAgICBldmFsdWF0ZSgpIHt9XG4gICAgaW5zcGVjdCgpIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMubGFiZWx9IFske3RoaXMuX2d1aWR9XWA7XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFyZ3M6IFtKU09OLnN0cmluZ2lmeSh0aGlzLmluc3BlY3QoKSldLFxuICAgICAgICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZVxuICAgICAgICB9O1xuICAgIH1cbn0iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL3ZtLmpzIl0sIm5hbWVzIjpbImFkZCIsInZtIiwicHVzaENoaWxkU2NvcGUiLCJwb3BTY29wZSIsInB1c2hEeW5hbWljU2NvcGUiLCJwb3BEeW5hbWljU2NvcGUiLCJvcDEiLCJudW1iZXIiLCJzdGFjayIsInB1c2giLCJvdGhlciIsImNvbnN0YW50cyIsImdldE90aGVyIiwicHJpbWl0aXZlIiwiZmxhZyIsInZhbHVlIiwiY3JlYXRlIiwiZ2V0U3RyaW5nIiwicmVnaXN0ZXIiLCJvcDIiLCJvZmZzZXQiLCJwb3NpdGlvbiIsImZldGNoVmFsdWUiLCJkdXAiLCJjb3VudCIsInBvcCIsImxvYWQiLCJmZXRjaCIsIl9uYW1lcyIsIm5hbWVzIiwiZ2V0QXJyYXkiLCJiaW5kRHluYW1pY1Njb3BlIiwicHVzaEZyYW1lIiwicG9wRnJhbWUiLCJhcmdzIiwiZW50ZXIiLCJleGl0IiwiYmxvY2siLCJjb21waWxlRHluYW1pYyIsImVudiIsIl9ibG9jayIsImdldEJsb2NrIiwiY29tcGlsZWQiLCJjb21waWxlU3RhdGljIiwiY2FsbCIsInN0YXJ0IiwiX2ludm9rZXIiLCJpbnZva2VyIiwiaW52b2tlIiwidGFyZ2V0IiwiZ290byIsInJlZmVyZW5jZSIsImNhY2hlIiwicGVlayIsInVwZGF0ZVdpdGgiLCJBc3NlcnQiLCJyZXR1cm4iLCJDb25zdFRlc3QiLCJyZWYiLCJfZW52IiwiU2ltcGxlVGVzdCIsIkVudmlyb25tZW50VGVzdCIsInRvQ29uZGl0aW9uYWxSZWZlcmVuY2UiLCJfZnVuYyIsIm9wZXJhbmQiLCJmdW5jIiwiZ2V0RnVuY3Rpb24iLCJjb25zdHJ1Y3RvciIsInR5cGUiLCJ0YWciLCJldmFsdWF0ZSIsInJldmFsaWRhdGUiLCJ0aHJvdyIsInRvSlNPTiIsIl9ndWlkIiwiZXhwZWN0ZWQiLCJKU09OIiwic3RyaW5naWZ5IiwiZSIsIlN0cmluZyIsImd1aWQiLCJkZXRhaWxzIiwiSnVtcElmTm90TW9kaWZpZWRPcGNvZGUiLCJsYXN0UmV2aXNpb24iLCJhbHdheXNSZXZhbGlkYXRlIiwidmFsaWRhdGUiLCJkaWRNb2RpZnkiLCJpbnNwZWN0IiwiRGlkTW9kaWZ5T3Bjb2RlIiwiTGFiZWxPcGNvZGUiLCJsYWJlbCIsInByZXYiLCJuZXh0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBR0E7O0FBQ0Esd0JBQWVBLEdBQWYsQ0FBbUIsRUFBbkIsQ0FBc0IsZ0JBQXRCLEVBQXdDQyxNQUFNQSxHQUFHQyxjQUFILEVBQTlDO0FBQ0Esd0JBQWVGLEdBQWYsQ0FBbUIsRUFBbkIsQ0FBc0IsY0FBdEIsRUFBc0NDLE1BQU1BLEdBQUdFLFFBQUgsRUFBNUM7QUFDQSx3QkFBZUgsR0FBZixDQUFtQixFQUFuQixDQUFzQixzQkFBdEIsRUFBOENDLE1BQU1BLEdBQUdHLGdCQUFILEVBQXBEO0FBQ0Esd0JBQWVKLEdBQWYsQ0FBbUIsRUFBbkIsQ0FBc0IscUJBQXRCLEVBQTZDQyxNQUFNQSxHQUFHSSxlQUFILEVBQW5EO0FBQ0Esd0JBQWVMLEdBQWYsQ0FBbUIsRUFBbkIsQ0FBc0IsZUFBdEIsRUFBdUMsQ0FBQ0MsRUFBRCxFQUFLLEVBQUVLLEtBQUtDLE1BQVAsRUFBTCxLQUF5QjtBQUM1RE4sT0FBR08sS0FBSCxDQUFTQyxJQUFULENBQWNGLE1BQWQ7QUFDSCxDQUZEO0FBR0Esd0JBQWVQLEdBQWYsQ0FBbUIsRUFBbkIsQ0FBc0IsY0FBdEIsRUFBc0MsQ0FBQ0MsRUFBRCxFQUFLLEVBQUVLLEtBQUtJLEtBQVAsRUFBTCxLQUF3QjtBQUMxRFQsT0FBR08sS0FBSCxDQUFTQyxJQUFULENBQWNSLEdBQUdVLFNBQUgsQ0FBYUMsUUFBYixDQUFzQkYsS0FBdEIsQ0FBZDtBQUNILENBRkQ7QUFHQSx3QkFBZVYsR0FBZixDQUFtQixFQUFuQixDQUFzQix3QkFBdEIsRUFBZ0QsQ0FBQ0MsRUFBRCxFQUFLLEVBQUVLLEtBQUtPLFNBQVAsRUFBTCxLQUE0QjtBQUN4RSxRQUFJTCxRQUFRUCxHQUFHTyxLQUFmO0FBQ0Es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QUFDREMsZUFBVztBQUNQLGFBQUtyQixNQUFMLENBQVlxQyxTQUFaO0FBQ0g7QUFUK0M7UUFBdkNFLGUsR0FBQUEsZTtBQVdOLE1BQU1DLFdBQU4sQ0FBa0I7QUFDckJ0QixnQkFBWXVCLEtBQVosRUFBbUI7QUFDZixhQUFLckIsR0FBTDtBQUNBLGFBQUtELElBQUwsR0FBWSxPQUFaO0FBQ0EsYUFBS3NCLEtBQUwsR0FBYSxJQUFiO0FBQ0EsYUFBS0MsSUFBTCxHQUFZLElBQVo7QUFDQSxhQUFLQyxJQUFMLEdBQVksSUFBWjtBQUNBLGtDQUFlLElBQWY7QUFDQSxZQUFJRixLQUFKLEVBQVcsS0FBS0EsS0FBTCxHQUFhQSxLQUFiO0FBQ2Q7QUFDRHBCLGVBQVcsQ0FBRTtBQUNiaUIsY0FBVTtBQUNOLGVBQVEsR0FBRSxLQUFLRyxLQUFNLEtBQUksS0FBS2hCLEtBQU0sR0FBcEM7QUFDSDtBQUNERCxhQUFTO0FBQ0wsZUFBTztBQUNITyxrQkFBTSxLQUFLTixLQURSO0FBRUhOLGtCQUFNLEtBQUtBLElBRlI7QUFHSGxDLGtCQUFNLENBQUMwQyxLQUFLQyxTQUFMLENBQWUsS0FBS1UsT0FBTCxFQUFmLENBQUQ7QUFISCxTQUFQO0FBS0g7QUFwQm9CO1FBQVpFLFcsR0FBQUEsVyIsImZpbGUiOiJsaWIvY29tcGlsZWQvb3Bjb2Rlcy92bS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFVwZGF0aW5nT3Bjb2RlIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBDb25zdFJlZmVyZW5jZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBpbml0aWFsaXplR3VpZCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgQ09OU1RBTlRfVEFHLCBSZWZlcmVuY2VDYWNoZSwgaXNDb25zdCwgaXNNb2RpZmllZCB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBBUFBFTkRfT1BDT0RFUyB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IHsgTlVMTF9SRUZFUkVOQ0UsIFVOREVGSU5FRF9SRUZFUkVOQ0UsIFRSVUVfUkVGRVJFTkNFLCBGQUxTRV9SRUZFUkVOQ0UsIFByaW1pdGl2ZVJlZmVyZW5jZSB9IGZyb20gJy4uLy4uL3JlZmVyZW5jZXMnO1xuQVBQRU5EX09QQ09ERVMuYWRkKDIwIC8qIENoaWxkU2NvcGUgKi8sIHZtID0+IHZtLnB1c2hDaGlsZFNjb3BlKCkpO1xuQVBQRU5EX09QQ09ERVMuYWRkKDIxIC8qIFBvcFNjb3BlICovLCB2bSA9PiB2bS5wb3BTY29wZSgpKTtcbkFQUEVORF9PUENPREVTLmFkZCgzOCAvKiBQdXNoRHluYW1pY1Njb3BlICovLCB2bSA9PiB2bS5wdXNoRHluYW1pY1Njb3BlKCkpO1xuQVBQRU5EX09QQ09ERVMuYWRkKDM5IC8qIFBvcER5bmFtaWNTY29wZSAqLywgdm0gPT4gdm0ucG9wRHluYW1pY1Njb3BlKCkpO1xuQVBQRU5EX09QQ09ERVMuYWRkKDEyIC8qIEltbWVkaWF0ZSAqLywgKHZtLCB7IG9wMTogbnVtYmVyIH0pID0+IHtcbiAgICB2bS5zdGFjay5wdXNoKG51bWJlcik7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCgxMyAvKiBDb25zdGFudCAqLywgKHZtLCB7IG9wMTogb3RoZXIgfSkgPT4ge1xuICAgIHZtLnN0YWNrLnB1c2godm0uY29uc3RhbnRzLmdldE90aGVyKG90aGVyKSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCgxNCAvKiBQcmltaXRpdmVSZWZlcmVuY2UgKi8sICh2bSwgeyBvcDE6IHByaW1pdGl2ZSB9KSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IGZsYWcgPSAocHJpbWl0aXZlICYgMyA8PCAzMCkgPj4+IDMwO1xuICAgIGxldCB2YWx1ZSA9IHByaW1pdGl2ZSAmIH4oMyA8PCAzMCk7XG4gICAgc3dpdGNoIChmbGFnKSB7XG4gICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgIHN0YWNrLnB1c2goUHJpbWl0aXZlUmVmZXJlbmNlLmNyZWF0ZSh2YWx1ZSkpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIHN0YWNrLnB1c2goUHJpbWl0aXZlUmVmZXJlbmNlLmNyZWF0ZSh2bS5jb25zdGFudHMuZ2V0U3RyaW5nKHZhbHVlKSkpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIHN3aXRjaCAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgIHN0YWNrLnB1c2goRkFMU0VfUkVGRVJFTkNFKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKFRSVUVfUkVGRVJFTkNFKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKE5VTExfUkVGRVJFTkNFKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKFVOREVGSU5FRF9SRUZFUkVOQ0UpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDE1IC8qIER1cCAqLywgKHZtLCB7IG9wMTogcmVnaXN0ZXIsIG9wMjogb2Zmc2V0IH0pID0+IHtcbiAgICBsZXQgcG9zaXRpb24gPSB2bS5mZXRjaFZhbHVlKHJlZ2lzdGVyKSAtIG9mZnNldDtcbiAgICB2bS5zdGFjay5kdXAocG9zaXRpb24pO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMTYgLyogUG9wICovLCAodm0sIHsgb3AxOiBjb3VudCB9KSA9PiB2bS5zdGFjay5wb3AoY291bnQpKTtcbkFQUEVORF9PUENPREVTLmFkZCgxNyAvKiBMb2FkICovLCAodm0sIHsgb3AxOiByZWdpc3RlciB9KSA9PiB2bS5sb2FkKHJlZ2lzdGVyKSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMTggLyogRmV0Y2ggKi8sICh2bSwgeyBvcDE6IHJlZ2lzdGVyIH0pID0+IHZtLmZldGNoKHJlZ2lzdGVyKSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMzcgLyogQmluZER5bmFtaWNTY29wZSAqLywgKHZtLCB7IG9wMTogX25hbWVzIH0pID0+IHtcbiAgICBsZXQgbmFtZXMgPSB2bS5jb25zdGFudHMuZ2V0QXJyYXkoX25hbWVzKTtcbiAgICB2bS5iaW5kRHluYW1pY1Njb3BlKG5hbWVzKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDQ2IC8qIFB1c2hGcmFtZSAqLywgdm0gPT4gdm0ucHVzaEZyYW1lKCkpO1xuQVBQRU5EX09QQ09ERVMuYWRkKDQ3IC8qIFBvcEZyYW1lICovLCB2bSA9PiB2bS5wb3BGcmFtZSgpKTtcbkFQUEVORF9PUENPREVTLmFkZCg0OCAvKiBFbnRlciAqLywgKHZtLCB7IG9wMTogYXJncyB9KSA9PiB2bS5lbnRlcihhcmdzKSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNDkgLyogRXhpdCAqLywgdm0gPT4gdm0uZXhpdCgpKTtcbkFQUEVORF9PUENPREVTLmFkZCg0MCAvKiBDb21waWxlRHluYW1pY0Jsb2NrICovLCB2bSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IGJsb2NrID0gc3RhY2sucG9wKCk7XG4gICAgc3RhY2sucHVzaChibG9jayA/IGJsb2NrLmNvbXBpbGVEeW5hbWljKHZtLmVudikgOiBudWxsKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDQxIC8qIEludm9rZVN0YXRpYyAqLywgKHZtLCB7IG9wMTogX2Jsb2NrIH0pID0+IHtcbiAgICBsZXQgYmxvY2sgPSB2bS5jb25zdGFudHMuZ2V0QmxvY2soX2Jsb2NrKTtcbiAgICBsZXQgY29tcGlsZWQgPSBibG9jay5jb21waWxlU3RhdGljKHZtLmVudik7XG4gICAgdm0uY2FsbChjb21waWxlZC5zdGFydCk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg0MiAvKiBJbnZva2VEeW5hbWljICovLCAodm0sIHsgb3AxOiBfaW52b2tlciB9KSA9PiB7XG4gICAgbGV0IGludm9rZXIgPSB2bS5jb25zdGFudHMuZ2V0T3RoZXIoX2ludm9rZXIpO1xuICAgIGxldCBibG9jayA9IHZtLnN0YWNrLnBvcCgpO1xuICAgIGludm9rZXIuaW52b2tlKHZtLCBibG9jayk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg0MyAvKiBKdW1wICovLCAodm0sIHsgb3AxOiB0YXJnZXQgfSkgPT4gdm0uZ290byh0YXJnZXQpKTtcbkFQUEVORF9PUENPREVTLmFkZCg0NCAvKiBKdW1wSWYgKi8sICh2bSwgeyBvcDE6IHRhcmdldCB9KSA9PiB7XG4gICAgbGV0IHJlZmVyZW5jZSA9IHZtLnN0YWNrLnBvcCgpO1xuICAgIGlmIChpc0NvbnN0KHJlZmVyZW5jZSkpIHtcbiAgICAgICAgaWYgKHJlZmVyZW5jZS52YWx1ZSgpKSB7XG4gICAgICAgICAgICB2bS5nb3RvKHRhcmdldCk7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgY2FjaGUgPSBuZXcgUmVmZXJlbmNlQ2FjaGUocmVmZXJlbmNlKTtcbiAgICAgICAgaWYgKGNhY2hlLnBlZWsoKSkge1xuICAgICAgICAgICAgdm0uZ290byh0YXJnZXQpO1xuICAgICAgICB9XG4gICAgICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICAgIH1cbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDQ1IC8qIEp1bXBVbmxlc3MgKi8sICh2bSwgeyBvcDE6IHRhcmdldCB9KSA9PiB7XG4gICAgbGV0IHJlZmVyZW5jZSA9IHZtLnN0YWNrLnBvcCgpO1xuICAgIGlmIChpc0NvbnN0KHJlZmVyZW5jZSkpIHtcbiAgICAgICAgaWYgKCFyZWZlcmVuY2UudmFsdWUoKSkge1xuICAgICAgICAgICAgdm0uZ290byh0YXJnZXQpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKHJlZmVyZW5jZSk7XG4gICAgICAgIGlmICghY2FjaGUucGVlaygpKSB7XG4gICAgICAgICAgICB2bS5nb3RvKHRhcmdldCk7XG4gICAgICAgIH1cbiAgICAgICAgdm0udXBkYXRlV2l0aChuZXcgQXNzZXJ0KGNhY2hlKSk7XG4gICAgfVxufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMjIgLyogUmV0dXJuICovLCB2bSA9PiB2bS5yZXR1cm4oKSk7XG5leHBvcnQgY29uc3QgQ29uc3RUZXN0ID0gZnVuY3Rpb24gKHJlZiwgX2Vudikge1xuICAgIHJldHVybiBuZXcgQ29uc3RSZWZlcmVuY2UoISFyZWYudmFsdWUoKSk7XG59O1xuZXhwb3J0IGNvbnN0IFNpbXBsZVRlc3QgPSBmdW5jdGlvbiAocmVmLCBfZW52KSB7XG4gICAgcmV0dXJuIHJlZjtcbn07XG5leHBvcnQgY29uc3QgRW52aXJvbm1lbnRUZXN0ID0gZnVuY3Rpb24gKHJlZiwgZW52KSB7XG4gICAgcmV0dXJuIGVudi50b0NvbmRpdGlvbmFsUmVmZXJlbmNlKHJlZik7XG59O1xuQVBQRU5EX09QQ09ERVMuYWRkKDUwIC8qIFRlc3QgKi8sICh2bSwgeyBvcDE6IF9mdW5jIH0pID0+IHtcbiAgICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgICBsZXQgb3BlcmFuZCA9IHN0YWNrLnBvcCgpO1xuICAgIGxldCBmdW5jID0gdm0uY29uc3RhbnRzLmdldEZ1bmN0aW9uKF9mdW5jKTtcbiAgICBzdGFjay5wdXNoKGZ1bmMob3BlcmFuZCwgdm0uZW52KSk7XG59KTtcbmV4cG9ydCBjbGFzcyBBc3NlcnQgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gICAgY29uc3RydWN0b3IoY2FjaGUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy50eXBlID0gXCJhc3NlcnRcIjtcbiAgICAgICAgdGhpcy50YWcgPSBjYWNoZS50YWc7XG4gICAgICAgIHRoaXMuY2FjaGUgPSBjYWNoZTtcbiAgICB9XG4gICAgZXZhbHVhdGUodm0pIHtcbiAgICAgICAgbGV0IHsgY2FjaGUgfSA9IHRoaXM7XG4gICAgICAgIGlmIChpc01vZGlmaWVkKGNhY2hlLnJldmFsaWRhdGUoKSkpIHtcbiAgICAgICAgICAgIHZtLnRocm93KCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICBsZXQgeyB0eXBlLCBfZ3VpZCwgY2FjaGUgfSA9IHRoaXM7XG4gICAgICAgIGxldCBleHBlY3RlZDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGV4cGVjdGVkID0gSlNPTi5zdHJpbmdpZnkoY2FjaGUucGVlaygpKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgZXhwZWN0ZWQgPSBTdHJpbmcoY2FjaGUucGVlaygpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ3VpZDogX2d1aWQsXG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgYXJnczogW10sXG4gICAgICAgICAgICBkZXRhaWxzOiB7IGV4cGVjdGVkIH1cbiAgICAgICAgfTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgSnVtcElmTm90TW9kaWZpZWRPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gICAgY29uc3RydWN0b3IodGFnLCB0YXJnZXQpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy50YXJnZXQgPSB0YXJnZXQ7XG4gICAgICAgIHRoaXMudHlwZSA9IFwianVtcC1pZi1ub3QtbW9kaWZpZWRcIjtcbiAgICAgICAgdGhpcy50YWcgPSB0YWc7XG4gICAgICAgIHRoaXMubGFzdFJldmlzaW9uID0gdGFnLnZhbHVlKCk7XG4gICAgfVxuICAgIGV2YWx1YXRlKHZtKSB7XG4gICAgICAgIGxldCB7IHRhZywgdGFyZ2V0LCBsYXN0UmV2aXNpb24gfSA9IHRoaXM7XG4gICAgICAgIGlmICghdm0uYWx3YXlzUmV2YWxpZGF0ZSAmJiB0YWcudmFsaWRhdGUobGFzdFJldmlzaW9uKSkge1xuICAgICAgICAgICAgdm0uZ290byh0YXJnZXQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGRpZE1vZGlmeSgpIHtcbiAgICAgICAgdGhpcy5sYXN0UmV2aXNpb24gPSB0aGlzLnRhZy52YWx1ZSgpO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgICAgICAgYXJnczogW0pTT04uc3RyaW5naWZ5KHRoaXMudGFyZ2V0Lmluc3BlY3QoKSldXG4gICAgICAgIH07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIERpZE1vZGlmeU9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3Rvcih0YXJnZXQpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy50YXJnZXQgPSB0YXJnZXQ7XG4gICAgICAgIHRoaXMudHlwZSA9IFwiZGlkLW1vZGlmeVwiO1xuICAgICAgICB0aGlzLnRhZyA9IENPTlNUQU5UX1RBRztcbiAgICB9XG4gICAgZXZhbHVhdGUoKSB7XG4gICAgICAgIHRoaXMudGFyZ2V0LmRpZE1vZGlmeSgpO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBMYWJlbE9wY29kZSB7XG4gICAgY29uc3RydWN0b3IobGFiZWwpIHtcbiAgICAgICAgdGhpcy50YWcgPSBDT05TVEFOVF9UQUc7XG4gICAgICAgIHRoaXMudHlwZSA9IFwibGFiZWxcIjtcbiAgICAgICAgdGhpcy5sYWJlbCA9IG51bGw7XG4gICAgICAgIHRoaXMucHJldiA9IG51bGw7XG4gICAgICAgIHRoaXMubmV4dCA9IG51bGw7XG4gICAgICAgIGluaXRpYWxpemVHdWlkKHRoaXMpO1xuICAgICAgICBpZiAobGFiZWwpIHRoaXMubGFiZWwgPSBsYWJlbDtcbiAgICB9XG4gICAgZXZhbHVhdGUoKSB7fVxuICAgIGluc3BlY3QoKSB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLmxhYmVsfSBbJHt0aGlzLl9ndWlkfV1gO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgICAgICAgYXJnczogW0pTT04uc3RyaW5naWZ5KHRoaXMuaW5zcGVjdCgpKV1cbiAgICAgICAgfTtcbiAgICB9XG59Il19

@@ -16,8 +16,6 @@ 'use strict';

var _scanner = require('./scanner');
var _functions = require('./syntax/functions');
var _clientSide = require('./syntax/client-side');
var ClientSide = _interopRequireWildcard(_clientSide);
var _builder = require('./compiled/opcodes/builder');

@@ -29,4 +27,2 @@

function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
function compileLayout(compilable, env) {

@@ -44,4 +40,4 @@ let builder = new ComponentLayoutBuilder(env);

}
fromLayout(componentName, layout) {
this.inner = new UnwrappedBuilder(this.env, componentName, layout);
fromLayout(layout) {
this.inner = new UnwrappedBuilder(this.env, layout);
}

@@ -115,5 +111,5 @@ compile() {

b.didCreateElement(_opcodes.Register.s0);
let attrs = this.attrs.buffer;
let attrs = this.attrs['buffer'];
for (let i = 0; i < attrs.length; i++) {
(0, _functions.compileStatement)(attrs[i], b);
(0, _scanner.compileStatement)(attrs[i], b);
}

@@ -144,3 +140,3 @@ b.flushElement();

hasEval: layout.hasEval,
symbols: layout.symbols.concat([_functions.ATTRS_BLOCK])
symbols: layout.symbols.concat([_scanner.ATTRS_BLOCK])
});

@@ -150,5 +146,4 @@ }

class UnwrappedBuilder {
constructor(env, componentName, layout) {
constructor(env, layout) {
this.env = env;
this.componentName = componentName;
this.layout = layout;

@@ -162,3 +157,3 @@ this.attrs = new ComponentAttrsBuilder();

let { env, layout } = this;
return layout.asLayout(this.componentName, this.attrs.buffer).compileDynamic(env);
return layout.asLayout(this.attrs['buffer']).compileDynamic(env);
}

@@ -189,3 +184,3 @@ }

this.isDynamic = true;
this.dynamicTagName = [_wireFormat.Ops.ClientSideExpression, ClientSide.Ops.FunctionExpression, tagName];
this.dynamicTagName = [_wireFormat.Ops.ClientSideExpression, _scanner.ClientSide.Ops.FunctionExpression, tagName];
}

@@ -201,3 +196,3 @@ }

dynamic(name, value) {
this.buffer.push([_wireFormat.Ops.DynamicAttr, name, [_wireFormat.Ops.ClientSideExpression, ClientSide.Ops.FunctionExpression, value], null]);
this.buffer.push([_wireFormat.Ops.DynamicAttr, name, [_wireFormat.Ops.ClientSideExpression, _scanner.ClientSide.Ops.FunctionExpression, value], null]);
}

@@ -223,4 +218,4 @@ }

let meta = this.builder.meta.templateMeta;
function helper(vm, a) {
return getDefinition(vm, a, meta);
function helper(vm, args) {
return getDefinition(vm, args, meta);
}

@@ -250,2 +245,2 @@ builder.startLabels();

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlci5qcyJdLCJuYW1lcyI6WyJjb21waWxlTGF5b3V0IiwiYnVpbGRlciIsIkNsaWVudFNpZGUiLCJjb21waWxhYmxlIiwiZW52IiwiQ29tcG9uZW50TGF5b3V0QnVpbGRlciIsImNvbXBpbGUiLCJjb25zdHJ1Y3RvciIsIndyYXBMYXlvdXQiLCJsYXlvdXQiLCJpbm5lciIsIldyYXBwZWRCdWlsZGVyIiwiZnJvbUxheW91dCIsImNvbXBvbmVudE5hbWUiLCJVbndyYXBwZWRCdWlsZGVyIiwidGFnIiwiYXR0cnMiLCJDb21wb25lbnRUYWdCdWlsZGVyIiwiQ29tcG9uZW50QXR0cnNCdWlsZGVyIiwibWV0YSIsInRlbXBsYXRlTWV0YSIsInN5bWJvbHMiLCJhc1BhcnRpYWwiLCJkeW5hbWljVGFnIiwiZ2V0RHluYW1pYyIsInN0YXRpY1RhZyIsImdldFN0YXRpYyIsImIiLCJzdGFydExhYmVscyIsImZldGNoIiwiczEiLCJkdXAiLCJsb2FkIiwidGVzdCIsImp1bXBVbmxlc3MiLCJwdXNoQ29tcG9uZW50T3BlcmF0aW9ucyIsIm9wZW5EeW5hbWljRWxlbWVudCIsIm9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMiLCJkaWRDcmVhdGVFbGVtZW50IiwiczAiLCJidWZmZXIiLCJpIiwibGVuZ3RoIiwiZmx1c2hFbGVtZW50IiwibGFiZWwiLCJpbnZva2VTdGF0aWMiLCJhc0Jsb2NrIiwiY2xvc2VFbGVtZW50IiwiZGlkUmVuZGVyTGF5b3V0Iiwic3RvcExhYmVscyIsInN0YXJ0IiwiZW5kIiwiZmluYWxpemUiLCJoYXNFdmFsIiwiY29uY2F0IiwiRXJyb3IiLCJhc0xheW91dCIsImNvbXBpbGVEeW5hbWljIiwiaXNEeW5hbWljIiwiaXNTdGF0aWMiLCJzdGF0aWNUYWdOYW1lIiwiZHluYW1pY1RhZ05hbWUiLCJzdGF0aWMiLCJ0YWdOYW1lIiwiZHluYW1pYyIsIkNsaWVudFNpZGVFeHByZXNzaW9uIiwiT3BzIiwiRnVuY3Rpb25FeHByZXNzaW9uIiwibmFtZSIsInZhbHVlIiwicHVzaCIsIlN0YXRpY0F0dHIiLCJEeW5hbWljQXR0ciIsIkNvbXBvbmVudEJ1aWxkZXIiLCJkZWZpbml0aW9uIiwiYXJncyIsInBhcmFtcyIsImhhc2giLCJfZGVmYXVsdCIsImludmVyc2UiLCJwdXNoQ29tcG9uZW50TWFuYWdlciIsImludm9rZUNvbXBvbmVudCIsImRlZmluaXRpb25BcmdzIiwiZ2V0RGVmaW5pdGlvbiIsImJsb2NrIiwiaGVscGVyIiwidm0iLCJhIiwicHVzaEZyYW1lIiwicmV0dXJuVG8iLCJjb21waWxlQXJncyIsImVudGVyIiwicHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyIiwiZXhpdCIsInJldHVybiIsInBvcEZyYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7UUFPZ0JBLGEsR0FBQUEsYTtRQThNQUMsTyxHQUFBQSxPOztBQXJOaEI7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0lBQVlDLFU7O0FBRVo7Ozs7Ozs7O0FBQ08sU0FBU0YsYUFBVCxDQUF1QkcsVUFBdkIsRUFBbUNDLEdBQW5DLEVBQXdDO0FBQzNDLFFBQUlILFVBQVUsSUFBSUksc0JBQUosQ0FBMkJELEdBQTNCLENBQWQ7QUFDQUQsZUFBV0csT0FBWCxDQUFtQkwsT0FBbkI7QUFDQSxXQUFPQSxRQUFRSyxPQUFSLEVBQVA7QUFDSDtBQUNELE1BQU1ELHNCQUFOLENBQTZCO0FBQ3pCRSxnQkFBWUgsR0FBWixFQUFpQjtBQUNiLGFBQUtBLEdBQUwsR0FBV0EsR0FBWDtBQUNIO0FBQ0RJLGVBQVdDLE1BQVgsRUFBbUI7QUFDZixhQUFLQyxLQUFMLEdBQWEsSUFBSUMsY0FBSixDQUFtQixLQUFLUCxHQUF4QixFQUE2QkssTUFBN0IsQ0FBYjtBQUNIO0FBQ0RHLGVBQVdDLGFBQVgsRUFBMEJKLE1BQTFCLEVBQWtDO0FBQzlCLGFBQUtDLEtBQUwsR0FBYSxJQUFJSSxnQkFBSixDQUFxQixLQUFLVixHQUExQixFQUErQlMsYUFBL0IsRUFBOENKLE1BQTlDLENBQWI7QUFDSDtBQUNESCxj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UixDQUFhLFFBQWI7QUFDQWhDLGdCQUFRMEYsS0FBUixDQUFjLENBQWQ7QUFDQTFGLGdCQUFRaUMsVUFBUixDQUFtQixNQUFuQjtBQUNBakMsZ0JBQVEyRiwyQkFBUjtBQUNBM0YsZ0JBQVFnRixlQUFSLENBQXdCLElBQXhCLEVBQThCTCxNQUE5QixFQUFzQ0MsSUFBdEMsRUFBNENPLEtBQTVDLEVBQW1ETCxPQUFuRDtBQUNBOUUsZ0JBQVEyQyxLQUFSLENBQWMsTUFBZDtBQUNBM0MsZ0JBQVE0RixJQUFSO0FBQ0E1RixnQkFBUTZGLE1BQVI7QUFDQTdGLGdCQUFRMkMsS0FBUixDQUFjLEtBQWQ7QUFDQTNDLGdCQUFROEYsUUFBUjtBQUNBOUYsZ0JBQVFnRCxVQUFSO0FBQ0g7QUF0Q3lCO1FBQWpCd0IsZ0IsR0FBQUEsZ0I7QUF3Q04sU0FBU3hFLE9BQVQsQ0FBaUJHLEdBQWpCLEVBQXNCZSxJQUF0QixFQUE0QjtBQUMvQixXQUFPLHNCQUFxQmYsR0FBckIsRUFBMEJlLElBQTFCLENBQVA7QUFDSCIsImZpbGUiOiJsaWIvY29tcGlsZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21waWxlZER5bmFtaWNUZW1wbGF0ZSB9IGZyb20gJy4vY29tcGlsZWQvYmxvY2tzJztcbmltcG9ydCB7IE9wcyB9IGZyb20gJ0BnbGltbWVyL3dpcmUtZm9ybWF0JztcbmltcG9ydCB7IFJlZ2lzdGVyLCBkZWJ1Z1NsaWNlIH0gZnJvbSAnLi9vcGNvZGVzJztcbmltcG9ydCB7IEFUVFJTX0JMT0NLLCBjb21waWxlU3RhdGVtZW50IH0gZnJvbSAnLi9zeW50YXgvZnVuY3Rpb25zJztcbmltcG9ydCAqIGFzIENsaWVudFNpZGUgZnJvbSAnLi9zeW50YXgvY2xpZW50LXNpZGUnO1xuaW1wb3J0IHsgZXhwciB9IGZyb20gJy4vc3ludGF4L2Z1bmN0aW9ucyc7XG5pbXBvcnQgT3Bjb2RlQnVpbGRlckRTTCBmcm9tICcuL2NvbXBpbGVkL29wY29kZXMvYnVpbGRlcic7XG5leHBvcnQgZnVuY3Rpb24gY29tcGlsZUxheW91dChjb21waWxhYmxlLCBlbnYpIHtcbiAgICBsZXQgYnVpbGRlciA9IG5ldyBDb21wb25lbnRMYXlvdXRCdWlsZGVyKGVudik7XG4gICAgY29tcGlsYWJsZS5jb21waWxlKGJ1aWxkZXIpO1xuICAgIHJldHVybiBidWlsZGVyLmNvbXBpbGUoKTtcbn1cbmNsYXNzIENvbXBvbmVudExheW91dEJ1aWxkZXIge1xuICAgIGNvbnN0cnVjdG9yKGVudikge1xuICAgICAgICB0aGlzLmVudiA9IGVudjtcbiAgICB9XG4gICAgd3JhcExheW91dChsYXlvdXQpIHtcbiAgICAgICAgdGhpcy5pbm5lciA9IG5ldyBXcmFwcGVkQnVpbGRlcih0aGlzLmVudiwgbGF5b3V0KTtcbiAgICB9XG4gICAgZnJvbUxheW91dChjb21wb25lbnROYW1lLCBsYXlvdXQpIHtcbiAgICAgICAgdGhpcy5pbm5lciA9IG5ldyBVbndyYXBwZWRCdWlsZGVyKHRoaXMuZW52LCBjb21wb25lbnROYW1lLCBsYXlvdXQpO1xuICAgIH1cbiAgICBjb21waWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pbm5lci5jb21waWxlKCk7XG4gICAgfVxuICAgIGdldCB0YWcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlubmVyLnRhZztcbiAgICB9XG4gICAgZ2V0IGF0dHJzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pbm5lci5hdHRycztcbiAgICB9XG59XG5jbGFzcyBXcmFwcGVkQnVpbGRlciB7XG4gICAgY29uc3RydWN0b3IoZW52LCBsYXlvdXQpIHtcbiAgICAgICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgICAgIHRoaXMubGF5b3V0ID0gbGF5b3V0O1xuICAgICAgICB0aGlzLnRhZyA9IG5ldyBDb21wb25lbnRUYWdCdWlsZGVyKCk7XG4gICAgICAgIHRoaXMuYXR0cnMgPSBuZXcgQ29tcG9uZW50QXR0cnNCdWlsZGVyKCk7XG4gICAgfVxuICAgIGNvbXBpbGUoKSB7XG4gICAgICAgIC8vPT09PT09PT1EWU5BTUlDXG4gICAgICAgIC8vICAgICAgICBQdXRWYWx1ZShUYWdFeHByKVxuICAgICAgICAvLyAgICAgICAgVGVzdFxuICAgICAgICAvLyAgICAgICAgSnVtcFVubGVzcyhCT0RZKVxuICAgICAgICAvLyAgICAgICAgT3BlbkR5bmFtaWNQcmltaXRpdmVFbGVtZW50XG4gICAgICAgIC8vICAgICAgICBEaWRDcmVhdGVFbGVtZW50XG4gICAgICAgIC8vICAgICAgICAuLi5hdHRyIHN0YXRlbWVudHMuLi5cbiAgICAgICAgLy8gICAgICAgIEZsdXNoRWxlbWVudFxuICAgICAgICAvLyBCT0RZOiAgTm9vcFxuICAgICAgICAvLyAgICAgICAgLi4uYm9keSBzdGF0ZW1lbnRzLi4uXG4gICAgICAgIC8vICAgICAgICBQdXRWYWx1ZShUYWdFeHByKVxuICAgICAgICAvLyAgICAgICAgVGVzdFxuICAgICAgICAvLyAgICAgICAgSnVtcFVubGVzcyhFTkQpXG4gICAgICAgIC8vICAgICAgICBDbG9zZUVsZW1lbnRcbiAgICAgICAgLy8gRU5EOiAgIE5vb3BcbiAgICAgICAgLy8gICAgICAgIERpZFJlbmRlckxheW91dFxuICAgICAgICAvLyAgICAgICAgRXhpdFxuICAgICAgICAvL1xuICAgICAgICAvLz09PT09PT09U1RBVElDXG4gICAgICAgIC8vICAgICAgICBPcGVuUHJpbWl0aXZlRWxlbWVudE9wY29kZVxuICAgICAgICAvLyAgICAgICAgRGlkQ3JlYXRlRWxlbWVudFxuICAgICAgICAvLyAgICAgICAgLi4uYXR0ciBzdGF0ZW1lbnRzLi4uXG4gICAgICAgIC8vICAgICAgICBGbHVzaEVsZW1lbnRcbiAgICAgICAgLy8gICAgICAgIC4uLmJvZHkgc3RhdGVtZW50cy4uLlxuICAgICAgICAvLyAgICAgICAgQ2xvc2VFbGVtZW50XG4gICAgICAgIC8vICAgICAgICBEaWRSZW5kZXJMYXlvdXRcbiAgICAgICAgLy8gICAgICAgIEV4aXRcbiAgICAgICAgbGV0IHsgZW52LCBsYXlvdXQgfSA9IHRoaXM7XG4gICAgICAgIGxldCBtZXRhID0geyB0ZW1wbGF0ZU1ldGE6IGxheW91dC5tZXRhLCBzeW1ib2xzOiBsYXlvdXQuc3ltYm9scywgYXNQYXJ0aWFsOiBmYWxzZSB9O1xuICAgICAgICBsZXQgZHluYW1pY1RhZyA9IHRoaXMudGFnLmdldER5bmFtaWMoKTtcbiAgICAgICAgbGV0IHN0YXRpY1RhZyA9IHRoaXMudGFnLmdldFN0YXRpYygpO1xuICAgICAgICBsZXQgYiA9IGJ1aWxkZXIoZW52LCBtZXRhKTtcbiAgICAgICAgYi5zdGFydExhYmVscygpO1xuICAgICAgICBpZiAoZHluYW1pY1RhZykge1xuICAgICAgICAgICAgYi5mZXRjaChSZWdpc3Rlci5zMSk7XG4gICAgICAgICAgICBleHByKGR5bmFtaWNUYWcsIGIpO1xuICAgICAgICAgICAgYi5kdXAoKTtcbiAgICAgICAgICAgIGIubG9hZChSZWdpc3Rlci5zMSk7XG4gICAgICAgICAgICBiLnRlc3QoJ3NpbXBsZScpO1xuICAgICAgICAgICAgYi5qdW1wVW5sZXNzKCdCT0RZJyk7XG4gICAgICAgICAgICBiLmZldGNoKFJlZ2lzdGVyLnMxKTtcbiAgICAgICAgICAgIGIucHVzaENvbXBvbmVudE9wZXJhdGlvbnMoKTtcbiAgICAgICAgICAgIGIub3BlbkR5bmFtaWNFbGVtZW50KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoc3RhdGljVGFnKSB7XG4gICAgICAgICAgICBiLnB1c2hDb21wb25lbnRPcGVyYXRpb25zKCk7XG4gICAgICAgICAgICBiLm9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMoc3RhdGljVGFnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZHluYW1pY1RhZyB8fCBzdGF0aWNUYWcpIHtcbiAgICAgICAgICAgIGIuZGlkQ3JlYXRlRWxlbWVudChSZWdpc3Rlci5zMCk7XG4gICAgICAgICAgICBsZXQgYXR0cnMgPSB0aGlzLmF0dHJzLmJ1ZmZlcjtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXR0cnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb21waWxlU3RhdGVtZW50KGF0dHJzW2ldLCBiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGIuZmx1c2hFbGVtZW50KCk7XG4gICAgICAgIH1cbiAgICAgICAgYi5sYWJlbCgnQk9EWScpO1xuICAgICAgICBiLmludm9rZVN0YXRpYyhsYXlvdXQuYXNCbG9jaygpKTtcbiAgICAgICAgaWYgKGR5bmFtaWNUYWcpIHtcbiAgICAgICAgICAgIGIuZmV0Y2goUmVnaXN0ZXIuczEpO1xuICAgICAgICAgICAgYi50ZXN0KCdzaW1wbGUnKTtcbiAgICAgICAgICAgIGIuanVtcFVubGVzcygnRU5EJyk7XG4gICAgICAgICAgICBiLmNsb3NlRWxlbWVudCgpO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YXRpY1RhZykge1xuICAgICAgICAgICAgYi5jbG9zZUVsZW1lbnQoKTtcbiAgICAgICAgfVxuICAgICAgICBiLmxhYmVsKCdFTkQnKTtcbiAgICAgICAgYi5kaWRSZW5kZXJMYXlvdXQoUmVnaXN0ZXIuczApO1xuICAgICAgICBpZiAoZHluYW1pY1RhZykge1xuICAgICAgICAgICAgYi5sb2FkKFJlZ2lzdGVyLnMxKTtcbiAgICAgICAgfVxuICAgICAgICBiLnN0b3BMYWJlbHMoKTtcbiAgICAgICAgbGV0IHN0YXJ0ID0gYi5zdGFydDtcbiAgICAgICAgbGV0IGVuZCA9IGIuZmluYWxpemUoKTtcbiAgICAgICAgZGVidWdTbGljZShlbnYsIHN0YXJ0LCBlbmQpO1xuICAgICAgICByZXR1cm4gbmV3IENvbXBpbGVkRHluYW1pY1RlbXBsYXRlKHN0YXJ0LCBlbmQsIHtcbiAgICAgICAgICAgIG1ldGEsXG4gICAgICAgICAgICBoYXNFdmFsOiBsYXlvdXQuaGFzRXZhbCxcbiAgICAgICAgICAgIHN5bWJvbHM6IGxheW91dC5zeW1ib2xzLmNvbmNhdChbQVRUUlNfQkxPQ0tdKVxuICAgICAgICB9KTtcbiAgICB9XG59XG5jbGFzcyBVbndyYXBwZWRCdWlsZGVyIHtcbiAgICBjb25zdHJ1Y3RvcihlbnYsIGNvbXBvbmVudE5hbWUsIGxheW91dCkge1xuICAgICAgICB0aGlzLmVudiA9IGVudjtcbiAgICAgICAgdGhpcy5jb21wb25lbnROYW1lID0gY29tcG9uZW50TmFtZTtcbiAgICAgICAgdGhpcy5sYXlvdXQgPSBsYXlvdXQ7XG4gICAgICAgIHRoaXMuYXR0cnMgPSBuZXcgQ29tcG9uZW50QXR0cnNCdWlsZGVyKCk7XG4gICAgfVxuICAgIGdldCB0YWcoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQlVHOiBDYW5ub3QgY2FsbCBgdGFnYCBvbiBhbiBVbndyYXBwZWRCdWlsZGVyJyk7XG4gICAgfVxuICAgIGNvbXBpbGUoKSB7XG4gICAgICAgIGxldCB7IGVudiwgbGF5b3V0IH0gPSB0aGlzO1xuICAgICAgICByZXR1cm4gbGF5b3V0LmFzTGF5b3V0KHRoaXMuY29tcG9uZW50TmFtZSwgdGhpcy5hdHRycy5idWZmZXIpLmNvbXBpbGVEeW5hbWljKGVudik7XG4gICAgfVxufVxuY2xhc3MgQ29tcG9uZW50VGFnQnVpbGRlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuaXNEeW5hbWljID0gbnVsbDtcbiAgICAgICAgdGhpcy5pc1N0YXRpYyA9IG51bGw7XG4gICAgICAgIHRoaXMuc3RhdGljVGFnTmFtZSA9IG51bGw7XG4gICAgICAgIHRoaXMuZHluYW1pY1RhZ05hbWUgPSBudWxsO1xuICAgIH1cbiAgICBnZXREeW5hbWljKCkge1xuICAgICAgICBpZiAodGhpcy5pc0R5bmFtaWMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmR5bmFtaWNUYWdOYW1lO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldFN0YXRpYygpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNTdGF0aWMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0YXRpY1RhZ05hbWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc3RhdGljKHRhZ05hbWUpIHtcbiAgICAgICAgdGhpcy5pc1N0YXRpYyA9IHRydWU7XG4gICAgICAgIHRoaXMuc3RhdGljVGFnTmFtZSA9IHRhZ05hbWU7XG4gICAgfVxuICAgIGR5bmFtaWModGFnTmFtZSkge1xuICAgICAgICB0aGlzLmlzRHluYW1pYyA9IHRydWU7XG4gICAgICAgIHRoaXMuZHluYW1pY1RhZ05hbWUgPSBbT3BzLkNsaWVudFNpZGVFeHByZXNzaW9uLCBDbGllbnRTaWRlLk9wcy5GdW5jdGlvbkV4cHJlc3Npb24sIHRhZ05hbWVdO1xuICAgIH1cbn1cbmNsYXNzIENvbXBvbmVudEF0dHJzQnVpbGRlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuYnVmZmVyID0gW107XG4gICAgfVxuICAgIHN0YXRpYyhuYW1lLCB2YWx1ZSkge1xuICAgICAgICB0aGlzLmJ1ZmZlci5wdXNoKFtPcHMuU3RhdGljQXR0ciwgbmFtZSwgdmFsdWUsIG51bGxdKTtcbiAgICB9XG4gICAgZHluYW1pYyhuYW1lLCB2YWx1ZSkge1xuICAgICAgICB0aGlzLmJ1ZmZlci5wdXNoKFtPcHMuRHluYW1pY0F0dHIsIG5hbWUsIFtPcHMuQ2xpZW50U2lkZUV4cHJlc3Npb24sIENsaWVudFNpZGUuT3BzLkZ1bmN0aW9uRXhwcmVzc2lvbiwgdmFsdWVdLCBudWxsXSk7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIENvbXBvbmVudEJ1aWxkZXIge1xuICAgIGNvbnN0cnVjdG9yKGJ1aWxkZXIpIHtcbiAgICAgICAgdGhpcy5idWlsZGVyID0gYnVpbGRlcjtcbiAgICAgICAgdGhpcy5lbnYgPSBidWlsZGVyLmVudjtcbiAgICB9XG4gICAgc3RhdGljKGRlZmluaXRpb24sIGFyZ3MpIHtcbiAgICAgICAgbGV0IFtwYXJhbXMsIGhhc2gsIF9kZWZhdWx0LCBpbnZlcnNlXSA9IGFyZ3M7XG4gICAgICAgIGxldCB7IGJ1aWxkZXIgfSA9IHRoaXM7XG4gICAgICAgIGJ1aWxkZXIucHVzaENvbXBvbmVudE1hbmFnZXIoZGVmaW5pdGlvbik7XG4gICAgICAgIGJ1aWxkZXIuaW52b2tlQ29tcG9uZW50KG51bGwsIHBhcmFtcywgaGFzaCwgX2RlZmF1bHQsIGludmVyc2UpO1xuICAgIH1cbiAgICBkeW5hbWljKGRlZmluaXRpb25BcmdzLCBnZXREZWZpbml0aW9uLCBhcmdzKSB7XG4gICAgICAgIGxldCBbcGFyYW1zLCBoYXNoLCBibG9jaywgaW52ZXJzZV0gPSBhcmdzO1xuICAgICAgICBsZXQgeyBidWlsZGVyIH0gPSB0aGlzO1xuICAgICAgICBpZiAoIWRlZmluaXRpb25BcmdzIHx8IGRlZmluaXRpb25BcmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRHluYW1pYyBzeW50YXggd2l0aG91dCBhbiBhcmd1bWVudFwiKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbWV0YSA9IHRoaXMuYnVpbGRlci5tZXRhLnRlbXBsYXRlTWV0YTtcbiAgICAgICAgZnVuY3Rpb24gaGVscGVyKHZtLCBhKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0RGVmaW5pdGlvbih2bSwgYSwgbWV0YSk7XG4gICAgICAgIH1cbiAgICAgICAgYnVpbGRlci5zdGFydExhYmVscygpO1xuICAgICAgICBidWlsZGVyLnB1c2hGcmFtZSgpO1xuICAgICAgICBidWlsZGVyLnJldHVyblRvKCdFTkQnKTtcbiAgICAgICAgYnVpbGRlci5jb21waWxlQXJncyhkZWZpbml0aW9uQXJnc1swXSwgZGVmaW5pdGlvbkFyZ3NbMV0sIHRydWUpO1xuICAgICAgICBidWlsZGVyLmhlbHBlcihoZWxwZXIpO1xuICAgICAgICBidWlsZGVyLmR1cCgpO1xuICAgICAgICBidWlsZGVyLnRlc3QoJ3NpbXBsZScpO1xuICAgICAgICBidWlsZGVyLmVudGVyKDIpO1xuICAgICAgICBidWlsZGVyLmp1bXBVbmxlc3MoJ0VMU0UnKTtcbiAgICAgICAgYnVpbGRlci5wdXNoRHluYW1pY0NvbXBvbmVudE1hbmFnZXIoKTtcbiAgICAgICAgYnVpbGRlci5pbnZva2VDb21wb25lbnQobnVsbCwgcGFyYW1zLCBoYXNoLCBibG9jaywgaW52ZXJzZSk7XG4gICAgICAgIGJ1aWxkZXIubGFiZWwoJ0VMU0UnKTtcbiAgICAgICAgYnVpbGRlci5leGl0KCk7XG4gICAgICAgIGJ1aWxkZXIucmV0dXJuKCk7XG4gICAgICAgIGJ1aWxkZXIubGFiZWwoJ0VORCcpO1xuICAgICAgICBidWlsZGVyLnBvcEZyYW1lKCk7XG4gICAgICAgIGJ1aWxkZXIuc3RvcExhYmVscygpO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBidWlsZGVyKGVudiwgbWV0YSkge1xuICAgIHJldHVybiBuZXcgT3Bjb2RlQnVpbGRlckRTTChlbnYsIG1ldGEpO1xufSJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlci5qcyJdLCJuYW1lcyI6WyJjb21waWxlTGF5b3V0IiwiYnVpbGRlciIsImNvbXBpbGFibGUiLCJlbnYiLCJDb21wb25lbnRMYXlvdXRCdWlsZGVyIiwiY29tcGlsZSIsImNvbnN0cnVjdG9yIiwid3JhcExheW91dCIsImxheW91dCIsImlubmVyIiwiV3JhcHBlZEJ1aWxkZXIiLCJmcm9tTGF5b3V0IiwiVW53cmFwcGVkQnVpbGRlciIsInRhZyIsImF0dHJzIiwiQ29tcG9uZW50VGFnQnVpbGRlciIsIkNvbXBvbmVudEF0dHJzQnVpbGRlciIsIm1ldGEiLCJ0ZW1wbGF0ZU1ldGEiLCJzeW1ib2xzIiwiYXNQYXJ0aWFsIiwiZHluYW1pY1RhZyIsImdldER5bmFtaWMiLCJzdGF0aWNUYWciLCJnZXRTdGF0aWMiLCJiIiwic3RhcnRMYWJlbHMiLCJmZXRjaCIsInMxIiwiZHVwIiwibG9hZCIsInRlc3QiLCJqdW1wVW5sZXNzIiwicHVzaENvbXBvbmVudE9wZXJhdGlvbnMiLCJvcGVuRHluYW1pY0VsZW1lbnQiLCJvcGVuRWxlbWVudFdpdGhPcGVyYXRpb25zIiwiZGlkQ3JlYXRlRWxlbWVudCIsInMwIiwiaSIsImxlbmd0aCIsImZsdXNoRWxlbWVudCIsImxhYmVsIiwiaW52b2tlU3RhdGljIiwiYXNCbG9jayIsImNsb3NlRWxlbWVudCIsImRpZFJlbmRlckxheW91dCIsInN0b3BMYWJlbHMiLCJzdGFydCIsImVuZCIsImZpbmFsaXplIiwiaGFzRXZhbCIsImNvbmNhdCIsIkVycm9yIiwiYXNMYXlvdXQiLCJjb21waWxlRHluYW1pYyIsImlzRHluYW1pYyIsImlzU3RhdGljIiwic3RhdGljVGFnTmFtZSIsImR5bmFtaWNUYWdOYW1lIiwic3RhdGljIiwidGFnTmFtZSIsImR5bmFtaWMiLCJDbGllbnRTaWRlRXhwcmVzc2lvbiIsIk9wcyIsIkZ1bmN0aW9uRXhwcmVzc2lvbiIsImJ1ZmZlciIsIm5hbWUiLCJ2YWx1ZSIsInB1c2giLCJTdGF0aWNBdHRyIiwiRHluYW1pY0F0dHIiLCJDb21wb25lbnRCdWlsZGVyIiwiZGVmaW5pdGlvbiIsImFyZ3MiLCJwYXJhbXMiLCJoYXNoIiwiX2RlZmF1bHQiLCJpbnZlcnNlIiwicHVzaENvbXBvbmVudE1hbmFnZXIiLCJpbnZva2VDb21wb25lbnQiLCJkZWZpbml0aW9uQXJncyIsImdldERlZmluaXRpb24iLCJibG9jayIsImhlbHBlciIsInZtIiwicHVzaEZyYW1lIiwicmV0dXJuVG8iLCJjb21waWxlQXJncyIsImVudGVyIiwicHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyIiwiZXhpdCIsInJldHVybiIsInBvcEZyYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7UUFNZ0JBLGEsR0FBQUEsYTtRQTZNQUMsTyxHQUFBQSxPOztBQW5OaEI7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7OztBQUNPLFNBQVNELGFBQVQsQ0FBdUJFLFVBQXZCLEVBQW1DQyxHQUFuQyxFQUF3QztBQUMzQyxRQUFJRixVQUFVLElBQUlHLHNCQUFKLENBQTJCRCxHQUEzQixDQUFkO0FBQ0FELGVBQVdHLE9BQVgsQ0FBbUJKLE9BQW5CO0FBQ0EsV0FBT0EsUUFBUUksT0FBUixFQUFQO0FBQ0g7QUFDRCxNQUFNRCxzQkFBTixDQUE2QjtBQUN6QkUsZ0JBQVlILEdBQVosRUFBaUI7QUFDYixhQUFLQSxHQUFMLEdBQVdBLEdBQVg7QUFDSDtBQUNESSxlQUFXQyxNQUFYLEVBQW1CO0FBQ2YsYUFBS0MsS0FBTCxHQUFhLElBQUlDLGNBQUosQ0FBbUIsS0FBS1AsR0FBeEIsRUFBNkJLLE1BQTdCLENBQWI7QUFDSDtBQUNERyxlQUFXSCxNQUFYLEVBQW1CO0FBQ2YsYUFBS0MsS0FBTCxHQUFhLElBQUlHLGdCQUFKLENBQXFCLEtBQUtULEdBQTFCLEVBQStCSyxNQUEvQixDQUFiO0FBQ0g7QUFDREgsY0FBVTtBQUNOLGVBQU8sS0FBS0ksS0FBTCxDQUFXSixPQUFYLEVBQVA7QUFDSDtBQUNELFFBQUlRLEdBQUosR0FBVTtBQUNO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QUE5QixFQUFzQ0MsSUFBdEMsRUFBNENPLEtBQTVDLEVBQW1ETCxPQUFuRDtBQUNBNUUsZ0JBQVF3QyxLQUFSLENBQWMsTUFBZDtBQUNBeEMsZ0JBQVF5RixJQUFSO0FBQ0F6RixnQkFBUTBGLE1BQVI7QUFDQTFGLGdCQUFRd0MsS0FBUixDQUFjLEtBQWQ7QUFDQXhDLGdCQUFRMkYsUUFBUjtBQUNBM0YsZ0JBQVE2QyxVQUFSO0FBQ0g7QUF0Q3lCO1FBQWpCeUIsZ0IsR0FBQUEsZ0I7QUF3Q04sU0FBU3RFLE9BQVQsQ0FBaUJFLEdBQWpCLEVBQXNCYyxJQUF0QixFQUE0QjtBQUMvQixXQUFPLHNCQUFxQmQsR0FBckIsRUFBMEJjLElBQTFCLENBQVA7QUFDSCIsImZpbGUiOiJsaWIvY29tcGlsZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21waWxlZER5bmFtaWNUZW1wbGF0ZSB9IGZyb20gJy4vY29tcGlsZWQvYmxvY2tzJztcbmltcG9ydCB7IE9wcyB9IGZyb20gJ0BnbGltbWVyL3dpcmUtZm9ybWF0JztcbmltcG9ydCB7IFJlZ2lzdGVyLCBkZWJ1Z1NsaWNlIH0gZnJvbSAnLi9vcGNvZGVzJztcbmltcG9ydCB7IEFUVFJTX0JMT0NLLCBDbGllbnRTaWRlLCBjb21waWxlU3RhdGVtZW50IH0gZnJvbSAnLi9zY2FubmVyJztcbmltcG9ydCB7IGV4cHIgfSBmcm9tICcuL3N5bnRheC9mdW5jdGlvbnMnO1xuaW1wb3J0IE9wY29kZUJ1aWxkZXJEU0wgZnJvbSAnLi9jb21waWxlZC9vcGNvZGVzL2J1aWxkZXInO1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBpbGVMYXlvdXQoY29tcGlsYWJsZSwgZW52KSB7XG4gICAgbGV0IGJ1aWxkZXIgPSBuZXcgQ29tcG9uZW50TGF5b3V0QnVpbGRlcihlbnYpO1xuICAgIGNvbXBpbGFibGUuY29tcGlsZShidWlsZGVyKTtcbiAgICByZXR1cm4gYnVpbGRlci5jb21waWxlKCk7XG59XG5jbGFzcyBDb21wb25lbnRMYXlvdXRCdWlsZGVyIHtcbiAgICBjb25zdHJ1Y3RvcihlbnYpIHtcbiAgICAgICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgfVxuICAgIHdyYXBMYXlvdXQobGF5b3V0KSB7XG4gICAgICAgIHRoaXMuaW5uZXIgPSBuZXcgV3JhcHBlZEJ1aWxkZXIodGhpcy5lbnYsIGxheW91dCk7XG4gICAgfVxuICAgIGZyb21MYXlvdXQobGF5b3V0KSB7XG4gICAgICAgIHRoaXMuaW5uZXIgPSBuZXcgVW53cmFwcGVkQnVpbGRlcih0aGlzLmVudiwgbGF5b3V0KTtcbiAgICB9XG4gICAgY29tcGlsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5uZXIuY29tcGlsZSgpO1xuICAgIH1cbiAgICBnZXQgdGFnKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pbm5lci50YWc7XG4gICAgfVxuICAgIGdldCBhdHRycygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5uZXIuYXR0cnM7XG4gICAgfVxufVxuY2xhc3MgV3JhcHBlZEJ1aWxkZXIge1xuICAgIGNvbnN0cnVjdG9yKGVudiwgbGF5b3V0KSB7XG4gICAgICAgIHRoaXMuZW52ID0gZW52O1xuICAgICAgICB0aGlzLmxheW91dCA9IGxheW91dDtcbiAgICAgICAgdGhpcy50YWcgPSBuZXcgQ29tcG9uZW50VGFnQnVpbGRlcigpO1xuICAgICAgICB0aGlzLmF0dHJzID0gbmV3IENvbXBvbmVudEF0dHJzQnVpbGRlcigpO1xuICAgIH1cbiAgICBjb21waWxlKCkge1xuICAgICAgICAvLz09PT09PT09RFlOQU1JQ1xuICAgICAgICAvLyAgICAgICAgUHV0VmFsdWUoVGFnRXhwcilcbiAgICAgICAgLy8gICAgICAgIFRlc3RcbiAgICAgICAgLy8gICAgICAgIEp1bXBVbmxlc3MoQk9EWSlcbiAgICAgICAgLy8gICAgICAgIE9wZW5EeW5hbWljUHJpbWl0aXZlRWxlbWVudFxuICAgICAgICAvLyAgICAgICAgRGlkQ3JlYXRlRWxlbWVudFxuICAgICAgICAvLyAgICAgICAgLi4uYXR0ciBzdGF0ZW1lbnRzLi4uXG4gICAgICAgIC8vICAgICAgICBGbHVzaEVsZW1lbnRcbiAgICAgICAgLy8gQk9EWTogIE5vb3BcbiAgICAgICAgLy8gICAgICAgIC4uLmJvZHkgc3RhdGVtZW50cy4uLlxuICAgICAgICAvLyAgICAgICAgUHV0VmFsdWUoVGFnRXhwcilcbiAgICAgICAgLy8gICAgICAgIFRlc3RcbiAgICAgICAgLy8gICAgICAgIEp1bXBVbmxlc3MoRU5EKVxuICAgICAgICAvLyAgICAgICAgQ2xvc2VFbGVtZW50XG4gICAgICAgIC8vIEVORDogICBOb29wXG4gICAgICAgIC8vICAgICAgICBEaWRSZW5kZXJMYXlvdXRcbiAgICAgICAgLy8gICAgICAgIEV4aXRcbiAgICAgICAgLy9cbiAgICAgICAgLy89PT09PT09PVNUQVRJQ1xuICAgICAgICAvLyAgICAgICAgT3BlblByaW1pdGl2ZUVsZW1lbnRPcGNvZGVcbiAgICAgICAgLy8gICAgICAgIERpZENyZWF0ZUVsZW1lbnRcbiAgICAgICAgLy8gICAgICAgIC4uLmF0dHIgc3RhdGVtZW50cy4uLlxuICAgICAgICAvLyAgICAgICAgRmx1c2hFbGVtZW50XG4gICAgICAgIC8vICAgICAgICAuLi5ib2R5IHN0YXRlbWVudHMuLi5cbiAgICAgICAgLy8gICAgICAgIENsb3NlRWxlbWVudFxuICAgICAgICAvLyAgICAgICAgRGlkUmVuZGVyTGF5b3V0XG4gICAgICAgIC8vICAgICAgICBFeGl0XG4gICAgICAgIGxldCB7IGVudiwgbGF5b3V0IH0gPSB0aGlzO1xuICAgICAgICBsZXQgbWV0YSA9IHsgdGVtcGxhdGVNZXRhOiBsYXlvdXQubWV0YSwgc3ltYm9sczogbGF5b3V0LnN5bWJvbHMsIGFzUGFydGlhbDogZmFsc2UgfTtcbiAgICAgICAgbGV0IGR5bmFtaWNUYWcgPSB0aGlzLnRhZy5nZXREeW5hbWljKCk7XG4gICAgICAgIGxldCBzdGF0aWNUYWcgPSB0aGlzLnRhZy5nZXRTdGF0aWMoKTtcbiAgICAgICAgbGV0IGIgPSBidWlsZGVyKGVudiwgbWV0YSk7XG4gICAgICAgIGIuc3RhcnRMYWJlbHMoKTtcbiAgICAgICAgaWYgKGR5bmFtaWNUYWcpIHtcbiAgICAgICAgICAgIGIuZmV0Y2goUmVnaXN0ZXIuczEpO1xuICAgICAgICAgICAgZXhwcihkeW5hbWljVGFnLCBiKTtcbiAgICAgICAgICAgIGIuZHVwKCk7XG4gICAgICAgICAgICBiLmxvYWQoUmVnaXN0ZXIuczEpO1xuICAgICAgICAgICAgYi50ZXN0KCdzaW1wbGUnKTtcbiAgICAgICAgICAgIGIuanVtcFVubGVzcygnQk9EWScpO1xuICAgICAgICAgICAgYi5mZXRjaChSZWdpc3Rlci5zMSk7XG4gICAgICAgICAgICBiLnB1c2hDb21wb25lbnRPcGVyYXRpb25zKCk7XG4gICAgICAgICAgICBiLm9wZW5EeW5hbWljRWxlbWVudCgpO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YXRpY1RhZykge1xuICAgICAgICAgICAgYi5wdXNoQ29tcG9uZW50T3BlcmF0aW9ucygpO1xuICAgICAgICAgICAgYi5vcGVuRWxlbWVudFdpdGhPcGVyYXRpb25zKHN0YXRpY1RhZyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGR5bmFtaWNUYWcgfHwgc3RhdGljVGFnKSB7XG4gICAgICAgICAgICBiLmRpZENyZWF0ZUVsZW1lbnQoUmVnaXN0ZXIuczApO1xuICAgICAgICAgICAgbGV0IGF0dHJzID0gdGhpcy5hdHRyc1snYnVmZmVyJ107XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGF0dHJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29tcGlsZVN0YXRlbWVudChhdHRyc1tpXSwgYik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBiLmZsdXNoRWxlbWVudCgpO1xuICAgICAgICB9XG4gICAgICAgIGIubGFiZWwoJ0JPRFknKTtcbiAgICAgICAgYi5pbnZva2VTdGF0aWMobGF5b3V0LmFzQmxvY2soKSk7XG4gICAgICAgIGlmIChkeW5hbWljVGFnKSB7XG4gICAgICAgICAgICBiLmZldGNoKFJlZ2lzdGVyLnMxKTtcbiAgICAgICAgICAgIGIudGVzdCgnc2ltcGxlJyk7XG4gICAgICAgICAgICBiLmp1bXBVbmxlc3MoJ0VORCcpO1xuICAgICAgICAgICAgYi5jbG9zZUVsZW1lbnQoKTtcbiAgICAgICAgfSBlbHNlIGlmIChzdGF0aWNUYWcpIHtcbiAgICAgICAgICAgIGIuY2xvc2VFbGVtZW50KCk7XG4gICAgICAgIH1cbiAgICAgICAgYi5sYWJlbCgnRU5EJyk7XG4gICAgICAgIGIuZGlkUmVuZGVyTGF5b3V0KFJlZ2lzdGVyLnMwKTtcbiAgICAgICAgaWYgKGR5bmFtaWNUYWcpIHtcbiAgICAgICAgICAgIGIubG9hZChSZWdpc3Rlci5zMSk7XG4gICAgICAgIH1cbiAgICAgICAgYi5zdG9wTGFiZWxzKCk7XG4gICAgICAgIGxldCBzdGFydCA9IGIuc3RhcnQ7XG4gICAgICAgIGxldCBlbmQgPSBiLmZpbmFsaXplKCk7XG4gICAgICAgIGRlYnVnU2xpY2UoZW52LCBzdGFydCwgZW5kKTtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21waWxlZER5bmFtaWNUZW1wbGF0ZShzdGFydCwgZW5kLCB7XG4gICAgICAgICAgICBtZXRhLFxuICAgICAgICAgICAgaGFzRXZhbDogbGF5b3V0Lmhhc0V2YWwsXG4gICAgICAgICAgICBzeW1ib2xzOiBsYXlvdXQuc3ltYm9scy5jb25jYXQoW0FUVFJTX0JMT0NLXSlcbiAgICAgICAgfSk7XG4gICAgfVxufVxuY2xhc3MgVW53cmFwcGVkQnVpbGRlciB7XG4gICAgY29uc3RydWN0b3IoZW52LCBsYXlvdXQpIHtcbiAgICAgICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgICAgIHRoaXMubGF5b3V0ID0gbGF5b3V0O1xuICAgICAgICB0aGlzLmF0dHJzID0gbmV3IENvbXBvbmVudEF0dHJzQnVpbGRlcigpO1xuICAgIH1cbiAgICBnZXQgdGFnKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0JVRzogQ2Fubm90IGNhbGwgYHRhZ2Agb24gYW4gVW53cmFwcGVkQnVpbGRlcicpO1xuICAgIH1cbiAgICBjb21waWxlKCkge1xuICAgICAgICBsZXQgeyBlbnYsIGxheW91dCB9ID0gdGhpcztcbiAgICAgICAgcmV0dXJuIGxheW91dC5hc0xheW91dCh0aGlzLmF0dHJzWydidWZmZXInXSkuY29tcGlsZUR5bmFtaWMoZW52KTtcbiAgICB9XG59XG5jbGFzcyBDb21wb25lbnRUYWdCdWlsZGVyIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5pc0R5bmFtaWMgPSBudWxsO1xuICAgICAgICB0aGlzLmlzU3RhdGljID0gbnVsbDtcbiAgICAgICAgdGhpcy5zdGF0aWNUYWdOYW1lID0gbnVsbDtcbiAgICAgICAgdGhpcy5keW5hbWljVGFnTmFtZSA9IG51bGw7XG4gICAgfVxuICAgIGdldER5bmFtaWMoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzRHluYW1pYykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZHluYW1pY1RhZ05hbWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0U3RhdGljKCkge1xuICAgICAgICBpZiAodGhpcy5pc1N0YXRpYykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGljVGFnTmFtZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzdGF0aWModGFnTmFtZSkge1xuICAgICAgICB0aGlzLmlzU3RhdGljID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zdGF0aWNUYWdOYW1lID0gdGFnTmFtZTtcbiAgICB9XG4gICAgZHluYW1pYyh0YWdOYW1lKSB7XG4gICAgICAgIHRoaXMuaXNEeW5hbWljID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5keW5hbWljVGFnTmFtZSA9IFtPcHMuQ2xpZW50U2lkZUV4cHJlc3Npb24sIENsaWVudFNpZGUuT3BzLkZ1bmN0aW9uRXhwcmVzc2lvbiwgdGFnTmFtZV07XG4gICAgfVxufVxuY2xhc3MgQ29tcG9uZW50QXR0cnNCdWlsZGVyIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5idWZmZXIgPSBbXTtcbiAgICB9XG4gICAgc3RhdGljKG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIHRoaXMuYnVmZmVyLnB1c2goW09wcy5TdGF0aWNBdHRyLCBuYW1lLCB2YWx1ZSwgbnVsbF0pO1xuICAgIH1cbiAgICBkeW5hbWljKG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIHRoaXMuYnVmZmVyLnB1c2goW09wcy5EeW5hbWljQXR0ciwgbmFtZSwgW09wcy5DbGllbnRTaWRlRXhwcmVzc2lvbiwgQ2xpZW50U2lkZS5PcHMuRnVuY3Rpb25FeHByZXNzaW9uLCB2YWx1ZV0sIG51bGxdKTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgQ29tcG9uZW50QnVpbGRlciB7XG4gICAgY29uc3RydWN0b3IoYnVpbGRlcikge1xuICAgICAgICB0aGlzLmJ1aWxkZXIgPSBidWlsZGVyO1xuICAgICAgICB0aGlzLmVudiA9IGJ1aWxkZXIuZW52O1xuICAgIH1cbiAgICBzdGF0aWMoZGVmaW5pdGlvbiwgYXJncykge1xuICAgICAgICBsZXQgW3BhcmFtcywgaGFzaCwgX2RlZmF1bHQsIGludmVyc2VdID0gYXJncztcbiAgICAgICAgbGV0IHsgYnVpbGRlciB9ID0gdGhpcztcbiAgICAgICAgYnVpbGRlci5wdXNoQ29tcG9uZW50TWFuYWdlcihkZWZpbml0aW9uKTtcbiAgICAgICAgYnVpbGRlci5pbnZva2VDb21wb25lbnQobnVsbCwgcGFyYW1zLCBoYXNoLCBfZGVmYXVsdCwgaW52ZXJzZSk7XG4gICAgfVxuICAgIGR5bmFtaWMoZGVmaW5pdGlvbkFyZ3MsIGdldERlZmluaXRpb24sIGFyZ3MpIHtcbiAgICAgICAgbGV0IFtwYXJhbXMsIGhhc2gsIGJsb2NrLCBpbnZlcnNlXSA9IGFyZ3M7XG4gICAgICAgIGxldCB7IGJ1aWxkZXIgfSA9IHRoaXM7XG4gICAgICAgIGlmICghZGVmaW5pdGlvbkFyZ3MgfHwgZGVmaW5pdGlvbkFyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEeW5hbWljIHN5bnRheCB3aXRob3V0IGFuIGFyZ3VtZW50XCIpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBtZXRhID0gdGhpcy5idWlsZGVyLm1ldGEudGVtcGxhdGVNZXRhO1xuICAgICAgICBmdW5jdGlvbiBoZWxwZXIodm0sIGFyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiBnZXREZWZpbml0aW9uKHZtLCBhcmdzLCBtZXRhKTtcbiAgICAgICAgfVxuICAgICAgICBidWlsZGVyLnN0YXJ0TGFiZWxzKCk7XG4gICAgICAgIGJ1aWxkZXIucHVzaEZyYW1lKCk7XG4gICAgICAgIGJ1aWxkZXIucmV0dXJuVG8oJ0VORCcpO1xuICAgICAgICBidWlsZGVyLmNvbXBpbGVBcmdzKGRlZmluaXRpb25BcmdzWzBdLCBkZWZpbml0aW9uQXJnc1sxXSwgdHJ1ZSk7XG4gICAgICAgIGJ1aWxkZXIuaGVscGVyKGhlbHBlcik7XG4gICAgICAgIGJ1aWxkZXIuZHVwKCk7XG4gICAgICAgIGJ1aWxkZXIudGVzdCgnc2ltcGxlJyk7XG4gICAgICAgIGJ1aWxkZXIuZW50ZXIoMik7XG4gICAgICAgIGJ1aWxkZXIuanVtcFVubGVzcygnRUxTRScpO1xuICAgICAgICBidWlsZGVyLnB1c2hEeW5hbWljQ29tcG9uZW50TWFuYWdlcigpO1xuICAgICAgICBidWlsZGVyLmludm9rZUNvbXBvbmVudChudWxsLCBwYXJhbXMsIGhhc2gsIGJsb2NrLCBpbnZlcnNlKTtcbiAgICAgICAgYnVpbGRlci5sYWJlbCgnRUxTRScpO1xuICAgICAgICBidWlsZGVyLmV4aXQoKTtcbiAgICAgICAgYnVpbGRlci5yZXR1cm4oKTtcbiAgICAgICAgYnVpbGRlci5sYWJlbCgnRU5EJyk7XG4gICAgICAgIGJ1aWxkZXIucG9wRnJhbWUoKTtcbiAgICAgICAgYnVpbGRlci5zdG9wTGFiZWxzKCk7XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkZXIoZW52LCBtZXRhKSB7XG4gICAgcmV0dXJuIG5ldyBPcGNvZGVCdWlsZGVyRFNMKGVudiwgbWV0YSk7XG59Il19

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

getNames(value) {
let _names = [];
let names = this.getArray(value);
for (let i = 0; i < names.length; i++) {
let n = names[i];
_names[i] = this.getString(n);
}
return _names;
return this.getArray(value).map(n => this.getString(n));
}

@@ -86,2 +80,2 @@ array(values) {

exports.Constants = Constants;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9lbnZpcm9ubWVudC9jb25zdGFudHMuanMiXSwibmFtZXMiOlsiQ29uc3RhbnRzIiwiY29uc3RydWN0b3IiLCJyZWZlcmVuY2VzIiwic3RyaW5ncyIsImV4cHJlc3Npb25zIiwiYXJyYXlzIiwiYmxvY2tzIiwiZnVuY3Rpb25zIiwib3RoZXJzIiwiTlVMTF9SRUZFUkVOQ0UiLCJyZWZlcmVuY2UiLCJVTkRFRklORURfUkVGRVJFTkNFIiwiZ2V0UmVmZXJlbmNlIiwidmFsdWUiLCJpbmRleCIsImxlbmd0aCIsInB1c2giLCJnZXRTdHJpbmciLCJzdHJpbmciLCJnZXRFeHByZXNzaW9uIiwiZ2V0QXJyYXkiLCJnZXROYW1lcyIsIl9uYW1lcyIsIm5hbWVzIiwiaSIsIm4iLCJhcnJheSIsInZhbHVlcyIsImdldEJsb2NrIiwiYmxvY2siLCJnZXRGdW5jdGlvbiIsImZ1bmN0aW9uIiwiZiIsImdldE90aGVyIiwib3RoZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDTyxNQUFNQSxTQUFOLENBQWdCO0FBQ25CQyxrQkFBYztBQUNWO0FBQ0EsYUFBS0MsVUFBTCxHQUFrQixFQUFsQjtBQUNBLGFBQUtDLE9BQUwsR0FBZSxFQUFmO0FBQ0EsYUFBS0MsV0FBTCxHQUFtQixFQUFuQjtBQUNBLGFBQUtDLE1BQUwsR0FBYyxFQUFkO0FBQ0EsYUFBS0MsTUFBTCxHQUFjLEVBQWQ7QUFDQSxhQUFLQyxTQUFMLEdBQWlCLEVBQWpCO0FBQ0EsYUFBS0MsTUFBTCxHQUFjLEVBQWQ7QUFDQSxhQUFLQyxjQUFMLEdBQXNCLEtBQUtDLFNBQUwsNEJBQXRCO0FBQ0EsYUFBS0MsbUJBQUwsR0FBMkIsS0FBS0QsU0FBTCxpQ0FBM0I7QUFDSDtBQUNERSxpQkFBYUMsS0FBYixFQUFvQjtBQUNoQixlQUFPLEtBQUtYLFVBQUwsQ0FBZ0JXLFFBQVEsQ0FBeEIsQ0FBUDtBQUNIO0FBQ0RILGNBQVVHLEtBQVYsRUFBaUI7QUFDYixZQUFJQyxRQUFRLEtBQUtaLFVBQUwsQ0FBZ0JhLE1BQTVCO0FBQ0EsYUFBS2IsVUFBTCxDQUFnQmMsSUFBaEIsQ0FBcUJILEtBQXJCO0FBQ0EsZUFBT0MsUUFBUSxDQUFmO0FBQ0g7QUFDREcsY0FBVUosS0FBVixFQUFpQjtBQUNiLGVBQU8sS0FBS1YsT0FBTCxDQUFhVSxRQUFRLENBQXJCLENBQVA7QUFDSDtBQUNESyxXQUFPTCxLQUFQLEVBQWM7QUFDVixZQUFJQyxRQUFRLEtBQUtYLE9BQUwsQ0FBYVksTUFBekI7QUFDQSxhQUFLWixPQUFMLENBQWFhLElBQWIsQ0FBa0JILEtBQWxCO0FBQ0EsZUFBT0MsUUFBUSxDQUFmO0FBQ0g7QUFDREssa0JBQWNOLEtBQWQsRUFBcUI7QUFDakIsZUFBTyxLQUFLVCxXQUFMLENBQWlCUyxRQUFRLENBQXpCLENBQVA7QUFDSDtBQUNETyxhQUFTUCxLQUFULEVBQWdCO0FBQ1osZUFBTyxLQUFLUixNQUFMLENBQVlRLFFBQVEsQ0FBcEIsQ0FBUDtBQUNIO0FBQ0RRLGFBQVNSLEtBQVQsRUFBZ0I7QUFDWixZQUFJUyxTQUFTLEVBQWI7QUFDQSxZQUFJQyxRQUFRLEtBQUtILFFBQUwsQ0FBY1AsS0FBZCxDQUFaO0FBQ0EsYUFBSyxJQUFJVyxJQUFJLENBQWIsRUFBZ0JBLElBQUlELE1BQU1SLE1BQTFCLEVBQWtDUyxHQUFsQyxFQUF1QztBQUNuQyxnQkFBSUMsSUFBSUYsTUFBTUMsQ0FBTixDQUFSO0FBQ0FGLG1CQUFPRSxDQUFQLElBQVksS0FBS1AsU0FBTCxDQUFlUSxDQUFmLENBQVo7QUFDSDtBQUNELGVBQU9ILE1BQVA7QUFDSDtBQUNESSxVQUFNQyxNQUFOLEVBQWM7QUFDVixZQUFJYixRQUFRLEtBQUtULE1BQUwsQ0FBWVUsTUFBeEI7QUFDQSxhQUFLVixNQUFMLENBQVlXLElBQVosQ0FBaUJXLE1BQWpCO0FBQ0EsZUFBT2IsUUFBUSxDQUFmO0FBQ0g7QUFDRGMsYUFBU2YsS0FBVCxFQUFnQjtBQUNaLGVBQU8sS0FBS1AsTUFBTCxDQUFZTyxRQUFRLENBQXBCLENBQVA7QUFDSDtBQUNEZ0IsVUFBTUEsS0FBTixFQUFhO0FBQ1QsWUFBSWYsUUFBUSxLQUFLUixNQUFMLENBQVlTLE1BQXhCO0FBQ0EsYUFBS1QsTUFBTCxDQUFZVSxJQUFaLENBQWlCYSxLQUFqQjtBQUNBLGVBQU9mLFFBQVEsQ0FBZjtBQUNIO0FBQ0RnQixnQkFBWWpCLEtBQVosRUFBbUI7QUFDZixlQUFPLEtBQUtOLFNBQUwsQ0FBZU0sUUFBUSxDQUF2QixDQUFQO0FBQ0g7QUFDRGtCLGFBQVNDLENBQVQsRUFBWTtBQUNSLFlBQUlsQixRQUFRLEtBQUtQLFNBQUwsQ0FBZVEsTUFBM0I7QUFDQSxhQUFLUixTQUFMLENBQWVTLElBQWYsQ0FBb0JnQixDQUFwQjtBQUNBLGVBQU9sQixRQUFRLENBQWY7QUFDSDtBQUNEbUIsYUFBU3BCLEtBQVQsRUFBZ0I7QUFDWixlQUFPLEtBQUtMLE1BQUwsQ0FBWUssUUFBUSxDQUFwQixDQUFQO0FBQ0g7QUFDRHFCLFVBQU1BLEtBQU4sRUFBYTtBQUNULFlBQUlwQixRQUFRLEtBQUtOLE1BQUwsQ0FBWU8sTUFBeEI7QUFDQSxhQUFLUCxNQUFMLENBQVlRLElBQVosQ0FBaUJrQixLQUFqQjtBQUNBLGVBQU9wQixRQUFRLENBQWY7QUFDSDtBQXhFa0I7UUFBVmQsUyxHQUFBQSxTIiwiZmlsZSI6ImxpYi9lbnZpcm9ubWVudC9jb25zdGFudHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOVUxMX1JFRkVSRU5DRSwgVU5ERUZJTkVEX1JFRkVSRU5DRSB9IGZyb20gJy4uL3JlZmVyZW5jZXMnO1xuZXhwb3J0IGNsYXNzIENvbnN0YW50cyB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIC8vIGAwYCBtZWFucyBOVUxMXG4gICAgICAgIHRoaXMucmVmZXJlbmNlcyA9IFtdO1xuICAgICAgICB0aGlzLnN0cmluZ3MgPSBbXTtcbiAgICAgICAgdGhpcy5leHByZXNzaW9ucyA9IFtdO1xuICAgICAgICB0aGlzLmFycmF5cyA9IFtdO1xuICAgICAgICB0aGlzLmJsb2NrcyA9IFtdO1xuICAgICAgICB0aGlzLmZ1bmN0aW9ucyA9IFtdO1xuICAgICAgICB0aGlzLm90aGVycyA9IFtdO1xuICAgICAgICB0aGlzLk5VTExfUkVGRVJFTkNFID0gdGhpcy5yZWZlcmVuY2UoTlVMTF9SRUZFUkVOQ0UpO1xuICAgICAgICB0aGlzLlVOREVGSU5FRF9SRUZFUkVOQ0UgPSB0aGlzLnJlZmVyZW5jZShVTkRFRklORURfUkVGRVJFTkNFKTtcbiAgICB9XG4gICAgZ2V0UmVmZXJlbmNlKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZXNbdmFsdWUgLSAxXTtcbiAgICB9XG4gICAgcmVmZXJlbmNlKHZhbHVlKSB7XG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMucmVmZXJlbmNlcy5sZW5ndGg7XG4gICAgICAgIHRoaXMucmVmZXJlbmNlcy5wdXNoKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIGluZGV4ICsgMTtcbiAgICB9XG4gICAgZ2V0U3RyaW5nKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0cmluZ3NbdmFsdWUgLSAxXTtcbiAgICB9XG4gICAgc3RyaW5nKHZhbHVlKSB7XG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMuc3RyaW5ncy5sZW5ndGg7XG4gICAgICAgIHRoaXMuc3RyaW5ncy5wdXNoKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIGluZGV4ICsgMTtcbiAgICB9XG4gICAgZ2V0RXhwcmVzc2lvbih2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5leHByZXNzaW9uc1t2YWx1ZSAtIDFdO1xuICAgIH1cbiAgICBnZXRBcnJheSh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcnJheXNbdmFsdWUgLSAxXTtcbiAgICB9XG4gICAgZ2V0TmFtZXModmFsdWUpIHtcbiAgICAgICAgbGV0IF9uYW1lcyA9IFtdO1xuICAgICAgICBsZXQgbmFtZXMgPSB0aGlzLmdldEFycmF5KHZhbHVlKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IG4gPSBuYW1lc1tpXTtcbiAgICAgICAgICAgIF9uYW1lc1tpXSA9IHRoaXMuZ2V0U3RyaW5nKG4pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfbmFtZXM7XG4gICAgfVxuICAgIGFycmF5KHZhbHVlcykge1xuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLmFycmF5cy5sZW5ndGg7XG4gICAgICAgIHRoaXMuYXJyYXlzLnB1c2godmFsdWVzKTtcbiAgICAgICAgcmV0dXJuIGluZGV4ICsgMTtcbiAgICB9XG4gICAgZ2V0QmxvY2sodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmxvY2tzW3ZhbHVlIC0gMV07XG4gICAgfVxuICAgIGJsb2NrKGJsb2NrKSB7XG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMuYmxvY2tzLmxlbmd0aDtcbiAgICAgICAgdGhpcy5ibG9ja3MucHVzaChibG9jayk7XG4gICAgICAgIHJldHVybiBpbmRleCArIDE7XG4gICAgfVxuICAgIGdldEZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZ1bmN0aW9uc1t2YWx1ZSAtIDFdO1xuICAgIH1cbiAgICBmdW5jdGlvbihmKSB7XG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMuZnVuY3Rpb25zLmxlbmd0aDtcbiAgICAgICAgdGhpcy5mdW5jdGlvbnMucHVzaChmKTtcbiAgICAgICAgcmV0dXJuIGluZGV4ICsgMTtcbiAgICB9XG4gICAgZ2V0T3RoZXIodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3RoZXJzW3ZhbHVlIC0gMV07XG4gICAgfVxuICAgIG90aGVyKG90aGVyKSB7XG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMub3RoZXJzLmxlbmd0aDtcbiAgICAgICAgdGhpcy5vdGhlcnMucHVzaChvdGhlcik7XG4gICAgICAgIHJldHVybiBpbmRleCArIDE7XG4gICAgfVxufSJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9lbnZpcm9ubWVudC9jb25zdGFudHMuanMiXSwibmFtZXMiOlsiQ29uc3RhbnRzIiwiY29uc3RydWN0b3IiLCJyZWZlcmVuY2VzIiwic3RyaW5ncyIsImV4cHJlc3Npb25zIiwiYXJyYXlzIiwiYmxvY2tzIiwiZnVuY3Rpb25zIiwib3RoZXJzIiwiTlVMTF9SRUZFUkVOQ0UiLCJyZWZlcmVuY2UiLCJVTkRFRklORURfUkVGRVJFTkNFIiwiZ2V0UmVmZXJlbmNlIiwidmFsdWUiLCJpbmRleCIsImxlbmd0aCIsInB1c2giLCJnZXRTdHJpbmciLCJzdHJpbmciLCJnZXRFeHByZXNzaW9uIiwiZ2V0QXJyYXkiLCJnZXROYW1lcyIsIm1hcCIsIm4iLCJhcnJheSIsInZhbHVlcyIsImdldEJsb2NrIiwiYmxvY2siLCJnZXRGdW5jdGlvbiIsImZ1bmN0aW9uIiwiZiIsImdldE90aGVyIiwib3RoZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDTyxNQUFNQSxTQUFOLENBQWdCO0FBQ25CQyxrQkFBYztBQUNWO0FBQ0EsYUFBS0MsVUFBTCxHQUFrQixFQUFsQjtBQUNBLGFBQUtDLE9BQUwsR0FBZSxFQUFmO0FBQ0EsYUFBS0MsV0FBTCxHQUFtQixFQUFuQjtBQUNBLGFBQUtDLE1BQUwsR0FBYyxFQUFkO0FBQ0EsYUFBS0MsTUFBTCxHQUFjLEVBQWQ7QUFDQSxhQUFLQyxTQUFMLEdBQWlCLEVBQWpCO0FBQ0EsYUFBS0MsTUFBTCxHQUFjLEVBQWQ7QUFDQSxhQUFLQyxjQUFMLEdBQXNCLEtBQUtDLFNBQUwsNEJBQXRCO0FBQ0EsYUFBS0MsbUJBQUwsR0FBMkIsS0FBS0QsU0FBTCxpQ0FBM0I7QUFDSDtBQUNERSxpQkFBYUMsS0FBYixFQUFvQjtBQUNoQixlQUFPLEtBQUtYLFVBQUwsQ0FBZ0JXLFFBQVEsQ0FBeEIsQ0FBUDtBQUNIO0FBQ0RILGNBQVVHLEtBQVYsRUFBaUI7QUFDYixZQUFJQyxRQUFRLEtBQUtaLFVBQUwsQ0FBZ0JhLE1BQTVCO0FBQ0EsYUFBS2IsVUFBTCxDQUFnQmMsSUFBaEIsQ0FBcUJILEtBQXJCO0FBQ0EsZUFBT0MsUUFBUSxDQUFmO0FBQ0g7QUFDREcsY0FBVUosS0FBVixFQUFpQjtBQUNiLGVBQU8sS0FBS1YsT0FBTCxDQUFhVSxRQUFRLENBQXJCLENBQVA7QUFDSDtBQUNESyxXQUFPTCxLQUFQLEVBQWM7QUFDVixZQUFJQyxRQUFRLEtBQUtYLE9BQUwsQ0FBYVksTUFBekI7QUFDQSxhQUFLWixPQUFMLENBQWFhLElBQWIsQ0FBa0JILEtBQWxCO0FBQ0EsZUFBT0MsUUFBUSxDQUFmO0FBQ0g7QUFDREssa0JBQWNOLEtBQWQsRUFBcUI7QUFDakIsZUFBTyxLQUFLVCxXQUFMLENBQWlCUyxRQUFRLENBQXpCLENBQVA7QUFDSDtBQUNETyxhQUFTUCxLQUFULEVBQWdCO0FBQ1osZUFBTyxLQUFLUixNQUFMLENBQVlRLFFBQVEsQ0FBcEIsQ0FBUDtBQUNIO0FBQ0RRLGFBQVNSLEtBQVQsRUFBZ0I7QUFDWixlQUFPLEtBQUtPLFFBQUwsQ0FBY1AsS0FBZCxFQUFxQlMsR0FBckIsQ0FBeUJDLEtBQUssS0FBS04sU0FBTCxDQUFlTSxDQUFmLENBQTlCLENBQVA7QUFDSDtBQUNEQyxVQUFNQyxNQUFOLEVBQWM7QUFDVixZQUFJWCxRQUFRLEtBQUtULE1BQUwsQ0FBWVUsTUFBeEI7QUFDQSxhQUFLVixNQUFMLENBQVlXLElBQVosQ0FBaUJTLE1BQWpCO0FBQ0EsZUFBT1gsUUFBUSxDQUFmO0FBQ0g7QUFDRFksYUFBU2IsS0FBVCxFQUFnQjtBQUNaLGVBQU8sS0FBS1AsTUFBTCxDQUFZTyxRQUFRLENBQXBCLENBQVA7QUFDSDtBQUNEYyxVQUFNQSxLQUFOLEVBQWE7QUFDVCxZQUFJYixRQUFRLEtBQUtSLE1BQUwsQ0FBWVMsTUFBeEI7QUFDQSxhQUFLVCxNQUFMLENBQVlVLElBQVosQ0FBaUJXLEtBQWpCO0FBQ0EsZUFBT2IsUUFBUSxDQUFmO0FBQ0g7QUFDRGMsZ0JBQVlmLEtBQVosRUFBbUI7QUFDZixlQUFPLEtBQUtOLFNBQUwsQ0FBZU0sUUFBUSxDQUF2QixDQUFQO0FBQ0g7QUFDRGdCLGFBQVNDLENBQVQsRUFBWTtBQUNSLFlBQUloQixRQUFRLEtBQUtQLFNBQUwsQ0FBZVEsTUFBM0I7QUFDQSxhQUFLUixTQUFMLENBQWVTLElBQWYsQ0FBb0JjLENBQXBCO0FBQ0EsZUFBT2hCLFFBQVEsQ0FBZjtBQUNIO0FBQ0RpQixhQUFTbEIsS0FBVCxFQUFnQjtBQUNaLGVBQU8sS0FBS0wsTUFBTCxDQUFZSyxRQUFRLENBQXBCLENBQVA7QUFDSDtBQUNEbUIsVUFBTUEsS0FBTixFQUFhO0FBQ1QsWUFBSWxCLFFBQVEsS0FBS04sTUFBTCxDQUFZTyxNQUF4QjtBQUNBLGFBQUtQLE1BQUwsQ0FBWVEsSUFBWixDQUFpQmdCLEtBQWpCO0FBQ0EsZUFBT2xCLFFBQVEsQ0FBZjtBQUNIO0FBbEVrQjtRQUFWZCxTLEdBQUFBLFMiLCJmaWxlIjoibGliL2Vudmlyb25tZW50L2NvbnN0YW50cy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5VTExfUkVGRVJFTkNFLCBVTkRFRklORURfUkVGRVJFTkNFIH0gZnJvbSAnLi4vcmVmZXJlbmNlcyc7XG5leHBvcnQgY2xhc3MgQ29uc3RhbnRzIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgLy8gYDBgIG1lYW5zIE5VTExcbiAgICAgICAgdGhpcy5yZWZlcmVuY2VzID0gW107XG4gICAgICAgIHRoaXMuc3RyaW5ncyA9IFtdO1xuICAgICAgICB0aGlzLmV4cHJlc3Npb25zID0gW107XG4gICAgICAgIHRoaXMuYXJyYXlzID0gW107XG4gICAgICAgIHRoaXMuYmxvY2tzID0gW107XG4gICAgICAgIHRoaXMuZnVuY3Rpb25zID0gW107XG4gICAgICAgIHRoaXMub3RoZXJzID0gW107XG4gICAgICAgIHRoaXMuTlVMTF9SRUZFUkVOQ0UgPSB0aGlzLnJlZmVyZW5jZShOVUxMX1JFRkVSRU5DRSk7XG4gICAgICAgIHRoaXMuVU5ERUZJTkVEX1JFRkVSRU5DRSA9IHRoaXMucmVmZXJlbmNlKFVOREVGSU5FRF9SRUZFUkVOQ0UpO1xuICAgIH1cbiAgICBnZXRSZWZlcmVuY2UodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlc1t2YWx1ZSAtIDFdO1xuICAgIH1cbiAgICByZWZlcmVuY2UodmFsdWUpIHtcbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5yZWZlcmVuY2VzLmxlbmd0aDtcbiAgICAgICAgdGhpcy5yZWZlcmVuY2VzLnB1c2godmFsdWUpO1xuICAgICAgICByZXR1cm4gaW5kZXggKyAxO1xuICAgIH1cbiAgICBnZXRTdHJpbmcodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RyaW5nc1t2YWx1ZSAtIDFdO1xuICAgIH1cbiAgICBzdHJpbmcodmFsdWUpIHtcbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5zdHJpbmdzLmxlbmd0aDtcbiAgICAgICAgdGhpcy5zdHJpbmdzLnB1c2godmFsdWUpO1xuICAgICAgICByZXR1cm4gaW5kZXggKyAxO1xuICAgIH1cbiAgICBnZXRFeHByZXNzaW9uKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmV4cHJlc3Npb25zW3ZhbHVlIC0gMV07XG4gICAgfVxuICAgIGdldEFycmF5KHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFycmF5c1t2YWx1ZSAtIDFdO1xuICAgIH1cbiAgICBnZXROYW1lcyh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRBcnJheSh2YWx1ZSkubWFwKG4gPT4gdGhpcy5nZXRTdHJpbmcobikpO1xuICAgIH1cbiAgICBhcnJheSh2YWx1ZXMpIHtcbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5hcnJheXMubGVuZ3RoO1xuICAgICAgICB0aGlzLmFycmF5cy5wdXNoKHZhbHVlcyk7XG4gICAgICAgIHJldHVybiBpbmRleCArIDE7XG4gICAgfVxuICAgIGdldEJsb2NrKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJsb2Nrc1t2YWx1ZSAtIDFdO1xuICAgIH1cbiAgICBibG9jayhibG9jaykge1xuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLmJsb2Nrcy5sZW5ndGg7XG4gICAgICAgIHRoaXMuYmxvY2tzLnB1c2goYmxvY2spO1xuICAgICAgICByZXR1cm4gaW5kZXggKyAxO1xuICAgIH1cbiAgICBnZXRGdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5mdW5jdGlvbnNbdmFsdWUgLSAxXTtcbiAgICB9XG4gICAgZnVuY3Rpb24oZikge1xuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLmZ1bmN0aW9ucy5sZW5ndGg7XG4gICAgICAgIHRoaXMuZnVuY3Rpb25zLnB1c2goZik7XG4gICAgICAgIHJldHVybiBpbmRleCArIDE7XG4gICAgfVxuICAgIGdldE90aGVyKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm90aGVyc1t2YWx1ZSAtIDFdO1xuICAgIH1cbiAgICBvdGhlcihvdGhlcikge1xuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLm90aGVycy5sZW5ndGg7XG4gICAgICAgIHRoaXMub3RoZXJzLnB1c2gob3RoZXIpO1xuICAgICAgICByZXR1cm4gaW5kZXggKyAxO1xuICAgIH1cbn0iXX0=

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

if (!false && false) {
/* tslint:disable:no-console */
let { program, constants } = env;

@@ -55,3 +54,2 @@ // console is not available in IE9

console.groupEnd();
/* tslint:enable:no-console */
}

@@ -74,8 +72,6 @@ }

let string = JSON.stringify(param);
if (string === undefined) {
return 'undefined';
}
if (string === undefined) return 'undefined';
let debug = JSON.parse(string);
if (typeof debug === 'object' && debug !== null && debug.GlimmerDebug !== undefined) {
return debug.GlimmerDebug;
if (typeof debug === 'object' && debug && debug['GlimmerDebug']) {
return debug['GlimmerDebug'];
}

@@ -257,11 +253,8 @@ return string;

if (!false && false) {
/* tslint:disable */
let [name, params] = debug(vm.constants, opcode.type, opcode.op1, opcode.op2, opcode.op3);
console.log(`${vm['pc'] - 4}. ${logOpcode(name, params)}`);
// console.log(...debug(vm.constants, type, opcode.op1, opcode.op2, opcode.op3));
/* tslint:enable */
}
func(vm, opcode);
if (!false && false) {
/* tslint:disable */
console.log('%c -> pc: %d, ra: %d, fp: %d, sp: %d, s0: %O, s1: %O, t0: %O, t1: %O', 'color: orange', vm['pc'], vm['ra'], vm['fp'], vm['sp'], vm['s0'], vm['s1'], vm['t0'], vm['t1']);

@@ -271,3 +264,2 @@ console.log('%c -> eval stack', 'color: red', vm.stack.toArray());

console.log('%c -> elements', 'color: blue', vm.elements()['elementStack'].toArray());
/* tslint:enable */
}

@@ -332,2 +324,2 @@ }

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9vcGNvZGVzLmpzIl0sIm5hbWVzIjpbImRlYnVnU2xpY2UiLCJpbnNwZWN0IiwiUmVnaXN0ZXIiLCJlbnYiLCJzdGFydCIsImVuZCIsInByb2dyYW0iLCJjb25zdGFudHMiLCJjb25zb2xlIiwiZ3JvdXAiLCJpIiwidHlwZSIsIm9wMSIsIm9wMiIsIm9wMyIsIm9wY29kZSIsIm5hbWUiLCJwYXJhbXMiLCJkZWJ1ZyIsImxvZyIsImxvZ09wY29kZSIsImdyb3VwRW5kIiwib3V0IiwiYXJncyIsIk9iamVjdCIsImtleXMiLCJtYXAiLCJwIiwianNvbiIsImpvaW4iLCJwYXJhbSIsInN0cmluZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJ1bmRlZmluZWQiLCJwYXJzZSIsIkdsaW1tZXJEZWJ1ZyIsImMiLCJvcCIsImhlbHBlciIsImdldEZ1bmN0aW9uIiwiZnVuY3Rpb24iLCJzeW1ib2wiLCJrZXkiLCJnZXRTdHJpbmciLCJibG9jayIsImdldEJsb2NrIiwic2l6ZSIsInZhbHVlIiwiZ2V0T3RoZXIiLCJwcmltaXRpdmUiLCJyZWdpc3RlciIsIm9mZnNldCIsImNvdW50Iiwic3ltYm9scyIsImJpbmRDYWxsZXJTY29wZSIsInRleHQiLCJjb21tZW50IiwidGFnIiwibmFtZXNwYWNlIiwidHJ1c3RpbmciLCJucyIsImludm9rZXIiLCJ0byIsImRlZmluaXRpb24iLCJwb3NpdGlvbmFsIiwic3ludGhldGljIiwic3RhdGUiLCJmbGFncyIsImV2YWxJbmZvIiwiZ2V0QXJyYXkiLCJBcHBlbmRPcGNvZGVzIiwiY29uc3RydWN0b3IiLCJldmFsdWF0ZU9wY29kZSIsInNsaWNlIiwiYWRkIiwiZXZhbHVhdGUiLCJ2bSIsImZ1bmMiLCJzdGFjayIsInRvQXJyYXkiLCJzY29wZSIsInMiLCJlbGVtZW50cyIsIkFQUEVORF9PUENPREVTIiwiQWJzdHJhY3RPcGNvZGUiLCJ0b0pTT04iLCJndWlkIiwiX2d1aWQiLCJVcGRhdGluZ09wY29kZSIsImFyZ3VtZW50cyIsIm5leHQiLCJwcmV2Iiwib3Bjb2RlcyIsImJ1ZmZlciIsImZvckVhY2giLCJfaW5zcGVjdCIsImxldmVsIiwiaW5kZXgiLCJpbmRlbnRhdGlvbiIsInB1c2giLCJkZXRhaWxzIiwibGVuZ3RoIiwiY2hpbGRyZW4iXSwibWFwcGluZ3MiOiI7Ozs7OztRQXlCZ0JBLFUsR0FBQUEsVTtRQTRQQUMsTyxHQUFBQSxPOztBQXJSaEI7O0FBRUE7Ozs7OztBQU1PLElBQUlDLHVDQUFKO0FBQ1AsQ0FBQyxVQUFVQSxRQUFWLEVBQW9CO0FBQ2pCO0FBQ0FBLGFBQVNBLFNBQVMsSUFBVCxJQUFpQixDQUExQixJQUErQixJQUEvQjtBQUNBO0FBQ0FBLGFBQVNBLFNBQVMsSUFBVCxJQUFpQixDQUExQixJQUErQixJQUEvQjtBQUNBO0FBQ0FBLGFBQVNBLFNBQVMsSUFBVCxJQUFpQixDQUExQixJQUErQixJQUEvQjtBQUNBO0FBQ0FBLGFBQVNBLFNBQVMsSUFBVCxJQUFpQixDQUExQixJQUErQixJQUEvQjtBQUNBO0FBQ0FBLGFBQVNBLFNBQVMsSUFBVCxJQUFpQixDQUExQixJQUErQixJQUEvQjtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQTtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQUEsYUFBU0EsU0FBUyxJQUFULElBQWlCLENBQTFCLElBQStCLElBQS9CO0FBQ0gsQ0FmRCxFQWVHQSxxQkFoQlFBLFFBZ0JSLEdBQWFBLFdBQVcsRUFBeEIsQ0FmSDtBQWdCTyxTQUFTRixVQUFULENBQW9CRyxHQUFwQixFQUF5QkMsS0FBekIsRUFBZ0NDLEdBQWhDLEVBQXFDO0FBQ3hDLFFBQUksQ0FBQyxLQUFELElBQVUsS0FBZCxFQUFxQjtBQUNqQjtBQUNBLFlBQUksRUFBRUMsT0FBRixFQUFXQyxTQUFYLEtBQXlCSixHQUE3QjtBQUNBO0FBQ0EsWUFBSSxPQUFPSyxPQUFQLEtBQW1CLFdBQXZCLEVBQW9DO0FBQ2hDO0FBQ0g7QUFDRDtBQUNB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LE9BQU9RLElBQVgsRUFBaUI7QUFDYnVFLG1CQUFPTSxJQUFQLENBQVlyRixPQUFPUSxJQUFQLENBQVlNLElBQVosQ0FBaUIsSUFBakIsQ0FBWjtBQUNIO0FBQ0QsWUFBSWQsT0FBT3NGLE9BQVgsRUFBb0I7QUFDaEIsZ0JBQUk1RSxPQUFPRCxPQUFPQyxJQUFQLENBQVlWLE9BQU9zRixPQUFuQixDQUFYO0FBQ0EsZ0JBQUk1RSxLQUFLNkUsTUFBVCxFQUFpQjtBQUNiLG9CQUFJdkYsT0FBT1EsSUFBUCxJQUFlUixPQUFPUSxJQUFQLENBQVkrRSxNQUEvQixFQUF1QztBQUNuQ1IsMkJBQU9NLElBQVAsQ0FBWSxJQUFaO0FBQ0g7QUFDRE4sdUJBQU9NLElBQVAsQ0FBWTNFLEtBQUtDLEdBQUwsQ0FBU2lCLE9BQVEsR0FBRUEsR0FBSSxJQUFHNUIsT0FBT3NGLE9BQVAsSUFBa0J0RixPQUFPc0YsT0FBUCxDQUFlMUQsR0FBZixDQUFvQixFQUFoRSxFQUFtRWQsSUFBbkUsQ0FBd0UsSUFBeEUsQ0FBWjtBQUNIO0FBQ0o7QUFDRGlFLGVBQU9NLElBQVAsQ0FBWSxHQUFaO0FBQ0g7QUFDRE4sV0FBT00sSUFBUCxDQUFZLElBQVo7QUFDQSxRQUFJckYsT0FBT3dGLFFBQVAsSUFBbUJ4RixPQUFPd0YsUUFBUCxDQUFnQkQsTUFBdkMsRUFBK0M7QUFDM0MsYUFBSyxJQUFJNUYsSUFBSSxDQUFiLEVBQWdCQSxJQUFJSyxPQUFPd0YsUUFBUCxDQUFnQkQsTUFBcEMsRUFBNEM1RixHQUE1QyxFQUFpRDtBQUM3Q3NGLHFCQUFTakYsT0FBT3dGLFFBQVAsQ0FBZ0I3RixDQUFoQixDQUFULEVBQTZCb0YsTUFBN0IsRUFBcUNHLFFBQVEsQ0FBN0MsRUFBZ0R2RixDQUFoRDtBQUNIO0FBQ0o7QUFDSiIsImZpbGUiOiJsaWIvb3Bjb2Rlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluaXRpYWxpemVHdWlkLCBmaWxsTnVsbHMsIHVucmVhY2hhYmxlIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5cbi8qKlxuICogUmVnaXN0ZXJzXG4gKlxuICogRm9yIHRoZSBtb3N0IHBhcnQsIHRoZXNlIGZvbGxvd3MgTUlQUyBuYW1pbmcgY29udmVudGlvbnMsIGhvd2V2ZXIgdGhlXG4gKiByZWdpc3RlciBudW1iZXJzIGFyZSBkaWZmZXJlbnQuXG4gKi9cbmV4cG9ydCB2YXIgUmVnaXN0ZXI7XG4oZnVuY3Rpb24gKFJlZ2lzdGVyKSB7XG4gICAgLy8gJDAgb3IgJHBjIChwcm9ncmFtIGNvdW50ZXIpOiBwb2ludGVyIGludG8gYHByb2dyYW1gIGZvciB0aGUgbmV4dCBpbnN0dXJjdGlvbjsgLTEgbWVhbnMgZXhpdFxuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wicGNcIl0gPSAwXSA9IFwicGNcIjtcbiAgICAvLyAkMSBvciAkcmEgKHJldHVybiBhZGRyZXNzKTogcG9pbnRlciBpbnRvIGBwcm9ncmFtYCBmb3IgdGhlIHJldHVyblxuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wicmFcIl0gPSAxXSA9IFwicmFcIjtcbiAgICAvLyAkMiBvciAkZnAgKGZyYW1lIHBvaW50ZXIpOiBwb2ludGVyIGludG8gdGhlIGBldmFsU3RhY2tgIGZvciB0aGUgYmFzZSBvZiB0aGUgc3RhY2tcbiAgICBSZWdpc3RlcltSZWdpc3RlcltcImZwXCJdID0gMl0gPSBcImZwXCI7XG4gICAgLy8gJDMgb3IgJHNwIChzdGFjayBwb2ludGVyKTogcG9pbnRlciBpbnRvIHRoZSBgZXZhbFN0YWNrYCBmb3IgdGhlIHRvcCBvZiB0aGUgc3RhY2tcbiAgICBSZWdpc3RlcltSZWdpc3RlcltcInNwXCJdID0gM10gPSBcInNwXCI7XG4gICAgLy8gJDQtJDUgb3IgJHMwLSRzMSAoc2F2ZWQpOiBjYWxsZWUgc2F2ZWQgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyc1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wiczBcIl0gPSA0XSA9IFwiczBcIjtcbiAgICBSZWdpc3RlcltSZWdpc3RlcltcInMxXCJdID0gNV0gPSBcInMxXCI7XG4gICAgLy8gJDYtJDcgb3IgJHQwLSR0MSAodGVtcG9yYXJpZXMpOiBjYWxsZXIgc2F2ZWQgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyc1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1widDBcIl0gPSA2XSA9IFwidDBcIjtcbiAgICBSZWdpc3RlcltSZWdpc3RlcltcInQxXCJdID0gN10gPSBcInQxXCI7XG59KShSZWdpc3RlciB8fCAoUmVnaXN0ZXIgPSB7fSkpO1xuZXhwb3J0IGZ1bmN0aW9uIGRlYnVnU2xpY2UoZW52LCBzdGFydCwgZW5kKSB7XG4gICAgaWYgKCFmYWxzZSAmJiBmYWxzZSkge1xuICAgICAgICAvKiB0c2xpbnQ6ZGlzYWJsZTpuby1jb25zb2xlICovXG4gICAgICAgIGxldCB7IHByb2dyYW0sIGNvbnN0YW50cyB9ID0gZW52O1xuICAgICAgICAvLyBjb25zb2xlIGlzIG5vdCBhdmFpbGFibGUgaW4gSUU5XG4gICAgICAgIGlmICh0eXBlb2YgY29uc29sZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBJRTEwIGRvZXMgbm90IGhhdmUgYGNvbnNvbGUuZ3JvdXBgXG4gICAgICAgIGlmICh0eXBlb2YgY29uc29sZS5ncm91cCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUuZ3JvdXAoYCVjJHtzdGFydH06JHtlbmR9YCwgJ2NvbG9yOiAjOTk5Jyk7XG4gICAgICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8PSBlbmQ7IGkgKz0gNCkge1xuICAgICAgICAgICAgbGV0IHsgdHlwZSwgb3AxLCBvcDIsIG9wMyB9ID0gcHJvZ3JhbS5vcGNvZGUoaSk7XG4gICAgICAgICAgICBsZXQgW25hbWUsIHBhcmFtc10gPSBkZWJ1Zyhjb25zdGFudHMsIHR5cGUsIG9wMSwgb3AyLCBvcDMpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coYCR7aX0uICR7bG9nT3Bjb2RlKG5hbWUsIHBhcmFtcyl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5ncm91cEVuZCgpO1xuICAgICAgICAvKiB0c2xpbnQ6ZW5hYmxlOm5vLWNvbnNvbGUgKi9cbiAgICB9XG59XG5mdW5jdGlvbiBsb2dPcGNvZGUodHlwZSwgcGFyYW1zKSB7XG4gICAgaWYgKCFmYWxzZSAmJiBmYWxzZSkge1xuICAgICAgICBsZXQgb3V0ID0gdHlwZTtcbiAgICAgICAgaWYgKHBhcmFtcykge1xuICAgICAgICAgICAgbGV0IGFyZ3MgPSBPYmplY3Qua2V5cyhwYXJhbXMpLm1hcChwID0+IGAgJHtwfT0ke2pzb24ocGFyYW1zW3BdKX1gKS5qb2luKCcnKTtcbiAgICAgICAgICAgIG91dCArPSBhcmdzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgKCR7b3V0fSlgO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGpzb24ocGFyYW0pIHtcbiAgICBpZiAodHlwZW9mIHBhcmFtID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiAnPGZ1bmN0aW9uPic7XG4gICAgfVxuICAgIGxldCBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShwYXJhbSk7XG4gICAgaWYgKHN0cmluZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiAndW5kZWZpbmVkJztcbiAgICB9XG4gICAgbGV0IGRlYnVnID0gSlNPTi5wYXJzZShzdHJpbmcpO1xuICAgIGlmICh0eXBlb2YgZGVidWcgPT09ICdvYmplY3QnICYmIGRlYnVnICE9PSBudWxsICYmIGRlYnVnLkdsaW1tZXJEZWJ1ZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBkZWJ1Zy5HbGltbWVyRGVidWc7XG4gICAgfVxuICAgIHJldHVybiBzdHJpbmc7XG59XG5mdW5jdGlvbiBkZWJ1ZyhjLCBvcCwgb3AxLCBvcDIsIG9wMykge1xuICAgIGlmICghZmFsc2UgJiYgZmFsc2UpIHtcbiAgICAgICAgc3dpdGNoIChvcCkge1xuICAgICAgICAgICAgY2FzZSAwIC8qIEJ1ZyAqLzpcbiAgICAgICAgICAgICAgICB0aHJvdyB1bnJlYWNoYWJsZSgpO1xuICAgICAgICAgICAgY2FzZSAxIC8qIEhlbHBlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydIZWxwZXInLCB7IGhlbHBlcjogYy5nZXRGdW5jdGlvbihvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSAyIC8qIEZ1bmN0aW9uICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0Z1bmN0aW9uJywgeyBmdW5jdGlvbjogYy5nZXRGdW5jdGlvbihvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA0IC8qIFNldFZhcmlhYmxlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1NldFZhcmlhYmxlJywgeyBzeW1ib2w6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNSAvKiBHZXRWYXJpYWJsZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydHZXRWYXJpYWJsZScsIHsgc3ltYm9sOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDYgLyogR2V0UHJvcGVydHkgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnR2V0UHJvcGVydHknLCB7IGtleTogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgNyAvKiBQdXNoQmxvY2sgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaEJsb2NrJywgeyBibG9jazogYy5nZXRCbG9jayhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA4IC8qIEdldEJsb2NrICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0dldEJsb2NrJywgeyBzeW1ib2w6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgOSAvKiBIYXNCbG9jayAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydIYXNCbG9jaycsIHsgYmxvY2s6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTAgLyogSGFzQmxvY2tQYXJhbXMgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSGFzQmxvY2tQYXJhbXMnLCB7IGJsb2NrOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDExIC8qIENvbmNhdCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb25jYXQnLCB7IHNpemU6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTIgLyogSW1tZWRpYXRlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0ltbWVkaWF0ZScsIHsgdmFsdWU6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTMgLyogQ29uc3RhbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ29uc3RhbnQnLCB7IHZhbHVlOiBjLmdldE90aGVyKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDE0IC8qIFByaW1pdGl2ZVJlZmVyZW5jZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQcmltaXRpdmVSZWZlcmVuY2UnLCB7IHByaW1pdGl2ZTogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSAxNSAvKiBEdXAgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRHVwJywgeyByZWdpc3RlcjogUmVnaXN0ZXJbb3AxXSwgb2Zmc2V0OiBvcDIgfV07XG4gICAgICAgICAgICBjYXNlIDE2IC8qIFBvcCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQb3AnLCB7IGNvdW50OiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDE3IC8qIExvYWQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnTG9hZCcsIHsgcmVnaXN0ZXI6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDE4IC8qIEZldGNoICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0ZldGNoJywgeyByZWdpc3RlcjogUmVnaXN0ZXJbb3AxXSB9XTtcbiAgICAgICAgICAgIC8vLyBQUkVMVURFICYgRVhJVFxuICAgICAgICAgICAgY2FzZSAxOSAvKiBSb290U2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUm9vdFNjb3BlJywgeyBzeW1ib2xzOiBvcDEsIGJpbmRDYWxsZXJTY29wZTogISFvcDIgfV07XG4gICAgICAgICAgICBjYXNlIDIwIC8qIENoaWxkU2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ2hpbGRTY29wZScsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMjEgLyogUG9wU2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUG9wU2NvcGUnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDIyIC8qIFJldHVybiAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydSZXR1cm4nLCB7fV07XG4gICAgICAgICAgICAvLy8gSFRNTFxuICAgICAgICAgICAgY2FzZSAyMyAvKiBUZXh0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1RleHQnLCB7IHRleHQ6IGMuZ2V0U3RyaW5nKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDI0IC8qIENvbW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ29tbWVudCcsIHsgY29tbWVudDogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMjUgLyogRHluYW1pY0NvbnRlbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRHluYW1pY0NvbnRlbnQnLCB7IHZhbHVlOiBjLmdldE90aGVyKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDI2IC8qIE9wZW5FbGVtZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ09wZW5FbGVtZW50JywgeyB0YWc6IGMuZ2V0U3RyaW5nKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDI3IC8qIE9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnT3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucycsIHsgdGFnOiBjLmdldFN0cmluZyhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSAyOCAvKiBPcGVuRHluYW1pY0VsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnT3BlbkR5bmFtaWNFbGVtZW50Jywge31dO1xuICAgICAgICAgICAgY2FzZSAyOSAvKiBTdGF0aWNBdHRyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1N0YXRpY0F0dHInLCB7IG5hbWU6IGMuZ2V0U3RyaW5nKG9wMSksIHZhbHVlOiBjLmdldFN0cmluZyhvcDIpLCBuYW1lc3BhY2U6IG9wMyA/IGMuZ2V0U3RyaW5nKG9wMykgOiBudWxsIH1dO1xuICAgICAgICAgICAgY2FzZSAzMCAvKiBEeW5hbWljQXR0ciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEeW5hbWljQXR0cicsIHsgbmFtZTogYy5nZXRTdHJpbmcob3AxKSwgdHJ1c3Rpbmc6ICEhb3AyIH1dO1xuICAgICAgICAgICAgY2FzZSAzMSAvKiBEeW5hbWljQXR0ck5TICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0R5bmFtaWNBdHRyTlMnLCB7IG5hbWU6IGMuZ2V0U3RyaW5nKG9wMSksIG5zOiBjLmdldFN0cmluZyhvcDIpLCB0cnVzdGluZzogISFvcDIgfV07XG4gICAgICAgICAgICBjYXNlIDMyIC8qIEZsdXNoRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydGbHVzaEVsZW1lbnQnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDMzIC8qIENsb3NlRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDbG9zZUVsZW1lbnQnLCB7fV07XG4gICAgICAgICAgICAvLy8gTU9ESUZJRVJcbiAgICAgICAgICAgIGNhc2UgMzQgLyogTW9kaWZpZXIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnTW9kaWZpZXInLCB7fV07XG4gICAgICAgICAgICAvLy8gV09STUhPTEVcbiAgICAgICAgICAgIGNhc2UgMzUgLyogUHVzaFJlbW90ZUVsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaFJlbW90ZUVsZW1lbnQnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDM2IC8qIFBvcFJlbW90ZUVsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUG9wUmVtb3RlRWxlbWVudCcsIHt9XTtcbiAgICAgICAgICAgIC8vLyBEWU5BTUlDIFNDT1BFXG4gICAgICAgICAgICBjYXNlIDM3IC8qIEJpbmREeW5hbWljU2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQmluZER5bmFtaWNTY29wZScsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMzggLyogUHVzaER5bmFtaWNTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoRHluYW1pY1Njb3BlJywge31dO1xuICAgICAgICAgICAgY2FzZSAzOSAvKiBQb3BEeW5hbWljU2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUG9wRHluYW1pY1Njb3BlJywge31dO1xuICAgICAgICAgICAgLy8vIFZNXG4gICAgICAgICAgICBjYXNlIDQwIC8qIENvbXBpbGVEeW5hbWljQmxvY2sgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ29tcGlsZUR5bmFtaWNCbG9jaycsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNDEgLyogSW52b2tlU3RhdGljICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0ludm9rZVN0YXRpYycsIHsgYmxvY2s6IGMuZ2V0QmxvY2sob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDIgLyogSW52b2tlRHluYW1pYyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydJbnZva2VEeW5hbWljJywgeyBpbnZva2VyOiBjLmdldE90aGVyKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDQzIC8qIEp1bXAgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSnVtcCcsIHsgdG86IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDQgLyogSnVtcElmICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0p1bXBJZicsIHsgdG86IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDUgLyogSnVtcFVubGVzcyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydKdW1wVW5sZXNzJywgeyB0bzogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA0NiAvKiBQdXNoRnJhbWUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaEZyYW1lJywge31dO1xuICAgICAgICAgICAgY2FzZSA0NyAvKiBQb3BGcmFtZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQb3BGcmFtZScsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNDggLyogRW50ZXIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRW50ZXInLCB7IGFyZ3M6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDkgLyogRXhpdCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydFeGl0Jywge31dO1xuICAgICAgICAgICAgY2FzZSA1MCAvKiBUZXN0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1RvQm9vbGVhbicsIHt9XTtcbiAgICAgICAgICAgIC8vLyBMSVNUU1xuICAgICAgICAgICAgY2FzZSA1MSAvKiBFbnRlckxpc3QgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRW50ZXJMaXN0JywgeyBzdGFydDogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA1MiAvKiBFeGl0TGlzdCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydFeGl0TGlzdCcsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNTMgLyogUHV0SXRlcmF0b3IgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHV0SXRlcmF0b3InLCB7fV07XG4gICAgICAgICAgICBjYXNlIDU0IC8qIEl0ZXJhdGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSXRlcmF0ZScsIHsgZW5kOiBvcDEgfV07XG4gICAgICAgICAgICAvLy8gQ09NUE9ORU5UU1xuICAgICAgICAgICAgY2FzZSA1NSAvKiBQdXNoQ29tcG9uZW50TWFuYWdlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoQ29tcG9uZW50TWFuYWdlcicsIHsgZGVmaW5pdGlvbjogYy5nZXRPdGhlcihvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA1NiAvKiBQdXNoRHluYW1pY0NvbXBvbmVudE1hbmFnZXIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyJywge31dO1xuICAgICAgICAgICAgY2FzZSA1NyAvKiBJbml0aWFsaXplQ29tcG9uZW50U3RhdGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSW5pdGlhbGl6ZUNvbXBvbmVudFN0YXRlJywge31dO1xuICAgICAgICAgICAgY2FzZSA1OCAvKiBQdXNoQXJncyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoQXJncycsIHsgcG9zaXRpb25hbDogb3AxLCBzeW50aGV0aWM6ICEhb3AyIH1dO1xuICAgICAgICAgICAgY2FzZSA1OSAvKiBQcmVwYXJlQXJncyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQcmVwYXJlQXJncycsIHsgc3RhdGU6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDYwIC8qIENyZWF0ZUNvbXBvbmVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDcmVhdGVDb21wb25lbnQnLCB7IGZsYWdzOiBvcDEsIHN0YXRlOiBSZWdpc3RlcltvcDJdIH1dO1xuICAgICAgICAgICAgY2FzZSA2MSAvKiBSZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3IgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yJywge31dO1xuICAgICAgICAgICAgY2FzZSA2MiAvKiBQdXNoQ29tcG9uZW50T3BlcmF0aW9ucyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoQ29tcG9uZW50T3BlcmF0aW9ucycsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNjMgLyogR2V0Q29tcG9uZW50U2VsZiAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydHZXRDb21wb25lbnRTZWxmJywgeyBzdGF0ZTogUmVnaXN0ZXJbb3AxXSB9XTtcbiAgICAgICAgICAgIGNhc2UgNjQgLyogR2V0Q29tcG9uZW50TGF5b3V0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0dldENvbXBvbmVudExheW91dCcsIHsgc3RhdGU6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDY1IC8qIEJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24gKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbicsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNjYgLyogQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24gKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24nLCB7fV07XG4gICAgICAgICAgICBjYXNlIDY3IC8qIERpZENyZWF0ZUVsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRGlkQ3JlYXRlRWxlbWVudCcsIHsgc3RhdGU6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDY4IC8qIERpZFJlbmRlckxheW91dCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEaWRSZW5kZXJMYXlvdXQnLCB7fV07XG4gICAgICAgICAgICAvLy8gUEFSVElBTFNcbiAgICAgICAgICAgIGNhc2UgNjkgLyogR2V0UGFydGlhbFRlbXBsYXRlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0NvbXBpbGVQYXJ0aWFsJywge31dO1xuICAgICAgICAgICAgY2FzZSA3MCAvKiBSZXNvbHZlTWF5YmVMb2NhbCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydSZXNvbHZlTWF5YmVMb2NhbCcsIHsgbmFtZTogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIC8vLyBERUJVR0dFUlxuICAgICAgICAgICAgY2FzZSA3MSAvKiBEZWJ1Z2dlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEZWJ1Z2dlcicsIHsgc3ltYm9sczogYy5nZXRPdGhlcihvcDEpLCBldmFsSW5mbzogYy5nZXRBcnJheShvcDIpIH1dO1xuICAgICAgICAgICAgLy8vIFNUQVRFTUVOVFNcbiAgICAgICAgICAgIGNhc2UgNzIgLyogU2l6ZSAqLzpcbiAgICAgICAgICAgICAgICB0aHJvdyB1bnJlYWNoYWJsZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IHVucmVhY2hhYmxlKCk7XG4gICAgfVxuICAgIHJldHVybiBbJycsIHt9XTtcbn1cbmV4cG9ydCBjbGFzcyBBcHBlbmRPcGNvZGVzIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5ldmFsdWF0ZU9wY29kZSA9IGZpbGxOdWxscyg3MiAvKiBTaXplICovKS5zbGljZSgpO1xuICAgIH1cbiAgICBhZGQobmFtZSwgZXZhbHVhdGUpIHtcbiAgICAgICAgdGhpcy5ldmFsdWF0ZU9wY29kZVtuYW1lXSA9IGV2YWx1YXRlO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSwgb3Bjb2RlLCB0eXBlKSB7XG4gICAgICAgIGxldCBmdW5jID0gdGhpcy5ldmFsdWF0ZU9wY29kZVt0eXBlXTtcbiAgICAgICAgaWYgKCFmYWxzZSAmJiBmYWxzZSkge1xuICAgICAgICAgICAgLyogdHNsaW50OmRpc2FibGUgKi9cbiAgICAgICAgICAgIGxldCBbbmFtZSwgcGFyYW1zXSA9IGRlYnVnKHZtLmNvbnN0YW50cywgb3Bjb2RlLnR5cGUsIG9wY29kZS5vcDEsIG9wY29kZS5vcDIsIG9wY29kZS5vcDMpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coYCR7dm1bJ3BjJ10gLSA0fS4gJHtsb2dPcGNvZGUobmFtZSwgcGFyYW1zKX1gKTtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKC4uLmRlYnVnKHZtLmNvbnN0YW50cywgdHlwZSwgb3Bjb2RlLm9wMSwgb3Bjb2RlLm9wMiwgb3Bjb2RlLm9wMykpO1xuICAgICAgICAgICAgLyogdHNsaW50OmVuYWJsZSAqL1xuICAgICAgICB9XG4gICAgICAgIGZ1bmModm0sIG9wY29kZSk7XG4gICAgICAgIGlmICghZmFsc2UgJiYgZmFsc2UpIHtcbiAgICAgICAgICAgIC8qIHRzbGludDpkaXNhYmxlICovXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnJWMgLT4gcGM6ICVkLCByYTogJWQsIGZwOiAlZCwgc3A6ICVkLCBzMDogJU8sIHMxOiAlTywgdDA6ICVPLCB0MTogJU8nLCAnY29sb3I6IG9yYW5nZScsIHZtWydwYyddLCB2bVsncmEnXSwgdm1bJ2ZwJ10sIHZtWydzcCddLCB2bVsnczAnXSwgdm1bJ3MxJ10sIHZtWyd0MCddLCB2bVsndDEnXSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnJWMgLT4gZXZhbCBzdGFjaycsICdjb2xvcjogcmVkJywgdm0uc3RhY2sudG9BcnJheSgpKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCclYyAtPiBzY29wZScsICdjb2xvcjogZ3JlZW4nLCB2bS5zY29wZSgpWydzbG90cyddLm1hcChzID0+IHMgJiYgc1sndmFsdWUnXSA/IHNbJ3ZhbHVlJ10oKSA6IHMpKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCclYyAtPiBlbGVtZW50cycsICdjb2xvcjogYmx1ZScsIHZtLmVsZW1lbnRzKClbJ2VsZW1lbnRTdGFjayddLnRvQXJyYXkoKSk7XG4gICAgICAgICAgICAvKiB0c2xpbnQ6ZW5hYmxlICovXG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnQgY29uc3QgQVBQRU5EX09QQ09ERVMgPSBuZXcgQXBwZW5kT3Bjb2RlcygpO1xuZXhwb3J0IGNsYXNzIEFic3RyYWN0T3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgaW5pdGlhbGl6ZUd1aWQodGhpcyk7XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgcmV0dXJuIHsgZ3VpZDogdGhpcy5fZ3VpZCwgdHlwZTogdGhpcy50eXBlIH07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFVwZGF0aW5nT3Bjb2RlIGV4dGVuZHMgQWJzdHJhY3RPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLm5leHQgPSBudWxsO1xuICAgICAgICB0aGlzLnByZXYgPSBudWxsO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBpbnNwZWN0KG9wY29kZXMpIHtcbiAgICBsZXQgYnVmZmVyID0gW107XG4gICAgb3Bjb2Rlcy5mb3JFYWNoKChvcGNvZGUsIGkpID0+IHtcbiAgICAgICAgX2luc3BlY3Qob3Bjb2RlLnRvSlNPTigpLCBidWZmZXIsIDAsIGkpO1xuICAgIH0pO1xuICAgIHJldHVybiBidWZmZXIuam9pbignJyk7XG59XG5mdW5jdGlvbiBfaW5zcGVjdChvcGNvZGUsIGJ1ZmZlciwgbGV2ZWwsIGluZGV4KSB7XG4gICAgbGV0IGluZGVudGF0aW9uID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZXZlbDsgaSsrKSB7XG4gICAgICAgIGluZGVudGF0aW9uLnB1c2goJyAgJyk7XG4gICAgfVxuICAgIGJ1ZmZlci5wdXNoKC4uLmluZGVudGF0aW9uKTtcbiAgICBidWZmZXIucHVzaChgJHtpbmRleH0uICR7b3Bjb2RlLnR5cGV9YCk7XG4gICAgaWYgKG9wY29kZS5hcmdzIHx8IG9wY29kZS5kZXRhaWxzKSB7XG4gICAgICAgIGJ1ZmZlci5wdXNoKCcoJyk7XG4gICAgICAgIGlmIChvcGNvZGUuYXJncykge1xuICAgICAgICAgICAgYnVmZmVyLnB1c2gob3Bjb2RlLmFyZ3Muam9pbignLCAnKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wY29kZS5kZXRhaWxzKSB7XG4gICAgICAgICAgICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKG9wY29kZS5kZXRhaWxzKTtcbiAgICAgICAgICAgIGlmIChrZXlzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGlmIChvcGNvZGUuYXJncyAmJiBvcGNvZGUuYXJncy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmZmVyLnB1c2goJywgJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJ1ZmZlci5wdXNoKGtleXMubWFwKGtleSA9PiBgJHtrZXl9PSR7b3Bjb2RlLmRldGFpbHMgJiYgb3Bjb2RlLmRldGFpbHNba2V5XX1gKS5qb2luKCcsICcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBidWZmZXIucHVzaCgnKScpO1xuICAgIH1cbiAgICBidWZmZXIucHVzaCgnXFxuJyk7XG4gICAgaWYgKG9wY29kZS5jaGlsZHJlbiAmJiBvcGNvZGUuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3Bjb2RlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBfaW5zcGVjdChvcGNvZGUuY2hpbGRyZW5baV0sIGJ1ZmZlciwgbGV2ZWwgKyAxLCBpKTtcbiAgICAgICAgfVxuICAgIH1cbn0iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9vcGNvZGVzLmpzIl0sIm5hbWVzIjpbImRlYnVnU2xpY2UiLCJpbnNwZWN0IiwiUmVnaXN0ZXIiLCJlbnYiLCJzdGFydCIsImVuZCIsInByb2dyYW0iLCJjb25zdGFudHMiLCJjb25zb2xlIiwiZ3JvdXAiLCJpIiwidHlwZSIsIm9wMSIsIm9wMiIsIm9wMyIsIm9wY29kZSIsIm5hbWUiLCJwYXJhbXMiLCJkZWJ1ZyIsImxvZyIsImxvZ09wY29kZSIsImdyb3VwRW5kIiwib3V0IiwiYXJncyIsIk9iamVjdCIsImtleXMiLCJtYXAiLCJwIiwianNvbiIsImpvaW4iLCJwYXJhbSIsInN0cmluZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJ1bmRlZmluZWQiLCJwYXJzZSIsImMiLCJvcCIsImhlbHBlciIsImdldEZ1bmN0aW9uIiwiZnVuY3Rpb24iLCJzeW1ib2wiLCJrZXkiLCJnZXRTdHJpbmciLCJibG9jayIsImdldEJsb2NrIiwic2l6ZSIsInZhbHVlIiwiZ2V0T3RoZXIiLCJwcmltaXRpdmUiLCJyZWdpc3RlciIsIm9mZnNldCIsImNvdW50Iiwic3ltYm9scyIsImJpbmRDYWxsZXJTY29wZSIsInRleHQiLCJjb21tZW50IiwidGFnIiwibmFtZXNwYWNlIiwidHJ1c3RpbmciLCJucyIsImludm9rZXIiLCJ0byIsImRlZmluaXRpb24iLCJwb3NpdGlvbmFsIiwic3ludGhldGljIiwic3RhdGUiLCJmbGFncyIsImV2YWxJbmZvIiwiZ2V0QXJyYXkiLCJBcHBlbmRPcGNvZGVzIiwiY29uc3RydWN0b3IiLCJldmFsdWF0ZU9wY29kZSIsInNsaWNlIiwiYWRkIiwiZXZhbHVhdGUiLCJ2bSIsImZ1bmMiLCJzdGFjayIsInRvQXJyYXkiLCJzY29wZSIsInMiLCJlbGVtZW50cyIsIkFQUEVORF9PUENPREVTIiwiQWJzdHJhY3RPcGNvZGUiLCJ0b0pTT04iLCJndWlkIiwiX2d1aWQiLCJVcGRhdGluZ09wY29kZSIsImFyZ3VtZW50cyIsIm5leHQiLCJwcmV2Iiwib3Bjb2RlcyIsImJ1ZmZlciIsImZvckVhY2giLCJfaW5zcGVjdCIsImxldmVsIiwiaW5kZXgiLCJpbmRlbnRhdGlvbiIsInB1c2giLCJkZXRhaWxzIiwibGVuZ3RoIiwiY2hpbGRyZW4iXSwibWFwcGluZ3MiOiI7Ozs7OztRQXlCZ0JBLFUsR0FBQUEsVTtRQW9QQUMsTyxHQUFBQSxPOztBQTdRaEI7O0FBRUE7Ozs7OztBQU1PLElBQUlDLHVDQUFKO0FBQ1AsQ0FBQyxVQUFVQSxRQUFWLEVBQW9CO0FBQ2pCO0FBQ0FBLGFBQVNBLFNBQVMsSUFBVCxJQUFpQixDQUExQixJQUErQixJQUEvQjtBQUNBO0FBQ0FBLGFBQVNBLFNBQVMsSUFBVCxJQUFpQixDQUExQixJQUErQixJQUEvQjtBQUNBO0FBQ0FBLGFBQVNBLFNBQVMsSUFBVCxJQUFpQixDQUExQixJQUErQixJQUEvQjtBQUNBO0FBQ0FBLGFBQVNBLFNBQVMsSUFBVCxJQUFpQixDQUExQixJQUErQixJQUEvQjtBQUNBO0FBQ0FBLGFBQVNBLFNBQVMsSUFBVCxJQUFpQixDQUExQixJQUErQixJQUEvQjtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQTtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQUEsYUFBU0EsU0FBUyxJQUFULElBQWlCLENBQTFCLElBQStCLElBQS9CO0FBQ0gsQ0FmRCxFQWVHQSxxQkFoQlFBLFFBZ0JSLEdBQWFBLFdBQVcsRUFBeEIsQ0FmSDtBQWdCTyxTQUFTRixVQUFULENBQW9CRyxHQUFwQixFQUF5QkMsS0FBekIsRUFBZ0NDLEdBQWhDLEVBQXFDO0FBQ3hDLFFBQUksQ0FBQyxLQUFELElBQVUsS0FBZCxFQUFxQjtBQUNqQixZQUFJLEVBQUVDLE9BQUYsRUFBV0MsU0FBWCxLQUF5QkosR0FBN0I7QUFDQTtBQUNBLFlBQUksT0FBT0ssT0FBUCxLQUFtQixXQUF2QixFQUFvQztBQUNoQztBQUNIO0FBQ0Q7QUFDQSxZQUFJLE9BQU9BLFFBQVFDLEtB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QUFpQixJQUFqQixDQUFaO0FBQ0g7QUFDRCxZQUFJZCxPQUFPcUYsT0FBWCxFQUFvQjtBQUNoQixnQkFBSTNFLE9BQU9ELE9BQU9DLElBQVAsQ0FBWVYsT0FBT3FGLE9BQW5CLENBQVg7QUFDQSxnQkFBSTNFLEtBQUs0RSxNQUFULEVBQWlCO0FBQ2Isb0JBQUl0RixPQUFPUSxJQUFQLElBQWVSLE9BQU9RLElBQVAsQ0FBWThFLE1BQS9CLEVBQXVDO0FBQ25DUiwyQkFBT00sSUFBUCxDQUFZLElBQVo7QUFDSDtBQUNETix1QkFBT00sSUFBUCxDQUFZMUUsS0FBS0MsR0FBTCxDQUFTZ0IsT0FBUSxHQUFFQSxHQUFJLElBQUczQixPQUFPcUYsT0FBUCxJQUFrQnJGLE9BQU9xRixPQUFQLENBQWUxRCxHQUFmLENBQW9CLEVBQWhFLEVBQW1FYixJQUFuRSxDQUF3RSxJQUF4RSxDQUFaO0FBQ0g7QUFDSjtBQUNEZ0UsZUFBT00sSUFBUCxDQUFZLEdBQVo7QUFDSDtBQUNETixXQUFPTSxJQUFQLENBQVksSUFBWjtBQUNBLFFBQUlwRixPQUFPdUYsUUFBUCxJQUFtQnZGLE9BQU91RixRQUFQLENBQWdCRCxNQUF2QyxFQUErQztBQUMzQyxhQUFLLElBQUkzRixJQUFJLENBQWIsRUFBZ0JBLElBQUlLLE9BQU91RixRQUFQLENBQWdCRCxNQUFwQyxFQUE0QzNGLEdBQTVDLEVBQWlEO0FBQzdDcUYscUJBQVNoRixPQUFPdUYsUUFBUCxDQUFnQjVGLENBQWhCLENBQVQsRUFBNkJtRixNQUE3QixFQUFxQ0csUUFBUSxDQUE3QyxFQUFnRHRGLENBQWhEO0FBQ0g7QUFDSjtBQUNKIiwiZmlsZSI6ImxpYi9vcGNvZGVzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5pdGlhbGl6ZUd1aWQsIGZpbGxOdWxscywgdW5yZWFjaGFibGUgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuLyoqXG4gKiBSZWdpc3RlcnNcbiAqXG4gKiBGb3IgdGhlIG1vc3QgcGFydCwgdGhlc2UgZm9sbG93cyBNSVBTIG5hbWluZyBjb252ZW50aW9ucywgaG93ZXZlciB0aGVcbiAqIHJlZ2lzdGVyIG51bWJlcnMgYXJlIGRpZmZlcmVudC5cbiAqL1xuZXhwb3J0IHZhciBSZWdpc3RlcjtcbihmdW5jdGlvbiAoUmVnaXN0ZXIpIHtcbiAgICAvLyAkMCBvciAkcGMgKHByb2dyYW0gY291bnRlcik6IHBvaW50ZXIgaW50byBgcHJvZ3JhbWAgZm9yIHRoZSBuZXh0IGluc3R1cmN0aW9uOyAtMSBtZWFucyBleGl0XG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJwY1wiXSA9IDBdID0gXCJwY1wiO1xuICAgIC8vICQxIG9yICRyYSAocmV0dXJuIGFkZHJlc3MpOiBwb2ludGVyIGludG8gYHByb2dyYW1gIGZvciB0aGUgcmV0dXJuXG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJyYVwiXSA9IDFdID0gXCJyYVwiO1xuICAgIC8vICQyIG9yICRmcCAoZnJhbWUgcG9pbnRlcik6IHBvaW50ZXIgaW50byB0aGUgYGV2YWxTdGFja2AgZm9yIHRoZSBiYXNlIG9mIHRoZSBzdGFja1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wiZnBcIl0gPSAyXSA9IFwiZnBcIjtcbiAgICAvLyAkMyBvciAkc3AgKHN0YWNrIHBvaW50ZXIpOiBwb2ludGVyIGludG8gdGhlIGBldmFsU3RhY2tgIGZvciB0aGUgdG9wIG9mIHRoZSBzdGFja1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wic3BcIl0gPSAzXSA9IFwic3BcIjtcbiAgICAvLyAkNC0kNSBvciAkczAtJHMxIChzYXZlZCk6IGNhbGxlZSBzYXZlZCBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzXG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJzMFwiXSA9IDRdID0gXCJzMFwiO1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wiczFcIl0gPSA1XSA9IFwiczFcIjtcbiAgICAvLyAkNi0kNyBvciAkdDAtJHQxICh0ZW1wb3Jhcmllcyk6IGNhbGxlciBzYXZlZCBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzXG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJ0MFwiXSA9IDZdID0gXCJ0MFwiO1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1widDFcIl0gPSA3XSA9IFwidDFcIjtcbn0pKFJlZ2lzdGVyIHx8IChSZWdpc3RlciA9IHt9KSk7XG5leHBvcnQgZnVuY3Rpb24gZGVidWdTbGljZShlbnYsIHN0YXJ0LCBlbmQpIHtcbiAgICBpZiAoIWZhbHNlICYmIGZhbHNlKSB7XG4gICAgICAgIGxldCB7IHByb2dyYW0sIGNvbnN0YW50cyB9ID0gZW52O1xuICAgICAgICAvLyBjb25zb2xlIGlzIG5vdCBhdmFpbGFibGUgaW4gSUU5XG4gICAgICAgIGlmICh0eXBlb2YgY29uc29sZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBJRTEwIGRvZXMgbm90IGhhdmUgYGNvbnNvbGUuZ3JvdXBgXG4gICAgICAgIGlmICh0eXBlb2YgY29uc29sZS5ncm91cCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUuZ3JvdXAoYCVjJHtzdGFydH06JHtlbmR9YCwgJ2NvbG9yOiAjOTk5Jyk7XG4gICAgICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8PSBlbmQ7IGkgKz0gNCkge1xuICAgICAgICAgICAgbGV0IHsgdHlwZSwgb3AxLCBvcDIsIG9wMyB9ID0gcHJvZ3JhbS5vcGNvZGUoaSk7XG4gICAgICAgICAgICBsZXQgW25hbWUsIHBhcmFtc10gPSBkZWJ1Zyhjb25zdGFudHMsIHR5cGUsIG9wMSwgb3AyLCBvcDMpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coYCR7aX0uICR7bG9nT3Bjb2RlKG5hbWUsIHBhcmFtcyl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5ncm91cEVuZCgpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGxvZ09wY29kZSh0eXBlLCBwYXJhbXMpIHtcbiAgICBpZiAoIWZhbHNlICYmIGZhbHNlKSB7XG4gICAgICAgIGxldCBvdXQgPSB0eXBlO1xuICAgICAgICBpZiAocGFyYW1zKSB7XG4gICAgICAgICAgICBsZXQgYXJncyA9IE9iamVjdC5rZXlzKHBhcmFtcykubWFwKHAgPT4gYCAke3B9PSR7anNvbihwYXJhbXNbcF0pfWApLmpvaW4oJycpO1xuICAgICAgICAgICAgb3V0ICs9IGFyZ3M7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAoJHtvdXR9KWA7XG4gICAgfVxufVxuZnVuY3Rpb24ganNvbihwYXJhbSkge1xuICAgIGlmICh0eXBlb2YgcGFyYW0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuICc8ZnVuY3Rpb24+JztcbiAgICB9XG4gICAgbGV0IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KHBhcmFtKTtcbiAgICBpZiAoc3RyaW5nID09PSB1bmRlZmluZWQpIHJldHVybiAndW5kZWZpbmVkJztcbiAgICBsZXQgZGVidWcgPSBKU09OLnBhcnNlKHN0cmluZyk7XG4gICAgaWYgKHR5cGVvZiBkZWJ1ZyA9PT0gJ29iamVjdCcgJiYgZGVidWcgJiYgZGVidWdbJ0dsaW1tZXJEZWJ1ZyddKSB7XG4gICAgICAgIHJldHVybiBkZWJ1Z1snR2xpbW1lckRlYnVnJ107XG4gICAgfVxuICAgIHJldHVybiBzdHJpbmc7XG59XG5mdW5jdGlvbiBkZWJ1ZyhjLCBvcCwgb3AxLCBvcDIsIG9wMykge1xuICAgIGlmICghZmFsc2UgJiYgZmFsc2UpIHtcbiAgICAgICAgc3dpdGNoIChvcCkge1xuICAgICAgICAgICAgY2FzZSAwIC8qIEJ1ZyAqLzpcbiAgICAgICAgICAgICAgICB0aHJvdyB1bnJlYWNoYWJsZSgpO1xuICAgICAgICAgICAgY2FzZSAxIC8qIEhlbHBlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydIZWxwZXInLCB7IGhlbHBlcjogYy5nZXRGdW5jdGlvbihvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSAyIC8qIEZ1bmN0aW9uICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0Z1bmN0aW9uJywgeyBmdW5jdGlvbjogYy5nZXRGdW5jdGlvbihvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA0IC8qIFNldFZhcmlhYmxlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1NldFZhcmlhYmxlJywgeyBzeW1ib2w6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNSAvKiBHZXRWYXJpYWJsZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydHZXRWYXJpYWJsZScsIHsgc3ltYm9sOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDYgLyogR2V0UHJvcGVydHkgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnR2V0UHJvcGVydHknLCB7IGtleTogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgNyAvKiBQdXNoQmxvY2sgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaEJsb2NrJywgeyBibG9jazogYy5nZXRCbG9jayhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA4IC8qIEdldEJsb2NrICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0dldEJsb2NrJywgeyBzeW1ib2w6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgOSAvKiBIYXNCbG9jayAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydIYXNCbG9jaycsIHsgYmxvY2s6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTAgLyogSGFzQmxvY2tQYXJhbXMgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSGFzQmxvY2tQYXJhbXMnLCB7IGJsb2NrOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDExIC8qIENvbmNhdCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb25jYXQnLCB7IHNpemU6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTIgLyogSW1tZWRpYXRlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0ltbWVkaWF0ZScsIHsgdmFsdWU6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTMgLyogQ29uc3RhbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ29uc3RhbnQnLCB7IHZhbHVlOiBjLmdldE90aGVyKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDE0IC8qIFByaW1pdGl2ZVJlZmVyZW5jZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQcmltaXRpdmVSZWZlcmVuY2UnLCB7IHByaW1pdGl2ZTogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSAxNSAvKiBEdXAgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRHVwJywgeyByZWdpc3RlcjogUmVnaXN0ZXJbb3AxXSwgb2Zmc2V0OiBvcDIgfV07XG4gICAgICAgICAgICBjYXNlIDE2IC8qIFBvcCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQb3AnLCB7IGNvdW50OiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDE3IC8qIExvYWQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnTG9hZCcsIHsgcmVnaXN0ZXI6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDE4IC8qIEZldGNoICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0ZldGNoJywgeyByZWdpc3RlcjogUmVnaXN0ZXJbb3AxXSB9XTtcbiAgICAgICAgICAgIC8vLyBQUkVMVURFICYgRVhJVFxuICAgICAgICAgICAgY2FzZSAxOSAvKiBSb290U2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUm9vdFNjb3BlJywgeyBzeW1ib2xzOiBvcDEsIGJpbmRDYWxsZXJTY29wZTogISFvcDIgfV07XG4gICAgICAgICAgICBjYXNlIDIwIC8qIENoaWxkU2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ2hpbGRTY29wZScsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMjEgLyogUG9wU2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUG9wU2NvcGUnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDIyIC8qIFJldHVybiAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydSZXR1cm4nLCB7fV07XG4gICAgICAgICAgICAvLy8gSFRNTFxuICAgICAgICAgICAgY2FzZSAyMyAvKiBUZXh0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1RleHQnLCB7IHRleHQ6IGMuZ2V0U3RyaW5nKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDI0IC8qIENvbW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ29tbWVudCcsIHsgY29tbWVudDogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMjUgLyogRHluYW1pY0NvbnRlbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRHluYW1pY0NvbnRlbnQnLCB7IHZhbHVlOiBjLmdldE90aGVyKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDI2IC8qIE9wZW5FbGVtZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ09wZW5FbGVtZW50JywgeyB0YWc6IGMuZ2V0U3RyaW5nKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDI3IC8qIE9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnT3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucycsIHsgdGFnOiBjLmdldFN0cmluZyhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSAyOCAvKiBPcGVuRHluYW1pY0VsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnT3BlbkR5bmFtaWNFbGVtZW50Jywge31dO1xuICAgICAgICAgICAgY2FzZSAyOSAvKiBTdGF0aWNBdHRyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1N0YXRpY0F0dHInLCB7IG5hbWU6IGMuZ2V0U3RyaW5nKG9wMSksIHZhbHVlOiBjLmdldFN0cmluZyhvcDIpLCBuYW1lc3BhY2U6IG9wMyA/IGMuZ2V0U3RyaW5nKG9wMykgOiBudWxsIH1dO1xuICAgICAgICAgICAgY2FzZSAzMCAvKiBEeW5hbWljQXR0ciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEeW5hbWljQXR0cicsIHsgbmFtZTogYy5nZXRTdHJpbmcob3AxKSwgdHJ1c3Rpbmc6ICEhb3AyIH1dO1xuICAgICAgICAgICAgY2FzZSAzMSAvKiBEeW5hbWljQXR0ck5TICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0R5bmFtaWNBdHRyTlMnLCB7IG5hbWU6IGMuZ2V0U3RyaW5nKG9wMSksIG5zOiBjLmdldFN0cmluZyhvcDIpLCB0cnVzdGluZzogISFvcDIgfV07XG4gICAgICAgICAgICBjYXNlIDMyIC8qIEZsdXNoRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydGbHVzaEVsZW1lbnQnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDMzIC8qIENsb3NlRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDbG9zZUVsZW1lbnQnLCB7fV07XG4gICAgICAgICAgICAvLy8gTU9ESUZJRVJcbiAgICAgICAgICAgIGNhc2UgMzQgLyogTW9kaWZpZXIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnTW9kaWZpZXInLCB7fV07XG4gICAgICAgICAgICAvLy8gV09STUhPTEVcbiAgICAgICAgICAgIGNhc2UgMzUgLyogUHVzaFJlbW90ZUVsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaFJlbW90ZUVsZW1lbnQnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDM2IC8qIFBvcFJlbW90ZUVsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUG9wUmVtb3RlRWxlbWVudCcsIHt9XTtcbiAgICAgICAgICAgIC8vLyBEWU5BTUlDIFNDT1BFXG4gICAgICAgICAgICBjYXNlIDM3IC8qIEJpbmREeW5hbWljU2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQmluZER5bmFtaWNTY29wZScsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMzggLyogUHVzaER5bmFtaWNTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoRHluYW1pY1Njb3BlJywge31dO1xuICAgICAgICAgICAgY2FzZSAzOSAvKiBQb3BEeW5hbWljU2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUG9wRHluYW1pY1Njb3BlJywge31dO1xuICAgICAgICAgICAgLy8vIFZNXG4gICAgICAgICAgICBjYXNlIDQwIC8qIENvbXBpbGVEeW5hbWljQmxvY2sgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ29tcGlsZUR5bmFtaWNCbG9jaycsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNDEgLyogSW52b2tlU3RhdGljICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0ludm9rZVN0YXRpYycsIHsgYmxvY2s6IGMuZ2V0QmxvY2sob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDIgLyogSW52b2tlRHluYW1pYyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydJbnZva2VEeW5hbWljJywgeyBpbnZva2VyOiBjLmdldE90aGVyKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDQzIC8qIEp1bXAgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSnVtcCcsIHsgdG86IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDQgLyogSnVtcElmICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0p1bXBJZicsIHsgdG86IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDUgLyogSnVtcFVubGVzcyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydKdW1wVW5sZXNzJywgeyB0bzogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA0NiAvKiBQdXNoRnJhbWUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaEZyYW1lJywge31dO1xuICAgICAgICAgICAgY2FzZSA0NyAvKiBQb3BGcmFtZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQb3BGcmFtZScsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNDggLyogRW50ZXIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRW50ZXInLCB7IGFyZ3M6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDkgLyogRXhpdCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydFeGl0Jywge31dO1xuICAgICAgICAgICAgY2FzZSA1MCAvKiBUZXN0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1RvQm9vbGVhbicsIHt9XTtcbiAgICAgICAgICAgIC8vLyBMSVNUU1xuICAgICAgICAgICAgY2FzZSA1MSAvKiBFbnRlckxpc3QgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRW50ZXJMaXN0JywgeyBzdGFydDogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA1MiAvKiBFeGl0TGlzdCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydFeGl0TGlzdCcsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNTMgLyogUHV0SXRlcmF0b3IgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHV0SXRlcmF0b3InLCB7fV07XG4gICAgICAgICAgICBjYXNlIDU0IC8qIEl0ZXJhdGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSXRlcmF0ZScsIHsgZW5kOiBvcDEgfV07XG4gICAgICAgICAgICAvLy8gQ09NUE9ORU5UU1xuICAgICAgICAgICAgY2FzZSA1NSAvKiBQdXNoQ29tcG9uZW50TWFuYWdlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoQ29tcG9uZW50TWFuYWdlcicsIHsgZGVmaW5pdGlvbjogYy5nZXRPdGhlcihvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA1NiAvKiBQdXNoRHluYW1pY0NvbXBvbmVudE1hbmFnZXIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyJywge31dO1xuICAgICAgICAgICAgY2FzZSA1NyAvKiBJbml0aWFsaXplQ29tcG9uZW50U3RhdGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSW5pdGlhbGl6ZUNvbXBvbmVudFN0YXRlJywge31dO1xuICAgICAgICAgICAgY2FzZSA1OCAvKiBQdXNoQXJncyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoQXJncycsIHsgcG9zaXRpb25hbDogb3AxLCBzeW50aGV0aWM6ICEhb3AyIH1dO1xuICAgICAgICAgICAgY2FzZSA1OSAvKiBQcmVwYXJlQXJncyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQcmVwYXJlQXJncycsIHsgc3RhdGU6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDYwIC8qIENyZWF0ZUNvbXBvbmVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDcmVhdGVDb21wb25lbnQnLCB7IGZsYWdzOiBvcDEsIHN0YXRlOiBSZWdpc3RlcltvcDJdIH1dO1xuICAgICAgICAgICAgY2FzZSA2MSAvKiBSZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3IgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yJywge31dO1xuICAgICAgICAgICAgY2FzZSA2MiAvKiBQdXNoQ29tcG9uZW50T3BlcmF0aW9ucyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoQ29tcG9uZW50T3BlcmF0aW9ucycsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNjMgLyogR2V0Q29tcG9uZW50U2VsZiAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydHZXRDb21wb25lbnRTZWxmJywgeyBzdGF0ZTogUmVnaXN0ZXJbb3AxXSB9XTtcbiAgICAgICAgICAgIGNhc2UgNjQgLyogR2V0Q29tcG9uZW50TGF5b3V0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0dldENvbXBvbmVudExheW91dCcsIHsgc3RhdGU6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDY1IC8qIEJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24gKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbicsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNjYgLyogQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24gKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24nLCB7fV07XG4gICAgICAgICAgICBjYXNlIDY3IC8qIERpZENyZWF0ZUVsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRGlkQ3JlYXRlRWxlbWVudCcsIHsgc3RhdGU6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDY4IC8qIERpZFJlbmRlckxheW91dCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEaWRSZW5kZXJMYXlvdXQnLCB7fV07XG4gICAgICAgICAgICAvLy8gUEFSVElBTFNcbiAgICAgICAgICAgIGNhc2UgNjkgLyogR2V0UGFydGlhbFRlbXBsYXRlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0NvbXBpbGVQYXJ0aWFsJywge31dO1xuICAgICAgICAgICAgY2FzZSA3MCAvKiBSZXNvbHZlTWF5YmVMb2NhbCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydSZXNvbHZlTWF5YmVMb2NhbCcsIHsgbmFtZTogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIC8vLyBERUJVR0dFUlxuICAgICAgICAgICAgY2FzZSA3MSAvKiBEZWJ1Z2dlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEZWJ1Z2dlcicsIHsgc3ltYm9sczogYy5nZXRPdGhlcihvcDEpLCBldmFsSW5mbzogYy5nZXRBcnJheShvcDIpIH1dO1xuICAgICAgICAgICAgLy8vIFNUQVRFTUVOVFNcbiAgICAgICAgICAgIGNhc2UgNzIgLyogU2l6ZSAqLzpcbiAgICAgICAgICAgICAgICB0aHJvdyB1bnJlYWNoYWJsZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IHVucmVhY2hhYmxlKCk7XG4gICAgfVxuICAgIHJldHVybiBbJycsIHt9XTtcbn1cbmV4cG9ydCBjbGFzcyBBcHBlbmRPcGNvZGVzIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5ldmFsdWF0ZU9wY29kZSA9IGZpbGxOdWxscyg3MiAvKiBTaXplICovKS5zbGljZSgpO1xuICAgIH1cbiAgICBhZGQobmFtZSwgZXZhbHVhdGUpIHtcbiAgICAgICAgdGhpcy5ldmFsdWF0ZU9wY29kZVtuYW1lXSA9IGV2YWx1YXRlO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSwgb3Bjb2RlLCB0eXBlKSB7XG4gICAgICAgIGxldCBmdW5jID0gdGhpcy5ldmFsdWF0ZU9wY29kZVt0eXBlXTtcbiAgICAgICAgaWYgKCFmYWxzZSAmJiBmYWxzZSkge1xuICAgICAgICAgICAgbGV0IFtuYW1lLCBwYXJhbXNdID0gZGVidWcodm0uY29uc3RhbnRzLCBvcGNvZGUudHlwZSwgb3Bjb2RlLm9wMSwgb3Bjb2RlLm9wMiwgb3Bjb2RlLm9wMyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgJHt2bVsncGMnXSAtIDR9LiAke2xvZ09wY29kZShuYW1lLCBwYXJhbXMpfWApO1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coLi4uZGVidWcodm0uY29uc3RhbnRzLCB0eXBlLCBvcGNvZGUub3AxLCBvcGNvZGUub3AyLCBvcGNvZGUub3AzKSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuYyh2bSwgb3Bjb2RlKTtcbiAgICAgICAgaWYgKCFmYWxzZSAmJiBmYWxzZSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJyVjIC0+IHBjOiAlZCwgcmE6ICVkLCBmcDogJWQsIHNwOiAlZCwgczA6ICVPLCBzMTogJU8sIHQwOiAlTywgdDE6ICVPJywgJ2NvbG9yOiBvcmFuZ2UnLCB2bVsncGMnXSwgdm1bJ3JhJ10sIHZtWydmcCddLCB2bVsnc3AnXSwgdm1bJ3MwJ10sIHZtWydzMSddLCB2bVsndDAnXSwgdm1bJ3QxJ10pO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJyVjIC0+IGV2YWwgc3RhY2snLCAnY29sb3I6IHJlZCcsIHZtLnN0YWNrLnRvQXJyYXkoKSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnJWMgLT4gc2NvcGUnLCAnY29sb3I6IGdyZWVuJywgdm0uc2NvcGUoKVsnc2xvdHMnXS5tYXAocyA9PiBzICYmIHNbJ3ZhbHVlJ10gPyBzWyd2YWx1ZSddKCkgOiBzKSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnJWMgLT4gZWxlbWVudHMnLCAnY29sb3I6IGJsdWUnLCB2bS5lbGVtZW50cygpWydlbGVtZW50U3RhY2snXS50b0FycmF5KCkpO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGNvbnN0IEFQUEVORF9PUENPREVTID0gbmV3IEFwcGVuZE9wY29kZXMoKTtcbmV4cG9ydCBjbGFzcyBBYnN0cmFjdE9wY29kZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGluaXRpYWxpemVHdWlkKHRoaXMpO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7IGd1aWQ6IHRoaXMuX2d1aWQsIHR5cGU6IHRoaXMudHlwZSB9O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBVcGRhdGluZ09wY29kZSBleHRlbmRzIEFic3RyYWN0T3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy5uZXh0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5wcmV2ID0gbnVsbDtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gaW5zcGVjdChvcGNvZGVzKSB7XG4gICAgbGV0IGJ1ZmZlciA9IFtdO1xuICAgIG9wY29kZXMuZm9yRWFjaCgob3Bjb2RlLCBpKSA9PiB7XG4gICAgICAgIF9pbnNwZWN0KG9wY29kZS50b0pTT04oKSwgYnVmZmVyLCAwLCBpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gYnVmZmVyLmpvaW4oJycpO1xufVxuZnVuY3Rpb24gX2luc3BlY3Qob3Bjb2RlLCBidWZmZXIsIGxldmVsLCBpbmRleCkge1xuICAgIGxldCBpbmRlbnRhdGlvbiA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGV2ZWw7IGkrKykge1xuICAgICAgICBpbmRlbnRhdGlvbi5wdXNoKCcgICcpO1xuICAgIH1cbiAgICBidWZmZXIucHVzaCguLi5pbmRlbnRhdGlvbik7XG4gICAgYnVmZmVyLnB1c2goYCR7aW5kZXh9LiAke29wY29kZS50eXBlfWApO1xuICAgIGlmIChvcGNvZGUuYXJncyB8fCBvcGNvZGUuZGV0YWlscykge1xuICAgICAgICBidWZmZXIucHVzaCgnKCcpO1xuICAgICAgICBpZiAob3Bjb2RlLmFyZ3MpIHtcbiAgICAgICAgICAgIGJ1ZmZlci5wdXNoKG9wY29kZS5hcmdzLmpvaW4oJywgJykpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcGNvZGUuZGV0YWlscykge1xuICAgICAgICAgICAgbGV0IGtleXMgPSBPYmplY3Qua2V5cyhvcGNvZGUuZGV0YWlscyk7XG4gICAgICAgICAgICBpZiAoa2V5cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBpZiAob3Bjb2RlLmFyZ3MgJiYgb3Bjb2RlLmFyZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5wdXNoKCcsICcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBidWZmZXIucHVzaChrZXlzLm1hcChrZXkgPT4gYCR7a2V5fT0ke29wY29kZS5kZXRhaWxzICYmIG9wY29kZS5kZXRhaWxzW2tleV19YCkuam9pbignLCAnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnVmZmVyLnB1c2goJyknKTtcbiAgICB9XG4gICAgYnVmZmVyLnB1c2goJ1xcbicpO1xuICAgIGlmIChvcGNvZGUuY2hpbGRyZW4gJiYgb3Bjb2RlLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wY29kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgX2luc3BlY3Qob3Bjb2RlLmNoaWxkcmVuW2ldLCBidWZmZXIsIGxldmVsICsgMSwgaSk7XG4gICAgICAgIH1cbiAgICB9XG59Il19

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

});
exports.RawProgram = exports.RawInlineBlock = exports.RawBlock = exports.ClientSide = exports.ATTRS_BLOCK = exports.CompilableTemplate = undefined;
exports.compileStatement = compileStatement;
exports.layout = layout;
exports.scanBlock = scanBlock;
var _blocks = require('./compiled/blocks');
var _compiler = require('./compiler');
var _util = require('@glimmer/util');

@@ -14,17 +22,59 @@

var _clientSide = require('./syntax/client-side');
var _opcodes = require('./opcodes');
var ClientSide = _interopRequireWildcard(_clientSide);
var _compilableTemplate = require('./syntax/compilable-template');
var _compilableTemplate2 = _interopRequireDefault(_compilableTemplate);
var _functions = require('./syntax/functions');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
var Ops = WireFormat.Ops;
function compileStatement(statement, builder) {
_functions.STATEMENTS.compile(statement, builder);
}
class CompilableTemplate {
constructor(statements, symbolTable) {
this.statements = statements;
this.symbolTable = symbolTable;
this.compiledStatic = null;
this.compiledDynamic = null;
}
compileStatic(env) {
let { compiledStatic } = this;
if (!compiledStatic) {
let builder = compileStatements(this.statements, this.symbolTable.meta, env);
let start = builder.start;
let end = builder.finalize();
(0, _opcodes.debugSlice)(env, start, end);
compiledStatic = this.compiledStatic = new _blocks.CompiledStaticTemplate(start, end);
}
return compiledStatic;
}
compileDynamic(env) {
let { compiledDynamic } = this;
if (!compiledDynamic) {
let staticBlock = this.compileStatic(env);
compiledDynamic = new _blocks.CompiledDynamicTemplate(staticBlock.start, staticBlock.end, this.symbolTable);
}
return compiledDynamic;
}
toJSON() {
return { GlimmerDebug: '<template>' };
}
}
exports.CompilableTemplate = CompilableTemplate;
function compileStatements(statements, meta, env) {
let b = (0, _compiler.builder)(env, meta);
for (let statement of statements) {
compileStatement(statement, b);
}
return b;
}
const ATTRS_BLOCK = exports.ATTRS_BLOCK = '&attrs';
function layout(prelude, head, body, symbolTable) {
let [, tag] = prelude.pop();
prelude.push([Ops.ClientSideStatement, ClientSide.Ops.OpenComponentElement, tag]);
prelude.push([Ops.ClientSideStatement, ClientSide.Ops.DidCreateElement]);
let attrsSymbol = symbolTable.symbols.length + 1;
symbolTable.symbols.push(ATTRS_BLOCK);
let statements = prelude.concat([[Ops.Yield, attrsSymbol, _util.EMPTY_ARRAY]]).concat(head).concat(body).concat([[Ops.ClientSideStatement, ClientSide.Ops.DidRenderLayout]]);
return new CompilableTemplate(statements, symbolTable);
}
class Scanner {

@@ -36,80 +86,104 @@ constructor(block, env) {

scanEntryPoint(meta) {
let { block } = this;
let { statements, symbols, hasEval } = block;
return new _compilableTemplate2.default(statements, { meta, symbols, hasEval });
let { block, env } = this;
let statements;
if (block.prelude && block.head) {
statements = block.prelude.concat(block.head).concat(block.statements);
} else {
statements = block.statements;
}
return new RawProgram(env, meta, statements, block.symbols, block.hasEval).scan();
}
scanBlock(meta) {
let { block } = this;
let { statements } = block;
return new _compilableTemplate2.default(statements, { meta, parameters: _util.EMPTY_ARRAY });
let { block, env } = this;
let statements;
if (block.prelude && block.head) {
statements = block.prelude.concat(block.head).concat(block.statements);
} else {
statements = block.statements;
}
return new RawInlineBlock(env, meta, statements, _util.EMPTY_ARRAY).scan();
}
scanLayout(meta, attrs, componentName) {
scanLayout(meta, attrs) {
let { block } = this;
let { statements, symbols, hasEval } = block;
let { symbols, hasEval } = block;
if (!block.prelude || !block.head) {
throw new Error(`A layout must have a top-level element`);
}
let symbolTable = { meta, hasEval, symbols };
let newStatements = [];
let toplevel;
let inTopLevel = false;
for (let i = 0; i < statements.length; i++) {
let statement = statements[i];
if (WireFormat.Statements.isComponent(statement)) {
let tagName = statement[1];
if (!this.env.hasComponentDefinition(tagName, meta.templateMeta)) {
if (toplevel !== undefined) {
newStatements.push([Ops.OpenElement, tagName]);
} else {
toplevel = tagName;
decorateTopLevelElement(tagName, symbols, attrs, newStatements);
}
addFallback(statement, newStatements);
} else {
if (toplevel === undefined && tagName === componentName) {
toplevel = tagName;
decorateTopLevelElement(tagName, symbols, attrs, newStatements);
addFallback(statement, newStatements);
}
}
} else {
if (toplevel === undefined && WireFormat.Statements.isOpenElement(statement)) {
toplevel = statement[1];
inTopLevel = true;
decorateTopLevelElement(toplevel, symbols, attrs, newStatements);
} else {
if (inTopLevel) {
if (WireFormat.Statements.isFlushElement(statement)) {
inTopLevel = false;
} else if (WireFormat.Statements.isModifier(statement)) {
throw Error(`Found modifier "${statement[1]}" on the top-level element of "${componentName}"\. Modifiers cannot be on the top-level element`);
}
}
newStatements.push(statement);
}
}
}
newStatements.push([Ops.ClientSideStatement, ClientSide.Ops.DidRenderLayout]);
return new _compilableTemplate2.default(newStatements, symbolTable);
let { statements: prelude } = scanBlock({ statements: block.prelude, parameters: _util.EMPTY_ARRAY }, meta, this.env);
let { statements: head } = scanBlock({ statements: [...attrs, ...block.head], parameters: _util.EMPTY_ARRAY }, meta, this.env);
let { statements: body } = scanBlock({ statements: block.statements, parameters: _util.EMPTY_ARRAY }, meta, this.env);
return layout(prelude, head, body, symbolTable);
}
}
exports.default = Scanner;
function addFallback(statement, buffer) {
let [,, attrs,, block] = statement;
for (let i = 0; i < attrs.length; i++) {
buffer.push(attrs[i]);
function scanBlock(block, meta, env) {
return new RawInlineBlock(env, meta, block.statements, _util.EMPTY_ARRAY).scan();
}
var ClientSide = exports.ClientSide = undefined;
(function (ClientSide) {
var Ops;
(function (Ops) {
Ops[Ops["OpenComponentElement"] = 0] = "OpenComponentElement";
Ops[Ops["DidCreateElement"] = 1] = "DidCreateElement";
Ops[Ops["DidRenderLayout"] = 2] = "DidRenderLayout";
Ops[Ops["OptimizedAppend"] = 3] = "OptimizedAppend";
Ops[Ops["UnoptimizedAppend"] = 4] = "UnoptimizedAppend";
Ops[Ops["StaticPartial"] = 5] = "StaticPartial";
Ops[Ops["DynamicPartial"] = 6] = "DynamicPartial";
Ops[Ops["NestedBlock"] = 7] = "NestedBlock";
Ops[Ops["ScannedBlock"] = 8] = "ScannedBlock";
Ops[Ops["FunctionExpression"] = 9] = "FunctionExpression";
})(Ops = ClientSide.Ops || (ClientSide.Ops = {}));
function is(variant) {
return function (value) {
return value[0] === WireFormat.Ops.ClientSideExpression || value[0] === WireFormat.Ops.ClientSideStatement && value[1] === variant;
};
}
buffer.push([Ops.FlushElement]);
if (block) {
let { statements } = block;
for (let i = 0; i < statements.length; i++) {
buffer.push(statements[i]);
ClientSide.is = is;
})(ClientSide || (exports.ClientSide = ClientSide = {}));
const { Ops } = WireFormat;
class RawBlock {
constructor(env, meta, statements) {
this.env = env;
this.meta = meta;
this.statements = statements;
}
scanStatements() {
let buffer = [];
let statements = this.statements;
for (let statement of statements) {
buffer.push(statement);
}
return buffer;
}
buffer.push([Ops.CloseElement]);
child(block) {
if (!block) return null;
return new RawInlineBlock(this.env, this.meta, block.statements, block.parameters);
}
}
function decorateTopLevelElement(tagName, symbols, attrs, buffer) {
let attrsSymbol = symbols.push(_functions.ATTRS_BLOCK);
buffer.push([Ops.ClientSideStatement, ClientSide.Ops.OpenComponentElement, tagName]);
buffer.push([Ops.ClientSideStatement, ClientSide.Ops.DidCreateElement]);
buffer.push([Ops.Yield, attrsSymbol, _util.EMPTY_ARRAY]);
buffer.push(...attrs);
exports.RawBlock = RawBlock;
class RawInlineBlock extends RawBlock {
constructor(env, meta, statements, parameters) {
super(env, meta, statements);
this.parameters = parameters;
}
scan() {
let statements = this.scanStatements();
return new CompilableTemplate(statements, { parameters: this.parameters, meta: this.meta });
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zY2FubmVyLmpzIl0sIm5hbWVzIjpbIldpcmVGb3JtYXQiLCJDbGllbnRTaWRlIiwiT3BzIiwiU2Nhbm5lciIsImNvbnN0cnVjdG9yIiwiYmxvY2siLCJlbnYiLCJzY2FuRW50cnlQb2ludCIsIm1ldGEiLCJzdGF0ZW1lbnRzIiwic3ltYm9scyIsImhhc0V2YWwiLCJzY2FuQmxvY2siLCJwYXJhbWV0ZXJzIiwic2NhbkxheW91dCIsImF0dHJzIiwiY29tcG9uZW50TmFtZSIsInN5bWJvbFRhYmxlIiwibmV3U3RhdGVtZW50cyIsInRvcGxldmVsIiwiaW5Ub3BMZXZlbCIsImkiLCJsZW5ndGgiLCJzdGF0ZW1lbnQiLCJTdGF0ZW1lbnRzIiwiaXNDb21wb25lbnQiLCJ0YWdOYW1lIiwiaGFzQ29tcG9uZW50RGVmaW5pdGlvbiIsInRlbXBsYXRlTWV0YSIsInVuZGVmaW5lZCIsInB1c2giLCJPcGVuRWxlbWVudCIsImRlY29yYXRlVG9wTGV2ZWxFbGVtZW50IiwiYWRkRmFsbGJhY2siLCJpc09wZW5FbGVtZW50IiwiaXNGbHVzaEVsZW1lbnQiLCJpc01vZGlmaWVyIiwiRXJyb3IiLCJDbGllbnRTaWRlU3RhdGVtZW50IiwiRGlkUmVuZGVyTGF5b3V0IiwiYnVmZmVyIiwiRmx1c2hFbGVtZW50IiwiQ2xvc2VFbGVtZW50IiwiYXR0cnNTeW1ib2wiLCJPcGVuQ29tcG9uZW50RWxlbWVudCIsIkRpZENyZWF0ZUVsZW1lbnQiLCJZaWVsZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0FBQ0E7O0lBQVlBLFU7O0FBQ1o7O0lBQVlDLFU7O0FBQ1o7Ozs7QUFDQTs7Ozs7O0FBQ0EsSUFBSUMsTUFBTUYsV0FBV0UsR0FBckI7QUFDZSxNQUFNQyxPQUFOLENBQWM7QUFDekJDLGdCQUFZQyxLQUFaLEVBQW1CQyxHQUFuQixFQUF3QjtBQUNwQixhQUFLRCxLQUFMLEdBQWFBLEtBQWI7QUFDQSxhQUFLQyxHQUFMLEdBQVdBLEdBQVg7QUFDSDtBQUNEQyxtQkFBZUMs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QUFMLEVBQTBCckMsV0FBV0MsR0FBWCxDQUFlMkMsZ0JBQXpDLENBQVo7QUFDQUwsV0FBT1YsSUFBUCxDQUFZLENBQUM1QixJQUFJNEMsS0FBTCxFQUFZSCxXQUFaLG9CQUFaO0FBQ0FILFdBQU9WLElBQVAsQ0FBWSxHQUFHZixLQUFmO0FBQ0giLCJmaWxlIjoibGliL3NjYW5uZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFTVBUWV9BUlJBWSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0ICogYXMgV2lyZUZvcm1hdCBmcm9tICdAZ2xpbW1lci93aXJlLWZvcm1hdCc7XG5pbXBvcnQgKiBhcyBDbGllbnRTaWRlIGZyb20gJy4vc3ludGF4L2NsaWVudC1zaWRlJztcbmltcG9ydCBDb21waWxhYmxlVGVtcGxhdGUgZnJvbSAnLi9zeW50YXgvY29tcGlsYWJsZS10ZW1wbGF0ZSc7XG5pbXBvcnQgeyBBVFRSU19CTE9DSyB9IGZyb20gJy4vc3ludGF4L2Z1bmN0aW9ucyc7XG52YXIgT3BzID0gV2lyZUZvcm1hdC5PcHM7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTY2FubmVyIHtcbiAgICBjb25zdHJ1Y3RvcihibG9jaywgZW52KSB7XG4gICAgICAgIHRoaXMuYmxvY2sgPSBibG9jaztcbiAgICAgICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgfVxuICAgIHNjYW5FbnRyeVBvaW50KG1ldGEpIHtcbiAgICAgICAgbGV0IHsgYmxvY2sgfSA9IHRoaXM7XG4gICAgICAgIGxldCB7IHN0YXRlbWVudHMsIHN5bWJvbHMsIGhhc0V2YWwgfSA9IGJsb2NrO1xuICAgICAgICByZXR1cm4gbmV3IENvbXBpbGFibGVUZW1wbGF0ZShzdGF0ZW1lbnRzLCB7IG1ldGEsIHN5bWJvbHMsIGhhc0V2YWwgfSk7XG4gICAgfVxuICAgIHNjYW5CbG9jayhtZXRhKSB7XG4gICAgICAgIGxldCB7IGJsb2NrIH0gPSB0aGlzO1xuICAgICAgICBsZXQgeyBzdGF0ZW1lbnRzIH0gPSBibG9jaztcbiAgICAgICAgcmV0dXJuIG5ldyBDb21waWxhYmxlVGVtcGxhdGUoc3RhdGVtZW50cywgeyBtZXRhLCBwYXJhbWV0ZXJzOiBFTVBUWV9BUlJBWSB9KTtcbiAgICB9XG4gICAgc2NhbkxheW91dChtZXRhLCBhdHRycywgY29tcG9uZW50TmFtZSkge1xuICAgICAgICBsZXQgeyBibG9jayB9ID0gdGhpcztcbiAgICAgICAgbGV0IHsgc3RhdGVtZW50cywgc3ltYm9scywgaGFzRXZhbCB9ID0gYmxvY2s7XG4gICAgICAgIGxldCBzeW1ib2xUYWJsZSA9IHsgbWV0YSwgaGFzRXZhbCwgc3ltYm9scyB9O1xuICAgICAgICBsZXQgbmV3U3RhdGVtZW50cyA9IFtdO1xuICAgICAgICBsZXQgdG9wbGV2ZWw7XG4gICAgICAgIGxldCBpblRvcExldmVsID0gZmFsc2U7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RhdGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IHN0YXRlbWVudCA9IHN0YXRlbWVudHNbaV07XG4gICAgICAgICAgICBpZiAoV2lyZUZvcm1hdC5TdGF0ZW1lbnRzLmlzQ29tcG9uZW50KHN0YXRlbWVudCkpIHtcbiAgICAgICAgICAgICAgICBsZXQgdGFnTmFtZSA9IHN0YXRlbWVudFsxXTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZW52Lmhhc0NvbXBvbmVudERlZmluaXRpb24odGFnTmFtZSwgbWV0YS50ZW1wbGF0ZU1ldGEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0b3BsZXZlbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdTdGF0ZW1lbnRzLnB1c2goW09wcy5PcGVuRWxlbWVudCwgdGFnTmFtZV0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9wbGV2ZWwgPSB0YWdOYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVjb3JhdGVUb3BMZXZlbEVsZW1lbnQodGFnTmFtZSwgc3ltYm9scywgYXR0cnMsIG5ld1N0YXRlbWVudHMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGFkZEZhbGxiYWNrKHN0YXRlbWVudCwgbmV3U3RhdGVtZW50cyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRvcGxldmVsID09PSB1bmRlZmluZWQgJiYgdGFnTmFtZSA9PT0gY29tcG9uZW50TmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9wbGV2ZWwgPSB0YWdOYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVjb3JhdGVUb3BMZXZlbEVsZW1lbnQodGFnTmFtZSwgc3ltYm9scywgYXR0cnMsIG5ld1N0YXRlbWVudHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkRmFsbGJhY2soc3RhdGVtZW50LCBuZXdTdGF0ZW1lbnRzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRvcGxldmVsID09PSB1bmRlZmluZWQgJiYgV2lyZUZvcm1hdC5TdGF0ZW1lbnRzLmlzT3BlbkVsZW1lbnQoc3RhdGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICB0b3BsZXZlbCA9IHN0YXRlbWVudFsxXTtcbiAgICAgICAgICAgICAgICAgICAgaW5Ub3BMZXZlbCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGRlY29yYXRlVG9wTGV2ZWxFbGVtZW50KHRvcGxldmVsLCBzeW1ib2xzLCBhdHRycywgbmV3U3RhdGVtZW50cyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluVG9wTGV2ZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChXaXJlRm9ybWF0LlN0YXRlbWVudHMuaXNGbHVzaEVsZW1lbnQoc3RhdGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluVG9wTGV2ZWwgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoV2lyZUZvcm1hdC5TdGF0ZW1lbnRzLmlzTW9kaWZpZXIoc3RhdGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKGBGb3VuZCBtb2RpZmllciBcIiR7c3RhdGVtZW50WzFdfVwiIG9uIHRoZSB0b3AtbGV2ZWwgZWxlbWVudCBvZiBcIiR7Y29tcG9uZW50TmFtZX1cIlxcLiBNb2RpZmllcnMgY2Fubm90IGJlIG9uIHRoZSB0b3AtbGV2ZWwgZWxlbWVudGApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG5ld1N0YXRlbWVudHMucHVzaChzdGF0ZW1lbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBuZXdTdGF0ZW1lbnRzLnB1c2goW09wcy5DbGllbnRTaWRlU3RhdGVtZW50LCBDbGllbnRTaWRlLk9wcy5EaWRSZW5kZXJMYXlvdXRdKTtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21waWxhYmxlVGVtcGxhdGUobmV3U3RhdGVtZW50cywgc3ltYm9sVGFibGUpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGFkZEZhbGxiYWNrKHN0YXRlbWVudCwgYnVmZmVyKSB7XG4gICAgbGV0IFssLCBhdHRycywsIGJsb2NrXSA9IHN0YXRlbWVudDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGF0dHJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGJ1ZmZlci5wdXNoKGF0dHJzW2ldKTtcbiAgICB9XG4gICAgYnVmZmVyLnB1c2goW09wcy5GbHVzaEVsZW1lbnRdKTtcbiAgICBpZiAoYmxvY2spIHtcbiAgICAgICAgbGV0IHsgc3RhdGVtZW50cyB9ID0gYmxvY2s7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RhdGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYnVmZmVyLnB1c2goc3RhdGVtZW50c1tpXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYnVmZmVyLnB1c2goW09wcy5DbG9zZUVsZW1lbnRdKTtcbn1cbmZ1bmN0aW9uIGRlY29yYXRlVG9wTGV2ZWxFbGVtZW50KHRhZ05hbWUsIHN5bWJvbHMsIGF0dHJzLCBidWZmZXIpIHtcbiAgICBsZXQgYXR0cnNTeW1ib2wgPSBzeW1ib2xzLnB1c2goQVRUUlNfQkxPQ0spO1xuICAgIGJ1ZmZlci5wdXNoKFtPcHMuQ2xpZW50U2lkZVN0YXRlbWVudCwgQ2xpZW50U2lkZS5PcHMuT3BlbkNvbXBvbmVudEVsZW1lbnQsIHRhZ05hbWVdKTtcbiAgICBidWZmZXIucHVzaChbT3BzLkNsaWVudFNpZGVTdGF0ZW1lbnQsIENsaWVudFNpZGUuT3BzLkRpZENyZWF0ZUVsZW1lbnRdKTtcbiAgICBidWZmZXIucHVzaChbT3BzLllpZWxkLCBhdHRyc1N5bWJvbCwgRU1QVFlfQVJSQVldKTtcbiAgICBidWZmZXIucHVzaCguLi5hdHRycyk7XG59Il19
exports.RawInlineBlock = RawInlineBlock;
class RawProgram extends RawBlock {
constructor(env, meta, statements, symbols, hasEval) {
super(env, meta, statements);
this.symbols = symbols;
this.hasEval = hasEval;
}
scan() {
let statements = this.scanStatements();
return new CompilableTemplate(statements, { symbols: this.symbols, hasEval: this.hasEval, meta: this.meta });
}
}
exports.RawProgram = RawProgram;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zY2FubmVyLmpzIl0sIm5hbWVzIjpbImNvbXBpbGVTdGF0ZW1lbnQiLCJsYXlvdXQiLCJzY2FuQmxvY2siLCJXaXJlRm9ybWF0Iiwic3RhdGVtZW50IiwiYnVpbGRlciIsImNvbXBpbGUiLCJDb21waWxhYmxlVGVtcGxhdGUiLCJjb25zdHJ1Y3RvciIsInN0YXRlbWVudHMiLCJzeW1ib2xUYWJsZSIsImNvbXBpbGVkU3RhdGljIiwiY29tcGlsZWREeW5hbWljIiwiY29tcGlsZVN0YXRpYyIsImVudiIsImNvbXBpbGVTdGF0ZW1lbnRzIiwibWV0YSIsInN0YXJ0IiwiZW5kIiwiZmluYWxpemUiLCJjb21waWxlRHluYW1pYyIsInN0YXRpY0Jsb2NrIiwidG9KU09OIiwiR2xpbW1lckRlYnVnIiwiYiIsIkFUVFJTX0JMT0NLIiwicHJlbHVkZSIsImhlYWQiLCJib2R5IiwidGFnIiwicG9wIiwicHVzaCIsIk9wcyIsIkNsaWVudFNpZGVTdGF0ZW1lbnQiLCJDbGllbnRTaWRlIiwiT3BlbkNvbXBvbmVudEVsZW1lbnQiLCJEaWRDcmVhdGVFbGVtZW50IiwiYXR0cnNTeW1ib2wiLCJzeW1ib2xzIiwibGVuZ3RoIiwiY29uY2F0IiwiWWllbGQiLCJEaWRSZW5kZXJMYXlvdXQiLCJTY2FubmVyIiwiYmxvY2siLCJzY2FuRW50cnlQb2ludCIsIlJhd1Byb2dyYW0iLCJoYXNFdmFsIiwic2NhbiIsIlJhd0lubGluZUJsb2NrIiwic2NhbkxheW91dCIsImF0dHJzIiwiRXJyb3IiLCJwYXJhbWV0ZXJzIiwiaXMiLCJ2YXJpYW50IiwidmFsdWUiLCJDbGllbnRTaWRlRXhwcmVzc2lvbiIsIlJhd0Jsb2NrIiwic2NhblN0YXRlbWVudHMiLCJidWZmZXIiLCJjaGlsZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O1FBTWdCQSxnQixHQUFBQSxnQjtRQXlDQUMsTSxHQUFBQSxNO1FBK0NBQyxTLEdBQUFBLFM7O0FBOUZoQjs7QUFDQTs7QUFDQTs7QUFDQTs7SUFBWUMsVTs7QUFD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QUwsRUFBakI7QUFDQSxlQUFPLElBQUlwRCxrQkFBSixDQUF1QkUsVUFBdkIsRUFBbUMsRUFBRTRDLFlBQVksS0FBS0EsVUFBbkIsRUFBK0JyQyxNQUFNLEtBQUtBLElBQTFDLEVBQW5DLENBQVA7QUFDSDtBQVJ3QztRQUFoQ2lDLGMsR0FBQUEsYztBQVVOLE1BQU1ILFVBQU4sU0FBeUJZLFFBQXpCLENBQWtDO0FBQ3JDbEQsZ0JBQVlNLEdBQVosRUFBaUJFLElBQWpCLEVBQXVCUCxVQUF2QixFQUFtQzZCLE9BQW5DLEVBQTRDUyxPQUE1QyxFQUFxRDtBQUNqRCxjQUFNakMsR0FBTixFQUFXRSxJQUFYLEVBQWlCUCxVQUFqQjtBQUNBLGFBQUs2QixPQUFMLEdBQWVBLE9BQWY7QUFDQSxhQUFLUyxPQUFMLEdBQWVBLE9BQWY7QUFDSDtBQUNEQyxXQUFPO0FBQ0gsWUFBSXZDLGFBQWEsS0FBS2tELGNBQUwsRUFBakI7QUFDQSxlQUFPLElBQUlwRCxrQkFBSixDQUF1QkUsVUFBdkIsRUFBbUMsRUFBRTZCLFNBQVMsS0FBS0EsT0FBaEIsRUFBeUJTLFNBQVMsS0FBS0EsT0FBdkMsRUFBZ0QvQixNQUFNLEtBQUtBLElBQTNELEVBQW5DLENBQVA7QUFDSDtBQVRvQztRQUE1QjhCLFUsR0FBQUEsVSIsImZpbGUiOiJsaWIvc2Nhbm5lci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBpbGVkRHluYW1pY1RlbXBsYXRlLCBDb21waWxlZFN0YXRpY1RlbXBsYXRlIH0gZnJvbSAnLi9jb21waWxlZC9ibG9ja3MnO1xuaW1wb3J0IHsgYnVpbGRlciB9IGZyb20gJy4vY29tcGlsZXInO1xuaW1wb3J0IHsgRU1QVFlfQVJSQVkgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCAqIGFzIFdpcmVGb3JtYXQgZnJvbSAnQGdsaW1tZXIvd2lyZS1mb3JtYXQnO1xuaW1wb3J0IHsgZGVidWdTbGljZSB9IGZyb20gJy4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBTVEFURU1FTlRTIH0gZnJvbSAnLi9zeW50YXgvZnVuY3Rpb25zJztcbmV4cG9ydCBmdW5jdGlvbiBjb21waWxlU3RhdGVtZW50KHN0YXRlbWVudCwgYnVpbGRlcikge1xuICAgIFNUQVRFTUVOVFMuY29tcGlsZShzdGF0ZW1lbnQsIGJ1aWxkZXIpO1xufVxuZXhwb3J0IGNsYXNzIENvbXBpbGFibGVUZW1wbGF0ZSB7XG4gICAgY29uc3RydWN0b3Ioc3RhdGVtZW50cywgc3ltYm9sVGFibGUpIHtcbiAgICAgICAgdGhpcy5zdGF0ZW1lbnRzID0gc3RhdGVtZW50cztcbiAgICAgICAgdGhpcy5zeW1ib2xUYWJsZSA9IHN5bWJvbFRhYmxlO1xuICAgICAgICB0aGlzLmNvbXBpbGVkU3RhdGljID0gbnVsbDtcbiAgICAgICAgdGhpcy5jb21waWxlZER5bmFtaWMgPSBudWxsO1xuICAgIH1cbiAgICBjb21waWxlU3RhdGljKGVudikge1xuICAgICAgICBsZXQgeyBjb21waWxlZFN0YXRpYyB9ID0gdGhpcztcbiAgICAgICAgaWYgKCFjb21waWxlZFN0YXRpYykge1xuICAgICAgICAgICAgbGV0IGJ1aWxkZXIgPSBjb21waWxlU3RhdGVtZW50cyh0aGlzLnN0YXRlbWVudHMsIHRoaXMuc3ltYm9sVGFibGUubWV0YSwgZW52KTtcbiAgICAgICAgICAgIGxldCBzdGFydCA9IGJ1aWxkZXIuc3RhcnQ7XG4gICAgICAgICAgICBsZXQgZW5kID0gYnVpbGRlci5maW5hbGl6ZSgpO1xuICAgICAgICAgICAgZGVidWdTbGljZShlbnYsIHN0YXJ0LCBlbmQpO1xuICAgICAgICAgICAgY29tcGlsZWRTdGF0aWMgPSB0aGlzLmNvbXBpbGVkU3RhdGljID0gbmV3IENvbXBpbGVkU3RhdGljVGVtcGxhdGUoc3RhcnQsIGVuZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbXBpbGVkU3RhdGljO1xuICAgIH1cbiAgICBjb21waWxlRHluYW1pYyhlbnYpIHtcbiAgICAgICAgbGV0IHsgY29tcGlsZWREeW5hbWljIH0gPSB0aGlzO1xuICAgICAgICBpZiAoIWNvbXBpbGVkRHluYW1pYykge1xuICAgICAgICAgICAgbGV0IHN0YXRpY0Jsb2NrID0gdGhpcy5jb21waWxlU3RhdGljKGVudik7XG4gICAgICAgICAgICBjb21waWxlZER5bmFtaWMgPSBuZXcgQ29tcGlsZWREeW5hbWljVGVtcGxhdGUoc3RhdGljQmxvY2suc3RhcnQsIHN0YXRpY0Jsb2NrLmVuZCwgdGhpcy5zeW1ib2xUYWJsZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbXBpbGVkRHluYW1pYztcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4geyBHbGltbWVyRGVidWc6ICc8dGVtcGxhdGU+JyB9O1xuICAgIH1cbn1cbmZ1bmN0aW9uIGNvbXBpbGVTdGF0ZW1lbnRzKHN0YXRlbWVudHMsIG1ldGEsIGVudikge1xuICAgIGxldCBiID0gYnVpbGRlcihlbnYsIG1ldGEpO1xuICAgIGZvciAobGV0IHN0YXRlbWVudCBvZiBzdGF0ZW1lbnRzKSB7XG4gICAgICAgIGNvbXBpbGVTdGF0ZW1lbnQoc3RhdGVtZW50LCBiKTtcbiAgICB9XG4gICAgcmV0dXJuIGI7XG59XG5leHBvcnQgY29uc3QgQVRUUlNfQkxPQ0sgPSAnJmF0dHJzJztcbmV4cG9ydCBmdW5jdGlvbiBsYXlvdXQocHJlbHVkZSwgaGVhZCwgYm9keSwgc3ltYm9sVGFibGUpIHtcbiAgICBsZXQgWywgdGFnXSA9IHByZWx1ZGUucG9wKCk7XG4gICAgcHJlbHVkZS5wdXNoKFtPcHMuQ2xpZW50U2lkZVN0YXRlbWVudCwgQ2xpZW50U2lkZS5PcHMuT3BlbkNvbXBvbmVudEVsZW1lbnQsIHRhZ10pO1xuICAgIHByZWx1ZGUucHVzaChbT3BzLkNsaWVudFNpZGVTdGF0ZW1lbnQsIENsaWVudFNpZGUuT3BzLkRpZENyZWF0ZUVsZW1lbnRdKTtcbiAgICBsZXQgYXR0cnNTeW1ib2wgPSBzeW1ib2xUYWJsZS5zeW1ib2xzLmxlbmd0aCArIDE7XG4gICAgc3ltYm9sVGFibGUuc3ltYm9scy5wdXNoKEFUVFJTX0JMT0NLKTtcbiAgICBsZXQgc3RhdGVtZW50cyA9IHByZWx1ZGUuY29uY2F0KFtbT3BzLllpZWxkLCBhdHRyc1N5bWJvbCwgRU1QVFlfQVJSQVldXSkuY29uY2F0KGhlYWQpLmNvbmNhdChib2R5KS5jb25jYXQoW1tPcHMuQ2xpZW50U2lkZVN0YXRlbWVudCwgQ2xpZW50U2lkZS5PcHMuRGlkUmVuZGVyTGF5b3V0XV0pO1xuICAgIHJldHVybiBuZXcgQ29tcGlsYWJsZVRlbXBsYXRlKHN0YXRlbWVudHMsIHN5bWJvbFRhYmxlKTtcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNjYW5uZXIge1xuICAgIGNvbnN0cnVjdG9yKGJsb2NrLCBlbnYpIHtcbiAgICAgICAgdGhpcy5ibG9jayA9IGJsb2NrO1xuICAgICAgICB0aGlzLmVudiA9IGVudjtcbiAgICB9XG4gICAgc2NhbkVudHJ5UG9pbnQobWV0YSkge1xuICAgICAgICBsZXQgeyBibG9jaywgZW52IH0gPSB0aGlzO1xuICAgICAgICBsZXQgc3RhdGVtZW50cztcbiAgICAgICAgaWYgKGJsb2NrLnByZWx1ZGUgJiYgYmxvY2suaGVhZCkge1xuICAgICAgICAgICAgc3RhdGVtZW50cyA9IGJsb2NrLnByZWx1ZGUuY29uY2F0KGJsb2NrLmhlYWQpLmNvbmNhdChibG9jay5zdGF0ZW1lbnRzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN0YXRlbWVudHMgPSBibG9jay5zdGF0ZW1lbnRzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgUmF3UHJvZ3JhbShlbnYsIG1ldGEsIHN0YXRlbWVudHMsIGJsb2NrLnN5bWJvbHMsIGJsb2NrLmhhc0V2YWwpLnNjYW4oKTtcbiAgICB9XG4gICAgc2NhbkJsb2NrKG1ldGEpIHtcbiAgICAgICAgbGV0IHsgYmxvY2ssIGVudiB9ID0gdGhpcztcbiAgICAgICAgbGV0IHN0YXRlbWVudHM7XG4gICAgICAgIGlmIChibG9jay5wcmVsdWRlICYmIGJsb2NrLmhlYWQpIHtcbiAgICAgICAgICAgIHN0YXRlbWVudHMgPSBibG9jay5wcmVsdWRlLmNvbmNhdChibG9jay5oZWFkKS5jb25jYXQoYmxvY2suc3RhdGVtZW50cyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdGF0ZW1lbnRzID0gYmxvY2suc3RhdGVtZW50cztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFJhd0lubGluZUJsb2NrKGVudiwgbWV0YSwgc3RhdGVtZW50cywgRU1QVFlfQVJSQVkpLnNjYW4oKTtcbiAgICB9XG4gICAgc2NhbkxheW91dChtZXRhLCBhdHRycykge1xuICAgICAgICBsZXQgeyBibG9jayB9ID0gdGhpcztcbiAgICAgICAgbGV0IHsgc3ltYm9scywgaGFzRXZhbCB9ID0gYmxvY2s7XG4gICAgICAgIGlmICghYmxvY2sucHJlbHVkZSB8fCAhYmxvY2suaGVhZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBIGxheW91dCBtdXN0IGhhdmUgYSB0b3AtbGV2ZWwgZWxlbWVudGApO1xuICAgICAgICB9XG4gICAgICAgIGxldCBzeW1ib2xUYWJsZSA9IHsgbWV0YSwgaGFzRXZhbCwgc3ltYm9scyB9O1xuICAgICAgICBsZXQgeyBzdGF0ZW1lbnRzOiBwcmVsdWRlIH0gPSBzY2FuQmxvY2soeyBzdGF0ZW1lbnRzOiBibG9jay5wcmVsdWRlLCBwYXJhbWV0ZXJzOiBFTVBUWV9BUlJBWSB9LCBtZXRhLCB0aGlzLmVudik7XG4gICAgICAgIGxldCB7IHN0YXRlbWVudHM6IGhlYWQgfSA9IHNjYW5CbG9jayh7IHN0YXRlbWVudHM6IFsuLi5hdHRycywgLi4uYmxvY2suaGVhZF0sIHBhcmFtZXRlcnM6IEVNUFRZX0FSUkFZIH0sIG1ldGEsIHRoaXMuZW52KTtcbiAgICAgICAgbGV0IHsgc3RhdGVtZW50czogYm9keSB9ID0gc2NhbkJsb2NrKHsgc3RhdGVtZW50czogYmxvY2suc3RhdGVtZW50cywgcGFyYW1ldGVyczogRU1QVFlfQVJSQVkgfSwgbWV0YSwgdGhpcy5lbnYpO1xuICAgICAgICByZXR1cm4gbGF5b3V0KHByZWx1ZGUsIGhlYWQsIGJvZHksIHN5bWJvbFRhYmxlKTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gc2NhbkJsb2NrKGJsb2NrLCBtZXRhLCBlbnYpIHtcbiAgICByZXR1cm4gbmV3IFJhd0lubGluZUJsb2NrKGVudiwgbWV0YSwgYmxvY2suc3RhdGVtZW50cywgRU1QVFlfQVJSQVkpLnNjYW4oKTtcbn1cbmV4cG9ydCB2YXIgQ2xpZW50U2lkZTtcbihmdW5jdGlvbiAoQ2xpZW50U2lkZSkge1xuICAgIHZhciBPcHM7XG4gICAgKGZ1bmN0aW9uIChPcHMpIHtcbiAgICAgICAgT3BzW09wc1tcIk9wZW5Db21wb25lbnRFbGVtZW50XCJdID0gMF0gPSBcIk9wZW5Db21wb25lbnRFbGVtZW50XCI7XG4gICAgICAgIE9wc1tPcHNbXCJEaWRDcmVhdGVFbGVtZW50XCJdID0gMV0gPSBcIkRpZENyZWF0ZUVsZW1lbnRcIjtcbiAgICAgICAgT3BzW09wc1tcIkRpZFJlbmRlckxheW91dFwiXSA9IDJdID0gXCJEaWRSZW5kZXJMYXlvdXRcIjtcbiAgICAgICAgT3BzW09wc1tcIk9wdGltaXplZEFwcGVuZFwiXSA9IDNdID0gXCJPcHRpbWl6ZWRBcHBlbmRcIjtcbiAgICAgICAgT3BzW09wc1tcIlVub3B0aW1pemVkQXBwZW5kXCJdID0gNF0gPSBcIlVub3B0aW1pemVkQXBwZW5kXCI7XG4gICAgICAgIE9wc1tPcHNbXCJTdGF0aWNQYXJ0aWFsXCJdID0gNV0gPSBcIlN0YXRpY1BhcnRpYWxcIjtcbiAgICAgICAgT3BzW09wc1tcIkR5bmFtaWNQYXJ0aWFsXCJdID0gNl0gPSBcIkR5bmFtaWNQYXJ0aWFsXCI7XG4gICAgICAgIE9wc1tPcHNbXCJOZXN0ZWRCbG9ja1wiXSA9IDddID0gXCJOZXN0ZWRCbG9ja1wiO1xuICAgICAgICBPcHNbT3BzW1wiU2Nhbm5lZEJsb2NrXCJdID0gOF0gPSBcIlNjYW5uZWRCbG9ja1wiO1xuICAgICAgICBPcHNbT3BzW1wiRnVuY3Rpb25FeHByZXNzaW9uXCJdID0gOV0gPSBcIkZ1bmN0aW9uRXhwcmVzc2lvblwiO1xuICAgIH0pKE9wcyA9IENsaWVudFNpZGUuT3BzIHx8IChDbGllbnRTaWRlLk9wcyA9IHt9KSk7XG4gICAgZnVuY3Rpb24gaXModmFyaWFudCkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWVbMF0gPT09IFdpcmVGb3JtYXQuT3BzLkNsaWVudFNpZGVFeHByZXNzaW9uIHx8IHZhbHVlWzBdID09PSBXaXJlRm9ybWF0Lk9wcy5DbGllbnRTaWRlU3RhdGVtZW50ICYmIHZhbHVlWzFdID09PSB2YXJpYW50O1xuICAgICAgICB9O1xuICAgIH1cbiAgICBDbGllbnRTaWRlLmlzID0gaXM7XG59KShDbGllbnRTaWRlIHx8IChDbGllbnRTaWRlID0ge30pKTtcbmNvbnN0IHsgT3BzIH0gPSBXaXJlRm9ybWF0O1xuZXhwb3J0IGNsYXNzIFJhd0Jsb2NrIHtcbiAgICBjb25zdHJ1Y3RvcihlbnYsIG1ldGEsIHN0YXRlbWVudHMpIHtcbiAgICAgICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgICAgIHRoaXMubWV0YSA9IG1ldGE7XG4gICAgICAgIHRoaXMuc3RhdGVtZW50cyA9IHN0YXRlbWVudHM7XG4gICAgfVxuICAgIHNjYW5TdGF0ZW1lbnRzKCkge1xuICAgICAgICBsZXQgYnVmZmVyID0gW107XG4gICAgICAgIGxldCBzdGF0ZW1lbnRzID0gdGhpcy5zdGF0ZW1lbnRzO1xuICAgICAgICBmb3IgKGxldCBzdGF0ZW1lbnQgb2Ygc3RhdGVtZW50cykge1xuICAgICAgICAgICAgYnVmZmVyLnB1c2goc3RhdGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYnVmZmVyO1xuICAgIH1cbiAgICBjaGlsZChibG9jaykge1xuICAgICAgICBpZiAoIWJsb2NrKSByZXR1cm4gbnVsbDtcbiAgICAgICAgcmV0dXJuIG5ldyBSYXdJbmxpbmVCbG9jayh0aGlzLmVudiwgdGhpcy5tZXRhLCBibG9jay5zdGF0ZW1lbnRzLCBibG9jay5wYXJhbWV0ZXJzKTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgUmF3SW5saW5lQmxvY2sgZXh0ZW5kcyBSYXdCbG9jayB7XG4gICAgY29uc3RydWN0b3IoZW52LCBtZXRhLCBzdGF0ZW1lbnRzLCBwYXJhbWV0ZXJzKSB7XG4gICAgICAgIHN1cGVyKGVudiwgbWV0YSwgc3RhdGVtZW50cyk7XG4gICAgICAgIHRoaXMucGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7XG4gICAgfVxuICAgIHNjYW4oKSB7XG4gICAgICAgIGxldCBzdGF0ZW1lbnRzID0gdGhpcy5zY2FuU3RhdGVtZW50cygpO1xuICAgICAgICByZXR1cm4gbmV3IENvbXBpbGFibGVUZW1wbGF0ZShzdGF0ZW1lbnRzLCB7IHBhcmFtZXRlcnM6IHRoaXMucGFyYW1ldGVycywgbWV0YTogdGhpcy5tZXRhIH0pO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBSYXdQcm9ncmFtIGV4dGVuZHMgUmF3QmxvY2sge1xuICAgIGNvbnN0cnVjdG9yKGVudiwgbWV0YSwgc3RhdGVtZW50cywgc3ltYm9scywgaGFzRXZhbCkge1xuICAgICAgICBzdXBlcihlbnYsIG1ldGEsIHN0YXRlbWVudHMpO1xuICAgICAgICB0aGlzLnN5bWJvbHMgPSBzeW1ib2xzO1xuICAgICAgICB0aGlzLmhhc0V2YWwgPSBoYXNFdmFsO1xuICAgIH1cbiAgICBzY2FuKCkge1xuICAgICAgICBsZXQgc3RhdGVtZW50cyA9IHRoaXMuc2NhblN0YXRlbWVudHMoKTtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21waWxhYmxlVGVtcGxhdGUoc3RhdGVtZW50cywgeyBzeW1ib2xzOiB0aGlzLnN5bWJvbHMsIGhhc0V2YWw6IHRoaXMuaGFzRXZhbCwgbWV0YTogdGhpcy5tZXRhIH0pO1xuICAgIH1cbn0iXX0=

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

var _vm = require('./vm');
var _scanner = require('./scanner');

@@ -18,4 +20,2 @@

var _vm = require('./vm');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -69,4 +69,4 @@

}
asLayout(componentName, attrs) {
if (!this.layout) this.layout = this.scanner.scanLayout(this.compilationMeta(), attrs || _util.EMPTY_ARRAY, componentName);
asLayout(attrs) {
if (!this.layout) this.layout = this.scanner.scanLayout(this.compilationMeta(), attrs || _util.EMPTY_ARRAY);
return this.layout;

@@ -86,2 +86,2 @@ }

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi90ZW1wbGF0ZS5qcyJdLCJuYW1lcyI6WyJ0ZW1wbGF0ZUZhY3RvcnkiLCJUZW1wbGF0ZUl0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJ2bSIsIm5leHQiLCJjbGllbnRJZCIsImlkIiwidGVtcGxhdGVJZCIsIm1ldGEiLCJibG9jayIsInBhcnNlZEJsb2NrIiwiY3JlYXRlIiwiZW52IiwiZW52TWV0YSIsIm5ld01ldGEiLCJKU09OIiwicGFyc2UiLCJTY2FubmFibGVUZW1wbGF0ZSIsInJhd0Jsb2NrIiwiZW50cnlQb2ludCIsImxheW91dCIsInBhcnRpYWwiLCJzY2FubmVyIiwic3ltYm9scyIsImhhc0V2YWwiLCJyZW5kZXIiLCJzZWxmIiwiYXBwZW5kVG8iLCJkeW5hbWljU2NvcGUiLCJlbGVtZW50U3RhY2siLCJmb3JJbml0aWFsUmVuZGVyIiwiY29tcGlsZWQiLCJhc0VudHJ5UG9pbnQiLCJjb21waWxlRHluYW1pYyIsImluaXRpYWwiLCJzY2FuRW50cnlQb2ludCIsImNvbXBpbGF0aW9uTWV0YSIsImFzTGF5b3V0IiwiY29tcG9uZW50TmFtZSIsImF0dHJzIiwic2NhbkxheW91dCIsImFzUGFydGlhbCIsImFzQmxvY2siLCJzY2FuQmxvY2siLCJ0ZW1wbGF0ZU1ldGEiXSwibWFwcGluZ3MiOiI7Ozs7OztrQkFhd0JBLGU7O0FBYnhCOztBQUNBOztBQUNBOzs7O0FBQ0E7Ozs7QUFDTyxNQUFNQyxnQkFBTixDQUF1QjtBQUMxQkMsZ0JBQVlDLEVBQVosRUFBZ0I7QUFDWixhQUFLQSxFQUFMLEdBQVVBLEVBQVY7QUFDSDtBQUNEQyxXQUFPO0FBQ0gsZUFBTyxLQUFLRCxFQUFMLENBQVFDLElBQVIsRUFBUDtBQUNIO0FBTnlCO1FBQWpCSCxnQixHQUFBQSxnQjtBQVFiLElBQUlJLFdBQVcsQ0FBZjtBQUNlLFNBQVNMLGVBQVQsQ0FBeUIsRUFBRU0sSUFBSUMsVUFBTixFQUFrQkMsSUFBbEIsRUFBd0JDLEtBQXhCLEVBQXpCLEVBQTBEO0FBQ3JFLFFB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LGVBQU8sRUFBRUcsY0FBYyxLQUFLcEMsSUFBckIsRUFBMkJlLFNBQVMsS0FBS0EsT0FBekMsRUFBa0RrQixTQUFsRCxFQUFQO0FBQ0g7QUF0Q21CIiwiZmlsZSI6ImxpYi90ZW1wbGF0ZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzc2lnbiwgRU1QVFlfQVJSQVkgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IEVsZW1lbnRTdGFjayB9IGZyb20gJy4vYnVpbGRlcic7XG5pbXBvcnQgU2Nhbm5lciBmcm9tICcuL3NjYW5uZXInO1xuaW1wb3J0IHsgVk0gfSBmcm9tICcuL3ZtJztcbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZUl0ZXJhdG9yIHtcbiAgICBjb25zdHJ1Y3Rvcih2bSkge1xuICAgICAgICB0aGlzLnZtID0gdm07XG4gICAgfVxuICAgIG5leHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZtLm5leHQoKTtcbiAgICB9XG59XG5sZXQgY2xpZW50SWQgPSAwO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdGVtcGxhdGVGYWN0b3J5KHsgaWQ6IHRlbXBsYXRlSWQsIG1ldGEsIGJsb2NrIH0pIHtcbiAgICBsZXQgcGFyc2VkQmxvY2s7XG4gICAgbGV0IGlkID0gdGVtcGxhdGVJZCB8fCBgY2xpZW50LSR7Y2xpZW50SWQrK31gO1xuICAgIGxldCBjcmVhdGUgPSAoZW52LCBlbnZNZXRhKSA9PiB7XG4gICAgICAgIGxldCBuZXdNZXRhID0gZW52TWV0YSA/IGFzc2lnbih7fSwgZW52TWV0YSwgbWV0YSkgOiBtZXRhO1xuICAgICAgICBpZiAoIXBhcnNlZEJsb2NrKSB7XG4gICAgICAgICAgICBwYXJzZWRCbG9jayA9IEpTT04ucGFyc2UoYmxvY2spO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgU2Nhbm5hYmxlVGVtcGxhdGUoaWQsIG5ld01ldGEsIGVudiwgcGFyc2VkQmxvY2spO1xuICAgIH07XG4gICAgcmV0dXJuIHsgaWQsIG1ldGEsIGNyZWF0ZSB9O1xufVxuY2xhc3MgU2Nhbm5hYmxlVGVtcGxhdGUge1xuICAgIGNvbnN0cnVjdG9yKGlkLCBtZXRhLCBlbnYsIHJhd0Jsb2NrKSB7XG4gICAgICAgIHRoaXMuaWQgPSBpZDtcbiAgICAgICAgdGhpcy5tZXRhID0gbWV0YTtcbiAgICAgICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgICAgIHRoaXMuZW50cnlQb2ludCA9IG51bGw7XG4gICAgICAgIHRoaXMubGF5b3V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5wYXJ0aWFsID0gbnVsbDtcbiAgICAgICAgdGhpcy5ibG9jayA9IG51bGw7XG4gICAgICAgIHRoaXMuc2Nhbm5lciA9IG5ldyBTY2FubmVyKHJhd0Jsb2NrLCBlbnYpO1xuICAgICAgICB0aGlzLnN5bWJvbHMgPSByYXdCbG9jay5zeW1ib2xzO1xuICAgICAgICB0aGlzLmhhc0V2YWwgPSByYXdCbG9jay5oYXNFdmFsO1xuICAgIH1cbiAgICByZW5kZXIoc2VsZiwgYXBwZW5kVG8sIGR5bmFtaWNTY29wZSkge1xuICAgICAgICBsZXQgeyBlbnYgfSA9IHRoaXM7XG4gICAgICAgIGxldCBlbGVtZW50U3RhY2sgPSBFbGVtZW50U3RhY2suZm9ySW5pdGlhbFJlbmRlcihlbnYsIGFwcGVuZFRvLCBudWxsKTtcbiAgICAgICAgbGV0IGNvbXBpbGVkID0gdGhpcy5hc0VudHJ5UG9pbnQoKS5jb21waWxlRHluYW1pYyhlbnYpO1xuICAgICAgICBsZXQgdm0gPSBWTS5pbml0aWFsKGVudiwgc2VsZiwgZHluYW1pY1Njb3BlLCBlbGVtZW50U3RhY2ssIGNvbXBpbGVkKTtcbiAgICAgICAgcmV0dXJuIG5ldyBUZW1wbGF0ZUl0ZXJhdG9yKHZtKTtcbiAgICB9XG4gICAgYXNFbnRyeVBvaW50KCkge1xuICAgICAgICBpZiAoIXRoaXMuZW50cnlQb2ludCkgdGhpcy5lbnRyeVBvaW50ID0gdGhpcy5zY2FubmVyLnNjYW5FbnRyeVBvaW50KHRoaXMuY29tcGlsYXRpb25NZXRhKCkpO1xuICAgICAgICByZXR1cm4gdGhpcy5lbnRyeVBvaW50O1xuICAgIH1cbiAgICBhc0xheW91dChjb21wb25lbnROYW1lLCBhdHRycykge1xuICAgICAgICBpZiAoIXRoaXMubGF5b3V0KSB0aGlzLmxheW91dCA9IHRoaXMuc2Nhbm5lci5zY2FuTGF5b3V0KHRoaXMuY29tcGlsYXRpb25NZXRhKCksIGF0dHJzIHx8IEVNUFRZX0FSUkFZLCBjb21wb25lbnROYW1lKTtcbiAgICAgICAgcmV0dXJuIHRoaXMubGF5b3V0O1xuICAgIH1cbiAgICBhc1BhcnRpYWwoKSB7XG4gICAgICAgIGlmICghdGhpcy5wYXJ0aWFsKSB0aGlzLnBhcnRpYWwgPSB0aGlzLnNjYW5uZXIuc2NhbkVudHJ5UG9pbnQodGhpcy5jb21waWxhdGlvbk1ldGEodHJ1ZSkpO1xuICAgICAgICByZXR1cm4gdGhpcy5wYXJ0aWFsO1xuICAgIH1cbiAgICBhc0Jsb2NrKCkge1xuICAgICAgICBpZiAoIXRoaXMuYmxvY2spIHRoaXMuYmxvY2sgPSB0aGlzLnNjYW5uZXIuc2NhbkJsb2NrKHRoaXMuY29tcGlsYXRpb25NZXRhKCkpO1xuICAgICAgICByZXR1cm4gdGhpcy5ibG9jaztcbiAgICB9XG4gICAgY29tcGlsYXRpb25NZXRhKGFzUGFydGlhbCA9IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiB7IHRlbXBsYXRlTWV0YTogdGhpcy5tZXRhLCBzeW1ib2xzOiB0aGlzLnN5bWJvbHMsIGFzUGFydGlhbCB9O1xuICAgIH1cbn0iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi90ZW1wbGF0ZS5qcyJdLCJuYW1lcyI6WyJ0ZW1wbGF0ZUZhY3RvcnkiLCJUZW1wbGF0ZUl0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJ2bSIsIm5leHQiLCJjbGllbnRJZCIsImlkIiwidGVtcGxhdGVJZCIsIm1ldGEiLCJibG9jayIsInBhcnNlZEJsb2NrIiwiY3JlYXRlIiwiZW52IiwiZW52TWV0YSIsIm5ld01ldGEiLCJKU09OIiwicGFyc2UiLCJTY2FubmFibGVUZW1wbGF0ZSIsInJhd0Jsb2NrIiwiZW50cnlQb2ludCIsImxheW91dCIsInBhcnRpYWwiLCJzY2FubmVyIiwic3ltYm9scyIsImhhc0V2YWwiLCJyZW5kZXIiLCJzZWxmIiwiYXBwZW5kVG8iLCJkeW5hbWljU2NvcGUiLCJlbGVtZW50U3RhY2siLCJmb3JJbml0aWFsUmVuZGVyIiwiY29tcGlsZWQiLCJhc0VudHJ5UG9pbnQiLCJjb21waWxlRHluYW1pYyIsImluaXRpYWwiLCJzY2FuRW50cnlQb2ludCIsImNvbXBpbGF0aW9uTWV0YSIsImFzTGF5b3V0IiwiYXR0cnMiLCJzY2FuTGF5b3V0IiwiYXNQYXJ0aWFsIiwiYXNCbG9jayIsInNjYW5CbG9jayIsInRlbXBsYXRlTWV0YSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O2tCQWF3QkEsZTs7QUFieEI7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7OztBQUNPLE1BQU1DLGdCQUFOLENBQXVCO0FBQzFCQyxnQkFBWUMsRUFBWixFQUFnQjtBQUNaLGFBQUtBLEVBQUwsR0FBVUEsRUFBVjtBQUNIO0FBQ0RDLFdBQU87QUFDSCxlQUFPLEtBQUtELEVBQUwsQ0FBUUMsSUFBUixFQUFQO0FBQ0g7QUFOeUI7UUFBakJILGdCLEdBQUFBLGdCO0FBUWIsSUFBSUksV0FBVyxDQUFmO0FBQ2UsU0FBU0wsZUFBVCxDQUF5QixFQUFFTSxJQUFJQyxVQUFOLEVBQWtCQyxJQUFsQixFQUF3QkMsS0FBeEIsRUFBekIsRUFBMEQ7QUFDckUsUUFBSUMsV0FBSjtBQUNBLFFBQUlKLEtBQUtDLGNBQWUsVUFBU0YsVUFBVyxFQUE1QztBQUNBLFFBQUlNLFNBQVMsQ0FBQ0MsR0FBRCxFQUFNQyxPQUFOLEtBQWtCO0FBQzNCLFlBQUlDLFVBQVVELFVBQVUsa0JBQU8sRUFBUCxFQUFXQSxPQUFYLEVBQW9CTCxJQUFwQixDQUFWLEdBQXNDQSxJQUFwRDtBQUNBLFlBQUksQ0FBQ0UsV0FBTCxFQUFrQjtBQUNkQSwwQkFBY0ssS0FBS0MsS0FBTCxDQUFXUCxLQUFYLENBQWQ7QUFDSDtBQUNELGVBQU8sSUFBSVEsaUJBQUosQ0FBc0JYLEVBQXRCLEVBQTBCUSxPQUExQixFQUFtQ0YsR0FBbkMsRUFBd0NGLFdBQXhDLENBQVA7QUFDSCxLQU5EO0FBT0EsV0FBTyxFQUFFSixFQUFGLEVBQU1FLElBQU4sRUFBWUcsTUFBWixFQUFQO0FBQ0g7QUFDRCxNQUFNTSxpQkFBTixDQUF3QjtBQUNwQmYsZ0JBQVlJLEVBQVosRUFBZ0JFLElBQWhCLEVBQXNCSSxHQUF0QixFQUEyQk0sUUFBM0IsRUFBcUM7QUFDakMsYUFBS1osRUFBTCxHQUFVQSxFQUFWO0FBQ0EsYUFBS0UsSUFBTCxHQUFZQSxJQUFaO0FBQ0EsYUFBS0ksR0FBTCxHQUFXQSxHQUFYO0FBQ0EsYUFBS08sVUFBTCxHQUFrQixJQUFsQjtBQUNBLGFBQUtDLE1BQUwsR0FBYyxJQUFkO0FBQ0EsYUFBS0MsT0FBTCxHQUFlLElBQWY7QUFDQSxhQUFLWixLQUFMLEdBQWEsSUFBYjtBQUNBLGFBQUthLE9BQUwsR0FBZSxzQkFBWUosUUFBWixFQUFzQk4sR0FBdEIsQ0FBZjtBQUNBLGFBQUtXLE9BQUwsR0FBZUwsU0FBU0ssT0FBeEI7QUFDQSxhQUFLQyxPQUFMLEdBQWVOLFNBQVNNLE9BQXhCO0FBQ0g7QUFDREMsV0FBT0MsSUFBUCxFQUFhQyxRQUFiLEVBQXVCQyxZQUF2QixFQUFxQztBQUNqQyxZQUFJLEVBQUVoQixHQUFGLEtBQVUsSUFBZDtBQUNBLFlBQUlpQixlQUFlLHNCQUFhQyxnQkFBYixDQUE4QmxCLEdBQTlCLEVBQW1DZSxRQUFuQyxFQUE2QyxJQUE3QyxDQUFuQjtBQUNBLFlBQUlJLFdBQVcsS0FBS0MsWUFBTCxHQUFvQkMsY0FBcEIsQ0FBbUNyQixHQUFuQyxDQUFmO0FBQ0EsWUFBSVQsS0FBSyxPQUFHK0IsT0FBSCxDQUFXdEIsR0FBWCxFQUFnQmMsSUFBaEIsRUFBc0JFLFlBQXRCLEVBQW9DQyxZQUFwQyxFQUFrREUsUUFBbEQsQ0FBVDtBQUNBLGVBQU8sSUFBSTlCLGdCQUFKLENBQXFCRSxFQUFyQixDQUFQO0FBQ0g7QUFDRDZCLG1CQUFlO0FBQ1gsWUFBSSxDQUFDLEtBQUtiLFVBQVYsRUFBc0IsS0FBS0EsVUFBTCxHQUFrQixLQUFLRyxPQUFMLENBQWFhLGNBQWIsQ0FBNEIsS0FBS0MsZUFBTCxFQUE1QixDQUFsQjtBQUN0QixlQUFPLEtBQUtqQixVQUFaO0FBQ0g7QUFDRGtCLGFBQVNDLEtBQVQsRUFBZ0I7QUFDWixZQUFJLENBQUMsS0FBS2xCLE1BQVYsRUFBa0IsS0FBS0EsTUFBTCxHQUFjLEtBQUtFLE9BQUwsQ0FBYWlCLFVBQWIsQ0FBd0IsS0FBS0gsZUFBTCxFQUF4QixFQUFnREUsMEJBQWhELENBQWQ7QUFDbEIsZUFBTyxLQUFLbEIsTUFBWjtBQUNIO0FBQ0RvQixnQkFBWTtBQUNSLFlBQUksQ0FBQyxLQUFLbkIsT0FBVixFQUFtQixLQUFLQSxPQUFMLEdBQWUsS0FBS0MsT0FBTCxDQUFhYSxjQUFiLENBQTRCLEtBQUtDLGVBQUwsQ0FBcUIsSUFBckIsQ0FBNUIsQ0FBZjtBQUNuQixlQUFPLEtBQUtmLE9BQVo7QUFDSDtBQUNEb0IsY0FBVTtBQUNOLFlBQUksQ0FBQyxLQUFLaEMsS0FBVixFQUFpQixLQUFLQSxLQUFMLEdBQWEsS0FBS2EsT0FBTCxDQUFhb0IsU0FBYixDQUF1QixLQUFLTixlQUFMLEVBQXZCLENBQWI7QUFDakIsZUFBTyxLQUFLM0IsS0FBWjtBQUNIO0FBQ0QyQixvQkFBZ0JJLFlBQVksS0FBNUIsRUFBbUM7QUFDL0IsZUFBTyxFQUFFRyxjQUFjLEtBQUtuQyxJQUFyQixFQUEyQmUsU0FBUyxLQUFLQSxPQUF6QyxFQUFrRGlCLFNBQWxELEVBQVA7QUFDSDtBQXRDbUIiLCJmaWxlIjoibGliL3RlbXBsYXRlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXNzaWduLCBFTVBUWV9BUlJBWSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgRWxlbWVudFN0YWNrIH0gZnJvbSAnLi9idWlsZGVyJztcbmltcG9ydCB7IFZNIH0gZnJvbSAnLi92bSc7XG5pbXBvcnQgU2Nhbm5lciBmcm9tICcuL3NjYW5uZXInO1xuZXhwb3J0IGNsYXNzIFRlbXBsYXRlSXRlcmF0b3Ige1xuICAgIGNvbnN0cnVjdG9yKHZtKSB7XG4gICAgICAgIHRoaXMudm0gPSB2bTtcbiAgICB9XG4gICAgbmV4dCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudm0ubmV4dCgpO1xuICAgIH1cbn1cbmxldCBjbGllbnRJZCA9IDA7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0ZW1wbGF0ZUZhY3RvcnkoeyBpZDogdGVtcGxhdGVJZCwgbWV0YSwgYmxvY2sgfSkge1xuICAgIGxldCBwYXJzZWRCbG9jaztcbiAgICBsZXQgaWQgPSB0ZW1wbGF0ZUlkIHx8IGBjbGllbnQtJHtjbGllbnRJZCsrfWA7XG4gICAgbGV0IGNyZWF0ZSA9IChlbnYsIGVudk1ldGEpID0+IHtcbiAgICAgICAgbGV0IG5ld01ldGEgPSBlbnZNZXRhID8gYXNzaWduKHt9LCBlbnZNZXRhLCBtZXRhKSA6IG1ldGE7XG4gICAgICAgIGlmICghcGFyc2VkQmxvY2spIHtcbiAgICAgICAgICAgIHBhcnNlZEJsb2NrID0gSlNPTi5wYXJzZShibG9jayk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBTY2FubmFibGVUZW1wbGF0ZShpZCwgbmV3TWV0YSwgZW52LCBwYXJzZWRCbG9jayk7XG4gICAgfTtcbiAgICByZXR1cm4geyBpZCwgbWV0YSwgY3JlYXRlIH07XG59XG5jbGFzcyBTY2FubmFibGVUZW1wbGF0ZSB7XG4gICAgY29uc3RydWN0b3IoaWQsIG1ldGEsIGVudiwgcmF3QmxvY2spIHtcbiAgICAgICAgdGhpcy5pZCA9IGlkO1xuICAgICAgICB0aGlzLm1ldGEgPSBtZXRhO1xuICAgICAgICB0aGlzLmVudiA9IGVudjtcbiAgICAgICAgdGhpcy5lbnRyeVBvaW50ID0gbnVsbDtcbiAgICAgICAgdGhpcy5sYXlvdXQgPSBudWxsO1xuICAgICAgICB0aGlzLnBhcnRpYWwgPSBudWxsO1xuICAgICAgICB0aGlzLmJsb2NrID0gbnVsbDtcbiAgICAgICAgdGhpcy5zY2FubmVyID0gbmV3IFNjYW5uZXIocmF3QmxvY2ssIGVudik7XG4gICAgICAgIHRoaXMuc3ltYm9scyA9IHJhd0Jsb2NrLnN5bWJvbHM7XG4gICAgICAgIHRoaXMuaGFzRXZhbCA9IHJhd0Jsb2NrLmhhc0V2YWw7XG4gICAgfVxuICAgIHJlbmRlcihzZWxmLCBhcHBlbmRUbywgZHluYW1pY1Njb3BlKSB7XG4gICAgICAgIGxldCB7IGVudiB9ID0gdGhpcztcbiAgICAgICAgbGV0IGVsZW1lbnRTdGFjayA9IEVsZW1lbnRTdGFjay5mb3JJbml0aWFsUmVuZGVyKGVudiwgYXBwZW5kVG8sIG51bGwpO1xuICAgICAgICBsZXQgY29tcGlsZWQgPSB0aGlzLmFzRW50cnlQb2ludCgpLmNvbXBpbGVEeW5hbWljKGVudik7XG4gICAgICAgIGxldCB2bSA9IFZNLmluaXRpYWwoZW52LCBzZWxmLCBkeW5hbWljU2NvcGUsIGVsZW1lbnRTdGFjaywgY29tcGlsZWQpO1xuICAgICAgICByZXR1cm4gbmV3IFRlbXBsYXRlSXRlcmF0b3Iodm0pO1xuICAgIH1cbiAgICBhc0VudHJ5UG9pbnQoKSB7XG4gICAgICAgIGlmICghdGhpcy5lbnRyeVBvaW50KSB0aGlzLmVudHJ5UG9pbnQgPSB0aGlzLnNjYW5uZXIuc2NhbkVudHJ5UG9pbnQodGhpcy5jb21waWxhdGlvbk1ldGEoKSk7XG4gICAgICAgIHJldHVybiB0aGlzLmVudHJ5UG9pbnQ7XG4gICAgfVxuICAgIGFzTGF5b3V0KGF0dHJzKSB7XG4gICAgICAgIGlmICghdGhpcy5sYXlvdXQpIHRoaXMubGF5b3V0ID0gdGhpcy5zY2FubmVyLnNjYW5MYXlvdXQodGhpcy5jb21waWxhdGlvbk1ldGEoKSwgYXR0cnMgfHwgRU1QVFlfQVJSQVkpO1xuICAgICAgICByZXR1cm4gdGhpcy5sYXlvdXQ7XG4gICAgfVxuICAgIGFzUGFydGlhbCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnBhcnRpYWwpIHRoaXMucGFydGlhbCA9IHRoaXMuc2Nhbm5lci5zY2FuRW50cnlQb2ludCh0aGlzLmNvbXBpbGF0aW9uTWV0YSh0cnVlKSk7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcnRpYWw7XG4gICAgfVxuICAgIGFzQmxvY2soKSB7XG4gICAgICAgIGlmICghdGhpcy5ibG9jaykgdGhpcy5ibG9jayA9IHRoaXMuc2Nhbm5lci5zY2FuQmxvY2sodGhpcy5jb21waWxhdGlvbk1ldGEoKSk7XG4gICAgICAgIHJldHVybiB0aGlzLmJsb2NrO1xuICAgIH1cbiAgICBjb21waWxhdGlvbk1ldGEoYXNQYXJ0aWFsID0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIHsgdGVtcGxhdGVNZXRhOiB0aGlzLm1ldGEsIHN5bWJvbHM6IHRoaXMuc3ltYm9scywgYXNQYXJ0aWFsIH07XG4gICAgfVxufSJdfQ==

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

function isSafeString(value) {
return typeof value === 'object' && value !== null && typeof value.toHTML === 'function';
return !!value && typeof value['toHTML'] === 'function';
}
function isNode(value) {
return typeof value === 'object' && value !== null && typeof value.nodeType === 'number';
return value !== null && typeof value === 'object' && typeof value['nodeType'] === 'number';
}

@@ -134,2 +134,2 @@ function isString(value) {

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi91cHNlcnQuanMiXSwibmFtZXMiOlsiaXNTYWZlU3RyaW5nIiwiaXNOb2RlIiwiaXNTdHJpbmciLCJjYXV0aW91c0luc2VydCIsInRydXN0aW5nSW5zZXJ0IiwidmFsdWUiLCJ0b0hUTUwiLCJub2RlVHlwZSIsIlVwc2VydCIsImNvbnN0cnVjdG9yIiwiYm91bmRzIiwiZG9tIiwiY3Vyc29yIiwiVGV4dFVwc2VydCIsImluc2VydCIsIlNhZmVTdHJpbmdVcHNlcnQiLCJOb2RlVXBzZXJ0IiwiSFRNTFVwc2VydCIsInRleHROb2RlIiwiY3JlYXRlVGV4dE5vZGUiLCJpbnNlcnRCZWZvcmUiLCJlbGVtZW50IiwibmV4dFNpYmxpbmciLCJ1cGRhdGUiLCJfZG9tIiwibm9kZVZhbHVlIiwiaW5zZXJ0SFRNTEJlZm9yZSIsInBhcmVudEVsZW1lbnQiLCJsYXN0U3RyaW5nVmFsdWUiLCJzdHJpbmdWYWx1ZSIsIm5vZGUiLCJpbnNlcnROb2RlQmVmb3JlIl0sIm1hcHBpbmdzIjoiOzs7OztRQUVnQkEsWSxHQUFBQSxZO1FBR0FDLE0sR0FBQUEsTTtRQUdBQyxRLEdBQUFBLFE7UUFTQUMsYyxHQUFBQSxjO1FBWUFDLGMsR0FBQUEsYzs7QUE3QmhCOztBQUNBOztBQUNPLFNBQVNKLFlBQVQsQ0FBc0JLLEtBQXRCLEVBQTZCO0FBQ2hDLFdBQU8sT0FBT0EsS0FBUCxLQUFpQixRQUFqQixJQUE2QkEsVUFBVSxJQUF2QyxJQUErQyxPQUFPQSxNQUFNQyxNQUFiLEtBQXdCLFVBQTlFO0FBQ0g7QUFDTSxTQUFTTCxNQUFULENBQWdCSSxLQUFoQixFQUF1QjtBQUMxQixXQUFPLE9BQU9BLEtBQVAsS0FBaUIsUUFBakIsSUFBNkJBLFVBQVUsSUFBdkMsSUFBK0MsT0FBT0EsTUFBTUUsUUFBYixLQUEwQixRQUFoRjtBQUNIO0FBQ00sU0FBU0wsUUFBVCxDQUFrQkcsS0FBbEIsRUFBeUI7QUFDNUIsV0FBTyxPQUFPQSxLQUFQLEtBQWlCLFFBQXhCO0FBQ0g7QUFDRCxNQUFN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bUJBQU8sS0FBUDtBQUNIO0FBQ0o7QUF4QmlDO0FBMEJ0QyxNQUFNYixVQUFOLFNBQXlCUixNQUF6QixDQUFnQztBQUM1QixXQUFPTSxNQUFQLENBQWNILEdBQWQsRUFBbUJDLE1BQW5CLEVBQTJCa0IsSUFBM0IsRUFBaUM7QUFDN0JuQixZQUFJUyxZQUFKLENBQWlCUixPQUFPUyxPQUF4QixFQUFpQ1MsSUFBakMsRUFBdUNsQixPQUFPVSxXQUE5QztBQUNBLGVBQU8sSUFBSU4sVUFBSixDQUFlLG9CQUFPSixPQUFPUyxPQUFkLEVBQXVCUyxJQUF2QixDQUFmLENBQVA7QUFDSDtBQUNEUCxXQUFPWixHQUFQLEVBQVlOLEtBQVosRUFBbUI7QUFDZixZQUFJSixPQUFPSSxLQUFQLENBQUosRUFBbUI7QUFDZixnQkFBSSxFQUFFSyxNQUFGLEtBQWEsSUFBakI7QUFDQSxnQkFBSWlCLGdCQUFnQmpCLE9BQU9pQixhQUFQLEVBQXBCO0FBQ0EsZ0JBQUlMLGNBQWMsbUJBQU1aLE1BQU4sQ0FBbEI7QUFDQSxpQkFBS0EsTUFBTCxHQUFjQyxJQUFJb0IsZ0JBQUosQ0FBcUJKLGFBQXJCLEVBQW9DdEIsS0FBcEMsRUFBMkNpQixXQUEzQyxDQUFkO0FBQ0EsbUJBQU8sSUFBUDtBQUNILFNBTkQsTUFNTztBQUNILG1CQUFPLEtBQVA7QUFDSDtBQUNKO0FBZjJCIiwiZmlsZSI6ImxpYi91cHNlcnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1bnJlYWNoYWJsZSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgY2xlYXIsIHNpbmdsZSwgU2luZ2xlTm9kZUJvdW5kcyB9IGZyb20gJy4vYm91bmRzJztcbmV4cG9ydCBmdW5jdGlvbiBpc1NhZmVTdHJpbmcodmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUudG9IVE1MID09PSAnZnVuY3Rpb24nO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZSh2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZS5ub2RlVHlwZSA9PT0gJ251bWJlcic7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmcodmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJztcbn1cbmNsYXNzIFVwc2VydCB7XG4gICAgY29uc3RydWN0b3IoYm91bmRzKSB7XG4gICAgICAgIHRoaXMuYm91bmRzID0gYm91bmRzO1xuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IFVwc2VydDtcbmV4cG9ydCBmdW5jdGlvbiBjYXV0aW91c0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpIHtcbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBUZXh0VXBzZXJ0Lmluc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICAgIH1cbiAgICBpZiAoaXNTYWZlU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gU2FmZVN0cmluZ1Vwc2VydC5pbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKGlzTm9kZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIE5vZGVVcHNlcnQuaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gICAgfVxuICAgIHRocm93IHVucmVhY2hhYmxlKCk7XG59XG5leHBvcnQgZnVuY3Rpb24gdHJ1c3RpbmdJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKSB7XG4gICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gSFRNTFVwc2VydC5pbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKGlzTm9kZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIE5vZGVVcHNlcnQuaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gICAgfVxuICAgIHRocm93IHVucmVhY2hhYmxlKCk7XG59XG5jbGFzcyBUZXh0VXBzZXJ0IGV4dGVuZHMgVXBzZXJ0IHtcbiAgICBzdGF0aWMgaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgICAgICBsZXQgdGV4dE5vZGUgPSBkb20uY3JlYXRlVGV4dE5vZGUodmFsdWUpO1xuICAgICAgICBkb20uaW5zZXJ0QmVmb3JlKGN1cnNvci5lbGVtZW50LCB0ZXh0Tm9kZSwgY3Vyc29yLm5leHRTaWJsaW5nKTtcbiAgICAgICAgbGV0IGJvdW5kcyA9IG5ldyBTaW5nbGVOb2RlQm91bmRzKGN1cnNvci5lbGVtZW50LCB0ZXh0Tm9kZSk7XG4gICAgICAgIHJldHVybiBuZXcgVGV4dFVwc2VydChib3VuZHMsIHRleHROb2RlKTtcbiAgICB9XG4gICAgY29uc3RydWN0b3IoYm91bmRzLCB0ZXh0Tm9kZSkge1xuICAgICAgICBzdXBlcihib3VuZHMpO1xuICAgICAgICB0aGlzLnRleHROb2RlID0gdGV4dE5vZGU7XG4gICAgfVxuICAgIHVwZGF0ZShfZG9tLCB2YWx1ZSkge1xuICAgICAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgICAgICBsZXQgeyB0ZXh0Tm9kZSB9ID0gdGhpcztcbiAgICAgICAgICAgIHRleHROb2RlLm5vZGVWYWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG59XG5jbGFzcyBIVE1MVXBzZXJ0IGV4dGVuZHMgVXBzZXJ0IHtcbiAgICBzdGF0aWMgaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgICAgICBsZXQgYm91bmRzID0gZG9tLmluc2VydEhUTUxCZWZvcmUoY3Vyc29yLmVsZW1lbnQsIHZhbHVlLCBjdXJzb3IubmV4dFNpYmxpbmcpO1xuICAgICAgICByZXR1cm4gbmV3IEhUTUxVcHNlcnQoYm91bmRzKTtcbiAgICB9XG4gICAgdXBkYXRlKGRvbSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICAgICAgbGV0IHsgYm91bmRzIH0gPSB0aGlzO1xuICAgICAgICAgICAgbGV0IHBhcmVudEVsZW1lbnQgPSBib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICAgICAgICAgICAgbGV0IG5leHRTaWJsaW5nID0gY2xlYXIoYm91bmRzKTtcbiAgICAgICAgICAgIHRoaXMuYm91bmRzID0gZG9tLmluc2VydEhUTUxCZWZvcmUocGFyZW50RWxlbWVudCwgbmV4dFNpYmxpbmcsIHZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxufVxuY2xhc3MgU2FmZVN0cmluZ1Vwc2VydCBleHRlbmRzIFVwc2VydCB7XG4gICAgY29uc3RydWN0b3IoYm91bmRzLCBsYXN0U3RyaW5nVmFsdWUpIHtcbiAgICAgICAgc3VwZXIoYm91bmRzKTtcbiAgICAgICAgdGhpcy5sYXN0U3RyaW5nVmFsdWUgPSBsYXN0U3RyaW5nVmFsdWU7XG4gICAgfVxuICAgIHN0YXRpYyBpbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKSB7XG4gICAgICAgIGxldCBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvSFRNTCgpO1xuICAgICAgICBsZXQgYm91bmRzID0gZG9tLmluc2VydEhUTUxCZWZvcmUoY3Vyc29yLmVsZW1lbnQsIHN0cmluZ1ZhbHVlLCBjdXJzb3IubmV4dFNpYmxpbmcpO1xuICAgICAgICByZXR1cm4gbmV3IFNhZmVTdHJpbmdVcHNlcnQoYm91bmRzLCBzdHJpbmdWYWx1ZSk7XG4gICAgfVxuICAgIHVwZGF0ZShkb20sIHZhbHVlKSB7XG4gICAgICAgIGlmIChpc1NhZmVTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgICAgICBsZXQgc3RyaW5nVmFsdWUgPSB2YWx1ZS50b0hUTUwoKTtcbiAgICAgICAgICAgIGlmIChzdHJpbmdWYWx1ZSAhPT0gdGhpcy5sYXN0U3RyaW5nVmFsdWUpIHtcbiAgICAgICAgICAgICAgICBsZXQgeyBib3VuZHMgfSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgbGV0IHBhcmVudEVsZW1lbnQgPSBib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICAgICAgICAgICAgICAgIGxldCBuZXh0U2libGluZyA9IGNsZWFyKGJvdW5kcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5ib3VuZHMgPSBkb20uaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnRFbGVtZW50LCBuZXh0U2libGluZywgc3RyaW5nVmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMubGFzdFN0cmluZ1ZhbHVlID0gc3RyaW5nVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmNsYXNzIE5vZGVVcHNlcnQgZXh0ZW5kcyBVcHNlcnQge1xuICAgIHN0YXRpYyBpbnNlcnQoZG9tLCBjdXJzb3IsIG5vZGUpIHtcbiAgICAgICAgZG9tLmluc2VydEJlZm9yZShjdXJzb3IuZWxlbWVudCwgbm9kZSwgY3Vyc29yLm5leHRTaWJsaW5nKTtcbiAgICAgICAgcmV0dXJuIG5ldyBOb2RlVXBzZXJ0KHNpbmdsZShjdXJzb3IuZWxlbWVudCwgbm9kZSkpO1xuICAgIH1cbiAgICB1cGRhdGUoZG9tLCB2YWx1ZSkge1xuICAgICAgICBpZiAoaXNOb2RlKHZhbHVlKSkge1xuICAgICAgICAgICAgbGV0IHsgYm91bmRzIH0gPSB0aGlzO1xuICAgICAgICAgICAgbGV0IHBhcmVudEVsZW1lbnQgPSBib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICAgICAgICAgICAgbGV0IG5leHRTaWJsaW5nID0gY2xlYXIoYm91bmRzKTtcbiAgICAgICAgICAgIHRoaXMuYm91bmRzID0gZG9tLmluc2VydE5vZGVCZWZvcmUocGFyZW50RWxlbWVudCwgdmFsdWUsIG5leHRTaWJsaW5nKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxufSJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi91cHNlcnQuanMiXSwibmFtZXMiOlsiaXNTYWZlU3RyaW5nIiwiaXNOb2RlIiwiaXNTdHJpbmciLCJjYXV0aW91c0luc2VydCIsInRydXN0aW5nSW5zZXJ0IiwidmFsdWUiLCJVcHNlcnQiLCJjb25zdHJ1Y3RvciIsImJvdW5kcyIsImRvbSIsImN1cnNvciIsIlRleHRVcHNlcnQiLCJpbnNlcnQiLCJTYWZlU3RyaW5nVXBzZXJ0IiwiTm9kZVVwc2VydCIsIkhUTUxVcHNlcnQiLCJ0ZXh0Tm9kZSIsImNyZWF0ZVRleHROb2RlIiwiaW5zZXJ0QmVmb3JlIiwiZWxlbWVudCIsIm5leHRTaWJsaW5nIiwidXBkYXRlIiwiX2RvbSIsIm5vZGVWYWx1ZSIsImluc2VydEhUTUxCZWZvcmUiLCJwYXJlbnRFbGVtZW50IiwibGFzdFN0cmluZ1ZhbHVlIiwic3RyaW5nVmFsdWUiLCJ0b0hUTUwiLCJub2RlIiwiaW5zZXJ0Tm9kZUJlZm9yZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7UUFFZ0JBLFksR0FBQUEsWTtRQUdBQyxNLEdBQUFBLE07UUFHQUMsUSxHQUFBQSxRO1FBU0FDLGMsR0FBQUEsYztRQVlBQyxjLEdBQUFBLGM7O0FBN0JoQjs7QUFDQTs7QUFDTyxTQUFTSixZQUFULENBQXNCSyxLQUF0QixFQUE2QjtBQUNoQyxXQUFPLENBQUMsQ0FBQ0EsS0FBRixJQUFXLE9BQU9BLE1BQU0sUUFBTixDQUFQLEtBQTJCLFVBQTdDO0FBQ0g7QUFDTSxTQUFTSixNQUFULENBQWdCSSxLQUFoQixFQUF1QjtBQUMxQixXQUFPQSxVQUFVLElBQVYsSUFBa0IsT0FBT0EsS0FBUCxLQUFpQixRQUFuQyxJQUErQyxPQUFPQSxNQUFNLFVBQU4sQ0FBUCxLQUE2QixRQUFuRjtBQUNIO0FBQ00sU0FBU0gsUUFBVCxDQUFrQkcsS0FBbEIsRUFBeUI7QUFDNUIsV0FBTyxPQUFPQSxLQUFQLEtBQWlCLFFBQXhCO0FBQ0g7QUFDRCxNQUFNQyxNQUFOLENBQWE7QUFDVEMsZ0JBQVlDLE1BQVos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MEJ0QyxNQUFNYixVQUFOLFNBQXlCUixNQUF6QixDQUFnQztBQUM1QixXQUFPTSxNQUFQLENBQWNILEdBQWQsRUFBbUJDLE1BQW5CLEVBQTJCbUIsSUFBM0IsRUFBaUM7QUFDN0JwQixZQUFJUyxZQUFKLENBQWlCUixPQUFPUyxPQUF4QixFQUFpQ1UsSUFBakMsRUFBdUNuQixPQUFPVSxXQUE5QztBQUNBLGVBQU8sSUFBSU4sVUFBSixDQUFlLG9CQUFPSixPQUFPUyxPQUFkLEVBQXVCVSxJQUF2QixDQUFmLENBQVA7QUFDSDtBQUNEUixXQUFPWixHQUFQLEVBQVlKLEtBQVosRUFBbUI7QUFDZixZQUFJSixPQUFPSSxLQUFQLENBQUosRUFBbUI7QUFDZixnQkFBSSxFQUFFRyxNQUFGLEtBQWEsSUFBakI7QUFDQSxnQkFBSWlCLGdCQUFnQmpCLE9BQU9pQixhQUFQLEVBQXBCO0FBQ0EsZ0JBQUlMLGNBQWMsbUJBQU1aLE1BQU4sQ0FBbEI7QUFDQSxpQkFBS0EsTUFBTCxHQUFjQyxJQUFJcUIsZ0JBQUosQ0FBcUJMLGFBQXJCLEVBQW9DcEIsS0FBcEMsRUFBMkNlLFdBQTNDLENBQWQ7QUFDQSxtQkFBTyxJQUFQO0FBQ0gsU0FORCxNQU1PO0FBQ0gsbUJBQU8sS0FBUDtBQUNIO0FBQ0o7QUFmMkIiLCJmaWxlIjoibGliL3Vwc2VydC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVucmVhY2hhYmxlIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBTaW5nbGVOb2RlQm91bmRzLCBzaW5nbGUsIGNsZWFyIH0gZnJvbSAnLi9ib3VuZHMnO1xuZXhwb3J0IGZ1bmN0aW9uIGlzU2FmZVN0cmluZyh2YWx1ZSkge1xuICAgIHJldHVybiAhIXZhbHVlICYmIHR5cGVvZiB2YWx1ZVsndG9IVE1MJ10gPT09ICdmdW5jdGlvbic7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNOb2RlKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIHZhbHVlWydub2RlVHlwZSddID09PSAnbnVtYmVyJztcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZyh2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnO1xufVxuY2xhc3MgVXBzZXJ0IHtcbiAgICBjb25zdHJ1Y3Rvcihib3VuZHMpIHtcbiAgICAgICAgdGhpcy5ib3VuZHMgPSBib3VuZHM7XG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgVXBzZXJ0O1xuZXhwb3J0IGZ1bmN0aW9uIGNhdXRpb3VzSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIFRleHRVcHNlcnQuaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gICAgfVxuICAgIGlmIChpc1NhZmVTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBTYWZlU3RyaW5nVXBzZXJ0Lmluc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICAgIH1cbiAgICBpZiAoaXNOb2RlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gTm9kZVVwc2VydC5pbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG4gICAgdGhyb3cgdW5yZWFjaGFibGUoKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB0cnVzdGluZ0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpIHtcbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBIVE1MVXBzZXJ0Lmluc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICAgIH1cbiAgICBpZiAoaXNOb2RlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gTm9kZVVwc2VydC5pbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG4gICAgdGhyb3cgdW5yZWFjaGFibGUoKTtcbn1cbmNsYXNzIFRleHRVcHNlcnQgZXh0ZW5kcyBVcHNlcnQge1xuICAgIHN0YXRpYyBpbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKSB7XG4gICAgICAgIGxldCB0ZXh0Tm9kZSA9IGRvbS5jcmVhdGVUZXh0Tm9kZSh2YWx1ZSk7XG4gICAgICAgIGRvbS5pbnNlcnRCZWZvcmUoY3Vyc29yLmVsZW1lbnQsIHRleHROb2RlLCBjdXJzb3IubmV4dFNpYmxpbmcpO1xuICAgICAgICBsZXQgYm91bmRzID0gbmV3IFNpbmdsZU5vZGVCb3VuZHMoY3Vyc29yLmVsZW1lbnQsIHRleHROb2RlKTtcbiAgICAgICAgcmV0dXJuIG5ldyBUZXh0VXBzZXJ0KGJvdW5kcywgdGV4dE5vZGUpO1xuICAgIH1cbiAgICBjb25zdHJ1Y3Rvcihib3VuZHMsIHRleHROb2RlKSB7XG4gICAgICAgIHN1cGVyKGJvdW5kcyk7XG4gICAgICAgIHRoaXMudGV4dE5vZGUgPSB0ZXh0Tm9kZTtcbiAgICB9XG4gICAgdXBkYXRlKF9kb20sIHZhbHVlKSB7XG4gICAgICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGxldCB7IHRleHROb2RlIH0gPSB0aGlzO1xuICAgICAgICAgICAgdGV4dE5vZGUubm9kZVZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmNsYXNzIEhUTUxVcHNlcnQgZXh0ZW5kcyBVcHNlcnQge1xuICAgIHN0YXRpYyBpbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKSB7XG4gICAgICAgIGxldCBib3VuZHMgPSBkb20uaW5zZXJ0SFRNTEJlZm9yZShjdXJzb3IuZWxlbWVudCwgdmFsdWUsIGN1cnNvci5uZXh0U2libGluZyk7XG4gICAgICAgIHJldHVybiBuZXcgSFRNTFVwc2VydChib3VuZHMpO1xuICAgIH1cbiAgICB1cGRhdGUoZG9tLCB2YWx1ZSkge1xuICAgICAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgICAgICBsZXQgeyBib3VuZHMgfSA9IHRoaXM7XG4gICAgICAgICAgICBsZXQgcGFyZW50RWxlbWVudCA9IGJvdW5kcy5wYXJlbnRFbGVtZW50KCk7XG4gICAgICAgICAgICBsZXQgbmV4dFNpYmxpbmcgPSBjbGVhcihib3VuZHMpO1xuICAgICAgICAgICAgdGhpcy5ib3VuZHMgPSBkb20uaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnRFbGVtZW50LCBuZXh0U2libGluZywgdmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG59XG5jbGFzcyBTYWZlU3RyaW5nVXBzZXJ0IGV4dGVuZHMgVXBzZXJ0IHtcbiAgICBjb25zdHJ1Y3Rvcihib3VuZHMsIGxhc3RTdHJpbmdWYWx1ZSkge1xuICAgICAgICBzdXBlcihib3VuZHMpO1xuICAgICAgICB0aGlzLmxhc3RTdHJpbmdWYWx1ZSA9IGxhc3RTdHJpbmdWYWx1ZTtcbiAgICB9XG4gICAgc3RhdGljIGluc2VydChkb20sIGN1cnNvciwgdmFsdWUpIHtcbiAgICAgICAgbGV0IHN0cmluZ1ZhbHVlID0gdmFsdWUudG9IVE1MKCk7XG4gICAgICAgIGxldCBib3VuZHMgPSBkb20uaW5zZXJ0SFRNTEJlZm9yZShjdXJzb3IuZWxlbWVudCwgc3RyaW5nVmFsdWUsIGN1cnNvci5uZXh0U2libGluZyk7XG4gICAgICAgIHJldHVybiBuZXcgU2FmZVN0cmluZ1Vwc2VydChib3VuZHMsIHN0cmluZ1ZhbHVlKTtcbiAgICB9XG4gICAgdXBkYXRlKGRvbSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKGlzU2FmZVN0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGxldCBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvSFRNTCgpO1xuICAgICAgICAgICAgaWYgKHN0cmluZ1ZhbHVlICE9PSB0aGlzLmxhc3RTdHJpbmdWYWx1ZSkge1xuICAgICAgICAgICAgICAgIGxldCB7IGJvdW5kcyB9ID0gdGhpcztcbiAgICAgICAgICAgICAgICBsZXQgcGFyZW50RWxlbWVudCA9IGJvdW5kcy5wYXJlbnRFbGVtZW50KCk7XG4gICAgICAgICAgICAgICAgbGV0IG5leHRTaWJsaW5nID0gY2xlYXIoYm91bmRzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJvdW5kcyA9IGRvbS5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudEVsZW1lbnQsIG5leHRTaWJsaW5nLCBzdHJpbmdWYWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0U3RyaW5nVmFsdWUgPSBzdHJpbmdWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxufVxuY2xhc3MgTm9kZVVwc2VydCBleHRlbmRzIFVwc2VydCB7XG4gICAgc3RhdGljIGluc2VydChkb20sIGN1cnNvciwgbm9kZSkge1xuICAgICAgICBkb20uaW5zZXJ0QmVmb3JlKGN1cnNvci5lbGVtZW50LCBub2RlLCBjdXJzb3IubmV4dFNpYmxpbmcpO1xuICAgICAgICByZXR1cm4gbmV3IE5vZGVVcHNlcnQoc2luZ2xlKGN1cnNvci5lbGVtZW50LCBub2RlKSk7XG4gICAgfVxuICAgIHVwZGF0ZShkb20sIHZhbHVlKSB7XG4gICAgICAgIGlmIChpc05vZGUodmFsdWUpKSB7XG4gICAgICAgICAgICBsZXQgeyBib3VuZHMgfSA9IHRoaXM7XG4gICAgICAgICAgICBsZXQgcGFyZW50RWxlbWVudCA9IGJvdW5kcy5wYXJlbnRFbGVtZW50KCk7XG4gICAgICAgICAgICBsZXQgbmV4dFNpYmxpbmcgPSBjbGVhcihib3VuZHMpO1xuICAgICAgICAgICAgdGhpcy5ib3VuZHMgPSBkb20uaW5zZXJ0Tm9kZUJlZm9yZShwYXJlbnRFbGVtZW50LCB2YWx1ZSwgbmV4dFNpYmxpbmcpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG59Il19

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

this.stack = EvaluationStack.empty();
/* Registers */
/** Registers **/
this.pc = -1;

@@ -163,5 +163,5 @@ this.ra = -1;

return {
dynamicScope: this.dynamicScope(),
env: this.env,
scope: this.scope(),
dynamicScope: this.dynamicScope(),
stack: this.stack.capture(args)

@@ -301,14 +301,11 @@ };

let { env, updatingOpcodeStack, elementStack } = this;
let opcode = this.nextStatement(env);
let result;
if (opcode !== null) {
let opcode;
if (opcode = this.nextStatement(env)) {
_opcodes.APPEND_OPCODES.evaluate(this, opcode, opcode.type);
result = { done: false, value: null };
} else {
result = {
done: true,
value: new _renderResult2.default(env, (0, _util.expect)(updatingOpcodeStack.pop(), 'there should be a final updating opcode stack'), elementStack.popBlock())
};
return { done: false, value: null };
}
return result;
return {
done: true,
value: new _renderResult2.default(env, (0, _util.expect)(updatingOpcodeStack.pop(), 'there should be a final updating opcode stack'), elementStack.popBlock())
};
}

@@ -336,2 +333,2 @@ nextStatement(env) {

exports.default = VM;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi92bS9hcHBlbmQuanMiXSwibmFtZXMiOlsiRXZhbHVhdGlvblN0YWNrIiwiY29uc3RydWN0b3IiLCJzdGFjayIsImZwIiwic3AiLCJPYmplY3QiLCJzZWFsIiwiZW1wdHkiLCJyZXN0b3JlIiwic25hcHNob3QiLCJzbGljZSIsImxlbmd0aCIsImlzRW1wdHkiLCJwdXNoIiwidmFsdWUiLCJkdXAiLCJwb3NpdGlvbiIsInBvcCIsIm4iLCJ0b3AiLCJwZWVrIiwiZnJvbUJhc2UiLCJvZmZzZXQiLCJmcm9tVG9wIiwiY2FwdHVyZSIsIml0ZW1zIiwiZW5kIiwic3RhcnQiLCJ0b0FycmF5IiwiVk0iLCJlbnYiLCJzY29wZSIsImR5bmFtaWNTY29wZSIsImVsZW1lbnRTdGFjayIsImR5bmFtaWNTY29wZVN0YWNrIiwic2NvcGVTdGFjayIsInVwZGF0aW5nT3Bjb2RlU3RhY2siLCJjYWNoZUdyb3VwcyIsImxpc3RCbG9ja1N0YWNrIiwicGMiLCJyYSIsInMwIiwiczEiLCJ0MCIsInQxIiwiY29uc3RhbnRzIiwiZmV0Y2giLCJyZWdpc3RlciIsImxvYWQiLCJmZXRjaFZhbHVlIiwibG9hZFZhbHVlIiwicHVzaEZyYW1lIiwicG9wRnJhbWUiLCJnb3RvIiwiY2FsbCIsInJldHVyblRvIiwicmV0dXJuIiwiaW5pdGlhbCIsInNlbGYiLCJwcm9ncmFtIiwicm9vdCIsInN5bWJvbFRhYmxlIiwic3ltYm9scyIsInZtIiwiYXJncyIsImJlZ2luQ2FjaGVHcm91cCIsInVwZGF0aW5nIiwidGFpbCIsImNvbW1pdENhY2hlR3JvdXAiLCJFTkQiLCJvcGNvZGVzIiwibWFya2VyIiwiaGVhZCIsIm5leHROb2RlIiwidGFnIiwiZ3VhcmQiLCJpbnNlcnRCZWZvcmUiLCJhcHBlbmQiLCJlbnRlciIsInN0YXRlIiwidHJhY2tlciIsImVsZW1lbnRzIiwicHVzaFVwZGF0YWJsZUJsb2NrIiwidHJ5T3Bjb2RlIiwiZGlkRW50ZXIiLCJpdGVyYXRlIiwibWVtbyIsImVudGVySXRlbSIsImtleSIsIm9wY29kZSIsImxpc3RCbG9jayIsIm1hcCIsImVudGVyTGlzdCIsInB1c2hCbG9ja0xpc3QiLCJhcnRpZmFjdHMiLCJ1cGRhdGVXaXRoIiwiY2hpbGRyZW4iLCJleGl0IiwicG9wQmxvY2siLCJwYXJlbnQiLCJkaWRJbml0aWFsaXplQ2hpbGRyZW4iLCJleGl0TGlzdCIsImN1cnJlbnQiLCJwdXNoQ2hpbGRTY29wZSIsImNoaWxkIiwicHVzaENhbGxlclNjb3BlIiwiY2hpbGRTY29wZSIsImNhbGxlclNjb3BlIiwiZ2V0Q2FsbGVyU2NvcGUiLCJwdXNoRHluYW1pY1Njb3BlIiwicHVzaFJvb3RTY29wZSIsInNpemUiLCJiaW5kQ2FsbGVyIiwic2l6ZWQiLCJiaW5kQ2FsbGVyU2NvcGUiLCJwb3BTY29wZSIsInBvcER5bmFtaWNTY29wZSIsIm5ld0Rlc3Ryb3lhYmxlIiwiZCIsImdldFNlbGYiLCJyZWZlcmVuY2VGb3JTeW1ib2wiLCJzeW1ib2wiLCJnZXRTeW1ib2wiLCJleGVjdXRlIiwiaW5pdGlhbGl6ZSIsInJlc3VsdCIsIm5leHQiLCJkb25lIiwibmV4dFN0YXRlbWVudCIsImV2YWx1YXRlIiwidHlwZSIsImV2YWx1YXRlT3Bjb2RlIiwiYmluZER5bmFtaWNTY29wZSIsIm5hbWVzIiwiaSIsIm5hbWUiLCJnZXRTdHJpbmciLCJzZXQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7O0FBRU8sTUFBTUEsZUFBTixDQUFzQjtBQUN6QkMsZ0JBQVlDLEtBQVosRUFBbUJDLEVBQW5CLEVBQXVCQyxFQUF2QixFQUEyQjtBQUN2QixhQUFLRixLQUFMLEdBQWFBLEtBQWI7QUFDQSxhQUFLQyxFQUFMLEdBQVVBLEVBQVY7QUFDQSxhQUFLQyxFQUFMLEdBQVVBLEVBQVY7QUFDQUMsZUFBT0MsSUFBUCxDQUFZLElBQVo7QUFDSDtBQUNELFdBQU9DLEtBQVAsR0FBZTtBQUNYLGVBQU8sSUFBSSxJQUFKLENBQVMsRUFBVCxF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QUFsUW1CO2tCQUFIWSxFIiwiZmlsZSI6ImxpYi92bS9hcHBlbmQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWdpc3RlciB9IGZyb20gJy4uL29wY29kZXMnO1xuaW1wb3J0IHsgU2NvcGUgfSBmcm9tICcuLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBTdGFjaywgTGlua2VkTGlzdCwgTGlzdFNsaWNlLCBleHBlY3QgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IGNvbWJpbmVTbGljZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBMYWJlbE9wY29kZSwgSnVtcElmTm90TW9kaWZpZWRPcGNvZGUsIERpZE1vZGlmeU9wY29kZSB9IGZyb20gJy4uL2NvbXBpbGVkL29wY29kZXMvdm0nO1xuaW1wb3J0IHsgTGlzdEJsb2NrT3Bjb2RlLCBUcnlPcGNvZGUgfSBmcm9tICcuL3VwZGF0ZSc7XG5pbXBvcnQgUmVuZGVyUmVzdWx0IGZyb20gJy4vcmVuZGVyLXJlc3VsdCc7XG5pbXBvcnQgeyBBUFBFTkRfT1BDT0RFUyB9IGZyb20gJy4uL29wY29kZXMnO1xuZXhwb3J0IGNsYXNzIEV2YWx1YXRpb25TdGFjayB7XG4gICAgY29uc3RydWN0b3Ioc3RhY2ssIGZwLCBzcCkge1xuICAgICAgICB0aGlzLnN0YWNrID0gc3RhY2s7XG4gICAgICAgIHRoaXMuZnAgPSBmcDtcbiAgICAgICAgdGhpcy5zcCA9IHNwO1xuICAgICAgICBPYmplY3Quc2VhbCh0aGlzKTtcbiAgICB9XG4gICAgc3RhdGljIGVtcHR5KCkge1xuICAgICAgICByZXR1cm4gbmV3IHRoaXMoW10sIDAsIC0xKTtcbiAgICB9XG4gICAgc3RhdGljIHJlc3RvcmUoc25hcHNob3QpIHtcbiAgICAgICAgcmV0dXJuIG5ldyB0aGlzKHNuYXBzaG90LnNsaWNlKCksIDAsIHNuYXBzaG90Lmxlbmd0aCAtIDEpO1xuICAgIH1cbiAgICBpc0VtcHR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zcCA9PT0gLTE7XG4gICAgfVxuICAgIHB1c2godmFsdWUpIHtcbiAgICAgICAgdGhpcy5zdGFja1srK3RoaXMuc3BdID0gdmFsdWU7XG4gICAgfVxuICAgIGR1cChwb3NpdGlvbiA9IHRoaXMuc3ApIHtcbiAgICAgICAgdGhpcy5wdXNoKHRoaXMuc3RhY2tbcG9zaXRpb25dKTtcbiAgICB9XG4gICAgcG9wKG4gPSAxKSB7XG4gICAgICAgIGxldCB0b3AgPSB0aGlzLnN0YWNrW3RoaXMuc3BdO1xuICAgICAgICB0aGlzLnNwIC09IG47XG4gICAgICAgIHJldHVybiB0b3A7XG4gICAgfVxuICAgIHBlZWsoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrW3RoaXMuc3BdO1xuICAgIH1cbiAgICBmcm9tQmFzZShvZmZzZXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2tbdGhpcy5mcCAtIG9mZnNldF07XG4gICAgfVxuICAgIGZyb21Ub3Aob2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrW3RoaXMuc3AgLSBvZmZzZXRdO1xuICAgIH1cbiAgICBjYXB0dXJlKGl0ZW1zKSB7XG4gICAgICAgIGxldCBlbmQgPSB0aGlzLnNwICsgMTtcbiAgICAgICAgbGV0IHN0YXJ0ID0gZW5kIC0gaXRlbXM7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICAgIH1cbiAgICB0b0FycmF5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFjay5zbGljZSh0aGlzLmZwLCB0aGlzLnNwICsgMSk7XG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVk0ge1xuICAgIGNvbnN0cnVjdG9yKGVudiwgc2NvcGUsIGR5bmFtaWNTY29wZSwgZWxlbWVudFN0YWNrKSB7XG4gICAgICAgIHRoaXMuZW52ID0gZW52O1xuICAgICAgICB0aGlzLmVsZW1lbnRTdGFjayA9IGVsZW1lbnRTdGFjaztcbiAgICAgICAgdGhpcy5keW5hbWljU2NvcGVTdGFjayA9IG5ldyBTdGFjaygpO1xuICAgICAgICB0aGlzLnNjb3BlU3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgICAgICAgdGhpcy51cGRhdGluZ09wY29kZVN0YWNrID0gbmV3IFN0YWNrKCk7XG4gICAgICAgIHRoaXMuY2FjaGVHcm91cHMgPSBuZXcgU3RhY2soKTtcbiAgICAgICAgdGhpcy5saXN0QmxvY2tTdGFjayA9IG5ldyBTdGFjaygpO1xuICAgICAgICB0aGlzLnN0YWNrID0gRXZhbHVhdGlvblN0YWNrLmVtcHR5KCk7XG4gICAgICAgIC8qIFJlZ2lzdGVycyAqL1xuICAgICAgICB0aGlzLnBjID0gLTE7XG4gICAgICAgIHRoaXMucmEgPSAtMTtcbiAgICAgICAgdGhpcy5zMCA9IG51bGw7XG4gICAgICAgIHRoaXMuczEgPSBudWxsO1xuICAgICAgICB0aGlzLnQwID0gbnVsbDtcbiAgICAgICAgdGhpcy50MSA9IG51bGw7XG4gICAgICAgIHRoaXMuZW52ID0gZW52O1xuICAgICAgICB0aGlzLmNvbnN0YW50cyA9IGVudi5jb25zdGFudHM7XG4gICAgICAgIHRoaXMuZWxlbWVudFN0YWNrID0gZWxlbWVudFN0YWNrO1xuICAgICAgICB0aGlzLnNjb3BlU3RhY2sucHVzaChzY29wZSk7XG4gICAgICAgIHRoaXMuZHluYW1pY1Njb3BlU3RhY2sucHVzaChkeW5hbWljU2NvcGUpO1xuICAgIH1cbiAgICBnZXQgZnAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrLmZwO1xuICAgIH1cbiAgICBzZXQgZnAoZnApIHtcbiAgICAgICAgdGhpcy5zdGFjay5mcCA9IGZwO1xuICAgIH1cbiAgICBnZXQgc3AoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrLnNwO1xuICAgIH1cbiAgICBzZXQgc3Aoc3ApIHtcbiAgICAgICAgdGhpcy5zdGFjay5zcCA9IHNwO1xuICAgIH1cbiAgICAvLyBGZXRjaCBhIHZhbHVlIGZyb20gYSByZWdpc3RlciBvbnRvIHRoZSBzdGFja1xuICAgIGZldGNoKHJlZ2lzdGVyKSB7XG4gICAgICAgIHRoaXMuc3RhY2sucHVzaCh0aGlzW1JlZ2lzdGVyW3JlZ2lzdGVyXV0pO1xuICAgIH1cbiAgICAvLyBMb2FkIGEgdmFsdWUgZnJvbSB0aGUgc3RhY2sgaW50byBhIHJlZ2lzdGVyXG4gICAgbG9hZChyZWdpc3Rlcikge1xuICAgICAgICB0aGlzW1JlZ2lzdGVyW3JlZ2lzdGVyXV0gPSB0aGlzLnN0YWNrLnBvcCgpO1xuICAgIH1cbiAgICAvLyBGZXRjaCBhIHZhbHVlIGZyb20gYSByZWdpc3RlclxuICAgIGZldGNoVmFsdWUocmVnaXN0ZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbUmVnaXN0ZXJbcmVnaXN0ZXJdXTtcbiAgICB9XG4gICAgLy8gTG9hZCBhIHZhbHVlIGludG8gYSByZWdpc3RlclxuICAgIGxvYWRWYWx1ZShyZWdpc3RlciwgdmFsdWUpIHtcbiAgICAgICAgdGhpc1tSZWdpc3RlcltyZWdpc3Rlcl1dID0gdmFsdWU7XG4gICAgfVxuICAgIC8vIFN0YXJ0IGEgbmV3IGZyYW1lIGFuZCBzYXZlICRyYSBhbmQgJGZwIG9uIHRoZSBzdGFja1xuICAgIHB1c2hGcmFtZSgpIHtcbiAgICAgICAgdGhpcy5zdGFjay5wdXNoKHRoaXMucmEpO1xuICAgICAgICB0aGlzLnN0YWNrLnB1c2godGhpcy5mcCk7XG4gICAgICAgIHRoaXMuZnAgPSB0aGlzLnNwIC0gMTtcbiAgICAgICAgLy8gdGhpcy5mcCA9IHRoaXMuc3AgKyAxO1xuICAgIH1cbiAgICAvLyBSZXN0b3JlICRyYSwgJHNwIGFuZCAkZnBcbiAgICBwb3BGcmFtZSgpIHtcbiAgICAgICAgdGhpcy5zcCA9IHRoaXMuZnAgLSAxO1xuICAgICAgICB0aGlzLnJhID0gdGhpcy5zdGFjay5mcm9tQmFzZSgwKTtcbiAgICAgICAgdGhpcy5mcCA9IHRoaXMuc3RhY2suZnJvbUJhc2UoLTEpO1xuICAgIH1cbiAgICAvLyBKdW1wIHRvIGFuIGFkZHJlc3MgaW4gYHByb2dyYW1gXG4gICAgZ290byhwYykge1xuICAgICAgICB0aGlzLnBjID0gcGM7XG4gICAgfVxuICAgIC8vIFNhdmUgJHBjIGludG8gJHJhLCB0aGVuIGp1bXAgdG8gYSBuZXcgYWRkcmVzcyBpbiBgcHJvZ3JhbWAgKGphbCBpbiBNSVBTKVxuICAgIGNhbGwocGMpIHtcbiAgICAgICAgdGhpcy5yYSA9IHRoaXMucGM7XG4gICAgICAgIHRoaXMucGMgPSBwYztcbiAgICB9XG4gICAgLy8gUHV0IGEgc3BlY2lmaWMgYHByb2dyYW1gIGFkZHJlc3MgaW4gJHJhXG4gICAgcmV0dXJuVG8ocmEpIHtcbiAgICAgICAgdGhpcy5yYSA9IHJhO1xuICAgIH1cbiAgICAvLyBSZXR1cm4gdG8gdGhlIGBwcm9ncmFtYCBhZGRyZXNzIHN0b3JlZCBpbiAkcmFcbiAgICByZXR1cm4oKSB7XG4gICAgICAgIHRoaXMucGMgPSB0aGlzLnJhO1xuICAgIH1cbiAgICBzdGF0aWMgaW5pdGlhbChlbnYsIHNlbGYsIGR5bmFtaWNTY29wZSwgZWxlbWVudFN0YWNrLCBwcm9ncmFtKSB7XG4gICAgICAgIGxldCBzY29wZSA9IFNjb3BlLnJvb3Qoc2VsZiwgcHJvZ3JhbS5zeW1ib2xUYWJsZS5zeW1ib2xzLmxlbmd0aCk7XG4gICAgICAgIGxldCB2bSA9IG5ldyBWTShlbnYsIHNjb3BlLCBkeW5hbWljU2NvcGUsIGVsZW1lbnRTdGFjayk7XG4gICAgICAgIHZtLnBjID0gcHJvZ3JhbS5zdGFydDtcbiAgICAgICAgdm0udXBkYXRpbmdPcGNvZGVTdGFjay5wdXNoKG5ldyBMaW5rZWRMaXN0KCkpO1xuICAgICAgICByZXR1cm4gdm07XG4gICAgfVxuICAgIGNhcHR1cmUoYXJncykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZHluYW1pY1Njb3BlOiB0aGlzLmR5bmFtaWNTY29wZSgpLFxuICAgICAgICAgICAgZW52OiB0aGlzLmVudixcbiAgICAgICAgICAgIHNjb3BlOiB0aGlzLnNjb3BlKCksXG4gICAgICAgICAgICBzdGFjazogdGhpcy5zdGFjay5jYXB0dXJlKGFyZ3MpXG4gICAgICAgIH07XG4gICAgfVxuICAgIGJlZ2luQ2FjaGVHcm91cCgpIHtcbiAgICAgICAgdGhpcy5jYWNoZUdyb3Vwcy5wdXNoKHRoaXMudXBkYXRpbmcoKS50YWlsKCkpO1xuICAgIH1cbiAgICBjb21taXRDYWNoZUdyb3VwKCkge1xuICAgICAgICAvLyAgICAgICAgSnVtcElmTm90TW9kaWZpZWQoRU5EKVxuICAgICAgICAvLyAgICAgICAgKGhlYWQpXG4gICAgICAgIC8vICAgICAgICAoLi4uLilcbiAgICAgICAgLy8gICAgICAgICh0YWlsKVxuICAgICAgICAvLyAgICAgICAgRGlkTW9kaWZ5XG4gICAgICAgIC8vIEVORDogICBOb29wXG4gICAgICAgIGxldCBFTkQgPSBuZXcgTGFiZWxPcGNvZGUoXCJFTkRcIik7XG4gICAgICAgIGxldCBvcGNvZGVzID0gdGhpcy51cGRhdGluZygpO1xuICAgICAgICBsZXQgbWFya2VyID0gdGhpcy5jYWNoZUdyb3Vwcy5wb3AoKTtcbiAgICAgICAgbGV0IGhlYWQgPSBtYXJrZXIgPyBvcGNvZGVzLm5leHROb2RlKG1hcmtlcikgOiBvcGNvZGVzLmhlYWQoKTtcbiAgICAgICAgbGV0IHRhaWwgPSBvcGNvZGVzLnRhaWwoKTtcbiAgICAgICAgbGV0IHRhZyA9IGNvbWJpbmVTbGljZShuZXcgTGlzdFNsaWNlKGhlYWQsIHRhaWwpKTtcbiAgICAgICAgbGV0IGd1YXJkID0gbmV3IEp1bXBJZk5vdE1vZGlmaWVkT3Bjb2RlKHRhZywgRU5EKTtcbiAgICAgICAgb3Bjb2Rlcy5pbnNlcnRCZWZvcmUoZ3VhcmQsIGhlYWQpO1xuICAgICAgICBvcGNvZGVzLmFwcGVuZChuZXcgRGlkTW9kaWZ5T3Bjb2RlKGd1YXJkKSk7XG4gICAgICAgIG9wY29kZXMuYXBwZW5kKEVORCk7XG4gICAgfVxuICAgIGVudGVyKGFyZ3MpIHtcbiAgICAgICAgbGV0IHVwZGF0aW5nID0gbmV3IExpbmtlZExpc3QoKTtcbiAgICAgICAgbGV0IHN0YXRlID0gdGhpcy5jYXB0dXJlKGFyZ3MpO1xuICAgICAgICBsZXQgdHJhY2tlciA9IHRoaXMuZWxlbWVudHMoKS5wdXNoVXBkYXRhYmxlQmxvY2soKTtcbiAgICAgICAgbGV0IHRyeU9wY29kZSA9IG5ldyBUcnlPcGNvZGUodGhpcy5wYywgc3RhdGUsIHRyYWNrZXIsIHVwZGF0aW5nKTtcbiAgICAgICAgdGhpcy5kaWRFbnRlcih0cnlPcGNvZGUpO1xuICAgIH1cbiAgICBpdGVyYXRlKG1lbW8sIHZhbHVlKSB7XG4gICAgICAgIGxldCBzdGFjayA9IHRoaXMuc3RhY2s7XG4gICAgICAgIHN0YWNrLnB1c2godmFsdWUpO1xuICAgICAgICBzdGFjay5wdXNoKG1lbW8pO1xuICAgICAgICBsZXQgc3RhdGUgPSB0aGlzLmNhcHR1cmUoMik7XG4gICAgICAgIGxldCB0cmFja2VyID0gdGhpcy5lbGVtZW50cygpLnB1c2hVcGRhdGFibGVCbG9jaygpO1xuICAgICAgICAvLyBsZXQgaXAgPSB0aGlzLmlwO1xuICAgICAgICAvLyB0aGlzLmlwID0gZW5kICsgNDtcbiAgICAgICAgLy8gdGhpcy5mcmFtZXMucHVzaChpcCk7XG4gICAgICAgIHJldHVybiBuZXcgVHJ5T3Bjb2RlKHRoaXMucGMsIHN0YXRlLCB0cmFja2VyLCBuZXcgTGlua2VkTGlzdCgpKTtcbiAgICB9XG4gICAgZW50ZXJJdGVtKGtleSwgb3Bjb2RlKSB7XG4gICAgICAgIHRoaXMubGlzdEJsb2NrKCkubWFwW2tleV0gPSBvcGNvZGU7XG4gICAgICAgIHRoaXMuZGlkRW50ZXIob3Bjb2RlKTtcbiAgICB9XG4gICAgZW50ZXJMaXN0KHN0YXJ0KSB7XG4gICAgICAgIGxldCB1cGRhdGluZyA9IG5ldyBMaW5rZWRMaXN0KCk7XG4gICAgICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZSgwKTtcbiAgICAgICAgbGV0IHRyYWNrZXIgPSB0aGlzLmVsZW1lbnRzKCkucHVzaEJsb2NrTGlzdCh1cGRhdGluZyk7XG4gICAgICAgIGxldCBhcnRpZmFjdHMgPSB0aGlzLnN0YWNrLnBlZWsoKS5hcnRpZmFjdHM7XG4gICAgICAgIGxldCBvcGNvZGUgPSBuZXcgTGlzdEJsb2NrT3Bjb2RlKHN0YXJ0LCBzdGF0ZSwgdHJhY2tlciwgdXBkYXRpbmcsIGFydGlmYWN0cyk7XG4gICAgICAgIHRoaXMubGlzdEJsb2NrU3RhY2sucHVzaChvcGNvZGUpO1xuICAgICAgICB0aGlzLmRpZEVudGVyKG9wY29kZSk7XG4gICAgfVxuICAgIGRpZEVudGVyKG9wY29kZSkge1xuICAgICAgICB0aGlzLnVwZGF0ZVdpdGgob3Bjb2RlKTtcbiAgICAgICAgdGhpcy51cGRhdGluZ09wY29kZVN0YWNrLnB1c2gob3Bjb2RlLmNoaWxkcmVuKTtcbiAgICB9XG4gICAgZXhpdCgpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50cygpLnBvcEJsb2NrKCk7XG4gICAgICAgIHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5wb3AoKTtcbiAgICAgICAgbGV0IHBhcmVudCA9IHRoaXMudXBkYXRpbmcoKS50YWlsKCk7XG4gICAgICAgIHBhcmVudC5kaWRJbml0aWFsaXplQ2hpbGRyZW4oKTtcbiAgICB9XG4gICAgZXhpdExpc3QoKSB7XG4gICAgICAgIHRoaXMuZXhpdCgpO1xuICAgICAgICB0aGlzLmxpc3RCbG9ja1N0YWNrLnBvcCgpO1xuICAgIH1cbiAgICB1cGRhdGVXaXRoKG9wY29kZSkge1xuICAgICAgICB0aGlzLnVwZGF0aW5nKCkuYXBwZW5kKG9wY29kZSk7XG4gICAgfVxuICAgIGxpc3RCbG9jaygpIHtcbiAgICAgICAgcmV0dXJuIGV4cGVjdCh0aGlzLmxpc3RCbG9ja1N0YWNrLmN1cnJlbnQsICdleHBlY3RlZCBhIGxpc3QgYmxvY2snKTtcbiAgICB9XG4gICAgdXBkYXRpbmcoKSB7XG4gICAgICAgIHJldHVybiBleHBlY3QodGhpcy51cGRhdGluZ09wY29kZVN0YWNrLmN1cnJlbnQsICdleHBlY3RlZCB1cGRhdGluZyBvcGNvZGUgb24gdGhlIHVwZGF0aW5nIG9wY29kZSBzdGFjaycpO1xuICAgIH1cbiAgICBlbGVtZW50cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFN0YWNrO1xuICAgIH1cbiAgICBzY29wZSgpIHtcbiAgICAgICAgcmV0dXJuIGV4cGVjdCh0aGlzLnNjb3BlU3RhY2suY3VycmVudCwgJ2V4cGVjdGVkIHNjb3BlIG9uIHRoZSBzY29wZSBzdGFjaycpO1xuICAgIH1cbiAgICBkeW5hbWljU2NvcGUoKSB7XG4gICAgICAgIHJldHVybiBleHBlY3QodGhpcy5keW5hbWljU2NvcGVTdGFjay5jdXJyZW50LCAnZXhwZWN0ZWQgZHluYW1pYyBzY29wZSBvbiB0aGUgZHluYW1pYyBzY29wZSBzdGFjaycpO1xuICAgIH1cbiAgICBwdXNoQ2hpbGRTY29wZSgpIHtcbiAgICAgICAgdGhpcy5zY29wZVN0YWNrLnB1c2godGhpcy5zY29wZSgpLmNoaWxkKCkpO1xuICAgIH1cbiAgICBwdXNoQ2FsbGVyU2NvcGUoY2hpbGRTY29wZSA9IGZhbHNlKSB7XG4gICAgICAgIGxldCBjYWxsZXJTY29wZSA9IGV4cGVjdCh0aGlzLnNjb3BlKCkuZ2V0Q2FsbGVyU2NvcGUoKSwgJ3B1c2hDYWxsZXJTY29wZSBpcyBjYWxsZWQgd2hlbiBhIGNhbGxlciBzY29wZSBpcyBwcmVzZW50Jyk7XG4gICAgICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKGNoaWxkU2NvcGUgPyBjYWxsZXJTY29wZS5jaGlsZCgpIDogY2FsbGVyU2NvcGUpO1xuICAgIH1cbiAgICBwdXNoRHluYW1pY1Njb3BlKCkge1xuICAgICAgICBsZXQgY2hpbGQgPSB0aGlzLmR5bmFtaWNTY29wZSgpLmNoaWxkKCk7XG4gICAgICAgIHRoaXMuZHluYW1pY1Njb3BlU3RhY2sucHVzaChjaGlsZCk7XG4gICAgICAgIHJldHVybiBjaGlsZDtcbiAgICB9XG4gICAgcHVzaFJvb3RTY29wZShzaXplLCBiaW5kQ2FsbGVyKSB7XG4gICAgICAgIGxldCBzY29wZSA9IFNjb3BlLnNpemVkKHNpemUpO1xuICAgICAgICBpZiAoYmluZENhbGxlcikgc2NvcGUuYmluZENhbGxlclNjb3BlKHRoaXMuc2NvcGUoKSk7XG4gICAgICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKHNjb3BlKTtcbiAgICAgICAgcmV0dXJuIHNjb3BlO1xuICAgIH1cbiAgICBwb3BTY29wZSgpIHtcbiAgICAgICAgdGhpcy5zY29wZVN0YWNrLnBvcCgpO1xuICAgIH1cbiAgICBwb3BEeW5hbWljU2NvcGUoKSB7XG4gICAgICAgIHRoaXMuZHluYW1pY1Njb3BlU3RhY2sucG9wKCk7XG4gICAgfVxuICAgIG5ld0Rlc3Ryb3lhYmxlKGQpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50cygpLm5ld0Rlc3Ryb3lhYmxlKGQpO1xuICAgIH1cbiAgICAvLy8gU0NPUEUgSEVMUEVSU1xuICAgIGdldFNlbGYoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNjb3BlKCkuZ2V0U2VsZigpO1xuICAgIH1cbiAgICByZWZlcmVuY2VGb3JTeW1ib2woc3ltYm9sKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNjb3BlKCkuZ2V0U3ltYm9sKHN5bWJvbCk7XG4gICAgfVxuICAgIC8vLyBFWEVDVVRJT05cbiAgICBleGVjdXRlKHN0YXJ0LCBpbml0aWFsaXplKSB7XG4gICAgICAgIHRoaXMucGMgPSBzdGFydDtcbiAgICAgICAgaWYgKGluaXRpYWxpemUpIGluaXRpYWxpemUodGhpcyk7XG4gICAgICAgIGxldCByZXN1bHQ7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICByZXN1bHQgPSB0aGlzLm5leHQoKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQuZG9uZSkgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdC52YWx1ZTtcbiAgICB9XG4gICAgbmV4dCgpIHtcbiAgICAgICAgbGV0IHsgZW52LCB1cGRhdGluZ09wY29kZVN0YWNrLCBlbGVtZW50U3RhY2sgfSA9IHRoaXM7XG4gICAgICAgIGxldCBvcGNvZGUgPSB0aGlzLm5leHRTdGF0ZW1lbnQoZW52KTtcbiAgICAgICAgbGV0IHJlc3VsdDtcbiAgICAgICAgaWYgKG9wY29kZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgQVBQRU5EX09QQ09ERVMuZXZhbHVhdGUodGhpcywgb3Bjb2RlLCBvcGNvZGUudHlwZSk7XG4gICAgICAgICAgICByZXN1bHQgPSB7IGRvbmU6IGZhbHNlLCB2YWx1ZTogbnVsbCB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgICAgIGRvbmU6IHRydWUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IG5ldyBSZW5kZXJSZXN1bHQoZW52LCBleHBlY3QodXBkYXRpbmdPcGNvZGVTdGFjay5wb3AoKSwgJ3RoZXJlIHNob3VsZCBiZSBhIGZpbmFsIHVwZGF0aW5nIG9wY29kZSBzdGFjaycpLCBlbGVtZW50U3RhY2sucG9wQmxvY2soKSlcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgbmV4dFN0YXRlbWVudChlbnYpIHtcbiAgICAgICAgbGV0IHsgcGMgfSA9IHRoaXM7XG4gICAgICAgIGlmIChwYyA9PT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGxldCBwcm9ncmFtID0gZW52LnByb2dyYW07XG4gICAgICAgIHRoaXMucGMgKz0gNDtcbiAgICAgICAgcmV0dXJuIHByb2dyYW0ub3Bjb2RlKHBjKTtcbiAgICB9XG4gICAgZXZhbHVhdGVPcGNvZGUob3Bjb2RlKSB7XG4gICAgICAgIEFQUEVORF9PUENPREVTLmV2YWx1YXRlKHRoaXMsIG9wY29kZSwgb3Bjb2RlLnR5cGUpO1xuICAgIH1cbiAgICBiaW5kRHluYW1pY1Njb3BlKG5hbWVzKSB7XG4gICAgICAgIGxldCBzY29wZSA9IHRoaXMuZHluYW1pY1Njb3BlKCk7XG4gICAgICAgIGZvciAobGV0IGkgPSBuYW1lcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgbGV0IG5hbWUgPSB0aGlzLmNvbnN0YW50cy5nZXRTdHJpbmcobmFtZXNbaV0pO1xuICAgICAgICAgICAgc2NvcGUuc2V0KG5hbWUsIHRoaXMuc3RhY2sucG9wKCkpO1xuICAgICAgICB9XG4gICAgfVxufSJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi92bS9hcHBlbmQuanMiXSwibmFtZXMiOlsiRXZhbHVhdGlvblN0YWNrIiwiY29uc3RydWN0b3IiLCJzdGFjayIsImZwIiwic3AiLCJPYmplY3QiLCJzZWFsIiwiZW1wdHkiLCJyZXN0b3JlIiwic25hcHNob3QiLCJzbGljZSIsImxlbmd0aCIsImlzRW1wdHkiLCJwdXNoIiwidmFsdWUiLCJkdXAiLCJwb3NpdGlvbiIsInBvcCIsIm4iLCJ0b3AiLCJwZWVrIiwiZnJvbUJhc2UiLCJvZmZzZXQiLCJmcm9tVG9wIiwiY2FwdHVyZSIsIml0ZW1zIiwiZW5kIiwic3RhcnQiLCJ0b0FycmF5IiwiVk0iLCJlbnYiLCJzY29wZSIsImR5bmFtaWNTY29wZSIsImVsZW1lbnRTdGFjayIsImR5bmFtaWNTY29wZVN0YWNrIiwic2NvcGVTdGFjayIsInVwZGF0aW5nT3Bjb2RlU3RhY2siLCJjYWNoZUdyb3VwcyIsImxpc3RCbG9ja1N0YWNrIiwicGMiLCJyYSIsInMwIiwiczEiLCJ0MCIsInQxIiwiY29uc3RhbnRzIiwiZmV0Y2giLCJyZWdpc3RlciIsImxvYWQiLCJmZXRjaFZhbHVlIiwibG9hZFZhbHVlIiwicHVzaEZyYW1lIiwicG9wRnJhbWUiLCJnb3RvIiwiY2FsbCIsInJldHVyblRvIiwicmV0dXJuIiwiaW5pdGlhbCIsInNlbGYiLCJwcm9ncmFtIiwicm9vdCIsInN5bWJvbFRhYmxlIiwic3ltYm9scyIsInZtIiwiYXJncyIsImJlZ2luQ2FjaGVHcm91cCIsInVwZGF0aW5nIiwidGFpbCIsImNvbW1pdENhY2hlR3JvdXAiLCJFTkQiLCJvcGNvZGVzIiwibWFya2VyIiwiaGVhZCIsIm5leHROb2RlIiwidGFnIiwiZ3VhcmQiLCJpbnNlcnRCZWZvcmUiLCJhcHBlbmQiLCJlbnRlciIsInN0YXRlIiwidHJhY2tlciIsImVsZW1lbnRzIiwicHVzaFVwZGF0YWJsZUJsb2NrIiwidHJ5T3Bjb2RlIiwiZGlkRW50ZXIiLCJpdGVyYXRlIiwibWVtbyIsImVudGVySXRlbSIsImtleSIsIm9wY29kZSIsImxpc3RCbG9jayIsIm1hcCIsImVudGVyTGlzdCIsInB1c2hCbG9ja0xpc3QiLCJhcnRpZmFjdHMiLCJ1cGRhdGVXaXRoIiwiY2hpbGRyZW4iLCJleGl0IiwicG9wQmxvY2siLCJwYXJlbnQiLCJkaWRJbml0aWFsaXplQ2hpbGRyZW4iLCJleGl0TGlzdCIsImN1cnJlbnQiLCJwdXNoQ2hpbGRTY29wZSIsImNoaWxkIiwicHVzaENhbGxlclNjb3BlIiwiY2hpbGRTY29wZSIsImNhbGxlclNjb3BlIiwiZ2V0Q2FsbGVyU2NvcGUiLCJwdXNoRHluYW1pY1Njb3BlIiwicHVzaFJvb3RTY29wZSIsInNpemUiLCJiaW5kQ2FsbGVyIiwic2l6ZWQiLCJiaW5kQ2FsbGVyU2NvcGUiLCJwb3BTY29wZSIsInBvcER5bmFtaWNTY29wZSIsIm5ld0Rlc3Ryb3lhYmxlIiwiZCIsImdldFNlbGYiLCJyZWZlcmVuY2VGb3JTeW1ib2wiLCJzeW1ib2wiLCJnZXRTeW1ib2wiLCJleGVjdXRlIiwiaW5pdGlhbGl6ZSIsInJlc3VsdCIsIm5leHQiLCJkb25lIiwibmV4dFN0YXRlbWVudCIsImV2YWx1YXRlIiwidHlwZSIsImV2YWx1YXRlT3Bjb2RlIiwiYmluZER5bmFtaWNTY29wZSIsIm5hbWVzIiwiaSIsIm5hbWUiLCJnZXRTdHJpbmciLCJzZXQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7O0FBRU8sTUFBTUEsZUFBTixDQUFzQjtBQUN6QkMsZ0JBQVlDLEtBQVosRUFBbUJDLEVBQW5CLEVBQXVCQyxFQUF2QixFQUEyQjtBQUN2QixhQUFLRixLQUFMLEdBQWFBLEtBQWI7QUFDQSxhQUFLQyxFQUFMLEdBQVVBLEVBQVY7QUFDQSxhQUFLQyxFQUFMLEdBQVVBLEVBQVY7QUFDQUMsZUFBT0MsSUFBUCxDQUFZLElBQVo7QUFDSDtBQUNELFdBQU9DLEtBQVAsR0FBZTtBQUNYLGVBQU8sSUFBSSxJQUFKLENBQVMsRUFBVCxF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dCI6WyJpbXBvcnQgeyBSZWdpc3RlciB9IGZyb20gJy4uL29wY29kZXMnO1xuaW1wb3J0IHsgU2NvcGUgfSBmcm9tICcuLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBTdGFjaywgTGlua2VkTGlzdCwgTGlzdFNsaWNlLCBleHBlY3QgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IGNvbWJpbmVTbGljZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBMYWJlbE9wY29kZSwgSnVtcElmTm90TW9kaWZpZWRPcGNvZGUsIERpZE1vZGlmeU9wY29kZSB9IGZyb20gJy4uL2NvbXBpbGVkL29wY29kZXMvdm0nO1xuaW1wb3J0IHsgTGlzdEJsb2NrT3Bjb2RlLCBUcnlPcGNvZGUgfSBmcm9tICcuL3VwZGF0ZSc7XG5pbXBvcnQgUmVuZGVyUmVzdWx0IGZyb20gJy4vcmVuZGVyLXJlc3VsdCc7XG5pbXBvcnQgeyBBUFBFTkRfT1BDT0RFUyB9IGZyb20gJy4uL29wY29kZXMnO1xuZXhwb3J0IGNsYXNzIEV2YWx1YXRpb25TdGFjayB7XG4gICAgY29uc3RydWN0b3Ioc3RhY2ssIGZwLCBzcCkge1xuICAgICAgICB0aGlzLnN0YWNrID0gc3RhY2s7XG4gICAgICAgIHRoaXMuZnAgPSBmcDtcbiAgICAgICAgdGhpcy5zcCA9IHNwO1xuICAgICAgICBPYmplY3Quc2VhbCh0aGlzKTtcbiAgICB9XG4gICAgc3RhdGljIGVtcHR5KCkge1xuICAgICAgICByZXR1cm4gbmV3IHRoaXMoW10sIDAsIC0xKTtcbiAgICB9XG4gICAgc3RhdGljIHJlc3RvcmUoc25hcHNob3QpIHtcbiAgICAgICAgcmV0dXJuIG5ldyB0aGlzKHNuYXBzaG90LnNsaWNlKCksIDAsIHNuYXBzaG90Lmxlbmd0aCAtIDEpO1xuICAgIH1cbiAgICBpc0VtcHR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zcCA9PT0gLTE7XG4gICAgfVxuICAgIHB1c2godmFsdWUpIHtcbiAgICAgICAgdGhpcy5zdGFja1srK3RoaXMuc3BdID0gdmFsdWU7XG4gICAgfVxuICAgIGR1cChwb3NpdGlvbiA9IHRoaXMuc3ApIHtcbiAgICAgICAgdGhpcy5wdXNoKHRoaXMuc3RhY2tbcG9zaXRpb25dKTtcbiAgICB9XG4gICAgcG9wKG4gPSAxKSB7XG4gICAgICAgIGxldCB0b3AgPSB0aGlzLnN0YWNrW3RoaXMuc3BdO1xuICAgICAgICB0aGlzLnNwIC09IG47XG4gICAgICAgIHJldHVybiB0b3A7XG4gICAgfVxuICAgIHBlZWsoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrW3RoaXMuc3BdO1xuICAgIH1cbiAgICBmcm9tQmFzZShvZmZzZXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2tbdGhpcy5mcCAtIG9mZnNldF07XG4gICAgfVxuICAgIGZyb21Ub3Aob2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrW3RoaXMuc3AgLSBvZmZzZXRdO1xuICAgIH1cbiAgICBjYXB0dXJlKGl0ZW1zKSB7XG4gICAgICAgIGxldCBlbmQgPSB0aGlzLnNwICsgMTtcbiAgICAgICAgbGV0IHN0YXJ0ID0gZW5kIC0gaXRlbXM7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICAgIH1cbiAgICB0b0FycmF5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFjay5zbGljZSh0aGlzLmZwLCB0aGlzLnNwICsgMSk7XG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVk0ge1xuICAgIGNvbnN0cnVjdG9yKGVudiwgc2NvcGUsIGR5bmFtaWNTY29wZSwgZWxlbWVudFN0YWNrKSB7XG4gICAgICAgIHRoaXMuZW52ID0gZW52O1xuICAgICAgICB0aGlzLmVsZW1lbnRTdGFjayA9IGVsZW1lbnRTdGFjaztcbiAgICAgICAgdGhpcy5keW5hbWljU2NvcGVTdGFjayA9IG5ldyBTdGFjaygpO1xuICAgICAgICB0aGlzLnNjb3BlU3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgICAgICAgdGhpcy51cGRhdGluZ09wY29kZVN0YWNrID0gbmV3IFN0YWNrKCk7XG4gICAgICAgIHRoaXMuY2FjaGVHcm91cHMgPSBuZXcgU3RhY2soKTtcbiAgICAgICAgdGhpcy5saXN0QmxvY2tTdGFjayA9IG5ldyBTdGFjaygpO1xuICAgICAgICB0aGlzLnN0YWNrID0gRXZhbHVhdGlvblN0YWNrLmVtcHR5KCk7XG4gICAgICAgIC8qKiBSZWdpc3RlcnMgKiovXG4gICAgICAgIHRoaXMucGMgPSAtMTtcbiAgICAgICAgdGhpcy5yYSA9IC0xO1xuICAgICAgICB0aGlzLnMwID0gbnVsbDtcbiAgICAgICAgdGhpcy5zMSA9IG51bGw7XG4gICAgICAgIHRoaXMudDAgPSBudWxsO1xuICAgICAgICB0aGlzLnQxID0gbnVsbDtcbiAgICAgICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgICAgIHRoaXMuY29uc3RhbnRzID0gZW52LmNvbnN0YW50cztcbiAgICAgICAgdGhpcy5lbGVtZW50U3RhY2sgPSBlbGVtZW50U3RhY2s7XG4gICAgICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKHNjb3BlKTtcbiAgICAgICAgdGhpcy5keW5hbWljU2NvcGVTdGFjay5wdXNoKGR5bmFtaWNTY29wZSk7XG4gICAgfVxuICAgIGdldCBmcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2suZnA7XG4gICAgfVxuICAgIHNldCBmcChmcCkge1xuICAgICAgICB0aGlzLnN0YWNrLmZwID0gZnA7XG4gICAgfVxuICAgIGdldCBzcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2suc3A7XG4gICAgfVxuICAgIHNldCBzcChzcCkge1xuICAgICAgICB0aGlzLnN0YWNrLnNwID0gc3A7XG4gICAgfVxuICAgIC8vIEZldGNoIGEgdmFsdWUgZnJvbSBhIHJlZ2lzdGVyIG9udG8gdGhlIHN0YWNrXG4gICAgZmV0Y2gocmVnaXN0ZXIpIHtcbiAgICAgICAgdGhpcy5zdGFjay5wdXNoKHRoaXNbUmVnaXN0ZXJbcmVnaXN0ZXJdXSk7XG4gICAgfVxuICAgIC8vIExvYWQgYSB2YWx1ZSBmcm9tIHRoZSBzdGFjayBpbnRvIGEgcmVnaXN0ZXJcbiAgICBsb2FkKHJlZ2lzdGVyKSB7XG4gICAgICAgIHRoaXNbUmVnaXN0ZXJbcmVnaXN0ZXJdXSA9IHRoaXMuc3RhY2sucG9wKCk7XG4gICAgfVxuICAgIC8vIEZldGNoIGEgdmFsdWUgZnJvbSBhIHJlZ2lzdGVyXG4gICAgZmV0Y2hWYWx1ZShyZWdpc3Rlcikge1xuICAgICAgICByZXR1cm4gdGhpc1tSZWdpc3RlcltyZWdpc3Rlcl1dO1xuICAgIH1cbiAgICAvLyBMb2FkIGEgdmFsdWUgaW50byBhIHJlZ2lzdGVyXG4gICAgbG9hZFZhbHVlKHJlZ2lzdGVyLCB2YWx1ZSkge1xuICAgICAgICB0aGlzW1JlZ2lzdGVyW3JlZ2lzdGVyXV0gPSB2YWx1ZTtcbiAgICB9XG4gICAgLy8gU3RhcnQgYSBuZXcgZnJhbWUgYW5kIHNhdmUgJHJhIGFuZCAkZnAgb24gdGhlIHN0YWNrXG4gICAgcHVzaEZyYW1lKCkge1xuICAgICAgICB0aGlzLnN0YWNrLnB1c2godGhpcy5yYSk7XG4gICAgICAgIHRoaXMuc3RhY2sucHVzaCh0aGlzLmZwKTtcbiAgICAgICAgdGhpcy5mcCA9IHRoaXMuc3AgLSAxO1xuICAgICAgICAvLyB0aGlzLmZwID0gdGhpcy5zcCArIDE7XG4gICAgfVxuICAgIC8vIFJlc3RvcmUgJHJhLCAkc3AgYW5kICRmcFxuICAgIHBvcEZyYW1lKCkge1xuICAgICAgICB0aGlzLnNwID0gdGhpcy5mcCAtIDE7XG4gICAgICAgIHRoaXMucmEgPSB0aGlzLnN0YWNrLmZyb21CYXNlKDApO1xuICAgICAgICB0aGlzLmZwID0gdGhpcy5zdGFjay5mcm9tQmFzZSgtMSk7XG4gICAgfVxuICAgIC8vIEp1bXAgdG8gYW4gYWRkcmVzcyBpbiBgcHJvZ3JhbWBcbiAgICBnb3RvKHBjKSB7XG4gICAgICAgIHRoaXMucGMgPSBwYztcbiAgICB9XG4gICAgLy8gU2F2ZSAkcGMgaW50byAkcmEsIHRoZW4ganVtcCB0byBhIG5ldyBhZGRyZXNzIGluIGBwcm9ncmFtYCAoamFsIGluIE1JUFMpXG4gICAgY2FsbChwYykge1xuICAgICAgICB0aGlzLnJhID0gdGhpcy5wYztcbiAgICAgICAgdGhpcy5wYyA9IHBjO1xuICAgIH1cbiAgICAvLyBQdXQgYSBzcGVjaWZpYyBgcHJvZ3JhbWAgYWRkcmVzcyBpbiAkcmFcbiAgICByZXR1cm5UbyhyYSkge1xuICAgICAgICB0aGlzLnJhID0gcmE7XG4gICAgfVxuICAgIC8vIFJldHVybiB0byB0aGUgYHByb2dyYW1gIGFkZHJlc3Mgc3RvcmVkIGluICRyYVxuICAgIHJldHVybigpIHtcbiAgICAgICAgdGhpcy5wYyA9IHRoaXMucmE7XG4gICAgfVxuICAgIHN0YXRpYyBpbml0aWFsKGVudiwgc2VsZiwgZHluYW1pY1Njb3BlLCBlbGVtZW50U3RhY2ssIHByb2dyYW0pIHtcbiAgICAgICAgbGV0IHNjb3BlID0gU2NvcGUucm9vdChzZWxmLCBwcm9ncmFtLnN5bWJvbFRhYmxlLnN5bWJvbHMubGVuZ3RoKTtcbiAgICAgICAgbGV0IHZtID0gbmV3IFZNKGVudiwgc2NvcGUsIGR5bmFtaWNTY29wZSwgZWxlbWVudFN0YWNrKTtcbiAgICAgICAgdm0ucGMgPSBwcm9ncmFtLnN0YXJ0O1xuICAgICAgICB2bS51cGRhdGluZ09wY29kZVN0YWNrLnB1c2gobmV3IExpbmtlZExpc3QoKSk7XG4gICAgICAgIHJldHVybiB2bTtcbiAgICB9XG4gICAgY2FwdHVyZShhcmdzKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBlbnY6IHRoaXMuZW52LFxuICAgICAgICAgICAgc2NvcGU6IHRoaXMuc2NvcGUoKSxcbiAgICAgICAgICAgIGR5bmFtaWNTY29wZTogdGhpcy5keW5hbWljU2NvcGUoKSxcbiAgICAgICAgICAgIHN0YWNrOiB0aGlzLnN0YWNrLmNhcHR1cmUoYXJncylcbiAgICAgICAgfTtcbiAgICB9XG4gICAgYmVnaW5DYWNoZUdyb3VwKCkge1xuICAgICAgICB0aGlzLmNhY2hlR3JvdXBzLnB1c2godGhpcy51cGRhdGluZygpLnRhaWwoKSk7XG4gICAgfVxuICAgIGNvbW1pdENhY2hlR3JvdXAoKSB7XG4gICAgICAgIC8vICAgICAgICBKdW1wSWZOb3RNb2RpZmllZChFTkQpXG4gICAgICAgIC8vICAgICAgICAoaGVhZClcbiAgICAgICAgLy8gICAgICAgICguLi4uKVxuICAgICAgICAvLyAgICAgICAgKHRhaWwpXG4gICAgICAgIC8vICAgICAgICBEaWRNb2RpZnlcbiAgICAgICAgLy8gRU5EOiAgIE5vb3BcbiAgICAgICAgbGV0IEVORCA9IG5ldyBMYWJlbE9wY29kZShcIkVORFwiKTtcbiAgICAgICAgbGV0IG9wY29kZXMgPSB0aGlzLnVwZGF0aW5nKCk7XG4gICAgICAgIGxldCBtYXJrZXIgPSB0aGlzLmNhY2hlR3JvdXBzLnBvcCgpO1xuICAgICAgICBsZXQgaGVhZCA9IG1hcmtlciA/IG9wY29kZXMubmV4dE5vZGUobWFya2VyKSA6IG9wY29kZXMuaGVhZCgpO1xuICAgICAgICBsZXQgdGFpbCA9IG9wY29kZXMudGFpbCgpO1xuICAgICAgICBsZXQgdGFnID0gY29tYmluZVNsaWNlKG5ldyBMaXN0U2xpY2UoaGVhZCwgdGFpbCkpO1xuICAgICAgICBsZXQgZ3VhcmQgPSBuZXcgSnVtcElmTm90TW9kaWZpZWRPcGNvZGUodGFnLCBFTkQpO1xuICAgICAgICBvcGNvZGVzLmluc2VydEJlZm9yZShndWFyZCwgaGVhZCk7XG4gICAgICAgIG9wY29kZXMuYXBwZW5kKG5ldyBEaWRNb2RpZnlPcGNvZGUoZ3VhcmQpKTtcbiAgICAgICAgb3Bjb2Rlcy5hcHBlbmQoRU5EKTtcbiAgICB9XG4gICAgZW50ZXIoYXJncykge1xuICAgICAgICBsZXQgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdCgpO1xuICAgICAgICBsZXQgc3RhdGUgPSB0aGlzLmNhcHR1cmUoYXJncyk7XG4gICAgICAgIGxldCB0cmFja2VyID0gdGhpcy5lbGVtZW50cygpLnB1c2hVcGRhdGFibGVCbG9jaygpO1xuICAgICAgICBsZXQgdHJ5T3Bjb2RlID0gbmV3IFRyeU9wY29kZSh0aGlzLnBjLCBzdGF0ZSwgdHJhY2tlciwgdXBkYXRpbmcpO1xuICAgICAgICB0aGlzLmRpZEVudGVyKHRyeU9wY29kZSk7XG4gICAgfVxuICAgIGl0ZXJhdGUobWVtbywgdmFsdWUpIHtcbiAgICAgICAgbGV0IHN0YWNrID0gdGhpcy5zdGFjaztcbiAgICAgICAgc3RhY2sucHVzaCh2YWx1ZSk7XG4gICAgICAgIHN0YWNrLnB1c2gobWVtbyk7XG4gICAgICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZSgyKTtcbiAgICAgICAgbGV0IHRyYWNrZXIgPSB0aGlzLmVsZW1lbnRzKCkucHVzaFVwZGF0YWJsZUJsb2NrKCk7XG4gICAgICAgIC8vIGxldCBpcCA9IHRoaXMuaXA7XG4gICAgICAgIC8vIHRoaXMuaXAgPSBlbmQgKyA0O1xuICAgICAgICAvLyB0aGlzLmZyYW1lcy5wdXNoKGlwKTtcbiAgICAgICAgcmV0dXJuIG5ldyBUcnlPcGNvZGUodGhpcy5wYywgc3RhdGUsIHRyYWNrZXIsIG5ldyBMaW5rZWRMaXN0KCkpO1xuICAgIH1cbiAgICBlbnRlckl0ZW0oa2V5LCBvcGNvZGUpIHtcbiAgICAgICAgdGhpcy5saXN0QmxvY2soKS5tYXBba2V5XSA9IG9wY29kZTtcbiAgICAgICAgdGhpcy5kaWRFbnRlcihvcGNvZGUpO1xuICAgIH1cbiAgICBlbnRlckxpc3Qoc3RhcnQpIHtcbiAgICAgICAgbGV0IHVwZGF0aW5nID0gbmV3IExpbmtlZExpc3QoKTtcbiAgICAgICAgbGV0IHN0YXRlID0gdGhpcy5jYXB0dXJlKDApO1xuICAgICAgICBsZXQgdHJhY2tlciA9IHRoaXMuZWxlbWVudHMoKS5wdXNoQmxvY2tMaXN0KHVwZGF0aW5nKTtcbiAgICAgICAgbGV0IGFydGlmYWN0cyA9IHRoaXMuc3RhY2sucGVlaygpLmFydGlmYWN0cztcbiAgICAgICAgbGV0IG9wY29kZSA9IG5ldyBMaXN0QmxvY2tPcGNvZGUoc3RhcnQsIHN0YXRlLCB0cmFja2VyLCB1cGRhdGluZywgYXJ0aWZhY3RzKTtcbiAgICAgICAgdGhpcy5saXN0QmxvY2tTdGFjay5wdXNoKG9wY29kZSk7XG4gICAgICAgIHRoaXMuZGlkRW50ZXIob3Bjb2RlKTtcbiAgICB9XG4gICAgZGlkRW50ZXIob3Bjb2RlKSB7XG4gICAgICAgIHRoaXMudXBkYXRlV2l0aChvcGNvZGUpO1xuICAgICAgICB0aGlzLnVwZGF0aW5nT3Bjb2RlU3RhY2sucHVzaChvcGNvZGUuY2hpbGRyZW4pO1xuICAgIH1cbiAgICBleGl0KCkge1xuICAgICAgICB0aGlzLmVsZW1lbnRzKCkucG9wQmxvY2soKTtcbiAgICAgICAgdGhpcy51cGRhdGluZ09wY29kZVN0YWNrLnBvcCgpO1xuICAgICAgICBsZXQgcGFyZW50ID0gdGhpcy51cGRhdGluZygpLnRhaWwoKTtcbiAgICAgICAgcGFyZW50LmRpZEluaXRpYWxpemVDaGlsZHJlbigpO1xuICAgIH1cbiAgICBleGl0TGlzdCgpIHtcbiAgICAgICAgdGhpcy5leGl0KCk7XG4gICAgICAgIHRoaXMubGlzdEJsb2NrU3RhY2sucG9wKCk7XG4gICAgfVxuICAgIHVwZGF0ZVdpdGgob3Bjb2RlKSB7XG4gICAgICAgIHRoaXMudXBkYXRpbmcoKS5hcHBlbmQob3Bjb2RlKTtcbiAgICB9XG4gICAgbGlzdEJsb2NrKCkge1xuICAgICAgICByZXR1cm4gZXhwZWN0KHRoaXMubGlzdEJsb2NrU3RhY2suY3VycmVudCwgJ2V4cGVjdGVkIGEgbGlzdCBibG9jaycpO1xuICAgIH1cbiAgICB1cGRhdGluZygpIHtcbiAgICAgICAgcmV0dXJuIGV4cGVjdCh0aGlzLnVwZGF0aW5nT3Bjb2RlU3RhY2suY3VycmVudCwgJ2V4cGVjdGVkIHVwZGF0aW5nIG9wY29kZSBvbiB0aGUgdXBkYXRpbmcgb3Bjb2RlIHN0YWNrJyk7XG4gICAgfVxuICAgIGVsZW1lbnRzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50U3RhY2s7XG4gICAgfVxuICAgIHNjb3BlKCkge1xuICAgICAgICByZXR1cm4gZXhwZWN0KHRoaXMuc2NvcGVTdGFjay5jdXJyZW50LCAnZXhwZWN0ZWQgc2NvcGUgb24gdGhlIHNjb3BlIHN0YWNrJyk7XG4gICAgfVxuICAgIGR5bmFtaWNTY29wZSgpIHtcbiAgICAgICAgcmV0dXJuIGV4cGVjdCh0aGlzLmR5bmFtaWNTY29wZVN0YWNrLmN1cnJlbnQsICdleHBlY3RlZCBkeW5hbWljIHNjb3BlIG9uIHRoZSBkeW5hbWljIHNjb3BlIHN0YWNrJyk7XG4gICAgfVxuICAgIHB1c2hDaGlsZFNjb3BlKCkge1xuICAgICAgICB0aGlzLnNjb3BlU3RhY2sucHVzaCh0aGlzLnNjb3BlKCkuY2hpbGQoKSk7XG4gICAgfVxuICAgIHB1c2hDYWxsZXJTY29wZShjaGlsZFNjb3BlID0gZmFsc2UpIHtcbiAgICAgICAgbGV0IGNhbGxlclNjb3BlID0gZXhwZWN0KHRoaXMuc2NvcGUoKS5nZXRDYWxsZXJTY29wZSgpLCAncHVzaENhbGxlclNjb3BlIGlzIGNhbGxlZCB3aGVuIGEgY2FsbGVyIHNjb3BlIGlzIHByZXNlbnQnKTtcbiAgICAgICAgdGhpcy5zY29wZVN0YWNrLnB1c2goY2hpbGRTY29wZSA/IGNhbGxlclNjb3BlLmNoaWxkKCkgOiBjYWxsZXJTY29wZSk7XG4gICAgfVxuICAgIHB1c2hEeW5hbWljU2NvcGUoKSB7XG4gICAgICAgIGxldCBjaGlsZCA9IHRoaXMuZHluYW1pY1Njb3BlKCkuY2hpbGQoKTtcbiAgICAgICAgdGhpcy5keW5hbWljU2NvcGVTdGFjay5wdXNoKGNoaWxkKTtcbiAgICAgICAgcmV0dXJuIGNoaWxkO1xuICAgIH1cbiAgICBwdXNoUm9vdFNjb3BlKHNpemUsIGJpbmRDYWxsZXIpIHtcbiAgICAgICAgbGV0IHNjb3BlID0gU2NvcGUuc2l6ZWQoc2l6ZSk7XG4gICAgICAgIGlmIChiaW5kQ2FsbGVyKSBzY29wZS5iaW5kQ2FsbGVyU2NvcGUodGhpcy5zY29wZSgpKTtcbiAgICAgICAgdGhpcy5zY29wZVN0YWNrLnB1c2goc2NvcGUpO1xuICAgICAgICByZXR1cm4gc2NvcGU7XG4gICAgfVxuICAgIHBvcFNjb3BlKCkge1xuICAgICAgICB0aGlzLnNjb3BlU3RhY2sucG9wKCk7XG4gICAgfVxuICAgIHBvcER5bmFtaWNTY29wZSgpIHtcbiAgICAgICAgdGhpcy5keW5hbWljU2NvcGVTdGFjay5wb3AoKTtcbiAgICB9XG4gICAgbmV3RGVzdHJveWFibGUoZCkge1xuICAgICAgICB0aGlzLmVsZW1lbnRzKCkubmV3RGVzdHJveWFibGUoZCk7XG4gICAgfVxuICAgIC8vLyBTQ09QRSBIRUxQRVJTXG4gICAgZ2V0U2VsZigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NvcGUoKS5nZXRTZWxmKCk7XG4gICAgfVxuICAgIHJlZmVyZW5jZUZvclN5bWJvbChzeW1ib2wpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NvcGUoKS5nZXRTeW1ib2woc3ltYm9sKTtcbiAgICB9XG4gICAgLy8vIEVYRUNVVElPTlxuICAgIGV4ZWN1dGUoc3RhcnQsIGluaXRpYWxpemUpIHtcbiAgICAgICAgdGhpcy5wYyA9IHN0YXJ0O1xuICAgICAgICBpZiAoaW5pdGlhbGl6ZSkgaW5pdGlhbGl6ZSh0aGlzKTtcbiAgICAgICAgbGV0IHJlc3VsdDtcbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMubmV4dCgpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdC5kb25lKSBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0LnZhbHVlO1xuICAgIH1cbiAgICBuZXh0KCkge1xuICAgICAgICBsZXQgeyBlbnYsIHVwZGF0aW5nT3Bjb2RlU3RhY2ssIGVsZW1lbnRTdGFjayB9ID0gdGhpcztcbiAgICAgICAgbGV0IG9wY29kZTtcbiAgICAgICAgaWYgKG9wY29kZSA9IHRoaXMubmV4dFN0YXRlbWVudChlbnYpKSB7XG4gICAgICAgICAgICBBUFBFTkRfT1BDT0RFUy5ldmFsdWF0ZSh0aGlzLCBvcGNvZGUsIG9wY29kZS50eXBlKTtcbiAgICAgICAgICAgIHJldHVybiB7IGRvbmU6IGZhbHNlLCB2YWx1ZTogbnVsbCB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkb25lOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IG5ldyBSZW5kZXJSZXN1bHQoZW52LCBleHBlY3QodXBkYXRpbmdPcGNvZGVTdGFjay5wb3AoKSwgJ3RoZXJlIHNob3VsZCBiZSBhIGZpbmFsIHVwZGF0aW5nIG9wY29kZSBzdGFjaycpLCBlbGVtZW50U3RhY2sucG9wQmxvY2soKSlcbiAgICAgICAgfTtcbiAgICB9XG4gICAgbmV4dFN0YXRlbWVudChlbnYpIHtcbiAgICAgICAgbGV0IHsgcGMgfSA9IHRoaXM7XG4gICAgICAgIGlmIChwYyA9PT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGxldCBwcm9ncmFtID0gZW52LnByb2dyYW07XG4gICAgICAgIHRoaXMucGMgKz0gNDtcbiAgICAgICAgcmV0dXJuIHByb2dyYW0ub3Bjb2RlKHBjKTtcbiAgICB9XG4gICAgZXZhbHVhdGVPcGNvZGUob3Bjb2RlKSB7XG4gICAgICAgIEFQUEVORF9PUENPREVTLmV2YWx1YXRlKHRoaXMsIG9wY29kZSwgb3Bjb2RlLnR5cGUpO1xuICAgIH1cbiAgICBiaW5kRHluYW1pY1Njb3BlKG5hbWVzKSB7XG4gICAgICAgIGxldCBzY29wZSA9IHRoaXMuZHluYW1pY1Njb3BlKCk7XG4gICAgICAgIGZvciAobGV0IGkgPSBuYW1lcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgbGV0IG5hbWUgPSB0aGlzLmNvbnN0YW50cy5nZXRTdHJpbmcobmFtZXNbaV0pO1xuICAgICAgICAgICAgc2NvcGUuc2V0KG5hbWUsIHRoaXMuc3RhY2sucG9wKCkpO1xuICAgICAgICB9XG4gICAgfVxufSJdfQ==

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

map = this._map = (0, _util.dict)();
for (let i = 0; i < names.length; i++) {
let name = names[i];
map[name] = references[i];
}
names.forEach((name, i) => map[name] = references[i]);
}

@@ -246,6 +243,3 @@ return map;

let out = (0, _util.dict)();
for (let i = 0; i < names.length; i++) {
let name = names[i];
out[name] = references[i].value();
}
names.forEach((name, i) => out[name] = references[i].value());
return out;

@@ -255,2 +249,2 @@ }

exports.default = new Arguments();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi92bS9hcmd1bWVudHMuanMiXSwibmFtZXMiOlsiQXJndW1lbnRzIiwiY29uc3RydWN0b3IiLCJzdGFjayIsInBvc2l0aW9uYWwiLCJQb3NpdGlvbmFsQXJndW1lbnRzIiwibmFtZWQiLCJOYW1lZEFyZ3VtZW50cyIsImVtcHR5Iiwic2V0dXAiLCJwb3NpdGlvbmFsQ291bnQiLCJzeW50aGV0aWMiLCJuYW1lcyIsImZyb21Ub3AiLCJuYW1lZENvdW50IiwibGVuZ3RoIiwic3RhcnQiLCJ0YWciLCJhdCIsInBvcyIsImdldCIsIm5hbWUiLCJjYXB0dXJlIiwiY2xlYXIiLCJwb3BzIiwicG9wIiwiX3RhZyIsIl9yZWZlcmVuY2VzIiwicmVmZXJlbmNlcyIsInBvc2l0aW9uIiwiQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzIiwiQXJyYXkiLCJpIiwidmFsdWUiLCJtYXAiLCJ2YWx1ZU9mIiwiY3JlYXRlIiwiaWR4IiwicGFyc2VJbnQiLCJyZWZlcmVuY2UiLCJfbmFtZXMiLCJfcmVhbE5hbWVzIiwic2xpY2VOYW1lIiwiaGFzIiwiaW5kZXhPZiIsIkNhcHR1cmVkTmFtZWRBcmd1bWVudHMiLCJzbGljZSIsIl9tYXAiLCJvdXQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDTyxNQUFNQSxTQUFOLENBQWdCO0FBQ25CQyxrQkFBYztBQUNWLGFBQUtDLEtBQUwsR0FBYSxJQUFiO0FBQ0EsYUFBS0MsVUFBTCxHQUFrQixJQUFJQyxtQkFBSixFQUFsQjtBQUNBLGFBQUtDLEtBQUwsR0FBYSxJQUFJQyxjQUFKLEVBQWI7QUFDSDtBQUNEQyxZQUFRO0FBQ0osYUFBS0MsS0FBTCxDQUFXLElBQVgsRUFBaUIsQ0FBakIsRUFBb0IsSUFBcEI7QUFDQSxlQUFPLElBQVA7QUFDSDtBQUNEQSxVQUFNTixLQUFOLEVBQWFPLGVBQWIsRUFBOEJDLFNBQTlCLEVBQXlDO0FBQ3JDLGFBQUtSLEtBQUwsR0FBYUEsS0FBYjtBQUNBLFlBQUlTLFFB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QUFrQ2lCLEdBQWxDLEVBQXVDO0FBQ25DLGdCQUFJWCxPQUFPVCxNQUFNb0IsQ0FBTixDQUFYO0FBQ0FnQixnQkFBSTNCLElBQUosSUFBWU8sV0FBV0ksQ0FBWCxFQUFjQyxLQUFkLEVBQVo7QUFDSDtBQUNELGVBQU9lLEdBQVA7QUFDSDtBQXhDd0I7a0JBMENkLElBQUkvQyxTQUFKLEUiLCJmaWxlIjoibGliL3ZtL2FyZ3VtZW50cy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRpY3QsIEVNUFRZX0FSUkFZIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBjb21iaW5lVGFnZ2VkIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IFByaW1pdGl2ZVJlZmVyZW5jZSwgVU5ERUZJTkVEX1JFRkVSRU5DRSB9IGZyb20gJy4uL3JlZmVyZW5jZXMnO1xuZXhwb3J0IGNsYXNzIEFyZ3VtZW50cyB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBudWxsO1xuICAgICAgICB0aGlzLnBvc2l0aW9uYWwgPSBuZXcgUG9zaXRpb25hbEFyZ3VtZW50cygpO1xuICAgICAgICB0aGlzLm5hbWVkID0gbmV3IE5hbWVkQXJndW1lbnRzKCk7XG4gICAgfVxuICAgIGVtcHR5KCkge1xuICAgICAgICB0aGlzLnNldHVwKG51bGwsIDAsIHRydWUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgc2V0dXAoc3RhY2ssIHBvc2l0aW9uYWxDb3VudCwgc3ludGhldGljKSB7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICAgICAgbGV0IG5hbWVzID0gc3RhY2suZnJvbVRvcCgwKTtcbiAgICAgICAgbGV0IG5hbWVkQ291bnQgPSBuYW1lcy5sZW5ndGg7XG4gICAgICAgIGxldCBzdGFydCA9IHBvc2l0aW9uYWxDb3VudCArIG5hbWVkQ291bnQgKyAxO1xuICAgICAgICBsZXQgcG9zaXRpb25hbCA9IHRoaXMucG9zaXRpb25hbDtcbiAgICAgICAgcG9zaXRpb25hbC5zZXR1cChzdGFjaywgc3RhcnQsIHBvc2l0aW9uYWxDb3VudCk7XG4gICAgICAgIGxldCBuYW1lZCA9IHRoaXMubmFtZWQ7XG4gICAgICAgIG5hbWVkLnNldHVwKHN0YWNrLCBuYW1lZENvdW50LCBuYW1lcywgc3ludGhldGljKTtcbiAgICB9XG4gICAgZ2V0IHRhZygpIHtcbiAgICAgICAgcmV0dXJuIGNvbWJpbmVUYWdnZWQoW3RoaXMucG9zaXRpb25hbCwgdGhpcy5uYW1lZF0pO1xuICAgIH1cbiAgICBnZXQgbGVuZ3RoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wb3NpdGlvbmFsLmxlbmd0aCArIHRoaXMubmFtZWQubGVuZ3RoO1xuICAgIH1cbiAgICBhdChwb3MpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9zaXRpb25hbC5hdChwb3MpO1xuICAgIH1cbiAgICBnZXQobmFtZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5uYW1lZC5nZXQobmFtZSk7XG4gICAgfVxuICAgIGNhcHR1cmUoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0YWc6IHRoaXMudGFnLFxuICAgICAgICAgICAgbGVuZ3RoOiB0aGlzLmxlbmd0aCxcbiAgICAgICAgICAgIHBvc2l0aW9uYWw6IHRoaXMucG9zaXRpb25hbC5jYXB0dXJlKCksXG4gICAgICAgICAgICBuYW1lZDogdGhpcy5uYW1lZC5jYXB0dXJlKClcbiAgICAgICAgfTtcbiAgICB9XG4gICAgY2xlYXIoKSB7XG4gICAgICAgIGxldCB7IHN0YWNrLCBsZW5ndGggfSA9IHRoaXM7XG4gICAgICAgIGxldCBwb3BzID0gbGVuZ3RoICsgMTtcbiAgICAgICAgd2hpbGUgKC0tcG9wcyA+PSAwKSB7XG4gICAgICAgICAgICBzdGFjay5wb3AoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmNsYXNzIFBvc2l0aW9uYWxBcmd1bWVudHMge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmxlbmd0aCA9IDA7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBudWxsO1xuICAgICAgICB0aGlzLnN0YXJ0ID0gMDtcbiAgICAgICAgdGhpcy5fdGFnID0gbnVsbDtcbiAgICAgICAgdGhpcy5fcmVmZXJlbmNlcyA9IG51bGw7XG4gICAgfVxuICAgIHNldHVwKHN0YWNrLCBzdGFydCwgbGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICAgICAgdGhpcy5zdGFydCA9IHN0YXJ0O1xuICAgICAgICB0aGlzLmxlbmd0aCA9IGxlbmd0aDtcbiAgICAgICAgdGhpcy5fdGFnID0gbnVsbDtcbiAgICAgICAgdGhpcy5fcmVmZXJlbmNlcyA9IG51bGw7XG4gICAgfVxuICAgIGdldCB0YWcoKSB7XG4gICAgICAgIGxldCB0YWcgPSB0aGlzLl90YWc7XG4gICAgICAgIGlmICghdGFnKSB7XG4gICAgICAgICAgICB0YWcgPSB0aGlzLl90YWcgPSBjb21iaW5lVGFnZ2VkKHRoaXMucmVmZXJlbmNlcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRhZztcbiAgICB9XG4gICAgYXQocG9zaXRpb24pIHtcbiAgICAgICAgbGV0IHsgc3RhcnQsIGxlbmd0aCB9ID0gdGhpcztcbiAgICAgICAgaWYgKHBvc2l0aW9uIDwgMCB8fCBwb3NpdGlvbiA+PSBsZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBVTkRFRklORURfUkVGRVJFTkNFO1xuICAgICAgICB9XG4gICAgICAgIC8vIHN0YWNrOiBwb3MxLCBwb3MyLCBwb3MzLCBuYW1lZDEsIG5hbWVkMlxuICAgICAgICAvLyBzdGFydDogNCAodG9wIC0gNClcbiAgICAgICAgLy9cbiAgICAgICAgLy8gYXQoMCkgPT09IHBvczEgPT09IHRvcCAtIHN0YXJ0XG4gICAgICAgIC8vIGF0KDEpID09PSBwb3MyID09PSB0b3AgLSAoc3RhcnQgLSAxKVxuICAgICAgICAvLyBhdCgyKSA9PT0gcG9zMyA9PT0gdG9wIC0gKHN0YXJ0IC0gMilcbiAgICAgICAgbGV0IGZyb21Ub3AgPSBzdGFydCAtIHBvc2l0aW9uIC0gMTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2suZnJvbVRvcChmcm9tVG9wKTtcbiAgICB9XG4gICAgY2FwdHVyZSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHModGhpcy50YWcsIHRoaXMucmVmZXJlbmNlcyk7XG4gICAgfVxuICAgIGdldCByZWZlcmVuY2VzKCkge1xuICAgICAgICBsZXQgcmVmZXJlbmNlcyA9IHRoaXMuX3JlZmVyZW5jZXM7XG4gICAgICAgIGlmICghcmVmZXJlbmNlcykge1xuICAgICAgICAgICAgbGV0IHsgbGVuZ3RoIH0gPSB0aGlzO1xuICAgICAgICAgICAgcmVmZXJlbmNlcyA9IHRoaXMuX3JlZmVyZW5jZXMgPSBuZXcgQXJyYXkobGVuZ3RoKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VzW2ldID0gdGhpcy5hdChpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVmZXJlbmNlcztcbiAgICB9XG59XG5jbGFzcyBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHMge1xuICAgIGNvbnN0cnVjdG9yKHRhZywgcmVmZXJlbmNlcywgbGVuZ3RoID0gcmVmZXJlbmNlcy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy50YWcgPSB0YWc7XG4gICAgICAgIHRoaXMucmVmZXJlbmNlcyA9IHJlZmVyZW5jZXM7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gbGVuZ3RoO1xuICAgIH1cbiAgICBhdChwb3NpdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2VzW3Bvc2l0aW9uXTtcbiAgICB9XG4gICAgdmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZXMubWFwKHRoaXMudmFsdWVPZik7XG4gICAgfVxuICAgIGdldChuYW1lKSB7XG4gICAgICAgIGxldCB7IHJlZmVyZW5jZXMsIGxlbmd0aCB9ID0gdGhpcztcbiAgICAgICAgaWYgKG5hbWUgPT09ICdsZW5ndGgnKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJpbWl0aXZlUmVmZXJlbmNlLmNyZWF0ZShsZW5ndGgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IGlkeCA9IHBhcnNlSW50KG5hbWUsIDEwKTtcbiAgICAgICAgICAgIGlmIChpZHggPCAwIHx8IGlkeCA+PSBsZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gVU5ERUZJTkVEX1JFRkVSRU5DRTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlZmVyZW5jZXNbaWR4XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICB2YWx1ZU9mKHJlZmVyZW5jZSkge1xuICAgICAgICByZXR1cm4gcmVmZXJlbmNlLnZhbHVlKCk7XG4gICAgfVxufVxuY2xhc3MgTmFtZWRBcmd1bWVudHMge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmxlbmd0aCA9IDA7XG4gICAgICAgIHRoaXMuX3RhZyA9IG51bGw7XG4gICAgICAgIHRoaXMuX3JlZmVyZW5jZXMgPSBudWxsO1xuICAgICAgICB0aGlzLl9uYW1lcyA9IG51bGw7XG4gICAgICAgIHRoaXMuX3JlYWxOYW1lcyA9IEVNUFRZX0FSUkFZO1xuICAgIH1cbiAgICBzZXR1cChzdGFjaywgbGVuZ3RoLCBuYW1lcywgc3ludGhldGljKSB7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICAgICAgdGhpcy5sZW5ndGggPSBsZW5ndGg7XG4gICAgICAgIHRoaXMuX3RhZyA9IG51bGw7XG4gICAgICAgIHRoaXMuX3JlZmVyZW5jZXMgPSBudWxsO1xuICAgICAgICBpZiAoc3ludGhldGljKSB7XG4gICAgICAgICAgICB0aGlzLl9uYW1lcyA9IG5hbWVzO1xuICAgICAgICAgICAgdGhpcy5fcmVhbE5hbWVzID0gRU1QVFlfQVJSQVk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9uYW1lcyA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLl9yZWFsTmFtZXMgPSBuYW1lcztcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgdGFnKCkge1xuICAgICAgICByZXR1cm4gY29tYmluZVRhZ2dlZCh0aGlzLnJlZmVyZW5jZXMpO1xuICAgIH1cbiAgICBnZXQgbmFtZXMoKSB7XG4gICAgICAgIGxldCBuYW1lcyA9IHRoaXMuX25hbWVzO1xuICAgICAgICBpZiAoIW5hbWVzKSB7XG4gICAgICAgICAgICBuYW1lcyA9IHRoaXMuX25hbWVzID0gdGhpcy5fcmVhbE5hbWVzLm1hcCh0aGlzLnNsaWNlTmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5hbWVzO1xuICAgIH1cbiAgICBoYXMobmFtZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5uYW1lcy5pbmRleE9mKG5hbWUpICE9PSAtMTtcbiAgICB9XG4gICAgZ2V0KG5hbWUpIHtcbiAgICAgICAgbGV0IHsgbmFtZXMsIGxlbmd0aCB9ID0gdGhpcztcbiAgICAgICAgbGV0IGlkeCA9IG5hbWVzLmluZGV4T2YobmFtZSk7XG4gICAgICAgIGlmIChpZHggPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gVU5ERUZJTkVEX1JFRkVSRU5DRTtcbiAgICAgICAgfVxuICAgICAgICAvLyBzdGFjazogcG9zMSwgcG9zMiwgcG9zMywgbmFtZWQxLCBuYW1lZDJcbiAgICAgICAgLy8gc3RhcnQ6IDQgKHRvcCAtIDQpXG4gICAgICAgIC8vIG5hbWVkRGljdDogeyBuYW1lZDE6IDEsIG5hbWVkMjogMCB9O1xuICAgICAgICAvL1xuICAgICAgICAvLyBnZXQoJ25hbWVkMScpID09PSBuYW1lZDEgPT09IHRvcCAtIChzdGFydCAtIDEpXG4gICAgICAgIC8vIGdldCgnbmFtZWQyJykgPT09IG5hbWVkMiA9PT0gdG9wIC0gc3RhcnRcbiAgICAgICAgbGV0IGZyb21Ub3AgPSBsZW5ndGggLSBpZHg7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrLmZyb21Ub3AoZnJvbVRvcCk7XG4gICAgfVxuICAgIGNhcHR1cmUoKSB7XG4gICAgICAgIHJldHVybiBuZXcgQ2FwdHVyZWROYW1lZEFyZ3VtZW50cyh0aGlzLnRhZywgdGhpcy5uYW1lcywgdGhpcy5yZWZlcmVuY2VzKTtcbiAgICB9XG4gICAgZ2V0IHJlZmVyZW5jZXMoKSB7XG4gICAgICAgIGxldCByZWZlcmVuY2VzID0gdGhpcy5fcmVmZXJlbmNlcztcbiAgICAgICAgaWYgKCFyZWZlcmVuY2VzKSB7XG4gICAgICAgICAgICBsZXQgeyBuYW1lcywgbGVuZ3RoIH0gPSB0aGlzO1xuICAgICAgICAgICAgcmVmZXJlbmNlcyA9IHRoaXMuX3JlZmVyZW5jZXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VzW2ldID0gdGhpcy5nZXQobmFtZXNbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZWZlcmVuY2VzO1xuICAgIH1cbiAgICBzbGljZU5hbWUobmFtZSkge1xuICAgICAgICByZXR1cm4gbmFtZS5zbGljZSgxKTtcbiAgICB9XG59XG5jbGFzcyBDYXB0dXJlZE5hbWVkQXJndW1lbnRzIHtcbiAgICBjb25zdHJ1Y3Rvcih0YWcsIG5hbWVzLCByZWZlcmVuY2VzKSB7XG4gICAgICAgIHRoaXMudGFnID0gdGFnO1xuICAgICAgICB0aGlzLm5hbWVzID0gbmFtZXM7XG4gICAgICAgIHRoaXMucmVmZXJlbmNlcyA9IHJlZmVyZW5jZXM7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gbmFtZXMubGVuZ3RoO1xuICAgICAgICB0aGlzLl9tYXAgPSBudWxsO1xuICAgIH1cbiAgICBnZXQgbWFwKCkge1xuICAgICAgICBsZXQgbWFwID0gdGhpcy5fbWFwO1xuICAgICAgICBpZiAoIW1hcCkge1xuICAgICAgICAgICAgbGV0IHsgbmFtZXMsIHJlZmVyZW5jZXMgfSA9IHRoaXM7XG4gICAgICAgICAgICBtYXAgPSB0aGlzLl9tYXAgPSBkaWN0KCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5hbWUgPSBuYW1lc1tpXTtcbiAgICAgICAgICAgICAgICBtYXBbbmFtZV0gPSByZWZlcmVuY2VzW2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXA7XG4gICAgfVxuICAgIGhhcyhuYW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hbWVzLmluZGV4T2YobmFtZSkgIT09IC0xO1xuICAgIH1cbiAgICBnZXQobmFtZSkge1xuICAgICAgICBsZXQgeyBuYW1lcywgcmVmZXJlbmNlcyB9ID0gdGhpcztcbiAgICAgICAgbGV0IGlkeCA9IG5hbWVzLmluZGV4T2YobmFtZSk7XG4gICAgICAgIGlmIChpZHggPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gVU5ERUZJTkVEX1JFRkVSRU5DRTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiByZWZlcmVuY2VzW2lkeF07XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFsdWUoKSB7XG4gICAgICAgIGxldCB7IG5hbWVzLCByZWZlcmVuY2VzIH0gPSB0aGlzO1xuICAgICAgICBsZXQgb3V0ID0gZGljdCgpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVzW2ldO1xuICAgICAgICAgICAgb3V0W25hbWVdID0gcmVmZXJlbmNlc1tpXS52YWx1ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgbmV3IEFyZ3VtZW50cygpOyJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi92bS9hcmd1bWVudHMuanMiXSwibmFtZXMiOlsiQXJndW1lbnRzIiwiY29uc3RydWN0b3IiLCJzdGFjayIsInBvc2l0aW9uYWwiLCJQb3NpdGlvbmFsQXJndW1lbnRzIiwibmFtZWQiLCJOYW1lZEFyZ3VtZW50cyIsImVtcHR5Iiwic2V0dXAiLCJwb3NpdGlvbmFsQ291bnQiLCJzeW50aGV0aWMiLCJuYW1lcyIsImZyb21Ub3AiLCJuYW1lZENvdW50IiwibGVuZ3RoIiwic3RhcnQiLCJ0YWciLCJhdCIsInBvcyIsImdldCIsIm5hbWUiLCJjYXB0dXJlIiwiY2xlYXIiLCJwb3BzIiwicG9wIiwiX3RhZyIsIl9yZWZlcmVuY2VzIiwicmVmZXJlbmNlcyIsInBvc2l0aW9uIiwiQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzIiwiQXJyYXkiLCJpIiwidmFsdWUiLCJtYXAiLCJ2YWx1ZU9mIiwiY3JlYXRlIiwiaWR4IiwicGFyc2VJbnQiLCJyZWZlcmVuY2UiLCJfbmFtZXMiLCJfcmVhbE5hbWVzIiwic2xpY2VOYW1lIiwiaGFzIiwiaW5kZXhPZiIsIkNhcHR1cmVkTmFtZWRBcmd1bWVudHMiLCJzbGljZSIsIl9tYXAiLCJmb3JFYWNoIiwib3V0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ08sTUFBTUEsU0FBTixDQUFnQjtBQUNuQkMsa0JBQWM7QUFDVixhQUFLQyxLQUFMLEdBQWEsSUFBYjtBQUNBLGFBQUtDLFVBQUwsR0FBa0IsSUFBSUMsbUJBQUosRUFBbEI7QUFDQSxhQUFLQyxLQUFMLEdBQWEsSUFBSUMsY0FBSixFQUFiO0FBQ0g7QUFDREMsWUFBUTtBQUNKLGFBQUtDLEtBQUwsQ0FBVyxJQUFYLEVBQWlCLENBQWpCLEVBQW9CLElBQXBCO0FBQ0EsZUFBTyxJQUFQO0FBQ0g7QUFDREEsVUFBTU4sS0FBTixFQUFhTyxlQUFiLEVBQThCQyxTQUE5QixFQUF5QztBQUNyQyxhQUFLUixLQUFMLEdBQWFBLEtBQWI7QUFD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QixHQUFQO0FBQ0g7QUFsQ3dCO2tCQW9DZCxJQUFJaEQsU0FBSixFIiwiZmlsZSI6ImxpYi92bS9hcmd1bWVudHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkaWN0LCBFTVBUWV9BUlJBWSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgY29tYmluZVRhZ2dlZCB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBQcmltaXRpdmVSZWZlcmVuY2UsIFVOREVGSU5FRF9SRUZFUkVOQ0UgfSBmcm9tICcuLi9yZWZlcmVuY2VzJztcbmV4cG9ydCBjbGFzcyBBcmd1bWVudHMge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnN0YWNrID0gbnVsbDtcbiAgICAgICAgdGhpcy5wb3NpdGlvbmFsID0gbmV3IFBvc2l0aW9uYWxBcmd1bWVudHMoKTtcbiAgICAgICAgdGhpcy5uYW1lZCA9IG5ldyBOYW1lZEFyZ3VtZW50cygpO1xuICAgIH1cbiAgICBlbXB0eSgpIHtcbiAgICAgICAgdGhpcy5zZXR1cChudWxsLCAwLCB0cnVlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIHNldHVwKHN0YWNrLCBwb3NpdGlvbmFsQ291bnQsIHN5bnRoZXRpYykge1xuICAgICAgICB0aGlzLnN0YWNrID0gc3RhY2s7XG4gICAgICAgIGxldCBuYW1lcyA9IHN0YWNrLmZyb21Ub3AoMCk7XG4gICAgICAgIGxldCBuYW1lZENvdW50ID0gbmFtZXMubGVuZ3RoO1xuICAgICAgICBsZXQgc3RhcnQgPSBwb3NpdGlvbmFsQ291bnQgKyBuYW1lZENvdW50ICsgMTtcbiAgICAgICAgbGV0IHBvc2l0aW9uYWwgPSB0aGlzLnBvc2l0aW9uYWw7XG4gICAgICAgIHBvc2l0aW9uYWwuc2V0dXAoc3RhY2ssIHN0YXJ0LCBwb3NpdGlvbmFsQ291bnQpO1xuICAgICAgICBsZXQgbmFtZWQgPSB0aGlzLm5hbWVkO1xuICAgICAgICBuYW1lZC5zZXR1cChzdGFjaywgbmFtZWRDb3VudCwgbmFtZXMsIHN5bnRoZXRpYyk7XG4gICAgfVxuICAgIGdldCB0YWcoKSB7XG4gICAgICAgIHJldHVybiBjb21iaW5lVGFnZ2VkKFt0aGlzLnBvc2l0aW9uYWwsIHRoaXMubmFtZWRdKTtcbiAgICB9XG4gICAgZ2V0IGxlbmd0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9zaXRpb25hbC5sZW5ndGggKyB0aGlzLm5hbWVkLmxlbmd0aDtcbiAgICB9XG4gICAgYXQocG9zKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvc2l0aW9uYWwuYXQocG9zKTtcbiAgICB9XG4gICAgZ2V0KG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmFtZWQuZ2V0KG5hbWUpO1xuICAgIH1cbiAgICBjYXB0dXJlKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGFnOiB0aGlzLnRhZyxcbiAgICAgICAgICAgIGxlbmd0aDogdGhpcy5sZW5ndGgsXG4gICAgICAgICAgICBwb3NpdGlvbmFsOiB0aGlzLnBvc2l0aW9uYWwuY2FwdHVyZSgpLFxuICAgICAgICAgICAgbmFtZWQ6IHRoaXMubmFtZWQuY2FwdHVyZSgpXG4gICAgICAgIH07XG4gICAgfVxuICAgIGNsZWFyKCkge1xuICAgICAgICBsZXQgeyBzdGFjaywgbGVuZ3RoIH0gPSB0aGlzO1xuICAgICAgICBsZXQgcG9wcyA9IGxlbmd0aCArIDE7XG4gICAgICAgIHdoaWxlICgtLXBvcHMgPj0gMCkge1xuICAgICAgICAgICAgc3RhY2sucG9wKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5jbGFzcyBQb3NpdGlvbmFsQXJndW1lbnRzIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5sZW5ndGggPSAwO1xuICAgICAgICB0aGlzLnN0YWNrID0gbnVsbDtcbiAgICAgICAgdGhpcy5zdGFydCA9IDA7XG4gICAgICAgIHRoaXMuX3RhZyA9IG51bGw7XG4gICAgICAgIHRoaXMuX3JlZmVyZW5jZXMgPSBudWxsO1xuICAgIH1cbiAgICBzZXR1cChzdGFjaywgc3RhcnQsIGxlbmd0aCkge1xuICAgICAgICB0aGlzLnN0YWNrID0gc3RhY2s7XG4gICAgICAgIHRoaXMuc3RhcnQgPSBzdGFydDtcbiAgICAgICAgdGhpcy5sZW5ndGggPSBsZW5ndGg7XG4gICAgICAgIHRoaXMuX3RhZyA9IG51bGw7XG4gICAgICAgIHRoaXMuX3JlZmVyZW5jZXMgPSBudWxsO1xuICAgIH1cbiAgICBnZXQgdGFnKCkge1xuICAgICAgICBsZXQgdGFnID0gdGhpcy5fdGFnO1xuICAgICAgICBpZiAoIXRhZykge1xuICAgICAgICAgICAgdGFnID0gdGhpcy5fdGFnID0gY29tYmluZVRhZ2dlZCh0aGlzLnJlZmVyZW5jZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0YWc7XG4gICAgfVxuICAgIGF0KHBvc2l0aW9uKSB7XG4gICAgICAgIGxldCB7IHN0YXJ0LCBsZW5ndGggfSA9IHRoaXM7XG4gICAgICAgIGlmIChwb3NpdGlvbiA8IDAgfHwgcG9zaXRpb24gPj0gbGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gVU5ERUZJTkVEX1JFRkVSRU5DRTtcbiAgICAgICAgfVxuICAgICAgICAvLyBzdGFjazogcG9zMSwgcG9zMiwgcG9zMywgbmFtZWQxLCBuYW1lZDJcbiAgICAgICAgLy8gc3RhcnQ6IDQgKHRvcCAtIDQpXG4gICAgICAgIC8vXG4gICAgICAgIC8vIGF0KDApID09PSBwb3MxID09PSB0b3AgLSBzdGFydFxuICAgICAgICAvLyBhdCgxKSA9PT0gcG9zMiA9PT0gdG9wIC0gKHN0YXJ0IC0gMSlcbiAgICAgICAgLy8gYXQoMikgPT09IHBvczMgPT09IHRvcCAtIChzdGFydCAtIDIpXG4gICAgICAgIGxldCBmcm9tVG9wID0gc3RhcnQgLSBwb3NpdGlvbiAtIDE7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrLmZyb21Ub3AoZnJvbVRvcCk7XG4gICAgfVxuICAgIGNhcHR1cmUoKSB7XG4gICAgICAgIHJldHVybiBuZXcgQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzKHRoaXMudGFnLCB0aGlzLnJlZmVyZW5jZXMpO1xuICAgIH1cbiAgICBnZXQgcmVmZXJlbmNlcygpIHtcbiAgICAgICAgbGV0IHJlZmVyZW5jZXMgPSB0aGlzLl9yZWZlcmVuY2VzO1xuICAgICAgICBpZiAoIXJlZmVyZW5jZXMpIHtcbiAgICAgICAgICAgIGxldCB7IGxlbmd0aCB9ID0gdGhpcztcbiAgICAgICAgICAgIHJlZmVyZW5jZXMgPSB0aGlzLl9yZWZlcmVuY2VzID0gbmV3IEFycmF5KGxlbmd0aCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlc1tpXSA9IHRoaXMuYXQoaSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlZmVyZW5jZXM7XG4gICAgfVxufVxuY2xhc3MgQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzIHtcbiAgICBjb25zdHJ1Y3Rvcih0YWcsIHJlZmVyZW5jZXMsIGxlbmd0aCA9IHJlZmVyZW5jZXMubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMudGFnID0gdGFnO1xuICAgICAgICB0aGlzLnJlZmVyZW5jZXMgPSByZWZlcmVuY2VzO1xuICAgICAgICB0aGlzLmxlbmd0aCA9IGxlbmd0aDtcbiAgICB9XG4gICAgYXQocG9zaXRpb24pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlc1twb3NpdGlvbl07XG4gICAgfVxuICAgIHZhbHVlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2VzLm1hcCh0aGlzLnZhbHVlT2YpO1xuICAgIH1cbiAgICBnZXQobmFtZSkge1xuICAgICAgICBsZXQgeyByZWZlcmVuY2VzLCBsZW5ndGggfSA9IHRoaXM7XG4gICAgICAgIGlmIChuYW1lID09PSAnbGVuZ3RoJykge1xuICAgICAgICAgICAgcmV0dXJuIFByaW1pdGl2ZVJlZmVyZW5jZS5jcmVhdGUobGVuZ3RoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBpZHggPSBwYXJzZUludChuYW1lLCAxMCk7XG4gICAgICAgICAgICBpZiAoaWR4IDwgMCB8fCBpZHggPj0gbGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFVOREVGSU5FRF9SRUZFUkVOQ0U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiByZWZlcmVuY2VzW2lkeF07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFsdWVPZihyZWZlcmVuY2UpIHtcbiAgICAgICAgcmV0dXJuIHJlZmVyZW5jZS52YWx1ZSgpO1xuICAgIH1cbn1cbmNsYXNzIE5hbWVkQXJndW1lbnRzIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5sZW5ndGggPSAwO1xuICAgICAgICB0aGlzLl90YWcgPSBudWxsO1xuICAgICAgICB0aGlzLl9yZWZlcmVuY2VzID0gbnVsbDtcbiAgICAgICAgdGhpcy5fbmFtZXMgPSBudWxsO1xuICAgICAgICB0aGlzLl9yZWFsTmFtZXMgPSBFTVBUWV9BUlJBWTtcbiAgICB9XG4gICAgc2V0dXAoc3RhY2ssIGxlbmd0aCwgbmFtZXMsIHN5bnRoZXRpYykge1xuICAgICAgICB0aGlzLnN0YWNrID0gc3RhY2s7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gbGVuZ3RoO1xuICAgICAgICB0aGlzLl90YWcgPSBudWxsO1xuICAgICAgICB0aGlzLl9yZWZlcmVuY2VzID0gbnVsbDtcbiAgICAgICAgaWYgKHN5bnRoZXRpYykge1xuICAgICAgICAgICAgdGhpcy5fbmFtZXMgPSBuYW1lcztcbiAgICAgICAgICAgIHRoaXMuX3JlYWxOYW1lcyA9IEVNUFRZX0FSUkFZO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fbmFtZXMgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5fcmVhbE5hbWVzID0gbmFtZXM7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IHRhZygpIHtcbiAgICAgICAgcmV0dXJuIGNvbWJpbmVUYWdnZWQodGhpcy5yZWZlcmVuY2VzKTtcbiAgICB9XG4gICAgZ2V0IG5hbWVzKCkge1xuICAgICAgICBsZXQgbmFtZXMgPSB0aGlzLl9uYW1lcztcbiAgICAgICAgaWYgKCFuYW1lcykge1xuICAgICAgICAgICAgbmFtZXMgPSB0aGlzLl9uYW1lcyA9IHRoaXMuX3JlYWxOYW1lcy5tYXAodGhpcy5zbGljZU5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuYW1lcztcbiAgICB9XG4gICAgaGFzKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmFtZXMuaW5kZXhPZihuYW1lKSAhPT0gLTE7XG4gICAgfVxuICAgIGdldChuYW1lKSB7XG4gICAgICAgIGxldCB7IG5hbWVzLCBsZW5ndGggfSA9IHRoaXM7XG4gICAgICAgIGxldCBpZHggPSBuYW1lcy5pbmRleE9mKG5hbWUpO1xuICAgICAgICBpZiAoaWR4ID09PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIFVOREVGSU5FRF9SRUZFUkVOQ0U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gc3RhY2s6IHBvczEsIHBvczIsIHBvczMsIG5hbWVkMSwgbmFtZWQyXG4gICAgICAgIC8vIHN0YXJ0OiA0ICh0b3AgLSA0KVxuICAgICAgICAvLyBuYW1lZERpY3Q6IHsgbmFtZWQxOiAxLCBuYW1lZDI6IDAgfTtcbiAgICAgICAgLy9cbiAgICAgICAgLy8gZ2V0KCduYW1lZDEnKSA9PT0gbmFtZWQxID09PSB0b3AgLSAoc3RhcnQgLSAxKVxuICAgICAgICAvLyBnZXQoJ25hbWVkMicpID09PSBuYW1lZDIgPT09IHRvcCAtIHN0YXJ0XG4gICAgICAgIGxldCBmcm9tVG9wID0gbGVuZ3RoIC0gaWR4O1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFjay5mcm9tVG9wKGZyb21Ub3ApO1xuICAgIH1cbiAgICBjYXB0dXJlKCkge1xuICAgICAgICByZXR1cm4gbmV3IENhcHR1cmVkTmFtZWRBcmd1bWVudHModGhpcy50YWcsIHRoaXMubmFtZXMsIHRoaXMucmVmZXJlbmNlcyk7XG4gICAgfVxuICAgIGdldCByZWZlcmVuY2VzKCkge1xuICAgICAgICBsZXQgcmVmZXJlbmNlcyA9IHRoaXMuX3JlZmVyZW5jZXM7XG4gICAgICAgIGlmICghcmVmZXJlbmNlcykge1xuICAgICAgICAgICAgbGV0IHsgbmFtZXMsIGxlbmd0aCB9ID0gdGhpcztcbiAgICAgICAgICAgIHJlZmVyZW5jZXMgPSB0aGlzLl9yZWZlcmVuY2VzID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlc1tpXSA9IHRoaXMuZ2V0KG5hbWVzW2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVmZXJlbmNlcztcbiAgICB9XG4gICAgc2xpY2VOYW1lKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIG5hbWUuc2xpY2UoMSk7XG4gICAgfVxufVxuY2xhc3MgQ2FwdHVyZWROYW1lZEFyZ3VtZW50cyB7XG4gICAgY29uc3RydWN0b3IodGFnLCBuYW1lcywgcmVmZXJlbmNlcykge1xuICAgICAgICB0aGlzLnRhZyA9IHRhZztcbiAgICAgICAgdGhpcy5uYW1lcyA9IG5hbWVzO1xuICAgICAgICB0aGlzLnJlZmVyZW5jZXMgPSByZWZlcmVuY2VzO1xuICAgICAgICB0aGlzLmxlbmd0aCA9IG5hbWVzLmxlbmd0aDtcbiAgICAgICAgdGhpcy5fbWFwID0gbnVsbDtcbiAgICB9XG4gICAgZ2V0IG1hcCgpIHtcbiAgICAgICAgbGV0IG1hcCA9IHRoaXMuX21hcDtcbiAgICAgICAgaWYgKCFtYXApIHtcbiAgICAgICAgICAgIGxldCB7IG5hbWVzLCByZWZlcmVuY2VzIH0gPSB0aGlzO1xuICAgICAgICAgICAgbWFwID0gdGhpcy5fbWFwID0gZGljdCgpO1xuICAgICAgICAgICAgbmFtZXMuZm9yRWFjaCgobmFtZSwgaSkgPT4gbWFwW25hbWVdID0gcmVmZXJlbmNlc1tpXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1hcDtcbiAgICB9XG4gICAgaGFzKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmFtZXMuaW5kZXhPZihuYW1lKSAhPT0gLTE7XG4gICAgfVxuICAgIGdldChuYW1lKSB7XG4gICAgICAgIGxldCB7IG5hbWVzLCByZWZlcmVuY2VzIH0gPSB0aGlzO1xuICAgICAgICBsZXQgaWR4ID0gbmFtZXMuaW5kZXhPZihuYW1lKTtcbiAgICAgICAgaWYgKGlkeCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiBVTkRFRklORURfUkVGRVJFTkNFO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHJlZmVyZW5jZXNbaWR4XTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB2YWx1ZSgpIHtcbiAgICAgICAgbGV0IHsgbmFtZXMsIHJlZmVyZW5jZXMgfSA9IHRoaXM7XG4gICAgICAgIGxldCBvdXQgPSBkaWN0KCk7XG4gICAgICAgIG5hbWVzLmZvckVhY2goKG5hbWUsIGkpID0+IG91dFtuYW1lXSA9IHJlZmVyZW5jZXNbaV0udmFsdWUoKSk7XG4gICAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgbmV3IEFyZ3VtZW50cygpOyJdfQ==

@@ -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.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.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;

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

var _scanner = require('./lib/scanner');
Object.defineProperty(exports, 'ClientSide', {
enumerable: true,
get: function () {
return _scanner.ClientSide;
}
});
Object.defineProperty(exports, 'CompilableTemplate', {
enumerable: true,
get: function () {
return _scanner.CompilableTemplate;
}
});
Object.defineProperty(exports, 'compileStatement', {
enumerable: true,
get: function () {
return _scanner.compileStatement;
}
});
var _vm = require('./lib/vm');

@@ -330,2 +351,2 @@

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

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

function castToString(value) {
if (typeof value.toString !== 'function') {
if (typeof value['toString'] !== 'function') {
return '';

@@ -72,2 +72,2 @@ }

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9leHByZXNzaW9ucy9jb25jYXQuanMiXSwibmFtZXMiOlsiQ2FjaGVkUmVmZXJlbmNlIiwiY29tYmluZVRhZ2dlZCIsIkNvbmNhdFJlZmVyZW5jZSIsInBhcnRzIiwidGFnIiwiY29tcHV0ZSIsIkFycmF5IiwiaSIsImxlbmd0aCIsInZhbHVlIiwidW5kZWZpbmVkIiwiY2FzdFRvU3RyaW5nIiwiam9pbiIsInRvU3RyaW5nIiwiU3RyaW5nIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsQUFBUyxBQUFULEFBQTBCLEFBQTFCLEFBQStDLEFBQS9DLEFBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFBYSxBQUFiLHdFQUFBOytCQUNJOzs2QkFBWSxBQUFaLE9BQW1COzhCQUFBOztxREFDZixzQkFEZSxBQUVmOztjQUFLLEFBQUwsUUFBYSxBQUFiLEFBQ0E7Y0FBSyxBQUFMLE1BQVcsOEJBQWMsQUFBZCxBQUFYLEFBSGU7ZUFJbEI7QUFMTDs7OEJBTUksQUFOSiw2QkFNYyxBQUNOO1lBQUksUUFBUSxJQUFJLEFBQUosQUFBWixBQUNBO2FBQUssSUFBSSxJQUFJLEFBQWIsR0FBZ0IsSUFBSSxLQUFLLEFBQUwsTUFBVyxBQUEvQixRQUF1QyxBQUF2QyxLQUE0QyxBQUN4QztnQkFBSSxRQUFRLEtBQUssQUFBTCxNQUFXLEFBQVgsR0FBYyxBQUFkLEFBQVosQUFDQTtnQkFBSSxVQUFVLEFBQVYsUUFBa0IsVUFBVSxBQUFoQyxXQUEyQyxBQUN2QztzQkFBTSxBQUFOLEtBQVcsYUFBYSxBQUFiLEFBQVgsQUFDSDtBQUNKO0FBQ0Q7WUFBSSxNQUFNLEFBQU4sU0FBZSxBQUFuQixHQUFzQixBQUNsQjttQkFBTyxNQUFNLEFBQU4sS0FBVyxBQUFYLEFBQVAsQUFDSDtBQUNEO2VBQU8sQUFBUCxBQUNIO0FBbEJMOztXQUFBO0FBQXFDLEFBQXJDO0FBb0JBLFNBQVMsQUFBVCxhQUFzQixBQUF0QixPQUE2QixBQUN6QjtRQUFJLE9BQU8sTUFBTSxBQUFiLGFBQTBCLEFBQTlCLFlBQTBDLEFBQ3RDO2VBQU8sQUFBUCxBQUNIO0FBQ0Q7V0FBTyxPQUFPLEFBQVAsQUFBUCxBQUNIIiwiZmlsZSI6ImxpYi9jb21waWxlZC9leHByZXNzaW9ucy9jb25jYXQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDYWNoZWRSZWZlcmVuY2UsIGNvbWJpbmVUYWdnZWQgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuZXhwb3J0IGNsYXNzIENvbmNhdFJlZmVyZW5jZSBleHRlbmRzIENhY2hlZFJlZmVyZW5jZSB7XG4gICAgY29uc3RydWN0b3IocGFydHMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5wYXJ0cyA9IHBhcnRzO1xuICAgICAgICB0aGlzLnRhZyA9IGNvbWJpbmVUYWdnZWQocGFydHMpO1xuICAgIH1cbiAgICBjb21wdXRlKCkge1xuICAgICAgICBsZXQgcGFydHMgPSBuZXcgQXJyYXkoKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLnBhcnRzW2ldLnZhbHVlKCk7XG4gICAgICAgICAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHBhcnRzW2ldID0gY2FzdFRvU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocGFydHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnRzLmpvaW4oJycpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGNhc3RUb1N0cmluZyh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUudG9TdHJpbmcgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn0iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9leHByZXNzaW9ucy9jb25jYXQuanMiXSwibmFtZXMiOlsiQ2FjaGVkUmVmZXJlbmNlIiwiY29tYmluZVRhZ2dlZCIsIkNvbmNhdFJlZmVyZW5jZSIsInBhcnRzIiwidGFnIiwiY29tcHV0ZSIsIkFycmF5IiwiaSIsImxlbmd0aCIsInZhbHVlIiwidW5kZWZpbmVkIiwiY2FzdFRvU3RyaW5nIiwiam9pbiIsIlN0cmluZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLEFBQVMsQUFBVCxBQUEwQixBQUExQixBQUErQyxBQUEvQyxBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQWEsQUFBYix3RUFBQTsrQkFDSTs7NkJBQVksQUFBWixPQUFtQjs4QkFBQTs7cURBQ2Ysc0JBRGUsQUFFZjs7Y0FBSyxBQUFMLFFBQWEsQUFBYixBQUNBO2NBQUssQUFBTCxNQUFXLDhCQUFjLEFBQWQsQUFBWCxBQUhlO2VBSWxCO0FBTEw7OzhCQU1JLEFBTkosNkJBTWMsQUFDTjtZQUFJLFFBQVEsSUFBSSxBQUFKLEFBQVosQUFDQTthQUFLLElBQUksSUFBSSxBQUFiLEdBQWdCLElBQUksS0FBSyxBQUFMLE1BQVcsQUFBL0IsUUFBdUMsQUFBdkMsS0FBNEMsQUFDeEM7Z0JBQUksUUFBUSxLQUFLLEFBQUwsTUFBVyxBQUFYLEdBQWMsQUFBZCxBQUFaLEFBQ0E7Z0JBQUksVUFBVSxBQUFWLFFBQWtCLFVBQVUsQUFBaEMsV0FBMkMsQUFDdkM7c0JBQU0sQUFBTixLQUFXLGFBQWEsQUFBYixBQUFYLEFBQ0g7QUFDSjtBQUNEO1lBQUksTUFBTSxBQUFOLFNBQWUsQUFBbkIsR0FBc0IsQUFDbEI7bUJBQU8sTUFBTSxBQUFOLEtBQVcsQUFBWCxBQUFQLEFBQ0g7QUFDRDtlQUFPLEFBQVAsQUFDSDtBQWxCTDs7V0FBQTtBQUFxQyxBQUFyQztBQW9CQSxTQUFTLEFBQVQsYUFBc0IsQUFBdEIsT0FBNkIsQUFDekI7UUFBSSxPQUFPLE1BQU0sQUFBTixBQUFQLGdCQUE2QixBQUFqQyxZQUE2QyxBQUN6QztlQUFPLEFBQVAsQUFDSDtBQUNEO1dBQU8sT0FBTyxBQUFQLEFBQVAsQUFDSCIsImZpbGUiOiJsaWIvY29tcGlsZWQvZXhwcmVzc2lvbnMvY29uY2F0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2FjaGVkUmVmZXJlbmNlLCBjb21iaW5lVGFnZ2VkIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmV4cG9ydCBjbGFzcyBDb25jYXRSZWZlcmVuY2UgZXh0ZW5kcyBDYWNoZWRSZWZlcmVuY2Uge1xuICAgIGNvbnN0cnVjdG9yKHBhcnRzKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMucGFydHMgPSBwYXJ0cztcbiAgICAgICAgdGhpcy50YWcgPSBjb21iaW5lVGFnZ2VkKHBhcnRzKTtcbiAgICB9XG4gICAgY29tcHV0ZSgpIHtcbiAgICAgICAgbGV0IHBhcnRzID0gbmV3IEFycmF5KCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5wYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5wYXJ0c1tpXS52YWx1ZSgpO1xuICAgICAgICAgICAgaWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBwYXJ0c1tpXSA9IGNhc3RUb1N0cmluZyh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJ0cy5qb2luKCcnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59XG5mdW5jdGlvbiBjYXN0VG9TdHJpbmcodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlWyd0b1N0cmluZyddICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG59Il19

@@ -8,6 +8,6 @@ "use strict";

var _reference = require("@glimmer/reference");
var _opcodes = require("../../opcodes");
var _vm2 = require("./vm");
var _arguments = require("../../vm/arguments");

@@ -19,3 +19,3 @@

var _vm2 = require("./vm");
var _reference = require("@glimmer/reference");

@@ -119,4 +119,4 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

var definition = void 0;
var manager = void 0;
var definition = void 0,
manager = void 0;
var args = vm.stack.pop();

@@ -200,3 +200,3 @@ var dynamicScope = vm.dynamicScope();

_this.dynamicScope = dynamicScope;
_this.type = 'update-component';
_this.type = "update-component";
var componentTag = manager.getTag(component);

@@ -221,5 +221,5 @@ if (componentTag) {

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

@@ -241,3 +241,3 @@ };

_this2.bounds = bounds;
_this2.type = 'did-update-layout';
_this2.type = "did-update-layout";
_this2.tag = _reference.CONSTANT_TAG;

@@ -258,2 +258,2 @@ return _this2;

}(_opcodes.UpdatingOpcode);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2NvbXBvbmVudC5qcyJdLCJuYW1lcyI6WyJjb21iaW5lIiwiQ09OU1RBTlRfVEFHIiwiaXNDb25zdCIsIlJlZmVyZW5jZUNhY2hlIiwiQVBQRU5EX09QQ09ERVMiLCJVcGRhdGluZ09wY29kZSIsIkFSR1MiLCJDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyIsIkFzc2VydCIsImFkZCIsInZtIiwiX2RlZmluaXRpb24iLCJvcDEiLCJkZWZpbml0aW9uIiwiY29uc3RhbnRzIiwiZ2V0T3RoZXIiLCJzdGFjayIsInB1c2giLCJtYW5hZ2VyIiwicmVmZXJlbmNlIiwicG9wIiwiY2FjaGUiLCJ1bmRlZmluZWQiLCJwZWVrIiwidmFsdWUiLCJ1cGRhdGVXaXRoIiwiY29tcG9uZW50IiwicG9zaXRpb25hbCIsInN5bnRoZXRpYyIsIm9wMiIsInNldHVwIiwiX3N0YXRlIiwiZmV0Y2hWYWx1ZSIsImFyZ3MiLCJwcmVwYXJlZEFyZ3MiLCJwcmVwYXJlQXJncyIsImNsZWFyIiwibmFtZWQiLCJwb3NpdGlvbmFsQ291bnQiLCJsZW5ndGgiLCJpIiwibmFtZXMiLCJPYmplY3QiLCJrZXlzIiwibmFtZWRDb3VudCIsImZsYWdzIiwiZHluYW1pY1Njb3BlIiwic3RhdGUiLCJoYXNEZWZhdWx0QmxvY2siLCJjcmVhdGUiLCJlbnYiLCJnZXRTZWxmIiwiVXBkYXRlQ29tcG9uZW50T3Bjb2RlIiwidGFnIiwibmFtZSIsImRlc3RydWN0b3IiLCJnZXREZXN0cnVjdG9yIiwibmV3RGVzdHJveWFibGUiLCJiZWdpbkNhY2hlR3JvdXAiLCJlbGVtZW50cyIsInB1c2hTaW1wbGVCbG9jayIsImFjdGlvbiIsImRpZENyZWF0ZUVsZW1lbnQiLCJleHBlY3RDb25zdHJ1Y3RpbmciLCJleHBlY3RPcGVyYXRpb25zIiwibGF5b3V0Rm9yIiwiYm91bmRzIiwicG9wQmxvY2siLCJkaWRSZW5kZXJMYXlvdXQiLCJkaWRDcmVhdGUiLCJEaWRVcGRhdGVMYXlvdXRPcGNvZGUiLCJjb21taXRDYWNoZUdyb3VwIiwidHlwZSIsImNvbXBvbmVudFRhZyIsImdldFRhZyIsImV2YWx1YXRlIiwiX3ZtIiwidXBkYXRlIiwidG9KU09OIiwiSlNPTiIsInN0cmluZ2lmeSIsImd1aWQiLCJfZ3VpZCIsImRpZFVwZGF0ZUxheW91dCIsImRpZFVwZGF0ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLEFBQVMsQUFBUyxBQUFjLEFBQVMsQUFBc0I7O0FBQy9ELEFBQVMsQUFBZ0IsQUFBc0I7O0FBQy9DLEFBQU8sQUFBVTs7OztBQUNqQixBQUFTLEFBQWtDOztBQUMzQyxBQUFTLEFBQWM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUN2Qix3QkFBQSxBQUFlLElBQWYsQUFBbUIsR0FBbkIsQUFBc0IsNEJBQTRCLFVBQUEsQUFBQyxVQUE2QjtRQUFsQixBQUFrQixtQkFBdkIsQUFBdUIsQUFDNUU7O1FBQUksYUFBYSxHQUFBLEFBQUcsVUFBSCxBQUFhLFNBQTlCLEFBQWlCLEFBQXNCLEFBQ3ZDO1FBQUksUUFBUSxHQUFaLEFBQWUsQUFDZjtVQUFBLEFBQU0sS0FBTixBQUFXLEFBQ1g7VUFBQSxBQUFNLEtBQUssV0FBWCxBQUFzQixBQUN6QjtBQUxEO0FBTUEsd0JBQUEsQUFBZSxJQUFmLEFBQW1CLEdBQW5CLEFBQXNCLG1DQUFtQyxjQUFNLEFBQzNEO1FBQUksUUFBUSxHQUFaLEFBQWUsQUFDZjtRQUFJLFlBQVksTUFBaEIsQUFBZ0IsQUFBTSxBQUN0QjtRQUFJLFFBQVEsd0JBQUEsQUFBUSxhQUFSLEFBQXFCLFlBQVksQUFBSSw4QkFBakQsQUFBNkMsQUFBbUIsQUFDaEU7UUFBSSxhQUFhLFFBQVEsTUFBUixBQUFRLEFBQU0sU0FBUyxVQUF4QyxBQUF3QyxBQUFVLEFBQ2xEO1VBQUEsQUFBTSxLQUFOLEFBQVcsQUFDWDtVQUFBLEFBQU0sS0FBSyxXQUFYLEFBQXNCLEFBQ3RCO1FBQUEsQUFBSSxPQUFPLEFBQ1A7V0FBQSxBQUFHLFdBQVcsQUFBSSxnQkFBbEIsQUFB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QXJCLEFBQWdDLFFBQVE7OEJBQUE7O3NEQUNwQyxzQkFEb0MsQUFFcEM7O2VBQUEsQUFBSyxVQUFMLEFBQWUsQUFDZjtlQUFBLEFBQUssWUFBTCxBQUFpQixBQUNqQjtlQUFBLEFBQUssU0FBTCxBQUFjLEFBQ2Q7ZUFBQSxBQUFLLE9BQUwsQUFBWSxBQUNaO2VBTm9DLEFBTXBDLEFBQUssQUFBTTtlQUNkO0FBUkw7O29DQUFBLEFBU0ksNkJBVEosQUFTYSxJQUFJO1lBQUEsQUFDSCxVQURHLEFBQzRCLEtBRDVCLEFBQ0g7WUFERyxBQUNNLFlBRE4sQUFDNEIsS0FENUIsQUFDTTtZQUROLEFBQ2lCLFNBRGpCLEFBQzRCLEtBRDVCLEFBQ2lCLEFBQzFCOztnQkFBQSxBQUFRLGdCQUFSLEFBQXdCLFdBQXhCLEFBQW1DLEFBQ25DO1dBQUEsQUFBRyxJQUFILEFBQU8sVUFBUCxBQUFpQixXQUFqQixBQUE0QixBQUMvQjtBQWJMOztXQUFBO0FBQUEsQUFBMkMiLCJmaWxlIjoibGliL2NvbXBpbGVkL29wY29kZXMvY29tcG9uZW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tYmluZSwgQ09OU1RBTlRfVEFHLCBpc0NvbnN0LCBSZWZlcmVuY2VDYWNoZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBBUFBFTkRfT1BDT0RFUywgVXBkYXRpbmdPcGNvZGUgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCBBUkdTIGZyb20gJy4uLy4uL3ZtL2FyZ3VtZW50cyc7XG5pbXBvcnQgeyBDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyB9IGZyb20gJy4vZG9tJztcbmltcG9ydCB7IEFzc2VydCB9IGZyb20gJy4vdm0nO1xuQVBQRU5EX09QQ09ERVMuYWRkKDU1IC8qIFB1c2hDb21wb25lbnRNYW5hZ2VyICovLCAodm0sIHsgb3AxOiBfZGVmaW5pdGlvbiB9KSA9PiB7XG4gICAgbGV0IGRlZmluaXRpb24gPSB2bS5jb25zdGFudHMuZ2V0T3RoZXIoX2RlZmluaXRpb24pO1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIHN0YWNrLnB1c2goZGVmaW5pdGlvbik7XG4gICAgc3RhY2sucHVzaChkZWZpbml0aW9uLm1hbmFnZXIpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTYgLyogUHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyICovLCB2bSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IHJlZmVyZW5jZSA9IHN0YWNrLnBvcCgpO1xuICAgIGxldCBjYWNoZSA9IGlzQ29uc3QocmVmZXJlbmNlKSA/IHVuZGVmaW5lZCA6IG5ldyBSZWZlcmVuY2VDYWNoZShyZWZlcmVuY2UpO1xuICAgIGxldCBkZWZpbml0aW9uID0gY2FjaGUgPyBjYWNoZS5wZWVrKCkgOiByZWZlcmVuY2UudmFsdWUoKTtcbiAgICBzdGFjay5wdXNoKGRlZmluaXRpb24pO1xuICAgIHN0YWNrLnB1c2goZGVmaW5pdGlvbi5tYW5hZ2VyKTtcbiAgICBpZiAoY2FjaGUpIHtcbiAgICAgICAgdm0udXBkYXRlV2l0aChuZXcgQXNzZXJ0KGNhY2hlKSk7XG4gICAgfVxufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTcgLyogSW5pdGlhbGl6ZUNvbXBvbmVudFN0YXRlICovLCB2bSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IG1hbmFnZXIgPSBzdGFjay5wb3AoKTtcbiAgICBsZXQgZGVmaW5pdGlvbiA9IHN0YWNrLnBvcCgpO1xuICAgIHN0YWNrLnB1c2goeyBkZWZpbml0aW9uLCBtYW5hZ2VyLCBjb21wb25lbnQ6IG51bGwgfSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg1OCAvKiBQdXNoQXJncyAqLywgKHZtLCB7IG9wMTogcG9zaXRpb25hbCwgb3AyOiBzeW50aGV0aWMgfSkgPT4ge1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIEFSR1Muc2V0dXAoc3RhY2ssIHBvc2l0aW9uYWwsICEhc3ludGhldGljKTtcbiAgICBzdGFjay5wdXNoKEFSR1MpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTkgLyogUHJlcGFyZUFyZ3MgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IHsgZGVmaW5pdGlvbiwgbWFuYWdlciB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIGxldCBhcmdzID0gc3RhY2sucG9wKCk7XG4gICAgbGV0IHByZXBhcmVkQXJncyA9IG1hbmFnZXIucHJlcGFyZUFyZ3MoZGVmaW5pdGlvbiwgYXJncyk7XG4gICAgaWYgKHByZXBhcmVkQXJncykge1xuICAgICAgICBhcmdzLmNsZWFyKCk7XG4gICAgICAgIGxldCB7IHBvc2l0aW9uYWwsIG5hbWVkIH0gPSBwcmVwYXJlZEFyZ3M7XG4gICAgICAgIGxldCBwb3NpdGlvbmFsQ291bnQgPSBwb3NpdGlvbmFsLmxlbmd0aDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbmFsQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgc3RhY2sucHVzaChwb3NpdGlvbmFsW2ldKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbmFtZXMgPSBPYmplY3Qua2V5cyhuYW1lZCk7XG4gICAgICAgIGxldCBuYW1lZENvdW50ID0gbmFtZXMubGVuZ3RoO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVkQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgc3RhY2sucHVzaChuYW1lZFtuYW1lc1tpXV0pO1xuICAgICAgICB9XG4gICAgICAgIHN0YWNrLnB1c2gobmFtZXMpO1xuICAgICAgICBhcmdzLnNldHVwKHN0YWNrLCBwb3NpdGlvbmFsQ291bnQsIHRydWUpO1xuICAgIH1cbiAgICBzdGFjay5wdXNoKGFyZ3MpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjAgLyogQ3JlYXRlQ29tcG9uZW50ICovLCAodm0sIHsgb3AxOiBmbGFncywgb3AyOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCBkZWZpbml0aW9uO1xuICAgIGxldCBtYW5hZ2VyO1xuICAgIGxldCBhcmdzID0gdm0uc3RhY2sucG9wKCk7XG4gICAgbGV0IGR5bmFtaWNTY29wZSA9IHZtLmR5bmFtaWNTY29wZSgpO1xuICAgIGxldCBzdGF0ZSA9ICh7IGRlZmluaXRpb24sIG1hbmFnZXIgfSA9IHZtLmZldGNoVmFsdWUoX3N0YXRlKSk7XG4gICAgbGV0IGhhc0RlZmF1bHRCbG9jayA9IGZsYWdzICYgMGIwMTtcbiAgICBsZXQgY29tcG9uZW50ID0gbWFuYWdlci5jcmVhdGUodm0uZW52LCBkZWZpbml0aW9uLCBhcmdzLCBkeW5hbWljU2NvcGUsIHZtLmdldFNlbGYoKSwgISFoYXNEZWZhdWx0QmxvY2spO1xuICAgIHN0YXRlLmNvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgICB2bS51cGRhdGVXaXRoKG5ldyBVcGRhdGVDb21wb25lbnRPcGNvZGUoYXJncy50YWcsIGRlZmluaXRpb24ubmFtZSwgY29tcG9uZW50LCBtYW5hZ2VyLCBkeW5hbWljU2NvcGUpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDYxIC8qIFJlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvciAqLywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgeyBtYW5hZ2VyLCBjb21wb25lbnQgfSA9IHZtLmZldGNoVmFsdWUoX3N0YXRlKTtcbiAgICBsZXQgZGVzdHJ1Y3RvciA9IG1hbmFnZXIuZ2V0RGVzdHJ1Y3Rvcihjb21wb25lbnQpO1xuICAgIGlmIChkZXN0cnVjdG9yKSB2bS5uZXdEZXN0cm95YWJsZShkZXN0cnVjdG9yKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDY1IC8qIEJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24gKi8sIHZtID0+IHtcbiAgICB2bS5iZWdpbkNhY2hlR3JvdXAoKTtcbiAgICB2bS5lbGVtZW50cygpLnB1c2hTaW1wbGVCbG9jaygpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjIgLyogUHVzaENvbXBvbmVudE9wZXJhdGlvbnMgKi8sIHZtID0+IHtcbiAgICB2bS5zdGFjay5wdXNoKG5ldyBDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyh2bS5lbnYpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDY3IC8qIERpZENyZWF0ZUVsZW1lbnQgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgbGV0IGFjdGlvbiA9ICdEaWRDcmVhdGVFbGVtZW50T3Bjb2RlI2V2YWx1YXRlJztcbiAgICBtYW5hZ2VyLmRpZENyZWF0ZUVsZW1lbnQoY29tcG9uZW50LCB2bS5lbGVtZW50cygpLmV4cGVjdENvbnN0cnVjdGluZyhhY3Rpb24pLCB2bS5lbGVtZW50cygpLmV4cGVjdE9wZXJhdGlvbnMoYWN0aW9uKSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2MyAvKiBHZXRDb21wb25lbnRTZWxmICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCBzdGF0ZSA9IHZtLmZldGNoVmFsdWUoX3N0YXRlKTtcbiAgICB2bS5zdGFjay5wdXNoKHN0YXRlLm1hbmFnZXIuZ2V0U2VsZihzdGF0ZS5jb21wb25lbnQpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDY0IC8qIEdldENvbXBvbmVudExheW91dCAqLywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgeyBtYW5hZ2VyLCBkZWZpbml0aW9uLCBjb21wb25lbnQgfSA9IHZtLmZldGNoVmFsdWUoX3N0YXRlKTtcbiAgICB2bS5zdGFjay5wdXNoKG1hbmFnZXIubGF5b3V0Rm9yKGRlZmluaXRpb24sIGNvbXBvbmVudCwgdm0uZW52KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2OCAvKiBEaWRSZW5kZXJMYXlvdXQgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgbGV0IGJvdW5kcyA9IHZtLmVsZW1lbnRzKCkucG9wQmxvY2soKTtcbiAgICBtYW5hZ2VyLmRpZFJlbmRlckxheW91dChjb21wb25lbnQsIGJvdW5kcyk7XG4gICAgdm0uZW52LmRpZENyZWF0ZShjb21wb25lbnQsIG1hbmFnZXIpO1xuICAgIHZtLnVwZGF0ZVdpdGgobmV3IERpZFVwZGF0ZUxheW91dE9wY29kZShtYW5hZ2VyLCBjb21wb25lbnQsIGJvdW5kcykpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjYgLyogQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24gKi8sIHZtID0+IHZtLmNvbW1pdENhY2hlR3JvdXAoKSk7XG5leHBvcnQgY2xhc3MgVXBkYXRlQ29tcG9uZW50T3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKHRhZywgbmFtZSwgY29tcG9uZW50LCBtYW5hZ2VyLCBkeW5hbWljU2NvcGUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5jb21wb25lbnQgPSBjb21wb25lbnQ7XG4gICAgICAgIHRoaXMubWFuYWdlciA9IG1hbmFnZXI7XG4gICAgICAgIHRoaXMuZHluYW1pY1Njb3BlID0gZHluYW1pY1Njb3BlO1xuICAgICAgICB0aGlzLnR5cGUgPSAndXBkYXRlLWNvbXBvbmVudCc7XG4gICAgICAgIGxldCBjb21wb25lbnRUYWcgPSBtYW5hZ2VyLmdldFRhZyhjb21wb25lbnQpO1xuICAgICAgICBpZiAoY29tcG9uZW50VGFnKSB7XG4gICAgICAgICAgICB0aGlzLnRhZyA9IGNvbWJpbmUoW3RhZywgY29tcG9uZW50VGFnXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRhZyA9IHRhZztcbiAgICAgICAgfVxuICAgIH1cbiAgICBldmFsdWF0ZShfdm0pIHtcbiAgICAgICAgbGV0IHsgY29tcG9uZW50LCBtYW5hZ2VyLCBkeW5hbWljU2NvcGUgfSA9IHRoaXM7XG4gICAgICAgIG1hbmFnZXIudXBkYXRlKGNvbXBvbmVudCwgZHluYW1pY1Njb3BlKTtcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYXJnczogW0pTT04uc3RyaW5naWZ5KHRoaXMubmFtZSldLFxuICAgICAgICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZVxuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBEaWRVcGRhdGVMYXlvdXRPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gICAgY29uc3RydWN0b3IobWFuYWdlciwgY29tcG9uZW50LCBib3VuZHMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5tYW5hZ2VyID0gbWFuYWdlcjtcbiAgICAgICAgdGhpcy5jb21wb25lbnQgPSBjb21wb25lbnQ7XG4gICAgICAgIHRoaXMuYm91bmRzID0gYm91bmRzO1xuICAgICAgICB0aGlzLnR5cGUgPSAnZGlkLXVwZGF0ZS1sYXlvdXQnO1xuICAgICAgICB0aGlzLnRhZyA9IENPTlNUQU5UX1RBRztcbiAgICB9XG4gICAgZXZhbHVhdGUodm0pIHtcbiAgICAgICAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50LCBib3VuZHMgfSA9IHRoaXM7XG4gICAgICAgIG1hbmFnZXIuZGlkVXBkYXRlTGF5b3V0KGNvbXBvbmVudCwgYm91bmRzKTtcbiAgICAgICAgdm0uZW52LmRpZFVwZGF0ZShjb21wb25lbnQsIG1hbmFnZXIpO1xuICAgIH1cbn0iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2NvbXBvbmVudC5qcyJdLCJuYW1lcyI6WyJBUFBFTkRfT1BDT0RFUyIsIlVwZGF0aW5nT3Bjb2RlIiwiQXNzZXJ0IiwiQVJHUyIsIkNvbXBvbmVudEVsZW1lbnRPcGVyYXRpb25zIiwiQ09OU1RBTlRfVEFHIiwiUmVmZXJlbmNlQ2FjaGUiLCJjb21iaW5lIiwiaXNDb25zdCIsImFkZCIsInZtIiwiX2RlZmluaXRpb24iLCJvcDEiLCJkZWZpbml0aW9uIiwiY29uc3RhbnRzIiwiZ2V0T3RoZXIiLCJzdGFjayIsInB1c2giLCJtYW5hZ2VyIiwicmVmZXJlbmNlIiwicG9wIiwiY2FjaGUiLCJ1bmRlZmluZWQiLCJwZWVrIiwidmFsdWUiLCJ1cGRhdGVXaXRoIiwiY29tcG9uZW50IiwicG9zaXRpb25hbCIsInN5bnRoZXRpYyIsIm9wMiIsInNldHVwIiwiX3N0YXRlIiwiZmV0Y2hWYWx1ZSIsImFyZ3MiLCJwcmVwYXJlZEFyZ3MiLCJwcmVwYXJlQXJncyIsImNsZWFyIiwibmFtZWQiLCJwb3NpdGlvbmFsQ291bnQiLCJsZW5ndGgiLCJpIiwibmFtZXMiLCJPYmplY3QiLCJrZXlzIiwibmFtZWRDb3VudCIsImZsYWdzIiwiZHluYW1pY1Njb3BlIiwic3RhdGUiLCJoYXNEZWZhdWx0QmxvY2siLCJjcmVhdGUiLCJlbnYiLCJnZXRTZWxmIiwiVXBkYXRlQ29tcG9uZW50T3Bjb2RlIiwidGFnIiwibmFtZSIsImRlc3RydWN0b3IiLCJnZXREZXN0cnVjdG9yIiwibmV3RGVzdHJveWFibGUiLCJiZWdpbkNhY2hlR3JvdXAiLCJlbGVtZW50cyIsInB1c2hTaW1wbGVCbG9jayIsImFjdGlvbiIsImRpZENyZWF0ZUVsZW1lbnQiLCJleHBlY3RDb25zdHJ1Y3RpbmciLCJleHBlY3RPcGVyYXRpb25zIiwibGF5b3V0Rm9yIiwiYm91bmRzIiwicG9wQmxvY2siLCJkaWRSZW5kZXJMYXlvdXQiLCJkaWRDcmVhdGUiLCJEaWRVcGRhdGVMYXlvdXRPcGNvZGUiLCJjb21taXRDYWNoZUdyb3VwIiwidHlwZSIsImNvbXBvbmVudFRhZyIsImdldFRhZyIsImV2YWx1YXRlIiwiX3ZtIiwidXBkYXRlIiwidG9KU09OIiwiZ3VpZCIsIl9ndWlkIiwiSlNPTiIsInN0cmluZ2lmeSIsImRpZFVwZGF0ZUxheW91dCIsImRpZFVwZGF0ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLEFBQVMsQUFBZ0IsQUFBc0I7O0FBQy9DLEFBQVMsQUFBYzs7QUFDdkIsQUFBTyxBQUFVOzs7O0FBQ2pCLEFBQVMsQUFBa0M7O0FBQzNDLEFBQVMsQUFBYyxBQUFnQixBQUFTLEFBQWU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUMvRCx3QkFBQSxBQUFlLElBQWYsQUFBbUIsR0FBbkIsQUFBc0IsNEJBQTRCLFVBQUEsQUFBQyxVQUE2QjtRQUFsQixBQUFrQixtQkFBdkIsQUFBdUIsQUFDNUU7O1FBQUksYUFBYSxHQUFBLEFBQUcsVUFBSCxBQUFhLFNBQTlCLEFBQWlCLEFBQXNCLEFBQ3ZDO1FBQUksUUFBUSxHQUFaLEFBQWUsQUFDZjtVQUFBLEFBQU0sS0FBTixBQUFXLEFBQ1g7VUFBQSxBQUFNLEtBQUssV0FBWCxBQUFzQixBQUN6QjtBQUxEO0FBTUEsd0JBQUEsQUFBZSxJQUFmLEFBQW1CLEdBQW5CLEFBQXNCLG1DQUFtQyxjQUFNLEFBQzNEO1FBQUksUUFBUSxHQUFaLEFBQWUsQUFDZjtRQUFJLFlBQVksTUFBaEIsQUFBZ0IsQUFBTSxBQUN0QjtRQUFJLFFBQVEsd0JBQUEsQUFBUSxhQUFSLEFBQXFCLFlBQVksQUFBSSw4QkFBakQsQUFBNkMsQUFBbUIsQUFDaEU7UUFBSSxhQUFhLFFBQVEsTUFBUixBQUFRLEFBQU0sU0FBUyxVQUF4QyxBQUF3QyxBQUFVLEFBQ2xEO1VBQUEsQUFBTSxLQUFOLEFBQVcsQUFDWDtVQUFBLEFBQU0sS0FBSyxXQUFYLEFBQXNCLEFBQ3RCO1FBQUEsQUFBSSxPQUFPLEFBQ1A7V0FBQSxBQUFHLFdBQVcsQUFBSSxnQkFBbEIsQUFB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QUFBZ0MsUUFBUTs4QkFBQTs7c0RBQ3BDLHNCQURvQyxBQUVwQzs7ZUFBQSxBQUFLLFVBQUwsQUFBZSxBQUNmO2VBQUEsQUFBSyxZQUFMLEFBQWlCLEFBQ2pCO2VBQUEsQUFBSyxTQUFMLEFBQWMsQUFDZDtlQUFBLEFBQUssT0FBTCxBQUFZLEFBQ1o7ZUFOb0MsQUFNcEMsQUFBSyxBQUFNO2VBQ2Q7QUFSTDs7b0NBQUEsQUFTSSw2QkFUSixBQVNhLElBQUk7WUFBQSxBQUNILFVBREcsQUFDNEIsS0FENUIsQUFDSDtZQURHLEFBQ00sWUFETixBQUM0QixLQUQ1QixBQUNNO1lBRE4sQUFDaUIsU0FEakIsQUFDNEIsS0FENUIsQUFDaUIsQUFDMUI7O2dCQUFBLEFBQVEsZ0JBQVIsQUFBd0IsV0FBeEIsQUFBbUMsQUFDbkM7V0FBQSxBQUFHLElBQUgsQUFBTyxVQUFQLEFBQWlCLFdBQWpCLEFBQTRCLEFBQy9CO0FBYkw7O1dBQUE7QUFBQSxBQUEyQyIsImZpbGUiOiJsaWIvY29tcGlsZWQvb3Bjb2Rlcy9jb21wb25lbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBUFBFTkRfT1BDT0RFUywgVXBkYXRpbmdPcGNvZGUgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IEFzc2VydCB9IGZyb20gJy4vdm0nO1xuaW1wb3J0IEFSR1MgZnJvbSAnLi4vLi4vdm0vYXJndW1lbnRzJztcbmltcG9ydCB7IENvbXBvbmVudEVsZW1lbnRPcGVyYXRpb25zIH0gZnJvbSAnLi9kb20nO1xuaW1wb3J0IHsgQ09OU1RBTlRfVEFHLCBSZWZlcmVuY2VDYWNoZSwgY29tYmluZSwgaXNDb25zdCB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTUgLyogUHVzaENvbXBvbmVudE1hbmFnZXIgKi8sICh2bSwgeyBvcDE6IF9kZWZpbml0aW9uIH0pID0+IHtcbiAgICBsZXQgZGVmaW5pdGlvbiA9IHZtLmNvbnN0YW50cy5nZXRPdGhlcihfZGVmaW5pdGlvbik7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgc3RhY2sucHVzaChkZWZpbml0aW9uKTtcbiAgICBzdGFjay5wdXNoKGRlZmluaXRpb24ubWFuYWdlcik7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg1NiAvKiBQdXNoRHluYW1pY0NvbXBvbmVudE1hbmFnZXIgKi8sIHZtID0+IHtcbiAgICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgICBsZXQgcmVmZXJlbmNlID0gc3RhY2sucG9wKCk7XG4gICAgbGV0IGNhY2hlID0gaXNDb25zdChyZWZlcmVuY2UpID8gdW5kZWZpbmVkIDogbmV3IFJlZmVyZW5jZUNhY2hlKHJlZmVyZW5jZSk7XG4gICAgbGV0IGRlZmluaXRpb24gPSBjYWNoZSA/IGNhY2hlLnBlZWsoKSA6IHJlZmVyZW5jZS52YWx1ZSgpO1xuICAgIHN0YWNrLnB1c2goZGVmaW5pdGlvbik7XG4gICAgc3RhY2sucHVzaChkZWZpbml0aW9uLm1hbmFnZXIpO1xuICAgIGlmIChjYWNoZSkge1xuICAgICAgICB2bS51cGRhdGVXaXRoKG5ldyBBc3NlcnQoY2FjaGUpKTtcbiAgICB9XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg1NyAvKiBJbml0aWFsaXplQ29tcG9uZW50U3RhdGUgKi8sIHZtID0+IHtcbiAgICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgICBsZXQgbWFuYWdlciA9IHN0YWNrLnBvcCgpO1xuICAgIGxldCBkZWZpbml0aW9uID0gc3RhY2sucG9wKCk7XG4gICAgc3RhY2sucHVzaCh7IGRlZmluaXRpb24sIG1hbmFnZXIsIGNvbXBvbmVudDogbnVsbCB9KTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDU4IC8qIFB1c2hBcmdzICovLCAodm0sIHsgb3AxOiBwb3NpdGlvbmFsLCBvcDI6IHN5bnRoZXRpYyB9KSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgQVJHUy5zZXR1cChzdGFjaywgcG9zaXRpb25hbCwgISFzeW50aGV0aWMpO1xuICAgIHN0YWNrLnB1c2goQVJHUyk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg1OSAvKiBQcmVwYXJlQXJncyAqLywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgICBsZXQgeyBkZWZpbml0aW9uLCBtYW5hZ2VyIH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgbGV0IGFyZ3MgPSBzdGFjay5wb3AoKTtcbiAgICBsZXQgcHJlcGFyZWRBcmdzID0gbWFuYWdlci5wcmVwYXJlQXJncyhkZWZpbml0aW9uLCBhcmdzKTtcbiAgICBpZiAocHJlcGFyZWRBcmdzKSB7XG4gICAgICAgIGFyZ3MuY2xlYXIoKTtcbiAgICAgICAgbGV0IHsgcG9zaXRpb25hbCwgbmFtZWQgfSA9IHByZXBhcmVkQXJncztcbiAgICAgICAgbGV0IHBvc2l0aW9uYWxDb3VudCA9IHBvc2l0aW9uYWwubGVuZ3RoO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9uYWxDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICBzdGFjay5wdXNoKHBvc2l0aW9uYWxbaV0pO1xuICAgICAgICB9XG4gICAgICAgIGxldCBuYW1lcyA9IE9iamVjdC5rZXlzKG5hbWVkKTtcbiAgICAgICAgbGV0IG5hbWVkQ291bnQgPSBuYW1lcy5sZW5ndGg7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZWRDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICBzdGFjay5wdXNoKG5hbWVkW25hbWVzW2ldXSk7XG4gICAgICAgIH1cbiAgICAgICAgc3RhY2sucHVzaChuYW1lcyk7XG4gICAgICAgIGFyZ3Muc2V0dXAoc3RhY2ssIHBvc2l0aW9uYWxDb3VudCwgdHJ1ZSk7XG4gICAgfVxuICAgIHN0YWNrLnB1c2goYXJncyk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2MCAvKiBDcmVhdGVDb21wb25lbnQgKi8sICh2bSwgeyBvcDE6IGZsYWdzLCBvcDI6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IGRlZmluaXRpb24sIG1hbmFnZXI7XG4gICAgbGV0IGFyZ3MgPSB2bS5zdGFjay5wb3AoKTtcbiAgICBsZXQgZHluYW1pY1Njb3BlID0gdm0uZHluYW1pY1Njb3BlKCk7XG4gICAgbGV0IHN0YXRlID0gKHsgZGVmaW5pdGlvbiwgbWFuYWdlciB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpKTtcbiAgICBsZXQgaGFzRGVmYXVsdEJsb2NrID0gZmxhZ3MgJiAwYjAxO1xuICAgIGxldCBjb21wb25lbnQgPSBtYW5hZ2VyLmNyZWF0ZSh2bS5lbnYsIGRlZmluaXRpb24sIGFyZ3MsIGR5bmFtaWNTY29wZSwgdm0uZ2V0U2VsZigpLCAhIWhhc0RlZmF1bHRCbG9jayk7XG4gICAgc3RhdGUuY29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgIHZtLnVwZGF0ZVdpdGgobmV3IFVwZGF0ZUNvbXBvbmVudE9wY29kZShhcmdzLnRhZywgZGVmaW5pdGlvbi5uYW1lLCBjb21wb25lbnQsIG1hbmFnZXIsIGR5bmFtaWNTY29wZSkpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjEgLyogUmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCB7IG1hbmFnZXIsIGNvbXBvbmVudCB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIGxldCBkZXN0cnVjdG9yID0gbWFuYWdlci5nZXREZXN0cnVjdG9yKGNvbXBvbmVudCk7XG4gICAgaWYgKGRlc3RydWN0b3IpIHZtLm5ld0Rlc3Ryb3lhYmxlKGRlc3RydWN0b3IpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjUgLyogQmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbiAqLywgdm0gPT4ge1xuICAgIHZtLmJlZ2luQ2FjaGVHcm91cCgpO1xuICAgIHZtLmVsZW1lbnRzKCkucHVzaFNpbXBsZUJsb2NrKCk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2MiAvKiBQdXNoQ29tcG9uZW50T3BlcmF0aW9ucyAqLywgdm0gPT4ge1xuICAgIHZtLnN0YWNrLnB1c2gobmV3IENvbXBvbmVudEVsZW1lbnRPcGVyYXRpb25zKHZtLmVudikpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjcgLyogRGlkQ3JlYXRlRWxlbWVudCAqLywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgeyBtYW5hZ2VyLCBjb21wb25lbnQgfSA9IHZtLmZldGNoVmFsdWUoX3N0YXRlKTtcbiAgICBsZXQgYWN0aW9uID0gJ0RpZENyZWF0ZUVsZW1lbnRPcGNvZGUjZXZhbHVhdGUnO1xuICAgIG1hbmFnZXIuZGlkQ3JlYXRlRWxlbWVudChjb21wb25lbnQsIHZtLmVsZW1lbnRzKCkuZXhwZWN0Q29uc3RydWN0aW5nKGFjdGlvbiksIHZtLmVsZW1lbnRzKCkuZXhwZWN0T3BlcmF0aW9ucyhhY3Rpb24pKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDYzIC8qIEdldENvbXBvbmVudFNlbGYgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHN0YXRlID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIHZtLnN0YWNrLnB1c2goc3RhdGUubWFuYWdlci5nZXRTZWxmKHN0YXRlLmNvbXBvbmVudCkpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjQgLyogR2V0Q29tcG9uZW50TGF5b3V0ICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCB7IG1hbmFnZXIsIGRlZmluaXRpb24sIGNvbXBvbmVudCB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIHZtLnN0YWNrLnB1c2gobWFuYWdlci5sYXlvdXRGb3IoZGVmaW5pdGlvbiwgY29tcG9uZW50LCB2bS5lbnYpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDY4IC8qIERpZFJlbmRlckxheW91dCAqLywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgeyBtYW5hZ2VyLCBjb21wb25lbnQgfSA9IHZtLmZldGNoVmFsdWUoX3N0YXRlKTtcbiAgICBsZXQgYm91bmRzID0gdm0uZWxlbWVudHMoKS5wb3BCbG9jaygpO1xuICAgIG1hbmFnZXIuZGlkUmVuZGVyTGF5b3V0KGNvbXBvbmVudCwgYm91bmRzKTtcbiAgICB2bS5lbnYuZGlkQ3JlYXRlKGNvbXBvbmVudCwgbWFuYWdlcik7XG4gICAgdm0udXBkYXRlV2l0aChuZXcgRGlkVXBkYXRlTGF5b3V0T3Bjb2RlKG1hbmFnZXIsIGNvbXBvbmVudCwgYm91bmRzKSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2NiAvKiBDb21taXRDb21wb25lbnRUcmFuc2FjdGlvbiAqLywgdm0gPT4gdm0uY29tbWl0Q2FjaGVHcm91cCgpKTtcbmV4cG9ydCBjbGFzcyBVcGRhdGVDb21wb25lbnRPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gICAgY29uc3RydWN0b3IodGFnLCBuYW1lLCBjb21wb25lbnQsIG1hbmFnZXIsIGR5bmFtaWNTY29wZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLmNvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgICAgICAgdGhpcy5tYW5hZ2VyID0gbWFuYWdlcjtcbiAgICAgICAgdGhpcy5keW5hbWljU2NvcGUgPSBkeW5hbWljU2NvcGU7XG4gICAgICAgIHRoaXMudHlwZSA9IFwidXBkYXRlLWNvbXBvbmVudFwiO1xuICAgICAgICBsZXQgY29tcG9uZW50VGFnID0gbWFuYWdlci5nZXRUYWcoY29tcG9uZW50KTtcbiAgICAgICAgaWYgKGNvbXBvbmVudFRhZykge1xuICAgICAgICAgICAgdGhpcy50YWcgPSBjb21iaW5lKFt0YWcsIGNvbXBvbmVudFRhZ10pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50YWcgPSB0YWc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZXZhbHVhdGUoX3ZtKSB7XG4gICAgICAgIGxldCB7IGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlIH0gPSB0aGlzO1xuICAgICAgICBtYW5hZ2VyLnVwZGF0ZShjb21wb25lbnQsIGR5bmFtaWNTY29wZSk7XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICAgICAgICBhcmdzOiBbSlNPTi5zdHJpbmdpZnkodGhpcy5uYW1lKV1cbiAgICAgICAgfTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgRGlkVXBkYXRlTGF5b3V0T3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKG1hbmFnZXIsIGNvbXBvbmVudCwgYm91bmRzKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubWFuYWdlciA9IG1hbmFnZXI7XG4gICAgICAgIHRoaXMuY29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgICAgICB0aGlzLmJvdW5kcyA9IGJvdW5kcztcbiAgICAgICAgdGhpcy50eXBlID0gXCJkaWQtdXBkYXRlLWxheW91dFwiO1xuICAgICAgICB0aGlzLnRhZyA9IENPTlNUQU5UX1RBRztcbiAgICB9XG4gICAgZXZhbHVhdGUodm0pIHtcbiAgICAgICAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50LCBib3VuZHMgfSA9IHRoaXM7XG4gICAgICAgIG1hbmFnZXIuZGlkVXBkYXRlTGF5b3V0KGNvbXBvbmVudCwgYm91bmRzKTtcbiAgICAgICAgdm0uZW52LmRpZFVwZGF0ZShjb21wb25lbnQsIG1hbmFnZXIpO1xuICAgIH1cbn0iXX0=

@@ -9,2 +9,8 @@ "use strict";

var _upsert = require("../../upsert");
var _interfaces = require("../../component/interfaces");
var _opcodes = require("../../opcodes");
var _reference2 = require("@glimmer/reference");

@@ -16,10 +22,4 @@

var _interfaces = require("../../component/interfaces");
var _opcodes = require("../../opcodes");
var _references = require("../../references");
var _upsert = require("../../upsert");
function _defaults(obj, defaults) {

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

function isEmpty(value) {
return value === null || value === undefined || typeof value.toString !== 'function';
return value === null || value === undefined || typeof value['toString'] !== 'function';
}

@@ -102,4 +102,4 @@ function normalizeTextValue(value) {

var normalized = this.normalize(reference);
var value = void 0;
var cache = void 0;
var value = void 0,
cache = void 0;
if ((0, _reference2.isConst)(reference)) {

@@ -178,5 +178,5 @@ value = normalized.value();

return {
details: { lastValue: JSON.stringify(cache.peek()) },
guid: guid,
type: type
type: type,
details: { lastValue: JSON.stringify(cache.peek()) }
};

@@ -279,2 +279,2 @@ };

}(UpdateOpcode);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2NvbnRlbnQuanMiXSwibmFtZXMiOlsiaXNDb25zdCIsImlzTW9kaWZpZWQiLCJtYXAiLCJSZWZlcmVuY2VDYWNoZSIsImNsZWFyIiwiQ3Vyc29yIiwiRnJhZ21lbnQiLCJpc0NvbXBvbmVudERlZmluaXRpb24iLCJBUFBFTkRfT1BDT0RFUyIsIlVwZGF0aW5nT3Bjb2RlIiwiQ29uZGl0aW9uYWxSZWZlcmVuY2UiLCJjYXV0aW91c0luc2VydCIsImlzTm9kZSIsImlzU2FmZVN0cmluZyIsImlzU3RyaW5nIiwidHJ1c3RpbmdJbnNlcnQiLCJhZGQiLCJ2bSIsImFwcGVuZCIsIm9wMSIsIm9wY29kZSIsImNvbnN0YW50cyIsImdldE90aGVyIiwiZXZhbHVhdGUiLCJpc0VtcHR5IiwidmFsdWUiLCJ1bmRlZmluZWQiLCJ0b1N0cmluZyIsIm5vcm1hbGl6ZVRleHRWYWx1ZSIsIlN0cmluZyIsIm5vcm1hbGl6ZVRydXN0ZWRWYWx1ZSIsInRvSFRNTCIsIm5vcm1hbGl6ZVZhbHVlIiwiQXBwZW5kRHluYW1pY09wY29kZSIsInJlZmVyZW5jZSIsInN0YWNrIiwicG9wIiwibm9ybWFsaXplZCIsIm5vcm1hbGl6ZSIsImNhY2hlIiwicGVlayIsImVsZW1lbnRzIiwidXBzZXJ0IiwiaW5zZXJ0IiwiZW52IiwiZ2V0QXBwZW5kT3BlcmF0aW9ucyIsImJvdW5kcyIsIm5ld0JvdW5kcyIsInVwZGF0ZVdpdGgiLCJJc0NvbXBvbmVudERlZmluaXRpb25SZWZlcmVuY2UiLCJjcmVhdGUiLCJpbm5lciIsInRvQm9vbCIsIlVwZGF0ZU9wY29kZSIsInRhZyIsInJldmFsaWRhdGUiLCJkb20iLCJ1cGRhdGUiLCJjdXJzb3IiLCJwYXJlbnRFbGVtZW50IiwidG9KU09OIiwiZ3VpZCIsIl9ndWlkIiwidHlwZSIsImRldGFpbHMiLCJsYXN0VmFsdWUiLCJKU09OIiwic3RyaW5naWZ5IiwiT3B0aW1pemVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUiLCJhcmd1bWVudHMiLCJfdm0iLCJfcmVmZXJlbmNlIiwiT3B0aW1pemVkQ2F1dGlvdXNVcGRhdGVPcGNvZGUiLCJPcHRpbWl6ZWRUcnVzdGluZ0FwcGVuZE9wY29kZSIsIk9wdGltaXplZFRydXN0aW5nVXBkYXRlT3Bjb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7UUFjTyxBQUFTOztBQWRoQixBQUFTLEFBQVMsQUFBWSxBQUFLLEFBQXNCOztBQUN6RCxBQUFTLEFBQU8sQUFBYzs7QUFDOUIsQUFBUyxBQUFnQjs7QUFDekIsQUFBUyxBQUE2Qjs7QUFDdEMsQUFBUyxBQUFnQixBQUFzQjs7QUFDL0MsQUFBUyxBQUE0Qjs7QUFDckMsQUFBUyxBQUFnQixBQUFRLEFBQWMsQUFBVSxBQUFzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUMvRSx3QkFBQSxBQUFlLElBQWYsQUFBbUIsR0FBbkIsQUFBc0Isc0JBQXNCLFVBQUEsQUFBQyxVQUF3QjtRQUFiLEFBQWEsY0FBbEIsQUFBa0IsQUFDakU7O1FBQUksU0FBUyxHQUFBLEFBQUcsVUFBSCxBQUFhLFNBQTFCLEFBQWEsQUFBc0IsQUFDbkM7V0FBQSxBQUFPLFNBQVAsQUFBZ0IsQUFDbkI7QUFIRDtBQUlBLFNBQUEsQUFBUyxRQUFULEFBQWlCLE9BQU8sQUFDcEI7V0FBTyxVQUFBLEFBQVUsUUFBUSxVQUFsQixBQUE0QixhQUFhLE9BQU8sTUFBUCxBQUFhLGFBQTdELEFBQTBFLEFBQzdFO0FBQ0Q7QUFBTyw0QkFBQSxBQUE0QixPQUFPLEFBQ3RDO1FBQUksUUFBSixBQUFJLEFBQVEsUUFBUSxBQUNoQjtlQUFBLEFBQU8sQUFDVjtBQUNEO1dBQU8sT0FBUCxBQUFPLEFBQU8sQUFDakI7O0FBQ0QsU0FBQSxBQUFTLHNCQUFULEFBQStCLE9BQU8sQUFDbEM7UUFBSSxRQUFKLEFBQUksQUFBUSxRQUFRLEFBQ2hCO2VBQUEsQUFBTyxBQUNWO0FBQ0Q7UUFBSSxzQkFBSixBQUFJLEFBQVMsUUFBUSxBQUNqQjtlQUFBLEFBQU8sQUFDVjtBQUNEO1FBQUksMEJBQUos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OzRDLEFBQ0QseUIsQUFBTyxLLEFBQUssUUFBUSxBLE9BQU8sQUFDdkI7ZUFBTyw0QkFBQSxBQUFlLEtBQWYsQUFBb0IsUUFBM0IsQUFBTyxBQUE0QixBQUN0QztBOzs7RUFQdUMsQUFTNUMsQTs7SUFBQSxBQUFhLHlHQUFiOzZDQUNJOzs2Q0FBYzs4QkFBQTs7c0RBQ1Ysa0NBRFUsQUFDVixBQUFTLEFBQ1Q7O2VBQUEsQUFBSyxPQUZLLEFBRVYsQUFBWTtlQUNmO0FBSkw7OzRDQUFBLEFBS0ksK0JBTEosQUFLYyxXQUFXLEFBQ2pCO2VBQU8scUJBQUEsQUFBSSxXQUFYLEFBQU8sQUFBZSxBQUN6QjtBQVBMOzs0Q0FBQSxBQVFJLHlCQVJKLEFBUVcsS0FSWCxBQVFnQixRQVJoQixBQVF3QixPQUFPLEFBQ3ZCO2VBQU8sNEJBQUEsQUFBZSxLQUFmLEFBQW9CLFFBQTNCLEFBQU8sQUFBNEIsQUFDdEM7QUFWTDs7NENBQUEsQUFXSSxpQ0FYSixBQVdlLEtBWGYsQUFXb0IsWUFYcEIsQUFXZ0MsT0FYaEMsQUFXdUMsUUFYdkMsQUFXK0MsUUFBUSxBQUMvQztlQUFPLElBQUEsQUFBSSw4QkFBSixBQUFrQyxPQUFsQyxBQUF5QyxRQUFoRCxBQUFPLEFBQWlELEFBQzNEO0FBYkw7O1dBQUE7RUFBQSxBQUFtRDs7SUFlN0MsQTs2Q0FDRjs7NkNBQWM7OEJBQUE7O3NEQUNWLDJCQURVLEFBQ1YsQUFBUyxBQUNUOztlQUFBLEFBQUssT0FGSyxBQUVWLEFBQVk7ZUFDZjs7OzRDLEFBQ0QseUIsQUFBTyxLQUFLLEEsUUFBUSxBLE9BQU8sQUFDdkI7ZUFBTyw0QkFBQSxBQUFlLEtBQWYsQUFBb0IsUUFBM0IsQUFBTyxBQUE0QixBQUN0QztBOzs7RUFQdUMsQSIsImZpbGUiOiJsaWIvY29tcGlsZWQvb3Bjb2Rlcy9jb250ZW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNDb25zdCwgaXNNb2RpZmllZCwgbWFwLCBSZWZlcmVuY2VDYWNoZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBjbGVhciwgQ3Vyc29yIH0gZnJvbSAnLi4vLi4vYm91bmRzJztcbmltcG9ydCB7IEZyYWdtZW50IH0gZnJvbSAnLi4vLi4vYnVpbGRlcic7XG5pbXBvcnQgeyBpc0NvbXBvbmVudERlZmluaXRpb24gfSBmcm9tICcuLi8uLi9jb21wb25lbnQvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBUFBFTkRfT1BDT0RFUywgVXBkYXRpbmdPcGNvZGUgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IENvbmRpdGlvbmFsUmVmZXJlbmNlIH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBjYXV0aW91c0luc2VydCwgaXNOb2RlLCBpc1NhZmVTdHJpbmcsIGlzU3RyaW5nLCB0cnVzdGluZ0luc2VydCB9IGZyb20gJy4uLy4uL3Vwc2VydCc7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMjUgLyogRHluYW1pY0NvbnRlbnQgKi8sICh2bSwgeyBvcDE6IGFwcGVuZCB9KSA9PiB7XG4gICAgbGV0IG9wY29kZSA9IHZtLmNvbnN0YW50cy5nZXRPdGhlcihhcHBlbmQpO1xuICAgIG9wY29kZS5ldmFsdWF0ZSh2bSk7XG59KTtcbmZ1bmN0aW9uIGlzRW1wdHkodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgdmFsdWUudG9TdHJpbmcgIT09ICdmdW5jdGlvbic7XG59XG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplVGV4dFZhbHVlKHZhbHVlKSB7XG4gICAgaWYgKGlzRW1wdHkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG59XG5mdW5jdGlvbiBub3JtYWxpemVUcnVzdGVkVmFsdWUodmFsdWUpIHtcbiAgICBpZiAoaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgaWYgKGlzU2FmZVN0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLnRvSFRNTCgpO1xuICAgIH1cbiAgICBpZiAoaXNOb2RlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xufVxuZnVuY3Rpb24gbm9ybWFsaXplVmFsdWUodmFsdWUpIHtcbiAgICBpZiAoaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgaWYgKGlzU2FmZVN0cmluZyh2YWx1ZSkgfHwgaXNOb2RlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xufVxuZXhwb3J0IGNsYXNzIEFwcGVuZER5bmFtaWNPcGNvZGUge1xuICAgIGV2YWx1YXRlKHZtKSB7XG4gICAgICAgIGxldCByZWZlcmVuY2UgPSB2bS5zdGFjay5wb3AoKTtcbiAgICAgICAgbGV0IG5vcm1hbGl6ZWQgPSB0aGlzLm5vcm1hbGl6ZShyZWZlcmVuY2UpO1xuICAgICAgICBsZXQgdmFsdWU7XG4gICAgICAgIGxldCBjYWNoZTtcbiAgICAgICAgaWYgKGlzQ29uc3QocmVmZXJlbmNlKSkge1xuICAgICAgICAgICAgdmFsdWUgPSBub3JtYWxpemVkLnZhbHVlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjYWNoZSA9IG5ldyBSZWZlcmVuY2VDYWNoZShub3JtYWxpemVkKTtcbiAgICAgICAgICAgIHZhbHVlID0gY2FjaGUucGVlaygpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBzdGFjayA9IHZtLmVsZW1lbnRzKCk7XG4gICAgICAgIGxldCB1cHNlcnQgPSB0aGlzLmluc2VydCh2bS5lbnYuZ2V0QXBwZW5kT3BlcmF0aW9ucygpLCBzdGFjaywgdmFsdWUpO1xuICAgICAgICBsZXQgYm91bmRzID0gbmV3IEZyYWdtZW50KHVwc2VydC5ib3VuZHMpO1xuICAgICAgICBzdGFjay5uZXdCb3VuZHMoYm91bmRzKTtcbiAgICAgICAgaWYgKGNhY2hlIC8qIGkuZS4gIWlzQ29uc3QocmVmZXJlbmNlKSAqLykge1xuICAgICAgICAgICAgICAgIHZtLnVwZGF0ZVdpdGgodGhpcy51cGRhdGVXaXRoKHZtLCByZWZlcmVuY2UsIGNhY2hlLCBib3VuZHMsIHVwc2VydCkpO1xuICAgICAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBJc0NvbXBvbmVudERlZmluaXRpb25SZWZlcmVuY2UgZXh0ZW5kcyBDb25kaXRpb25hbFJlZmVyZW5jZSB7XG4gICAgc3RhdGljIGNyZWF0ZShpbm5lcikge1xuICAgICAgICByZXR1cm4gbmV3IElzQ29tcG9uZW50RGVmaW5pdGlvblJlZmVyZW5jZShpbm5lcik7XG4gICAgfVxuICAgIHRvQm9vbCh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gaXNDb21wb25lbnREZWZpbml0aW9uKHZhbHVlKTtcbiAgICB9XG59XG5jbGFzcyBVcGRhdGVPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gICAgY29uc3RydWN0b3IoY2FjaGUsIGJvdW5kcywgdXBzZXJ0KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuY2FjaGUgPSBjYWNoZTtcbiAgICAgICAgdGhpcy5ib3VuZHMgPSBib3VuZHM7XG4gICAgICAgIHRoaXMudXBzZXJ0ID0gdXBzZXJ0O1xuICAgICAgICB0aGlzLnRhZyA9IGNhY2hlLnRhZztcbiAgICB9XG4gICAgZXZhbHVhdGUodm0pIHtcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5jYWNoZS5yZXZhbGlkYXRlKCk7XG4gICAgICAgIGlmIChpc01vZGlmaWVkKHZhbHVlKSkge1xuICAgICAgICAgICAgbGV0IHsgYm91bmRzLCB1cHNlcnQgfSA9IHRoaXM7XG4gICAgICAgICAgICBsZXQgeyBkb20gfSA9IHZtO1xuICAgICAgICAgICAgaWYgKCF0aGlzLnVwc2VydC51cGRhdGUoZG9tLCB2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBsZXQgY3Vyc29yID0gbmV3IEN1cnNvcihib3VuZHMucGFyZW50RWxlbWVudCgpLCBjbGVhcihib3VuZHMpKTtcbiAgICAgICAgICAgICAgICB1cHNlcnQgPSB0aGlzLnVwc2VydCA9IHRoaXMuaW5zZXJ0KHZtLmVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCksIGN1cnNvciwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYm91bmRzLnVwZGF0ZSh1cHNlcnQuYm91bmRzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIGxldCB7IF9ndWlkOiBndWlkLCB0eXBlLCBjYWNoZSB9ID0gdGhpcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRldGFpbHM6IHsgbGFzdFZhbHVlOiBKU09OLnN0cmluZ2lmeShjYWNoZS5wZWVrKCkpIH0sXG4gICAgICAgICAgICBndWlkLFxuICAgICAgICAgICAgdHlwZVxuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBPcHRpbWl6ZWRDYXV0aW91c0FwcGVuZE9wY29kZSBleHRlbmRzIEFwcGVuZER5bmFtaWNPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLnR5cGUgPSAnb3B0aW1pemVkLWNhdXRpb3VzLWFwcGVuZCc7XG4gICAgfVxuICAgIG5vcm1hbGl6ZShyZWZlcmVuY2UpIHtcbiAgICAgICAgcmV0dXJuIG1hcChyZWZlcmVuY2UsIG5vcm1hbGl6ZVZhbHVlKTtcbiAgICB9XG4gICAgaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gY2F1dGlvdXNJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG4gICAgdXBkYXRlV2l0aChfdm0sIF9yZWZlcmVuY2UsIGNhY2hlLCBib3VuZHMsIHVwc2VydCkge1xuICAgICAgICByZXR1cm4gbmV3IE9wdGltaXplZENhdXRpb3VzVXBkYXRlT3Bjb2RlKGNhY2hlLCBib3VuZHMsIHVwc2VydCk7XG4gICAgfVxufVxuY2xhc3MgT3B0aW1pemVkQ2F1dGlvdXNVcGRhdGVPcGNvZGUgZXh0ZW5kcyBVcGRhdGVPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLnR5cGUgPSAnb3B0aW1pemVkLWNhdXRpb3VzLXVwZGF0ZSc7XG4gICAgfVxuICAgIGluc2VydChkb20sIGN1cnNvciwgdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGNhdXRpb3VzSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIE9wdGltaXplZFRydXN0aW5nQXBwZW5kT3Bjb2RlIGV4dGVuZHMgQXBwZW5kRHluYW1pY09wY29kZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMudHlwZSA9ICdvcHRpbWl6ZWQtdHJ1c3RpbmctYXBwZW5kJztcbiAgICB9XG4gICAgbm9ybWFsaXplKHJlZmVyZW5jZSkge1xuICAgICAgICByZXR1cm4gbWFwKHJlZmVyZW5jZSwgbm9ybWFsaXplVHJ1c3RlZFZhbHVlKTtcbiAgICB9XG4gICAgaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdHJ1c3RpbmdJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG4gICAgdXBkYXRlV2l0aChfdm0sIF9yZWZlcmVuY2UsIGNhY2hlLCBib3VuZHMsIHVwc2VydCkge1xuICAgICAgICByZXR1cm4gbmV3IE9wdGltaXplZFRydXN0aW5nVXBkYXRlT3Bjb2RlKGNhY2hlLCBib3VuZHMsIHVwc2VydCk7XG4gICAgfVxufVxuY2xhc3MgT3B0aW1pemVkVHJ1c3RpbmdVcGRhdGVPcGNvZGUgZXh0ZW5kcyBVcGRhdGVPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLnR5cGUgPSAnb3B0aW1pemVkLXRydXN0aW5nLXVwZGF0ZSc7XG4gICAgfVxuICAgIGluc2VydChkb20sIGN1cnNvciwgdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRydXN0aW5nSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gICAgfVxufSJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2NvbnRlbnQuanMiXSwibmFtZXMiOlsiaXNTYWZlU3RyaW5nIiwiaXNOb2RlIiwiaXNTdHJpbmciLCJjYXV0aW91c0luc2VydCIsInRydXN0aW5nSW5zZXJ0IiwiaXNDb21wb25lbnREZWZpbml0aW9uIiwiVXBkYXRpbmdPcGNvZGUiLCJSZWZlcmVuY2VDYWNoZSIsImlzTW9kaWZpZWQiLCJpc0NvbnN0IiwibWFwIiwiQ3Vyc29yIiwiY2xlYXIiLCJGcmFnbWVudCIsIkNvbmRpdGlvbmFsUmVmZXJlbmNlIiwiQVBQRU5EX09QQ09ERVMiLCJhZGQiLCJ2bSIsImFwcGVuZCIsIm9wMSIsIm9wY29kZSIsImNvbnN0YW50cyIsImdldE90aGVyIiwiZXZhbHVhdGUiLCJpc0VtcHR5IiwidmFsdWUiLCJ1bmRlZmluZWQiLCJub3JtYWxpemVUZXh0VmFsdWUiLCJTdHJpbmciLCJub3JtYWxpemVUcnVzdGVkVmFsdWUiLCJ0b0hUTUwiLCJub3JtYWxpemVWYWx1ZSIsIkFwcGVuZER5bmFtaWNPcGNvZGUiLCJyZWZlcmVuY2UiLCJzdGFjayIsInBvcCIsIm5vcm1hbGl6ZWQiLCJub3JtYWxpemUiLCJjYWNoZSIsInBlZWsiLCJlbGVtZW50cyIsInVwc2VydCIsImluc2VydCIsImVudiIsImdldEFwcGVuZE9wZXJhdGlvbnMiLCJib3VuZHMiLCJuZXdCb3VuZHMiLCJ1cGRhdGVXaXRoIiwiSXNDb21wb25lbnREZWZpbml0aW9uUmVmZXJlbmNlIiwiY3JlYXRlIiwiaW5uZXIiLCJ0b0Jvb2wiLCJVcGRhdGVPcGNvZGUiLCJ0YWciLCJyZXZhbGlkYXRlIiwiZG9tIiwidXBkYXRlIiwiY3Vyc29yIiwicGFyZW50RWxlbWVudCIsInRvSlNPTiIsImd1aWQiLCJfZ3VpZCIsInR5cGUiLCJkZXRhaWxzIiwibGFzdFZhbHVlIiwiSlNPTiIsInN0cmluZ2lmeSIsIk9wdGltaXplZENhdXRpb3VzQXBwZW5kT3Bjb2RlIiwiYXJndW1lbnRzIiwiX3ZtIiwiX3JlZmVyZW5jZSIsIk9wdGltaXplZENhdXRpb3VzVXBkYXRlT3Bjb2RlIiwiT3B0aW1pemVkVHJ1c3RpbmdBcHBlbmRPcGNvZGUiLCJPcHRpbWl6ZWRUcnVzdGluZ1VwZGF0ZU9wY29kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O1FBZU8sQUFBUzs7QUFmaEIsQUFBUyxBQUFjLEFBQVEsQUFBVSxBQUFnQixBQUFzQjs7QUFDL0UsQUFBUyxBQUE2Qjs7QUFDdEMsQUFBUyxBQUFzQjs7QUFDL0IsQUFBUyxBQUFnQixBQUFZLEFBQVMsQUFBVzs7QUFDekQsQUFBUyxBQUFRLEFBQWE7O0FBQzlCLEFBQVMsQUFBZ0I7O0FBQ3pCLEFBQVMsQUFBNEIsQUFDckMsQUFBUyxBQUFzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUMvQix3QkFBQSxBQUFlLElBQWYsQUFBbUIsR0FBbkIsQUFBc0Isc0JBQXNCLFVBQUEsQUFBQyxVQUF3QjtRQUFiLEFBQWEsY0FBbEIsQUFBa0IsQUFDakU7O1FBQUksU0FBUyxHQUFBLEFBQUcsVUFBSCxBQUFhLFNBQTFCLEFBQWEsQUFBc0IsQUFDbkM7V0FBQSxBQUFPLFNBQVAsQUFBZ0IsQUFDbkI7QUFIRDtBQUlBLFNBQUEsQUFBUyxRQUFULEFBQWlCLE9BQU8sQUFDcEI7V0FBTyxVQUFBLEFBQVUsUUFBUSxVQUFsQixBQUE0QixhQUFhLE9BQU8sTUFBUCxBQUFPLEFBQU0sZ0JBQTdELEFBQTZFLEFBQ2hGO0FBQ0Q7QUFBTyw0QkFBQSxBQUE0QixPQUFPLEFBQ3RDO1FBQUksUUFBSixBQUFJLEFBQVEsUUFBUSxBQUNoQjtlQUFBLEFBQU8sQUFDVjtBQUNEO1dBQU8sT0FBUCxBQUFPLEFBQU8sQUFDakI7O0FBQ0QsU0FBQSxBQUFTLHNCQUFULEFBQStCLE9BQU8sQUFDbEM7UUFBSSxRQUFKLEFBQUksQUFBUSxRQUFRLEFBQ2hCO2VBQUEsQUFBTyxBQUNWO0FBQ0Q7UUFBSSxzQkFBSixBQUFJLEFBQVMsUUFBUSxBQUNqQjtlQUFBLEFBQU8sQUFDVjtBQUNEO1FBQUks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Ozs0QyxBQUNELHlCLEFBQU8sSyxBQUFLLFFBQVEsQSxPQUFPLEFBQ3ZCO2VBQU8sNEJBQUEsQUFBZSxLQUFmLEFBQW9CLFFBQTNCLEFBQU8sQUFBNEIsQUFDdEM7QTs7O0VBUHVDLEFBUzVDLEE7O0lBQUEsQUFBYSx5R0FBYjs2Q0FDSTs7NkNBQWM7OEJBQUE7O3NEQUNWLGtDQURVLEFBQ1YsQUFBUyxBQUNUOztlQUFBLEFBQUssT0FGSyxBQUVWLEFBQVk7ZUFDZjtBQUpMOzs0Q0FBQSxBQUtJLCtCQUxKLEFBS2MsV0FBVyxBQUNqQjtlQUFPLHFCQUFBLEFBQUksV0FBWCxBQUFPLEFBQWUsQUFDekI7QUFQTDs7NENBQUEsQUFRSSx5QkFSSixBQVFXLEtBUlgsQUFRZ0IsUUFSaEIsQUFRd0IsT0FBTyxBQUN2QjtlQUFPLDRCQUFBLEFBQWUsS0FBZixBQUFvQixRQUEzQixBQUFPLEFBQTRCLEFBQ3RDO0FBVkw7OzRDQUFBLEFBV0ksaUNBWEosQUFXZSxLQVhmLEFBV29CLFlBWHBCLEFBV2dDLE9BWGhDLEFBV3VDLFFBWHZDLEFBVytDLFFBQVEsQUFDL0M7ZUFBTyxJQUFBLEFBQUksOEJBQUosQUFBa0MsT0FBbEMsQUFBeUMsUUFBaEQsQUFBTyxBQUFpRCxBQUMzRDtBQWJMOztXQUFBO0VBQUEsQUFBbUQ7O0lBZTdDLEE7NkNBQ0Y7OzZDQUFjOzhCQUFBOztzREFDViwyQkFEVSxBQUNWLEFBQVMsQUFDVDs7ZUFBQSxBQUFLLE9BRkssQUFFVixBQUFZO2VBQ2Y7Ozs0QyxBQUNELHlCLEFBQU8sS0FBSyxBLFFBQVEsQSxPQUFPLEFBQ3ZCO2VBQU8sNEJBQUEsQUFBZSxLQUFmLEFBQW9CLFFBQTNCLEFBQU8sQUFBNEIsQUFDdEM7QTs7O0VBUHVDLEEiLCJmaWxlIjoibGliL2NvbXBpbGVkL29wY29kZXMvY29udGVudC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzU2FmZVN0cmluZywgaXNOb2RlLCBpc1N0cmluZywgY2F1dGlvdXNJbnNlcnQsIHRydXN0aW5nSW5zZXJ0IH0gZnJvbSAnLi4vLi4vdXBzZXJ0JztcbmltcG9ydCB7IGlzQ29tcG9uZW50RGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL2NvbXBvbmVudC9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFVwZGF0aW5nT3Bjb2RlIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBSZWZlcmVuY2VDYWNoZSwgaXNNb2RpZmllZCwgaXNDb25zdCwgbWFwIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IEN1cnNvciwgY2xlYXIgfSBmcm9tICcuLi8uLi9ib3VuZHMnO1xuaW1wb3J0IHsgRnJhZ21lbnQgfSBmcm9tICcuLi8uLi9idWlsZGVyJztcbmltcG9ydCB7IENvbmRpdGlvbmFsUmVmZXJlbmNlIH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBBUFBFTkRfT1BDT0RFUyB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuQVBQRU5EX09QQ09ERVMuYWRkKDI1IC8qIER5bmFtaWNDb250ZW50ICovLCAodm0sIHsgb3AxOiBhcHBlbmQgfSkgPT4ge1xuICAgIGxldCBvcGNvZGUgPSB2bS5jb25zdGFudHMuZ2V0T3RoZXIoYXBwZW5kKTtcbiAgICBvcGNvZGUuZXZhbHVhdGUodm0pO1xufSk7XG5mdW5jdGlvbiBpc0VtcHR5KHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIHZhbHVlWyd0b1N0cmluZyddICE9PSAnZnVuY3Rpb24nO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVRleHRWYWx1ZSh2YWx1ZSkge1xuICAgIGlmIChpc0VtcHR5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xufVxuZnVuY3Rpb24gbm9ybWFsaXplVHJ1c3RlZFZhbHVlKHZhbHVlKSB7XG4gICAgaWYgKGlzRW1wdHkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIGlmIChpc1NhZmVTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS50b0hUTUwoKTtcbiAgICB9XG4gICAgaWYgKGlzTm9kZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cbmZ1bmN0aW9uIG5vcm1hbGl6ZVZhbHVlKHZhbHVlKSB7XG4gICAgaWYgKGlzRW1wdHkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIGlmIChpc1NhZmVTdHJpbmcodmFsdWUpIHx8IGlzTm9kZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cbmV4cG9ydCBjbGFzcyBBcHBlbmREeW5hbWljT3Bjb2RlIHtcbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICBsZXQgcmVmZXJlbmNlID0gdm0uc3RhY2sucG9wKCk7XG4gICAgICAgIGxldCBub3JtYWxpemVkID0gdGhpcy5ub3JtYWxpemUocmVmZXJlbmNlKTtcbiAgICAgICAgbGV0IHZhbHVlLCBjYWNoZTtcbiAgICAgICAgaWYgKGlzQ29uc3QocmVmZXJlbmNlKSkge1xuICAgICAgICAgICAgdmFsdWUgPSBub3JtYWxpemVkLnZhbHVlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjYWNoZSA9IG5ldyBSZWZlcmVuY2VDYWNoZShub3JtYWxpemVkKTtcbiAgICAgICAgICAgIHZhbHVlID0gY2FjaGUucGVlaygpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBzdGFjayA9IHZtLmVsZW1lbnRzKCk7XG4gICAgICAgIGxldCB1cHNlcnQgPSB0aGlzLmluc2VydCh2bS5lbnYuZ2V0QXBwZW5kT3BlcmF0aW9ucygpLCBzdGFjaywgdmFsdWUpO1xuICAgICAgICBsZXQgYm91bmRzID0gbmV3IEZyYWdtZW50KHVwc2VydC5ib3VuZHMpO1xuICAgICAgICBzdGFjay5uZXdCb3VuZHMoYm91bmRzKTtcbiAgICAgICAgaWYgKGNhY2hlIC8qIGkuZS4gIWlzQ29uc3QocmVmZXJlbmNlKSAqLykge1xuICAgICAgICAgICAgICAgIHZtLnVwZGF0ZVdpdGgodGhpcy51cGRhdGVXaXRoKHZtLCByZWZlcmVuY2UsIGNhY2hlLCBib3VuZHMsIHVwc2VydCkpO1xuICAgICAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBJc0NvbXBvbmVudERlZmluaXRpb25SZWZlcmVuY2UgZXh0ZW5kcyBDb25kaXRpb25hbFJlZmVyZW5jZSB7XG4gICAgc3RhdGljIGNyZWF0ZShpbm5lcikge1xuICAgICAgICByZXR1cm4gbmV3IElzQ29tcG9uZW50RGVmaW5pdGlvblJlZmVyZW5jZShpbm5lcik7XG4gICAgfVxuICAgIHRvQm9vbCh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gaXNDb21wb25lbnREZWZpbml0aW9uKHZhbHVlKTtcbiAgICB9XG59XG5jbGFzcyBVcGRhdGVPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gICAgY29uc3RydWN0b3IoY2FjaGUsIGJvdW5kcywgdXBzZXJ0KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuY2FjaGUgPSBjYWNoZTtcbiAgICAgICAgdGhpcy5ib3VuZHMgPSBib3VuZHM7XG4gICAgICAgIHRoaXMudXBzZXJ0ID0gdXBzZXJ0O1xuICAgICAgICB0aGlzLnRhZyA9IGNhY2hlLnRhZztcbiAgICB9XG4gICAgZXZhbHVhdGUodm0pIHtcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5jYWNoZS5yZXZhbGlkYXRlKCk7XG4gICAgICAgIGlmIChpc01vZGlmaWVkKHZhbHVlKSkge1xuICAgICAgICAgICAgbGV0IHsgYm91bmRzLCB1cHNlcnQgfSA9IHRoaXM7XG4gICAgICAgICAgICBsZXQgeyBkb20gfSA9IHZtO1xuICAgICAgICAgICAgaWYgKCF0aGlzLnVwc2VydC51cGRhdGUoZG9tLCB2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBsZXQgY3Vyc29yID0gbmV3IEN1cnNvcihib3VuZHMucGFyZW50RWxlbWVudCgpLCBjbGVhcihib3VuZHMpKTtcbiAgICAgICAgICAgICAgICB1cHNlcnQgPSB0aGlzLnVwc2VydCA9IHRoaXMuaW5zZXJ0KHZtLmVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCksIGN1cnNvciwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYm91bmRzLnVwZGF0ZSh1cHNlcnQuYm91bmRzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIGxldCB7IF9ndWlkOiBndWlkLCB0eXBlLCBjYWNoZSB9ID0gdGhpcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGd1aWQsXG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgZGV0YWlsczogeyBsYXN0VmFsdWU6IEpTT04uc3RyaW5naWZ5KGNhY2hlLnBlZWsoKSkgfVxuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBPcHRpbWl6ZWRDYXV0aW91c0FwcGVuZE9wY29kZSBleHRlbmRzIEFwcGVuZER5bmFtaWNPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLnR5cGUgPSAnb3B0aW1pemVkLWNhdXRpb3VzLWFwcGVuZCc7XG4gICAgfVxuICAgIG5vcm1hbGl6ZShyZWZlcmVuY2UpIHtcbiAgICAgICAgcmV0dXJuIG1hcChyZWZlcmVuY2UsIG5vcm1hbGl6ZVZhbHVlKTtcbiAgICB9XG4gICAgaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gY2F1dGlvdXNJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG4gICAgdXBkYXRlV2l0aChfdm0sIF9yZWZlcmVuY2UsIGNhY2hlLCBib3VuZHMsIHVwc2VydCkge1xuICAgICAgICByZXR1cm4gbmV3IE9wdGltaXplZENhdXRpb3VzVXBkYXRlT3Bjb2RlKGNhY2hlLCBib3VuZHMsIHVwc2VydCk7XG4gICAgfVxufVxuY2xhc3MgT3B0aW1pemVkQ2F1dGlvdXNVcGRhdGVPcGNvZGUgZXh0ZW5kcyBVcGRhdGVPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLnR5cGUgPSAnb3B0aW1pemVkLWNhdXRpb3VzLXVwZGF0ZSc7XG4gICAgfVxuICAgIGluc2VydChkb20sIGN1cnNvciwgdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGNhdXRpb3VzSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIE9wdGltaXplZFRydXN0aW5nQXBwZW5kT3Bjb2RlIGV4dGVuZHMgQXBwZW5kRHluYW1pY09wY29kZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMudHlwZSA9ICdvcHRpbWl6ZWQtdHJ1c3RpbmctYXBwZW5kJztcbiAgICB9XG4gICAgbm9ybWFsaXplKHJlZmVyZW5jZSkge1xuICAgICAgICByZXR1cm4gbWFwKHJlZmVyZW5jZSwgbm9ybWFsaXplVHJ1c3RlZFZhbHVlKTtcbiAgICB9XG4gICAgaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdHJ1c3RpbmdJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG4gICAgdXBkYXRlV2l0aChfdm0sIF9yZWZlcmVuY2UsIGNhY2hlLCBib3VuZHMsIHVwc2VydCkge1xuICAgICAgICByZXR1cm4gbmV3IE9wdGltaXplZFRydXN0aW5nVXBkYXRlT3Bjb2RlKGNhY2hlLCBib3VuZHMsIHVwc2VydCk7XG4gICAgfVxufVxuY2xhc3MgT3B0aW1pemVkVHJ1c3RpbmdVcGRhdGVPcGNvZGUgZXh0ZW5kcyBVcGRhdGVPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLnR5cGUgPSAnb3B0aW1pemVkLXRydXN0aW5nLXVwZGF0ZSc7XG4gICAgfVxuICAgIGluc2VydChkb20sIGN1cnNvciwgdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRydXN0aW5nSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gICAgfVxufSJdfQ==

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

var _opcodes = require('../../opcodes');
var _util = require('@glimmer/util');
var _opcodes = require('../../opcodes');
function _classCallCheck(instance, Constructor) {

@@ -39,2 +39,4 @@ if (!(instance instanceof Constructor)) {

function ScopeInspector(scope, symbols, evalInfo) {
var _this = this;
_classCallCheck(this, ScopeInspector);

@@ -44,8 +46,7 @@

this.locals = (0, _util.dict)();
for (var i = 0; i < evalInfo.length; i++) {
var slot = evalInfo[i];
evalInfo.forEach(function (slot) {
var name = symbols[slot - 1];
var ref = scope.getSymbol(slot);
this.locals[name] = ref;
}
_this.locals[name] = ref;
});
}

@@ -75,4 +76,4 @@

}
return tail.reduce(function (r, part) {
return r.get(part);
return tail.reduce(function (ref, part) {
return ref.get(part);
}, ref);

@@ -95,2 +96,2 @@ };

});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2RlYnVnZ2VyLmpzIl0sIm5hbWVzIjpbImRpY3QiLCJBUFBFTkRfT1BDT0RFUyIsImRlYnVnQ2FsbGJhY2siLCJjb250ZXh0IiwiZ2V0IiwiY29uc29sZSIsImluZm8iLCJjYWxsYmFjayIsInNldERlYnVnZ2VyQ2FsbGJhY2siLCJjYiIsInJlc2V0RGVidWdnZXJDYWxsYmFjayIsIlNjb3BlSW5zcGVjdG9yIiwic2NvcGUiLCJzeW1ib2xzIiwiZXZhbEluZm8iLCJsb2NhbHMiLCJpIiwibGVuZ3RoIiwic2xvdCIsIm5hbWUiLCJyZWYiLCJnZXRTeW1ib2wiLCJwYXRoIiwicGFydHMiLCJzcGxpdCIsImhlYWQiLCJ0YWlsIiwiZXZhbFNjb3BlIiwiZ2V0RXZhbFNjb3BlIiwiZ2V0U2VsZiIsImluZGV4T2YiLCJyZWR1Y2UiLCJyIiwicGFydCIsImFkZCIsInZtIiwiX3N5bWJvbHMiLCJvcDEiLCJfZXZhbEluZm8iLCJvcDIiLCJjb25zdGFudHMiLCJnZXRPdGhlciIsImdldEFycmF5IiwiaW5zcGVjdG9yIiwidmFsdWUiXSwibWFwcGluZ3MiOiI7Ozs7O1FBWU8sQUFBUztRQUdULEFBQVM7O0FBZmhCLEFBQVMsQUFBWTs7QUFDckIsQUFBUyxBQUFzQjs7Ozs7Ozs7QUFDL0I7QUFDQSxTQUFBLEFBQVMsY0FBVCxBQUF1QixTQUF2QixBQUFnQyxLQUFLLEFBQ2pDO1lBQUEsQUFBUSxLQUFSLEFBQWEsQUFDYjtBQUNBO2dCQUFZLElBQVosQUFBWSxBQUFJLEFBQ2hCO0FBQ0g7O0FBQ0Q7QUFDQSxJQUFJLFdBQUosQUFBZTtBQUNmLEFBQ0E7QUFBTyw2QkFBQSxBQUE2QixJQUFJLEFBQ3BDO2VBQUEsQUFBVyxBQUNkO0FBQ0Q7QUFBTyxpQ0FBaUMsQUFDcEM7ZUFBQSxBQUFXLEFBQ2Q7OztJLEFBQ0ssNkJBQ0Y7NEJBQUEsQUFBWSxPQUFaLEFBQW1CLFNBQW5CLEFBQTRCLFVBQVU7OEJBQ2xDOzthQUFBLEFBQUssUUFBTCxBQUFhLEFBQ2I7YUFBQSxBQUFLLFNBQUwsQUFBYyxBQUNkO2FBQUssSUFBSSxJQUFULEFBQWEsR0FBRyxJQUFJLFNBQXBCLEFBQTZCLFFBQTdCLEFBQXFDLEtBQUssQUFDdEM7Z0JBQUksT0FBTyxTQUFYLEFBQVcsQUFBUyxBQUNwQjtnQkFBSSxPQUFPLFFBQVEsT0FBbkIsQUFBVyxBQUFlLEFBQzFCO2dCQUFJLE1BQU0sTUFBQSxBQUFNLFVBQWhCLEFBQVUsQUFBZ0IsQUFDMUI7aUJBQUEsQUFBSyxPQUFMLEFBQVksUUFBWixBQUFvQixBQUN2QjtBQUNKOzs7NkJBQ0QsQSxtQkFBSSxBLE1BQU07WUFBQSxBQUNBLFFBREEsQUFDa0IsS0FEbEIsQUFDQTtZQURBLEFBQ08sU0FEUCxBQUNrQixLQURsQixBQUNPLEFBQ2I7O1lBQUksUUFBUSxLQUFBLEFBQUssTUFGWCxBQUVOLEFBQVksQUFBVzs7MEJBQ0QsS0FBQSxBQUFLLE1BSHJCLEFBR2dCLEFBQVc7WUFIM0IsQUFHRCxtQkFIQztZQUFBLEFBR1EseUJBQ2Q7O1lBQUksWUFBWSxNQUFoQixBQUFnQixBQUFNLEFBQ3RCO1lBQUksV0FBSixBQUNBO1lBQUksU0FBSixBQUFhLFFBQVEsQUFDakI7a0JBQU0sTUFBTixBQUFNLEFBQU0sQUFDZjtBQUZELG1CQUVXLE9BQUosQUFBSSxBQUFPLE9BQU8sQUFDckI7a0JBQU0sT0FBTixBQUFNLEFBQU8sQUFDaEI7QUFGTSxTQUFBLFVBRUksS0FBQSxBQUFLLFFBQUwsQUFBYSxTQUFiLEFBQXNCLEtBQUssVUFBL0IsQUFBK0IsQUFBVSxPQUFPLEFBQ25EO2tCQUFNLFVBQU4sQUFBTSxBQUFVLEFBQ25CO0FBRk0sU0FBQSxNQUVBLEFBQ0g7a0JBQU0sS0FBQSxBQUFLLE1BQVgsQUFBTSxBQUFXLEFBQ2pCO21CQUFBLEFBQU8sQUFDVjtBQUNEO29CQUFPLEFBQUssT0FBTyxVQUFBLEFBQUMsR0FBRCxBQUFJLE1BQUo7bUJBQWEsRUFBQSxBQUFFLElBQWYsQUFBYSxBQUFNO0FBQS9CLFNBQUEsRUFBUCxBQUFPLEFBQXNDLEFBQ2hEO0E7Ozs7O0FBRUwsd0JBQUEsQUFBZSxJQUFmLEFBQW1CLEdBQW5CLEFBQXNCLGdCQUFnQixVQUFBLEFBQUMsVUFBMEM7UUFBL0IsQUFBK0IsZ0JBQXBDLEFBQW9DO1FBQWhCLEFBQWdCLGlCQUFyQixBQUFxQixBQUM3RTs7UUFBSSxVQUFVLEdBQUEsQUFBRyxVQUFILEFBQWEsU0FBM0IsQUFBYyxBQUFzQixBQUNwQztRQUFJLFdBQVcsR0FBQSxBQUFHLFVBQUgsQUFBYSxTQUE1QixBQUFlLEFBQXNCLEFBQ3JDO1FBQUksWUFBWSxJQUFBLEFBQUksZUFBZSxHQUFuQixBQUFtQixBQUFHLFNBQXRCLEFBQStCLFNBQS9DLEFBQWdCLEFBQXdDLEFBQ3hEO2FBQVMsR0FBQSxBQUFHLFVBQVosQUFBUyxBQUFhLFNBQVMsZ0JBQUE7ZUFBUSxVQUFBLEFBQVUsSUFBVixBQUFjLE1BQXRCLEFBQVEsQUFBb0I7QUFBM0QsQUFDSDtBQUxEIiwiZmlsZSI6ImxpYi9jb21waWxlZC9vcGNvZGVzL2RlYnVnZ2VyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGljdCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgQVBQRU5EX09QQ09ERVMgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbi8qIHRzbGludDpkaXNhYmxlICovXG5mdW5jdGlvbiBkZWJ1Z0NhbGxiYWNrKGNvbnRleHQsIGdldCkge1xuICAgIGNvbnNvbGUuaW5mbygnVXNlIGBjb250ZXh0YCwgYW5kIGBnZXQoPHBhdGg+KWAgdG8gZGVidWcgdGhpcyB0ZW1wbGF0ZS4nKTtcbiAgICAvLyBmb3IgZXhhbXBsZS4uLlxuICAgIGNvbnRleHQgPT09IGdldCgndGhpcycpO1xuICAgIGRlYnVnZ2VyO1xufVxuLyogdHNsaW50OmVuYWJsZSAqL1xubGV0IGNhbGxiYWNrID0gZGVidWdDYWxsYmFjaztcbi8vIEZvciB0ZXN0aW5nIHB1cnBvc2VzXG5leHBvcnQgZnVuY3Rpb24gc2V0RGVidWdnZXJDYWxsYmFjayhjYikge1xuICAgIGNhbGxiYWNrID0gY2I7XG59XG5leHBvcnQgZnVuY3Rpb24gcmVzZXREZWJ1Z2dlckNhbGxiYWNrKCkge1xuICAgIGNhbGxiYWNrID0gZGVidWdDYWxsYmFjaztcbn1cbmNsYXNzIFNjb3BlSW5zcGVjdG9yIHtcbiAgICBjb25zdHJ1Y3RvcihzY29wZSwgc3ltYm9scywgZXZhbEluZm8pIHtcbiAgICAgICAgdGhpcy5zY29wZSA9IHNjb3BlO1xuICAgICAgICB0aGlzLmxvY2FscyA9IGRpY3QoKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBldmFsSW5mby5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IHNsb3QgPSBldmFsSW5mb1tpXTtcbiAgICAgICAgICAgIGxldCBuYW1lID0gc3ltYm9sc1tzbG90IC0gMV07XG4gICAgICAgICAgICBsZXQgcmVmID0gc2NvcGUuZ2V0U3ltYm9sKHNsb3QpO1xuICAgICAgICAgICAgdGhpcy5sb2NhbHNbbmFtZV0gPSByZWY7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0KHBhdGgpIHtcbiAgICAgICAgbGV0IHsgc2NvcGUsIGxvY2FscyB9ID0gdGhpcztcbiAgICAgICAgbGV0IHBhcnRzID0gcGF0aC5zcGxpdCgnLicpO1xuICAgICAgICBsZXQgW2hlYWQsIC4uLnRhaWxdID0gcGF0aC5zcGxpdCgnLicpO1xuICAgICAgICBsZXQgZXZhbFNjb3BlID0gc2NvcGUuZ2V0RXZhbFNjb3BlKCk7XG4gICAgICAgIGxldCByZWY7XG4gICAgICAgIGlmIChoZWFkID09PSAndGhpcycpIHtcbiAgICAgICAgICAgIHJlZiA9IHNjb3BlLmdldFNlbGYoKTtcbiAgICAgICAgfSBlbHNlIGlmIChsb2NhbHNbaGVhZF0pIHtcbiAgICAgICAgICAgIHJlZiA9IGxvY2Fsc1toZWFkXTtcbiAgICAgICAgfSBlbHNlIGlmIChoZWFkLmluZGV4T2YoJ0AnKSA9PT0gMCAmJiBldmFsU2NvcGVbaGVhZF0pIHtcbiAgICAgICAgICAgIHJlZiA9IGV2YWxTY29wZVtoZWFkXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlZiA9IHRoaXMuc2NvcGUuZ2V0U2VsZigpO1xuICAgICAgICAgICAgdGFpbCA9IHBhcnRzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0YWlsLnJlZHVjZSgociwgcGFydCkgPT4gci5nZXQocGFydCksIHJlZik7XG4gICAgfVxufVxuQVBQRU5EX09QQ09ERVMuYWRkKDcxIC8qIERlYnVnZ2VyICovLCAodm0sIHsgb3AxOiBfc3ltYm9scywgb3AyOiBfZXZhbEluZm8gfSkgPT4ge1xuICAgIGxldCBzeW1ib2xzID0gdm0uY29uc3RhbnRzLmdldE90aGVyKF9zeW1ib2xzKTtcbiAgICBsZXQgZXZhbEluZm8gPSB2bS5jb25zdGFudHMuZ2V0QXJyYXkoX2V2YWxJbmZvKTtcbiAgICBsZXQgaW5zcGVjdG9yID0gbmV3IFNjb3BlSW5zcGVjdG9yKHZtLnNjb3BlKCksIHN5bWJvbHMsIGV2YWxJbmZvKTtcbiAgICBjYWxsYmFjayh2bS5nZXRTZWxmKCkudmFsdWUoKSwgcGF0aCA9PiBpbnNwZWN0b3IuZ2V0KHBhdGgpLnZhbHVlKCkpO1xufSk7Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2RlYnVnZ2VyLmpzIl0sIm5hbWVzIjpbIkFQUEVORF9PUENPREVTIiwiZGljdCIsImRlYnVnQ2FsbGJhY2siLCJjb250ZXh0IiwiZ2V0IiwiY29uc29sZSIsImluZm8iLCJjYWxsYmFjayIsInNldERlYnVnZ2VyQ2FsbGJhY2siLCJjYiIsInJlc2V0RGVidWdnZXJDYWxsYmFjayIsIlNjb3BlSW5zcGVjdG9yIiwic2NvcGUiLCJzeW1ib2xzIiwiZXZhbEluZm8iLCJsb2NhbHMiLCJmb3JFYWNoIiwibmFtZSIsInNsb3QiLCJyZWYiLCJnZXRTeW1ib2wiLCJwYXRoIiwicGFydHMiLCJzcGxpdCIsImhlYWQiLCJ0YWlsIiwiZXZhbFNjb3BlIiwiZ2V0RXZhbFNjb3BlIiwiZ2V0U2VsZiIsImluZGV4T2YiLCJyZWR1Y2UiLCJwYXJ0IiwiYWRkIiwidm0iLCJfc3ltYm9scyIsIm9wMSIsIl9ldmFsSW5mbyIsIm9wMiIsImNvbnN0YW50cyIsImdldE90aGVyIiwiZ2V0QXJyYXkiLCJpbnNwZWN0b3IiLCJ2YWx1ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7UUFZTyxBQUFTO1FBR1QsQUFBUzs7QUFmaEIsQUFBUyxBQUFzQjs7QUFDL0IsQUFBUyxBQUFZOzs7Ozs7OztBQUNyQjtBQUNBLFNBQUEsQUFBUyxjQUFULEFBQXVCLFNBQXZCLEFBQWdDLEtBQUssQUFDakM7WUFBQSxBQUFRLEtBQVIsQUFBYSxBQUNiO0FBQ0E7Z0JBQVksSUFBWixBQUFZLEFBQUksQUFDaEI7QUFDSDs7QUFDRDtBQUNBLElBQUksV0FBSixBQUFlO0FBQ2YsQUFDQTtBQUFPLDZCQUFBLEFBQTZCLElBQUksQUFDcEM7ZUFBQSxBQUFXLEFBQ2Q7QUFDRDtBQUFPLGlDQUFpQyxBQUNwQztlQUFBLEFBQVcsQUFDZDs7O0ksQUFDSyw2QkFDRjs0QkFBQSxBQUFZLE9BQVosQUFBbUIsU0FBbkIsQUFBNEIsVUFBVTtvQkFBQTs7OEJBQ2xDOzthQUFBLEFBQUssUUFBTCxBQUFhLEFBQ2I7YUFBQSxBQUFLLFNBQUwsQUFBYyxBQUNkO2lCQUFBLEFBQVMsUUFBUSxnQkFBUSxBQUNyQjtnQkFBSSxPQUFPLFFBQVEsT0FBbkIsQUFBVyxBQUFlLEFBQzFCO2dCQUFJLE1BQU0sTUFBQSxBQUFNLFVBQWhCLEFBQVUsQUFBZ0IsQUFDMUI7a0JBQUEsQUFBSyxPQUFMLEFBQVksUUFBWixBQUFvQixBQUN2QjtBQUpELEFBS0g7Ozs2QkFDRCxBLG1CQUFJLEEsTUFBTTtZQUFBLEFBQ0EsUUFEQSxBQUNrQixLQURsQixBQUNBO1lBREEsQUFDTyxTQURQLEFBQ2tCLEtBRGxCLEFBQ08sQUFDYjs7WUFBSSxRQUFRLEtBQUEsQUFBSyxNQUZYLEFBRU4sQUFBWSxBQUFXOzswQkFDRCxLQUFBLEFBQUssTUFIckIsQUFHZ0IsQUFBVztZQUgzQixBQUdELG1CQUhDO1lBQUEsQUFHUSx5QkFDZDs7WUFBSSxZQUFZLE1BQWhCLEFBQWdCLEFBQU0sQUFDdEI7WUFBSSxXQUFKLEFBQ0E7WUFBSSxTQUFKLEFBQWEsUUFBUSxBQUNqQjtrQkFBTSxNQUFOLEFBQU0sQUFBTSxBQUNmO0FBRkQsbUJBRVcsT0FBSixBQUFJLEFBQU8sT0FBTyxBQUNyQjtrQkFBTSxPQUFOLEFBQU0sQUFBTyxBQUNoQjtBQUZNLFNBQUEsVUFFSSxLQUFBLEFBQUssUUFBTCxBQUFhLFNBQWIsQUFBc0IsS0FBSyxVQUEvQixBQUErQixBQUFVLE9BQU8sQUFDbkQ7a0JBQU0sVUFBTixBQUFNLEFBQVUsQUFDbkI7QUFGTSxTQUFBLE1BRUEsQUFDSDtrQkFBTSxLQUFBLEFBQUssTUFBWCxBQUFNLEFBQVcsQUFDakI7bUJBQUEsQUFBTyxBQUNWO0FBQ0Q7b0JBQU8sQUFBSyxPQUFPLFVBQUEsQUFBQyxLQUFELEFBQU0sTUFBTjttQkFBZSxJQUFBLEFBQUksSUFBbkIsQUFBZSxBQUFRO0FBQW5DLFNBQUEsRUFBUCxBQUFPLEFBQTBDLEFBQ3BEO0E7Ozs7O0FBRUwsd0JBQUEsQUFBZSxJQUFmLEFBQW1CLEdBQW5CLEFBQXNCLGdCQUFnQixVQUFBLEFBQUMsVUFBMEM7UUFBL0IsQUFBK0IsZ0JBQXBDLEFBQW9DO1FBQWhCLEFBQWdCLGlCQUFyQixBQUFxQixBQUM3RTs7UUFBSSxVQUFVLEdBQUEsQUFBRyxVQUFILEFBQWEsU0FBM0IsQUFBYyxBQUFzQixBQUNwQztRQUFJLFdBQVcsR0FBQSxBQUFHLFVBQUgsQUFBYSxTQUE1QixBQUFlLEFBQXNCLEFBQ3JDO1FBQUksWUFBWSxJQUFBLEFBQUksZUFBZSxHQUFuQixBQUFtQixBQUFHLFNBQXRCLEFBQStCLFNBQS9DLEFBQWdCLEFBQXdDLEFBQ3hEO2FBQVMsR0FBQSxBQUFHLFVBQVosQUFBUyxBQUFhLFNBQVMsZ0JBQUE7ZUFBUSxVQUFBLEFBQVUsSUFBVixBQUFjLE1BQXRCLEFBQVEsQUFBb0I7QUFBM0QsQUFDSDtBQUxEIiwiZmlsZSI6ImxpYi9jb21waWxlZC9vcGNvZGVzL2RlYnVnZ2VyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVBQRU5EX09QQ09ERVMgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IGRpY3QgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbi8qIHRzbGludDpkaXNhYmxlICovXG5mdW5jdGlvbiBkZWJ1Z0NhbGxiYWNrKGNvbnRleHQsIGdldCkge1xuICAgIGNvbnNvbGUuaW5mbygnVXNlIGBjb250ZXh0YCwgYW5kIGBnZXQoPHBhdGg+KWAgdG8gZGVidWcgdGhpcyB0ZW1wbGF0ZS4nKTtcbiAgICAvLyBmb3IgZXhhbXBsZS4uLlxuICAgIGNvbnRleHQgPT09IGdldCgndGhpcycpO1xuICAgIGRlYnVnZ2VyO1xufVxuLyogdHNsaW50OmVuYWJsZSAqL1xubGV0IGNhbGxiYWNrID0gZGVidWdDYWxsYmFjaztcbi8vIEZvciB0ZXN0aW5nIHB1cnBvc2VzXG5leHBvcnQgZnVuY3Rpb24gc2V0RGVidWdnZXJDYWxsYmFjayhjYikge1xuICAgIGNhbGxiYWNrID0gY2I7XG59XG5leHBvcnQgZnVuY3Rpb24gcmVzZXREZWJ1Z2dlckNhbGxiYWNrKCkge1xuICAgIGNhbGxiYWNrID0gZGVidWdDYWxsYmFjaztcbn1cbmNsYXNzIFNjb3BlSW5zcGVjdG9yIHtcbiAgICBjb25zdHJ1Y3RvcihzY29wZSwgc3ltYm9scywgZXZhbEluZm8pIHtcbiAgICAgICAgdGhpcy5zY29wZSA9IHNjb3BlO1xuICAgICAgICB0aGlzLmxvY2FscyA9IGRpY3QoKTtcbiAgICAgICAgZXZhbEluZm8uZm9yRWFjaChzbG90ID0+IHtcbiAgICAgICAgICAgIGxldCBuYW1lID0gc3ltYm9sc1tzbG90IC0gMV07XG4gICAgICAgICAgICBsZXQgcmVmID0gc2NvcGUuZ2V0U3ltYm9sKHNsb3QpO1xuICAgICAgICAgICAgdGhpcy5sb2NhbHNbbmFtZV0gPSByZWY7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBnZXQocGF0aCkge1xuICAgICAgICBsZXQgeyBzY29wZSwgbG9jYWxzIH0gPSB0aGlzO1xuICAgICAgICBsZXQgcGFydHMgPSBwYXRoLnNwbGl0KCcuJyk7XG4gICAgICAgIGxldCBbaGVhZCwgLi4udGFpbF0gPSBwYXRoLnNwbGl0KCcuJyk7XG4gICAgICAgIGxldCBldmFsU2NvcGUgPSBzY29wZS5nZXRFdmFsU2NvcGUoKTtcbiAgICAgICAgbGV0IHJlZjtcbiAgICAgICAgaWYgKGhlYWQgPT09ICd0aGlzJykge1xuICAgICAgICAgICAgcmVmID0gc2NvcGUuZ2V0U2VsZigpO1xuICAgICAgICB9IGVsc2UgaWYgKGxvY2Fsc1toZWFkXSkge1xuICAgICAgICAgICAgcmVmID0gbG9jYWxzW2hlYWRdO1xuICAgICAgICB9IGVsc2UgaWYgKGhlYWQuaW5kZXhPZignQCcpID09PSAwICYmIGV2YWxTY29wZVtoZWFkXSkge1xuICAgICAgICAgICAgcmVmID0gZXZhbFNjb3BlW2hlYWRdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVmID0gdGhpcy5zY29wZS5nZXRTZWxmKCk7XG4gICAgICAgICAgICB0YWlsID0gcGFydHM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRhaWwucmVkdWNlKChyZWYsIHBhcnQpID0+IHJlZi5nZXQocGFydCksIHJlZik7XG4gICAgfVxufVxuQVBQRU5EX09QQ09ERVMuYWRkKDcxIC8qIERlYnVnZ2VyICovLCAodm0sIHsgb3AxOiBfc3ltYm9scywgb3AyOiBfZXZhbEluZm8gfSkgPT4ge1xuICAgIGxldCBzeW1ib2xzID0gdm0uY29uc3RhbnRzLmdldE90aGVyKF9zeW1ib2xzKTtcbiAgICBsZXQgZXZhbEluZm8gPSB2bS5jb25zdGFudHMuZ2V0QXJyYXkoX2V2YWxJbmZvKTtcbiAgICBsZXQgaW5zcGVjdG9yID0gbmV3IFNjb3BlSW5zcGVjdG9yKHZtLnNjb3BlKCksIHN5bWJvbHMsIGV2YWxJbmZvKTtcbiAgICBjYWxsYmFjayh2bS5nZXRTZWxmKCkudmFsdWUoKSwgcGF0aCA9PiBpbnNwZWN0b3IuZ2V0KHBhdGgpLnZhbHVlKCkpO1xufSk7Il19

@@ -8,6 +8,6 @@ "use strict";

var _opcodes = require("../../opcodes");
var _reference = require("@glimmer/reference");
var _opcodes = require("../../opcodes");
var _references = require("../../references");

@@ -379,3 +379,3 @@

_this2.modifier = modifier;
_this2.type = 'update-modifier';
_this2.type = "update-modifier";
_this2.lastUpdated = tag.value();

@@ -473,6 +473,6 @@ return _this2;

element: formattedElement,
lastValue: lastValue,
type: 'attribute',
namespace: namespace,
name: name,
namespace: namespace,
type: 'attribute'
lastValue: lastValue
};

@@ -482,6 +482,6 @@ }

element: formattedElement,
lastValue: lastValue,
type: 'attribute',
namespace: namespace === undefined ? null : namespace,
name: name,
namespace: namespace === undefined ? null : namespace,
type: 'attribute'
lastValue: lastValue
};

@@ -521,3 +521,3 @@ };

_this3.type = 'patch-element';
_this3.type = "patch-element";
_this3.tag = operation.tag;

@@ -538,5 +538,5 @@ _this3.operation = operation;

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

@@ -547,2 +547,2 @@ };

}(_opcodes.UpdatingOpcode);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2RvbS5qcyJdLCJuYW1lcyI6WyJDYWNoZWRSZWZlcmVuY2UiLCJjb21iaW5lVGFnZ2VkIiwiaXNDb25zdCIsImlzQ29uc3RSZWZlcmVuY2UiLCJpc01vZGlmaWVkIiwiUmVmZXJlbmNlQ2FjaGUiLCJBUFBFTkRfT1BDT0RFUyIsIlVwZGF0aW5nT3Bjb2RlIiwiTlVMTF9SRUZFUkVOQ0UiLCJQcmltaXRpdmVSZWZlcmVuY2UiLCJBc3NlcnQiLCJhZGQiLCJ2bSIsInRleHQiLCJvcDEiLCJlbGVtZW50cyIsImFwcGVuZFRleHQiLCJjb25zdGFudHMiLCJnZXRTdHJpbmciLCJhcHBlbmRDb21tZW50IiwidGFnIiwib3BlbkVsZW1lbnQiLCJ0YWdOYW1lIiwib3BlcmF0aW9ucyIsInN0YWNrIiwicG9wIiwidmFsdWUiLCJlbGVtZW50UmVmIiwibmV4dFNpYmxpbmdSZWYiLCJlbGVtZW50IiwibmV4dFNpYmxpbmciLCJjYWNoZSIsInBlZWsiLCJ1cGRhdGVXaXRoIiwicHVzaFJlbW90ZUVsZW1lbnQiLCJwb3BSZW1vdGVFbGVtZW50IiwiQ2xhc3NMaXN0IiwibGlzdCIsImFwcGVuZCIsInJlZmVyZW5jZSIsInB1c2giLCJ0b1JlZmVyZW5jZSIsImNyZWF0ZSIsInRvQ2xhc3NOYW1lIiwiQ2xhc3NMaXN0UmVmZXJlbmNlIiwiY29tcHV0ZSIsInJldCIsImkiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJqb2luIiwiU2ltcGxlRWxlbWVudE9wZXJhdGlvbnMiLCJlbnYiLCJvcGNvZGVzIiwiY2xhc3NMaXN0IiwiYWRkU3RhdGljQXR0cmlidXRlIiwibmFtZSIsImFkZENsYXNzIiwiZ2V0QXBwZW5kT3BlcmF0aW9ucyIsInNldEF0dHJpYnV0ZSIsImFkZFN0YXRpY0F0dHJpYnV0ZU5TIiwibmFtZXNwYWNlIiwiYWRkRHluYW1pY0F0dHJpYnV0ZSIsImlzVHJ1c3RpbmciLCJhdHRyaWJ1dGVNYW5hZ2VyIiwiYXR0cmlidXRlRm9yIiwiYXR0cmlidXRlIiwiRHluYW1pY0F0dHJpYnV0ZSIsImFkZEF0dHJpYnV0ZSIsImFkZER5bmFtaWNBdHRyaWJ1dGVOUyIsIm5zQXR0cmlidXRlIiwiZmx1c2giLCJvcGNvZGUiLCJDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyIsImF0dHJpYnV0ZU5hbWVzIiwiYXR0cmlidXRlcyIsInNob3VsZEFkZEF0dHJpYnV0ZSIsIlN0YXRpY0F0dHJpYnV0ZSIsImluZGV4T2YiLCJhY3Rpb24iLCJleHBlY3RPcGVyYXRpb25zIiwiZXhwZWN0Q29uc3RydWN0aW5nIiwiZmx1c2hFbGVtZW50IiwiY2xvc2VFbGVtZW50IiwiX25hbWUiLCJfdmFsdWUiLCJvcDIiLCJfbmFtZXNwYWNlIiwib3AzIiwic2V0U3RhdGljQXR0cmlidXRlTlMiLCJzZXRTdGF0aWNBdHRyaWJ1dGUiLCJfbWFuYWdlciIsIm1hbmFnZXIiLCJnZXRPdGhlciIsImFyZ3MiLCJjb25zdHJ1Y3RpbmciLCJ1cGRhdGVPcGVyYXRpb25zIiwiZHluYW1pY1Njb3BlIiwibW9kaWZpZXIiLCJjbGVhciIsInNjaGVkdWxlSW5zdGFsbE1vZGlmaWVyIiwiZGVzdHJ1Y3RvciIsImdldERlc3RydWN0b3IiLCJuZXdEZXN0cm95YWJsZSIsIlVwZGF0ZU1vZGlmaWVyT3Bjb2RlIiwidHlwZSIsImxhc3RVcGRhdGVkIiwiZXZhbHVhdGUiLCJ2YWxpZGF0ZSIsInNjaGVkdWxlVXBkYXRlTW9kaWZpZXIiLCJ0b0pTT04iLCJndWlkIiwiX2d1aWQiLCJwYXRjaCIsInJldmFsaWRhdGUiLCJ1cGRhdGVBdHRyaWJ1dGUiLCJQYXRjaEVsZW1lbnRPcGNvZGUiLCJmb3JtYXR0ZWRFbGVtZW50IiwiZm9ybWF0RWxlbWVudCIsImxhc3RWYWx1ZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJ0b0xvd2VyQ2FzZSIsInRydXN0aW5nIiwic2V0RHluYW1pY0F0dHJpYnV0ZU5TIiwic2V0RHluYW1pY0F0dHJpYnV0ZSIsIm9wZXJhdGlvbiIsImRldGFpbHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxBQUFTLEFBQWlCLEFBQWUsQUFBVyxBQUFrQixBQUFZLEFBQXNCOztBQUV4RyxBQUFTLEFBQWdCLEFBQXNCOztBQUMvQyxBQUFTLEFBQWdCLEFBQTBCOztBQUNuRCxBQUFTLEFBQWM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDdkIsd0JBQUEsQUFBZSxJQUFmLEFBQW1CLEdBQW5CLEFBQXNCLFlBQVksVUFBQSxBQUFDLFVBQXNCO1FBQVgsQUFBVyxZQUFoQixBQUFnQixBQUNyRDs7T0FBQSxBQUFHLFdBQUgsQUFBYyxXQUFXLEdBQUEsQUFBRyxVQUFILEFBQWEsVUFBdEMsQUFBeUIsQUFBdUIsQUFDbkQ7QUFGRDtBQUdBLHdCQUFBLEFBQWUsSUFBZixBQUFtQixHQUFuQixBQUFzQixlQUFlLFVBQUEsQUFBQyxXQUFzQjtRQUFYLEFBQVcsYUFBaEIsQUFBZ0IsQUFDeEQ7O09BQUEsQUFBRyxXQUFILEFBQWMsY0FBYyxHQUFBLEFBQUcsVUFBSCxBQUFhLFVBQXpDLEFBQTRCLEFBQXVCLEFBQ3REO0FBRkQ7QUFHQSx3QkFBQSxBQUFlLElBQWYsQUFBbUIsR0FBbkIsQUFBc0IsbUJBQW1CLFVBQUEsQUFBQyxXQUFxQjtRQUFWLEFBQVUsWUFBZixBQUFlLEFBQzNEOztPQUFBLEFBQUcsV0FBSCxBQUFjLFlBQVksR0FBQSxBQUFHLFVBQUgsQUFBYSxVQUF2QyxBQUEwQixBQUF1QixBQUNwRDtBQUZEO0FBR0Esd0JBQUEsQUFBZSxJQUFmLEFBQW1CLEdBQW5CLEFBQXNCLGlDQUFpQyxVQUFBLEFBQUMsV0FBcUI7UUFBVixBQUFVLFlBQWYsQUFBZSxBQUN6RTs7UUFBSSxVQUFVLEdBQUEsQUFBRyxVQUFILEFBQWEsVUFBM0IsQUFBYyxBQUF1QixBQUNyQztRQUFJLGFBQWEsR0FBQSxBQUFHLE1BQXBCLEFBQWlCLEFBQVMsQUFDMUI7T0FBQSxBQUFHLFdBQUgsQUFBYyxZQUFkLEFBQTBCLFNBQTFCLEFBQW1DLEFBQ3RDO0FBSkQ7QUFLQSx3QkFBQSxBQUFlLElBQWYsQUFBbUIsR0FBbkIsQUFBc0IsMEJBQTBCLGNBQU0sQUFDbEQ7UUFBSSxhQUFhLEdBQUEsQUFBRyxNQUFwQixBQUFpQixBQUFTLEFBQzFCO1FBQUksVUFBVSxHQUFBLEFBQUcsTUFBSCxBQUFTLE1BQXZCLEFBQWMsQUFBZSxBQUM3QjtPQUFBLEFBQUcsV0FBSCxBQUFjLFlBQWQsQUFBMEIsU0FBMUIsQUFBbUMsQUFDdEM7QUFKRDtBQUtBLHdCQUFBLEFBQWUsSUFBZixBQUFtQixHQUFuQixBQUFzQix5QkFBeUIsY0FBTSxBQUNqRDtRQUFJLGFBQWEsR0FBQSxBQUFHLE1BQXBCLEFBQWlCLEFBQVMsQUFDMUI7UUFBSSxpQkFBaUIsR0FBQSxBQUFHLE1BQXhCLEFBQXFCLEFBQVMsQUFDOUI7UUFBSSxlQUFKLEFBQ0E7UUFBSSxtQkFBSixBQUNBO1FBQUksd0JBQUosQUFBSSxBQUFpQixhQUFhLEFBQzlCO2tCQUFVLFdBQVYsQUFBVSxBQUFXLEFBQ3hCO0FBRkQsV0FFTyxBQUNIO1lBQUksUUFBUSxBQUFJLDhCQUFoQixBQUFZLEFBQW1CLEFBQy9CO2tCQUFVLE1BQVYsQUFBVSxBQUFNLEFBQ2hCO1dBQUEsQUFBRyxXQUFXLEFBQUksZUFBbEIsQUFBYyxBQUFXLEFBQzVCO0FBQ0Q7UUFBSSx3QkFBSixBQUFJLEFBQWlCLGlCQUFpQixBQUNsQztzQkFBYyxlQUFkLEFBQWMsQUFBZSxBQUNoQztBQUZELFdBRU8sQUFDSDtZQUFJLFNBQVEsQUFBSSw4QkFBaEIsQUFBWSxBQUFtQixBQUMvQjtzQkFBYyxPQUFkLEFBQWMsQUFBTSxBQUNwQjtXQUFBLEFBQUcsV0FBVyxBQUFJLGVBQWxCLEFBQWMsQUFBVyxBQUM1QjtBQUNEO09BQUEsQUFBRyxXQUFILEFBQWMsa0JBQWQsQUFBZ0MsU0FBaEMsQUFBeUMsQUFDNUM7QUFwQkQ7QUFxQkEsd0JBQUEsQUFBZSxJQUFmLEFBQW1CLEdBQW5CLEFBQXNCLHdCQUF3QixjQUFBO1dBQU0sR0FBQSxBQUFHLFdBQVQsQUFBTSxBQUFjO0FBQWxFOztJLEFBQ00sd0JBQ0Y7eUJBQWM7OEJBQ1Y7O2FBQUEsQUFBSyxPQUFMLEFBQVksQUFDWjthQUFBLEFBQUssVUFBTCxBQUFlLEFBQ2xCOzs7d0IsQUFDRCx5QkFBTyxBLFdBQVc7WUFBQSxBQUNSLE9BRFEsQUFDVSxLQURWLEFBQ1I7WUFEUSxBQUNGLFVBREUsQUFDVSxLQURWLEFBQ0YsQUFDWjs7WUFBSSxTQUFKLEFBQWEsTUFBTSxPQUFPLEtBQUEsQUFBSyxPQUFaLEFBQW1CLEFBQ3RDO2FBQUEsQUFBSyxLQUFMLEFBQVUsQUFDVjthQUFBLEFBQUssVUFBVSxXQUFXLHdCQUExQixBQUEwQixBQUFpQixBQUM5QztBOzt3QixBQUNELHFDQUFjO1lBQUEsQUFDSixPQURJLEFBQ2MsS0FEZCxBQUNKO1lBREksQUFDRSxVQURGLEFBQ2MsS0FEZCxBQUNFLEFBQ1o7O1lBQUksQ0FBSixBQUFLLE1BQU0sQUFBTyxBQUNsQjtZQUFBLEFBQUksU0FBUyxPQUFPLCtCQUFBLEFBQW1CLE9BQU8sWUFBakMsQUFBTyxBQUEwQixBQUFZLEFBQzFEO2VBQU8sSUFBQSxBQUFJLG1CQUFYLEFBQU8sQUFBdUIsQUFDakM7QTs7Ozs7SSxBQUVDO2tDQUNGOztnQ0FBQSxBQUFZLE1BQU07OEJBQUE7O3FEQUNkLHNCQURjLEFBRWQ7O2NBQUEsQUFBSyxPQUFMLEFBQVksQUFDWjtjQUFBLEFBQUssTUFBTSw4QkFBWCxBQUFXLEFBQWMsQUFDekI7Y0FBQSxBQUFLLE9BSlMsQUFJZCxBQUFZO2VBQ2Y7OztpQyxBQUNELDZCQUFVLEFBQ047ZUFBTyxZQUFZLEtBQW5CLEFBQU8sQUFBaUIsQUFDM0I7QTs7O0EsQUFUNEI7O0FBV2pDLFNBQUEsQUFBUyxZQUFULEFBQXFCLE1BQU0sQUFDdkI7UUFBSSxNQUFKLEFBQVUsQUFDVjtTQUFLLElBQUksSUFBVCxBQUFhLEdBQUcsSUFBSSxLQUFwQixBQUF5QixRQUF6QixBQUFpQyxLQUFLLEFBQ2xDO1lBQUksUUFBUSxLQUFBLEFBQUssR0FBakIsQUFBWSxBQUFRLEFBQ3BCO1lBQUksVUFBQSxBQUFVLFNBQVMsVUFBbkIsQUFBNkIsUUFBUSxVQUF6QyxBQUFtRCxXQUFXLElBQUEsQUFBSSxLQUFKLEFBQVMsQUFDMUU7QUFDRDtXQUFPLElBQUEsQUFBSSxXQUFKLEFBQWUsSUFBZixBQUFtQixPQUFPLElBQUEsQUFBSSxLQUFyQyxBQUFpQyxBQUFTLEFBQzdDO0FBQ0Q7SUFBQSxBQUFhLHdFQUNUO3FDQUFBLEFBQVksS0FBSzs4QkFDYjs7YUFBQSxBQUFLLE1BQUwsQUFBVyxBQUNYO2FBQUEsQUFBSyxVQUFMLEFBQWUsQUFDZjthQUFBLEFBQUssWUFBTCxBQUFpQixBQUNwQjtBQUxMOztzQ0FBQSxBQU1JLGlEQU5KLEFBTXVCLFNBTnZCLEFBTWdDLE1BTmhDLEFBTXNDLE9BQU8sQUFDckM7WUFBSSxTQUFKLEFBQWEsU0FBUyxBQUNsQjtpQkFBQSxBQUFLLFNBQVMsK0JBQUEsQUFBbUIsT0FBakMsQUFBYyxBQUEwQixBQUMzQztBQUZELGVBRU8sQUFDSDtpQkFBQSxBQUFLLElBQUwsQUFBUyxzQkFBVCxBQUErQixhQUEvQixBQUE0QyxTQUE1QyxBQUFxRCxNQUFyRCxBQUEyRCxBQUM5RDtBQUNKO0FBWkw7O3NDQUFBLEFBYUkscURBYkosQUFheUIsU0FiekIsQUFha0MsV0FibEMsQUFhNkMsTUFiN0MsQUFhbUQsT0FBTyxBQUNsRDthQUFBLEFBQUssSUFBTCxBQUFTLHNCQUFULEFBQStCLGFBQS9CLEFBQTRDLFNBQTVDLEFBQXFELE1BQXJELEFBQTJELE9BQTNELEFBQWtFLEFBQ3JFO0FBZkw7O3NDQUFBLEFBZ0JJLG1EQWhCSixBQWdCd0IsU0FoQnhCLEFBZ0JpQyxNQWhCakMsQUFnQnVDLFdBaEJ2QyxBQWdCa0QsWUFBWSxBQUN0RDtZQUFJLFNBQUosQUFBYSxTQUFTLEFBQ2xCO2lCQUFBLEFBQUssU0FBTCxBQUFjLEFBQ2pCO0FBRkQsZUFFTyxBQUNIO2dCQUFJLG1CQUFtQixLQUFBLEFBQUssSUFBTCxBQUFTLGFBQVQsQUFBc0IsU0FBdEIsQUFBK0IsTUFBdEQsQUFBdUIsQUFBcUMsQUFDNUQ7Z0JBQUksWUFBWSxJQUFBLEFBQUksaUJBQUosQUFBcUIsU0FBckIsQUFBOEIsa0JBQTlCLEFBQWdELE1BQWhFLEFBQWdCLEFBQXNELEFBQ3RFO2lCQUFBLEFBQUssYUFBTCxBQUFrQixBQUNyQjtBQUNKO0FBeEJMOztzQ0FBQSxBQXlCSSx1REF6QkosQUF5QjBCLFNBekIxQixBQXlCbUMsV0F6Qm5DLEFBeUI4QyxNQXpCOUMsQUF5Qm9ELFdBekJwRCxBQXlCK0QsWUFBWSxBQUNuRTtZQUFJLG1CQUFtQixLQUFBLEFBQUssSUFBTCxBQUFTLGFBQVQsQUFBc0IsU0FBdEIsQUFBK0IsTUFBL0IsQUFBcUMsWUFBNUQsQUFBdUIsQUFBaUQsQUFDeEU7WUFBSSxjQUFjLElBQUEsQUFBSSxpQkFBSixBQUFxQixTQUFyQixBQUE4QixrQkFBOUIsQUFBZ0QsTUFBaEQsQUFBc0QsV0FBeEUsQUFBa0IsQUFBaUUsQUFDbkY7YUFBQSxBQUFLLGFBQUwsQUFBa0IsQUFDckI7QUE3Qkw7O3NDQUFBLEFBOEJJLHVCQTlCSixBQThCVSxTQTlCVixBQThCbUIsSUFBSTtZQUFBLEFBQ1QsTUFEUyxBQUNELEdBREMsQUFDVDtZQURTLEFBRVQsVUFGUyxBQUVjLEtBRmQsQUFFVDtZQUZTLEFBRUEsWUFGQSxBQUVjLEtBRmQsQUFFQSxBQUNmOzthQUFLLElBQUksSUFBVCxBQUFhLEdBQUcsV0FBVyxJQUFJLFFBQS9CLEFBQXVDLFFBQXZDLEFBQStDLEtBQUssQUFDaEQ7ZUFBQSxBQUFHLFdBQVcsUUFBZCxBQUFjLEFBQVEsQUFDekI7QUFDRDtZQUFBLEFBQUksV0FBVyxBQUNYO2dCQUFJLG1CQUFtQixJQUFBLEFBQUksYUFBSixBQUFpQixTQUFqQixBQUEwQixTQUFqRCxBQUF1QixBQUFtQyxBQUMxRDtnQkFBSSxZQUFZLElBQUEsQUFBSSxpQkFBSixBQUFxQixTQUFyQixBQUE4QixrQkFBOUIsQUFBZ0QsU0FBUyxVQUF6RSxBQUFnQixBQUF5RCxBQUFVLEFBQ25GO2dCQUFJLFNBQVMsVUFBQSxBQUFVLE1BQXZCLEFBQWEsQUFBZ0IsQUFDN0I7Z0JBQUEsQUFBSSxRQUFRLEFBQ1I7bUJBQUEsQUFBRyxXQUFILEFBQWMsQUFDakI7QUFDSjtBQUNEO2FBQUEsQUFBSyxVQUFMLEFBQWUsQUFDZjthQUFBLEFBQUssWUFBTCxBQUFpQixBQUNwQjtBQTlDTDs7c0NBQUEsQUErQ0ksNkJBL0NKLEFBK0NhLFdBQVc7WUFBQSxBQUNWLFlBRFUsQUFDSSxLQURKLEFBQ1YsQUFDTjs7WUFBSSxDQUFKLEFBQUssV0FBVyxBQUNaO3dCQUFZLEtBQUEsQUFBSyxZQUFZLElBQTdCLEFBQTZCLEFBQUksQUFDcEM7QUFDRDtrQkFBQSxBQUFVLE9BQVYsQUFBaUIsQUFDcEI7QUFyREw7O3NDQUFBLEFBc0RJLHFDQXRESixBQXNEaUIsV0FBVyxBQUNwQjtZQUFJLFNBQVMsVUFBQSxBQUFVLE1BQU0sS0FBN0IsQUFBYSxBQUFxQixBQUNsQztZQUFBLEFBQUksUUFBUTtnQkFBQSxBQUNGLFVBREUsQUFDVSxLQURWLEFBQ0YsQUFDTjs7Z0JBQUksQ0FBSixBQUFLLFNBQVMsQUFDVjswQkFBVSxLQUFBLEFBQUssVUFBZixBQUF5QixBQUM1QjtBQUNEO29CQUFBLEFBQVEsS0FBUixBQUFhLEFBQ2hCO0FBQ0o7QUEvREw7O1dBQUE7QUFpRUE7SUFBQSxBQUFhLDhFQUNUO3dDQUFBLEFBQVksS0FBSzs4QkFDYjs7YUFBQSxBQUFLLE1BQUwsQUFBVyxBQUNYO2FBQUEsQUFBSyxpQkFBTCxBQUFzQixBQUN0QjthQUFBLEFBQUssYUFBTCxBQUFrQixBQUNsQjthQUFBLEFBQUssWUFBTCxBQUFpQixBQUNwQjtBQU5MOzt5Q0FBQSxBQU9JLGlEQVBKLEFBT3VCLFNBUHZCLEFBT2dDLE1BUGhDLEFBT3NDLE9BQU8sQUFDckM7WUFBSSxTQUFKLEFBQWEsU0FBUyxBQUNsQjtpQkFBQSxBQUFLLFNBQVMsK0JBQUEsQUFBbUIsT0FBakMsQUFBYyxBQUEwQixBQUMzQztBQUZELGVBRU8sSUFBSSxLQUFBLEFBQUssbUJBQVQsQUFBSSxBQUF3QixPQUFPLEFBQ3RDO2lCQUFBLEFBQUssYUFBTCxBQUFrQixNQUFNLElBQUEsQUFBSSxnQkFBSixBQUFvQixTQUFwQixBQUE2QixNQUFyRCxBQUF3QixBQUFtQyxBQUM5RDtBQUNKO0FBYkw7O3lDQUFBLEFBY0kscURBZEosQUFjeUIsU0FkekIsQUFja0MsV0FkbEMsQUFjNkMsTUFkN0MsQUFjbUQsT0FBTyxBQUNsRDtZQUFJLEtBQUEsQUFBSyxtQkFBVCxBQUFJLEFBQXdCLE9BQU8sQUFDL0I7aUJBQUEsQUFBSyxhQUFMLEFBQWtCLE1BQU0sSUFBQSxBQUFJLGdCQUFKLEFBQW9CLFNBQXBCLEFBQTZCLE1BQTdCLEFBQW1DLE9BQTNELEFBQXdCLEFBQTBDLEFBQ3JFO0FBQ0o7QUFsQkw7O3lDQUFBLEFBbUJJLG1EQW5CSixBQW1Cd0IsU0FuQnhCLEFBbUJpQyxNQW5CakMsQUFtQnVDLFdBbkJ2QyxBQW1Ca0QsWUFBWSxBQUN0RDtZQUFJLFNBQUosQUFBYSxTQUFTLEFBQ2xCO2lCQUFBLEFBQUssU0FBTCxBQUFjLEFBQ2pCO0FBRkQsZUFFTyxJQUFJLEtBQUEsQUFBSyxtQkFBVCxBQUFJLEFBQXdCLE9BQU8sQUFDdEM7Z0JBQUksbUJBQW1CLEtBQUEsQUFBSyxJQUFMLEFBQVMsYUFBVCxBQUFzQixTQUF0QixBQUErQixNQUF0RCxBQUF1QixBQUFxQyxBQUM1RDtnQkFBSSxZQUFZLElBQUEsQUFBSSxpQkFBSixBQUFxQixTQUFyQixBQUE4QixrQkFBOUIsQUFBZ0QsTUFBaEUsQUFBZ0IsQUFBc0QsQUFDdEU7aUJBQUEsQUFBSyxhQUFMLEFBQWtCLE1BQWxCLEFBQXdCLEFBQzNCO0FBQ0o7QUEzQkw7O3lDQUFBLEFBNEJJLHVEQTVCSixBQTRCMEIsU0E1QjFCLEFBNEJtQyxXQTVCbkMsQUE0QjhDLE1BNUI5QyxBQTRCb0QsV0E1QnBELEFBNEIrRCxZQUFZLEFBQ25FO1lBQUksS0FBQSxBQUFLLG1CQUFULEFBQUksQUFBd0IsT0FBTyxBQUMvQjtnQkFBSSxtQkFBbUIsS0FBQSxBQUFLLElBQUwsQUFBUyxhQUFULEFBQXNCLFNBQXRCLEFBQStCLE1BQS9CLEFBQXFDLFlBQTVELEFBQXVCLEFBQWlELEFBQ3hFO2dCQUFJLGNBQWMsSUFBQSxBQUFJLGlCQUFKLEFBQXFCLFNBQXJCLEFBQThCLGtCQUE5QixBQUFnRCxNQUFoRCxBQUFzRCxXQUF4RSxBQUFrQixBQUFpRSxBQUNuRjtpQkFBQSxBQUFLLGFBQUwsQUFBa0IsTUFBbEIsQUFBd0IsQUFDM0I7QUFDSjtBQWxDTDs7eUNBQUEsQUFtQ0ksdUJBbkNKLEFBbUNVLFNBbkNWLEFBbUNtQixJQUFJO1lBQUEsQUFDVCxNQURTLEFBQ0QsS0FEQyxBQUNUO1lBRFMsQUFFVCxhQUZTLEFBRWlCLEtBRmpCLEFBRVQ7WUFGUyxBQUVHLFlBRkgsQUFFaUIsS0FGakIsQUFFRyxBQUNsQjs7YUFBSyxJQUFJLElBQVQsQUFBYSxHQUFHLGNBQWMsSUFBSSxXQUFsQyxBQUE2QyxRQUE3QyxBQUFxRCxLQUFLLEFBQ3REO2dCQUFJLFNBQVMsV0FBQSxBQUFXLEdBQVgsQUFBYyxNQUEzQixBQUFhLEFBQW9CLEFBQ2pDO2dCQUFBLEFBQUksUUFBUSxBQUNSO21CQUFBLEFBQUcsV0FBSCxBQUFjLEFBQ2pCO0FBQ0o7QUFDRDtZQUFBLEFBQUksV0FBVyxBQUNYO2dCQUFJLG1CQUFtQixJQUFBLEFBQUksYUFBSixBQUFpQixTQUFqQixBQUEwQixTQUFqRCxBQUF1QixBQUFtQyxBQUMxRDtnQkFBSSxZQUFZLElBQUEsQUFBSSxpQkFBSixBQUFxQixTQUFyQixBQUE4QixrQkFBOUIsQUFBZ0QsU0FBUyxVQUF6RSxBQUFnQixBQUF5RCxBQUFVLEFBQ25GO2dCQUFJLFVBQVMsVUFBQSxBQUFVLE1BQXZCLEFBQWEsQUFBZ0IsQUFDN0I7Z0JBQUEsQUFBSSxTQUFRLEFBQ1I7bUJBQUEsQUFBRyxXQUFILEFBQWMsQUFDakI7QUFDSjtBQUNKO0FBcERMOzt5Q0FBQSxBQXFESSxpREFyREosQUFxRHVCLE1BQU0sQUFDckI7ZUFBTyxDQUFDLEtBQUQsQUFBTSxrQkFBa0IsS0FBQSxBQUFLLGVBQUwsQUFBb0IsUUFBcEIsQUFBNEIsVUFBVSxDQUFyRSxBQUFzRSxBQUN6RTtBQXZETDs7eUNBQUEsQUF3REksNkJBeERKLEFBd0RhLFdBQVc7WUFBQSxBQUNWLFlBRFUsQUFDSSxLQURKLEFBQ1YsQUFDTjs7WUFBSSxDQUFKLEFBQUssV0FBVyxBQUNaO3dCQUFZLEtBQUEsQUFBSyxZQUFZLElBQTdCLEFBQTZCLEFBQUksQUFDcEM7QUFDRDtrQkFBQSxBQUFVLE9BQVYsQUFBaUIsQUFDcEI7QUE5REw7O3lDQUFBLEFBK0RJLHFDQS9ESixBQStEaUIsTUEvRGpCLEFBK0R1QixXQUFXO1lBQUEsQUFDcEIsaUJBRG9CLEFBQ1csS0FEWCxBQUNwQjtZQURvQixBQUNKLGFBREksQUFDVyxLQURYLEFBQ0osQUFDdEI7O1lBQUksQ0FBSixBQUFLLGdCQUFnQixBQUNqQjs2QkFBaUIsS0FBQSxBQUFLLGlCQUF0QixBQUF1QyxBQUN2Qzt5QkFBYSxLQUFBLEFBQUssYUFBbEIsQUFBK0IsQUFDbEM7QUFDRDt1QkFBQSxBQUFlLEtBQWYsQUFBb0IsQUFDYjtBQUFQLG1CQUFBLEFBQW1CLEtBQW5CLEFBQXdCLEFBQzNCO0FBdkVMOztXQUFBOztBQXlFQSx3QkFBQSxBQUFlLElBQWYsQUFBbUIsR0FBbkIsQUFBc0Isb0JBQW9CLGNBQU0sQUFDNUM7UUFBSSxRQUFRLEdBQVosQUFBWSxBQUFHLEFBQ2Y7UUFBSSxTQUFKLEFBQWEsQUFDYjtVQUFBLEFBQU0saUJBQU4sQUFBdUIsUUFBdkIsQUFBK0IsTUFBTSxNQUFBLEFBQU0sbUJBQTNDLEFBQXFDLEFBQXlCLFNBQTlELEFBQXVFLEFBQ3ZFO1VBQUEsQUFBTSxBQUNUO0FBTEQ7QUFNQSx3QkFBQSxBQUFlLElBQWYsQUFBbUIsR0FBbkIsQUFBc0Isb0JBQW9CLGNBQUE7V0FBTSxHQUFBLEFBQUcsV0FBVCxBQUFNLEFBQWM7QUFBOUQ7QUFDQSx3QkFBQSxBQUFlLElBQWYsQUFBbUIsR0FBbkIsQUFBc0Isa0JBQWtCLFVBQUEsQUFBQyxXQUFxRDtRQUExQyxBQUEwQyxjQUEvQyxBQUErQztRQUE5QixBQUE4QixlQUFuQyxBQUFtQztRQUFqQixBQUFpQixtQkFBdEIsQUFBc0IsQUFDMUY7O1FBQUksT0FBTyxHQUFBLEFBQUcsVUFBSCxBQUFhLFVBQXhCLEFBQVcsQUFBdUIsQUFDbEM7UUFBSSxRQUFRLEdBQUEsQUFBRyxVQUFILEFBQWEsVUFBekIsQUFBWSxBQUF1QixBQUNuQztRQUFBLEFBQUksWUFBWSxBQUNaO1lBQUksWUFBWSxHQUFBLEFBQUcsVUFBSCxBQUFhLFVBQTdCLEFBQWdCLEFBQXVCLEFBQ3ZDO1dBQUEsQUFBRyxXQUFILEFBQWMscUJBQWQsQUFBbUMsV0FBbkMsQUFBOEMsTUFBOUMsQUFBb0QsQUFDdkQ7QUFIRCxXQUdPLEFBQ0g7V0FBQSxBQUFHLFdBQUgsQUFBYyxtQkFBZCxBQUFpQyxNQUFqQyxBQUF1QyxBQUMxQztBQUNKO0FBVEQ7QUFVQSx3QkFBQSxBQUFlLElBQWYsQUFBbUIsR0FBbkIsQUFBc0IsZ0JBQWdCLFVBQUEsQUFBQyxXQUEwQjtRQUFmLEFBQWUsaUJBQXBCLEFBQW9CLEFBQzdEOztRQUFJLFVBQVUsR0FBQSxBQUFHLFVBQUgsQUFBYSxTQUEzQixBQUFjLEFBQXNCLEFBQ3BDO1FBQUksUUFBUSxHQUFaLEFBQWUsQUFDZjtRQUFJLE9BQU8sTUFBWCxBQUFXLEFBQU0sQUFDakI7UUFBSSxNQUFNLEtBSm1ELEFBSTdELEFBQWU7O3VCQUNtQyxHQUxXLEFBS1gsQUFBRztRQUxRLEFBS3pDLHVCQUx5QyxBQUt2RDtRQUx1RCxBQUtoQyxnQ0FMZ0MsQUFLaEMsQUFDN0I7O1FBQUksZUFBZSxHQUFuQixBQUFtQixBQUFHLEFBQ3RCO1FBQUksV0FBVyxRQUFBLEFBQVEsT0FBUixBQUFlLFNBQWYsQUFBd0IsTUFBeEIsQUFBOEIsY0FBN0MsQUFBZSxBQUE0QyxBQUMzRDtTQUFBLEFBQUssQUFDTDtPQUFBLEFBQUcsSUFBSCxBQUFPLHdCQUFQLEFBQStCLFVBQS9CLEFBQXlDLEFBQ3pDO1FBQUksYUFBYSxRQUFBLEFBQVEsY0FBekIsQUFBaUIsQUFBc0IsQUFDdkM7UUFBQSxBQUFJLFlBQVksQUFDWjtXQUFBLEFBQUcsZUFBSCxBQUFrQixBQUNyQjtBQUNEO09BQUEsQUFBRyxXQUFXLElBQUEsQUFBSSxxQkFBSixBQUF5QixLQUF6QixBQUE4QixTQUE1QyxBQUFjLEFBQXVDLEFBQ3hEO0FBZkQsQUFnQkE7SUFBQSxBQUFhLGlGQUFiO29DQUNJOztrQ0FBQSxBQUFZLEtBQVosQUFBaUIsU0FBakIsQUFBMEIsVUFBVTs4QkFBQTs7c0RBQ2hDLHFCQURnQyxBQUVoQzs7ZUFBQSxBQUFLLE1BQUwsQUFBVyxBQUNYO2VBQUEsQUFBSyxVQUFMLEFBQWUsQUFDZjtlQUFBLEFBQUssV0FBTCxBQUFnQixBQUNoQjtlQUFBLEFBQUssT0FBTCxBQUFZLEFBQ1o7ZUFBQSxBQUFLLGNBQWMsSUFOYSxBQU1oQyxBQUFtQixBQUFJO2VBQzFCO0FBUkw7O21DQUFBLEFBU0ksNkJBVEosQUFTYSxJQUFJO1lBQUEsQUFDSCxVQURHLEFBQ3FDLEtBRHJDLEFBQ0g7WUFERyxBQUNNLFdBRE4sQUFDcUMsS0FEckMsQUFDTTtZQUROLEFBQ2dCLE1BRGhCLEFBQ3FDLEtBRHJDLEFBQ2dCO1lBRGhCLEFBQ3FCLGNBRHJCLEFBQ3FDLEtBRHJDLEFBQ3FCLEFBQzlCOztZQUFJLENBQUMsSUFBQSxBQUFJLFNBQVQsQUFBSyxBQUFhLGNBQWMsQUFDNUI7ZUFBQSxBQUFHLElBQUgsQUFBTyx1QkFBUCxBQUE4QixVQUE5QixBQUF3QyxBQUN4QztpQkFBQSxBQUFLLGNBQWMsSUFBbkIsQUFBbUIsQUFBSSxBQUMxQjtBQUNKO0FBZkw7O21DQUFBLEFBZ0JJLDJCQUFTLEFBQ0w7O2tCQUNVLEtBREgsQUFDUSxBQUNYO2tCQUFNLEtBRlYsQUFBTyxBQUVRLEFBRWxCO0FBSlUsQUFDSDtBQWxCWjs7V0FBQTtBQUFBLEFBQTBDLEFBdUIxQztJQUFBLEFBQWEsd0RBQ1Q7NkJBQUEsQUFBWSxTQUFaLEFBQXFCLE1BQXJCLEFBQTJCLE9BQTNCLEFBQWtDLFdBQVc7OEJBQ3pDOzthQUFBLEFBQUssVUFBTCxBQUFlLEFBQ2Y7YUFBQSxBQUFLLE9BQUwsQUFBWSxBQUNaO2FBQUEsQUFBSyxRQUFMLEFBQWEsQUFDYjthQUFBLEFBQUssWUFBTCxBQUFpQixBQUNwQjtBQU5MOzs4QkFBQSxBQU9JLHVCQVBKLEFBT1UsS0FBSyxBQUNQO1lBQUEsQUFBSSxzQkFBSixBQUEwQixhQUFhLEtBQXZDLEFBQTRDLFNBQVMsS0FBckQsQUFBMEQsTUFBTSxLQUFoRSxBQUFxRSxPQUFPLEtBQTVFLEFBQWlGLEFBQ2pGO2VBQUEsQUFBTyxBQUNWO0FBVkw7O1dBQUE7QUFZQTtJQUFBLEFBQWEsMERBQ1Q7OEJBQUEsQUFBWSxTQUFaLEFBQXFCLGtCQUFyQixBQUF1QyxNQUF2QyxBQUE2QyxXQUE3QyxBQUF3RCxXQUFXOzhCQUMvRDs7YUFBQSxBQUFLLFVBQUwsQUFBZSxBQUNmO2FBQUEsQUFBSyxtQkFBTCxBQUF3QixBQUN4QjthQUFBLEFBQUssT0FBTCxBQUFZLEFBQ1o7YUFBQSxBQUFLLFlBQUwsQUFBaUIsQUFDakI7YUFBQSxBQUFLLFlBQUwsQUFBaUIsQUFDakI7YUFBQSxBQUFLLFFBQUwsQUFBYSxBQUNiO2FBQUEsQUFBSyxNQUFNLFVBQVgsQUFBcUIsQUFDeEI7QUFUTDs7K0JBQUEsQUFVSSx1QkFWSixBQVVVLEtBQUs7WUFBQSxBQUNELFVBREMsQUFDa0IsS0FEbEIsQUFDRDtZQURDLEFBQ1EsUUFEUixBQUNrQixLQURsQixBQUNRLEFBQ2Y7O1lBQUksUUFBUSxBQUFPLE1BQW5CLEFBQVksQUFBd0MsQUFDcEQ7WUFBSSwyQkFBSixBQUFJLEFBQVcsUUFBUSxBQUNuQjtpQkFBQSxBQUFLLGlCQUFMLEFBQXNCLGdCQUF0QixBQUFzQyxLQUF0QyxBQUEyQyxTQUEzQyxBQUFvRCxPQUFPLEtBQTNELEFBQWdFLEFBQ25FO0FBQ0o7QUFoQkw7OytCQUFBLEFBaUJJLHVCQWpCSixBQWlCVSxLQUFLO1lBQUEsQUFDRCxZQURDLEFBQ3NCLEtBRHRCLEFBQ0Q7WUFEQyxBQUNVLFVBRFYsQUFDc0IsS0FEdEIsQUFDVSxBQUNqQjs7WUFBSSx3QkFBSixBQUFJLEFBQWlCLFlBQVksQUFDN0I7Z0JBQUksUUFBUSxVQUFaLEFBQVksQUFBVSxBQUN0QjtpQkFBQSxBQUFLLGlCQUFMLEFBQXNCLGFBQXRCLEFBQW1DLEtBQW5DLEFBQXdDLFNBQXhDLEFBQWlELE9BQU8sS0FBeEQsQUFBNkQsQUFDN0Q7bUJBQUEsQUFBTyxBQUNWO0FBSkQsZUFJTyxBQUNIO2dCQUFJLFFBQVEsS0FBQSxBQUFLLFFBQVEsQUFBSSw4QkFBN0IsQUFBeUIsQUFBbUIsQUFDNUM7Z0JBQUksVUFBUSxNQUFaLEFBQVksQUFBTSxBQUNsQjtpQkFBQSxBQUFLLGlCQUFMLEFBQXNCLGFBQXRCLEFBQW1DLEtBQW5DLEFBQXdDLFNBQXhDLEFBQWlELFNBQU8sS0FBeEQsQUFBNkQsQUFDN0Q7bUJBQU8sSUFBQSxBQUFJLG1CQUFYLEFBQU8sQUFBdUIsQUFDakM7QUFDSjtBQTdCTDs7K0JBQUEsQUE4QkksMkJBQVM7WUFBQSxBQUNDLFVBREQsQUFDcUMsS0FEckMsQUFDQztZQURELEFBQ1UsWUFEVixBQUNxQyxLQURyQyxBQUNVO1lBRFYsQUFDcUIsT0FEckIsQUFDcUMsS0FEckMsQUFDcUI7WUFEckIsQUFDMkIsUUFEM0IsQUFDcUMsS0FEckMsQUFDMkIsQUFDaEM7O1lBQUksbUJBQW1CLGNBQXZCLEFBQXVCLEFBQWMsQUFDckM7WUFBSSxZQUFZLEFBQU8sTUFBdkIsQUFBZ0IsQUFBNEMsQUFDNUQ7WUFBQSxBQUFJLFdBQVcsQUFDWDs7eUJBQU8sQUFDTSxBQUNUOzJCQUZHLEFBR0g7c0JBSEcsQUFJSDsyQkFKRyxBQUtIO3NCQUxKLEFBQU8sQUFLRyxBQUViO0FBUFUsQUFDSDtBQU9SOztxQkFBTyxBQUNNLEFBQ1Q7dUJBRkcsQUFHSDtrQkFIRyxBQUlIO3VCQUFXLGNBQUEsQUFBYyxZQUFkLEFBQTBCLE9BSmxDLEFBSXlDLEFBQzVDO2tCQUxKLEFBQU8sQUFLRyxBQUViO0FBUFUsQUFDSDtBQTVDWjs7V0FBQTs7QUFvREEsU0FBQSxBQUFTLGNBQVQsQUFBdUIsU0FBUyxBQUM1QjtXQUFPLEtBQUEsQUFBSyxnQkFBYyxRQUFBLEFBQVEsUUFBM0IsQUFBbUIsQUFBZ0IsZ0JBQTFDLEFBQ0g7O0FBQ0Qsd0JBQUEsQUFBZSxJQUFmLEFBQW1CLEdBQW5CLEFBQXNCLHFCQUFxQixVQUFBLEFBQUMsV0FBdUQ7UUFBNUMsQUFBNEMsY0FBakQsQUFBaUQ7UUFBaEMsQUFBZ0MsbUJBQXJDLEFBQXFDO1FBQWYsQUFBZSxpQkFBcEIsQUFBb0IsQUFDL0Y7O1FBQUksT0FBTyxHQUFBLEFBQUcsVUFBSCxBQUFhLFVBQXhCLEFBQVcsQUFBdUIsQUFDbEM7UUFBSSxZQUFZLEdBQUEsQUFBRyxVQUFILEFBQWEsVUFBN0IsQUFBZ0IsQUFBdUIsQUFDdkM7UUFBSSxZQUFZLEdBQUEsQUFBRyxNQUFuQixBQUFnQixBQUFTLEFBQ3pCO09BQUEsQUFBRyxXQUFILEFBQWMsc0JBQWQsQUFBb0MsV0FBcEMsQUFBK0MsTUFBL0MsQUFBcUQsV0FBVyxDQUFDLENBQWpFLEFBQWtFLEFBQ3JFO0FBTEQ7QUFNQSx3QkFBQSxBQUFlLElBQWYsQUFBbUIsR0FBbkIsQUFBc0IsbUJBQW1CLFVBQUEsQUFBQyxXQUFzQztRQUEzQixBQUEyQixjQUFoQyxBQUFnQztRQUFmLEFBQWUsaUJBQXBCLEFBQW9CLEFBQzVFOztRQUFJLE9BQU8sR0FBQSxBQUFHLFVBQUgsQUFBYSxVQUF4QixBQUFXLEFBQXVCLEFBQ2xDO1FBQUksWUFBWSxHQUFBLEFBQUcsTUFBbkIsQUFBZ0IsQUFBUyxBQUN6QjtPQUFBLEFBQUcsV0FBSCxBQUFjLG9CQUFkLEFBQWtDLE1BQWxDLEFBQXdDLFdBQVcsQ0FBQyxDQUFwRCxBQUFxRCxBQUN4RDtBQUpELEFBS0E7SUFBQSxBQUFhLDhFQUFiO2tDQUNJOztnQ0FBQSxBQUFZLFdBQVc7OEJBQUE7O3NEQUNuQixzQkFEbUIsQUFFbkI7O2VBQUEsQUFBSyxPQUFMLEFBQVksQUFDWjtlQUFBLEFBQUssTUFBTSxVQUFYLEFBQXFCLEFBQ3JCO2VBQUEsQUFBSyxZQUpjLEFBSW5CLEFBQWlCO2VBQ3BCO0FBTkw7O2lDQUFBLEFBT0ksNkJBUEosQUFPYSxJQUFJLEFBQ1Q7YUFBQSxBQUFLLFVBQUwsQUFBZSxNQUFNLEdBQXJCLEFBQXdCLEFBQzNCO0FBVEw7O2lDQUFBLEFBVUksMkJBQVM7WUFBQSxBQUNDLFFBREQsQUFDNEIsS0FENUIsQUFDQztZQURELEFBQ1EsT0FEUixBQUM0QixLQUQ1QixBQUNRO1lBRFIsQUFDYyxZQURkLEFBQzRCLEtBRDVCLEFBQ2MsQUFDbkI7OztxQkFDYSxVQUROLEFBQ00sQUFBVSxBQUNuQjtrQkFGRyxBQUVHLEFBQ047a0JBSEosQUFBTyxBQUtWO0FBTFUsQUFDSDtBQWJaOztXQUFBO0FBQUEsQUFBd0MiLCJmaWxlIjoibGliL2NvbXBpbGVkL29wY29kZXMvZG9tLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2FjaGVkUmVmZXJlbmNlLCBjb21iaW5lVGFnZ2VkLCBpc0NvbnN0IGFzIGlzQ29uc3RSZWZlcmVuY2UsIGlzTW9kaWZpZWQsIFJlZmVyZW5jZUNhY2hlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IGV4cGVjdCwgdW53cmFwIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBBUFBFTkRfT1BDT0RFUywgVXBkYXRpbmdPcGNvZGUgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IE5VTExfUkVGRVJFTkNFLCBQcmltaXRpdmVSZWZlcmVuY2UgfSBmcm9tICcuLi8uLi9yZWZlcmVuY2VzJztcbmltcG9ydCB7IEFzc2VydCB9IGZyb20gJy4vdm0nO1xuQVBQRU5EX09QQ09ERVMuYWRkKDIzIC8qIFRleHQgKi8sICh2bSwgeyBvcDE6IHRleHQgfSkgPT4ge1xuICAgIHZtLmVsZW1lbnRzKCkuYXBwZW5kVGV4dCh2bS5jb25zdGFudHMuZ2V0U3RyaW5nKHRleHQpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDI0IC8qIENvbW1lbnQgKi8sICh2bSwgeyBvcDE6IHRleHQgfSkgPT4ge1xuICAgIHZtLmVsZW1lbnRzKCkuYXBwZW5kQ29tbWVudCh2bS5jb25zdGFudHMuZ2V0U3RyaW5nKHRleHQpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDI2IC8qIE9wZW5FbGVtZW50ICovLCAodm0sIHsgb3AxOiB0YWcgfSkgPT4ge1xuICAgIHZtLmVsZW1lbnRzKCkub3BlbkVsZW1lbnQodm0uY29uc3RhbnRzLmdldFN0cmluZyh0YWcpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDI3IC8qIE9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMgKi8sICh2bSwgeyBvcDE6IHRhZyB9KSA9PiB7XG4gICAgbGV0IHRhZ05hbWUgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKHRhZyk7XG4gICAgbGV0IG9wZXJhdGlvbnMgPSB2bS5zdGFjay5wb3AoKTtcbiAgICB2bS5lbGVtZW50cygpLm9wZW5FbGVtZW50KHRhZ05hbWUsIG9wZXJhdGlvbnMpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMjggLyogT3BlbkR5bmFtaWNFbGVtZW50ICovLCB2bSA9PiB7XG4gICAgbGV0IG9wZXJhdGlvbnMgPSB2bS5zdGFjay5wb3AoKTtcbiAgICBsZXQgdGFnTmFtZSA9IHZtLnN0YWNrLnBvcCgpLnZhbHVlKCk7XG4gICAgdm0uZWxlbWVudHMoKS5vcGVuRWxlbWVudCh0YWdOYW1lLCBvcGVyYXRpb25zKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDM1IC8qIFB1c2hSZW1vdGVFbGVtZW50ICovLCB2bSA9PiB7XG4gICAgbGV0IGVsZW1lbnRSZWYgPSB2bS5zdGFjay5wb3AoKTtcbiAgICBsZXQgbmV4dFNpYmxpbmdSZWYgPSB2bS5zdGFjay5wb3AoKTtcbiAgICBsZXQgZWxlbWVudDtcbiAgICBsZXQgbmV4dFNpYmxpbmc7XG4gICAgaWYgKGlzQ29uc3RSZWZlcmVuY2UoZWxlbWVudFJlZikpIHtcbiAgICAgICAgZWxlbWVudCA9IGVsZW1lbnRSZWYudmFsdWUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgY2FjaGUgPSBuZXcgUmVmZXJlbmNlQ2FjaGUoZWxlbWVudFJlZik7XG4gICAgICAgIGVsZW1lbnQgPSBjYWNoZS5wZWVrKCk7XG4gICAgICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICAgIH1cbiAgICBpZiAoaXNDb25zdFJlZmVyZW5jZShuZXh0U2libGluZ1JlZikpIHtcbiAgICAgICAgbmV4dFNpYmxpbmcgPSBuZXh0U2libGluZ1JlZi52YWx1ZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBjYWNoZSA9IG5ldyBSZWZlcmVuY2VDYWNoZShuZXh0U2libGluZ1JlZik7XG4gICAgICAgIG5leHRTaWJsaW5nID0gY2FjaGUucGVlaygpO1xuICAgICAgICB2bS51cGRhdGVXaXRoKG5ldyBBc3NlcnQoY2FjaGUpKTtcbiAgICB9XG4gICAgdm0uZWxlbWVudHMoKS5wdXNoUmVtb3RlRWxlbWVudChlbGVtZW50LCBuZXh0U2libGluZyk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCgzNiAvKiBQb3BSZW1vdGVFbGVtZW50ICovLCB2bSA9PiB2bS5lbGVtZW50cygpLnBvcFJlbW90ZUVsZW1lbnQoKSk7XG5jbGFzcyBDbGFzc0xpc3Qge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmxpc3QgPSBudWxsO1xuICAgICAgICB0aGlzLmlzQ29uc3QgPSB0cnVlO1xuICAgIH1cbiAgICBhcHBlbmQocmVmZXJlbmNlKSB7XG4gICAgICAgIGxldCB7IGxpc3QsIGlzQ29uc3QgfSA9IHRoaXM7XG4gICAgICAgIGlmIChsaXN0ID09PSBudWxsKSBsaXN0ID0gdGhpcy5saXN0ID0gW107XG4gICAgICAgIGxpc3QucHVzaChyZWZlcmVuY2UpO1xuICAgICAgICB0aGlzLmlzQ29uc3QgPSBpc0NvbnN0ICYmIGlzQ29uc3RSZWZlcmVuY2UocmVmZXJlbmNlKTtcbiAgICB9XG4gICAgdG9SZWZlcmVuY2UoKSB7XG4gICAgICAgIGxldCB7IGxpc3QsIGlzQ29uc3QgfSA9IHRoaXM7XG4gICAgICAgIGlmICghbGlzdCkgcmV0dXJuIE5VTExfUkVGRVJFTkNFO1xuICAgICAgICBpZiAoaXNDb25zdCkgcmV0dXJuIFByaW1pdGl2ZVJlZmVyZW5jZS5jcmVhdGUodG9DbGFzc05hbWUobGlzdCkpO1xuICAgICAgICByZXR1cm4gbmV3IENsYXNzTGlzdFJlZmVyZW5jZShsaXN0KTtcbiAgICB9XG59XG5jbGFzcyBDbGFzc0xpc3RSZWZlcmVuY2UgZXh0ZW5kcyBDYWNoZWRSZWZlcmVuY2Uge1xuICAgIGNvbnN0cnVjdG9yKGxpc3QpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5saXN0ID0gW107XG4gICAgICAgIHRoaXMudGFnID0gY29tYmluZVRhZ2dlZChsaXN0KTtcbiAgICAgICAgdGhpcy5saXN0ID0gbGlzdDtcbiAgICB9XG4gICAgY29tcHV0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRvQ2xhc3NOYW1lKHRoaXMubGlzdCk7XG4gICAgfVxufVxuZnVuY3Rpb24gdG9DbGFzc05hbWUobGlzdCkge1xuICAgIGxldCByZXQgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IHZhbHVlID0gbGlzdFtpXS52YWx1ZSgpO1xuICAgICAgICBpZiAodmFsdWUgIT09IGZhbHNlICYmIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHJldC5wdXNoKHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJldC5sZW5ndGggPT09IDAgPyBudWxsIDogcmV0LmpvaW4oJyAnKTtcbn1cbmV4cG9ydCBjbGFzcyBTaW1wbGVFbGVtZW50T3BlcmF0aW9ucyB7XG4gICAgY29uc3RydWN0b3IoZW52KSB7XG4gICAgICAgIHRoaXMuZW52ID0gZW52O1xuICAgICAgICB0aGlzLm9wY29kZXMgPSBudWxsO1xuICAgICAgICB0aGlzLmNsYXNzTGlzdCA9IG51bGw7XG4gICAgfVxuICAgIGFkZFN0YXRpY0F0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCB2YWx1ZSkge1xuICAgICAgICBpZiAobmFtZSA9PT0gJ2NsYXNzJykge1xuICAgICAgICAgICAgdGhpcy5hZGRDbGFzcyhQcmltaXRpdmVSZWZlcmVuY2UuY3JlYXRlKHZhbHVlKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCkuc2V0QXR0cmlidXRlKGVsZW1lbnQsIG5hbWUsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhZGRTdGF0aWNBdHRyaWJ1dGVOUyhlbGVtZW50LCBuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIHRoaXMuZW52LmdldEFwcGVuZE9wZXJhdGlvbnMoKS5zZXRBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZSk7XG4gICAgfVxuICAgIGFkZER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgcmVmZXJlbmNlLCBpc1RydXN0aW5nKSB7XG4gICAgICAgIGlmIChuYW1lID09PSAnY2xhc3MnKSB7XG4gICAgICAgICAgICB0aGlzLmFkZENsYXNzKHJlZmVyZW5jZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgYXR0cmlidXRlTWFuYWdlciA9IHRoaXMuZW52LmF0dHJpYnV0ZUZvcihlbGVtZW50LCBuYW1lLCBpc1RydXN0aW5nKTtcbiAgICAgICAgICAgIGxldCBhdHRyaWJ1dGUgPSBuZXcgRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCBuYW1lLCByZWZlcmVuY2UpO1xuICAgICAgICAgICAgdGhpcy5hZGRBdHRyaWJ1dGUoYXR0cmlidXRlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhZGREeW5hbWljQXR0cmlidXRlTlMoZWxlbWVudCwgbmFtZXNwYWNlLCBuYW1lLCByZWZlcmVuY2UsIGlzVHJ1c3RpbmcpIHtcbiAgICAgICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSB0aGlzLmVudi5hdHRyaWJ1dGVGb3IoZWxlbWVudCwgbmFtZSwgaXNUcnVzdGluZywgbmFtZXNwYWNlKTtcbiAgICAgICAgbGV0IG5zQXR0cmlidXRlID0gbmV3IER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlTWFuYWdlciwgbmFtZSwgcmVmZXJlbmNlLCBuYW1lc3BhY2UpO1xuICAgICAgICB0aGlzLmFkZEF0dHJpYnV0ZShuc0F0dHJpYnV0ZSk7XG4gICAgfVxuICAgIGZsdXNoKGVsZW1lbnQsIHZtKSB7XG4gICAgICAgIGxldCB7IGVudiB9ID0gdm07XG4gICAgICAgIGxldCB7IG9wY29kZXMsIGNsYXNzTGlzdCB9ID0gdGhpcztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IG9wY29kZXMgJiYgaSA8IG9wY29kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZtLnVwZGF0ZVdpdGgob3Bjb2Rlc1tpXSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNsYXNzTGlzdCkge1xuICAgICAgICAgICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSBlbnYuYXR0cmlidXRlRm9yKGVsZW1lbnQsICdjbGFzcycsIGZhbHNlKTtcbiAgICAgICAgICAgIGxldCBhdHRyaWJ1dGUgPSBuZXcgRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCAnY2xhc3MnLCBjbGFzc0xpc3QudG9SZWZlcmVuY2UoKSk7XG4gICAgICAgICAgICBsZXQgb3Bjb2RlID0gYXR0cmlidXRlLmZsdXNoKGVudik7XG4gICAgICAgICAgICBpZiAob3Bjb2RlKSB7XG4gICAgICAgICAgICAgICAgdm0udXBkYXRlV2l0aChvcGNvZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMub3Bjb2RlcyA9IG51bGw7XG4gICAgICAgIHRoaXMuY2xhc3NMaXN0ID0gbnVsbDtcbiAgICB9XG4gICAgYWRkQ2xhc3MocmVmZXJlbmNlKSB7XG4gICAgICAgIGxldCB7IGNsYXNzTGlzdCB9ID0gdGhpcztcbiAgICAgICAgaWYgKCFjbGFzc0xpc3QpIHtcbiAgICAgICAgICAgIGNsYXNzTGlzdCA9IHRoaXMuY2xhc3NMaXN0ID0gbmV3IENsYXNzTGlzdCgpO1xuICAgICAgICB9XG4gICAgICAgIGNsYXNzTGlzdC5hcHBlbmQocmVmZXJlbmNlKTtcbiAgICB9XG4gICAgYWRkQXR0cmlidXRlKGF0dHJpYnV0ZSkge1xuICAgICAgICBsZXQgb3Bjb2RlID0gYXR0cmlidXRlLmZsdXNoKHRoaXMuZW52KTtcbiAgICAgICAgaWYgKG9wY29kZSkge1xuICAgICAgICAgICAgbGV0IHsgb3Bjb2RlcyB9ID0gdGhpcztcbiAgICAgICAgICAgIGlmICghb3Bjb2Rlcykge1xuICAgICAgICAgICAgICAgIG9wY29kZXMgPSB0aGlzLm9wY29kZXMgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wY29kZXMucHVzaChvcGNvZGUpO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIENvbXBvbmVudEVsZW1lbnRPcGVyYXRpb25zIHtcbiAgICBjb25zdHJ1Y3RvcihlbnYpIHtcbiAgICAgICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgICAgIHRoaXMuYXR0cmlidXRlTmFtZXMgPSBudWxsO1xuICAgICAgICB0aGlzLmF0dHJpYnV0ZXMgPSBudWxsO1xuICAgICAgICB0aGlzLmNsYXNzTGlzdCA9IG51bGw7XG4gICAgfVxuICAgIGFkZFN0YXRpY0F0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCB2YWx1ZSkge1xuICAgICAgICBpZiAobmFtZSA9PT0gJ2NsYXNzJykge1xuICAgICAgICAgICAgdGhpcy5hZGRDbGFzcyhQcmltaXRpdmVSZWZlcmVuY2UuY3JlYXRlKHZhbHVlKSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zaG91bGRBZGRBdHRyaWJ1dGUobmFtZSkpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkQXR0cmlidXRlKG5hbWUsIG5ldyBTdGF0aWNBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgdmFsdWUpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhZGRTdGF0aWNBdHRyaWJ1dGVOUyhlbGVtZW50LCBuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIGlmICh0aGlzLnNob3VsZEFkZEF0dHJpYnV0ZShuYW1lKSkge1xuICAgICAgICAgICAgdGhpcy5hZGRBdHRyaWJ1dGUobmFtZSwgbmV3IFN0YXRpY0F0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYWRkRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCByZWZlcmVuY2UsIGlzVHJ1c3RpbmcpIHtcbiAgICAgICAgaWYgKG5hbWUgPT09ICdjbGFzcycpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkQ2xhc3MocmVmZXJlbmNlKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNob3VsZEFkZEF0dHJpYnV0ZShuYW1lKSkge1xuICAgICAgICAgICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSB0aGlzLmVudi5hdHRyaWJ1dGVGb3IoZWxlbWVudCwgbmFtZSwgaXNUcnVzdGluZyk7XG4gICAgICAgICAgICBsZXQgYXR0cmlidXRlID0gbmV3IER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlTWFuYWdlciwgbmFtZSwgcmVmZXJlbmNlKTtcbiAgICAgICAgICAgIHRoaXMuYWRkQXR0cmlidXRlKG5hbWUsIGF0dHJpYnV0ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYWRkRHluYW1pY0F0dHJpYnV0ZU5TKGVsZW1lbnQsIG5hbWVzcGFjZSwgbmFtZSwgcmVmZXJlbmNlLCBpc1RydXN0aW5nKSB7XG4gICAgICAgIGlmICh0aGlzLnNob3VsZEFkZEF0dHJpYnV0ZShuYW1lKSkge1xuICAgICAgICAgICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSB0aGlzLmVudi5hdHRyaWJ1dGVGb3IoZWxlbWVudCwgbmFtZSwgaXNUcnVzdGluZywgbmFtZXNwYWNlKTtcbiAgICAgICAgICAgIGxldCBuc0F0dHJpYnV0ZSA9IG5ldyBEeW5hbWljQXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZU1hbmFnZXIsIG5hbWUsIHJlZmVyZW5jZSwgbmFtZXNwYWNlKTtcbiAgICAgICAgICAgIHRoaXMuYWRkQXR0cmlidXRlKG5hbWUsIG5zQXR0cmlidXRlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmbHVzaChlbGVtZW50LCB2bSkge1xuICAgICAgICBsZXQgeyBlbnYgfSA9IHRoaXM7XG4gICAgICAgIGxldCB7IGF0dHJpYnV0ZXMsIGNsYXNzTGlzdCB9ID0gdGhpcztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGF0dHJpYnV0ZXMgJiYgaSA8IGF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBvcGNvZGUgPSBhdHRyaWJ1dGVzW2ldLmZsdXNoKGVudik7XG4gICAgICAgICAgICBpZiAob3Bjb2RlKSB7XG4gICAgICAgICAgICAgICAgdm0udXBkYXRlV2l0aChvcGNvZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChjbGFzc0xpc3QpIHtcbiAgICAgICAgICAgIGxldCBhdHRyaWJ1dGVNYW5hZ2VyID0gZW52LmF0dHJpYnV0ZUZvcihlbGVtZW50LCAnY2xhc3MnLCBmYWxzZSk7XG4gICAgICAgICAgICBsZXQgYXR0cmlidXRlID0gbmV3IER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlTWFuYWdlciwgJ2NsYXNzJywgY2xhc3NMaXN0LnRvUmVmZXJlbmNlKCkpO1xuICAgICAgICAgICAgbGV0IG9wY29kZSA9IGF0dHJpYnV0ZS5mbHVzaChlbnYpO1xuICAgICAgICAgICAgaWYgKG9wY29kZSkge1xuICAgICAgICAgICAgICAgIHZtLnVwZGF0ZVdpdGgob3Bjb2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBzaG91bGRBZGRBdHRyaWJ1dGUobmFtZSkge1xuICAgICAgICByZXR1cm4gIXRoaXMuYXR0cmlidXRlTmFtZXMgfHwgdGhpcy5hdHRyaWJ1dGVOYW1lcy5pbmRleE9mKG5hbWUpID09PSAtMTtcbiAgICB9XG4gICAgYWRkQ2xhc3MocmVmZXJlbmNlKSB7XG4gICAgICAgIGxldCB7IGNsYXNzTGlzdCB9ID0gdGhpcztcbiAgICAgICAgaWYgKCFjbGFzc0xpc3QpIHtcbiAgICAgICAgICAgIGNsYXNzTGlzdCA9IHRoaXMuY2xhc3NMaXN0ID0gbmV3IENsYXNzTGlzdCgpO1xuICAgICAgICB9XG4gICAgICAgIGNsYXNzTGlzdC5hcHBlbmQocmVmZXJlbmNlKTtcbiAgICB9XG4gICAgYWRkQXR0cmlidXRlKG5hbWUsIGF0dHJpYnV0ZSkge1xuICAgICAgICBsZXQgeyBhdHRyaWJ1dGVOYW1lcywgYXR0cmlidXRlcyB9ID0gdGhpcztcbiAgICAgICAgaWYgKCFhdHRyaWJ1dGVOYW1lcykge1xuICAgICAgICAgICAgYXR0cmlidXRlTmFtZXMgPSB0aGlzLmF0dHJpYnV0ZU5hbWVzID0gW107XG4gICAgICAgICAgICBhdHRyaWJ1dGVzID0gdGhpcy5hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgYXR0cmlidXRlTmFtZXMucHVzaChuYW1lKTtcbiAgICAgICAgdW53cmFwKGF0dHJpYnV0ZXMpLnB1c2goYXR0cmlidXRlKTtcbiAgICB9XG59XG5BUFBFTkRfT1BDT0RFUy5hZGQoMzIgLyogRmx1c2hFbGVtZW50ICovLCB2bSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uZWxlbWVudHMoKTtcbiAgICBsZXQgYWN0aW9uID0gJ0ZsdXNoRWxlbWVudE9wY29kZSNldmFsdWF0ZSc7XG4gICAgc3RhY2suZXhwZWN0T3BlcmF0aW9ucyhhY3Rpb24pLmZsdXNoKHN0YWNrLmV4cGVjdENvbnN0cnVjdGluZyhhY3Rpb24pLCB2bSk7XG4gICAgc3RhY2suZmx1c2hFbGVtZW50KCk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCgzMyAvKiBDbG9zZUVsZW1lbnQgKi8sIHZtID0+IHZtLmVsZW1lbnRzKCkuY2xvc2VFbGVtZW50KCkpO1xuQVBQRU5EX09QQ09ERVMuYWRkKDI5IC8qIFN0YXRpY0F0dHIgKi8sICh2bSwgeyBvcDE6IF9uYW1lLCBvcDI6IF92YWx1ZSwgb3AzOiBfbmFtZXNwYWNlIH0pID0+IHtcbiAgICBsZXQgbmFtZSA9IHZtLmNvbnN0YW50cy5nZXRTdHJpbmcoX25hbWUpO1xuICAgIGxldCB2YWx1ZSA9IHZtLmNvbnN0YW50cy5nZXRTdHJpbmcoX3ZhbHVlKTtcbiAgICBpZiAoX25hbWVzcGFjZSkge1xuICAgICAgICBsZXQgbmFtZXNwYWNlID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyhfbmFtZXNwYWNlKTtcbiAgICAgICAgdm0uZWxlbWVudHMoKS5zZXRTdGF0aWNBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB2bS5lbGVtZW50cygpLnNldFN0YXRpY0F0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7XG4gICAgfVxufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMzQgLyogTW9kaWZpZXIgKi8sICh2bSwgeyBvcDE6IF9tYW5hZ2VyIH0pID0+IHtcbiAgICBsZXQgbWFuYWdlciA9IHZtLmNvbnN0YW50cy5nZXRPdGhlcihfbWFuYWdlcik7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IGFyZ3MgPSBzdGFjay5wb3AoKTtcbiAgICBsZXQgdGFnID0gYXJncy50YWc7XG4gICAgbGV0IHsgY29uc3RydWN0aW5nOiBlbGVtZW50LCB1cGRhdGVPcGVyYXRpb25zIH0gPSB2bS5lbGVtZW50cygpO1xuICAgIGxldCBkeW5hbWljU2NvcGUgPSB2bS5keW5hbWljU2NvcGUoKTtcbiAgICBsZXQgbW9kaWZpZXIgPSBtYW5hZ2VyLmNyZWF0ZShlbGVtZW50LCBhcmdzLCBkeW5hbWljU2NvcGUsIHVwZGF0ZU9wZXJhdGlvbnMpO1xuICAgIGFyZ3MuY2xlYXIoKTtcbiAgICB2bS5lbnYuc2NoZWR1bGVJbnN0YWxsTW9kaWZpZXIobW9kaWZpZXIsIG1hbmFnZXIpO1xuICAgIGxldCBkZXN0cnVjdG9yID0gbWFuYWdlci5nZXREZXN0cnVjdG9yKG1vZGlmaWVyKTtcbiAgICBpZiAoZGVzdHJ1Y3Rvcikge1xuICAgICAgICB2bS5uZXdEZXN0cm95YWJsZShkZXN0cnVjdG9yKTtcbiAgICB9XG4gICAgdm0udXBkYXRlV2l0aChuZXcgVXBkYXRlTW9kaWZpZXJPcGNvZGUodGFnLCBtYW5hZ2VyLCBtb2RpZmllcikpO1xufSk7XG5leHBvcnQgY2xhc3MgVXBkYXRlTW9kaWZpZXJPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gICAgY29uc3RydWN0b3IodGFnLCBtYW5hZ2VyLCBtb2RpZmllcikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnRhZyA9IHRhZztcbiAgICAgICAgdGhpcy5tYW5hZ2VyID0gbWFuYWdlcjtcbiAgICAgICAgdGhpcy5tb2RpZmllciA9IG1vZGlmaWVyO1xuICAgICAgICB0aGlzLnR5cGUgPSAndXBkYXRlLW1vZGlmaWVyJztcbiAgICAgICAgdGhpcy5sYXN0VXBkYXRlZCA9IHRhZy52YWx1ZSgpO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICBsZXQgeyBtYW5hZ2VyLCBtb2RpZmllciwgdGFnLCBsYXN0VXBkYXRlZCB9ID0gdGhpcztcbiAgICAgICAgaWYgKCF0YWcudmFsaWRhdGUobGFzdFVwZGF0ZWQpKSB7XG4gICAgICAgICAgICB2bS5lbnYuc2NoZWR1bGVVcGRhdGVNb2RpZmllcihtb2RpZmllciwgbWFuYWdlcik7XG4gICAgICAgICAgICB0aGlzLmxhc3RVcGRhdGVkID0gdGFnLnZhbHVlKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZVxuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBTdGF0aWNBdHRyaWJ1dGUge1xuICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLm5hbWVzcGFjZSA9IG5hbWVzcGFjZTtcbiAgICB9XG4gICAgZmx1c2goZW52KSB7XG4gICAgICAgIGVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCkuc2V0QXR0cmlidXRlKHRoaXMuZWxlbWVudCwgdGhpcy5uYW1lLCB0aGlzLnZhbHVlLCB0aGlzLm5hbWVzcGFjZSk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBEeW5hbWljQXR0cmlidXRlIHtcbiAgICBjb25zdHJ1Y3RvcihlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCBuYW1lLCByZWZlcmVuY2UsIG5hbWVzcGFjZSkge1xuICAgICAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgICB0aGlzLmF0dHJpYnV0ZU1hbmFnZXIgPSBhdHRyaWJ1dGVNYW5hZ2VyO1xuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLnJlZmVyZW5jZSA9IHJlZmVyZW5jZTtcbiAgICAgICAgdGhpcy5uYW1lc3BhY2UgPSBuYW1lc3BhY2U7XG4gICAgICAgIHRoaXMuY2FjaGUgPSBudWxsO1xuICAgICAgICB0aGlzLnRhZyA9IHJlZmVyZW5jZS50YWc7XG4gICAgfVxuICAgIHBhdGNoKGVudikge1xuICAgICAgICBsZXQgeyBlbGVtZW50LCBjYWNoZSB9ID0gdGhpcztcbiAgICAgICAgbGV0IHZhbHVlID0gZXhwZWN0KGNhY2hlLCAnbXVzdCBwYXRjaCBhZnRlciBmbHVzaCcpLnJldmFsaWRhdGUoKTtcbiAgICAgICAgaWYgKGlzTW9kaWZpZWQodmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLmF0dHJpYnV0ZU1hbmFnZXIudXBkYXRlQXR0cmlidXRlKGVudiwgZWxlbWVudCwgdmFsdWUsIHRoaXMubmFtZXNwYWNlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmbHVzaChlbnYpIHtcbiAgICAgICAgbGV0IHsgcmVmZXJlbmNlLCBlbGVtZW50IH0gPSB0aGlzO1xuICAgICAgICBpZiAoaXNDb25zdFJlZmVyZW5jZShyZWZlcmVuY2UpKSB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSByZWZlcmVuY2UudmFsdWUoKTtcbiAgICAgICAgICAgIHRoaXMuYXR0cmlidXRlTWFuYWdlci5zZXRBdHRyaWJ1dGUoZW52LCBlbGVtZW50LCB2YWx1ZSwgdGhpcy5uYW1lc3BhY2UpO1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgY2FjaGUgPSB0aGlzLmNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKHJlZmVyZW5jZSk7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBjYWNoZS5wZWVrKCk7XG4gICAgICAgICAgICB0aGlzLmF0dHJpYnV0ZU1hbmFnZXIuc2V0QXR0cmlidXRlKGVudiwgZWxlbWVudCwgdmFsdWUsIHRoaXMubmFtZXNwYWNlKTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUGF0Y2hFbGVtZW50T3Bjb2RlKHRoaXMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgbGV0IHsgZWxlbWVudCwgbmFtZXNwYWNlLCBuYW1lLCBjYWNoZSB9ID0gdGhpcztcbiAgICAgICAgbGV0IGZvcm1hdHRlZEVsZW1lbnQgPSBmb3JtYXRFbGVtZW50KGVsZW1lbnQpO1xuICAgICAgICBsZXQgbGFzdFZhbHVlID0gZXhwZWN0KGNhY2hlLCAnbXVzdCBzZXJpYWxpemUgYWZ0ZXIgZmx1c2gnKS5wZWVrKCk7XG4gICAgICAgIGlmIChuYW1lc3BhY2UpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZWxlbWVudDogZm9ybWF0dGVkRWxlbWVudCxcbiAgICAgICAgICAgICAgICBsYXN0VmFsdWUsXG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICBuYW1lc3BhY2UsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2F0dHJpYnV0ZSdcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGVsZW1lbnQ6IGZvcm1hdHRlZEVsZW1lbnQsXG4gICAgICAgICAgICBsYXN0VmFsdWUsXG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgbmFtZXNwYWNlOiBuYW1lc3BhY2UgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBuYW1lc3BhY2UsXG4gICAgICAgICAgICB0eXBlOiAnYXR0cmlidXRlJ1xuICAgICAgICB9O1xuICAgIH1cbn1cbmZ1bmN0aW9uIGZvcm1hdEVsZW1lbnQoZWxlbWVudCkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShgPCR7ZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCl9IC8+YCk7XG59XG5BUFBFTkRfT1BDT0RFUy5hZGQoMzEgLyogRHluYW1pY0F0dHJOUyAqLywgKHZtLCB7IG9wMTogX25hbWUsIG9wMjogX25hbWVzcGFjZSwgb3AzOiB0cnVzdGluZyB9KSA9PiB7XG4gICAgbGV0IG5hbWUgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKF9uYW1lKTtcbiAgICBsZXQgbmFtZXNwYWNlID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyhfbmFtZXNwYWNlKTtcbiAgICBsZXQgcmVmZXJlbmNlID0gdm0uc3RhY2sucG9wKCk7XG4gICAgdm0uZWxlbWVudHMoKS5zZXREeW5hbWljQXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lLCByZWZlcmVuY2UsICEhdHJ1c3RpbmcpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMzAgLyogRHluYW1pY0F0dHIgKi8sICh2bSwgeyBvcDE6IF9uYW1lLCBvcDI6IHRydXN0aW5nIH0pID0+IHtcbiAgICBsZXQgbmFtZSA9IHZtLmNvbnN0YW50cy5nZXRTdHJpbmcoX25hbWUpO1xuICAgIGxldCByZWZlcmVuY2UgPSB2bS5zdGFjay5wb3AoKTtcbiAgICB2bS5lbGVtZW50cygpLnNldER5bmFtaWNBdHRyaWJ1dGUobmFtZSwgcmVmZXJlbmNlLCAhIXRydXN0aW5nKTtcbn0pO1xuZXhwb3J0IGNsYXNzIFBhdGNoRWxlbWVudE9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcihvcGVyYXRpb24pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy50eXBlID0gJ3BhdGNoLWVsZW1lbnQnO1xuICAgICAgICB0aGlzLnRhZyA9IG9wZXJhdGlvbi50YWc7XG4gICAgICAgIHRoaXMub3BlcmF0aW9uID0gb3BlcmF0aW9uO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICB0aGlzLm9wZXJhdGlvbi5wYXRjaCh2bS5lbnYpO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIGxldCB7IF9ndWlkLCB0eXBlLCBvcGVyYXRpb24gfSA9IHRoaXM7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkZXRhaWxzOiBvcGVyYXRpb24udG9KU09OKCksXG4gICAgICAgICAgICBndWlkOiBfZ3VpZCxcbiAgICAgICAgICAgIHR5cGVcbiAgICAgICAgfTtcbiAgICB9XG59Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2RvbS5qcyJdLCJuYW1lcyI6WyJVcGRhdGluZ09wY29kZSIsIkNhY2hlZFJlZmVyZW5jZSIsIlJlZmVyZW5jZUNhY2hlIiwiY29tYmluZVRhZ2dlZCIsImlzQ29uc3QiLCJpc0NvbnN0UmVmZXJlbmNlIiwiaXNNb2RpZmllZCIsIk5VTExfUkVGRVJFTkNFIiwiUHJpbWl0aXZlUmVmZXJlbmNlIiwiQXNzZXJ0IiwiQVBQRU5EX09QQ09ERVMiLCJhZGQiLCJ2bSIsInRleHQiLCJvcDEiLCJlbGVtZW50cyIsImFwcGVuZFRleHQiLCJjb25zdGFudHMiLCJnZXRTdHJpbmciLCJhcHBlbmRDb21tZW50IiwidGFnIiwib3BlbkVsZW1lbnQiLCJ0YWdOYW1lIiwib3BlcmF0aW9ucyIsInN0YWNrIiwicG9wIiwidmFsdWUiLCJlbGVtZW50UmVmIiwibmV4dFNpYmxpbmdSZWYiLCJlbGVtZW50IiwibmV4dFNpYmxpbmciLCJjYWNoZSIsInBlZWsiLCJ1cGRhdGVXaXRoIiwicHVzaFJlbW90ZUVsZW1lbnQiLCJwb3BSZW1vdGVFbGVtZW50IiwiQ2xhc3NMaXN0IiwibGlzdCIsImFwcGVuZCIsInJlZmVyZW5jZSIsInB1c2giLCJ0b1JlZmVyZW5jZSIsImNyZWF0ZSIsInRvQ2xhc3NOYW1lIiwiQ2xhc3NMaXN0UmVmZXJlbmNlIiwiY29tcHV0ZSIsInJldCIsImkiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJqb2luIiwiU2ltcGxlRWxlbWVudE9wZXJhdGlvbnMiLCJlbnYiLCJvcGNvZGVzIiwiY2xhc3NMaXN0IiwiYWRkU3RhdGljQXR0cmlidXRlIiwibmFtZSIsImFkZENsYXNzIiwiZ2V0QXBwZW5kT3BlcmF0aW9ucyIsInNldEF0dHJpYnV0ZSIsImFkZFN0YXRpY0F0dHJpYnV0ZU5TIiwibmFtZXNwYWNlIiwiYWRkRHluYW1pY0F0dHJpYnV0ZSIsImlzVHJ1c3RpbmciLCJhdHRyaWJ1dGVNYW5hZ2VyIiwiYXR0cmlidXRlRm9yIiwiYXR0cmlidXRlIiwiRHluYW1pY0F0dHJpYnV0ZSIsImFkZEF0dHJpYnV0ZSIsImFkZER5bmFtaWNBdHRyaWJ1dGVOUyIsIm5zQXR0cmlidXRlIiwiZmx1c2giLCJvcGNvZGUiLCJDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyIsImF0dHJpYnV0ZU5hbWVzIiwiYXR0cmlidXRlcyIsInNob3VsZEFkZEF0dHJpYnV0ZSIsIlN0YXRpY0F0dHJpYnV0ZSIsImluZGV4T2YiLCJhY3Rpb24iLCJleHBlY3RPcGVyYXRpb25zIiwiZXhwZWN0Q29uc3RydWN0aW5nIiwiZmx1c2hFbGVtZW50IiwiY2xvc2VFbGVtZW50IiwiX25hbWUiLCJfdmFsdWUiLCJvcDIiLCJfbmFtZXNwYWNlIiwib3AzIiwic2V0U3RhdGljQXR0cmlidXRlTlMiLCJzZXRTdGF0aWNBdHRyaWJ1dGUiLCJfbWFuYWdlciIsIm1hbmFnZXIiLCJnZXRPdGhlciIsImFyZ3MiLCJjb25zdHJ1Y3RpbmciLCJ1cGRhdGVPcGVyYXRpb25zIiwiZHluYW1pY1Njb3BlIiwibW9kaWZpZXIiLCJjbGVhciIsInNjaGVkdWxlSW5zdGFsbE1vZGlmaWVyIiwiZGVzdHJ1Y3RvciIsImdldERlc3RydWN0b3IiLCJuZXdEZXN0cm95YWJsZSIsIlVwZGF0ZU1vZGlmaWVyT3Bjb2RlIiwidHlwZSIsImxhc3RVcGRhdGVkIiwiZXZhbHVhdGUiLCJ2YWxpZGF0ZSIsInNjaGVkdWxlVXBkYXRlTW9kaWZpZXIiLCJ0b0pTT04iLCJndWlkIiwiX2d1aWQiLCJwYXRjaCIsInJldmFsaWRhdGUiLCJ1cGRhdGVBdHRyaWJ1dGUiLCJQYXRjaEVsZW1lbnRPcGNvZGUiLCJmb3JtYXR0ZWRFbGVtZW50IiwiZm9ybWF0RWxlbWVudCIsImxhc3RWYWx1ZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJ0b0xvd2VyQ2FzZSIsInRydXN0aW5nIiwic2V0RHluYW1pY0F0dHJpYnV0ZU5TIiwic2V0RHluYW1pY0F0dHJpYnV0ZSIsIm9wZXJhdGlvbiIsImRldGFpbHMiXSwibWFwcGluZ3MiOiI7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QSxBQUFLLFVBQUwsQUFBZSxNQUFNLEdBQXJCLEFBQXdCLEFBQzNCO0FBVEw7O2lDQUFBLEFBVUksMkJBQVM7WUFBQSxBQUNDLFFBREQsQUFDNEIsS0FENUIsQUFDQztZQURELEFBQ1EsT0FEUixBQUM0QixLQUQ1QixBQUNRO1lBRFIsQUFDYyxZQURkLEFBQzRCLEtBRDVCLEFBQ2MsQUFDbkI7OztrQkFBTyxBQUNHLEFBQ047a0JBRkcsQUFHSDtxQkFBUyxVQUhiLEFBQU8sQUFHTSxBQUFVLEFBRTFCO0FBTFUsQUFDSDtBQWJaOztXQUFBO0FBQUEsQUFBd0MiLCJmaWxlIjoibGliL2NvbXBpbGVkL29wY29kZXMvZG9tLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVXBkYXRpbmdPcGNvZGUgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IHVud3JhcCwgZXhwZWN0IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBDYWNoZWRSZWZlcmVuY2UsIFJlZmVyZW5jZUNhY2hlLCBjb21iaW5lVGFnZ2VkLCBpc0NvbnN0IGFzIGlzQ29uc3RSZWZlcmVuY2UsIGlzTW9kaWZpZWQgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgTlVMTF9SRUZFUkVOQ0UsIFByaW1pdGl2ZVJlZmVyZW5jZSB9IGZyb20gJy4uLy4uL3JlZmVyZW5jZXMnO1xuaW1wb3J0IHsgQXNzZXJ0IH0gZnJvbSAnLi92bSc7XG5pbXBvcnQgeyBBUFBFTkRfT1BDT0RFUyB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuQVBQRU5EX09QQ09ERVMuYWRkKDIzIC8qIFRleHQgKi8sICh2bSwgeyBvcDE6IHRleHQgfSkgPT4ge1xuICAgIHZtLmVsZW1lbnRzKCkuYXBwZW5kVGV4dCh2bS5jb25zdGFudHMuZ2V0U3RyaW5nKHRleHQpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDI0IC8qIENvbW1lbnQgKi8sICh2bSwgeyBvcDE6IHRleHQgfSkgPT4ge1xuICAgIHZtLmVsZW1lbnRzKCkuYXBwZW5kQ29tbWVudCh2bS5jb25zdGFudHMuZ2V0U3RyaW5nKHRleHQpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDI2IC8qIE9wZW5FbGVtZW50ICovLCAodm0sIHsgb3AxOiB0YWcgfSkgPT4ge1xuICAgIHZtLmVsZW1lbnRzKCkub3BlbkVsZW1lbnQodm0uY29uc3RhbnRzLmdldFN0cmluZyh0YWcpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDI3IC8qIE9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMgKi8sICh2bSwgeyBvcDE6IHRhZyB9KSA9PiB7XG4gICAgbGV0IHRhZ05hbWUgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKHRhZyk7XG4gICAgbGV0IG9wZXJhdGlvbnMgPSB2bS5zdGFjay5wb3AoKTtcbiAgICB2bS5lbGVtZW50cygpLm9wZW5FbGVtZW50KHRhZ05hbWUsIG9wZXJhdGlvbnMpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMjggLyogT3BlbkR5bmFtaWNFbGVtZW50ICovLCB2bSA9PiB7XG4gICAgbGV0IG9wZXJhdGlvbnMgPSB2bS5zdGFjay5wb3AoKTtcbiAgICBsZXQgdGFnTmFtZSA9IHZtLnN0YWNrLnBvcCgpLnZhbHVlKCk7XG4gICAgdm0uZWxlbWVudHMoKS5vcGVuRWxlbWVudCh0YWdOYW1lLCBvcGVyYXRpb25zKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDM1IC8qIFB1c2hSZW1vdGVFbGVtZW50ICovLCB2bSA9PiB7XG4gICAgbGV0IGVsZW1lbnRSZWYgPSB2bS5zdGFjay5wb3AoKTtcbiAgICBsZXQgbmV4dFNpYmxpbmdSZWYgPSB2bS5zdGFjay5wb3AoKTtcbiAgICBsZXQgZWxlbWVudDtcbiAgICBsZXQgbmV4dFNpYmxpbmc7XG4gICAgaWYgKGlzQ29uc3RSZWZlcmVuY2UoZWxlbWVudFJlZikpIHtcbiAgICAgICAgZWxlbWVudCA9IGVsZW1lbnRSZWYudmFsdWUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgY2FjaGUgPSBuZXcgUmVmZXJlbmNlQ2FjaGUoZWxlbWVudFJlZik7XG4gICAgICAgIGVsZW1lbnQgPSBjYWNoZS5wZWVrKCk7XG4gICAgICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICAgIH1cbiAgICBpZiAoaXNDb25zdFJlZmVyZW5jZShuZXh0U2libGluZ1JlZikpIHtcbiAgICAgICAgbmV4dFNpYmxpbmcgPSBuZXh0U2libGluZ1JlZi52YWx1ZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBjYWNoZSA9IG5ldyBSZWZlcmVuY2VDYWNoZShuZXh0U2libGluZ1JlZik7XG4gICAgICAgIG5leHRTaWJsaW5nID0gY2FjaGUucGVlaygpO1xuICAgICAgICB2bS51cGRhdGVXaXRoKG5ldyBBc3NlcnQoY2FjaGUpKTtcbiAgICB9XG4gICAgdm0uZWxlbWVudHMoKS5wdXNoUmVtb3RlRWxlbWVudChlbGVtZW50LCBuZXh0U2libGluZyk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCgzNiAvKiBQb3BSZW1vdGVFbGVtZW50ICovLCB2bSA9PiB2bS5lbGVtZW50cygpLnBvcFJlbW90ZUVsZW1lbnQoKSk7XG5jbGFzcyBDbGFzc0xpc3Qge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmxpc3QgPSBudWxsO1xuICAgICAgICB0aGlzLmlzQ29uc3QgPSB0cnVlO1xuICAgIH1cbiAgICBhcHBlbmQocmVmZXJlbmNlKSB7XG4gICAgICAgIGxldCB7IGxpc3QsIGlzQ29uc3QgfSA9IHRoaXM7XG4gICAgICAgIGlmIChsaXN0ID09PSBudWxsKSBsaXN0ID0gdGhpcy5saXN0ID0gW107XG4gICAgICAgIGxpc3QucHVzaChyZWZlcmVuY2UpO1xuICAgICAgICB0aGlzLmlzQ29uc3QgPSBpc0NvbnN0ICYmIGlzQ29uc3RSZWZlcmVuY2UocmVmZXJlbmNlKTtcbiAgICB9XG4gICAgdG9SZWZlcmVuY2UoKSB7XG4gICAgICAgIGxldCB7IGxpc3QsIGlzQ29uc3QgfSA9IHRoaXM7XG4gICAgICAgIGlmICghbGlzdCkgcmV0dXJuIE5VTExfUkVGRVJFTkNFO1xuICAgICAgICBpZiAoaXNDb25zdCkgcmV0dXJuIFByaW1pdGl2ZVJlZmVyZW5jZS5jcmVhdGUodG9DbGFzc05hbWUobGlzdCkpO1xuICAgICAgICByZXR1cm4gbmV3IENsYXNzTGlzdFJlZmVyZW5jZShsaXN0KTtcbiAgICB9XG59XG5jbGFzcyBDbGFzc0xpc3RSZWZlcmVuY2UgZXh0ZW5kcyBDYWNoZWRSZWZlcmVuY2Uge1xuICAgIGNvbnN0cnVjdG9yKGxpc3QpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5saXN0ID0gW107XG4gICAgICAgIHRoaXMudGFnID0gY29tYmluZVRhZ2dlZChsaXN0KTtcbiAgICAgICAgdGhpcy5saXN0ID0gbGlzdDtcbiAgICB9XG4gICAgY29tcHV0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRvQ2xhc3NOYW1lKHRoaXMubGlzdCk7XG4gICAgfVxufVxuZnVuY3Rpb24gdG9DbGFzc05hbWUobGlzdCkge1xuICAgIGxldCByZXQgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IHZhbHVlID0gbGlzdFtpXS52YWx1ZSgpO1xuICAgICAgICBpZiAodmFsdWUgIT09IGZhbHNlICYmIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHJldC5wdXNoKHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJldC5sZW5ndGggPT09IDAgPyBudWxsIDogcmV0LmpvaW4oJyAnKTtcbn1cbmV4cG9ydCBjbGFzcyBTaW1wbGVFbGVtZW50T3BlcmF0aW9ucyB7XG4gICAgY29uc3RydWN0b3IoZW52KSB7XG4gICAgICAgIHRoaXMuZW52ID0gZW52O1xuICAgICAgICB0aGlzLm9wY29kZXMgPSBudWxsO1xuICAgICAgICB0aGlzLmNsYXNzTGlzdCA9IG51bGw7XG4gICAgfVxuICAgIGFkZFN0YXRpY0F0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCB2YWx1ZSkge1xuICAgICAgICBpZiAobmFtZSA9PT0gJ2NsYXNzJykge1xuICAgICAgICAgICAgdGhpcy5hZGRDbGFzcyhQcmltaXRpdmVSZWZlcmVuY2UuY3JlYXRlKHZhbHVlKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCkuc2V0QXR0cmlidXRlKGVsZW1lbnQsIG5hbWUsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhZGRTdGF0aWNBdHRyaWJ1dGVOUyhlbGVtZW50LCBuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIHRoaXMuZW52LmdldEFwcGVuZE9wZXJhdGlvbnMoKS5zZXRBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZSk7XG4gICAgfVxuICAgIGFkZER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgcmVmZXJlbmNlLCBpc1RydXN0aW5nKSB7XG4gICAgICAgIGlmIChuYW1lID09PSAnY2xhc3MnKSB7XG4gICAgICAgICAgICB0aGlzLmFkZENsYXNzKHJlZmVyZW5jZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgYXR0cmlidXRlTWFuYWdlciA9IHRoaXMuZW52LmF0dHJpYnV0ZUZvcihlbGVtZW50LCBuYW1lLCBpc1RydXN0aW5nKTtcbiAgICAgICAgICAgIGxldCBhdHRyaWJ1dGUgPSBuZXcgRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCBuYW1lLCByZWZlcmVuY2UpO1xuICAgICAgICAgICAgdGhpcy5hZGRBdHRyaWJ1dGUoYXR0cmlidXRlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhZGREeW5hbWljQXR0cmlidXRlTlMoZWxlbWVudCwgbmFtZXNwYWNlLCBuYW1lLCByZWZlcmVuY2UsIGlzVHJ1c3RpbmcpIHtcbiAgICAgICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSB0aGlzLmVudi5hdHRyaWJ1dGVGb3IoZWxlbWVudCwgbmFtZSwgaXNUcnVzdGluZywgbmFtZXNwYWNlKTtcbiAgICAgICAgbGV0IG5zQXR0cmlidXRlID0gbmV3IER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlTWFuYWdlciwgbmFtZSwgcmVmZXJlbmNlLCBuYW1lc3BhY2UpO1xuICAgICAgICB0aGlzLmFkZEF0dHJpYnV0ZShuc0F0dHJpYnV0ZSk7XG4gICAgfVxuICAgIGZsdXNoKGVsZW1lbnQsIHZtKSB7XG4gICAgICAgIGxldCB7IGVudiB9ID0gdm07XG4gICAgICAgIGxldCB7IG9wY29kZXMsIGNsYXNzTGlzdCB9ID0gdGhpcztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IG9wY29kZXMgJiYgaSA8IG9wY29kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZtLnVwZGF0ZVdpdGgob3Bjb2Rlc1tpXSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNsYXNzTGlzdCkge1xuICAgICAgICAgICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSBlbnYuYXR0cmlidXRlRm9yKGVsZW1lbnQsICdjbGFzcycsIGZhbHNlKTtcbiAgICAgICAgICAgIGxldCBhdHRyaWJ1dGUgPSBuZXcgRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCAnY2xhc3MnLCBjbGFzc0xpc3QudG9SZWZlcmVuY2UoKSk7XG4gICAgICAgICAgICBsZXQgb3Bjb2RlID0gYXR0cmlidXRlLmZsdXNoKGVudik7XG4gICAgICAgICAgICBpZiAob3Bjb2RlKSB7XG4gICAgICAgICAgICAgICAgdm0udXBkYXRlV2l0aChvcGNvZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMub3Bjb2RlcyA9IG51bGw7XG4gICAgICAgIHRoaXMuY2xhc3NMaXN0ID0gbnVsbDtcbiAgICB9XG4gICAgYWRkQ2xhc3MocmVmZXJlbmNlKSB7XG4gICAgICAgIGxldCB7IGNsYXNzTGlzdCB9ID0gdGhpcztcbiAgICAgICAgaWYgKCFjbGFzc0xpc3QpIHtcbiAgICAgICAgICAgIGNsYXNzTGlzdCA9IHRoaXMuY2xhc3NMaXN0ID0gbmV3IENsYXNzTGlzdCgpO1xuICAgICAgICB9XG4gICAgICAgIGNsYXNzTGlzdC5hcHBlbmQocmVmZXJlbmNlKTtcbiAgICB9XG4gICAgYWRkQXR0cmlidXRlKGF0dHJpYnV0ZSkge1xuICAgICAgICBsZXQgb3Bjb2RlID0gYXR0cmlidXRlLmZsdXNoKHRoaXMuZW52KTtcbiAgICAgICAgaWYgKG9wY29kZSkge1xuICAgICAgICAgICAgbGV0IHsgb3Bjb2RlcyB9ID0gdGhpcztcbiAgICAgICAgICAgIGlmICghb3Bjb2Rlcykge1xuICAgICAgICAgICAgICAgIG9wY29kZXMgPSB0aGlzLm9wY29kZXMgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wY29kZXMucHVzaChvcGNvZGUpO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIENvbXBvbmVudEVsZW1lbnRPcGVyYXRpb25zIHtcbiAgICBjb25zdHJ1Y3RvcihlbnYpIHtcbiAgICAgICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgICAgIHRoaXMuYXR0cmlidXRlTmFtZXMgPSBudWxsO1xuICAgICAgICB0aGlzLmF0dHJpYnV0ZXMgPSBudWxsO1xuICAgICAgICB0aGlzLmNsYXNzTGlzdCA9IG51bGw7XG4gICAgfVxuICAgIGFkZFN0YXRpY0F0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCB2YWx1ZSkge1xuICAgICAgICBpZiAobmFtZSA9PT0gJ2NsYXNzJykge1xuICAgICAgICAgICAgdGhpcy5hZGRDbGFzcyhQcmltaXRpdmVSZWZlcmVuY2UuY3JlYXRlKHZhbHVlKSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zaG91bGRBZGRBdHRyaWJ1dGUobmFtZSkpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkQXR0cmlidXRlKG5hbWUsIG5ldyBTdGF0aWNBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgdmFsdWUpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhZGRTdGF0aWNBdHRyaWJ1dGVOUyhlbGVtZW50LCBuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIGlmICh0aGlzLnNob3VsZEFkZEF0dHJpYnV0ZShuYW1lKSkge1xuICAgICAgICAgICAgdGhpcy5hZGRBdHRyaWJ1dGUobmFtZSwgbmV3IFN0YXRpY0F0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYWRkRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCByZWZlcmVuY2UsIGlzVHJ1c3RpbmcpIHtcbiAgICAgICAgaWYgKG5hbWUgPT09ICdjbGFzcycpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkQ2xhc3MocmVmZXJlbmNlKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNob3VsZEFkZEF0dHJpYnV0ZShuYW1lKSkge1xuICAgICAgICAgICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSB0aGlzLmVudi5hdHRyaWJ1dGVGb3IoZWxlbWVudCwgbmFtZSwgaXNUcnVzdGluZyk7XG4gICAgICAgICAgICBsZXQgYXR0cmlidXRlID0gbmV3IER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlTWFuYWdlciwgbmFtZSwgcmVmZXJlbmNlKTtcbiAgICAgICAgICAgIHRoaXMuYWRkQXR0cmlidXRlKG5hbWUsIGF0dHJpYnV0ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYWRkRHluYW1pY0F0dHJpYnV0ZU5TKGVsZW1lbnQsIG5hbWVzcGFjZSwgbmFtZSwgcmVmZXJlbmNlLCBpc1RydXN0aW5nKSB7XG4gICAgICAgIGlmICh0aGlzLnNob3VsZEFkZEF0dHJpYnV0ZShuYW1lKSkge1xuICAgICAgICAgICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSB0aGlzLmVudi5hdHRyaWJ1dGVGb3IoZWxlbWVudCwgbmFtZSwgaXNUcnVzdGluZywgbmFtZXNwYWNlKTtcbiAgICAgICAgICAgIGxldCBuc0F0dHJpYnV0ZSA9IG5ldyBEeW5hbWljQXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZU1hbmFnZXIsIG5hbWUsIHJlZmVyZW5jZSwgbmFtZXNwYWNlKTtcbiAgICAgICAgICAgIHRoaXMuYWRkQXR0cmlidXRlKG5hbWUsIG5zQXR0cmlidXRlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmbHVzaChlbGVtZW50LCB2bSkge1xuICAgICAgICBsZXQgeyBlbnYgfSA9IHRoaXM7XG4gICAgICAgIGxldCB7IGF0dHJpYnV0ZXMsIGNsYXNzTGlzdCB9ID0gdGhpcztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGF0dHJpYnV0ZXMgJiYgaSA8IGF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBvcGNvZGUgPSBhdHRyaWJ1dGVzW2ldLmZsdXNoKGVudik7XG4gICAgICAgICAgICBpZiAob3Bjb2RlKSB7XG4gICAgICAgICAgICAgICAgdm0udXBkYXRlV2l0aChvcGNvZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChjbGFzc0xpc3QpIHtcbiAgICAgICAgICAgIGxldCBhdHRyaWJ1dGVNYW5hZ2VyID0gZW52LmF0dHJpYnV0ZUZvcihlbGVtZW50LCAnY2xhc3MnLCBmYWxzZSk7XG4gICAgICAgICAgICBsZXQgYXR0cmlidXRlID0gbmV3IER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlTWFuYWdlciwgJ2NsYXNzJywgY2xhc3NMaXN0LnRvUmVmZXJlbmNlKCkpO1xuICAgICAgICAgICAgbGV0IG9wY29kZSA9IGF0dHJpYnV0ZS5mbHVzaChlbnYpO1xuICAgICAgICAgICAgaWYgKG9wY29kZSkge1xuICAgICAgICAgICAgICAgIHZtLnVwZGF0ZVdpdGgob3Bjb2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBzaG91bGRBZGRBdHRyaWJ1dGUobmFtZSkge1xuICAgICAgICByZXR1cm4gIXRoaXMuYXR0cmlidXRlTmFtZXMgfHwgdGhpcy5hdHRyaWJ1dGVOYW1lcy5pbmRleE9mKG5hbWUpID09PSAtMTtcbiAgICB9XG4gICAgYWRkQ2xhc3MocmVmZXJlbmNlKSB7XG4gICAgICAgIGxldCB7IGNsYXNzTGlzdCB9ID0gdGhpcztcbiAgICAgICAgaWYgKCFjbGFzc0xpc3QpIHtcbiAgICAgICAgICAgIGNsYXNzTGlzdCA9IHRoaXMuY2xhc3NMaXN0ID0gbmV3IENsYXNzTGlzdCgpO1xuICAgICAgICB9XG4gICAgICAgIGNsYXNzTGlzdC5hcHBlbmQocmVmZXJlbmNlKTtcbiAgICB9XG4gICAgYWRkQXR0cmlidXRlKG5hbWUsIGF0dHJpYnV0ZSkge1xuICAgICAgICBsZXQgeyBhdHRyaWJ1dGVOYW1lcywgYXR0cmlidXRlcyB9ID0gdGhpcztcbiAgICAgICAgaWYgKCFhdHRyaWJ1dGVOYW1lcykge1xuICAgICAgICAgICAgYXR0cmlidXRlTmFtZXMgPSB0aGlzLmF0dHJpYnV0ZU5hbWVzID0gW107XG4gICAgICAgICAgICBhdHRyaWJ1dGVzID0gdGhpcy5hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgYXR0cmlidXRlTmFtZXMucHVzaChuYW1lKTtcbiAgICAgICAgdW53cmFwKGF0dHJpYnV0ZXMpLnB1c2goYXR0cmlidXRlKTtcbiAgICB9XG59XG5BUFBFTkRfT1BDT0RFUy5hZGQoMzIgLyogRmx1c2hFbGVtZW50ICovLCB2bSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uZWxlbWVudHMoKTtcbiAgICBsZXQgYWN0aW9uID0gJ0ZsdXNoRWxlbWVudE9wY29kZSNldmFsdWF0ZSc7XG4gICAgc3RhY2suZXhwZWN0T3BlcmF0aW9ucyhhY3Rpb24pLmZsdXNoKHN0YWNrLmV4cGVjdENvbnN0cnVjdGluZyhhY3Rpb24pLCB2bSk7XG4gICAgc3RhY2suZmx1c2hFbGVtZW50KCk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCgzMyAvKiBDbG9zZUVsZW1lbnQgKi8sIHZtID0+IHZtLmVsZW1lbnRzKCkuY2xvc2VFbGVtZW50KCkpO1xuQVBQRU5EX09QQ09ERVMuYWRkKDI5IC8qIFN0YXRpY0F0dHIgKi8sICh2bSwgeyBvcDE6IF9uYW1lLCBvcDI6IF92YWx1ZSwgb3AzOiBfbmFtZXNwYWNlIH0pID0+IHtcbiAgICBsZXQgbmFtZSA9IHZtLmNvbnN0YW50cy5nZXRTdHJpbmcoX25hbWUpO1xuICAgIGxldCB2YWx1ZSA9IHZtLmNvbnN0YW50cy5nZXRTdHJpbmcoX3ZhbHVlKTtcbiAgICBpZiAoX25hbWVzcGFjZSkge1xuICAgICAgICBsZXQgbmFtZXNwYWNlID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyhfbmFtZXNwYWNlKTtcbiAgICAgICAgdm0uZWxlbWVudHMoKS5zZXRTdGF0aWNBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB2bS5lbGVtZW50cygpLnNldFN0YXRpY0F0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7XG4gICAgfVxufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMzQgLyogTW9kaWZpZXIgKi8sICh2bSwgeyBvcDE6IF9tYW5hZ2VyIH0pID0+IHtcbiAgICBsZXQgbWFuYWdlciA9IHZtLmNvbnN0YW50cy5nZXRPdGhlcihfbWFuYWdlcik7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IGFyZ3MgPSBzdGFjay5wb3AoKTtcbiAgICBsZXQgdGFnID0gYXJncy50YWc7XG4gICAgbGV0IHsgY29uc3RydWN0aW5nOiBlbGVtZW50LCB1cGRhdGVPcGVyYXRpb25zIH0gPSB2bS5lbGVtZW50cygpO1xuICAgIGxldCBkeW5hbWljU2NvcGUgPSB2bS5keW5hbWljU2NvcGUoKTtcbiAgICBsZXQgbW9kaWZpZXIgPSBtYW5hZ2VyLmNyZWF0ZShlbGVtZW50LCBhcmdzLCBkeW5hbWljU2NvcGUsIHVwZGF0ZU9wZXJhdGlvbnMpO1xuICAgIGFyZ3MuY2xlYXIoKTtcbiAgICB2bS5lbnYuc2NoZWR1bGVJbnN0YWxsTW9kaWZpZXIobW9kaWZpZXIsIG1hbmFnZXIpO1xuICAgIGxldCBkZXN0cnVjdG9yID0gbWFuYWdlci5nZXREZXN0cnVjdG9yKG1vZGlmaWVyKTtcbiAgICBpZiAoZGVzdHJ1Y3Rvcikge1xuICAgICAgICB2bS5uZXdEZXN0cm95YWJsZShkZXN0cnVjdG9yKTtcbiAgICB9XG4gICAgdm0udXBkYXRlV2l0aChuZXcgVXBkYXRlTW9kaWZpZXJPcGNvZGUodGFnLCBtYW5hZ2VyLCBtb2RpZmllcikpO1xufSk7XG5leHBvcnQgY2xhc3MgVXBkYXRlTW9kaWZpZXJPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gICAgY29uc3RydWN0b3IodGFnLCBtYW5hZ2VyLCBtb2RpZmllcikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnRhZyA9IHRhZztcbiAgICAgICAgdGhpcy5tYW5hZ2VyID0gbWFuYWdlcjtcbiAgICAgICAgdGhpcy5tb2RpZmllciA9IG1vZGlmaWVyO1xuICAgICAgICB0aGlzLnR5cGUgPSBcInVwZGF0ZS1tb2RpZmllclwiO1xuICAgICAgICB0aGlzLmxhc3RVcGRhdGVkID0gdGFnLnZhbHVlKCk7XG4gICAgfVxuICAgIGV2YWx1YXRlKHZtKSB7XG4gICAgICAgIGxldCB7IG1hbmFnZXIsIG1vZGlmaWVyLCB0YWcsIGxhc3RVcGRhdGVkIH0gPSB0aGlzO1xuICAgICAgICBpZiAoIXRhZy52YWxpZGF0ZShsYXN0VXBkYXRlZCkpIHtcbiAgICAgICAgICAgIHZtLmVudi5zY2hlZHVsZVVwZGF0ZU1vZGlmaWVyKG1vZGlmaWVyLCBtYW5hZ2VyKTtcbiAgICAgICAgICAgIHRoaXMubGFzdFVwZGF0ZWQgPSB0YWcudmFsdWUoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgICAgICAgdHlwZTogdGhpcy50eXBlXG4gICAgICAgIH07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFN0YXRpY0F0dHJpYnV0ZSB7XG4gICAgY29uc3RydWN0b3IoZWxlbWVudCwgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZSkge1xuICAgICAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMubmFtZXNwYWNlID0gbmFtZXNwYWNlO1xuICAgIH1cbiAgICBmbHVzaChlbnYpIHtcbiAgICAgICAgZW52LmdldEFwcGVuZE9wZXJhdGlvbnMoKS5zZXRBdHRyaWJ1dGUodGhpcy5lbGVtZW50LCB0aGlzLm5hbWUsIHRoaXMudmFsdWUsIHRoaXMubmFtZXNwYWNlKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIER5bmFtaWNBdHRyaWJ1dGUge1xuICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQsIGF0dHJpYnV0ZU1hbmFnZXIsIG5hbWUsIHJlZmVyZW5jZSwgbmFtZXNwYWNlKSB7XG4gICAgICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgICAgIHRoaXMuYXR0cmlidXRlTWFuYWdlciA9IGF0dHJpYnV0ZU1hbmFnZXI7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMucmVmZXJlbmNlID0gcmVmZXJlbmNlO1xuICAgICAgICB0aGlzLm5hbWVzcGFjZSA9IG5hbWVzcGFjZTtcbiAgICAgICAgdGhpcy5jYWNoZSA9IG51bGw7XG4gICAgICAgIHRoaXMudGFnID0gcmVmZXJlbmNlLnRhZztcbiAgICB9XG4gICAgcGF0Y2goZW52KSB7XG4gICAgICAgIGxldCB7IGVsZW1lbnQsIGNhY2hlIH0gPSB0aGlzO1xuICAgICAgICBsZXQgdmFsdWUgPSBleHBlY3QoY2FjaGUsICdtdXN0IHBhdGNoIGFmdGVyIGZsdXNoJykucmV2YWxpZGF0ZSgpO1xuICAgICAgICBpZiAoaXNNb2RpZmllZCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuYXR0cmlidXRlTWFuYWdlci51cGRhdGVBdHRyaWJ1dGUoZW52LCBlbGVtZW50LCB2YWx1ZSwgdGhpcy5uYW1lc3BhY2UpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZsdXNoKGVudikge1xuICAgICAgICBsZXQgeyByZWZlcmVuY2UsIGVsZW1lbnQgfSA9IHRoaXM7XG4gICAgICAgIGlmIChpc0NvbnN0UmVmZXJlbmNlKHJlZmVyZW5jZSkpIHtcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IHJlZmVyZW5jZS52YWx1ZSgpO1xuICAgICAgICAgICAgdGhpcy5hdHRyaWJ1dGVNYW5hZ2VyLnNldEF0dHJpYnV0ZShlbnYsIGVsZW1lbnQsIHZhbHVlLCB0aGlzLm5hbWVzcGFjZSk7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBjYWNoZSA9IHRoaXMuY2FjaGUgPSBuZXcgUmVmZXJlbmNlQ2FjaGUocmVmZXJlbmNlKTtcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IGNhY2hlLnBlZWsoKTtcbiAgICAgICAgICAgIHRoaXMuYXR0cmlidXRlTWFuYWdlci5zZXRBdHRyaWJ1dGUoZW52LCBlbGVtZW50LCB2YWx1ZSwgdGhpcy5uYW1lc3BhY2UpO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBQYXRjaEVsZW1lbnRPcGNvZGUodGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICBsZXQgeyBlbGVtZW50LCBuYW1lc3BhY2UsIG5hbWUsIGNhY2hlIH0gPSB0aGlzO1xuICAgICAgICBsZXQgZm9ybWF0dGVkRWxlbWVudCA9IGZvcm1hdEVsZW1lbnQoZWxlbWVudCk7XG4gICAgICAgIGxldCBsYXN0VmFsdWUgPSBleHBlY3QoY2FjaGUsICdtdXN0IHNlcmlhbGl6ZSBhZnRlciBmbHVzaCcpLnBlZWsoKTtcbiAgICAgICAgaWYgKG5hbWVzcGFjZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50OiBmb3JtYXR0ZWRFbGVtZW50LFxuICAgICAgICAgICAgICAgIHR5cGU6ICdhdHRyaWJ1dGUnLFxuICAgICAgICAgICAgICAgIG5hbWVzcGFjZSxcbiAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgIGxhc3RWYWx1ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZWxlbWVudDogZm9ybWF0dGVkRWxlbWVudCxcbiAgICAgICAgICAgIHR5cGU6ICdhdHRyaWJ1dGUnLFxuICAgICAgICAgICAgbmFtZXNwYWNlOiBuYW1lc3BhY2UgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBuYW1lc3BhY2UsXG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgbGFzdFZhbHVlXG4gICAgICAgIH07XG4gICAgfVxufVxuZnVuY3Rpb24gZm9ybWF0RWxlbWVudChlbGVtZW50KSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGA8JHtlbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKX0gLz5gKTtcbn1cbkFQUEVORF9PUENPREVTLmFkZCgzMSAvKiBEeW5hbWljQXR0ck5TICovLCAodm0sIHsgb3AxOiBfbmFtZSwgb3AyOiBfbmFtZXNwYWNlLCBvcDM6IHRydXN0aW5nIH0pID0+IHtcbiAgICBsZXQgbmFtZSA9IHZtLmNvbnN0YW50cy5nZXRTdHJpbmcoX25hbWUpO1xuICAgIGxldCBuYW1lc3BhY2UgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKF9uYW1lc3BhY2UpO1xuICAgIGxldCByZWZlcmVuY2UgPSB2bS5zdGFjay5wb3AoKTtcbiAgICB2bS5lbGVtZW50cygpLnNldER5bmFtaWNBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUsIHJlZmVyZW5jZSwgISF0cnVzdGluZyk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCgzMCAvKiBEeW5hbWljQXR0ciAqLywgKHZtLCB7IG9wMTogX25hbWUsIG9wMjogdHJ1c3RpbmcgfSkgPT4ge1xuICAgIGxldCBuYW1lID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyhfbmFtZSk7XG4gICAgbGV0IHJlZmVyZW5jZSA9IHZtLnN0YWNrLnBvcCgpO1xuICAgIHZtLmVsZW1lbnRzKCkuc2V0RHluYW1pY0F0dHJpYnV0ZShuYW1lLCByZWZlcmVuY2UsICEhdHJ1c3RpbmcpO1xufSk7XG5leHBvcnQgY2xhc3MgUGF0Y2hFbGVtZW50T3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKG9wZXJhdGlvbikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnR5cGUgPSBcInBhdGNoLWVsZW1lbnRcIjtcbiAgICAgICAgdGhpcy50YWcgPSBvcGVyYXRpb24udGFnO1xuICAgICAgICB0aGlzLm9wZXJhdGlvbiA9IG9wZXJhdGlvbjtcbiAgICB9XG4gICAgZXZhbHVhdGUodm0pIHtcbiAgICAgICAgdGhpcy5vcGVyYXRpb24ucGF0Y2godm0uZW52KTtcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICBsZXQgeyBfZ3VpZCwgdHlwZSwgb3BlcmF0aW9uIH0gPSB0aGlzO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ3VpZDogX2d1aWQsXG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgZGV0YWlsczogb3BlcmF0aW9uLnRvSlNPTigpXG4gICAgICAgIH07XG4gICAgfVxufSJdfQ==

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

var _concat = require('../expressions/concat');
var _references = require('../../references');
var _concat = require('../expressions/concat');
_opcodes.APPEND_OPCODES.add(1 /* Helper */, function (vm, _ref) {

@@ -95,2 +95,2 @@ var _helper = _ref.op1;

});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2V4cHJlc3Npb25zLmpzIl0sIm5hbWVzIjpbIkFQUEVORF9PUENPREVTIiwiRkFMU0VfUkVGRVJFTkNFIiwiVFJVRV9SRUZFUkVOQ0UiLCJDb25jYXRSZWZlcmVuY2UiLCJhZGQiLCJ2bSIsIl9oZWxwZXIiLCJvcDEiLCJzdGFjayIsImhlbHBlciIsImNvbnN0YW50cyIsImdldEZ1bmN0aW9uIiwiYXJncyIsInBvcCIsInZhbHVlIiwiY2xlYXIiLCJwdXNoIiwiX2Z1bmN0aW9uIiwiZnVuYyIsInN5bWJvbCIsImV4cHIiLCJyZWZlcmVuY2VGb3JTeW1ib2wiLCJzY29wZSIsImJpbmRTeW1ib2wiLCJfbmFtZSIsIm5hbWUiLCJnZXRTdHJpbmciLCJsb2NhbHMiLCJnZXRQYXJ0aWFsTWFwIiwicmVmIiwidW5kZWZpbmVkIiwiZ2V0U2VsZiIsImdldCIsInN5bWJvbHMiLCJiaW5kQ2FsbGVyU2NvcGUiLCJvcDIiLCJwdXNoUm9vdFNjb3BlIiwiX2tleSIsImtleSIsIl9ibG9jayIsImJsb2NrIiwiZ2V0QmxvY2siLCJoYXNCbG9jayIsImhhc0Jsb2NrUGFyYW1zIiwic3ltYm9sVGFibGUiLCJwYXJhbWV0ZXJzIiwibGVuZ3RoIiwiY291bnQiLCJvdXQiLCJpIiwicmV2ZXJzZSJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxBQUFTLEFBQVQsQUFBK0IsQUFBL0I7O0FBQ0EsQUFBUyxBQUFULEFBQTBCLEFBQTFCLEFBQWdELEFBQWhEOztBQUNBLEFBQVMsQUFBVCxBQUFnQyxBQUFoQzs7QUFDQSx3QkFBZSxBQUFmLElBQW1CLEFBQW5CLEVBQXFCLEFBQXJCLGNBQW1DLFVBQUMsQUFBRCxVQUEwQjtRQUFkLEFBQWMsZUFBbkIsQUFBbUIsQUFDekQ7O1FBQUksUUFBUSxHQUFHLEFBQWYsQUFDQTtRQUFJLFNBQVMsR0FBRyxBQUFILFVBQWEsQUFBYixZQUF5QixBQUF6QixBQUFiLEFBQ0E7UUFBSSxPQUFPLE1BQU0sQUFBTixBQUFYLEFB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RUFBcUIsQUFBckIsZ0JBQXFDLFVBQUMsQUFBRCxZQUF5QjtRQUFiLEFBQWEsZ0JBQWxCLEFBQWtCLEFBQzFEOztRQUFJLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQUFBSCxRQUFXLEFBQVgsU0FBb0IsQUFBcEIsQUFBakIsQUFDQTtPQUFHLEFBQUgsTUFBUyxBQUFULEtBQWMsQUFBVyxBQUFYLEFBQTRCLEFBQTFDLEFBQ0g7QUFIRDtBQUlBLHdCQUFlLEFBQWYsSUFBbUIsQUFBbkIsR0FBc0IsQUFBdEIsc0JBQTRDLFVBQUMsQUFBRCxZQUF5QjtRQUFiLEFBQWEsZ0JBQWxCLEFBQWtCLEFBQ2pFOztRQUFJLFFBQVEsR0FBRyxBQUFILFFBQVcsQUFBWCxTQUFvQixBQUFwQixBQUFaLEFBQ0E7UUFBSSxpQkFBaUIsU0FBUyxNQUFNLEFBQU4sWUFBa0IsQUFBbEIsV0FBNkIsQUFBM0QsQUFDQTtPQUFHLEFBQUgsTUFBUyxBQUFULEtBQWMsQUFBaUIsQUFBakIsQUFBa0MsQUFBaEQsQUFDSDtBQUpEO0FBS0Esd0JBQWUsQUFBZixJQUFtQixBQUFuQixHQUFzQixBQUF0QixjQUFvQyxVQUFDLEFBQUQsWUFBd0I7UUFBWixBQUFZLGVBQWpCLEFBQWlCLEFBQ3hEOztRQUFJLE1BQU0sQUFBVixBQUNBO1NBQUssSUFBSSxJQUFJLEFBQWIsT0FBb0IsSUFBSSxBQUF4QixHQUEyQixBQUEzQixLQUFnQyxBQUM1QjtZQUFJLEFBQUosS0FBUyxHQUFHLEFBQUgsTUFBUyxBQUFULEFBQVQsQUFDSDtBQUNEO09BQUcsQUFBSCxNQUFTLEFBQVQsS0FBYyxBQUFJLEFBQUosNEJBQW9CLElBQUksQUFBSixBQUFwQixBQUFkLEFBQ0g7QUFORCIsImZpbGUiOiJsaWIvY29tcGlsZWQvb3Bjb2Rlcy9leHByZXNzaW9ucy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUEVORF9PUENPREVTIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBGQUxTRV9SRUZFUkVOQ0UsIFRSVUVfUkVGRVJFTkNFIH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBDb25jYXRSZWZlcmVuY2UgfSBmcm9tICcuLi9leHByZXNzaW9ucy9jb25jYXQnO1xuQVBQRU5EX09QQ09ERVMuYWRkKDEgLyogSGVscGVyICovLCAodm0sIHsgb3AxOiBfaGVscGVyIH0pID0+IHtcbiAgICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgICBsZXQgaGVscGVyID0gdm0uY29uc3RhbnRzLmdldEZ1bmN0aW9uKF9oZWxwZXIpO1xuICAgIGxldCBhcmdzID0gc3RhY2sucG9wKCk7XG4gICAgbGV0IHZhbHVlID0gaGVscGVyKHZtLCBhcmdzKTtcbiAgICBhcmdzLmNsZWFyKCk7XG4gICAgdm0uc3RhY2sucHVzaCh2YWx1ZSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCgyIC8qIEZ1bmN0aW9uICovLCAodm0sIHsgb3AxOiBfZnVuY3Rpb24gfSkgPT4ge1xuICAgIGxldCBmdW5jID0gdm0uY29uc3RhbnRzLmdldEZ1bmN0aW9uKF9mdW5jdGlvbik7XG4gICAgdm0uc3RhY2sucHVzaChmdW5jKHZtKSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg1IC8qIEdldFZhcmlhYmxlICovLCAodm0sIHsgb3AxOiBzeW1ib2wgfSkgPT4ge1xuICAgIGxldCBleHByID0gdm0ucmVmZXJlbmNlRm9yU3ltYm9sKHN5bWJvbCk7XG4gICAgdm0uc3RhY2sucHVzaChleHByKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDQgLyogU2V0VmFyaWFibGUgKi8sICh2bSwgeyBvcDE6IHN5bWJvbCB9KSA9PiB7XG4gICAgbGV0IGV4cHIgPSB2bS5zdGFjay5wb3AoKTtcbiAgICB2bS5zY29wZSgpLmJpbmRTeW1ib2woc3ltYm9sLCBleHByKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDcwIC8qIFJlc29sdmVNYXliZUxvY2FsICovLCAodm0sIHsgb3AxOiBfbmFtZSB9KSA9PiB7XG4gICAgbGV0IG5hbWUgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKF9uYW1lKTtcbiAgICBsZXQgbG9jYWxzID0gdm0uc2NvcGUoKS5nZXRQYXJ0aWFsTWFwKCk7XG4gICAgbGV0IHJlZiA9IGxvY2Fsc1tuYW1lXTtcbiAgICBpZiAocmVmID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmVmID0gdm0uZ2V0U2VsZigpLmdldChuYW1lKTtcbiAgICB9XG4gICAgdm0uc3RhY2sucHVzaChyZWYpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMTkgLyogUm9vdFNjb3BlICovLCAodm0sIHsgb3AxOiBzeW1ib2xzLCBvcDI6IGJpbmRDYWxsZXJTY29wZSB9KSA9PiB7XG4gICAgdm0ucHVzaFJvb3RTY29wZShzeW1ib2xzLCAhIWJpbmRDYWxsZXJTY29wZSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2IC8qIEdldFByb3BlcnR5ICovLCAodm0sIHsgb3AxOiBfa2V5IH0pID0+IHtcbiAgICBsZXQga2V5ID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyhfa2V5KTtcbiAgICBsZXQgZXhwciA9IHZtLnN0YWNrLnBvcCgpO1xuICAgIHZtLnN0YWNrLnB1c2goZXhwci5nZXQoa2V5KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg3IC8qIFB1c2hCbG9jayAqLywgKHZtLCB7IG9wMTogX2Jsb2NrIH0pID0+IHtcbiAgICBsZXQgYmxvY2sgPSBfYmxvY2sgPyB2bS5jb25zdGFudHMuZ2V0QmxvY2soX2Jsb2NrKSA6IG51bGw7XG4gICAgdm0uc3RhY2sucHVzaChibG9jayk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg4IC8qIEdldEJsb2NrICovLCAodm0sIHsgb3AxOiBfYmxvY2sgfSkgPT4ge1xuICAgIHZtLnN0YWNrLnB1c2godm0uc2NvcGUoKS5nZXRCbG9jayhfYmxvY2spKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDkgLyogSGFzQmxvY2sgKi8sICh2bSwgeyBvcDE6IF9ibG9jayB9KSA9PiB7XG4gICAgbGV0IGhhc0Jsb2NrID0gISF2bS5zY29wZSgpLmdldEJsb2NrKF9ibG9jayk7XG4gICAgdm0uc3RhY2sucHVzaChoYXNCbG9jayA/IFRSVUVfUkVGRVJFTkNFIDogRkFMU0VfUkVGRVJFTkNFKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDEwIC8qIEhhc0Jsb2NrUGFyYW1zICovLCAodm0sIHsgb3AxOiBfYmxvY2sgfSkgPT4ge1xuICAgIGxldCBibG9jayA9IHZtLnNjb3BlKCkuZ2V0QmxvY2soX2Jsb2NrKTtcbiAgICBsZXQgaGFzQmxvY2tQYXJhbXMgPSBibG9jayAmJiBibG9jay5zeW1ib2xUYWJsZS5wYXJhbWV0ZXJzLmxlbmd0aDtcbiAgICB2bS5zdGFjay5wdXNoKGhhc0Jsb2NrUGFyYW1zID8gVFJVRV9SRUZFUkVOQ0UgOiBGQUxTRV9SRUZFUkVOQ0UpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMTEgLyogQ29uY2F0ICovLCAodm0sIHsgb3AxOiBjb3VudCB9KSA9PiB7XG4gICAgbGV0IG91dCA9IFtdO1xuICAgIGZvciAobGV0IGkgPSBjb3VudDsgaSA+IDA7IGktLSkge1xuICAgICAgICBvdXQucHVzaCh2bS5zdGFjay5wb3AoKSk7XG4gICAgfVxuICAgIHZtLnN0YWNrLnB1c2gobmV3IENvbmNhdFJlZmVyZW5jZShvdXQucmV2ZXJzZSgpKSk7XG59KTsiXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2V4cHJlc3Npb25zLmpzIl0sIm5hbWVzIjpbIkFQUEVORF9PUENPREVTIiwiQ29uY2F0UmVmZXJlbmNlIiwiVFJVRV9SRUZFUkVOQ0UiLCJGQUxTRV9SRUZFUkVOQ0UiLCJhZGQiLCJ2bSIsIl9oZWxwZXIiLCJvcDEiLCJzdGFjayIsImhlbHBlciIsImNvbnN0YW50cyIsImdldEZ1bmN0aW9uIiwiYXJncyIsInBvcCIsInZhbHVlIiwiY2xlYXIiLCJwdXNoIiwiX2Z1bmN0aW9uIiwiZnVuYyIsInN5bWJvbCIsImV4cHIiLCJyZWZlcmVuY2VGb3JTeW1ib2wiLCJzY29wZSIsImJpbmRTeW1ib2wiLCJfbmFtZSIsIm5hbWUiLCJnZXRTdHJpbmciLCJsb2NhbHMiLCJnZXRQYXJ0aWFsTWFwIiwicmVmIiwidW5kZWZpbmVkIiwiZ2V0U2VsZiIsImdldCIsInN5bWJvbHMiLCJiaW5kQ2FsbGVyU2NvcGUiLCJvcDIiLCJwdXNoUm9vdFNjb3BlIiwiX2tleSIsImtleSIsIl9ibG9jayIsImJsb2NrIiwiZ2V0QmxvY2siLCJoYXNCbG9jayIsImhhc0Jsb2NrUGFyYW1zIiwic3ltYm9sVGFibGUiLCJwYXJhbWV0ZXJzIiwibGVuZ3RoIiwiY291bnQiLCJvdXQiLCJpIiwicmV2ZXJzZSJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxBQUFTLEFBQVQsQUFBK0IsQUFBL0I7O0FBQ0EsQUFBUyxBQUFULEFBQWdDLEFBQWhDOztBQUNBLEFBQVMsQUFBVCxBQUF5QixBQUF6QixBQUFnRCxBQUFoRDs7QUFDQSx3QkFBZSxBQUFmLElBQW1CLEFBQW5CLEVBQXFCLEFBQXJCLGNBQW1DLFVBQUMsQUFBRCxVQUEwQjtRQUFkLEFBQWMsZUFBbkIsQUFBbUIsQUFDekQ7O1FBQUksUUFBUSxHQUFHLEFBQWYsQUFDQTtRQUFJLFNBQVMsR0FBRyxBQUFILFVBQWEsQUFBYixZQUF5QixBQUF6QixBQUFiLEFBQ0E7UUFBSSxPQUFPLE1BQU0sQUFBTixBQUFYLEFB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RUFBcUIsQUFBckIsZ0JBQXFDLFVBQUMsQUFBRCxZQUF5QjtRQUFiLEFBQWEsZ0JBQWxCLEFBQWtCLEFBQzFEOztRQUFJLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQUFBSCxRQUFXLEFBQVgsU0FBb0IsQUFBcEIsQUFBakIsQUFDQTtPQUFHLEFBQUgsTUFBUyxBQUFULEtBQWMsQUFBVyxBQUFYLEFBQTRCLEFBQTFDLEFBQ0g7QUFIRDtBQUlBLHdCQUFlLEFBQWYsSUFBbUIsQUFBbkIsR0FBc0IsQUFBdEIsc0JBQTRDLFVBQUMsQUFBRCxZQUF5QjtRQUFiLEFBQWEsZ0JBQWxCLEFBQWtCLEFBQ2pFOztRQUFJLFFBQVEsR0FBRyxBQUFILFFBQVcsQUFBWCxTQUFvQixBQUFwQixBQUFaLEFBQ0E7UUFBSSxpQkFBaUIsU0FBUyxNQUFNLEFBQU4sWUFBa0IsQUFBbEIsV0FBNkIsQUFBM0QsQUFDQTtPQUFHLEFBQUgsTUFBUyxBQUFULEtBQWMsQUFBaUIsQUFBakIsQUFBa0MsQUFBaEQsQUFDSDtBQUpEO0FBS0Esd0JBQWUsQUFBZixJQUFtQixBQUFuQixHQUFzQixBQUF0QixjQUFvQyxVQUFDLEFBQUQsWUFBd0I7UUFBWixBQUFZLGVBQWpCLEFBQWlCLEFBQ3hEOztRQUFJLE1BQU0sQUFBVixBQUNBO1NBQUssSUFBSSxJQUFJLEFBQWIsT0FBb0IsSUFBSSxBQUF4QixHQUEyQixBQUEzQixLQUFnQyxBQUM1QjtZQUFJLEFBQUosS0FBUyxHQUFHLEFBQUgsTUFBUyxBQUFULEFBQVQsQUFDSDtBQUNEO09BQUcsQUFBSCxNQUFTLEFBQVQsS0FBYyxBQUFJLEFBQUosNEJBQW9CLElBQUksQUFBSixBQUFwQixBQUFkLEFBQ0g7QUFORCIsImZpbGUiOiJsaWIvY29tcGlsZWQvb3Bjb2Rlcy9leHByZXNzaW9ucy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUEVORF9PUENPREVTIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBDb25jYXRSZWZlcmVuY2UgfSBmcm9tICcuLi9leHByZXNzaW9ucy9jb25jYXQnO1xuaW1wb3J0IHsgVFJVRV9SRUZFUkVOQ0UsIEZBTFNFX1JFRkVSRU5DRSB9IGZyb20gJy4uLy4uL3JlZmVyZW5jZXMnO1xuQVBQRU5EX09QQ09ERVMuYWRkKDEgLyogSGVscGVyICovLCAodm0sIHsgb3AxOiBfaGVscGVyIH0pID0+IHtcbiAgICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgICBsZXQgaGVscGVyID0gdm0uY29uc3RhbnRzLmdldEZ1bmN0aW9uKF9oZWxwZXIpO1xuICAgIGxldCBhcmdzID0gc3RhY2sucG9wKCk7XG4gICAgbGV0IHZhbHVlID0gaGVscGVyKHZtLCBhcmdzKTtcbiAgICBhcmdzLmNsZWFyKCk7XG4gICAgdm0uc3RhY2sucHVzaCh2YWx1ZSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCgyIC8qIEZ1bmN0aW9uICovLCAodm0sIHsgb3AxOiBfZnVuY3Rpb24gfSkgPT4ge1xuICAgIGxldCBmdW5jID0gdm0uY29uc3RhbnRzLmdldEZ1bmN0aW9uKF9mdW5jdGlvbik7XG4gICAgdm0uc3RhY2sucHVzaChmdW5jKHZtKSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg1IC8qIEdldFZhcmlhYmxlICovLCAodm0sIHsgb3AxOiBzeW1ib2wgfSkgPT4ge1xuICAgIGxldCBleHByID0gdm0ucmVmZXJlbmNlRm9yU3ltYm9sKHN5bWJvbCk7XG4gICAgdm0uc3RhY2sucHVzaChleHByKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDQgLyogU2V0VmFyaWFibGUgKi8sICh2bSwgeyBvcDE6IHN5bWJvbCB9KSA9PiB7XG4gICAgbGV0IGV4cHIgPSB2bS5zdGFjay5wb3AoKTtcbiAgICB2bS5zY29wZSgpLmJpbmRTeW1ib2woc3ltYm9sLCBleHByKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDcwIC8qIFJlc29sdmVNYXliZUxvY2FsICovLCAodm0sIHsgb3AxOiBfbmFtZSB9KSA9PiB7XG4gICAgbGV0IG5hbWUgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKF9uYW1lKTtcbiAgICBsZXQgbG9jYWxzID0gdm0uc2NvcGUoKS5nZXRQYXJ0aWFsTWFwKCk7XG4gICAgbGV0IHJlZiA9IGxvY2Fsc1tuYW1lXTtcbiAgICBpZiAocmVmID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmVmID0gdm0uZ2V0U2VsZigpLmdldChuYW1lKTtcbiAgICB9XG4gICAgdm0uc3RhY2sucHVzaChyZWYpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMTkgLyogUm9vdFNjb3BlICovLCAodm0sIHsgb3AxOiBzeW1ib2xzLCBvcDI6IGJpbmRDYWxsZXJTY29wZSB9KSA9PiB7XG4gICAgdm0ucHVzaFJvb3RTY29wZShzeW1ib2xzLCAhIWJpbmRDYWxsZXJTY29wZSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2IC8qIEdldFByb3BlcnR5ICovLCAodm0sIHsgb3AxOiBfa2V5IH0pID0+IHtcbiAgICBsZXQga2V5ID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyhfa2V5KTtcbiAgICBsZXQgZXhwciA9IHZtLnN0YWNrLnBvcCgpO1xuICAgIHZtLnN0YWNrLnB1c2goZXhwci5nZXQoa2V5KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg3IC8qIFB1c2hCbG9jayAqLywgKHZtLCB7IG9wMTogX2Jsb2NrIH0pID0+IHtcbiAgICBsZXQgYmxvY2sgPSBfYmxvY2sgPyB2bS5jb25zdGFudHMuZ2V0QmxvY2soX2Jsb2NrKSA6IG51bGw7XG4gICAgdm0uc3RhY2sucHVzaChibG9jayk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg4IC8qIEdldEJsb2NrICovLCAodm0sIHsgb3AxOiBfYmxvY2sgfSkgPT4ge1xuICAgIHZtLnN0YWNrLnB1c2godm0uc2NvcGUoKS5nZXRCbG9jayhfYmxvY2spKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDkgLyogSGFzQmxvY2sgKi8sICh2bSwgeyBvcDE6IF9ibG9jayB9KSA9PiB7XG4gICAgbGV0IGhhc0Jsb2NrID0gISF2bS5zY29wZSgpLmdldEJsb2NrKF9ibG9jayk7XG4gICAgdm0uc3RhY2sucHVzaChoYXNCbG9jayA/IFRSVUVfUkVGRVJFTkNFIDogRkFMU0VfUkVGRVJFTkNFKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDEwIC8qIEhhc0Jsb2NrUGFyYW1zICovLCAodm0sIHsgb3AxOiBfYmxvY2sgfSkgPT4ge1xuICAgIGxldCBibG9jayA9IHZtLnNjb3BlKCkuZ2V0QmxvY2soX2Jsb2NrKTtcbiAgICBsZXQgaGFzQmxvY2tQYXJhbXMgPSBibG9jayAmJiBibG9jay5zeW1ib2xUYWJsZS5wYXJhbWV0ZXJzLmxlbmd0aDtcbiAgICB2bS5zdGFjay5wdXNoKGhhc0Jsb2NrUGFyYW1zID8gVFJVRV9SRUZFUkVOQ0UgOiBGQUxTRV9SRUZFUkVOQ0UpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMTEgLyogQ29uY2F0ICovLCAodm0sIHsgb3AxOiBjb3VudCB9KSA9PiB7XG4gICAgbGV0IG91dCA9IFtdO1xuICAgIGZvciAobGV0IGkgPSBjb3VudDsgaSA+IDA7IGktLSkge1xuICAgICAgICBvdXQucHVzaCh2bS5zdGFjay5wb3AoKSk7XG4gICAgfVxuICAgIHZtLnN0YWNrLnB1c2gobmV3IENvbmNhdFJlZmVyZW5jZShvdXQucmV2ZXJzZSgpKSk7XG59KTsiXX0=

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

var _opcodes = require("../../opcodes");
var _reference = require("@glimmer/reference");

@@ -13,4 +15,2 @@

var _opcodes = require("../../opcodes");
var _references = require("../../references");

@@ -218,3 +218,3 @@

_this.type = 'assert';
_this.type = "assert";
_this.tag = cache.tag;

@@ -245,6 +245,6 @@ _this.cache = cache;

return {
guid: _guid,
type: type,
args: [],
details: { expected: expected },
guid: _guid,
type: type
details: { expected: expected }
};

@@ -264,3 +264,3 @@ };

_this2.target = target;
_this2.type = 'jump-if-not-modified';
_this2.type = "jump-if-not-modified";
_this2.tag = tag;

@@ -287,5 +287,5 @@ _this2.lastRevision = tag.value();

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

@@ -305,3 +305,3 @@ };

_this3.target = target;
_this3.type = 'did-modify';
_this3.type = "did-modify";
_this3.tag = _reference.CONSTANT_TAG;

@@ -322,3 +322,3 @@ return _this3;

this.tag = _reference.CONSTANT_TAG;
this.type = 'label';
this.type = "label";
this.label = null;

@@ -328,3 +328,3 @@ this.prev = null;

(0, _util.initializeGuid)(this);
this.label = label;
if (label) this.label = label;
}

@@ -340,5 +340,5 @@

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

@@ -349,2 +349,2 @@ };

}();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL3ZtLmpzIl0sIm5hbWVzIjpbIkNvbnN0UmVmZXJlbmNlIiwiQ09OU1RBTlRfVEFHIiwiaXNDb25zdCIsImlzTW9kaWZpZWQiLCJSZWZlcmVuY2VDYWNoZSIsImluaXRpYWxpemVHdWlkIiwiQVBQRU5EX09QQ09ERVMiLCJVcGRhdGluZ09wY29kZSIsIkZBTFNFX1JFRkVSRU5DRSIsIk5VTExfUkVGRVJFTkNFIiwiUHJpbWl0aXZlUmVmZXJlbmNlIiwiVFJVRV9SRUZFUkVOQ0UiLCJVTkRFRklORURfUkVGRVJFTkNFIiwiYWRkIiwidm0iLCJwdXNoQ2hpbGRTY29wZSIsInBvcFNjb3BlIiwicHVzaER5bmFtaWNTY29wZSIsInBvcER5bmFtaWNTY29wZSIsIm51bWJlciIsIm9wMSIsInN0YWNrIiwicHVzaCIsIm90aGVyIiwiY29uc3RhbnRzIiwiZ2V0T3RoZXIiLCJwcmltaXRpdmUiLCJmbGFnIiwidmFsdWUiLCJjcmVhdGUiLCJnZXRTdHJpbmciLCJyZWdpc3RlciIsIm9mZnNldCIsIm9wMiIsInBvc2l0aW9uIiwiZmV0Y2hWYWx1ZSIsImR1cCIsImNvdW50IiwicG9wIiwibG9hZCIsImZldGNoIiwiX25hbWVzIiwibmFtZXMiLCJnZXRBcnJheSIsImJpbmREeW5hbWljU2NvcGUiLCJwdXNoRnJhbWUiLCJwb3BGcmFtZSIsImFyZ3MiLCJlbnRlciIsImV4aXQiLCJibG9jayIsImNvbXBpbGVEeW5hbWljIiwiZW52IiwiX2Jsb2NrIiwiZ2V0QmxvY2siLCJjb21waWxlZCIsImNvbXBpbGVTdGF0aWMiLCJjYWxsIiwic3RhcnQiLCJfaW52b2tlciIsImludm9rZXIiLCJpbnZva2UiLCJ0YXJnZXQiLCJnb3RvIiwicmVmZXJlbmNlIiwiY2FjaGUiLCJwZWVrIiwidXBkYXRlV2l0aCIsIkFzc2VydCIsInJldHVybiIsIkNvbnN0VGVzdCIsInJlZiIsIl9lbnYiLCJTaW1wbGVUZXN0IiwiRW52aXJvbm1lbnRUZXN0IiwidG9Db25kaXRpb25hbFJlZmVyZW5jZSIsIl9mdW5jIiwib3BlcmFuZCIsImZ1bmMiLCJnZXRGdW5jdGlvbiIsInR5cGUiLCJ0YWciLCJldmFsdWF0ZSIsInJldmFsaWRhdGUiLCJ0aHJvdyIsInRvSlNPTiIsIl9ndWlkIiwiZXhwZWN0ZWQiLCJKU09OIiwic3RyaW5naWZ5IiwiZSIsIlN0cmluZyIsImRldGFpbHMiLCJndWlkIiwiSnVtcElmTm90TW9kaWZpZWRPcGNvZGUiLCJsYXN0UmV2aXNpb24iLCJhbHdheXNSZXZhbGlkYXRlIiwidmFsaWRhdGUiLCJkaWRNb2RpZnkiLCJpbnNwZWN0IiwiRGlkTW9kaWZ5T3Bjb2RlIiwiTGFiZWxPcGNvZGUiLCJsYWJlbCIsInByZXYiLCJuZXh0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsQUFBUyxBQUFzQixBQUMvQixBQUFTLEFBQWMsQUFBUyxBQUFZLEFBQXNCOztBQUNsRSxBQUFTLEFBQXNCOztBQUMvQixBQUFTLEFBQWdCLEFBQXNCOztBQUMvQyxBQUFTLEFBQWlCLEFBQWdCLEFBQW9CLEFBQWdCLEFBQTJCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ3pHLHdCQUFBLEFBQWUsSUFBZixBQUFtQixHQUFuQixBQUFzQixrQkFBa0IsY0FBQTtXQUFNLEdBQU4sQUFBTSxBQUFHO0FBQWpEO0FBQ0Esd0JBQUEsQUFBZSxJQUFmLEFBQW1CLEdBQW5CLEFBQXNCLGdCQUFnQixjQUFBO1dBQU0sR0FBTixBQUFNLEFBQUc7QUFBL0M7QUFDQSx3QkFBQSxBQUFlLElBQWYsQUFBbUIsR0FBbkIsQUFBc0Isd0JBQXdCLGNBQUE7V0FBTSxHQUFOLEFBQU0sQUFBRztBQUF2RDtBQUNBLHdCQUFBLEFBQWUsSUFBZixBQUFtQixHQUFuQixBQUFzQix1QkFBdUIsY0FBQTtXQUFNLEdBQU4sQUFBTSxBQUFHO0FBQXREO0FBQ0Esd0JBQUEsQUFBZSxJQUFmLEFBQW1CLEdBQW5CLEFBQXNCLGlCQUFpQixVQUFBLEFBQUMsVUFBd0I7UUFBYixBQUFhLGNBQWxCLEFBQWtCLEFBQzVEOztPQUFBLEFBQUcsTUFBSCxBQUFTLEtBQVQsQUFBYyxBQUNqQjtBQUZEO0FBR0Esd0JBQUEsQUFBZSxJQUFmLEFBQW1CLEdBQW5CLEFBQXNCLGdCQUFnQixVQUFBLEFBQUMsV0FBdUI7UUFBWixBQUFZLGNBQWpCLEFBQWlCLEFBQzFEOztPQUFBLEFBQUcsTUFBSCxBQUFTLEtBQUssR0FBQSxBQUFHLFVBQUgsQUFBYSxTQUEzQixBQUFjLEFBQXNCLEFBQ3ZDO0FBRkQ7QUFHQSx3QkFBQSxBQUFlLElBQWYsQUFBbUIsR0FBbkIsQUFBc0IsMEJBQTBCLFVBQUEsQUFBQyxXQUEyQjtRQUFoQixBQUFnQixrQkFBckIsQUFBcUIsQUFDeEU7O1FBQUksUUFBUSxHQUFaLEFBQWUsQUFDZjtRQUFJLE9BQU8sQ0FBQyxZQUFZLEtBQWIsQUFBa0IsUUFBN0IsQUFBcUMsQUFDckM7UUFBSSxRQUFRLFlBQVksRUFBRSxLQUExQixBQUF3QixBQUFPLEFBQy9CO1lBQUEsQUFBUSxBQUNKO2FBQUEsQUFBSyxBQUNEO2tCQUFBLEFBQU0sS0FBSywrQkFBQSxBQUFtQixPQUE5QixBQUFXLEFBQTBCLEFBQ3JDO0FBQ0o7YUFBQSxBQUFLLEFBQ0Q7a0JBQUEsQUFBTSxLQUFLLCtCQUFBLEFBQW1CLE9BQU8sR0FBQSxBQUFHLFVBQUgsQUFBYSxVQUFsRCxBQUFXLEFBQTBCLEFBQXVCLEFBQzVEO0FBQ0o7YUFBQSxBQUFLLEFBQ0Q7b0JBQUEsQUFBUSxBQUNKO3FCQUFBLEFBQUssQUFDRDswQkFBQSxBQUFNLEFBQUssQUFDWDtBQUNKO3FCQUFBLEFBQUssQUFDRDswQkFBQSxBQUFNLEFBQUssQUFDWDtBQUNKO3FCQUFBLEFBQUssQUFDRDswQkFBQSxBQUFNLEFBQUssQUFDWDtBQUNKO3FCQUFBLEFBQUssQUFDRDswQkFBQSxBQUFNLEFBQUssQUFDWDtBQVpSLEFBY0E7O0FBdEJSLEFBd0JIOztBQTVCRDtBQTZCQSx3QkFBQSxBQUFlLElBQWYsQUFBbUIsR0FBbkIsQUFBc0IsV0FBVyxVQUFBLEFBQUMsV0FBdUM7UUFBNUIsQUFBNEIsaUJBQWpDLEFBQWlDO1FBQWIsQUFBYSxlQUFsQixBQUFrQixBQUNyRTs7UUFBSSxXQUFXLEdBQUEsQUFBRyxXQUFILEFBQWMsWUFBN0IsQUFBeUMsQUFDekM7T0FBQSxBQUFHLE1BQUgsQUFBUyxJQUFULEFBQWEsQUFDaEI7QUFIRDtBQUlBLHdCQUFBLEFBQWUsSUFBZixBQUFtQixHQUFuQixBQUFzQixXQUFXLFVBQUEsQUFBQyxXQUFEO1FBQUEsQUFBWSxjQUFaLEFBQU87V0FBaUIsR0FBQSxBQUFHLE1BQUgsQUFBUyxJQUFqQyxBQUF3QixBQUFhO0FBQXRFO0FBQ0Esd0JBQUEsQUFBZSxJQUFmLEFBQW1CLEdBQW5CLEFBQXNCLFlBQVksVUFBQSxBQUFDLFdBQUQ7UUFBQSxBQUFZLGlCQUFaLEFBQU87V0FBb0IsR0FBQSxBQUFHLEtBQTlCLEFBQTJCLEFBQVE7QUFBckU7QUFDQSx3QkFBQSxBQUFlLElBQWYsQUFBbUIsR0FBbkIsQUFBc0IsYUFBYSxVQUFBLEFBQUMsV0FBRDtRQUFBLEFBQVksaUJBQVosQUFBTztXQUFvQixHQUFBLEFBQUcsTUFBOUIsQUFBMkIsQUFBUztBQUF2RTtBQUNBLHdCQUFBLEFBQWUsSUFBZixBQUFtQixHQUFuQixBQUFzQix3QkFBd0IsVUFBQSxBQUFDLFdBQXdCO1FBQWIsQUFBYSxlQUFsQixBQUFrQixBQUNuRTs7UUFBSSxRQUFRLEdBQUEsQUFBRyxVQUFILEFBQWEsU0FBekIsQUFBWSxBQUFzQixBQUNsQztPQUFBLEFBQUcsaUJBQUgsQUFBb0IsQUFDdkI7QUFIRDtBQUlBLHdCQUFBLEFBQWUsSUFBZixBQUFtQixHQUFuQixBQUFzQixpQkFBaUIsY0FBQTtXQUFNLEdBQU4sQUFBTSxBQUFHO0FBQWhEO0FBQ0Esd0JBQUEsQUFBZSxJQUFmLEFBQW1CLEdBQW5CLEFBQXNCLGdCQUFnQixjQUFBO1dBQU0sR0FBTixBQUFNLEFBQUc7QUFBL0M7QUFDQSx3QkFBQSxBQUFlLElBQWYsQUFBbUIsR0FBbkIsQUFBc0IsYUFBYSxVQUFBLEFBQUMsV0FBRDtRQUFBLEFBQVksYUFBWixBQUFPO1dBQWdCLEdBQUEsQUFBRyxNQUExQixBQUF1QixBQUFTO0FBQW5FO0FBQ0Esd0JBQUEsQUFBZSxJQUFmLEFBQW1CLEdBQW5CLEFBQXNCLFlBQVksY0FBQTtXQUFNLEdBQU4sQUFBTSxBQUFHO0FBQTNDO0FBQ0Esd0JBQUEsQUFBZSxJQUFmLEFBQW1CLEdBQW5CLEFBQXNCLDJCQUEyQixjQUFNLEFBQ25EO1FBQUksUUFBUSxHQUFaLEFBQWUsQUFDZjtRQUFJLFFBQVEsTUFBWixBQUFZLEFBQU0sQUFDbEI7VUFBQSxBQUFNLEtBQUssUUFBUSxNQUFBLEFBQU0sZUFBZSxHQUE3QixBQUFRLEFBQXdCLE9BQTNDLEFBQWtELEFBQ3JEO0FBSkQ7QUFLQSx3QkFBQSxBQUFlLElBQWYsQUFBbUIsR0FBbkIsQUFBc0Isb0JBQW9CLFVBQUEsQUFBQyxZQUF3QjtRQUFiLEFBQWEsZ0JBQWxCLEFBQWtCLEFBQy9EOztRQUFJLFFBQVEsR0FBQSxBQUFHLFVBQUgsQUFBYSxTQUF6QixBQUFZLEFBQXNCLEFBQ2xDO1FBQUksV0FBVyxNQUFBLEFBQU0sY0FBYyxHQUFuQyxBQUFlLEFBQXVCLEFBQ3RDO09BQUEsQUFBRyxLQUFLLFNBQVIsQUFBaUIsQUFDcEI7QUFKRDtBQUtBLHdCQUFBLEFBQWUsSUFBZixBQUFtQixHQUFuQixBQUFzQixxQkFBcUIsVUFBQSxBQUFDLFlBQTBCO1FBQWYsQUFBZSxrQkFBcEIsQUFBb0IsQUFDbEU7O1FBQUksVUFBVSxHQUFBLEFBQUcsVUFBSCxBQUFhLFNBQTNCLEFBQWMsQUFBc0IsQUFDcEM7UUFBSSxRQUFRLEdBQUEsQUFBRyxNQUFmLEFBQVksQUFBUyxBQUNyQjtZQUFBLEFBQVEsT0FBUixBQUFlLElBQWYsQUFBbUIsQUFDdEI7QUFKRDtBQUtBLHdCQUFBLEFBQWUsSUFBZixBQUFtQixHQUFuQixBQUFzQixZQUFZLFVBQUEsQUFBQyxZQUFEO1FBQUEsQUFBWSxnQkFBWixBQUFPO1dBQWtCLEdBQUEsQUFBRyxLQUE1QixBQUF5QixBQUFRO0FBQW5FO0FBQ0Esd0JBQUEsQUFBZSxJQUFmLEFBQW1CLEdBQW5CLEFBQXNCLGNBQWMsVUFBQSxBQUFDLFlBQXdCO1FBQWIsQUFBYSxnQkFBbEIsQUFBa0IsQUFDekQ7O1FBQUksWUFBWSxHQUFBLEFBQUcsTUFBbkIsQUFBZ0IsQUFBUyxBQUN6QjtRQUFJLHdCQUFKLEFBQUksQUFBUSxZQUFZLEFBQ3BCO1lBQUksVUFBSixBQUFJLEFBQVUsU0FBUyxBQUNuQjtlQUFBLEFBQUcsS0FBSCxBQUFRLEFBQ1g7QUFDSjtBQUpELFdBSU8sQUFDSDtZQUFJLFFBQVEsQUFBSSw4QkFBaEIsQUFBWSxBQUFtQixBQUMvQjtZQUFJLE1BQUosQUFBSSxBQUFNLFFBQVEsQUFDZDtlQUFBLEFBQUcsS0FBSCxBQUFRLEFBQ1g7QUFDRDtXQUFBLEFBQUcsV0FBVyxJQUFBLEFBQUksT0FBbEIsQUFBYyxBQUFXLEFBQzVCO0FBQ0o7QUFiRDtBQWNBLHdCQUFBLEFBQWUsSUFBZixBQUFtQixHQUFuQixBQUFzQixrQkFBa0IsVUFBQSxBQUFDLFlBQXdCO1FBQWIsQUFBYSxnQkFBbEIsQUFBa0IsQUFDN0Q7O1FBQUksWUFBWSxHQUFBLEFBQUcsTUFBbkIsQUFBZ0IsQUFBUyxBQUN6QjtRQUFJLHdCQUFKLEFBQUksQUFBUSxZQUFZLEFBQ3BCO1lBQUksQ0FBQyxVQUFMLEFBQUssQUFBVSxTQUFTLEFBQ3BCO2VBQUEsQUFBRyxLQUFILEFBQVEsQUFDWDtBQUNKO0FBSkQsV0FJTyxBQUNIO1lBQUksUUFBUSxBQUFJLDhCQUFoQixBQUFZLEFBQW1CLEFBQy9CO1lBQUksQ0FBQyxNQUFMLEFBQUssQUFBTSxRQUFRLEFBQ2Y7ZUFBQSxBQUFHLEtBQUgsQUFBUSxBQUNYO0FBQ0Q7V0FBQSxBQUFHLFdBQVcsSUFBQSxBQUFJLE9BQWxCLEFBQWMsQUFBVyxBQUM1QjtBQUNKO0FBYkQ7QUFjQSx3QkFBQSxBQUFlLElBQWYsQUFBbUIsR0FBbkIsQUFBc0IsY0FBYyxjQUFBO1dBQU0sR0FBTixBQUFNLEFBQUc7QUFBN0MsQUFDQTtBQUFPLElBQU0sZ0NBQVksVUFBQSxBQUFVLEtBQVYsQUFBZSxNQUFNLEFBQzFDO1dBQU8sQUFBSSw4QkFBZSxDQUFDLENBQUMsSUFBNUIsQUFBTyxBQUFxQixBQUFJLEFBQ25DO0FBRk0sQUFHUDtBQUFPLElBQU0sa0NBQWEsVUFBQSxBQUFVLEtBQVYsQUFBZSxNQUFNLEFBQzNDO1dBQUEsQUFBTyxBQUNWO0FBRk0sQUFHUDtBQUFPLElBQU0sNENBQWtCLFVBQUEsQUFBVSxLQUFWLEFBQWUsS0FBSyxBQUMvQztXQUFPLElBQUEsQUFBSSx1QkFBWCxBQUFPLEFBQTJCLEFBQ3JDO0FBRk07QUFHUCx3QkFBQSxBQUFlLElBQWYsQUFBbUIsR0FBbkIsQUFBc0IsWUFBWSxVQUFBLEFBQUMsWUFBdUI7UUFBWixBQUFZLGVBQWpCLEFBQWlCLEFBQ3REOztRQUFJLFFBQVEsR0FBWixBQUFlLEFBQ2Y7UUFBSSxVQUFVLE1BQWQsQUFBYyxBQUFNLEFBQ3BCO1FBQUksT0FBTyxHQUFBLEFBQUcsVUFBSCxBQUFhLFlBQXhCLEFBQVcsQUFBeUIsQUFDcEM7VUFBQSxBQUFNLEtBQUssS0FBQSxBQUFLLFNBQVMsR0FBekIsQUFBVyxBQUFpQixBQUMvQjtBQUxELEFBTUE7SUFBQSxBQUFhLHFEQUFiO3NCQUNJOztvQkFBQSxBQUFZLE9BQU87OEJBQUE7O3FEQUNmLHFCQURlLEFBRWY7O2NBQUEsQUFBSyxPQUFMLEFBQVksQUFDWjtjQUFBLEFBQUssTUFBTSxNQUFYLEFBQWlCLEFBQ2pCO2NBQUEsQUFBSyxRQUpVLEFBSWYsQUFBYTtlQUNoQjtBQU5MOztxQkFBQSxBQU9JLDZCQVBKLEFBT2EsSUFBSTtZQUFBLEFBQ0gsUUFERyxBQUNPLEtBRFAsQUFDSCxBQUNOOztZQUFJLDJCQUFXLE1BQWYsQUFBSSxBQUFXLEFBQU0sZUFBZSxBQUNoQztlQUFBLEFBQUcsQUFDTjtBQUNKO0FBWkw7O3FCQUFBLEFBYUksMkJBQVM7WUFBQSxBQUNDLE9BREQsQUFDd0IsS0FEeEIsQUFDQztZQURELEFBQ08sUUFEUCxBQUN3QixLQUR4QixBQUNPO1lBRFAsQUFDYyxRQURkLEFBQ3dCLEtBRHhCLEFBQ2MsQUFDbkI7O1lBQUksZ0JBQUosQUFDQTtZQUFJLEFBQ0E7dUJBQVcsS0FBQSxBQUFLLFVBQVUsTUFBMUIsQUFBVyxBQUFlLEFBQU0sQUFDbkM7QUFGRCxVQUVFLE9BQUEsQUFBTyxHQUFHLEFBQ1I7dUJBQVcsT0FBTyxNQUFsQixBQUFXLEFBQU8sQUFBTSxBQUMzQjtBQUNEOztrQkFBTyxBQUNHLEFBQ047cUJBQVMsRUFBRSxVQUZSLEFBRU0sQUFDVDtrQkFIRyxBQUdHLEFBQ047a0JBSkosQUFBTyxBQU1WO0FBTlUsQUFDSDtBQXRCWjs7V0FBQTtBQUFBLEFBQTRCLEFBNkI1QjtJQUFBLEFBQWEsd0ZBQWI7dUNBQ0k7O3FDQUFBLEFBQVksS0FBWixBQUFpQixRQUFROzhCQUFBOztzREFDckIsc0JBRHFCLEFBRXJCOztlQUFBLEFBQUssU0FBTCxBQUFjLEFBQ2Q7ZUFBQSxBQUFLLE9BQUwsQUFBWSxBQUNaO2VBQUEsQUFBSyxNQUFMLEFBQVcsQUFDWDtlQUFBLEFBQUssZUFBZSxJQUxDLEFBS3JCLEFBQW9CLEFBQUk7ZUFDM0I7QUFQTDs7c0NBQUEsQUFRSSw2QkFSSixBQVFhLElBQUk7WUFBQSxBQUNILE1BREcsQUFDMkIsS0FEM0IsQUFDSDtZQURHLEFBQ0UsU0FERixBQUMyQixLQUQzQixBQUNFO1lBREYsQUFDVSxlQURWLEFBQzJCLEtBRDNCLEFBQ1UsQUFDbkI7O1lBQUksQ0FBQyxHQUFELEFBQUksb0JBQW9CLElBQUEsQUFBSSxTQUFoQyxBQUE0QixBQUFhLGVBQWUsQUFDcEQ7ZUFBQSxBQUFHLEtBQUgsQUFBUSxBQUNYO0FBQ0o7QUFiTDs7c0NBQUEsQUFjSSxpQ0FBWSxBQUNSO2FBQUEsQUFBSyxlQUFlLEtBQUEsQUFBSyxJQUF6QixBQUFvQixBQUFTLEFBQ2hDO0FBaEJMOztzQ0FBQSxBQWlCSSwyQkFBUyxBQUNMOztrQkFDVSxDQUFDLEtBQUEsQUFBSyxVQUFVLEtBQUEsQUFBSyxPQUR4QixBQUNHLEFBQUMsQUFBZSxBQUFZLEFBQ2xDO2tCQUFNLEtBRkgsQUFFUSxBQUNYO2tCQUFNLEtBSFYsQUFBTyxBQUdRLEFBRWxCO0FBTFUsQUFDSDtBQW5CWjs7V0FBQTtBQUFBLEFBQTZDLEFBeUI3QztJQUFBLEFBQWEsd0VBQWI7K0JBQ0k7OzZCQUFBLEFBQVksUUFBUTs4QkFBQTs7c0RBQ2hCLHNCQURnQixBQUVoQjs7ZUFBQSxBQUFLLFNBQUwsQUFBYyxBQUNkO2VBQUEsQUFBSyxPQUFMLEFBQVksQUFDWjtlQUpnQixBQUloQixBQUFLLEFBQU07ZUFDZDtBQU5MOzs4QkFBQSxBQU9JLCtCQUFXLEFBQ1A7YUFBQSxBQUFLLE9BQUwsQUFBWSxBQUNmO0FBVEw7O1dBQUE7QUFBQSxBQUFxQyxBQVdyQztJQUFBLEFBQWEsZ0RBQ1Q7eUJBQUEsQUFBWSxPQUFPOzhCQUNmOzthQUFBLEFBQUssQUFBTSxBQUNYO2FBQUEsQUFBSyxPQUFMLEFBQVksQUFDWjthQUFBLEFBQUssUUFBTCxBQUFhLEFBQ2I7YUFBQSxBQUFLLE9BQUwsQUFBWSxBQUNaO2FBQUEsQUFBSyxPQUFMLEFBQVksQUFDWjtrQ0FBQSxBQUFlLEFBQ2Y7YUFBQSxBQUFLLFFBQUwsQUFBYSxBQUNoQjtBQVRMOzswQkFBQSxBQVVJLCtCQUFXLEFBQUUsQ0FWakI7OzBCQUFBLEFBV0ksNkJBQVUsQUFDTjtlQUFVLEtBQVYsQUFBZSxlQUFVLEtBQXpCLEFBQThCLFFBQ2pDO0FBYkw7OzBCQUFBLEFBY0ksMkJBQVMsQUFDTDs7a0JBQ1UsQ0FBQyxLQUFBLEFBQUssVUFBVSxLQURuQixBQUNHLEFBQUMsQUFBZSxBQUFLLEFBQzNCO2tCQUFNLEtBRkgsQUFFUSxBQUNYO2tCQUFNLEtBSFYsQUFBTyxBQUdRLEFBRWxCO0FBTFUsQUFDSDtBQWhCWjs7V0FBQSIsImZpbGUiOiJsaWIvY29tcGlsZWQvb3Bjb2Rlcy92bS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0UmVmZXJlbmNlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IENPTlNUQU5UX1RBRywgaXNDb25zdCwgaXNNb2RpZmllZCwgUmVmZXJlbmNlQ2FjaGUgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgaW5pdGlhbGl6ZUd1aWQgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IEFQUEVORF9PUENPREVTLCBVcGRhdGluZ09wY29kZSB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IHsgRkFMU0VfUkVGRVJFTkNFLCBOVUxMX1JFRkVSRU5DRSwgUHJpbWl0aXZlUmVmZXJlbmNlLCBUUlVFX1JFRkVSRU5DRSwgVU5ERUZJTkVEX1JFRkVSRU5DRSB9IGZyb20gJy4uLy4uL3JlZmVyZW5jZXMnO1xuQVBQRU5EX09QQ09ERVMuYWRkKDIwIC8qIENoaWxkU2NvcGUgKi8sIHZtID0+IHZtLnB1c2hDaGlsZFNjb3BlKCkpO1xuQVBQRU5EX09QQ09ERVMuYWRkKDIxIC8qIFBvcFNjb3BlICovLCB2bSA9PiB2bS5wb3BTY29wZSgpKTtcbkFQUEVORF9PUENPREVTLmFkZCgzOCAvKiBQdXNoRHluYW1pY1Njb3BlICovLCB2bSA9PiB2bS5wdXNoRHluYW1pY1Njb3BlKCkpO1xuQVBQRU5EX09QQ09ERVMuYWRkKDM5IC8qIFBvcER5bmFtaWNTY29wZSAqLywgdm0gPT4gdm0ucG9wRHluYW1pY1Njb3BlKCkpO1xuQVBQRU5EX09QQ09ERVMuYWRkKDEyIC8qIEltbWVkaWF0ZSAqLywgKHZtLCB7IG9wMTogbnVtYmVyIH0pID0+IHtcbiAgICB2bS5zdGFjay5wdXNoKG51bWJlcik7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCgxMyAvKiBDb25zdGFudCAqLywgKHZtLCB7IG9wMTogb3RoZXIgfSkgPT4ge1xuICAgIHZtLnN0YWNrLnB1c2godm0uY29uc3RhbnRzLmdldE90aGVyKG90aGVyKSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCgxNCAvKiBQcmltaXRpdmVSZWZlcmVuY2UgKi8sICh2bSwgeyBvcDE6IHByaW1pdGl2ZSB9KSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IGZsYWcgPSAocHJpbWl0aXZlICYgMyA8PCAzMCkgPj4+IDMwO1xuICAgIGxldCB2YWx1ZSA9IHByaW1pdGl2ZSAmIH4oMyA8PCAzMCk7XG4gICAgc3dpdGNoIChmbGFnKSB7XG4gICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgIHN0YWNrLnB1c2goUHJpbWl0aXZlUmVmZXJlbmNlLmNyZWF0ZSh2YWx1ZSkpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIHN0YWNrLnB1c2goUHJpbWl0aXZlUmVmZXJlbmNlLmNyZWF0ZSh2bS5jb25zdGFudHMuZ2V0U3RyaW5nKHZhbHVlKSkpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIHN3aXRjaCAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgIHN0YWNrLnB1c2goRkFMU0VfUkVGRVJFTkNFKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKFRSVUVfUkVGRVJFTkNFKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKE5VTExfUkVGRVJFTkNFKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKFVOREVGSU5FRF9SRUZFUkVOQ0UpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDE1IC8qIER1cCAqLywgKHZtLCB7IG9wMTogcmVnaXN0ZXIsIG9wMjogb2Zmc2V0IH0pID0+IHtcbiAgICBsZXQgcG9zaXRpb24gPSB2bS5mZXRjaFZhbHVlKHJlZ2lzdGVyKSAtIG9mZnNldDtcbiAgICB2bS5zdGFjay5kdXAocG9zaXRpb24pO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMTYgLyogUG9wICovLCAodm0sIHsgb3AxOiBjb3VudCB9KSA9PiB2bS5zdGFjay5wb3AoY291bnQpKTtcbkFQUEVORF9PUENPREVTLmFkZCgxNyAvKiBMb2FkICovLCAodm0sIHsgb3AxOiByZWdpc3RlciB9KSA9PiB2bS5sb2FkKHJlZ2lzdGVyKSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMTggLyogRmV0Y2ggKi8sICh2bSwgeyBvcDE6IHJlZ2lzdGVyIH0pID0+IHZtLmZldGNoKHJlZ2lzdGVyKSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMzcgLyogQmluZER5bmFtaWNTY29wZSAqLywgKHZtLCB7IG9wMTogX25hbWVzIH0pID0+IHtcbiAgICBsZXQgbmFtZXMgPSB2bS5jb25zdGFudHMuZ2V0QXJyYXkoX25hbWVzKTtcbiAgICB2bS5iaW5kRHluYW1pY1Njb3BlKG5hbWVzKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDQ2IC8qIFB1c2hGcmFtZSAqLywgdm0gPT4gdm0ucHVzaEZyYW1lKCkpO1xuQVBQRU5EX09QQ09ERVMuYWRkKDQ3IC8qIFBvcEZyYW1lICovLCB2bSA9PiB2bS5wb3BGcmFtZSgpKTtcbkFQUEVORF9PUENPREVTLmFkZCg0OCAvKiBFbnRlciAqLywgKHZtLCB7IG9wMTogYXJncyB9KSA9PiB2bS5lbnRlcihhcmdzKSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNDkgLyogRXhpdCAqLywgdm0gPT4gdm0uZXhpdCgpKTtcbkFQUEVORF9PUENPREVTLmFkZCg0MCAvKiBDb21waWxlRHluYW1pY0Jsb2NrICovLCB2bSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IGJsb2NrID0gc3RhY2sucG9wKCk7XG4gICAgc3RhY2sucHVzaChibG9jayA/IGJsb2NrLmNvbXBpbGVEeW5hbWljKHZtLmVudikgOiBudWxsKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDQxIC8qIEludm9rZVN0YXRpYyAqLywgKHZtLCB7IG9wMTogX2Jsb2NrIH0pID0+IHtcbiAgICBsZXQgYmxvY2sgPSB2bS5jb25zdGFudHMuZ2V0QmxvY2soX2Jsb2NrKTtcbiAgICBsZXQgY29tcGlsZWQgPSBibG9jay5jb21waWxlU3RhdGljKHZtLmVudik7XG4gICAgdm0uY2FsbChjb21waWxlZC5zdGFydCk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg0MiAvKiBJbnZva2VEeW5hbWljICovLCAodm0sIHsgb3AxOiBfaW52b2tlciB9KSA9PiB7XG4gICAgbGV0IGludm9rZXIgPSB2bS5jb25zdGFudHMuZ2V0T3RoZXIoX2ludm9rZXIpO1xuICAgIGxldCBibG9jayA9IHZtLnN0YWNrLnBvcCgpO1xuICAgIGludm9rZXIuaW52b2tlKHZtLCBibG9jayk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg0MyAvKiBKdW1wICovLCAodm0sIHsgb3AxOiB0YXJnZXQgfSkgPT4gdm0uZ290byh0YXJnZXQpKTtcbkFQUEVORF9PUENPREVTLmFkZCg0NCAvKiBKdW1wSWYgKi8sICh2bSwgeyBvcDE6IHRhcmdldCB9KSA9PiB7XG4gICAgbGV0IHJlZmVyZW5jZSA9IHZtLnN0YWNrLnBvcCgpO1xuICAgIGlmIChpc0NvbnN0KHJlZmVyZW5jZSkpIHtcbiAgICAgICAgaWYgKHJlZmVyZW5jZS52YWx1ZSgpKSB7XG4gICAgICAgICAgICB2bS5nb3RvKHRhcmdldCk7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgY2FjaGUgPSBuZXcgUmVmZXJlbmNlQ2FjaGUocmVmZXJlbmNlKTtcbiAgICAgICAgaWYgKGNhY2hlLnBlZWsoKSkge1xuICAgICAgICAgICAgdm0uZ290byh0YXJnZXQpO1xuICAgICAgICB9XG4gICAgICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICAgIH1cbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDQ1IC8qIEp1bXBVbmxlc3MgKi8sICh2bSwgeyBvcDE6IHRhcmdldCB9KSA9PiB7XG4gICAgbGV0IHJlZmVyZW5jZSA9IHZtLnN0YWNrLnBvcCgpO1xuICAgIGlmIChpc0NvbnN0KHJlZmVyZW5jZSkpIHtcbiAgICAgICAgaWYgKCFyZWZlcmVuY2UudmFsdWUoKSkge1xuICAgICAgICAgICAgdm0uZ290byh0YXJnZXQpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKHJlZmVyZW5jZSk7XG4gICAgICAgIGlmICghY2FjaGUucGVlaygpKSB7XG4gICAgICAgICAgICB2bS5nb3RvKHRhcmdldCk7XG4gICAgICAgIH1cbiAgICAgICAgdm0udXBkYXRlV2l0aChuZXcgQXNzZXJ0KGNhY2hlKSk7XG4gICAgfVxufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMjIgLyogUmV0dXJuICovLCB2bSA9PiB2bS5yZXR1cm4oKSk7XG5leHBvcnQgY29uc3QgQ29uc3RUZXN0ID0gZnVuY3Rpb24gKHJlZiwgX2Vudikge1xuICAgIHJldHVybiBuZXcgQ29uc3RSZWZlcmVuY2UoISFyZWYudmFsdWUoKSk7XG59O1xuZXhwb3J0IGNvbnN0IFNpbXBsZVRlc3QgPSBmdW5jdGlvbiAocmVmLCBfZW52KSB7XG4gICAgcmV0dXJuIHJlZjtcbn07XG5leHBvcnQgY29uc3QgRW52aXJvbm1lbnRUZXN0ID0gZnVuY3Rpb24gKHJlZiwgZW52KSB7XG4gICAgcmV0dXJuIGVudi50b0NvbmRpdGlvbmFsUmVmZXJlbmNlKHJlZik7XG59O1xuQVBQRU5EX09QQ09ERVMuYWRkKDUwIC8qIFRlc3QgKi8sICh2bSwgeyBvcDE6IF9mdW5jIH0pID0+IHtcbiAgICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgICBsZXQgb3BlcmFuZCA9IHN0YWNrLnBvcCgpO1xuICAgIGxldCBmdW5jID0gdm0uY29uc3RhbnRzLmdldEZ1bmN0aW9uKF9mdW5jKTtcbiAgICBzdGFjay5wdXNoKGZ1bmMob3BlcmFuZCwgdm0uZW52KSk7XG59KTtcbmV4cG9ydCBjbGFzcyBBc3NlcnQgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gICAgY29uc3RydWN0b3IoY2FjaGUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy50eXBlID0gJ2Fzc2VydCc7XG4gICAgICAgIHRoaXMudGFnID0gY2FjaGUudGFnO1xuICAgICAgICB0aGlzLmNhY2hlID0gY2FjaGU7XG4gICAgfVxuICAgIGV2YWx1YXRlKHZtKSB7XG4gICAgICAgIGxldCB7IGNhY2hlIH0gPSB0aGlzO1xuICAgICAgICBpZiAoaXNNb2RpZmllZChjYWNoZS5yZXZhbGlkYXRlKCkpKSB7XG4gICAgICAgICAgICB2bS50aHJvdygpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgbGV0IHsgdHlwZSwgX2d1aWQsIGNhY2hlIH0gPSB0aGlzO1xuICAgICAgICBsZXQgZXhwZWN0ZWQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBleHBlY3RlZCA9IEpTT04uc3RyaW5naWZ5KGNhY2hlLnBlZWsoKSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGV4cGVjdGVkID0gU3RyaW5nKGNhY2hlLnBlZWsoKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFyZ3M6IFtdLFxuICAgICAgICAgICAgZGV0YWlsczogeyBleHBlY3RlZCB9LFxuICAgICAgICAgICAgZ3VpZDogX2d1aWQsXG4gICAgICAgICAgICB0eXBlXG4gICAgICAgIH07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIEp1bXBJZk5vdE1vZGlmaWVkT3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKHRhZywgdGFyZ2V0KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0O1xuICAgICAgICB0aGlzLnR5cGUgPSAnanVtcC1pZi1ub3QtbW9kaWZpZWQnO1xuICAgICAgICB0aGlzLnRhZyA9IHRhZztcbiAgICAgICAgdGhpcy5sYXN0UmV2aXNpb24gPSB0YWcudmFsdWUoKTtcbiAgICB9XG4gICAgZXZhbHVhdGUodm0pIHtcbiAgICAgICAgbGV0IHsgdGFnLCB0YXJnZXQsIGxhc3RSZXZpc2lvbiB9ID0gdGhpcztcbiAgICAgICAgaWYgKCF2bS5hbHdheXNSZXZhbGlkYXRlICYmIHRhZy52YWxpZGF0ZShsYXN0UmV2aXNpb24pKSB7XG4gICAgICAgICAgICB2bS5nb3RvKHRhcmdldCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZGlkTW9kaWZ5KCkge1xuICAgICAgICB0aGlzLmxhc3RSZXZpc2lvbiA9IHRoaXMudGFnLnZhbHVlKCk7XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFyZ3M6IFtKU09OLnN0cmluZ2lmeSh0aGlzLnRhcmdldC5pbnNwZWN0KCkpXSxcbiAgICAgICAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICAgICAgICB0eXBlOiB0aGlzLnR5cGVcbiAgICAgICAgfTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgRGlkTW9kaWZ5T3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKHRhcmdldCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnRhcmdldCA9IHRhcmdldDtcbiAgICAgICAgdGhpcy50eXBlID0gJ2RpZC1tb2RpZnknO1xuICAgICAgICB0aGlzLnRhZyA9IENPTlNUQU5UX1RBRztcbiAgICB9XG4gICAgZXZhbHVhdGUoKSB7XG4gICAgICAgIHRoaXMudGFyZ2V0LmRpZE1vZGlmeSgpO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBMYWJlbE9wY29kZSB7XG4gICAgY29uc3RydWN0b3IobGFiZWwpIHtcbiAgICAgICAgdGhpcy50YWcgPSBDT05TVEFOVF9UQUc7XG4gICAgICAgIHRoaXMudHlwZSA9ICdsYWJlbCc7XG4gICAgICAgIHRoaXMubGFiZWwgPSBudWxsO1xuICAgICAgICB0aGlzLnByZXYgPSBudWxsO1xuICAgICAgICB0aGlzLm5leHQgPSBudWxsO1xuICAgICAgICBpbml0aWFsaXplR3VpZCh0aGlzKTtcbiAgICAgICAgdGhpcy5sYWJlbCA9IGxhYmVsO1xuICAgIH1cbiAgICBldmFsdWF0ZSgpIHt9XG4gICAgaW5zcGVjdCgpIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMubGFiZWx9IFske3RoaXMuX2d1aWR9XWA7XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFyZ3M6IFtKU09OLnN0cmluZ2lmeSh0aGlzLmluc3BlY3QoKSldLFxuICAgICAgICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZVxuICAgICAgICB9O1xuICAgIH1cbn0iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL3ZtLmpzIl0sIm5hbWVzIjpbIlVwZGF0aW5nT3Bjb2RlIiwiQ29uc3RSZWZlcmVuY2UiLCJpbml0aWFsaXplR3VpZCIsIkNPTlNUQU5UX1RBRyIsIlJlZmVyZW5jZUNhY2hlIiwiaXNDb25zdCIsImlzTW9kaWZpZWQiLCJBUFBFTkRfT1BDT0RFUyIsIk5VTExfUkVGRVJFTkNFIiwiVU5ERUZJTkVEX1JFRkVSRU5DRSIsIlRSVUVfUkVGRVJFTkNFIiwiRkFMU0VfUkVGRVJFTkNFIiwiUHJpbWl0aXZlUmVmZXJlbmNlIiwiYWRkIiwidm0iLCJwdXNoQ2hpbGRTY29wZSIsInBvcFNjb3BlIiwicHVzaER5bmFtaWNTY29wZSIsInBvcER5bmFtaWNTY29wZSIsIm51bWJlciIsIm9wMSIsInN0YWNrIiwicHVzaCIsIm90aGVyIiwiY29uc3RhbnRzIiwiZ2V0T3RoZXIiLCJwcmltaXRpdmUiLCJmbGFnIiwidmFsdWUiLCJjcmVhdGUiLCJnZXRTdHJpbmciLCJyZWdpc3RlciIsIm9mZnNldCIsIm9wMiIsInBvc2l0aW9uIiwiZmV0Y2hWYWx1ZSIsImR1cCIsImNvdW50IiwicG9wIiwibG9hZCIsImZldGNoIiwiX25hbWVzIiwibmFtZXMiLCJnZXRBcnJheSIsImJpbmREeW5hbWljU2NvcGUiLCJwdXNoRnJhbWUiLCJwb3BGcmFtZSIsImFyZ3MiLCJlbnRlciIsImV4aXQiLCJibG9jayIsImNvbXBpbGVEeW5hbWljIiwiZW52IiwiX2Jsb2NrIiwiZ2V0QmxvY2siLCJjb21waWxlZCIsImNvbXBpbGVTdGF0aWMiLCJjYWxsIiwic3RhcnQiLCJfaW52b2tlciIsImludm9rZXIiLCJpbnZva2UiLCJ0YXJnZXQiLCJnb3RvIiwicmVmZXJlbmNlIiwiY2FjaGUiLCJwZWVrIiwidXBkYXRlV2l0aCIsIkFzc2VydCIsInJldHVybiIsIkNvbnN0VGVzdCIsInJlZiIsIl9lbnYiLCJTaW1wbGVUZXN0IiwiRW52aXJvbm1lbnRUZXN0IiwidG9Db25kaXRpb25hbFJlZmVyZW5jZSIsIl9mdW5jIiwib3BlcmFuZCIsImZ1bmMiLCJnZXRGdW5jdGlvbiIsInR5cGUiLCJ0YWciLCJldmFsdWF0ZSIsInJldmFsaWRhdGUiLCJ0aHJvdyIsInRvSlNPTiIsIl9ndWlkIiwiZXhwZWN0ZWQiLCJKU09OIiwic3RyaW5naWZ5IiwiZSIsIlN0cmluZyIsImd1aWQiLCJkZXRhaWxzIiwiSnVtcElmTm90TW9kaWZpZWRPcGNvZGUiLCJsYXN0UmV2aXNpb24iLCJhbHdheXNSZXZhbGlkYXRlIiwidmFsaWRhdGUiLCJkaWRNb2RpZnkiLCJpbnNwZWN0IiwiRGlkTW9kaWZ5T3Bjb2RlIiwiTGFiZWxPcGNvZGUiLCJsYWJlbCIsInByZXYiLCJuZXh0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsQUFBUyxBQUFzQjs7QUFDL0IsQUFBUyxBQUFzQjs7QUFDL0IsQUFBUyxBQUFzQixBQUMvQixBQUFTLEFBQWMsQUFBZ0IsQUFBUyxBQUFrQixBQUNsRSxBQUFTLEFBQXNCOztBQUMvQixBQUFTLEFBQWdCLEFBQXFCLEFBQWdCLEFBQWlCLEFBQTBCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ3pHLHdCQUFBLEFBQWUsSUFBZixBQUFtQixHQUFuQixBQUFzQixrQkFBa0IsY0FBQTtXQUFNLEdBQU4sQUFBTSxBQUFHO0FBQWpEO0FBQ0Esd0JBQUEsQUFBZSxJQUFmLEFBQW1CLEdBQW5CLEFBQXNCLGdCQUFnQixjQUFBO1dBQU0sR0FBTixBQUFNLEFBQUc7QUFBL0M7QUFDQSx3QkFBQSxBQUFlLElBQWYsQUFBbUIsR0FBbkIsQUFBc0Isd0JBQXdCLGNBQUE7V0FBTSxHQUFOLEFBQU0sQUFBRztBQUF2RDtBQUNBLHdCQUFBLEFBQWUsSUFBZixBQUFtQixHQUFuQixBQUFzQix1QkFBdUIsY0FBQTtXQUFNLEdBQU4sQUFBTSxBQUFHO0FBQXREO0FBQ0Esd0JBQUEsQUFBZSxJQUFmLEFBQW1CLEdBQW5CLEFBQXNCLGlCQUFpQixVQUFBLEFBQUMsVUFBd0I7UUFBYixBQUFh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VSxLQUFBLEFBQUssT0FIL0IsQUFBTyxBQUdHLEFBQUMsQUFBZSxBQUFZLEFBRXpDO0FBTFUsQUFDSDtBQW5CWjs7V0FBQTtBQUFBLEFBQTZDLEFBeUI3QztJQUFBLEFBQWEsd0VBQWI7K0JBQ0k7OzZCQUFBLEFBQVksUUFBUTs4QkFBQTs7c0RBQ2hCLHNCQURnQixBQUVoQjs7ZUFBQSxBQUFLLFNBQUwsQUFBYyxBQUNkO2VBQUEsQUFBSyxPQUFMLEFBQVksQUFDWjtlQUpnQixBQUloQixBQUFLLEFBQU07ZUFDZDtBQU5MOzs4QkFBQSxBQU9JLCtCQUFXLEFBQ1A7YUFBQSxBQUFLLE9BQUwsQUFBWSxBQUNmO0FBVEw7O1dBQUE7QUFBQSxBQUFxQyxBQVdyQztJQUFBLEFBQWEsZ0RBQ1Q7eUJBQUEsQUFBWSxPQUFPOzhCQUNmOzthQUFBLEFBQUssQUFBTSxBQUNYO2FBQUEsQUFBSyxPQUFMLEFBQVksQUFDWjthQUFBLEFBQUssUUFBTCxBQUFhLEFBQ2I7YUFBQSxBQUFLLE9BQUwsQUFBWSxBQUNaO2FBQUEsQUFBSyxPQUFMLEFBQVksQUFDWjtrQ0FBQSxBQUFlLEFBQ2Y7WUFBQSxBQUFJLE9BQU8sS0FBQSxBQUFLLFFBQUwsQUFBYSxBQUMzQjtBQVRMOzswQkFBQSxBQVVJLCtCQUFXLEFBQUUsQ0FWakI7OzBCQUFBLEFBV0ksNkJBQVUsQUFDTjtlQUFVLEtBQVYsQUFBZSxlQUFVLEtBQXpCLEFBQThCLFFBQ2pDO0FBYkw7OzBCQUFBLEFBY0ksMkJBQVMsQUFDTDs7a0JBQ1UsS0FESCxBQUNRLEFBQ1g7a0JBQU0sS0FGSCxBQUVRLEFBQ1g7a0JBQU0sQ0FBQyxLQUFBLEFBQUssVUFBVSxLQUgxQixBQUFPLEFBR0csQUFBQyxBQUFlLEFBQUssQUFFbEM7QUFMVSxBQUNIO0FBaEJaOztXQUFBIiwiZmlsZSI6ImxpYi9jb21waWxlZC9vcGNvZGVzL3ZtLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVXBkYXRpbmdPcGNvZGUgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IENvbnN0UmVmZXJlbmNlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IGluaXRpYWxpemVHdWlkIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBDT05TVEFOVF9UQUcsIFJlZmVyZW5jZUNhY2hlLCBpc0NvbnN0LCBpc01vZGlmaWVkIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IEFQUEVORF9PUENPREVTIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBOVUxMX1JFRkVSRU5DRSwgVU5ERUZJTkVEX1JFRkVSRU5DRSwgVFJVRV9SRUZFUkVOQ0UsIEZBTFNFX1JFRkVSRU5DRSwgUHJpbWl0aXZlUmVmZXJlbmNlIH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcyc7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMjAgLyogQ2hpbGRTY29wZSAqLywgdm0gPT4gdm0ucHVzaENoaWxkU2NvcGUoKSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMjEgLyogUG9wU2NvcGUgKi8sIHZtID0+IHZtLnBvcFNjb3BlKCkpO1xuQVBQRU5EX09QQ09ERVMuYWRkKDM4IC8qIFB1c2hEeW5hbWljU2NvcGUgKi8sIHZtID0+IHZtLnB1c2hEeW5hbWljU2NvcGUoKSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMzkgLyogUG9wRHluYW1pY1Njb3BlICovLCB2bSA9PiB2bS5wb3BEeW5hbWljU2NvcGUoKSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMTIgLyogSW1tZWRpYXRlICovLCAodm0sIHsgb3AxOiBudW1iZXIgfSkgPT4ge1xuICAgIHZtLnN0YWNrLnB1c2gobnVtYmVyKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDEzIC8qIENvbnN0YW50ICovLCAodm0sIHsgb3AxOiBvdGhlciB9KSA9PiB7XG4gICAgdm0uc3RhY2sucHVzaCh2bS5jb25zdGFudHMuZ2V0T3RoZXIob3RoZXIpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDE0IC8qIFByaW1pdGl2ZVJlZmVyZW5jZSAqLywgKHZtLCB7IG9wMTogcHJpbWl0aXZlIH0pID0+IHtcbiAgICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgICBsZXQgZmxhZyA9IChwcmltaXRpdmUgJiAzIDw8IDMwKSA+Pj4gMzA7XG4gICAgbGV0IHZhbHVlID0gcHJpbWl0aXZlICYgfigzIDw8IDMwKTtcbiAgICBzd2l0Y2ggKGZsYWcpIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgc3RhY2sucHVzaChQcmltaXRpdmVSZWZlcmVuY2UuY3JlYXRlKHZhbHVlKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgc3RhY2sucHVzaChQcmltaXRpdmVSZWZlcmVuY2UuY3JlYXRlKHZtLmNvbnN0YW50cy5nZXRTdHJpbmcodmFsdWUpKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgc3dpdGNoICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgc3RhY2sucHVzaChGQUxTRV9SRUZFUkVOQ0UpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIHN0YWNrLnB1c2goVFJVRV9SRUZFUkVOQ0UpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIHN0YWNrLnB1c2goTlVMTF9SRUZFUkVOQ0UpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgIHN0YWNrLnB1c2goVU5ERUZJTkVEX1JFRkVSRU5DRSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMTUgLyogRHVwICovLCAodm0sIHsgb3AxOiByZWdpc3Rlciwgb3AyOiBvZmZzZXQgfSkgPT4ge1xuICAgIGxldCBwb3NpdGlvbiA9IHZtLmZldGNoVmFsdWUocmVnaXN0ZXIpIC0gb2Zmc2V0O1xuICAgIHZtLnN0YWNrLmR1cChwb3NpdGlvbik7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCgxNiAvKiBQb3AgKi8sICh2bSwgeyBvcDE6IGNvdW50IH0pID0+IHZtLnN0YWNrLnBvcChjb3VudCkpO1xuQVBQRU5EX09QQ09ERVMuYWRkKDE3IC8qIExvYWQgKi8sICh2bSwgeyBvcDE6IHJlZ2lzdGVyIH0pID0+IHZtLmxvYWQocmVnaXN0ZXIpKTtcbkFQUEVORF9PUENPREVTLmFkZCgxOCAvKiBGZXRjaCAqLywgKHZtLCB7IG9wMTogcmVnaXN0ZXIgfSkgPT4gdm0uZmV0Y2gocmVnaXN0ZXIpKTtcbkFQUEVORF9PUENPREVTLmFkZCgzNyAvKiBCaW5kRHluYW1pY1Njb3BlICovLCAodm0sIHsgb3AxOiBfbmFtZXMgfSkgPT4ge1xuICAgIGxldCBuYW1lcyA9IHZtLmNvbnN0YW50cy5nZXRBcnJheShfbmFtZXMpO1xuICAgIHZtLmJpbmREeW5hbWljU2NvcGUobmFtZXMpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNDYgLyogUHVzaEZyYW1lICovLCB2bSA9PiB2bS5wdXNoRnJhbWUoKSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNDcgLyogUG9wRnJhbWUgKi8sIHZtID0+IHZtLnBvcEZyYW1lKCkpO1xuQVBQRU5EX09QQ09ERVMuYWRkKDQ4IC8qIEVudGVyICovLCAodm0sIHsgb3AxOiBhcmdzIH0pID0+IHZtLmVudGVyKGFyZ3MpKTtcbkFQUEVORF9PUENPREVTLmFkZCg0OSAvKiBFeGl0ICovLCB2bSA9PiB2bS5leGl0KCkpO1xuQVBQRU5EX09QQ09ERVMuYWRkKDQwIC8qIENvbXBpbGVEeW5hbWljQmxvY2sgKi8sIHZtID0+IHtcbiAgICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgICBsZXQgYmxvY2sgPSBzdGFjay5wb3AoKTtcbiAgICBzdGFjay5wdXNoKGJsb2NrID8gYmxvY2suY29tcGlsZUR5bmFtaWModm0uZW52KSA6IG51bGwpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNDEgLyogSW52b2tlU3RhdGljICovLCAodm0sIHsgb3AxOiBfYmxvY2sgfSkgPT4ge1xuICAgIGxldCBibG9jayA9IHZtLmNvbnN0YW50cy5nZXRCbG9jayhfYmxvY2spO1xuICAgIGxldCBjb21waWxlZCA9IGJsb2NrLmNvbXBpbGVTdGF0aWModm0uZW52KTtcbiAgICB2bS5jYWxsKGNvbXBpbGVkLnN0YXJ0KTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDQyIC8qIEludm9rZUR5bmFtaWMgKi8sICh2bSwgeyBvcDE6IF9pbnZva2VyIH0pID0+IHtcbiAgICBsZXQgaW52b2tlciA9IHZtLmNvbnN0YW50cy5nZXRPdGhlcihfaW52b2tlcik7XG4gICAgbGV0IGJsb2NrID0gdm0uc3RhY2sucG9wKCk7XG4gICAgaW52b2tlci5pbnZva2Uodm0sIGJsb2NrKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDQzIC8qIEp1bXAgKi8sICh2bSwgeyBvcDE6IHRhcmdldCB9KSA9PiB2bS5nb3RvKHRhcmdldCkpO1xuQVBQRU5EX09QQ09ERVMuYWRkKDQ0IC8qIEp1bXBJZiAqLywgKHZtLCB7IG9wMTogdGFyZ2V0IH0pID0+IHtcbiAgICBsZXQgcmVmZXJlbmNlID0gdm0uc3RhY2sucG9wKCk7XG4gICAgaWYgKGlzQ29uc3QocmVmZXJlbmNlKSkge1xuICAgICAgICBpZiAocmVmZXJlbmNlLnZhbHVlKCkpIHtcbiAgICAgICAgICAgIHZtLmdvdG8odGFyZ2V0KTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBjYWNoZSA9IG5ldyBSZWZlcmVuY2VDYWNoZShyZWZlcmVuY2UpO1xuICAgICAgICBpZiAoY2FjaGUucGVlaygpKSB7XG4gICAgICAgICAgICB2bS5nb3RvKHRhcmdldCk7XG4gICAgICAgIH1cbiAgICAgICAgdm0udXBkYXRlV2l0aChuZXcgQXNzZXJ0KGNhY2hlKSk7XG4gICAgfVxufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNDUgLyogSnVtcFVubGVzcyAqLywgKHZtLCB7IG9wMTogdGFyZ2V0IH0pID0+IHtcbiAgICBsZXQgcmVmZXJlbmNlID0gdm0uc3RhY2sucG9wKCk7XG4gICAgaWYgKGlzQ29uc3QocmVmZXJlbmNlKSkge1xuICAgICAgICBpZiAoIXJlZmVyZW5jZS52YWx1ZSgpKSB7XG4gICAgICAgICAgICB2bS5nb3RvKHRhcmdldCk7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgY2FjaGUgPSBuZXcgUmVmZXJlbmNlQ2FjaGUocmVmZXJlbmNlKTtcbiAgICAgICAgaWYgKCFjYWNoZS5wZWVrKCkpIHtcbiAgICAgICAgICAgIHZtLmdvdG8odGFyZ2V0KTtcbiAgICAgICAgfVxuICAgICAgICB2bS51cGRhdGVXaXRoKG5ldyBBc3NlcnQoY2FjaGUpKTtcbiAgICB9XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCgyMiAvKiBSZXR1cm4gKi8sIHZtID0+IHZtLnJldHVybigpKTtcbmV4cG9ydCBjb25zdCBDb25zdFRlc3QgPSBmdW5jdGlvbiAocmVmLCBfZW52KSB7XG4gICAgcmV0dXJuIG5ldyBDb25zdFJlZmVyZW5jZSghIXJlZi52YWx1ZSgpKTtcbn07XG5leHBvcnQgY29uc3QgU2ltcGxlVGVzdCA9IGZ1bmN0aW9uIChyZWYsIF9lbnYpIHtcbiAgICByZXR1cm4gcmVmO1xufTtcbmV4cG9ydCBjb25zdCBFbnZpcm9ubWVudFRlc3QgPSBmdW5jdGlvbiAocmVmLCBlbnYpIHtcbiAgICByZXR1cm4gZW52LnRvQ29uZGl0aW9uYWxSZWZlcmVuY2UocmVmKTtcbn07XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTAgLyogVGVzdCAqLywgKHZtLCB7IG9wMTogX2Z1bmMgfSkgPT4ge1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIGxldCBvcGVyYW5kID0gc3RhY2sucG9wKCk7XG4gICAgbGV0IGZ1bmMgPSB2bS5jb25zdGFudHMuZ2V0RnVuY3Rpb24oX2Z1bmMpO1xuICAgIHN0YWNrLnB1c2goZnVuYyhvcGVyYW5kLCB2bS5lbnYpKTtcbn0pO1xuZXhwb3J0IGNsYXNzIEFzc2VydCBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcihjYWNoZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnR5cGUgPSBcImFzc2VydFwiO1xuICAgICAgICB0aGlzLnRhZyA9IGNhY2hlLnRhZztcbiAgICAgICAgdGhpcy5jYWNoZSA9IGNhY2hlO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICBsZXQgeyBjYWNoZSB9ID0gdGhpcztcbiAgICAgICAgaWYgKGlzTW9kaWZpZWQoY2FjaGUucmV2YWxpZGF0ZSgpKSkge1xuICAgICAgICAgICAgdm0udGhyb3coKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIGxldCB7IHR5cGUsIF9ndWlkLCBjYWNoZSB9ID0gdGhpcztcbiAgICAgICAgbGV0IGV4cGVjdGVkO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZXhwZWN0ZWQgPSBKU09OLnN0cmluZ2lmeShjYWNoZS5wZWVrKCkpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBleHBlY3RlZCA9IFN0cmluZyhjYWNoZS5wZWVrKCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBndWlkOiBfZ3VpZCxcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBhcmdzOiBbXSxcbiAgICAgICAgICAgIGRldGFpbHM6IHsgZXhwZWN0ZWQgfVxuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBKdW1wSWZOb3RNb2RpZmllZE9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3Rvcih0YWcsIHRhcmdldCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnRhcmdldCA9IHRhcmdldDtcbiAgICAgICAgdGhpcy50eXBlID0gXCJqdW1wLWlmLW5vdC1tb2RpZmllZFwiO1xuICAgICAgICB0aGlzLnRhZyA9IHRhZztcbiAgICAgICAgdGhpcy5sYXN0UmV2aXNpb24gPSB0YWcudmFsdWUoKTtcbiAgICB9XG4gICAgZXZhbHVhdGUodm0pIHtcbiAgICAgICAgbGV0IHsgdGFnLCB0YXJnZXQsIGxhc3RSZXZpc2lvbiB9ID0gdGhpcztcbiAgICAgICAgaWYgKCF2bS5hbHdheXNSZXZhbGlkYXRlICYmIHRhZy52YWxpZGF0ZShsYXN0UmV2aXNpb24pKSB7XG4gICAgICAgICAgICB2bS5nb3RvKHRhcmdldCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZGlkTW9kaWZ5KCkge1xuICAgICAgICB0aGlzLmxhc3RSZXZpc2lvbiA9IHRoaXMudGFnLnZhbHVlKCk7XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICAgICAgICBhcmdzOiBbSlNPTi5zdHJpbmdpZnkodGhpcy50YXJnZXQuaW5zcGVjdCgpKV1cbiAgICAgICAgfTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgRGlkTW9kaWZ5T3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKHRhcmdldCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnRhcmdldCA9IHRhcmdldDtcbiAgICAgICAgdGhpcy50eXBlID0gXCJkaWQtbW9kaWZ5XCI7XG4gICAgICAgIHRoaXMudGFnID0gQ09OU1RBTlRfVEFHO1xuICAgIH1cbiAgICBldmFsdWF0ZSgpIHtcbiAgICAgICAgdGhpcy50YXJnZXQuZGlkTW9kaWZ5KCk7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIExhYmVsT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcihsYWJlbCkge1xuICAgICAgICB0aGlzLnRhZyA9IENPTlNUQU5UX1RBRztcbiAgICAgICAgdGhpcy50eXBlID0gXCJsYWJlbFwiO1xuICAgICAgICB0aGlzLmxhYmVsID0gbnVsbDtcbiAgICAgICAgdGhpcy5wcmV2ID0gbnVsbDtcbiAgICAgICAgdGhpcy5uZXh0ID0gbnVsbDtcbiAgICAgICAgaW5pdGlhbGl6ZUd1aWQodGhpcyk7XG4gICAgICAgIGlmIChsYWJlbCkgdGhpcy5sYWJlbCA9IGxhYmVsO1xuICAgIH1cbiAgICBldmFsdWF0ZSgpIHt9XG4gICAgaW5zcGVjdCgpIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMubGFiZWx9IFske3RoaXMuX2d1aWR9XWA7XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICAgICAgICBhcmdzOiBbSlNPTi5zdHJpbmdpZnkodGhpcy5pbnNwZWN0KCkpXVxuICAgICAgICB9O1xuICAgIH1cbn0iXX0=

@@ -16,8 +16,6 @@ "use strict";

var _scanner = require("./scanner");
var _functions = require("./syntax/functions");
var _clientSide = require("./syntax/client-side");
var ClientSide = _interopRequireWildcard(_clientSide);
var _builder = require("./compiled/opcodes/builder");

@@ -29,4 +27,2 @@

function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
var _createClass = function () {

@@ -65,4 +61,4 @@ function defineProperties(target, props) {

ComponentLayoutBuilder.prototype.fromLayout = function fromLayout(componentName, layout) {
this.inner = new UnwrappedBuilder(this.env, componentName, layout);
ComponentLayoutBuilder.prototype.fromLayout = function fromLayout(layout) {
this.inner = new UnwrappedBuilder(this.env, layout);
};

@@ -151,5 +147,5 @@

b.didCreateElement(_opcodes.Register.s0);
var attrs = this.attrs.buffer;
var attrs = this.attrs['buffer'];
for (var i = 0; i < attrs.length; i++) {
(0, _functions.compileStatement)(attrs[i], b);
(0, _scanner.compileStatement)(attrs[i], b);
}

@@ -180,3 +176,3 @@ b.flushElement();

hasEval: layout.hasEval,
symbols: layout.symbols.concat([_functions.ATTRS_BLOCK])
symbols: layout.symbols.concat([_scanner.ATTRS_BLOCK])
});

@@ -189,7 +185,6 @@ };

var UnwrappedBuilder = function () {
function UnwrappedBuilder(env, componentName, layout) {
function UnwrappedBuilder(env, layout) {
_classCallCheck(this, UnwrappedBuilder);
this.env = env;
this.componentName = componentName;
this.layout = layout;

@@ -203,3 +198,3 @@ this.attrs = new ComponentAttrsBuilder();

return layout.asLayout(this.componentName, this.attrs.buffer).compileDynamic(env);
return layout.asLayout(this.attrs['buffer']).compileDynamic(env);
};

@@ -246,3 +241,3 @@

this.isDynamic = true;
this.dynamicTagName = [_wireFormat.Ops.ClientSideExpression, ClientSide.Ops.FunctionExpression, tagName];
this.dynamicTagName = [_wireFormat.Ops.ClientSideExpression, _scanner.ClientSide.Ops.FunctionExpression, tagName];
};

@@ -265,3 +260,3 @@

ComponentAttrsBuilder.prototype.dynamic = function dynamic(name, value) {
this.buffer.push([_wireFormat.Ops.DynamicAttr, name, [_wireFormat.Ops.ClientSideExpression, ClientSide.Ops.FunctionExpression, value], null]);
this.buffer.push([_wireFormat.Ops.DynamicAttr, name, [_wireFormat.Ops.ClientSideExpression, _scanner.ClientSide.Ops.FunctionExpression, value], null]);
};

@@ -302,4 +297,4 @@

var meta = this.builder.meta.templateMeta;
function helper(vm, a) {
return getDefinition(vm, a, meta);
function helper(vm, args) {
return getDefinition(vm, args, meta);
}

@@ -330,2 +325,2 @@ builder.startLabels();

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlci5qcyJdLCJuYW1lcyI6WyJDb21waWxlZER5bmFtaWNUZW1wbGF0ZSIsIk9wcyIsIlJlZ2lzdGVyIiwiZGVidWdTbGljZSIsIkFUVFJTX0JMT0NLIiwiY29tcGlsZVN0YXRlbWVudCIsIkNsaWVudFNpZGUiLCJleHByIiwiT3Bjb2RlQnVpbGRlckRTTCIsImNvbXBpbGVMYXlvdXQiLCJjb21waWxhYmxlIiwiZW52IiwiYnVpbGRlciIsIkNvbXBvbmVudExheW91dEJ1aWxkZXIiLCJjb21waWxlIiwid3JhcExheW91dCIsImxheW91dCIsImlubmVyIiwiV3JhcHBlZEJ1aWxkZXIiLCJmcm9tTGF5b3V0IiwiY29tcG9uZW50TmFtZSIsIlVud3JhcHBlZEJ1aWxkZXIiLCJ0YWciLCJhdHRycyIsIkNvbXBvbmVudFRhZ0J1aWxkZXIiLCJDb21wb25lbnRBdHRyc0J1aWxkZXIiLCJtZXRhIiwidGVtcGxhdGVNZXRhIiwic3ltYm9scyIsImFzUGFydGlhbCIsImR5bmFtaWNUYWciLCJnZXREeW5hbWljIiwic3RhdGljVGFnIiwiZ2V0U3RhdGljIiwiYiIsInN0YXJ0TGFiZWxzIiwiZmV0Y2giLCJzMSIsImR1cCIsImxvYWQiLCJ0ZXN0IiwianVtcFVubGVzcyIsInB1c2hDb21wb25lbnRPcGVyYXRpb25zIiwib3BlbkR5bmFtaWNFbGVtZW50Iiwib3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucyIsImRpZENyZWF0ZUVsZW1lbnQiLCJzMCIsImJ1ZmZlciIsImkiLCJsZW5ndGgiLCJmbHVzaEVsZW1lbnQiLCJsYWJlbCIsImludm9rZVN0YXRpYyIsImFzQmxvY2siLCJjbG9zZUVsZW1lbnQiLCJkaWRSZW5kZXJMYXlvdXQiLCJzdG9wTGFiZWxzIiwic3RhcnQiLCJlbmQiLCJmaW5hbGl6ZSIsImhhc0V2YWwiLCJjb25jYXQiLCJhc0xheW91dCIsImNvbXBpbGVEeW5hbWljIiwiRXJyb3IiLCJpc0R5bmFtaWMiLCJpc1N0YXRpYyIsInN0YXRpY1RhZ05hbWUiLCJkeW5hbWljVGFnTmFtZSIsInN0YXRpYyIsInRhZ05hbWUiLCJkeW5hbWljIiwiQ2xpZW50U2lkZUV4cHJlc3Npb24iLCJGdW5jdGlvbkV4cHJlc3Npb24iLCJuYW1lIiwidmFsdWUiLCJwdXNoIiwiU3RhdGljQXR0ciIsIkR5bmFtaWNBdHRyIiwiQ29tcG9uZW50QnVpbGRlciIsImRlZmluaXRpb24iLCJhcmdzIiwicGFyYW1zIiwiaGFzaCIsIl9kZWZhdWx0IiwiaW52ZXJzZSIsInB1c2hDb21wb25lbnRNYW5hZ2VyIiwiaW52b2tlQ29tcG9uZW50IiwiZGVmaW5pdGlvbkFyZ3MiLCJnZXREZWZpbml0aW9uIiwiYmxvY2siLCJoZWxwZXIiLCJ2bSIsImEiLCJwdXNoRnJhbWUiLCJyZXR1cm5UbyIsImNvbXBpbGVBcmdzIiwiZW50ZXIiLCJwdXNoRHluYW1pY0NvbXBvbmVudE1hbmFnZXIiLCJleGl0IiwicmV0dXJuIiwicG9wRnJhbWUiXSwibWFwcGluZ3MiOiI7Ozs7OztRQU9PLEFBQVM7UUE4TVQsQUFBUzs7QUFyTmhCLEFBQVMsQUFBK0I7O0FBQ3hDLEFBQVMsQUFBVzs7QUFDcEIsQUFBUyxBQUFVLEFBQWtCOztBQUNyQyxBQUFTLEFBQWEsQUFBd0I7O0FBQzlDLEFBQU87O0lBQVAsQUFBWSxBQUFnQixBQUM1QixBQUFTLEFBQVk7O0FBQ3JCLEFBQU8sQUFBc0IsQUFDN0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFPLHVCQUFBLEFBQXVCLFlBQXZCLEFBQW1DLEtBQUssQUFDM0M7UUFBSSxVQUFVLElBQUEsQUFBSSx1QkFBbEIsQUFBYyxBQUEyQixBQUN6QztlQUFBLEFBQVcsUUFBWCxBQUFtQixBQUNuQjtXQUFPLFFBQVAsQUFBTyxBQUFRLEFBQ2xCOzs7SUFDSyxBLHFDQUNGO29DQUFBLEFBQVksS0FBSzs4QkFDYjs7YUFBQSxBQUFLLE1BQUwsQUFBVyxBQUNkOzs7cUMsQUFDRCxpQyxBQUFXLFFBQVEsQUFDZjthQUFBLEFBQUssUUFBUSxJQUFBLEFBQUksZUFBZSxLQUFu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O2dCQUFBLEFBQVEsQUFDUjtnQkFBQSxBQUFRLGdCQUFSLEFBQXdCLE1BQXhCLEFBQThCLFFBQTlCLEFBQXNDLE1BQXRDLEFBQTRDLE9BQTVDLEFBQW1ELEFBQ25EO2dCQUFBLEFBQVEsTUFBUixBQUFjLEFBQ2Q7Z0JBQUEsQUFBUSxBQUNSO2dCQUFBLEFBQVEsQUFDUjtnQkFBQSxBQUFRLE1BQVIsQUFBYyxBQUNkO2dCQUFBLEFBQVEsQUFDUjtnQkFBQSxBQUFRLEFBQ1g7QUF0Q0w7O1dBQUE7QUF3Q0E7QUFBTyxpQkFBQSxBQUFpQixLQUFqQixBQUFzQixNQUFNLEFBQy9CO1dBQU8sQUFBSSxzQkFBSixBQUFxQixLQUE1QixBQUFPLEFBQTBCLEFBQ3BDIiwiZmlsZSI6ImxpYi9jb21waWxlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBpbGVkRHluYW1pY1RlbXBsYXRlIH0gZnJvbSAnLi9jb21waWxlZC9ibG9ja3MnO1xuaW1wb3J0IHsgT3BzIH0gZnJvbSAnQGdsaW1tZXIvd2lyZS1mb3JtYXQnO1xuaW1wb3J0IHsgUmVnaXN0ZXIsIGRlYnVnU2xpY2UgfSBmcm9tICcuL29wY29kZXMnO1xuaW1wb3J0IHsgQVRUUlNfQkxPQ0ssIGNvbXBpbGVTdGF0ZW1lbnQgfSBmcm9tICcuL3N5bnRheC9mdW5jdGlvbnMnO1xuaW1wb3J0ICogYXMgQ2xpZW50U2lkZSBmcm9tICcuL3N5bnRheC9jbGllbnQtc2lkZSc7XG5pbXBvcnQgeyBleHByIH0gZnJvbSAnLi9zeW50YXgvZnVuY3Rpb25zJztcbmltcG9ydCBPcGNvZGVCdWlsZGVyRFNMIGZyb20gJy4vY29tcGlsZWQvb3Bjb2Rlcy9idWlsZGVyJztcbmV4cG9ydCBmdW5jdGlvbiBjb21waWxlTGF5b3V0KGNvbXBpbGFibGUsIGVudikge1xuICAgIGxldCBidWlsZGVyID0gbmV3IENvbXBvbmVudExheW91dEJ1aWxkZXIoZW52KTtcbiAgICBjb21waWxhYmxlLmNvbXBpbGUoYnVpbGRlcik7XG4gICAgcmV0dXJuIGJ1aWxkZXIuY29tcGlsZSgpO1xufVxuY2xhc3MgQ29tcG9uZW50TGF5b3V0QnVpbGRlciB7XG4gICAgY29uc3RydWN0b3IoZW52KSB7XG4gICAgICAgIHRoaXMuZW52ID0gZW52O1xuICAgIH1cbiAgICB3cmFwTGF5b3V0KGxheW91dCkge1xuICAgICAgICB0aGlzLmlubmVyID0gbmV3IFdyYXBwZWRCdWlsZGVyKHRoaXMuZW52LCBsYXlvdXQpO1xuICAgIH1cbiAgICBmcm9tTGF5b3V0KGNvbXBvbmVudE5hbWUsIGxheW91dCkge1xuICAgICAgICB0aGlzLmlubmVyID0gbmV3IFVud3JhcHBlZEJ1aWxkZXIodGhpcy5lbnYsIGNvbXBvbmVudE5hbWUsIGxheW91dCk7XG4gICAgfVxuICAgIGNvbXBpbGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlubmVyLmNvbXBpbGUoKTtcbiAgICB9XG4gICAgZ2V0IHRhZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5uZXIudGFnO1xuICAgIH1cbiAgICBnZXQgYXR0cnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlubmVyLmF0dHJzO1xuICAgIH1cbn1cbmNsYXNzIFdyYXBwZWRCdWlsZGVyIHtcbiAgICBjb25zdHJ1Y3RvcihlbnYsIGxheW91dCkge1xuICAgICAgICB0aGlzLmVudiA9IGVudjtcbiAgICAgICAgdGhpcy5sYXlvdXQgPSBsYXlvdXQ7XG4gICAgICAgIHRoaXMudGFnID0gbmV3IENvbXBvbmVudFRhZ0J1aWxkZXIoKTtcbiAgICAgICAgdGhpcy5hdHRycyA9IG5ldyBDb21wb25lbnRBdHRyc0J1aWxkZXIoKTtcbiAgICB9XG4gICAgY29tcGlsZSgpIHtcbiAgICAgICAgLy89PT09PT09PURZTkFNSUNcbiAgICAgICAgLy8gICAgICAgIFB1dFZhbHVlKFRhZ0V4cHIpXG4gICAgICAgIC8vICAgICAgICBUZXN0XG4gICAgICAgIC8vICAgICAgICBKdW1wVW5sZXNzKEJPRFkpXG4gICAgICAgIC8vICAgICAgICBPcGVuRHluYW1pY1ByaW1pdGl2ZUVsZW1lbnRcbiAgICAgICAgLy8gICAgICAgIERpZENyZWF0ZUVsZW1lbnRcbiAgICAgICAgLy8gICAgICAgIC4uLmF0dHIgc3RhdGVtZW50cy4uLlxuICAgICAgICAvLyAgICAgICAgRmx1c2hFbGVtZW50XG4gICAgICAgIC8vIEJPRFk6ICBOb29wXG4gICAgICAgIC8vICAgICAgICAuLi5ib2R5IHN0YXRlbWVudHMuLi5cbiAgICAgICAgLy8gICAgICAgIFB1dFZhbHVlKFRhZ0V4cHIpXG4gICAgICAgIC8vICAgICAgICBUZXN0XG4gICAgICAgIC8vICAgICAgICBKdW1wVW5sZXNzKEVORClcbiAgICAgICAgLy8gICAgICAgIENsb3NlRWxlbWVudFxuICAgICAgICAvLyBFTkQ6ICAgTm9vcFxuICAgICAgICAvLyAgICAgICAgRGlkUmVuZGVyTGF5b3V0XG4gICAgICAgIC8vICAgICAgICBFeGl0XG4gICAgICAgIC8vXG4gICAgICAgIC8vPT09PT09PT1TVEFUSUNcbiAgICAgICAgLy8gICAgICAgIE9wZW5QcmltaXRpdmVFbGVtZW50T3Bjb2RlXG4gICAgICAgIC8vICAgICAgICBEaWRDcmVhdGVFbGVtZW50XG4gICAgICAgIC8vICAgICAgICAuLi5hdHRyIHN0YXRlbWVudHMuLi5cbiAgICAgICAgLy8gICAgICAgIEZsdXNoRWxlbWVudFxuICAgICAgICAvLyAgICAgICAgLi4uYm9keSBzdGF0ZW1lbnRzLi4uXG4gICAgICAgIC8vICAgICAgICBDbG9zZUVsZW1lbnRcbiAgICAgICAgLy8gICAgICAgIERpZFJlbmRlckxheW91dFxuICAgICAgICAvLyAgICAgICAgRXhpdFxuICAgICAgICBsZXQgeyBlbnYsIGxheW91dCB9ID0gdGhpcztcbiAgICAgICAgbGV0IG1ldGEgPSB7IHRlbXBsYXRlTWV0YTogbGF5b3V0Lm1ldGEsIHN5bWJvbHM6IGxheW91dC5zeW1ib2xzLCBhc1BhcnRpYWw6IGZhbHNlIH07XG4gICAgICAgIGxldCBkeW5hbWljVGFnID0gdGhpcy50YWcuZ2V0RHluYW1pYygpO1xuICAgICAgICBsZXQgc3RhdGljVGFnID0gdGhpcy50YWcuZ2V0U3RhdGljKCk7XG4gICAgICAgIGxldCBiID0gYnVpbGRlcihlbnYsIG1ldGEpO1xuICAgICAgICBiLnN0YXJ0TGFiZWxzKCk7XG4gICAgICAgIGlmIChkeW5hbWljVGFnKSB7XG4gICAgICAgICAgICBiLmZldGNoKFJlZ2lzdGVyLnMxKTtcbiAgICAgICAgICAgIGV4cHIoZHluYW1pY1RhZywgYik7XG4gICAgICAgICAgICBiLmR1cCgpO1xuICAgICAgICAgICAgYi5sb2FkKFJlZ2lzdGVyLnMxKTtcbiAgICAgICAgICAgIGIudGVzdCgnc2ltcGxlJyk7XG4gICAgICAgICAgICBiLmp1bXBVbmxlc3MoJ0JPRFknKTtcbiAgICAgICAgICAgIGIuZmV0Y2goUmVnaXN0ZXIuczEpO1xuICAgICAgICAgICAgYi5wdXNoQ29tcG9uZW50T3BlcmF0aW9ucygpO1xuICAgICAgICAgICAgYi5vcGVuRHluYW1pY0VsZW1lbnQoKTtcbiAgICAgICAgfSBlbHNlIGlmIChzdGF0aWNUYWcpIHtcbiAgICAgICAgICAgIGIucHVzaENvbXBvbmVudE9wZXJhdGlvbnMoKTtcbiAgICAgICAgICAgIGIub3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucyhzdGF0aWNUYWcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkeW5hbWljVGFnIHx8IHN0YXRpY1RhZykge1xuICAgICAgICAgICAgYi5kaWRDcmVhdGVFbGVtZW50KFJlZ2lzdGVyLnMwKTtcbiAgICAgICAgICAgIGxldCBhdHRycyA9IHRoaXMuYXR0cnMuYnVmZmVyO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhdHRycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbXBpbGVTdGF0ZW1lbnQoYXR0cnNbaV0sIGIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYi5mbHVzaEVsZW1lbnQoKTtcbiAgICAgICAgfVxuICAgICAgICBiLmxhYmVsKCdCT0RZJyk7XG4gICAgICAgIGIuaW52b2tlU3RhdGljKGxheW91dC5hc0Jsb2NrKCkpO1xuICAgICAgICBpZiAoZHluYW1pY1RhZykge1xuICAgICAgICAgICAgYi5mZXRjaChSZWdpc3Rlci5zMSk7XG4gICAgICAgICAgICBiLnRlc3QoJ3NpbXBsZScpO1xuICAgICAgICAgICAgYi5qdW1wVW5sZXNzKCdFTkQnKTtcbiAgICAgICAgICAgIGIuY2xvc2VFbGVtZW50KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoc3RhdGljVGFnKSB7XG4gICAgICAgICAgICBiLmNsb3NlRWxlbWVudCgpO1xuICAgICAgICB9XG4gICAgICAgIGIubGFiZWwoJ0VORCcpO1xuICAgICAgICBiLmRpZFJlbmRlckxheW91dChSZWdpc3Rlci5zMCk7XG4gICAgICAgIGlmIChkeW5hbWljVGFnKSB7XG4gICAgICAgICAgICBiLmxvYWQoUmVnaXN0ZXIuczEpO1xuICAgICAgICB9XG4gICAgICAgIGIuc3RvcExhYmVscygpO1xuICAgICAgICBsZXQgc3RhcnQgPSBiLnN0YXJ0O1xuICAgICAgICBsZXQgZW5kID0gYi5maW5hbGl6ZSgpO1xuICAgICAgICBkZWJ1Z1NsaWNlKGVudiwgc3RhcnQsIGVuZCk7XG4gICAgICAgIHJldHVybiBuZXcgQ29tcGlsZWREeW5hbWljVGVtcGxhdGUoc3RhcnQsIGVuZCwge1xuICAgICAgICAgICAgbWV0YSxcbiAgICAgICAgICAgIGhhc0V2YWw6IGxheW91dC5oYXNFdmFsLFxuICAgICAgICAgICAgc3ltYm9sczogbGF5b3V0LnN5bWJvbHMuY29uY2F0KFtBVFRSU19CTE9DS10pXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbmNsYXNzIFVud3JhcHBlZEJ1aWxkZXIge1xuICAgIGNvbnN0cnVjdG9yKGVudiwgY29tcG9uZW50TmFtZSwgbGF5b3V0KSB7XG4gICAgICAgIHRoaXMuZW52ID0gZW52O1xuICAgICAgICB0aGlzLmNvbXBvbmVudE5hbWUgPSBjb21wb25lbnROYW1lO1xuICAgICAgICB0aGlzLmxheW91dCA9IGxheW91dDtcbiAgICAgICAgdGhpcy5hdHRycyA9IG5ldyBDb21wb25lbnRBdHRyc0J1aWxkZXIoKTtcbiAgICB9XG4gICAgZ2V0IHRhZygpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdCVUc6IENhbm5vdCBjYWxsIGB0YWdgIG9uIGFuIFVud3JhcHBlZEJ1aWxkZXInKTtcbiAgICB9XG4gICAgY29tcGlsZSgpIHtcbiAgICAgICAgbGV0IHsgZW52LCBsYXlvdXQgfSA9IHRoaXM7XG4gICAgICAgIHJldHVybiBsYXlvdXQuYXNMYXlvdXQodGhpcy5jb21wb25lbnROYW1lLCB0aGlzLmF0dHJzLmJ1ZmZlcikuY29tcGlsZUR5bmFtaWMoZW52KTtcbiAgICB9XG59XG5jbGFzcyBDb21wb25lbnRUYWdCdWlsZGVyIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5pc0R5bmFtaWMgPSBudWxsO1xuICAgICAgICB0aGlzLmlzU3RhdGljID0gbnVsbDtcbiAgICAgICAgdGhpcy5zdGF0aWNUYWdOYW1lID0gbnVsbDtcbiAgICAgICAgdGhpcy5keW5hbWljVGFnTmFtZSA9IG51bGw7XG4gICAgfVxuICAgIGdldER5bmFtaWMoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzRHluYW1pYykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZHluYW1pY1RhZ05hbWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0U3RhdGljKCkge1xuICAgICAgICBpZiAodGhpcy5pc1N0YXRpYykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGljVGFnTmFtZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzdGF0aWModGFnTmFtZSkge1xuICAgICAgICB0aGlzLmlzU3RhdGljID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zdGF0aWNUYWdOYW1lID0gdGFnTmFtZTtcbiAgICB9XG4gICAgZHluYW1pYyh0YWdOYW1lKSB7XG4gICAgICAgIHRoaXMuaXNEeW5hbWljID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5keW5hbWljVGFnTmFtZSA9IFtPcHMuQ2xpZW50U2lkZUV4cHJlc3Npb24sIENsaWVudFNpZGUuT3BzLkZ1bmN0aW9uRXhwcmVzc2lvbiwgdGFnTmFtZV07XG4gICAgfVxufVxuY2xhc3MgQ29tcG9uZW50QXR0cnNCdWlsZGVyIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5idWZmZXIgPSBbXTtcbiAgICB9XG4gICAgc3RhdGljKG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIHRoaXMuYnVmZmVyLnB1c2goW09wcy5TdGF0aWNBdHRyLCBuYW1lLCB2YWx1ZSwgbnVsbF0pO1xuICAgIH1cbiAgICBkeW5hbWljKG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIHRoaXMuYnVmZmVyLnB1c2goW09wcy5EeW5hbWljQXR0ciwgbmFtZSwgW09wcy5DbGllbnRTaWRlRXhwcmVzc2lvbiwgQ2xpZW50U2lkZS5PcHMuRnVuY3Rpb25FeHByZXNzaW9uLCB2YWx1ZV0sIG51bGxdKTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgQ29tcG9uZW50QnVpbGRlciB7XG4gICAgY29uc3RydWN0b3IoYnVpbGRlcikge1xuICAgICAgICB0aGlzLmJ1aWxkZXIgPSBidWlsZGVyO1xuICAgICAgICB0aGlzLmVudiA9IGJ1aWxkZXIuZW52O1xuICAgIH1cbiAgICBzdGF0aWMoZGVmaW5pdGlvbiwgYXJncykge1xuICAgICAgICBsZXQgW3BhcmFtcywgaGFzaCwgX2RlZmF1bHQsIGludmVyc2VdID0gYXJncztcbiAgICAgICAgbGV0IHsgYnVpbGRlciB9ID0gdGhpcztcbiAgICAgICAgYnVpbGRlci5wdXNoQ29tcG9uZW50TWFuYWdlcihkZWZpbml0aW9uKTtcbiAgICAgICAgYnVpbGRlci5pbnZva2VDb21wb25lbnQobnVsbCwgcGFyYW1zLCBoYXNoLCBfZGVmYXVsdCwgaW52ZXJzZSk7XG4gICAgfVxuICAgIGR5bmFtaWMoZGVmaW5pdGlvbkFyZ3MsIGdldERlZmluaXRpb24sIGFyZ3MpIHtcbiAgICAgICAgbGV0IFtwYXJhbXMsIGhhc2gsIGJsb2NrLCBpbnZlcnNlXSA9IGFyZ3M7XG4gICAgICAgIGxldCB7IGJ1aWxkZXIgfSA9IHRoaXM7XG4gICAgICAgIGlmICghZGVmaW5pdGlvbkFyZ3MgfHwgZGVmaW5pdGlvbkFyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEeW5hbWljIHN5bnRheCB3aXRob3V0IGFuIGFyZ3VtZW50XCIpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBtZXRhID0gdGhpcy5idWlsZGVyLm1ldGEudGVtcGxhdGVNZXRhO1xuICAgICAgICBmdW5jdGlvbiBoZWxwZXIodm0sIGEpIHtcbiAgICAgICAgICAgIHJldHVybiBnZXREZWZpbml0aW9uKHZtLCBhLCBtZXRhKTtcbiAgICAgICAgfVxuICAgICAgICBidWlsZGVyLnN0YXJ0TGFiZWxzKCk7XG4gICAgICAgIGJ1aWxkZXIucHVzaEZyYW1lKCk7XG4gICAgICAgIGJ1aWxkZXIucmV0dXJuVG8oJ0VORCcpO1xuICAgICAgICBidWlsZGVyLmNvbXBpbGVBcmdzKGRlZmluaXRpb25BcmdzWzBdLCBkZWZpbml0aW9uQXJnc1sxXSwgdHJ1ZSk7XG4gICAgICAgIGJ1aWxkZXIuaGVscGVyKGhlbHBlcik7XG4gICAgICAgIGJ1aWxkZXIuZHVwKCk7XG4gICAgICAgIGJ1aWxkZXIudGVzdCgnc2ltcGxlJyk7XG4gICAgICAgIGJ1aWxkZXIuZW50ZXIoMik7XG4gICAgICAgIGJ1aWxkZXIuanVtcFVubGVzcygnRUxTRScpO1xuICAgICAgICBidWlsZGVyLnB1c2hEeW5hbWljQ29tcG9uZW50TWFuYWdlcigpO1xuICAgICAgICBidWlsZGVyLmludm9rZUNvbXBvbmVudChudWxsLCBwYXJhbXMsIGhhc2gsIGJsb2NrLCBpbnZlcnNlKTtcbiAgICAgICAgYnVpbGRlci5sYWJlbCgnRUxTRScpO1xuICAgICAgICBidWlsZGVyLmV4aXQoKTtcbiAgICAgICAgYnVpbGRlci5yZXR1cm4oKTtcbiAgICAgICAgYnVpbGRlci5sYWJlbCgnRU5EJyk7XG4gICAgICAgIGJ1aWxkZXIucG9wRnJhbWUoKTtcbiAgICAgICAgYnVpbGRlci5zdG9wTGFiZWxzKCk7XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkZXIoZW52LCBtZXRhKSB7XG4gICAgcmV0dXJuIG5ldyBPcGNvZGVCdWlsZGVyRFNMKGVudiwgbWV0YSk7XG59Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlci5qcyJdLCJuYW1lcyI6WyJDb21waWxlZER5bmFtaWNUZW1wbGF0ZSIsIk9wcyIsIlJlZ2lzdGVyIiwiZGVidWdTbGljZSIsIkFUVFJTX0JMT0NLIiwiQ2xpZW50U2lkZSIsImNvbXBpbGVTdGF0ZW1lbnQiLCJleHByIiwiT3Bjb2RlQnVpbGRlckRTTCIsImNvbXBpbGVMYXlvdXQiLCJjb21waWxhYmxlIiwiZW52IiwiYnVpbGRlciIsIkNvbXBvbmVudExheW91dEJ1aWxkZXIiLCJjb21waWxlIiwid3JhcExheW91dCIsImxheW91dCIsImlubmVyIiwiV3JhcHBlZEJ1aWxkZXIiLCJmcm9tTGF5b3V0IiwiVW53cmFwcGVkQnVpbGRlciIsInRhZyIsImF0dHJzIiwiQ29tcG9uZW50VGFnQnVpbGRlciIsIkNvbXBvbmVudEF0dHJzQnVpbGRlciIsIm1ldGEiLCJ0ZW1wbGF0ZU1ldGEiLCJzeW1ib2xzIiwiYXNQYXJ0aWFsIiwiZHluYW1pY1RhZyIsImdldER5bmFtaWMiLCJzdGF0aWNUYWciLCJnZXRTdGF0aWMiLCJiIiwic3RhcnRMYWJlbHMiLCJmZXRjaCIsInMxIiwiZHVwIiwibG9hZCIsInRlc3QiLCJqdW1wVW5sZXNzIiwicHVzaENvbXBvbmVudE9wZXJhdGlvbnMiLCJvcGVuRHluYW1pY0VsZW1lbnQiLCJvcGVuRWxlbWVudFdpdGhPcGVyYXRpb25zIiwiZGlkQ3JlYXRlRWxlbWVudCIsInMwIiwiaSIsImxlbmd0aCIsImZsdXNoRWxlbWVudCIsImxhYmVsIiwiaW52b2tlU3RhdGljIiwiYXNCbG9jayIsImNsb3NlRWxlbWVudCIsImRpZFJlbmRlckxheW91dCIsInN0b3BMYWJlbHMiLCJzdGFydCIsImVuZCIsImZpbmFsaXplIiwiaGFzRXZhbCIsImNvbmNhdCIsImFzTGF5b3V0IiwiY29tcGlsZUR5bmFtaWMiLCJFcnJvciIsImlzRHluYW1pYyIsImlzU3RhdGljIiwic3RhdGljVGFnTmFtZSIsImR5bmFtaWNUYWdOYW1lIiwic3RhdGljIiwidGFnTmFtZSIsImR5bmFtaWMiLCJDbGllbnRTaWRlRXhwcmVzc2lvbiIsIkZ1bmN0aW9uRXhwcmVzc2lvbiIsImJ1ZmZlciIsIm5hbWUiLCJ2YWx1ZSIsInB1c2giLCJTdGF0aWNBdHRyIiwiRHluYW1pY0F0dHIiLCJDb21wb25lbnRCdWlsZGVyIiwiZGVmaW5pdGlvbiIsImFyZ3MiLCJwYXJhbXMiLCJoYXNoIiwiX2RlZmF1bHQiLCJpbnZlcnNlIiwicHVzaENvbXBvbmVudE1hbmFnZXIiLCJpbnZva2VDb21wb25lbnQiLCJkZWZpbml0aW9uQXJncyIsImdldERlZmluaXRpb24iLCJibG9jayIsImhlbHBlciIsInZtIiwicHVzaEZyYW1lIiwicmV0dXJuVG8iLCJjb21waWxlQXJncyIsImVudGVyIiwicHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyIiwiZXhpdCIsInJldHVybiIsInBvcEZyYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7UUFNTyxBQUFTO1FBNk1ULEFBQVM7O0FBbk5oQixBQUFTLEFBQStCOztBQUN4QyxBQUFTLEFBQVc7O0FBQ3BCLEFBQVMsQUFBVSxBQUFrQjs7QUFDckMsQUFBUyxBQUFhLEFBQVksQUFBd0I7O0FBQzFELEFBQVMsQUFBWTs7QUFDckIsQUFBTyxBQUFzQixBQUM3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFPLHVCQUFBLEFBQXVCLFlBQXZCLEFBQW1DLEtBQUssQUFDM0M7UUFBSSxVQUFVLElBQUEsQUFBSSx1QkFBbEIsQUFBYyxBQUEyQixBQUN6QztlQUFBLEFBQVcsUUFBWCxBQUFtQixBQUNuQjtXQUFPLFFBQVAsQUFBTyxBQUFRLEFBQ2xCOzs7SSxBQUNLLHFDQUNGO29DQUFBLEFBQVksS0FBSzs4QkFDYjs7YUFBQSxBQUFLLE1BQUwsQUFBVyxBQUNkOzs7cUNBQ0QsQSxpQ0FBVyxBLFFBQVEsQUFDZjthQUFBLEFBQUssUUFBUSxJQUFBLEFBQUksZUFBZSxLQUFuQixBQUF3QixLQUFyQyxBQUFhLEFBQTZCLEFBQzdDO0E7O3FDLEFBQ0QsaUMs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QUFjLEFBQ2Q7Z0JBQUEsQUFBUSxBQUNSO2dCQUFBLEFBQVEsQUFDUjtnQkFBQSxBQUFRLE1BQVIsQUFBYyxBQUNkO2dCQUFBLEFBQVEsQUFDUjtnQkFBQSxBQUFRLEFBQ1g7QUF0Q0w7O1dBQUE7QUF3Q0E7QUFBTyxpQkFBQSxBQUFpQixLQUFqQixBQUFzQixNQUFNLEFBQy9CO1dBQU8sQUFBSSxzQkFBSixBQUFxQixLQUE1QixBQUFPLEFBQTBCLEFBQ3BDIiwiZmlsZSI6ImxpYi9jb21waWxlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBpbGVkRHluYW1pY1RlbXBsYXRlIH0gZnJvbSAnLi9jb21waWxlZC9ibG9ja3MnO1xuaW1wb3J0IHsgT3BzIH0gZnJvbSAnQGdsaW1tZXIvd2lyZS1mb3JtYXQnO1xuaW1wb3J0IHsgUmVnaXN0ZXIsIGRlYnVnU2xpY2UgfSBmcm9tICcuL29wY29kZXMnO1xuaW1wb3J0IHsgQVRUUlNfQkxPQ0ssIENsaWVudFNpZGUsIGNvbXBpbGVTdGF0ZW1lbnQgfSBmcm9tICcuL3NjYW5uZXInO1xuaW1wb3J0IHsgZXhwciB9IGZyb20gJy4vc3ludGF4L2Z1bmN0aW9ucyc7XG5pbXBvcnQgT3Bjb2RlQnVpbGRlckRTTCBmcm9tICcuL2NvbXBpbGVkL29wY29kZXMvYnVpbGRlcic7XG5leHBvcnQgZnVuY3Rpb24gY29tcGlsZUxheW91dChjb21waWxhYmxlLCBlbnYpIHtcbiAgICBsZXQgYnVpbGRlciA9IG5ldyBDb21wb25lbnRMYXlvdXRCdWlsZGVyKGVudik7XG4gICAgY29tcGlsYWJsZS5jb21waWxlKGJ1aWxkZXIpO1xuICAgIHJldHVybiBidWlsZGVyLmNvbXBpbGUoKTtcbn1cbmNsYXNzIENvbXBvbmVudExheW91dEJ1aWxkZXIge1xuICAgIGNvbnN0cnVjdG9yKGVudikge1xuICAgICAgICB0aGlzLmVudiA9IGVudjtcbiAgICB9XG4gICAgd3JhcExheW91dChsYXlvdXQpIHtcbiAgICAgICAgdGhpcy5pbm5lciA9IG5ldyBXcmFwcGVkQnVpbGRlcih0aGlzLmVudiwgbGF5b3V0KTtcbiAgICB9XG4gICAgZnJvbUxheW91dChsYXlvdXQpIHtcbiAgICAgICAgdGhpcy5pbm5lciA9IG5ldyBVbndyYXBwZWRCdWlsZGVyKHRoaXMuZW52LCBsYXlvdXQpO1xuICAgIH1cbiAgICBjb21waWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pbm5lci5jb21waWxlKCk7XG4gICAgfVxuICAgIGdldCB0YWcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlubmVyLnRhZztcbiAgICB9XG4gICAgZ2V0IGF0dHJzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pbm5lci5hdHRycztcbiAgICB9XG59XG5jbGFzcyBXcmFwcGVkQnVpbGRlciB7XG4gICAgY29uc3RydWN0b3IoZW52LCBsYXlvdXQpIHtcbiAgICAgICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgICAgIHRoaXMubGF5b3V0ID0gbGF5b3V0O1xuICAgICAgICB0aGlzLnRhZyA9IG5ldyBDb21wb25lbnRUYWdCdWlsZGVyKCk7XG4gICAgICAgIHRoaXMuYXR0cnMgPSBuZXcgQ29tcG9uZW50QXR0cnNCdWlsZGVyKCk7XG4gICAgfVxuICAgIGNvbXBpbGUoKSB7XG4gICAgICAgIC8vPT09PT09PT1EWU5BTUlDXG4gICAgICAgIC8vICAgICAgICBQdXRWYWx1ZShUYWdFeHByKVxuICAgICAgICAvLyAgICAgICAgVGVzdFxuICAgICAgICAvLyAgICAgICAgSnVtcFVubGVzcyhCT0RZKVxuICAgICAgICAvLyAgICAgICAgT3BlbkR5bmFtaWNQcmltaXRpdmVFbGVtZW50XG4gICAgICAgIC8vICAgICAgICBEaWRDcmVhdGVFbGVtZW50XG4gICAgICAgIC8vICAgICAgICAuLi5hdHRyIHN0YXRlbWVudHMuLi5cbiAgICAgICAgLy8gICAgICAgIEZsdXNoRWxlbWVudFxuICAgICAgICAvLyBCT0RZOiAgTm9vcFxuICAgICAgICAvLyAgICAgICAgLi4uYm9keSBzdGF0ZW1lbnRzLi4uXG4gICAgICAgIC8vICAgICAgICBQdXRWYWx1ZShUYWdFeHByKVxuICAgICAgICAvLyAgICAgICAgVGVzdFxuICAgICAgICAvLyAgICAgICAgSnVtcFVubGVzcyhFTkQpXG4gICAgICAgIC8vICAgICAgICBDbG9zZUVsZW1lbnRcbiAgICAgICAgLy8gRU5EOiAgIE5vb3BcbiAgICAgICAgLy8gICAgICAgIERpZFJlbmRlckxheW91dFxuICAgICAgICAvLyAgICAgICAgRXhpdFxuICAgICAgICAvL1xuICAgICAgICAvLz09PT09PT09U1RBVElDXG4gICAgICAgIC8vICAgICAgICBPcGVuUHJpbWl0aXZlRWxlbWVudE9wY29kZVxuICAgICAgICAvLyAgICAgICAgRGlkQ3JlYXRlRWxlbWVudFxuICAgICAgICAvLyAgICAgICAgLi4uYXR0ciBzdGF0ZW1lbnRzLi4uXG4gICAgICAgIC8vICAgICAgICBGbHVzaEVsZW1lbnRcbiAgICAgICAgLy8gICAgICAgIC4uLmJvZHkgc3RhdGVtZW50cy4uLlxuICAgICAgICAvLyAgICAgICAgQ2xvc2VFbGVtZW50XG4gICAgICAgIC8vICAgICAgICBEaWRSZW5kZXJMYXlvdXRcbiAgICAgICAgLy8gICAgICAgIEV4aXRcbiAgICAgICAgbGV0IHsgZW52LCBsYXlvdXQgfSA9IHRoaXM7XG4gICAgICAgIGxldCBtZXRhID0geyB0ZW1wbGF0ZU1ldGE6IGxheW91dC5tZXRhLCBzeW1ib2xzOiBsYXlvdXQuc3ltYm9scywgYXNQYXJ0aWFsOiBmYWxzZSB9O1xuICAgICAgICBsZXQgZHluYW1pY1RhZyA9IHRoaXMudGFnLmdldER5bmFtaWMoKTtcbiAgICAgICAgbGV0IHN0YXRpY1RhZyA9IHRoaXMudGFnLmdldFN0YXRpYygpO1xuICAgICAgICBsZXQgYiA9IGJ1aWxkZXIoZW52LCBtZXRhKTtcbiAgICAgICAgYi5zdGFydExhYmVscygpO1xuICAgICAgICBpZiAoZHluYW1pY1RhZykge1xuICAgICAgICAgICAgYi5mZXRjaChSZWdpc3Rlci5zMSk7XG4gICAgICAgICAgICBleHByKGR5bmFtaWNUYWcsIGIpO1xuICAgICAgICAgICAgYi5kdXAoKTtcbiAgICAgICAgICAgIGIubG9hZChSZWdpc3Rlci5zMSk7XG4gICAgICAgICAgICBiLnRlc3QoJ3NpbXBsZScpO1xuICAgICAgICAgICAgYi5qdW1wVW5sZXNzKCdCT0RZJyk7XG4gICAgICAgICAgICBiLmZldGNoKFJlZ2lzdGVyLnMxKTtcbiAgICAgICAgICAgIGIucHVzaENvbXBvbmVudE9wZXJhdGlvbnMoKTtcbiAgICAgICAgICAgIGIub3BlbkR5bmFtaWNFbGVtZW50KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoc3RhdGljVGFnKSB7XG4gICAgICAgICAgICBiLnB1c2hDb21wb25lbnRPcGVyYXRpb25zKCk7XG4gICAgICAgICAgICBiLm9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMoc3RhdGljVGFnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZHluYW1pY1RhZyB8fCBzdGF0aWNUYWcpIHtcbiAgICAgICAgICAgIGIuZGlkQ3JlYXRlRWxlbWVudChSZWdpc3Rlci5zMCk7XG4gICAgICAgICAgICBsZXQgYXR0cnMgPSB0aGlzLmF0dHJzWydidWZmZXInXTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXR0cnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb21waWxlU3RhdGVtZW50KGF0dHJzW2ldLCBiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGIuZmx1c2hFbGVtZW50KCk7XG4gICAgICAgIH1cbiAgICAgICAgYi5sYWJlbCgnQk9EWScpO1xuICAgICAgICBiLmludm9rZVN0YXRpYyhsYXlvdXQuYXNCbG9jaygpKTtcbiAgICAgICAgaWYgKGR5bmFtaWNUYWcpIHtcbiAgICAgICAgICAgIGIuZmV0Y2goUmVnaXN0ZXIuczEpO1xuICAgICAgICAgICAgYi50ZXN0KCdzaW1wbGUnKTtcbiAgICAgICAgICAgIGIuanVtcFVubGVzcygnRU5EJyk7XG4gICAgICAgICAgICBiLmNsb3NlRWxlbWVudCgpO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YXRpY1RhZykge1xuICAgICAgICAgICAgYi5jbG9zZUVsZW1lbnQoKTtcbiAgICAgICAgfVxuICAgICAgICBiLmxhYmVsKCdFTkQnKTtcbiAgICAgICAgYi5kaWRSZW5kZXJMYXlvdXQoUmVnaXN0ZXIuczApO1xuICAgICAgICBpZiAoZHluYW1pY1RhZykge1xuICAgICAgICAgICAgYi5sb2FkKFJlZ2lzdGVyLnMxKTtcbiAgICAgICAgfVxuICAgICAgICBiLnN0b3BMYWJlbHMoKTtcbiAgICAgICAgbGV0IHN0YXJ0ID0gYi5zdGFydDtcbiAgICAgICAgbGV0IGVuZCA9IGIuZmluYWxpemUoKTtcbiAgICAgICAgZGVidWdTbGljZShlbnYsIHN0YXJ0LCBlbmQpO1xuICAgICAgICByZXR1cm4gbmV3IENvbXBpbGVkRHluYW1pY1RlbXBsYXRlKHN0YXJ0LCBlbmQsIHtcbiAgICAgICAgICAgIG1ldGEsXG4gICAgICAgICAgICBoYXNFdmFsOiBsYXlvdXQuaGFzRXZhbCxcbiAgICAgICAgICAgIHN5bWJvbHM6IGxheW91dC5zeW1ib2xzLmNvbmNhdChbQVRUUlNfQkxPQ0tdKVxuICAgICAgICB9KTtcbiAgICB9XG59XG5jbGFzcyBVbndyYXBwZWRCdWlsZGVyIHtcbiAgICBjb25zdHJ1Y3RvcihlbnYsIGxheW91dCkge1xuICAgICAgICB0aGlzLmVudiA9IGVudjtcbiAgICAgICAgdGhpcy5sYXlvdXQgPSBsYXlvdXQ7XG4gICAgICAgIHRoaXMuYXR0cnMgPSBuZXcgQ29tcG9uZW50QXR0cnNCdWlsZGVyKCk7XG4gICAgfVxuICAgIGdldCB0YWcoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQlVHOiBDYW5ub3QgY2FsbCBgdGFnYCBvbiBhbiBVbndyYXBwZWRCdWlsZGVyJyk7XG4gICAgfVxuICAgIGNvbXBpbGUoKSB7XG4gICAgICAgIGxldCB7IGVudiwgbGF5b3V0IH0gPSB0aGlzO1xuICAgICAgICByZXR1cm4gbGF5b3V0LmFzTGF5b3V0KHRoaXMuYXR0cnNbJ2J1ZmZlciddKS5jb21waWxlRHluYW1pYyhlbnYpO1xuICAgIH1cbn1cbmNsYXNzIENvbXBvbmVudFRhZ0J1aWxkZXIge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmlzRHluYW1pYyA9IG51bGw7XG4gICAgICAgIHRoaXMuaXNTdGF0aWMgPSBudWxsO1xuICAgICAgICB0aGlzLnN0YXRpY1RhZ05hbWUgPSBudWxsO1xuICAgICAgICB0aGlzLmR5bmFtaWNUYWdOYW1lID0gbnVsbDtcbiAgICB9XG4gICAgZ2V0RHluYW1pYygpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNEeW5hbWljKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5keW5hbWljVGFnTmFtZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXRTdGF0aWMoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzU3RhdGljKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdGF0aWNUYWdOYW1lO1xuICAgICAgICB9XG4gICAgfVxuICAgIHN0YXRpYyh0YWdOYW1lKSB7XG4gICAgICAgIHRoaXMuaXNTdGF0aWMgPSB0cnVlO1xuICAgICAgICB0aGlzLnN0YXRpY1RhZ05hbWUgPSB0YWdOYW1lO1xuICAgIH1cbiAgICBkeW5hbWljKHRhZ05hbWUpIHtcbiAgICAgICAgdGhpcy5pc0R5bmFtaWMgPSB0cnVlO1xuICAgICAgICB0aGlzLmR5bmFtaWNUYWdOYW1lID0gW09wcy5DbGllbnRTaWRlRXhwcmVzc2lvbiwgQ2xpZW50U2lkZS5PcHMuRnVuY3Rpb25FeHByZXNzaW9uLCB0YWdOYW1lXTtcbiAgICB9XG59XG5jbGFzcyBDb21wb25lbnRBdHRyc0J1aWxkZXIge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmJ1ZmZlciA9IFtdO1xuICAgIH1cbiAgICBzdGF0aWMobmFtZSwgdmFsdWUpIHtcbiAgICAgICAgdGhpcy5idWZmZXIucHVzaChbT3BzLlN0YXRpY0F0dHIsIG5hbWUsIHZhbHVlLCBudWxsXSk7XG4gICAgfVxuICAgIGR5bmFtaWMobmFtZSwgdmFsdWUpIHtcbiAgICAgICAgdGhpcy5idWZmZXIucHVzaChbT3BzLkR5bmFtaWNBdHRyLCBuYW1lLCBbT3BzLkNsaWVudFNpZGVFeHByZXNzaW9uLCBDbGllbnRTaWRlLk9wcy5GdW5jdGlvbkV4cHJlc3Npb24sIHZhbHVlXSwgbnVsbF0pO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBDb21wb25lbnRCdWlsZGVyIHtcbiAgICBjb25zdHJ1Y3RvcihidWlsZGVyKSB7XG4gICAgICAgIHRoaXMuYnVpbGRlciA9IGJ1aWxkZXI7XG4gICAgICAgIHRoaXMuZW52ID0gYnVpbGRlci5lbnY7XG4gICAgfVxuICAgIHN0YXRpYyhkZWZpbml0aW9uLCBhcmdzKSB7XG4gICAgICAgIGxldCBbcGFyYW1zLCBoYXNoLCBfZGVmYXVsdCwgaW52ZXJzZV0gPSBhcmdzO1xuICAgICAgICBsZXQgeyBidWlsZGVyIH0gPSB0aGlzO1xuICAgICAgICBidWlsZGVyLnB1c2hDb21wb25lbnRNYW5hZ2VyKGRlZmluaXRpb24pO1xuICAgICAgICBidWlsZGVyLmludm9rZUNvbXBvbmVudChudWxsLCBwYXJhbXMsIGhhc2gsIF9kZWZhdWx0LCBpbnZlcnNlKTtcbiAgICB9XG4gICAgZHluYW1pYyhkZWZpbml0aW9uQXJncywgZ2V0RGVmaW5pdGlvbiwgYXJncykge1xuICAgICAgICBsZXQgW3BhcmFtcywgaGFzaCwgYmxvY2ssIGludmVyc2VdID0gYXJncztcbiAgICAgICAgbGV0IHsgYnVpbGRlciB9ID0gdGhpcztcbiAgICAgICAgaWYgKCFkZWZpbml0aW9uQXJncyB8fCBkZWZpbml0aW9uQXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkR5bmFtaWMgc3ludGF4IHdpdGhvdXQgYW4gYXJndW1lbnRcIik7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IG1ldGEgPSB0aGlzLmJ1aWxkZXIubWV0YS50ZW1wbGF0ZU1ldGE7XG4gICAgICAgIGZ1bmN0aW9uIGhlbHBlcih2bSwgYXJncykge1xuICAgICAgICAgICAgcmV0dXJuIGdldERlZmluaXRpb24odm0sIGFyZ3MsIG1ldGEpO1xuICAgICAgICB9XG4gICAgICAgIGJ1aWxkZXIuc3RhcnRMYWJlbHMoKTtcbiAgICAgICAgYnVpbGRlci5wdXNoRnJhbWUoKTtcbiAgICAgICAgYnVpbGRlci5yZXR1cm5UbygnRU5EJyk7XG4gICAgICAgIGJ1aWxkZXIuY29tcGlsZUFyZ3MoZGVmaW5pdGlvbkFyZ3NbMF0sIGRlZmluaXRpb25BcmdzWzFdLCB0cnVlKTtcbiAgICAgICAgYnVpbGRlci5oZWxwZXIoaGVscGVyKTtcbiAgICAgICAgYnVpbGRlci5kdXAoKTtcbiAgICAgICAgYnVpbGRlci50ZXN0KCdzaW1wbGUnKTtcbiAgICAgICAgYnVpbGRlci5lbnRlcigyKTtcbiAgICAgICAgYnVpbGRlci5qdW1wVW5sZXNzKCdFTFNFJyk7XG4gICAgICAgIGJ1aWxkZXIucHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyKCk7XG4gICAgICAgIGJ1aWxkZXIuaW52b2tlQ29tcG9uZW50KG51bGwsIHBhcmFtcywgaGFzaCwgYmxvY2ssIGludmVyc2UpO1xuICAgICAgICBidWlsZGVyLmxhYmVsKCdFTFNFJyk7XG4gICAgICAgIGJ1aWxkZXIuZXhpdCgpO1xuICAgICAgICBidWlsZGVyLnJldHVybigpO1xuICAgICAgICBidWlsZGVyLmxhYmVsKCdFTkQnKTtcbiAgICAgICAgYnVpbGRlci5wb3BGcmFtZSgpO1xuICAgICAgICBidWlsZGVyLnN0b3BMYWJlbHMoKTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gYnVpbGRlcihlbnYsIG1ldGEpIHtcbiAgICByZXR1cm4gbmV3IE9wY29kZUJ1aWxkZXJEU0woZW52LCBtZXRhKTtcbn0iXX0=

@@ -61,9 +61,7 @@ "use strict";

Constants.prototype.getNames = function getNames(value) {
var _names = [];
var names = this.getArray(value);
for (var i = 0; i < names.length; i++) {
var n = names[i];
_names[i] = this.getString(n);
}
return _names;
var _this = this;
return this.getArray(value).map(function (n) {
return _this.getString(n);
});
};

@@ -111,2 +109,2 @@

exports.Constants = Constants;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9lbnZpcm9ubWVudC9jb25zdGFudHMuanMiXSwibmFtZXMiOlsiTlVMTF9SRUZFUkVOQ0UiLCJVTkRFRklORURfUkVGRVJFTkNFIiwiQ29uc3RhbnRzIiwicmVmZXJlbmNlcyIsInN0cmluZ3MiLCJleHByZXNzaW9ucyIsImFycmF5cyIsImJsb2NrcyIsImZ1bmN0aW9ucyIsIm90aGVycyIsInJlZmVyZW5jZSIsImdldFJlZmVyZW5jZSIsInZhbHVlIiwiaW5kZXgiLCJsZW5ndGgiLCJwdXNoIiwiZ2V0U3RyaW5nIiwic3RyaW5nIiwiZ2V0RXhwcmVzc2lvbiIsImdldEFycmF5IiwiZ2V0TmFtZXMiLCJfbmFtZXMiLCJuYW1lcyIsImkiLCJuIiwiYXJyYXkiLCJ2YWx1ZXMiLCJnZXRCbG9jayIsImJsb2NrIiwiZ2V0RnVuY3Rpb24iLCJmdW5jdGlvbiIsImYiLCJnZXRPdGhlciIsIm90aGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsQUFBUyxBQUFULEFBQXlCLEFBQXpCLEFBQW9ELEFBQXBEOzs7Ozs7OztJQUNhLEEsd0JBQ1Q7eUJBQWM7OEJBQ1Y7O0FBQ0E7YUFBSyxBQUFMLGFBQWtCLEFBQWxCLEFBQ0E7YUFBSyxBQUFMLFVBQWUsQUFBZixBQUNBO2FBQUssQUFBTCxjQUFtQixBQUFuQixBQUNBO2FBQUssQUFBTCxTQUFjLEFBQWQsQUFDQTthQUFLLEFBQUwsU0FBYyxBQUFkLEFBQ0E7YUFBSyxBQUFMLFlBQWlCLEFBQWpCLEFBQ0E7YUFBSyxBQUFMLFNBQWMsQUFBZCxBQUNBO2FBQUssQUFBTCxpQkFBc0IsS0FBSyxBQUFMLEFBQWUsQUFBZixBQUF0QixBQUNBO2FBQUssQUFBTCxzQkFBMkIsS0FBSyxBQUFMLEFBQWUsQUFBZixBQUEzQixBQUNIOzs7d0JBQ0QsQSxxQ0FBYSxBLE9BQU8sQUFDaEI7ZUFBTyxLQUFLLEFBQUwsV0FBZ0IsUUFBUSxBQUF4QixBQUFQLEFBQ0g7QTs7d0JBQ0QsQSwrQkFBVSxBLE9BQU8sQUFDYjtZQUFJLFFBQVEsS0FBSyxBQUFMLFdBQWdCLEFBQTVCLEFBQ0E7YUFBSyxBQUFMLFdBQWdCLEFBQWhCLEtBQXFCLEFBQXJCLEFBQ0E7ZUFBTyxRQUFRLEFBQWYsQUFDSDtBOzt3QkFDRCxBLCtCQUFVLEEsT0FBTyxBQUNiO2VBQU8sS0FBSyxBQUFMLFFBQWEsUUFBUSxBQUFyQixBQUFQLEFBQ0g7QTs7d0JBQ0QsQSx5QkFBTyxBLE9BQU8sQUFDVjtZQUFJLFFBQVEsS0FBSyxBQUFMLFFBQWEsQUFBekIsQUFDQTthQUFLLEFBQUwsUUFBYSxBQUFiLEtBQWtCLEFBQWxCLEFBQ0E7ZUFBTyxRQUFRLEFBQWYsQUFDSDtBOzt3QkFDRCxBLHVDQUFjLEEsT0FBTyxBQUNqQjtlQUFPLEtBQUssQUFBTCxZQUFpQixRQUFRLEFBQXpCLEFBQVAsQUFDSDtBOzt3QkFDRCxBLDZCQUFTLEEsT0FBTyxBQUNaO2VBQU8sS0FBSyxBQUFMLE9BQVksUUFBUSxBQUFwQixBQUFQLEFBQ0g7QTs7d0JBQ0QsQSw2QkFBUyxBLE9BQU8sQUFDWjtZQUFJLFNBQVMsQUFBYixBQUNBO1lBQUksUUFBUSxLQUFLLEFBQUwsU0FBYyxBQUFkLEFBQVosQUFDQTthQUFLLElBQUksSUFBSSxBQUFiLEdBQWdCLElBQUksTUFBTSxBQUExQixRQUFrQyxBQUFsQyxLQUF1QyxBQUNuQztnQkFBSSxJQUFJLE1BQU0sQUFBTixBQUFSLEFBQ0E7bUJBQU8sQUFBUCxLQUFZLEtBQUssQUFBTCxVQUFlLEFBQWYsQUFBWixBQUNIO0FBQ0Q7ZUFBTyxBQUFQLEFBQ0g7QTs7d0JBQ0QsQSx1QkFBTSxBLFFBQVEsQUFDVjtZQUFJLFFBQVEsS0FBSyxBQUFMLE9BQVksQUFBeEIsQUFDQTthQUFLLEFBQUwsT0FBWSxBQUFaLEtBQWlCLEFBQWpCLEFBQ0E7ZUFBTyxRQUFRLEFBQWYsQUFDSDtBOzt3QkFDRCxBLDZCQUFTLEEsT0FBTyxBQUNaO2VBQU8sS0FBSyxBQUFMLE9BQVksUUFBUSxBQUFwQixBQUFQLEFBQ0g7QTs7d0JBQ0QsQSx1QkFBTSxBLFFBQU8sQUFDVDtZQUFJLFFBQVEsS0FBSyxBQUFMLE9BQVksQUFBeEIsQUFDQTthQUFLLEFBQUwsT0FBWSxBQUFaLEtBQWlCLEFBQWpCLEFBQ0E7ZUFBTyxRQUFRLEFBQWYsQUFDSDtBOzt3QkFDRCxBLG1DQUFZLEEsT0FBTyxBQUNmO2VBQU8sS0FBSyxBQUFMLFVBQWUsUUFBUSxBQUF2QixBQUFQLEFBQ0g7QTs7d0JBQ0QsQSw4QkFBUyxBLEdBQUcsQUFDUjtZQUFJLFFBQVEsS0FBSyxBQUFMLFVBQWUsQUFBM0IsQUFDQTthQUFLLEFBQUwsVUFBZSxBQUFmLEtBQW9CLEFBQXBCLEFBQ0E7ZUFBTyxRQUFRLEFBQWYsQUFDSDtBOzt3QkFDRCxBLDZCQUFTLEEsT0FBTyxBQUNaO2VBQU8sS0FBSyxBQUFMLE9BQVksUUFBUSxBQUFwQixBQUFQLEFBQ0g7QTs7d0JBQ0QsQSx1QkFBTSxBLFFBQU8sQUFDVDtZQUFJLFFBQVEsS0FBSyxBQUFMLE9BQVksQUFBeEIsQUFDQTthQUFLLEFBQUwsT0FBWSxBQUFaLEtBQWlCLEFBQWpCLEFBQ0E7ZUFBTyxRQUFRLEFBQWYsQUFDSDtBIiwiZmlsZSI6ImxpYi9lbnZpcm9ubWVudC9jb25zdGFudHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOVUxMX1JFRkVSRU5DRSwgVU5ERUZJTkVEX1JFRkVSRU5DRSB9IGZyb20gJy4uL3JlZmVyZW5jZXMnO1xuZXhwb3J0IGNsYXNzIENvbnN0YW50cyB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIC8vIGAwYCBtZWFucyBOVUxMXG4gICAgICAgIHRoaXMucmVmZXJlbmNlcyA9IFtdO1xuICAgICAgICB0aGlzLnN0cmluZ3MgPSBbXTtcbiAgICAgICAgdGhpcy5leHByZXNzaW9ucyA9IFtdO1xuICAgICAgICB0aGlzLmFycmF5cyA9IFtdO1xuICAgICAgICB0aGlzLmJsb2NrcyA9IFtdO1xuICAgICAgICB0aGlzLmZ1bmN0aW9ucyA9IFtdO1xuICAgICAgICB0aGlzLm90aGVycyA9IFtdO1xuICAgICAgICB0aGlzLk5VTExfUkVGRVJFTkNFID0gdGhpcy5yZWZlcmVuY2UoTlVMTF9SRUZFUkVOQ0UpO1xuICAgICAgICB0aGlzLlVOREVGSU5FRF9SRUZFUkVOQ0UgPSB0aGlzLnJlZmVyZW5jZShVTkRFRklORURfUkVGRVJFTkNFKTtcbiAgICB9XG4gICAgZ2V0UmVmZXJlbmNlKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZXNbdmFsdWUgLSAxXTtcbiAgICB9XG4gICAgcmVmZXJlbmNlKHZhbHVlKSB7XG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMucmVmZXJlbmNlcy5sZW5ndGg7XG4gICAgICAgIHRoaXMucmVmZXJlbmNlcy5wdXNoKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIGluZGV4ICsgMTtcbiAgICB9XG4gICAgZ2V0U3RyaW5nKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0cmluZ3NbdmFsdWUgLSAxXTtcbiAgICB9XG4gICAgc3RyaW5nKHZhbHVlKSB7XG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMuc3RyaW5ncy5sZW5ndGg7XG4gICAgICAgIHRoaXMuc3RyaW5ncy5wdXNoKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIGluZGV4ICsgMTtcbiAgICB9XG4gICAgZ2V0RXhwcmVzc2lvbih2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5leHByZXNzaW9uc1t2YWx1ZSAtIDFdO1xuICAgIH1cbiAgICBnZXRBcnJheSh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcnJheXNbdmFsdWUgLSAxXTtcbiAgICB9XG4gICAgZ2V0TmFtZXModmFsdWUpIHtcbiAgICAgICAgbGV0IF9uYW1lcyA9IFtdO1xuICAgICAgICBsZXQgbmFtZXMgPSB0aGlzLmdldEFycmF5KHZhbHVlKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IG4gPSBuYW1lc1tpXTtcbiAgICAgICAgICAgIF9uYW1lc1tpXSA9IHRoaXMuZ2V0U3RyaW5nKG4pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfbmFtZXM7XG4gICAgfVxuICAgIGFycmF5KHZhbHVlcykge1xuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLmFycmF5cy5sZW5ndGg7XG4gICAgICAgIHRoaXMuYXJyYXlzLnB1c2godmFsdWVzKTtcbiAgICAgICAgcmV0dXJuIGluZGV4ICsgMTtcbiAgICB9XG4gICAgZ2V0QmxvY2sodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmxvY2tzW3ZhbHVlIC0gMV07XG4gICAgfVxuICAgIGJsb2NrKGJsb2NrKSB7XG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMuYmxvY2tzLmxlbmd0aDtcbiAgICAgICAgdGhpcy5ibG9ja3MucHVzaChibG9jayk7XG4gICAgICAgIHJldHVybiBpbmRleCArIDE7XG4gICAgfVxuICAgIGdldEZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZ1bmN0aW9uc1t2YWx1ZSAtIDFdO1xuICAgIH1cbiAgICBmdW5jdGlvbihmKSB7XG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMuZnVuY3Rpb25zLmxlbmd0aDtcbiAgICAgICAgdGhpcy5mdW5jdGlvbnMucHVzaChmKTtcbiAgICAgICAgcmV0dXJuIGluZGV4ICsgMTtcbiAgICB9XG4gICAgZ2V0T3RoZXIodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3RoZXJzW3ZhbHVlIC0gMV07XG4gICAgfVxuICAgIG90aGVyKG90aGVyKSB7XG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMub3RoZXJzLmxlbmd0aDtcbiAgICAgICAgdGhpcy5vdGhlcnMucHVzaChvdGhlcik7XG4gICAgICAgIHJldHVybiBpbmRleCArIDE7XG4gICAgfVxufSJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9lbnZpcm9ubWVudC9jb25zdGFudHMuanMiXSwibmFtZXMiOlsiTlVMTF9SRUZFUkVOQ0UiLCJVTkRFRklORURfUkVGRVJFTkNFIiwiQ29uc3RhbnRzIiwicmVmZXJlbmNlcyIsInN0cmluZ3MiLCJleHByZXNzaW9ucyIsImFycmF5cyIsImJsb2NrcyIsImZ1bmN0aW9ucyIsIm90aGVycyIsInJlZmVyZW5jZSIsImdldFJlZmVyZW5jZSIsInZhbHVlIiwiaW5kZXgiLCJsZW5ndGgiLCJwdXNoIiwiZ2V0U3RyaW5nIiwic3RyaW5nIiwiZ2V0RXhwcmVzc2lvbiIsImdldEFycmF5IiwiZ2V0TmFtZXMiLCJtYXAiLCJuIiwiYXJyYXkiLCJ2YWx1ZXMiLCJnZXRCbG9jayIsImJsb2NrIiwiZ2V0RnVuY3Rpb24iLCJmdW5jdGlvbiIsImYiLCJnZXRPdGhlciIsIm90aGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsQUFBUyxBQUFnQixBQUEyQjs7Ozs7Ozs7SSxBQUN2Qyx3QkFDVDt5QkFBYzs4QkFDVjs7QUFDQTthQUFBLEFBQUssYUFBTCxBQUFrQixBQUNsQjthQUFBLEFBQUssVUFBTCxBQUFlLEFBQ2Y7YUFBQSxBQUFLLGNBQUwsQUFBbUIsQUFDbkI7YUFBQSxBQUFLLFNBQUwsQUFBYyxBQUNkO2FBQUEsQUFBSyxTQUFMLEFBQWMsQUFDZDthQUFBLEFBQUssWUFBTCxBQUFpQixBQUNqQjthQUFBLEFBQUssU0FBTCxBQUFjLEFBQ2Q7YUFBQSxBQUFLLGlCQUFpQixLQUF0QixBQUFzQixBQUFLLEFBQVUsQUFDckM7YUFBQSxBQUFLLHNCQUFzQixLQUEzQixBQUEyQixBQUFLLEFBQVUsQUFDN0M7Ozt3QkFDRCxBLHFDQUFhLEEsT0FBTyxBQUNoQjtlQUFPLEtBQUEsQUFBSyxXQUFXLFFBQXZCLEFBQU8sQUFBd0IsQUFDbEM7QTs7d0IsQUFDRCwrQkFBVSxBLE9BQU8sQUFDYjtZQUFJLFFBQVEsS0FBQSxBQUFLLFdBQWpCLEFBQTRCLEFBQzVCO2FBQUEsQUFBSyxXQUFMLEFBQWdCLEtBQWhCLEFBQXFCLEFBQ3JCO2VBQU8sUUFBUCxBQUFlLEFBQ2xCO0E7O3dCLEFBQ0QsK0JBQVUsQSxPQUFPLEFBQ2I7ZUFBTyxLQUFBLEFBQUssUUFBUSxRQUFwQixBQUFPLEFBQXFCLEFBQy9CO0E7O3dCQUNELEEseUIsQUFBTyxPQUFPLEFBQ1Y7WUFBSSxRQUFRLEtBQUEsQUFBSyxRQUFqQixBQUF5QixBQUN6QjthQUFBLEFBQUssUUFBTCxBQUFhLEtBQWIsQUFBa0IsQUFDbEI7ZUFBTyxRQUFQLEFBQWUsQUFDbEI7QTs7d0IsQUFDRCx1Q0FBYyxBLE9BQU8sQUFDakI7ZUFBTyxLQUFBLEFBQUssWUFBWSxRQUF4QixBQUFPLEFBQXlCLEFBQ25DO0E7O3dCQUNELEEsNkJBQVMsQSxPQUFPLEFBQ1o7ZUFBTyxLQUFBLEFBQUssT0FBTyxRQUFuQixBQUFPLEFBQW9CLEFBQzlCO0E7O3dCLEFBQ0QsNkIsQUFBUyxPQUFPO29CQUNaOztvQkFBTyxBQUFLLFNBQUwsQUFBYyxPQUFkLEFBQXFCLElBQUksYUFBQTttQkFBSyxNQUFBLEFBQUssVUFBVixBQUFLLEFBQWU7QUFBcEQsQUFBTyxBQUNWLFNBRFU7QTs7d0JBRVgsQSx1QkFBTSxBLFFBQVEsQUFDVjtZQUFJLFFBQVEsS0FBQSxBQUFLLE9BQWpCLEFBQXdCLEFBQ3hCO2FBQUEsQUFBSyxPQUFMLEFBQVksS0FBWixBQUFpQixBQUNqQjtlQUFPLFFBQVAsQUFBZSxBQUNsQjtBOzt3QkFDRCxBLDZCQUFTLEEsT0FBTyxBQUNaO2VBQU8sS0FBQSxBQUFLLE9BQU8sUUFBbkIsQUFBTyxBQUFvQixBQUM5QjtBOzt3QkFDRCxBLHVCQUFNLEEsUUFBTyxBQUNUO1lBQUksUUFBUSxLQUFBLEFBQUssT0FBakIsQUFBd0IsQUFDeEI7YUFBQSxBQUFLLE9BQUwsQUFBWSxLQUFaLEFBQWlCLEFBQ2pCO2VBQU8sUUFBUCxBQUFlLEFBQ2xCO0E7O3dCLEFBQ0QsbUMsQUFBWSxPQUFPLEFBQ2Y7ZUFBTyxLQUFBLEFBQUssVUFBVSxRQUF0QixBQUFPLEFBQXVCLEFBQ2pDO0E7O3dCQUNELEEsOEIsQUFBUyxHQUFHLEFBQ1I7WUFBSSxRQUFRLEtBQUEsQUFBSyxVQUFqQixBQUEyQixBQUMzQjthQUFBLEFBQUssVUFBTCxBQUFlLEtBQWYsQUFBb0IsQUFDcEI7ZUFBTyxRQUFQLEFBQWUsQUFDbEI7QTs7d0JBQ0QsQSw2QkFBUyxBLE9BQU8sQUFDWjtlQUFPLEtBQUEsQUFBSyxPQUFPLFFBQW5CLEFBQU8sQUFBb0IsQUFDOUI7QTs7d0JBQ0QsQSx1QkFBTSxBLFFBQU8sQUFDVDtZQUFJLFFBQVEsS0FBQSxBQUFLLE9BQWpCLEFBQXdCLEFBQ3hCO2FBQUEsQUFBSyxPQUFMLEFBQVksS0FBWixBQUFpQixBQUNqQjtlQUFPLFFBQVAsQUFBZSxBQUNsQjtBIiwiZmlsZSI6ImxpYi9lbnZpcm9ubWVudC9jb25zdGFudHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOVUxMX1JFRkVSRU5DRSwgVU5ERUZJTkVEX1JFRkVSRU5DRSB9IGZyb20gJy4uL3JlZmVyZW5jZXMnO1xuZXhwb3J0IGNsYXNzIENvbnN0YW50cyB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIC8vIGAwYCBtZWFucyBOVUxMXG4gICAgICAgIHRoaXMucmVmZXJlbmNlcyA9IFtdO1xuICAgICAgICB0aGlzLnN0cmluZ3MgPSBbXTtcbiAgICAgICAgdGhpcy5leHByZXNzaW9ucyA9IFtdO1xuICAgICAgICB0aGlzLmFycmF5cyA9IFtdO1xuICAgICAgICB0aGlzLmJsb2NrcyA9IFtdO1xuICAgICAgICB0aGlzLmZ1bmN0aW9ucyA9IFtdO1xuICAgICAgICB0aGlzLm90aGVycyA9IFtdO1xuICAgICAgICB0aGlzLk5VTExfUkVGRVJFTkNFID0gdGhpcy5yZWZlcmVuY2UoTlVMTF9SRUZFUkVOQ0UpO1xuICAgICAgICB0aGlzLlVOREVGSU5FRF9SRUZFUkVOQ0UgPSB0aGlzLnJlZmVyZW5jZShVTkRFRklORURfUkVGRVJFTkNFKTtcbiAgICB9XG4gICAgZ2V0UmVmZXJlbmNlKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZXNbdmFsdWUgLSAxXTtcbiAgICB9XG4gICAgcmVmZXJlbmNlKHZhbHVlKSB7XG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMucmVmZXJlbmNlcy5sZW5ndGg7XG4gICAgICAgIHRoaXMucmVmZXJlbmNlcy5wdXNoKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIGluZGV4ICsgMTtcbiAgICB9XG4gICAgZ2V0U3RyaW5nKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0cmluZ3NbdmFsdWUgLSAxXTtcbiAgICB9XG4gICAgc3RyaW5nKHZhbHVlKSB7XG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMuc3RyaW5ncy5sZW5ndGg7XG4gICAgICAgIHRoaXMuc3RyaW5ncy5wdXNoKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIGluZGV4ICsgMTtcbiAgICB9XG4gICAgZ2V0RXhwcmVzc2lvbih2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5leHByZXNzaW9uc1t2YWx1ZSAtIDFdO1xuICAgIH1cbiAgICBnZXRBcnJheSh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcnJheXNbdmFsdWUgLSAxXTtcbiAgICB9XG4gICAgZ2V0TmFtZXModmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QXJyYXkodmFsdWUpLm1hcChuID0+IHRoaXMuZ2V0U3RyaW5nKG4pKTtcbiAgICB9XG4gICAgYXJyYXkodmFsdWVzKSB7XG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMuYXJyYXlzLmxlbmd0aDtcbiAgICAgICAgdGhpcy5hcnJheXMucHVzaCh2YWx1ZXMpO1xuICAgICAgICByZXR1cm4gaW5kZXggKyAxO1xuICAgIH1cbiAgICBnZXRCbG9jayh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5ibG9ja3NbdmFsdWUgLSAxXTtcbiAgICB9XG4gICAgYmxvY2soYmxvY2spIHtcbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5ibG9ja3MubGVuZ3RoO1xuICAgICAgICB0aGlzLmJsb2Nrcy5wdXNoKGJsb2NrKTtcbiAgICAgICAgcmV0dXJuIGluZGV4ICsgMTtcbiAgICB9XG4gICAgZ2V0RnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZnVuY3Rpb25zW3ZhbHVlIC0gMV07XG4gICAgfVxuICAgIGZ1bmN0aW9uKGYpIHtcbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5mdW5jdGlvbnMubGVuZ3RoO1xuICAgICAgICB0aGlzLmZ1bmN0aW9ucy5wdXNoKGYpO1xuICAgICAgICByZXR1cm4gaW5kZXggKyAxO1xuICAgIH1cbiAgICBnZXRPdGhlcih2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vdGhlcnNbdmFsdWUgLSAxXTtcbiAgICB9XG4gICAgb3RoZXIob3RoZXIpIHtcbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5vdGhlcnMubGVuZ3RoO1xuICAgICAgICB0aGlzLm90aGVycy5wdXNoKG90aGVyKTtcbiAgICAgICAgcmV0dXJuIGluZGV4ICsgMTtcbiAgICB9XG59Il19

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

if (!false && false) {
/* tslint:disable:no-console */
var program = env.program,

@@ -91,3 +90,2 @@ constants = env.constants;

console.groupEnd();
/* tslint:enable:no-console */
}

@@ -112,8 +110,6 @@ }

var string = JSON.stringify(param);
if (string === undefined) {
return 'undefined';
}
if (string === undefined) return 'undefined';
var debug = JSON.parse(string);
if (typeof debug === 'object' && debug !== null && debug.GlimmerDebug !== undefined) {
return debug.GlimmerDebug;
if (typeof debug === 'object' && debug && debug['GlimmerDebug']) {
return debug['GlimmerDebug'];
}

@@ -299,3 +295,2 @@ return string;

if (!false && false) {
/* tslint:disable */
var _debug2 = debug(vm.constants, opcode.type, opcode.op1, opcode.op2, opcode.op3),

@@ -307,7 +302,5 @@ name = _debug2[0],

// console.log(...debug(vm.constants, type, opcode.op1, opcode.op2, opcode.op3));
/* tslint:enable */
}
func(vm, opcode);
if (!false && false) {
/* tslint:disable */
console.log('%c -> pc: %d, ra: %d, fp: %d, sp: %d, s0: %O, s1: %O, t0: %O, t1: %O', 'color: orange', vm['pc'], vm['ra'], vm['fp'], vm['sp'], vm['s0'], vm['s1'], vm['t0'], vm['t1']);

@@ -319,3 +312,2 @@ console.log('%c -> eval stack', 'color: red', vm.stack.toArray());

console.log('%c -> elements', 'color: blue', vm.elements()['elementStack'].toArray());
/* tslint:enable */
}

@@ -394,2 +386,2 @@ };

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9vcGNvZGVzLmpzIl0sIm5hbWVzIjpbImluaXRpYWxpemVHdWlkIiwiZmlsbE51bGxzIiwidW5yZWFjaGFibGUiLCJSZWdpc3RlciIsImRlYnVnU2xpY2UiLCJlbnYiLCJzdGFydCIsImVuZCIsInByb2dyYW0iLCJjb25zdGFudHMiLCJjb25zb2xlIiwiZ3JvdXAiLCJpIiwib3Bjb2RlIiwidHlwZSIsIm9wMSIsIm9wMiIsIm9wMyIsImRlYnVnIiwibmFtZSIsInBhcmFtcyIsImxvZyIsImxvZ09wY29kZSIsImdyb3VwRW5kIiwib3V0IiwiYXJncyIsIk9iamVjdCIsImtleXMiLCJtYXAiLCJwIiwianNvbiIsImpvaW4iLCJwYXJhbSIsInN0cmluZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJ1bmRlZmluZWQiLCJwYXJzZSIsIkdsaW1tZXJEZWJ1ZyIsImMiLCJvcCIsImhlbHBlciIsImdldEZ1bmN0aW9uIiwiZnVuY3Rpb24iLCJzeW1ib2wiLCJrZXkiLCJnZXRTdHJpbmciLCJibG9jayIsImdldEJsb2NrIiwic2l6ZSIsInZhbHVlIiwiZ2V0T3RoZXIiLCJwcmltaXRpdmUiLCJyZWdpc3RlciIsIm9mZnNldCIsImNvdW50Iiwic3ltYm9scyIsImJpbmRDYWxsZXJTY29wZSIsInRleHQiLCJjb21tZW50IiwidGFnIiwibmFtZXNwYWNlIiwidHJ1c3RpbmciLCJucyIsImludm9rZXIiLCJ0byIsImRlZmluaXRpb24iLCJwb3NpdGlvbmFsIiwic3ludGhldGljIiwic3RhdGUiLCJmbGFncyIsImV2YWxJbmZvIiwiZ2V0QXJyYXkiLCJBcHBlbmRPcGNvZGVzIiwiZXZhbHVhdGVPcGNvZGUiLCJzbGljZSIsImFkZCIsImV2YWx1YXRlIiwidm0iLCJmdW5jIiwic3RhY2siLCJ0b0FycmF5Iiwic2NvcGUiLCJzIiwiZWxlbWVudHMiLCJBUFBFTkRfT1BDT0RFUyIsIkFic3RyYWN0T3Bjb2RlIiwidG9KU09OIiwiZ3VpZCIsIl9ndWlkIiwiVXBkYXRpbmdPcGNvZGUiLCJhcmd1bWVudHMiLCJuZXh0IiwicHJldiIsImluc3BlY3QiLCJvcGNvZGVzIiwiYnVmZmVyIiwiZm9yRWFjaCIsIl9pbnNwZWN0IiwibGV2ZWwiLCJpbmRleCIsImluZGVudGF0aW9uIiwicHVzaCIsImRldGFpbHMiLCJsZW5ndGgiLCJjaGlsZHJlbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O1FBeUJPLEFBQVM7UUE0UFQsQUFBUzs7QUFyUmhCLEFBQVMsQUFBZ0IsQUFBVyxBQUFtQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV2RCxBQU1BOzs7Ozs7QUFBTyxJQUFBLEFBQUk7QUFDWCxDQUFDLFVBQUEsQUFBVSxVQUFVLEFBQ2pCO0FBQ0E7YUFBUyxTQUFBLEFBQVMsUUFBbEIsQUFBMEIsS0FBMUIsQUFBK0IsQUFDL0I7QUFDQTthQUFTLFNBQUEsQUFBUyxRQUFsQixBQUEwQixLQUExQixBQUErQixBQUMvQjtBQUNBO2FBQVMsU0FBQSxBQUFTLFFBQWxCLEFBQTBCLEtBQTFCLEFBQStCLEFBQy9CO0FBQ0E7YUFBUyxTQUFBLEFBQVMsUUFBbEIsQUFBMEIsS0FBMUIsQUFBK0IsQUFDL0I7QUFDQTthQUFTLFNBQUEsQUFBUyxRQUFsQixBQUEwQixLQUExQixBQUErQixBQUMvQjthQUFTLFNBQUEsQUFBUyxRQUFsQixBQUEwQixLQUExQixBQUErQixBQUMvQjtBQUNBO2FBQVMsU0FBQSxBQUFTLFFBQWxCLEFBQTBCLEtBQTFCLEFBQStCLEFBQy9CO2FBQVMsU0FBQSxBQUFTLFFBQWxCLEFBQTBCLEtBQTFCLEFBQStCLEFBQ2xDO0FBZkQsR0FlRyxnQ0FBYSxXQWZoQixBQWVHLEFBQXdCLEFBQzNCO0FBQU8sb0JBQUEsQUFBb0IsS0FBcEIsQUFBeUIsT0FBekIsQUFBZ0MsS0FBSyxBQUN4QztRQUFJLENBQUEsQUFBQyxTQUFMLEFBQWMsT0FBTyxBQUNqQjtBQURpQjtZQUFBLEFBRVgsVUFGVyxBQUVZLElBRlosQUFFWDtZQUZXLEFBRUYsWUFGRSxBQUVZLElBRlosQUFFRixBQUNmO0FBQ0E7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QUFDSjtBQUNEO2VBQUEsQUFBTyxLQUFQLEFBQVksQUFDZjtBQUNEO1dBQUEsQUFBTyxLQUFQLEFBQVksQUFDWjtRQUFJLE9BQUEsQUFBTyxZQUFZLE9BQUEsQUFBTyxTQUE5QixBQUF1QyxRQUFRLEFBQzNDO2FBQUssSUFBSSxLQUFULEFBQWEsR0FBRyxLQUFJLE9BQUEsQUFBTyxTQUEzQixBQUFvQyxRQUFwQyxBQUE0QyxNQUFLLEFBQzdDO3FCQUFTLE9BQUEsQUFBTyxTQUFoQixBQUFTLEFBQWdCLEtBQXpCLEFBQTZCLFFBQVEsUUFBckMsQUFBNkMsR0FBN0MsQUFBZ0QsQUFDbkQ7QUFDSjtBQUNKIiwiZmlsZSI6ImxpYi9vcGNvZGVzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5pdGlhbGl6ZUd1aWQsIGZpbGxOdWxscywgdW5yZWFjaGFibGUgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuLyoqXG4gKiBSZWdpc3RlcnNcbiAqXG4gKiBGb3IgdGhlIG1vc3QgcGFydCwgdGhlc2UgZm9sbG93cyBNSVBTIG5hbWluZyBjb252ZW50aW9ucywgaG93ZXZlciB0aGVcbiAqIHJlZ2lzdGVyIG51bWJlcnMgYXJlIGRpZmZlcmVudC5cbiAqL1xuZXhwb3J0IHZhciBSZWdpc3RlcjtcbihmdW5jdGlvbiAoUmVnaXN0ZXIpIHtcbiAgICAvLyAkMCBvciAkcGMgKHByb2dyYW0gY291bnRlcik6IHBvaW50ZXIgaW50byBgcHJvZ3JhbWAgZm9yIHRoZSBuZXh0IGluc3R1cmN0aW9uOyAtMSBtZWFucyBleGl0XG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJwY1wiXSA9IDBdID0gXCJwY1wiO1xuICAgIC8vICQxIG9yICRyYSAocmV0dXJuIGFkZHJlc3MpOiBwb2ludGVyIGludG8gYHByb2dyYW1gIGZvciB0aGUgcmV0dXJuXG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJyYVwiXSA9IDFdID0gXCJyYVwiO1xuICAgIC8vICQyIG9yICRmcCAoZnJhbWUgcG9pbnRlcik6IHBvaW50ZXIgaW50byB0aGUgYGV2YWxTdGFja2AgZm9yIHRoZSBiYXNlIG9mIHRoZSBzdGFja1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wiZnBcIl0gPSAyXSA9IFwiZnBcIjtcbiAgICAvLyAkMyBvciAkc3AgKHN0YWNrIHBvaW50ZXIpOiBwb2ludGVyIGludG8gdGhlIGBldmFsU3RhY2tgIGZvciB0aGUgdG9wIG9mIHRoZSBzdGFja1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wic3BcIl0gPSAzXSA9IFwic3BcIjtcbiAgICAvLyAkNC0kNSBvciAkczAtJHMxIChzYXZlZCk6IGNhbGxlZSBzYXZlZCBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzXG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJzMFwiXSA9IDRdID0gXCJzMFwiO1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wiczFcIl0gPSA1XSA9IFwiczFcIjtcbiAgICAvLyAkNi0kNyBvciAkdDAtJHQxICh0ZW1wb3Jhcmllcyk6IGNhbGxlciBzYXZlZCBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzXG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJ0MFwiXSA9IDZdID0gXCJ0MFwiO1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1widDFcIl0gPSA3XSA9IFwidDFcIjtcbn0pKFJlZ2lzdGVyIHx8IChSZWdpc3RlciA9IHt9KSk7XG5leHBvcnQgZnVuY3Rpb24gZGVidWdTbGljZShlbnYsIHN0YXJ0LCBlbmQpIHtcbiAgICBpZiAoIWZhbHNlICYmIGZhbHNlKSB7XG4gICAgICAgIC8qIHRzbGludDpkaXNhYmxlOm5vLWNvbnNvbGUgKi9cbiAgICAgICAgbGV0IHsgcHJvZ3JhbSwgY29uc3RhbnRzIH0gPSBlbnY7XG4gICAgICAgIC8vIGNvbnNvbGUgaXMgbm90IGF2YWlsYWJsZSBpbiBJRTlcbiAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIElFMTAgZG9lcyBub3QgaGF2ZSBgY29uc29sZS5ncm91cGBcbiAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlLmdyb3VwICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5ncm91cChgJWMke3N0YXJ0fToke2VuZH1gLCAnY29sb3I6ICM5OTknKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDw9IGVuZDsgaSArPSA0KSB7XG4gICAgICAgICAgICBsZXQgeyB0eXBlLCBvcDEsIG9wMiwgb3AzIH0gPSBwcm9ncmFtLm9wY29kZShpKTtcbiAgICAgICAgICAgIGxldCBbbmFtZSwgcGFyYW1zXSA9IGRlYnVnKGNvbnN0YW50cywgdHlwZSwgb3AxLCBvcDIsIG9wMyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgJHtpfS4gJHtsb2dPcGNvZGUobmFtZSwgcGFyYW1zKX1gKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmdyb3VwRW5kKCk7XG4gICAgICAgIC8qIHRzbGludDplbmFibGU6bm8tY29uc29sZSAqL1xuICAgIH1cbn1cbmZ1bmN0aW9uIGxvZ09wY29kZSh0eXBlLCBwYXJhbXMpIHtcbiAgICBpZiAoIWZhbHNlICYmIGZhbHNlKSB7XG4gICAgICAgIGxldCBvdXQgPSB0eXBlO1xuICAgICAgICBpZiAocGFyYW1zKSB7XG4gICAgICAgICAgICBsZXQgYXJncyA9IE9iamVjdC5rZXlzKHBhcmFtcykubWFwKHAgPT4gYCAke3B9PSR7anNvbihwYXJhbXNbcF0pfWApLmpvaW4oJycpO1xuICAgICAgICAgICAgb3V0ICs9IGFyZ3M7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAoJHtvdXR9KWA7XG4gICAgfVxufVxuZnVuY3Rpb24ganNvbihwYXJhbSkge1xuICAgIGlmICh0eXBlb2YgcGFyYW0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuICc8ZnVuY3Rpb24+JztcbiAgICB9XG4gICAgbGV0IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KHBhcmFtKTtcbiAgICBpZiAoc3RyaW5nID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuICd1bmRlZmluZWQnO1xuICAgIH1cbiAgICBsZXQgZGVidWcgPSBKU09OLnBhcnNlKHN0cmluZyk7XG4gICAgaWYgKHR5cGVvZiBkZWJ1ZyA9PT0gJ29iamVjdCcgJiYgZGVidWcgIT09IG51bGwgJiYgZGVidWcuR2xpbW1lckRlYnVnICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGRlYnVnLkdsaW1tZXJEZWJ1ZztcbiAgICB9XG4gICAgcmV0dXJuIHN0cmluZztcbn1cbmZ1bmN0aW9uIGRlYnVnKGMsIG9wLCBvcDEsIG9wMiwgb3AzKSB7XG4gICAgaWYgKCFmYWxzZSAmJiBmYWxzZSkge1xuICAgICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICAgICAgICBjYXNlIDAgLyogQnVnICovOlxuICAgICAgICAgICAgICAgIHRocm93IHVucmVhY2hhYmxlKCk7XG4gICAgICAgICAgICBjYXNlIDEgLyogSGVscGVyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0hlbHBlcicsIHsgaGVscGVyOiBjLmdldEZ1bmN0aW9uKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDIgLyogRnVuY3Rpb24gKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRnVuY3Rpb24nLCB7IGZ1bmN0aW9uOiBjLmdldEZ1bmN0aW9uKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDQgLyogU2V0VmFyaWFibGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnU2V0VmFyaWFibGUnLCB7IHN5bWJvbDogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA1IC8qIEdldFZhcmlhYmxlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0dldFZhcmlhYmxlJywgeyBzeW1ib2w6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNiAvKiBHZXRQcm9wZXJ0eSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydHZXRQcm9wZXJ0eScsIHsga2V5OiBjLmdldFN0cmluZyhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA3IC8qIFB1c2hCbG9jayAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoQmxvY2snLCB7IGJsb2NrOiBjLmdldEJsb2NrKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDggLyogR2V0QmxvY2sgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnR2V0QmxvY2snLCB7IHN5bWJvbDogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA5IC8qIEhhc0Jsb2NrICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0hhc0Jsb2NrJywgeyBibG9jazogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSAxMCAvKiBIYXNCbG9ja1BhcmFtcyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydIYXNCbG9ja1BhcmFtcycsIHsgYmxvY2s6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTEgLyogQ29uY2F0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0NvbmNhdCcsIHsgc2l6ZTogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSAxMiAvKiBJbW1lZGlhdGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSW1tZWRpYXRlJywgeyB2YWx1ZTogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSAxMyAvKiBDb25zdGFudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb25zdGFudCcsIHsgdmFsdWU6IGMuZ2V0T3RoZXIob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTQgLyogUHJpbWl0aXZlUmVmZXJlbmNlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1ByaW1pdGl2ZVJlZmVyZW5jZScsIHsgcHJpbWl0aXZlOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDE1IC8qIER1cCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEdXAnLCB7IHJlZ2lzdGVyOiBSZWdpc3RlcltvcDFdLCBvZmZzZXQ6IG9wMiB9XTtcbiAgICAgICAgICAgIGNhc2UgMTYgLyogUG9wICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1BvcCcsIHsgY291bnQ6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTcgLyogTG9hZCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydMb2FkJywgeyByZWdpc3RlcjogUmVnaXN0ZXJbb3AxXSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTggLyogRmV0Y2ggKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRmV0Y2gnLCB7IHJlZ2lzdGVyOiBSZWdpc3RlcltvcDFdIH1dO1xuICAgICAgICAgICAgLy8vIFBSRUxVREUgJiBFWElUXG4gICAgICAgICAgICBjYXNlIDE5IC8qIFJvb3RTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydSb290U2NvcGUnLCB7IHN5bWJvbHM6IG9wMSwgYmluZENhbGxlclNjb3BlOiAhIW9wMiB9XTtcbiAgICAgICAgICAgIGNhc2UgMjAgLyogQ2hpbGRTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDaGlsZFNjb3BlJywge31dO1xuICAgICAgICAgICAgY2FzZSAyMSAvKiBQb3BTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQb3BTY29wZScsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMjIgLyogUmV0dXJuICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1JldHVybicsIHt9XTtcbiAgICAgICAgICAgIC8vLyBIVE1MXG4gICAgICAgICAgICBjYXNlIDIzIC8qIFRleHQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnVGV4dCcsIHsgdGV4dDogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMjQgLyogQ29tbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb21tZW50JywgeyBjb21tZW50OiBjLmdldFN0cmluZyhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSAyNSAvKiBEeW5hbWljQ29udGVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEeW5hbWljQ29udGVudCcsIHsgdmFsdWU6IGMuZ2V0T3RoZXIob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMjYgLyogT3BlbkVsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnT3BlbkVsZW1lbnQnLCB7IHRhZzogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMjcgLyogT3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydPcGVuRWxlbWVudFdpdGhPcGVyYXRpb25zJywgeyB0YWc6IGMuZ2V0U3RyaW5nKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDI4IC8qIE9wZW5EeW5hbWljRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydPcGVuRHluYW1pY0VsZW1lbnQnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDI5IC8qIFN0YXRpY0F0dHIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnU3RhdGljQXR0cicsIHsgbmFtZTogYy5nZXRTdHJpbmcob3AxKSwgdmFsdWU6IGMuZ2V0U3RyaW5nKG9wMiksIG5hbWVzcGFjZTogb3AzID8gYy5nZXRTdHJpbmcob3AzKSA6IG51bGwgfV07XG4gICAgICAgICAgICBjYXNlIDMwIC8qIER5bmFtaWNBdHRyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0R5bmFtaWNBdHRyJywgeyBuYW1lOiBjLmdldFN0cmluZyhvcDEpLCB0cnVzdGluZzogISFvcDIgfV07XG4gICAgICAgICAgICBjYXNlIDMxIC8qIER5bmFtaWNBdHRyTlMgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRHluYW1pY0F0dHJOUycsIHsgbmFtZTogYy5nZXRTdHJpbmcob3AxKSwgbnM6IGMuZ2V0U3RyaW5nKG9wMiksIHRydXN0aW5nOiAhIW9wMiB9XTtcbiAgICAgICAgICAgIGNhc2UgMzIgLyogRmx1c2hFbGVtZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0ZsdXNoRWxlbWVudCcsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMzMgLyogQ2xvc2VFbGVtZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0Nsb3NlRWxlbWVudCcsIHt9XTtcbiAgICAgICAgICAgIC8vLyBNT0RJRklFUlxuICAgICAgICAgICAgY2FzZSAzNCAvKiBNb2RpZmllciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydNb2RpZmllcicsIHt9XTtcbiAgICAgICAgICAgIC8vLyBXT1JNSE9MRVxuICAgICAgICAgICAgY2FzZSAzNSAvKiBQdXNoUmVtb3RlRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoUmVtb3RlRWxlbWVudCcsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMzYgLyogUG9wUmVtb3RlRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQb3BSZW1vdGVFbGVtZW50Jywge31dO1xuICAgICAgICAgICAgLy8vIERZTkFNSUMgU0NPUEVcbiAgICAgICAgICAgIGNhc2UgMzcgLyogQmluZER5bmFtaWNTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydCaW5kRHluYW1pY1Njb3BlJywge31dO1xuICAgICAgICAgICAgY2FzZSAzOCAvKiBQdXNoRHluYW1pY1Njb3BlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1B1c2hEeW5hbWljU2NvcGUnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDM5IC8qIFBvcER5bmFtaWNTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQb3BEeW5hbWljU2NvcGUnLCB7fV07XG4gICAgICAgICAgICAvLy8gVk1cbiAgICAgICAgICAgIGNhc2UgNDAgLyogQ29tcGlsZUR5bmFtaWNCbG9jayAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb21waWxlRHluYW1pY0Jsb2NrJywge31dO1xuICAgICAgICAgICAgY2FzZSA0MSAvKiBJbnZva2VTdGF0aWMgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSW52b2tlU3RhdGljJywgeyBibG9jazogYy5nZXRCbG9jayhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA0MiAvKiBJbnZva2VEeW5hbWljICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0ludm9rZUR5bmFtaWMnLCB7IGludm9rZXI6IGMuZ2V0T3RoZXIob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDMgLyogSnVtcCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydKdW1wJywgeyB0bzogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA0NCAvKiBKdW1wSWYgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSnVtcElmJywgeyB0bzogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA0NSAvKiBKdW1wVW5sZXNzICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0p1bXBVbmxlc3MnLCB7IHRvOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDQ2IC8qIFB1c2hGcmFtZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoRnJhbWUnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDQ3IC8qIFBvcEZyYW1lICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1BvcEZyYW1lJywge31dO1xuICAgICAgICAgICAgY2FzZSA0OCAvKiBFbnRlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydFbnRlcicsIHsgYXJnczogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA0OSAvKiBFeGl0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0V4aXQnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDUwIC8qIFRlc3QgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnVG9Cb29sZWFuJywge31dO1xuICAgICAgICAgICAgLy8vIExJU1RTXG4gICAgICAgICAgICBjYXNlIDUxIC8qIEVudGVyTGlzdCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydFbnRlckxpc3QnLCB7IHN0YXJ0OiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDUyIC8qIEV4aXRMaXN0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0V4aXRMaXN0Jywge31dO1xuICAgICAgICAgICAgY2FzZSA1MyAvKiBQdXRJdGVyYXRvciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXRJdGVyYXRvcicsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNTQgLyogSXRlcmF0ZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydJdGVyYXRlJywgeyBlbmQ6IG9wMSB9XTtcbiAgICAgICAgICAgIC8vLyBDT01QT05FTlRTXG4gICAgICAgICAgICBjYXNlIDU1IC8qIFB1c2hDb21wb25lbnRNYW5hZ2VyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1B1c2hDb21wb25lbnRNYW5hZ2VyJywgeyBkZWZpbml0aW9uOiBjLmdldE90aGVyKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDU2IC8qIFB1c2hEeW5hbWljQ29tcG9uZW50TWFuYWdlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoRHluYW1pY0NvbXBvbmVudE1hbmFnZXInLCB7fV07XG4gICAgICAgICAgICBjYXNlIDU3IC8qIEluaXRpYWxpemVDb21wb25lbnRTdGF0ZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydJbml0aWFsaXplQ29tcG9uZW50U3RhdGUnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDU4IC8qIFB1c2hBcmdzICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1B1c2hBcmdzJywgeyBwb3NpdGlvbmFsOiBvcDEsIHN5bnRoZXRpYzogISFvcDIgfV07XG4gICAgICAgICAgICBjYXNlIDU5IC8qIFByZXBhcmVBcmdzICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1ByZXBhcmVBcmdzJywgeyBzdGF0ZTogUmVnaXN0ZXJbb3AxXSB9XTtcbiAgICAgICAgICAgIGNhc2UgNjAgLyogQ3JlYXRlQ29tcG9uZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0NyZWF0ZUNvbXBvbmVudCcsIHsgZmxhZ3M6IG9wMSwgc3RhdGU6IFJlZ2lzdGVyW29wMl0gfV07XG4gICAgICAgICAgICBjYXNlIDYxIC8qIFJlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydSZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3InLCB7fV07XG4gICAgICAgICAgICBjYXNlIDYyIC8qIFB1c2hDb21wb25lbnRPcGVyYXRpb25zICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1B1c2hDb21wb25lbnRPcGVyYXRpb25zJywge31dO1xuICAgICAgICAgICAgY2FzZSA2MyAvKiBHZXRDb21wb25lbnRTZWxmICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0dldENvbXBvbmVudFNlbGYnLCB7IHN0YXRlOiBSZWdpc3RlcltvcDFdIH1dO1xuICAgICAgICAgICAgY2FzZSA2NCAvKiBHZXRDb21wb25lbnRMYXlvdXQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnR2V0Q29tcG9uZW50TGF5b3V0JywgeyBzdGF0ZTogUmVnaXN0ZXJbb3AxXSB9XTtcbiAgICAgICAgICAgIGNhc2UgNjUgLyogQmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbiAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydCZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uJywge31dO1xuICAgICAgICAgICAgY2FzZSA2NiAvKiBDb21taXRDb21wb25lbnRUcmFuc2FjdGlvbiAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb21taXRDb21wb25lbnRUcmFuc2FjdGlvbicsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNjcgLyogRGlkQ3JlYXRlRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEaWRDcmVhdGVFbGVtZW50JywgeyBzdGF0ZTogUmVnaXN0ZXJbb3AxXSB9XTtcbiAgICAgICAgICAgIGNhc2UgNjggLyogRGlkUmVuZGVyTGF5b3V0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0RpZFJlbmRlckxheW91dCcsIHt9XTtcbiAgICAgICAgICAgIC8vLyBQQVJUSUFMU1xuICAgICAgICAgICAgY2FzZSA2OSAvKiBHZXRQYXJ0aWFsVGVtcGxhdGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ29tcGlsZVBhcnRpYWwnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDcwIC8qIFJlc29sdmVNYXliZUxvY2FsICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1Jlc29sdmVNYXliZUxvY2FsJywgeyBuYW1lOiBjLmdldFN0cmluZyhvcDEpIH1dO1xuICAgICAgICAgICAgLy8vIERFQlVHR0VSXG4gICAgICAgICAgICBjYXNlIDcxIC8qIERlYnVnZ2VyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0RlYnVnZ2VyJywgeyBzeW1ib2xzOiBjLmdldE90aGVyKG9wMSksIGV2YWxJbmZvOiBjLmdldEFycmF5KG9wMikgfV07XG4gICAgICAgICAgICAvLy8gU1RBVEVNRU5UU1xuICAgICAgICAgICAgY2FzZSA3MiAvKiBTaXplICovOlxuICAgICAgICAgICAgICAgIHRocm93IHVucmVhY2hhYmxlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgdW5yZWFjaGFibGUoKTtcbiAgICB9XG4gICAgcmV0dXJuIFsnJywge31dO1xufVxuZXhwb3J0IGNsYXNzIEFwcGVuZE9wY29kZXMge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmV2YWx1YXRlT3Bjb2RlID0gZmlsbE51bGxzKDcyIC8qIFNpemUgKi8pLnNsaWNlKCk7XG4gICAgfVxuICAgIGFkZChuYW1lLCBldmFsdWF0ZSkge1xuICAgICAgICB0aGlzLmV2YWx1YXRlT3Bjb2RlW25hbWVdID0gZXZhbHVhdGU7XG4gICAgfVxuICAgIGV2YWx1YXRlKHZtLCBvcGNvZGUsIHR5cGUpIHtcbiAgICAgICAgbGV0IGZ1bmMgPSB0aGlzLmV2YWx1YXRlT3Bjb2RlW3R5cGVdO1xuICAgICAgICBpZiAoIWZhbHNlICYmIGZhbHNlKSB7XG4gICAgICAgICAgICAvKiB0c2xpbnQ6ZGlzYWJsZSAqL1xuICAgICAgICAgICAgbGV0IFtuYW1lLCBwYXJhbXNdID0gZGVidWcodm0uY29uc3RhbnRzLCBvcGNvZGUudHlwZSwgb3Bjb2RlLm9wMSwgb3Bjb2RlLm9wMiwgb3Bjb2RlLm9wMyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgJHt2bVsncGMnXSAtIDR9LiAke2xvZ09wY29kZShuYW1lLCBwYXJhbXMpfWApO1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coLi4uZGVidWcodm0uY29uc3RhbnRzLCB0eXBlLCBvcGNvZGUub3AxLCBvcGNvZGUub3AyLCBvcGNvZGUub3AzKSk7XG4gICAgICAgICAgICAvKiB0c2xpbnQ6ZW5hYmxlICovXG4gICAgICAgIH1cbiAgICAgICAgZnVuYyh2bSwgb3Bjb2RlKTtcbiAgICAgICAgaWYgKCFmYWxzZSAmJiBmYWxzZSkge1xuICAgICAgICAgICAgLyogdHNsaW50OmRpc2FibGUgKi9cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCclYyAtPiBwYzogJWQsIHJhOiAlZCwgZnA6ICVkLCBzcDogJWQsIHMwOiAlTywgczE6ICVPLCB0MDogJU8sIHQxOiAlTycsICdjb2xvcjogb3JhbmdlJywgdm1bJ3BjJ10sIHZtWydyYSddLCB2bVsnZnAnXSwgdm1bJ3NwJ10sIHZtWydzMCddLCB2bVsnczEnXSwgdm1bJ3QwJ10sIHZtWyd0MSddKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCclYyAtPiBldmFsIHN0YWNrJywgJ2NvbG9yOiByZWQnLCB2bS5zdGFjay50b0FycmF5KCkpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJyVjIC0+IHNjb3BlJywgJ2NvbG9yOiBncmVlbicsIHZtLnNjb3BlKClbJ3Nsb3RzJ10ubWFwKHMgPT4gcyAmJiBzWyd2YWx1ZSddID8gc1sndmFsdWUnXSgpIDogcykpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJyVjIC0+IGVsZW1lbnRzJywgJ2NvbG9yOiBibHVlJywgdm0uZWxlbWVudHMoKVsnZWxlbWVudFN0YWNrJ10udG9BcnJheSgpKTtcbiAgICAgICAgICAgIC8qIHRzbGludDplbmFibGUgKi9cbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydCBjb25zdCBBUFBFTkRfT1BDT0RFUyA9IG5ldyBBcHBlbmRPcGNvZGVzKCk7XG5leHBvcnQgY2xhc3MgQWJzdHJhY3RPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBpbml0aWFsaXplR3VpZCh0aGlzKTtcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4geyBndWlkOiB0aGlzLl9ndWlkLCB0eXBlOiB0aGlzLnR5cGUgfTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgVXBkYXRpbmdPcGNvZGUgZXh0ZW5kcyBBYnN0cmFjdE9wY29kZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMubmV4dCA9IG51bGw7XG4gICAgICAgIHRoaXMucHJldiA9IG51bGw7XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIGluc3BlY3Qob3Bjb2Rlcykge1xuICAgIGxldCBidWZmZXIgPSBbXTtcbiAgICBvcGNvZGVzLmZvckVhY2goKG9wY29kZSwgaSkgPT4ge1xuICAgICAgICBfaW5zcGVjdChvcGNvZGUudG9KU09OKCksIGJ1ZmZlciwgMCwgaSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGJ1ZmZlci5qb2luKCcnKTtcbn1cbmZ1bmN0aW9uIF9pbnNwZWN0KG9wY29kZSwgYnVmZmVyLCBsZXZlbCwgaW5kZXgpIHtcbiAgICBsZXQgaW5kZW50YXRpb24gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxldmVsOyBpKyspIHtcbiAgICAgICAgaW5kZW50YXRpb24ucHVzaCgnICAnKTtcbiAgICB9XG4gICAgYnVmZmVyLnB1c2goLi4uaW5kZW50YXRpb24pO1xuICAgIGJ1ZmZlci5wdXNoKGAke2luZGV4fS4gJHtvcGNvZGUudHlwZX1gKTtcbiAgICBpZiAob3Bjb2RlLmFyZ3MgfHwgb3Bjb2RlLmRldGFpbHMpIHtcbiAgICAgICAgYnVmZmVyLnB1c2goJygnKTtcbiAgICAgICAgaWYgKG9wY29kZS5hcmdzKSB7XG4gICAgICAgICAgICBidWZmZXIucHVzaChvcGNvZGUuYXJncy5qb2luKCcsICcpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3Bjb2RlLmRldGFpbHMpIHtcbiAgICAgICAgICAgIGxldCBrZXlzID0gT2JqZWN0LmtleXMob3Bjb2RlLmRldGFpbHMpO1xuICAgICAgICAgICAgaWYgKGtleXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgaWYgKG9wY29kZS5hcmdzICYmIG9wY29kZS5hcmdzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBidWZmZXIucHVzaCgnLCAnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnVmZmVyLnB1c2goa2V5cy5tYXAoa2V5ID0+IGAke2tleX09JHtvcGNvZGUuZGV0YWlscyAmJiBvcGNvZGUuZGV0YWlsc1trZXldfWApLmpvaW4oJywgJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJ1ZmZlci5wdXNoKCcpJyk7XG4gICAgfVxuICAgIGJ1ZmZlci5wdXNoKCdcXG4nKTtcbiAgICBpZiAob3Bjb2RlLmNoaWxkcmVuICYmIG9wY29kZS5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcGNvZGUuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIF9pbnNwZWN0KG9wY29kZS5jaGlsZHJlbltpXSwgYnVmZmVyLCBsZXZlbCArIDEsIGkpO1xuICAgICAgICB9XG4gICAgfVxufSJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9vcGNvZGVzLmpzIl0sIm5hbWVzIjpbImluaXRpYWxpemVHdWlkIiwiZmlsbE51bGxzIiwidW5yZWFjaGFibGUiLCJSZWdpc3RlciIsImRlYnVnU2xpY2UiLCJlbnYiLCJzdGFydCIsImVuZCIsInByb2dyYW0iLCJjb25zdGFudHMiLCJjb25zb2xlIiwiZ3JvdXAiLCJpIiwib3Bjb2RlIiwidHlwZSIsIm9wMSIsIm9wMiIsIm9wMyIsImRlYnVnIiwibmFtZSIsInBhcmFtcyIsImxvZyIsImxvZ09wY29kZSIsImdyb3VwRW5kIiwib3V0IiwiYXJncyIsIk9iamVjdCIsImtleXMiLCJtYXAiLCJwIiwianNvbiIsImpvaW4iLCJwYXJhbSIsInN0cmluZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJ1bmRlZmluZWQiLCJwYXJzZSIsImMiLCJvcCIsImhlbHBlciIsImdldEZ1bmN0aW9uIiwiZnVuY3Rpb24iLCJzeW1ib2wiLCJrZXkiLCJnZXRTdHJpbmciLCJibG9jayIsImdldEJsb2NrIiwic2l6ZSIsInZhbHVlIiwiZ2V0T3RoZXIiLCJwcmltaXRpdmUiLCJyZWdpc3RlciIsIm9mZnNldCIsImNvdW50Iiwic3ltYm9scyIsImJpbmRDYWxsZXJTY29wZSIsInRleHQiLCJjb21tZW50IiwidGFnIiwibmFtZXNwYWNlIiwidHJ1c3RpbmciLCJucyIsImludm9rZXIiLCJ0byIsImRlZmluaXRpb24iLCJwb3NpdGlvbmFsIiwic3ludGhldGljIiwic3RhdGUiLCJmbGFncyIsImV2YWxJbmZvIiwiZ2V0QXJyYXkiLCJBcHBlbmRPcGNvZGVzIiwiZXZhbHVhdGVPcGNvZGUiLCJzbGljZSIsImFkZCIsImV2YWx1YXRlIiwidm0iLCJmdW5jIiwic3RhY2siLCJ0b0FycmF5Iiwic2NvcGUiLCJzIiwiZWxlbWVudHMiLCJBUFBFTkRfT1BDT0RFUyIsIkFic3RyYWN0T3Bjb2RlIiwidG9KU09OIiwiZ3VpZCIsIl9ndWlkIiwiVXBkYXRpbmdPcGNvZGUiLCJhcmd1bWVudHMiLCJuZXh0IiwicHJldiIsImluc3BlY3QiLCJvcGNvZGVzIiwiYnVmZmVyIiwiZm9yRWFjaCIsIl9pbnNwZWN0IiwibGV2ZWwiLCJpbmRleCIsImluZGVudGF0aW9uIiwicHVzaCIsImRldGFpbHMiLCJsZW5ndGgiLCJjaGlsZHJlbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O1FBeUJPLEFBQVM7UUFvUFQsQUFBUzs7QUE3UWhCLEFBQVMsQUFBZ0IsQUFBVyxBQUFtQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV2RCxBQU1BOzs7Ozs7QUFBTyxJQUFBLEFBQUk7QUFDWCxDQUFDLFVBQUEsQUFBVSxVQUFVLEFBQ2pCO0FBQ0E7YUFBUyxTQUFBLEFBQVMsUUFBbEIsQUFBMEIsS0FBMUIsQUFBK0IsQUFDL0I7QUFDQTthQUFTLFNBQUEsQUFBUyxRQUFsQixBQUEwQixLQUExQixBQUErQixBQUMvQjtBQUNBO2FBQVMsU0FBQSxBQUFTLFFBQWxCLEFBQTBCLEtBQTFCLEFBQStCLEFBQy9CO0FBQ0E7YUFBUyxTQUFBLEFBQVMsUUFBbEIsQUFBMEIsS0FBMUIsQUFBK0IsQUFDL0I7QUFDQTthQUFTLFNBQUEsQUFBUyxRQUFsQixBQUEwQixLQUExQixBQUErQixBQUMvQjthQUFTLFNBQUEsQUFBUyxRQUFsQixBQUEwQixLQUExQixBQUErQixBQUMvQjtBQUNBO2FBQVMsU0FBQSxBQUFTLFFBQWxCLEFBQTBCLEtBQTFCLEFBQStCLEFBQy9CO2FBQVMsU0FBQSxBQUFTLFFBQWxCLEFBQTBCLEtBQTFCLEFBQStCLEFBQ2xDO0FBZkQsR0FlRyxnQ0FBYSxXQWZoQixBQWVHLEFBQXdCLEFBQzNCO0FBQU8sb0JBQUEsQUFBb0IsS0FBcEIsQUFBeUIsT0FBekIsQUFBZ0MsS0FBSyxBQUN4QztRQUFJLENBQUEsQUFBQyxTQUFMLEFBQWMsT0FBTztZQUFBLEFBQ1gsVUFEVyxBQUNZLElBRFosQUFDWDtZQURXLEFBQ0YsWUFERSxBQUNZLElBRFosQUFDRixBQUNmO0FBQ0E7O1lBQUksT0FBQSxBQUFPLFlBQVgsQUFBdUIs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QSxBQUFPLFlBQVksT0FBQSxBQUFPLFNBQTlCLEFBQXVDLFFBQVEsQUFDM0M7YUFBSyxJQUFJLEtBQVQsQUFBYSxHQUFHLEtBQUksT0FBQSxBQUFPLFNBQTNCLEFBQW9DLFFBQXBDLEFBQTRDLE1BQUssQUFDN0M7cUJBQVMsT0FBQSxBQUFPLFNBQWhCLEFBQVMsQUFBZ0IsS0FBekIsQUFBNkIsUUFBUSxRQUFyQyxBQUE2QyxHQUE3QyxBQUFnRCxBQUNuRDtBQUNKO0FBQ0oiLCJmaWxlIjoibGliL29wY29kZXMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbml0aWFsaXplR3VpZCwgZmlsbE51bGxzLCB1bnJlYWNoYWJsZSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuXG4vKipcbiAqIFJlZ2lzdGVyc1xuICpcbiAqIEZvciB0aGUgbW9zdCBwYXJ0LCB0aGVzZSBmb2xsb3dzIE1JUFMgbmFtaW5nIGNvbnZlbnRpb25zLCBob3dldmVyIHRoZVxuICogcmVnaXN0ZXIgbnVtYmVycyBhcmUgZGlmZmVyZW50LlxuICovXG5leHBvcnQgdmFyIFJlZ2lzdGVyO1xuKGZ1bmN0aW9uIChSZWdpc3Rlcikge1xuICAgIC8vICQwIG9yICRwYyAocHJvZ3JhbSBjb3VudGVyKTogcG9pbnRlciBpbnRvIGBwcm9ncmFtYCBmb3IgdGhlIG5leHQgaW5zdHVyY3Rpb247IC0xIG1lYW5zIGV4aXRcbiAgICBSZWdpc3RlcltSZWdpc3RlcltcInBjXCJdID0gMF0gPSBcInBjXCI7XG4gICAgLy8gJDEgb3IgJHJhIChyZXR1cm4gYWRkcmVzcyk6IHBvaW50ZXIgaW50byBgcHJvZ3JhbWAgZm9yIHRoZSByZXR1cm5cbiAgICBSZWdpc3RlcltSZWdpc3RlcltcInJhXCJdID0gMV0gPSBcInJhXCI7XG4gICAgLy8gJDIgb3IgJGZwIChmcmFtZSBwb2ludGVyKTogcG9pbnRlciBpbnRvIHRoZSBgZXZhbFN0YWNrYCBmb3IgdGhlIGJhc2Ugb2YgdGhlIHN0YWNrXG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJmcFwiXSA9IDJdID0gXCJmcFwiO1xuICAgIC8vICQzIG9yICRzcCAoc3RhY2sgcG9pbnRlcik6IHBvaW50ZXIgaW50byB0aGUgYGV2YWxTdGFja2AgZm9yIHRoZSB0b3Agb2YgdGhlIHN0YWNrXG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJzcFwiXSA9IDNdID0gXCJzcFwiO1xuICAgIC8vICQ0LSQ1IG9yICRzMC0kczEgKHNhdmVkKTogY2FsbGVlIHNhdmVkIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnNcbiAgICBSZWdpc3RlcltSZWdpc3RlcltcInMwXCJdID0gNF0gPSBcInMwXCI7XG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJzMVwiXSA9IDVdID0gXCJzMVwiO1xuICAgIC8vICQ2LSQ3IG9yICR0MC0kdDEgKHRlbXBvcmFyaWVzKTogY2FsbGVyIHNhdmVkIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnNcbiAgICBSZWdpc3RlcltSZWdpc3RlcltcInQwXCJdID0gNl0gPSBcInQwXCI7XG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJ0MVwiXSA9IDddID0gXCJ0MVwiO1xufSkoUmVnaXN0ZXIgfHwgKFJlZ2lzdGVyID0ge30pKTtcbmV4cG9ydCBmdW5jdGlvbiBkZWJ1Z1NsaWNlKGVudiwgc3RhcnQsIGVuZCkge1xuICAgIGlmICghZmFsc2UgJiYgZmFsc2UpIHtcbiAgICAgICAgbGV0IHsgcHJvZ3JhbSwgY29uc3RhbnRzIH0gPSBlbnY7XG4gICAgICAgIC8vIGNvbnNvbGUgaXMgbm90IGF2YWlsYWJsZSBpbiBJRTlcbiAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIElFMTAgZG9lcyBub3QgaGF2ZSBgY29uc29sZS5ncm91cGBcbiAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlLmdyb3VwICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5ncm91cChgJWMke3N0YXJ0fToke2VuZH1gLCAnY29sb3I6ICM5OTknKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDw9IGVuZDsgaSArPSA0KSB7XG4gICAgICAgICAgICBsZXQgeyB0eXBlLCBvcDEsIG9wMiwgb3AzIH0gPSBwcm9ncmFtLm9wY29kZShpKTtcbiAgICAgICAgICAgIGxldCBbbmFtZSwgcGFyYW1zXSA9IGRlYnVnKGNvbnN0YW50cywgdHlwZSwgb3AxLCBvcDIsIG9wMyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgJHtpfS4gJHtsb2dPcGNvZGUobmFtZSwgcGFyYW1zKX1gKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmdyb3VwRW5kKCk7XG4gICAgfVxufVxuZnVuY3Rpb24gbG9nT3Bjb2RlKHR5cGUsIHBhcmFtcykge1xuICAgIGlmICghZmFsc2UgJiYgZmFsc2UpIHtcbiAgICAgICAgbGV0IG91dCA9IHR5cGU7XG4gICAgICAgIGlmIChwYXJhbXMpIHtcbiAgICAgICAgICAgIGxldCBhcmdzID0gT2JqZWN0LmtleXMocGFyYW1zKS5tYXAocCA9PiBgICR7cH09JHtqc29uKHBhcmFtc1twXSl9YCkuam9pbignJyk7XG4gICAgICAgICAgICBvdXQgKz0gYXJncztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYCgke291dH0pYDtcbiAgICB9XG59XG5mdW5jdGlvbiBqc29uKHBhcmFtKSB7XG4gICAgaWYgKHR5cGVvZiBwYXJhbSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gJzxmdW5jdGlvbj4nO1xuICAgIH1cbiAgICBsZXQgc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkocGFyYW0pO1xuICAgIGlmIChzdHJpbmcgPT09IHVuZGVmaW5lZCkgcmV0dXJuICd1bmRlZmluZWQnO1xuICAgIGxldCBkZWJ1ZyA9IEpTT04ucGFyc2Uoc3RyaW5nKTtcbiAgICBpZiAodHlwZW9mIGRlYnVnID09PSAnb2JqZWN0JyAmJiBkZWJ1ZyAmJiBkZWJ1Z1snR2xpbW1lckRlYnVnJ10pIHtcbiAgICAgICAgcmV0dXJuIGRlYnVnWydHbGltbWVyRGVidWcnXTtcbiAgICB9XG4gICAgcmV0dXJuIHN0cmluZztcbn1cbmZ1bmN0aW9uIGRlYnVnKGMsIG9wLCBvcDEsIG9wMiwgb3AzKSB7XG4gICAgaWYgKCFmYWxzZSAmJiBmYWxzZSkge1xuICAgICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICAgICAgICBjYXNlIDAgLyogQnVnICovOlxuICAgICAgICAgICAgICAgIHRocm93IHVucmVhY2hhYmxlKCk7XG4gICAgICAgICAgICBjYXNlIDEgLyogSGVscGVyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0hlbHBlcicsIHsgaGVscGVyOiBjLmdldEZ1bmN0aW9uKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDIgLyogRnVuY3Rpb24gKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRnVuY3Rpb24nLCB7IGZ1bmN0aW9uOiBjLmdldEZ1bmN0aW9uKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDQgLyogU2V0VmFyaWFibGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnU2V0VmFyaWFibGUnLCB7IHN5bWJvbDogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA1IC8qIEdldFZhcmlhYmxlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0dldFZhcmlhYmxlJywgeyBzeW1ib2w6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNiAvKiBHZXRQcm9wZXJ0eSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydHZXRQcm9wZXJ0eScsIHsga2V5OiBjLmdldFN0cmluZyhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA3IC8qIFB1c2hCbG9jayAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoQmxvY2snLCB7IGJsb2NrOiBjLmdldEJsb2NrKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDggLyogR2V0QmxvY2sgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnR2V0QmxvY2snLCB7IHN5bWJvbDogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA5IC8qIEhhc0Jsb2NrICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0hhc0Jsb2NrJywgeyBibG9jazogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSAxMCAvKiBIYXNCbG9ja1BhcmFtcyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydIYXNCbG9ja1BhcmFtcycsIHsgYmxvY2s6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTEgLyogQ29uY2F0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0NvbmNhdCcsIHsgc2l6ZTogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSAxMiAvKiBJbW1lZGlhdGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSW1tZWRpYXRlJywgeyB2YWx1ZTogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSAxMyAvKiBDb25zdGFudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb25zdGFudCcsIHsgdmFsdWU6IGMuZ2V0T3RoZXIob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTQgLyogUHJpbWl0aXZlUmVmZXJlbmNlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1ByaW1pdGl2ZVJlZmVyZW5jZScsIHsgcHJpbWl0aXZlOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDE1IC8qIER1cCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEdXAnLCB7IHJlZ2lzdGVyOiBSZWdpc3RlcltvcDFdLCBvZmZzZXQ6IG9wMiB9XTtcbiAgICAgICAgICAgIGNhc2UgMTYgLyogUG9wICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1BvcCcsIHsgY291bnQ6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTcgLyogTG9hZCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydMb2FkJywgeyByZWdpc3RlcjogUmVnaXN0ZXJbb3AxXSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTggLyogRmV0Y2ggKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRmV0Y2gnLCB7IHJlZ2lzdGVyOiBSZWdpc3RlcltvcDFdIH1dO1xuICAgICAgICAgICAgLy8vIFBSRUxVREUgJiBFWElUXG4gICAgICAgICAgICBjYXNlIDE5IC8qIFJvb3RTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydSb290U2NvcGUnLCB7IHN5bWJvbHM6IG9wMSwgYmluZENhbGxlclNjb3BlOiAhIW9wMiB9XTtcbiAgICAgICAgICAgIGNhc2UgMjAgLyogQ2hpbGRTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDaGlsZFNjb3BlJywge31dO1xuICAgICAgICAgICAgY2FzZSAyMSAvKiBQb3BTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQb3BTY29wZScsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMjIgLyogUmV0dXJuICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1JldHVybicsIHt9XTtcbiAgICAgICAgICAgIC8vLyBIVE1MXG4gICAgICAgICAgICBjYXNlIDIzIC8qIFRleHQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnVGV4dCcsIHsgdGV4dDogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMjQgLyogQ29tbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb21tZW50JywgeyBjb21tZW50OiBjLmdldFN0cmluZyhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSAyNSAvKiBEeW5hbWljQ29udGVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEeW5hbWljQ29udGVudCcsIHsgdmFsdWU6IGMuZ2V0T3RoZXIob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMjYgLyogT3BlbkVsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnT3BlbkVsZW1lbnQnLCB7IHRhZzogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMjcgLyogT3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydPcGVuRWxlbWVudFdpdGhPcGVyYXRpb25zJywgeyB0YWc6IGMuZ2V0U3RyaW5nKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDI4IC8qIE9wZW5EeW5hbWljRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydPcGVuRHluYW1pY0VsZW1lbnQnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDI5IC8qIFN0YXRpY0F0dHIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnU3RhdGljQXR0cicsIHsgbmFtZTogYy5nZXRTdHJpbmcob3AxKSwgdmFsdWU6IGMuZ2V0U3RyaW5nKG9wMiksIG5hbWVzcGFjZTogb3AzID8gYy5nZXRTdHJpbmcob3AzKSA6IG51bGwgfV07XG4gICAgICAgICAgICBjYXNlIDMwIC8qIER5bmFtaWNBdHRyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0R5bmFtaWNBdHRyJywgeyBuYW1lOiBjLmdldFN0cmluZyhvcDEpLCB0cnVzdGluZzogISFvcDIgfV07XG4gICAgICAgICAgICBjYXNlIDMxIC8qIER5bmFtaWNBdHRyTlMgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRHluYW1pY0F0dHJOUycsIHsgbmFtZTogYy5nZXRTdHJpbmcob3AxKSwgbnM6IGMuZ2V0U3RyaW5nKG9wMiksIHRydXN0aW5nOiAhIW9wMiB9XTtcbiAgICAgICAgICAgIGNhc2UgMzIgLyogRmx1c2hFbGVtZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0ZsdXNoRWxlbWVudCcsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMzMgLyogQ2xvc2VFbGVtZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0Nsb3NlRWxlbWVudCcsIHt9XTtcbiAgICAgICAgICAgIC8vLyBNT0RJRklFUlxuICAgICAgICAgICAgY2FzZSAzNCAvKiBNb2RpZmllciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydNb2RpZmllcicsIHt9XTtcbiAgICAgICAgICAgIC8vLyBXT1JNSE9MRVxuICAgICAgICAgICAgY2FzZSAzNSAvKiBQdXNoUmVtb3RlRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoUmVtb3RlRWxlbWVudCcsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMzYgLyogUG9wUmVtb3RlRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQb3BSZW1vdGVFbGVtZW50Jywge31dO1xuICAgICAgICAgICAgLy8vIERZTkFNSUMgU0NPUEVcbiAgICAgICAgICAgIGNhc2UgMzcgLyogQmluZER5bmFtaWNTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydCaW5kRHluYW1pY1Njb3BlJywge31dO1xuICAgICAgICAgICAgY2FzZSAzOCAvKiBQdXNoRHluYW1pY1Njb3BlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1B1c2hEeW5hbWljU2NvcGUnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDM5IC8qIFBvcER5bmFtaWNTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQb3BEeW5hbWljU2NvcGUnLCB7fV07XG4gICAgICAgICAgICAvLy8gVk1cbiAgICAgICAgICAgIGNhc2UgNDAgLyogQ29tcGlsZUR5bmFtaWNCbG9jayAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb21waWxlRHluYW1pY0Jsb2NrJywge31dO1xuICAgICAgICAgICAgY2FzZSA0MSAvKiBJbnZva2VTdGF0aWMgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSW52b2tlU3RhdGljJywgeyBibG9jazogYy5nZXRCbG9jayhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA0MiAvKiBJbnZva2VEeW5hbWljICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0ludm9rZUR5bmFtaWMnLCB7IGludm9rZXI6IGMuZ2V0T3RoZXIob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDMgLyogSnVtcCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydKdW1wJywgeyB0bzogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA0NCAvKiBKdW1wSWYgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSnVtcElmJywgeyB0bzogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA0NSAvKiBKdW1wVW5sZXNzICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0p1bXBVbmxlc3MnLCB7IHRvOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDQ2IC8qIFB1c2hGcmFtZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoRnJhbWUnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDQ3IC8qIFBvcEZyYW1lICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1BvcEZyYW1lJywge31dO1xuICAgICAgICAgICAgY2FzZSA0OCAvKiBFbnRlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydFbnRlcicsIHsgYXJnczogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA0OSAvKiBFeGl0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0V4aXQnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDUwIC8qIFRlc3QgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnVG9Cb29sZWFuJywge31dO1xuICAgICAgICAgICAgLy8vIExJU1RTXG4gICAgICAgICAgICBjYXNlIDUxIC8qIEVudGVyTGlzdCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydFbnRlckxpc3QnLCB7IHN0YXJ0OiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDUyIC8qIEV4aXRMaXN0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0V4aXRMaXN0Jywge31dO1xuICAgICAgICAgICAgY2FzZSA1MyAvKiBQdXRJdGVyYXRvciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXRJdGVyYXRvcicsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNTQgLyogSXRlcmF0ZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydJdGVyYXRlJywgeyBlbmQ6IG9wMSB9XTtcbiAgICAgICAgICAgIC8vLyBDT01QT05FTlRTXG4gICAgICAgICAgICBjYXNlIDU1IC8qIFB1c2hDb21wb25lbnRNYW5hZ2VyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1B1c2hDb21wb25lbnRNYW5hZ2VyJywgeyBkZWZpbml0aW9uOiBjLmdldE90aGVyKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDU2IC8qIFB1c2hEeW5hbWljQ29tcG9uZW50TWFuYWdlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoRHluYW1pY0NvbXBvbmVudE1hbmFnZXInLCB7fV07XG4gICAgICAgICAgICBjYXNlIDU3IC8qIEluaXRpYWxpemVDb21wb25lbnRTdGF0ZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydJbml0aWFsaXplQ29tcG9uZW50U3RhdGUnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDU4IC8qIFB1c2hBcmdzICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1B1c2hBcmdzJywgeyBwb3NpdGlvbmFsOiBvcDEsIHN5bnRoZXRpYzogISFvcDIgfV07XG4gICAgICAgICAgICBjYXNlIDU5IC8qIFByZXBhcmVBcmdzICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1ByZXBhcmVBcmdzJywgeyBzdGF0ZTogUmVnaXN0ZXJbb3AxXSB9XTtcbiAgICAgICAgICAgIGNhc2UgNjAgLyogQ3JlYXRlQ29tcG9uZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0NyZWF0ZUNvbXBvbmVudCcsIHsgZmxhZ3M6IG9wMSwgc3RhdGU6IFJlZ2lzdGVyW29wMl0gfV07XG4gICAgICAgICAgICBjYXNlIDYxIC8qIFJlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydSZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3InLCB7fV07XG4gICAgICAgICAgICBjYXNlIDYyIC8qIFB1c2hDb21wb25lbnRPcGVyYXRpb25zICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1B1c2hDb21wb25lbnRPcGVyYXRpb25zJywge31dO1xuICAgICAgICAgICAgY2FzZSA2MyAvKiBHZXRDb21wb25lbnRTZWxmICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0dldENvbXBvbmVudFNlbGYnLCB7IHN0YXRlOiBSZWdpc3RlcltvcDFdIH1dO1xuICAgICAgICAgICAgY2FzZSA2NCAvKiBHZXRDb21wb25lbnRMYXlvdXQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnR2V0Q29tcG9uZW50TGF5b3V0JywgeyBzdGF0ZTogUmVnaXN0ZXJbb3AxXSB9XTtcbiAgICAgICAgICAgIGNhc2UgNjUgLyogQmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbiAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydCZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uJywge31dO1xuICAgICAgICAgICAgY2FzZSA2NiAvKiBDb21taXRDb21wb25lbnRUcmFuc2FjdGlvbiAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb21taXRDb21wb25lbnRUcmFuc2FjdGlvbicsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNjcgLyogRGlkQ3JlYXRlRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEaWRDcmVhdGVFbGVtZW50JywgeyBzdGF0ZTogUmVnaXN0ZXJbb3AxXSB9XTtcbiAgICAgICAgICAgIGNhc2UgNjggLyogRGlkUmVuZGVyTGF5b3V0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0RpZFJlbmRlckxheW91dCcsIHt9XTtcbiAgICAgICAgICAgIC8vLyBQQVJUSUFMU1xuICAgICAgICAgICAgY2FzZSA2OSAvKiBHZXRQYXJ0aWFsVGVtcGxhdGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ29tcGlsZVBhcnRpYWwnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDcwIC8qIFJlc29sdmVNYXliZUxvY2FsICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1Jlc29sdmVNYXliZUxvY2FsJywgeyBuYW1lOiBjLmdldFN0cmluZyhvcDEpIH1dO1xuICAgICAgICAgICAgLy8vIERFQlVHR0VSXG4gICAgICAgICAgICBjYXNlIDcxIC8qIERlYnVnZ2VyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0RlYnVnZ2VyJywgeyBzeW1ib2xzOiBjLmdldE90aGVyKG9wMSksIGV2YWxJbmZvOiBjLmdldEFycmF5KG9wMikgfV07XG4gICAgICAgICAgICAvLy8gU1RBVEVNRU5UU1xuICAgICAgICAgICAgY2FzZSA3MiAvKiBTaXplICovOlxuICAgICAgICAgICAgICAgIHRocm93IHVucmVhY2hhYmxlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgdW5yZWFjaGFibGUoKTtcbiAgICB9XG4gICAgcmV0dXJuIFsnJywge31dO1xufVxuZXhwb3J0IGNsYXNzIEFwcGVuZE9wY29kZXMge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmV2YWx1YXRlT3Bjb2RlID0gZmlsbE51bGxzKDcyIC8qIFNpemUgKi8pLnNsaWNlKCk7XG4gICAgfVxuICAgIGFkZChuYW1lLCBldmFsdWF0ZSkge1xuICAgICAgICB0aGlzLmV2YWx1YXRlT3Bjb2RlW25hbWVdID0gZXZhbHVhdGU7XG4gICAgfVxuICAgIGV2YWx1YXRlKHZtLCBvcGNvZGUsIHR5cGUpIHtcbiAgICAgICAgbGV0IGZ1bmMgPSB0aGlzLmV2YWx1YXRlT3Bjb2RlW3R5cGVdO1xuICAgICAgICBpZiAoIWZhbHNlICYmIGZhbHNlKSB7XG4gICAgICAgICAgICBsZXQgW25hbWUsIHBhcmFtc10gPSBkZWJ1Zyh2bS5jb25zdGFudHMsIG9wY29kZS50eXBlLCBvcGNvZGUub3AxLCBvcGNvZGUub3AyLCBvcGNvZGUub3AzKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGAke3ZtWydwYyddIC0gNH0uICR7bG9nT3Bjb2RlKG5hbWUsIHBhcmFtcyl9YCk7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyguLi5kZWJ1Zyh2bS5jb25zdGFudHMsIHR5cGUsIG9wY29kZS5vcDEsIG9wY29kZS5vcDIsIG9wY29kZS5vcDMpKTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jKHZtLCBvcGNvZGUpO1xuICAgICAgICBpZiAoIWZhbHNlICYmIGZhbHNlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnJWMgLT4gcGM6ICVkLCByYTogJWQsIGZwOiAlZCwgc3A6ICVkLCBzMDogJU8sIHMxOiAlTywgdDA6ICVPLCB0MTogJU8nLCAnY29sb3I6IG9yYW5nZScsIHZtWydwYyddLCB2bVsncmEnXSwgdm1bJ2ZwJ10sIHZtWydzcCddLCB2bVsnczAnXSwgdm1bJ3MxJ10sIHZtWyd0MCddLCB2bVsndDEnXSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnJWMgLT4gZXZhbCBzdGFjaycsICdjb2xvcjogcmVkJywgdm0uc3RhY2sudG9BcnJheSgpKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCclYyAtPiBzY29wZScsICdjb2xvcjogZ3JlZW4nLCB2bS5zY29wZSgpWydzbG90cyddLm1hcChzID0+IHMgJiYgc1sndmFsdWUnXSA/IHNbJ3ZhbHVlJ10oKSA6IHMpKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCclYyAtPiBlbGVtZW50cycsICdjb2xvcjogYmx1ZScsIHZtLmVsZW1lbnRzKClbJ2VsZW1lbnRTdGFjayddLnRvQXJyYXkoKSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnQgY29uc3QgQVBQRU5EX09QQ09ERVMgPSBuZXcgQXBwZW5kT3Bjb2RlcygpO1xuZXhwb3J0IGNsYXNzIEFic3RyYWN0T3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgaW5pdGlhbGl6ZUd1aWQodGhpcyk7XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgcmV0dXJuIHsgZ3VpZDogdGhpcy5fZ3VpZCwgdHlwZTogdGhpcy50eXBlIH07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFVwZGF0aW5nT3Bjb2RlIGV4dGVuZHMgQWJzdHJhY3RPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLm5leHQgPSBudWxsO1xuICAgICAgICB0aGlzLnByZXYgPSBudWxsO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBpbnNwZWN0KG9wY29kZXMpIHtcbiAgICBsZXQgYnVmZmVyID0gW107XG4gICAgb3Bjb2Rlcy5mb3JFYWNoKChvcGNvZGUsIGkpID0+IHtcbiAgICAgICAgX2luc3BlY3Qob3Bjb2RlLnRvSlNPTigpLCBidWZmZXIsIDAsIGkpO1xuICAgIH0pO1xuICAgIHJldHVybiBidWZmZXIuam9pbignJyk7XG59XG5mdW5jdGlvbiBfaW5zcGVjdChvcGNvZGUsIGJ1ZmZlciwgbGV2ZWwsIGluZGV4KSB7XG4gICAgbGV0IGluZGVudGF0aW9uID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZXZlbDsgaSsrKSB7XG4gICAgICAgIGluZGVudGF0aW9uLnB1c2goJyAgJyk7XG4gICAgfVxuICAgIGJ1ZmZlci5wdXNoKC4uLmluZGVudGF0aW9uKTtcbiAgICBidWZmZXIucHVzaChgJHtpbmRleH0uICR7b3Bjb2RlLnR5cGV9YCk7XG4gICAgaWYgKG9wY29kZS5hcmdzIHx8IG9wY29kZS5kZXRhaWxzKSB7XG4gICAgICAgIGJ1ZmZlci5wdXNoKCcoJyk7XG4gICAgICAgIGlmIChvcGNvZGUuYXJncykge1xuICAgICAgICAgICAgYnVmZmVyLnB1c2gob3Bjb2RlLmFyZ3Muam9pbignLCAnKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wY29kZS5kZXRhaWxzKSB7XG4gICAgICAgICAgICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKG9wY29kZS5kZXRhaWxzKTtcbiAgICAgICAgICAgIGlmIChrZXlzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGlmIChvcGNvZGUuYXJncyAmJiBvcGNvZGUuYXJncy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmZmVyLnB1c2goJywgJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJ1ZmZlci5wdXNoKGtleXMubWFwKGtleSA9PiBgJHtrZXl9PSR7b3Bjb2RlLmRldGFpbHMgJiYgb3Bjb2RlLmRldGFpbHNba2V5XX1gKS5qb2luKCcsICcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBidWZmZXIucHVzaCgnKScpO1xuICAgIH1cbiAgICBidWZmZXIucHVzaCgnXFxuJyk7XG4gICAgaWYgKG9wY29kZS5jaGlsZHJlbiAmJiBvcGNvZGUuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3Bjb2RlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBfaW5zcGVjdChvcGNvZGUuY2hpbGRyZW5baV0sIGJ1ZmZlciwgbGV2ZWwgKyAxLCBpKTtcbiAgICAgICAgfVxuICAgIH1cbn0iXX0=

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

'use strict';
"use strict";

@@ -6,23 +6,43 @@ Object.defineProperty(exports, "__esModule", {

});
exports.RawProgram = exports.RawInlineBlock = exports.RawBlock = exports.ClientSide = exports.ATTRS_BLOCK = exports.CompilableTemplate = undefined;
exports.compileStatement = compileStatement;
exports.layout = layout;
exports.scanBlock = scanBlock;
var _util = require('@glimmer/util');
var _blocks = require("./compiled/blocks");
var _wireFormat = require('@glimmer/wire-format');
var _compiler = require("./compiler");
var _util = require("@glimmer/util");
var _wireFormat = require("@glimmer/wire-format");
var WireFormat = _interopRequireWildcard(_wireFormat);
var _clientSide = require('./syntax/client-side');
var _opcodes = require("./opcodes");
var ClientSide = _interopRequireWildcard(_clientSide);
var _functions = require("./syntax/functions");
var _compilableTemplate = require('./syntax/compilable-template');
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
var _compilableTemplate2 = _interopRequireDefault(_compilableTemplate);
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;
}
var _functions = require('./syntax/functions');
function _possibleConstructorReturn(self, call) {
if (!self) {
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}return call && (typeof call === "object" || typeof call === "function") ? call : self;
}
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _inherits(subClass, superClass) {
if (typeof superClass !== "function" && superClass !== null) {
throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
}subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass);
}
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
function _classCallCheck(instance, Constructor) {

@@ -34,4 +54,64 @@ if (!(instance instanceof Constructor)) {

var Ops = WireFormat.Ops;
function compileStatement(statement, builder) {
_functions.STATEMENTS.compile(statement, builder);
}
var CompilableTemplate = exports.CompilableTemplate = function () {
function CompilableTemplate(statements, symbolTable) {
_classCallCheck(this, CompilableTemplate);
this.statements = statements;
this.symbolTable = symbolTable;
this.compiledStatic = null;
this.compiledDynamic = null;
}
CompilableTemplate.prototype.compileStatic = function compileStatic(env) {
var compiledStatic = this.compiledStatic;
if (!compiledStatic) {
var _builder = compileStatements(this.statements, this.symbolTable.meta, env);
var start = _builder.start;
var end = _builder.finalize();
(0, _opcodes.debugSlice)(env, start, end);
compiledStatic = this.compiledStatic = new _blocks.CompiledStaticTemplate(start, end);
}
return compiledStatic;
};
CompilableTemplate.prototype.compileDynamic = function compileDynamic(env) {
var compiledDynamic = this.compiledDynamic;
if (!compiledDynamic) {
var staticBlock = this.compileStatic(env);
compiledDynamic = new _blocks.CompiledDynamicTemplate(staticBlock.start, staticBlock.end, this.symbolTable);
}
return compiledDynamic;
};
CompilableTemplate.prototype.toJSON = function toJSON() {
return { GlimmerDebug: '<template>' };
};
return CompilableTemplate;
}();
function compileStatements(statements, meta, env) {
var b = (0, _compiler.builder)(env, meta);
for (var statement of statements) {
compileStatement(statement, b);
}
return b;
}
var ATTRS_BLOCK = exports.ATTRS_BLOCK = '&attrs';
function layout(prelude, head, body, symbolTable) {
var _prelude$pop = prelude.pop(),
tag = _prelude$pop[1];
prelude.push([Ops.ClientSideStatement, ClientSide.Ops.OpenComponentElement, tag]);
prelude.push([Ops.ClientSideStatement, ClientSide.Ops.DidCreateElement]);
var attrsSymbol = symbolTable.symbols.length + 1;
symbolTable.symbols.push(ATTRS_BLOCK);
var statements = prelude.concat([[Ops.Yield, attrsSymbol, _util.EMPTY_ARRAY]]).concat(head).concat(body).concat([[Ops.ClientSideStatement, ClientSide.Ops.DidRenderLayout]]);
return new CompilableTemplate(statements, symbolTable);
}
var Scanner = function () {

@@ -46,65 +126,47 @@ function Scanner(block, env) {

Scanner.prototype.scanEntryPoint = function scanEntryPoint(meta) {
var block = this.block;
var statements = block.statements,
symbols = block.symbols,
hasEval = block.hasEval;
var block = this.block,
env = this.env;
return new _compilableTemplate2.default(statements, { meta: meta, symbols: symbols, hasEval: hasEval });
var statements = void 0;
if (block.prelude && block.head) {
statements = block.prelude.concat(block.head).concat(block.statements);
} else {
statements = block.statements;
}
return new RawProgram(env, meta, statements, block.symbols, block.hasEval).scan();
};
Scanner.prototype.scanBlock = function scanBlock(meta) {
var block = this.block;
var statements = block.statements;
var block = this.block,
env = this.env;
return new _compilableTemplate2.default(statements, { meta: meta, parameters: _util.EMPTY_ARRAY });
var statements = void 0;
if (block.prelude && block.head) {
statements = block.prelude.concat(block.head).concat(block.statements);
} else {
statements = block.statements;
}
return new RawInlineBlock(env, meta, statements, _util.EMPTY_ARRAY).scan();
};
Scanner.prototype.scanLayout = function scanLayout(meta, attrs, componentName) {
Scanner.prototype.scanLayout = function scanLayout(meta, attrs) {
var block = this.block;
var statements = block.statements,
symbols = block.symbols,
var symbols = block.symbols,
hasEval = block.hasEval;
if (!block.prelude || !block.head) {
throw new Error('A layout must have a top-level element');
}
var symbolTable = { meta: meta, hasEval: hasEval, symbols: symbols };
var newStatements = [];
var toplevel = void 0;
var inTopLevel = false;
for (var i = 0; i < statements.length; i++) {
var statement = statements[i];
if (WireFormat.Statements.isComponent(statement)) {
var tagName = statement[1];
if (!this.env.hasComponentDefinition(tagName, meta.templateMeta)) {
if (toplevel !== undefined) {
newStatements.push([Ops.OpenElement, tagName]);
} else {
toplevel = tagName;
decorateTopLevelElement(tagName, symbols, attrs, newStatements);
}
addFallback(statement, newStatements);
} else {
if (toplevel === undefined && tagName === componentName) {
toplevel = tagName;
decorateTopLevelElement(tagName, symbols, attrs, newStatements);
addFallback(statement, newStatements);
}
}
} else {
if (toplevel === undefined && WireFormat.Statements.isOpenElement(statement)) {
toplevel = statement[1];
inTopLevel = true;
decorateTopLevelElement(toplevel, symbols, attrs, newStatements);
} else {
if (inTopLevel) {
if (WireFormat.Statements.isFlushElement(statement)) {
inTopLevel = false;
} else if (WireFormat.Statements.isModifier(statement)) {
throw Error('Found modifier "' + statement[1] + '" on the top-level element of "' + componentName + '". Modifiers cannot be on the top-level element');
}
}
newStatements.push(statement);
}
}
}
newStatements.push([Ops.ClientSideStatement, ClientSide.Ops.DidRenderLayout]);
return new _compilableTemplate2.default(newStatements, symbolTable);
var _scanBlock = scanBlock({ statements: block.prelude, parameters: _util.EMPTY_ARRAY }, meta, this.env),
prelude = _scanBlock.statements;
var _scanBlock2 = scanBlock({ statements: [].concat(attrs, block.head), parameters: _util.EMPTY_ARRAY }, meta, this.env),
head = _scanBlock2.statements;
var _scanBlock3 = scanBlock({ statements: block.statements, parameters: _util.EMPTY_ARRAY }, meta, this.env),
body = _scanBlock3.statements;
return layout(prelude, head, body, symbolTable);
};

@@ -116,28 +178,93 @@

exports.default = Scanner;
function scanBlock(block, meta, env) {
return new RawInlineBlock(env, meta, block.statements, _util.EMPTY_ARRAY).scan();
}
var ClientSide = exports.ClientSide = undefined;
(function (ClientSide) {
var Ops;
(function (Ops) {
Ops[Ops["OpenComponentElement"] = 0] = "OpenComponentElement";
Ops[Ops["DidCreateElement"] = 1] = "DidCreateElement";
Ops[Ops["DidRenderLayout"] = 2] = "DidRenderLayout";
Ops[Ops["OptimizedAppend"] = 3] = "OptimizedAppend";
Ops[Ops["UnoptimizedAppend"] = 4] = "UnoptimizedAppend";
Ops[Ops["StaticPartial"] = 5] = "StaticPartial";
Ops[Ops["DynamicPartial"] = 6] = "DynamicPartial";
Ops[Ops["NestedBlock"] = 7] = "NestedBlock";
Ops[Ops["ScannedBlock"] = 8] = "ScannedBlock";
Ops[Ops["FunctionExpression"] = 9] = "FunctionExpression";
})(Ops = ClientSide.Ops || (ClientSide.Ops = {}));
function is(variant) {
return function (value) {
return value[0] === WireFormat.Ops.ClientSideExpression || value[0] === WireFormat.Ops.ClientSideStatement && value[1] === variant;
};
}
ClientSide.is = is;
})(ClientSide || (exports.ClientSide = ClientSide = {}));
var Ops = WireFormat.Ops;
var RawBlock = exports.RawBlock = function () {
function RawBlock(env, meta, statements) {
_classCallCheck(this, RawBlock);
function addFallback(statement, buffer) {
var attrs = statement[2],
block = statement[4];
for (var i = 0; i < attrs.length; i++) {
buffer.push(attrs[i]);
this.env = env;
this.meta = meta;
this.statements = statements;
}
buffer.push([Ops.FlushElement]);
if (block) {
var statements = block.statements;
for (var _i = 0; _i < statements.length; _i++) {
buffer.push(statements[_i]);
RawBlock.prototype.scanStatements = function scanStatements() {
var buffer = [];
var statements = this.statements;
for (var statement of statements) {
buffer.push(statement);
}
return buffer;
};
RawBlock.prototype.child = function child(block) {
if (!block) return null;
return new RawInlineBlock(this.env, this.meta, block.statements, block.parameters);
};
return RawBlock;
}();
var RawInlineBlock = exports.RawInlineBlock = function (_RawBlock) {
_inherits(RawInlineBlock, _RawBlock);
function RawInlineBlock(env, meta, statements, parameters) {
_classCallCheck(this, RawInlineBlock);
var _this = _possibleConstructorReturn(this, _RawBlock.call(this, env, meta, statements));
_this.parameters = parameters;
return _this;
}
buffer.push([Ops.CloseElement]);
}
function decorateTopLevelElement(tagName, symbols, attrs, buffer) {
var attrsSymbol = symbols.push(_functions.ATTRS_BLOCK);
buffer.push([Ops.ClientSideStatement, ClientSide.Ops.OpenComponentElement, tagName]);
buffer.push([Ops.ClientSideStatement, ClientSide.Ops.DidCreateElement]);
buffer.push([Ops.Yield, attrsSymbol, _util.EMPTY_ARRAY]);
buffer.push.apply(buffer, attrs);
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zY2FubmVyLmpzIl0sIm5hbWVzIjpbIkVNUFRZX0FSUkFZIiwiV2lyZUZvcm1hdCIsIkNsaWVudFNpZGUiLCJDb21waWxhYmxlVGVtcGxhdGUiLCJBVFRSU19CTE9DSyIsIk9wcyIsIlNjYW5uZXIiLCJibG9jayIsImVudiIsInNjYW5FbnRyeVBvaW50IiwibWV0YSIsInN0YXRlbWVudHMiLCJzeW1ib2xzIiwiaGFzRXZhbCIsInNjYW5CbG9jayIsInBhcmFtZXRlcnMiLCJzY2FuTGF5b3V0IiwiYXR0cnMiLCJjb21wb25lbnROYW1lIiwic3ltYm9sVGFibGUiLCJuZXdTdGF0ZW1lbnRzIiwidG9wbGV2ZWwiLCJpblRvcExldmVsIiwiaSIsImxlbmd0aCIsInN0YXRlbWVudCIsIlN0YXRlbWVudHMiLCJpc0NvbXBvbmVudCIsInRhZ05hbWUiLCJoYXNDb21wb25lbnREZWZpbml0aW9uIiwidGVtcGxhdGVNZXRhIiwidW5kZWZpbmVkIiwicHVzaCIsIk9wZW5FbGVtZW50IiwiZGVjb3JhdGVUb3BMZXZlbEVsZW1lbnQiLCJhZGRGYWxsYmFjayIsImlzT3BlbkVsZW1lbnQiLCJpc0ZsdXNoRWxlbWVudCIsImlzTW9kaWZpZXIiLCJFcnJvciIsIkNsaWVudFNpZGVTdGF0ZW1lbnQiLCJEaWRSZW5kZXJMYXlvdXQiLCJidWZmZXIiLCJGbHVzaEVsZW1lbnQiLCJDbG9zZUVsZW1lbnQiLCJhdHRyc1N5bWJvbCIsIk9wZW5Db21wb25lbnRFbGVtZW50IiwiRGlkQ3JlYXRlRWxlbWVudCIsIllpZWxkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxBQUFTLEFBQVQsQUFBNEIsQUFBNUI7O0FBQ0EsQUFBTzs7SUFBSyxBQUFaLEFBQTRCLEFBQTVCOztBQUNBLEFBQU87O0lBQUssQUFBWixBQUE0QixBQUE1Qjs7QUFDQSxBQUFPLEFBQVAsQUFBK0IsQUFBL0I7Ozs7QUFDQSxBQUFTLEFBQVQsQUFBNEIsQUFBNUI7Ozs7Ozs7Ozs7OztBQUNBLElBQUksTUFBTSxX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WixBQUNBO1dBQU8sQUFBUCxLQUFZLENBQUMsSUFBSSxBQUFMLHFCQUEwQixXQUFXLEFBQVgsSUFBZSxBQUF6QyxBQUFaLEFBQ0E7V0FBTyxBQUFQLEtBQVksQ0FBQyxJQUFJLEFBQUwsT0FBWSxBQUFaLEFBQXlCLEFBQXpCLEFBQVosQUFDQTtXQUFPLEFBQVAsbUJBQWUsQUFBZixBQUNIIiwiZmlsZSI6ImxpYi9zY2FubmVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRU1QVFlfQVJSQVkgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCAqIGFzIFdpcmVGb3JtYXQgZnJvbSAnQGdsaW1tZXIvd2lyZS1mb3JtYXQnO1xuaW1wb3J0ICogYXMgQ2xpZW50U2lkZSBmcm9tICcuL3N5bnRheC9jbGllbnQtc2lkZSc7XG5pbXBvcnQgQ29tcGlsYWJsZVRlbXBsYXRlIGZyb20gJy4vc3ludGF4L2NvbXBpbGFibGUtdGVtcGxhdGUnO1xuaW1wb3J0IHsgQVRUUlNfQkxPQ0sgfSBmcm9tICcuL3N5bnRheC9mdW5jdGlvbnMnO1xudmFyIE9wcyA9IFdpcmVGb3JtYXQuT3BzO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2Nhbm5lciB7XG4gICAgY29uc3RydWN0b3IoYmxvY2ssIGVudikge1xuICAgICAgICB0aGlzLmJsb2NrID0gYmxvY2s7XG4gICAgICAgIHRoaXMuZW52ID0gZW52O1xuICAgIH1cbiAgICBzY2FuRW50cnlQb2ludChtZXRhKSB7XG4gICAgICAgIGxldCB7IGJsb2NrIH0gPSB0aGlzO1xuICAgICAgICBsZXQgeyBzdGF0ZW1lbnRzLCBzeW1ib2xzLCBoYXNFdmFsIH0gPSBibG9jaztcbiAgICAgICAgcmV0dXJuIG5ldyBDb21waWxhYmxlVGVtcGxhdGUoc3RhdGVtZW50cywgeyBtZXRhLCBzeW1ib2xzLCBoYXNFdmFsIH0pO1xuICAgIH1cbiAgICBzY2FuQmxvY2sobWV0YSkge1xuICAgICAgICBsZXQgeyBibG9jayB9ID0gdGhpcztcbiAgICAgICAgbGV0IHsgc3RhdGVtZW50cyB9ID0gYmxvY2s7XG4gICAgICAgIHJldHVybiBuZXcgQ29tcGlsYWJsZVRlbXBsYXRlKHN0YXRlbWVudHMsIHsgbWV0YSwgcGFyYW1ldGVyczogRU1QVFlfQVJSQVkgfSk7XG4gICAgfVxuICAgIHNjYW5MYXlvdXQobWV0YSwgYXR0cnMsIGNvbXBvbmVudE5hbWUpIHtcbiAgICAgICAgbGV0IHsgYmxvY2sgfSA9IHRoaXM7XG4gICAgICAgIGxldCB7IHN0YXRlbWVudHMsIHN5bWJvbHMsIGhhc0V2YWwgfSA9IGJsb2NrO1xuICAgICAgICBsZXQgc3ltYm9sVGFibGUgPSB7IG1ldGEsIGhhc0V2YWwsIHN5bWJvbHMgfTtcbiAgICAgICAgbGV0IG5ld1N0YXRlbWVudHMgPSBbXTtcbiAgICAgICAgbGV0IHRvcGxldmVsO1xuICAgICAgICBsZXQgaW5Ub3BMZXZlbCA9IGZhbHNlO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0YXRlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRzW2ldO1xuICAgICAgICAgICAgaWYgKFdpcmVGb3JtYXQuU3RhdGVtZW50cy5pc0NvbXBvbmVudChzdGF0ZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgbGV0IHRhZ05hbWUgPSBzdGF0ZW1lbnRbMV07XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmVudi5oYXNDb21wb25lbnREZWZpbml0aW9uKHRhZ05hbWUsIG1ldGEudGVtcGxhdGVNZXRhKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodG9wbGV2ZWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3U3RhdGVtZW50cy5wdXNoKFtPcHMuT3BlbkVsZW1lbnQsIHRhZ05hbWVdKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcGxldmVsID0gdGFnTmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlY29yYXRlVG9wTGV2ZWxFbGVtZW50KHRhZ05hbWUsIHN5bWJvbHMsIGF0dHJzLCBuZXdTdGF0ZW1lbnRzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBhZGRGYWxsYmFjayhzdGF0ZW1lbnQsIG5ld1N0YXRlbWVudHMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0b3BsZXZlbCA9PT0gdW5kZWZpbmVkICYmIHRhZ05hbWUgPT09IGNvbXBvbmVudE5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcGxldmVsID0gdGFnTmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlY29yYXRlVG9wTGV2ZWxFbGVtZW50KHRhZ05hbWUsIHN5bWJvbHMsIGF0dHJzLCBuZXdTdGF0ZW1lbnRzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZEZhbGxiYWNrKHN0YXRlbWVudCwgbmV3U3RhdGVtZW50cyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh0b3BsZXZlbCA9PT0gdW5kZWZpbmVkICYmIFdpcmVGb3JtYXQuU3RhdGVtZW50cy5pc09wZW5FbGVtZW50KHN0YXRlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9wbGV2ZWwgPSBzdGF0ZW1lbnRbMV07XG4gICAgICAgICAgICAgICAgICAgIGluVG9wTGV2ZWwgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBkZWNvcmF0ZVRvcExldmVsRWxlbWVudCh0b3BsZXZlbCwgc3ltYm9scywgYXR0cnMsIG5ld1N0YXRlbWVudHMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpblRvcExldmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoV2lyZUZvcm1hdC5TdGF0ZW1lbnRzLmlzRmx1c2hFbGVtZW50KHN0YXRlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblRvcExldmVsID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFdpcmVGb3JtYXQuU3RhdGVtZW50cy5pc01vZGlmaWVyKHN0YXRlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihgRm91bmQgbW9kaWZpZXIgXCIke3N0YXRlbWVudFsxXX1cIiBvbiB0aGUgdG9wLWxldmVsIGVsZW1lbnQgb2YgXCIke2NvbXBvbmVudE5hbWV9XCJcXC4gTW9kaWZpZXJzIGNhbm5vdCBiZSBvbiB0aGUgdG9wLWxldmVsIGVsZW1lbnRgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBuZXdTdGF0ZW1lbnRzLnB1c2goc3RhdGVtZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbmV3U3RhdGVtZW50cy5wdXNoKFtPcHMuQ2xpZW50U2lkZVN0YXRlbWVudCwgQ2xpZW50U2lkZS5PcHMuRGlkUmVuZGVyTGF5b3V0XSk7XG4gICAgICAgIHJldHVybiBuZXcgQ29tcGlsYWJsZVRlbXBsYXRlKG5ld1N0YXRlbWVudHMsIHN5bWJvbFRhYmxlKTtcbiAgICB9XG59XG5mdW5jdGlvbiBhZGRGYWxsYmFjayhzdGF0ZW1lbnQsIGJ1ZmZlcikge1xuICAgIGxldCBbLCwgYXR0cnMsLCBibG9ja10gPSBzdGF0ZW1lbnQ7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhdHRycy5sZW5ndGg7IGkrKykge1xuICAgICAgICBidWZmZXIucHVzaChhdHRyc1tpXSk7XG4gICAgfVxuICAgIGJ1ZmZlci5wdXNoKFtPcHMuRmx1c2hFbGVtZW50XSk7XG4gICAgaWYgKGJsb2NrKSB7XG4gICAgICAgIGxldCB7IHN0YXRlbWVudHMgfSA9IGJsb2NrO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0YXRlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGJ1ZmZlci5wdXNoKHN0YXRlbWVudHNbaV0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGJ1ZmZlci5wdXNoKFtPcHMuQ2xvc2VFbGVtZW50XSk7XG59XG5mdW5jdGlvbiBkZWNvcmF0ZVRvcExldmVsRWxlbWVudCh0YWdOYW1lLCBzeW1ib2xzLCBhdHRycywgYnVmZmVyKSB7XG4gICAgbGV0IGF0dHJzU3ltYm9sID0gc3ltYm9scy5wdXNoKEFUVFJTX0JMT0NLKTtcbiAgICBidWZmZXIucHVzaChbT3BzLkNsaWVudFNpZGVTdGF0ZW1lbnQsIENsaWVudFNpZGUuT3BzLk9wZW5Db21wb25lbnRFbGVtZW50LCB0YWdOYW1lXSk7XG4gICAgYnVmZmVyLnB1c2goW09wcy5DbGllbnRTaWRlU3RhdGVtZW50LCBDbGllbnRTaWRlLk9wcy5EaWRDcmVhdGVFbGVtZW50XSk7XG4gICAgYnVmZmVyLnB1c2goW09wcy5ZaWVsZCwgYXR0cnNTeW1ib2wsIEVNUFRZX0FSUkFZXSk7XG4gICAgYnVmZmVyLnB1c2goLi4uYXR0cnMpO1xufSJdfQ==
RawInlineBlock.prototype.scan = function scan() {
var statements = this.scanStatements();
return new CompilableTemplate(statements, { parameters: this.parameters, meta: this.meta });
};
return RawInlineBlock;
}(RawBlock);
var RawProgram = exports.RawProgram = function (_RawBlock2) {
_inherits(RawProgram, _RawBlock2);
function RawProgram(env, meta, statements, symbols, hasEval) {
_classCallCheck(this, RawProgram);
var _this2 = _possibleConstructorReturn(this, _RawBlock2.call(this, env, meta, statements));
_this2.symbols = symbols;
_this2.hasEval = hasEval;
return _this2;
}
RawProgram.prototype.scan = function scan() {
var statements = this.scanStatements();
return new CompilableTemplate(statements, { symbols: this.symbols, hasEval: this.hasEval, meta: this.meta });
};
return RawProgram;
}(RawBlock);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zY2FubmVyLmpzIl0sIm5hbWVzIjpbIkNvbXBpbGVkRHluYW1pY1RlbXBsYXRlIiwiQ29tcGlsZWRTdGF0aWNUZW1wbGF0ZSIsImJ1aWxkZXIiLCJFTVBUWV9BUlJBWSIsIldpcmVGb3JtYXQiLCJkZWJ1Z1NsaWNlIiwiU1RBVEVNRU5UUyIsImNvbXBpbGVTdGF0ZW1lbnQiLCJzdGF0ZW1lbnQiLCJjb21waWxlIiwiQ29tcGlsYWJsZVRlbXBsYXRlIiwic3RhdGVtZW50cyIsInN5bWJvbFRhYmxlIiwiY29tcGlsZWRTdGF0aWMiLCJjb21waWxlZER5bmFtaWMiLCJjb21waWxlU3RhdGljIiwiZW52IiwiY29tcGlsZVN0YXRlbWVudHMiLCJtZXRhIiwic3RhcnQiLCJlbmQiLCJmaW5hbGl6ZSIsImNvbXBpbGVEeW5hbWljIiwic3RhdGljQmxvY2siLCJ0b0pTT04iLCJHbGltbWVyRGVidWciLCJiIiwiQVRUUlNfQkxPQ0siLCJsYXlvdXQiLCJwcmVsdWRlIiwiaGVhZCIsImJvZHkiLCJwb3AiLCJ0YWciLCJwdXNoIiwiT3BzIiwiQ2xpZW50U2lkZVN0YXRlbWVudCIsIkNsaWVudFNpZGUiLCJPcGVuQ29tcG9uZW50RWxlbWVudCIsIkRpZENyZWF0ZUVsZW1lbnQiLCJhdHRyc1N5bWJvbCIsInN5bWJvbHMiLCJsZW5ndGgiLCJjb25jYXQiLCJZaWVsZCIsIkRpZFJlbmRlckxheW91dCIsIlNjYW5uZXIiLCJibG9jayIsInNjYW5FbnRyeVBvaW50IiwiUmF3UHJvZ3JhbSIsImhhc0V2YWwiLCJzY2FuIiwic2NhbkJsb2NrIiwiUmF3SW5saW5lQmxvY2siLCJzY2FuTGF5b3V0IiwiYXR0cnMiLCJFcnJvciIsInBhcmFtZXRlcnMiLCJpcyIsInZhcmlhbnQiLCJ2YWx1ZSIsIkNsaWVudFNpZGVFeHByZXNzaW9uIiwiUmF3QmxvY2siLCJzY2FuU3RhdGVtZW50cyIsImJ1ZmZlciIsImNoaWxkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7UUFNTyxBQUFTO1FBeUNU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QXZCLEFBQW1DLFNBQW5DLEFBQTRDLFNBQVM7OEJBQUE7O3NEQUNqRCxzQkFBQSxBQUFNLEtBQU4sQUFBVyxNQURzQyxBQUNqRCxBQUFpQixBQUNqQjs7ZUFBQSxBQUFLLFVBQUwsQUFBZSxBQUNmO2VBQUEsQUFBSyxVQUg0QyxBQUdqRCxBQUFlO2VBQ2xCO0FBTEw7O3lCQUFBLEFBTUksdUJBQU8sQUFDSDtZQUFJLGFBQWEsS0FBakIsQUFBaUIsQUFBSyxBQUN0QjtlQUFPLElBQUEsQUFBSSxtQkFBSixBQUF1QixZQUFZLEVBQUUsU0FBUyxLQUFYLEFBQWdCLFNBQVMsU0FBUyxLQUFsQyxBQUF1QyxTQUFTLE1BQU0sS0FBaEcsQUFBTyxBQUFtQyxBQUEyRCxBQUN4RztBQVRMOztXQUFBO0VBQUEsQUFBZ0MiLCJmaWxlIjoibGliL3NjYW5uZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21waWxlZER5bmFtaWNUZW1wbGF0ZSwgQ29tcGlsZWRTdGF0aWNUZW1wbGF0ZSB9IGZyb20gJy4vY29tcGlsZWQvYmxvY2tzJztcbmltcG9ydCB7IGJ1aWxkZXIgfSBmcm9tICcuL2NvbXBpbGVyJztcbmltcG9ydCB7IEVNUFRZX0FSUkFZIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgKiBhcyBXaXJlRm9ybWF0IGZyb20gJ0BnbGltbWVyL3dpcmUtZm9ybWF0JztcbmltcG9ydCB7IGRlYnVnU2xpY2UgfSBmcm9tICcuL29wY29kZXMnO1xuaW1wb3J0IHsgU1RBVEVNRU5UUyB9IGZyb20gJy4vc3ludGF4L2Z1bmN0aW9ucyc7XG5leHBvcnQgZnVuY3Rpb24gY29tcGlsZVN0YXRlbWVudChzdGF0ZW1lbnQsIGJ1aWxkZXIpIHtcbiAgICBTVEFURU1FTlRTLmNvbXBpbGUoc3RhdGVtZW50LCBidWlsZGVyKTtcbn1cbmV4cG9ydCBjbGFzcyBDb21waWxhYmxlVGVtcGxhdGUge1xuICAgIGNvbnN0cnVjdG9yKHN0YXRlbWVudHMsIHN5bWJvbFRhYmxlKSB7XG4gICAgICAgIHRoaXMuc3RhdGVtZW50cyA9IHN0YXRlbWVudHM7XG4gICAgICAgIHRoaXMuc3ltYm9sVGFibGUgPSBzeW1ib2xUYWJsZTtcbiAgICAgICAgdGhpcy5jb21waWxlZFN0YXRpYyA9IG51bGw7XG4gICAgICAgIHRoaXMuY29tcGlsZWREeW5hbWljID0gbnVsbDtcbiAgICB9XG4gICAgY29tcGlsZVN0YXRpYyhlbnYpIHtcbiAgICAgICAgbGV0IHsgY29tcGlsZWRTdGF0aWMgfSA9IHRoaXM7XG4gICAgICAgIGlmICghY29tcGlsZWRTdGF0aWMpIHtcbiAgICAgICAgICAgIGxldCBidWlsZGVyID0gY29tcGlsZVN0YXRlbWVudHModGhpcy5zdGF0ZW1lbnRzLCB0aGlzLnN5bWJvbFRhYmxlLm1ldGEsIGVudik7XG4gICAgICAgICAgICBsZXQgc3RhcnQgPSBidWlsZGVyLnN0YXJ0O1xuICAgICAgICAgICAgbGV0IGVuZCA9IGJ1aWxkZXIuZmluYWxpemUoKTtcbiAgICAgICAgICAgIGRlYnVnU2xpY2UoZW52LCBzdGFydCwgZW5kKTtcbiAgICAgICAgICAgIGNvbXBpbGVkU3RhdGljID0gdGhpcy5jb21waWxlZFN0YXRpYyA9IG5ldyBDb21waWxlZFN0YXRpY1RlbXBsYXRlKHN0YXJ0LCBlbmQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb21waWxlZFN0YXRpYztcbiAgICB9XG4gICAgY29tcGlsZUR5bmFtaWMoZW52KSB7XG4gICAgICAgIGxldCB7IGNvbXBpbGVkRHluYW1pYyB9ID0gdGhpcztcbiAgICAgICAgaWYgKCFjb21waWxlZER5bmFtaWMpIHtcbiAgICAgICAgICAgIGxldCBzdGF0aWNCbG9jayA9IHRoaXMuY29tcGlsZVN0YXRpYyhlbnYpO1xuICAgICAgICAgICAgY29tcGlsZWREeW5hbWljID0gbmV3IENvbXBpbGVkRHluYW1pY1RlbXBsYXRlKHN0YXRpY0Jsb2NrLnN0YXJ0LCBzdGF0aWNCbG9jay5lbmQsIHRoaXMuc3ltYm9sVGFibGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb21waWxlZER5bmFtaWM7XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgcmV0dXJuIHsgR2xpbW1lckRlYnVnOiAnPHRlbXBsYXRlPicgfTtcbiAgICB9XG59XG5mdW5jdGlvbiBjb21waWxlU3RhdGVtZW50cyhzdGF0ZW1lbnRzLCBtZXRhLCBlbnYpIHtcbiAgICBsZXQgYiA9IGJ1aWxkZXIoZW52LCBtZXRhKTtcbiAgICBmb3IgKGxldCBzdGF0ZW1lbnQgb2Ygc3RhdGVtZW50cykge1xuICAgICAgICBjb21waWxlU3RhdGVtZW50KHN0YXRlbWVudCwgYik7XG4gICAgfVxuICAgIHJldHVybiBiO1xufVxuZXhwb3J0IGNvbnN0IEFUVFJTX0JMT0NLID0gJyZhdHRycyc7XG5leHBvcnQgZnVuY3Rpb24gbGF5b3V0KHByZWx1ZGUsIGhlYWQsIGJvZHksIHN5bWJvbFRhYmxlKSB7XG4gICAgbGV0IFssIHRhZ10gPSBwcmVsdWRlLnBvcCgpO1xuICAgIHByZWx1ZGUucHVzaChbT3BzLkNsaWVudFNpZGVTdGF0ZW1lbnQsIENsaWVudFNpZGUuT3BzLk9wZW5Db21wb25lbnRFbGVtZW50LCB0YWddKTtcbiAgICBwcmVsdWRlLnB1c2goW09wcy5DbGllbnRTaWRlU3RhdGVtZW50LCBDbGllbnRTaWRlLk9wcy5EaWRDcmVhdGVFbGVtZW50XSk7XG4gICAgbGV0IGF0dHJzU3ltYm9sID0gc3ltYm9sVGFibGUuc3ltYm9scy5sZW5ndGggKyAxO1xuICAgIHN5bWJvbFRhYmxlLnN5bWJvbHMucHVzaChBVFRSU19CTE9DSyk7XG4gICAgbGV0IHN0YXRlbWVudHMgPSBwcmVsdWRlLmNvbmNhdChbW09wcy5ZaWVsZCwgYXR0cnNTeW1ib2wsIEVNUFRZX0FSUkFZXV0pLmNvbmNhdChoZWFkKS5jb25jYXQoYm9keSkuY29uY2F0KFtbT3BzLkNsaWVudFNpZGVTdGF0ZW1lbnQsIENsaWVudFNpZGUuT3BzLkRpZFJlbmRlckxheW91dF1dKTtcbiAgICByZXR1cm4gbmV3IENvbXBpbGFibGVUZW1wbGF0ZShzdGF0ZW1lbnRzLCBzeW1ib2xUYWJsZSk7XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTY2FubmVyIHtcbiAgICBjb25zdHJ1Y3RvcihibG9jaywgZW52KSB7XG4gICAgICAgIHRoaXMuYmxvY2sgPSBibG9jaztcbiAgICAgICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgfVxuICAgIHNjYW5FbnRyeVBvaW50KG1ldGEpIHtcbiAgICAgICAgbGV0IHsgYmxvY2ssIGVudiB9ID0gdGhpcztcbiAgICAgICAgbGV0IHN0YXRlbWVudHM7XG4gICAgICAgIGlmIChibG9jay5wcmVsdWRlICYmIGJsb2NrLmhlYWQpIHtcbiAgICAgICAgICAgIHN0YXRlbWVudHMgPSBibG9jay5wcmVsdWRlLmNvbmNhdChibG9jay5oZWFkKS5jb25jYXQoYmxvY2suc3RhdGVtZW50cyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdGF0ZW1lbnRzID0gYmxvY2suc3RhdGVtZW50cztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFJhd1Byb2dyYW0oZW52LCBtZXRhLCBzdGF0ZW1lbnRzLCBibG9jay5zeW1ib2xzLCBibG9jay5oYXNFdmFsKS5zY2FuKCk7XG4gICAgfVxuICAgIHNjYW5CbG9jayhtZXRhKSB7XG4gICAgICAgIGxldCB7IGJsb2NrLCBlbnYgfSA9IHRoaXM7XG4gICAgICAgIGxldCBzdGF0ZW1lbnRzO1xuICAgICAgICBpZiAoYmxvY2sucHJlbHVkZSAmJiBibG9jay5oZWFkKSB7XG4gICAgICAgICAgICBzdGF0ZW1lbnRzID0gYmxvY2sucHJlbHVkZS5jb25jYXQoYmxvY2suaGVhZCkuY29uY2F0KGJsb2NrLnN0YXRlbWVudHMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3RhdGVtZW50cyA9IGJsb2NrLnN0YXRlbWVudHM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBSYXdJbmxpbmVCbG9jayhlbnYsIG1ldGEsIHN0YXRlbWVudHMsIEVNUFRZX0FSUkFZKS5zY2FuKCk7XG4gICAgfVxuICAgIHNjYW5MYXlvdXQobWV0YSwgYXR0cnMpIHtcbiAgICAgICAgbGV0IHsgYmxvY2sgfSA9IHRoaXM7XG4gICAgICAgIGxldCB7IHN5bWJvbHMsIGhhc0V2YWwgfSA9IGJsb2NrO1xuICAgICAgICBpZiAoIWJsb2NrLnByZWx1ZGUgfHwgIWJsb2NrLmhlYWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQSBsYXlvdXQgbXVzdCBoYXZlIGEgdG9wLWxldmVsIGVsZW1lbnRgKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgc3ltYm9sVGFibGUgPSB7IG1ldGEsIGhhc0V2YWwsIHN5bWJvbHMgfTtcbiAgICAgICAgbGV0IHsgc3RhdGVtZW50czogcHJlbHVkZSB9ID0gc2NhbkJsb2NrKHsgc3RhdGVtZW50czogYmxvY2sucHJlbHVkZSwgcGFyYW1ldGVyczogRU1QVFlfQVJSQVkgfSwgbWV0YSwgdGhpcy5lbnYpO1xuICAgICAgICBsZXQgeyBzdGF0ZW1lbnRzOiBoZWFkIH0gPSBzY2FuQmxvY2soeyBzdGF0ZW1lbnRzOiBbLi4uYXR0cnMsIC4uLmJsb2NrLmhlYWRdLCBwYXJhbWV0ZXJzOiBFTVBUWV9BUlJBWSB9LCBtZXRhLCB0aGlzLmVudik7XG4gICAgICAgIGxldCB7IHN0YXRlbWVudHM6IGJvZHkgfSA9IHNjYW5CbG9jayh7IHN0YXRlbWVudHM6IGJsb2NrLnN0YXRlbWVudHMsIHBhcmFtZXRlcnM6IEVNUFRZX0FSUkFZIH0sIG1ldGEsIHRoaXMuZW52KTtcbiAgICAgICAgcmV0dXJuIGxheW91dChwcmVsdWRlLCBoZWFkLCBib2R5LCBzeW1ib2xUYWJsZSk7XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIHNjYW5CbG9jayhibG9jaywgbWV0YSwgZW52KSB7XG4gICAgcmV0dXJuIG5ldyBSYXdJbmxpbmVCbG9jayhlbnYsIG1ldGEsIGJsb2NrLnN0YXRlbWVudHMsIEVNUFRZX0FSUkFZKS5zY2FuKCk7XG59XG5leHBvcnQgdmFyIENsaWVudFNpZGU7XG4oZnVuY3Rpb24gKENsaWVudFNpZGUpIHtcbiAgICB2YXIgT3BzO1xuICAgIChmdW5jdGlvbiAoT3BzKSB7XG4gICAgICAgIE9wc1tPcHNbXCJPcGVuQ29tcG9uZW50RWxlbWVudFwiXSA9IDBdID0gXCJPcGVuQ29tcG9uZW50RWxlbWVudFwiO1xuICAgICAgICBPcHNbT3BzW1wiRGlkQ3JlYXRlRWxlbWVudFwiXSA9IDFdID0gXCJEaWRDcmVhdGVFbGVtZW50XCI7XG4gICAgICAgIE9wc1tPcHNbXCJEaWRSZW5kZXJMYXlvdXRcIl0gPSAyXSA9IFwiRGlkUmVuZGVyTGF5b3V0XCI7XG4gICAgICAgIE9wc1tPcHNbXCJPcHRpbWl6ZWRBcHBlbmRcIl0gPSAzXSA9IFwiT3B0aW1pemVkQXBwZW5kXCI7XG4gICAgICAgIE9wc1tPcHNbXCJVbm9wdGltaXplZEFwcGVuZFwiXSA9IDRdID0gXCJVbm9wdGltaXplZEFwcGVuZFwiO1xuICAgICAgICBPcHNbT3BzW1wiU3RhdGljUGFydGlhbFwiXSA9IDVdID0gXCJTdGF0aWNQYXJ0aWFsXCI7XG4gICAgICAgIE9wc1tPcHNbXCJEeW5hbWljUGFydGlhbFwiXSA9IDZdID0gXCJEeW5hbWljUGFydGlhbFwiO1xuICAgICAgICBPcHNbT3BzW1wiTmVzdGVkQmxvY2tcIl0gPSA3XSA9IFwiTmVzdGVkQmxvY2tcIjtcbiAgICAgICAgT3BzW09wc1tcIlNjYW5uZWRCbG9ja1wiXSA9IDhdID0gXCJTY2FubmVkQmxvY2tcIjtcbiAgICAgICAgT3BzW09wc1tcIkZ1bmN0aW9uRXhwcmVzc2lvblwiXSA9IDldID0gXCJGdW5jdGlvbkV4cHJlc3Npb25cIjtcbiAgICB9KShPcHMgPSBDbGllbnRTaWRlLk9wcyB8fCAoQ2xpZW50U2lkZS5PcHMgPSB7fSkpO1xuICAgIGZ1bmN0aW9uIGlzKHZhcmlhbnQpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlWzBdID09PSBXaXJlRm9ybWF0Lk9wcy5DbGllbnRTaWRlRXhwcmVzc2lvbiB8fCB2YWx1ZVswXSA9PT0gV2lyZUZvcm1hdC5PcHMuQ2xpZW50U2lkZVN0YXRlbWVudCAmJiB2YWx1ZVsxXSA9PT0gdmFyaWFudDtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgQ2xpZW50U2lkZS5pcyA9IGlzO1xufSkoQ2xpZW50U2lkZSB8fCAoQ2xpZW50U2lkZSA9IHt9KSk7XG5jb25zdCB7IE9wcyB9ID0gV2lyZUZvcm1hdDtcbmV4cG9ydCBjbGFzcyBSYXdCbG9jayB7XG4gICAgY29uc3RydWN0b3IoZW52LCBtZXRhLCBzdGF0ZW1lbnRzKSB7XG4gICAgICAgIHRoaXMuZW52ID0gZW52O1xuICAgICAgICB0aGlzLm1ldGEgPSBtZXRhO1xuICAgICAgICB0aGlzLnN0YXRlbWVudHMgPSBzdGF0ZW1lbnRzO1xuICAgIH1cbiAgICBzY2FuU3RhdGVtZW50cygpIHtcbiAgICAgICAgbGV0IGJ1ZmZlciA9IFtdO1xuICAgICAgICBsZXQgc3RhdGVtZW50cyA9IHRoaXMuc3RhdGVtZW50cztcbiAgICAgICAgZm9yIChsZXQgc3RhdGVtZW50IG9mIHN0YXRlbWVudHMpIHtcbiAgICAgICAgICAgIGJ1ZmZlci5wdXNoKHN0YXRlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJ1ZmZlcjtcbiAgICB9XG4gICAgY2hpbGQoYmxvY2spIHtcbiAgICAgICAgaWYgKCFibG9jaykgcmV0dXJuIG51bGw7XG4gICAgICAgIHJldHVybiBuZXcgUmF3SW5saW5lQmxvY2sodGhpcy5lbnYsIHRoaXMubWV0YSwgYmxvY2suc3RhdGVtZW50cywgYmxvY2sucGFyYW1ldGVycyk7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFJhd0lubGluZUJsb2NrIGV4dGVuZHMgUmF3QmxvY2sge1xuICAgIGNvbnN0cnVjdG9yKGVudiwgbWV0YSwgc3RhdGVtZW50cywgcGFyYW1ldGVycykge1xuICAgICAgICBzdXBlcihlbnYsIG1ldGEsIHN0YXRlbWVudHMpO1xuICAgICAgICB0aGlzLnBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzO1xuICAgIH1cbiAgICBzY2FuKCkge1xuICAgICAgICBsZXQgc3RhdGVtZW50cyA9IHRoaXMuc2NhblN0YXRlbWVudHMoKTtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21waWxhYmxlVGVtcGxhdGUoc3RhdGVtZW50cywgeyBwYXJhbWV0ZXJzOiB0aGlzLnBhcmFtZXRlcnMsIG1ldGE6IHRoaXMubWV0YSB9KTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgUmF3UHJvZ3JhbSBleHRlbmRzIFJhd0Jsb2NrIHtcbiAgICBjb25zdHJ1Y3RvcihlbnYsIG1ldGEsIHN0YXRlbWVudHMsIHN5bWJvbHMsIGhhc0V2YWwpIHtcbiAgICAgICAgc3VwZXIoZW52LCBtZXRhLCBzdGF0ZW1lbnRzKTtcbiAgICAgICAgdGhpcy5zeW1ib2xzID0gc3ltYm9scztcbiAgICAgICAgdGhpcy5oYXNFdmFsID0gaGFzRXZhbDtcbiAgICB9XG4gICAgc2NhbigpIHtcbiAgICAgICAgbGV0IHN0YXRlbWVudHMgPSB0aGlzLnNjYW5TdGF0ZW1lbnRzKCk7XG4gICAgICAgIHJldHVybiBuZXcgQ29tcGlsYWJsZVRlbXBsYXRlKHN0YXRlbWVudHMsIHsgc3ltYm9sczogdGhpcy5zeW1ib2xzLCBoYXNFdmFsOiB0aGlzLmhhc0V2YWwsIG1ldGE6IHRoaXMubWV0YSB9KTtcbiAgICB9XG59Il19

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

var _vm = require('./vm');
var _scanner = require('./scanner');

@@ -18,4 +20,2 @@

var _vm = require('./vm');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -90,4 +90,4 @@

ScannableTemplate.prototype.asLayout = function asLayout(componentName, attrs) {
if (!this.layout) this.layout = this.scanner.scanLayout(this.compilationMeta(), attrs || _util.EMPTY_ARRAY, componentName);
ScannableTemplate.prototype.asLayout = function asLayout(attrs) {
if (!this.layout) this.layout = this.scanner.scanLayout(this.compilationMeta(), attrs || _util.EMPTY_ARRAY);
return this.layout;

@@ -114,2 +114,2 @@ };

}();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi90ZW1wbGF0ZS5qcyJdLCJuYW1lcyI6WyJhc3NpZ24iLCJFTVBUWV9BUlJBWSIsIkVsZW1lbnRTdGFjayIsIlNjYW5uZXIiLCJWTSIsIlRlbXBsYXRlSXRlcmF0b3IiLCJ2bSIsIm5leHQiLCJjbGllbnRJZCIsInRlbXBsYXRlRmFjdG9yeSIsInRlbXBsYXRlSWQiLCJpZCIsIm1ldGEiLCJibG9jayIsInBhcnNlZEJsb2NrIiwiY3JlYXRlIiwiZW52IiwiZW52TWV0YSIsIm5ld01ldGEiLCJKU09OIiwicGFyc2UiLCJTY2FubmFibGVUZW1wbGF0ZSIsInJhd0Jsb2NrIiwiZW50cnlQb2ludCIsImxheW91dCIsInBhcnRpYWwiLCJzY2FubmVyIiwic3ltYm9scyIsImhhc0V2YWwiLCJyZW5kZXIiLCJzZWxmIiwiYXBwZW5kVG8iLCJkeW5hbWljU2NvcGUiLCJlbGVtZW50U3RhY2siLCJmb3JJbml0aWFsUmVuZGVyIiwiY29tcGlsZWQiLCJhc0VudHJ5UG9pbnQiLCJjb21waWxlRHluYW1pYyIsImluaXRpYWwiLCJzY2FuRW50cnlQb2ludCIsImNvbXBpbGF0aW9uTWV0YSIsImFzTGF5b3V0IiwiY29tcG9uZW50TmFtZSIsImF0dHJzIiwic2NhbkxheW91dCIsImFzUGFydGlhbCIsImFzQmxvY2siLCJzY2FuQmxvY2siLCJ0ZW1wbGF0ZU1ldGEiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsQUFBUyxBQUFULEFBQWlCLEFBQWpCLEFBQW9DLEFBQXBDOztBQUNBLEFBQVMsQUFBVCxBQUE2QixBQUE3Qjs7QUFDQSxBQUFPLEFBQVAsQUFBb0IsQUFBcEI7Ozs7QUFDQSxBQUFTLEFBQVQsQUFBbUIsQUFBbkIsQUFDQTs7Ozs7Ozs7OztJQUFhLEFBQWIsMERBQ0k7OEJBQVksQUFBWixJQUFnQjs4QkFDWjs7YUFBSyxBQUFMLEtBQVUsQUFBVixBQUNIO0FBSEw7OytCQUlJLEFBSkosdUJBSVcsQUFDSDtlQUFPLEtBQUssQUFBTCxHQUFRLEFBQVIsQUFBUCxB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Q0QsQSw2Q0FBbUM7WUFBbkIsQUFBbUIsZ0ZBQVAsQUFBTyxBQUMvQjs7ZUFBTyxFQUFFLGNBQWMsS0FBSyxBQUFyQixNQUEyQixTQUFTLEtBQUssQUFBekMsU0FBa0QsV0FBbEQsQUFBUCxBQUNIO0EiLCJmaWxlIjoibGliL3RlbXBsYXRlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXNzaWduLCBFTVBUWV9BUlJBWSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgRWxlbWVudFN0YWNrIH0gZnJvbSAnLi9idWlsZGVyJztcbmltcG9ydCBTY2FubmVyIGZyb20gJy4vc2Nhbm5lcic7XG5pbXBvcnQgeyBWTSB9IGZyb20gJy4vdm0nO1xuZXhwb3J0IGNsYXNzIFRlbXBsYXRlSXRlcmF0b3Ige1xuICAgIGNvbnN0cnVjdG9yKHZtKSB7XG4gICAgICAgIHRoaXMudm0gPSB2bTtcbiAgICB9XG4gICAgbmV4dCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudm0ubmV4dCgpO1xuICAgIH1cbn1cbmxldCBjbGllbnRJZCA9IDA7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0ZW1wbGF0ZUZhY3RvcnkoeyBpZDogdGVtcGxhdGVJZCwgbWV0YSwgYmxvY2sgfSkge1xuICAgIGxldCBwYXJzZWRCbG9jaztcbiAgICBsZXQgaWQgPSB0ZW1wbGF0ZUlkIHx8IGBjbGllbnQtJHtjbGllbnRJZCsrfWA7XG4gICAgbGV0IGNyZWF0ZSA9IChlbnYsIGVudk1ldGEpID0+IHtcbiAgICAgICAgbGV0IG5ld01ldGEgPSBlbnZNZXRhID8gYXNzaWduKHt9LCBlbnZNZXRhLCBtZXRhKSA6IG1ldGE7XG4gICAgICAgIGlmICghcGFyc2VkQmxvY2spIHtcbiAgICAgICAgICAgIHBhcnNlZEJsb2NrID0gSlNPTi5wYXJzZShibG9jayk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBTY2FubmFibGVUZW1wbGF0ZShpZCwgbmV3TWV0YSwgZW52LCBwYXJzZWRCbG9jayk7XG4gICAgfTtcbiAgICByZXR1cm4geyBpZCwgbWV0YSwgY3JlYXRlIH07XG59XG5jbGFzcyBTY2FubmFibGVUZW1wbGF0ZSB7XG4gICAgY29uc3RydWN0b3IoaWQsIG1ldGEsIGVudiwgcmF3QmxvY2spIHtcbiAgICAgICAgdGhpcy5pZCA9IGlkO1xuICAgICAgICB0aGlzLm1ldGEgPSBtZXRhO1xuICAgICAgICB0aGlzLmVudiA9IGVudjtcbiAgICAgICAgdGhpcy5lbnRyeVBvaW50ID0gbnVsbDtcbiAgICAgICAgdGhpcy5sYXlvdXQgPSBudWxsO1xuICAgICAgICB0aGlzLnBhcnRpYWwgPSBudWxsO1xuICAgICAgICB0aGlzLmJsb2NrID0gbnVsbDtcbiAgICAgICAgdGhpcy5zY2FubmVyID0gbmV3IFNjYW5uZXIocmF3QmxvY2ssIGVudik7XG4gICAgICAgIHRoaXMuc3ltYm9scyA9IHJhd0Jsb2NrLnN5bWJvbHM7XG4gICAgICAgIHRoaXMuaGFzRXZhbCA9IHJhd0Jsb2NrLmhhc0V2YWw7XG4gICAgfVxuICAgIHJlbmRlcihzZWxmLCBhcHBlbmRUbywgZHluYW1pY1Njb3BlKSB7XG4gICAgICAgIGxldCB7IGVudiB9ID0gdGhpcztcbiAgICAgICAgbGV0IGVsZW1lbnRTdGFjayA9IEVsZW1lbnRTdGFjay5mb3JJbml0aWFsUmVuZGVyKGVudiwgYXBwZW5kVG8sIG51bGwpO1xuICAgICAgICBsZXQgY29tcGlsZWQgPSB0aGlzLmFzRW50cnlQb2ludCgpLmNvbXBpbGVEeW5hbWljKGVudik7XG4gICAgICAgIGxldCB2bSA9IFZNLmluaXRpYWwoZW52LCBzZWxmLCBkeW5hbWljU2NvcGUsIGVsZW1lbnRTdGFjaywgY29tcGlsZWQpO1xuICAgICAgICByZXR1cm4gbmV3IFRlbXBsYXRlSXRlcmF0b3Iodm0pO1xuICAgIH1cbiAgICBhc0VudHJ5UG9pbnQoKSB7XG4gICAgICAgIGlmICghdGhpcy5lbnRyeVBvaW50KSB0aGlzLmVudHJ5UG9pbnQgPSB0aGlzLnNjYW5uZXIuc2NhbkVudHJ5UG9pbnQodGhpcy5jb21waWxhdGlvbk1ldGEoKSk7XG4gICAgICAgIHJldHVybiB0aGlzLmVudHJ5UG9pbnQ7XG4gICAgfVxuICAgIGFzTGF5b3V0KGNvbXBvbmVudE5hbWUsIGF0dHJzKSB7XG4gICAgICAgIGlmICghdGhpcy5sYXlvdXQpIHRoaXMubGF5b3V0ID0gdGhpcy5zY2FubmVyLnNjYW5MYXlvdXQodGhpcy5jb21waWxhdGlvbk1ldGEoKSwgYXR0cnMgfHwgRU1QVFlfQVJSQVksIGNvbXBvbmVudE5hbWUpO1xuICAgICAgICByZXR1cm4gdGhpcy5sYXlvdXQ7XG4gICAgfVxuICAgIGFzUGFydGlhbCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnBhcnRpYWwpIHRoaXMucGFydGlhbCA9IHRoaXMuc2Nhbm5lci5zY2FuRW50cnlQb2ludCh0aGlzLmNvbXBpbGF0aW9uTWV0YSh0cnVlKSk7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcnRpYWw7XG4gICAgfVxuICAgIGFzQmxvY2soKSB7XG4gICAgICAgIGlmICghdGhpcy5ibG9jaykgdGhpcy5ibG9jayA9IHRoaXMuc2Nhbm5lci5zY2FuQmxvY2sodGhpcy5jb21waWxhdGlvbk1ldGEoKSk7XG4gICAgICAgIHJldHVybiB0aGlzLmJsb2NrO1xuICAgIH1cbiAgICBjb21waWxhdGlvbk1ldGEoYXNQYXJ0aWFsID0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIHsgdGVtcGxhdGVNZXRhOiB0aGlzLm1ldGEsIHN5bWJvbHM6IHRoaXMuc3ltYm9scywgYXNQYXJ0aWFsIH07XG4gICAgfVxufSJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi90ZW1wbGF0ZS5qcyJdLCJuYW1lcyI6WyJhc3NpZ24iLCJFTVBUWV9BUlJBWSIsIkVsZW1lbnRTdGFjayIsIlZNIiwiU2Nhbm5lciIsIlRlbXBsYXRlSXRlcmF0b3IiLCJ2bSIsIm5leHQiLCJjbGllbnRJZCIsInRlbXBsYXRlRmFjdG9yeSIsInRlbXBsYXRlSWQiLCJpZCIsIm1ldGEiLCJibG9jayIsInBhcnNlZEJsb2NrIiwiY3JlYXRlIiwiZW52IiwiZW52TWV0YSIsIm5ld01ldGEiLCJKU09OIiwicGFyc2UiLCJTY2FubmFibGVUZW1wbGF0ZSIsInJhd0Jsb2NrIiwiZW50cnlQb2ludCIsImxheW91dCIsInBhcnRpYWwiLCJzY2FubmVyIiwic3ltYm9scyIsImhhc0V2YWwiLCJyZW5kZXIiLCJzZWxmIiwiYXBwZW5kVG8iLCJkeW5hbWljU2NvcGUiLCJlbGVtZW50U3RhY2siLCJmb3JJbml0aWFsUmVuZGVyIiwiY29tcGlsZWQiLCJhc0VudHJ5UG9pbnQiLCJjb21waWxlRHluYW1pYyIsImluaXRpYWwiLCJzY2FuRW50cnlQb2ludCIsImNvbXBpbGF0aW9uTWV0YSIsImFzTGF5b3V0IiwiYXR0cnMiLCJzY2FuTGF5b3V0IiwiYXNQYXJ0aWFsIiwiYXNCbG9jayIsInNjYW5CbG9jayIsInRlbXBsYXRlTWV0YSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxBQUFTLEFBQVQsQUFBaUIsQUFBakIsQUFBb0MsQUFBcEM7O0FBQ0EsQUFBUyxBQUFULEFBQTZCLEFBQTdCOztBQUNBLEFBQVMsQUFBVCxBQUFtQixBQUFuQjs7QUFDQSxBQUFPLEFBQVAsQUFBb0IsQUFBcEIsQUFDQTs7Ozs7Ozs7Ozs7O0lBQWEsQUFBYiwwREFDSTs4QkFBWSxBQUFaLElBQWdCOzhCQUNaOzthQUFLLEFBQUwsS0FBVSxBQUFWLEFBQ0g7QUFITDs7K0JBSUksQUFKSix1QkFJVyxBQUNIO2VBQU8sS0FBSyxBQUFMLEdBQVEsQUFBUixBQUFQLEFBQ0g7QUFOTDs7V0FBQTs7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Qy9COztlQUFPLEVBQUUsY0FBYyxLQUFLLEFBQXJCLE1BQTJCLFNBQVMsS0FBSyxBQUF6QyxTQUFrRCxXQUFsRCxBQUFQLEFBQ0g7QSIsImZpbGUiOiJsaWIvdGVtcGxhdGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhc3NpZ24sIEVNUFRZX0FSUkFZIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBFbGVtZW50U3RhY2sgfSBmcm9tICcuL2J1aWxkZXInO1xuaW1wb3J0IHsgVk0gfSBmcm9tICcuL3ZtJztcbmltcG9ydCBTY2FubmVyIGZyb20gJy4vc2Nhbm5lcic7XG5leHBvcnQgY2xhc3MgVGVtcGxhdGVJdGVyYXRvciB7XG4gICAgY29uc3RydWN0b3Iodm0pIHtcbiAgICAgICAgdGhpcy52bSA9IHZtO1xuICAgIH1cbiAgICBuZXh0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy52bS5uZXh0KCk7XG4gICAgfVxufVxubGV0IGNsaWVudElkID0gMDtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRlbXBsYXRlRmFjdG9yeSh7IGlkOiB0ZW1wbGF0ZUlkLCBtZXRhLCBibG9jayB9KSB7XG4gICAgbGV0IHBhcnNlZEJsb2NrO1xuICAgIGxldCBpZCA9IHRlbXBsYXRlSWQgfHwgYGNsaWVudC0ke2NsaWVudElkKyt9YDtcbiAgICBsZXQgY3JlYXRlID0gKGVudiwgZW52TWV0YSkgPT4ge1xuICAgICAgICBsZXQgbmV3TWV0YSA9IGVudk1ldGEgPyBhc3NpZ24oe30sIGVudk1ldGEsIG1ldGEpIDogbWV0YTtcbiAgICAgICAgaWYgKCFwYXJzZWRCbG9jaykge1xuICAgICAgICAgICAgcGFyc2VkQmxvY2sgPSBKU09OLnBhcnNlKGJsb2NrKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFNjYW5uYWJsZVRlbXBsYXRlKGlkLCBuZXdNZXRhLCBlbnYsIHBhcnNlZEJsb2NrKTtcbiAgICB9O1xuICAgIHJldHVybiB7IGlkLCBtZXRhLCBjcmVhdGUgfTtcbn1cbmNsYXNzIFNjYW5uYWJsZVRlbXBsYXRlIHtcbiAgICBjb25zdHJ1Y3RvcihpZCwgbWV0YSwgZW52LCByYXdCbG9jaykge1xuICAgICAgICB0aGlzLmlkID0gaWQ7XG4gICAgICAgIHRoaXMubWV0YSA9IG1ldGE7XG4gICAgICAgIHRoaXMuZW52ID0gZW52O1xuICAgICAgICB0aGlzLmVudHJ5UG9pbnQgPSBudWxsO1xuICAgICAgICB0aGlzLmxheW91dCA9IG51bGw7XG4gICAgICAgIHRoaXMucGFydGlhbCA9IG51bGw7XG4gICAgICAgIHRoaXMuYmxvY2sgPSBudWxsO1xuICAgICAgICB0aGlzLnNjYW5uZXIgPSBuZXcgU2Nhbm5lcihyYXdCbG9jaywgZW52KTtcbiAgICAgICAgdGhpcy5zeW1ib2xzID0gcmF3QmxvY2suc3ltYm9scztcbiAgICAgICAgdGhpcy5oYXNFdmFsID0gcmF3QmxvY2suaGFzRXZhbDtcbiAgICB9XG4gICAgcmVuZGVyKHNlbGYsIGFwcGVuZFRvLCBkeW5hbWljU2NvcGUpIHtcbiAgICAgICAgbGV0IHsgZW52IH0gPSB0aGlzO1xuICAgICAgICBsZXQgZWxlbWVudFN0YWNrID0gRWxlbWVudFN0YWNrLmZvckluaXRpYWxSZW5kZXIoZW52LCBhcHBlbmRUbywgbnVsbCk7XG4gICAgICAgIGxldCBjb21waWxlZCA9IHRoaXMuYXNFbnRyeVBvaW50KCkuY29tcGlsZUR5bmFtaWMoZW52KTtcbiAgICAgICAgbGV0IHZtID0gVk0uaW5pdGlhbChlbnYsIHNlbGYsIGR5bmFtaWNTY29wZSwgZWxlbWVudFN0YWNrLCBjb21waWxlZCk7XG4gICAgICAgIHJldHVybiBuZXcgVGVtcGxhdGVJdGVyYXRvcih2bSk7XG4gICAgfVxuICAgIGFzRW50cnlQb2ludCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmVudHJ5UG9pbnQpIHRoaXMuZW50cnlQb2ludCA9IHRoaXMuc2Nhbm5lci5zY2FuRW50cnlQb2ludCh0aGlzLmNvbXBpbGF0aW9uTWV0YSgpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW50cnlQb2ludDtcbiAgICB9XG4gICAgYXNMYXlvdXQoYXR0cnMpIHtcbiAgICAgICAgaWYgKCF0aGlzLmxheW91dCkgdGhpcy5sYXlvdXQgPSB0aGlzLnNjYW5uZXIuc2NhbkxheW91dCh0aGlzLmNvbXBpbGF0aW9uTWV0YSgpLCBhdHRycyB8fCBFTVBUWV9BUlJBWSk7XG4gICAgICAgIHJldHVybiB0aGlzLmxheW91dDtcbiAgICB9XG4gICAgYXNQYXJ0aWFsKCkge1xuICAgICAgICBpZiAoIXRoaXMucGFydGlhbCkgdGhpcy5wYXJ0aWFsID0gdGhpcy5zY2FubmVyLnNjYW5FbnRyeVBvaW50KHRoaXMuY29tcGlsYXRpb25NZXRhKHRydWUpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFydGlhbDtcbiAgICB9XG4gICAgYXNCbG9jaygpIHtcbiAgICAgICAgaWYgKCF0aGlzLmJsb2NrKSB0aGlzLmJsb2NrID0gdGhpcy5zY2FubmVyLnNjYW5CbG9jayh0aGlzLmNvbXBpbGF0aW9uTWV0YSgpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmxvY2s7XG4gICAgfVxuICAgIGNvbXBpbGF0aW9uTWV0YShhc1BhcnRpYWwgPSBmYWxzZSkge1xuICAgICAgICByZXR1cm4geyB0ZW1wbGF0ZU1ldGE6IHRoaXMubWV0YSwgc3ltYm9sczogdGhpcy5zeW1ib2xzLCBhc1BhcnRpYWwgfTtcbiAgICB9XG59Il19

@@ -43,6 +43,6 @@ "use strict";

function isSafeString(value) {
return typeof value === 'object' && value !== null && typeof value.toHTML === 'function';
return !!value && typeof value['toHTML'] === 'function';
}
function isNode(value) {
return typeof value === 'object' && value !== null && typeof value.nodeType === 'number';
return value !== null && typeof value === 'object' && typeof value['nodeType'] === 'number';
}

@@ -212,2 +212,2 @@ function isString(value) {

}(Upsert);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi91cHNlcnQuanMiXSwibmFtZXMiOlsidW5yZWFjaGFibGUiLCJjbGVhciIsInNpbmdsZSIsIlNpbmdsZU5vZGVCb3VuZHMiLCJpc1NhZmVTdHJpbmciLCJ2YWx1ZSIsInRvSFRNTCIsImlzTm9kZSIsIm5vZGVUeXBlIiwiaXNTdHJpbmciLCJVcHNlcnQiLCJib3VuZHMiLCJjYXV0aW91c0luc2VydCIsImRvbSIsImN1cnNvciIsIlRleHRVcHNlcnQiLCJpbnNlcnQiLCJTYWZlU3RyaW5nVXBzZXJ0IiwiTm9kZVVwc2VydCIsInRydXN0aW5nSW5zZXJ0IiwiSFRNTFVwc2VydCIsInRleHROb2RlIiwiY3JlYXRlVGV4dE5vZGUiLCJpbnNlcnRCZWZvcmUiLCJlbGVtZW50IiwibmV4dFNpYmxpbmciLCJ1cGRhdGUiLCJfZG9tIiwibm9kZVZhbHVlIiwiaW5zZXJ0SFRNTEJlZm9yZSIsInBhcmVudEVsZW1lbnQiLCJsYXN0U3RyaW5nVmFsdWUiLCJzdHJpbmdWYWx1ZSIsIm5vZGUiLCJpbnNlcnROb2RlQmVmb3JlIl0sIm1hcHBpbmdzIjoiOzs7OztRQUVPLEFBQVM7UUFHVCxBQUFTO1FBR1QsQUFBUztRQVNULEFBQVM7UUFZVCxBQUFTOztBQTdCaEIsQUFBUyxBQUFtQjs7QUFDNUIsQUFBUyxBQUFPLEFBQVEsQUFBd0IsQUFDaEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBTyxzQkFBQSxBQUFzQixPQUFPLEFBQ2hDO1dBQU8sT0FBQSxBQUFPLFVBQVAsQUFBaUIsWUFBWSxVQUE3QixBQUF1QyxRQUFRLE9BQU8sTUFBUCxBQUFhLFdBQW5FLEFBQThFLEFBQ2pGO0FBQ0Q7QUFBTyxnQkFBQSxBQUFnQixPQUFPLEFBQzFCO1dBQU8sT0FBQSxBQUFPLFVBQVAsQUFBaUIsWUFBWSxVQUE3QixBQUF1QyxRQUFRLE9BQU8sTUFBUCxBQUFhLGFBQW5FLEFBQWdGLEFBQ25GO0FBQ0Q7QUFBTyxrQkFBQSxBQUFrQixPQUFPLEFBQzVCO1dBQU8sT0FBQSxB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O3lCLEFBQ0QseUIsQUFBTyxLLEFBQUssT0FBTyxBQUNmO1lBQUksT0FBSixBQUFJLEFBQU8sUUFBUTtnQkFBQSxBQUNULFNBRFMsQUFDRSxLQURGLEFBQ1QsQUFDTjs7Z0JBQUksZ0JBQWdCLE9BQXBCLEFBQW9CLEFBQU8sQUFDM0I7Z0JBQUksY0FBYyxtQkFBbEIsQUFBa0IsQUFBTSxBQUN4QjtpQkFBQSxBQUFLLFNBQVMsSUFBQSxBQUFJLGlCQUFKLEFBQXFCLGVBQXJCLEFBQW9DLE9BQWxELEFBQWMsQUFBMkMsQUFDekQ7bUJBQUEsQUFBTyxBQUNWO0FBTkQsZUFNTyxBQUNIO21CQUFBLEFBQU8sQUFDVjtBQUNKO0E7OztFQWZvQixBIiwiZmlsZSI6ImxpYi91cHNlcnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1bnJlYWNoYWJsZSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgY2xlYXIsIHNpbmdsZSwgU2luZ2xlTm9kZUJvdW5kcyB9IGZyb20gJy4vYm91bmRzJztcbmV4cG9ydCBmdW5jdGlvbiBpc1NhZmVTdHJpbmcodmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUudG9IVE1MID09PSAnZnVuY3Rpb24nO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZSh2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZS5ub2RlVHlwZSA9PT0gJ251bWJlcic7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmcodmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJztcbn1cbmNsYXNzIFVwc2VydCB7XG4gICAgY29uc3RydWN0b3IoYm91bmRzKSB7XG4gICAgICAgIHRoaXMuYm91bmRzID0gYm91bmRzO1xuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IFVwc2VydDtcbmV4cG9ydCBmdW5jdGlvbiBjYXV0aW91c0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpIHtcbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBUZXh0VXBzZXJ0Lmluc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICAgIH1cbiAgICBpZiAoaXNTYWZlU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gU2FmZVN0cmluZ1Vwc2VydC5pbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKGlzTm9kZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIE5vZGVVcHNlcnQuaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gICAgfVxuICAgIHRocm93IHVucmVhY2hhYmxlKCk7XG59XG5leHBvcnQgZnVuY3Rpb24gdHJ1c3RpbmdJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKSB7XG4gICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gSFRNTFVwc2VydC5pbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKGlzTm9kZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIE5vZGVVcHNlcnQuaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gICAgfVxuICAgIHRocm93IHVucmVhY2hhYmxlKCk7XG59XG5jbGFzcyBUZXh0VXBzZXJ0IGV4dGVuZHMgVXBzZXJ0IHtcbiAgICBzdGF0aWMgaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgICAgICBsZXQgdGV4dE5vZGUgPSBkb20uY3JlYXRlVGV4dE5vZGUodmFsdWUpO1xuICAgICAgICBkb20uaW5zZXJ0QmVmb3JlKGN1cnNvci5lbGVtZW50LCB0ZXh0Tm9kZSwgY3Vyc29yLm5leHRTaWJsaW5nKTtcbiAgICAgICAgbGV0IGJvdW5kcyA9IG5ldyBTaW5nbGVOb2RlQm91bmRzKGN1cnNvci5lbGVtZW50LCB0ZXh0Tm9kZSk7XG4gICAgICAgIHJldHVybiBuZXcgVGV4dFVwc2VydChib3VuZHMsIHRleHROb2RlKTtcbiAgICB9XG4gICAgY29uc3RydWN0b3IoYm91bmRzLCB0ZXh0Tm9kZSkge1xuICAgICAgICBzdXBlcihib3VuZHMpO1xuICAgICAgICB0aGlzLnRleHROb2RlID0gdGV4dE5vZGU7XG4gICAgfVxuICAgIHVwZGF0ZShfZG9tLCB2YWx1ZSkge1xuICAgICAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgICAgICBsZXQgeyB0ZXh0Tm9kZSB9ID0gdGhpcztcbiAgICAgICAgICAgIHRleHROb2RlLm5vZGVWYWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG59XG5jbGFzcyBIVE1MVXBzZXJ0IGV4dGVuZHMgVXBzZXJ0IHtcbiAgICBzdGF0aWMgaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgICAgICBsZXQgYm91bmRzID0gZG9tLmluc2VydEhUTUxCZWZvcmUoY3Vyc29yLmVsZW1lbnQsIHZhbHVlLCBjdXJzb3IubmV4dFNpYmxpbmcpO1xuICAgICAgICByZXR1cm4gbmV3IEhUTUxVcHNlcnQoYm91bmRzKTtcbiAgICB9XG4gICAgdXBkYXRlKGRvbSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICAgICAgbGV0IHsgYm91bmRzIH0gPSB0aGlzO1xuICAgICAgICAgICAgbGV0IHBhcmVudEVsZW1lbnQgPSBib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICAgICAgICAgICAgbGV0IG5leHRTaWJsaW5nID0gY2xlYXIoYm91bmRzKTtcbiAgICAgICAgICAgIHRoaXMuYm91bmRzID0gZG9tLmluc2VydEhUTUxCZWZvcmUocGFyZW50RWxlbWVudCwgbmV4dFNpYmxpbmcsIHZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxufVxuY2xhc3MgU2FmZVN0cmluZ1Vwc2VydCBleHRlbmRzIFVwc2VydCB7XG4gICAgY29uc3RydWN0b3IoYm91bmRzLCBsYXN0U3RyaW5nVmFsdWUpIHtcbiAgICAgICAgc3VwZXIoYm91bmRzKTtcbiAgICAgICAgdGhpcy5sYXN0U3RyaW5nVmFsdWUgPSBsYXN0U3RyaW5nVmFsdWU7XG4gICAgfVxuICAgIHN0YXRpYyBpbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKSB7XG4gICAgICAgIGxldCBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvSFRNTCgpO1xuICAgICAgICBsZXQgYm91bmRzID0gZG9tLmluc2VydEhUTUxCZWZvcmUoY3Vyc29yLmVsZW1lbnQsIHN0cmluZ1ZhbHVlLCBjdXJzb3IubmV4dFNpYmxpbmcpO1xuICAgICAgICByZXR1cm4gbmV3IFNhZmVTdHJpbmdVcHNlcnQoYm91bmRzLCBzdHJpbmdWYWx1ZSk7XG4gICAgfVxuICAgIHVwZGF0ZShkb20sIHZhbHVlKSB7XG4gICAgICAgIGlmIChpc1NhZmVTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgICAgICBsZXQgc3RyaW5nVmFsdWUgPSB2YWx1ZS50b0hUTUwoKTtcbiAgICAgICAgICAgIGlmIChzdHJpbmdWYWx1ZSAhPT0gdGhpcy5sYXN0U3RyaW5nVmFsdWUpIHtcbiAgICAgICAgICAgICAgICBsZXQgeyBib3VuZHMgfSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgbGV0IHBhcmVudEVsZW1lbnQgPSBib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICAgICAgICAgICAgICAgIGxldCBuZXh0U2libGluZyA9IGNsZWFyKGJvdW5kcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5ib3VuZHMgPSBkb20uaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnRFbGVtZW50LCBuZXh0U2libGluZywgc3RyaW5nVmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMubGFzdFN0cmluZ1ZhbHVlID0gc3RyaW5nVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmNsYXNzIE5vZGVVcHNlcnQgZXh0ZW5kcyBVcHNlcnQge1xuICAgIHN0YXRpYyBpbnNlcnQoZG9tLCBjdXJzb3IsIG5vZGUpIHtcbiAgICAgICAgZG9tLmluc2VydEJlZm9yZShjdXJzb3IuZWxlbWVudCwgbm9kZSwgY3Vyc29yLm5leHRTaWJsaW5nKTtcbiAgICAgICAgcmV0dXJuIG5ldyBOb2RlVXBzZXJ0KHNpbmdsZShjdXJzb3IuZWxlbWVudCwgbm9kZSkpO1xuICAgIH1cbiAgICB1cGRhdGUoZG9tLCB2YWx1ZSkge1xuICAgICAgICBpZiAoaXNOb2RlKHZhbHVlKSkge1xuICAgICAgICAgICAgbGV0IHsgYm91bmRzIH0gPSB0aGlzO1xuICAgICAgICAgICAgbGV0IHBhcmVudEVsZW1lbnQgPSBib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICAgICAgICAgICAgbGV0IG5leHRTaWJsaW5nID0gY2xlYXIoYm91bmRzKTtcbiAgICAgICAgICAgIHRoaXMuYm91bmRzID0gZG9tLmluc2VydE5vZGVCZWZvcmUocGFyZW50RWxlbWVudCwgdmFsdWUsIG5leHRTaWJsaW5nKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxufSJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi91cHNlcnQuanMiXSwibmFtZXMiOlsidW5yZWFjaGFibGUiLCJTaW5nbGVOb2RlQm91bmRzIiwic2luZ2xlIiwiY2xlYXIiLCJpc1NhZmVTdHJpbmciLCJ2YWx1ZSIsImlzTm9kZSIsImlzU3RyaW5nIiwiVXBzZXJ0IiwiYm91bmRzIiwiY2F1dGlvdXNJbnNlcnQiLCJkb20iLCJjdXJzb3IiLCJUZXh0VXBzZXJ0IiwiaW5zZXJ0IiwiU2FmZVN0cmluZ1Vwc2VydCIsIk5vZGVVcHNlcnQiLCJ0cnVzdGluZ0luc2VydCIsIkhUTUxVcHNlcnQiLCJ0ZXh0Tm9kZSIsImNyZWF0ZVRleHROb2RlIiwiaW5zZXJ0QmVmb3JlIiwiZWxlbWVudCIsIm5leHRTaWJsaW5nIiwidXBkYXRlIiwiX2RvbSIsIm5vZGVWYWx1ZSIsImluc2VydEhUTUxCZWZvcmUiLCJwYXJlbnRFbGVtZW50IiwibGFzdFN0cmluZ1ZhbHVlIiwic3RyaW5nVmFsdWUiLCJ0b0hUTUwiLCJub2RlIiwiaW5zZXJ0Tm9kZUJlZm9yZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7UUFFTyxBQUFTO1FBR1QsQUFBUztRQUdULEFBQVM7UUFTVCxBQUFTO1FBWVQsQUFBUzs7QUE3QmhCLEFBQVMsQUFBbUI7O0FBQzVCLEFBQVMsQUFBa0IsQUFBUSxBQUFhLEFBQ2hEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQU8sc0JBQUEsQUFBc0IsT0FBTyxBQUNoQztXQUFPLENBQUMsQ0FBRCxBQUFFLFNBQVMsT0FBTyxNQUFQLEFBQU8sQUFBTSxjQUEvQixBQUE2QyxBQUNoRDtBQUNEO0FBQU8sZ0JBQUEsQUFBZ0IsT0FBTyxBQUMxQjtXQUFPLFVBQUEsQUFBVSxRQUFRLE9BQUEsQUFBTyxVQUF6QixBQUFtQyxZQUFZLE9BQU8sTUFBUCxBQUFPLEFBQU0sZ0JBQW5FLEFBQW1GLEFBQ3RGO0FBQ0Q7QUFBTyxrQkFBQSxBQUFrQixPQUFPLEFBQzVCO1dBQU8sT0FBQSxBQUFPLFVBQWQsQUFBd0IsQUFDM0I7OztJ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T0FBTyxBQUNmO1lBQUksT0FBSixBQUFJLEFBQU8sUUFBUTtnQkFBQSxBQUNULFNBRFMsQUFDRSxLQURGLEFBQ1QsQUFDTjs7Z0JBQUksZ0JBQWdCLE9BQXBCLEFBQW9CLEFBQU8sQUFDM0I7Z0JBQUksY0FBYyxtQkFBbEIsQUFBa0IsQUFBTSxBQUN4QjtpQkFBQSxBQUFLLFNBQVMsSUFBQSxBQUFJLGlCQUFKLEFBQXFCLGVBQXJCLEFBQW9DLE9BQWxELEFBQWMsQUFBMkMsQUFDekQ7bUJBQUEsQUFBTyxBQUNWO0FBTkQsZUFNTyxBQUNIO21CQUFBLEFBQU8sQUFDVjtBQUNKO0E7OztFQWZvQixBIiwiZmlsZSI6ImxpYi91cHNlcnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1bnJlYWNoYWJsZSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgU2luZ2xlTm9kZUJvdW5kcywgc2luZ2xlLCBjbGVhciB9IGZyb20gJy4vYm91bmRzJztcbmV4cG9ydCBmdW5jdGlvbiBpc1NhZmVTdHJpbmcodmFsdWUpIHtcbiAgICByZXR1cm4gISF2YWx1ZSAmJiB0eXBlb2YgdmFsdWVbJ3RvSFRNTCddID09PSAnZnVuY3Rpb24nO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZSh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHR5cGVvZiB2YWx1ZVsnbm9kZVR5cGUnXSA9PT0gJ251bWJlcic7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmcodmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJztcbn1cbmNsYXNzIFVwc2VydCB7XG4gICAgY29uc3RydWN0b3IoYm91bmRzKSB7XG4gICAgICAgIHRoaXMuYm91bmRzID0gYm91bmRzO1xuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IFVwc2VydDtcbmV4cG9ydCBmdW5jdGlvbiBjYXV0aW91c0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpIHtcbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBUZXh0VXBzZXJ0Lmluc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICAgIH1cbiAgICBpZiAoaXNTYWZlU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gU2FmZVN0cmluZ1Vwc2VydC5pbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKGlzTm9kZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIE5vZGVVcHNlcnQuaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gICAgfVxuICAgIHRocm93IHVucmVhY2hhYmxlKCk7XG59XG5leHBvcnQgZnVuY3Rpb24gdHJ1c3RpbmdJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKSB7XG4gICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gSFRNTFVwc2VydC5pbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKGlzTm9kZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIE5vZGVVcHNlcnQuaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gICAgfVxuICAgIHRocm93IHVucmVhY2hhYmxlKCk7XG59XG5jbGFzcyBUZXh0VXBzZXJ0IGV4dGVuZHMgVXBzZXJ0IHtcbiAgICBzdGF0aWMgaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgICAgICBsZXQgdGV4dE5vZGUgPSBkb20uY3JlYXRlVGV4dE5vZGUodmFsdWUpO1xuICAgICAgICBkb20uaW5zZXJ0QmVmb3JlKGN1cnNvci5lbGVtZW50LCB0ZXh0Tm9kZSwgY3Vyc29yLm5leHRTaWJsaW5nKTtcbiAgICAgICAgbGV0IGJvdW5kcyA9IG5ldyBTaW5nbGVOb2RlQm91bmRzKGN1cnNvci5lbGVtZW50LCB0ZXh0Tm9kZSk7XG4gICAgICAgIHJldHVybiBuZXcgVGV4dFVwc2VydChib3VuZHMsIHRleHROb2RlKTtcbiAgICB9XG4gICAgY29uc3RydWN0b3IoYm91bmRzLCB0ZXh0Tm9kZSkge1xuICAgICAgICBzdXBlcihib3VuZHMpO1xuICAgICAgICB0aGlzLnRleHROb2RlID0gdGV4dE5vZGU7XG4gICAgfVxuICAgIHVwZGF0ZShfZG9tLCB2YWx1ZSkge1xuICAgICAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgICAgICBsZXQgeyB0ZXh0Tm9kZSB9ID0gdGhpcztcbiAgICAgICAgICAgIHRleHROb2RlLm5vZGVWYWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG59XG5jbGFzcyBIVE1MVXBzZXJ0IGV4dGVuZHMgVXBzZXJ0IHtcbiAgICBzdGF0aWMgaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgICAgICBsZXQgYm91bmRzID0gZG9tLmluc2VydEhUTUxCZWZvcmUoY3Vyc29yLmVsZW1lbnQsIHZhbHVlLCBjdXJzb3IubmV4dFNpYmxpbmcpO1xuICAgICAgICByZXR1cm4gbmV3IEhUTUxVcHNlcnQoYm91bmRzKTtcbiAgICB9XG4gICAgdXBkYXRlKGRvbSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICAgICAgbGV0IHsgYm91bmRzIH0gPSB0aGlzO1xuICAgICAgICAgICAgbGV0IHBhcmVudEVsZW1lbnQgPSBib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICAgICAgICAgICAgbGV0IG5leHRTaWJsaW5nID0gY2xlYXIoYm91bmRzKTtcbiAgICAgICAgICAgIHRoaXMuYm91bmRzID0gZG9tLmluc2VydEhUTUxCZWZvcmUocGFyZW50RWxlbWVudCwgbmV4dFNpYmxpbmcsIHZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxufVxuY2xhc3MgU2FmZVN0cmluZ1Vwc2VydCBleHRlbmRzIFVwc2VydCB7XG4gICAgY29uc3RydWN0b3IoYm91bmRzLCBsYXN0U3RyaW5nVmFsdWUpIHtcbiAgICAgICAgc3VwZXIoYm91bmRzKTtcbiAgICAgICAgdGhpcy5sYXN0U3RyaW5nVmFsdWUgPSBsYXN0U3RyaW5nVmFsdWU7XG4gICAgfVxuICAgIHN0YXRpYyBpbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKSB7XG4gICAgICAgIGxldCBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvSFRNTCgpO1xuICAgICAgICBsZXQgYm91bmRzID0gZG9tLmluc2VydEhUTUxCZWZvcmUoY3Vyc29yLmVsZW1lbnQsIHN0cmluZ1ZhbHVlLCBjdXJzb3IubmV4dFNpYmxpbmcpO1xuICAgICAgICByZXR1cm4gbmV3IFNhZmVTdHJpbmdVcHNlcnQoYm91bmRzLCBzdHJpbmdWYWx1ZSk7XG4gICAgfVxuICAgIHVwZGF0ZShkb20sIHZhbHVlKSB7XG4gICAgICAgIGlmIChpc1NhZmVTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgICAgICBsZXQgc3RyaW5nVmFsdWUgPSB2YWx1ZS50b0hUTUwoKTtcbiAgICAgICAgICAgIGlmIChzdHJpbmdWYWx1ZSAhPT0gdGhpcy5sYXN0U3RyaW5nVmFsdWUpIHtcbiAgICAgICAgICAgICAgICBsZXQgeyBib3VuZHMgfSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgbGV0IHBhcmVudEVsZW1lbnQgPSBib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICAgICAgICAgICAgICAgIGxldCBuZXh0U2libGluZyA9IGNsZWFyKGJvdW5kcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5ib3VuZHMgPSBkb20uaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnRFbGVtZW50LCBuZXh0U2libGluZywgc3RyaW5nVmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMubGFzdFN0cmluZ1ZhbHVlID0gc3RyaW5nVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmNsYXNzIE5vZGVVcHNlcnQgZXh0ZW5kcyBVcHNlcnQge1xuICAgIHN0YXRpYyBpbnNlcnQoZG9tLCBjdXJzb3IsIG5vZGUpIHtcbiAgICAgICAgZG9tLmluc2VydEJlZm9yZShjdXJzb3IuZWxlbWVudCwgbm9kZSwgY3Vyc29yLm5leHRTaWJsaW5nKTtcbiAgICAgICAgcmV0dXJuIG5ldyBOb2RlVXBzZXJ0KHNpbmdsZShjdXJzb3IuZWxlbWVudCwgbm9kZSkpO1xuICAgIH1cbiAgICB1cGRhdGUoZG9tLCB2YWx1ZSkge1xuICAgICAgICBpZiAoaXNOb2RlKHZhbHVlKSkge1xuICAgICAgICAgICAgbGV0IHsgYm91bmRzIH0gPSB0aGlzO1xuICAgICAgICAgICAgbGV0IHBhcmVudEVsZW1lbnQgPSBib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICAgICAgICAgICAgbGV0IG5leHRTaWJsaW5nID0gY2xlYXIoYm91bmRzKTtcbiAgICAgICAgICAgIHRoaXMuYm91bmRzID0gZG9tLmluc2VydE5vZGVCZWZvcmUocGFyZW50RWxlbWVudCwgdmFsdWUsIG5leHRTaWJsaW5nKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxufSJdfQ==

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

this.stack = EvaluationStack.empty();
/* Registers */
/** Registers **/
this.pc = -1;

@@ -209,5 +209,5 @@ this.ra = -1;

return {
dynamicScope: this.dynamicScope(),
env: this.env,
scope: this.scope(),
dynamicScope: this.dynamicScope(),
stack: this.stack.capture(args)

@@ -380,14 +380,11 @@ };

var opcode = this.nextStatement(env);
var result = void 0;
if (opcode !== null) {
var opcode = void 0;
if (opcode = this.nextStatement(env)) {
_opcodes.APPEND_OPCODES.evaluate(this, opcode, opcode.type);
result = { done: false, value: null };
} else {
result = {
done: true,
value: new _renderResult2.default(env, updatingOpcodeStack.pop(), elementStack.popBlock())
};
return { done: false, value: null };
}
return result;
return {
done: true,
value: new _renderResult2.default(env, updatingOpcodeStack.pop(), elementStack.popBlock())
};
};

@@ -440,2 +437,2 @@

exports.default = VM;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi92bS9hcHBlbmQuanMiXSwibmFtZXMiOlsiUmVnaXN0ZXIiLCJTY29wZSIsIlN0YWNrIiwiTGlua2VkTGlzdCIsIkxpc3RTbGljZSIsImNvbWJpbmVTbGljZSIsIkxhYmVsT3Bjb2RlIiwiSnVtcElmTm90TW9kaWZpZWRPcGNvZGUiLCJEaWRNb2RpZnlPcGNvZGUiLCJMaXN0QmxvY2tPcGNvZGUiLCJUcnlPcGNvZGUiLCJSZW5kZXJSZXN1bHQiLCJBUFBFTkRfT1BDT0RFUyIsIkV2YWx1YXRpb25TdGFjayIsInN0YWNrIiwiZnAiLCJzcCIsIk9iamVjdCIsInNlYWwiLCJlbXB0eSIsInJlc3RvcmUiLCJzbmFwc2hvdCIsInNsaWNlIiwibGVuZ3RoIiwiaXNFbXB0eSIsInB1c2giLCJ2YWx1ZSIsImR1cCIsInBvc2l0aW9uIiwicG9wIiwibiIsInRvcCIsInBlZWsiLCJmcm9tQmFzZSIsIm9mZnNldCIsImZyb21Ub3AiLCJjYXB0dXJlIiwiaXRlbXMiLCJlbmQiLCJzdGFydCIsInRvQXJyYXkiLCJWTSIsImVudiIsInNjb3BlIiwiZHluYW1pY1Njb3BlIiwiZWxlbWVudFN0YWNrIiwiZHluYW1pY1Njb3BlU3RhY2siLCJzY29wZVN0YWNrIiwidXBkYXRpbmdPcGNvZGVTdGFjayIsImNhY2hlR3JvdXBzIiwibGlzdEJsb2NrU3RhY2siLCJwYyIsInJhIiwiczAiLCJzMSIsInQwIiwidDEiLCJjb25zdGFudHMiLCJmZXRjaCIsInJlZ2lzdGVyIiwibG9hZCIsImZldGNoVmFsdWUiLCJsb2FkVmFsdWUiLCJwdXNoRnJhbWUiLCJwb3BGcmFtZSIsImdvdG8iLCJjYWxsIiwicmV0dXJuVG8iLCJyZXR1cm4iLCJpbml0aWFsIiwic2VsZiIsInByb2dyYW0iLCJyb290Iiwic3ltYm9sVGFibGUiLCJzeW1ib2xzIiwidm0iLCJhcmdzIiwiYmVnaW5DYWNoZUdyb3VwIiwidXBkYXRpbmciLCJ0YWlsIiwiY29tbWl0Q2FjaGVHcm91cCIsIkVORCIsIm9wY29kZXMiLCJtYXJrZXIiLCJoZWFkIiwibmV4dE5vZGUiLCJ0YWciLCJndWFyZCIsImluc2VydEJlZm9yZSIsImFwcGVuZCIsImVudGVyIiwic3RhdGUiLCJ0cmFja2VyIiwiZWxlbWVudHMiLCJwdXNoVXBkYXRhYmxlQmxvY2siLCJ0cnlPcGNvZGUiLCJkaWRFbnRlciIsIml0ZXJhdGUiLCJtZW1vIiwiZW50ZXJJdGVtIiwia2V5Iiwib3Bjb2RlIiwibGlzdEJsb2NrIiwibWFwIiwiZW50ZXJMaXN0IiwicHVzaEJsb2NrTGlzdCIsImFydGlmYWN0cyIsInVwZGF0ZVdpdGgiLCJjaGlsZHJlbiIsImV4aXQiLCJwb3BCbG9jayIsInBhcmVudCIsImRpZEluaXRpYWxpemVDaGlsZHJlbiIsImV4aXRMaXN0IiwiY3VycmVudCIsInB1c2hDaGlsZFNjb3BlIiwiY2hpbGQiLCJwdXNoQ2FsbGVyU2NvcGUiLCJjaGlsZFNjb3BlIiwiY2FsbGVyU2NvcGUiLCJnZXRDYWxsZXJTY29wZSIsInB1c2hEeW5hbWljU2NvcGUiLCJwdXNoUm9vdFNjb3BlIiwic2l6ZSIsImJpbmRDYWxsZXIiLCJzaXplZCIsImJpbmRDYWxsZXJTY29wZSIsInBvcFNjb3BlIiwicG9wRHluYW1pY1Njb3BlIiwibmV3RGVzdHJveWFibGUiLCJkIiwiZ2V0U2VsZiIsInJlZmVyZW5jZUZvclN5bWJvbCIsInN5bWJvbCIsImdldFN5bWJvbCIsImV4ZWN1dGUiLCJpbml0aWFsaXplIiwicmVzdWx0IiwibmV4dCIsImRvbmUiLCJuZXh0U3RhdGVtZW50IiwiZXZhbHVhdGUiLCJ0eXBlIiwiZXZhbHVhdGVPcGNvZGUiLCJiaW5kRHluYW1pY1Njb3BlIiwibmFtZXMiLCJpIiwibmFtZSIsImdldFN0cmluZyIsInNldCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLEFBQVMsQUFBZ0I7O0FBQ3pCLEFBQVMsQUFBYTs7QUFDdEIsQUFBUyxBQUFPLEFBQVksQUFBeUI7O0FBQ3JELEFBQVMsQUFBb0I7O0FBQzdCLEFBQVMsQUFBYSxBQUF5QixBQUF1Qjs7QUFD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ZXIgfSBmcm9tICcuLi9vcGNvZGVzJztcbmltcG9ydCB7IFNjb3BlIH0gZnJvbSAnLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgU3RhY2ssIExpbmtlZExpc3QsIExpc3RTbGljZSwgZXhwZWN0IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBjb21iaW5lU2xpY2UgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgTGFiZWxPcGNvZGUsIEp1bXBJZk5vdE1vZGlmaWVkT3Bjb2RlLCBEaWRNb2RpZnlPcGNvZGUgfSBmcm9tICcuLi9jb21waWxlZC9vcGNvZGVzL3ZtJztcbmltcG9ydCB7IExpc3RCbG9ja09wY29kZSwgVHJ5T3Bjb2RlIH0gZnJvbSAnLi91cGRhdGUnO1xuaW1wb3J0IFJlbmRlclJlc3VsdCBmcm9tICcuL3JlbmRlci1yZXN1bHQnO1xuaW1wb3J0IHsgQVBQRU5EX09QQ09ERVMgfSBmcm9tICcuLi9vcGNvZGVzJztcbmV4cG9ydCBjbGFzcyBFdmFsdWF0aW9uU3RhY2sge1xuICAgIGNvbnN0cnVjdG9yKHN0YWNrLCBmcCwgc3ApIHtcbiAgICAgICAgdGhpcy5zdGFjayA9IHN0YWNrO1xuICAgICAgICB0aGlzLmZwID0gZnA7XG4gICAgICAgIHRoaXMuc3AgPSBzcDtcbiAgICAgICAgT2JqZWN0LnNlYWwodGhpcyk7XG4gICAgfVxuICAgIHN0YXRpYyBlbXB0eSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyB0aGlzKFtdLCAwLCAtMSk7XG4gICAgfVxuICAgIHN0YXRpYyByZXN0b3JlKHNuYXBzaG90KSB7XG4gICAgICAgIHJldHVybiBuZXcgdGhpcyhzbmFwc2hvdC5zbGljZSgpLCAwLCBzbmFwc2hvdC5sZW5ndGggLSAxKTtcbiAgICB9XG4gICAgaXNFbXB0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3AgPT09IC0xO1xuICAgIH1cbiAgICBwdXNoKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuc3RhY2tbKyt0aGlzLnNwXSA9IHZhbHVlO1xuICAgIH1cbiAgICBkdXAocG9zaXRpb24gPSB0aGlzLnNwKSB7XG4gICAgICAgIHRoaXMucHVzaCh0aGlzLnN0YWNrW3Bvc2l0aW9uXSk7XG4gICAgfVxuICAgIHBvcChuID0gMSkge1xuICAgICAgICBsZXQgdG9wID0gdGhpcy5zdGFja1t0aGlzLnNwXTtcbiAgICAgICAgdGhpcy5zcCAtPSBuO1xuICAgICAgICByZXR1cm4gdG9wO1xuICAgIH1cbiAgICBwZWVrKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFja1t0aGlzLnNwXTtcbiAgICB9XG4gICAgZnJvbUJhc2Uob2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrW3RoaXMuZnAgLSBvZmZzZXRdO1xuICAgIH1cbiAgICBmcm9tVG9wKG9mZnNldCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFja1t0aGlzLnNwIC0gb2Zmc2V0XTtcbiAgICB9XG4gICAgY2FwdHVyZShpdGVtcykge1xuICAgICAgICBsZXQgZW5kID0gdGhpcy5zcCArIDE7XG4gICAgICAgIGxldCBzdGFydCA9IGVuZCAtIGl0ZW1zO1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFjay5zbGljZShzdGFydCwgZW5kKTtcbiAgICB9XG4gICAgdG9BcnJheSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2suc2xpY2UodGhpcy5mcCwgdGhpcy5zcCArIDEpO1xuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZNIHtcbiAgICBjb25zdHJ1Y3RvcihlbnYsIHNjb3BlLCBkeW5hbWljU2NvcGUsIGVsZW1lbnRTdGFjaykge1xuICAgICAgICB0aGlzLmVudiA9IGVudjtcbiAgICAgICAgdGhpcy5lbGVtZW50U3RhY2sgPSBlbGVtZW50U3RhY2s7XG4gICAgICAgIHRoaXMuZHluYW1pY1Njb3BlU3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgICAgICAgdGhpcy5zY29wZVN0YWNrID0gbmV3IFN0YWNrKCk7XG4gICAgICAgIHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjayA9IG5ldyBTdGFjaygpO1xuICAgICAgICB0aGlzLmNhY2hlR3JvdXBzID0gbmV3IFN0YWNrKCk7XG4gICAgICAgIHRoaXMubGlzdEJsb2NrU3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgICAgICAgdGhpcy5zdGFjayA9IEV2YWx1YXRpb25TdGFjay5lbXB0eSgpO1xuICAgICAgICAvKiBSZWdpc3RlcnMgKi9cbiAgICAgICAgdGhpcy5wYyA9IC0xO1xuICAgICAgICB0aGlzLnJhID0gLTE7XG4gICAgICAgIHRoaXMuczAgPSBudWxsO1xuICAgICAgICB0aGlzLnMxID0gbnVsbDtcbiAgICAgICAgdGhpcy50MCA9IG51bGw7XG4gICAgICAgIHRoaXMudDEgPSBudWxsO1xuICAgICAgICB0aGlzLmVudiA9IGVudjtcbiAgICAgICAgdGhpcy5jb25zdGFudHMgPSBlbnYuY29uc3RhbnRzO1xuICAgICAgICB0aGlzLmVsZW1lbnRTdGFjayA9IGVsZW1lbnRTdGFjaztcbiAgICAgICAgdGhpcy5zY29wZVN0YWNrLnB1c2goc2NvcGUpO1xuICAgICAgICB0aGlzLmR5bmFtaWNTY29wZVN0YWNrLnB1c2goZHluYW1pY1Njb3BlKTtcbiAgICB9XG4gICAgZ2V0IGZwKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFjay5mcDtcbiAgICB9XG4gICAgc2V0IGZwKGZwKSB7XG4gICAgICAgIHRoaXMuc3RhY2suZnAgPSBmcDtcbiAgICB9XG4gICAgZ2V0IHNwKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFjay5zcDtcbiAgICB9XG4gICAgc2V0IHNwKHNwKSB7XG4gICAgICAgIHRoaXMuc3RhY2suc3AgPSBzcDtcbiAgICB9XG4gICAgLy8gRmV0Y2ggYSB2YWx1ZSBmcm9tIGEgcmVnaXN0ZXIgb250byB0aGUgc3RhY2tcbiAgICBmZXRjaChyZWdpc3Rlcikge1xuICAgICAgICB0aGlzLnN0YWNrLnB1c2godGhpc1tSZWdpc3RlcltyZWdpc3Rlcl1dKTtcbiAgICB9XG4gICAgLy8gTG9hZCBhIHZhbHVlIGZyb20gdGhlIHN0YWNrIGludG8gYSByZWdpc3RlclxuICAgIGxvYWQocmVnaXN0ZXIpIHtcbiAgICAgICAgdGhpc1tSZWdpc3RlcltyZWdpc3Rlcl1dID0gdGhpcy5zdGFjay5wb3AoKTtcbiAgICB9XG4gICAgLy8gRmV0Y2ggYSB2YWx1ZSBmcm9tIGEgcmVnaXN0ZXJcbiAgICBmZXRjaFZhbHVlKHJlZ2lzdGVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzW1JlZ2lzdGVyW3JlZ2lzdGVyXV07XG4gICAgfVxuICAgIC8vIExvYWQgYSB2YWx1ZSBpbnRvIGEgcmVnaXN0ZXJcbiAgICBsb2FkVmFsdWUocmVnaXN0ZXIsIHZhbHVlKSB7XG4gICAgICAgIHRoaXNbUmVnaXN0ZXJbcmVnaXN0ZXJdXSA9IHZhbHVlO1xuICAgIH1cbiAgICAvLyBTdGFydCBhIG5ldyBmcmFtZSBhbmQgc2F2ZSAkcmEgYW5kICRmcCBvbiB0aGUgc3RhY2tcbiAgICBwdXNoRnJhbWUoKSB7XG4gICAgICAgIHRoaXMuc3RhY2sucHVzaCh0aGlzLnJhKTtcbiAgICAgICAgdGhpcy5zdGFjay5wdXNoKHRoaXMuZnApO1xuICAgICAgICB0aGlzLmZwID0gdGhpcy5zcCAtIDE7XG4gICAgICAgIC8vIHRoaXMuZnAgPSB0aGlzLnNwICsgMTtcbiAgICB9XG4gICAgLy8gUmVzdG9yZSAkcmEsICRzcCBhbmQgJGZwXG4gICAgcG9wRnJhbWUoKSB7XG4gICAgICAgIHRoaXMuc3AgPSB0aGlzLmZwIC0gMTtcbiAgICAgICAgdGhpcy5yYSA9IHRoaXMuc3RhY2suZnJvbUJhc2UoMCk7XG4gICAgICAgIHRoaXMuZnAgPSB0aGlzLnN0YWNrLmZyb21CYXNlKC0xKTtcbiAgICB9XG4gICAgLy8gSnVtcCB0byBhbiBhZGRyZXNzIGluIGBwcm9ncmFtYFxuICAgIGdvdG8ocGMpIHtcbiAgICAgICAgdGhpcy5wYyA9IHBjO1xuICAgIH1cbiAgICAvLyBTYXZlICRwYyBpbnRvICRyYSwgdGhlbiBqdW1wIHRvIGEgbmV3IGFkZHJlc3MgaW4gYHByb2dyYW1gIChqYWwgaW4gTUlQUylcbiAgICBjYWxsKHBjKSB7XG4gICAgICAgIHRoaXMucmEgPSB0aGlzLnBjO1xuICAgICAgICB0aGlzLnBjID0gcGM7XG4gICAgfVxuICAgIC8vIFB1dCBhIHNwZWNpZmljIGBwcm9ncmFtYCBhZGRyZXNzIGluICRyYVxuICAgIHJldHVyblRvKHJhKSB7XG4gICAgICAgIHRoaXMucmEgPSByYTtcbiAgICB9XG4gICAgLy8gUmV0dXJuIHRvIHRoZSBgcHJvZ3JhbWAgYWRkcmVzcyBzdG9yZWQgaW4gJHJhXG4gICAgcmV0dXJuKCkge1xuICAgICAgICB0aGlzLnBjID0gdGhpcy5yYTtcbiAgICB9XG4gICAgc3RhdGljIGluaXRpYWwoZW52LCBzZWxmLCBkeW5hbWljU2NvcGUsIGVsZW1lbnRTdGFjaywgcHJvZ3JhbSkge1xuICAgICAgICBsZXQgc2NvcGUgPSBTY29wZS5yb290KHNlbGYsIHByb2dyYW0uc3ltYm9sVGFibGUuc3ltYm9scy5sZW5ndGgpO1xuICAgICAgICBsZXQgdm0gPSBuZXcgVk0oZW52LCBzY29wZSwgZHluYW1pY1Njb3BlLCBlbGVtZW50U3RhY2spO1xuICAgICAgICB2bS5wYyA9IHByb2dyYW0uc3RhcnQ7XG4gICAgICAgIHZtLnVwZGF0aW5nT3Bjb2RlU3RhY2sucHVzaChuZXcgTGlua2VkTGlzdCgpKTtcbiAgICAgICAgcmV0dXJuIHZtO1xuICAgIH1cbiAgICBjYXB0dXJlKGFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGR5bmFtaWNTY29wZTogdGhpcy5keW5hbWljU2NvcGUoKSxcbiAgICAgICAgICAgIGVudjogdGhpcy5lbnYsXG4gICAgICAgICAgICBzY29wZTogdGhpcy5zY29wZSgpLFxuICAgICAgICAgICAgc3RhY2s6IHRoaXMuc3RhY2suY2FwdHVyZShhcmdzKVxuICAgICAgICB9O1xuICAgIH1cbiAgICBiZWdpbkNhY2hlR3JvdXAoKSB7XG4gICAgICAgIHRoaXMuY2FjaGVHcm91cHMucHVzaCh0aGlzLnVwZGF0aW5nKCkudGFpbCgpKTtcbiAgICB9XG4gICAgY29tbWl0Q2FjaGVHcm91cCgpIHtcbiAgICAgICAgLy8gICAgICAgIEp1bXBJZk5vdE1vZGlmaWVkKEVORClcbiAgICAgICAgLy8gICAgICAgIChoZWFkKVxuICAgICAgICAvLyAgICAgICAgKC4uLi4pXG4gICAgICAgIC8vICAgICAgICAodGFpbClcbiAgICAgICAgLy8gICAgICAgIERpZE1vZGlmeVxuICAgICAgICAvLyBFTkQ6ICAgTm9vcFxuICAgICAgICBsZXQgRU5EID0gbmV3IExhYmVsT3Bjb2RlKFwiRU5EXCIpO1xuICAgICAgICBsZXQgb3Bjb2RlcyA9IHRoaXMudXBkYXRpbmcoKTtcbiAgICAgICAgbGV0IG1hcmtlciA9IHRoaXMuY2FjaGVHcm91cHMucG9wKCk7XG4gICAgICAgIGxldCBoZWFkID0gbWFya2VyID8gb3Bjb2Rlcy5uZXh0Tm9kZShtYXJrZXIpIDogb3Bjb2Rlcy5oZWFkKCk7XG4gICAgICAgIGxldCB0YWlsID0gb3Bjb2Rlcy50YWlsKCk7XG4gICAgICAgIGxldCB0YWcgPSBjb21iaW5lU2xpY2UobmV3IExpc3RTbGljZShoZWFkLCB0YWlsKSk7XG4gICAgICAgIGxldCBndWFyZCA9IG5ldyBKdW1wSWZOb3RNb2RpZmllZE9wY29kZSh0YWcsIEVORCk7XG4gICAgICAgIG9wY29kZXMuaW5zZXJ0QmVmb3JlKGd1YXJkLCBoZWFkKTtcbiAgICAgICAgb3Bjb2Rlcy5hcHBlbmQobmV3IERpZE1vZGlmeU9wY29kZShndWFyZCkpO1xuICAgICAgICBvcGNvZGVzLmFwcGVuZChFTkQpO1xuICAgIH1cbiAgICBlbnRlcihhcmdzKSB7XG4gICAgICAgIGxldCB1cGRhdGluZyA9IG5ldyBMaW5rZWRMaXN0KCk7XG4gICAgICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZShhcmdzKTtcbiAgICAgICAgbGV0IHRyYWNrZXIgPSB0aGlzLmVsZW1lbnRzKCkucHVzaFVwZGF0YWJsZUJsb2NrKCk7XG4gICAgICAgIGxldCB0cnlPcGNvZGUgPSBuZXcgVHJ5T3Bjb2RlKHRoaXMucGMsIHN0YXRlLCB0cmFja2VyLCB1cGRhdGluZyk7XG4gICAgICAgIHRoaXMuZGlkRW50ZXIodHJ5T3Bjb2RlKTtcbiAgICB9XG4gICAgaXRlcmF0ZShtZW1vLCB2YWx1ZSkge1xuICAgICAgICBsZXQgc3RhY2sgPSB0aGlzLnN0YWNrO1xuICAgICAgICBzdGFjay5wdXNoKHZhbHVlKTtcbiAgICAgICAgc3RhY2sucHVzaChtZW1vKTtcbiAgICAgICAgbGV0IHN0YXRlID0gdGhpcy5jYXB0dXJlKDIpO1xuICAgICAgICBsZXQgdHJhY2tlciA9IHRoaXMuZWxlbWVudHMoKS5wdXNoVXBkYXRhYmxlQmxvY2soKTtcbiAgICAgICAgLy8gbGV0IGlwID0gdGhpcy5pcDtcbiAgICAgICAgLy8gdGhpcy5pcCA9IGVuZCArIDQ7XG4gICAgICAgIC8vIHRoaXMuZnJhbWVzLnB1c2goaXApO1xuICAgICAgICByZXR1cm4gbmV3IFRyeU9wY29kZSh0aGlzLnBjLCBzdGF0ZSwgdHJhY2tlciwgbmV3IExpbmtlZExpc3QoKSk7XG4gICAgfVxuICAgIGVudGVySXRlbShrZXksIG9wY29kZSkge1xuICAgICAgICB0aGlzLmxpc3RCbG9jaygpLm1hcFtrZXldID0gb3Bjb2RlO1xuICAgICAgICB0aGlzLmRpZEVudGVyKG9wY29kZSk7XG4gICAgfVxuICAgIGVudGVyTGlzdChzdGFydCkge1xuICAgICAgICBsZXQgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdCgpO1xuICAgICAgICBsZXQgc3RhdGUgPSB0aGlzLmNhcHR1cmUoMCk7XG4gICAgICAgIGxldCB0cmFja2VyID0gdGhpcy5lbGVtZW50cygpLnB1c2hCbG9ja0xpc3QodXBkYXRpbmcpO1xuICAgICAgICBsZXQgYXJ0aWZhY3RzID0gdGhpcy5zdGFjay5wZWVrKCkuYXJ0aWZhY3RzO1xuICAgICAgICBsZXQgb3Bjb2RlID0gbmV3IExpc3RCbG9ja09wY29kZShzdGFydCwgc3RhdGUsIHRyYWNrZXIsIHVwZGF0aW5nLCBhcnRpZmFjdHMpO1xuICAgICAgICB0aGlzLmxpc3RCbG9ja1N0YWNrLnB1c2gob3Bjb2RlKTtcbiAgICAgICAgdGhpcy5kaWRFbnRlcihvcGNvZGUpO1xuICAgIH1cbiAgICBkaWRFbnRlcihvcGNvZGUpIHtcbiAgICAgICAgdGhpcy51cGRhdGVXaXRoKG9wY29kZSk7XG4gICAgICAgIHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5wdXNoKG9wY29kZS5jaGlsZHJlbik7XG4gICAgfVxuICAgIGV4aXQoKSB7XG4gICAgICAgIHRoaXMuZWxlbWVudHMoKS5wb3BCbG9jaygpO1xuICAgICAgICB0aGlzLnVwZGF0aW5nT3Bjb2RlU3RhY2sucG9wKCk7XG4gICAgICAgIGxldCBwYXJlbnQgPSB0aGlzLnVwZGF0aW5nKCkudGFpbCgpO1xuICAgICAgICBwYXJlbnQuZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKCk7XG4gICAgfVxuICAgIGV4aXRMaXN0KCkge1xuICAgICAgICB0aGlzLmV4aXQoKTtcbiAgICAgICAgdGhpcy5saXN0QmxvY2tTdGFjay5wb3AoKTtcbiAgICB9XG4gICAgdXBkYXRlV2l0aChvcGNvZGUpIHtcbiAgICAgICAgdGhpcy51cGRhdGluZygpLmFwcGVuZChvcGNvZGUpO1xuICAgIH1cbiAgICBsaXN0QmxvY2soKSB7XG4gICAgICAgIHJldHVybiBleHBlY3QodGhpcy5saXN0QmxvY2tTdGFjay5jdXJyZW50LCAnZXhwZWN0ZWQgYSBsaXN0IGJsb2NrJyk7XG4gICAgfVxuICAgIHVwZGF0aW5nKCkge1xuICAgICAgICByZXR1cm4gZXhwZWN0KHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5jdXJyZW50LCAnZXhwZWN0ZWQgdXBkYXRpbmcgb3Bjb2RlIG9uIHRoZSB1cGRhdGluZyBvcGNvZGUgc3RhY2snKTtcbiAgICB9XG4gICAgZWxlbWVudHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRTdGFjaztcbiAgICB9XG4gICAgc2NvcGUoKSB7XG4gICAgICAgIHJldHVybiBleHBlY3QodGhpcy5zY29wZVN0YWNrLmN1cnJlbnQsICdleHBlY3RlZCBzY29wZSBvbiB0aGUgc2NvcGUgc3RhY2snKTtcbiAgICB9XG4gICAgZHluYW1pY1Njb3BlKCkge1xuICAgICAgICByZXR1cm4gZXhwZWN0KHRoaXMuZHluYW1pY1Njb3BlU3RhY2suY3VycmVudCwgJ2V4cGVjdGVkIGR5bmFtaWMgc2NvcGUgb24gdGhlIGR5bmFtaWMgc2NvcGUgc3RhY2snKTtcbiAgICB9XG4gICAgcHVzaENoaWxkU2NvcGUoKSB7XG4gICAgICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKHRoaXMuc2NvcGUoKS5jaGlsZCgpKTtcbiAgICB9XG4gICAgcHVzaENhbGxlclNjb3BlKGNoaWxkU2NvcGUgPSBmYWxzZSkge1xuICAgICAgICBsZXQgY2FsbGVyU2NvcGUgPSBleHBlY3QodGhpcy5zY29wZSgpLmdldENhbGxlclNjb3BlKCksICdwdXNoQ2FsbGVyU2NvcGUgaXMgY2FsbGVkIHdoZW4gYSBjYWxsZXIgc2NvcGUgaXMgcHJlc2VudCcpO1xuICAgICAgICB0aGlzLnNjb3BlU3RhY2sucHVzaChjaGlsZFNjb3BlID8gY2FsbGVyU2NvcGUuY2hpbGQoKSA6IGNhbGxlclNjb3BlKTtcbiAgICB9XG4gICAgcHVzaER5bmFtaWNTY29wZSgpIHtcbiAgICAgICAgbGV0IGNoaWxkID0gdGhpcy5keW5hbWljU2NvcGUoKS5jaGlsZCgpO1xuICAgICAgICB0aGlzLmR5bmFtaWNTY29wZVN0YWNrLnB1c2goY2hpbGQpO1xuICAgICAgICByZXR1cm4gY2hpbGQ7XG4gICAgfVxuICAgIHB1c2hSb290U2NvcGUoc2l6ZSwgYmluZENhbGxlcikge1xuICAgICAgICBsZXQgc2NvcGUgPSBTY29wZS5zaXplZChzaXplKTtcbiAgICAgICAgaWYgKGJpbmRDYWxsZXIpIHNjb3BlLmJpbmRDYWxsZXJTY29wZSh0aGlzLnNjb3BlKCkpO1xuICAgICAgICB0aGlzLnNjb3BlU3RhY2sucHVzaChzY29wZSk7XG4gICAgICAgIHJldHVybiBzY29wZTtcbiAgICB9XG4gICAgcG9wU2NvcGUoKSB7XG4gICAgICAgIHRoaXMuc2NvcGVTdGFjay5wb3AoKTtcbiAgICB9XG4gICAgcG9wRHluYW1pY1Njb3BlKCkge1xuICAgICAgICB0aGlzLmR5bmFtaWNTY29wZVN0YWNrLnBvcCgpO1xuICAgIH1cbiAgICBuZXdEZXN0cm95YWJsZShkKSB7XG4gICAgICAgIHRoaXMuZWxlbWVudHMoKS5uZXdEZXN0cm95YWJsZShkKTtcbiAgICB9XG4gICAgLy8vIFNDT1BFIEhFTFBFUlNcbiAgICBnZXRTZWxmKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zY29wZSgpLmdldFNlbGYoKTtcbiAgICB9XG4gICAgcmVmZXJlbmNlRm9yU3ltYm9sKHN5bWJvbCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zY29wZSgpLmdldFN5bWJvbChzeW1ib2wpO1xuICAgIH1cbiAgICAvLy8gRVhFQ1VUSU9OXG4gICAgZXhlY3V0ZShzdGFydCwgaW5pdGlhbGl6ZSkge1xuICAgICAgICB0aGlzLnBjID0gc3RhcnQ7XG4gICAgICAgIGlmIChpbml0aWFsaXplKSBpbml0aWFsaXplKHRoaXMpO1xuICAgICAgICBsZXQgcmVzdWx0O1xuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy5uZXh0KCk7XG4gICAgICAgICAgICBpZiAocmVzdWx0LmRvbmUpIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQudmFsdWU7XG4gICAgfVxuICAgIG5leHQoKSB7XG4gICAgICAgIGxldCB7IGVudiwgdXBkYXRpbmdPcGNvZGVTdGFjaywgZWxlbWVudFN0YWNrIH0gPSB0aGlzO1xuICAgICAgICBsZXQgb3Bjb2RlID0gdGhpcy5uZXh0U3RhdGVtZW50KGVudik7XG4gICAgICAgIGxldCByZXN1bHQ7XG4gICAgICAgIGlmIChvcGNvZGUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIEFQUEVORF9PUENPREVTLmV2YWx1YXRlKHRoaXMsIG9wY29kZSwgb3Bjb2RlLnR5cGUpO1xuICAgICAgICAgICAgcmVzdWx0ID0geyBkb25lOiBmYWxzZSwgdmFsdWU6IG51bGwgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgICAgICBkb25lOiB0cnVlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBuZXcgUmVuZGVyUmVzdWx0KGVudiwgZXhwZWN0KHVwZGF0aW5nT3Bjb2RlU3RhY2sucG9wKCksICd0aGVyZSBzaG91bGQgYmUgYSBmaW5hbCB1cGRhdGluZyBvcGNvZGUgc3RhY2snKSwgZWxlbWVudFN0YWNrLnBvcEJsb2NrKCkpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIG5leHRTdGF0ZW1lbnQoZW52KSB7XG4gICAgICAgIGxldCB7IHBjIH0gPSB0aGlzO1xuICAgICAgICBpZiAocGMgPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgcHJvZ3JhbSA9IGVudi5wcm9ncmFtO1xuICAgICAgICB0aGlzLnBjICs9IDQ7XG4gICAgICAgIHJldHVybiBwcm9ncmFtLm9wY29kZShwYyk7XG4gICAgfVxuICAgIGV2YWx1YXRlT3Bjb2RlKG9wY29kZSkge1xuICAgICAgICBBUFBFTkRfT1BDT0RFUy5ldmFsdWF0ZSh0aGlzLCBvcGNvZGUsIG9wY29kZS50eXBlKTtcbiAgICB9XG4gICAgYmluZER5bmFtaWNTY29wZShuYW1lcykge1xuICAgICAgICBsZXQgc2NvcGUgPSB0aGlzLmR5bmFtaWNTY29wZSgpO1xuICAgICAgICBmb3IgKGxldCBpID0gbmFtZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGxldCBuYW1lID0gdGhpcy5jb25zdGFudHMuZ2V0U3RyaW5nKG5hbWVzW2ldKTtcbiAgICAgICAgICAgIHNjb3BlLnNldChuYW1lLCB0aGlzLnN0YWNrLnBvcCgpKTtcbiAgICAgICAgfVxuICAgIH1cbn0iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi92bS9hcHBlbmQuanMiXSwibmFtZXMiOlsiUmVnaXN0ZXIiLCJTY29wZSIsIlN0YWNrIiwiTGlua2VkTGlzdCIsIkxpc3RTbGljZSIsImNvbWJpbmVTbGljZSIsIkxhYmVsT3Bjb2RlIiwiSnVtcElmTm90TW9kaWZpZWRPcGNvZGUiLCJEaWRNb2RpZnlPcGNvZGUiLCJMaXN0QmxvY2tPcGNvZGUiLCJUcnlPcGNvZGUiLCJSZW5kZXJSZXN1bHQiLCJBUFBFTkRfT1BDT0RFUyIsIkV2YWx1YXRpb25TdGFjayIsInN0YWNrIiwiZnAiLCJzcCIsIk9iamVjdCIsInNlYWwiLCJlbXB0eSIsInJlc3RvcmUiLCJzbmFwc2hvdCIsInNsaWNlIiwibGVuZ3RoIiwiaXNFbXB0eSIsInB1c2giLCJ2YWx1ZSIsImR1cCIsInBvc2l0aW9uIiwicG9wIiwibiIsInRvcCIsInBlZWsiLCJmcm9tQmFzZSIsIm9mZnNldCIsImZyb21Ub3AiLCJjYXB0dXJlIiwiaXRlbXMiLCJlbmQiLCJzdGFydCIsInRvQXJyYXkiLCJWTSIsImVudiIsInNjb3BlIiwiZHluYW1pY1Njb3BlIiwiZWxlbWVudFN0YWNrIiwiZHluYW1pY1Njb3BlU3RhY2siLCJzY29wZVN0YWNrIiwidXBkYXRpbmdPcGNvZGVTdGFjayIsImNhY2hlR3JvdXBzIiwibGlzdEJsb2NrU3RhY2siLCJwYyIsInJhIiwiczAiLCJzMSIsInQwIiwidDEiLCJjb25zdGFudHMiLCJmZXRjaCIsInJlZ2lzdGVyIiwibG9hZCIsImZldGNoVmFsdWUiLCJsb2FkVmFsdWUiLCJwdXNoRnJhbWUiLCJwb3BGcmFtZSIsImdvdG8iLCJjYWxsIiwicmV0dXJuVG8iLCJyZXR1cm4iLCJpbml0aWFsIiwic2VsZiIsInByb2dyYW0iLCJyb290Iiwic3ltYm9sVGFibGUiLCJzeW1ib2xzIiwidm0iLCJhcmdzIiwiYmVnaW5DYWNoZUdyb3VwIiwidXBkYXRpbmciLCJ0YWlsIiwiY29tbWl0Q2FjaGVHcm91cCIsIkVORCIsIm9wY29kZXMiLCJtYXJrZXIiLCJoZWFkIiwibmV4dE5vZGUiLCJ0YWciLCJndWFyZCIsImluc2VydEJlZm9yZSIsImFwcGVuZCIsImVudGVyIiwic3RhdGUiLCJ0cmFja2VyIiwiZWxlbWVudHMiLCJwdXNoVXBkYXRhYmxlQmxvY2siLCJ0cnlPcGNvZGUiLCJkaWRFbnRlciIsIml0ZXJhdGUiLCJtZW1vIiwiZW50ZXJJdGVtIiwia2V5Iiwib3Bjb2RlIiwibGlzdEJsb2NrIiwibWFwIiwiZW50ZXJMaXN0IiwicHVzaEJsb2NrTGlzdCIsImFydGlmYWN0cyIsInVwZGF0ZVdpdGgiLCJjaGlsZHJlbiIsImV4aXQiLCJwb3BCbG9jayIsInBhcmVudCIsImRpZEluaXRpYWxpemVDaGlsZHJlbiIsImV4aXRMaXN0IiwiY3VycmVudCIsInB1c2hDaGlsZFNjb3BlIiwiY2hpbGQiLCJwdXNoQ2FsbGVyU2NvcGUiLCJjaGlsZFNjb3BlIiwiY2FsbGVyU2NvcGUiLCJnZXRDYWxsZXJTY29wZSIsInB1c2hEeW5hbWljU2NvcGUiLCJwdXNoUm9vdFNjb3BlIiwic2l6ZSIsImJpbmRDYWxsZXIiLCJzaXplZCIsImJpbmRDYWxsZXJTY29wZSIsInBvcFNjb3BlIiwicG9wRHluYW1pY1Njb3BlIiwibmV3RGVzdHJveWFibGUiLCJkIiwiZ2V0U2VsZiIsInJlZmVyZW5jZUZvclN5bWJvbCIsInN5bWJvbCIsImdldFN5bWJvbCIsImV4ZWN1dGUiLCJpbml0aWFsaXplIiwicmVzdWx0IiwibmV4dCIsImRvbmUiLCJuZXh0U3RhdGVtZW50IiwiZXZhbHVhdGUiLCJ0eXBlIiwiZXZhbHVhdGVPcGNvZGUiLCJiaW5kRHluYW1pY1Njb3BlIiwibmFtZXMiLCJpIiwibmFtZSIsImdldFN0cmluZyIsInNldCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLEFBQVMsQUFBZ0I7O0FBQ3pCLEFBQVMsQUFBYTs7QUFDdEIsQUFBUyxBQUFPLEFBQVksQUFBeUI7O0FBQ3JELEFBQVMsQUFBb0I7O0FBQzdCLEFBQVMsQUFBYSxBQUF5QixBQUF1Qjs7QUFDdEUsQUFBUyxBQUFpQixBQUFpQjs7QUFDM0MsQUFBTyxBQUFrQixBQUN6QixBQUFTLEFBQXNCLEFBQy9COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUEsQUFBYSx3REFDVDs2QkFBQSxBQUFZLE9BQVosQUFBbUIsSUFBbkIsQUFBdUIsSUFBSTs4QkFDdkI7O2FBQUEsQUFBSyxRQUFMLEFBQWEsQUFDYjthQUFBLEFBQUssS0FBTCxBQUFVLEFBQ1Y7YUFBQSxBQUFLLEtBQUwsQUFBVSxBQUNWO2VBQUEsQUFBTyxLQUFQLEFBQVksQUFDZjtBQU5MOztvQkFBQSxBQU9XLHlCQUFRLEFBQ1g7ZUFBTyxJQUFBLEFBQUksS0FBSixBQUFTLElBQVQsQUFBYSxHQUFHLENBQXZCLEFBQU8sQUFBaUIsQUFDM0I7QUFUTDs7b0JBQUEsQUFVVywyQkFWWCxBQVVtQixVQUFVLEFBQ3JCO2VBQU8sSUFBQSxBQUFJLEtBQUssU0FBVCxBQUFTLEFBQVMsU0FBbEIsQUFBMkIsR0FBRyxTQUFBLEFBQVMsU0FBOUMsQUFBTyxBQUFnRCxBQUMxRDtBQVpMOzs4QkFBQSxBQWFJLDZCQUFVLEFBQ047ZUFBTyxLQUFBLEFBQUssT0FBTyxDQUFuQixBQUFvQixBQUN2QjtBQWZMOzs4QkFBQSxBQWdCSSxxQkFoQkosQUFnQlMsT0FBTyxBQUNSO2FBQUEsQUFBSyxNQUFNLEVBQUUsS0FBYixBQUFrQixNQUFsQixBQUF3QixBQUMzQjtBQWxCTDs7OEJBQUEsQUFtQkkscUJBQXdCO1lBQXBCLEFBQW9CLCtFQUFULEtBQUssQUFBSSxBQUNwQjs7YUFBQSxBQUFLLEtBQUssS0FBQSxBQUFLLE1BQWYsQUFBVSxBQUFXLEFBQ3hCO0FBckJMOzs4QkFBQSxBQXNCSSxxQkFBVztZQUFQLEFBQU8sd0VBQUgsQUFBRyxBQUNQOztZQUFJLE1BQU0sS0FBQSxBQUFLLE1BQU0sS0FBckIsQUFBVSxBQUFnQixBQUMxQjthQUFBLEFBQUssTUFBTCxBQUFXLEFBQ1g7ZUFBQSxBQUFPLEFBQ1Y7QUExQkw7OzhCQUFBLEFBMkJJLHVCQUFPLEFBQ0g7ZUFBTyxLQUFBLEFBQUssTUFBTSxLQUFsQixBQUFPLEFBQWdCLEFBQzFCO0FBN0JMOzs4QkFBQSxBQThCSSw2QkE5QkosQUE4QmEsUUFBUSxBQUNiO2VBQU8sS0FBQSxBQUFLLE1BQU0sS0FBQSxBQUFLLEtBQXZCLEFBQU8sQUFBcUIsQUFDL0I7QUFoQ0w7OzhCQUFBLEFBaUNJLDJCQWpDSixBQWlDWSxRQUFRLEFBQ1o7ZUFBTyxLQUFBLEFBQUssTUFBTSxLQUFBLEFBQUssS0FBdkIsQUFBTyxBQUFxQixBQUMvQjtBQW5DTDs7OEJBQUEsQUFvQ0ksMkJBcENKLEFBb0NZLE9BQU8sQUFDWDtZQUFJLE1BQU0sS0FBQSxBQUFLLEtBQWYsQUFBb0IsQUFDcEI7WUFBSSxRQUFRLE1BQVosQUFBa0IsQUFDbEI7ZUFBTyxLQUFBLEFBQUssTUFBTCxBQUFXLE1BQVgsQUFBaUIsT0FBeEIsQUFBTyxBQUF3QixBQUNsQztBQXhDTDs7OEJBQUEsQUF5Q0ksNkJBQVUsQUFDTjtlQUFPLEtBQUEsQUFBSyxNQUFMLEFBQVcsTUFBTSxLQUFqQixBQUFzQixJQUFJLEtBQUEsQUFBSyxLQUF0QyxBQUFPLEFBQW9DLEFBQzlDO0FBM0NMOztXQUFBOzs7SUE2Q3FCLEEsaUJBQ2pCO2dCQUFBLEFBQVksS0FBWixBQUFpQixPQUFqQixBQUF3QixjQUF4QixBQUFzQyxjQUFjOzhCQUNoRDs7YUFBQSxBQUFLLE1BQUwsQUFBVyxBQUNYO2FBQUEsQUFBSyxlQUFMLEFBQW9CLEFBQ3BCO2FBQUEsQUFBSyxvQkFBTCxBQUF5QixBQUFJLEFBQzdCO2FBQUEsQUFBSyxhQUFMLEFBQWtCLEFBQUksQUFDdEI7YUFBQSxBQUFLLHNCQUFMLEFBQTJCLEFBQUksQUFDL0I7YUFBQSxBQUFLLGNBQUwsQUFBbUIsQUFBSSxBQUN2QjthQUFBLEFBQUssaUJBQUwsQUFBc0IsQUFBSSxBQUMxQjthQUFBLEFBQUssUUFBUSxnQkFBYixBQUFhLEFBQWdCLEFBQzdCO0FBQ0E7YUFBQSxBQUFLLEtBQUssQ0FBVixBQUFXLEFBQ1g7YUFBQSxBQUFLLEtBQUssQ0FBVixBQUFXLEFBQ1g7YUFBQSxBQUFLLEtBQUwsQUFBVSxBQUNWO2FBQUEsQUFBSyxLQUFMLEFBQVUsQUFDVjthQUFBLEFBQUssS0FBTCxBQUFVLEFBQ1Y7YUFBQSxBQUFLLEtBQUwsQUFBVSxBQUNWO2FBQUEsQUFBSyxNQUFMLEFBQVcsQUFDWDthQUFBLEFBQUssWUFBWSxJQUFqQixBQUFxQixBQUNyQjthQUFBLEFBQUssZUFBTCxBQUFvQixBQUNwQjthQUFBLEFBQUssV0FBTCxBQUFnQixLQUFoQixBQUFxQixBQUNyQjthQUFBLEFBQUssa0JBQUwsQUFBdUIsS0FBdkIsQUFBNEIsQUFDL0I7QUFhRDs7O2lCLEFBQ0EsdUIsQUFBTSxVQUFVLEFBQ1o7YUFBQSxBQUFLLE1BQUwsQUFBVyxLQUFLLEtBQUssa0JBQXJCLEFBQWdCLEFBQUssQUFBUyxBQUNqQztBQUNELEE7Ozs7aUIsQUFDQSxxQixBQUFLLFVBQVUsQUFDWDthQUFLLGtCQUFMLEFBQUssQUFBUyxhQUFhLEtBQUEsQUFBSyxNQUFoQyxBQUEyQixBQUFXLEFBQ3pDO0EsQUFDRDs7OztpQixBQUNBLGlDLEFBQVcsVUFBVSxBQUNqQjtlQUFPLEtBQUssa0JBQVosQUFBTyxBQUFLLEFBQVMsQUFDeEI7QSxBQUNEOzs7O2lCQUNBLEEsK0IsQUFBVSxVQUFVLEEsT0FBTyxBQUN2QjthQUFLLGtCQUFMLEFBQUssQUFBUyxhQUFkLEFBQTJCLEFBQzlCO0FBQ0QsQTs7OztpQkFDQSxBLGlDQUFZLEFBQ1I7YUFBQSxBQUFLLE1BQUwsQUFBVyxLQUFLLEtBQWhCLEFBQXFCLEFBQ3JCO2FBQUEsQUFBSyxNQUFMLEFBQVcsS0FBSyxLQUFoQixBQUFxQixBQUNyQjthQUFBLEFBQUssS0FBSyxLQUFBLEFBQUssS0FBZixBQUFvQixBQUNwQjtBQUNIO0EsQUFDRDs7OztpQixBQUNBLCtCQUFXLEFBQ1A7YUFBQSxBQUFLLEtBQUssS0FBQSxBQUFLLEtBQWYsQUFBb0IsQUFDcEI7YUFBQSxBQUFLLEtBQUssS0FBQSxBQUFLLE1BQUwsQUFBVyxTQUFyQixBQUFVLEFBQW9CLEFBQzlCO2FBQUEsQUFBSyxLQUFLLEtBQUEsQUFBSyxNQUFMLEFBQVcsU0FBUyxDQUE5QixBQUFVLEFBQXFCLEFBQ2xDO0FBQ0QsQTs7OztpQkFDQSxBLHFCLEFBQUssSUFBSSxBQUNMO2FBQUEsQUFBSyxLQUFMLEFBQVUsQUFDYjtBLEFBQ0Q7Ozs7aUIsQUFDQSxxQkFBSyxBLElBQUksQUFDTDthQUFBLEFBQUssS0FBSyxLQUFWLEFBQWUsQUFDZjthQUFBLEFBQUssS0FBTCxBQUFVLEFBQ2I7QSxBQUNEOzs7O2lCLEFBQ0EsNkIsQUFBUyxJQUFJLEFBQ1Q7YUFBQSxBQUFLLEtBQUwsQUFBVSxBQUNiO0FBQ0QsQTs7OztpQixBQUNBLDRCQUFTLEFBQ0w7YUFBQSxBQUFLLEtBQUssS0FBVixBQUFlLEFBQ2xCO0E7O08sQUFDTSwyQixBQUFRLEssQUFBSyxNQUFNLEEsY0FBYyxBLGMsQUFBYyxTQUFTLEFBQzNEO1lBQUksUUFBUSxtQkFBQSxBQUFNLEtBQU4sQUFBVyxNQUFNLFFBQUEsQUFBUSxZQUFSLEFBQW9CLFFBQWpELEFBQVksQUFBNkMsQUFDekQ7WUFBSSxLQUFLLElBQUEsQUFBSSxHQUFKLEFBQU8sS0FBUCxBQUFZLE9BQVosQUFBbUIsY0FBNUIsQUFBUyxBQUFpQyxBQUMxQztXQUFBLEFBQUcsS0FBSyxRQUFSLEFBQWdCLEFBQ2hCO1dBQUEsQUFBRyxvQkFBSCxBQUF1QixLQUF2QixBQUE0QixBQUFJLEFBQ2hDO2VBQUEsQUFBTyxBQUNWO0E7O2lCQUNELEEsMkIsQUFBUSxNQUFNLEFBQ1Y7O2lCQUNTLEtBREYsQUFDTyxBQUNWO21CQUFPLEtBRkosQUFFSSxBQUFLLEFBQ1o7MEJBQWMsS0FIWCxBQUdXLEFBQUssQUFDbkI7bUJBQU8sS0FBQSxBQUFLLE1BQUwsQUFBVyxRQUp0QixBQUFPLEFBSUksQUFBbUIsQUFFakM7QUFOVSxBQUNIO0E7O2lCLEFBTVIsNkNBQWtCLEFBQ2Q7YUFBQSxBQUFLLFlBQUwsQUFBaUIsS0FBSyxLQUFBLEFBQUssV0FBM0IsQUFBc0IsQUFBZ0IsQUFDekM7QTs7aUJBQ0QsQSwrQ0FBbUIsQUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtZQUFJLE1BQU0sQUFBSSxvQkFBZCxBQUFVLEFBQWdCLEFBQzFCO1lBQUksVUFBVSxLQUFkLEFBQWMsQUFBSyxBQUNuQjtZQUFJLFNBQVMsS0FBQSxBQUFLLFlBQWxCLEFBQWEsQUFBaUIsQUFDOUI7WUFBSSxPQUFPLFNBQVMsUUFBQSxBQUFRLFNBQWpCLEFBQVMsQUFBaUIsVUFBVSxRQUEvQyxBQUErQyxBQUFRLEFBQ3ZEO1lBQUksT0FBTyxRQUFYLEFBQVcsQUFBUSxBQUNuQjtZQUFJLE1BQU0sNkJBQWEsQUFBSSxvQkFBSixBQUFjLE1BQXJDLEFBQVUsQUFBYSxBQUFvQixBQUMzQztZQUFJLFFBQVEsQUFBSSxnQ0FBSixBQUE0QixLQUF4QyxBQUFZLEFBQWlDLEFBQzdDO2dCQUFBLEFBQVEsYUFBUixBQUFxQixPQUFyQixBQUE0QixBQUM1QjtnQkFBQSxBQUFRLE9BQU8sQUFBSSx3QkFBbkIsQUFBZSxBQUFvQixBQUNuQztnQkFBQSxBQUFRLE9BQVIsQUFBZSxBQUNsQjtBOztpQixBQUNELHVCQUFNLEEsTUFBTSxBQUNSO1lBQUksV0FBSixBQUFlLEFBQUksQUFDbkI7WUFBSSxRQUFRLEtBQUEsQUFBSyxRQUFqQixBQUFZLEFBQWEsQUFDekI7WUFBSSxVQUFVLEtBQUEsQUFBSyxXQUFuQixBQUFjLEFBQWdCLEFBQzlCO1lBQUksWUFBWSxBQUFJLHNCQUFVLEtBQWQsQUFBbUIsSUFBbkIsQUFBdUIsT0FBdkIsQUFBOEIsU0FBOUMsQUFBZ0IsQUFBdUMsQUFDdkQ7YUFBQSxBQUFLLFNBQUwsQUFBYyxBQUNqQjtBOztpQixBQUNELDJCQUFRLEEsTSxBQUFNLE9BQU8sQUFDakI7WUFBSSxRQUFRLEtBQVosQUFBaUIsQUFDakI7Y0FBQSxBQUFNLEtBQU4sQUFBVyxBQUNYO2NBQUEsQUFBTSxLQUFOLEFBQVcsQUFDWDtZQUFJLFFBQVEsS0FBQSxBQUFLLFFBQWpCLEFBQVksQUFBYSxBQUN6QjtZQUFJLFVBQVUsS0FBQSxBQUFLLFdBQW5CLEFBQWMsQUFBZ0IsQUFDOUI7QUFDQTtBQUNBO0FBQ0E7ZUFBTyxBQUFJLHNCQUFVLEtBQWQsQUFBbUIsSUFBbkIsQUFBdUIsT0FBdkIsQUFBOEIsU0FBckMsQUFBTyxBQUF1QyxBQUFJLEFBQ3JEO0E7O2lCQUNELEEsK0IsQUFBVSxLQUFLLEEsUUFBUSxBQUNuQjthQUFBLEFBQUssWUFBTCxBQUFpQixJQUFqQixBQUFxQixPQUFyQixBQUE0QixBQUM1QjthQUFBLEFBQUssU0FBTCxBQUFjLEFBQ2pCO0E7O2lCLEFBQ0QsK0JBQVUsQSxPQUFPLEFBQ2I7WUFBSSxXQUFKLEFBQWUsQUFBSSxBQUNuQjtZQUFJLFFBQVEsS0FBQSxBQUFLLFFBQWpCLEFBQVksQUFBYSxBQUN6QjtZQUFJLFVBQVUsS0FBQSxBQUFLLFdBQUwsQUFBZ0IsY0FBOUIsQUFBYyxBQUE4QixBQUM1QztZQUFJLFlBQVksS0FBQSxBQUFLLE1BQUwsQUFBVyxPQUEzQixBQUFrQyxBQUNsQztZQUFJLFNBQVMsQUFBSSw0QkFBSixBQUFvQixPQUFwQixBQUEyQixPQUEzQixBQUFrQyxTQUFsQyxBQUEyQyxVQUF4RCxBQUFhLEFBQXFELEFBQ2xFO2FBQUEsQUFBSyxlQUFMLEFBQW9CLEtBQXBCLEFBQXlCLEFBQ3pCO2FBQUEsQUFBSyxTQUFMLEFBQWMsQUFDakI7QTs7aUJBQ0QsQSw2QixBQUFTLFFBQVEsQUFDYjthQUFBLEFBQUssV0FBTCxBQUFnQixBQUNoQjthQUFBLEFBQUssb0JBQUwsQUFBeUIsS0FBSyxPQUE5QixBQUFxQyxBQUN4QztBOztpQkFDRCxBLHVCQUFPLEFBQ0g7YUFBQSxBQUFLLFdBQUwsQUFBZ0IsQUFDaEI7YUFBQSxBQUFLLG9CQUFMLEFBQXlCLEFBQ3pCO1lBQUksU0FBUyxLQUFBLEFBQUssV0FBbEIsQUFBYSxBQUFnQixBQUM3QjtlQUFBLEFBQU8sQUFDVjtBOztpQkFDRCxBLCtCQUFXLEFBQ1A7YUFBQSxBQUFLLEFBQ0w7YUFBQSxBQUFLLGVBQUwsQUFBb0IsQUFDdkI7QTs7aUJBQ0QsQSxpQyxBQUFXLFFBQVEsQUFDZjthQUFBLEFBQUssV0FBTCxBQUFnQixPQUFoQixBQUF1QixBQUMxQjtBOztpQkFDRCxBLGlDQUFZLEFBQ1I7ZUFBYyxLQUFBLEFBQUssZUFBbkIsQUFBa0MsQUFDckM7QTs7aUIsQUFDRCwrQkFBVyxBQUNQO2VBQWMsS0FBQSxBQUFLLG9CQUFuQixBQUF1QyxBQUMxQztBOztpQixBQUNELCtCQUFXLEFBQ1A7ZUFBTyxLQUFQLEFBQVksQUFDZjtBOztpQkFDRCxBLHlCQUFRLEFBQ0o7ZUFBYyxLQUFBLEFBQUssV0FBbkIsQUFBOEIsQUFDakM7QTs7aUIsQUFDRCx1Q0FBZSxBQUNYO2VBQWMsS0FBQSxBQUFLLGtCQUFuQixBQUFxQyxBQUN4QztBOztpQkFDRCxBLDJDQUFpQixBQUNiO2FBQUEsQUFBSyxXQUFMLEFBQWdCLEtBQUssS0FBQSxBQUFLLFFBQTFCLEFBQXFCLEFBQWEsQUFDckM7QTs7aUJBQ0QsQSw2Q0FBb0M7WUFBcEIsQUFBb0IsaUZBQVAsQUFBTyxBQUNoQzs7WUFBSSxjQUFxQixLQUFBLEFBQUssUUFBOUIsQUFBeUIsQUFBYSxBQUN0QzthQUFBLEFBQUssV0FBTCxBQUFnQixLQUFLLGFBQWEsWUFBYixBQUFhLEFBQVksVUFBOUMsQUFBd0QsQUFDM0Q7QTs7aUJBQ0QsQSwrQ0FBbUIsQUFDZjtZQUFJLFFBQVEsS0FBQSxBQUFLLGVBQWpCLEFBQVksQUFBb0IsQUFDaEM7YUFBQSxBQUFLLGtCQUFMLEFBQXVCLEtBQXZCLEFBQTRCLEFBQzVCO2VBQUEsQUFBTyxBQUNWO0E7O2lCLEFBQ0QsdUMsQUFBYyxNQUFNLEEsWUFBWSxBQUM1QjtZQUFJLFFBQVEsbUJBQUEsQUFBTSxNQUFsQixBQUFZLEFBQVksQUFDeEI7WUFBQSxBQUFJLFlBQVksTUFBQSxBQUFNLGdCQUFnQixLQUF0QixBQUFzQixBQUFLLEFBQzNDO2FBQUEsQUFBSyxXQUFMLEFBQWdCLEtBQWhCLEFBQXFCLEFBQ3JCO2VBQUEsQUFBTyxBQUNWO0E7O2lCLEFBQ0QsK0JBQVcsQUFDUDthQUFBLEFBQUssV0FBTCxBQUFnQixBQUNuQjtBOztpQkFDRCxBLDZDQUFrQixBQUNkO2FBQUEsQUFBSyxrQkFBTCxBQUF1QixBQUMxQjtBOztpQkFDRCxBLHlDLEFBQWUsR0FBRyxBQUNkO2FBQUEsQUFBSyxXQUFMLEFBQWdCLGVBQWhCLEFBQStCLEFBQ2xDO0EsQUFDRDs7OztpQixBQUNBLDZCQUFVLEFBQ047ZUFBTyxLQUFBLEFBQUssUUFBWixBQUFPLEFBQWEsQUFDdkI7QTs7aUIsQUFDRCxpRCxBQUFtQixRQUFRLEFBQ3ZCO2VBQU8sS0FBQSxBQUFLLFFBQUwsQUFBYSxVQUFwQixBQUFPLEFBQXVCLEFBQ2pDO0FBQ0QsQTs7OztpQixBQUNBLDJCQUFRLEEsT0FBTyxBLFlBQVksQUFDdkI7YUFBQSxBQUFLLEtBQUwsQUFBVSxBQUNWO1lBQUEsQUFBSSxZQUFZLFdBQUEsQUFBVyxBQUMzQjtZQUFJLGNBQUosQUFDQTtlQUFBLEFBQU8sTUFBTSxBQUNUO3FCQUFTLEtBQVQsQUFBUyxBQUFLLEFBQ2Q7Z0JBQUksT0FBSixBQUFXLE1BQU0sQUFDcEI7QUFDRDtlQUFPLE9BQVAsQUFBYyxBQUNqQjtBOztpQixBQUNELHVCQUFPO1lBQUEsQUFDRyxNQURILEFBQzhDLEtBRDlDLEFBQ0c7WUFESCxBQUNRLHNCQURSLEFBQzhDLEtBRDlDLEFBQ1E7WUFEUixBQUM2QixlQUQ3QixBQUM4QyxLQUQ5QyxBQUM2QixBQUNoQzs7WUFBSSxjQUFKLEFBQ0E7WUFBSSxTQUFTLEtBQUEsQUFBSyxjQUFsQixBQUFhLEFBQW1CLE1BQU0sQUFDbEM7b0NBQUEsQUFBZSxTQUFmLEFBQXdCLE1BQXhCLEFBQThCLFFBQVEsT0FBdEMsQUFBNkMsQUFDN0M7bUJBQU8sRUFBRSxNQUFGLEFBQVEsT0FBTyxPQUF0QixBQUFPLEFBQXNCLEFBQ2hDO0FBQ0Q7O2tCQUFPLEFBQ0csQUFDTjttQkFBTyxBQUFJLDJCQUFKLEFBQWlCLEtBQVksb0JBQTdCLEFBQTZCLEFBQW9CLE9BQXlELGFBRnJILEFBQU8sQUFFSSxBQUEwRyxBQUFhLEFBRXJJO0FBSlUsQUFDSDtBOztpQkFJUixBLHVDQUFjLEEsS0FBSztZQUFBLEFBQ1QsS0FEUyxBQUNGLEtBREUsQUFDVCxBQUNOOztZQUFJLE9BQU8sQ0FBWCxBQUFZLEdBQUcsQUFDWDttQkFBQSxBQUFPLEFBQ1Y7QUFDRDtZQUFJLFVBQVUsSUFBZCxBQUFrQixBQUNsQjthQUFBLEFBQUssTUFBTCxBQUFXLEFBQ1g7ZUFBTyxRQUFBLEFBQVEsT0FBZixBQUFPLEFBQWUsQUFDekI7QTs7aUJBQ0QsQSx5Q0FBZSxBLFFBQVEsQUFDbkI7Z0NBQUEsQUFBZSxTQUFmLEFBQXdCLE1BQXhCLEFBQThCLFFBQVEsT0FBdEMsQUFBNkMsQUFDaEQ7QTs7aUJBQ0QsQSw2QyxBQUFpQixPQUFPLEFBQ3BCO1lBQUksUUFBUSxLQUFaLEFBQVksQUFBSyxBQUNqQjthQUFLLElBQUksSUFBSSxNQUFBLEFBQU0sU0FBbkIsQUFBNEIsR0FBRyxLQUEvQixBQUFvQyxHQUFwQyxBQUF1QyxLQUFLLEFBQ3hDO2dCQUFJLE9BQU8sS0FBQSxBQUFLLFVBQUwsQUFBZSxVQUFVLE1BQXBDLEFBQVcsQUFBeUIsQUFBTSxBQUMxQztrQkFBQSxBQUFNLElBQU4sQUFBVSxNQUFNLEtBQUEsQUFBSyxNQUFyQixBQUFnQixBQUFXLEFBQzlCO0FBQ0o7QTs7Ozt5QkF4T1EsQUFDTDttQkFBTyxLQUFBLEFBQUssTUFBWixBQUFrQixBQUNyQjtBO3VCLEFBQ00sSUFBSSxBQUNQO2lCQUFBLEFBQUssTUFBTCxBQUFXLEtBQVgsQUFBZ0IsQUFDbkI7Ozs7eUJBQ1EsQUFDTDttQkFBTyxLQUFBLEFBQUssTUFBWixBQUFrQixBQUNyQjtBO3VCQUNNLEEsSUFBSSxBQUNQO2lCQUFBLEFBQUssTUFBTCxBQUFXLEtBQVgsQUFBZ0IsQUFDbkI7Ozs7Ozs7a0JBbENnQixBIiwiZmlsZSI6ImxpYi92bS9hcHBlbmQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWdpc3RlciB9IGZyb20gJy4uL29wY29kZXMnO1xuaW1wb3J0IHsgU2NvcGUgfSBmcm9tICcuLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBTdGFjaywgTGlua2VkTGlzdCwgTGlzdFNsaWNlLCBleHBlY3QgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IGNvbWJpbmVTbGljZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBMYWJlbE9wY29kZSwgSnVtcElmTm90TW9kaWZpZWRPcGNvZGUsIERpZE1vZGlmeU9wY29kZSB9IGZyb20gJy4uL2NvbXBpbGVkL29wY29kZXMvdm0nO1xuaW1wb3J0IHsgTGlzdEJsb2NrT3Bjb2RlLCBUcnlPcGNvZGUgfSBmcm9tICcuL3VwZGF0ZSc7XG5pbXBvcnQgUmVuZGVyUmVzdWx0IGZyb20gJy4vcmVuZGVyLXJlc3VsdCc7XG5pbXBvcnQgeyBBUFBFTkRfT1BDT0RFUyB9IGZyb20gJy4uL29wY29kZXMnO1xuZXhwb3J0IGNsYXNzIEV2YWx1YXRpb25TdGFjayB7XG4gICAgY29uc3RydWN0b3Ioc3RhY2ssIGZwLCBzcCkge1xuICAgICAgICB0aGlzLnN0YWNrID0gc3RhY2s7XG4gICAgICAgIHRoaXMuZnAgPSBmcDtcbiAgICAgICAgdGhpcy5zcCA9IHNwO1xuICAgICAgICBPYmplY3Quc2VhbCh0aGlzKTtcbiAgICB9XG4gICAgc3RhdGljIGVtcHR5KCkge1xuICAgICAgICByZXR1cm4gbmV3IHRoaXMoW10sIDAsIC0xKTtcbiAgICB9XG4gICAgc3RhdGljIHJlc3RvcmUoc25hcHNob3QpIHtcbiAgICAgICAgcmV0dXJuIG5ldyB0aGlzKHNuYXBzaG90LnNsaWNlKCksIDAsIHNuYXBzaG90Lmxlbmd0aCAtIDEpO1xuICAgIH1cbiAgICBpc0VtcHR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zcCA9PT0gLTE7XG4gICAgfVxuICAgIHB1c2godmFsdWUpIHtcbiAgICAgICAgdGhpcy5zdGFja1srK3RoaXMuc3BdID0gdmFsdWU7XG4gICAgfVxuICAgIGR1cChwb3NpdGlvbiA9IHRoaXMuc3ApIHtcbiAgICAgICAgdGhpcy5wdXNoKHRoaXMuc3RhY2tbcG9zaXRpb25dKTtcbiAgICB9XG4gICAgcG9wKG4gPSAxKSB7XG4gICAgICAgIGxldCB0b3AgPSB0aGlzLnN0YWNrW3RoaXMuc3BdO1xuICAgICAgICB0aGlzLnNwIC09IG47XG4gICAgICAgIHJldHVybiB0b3A7XG4gICAgfVxuICAgIHBlZWsoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrW3RoaXMuc3BdO1xuICAgIH1cbiAgICBmcm9tQmFzZShvZmZzZXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2tbdGhpcy5mcCAtIG9mZnNldF07XG4gICAgfVxuICAgIGZyb21Ub3Aob2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrW3RoaXMuc3AgLSBvZmZzZXRdO1xuICAgIH1cbiAgICBjYXB0dXJlKGl0ZW1zKSB7XG4gICAgICAgIGxldCBlbmQgPSB0aGlzLnNwICsgMTtcbiAgICAgICAgbGV0IHN0YXJ0ID0gZW5kIC0gaXRlbXM7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICAgIH1cbiAgICB0b0FycmF5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFjay5zbGljZSh0aGlzLmZwLCB0aGlzLnNwICsgMSk7XG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVk0ge1xuICAgIGNvbnN0cnVjdG9yKGVudiwgc2NvcGUsIGR5bmFtaWNTY29wZSwgZWxlbWVudFN0YWNrKSB7XG4gICAgICAgIHRoaXMuZW52ID0gZW52O1xuICAgICAgICB0aGlzLmVsZW1lbnRTdGFjayA9IGVsZW1lbnRTdGFjaztcbiAgICAgICAgdGhpcy5keW5hbWljU2NvcGVTdGFjayA9IG5ldyBTdGFjaygpO1xuICAgICAgICB0aGlzLnNjb3BlU3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgICAgICAgdGhpcy51cGRhdGluZ09wY29kZVN0YWNrID0gbmV3IFN0YWNrKCk7XG4gICAgICAgIHRoaXMuY2FjaGVHcm91cHMgPSBuZXcgU3RhY2soKTtcbiAgICAgICAgdGhpcy5saXN0QmxvY2tTdGFjayA9IG5ldyBTdGFjaygpO1xuICAgICAgICB0aGlzLnN0YWNrID0gRXZhbHVhdGlvblN0YWNrLmVtcHR5KCk7XG4gICAgICAgIC8qKiBSZWdpc3RlcnMgKiovXG4gICAgICAgIHRoaXMucGMgPSAtMTtcbiAgICAgICAgdGhpcy5yYSA9IC0xO1xuICAgICAgICB0aGlzLnMwID0gbnVsbDtcbiAgICAgICAgdGhpcy5zMSA9IG51bGw7XG4gICAgICAgIHRoaXMudDAgPSBudWxsO1xuICAgICAgICB0aGlzLnQxID0gbnVsbDtcbiAgICAgICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgICAgIHRoaXMuY29uc3RhbnRzID0gZW52LmNvbnN0YW50cztcbiAgICAgICAgdGhpcy5lbGVtZW50U3RhY2sgPSBlbGVtZW50U3RhY2s7XG4gICAgICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKHNjb3BlKTtcbiAgICAgICAgdGhpcy5keW5hbWljU2NvcGVTdGFjay5wdXNoKGR5bmFtaWNTY29wZSk7XG4gICAgfVxuICAgIGdldCBmcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2suZnA7XG4gICAgfVxuICAgIHNldCBmcChmcCkge1xuICAgICAgICB0aGlzLnN0YWNrLmZwID0gZnA7XG4gICAgfVxuICAgIGdldCBzcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2suc3A7XG4gICAgfVxuICAgIHNldCBzcChzcCkge1xuICAgICAgICB0aGlzLnN0YWNrLnNwID0gc3A7XG4gICAgfVxuICAgIC8vIEZldGNoIGEgdmFsdWUgZnJvbSBhIHJlZ2lzdGVyIG9udG8gdGhlIHN0YWNrXG4gICAgZmV0Y2gocmVnaXN0ZXIpIHtcbiAgICAgICAgdGhpcy5zdGFjay5wdXNoKHRoaXNbUmVnaXN0ZXJbcmVnaXN0ZXJdXSk7XG4gICAgfVxuICAgIC8vIExvYWQgYSB2YWx1ZSBmcm9tIHRoZSBzdGFjayBpbnRvIGEgcmVnaXN0ZXJcbiAgICBsb2FkKHJlZ2lzdGVyKSB7XG4gICAgICAgIHRoaXNbUmVnaXN0ZXJbcmVnaXN0ZXJdXSA9IHRoaXMuc3RhY2sucG9wKCk7XG4gICAgfVxuICAgIC8vIEZldGNoIGEgdmFsdWUgZnJvbSBhIHJlZ2lzdGVyXG4gICAgZmV0Y2hWYWx1ZShyZWdpc3Rlcikge1xuICAgICAgICByZXR1cm4gdGhpc1tSZWdpc3RlcltyZWdpc3Rlcl1dO1xuICAgIH1cbiAgICAvLyBMb2FkIGEgdmFsdWUgaW50byBhIHJlZ2lzdGVyXG4gICAgbG9hZFZhbHVlKHJlZ2lzdGVyLCB2YWx1ZSkge1xuICAgICAgICB0aGlzW1JlZ2lzdGVyW3JlZ2lzdGVyXV0gPSB2YWx1ZTtcbiAgICB9XG4gICAgLy8gU3RhcnQgYSBuZXcgZnJhbWUgYW5kIHNhdmUgJHJhIGFuZCAkZnAgb24gdGhlIHN0YWNrXG4gICAgcHVzaEZyYW1lKCkge1xuICAgICAgICB0aGlzLnN0YWNrLnB1c2godGhpcy5yYSk7XG4gICAgICAgIHRoaXMuc3RhY2sucHVzaCh0aGlzLmZwKTtcbiAgICAgICAgdGhpcy5mcCA9IHRoaXMuc3AgLSAxO1xuICAgICAgICAvLyB0aGlzLmZwID0gdGhpcy5zcCArIDE7XG4gICAgfVxuICAgIC8vIFJlc3RvcmUgJHJhLCAkc3AgYW5kICRmcFxuICAgIHBvcEZyYW1lKCkge1xuICAgICAgICB0aGlzLnNwID0gdGhpcy5mcCAtIDE7XG4gICAgICAgIHRoaXMucmEgPSB0aGlzLnN0YWNrLmZyb21CYXNlKDApO1xuICAgICAgICB0aGlzLmZwID0gdGhpcy5zdGFjay5mcm9tQmFzZSgtMSk7XG4gICAgfVxuICAgIC8vIEp1bXAgdG8gYW4gYWRkcmVzcyBpbiBgcHJvZ3JhbWBcbiAgICBnb3RvKHBjKSB7XG4gICAgICAgIHRoaXMucGMgPSBwYztcbiAgICB9XG4gICAgLy8gU2F2ZSAkcGMgaW50byAkcmEsIHRoZW4ganVtcCB0byBhIG5ldyBhZGRyZXNzIGluIGBwcm9ncmFtYCAoamFsIGluIE1JUFMpXG4gICAgY2FsbChwYykge1xuICAgICAgICB0aGlzLnJhID0gdGhpcy5wYztcbiAgICAgICAgdGhpcy5wYyA9IHBjO1xuICAgIH1cbiAgICAvLyBQdXQgYSBzcGVjaWZpYyBgcHJvZ3JhbWAgYWRkcmVzcyBpbiAkcmFcbiAgICByZXR1cm5UbyhyYSkge1xuICAgICAgICB0aGlzLnJhID0gcmE7XG4gICAgfVxuICAgIC8vIFJldHVybiB0byB0aGUgYHByb2dyYW1gIGFkZHJlc3Mgc3RvcmVkIGluICRyYVxuICAgIHJldHVybigpIHtcbiAgICAgICAgdGhpcy5wYyA9IHRoaXMucmE7XG4gICAgfVxuICAgIHN0YXRpYyBpbml0aWFsKGVudiwgc2VsZiwgZHluYW1pY1Njb3BlLCBlbGVtZW50U3RhY2ssIHByb2dyYW0pIHtcbiAgICAgICAgbGV0IHNjb3BlID0gU2NvcGUucm9vdChzZWxmLCBwcm9ncmFtLnN5bWJvbFRhYmxlLnN5bWJvbHMubGVuZ3RoKTtcbiAgICAgICAgbGV0IHZtID0gbmV3IFZNKGVudiwgc2NvcGUsIGR5bmFtaWNTY29wZSwgZWxlbWVudFN0YWNrKTtcbiAgICAgICAgdm0ucGMgPSBwcm9ncmFtLnN0YXJ0O1xuICAgICAgICB2bS51cGRhdGluZ09wY29kZVN0YWNrLnB1c2gobmV3IExpbmtlZExpc3QoKSk7XG4gICAgICAgIHJldHVybiB2bTtcbiAgICB9XG4gICAgY2FwdHVyZShhcmdzKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBlbnY6IHRoaXMuZW52LFxuICAgICAgICAgICAgc2NvcGU6IHRoaXMuc2NvcGUoKSxcbiAgICAgICAgICAgIGR5bmFtaWNTY29wZTogdGhpcy5keW5hbWljU2NvcGUoKSxcbiAgICAgICAgICAgIHN0YWNrOiB0aGlzLnN0YWNrLmNhcHR1cmUoYXJncylcbiAgICAgICAgfTtcbiAgICB9XG4gICAgYmVnaW5DYWNoZUdyb3VwKCkge1xuICAgICAgICB0aGlzLmNhY2hlR3JvdXBzLnB1c2godGhpcy51cGRhdGluZygpLnRhaWwoKSk7XG4gICAgfVxuICAgIGNvbW1pdENhY2hlR3JvdXAoKSB7XG4gICAgICAgIC8vICAgICAgICBKdW1wSWZOb3RNb2RpZmllZChFTkQpXG4gICAgICAgIC8vICAgICAgICAoaGVhZClcbiAgICAgICAgLy8gICAgICAgICguLi4uKVxuICAgICAgICAvLyAgICAgICAgKHRhaWwpXG4gICAgICAgIC8vICAgICAgICBEaWRNb2RpZnlcbiAgICAgICAgLy8gRU5EOiAgIE5vb3BcbiAgICAgICAgbGV0IEVORCA9IG5ldyBMYWJlbE9wY29kZShcIkVORFwiKTtcbiAgICAgICAgbGV0IG9wY29kZXMgPSB0aGlzLnVwZGF0aW5nKCk7XG4gICAgICAgIGxldCBtYXJrZXIgPSB0aGlzLmNhY2hlR3JvdXBzLnBvcCgpO1xuICAgICAgICBsZXQgaGVhZCA9IG1hcmtlciA/IG9wY29kZXMubmV4dE5vZGUobWFya2VyKSA6IG9wY29kZXMuaGVhZCgpO1xuICAgICAgICBsZXQgdGFpbCA9IG9wY29kZXMudGFpbCgpO1xuICAgICAgICBsZXQgdGFnID0gY29tYmluZVNsaWNlKG5ldyBMaXN0U2xpY2UoaGVhZCwgdGFpbCkpO1xuICAgICAgICBsZXQgZ3VhcmQgPSBuZXcgSnVtcElmTm90TW9kaWZpZWRPcGNvZGUodGFnLCBFTkQpO1xuICAgICAgICBvcGNvZGVzLmluc2VydEJlZm9yZShndWFyZCwgaGVhZCk7XG4gICAgICAgIG9wY29kZXMuYXBwZW5kKG5ldyBEaWRNb2RpZnlPcGNvZGUoZ3VhcmQpKTtcbiAgICAgICAgb3Bjb2Rlcy5hcHBlbmQoRU5EKTtcbiAgICB9XG4gICAgZW50ZXIoYXJncykge1xuICAgICAgICBsZXQgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdCgpO1xuICAgICAgICBsZXQgc3RhdGUgPSB0aGlzLmNhcHR1cmUoYXJncyk7XG4gICAgICAgIGxldCB0cmFja2VyID0gdGhpcy5lbGVtZW50cygpLnB1c2hVcGRhdGFibGVCbG9jaygpO1xuICAgICAgICBsZXQgdHJ5T3Bjb2RlID0gbmV3IFRyeU9wY29kZSh0aGlzLnBjLCBzdGF0ZSwgdHJhY2tlciwgdXBkYXRpbmcpO1xuICAgICAgICB0aGlzLmRpZEVudGVyKHRyeU9wY29kZSk7XG4gICAgfVxuICAgIGl0ZXJhdGUobWVtbywgdmFsdWUpIHtcbiAgICAgICAgbGV0IHN0YWNrID0gdGhpcy5zdGFjaztcbiAgICAgICAgc3RhY2sucHVzaCh2YWx1ZSk7XG4gICAgICAgIHN0YWNrLnB1c2gobWVtbyk7XG4gICAgICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZSgyKTtcbiAgICAgICAgbGV0IHRyYWNrZXIgPSB0aGlzLmVsZW1lbnRzKCkucHVzaFVwZGF0YWJsZUJsb2NrKCk7XG4gICAgICAgIC8vIGxldCBpcCA9IHRoaXMuaXA7XG4gICAgICAgIC8vIHRoaXMuaXAgPSBlbmQgKyA0O1xuICAgICAgICAvLyB0aGlzLmZyYW1lcy5wdXNoKGlwKTtcbiAgICAgICAgcmV0dXJuIG5ldyBUcnlPcGNvZGUodGhpcy5wYywgc3RhdGUsIHRyYWNrZXIsIG5ldyBMaW5rZWRMaXN0KCkpO1xuICAgIH1cbiAgICBlbnRlckl0ZW0oa2V5LCBvcGNvZGUpIHtcbiAgICAgICAgdGhpcy5saXN0QmxvY2soKS5tYXBba2V5XSA9IG9wY29kZTtcbiAgICAgICAgdGhpcy5kaWRFbnRlcihvcGNvZGUpO1xuICAgIH1cbiAgICBlbnRlckxpc3Qoc3RhcnQpIHtcbiAgICAgICAgbGV0IHVwZGF0aW5nID0gbmV3IExpbmtlZExpc3QoKTtcbiAgICAgICAgbGV0IHN0YXRlID0gdGhpcy5jYXB0dXJlKDApO1xuICAgICAgICBsZXQgdHJhY2tlciA9IHRoaXMuZWxlbWVudHMoKS5wdXNoQmxvY2tMaXN0KHVwZGF0aW5nKTtcbiAgICAgICAgbGV0IGFydGlmYWN0cyA9IHRoaXMuc3RhY2sucGVlaygpLmFydGlmYWN0cztcbiAgICAgICAgbGV0IG9wY29kZSA9IG5ldyBMaXN0QmxvY2tPcGNvZGUoc3RhcnQsIHN0YXRlLCB0cmFja2VyLCB1cGRhdGluZywgYXJ0aWZhY3RzKTtcbiAgICAgICAgdGhpcy5saXN0QmxvY2tTdGFjay5wdXNoKG9wY29kZSk7XG4gICAgICAgIHRoaXMuZGlkRW50ZXIob3Bjb2RlKTtcbiAgICB9XG4gICAgZGlkRW50ZXIob3Bjb2RlKSB7XG4gICAgICAgIHRoaXMudXBkYXRlV2l0aChvcGNvZGUpO1xuICAgICAgICB0aGlzLnVwZGF0aW5nT3Bjb2RlU3RhY2sucHVzaChvcGNvZGUuY2hpbGRyZW4pO1xuICAgIH1cbiAgICBleGl0KCkge1xuICAgICAgICB0aGlzLmVsZW1lbnRzKCkucG9wQmxvY2soKTtcbiAgICAgICAgdGhpcy51cGRhdGluZ09wY29kZVN0YWNrLnBvcCgpO1xuICAgICAgICBsZXQgcGFyZW50ID0gdGhpcy51cGRhdGluZygpLnRhaWwoKTtcbiAgICAgICAgcGFyZW50LmRpZEluaXRpYWxpemVDaGlsZHJlbigpO1xuICAgIH1cbiAgICBleGl0TGlzdCgpIHtcbiAgICAgICAgdGhpcy5leGl0KCk7XG4gICAgICAgIHRoaXMubGlzdEJsb2NrU3RhY2sucG9wKCk7XG4gICAgfVxuICAgIHVwZGF0ZVdpdGgob3Bjb2RlKSB7XG4gICAgICAgIHRoaXMudXBkYXRpbmcoKS5hcHBlbmQob3Bjb2RlKTtcbiAgICB9XG4gICAgbGlzdEJsb2NrKCkge1xuICAgICAgICByZXR1cm4gZXhwZWN0KHRoaXMubGlzdEJsb2NrU3RhY2suY3VycmVudCwgJ2V4cGVjdGVkIGEgbGlzdCBibG9jaycpO1xuICAgIH1cbiAgICB1cGRhdGluZygpIHtcbiAgICAgICAgcmV0dXJuIGV4cGVjdCh0aGlzLnVwZGF0aW5nT3Bjb2RlU3RhY2suY3VycmVudCwgJ2V4cGVjdGVkIHVwZGF0aW5nIG9wY29kZSBvbiB0aGUgdXBkYXRpbmcgb3Bjb2RlIHN0YWNrJyk7XG4gICAgfVxuICAgIGVsZW1lbnRzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50U3RhY2s7XG4gICAgfVxuICAgIHNjb3BlKCkge1xuICAgICAgICByZXR1cm4gZXhwZWN0KHRoaXMuc2NvcGVTdGFjay5jdXJyZW50LCAnZXhwZWN0ZWQgc2NvcGUgb24gdGhlIHNjb3BlIHN0YWNrJyk7XG4gICAgfVxuICAgIGR5bmFtaWNTY29wZSgpIHtcbiAgICAgICAgcmV0dXJuIGV4cGVjdCh0aGlzLmR5bmFtaWNTY29wZVN0YWNrLmN1cnJlbnQsICdleHBlY3RlZCBkeW5hbWljIHNjb3BlIG9uIHRoZSBkeW5hbWljIHNjb3BlIHN0YWNrJyk7XG4gICAgfVxuICAgIHB1c2hDaGlsZFNjb3BlKCkge1xuICAgICAgICB0aGlzLnNjb3BlU3RhY2sucHVzaCh0aGlzLnNjb3BlKCkuY2hpbGQoKSk7XG4gICAgfVxuICAgIHB1c2hDYWxsZXJTY29wZShjaGlsZFNjb3BlID0gZmFsc2UpIHtcbiAgICAgICAgbGV0IGNhbGxlclNjb3BlID0gZXhwZWN0KHRoaXMuc2NvcGUoKS5nZXRDYWxsZXJTY29wZSgpLCAncHVzaENhbGxlclNjb3BlIGlzIGNhbGxlZCB3aGVuIGEgY2FsbGVyIHNjb3BlIGlzIHByZXNlbnQnKTtcbiAgICAgICAgdGhpcy5zY29wZVN0YWNrLnB1c2goY2hpbGRTY29wZSA/IGNhbGxlclNjb3BlLmNoaWxkKCkgOiBjYWxsZXJTY29wZSk7XG4gICAgfVxuICAgIHB1c2hEeW5hbWljU2NvcGUoKSB7XG4gICAgICAgIGxldCBjaGlsZCA9IHRoaXMuZHluYW1pY1Njb3BlKCkuY2hpbGQoKTtcbiAgICAgICAgdGhpcy5keW5hbWljU2NvcGVTdGFjay5wdXNoKGNoaWxkKTtcbiAgICAgICAgcmV0dXJuIGNoaWxkO1xuICAgIH1cbiAgICBwdXNoUm9vdFNjb3BlKHNpemUsIGJpbmRDYWxsZXIpIHtcbiAgICAgICAgbGV0IHNjb3BlID0gU2NvcGUuc2l6ZWQoc2l6ZSk7XG4gICAgICAgIGlmIChiaW5kQ2FsbGVyKSBzY29wZS5iaW5kQ2FsbGVyU2NvcGUodGhpcy5zY29wZSgpKTtcbiAgICAgICAgdGhpcy5zY29wZVN0YWNrLnB1c2goc2NvcGUpO1xuICAgICAgICByZXR1cm4gc2NvcGU7XG4gICAgfVxuICAgIHBvcFNjb3BlKCkge1xuICAgICAgICB0aGlzLnNjb3BlU3RhY2sucG9wKCk7XG4gICAgfVxuICAgIHBvcER5bmFtaWNTY29wZSgpIHtcbiAgICAgICAgdGhpcy5keW5hbWljU2NvcGVTdGFjay5wb3AoKTtcbiAgICB9XG4gICAgbmV3RGVzdHJveWFibGUoZCkge1xuICAgICAgICB0aGlzLmVsZW1lbnRzKCkubmV3RGVzdHJveWFibGUoZCk7XG4gICAgfVxuICAgIC8vLyBTQ09QRSBIRUxQRVJTXG4gICAgZ2V0U2VsZigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NvcGUoKS5nZXRTZWxmKCk7XG4gICAgfVxuICAgIHJlZmVyZW5jZUZvclN5bWJvbChzeW1ib2wpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NvcGUoKS5nZXRTeW1ib2woc3ltYm9sKTtcbiAgICB9XG4gICAgLy8vIEVYRUNVVElPTlxuICAgIGV4ZWN1dGUoc3RhcnQsIGluaXRpYWxpemUpIHtcbiAgICAgICAgdGhpcy5wYyA9IHN0YXJ0O1xuICAgICAgICBpZiAoaW5pdGlhbGl6ZSkgaW5pdGlhbGl6ZSh0aGlzKTtcbiAgICAgICAgbGV0IHJlc3VsdDtcbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMubmV4dCgpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdC5kb25lKSBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0LnZhbHVlO1xuICAgIH1cbiAgICBuZXh0KCkge1xuICAgICAgICBsZXQgeyBlbnYsIHVwZGF0aW5nT3Bjb2RlU3RhY2ssIGVsZW1lbnRTdGFjayB9ID0gdGhpcztcbiAgICAgICAgbGV0IG9wY29kZTtcbiAgICAgICAgaWYgKG9wY29kZSA9IHRoaXMubmV4dFN0YXRlbWVudChlbnYpKSB7XG4gICAgICAgICAgICBBUFBFTkRfT1BDT0RFUy5ldmFsdWF0ZSh0aGlzLCBvcGNvZGUsIG9wY29kZS50eXBlKTtcbiAgICAgICAgICAgIHJldHVybiB7IGRvbmU6IGZhbHNlLCB2YWx1ZTogbnVsbCB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkb25lOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IG5ldyBSZW5kZXJSZXN1bHQoZW52LCBleHBlY3QodXBkYXRpbmdPcGNvZGVTdGFjay5wb3AoKSwgJ3RoZXJlIHNob3VsZCBiZSBhIGZpbmFsIHVwZGF0aW5nIG9wY29kZSBzdGFjaycpLCBlbGVtZW50U3RhY2sucG9wQmxvY2soKSlcbiAgICAgICAgfTtcbiAgICB9XG4gICAgbmV4dFN0YXRlbWVudChlbnYpIHtcbiAgICAgICAgbGV0IHsgcGMgfSA9IHRoaXM7XG4gICAgICAgIGlmIChwYyA9PT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGxldCBwcm9ncmFtID0gZW52LnByb2dyYW07XG4gICAgICAgIHRoaXMucGMgKz0gNDtcbiAgICAgICAgcmV0dXJuIHByb2dyYW0ub3Bjb2RlKHBjKTtcbiAgICB9XG4gICAgZXZhbHVhdGVPcGNvZGUob3Bjb2RlKSB7XG4gICAgICAgIEFQUEVORF9PUENPREVTLmV2YWx1YXRlKHRoaXMsIG9wY29kZSwgb3Bjb2RlLnR5cGUpO1xuICAgIH1cbiAgICBiaW5kRHluYW1pY1Njb3BlKG5hbWVzKSB7XG4gICAgICAgIGxldCBzY29wZSA9IHRoaXMuZHluYW1pY1Njb3BlKCk7XG4gICAgICAgIGZvciAobGV0IGkgPSBuYW1lcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgbGV0IG5hbWUgPSB0aGlzLmNvbnN0YW50cy5nZXRTdHJpbmcobmFtZXNbaV0pO1xuICAgICAgICAgICAgc2NvcGUuc2V0KG5hbWUsIHRoaXMuc3RhY2sucG9wKCkpO1xuICAgICAgICB9XG4gICAgfVxufSJdfQ==

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

var out = (0, _util.dict)();
for (var i = 0; i < names.length; i++) {
var name = names[i];
out[name] = references[i].value();
}
names.forEach(function (name, i) {
return out[name] = references[i].value();
});
return out;

@@ -345,6 +344,5 @@ };

map = this._map = (0, _util.dict)();
for (var i = 0; i < names.length; i++) {
var name = names[i];
map[name] = references[i];
}
names.forEach(function (name, i) {
return map[name] = references[i];
});
}

@@ -359,2 +357,2 @@ return map;

exports.default = new Arguments();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi92bS9hcmd1bWVudHMuanMiXSwibmFtZXMiOlsiZGljdCIsIkVNUFRZX0FSUkFZIiwiY29tYmluZVRhZ2dlZCIsIlByaW1pdGl2ZVJlZmVyZW5jZSIsIlVOREVGSU5FRF9SRUZFUkVOQ0UiLCJBcmd1bWVudHMiLCJzdGFjayIsInBvc2l0aW9uYWwiLCJQb3NpdGlvbmFsQXJndW1lbnRzIiwibmFtZWQiLCJOYW1lZEFyZ3VtZW50cyIsImVtcHR5Iiwic2V0dXAiLCJwb3NpdGlvbmFsQ291bnQiLCJzeW50aGV0aWMiLCJuYW1lcyIsImZyb21Ub3AiLCJuYW1lZENvdW50IiwibGVuZ3RoIiwic3RhcnQiLCJhdCIsInBvcyIsImdldCIsIm5hbWUiLCJjYXB0dXJlIiwidGFnIiwiY2xlYXIiLCJwb3BzIiwicG9wIiwiX3RhZyIsIl9yZWZlcmVuY2VzIiwicG9zaXRpb24iLCJDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHMiLCJyZWZlcmVuY2VzIiwiQXJyYXkiLCJpIiwidmFsdWUiLCJtYXAiLCJ2YWx1ZU9mIiwiY3JlYXRlIiwiaWR4IiwicGFyc2VJbnQiLCJyZWZlcmVuY2UiLCJfbmFtZXMiLCJfcmVhbE5hbWVzIiwiaGFzIiwiaW5kZXhPZiIsIkNhcHR1cmVkTmFtZWRBcmd1bWVudHMiLCJzbGljZU5hbWUiLCJzbGljZSIsIl9tYXAiLCJvdXQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxBQUFTLEFBQU0sQUFBbUI7O0FBQ2xDLEFBQVMsQUFBcUI7O0FBQzlCLEFBQVMsQUFBb0IsQUFBMkIsQUFDeEQ7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBLEFBQWEsNENBQ1Q7eUJBQWM7OEJBQ1Y7O2FBQUEsQUFBSyxRQUFMLEFBQWEsQUFDYjthQUFBLEFBQUssYUFBYSxJQUFsQixBQUFrQixBQUFJLEFBQ3RCO2FBQUEsQUFBSyxRQUFRLElBQWIsQUFBYSxBQUFJLEFBQ3BCO0FBTEw7O3dCQUFBLEFBTUkseUJBQVEsQUFDSjthQUFBLEFBQUssTUFBTCxBQUFXLE1B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QjtxQkFBSyxJQUFJLElBQVQsQUFBYSxHQUFHLElBQUksTUFBcEIsQUFBMEIsUUFBMUIsQUFBa0MsS0FBSyxBQUNuQzt3QkFBSSxPQUFPLE1BQVgsQUFBVyxBQUFNLEFBQ2pCO3dCQUFBLEFBQUksUUFBUSxXQUFaLEFBQVksQUFBVyxBQUMxQjtBQUNKO0FBQ0Q7bUJBQUEsQUFBTyxBQUNWOzs7OztBQXVCTDs7a0JBQWUsSUFBZixBQUFlLEFBQUkiLCJmaWxlIjoibGliL3ZtL2FyZ3VtZW50cy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRpY3QsIEVNUFRZX0FSUkFZIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBjb21iaW5lVGFnZ2VkIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IFByaW1pdGl2ZVJlZmVyZW5jZSwgVU5ERUZJTkVEX1JFRkVSRU5DRSB9IGZyb20gJy4uL3JlZmVyZW5jZXMnO1xuZXhwb3J0IGNsYXNzIEFyZ3VtZW50cyB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBudWxsO1xuICAgICAgICB0aGlzLnBvc2l0aW9uYWwgPSBuZXcgUG9zaXRpb25hbEFyZ3VtZW50cygpO1xuICAgICAgICB0aGlzLm5hbWVkID0gbmV3IE5hbWVkQXJndW1lbnRzKCk7XG4gICAgfVxuICAgIGVtcHR5KCkge1xuICAgICAgICB0aGlzLnNldHVwKG51bGwsIDAsIHRydWUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgc2V0dXAoc3RhY2ssIHBvc2l0aW9uYWxDb3VudCwgc3ludGhldGljKSB7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICAgICAgbGV0IG5hbWVzID0gc3RhY2suZnJvbVRvcCgwKTtcbiAgICAgICAgbGV0IG5hbWVkQ291bnQgPSBuYW1lcy5sZW5ndGg7XG4gICAgICAgIGxldCBzdGFydCA9IHBvc2l0aW9uYWxDb3VudCArIG5hbWVkQ291bnQgKyAxO1xuICAgICAgICBsZXQgcG9zaXRpb25hbCA9IHRoaXMucG9zaXRpb25hbDtcbiAgICAgICAgcG9zaXRpb25hbC5zZXR1cChzdGFjaywgc3RhcnQsIHBvc2l0aW9uYWxDb3VudCk7XG4gICAgICAgIGxldCBuYW1lZCA9IHRoaXMubmFtZWQ7XG4gICAgICAgIG5hbWVkLnNldHVwKHN0YWNrLCBuYW1lZENvdW50LCBuYW1lcywgc3ludGhldGljKTtcbiAgICB9XG4gICAgZ2V0IHRhZygpIHtcbiAgICAgICAgcmV0dXJuIGNvbWJpbmVUYWdnZWQoW3RoaXMucG9zaXRpb25hbCwgdGhpcy5uYW1lZF0pO1xuICAgIH1cbiAgICBnZXQgbGVuZ3RoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wb3NpdGlvbmFsLmxlbmd0aCArIHRoaXMubmFtZWQubGVuZ3RoO1xuICAgIH1cbiAgICBhdChwb3MpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9zaXRpb25hbC5hdChwb3MpO1xuICAgIH1cbiAgICBnZXQobmFtZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5uYW1lZC5nZXQobmFtZSk7XG4gICAgfVxuICAgIGNhcHR1cmUoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0YWc6IHRoaXMudGFnLFxuICAgICAgICAgICAgbGVuZ3RoOiB0aGlzLmxlbmd0aCxcbiAgICAgICAgICAgIHBvc2l0aW9uYWw6IHRoaXMucG9zaXRpb25hbC5jYXB0dXJlKCksXG4gICAgICAgICAgICBuYW1lZDogdGhpcy5uYW1lZC5jYXB0dXJlKClcbiAgICAgICAgfTtcbiAgICB9XG4gICAgY2xlYXIoKSB7XG4gICAgICAgIGxldCB7IHN0YWNrLCBsZW5ndGggfSA9IHRoaXM7XG4gICAgICAgIGxldCBwb3BzID0gbGVuZ3RoICsgMTtcbiAgICAgICAgd2hpbGUgKC0tcG9wcyA+PSAwKSB7XG4gICAgICAgICAgICBzdGFjay5wb3AoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmNsYXNzIFBvc2l0aW9uYWxBcmd1bWVudHMge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmxlbmd0aCA9IDA7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBudWxsO1xuICAgICAgICB0aGlzLnN0YXJ0ID0gMDtcbiAgICAgICAgdGhpcy5fdGFnID0gbnVsbDtcbiAgICAgICAgdGhpcy5fcmVmZXJlbmNlcyA9IG51bGw7XG4gICAgfVxuICAgIHNldHVwKHN0YWNrLCBzdGFydCwgbGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICAgICAgdGhpcy5zdGFydCA9IHN0YXJ0O1xuICAgICAgICB0aGlzLmxlbmd0aCA9IGxlbmd0aDtcbiAgICAgICAgdGhpcy5fdGFnID0gbnVsbDtcbiAgICAgICAgdGhpcy5fcmVmZXJlbmNlcyA9IG51bGw7XG4gICAgfVxuICAgIGdldCB0YWcoKSB7XG4gICAgICAgIGxldCB0YWcgPSB0aGlzLl90YWc7XG4gICAgICAgIGlmICghdGFnKSB7XG4gICAgICAgICAgICB0YWcgPSB0aGlzLl90YWcgPSBjb21iaW5lVGFnZ2VkKHRoaXMucmVmZXJlbmNlcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRhZztcbiAgICB9XG4gICAgYXQocG9zaXRpb24pIHtcbiAgICAgICAgbGV0IHsgc3RhcnQsIGxlbmd0aCB9ID0gdGhpcztcbiAgICAgICAgaWYgKHBvc2l0aW9uIDwgMCB8fCBwb3NpdGlvbiA+PSBsZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBVTkRFRklORURfUkVGRVJFTkNFO1xuICAgICAgICB9XG4gICAgICAgIC8vIHN0YWNrOiBwb3MxLCBwb3MyLCBwb3MzLCBuYW1lZDEsIG5hbWVkMlxuICAgICAgICAvLyBzdGFydDogNCAodG9wIC0gNClcbiAgICAgICAgLy9cbiAgICAgICAgLy8gYXQoMCkgPT09IHBvczEgPT09IHRvcCAtIHN0YXJ0XG4gICAgICAgIC8vIGF0KDEpID09PSBwb3MyID09PSB0b3AgLSAoc3RhcnQgLSAxKVxuICAgICAgICAvLyBhdCgyKSA9PT0gcG9zMyA9PT0gdG9wIC0gKHN0YXJ0IC0gMilcbiAgICAgICAgbGV0IGZyb21Ub3AgPSBzdGFydCAtIHBvc2l0aW9uIC0gMTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2suZnJvbVRvcChmcm9tVG9wKTtcbiAgICB9XG4gICAgY2FwdHVyZSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHModGhpcy50YWcsIHRoaXMucmVmZXJlbmNlcyk7XG4gICAgfVxuICAgIGdldCByZWZlcmVuY2VzKCkge1xuICAgICAgICBsZXQgcmVmZXJlbmNlcyA9IHRoaXMuX3JlZmVyZW5jZXM7XG4gICAgICAgIGlmICghcmVmZXJlbmNlcykge1xuICAgICAgICAgICAgbGV0IHsgbGVuZ3RoIH0gPSB0aGlzO1xuICAgICAgICAgICAgcmVmZXJlbmNlcyA9IHRoaXMuX3JlZmVyZW5jZXMgPSBuZXcgQXJyYXkobGVuZ3RoKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VzW2ldID0gdGhpcy5hdChpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVmZXJlbmNlcztcbiAgICB9XG59XG5jbGFzcyBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHMge1xuICAgIGNvbnN0cnVjdG9yKHRhZywgcmVmZXJlbmNlcywgbGVuZ3RoID0gcmVmZXJlbmNlcy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy50YWcgPSB0YWc7XG4gICAgICAgIHRoaXMucmVmZXJlbmNlcyA9IHJlZmVyZW5jZXM7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gbGVuZ3RoO1xuICAgIH1cbiAgICBhdChwb3NpdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2VzW3Bvc2l0aW9uXTtcbiAgICB9XG4gICAgdmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZXMubWFwKHRoaXMudmFsdWVPZik7XG4gICAgfVxuICAgIGdldChuYW1lKSB7XG4gICAgICAgIGxldCB7IHJlZmVyZW5jZXMsIGxlbmd0aCB9ID0gdGhpcztcbiAgICAgICAgaWYgKG5hbWUgPT09ICdsZW5ndGgnKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJpbWl0aXZlUmVmZXJlbmNlLmNyZWF0ZShsZW5ndGgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IGlkeCA9IHBhcnNlSW50KG5hbWUsIDEwKTtcbiAgICAgICAgICAgIGlmIChpZHggPCAwIHx8IGlkeCA+PSBsZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gVU5ERUZJTkVEX1JFRkVSRU5DRTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlZmVyZW5jZXNbaWR4XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICB2YWx1ZU9mKHJlZmVyZW5jZSkge1xuICAgICAgICByZXR1cm4gcmVmZXJlbmNlLnZhbHVlKCk7XG4gICAgfVxufVxuY2xhc3MgTmFtZWRBcmd1bWVudHMge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmxlbmd0aCA9IDA7XG4gICAgICAgIHRoaXMuX3RhZyA9IG51bGw7XG4gICAgICAgIHRoaXMuX3JlZmVyZW5jZXMgPSBudWxsO1xuICAgICAgICB0aGlzLl9uYW1lcyA9IG51bGw7XG4gICAgICAgIHRoaXMuX3JlYWxOYW1lcyA9IEVNUFRZX0FSUkFZO1xuICAgIH1cbiAgICBzZXR1cChzdGFjaywgbGVuZ3RoLCBuYW1lcywgc3ludGhldGljKSB7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICAgICAgdGhpcy5sZW5ndGggPSBsZW5ndGg7XG4gICAgICAgIHRoaXMuX3RhZyA9IG51bGw7XG4gICAgICAgIHRoaXMuX3JlZmVyZW5jZXMgPSBudWxsO1xuICAgICAgICBpZiAoc3ludGhldGljKSB7XG4gICAgICAgICAgICB0aGlzLl9uYW1lcyA9IG5hbWVzO1xuICAgICAgICAgICAgdGhpcy5fcmVhbE5hbWVzID0gRU1QVFlfQVJSQVk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9uYW1lcyA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLl9yZWFsTmFtZXMgPSBuYW1lcztcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgdGFnKCkge1xuICAgICAgICByZXR1cm4gY29tYmluZVRhZ2dlZCh0aGlzLnJlZmVyZW5jZXMpO1xuICAgIH1cbiAgICBnZXQgbmFtZXMoKSB7XG4gICAgICAgIGxldCBuYW1lcyA9IHRoaXMuX25hbWVzO1xuICAgICAgICBpZiAoIW5hbWVzKSB7XG4gICAgICAgICAgICBuYW1lcyA9IHRoaXMuX25hbWVzID0gdGhpcy5fcmVhbE5hbWVzLm1hcCh0aGlzLnNsaWNlTmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5hbWVzO1xuICAgIH1cbiAgICBoYXMobmFtZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5uYW1lcy5pbmRleE9mKG5hbWUpICE9PSAtMTtcbiAgICB9XG4gICAgZ2V0KG5hbWUpIHtcbiAgICAgICAgbGV0IHsgbmFtZXMsIGxlbmd0aCB9ID0gdGhpcztcbiAgICAgICAgbGV0IGlkeCA9IG5hbWVzLmluZGV4T2YobmFtZSk7XG4gICAgICAgIGlmIChpZHggPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gVU5ERUZJTkVEX1JFRkVSRU5DRTtcbiAgICAgICAgfVxuICAgICAgICAvLyBzdGFjazogcG9zMSwgcG9zMiwgcG9zMywgbmFtZWQxLCBuYW1lZDJcbiAgICAgICAgLy8gc3RhcnQ6IDQgKHRvcCAtIDQpXG4gICAgICAgIC8vIG5hbWVkRGljdDogeyBuYW1lZDE6IDEsIG5hbWVkMjogMCB9O1xuICAgICAgICAvL1xuICAgICAgICAvLyBnZXQoJ25hbWVkMScpID09PSBuYW1lZDEgPT09IHRvcCAtIChzdGFydCAtIDEpXG4gICAgICAgIC8vIGdldCgnbmFtZWQyJykgPT09IG5hbWVkMiA9PT0gdG9wIC0gc3RhcnRcbiAgICAgICAgbGV0IGZyb21Ub3AgPSBsZW5ndGggLSBpZHg7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrLmZyb21Ub3AoZnJvbVRvcCk7XG4gICAgfVxuICAgIGNhcHR1cmUoKSB7XG4gICAgICAgIHJldHVybiBuZXcgQ2FwdHVyZWROYW1lZEFyZ3VtZW50cyh0aGlzLnRhZywgdGhpcy5uYW1lcywgdGhpcy5yZWZlcmVuY2VzKTtcbiAgICB9XG4gICAgZ2V0IHJlZmVyZW5jZXMoKSB7XG4gICAgICAgIGxldCByZWZlcmVuY2VzID0gdGhpcy5fcmVmZXJlbmNlcztcbiAgICAgICAgaWYgKCFyZWZlcmVuY2VzKSB7XG4gICAgICAgICAgICBsZXQgeyBuYW1lcywgbGVuZ3RoIH0gPSB0aGlzO1xuICAgICAgICAgICAgcmVmZXJlbmNlcyA9IHRoaXMuX3JlZmVyZW5jZXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VzW2ldID0gdGhpcy5nZXQobmFtZXNbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZWZlcmVuY2VzO1xuICAgIH1cbiAgICBzbGljZU5hbWUobmFtZSkge1xuICAgICAgICByZXR1cm4gbmFtZS5zbGljZSgxKTtcbiAgICB9XG59XG5jbGFzcyBDYXB0dXJlZE5hbWVkQXJndW1lbnRzIHtcbiAgICBjb25zdHJ1Y3Rvcih0YWcsIG5hbWVzLCByZWZlcmVuY2VzKSB7XG4gICAgICAgIHRoaXMudGFnID0gdGFnO1xuICAgICAgICB0aGlzLm5hbWVzID0gbmFtZXM7XG4gICAgICAgIHRoaXMucmVmZXJlbmNlcyA9IHJlZmVyZW5jZXM7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gbmFtZXMubGVuZ3RoO1xuICAgICAgICB0aGlzLl9tYXAgPSBudWxsO1xuICAgIH1cbiAgICBnZXQgbWFwKCkge1xuICAgICAgICBsZXQgbWFwID0gdGhpcy5fbWFwO1xuICAgICAgICBpZiAoIW1hcCkge1xuICAgICAgICAgICAgbGV0IHsgbmFtZXMsIHJlZmVyZW5jZXMgfSA9IHRoaXM7XG4gICAgICAgICAgICBtYXAgPSB0aGlzLl9tYXAgPSBkaWN0KCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5hbWUgPSBuYW1lc1tpXTtcbiAgICAgICAgICAgICAgICBtYXBbbmFtZV0gPSByZWZlcmVuY2VzW2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXA7XG4gICAgfVxuICAgIGhhcyhuYW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hbWVzLmluZGV4T2YobmFtZSkgIT09IC0xO1xuICAgIH1cbiAgICBnZXQobmFtZSkge1xuICAgICAgICBsZXQgeyBuYW1lcywgcmVmZXJlbmNlcyB9ID0gdGhpcztcbiAgICAgICAgbGV0IGlkeCA9IG5hbWVzLmluZGV4T2YobmFtZSk7XG4gICAgICAgIGlmIChpZHggPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gVU5ERUZJTkVEX1JFRkVSRU5DRTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiByZWZlcmVuY2VzW2lkeF07XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFsdWUoKSB7XG4gICAgICAgIGxldCB7IG5hbWVzLCByZWZlcmVuY2VzIH0gPSB0aGlzO1xuICAgICAgICBsZXQgb3V0ID0gZGljdCgpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVzW2ldO1xuICAgICAgICAgICAgb3V0W25hbWVdID0gcmVmZXJlbmNlc1tpXS52YWx1ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgbmV3IEFyZ3VtZW50cygpOyJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi92bS9hcmd1bWVudHMuanMiXSwibmFtZXMiOlsiZGljdCIsIkVNUFRZX0FSUkFZIiwiY29tYmluZVRhZ2dlZCIsIlByaW1pdGl2ZVJlZmVyZW5jZSIsIlVOREVGSU5FRF9SRUZFUkVOQ0UiLCJBcmd1bWVudHMiLCJzdGFjayIsInBvc2l0aW9uYWwiLCJQb3NpdGlvbmFsQXJndW1lbnRzIiwibmFtZWQiLCJOYW1lZEFyZ3VtZW50cyIsImVtcHR5Iiwic2V0dXAiLCJwb3NpdGlvbmFsQ291bnQiLCJzeW50aGV0aWMiLCJuYW1lcyIsImZyb21Ub3AiLCJuYW1lZENvdW50IiwibGVuZ3RoIiwic3RhcnQiLCJhdCIsInBvcyIsImdldCIsIm5hbWUiLCJjYXB0dXJlIiwidGFnIiwiY2xlYXIiLCJwb3BzIiwicG9wIiwiX3RhZyIsIl9yZWZlcmVuY2VzIiwicG9zaXRpb24iLCJDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHMiLCJyZWZlcmVuY2VzIiwiQXJyYXkiLCJpIiwidmFsdWUiLCJtYXAiLCJ2YWx1ZU9mIiwiY3JlYXRlIiwiaWR4IiwicGFyc2VJbnQiLCJyZWZlcmVuY2UiLCJfbmFtZXMiLCJfcmVhbE5hbWVzIiwiaGFzIiwiaW5kZXhPZiIsIkNhcHR1cmVkTmFtZWRBcmd1bWVudHMiLCJzbGljZU5hbWUiLCJzbGljZSIsIl9tYXAiLCJvdXQiLCJmb3JFYWNoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsQUFBUyxBQUFNLEFBQW1COztBQUNsQyxBQUFTLEFBQXFCOztBQUM5QixBQUFTLEFBQW9CLEFBQTJCLEFBQ3hEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFBQSxBQUFhLDRDQUNUO3lCQUFjOzhCQUNWOzthQUFBLEFBQUssUUFBTCxBQUFhLEFBQ2I7YUFBQSxBQUFLLGFBQWEsSUFBbEIsQUFBa0IsQUFBSSxBQUN0QjthQUFBLEFBQUssUUFBUSxJQUFiLEFBQWEsQUFBSSxBQUNwQjtBQUxMOzt3QkFBQSxBQU1JLHlCQUFRLEFBQ0o7YUFBQSxBQUFLLE1B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UDsyQkFBYSxJQUFBLEFBQUksUUFBUSxXQUF6QixBQUF5QixBQUFXO0FBQWxELEFBQ0g7QUFDRDttQkFBQSxBQUFPLEFBQ1Y7Ozs7O0FBb0JMOztrQkFBZSxJQUFmLEFBQWUsQUFBSSIsImZpbGUiOiJsaWIvdm0vYXJndW1lbnRzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGljdCwgRU1QVFlfQVJSQVkgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IGNvbWJpbmVUYWdnZWQgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgUHJpbWl0aXZlUmVmZXJlbmNlLCBVTkRFRklORURfUkVGRVJFTkNFIH0gZnJvbSAnLi4vcmVmZXJlbmNlcyc7XG5leHBvcnQgY2xhc3MgQXJndW1lbnRzIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5zdGFjayA9IG51bGw7XG4gICAgICAgIHRoaXMucG9zaXRpb25hbCA9IG5ldyBQb3NpdGlvbmFsQXJndW1lbnRzKCk7XG4gICAgICAgIHRoaXMubmFtZWQgPSBuZXcgTmFtZWRBcmd1bWVudHMoKTtcbiAgICB9XG4gICAgZW1wdHkoKSB7XG4gICAgICAgIHRoaXMuc2V0dXAobnVsbCwgMCwgdHJ1ZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBzZXR1cChzdGFjaywgcG9zaXRpb25hbENvdW50LCBzeW50aGV0aWMpIHtcbiAgICAgICAgdGhpcy5zdGFjayA9IHN0YWNrO1xuICAgICAgICBsZXQgbmFtZXMgPSBzdGFjay5mcm9tVG9wKDApO1xuICAgICAgICBsZXQgbmFtZWRDb3VudCA9IG5hbWVzLmxlbmd0aDtcbiAgICAgICAgbGV0IHN0YXJ0ID0gcG9zaXRpb25hbENvdW50ICsgbmFtZWRDb3VudCArIDE7XG4gICAgICAgIGxldCBwb3NpdGlvbmFsID0gdGhpcy5wb3NpdGlvbmFsO1xuICAgICAgICBwb3NpdGlvbmFsLnNldHVwKHN0YWNrLCBzdGFydCwgcG9zaXRpb25hbENvdW50KTtcbiAgICAgICAgbGV0IG5hbWVkID0gdGhpcy5uYW1lZDtcbiAgICAgICAgbmFtZWQuc2V0dXAoc3RhY2ssIG5hbWVkQ291bnQsIG5hbWVzLCBzeW50aGV0aWMpO1xuICAgIH1cbiAgICBnZXQgdGFnKCkge1xuICAgICAgICByZXR1cm4gY29tYmluZVRhZ2dlZChbdGhpcy5wb3NpdGlvbmFsLCB0aGlzLm5hbWVkXSk7XG4gICAgfVxuICAgIGdldCBsZW5ndGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvc2l0aW9uYWwubGVuZ3RoICsgdGhpcy5uYW1lZC5sZW5ndGg7XG4gICAgfVxuICAgIGF0KHBvcykge1xuICAgICAgICByZXR1cm4gdGhpcy5wb3NpdGlvbmFsLmF0KHBvcyk7XG4gICAgfVxuICAgIGdldChuYW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hbWVkLmdldChuYW1lKTtcbiAgICB9XG4gICAgY2FwdHVyZSgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRhZzogdGhpcy50YWcsXG4gICAgICAgICAgICBsZW5ndGg6IHRoaXMubGVuZ3RoLFxuICAgICAgICAgICAgcG9zaXRpb25hbDogdGhpcy5wb3NpdGlvbmFsLmNhcHR1cmUoKSxcbiAgICAgICAgICAgIG5hbWVkOiB0aGlzLm5hbWVkLmNhcHR1cmUoKVxuICAgICAgICB9O1xuICAgIH1cbiAgICBjbGVhcigpIHtcbiAgICAgICAgbGV0IHsgc3RhY2ssIGxlbmd0aCB9ID0gdGhpcztcbiAgICAgICAgbGV0IHBvcHMgPSBsZW5ndGggKyAxO1xuICAgICAgICB3aGlsZSAoLS1wb3BzID49IDApIHtcbiAgICAgICAgICAgIHN0YWNrLnBvcCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuY2xhc3MgUG9zaXRpb25hbEFyZ3VtZW50cyB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5zdGFjayA9IG51bGw7XG4gICAgICAgIHRoaXMuc3RhcnQgPSAwO1xuICAgICAgICB0aGlzLl90YWcgPSBudWxsO1xuICAgICAgICB0aGlzLl9yZWZlcmVuY2VzID0gbnVsbDtcbiAgICB9XG4gICAgc2V0dXAoc3RhY2ssIHN0YXJ0LCBsZW5ndGgpIHtcbiAgICAgICAgdGhpcy5zdGFjayA9IHN0YWNrO1xuICAgICAgICB0aGlzLnN0YXJ0ID0gc3RhcnQ7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gbGVuZ3RoO1xuICAgICAgICB0aGlzLl90YWcgPSBudWxsO1xuICAgICAgICB0aGlzLl9yZWZlcmVuY2VzID0gbnVsbDtcbiAgICB9XG4gICAgZ2V0IHRhZygpIHtcbiAgICAgICAgbGV0IHRhZyA9IHRoaXMuX3RhZztcbiAgICAgICAgaWYgKCF0YWcpIHtcbiAgICAgICAgICAgIHRhZyA9IHRoaXMuX3RhZyA9IGNvbWJpbmVUYWdnZWQodGhpcy5yZWZlcmVuY2VzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGFnO1xuICAgIH1cbiAgICBhdChwb3NpdGlvbikge1xuICAgICAgICBsZXQgeyBzdGFydCwgbGVuZ3RoIH0gPSB0aGlzO1xuICAgICAgICBpZiAocG9zaXRpb24gPCAwIHx8IHBvc2l0aW9uID49IGxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIFVOREVGSU5FRF9SRUZFUkVOQ0U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gc3RhY2s6IHBvczEsIHBvczIsIHBvczMsIG5hbWVkMSwgbmFtZWQyXG4gICAgICAgIC8vIHN0YXJ0OiA0ICh0b3AgLSA0KVxuICAgICAgICAvL1xuICAgICAgICAvLyBhdCgwKSA9PT0gcG9zMSA9PT0gdG9wIC0gc3RhcnRcbiAgICAgICAgLy8gYXQoMSkgPT09IHBvczIgPT09IHRvcCAtIChzdGFydCAtIDEpXG4gICAgICAgIC8vIGF0KDIpID09PSBwb3MzID09PSB0b3AgLSAoc3RhcnQgLSAyKVxuICAgICAgICBsZXQgZnJvbVRvcCA9IHN0YXJ0IC0gcG9zaXRpb24gLSAxO1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFjay5mcm9tVG9wKGZyb21Ub3ApO1xuICAgIH1cbiAgICBjYXB0dXJlKCkge1xuICAgICAgICByZXR1cm4gbmV3IENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50cyh0aGlzLnRhZywgdGhpcy5yZWZlcmVuY2VzKTtcbiAgICB9XG4gICAgZ2V0IHJlZmVyZW5jZXMoKSB7XG4gICAgICAgIGxldCByZWZlcmVuY2VzID0gdGhpcy5fcmVmZXJlbmNlcztcbiAgICAgICAgaWYgKCFyZWZlcmVuY2VzKSB7XG4gICAgICAgICAgICBsZXQgeyBsZW5ndGggfSA9IHRoaXM7XG4gICAgICAgICAgICByZWZlcmVuY2VzID0gdGhpcy5fcmVmZXJlbmNlcyA9IG5ldyBBcnJheShsZW5ndGgpO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHJlZmVyZW5jZXNbaV0gPSB0aGlzLmF0KGkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZWZlcmVuY2VzO1xuICAgIH1cbn1cbmNsYXNzIENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50cyB7XG4gICAgY29uc3RydWN0b3IodGFnLCByZWZlcmVuY2VzLCBsZW5ndGggPSByZWZlcmVuY2VzLmxlbmd0aCkge1xuICAgICAgICB0aGlzLnRhZyA9IHRhZztcbiAgICAgICAgdGhpcy5yZWZlcmVuY2VzID0gcmVmZXJlbmNlcztcbiAgICAgICAgdGhpcy5sZW5ndGggPSBsZW5ndGg7XG4gICAgfVxuICAgIGF0KHBvc2l0aW9uKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZXNbcG9zaXRpb25dO1xuICAgIH1cbiAgICB2YWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlcy5tYXAodGhpcy52YWx1ZU9mKTtcbiAgICB9XG4gICAgZ2V0KG5hbWUpIHtcbiAgICAgICAgbGV0IHsgcmVmZXJlbmNlcywgbGVuZ3RoIH0gPSB0aGlzO1xuICAgICAgICBpZiAobmFtZSA9PT0gJ2xlbmd0aCcpIHtcbiAgICAgICAgICAgIHJldHVybiBQcmltaXRpdmVSZWZlcmVuY2UuY3JlYXRlKGxlbmd0aCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgaWR4ID0gcGFyc2VJbnQobmFtZSwgMTApO1xuICAgICAgICAgICAgaWYgKGlkeCA8IDAgfHwgaWR4ID49IGxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBVTkRFRklORURfUkVGRVJFTkNFO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVmZXJlbmNlc1tpZHhdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHZhbHVlT2YocmVmZXJlbmNlKSB7XG4gICAgICAgIHJldHVybiByZWZlcmVuY2UudmFsdWUoKTtcbiAgICB9XG59XG5jbGFzcyBOYW1lZEFyZ3VtZW50cyB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5fdGFnID0gbnVsbDtcbiAgICAgICAgdGhpcy5fcmVmZXJlbmNlcyA9IG51bGw7XG4gICAgICAgIHRoaXMuX25hbWVzID0gbnVsbDtcbiAgICAgICAgdGhpcy5fcmVhbE5hbWVzID0gRU1QVFlfQVJSQVk7XG4gICAgfVxuICAgIHNldHVwKHN0YWNrLCBsZW5ndGgsIG5hbWVzLCBzeW50aGV0aWMpIHtcbiAgICAgICAgdGhpcy5zdGFjayA9IHN0YWNrO1xuICAgICAgICB0aGlzLmxlbmd0aCA9IGxlbmd0aDtcbiAgICAgICAgdGhpcy5fdGFnID0gbnVsbDtcbiAgICAgICAgdGhpcy5fcmVmZXJlbmNlcyA9IG51bGw7XG4gICAgICAgIGlmIChzeW50aGV0aWMpIHtcbiAgICAgICAgICAgIHRoaXMuX25hbWVzID0gbmFtZXM7XG4gICAgICAgICAgICB0aGlzLl9yZWFsTmFtZXMgPSBFTVBUWV9BUlJBWTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX25hbWVzID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuX3JlYWxOYW1lcyA9IG5hbWVzO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCB0YWcoKSB7XG4gICAgICAgIHJldHVybiBjb21iaW5lVGFnZ2VkKHRoaXMucmVmZXJlbmNlcyk7XG4gICAgfVxuICAgIGdldCBuYW1lcygpIHtcbiAgICAgICAgbGV0IG5hbWVzID0gdGhpcy5fbmFtZXM7XG4gICAgICAgIGlmICghbmFtZXMpIHtcbiAgICAgICAgICAgIG5hbWVzID0gdGhpcy5fbmFtZXMgPSB0aGlzLl9yZWFsTmFtZXMubWFwKHRoaXMuc2xpY2VOYW1lKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmFtZXM7XG4gICAgfVxuICAgIGhhcyhuYW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hbWVzLmluZGV4T2YobmFtZSkgIT09IC0xO1xuICAgIH1cbiAgICBnZXQobmFtZSkge1xuICAgICAgICBsZXQgeyBuYW1lcywgbGVuZ3RoIH0gPSB0aGlzO1xuICAgICAgICBsZXQgaWR4ID0gbmFtZXMuaW5kZXhPZihuYW1lKTtcbiAgICAgICAgaWYgKGlkeCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiBVTkRFRklORURfUkVGRVJFTkNFO1xuICAgICAgICB9XG4gICAgICAgIC8vIHN0YWNrOiBwb3MxLCBwb3MyLCBwb3MzLCBuYW1lZDEsIG5hbWVkMlxuICAgICAgICAvLyBzdGFydDogNCAodG9wIC0gNClcbiAgICAgICAgLy8gbmFtZWREaWN0OiB7IG5hbWVkMTogMSwgbmFtZWQyOiAwIH07XG4gICAgICAgIC8vXG4gICAgICAgIC8vIGdldCgnbmFtZWQxJykgPT09IG5hbWVkMSA9PT0gdG9wIC0gKHN0YXJ0IC0gMSlcbiAgICAgICAgLy8gZ2V0KCduYW1lZDInKSA9PT0gbmFtZWQyID09PSB0b3AgLSBzdGFydFxuICAgICAgICBsZXQgZnJvbVRvcCA9IGxlbmd0aCAtIGlkeDtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2suZnJvbVRvcChmcm9tVG9wKTtcbiAgICB9XG4gICAgY2FwdHVyZSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDYXB0dXJlZE5hbWVkQXJndW1lbnRzKHRoaXMudGFnLCB0aGlzLm5hbWVzLCB0aGlzLnJlZmVyZW5jZXMpO1xuICAgIH1cbiAgICBnZXQgcmVmZXJlbmNlcygpIHtcbiAgICAgICAgbGV0IHJlZmVyZW5jZXMgPSB0aGlzLl9yZWZlcmVuY2VzO1xuICAgICAgICBpZiAoIXJlZmVyZW5jZXMpIHtcbiAgICAgICAgICAgIGxldCB7IG5hbWVzLCBsZW5ndGggfSA9IHRoaXM7XG4gICAgICAgICAgICByZWZlcmVuY2VzID0gdGhpcy5fcmVmZXJlbmNlcyA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHJlZmVyZW5jZXNbaV0gPSB0aGlzLmdldChuYW1lc1tpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlZmVyZW5jZXM7XG4gICAgfVxuICAgIHNsaWNlTmFtZShuYW1lKSB7XG4gICAgICAgIHJldHVybiBuYW1lLnNsaWNlKDEpO1xuICAgIH1cbn1cbmNsYXNzIENhcHR1cmVkTmFtZWRBcmd1bWVudHMge1xuICAgIGNvbnN0cnVjdG9yKHRhZywgbmFtZXMsIHJlZmVyZW5jZXMpIHtcbiAgICAgICAgdGhpcy50YWcgPSB0YWc7XG4gICAgICAgIHRoaXMubmFtZXMgPSBuYW1lcztcbiAgICAgICAgdGhpcy5yZWZlcmVuY2VzID0gcmVmZXJlbmNlcztcbiAgICAgICAgdGhpcy5sZW5ndGggPSBuYW1lcy5sZW5ndGg7XG4gICAgICAgIHRoaXMuX21hcCA9IG51bGw7XG4gICAgfVxuICAgIGdldCBtYXAoKSB7XG4gICAgICAgIGxldCBtYXAgPSB0aGlzLl9tYXA7XG4gICAgICAgIGlmICghbWFwKSB7XG4gICAgICAgICAgICBsZXQgeyBuYW1lcywgcmVmZXJlbmNlcyB9ID0gdGhpcztcbiAgICAgICAgICAgIG1hcCA9IHRoaXMuX21hcCA9IGRpY3QoKTtcbiAgICAgICAgICAgIG5hbWVzLmZvckVhY2goKG5hbWUsIGkpID0+IG1hcFtuYW1lXSA9IHJlZmVyZW5jZXNbaV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXA7XG4gICAgfVxuICAgIGhhcyhuYW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hbWVzLmluZGV4T2YobmFtZSkgIT09IC0xO1xuICAgIH1cbiAgICBnZXQobmFtZSkge1xuICAgICAgICBsZXQgeyBuYW1lcywgcmVmZXJlbmNlcyB9ID0gdGhpcztcbiAgICAgICAgbGV0IGlkeCA9IG5hbWVzLmluZGV4T2YobmFtZSk7XG4gICAgICAgIGlmIChpZHggPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gVU5ERUZJTkVEX1JFRkVSRU5DRTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiByZWZlcmVuY2VzW2lkeF07XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFsdWUoKSB7XG4gICAgICAgIGxldCB7IG5hbWVzLCByZWZlcmVuY2VzIH0gPSB0aGlzO1xuICAgICAgICBsZXQgb3V0ID0gZGljdCgpO1xuICAgICAgICBuYW1lcy5mb3JFYWNoKChuYW1lLCBpKSA9PiBvdXRbbmFtZV0gPSByZWZlcmVuY2VzW2ldLnZhbHVlKCkpO1xuICAgICAgICByZXR1cm4gb3V0O1xuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IG5ldyBBcmd1bWVudHMoKTsiXX0=

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

export { Blocks as BlockMacros, Inlines as InlineMacros, compileList, expr as compileExpression } from './lib/syntax/functions';
export { ClientSide, CompilableTemplate, compileStatement } from './lib/scanner';
export { UpdatingVM, RenderResult } from './lib/vm';

@@ -15,0 +16,0 @@ export { isSafeString } from './lib/upsert';

@@ -23,3 +23,3 @@ import { CachedReference, combineTagged } from '@glimmer/reference';

function castToString(value) {
if (typeof value.toString !== 'function') {
if (typeof value['toString'] !== 'function') {
return '';

@@ -26,0 +26,0 @@ }

@@ -1,9 +0,9 @@

import { dict, EMPTY_ARRAY, expect, fillNulls, Stack } from '@glimmer/util';
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 { ComponentBuilder } from '../../compiler';
import { Register } from '../../opcodes';
import { expr, InvokeDynamicLayout } from '../../syntax/functions';
import RawInlineBlock from '../../syntax/raw-block';
import { RawInlineBlock } from '../../scanner';
import { InvokeDynamicLayout, expr } from '../../syntax/functions';
import { IsComponentDefinitionReference } from '../opcodes/content';
import * as content from './content';
import * as vm from './vm';
class Labels {

@@ -55,3 +55,3 @@ constructor() {

pushArgs(positional, synthetic) {
this.push(58 /* PushArgs */, positional, synthetic === true ? 1 : 0);
this.push(58 /* PushArgs */, positional, synthetic | 0);
}

@@ -83,3 +83,3 @@ // helpers

createComponent(state, hasDefault, hasInverse) {
let flag = (hasDefault === true ? 1 : 0) | (hasInverse === true ? 1 : 0) << 1;
let flag = hasDefault | 0 | (hasInverse | 0) << 1;
this.push(60 /* CreateComponent */, flag, state);

@@ -160,7 +160,7 @@ }

let namespace = this.constants.string(_namespace);
this.push(31 /* DynamicAttrNS */, name, namespace, trusting === true ? 1 : 0);
this.push(31 /* DynamicAttrNS */, name, namespace, trusting | 0);
}
dynamicAttr(_name, trusting) {
let name = this.constants.string(_name);
this.push(30 /* DynamicAttr */, name, trusting === true ? 1 : 0);
this.push(30 /* DynamicAttr */, name, trusting | 0);
}

@@ -237,3 +237,3 @@ comment(_comment) {

pushRootScope(symbols, bindCallerScope) {
this.push(19 /* RootScope */, symbols, bindCallerScope ? 1 : 0);
this.push(19 /* RootScope */, symbols, bindCallerScope | 0);
}

@@ -370,7 +370,3 @@ pushChildScope() {

names(_names) {
let names = [];
for (let i = 0; i < _names.length; i++) {
let n = _names[i];
names[i] = this.constants.string(n);
}
let names = _names.map(n => this.constants.string(n));
return this.constants.array(names);

@@ -392,3 +388,3 @@ }

function isCompilableExpression(expr) {
return typeof expr === 'object' && expr !== null && typeof expr.compile === 'function';
return expr && typeof expr['compile'] === 'function';
}

@@ -403,5 +399,3 @@ export default class OpcodeBuilder extends BasicOpcodeBuilder {

if (params) {
for (let i = 0; i < params.length; i++) {
expr(params[i], this);
}
params.forEach(p => expr(p, this));
positional = params.length;

@@ -412,6 +406,3 @@ }

names = hash[0];
let val = hash[1];
for (let i = 0; i < val.length; i++) {
expr(val[i], this);
}
hash[1].forEach(v => expr(v, this));
}

@@ -455,2 +446,10 @@ this.pushImmediate(names);

}
guardedCautiousAppend(expression) {
expr(expression, this);
this.dynamicContent(new content.GuardedCautiousAppendOpcode());
}
guardedTrustingAppend(expression) {
expr(expression, this);
this.dynamicContent(new content.GuardedTrustingAppendOpcode());
}
invokeComponent(attrs, params, hash, block, inverse = null) {

@@ -480,4 +479,4 @@ this.initializeComponentState();

if (!block) return null;
return new RawInlineBlock(this.meta, block.statements, block.parameters);
return new RawInlineBlock(this.env, this.meta, block.statements, block.parameters);
}
}

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

import { combine, CONSTANT_TAG, isConst, ReferenceCache } from '@glimmer/reference';
import { APPEND_OPCODES, UpdatingOpcode } from '../../opcodes';
import { Assert } from './vm';
import ARGS from '../../vm/arguments';
import { ComponentElementOperations } from './dom';
import { Assert } from './vm';
import { CONSTANT_TAG, ReferenceCache, combine, isConst } from '@glimmer/reference';
APPEND_OPCODES.add(55 /* PushComponentManager */, (vm, { op1: _definition }) => {

@@ -57,4 +57,3 @@ let definition = vm.constants.getOther(_definition);

APPEND_OPCODES.add(60 /* CreateComponent */, (vm, { op1: flags, op2: _state }) => {
let definition;
let manager;
let definition, manager;
let args = vm.stack.pop();

@@ -108,3 +107,3 @@ let dynamicScope = vm.dynamicScope();

this.dynamicScope = dynamicScope;
this.type = 'update-component';
this.type = "update-component";
let componentTag = manager.getTag(component);

@@ -123,5 +122,5 @@ if (componentTag) {

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

@@ -136,3 +135,3 @@ }

this.bounds = bounds;
this.type = 'did-update-layout';
this.type = "did-update-layout";
this.tag = CONSTANT_TAG;

@@ -139,0 +138,0 @@ }

@@ -1,8 +0,9 @@

import { isConst, isModified, map, ReferenceCache } from '@glimmer/reference';
import { clear, Cursor } from '../../bounds';
import { isSafeString, isNode, isString, cautiousInsert, trustingInsert } from '../../upsert';
import { isComponentDefinition } from '../../component/interfaces';
import { UpdatingOpcode } from '../../opcodes';
import { ReferenceCache, isModified, isConst, map } from '@glimmer/reference';
import { Cursor, clear } from '../../bounds';
import { Fragment } from '../../builder';
import { isComponentDefinition } from '../../component/interfaces';
import { APPEND_OPCODES, UpdatingOpcode } from '../../opcodes';
import { ConditionalReference } from '../../references';
import { cautiousInsert, isNode, isSafeString, isString, trustingInsert } from '../../upsert';
import { APPEND_OPCODES } from '../../opcodes';
APPEND_OPCODES.add(25 /* DynamicContent */, (vm, { op1: append }) => {

@@ -13,3 +14,3 @@ let opcode = vm.constants.getOther(append);

function isEmpty(value) {
return value === null || value === undefined || typeof value.toString !== 'function';
return value === null || value === undefined || typeof value['toString'] !== 'function';
}

@@ -53,4 +54,3 @@ export function normalizeTextValue(value) {

let normalized = this.normalize(reference);
let value;
let cache;
let value, cache;
if (isConst(reference)) {

@@ -102,5 +102,5 @@ value = normalized.value();

return {
details: { lastValue: JSON.stringify(cache.peek()) },
guid,
type
type,
details: { lastValue: JSON.stringify(cache.peek()) }
};

@@ -107,0 +107,0 @@ }

@@ -0,3 +1,3 @@

import { APPEND_OPCODES } from '../../opcodes';
import { dict } from '@glimmer/util';
import { APPEND_OPCODES } from '../../opcodes';
/* tslint:disable */

@@ -23,8 +23,7 @@ function debugCallback(context, get) {

this.locals = dict();
for (let i = 0; i < evalInfo.length; i++) {
let slot = evalInfo[i];
evalInfo.forEach(slot => {
let name = symbols[slot - 1];
let ref = scope.getSymbol(slot);
this.locals[name] = ref;
}
});
}

@@ -47,3 +46,3 @@ get(path) {

}
return tail.reduce((r, part) => r.get(part), ref);
return tail.reduce((ref, part) => ref.get(part), ref);
}

@@ -50,0 +49,0 @@ }

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

import { CachedReference, combineTagged, isConst as isConstReference, isModified, ReferenceCache } from '@glimmer/reference';
import { expect, unwrap } from '@glimmer/util';
import { APPEND_OPCODES, UpdatingOpcode } from '../../opcodes';
import { UpdatingOpcode } from '../../opcodes';
import { unwrap, expect } from '@glimmer/util';
import { CachedReference, ReferenceCache, combineTagged, isConst as isConstReference, isModified } from '@glimmer/reference';
import { NULL_REFERENCE, PrimitiveReference } from '../../references';
import { Assert } from './vm';
import { APPEND_OPCODES } from '../../opcodes';
APPEND_OPCODES.add(23 /* Text */, (vm, { op1: text }) => {

@@ -261,3 +262,3 @@ vm.elements().appendText(vm.constants.getString(text));

this.modifier = modifier;
this.type = 'update-modifier';
this.type = "update-modifier";
this.lastUpdated = tag.value();

@@ -328,6 +329,6 @@ }

element: formattedElement,
lastValue,
type: 'attribute',
namespace,
name,
namespace,
type: 'attribute'
lastValue
};

@@ -337,6 +338,6 @@ }

element: formattedElement,
lastValue,
type: 'attribute',
namespace: namespace === undefined ? null : namespace,
name,
namespace: namespace === undefined ? null : namespace,
type: 'attribute'
lastValue
};

@@ -362,3 +363,3 @@ }

super();
this.type = 'patch-element';
this.type = "patch-element";
this.tag = operation.tag;

@@ -373,7 +374,7 @@ this.operation = operation;

return {
details: operation.toJSON(),
guid: _guid,
type
type,
details: operation.toJSON()
};
}
}
import { APPEND_OPCODES } from '../../opcodes';
import { FALSE_REFERENCE, TRUE_REFERENCE } from '../../references';
import { ConcatReference } from '../expressions/concat';
import { TRUE_REFERENCE, FALSE_REFERENCE } from '../../references';
APPEND_OPCODES.add(1 /* Helper */, (vm, { op1: _helper }) => {

@@ -5,0 +5,0 @@ let stack = vm.stack;

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

import { UpdatingOpcode } from '../../opcodes';
import { ConstReference } from '@glimmer/reference';
import { CONSTANT_TAG, isConst, isModified, ReferenceCache } from '@glimmer/reference';
import { initializeGuid } from '@glimmer/util';
import { APPEND_OPCODES, UpdatingOpcode } from '../../opcodes';
import { FALSE_REFERENCE, NULL_REFERENCE, PrimitiveReference, TRUE_REFERENCE, UNDEFINED_REFERENCE } from '../../references';
import { CONSTANT_TAG, ReferenceCache, isConst, isModified } from '@glimmer/reference';
import { APPEND_OPCODES } from '../../opcodes';
import { NULL_REFERENCE, UNDEFINED_REFERENCE, TRUE_REFERENCE, FALSE_REFERENCE, PrimitiveReference } from '../../references';
APPEND_OPCODES.add(20 /* ChildScope */, vm => vm.pushChildScope());

@@ -123,3 +124,3 @@ APPEND_OPCODES.add(21 /* PopScope */, vm => vm.popScope());

super();
this.type = 'assert';
this.type = "assert";
this.tag = cache.tag;

@@ -143,6 +144,6 @@ this.cache = cache;

return {
guid: _guid,
type,
args: [],
details: { expected },
guid: _guid,
type
details: { expected }
};

@@ -155,3 +156,3 @@ }

this.target = target;
this.type = 'jump-if-not-modified';
this.type = "jump-if-not-modified";
this.tag = tag;

@@ -171,5 +172,5 @@ this.lastRevision = tag.value();

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

@@ -182,3 +183,3 @@ }

this.target = target;
this.type = 'did-modify';
this.type = "did-modify";
this.tag = CONSTANT_TAG;

@@ -193,3 +194,3 @@ }

this.tag = CONSTANT_TAG;
this.type = 'label';
this.type = "label";
this.label = null;

@@ -199,3 +200,3 @@ this.prev = null;

initializeGuid(this);
this.label = label;
if (label) this.label = label;
}

@@ -208,7 +209,7 @@ evaluate() {}

return {
args: [JSON.stringify(this.inspect())],
guid: this._guid,
type: this.type
type: this.type,
args: [JSON.stringify(this.inspect())]
};
}
}
import { CompiledDynamicTemplate } from './compiled/blocks';
import { Ops } from '@glimmer/wire-format';
import { Register, debugSlice } from './opcodes';
import { ATTRS_BLOCK, compileStatement } from './syntax/functions';
import * as ClientSide from './syntax/client-side';
import { ATTRS_BLOCK, ClientSide, compileStatement } from './scanner';
import { expr } from './syntax/functions';

@@ -20,4 +19,4 @@ import OpcodeBuilderDSL from './compiled/opcodes/builder';

}
fromLayout(componentName, layout) {
this.inner = new UnwrappedBuilder(this.env, componentName, layout);
fromLayout(layout) {
this.inner = new UnwrappedBuilder(this.env, layout);
}

@@ -91,3 +90,3 @@ compile() {

b.didCreateElement(Register.s0);
let attrs = this.attrs.buffer;
let attrs = this.attrs['buffer'];
for (let i = 0; i < attrs.length; i++) {

@@ -125,5 +124,4 @@ compileStatement(attrs[i], b);

class UnwrappedBuilder {
constructor(env, componentName, layout) {
constructor(env, layout) {
this.env = env;
this.componentName = componentName;
this.layout = layout;

@@ -137,3 +135,3 @@ this.attrs = new ComponentAttrsBuilder();

let { env, layout } = this;
return layout.asLayout(this.componentName, this.attrs.buffer).compileDynamic(env);
return layout.asLayout(this.attrs['buffer']).compileDynamic(env);
}

@@ -196,4 +194,4 @@ }

let meta = this.builder.meta.templateMeta;
function helper(vm, a) {
return getDefinition(vm, a, meta);
function helper(vm, args) {
return getDefinition(vm, args, meta);
}

@@ -200,0 +198,0 @@ builder.startLabels();

@@ -38,9 +38,3 @@ import { NULL_REFERENCE, UNDEFINED_REFERENCE } from '../references';

getNames(value) {
let _names = [];
let names = this.getArray(value);
for (let i = 0; i < names.length; i++) {
let n = names[i];
_names[i] = this.getString(n);
}
return _names;
return this.getArray(value).map(n => this.getString(n));
}

@@ -47,0 +41,0 @@ array(values) {

@@ -28,3 +28,2 @@ import { initializeGuid, fillNulls, unreachable } from '@glimmer/util';

if (!false && false) {
/* tslint:disable:no-console */
let { program, constants } = env;

@@ -46,3 +45,2 @@ // console is not available in IE9

console.groupEnd();
/* tslint:enable:no-console */
}

@@ -65,8 +63,6 @@ }

let string = JSON.stringify(param);
if (string === undefined) {
return 'undefined';
}
if (string === undefined) return 'undefined';
let debug = JSON.parse(string);
if (typeof debug === 'object' && debug !== null && debug.GlimmerDebug !== undefined) {
return debug.GlimmerDebug;
if (typeof debug === 'object' && debug && debug['GlimmerDebug']) {
return debug['GlimmerDebug'];
}

@@ -248,11 +244,8 @@ return string;

if (!false && false) {
/* tslint:disable */
let [name, params] = debug(vm.constants, opcode.type, opcode.op1, opcode.op2, opcode.op3);
console.log(`${vm['pc'] - 4}. ${logOpcode(name, params)}`);
// console.log(...debug(vm.constants, type, opcode.op1, opcode.op2, opcode.op3));
/* tslint:enable */
}
func(vm, opcode);
if (!false && false) {
/* tslint:disable */
console.log('%c -> pc: %d, ra: %d, fp: %d, sp: %d, s0: %O, s1: %O, t0: %O, t1: %O', 'color: orange', vm['pc'], vm['ra'], vm['fp'], vm['sp'], vm['s0'], vm['s1'], vm['t0'], vm['t1']);

@@ -262,3 +255,2 @@ console.log('%c -> eval stack', 'color: red', vm.stack.toArray());

console.log('%c -> elements', 'color: blue', vm.elements()['elementStack'].toArray());
/* tslint:enable */
}

@@ -265,0 +257,0 @@ }

@@ -0,7 +1,57 @@

import { CompiledDynamicTemplate, CompiledStaticTemplate } from './compiled/blocks';
import { builder } from './compiler';
import { EMPTY_ARRAY } from '@glimmer/util';
import * as WireFormat from '@glimmer/wire-format';
import * as ClientSide from './syntax/client-side';
import CompilableTemplate from './syntax/compilable-template';
import { ATTRS_BLOCK } from './syntax/functions';
var Ops = WireFormat.Ops;
import { debugSlice } from './opcodes';
import { STATEMENTS } from './syntax/functions';
export function compileStatement(statement, builder) {
STATEMENTS.compile(statement, builder);
}
export class CompilableTemplate {
constructor(statements, symbolTable) {
this.statements = statements;
this.symbolTable = symbolTable;
this.compiledStatic = null;
this.compiledDynamic = null;
}
compileStatic(env) {
let { compiledStatic } = this;
if (!compiledStatic) {
let builder = compileStatements(this.statements, this.symbolTable.meta, env);
let start = builder.start;
let end = builder.finalize();
debugSlice(env, start, end);
compiledStatic = this.compiledStatic = new CompiledStaticTemplate(start, end);
}
return compiledStatic;
}
compileDynamic(env) {
let { compiledDynamic } = this;
if (!compiledDynamic) {
let staticBlock = this.compileStatic(env);
compiledDynamic = new CompiledDynamicTemplate(staticBlock.start, staticBlock.end, this.symbolTable);
}
return compiledDynamic;
}
toJSON() {
return { GlimmerDebug: '<template>' };
}
}
function compileStatements(statements, meta, env) {
let b = builder(env, meta);
for (let statement of statements) {
compileStatement(statement, b);
}
return b;
}
export const ATTRS_BLOCK = '&attrs';
export function layout(prelude, head, body, symbolTable) {
let [, tag] = prelude.pop();
prelude.push([Ops.ClientSideStatement, ClientSide.Ops.OpenComponentElement, tag]);
prelude.push([Ops.ClientSideStatement, ClientSide.Ops.DidCreateElement]);
let attrsSymbol = symbolTable.symbols.length + 1;
symbolTable.symbols.push(ATTRS_BLOCK);
let statements = prelude.concat([[Ops.Yield, attrsSymbol, EMPTY_ARRAY]]).concat(head).concat(body).concat([[Ops.ClientSideStatement, ClientSide.Ops.DidRenderLayout]]);
return new CompilableTemplate(statements, symbolTable);
}
export default class Scanner {

@@ -13,78 +63,99 @@ constructor(block, env) {

scanEntryPoint(meta) {
let { block } = this;
let { statements, symbols, hasEval } = block;
return new CompilableTemplate(statements, { meta, symbols, hasEval });
let { block, env } = this;
let statements;
if (block.prelude && block.head) {
statements = block.prelude.concat(block.head).concat(block.statements);
} else {
statements = block.statements;
}
return new RawProgram(env, meta, statements, block.symbols, block.hasEval).scan();
}
scanBlock(meta) {
let { block } = this;
let { statements } = block;
return new CompilableTemplate(statements, { meta, parameters: EMPTY_ARRAY });
let { block, env } = this;
let statements;
if (block.prelude && block.head) {
statements = block.prelude.concat(block.head).concat(block.statements);
} else {
statements = block.statements;
}
return new RawInlineBlock(env, meta, statements, EMPTY_ARRAY).scan();
}
scanLayout(meta, attrs, componentName) {
scanLayout(meta, attrs) {
let { block } = this;
let { statements, symbols, hasEval } = block;
let { symbols, hasEval } = block;
if (!block.prelude || !block.head) {
throw new Error(`A layout must have a top-level element`);
}
let symbolTable = { meta, hasEval, symbols };
let newStatements = [];
let toplevel;
let inTopLevel = false;
for (let i = 0; i < statements.length; i++) {
let statement = statements[i];
if (WireFormat.Statements.isComponent(statement)) {
let tagName = statement[1];
if (!this.env.hasComponentDefinition(tagName, meta.templateMeta)) {
if (toplevel !== undefined) {
newStatements.push([Ops.OpenElement, tagName]);
} else {
toplevel = tagName;
decorateTopLevelElement(tagName, symbols, attrs, newStatements);
}
addFallback(statement, newStatements);
} else {
if (toplevel === undefined && tagName === componentName) {
toplevel = tagName;
decorateTopLevelElement(tagName, symbols, attrs, newStatements);
addFallback(statement, newStatements);
}
}
} else {
if (toplevel === undefined && WireFormat.Statements.isOpenElement(statement)) {
toplevel = statement[1];
inTopLevel = true;
decorateTopLevelElement(toplevel, symbols, attrs, newStatements);
} else {
if (inTopLevel) {
if (WireFormat.Statements.isFlushElement(statement)) {
inTopLevel = false;
} else if (WireFormat.Statements.isModifier(statement)) {
throw Error(`Found modifier "${statement[1]}" on the top-level element of "${componentName}"\. Modifiers cannot be on the top-level element`);
}
}
newStatements.push(statement);
}
}
}
newStatements.push([Ops.ClientSideStatement, ClientSide.Ops.DidRenderLayout]);
return new CompilableTemplate(newStatements, symbolTable);
let { statements: prelude } = scanBlock({ statements: block.prelude, parameters: EMPTY_ARRAY }, meta, this.env);
let { statements: head } = scanBlock({ statements: [...attrs, ...block.head], parameters: EMPTY_ARRAY }, meta, this.env);
let { statements: body } = scanBlock({ statements: block.statements, parameters: EMPTY_ARRAY }, meta, this.env);
return layout(prelude, head, body, symbolTable);
}
}
function addFallback(statement, buffer) {
let [,, attrs,, block] = statement;
for (let i = 0; i < attrs.length; i++) {
buffer.push(attrs[i]);
export function scanBlock(block, meta, env) {
return new RawInlineBlock(env, meta, block.statements, EMPTY_ARRAY).scan();
}
export var ClientSide;
(function (ClientSide) {
var Ops;
(function (Ops) {
Ops[Ops["OpenComponentElement"] = 0] = "OpenComponentElement";
Ops[Ops["DidCreateElement"] = 1] = "DidCreateElement";
Ops[Ops["DidRenderLayout"] = 2] = "DidRenderLayout";
Ops[Ops["OptimizedAppend"] = 3] = "OptimizedAppend";
Ops[Ops["UnoptimizedAppend"] = 4] = "UnoptimizedAppend";
Ops[Ops["StaticPartial"] = 5] = "StaticPartial";
Ops[Ops["DynamicPartial"] = 6] = "DynamicPartial";
Ops[Ops["NestedBlock"] = 7] = "NestedBlock";
Ops[Ops["ScannedBlock"] = 8] = "ScannedBlock";
Ops[Ops["FunctionExpression"] = 9] = "FunctionExpression";
})(Ops = ClientSide.Ops || (ClientSide.Ops = {}));
function is(variant) {
return function (value) {
return value[0] === WireFormat.Ops.ClientSideExpression || value[0] === WireFormat.Ops.ClientSideStatement && value[1] === variant;
};
}
buffer.push([Ops.FlushElement]);
if (block) {
let { statements } = block;
for (let i = 0; i < statements.length; i++) {
buffer.push(statements[i]);
ClientSide.is = is;
})(ClientSide || (ClientSide = {}));
const { Ops } = WireFormat;
export class RawBlock {
constructor(env, meta, statements) {
this.env = env;
this.meta = meta;
this.statements = statements;
}
scanStatements() {
let buffer = [];
let statements = this.statements;
for (let statement of statements) {
buffer.push(statement);
}
return buffer;
}
buffer.push([Ops.CloseElement]);
child(block) {
if (!block) return null;
return new RawInlineBlock(this.env, this.meta, block.statements, block.parameters);
}
}
function decorateTopLevelElement(tagName, symbols, attrs, buffer) {
let attrsSymbol = symbols.push(ATTRS_BLOCK);
buffer.push([Ops.ClientSideStatement, ClientSide.Ops.OpenComponentElement, tagName]);
buffer.push([Ops.ClientSideStatement, ClientSide.Ops.DidCreateElement]);
buffer.push([Ops.Yield, attrsSymbol, EMPTY_ARRAY]);
buffer.push(...attrs);
export class RawInlineBlock extends RawBlock {
constructor(env, meta, statements, parameters) {
super(env, meta, statements);
this.parameters = parameters;
}
scan() {
let statements = this.scanStatements();
return new CompilableTemplate(statements, { parameters: this.parameters, meta: this.meta });
}
}
export class RawProgram extends RawBlock {
constructor(env, meta, statements, symbols, hasEval) {
super(env, meta, statements);
this.symbols = symbols;
this.hasEval = hasEval;
}
scan() {
let statements = this.scanStatements();
return new CompilableTemplate(statements, { symbols: this.symbols, hasEval: this.hasEval, meta: this.meta });
}
}

@@ -1,11 +0,8 @@

import { map } from '@glimmer/reference';
import { assert, dict, EMPTY_ARRAY, LOGGER, unwrap } from '@glimmer/util';
import * as WireFormat from '@glimmer/wire-format';
import OpcodeBuilder from '../compiled/opcodes/builder';
import { Register } from '../opcodes';
import * as ClientSide from '../syntax/client-side';
import RawInlineBlock from './raw-block';
import { ATTRS_BLOCK, ClientSide, RawInlineBlock } from '../scanner';
import { LOGGER, EMPTY_ARRAY, dict, assert, unwrap } from '@glimmer/util';
import { map } from '@glimmer/reference';
var Ops = WireFormat.Ops;
export const ATTRS_BLOCK = '&attrs';
class Compilers {
export class Compilers {
constructor(offset = 0) {

@@ -28,4 +25,4 @@ this.offset = offset;

}
const STATEMENTS = new Compilers();
const CLIENT_SIDE = new Compilers(1);
export const STATEMENTS = new Compilers();
export const CLIENT_SIDE = new Compilers(1);
STATEMENTS.add(Ops.Text, (sexp, builder) => {

@@ -104,2 +101,13 @@ builder.text(sexp[1]);

});
// CLIENT_SIDE.add(ClientSide.Ops.UnoptimizedAppend, (sexp: ClientSide.UnoptimizedAppend, builder) => {
// let [,, value, trustingMorph] = sexp;
// let { inlines } = builder.env.macros();
// let returned = inlines.compile(sexp, builder) || value;
// if (returned === true) return;
// if (trustingMorph) {
// builder.guardedTrustingAppend(returned[1]);
// } else {
// builder.guardedCautiousAppend(returned[1]);
// }
// });
STATEMENTS.add(Ops.Block, (sexp, builder) => {

@@ -161,3 +169,3 @@ let [, name, params, hash, _template, _inverse] = sexp;

let child = builder.template(block);
let attrsBlock = new RawInlineBlock(builder.meta, attrs, EMPTY_ARRAY);
let attrsBlock = new RawInlineBlock(builder.env, builder.meta, attrs, EMPTY_ARRAY);
let definition = builder.env.getComponentDefinition(tag, builder.meta.templateMeta);

@@ -170,12 +178,5 @@ builder.pushComponentManager(definition);

builder.openPrimitiveElement(tag);
for (let i = 0; i < attrs.length; i++) {
STATEMENTS.compile(attrs[i], builder);
}
attrs.forEach(attr => STATEMENTS.compile(attr, builder));
builder.flushElement();
if (block) {
let stmts = block.statements;
for (let i = 0; i < stmts.length; i++) {
STATEMENTS.compile(stmts[i], builder);
}
}
if (block) block.statements.forEach(s => STATEMENTS.compile(s, builder));
builder.closeElement();

@@ -199,15 +200,13 @@ }

let locals = dict();
for (let i = 0; i < evalInfo.length; i++) {
let slot = evalInfo[i];
evalInfo.forEach(slot => {
let name = outerSymbols[slot - 1];
let ref = outerScope.getSymbol(slot);
locals[name] = ref;
}
});
let evalScope = outerScope.getEvalScope();
for (let i = 0; i < partialSymbols.length; i++) {
let name = partialSymbols[i];
partialSymbols.forEach((name, i) => {
let symbol = i + 1;
let value = evalScope[name];
if (value !== undefined) partialScope.bind(symbol, value);
}
});
partialScope.bindPartialMap(locals);

@@ -224,10 +223,10 @@ vm.pushFrame();

let nameRef = args.positional.at(0);
return map(nameRef, n => {
if (typeof n === 'string' && n) {
if (!env.hasPartial(n, templateMeta)) {
throw new Error(`Could not find a partial named "${n}"`);
return map(nameRef, name => {
if (typeof name === 'string' && name) {
if (!env.hasPartial(name, templateMeta)) {
throw new Error(`Could not find a partial named "${name}"`);
}
return env.lookupPartial(n, templateMeta);
} else if (n) {
throw new Error(`Could not find a partial named "${String(n)}"`);
return env.lookupPartial(name, templateMeta);
} else if (name) {
throw new Error(`Could not find a partial named "${String(name)}"`);
} else {

@@ -332,5 +331,3 @@ return null;

let parts = sexp[1];
for (let i = 0; i < parts.length; i++) {
expr(parts[i], builder);
}
parts.forEach(p => expr(p, builder));
builder.concat(parts.length);

@@ -354,5 +351,3 @@ });

builder.getVariable(head);
for (let i = 0; i < path.length; i++) {
builder.getProperty(path[i]);
}
path.forEach(p => builder.getProperty(p));
});

@@ -368,5 +363,3 @@ EXPRESSIONS.add(Ops.MaybeLocal, (sexp, builder) => {

}
for (let i = 0; i < path.length; i++) {
builder.getProperty(path[i]);
}
path.forEach(p => builder.getProperty(p));
});

@@ -387,5 +380,3 @@ EXPRESSIONS.add(Ops.Undefined, (_sexp, builder) => {

if (!params) return 0;
for (let i = 0; i < params.length; i++) {
expr(params[i], builder);
}
params.forEach(p => expr(p, builder));
return params.length;

@@ -614,3 +605,3 @@ }

} else {
builder.primitive(null);
throw new Error('Compile error: #each without key');
}

@@ -696,12 +687,2 @@ expr(params[0], builder);

return { blocks, inlines };
}
export function compileStatement(statement, builder) {
STATEMENTS.compile(statement, builder);
}
export function compileStatements(statements, meta, env) {
let b = new OpcodeBuilder(env, meta);
for (let statement of statements) {
compileStatement(statement, b);
}
return b;
}
import { assign, EMPTY_ARRAY } from '@glimmer/util';
import { ElementStack } from './builder';
import { VM } from './vm';
import Scanner from './scanner';
import { VM } from './vm';
export class TemplateIterator {

@@ -50,4 +50,4 @@ constructor(vm) {

}
asLayout(componentName, attrs) {
if (!this.layout) this.layout = this.scanner.scanLayout(this.compilationMeta(), attrs || EMPTY_ARRAY, componentName);
asLayout(attrs) {
if (!this.layout) this.layout = this.scanner.scanLayout(this.compilationMeta(), attrs || EMPTY_ARRAY);
return this.layout;

@@ -54,0 +54,0 @@ }

import { unreachable } from '@glimmer/util';
import { clear, single, SingleNodeBounds } from './bounds';
import { SingleNodeBounds, single, clear } from './bounds';
export function isSafeString(value) {
return typeof value === 'object' && value !== null && typeof value.toHTML === 'function';
return !!value && typeof value['toHTML'] === 'function';
}
export function isNode(value) {
return typeof value === 'object' && value !== null && typeof value.nodeType === 'number';
return value !== null && typeof value === 'object' && typeof value['nodeType'] === 'number';
}

@@ -9,0 +9,0 @@ export function isString(value) {

@@ -64,3 +64,3 @@ import { Register } from '../opcodes';

this.stack = EvaluationStack.empty();
/* Registers */
/** Registers **/
this.pc = -1;

@@ -145,5 +145,5 @@ this.ra = -1;

return {
dynamicScope: this.dynamicScope(),
env: this.env,
scope: this.scope(),
dynamicScope: this.dynamicScope(),
stack: this.stack.capture(args)

@@ -283,14 +283,11 @@ };

let { env, updatingOpcodeStack, elementStack } = this;
let opcode = this.nextStatement(env);
let result;
if (opcode !== null) {
let opcode;
if (opcode = this.nextStatement(env)) {
APPEND_OPCODES.evaluate(this, opcode, opcode.type);
result = { done: false, value: null };
} else {
result = {
done: true,
value: new RenderResult(env, expect(updatingOpcodeStack.pop(), 'there should be a final updating opcode stack'), elementStack.popBlock())
};
return { done: false, value: null };
}
return result;
return {
done: true,
value: new RenderResult(env, expect(updatingOpcodeStack.pop(), 'there should be a final updating opcode stack'), elementStack.popBlock())
};
}

@@ -297,0 +294,0 @@ nextStatement(env) {

@@ -212,6 +212,3 @@ import { dict, EMPTY_ARRAY } from '@glimmer/util';

map = this._map = dict();
for (let i = 0; i < names.length; i++) {
let name = names[i];
map[name] = references[i];
}
names.forEach((name, i) => map[name] = references[i]);
}

@@ -235,6 +232,3 @@ return map;

let out = dict();
for (let i = 0; i < names.length; i++) {
let name = names[i];
out[name] = references[i].value();
}
names.forEach((name, i) => out[name] = references[i].value());
return out;

@@ -241,0 +235,0 @@ }

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

export { Blocks as BlockMacros, Inlines as InlineMacros, compileList, expr as compileExpression } from './lib/syntax/functions';
export { ClientSide, CompilableTemplate, compileStatement } from './lib/scanner';
export { UpdatingVM, RenderResult } from './lib/vm';

@@ -24,2 +25,2 @@ export { isSafeString } from './lib/upsert';

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

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

function castToString(value) {
if (typeof value.toString !== 'function') {
if (typeof value['toString'] !== 'function') {
return '';

@@ -46,2 +46,2 @@ }

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9leHByZXNzaW9ucy9jb25jYXQuanMiXSwibmFtZXMiOlsiQ2FjaGVkUmVmZXJlbmNlIiwiY29tYmluZVRhZ2dlZCIsIkNvbmNhdFJlZmVyZW5jZSIsInBhcnRzIiwidGFnIiwiY29tcHV0ZSIsIkFycmF5IiwiaSIsImxlbmd0aCIsInZhbHVlIiwidW5kZWZpbmVkIiwiY2FzdFRvU3RyaW5nIiwiam9pbiIsInRvU3RyaW5nIiwiU3RyaW5nIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLFNBQVNBLGVBQVQsRUFBMEJDLGFBQTFCLFFBQStDLG9CQUEvQztBQUNBLFdBQWFDLGVBQWI7QUFBQTs7QUFDSSw2QkFBWUMsS0FBWixFQUFtQjtBQUFBOztBQUFBLHFEQUNmLDJCQURlOztBQUVmLGNBQUtBLEtBQUwsR0FBYUEsS0FBYjtBQUNBLGNBQUtDLEdBQUwsR0FBV0gsY0FBY0UsS0FBZCxDQUFYO0FBSGU7QUFJbEI7O0FBTEwsOEJBTUlFLE9BTkosc0JBTWM7QUFDTixZQUFJRixRQUFRLElBQUlHLEtBQUosRUFBWjtBQUNBLGFBQUssSUFBSUMsSUFBSSxDQUFiLEVBQWdCQSxJQUFJLEtBQUtKLEtBQUwsQ0FBV0ssTUFBL0IsRUFBdUNELEdBQXZDLEVBQTRDO0FBQ3hDLGdCQUFJRSxRQUFRLEtBQUtOLEtBQUwsQ0FBV0ksQ0FBWCxFQUFjRSxLQUFkLEVBQVo7QUFDQSxnQkFBSUEsVUFBVSxJQUFWLElBQWtCQSxVQUFVQyxTQUFoQyxFQUEyQztBQUN2Q1Asc0JBQU1JLENBQU4sSUFBV0ksYUFBYUYsS0FBYixDQUFYO0FBQ0g7QUFDSjtBQUNELFlBQUlOLE1BQU1LLE1BQU4sR0FBZSxDQUFuQixFQUFzQjtBQUNsQixtQkFBT0wsTUFBTVMsSUFBTixDQUFXLEVBQVgsQ0FBUDtBQUNIO0FBQ0QsZUFBTyxJQUFQO0FBQ0gsS0FsQkw7O0FBQUE7QUFBQSxFQUFxQ1osZUFBckM7QUFvQkEsU0FBU1csWUFBVCxDQUFzQkYsS0FBdEIsRUFBNkI7QUFDekIsUUFBSSxPQUFPQSxNQUFNSSxRQUFiLEtBQTBCLFVBQTlCLEVBQTBDO0FBQ3RDLGVBQU8sRUFBUDtBQUNIO0FBQ0QsV0FBT0MsT0FBT0wsS0FBUCxDQUFQO0FBQ0giLCJmaWxlIjoibGliL2NvbXBpbGVkL2V4cHJlc3Npb25zL2NvbmNhdC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENhY2hlZFJlZmVyZW5jZSwgY29tYmluZVRhZ2dlZCB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5leHBvcnQgY2xhc3MgQ29uY2F0UmVmZXJlbmNlIGV4dGVuZHMgQ2FjaGVkUmVmZXJlbmNlIHtcbiAgICBjb25zdHJ1Y3RvcihwYXJ0cykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnBhcnRzID0gcGFydHM7XG4gICAgICAgIHRoaXMudGFnID0gY29tYmluZVRhZ2dlZChwYXJ0cyk7XG4gICAgfVxuICAgIGNvbXB1dGUoKSB7XG4gICAgICAgIGxldCBwYXJ0cyA9IG5ldyBBcnJheSgpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IHRoaXMucGFydHNbaV0udmFsdWUoKTtcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcGFydHNbaV0gPSBjYXN0VG9TdHJpbmcodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJ0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFydHMuam9pbignJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufVxuZnVuY3Rpb24gY2FzdFRvU3RyaW5nKHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZS50b1N0cmluZyAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xufSJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9leHByZXNzaW9ucy9jb25jYXQuanMiXSwibmFtZXMiOlsiQ2FjaGVkUmVmZXJlbmNlIiwiY29tYmluZVRhZ2dlZCIsIkNvbmNhdFJlZmVyZW5jZSIsInBhcnRzIiwidGFnIiwiY29tcHV0ZSIsIkFycmF5IiwiaSIsImxlbmd0aCIsInZhbHVlIiwidW5kZWZpbmVkIiwiY2FzdFRvU3RyaW5nIiwiam9pbiIsIlN0cmluZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxTQUFTQSxlQUFULEVBQTBCQyxhQUExQixRQUErQyxvQkFBL0M7QUFDQSxXQUFhQyxlQUFiO0FBQUE7O0FBQ0ksNkJBQVlDLEtBQVosRUFBbUI7QUFBQTs7QUFBQSxxREFDZiwyQkFEZTs7QUFFZixjQUFLQSxLQUFMLEdBQWFBLEtBQWI7QUFDQSxjQUFLQyxHQUFMLEdBQVdILGNBQWNFLEtBQWQsQ0FBWDtBQUhlO0FBSWxCOztBQUxMLDhCQU1JRSxPQU5KLHNCQU1jO0FBQ04sWUFBSUYsUUFBUSxJQUFJRyxLQUFKLEVBQVo7QUFDQSxhQUFLLElBQUlDLElBQUksQ0FBYixFQUFnQkEsSUFBSSxLQUFLSixLQUFMLENBQVdLLE1BQS9CLEVBQXVDRCxHQUF2QyxFQUE0QztBQUN4QyxnQkFBSUUsUUFBUSxLQUFLTixLQUFMLENBQVdJLENBQVgsRUFBY0UsS0FBZCxFQUFaO0FBQ0EsZ0JBQUlBLFVBQVUsSUFBVixJQUFrQkEsVUFBVUMsU0FBaEMsRUFBMkM7QUFDdkNQLHNCQUFNSSxDQUFOLElBQVdJLGFBQWFGLEtBQWIsQ0FBWDtBQUNIO0FBQ0o7QUFDRCxZQUFJTixNQUFNSyxNQUFOLEdBQWUsQ0FBbkIsRUFBc0I7QUFDbEIsbUJBQU9MLE1BQU1TLElBQU4sQ0FBVyxFQUFYLENBQVA7QUFDSDtBQUNELGVBQU8sSUFBUDtBQUNILEtBbEJMOztBQUFBO0FBQUEsRUFBcUNaLGVBQXJDO0FBb0JBLFNBQVNXLFlBQVQsQ0FBc0JGLEtBQXRCLEVBQTZCO0FBQ3pCLFFBQUksT0FBT0EsTUFBTSxVQUFOLENBQVAsS0FBNkIsVUFBakMsRUFBNkM7QUFDekMsZUFBTyxFQUFQO0FBQ0g7QUFDRCxXQUFPSSxPQUFPSixLQUFQLENBQVA7QUFDSCIsImZpbGUiOiJsaWIvY29tcGlsZWQvZXhwcmVzc2lvbnMvY29uY2F0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2FjaGVkUmVmZXJlbmNlLCBjb21iaW5lVGFnZ2VkIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmV4cG9ydCBjbGFzcyBDb25jYXRSZWZlcmVuY2UgZXh0ZW5kcyBDYWNoZWRSZWZlcmVuY2Uge1xuICAgIGNvbnN0cnVjdG9yKHBhcnRzKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMucGFydHMgPSBwYXJ0cztcbiAgICAgICAgdGhpcy50YWcgPSBjb21iaW5lVGFnZ2VkKHBhcnRzKTtcbiAgICB9XG4gICAgY29tcHV0ZSgpIHtcbiAgICAgICAgbGV0IHBhcnRzID0gbmV3IEFycmF5KCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5wYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5wYXJ0c1tpXS52YWx1ZSgpO1xuICAgICAgICAgICAgaWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBwYXJ0c1tpXSA9IGNhc3RUb1N0cmluZyh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJ0cy5qb2luKCcnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59XG5mdW5jdGlvbiBjYXN0VG9TdHJpbmcodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlWyd0b1N0cmluZyddICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG59Il19

@@ -9,7 +9,7 @@ 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 { combine, CONSTANT_TAG, isConst, ReferenceCache } from '@glimmer/reference';
import { APPEND_OPCODES, UpdatingOpcode } from '../../opcodes';
import { Assert } from './vm';
import ARGS from '../../vm/arguments';
import { ComponentElementOperations } from './dom';
import { Assert } from './vm';
import { CONSTANT_TAG, ReferenceCache, combine, isConst } from '@glimmer/reference';
APPEND_OPCODES.add(55 /* PushComponentManager */, function (vm, _ref) {

@@ -84,4 +84,4 @@ var _definition = _ref.op1;

var definition = void 0;
var manager = void 0;
var definition = void 0,
manager = void 0;
var args = vm.stack.pop();

@@ -165,3 +165,3 @@ var dynamicScope = vm.dynamicScope();

_this.dynamicScope = dynamicScope;
_this.type = 'update-component';
_this.type = "update-component";
var componentTag = manager.getTag(component);

@@ -186,5 +186,5 @@ if (componentTag) {

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

@@ -206,3 +206,3 @@ };

_this2.bounds = bounds;
_this2.type = 'did-update-layout';
_this2.type = "did-update-layout";
_this2.tag = CONSTANT_TAG;

@@ -223,2 +223,2 @@ return _this2;

}(UpdatingOpcode);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2NvbXBvbmVudC5qcyJdLCJuYW1lcyI6WyJjb21iaW5lIiwiQ09OU1RBTlRfVEFHIiwiaXNDb25zdCIsIlJlZmVyZW5jZUNhY2hlIiwiQVBQRU5EX09QQ09ERVMiLCJVcGRhdGluZ09wY29kZSIsIkFSR1MiLCJDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyIsIkFzc2VydCIsImFkZCIsInZtIiwiX2RlZmluaXRpb24iLCJvcDEiLCJkZWZpbml0aW9uIiwiY29uc3RhbnRzIiwiZ2V0T3RoZXIiLCJzdGFjayIsInB1c2giLCJtYW5hZ2VyIiwicmVmZXJlbmNlIiwicG9wIiwiY2FjaGUiLCJ1bmRlZmluZWQiLCJwZWVrIiwidmFsdWUiLCJ1cGRhdGVXaXRoIiwiY29tcG9uZW50IiwicG9zaXRpb25hbCIsInN5bnRoZXRpYyIsIm9wMiIsInNldHVwIiwiX3N0YXRlIiwiZmV0Y2hWYWx1ZSIsImFyZ3MiLCJwcmVwYXJlZEFyZ3MiLCJwcmVwYXJlQXJncyIsImNsZWFyIiwibmFtZWQiLCJwb3NpdGlvbmFsQ291bnQiLCJsZW5ndGgiLCJpIiwibmFtZXMiLCJPYmplY3QiLCJrZXlzIiwibmFtZWRDb3VudCIsImZsYWdzIiwiZHluYW1pY1Njb3BlIiwic3RhdGUiLCJoYXNEZWZhdWx0QmxvY2siLCJjcmVhdGUiLCJlbnYiLCJnZXRTZWxmIiwiVXBkYXRlQ29tcG9uZW50T3Bjb2RlIiwidGFnIiwibmFtZSIsImRlc3RydWN0b3IiLCJnZXREZXN0cnVjdG9yIiwibmV3RGVzdHJveWFibGUiLCJiZWdpbkNhY2hlR3JvdXAiLCJlbGVtZW50cyIsInB1c2hTaW1wbGVCbG9jayIsImFjdGlvbiIsImRpZENyZWF0ZUVsZW1lbnQiLCJleHBlY3RDb25zdHJ1Y3RpbmciLCJleHBlY3RPcGVyYXRpb25zIiwibGF5b3V0Rm9yIiwiYm91bmRzIiwicG9wQmxvY2siLCJkaWRSZW5kZXJMYXlvdXQiLCJkaWRDcmVhdGUiLCJEaWRVcGRhdGVMYXlvdXRPcGNvZGUiLCJjb21taXRDYWNoZUdyb3VwIiwidHlwZSIsImNvbXBvbmVudFRhZyIsImdldFRhZyIsImV2YWx1YXRlIiwiX3ZtIiwidXBkYXRlIiwidG9KU09OIiwiSlNPTiIsInN0cmluZ2lmeSIsImd1aWQiLCJfZ3VpZCIsImRpZFVwZGF0ZUxheW91dCIsImRpZFVwZGF0ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxTQUFTQSxPQUFULEVBQWtCQyxZQUFsQixFQUFnQ0MsT0FBaEMsRUFBeUNDLGNBQXpDLFFBQStELG9CQUEvRDtBQUNBLFNBQVNDLGNBQVQsRUFBeUJDLGNBQXpCLFFBQStDLGVBQS9DO0FBQ0EsT0FBT0MsSUFBUCxNQUFpQixvQkFBakI7QUFDQSxTQUFTQywwQkFBVCxRQUEyQyxPQUEzQztBQUNBLFNBQVNDLE1BQVQsUUFBdUIsTUFBdkI7QUFDQUosZUFBZUssR0FBZixDQUFtQixFQUFuQixDQUFzQiwwQkFBdEIsRUFBa0QsVUFBQ0MsRUFBRCxRQUE4QjtBQUFBLFFBQWxCQyxXQUFrQixRQUF2QkMsR0FBdUI7O0FBQzVFLFFBQUlDLGFBQWFILEdBQUdJLFNBQUgsQ0FBYUMsUUFBYixDQUFzQkosV0FBdEIsQ0FBakI7QUFDQSxRQUFJSyxRQUFRTixHQUFHTSxLQUFmO0FBQ0FBLFVBQU1DLElBQU4sQ0FBV0osVUFBWDtBQUNBRyxVQUFNQyxJQUFOLENBQVdKLFdBQVdLLE9BQXRCO0FBQ0gsQ0FMRDtBQU1BZCxlQUFlSyxHQUFmLENBQW1CLEVBQW5CLENBQXNCLGlDQUF0QixFQUF5RCxjQUFNO0FBQzNELFFBQUlPLFFBQVFOLEdBQUdNLEtBQWY7QUFDQSxRQUFJRyxZQUFZSCxNQUFNSSxHQUFOLEVBQWhCO0FBQ0EsUUFBSUMsUUFBUW5CLFFBQVFpQixTQUFSLElBQXFCRyxTQUFyQixHQUFpQyxJQUFJbkIsY0FBSixDQUFtQmdCLFNBQW5CLENBQTdDO0FBQ0EsUUFBSU4sYUFBYVEsUUFBUUEsTUFBTUUsSUFBTixFQUFSLEdBQXVCSixVQUFVSyxLQUFWLEVBQXhDO0FBQ0FSLFVB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bUJBQVo7QUFDQSxlQUFLbkIsR0FBTCxHQUFXcEQsWUFBWDtBQU5vQztBQU92Qzs7QUFSTCxvQ0FTSTBFLFFBVEoscUJBU2FqRSxFQVRiLEVBU2lCO0FBQUEsWUFDSFEsT0FERyxHQUM0QixJQUQ1QixDQUNIQSxPQURHO0FBQUEsWUFDTVEsU0FETixHQUM0QixJQUQ1QixDQUNNQSxTQUROO0FBQUEsWUFDaUJ3QyxNQURqQixHQUM0QixJQUQ1QixDQUNpQkEsTUFEakI7O0FBRVRoRCxnQkFBUWlFLGVBQVIsQ0FBd0J6RCxTQUF4QixFQUFtQ3dDLE1BQW5DO0FBQ0F4RCxXQUFHd0MsR0FBSCxDQUFPa0MsU0FBUCxDQUFpQjFELFNBQWpCLEVBQTRCUixPQUE1QjtBQUNILEtBYkw7O0FBQUE7QUFBQSxFQUEyQ2IsY0FBM0MiLCJmaWxlIjoibGliL2NvbXBpbGVkL29wY29kZXMvY29tcG9uZW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tYmluZSwgQ09OU1RBTlRfVEFHLCBpc0NvbnN0LCBSZWZlcmVuY2VDYWNoZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBBUFBFTkRfT1BDT0RFUywgVXBkYXRpbmdPcGNvZGUgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCBBUkdTIGZyb20gJy4uLy4uL3ZtL2FyZ3VtZW50cyc7XG5pbXBvcnQgeyBDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyB9IGZyb20gJy4vZG9tJztcbmltcG9ydCB7IEFzc2VydCB9IGZyb20gJy4vdm0nO1xuQVBQRU5EX09QQ09ERVMuYWRkKDU1IC8qIFB1c2hDb21wb25lbnRNYW5hZ2VyICovLCAodm0sIHsgb3AxOiBfZGVmaW5pdGlvbiB9KSA9PiB7XG4gICAgbGV0IGRlZmluaXRpb24gPSB2bS5jb25zdGFudHMuZ2V0T3RoZXIoX2RlZmluaXRpb24pO1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIHN0YWNrLnB1c2goZGVmaW5pdGlvbik7XG4gICAgc3RhY2sucHVzaChkZWZpbml0aW9uLm1hbmFnZXIpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTYgLyogUHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyICovLCB2bSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IHJlZmVyZW5jZSA9IHN0YWNrLnBvcCgpO1xuICAgIGxldCBjYWNoZSA9IGlzQ29uc3QocmVmZXJlbmNlKSA/IHVuZGVmaW5lZCA6IG5ldyBSZWZlcmVuY2VDYWNoZShyZWZlcmVuY2UpO1xuICAgIGxldCBkZWZpbml0aW9uID0gY2FjaGUgPyBjYWNoZS5wZWVrKCkgOiByZWZlcmVuY2UudmFsdWUoKTtcbiAgICBzdGFjay5wdXNoKGRlZmluaXRpb24pO1xuICAgIHN0YWNrLnB1c2goZGVmaW5pdGlvbi5tYW5hZ2VyKTtcbiAgICBpZiAoY2FjaGUpIHtcbiAgICAgICAgdm0udXBkYXRlV2l0aChuZXcgQXNzZXJ0KGNhY2hlKSk7XG4gICAgfVxufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTcgLyogSW5pdGlhbGl6ZUNvbXBvbmVudFN0YXRlICovLCB2bSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IG1hbmFnZXIgPSBzdGFjay5wb3AoKTtcbiAgICBsZXQgZGVmaW5pdGlvbiA9IHN0YWNrLnBvcCgpO1xuICAgIHN0YWNrLnB1c2goeyBkZWZpbml0aW9uLCBtYW5hZ2VyLCBjb21wb25lbnQ6IG51bGwgfSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg1OCAvKiBQdXNoQXJncyAqLywgKHZtLCB7IG9wMTogcG9zaXRpb25hbCwgb3AyOiBzeW50aGV0aWMgfSkgPT4ge1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIEFSR1Muc2V0dXAoc3RhY2ssIHBvc2l0aW9uYWwsICEhc3ludGhldGljKTtcbiAgICBzdGFjay5wdXNoKEFSR1MpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTkgLyogUHJlcGFyZUFyZ3MgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IHsgZGVmaW5pdGlvbiwgbWFuYWdlciB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIGxldCBhcmdzID0gc3RhY2sucG9wKCk7XG4gICAgbGV0IHByZXBhcmVkQXJncyA9IG1hbmFnZXIucHJlcGFyZUFyZ3MoZGVmaW5pdGlvbiwgYXJncyk7XG4gICAgaWYgKHByZXBhcmVkQXJncykge1xuICAgICAgICBhcmdzLmNsZWFyKCk7XG4gICAgICAgIGxldCB7IHBvc2l0aW9uYWwsIG5hbWVkIH0gPSBwcmVwYXJlZEFyZ3M7XG4gICAgICAgIGxldCBwb3NpdGlvbmFsQ291bnQgPSBwb3NpdGlvbmFsLmxlbmd0aDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbmFsQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgc3RhY2sucHVzaChwb3NpdGlvbmFsW2ldKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbmFtZXMgPSBPYmplY3Qua2V5cyhuYW1lZCk7XG4gICAgICAgIGxldCBuYW1lZENvdW50ID0gbmFtZXMubGVuZ3RoO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVkQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgc3RhY2sucHVzaChuYW1lZFtuYW1lc1tpXV0pO1xuICAgICAgICB9XG4gICAgICAgIHN0YWNrLnB1c2gobmFtZXMpO1xuICAgICAgICBhcmdzLnNldHVwKHN0YWNrLCBwb3NpdGlvbmFsQ291bnQsIHRydWUpO1xuICAgIH1cbiAgICBzdGFjay5wdXNoKGFyZ3MpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjAgLyogQ3JlYXRlQ29tcG9uZW50ICovLCAodm0sIHsgb3AxOiBmbGFncywgb3AyOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCBkZWZpbml0aW9uO1xuICAgIGxldCBtYW5hZ2VyO1xuICAgIGxldCBhcmdzID0gdm0uc3RhY2sucG9wKCk7XG4gICAgbGV0IGR5bmFtaWNTY29wZSA9IHZtLmR5bmFtaWNTY29wZSgpO1xuICAgIGxldCBzdGF0ZSA9ICh7IGRlZmluaXRpb24sIG1hbmFnZXIgfSA9IHZtLmZldGNoVmFsdWUoX3N0YXRlKSk7XG4gICAgbGV0IGhhc0RlZmF1bHRCbG9jayA9IGZsYWdzICYgMGIwMTtcbiAgICBsZXQgY29tcG9uZW50ID0gbWFuYWdlci5jcmVhdGUodm0uZW52LCBkZWZpbml0aW9uLCBhcmdzLCBkeW5hbWljU2NvcGUsIHZtLmdldFNlbGYoKSwgISFoYXNEZWZhdWx0QmxvY2spO1xuICAgIHN0YXRlLmNvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgICB2bS51cGRhdGVXaXRoKG5ldyBVcGRhdGVDb21wb25lbnRPcGNvZGUoYXJncy50YWcsIGRlZmluaXRpb24ubmFtZSwgY29tcG9uZW50LCBtYW5hZ2VyLCBkeW5hbWljU2NvcGUpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDYxIC8qIFJlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvciAqLywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgeyBtYW5hZ2VyLCBjb21wb25lbnQgfSA9IHZtLmZldGNoVmFsdWUoX3N0YXRlKTtcbiAgICBsZXQgZGVzdHJ1Y3RvciA9IG1hbmFnZXIuZ2V0RGVzdHJ1Y3Rvcihjb21wb25lbnQpO1xuICAgIGlmIChkZXN0cnVjdG9yKSB2bS5uZXdEZXN0cm95YWJsZShkZXN0cnVjdG9yKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDY1IC8qIEJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24gKi8sIHZtID0+IHtcbiAgICB2bS5iZWdpbkNhY2hlR3JvdXAoKTtcbiAgICB2bS5lbGVtZW50cygpLnB1c2hTaW1wbGVCbG9jaygpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjIgLyogUHVzaENvbXBvbmVudE9wZXJhdGlvbnMgKi8sIHZtID0+IHtcbiAgICB2bS5zdGFjay5wdXNoKG5ldyBDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyh2bS5lbnYpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDY3IC8qIERpZENyZWF0ZUVsZW1lbnQgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgbGV0IGFjdGlvbiA9ICdEaWRDcmVhdGVFbGVtZW50T3Bjb2RlI2V2YWx1YXRlJztcbiAgICBtYW5hZ2VyLmRpZENyZWF0ZUVsZW1lbnQoY29tcG9uZW50LCB2bS5lbGVtZW50cygpLmV4cGVjdENvbnN0cnVjdGluZyhhY3Rpb24pLCB2bS5lbGVtZW50cygpLmV4cGVjdE9wZXJhdGlvbnMoYWN0aW9uKSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2MyAvKiBHZXRDb21wb25lbnRTZWxmICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCBzdGF0ZSA9IHZtLmZldGNoVmFsdWUoX3N0YXRlKTtcbiAgICB2bS5zdGFjay5wdXNoKHN0YXRlLm1hbmFnZXIuZ2V0U2VsZihzdGF0ZS5jb21wb25lbnQpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDY0IC8qIEdldENvbXBvbmVudExheW91dCAqLywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgeyBtYW5hZ2VyLCBkZWZpbml0aW9uLCBjb21wb25lbnQgfSA9IHZtLmZldGNoVmFsdWUoX3N0YXRlKTtcbiAgICB2bS5zdGFjay5wdXNoKG1hbmFnZXIubGF5b3V0Rm9yKGRlZmluaXRpb24sIGNvbXBvbmVudCwgdm0uZW52KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2OCAvKiBEaWRSZW5kZXJMYXlvdXQgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgbGV0IGJvdW5kcyA9IHZtLmVsZW1lbnRzKCkucG9wQmxvY2soKTtcbiAgICBtYW5hZ2VyLmRpZFJlbmRlckxheW91dChjb21wb25lbnQsIGJvdW5kcyk7XG4gICAgdm0uZW52LmRpZENyZWF0ZShjb21wb25lbnQsIG1hbmFnZXIpO1xuICAgIHZtLnVwZGF0ZVdpdGgobmV3IERpZFVwZGF0ZUxheW91dE9wY29kZShtYW5hZ2VyLCBjb21wb25lbnQsIGJvdW5kcykpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjYgLyogQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24gKi8sIHZtID0+IHZtLmNvbW1pdENhY2hlR3JvdXAoKSk7XG5leHBvcnQgY2xhc3MgVXBkYXRlQ29tcG9uZW50T3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKHRhZywgbmFtZSwgY29tcG9uZW50LCBtYW5hZ2VyLCBkeW5hbWljU2NvcGUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5jb21wb25lbnQgPSBjb21wb25lbnQ7XG4gICAgICAgIHRoaXMubWFuYWdlciA9IG1hbmFnZXI7XG4gICAgICAgIHRoaXMuZHluYW1pY1Njb3BlID0gZHluYW1pY1Njb3BlO1xuICAgICAgICB0aGlzLnR5cGUgPSAndXBkYXRlLWNvbXBvbmVudCc7XG4gICAgICAgIGxldCBjb21wb25lbnRUYWcgPSBtYW5hZ2VyLmdldFRhZyhjb21wb25lbnQpO1xuICAgICAgICBpZiAoY29tcG9uZW50VGFnKSB7XG4gICAgICAgICAgICB0aGlzLnRhZyA9IGNvbWJpbmUoW3RhZywgY29tcG9uZW50VGFnXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRhZyA9IHRhZztcbiAgICAgICAgfVxuICAgIH1cbiAgICBldmFsdWF0ZShfdm0pIHtcbiAgICAgICAgbGV0IHsgY29tcG9uZW50LCBtYW5hZ2VyLCBkeW5hbWljU2NvcGUgfSA9IHRoaXM7XG4gICAgICAgIG1hbmFnZXIudXBkYXRlKGNvbXBvbmVudCwgZHluYW1pY1Njb3BlKTtcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYXJnczogW0pTT04uc3RyaW5naWZ5KHRoaXMubmFtZSldLFxuICAgICAgICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZVxuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBEaWRVcGRhdGVMYXlvdXRPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gICAgY29uc3RydWN0b3IobWFuYWdlciwgY29tcG9uZW50LCBib3VuZHMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5tYW5hZ2VyID0gbWFuYWdlcjtcbiAgICAgICAgdGhpcy5jb21wb25lbnQgPSBjb21wb25lbnQ7XG4gICAgICAgIHRoaXMuYm91bmRzID0gYm91bmRzO1xuICAgICAgICB0aGlzLnR5cGUgPSAnZGlkLXVwZGF0ZS1sYXlvdXQnO1xuICAgICAgICB0aGlzLnRhZyA9IENPTlNUQU5UX1RBRztcbiAgICB9XG4gICAgZXZhbHVhdGUodm0pIHtcbiAgICAgICAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50LCBib3VuZHMgfSA9IHRoaXM7XG4gICAgICAgIG1hbmFnZXIuZGlkVXBkYXRlTGF5b3V0KGNvbXBvbmVudCwgYm91bmRzKTtcbiAgICAgICAgdm0uZW52LmRpZFVwZGF0ZShjb21wb25lbnQsIG1hbmFnZXIpO1xuICAgIH1cbn0iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2NvbXBvbmVudC5qcyJdLCJuYW1lcyI6WyJBUFBFTkRfT1BDT0RFUyIsIlVwZGF0aW5nT3Bjb2RlIiwiQXNzZXJ0IiwiQVJHUyIsIkNvbXBvbmVudEVsZW1lbnRPcGVyYXRpb25zIiwiQ09OU1RBTlRfVEFHIiwiUmVmZXJlbmNlQ2FjaGUiLCJjb21iaW5lIiwiaXNDb25zdCIsImFkZCIsInZtIiwiX2RlZmluaXRpb24iLCJvcDEiLCJkZWZpbml0aW9uIiwiY29uc3RhbnRzIiwiZ2V0T3RoZXIiLCJzdGFjayIsInB1c2giLCJtYW5hZ2VyIiwicmVmZXJlbmNlIiwicG9wIiwiY2FjaGUiLCJ1bmRlZmluZWQiLCJwZWVrIiwidmFsdWUiLCJ1cGRhdGVXaXRoIiwiY29tcG9uZW50IiwicG9zaXRpb25hbCIsInN5bnRoZXRpYyIsIm9wMiIsInNldHVwIiwiX3N0YXRlIiwiZmV0Y2hWYWx1ZSIsImFyZ3MiLCJwcmVwYXJlZEFyZ3MiLCJwcmVwYXJlQXJncyIsImNsZWFyIiwibmFtZWQiLCJwb3NpdGlvbmFsQ291bnQiLCJsZW5ndGgiLCJpIiwibmFtZXMiLCJPYmplY3QiLCJrZXlzIiwibmFtZWRDb3VudCIsImZsYWdzIiwiZHluYW1pY1Njb3BlIiwic3RhdGUiLCJoYXNEZWZhdWx0QmxvY2siLCJjcmVhdGUiLCJlbnYiLCJnZXRTZWxmIiwiVXBkYXRlQ29tcG9uZW50T3Bjb2RlIiwidGFnIiwibmFtZSIsImRlc3RydWN0b3IiLCJnZXREZXN0cnVjdG9yIiwibmV3RGVzdHJveWFibGUiLCJiZWdpbkNhY2hlR3JvdXAiLCJlbGVtZW50cyIsInB1c2hTaW1wbGVCbG9jayIsImFjdGlvbiIsImRpZENyZWF0ZUVsZW1lbnQiLCJleHBlY3RDb25zdHJ1Y3RpbmciLCJleHBlY3RPcGVyYXRpb25zIiwibGF5b3V0Rm9yIiwiYm91bmRzIiwicG9wQmxvY2siLCJkaWRSZW5kZXJMYXlvdXQiLCJkaWRDcmVhdGUiLCJEaWRVcGRhdGVMYXlvdXRPcGNvZGUiLCJjb21taXRDYWNoZUdyb3VwIiwidHlwZSIsImNvbXBvbmVudFRhZyIsImdldFRhZyIsImV2YWx1YXRlIiwiX3ZtIiwidXBkYXRlIiwidG9KU09OIiwiZ3VpZCIsIl9ndWlkIiwiSlNPTiIsInN0cmluZ2lmeSIsImRpZFVwZGF0ZUxheW91dCIsImRpZFVwZGF0ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxTQUFTQSxjQUFULEVBQXlCQyxjQUF6QixRQUErQyxlQUEvQztBQUNBLFNBQVNDLE1BQVQsUUFBdUIsTUFBdkI7QUFDQSxPQUFPQyxJQUFQLE1BQWlCLG9CQUFqQjtBQUNBLFNBQVNDLDBCQUFULFFBQTJDLE9BQTNDO0FBQ0EsU0FBU0MsWUFBVCxFQUF1QkMsY0FBdkIsRUFBdUNDLE9BQXZDLEVBQWdEQyxPQUFoRCxRQUErRCxvQkFBL0Q7QUFDQVIsZUFBZVMsR0FBZixDQUFtQixFQUFuQixDQUFzQiwwQkFBdEIsRUFBa0QsVUFBQ0MsRUFBRCxRQUE4QjtBQUFBLFFBQWxCQyxXQUFrQixRQUF2QkMsR0FBdUI7O0FBQzVFLFFBQUlDLGFBQWFILEdBQUdJLFNBQUgsQ0FBYUMsUUFBYixDQUFzQkosV0FBdEIsQ0FBakI7QUFDQSxRQUFJSyxRQUFRTixHQUFHTSxLQUFmO0FBQ0FBLFVBQU1DLElBQU4sQ0FBV0osVUFBWDtBQUNBRyxVQUFNQyxJQUFOLENBQVdKLFdBQVdLLE9BQXRCO0FBQ0gsQ0FMRDtBQU1BbEIsZUFBZVMsR0FBZixDQUFtQixFQUFuQixDQUFzQixpQ0FBdEIsRUFBeUQsY0FBTTtBQUMzRCxRQUFJTyxRQUFRTixHQUFHTSxLQUFmO0FBQ0EsUUFBSUcsWUFBWUgsTUFBTUksR0FBTixFQUFoQjtBQUNBLFFBQUlDLFFBQVFiLFFBQVFXLFNBQVIsSUFBcUJHLFNBQXJCLEdBQWlDLElBQUloQixjQUFKLENBQW1CYSxTQUFuQixDQUE3QztBQUNBLFFBQUlOLGFBQWFRLFFBQVFBLE1BQU1FLElBQU4sRUFBUixHQUF1QkosVUFBVUssS0FBVixFQUF4QztBQUNBUixVQUFN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bUJBQVo7QUFDQSxlQUFLbkIsR0FBTCxHQUFXaEQsWUFBWDtBQU5vQztBQU92Qzs7QUFSTCxvQ0FTSXNFLFFBVEoscUJBU2FqRSxFQVRiLEVBU2lCO0FBQUEsWUFDSFEsT0FERyxHQUM0QixJQUQ1QixDQUNIQSxPQURHO0FBQUEsWUFDTVEsU0FETixHQUM0QixJQUQ1QixDQUNNQSxTQUROO0FBQUEsWUFDaUJ3QyxNQURqQixHQUM0QixJQUQ1QixDQUNpQkEsTUFEakI7O0FBRVRoRCxnQkFBUWlFLGVBQVIsQ0FBd0J6RCxTQUF4QixFQUFtQ3dDLE1BQW5DO0FBQ0F4RCxXQUFHd0MsR0FBSCxDQUFPa0MsU0FBUCxDQUFpQjFELFNBQWpCLEVBQTRCUixPQUE1QjtBQUNILEtBYkw7O0FBQUE7QUFBQSxFQUEyQ2pCLGNBQTNDIiwiZmlsZSI6ImxpYi9jb21waWxlZC9vcGNvZGVzL2NvbXBvbmVudC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUEVORF9PUENPREVTLCBVcGRhdGluZ09wY29kZSB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IHsgQXNzZXJ0IH0gZnJvbSAnLi92bSc7XG5pbXBvcnQgQVJHUyBmcm9tICcuLi8uLi92bS9hcmd1bWVudHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50RWxlbWVudE9wZXJhdGlvbnMgfSBmcm9tICcuL2RvbSc7XG5pbXBvcnQgeyBDT05TVEFOVF9UQUcsIFJlZmVyZW5jZUNhY2hlLCBjb21iaW5lLCBpc0NvbnN0IH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbkFQUEVORF9PUENPREVTLmFkZCg1NSAvKiBQdXNoQ29tcG9uZW50TWFuYWdlciAqLywgKHZtLCB7IG9wMTogX2RlZmluaXRpb24gfSkgPT4ge1xuICAgIGxldCBkZWZpbml0aW9uID0gdm0uY29uc3RhbnRzLmdldE90aGVyKF9kZWZpbml0aW9uKTtcbiAgICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgICBzdGFjay5wdXNoKGRlZmluaXRpb24pO1xuICAgIHN0YWNrLnB1c2goZGVmaW5pdGlvbi5tYW5hZ2VyKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDU2IC8qIFB1c2hEeW5hbWljQ29tcG9uZW50TWFuYWdlciAqLywgdm0gPT4ge1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIGxldCByZWZlcmVuY2UgPSBzdGFjay5wb3AoKTtcbiAgICBsZXQgY2FjaGUgPSBpc0NvbnN0KHJlZmVyZW5jZSkgPyB1bmRlZmluZWQgOiBuZXcgUmVmZXJlbmNlQ2FjaGUocmVmZXJlbmNlKTtcbiAgICBsZXQgZGVmaW5pdGlvbiA9IGNhY2hlID8gY2FjaGUucGVlaygpIDogcmVmZXJlbmNlLnZhbHVlKCk7XG4gICAgc3RhY2sucHVzaChkZWZpbml0aW9uKTtcbiAgICBzdGFjay5wdXNoKGRlZmluaXRpb24ubWFuYWdlcik7XG4gICAgaWYgKGNhY2hlKSB7XG4gICAgICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICAgIH1cbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDU3IC8qIEluaXRpYWxpemVDb21wb25lbnRTdGF0ZSAqLywgdm0gPT4ge1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIGxldCBtYW5hZ2VyID0gc3RhY2sucG9wKCk7XG4gICAgbGV0IGRlZmluaXRpb24gPSBzdGFjay5wb3AoKTtcbiAgICBzdGFjay5wdXNoKHsgZGVmaW5pdGlvbiwgbWFuYWdlciwgY29tcG9uZW50OiBudWxsIH0pO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTggLyogUHVzaEFyZ3MgKi8sICh2bSwgeyBvcDE6IHBvc2l0aW9uYWwsIG9wMjogc3ludGhldGljIH0pID0+IHtcbiAgICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgICBBUkdTLnNldHVwKHN0YWNrLCBwb3NpdGlvbmFsLCAhIXN5bnRoZXRpYyk7XG4gICAgc3RhY2sucHVzaChBUkdTKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDU5IC8qIFByZXBhcmVBcmdzICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIGxldCB7IGRlZmluaXRpb24sIG1hbmFnZXIgfSA9IHZtLmZldGNoVmFsdWUoX3N0YXRlKTtcbiAgICBsZXQgYXJncyA9IHN0YWNrLnBvcCgpO1xuICAgIGxldCBwcmVwYXJlZEFyZ3MgPSBtYW5hZ2VyLnByZXBhcmVBcmdzKGRlZmluaXRpb24sIGFyZ3MpO1xuICAgIGlmIChwcmVwYXJlZEFyZ3MpIHtcbiAgICAgICAgYXJncy5jbGVhcigpO1xuICAgICAgICBsZXQgeyBwb3NpdGlvbmFsLCBuYW1lZCB9ID0gcHJlcGFyZWRBcmdzO1xuICAgICAgICBsZXQgcG9zaXRpb25hbENvdW50ID0gcG9zaXRpb25hbC5sZW5ndGg7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25hbENvdW50OyBpKyspIHtcbiAgICAgICAgICAgIHN0YWNrLnB1c2gocG9zaXRpb25hbFtpXSk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IG5hbWVzID0gT2JqZWN0LmtleXMobmFtZWQpO1xuICAgICAgICBsZXQgbmFtZWRDb3VudCA9IG5hbWVzLmxlbmd0aDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lZENvdW50OyBpKyspIHtcbiAgICAgICAgICAgIHN0YWNrLnB1c2gobmFtZWRbbmFtZXNbaV1dKTtcbiAgICAgICAgfVxuICAgICAgICBzdGFjay5wdXNoKG5hbWVzKTtcbiAgICAgICAgYXJncy5zZXR1cChzdGFjaywgcG9zaXRpb25hbENvdW50LCB0cnVlKTtcbiAgICB9XG4gICAgc3RhY2sucHVzaChhcmdzKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDYwIC8qIENyZWF0ZUNvbXBvbmVudCAqLywgKHZtLCB7IG9wMTogZmxhZ3MsIG9wMjogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgZGVmaW5pdGlvbiwgbWFuYWdlcjtcbiAgICBsZXQgYXJncyA9IHZtLnN0YWNrLnBvcCgpO1xuICAgIGxldCBkeW5hbWljU2NvcGUgPSB2bS5keW5hbWljU2NvcGUoKTtcbiAgICBsZXQgc3RhdGUgPSAoeyBkZWZpbml0aW9uLCBtYW5hZ2VyIH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSkpO1xuICAgIGxldCBoYXNEZWZhdWx0QmxvY2sgPSBmbGFncyAmIDBiMDE7XG4gICAgbGV0IGNvbXBvbmVudCA9IG1hbmFnZXIuY3JlYXRlKHZtLmVudiwgZGVmaW5pdGlvbiwgYXJncywgZHluYW1pY1Njb3BlLCB2bS5nZXRTZWxmKCksICEhaGFzRGVmYXVsdEJsb2NrKTtcbiAgICBzdGF0ZS5jb21wb25lbnQgPSBjb21wb25lbnQ7XG4gICAgdm0udXBkYXRlV2l0aChuZXcgVXBkYXRlQ29tcG9uZW50T3Bjb2RlKGFyZ3MudGFnLCBkZWZpbml0aW9uLm5hbWUsIGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlKSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2MSAvKiBSZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3IgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgbGV0IGRlc3RydWN0b3IgPSBtYW5hZ2VyLmdldERlc3RydWN0b3IoY29tcG9uZW50KTtcbiAgICBpZiAoZGVzdHJ1Y3Rvcikgdm0ubmV3RGVzdHJveWFibGUoZGVzdHJ1Y3Rvcik7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2NSAvKiBCZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uICovLCB2bSA9PiB7XG4gICAgdm0uYmVnaW5DYWNoZUdyb3VwKCk7XG4gICAgdm0uZWxlbWVudHMoKS5wdXNoU2ltcGxlQmxvY2soKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDYyIC8qIFB1c2hDb21wb25lbnRPcGVyYXRpb25zICovLCB2bSA9PiB7XG4gICAgdm0uc3RhY2sucHVzaChuZXcgQ29tcG9uZW50RWxlbWVudE9wZXJhdGlvbnModm0uZW52KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2NyAvKiBEaWRDcmVhdGVFbGVtZW50ICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCB7IG1hbmFnZXIsIGNvbXBvbmVudCB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIGxldCBhY3Rpb24gPSAnRGlkQ3JlYXRlRWxlbWVudE9wY29kZSNldmFsdWF0ZSc7XG4gICAgbWFuYWdlci5kaWRDcmVhdGVFbGVtZW50KGNvbXBvbmVudCwgdm0uZWxlbWVudHMoKS5leHBlY3RDb25zdHJ1Y3RpbmcoYWN0aW9uKSwgdm0uZWxlbWVudHMoKS5leHBlY3RPcGVyYXRpb25zKGFjdGlvbikpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjMgLyogR2V0Q29tcG9uZW50U2VsZiAqLywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgc3RhdGUgPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgdm0uc3RhY2sucHVzaChzdGF0ZS5tYW5hZ2VyLmdldFNlbGYoc3RhdGUuY29tcG9uZW50KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2NCAvKiBHZXRDb21wb25lbnRMYXlvdXQgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHsgbWFuYWdlciwgZGVmaW5pdGlvbiwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgdm0uc3RhY2sucHVzaChtYW5hZ2VyLmxheW91dEZvcihkZWZpbml0aW9uLCBjb21wb25lbnQsIHZtLmVudikpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjggLyogRGlkUmVuZGVyTGF5b3V0ICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCB7IG1hbmFnZXIsIGNvbXBvbmVudCB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIGxldCBib3VuZHMgPSB2bS5lbGVtZW50cygpLnBvcEJsb2NrKCk7XG4gICAgbWFuYWdlci5kaWRSZW5kZXJMYXlvdXQoY29tcG9uZW50LCBib3VuZHMpO1xuICAgIHZtLmVudi5kaWRDcmVhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcbiAgICB2bS51cGRhdGVXaXRoKG5ldyBEaWRVcGRhdGVMYXlvdXRPcGNvZGUobWFuYWdlciwgY29tcG9uZW50LCBib3VuZHMpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDY2IC8qIENvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uICovLCB2bSA9PiB2bS5jb21taXRDYWNoZUdyb3VwKCkpO1xuZXhwb3J0IGNsYXNzIFVwZGF0ZUNvbXBvbmVudE9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3Rvcih0YWcsIG5hbWUsIGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuY29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgICAgICB0aGlzLm1hbmFnZXIgPSBtYW5hZ2VyO1xuICAgICAgICB0aGlzLmR5bmFtaWNTY29wZSA9IGR5bmFtaWNTY29wZTtcbiAgICAgICAgdGhpcy50eXBlID0gXCJ1cGRhdGUtY29tcG9uZW50XCI7XG4gICAgICAgIGxldCBjb21wb25lbnRUYWcgPSBtYW5hZ2VyLmdldFRhZyhjb21wb25lbnQpO1xuICAgICAgICBpZiAoY29tcG9uZW50VGFnKSB7XG4gICAgICAgICAgICB0aGlzLnRhZyA9IGNvbWJpbmUoW3RhZywgY29tcG9uZW50VGFnXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRhZyA9IHRhZztcbiAgICAgICAgfVxuICAgIH1cbiAgICBldmFsdWF0ZShfdm0pIHtcbiAgICAgICAgbGV0IHsgY29tcG9uZW50LCBtYW5hZ2VyLCBkeW5hbWljU2NvcGUgfSA9IHRoaXM7XG4gICAgICAgIG1hbmFnZXIudXBkYXRlKGNvbXBvbmVudCwgZHluYW1pY1Njb3BlKTtcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgICAgICAgIGFyZ3M6IFtKU09OLnN0cmluZ2lmeSh0aGlzLm5hbWUpXVxuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBEaWRVcGRhdGVMYXlvdXRPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gICAgY29uc3RydWN0b3IobWFuYWdlciwgY29tcG9uZW50LCBib3VuZHMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5tYW5hZ2VyID0gbWFuYWdlcjtcbiAgICAgICAgdGhpcy5jb21wb25lbnQgPSBjb21wb25lbnQ7XG4gICAgICAgIHRoaXMuYm91bmRzID0gYm91bmRzO1xuICAgICAgICB0aGlzLnR5cGUgPSBcImRpZC11cGRhdGUtbGF5b3V0XCI7XG4gICAgICAgIHRoaXMudGFnID0gQ09OU1RBTlRfVEFHO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICBsZXQgeyBtYW5hZ2VyLCBjb21wb25lbnQsIGJvdW5kcyB9ID0gdGhpcztcbiAgICAgICAgbWFuYWdlci5kaWRVcGRhdGVMYXlvdXQoY29tcG9uZW50LCBib3VuZHMpO1xuICAgICAgICB2bS5lbnYuZGlkVXBkYXRlKGNvbXBvbmVudCwgbWFuYWdlcik7XG4gICAgfVxufSJdfQ==

@@ -9,9 +9,10 @@ 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 { isConst, isModified, map, ReferenceCache } from '@glimmer/reference';
import { clear, Cursor } from '../../bounds';
import { isSafeString, isNode, isString, cautiousInsert, trustingInsert } from '../../upsert';
import { isComponentDefinition } from '../../component/interfaces';
import { UpdatingOpcode } from '../../opcodes';
import { ReferenceCache, isModified, isConst, map } from '@glimmer/reference';
import { Cursor, clear } from '../../bounds';
import { Fragment } from '../../builder';
import { isComponentDefinition } from '../../component/interfaces';
import { APPEND_OPCODES, UpdatingOpcode } from '../../opcodes';
import { ConditionalReference } from '../../references';
import { cautiousInsert, isNode, isSafeString, isString, trustingInsert } from '../../upsert';
import { APPEND_OPCODES } from '../../opcodes';
APPEND_OPCODES.add(25 /* DynamicContent */, function (vm, _ref) {

@@ -24,3 +25,3 @@ var append = _ref.op1;

function isEmpty(value) {
return value === null || value === undefined || typeof value.toString !== 'function';
return value === null || value === undefined || typeof value['toString'] !== 'function';
}

@@ -68,4 +69,4 @@ export function normalizeTextValue(value) {

var normalized = this.normalize(reference);
var value = void 0;
var cache = void 0;
var value = void 0,
cache = void 0;
if (isConst(reference)) {

@@ -144,5 +145,5 @@ value = normalized.value();

return {
details: { lastValue: JSON.stringify(cache.peek()) },
guid: guid,
type: type
type: type,
details: { lastValue: JSON.stringify(cache.peek()) }
};

@@ -245,2 +246,2 @@ };

}(UpdateOpcode);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2NvbnRlbnQuanMiXSwibmFtZXMiOlsiaXNDb25zdCIsImlzTW9kaWZpZWQiLCJtYXAiLCJSZWZlcmVuY2VDYWNoZSIsImNsZWFyIiwiQ3Vyc29yIiwiRnJhZ21lbnQiLCJpc0NvbXBvbmVudERlZmluaXRpb24iLCJBUFBFTkRfT1BDT0RFUyIsIlVwZGF0aW5nT3Bjb2RlIiwiQ29uZGl0aW9uYWxSZWZlcmVuY2UiLCJjYXV0aW91c0luc2VydCIsImlzTm9kZSIsImlzU2FmZVN0cmluZyIsImlzU3RyaW5nIiwidHJ1c3RpbmdJbnNlcnQiLCJhZGQiLCJ2bSIsImFwcGVuZCIsIm9wMSIsIm9wY29kZSIsImNvbnN0YW50cyIsImdldE90aGVyIiwiZXZhbHVhdGUiLCJpc0VtcHR5IiwidmFsdWUiLCJ1bmRlZmluZWQiLCJ0b1N0cmluZyIsIm5vcm1hbGl6ZVRleHRWYWx1ZSIsIlN0cmluZyIsIm5vcm1hbGl6ZVRydXN0ZWRWYWx1ZSIsInRvSFRNTCIsIm5vcm1hbGl6ZVZhbHVlIiwiQXBwZW5kRHluYW1pY09wY29kZSIsInJlZmVyZW5jZSIsInN0YWNrIiwicG9wIiwibm9ybWFsaXplZCIsIm5vcm1hbGl6ZSIsImNhY2hlIiwicGVlayIsImVsZW1lbnRzIiwidXBzZXJ0IiwiaW5zZXJ0IiwiZW52IiwiZ2V0QXBwZW5kT3BlcmF0aW9ucyIsImJvdW5kcyIsIm5ld0JvdW5kcyIsInVwZGF0ZVdpdGgiLCJJc0NvbXBvbmVudERlZmluaXRpb25SZWZlcmVuY2UiLCJjcmVhdGUiLCJpbm5lciIsInRvQm9vbCIsIlVwZGF0ZU9wY29kZSIsInRhZyIsInJldmFsaWRhdGUiLCJkb20iLCJ1cGRhdGUiLCJjdXJzb3IiLCJwYXJlbnRFbGVtZW50IiwidG9KU09OIiwiZ3VpZCIsIl9ndWlkIiwidHlwZSIsImRldGFpbHMiLCJsYXN0VmFsdWUiLCJKU09OIiwic3RyaW5naWZ5IiwiT3B0aW1pemVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUiLCJhcmd1bWVudHMiLCJfdm0iLCJfcmVmZXJlbmNlIiwiT3B0aW1pemVkQ2F1dGlvdXNVcGRhdGVPcGNvZGUiLCJPcHRpbWl6ZWRUcnVzdGluZ0FwcGVuZE9wY29kZSIsIk9wdGltaXplZFRydXN0aW5nVXBkYXRlT3Bjb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLFNBQVNBLE9BQVQsRUFBa0JDLFVBQWxCLEVBQThCQyxHQUE5QixFQUFtQ0MsY0FBbkMsUUFBeUQsb0JBQXpEO0FBQ0EsU0FBU0MsS0FBVCxFQUFnQkMsTUFBaEIsUUFBOEIsY0FBOUI7QUFDQSxTQUFTQyxRQUFULFFBQXlCLGVBQXpCO0FBQ0EsU0FBU0MscUJBQVQsUUFBc0MsNEJBQXRDO0FBQ0EsU0FBU0MsY0FBVCxFQUF5QkMsY0FBekIsUUFBK0MsZUFBL0M7QUFDQSxTQUFTQyxvQkFBVCxRQUFxQyxrQkFBckM7QUFDQSxTQUFTQyxjQUFULEVBQXlCQyxNQUF6QixFQUFpQ0MsWUFBakMsRUFBK0NDLFFBQS9DLEVBQXlEQyxjQUF6RCxRQUErRSxjQUEvRTtBQUNBUCxlQUFlUSxHQUFmLENBQW1CLEVBQW5CLENBQXNCLG9CQUF0QixFQUE0QyxVQUFDQyxFQUFELFFBQXlCO0FBQUEsUUFBYkMsTUFBYSxRQUFsQkMsR0FBa0I7O0FBQ2pFLFFBQUlDLFNBQVNILEdBQUdJLFNBQUgsQ0FBYUMsUUFBYixDQUFzQkosTUFBdEIsQ0FBYjtBQUNBRSxXQUFPRyxRQUFQLENBQWdCTixFQUFoQjtBQUNILENBSEQ7QUFJQSxTQUFTTyxPQUFULENBQWlCQyxLQUFqQixFQUF3QjtBQUNwQixXQUFPQSxVQUFVLElBQVYsSUFBa0JBLFVBQVVDLFNBQTVCLElBQXlDLE9BQU9ELE1BQU1FLFFBQWIsS0FBMEIsVUFBMUU7QUFDSDtBQUNELE9BQU8sU0FBU0Msa0JBQVQsQ0FBNEJILEtBQTVCLEVBQW1DO0FBQ3RDLFFBQUlELFFBQVFDLEtBQVIsQ0FBSixFQUFvQjtBQUNoQixlQUFPLEVBQVA7QUFDSDtBQUNELFdBQU9JLE9BQU9KLEtBQVAsQ0FBUDtBQUNI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QUFDSCxLQVZMOztBQUFBLDRDQVdJdUIsVUFYSix1QkFXZXNCLEdBWGYsRUFXb0JDLFVBWHBCLEVBV2dDaEMsS0FYaEMsRUFXdUNPLE1BWHZDLEVBVytDSixNQVgvQyxFQVd1RDtBQUMvQyxlQUFPLElBQUlnQyw2QkFBSixDQUFrQ25DLEtBQWxDLEVBQXlDTyxNQUF6QyxFQUFpREosTUFBakQsQ0FBUDtBQUNILEtBYkw7O0FBQUE7QUFBQSxFQUFtRFQsbUJBQW5EOztJQWVNeUMsNkI7OztBQUNGLDZDQUFjO0FBQUE7O0FBQUEsc0RBQ1YsMkJBQVNMLFNBQVQsQ0FEVTs7QUFFVixlQUFLTixJQUFMLEdBQVksMkJBQVo7QUFGVTtBQUdiOzs0Q0FDRHBCLE0sbUJBQU9hLEcsRUFBS0UsTSxFQUFRakMsSyxFQUFPO0FBQ3ZCLGVBQU9WLGVBQWV5QyxHQUFmLEVBQW9CRSxNQUFwQixFQUE0QmpDLEtBQTVCLENBQVA7QUFDSCxLOzs7RUFQdUM0QixZIiwiZmlsZSI6ImxpYi9jb21waWxlZC9vcGNvZGVzL2NvbnRlbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0NvbnN0LCBpc01vZGlmaWVkLCBtYXAsIFJlZmVyZW5jZUNhY2hlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IGNsZWFyLCBDdXJzb3IgfSBmcm9tICcuLi8uLi9ib3VuZHMnO1xuaW1wb3J0IHsgRnJhZ21lbnQgfSBmcm9tICcuLi8uLi9idWlsZGVyJztcbmltcG9ydCB7IGlzQ29tcG9uZW50RGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL2NvbXBvbmVudC9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEFQUEVORF9PUENPREVTLCBVcGRhdGluZ09wY29kZSB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IHsgQ29uZGl0aW9uYWxSZWZlcmVuY2UgfSBmcm9tICcuLi8uLi9yZWZlcmVuY2VzJztcbmltcG9ydCB7IGNhdXRpb3VzSW5zZXJ0LCBpc05vZGUsIGlzU2FmZVN0cmluZywgaXNTdHJpbmcsIHRydXN0aW5nSW5zZXJ0IH0gZnJvbSAnLi4vLi4vdXBzZXJ0JztcbkFQUEVORF9PUENPREVTLmFkZCgyNSAvKiBEeW5hbWljQ29udGVudCAqLywgKHZtLCB7IG9wMTogYXBwZW5kIH0pID0+IHtcbiAgICBsZXQgb3Bjb2RlID0gdm0uY29uc3RhbnRzLmdldE90aGVyKGFwcGVuZCk7XG4gICAgb3Bjb2RlLmV2YWx1YXRlKHZtKTtcbn0pO1xuZnVuY3Rpb24gaXNFbXB0eSh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiB2YWx1ZS50b1N0cmluZyAhPT0gJ2Z1bmN0aW9uJztcbn1cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVUZXh0VmFsdWUodmFsdWUpIHtcbiAgICBpZiAoaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cbmZ1bmN0aW9uIG5vcm1hbGl6ZVRydXN0ZWRWYWx1ZSh2YWx1ZSkge1xuICAgIGlmIChpc0VtcHR5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBpZiAoaXNTYWZlU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWUudG9IVE1MKCk7XG4gICAgfVxuICAgIGlmIChpc05vZGUodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG59XG5mdW5jdGlvbiBub3JtYWxpemVWYWx1ZSh2YWx1ZSkge1xuICAgIGlmIChpc0VtcHR5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBpZiAoaXNTYWZlU3RyaW5nKHZhbHVlKSB8fCBpc05vZGUodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG59XG5leHBvcnQgY2xhc3MgQXBwZW5kRHluYW1pY09wY29kZSB7XG4gICAgZXZhbHVhdGUodm0pIHtcbiAgICAgICAgbGV0IHJlZmVyZW5jZSA9IHZtLnN0YWNrLnBvcCgpO1xuICAgICAgICBsZXQgbm9ybWFsaXplZCA9IHRoaXMubm9ybWFsaXplKHJlZmVyZW5jZSk7XG4gICAgICAgIGxldCB2YWx1ZTtcbiAgICAgICAgbGV0IGNhY2hlO1xuICAgICAgICBpZiAoaXNDb25zdChyZWZlcmVuY2UpKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IG5vcm1hbGl6ZWQudmFsdWUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKG5vcm1hbGl6ZWQpO1xuICAgICAgICAgICAgdmFsdWUgPSBjYWNoZS5wZWVrKCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHN0YWNrID0gdm0uZWxlbWVudHMoKTtcbiAgICAgICAgbGV0IHVwc2VydCA9IHRoaXMuaW5zZXJ0KHZtLmVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCksIHN0YWNrLCB2YWx1ZSk7XG4gICAgICAgIGxldCBib3VuZHMgPSBuZXcgRnJhZ21lbnQodXBzZXJ0LmJvdW5kcyk7XG4gICAgICAgIHN0YWNrLm5ld0JvdW5kcyhib3VuZHMpO1xuICAgICAgICBpZiAoY2FjaGUgLyogaS5lLiAhaXNDb25zdChyZWZlcmVuY2UpICovKSB7XG4gICAgICAgICAgICAgICAgdm0udXBkYXRlV2l0aCh0aGlzLnVwZGF0ZVdpdGgodm0sIHJlZmVyZW5jZSwgY2FjaGUsIGJvdW5kcywgdXBzZXJ0KSk7XG4gICAgICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIElzQ29tcG9uZW50RGVmaW5pdGlvblJlZmVyZW5jZSBleHRlbmRzIENvbmRpdGlvbmFsUmVmZXJlbmNlIHtcbiAgICBzdGF0aWMgY3JlYXRlKGlubmVyKSB7XG4gICAgICAgIHJldHVybiBuZXcgSXNDb21wb25lbnREZWZpbml0aW9uUmVmZXJlbmNlKGlubmVyKTtcbiAgICB9XG4gICAgdG9Cb29sKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBpc0NvbXBvbmVudERlZmluaXRpb24odmFsdWUpO1xuICAgIH1cbn1cbmNsYXNzIFVwZGF0ZU9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcihjYWNoZSwgYm91bmRzLCB1cHNlcnQpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5jYWNoZSA9IGNhY2hlO1xuICAgICAgICB0aGlzLmJvdW5kcyA9IGJvdW5kcztcbiAgICAgICAgdGhpcy51cHNlcnQgPSB1cHNlcnQ7XG4gICAgICAgIHRoaXMudGFnID0gY2FjaGUudGFnO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLmNhY2hlLnJldmFsaWRhdGUoKTtcbiAgICAgICAgaWYgKGlzTW9kaWZpZWQodmFsdWUpKSB7XG4gICAgICAgICAgICBsZXQgeyBib3VuZHMsIHVwc2VydCB9ID0gdGhpcztcbiAgICAgICAgICAgIGxldCB7IGRvbSB9ID0gdm07XG4gICAgICAgICAgICBpZiAoIXRoaXMudXBzZXJ0LnVwZGF0ZShkb20sIHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGxldCBjdXJzb3IgPSBuZXcgQ3Vyc29yKGJvdW5kcy5wYXJlbnRFbGVtZW50KCksIGNsZWFyKGJvdW5kcykpO1xuICAgICAgICAgICAgICAgIHVwc2VydCA9IHRoaXMudXBzZXJ0ID0gdGhpcy5pbnNlcnQodm0uZW52LmdldEFwcGVuZE9wZXJhdGlvbnMoKSwgY3Vyc29yLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBib3VuZHMudXBkYXRlKHVwc2VydC5ib3VuZHMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgbGV0IHsgX2d1aWQ6IGd1aWQsIHR5cGUsIGNhY2hlIH0gPSB0aGlzO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGV0YWlsczogeyBsYXN0VmFsdWU6IEpTT04uc3RyaW5naWZ5KGNhY2hlLnBlZWsoKSkgfSxcbiAgICAgICAgICAgIGd1aWQsXG4gICAgICAgICAgICB0eXBlXG4gICAgICAgIH07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIE9wdGltaXplZENhdXRpb3VzQXBwZW5kT3Bjb2RlIGV4dGVuZHMgQXBwZW5kRHluYW1pY09wY29kZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMudHlwZSA9ICdvcHRpbWl6ZWQtY2F1dGlvdXMtYXBwZW5kJztcbiAgICB9XG4gICAgbm9ybWFsaXplKHJlZmVyZW5jZSkge1xuICAgICAgICByZXR1cm4gbWFwKHJlZmVyZW5jZSwgbm9ybWFsaXplVmFsdWUpO1xuICAgIH1cbiAgICBpbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBjYXV0aW91c0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICAgIH1cbiAgICB1cGRhdGVXaXRoKF92bSwgX3JlZmVyZW5jZSwgY2FjaGUsIGJvdW5kcywgdXBzZXJ0KSB7XG4gICAgICAgIHJldHVybiBuZXcgT3B0aW1pemVkQ2F1dGlvdXNVcGRhdGVPcGNvZGUoY2FjaGUsIGJvdW5kcywgdXBzZXJ0KTtcbiAgICB9XG59XG5jbGFzcyBPcHRpbWl6ZWRDYXV0aW91c1VwZGF0ZU9wY29kZSBleHRlbmRzIFVwZGF0ZU9wY29kZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMudHlwZSA9ICdvcHRpbWl6ZWQtY2F1dGlvdXMtdXBkYXRlJztcbiAgICB9XG4gICAgaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gY2F1dGlvdXNJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgT3B0aW1pemVkVHJ1c3RpbmdBcHBlbmRPcGNvZGUgZXh0ZW5kcyBBcHBlbmREeW5hbWljT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy50eXBlID0gJ29wdGltaXplZC10cnVzdGluZy1hcHBlbmQnO1xuICAgIH1cbiAgICBub3JtYWxpemUocmVmZXJlbmNlKSB7XG4gICAgICAgIHJldHVybiBtYXAocmVmZXJlbmNlLCBub3JtYWxpemVUcnVzdGVkVmFsdWUpO1xuICAgIH1cbiAgICBpbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0cnVzdGluZ0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICAgIH1cbiAgICB1cGRhdGVXaXRoKF92bSwgX3JlZmVyZW5jZSwgY2FjaGUsIGJvdW5kcywgdXBzZXJ0KSB7XG4gICAgICAgIHJldHVybiBuZXcgT3B0aW1pemVkVHJ1c3RpbmdVcGRhdGVPcGNvZGUoY2FjaGUsIGJvdW5kcywgdXBzZXJ0KTtcbiAgICB9XG59XG5jbGFzcyBPcHRpbWl6ZWRUcnVzdGluZ1VwZGF0ZU9wY29kZSBleHRlbmRzIFVwZGF0ZU9wY29kZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMudHlwZSA9ICdvcHRpbWl6ZWQtdHJ1c3RpbmctdXBkYXRlJztcbiAgICB9XG4gICAgaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdHJ1c3RpbmdJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG59Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2NvbnRlbnQuanMiXSwibmFtZXMiOlsiaXNTYWZlU3RyaW5nIiwiaXNOb2RlIiwiaXNTdHJpbmciLCJjYXV0aW91c0luc2VydCIsInRydXN0aW5nSW5zZXJ0IiwiaXNDb21wb25lbnREZWZpbml0aW9uIiwiVXBkYXRpbmdPcGNvZGUiLCJSZWZlcmVuY2VDYWNoZSIsImlzTW9kaWZpZWQiLCJpc0NvbnN0IiwibWFwIiwiQ3Vyc29yIiwiY2xlYXIiLCJGcmFnbWVudCIsIkNvbmRpdGlvbmFsUmVmZXJlbmNlIiwiQVBQRU5EX09QQ09ERVMiLCJhZGQiLCJ2bSIsImFwcGVuZCIsIm9wMSIsIm9wY29kZSIsImNvbnN0YW50cyIsImdldE90aGVyIiwiZXZhbHVhdGUiLCJpc0VtcHR5IiwidmFsdWUiLCJ1bmRlZmluZWQiLCJub3JtYWxpemVUZXh0VmFsdWUiLCJTdHJpbmciLCJub3JtYWxpemVUcnVzdGVkVmFsdWUiLCJ0b0hUTUwiLCJub3JtYWxpemVWYWx1ZSIsIkFwcGVuZER5bmFtaWNPcGNvZGUiLCJyZWZlcmVuY2UiLCJzdGFjayIsInBvcCIsIm5vcm1hbGl6ZWQiLCJub3JtYWxpemUiLCJjYWNoZSIsInBlZWsiLCJlbGVtZW50cyIsInVwc2VydCIsImluc2VydCIsImVudiIsImdldEFwcGVuZE9wZXJhdGlvbnMiLCJib3VuZHMiLCJuZXdCb3VuZHMiLCJ1cGRhdGVXaXRoIiwiSXNDb21wb25lbnREZWZpbml0aW9uUmVmZXJlbmNlIiwiY3JlYXRlIiwiaW5uZXIiLCJ0b0Jvb2wiLCJVcGRhdGVPcGNvZGUiLCJ0YWciLCJyZXZhbGlkYXRlIiwiZG9tIiwidXBkYXRlIiwiY3Vyc29yIiwicGFyZW50RWxlbWVudCIsInRvSlNPTiIsImd1aWQiLCJfZ3VpZCIsInR5cGUiLCJkZXRhaWxzIiwibGFzdFZhbHVlIiwiSlNPTiIsInN0cmluZ2lmeSIsIk9wdGltaXplZENhdXRpb3VzQXBwZW5kT3Bjb2RlIiwiYXJndW1lbnRzIiwiX3ZtIiwiX3JlZmVyZW5jZSIsIk9wdGltaXplZENhdXRpb3VzVXBkYXRlT3Bjb2RlIiwiT3B0aW1pemVkVHJ1c3RpbmdBcHBlbmRPcGNvZGUiLCJPcHRpbWl6ZWRUcnVzdGluZ1VwZGF0ZU9wY29kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxTQUFTQSxZQUFULEVBQXVCQyxNQUF2QixFQUErQkMsUUFBL0IsRUFBeUNDLGNBQXpDLEVBQXlEQyxjQUF6RCxRQUErRSxjQUEvRTtBQUNBLFNBQVNDLHFCQUFULFFBQXNDLDRCQUF0QztBQUNBLFNBQVNDLGNBQVQsUUFBK0IsZUFBL0I7QUFDQSxTQUFTQyxjQUFULEVBQXlCQyxVQUF6QixFQUFxQ0MsT0FBckMsRUFBOENDLEdBQTlDLFFBQXlELG9CQUF6RDtBQUNBLFNBQVNDLE1BQVQsRUFBaUJDLEtBQWpCLFFBQThCLGNBQTlCO0FBQ0EsU0FBU0MsUUFBVCxRQUF5QixlQUF6QjtBQUNBLFNBQVNDLG9CQUFULFFBQXFDLGtCQUFyQztBQUNBLFNBQVNDLGNBQVQsUUFBK0IsZUFBL0I7QUFDQUEsZUFBZUMsR0FBZixDQUFtQixFQUFuQixDQUFzQixvQkFBdEIsRUFBNEMsVUFBQ0MsRUFBRCxRQUF5QjtBQUFBLFFBQWJDLE1BQWEsUUFBbEJDLEdBQWtCOztBQUNqRSxRQUFJQyxTQUFTSCxHQUFHSSxTQUFILENBQWFDLFFBQWIsQ0FBc0JKLE1BQXRCLENBQWI7QUFDQUUsV0FBT0csUUFBUCxDQUFnQk4sRUFBaEI7QUFDSCxDQUhEO0FBSUEsU0FBU08sT0FBVCxDQUFpQkMsS0FBakIsRUFBd0I7QUFDcEIsV0FBT0EsVUFBVSxJQUFWLElBQWtCQSxVQUFVQyxTQUE1QixJQUF5QyxPQUFPRCxNQUFNLFVBQU4sQ0FBUCxLQUE2QixVQUE3RTtBQUNIO0FBQ0QsT0FBTyxTQUFTRSxrQkFBVCxDQUE0QkYsS0FBNUIsRUFBbUM7QUFDdEMsUUFBSUQsUUFBUUMsS0FBUixDQUFKLEVBQW9CO0FBQ2hCLGVBQU8sRUFBUDtBQUNIO0FBQ0QsV0FBT0csT0FBT0gsS0FBUCxD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cEIsRUFBNEJoQyxLQUE1QixDQUFQO0FBQ0gsS0FWTDs7QUFBQSw0Q0FXSXNCLFVBWEosdUJBV2VzQixHQVhmLEVBV29CQyxVQVhwQixFQVdnQ2hDLEtBWGhDLEVBV3VDTyxNQVh2QyxFQVcrQ0osTUFYL0MsRUFXdUQ7QUFDL0MsZUFBTyxJQUFJZ0MsNkJBQUosQ0FBa0NuQyxLQUFsQyxFQUF5Q08sTUFBekMsRUFBaURKLE1BQWpELENBQVA7QUFDSCxLQWJMOztBQUFBO0FBQUEsRUFBbURULG1CQUFuRDs7SUFlTXlDLDZCOzs7QUFDRiw2Q0FBYztBQUFBOztBQUFBLHNEQUNWLDJCQUFTTCxTQUFULENBRFU7O0FBRVYsZUFBS04sSUFBTCxHQUFZLDJCQUFaO0FBRlU7QUFHYjs7NENBQ0RwQixNLG1CQUFPYSxHLEVBQUtFLE0sRUFBUWhDLEssRUFBTztBQUN2QixlQUFPckIsZUFBZW1ELEdBQWYsRUFBb0JFLE1BQXBCLEVBQTRCaEMsS0FBNUIsQ0FBUDtBQUNILEs7OztFQVB1QzJCLFkiLCJmaWxlIjoibGliL2NvbXBpbGVkL29wY29kZXMvY29udGVudC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzU2FmZVN0cmluZywgaXNOb2RlLCBpc1N0cmluZywgY2F1dGlvdXNJbnNlcnQsIHRydXN0aW5nSW5zZXJ0IH0gZnJvbSAnLi4vLi4vdXBzZXJ0JztcbmltcG9ydCB7IGlzQ29tcG9uZW50RGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL2NvbXBvbmVudC9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFVwZGF0aW5nT3Bjb2RlIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBSZWZlcmVuY2VDYWNoZSwgaXNNb2RpZmllZCwgaXNDb25zdCwgbWFwIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IEN1cnNvciwgY2xlYXIgfSBmcm9tICcuLi8uLi9ib3VuZHMnO1xuaW1wb3J0IHsgRnJhZ21lbnQgfSBmcm9tICcuLi8uLi9idWlsZGVyJztcbmltcG9ydCB7IENvbmRpdGlvbmFsUmVmZXJlbmNlIH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBBUFBFTkRfT1BDT0RFUyB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuQVBQRU5EX09QQ09ERVMuYWRkKDI1IC8qIER5bmFtaWNDb250ZW50ICovLCAodm0sIHsgb3AxOiBhcHBlbmQgfSkgPT4ge1xuICAgIGxldCBvcGNvZGUgPSB2bS5jb25zdGFudHMuZ2V0T3RoZXIoYXBwZW5kKTtcbiAgICBvcGNvZGUuZXZhbHVhdGUodm0pO1xufSk7XG5mdW5jdGlvbiBpc0VtcHR5KHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIHZhbHVlWyd0b1N0cmluZyddICE9PSAnZnVuY3Rpb24nO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVRleHRWYWx1ZSh2YWx1ZSkge1xuICAgIGlmIChpc0VtcHR5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xufVxuZnVuY3Rpb24gbm9ybWFsaXplVHJ1c3RlZFZhbHVlKHZhbHVlKSB7XG4gICAgaWYgKGlzRW1wdHkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIGlmIChpc1NhZmVTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS50b0hUTUwoKTtcbiAgICB9XG4gICAgaWYgKGlzTm9kZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cbmZ1bmN0aW9uIG5vcm1hbGl6ZVZhbHVlKHZhbHVlKSB7XG4gICAgaWYgKGlzRW1wdHkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIGlmIChpc1NhZmVTdHJpbmcodmFsdWUpIHx8IGlzTm9kZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cbmV4cG9ydCBjbGFzcyBBcHBlbmREeW5hbWljT3Bjb2RlIHtcbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICBsZXQgcmVmZXJlbmNlID0gdm0uc3RhY2sucG9wKCk7XG4gICAgICAgIGxldCBub3JtYWxpemVkID0gdGhpcy5ub3JtYWxpemUocmVmZXJlbmNlKTtcbiAgICAgICAgbGV0IHZhbHVlLCBjYWNoZTtcbiAgICAgICAgaWYgKGlzQ29uc3QocmVmZXJlbmNlKSkge1xuICAgICAgICAgICAgdmFsdWUgPSBub3JtYWxpemVkLnZhbHVlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjYWNoZSA9IG5ldyBSZWZlcmVuY2VDYWNoZShub3JtYWxpemVkKTtcbiAgICAgICAgICAgIHZhbHVlID0gY2FjaGUucGVlaygpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBzdGFjayA9IHZtLmVsZW1lbnRzKCk7XG4gICAgICAgIGxldCB1cHNlcnQgPSB0aGlzLmluc2VydCh2bS5lbnYuZ2V0QXBwZW5kT3BlcmF0aW9ucygpLCBzdGFjaywgdmFsdWUpO1xuICAgICAgICBsZXQgYm91bmRzID0gbmV3IEZyYWdtZW50KHVwc2VydC5ib3VuZHMpO1xuICAgICAgICBzdGFjay5uZXdCb3VuZHMoYm91bmRzKTtcbiAgICAgICAgaWYgKGNhY2hlIC8qIGkuZS4gIWlzQ29uc3QocmVmZXJlbmNlKSAqLykge1xuICAgICAgICAgICAgICAgIHZtLnVwZGF0ZVdpdGgodGhpcy51cGRhdGVXaXRoKHZtLCByZWZlcmVuY2UsIGNhY2hlLCBib3VuZHMsIHVwc2VydCkpO1xuICAgICAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBJc0NvbXBvbmVudERlZmluaXRpb25SZWZlcmVuY2UgZXh0ZW5kcyBDb25kaXRpb25hbFJlZmVyZW5jZSB7XG4gICAgc3RhdGljIGNyZWF0ZShpbm5lcikge1xuICAgICAgICByZXR1cm4gbmV3IElzQ29tcG9uZW50RGVmaW5pdGlvblJlZmVyZW5jZShpbm5lcik7XG4gICAgfVxuICAgIHRvQm9vbCh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gaXNDb21wb25lbnREZWZpbml0aW9uKHZhbHVlKTtcbiAgICB9XG59XG5jbGFzcyBVcGRhdGVPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gICAgY29uc3RydWN0b3IoY2FjaGUsIGJvdW5kcywgdXBzZXJ0KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuY2FjaGUgPSBjYWNoZTtcbiAgICAgICAgdGhpcy5ib3VuZHMgPSBib3VuZHM7XG4gICAgICAgIHRoaXMudXBzZXJ0ID0gdXBzZXJ0O1xuICAgICAgICB0aGlzLnRhZyA9IGNhY2hlLnRhZztcbiAgICB9XG4gICAgZXZhbHVhdGUodm0pIHtcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5jYWNoZS5yZXZhbGlkYXRlKCk7XG4gICAgICAgIGlmIChpc01vZGlmaWVkKHZhbHVlKSkge1xuICAgICAgICAgICAgbGV0IHsgYm91bmRzLCB1cHNlcnQgfSA9IHRoaXM7XG4gICAgICAgICAgICBsZXQgeyBkb20gfSA9IHZtO1xuICAgICAgICAgICAgaWYgKCF0aGlzLnVwc2VydC51cGRhdGUoZG9tLCB2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBsZXQgY3Vyc29yID0gbmV3IEN1cnNvcihib3VuZHMucGFyZW50RWxlbWVudCgpLCBjbGVhcihib3VuZHMpKTtcbiAgICAgICAgICAgICAgICB1cHNlcnQgPSB0aGlzLnVwc2VydCA9IHRoaXMuaW5zZXJ0KHZtLmVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCksIGN1cnNvciwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYm91bmRzLnVwZGF0ZSh1cHNlcnQuYm91bmRzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIGxldCB7IF9ndWlkOiBndWlkLCB0eXBlLCBjYWNoZSB9ID0gdGhpcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGd1aWQsXG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgZGV0YWlsczogeyBsYXN0VmFsdWU6IEpTT04uc3RyaW5naWZ5KGNhY2hlLnBlZWsoKSkgfVxuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBPcHRpbWl6ZWRDYXV0aW91c0FwcGVuZE9wY29kZSBleHRlbmRzIEFwcGVuZER5bmFtaWNPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLnR5cGUgPSAnb3B0aW1pemVkLWNhdXRpb3VzLWFwcGVuZCc7XG4gICAgfVxuICAgIG5vcm1hbGl6ZShyZWZlcmVuY2UpIHtcbiAgICAgICAgcmV0dXJuIG1hcChyZWZlcmVuY2UsIG5vcm1hbGl6ZVZhbHVlKTtcbiAgICB9XG4gICAgaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gY2F1dGlvdXNJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG4gICAgdXBkYXRlV2l0aChfdm0sIF9yZWZlcmVuY2UsIGNhY2hlLCBib3VuZHMsIHVwc2VydCkge1xuICAgICAgICByZXR1cm4gbmV3IE9wdGltaXplZENhdXRpb3VzVXBkYXRlT3Bjb2RlKGNhY2hlLCBib3VuZHMsIHVwc2VydCk7XG4gICAgfVxufVxuY2xhc3MgT3B0aW1pemVkQ2F1dGlvdXNVcGRhdGVPcGNvZGUgZXh0ZW5kcyBVcGRhdGVPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLnR5cGUgPSAnb3B0aW1pemVkLWNhdXRpb3VzLXVwZGF0ZSc7XG4gICAgfVxuICAgIGluc2VydChkb20sIGN1cnNvciwgdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGNhdXRpb3VzSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIE9wdGltaXplZFRydXN0aW5nQXBwZW5kT3Bjb2RlIGV4dGVuZHMgQXBwZW5kRHluYW1pY09wY29kZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMudHlwZSA9ICdvcHRpbWl6ZWQtdHJ1c3RpbmctYXBwZW5kJztcbiAgICB9XG4gICAgbm9ybWFsaXplKHJlZmVyZW5jZSkge1xuICAgICAgICByZXR1cm4gbWFwKHJlZmVyZW5jZSwgbm9ybWFsaXplVHJ1c3RlZFZhbHVlKTtcbiAgICB9XG4gICAgaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdHJ1c3RpbmdJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG4gICAgdXBkYXRlV2l0aChfdm0sIF9yZWZlcmVuY2UsIGNhY2hlLCBib3VuZHMsIHVwc2VydCkge1xuICAgICAgICByZXR1cm4gbmV3IE9wdGltaXplZFRydXN0aW5nVXBkYXRlT3Bjb2RlKGNhY2hlLCBib3VuZHMsIHVwc2VydCk7XG4gICAgfVxufVxuY2xhc3MgT3B0aW1pemVkVHJ1c3RpbmdVcGRhdGVPcGNvZGUgZXh0ZW5kcyBVcGRhdGVPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLnR5cGUgPSAnb3B0aW1pemVkLXRydXN0aW5nLXVwZGF0ZSc7XG4gICAgfVxuICAgIGluc2VydChkb20sIGN1cnNvciwgdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRydXN0aW5nSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gICAgfVxufSJdfQ==
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
import { APPEND_OPCODES } from '../../opcodes';
import { dict } from '@glimmer/util';
import { APPEND_OPCODES } from '../../opcodes';
/* tslint:disable */

@@ -24,2 +24,4 @@ function debugCallback(context, get) {

function ScopeInspector(scope, symbols, evalInfo) {
var _this = this;
_classCallCheck(this, ScopeInspector);

@@ -29,8 +31,7 @@

this.locals = dict();
for (var i = 0; i < evalInfo.length; i++) {
var slot = evalInfo[i];
evalInfo.forEach(function (slot) {
var name = symbols[slot - 1];
var ref = scope.getSymbol(slot);
this.locals[name] = ref;
}
_this.locals[name] = ref;
});
}

@@ -60,4 +61,4 @@

}
return tail.reduce(function (r, part) {
return r.get(part);
return tail.reduce(function (ref, part) {
return ref.get(part);
}, ref);

@@ -80,2 +81,2 @@ };

});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2RlYnVnZ2VyLmpzIl0sIm5hbWVzIjpbImRpY3QiLCJBUFBFTkRfT1BDT0RFUyIsImRlYnVnQ2FsbGJhY2siLCJjb250ZXh0IiwiZ2V0IiwiY29uc29sZSIsImluZm8iLCJjYWxsYmFjayIsInNldERlYnVnZ2VyQ2FsbGJhY2siLCJjYiIsInJlc2V0RGVidWdnZXJDYWxsYmFjayIsIlNjb3BlSW5zcGVjdG9yIiwic2NvcGUiLCJzeW1ib2xzIiwiZXZhbEluZm8iLCJsb2NhbHMiLCJpIiwibGVuZ3RoIiwic2xvdCIsIm5hbWUiLCJyZWYiLCJnZXRTeW1ib2wiLCJwYXRoIiwicGFydHMiLCJzcGxpdCIsImhlYWQiLCJ0YWlsIiwiZXZhbFNjb3BlIiwiZ2V0RXZhbFNjb3BlIiwiZ2V0U2VsZiIsImluZGV4T2YiLCJyZWR1Y2UiLCJyIiwicGFydCIsImFkZCIsInZtIiwiX3N5bWJvbHMiLCJvcDEiLCJfZXZhbEluZm8iLCJvcDIiLCJjb25zdGFudHMiLCJnZXRPdGhlciIsImdldEFycmF5IiwiaW5zcGVjdG9yIiwidmFsdWUiXSwibWFwcGluZ3MiOiI7O0FBQUEsU0FBU0EsSUFBVCxRQUFxQixlQUFyQjtBQUNBLFNBQVNDLGNBQVQsUUFBK0IsZUFBL0I7QUFDQTtBQUNBLFNBQVNDLGFBQVQsQ0FBdUJDLE9BQXZCLEVBQWdDQyxHQUFoQyxFQUFxQztBQUNqQ0MsWUFBUUMsSUFBUixDQUFhLDBEQUFiO0FBQ0E7QUFDQUgsZ0JBQVlDLElBQUksTUFBSixDQUFaO0FBQ0E7QUFDSDtBQUNEO0FBQ0EsSUFBSUcsV0FBV0wsYUFBZjtBQUNBO0FBQ0EsT0FBTyxTQUFTTSxtQkFBVCxDQUE2QkMsRUFBN0IsRUFBaUM7QUFDcENGLGVBQVdFLEVBQVg7QUFDSDtBQUNELE9BQU8sU0FBU0MscUJBQVQsR0FBaUM7QUFDcENILGVBQVdMLGFBQVg7QUFDSDs7SUFDS1MsYztBQUNGLDRCQUFZQyxLQUFaLEVBQW1CQyxPQUFuQixFQUE0QkMsUUFBNUIsRUFBc0M7QUFBQTs7QUFDbEMsYUFBS0YsS0FBTCxHQUFhQSxLQUFiO0FBQ0EsYUFBS0csTUFBTCxHQUFjZixNQUFkO0FBQ0EsYUFBSyxJQUFJZ0IsSUFBSSxDQUFiLEVBQWdCQSxJQUFJRixTQUFTRyxNQUE3QixFQUFxQ0QsR0FBckMsRUFBMEM7QUFDdEMsZ0JBQUlFLE9BQU9KLFNBQVNFLENBQVQsQ0FBWDtBQUNBLGdCQUFJRyxPQUFPTixRQUFRSyxPQUFPLENBQWYsQ0FBWDtBQUNBLGdCQUFJRSxNQUFNUixNQUFNUyxTQUFOLENBQWdCSCxJQUFoQixDQUFWO0FBQ0EsaUJBQUtILE1BQUwsQ0FBWUksSUFBWixJQUFvQkMsR0FBcEI7QUFDSDtBQUNKOzs2QkFDRGhCLEcsZ0JBQUlrQixJLEVBQU07QUFBQSxZQUNBVixLQURBLEdBQ2tCLElBRGxCLENBQ0FBLEtBREE7QUFBQSxZQUNPRyxNQURQLEdBQ2tCLElBRGxCLENBQ09BLE1BRFA7O0FBRU4sWUFBSVEsUUFBUUQsS0FBS0UsS0FBTCxDQUFXLEdBQVgsQ0FBWjs7QUFGTSwwQkFHZ0JGLEtBQUtFLEtBQUwsQ0FBVyxHQUFYLENBSGhCO0FBQUEsWUFHREMsSUFIQztBQUFBLFlBR1FDLElBSFI7O0FBSU4sWUFBSUMsWUFBWWYsTUFBTWdCLFlBQU4sRUFBaEI7QUFDQSxZQUFJUixZQUFKO0FBQ0EsWUFBSUssU0FBUyxNQUFiLEVBQXFCO0FBQ2pCTCxrQkFBTVIsTUFBTWlCLE9BQU4sRUFBTjtBQUNILFNBRkQsTUFFTyxJQUFJZCxPQUFPVSxJQUFQLENBQUosRUFBa0I7QUFDckJMLGtCQUFNTCxPQUFPVSxJQUFQLENBQU47QUFDSCxTQUZNLE1BRUEsSUFBSUEsS0FBS0ssT0FBTCxDQUFhLEdBQWIsTUFBc0IsQ0FBdEIsSUFBMkJILFVBQVVGLElBQVYsQ0FBL0IsRUFBZ0Q7QUFDbkRMLGtCQUFNTyxVQUFVRixJQUFWLENBQU47QUFDSCxTQUZNLE1BRUE7QUFDSEwsa0JBQU0sS0FBS1IsS0FBTCxDQUFXaUIsT0FBWCxFQUFOO0FBQ0FILG1CQUFPSCxLQUFQO0FBQ0g7QUFDRCxlQUFPRyxLQUFLSyxNQUFMLENBQVksVUFBQ0MsQ0FBRCxFQUFJQyxJQUFKO0FBQUEsbUJBQWFELEVBQUU1QixHQUFGLENBQU02QixJQUFOLENBQWI7QUFBQSxTQUFaLEVBQXNDYixHQUF0QyxDQUFQO0FBQ0gsSzs7Ozs7QUFFTG5CLGVBQWVpQyxHQUFmLENBQW1CLEVBQW5CLENBQXNCLGNBQXRCLEVBQXNDLFVBQUNDLEVBQUQsUUFBMkM7QUFBQSxRQUEvQkMsUUFBK0IsUUFBcENDLEdBQW9DO0FBQUEsUUFBaEJDLFNBQWdCLFFBQXJCQyxHQUFxQjs7QUFDN0UsUUFBSTFCLFVBQVVzQixHQUFHSyxTQUFILENBQWFDLFFBQWIsQ0FBc0JMLFFBQXRCLENBQWQ7QUFDQSxRQUFJdEIsV0FBV3FCLEdBQUdLLFNBQUgsQ0FBYUUsUUFBYixDQUFzQkosU0FBdEIsQ0FBZjtBQUNBLFFBQUlLLFlBQVksSUFBSWhDLGNBQUosQ0FBbUJ3QixHQUFHdkIsS0FBSCxFQUFuQixFQUErQkMsT0FBL0IsRUFBd0NDLFFBQXhDLENBQWhCO0FBQ0FQLGFBQVM0QixHQUFHTixPQUFILEdBQWFlLEtBQWIsRUFBVCxFQUErQjtBQUFBLGVBQVFELFVBQVV2QyxHQUFWLENBQWNrQixJQUFkLEVBQW9Cc0IsS0FBcEIsRUFBUjtBQUFBLEtBQS9CO0FBQ0gsQ0FMRCIsImZpbGUiOiJsaWIvY29tcGlsZWQvb3Bjb2Rlcy9kZWJ1Z2dlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRpY3QgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IEFQUEVORF9PUENPREVTIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG4vKiB0c2xpbnQ6ZGlzYWJsZSAqL1xuZnVuY3Rpb24gZGVidWdDYWxsYmFjayhjb250ZXh0LCBnZXQpIHtcbiAgICBjb25zb2xlLmluZm8oJ1VzZSBgY29udGV4dGAsIGFuZCBgZ2V0KDxwYXRoPilgIHRvIGRlYnVnIHRoaXMgdGVtcGxhdGUuJyk7XG4gICAgLy8gZm9yIGV4YW1wbGUuLi5cbiAgICBjb250ZXh0ID09PSBnZXQoJ3RoaXMnKTtcbiAgICBkZWJ1Z2dlcjtcbn1cbi8qIHRzbGludDplbmFibGUgKi9cbmxldCBjYWxsYmFjayA9IGRlYnVnQ2FsbGJhY2s7XG4vLyBGb3IgdGVzdGluZyBwdXJwb3Nlc1xuZXhwb3J0IGZ1bmN0aW9uIHNldERlYnVnZ2VyQ2FsbGJhY2soY2IpIHtcbiAgICBjYWxsYmFjayA9IGNiO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJlc2V0RGVidWdnZXJDYWxsYmFjaygpIHtcbiAgICBjYWxsYmFjayA9IGRlYnVnQ2FsbGJhY2s7XG59XG5jbGFzcyBTY29wZUluc3BlY3RvciB7XG4gICAgY29uc3RydWN0b3Ioc2NvcGUsIHN5bWJvbHMsIGV2YWxJbmZvKSB7XG4gICAgICAgIHRoaXMuc2NvcGUgPSBzY29wZTtcbiAgICAgICAgdGhpcy5sb2NhbHMgPSBkaWN0KCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZXZhbEluZm8ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBzbG90ID0gZXZhbEluZm9baV07XG4gICAgICAgICAgICBsZXQgbmFtZSA9IHN5bWJvbHNbc2xvdCAtIDFdO1xuICAgICAgICAgICAgbGV0IHJlZiA9IHNjb3BlLmdldFN5bWJvbChzbG90KTtcbiAgICAgICAgICAgIHRoaXMubG9jYWxzW25hbWVdID0gcmVmO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldChwYXRoKSB7XG4gICAgICAgIGxldCB7IHNjb3BlLCBsb2NhbHMgfSA9IHRoaXM7XG4gICAgICAgIGxldCBwYXJ0cyA9IHBhdGguc3BsaXQoJy4nKTtcbiAgICAgICAgbGV0IFtoZWFkLCAuLi50YWlsXSA9IHBhdGguc3BsaXQoJy4nKTtcbiAgICAgICAgbGV0IGV2YWxTY29wZSA9IHNjb3BlLmdldEV2YWxTY29wZSgpO1xuICAgICAgICBsZXQgcmVmO1xuICAgICAgICBpZiAoaGVhZCA9PT0gJ3RoaXMnKSB7XG4gICAgICAgICAgICByZWYgPSBzY29wZS5nZXRTZWxmKCk7XG4gICAgICAgIH0gZWxzZSBpZiAobG9jYWxzW2hlYWRdKSB7XG4gICAgICAgICAgICByZWYgPSBsb2NhbHNbaGVhZF07XG4gICAgICAgIH0gZWxzZSBpZiAoaGVhZC5pbmRleE9mKCdAJykgPT09IDAgJiYgZXZhbFNjb3BlW2hlYWRdKSB7XG4gICAgICAgICAgICByZWYgPSBldmFsU2NvcGVbaGVhZF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZWYgPSB0aGlzLnNjb3BlLmdldFNlbGYoKTtcbiAgICAgICAgICAgIHRhaWwgPSBwYXJ0cztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGFpbC5yZWR1Y2UoKHIsIHBhcnQpID0+IHIuZ2V0KHBhcnQpLCByZWYpO1xuICAgIH1cbn1cbkFQUEVORF9PUENPREVTLmFkZCg3MSAvKiBEZWJ1Z2dlciAqLywgKHZtLCB7IG9wMTogX3N5bWJvbHMsIG9wMjogX2V2YWxJbmZvIH0pID0+IHtcbiAgICBsZXQgc3ltYm9scyA9IHZtLmNvbnN0YW50cy5nZXRPdGhlcihfc3ltYm9scyk7XG4gICAgbGV0IGV2YWxJbmZvID0gdm0uY29uc3RhbnRzLmdldEFycmF5KF9ldmFsSW5mbyk7XG4gICAgbGV0IGluc3BlY3RvciA9IG5ldyBTY29wZUluc3BlY3Rvcih2bS5zY29wZSgpLCBzeW1ib2xzLCBldmFsSW5mbyk7XG4gICAgY2FsbGJhY2sodm0uZ2V0U2VsZigpLnZhbHVlKCksIHBhdGggPT4gaW5zcGVjdG9yLmdldChwYXRoKS52YWx1ZSgpKTtcbn0pOyJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2RlYnVnZ2VyLmpzIl0sIm5hbWVzIjpbIkFQUEVORF9PUENPREVTIiwiZGljdCIsImRlYnVnQ2FsbGJhY2siLCJjb250ZXh0IiwiZ2V0IiwiY29uc29sZSIsImluZm8iLCJjYWxsYmFjayIsInNldERlYnVnZ2VyQ2FsbGJhY2siLCJjYiIsInJlc2V0RGVidWdnZXJDYWxsYmFjayIsIlNjb3BlSW5zcGVjdG9yIiwic2NvcGUiLCJzeW1ib2xzIiwiZXZhbEluZm8iLCJsb2NhbHMiLCJmb3JFYWNoIiwibmFtZSIsInNsb3QiLCJyZWYiLCJnZXRTeW1ib2wiLCJwYXRoIiwicGFydHMiLCJzcGxpdCIsImhlYWQiLCJ0YWlsIiwiZXZhbFNjb3BlIiwiZ2V0RXZhbFNjb3BlIiwiZ2V0U2VsZiIsImluZGV4T2YiLCJyZWR1Y2UiLCJwYXJ0IiwiYWRkIiwidm0iLCJfc3ltYm9scyIsIm9wMSIsIl9ldmFsSW5mbyIsIm9wMiIsImNvbnN0YW50cyIsImdldE90aGVyIiwiZ2V0QXJyYXkiLCJpbnNwZWN0b3IiLCJ2YWx1ZSJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxTQUFTQSxjQUFULFFBQStCLGVBQS9CO0FBQ0EsU0FBU0MsSUFBVCxRQUFxQixlQUFyQjtBQUNBO0FBQ0EsU0FBU0MsYUFBVCxDQUF1QkMsT0FBdkIsRUFBZ0NDLEdBQWhDLEVBQXFDO0FBQ2pDQyxZQUFRQyxJQUFSLENBQWEsMERBQWI7QUFDQTtBQUNBSCxnQkFBWUMsSUFBSSxNQUFKLENBQVo7QUFDQTtBQUNIO0FBQ0Q7QUFDQSxJQUFJRyxXQUFXTCxhQUFmO0FBQ0E7QUFDQSxPQUFPLFNBQVNNLG1CQUFULENBQTZCQyxFQUE3QixFQUFpQztBQUNwQ0YsZUFBV0UsRUFBWDtBQUNIO0FBQ0QsT0FBTyxTQUFTQyxxQkFBVCxHQUFpQztBQUNwQ0gsZUFBV0wsYUFBWDtBQUNIOztJQUNLUyxjO0FBQ0YsNEJBQVlDLEtBQVosRUFBbUJDLE9BQW5CLEVBQTRCQyxRQUE1QixFQUFzQztBQUFBOztBQUFBOztBQUNsQyxhQUFLRixLQUFMLEdBQWFBLEtBQWI7QUFDQSxhQUFLRyxNQUFMLEdBQWNkLE1BQWQ7QUFDQWEsaUJBQVNFLE9BQVQsQ0FBaUIsZ0JBQVE7QUFDckIsZ0JBQUlDLE9BQU9KLFFBQVFLLE9BQU8sQ0FBZixDQUFYO0FBQ0EsZ0JBQUlDLE1BQU1QLE1BQU1RLFNBQU4sQ0FBZ0JGLElBQWhCLENBQVY7QUFDQSxrQkFBS0gsTUFBTCxDQUFZRSxJQUFaLElBQW9CRSxHQUFwQjtBQUNILFNBSkQ7QUFLSDs7NkJBQ0RmLEcsZ0JBQUlpQixJLEVBQU07QUFBQSxZQUNBVCxLQURBLEdBQ2tCLElBRGxCLENBQ0FBLEtBREE7QUFBQSxZQUNPRyxNQURQLEdBQ2tCLElBRGxCLENBQ09BLE1BRFA7O0FBRU4sWUFBSU8sUUFBUUQsS0FBS0UsS0FBTCxDQUFXLEdBQVgsQ0FBWjs7QUFGTSwwQkFHZ0JGLEtBQUtFLEtBQUwsQ0FBVyxHQUFYLENBSGhCO0FBQUEsWUFHREMsSUFIQztBQUFBLFlBR1FDLElBSFI7O0FBSU4sWUFBSUMsWUFBWWQsTUFBTWUsWUFBTixFQUFoQjtBQUNBLFlBQUlSLFlBQUo7QUFDQSxZQUFJSyxTQUFTLE1BQWIsRUFBcUI7QUFDakJMLGtCQUFNUCxNQUFNZ0IsT0FBTixFQUFOO0FBQ0gsU0FGRCxNQUVPLElBQUliLE9BQU9TLElBQVAsQ0FBSixFQUFrQjtBQUNyQkwsa0JBQU1KLE9BQU9TLElBQVAsQ0FBTjtBQUNILFNBRk0sTUFFQSxJQUFJQSxLQUFLSyxPQUFMLENBQWEsR0FBYixNQUFzQixDQUF0QixJQUEyQkgsVUFBVUYsSUFBVixDQUEvQixFQUFnRDtBQUNuREwsa0JBQU1PLFVBQVVGLElBQVYsQ0FBTjtBQUNILFNBRk0sTUFFQTtBQUNITCxrQkFBTSxLQUFLUCxLQUFMLENBQVdnQixPQUFYLEVBQU47QUFDQUgsbUJBQU9ILEtBQVA7QUFDSDtBQUNELGVBQU9HLEtBQUtLLE1BQUwsQ0FBWSxVQUFDWCxHQUFELEVBQU1ZLElBQU47QUFBQSxtQkFBZVosSUFBSWYsR0FBSixDQUFRMkIsSUFBUixDQUFmO0FBQUEsU0FBWixFQUEwQ1osR0FBMUMsQ0FBUDtBQUNILEs7Ozs7O0FBRUxuQixlQUFlZ0MsR0FBZixDQUFtQixFQUFuQixDQUFzQixjQUF0QixFQUFzQyxVQUFDQyxFQUFELFFBQTJDO0FBQUEsUUFBL0JDLFFBQStCLFFBQXBDQyxHQUFvQztBQUFBLFFBQWhCQyxTQUFnQixRQUFyQkMsR0FBcUI7O0FBQzdFLFFBQUl4QixVQUFVb0IsR0FBR0ssU0FBSCxDQUFhQyxRQUFiLENBQXNCTCxRQUF0QixDQUFkO0FBQ0EsUUFBSXBCLFdBQVdtQixHQUFHSyxTQUFILENBQWFFLFFBQWIsQ0FBc0JKLFNBQXRCLENBQWY7QUFDQSxRQUFJSyxZQUFZLElBQUk5QixjQUFKLENBQW1Cc0IsR0FBR3JCLEtBQUgsRUFBbkIsRUFBK0JDLE9BQS9CLEVBQXdDQyxRQUF4QyxDQUFoQjtBQUNBUCxhQUFTMEIsR0FBR0wsT0FBSCxHQUFhYyxLQUFiLEVBQVQsRUFBK0I7QUFBQSxlQUFRRCxVQUFVckMsR0FBVixDQUFjaUIsSUFBZCxFQUFvQnFCLEtBQXBCLEVBQVI7QUFBQSxLQUEvQjtBQUNILENBTEQiLCJmaWxlIjoibGliL2NvbXBpbGVkL29wY29kZXMvZGVidWdnZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBUFBFTkRfT1BDT0RFUyB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IHsgZGljdCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuLyogdHNsaW50OmRpc2FibGUgKi9cbmZ1bmN0aW9uIGRlYnVnQ2FsbGJhY2soY29udGV4dCwgZ2V0KSB7XG4gICAgY29uc29sZS5pbmZvKCdVc2UgYGNvbnRleHRgLCBhbmQgYGdldCg8cGF0aD4pYCB0byBkZWJ1ZyB0aGlzIHRlbXBsYXRlLicpO1xuICAgIC8vIGZvciBleGFtcGxlLi4uXG4gICAgY29udGV4dCA9PT0gZ2V0KCd0aGlzJyk7XG4gICAgZGVidWdnZXI7XG59XG4vKiB0c2xpbnQ6ZW5hYmxlICovXG5sZXQgY2FsbGJhY2sgPSBkZWJ1Z0NhbGxiYWNrO1xuLy8gRm9yIHRlc3RpbmcgcHVycG9zZXNcbmV4cG9ydCBmdW5jdGlvbiBzZXREZWJ1Z2dlckNhbGxiYWNrKGNiKSB7XG4gICAgY2FsbGJhY2sgPSBjYjtcbn1cbmV4cG9ydCBmdW5jdGlvbiByZXNldERlYnVnZ2VyQ2FsbGJhY2soKSB7XG4gICAgY2FsbGJhY2sgPSBkZWJ1Z0NhbGxiYWNrO1xufVxuY2xhc3MgU2NvcGVJbnNwZWN0b3Ige1xuICAgIGNvbnN0cnVjdG9yKHNjb3BlLCBzeW1ib2xzLCBldmFsSW5mbykge1xuICAgICAgICB0aGlzLnNjb3BlID0gc2NvcGU7XG4gICAgICAgIHRoaXMubG9jYWxzID0gZGljdCgpO1xuICAgICAgICBldmFsSW5mby5mb3JFYWNoKHNsb3QgPT4ge1xuICAgICAgICAgICAgbGV0IG5hbWUgPSBzeW1ib2xzW3Nsb3QgLSAxXTtcbiAgICAgICAgICAgIGxldCByZWYgPSBzY29wZS5nZXRTeW1ib2woc2xvdCk7XG4gICAgICAgICAgICB0aGlzLmxvY2Fsc1tuYW1lXSA9IHJlZjtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGdldChwYXRoKSB7XG4gICAgICAgIGxldCB7IHNjb3BlLCBsb2NhbHMgfSA9IHRoaXM7XG4gICAgICAgIGxldCBwYXJ0cyA9IHBhdGguc3BsaXQoJy4nKTtcbiAgICAgICAgbGV0IFtoZWFkLCAuLi50YWlsXSA9IHBhdGguc3BsaXQoJy4nKTtcbiAgICAgICAgbGV0IGV2YWxTY29wZSA9IHNjb3BlLmdldEV2YWxTY29wZSgpO1xuICAgICAgICBsZXQgcmVmO1xuICAgICAgICBpZiAoaGVhZCA9PT0gJ3RoaXMnKSB7XG4gICAgICAgICAgICByZWYgPSBzY29wZS5nZXRTZWxmKCk7XG4gICAgICAgIH0gZWxzZSBpZiAobG9jYWxzW2hlYWRdKSB7XG4gICAgICAgICAgICByZWYgPSBsb2NhbHNbaGVhZF07XG4gICAgICAgIH0gZWxzZSBpZiAoaGVhZC5pbmRleE9mKCdAJykgPT09IDAgJiYgZXZhbFNjb3BlW2hlYWRdKSB7XG4gICAgICAgICAgICByZWYgPSBldmFsU2NvcGVbaGVhZF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZWYgPSB0aGlzLnNjb3BlLmdldFNlbGYoKTtcbiAgICAgICAgICAgIHRhaWwgPSBwYXJ0cztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGFpbC5yZWR1Y2UoKHJlZiwgcGFydCkgPT4gcmVmLmdldChwYXJ0KSwgcmVmKTtcbiAgICB9XG59XG5BUFBFTkRfT1BDT0RFUy5hZGQoNzEgLyogRGVidWdnZXIgKi8sICh2bSwgeyBvcDE6IF9zeW1ib2xzLCBvcDI6IF9ldmFsSW5mbyB9KSA9PiB7XG4gICAgbGV0IHN5bWJvbHMgPSB2bS5jb25zdGFudHMuZ2V0T3RoZXIoX3N5bWJvbHMpO1xuICAgIGxldCBldmFsSW5mbyA9IHZtLmNvbnN0YW50cy5nZXRBcnJheShfZXZhbEluZm8pO1xuICAgIGxldCBpbnNwZWN0b3IgPSBuZXcgU2NvcGVJbnNwZWN0b3Iodm0uc2NvcGUoKSwgc3ltYm9scywgZXZhbEluZm8pO1xuICAgIGNhbGxiYWNrKHZtLmdldFNlbGYoKS52YWx1ZSgpLCBwYXRoID0+IGluc3BlY3Rvci5nZXQocGF0aCkudmFsdWUoKSk7XG59KTsiXX0=

@@ -9,7 +9,8 @@ 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 { CachedReference, combineTagged, isConst as isConstReference, isModified, ReferenceCache } from '@glimmer/reference';
import { UpdatingOpcode } from '../../opcodes';
import { APPEND_OPCODES, UpdatingOpcode } from '../../opcodes';
import { CachedReference, ReferenceCache, combineTagged, isConst as isConstReference, isModified } from '@glimmer/reference';
import { NULL_REFERENCE, PrimitiveReference } from '../../references';
import { Assert } from './vm';
import { APPEND_OPCODES } from '../../opcodes';
APPEND_OPCODES.add(23 /* Text */, function (vm, _ref) {

@@ -351,3 +352,3 @@ var text = _ref.op1;

_this2.modifier = modifier;
_this2.type = 'update-modifier';
_this2.type = "update-modifier";
_this2.lastUpdated = tag.value();

@@ -445,6 +446,6 @@ return _this2;

element: formattedElement,
lastValue: lastValue,
type: 'attribute',
namespace: namespace,
name: name,
namespace: namespace,
type: 'attribute'
lastValue: lastValue
};

@@ -454,6 +455,6 @@ }

element: formattedElement,
lastValue: lastValue,
type: 'attribute',
namespace: namespace === undefined ? null : namespace,
name: name,
namespace: namespace === undefined ? null : namespace,
type: 'attribute'
lastValue: lastValue
};

@@ -493,3 +494,3 @@ };

_this3.type = 'patch-element';
_this3.type = "patch-element";
_this3.tag = operation.tag;

@@ -510,5 +511,5 @@ _this3.operation = operation;

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

@@ -519,2 +520,2 @@ };

}(UpdatingOpcode);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2RvbS5qcyJdLCJuYW1lcyI6WyJDYWNoZWRSZWZlcmVuY2UiLCJjb21iaW5lVGFnZ2VkIiwiaXNDb25zdCIsImlzQ29uc3RSZWZlcmVuY2UiLCJpc01vZGlmaWVkIiwiUmVmZXJlbmNlQ2FjaGUiLCJBUFBFTkRfT1BDT0RFUyIsIlVwZGF0aW5nT3Bjb2RlIiwiTlVMTF9SRUZFUkVOQ0UiLCJQcmltaXRpdmVSZWZlcmVuY2UiLCJBc3NlcnQiLCJhZGQiLCJ2bSIsInRleHQiLCJvcDEiLCJlbGVtZW50cyIsImFwcGVuZFRleHQiLCJjb25zdGFudHMiLCJnZXRTdHJpbmciLCJhcHBlbmRDb21tZW50IiwidGFnIiwib3BlbkVsZW1lbnQiLCJ0YWdOYW1lIiwib3BlcmF0aW9ucyIsInN0YWNrIiwicG9wIiwidmFsdWUiLCJlbGVtZW50UmVmIiwibmV4dFNpYmxpbmdSZWYiLCJlbGVtZW50IiwibmV4dFNpYmxpbmciLCJjYWNoZSIsInBlZWsiLCJ1cGRhdGVXaXRoIiwicHVzaFJlbW90ZUVsZW1lbnQiLCJwb3BSZW1vdGVFbGVtZW50IiwiQ2xhc3NMaXN0IiwibGlzdCIsImFwcGVuZCIsInJlZmVyZW5jZSIsInB1c2giLCJ0b1JlZmVyZW5jZSIsImNyZWF0ZSIsInRvQ2xhc3NOYW1lIiwiQ2xhc3NMaXN0UmVmZXJlbmNlIiwiY29tcHV0ZSIsInJldCIsImkiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJqb2luIiwiU2ltcGxlRWxlbWVudE9wZXJhdGlvbnMiLCJlbnYiLCJvcGNvZGVzIiwiY2xhc3NMaXN0IiwiYWRkU3RhdGljQXR0cmlidXRlIiwibmFtZSIsImFkZENsYXNzIiwiZ2V0QXBwZW5kT3BlcmF0aW9ucyIsInNldEF0dHJpYnV0ZSIsImFkZFN0YXRpY0F0dHJpYnV0ZU5TIiwibmFtZXNwYWNlIiwiYWRkRHluYW1pY0F0dHJpYnV0ZSIsImlzVHJ1c3RpbmciLCJhdHRyaWJ1dGVNYW5hZ2VyIiwiYXR0cmlidXRlRm9yIiwiYXR0cmlidXRlIiwiRHluYW1pY0F0dHJpYnV0ZSIsImFkZEF0dHJpYnV0ZSIsImFkZER5bmFtaWNBdHRyaWJ1dGVOUyIsIm5zQXR0cmlidXRlIiwiZmx1c2giLCJvcGNvZGUiLCJDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyIsImF0dHJpYnV0ZU5hbWVzIiwiYXR0cmlidXRlcyIsInNob3VsZEFkZEF0dHJpYnV0ZSIsIlN0YXRpY0F0dHJpYnV0ZSIsImluZGV4T2YiLCJhY3Rpb24iLCJleHBlY3RPcGVyYXRpb25zIiwiZXhwZWN0Q29uc3RydWN0aW5nIiwiZmx1c2hFbGVtZW50IiwiY2xvc2VFbGVtZW50IiwiX25hbWUiLCJfdmFsdWUiLCJvcDIiLCJfbmFtZXNwYWNlIiwib3AzIiwic2V0U3RhdGljQXR0cmlidXRlTlMiLCJzZXRTdGF0aWNBdHRyaWJ1dGUiLCJfbWFuYWdlciIsIm1hbmFnZXIiLCJnZXRPdGhlciIsImFyZ3MiLCJjb25zdHJ1Y3RpbmciLCJ1cGRhdGVPcGVyYXRpb25zIiwiZHluYW1pY1Njb3BlIiwibW9kaWZpZXIiLCJjbGVhciIsInNjaGVkdWxlSW5zdGFsbE1vZGlmaWVyIiwiZGVzdHJ1Y3RvciIsImdldERlc3RydWN0b3IiLCJuZXdEZXN0cm95YWJsZSIsIlVwZGF0ZU1vZGlmaWVyT3Bjb2RlIiwidHlwZSIsImxhc3RVcGRhdGVkIiwiZXZhbHVhdGUiLCJ2YWxpZGF0ZSIsInNjaGVkdWxlVXBkYXRlTW9kaWZpZXIiLCJ0b0pTT04iLCJndWlkIiwiX2d1aWQiLCJwYXRjaCIsInJldmFsaWRhdGUiLCJ1cGRhdGVBdHRyaWJ1dGUiLCJQYXRjaEVsZW1lbnRPcGNvZGUiLCJmb3JtYXR0ZWRFbGVtZW50IiwiZm9ybWF0RWxlbWVudCIsImxhc3RWYWx1ZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJ0b0xvd2VyQ2FzZSIsInRydXN0aW5nIiwic2V0RHluYW1pY0F0dHJpYnV0ZU5TIiwic2V0RHluYW1pY0F0dHJpYnV0ZSIsIm9wZXJhdGlvbiIsImRldGFpbHMiXSwibWFwcGluZ3MiOiI7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NUIsQ0FDQ0EsS0FERDtBQUFBLFlBQ1FQLElBRFIsR0FDNEIsSUFENUIsQ0FDUUEsSUFEUjtBQUFBLFlBQ2NxQixTQURkLEdBQzRCLElBRDVCLENBQ2NBLFNBRGQ7O0FBRUwsZUFBTztBQUNIQyxxQkFBU0QsVUFBVWhCLE1BQVYsRUFETjtBQUVIQyxrQkFBTUMsS0FGSDtBQUdIUDtBQUhHLFNBQVA7QUFLSCxLQWpCTDs7QUFBQTtBQUFBLEVBQXdDbEcsY0FBeEMiLCJmaWxlIjoibGliL2NvbXBpbGVkL29wY29kZXMvZG9tLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2FjaGVkUmVmZXJlbmNlLCBjb21iaW5lVGFnZ2VkLCBpc0NvbnN0IGFzIGlzQ29uc3RSZWZlcmVuY2UsIGlzTW9kaWZpZWQsIFJlZmVyZW5jZUNhY2hlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IGV4cGVjdCwgdW53cmFwIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBBUFBFTkRfT1BDT0RFUywgVXBkYXRpbmdPcGNvZGUgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IE5VTExfUkVGRVJFTkNFLCBQcmltaXRpdmVSZWZlcmVuY2UgfSBmcm9tICcuLi8uLi9yZWZlcmVuY2VzJztcbmltcG9ydCB7IEFzc2VydCB9IGZyb20gJy4vdm0nO1xuQVBQRU5EX09QQ09ERVMuYWRkKDIzIC8qIFRleHQgKi8sICh2bSwgeyBvcDE6IHRleHQgfSkgPT4ge1xuICAgIHZtLmVsZW1lbnRzKCkuYXBwZW5kVGV4dCh2bS5jb25zdGFudHMuZ2V0U3RyaW5nKHRleHQpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDI0IC8qIENvbW1lbnQgKi8sICh2bSwgeyBvcDE6IHRleHQgfSkgPT4ge1xuICAgIHZtLmVsZW1lbnRzKCkuYXBwZW5kQ29tbWVudCh2bS5jb25zdGFudHMuZ2V0U3RyaW5nKHRleHQpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDI2IC8qIE9wZW5FbGVtZW50ICovLCAodm0sIHsgb3AxOiB0YWcgfSkgPT4ge1xuICAgIHZtLmVsZW1lbnRzKCkub3BlbkVsZW1lbnQodm0uY29uc3RhbnRzLmdldFN0cmluZyh0YWcpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDI3IC8qIE9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMgKi8sICh2bSwgeyBvcDE6IHRhZyB9KSA9PiB7XG4gICAgbGV0IHRhZ05hbWUgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKHRhZyk7XG4gICAgbGV0IG9wZXJhdGlvbnMgPSB2bS5zdGFjay5wb3AoKTtcbiAgICB2bS5lbGVtZW50cygpLm9wZW5FbGVtZW50KHRhZ05hbWUsIG9wZXJhdGlvbnMpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMjggLyogT3BlbkR5bmFtaWNFbGVtZW50ICovLCB2bSA9PiB7XG4gICAgbGV0IG9wZXJhdGlvbnMgPSB2bS5zdGFjay5wb3AoKTtcbiAgICBsZXQgdGFnTmFtZSA9IHZtLnN0YWNrLnBvcCgpLnZhbHVlKCk7XG4gICAgdm0uZWxlbWVudHMoKS5vcGVuRWxlbWVudCh0YWdOYW1lLCBvcGVyYXRpb25zKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDM1IC8qIFB1c2hSZW1vdGVFbGVtZW50ICovLCB2bSA9PiB7XG4gICAgbGV0IGVsZW1lbnRSZWYgPSB2bS5zdGFjay5wb3AoKTtcbiAgICBsZXQgbmV4dFNpYmxpbmdSZWYgPSB2bS5zdGFjay5wb3AoKTtcbiAgICBsZXQgZWxlbWVudDtcbiAgICBsZXQgbmV4dFNpYmxpbmc7XG4gICAgaWYgKGlzQ29uc3RSZWZlcmVuY2UoZWxlbWVudFJlZikpIHtcbiAgICAgICAgZWxlbWVudCA9IGVsZW1lbnRSZWYudmFsdWUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgY2FjaGUgPSBuZXcgUmVmZXJlbmNlQ2FjaGUoZWxlbWVudFJlZik7XG4gICAgICAgIGVsZW1lbnQgPSBjYWNoZS5wZWVrKCk7XG4gICAgICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICAgIH1cbiAgICBpZiAoaXNDb25zdFJlZmVyZW5jZShuZXh0U2libGluZ1JlZikpIHtcbiAgICAgICAgbmV4dFNpYmxpbmcgPSBuZXh0U2libGluZ1JlZi52YWx1ZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBjYWNoZSA9IG5ldyBSZWZlcmVuY2VDYWNoZShuZXh0U2libGluZ1JlZik7XG4gICAgICAgIG5leHRTaWJsaW5nID0gY2FjaGUucGVlaygpO1xuICAgICAgICB2bS51cGRhdGVXaXRoKG5ldyBBc3NlcnQoY2FjaGUpKTtcbiAgICB9XG4gICAgdm0uZWxlbWVudHMoKS5wdXNoUmVtb3RlRWxlbWVudChlbGVtZW50LCBuZXh0U2libGluZyk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCgzNiAvKiBQb3BSZW1vdGVFbGVtZW50ICovLCB2bSA9PiB2bS5lbGVtZW50cygpLnBvcFJlbW90ZUVsZW1lbnQoKSk7XG5jbGFzcyBDbGFzc0xpc3Qge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmxpc3QgPSBudWxsO1xuICAgICAgICB0aGlzLmlzQ29uc3QgPSB0cnVlO1xuICAgIH1cbiAgICBhcHBlbmQocmVmZXJlbmNlKSB7XG4gICAgICAgIGxldCB7IGxpc3QsIGlzQ29uc3QgfSA9IHRoaXM7XG4gICAgICAgIGlmIChsaXN0ID09PSBudWxsKSBsaXN0ID0gdGhpcy5saXN0ID0gW107XG4gICAgICAgIGxpc3QucHVzaChyZWZlcmVuY2UpO1xuICAgICAgICB0aGlzLmlzQ29uc3QgPSBpc0NvbnN0ICYmIGlzQ29uc3RSZWZlcmVuY2UocmVmZXJlbmNlKTtcbiAgICB9XG4gICAgdG9SZWZlcmVuY2UoKSB7XG4gICAgICAgIGxldCB7IGxpc3QsIGlzQ29uc3QgfSA9IHRoaXM7XG4gICAgICAgIGlmICghbGlzdCkgcmV0dXJuIE5VTExfUkVGRVJFTkNFO1xuICAgICAgICBpZiAoaXNDb25zdCkgcmV0dXJuIFByaW1pdGl2ZVJlZmVyZW5jZS5jcmVhdGUodG9DbGFzc05hbWUobGlzdCkpO1xuICAgICAgICByZXR1cm4gbmV3IENsYXNzTGlzdFJlZmVyZW5jZShsaXN0KTtcbiAgICB9XG59XG5jbGFzcyBDbGFzc0xpc3RSZWZlcmVuY2UgZXh0ZW5kcyBDYWNoZWRSZWZlcmVuY2Uge1xuICAgIGNvbnN0cnVjdG9yKGxpc3QpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5saXN0ID0gW107XG4gICAgICAgIHRoaXMudGFnID0gY29tYmluZVRhZ2dlZChsaXN0KTtcbiAgICAgICAgdGhpcy5saXN0ID0gbGlzdDtcbiAgICB9XG4gICAgY29tcHV0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRvQ2xhc3NOYW1lKHRoaXMubGlzdCk7XG4gICAgfVxufVxuZnVuY3Rpb24gdG9DbGFzc05hbWUobGlzdCkge1xuICAgIGxldCByZXQgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IHZhbHVlID0gbGlzdFtpXS52YWx1ZSgpO1xuICAgICAgICBpZiAodmFsdWUgIT09IGZhbHNlICYmIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHJldC5wdXNoKHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJldC5sZW5ndGggPT09IDAgPyBudWxsIDogcmV0LmpvaW4oJyAnKTtcbn1cbmV4cG9ydCBjbGFzcyBTaW1wbGVFbGVtZW50T3BlcmF0aW9ucyB7XG4gICAgY29uc3RydWN0b3IoZW52KSB7XG4gICAgICAgIHRoaXMuZW52ID0gZW52O1xuICAgICAgICB0aGlzLm9wY29kZXMgPSBudWxsO1xuICAgICAgICB0aGlzLmNsYXNzTGlzdCA9IG51bGw7XG4gICAgfVxuICAgIGFkZFN0YXRpY0F0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCB2YWx1ZSkge1xuICAgICAgICBpZiAobmFtZSA9PT0gJ2NsYXNzJykge1xuICAgICAgICAgICAgdGhpcy5hZGRDbGFzcyhQcmltaXRpdmVSZWZlcmVuY2UuY3JlYXRlKHZhbHVlKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCkuc2V0QXR0cmlidXRlKGVsZW1lbnQsIG5hbWUsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhZGRTdGF0aWNBdHRyaWJ1dGVOUyhlbGVtZW50LCBuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIHRoaXMuZW52LmdldEFwcGVuZE9wZXJhdGlvbnMoKS5zZXRBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZSk7XG4gICAgfVxuICAgIGFkZER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgcmVmZXJlbmNlLCBpc1RydXN0aW5nKSB7XG4gICAgICAgIGlmIChuYW1lID09PSAnY2xhc3MnKSB7XG4gICAgICAgICAgICB0aGlzLmFkZENsYXNzKHJlZmVyZW5jZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgYXR0cmlidXRlTWFuYWdlciA9IHRoaXMuZW52LmF0dHJpYnV0ZUZvcihlbGVtZW50LCBuYW1lLCBpc1RydXN0aW5nKTtcbiAgICAgICAgICAgIGxldCBhdHRyaWJ1dGUgPSBuZXcgRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCBuYW1lLCByZWZlcmVuY2UpO1xuICAgICAgICAgICAgdGhpcy5hZGRBdHRyaWJ1dGUoYXR0cmlidXRlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhZGREeW5hbWljQXR0cmlidXRlTlMoZWxlbWVudCwgbmFtZXNwYWNlLCBuYW1lLCByZWZlcmVuY2UsIGlzVHJ1c3RpbmcpIHtcbiAgICAgICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSB0aGlzLmVudi5hdHRyaWJ1dGVGb3IoZWxlbWVudCwgbmFtZSwgaXNUcnVzdGluZywgbmFtZXNwYWNlKTtcbiAgICAgICAgbGV0IG5zQXR0cmlidXRlID0gbmV3IER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlTWFuYWdlciwgbmFtZSwgcmVmZXJlbmNlLCBuYW1lc3BhY2UpO1xuICAgICAgICB0aGlzLmFkZEF0dHJpYnV0ZShuc0F0dHJpYnV0ZSk7XG4gICAgfVxuICAgIGZsdXNoKGVsZW1lbnQsIHZtKSB7XG4gICAgICAgIGxldCB7IGVudiB9ID0gdm07XG4gICAgICAgIGxldCB7IG9wY29kZXMsIGNsYXNzTGlzdCB9ID0gdGhpcztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IG9wY29kZXMgJiYgaSA8IG9wY29kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZtLnVwZGF0ZVdpdGgob3Bjb2Rlc1tpXSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNsYXNzTGlzdCkge1xuICAgICAgICAgICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSBlbnYuYXR0cmlidXRlRm9yKGVsZW1lbnQsICdjbGFzcycsIGZhbHNlKTtcbiAgICAgICAgICAgIGxldCBhdHRyaWJ1dGUgPSBuZXcgRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCAnY2xhc3MnLCBjbGFzc0xpc3QudG9SZWZlcmVuY2UoKSk7XG4gICAgICAgICAgICBsZXQgb3Bjb2RlID0gYXR0cmlidXRlLmZsdXNoKGVudik7XG4gICAgICAgICAgICBpZiAob3Bjb2RlKSB7XG4gICAgICAgICAgICAgICAgdm0udXBkYXRlV2l0aChvcGNvZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMub3Bjb2RlcyA9IG51bGw7XG4gICAgICAgIHRoaXMuY2xhc3NMaXN0ID0gbnVsbDtcbiAgICB9XG4gICAgYWRkQ2xhc3MocmVmZXJlbmNlKSB7XG4gICAgICAgIGxldCB7IGNsYXNzTGlzdCB9ID0gdGhpcztcbiAgICAgICAgaWYgKCFjbGFzc0xpc3QpIHtcbiAgICAgICAgICAgIGNsYXNzTGlzdCA9IHRoaXMuY2xhc3NMaXN0ID0gbmV3IENsYXNzTGlzdCgpO1xuICAgICAgICB9XG4gICAgICAgIGNsYXNzTGlzdC5hcHBlbmQocmVmZXJlbmNlKTtcbiAgICB9XG4gICAgYWRkQXR0cmlidXRlKGF0dHJpYnV0ZSkge1xuICAgICAgICBsZXQgb3Bjb2RlID0gYXR0cmlidXRlLmZsdXNoKHRoaXMuZW52KTtcbiAgICAgICAgaWYgKG9wY29kZSkge1xuICAgICAgICAgICAgbGV0IHsgb3Bjb2RlcyB9ID0gdGhpcztcbiAgICAgICAgICAgIGlmICghb3Bjb2Rlcykge1xuICAgICAgICAgICAgICAgIG9wY29kZXMgPSB0aGlzLm9wY29kZXMgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wY29kZXMucHVzaChvcGNvZGUpO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIENvbXBvbmVudEVsZW1lbnRPcGVyYXRpb25zIHtcbiAgICBjb25zdHJ1Y3RvcihlbnYpIHtcbiAgICAgICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgICAgIHRoaXMuYXR0cmlidXRlTmFtZXMgPSBudWxsO1xuICAgICAgICB0aGlzLmF0dHJpYnV0ZXMgPSBudWxsO1xuICAgICAgICB0aGlzLmNsYXNzTGlzdCA9IG51bGw7XG4gICAgfVxuICAgIGFkZFN0YXRpY0F0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCB2YWx1ZSkge1xuICAgICAgICBpZiAobmFtZSA9PT0gJ2NsYXNzJykge1xuICAgICAgICAgICAgdGhpcy5hZGRDbGFzcyhQcmltaXRpdmVSZWZlcmVuY2UuY3JlYXRlKHZhbHVlKSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zaG91bGRBZGRBdHRyaWJ1dGUobmFtZSkpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkQXR0cmlidXRlKG5hbWUsIG5ldyBTdGF0aWNBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgdmFsdWUpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhZGRTdGF0aWNBdHRyaWJ1dGVOUyhlbGVtZW50LCBuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIGlmICh0aGlzLnNob3VsZEFkZEF0dHJpYnV0ZShuYW1lKSkge1xuICAgICAgICAgICAgdGhpcy5hZGRBdHRyaWJ1dGUobmFtZSwgbmV3IFN0YXRpY0F0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYWRkRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCByZWZlcmVuY2UsIGlzVHJ1c3RpbmcpIHtcbiAgICAgICAgaWYgKG5hbWUgPT09ICdjbGFzcycpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkQ2xhc3MocmVmZXJlbmNlKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNob3VsZEFkZEF0dHJpYnV0ZShuYW1lKSkge1xuICAgICAgICAgICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSB0aGlzLmVudi5hdHRyaWJ1dGVGb3IoZWxlbWVudCwgbmFtZSwgaXNUcnVzdGluZyk7XG4gICAgICAgICAgICBsZXQgYXR0cmlidXRlID0gbmV3IER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlTWFuYWdlciwgbmFtZSwgcmVmZXJlbmNlKTtcbiAgICAgICAgICAgIHRoaXMuYWRkQXR0cmlidXRlKG5hbWUsIGF0dHJpYnV0ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYWRkRHluYW1pY0F0dHJpYnV0ZU5TKGVsZW1lbnQsIG5hbWVzcGFjZSwgbmFtZSwgcmVmZXJlbmNlLCBpc1RydXN0aW5nKSB7XG4gICAgICAgIGlmICh0aGlzLnNob3VsZEFkZEF0dHJpYnV0ZShuYW1lKSkge1xuICAgICAgICAgICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSB0aGlzLmVudi5hdHRyaWJ1dGVGb3IoZWxlbWVudCwgbmFtZSwgaXNUcnVzdGluZywgbmFtZXNwYWNlKTtcbiAgICAgICAgICAgIGxldCBuc0F0dHJpYnV0ZSA9IG5ldyBEeW5hbWljQXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZU1hbmFnZXIsIG5hbWUsIHJlZmVyZW5jZSwgbmFtZXNwYWNlKTtcbiAgICAgICAgICAgIHRoaXMuYWRkQXR0cmlidXRlKG5hbWUsIG5zQXR0cmlidXRlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmbHVzaChlbGVtZW50LCB2bSkge1xuICAgICAgICBsZXQgeyBlbnYgfSA9IHRoaXM7XG4gICAgICAgIGxldCB7IGF0dHJpYnV0ZXMsIGNsYXNzTGlzdCB9ID0gdGhpcztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGF0dHJpYnV0ZXMgJiYgaSA8IGF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBvcGNvZGUgPSBhdHRyaWJ1dGVzW2ldLmZsdXNoKGVudik7XG4gICAgICAgICAgICBpZiAob3Bjb2RlKSB7XG4gICAgICAgICAgICAgICAgdm0udXBkYXRlV2l0aChvcGNvZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChjbGFzc0xpc3QpIHtcbiAgICAgICAgICAgIGxldCBhdHRyaWJ1dGVNYW5hZ2VyID0gZW52LmF0dHJpYnV0ZUZvcihlbGVtZW50LCAnY2xhc3MnLCBmYWxzZSk7XG4gICAgICAgICAgICBsZXQgYXR0cmlidXRlID0gbmV3IER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlTWFuYWdlciwgJ2NsYXNzJywgY2xhc3NMaXN0LnRvUmVmZXJlbmNlKCkpO1xuICAgICAgICAgICAgbGV0IG9wY29kZSA9IGF0dHJpYnV0ZS5mbHVzaChlbnYpO1xuICAgICAgICAgICAgaWYgKG9wY29kZSkge1xuICAgICAgICAgICAgICAgIHZtLnVwZGF0ZVdpdGgob3Bjb2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBzaG91bGRBZGRBdHRyaWJ1dGUobmFtZSkge1xuICAgICAgICByZXR1cm4gIXRoaXMuYXR0cmlidXRlTmFtZXMgfHwgdGhpcy5hdHRyaWJ1dGVOYW1lcy5pbmRleE9mKG5hbWUpID09PSAtMTtcbiAgICB9XG4gICAgYWRkQ2xhc3MocmVmZXJlbmNlKSB7XG4gICAgICAgIGxldCB7IGNsYXNzTGlzdCB9ID0gdGhpcztcbiAgICAgICAgaWYgKCFjbGFzc0xpc3QpIHtcbiAgICAgICAgICAgIGNsYXNzTGlzdCA9IHRoaXMuY2xhc3NMaXN0ID0gbmV3IENsYXNzTGlzdCgpO1xuICAgICAgICB9XG4gICAgICAgIGNsYXNzTGlzdC5hcHBlbmQocmVmZXJlbmNlKTtcbiAgICB9XG4gICAgYWRkQXR0cmlidXRlKG5hbWUsIGF0dHJpYnV0ZSkge1xuICAgICAgICBsZXQgeyBhdHRyaWJ1dGVOYW1lcywgYXR0cmlidXRlcyB9ID0gdGhpcztcbiAgICAgICAgaWYgKCFhdHRyaWJ1dGVOYW1lcykge1xuICAgICAgICAgICAgYXR0cmlidXRlTmFtZXMgPSB0aGlzLmF0dHJpYnV0ZU5hbWVzID0gW107XG4gICAgICAgICAgICBhdHRyaWJ1dGVzID0gdGhpcy5hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgYXR0cmlidXRlTmFtZXMucHVzaChuYW1lKTtcbiAgICAgICAgdW53cmFwKGF0dHJpYnV0ZXMpLnB1c2goYXR0cmlidXRlKTtcbiAgICB9XG59XG5BUFBFTkRfT1BDT0RFUy5hZGQoMzIgLyogRmx1c2hFbGVtZW50ICovLCB2bSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uZWxlbWVudHMoKTtcbiAgICBsZXQgYWN0aW9uID0gJ0ZsdXNoRWxlbWVudE9wY29kZSNldmFsdWF0ZSc7XG4gICAgc3RhY2suZXhwZWN0T3BlcmF0aW9ucyhhY3Rpb24pLmZsdXNoKHN0YWNrLmV4cGVjdENvbnN0cnVjdGluZyhhY3Rpb24pLCB2bSk7XG4gICAgc3RhY2suZmx1c2hFbGVtZW50KCk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCgzMyAvKiBDbG9zZUVsZW1lbnQgKi8sIHZtID0+IHZtLmVsZW1lbnRzKCkuY2xvc2VFbGVtZW50KCkpO1xuQVBQRU5EX09QQ09ERVMuYWRkKDI5IC8qIFN0YXRpY0F0dHIgKi8sICh2bSwgeyBvcDE6IF9uYW1lLCBvcDI6IF92YWx1ZSwgb3AzOiBfbmFtZXNwYWNlIH0pID0+IHtcbiAgICBsZXQgbmFtZSA9IHZtLmNvbnN0YW50cy5nZXRTdHJpbmcoX25hbWUpO1xuICAgIGxldCB2YWx1ZSA9IHZtLmNvbnN0YW50cy5nZXRTdHJpbmcoX3ZhbHVlKTtcbiAgICBpZiAoX25hbWVzcGFjZSkge1xuICAgICAgICBsZXQgbmFtZXNwYWNlID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyhfbmFtZXNwYWNlKTtcbiAgICAgICAgdm0uZWxlbWVudHMoKS5zZXRTdGF0aWNBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB2bS5lbGVtZW50cygpLnNldFN0YXRpY0F0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7XG4gICAgfVxufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMzQgLyogTW9kaWZpZXIgKi8sICh2bSwgeyBvcDE6IF9tYW5hZ2VyIH0pID0+IHtcbiAgICBsZXQgbWFuYWdlciA9IHZtLmNvbnN0YW50cy5nZXRPdGhlcihfbWFuYWdlcik7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IGFyZ3MgPSBzdGFjay5wb3AoKTtcbiAgICBsZXQgdGFnID0gYXJncy50YWc7XG4gICAgbGV0IHsgY29uc3RydWN0aW5nOiBlbGVtZW50LCB1cGRhdGVPcGVyYXRpb25zIH0gPSB2bS5lbGVtZW50cygpO1xuICAgIGxldCBkeW5hbWljU2NvcGUgPSB2bS5keW5hbWljU2NvcGUoKTtcbiAgICBsZXQgbW9kaWZpZXIgPSBtYW5hZ2VyLmNyZWF0ZShlbGVtZW50LCBhcmdzLCBkeW5hbWljU2NvcGUsIHVwZGF0ZU9wZXJhdGlvbnMpO1xuICAgIGFyZ3MuY2xlYXIoKTtcbiAgICB2bS5lbnYuc2NoZWR1bGVJbnN0YWxsTW9kaWZpZXIobW9kaWZpZXIsIG1hbmFnZXIpO1xuICAgIGxldCBkZXN0cnVjdG9yID0gbWFuYWdlci5nZXREZXN0cnVjdG9yKG1vZGlmaWVyKTtcbiAgICBpZiAoZGVzdHJ1Y3Rvcikge1xuICAgICAgICB2bS5uZXdEZXN0cm95YWJsZShkZXN0cnVjdG9yKTtcbiAgICB9XG4gICAgdm0udXBkYXRlV2l0aChuZXcgVXBkYXRlTW9kaWZpZXJPcGNvZGUodGFnLCBtYW5hZ2VyLCBtb2RpZmllcikpO1xufSk7XG5leHBvcnQgY2xhc3MgVXBkYXRlTW9kaWZpZXJPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gICAgY29uc3RydWN0b3IodGFnLCBtYW5hZ2VyLCBtb2RpZmllcikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnRhZyA9IHRhZztcbiAgICAgICAgdGhpcy5tYW5hZ2VyID0gbWFuYWdlcjtcbiAgICAgICAgdGhpcy5tb2RpZmllciA9IG1vZGlmaWVyO1xuICAgICAgICB0aGlzLnR5cGUgPSAndXBkYXRlLW1vZGlmaWVyJztcbiAgICAgICAgdGhpcy5sYXN0VXBkYXRlZCA9IHRhZy52YWx1ZSgpO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICBsZXQgeyBtYW5hZ2VyLCBtb2RpZmllciwgdGFnLCBsYXN0VXBkYXRlZCB9ID0gdGhpcztcbiAgICAgICAgaWYgKCF0YWcudmFsaWRhdGUobGFzdFVwZGF0ZWQpKSB7XG4gICAgICAgICAgICB2bS5lbnYuc2NoZWR1bGVVcGRhdGVNb2RpZmllcihtb2RpZmllciwgbWFuYWdlcik7XG4gICAgICAgICAgICB0aGlzLmxhc3RVcGRhdGVkID0gdGFnLnZhbHVlKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZVxuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBTdGF0aWNBdHRyaWJ1dGUge1xuICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLm5hbWVzcGFjZSA9IG5hbWVzcGFjZTtcbiAgICB9XG4gICAgZmx1c2goZW52KSB7XG4gICAgICAgIGVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCkuc2V0QXR0cmlidXRlKHRoaXMuZWxlbWVudCwgdGhpcy5uYW1lLCB0aGlzLnZhbHVlLCB0aGlzLm5hbWVzcGFjZSk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBEeW5hbWljQXR0cmlidXRlIHtcbiAgICBjb25zdHJ1Y3RvcihlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCBuYW1lLCByZWZlcmVuY2UsIG5hbWVzcGFjZSkge1xuICAgICAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgICB0aGlzLmF0dHJpYnV0ZU1hbmFnZXIgPSBhdHRyaWJ1dGVNYW5hZ2VyO1xuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLnJlZmVyZW5jZSA9IHJlZmVyZW5jZTtcbiAgICAgICAgdGhpcy5uYW1lc3BhY2UgPSBuYW1lc3BhY2U7XG4gICAgICAgIHRoaXMuY2FjaGUgPSBudWxsO1xuICAgICAgICB0aGlzLnRhZyA9IHJlZmVyZW5jZS50YWc7XG4gICAgfVxuICAgIHBhdGNoKGVudikge1xuICAgICAgICBsZXQgeyBlbGVtZW50LCBjYWNoZSB9ID0gdGhpcztcbiAgICAgICAgbGV0IHZhbHVlID0gZXhwZWN0KGNhY2hlLCAnbXVzdCBwYXRjaCBhZnRlciBmbHVzaCcpLnJldmFsaWRhdGUoKTtcbiAgICAgICAgaWYgKGlzTW9kaWZpZWQodmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLmF0dHJpYnV0ZU1hbmFnZXIudXBkYXRlQXR0cmlidXRlKGVudiwgZWxlbWVudCwgdmFsdWUsIHRoaXMubmFtZXNwYWNlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmbHVzaChlbnYpIHtcbiAgICAgICAgbGV0IHsgcmVmZXJlbmNlLCBlbGVtZW50IH0gPSB0aGlzO1xuICAgICAgICBpZiAoaXNDb25zdFJlZmVyZW5jZShyZWZlcmVuY2UpKSB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSByZWZlcmVuY2UudmFsdWUoKTtcbiAgICAgICAgICAgIHRoaXMuYXR0cmlidXRlTWFuYWdlci5zZXRBdHRyaWJ1dGUoZW52LCBlbGVtZW50LCB2YWx1ZSwgdGhpcy5uYW1lc3BhY2UpO1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgY2FjaGUgPSB0aGlzLmNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKHJlZmVyZW5jZSk7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBjYWNoZS5wZWVrKCk7XG4gICAgICAgICAgICB0aGlzLmF0dHJpYnV0ZU1hbmFnZXIuc2V0QXR0cmlidXRlKGVudiwgZWxlbWVudCwgdmFsdWUsIHRoaXMubmFtZXNwYWNlKTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUGF0Y2hFbGVtZW50T3Bjb2RlKHRoaXMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgbGV0IHsgZWxlbWVudCwgbmFtZXNwYWNlLCBuYW1lLCBjYWNoZSB9ID0gdGhpcztcbiAgICAgICAgbGV0IGZvcm1hdHRlZEVsZW1lbnQgPSBmb3JtYXRFbGVtZW50KGVsZW1lbnQpO1xuICAgICAgICBsZXQgbGFzdFZhbHVlID0gZXhwZWN0KGNhY2hlLCAnbXVzdCBzZXJpYWxpemUgYWZ0ZXIgZmx1c2gnKS5wZWVrKCk7XG4gICAgICAgIGlmIChuYW1lc3BhY2UpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZWxlbWVudDogZm9ybWF0dGVkRWxlbWVudCxcbiAgICAgICAgICAgICAgICBsYXN0VmFsdWUsXG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICBuYW1lc3BhY2UsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2F0dHJpYnV0ZSdcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGVsZW1lbnQ6IGZvcm1hdHRlZEVsZW1lbnQsXG4gICAgICAgICAgICBsYXN0VmFsdWUsXG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgbmFtZXNwYWNlOiBuYW1lc3BhY2UgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBuYW1lc3BhY2UsXG4gICAgICAgICAgICB0eXBlOiAnYXR0cmlidXRlJ1xuICAgICAgICB9O1xuICAgIH1cbn1cbmZ1bmN0aW9uIGZvcm1hdEVsZW1lbnQoZWxlbWVudCkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShgPCR7ZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCl9IC8+YCk7XG59XG5BUFBFTkRfT1BDT0RFUy5hZGQoMzEgLyogRHluYW1pY0F0dHJOUyAqLywgKHZtLCB7IG9wMTogX25hbWUsIG9wMjogX25hbWVzcGFjZSwgb3AzOiB0cnVzdGluZyB9KSA9PiB7XG4gICAgbGV0IG5hbWUgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKF9uYW1lKTtcbiAgICBsZXQgbmFtZXNwYWNlID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyhfbmFtZXNwYWNlKTtcbiAgICBsZXQgcmVmZXJlbmNlID0gdm0uc3RhY2sucG9wKCk7XG4gICAgdm0uZWxlbWVudHMoKS5zZXREeW5hbWljQXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lLCByZWZlcmVuY2UsICEhdHJ1c3RpbmcpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMzAgLyogRHluYW1pY0F0dHIgKi8sICh2bSwgeyBvcDE6IF9uYW1lLCBvcDI6IHRydXN0aW5nIH0pID0+IHtcbiAgICBsZXQgbmFtZSA9IHZtLmNvbnN0YW50cy5nZXRTdHJpbmcoX25hbWUpO1xuICAgIGxldCByZWZlcmVuY2UgPSB2bS5zdGFjay5wb3AoKTtcbiAgICB2bS5lbGVtZW50cygpLnNldER5bmFtaWNBdHRyaWJ1dGUobmFtZSwgcmVmZXJlbmNlLCAhIXRydXN0aW5nKTtcbn0pO1xuZXhwb3J0IGNsYXNzIFBhdGNoRWxlbWVudE9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcihvcGVyYXRpb24pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy50eXBlID0gJ3BhdGNoLWVsZW1lbnQnO1xuICAgICAgICB0aGlzLnRhZyA9IG9wZXJhdGlvbi50YWc7XG4gICAgICAgIHRoaXMub3BlcmF0aW9uID0gb3BlcmF0aW9uO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICB0aGlzLm9wZXJhdGlvbi5wYXRjaCh2bS5lbnYpO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIGxldCB7IF9ndWlkLCB0eXBlLCBvcGVyYXRpb24gfSA9IHRoaXM7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkZXRhaWxzOiBvcGVyYXRpb24udG9KU09OKCksXG4gICAgICAgICAgICBndWlkOiBfZ3VpZCxcbiAgICAgICAgICAgIHR5cGVcbiAgICAgICAgfTtcbiAgICB9XG59Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2RvbS5qcyJdLCJuYW1lcyI6WyJVcGRhdGluZ09wY29kZSIsIkNhY2hlZFJlZmVyZW5jZSIsIlJlZmVyZW5jZUNhY2hlIiwiY29tYmluZVRhZ2dlZCIsImlzQ29uc3QiLCJpc0NvbnN0UmVmZXJlbmNlIiwiaXNNb2RpZmllZCIsIk5VTExfUkVGRVJFTkNFIiwiUHJpbWl0aXZlUmVmZXJlbmNlIiwiQXNzZXJ0IiwiQVBQRU5EX09QQ09ERVMiLCJhZGQiLCJ2bSIsInRleHQiLCJvcDEiLCJlbGVtZW50cyIsImFwcGVuZFRleHQiLCJjb25zdGFudHMiLCJnZXRTdHJpbmciLCJhcHBlbmRDb21tZW50IiwidGFnIiwib3BlbkVsZW1lbnQiLCJ0YWdOYW1lIiwib3BlcmF0aW9ucyIsInN0YWNrIiwicG9wIiwidmFsdWUiLCJlbGVtZW50UmVmIiwibmV4dFNpYmxpbmdSZWYiLCJlbGVtZW50IiwibmV4dFNpYmxpbmciLCJjYWNoZSIsInBlZWsiLCJ1cGRhdGVXaXRoIiwicHVzaFJlbW90ZUVsZW1lbnQiLCJwb3BSZW1vdGVFbGVtZW50IiwiQ2xhc3NMaXN0IiwibGlzdCIsImFwcGVuZCIsInJlZmVyZW5jZSIsInB1c2giLCJ0b1JlZmVyZW5jZSIsImNyZWF0ZSIsInRvQ2xhc3NOYW1lIiwiQ2xhc3NMaXN0UmVmZXJlbmNlIiwiY29tcHV0ZSIsInJldCIsImkiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJqb2luIiwiU2ltcGxlRWxlbWVudE9wZXJhdGlvbnMiLCJlbnYiLCJvcGNvZGVzIiwiY2xhc3NMaXN0IiwiYWRkU3RhdGljQXR0cmlidXRlIiwibmFtZSIsImFkZENsYXNzIiwiZ2V0QXBwZW5kT3BlcmF0aW9ucyIsInNldEF0dHJpYnV0ZSIsImFkZFN0YXRpY0F0dHJpYnV0ZU5TIiwibmFtZXNwYWNlIiwiYWRkRHluYW1pY0F0dHJpYnV0ZSIsImlzVHJ1c3RpbmciLCJhdHRyaWJ1dGVNYW5hZ2VyIiwiYXR0cmlidXRlRm9yIiwiYXR0cmlidXRlIiwiRHluYW1pY0F0dHJpYnV0ZSIsImFkZEF0dHJpYnV0ZSIsImFkZER5bmFtaWNBdHRyaWJ1dGVOUyIsIm5zQXR0cmlidXRlIiwiZmx1c2giLCJvcGNvZGUiLCJDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyIsImF0dHJpYnV0ZU5hbWVzIiwiYXR0cmlidXRlcyIsInNob3VsZEFkZEF0dHJpYnV0ZSIsIlN0YXRpY0F0dHJpYnV0ZSIsImluZGV4T2YiLCJhY3Rpb24iLCJleHBlY3RPcGVyYXRpb25zIiwiZXhwZWN0Q29uc3RydWN0aW5nIiwiZmx1c2hFbGVtZW50IiwiY2xvc2VFbGVtZW50IiwiX25hbWUiLCJfdmFsdWUiLCJvcDIiLCJfbmFtZXNwYWNlIiwib3AzIiwic2V0U3RhdGljQXR0cmlidXRlTlMiLCJzZXRTdGF0aWNBdHRyaWJ1dGUiLCJfbWFuYWdlciIsIm1hbmFnZXIiLCJnZXRPdGhlciIsImFyZ3MiLCJjb25zdHJ1Y3RpbmciLCJ1cGRhdGVPcGVyYXRpb25zIiwiZHluYW1pY1Njb3BlIiwibW9kaWZpZXIiLCJjbGVhciIsInNjaGVkdWxlSW5zdGFsbE1vZGlmaWVyIiwiZGVzdHJ1Y3RvciIsImdldERlc3RydWN0b3IiLCJuZXdEZXN0cm95YWJsZSIsIlVwZGF0ZU1vZGlmaWVyT3Bjb2RlIiwidHlwZSIsImxhc3RVcGRhdGVkIiwiZXZhbHVhdGUiLCJ2YWxpZGF0ZSIsInNjaGVkdWxlVXBkYXRlTW9kaWZpZXIiLCJ0b0pTT04iLCJndWlkIiwiX2d1aWQiLCJwYXRjaCIsInJldmFsaWRhdGUiLCJ1cGRhdGVBdHRyaWJ1dGUiLCJQYXRjaEVsZW1lbnRPcGNvZGUiLCJmb3JtYXR0ZWRFbGVtZW50IiwiZm9ybWF0RWxlbWVudCIsImxhc3RWYWx1ZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJ0b0xvd2VyQ2FzZSIsInRydXN0aW5nIiwic2V0RHluYW1pY0F0dHJpYnV0ZU5TIiwic2V0RHluYW1pY0F0dHJpYnV0ZSIsIm9wZXJhdGlvbiIsImRldGFpbHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsU0FBU0EsY0FBVCxRQUErQixlQUEvQjs7QUFFQSxTQUFTQyxlQUFULEVBQTBCQyxjQUExQixFQUEwQ0MsYUFBMUMsRUFBeURDLFdBQVdDLGdCQUFwRSxFQUFzRkMsVUFBdEYsUUFBd0csb0JBQXhHO0FBQ0EsU0FBU0MsY0FBVCxFQUF5QkMsa0JBQXpCLFFBQW1ELGtCQUFuRDtBQUNBLFNBQVNDLE1BQVQsUUFBdUIsTUFBdkI7QUFDQSxTQUFTQyxjQUFULFFBQStCLGVBQS9CO0FBQ0FBLGVBQWVDLEdBQWYsQ0FBbUIsRUFBbkIsQ0FBc0IsVUFBdEIsRUFBa0MsVUFBQ0MsRUFBRCxRQUF1QjtBQUFBLFFBQVhDLElBQVcsUUFBaEJDLEdBQWdCOztBQUNyREYsT0FBR0csUUFBSCxHQUFjQyxVQUFkLENBQXlCSixHQUFHSyxTQUFILENBQWFDLFNBQWIsQ0FBdUJMLElBQXZCLENBQXpCO0FBQ0gsQ0FGRDtBQUdBSCxlQUFlQyxHQUFmLENBQW1CLEVBQW5CLENBQXNCLGFBQXRCLEVBQXFDLFVBQUNDLEVBQUQsU0FBdUI7QUFBQSxRQUFYQyxJQUFXLFNBQWhCQyxHQUFnQjs7QUFDeERGLE9BQUdHLFFBQUgsR0FBY0ksYUFBZCxDQUE0QlAsR0FBR0ssU0FBSCxDQUFhQyxTQUFiLENBQXVCTCxJQUF2QixDQUE1QjtBQUNILENBRkQ7QUFHQUgsZUFBZUMsR0FBZixDQUFtQixFQUFuQixDQUFzQixpQkFBdEIsRUFBeUMsVUFBQ0MsRUFBRCxTQUFzQjtBQUFBLFFBQVZRLEdBQVUsU0FBZk4sR0FBZTs7QUFDM0RGLE9BQUdHLFFBQUgsR0FBY00sV0FBZCxDQUEwQlQsR0FBR0ssU0FBSCxDQUFhQyxTQUFiLENBQXVCRSxHQUF2QixDQUExQjtBQUNILENBRkQ7QUFHQVYsZUFBZUMsR0FBZixDQUFtQixFQUFuQixDQUFzQiwrQkFBdEIsRUFBdUQsVUFBQ0MsRUFBRCxTQUFzQjtBQUFBLFFBQVZRLEdBQVUsU0FBZk4sR0FBZTs7QUFDekUsUUFBSVEsVUFBVVYsR0FBR0ssU0FBSCxDQUFhQyxTQUFiLENBQXVCRSxHQUF2QixDQUFkO0FBQ0EsUUFBSUcsYUFBYVgsR0FBR1ksS0FBSCxDQUFTQyxHQUFULEVBQWpCO0FBQ0FiLE9BQUdHLFFBQUgsR0FBY00sV0FBZCxDQUEwQkMsT0FBMUIsRUFBbUNDLFVBQW5DO0FBQ0gsQ0FKRDtBQUtBYixlQUFlQyxHQUFmLENBQW1CLEVBQW5CLENBQXNCLHdCQUF0QixFQUFnRCxjQUFNO0FBQ2xELFFBQUlZLGFBQWFYLEdBQUdZLEtBQUgsQ0FBU0MsR0FBVCxFQUFqQjtBQUNBLFFBQUlILFVBQVVWLEdBQUdZLEtBQUgsQ0FBU0MsR0FBVCxHQUFlQyxLQUFmLEVBQWQ7QUFDQWQsT0FBR0csUUFBSCxHQUFjTSxXQUFkLENBQTBCQyxPQUExQixFQUFtQ0MsVUFBbkM7QUFDSCxDQUpEO0FBS0FiLGVBQWVDLEdBQWYsQ0FBbUIsRUFBbkIsQ0FBc0IsdUJBQXRCLEVBQStDLGNBQU07QUFDakQsUUFBSWdCLGFBQWFmLEdBQUdZLEtBQUgsQ0FBU0MsR0FBVCxFQUFqQjtBQUNBLFFBQUlHLGlCQUFpQmhCLEdBQUdZLEtBQUgsQ0FBU0MsR0FBVCxFQUFyQjtBQUNBLFFBQUlJLGdCQUFKO0FBQ0EsUUFBSUMsb0JBQUo7QUFDQSxRQUFJekIsaUJBQWlCc0IsVUFBakIsQ0FBSixFQUFrQztBQUM5QkUsa0JBQVVGLFdBQVdELEtBQVgsRUFBVjtBQUNILEtBRkQsTUFFTztBQUNILFlBQUlLLFFBQVEsSUFBSTdCLGNBQUosQ0FBbUJ5QixVQUFuQixDQUFaO0FBQ0FFLGtCQUFVRSxNQUFNQyxJQUFOLEVBQVY7QUFDQXBCLFdBQUdxQixVQUFILENBQWMsSUFBSXhCLE1BQUosQ0FBV3NCLEtBQVgsQ0FBZDtBQUNIO0FBQ0QsUUFBSTFCLGlCQUFpQnVCLGNBQWpCLENBQUosRUFBc0M7QUFDbENFLHNCQUFjRixlQUFlRixLQUFmLEVBQWQ7QUFDSCxLQUZELE1BRU87QUFDSCxZQUFJSyxTQUFRLElBQUk3QixjQUFKLENBQW1CMEIsY0FBbkIsQ0FBWjtBQUNBRSxzQkFBY0MsT0FBTUMsSUFBTixFQUFkO0FBQ0FwQixXQUFHcUIsVUFBSCxDQUFjLElBQUl4QixNQUFKLENBQVdzQixNQUFYLENBQWQ7QUFDSDtBQUNEbkIsT0FBR0csUUFBSCxHQUFjbUIsaUJBQWQsQ0FBZ0NMLE9BQWhDLEVBQXlDQyxXQUF6QztBQUNILENBcEJEO0FBcUJBcEIsZUFBZUMsR0FBZixDQUFtQixFQUFuQixDQUFzQixzQkFBdEIsRUFBOEM7QUFBQSxXQUFNQyxHQUFHRyxRQUFILEdBQWNvQixnQkFBZCxFQUFOO0FBQUEsQ0FBOUM7O0lBQ01DLFM7QUFDRix5QkFBYztBQUFBOztBQUNWLGFBQUtDLElBQUwsR0FBWSxJQUFaO0FBQ0EsYUFBS2pDLE9BQUwsR0FBZSxJQUFmO0FBQ0g7O3dCQUNEa0MsTSxtQkFBT0MsUyxFQUFXO0FBQUEsWUFDUkYsSUFEUSxHQUNVLElBRFYsQ0FDUkEsSUFEUTtBQUFBLFlBQ0ZqQyxPQURFLEdBQ1UsSUFEVixDQUNGQSxPQURFOztBQUVkLFlBQUlpQyxTQUFTLElBQWIsRUFBbUJBLE9BQU8sS0FBS0EsSUFBTCxHQUFZLEVBQW5CO0FBQ25CQSxhQUFLRyxJQUFMLENBQVVELFNBQVY7QUFDQSxhQUFLbkMsT0FBTCxHQUFlQSxXQUFXQyxpQkFBaUJrQyxTQUFqQixDQUExQjtBQUNILEs7O3dCQUNERSxXLDBCQUFjO0FBQUEsWUFDSkosSUFESSxHQUNjLElBRGQsQ0FDSkEsSUFESTtBQUFBLFlBQ0VqQyxPQURGLEdBQ2MsSUFEZCxDQUNFQSxPQURGOztBQUVWLFlBQUksQ0FBQ2lDLElBQUwsRUFBVyxPQUFPOUIsY0FBUDtBQUNYLFlBQUlILE9BQUosRUFBYSxPQUFPSSxtQkFBbUJrQyxNQUFuQixDQUEwQkMsWUFBWU4sSUFBWixDQUExQixDQUFQO0FBQ2IsZUFBTyxJQUFJTyxrQkFBSixDQUF1QlAsSUFBdkIsQ0FBUDtBQUNILEs7Ozs7O0lBRUNPLGtCOzs7QUFDRixnQ0FBWVAsSUFBWixFQUFrQjtBQUFBOztBQUFBLHFEQUNkLDJCQURjOztBQUVkLGNBQUtBLElBQUwsR0FBWSxFQUFaO0FBQ0EsY0FBS2pCLEdBQUwsR0FBV2pCLGNBQWNrQyxJQUFkLENBQVg7QUFDQSxjQUFLQSxJQUFMLEdBQVlBLElBQVo7QUFKYztBQUtqQjs7aUNBQ0RRLE8sc0JBQVU7QUFDTixlQUFPRixZQUFZLEtBQUtOLElBQWpCLENBQVA7QUFDSCxLOzs7RUFUNEJwQyxlOztBQVdqQyxTQUFTMEMsV0FBVCxDQUFxQk4sSUFBckIsRUFBMkI7QUFDdkIsUUFBSVMsTUFBTSxFQUFWO0FBQ0EsU0FBSyxJQUFJQyxJQUFJLENBQWIsRUFBZ0JBLElBQUlWLEtBQUtXLE1BQXpCLEVBQWlDRCxHQUFqQyxFQUFzQztBQUNsQyxZQUFJckIsUUFBUVcsS0FBS1UsQ0FBTCxFQUFRckIsS0FBUixFQUFaO0FBQ0EsWUFBSUEsVUFBVSxLQUFWLElBQW1CQSxVQUFVLElBQTdCLElBQXFDQSxVQUFVdUIsU0FBbkQsRUFBOERILElBQUlOLElBQUosQ0FBU2QsS0FBVDtBQUNqRTtBQUNELFdBQU9vQixJQUFJRSxNQUFKLEtBQWUsQ0FBZixHQUFtQixJQUFuQixHQUEwQkYsSUFBSUksSUFBSixDQUFTLEdBQVQsQ0FBakM7QUFDSDtBQUNELFdBQWFDLHVCQUFiO0FBQ0kscUNBQVlDLEdBQVosRUFBaUI7QUFBQTs7QUFDYixhQUFLQSxHQUFMLEdBQVdBLEdBQVg7QUFDQSxhQUFLQyxPQUFMLEdBQWUsSUFBZjtBQUNBLGFBQUtDLFNBQUwsR0FBaUIsSUFBakI7QUFDSDs7QUFMTCxzQ0FNSUMsa0JBTkosK0JBTXVCMUIsT0FOdkIsRUFNZ0MyQixJQU5oQyxFQU1zQzlCLEtBTnRDLEVBTTZDO0FBQ3JDLFlBQUk4QixTQUFTLE9BQWIsRUFBc0I7QUFDbEIsaUJBQUtDLFFBQUwsQ0FBY2pELG1CQUFtQmtDLE1BQW5CLENBQTBCaEIsS0FBMUIsQ0FBZDtBQUNILFNBRkQsTUFFTztBQUNILGlCQUFLMEIsR0FBTCxDQUFTTSxtQkFBVCxHQUErQkMsWUFBL0IsQ0FBNEM5QixPQUE1QyxFQUFxRDJCLElBQXJELEVBQTJEOUIsS0FBM0Q7QUFDSDtBQUNKLEtBWkw7O0FBQUEsc0NBYUlrQyxvQkFiSixpQ0FheUIvQixPQWJ6QixFQWFrQ2dDLFNBYmxDLEVBYTZDTCxJQWI3QyxFQWFtRDlCLEtBYm5ELEVBYTBEO0FBQ2xELGFBQUswQixHQUFMLENBQVNNLG1CQUFULEdBQStCQyxZQUEvQixDQUE0QzlCLE9BQTVDLEVBQXFEMkIsSUFBckQsRUFBMkQ5QixLQUEzRCxFQUFrRW1DLFNBQWxFO0FBQ0gsS0FmTDs7QUFBQSxzQ0FnQklDLG1CQWhCSixnQ0FnQndCakMsT0FoQnhCLEVBZ0JpQzJCLElBaEJqQyxFQWdCdUNqQixTQWhCdkMsRUFnQmtEd0IsVUFoQmxELEVBZ0I4RDtBQUN0RCxZQUFJUCxTQUFTLE9BQWIsRUFBc0I7QUFDbEIsaUJBQUtDLFFBQUwsQ0FBY2xCLFNBQWQ7QUFDSCxTQUZELE1BRU87QUFDSCxnQkFBSXlCLG1CQUFtQixLQUFLWixHQUFMLENBQVNhLFlBQVQsQ0FBc0JwQyxPQUF0QixFQUErQjJCLElBQS9CLEVBQXFDTyxVQUFyQyxDQUF2QjtBQUNBLGdCQUFJRyxZQUFZLElBQUlDLGdCQUFKLENBQXFCdEMsT0FBckIsRUFBOEJtQyxnQkFBOUIsRUFBZ0RSLElBQWhELEVBQXNEakIsU0FBdEQsQ0FBaEI7QUFDQSxpQkFBSzZCLFlBQUwsQ0FBa0JGLFNBQWxCO0FBQ0g7QUFDSixLQXhCTDs7QUFBQSxzQ0F5QklHLHFCQXpCSixrQ0F5QjBCeEMsT0F6QjFCLEVBeUJtQ2dDLFNBekJuQyxFQXlCOENMLElBekI5QyxFQXlCb0RqQixTQXpCcEQsRUF5QitEd0IsVUF6Qi9ELEVBeUIyRTtBQUNuRSxZQUFJQyxtQkFBbUIsS0FBS1osR0FBTCxDQUFTYSxZQUFULENBQXNCcEMsT0FBdEIsRUFBK0IyQixJQUEvQixFQUFxQ08sVUFBckMsRUFBaURGLFNBQWpELENBQXZCO0FBQ0EsWUFBSVMsY0FBYyxJQUFJSCxnQkFBSixDQUFxQnRDLE9BQXJCLEVBQThCbUMsZ0JBQTlCLEVBQWdEUixJQUFoRCxFQUFzRGpCLFNBQXRELEVBQWlFc0IsU0FBakUsQ0FBbEI7QUFDQSxhQUFLTyxZQUFMLENBQWtCRSxXQUFsQjtBQUNILEtBN0JMOztBQUFBLHNDQThCSUMsS0E5Qkosa0JBOEJVMUMsT0E5QlYsRUE4Qm1CakIsRUE5Qm5CLEVBOEJ1QjtBQUFBLFlBQ1R3QyxHQURTLEdBQ0R4QyxFQURDLENBQ1R3QyxHQURTO0FBQUEsWUFFVEMsT0FGUyxHQUVjLElBRmQsQ0FFVEEsT0FGUztBQUFBLFlBRUFDLFNBRkEsR0FFYyxJQUZkLENBRUFBLFNBRkE7O0FBR2YsYUFBSyxJQUFJUCxJQUFJLENBQWIsRUFBZ0JNLFdBQVdOLElBQUlNLFFBQVFMLE1BQXZDLEVBQStDRCxHQUEvQyxFQUFvRDtBQUNoRG5DLGVBQUdxQixVQUFILENBQWNvQixRQUFRTixDQUFSLENBQWQ7QUFDSDtBQUNELFlBQUlPLFNBQUosRUFBZTtBQUNYLGdCQUFJVSxtQkFBbUJaLElBQUlhLFlBQUosQ0FBaUJwQyxPQUFqQixFQUEwQixPQUExQixFQUFtQyxLQUFuQyxDQUF2QjtBQUNBLGdCQUFJcUMsWUFBWSxJQUFJQyxnQkFBSixDQUFxQnRDLE9BQXJCLEVBQThCbUMsZ0JBQTlCLEVBQWdELE9BQWhELEVBQXlEVixVQUFVYixXQUFWLEVBQXpELENBQWhCO0FBQ0EsZ0JBQUkrQixTQUFTTixVQUFVSyxLQUFWLENBQWdCbkIsR0FBaEIsQ0FBYjtBQUNBLGdCQUFJb0IsTUFBSixFQUFZO0FBQ1I1RCxtQkFBR3FCLFVBQUgsQ0FBY3VDLE1BQWQ7QUFDSDtBQUNKO0FBQ0QsYUFBS25CLE9BQUwsR0FBZSxJQUFmO0FBQ0EsYUFBS0MsU0FBTCxHQUFpQixJQUFqQjtBQUNILEtBOUNMOztBQUFBLHNDQStDSUcsUUEvQ0oscUJBK0NhbEIsU0EvQ2IsRUErQ3dCO0FBQUEsWUFDVmUsU0FEVSxHQUNJLElBREosQ0FDVkEsU0FEVTs7QUFFaEIsWUFBSSxDQUFDQSxTQUFMLEVBQWdCO0FBQ1pBLHdCQUFZLEtBQUtBLFNBQUwsR0FBaUIsSUFBSWxCLFNBQUosRUFBN0I7QUFDSDtBQUNEa0Isa0JBQVVoQixNQUFWLENBQWlCQyxTQUFqQjtBQUNILEtBckRMOztBQUFBLHNDQXNESTZCLFlBdERKLHlCQXNEaUJGLFNBdERqQixFQXNENEI7QUFDcEIsWUFBSU0sU0FBU04sVUFBVUssS0FBVixDQUFnQixLQUFLbkIsR0FBckIsQ0FBYjtBQUNBLFlBQUlvQixNQUFKLEVBQVk7QUFBQSxnQkFDRm5CLE9BREUsR0FDVSxJQURWLENBQ0ZBLE9BREU7O0FBRVIsZ0JBQUksQ0FBQ0EsT0FBTCxFQUFjO0FBQ1ZBLDBCQUFVLEtBQUtBLE9BQUwsR0FBZSxFQUF6QjtBQUNIO0FBQ0RBLG9CQUFRYixJQUFSLENBQWFnQyxNQUFiO0FBQ0g7QUFDSixLQS9ETDs7QUFBQTtBQUFBO0FBaUVBLFdBQWFDLDBCQUFiO0FBQ0ksd0NBQVlyQixHQUFaLEVBQWlCO0FBQUE7O0FBQ2IsYUFBS0EsR0FBTCxHQUFXQSxHQUFYO0FBQ0EsYUFBS3NCLGNBQUwsR0FBc0IsSUFBdEI7QUFDQSxhQUFLQyxVQUFMLEdBQWtCLElBQWxCO0FBQ0EsYUFBS3JCLFNBQUwsR0FBaUIsSUFBakI7QUFDSDs7QUFOTCx5Q0FPSUMsa0JBUEosK0JBT3VCMUIsT0FQdkIsRUFPZ0MyQixJQVBoQyxFQU9zQzlCLEtBUHRDLEVBTzZDO0FBQ3JDLFlBQUk4QixTQUFTLE9BQWIsRUFBc0I7QUFDbEIsaUJBQUtDLFFBQUwsQ0FBY2pELG1CQUFtQmtDLE1BQW5CLENBQTBCaEIsS0FBMUIsQ0FBZDtBQUNILFNBRkQsTUFFTyxJQUFJLEtBQUtrRCxrQkFBTCxDQUF3QnBCLElBQXhCLENBQUosRUFBbUM7QUFDdEMsaUJBQUtZLFlBQUwsQ0FBa0JaLElBQWxCLEVBQXdCLElBQUlxQixlQUFKLENBQW9CaEQsT0FBcEIsRUFBNkIyQixJQUE3QixFQUFtQzlCLEtBQW5DLENBQXhCO0FBQ0g7QUFDSixLQWJMOztBQUFBLHlDQWNJa0Msb0JBZEosaUNBY3lCL0IsT0FkekIsRUFja0NnQyxTQWRsQyxFQWM2Q0wsSUFkN0MsRUFjbUQ5QixLQWRuRCxFQWMwRDtBQUNsRCxZQUFJLEtBQUtrRCxrQkFBTCxDQUF3QnBCLElBQXhCLENBQUosRUFBbUM7QUFDL0IsaUJBQUtZLFlBQUwsQ0FBa0JaLElBQWxCLEVBQXdCLElBQUlxQixlQUFKLENBQW9CaEQsT0FBcEIsRUFBNkIyQixJQUE3QixFQUFtQzlCLEtBQW5DLEVBQTBDbUMsU0FBMUMsQ0FBeEI7QUFDSDtBQUNKLEtBbEJMOztBQUFBLHlDQW1CSUMsbUJBbkJKLGdDQW1Cd0JqQyxPQW5CeEIsRUFtQmlDMkIsSUFuQmpDLEVBbUJ1Q2pCLFNBbkJ2QyxFQW1Ca0R3QixVQW5CbEQsRUFtQjhEO0FBQ3RELFlBQUlQLFNBQVMsT0FBYixFQUFzQjtBQUNsQixpQkFBS0MsUUFBTCxDQUFjbEIsU0FBZDtBQUNILFNBRkQsTUFFTyxJQUFJLEtBQUtxQyxrQkFBTCxDQUF3QnBCLElBQXhCLENBQUosRUFBbUM7QUFDdEMsZ0JBQUlRLG1CQUFtQixLQUFLWixHQUFMLENBQVNhLFlBQVQsQ0FBc0JwQyxPQUF0QixFQUErQjJCLElBQS9CLEVBQXFDTyxVQUFyQyxDQUF2QjtBQUNBLGdCQUFJRyxZQUFZLElBQUlDLGdCQUFKLENBQXFCdEMsT0FBckIsRUFBOEJtQyxnQkFBOUIsRUFBZ0RSLElBQWhELEVBQXNEakIsU0FBdEQsQ0FBaEI7QUFDQSxpQkFBSzZCLFlBQUwsQ0FBa0JaLElBQWxCLEVBQXdCVSxTQUF4QjtBQUNIO0FBQ0osS0EzQkw7O0FBQUEseUNBNEJJRyxxQkE1Qkosa0NBNEIwQnhDLE9BNUIxQixFQTRCbUNnQyxTQTVCbkMsRUE0QjhDTCxJQTVCOUMsRUE0Qm9EakIsU0E1QnBELEVBNEIrRHdCLFVBNUIvRCxFQTRCMkU7QUFDbkUsWUFBSSxLQUFLYSxrQkFBTCxDQUF3QnBCLElBQXhCLENBQUosRUFBbUM7QUFDL0IsZ0JBQUlRLG1CQUFtQixLQUFLWixHQUFMLENBQVNhLFlBQVQsQ0FBc0JwQyxPQUF0QixFQUErQjJCLElBQS9CLEVBQXFDTyxVQUFyQyxFQUFpREYsU0FBakQsQ0FBdkI7QUFDQSxnQkFBSVMsY0FBYyxJQUFJSCxnQkFBSixDQUFxQnRDLE9BQXJCLEVBQThCbUMsZ0JBQTlCLEVBQWdEUixJQUFoRCxFQUFzRGpCLFNBQXRELEVBQWlFc0IsU0FBakUsQ0FBbEI7QUFDQSxpQkFBS08sWUFBTCxDQUFrQlosSUFBbEIsRUFBd0JjLFdBQXhCO0FBQ0g7QUFDSixLQWxDTDs7QUFBQSx5Q0FtQ0lDLEtBbkNKLGtCQW1DVTFDLE9BbkNWLEVBbUNtQmpCLEVBbkNuQixFQW1DdUI7QUFBQSxZQUNUd0MsR0FEUyxHQUNELElBREMsQ0FDVEEsR0FEUztBQUFBLFlBRVR1QixVQUZTLEdBRWlCLElBRmpCLENBRVRBLFVBRlM7QUFBQSxZQUVHckIsU0FGSCxHQUVpQixJQUZqQixDQUVHQSxTQUZIOztBQUdmLGFBQUssSUFBSVAsSUFBSSxDQUFiLEVBQWdCNEIsY0FBYzVCLElBQUk0QixXQUFXM0IsTUFBN0MsRUFBcURELEdBQXJELEVBQTBEO0FBQ3RELGdCQUFJeUIsU0FBU0csV0FBVzVCLENBQVgsRUFBY3dCLEtBQWQsQ0FBb0JuQixHQUFwQixDQUFiO0FBQ0EsZ0JBQUlvQixNQUFKLEVBQVk7QUFDUjVELG1CQUFHcUIsVUFBSCxDQUFjdUMsTUFBZDtBQUNIO0FBQ0o7QUFDRCxZQUFJbEIsU0FBSixFQUFlO0FBQ1gsZ0JBQUlVLG1CQUFtQlosSUFBSWEsWUFBSixDQUFpQnBDLE9BQWpCLEVBQTBCLE9BQTFCLEVBQW1DLEtBQW5DLENBQXZCO0FBQ0EsZ0JBQUlxQyxZQUFZLElBQUlDLGdCQUFKLENBQXFCdEMsT0FBckIsRUFBOEJtQyxnQkFBOUIsRUFBZ0QsT0FBaEQsRUFBeURWLFVBQVViLFdBQVYsRUFBekQsQ0FBaEI7QUFDQSxnQkFBSStCLFVBQVNOLFVBQVVLLEtBQVYsQ0FBZ0JuQixHQUFoQixDQUFiO0FBQ0EsZ0JBQUlvQixPQUFKLEVBQVk7QUFDUjVELG1CQUFHcUIsVUFBSCxDQUFjdUMsT0FBZDtBQUNIO0FBQ0o7QUFDSixLQXBETDs7QUFBQSx5Q0FxRElJLGtCQXJESiwrQkFxRHVCcEIsSUFyRHZCLEVBcUQ2QjtBQUNyQixlQUFPLENBQUMsS0FBS2tCLGNBQU4sSUFBd0IsS0FBS0EsY0FBTCxDQUFvQkksT0FBcEIsQ0FBNEJ0QixJQUE1QixNQUFzQyxDQUFDLENBQXRFO0FBQ0gsS0F2REw7O0FBQUEseUNBd0RJQyxRQXhESixxQkF3RGFsQixTQXhEYixFQXdEd0I7QUFBQSxZQUNWZSxTQURVLEdBQ0ksSUFESixDQUNWQSxTQURVOztBQUVoQixZQUFJLENBQUNBLFNBQUwsRUFBZ0I7QUFDWkEsd0JBQVksS0FBS0EsU0FBTCxHQUFpQixJQUFJbEIsU0FBSixFQUE3QjtBQUNIO0FBQ0RrQixrQkFBVWhCLE1BQVYsQ0FBaUJDLFNBQWpCO0FBQ0gsS0E5REw7O0FBQUEseUNBK0RJNkIsWUEvREoseUJBK0RpQlosSUEvRGpCLEVBK0R1QlUsU0EvRHZCLEVBK0RrQztBQUFBLFlBQ3BCUSxjQURvQixHQUNXLElBRFgsQ0FDcEJBLGNBRG9CO0FBQUEsWUFDSkMsVUFESSxHQUNXLElBRFgsQ0FDSkEsVUFESTs7QUFFMUIsWUFBSSxDQUFDRCxjQUFMLEVBQXFCO0FBQ2pCQSw2QkFBaUIsS0FBS0EsY0FBTCxHQUFzQixFQUF2QztBQUNBQyx5QkFBYSxLQUFLQSxVQUFMLEdBQWtCLEVBQS9CO0FBQ0g7QUFDREQsdUJBQWVsQyxJQUFmLENBQW9CZ0IsSUFBcEI7QUFDT21CLGtCQUFQLENBQW1CbkMsSUFBbkIsQ0FBd0IwQixTQUF4QjtBQUNILEtBdkVMOztBQUFBO0FBQUE7QUF5RUF4RCxlQUFlQyxHQUFmLENBQW1CLEVBQW5CLENBQXNCLGtCQUF0QixFQUEwQyxjQUFNO0FBQzVDLFFBQUlhLFFBQVFaLEdBQUdHLFFBQUgsRUFBWjtBQUNBLFFBQUlnRSxTQUFTLDZCQUFiO0FBQ0F2RCxVQUFNd0QsZ0JBQU4sQ0FBdUJELE1BQXZCLEVBQStCUixLQUEvQixDQUFxQy9DLE1BQU15RCxrQkFBTixDQUF5QkYsTUFBekIsQ0FBckMsRUFBdUVuRSxFQUF2RTtBQUNBWSxVQUFNMEQsWUFBTjtBQUNILENBTEQ7QUFNQXhFLGVBQWVDLEdBQWYsQ0FBbUIsRUFBbkIsQ0FBc0Isa0JBQXRCLEVBQTBDO0FBQUEsV0FBTUMsR0FBR0csUUFBSCxHQUFjb0UsWUFBZCxFQUFOO0FBQUEsQ0FBMUM7QUFDQXpFLGVBQWVDLEdBQWYsQ0FBbUIsRUFBbkIsQ0FBc0IsZ0JBQXRCLEVBQXdDLFVBQUNDLEVBQUQsU0FBc0Q7QUFBQSxRQUExQ3dFLEtBQTBDLFNBQS9DdEUsR0FBK0M7QUFBQSxRQUE5QnVFLE1BQThCLFNBQW5DQyxHQUFtQztBQUFBLFFBQWpCQyxVQUFpQixTQUF0QkMsR0FBc0I7O0FBQzFGLFFBQUloQyxPQUFPNUMsR0FBR0ssU0FBSCxDQUFhQyxTQUFiLENBQXVCa0UsS0FBdkIsQ0FBWDtBQUNBLFFBQUkxRCxRQUFRZCxHQUFHSyxTQUFILENBQWFDLFNBQWIsQ0FBdUJtRSxNQUF2QixDQUFaO0FBQ0EsUUFBSUUsVUFBSixFQUFnQjtBQUNaLFlBQUkxQixZQUFZakQsR0FBR0ssU0FBSCxDQUFhQyxTQUFiLENBQXVCcUUsVUFBdkIsQ0FBaEI7QUFDQTNFLFdBQUdHLFFBQUgsR0FBYzBFLG9CQUFkLENBQW1DNUIsU0FBbkMsRUFBOENMLElBQTlDLEVBQW9EOUIsS0FBcEQ7QUFDSCxLQUhELE1BR087QUFDSGQsV0FBR0csUUFBSCxHQUFjMkUsa0JBQWQsQ0FBaUNsQyxJQUFqQyxFQUF1QzlCLEtBQXZDO0FBQ0g7QUFDSixDQVREO0FBVUFoQixlQUFlQyxHQUFmLENBQW1CLEVBQW5CLENBQXNCLGNBQXRCLEVBQXNDLFVBQUNDLEVBQUQsU0FBMkI7QUFBQSxRQUFmK0UsUUFBZSxTQUFwQjdFLEdBQW9COztBQUM3RCxRQUFJOEUsVUFBVWhGLEdBQUdLLFNBQUgsQ0FBYTRFLFFBQWIsQ0FBc0JGLFFBQXRCLENBQWQ7QUFDQSxRQUFJbkUsUUFBUVosR0FBR1ksS0FBZjtBQUNBLFFBQUlzRSxPQUFPdEUsTUFBTUMsR0FBTixFQUFYO0FBQ0EsUUFBSUwsTUFBTTBFLEtBQUsxRSxHQUFmOztBQUo2RCx1QkFLWFIsR0FBR0csUUFBSCxFQUxXO0FBQUEsUUFLekNjLE9BTHlDLGdCQUt2RGtFLFlBTHVEO0FBQUEsUUFLaENDLGdCQUxnQyxnQkFLaENBLGdCQUxnQzs7QUFNN0QsUUFBSUMsZUFBZXJGLEdBQUdxRixZQUFILEVBQW5CO0FBQ0EsUUFBSUMsV0FBV04sUUFBUWxELE1BQVIsQ0FBZWIsT0FBZixFQUF3QmlFLElBQXhCLEVBQThCRyxZQUE5QixFQUE0Q0QsZ0JBQTVDLENBQWY7QUFDQUYsU0FBS0ssS0FBTDtBQUNBdkYsT0FBR3dDLEdBQUgsQ0FBT2dELHVCQUFQLENBQStCRixRQUEvQixFQUF5Q04sT0FBekM7QUFDQSxRQUFJUyxhQUFhVCxRQUFRVSxhQUFSLENBQXNCSixRQUF0QixDQUFqQjtBQUNBLFFBQUlHLFVBQUosRUFBZ0I7QUFDWnpGLFdBQUcyRixjQUFILENBQWtCRixVQUFsQjtBQUNIO0FBQ0R6RixPQUFHcUIsVUFBSCxDQUFjLElBQUl1RSxvQkFBSixDQUF5QnBGLEdBQXpCLEVBQThCd0UsT0FBOUIsRUFBdUNNLFFBQXZDLENBQWQ7QUFDSCxDQWZEO0FBZ0JBLFdBQWFNLG9CQUFiO0FBQUE7O0FBQ0ksa0NBQVlwRixHQUFaLEVBQWlCd0UsT0FBakIsRUFBMEJNLFFBQTFCLEVBQW9DO0FBQUE7O0FBQUEsc0RBQ2hDLDBCQURnQzs7QUFFaEMsZUFBSzlFLEdBQUwsR0FBV0EsR0FBWDtBQUNBLGVBQUt3RSxPQUFMLEdBQWVBLE9BQWY7QUFDQSxlQUFLTSxRQUFMLEdBQWdCQSxRQUFoQjtBQUNBLGVBQUtPLElBQUwsR0FBWSxpQkFBWjtBQUNBLGVBQUtDLFdBQUwsR0FBbUJ0RixJQUFJTSxLQUFKLEVBQW5CO0FBTmdDO0FBT25DOztBQVJMLG1DQVNJaUYsUUFUSixxQkFTYS9GLEVBVGIsRUFTaUI7QUFBQSxZQUNIZ0YsT0FERyxHQUNxQyxJQURyQyxDQUNIQSxPQURHO0FBQUEsWUFDTU0sUUFETixHQUNxQyxJQURyQyxDQUNNQSxRQUROO0FBQUEsWUFDZ0I5RSxHQURoQixHQUNxQyxJQURyQyxDQUNnQkEsR0FEaEI7QUFBQSxZQUNxQnNGLFdBRHJCLEdBQ3FDLElBRHJDLENBQ3FCQSxXQURyQjs7QUFFVCxZQUFJLENBQUN0RixJQUFJd0YsUUFBSixDQUFhRixXQUFiLENBQUwsRUFBZ0M7QUFDNUI5RixlQUFHd0MsR0FBSCxDQUFPeUQsc0JBQVAsQ0FBOEJYLFFBQTlCLEVBQXdDTixPQUF4QztBQUNBLGlCQUFLYyxXQUFMLEdBQW1CdEYsSUFBSU0sS0FBSixFQUFuQjtBQUNIO0FBQ0osS0FmTDs7QUFBQSxtQ0FnQklvRixNQWhCSixxQkFnQmE7QUFDTCxlQUFPO0FBQ0hDLGtCQUFNLEtBQUtDLEtBRFI7QUFFSFAsa0JBQU0sS0FBS0E7QUFGUixTQUFQO0FBSUgsS0FyQkw7O0FBQUE7QUFBQSxFQUEwQ3pHLGNBQTFDO0FBdUJBLFdBQWE2RSxlQUFiO0FBQ0ksNkJBQVloRCxPQUFaLEVBQXFCMkIsSUFBckIsRUFBMkI5QixLQUEzQixFQUFrQ21DLFNBQWxDLEVBQTZDO0FBQUE7O0FBQ3pDLGFBQUtoQyxPQUFMLEdBQWVBLE9BQWY7QUFDQSxhQUFLMkIsSUFBTCxHQUFZQSxJQUFaO0FBQ0EsYUFBSzlCLEtBQUwsR0FBYUEsS0FBYjtBQUNBLGFBQUttQyxTQUFMLEdBQWlCQSxTQUFqQjtBQUNIOztBQU5MLDhCQU9JVSxLQVBKLGtCQU9VbkIsR0FQVixFQU9lO0FBQ1BBLFlBQUlNLG1CQUFKLEdBQTBCQyxZQUExQixDQUF1QyxLQUFLOUIsT0FBNUMsRUFBcUQsS0FBSzJCLElBQTFELEVBQWdFLEtBQUs5QixLQUFyRSxFQUE0RSxLQUFLbUMsU0FBakY7QUFDQSxlQUFPLElBQVA7QUFDSCxLQVZMOztBQUFBO0FBQUE7QUFZQSxXQUFhTSxnQkFBYjtBQUNJLDhCQUFZdEMsT0FBWixFQUFxQm1DLGdCQUFyQixFQUF1Q1IsSUFBdkMsRUFBNkNqQixTQUE3QyxFQUF3RHNCLFNBQXhELEVBQW1FO0FBQUE7O0FBQy9ELGFBQUtoQyxPQUFMLEdBQWVBLE9BQWY7QUFDQSxhQUFLbUMsZ0JBQUwsR0FBd0JBLGdCQUF4QjtBQUNBLGFBQUtSLElBQUwsR0FBWUEsSUFBWjtBQUNBLGFBQUtqQixTQUFMLEdBQWlCQSxTQUFqQjtBQUNBLGFBQUtzQixTQUFMLEdBQWlCQSxTQUFqQjtBQUNBLGFBQUs5QixLQUFMLEdBQWEsSUFBYjtBQUNBLGFBQUtYLEdBQUwsR0FBV21CLFVBQVVuQixHQUFyQjtBQUNIOztBQVRMLCtCQVVJNkYsS0FWSixrQkFVVTdELEdBVlYsRUFVZTtBQUFBLFlBQ0R2QixPQURDLEdBQ2tCLElBRGxCLENBQ0RBLE9BREM7QUFBQSxZQUNRRSxLQURSLEdBQ2tCLElBRGxCLENBQ1FBLEtBRFI7O0FBRVAsWUFBSUwsUUFBZUssS0FBUCxDQUF3Q21GLFVBQXhDLEVBQVo7QUFDQSxZQUFJNUcsV0FBV29CLEtBQVgsQ0FBSixFQUF1QjtBQUNuQixpQkFBS3NDLGdCQUFMLENBQXNCbUQsZUFBdEIsQ0FBc0MvRCxHQUF0QyxFQUEyQ3ZCLE9BQTNDLEVBQW9ESCxLQUFwRCxFQUEyRCxLQUFLbUMsU0FBaEU7QUFDSDtBQUNKLEtBaEJMOztBQUFBLCtCQWlCSVUsS0FqQkosa0JBaUJVbkIsR0FqQlYsRUFpQmU7QUFBQSxZQUNEYixTQURDLEdBQ3NCLElBRHRCLENBQ0RBLFNBREM7QUFBQSxZQUNVVixPQURWLEdBQ3NCLElBRHRCLENBQ1VBLE9BRFY7O0FBRVAsWUFBSXhCLGlCQUFpQmtDLFNBQWpCLENBQUosRUFBaUM7QUFDN0IsZ0JBQUliLFFBQVFhLFVBQVViLEtBQVYsRUFBWjtBQUNBLGlCQUFLc0MsZ0JBQUwsQ0FBc0JMLFlBQXRCLENBQW1DUCxHQUFuQyxFQUF3Q3ZCLE9BQXhDLEVBQWlESCxLQUFqRCxFQUF3RCxLQUFLbUMsU0FBN0Q7QUFDQSxtQkFBTyxJQUFQO0FBQ0gsU0FKRCxNQUlPO0FBQ0gsZ0JBQUk5QixRQUFRLEtBQUtBLEtBQUwsR0FBYSxJQUFJN0IsY0FBSixDQUFtQnFDLFNBQW5CLENBQXpCO0FBQ0EsZ0JBQUliLFVBQVFLLE1BQU1DLElBQU4sRUFBWjtBQUNBLGlCQUFLZ0MsZ0JBQUwsQ0FBc0JMLFlBQXRCLENBQW1DUCxHQUFuQyxFQUF3Q3ZCLE9BQXhDLEVBQWlESCxPQUFqRCxFQUF3RCxLQUFLbUMsU0FBN0Q7QUFDQSxtQkFBTyxJQUFJdUQsa0JBQUosQ0FBdUIsSUFBdkIsQ0FBUDtBQUNIO0FBQ0osS0E3Qkw7O0FBQUEsK0JBOEJJTixNQTlCSixxQkE4QmE7QUFBQSxZQUNDakYsT0FERCxHQUNxQyxJQURyQyxDQUNDQSxPQUREO0FBQUEsWUFDVWdDLFNBRFYsR0FDcUMsSUFEckMsQ0FDVUEsU0FEVjtBQUFBLFlBQ3FCTCxJQURyQixHQUNxQyxJQURyQyxDQUNxQkEsSUFEckI7QUFBQSxZQUMyQnpCLEtBRDNCLEdBQ3FDLElBRHJDLENBQzJCQSxLQUQzQjs7QUFFTCxZQUFJc0YsbUJBQW1CQyxjQUFjekYsT0FBZCxDQUF2QjtBQUNBLFlBQUkwRixZQUFtQnhGLEtBQVAsQ0FBNENDLElBQTVDLEVBQWhCO0FBQ0EsWUFBSTZCLFNBQUosRUFBZTtBQUNYLG1CQUFPO0FBQ0hoQyx5QkFBU3dGLGdCQUROO0FBRUhaLHNCQUFNLFdBRkg7QUFHSDVDLG9DQUhHO0FBSUhMLDBCQUpHO0FBS0grRDtBQUxHLGFBQVA7QUFPSDtBQUNELGVBQU87QUFDSDFGLHFCQUFTd0YsZ0JBRE47QUFFSFosa0JBQU0sV0FGSDtBQUdINUMsdUJBQVdBLGNBQWNaLFNBQWQsR0FBMEIsSUFBMUIsR0FBaUNZLFNBSHpDO0FBSUhMLHNCQUpHO0FBS0grRDtBQUxHLFNBQVA7QUFPSCxLQWxETDs7QUFBQTtBQUFBO0FBb0RBLFNBQVNELGFBQVQsQ0FBdUJ6RixPQUF2QixFQUFnQztBQUM1QixXQUFPMkYsS0FBS0MsU0FBTCxPQUFtQjVGLFFBQVFQLE9BQVIsQ0FBZ0JvRyxXQUFoQixFQUFuQixTQUFQO0FBQ0g7QUFDRGhILGVBQWVDLEdBQWYsQ0FBbUIsRUFBbkIsQ0FBc0IsbUJBQXRCLEVBQTJDLFVBQUNDLEVBQUQsU0FBd0Q7QUFBQSxRQUE1Q3dFLEtBQTRDLFNBQWpEdEUsR0FBaUQ7QUFBQSxRQUFoQ3lFLFVBQWdDLFNBQXJDRCxHQUFxQztBQUFBLFFBQWZxQyxRQUFlLFNBQXBCbkMsR0FBb0I7O0FBQy9GLFFBQUloQyxPQUFPNUMsR0FBR0ssU0FBSCxDQUFhQyxTQUFiLENBQXVCa0UsS0FBdkIsQ0FBWDtBQUNBLFFBQUl2QixZQUFZakQsR0FBR0ssU0FBSCxDQUFhQyxTQUFiLENBQXVCcUUsVUFBdkIsQ0FBaEI7QUFDQSxRQUFJaEQsWUFBWTNCLEdBQUdZLEtBQUgsQ0FBU0MsR0FBVCxFQUFoQjtBQUNBYixPQUFHRyxRQUFILEdBQWM2RyxxQkFBZCxDQUFvQy9ELFNBQXBDLEVBQStDTCxJQUEvQyxFQUFxRGpCLFNBQXJELEVBQWdFLENBQUMsQ0FBQ29GLFFBQWxFO0FBQ0gsQ0FMRDtBQU1BakgsZUFBZUMsR0FBZixDQUFtQixFQUFuQixDQUFzQixpQkFBdEIsRUFBeUMsVUFBQ0MsRUFBRCxTQUF1QztBQUFBLFFBQTNCd0UsS0FBMkIsU0FBaEN0RSxHQUFnQztBQUFBLFFBQWY2RyxRQUFlLFNBQXBCckMsR0FBb0I7O0FBQzVFLFFBQUk5QixPQUFPNUMsR0FBR0ssU0FBSCxDQUFhQyxTQUFiLENBQXVCa0UsS0FBdkIsQ0FBWDtBQUNBLFFBQUk3QyxZQUFZM0IsR0FBR1ksS0FBSCxDQUFTQyxHQUFULEVBQWhCO0FBQ0FiLE9BQUdHLFFBQUgsR0FBYzhHLG1CQUFkLENBQWtDckUsSUFBbEMsRUFBd0NqQixTQUF4QyxFQUFtRCxDQUFDLENBQUNvRixRQUFyRDtBQUNILENBSkQ7QUFLQSxXQUFhUCxrQkFBYjtBQUFBOztBQUNJLGdDQUFZVSxTQUFaLEVBQXVCO0FBQUE7O0FBQUEsc0RBQ25CLDJCQURtQjs7QUFFbkIsZUFBS3JCLElBQUwsR0FBWSxlQUFaO0FBQ0EsZUFBS3JGLEdBQUwsR0FBVzBHLFVBQVUxRyxHQUFyQjtBQUNBLGVBQUswRyxTQUFMLEdBQWlCQSxTQUFqQjtBQUptQjtBQUt0Qjs7QUFOTCxpQ0FPSW5CLFFBUEoscUJBT2EvRixFQVBiLEVBT2lCO0FBQ1QsYUFBS2tILFNBQUwsQ0FBZWIsS0FBZixDQUFxQnJHLEdBQUd3QyxHQUF4QjtBQUNILEtBVEw7O0FBQUEsaUNBVUkwRCxNQVZKLHFCQVVhO0FBQUEsWUFDQ0UsS0FERCxHQUM0QixJQUQ1QixDQUNDQSxLQUREO0FBQUEsWUFDUVAsSUFEUixHQUM0QixJQUQ1QixDQUNRQSxJQURSO0FBQUEsWUFDY3FCLFNBRGQsR0FDNEIsSUFENUIsQ0FDY0EsU0FEZDs7QUFFTCxlQUFPO0FBQ0hmLGtCQUFNQyxLQURIO0FBRUhQLHNCQUZHO0FBR0hzQixxQkFBU0QsVUFBVWhCLE1BQVY7QUFITixTQUFQO0FBS0gsS0FqQkw7O0FBQUE7QUFBQSxFQUF3QzlHLGNBQXhDIiwiZmlsZSI6ImxpYi9jb21waWxlZC9vcGNvZGVzL2RvbS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFVwZGF0aW5nT3Bjb2RlIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyB1bndyYXAsIGV4cGVjdCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgQ2FjaGVkUmVmZXJlbmNlLCBSZWZlcmVuY2VDYWNoZSwgY29tYmluZVRhZ2dlZCwgaXNDb25zdCBhcyBpc0NvbnN0UmVmZXJlbmNlLCBpc01vZGlmaWVkIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IE5VTExfUkVGRVJFTkNFLCBQcmltaXRpdmVSZWZlcmVuY2UgfSBmcm9tICcuLi8uLi9yZWZlcmVuY2VzJztcbmltcG9ydCB7IEFzc2VydCB9IGZyb20gJy4vdm0nO1xuaW1wb3J0IHsgQVBQRU5EX09QQ09ERVMgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbkFQUEVORF9PUENPREVTLmFkZCgyMyAvKiBUZXh0ICovLCAodm0sIHsgb3AxOiB0ZXh0IH0pID0+IHtcbiAgICB2bS5lbGVtZW50cygpLmFwcGVuZFRleHQodm0uY29uc3RhbnRzLmdldFN0cmluZyh0ZXh0KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCgyNCAvKiBDb21tZW50ICovLCAodm0sIHsgb3AxOiB0ZXh0IH0pID0+IHtcbiAgICB2bS5lbGVtZW50cygpLmFwcGVuZENvbW1lbnQodm0uY29uc3RhbnRzLmdldFN0cmluZyh0ZXh0KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCgyNiAvKiBPcGVuRWxlbWVudCAqLywgKHZtLCB7IG9wMTogdGFnIH0pID0+IHtcbiAgICB2bS5lbGVtZW50cygpLm9wZW5FbGVtZW50KHZtLmNvbnN0YW50cy5nZXRTdHJpbmcodGFnKSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCgyNyAvKiBPcGVuRWxlbWVudFdpdGhPcGVyYXRpb25zICovLCAodm0sIHsgb3AxOiB0YWcgfSkgPT4ge1xuICAgIGxldCB0YWdOYW1lID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyh0YWcpO1xuICAgIGxldCBvcGVyYXRpb25zID0gdm0uc3RhY2sucG9wKCk7XG4gICAgdm0uZWxlbWVudHMoKS5vcGVuRWxlbWVudCh0YWdOYW1lLCBvcGVyYXRpb25zKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDI4IC8qIE9wZW5EeW5hbWljRWxlbWVudCAqLywgdm0gPT4ge1xuICAgIGxldCBvcGVyYXRpb25zID0gdm0uc3RhY2sucG9wKCk7XG4gICAgbGV0IHRhZ05hbWUgPSB2bS5zdGFjay5wb3AoKS52YWx1ZSgpO1xuICAgIHZtLmVsZW1lbnRzKCkub3BlbkVsZW1lbnQodGFnTmFtZSwgb3BlcmF0aW9ucyk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCgzNSAvKiBQdXNoUmVtb3RlRWxlbWVudCAqLywgdm0gPT4ge1xuICAgIGxldCBlbGVtZW50UmVmID0gdm0uc3RhY2sucG9wKCk7XG4gICAgbGV0IG5leHRTaWJsaW5nUmVmID0gdm0uc3RhY2sucG9wKCk7XG4gICAgbGV0IGVsZW1lbnQ7XG4gICAgbGV0IG5leHRTaWJsaW5nO1xuICAgIGlmIChpc0NvbnN0UmVmZXJlbmNlKGVsZW1lbnRSZWYpKSB7XG4gICAgICAgIGVsZW1lbnQgPSBlbGVtZW50UmVmLnZhbHVlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKGVsZW1lbnRSZWYpO1xuICAgICAgICBlbGVtZW50ID0gY2FjaGUucGVlaygpO1xuICAgICAgICB2bS51cGRhdGVXaXRoKG5ldyBBc3NlcnQoY2FjaGUpKTtcbiAgICB9XG4gICAgaWYgKGlzQ29uc3RSZWZlcmVuY2UobmV4dFNpYmxpbmdSZWYpKSB7XG4gICAgICAgIG5leHRTaWJsaW5nID0gbmV4dFNpYmxpbmdSZWYudmFsdWUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgY2FjaGUgPSBuZXcgUmVmZXJlbmNlQ2FjaGUobmV4dFNpYmxpbmdSZWYpO1xuICAgICAgICBuZXh0U2libGluZyA9IGNhY2hlLnBlZWsoKTtcbiAgICAgICAgdm0udXBkYXRlV2l0aChuZXcgQXNzZXJ0KGNhY2hlKSk7XG4gICAgfVxuICAgIHZtLmVsZW1lbnRzKCkucHVzaFJlbW90ZUVsZW1lbnQoZWxlbWVudCwgbmV4dFNpYmxpbmcpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMzYgLyogUG9wUmVtb3RlRWxlbWVudCAqLywgdm0gPT4gdm0uZWxlbWVudHMoKS5wb3BSZW1vdGVFbGVtZW50KCkpO1xuY2xhc3MgQ2xhc3NMaXN0IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5saXN0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5pc0NvbnN0ID0gdHJ1ZTtcbiAgICB9XG4gICAgYXBwZW5kKHJlZmVyZW5jZSkge1xuICAgICAgICBsZXQgeyBsaXN0LCBpc0NvbnN0IH0gPSB0aGlzO1xuICAgICAgICBpZiAobGlzdCA9PT0gbnVsbCkgbGlzdCA9IHRoaXMubGlzdCA9IFtdO1xuICAgICAgICBsaXN0LnB1c2gocmVmZXJlbmNlKTtcbiAgICAgICAgdGhpcy5pc0NvbnN0ID0gaXNDb25zdCAmJiBpc0NvbnN0UmVmZXJlbmNlKHJlZmVyZW5jZSk7XG4gICAgfVxuICAgIHRvUmVmZXJlbmNlKCkge1xuICAgICAgICBsZXQgeyBsaXN0LCBpc0NvbnN0IH0gPSB0aGlzO1xuICAgICAgICBpZiAoIWxpc3QpIHJldHVybiBOVUxMX1JFRkVSRU5DRTtcbiAgICAgICAgaWYgKGlzQ29uc3QpIHJldHVybiBQcmltaXRpdmVSZWZlcmVuY2UuY3JlYXRlKHRvQ2xhc3NOYW1lKGxpc3QpKTtcbiAgICAgICAgcmV0dXJuIG5ldyBDbGFzc0xpc3RSZWZlcmVuY2UobGlzdCk7XG4gICAgfVxufVxuY2xhc3MgQ2xhc3NMaXN0UmVmZXJlbmNlIGV4dGVuZHMgQ2FjaGVkUmVmZXJlbmNlIHtcbiAgICBjb25zdHJ1Y3RvcihsaXN0KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubGlzdCA9IFtdO1xuICAgICAgICB0aGlzLnRhZyA9IGNvbWJpbmVUYWdnZWQobGlzdCk7XG4gICAgICAgIHRoaXMubGlzdCA9IGxpc3Q7XG4gICAgfVxuICAgIGNvbXB1dGUoKSB7XG4gICAgICAgIHJldHVybiB0b0NsYXNzTmFtZSh0aGlzLmxpc3QpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHRvQ2xhc3NOYW1lKGxpc3QpIHtcbiAgICBsZXQgcmV0ID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxldCB2YWx1ZSA9IGxpc3RbaV0udmFsdWUoKTtcbiAgICAgICAgaWYgKHZhbHVlICE9PSBmYWxzZSAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSByZXQucHVzaCh2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiByZXQubGVuZ3RoID09PSAwID8gbnVsbCA6IHJldC5qb2luKCcgJyk7XG59XG5leHBvcnQgY2xhc3MgU2ltcGxlRWxlbWVudE9wZXJhdGlvbnMge1xuICAgIGNvbnN0cnVjdG9yKGVudikge1xuICAgICAgICB0aGlzLmVudiA9IGVudjtcbiAgICAgICAgdGhpcy5vcGNvZGVzID0gbnVsbDtcbiAgICAgICAgdGhpcy5jbGFzc0xpc3QgPSBudWxsO1xuICAgIH1cbiAgICBhZGRTdGF0aWNBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKG5hbWUgPT09ICdjbGFzcycpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkQ2xhc3MoUHJpbWl0aXZlUmVmZXJlbmNlLmNyZWF0ZSh2YWx1ZSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5lbnYuZ2V0QXBwZW5kT3BlcmF0aW9ucygpLnNldEF0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYWRkU3RhdGljQXR0cmlidXRlTlMoZWxlbWVudCwgbmFtZXNwYWNlLCBuYW1lLCB2YWx1ZSkge1xuICAgICAgICB0aGlzLmVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCkuc2V0QXR0cmlidXRlKGVsZW1lbnQsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UpO1xuICAgIH1cbiAgICBhZGREeW5hbWljQXR0cmlidXRlKGVsZW1lbnQsIG5hbWUsIHJlZmVyZW5jZSwgaXNUcnVzdGluZykge1xuICAgICAgICBpZiAobmFtZSA9PT0gJ2NsYXNzJykge1xuICAgICAgICAgICAgdGhpcy5hZGRDbGFzcyhyZWZlcmVuY2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSB0aGlzLmVudi5hdHRyaWJ1dGVGb3IoZWxlbWVudCwgbmFtZSwgaXNUcnVzdGluZyk7XG4gICAgICAgICAgICBsZXQgYXR0cmlidXRlID0gbmV3IER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlTWFuYWdlciwgbmFtZSwgcmVmZXJlbmNlKTtcbiAgICAgICAgICAgIHRoaXMuYWRkQXR0cmlidXRlKGF0dHJpYnV0ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYWRkRHluYW1pY0F0dHJpYnV0ZU5TKGVsZW1lbnQsIG5hbWVzcGFjZSwgbmFtZSwgcmVmZXJlbmNlLCBpc1RydXN0aW5nKSB7XG4gICAgICAgIGxldCBhdHRyaWJ1dGVNYW5hZ2VyID0gdGhpcy5lbnYuYXR0cmlidXRlRm9yKGVsZW1lbnQsIG5hbWUsIGlzVHJ1c3RpbmcsIG5hbWVzcGFjZSk7XG4gICAgICAgIGxldCBuc0F0dHJpYnV0ZSA9IG5ldyBEeW5hbWljQXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZU1hbmFnZXIsIG5hbWUsIHJlZmVyZW5jZSwgbmFtZXNwYWNlKTtcbiAgICAgICAgdGhpcy5hZGRBdHRyaWJ1dGUobnNBdHRyaWJ1dGUpO1xuICAgIH1cbiAgICBmbHVzaChlbGVtZW50LCB2bSkge1xuICAgICAgICBsZXQgeyBlbnYgfSA9IHZtO1xuICAgICAgICBsZXQgeyBvcGNvZGVzLCBjbGFzc0xpc3QgfSA9IHRoaXM7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBvcGNvZGVzICYmIGkgPCBvcGNvZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2bS51cGRhdGVXaXRoKG9wY29kZXNbaV0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjbGFzc0xpc3QpIHtcbiAgICAgICAgICAgIGxldCBhdHRyaWJ1dGVNYW5hZ2VyID0gZW52LmF0dHJpYnV0ZUZvcihlbGVtZW50LCAnY2xhc3MnLCBmYWxzZSk7XG4gICAgICAgICAgICBsZXQgYXR0cmlidXRlID0gbmV3IER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlTWFuYWdlciwgJ2NsYXNzJywgY2xhc3NMaXN0LnRvUmVmZXJlbmNlKCkpO1xuICAgICAgICAgICAgbGV0IG9wY29kZSA9IGF0dHJpYnV0ZS5mbHVzaChlbnYpO1xuICAgICAgICAgICAgaWYgKG9wY29kZSkge1xuICAgICAgICAgICAgICAgIHZtLnVwZGF0ZVdpdGgob3Bjb2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9wY29kZXMgPSBudWxsO1xuICAgICAgICB0aGlzLmNsYXNzTGlzdCA9IG51bGw7XG4gICAgfVxuICAgIGFkZENsYXNzKHJlZmVyZW5jZSkge1xuICAgICAgICBsZXQgeyBjbGFzc0xpc3QgfSA9IHRoaXM7XG4gICAgICAgIGlmICghY2xhc3NMaXN0KSB7XG4gICAgICAgICAgICBjbGFzc0xpc3QgPSB0aGlzLmNsYXNzTGlzdCA9IG5ldyBDbGFzc0xpc3QoKTtcbiAgICAgICAgfVxuICAgICAgICBjbGFzc0xpc3QuYXBwZW5kKHJlZmVyZW5jZSk7XG4gICAgfVxuICAgIGFkZEF0dHJpYnV0ZShhdHRyaWJ1dGUpIHtcbiAgICAgICAgbGV0IG9wY29kZSA9IGF0dHJpYnV0ZS5mbHVzaCh0aGlzLmVudik7XG4gICAgICAgIGlmIChvcGNvZGUpIHtcbiAgICAgICAgICAgIGxldCB7IG9wY29kZXMgfSA9IHRoaXM7XG4gICAgICAgICAgICBpZiAoIW9wY29kZXMpIHtcbiAgICAgICAgICAgICAgICBvcGNvZGVzID0gdGhpcy5vcGNvZGVzID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcGNvZGVzLnB1c2gob3Bjb2RlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyB7XG4gICAgY29uc3RydWN0b3IoZW52KSB7XG4gICAgICAgIHRoaXMuZW52ID0gZW52O1xuICAgICAgICB0aGlzLmF0dHJpYnV0ZU5hbWVzID0gbnVsbDtcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVzID0gbnVsbDtcbiAgICAgICAgdGhpcy5jbGFzc0xpc3QgPSBudWxsO1xuICAgIH1cbiAgICBhZGRTdGF0aWNBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKG5hbWUgPT09ICdjbGFzcycpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkQ2xhc3MoUHJpbWl0aXZlUmVmZXJlbmNlLmNyZWF0ZSh2YWx1ZSkpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2hvdWxkQWRkQXR0cmlidXRlKG5hbWUpKSB7XG4gICAgICAgICAgICB0aGlzLmFkZEF0dHJpYnV0ZShuYW1lLCBuZXcgU3RhdGljQXR0cmlidXRlKGVsZW1lbnQsIG5hbWUsIHZhbHVlKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYWRkU3RhdGljQXR0cmlidXRlTlMoZWxlbWVudCwgbmFtZXNwYWNlLCBuYW1lLCB2YWx1ZSkge1xuICAgICAgICBpZiAodGhpcy5zaG91bGRBZGRBdHRyaWJ1dGUobmFtZSkpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkQXR0cmlidXRlKG5hbWUsIG5ldyBTdGF0aWNBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZSkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFkZER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgcmVmZXJlbmNlLCBpc1RydXN0aW5nKSB7XG4gICAgICAgIGlmIChuYW1lID09PSAnY2xhc3MnKSB7XG4gICAgICAgICAgICB0aGlzLmFkZENsYXNzKHJlZmVyZW5jZSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zaG91bGRBZGRBdHRyaWJ1dGUobmFtZSkpIHtcbiAgICAgICAgICAgIGxldCBhdHRyaWJ1dGVNYW5hZ2VyID0gdGhpcy5lbnYuYXR0cmlidXRlRm9yKGVsZW1lbnQsIG5hbWUsIGlzVHJ1c3RpbmcpO1xuICAgICAgICAgICAgbGV0IGF0dHJpYnV0ZSA9IG5ldyBEeW5hbWljQXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZU1hbmFnZXIsIG5hbWUsIHJlZmVyZW5jZSk7XG4gICAgICAgICAgICB0aGlzLmFkZEF0dHJpYnV0ZShuYW1lLCBhdHRyaWJ1dGUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFkZER5bmFtaWNBdHRyaWJ1dGVOUyhlbGVtZW50LCBuYW1lc3BhY2UsIG5hbWUsIHJlZmVyZW5jZSwgaXNUcnVzdGluZykge1xuICAgICAgICBpZiAodGhpcy5zaG91bGRBZGRBdHRyaWJ1dGUobmFtZSkpIHtcbiAgICAgICAgICAgIGxldCBhdHRyaWJ1dGVNYW5hZ2VyID0gdGhpcy5lbnYuYXR0cmlidXRlRm9yKGVsZW1lbnQsIG5hbWUsIGlzVHJ1c3RpbmcsIG5hbWVzcGFjZSk7XG4gICAgICAgICAgICBsZXQgbnNBdHRyaWJ1dGUgPSBuZXcgRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCBuYW1lLCByZWZlcmVuY2UsIG5hbWVzcGFjZSk7XG4gICAgICAgICAgICB0aGlzLmFkZEF0dHJpYnV0ZShuYW1lLCBuc0F0dHJpYnV0ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZmx1c2goZWxlbWVudCwgdm0pIHtcbiAgICAgICAgbGV0IHsgZW52IH0gPSB0aGlzO1xuICAgICAgICBsZXQgeyBhdHRyaWJ1dGVzLCBjbGFzc0xpc3QgfSA9IHRoaXM7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBhdHRyaWJ1dGVzICYmIGkgPCBhdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgb3Bjb2RlID0gYXR0cmlidXRlc1tpXS5mbHVzaChlbnYpO1xuICAgICAgICAgICAgaWYgKG9wY29kZSkge1xuICAgICAgICAgICAgICAgIHZtLnVwZGF0ZVdpdGgob3Bjb2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoY2xhc3NMaXN0KSB7XG4gICAgICAgICAgICBsZXQgYXR0cmlidXRlTWFuYWdlciA9IGVudi5hdHRyaWJ1dGVGb3IoZWxlbWVudCwgJ2NsYXNzJywgZmFsc2UpO1xuICAgICAgICAgICAgbGV0IGF0dHJpYnV0ZSA9IG5ldyBEeW5hbWljQXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZU1hbmFnZXIsICdjbGFzcycsIGNsYXNzTGlzdC50b1JlZmVyZW5jZSgpKTtcbiAgICAgICAgICAgIGxldCBvcGNvZGUgPSBhdHRyaWJ1dGUuZmx1c2goZW52KTtcbiAgICAgICAgICAgIGlmIChvcGNvZGUpIHtcbiAgICAgICAgICAgICAgICB2bS51cGRhdGVXaXRoKG9wY29kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgc2hvdWxkQWRkQXR0cmlidXRlKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmF0dHJpYnV0ZU5hbWVzIHx8IHRoaXMuYXR0cmlidXRlTmFtZXMuaW5kZXhPZihuYW1lKSA9PT0gLTE7XG4gICAgfVxuICAgIGFkZENsYXNzKHJlZmVyZW5jZSkge1xuICAgICAgICBsZXQgeyBjbGFzc0xpc3QgfSA9IHRoaXM7XG4gICAgICAgIGlmICghY2xhc3NMaXN0KSB7XG4gICAgICAgICAgICBjbGFzc0xpc3QgPSB0aGlzLmNsYXNzTGlzdCA9IG5ldyBDbGFzc0xpc3QoKTtcbiAgICAgICAgfVxuICAgICAgICBjbGFzc0xpc3QuYXBwZW5kKHJlZmVyZW5jZSk7XG4gICAgfVxuICAgIGFkZEF0dHJpYnV0ZShuYW1lLCBhdHRyaWJ1dGUpIHtcbiAgICAgICAgbGV0IHsgYXR0cmlidXRlTmFtZXMsIGF0dHJpYnV0ZXMgfSA9IHRoaXM7XG4gICAgICAgIGlmICghYXR0cmlidXRlTmFtZXMpIHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZU5hbWVzID0gdGhpcy5hdHRyaWJ1dGVOYW1lcyA9IFtdO1xuICAgICAgICAgICAgYXR0cmlidXRlcyA9IHRoaXMuYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIGF0dHJpYnV0ZU5hbWVzLnB1c2gobmFtZSk7XG4gICAgICAgIHVud3JhcChhdHRyaWJ1dGVzKS5wdXNoKGF0dHJpYnV0ZSk7XG4gICAgfVxufVxuQVBQRU5EX09QQ09ERVMuYWRkKDMyIC8qIEZsdXNoRWxlbWVudCAqLywgdm0gPT4ge1xuICAgIGxldCBzdGFjayA9IHZtLmVsZW1lbnRzKCk7XG4gICAgbGV0IGFjdGlvbiA9ICdGbHVzaEVsZW1lbnRPcGNvZGUjZXZhbHVhdGUnO1xuICAgIHN0YWNrLmV4cGVjdE9wZXJhdGlvbnMoYWN0aW9uKS5mbHVzaChzdGFjay5leHBlY3RDb25zdHJ1Y3RpbmcoYWN0aW9uKSwgdm0pO1xuICAgIHN0YWNrLmZsdXNoRWxlbWVudCgpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMzMgLyogQ2xvc2VFbGVtZW50ICovLCB2bSA9PiB2bS5lbGVtZW50cygpLmNsb3NlRWxlbWVudCgpKTtcbkFQUEVORF9PUENPREVTLmFkZCgyOSAvKiBTdGF0aWNBdHRyICovLCAodm0sIHsgb3AxOiBfbmFtZSwgb3AyOiBfdmFsdWUsIG9wMzogX25hbWVzcGFjZSB9KSA9PiB7XG4gICAgbGV0IG5hbWUgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKF9uYW1lKTtcbiAgICBsZXQgdmFsdWUgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKF92YWx1ZSk7XG4gICAgaWYgKF9uYW1lc3BhY2UpIHtcbiAgICAgICAgbGV0IG5hbWVzcGFjZSA9IHZtLmNvbnN0YW50cy5nZXRTdHJpbmcoX25hbWVzcGFjZSk7XG4gICAgICAgIHZtLmVsZW1lbnRzKCkuc2V0U3RhdGljQXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lLCB2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdm0uZWxlbWVudHMoKS5zZXRTdGF0aWNBdHRyaWJ1dGUobmFtZSwgdmFsdWUpO1xuICAgIH1cbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDM0IC8qIE1vZGlmaWVyICovLCAodm0sIHsgb3AxOiBfbWFuYWdlciB9KSA9PiB7XG4gICAgbGV0IG1hbmFnZXIgPSB2bS5jb25zdGFudHMuZ2V0T3RoZXIoX21hbmFnZXIpO1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIGxldCBhcmdzID0gc3RhY2sucG9wKCk7XG4gICAgbGV0IHRhZyA9IGFyZ3MudGFnO1xuICAgIGxldCB7IGNvbnN0cnVjdGluZzogZWxlbWVudCwgdXBkYXRlT3BlcmF0aW9ucyB9ID0gdm0uZWxlbWVudHMoKTtcbiAgICBsZXQgZHluYW1pY1Njb3BlID0gdm0uZHluYW1pY1Njb3BlKCk7XG4gICAgbGV0IG1vZGlmaWVyID0gbWFuYWdlci5jcmVhdGUoZWxlbWVudCwgYXJncywgZHluYW1pY1Njb3BlLCB1cGRhdGVPcGVyYXRpb25zKTtcbiAgICBhcmdzLmNsZWFyKCk7XG4gICAgdm0uZW52LnNjaGVkdWxlSW5zdGFsbE1vZGlmaWVyKG1vZGlmaWVyLCBtYW5hZ2VyKTtcbiAgICBsZXQgZGVzdHJ1Y3RvciA9IG1hbmFnZXIuZ2V0RGVzdHJ1Y3Rvcihtb2RpZmllcik7XG4gICAgaWYgKGRlc3RydWN0b3IpIHtcbiAgICAgICAgdm0ubmV3RGVzdHJveWFibGUoZGVzdHJ1Y3Rvcik7XG4gICAgfVxuICAgIHZtLnVwZGF0ZVdpdGgobmV3IFVwZGF0ZU1vZGlmaWVyT3Bjb2RlKHRhZywgbWFuYWdlciwgbW9kaWZpZXIpKTtcbn0pO1xuZXhwb3J0IGNsYXNzIFVwZGF0ZU1vZGlmaWVyT3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKHRhZywgbWFuYWdlciwgbW9kaWZpZXIpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy50YWcgPSB0YWc7XG4gICAgICAgIHRoaXMubWFuYWdlciA9IG1hbmFnZXI7XG4gICAgICAgIHRoaXMubW9kaWZpZXIgPSBtb2RpZmllcjtcbiAgICAgICAgdGhpcy50eXBlID0gXCJ1cGRhdGUtbW9kaWZpZXJcIjtcbiAgICAgICAgdGhpcy5sYXN0VXBkYXRlZCA9IHRhZy52YWx1ZSgpO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICBsZXQgeyBtYW5hZ2VyLCBtb2RpZmllciwgdGFnLCBsYXN0VXBkYXRlZCB9ID0gdGhpcztcbiAgICAgICAgaWYgKCF0YWcudmFsaWRhdGUobGFzdFVwZGF0ZWQpKSB7XG4gICAgICAgICAgICB2bS5lbnYuc2NoZWR1bGVVcGRhdGVNb2RpZmllcihtb2RpZmllciwgbWFuYWdlcik7XG4gICAgICAgICAgICB0aGlzLmxhc3RVcGRhdGVkID0gdGFnLnZhbHVlKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZVxuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBTdGF0aWNBdHRyaWJ1dGUge1xuICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLm5hbWVzcGFjZSA9IG5hbWVzcGFjZTtcbiAgICB9XG4gICAgZmx1c2goZW52KSB7XG4gICAgICAgIGVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCkuc2V0QXR0cmlidXRlKHRoaXMuZWxlbWVudCwgdGhpcy5uYW1lLCB0aGlzLnZhbHVlLCB0aGlzLm5hbWVzcGFjZSk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBEeW5hbWljQXR0cmlidXRlIHtcbiAgICBjb25zdHJ1Y3RvcihlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCBuYW1lLCByZWZlcmVuY2UsIG5hbWVzcGFjZSkge1xuICAgICAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgICB0aGlzLmF0dHJpYnV0ZU1hbmFnZXIgPSBhdHRyaWJ1dGVNYW5hZ2VyO1xuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLnJlZmVyZW5jZSA9IHJlZmVyZW5jZTtcbiAgICAgICAgdGhpcy5uYW1lc3BhY2UgPSBuYW1lc3BhY2U7XG4gICAgICAgIHRoaXMuY2FjaGUgPSBudWxsO1xuICAgICAgICB0aGlzLnRhZyA9IHJlZmVyZW5jZS50YWc7XG4gICAgfVxuICAgIHBhdGNoKGVudikge1xuICAgICAgICBsZXQgeyBlbGVtZW50LCBjYWNoZSB9ID0gdGhpcztcbiAgICAgICAgbGV0IHZhbHVlID0gZXhwZWN0KGNhY2hlLCAnbXVzdCBwYXRjaCBhZnRlciBmbHVzaCcpLnJldmFsaWRhdGUoKTtcbiAgICAgICAgaWYgKGlzTW9kaWZpZWQodmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLmF0dHJpYnV0ZU1hbmFnZXIudXBkYXRlQXR0cmlidXRlKGVudiwgZWxlbWVudCwgdmFsdWUsIHRoaXMubmFtZXNwYWNlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmbHVzaChlbnYpIHtcbiAgICAgICAgbGV0IHsgcmVmZXJlbmNlLCBlbGVtZW50IH0gPSB0aGlzO1xuICAgICAgICBpZiAoaXNDb25zdFJlZmVyZW5jZShyZWZlcmVuY2UpKSB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSByZWZlcmVuY2UudmFsdWUoKTtcbiAgICAgICAgICAgIHRoaXMuYXR0cmlidXRlTWFuYWdlci5zZXRBdHRyaWJ1dGUoZW52LCBlbGVtZW50LCB2YWx1ZSwgdGhpcy5uYW1lc3BhY2UpO1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgY2FjaGUgPSB0aGlzLmNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKHJlZmVyZW5jZSk7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBjYWNoZS5wZWVrKCk7XG4gICAgICAgICAgICB0aGlzLmF0dHJpYnV0ZU1hbmFnZXIuc2V0QXR0cmlidXRlKGVudiwgZWxlbWVudCwgdmFsdWUsIHRoaXMubmFtZXNwYWNlKTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUGF0Y2hFbGVtZW50T3Bjb2RlKHRoaXMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgbGV0IHsgZWxlbWVudCwgbmFtZXNwYWNlLCBuYW1lLCBjYWNoZSB9ID0gdGhpcztcbiAgICAgICAgbGV0IGZvcm1hdHRlZEVsZW1lbnQgPSBmb3JtYXRFbGVtZW50KGVsZW1lbnQpO1xuICAgICAgICBsZXQgbGFzdFZhbHVlID0gZXhwZWN0KGNhY2hlLCAnbXVzdCBzZXJpYWxpemUgYWZ0ZXIgZmx1c2gnKS5wZWVrKCk7XG4gICAgICAgIGlmIChuYW1lc3BhY2UpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZWxlbWVudDogZm9ybWF0dGVkRWxlbWVudCxcbiAgICAgICAgICAgICAgICB0eXBlOiAnYXR0cmlidXRlJyxcbiAgICAgICAgICAgICAgICBuYW1lc3BhY2UsXG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICBsYXN0VmFsdWVcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGVsZW1lbnQ6IGZvcm1hdHRlZEVsZW1lbnQsXG4gICAgICAgICAgICB0eXBlOiAnYXR0cmlidXRlJyxcbiAgICAgICAgICAgIG5hbWVzcGFjZTogbmFtZXNwYWNlID09PSB1bmRlZmluZWQgPyBudWxsIDogbmFtZXNwYWNlLFxuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIGxhc3RWYWx1ZVxuICAgICAgICB9O1xuICAgIH1cbn1cbmZ1bmN0aW9uIGZvcm1hdEVsZW1lbnQoZWxlbWVudCkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShgPCR7ZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCl9IC8+YCk7XG59XG5BUFBFTkRfT1BDT0RFUy5hZGQoMzEgLyogRHluYW1pY0F0dHJOUyAqLywgKHZtLCB7IG9wMTogX25hbWUsIG9wMjogX25hbWVzcGFjZSwgb3AzOiB0cnVzdGluZyB9KSA9PiB7XG4gICAgbGV0IG5hbWUgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKF9uYW1lKTtcbiAgICBsZXQgbmFtZXNwYWNlID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyhfbmFtZXNwYWNlKTtcbiAgICBsZXQgcmVmZXJlbmNlID0gdm0uc3RhY2sucG9wKCk7XG4gICAgdm0uZWxlbWVudHMoKS5zZXREeW5hbWljQXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lLCByZWZlcmVuY2UsICEhdHJ1c3RpbmcpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMzAgLyogRHluYW1pY0F0dHIgKi8sICh2bSwgeyBvcDE6IF9uYW1lLCBvcDI6IHRydXN0aW5nIH0pID0+IHtcbiAgICBsZXQgbmFtZSA9IHZtLmNvbnN0YW50cy5nZXRTdHJpbmcoX25hbWUpO1xuICAgIGxldCByZWZlcmVuY2UgPSB2bS5zdGFjay5wb3AoKTtcbiAgICB2bS5lbGVtZW50cygpLnNldER5bmFtaWNBdHRyaWJ1dGUobmFtZSwgcmVmZXJlbmNlLCAhIXRydXN0aW5nKTtcbn0pO1xuZXhwb3J0IGNsYXNzIFBhdGNoRWxlbWVudE9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcihvcGVyYXRpb24pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy50eXBlID0gXCJwYXRjaC1lbGVtZW50XCI7XG4gICAgICAgIHRoaXMudGFnID0gb3BlcmF0aW9uLnRhZztcbiAgICAgICAgdGhpcy5vcGVyYXRpb24gPSBvcGVyYXRpb247XG4gICAgfVxuICAgIGV2YWx1YXRlKHZtKSB7XG4gICAgICAgIHRoaXMub3BlcmF0aW9uLnBhdGNoKHZtLmVudik7XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgbGV0IHsgX2d1aWQsIHR5cGUsIG9wZXJhdGlvbiB9ID0gdGhpcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGd1aWQ6IF9ndWlkLFxuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIGRldGFpbHM6IG9wZXJhdGlvbi50b0pTT04oKVxuICAgICAgICB9O1xuICAgIH1cbn0iXX0=
import { APPEND_OPCODES } from '../../opcodes';
import { FALSE_REFERENCE, TRUE_REFERENCE } from '../../references';
import { ConcatReference } from '../expressions/concat';
import { TRUE_REFERENCE, FALSE_REFERENCE } from '../../references';
APPEND_OPCODES.add(1 /* Helper */, function (vm, _ref) {

@@ -89,2 +89,2 @@ var _helper = _ref.op1;

});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2V4cHJlc3Npb25zLmpzIl0sIm5hbWVzIjpbIkFQUEVORF9PUENPREVTIiwiRkFMU0VfUkVGRVJFTkNFIiwiVFJVRV9SRUZFUkVOQ0UiLCJDb25jYXRSZWZlcmVuY2UiLCJhZGQiLCJ2bSIsIl9oZWxwZXIiLCJvcDEiLCJzdGFjayIsImhlbHBlciIsImNvbnN0YW50cyIsImdldEZ1bmN0aW9uIiwiYXJncyIsInBvcCIsInZhbHVlIiwiY2xlYXIiLCJwdXNoIiwiX2Z1bmN0aW9uIiwiZnVuYyIsInN5bWJvbCIsImV4cHIiLCJyZWZlcmVuY2VGb3JTeW1ib2wiLCJzY29wZSIsImJpbmRTeW1ib2wiLCJfbmFtZSIsIm5hbWUiLCJnZXRTdHJpbmciLCJsb2NhbHMiLCJnZXRQYXJ0aWFsTWFwIiwicmVmIiwidW5kZWZpbmVkIiwiZ2V0U2VsZiIsImdldCIsInN5bWJvbHMiLCJiaW5kQ2FsbGVyU2NvcGUiLCJvcDIiLCJwdXNoUm9vdFNjb3BlIiwiX2tleSIsImtleSIsIl9ibG9jayIsImJsb2NrIiwiZ2V0QmxvY2siLCJoYXNCbG9jayIsImhhc0Jsb2NrUGFyYW1zIiwic3ltYm9sVGFibGUiLCJwYXJhbWV0ZXJzIiwibGVuZ3RoIiwiY291bnQiLCJvdXQiLCJpIiwicmV2ZXJzZSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsY0FBVCxRQUErQixlQUEvQjtBQUNBLFNBQVNDLGVBQVQsRUFBMEJDLGNBQTFCLFFBQWdELGtCQUFoRDtBQUNBLFNBQVNDLGVBQVQsUUFBZ0MsdUJBQWhDO0FBQ0FILGVBQWVJLEdBQWYsQ0FBbUIsQ0FBbkIsQ0FBcUIsWUFBckIsRUFBbUMsVUFBQ0MsRUFBRCxRQUEwQjtBQUFBLFFBQWRDLE9BQWMsUUFBbkJDLEdBQW1COztBQUN6RCxRQUFJQyxRQUFRSCxHQUFHRyxLQUFmO0FBQ0EsUUFBSUMsU0FBU0osR0FBR0ssU0FBSCxDQUFhQyxXQUFiLENBQXlCTCxPQUF6QixDQUFiO0FBQ0EsUUFBSU0sT0FB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LEVBQTJCQSxHQUEzQixFQUFnQztBQUM1QkQsWUFBSWhDLElBQUosQ0FBU1gsR0FBR0csS0FBSCxDQUFTSyxHQUFULEVBQVQ7QUFDSDtBQUNEUixPQUFHRyxLQUFILENBQVNRLElBQVQsQ0FBYyxJQUFJYixlQUFKLENBQW9CNkMsSUFBSUUsT0FBSixFQUFwQixDQUFkO0FBQ0gsQ0FORCIsImZpbGUiOiJsaWIvY29tcGlsZWQvb3Bjb2Rlcy9leHByZXNzaW9ucy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUEVORF9PUENPREVTIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBGQUxTRV9SRUZFUkVOQ0UsIFRSVUVfUkVGRVJFTkNFIH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBDb25jYXRSZWZlcmVuY2UgfSBmcm9tICcuLi9leHByZXNzaW9ucy9jb25jYXQnO1xuQVBQRU5EX09QQ09ERVMuYWRkKDEgLyogSGVscGVyICovLCAodm0sIHsgb3AxOiBfaGVscGVyIH0pID0+IHtcbiAgICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgICBsZXQgaGVscGVyID0gdm0uY29uc3RhbnRzLmdldEZ1bmN0aW9uKF9oZWxwZXIpO1xuICAgIGxldCBhcmdzID0gc3RhY2sucG9wKCk7XG4gICAgbGV0IHZhbHVlID0gaGVscGVyKHZtLCBhcmdzKTtcbiAgICBhcmdzLmNsZWFyKCk7XG4gICAgdm0uc3RhY2sucHVzaCh2YWx1ZSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCgyIC8qIEZ1bmN0aW9uICovLCAodm0sIHsgb3AxOiBfZnVuY3Rpb24gfSkgPT4ge1xuICAgIGxldCBmdW5jID0gdm0uY29uc3RhbnRzLmdldEZ1bmN0aW9uKF9mdW5jdGlvbik7XG4gICAgdm0uc3RhY2sucHVzaChmdW5jKHZtKSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg1IC8qIEdldFZhcmlhYmxlICovLCAodm0sIHsgb3AxOiBzeW1ib2wgfSkgPT4ge1xuICAgIGxldCBleHByID0gdm0ucmVmZXJlbmNlRm9yU3ltYm9sKHN5bWJvbCk7XG4gICAgdm0uc3RhY2sucHVzaChleHByKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDQgLyogU2V0VmFyaWFibGUgKi8sICh2bSwgeyBvcDE6IHN5bWJvbCB9KSA9PiB7XG4gICAgbGV0IGV4cHIgPSB2bS5zdGFjay5wb3AoKTtcbiAgICB2bS5zY29wZSgpLmJpbmRTeW1ib2woc3ltYm9sLCBleHByKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDcwIC8qIFJlc29sdmVNYXliZUxvY2FsICovLCAodm0sIHsgb3AxOiBfbmFtZSB9KSA9PiB7XG4gICAgbGV0IG5hbWUgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKF9uYW1lKTtcbiAgICBsZXQgbG9jYWxzID0gdm0uc2NvcGUoKS5nZXRQYXJ0aWFsTWFwKCk7XG4gICAgbGV0IHJlZiA9IGxvY2Fsc1tuYW1lXTtcbiAgICBpZiAocmVmID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmVmID0gdm0uZ2V0U2VsZigpLmdldChuYW1lKTtcbiAgICB9XG4gICAgdm0uc3RhY2sucHVzaChyZWYpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMTkgLyogUm9vdFNjb3BlICovLCAodm0sIHsgb3AxOiBzeW1ib2xzLCBvcDI6IGJpbmRDYWxsZXJTY29wZSB9KSA9PiB7XG4gICAgdm0ucHVzaFJvb3RTY29wZShzeW1ib2xzLCAhIWJpbmRDYWxsZXJTY29wZSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2IC8qIEdldFByb3BlcnR5ICovLCAodm0sIHsgb3AxOiBfa2V5IH0pID0+IHtcbiAgICBsZXQga2V5ID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyhfa2V5KTtcbiAgICBsZXQgZXhwciA9IHZtLnN0YWNrLnBvcCgpO1xuICAgIHZtLnN0YWNrLnB1c2goZXhwci5nZXQoa2V5KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg3IC8qIFB1c2hCbG9jayAqLywgKHZtLCB7IG9wMTogX2Jsb2NrIH0pID0+IHtcbiAgICBsZXQgYmxvY2sgPSBfYmxvY2sgPyB2bS5jb25zdGFudHMuZ2V0QmxvY2soX2Jsb2NrKSA6IG51bGw7XG4gICAgdm0uc3RhY2sucHVzaChibG9jayk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg4IC8qIEdldEJsb2NrICovLCAodm0sIHsgb3AxOiBfYmxvY2sgfSkgPT4ge1xuICAgIHZtLnN0YWNrLnB1c2godm0uc2NvcGUoKS5nZXRCbG9jayhfYmxvY2spKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDkgLyogSGFzQmxvY2sgKi8sICh2bSwgeyBvcDE6IF9ibG9jayB9KSA9PiB7XG4gICAgbGV0IGhhc0Jsb2NrID0gISF2bS5zY29wZSgpLmdldEJsb2NrKF9ibG9jayk7XG4gICAgdm0uc3RhY2sucHVzaChoYXNCbG9jayA/IFRSVUVfUkVGRVJFTkNFIDogRkFMU0VfUkVGRVJFTkNFKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDEwIC8qIEhhc0Jsb2NrUGFyYW1zICovLCAodm0sIHsgb3AxOiBfYmxvY2sgfSkgPT4ge1xuICAgIGxldCBibG9jayA9IHZtLnNjb3BlKCkuZ2V0QmxvY2soX2Jsb2NrKTtcbiAgICBsZXQgaGFzQmxvY2tQYXJhbXMgPSBibG9jayAmJiBibG9jay5zeW1ib2xUYWJsZS5wYXJhbWV0ZXJzLmxlbmd0aDtcbiAgICB2bS5zdGFjay5wdXNoKGhhc0Jsb2NrUGFyYW1zID8gVFJVRV9SRUZFUkVOQ0UgOiBGQUxTRV9SRUZFUkVOQ0UpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMTEgLyogQ29uY2F0ICovLCAodm0sIHsgb3AxOiBjb3VudCB9KSA9PiB7XG4gICAgbGV0IG91dCA9IFtdO1xuICAgIGZvciAobGV0IGkgPSBjb3VudDsgaSA+IDA7IGktLSkge1xuICAgICAgICBvdXQucHVzaCh2bS5zdGFjay5wb3AoKSk7XG4gICAgfVxuICAgIHZtLnN0YWNrLnB1c2gobmV3IENvbmNhdFJlZmVyZW5jZShvdXQucmV2ZXJzZSgpKSk7XG59KTsiXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2V4cHJlc3Npb25zLmpzIl0sIm5hbWVzIjpbIkFQUEVORF9PUENPREVTIiwiQ29uY2F0UmVmZXJlbmNlIiwiVFJVRV9SRUZFUkVOQ0UiLCJGQUxTRV9SRUZFUkVOQ0UiLCJhZGQiLCJ2bSIsIl9oZWxwZXIiLCJvcDEiLCJzdGFjayIsImhlbHBlciIsImNvbnN0YW50cyIsImdldEZ1bmN0aW9uIiwiYXJncyIsInBvcCIsInZhbHVlIiwiY2xlYXIiLCJwdXNoIiwiX2Z1bmN0aW9uIiwiZnVuYyIsInN5bWJvbCIsImV4cHIiLCJyZWZlcmVuY2VGb3JTeW1ib2wiLCJzY29wZSIsImJpbmRTeW1ib2wiLCJfbmFtZSIsIm5hbWUiLCJnZXRTdHJpbmciLCJsb2NhbHMiLCJnZXRQYXJ0aWFsTWFwIiwicmVmIiwidW5kZWZpbmVkIiwiZ2V0U2VsZiIsImdldCIsInN5bWJvbHMiLCJiaW5kQ2FsbGVyU2NvcGUiLCJvcDIiLCJwdXNoUm9vdFNjb3BlIiwiX2tleSIsImtleSIsIl9ibG9jayIsImJsb2NrIiwiZ2V0QmxvY2siLCJoYXNCbG9jayIsImhhc0Jsb2NrUGFyYW1zIiwic3ltYm9sVGFibGUiLCJwYXJhbWV0ZXJzIiwibGVuZ3RoIiwiY291bnQiLCJvdXQiLCJpIiwicmV2ZXJzZSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsY0FBVCxRQUErQixlQUEvQjtBQUNBLFNBQVNDLGVBQVQsUUFBZ0MsdUJBQWhDO0FBQ0EsU0FBU0MsY0FBVCxFQUF5QkMsZUFBekIsUUFBZ0Qsa0JBQWhEO0FBQ0FILGVBQWVJLEdBQWYsQ0FBbUIsQ0FBbkIsQ0FBcUIsWUFBckIsRUFBbUMsVUFBQ0MsRUFBRCxRQUEwQjtBQUFBLFFBQWRDLE9BQWMsUUFBbkJDLEdBQW1COztBQUN6RCxRQUFJQyxRQUFRSCxHQUFHRyxLQUFmO0FBQ0EsUUFBSUMsU0FBU0osR0FBR0ssU0FBSCxDQUFhQyxXQUFiLENBQXlCTCxPQUF6QixDQUFiO0FBQ0EsUUFBSU0sT0FB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LEVBQTJCQSxHQUEzQixFQUFnQztBQUM1QkQsWUFBSWhDLElBQUosQ0FBU1gsR0FBR0csS0FBSCxDQUFTSyxHQUFULEVBQVQ7QUFDSDtBQUNEUixPQUFHRyxLQUFILENBQVNRLElBQVQsQ0FBYyxJQUFJZixlQUFKLENBQW9CK0MsSUFBSUUsT0FBSixFQUFwQixDQUFkO0FBQ0gsQ0FORCIsImZpbGUiOiJsaWIvY29tcGlsZWQvb3Bjb2Rlcy9leHByZXNzaW9ucy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUEVORF9PUENPREVTIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBDb25jYXRSZWZlcmVuY2UgfSBmcm9tICcuLi9leHByZXNzaW9ucy9jb25jYXQnO1xuaW1wb3J0IHsgVFJVRV9SRUZFUkVOQ0UsIEZBTFNFX1JFRkVSRU5DRSB9IGZyb20gJy4uLy4uL3JlZmVyZW5jZXMnO1xuQVBQRU5EX09QQ09ERVMuYWRkKDEgLyogSGVscGVyICovLCAodm0sIHsgb3AxOiBfaGVscGVyIH0pID0+IHtcbiAgICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgICBsZXQgaGVscGVyID0gdm0uY29uc3RhbnRzLmdldEZ1bmN0aW9uKF9oZWxwZXIpO1xuICAgIGxldCBhcmdzID0gc3RhY2sucG9wKCk7XG4gICAgbGV0IHZhbHVlID0gaGVscGVyKHZtLCBhcmdzKTtcbiAgICBhcmdzLmNsZWFyKCk7XG4gICAgdm0uc3RhY2sucHVzaCh2YWx1ZSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCgyIC8qIEZ1bmN0aW9uICovLCAodm0sIHsgb3AxOiBfZnVuY3Rpb24gfSkgPT4ge1xuICAgIGxldCBmdW5jID0gdm0uY29uc3RhbnRzLmdldEZ1bmN0aW9uKF9mdW5jdGlvbik7XG4gICAgdm0uc3RhY2sucHVzaChmdW5jKHZtKSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg1IC8qIEdldFZhcmlhYmxlICovLCAodm0sIHsgb3AxOiBzeW1ib2wgfSkgPT4ge1xuICAgIGxldCBleHByID0gdm0ucmVmZXJlbmNlRm9yU3ltYm9sKHN5bWJvbCk7XG4gICAgdm0uc3RhY2sucHVzaChleHByKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDQgLyogU2V0VmFyaWFibGUgKi8sICh2bSwgeyBvcDE6IHN5bWJvbCB9KSA9PiB7XG4gICAgbGV0IGV4cHIgPSB2bS5zdGFjay5wb3AoKTtcbiAgICB2bS5zY29wZSgpLmJpbmRTeW1ib2woc3ltYm9sLCBleHByKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDcwIC8qIFJlc29sdmVNYXliZUxvY2FsICovLCAodm0sIHsgb3AxOiBfbmFtZSB9KSA9PiB7XG4gICAgbGV0IG5hbWUgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKF9uYW1lKTtcbiAgICBsZXQgbG9jYWxzID0gdm0uc2NvcGUoKS5nZXRQYXJ0aWFsTWFwKCk7XG4gICAgbGV0IHJlZiA9IGxvY2Fsc1tuYW1lXTtcbiAgICBpZiAocmVmID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmVmID0gdm0uZ2V0U2VsZigpLmdldChuYW1lKTtcbiAgICB9XG4gICAgdm0uc3RhY2sucHVzaChyZWYpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMTkgLyogUm9vdFNjb3BlICovLCAodm0sIHsgb3AxOiBzeW1ib2xzLCBvcDI6IGJpbmRDYWxsZXJTY29wZSB9KSA9PiB7XG4gICAgdm0ucHVzaFJvb3RTY29wZShzeW1ib2xzLCAhIWJpbmRDYWxsZXJTY29wZSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2IC8qIEdldFByb3BlcnR5ICovLCAodm0sIHsgb3AxOiBfa2V5IH0pID0+IHtcbiAgICBsZXQga2V5ID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyhfa2V5KTtcbiAgICBsZXQgZXhwciA9IHZtLnN0YWNrLnBvcCgpO1xuICAgIHZtLnN0YWNrLnB1c2goZXhwci5nZXQoa2V5KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg3IC8qIFB1c2hCbG9jayAqLywgKHZtLCB7IG9wMTogX2Jsb2NrIH0pID0+IHtcbiAgICBsZXQgYmxvY2sgPSBfYmxvY2sgPyB2bS5jb25zdGFudHMuZ2V0QmxvY2soX2Jsb2NrKSA6IG51bGw7XG4gICAgdm0uc3RhY2sucHVzaChibG9jayk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg4IC8qIEdldEJsb2NrICovLCAodm0sIHsgb3AxOiBfYmxvY2sgfSkgPT4ge1xuICAgIHZtLnN0YWNrLnB1c2godm0uc2NvcGUoKS5nZXRCbG9jayhfYmxvY2spKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDkgLyogSGFzQmxvY2sgKi8sICh2bSwgeyBvcDE6IF9ibG9jayB9KSA9PiB7XG4gICAgbGV0IGhhc0Jsb2NrID0gISF2bS5zY29wZSgpLmdldEJsb2NrKF9ibG9jayk7XG4gICAgdm0uc3RhY2sucHVzaChoYXNCbG9jayA/IFRSVUVfUkVGRVJFTkNFIDogRkFMU0VfUkVGRVJFTkNFKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDEwIC8qIEhhc0Jsb2NrUGFyYW1zICovLCAodm0sIHsgb3AxOiBfYmxvY2sgfSkgPT4ge1xuICAgIGxldCBibG9jayA9IHZtLnNjb3BlKCkuZ2V0QmxvY2soX2Jsb2NrKTtcbiAgICBsZXQgaGFzQmxvY2tQYXJhbXMgPSBibG9jayAmJiBibG9jay5zeW1ib2xUYWJsZS5wYXJhbWV0ZXJzLmxlbmd0aDtcbiAgICB2bS5zdGFjay5wdXNoKGhhc0Jsb2NrUGFyYW1zID8gVFJVRV9SRUZFUkVOQ0UgOiBGQUxTRV9SRUZFUkVOQ0UpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMTEgLyogQ29uY2F0ICovLCAodm0sIHsgb3AxOiBjb3VudCB9KSA9PiB7XG4gICAgbGV0IG91dCA9IFtdO1xuICAgIGZvciAobGV0IGkgPSBjb3VudDsgaSA+IDA7IGktLSkge1xuICAgICAgICBvdXQucHVzaCh2bS5zdGFjay5wb3AoKSk7XG4gICAgfVxuICAgIHZtLnN0YWNrLnB1c2gobmV3IENvbmNhdFJlZmVyZW5jZShvdXQucmV2ZXJzZSgpKSk7XG59KTsiXX0=

@@ -9,7 +9,8 @@ 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 { ConstReference } from '@glimmer/reference';
import { CONSTANT_TAG, isConst, isModified, ReferenceCache } from '@glimmer/reference';
import { initializeGuid } from '@glimmer/util';
import { APPEND_OPCODES, UpdatingOpcode } from '../../opcodes';
import { FALSE_REFERENCE, NULL_REFERENCE, PrimitiveReference, TRUE_REFERENCE, UNDEFINED_REFERENCE } from '../../references';
import { CONSTANT_TAG, ReferenceCache, isConst, isModified } from '@glimmer/reference';
import { APPEND_OPCODES } from '../../opcodes';
import { NULL_REFERENCE, UNDEFINED_REFERENCE, TRUE_REFERENCE, FALSE_REFERENCE, PrimitiveReference } from '../../references';
APPEND_OPCODES.add(20 /* ChildScope */, function (vm) {

@@ -189,3 +190,3 @@ return vm.pushChildScope();

_this.type = 'assert';
_this.type = "assert";
_this.tag = cache.tag;

@@ -216,6 +217,6 @@ _this.cache = cache;

return {
guid: _guid,
type: type,
args: [],
details: { expected: expected },
guid: _guid,
type: type
details: { expected: expected }
};

@@ -235,3 +236,3 @@ };

_this2.target = target;
_this2.type = 'jump-if-not-modified';
_this2.type = "jump-if-not-modified";
_this2.tag = tag;

@@ -258,5 +259,5 @@ _this2.lastRevision = tag.value();

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

@@ -276,3 +277,3 @@ };

_this3.target = target;
_this3.type = 'did-modify';
_this3.type = "did-modify";
_this3.tag = CONSTANT_TAG;

@@ -293,3 +294,3 @@ return _this3;

this.tag = CONSTANT_TAG;
this.type = 'label';
this.type = "label";
this.label = null;

@@ -299,3 +300,3 @@ this.prev = null;

initializeGuid(this);
this.label = label;
if (label) this.label = label;
}

@@ -311,5 +312,5 @@

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

@@ -320,2 +321,2 @@ };

}();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL3ZtLmpzIl0sIm5hbWVzIjpbIkNvbnN0UmVmZXJlbmNlIiwiQ09OU1RBTlRfVEFHIiwiaXNDb25zdCIsImlzTW9kaWZpZWQiLCJSZWZlcmVuY2VDYWNoZSIsImluaXRpYWxpemVHdWlkIiwiQVBQRU5EX09QQ09ERVMiLCJVcGRhdGluZ09wY29kZSIsIkZBTFNFX1JFRkVSRU5DRSIsIk5VTExfUkVGRVJFTkNFIiwiUHJpbWl0aXZlUmVmZXJlbmNlIiwiVFJVRV9SRUZFUkVOQ0UiLCJVTkRFRklORURfUkVGRVJFTkNFIiwiYWRkIiwidm0iLCJwdXNoQ2hpbGRTY29wZSIsInBvcFNjb3BlIiwicHVzaER5bmFtaWNTY29wZSIsInBvcER5bmFtaWNTY29wZSIsIm51bWJlciIsIm9wMSIsInN0YWNrIiwicHVzaCIsIm90aGVyIiwiY29uc3RhbnRzIiwiZ2V0T3RoZXIiLCJwcmltaXRpdmUiLCJmbGFnIiwidmFsdWUiLCJjcmVhdGUiLCJnZXRTdHJpbmciLCJyZWdpc3RlciIsIm9mZnNldCIsIm9wMiIsInBvc2l0aW9uIiwiZmV0Y2hWYWx1ZSIsImR1cCIsImNvdW50IiwicG9wIiwibG9hZCIsImZldGNoIiwiX25hbWVzIiwibmFtZXMiLCJnZXRBcnJheSIsImJpbmREeW5hbWljU2NvcGUiLCJwdXNoRnJhbWUiLCJwb3BGcmFtZSIsImFyZ3MiLCJlbnRlciIsImV4aXQiLCJibG9jayIsImNvbXBpbGVEeW5hbWljIiwiZW52IiwiX2Jsb2NrIiwiZ2V0QmxvY2siLCJjb21waWxlZCIsImNvbXBpbGVTdGF0aWMiLCJjYWxsIiwic3RhcnQiLCJfaW52b2tlciIsImludm9rZXIiLCJpbnZva2UiLCJ0YXJnZXQiLCJnb3RvIiwicmVmZXJlbmNlIiwiY2FjaGUiLCJwZWVrIiwidXBkYXRlV2l0aCIsIkFzc2VydCIsInJldHVybiIsIkNvbnN0VGVzdCIsInJlZiIsIl9lbnYiLCJTaW1wbGVUZXN0IiwiRW52aXJvbm1lbnRUZXN0IiwidG9Db25kaXRpb25hbFJlZmVyZW5jZSIsIl9mdW5jIiwib3BlcmFuZCIsImZ1bmMiLCJnZXRGdW5jdGlvbiIsInR5cGUiLCJ0YWciLCJldmFsdWF0ZSIsInJldmFsaWRhdGUiLCJ0aHJvdyIsInRvSlNPTiIsIl9ndWlkIiwiZXhwZWN0ZWQiLCJKU09OIiwic3RyaW5naWZ5IiwiZSIsIlN0cmluZyIsImRldGFpbHMiLCJndWlkIiwiSnVtcElmTm90TW9kaWZpZWRPcGNvZGUiLCJsYXN0UmV2aXNpb24iLCJhbHdheXNSZXZhbGlkYXRlIiwidmFsaWRhdGUiLCJkaWRNb2RpZnkiLCJpbnNwZWN0IiwiRGlkTW9kaWZ5T3Bjb2RlIiwiTGFiZWxPcGNvZGUiLCJsYWJlbCIsInByZXYiLCJuZXh0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLFNBQVNBLGNBQVQsUUFBK0Isb0JBQS9CO0FBQ0EsU0FBU0MsWUFBVCxFQUF1QkMsT0FBdkIsRUFBZ0NDLFVBQWhDLEVBQTRDQyxjQUE1QyxRQUFrRSxvQkFBbEU7QUFDQSxTQUFTQyxjQUFULFFBQStCLGVBQS9CO0FBQ0EsU0FBU0MsY0FBVCxFQUF5QkMsY0FBekIsUUFBK0MsZUFBL0M7QUFDQSxTQUFTQyxlQUFULEVBQTBCQyxjQUExQixFQUEwQ0Msa0JBQTFDLEVBQThEQyxjQUE5RCxFQUE4RUMsbUJBQTlFLFFBQXlHLGtCQUF6RztBQUNBTixlQUFlTyxHQUFmLENBQW1CLEVBQW5CLENBQXNCLGdCQUF0QixFQUF3QztBQUFBLFdBQU1DLEdBQUdDLGNBQUgsRUFBTjtBQUFBLENBQXhDO0FBQ0FULGVBQWVPLEdBQWYsQ0FBbUIsRUFBbkIsQ0FBc0IsY0FBdEIsRUFBc0M7QUFBQSxXQUFNQyxHQUFHRSxRQUFILEVBQU47QUFBQSxDQUF0QztBQUNBVixlQUFlTyxHQUFmLENBQW1CLEVBQW5CLENBQXNCLHNCQUF0QixFQUE4QztBQUFBLFdBQU1DLEdBQUdHLGdCQUFILEVBQU47QUFBQSxDQUE5QztBQUNBWCxlQUFlTyxHQUFmLENBQW1CLEVBQW5CLENBQXNCLHFCQUF0QixF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QUE7QUFBQSxFQUE2Q3pFLGNBQTdDO0FBeUJBLFdBQWE2RixlQUFiO0FBQUE7O0FBQ0ksNkJBQVl0QyxNQUFaLEVBQW9CO0FBQUE7O0FBQUEsc0RBQ2hCLDJCQURnQjs7QUFFaEIsZUFBS0EsTUFBTCxHQUFjQSxNQUFkO0FBQ0EsZUFBS2tCLElBQUwsR0FBWSxZQUFaO0FBQ0EsZUFBS0MsR0FBTCxHQUFXaEYsWUFBWDtBQUpnQjtBQUtuQjs7QUFOTCw4QkFPSWlGLFFBUEosdUJBT2U7QUFDUCxhQUFLcEIsTUFBTCxDQUFZb0MsU0FBWjtBQUNILEtBVEw7O0FBQUE7QUFBQSxFQUFxQzNGLGNBQXJDO0FBV0EsV0FBYThGLFdBQWI7QUFDSSx5QkFBWUMsS0FBWixFQUFtQjtBQUFBOztBQUNmLGFBQUtyQixHQUFMLEdBQVdoRixZQUFYO0FBQ0EsYUFBSytFLElBQUwsR0FBWSxPQUFaO0FBQ0EsYUFBS3NCLEtBQUwsR0FBYSxJQUFiO0FBQ0EsYUFBS0MsSUFBTCxHQUFZLElBQVo7QUFDQSxhQUFLQyxJQUFMLEdBQVksSUFBWjtBQUNBbkcsdUJBQWUsSUFBZjtBQUNBLGFBQUtpRyxLQUFMLEdBQWFBLEtBQWI7QUFDSDs7QUFUTCwwQkFVSXBCLFFBVkosdUJBVWUsQ0FBRSxDQVZqQjs7QUFBQSwwQkFXSWlCLE9BWEosc0JBV2M7QUFDTixlQUFVLEtBQUtHLEtBQWYsVUFBeUIsS0FBS2hCLEtBQTlCO0FBQ0gsS0FiTDs7QUFBQSwwQkFjSUQsTUFkSixxQkFjYTtBQUNMLGVBQU87QUFDSHRDLGtCQUFNLENBQUN5QyxLQUFLQyxTQUFMLENBQWUsS0FBS1UsT0FBTCxFQUFmLENBQUQsQ0FESDtBQUVITixrQkFBTSxLQUFLUCxLQUZSO0FBR0hOLGtCQUFNLEtBQUtBO0FBSFIsU0FBUDtBQUtILEtBcEJMOztBQUFBO0FBQUEiLCJmaWxlIjoibGliL2NvbXBpbGVkL29wY29kZXMvdm0uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdFJlZmVyZW5jZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBDT05TVEFOVF9UQUcsIGlzQ29uc3QsIGlzTW9kaWZpZWQsIFJlZmVyZW5jZUNhY2hlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IGluaXRpYWxpemVHdWlkIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBBUFBFTkRfT1BDT0RFUywgVXBkYXRpbmdPcGNvZGUgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IEZBTFNFX1JFRkVSRU5DRSwgTlVMTF9SRUZFUkVOQ0UsIFByaW1pdGl2ZVJlZmVyZW5jZSwgVFJVRV9SRUZFUkVOQ0UsIFVOREVGSU5FRF9SRUZFUkVOQ0UgfSBmcm9tICcuLi8uLi9yZWZlcmVuY2VzJztcbkFQUEVORF9PUENPREVTLmFkZCgyMCAvKiBDaGlsZFNjb3BlICovLCB2bSA9PiB2bS5wdXNoQ2hpbGRTY29wZSgpKTtcbkFQUEVORF9PUENPREVTLmFkZCgyMSAvKiBQb3BTY29wZSAqLywgdm0gPT4gdm0ucG9wU2NvcGUoKSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMzggLyogUHVzaER5bmFtaWNTY29wZSAqLywgdm0gPT4gdm0ucHVzaER5bmFtaWNTY29wZSgpKTtcbkFQUEVORF9PUENPREVTLmFkZCgzOSAvKiBQb3BEeW5hbWljU2NvcGUgKi8sIHZtID0+IHZtLnBvcER5bmFtaWNTY29wZSgpKTtcbkFQUEVORF9PUENPREVTLmFkZCgxMiAvKiBJbW1lZGlhdGUgKi8sICh2bSwgeyBvcDE6IG51bWJlciB9KSA9PiB7XG4gICAgdm0uc3RhY2sucHVzaChudW1iZXIpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMTMgLyogQ29uc3RhbnQgKi8sICh2bSwgeyBvcDE6IG90aGVyIH0pID0+IHtcbiAgICB2bS5zdGFjay5wdXNoKHZtLmNvbnN0YW50cy5nZXRPdGhlcihvdGhlcikpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMTQgLyogUHJpbWl0aXZlUmVmZXJlbmNlICovLCAodm0sIHsgb3AxOiBwcmltaXRpdmUgfSkgPT4ge1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIGxldCBmbGFnID0gKHByaW1pdGl2ZSAmIDMgPDwgMzApID4+PiAzMDtcbiAgICBsZXQgdmFsdWUgPSBwcmltaXRpdmUgJiB+KDMgPDwgMzApO1xuICAgIHN3aXRjaCAoZmxhZykge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICBzdGFjay5wdXNoKFByaW1pdGl2ZVJlZmVyZW5jZS5jcmVhdGUodmFsdWUpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICBzdGFjay5wdXNoKFByaW1pdGl2ZVJlZmVyZW5jZS5jcmVhdGUodm0uY29uc3RhbnRzLmdldFN0cmluZyh2YWx1ZSkpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICBzd2l0Y2ggKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKEZBTFNFX1JFRkVSRU5DRSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgc3RhY2sucHVzaChUUlVFX1JFRkVSRU5DRSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgc3RhY2sucHVzaChOVUxMX1JFRkVSRU5DRSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgc3RhY2sucHVzaChVTkRFRklORURfUkVGRVJFTkNFKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCgxNSAvKiBEdXAgKi8sICh2bSwgeyBvcDE6IHJlZ2lzdGVyLCBvcDI6IG9mZnNldCB9KSA9PiB7XG4gICAgbGV0IHBvc2l0aW9uID0gdm0uZmV0Y2hWYWx1ZShyZWdpc3RlcikgLSBvZmZzZXQ7XG4gICAgdm0uc3RhY2suZHVwKHBvc2l0aW9uKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDE2IC8qIFBvcCAqLywgKHZtLCB7IG9wMTogY291bnQgfSkgPT4gdm0uc3RhY2sucG9wKGNvdW50KSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMTcgLyogTG9hZCAqLywgKHZtLCB7IG9wMTogcmVnaXN0ZXIgfSkgPT4gdm0ubG9hZChyZWdpc3RlcikpO1xuQVBQRU5EX09QQ09ERVMuYWRkKDE4IC8qIEZldGNoICovLCAodm0sIHsgb3AxOiByZWdpc3RlciB9KSA9PiB2bS5mZXRjaChyZWdpc3RlcikpO1xuQVBQRU5EX09QQ09ERVMuYWRkKDM3IC8qIEJpbmREeW5hbWljU2NvcGUgKi8sICh2bSwgeyBvcDE6IF9uYW1lcyB9KSA9PiB7XG4gICAgbGV0IG5hbWVzID0gdm0uY29uc3RhbnRzLmdldEFycmF5KF9uYW1lcyk7XG4gICAgdm0uYmluZER5bmFtaWNTY29wZShuYW1lcyk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg0NiAvKiBQdXNoRnJhbWUgKi8sIHZtID0+IHZtLnB1c2hGcmFtZSgpKTtcbkFQUEVORF9PUENPREVTLmFkZCg0NyAvKiBQb3BGcmFtZSAqLywgdm0gPT4gdm0ucG9wRnJhbWUoKSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNDggLyogRW50ZXIgKi8sICh2bSwgeyBvcDE6IGFyZ3MgfSkgPT4gdm0uZW50ZXIoYXJncykpO1xuQVBQRU5EX09QQ09ERVMuYWRkKDQ5IC8qIEV4aXQgKi8sIHZtID0+IHZtLmV4aXQoKSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNDAgLyogQ29tcGlsZUR5bmFtaWNCbG9jayAqLywgdm0gPT4ge1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIGxldCBibG9jayA9IHN0YWNrLnBvcCgpO1xuICAgIHN0YWNrLnB1c2goYmxvY2sgPyBibG9jay5jb21waWxlRHluYW1pYyh2bS5lbnYpIDogbnVsbCk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg0MSAvKiBJbnZva2VTdGF0aWMgKi8sICh2bSwgeyBvcDE6IF9ibG9jayB9KSA9PiB7XG4gICAgbGV0IGJsb2NrID0gdm0uY29uc3RhbnRzLmdldEJsb2NrKF9ibG9jayk7XG4gICAgbGV0IGNvbXBpbGVkID0gYmxvY2suY29tcGlsZVN0YXRpYyh2bS5lbnYpO1xuICAgIHZtLmNhbGwoY29tcGlsZWQuc3RhcnQpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNDIgLyogSW52b2tlRHluYW1pYyAqLywgKHZtLCB7IG9wMTogX2ludm9rZXIgfSkgPT4ge1xuICAgIGxldCBpbnZva2VyID0gdm0uY29uc3RhbnRzLmdldE90aGVyKF9pbnZva2VyKTtcbiAgICBsZXQgYmxvY2sgPSB2bS5zdGFjay5wb3AoKTtcbiAgICBpbnZva2VyLmludm9rZSh2bSwgYmxvY2spO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNDMgLyogSnVtcCAqLywgKHZtLCB7IG9wMTogdGFyZ2V0IH0pID0+IHZtLmdvdG8odGFyZ2V0KSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNDQgLyogSnVtcElmICovLCAodm0sIHsgb3AxOiB0YXJnZXQgfSkgPT4ge1xuICAgIGxldCByZWZlcmVuY2UgPSB2bS5zdGFjay5wb3AoKTtcbiAgICBpZiAoaXNDb25zdChyZWZlcmVuY2UpKSB7XG4gICAgICAgIGlmIChyZWZlcmVuY2UudmFsdWUoKSkge1xuICAgICAgICAgICAgdm0uZ290byh0YXJnZXQpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKHJlZmVyZW5jZSk7XG4gICAgICAgIGlmIChjYWNoZS5wZWVrKCkpIHtcbiAgICAgICAgICAgIHZtLmdvdG8odGFyZ2V0KTtcbiAgICAgICAgfVxuICAgICAgICB2bS51cGRhdGVXaXRoKG5ldyBBc3NlcnQoY2FjaGUpKTtcbiAgICB9XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg0NSAvKiBKdW1wVW5sZXNzICovLCAodm0sIHsgb3AxOiB0YXJnZXQgfSkgPT4ge1xuICAgIGxldCByZWZlcmVuY2UgPSB2bS5zdGFjay5wb3AoKTtcbiAgICBpZiAoaXNDb25zdChyZWZlcmVuY2UpKSB7XG4gICAgICAgIGlmICghcmVmZXJlbmNlLnZhbHVlKCkpIHtcbiAgICAgICAgICAgIHZtLmdvdG8odGFyZ2V0KTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBjYWNoZSA9IG5ldyBSZWZlcmVuY2VDYWNoZShyZWZlcmVuY2UpO1xuICAgICAgICBpZiAoIWNhY2hlLnBlZWsoKSkge1xuICAgICAgICAgICAgdm0uZ290byh0YXJnZXQpO1xuICAgICAgICB9XG4gICAgICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICAgIH1cbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDIyIC8qIFJldHVybiAqLywgdm0gPT4gdm0ucmV0dXJuKCkpO1xuZXhwb3J0IGNvbnN0IENvbnN0VGVzdCA9IGZ1bmN0aW9uIChyZWYsIF9lbnYpIHtcbiAgICByZXR1cm4gbmV3IENvbnN0UmVmZXJlbmNlKCEhcmVmLnZhbHVlKCkpO1xufTtcbmV4cG9ydCBjb25zdCBTaW1wbGVUZXN0ID0gZnVuY3Rpb24gKHJlZiwgX2Vudikge1xuICAgIHJldHVybiByZWY7XG59O1xuZXhwb3J0IGNvbnN0IEVudmlyb25tZW50VGVzdCA9IGZ1bmN0aW9uIChyZWYsIGVudikge1xuICAgIHJldHVybiBlbnYudG9Db25kaXRpb25hbFJlZmVyZW5jZShyZWYpO1xufTtcbkFQUEVORF9PUENPREVTLmFkZCg1MCAvKiBUZXN0ICovLCAodm0sIHsgb3AxOiBfZnVuYyB9KSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IG9wZXJhbmQgPSBzdGFjay5wb3AoKTtcbiAgICBsZXQgZnVuYyA9IHZtLmNvbnN0YW50cy5nZXRGdW5jdGlvbihfZnVuYyk7XG4gICAgc3RhY2sucHVzaChmdW5jKG9wZXJhbmQsIHZtLmVudikpO1xufSk7XG5leHBvcnQgY2xhc3MgQXNzZXJ0IGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKGNhY2hlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMudHlwZSA9ICdhc3NlcnQnO1xuICAgICAgICB0aGlzLnRhZyA9IGNhY2hlLnRhZztcbiAgICAgICAgdGhpcy5jYWNoZSA9IGNhY2hlO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICBsZXQgeyBjYWNoZSB9ID0gdGhpcztcbiAgICAgICAgaWYgKGlzTW9kaWZpZWQoY2FjaGUucmV2YWxpZGF0ZSgpKSkge1xuICAgICAgICAgICAgdm0udGhyb3coKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIGxldCB7IHR5cGUsIF9ndWlkLCBjYWNoZSB9ID0gdGhpcztcbiAgICAgICAgbGV0IGV4cGVjdGVkO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZXhwZWN0ZWQgPSBKU09OLnN0cmluZ2lmeShjYWNoZS5wZWVrKCkpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBleHBlY3RlZCA9IFN0cmluZyhjYWNoZS5wZWVrKCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhcmdzOiBbXSxcbiAgICAgICAgICAgIGRldGFpbHM6IHsgZXhwZWN0ZWQgfSxcbiAgICAgICAgICAgIGd1aWQ6IF9ndWlkLFxuICAgICAgICAgICAgdHlwZVxuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBKdW1wSWZOb3RNb2RpZmllZE9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3Rvcih0YWcsIHRhcmdldCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnRhcmdldCA9IHRhcmdldDtcbiAgICAgICAgdGhpcy50eXBlID0gJ2p1bXAtaWYtbm90LW1vZGlmaWVkJztcbiAgICAgICAgdGhpcy50YWcgPSB0YWc7XG4gICAgICAgIHRoaXMubGFzdFJldmlzaW9uID0gdGFnLnZhbHVlKCk7XG4gICAgfVxuICAgIGV2YWx1YXRlKHZtKSB7XG4gICAgICAgIGxldCB7IHRhZywgdGFyZ2V0LCBsYXN0UmV2aXNpb24gfSA9IHRoaXM7XG4gICAgICAgIGlmICghdm0uYWx3YXlzUmV2YWxpZGF0ZSAmJiB0YWcudmFsaWRhdGUobGFzdFJldmlzaW9uKSkge1xuICAgICAgICAgICAgdm0uZ290byh0YXJnZXQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGRpZE1vZGlmeSgpIHtcbiAgICAgICAgdGhpcy5sYXN0UmV2aXNpb24gPSB0aGlzLnRhZy52YWx1ZSgpO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhcmdzOiBbSlNPTi5zdHJpbmdpZnkodGhpcy50YXJnZXQuaW5zcGVjdCgpKV0sXG4gICAgICAgICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgICAgICAgdHlwZTogdGhpcy50eXBlXG4gICAgICAgIH07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIERpZE1vZGlmeU9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3Rvcih0YXJnZXQpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy50YXJnZXQgPSB0YXJnZXQ7XG4gICAgICAgIHRoaXMudHlwZSA9ICdkaWQtbW9kaWZ5JztcbiAgICAgICAgdGhpcy50YWcgPSBDT05TVEFOVF9UQUc7XG4gICAgfVxuICAgIGV2YWx1YXRlKCkge1xuICAgICAgICB0aGlzLnRhcmdldC5kaWRNb2RpZnkoKTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgTGFiZWxPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKGxhYmVsKSB7XG4gICAgICAgIHRoaXMudGFnID0gQ09OU1RBTlRfVEFHO1xuICAgICAgICB0aGlzLnR5cGUgPSAnbGFiZWwnO1xuICAgICAgICB0aGlzLmxhYmVsID0gbnVsbDtcbiAgICAgICAgdGhpcy5wcmV2ID0gbnVsbDtcbiAgICAgICAgdGhpcy5uZXh0ID0gbnVsbDtcbiAgICAgICAgaW5pdGlhbGl6ZUd1aWQodGhpcyk7XG4gICAgICAgIHRoaXMubGFiZWwgPSBsYWJlbDtcbiAgICB9XG4gICAgZXZhbHVhdGUoKSB7fVxuICAgIGluc3BlY3QoKSB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLmxhYmVsfSBbJHt0aGlzLl9ndWlkfV1gO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhcmdzOiBbSlNPTi5zdHJpbmdpZnkodGhpcy5pbnNwZWN0KCkpXSxcbiAgICAgICAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICAgICAgICB0eXBlOiB0aGlzLnR5cGVcbiAgICAgICAgfTtcbiAgICB9XG59Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL3ZtLmpzIl0sIm5hbWVzIjpbIlVwZGF0aW5nT3Bjb2RlIiwiQ29uc3RSZWZlcmVuY2UiLCJpbml0aWFsaXplR3VpZCIsIkNPTlNUQU5UX1RBRyIsIlJlZmVyZW5jZUNhY2hlIiwiaXNDb25zdCIsImlzTW9kaWZpZWQiLCJBUFBFTkRfT1BDT0RFUyIsIk5VTExfUkVGRVJFTkNFIiwiVU5ERUZJTkVEX1JFRkVSRU5DRSIsIlRSVUVfUkVGRVJFTkNFIiwiRkFMU0VfUkVGRVJFTkNFIiwiUHJpbWl0aXZlUmVmZXJlbmNlIiwiYWRkIiwidm0iLCJwdXNoQ2hpbGRTY29wZSIsInBvcFNjb3BlIiwicHVzaER5bmFtaWNTY29wZSIsInBvcER5bmFtaWNTY29wZSIsIm51bWJlciIsIm9wMSIsInN0YWNrIiwicHVzaCIsIm90aGVyIiwiY29uc3RhbnRzIiwiZ2V0T3RoZXIiLCJwcmltaXRpdmUiLCJmbGFnIiwidmFsdWUiLCJjcmVhdGUiLCJnZXRTdHJpbmciLCJyZWdpc3RlciIsIm9mZnNldCIsIm9wMiIsInBvc2l0aW9uIiwiZmV0Y2hWYWx1ZSIsImR1cCIsImNvdW50IiwicG9wIiwibG9hZCIsImZldGNoIiwiX25hbWVzIiwibmFtZXMiLCJnZXRBcnJheSIsImJpbmREeW5hbWljU2NvcGUiLCJwdXNoRnJhbWUiLCJwb3BGcmFtZSIsImFyZ3MiLCJlbnRlciIsImV4aXQiLCJibG9jayIsImNvbXBpbGVEeW5hbWljIiwiZW52IiwiX2Jsb2NrIiwiZ2V0QmxvY2siLCJjb21waWxlZCIsImNvbXBpbGVTdGF0aWMiLCJjYWxsIiwic3RhcnQiLCJfaW52b2tlciIsImludm9rZXIiLCJpbnZva2UiLCJ0YXJnZXQiLCJnb3RvIiwicmVmZXJlbmNlIiwiY2FjaGUiLCJwZWVrIiwidXBkYXRlV2l0aCIsIkFzc2VydCIsInJldHVybiIsIkNvbnN0VGVzdCIsInJlZiIsIl9lbnYiLCJTaW1wbGVUZXN0IiwiRW52aXJvbm1lbnRUZXN0IiwidG9Db25kaXRpb25hbFJlZmVyZW5jZSIsIl9mdW5jIiwib3BlcmFuZCIsImZ1bmMiLCJnZXRGdW5jdGlvbiIsInR5cGUiLCJ0YWciLCJldmFsdWF0ZSIsInJldmFsaWRhdGUiLCJ0aHJvdyIsInRvSlNPTiIsIl9ndWlkIiwiZXhwZWN0ZWQiLCJKU09OIiwic3RyaW5naWZ5IiwiZSIsIlN0cmluZyIsImd1aWQiLCJkZXRhaWxzIiwiSnVtcElmTm90TW9kaWZpZWRPcGNvZGUiLCJsYXN0UmV2aXNpb24iLCJhbHdheXNSZXZhbGlkYXRlIiwidmFsaWRhdGUiLCJkaWRNb2RpZnkiLCJpbnNwZWN0IiwiRGlkTW9kaWZ5T3Bjb2RlIiwiTGFiZWxPcGNvZGUiLCJsYWJlbCIsInByZXYiLCJuZXh0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLFNBQVNBLGNBQVQsUUFBK0IsZUFBL0I7QUFDQSxTQUFTQyxjQUFULFFBQStCLG9CQUEvQjtBQUNBLFNBQVNDLGNBQVQsUUFBK0IsZUFBL0I7QUFDQSxTQUFTQyxZQUFULEVBQXVCQyxjQUF2QixFQUF1Q0MsT0FBdkMsRUFBZ0RDLFVBQWhELFFBQWtFLG9CQUFsRTtBQUNBLFNBQVNDLGNBQVQsUUFBK0IsZUFBL0I7QUFDQSxTQUFTQyxjQUFULEVBQXlCQyxtQkFBekIsRUFBOENDLGNBQTlDLEVBQThEQyxlQUE5RCxFQUErRUMsa0JBQS9FLFFBQXlHLGtCQUF6RztBQUNBTCxlQUFlTSxHQUFmLENBQW1CLEVBQW5CLENBQXNCLGdCQUF0QixFQUF3QztBQUFBLFdBQU1DLEdBQUdDLGNBQUgsRUFBTjtBQUFBLENBQXhDO0FBQ0FSLGVBQWVNLEdBQWYsQ0FBbUIsRUFBbkIsQ0FBc0IsY0FBdEIsRUFBc0M7QUFBQSxXQUFNQyxHQUFHRSxRQUFILEVBQU47QUFBQSxDQUF0QztBQUNBVCxlQUFlTSxHQUFmLENBQW1CLEVBQW5CLENBQXNCLHNCQUF0QixFQUE4QztBQUFBLFdBQU1DLEdBQUdHLGdCQUFILEVBQU47QUFBQSxDQUE5QztBQUNBVixlQUFlTSxHQUFmLENBQW1CLEVBQW5C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QVA7QUFLSCxLQXZCTDs7QUFBQTtBQUFBLEVBQTZDbkcsY0FBN0M7QUF5QkEsV0FBYW9HLGVBQWI7QUFBQTs7QUFDSSw2QkFBWXRDLE1BQVosRUFBb0I7QUFBQTs7QUFBQSxzREFDaEIsMkJBRGdCOztBQUVoQixlQUFLQSxNQUFMLEdBQWNBLE1BQWQ7QUFDQSxlQUFLa0IsSUFBTCxHQUFZLFlBQVo7QUFDQSxlQUFLQyxHQUFMLEdBQVc5RSxZQUFYO0FBSmdCO0FBS25COztBQU5MLDhCQU9JK0UsUUFQSix1QkFPZTtBQUNQLGFBQUtwQixNQUFMLENBQVlvQyxTQUFaO0FBQ0gsS0FUTDs7QUFBQTtBQUFBLEVBQXFDbEcsY0FBckM7QUFXQSxXQUFhcUcsV0FBYjtBQUNJLHlCQUFZQyxLQUFaLEVBQW1CO0FBQUE7O0FBQ2YsYUFBS3JCLEdBQUwsR0FBVzlFLFlBQVg7QUFDQSxhQUFLNkUsSUFBTCxHQUFZLE9BQVo7QUFDQSxhQUFLc0IsS0FBTCxHQUFhLElBQWI7QUFDQSxhQUFLQyxJQUFMLEdBQVksSUFBWjtBQUNBLGFBQUtDLElBQUwsR0FBWSxJQUFaO0FBQ0F0Ryx1QkFBZSxJQUFmO0FBQ0EsWUFBSW9HLEtBQUosRUFBVyxLQUFLQSxLQUFMLEdBQWFBLEtBQWI7QUFDZDs7QUFUTCwwQkFVSXBCLFFBVkosdUJBVWUsQ0FBRSxDQVZqQjs7QUFBQSwwQkFXSWlCLE9BWEosc0JBV2M7QUFDTixlQUFVLEtBQUtHLEtBQWYsVUFBeUIsS0FBS2hCLEtBQTlCO0FBQ0gsS0FiTDs7QUFBQSwwQkFjSUQsTUFkSixxQkFjYTtBQUNMLGVBQU87QUFDSE8sa0JBQU0sS0FBS04sS0FEUjtBQUVITixrQkFBTSxLQUFLQSxJQUZSO0FBR0hqQyxrQkFBTSxDQUFDeUMsS0FBS0MsU0FBTCxDQUFlLEtBQUtVLE9BQUwsRUFBZixDQUFEO0FBSEgsU0FBUDtBQUtILEtBcEJMOztBQUFBO0FBQUEiLCJmaWxlIjoibGliL2NvbXBpbGVkL29wY29kZXMvdm0uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVcGRhdGluZ09wY29kZSB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IHsgQ29uc3RSZWZlcmVuY2UgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgaW5pdGlhbGl6ZUd1aWQgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IENPTlNUQU5UX1RBRywgUmVmZXJlbmNlQ2FjaGUsIGlzQ29uc3QsIGlzTW9kaWZpZWQgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgQVBQRU5EX09QQ09ERVMgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IE5VTExfUkVGRVJFTkNFLCBVTkRFRklORURfUkVGRVJFTkNFLCBUUlVFX1JFRkVSRU5DRSwgRkFMU0VfUkVGRVJFTkNFLCBQcmltaXRpdmVSZWZlcmVuY2UgfSBmcm9tICcuLi8uLi9yZWZlcmVuY2VzJztcbkFQUEVORF9PUENPREVTLmFkZCgyMCAvKiBDaGlsZFNjb3BlICovLCB2bSA9PiB2bS5wdXNoQ2hpbGRTY29wZSgpKTtcbkFQUEVORF9PUENPREVTLmFkZCgyMSAvKiBQb3BTY29wZSAqLywgdm0gPT4gdm0ucG9wU2NvcGUoKSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMzggLyogUHVzaER5bmFtaWNTY29wZSAqLywgdm0gPT4gdm0ucHVzaER5bmFtaWNTY29wZSgpKTtcbkFQUEVORF9PUENPREVTLmFkZCgzOSAvKiBQb3BEeW5hbWljU2NvcGUgKi8sIHZtID0+IHZtLnBvcER5bmFtaWNTY29wZSgpKTtcbkFQUEVORF9PUENPREVTLmFkZCgxMiAvKiBJbW1lZGlhdGUgKi8sICh2bSwgeyBvcDE6IG51bWJlciB9KSA9PiB7XG4gICAgdm0uc3RhY2sucHVzaChudW1iZXIpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMTMgLyogQ29uc3RhbnQgKi8sICh2bSwgeyBvcDE6IG90aGVyIH0pID0+IHtcbiAgICB2bS5zdGFjay5wdXNoKHZtLmNvbnN0YW50cy5nZXRPdGhlcihvdGhlcikpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMTQgLyogUHJpbWl0aXZlUmVmZXJlbmNlICovLCAodm0sIHsgb3AxOiBwcmltaXRpdmUgfSkgPT4ge1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIGxldCBmbGFnID0gKHByaW1pdGl2ZSAmIDMgPDwgMzApID4+PiAzMDtcbiAgICBsZXQgdmFsdWUgPSBwcmltaXRpdmUgJiB+KDMgPDwgMzApO1xuICAgIHN3aXRjaCAoZmxhZykge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICBzdGFjay5wdXNoKFByaW1pdGl2ZVJlZmVyZW5jZS5jcmVhdGUodmFsdWUpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICBzdGFjay5wdXNoKFByaW1pdGl2ZVJlZmVyZW5jZS5jcmVhdGUodm0uY29uc3RhbnRzLmdldFN0cmluZyh2YWx1ZSkpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICBzd2l0Y2ggKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKEZBTFNFX1JFRkVSRU5DRSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgc3RhY2sucHVzaChUUlVFX1JFRkVSRU5DRSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgc3RhY2sucHVzaChOVUxMX1JFRkVSRU5DRSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgc3RhY2sucHVzaChVTkRFRklORURfUkVGRVJFTkNFKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCgxNSAvKiBEdXAgKi8sICh2bSwgeyBvcDE6IHJlZ2lzdGVyLCBvcDI6IG9mZnNldCB9KSA9PiB7XG4gICAgbGV0IHBvc2l0aW9uID0gdm0uZmV0Y2hWYWx1ZShyZWdpc3RlcikgLSBvZmZzZXQ7XG4gICAgdm0uc3RhY2suZHVwKHBvc2l0aW9uKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDE2IC8qIFBvcCAqLywgKHZtLCB7IG9wMTogY291bnQgfSkgPT4gdm0uc3RhY2sucG9wKGNvdW50KSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMTcgLyogTG9hZCAqLywgKHZtLCB7IG9wMTogcmVnaXN0ZXIgfSkgPT4gdm0ubG9hZChyZWdpc3RlcikpO1xuQVBQRU5EX09QQ09ERVMuYWRkKDE4IC8qIEZldGNoICovLCAodm0sIHsgb3AxOiByZWdpc3RlciB9KSA9PiB2bS5mZXRjaChyZWdpc3RlcikpO1xuQVBQRU5EX09QQ09ERVMuYWRkKDM3IC8qIEJpbmREeW5hbWljU2NvcGUgKi8sICh2bSwgeyBvcDE6IF9uYW1lcyB9KSA9PiB7XG4gICAgbGV0IG5hbWVzID0gdm0uY29uc3RhbnRzLmdldEFycmF5KF9uYW1lcyk7XG4gICAgdm0uYmluZER5bmFtaWNTY29wZShuYW1lcyk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg0NiAvKiBQdXNoRnJhbWUgKi8sIHZtID0+IHZtLnB1c2hGcmFtZSgpKTtcbkFQUEVORF9PUENPREVTLmFkZCg0NyAvKiBQb3BGcmFtZSAqLywgdm0gPT4gdm0ucG9wRnJhbWUoKSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNDggLyogRW50ZXIgKi8sICh2bSwgeyBvcDE6IGFyZ3MgfSkgPT4gdm0uZW50ZXIoYXJncykpO1xuQVBQRU5EX09QQ09ERVMuYWRkKDQ5IC8qIEV4aXQgKi8sIHZtID0+IHZtLmV4aXQoKSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNDAgLyogQ29tcGlsZUR5bmFtaWNCbG9jayAqLywgdm0gPT4ge1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIGxldCBibG9jayA9IHN0YWNrLnBvcCgpO1xuICAgIHN0YWNrLnB1c2goYmxvY2sgPyBibG9jay5jb21waWxlRHluYW1pYyh2bS5lbnYpIDogbnVsbCk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg0MSAvKiBJbnZva2VTdGF0aWMgKi8sICh2bSwgeyBvcDE6IF9ibG9jayB9KSA9PiB7XG4gICAgbGV0IGJsb2NrID0gdm0uY29uc3RhbnRzLmdldEJsb2NrKF9ibG9jayk7XG4gICAgbGV0IGNvbXBpbGVkID0gYmxvY2suY29tcGlsZVN0YXRpYyh2bS5lbnYpO1xuICAgIHZtLmNhbGwoY29tcGlsZWQuc3RhcnQpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNDIgLyogSW52b2tlRHluYW1pYyAqLywgKHZtLCB7IG9wMTogX2ludm9rZXIgfSkgPT4ge1xuICAgIGxldCBpbnZva2VyID0gdm0uY29uc3RhbnRzLmdldE90aGVyKF9pbnZva2VyKTtcbiAgICBsZXQgYmxvY2sgPSB2bS5zdGFjay5wb3AoKTtcbiAgICBpbnZva2VyLmludm9rZSh2bSwgYmxvY2spO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNDMgLyogSnVtcCAqLywgKHZtLCB7IG9wMTogdGFyZ2V0IH0pID0+IHZtLmdvdG8odGFyZ2V0KSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNDQgLyogSnVtcElmICovLCAodm0sIHsgb3AxOiB0YXJnZXQgfSkgPT4ge1xuICAgIGxldCByZWZlcmVuY2UgPSB2bS5zdGFjay5wb3AoKTtcbiAgICBpZiAoaXNDb25zdChyZWZlcmVuY2UpKSB7XG4gICAgICAgIGlmIChyZWZlcmVuY2UudmFsdWUoKSkge1xuICAgICAgICAgICAgdm0uZ290byh0YXJnZXQpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKHJlZmVyZW5jZSk7XG4gICAgICAgIGlmIChjYWNoZS5wZWVrKCkpIHtcbiAgICAgICAgICAgIHZtLmdvdG8odGFyZ2V0KTtcbiAgICAgICAgfVxuICAgICAgICB2bS51cGRhdGVXaXRoKG5ldyBBc3NlcnQoY2FjaGUpKTtcbiAgICB9XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg0NSAvKiBKdW1wVW5sZXNzICovLCAodm0sIHsgb3AxOiB0YXJnZXQgfSkgPT4ge1xuICAgIGxldCByZWZlcmVuY2UgPSB2bS5zdGFjay5wb3AoKTtcbiAgICBpZiAoaXNDb25zdChyZWZlcmVuY2UpKSB7XG4gICAgICAgIGlmICghcmVmZXJlbmNlLnZhbHVlKCkpIHtcbiAgICAgICAgICAgIHZtLmdvdG8odGFyZ2V0KTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBjYWNoZSA9IG5ldyBSZWZlcmVuY2VDYWNoZShyZWZlcmVuY2UpO1xuICAgICAgICBpZiAoIWNhY2hlLnBlZWsoKSkge1xuICAgICAgICAgICAgdm0uZ290byh0YXJnZXQpO1xuICAgICAgICB9XG4gICAgICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICAgIH1cbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDIyIC8qIFJldHVybiAqLywgdm0gPT4gdm0ucmV0dXJuKCkpO1xuZXhwb3J0IGNvbnN0IENvbnN0VGVzdCA9IGZ1bmN0aW9uIChyZWYsIF9lbnYpIHtcbiAgICByZXR1cm4gbmV3IENvbnN0UmVmZXJlbmNlKCEhcmVmLnZhbHVlKCkpO1xufTtcbmV4cG9ydCBjb25zdCBTaW1wbGVUZXN0ID0gZnVuY3Rpb24gKHJlZiwgX2Vudikge1xuICAgIHJldHVybiByZWY7XG59O1xuZXhwb3J0IGNvbnN0IEVudmlyb25tZW50VGVzdCA9IGZ1bmN0aW9uIChyZWYsIGVudikge1xuICAgIHJldHVybiBlbnYudG9Db25kaXRpb25hbFJlZmVyZW5jZShyZWYpO1xufTtcbkFQUEVORF9PUENPREVTLmFkZCg1MCAvKiBUZXN0ICovLCAodm0sIHsgb3AxOiBfZnVuYyB9KSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IG9wZXJhbmQgPSBzdGFjay5wb3AoKTtcbiAgICBsZXQgZnVuYyA9IHZtLmNvbnN0YW50cy5nZXRGdW5jdGlvbihfZnVuYyk7XG4gICAgc3RhY2sucHVzaChmdW5jKG9wZXJhbmQsIHZtLmVudikpO1xufSk7XG5leHBvcnQgY2xhc3MgQXNzZXJ0IGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKGNhY2hlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMudHlwZSA9IFwiYXNzZXJ0XCI7XG4gICAgICAgIHRoaXMudGFnID0gY2FjaGUudGFnO1xuICAgICAgICB0aGlzLmNhY2hlID0gY2FjaGU7XG4gICAgfVxuICAgIGV2YWx1YXRlKHZtKSB7XG4gICAgICAgIGxldCB7IGNhY2hlIH0gPSB0aGlzO1xuICAgICAgICBpZiAoaXNNb2RpZmllZChjYWNoZS5yZXZhbGlkYXRlKCkpKSB7XG4gICAgICAgICAgICB2bS50aHJvdygpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgbGV0IHsgdHlwZSwgX2d1aWQsIGNhY2hlIH0gPSB0aGlzO1xuICAgICAgICBsZXQgZXhwZWN0ZWQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBleHBlY3RlZCA9IEpTT04uc3RyaW5naWZ5KGNhY2hlLnBlZWsoKSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGV4cGVjdGVkID0gU3RyaW5nKGNhY2hlLnBlZWsoKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGd1aWQ6IF9ndWlkLFxuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIGFyZ3M6IFtdLFxuICAgICAgICAgICAgZGV0YWlsczogeyBleHBlY3RlZCB9XG4gICAgICAgIH07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIEp1bXBJZk5vdE1vZGlmaWVkT3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKHRhZywgdGFyZ2V0KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0O1xuICAgICAgICB0aGlzLnR5cGUgPSBcImp1bXAtaWYtbm90LW1vZGlmaWVkXCI7XG4gICAgICAgIHRoaXMudGFnID0gdGFnO1xuICAgICAgICB0aGlzLmxhc3RSZXZpc2lvbiA9IHRhZy52YWx1ZSgpO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICBsZXQgeyB0YWcsIHRhcmdldCwgbGFzdFJldmlzaW9uIH0gPSB0aGlzO1xuICAgICAgICBpZiAoIXZtLmFsd2F5c1JldmFsaWRhdGUgJiYgdGFnLnZhbGlkYXRlKGxhc3RSZXZpc2lvbikpIHtcbiAgICAgICAgICAgIHZtLmdvdG8odGFyZ2V0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBkaWRNb2RpZnkoKSB7XG4gICAgICAgIHRoaXMubGFzdFJldmlzaW9uID0gdGhpcy50YWcudmFsdWUoKTtcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgICAgICAgIGFyZ3M6IFtKU09OLnN0cmluZ2lmeSh0aGlzLnRhcmdldC5pbnNwZWN0KCkpXVxuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBEaWRNb2RpZnlPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gICAgY29uc3RydWN0b3IodGFyZ2V0KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0O1xuICAgICAgICB0aGlzLnR5cGUgPSBcImRpZC1tb2RpZnlcIjtcbiAgICAgICAgdGhpcy50YWcgPSBDT05TVEFOVF9UQUc7XG4gICAgfVxuICAgIGV2YWx1YXRlKCkge1xuICAgICAgICB0aGlzLnRhcmdldC5kaWRNb2RpZnkoKTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgTGFiZWxPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKGxhYmVsKSB7XG4gICAgICAgIHRoaXMudGFnID0gQ09OU1RBTlRfVEFHO1xuICAgICAgICB0aGlzLnR5cGUgPSBcImxhYmVsXCI7XG4gICAgICAgIHRoaXMubGFiZWwgPSBudWxsO1xuICAgICAgICB0aGlzLnByZXYgPSBudWxsO1xuICAgICAgICB0aGlzLm5leHQgPSBudWxsO1xuICAgICAgICBpbml0aWFsaXplR3VpZCh0aGlzKTtcbiAgICAgICAgaWYgKGxhYmVsKSB0aGlzLmxhYmVsID0gbGFiZWw7XG4gICAgfVxuICAgIGV2YWx1YXRlKCkge31cbiAgICBpbnNwZWN0KCkge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5sYWJlbH0gWyR7dGhpcy5fZ3VpZH1dYDtcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgICAgICAgIGFyZ3M6IFtKU09OLnN0cmluZ2lmeSh0aGlzLmluc3BlY3QoKSldXG4gICAgICAgIH07XG4gICAgfVxufSJdfQ==

@@ -8,4 +8,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, debugSlice } from './opcodes';
import { ATTRS_BLOCK, compileStatement } from './syntax/functions';
import * as ClientSide from './syntax/client-side';
import { ATTRS_BLOCK, ClientSide, compileStatement } from './scanner';
import { expr } from './syntax/functions';

@@ -30,4 +29,4 @@ import OpcodeBuilderDSL from './compiled/opcodes/builder';

ComponentLayoutBuilder.prototype.fromLayout = function fromLayout(componentName, layout) {
this.inner = new UnwrappedBuilder(this.env, componentName, layout);
ComponentLayoutBuilder.prototype.fromLayout = function fromLayout(layout) {
this.inner = new UnwrappedBuilder(this.env, layout);
};

@@ -116,3 +115,3 @@

b.didCreateElement(Register.s0);
var attrs = this.attrs.buffer;
var attrs = this.attrs['buffer'];
for (var i = 0; i < attrs.length; i++) {

@@ -153,7 +152,6 @@ compileStatement(attrs[i], b);

var UnwrappedBuilder = function () {
function UnwrappedBuilder(env, componentName, layout) {
function UnwrappedBuilder(env, layout) {
_classCallCheck(this, UnwrappedBuilder);
this.env = env;
this.componentName = componentName;
this.layout = layout;

@@ -167,3 +165,3 @@ this.attrs = new ComponentAttrsBuilder();

return layout.asLayout(this.componentName, this.attrs.buffer).compileDynamic(env);
return layout.asLayout(this.attrs['buffer']).compileDynamic(env);
};

@@ -264,4 +262,4 @@

var meta = this.builder.meta.templateMeta;
function helper(vm, a) {
return getDefinition(vm, a, meta);
function helper(vm, args) {
return getDefinition(vm, args, meta);
}

@@ -292,2 +290,2 @@ builder.startLabels();

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlci5qcyJdLCJuYW1lcyI6WyJDb21waWxlZER5bmFtaWNUZW1wbGF0ZSIsIk9wcyIsIlJlZ2lzdGVyIiwiZGVidWdTbGljZSIsIkFUVFJTX0JMT0NLIiwiY29tcGlsZVN0YXRlbWVudCIsIkNsaWVudFNpZGUiLCJleHByIiwiT3Bjb2RlQnVpbGRlckRTTCIsImNvbXBpbGVMYXlvdXQiLCJjb21waWxhYmxlIiwiZW52IiwiYnVpbGRlciIsIkNvbXBvbmVudExheW91dEJ1aWxkZXIiLCJjb21waWxlIiwid3JhcExheW91dCIsImxheW91dCIsImlubmVyIiwiV3JhcHBlZEJ1aWxkZXIiLCJmcm9tTGF5b3V0IiwiY29tcG9uZW50TmFtZSIsIlVud3JhcHBlZEJ1aWxkZXIiLCJ0YWciLCJhdHRycyIsIkNvbXBvbmVudFRhZ0J1aWxkZXIiLCJDb21wb25lbnRBdHRyc0J1aWxkZXIiLCJtZXRhIiwidGVtcGxhdGVNZXRhIiwic3ltYm9scyIsImFzUGFydGlhbCIsImR5bmFtaWNUYWciLCJnZXREeW5hbWljIiwic3RhdGljVGFnIiwiZ2V0U3RhdGljIiwiYiIsInN0YXJ0TGFiZWxzIiwiZmV0Y2giLCJzMSIsImR1cCIsImxvYWQiLCJ0ZXN0IiwianVtcFVubGVzcyIsInB1c2hDb21wb25lbnRPcGVyYXRpb25zIiwib3BlbkR5bmFtaWNFbGVtZW50Iiwib3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucyIsImRpZENyZWF0ZUVsZW1lbnQiLCJzMCIsImJ1ZmZlciIsImkiLCJsZW5ndGgiLCJmbHVzaEVsZW1lbnQiLCJsYWJlbCIsImludm9rZVN0YXRpYyIsImFzQmxvY2siLCJjbG9zZUVsZW1lbnQiLCJkaWRSZW5kZXJMYXlvdXQiLCJzdG9wTGFiZWxzIiwic3RhcnQiLCJlbmQiLCJmaW5hbGl6ZSIsImhhc0V2YWwiLCJjb25jYXQiLCJhc0xheW91dCIsImNvbXBpbGVEeW5hbWljIiwiRXJyb3IiLCJpc0R5bmFtaWMiLCJpc1N0YXRpYyIsInN0YXRpY1RhZ05hbWUiLCJkeW5hbWljVGFnTmFtZSIsInN0YXRpYyIsInRhZ05hbWUiLCJkeW5hbWljIiwiQ2xpZW50U2lkZUV4cHJlc3Npb24iLCJGdW5jdGlvbkV4cHJlc3Npb24iLCJuYW1lIiwidmFsdWUiLCJwdXNoIiwiU3RhdGljQXR0ciIsIkR5bmFtaWNBdHRyIiwiQ29tcG9uZW50QnVpbGRlciIsImRlZmluaXRpb24iLCJhcmdzIiwicGFyYW1zIiwiaGFzaCIsIl9kZWZhdWx0IiwiaW52ZXJzZSIsInB1c2hDb21wb25lbnRNYW5hZ2VyIiwiaW52b2tlQ29tcG9uZW50IiwiZGVmaW5pdGlvbkFyZ3MiLCJnZXREZWZpbml0aW9uIiwiYmxvY2siLCJoZWxwZXIiLCJ2bSIsImEiLCJwdXNoRnJhbWUiLCJyZXR1cm5UbyIsImNvbXBpbGVBcmdzIiwiZW50ZXIiLCJwdXNoRHluYW1pY0NvbXBvbmVudE1hbmFnZXIiLCJleGl0IiwicmV0dXJuIiwicG9wRnJhbWUiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxTQUFTQSx1QkFBVCxRQUF3QyxtQkFBeEM7QUFDQSxTQUFTQyxHQUFULFFBQW9CLHNCQUFwQjtBQUNBLFNBQVNDLFFBQVQsRUFBbUJDLFVBQW5CLFFBQXFDLFdBQXJDO0FBQ0EsU0FBU0MsV0FBVCxFQUFzQkMsZ0JBQXRCLFFBQThDLG9CQUE5QztBQUNBLE9BQU8sS0FBS0MsVUFBWixNQUE0QixzQkFBNUI7QUFDQSxTQUFTQyxJQUFULFFBQXFCLG9CQUFyQjtBQUNBLE9BQU9DLGdCQUFQLE1BQTZCLDRCQUE3QjtBQUNBLE9BQU8sU0FBU0MsYUFBVCxDQUF1QkMsVUFBdkIsRUFBbUNDLEdBQW5DLEVBQXdDO0FBQzNDLFFBQUlDLFVBQVUsSUFBSUMsc0JBQUosQ0FBMkJGLEdBQTNCLENBQWQ7QUFDQUQsZUFBV0ksT0FBWCxDQUFtQkYsT0FBbkI7QUFDQSxXQUFPQSxRQUFRRSxPQUFSLEVBQVA7QUFDSDs7SUFDS0Qsc0I7QUFDRixvQ0FBWUYsR0FBWixFQUFpQjtBQUFBOztBQUNiLGFBQUtBLEdBQUwsR0FBV0Es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QTFCLENBQVA7QUFDSCIsImZpbGUiOiJsaWIvY29tcGlsZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21waWxlZER5bmFtaWNUZW1wbGF0ZSB9IGZyb20gJy4vY29tcGlsZWQvYmxvY2tzJztcbmltcG9ydCB7IE9wcyB9IGZyb20gJ0BnbGltbWVyL3dpcmUtZm9ybWF0JztcbmltcG9ydCB7IFJlZ2lzdGVyLCBkZWJ1Z1NsaWNlIH0gZnJvbSAnLi9vcGNvZGVzJztcbmltcG9ydCB7IEFUVFJTX0JMT0NLLCBjb21waWxlU3RhdGVtZW50IH0gZnJvbSAnLi9zeW50YXgvZnVuY3Rpb25zJztcbmltcG9ydCAqIGFzIENsaWVudFNpZGUgZnJvbSAnLi9zeW50YXgvY2xpZW50LXNpZGUnO1xuaW1wb3J0IHsgZXhwciB9IGZyb20gJy4vc3ludGF4L2Z1bmN0aW9ucyc7XG5pbXBvcnQgT3Bjb2RlQnVpbGRlckRTTCBmcm9tICcuL2NvbXBpbGVkL29wY29kZXMvYnVpbGRlcic7XG5leHBvcnQgZnVuY3Rpb24gY29tcGlsZUxheW91dChjb21waWxhYmxlLCBlbnYpIHtcbiAgICBsZXQgYnVpbGRlciA9IG5ldyBDb21wb25lbnRMYXlvdXRCdWlsZGVyKGVudik7XG4gICAgY29tcGlsYWJsZS5jb21waWxlKGJ1aWxkZXIpO1xuICAgIHJldHVybiBidWlsZGVyLmNvbXBpbGUoKTtcbn1cbmNsYXNzIENvbXBvbmVudExheW91dEJ1aWxkZXIge1xuICAgIGNvbnN0cnVjdG9yKGVudikge1xuICAgICAgICB0aGlzLmVudiA9IGVudjtcbiAgICB9XG4gICAgd3JhcExheW91dChsYXlvdXQpIHtcbiAgICAgICAgdGhpcy5pbm5lciA9IG5ldyBXcmFwcGVkQnVpbGRlcih0aGlzLmVudiwgbGF5b3V0KTtcbiAgICB9XG4gICAgZnJvbUxheW91dChjb21wb25lbnROYW1lLCBsYXlvdXQpIHtcbiAgICAgICAgdGhpcy5pbm5lciA9IG5ldyBVbndyYXBwZWRCdWlsZGVyKHRoaXMuZW52LCBjb21wb25lbnROYW1lLCBsYXlvdXQpO1xuICAgIH1cbiAgICBjb21waWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pbm5lci5jb21waWxlKCk7XG4gICAgfVxuICAgIGdldCB0YWcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlubmVyLnRhZztcbiAgICB9XG4gICAgZ2V0IGF0dHJzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pbm5lci5hdHRycztcbiAgICB9XG59XG5jbGFzcyBXcmFwcGVkQnVpbGRlciB7XG4gICAgY29uc3RydWN0b3IoZW52LCBsYXlvdXQpIHtcbiAgICAgICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgICAgIHRoaXMubGF5b3V0ID0gbGF5b3V0O1xuICAgICAgICB0aGlzLnRhZyA9IG5ldyBDb21wb25lbnRUYWdCdWlsZGVyKCk7XG4gICAgICAgIHRoaXMuYXR0cnMgPSBuZXcgQ29tcG9uZW50QXR0cnNCdWlsZGVyKCk7XG4gICAgfVxuICAgIGNvbXBpbGUoKSB7XG4gICAgICAgIC8vPT09PT09PT1EWU5BTUlDXG4gICAgICAgIC8vICAgICAgICBQdXRWYWx1ZShUYWdFeHByKVxuICAgICAgICAvLyAgICAgICAgVGVzdFxuICAgICAgICAvLyAgICAgICAgSnVtcFVubGVzcyhCT0RZKVxuICAgICAgICAvLyAgICAgICAgT3BlbkR5bmFtaWNQcmltaXRpdmVFbGVtZW50XG4gICAgICAgIC8vICAgICAgICBEaWRDcmVhdGVFbGVtZW50XG4gICAgICAgIC8vICAgICAgICAuLi5hdHRyIHN0YXRlbWVudHMuLi5cbiAgICAgICAgLy8gICAgICAgIEZsdXNoRWxlbWVudFxuICAgICAgICAvLyBCT0RZOiAgTm9vcFxuICAgICAgICAvLyAgICAgICAgLi4uYm9keSBzdGF0ZW1lbnRzLi4uXG4gICAgICAgIC8vICAgICAgICBQdXRWYWx1ZShUYWdFeHByKVxuICAgICAgICAvLyAgICAgICAgVGVzdFxuICAgICAgICAvLyAgICAgICAgSnVtcFVubGVzcyhFTkQpXG4gICAgICAgIC8vICAgICAgICBDbG9zZUVsZW1lbnRcbiAgICAgICAgLy8gRU5EOiAgIE5vb3BcbiAgICAgICAgLy8gICAgICAgIERpZFJlbmRlckxheW91dFxuICAgICAgICAvLyAgICAgICAgRXhpdFxuICAgICAgICAvL1xuICAgICAgICAvLz09PT09PT09U1RBVElDXG4gICAgICAgIC8vICAgICAgICBPcGVuUHJpbWl0aXZlRWxlbWVudE9wY29kZVxuICAgICAgICAvLyAgICAgICAgRGlkQ3JlYXRlRWxlbWVudFxuICAgICAgICAvLyAgICAgICAgLi4uYXR0ciBzdGF0ZW1lbnRzLi4uXG4gICAgICAgIC8vICAgICAgICBGbHVzaEVsZW1lbnRcbiAgICAgICAgLy8gICAgICAgIC4uLmJvZHkgc3RhdGVtZW50cy4uLlxuICAgICAgICAvLyAgICAgICAgQ2xvc2VFbGVtZW50XG4gICAgICAgIC8vICAgICAgICBEaWRSZW5kZXJMYXlvdXRcbiAgICAgICAgLy8gICAgICAgIEV4aXRcbiAgICAgICAgbGV0IHsgZW52LCBsYXlvdXQgfSA9IHRoaXM7XG4gICAgICAgIGxldCBtZXRhID0geyB0ZW1wbGF0ZU1ldGE6IGxheW91dC5tZXRhLCBzeW1ib2xzOiBsYXlvdXQuc3ltYm9scywgYXNQYXJ0aWFsOiBmYWxzZSB9O1xuICAgICAgICBsZXQgZHluYW1pY1RhZyA9IHRoaXMudGFnLmdldER5bmFtaWMoKTtcbiAgICAgICAgbGV0IHN0YXRpY1RhZyA9IHRoaXMudGFnLmdldFN0YXRpYygpO1xuICAgICAgICBsZXQgYiA9IGJ1aWxkZXIoZW52LCBtZXRhKTtcbiAgICAgICAgYi5zdGFydExhYmVscygpO1xuICAgICAgICBpZiAoZHluYW1pY1RhZykge1xuICAgICAgICAgICAgYi5mZXRjaChSZWdpc3Rlci5zMSk7XG4gICAgICAgICAgICBleHByKGR5bmFtaWNUYWcsIGIpO1xuICAgICAgICAgICAgYi5kdXAoKTtcbiAgICAgICAgICAgIGIubG9hZChSZWdpc3Rlci5zMSk7XG4gICAgICAgICAgICBiLnRlc3QoJ3NpbXBsZScpO1xuICAgICAgICAgICAgYi5qdW1wVW5sZXNzKCdCT0RZJyk7XG4gICAgICAgICAgICBiLmZldGNoKFJlZ2lzdGVyLnMxKTtcbiAgICAgICAgICAgIGIucHVzaENvbXBvbmVudE9wZXJhdGlvbnMoKTtcbiAgICAgICAgICAgIGIub3BlbkR5bmFtaWNFbGVtZW50KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoc3RhdGljVGFnKSB7XG4gICAgICAgICAgICBiLnB1c2hDb21wb25lbnRPcGVyYXRpb25zKCk7XG4gICAgICAgICAgICBiLm9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMoc3RhdGljVGFnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZHluYW1pY1RhZyB8fCBzdGF0aWNUYWcpIHtcbiAgICAgICAgICAgIGIuZGlkQ3JlYXRlRWxlbWVudChSZWdpc3Rlci5zMCk7XG4gICAgICAgICAgICBsZXQgYXR0cnMgPSB0aGlzLmF0dHJzLmJ1ZmZlcjtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXR0cnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb21waWxlU3RhdGVtZW50KGF0dHJzW2ldLCBiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGIuZmx1c2hFbGVtZW50KCk7XG4gICAgICAgIH1cbiAgICAgICAgYi5sYWJlbCgnQk9EWScpO1xuICAgICAgICBiLmludm9rZVN0YXRpYyhsYXlvdXQuYXNCbG9jaygpKTtcbiAgICAgICAgaWYgKGR5bmFtaWNUYWcpIHtcbiAgICAgICAgICAgIGIuZmV0Y2goUmVnaXN0ZXIuczEpO1xuICAgICAgICAgICAgYi50ZXN0KCdzaW1wbGUnKTtcbiAgICAgICAgICAgIGIuanVtcFVubGVzcygnRU5EJyk7XG4gICAgICAgICAgICBiLmNsb3NlRWxlbWVudCgpO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YXRpY1RhZykge1xuICAgICAgICAgICAgYi5jbG9zZUVsZW1lbnQoKTtcbiAgICAgICAgfVxuICAgICAgICBiLmxhYmVsKCdFTkQnKTtcbiAgICAgICAgYi5kaWRSZW5kZXJMYXlvdXQoUmVnaXN0ZXIuczApO1xuICAgICAgICBpZiAoZHluYW1pY1RhZykge1xuICAgICAgICAgICAgYi5sb2FkKFJlZ2lzdGVyLnMxKTtcbiAgICAgICAgfVxuICAgICAgICBiLnN0b3BMYWJlbHMoKTtcbiAgICAgICAgbGV0IHN0YXJ0ID0gYi5zdGFydDtcbiAgICAgICAgbGV0IGVuZCA9IGIuZmluYWxpemUoKTtcbiAgICAgICAgZGVidWdTbGljZShlbnYsIHN0YXJ0LCBlbmQpO1xuICAgICAgICByZXR1cm4gbmV3IENvbXBpbGVkRHluYW1pY1RlbXBsYXRlKHN0YXJ0LCBlbmQsIHtcbiAgICAgICAgICAgIG1ldGEsXG4gICAgICAgICAgICBoYXNFdmFsOiBsYXlvdXQuaGFzRXZhbCxcbiAgICAgICAgICAgIHN5bWJvbHM6IGxheW91dC5zeW1ib2xzLmNvbmNhdChbQVRUUlNfQkxPQ0tdKVxuICAgICAgICB9KTtcbiAgICB9XG59XG5jbGFzcyBVbndyYXBwZWRCdWlsZGVyIHtcbiAgICBjb25zdHJ1Y3RvcihlbnYsIGNvbXBvbmVudE5hbWUsIGxheW91dCkge1xuICAgICAgICB0aGlzLmVudiA9IGVudjtcbiAgICAgICAgdGhpcy5jb21wb25lbnROYW1lID0gY29tcG9uZW50TmFtZTtcbiAgICAgICAgdGhpcy5sYXlvdXQgPSBsYXlvdXQ7XG4gICAgICAgIHRoaXMuYXR0cnMgPSBuZXcgQ29tcG9uZW50QXR0cnNCdWlsZGVyKCk7XG4gICAgfVxuICAgIGdldCB0YWcoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQlVHOiBDYW5ub3QgY2FsbCBgdGFnYCBvbiBhbiBVbndyYXBwZWRCdWlsZGVyJyk7XG4gICAgfVxuICAgIGNvbXBpbGUoKSB7XG4gICAgICAgIGxldCB7IGVudiwgbGF5b3V0IH0gPSB0aGlzO1xuICAgICAgICByZXR1cm4gbGF5b3V0LmFzTGF5b3V0KHRoaXMuY29tcG9uZW50TmFtZSwgdGhpcy5hdHRycy5idWZmZXIpLmNvbXBpbGVEeW5hbWljKGVudik7XG4gICAgfVxufVxuY2xhc3MgQ29tcG9uZW50VGFnQnVpbGRlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuaXNEeW5hbWljID0gbnVsbDtcbiAgICAgICAgdGhpcy5pc1N0YXRpYyA9IG51bGw7XG4gICAgICAgIHRoaXMuc3RhdGljVGFnTmFtZSA9IG51bGw7XG4gICAgICAgIHRoaXMuZHluYW1pY1RhZ05hbWUgPSBudWxsO1xuICAgIH1cbiAgICBnZXREeW5hbWljKCkge1xuICAgICAgICBpZiAodGhpcy5pc0R5bmFtaWMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmR5bmFtaWNUYWdOYW1lO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldFN0YXRpYygpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNTdGF0aWMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0YXRpY1RhZ05hbWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc3RhdGljKHRhZ05hbWUpIHtcbiAgICAgICAgdGhpcy5pc1N0YXRpYyA9IHRydWU7XG4gICAgICAgIHRoaXMuc3RhdGljVGFnTmFtZSA9IHRhZ05hbWU7XG4gICAgfVxuICAgIGR5bmFtaWModGFnTmFtZSkge1xuICAgICAgICB0aGlzLmlzRHluYW1pYyA9IHRydWU7XG4gICAgICAgIHRoaXMuZHluYW1pY1RhZ05hbWUgPSBbT3BzLkNsaWVudFNpZGVFeHByZXNzaW9uLCBDbGllbnRTaWRlLk9wcy5GdW5jdGlvbkV4cHJlc3Npb24sIHRhZ05hbWVdO1xuICAgIH1cbn1cbmNsYXNzIENvbXBvbmVudEF0dHJzQnVpbGRlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuYnVmZmVyID0gW107XG4gICAgfVxuICAgIHN0YXRpYyhuYW1lLCB2YWx1ZSkge1xuICAgICAgICB0aGlzLmJ1ZmZlci5wdXNoKFtPcHMuU3RhdGljQXR0ciwgbmFtZSwgdmFsdWUsIG51bGxdKTtcbiAgICB9XG4gICAgZHluYW1pYyhuYW1lLCB2YWx1ZSkge1xuICAgICAgICB0aGlzLmJ1ZmZlci5wdXNoKFtPcHMuRHluYW1pY0F0dHIsIG5hbWUsIFtPcHMuQ2xpZW50U2lkZUV4cHJlc3Npb24sIENsaWVudFNpZGUuT3BzLkZ1bmN0aW9uRXhwcmVzc2lvbiwgdmFsdWVdLCBudWxsXSk7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIENvbXBvbmVudEJ1aWxkZXIge1xuICAgIGNvbnN0cnVjdG9yKGJ1aWxkZXIpIHtcbiAgICAgICAgdGhpcy5idWlsZGVyID0gYnVpbGRlcjtcbiAgICAgICAgdGhpcy5lbnYgPSBidWlsZGVyLmVudjtcbiAgICB9XG4gICAgc3RhdGljKGRlZmluaXRpb24sIGFyZ3MpIHtcbiAgICAgICAgbGV0IFtwYXJhbXMsIGhhc2gsIF9kZWZhdWx0LCBpbnZlcnNlXSA9IGFyZ3M7XG4gICAgICAgIGxldCB7IGJ1aWxkZXIgfSA9IHRoaXM7XG4gICAgICAgIGJ1aWxkZXIucHVzaENvbXBvbmVudE1hbmFnZXIoZGVmaW5pdGlvbik7XG4gICAgICAgIGJ1aWxkZXIuaW52b2tlQ29tcG9uZW50KG51bGwsIHBhcmFtcywgaGFzaCwgX2RlZmF1bHQsIGludmVyc2UpO1xuICAgIH1cbiAgICBkeW5hbWljKGRlZmluaXRpb25BcmdzLCBnZXREZWZpbml0aW9uLCBhcmdzKSB7XG4gICAgICAgIGxldCBbcGFyYW1zLCBoYXNoLCBibG9jaywgaW52ZXJzZV0gPSBhcmdzO1xuICAgICAgICBsZXQgeyBidWlsZGVyIH0gPSB0aGlzO1xuICAgICAgICBpZiAoIWRlZmluaXRpb25BcmdzIHx8IGRlZmluaXRpb25BcmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRHluYW1pYyBzeW50YXggd2l0aG91dCBhbiBhcmd1bWVudFwiKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbWV0YSA9IHRoaXMuYnVpbGRlci5tZXRhLnRlbXBsYXRlTWV0YTtcbiAgICAgICAgZnVuY3Rpb24gaGVscGVyKHZtLCBhKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0RGVmaW5pdGlvbih2bSwgYSwgbWV0YSk7XG4gICAgICAgIH1cbiAgICAgICAgYnVpbGRlci5zdGFydExhYmVscygpO1xuICAgICAgICBidWlsZGVyLnB1c2hGcmFtZSgpO1xuICAgICAgICBidWlsZGVyLnJldHVyblRvKCdFTkQnKTtcbiAgICAgICAgYnVpbGRlci5jb21waWxlQXJncyhkZWZpbml0aW9uQXJnc1swXSwgZGVmaW5pdGlvbkFyZ3NbMV0sIHRydWUpO1xuICAgICAgICBidWlsZGVyLmhlbHBlcihoZWxwZXIpO1xuICAgICAgICBidWlsZGVyLmR1cCgpO1xuICAgICAgICBidWlsZGVyLnRlc3QoJ3NpbXBsZScpO1xuICAgICAgICBidWlsZGVyLmVudGVyKDIpO1xuICAgICAgICBidWlsZGVyLmp1bXBVbmxlc3MoJ0VMU0UnKTtcbiAgICAgICAgYnVpbGRlci5wdXNoRHluYW1pY0NvbXBvbmVudE1hbmFnZXIoKTtcbiAgICAgICAgYnVpbGRlci5pbnZva2VDb21wb25lbnQobnVsbCwgcGFyYW1zLCBoYXNoLCBibG9jaywgaW52ZXJzZSk7XG4gICAgICAgIGJ1aWxkZXIubGFiZWwoJ0VMU0UnKTtcbiAgICAgICAgYnVpbGRlci5leGl0KCk7XG4gICAgICAgIGJ1aWxkZXIucmV0dXJuKCk7XG4gICAgICAgIGJ1aWxkZXIubGFiZWwoJ0VORCcpO1xuICAgICAgICBidWlsZGVyLnBvcEZyYW1lKCk7XG4gICAgICAgIGJ1aWxkZXIuc3RvcExhYmVscygpO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBidWlsZGVyKGVudiwgbWV0YSkge1xuICAgIHJldHVybiBuZXcgT3Bjb2RlQnVpbGRlckRTTChlbnYsIG1ldGEpO1xufSJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlci5qcyJdLCJuYW1lcyI6WyJDb21waWxlZER5bmFtaWNUZW1wbGF0ZSIsIk9wcyIsIlJlZ2lzdGVyIiwiZGVidWdTbGljZSIsIkFUVFJTX0JMT0NLIiwiQ2xpZW50U2lkZSIsImNvbXBpbGVTdGF0ZW1lbnQiLCJleHByIiwiT3Bjb2RlQnVpbGRlckRTTCIsImNvbXBpbGVMYXlvdXQiLCJjb21waWxhYmxlIiwiZW52IiwiYnVpbGRlciIsIkNvbXBvbmVudExheW91dEJ1aWxkZXIiLCJjb21waWxlIiwid3JhcExheW91dCIsImxheW91dCIsImlubmVyIiwiV3JhcHBlZEJ1aWxkZXIiLCJmcm9tTGF5b3V0IiwiVW53cmFwcGVkQnVpbGRlciIsInRhZyIsImF0dHJzIiwiQ29tcG9uZW50VGFnQnVpbGRlciIsIkNvbXBvbmVudEF0dHJzQnVpbGRlciIsIm1ldGEiLCJ0ZW1wbGF0ZU1ldGEiLCJzeW1ib2xzIiwiYXNQYXJ0aWFsIiwiZHluYW1pY1RhZyIsImdldER5bmFtaWMiLCJzdGF0aWNUYWciLCJnZXRTdGF0aWMiLCJiIiwic3RhcnRMYWJlbHMiLCJmZXRjaCIsInMxIiwiZHVwIiwibG9hZCIsInRlc3QiLCJqdW1wVW5sZXNzIiwicHVzaENvbXBvbmVudE9wZXJhdGlvbnMiLCJvcGVuRHluYW1pY0VsZW1lbnQiLCJvcGVuRWxlbWVudFdpdGhPcGVyYXRpb25zIiwiZGlkQ3JlYXRlRWxlbWVudCIsInMwIiwiaSIsImxlbmd0aCIsImZsdXNoRWxlbWVudCIsImxhYmVsIiwiaW52b2tlU3RhdGljIiwiYXNCbG9jayIsImNsb3NlRWxlbWVudCIsImRpZFJlbmRlckxheW91dCIsInN0b3BMYWJlbHMiLCJzdGFydCIsImVuZCIsImZpbmFsaXplIiwiaGFzRXZhbCIsImNvbmNhdCIsImFzTGF5b3V0IiwiY29tcGlsZUR5bmFtaWMiLCJFcnJvciIsImlzRHluYW1pYyIsImlzU3RhdGljIiwic3RhdGljVGFnTmFtZSIsImR5bmFtaWNUYWdOYW1lIiwic3RhdGljIiwidGFnTmFtZSIsImR5bmFtaWMiLCJDbGllbnRTaWRlRXhwcmVzc2lvbiIsIkZ1bmN0aW9uRXhwcmVzc2lvbiIsImJ1ZmZlciIsIm5hbWUiLCJ2YWx1ZSIsInB1c2giLCJTdGF0aWNBdHRyIiwiRHluYW1pY0F0dHIiLCJDb21wb25lbnRCdWlsZGVyIiwiZGVmaW5pdGlvbiIsImFyZ3MiLCJwYXJhbXMiLCJoYXNoIiwiX2RlZmF1bHQiLCJpbnZlcnNlIiwicHVzaENvbXBvbmVudE1hbmFnZXIiLCJpbnZva2VDb21wb25lbnQiLCJkZWZpbml0aW9uQXJncyIsImdldERlZmluaXRpb24iLCJibG9jayIsImhlbHBlciIsInZtIiwicHVzaEZyYW1lIiwicmV0dXJuVG8iLCJjb21waWxlQXJncyIsImVudGVyIiwicHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyIiwiZXhpdCIsInJldHVybiIsInBvcEZyYW1lIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUEsU0FBU0EsdUJBQVQsUUFBd0MsbUJBQXhDO0FBQ0EsU0FBU0MsR0FBVCxRQUFvQixzQkFBcEI7QUFDQSxTQUFTQyxRQUFULEVBQW1CQyxVQUFuQixRQUFxQyxXQUFyQztBQUNBLFNBQVNDLFdBQVQsRUFBc0JDLFVBQXRCLEVBQWtDQyxnQkFBbEMsUUFBMEQsV0FBMUQ7QUFDQSxTQUFTQyxJQUFULFFBQXFCLG9CQUFyQjtBQUNBLE9BQU9DLGdCQUFQLE1BQTZCLDRCQUE3QjtBQUNBLE9BQU8sU0FBU0MsYUFBVCxDQUF1QkMsVUFBdkIsRUFBbUNDLEdBQW5DLEVBQXdDO0FBQzNDLFFBQUlDLFVBQVUsSUFBSUMsc0JBQUosQ0FBMkJGLEdBQTNCLENBQWQ7QUFDQUQsZUFBV0ksT0FBWCxDQUFtQkYsT0FBbkI7QUFDQSxXQUFPQSxRQUFRRSxPQUFSLEVBQVA7QUFDSDs7SUFDS0Qsc0I7QUFDRixvQ0FBWUYsR0FBWixFQUFpQjtBQUFBOztBQUNiLGFBQUtBLEdBQUwsR0FBV0EsR0FBWDtBQUNIOztxQ0FDREksVSx1QkFBV0MsTSxFQUFRO0FBQ2YsYUFB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QTdCO0FBQ0EsaUJBQVNnRSxNQUFULENBQWdCQyxFQUFoQixFQUFvQlgsSUFBcEIsRUFBMEI7QUFDdEIsbUJBQU9RLGNBQWNHLEVBQWQsRUFBa0JYLElBQWxCLEVBQXdCdkQsSUFBeEIsQ0FBUDtBQUNIO0FBQ0RiLGdCQUFRc0IsV0FBUjtBQUNBdEIsZ0JBQVFnRixTQUFSO0FBQ0FoRixnQkFBUWlGLFFBQVIsQ0FBaUIsS0FBakI7QUFDQWpGLGdCQUFRa0YsV0FBUixDQUFvQlAsZUFBZSxDQUFmLENBQXBCLEVBQXVDQSxlQUFlLENBQWYsQ0FBdkMsRUFBMEQsSUFBMUQ7QUFDQTNFLGdCQUFROEUsTUFBUixDQUFlQSxNQUFmO0FBQ0E5RSxnQkFBUXlCLEdBQVI7QUFDQXpCLGdCQUFRMkIsSUFBUixDQUFhLFFBQWI7QUFDQTNCLGdCQUFRbUYsS0FBUixDQUFjLENBQWQ7QUFDQW5GLGdCQUFRNEIsVUFBUixDQUFtQixNQUFuQjtBQUNBNUIsZ0JBQVFvRiwyQkFBUjtBQUNBcEYsZ0JBQVEwRSxlQUFSLENBQXdCLElBQXhCLEVBQThCTCxNQUE5QixFQUFzQ0MsSUFBdEMsRUFBNENPLEtBQTVDLEVBQW1ETCxPQUFuRDtBQUNBeEUsZ0JBQVFxQyxLQUFSLENBQWMsTUFBZDtBQUNBckMsZ0JBQVFxRixJQUFSO0FBQ0FyRixnQkFBUXNGLE1BQVI7QUFDQXRGLGdCQUFRcUMsS0FBUixDQUFjLEtBQWQ7QUFDQXJDLGdCQUFRdUYsUUFBUjtBQUNBdkYsZ0JBQVEwQyxVQUFSO0FBQ0gsS0F0Q0w7O0FBQUE7QUFBQTtBQXdDQSxPQUFPLFNBQVMxQyxPQUFULENBQWlCRCxHQUFqQixFQUFzQmMsSUFBdEIsRUFBNEI7QUFDL0IsV0FBTyxJQUFJakIsZ0JBQUosQ0FBcUJHLEdBQXJCLEVBQTBCYyxJQUExQixDQUFQO0FBQ0giLCJmaWxlIjoibGliL2NvbXBpbGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcGlsZWREeW5hbWljVGVtcGxhdGUgfSBmcm9tICcuL2NvbXBpbGVkL2Jsb2Nrcyc7XG5pbXBvcnQgeyBPcHMgfSBmcm9tICdAZ2xpbW1lci93aXJlLWZvcm1hdCc7XG5pbXBvcnQgeyBSZWdpc3RlciwgZGVidWdTbGljZSB9IGZyb20gJy4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBBVFRSU19CTE9DSywgQ2xpZW50U2lkZSwgY29tcGlsZVN0YXRlbWVudCB9IGZyb20gJy4vc2Nhbm5lcic7XG5pbXBvcnQgeyBleHByIH0gZnJvbSAnLi9zeW50YXgvZnVuY3Rpb25zJztcbmltcG9ydCBPcGNvZGVCdWlsZGVyRFNMIGZyb20gJy4vY29tcGlsZWQvb3Bjb2Rlcy9idWlsZGVyJztcbmV4cG9ydCBmdW5jdGlvbiBjb21waWxlTGF5b3V0KGNvbXBpbGFibGUsIGVudikge1xuICAgIGxldCBidWlsZGVyID0gbmV3IENvbXBvbmVudExheW91dEJ1aWxkZXIoZW52KTtcbiAgICBjb21waWxhYmxlLmNvbXBpbGUoYnVpbGRlcik7XG4gICAgcmV0dXJuIGJ1aWxkZXIuY29tcGlsZSgpO1xufVxuY2xhc3MgQ29tcG9uZW50TGF5b3V0QnVpbGRlciB7XG4gICAgY29uc3RydWN0b3IoZW52KSB7XG4gICAgICAgIHRoaXMuZW52ID0gZW52O1xuICAgIH1cbiAgICB3cmFwTGF5b3V0KGxheW91dCkge1xuICAgICAgICB0aGlzLmlubmVyID0gbmV3IFdyYXBwZWRCdWlsZGVyKHRoaXMuZW52LCBsYXlvdXQpO1xuICAgIH1cbiAgICBmcm9tTGF5b3V0KGxheW91dCkge1xuICAgICAgICB0aGlzLmlubmVyID0gbmV3IFVud3JhcHBlZEJ1aWxkZXIodGhpcy5lbnYsIGxheW91dCk7XG4gICAgfVxuICAgIGNvbXBpbGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlubmVyLmNvbXBpbGUoKTtcbiAgICB9XG4gICAgZ2V0IHRhZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5uZXIudGFnO1xuICAgIH1cbiAgICBnZXQgYXR0cnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlubmVyLmF0dHJzO1xuICAgIH1cbn1cbmNsYXNzIFdyYXBwZWRCdWlsZGVyIHtcbiAgICBjb25zdHJ1Y3RvcihlbnYsIGxheW91dCkge1xuICAgICAgICB0aGlzLmVudiA9IGVudjtcbiAgICAgICAgdGhpcy5sYXlvdXQgPSBsYXlvdXQ7XG4gICAgICAgIHRoaXMudGFnID0gbmV3IENvbXBvbmVudFRhZ0J1aWxkZXIoKTtcbiAgICAgICAgdGhpcy5hdHRycyA9IG5ldyBDb21wb25lbnRBdHRyc0J1aWxkZXIoKTtcbiAgICB9XG4gICAgY29tcGlsZSgpIHtcbiAgICAgICAgLy89PT09PT09PURZTkFNSUNcbiAgICAgICAgLy8gICAgICAgIFB1dFZhbHVlKFRhZ0V4cHIpXG4gICAgICAgIC8vICAgICAgICBUZXN0XG4gICAgICAgIC8vICAgICAgICBKdW1wVW5sZXNzKEJPRFkpXG4gICAgICAgIC8vICAgICAgICBPcGVuRHluYW1pY1ByaW1pdGl2ZUVsZW1lbnRcbiAgICAgICAgLy8gICAgICAgIERpZENyZWF0ZUVsZW1lbnRcbiAgICAgICAgLy8gICAgICAgIC4uLmF0dHIgc3RhdGVtZW50cy4uLlxuICAgICAgICAvLyAgICAgICAgRmx1c2hFbGVtZW50XG4gICAgICAgIC8vIEJPRFk6ICBOb29wXG4gICAgICAgIC8vICAgICAgICAuLi5ib2R5IHN0YXRlbWVudHMuLi5cbiAgICAgICAgLy8gICAgICAgIFB1dFZhbHVlKFRhZ0V4cHIpXG4gICAgICAgIC8vICAgICAgICBUZXN0XG4gICAgICAgIC8vICAgICAgICBKdW1wVW5sZXNzKEVORClcbiAgICAgICAgLy8gICAgICAgIENsb3NlRWxlbWVudFxuICAgICAgICAvLyBFTkQ6ICAgTm9vcFxuICAgICAgICAvLyAgICAgICAgRGlkUmVuZGVyTGF5b3V0XG4gICAgICAgIC8vICAgICAgICBFeGl0XG4gICAgICAgIC8vXG4gICAgICAgIC8vPT09PT09PT1TVEFUSUNcbiAgICAgICAgLy8gICAgICAgIE9wZW5QcmltaXRpdmVFbGVtZW50T3Bjb2RlXG4gICAgICAgIC8vICAgICAgICBEaWRDcmVhdGVFbGVtZW50XG4gICAgICAgIC8vICAgICAgICAuLi5hdHRyIHN0YXRlbWVudHMuLi5cbiAgICAgICAgLy8gICAgICAgIEZsdXNoRWxlbWVudFxuICAgICAgICAvLyAgICAgICAgLi4uYm9keSBzdGF0ZW1lbnRzLi4uXG4gICAgICAgIC8vICAgICAgICBDbG9zZUVsZW1lbnRcbiAgICAgICAgLy8gICAgICAgIERpZFJlbmRlckxheW91dFxuICAgICAgICAvLyAgICAgICAgRXhpdFxuICAgICAgICBsZXQgeyBlbnYsIGxheW91dCB9ID0gdGhpcztcbiAgICAgICAgbGV0IG1ldGEgPSB7IHRlbXBsYXRlTWV0YTogbGF5b3V0Lm1ldGEsIHN5bWJvbHM6IGxheW91dC5zeW1ib2xzLCBhc1BhcnRpYWw6IGZhbHNlIH07XG4gICAgICAgIGxldCBkeW5hbWljVGFnID0gdGhpcy50YWcuZ2V0RHluYW1pYygpO1xuICAgICAgICBsZXQgc3RhdGljVGFnID0gdGhpcy50YWcuZ2V0U3RhdGljKCk7XG4gICAgICAgIGxldCBiID0gYnVpbGRlcihlbnYsIG1ldGEpO1xuICAgICAgICBiLnN0YXJ0TGFiZWxzKCk7XG4gICAgICAgIGlmIChkeW5hbWljVGFnKSB7XG4gICAgICAgICAgICBiLmZldGNoKFJlZ2lzdGVyLnMxKTtcbiAgICAgICAgICAgIGV4cHIoZHluYW1pY1RhZywgYik7XG4gICAgICAgICAgICBiLmR1cCgpO1xuICAgICAgICAgICAgYi5sb2FkKFJlZ2lzdGVyLnMxKTtcbiAgICAgICAgICAgIGIudGVzdCgnc2ltcGxlJyk7XG4gICAgICAgICAgICBiLmp1bXBVbmxlc3MoJ0JPRFknKTtcbiAgICAgICAgICAgIGIuZmV0Y2goUmVnaXN0ZXIuczEpO1xuICAgICAgICAgICAgYi5wdXNoQ29tcG9uZW50T3BlcmF0aW9ucygpO1xuICAgICAgICAgICAgYi5vcGVuRHluYW1pY0VsZW1lbnQoKTtcbiAgICAgICAgfSBlbHNlIGlmIChzdGF0aWNUYWcpIHtcbiAgICAgICAgICAgIGIucHVzaENvbXBvbmVudE9wZXJhdGlvbnMoKTtcbiAgICAgICAgICAgIGIub3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucyhzdGF0aWNUYWcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkeW5hbWljVGFnIHx8IHN0YXRpY1RhZykge1xuICAgICAgICAgICAgYi5kaWRDcmVhdGVFbGVtZW50KFJlZ2lzdGVyLnMwKTtcbiAgICAgICAgICAgIGxldCBhdHRycyA9IHRoaXMuYXR0cnNbJ2J1ZmZlciddO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhdHRycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbXBpbGVTdGF0ZW1lbnQoYXR0cnNbaV0sIGIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYi5mbHVzaEVsZW1lbnQoKTtcbiAgICAgICAgfVxuICAgICAgICBiLmxhYmVsKCdCT0RZJyk7XG4gICAgICAgIGIuaW52b2tlU3RhdGljKGxheW91dC5hc0Jsb2NrKCkpO1xuICAgICAgICBpZiAoZHluYW1pY1RhZykge1xuICAgICAgICAgICAgYi5mZXRjaChSZWdpc3Rlci5zMSk7XG4gICAgICAgICAgICBiLnRlc3QoJ3NpbXBsZScpO1xuICAgICAgICAgICAgYi5qdW1wVW5sZXNzKCdFTkQnKTtcbiAgICAgICAgICAgIGIuY2xvc2VFbGVtZW50KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoc3RhdGljVGFnKSB7XG4gICAgICAgICAgICBiLmNsb3NlRWxlbWVudCgpO1xuICAgICAgICB9XG4gICAgICAgIGIubGFiZWwoJ0VORCcpO1xuICAgICAgICBiLmRpZFJlbmRlckxheW91dChSZWdpc3Rlci5zMCk7XG4gICAgICAgIGlmIChkeW5hbWljVGFnKSB7XG4gICAgICAgICAgICBiLmxvYWQoUmVnaXN0ZXIuczEpO1xuICAgICAgICB9XG4gICAgICAgIGIuc3RvcExhYmVscygpO1xuICAgICAgICBsZXQgc3RhcnQgPSBiLnN0YXJ0O1xuICAgICAgICBsZXQgZW5kID0gYi5maW5hbGl6ZSgpO1xuICAgICAgICBkZWJ1Z1NsaWNlKGVudiwgc3RhcnQsIGVuZCk7XG4gICAgICAgIHJldHVybiBuZXcgQ29tcGlsZWREeW5hbWljVGVtcGxhdGUoc3RhcnQsIGVuZCwge1xuICAgICAgICAgICAgbWV0YSxcbiAgICAgICAgICAgIGhhc0V2YWw6IGxheW91dC5oYXNFdmFsLFxuICAgICAgICAgICAgc3ltYm9sczogbGF5b3V0LnN5bWJvbHMuY29uY2F0KFtBVFRSU19CTE9DS10pXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbmNsYXNzIFVud3JhcHBlZEJ1aWxkZXIge1xuICAgIGNvbnN0cnVjdG9yKGVudiwgbGF5b3V0KSB7XG4gICAgICAgIHRoaXMuZW52ID0gZW52O1xuICAgICAgICB0aGlzLmxheW91dCA9IGxheW91dDtcbiAgICAgICAgdGhpcy5hdHRycyA9IG5ldyBDb21wb25lbnRBdHRyc0J1aWxkZXIoKTtcbiAgICB9XG4gICAgZ2V0IHRhZygpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdCVUc6IENhbm5vdCBjYWxsIGB0YWdgIG9uIGFuIFVud3JhcHBlZEJ1aWxkZXInKTtcbiAgICB9XG4gICAgY29tcGlsZSgpIHtcbiAgICAgICAgbGV0IHsgZW52LCBsYXlvdXQgfSA9IHRoaXM7XG4gICAgICAgIHJldHVybiBsYXlvdXQuYXNMYXlvdXQodGhpcy5hdHRyc1snYnVmZmVyJ10pLmNvbXBpbGVEeW5hbWljKGVudik7XG4gICAgfVxufVxuY2xhc3MgQ29tcG9uZW50VGFnQnVpbGRlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuaXNEeW5hbWljID0gbnVsbDtcbiAgICAgICAgdGhpcy5pc1N0YXRpYyA9IG51bGw7XG4gICAgICAgIHRoaXMuc3RhdGljVGFnTmFtZSA9IG51bGw7XG4gICAgICAgIHRoaXMuZHluYW1pY1RhZ05hbWUgPSBudWxsO1xuICAgIH1cbiAgICBnZXREeW5hbWljKCkge1xuICAgICAgICBpZiAodGhpcy5pc0R5bmFtaWMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmR5bmFtaWNUYWdOYW1lO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldFN0YXRpYygpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNTdGF0aWMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0YXRpY1RhZ05hbWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc3RhdGljKHRhZ05hbWUpIHtcbiAgICAgICAgdGhpcy5pc1N0YXRpYyA9IHRydWU7XG4gICAgICAgIHRoaXMuc3RhdGljVGFnTmFtZSA9IHRhZ05hbWU7XG4gICAgfVxuICAgIGR5bmFtaWModGFnTmFtZSkge1xuICAgICAgICB0aGlzLmlzRHluYW1pYyA9IHRydWU7XG4gICAgICAgIHRoaXMuZHluYW1pY1RhZ05hbWUgPSBbT3BzLkNsaWVudFNpZGVFeHByZXNzaW9uLCBDbGllbnRTaWRlLk9wcy5GdW5jdGlvbkV4cHJlc3Npb24sIHRhZ05hbWVdO1xuICAgIH1cbn1cbmNsYXNzIENvbXBvbmVudEF0dHJzQnVpbGRlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuYnVmZmVyID0gW107XG4gICAgfVxuICAgIHN0YXRpYyhuYW1lLCB2YWx1ZSkge1xuICAgICAgICB0aGlzLmJ1ZmZlci5wdXNoKFtPcHMuU3RhdGljQXR0ciwgbmFtZSwgdmFsdWUsIG51bGxdKTtcbiAgICB9XG4gICAgZHluYW1pYyhuYW1lLCB2YWx1ZSkge1xuICAgICAgICB0aGlzLmJ1ZmZlci5wdXNoKFtPcHMuRHluYW1pY0F0dHIsIG5hbWUsIFtPcHMuQ2xpZW50U2lkZUV4cHJlc3Npb24sIENsaWVudFNpZGUuT3BzLkZ1bmN0aW9uRXhwcmVzc2lvbiwgdmFsdWVdLCBudWxsXSk7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIENvbXBvbmVudEJ1aWxkZXIge1xuICAgIGNvbnN0cnVjdG9yKGJ1aWxkZXIpIHtcbiAgICAgICAgdGhpcy5idWlsZGVyID0gYnVpbGRlcjtcbiAgICAgICAgdGhpcy5lbnYgPSBidWlsZGVyLmVudjtcbiAgICB9XG4gICAgc3RhdGljKGRlZmluaXRpb24sIGFyZ3MpIHtcbiAgICAgICAgbGV0IFtwYXJhbXMsIGhhc2gsIF9kZWZhdWx0LCBpbnZlcnNlXSA9IGFyZ3M7XG4gICAgICAgIGxldCB7IGJ1aWxkZXIgfSA9IHRoaXM7XG4gICAgICAgIGJ1aWxkZXIucHVzaENvbXBvbmVudE1hbmFnZXIoZGVmaW5pdGlvbik7XG4gICAgICAgIGJ1aWxkZXIuaW52b2tlQ29tcG9uZW50KG51bGwsIHBhcmFtcywgaGFzaCwgX2RlZmF1bHQsIGludmVyc2UpO1xuICAgIH1cbiAgICBkeW5hbWljKGRlZmluaXRpb25BcmdzLCBnZXREZWZpbml0aW9uLCBhcmdzKSB7XG4gICAgICAgIGxldCBbcGFyYW1zLCBoYXNoLCBibG9jaywgaW52ZXJzZV0gPSBhcmdzO1xuICAgICAgICBsZXQgeyBidWlsZGVyIH0gPSB0aGlzO1xuICAgICAgICBpZiAoIWRlZmluaXRpb25BcmdzIHx8IGRlZmluaXRpb25BcmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRHluYW1pYyBzeW50YXggd2l0aG91dCBhbiBhcmd1bWVudFwiKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbWV0YSA9IHRoaXMuYnVpbGRlci5tZXRhLnRlbXBsYXRlTWV0YTtcbiAgICAgICAgZnVuY3Rpb24gaGVscGVyKHZtLCBhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0RGVmaW5pdGlvbih2bSwgYXJncywgbWV0YSk7XG4gICAgICAgIH1cbiAgICAgICAgYnVpbGRlci5zdGFydExhYmVscygpO1xuICAgICAgICBidWlsZGVyLnB1c2hGcmFtZSgpO1xuICAgICAgICBidWlsZGVyLnJldHVyblRvKCdFTkQnKTtcbiAgICAgICAgYnVpbGRlci5jb21waWxlQXJncyhkZWZpbml0aW9uQXJnc1swXSwgZGVmaW5pdGlvbkFyZ3NbMV0sIHRydWUpO1xuICAgICAgICBidWlsZGVyLmhlbHBlcihoZWxwZXIpO1xuICAgICAgICBidWlsZGVyLmR1cCgpO1xuICAgICAgICBidWlsZGVyLnRlc3QoJ3NpbXBsZScpO1xuICAgICAgICBidWlsZGVyLmVudGVyKDIpO1xuICAgICAgICBidWlsZGVyLmp1bXBVbmxlc3MoJ0VMU0UnKTtcbiAgICAgICAgYnVpbGRlci5wdXNoRHluYW1pY0NvbXBvbmVudE1hbmFnZXIoKTtcbiAgICAgICAgYnVpbGRlci5pbnZva2VDb21wb25lbnQobnVsbCwgcGFyYW1zLCBoYXNoLCBibG9jaywgaW52ZXJzZSk7XG4gICAgICAgIGJ1aWxkZXIubGFiZWwoJ0VMU0UnKTtcbiAgICAgICAgYnVpbGRlci5leGl0KCk7XG4gICAgICAgIGJ1aWxkZXIucmV0dXJuKCk7XG4gICAgICAgIGJ1aWxkZXIubGFiZWwoJ0VORCcpO1xuICAgICAgICBidWlsZGVyLnBvcEZyYW1lKCk7XG4gICAgICAgIGJ1aWxkZXIuc3RvcExhYmVscygpO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBidWlsZGVyKGVudiwgbWV0YSkge1xuICAgIHJldHVybiBuZXcgT3Bjb2RlQnVpbGRlckRTTChlbnYsIG1ldGEpO1xufSJdfQ==

@@ -50,9 +50,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

Constants.prototype.getNames = function getNames(value) {
var _names = [];
var names = this.getArray(value);
for (var i = 0; i < names.length; i++) {
var n = names[i];
_names[i] = this.getString(n);
}
return _names;
var _this = this;
return this.getArray(value).map(function (n) {
return _this.getString(n);
});
};

@@ -100,2 +98,2 @@

export { Constants };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9lbnZpcm9ubWVudC9jb25zdGFudHMuanMiXSwibmFtZXMiOlsiTlVMTF9SRUZFUkVOQ0UiLCJVTkRFRklORURfUkVGRVJFTkNFIiwiQ29uc3RhbnRzIiwicmVmZXJlbmNlcyIsInN0cmluZ3MiLCJleHByZXNzaW9ucyIsImFycmF5cyIsImJsb2NrcyIsImZ1bmN0aW9ucyIsIm90aGVycyIsInJlZmVyZW5jZSIsImdldFJlZmVyZW5jZSIsInZhbHVlIiwiaW5kZXgiLCJsZW5ndGgiLCJwdXNoIiwiZ2V0U3RyaW5nIiwic3RyaW5nIiwiZ2V0RXhwcmVzc2lvbiIsImdldEFycmF5IiwiZ2V0TmFtZXMiLCJfbmFtZXMiLCJuYW1lcyIsImkiLCJuIiwiYXJyYXkiLCJ2YWx1ZXMiLCJnZXRCbG9jayIsImJsb2NrIiwiZ2V0RnVuY3Rpb24iLCJmdW5jdGlvbiIsImYiLCJnZXRPdGhlciIsIm90aGVyIl0sIm1hcHBpbmdzIjoiOztBQUFBLFNBQVNBLGNBQVQsRUFBeUJDLG1CQUF6QixRQUFvRCxlQUFwRDs7SUFDYUMsUztBQUNULHlCQUFjO0FBQUE7O0FBQ1Y7QUFDQSxhQUFLQyxVQUFMLEdBQWtCLEVBQWxCO0FBQ0EsYUFBS0MsT0FBTCxHQUFlLEVBQWY7QUFDQSxhQUFLQyxXQUFMLEdBQW1CLEVBQW5CO0FBQ0EsYUFBS0MsTUFBTCxHQUFjLEVBQWQ7QUFDQSxhQUFLQyxNQUFMLEdBQWMsRUFBZDtBQUNBLGFBQUtDLFNBQUwsR0FBaUIsRUFBakI7QUFDQSxhQUFLQyxNQUFMLEdBQWMsRUFBZDtBQUNBLGFBQUtULGNBQUwsR0FBc0IsS0FBS1UsU0FBTCxDQUFlVixjQUFmLENBQXRCO0FBQ0EsYUFBS0MsbUJBQUwsR0FBMkIsS0FBS1MsU0FBTCxDQUFlVCxtQkFBZixDQUEzQjtBQUNIOzt3QkFDRFUsWSx5QkFBYUMsSyxFQUFPO0FBQ2hCLGVBQU8sS0FBS1QsVUFBTCxDQUFnQlMsUUFBUSxDQUF4QixDQUFQO0FBQ0gsSzs7d0JBQ0RGLFMsc0JBQVVFLEssRUFBTztBQUNiLFlBQUlDLFFBQVEsS0FBS1YsVUFBTCxDQUFnQlcsTUFBNUI7QUFDQSxhQUFLWCxVQUFMLENBQWdCWSxJQUFoQixDQUFxQkgsS0FBckI7QUFDQSxlQUFPQyxRQUFRLENBQWY7QUFDSCxLOzt3QkFDREcsUyxzQkFBVUosSyxFQUFPO0FBQ2IsZUFBTyxLQUFLUixPQUFMLENBQWFRLFFBQVEsQ0FBckIsQ0FBUDtBQUNILEs7O3dCQUNESyxNLG1CQUFPTCxLLEVBQU87QUFDVixZQUFJQyxRQUFRLEtBQUtULE9BQUwsQ0FBYVUsTUFBekI7QUFDQSxhQUFLVixPQUFMLENBQWFXLElBQWIsQ0FBa0JILEtBQWxCO0FBQ0EsZUFBT0MsUUFBUSxDQUFmO0FBQ0gsSzs7d0JBQ0RLLGEsMEJBQWNOLEssRUFBTztBQUNqQixlQUFPLEtBQUtQLFdBQUwsQ0FBaUJPLFFBQVEsQ0FBekIsQ0FBUDtBQUNILEs7O3dCQUNETyxRLHFCQUFTUCxLLEVBQU87QUFDWixlQUFPLEtBQUtOLE1BQUwsQ0FBWU0sUUFBUSxDQUFwQixDQUFQO0FBQ0gsSzs7d0JBQ0RRLFEscUJBQVNSLEssRUFBTztBQUNaLFlBQUlTLFNBQVMsRUFBYjtBQUNBLFlBQUlDLFFBQVEsS0FBS0gsUUFBTCxDQUFjUCxLQUFkLENBQVo7QUFDQSxhQUFLLElBQUlXLElBQUksQ0FBYixFQUFnQkEsSUFBSUQsTUFBTVIsTUFBMUIsRUFBa0NTLEdBQWxDLEVBQXVDO0FBQ25DLGdCQUFJQyxJQUFJRixNQUFNQyxDQUFOLENBQVI7QUFDQUYsbUJBQU9FLENBQVAsSUFBWSxLQUFLUCxTQUFMLENBQWVRLENBQWYsQ0FBWjtBQUNIO0FBQ0QsZUFBT0gsTUFBUDtBQUNILEs7O3dCQUNESSxLLGtCQUFNQyxNLEVBQVE7QUFDVixZQUFJYixRQUFRLEtBQUtQLE1BQUwsQ0FBWVEsTUFBeEI7QUFDQSxhQUFLUixNQUFMLENBQVlTLElBQVosQ0FBaUJXLE1BQWpCO0FBQ0EsZUFBT2IsUUFBUSxDQUFmO0FBQ0gsSzs7d0JBQ0RjLFEscUJBQVNmLEssRUFBTztBQUNaLGVBQU8sS0FBS0wsTUFBTCxDQUFZSyxRQUFRLENBQXBCLENBQVA7QUFDSCxLOzt3QkFDRGdCLEssa0JBQU1BLE0sRUFBTztBQUNULFlBQUlmLFFBQVEsS0FBS04sTUFBTCxDQUFZTyxNQUF4QjtBQUNBLGFBQUtQLE1BQUwsQ0FBWVEsSUFBWixDQUFpQmEsTUFBakI7QUFDQSxlQUFPZixRQUFRLENBQWY7QUFDSCxLOzt3QkFDRGdCLFcsd0JBQVlqQixLLEVBQU87QUFDZixlQUFPLEtBQUtKLFNBQUwsQ0FBZUksUUFBUSxDQUF2QixDQUFQO0FBQ0gsSzs7d0JBQ0RrQixRLHNCQUFTQyxDLEVBQUc7QUFDUixZQUFJbEIsUUFBUSxLQUFLTCxTQUFMLENBQWVNLE1BQTNCO0FBQ0EsYUFBS04sU0FBTCxDQUFlTyxJQUFmLENBQW9CZ0IsQ0FBcEI7QUFDQSxlQUFPbEIsUUFBUSxDQUFmO0FBQ0gsSzs7d0JBQ0RtQixRLHFCQUFTcEIsSyxFQUFPO0FBQ1osZUFBTyxLQUFLSCxNQUFMLENBQVlHLFFBQVEsQ0FBcEIsQ0FBUDtBQUNILEs7O3dCQUNEcUIsSyxrQkFBTUEsTSxFQUFPO0FBQ1QsWUFBSXBCLFFBQVEsS0FBS0osTUFBTCxDQUFZSyxNQUF4QjtBQUNBLGFBQUtMLE1BQUwsQ0FBWU0sSUFBWixDQUFpQmtCLE1BQWpCO0FBQ0EsZUFBT3BCLFFBQVEsQ0FBZjtBQUNILEsiLCJmaWxlIjoibGliL2Vudmlyb25tZW50L2NvbnN0YW50cy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5VTExfUkVGRVJFTkNFLCBVTkRFRklORURfUkVGRVJFTkNFIH0gZnJvbSAnLi4vcmVmZXJlbmNlcyc7XG5leHBvcnQgY2xhc3MgQ29uc3RhbnRzIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgLy8gYDBgIG1lYW5zIE5VTExcbiAgICAgICAgdGhpcy5yZWZlcmVuY2VzID0gW107XG4gICAgICAgIHRoaXMuc3RyaW5ncyA9IFtdO1xuICAgICAgICB0aGlzLmV4cHJlc3Npb25zID0gW107XG4gICAgICAgIHRoaXMuYXJyYXlzID0gW107XG4gICAgICAgIHRoaXMuYmxvY2tzID0gW107XG4gICAgICAgIHRoaXMuZnVuY3Rpb25zID0gW107XG4gICAgICAgIHRoaXMub3RoZXJzID0gW107XG4gICAgICAgIHRoaXMuTlVMTF9SRUZFUkVOQ0UgPSB0aGlzLnJlZmVyZW5jZShOVUxMX1JFRkVSRU5DRSk7XG4gICAgICAgIHRoaXMuVU5ERUZJTkVEX1JFRkVSRU5DRSA9IHRoaXMucmVmZXJlbmNlKFVOREVGSU5FRF9SRUZFUkVOQ0UpO1xuICAgIH1cbiAgICBnZXRSZWZlcmVuY2UodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlc1t2YWx1ZSAtIDFdO1xuICAgIH1cbiAgICByZWZlcmVuY2UodmFsdWUpIHtcbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5yZWZlcmVuY2VzLmxlbmd0aDtcbiAgICAgICAgdGhpcy5yZWZlcmVuY2VzLnB1c2godmFsdWUpO1xuICAgICAgICByZXR1cm4gaW5kZXggKyAxO1xuICAgIH1cbiAgICBnZXRTdHJpbmcodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RyaW5nc1t2YWx1ZSAtIDFdO1xuICAgIH1cbiAgICBzdHJpbmcodmFsdWUpIHtcbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5zdHJpbmdzLmxlbmd0aDtcbiAgICAgICAgdGhpcy5zdHJpbmdzLnB1c2godmFsdWUpO1xuICAgICAgICByZXR1cm4gaW5kZXggKyAxO1xuICAgIH1cbiAgICBnZXRFeHByZXNzaW9uKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmV4cHJlc3Npb25zW3ZhbHVlIC0gMV07XG4gICAgfVxuICAgIGdldEFycmF5KHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFycmF5c1t2YWx1ZSAtIDFdO1xuICAgIH1cbiAgICBnZXROYW1lcyh2YWx1ZSkge1xuICAgICAgICBsZXQgX25hbWVzID0gW107XG4gICAgICAgIGxldCBuYW1lcyA9IHRoaXMuZ2V0QXJyYXkodmFsdWUpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgbiA9IG5hbWVzW2ldO1xuICAgICAgICAgICAgX25hbWVzW2ldID0gdGhpcy5nZXRTdHJpbmcobik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIF9uYW1lcztcbiAgICB9XG4gICAgYXJyYXkodmFsdWVzKSB7XG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMuYXJyYXlzLmxlbmd0aDtcbiAgICAgICAgdGhpcy5hcnJheXMucHVzaCh2YWx1ZXMpO1xuICAgICAgICByZXR1cm4gaW5kZXggKyAxO1xuICAgIH1cbiAgICBnZXRCbG9jayh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5ibG9ja3NbdmFsdWUgLSAxXTtcbiAgICB9XG4gICAgYmxvY2soYmxvY2spIHtcbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5ibG9ja3MubGVuZ3RoO1xuICAgICAgICB0aGlzLmJsb2Nrcy5wdXNoKGJsb2NrKTtcbiAgICAgICAgcmV0dXJuIGluZGV4ICsgMTtcbiAgICB9XG4gICAgZ2V0RnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZnVuY3Rpb25zW3ZhbHVlIC0gMV07XG4gICAgfVxuICAgIGZ1bmN0aW9uKGYpIHtcbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5mdW5jdGlvbnMubGVuZ3RoO1xuICAgICAgICB0aGlzLmZ1bmN0aW9ucy5wdXNoKGYpO1xuICAgICAgICByZXR1cm4gaW5kZXggKyAxO1xuICAgIH1cbiAgICBnZXRPdGhlcih2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vdGhlcnNbdmFsdWUgLSAxXTtcbiAgICB9XG4gICAgb3RoZXIob3RoZXIpIHtcbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5vdGhlcnMubGVuZ3RoO1xuICAgICAgICB0aGlzLm90aGVycy5wdXNoKG90aGVyKTtcbiAgICAgICAgcmV0dXJuIGluZGV4ICsgMTtcbiAgICB9XG59Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9lbnZpcm9ubWVudC9jb25zdGFudHMuanMiXSwibmFtZXMiOlsiTlVMTF9SRUZFUkVOQ0UiLCJVTkRFRklORURfUkVGRVJFTkNFIiwiQ29uc3RhbnRzIiwicmVmZXJlbmNlcyIsInN0cmluZ3MiLCJleHByZXNzaW9ucyIsImFycmF5cyIsImJsb2NrcyIsImZ1bmN0aW9ucyIsIm90aGVycyIsInJlZmVyZW5jZSIsImdldFJlZmVyZW5jZSIsInZhbHVlIiwiaW5kZXgiLCJsZW5ndGgiLCJwdXNoIiwiZ2V0U3RyaW5nIiwic3RyaW5nIiwiZ2V0RXhwcmVzc2lvbiIsImdldEFycmF5IiwiZ2V0TmFtZXMiLCJtYXAiLCJuIiwiYXJyYXkiLCJ2YWx1ZXMiLCJnZXRCbG9jayIsImJsb2NrIiwiZ2V0RnVuY3Rpb24iLCJmdW5jdGlvbiIsImYiLCJnZXRPdGhlciIsIm90aGVyIl0sIm1hcHBpbmdzIjoiOztBQUFBLFNBQVNBLGNBQVQsRUFBeUJDLG1CQUF6QixRQUFvRCxlQUFwRDs7SUFDYUMsUztBQUNULHlCQUFjO0FBQUE7O0FBQ1Y7QUFDQSxhQUFLQyxVQUFMLEdBQWtCLEVBQWxCO0FBQ0EsYUFBS0MsT0FBTCxHQUFlLEVBQWY7QUFDQSxhQUFLQyxXQUFMLEdBQW1CLEVBQW5CO0FBQ0EsYUFBS0MsTUFBTCxHQUFjLEVBQWQ7QUFDQSxhQUFLQyxNQUFMLEdBQWMsRUFBZDtBQUNBLGFBQUtDLFNBQUwsR0FBaUIsRUFBakI7QUFDQSxhQUFLQyxNQUFMLEdBQWMsRUFBZDtBQUNBLGFBQUtULGNBQUwsR0FBc0IsS0FBS1UsU0FBTCxDQUFlVixjQUFmLENBQXRCO0FBQ0EsYUFBS0MsbUJBQUwsR0FBMkIsS0FBS1MsU0FBTCxDQUFlVCxtQkFBZixDQUEzQjtBQUNIOzt3QkFDRFUsWSx5QkFBYUMsSyxFQUFPO0FBQ2hCLGVBQU8sS0FBS1QsVUFBTCxDQUFnQlMsUUFBUSxDQUF4QixDQUFQO0FBQ0gsSzs7d0JBQ0RGLFMsc0JBQVVFLEssRUFBTztBQUNiLFlBQUlDLFFBQVEsS0FBS1YsVUFBTCxDQUFnQlcsTUFBNUI7QUFDQSxhQUFLWCxVQUFMLENBQWdCWSxJQUFoQixDQUFxQkgsS0FBckI7QUFDQSxlQUFPQyxRQUFRLENBQWY7QUFDSCxLOzt3QkFDREcsUyxzQkFBVUosSyxFQUFPO0FBQ2IsZUFBTyxLQUFLUixPQUFMLENBQWFRLFFBQVEsQ0FBckIsQ0FBUDtBQUNILEs7O3dCQUNESyxNLG1CQUFPTCxLLEVBQU87QUFDVixZQUFJQyxRQUFRLEtBQUtULE9BQUwsQ0FBYVUsTUFBekI7QUFDQSxhQUFLVixPQUFMLENBQWFXLElBQWIsQ0FBa0JILEtBQWxCO0FBQ0EsZUFBT0MsUUFBUSxDQUFmO0FBQ0gsSzs7d0JBQ0RLLGEsMEJBQWNOLEssRUFBTztBQUNqQixlQUFPLEtBQUtQLFdBQUwsQ0FBaUJPLFFBQVEsQ0FBekIsQ0FBUDtBQUNILEs7O3dCQUNETyxRLHFCQUFTUCxLLEVBQU87QUFDWixlQUFPLEtBQUtOLE1BQUwsQ0FBWU0sUUFBUSxDQUFwQixDQUFQO0FBQ0gsSzs7d0JBQ0RRLFEscUJBQVNSLEssRUFBTztBQUFBOztBQUNaLGVBQU8sS0FBS08sUUFBTCxDQUFjUCxLQUFkLEVBQXFCUyxHQUFyQixDQUF5QjtBQUFBLG1CQUFLLE1BQUtMLFNBQUwsQ0FBZU0sQ0FBZixDQUFMO0FBQUEsU0FBekIsQ0FBUDtBQUNILEs7O3dCQUNEQyxLLGtCQUFNQyxNLEVBQVE7QUFDVixZQUFJWCxRQUFRLEtBQUtQLE1BQUwsQ0FBWVEsTUFBeEI7QUFDQSxhQUFLUixNQUFMLENBQVlTLElBQVosQ0FBaUJTLE1BQWpCO0FBQ0EsZUFBT1gsUUFBUSxDQUFmO0FBQ0gsSzs7d0JBQ0RZLFEscUJBQVNiLEssRUFBTztBQUNaLGVBQU8sS0FBS0wsTUFBTCxDQUFZSyxRQUFRLENBQXBCLENBQVA7QUFDSCxLOzt3QkFDRGMsSyxrQkFBTUEsTSxFQUFPO0FBQ1QsWUFBSWIsUUFBUSxLQUFLTixNQUFMLENBQVlPLE1BQXhCO0FBQ0EsYUFBS1AsTUFBTCxDQUFZUSxJQUFaLENBQWlCVyxNQUFqQjtBQUNBLGVBQU9iLFFBQVEsQ0FBZjtBQUNILEs7O3dCQUNEYyxXLHdCQUFZZixLLEVBQU87QUFDZixlQUFPLEtBQUtKLFNBQUwsQ0FBZUksUUFBUSxDQUF2QixDQUFQO0FBQ0gsSzs7d0JBQ0RnQixRLHNCQUFTQyxDLEVBQUc7QUFDUixZQUFJaEIsUUFBUSxLQUFLTCxTQUFMLENBQWVNLE1BQTNCO0FBQ0EsYUFBS04sU0FBTCxDQUFlTyxJQUFmLENBQW9CYyxDQUFwQjtBQUNBLGVBQU9oQixRQUFRLENBQWY7QUFDSCxLOzt3QkFDRGlCLFEscUJBQVNsQixLLEVBQU87QUFDWixlQUFPLEtBQUtILE1BQUwsQ0FBWUcsUUFBUSxDQUFwQixDQUFQO0FBQ0gsSzs7d0JBQ0RtQixLLGtCQUFNQSxNLEVBQU87QUFDVCxZQUFJbEIsUUFBUSxLQUFLSixNQUFMLENBQVlLLE1BQXhCO0FBQ0EsYUFBS0wsTUFBTCxDQUFZTSxJQUFaLENBQWlCZ0IsTUFBakI7QUFDQSxlQUFPbEIsUUFBUSxDQUFmO0FBQ0gsSyIsImZpbGUiOiJsaWIvZW52aXJvbm1lbnQvY29uc3RhbnRzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTlVMTF9SRUZFUkVOQ0UsIFVOREVGSU5FRF9SRUZFUkVOQ0UgfSBmcm9tICcuLi9yZWZlcmVuY2VzJztcbmV4cG9ydCBjbGFzcyBDb25zdGFudHMge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAvLyBgMGAgbWVhbnMgTlVMTFxuICAgICAgICB0aGlzLnJlZmVyZW5jZXMgPSBbXTtcbiAgICAgICAgdGhpcy5zdHJpbmdzID0gW107XG4gICAgICAgIHRoaXMuZXhwcmVzc2lvbnMgPSBbXTtcbiAgICAgICAgdGhpcy5hcnJheXMgPSBbXTtcbiAgICAgICAgdGhpcy5ibG9ja3MgPSBbXTtcbiAgICAgICAgdGhpcy5mdW5jdGlvbnMgPSBbXTtcbiAgICAgICAgdGhpcy5vdGhlcnMgPSBbXTtcbiAgICAgICAgdGhpcy5OVUxMX1JFRkVSRU5DRSA9IHRoaXMucmVmZXJlbmNlKE5VTExfUkVGRVJFTkNFKTtcbiAgICAgICAgdGhpcy5VTkRFRklORURfUkVGRVJFTkNFID0gdGhpcy5yZWZlcmVuY2UoVU5ERUZJTkVEX1JFRkVSRU5DRSk7XG4gICAgfVxuICAgIGdldFJlZmVyZW5jZSh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2VzW3ZhbHVlIC0gMV07XG4gICAgfVxuICAgIHJlZmVyZW5jZSh2YWx1ZSkge1xuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLnJlZmVyZW5jZXMubGVuZ3RoO1xuICAgICAgICB0aGlzLnJlZmVyZW5jZXMucHVzaCh2YWx1ZSk7XG4gICAgICAgIHJldHVybiBpbmRleCArIDE7XG4gICAgfVxuICAgIGdldFN0cmluZyh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdHJpbmdzW3ZhbHVlIC0gMV07XG4gICAgfVxuICAgIHN0cmluZyh2YWx1ZSkge1xuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLnN0cmluZ3MubGVuZ3RoO1xuICAgICAgICB0aGlzLnN0cmluZ3MucHVzaCh2YWx1ZSk7XG4gICAgICAgIHJldHVybiBpbmRleCArIDE7XG4gICAgfVxuICAgIGdldEV4cHJlc3Npb24odmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXhwcmVzc2lvbnNbdmFsdWUgLSAxXTtcbiAgICB9XG4gICAgZ2V0QXJyYXkodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXJyYXlzW3ZhbHVlIC0gMV07XG4gICAgfVxuICAgIGdldE5hbWVzKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEFycmF5KHZhbHVlKS5tYXAobiA9PiB0aGlzLmdldFN0cmluZyhuKSk7XG4gICAgfVxuICAgIGFycmF5KHZhbHVlcykge1xuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLmFycmF5cy5sZW5ndGg7XG4gICAgICAgIHRoaXMuYXJyYXlzLnB1c2godmFsdWVzKTtcbiAgICAgICAgcmV0dXJuIGluZGV4ICsgMTtcbiAgICB9XG4gICAgZ2V0QmxvY2sodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmxvY2tzW3ZhbHVlIC0gMV07XG4gICAgfVxuICAgIGJsb2NrKGJsb2NrKSB7XG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMuYmxvY2tzLmxlbmd0aDtcbiAgICAgICAgdGhpcy5ibG9ja3MucHVzaChibG9jayk7XG4gICAgICAgIHJldHVybiBpbmRleCArIDE7XG4gICAgfVxuICAgIGdldEZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZ1bmN0aW9uc1t2YWx1ZSAtIDFdO1xuICAgIH1cbiAgICBmdW5jdGlvbihmKSB7XG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMuZnVuY3Rpb25zLmxlbmd0aDtcbiAgICAgICAgdGhpcy5mdW5jdGlvbnMucHVzaChmKTtcbiAgICAgICAgcmV0dXJuIGluZGV4ICsgMTtcbiAgICB9XG4gICAgZ2V0T3RoZXIodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3RoZXJzW3ZhbHVlIC0gMV07XG4gICAgfVxuICAgIG90aGVyKG90aGVyKSB7XG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMub3RoZXJzLmxlbmd0aDtcbiAgICAgICAgdGhpcy5vdGhlcnMucHVzaChvdGhlcik7XG4gICAgICAgIHJldHVybiBpbmRleCArIDE7XG4gICAgfVxufSJdfQ==

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

if (!false && false) {
/* tslint:disable:no-console */
var program = env.program,

@@ -64,3 +63,2 @@ constants = env.constants;

console.groupEnd();
/* tslint:enable:no-console */
}

@@ -85,8 +83,6 @@ }

var string = JSON.stringify(param);
if (string === undefined) {
return 'undefined';
}
if (string === undefined) return 'undefined';
var debug = JSON.parse(string);
if (typeof debug === 'object' && debug !== null && debug.GlimmerDebug !== undefined) {
return debug.GlimmerDebug;
if (typeof debug === 'object' && debug && debug['GlimmerDebug']) {
return debug['GlimmerDebug'];
}

@@ -272,3 +268,2 @@ return string;

if (!false && false) {
/* tslint:disable */
var _debug2 = debug(vm.constants, opcode.type, opcode.op1, opcode.op2, opcode.op3),

@@ -280,7 +275,5 @@ name = _debug2[0],

// console.log(...debug(vm.constants, type, opcode.op1, opcode.op2, opcode.op3));
/* tslint:enable */
}
func(vm, opcode);
if (!false && false) {
/* tslint:disable */
console.log('%c -> pc: %d, ra: %d, fp: %d, sp: %d, s0: %O, s1: %O, t0: %O, t1: %O', 'color: orange', vm['pc'], vm['ra'], vm['fp'], vm['sp'], vm['s0'], vm['s1'], vm['t0'], vm['t1']);

@@ -292,3 +285,2 @@ console.log('%c -> eval stack', 'color: red', vm.stack.toArray());

console.log('%c -> elements', 'color: blue', vm.elements()['elementStack'].toArray());
/* tslint:enable */
}

@@ -367,2 +359,2 @@ };

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9vcGNvZGVzLmpzIl0sIm5hbWVzIjpbImluaXRpYWxpemVHdWlkIiwiZmlsbE51bGxzIiwidW5yZWFjaGFibGUiLCJSZWdpc3RlciIsImRlYnVnU2xpY2UiLCJlbnYiLCJzdGFydCIsImVuZCIsInByb2dyYW0iLCJjb25zdGFudHMiLCJjb25zb2xlIiwiZ3JvdXAiLCJpIiwib3Bjb2RlIiwidHlwZSIsIm9wMSIsIm9wMiIsIm9wMyIsImRlYnVnIiwibmFtZSIsInBhcmFtcyIsImxvZyIsImxvZ09wY29kZSIsImdyb3VwRW5kIiwib3V0IiwiYXJncyIsIk9iamVjdCIsImtleXMiLCJtYXAiLCJwIiwianNvbiIsImpvaW4iLCJwYXJhbSIsInN0cmluZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJ1bmRlZmluZWQiLCJwYXJzZSIsIkdsaW1tZXJEZWJ1ZyIsImMiLCJvcCIsImhlbHBlciIsImdldEZ1bmN0aW9uIiwiZnVuY3Rpb24iLCJzeW1ib2wiLCJrZXkiLCJnZXRTdHJpbmciLCJibG9jayIsImdldEJsb2NrIiwic2l6ZSIsInZhbHVlIiwiZ2V0T3RoZXIiLCJwcmltaXRpdmUiLCJyZWdpc3RlciIsIm9mZnNldCIsImNvdW50Iiwic3ltYm9scyIsImJpbmRDYWxsZXJTY29wZSIsInRleHQiLCJjb21tZW50IiwidGFnIiwibmFtZXNwYWNlIiwidHJ1c3RpbmciLCJucyIsImludm9rZXIiLCJ0byIsImRlZmluaXRpb24iLCJwb3NpdGlvbmFsIiwic3ludGhldGljIiwic3RhdGUiLCJmbGFncyIsImV2YWxJbmZvIiwiZ2V0QXJyYXkiLCJBcHBlbmRPcGNvZGVzIiwiZXZhbHVhdGVPcGNvZGUiLCJzbGljZSIsImFkZCIsImV2YWx1YXRlIiwidm0iLCJmdW5jIiwic3RhY2siLCJ0b0FycmF5Iiwic2NvcGUiLCJzIiwiZWxlbWVudHMiLCJBUFBFTkRfT1BDT0RFUyIsIkFic3RyYWN0T3Bjb2RlIiwidG9KU09OIiwiZ3VpZCIsIl9ndWlkIiwiVXBkYXRpbmdPcGNvZGUiLCJhcmd1bWVudHMiLCJuZXh0IiwicHJldiIsImluc3BlY3QiLCJvcGNvZGVzIiwiYnVmZmVyIiwiZm9yRWFjaCIsIl9pbnNwZWN0IiwibGV2ZWwiLCJpbmRleCIsImluZGVudGF0aW9uIiwicHVzaCIsImRldGFpbHMiLCJsZW5ndGgiLCJjaGlsZHJlbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxTQUFTQSxjQUFULEVBQXlCQyxTQUF6QixFQUFvQ0MsV0FBcEMsUUFBdUQsZUFBdkQ7O0FBRUE7Ozs7OztBQU1BLE9BQU8sSUFBSUMsUUFBSjtBQUNQLENBQUMsVUFBVUEsUUFBVixFQUFvQjtBQUNqQjtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQTtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQTtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQTtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQTtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQUEsYUFBU0EsU0FBUyxJQUFULElBQWlCLENBQTFCLElBQStCLElBQS9CO0FBQ0E7QUFDQUEsYUFBU0EsU0FBUyxJQUFULElBQWlCLENBQTFCLElBQStCLElBQS9CO0FBQ0FBLGFBQVNBLFNBQVMsSUFBVCxJQUFpQixDQUExQixJQUErQixJQUEvQjtBQUNILENBZkQsRUFlR0EsYUFBYUEsV0FBVyxFQUF4QixDQWZIO0FBZ0JBLE9BQU8sU0FBU0MsVUFBVCxDQUFvQkMsR0FBcEIsRUFBeUJDLEtBQXpCLEVBQWdDQyxHQUFoQyxFQUFxQztBQUN4QyxRQUFJLENBQUMsS0FBRCxJQUFVLEtBQWQsRUFBcUI7QUFDakI7QUFEaUIsWUFFWEMsT0FGVyxHQUVZSCxHQUZaLENBRVhHLE9BRlc7QUFBQSxZQUVGQyxTQUZFLEdBRVlKLEdBRlosQ0FFRkks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aEIsQ0FBVCxFQUE2Qm9GLE1BQTdCLEVBQXFDRyxRQUFRLENBQTdDLEVBQWdEdkYsRUFBaEQ7QUFDSDtBQUNKO0FBQ0oiLCJmaWxlIjoibGliL29wY29kZXMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbml0aWFsaXplR3VpZCwgZmlsbE51bGxzLCB1bnJlYWNoYWJsZSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuXG4vKipcbiAqIFJlZ2lzdGVyc1xuICpcbiAqIEZvciB0aGUgbW9zdCBwYXJ0LCB0aGVzZSBmb2xsb3dzIE1JUFMgbmFtaW5nIGNvbnZlbnRpb25zLCBob3dldmVyIHRoZVxuICogcmVnaXN0ZXIgbnVtYmVycyBhcmUgZGlmZmVyZW50LlxuICovXG5leHBvcnQgdmFyIFJlZ2lzdGVyO1xuKGZ1bmN0aW9uIChSZWdpc3Rlcikge1xuICAgIC8vICQwIG9yICRwYyAocHJvZ3JhbSBjb3VudGVyKTogcG9pbnRlciBpbnRvIGBwcm9ncmFtYCBmb3IgdGhlIG5leHQgaW5zdHVyY3Rpb247IC0xIG1lYW5zIGV4aXRcbiAgICBSZWdpc3RlcltSZWdpc3RlcltcInBjXCJdID0gMF0gPSBcInBjXCI7XG4gICAgLy8gJDEgb3IgJHJhIChyZXR1cm4gYWRkcmVzcyk6IHBvaW50ZXIgaW50byBgcHJvZ3JhbWAgZm9yIHRoZSByZXR1cm5cbiAgICBSZWdpc3RlcltSZWdpc3RlcltcInJhXCJdID0gMV0gPSBcInJhXCI7XG4gICAgLy8gJDIgb3IgJGZwIChmcmFtZSBwb2ludGVyKTogcG9pbnRlciBpbnRvIHRoZSBgZXZhbFN0YWNrYCBmb3IgdGhlIGJhc2Ugb2YgdGhlIHN0YWNrXG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJmcFwiXSA9IDJdID0gXCJmcFwiO1xuICAgIC8vICQzIG9yICRzcCAoc3RhY2sgcG9pbnRlcik6IHBvaW50ZXIgaW50byB0aGUgYGV2YWxTdGFja2AgZm9yIHRoZSB0b3Agb2YgdGhlIHN0YWNrXG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJzcFwiXSA9IDNdID0gXCJzcFwiO1xuICAgIC8vICQ0LSQ1IG9yICRzMC0kczEgKHNhdmVkKTogY2FsbGVlIHNhdmVkIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnNcbiAgICBSZWdpc3RlcltSZWdpc3RlcltcInMwXCJdID0gNF0gPSBcInMwXCI7XG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJzMVwiXSA9IDVdID0gXCJzMVwiO1xuICAgIC8vICQ2LSQ3IG9yICR0MC0kdDEgKHRlbXBvcmFyaWVzKTogY2FsbGVyIHNhdmVkIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnNcbiAgICBSZWdpc3RlcltSZWdpc3RlcltcInQwXCJdID0gNl0gPSBcInQwXCI7XG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJ0MVwiXSA9IDddID0gXCJ0MVwiO1xufSkoUmVnaXN0ZXIgfHwgKFJlZ2lzdGVyID0ge30pKTtcbmV4cG9ydCBmdW5jdGlvbiBkZWJ1Z1NsaWNlKGVudiwgc3RhcnQsIGVuZCkge1xuICAgIGlmICghZmFsc2UgJiYgZmFsc2UpIHtcbiAgICAgICAgLyogdHNsaW50OmRpc2FibGU6bm8tY29uc29sZSAqL1xuICAgICAgICBsZXQgeyBwcm9ncmFtLCBjb25zdGFudHMgfSA9IGVudjtcbiAgICAgICAgLy8gY29uc29sZSBpcyBub3QgYXZhaWxhYmxlIGluIElFOVxuICAgICAgICBpZiAodHlwZW9mIGNvbnNvbGUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gSUUxMCBkb2VzIG5vdCBoYXZlIGBjb25zb2xlLmdyb3VwYFxuICAgICAgICBpZiAodHlwZW9mIGNvbnNvbGUuZ3JvdXAgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmdyb3VwKGAlYyR7c3RhcnR9OiR7ZW5kfWAsICdjb2xvcjogIzk5OScpO1xuICAgICAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPD0gZW5kOyBpICs9IDQpIHtcbiAgICAgICAgICAgIGxldCB7IHR5cGUsIG9wMSwgb3AyLCBvcDMgfSA9IHByb2dyYW0ub3Bjb2RlKGkpO1xuICAgICAgICAgICAgbGV0IFtuYW1lLCBwYXJhbXNdID0gZGVidWcoY29uc3RhbnRzLCB0eXBlLCBvcDEsIG9wMiwgb3AzKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGAke2l9LiAke2xvZ09wY29kZShuYW1lLCBwYXJhbXMpfWApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUuZ3JvdXBFbmQoKTtcbiAgICAgICAgLyogdHNsaW50OmVuYWJsZTpuby1jb25zb2xlICovXG4gICAgfVxufVxuZnVuY3Rpb24gbG9nT3Bjb2RlKHR5cGUsIHBhcmFtcykge1xuICAgIGlmICghZmFsc2UgJiYgZmFsc2UpIHtcbiAgICAgICAgbGV0IG91dCA9IHR5cGU7XG4gICAgICAgIGlmIChwYXJhbXMpIHtcbiAgICAgICAgICAgIGxldCBhcmdzID0gT2JqZWN0LmtleXMocGFyYW1zKS5tYXAocCA9PiBgICR7cH09JHtqc29uKHBhcmFtc1twXSl9YCkuam9pbignJyk7XG4gICAgICAgICAgICBvdXQgKz0gYXJncztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYCgke291dH0pYDtcbiAgICB9XG59XG5mdW5jdGlvbiBqc29uKHBhcmFtKSB7XG4gICAgaWYgKHR5cGVvZiBwYXJhbSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gJzxmdW5jdGlvbj4nO1xuICAgIH1cbiAgICBsZXQgc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkocGFyYW0pO1xuICAgIGlmIChzdHJpbmcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gJ3VuZGVmaW5lZCc7XG4gICAgfVxuICAgIGxldCBkZWJ1ZyA9IEpTT04ucGFyc2Uoc3RyaW5nKTtcbiAgICBpZiAodHlwZW9mIGRlYnVnID09PSAnb2JqZWN0JyAmJiBkZWJ1ZyAhPT0gbnVsbCAmJiBkZWJ1Zy5HbGltbWVyRGVidWcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gZGVidWcuR2xpbW1lckRlYnVnO1xuICAgIH1cbiAgICByZXR1cm4gc3RyaW5nO1xufVxuZnVuY3Rpb24gZGVidWcoYywgb3AsIG9wMSwgb3AyLCBvcDMpIHtcbiAgICBpZiAoIWZhbHNlICYmIGZhbHNlKSB7XG4gICAgICAgIHN3aXRjaCAob3ApIHtcbiAgICAgICAgICAgIGNhc2UgMCAvKiBCdWcgKi86XG4gICAgICAgICAgICAgICAgdGhyb3cgdW5yZWFjaGFibGUoKTtcbiAgICAgICAgICAgIGNhc2UgMSAvKiBIZWxwZXIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSGVscGVyJywgeyBoZWxwZXI6IGMuZ2V0RnVuY3Rpb24ob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMiAvKiBGdW5jdGlvbiAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydGdW5jdGlvbicsIHsgZnVuY3Rpb246IGMuZ2V0RnVuY3Rpb24ob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgNCAvKiBTZXRWYXJpYWJsZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydTZXRWYXJpYWJsZScsIHsgc3ltYm9sOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDUgLyogR2V0VmFyaWFibGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnR2V0VmFyaWFibGUnLCB7IHN5bWJvbDogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA2IC8qIEdldFByb3BlcnR5ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0dldFByb3BlcnR5JywgeyBrZXk6IGMuZ2V0U3RyaW5nKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDcgLyogUHVzaEJsb2NrICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1B1c2hCbG9jaycsIHsgYmxvY2s6IGMuZ2V0QmxvY2sob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgOCAvKiBHZXRCbG9jayAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydHZXRCbG9jaycsIHsgc3ltYm9sOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDkgLyogSGFzQmxvY2sgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSGFzQmxvY2snLCB7IGJsb2NrOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDEwIC8qIEhhc0Jsb2NrUGFyYW1zICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0hhc0Jsb2NrUGFyYW1zJywgeyBibG9jazogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSAxMSAvKiBDb25jYXQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ29uY2F0JywgeyBzaXplOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDEyIC8qIEltbWVkaWF0ZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydJbW1lZGlhdGUnLCB7IHZhbHVlOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDEzIC8qIENvbnN0YW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0NvbnN0YW50JywgeyB2YWx1ZTogYy5nZXRPdGhlcihvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSAxNCAvKiBQcmltaXRpdmVSZWZlcmVuY2UgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHJpbWl0aXZlUmVmZXJlbmNlJywgeyBwcmltaXRpdmU6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTUgLyogRHVwICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0R1cCcsIHsgcmVnaXN0ZXI6IFJlZ2lzdGVyW29wMV0sIG9mZnNldDogb3AyIH1dO1xuICAgICAgICAgICAgY2FzZSAxNiAvKiBQb3AgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUG9wJywgeyBjb3VudDogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSAxNyAvKiBMb2FkICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0xvYWQnLCB7IHJlZ2lzdGVyOiBSZWdpc3RlcltvcDFdIH1dO1xuICAgICAgICAgICAgY2FzZSAxOCAvKiBGZXRjaCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydGZXRjaCcsIHsgcmVnaXN0ZXI6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICAvLy8gUFJFTFVERSAmIEVYSVRcbiAgICAgICAgICAgIGNhc2UgMTkgLyogUm9vdFNjb3BlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1Jvb3RTY29wZScsIHsgc3ltYm9sczogb3AxLCBiaW5kQ2FsbGVyU2NvcGU6ICEhb3AyIH1dO1xuICAgICAgICAgICAgY2FzZSAyMCAvKiBDaGlsZFNjb3BlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0NoaWxkU2NvcGUnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDIxIC8qIFBvcFNjb3BlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1BvcFNjb3BlJywge31dO1xuICAgICAgICAgICAgY2FzZSAyMiAvKiBSZXR1cm4gKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUmV0dXJuJywge31dO1xuICAgICAgICAgICAgLy8vIEhUTUxcbiAgICAgICAgICAgIGNhc2UgMjMgLyogVGV4dCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydUZXh0JywgeyB0ZXh0OiBjLmdldFN0cmluZyhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSAyNCAvKiBDb21tZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0NvbW1lbnQnLCB7IGNvbW1lbnQ6IGMuZ2V0U3RyaW5nKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDI1IC8qIER5bmFtaWNDb250ZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0R5bmFtaWNDb250ZW50JywgeyB2YWx1ZTogYy5nZXRPdGhlcihvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSAyNiAvKiBPcGVuRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydPcGVuRWxlbWVudCcsIHsgdGFnOiBjLmdldFN0cmluZyhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSAyNyAvKiBPcGVuRWxlbWVudFdpdGhPcGVyYXRpb25zICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ09wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMnLCB7IHRhZzogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMjggLyogT3BlbkR5bmFtaWNFbGVtZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ09wZW5EeW5hbWljRWxlbWVudCcsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMjkgLyogU3RhdGljQXR0ciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydTdGF0aWNBdHRyJywgeyBuYW1lOiBjLmdldFN0cmluZyhvcDEpLCB2YWx1ZTogYy5nZXRTdHJpbmcob3AyKSwgbmFtZXNwYWNlOiBvcDMgPyBjLmdldFN0cmluZyhvcDMpIDogbnVsbCB9XTtcbiAgICAgICAgICAgIGNhc2UgMzAgLyogRHluYW1pY0F0dHIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRHluYW1pY0F0dHInLCB7IG5hbWU6IGMuZ2V0U3RyaW5nKG9wMSksIHRydXN0aW5nOiAhIW9wMiB9XTtcbiAgICAgICAgICAgIGNhc2UgMzEgLyogRHluYW1pY0F0dHJOUyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEeW5hbWljQXR0ck5TJywgeyBuYW1lOiBjLmdldFN0cmluZyhvcDEpLCBuczogYy5nZXRTdHJpbmcob3AyKSwgdHJ1c3Rpbmc6ICEhb3AyIH1dO1xuICAgICAgICAgICAgY2FzZSAzMiAvKiBGbHVzaEVsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRmx1c2hFbGVtZW50Jywge31dO1xuICAgICAgICAgICAgY2FzZSAzMyAvKiBDbG9zZUVsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ2xvc2VFbGVtZW50Jywge31dO1xuICAgICAgICAgICAgLy8vIE1PRElGSUVSXG4gICAgICAgICAgICBjYXNlIDM0IC8qIE1vZGlmaWVyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ01vZGlmaWVyJywge31dO1xuICAgICAgICAgICAgLy8vIFdPUk1IT0xFXG4gICAgICAgICAgICBjYXNlIDM1IC8qIFB1c2hSZW1vdGVFbGVtZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1B1c2hSZW1vdGVFbGVtZW50Jywge31dO1xuICAgICAgICAgICAgY2FzZSAzNiAvKiBQb3BSZW1vdGVFbGVtZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1BvcFJlbW90ZUVsZW1lbnQnLCB7fV07XG4gICAgICAgICAgICAvLy8gRFlOQU1JQyBTQ09QRVxuICAgICAgICAgICAgY2FzZSAzNyAvKiBCaW5kRHluYW1pY1Njb3BlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0JpbmREeW5hbWljU2NvcGUnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDM4IC8qIFB1c2hEeW5hbWljU2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaER5bmFtaWNTY29wZScsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMzkgLyogUG9wRHluYW1pY1Njb3BlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1BvcER5bmFtaWNTY29wZScsIHt9XTtcbiAgICAgICAgICAgIC8vLyBWTVxuICAgICAgICAgICAgY2FzZSA0MCAvKiBDb21waWxlRHluYW1pY0Jsb2NrICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0NvbXBpbGVEeW5hbWljQmxvY2snLCB7fV07XG4gICAgICAgICAgICBjYXNlIDQxIC8qIEludm9rZVN0YXRpYyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydJbnZva2VTdGF0aWMnLCB7IGJsb2NrOiBjLmdldEJsb2NrKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDQyIC8qIEludm9rZUR5bmFtaWMgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSW52b2tlRHluYW1pYycsIHsgaW52b2tlcjogYy5nZXRPdGhlcihvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA0MyAvKiBKdW1wICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0p1bXAnLCB7IHRvOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDQ0IC8qIEp1bXBJZiAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydKdW1wSWYnLCB7IHRvOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDQ1IC8qIEp1bXBVbmxlc3MgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSnVtcFVubGVzcycsIHsgdG86IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDYgLyogUHVzaEZyYW1lICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1B1c2hGcmFtZScsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNDcgLyogUG9wRnJhbWUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUG9wRnJhbWUnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDQ4IC8qIEVudGVyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0VudGVyJywgeyBhcmdzOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDQ5IC8qIEV4aXQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRXhpdCcsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNTAgLyogVGVzdCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydUb0Jvb2xlYW4nLCB7fV07XG4gICAgICAgICAgICAvLy8gTElTVFNcbiAgICAgICAgICAgIGNhc2UgNTEgLyogRW50ZXJMaXN0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0VudGVyTGlzdCcsIHsgc3RhcnQ6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNTIgLyogRXhpdExpc3QgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRXhpdExpc3QnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDUzIC8qIFB1dEl0ZXJhdG9yICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1B1dEl0ZXJhdG9yJywge31dO1xuICAgICAgICAgICAgY2FzZSA1NCAvKiBJdGVyYXRlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0l0ZXJhdGUnLCB7IGVuZDogb3AxIH1dO1xuICAgICAgICAgICAgLy8vIENPTVBPTkVOVFNcbiAgICAgICAgICAgIGNhc2UgNTUgLyogUHVzaENvbXBvbmVudE1hbmFnZXIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaENvbXBvbmVudE1hbmFnZXInLCB7IGRlZmluaXRpb246IGMuZ2V0T3RoZXIob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgNTYgLyogUHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1B1c2hEeW5hbWljQ29tcG9uZW50TWFuYWdlcicsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNTcgLyogSW5pdGlhbGl6ZUNvbXBvbmVudFN0YXRlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0luaXRpYWxpemVDb21wb25lbnRTdGF0ZScsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNTggLyogUHVzaEFyZ3MgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaEFyZ3MnLCB7IHBvc2l0aW9uYWw6IG9wMSwgc3ludGhldGljOiAhIW9wMiB9XTtcbiAgICAgICAgICAgIGNhc2UgNTkgLyogUHJlcGFyZUFyZ3MgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHJlcGFyZUFyZ3MnLCB7IHN0YXRlOiBSZWdpc3RlcltvcDFdIH1dO1xuICAgICAgICAgICAgY2FzZSA2MCAvKiBDcmVhdGVDb21wb25lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ3JlYXRlQ29tcG9uZW50JywgeyBmbGFnczogb3AxLCBzdGF0ZTogUmVnaXN0ZXJbb3AyXSB9XTtcbiAgICAgICAgICAgIGNhc2UgNjEgLyogUmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1JlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvcicsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNjIgLyogUHVzaENvbXBvbmVudE9wZXJhdGlvbnMgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaENvbXBvbmVudE9wZXJhdGlvbnMnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDYzIC8qIEdldENvbXBvbmVudFNlbGYgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnR2V0Q29tcG9uZW50U2VsZicsIHsgc3RhdGU6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDY0IC8qIEdldENvbXBvbmVudExheW91dCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydHZXRDb21wb25lbnRMYXlvdXQnLCB7IHN0YXRlOiBSZWdpc3RlcltvcDFdIH1dO1xuICAgICAgICAgICAgY2FzZSA2NSAvKiBCZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0JlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24nLCB7fV07XG4gICAgICAgICAgICBjYXNlIDY2IC8qIENvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0NvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uJywge31dO1xuICAgICAgICAgICAgY2FzZSA2NyAvKiBEaWRDcmVhdGVFbGVtZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0RpZENyZWF0ZUVsZW1lbnQnLCB7IHN0YXRlOiBSZWdpc3RlcltvcDFdIH1dO1xuICAgICAgICAgICAgY2FzZSA2OCAvKiBEaWRSZW5kZXJMYXlvdXQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRGlkUmVuZGVyTGF5b3V0Jywge31dO1xuICAgICAgICAgICAgLy8vIFBBUlRJQUxTXG4gICAgICAgICAgICBjYXNlIDY5IC8qIEdldFBhcnRpYWxUZW1wbGF0ZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb21waWxlUGFydGlhbCcsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNzAgLyogUmVzb2x2ZU1heWJlTG9jYWwgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUmVzb2x2ZU1heWJlTG9jYWwnLCB7IG5hbWU6IGMuZ2V0U3RyaW5nKG9wMSkgfV07XG4gICAgICAgICAgICAvLy8gREVCVUdHRVJcbiAgICAgICAgICAgIGNhc2UgNzEgLyogRGVidWdnZXIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRGVidWdnZXInLCB7IHN5bWJvbHM6IGMuZ2V0T3RoZXIob3AxKSwgZXZhbEluZm86IGMuZ2V0QXJyYXkob3AyKSB9XTtcbiAgICAgICAgICAgIC8vLyBTVEFURU1FTlRTXG4gICAgICAgICAgICBjYXNlIDcyIC8qIFNpemUgKi86XG4gICAgICAgICAgICAgICAgdGhyb3cgdW5yZWFjaGFibGUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyB1bnJlYWNoYWJsZSgpO1xuICAgIH1cbiAgICByZXR1cm4gWycnLCB7fV07XG59XG5leHBvcnQgY2xhc3MgQXBwZW5kT3Bjb2RlcyB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuZXZhbHVhdGVPcGNvZGUgPSBmaWxsTnVsbHMoNzIgLyogU2l6ZSAqLykuc2xpY2UoKTtcbiAgICB9XG4gICAgYWRkKG5hbWUsIGV2YWx1YXRlKSB7XG4gICAgICAgIHRoaXMuZXZhbHVhdGVPcGNvZGVbbmFtZV0gPSBldmFsdWF0ZTtcbiAgICB9XG4gICAgZXZhbHVhdGUodm0sIG9wY29kZSwgdHlwZSkge1xuICAgICAgICBsZXQgZnVuYyA9IHRoaXMuZXZhbHVhdGVPcGNvZGVbdHlwZV07XG4gICAgICAgIGlmICghZmFsc2UgJiYgZmFsc2UpIHtcbiAgICAgICAgICAgIC8qIHRzbGludDpkaXNhYmxlICovXG4gICAgICAgICAgICBsZXQgW25hbWUsIHBhcmFtc10gPSBkZWJ1Zyh2bS5jb25zdGFudHMsIG9wY29kZS50eXBlLCBvcGNvZGUub3AxLCBvcGNvZGUub3AyLCBvcGNvZGUub3AzKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGAke3ZtWydwYyddIC0gNH0uICR7bG9nT3Bjb2RlKG5hbWUsIHBhcmFtcyl9YCk7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyguLi5kZWJ1Zyh2bS5jb25zdGFudHMsIHR5cGUsIG9wY29kZS5vcDEsIG9wY29kZS5vcDIsIG9wY29kZS5vcDMpKTtcbiAgICAgICAgICAgIC8qIHRzbGludDplbmFibGUgKi9cbiAgICAgICAgfVxuICAgICAgICBmdW5jKHZtLCBvcGNvZGUpO1xuICAgICAgICBpZiAoIWZhbHNlICYmIGZhbHNlKSB7XG4gICAgICAgICAgICAvKiB0c2xpbnQ6ZGlzYWJsZSAqL1xuICAgICAgICAgICAgY29uc29sZS5sb2coJyVjIC0+IHBjOiAlZCwgcmE6ICVkLCBmcDogJWQsIHNwOiAlZCwgczA6ICVPLCBzMTogJU8sIHQwOiAlTywgdDE6ICVPJywgJ2NvbG9yOiBvcmFuZ2UnLCB2bVsncGMnXSwgdm1bJ3JhJ10sIHZtWydmcCddLCB2bVsnc3AnXSwgdm1bJ3MwJ10sIHZtWydzMSddLCB2bVsndDAnXSwgdm1bJ3QxJ10pO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJyVjIC0+IGV2YWwgc3RhY2snLCAnY29sb3I6IHJlZCcsIHZtLnN0YWNrLnRvQXJyYXkoKSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnJWMgLT4gc2NvcGUnLCAnY29sb3I6IGdyZWVuJywgdm0uc2NvcGUoKVsnc2xvdHMnXS5tYXAocyA9PiBzICYmIHNbJ3ZhbHVlJ10gPyBzWyd2YWx1ZSddKCkgOiBzKSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnJWMgLT4gZWxlbWVudHMnLCAnY29sb3I6IGJsdWUnLCB2bS5lbGVtZW50cygpWydlbGVtZW50U3RhY2snXS50b0FycmF5KCkpO1xuICAgICAgICAgICAgLyogdHNsaW50OmVuYWJsZSAqL1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGNvbnN0IEFQUEVORF9PUENPREVTID0gbmV3IEFwcGVuZE9wY29kZXMoKTtcbmV4cG9ydCBjbGFzcyBBYnN0cmFjdE9wY29kZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGluaXRpYWxpemVHdWlkKHRoaXMpO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7IGd1aWQ6IHRoaXMuX2d1aWQsIHR5cGU6IHRoaXMudHlwZSB9O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBVcGRhdGluZ09wY29kZSBleHRlbmRzIEFic3RyYWN0T3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy5uZXh0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5wcmV2ID0gbnVsbDtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gaW5zcGVjdChvcGNvZGVzKSB7XG4gICAgbGV0IGJ1ZmZlciA9IFtdO1xuICAgIG9wY29kZXMuZm9yRWFjaCgob3Bjb2RlLCBpKSA9PiB7XG4gICAgICAgIF9pbnNwZWN0KG9wY29kZS50b0pTT04oKSwgYnVmZmVyLCAwLCBpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gYnVmZmVyLmpvaW4oJycpO1xufVxuZnVuY3Rpb24gX2luc3BlY3Qob3Bjb2RlLCBidWZmZXIsIGxldmVsLCBpbmRleCkge1xuICAgIGxldCBpbmRlbnRhdGlvbiA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGV2ZWw7IGkrKykge1xuICAgICAgICBpbmRlbnRhdGlvbi5wdXNoKCcgICcpO1xuICAgIH1cbiAgICBidWZmZXIucHVzaCguLi5pbmRlbnRhdGlvbik7XG4gICAgYnVmZmVyLnB1c2goYCR7aW5kZXh9LiAke29wY29kZS50eXBlfWApO1xuICAgIGlmIChvcGNvZGUuYXJncyB8fCBvcGNvZGUuZGV0YWlscykge1xuICAgICAgICBidWZmZXIucHVzaCgnKCcpO1xuICAgICAgICBpZiAob3Bjb2RlLmFyZ3MpIHtcbiAgICAgICAgICAgIGJ1ZmZlci5wdXNoKG9wY29kZS5hcmdzLmpvaW4oJywgJykpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcGNvZGUuZGV0YWlscykge1xuICAgICAgICAgICAgbGV0IGtleXMgPSBPYmplY3Qua2V5cyhvcGNvZGUuZGV0YWlscyk7XG4gICAgICAgICAgICBpZiAoa2V5cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBpZiAob3Bjb2RlLmFyZ3MgJiYgb3Bjb2RlLmFyZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5wdXNoKCcsICcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBidWZmZXIucHVzaChrZXlzLm1hcChrZXkgPT4gYCR7a2V5fT0ke29wY29kZS5kZXRhaWxzICYmIG9wY29kZS5kZXRhaWxzW2tleV19YCkuam9pbignLCAnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnVmZmVyLnB1c2goJyknKTtcbiAgICB9XG4gICAgYnVmZmVyLnB1c2goJ1xcbicpO1xuICAgIGlmIChvcGNvZGUuY2hpbGRyZW4gJiYgb3Bjb2RlLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wY29kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgX2luc3BlY3Qob3Bjb2RlLmNoaWxkcmVuW2ldLCBidWZmZXIsIGxldmVsICsgMSwgaSk7XG4gICAgICAgIH1cbiAgICB9XG59Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9vcGNvZGVzLmpzIl0sIm5hbWVzIjpbImluaXRpYWxpemVHdWlkIiwiZmlsbE51bGxzIiwidW5yZWFjaGFibGUiLCJSZWdpc3RlciIsImRlYnVnU2xpY2UiLCJlbnYiLCJzdGFydCIsImVuZCIsInByb2dyYW0iLCJjb25zdGFudHMiLCJjb25zb2xlIiwiZ3JvdXAiLCJpIiwib3Bjb2RlIiwidHlwZSIsIm9wMSIsIm9wMiIsIm9wMyIsImRlYnVnIiwibmFtZSIsInBhcmFtcyIsImxvZyIsImxvZ09wY29kZSIsImdyb3VwRW5kIiwib3V0IiwiYXJncyIsIk9iamVjdCIsImtleXMiLCJtYXAiLCJwIiwianNvbiIsImpvaW4iLCJwYXJhbSIsInN0cmluZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJ1bmRlZmluZWQiLCJwYXJzZSIsImMiLCJvcCIsImhlbHBlciIsImdldEZ1bmN0aW9uIiwiZnVuY3Rpb24iLCJzeW1ib2wiLCJrZXkiLCJnZXRTdHJpbmciLCJibG9jayIsImdldEJsb2NrIiwic2l6ZSIsInZhbHVlIiwiZ2V0T3RoZXIiLCJwcmltaXRpdmUiLCJyZWdpc3RlciIsIm9mZnNldCIsImNvdW50Iiwic3ltYm9scyIsImJpbmRDYWxsZXJTY29wZSIsInRleHQiLCJjb21tZW50IiwidGFnIiwibmFtZXNwYWNlIiwidHJ1c3RpbmciLCJucyIsImludm9rZXIiLCJ0byIsImRlZmluaXRpb24iLCJwb3NpdGlvbmFsIiwic3ludGhldGljIiwic3RhdGUiLCJmbGFncyIsImV2YWxJbmZvIiwiZ2V0QXJyYXkiLCJBcHBlbmRPcGNvZGVzIiwiZXZhbHVhdGVPcGNvZGUiLCJzbGljZSIsImFkZCIsImV2YWx1YXRlIiwidm0iLCJmdW5jIiwic3RhY2siLCJ0b0FycmF5Iiwic2NvcGUiLCJzIiwiZWxlbWVudHMiLCJBUFBFTkRfT1BDT0RFUyIsIkFic3RyYWN0T3Bjb2RlIiwidG9KU09OIiwiZ3VpZCIsIl9ndWlkIiwiVXBkYXRpbmdPcGNvZGUiLCJhcmd1bWVudHMiLCJuZXh0IiwicHJldiIsImluc3BlY3QiLCJvcGNvZGVzIiwiYnVmZmVyIiwiZm9yRWFjaCIsIl9pbnNwZWN0IiwibGV2ZWwiLCJpbmRleCIsImluZGVudGF0aW9uIiwicHVzaCIsImRldGFpbHMiLCJsZW5ndGgiLCJjaGlsZHJlbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxTQUFTQSxjQUFULEVBQXlCQyxTQUF6QixFQUFvQ0MsV0FBcEMsUUFBdUQsZUFBdkQ7O0FBRUE7Ozs7OztBQU1BLE9BQU8sSUFBSUMsUUFBSjtBQUNQLENBQUMsVUFBVUEsUUFBVixFQUFvQjtBQUNqQjtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQTtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQTtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQTtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQTtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQUEsYUFBU0EsU0FBUyxJQUFULElBQWlCLENBQTFCLElBQStCLElBQS9CO0FBQ0E7QUFDQUEsYUFBU0EsU0FBUyxJQUFULElBQWlCLENBQTFCLElBQStCLElBQS9CO0FBQ0FBLGFBQVNBLFNBQVMsSUFBVCxJQUFpQixDQUExQixJQUErQixJQUEvQjtBQUNILENBZkQsRUFlR0EsYUFBYUEsV0FBVyxFQUF4QixDQWZIO0FBZ0JBLE9BQU8sU0FBU0MsVUFBVCxDQUFvQkMsR0FBcEIsRUFBeUJDLEtBQXpCLEVBQWdDQyxHQUFoQyxFQUFxQztBQUN4QyxRQUFJLENBQUMsS0FBRCxJQUFVLEtBQWQsRUFBcUI7QUFBQSxZQUNYQyxPQURXLEdBQ1lILEdBRFosQ0FDWEcsT0FEVztBQUFBLFlBQ0ZDLFNBREUsR0FDWUosR0FEWixDQUNGSSxTQURFO0FBRWpCOztBQUNBLFlBQUks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ZmlsZSI6ImxpYi9vcGNvZGVzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5pdGlhbGl6ZUd1aWQsIGZpbGxOdWxscywgdW5yZWFjaGFibGUgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuLyoqXG4gKiBSZWdpc3RlcnNcbiAqXG4gKiBGb3IgdGhlIG1vc3QgcGFydCwgdGhlc2UgZm9sbG93cyBNSVBTIG5hbWluZyBjb252ZW50aW9ucywgaG93ZXZlciB0aGVcbiAqIHJlZ2lzdGVyIG51bWJlcnMgYXJlIGRpZmZlcmVudC5cbiAqL1xuZXhwb3J0IHZhciBSZWdpc3RlcjtcbihmdW5jdGlvbiAoUmVnaXN0ZXIpIHtcbiAgICAvLyAkMCBvciAkcGMgKHByb2dyYW0gY291bnRlcik6IHBvaW50ZXIgaW50byBgcHJvZ3JhbWAgZm9yIHRoZSBuZXh0IGluc3R1cmN0aW9uOyAtMSBtZWFucyBleGl0XG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJwY1wiXSA9IDBdID0gXCJwY1wiO1xuICAgIC8vICQxIG9yICRyYSAocmV0dXJuIGFkZHJlc3MpOiBwb2ludGVyIGludG8gYHByb2dyYW1gIGZvciB0aGUgcmV0dXJuXG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJyYVwiXSA9IDFdID0gXCJyYVwiO1xuICAgIC8vICQyIG9yICRmcCAoZnJhbWUgcG9pbnRlcik6IHBvaW50ZXIgaW50byB0aGUgYGV2YWxTdGFja2AgZm9yIHRoZSBiYXNlIG9mIHRoZSBzdGFja1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wiZnBcIl0gPSAyXSA9IFwiZnBcIjtcbiAgICAvLyAkMyBvciAkc3AgKHN0YWNrIHBvaW50ZXIpOiBwb2ludGVyIGludG8gdGhlIGBldmFsU3RhY2tgIGZvciB0aGUgdG9wIG9mIHRoZSBzdGFja1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wic3BcIl0gPSAzXSA9IFwic3BcIjtcbiAgICAvLyAkNC0kNSBvciAkczAtJHMxIChzYXZlZCk6IGNhbGxlZSBzYXZlZCBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzXG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJzMFwiXSA9IDRdID0gXCJzMFwiO1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wiczFcIl0gPSA1XSA9IFwiczFcIjtcbiAgICAvLyAkNi0kNyBvciAkdDAtJHQxICh0ZW1wb3Jhcmllcyk6IGNhbGxlciBzYXZlZCBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzXG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJ0MFwiXSA9IDZdID0gXCJ0MFwiO1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1widDFcIl0gPSA3XSA9IFwidDFcIjtcbn0pKFJlZ2lzdGVyIHx8IChSZWdpc3RlciA9IHt9KSk7XG5leHBvcnQgZnVuY3Rpb24gZGVidWdTbGljZShlbnYsIHN0YXJ0LCBlbmQpIHtcbiAgICBpZiAoIWZhbHNlICYmIGZhbHNlKSB7XG4gICAgICAgIGxldCB7IHByb2dyYW0sIGNvbnN0YW50cyB9ID0gZW52O1xuICAgICAgICAvLyBjb25zb2xlIGlzIG5vdCBhdmFpbGFibGUgaW4gSUU5XG4gICAgICAgIGlmICh0eXBlb2YgY29uc29sZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBJRTEwIGRvZXMgbm90IGhhdmUgYGNvbnNvbGUuZ3JvdXBgXG4gICAgICAgIGlmICh0eXBlb2YgY29uc29sZS5ncm91cCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUuZ3JvdXAoYCVjJHtzdGFydH06JHtlbmR9YCwgJ2NvbG9yOiAjOTk5Jyk7XG4gICAgICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8PSBlbmQ7IGkgKz0gNCkge1xuICAgICAgICAgICAgbGV0IHsgdHlwZSwgb3AxLCBvcDIsIG9wMyB9ID0gcHJvZ3JhbS5vcGNvZGUoaSk7XG4gICAgICAgICAgICBsZXQgW25hbWUsIHBhcmFtc10gPSBkZWJ1Zyhjb25zdGFudHMsIHR5cGUsIG9wMSwgb3AyLCBvcDMpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coYCR7aX0uICR7bG9nT3Bjb2RlKG5hbWUsIHBhcmFtcyl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5ncm91cEVuZCgpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGxvZ09wY29kZSh0eXBlLCBwYXJhbXMpIHtcbiAgICBpZiAoIWZhbHNlICYmIGZhbHNlKSB7XG4gICAgICAgIGxldCBvdXQgPSB0eXBlO1xuICAgICAgICBpZiAocGFyYW1zKSB7XG4gICAgICAgICAgICBsZXQgYXJncyA9IE9iamVjdC5rZXlzKHBhcmFtcykubWFwKHAgPT4gYCAke3B9PSR7anNvbihwYXJhbXNbcF0pfWApLmpvaW4oJycpO1xuICAgICAgICAgICAgb3V0ICs9IGFyZ3M7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAoJHtvdXR9KWA7XG4gICAgfVxufVxuZnVuY3Rpb24ganNvbihwYXJhbSkge1xuICAgIGlmICh0eXBlb2YgcGFyYW0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuICc8ZnVuY3Rpb24+JztcbiAgICB9XG4gICAgbGV0IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KHBhcmFtKTtcbiAgICBpZiAoc3RyaW5nID09PSB1bmRlZmluZWQpIHJldHVybiAndW5kZWZpbmVkJztcbiAgICBsZXQgZGVidWcgPSBKU09OLnBhcnNlKHN0cmluZyk7XG4gICAgaWYgKHR5cGVvZiBkZWJ1ZyA9PT0gJ29iamVjdCcgJiYgZGVidWcgJiYgZGVidWdbJ0dsaW1tZXJEZWJ1ZyddKSB7XG4gICAgICAgIHJldHVybiBkZWJ1Z1snR2xpbW1lckRlYnVnJ107XG4gICAgfVxuICAgIHJldHVybiBzdHJpbmc7XG59XG5mdW5jdGlvbiBkZWJ1ZyhjLCBvcCwgb3AxLCBvcDIsIG9wMykge1xuICAgIGlmICghZmFsc2UgJiYgZmFsc2UpIHtcbiAgICAgICAgc3dpdGNoIChvcCkge1xuICAgICAgICAgICAgY2FzZSAwIC8qIEJ1ZyAqLzpcbiAgICAgICAgICAgICAgICB0aHJvdyB1bnJlYWNoYWJsZSgpO1xuICAgICAgICAgICAgY2FzZSAxIC8qIEhlbHBlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydIZWxwZXInLCB7IGhlbHBlcjogYy5nZXRGdW5jdGlvbihvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSAyIC8qIEZ1bmN0aW9uICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0Z1bmN0aW9uJywgeyBmdW5jdGlvbjogYy5nZXRGdW5jdGlvbihvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA0IC8qIFNldFZhcmlhYmxlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1NldFZhcmlhYmxlJywgeyBzeW1ib2w6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNSAvKiBHZXRWYXJpYWJsZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydHZXRWYXJpYWJsZScsIHsgc3ltYm9sOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDYgLyogR2V0UHJvcGVydHkgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnR2V0UHJvcGVydHknLCB7IGtleTogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgNyAvKiBQdXNoQmxvY2sgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaEJsb2NrJywgeyBibG9jazogYy5nZXRCbG9jayhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA4IC8qIEdldEJsb2NrICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0dldEJsb2NrJywgeyBzeW1ib2w6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgOSAvKiBIYXNCbG9jayAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydIYXNCbG9jaycsIHsgYmxvY2s6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTAgLyogSGFzQmxvY2tQYXJhbXMgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSGFzQmxvY2tQYXJhbXMnLCB7IGJsb2NrOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDExIC8qIENvbmNhdCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb25jYXQnLCB7IHNpemU6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTIgLyogSW1tZWRpYXRlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0ltbWVkaWF0ZScsIHsgdmFsdWU6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTMgLyogQ29uc3RhbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ29uc3RhbnQnLCB7IHZhbHVlOiBjLmdldE90aGVyKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDE0IC8qIFByaW1pdGl2ZVJlZmVyZW5jZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQcmltaXRpdmVSZWZlcmVuY2UnLCB7IHByaW1pdGl2ZTogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSAxNSAvKiBEdXAgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRHVwJywgeyByZWdpc3RlcjogUmVnaXN0ZXJbb3AxXSwgb2Zmc2V0OiBvcDIgfV07XG4gICAgICAgICAgICBjYXNlIDE2IC8qIFBvcCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQb3AnLCB7IGNvdW50OiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDE3IC8qIExvYWQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnTG9hZCcsIHsgcmVnaXN0ZXI6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDE4IC8qIEZldGNoICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0ZldGNoJywgeyByZWdpc3RlcjogUmVnaXN0ZXJbb3AxXSB9XTtcbiAgICAgICAgICAgIC8vLyBQUkVMVURFICYgRVhJVFxuICAgICAgICAgICAgY2FzZSAxOSAvKiBSb290U2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUm9vdFNjb3BlJywgeyBzeW1ib2xzOiBvcDEsIGJpbmRDYWxsZXJTY29wZTogISFvcDIgfV07XG4gICAgICAgICAgICBjYXNlIDIwIC8qIENoaWxkU2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ2hpbGRTY29wZScsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMjEgLyogUG9wU2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUG9wU2NvcGUnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDIyIC8qIFJldHVybiAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydSZXR1cm4nLCB7fV07XG4gICAgICAgICAgICAvLy8gSFRNTFxuICAgICAgICAgICAgY2FzZSAyMyAvKiBUZXh0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1RleHQnLCB7IHRleHQ6IGMuZ2V0U3RyaW5nKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDI0IC8qIENvbW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ29tbWVudCcsIHsgY29tbWVudDogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMjUgLyogRHluYW1pY0NvbnRlbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRHluYW1pY0NvbnRlbnQnLCB7IHZhbHVlOiBjLmdldE90aGVyKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDI2IC8qIE9wZW5FbGVtZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ09wZW5FbGVtZW50JywgeyB0YWc6IGMuZ2V0U3RyaW5nKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDI3IC8qIE9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnT3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucycsIHsgdGFnOiBjLmdldFN0cmluZyhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSAyOCAvKiBPcGVuRHluYW1pY0VsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnT3BlbkR5bmFtaWNFbGVtZW50Jywge31dO1xuICAgICAgICAgICAgY2FzZSAyOSAvKiBTdGF0aWNBdHRyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1N0YXRpY0F0dHInLCB7IG5hbWU6IGMuZ2V0U3RyaW5nKG9wMSksIHZhbHVlOiBjLmdldFN0cmluZyhvcDIpLCBuYW1lc3BhY2U6IG9wMyA/IGMuZ2V0U3RyaW5nKG9wMykgOiBudWxsIH1dO1xuICAgICAgICAgICAgY2FzZSAzMCAvKiBEeW5hbWljQXR0ciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEeW5hbWljQXR0cicsIHsgbmFtZTogYy5nZXRTdHJpbmcob3AxKSwgdHJ1c3Rpbmc6ICEhb3AyIH1dO1xuICAgICAgICAgICAgY2FzZSAzMSAvKiBEeW5hbWljQXR0ck5TICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0R5bmFtaWNBdHRyTlMnLCB7IG5hbWU6IGMuZ2V0U3RyaW5nKG9wMSksIG5zOiBjLmdldFN0cmluZyhvcDIpLCB0cnVzdGluZzogISFvcDIgfV07XG4gICAgICAgICAgICBjYXNlIDMyIC8qIEZsdXNoRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydGbHVzaEVsZW1lbnQnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDMzIC8qIENsb3NlRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDbG9zZUVsZW1lbnQnLCB7fV07XG4gICAgICAgICAgICAvLy8gTU9ESUZJRVJcbiAgICAgICAgICAgIGNhc2UgMzQgLyogTW9kaWZpZXIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnTW9kaWZpZXInLCB7fV07XG4gICAgICAgICAgICAvLy8gV09STUhPTEVcbiAgICAgICAgICAgIGNhc2UgMzUgLyogUHVzaFJlbW90ZUVsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaFJlbW90ZUVsZW1lbnQnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDM2IC8qIFBvcFJlbW90ZUVsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUG9wUmVtb3RlRWxlbWVudCcsIHt9XTtcbiAgICAgICAgICAgIC8vLyBEWU5BTUlDIFNDT1BFXG4gICAgICAgICAgICBjYXNlIDM3IC8qIEJpbmREeW5hbWljU2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQmluZER5bmFtaWNTY29wZScsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMzggLyogUHVzaER5bmFtaWNTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoRHluYW1pY1Njb3BlJywge31dO1xuICAgICAgICAgICAgY2FzZSAzOSAvKiBQb3BEeW5hbWljU2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUG9wRHluYW1pY1Njb3BlJywge31dO1xuICAgICAgICAgICAgLy8vIFZNXG4gICAgICAgICAgICBjYXNlIDQwIC8qIENvbXBpbGVEeW5hbWljQmxvY2sgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ29tcGlsZUR5bmFtaWNCbG9jaycsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNDEgLyogSW52b2tlU3RhdGljICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0ludm9rZVN0YXRpYycsIHsgYmxvY2s6IGMuZ2V0QmxvY2sob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDIgLyogSW52b2tlRHluYW1pYyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydJbnZva2VEeW5hbWljJywgeyBpbnZva2VyOiBjLmdldE90aGVyKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDQzIC8qIEp1bXAgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSnVtcCcsIHsgdG86IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDQgLyogSnVtcElmICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0p1bXBJZicsIHsgdG86IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDUgLyogSnVtcFVubGVzcyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydKdW1wVW5sZXNzJywgeyB0bzogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA0NiAvKiBQdXNoRnJhbWUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaEZyYW1lJywge31dO1xuICAgICAgICAgICAgY2FzZSA0NyAvKiBQb3BGcmFtZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQb3BGcmFtZScsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNDggLyogRW50ZXIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRW50ZXInLCB7IGFyZ3M6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDkgLyogRXhpdCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydFeGl0Jywge31dO1xuICAgICAgICAgICAgY2FzZSA1MCAvKiBUZXN0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1RvQm9vbGVhbicsIHt9XTtcbiAgICAgICAgICAgIC8vLyBMSVNUU1xuICAgICAgICAgICAgY2FzZSA1MSAvKiBFbnRlckxpc3QgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRW50ZXJMaXN0JywgeyBzdGFydDogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA1MiAvKiBFeGl0TGlzdCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydFeGl0TGlzdCcsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNTMgLyogUHV0SXRlcmF0b3IgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHV0SXRlcmF0b3InLCB7fV07XG4gICAgICAgICAgICBjYXNlIDU0IC8qIEl0ZXJhdGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSXRlcmF0ZScsIHsgZW5kOiBvcDEgfV07XG4gICAgICAgICAgICAvLy8gQ09NUE9ORU5UU1xuICAgICAgICAgICAgY2FzZSA1NSAvKiBQdXNoQ29tcG9uZW50TWFuYWdlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoQ29tcG9uZW50TWFuYWdlcicsIHsgZGVmaW5pdGlvbjogYy5nZXRPdGhlcihvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA1NiAvKiBQdXNoRHluYW1pY0NvbXBvbmVudE1hbmFnZXIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyJywge31dO1xuICAgICAgICAgICAgY2FzZSA1NyAvKiBJbml0aWFsaXplQ29tcG9uZW50U3RhdGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSW5pdGlhbGl6ZUNvbXBvbmVudFN0YXRlJywge31dO1xuICAgICAgICAgICAgY2FzZSA1OCAvKiBQdXNoQXJncyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoQXJncycsIHsgcG9zaXRpb25hbDogb3AxLCBzeW50aGV0aWM6ICEhb3AyIH1dO1xuICAgICAgICAgICAgY2FzZSA1OSAvKiBQcmVwYXJlQXJncyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQcmVwYXJlQXJncycsIHsgc3RhdGU6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDYwIC8qIENyZWF0ZUNvbXBvbmVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDcmVhdGVDb21wb25lbnQnLCB7IGZsYWdzOiBvcDEsIHN0YXRlOiBSZWdpc3RlcltvcDJdIH1dO1xuICAgICAgICAgICAgY2FzZSA2MSAvKiBSZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3IgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yJywge31dO1xuICAgICAgICAgICAgY2FzZSA2MiAvKiBQdXNoQ29tcG9uZW50T3BlcmF0aW9ucyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoQ29tcG9uZW50T3BlcmF0aW9ucycsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNjMgLyogR2V0Q29tcG9uZW50U2VsZiAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydHZXRDb21wb25lbnRTZWxmJywgeyBzdGF0ZTogUmVnaXN0ZXJbb3AxXSB9XTtcbiAgICAgICAgICAgIGNhc2UgNjQgLyogR2V0Q29tcG9uZW50TGF5b3V0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0dldENvbXBvbmVudExheW91dCcsIHsgc3RhdGU6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDY1IC8qIEJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24gKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbicsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNjYgLyogQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24gKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24nLCB7fV07XG4gICAgICAgICAgICBjYXNlIDY3IC8qIERpZENyZWF0ZUVsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRGlkQ3JlYXRlRWxlbWVudCcsIHsgc3RhdGU6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDY4IC8qIERpZFJlbmRlckxheW91dCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEaWRSZW5kZXJMYXlvdXQnLCB7fV07XG4gICAgICAgICAgICAvLy8gUEFSVElBTFNcbiAgICAgICAgICAgIGNhc2UgNjkgLyogR2V0UGFydGlhbFRlbXBsYXRlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0NvbXBpbGVQYXJ0aWFsJywge31dO1xuICAgICAgICAgICAgY2FzZSA3MCAvKiBSZXNvbHZlTWF5YmVMb2NhbCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydSZXNvbHZlTWF5YmVMb2NhbCcsIHsgbmFtZTogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIC8vLyBERUJVR0dFUlxuICAgICAgICAgICAgY2FzZSA3MSAvKiBEZWJ1Z2dlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEZWJ1Z2dlcicsIHsgc3ltYm9sczogYy5nZXRPdGhlcihvcDEpLCBldmFsSW5mbzogYy5nZXRBcnJheShvcDIpIH1dO1xuICAgICAgICAgICAgLy8vIFNUQVRFTUVOVFNcbiAgICAgICAgICAgIGNhc2UgNzIgLyogU2l6ZSAqLzpcbiAgICAgICAgICAgICAgICB0aHJvdyB1bnJlYWNoYWJsZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IHVucmVhY2hhYmxlKCk7XG4gICAgfVxuICAgIHJldHVybiBbJycsIHt9XTtcbn1cbmV4cG9ydCBjbGFzcyBBcHBlbmRPcGNvZGVzIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5ldmFsdWF0ZU9wY29kZSA9IGZpbGxOdWxscyg3MiAvKiBTaXplICovKS5zbGljZSgpO1xuICAgIH1cbiAgICBhZGQobmFtZSwgZXZhbHVhdGUpIHtcbiAgICAgICAgdGhpcy5ldmFsdWF0ZU9wY29kZVtuYW1lXSA9IGV2YWx1YXRlO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSwgb3Bjb2RlLCB0eXBlKSB7XG4gICAgICAgIGxldCBmdW5jID0gdGhpcy5ldmFsdWF0ZU9wY29kZVt0eXBlXTtcbiAgICAgICAgaWYgKCFmYWxzZSAmJiBmYWxzZSkge1xuICAgICAgICAgICAgbGV0IFtuYW1lLCBwYXJhbXNdID0gZGVidWcodm0uY29uc3RhbnRzLCBvcGNvZGUudHlwZSwgb3Bjb2RlLm9wMSwgb3Bjb2RlLm9wMiwgb3Bjb2RlLm9wMyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgJHt2bVsncGMnXSAtIDR9LiAke2xvZ09wY29kZShuYW1lLCBwYXJhbXMpfWApO1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coLi4uZGVidWcodm0uY29uc3RhbnRzLCB0eXBlLCBvcGNvZGUub3AxLCBvcGNvZGUub3AyLCBvcGNvZGUub3AzKSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuYyh2bSwgb3Bjb2RlKTtcbiAgICAgICAgaWYgKCFmYWxzZSAmJiBmYWxzZSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJyVjIC0+IHBjOiAlZCwgcmE6ICVkLCBmcDogJWQsIHNwOiAlZCwgczA6ICVPLCBzMTogJU8sIHQwOiAlTywgdDE6ICVPJywgJ2NvbG9yOiBvcmFuZ2UnLCB2bVsncGMnXSwgdm1bJ3JhJ10sIHZtWydmcCddLCB2bVsnc3AnXSwgdm1bJ3MwJ10sIHZtWydzMSddLCB2bVsndDAnXSwgdm1bJ3QxJ10pO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJyVjIC0+IGV2YWwgc3RhY2snLCAnY29sb3I6IHJlZCcsIHZtLnN0YWNrLnRvQXJyYXkoKSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnJWMgLT4gc2NvcGUnLCAnY29sb3I6IGdyZWVuJywgdm0uc2NvcGUoKVsnc2xvdHMnXS5tYXAocyA9PiBzICYmIHNbJ3ZhbHVlJ10gPyBzWyd2YWx1ZSddKCkgOiBzKSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnJWMgLT4gZWxlbWVudHMnLCAnY29sb3I6IGJsdWUnLCB2bS5lbGVtZW50cygpWydlbGVtZW50U3RhY2snXS50b0FycmF5KCkpO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGNvbnN0IEFQUEVORF9PUENPREVTID0gbmV3IEFwcGVuZE9wY29kZXMoKTtcbmV4cG9ydCBjbGFzcyBBYnN0cmFjdE9wY29kZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGluaXRpYWxpemVHdWlkKHRoaXMpO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7IGd1aWQ6IHRoaXMuX2d1aWQsIHR5cGU6IHRoaXMudHlwZSB9O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBVcGRhdGluZ09wY29kZSBleHRlbmRzIEFic3RyYWN0T3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy5uZXh0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5wcmV2ID0gbnVsbDtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gaW5zcGVjdChvcGNvZGVzKSB7XG4gICAgbGV0IGJ1ZmZlciA9IFtdO1xuICAgIG9wY29kZXMuZm9yRWFjaCgob3Bjb2RlLCBpKSA9PiB7XG4gICAgICAgIF9pbnNwZWN0KG9wY29kZS50b0pTT04oKSwgYnVmZmVyLCAwLCBpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gYnVmZmVyLmpvaW4oJycpO1xufVxuZnVuY3Rpb24gX2luc3BlY3Qob3Bjb2RlLCBidWZmZXIsIGxldmVsLCBpbmRleCkge1xuICAgIGxldCBpbmRlbnRhdGlvbiA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGV2ZWw7IGkrKykge1xuICAgICAgICBpbmRlbnRhdGlvbi5wdXNoKCcgICcpO1xuICAgIH1cbiAgICBidWZmZXIucHVzaCguLi5pbmRlbnRhdGlvbik7XG4gICAgYnVmZmVyLnB1c2goYCR7aW5kZXh9LiAke29wY29kZS50eXBlfWApO1xuICAgIGlmIChvcGNvZGUuYXJncyB8fCBvcGNvZGUuZGV0YWlscykge1xuICAgICAgICBidWZmZXIucHVzaCgnKCcpO1xuICAgICAgICBpZiAob3Bjb2RlLmFyZ3MpIHtcbiAgICAgICAgICAgIGJ1ZmZlci5wdXNoKG9wY29kZS5hcmdzLmpvaW4oJywgJykpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcGNvZGUuZGV0YWlscykge1xuICAgICAgICAgICAgbGV0IGtleXMgPSBPYmplY3Qua2V5cyhvcGNvZGUuZGV0YWlscyk7XG4gICAgICAgICAgICBpZiAoa2V5cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBpZiAob3Bjb2RlLmFyZ3MgJiYgb3Bjb2RlLmFyZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5wdXNoKCcsICcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBidWZmZXIucHVzaChrZXlzLm1hcChrZXkgPT4gYCR7a2V5fT0ke29wY29kZS5kZXRhaWxzICYmIG9wY29kZS5kZXRhaWxzW2tleV19YCkuam9pbignLCAnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnVmZmVyLnB1c2goJyknKTtcbiAgICB9XG4gICAgYnVmZmVyLnB1c2goJ1xcbicpO1xuICAgIGlmIChvcGNvZGUuY2hpbGRyZW4gJiYgb3Bjb2RlLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wY29kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgX2luc3BlY3Qob3Bjb2RlLmNoaWxkcmVuW2ldLCBidWZmZXIsIGxldmVsICsgMSwgaSk7XG4gICAgICAgIH1cbiAgICB9XG59Il19

@@ -0,10 +1,77 @@

function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
import { CompiledDynamicTemplate, CompiledStaticTemplate } from './compiled/blocks';
import { builder } from './compiler';
import { EMPTY_ARRAY } from '@glimmer/util';
import * as WireFormat from '@glimmer/wire-format';
import * as ClientSide from './syntax/client-side';
import CompilableTemplate from './syntax/compilable-template';
import { ATTRS_BLOCK } from './syntax/functions';
var Ops = WireFormat.Ops;
import { debugSlice } from './opcodes';
import { STATEMENTS } from './syntax/functions';
export function compileStatement(statement, builder) {
STATEMENTS.compile(statement, builder);
}
export var CompilableTemplate = function () {
function CompilableTemplate(statements, symbolTable) {
_classCallCheck(this, CompilableTemplate);
this.statements = statements;
this.symbolTable = symbolTable;
this.compiledStatic = null;
this.compiledDynamic = null;
}
CompilableTemplate.prototype.compileStatic = function compileStatic(env) {
var compiledStatic = this.compiledStatic;
if (!compiledStatic) {
var _builder = compileStatements(this.statements, this.symbolTable.meta, env);
var start = _builder.start;
var end = _builder.finalize();
debugSlice(env, start, end);
compiledStatic = this.compiledStatic = new CompiledStaticTemplate(start, end);
}
return compiledStatic;
};
CompilableTemplate.prototype.compileDynamic = function compileDynamic(env) {
var compiledDynamic = this.compiledDynamic;
if (!compiledDynamic) {
var staticBlock = this.compileStatic(env);
compiledDynamic = new CompiledDynamicTemplate(staticBlock.start, staticBlock.end, this.symbolTable);
}
return compiledDynamic;
};
CompilableTemplate.prototype.toJSON = function toJSON() {
return { GlimmerDebug: '<template>' };
};
return CompilableTemplate;
}();
function compileStatements(statements, meta, env) {
var b = builder(env, meta);
for (var statement of statements) {
compileStatement(statement, b);
}
return b;
}
export var ATTRS_BLOCK = '&attrs';
export function layout(prelude, head, body, symbolTable) {
var _prelude$pop = prelude.pop(),
tag = _prelude$pop[1];
prelude.push([Ops.ClientSideStatement, ClientSide.Ops.OpenComponentElement, tag]);
prelude.push([Ops.ClientSideStatement, ClientSide.Ops.DidCreateElement]);
var attrsSymbol = symbolTable.symbols.length + 1;
symbolTable.symbols.push(ATTRS_BLOCK);
var statements = prelude.concat([[Ops.Yield, attrsSymbol, EMPTY_ARRAY]]).concat(head).concat(body).concat([[Ops.ClientSideStatement, ClientSide.Ops.DidRenderLayout]]);
return new CompilableTemplate(statements, symbolTable);
}
var Scanner = function () {

@@ -19,65 +86,47 @@ function Scanner(block, env) {

Scanner.prototype.scanEntryPoint = function scanEntryPoint(meta) {
var block = this.block;
var statements = block.statements,
symbols = block.symbols,
hasEval = block.hasEval;
var block = this.block,
env = this.env;
return new CompilableTemplate(statements, { meta: meta, symbols: symbols, hasEval: hasEval });
var statements = void 0;
if (block.prelude && block.head) {
statements = block.prelude.concat(block.head).concat(block.statements);
} else {
statements = block.statements;
}
return new RawProgram(env, meta, statements, block.symbols, block.hasEval).scan();
};
Scanner.prototype.scanBlock = function scanBlock(meta) {
var block = this.block;
var statements = block.statements;
var block = this.block,
env = this.env;
return new CompilableTemplate(statements, { meta: meta, parameters: EMPTY_ARRAY });
var statements = void 0;
if (block.prelude && block.head) {
statements = block.prelude.concat(block.head).concat(block.statements);
} else {
statements = block.statements;
}
return new RawInlineBlock(env, meta, statements, EMPTY_ARRAY).scan();
};
Scanner.prototype.scanLayout = function scanLayout(meta, attrs, componentName) {
Scanner.prototype.scanLayout = function scanLayout(meta, attrs) {
var block = this.block;
var statements = block.statements,
symbols = block.symbols,
var symbols = block.symbols,
hasEval = block.hasEval;
if (!block.prelude || !block.head) {
throw new Error('A layout must have a top-level element');
}
var symbolTable = { meta: meta, hasEval: hasEval, symbols: symbols };
var newStatements = [];
var toplevel = void 0;
var inTopLevel = false;
for (var i = 0; i < statements.length; i++) {
var statement = statements[i];
if (WireFormat.Statements.isComponent(statement)) {
var tagName = statement[1];
if (!this.env.hasComponentDefinition(tagName, meta.templateMeta)) {
if (toplevel !== undefined) {
newStatements.push([Ops.OpenElement, tagName]);
} else {
toplevel = tagName;
decorateTopLevelElement(tagName, symbols, attrs, newStatements);
}
addFallback(statement, newStatements);
} else {
if (toplevel === undefined && tagName === componentName) {
toplevel = tagName;
decorateTopLevelElement(tagName, symbols, attrs, newStatements);
addFallback(statement, newStatements);
}
}
} else {
if (toplevel === undefined && WireFormat.Statements.isOpenElement(statement)) {
toplevel = statement[1];
inTopLevel = true;
decorateTopLevelElement(toplevel, symbols, attrs, newStatements);
} else {
if (inTopLevel) {
if (WireFormat.Statements.isFlushElement(statement)) {
inTopLevel = false;
} else if (WireFormat.Statements.isModifier(statement)) {
throw Error('Found modifier "' + statement[1] + '" on the top-level element of "' + componentName + '". Modifiers cannot be on the top-level element');
}
}
newStatements.push(statement);
}
}
}
newStatements.push([Ops.ClientSideStatement, ClientSide.Ops.DidRenderLayout]);
return new CompilableTemplate(newStatements, symbolTable);
var _scanBlock = scanBlock({ statements: block.prelude, parameters: EMPTY_ARRAY }, meta, this.env),
prelude = _scanBlock.statements;
var _scanBlock2 = scanBlock({ statements: [].concat(attrs, block.head), parameters: EMPTY_ARRAY }, meta, this.env),
head = _scanBlock2.statements;
var _scanBlock3 = scanBlock({ statements: block.statements, parameters: EMPTY_ARRAY }, meta, this.env),
body = _scanBlock3.statements;
return layout(prelude, head, body, symbolTable);
};

@@ -90,26 +139,93 @@

function addFallback(statement, buffer) {
var attrs = statement[2],
block = statement[4];
export function scanBlock(block, meta, env) {
return new RawInlineBlock(env, meta, block.statements, EMPTY_ARRAY).scan();
}
export var ClientSide;
(function (ClientSide) {
var Ops;
(function (Ops) {
Ops[Ops["OpenComponentElement"] = 0] = "OpenComponentElement";
Ops[Ops["DidCreateElement"] = 1] = "DidCreateElement";
Ops[Ops["DidRenderLayout"] = 2] = "DidRenderLayout";
Ops[Ops["OptimizedAppend"] = 3] = "OptimizedAppend";
Ops[Ops["UnoptimizedAppend"] = 4] = "UnoptimizedAppend";
Ops[Ops["StaticPartial"] = 5] = "StaticPartial";
Ops[Ops["DynamicPartial"] = 6] = "DynamicPartial";
Ops[Ops["NestedBlock"] = 7] = "NestedBlock";
Ops[Ops["ScannedBlock"] = 8] = "ScannedBlock";
Ops[Ops["FunctionExpression"] = 9] = "FunctionExpression";
})(Ops = ClientSide.Ops || (ClientSide.Ops = {}));
function is(variant) {
return function (value) {
return value[0] === WireFormat.Ops.ClientSideExpression || value[0] === WireFormat.Ops.ClientSideStatement && value[1] === variant;
};
}
ClientSide.is = is;
})(ClientSide || (ClientSide = {}));
var Ops = WireFormat.Ops;
for (var i = 0; i < attrs.length; i++) {
buffer.push(attrs[i]);
export var RawBlock = function () {
function RawBlock(env, meta, statements) {
_classCallCheck(this, RawBlock);
this.env = env;
this.meta = meta;
this.statements = statements;
}
buffer.push([Ops.FlushElement]);
if (block) {
var statements = block.statements;
for (var _i = 0; _i < statements.length; _i++) {
buffer.push(statements[_i]);
RawBlock.prototype.scanStatements = function scanStatements() {
var buffer = [];
var statements = this.statements;
for (var statement of statements) {
buffer.push(statement);
}
return buffer;
};
RawBlock.prototype.child = function child(block) {
if (!block) return null;
return new RawInlineBlock(this.env, this.meta, block.statements, block.parameters);
};
return RawBlock;
}();
export var RawInlineBlock = function (_RawBlock) {
_inherits(RawInlineBlock, _RawBlock);
function RawInlineBlock(env, meta, statements, parameters) {
_classCallCheck(this, RawInlineBlock);
var _this = _possibleConstructorReturn(this, _RawBlock.call(this, env, meta, statements));
_this.parameters = parameters;
return _this;
}
buffer.push([Ops.CloseElement]);
}
function decorateTopLevelElement(tagName, symbols, attrs, buffer) {
var attrsSymbol = symbols.push(ATTRS_BLOCK);
buffer.push([Ops.ClientSideStatement, ClientSide.Ops.OpenComponentElement, tagName]);
buffer.push([Ops.ClientSideStatement, ClientSide.Ops.DidCreateElement]);
buffer.push([Ops.Yield, attrsSymbol, EMPTY_ARRAY]);
buffer.push.apply(buffer, attrs);
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zY2FubmVyLmpzIl0sIm5hbWVzIjpbIkVNUFRZX0FSUkFZIiwiV2lyZUZvcm1hdCIsIkNsaWVudFNpZGUiLCJDb21waWxhYmxlVGVtcGxhdGUiLCJBVFRSU19CTE9DSyIsIk9wcyIsIlNjYW5uZXIiLCJibG9jayIsImVudiIsInNjYW5FbnRyeVBvaW50IiwibWV0YSIsInN0YXRlbWVudHMiLCJzeW1ib2xzIiwiaGFzRXZhbCIsInNjYW5CbG9jayIsInBhcmFtZXRlcnMiLCJzY2FuTGF5b3V0IiwiYXR0cnMiLCJjb21wb25lbnROYW1lIiwic3ltYm9sVGFibGUiLCJuZXdTdGF0ZW1lbnRzIiwidG9wbGV2ZWwiLCJpblRvcExldmVsIiwiaSIsImxlbmd0aCIsInN0YXRlbWVudCIsIlN0YXRlbWVudHMiLCJpc0NvbXBvbmVudCIsInRhZ05hbWUiLCJoYXNDb21wb25lbnREZWZpbml0aW9uIiwidGVtcGxhdGVNZXRhIiwidW5kZWZpbmVkIiwicHVzaCIsIk9wZW5FbGVtZW50IiwiZGVjb3JhdGVUb3BMZXZlbEVsZW1lbnQiLCJhZGRGYWxsYmFjayIsImlzT3BlbkVsZW1lbnQiLCJpc0ZsdXNoRWxlbWVudCIsImlzTW9kaWZpZXIiLCJFcnJvciIsIkNsaWVudFNpZGVTdGF0ZW1lbnQiLCJEaWRSZW5kZXJMYXlvdXQiLCJidWZmZXIiLCJGbHVzaEVsZW1lbnQiLCJDbG9zZUVsZW1lbnQiLCJhdHRyc1N5bWJvbCIsIk9wZW5Db21wb25lbnRFbGVtZW50IiwiRGlkQ3JlYXRlRWxlbWVudCIsIllpZWxkIl0sIm1hcHBpbmdzIjoiOztBQUFBLFNBQVNBLFdBQVQsUUFBNEIsZUFBNUI7QUFDQSxPQUFPLEtBQUtDLFVBQVosTUFBNEIsc0JBQTVCO0FBQ0EsT0FBTyxLQUFLQyxVQUFaLE1BQTRCLHNCQUE1QjtBQUNBLE9BQU9DLGtCQUFQLE1BQStCLDhCQUEvQjtBQUNBLFNBQVNDLFdBQVQsUUFBNEIsb0JBQTVCO0FBQ0EsSUFBSUMsTUFBTUosV0FBV0ksR0FBckI7O0lBQ3FCQyxPO0FBQ2pCLHFCQUFZQyxLQUFaLEVBQW1CQyxHQUFuQixFQUF3QjtBQUFBOztBQUNwQixhQUFLRCxLQUFMLEdBQWFBLEtBQWI7QUFDQSxhQUFLQyxHQUFMLEdBQVdBLEdBQVg7QUFDSDs7c0JBQ0RDLGMsMkJBQWVDLEksRUFBTTtBQUFBLFlBQ1hILEtBRFcsR0FDRCxJQURDLENBQ1hBLEtBRFc7QUFBQSxZQUVYSSxVQUZXLEdBRXNCSixLQUZ0QixDQUVYSSxVQUZXO0FBQUEsWUFFQ0MsT0FGRCxHQUVzQkwsS0FGdEIsQ0FFQ0ssT0FGRDtBQUFBLFlBRVVDLE9BRlYsR0FFc0JOLEtBRnRCLENBRVVNLE9BRlY7O0FBR2pCLGVBQU8sSUFBSVYsa0JBQUosQ0FBdUJRLFVBQXZCLEVBQW1DLEVBQUVELFVBQUYsRUFBUUUsZ0JBQVIsRUFBaUJDLGdCQUFqQixFQUFuQyxDQUFQO0FBQ0gsSzs7c0JBQ0RDLFMsc0JBQVVKLEksRUFBTTtBQUFBLFlBQ05ILEtBRE0sR0FDSSxJQURKLENBQ05BLEtBRE07QUFBQSxZQUVOSSxVQUZNLEdBRVNKLEtBRlQsQ0FFTkksVUFGTTs7QUFHWixlQUFPLElBQUlSLGtCQUFKLENBQXVCUSxVQUF2QixFQUFtQyxFQUFFRCxVQUFGLEVBQVFLLFlBQVlmLFdBQXBCLEVBQW5DLENBQVA7QUFDSCxLOztzQkFDRGdCLFUsdUJBQVdOLEksRUFBTU8sSyxFQUFPQyxhLEVBQWU7QUFBQSxZQUM3QlgsS0FENkIsR0FDbkIsSUFEbUIsQ0FDN0JBLEtBRDZCO0FBQUEsWUFFN0JJLFVBRjZCLEdBRUlKLEtBRkosQ0FFN0JJLFVBRjZCO0FBQUEsWUFFakJDLE9BRmlCLEdBRUlMLEtBRkosQ0FFakJLLE9BRmlCO0FBQUEsWUFFUkMsT0FGUSxHQUVJTixLQUZKLENBRVJNLE9BRlE7O0FBR25DLFlBQUlNLGNBQWMsRUFBRVQsVUFBRixFQUFRRyxnQkFBUixFQUFpQkQsZ0JBQWpCLEVBQWxCO0FBQ0EsWUFBSVEsZ0JBQWdCLEVBQXBCO0FBQ0EsWUFBSUMsaUJBQUo7QUFDQSxZQUFJQyxhQUFhLEtBQWpCO0FBQ0EsYUFBSyxJQUFJQyxJQUFJLENBQWIsRUFBZ0JBLElBQUlaLFdBQVdhLE1BQS9CLEVBQXVDRCxHQUF2QyxFQUE0QztBQUN4QyxnQkFBSUUsWUFBWWQsV0FBV1ksQ0FBWCxDQUFoQjtBQUNBLGdCQUFJdEIsV0FBV3lCLFVBQVgsQ0FBc0JDLFdBQXRCLENBQWtDRixTQUFsQyxDQUFKLEVBQWtEO0FBQzlDLG9CQUFJRyxVQUFVSCxVQUFVLENBQVYsQ0FBZDtBQUNBLG9CQUFJLENBQUMsS0FBS2pCLEdBQUwsQ0FBU3FCLHNCQUFULENBQWdDRCxPQUFoQyxFQUF5Q2xCLEtBQUtvQixZQUE5QyxDQUFMLEVBQWtFO0FBQzlELHdCQUFJVCxhQUFhVSxTQUFqQixFQUE0QjtBQUN4Qlgsc0NBQWNZLElBQWQsQ0FBbUIsQ0FBQzNCLElBQUk0QixXQUFMLEVBQWtCTCxPQUFsQixDQUFuQjtBQUNILHFCQUZELE1BRU87QUFDSFAsbUNBQVdPLE9BQVg7QUFDQU0sZ0RBQXdCTixPQUF4QixFQUFpQ2hCLE9BQWpDLEVBQTBDSyxLQUExQyxFQUFpREcsYUFBakQ7QUFDSDtBQUNEZSxnQ0FBWVYsU0FBWixFQUF1QkwsYUFBdkI7QUFDSCxpQkFSRCxNQVFPO0FBQ0gsd0JBQUlDLGFBQWFVLFNBQWIsSUFBMEJILFlBQVlWLGFBQTFDLEVBQXlEO0FBQ3JERyxtQ0FBV08sT0FBWDtBQUNBTSxnREFBd0JOLE9BQXhCLEVBQWlDaEIsT0FBakMsRUFBMENLLEtBQTFDLEVBQWlERyxhQUFqRDtBQUNBZSxvQ0FBWVYsU0FBWixFQUF1QkwsYUFBdkI7QUFDSDtBQUNKO0FBQ0osYUFqQkQsTUFpQk87QUFDSCxvQkFBSUMsYUFBYVUsU0FBYixJQUEwQjlCLFdBQVd5QixVQUFYLENBQXNCVSxhQUF0QixDQUFvQ1gsU0FBcEMsQ0FBOUIsRUFBOEU7QUFDMUVKLCtCQUFXSSxVQUFVLENBQVYsQ0FBWDtBQUNBSCxpQ0FBYSxJQUFiO0FBQ0FZLDRDQUF3QmIsUUFBeEIsRUFBa0NULE9BQWxDLEVBQTJDSyxLQUEzQyxFQUFrREcsYUFBbEQ7QUFDSCxpQkFKRCxNQUlPO0FBQ0gsd0JBQUlFLFVBQUosRUFBZ0I7QUFDWiw0QkFBSXJCLFdBQVd5QixVQUFYLENBQXNCVyxjQUF0QixDQUFxQ1osU0FBckMsQ0FBSixFQUFxRDtBQUNqREgseUNBQWEsS0FBYjtBQUNILHlCQUZELE1BRU8sSUFBSXJCLFdBQVd5QixVQUFYLENBQXNCWSxVQUF0QixDQUFpQ2IsU0FBakMsQ0FBSixFQUFpRDtBQUNwRCxrQ0FBTWMsMkJBQXlCZCxVQUFVLENBQVYsQ0FBekIsdUNBQXVFUCxhQUF2RSxxREFBTjtBQUNIO0FBQ0o7QUFDREUsa0NBQWNZLElBQWQsQ0FBbUJQLFNBQW5CO0FBQ0g7QUFDSjtBQUNKO0FBQ0RMLHNCQUFjWSxJQUFkLENBQW1CLENBQUMzQixJQUFJbUMsbUJBQUwsRUFBMEJ0QyxXQUFXRyxHQUFYLENBQWVvQyxlQUF6QyxDQUFuQjtBQUNBLGVBQU8sSUFBSXRDLGtCQUFKLENBQXVCaUIsYUFBdkIsRUFBc0NELFdBQXRDLENBQVA7QUFDSCxLOzs7OztlQTVEZ0JiLE87O0FBOERyQixTQUFTNkIsV0FBVCxDQUFxQlYsU0FBckIsRUFBZ0NpQixNQUFoQyxFQUF3QztBQUFBLFFBQzVCekIsS0FENEIsR0FDWFEsU0FEVztBQUFBLFFBQ3BCbEIsS0FEb0IsR0FDWGtCLFNBRFc7O0FBRXBDLFNBQUssSUFBSUYsSUFBSSxDQUFiLEVBQWdCQSxJQUFJTixNQUFNTyxNQUExQixFQUFrQ0QsR0FBbEMsRUFBdUM7QUFDbkNtQixlQUFPVixJQUFQLENBQVlmLE1BQU1NLENBQU4sQ0FBWjtBQUNIO0FBQ0RtQixXQUFPVixJQUFQLENBQVksQ0FBQzNCLElBQUlzQyxZQUFMLENBQVo7QUFDQSxRQUFJcEMsS0FBSixFQUFXO0FBQUEsWUFDREksVUFEQyxHQUNjSixLQURkLENBQ0RJLFVBREM7O0FBRVAsYUFBSyxJQUFJWSxLQUFJLENBQWIsRUFBZ0JBLEtBQUlaLFdBQVdhLE1BQS9CLEVBQXVDRCxJQUF2QyxFQUE0QztBQUN4Q21CLG1CQUFPVixJQUFQLENBQVlyQixXQUFXWSxFQUFYLENBQVo7QUFDSDtBQUNKO0FBQ0RtQixXQUFPVixJQUFQLENBQVksQ0FBQzNCLElBQUl1QyxZQUFMLENBQVo7QUFDSDtBQUNELFNBQVNWLHVCQUFULENBQWlDTixPQUFqQyxFQUEwQ2hCLE9BQTFDLEVBQW1ESyxLQUFuRCxFQUEwRHlCLE1BQTFELEVBQWtFO0FBQzlELFFBQUlHLGNBQWNqQyxRQUFRb0IsSUFBUixDQUFhNUIsV0FBYixDQUFsQjtBQUNBc0MsV0FBT1YsSUFBUCxDQUFZLENBQUMzQixJQUFJbUMsbUJBQUwsRUFBMEJ0QyxXQUFXRyxHQUFYLENBQWV5QyxvQkFBekMsRUFBK0RsQixPQUEvRCxDQUFaO0FBQ0FjLFdBQU9WLElBQVAsQ0FBWSxDQUFDM0IsSUFBSW1DLG1CQUFMLEVBQTBCdEMsV0FBV0csR0FBWCxDQUFlMEMsZ0JBQXpDLENBQVo7QUFDQUwsV0FBT1YsSUFBUCxDQUFZLENBQUMzQixJQUFJMkMsS0FBTCxFQUFZSCxXQUFaLEVBQXlCN0MsV0FBekIsQ0FBWjtBQUNBMEMsV0FBT1YsSUFBUCxlQUFlZixLQUFmO0FBQ0giLCJmaWxlIjoibGliL3NjYW5uZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFTVBUWV9BUlJBWSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0ICogYXMgV2lyZUZvcm1hdCBmcm9tICdAZ2xpbW1lci93aXJlLWZvcm1hdCc7XG5pbXBvcnQgKiBhcyBDbGllbnRTaWRlIGZyb20gJy4vc3ludGF4L2NsaWVudC1zaWRlJztcbmltcG9ydCBDb21waWxhYmxlVGVtcGxhdGUgZnJvbSAnLi9zeW50YXgvY29tcGlsYWJsZS10ZW1wbGF0ZSc7XG5pbXBvcnQgeyBBVFRSU19CTE9DSyB9IGZyb20gJy4vc3ludGF4L2Z1bmN0aW9ucyc7XG52YXIgT3BzID0gV2lyZUZvcm1hdC5PcHM7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTY2FubmVyIHtcbiAgICBjb25zdHJ1Y3RvcihibG9jaywgZW52KSB7XG4gICAgICAgIHRoaXMuYmxvY2sgPSBibG9jaztcbiAgICAgICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgfVxuICAgIHNjYW5FbnRyeVBvaW50KG1ldGEpIHtcbiAgICAgICAgbGV0IHsgYmxvY2sgfSA9IHRoaXM7XG4gICAgICAgIGxldCB7IHN0YXRlbWVudHMsIHN5bWJvbHMsIGhhc0V2YWwgfSA9IGJsb2NrO1xuICAgICAgICByZXR1cm4gbmV3IENvbXBpbGFibGVUZW1wbGF0ZShzdGF0ZW1lbnRzLCB7IG1ldGEsIHN5bWJvbHMsIGhhc0V2YWwgfSk7XG4gICAgfVxuICAgIHNjYW5CbG9jayhtZXRhKSB7XG4gICAgICAgIGxldCB7IGJsb2NrIH0gPSB0aGlzO1xuICAgICAgICBsZXQgeyBzdGF0ZW1lbnRzIH0gPSBibG9jaztcbiAgICAgICAgcmV0dXJuIG5ldyBDb21waWxhYmxlVGVtcGxhdGUoc3RhdGVtZW50cywgeyBtZXRhLCBwYXJhbWV0ZXJzOiBFTVBUWV9BUlJBWSB9KTtcbiAgICB9XG4gICAgc2NhbkxheW91dChtZXRhLCBhdHRycywgY29tcG9uZW50TmFtZSkge1xuICAgICAgICBsZXQgeyBibG9jayB9ID0gdGhpcztcbiAgICAgICAgbGV0IHsgc3RhdGVtZW50cywgc3ltYm9scywgaGFzRXZhbCB9ID0gYmxvY2s7XG4gICAgICAgIGxldCBzeW1ib2xUYWJsZSA9IHsgbWV0YSwgaGFzRXZhbCwgc3ltYm9scyB9O1xuICAgICAgICBsZXQgbmV3U3RhdGVtZW50cyA9IFtdO1xuICAgICAgICBsZXQgdG9wbGV2ZWw7XG4gICAgICAgIGxldCBpblRvcExldmVsID0gZmFsc2U7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RhdGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IHN0YXRlbWVudCA9IHN0YXRlbWVudHNbaV07XG4gICAgICAgICAgICBpZiAoV2lyZUZvcm1hdC5TdGF0ZW1lbnRzLmlzQ29tcG9uZW50KHN0YXRlbWVudCkpIHtcbiAgICAgICAgICAgICAgICBsZXQgdGFnTmFtZSA9IHN0YXRlbWVudFsxXTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZW52Lmhhc0NvbXBvbmVudERlZmluaXRpb24odGFnTmFtZSwgbWV0YS50ZW1wbGF0ZU1ldGEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0b3BsZXZlbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdTdGF0ZW1lbnRzLnB1c2goW09wcy5PcGVuRWxlbWVudCwgdGFnTmFtZV0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9wbGV2ZWwgPSB0YWdOYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVjb3JhdGVUb3BMZXZlbEVsZW1lbnQodGFnTmFtZSwgc3ltYm9scywgYXR0cnMsIG5ld1N0YXRlbWVudHMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGFkZEZhbGxiYWNrKHN0YXRlbWVudCwgbmV3U3RhdGVtZW50cyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRvcGxldmVsID09PSB1bmRlZmluZWQgJiYgdGFnTmFtZSA9PT0gY29tcG9uZW50TmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9wbGV2ZWwgPSB0YWdOYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVjb3JhdGVUb3BMZXZlbEVsZW1lbnQodGFnTmFtZSwgc3ltYm9scywgYXR0cnMsIG5ld1N0YXRlbWVudHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkRmFsbGJhY2soc3RhdGVtZW50LCBuZXdTdGF0ZW1lbnRzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRvcGxldmVsID09PSB1bmRlZmluZWQgJiYgV2lyZUZvcm1hdC5TdGF0ZW1lbnRzLmlzT3BlbkVsZW1lbnQoc3RhdGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICB0b3BsZXZlbCA9IHN0YXRlbWVudFsxXTtcbiAgICAgICAgICAgICAgICAgICAgaW5Ub3BMZXZlbCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGRlY29yYXRlVG9wTGV2ZWxFbGVtZW50KHRvcGxldmVsLCBzeW1ib2xzLCBhdHRycywgbmV3U3RhdGVtZW50cyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluVG9wTGV2ZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChXaXJlRm9ybWF0LlN0YXRlbWVudHMuaXNGbHVzaEVsZW1lbnQoc3RhdGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluVG9wTGV2ZWwgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoV2lyZUZvcm1hdC5TdGF0ZW1lbnRzLmlzTW9kaWZpZXIoc3RhdGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKGBGb3VuZCBtb2RpZmllciBcIiR7c3RhdGVtZW50WzFdfVwiIG9uIHRoZSB0b3AtbGV2ZWwgZWxlbWVudCBvZiBcIiR7Y29tcG9uZW50TmFtZX1cIlxcLiBNb2RpZmllcnMgY2Fubm90IGJlIG9uIHRoZSB0b3AtbGV2ZWwgZWxlbWVudGApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG5ld1N0YXRlbWVudHMucHVzaChzdGF0ZW1lbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBuZXdTdGF0ZW1lbnRzLnB1c2goW09wcy5DbGllbnRTaWRlU3RhdGVtZW50LCBDbGllbnRTaWRlLk9wcy5EaWRSZW5kZXJMYXlvdXRdKTtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21waWxhYmxlVGVtcGxhdGUobmV3U3RhdGVtZW50cywgc3ltYm9sVGFibGUpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGFkZEZhbGxiYWNrKHN0YXRlbWVudCwgYnVmZmVyKSB7XG4gICAgbGV0IFssLCBhdHRycywsIGJsb2NrXSA9IHN0YXRlbWVudDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGF0dHJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGJ1ZmZlci5wdXNoKGF0dHJzW2ldKTtcbiAgICB9XG4gICAgYnVmZmVyLnB1c2goW09wcy5GbHVzaEVsZW1lbnRdKTtcbiAgICBpZiAoYmxvY2spIHtcbiAgICAgICAgbGV0IHsgc3RhdGVtZW50cyB9ID0gYmxvY2s7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RhdGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYnVmZmVyLnB1c2goc3RhdGVtZW50c1tpXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYnVmZmVyLnB1c2goW09wcy5DbG9zZUVsZW1lbnRdKTtcbn1cbmZ1bmN0aW9uIGRlY29yYXRlVG9wTGV2ZWxFbGVtZW50KHRhZ05hbWUsIHN5bWJvbHMsIGF0dHJzLCBidWZmZXIpIHtcbiAgICBsZXQgYXR0cnNTeW1ib2wgPSBzeW1ib2xzLnB1c2goQVRUUlNfQkxPQ0spO1xuICAgIGJ1ZmZlci5wdXNoKFtPcHMuQ2xpZW50U2lkZVN0YXRlbWVudCwgQ2xpZW50U2lkZS5PcHMuT3BlbkNvbXBvbmVudEVsZW1lbnQsIHRhZ05hbWVdKTtcbiAgICBidWZmZXIucHVzaChbT3BzLkNsaWVudFNpZGVTdGF0ZW1lbnQsIENsaWVudFNpZGUuT3BzLkRpZENyZWF0ZUVsZW1lbnRdKTtcbiAgICBidWZmZXIucHVzaChbT3BzLllpZWxkLCBhdHRyc1N5bWJvbCwgRU1QVFlfQVJSQVldKTtcbiAgICBidWZmZXIucHVzaCguLi5hdHRycyk7XG59Il19
RawInlineBlock.prototype.scan = function scan() {
var statements = this.scanStatements();
return new CompilableTemplate(statements, { parameters: this.parameters, meta: this.meta });
};
return RawInlineBlock;
}(RawBlock);
export var RawProgram = function (_RawBlock2) {
_inherits(RawProgram, _RawBlock2);
function RawProgram(env, meta, statements, symbols, hasEval) {
_classCallCheck(this, RawProgram);
var _this2 = _possibleConstructorReturn(this, _RawBlock2.call(this, env, meta, statements));
_this2.symbols = symbols;
_this2.hasEval = hasEval;
return _this2;
}
RawProgram.prototype.scan = function scan() {
var statements = this.scanStatements();
return new CompilableTemplate(statements, { symbols: this.symbols, hasEval: this.hasEval, meta: this.meta });
};
return RawProgram;
}(RawBlock);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zY2FubmVyLmpzIl0sIm5hbWVzIjpbIkNvbXBpbGVkRHluYW1pY1RlbXBsYXRlIiwiQ29tcGlsZWRTdGF0aWNUZW1wbGF0ZSIsImJ1aWxkZXIiLCJFTVBUWV9BUlJBWSIsIldpcmVGb3JtYXQiLCJkZWJ1Z1NsaWNlIiwiU1RBVEVNRU5UUyIsImNvbXBpbGVTdGF0ZW1lbnQiLCJzdGF0ZW1lbnQiLCJjb21waWxlIiwiQ29tcGlsYWJsZVRlbXBsYXRlIiwic3RhdGVtZW50cyIsInN5bWJvbFRhYmxlIiwiY29tcGlsZWRTdGF0aWMiLCJjb21waWxlZER5bmFtaWMiLCJjb21waWxlU3RhdGljIiwiZW52IiwiY29tcGlsZVN0YXRlbWVudHMiLCJtZXRhIiwic3RhcnQiLCJlbmQiLCJmaW5hbGl6ZSIsImNvbXBpbGVEeW5hbWljIiwic3RhdGljQmxvY2siLCJ0b0pTT04iLCJHbGltbWVyRGVidWciLCJiIiwiQVRUUlNfQkxPQ0siLCJsYXlvdXQiLCJwcmVsdWRlIiwiaGVhZCIsImJvZHkiLCJwb3AiLCJ0YWciLCJwdXNoIiwiT3BzIiwiQ2xpZW50U2lkZVN0YXRlbWVudCIsIkNsaWVudFNpZGUiLCJPcGVuQ29tcG9uZW50RWxlbWVudCIsIkRpZENyZWF0ZUVsZW1lbnQiLCJhdHRyc1N5bWJvbCIsInN5bWJvbHMiLCJsZW5ndGgiLCJjb25jYXQiLCJZaWVsZCIsIkRpZFJlbmRlckxheW91dCIsIlNjYW5uZXIiLCJibG9jayIsInNjYW5FbnRyeVBvaW50IiwiUmF3UHJvZ3JhbSIsImhhc0V2YWwiLCJzY2FuIiwic2NhbkJsb2NrIiwiUmF3SW5saW5lQmxvY2siLCJzY2FuTGF5b3V0IiwiYXR0cnMiLCJFcnJvciIsInBhcmFtZXRlcnMiLCJpcyIsInZhcmlhbnQiLCJ2YWx1ZSIsIkNsaWVudFNpZGVFeHByZXNzaW9uIiwiUmF3QmxvY2siLCJzY2FuU3RhdGVtZW50cyIsImJ1ZmZlciIsImNoaWxkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLFNBQVNBLHVC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QUFPLElBQUlyRCxrQkFBSixDQUF1QkMsVUFBdkIsRUFBbUMsRUFBRThCLFNBQVMsS0FBS0EsT0FBaEIsRUFBeUJTLFNBQVMsS0FBS0EsT0FBdkMsRUFBZ0RoQyxNQUFNLEtBQUtBLElBQTNELEVBQW5DLENBQVA7QUFDSCxLQVRMOztBQUFBO0FBQUEsRUFBZ0M0QyxRQUFoQyIsImZpbGUiOiJsaWIvc2Nhbm5lci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBpbGVkRHluYW1pY1RlbXBsYXRlLCBDb21waWxlZFN0YXRpY1RlbXBsYXRlIH0gZnJvbSAnLi9jb21waWxlZC9ibG9ja3MnO1xuaW1wb3J0IHsgYnVpbGRlciB9IGZyb20gJy4vY29tcGlsZXInO1xuaW1wb3J0IHsgRU1QVFlfQVJSQVkgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCAqIGFzIFdpcmVGb3JtYXQgZnJvbSAnQGdsaW1tZXIvd2lyZS1mb3JtYXQnO1xuaW1wb3J0IHsgZGVidWdTbGljZSB9IGZyb20gJy4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBTVEFURU1FTlRTIH0gZnJvbSAnLi9zeW50YXgvZnVuY3Rpb25zJztcbmV4cG9ydCBmdW5jdGlvbiBjb21waWxlU3RhdGVtZW50KHN0YXRlbWVudCwgYnVpbGRlcikge1xuICAgIFNUQVRFTUVOVFMuY29tcGlsZShzdGF0ZW1lbnQsIGJ1aWxkZXIpO1xufVxuZXhwb3J0IGNsYXNzIENvbXBpbGFibGVUZW1wbGF0ZSB7XG4gICAgY29uc3RydWN0b3Ioc3RhdGVtZW50cywgc3ltYm9sVGFibGUpIHtcbiAgICAgICAgdGhpcy5zdGF0ZW1lbnRzID0gc3RhdGVtZW50cztcbiAgICAgICAgdGhpcy5zeW1ib2xUYWJsZSA9IHN5bWJvbFRhYmxlO1xuICAgICAgICB0aGlzLmNvbXBpbGVkU3RhdGljID0gbnVsbDtcbiAgICAgICAgdGhpcy5jb21waWxlZER5bmFtaWMgPSBudWxsO1xuICAgIH1cbiAgICBjb21waWxlU3RhdGljKGVudikge1xuICAgICAgICBsZXQgeyBjb21waWxlZFN0YXRpYyB9ID0gdGhpcztcbiAgICAgICAgaWYgKCFjb21waWxlZFN0YXRpYykge1xuICAgICAgICAgICAgbGV0IGJ1aWxkZXIgPSBjb21waWxlU3RhdGVtZW50cyh0aGlzLnN0YXRlbWVudHMsIHRoaXMuc3ltYm9sVGFibGUubWV0YSwgZW52KTtcbiAgICAgICAgICAgIGxldCBzdGFydCA9IGJ1aWxkZXIuc3RhcnQ7XG4gICAgICAgICAgICBsZXQgZW5kID0gYnVpbGRlci5maW5hbGl6ZSgpO1xuICAgICAgICAgICAgZGVidWdTbGljZShlbnYsIHN0YXJ0LCBlbmQpO1xuICAgICAgICAgICAgY29tcGlsZWRTdGF0aWMgPSB0aGlzLmNvbXBpbGVkU3RhdGljID0gbmV3IENvbXBpbGVkU3RhdGljVGVtcGxhdGUoc3RhcnQsIGVuZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbXBpbGVkU3RhdGljO1xuICAgIH1cbiAgICBjb21waWxlRHluYW1pYyhlbnYpIHtcbiAgICAgICAgbGV0IHsgY29tcGlsZWREeW5hbWljIH0gPSB0aGlzO1xuICAgICAgICBpZiAoIWNvbXBpbGVkRHluYW1pYykge1xuICAgICAgICAgICAgbGV0IHN0YXRpY0Jsb2NrID0gdGhpcy5jb21waWxlU3RhdGljKGVudik7XG4gICAgICAgICAgICBjb21waWxlZER5bmFtaWMgPSBuZXcgQ29tcGlsZWREeW5hbWljVGVtcGxhdGUoc3RhdGljQmxvY2suc3RhcnQsIHN0YXRpY0Jsb2NrLmVuZCwgdGhpcy5zeW1ib2xUYWJsZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbXBpbGVkRHluYW1pYztcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4geyBHbGltbWVyRGVidWc6ICc8dGVtcGxhdGU+JyB9O1xuICAgIH1cbn1cbmZ1bmN0aW9uIGNvbXBpbGVTdGF0ZW1lbnRzKHN0YXRlbWVudHMsIG1ldGEsIGVudikge1xuICAgIGxldCBiID0gYnVpbGRlcihlbnYsIG1ldGEpO1xuICAgIGZvciAobGV0IHN0YXRlbWVudCBvZiBzdGF0ZW1lbnRzKSB7XG4gICAgICAgIGNvbXBpbGVTdGF0ZW1lbnQoc3RhdGVtZW50LCBiKTtcbiAgICB9XG4gICAgcmV0dXJuIGI7XG59XG5leHBvcnQgY29uc3QgQVRUUlNfQkxPQ0sgPSAnJmF0dHJzJztcbmV4cG9ydCBmdW5jdGlvbiBsYXlvdXQocHJlbHVkZSwgaGVhZCwgYm9keSwgc3ltYm9sVGFibGUpIHtcbiAgICBsZXQgWywgdGFnXSA9IHByZWx1ZGUucG9wKCk7XG4gICAgcHJlbHVkZS5wdXNoKFtPcHMuQ2xpZW50U2lkZVN0YXRlbWVudCwgQ2xpZW50U2lkZS5PcHMuT3BlbkNvbXBvbmVudEVsZW1lbnQsIHRhZ10pO1xuICAgIHByZWx1ZGUucHVzaChbT3BzLkNsaWVudFNpZGVTdGF0ZW1lbnQsIENsaWVudFNpZGUuT3BzLkRpZENyZWF0ZUVsZW1lbnRdKTtcbiAgICBsZXQgYXR0cnNTeW1ib2wgPSBzeW1ib2xUYWJsZS5zeW1ib2xzLmxlbmd0aCArIDE7XG4gICAgc3ltYm9sVGFibGUuc3ltYm9scy5wdXNoKEFUVFJTX0JMT0NLKTtcbiAgICBsZXQgc3RhdGVtZW50cyA9IHByZWx1ZGUuY29uY2F0KFtbT3BzLllpZWxkLCBhdHRyc1N5bWJvbCwgRU1QVFlfQVJSQVldXSkuY29uY2F0KGhlYWQpLmNvbmNhdChib2R5KS5jb25jYXQoW1tPcHMuQ2xpZW50U2lkZVN0YXRlbWVudCwgQ2xpZW50U2lkZS5PcHMuRGlkUmVuZGVyTGF5b3V0XV0pO1xuICAgIHJldHVybiBuZXcgQ29tcGlsYWJsZVRlbXBsYXRlKHN0YXRlbWVudHMsIHN5bWJvbFRhYmxlKTtcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNjYW5uZXIge1xuICAgIGNvbnN0cnVjdG9yKGJsb2NrLCBlbnYpIHtcbiAgICAgICAgdGhpcy5ibG9jayA9IGJsb2NrO1xuICAgICAgICB0aGlzLmVudiA9IGVudjtcbiAgICB9XG4gICAgc2NhbkVudHJ5UG9pbnQobWV0YSkge1xuICAgICAgICBsZXQgeyBibG9jaywgZW52IH0gPSB0aGlzO1xuICAgICAgICBsZXQgc3RhdGVtZW50cztcbiAgICAgICAgaWYgKGJsb2NrLnByZWx1ZGUgJiYgYmxvY2suaGVhZCkge1xuICAgICAgICAgICAgc3RhdGVtZW50cyA9IGJsb2NrLnByZWx1ZGUuY29uY2F0KGJsb2NrLmhlYWQpLmNvbmNhdChibG9jay5zdGF0ZW1lbnRzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN0YXRlbWVudHMgPSBibG9jay5zdGF0ZW1lbnRzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgUmF3UHJvZ3JhbShlbnYsIG1ldGEsIHN0YXRlbWVudHMsIGJsb2NrLnN5bWJvbHMsIGJsb2NrLmhhc0V2YWwpLnNjYW4oKTtcbiAgICB9XG4gICAgc2NhbkJsb2NrKG1ldGEpIHtcbiAgICAgICAgbGV0IHsgYmxvY2ssIGVudiB9ID0gdGhpcztcbiAgICAgICAgbGV0IHN0YXRlbWVudHM7XG4gICAgICAgIGlmIChibG9jay5wcmVsdWRlICYmIGJsb2NrLmhlYWQpIHtcbiAgICAgICAgICAgIHN0YXRlbWVudHMgPSBibG9jay5wcmVsdWRlLmNvbmNhdChibG9jay5oZWFkKS5jb25jYXQoYmxvY2suc3RhdGVtZW50cyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdGF0ZW1lbnRzID0gYmxvY2suc3RhdGVtZW50cztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFJhd0lubGluZUJsb2NrKGVudiwgbWV0YSwgc3RhdGVtZW50cywgRU1QVFlfQVJSQVkpLnNjYW4oKTtcbiAgICB9XG4gICAgc2NhbkxheW91dChtZXRhLCBhdHRycykge1xuICAgICAgICBsZXQgeyBibG9jayB9ID0gdGhpcztcbiAgICAgICAgbGV0IHsgc3ltYm9scywgaGFzRXZhbCB9ID0gYmxvY2s7XG4gICAgICAgIGlmICghYmxvY2sucHJlbHVkZSB8fCAhYmxvY2suaGVhZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBIGxheW91dCBtdXN0IGhhdmUgYSB0b3AtbGV2ZWwgZWxlbWVudGApO1xuICAgICAgICB9XG4gICAgICAgIGxldCBzeW1ib2xUYWJsZSA9IHsgbWV0YSwgaGFzRXZhbCwgc3ltYm9scyB9O1xuICAgICAgICBsZXQgeyBzdGF0ZW1lbnRzOiBwcmVsdWRlIH0gPSBzY2FuQmxvY2soeyBzdGF0ZW1lbnRzOiBibG9jay5wcmVsdWRlLCBwYXJhbWV0ZXJzOiBFTVBUWV9BUlJBWSB9LCBtZXRhLCB0aGlzLmVudik7XG4gICAgICAgIGxldCB7IHN0YXRlbWVudHM6IGhlYWQgfSA9IHNjYW5CbG9jayh7IHN0YXRlbWVudHM6IFsuLi5hdHRycywgLi4uYmxvY2suaGVhZF0sIHBhcmFtZXRlcnM6IEVNUFRZX0FSUkFZIH0sIG1ldGEsIHRoaXMuZW52KTtcbiAgICAgICAgbGV0IHsgc3RhdGVtZW50czogYm9keSB9ID0gc2NhbkJsb2NrKHsgc3RhdGVtZW50czogYmxvY2suc3RhdGVtZW50cywgcGFyYW1ldGVyczogRU1QVFlfQVJSQVkgfSwgbWV0YSwgdGhpcy5lbnYpO1xuICAgICAgICByZXR1cm4gbGF5b3V0KHByZWx1ZGUsIGhlYWQsIGJvZHksIHN5bWJvbFRhYmxlKTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gc2NhbkJsb2NrKGJsb2NrLCBtZXRhLCBlbnYpIHtcbiAgICByZXR1cm4gbmV3IFJhd0lubGluZUJsb2NrKGVudiwgbWV0YSwgYmxvY2suc3RhdGVtZW50cywgRU1QVFlfQVJSQVkpLnNjYW4oKTtcbn1cbmV4cG9ydCB2YXIgQ2xpZW50U2lkZTtcbihmdW5jdGlvbiAoQ2xpZW50U2lkZSkge1xuICAgIHZhciBPcHM7XG4gICAgKGZ1bmN0aW9uIChPcHMpIHtcbiAgICAgICAgT3BzW09wc1tcIk9wZW5Db21wb25lbnRFbGVtZW50XCJdID0gMF0gPSBcIk9wZW5Db21wb25lbnRFbGVtZW50XCI7XG4gICAgICAgIE9wc1tPcHNbXCJEaWRDcmVhdGVFbGVtZW50XCJdID0gMV0gPSBcIkRpZENyZWF0ZUVsZW1lbnRcIjtcbiAgICAgICAgT3BzW09wc1tcIkRpZFJlbmRlckxheW91dFwiXSA9IDJdID0gXCJEaWRSZW5kZXJMYXlvdXRcIjtcbiAgICAgICAgT3BzW09wc1tcIk9wdGltaXplZEFwcGVuZFwiXSA9IDNdID0gXCJPcHRpbWl6ZWRBcHBlbmRcIjtcbiAgICAgICAgT3BzW09wc1tcIlVub3B0aW1pemVkQXBwZW5kXCJdID0gNF0gPSBcIlVub3B0aW1pemVkQXBwZW5kXCI7XG4gICAgICAgIE9wc1tPcHNbXCJTdGF0aWNQYXJ0aWFsXCJdID0gNV0gPSBcIlN0YXRpY1BhcnRpYWxcIjtcbiAgICAgICAgT3BzW09wc1tcIkR5bmFtaWNQYXJ0aWFsXCJdID0gNl0gPSBcIkR5bmFtaWNQYXJ0aWFsXCI7XG4gICAgICAgIE9wc1tPcHNbXCJOZXN0ZWRCbG9ja1wiXSA9IDddID0gXCJOZXN0ZWRCbG9ja1wiO1xuICAgICAgICBPcHNbT3BzW1wiU2Nhbm5lZEJsb2NrXCJdID0gOF0gPSBcIlNjYW5uZWRCbG9ja1wiO1xuICAgICAgICBPcHNbT3BzW1wiRnVuY3Rpb25FeHByZXNzaW9uXCJdID0gOV0gPSBcIkZ1bmN0aW9uRXhwcmVzc2lvblwiO1xuICAgIH0pKE9wcyA9IENsaWVudFNpZGUuT3BzIHx8IChDbGllbnRTaWRlLk9wcyA9IHt9KSk7XG4gICAgZnVuY3Rpb24gaXModmFyaWFudCkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWVbMF0gPT09IFdpcmVGb3JtYXQuT3BzLkNsaWVudFNpZGVFeHByZXNzaW9uIHx8IHZhbHVlWzBdID09PSBXaXJlRm9ybWF0Lk9wcy5DbGllbnRTaWRlU3RhdGVtZW50ICYmIHZhbHVlWzFdID09PSB2YXJpYW50O1xuICAgICAgICB9O1xuICAgIH1cbiAgICBDbGllbnRTaWRlLmlzID0gaXM7XG59KShDbGllbnRTaWRlIHx8IChDbGllbnRTaWRlID0ge30pKTtcbmNvbnN0IHsgT3BzIH0gPSBXaXJlRm9ybWF0O1xuZXhwb3J0IGNsYXNzIFJhd0Jsb2NrIHtcbiAgICBjb25zdHJ1Y3RvcihlbnYsIG1ldGEsIHN0YXRlbWVudHMpIHtcbiAgICAgICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgICAgIHRoaXMubWV0YSA9IG1ldGE7XG4gICAgICAgIHRoaXMuc3RhdGVtZW50cyA9IHN0YXRlbWVudHM7XG4gICAgfVxuICAgIHNjYW5TdGF0ZW1lbnRzKCkge1xuICAgICAgICBsZXQgYnVmZmVyID0gW107XG4gICAgICAgIGxldCBzdGF0ZW1lbnRzID0gdGhpcy5zdGF0ZW1lbnRzO1xuICAgICAgICBmb3IgKGxldCBzdGF0ZW1lbnQgb2Ygc3RhdGVtZW50cykge1xuICAgICAgICAgICAgYnVmZmVyLnB1c2goc3RhdGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYnVmZmVyO1xuICAgIH1cbiAgICBjaGlsZChibG9jaykge1xuICAgICAgICBpZiAoIWJsb2NrKSByZXR1cm4gbnVsbDtcbiAgICAgICAgcmV0dXJuIG5ldyBSYXdJbmxpbmVCbG9jayh0aGlzLmVudiwgdGhpcy5tZXRhLCBibG9jay5zdGF0ZW1lbnRzLCBibG9jay5wYXJhbWV0ZXJzKTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgUmF3SW5saW5lQmxvY2sgZXh0ZW5kcyBSYXdCbG9jayB7XG4gICAgY29uc3RydWN0b3IoZW52LCBtZXRhLCBzdGF0ZW1lbnRzLCBwYXJhbWV0ZXJzKSB7XG4gICAgICAgIHN1cGVyKGVudiwgbWV0YSwgc3RhdGVtZW50cyk7XG4gICAgICAgIHRoaXMucGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7XG4gICAgfVxuICAgIHNjYW4oKSB7XG4gICAgICAgIGxldCBzdGF0ZW1lbnRzID0gdGhpcy5zY2FuU3RhdGVtZW50cygpO1xuICAgICAgICByZXR1cm4gbmV3IENvbXBpbGFibGVUZW1wbGF0ZShzdGF0ZW1lbnRzLCB7IHBhcmFtZXRlcnM6IHRoaXMucGFyYW1ldGVycywgbWV0YTogdGhpcy5tZXRhIH0pO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBSYXdQcm9ncmFtIGV4dGVuZHMgUmF3QmxvY2sge1xuICAgIGNvbnN0cnVjdG9yKGVudiwgbWV0YSwgc3RhdGVtZW50cywgc3ltYm9scywgaGFzRXZhbCkge1xuICAgICAgICBzdXBlcihlbnYsIG1ldGEsIHN0YXRlbWVudHMpO1xuICAgICAgICB0aGlzLnN5bWJvbHMgPSBzeW1ib2xzO1xuICAgICAgICB0aGlzLmhhc0V2YWwgPSBoYXNFdmFsO1xuICAgIH1cbiAgICBzY2FuKCkge1xuICAgICAgICBsZXQgc3RhdGVtZW50cyA9IHRoaXMuc2NhblN0YXRlbWVudHMoKTtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21waWxhYmxlVGVtcGxhdGUoc3RhdGVtZW50cywgeyBzeW1ib2xzOiB0aGlzLnN5bWJvbHMsIGhhc0V2YWw6IHRoaXMuaGFzRXZhbCwgbWV0YTogdGhpcy5tZXRhIH0pO1xuICAgIH1cbn0iXX0=

@@ -5,4 +5,4 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

import { ElementStack } from './builder';
import { VM } from './vm';
import Scanner from './scanner';
import { VM } from './vm';
export var TemplateIterator = function () {

@@ -69,4 +69,4 @@ function TemplateIterator(vm) {

ScannableTemplate.prototype.asLayout = function asLayout(componentName, attrs) {
if (!this.layout) this.layout = this.scanner.scanLayout(this.compilationMeta(), attrs || EMPTY_ARRAY, componentName);
ScannableTemplate.prototype.asLayout = function asLayout(attrs) {
if (!this.layout) this.layout = this.scanner.scanLayout(this.compilationMeta(), attrs || EMPTY_ARRAY);
return this.layout;

@@ -93,2 +93,2 @@ };

}();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi90ZW1wbGF0ZS5qcyJdLCJuYW1lcyI6WyJhc3NpZ24iLCJFTVBUWV9BUlJBWSIsIkVsZW1lbnRTdGFjayIsIlNjYW5uZXIiLCJWTSIsIlRlbXBsYXRlSXRlcmF0b3IiLCJ2bSIsIm5leHQiLCJjbGllbnRJZCIsInRlbXBsYXRlRmFjdG9yeSIsInRlbXBsYXRlSWQiLCJpZCIsIm1ldGEiLCJibG9jayIsInBhcnNlZEJsb2NrIiwiY3JlYXRlIiwiZW52IiwiZW52TWV0YSIsIm5ld01ldGEiLCJKU09OIiwicGFyc2UiLCJTY2FubmFibGVUZW1wbGF0ZSIsInJhd0Jsb2NrIiwiZW50cnlQb2ludCIsImxheW91dCIsInBhcnRpYWwiLCJzY2FubmVyIiwic3ltYm9scyIsImhhc0V2YWwiLCJyZW5kZXIiLCJzZWxmIiwiYXBwZW5kVG8iLCJkeW5hbWljU2NvcGUiLCJlbGVtZW50U3RhY2siLCJmb3JJbml0aWFsUmVuZGVyIiwiY29tcGlsZWQiLCJhc0VudHJ5UG9pbnQiLCJjb21waWxlRHluYW1pYyIsImluaXRpYWwiLCJzY2FuRW50cnlQb2ludCIsImNvbXBpbGF0aW9uTWV0YSIsImFzTGF5b3V0IiwiY29tcG9uZW50TmFtZSIsImF0dHJzIiwic2NhbkxheW91dCIsImFzUGFydGlhbCIsImFzQmxvY2siLCJzY2FuQmxvY2siLCJ0ZW1wbGF0ZU1ldGEiXSwibWFwcGluZ3MiOiI7O0FBQUEsU0FBU0EsTUFBVCxFQUFpQkMsV0FBakIsUUFBb0MsZUFBcEM7QUFDQSxTQUFTQyxZQUFULFFBQTZCLFdBQTdCO0FBQ0EsT0FBT0MsT0FBUCxNQUFvQixXQUFwQjtBQUNBLFNBQVNDLEVBQVQsUUFBbUIsTUFBbkI7QUFDQSxXQUFhQyxnQkFBYjtBQUNJLDhCQUFZQyxFQUFaLEVBQWdCO0FBQUE7O0FBQ1osYUFBS0EsRUFBTCxHQUFVQSxFQUFWO0FBQ0g7O0FBSEwsK0JBSUlDLElBSkosbUJBSVc7QUFDSCxlQUFPLEtBQUtELEVBQUwsQ0FBUUMsSUFBUixFQUFQO0FBQ0gs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QUFDSCxLOztnQ0FDRHFCLE8sc0JBQVU7QUFDTixZQUFJLENBQUMsS0FBS2pDLEtBQVYsRUFBaUIsS0FBS0EsS0FBTCxHQUFhLEtBQUthLE9BQUwsQ0FBYXFCLFNBQWIsQ0FBdUIsS0FBS1AsZUFBTCxFQUF2QixDQUFiO0FBQ2pCLGVBQU8sS0FBSzNCLEtBQVo7QUFDSCxLOztnQ0FDRDJCLGUsOEJBQW1DO0FBQUEsWUFBbkJLLFNBQW1CLHVFQUFQLEtBQU87O0FBQy9CLGVBQU8sRUFBRUcsY0FBYyxLQUFLcEMsSUFBckIsRUFBMkJlLFNBQVMsS0FBS0EsT0FBekMsRUFBa0RrQixvQkFBbEQsRUFBUDtBQUNILEsiLCJmaWxlIjoibGliL3RlbXBsYXRlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXNzaWduLCBFTVBUWV9BUlJBWSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgRWxlbWVudFN0YWNrIH0gZnJvbSAnLi9idWlsZGVyJztcbmltcG9ydCBTY2FubmVyIGZyb20gJy4vc2Nhbm5lcic7XG5pbXBvcnQgeyBWTSB9IGZyb20gJy4vdm0nO1xuZXhwb3J0IGNsYXNzIFRlbXBsYXRlSXRlcmF0b3Ige1xuICAgIGNvbnN0cnVjdG9yKHZtKSB7XG4gICAgICAgIHRoaXMudm0gPSB2bTtcbiAgICB9XG4gICAgbmV4dCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudm0ubmV4dCgpO1xuICAgIH1cbn1cbmxldCBjbGllbnRJZCA9IDA7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0ZW1wbGF0ZUZhY3RvcnkoeyBpZDogdGVtcGxhdGVJZCwgbWV0YSwgYmxvY2sgfSkge1xuICAgIGxldCBwYXJzZWRCbG9jaztcbiAgICBsZXQgaWQgPSB0ZW1wbGF0ZUlkIHx8IGBjbGllbnQtJHtjbGllbnRJZCsrfWA7XG4gICAgbGV0IGNyZWF0ZSA9IChlbnYsIGVudk1ldGEpID0+IHtcbiAgICAgICAgbGV0IG5ld01ldGEgPSBlbnZNZXRhID8gYXNzaWduKHt9LCBlbnZNZXRhLCBtZXRhKSA6IG1ldGE7XG4gICAgICAgIGlmICghcGFyc2VkQmxvY2spIHtcbiAgICAgICAgICAgIHBhcnNlZEJsb2NrID0gSlNPTi5wYXJzZShibG9jayk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBTY2FubmFibGVUZW1wbGF0ZShpZCwgbmV3TWV0YSwgZW52LCBwYXJzZWRCbG9jayk7XG4gICAgfTtcbiAgICByZXR1cm4geyBpZCwgbWV0YSwgY3JlYXRlIH07XG59XG5jbGFzcyBTY2FubmFibGVUZW1wbGF0ZSB7XG4gICAgY29uc3RydWN0b3IoaWQsIG1ldGEsIGVudiwgcmF3QmxvY2spIHtcbiAgICAgICAgdGhpcy5pZCA9IGlkO1xuICAgICAgICB0aGlzLm1ldGEgPSBtZXRhO1xuICAgICAgICB0aGlzLmVudiA9IGVudjtcbiAgICAgICAgdGhpcy5lbnRyeVBvaW50ID0gbnVsbDtcbiAgICAgICAgdGhpcy5sYXlvdXQgPSBudWxsO1xuICAgICAgICB0aGlzLnBhcnRpYWwgPSBudWxsO1xuICAgICAgICB0aGlzLmJsb2NrID0gbnVsbDtcbiAgICAgICAgdGhpcy5zY2FubmVyID0gbmV3IFNjYW5uZXIocmF3QmxvY2ssIGVudik7XG4gICAgICAgIHRoaXMuc3ltYm9scyA9IHJhd0Jsb2NrLnN5bWJvbHM7XG4gICAgICAgIHRoaXMuaGFzRXZhbCA9IHJhd0Jsb2NrLmhhc0V2YWw7XG4gICAgfVxuICAgIHJlbmRlcihzZWxmLCBhcHBlbmRUbywgZHluYW1pY1Njb3BlKSB7XG4gICAgICAgIGxldCB7IGVudiB9ID0gdGhpcztcbiAgICAgICAgbGV0IGVsZW1lbnRTdGFjayA9IEVsZW1lbnRTdGFjay5mb3JJbml0aWFsUmVuZGVyKGVudiwgYXBwZW5kVG8sIG51bGwpO1xuICAgICAgICBsZXQgY29tcGlsZWQgPSB0aGlzLmFzRW50cnlQb2ludCgpLmNvbXBpbGVEeW5hbWljKGVudik7XG4gICAgICAgIGxldCB2bSA9IFZNLmluaXRpYWwoZW52LCBzZWxmLCBkeW5hbWljU2NvcGUsIGVsZW1lbnRTdGFjaywgY29tcGlsZWQpO1xuICAgICAgICByZXR1cm4gbmV3IFRlbXBsYXRlSXRlcmF0b3Iodm0pO1xuICAgIH1cbiAgICBhc0VudHJ5UG9pbnQoKSB7XG4gICAgICAgIGlmICghdGhpcy5lbnRyeVBvaW50KSB0aGlzLmVudHJ5UG9pbnQgPSB0aGlzLnNjYW5uZXIuc2NhbkVudHJ5UG9pbnQodGhpcy5jb21waWxhdGlvbk1ldGEoKSk7XG4gICAgICAgIHJldHVybiB0aGlzLmVudHJ5UG9pbnQ7XG4gICAgfVxuICAgIGFzTGF5b3V0KGNvbXBvbmVudE5hbWUsIGF0dHJzKSB7XG4gICAgICAgIGlmICghdGhpcy5sYXlvdXQpIHRoaXMubGF5b3V0ID0gdGhpcy5zY2FubmVyLnNjYW5MYXlvdXQodGhpcy5jb21waWxhdGlvbk1ldGEoKSwgYXR0cnMgfHwgRU1QVFlfQVJSQVksIGNvbXBvbmVudE5hbWUpO1xuICAgICAgICByZXR1cm4gdGhpcy5sYXlvdXQ7XG4gICAgfVxuICAgIGFzUGFydGlhbCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnBhcnRpYWwpIHRoaXMucGFydGlhbCA9IHRoaXMuc2Nhbm5lci5zY2FuRW50cnlQb2ludCh0aGlzLmNvbXBpbGF0aW9uTWV0YSh0cnVlKSk7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcnRpYWw7XG4gICAgfVxuICAgIGFzQmxvY2soKSB7XG4gICAgICAgIGlmICghdGhpcy5ibG9jaykgdGhpcy5ibG9jayA9IHRoaXMuc2Nhbm5lci5zY2FuQmxvY2sodGhpcy5jb21waWxhdGlvbk1ldGEoKSk7XG4gICAgICAgIHJldHVybiB0aGlzLmJsb2NrO1xuICAgIH1cbiAgICBjb21waWxhdGlvbk1ldGEoYXNQYXJ0aWFsID0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIHsgdGVtcGxhdGVNZXRhOiB0aGlzLm1ldGEsIHN5bWJvbHM6IHRoaXMuc3ltYm9scywgYXNQYXJ0aWFsIH07XG4gICAgfVxufSJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi90ZW1wbGF0ZS5qcyJdLCJuYW1lcyI6WyJhc3NpZ24iLCJFTVBUWV9BUlJBWSIsIkVsZW1lbnRTdGFjayIsIlZNIiwiU2Nhbm5lciIsIlRlbXBsYXRlSXRlcmF0b3IiLCJ2bSIsIm5leHQiLCJjbGllbnRJZCIsInRlbXBsYXRlRmFjdG9yeSIsInRlbXBsYXRlSWQiLCJpZCIsIm1ldGEiLCJibG9jayIsInBhcnNlZEJsb2NrIiwiY3JlYXRlIiwiZW52IiwiZW52TWV0YSIsIm5ld01ldGEiLCJKU09OIiwicGFyc2UiLCJTY2FubmFibGVUZW1wbGF0ZSIsInJhd0Jsb2NrIiwiZW50cnlQb2ludCIsImxheW91dCIsInBhcnRpYWwiLCJzY2FubmVyIiwic3ltYm9scyIsImhhc0V2YWwiLCJyZW5kZXIiLCJzZWxmIiwiYXBwZW5kVG8iLCJkeW5hbWljU2NvcGUiLCJlbGVtZW50U3RhY2siLCJmb3JJbml0aWFsUmVuZGVyIiwiY29tcGlsZWQiLCJhc0VudHJ5UG9pbnQiLCJjb21waWxlRHluYW1pYyIsImluaXRpYWwiLCJzY2FuRW50cnlQb2ludCIsImNvbXBpbGF0aW9uTWV0YSIsImFzTGF5b3V0IiwiYXR0cnMiLCJzY2FuTGF5b3V0IiwiYXNQYXJ0aWFsIiwiYXNCbG9jayIsInNjYW5CbG9jayIsInRlbXBsYXRlTWV0YSJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxTQUFTQSxNQUFULEVBQWlCQyxXQUFqQixRQUFvQyxlQUFwQztBQUNBLFNBQVNDLFlBQVQsUUFBNkIsV0FBN0I7QUFDQSxTQUFTQyxFQUFULFFBQW1CLE1BQW5CO0FBQ0EsT0FBT0MsT0FBUCxNQUFvQixXQUFwQjtBQUNBLFdBQWFDLGdCQUFiO0FBQ0ksOEJBQVlDLEVBQVosRUFBZ0I7QUFBQTs7QUFDWixhQUFLQSxFQUFMLEdBQVVBLEVBQVY7QUFDSDs7QUFITCwrQkFJSUMsSUFKSixtQkFJVztBQUNILGVBQU8sS0FBS0QsRUFBTCxDQUFRQyxJQUFSLEVBQVA7QUFDSCxLQU5MOztBQUFBO0FBQUE7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S0FBS2hDLEtBQVYsRUFBaUIsS0FBS0EsS0FBTCxHQUFhLEtBQUthLE9BQUwsQ0FBYW9CLFNBQWIsQ0FBdUIsS0FBS04sZUFBTCxFQUF2QixDQUFiO0FBQ2pCLGVBQU8sS0FBSzNCLEtBQVo7QUFDSCxLOztnQ0FDRDJCLGUsOEJBQW1DO0FBQUEsWUFBbkJJLFNBQW1CLHVFQUFQLEtBQU87O0FBQy9CLGVBQU8sRUFBRUcsY0FBYyxLQUFLbkMsSUFBckIsRUFBMkJlLFNBQVMsS0FBS0EsT0FBekMsRUFBa0RpQixvQkFBbEQsRUFBUDtBQUNILEsiLCJmaWxlIjoibGliL3RlbXBsYXRlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXNzaWduLCBFTVBUWV9BUlJBWSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgRWxlbWVudFN0YWNrIH0gZnJvbSAnLi9idWlsZGVyJztcbmltcG9ydCB7IFZNIH0gZnJvbSAnLi92bSc7XG5pbXBvcnQgU2Nhbm5lciBmcm9tICcuL3NjYW5uZXInO1xuZXhwb3J0IGNsYXNzIFRlbXBsYXRlSXRlcmF0b3Ige1xuICAgIGNvbnN0cnVjdG9yKHZtKSB7XG4gICAgICAgIHRoaXMudm0gPSB2bTtcbiAgICB9XG4gICAgbmV4dCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudm0ubmV4dCgpO1xuICAgIH1cbn1cbmxldCBjbGllbnRJZCA9IDA7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0ZW1wbGF0ZUZhY3RvcnkoeyBpZDogdGVtcGxhdGVJZCwgbWV0YSwgYmxvY2sgfSkge1xuICAgIGxldCBwYXJzZWRCbG9jaztcbiAgICBsZXQgaWQgPSB0ZW1wbGF0ZUlkIHx8IGBjbGllbnQtJHtjbGllbnRJZCsrfWA7XG4gICAgbGV0IGNyZWF0ZSA9IChlbnYsIGVudk1ldGEpID0+IHtcbiAgICAgICAgbGV0IG5ld01ldGEgPSBlbnZNZXRhID8gYXNzaWduKHt9LCBlbnZNZXRhLCBtZXRhKSA6IG1ldGE7XG4gICAgICAgIGlmICghcGFyc2VkQmxvY2spIHtcbiAgICAgICAgICAgIHBhcnNlZEJsb2NrID0gSlNPTi5wYXJzZShibG9jayk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBTY2FubmFibGVUZW1wbGF0ZShpZCwgbmV3TWV0YSwgZW52LCBwYXJzZWRCbG9jayk7XG4gICAgfTtcbiAgICByZXR1cm4geyBpZCwgbWV0YSwgY3JlYXRlIH07XG59XG5jbGFzcyBTY2FubmFibGVUZW1wbGF0ZSB7XG4gICAgY29uc3RydWN0b3IoaWQsIG1ldGEsIGVudiwgcmF3QmxvY2spIHtcbiAgICAgICAgdGhpcy5pZCA9IGlkO1xuICAgICAgICB0aGlzLm1ldGEgPSBtZXRhO1xuICAgICAgICB0aGlzLmVudiA9IGVudjtcbiAgICAgICAgdGhpcy5lbnRyeVBvaW50ID0gbnVsbDtcbiAgICAgICAgdGhpcy5sYXlvdXQgPSBudWxsO1xuICAgICAgICB0aGlzLnBhcnRpYWwgPSBudWxsO1xuICAgICAgICB0aGlzLmJsb2NrID0gbnVsbDtcbiAgICAgICAgdGhpcy5zY2FubmVyID0gbmV3IFNjYW5uZXIocmF3QmxvY2ssIGVudik7XG4gICAgICAgIHRoaXMuc3ltYm9scyA9IHJhd0Jsb2NrLnN5bWJvbHM7XG4gICAgICAgIHRoaXMuaGFzRXZhbCA9IHJhd0Jsb2NrLmhhc0V2YWw7XG4gICAgfVxuICAgIHJlbmRlcihzZWxmLCBhcHBlbmRUbywgZHluYW1pY1Njb3BlKSB7XG4gICAgICAgIGxldCB7IGVudiB9ID0gdGhpcztcbiAgICAgICAgbGV0IGVsZW1lbnRTdGFjayA9IEVsZW1lbnRTdGFjay5mb3JJbml0aWFsUmVuZGVyKGVudiwgYXBwZW5kVG8sIG51bGwpO1xuICAgICAgICBsZXQgY29tcGlsZWQgPSB0aGlzLmFzRW50cnlQb2ludCgpLmNvbXBpbGVEeW5hbWljKGVudik7XG4gICAgICAgIGxldCB2bSA9IFZNLmluaXRpYWwoZW52LCBzZWxmLCBkeW5hbWljU2NvcGUsIGVsZW1lbnRTdGFjaywgY29tcGlsZWQpO1xuICAgICAgICByZXR1cm4gbmV3IFRlbXBsYXRlSXRlcmF0b3Iodm0pO1xuICAgIH1cbiAgICBhc0VudHJ5UG9pbnQoKSB7XG4gICAgICAgIGlmICghdGhpcy5lbnRyeVBvaW50KSB0aGlzLmVudHJ5UG9pbnQgPSB0aGlzLnNjYW5uZXIuc2NhbkVudHJ5UG9pbnQodGhpcy5jb21waWxhdGlvbk1ldGEoKSk7XG4gICAgICAgIHJldHVybiB0aGlzLmVudHJ5UG9pbnQ7XG4gICAgfVxuICAgIGFzTGF5b3V0KGF0dHJzKSB7XG4gICAgICAgIGlmICghdGhpcy5sYXlvdXQpIHRoaXMubGF5b3V0ID0gdGhpcy5zY2FubmVyLnNjYW5MYXlvdXQodGhpcy5jb21waWxhdGlvbk1ldGEoKSwgYXR0cnMgfHwgRU1QVFlfQVJSQVkpO1xuICAgICAgICByZXR1cm4gdGhpcy5sYXlvdXQ7XG4gICAgfVxuICAgIGFzUGFydGlhbCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnBhcnRpYWwpIHRoaXMucGFydGlhbCA9IHRoaXMuc2Nhbm5lci5zY2FuRW50cnlQb2ludCh0aGlzLmNvbXBpbGF0aW9uTWV0YSh0cnVlKSk7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcnRpYWw7XG4gICAgfVxuICAgIGFzQmxvY2soKSB7XG4gICAgICAgIGlmICghdGhpcy5ibG9jaykgdGhpcy5ibG9jayA9IHRoaXMuc2Nhbm5lci5zY2FuQmxvY2sodGhpcy5jb21waWxhdGlvbk1ldGEoKSk7XG4gICAgICAgIHJldHVybiB0aGlzLmJsb2NrO1xuICAgIH1cbiAgICBjb21waWxhdGlvbk1ldGEoYXNQYXJ0aWFsID0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIHsgdGVtcGxhdGVNZXRhOiB0aGlzLm1ldGEsIHN5bWJvbHM6IHRoaXMuc3ltYm9scywgYXNQYXJ0aWFsIH07XG4gICAgfVxufSJdfQ==

@@ -10,8 +10,8 @@ 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 { clear, single, SingleNodeBounds } from './bounds';
import { SingleNodeBounds, single, clear } from './bounds';
export function isSafeString(value) {
return typeof value === 'object' && value !== null && typeof value.toHTML === 'function';
return !!value && typeof value['toHTML'] === 'function';
}
export function isNode(value) {
return typeof value === 'object' && value !== null && typeof value.nodeType === 'number';
return value !== null && typeof value === 'object' && typeof value['nodeType'] === 'number';
}

@@ -181,2 +181,2 @@ export function isString(value) {

}(Upsert);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi91cHNlcnQuanMiXSwibmFtZXMiOlsidW5yZWFjaGFibGUiLCJjbGVhciIsInNpbmdsZSIsIlNpbmdsZU5vZGVCb3VuZHMiLCJpc1NhZmVTdHJpbmciLCJ2YWx1ZSIsInRvSFRNTCIsImlzTm9kZSIsIm5vZGVUeXBlIiwiaXNTdHJpbmciLCJVcHNlcnQiLCJib3VuZHMiLCJjYXV0aW91c0luc2VydCIsImRvbSIsImN1cnNvciIsIlRleHRVcHNlcnQiLCJpbnNlcnQiLCJTYWZlU3RyaW5nVXBzZXJ0IiwiTm9kZVVwc2VydCIsInRydXN0aW5nSW5zZXJ0IiwiSFRNTFVwc2VydCIsInRleHROb2RlIiwiY3JlYXRlVGV4dE5vZGUiLCJpbnNlcnRCZWZvcmUiLCJlbGVtZW50IiwibmV4dFNpYmxpbmciLCJ1cGRhdGUiLCJfZG9tIiwibm9kZVZhbHVlIiwiaW5zZXJ0SFRNTEJlZm9yZSIsInBhcmVudEVsZW1lbnQiLCJsYXN0U3RyaW5nVmFsdWUiLCJzdHJpbmdWYWx1ZSIsIm5vZGUiLCJpbnNlcnROb2RlQmVmb3JlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLFNBQVNBLFdBQVQsUUFBNEIsZUFBNUI7QUFDQSxTQUFTQyxLQUFULEVBQWdCQyxNQUFoQixFQUF3QkMsZ0JBQXhCLFFBQWdELFVBQWhEO0FBQ0EsT0FBTyxTQUFTQyxZQUFULENBQXNCQyxLQUF0QixFQUE2QjtBQUNoQyxXQUFPLE9BQU9BLEtBQVAsS0FBaUIsUUFBakIsSUFBNkJBLFVBQVUsSUFBdkMsSUFBK0MsT0FBT0EsTUFBTUMsTUFBYixLQUF3QixVQUE5RTtBQUNIO0FBQ0QsT0FBTyxTQUFTQyxNQUFULENBQWdCRixLQUFoQixFQUF1QjtBQUMxQixXQUFPLE9BQU9BLEtBQVAsS0FBaUIsUUFBakIsSUFBNkJBLFVBQVUsSUFBdkMsSUFBK0MsT0FBT0EsTUFBTUcsUUFBYixLQUEwQixRQUFoRjtBQUNIO0FBQ0QsT0FBTyxTQUFTQyxRQUFULENBQWtCSixLQUFsQixFQUF5QjtBQUM1QixX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RCxtQkFBTyxJQUFQO0FBQ0gsU0FWRCxNQVVPO0FBQ0gsbUJBQU8sS0FBUDtBQUNIO0FBQ0osSzs7O0VBeEIwQnRCLE07O0lBMEJ6QlEsVTs7Ozs7Ozs7O2VBQ0tGLE0sbUJBQU9ILEcsRUFBS0MsTSxFQUFRbUIsSSxFQUFNO0FBQzdCcEIsWUFBSVUsWUFBSixDQUFpQlQsT0FBT1UsT0FBeEIsRUFBaUNTLElBQWpDLEVBQXVDbkIsT0FBT1csV0FBOUM7QUFDQSxlQUFPLElBQUlQLFVBQUosQ0FBZWhCLE9BQU9ZLE9BQU9VLE9BQWQsRUFBdUJTLElBQXZCLENBQWYsQ0FBUDtBQUNILEs7O3lCQUNEUCxNLG1CQUFPYixHLEVBQUtSLEssRUFBTztBQUNmLFlBQUlFLE9BQU9GLEtBQVAsQ0FBSixFQUFtQjtBQUFBLGdCQUNUTSxNQURTLEdBQ0UsSUFERixDQUNUQSxNQURTOztBQUVmLGdCQUFJbUIsZ0JBQWdCbkIsT0FBT21CLGFBQVAsRUFBcEI7QUFDQSxnQkFBSUwsY0FBY3hCLE1BQU1VLE1BQU4sQ0FBbEI7QUFDQSxpQkFBS0EsTUFBTCxHQUFjRSxJQUFJcUIsZ0JBQUosQ0FBcUJKLGFBQXJCLEVBQW9DekIsS0FBcEMsRUFBMkNvQixXQUEzQyxDQUFkO0FBQ0EsbUJBQU8sSUFBUDtBQUNILFNBTkQsTUFNTztBQUNILG1CQUFPLEtBQVA7QUFDSDtBQUNKLEs7OztFQWZvQmYsTSIsImZpbGUiOiJsaWIvdXBzZXJ0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdW5yZWFjaGFibGUgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IGNsZWFyLCBzaW5nbGUsIFNpbmdsZU5vZGVCb3VuZHMgfSBmcm9tICcuL2JvdW5kcyc7XG5leHBvcnQgZnVuY3Rpb24gaXNTYWZlU3RyaW5nKHZhbHVlKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHZhbHVlLnRvSFRNTCA9PT0gJ2Z1bmN0aW9uJztcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc05vZGUodmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUubm9kZVR5cGUgPT09ICdudW1iZXInO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzU3RyaW5nKHZhbHVlKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZyc7XG59XG5jbGFzcyBVcHNlcnQge1xuICAgIGNvbnN0cnVjdG9yKGJvdW5kcykge1xuICAgICAgICB0aGlzLmJvdW5kcyA9IGJvdW5kcztcbiAgICB9XG59XG5leHBvcnQgZGVmYXVsdCBVcHNlcnQ7XG5leHBvcnQgZnVuY3Rpb24gY2F1dGlvdXNJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKSB7XG4gICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gVGV4dFVwc2VydC5pbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKGlzU2FmZVN0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIFNhZmVTdHJpbmdVcHNlcnQuaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gICAgfVxuICAgIGlmIChpc05vZGUodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBOb2RlVXBzZXJ0Lmluc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICAgIH1cbiAgICB0aHJvdyB1bnJlYWNoYWJsZSgpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHRydXN0aW5nSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIEhUTUxVcHNlcnQuaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gICAgfVxuICAgIGlmIChpc05vZGUodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBOb2RlVXBzZXJ0Lmluc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICAgIH1cbiAgICB0aHJvdyB1bnJlYWNoYWJsZSgpO1xufVxuY2xhc3MgVGV4dFVwc2VydCBleHRlbmRzIFVwc2VydCB7XG4gICAgc3RhdGljIGluc2VydChkb20sIGN1cnNvciwgdmFsdWUpIHtcbiAgICAgICAgbGV0IHRleHROb2RlID0gZG9tLmNyZWF0ZVRleHROb2RlKHZhbHVlKTtcbiAgICAgICAgZG9tLmluc2VydEJlZm9yZShjdXJzb3IuZWxlbWVudCwgdGV4dE5vZGUsIGN1cnNvci5uZXh0U2libGluZyk7XG4gICAgICAgIGxldCBib3VuZHMgPSBuZXcgU2luZ2xlTm9kZUJvdW5kcyhjdXJzb3IuZWxlbWVudCwgdGV4dE5vZGUpO1xuICAgICAgICByZXR1cm4gbmV3IFRleHRVcHNlcnQoYm91bmRzLCB0ZXh0Tm9kZSk7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKGJvdW5kcywgdGV4dE5vZGUpIHtcbiAgICAgICAgc3VwZXIoYm91bmRzKTtcbiAgICAgICAgdGhpcy50ZXh0Tm9kZSA9IHRleHROb2RlO1xuICAgIH1cbiAgICB1cGRhdGUoX2RvbSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICAgICAgbGV0IHsgdGV4dE5vZGUgfSA9IHRoaXM7XG4gICAgICAgICAgICB0ZXh0Tm9kZS5ub2RlVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxufVxuY2xhc3MgSFRNTFVwc2VydCBleHRlbmRzIFVwc2VydCB7XG4gICAgc3RhdGljIGluc2VydChkb20sIGN1cnNvciwgdmFsdWUpIHtcbiAgICAgICAgbGV0IGJvdW5kcyA9IGRvbS5pbnNlcnRIVE1MQmVmb3JlKGN1cnNvci5lbGVtZW50LCB2YWx1ZSwgY3Vyc29yLm5leHRTaWJsaW5nKTtcbiAgICAgICAgcmV0dXJuIG5ldyBIVE1MVXBzZXJ0KGJvdW5kcyk7XG4gICAgfVxuICAgIHVwZGF0ZShkb20sIHZhbHVlKSB7XG4gICAgICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGxldCB7IGJvdW5kcyB9ID0gdGhpcztcbiAgICAgICAgICAgIGxldCBwYXJlbnRFbGVtZW50ID0gYm91bmRzLnBhcmVudEVsZW1lbnQoKTtcbiAgICAgICAgICAgIGxldCBuZXh0U2libGluZyA9IGNsZWFyKGJvdW5kcyk7XG4gICAgICAgICAgICB0aGlzLmJvdW5kcyA9IGRvbS5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudEVsZW1lbnQsIG5leHRTaWJsaW5nLCB2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmNsYXNzIFNhZmVTdHJpbmdVcHNlcnQgZXh0ZW5kcyBVcHNlcnQge1xuICAgIGNvbnN0cnVjdG9yKGJvdW5kcywgbGFzdFN0cmluZ1ZhbHVlKSB7XG4gICAgICAgIHN1cGVyKGJvdW5kcyk7XG4gICAgICAgIHRoaXMubGFzdFN0cmluZ1ZhbHVlID0gbGFzdFN0cmluZ1ZhbHVlO1xuICAgIH1cbiAgICBzdGF0aWMgaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgICAgICBsZXQgc3RyaW5nVmFsdWUgPSB2YWx1ZS50b0hUTUwoKTtcbiAgICAgICAgbGV0IGJvdW5kcyA9IGRvbS5pbnNlcnRIVE1MQmVmb3JlKGN1cnNvci5lbGVtZW50LCBzdHJpbmdWYWx1ZSwgY3Vyc29yLm5leHRTaWJsaW5nKTtcbiAgICAgICAgcmV0dXJuIG5ldyBTYWZlU3RyaW5nVXBzZXJ0KGJvdW5kcywgc3RyaW5nVmFsdWUpO1xuICAgIH1cbiAgICB1cGRhdGUoZG9tLCB2YWx1ZSkge1xuICAgICAgICBpZiAoaXNTYWZlU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICAgICAgbGV0IHN0cmluZ1ZhbHVlID0gdmFsdWUudG9IVE1MKCk7XG4gICAgICAgICAgICBpZiAoc3RyaW5nVmFsdWUgIT09IHRoaXMubGFzdFN0cmluZ1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgbGV0IHsgYm91bmRzIH0gPSB0aGlzO1xuICAgICAgICAgICAgICAgIGxldCBwYXJlbnRFbGVtZW50ID0gYm91bmRzLnBhcmVudEVsZW1lbnQoKTtcbiAgICAgICAgICAgICAgICBsZXQgbmV4dFNpYmxpbmcgPSBjbGVhcihib3VuZHMpO1xuICAgICAgICAgICAgICAgIHRoaXMuYm91bmRzID0gZG9tLmluc2VydEhUTUxCZWZvcmUocGFyZW50RWxlbWVudCwgbmV4dFNpYmxpbmcsIHN0cmluZ1ZhbHVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxhc3RTdHJpbmdWYWx1ZSA9IHN0cmluZ1ZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG59XG5jbGFzcyBOb2RlVXBzZXJ0IGV4dGVuZHMgVXBzZXJ0IHtcbiAgICBzdGF0aWMgaW5zZXJ0KGRvbSwgY3Vyc29yLCBub2RlKSB7XG4gICAgICAgIGRvbS5pbnNlcnRCZWZvcmUoY3Vyc29yLmVsZW1lbnQsIG5vZGUsIGN1cnNvci5uZXh0U2libGluZyk7XG4gICAgICAgIHJldHVybiBuZXcgTm9kZVVwc2VydChzaW5nbGUoY3Vyc29yLmVsZW1lbnQsIG5vZGUpKTtcbiAgICB9XG4gICAgdXBkYXRlKGRvbSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKGlzTm9kZSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGxldCB7IGJvdW5kcyB9ID0gdGhpcztcbiAgICAgICAgICAgIGxldCBwYXJlbnRFbGVtZW50ID0gYm91bmRzLnBhcmVudEVsZW1lbnQoKTtcbiAgICAgICAgICAgIGxldCBuZXh0U2libGluZyA9IGNsZWFyKGJvdW5kcyk7XG4gICAgICAgICAgICB0aGlzLmJvdW5kcyA9IGRvbS5pbnNlcnROb2RlQmVmb3JlKHBhcmVudEVsZW1lbnQsIHZhbHVlLCBuZXh0U2libGluZyk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbn0iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi91cHNlcnQuanMiXSwibmFtZXMiOlsidW5yZWFjaGFibGUiLCJTaW5nbGVOb2RlQm91bmRzIiwic2luZ2xlIiwiY2xlYXIiLCJpc1NhZmVTdHJpbmciLCJ2YWx1ZSIsImlzTm9kZSIsImlzU3RyaW5nIiwiVXBzZXJ0IiwiYm91bmRzIiwiY2F1dGlvdXNJbnNlcnQiLCJkb20iLCJjdXJzb3IiLCJUZXh0VXBzZXJ0IiwiaW5zZXJ0IiwiU2FmZVN0cmluZ1Vwc2VydCIsIk5vZGVVcHNlcnQiLCJ0cnVzdGluZ0luc2VydCIsIkhUTUxVcHNlcnQiLCJ0ZXh0Tm9kZSIsImNyZWF0ZVRleHROb2RlIiwiaW5zZXJ0QmVmb3JlIiwiZWxlbWVudCIsIm5leHRTaWJsaW5nIiwidXBkYXRlIiwiX2RvbSIsIm5vZGVWYWx1ZSIsImluc2VydEhUTUxCZWZvcmUiLCJwYXJlbnRFbGVtZW50IiwibGFzdFN0cmluZ1ZhbHVlIiwic3RyaW5nVmFsdWUiLCJ0b0hUTUwiLCJub2RlIiwiaW5zZXJ0Tm9kZUJlZm9yZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxTQUFTQSxXQUFULFFBQTRCLGVBQTVCO0FBQ0EsU0FBU0MsZ0JBQVQsRUFBMkJDLE1BQTNCLEVBQW1DQyxLQUFuQyxRQUFnRCxVQUFoRDtBQUNBLE9BQU8sU0FBU0MsWUFBVCxDQUFzQkMsS0FBdEIsRUFBNkI7QUFDaEMsV0FBTyxDQUFDLENBQUNBLEtBQUYsSUFBVyxPQUFPQSxNQUFNLFFBQU4sQ0FBUCxLQUEyQixVQUE3QztBQUNIO0FBQ0QsT0FBTyxTQUFTQyxNQUFULENBQWdCRCxLQUFoQixFQUF1QjtBQUMxQixXQUFPQSxVQUFVLElBQVYsSUFBa0IsT0FBT0EsS0FBUCxLQUFpQixRQUFuQyxJQUErQyxPQUFPQSxNQUFNLFVBQU4sQ0FBUCxLQUE2QixRQUFuRjtBQUNIO0FBQ0QsT0FBTyxTQUFTRSxRQUFULENBQWtCRixLQUFsQixFQUF5QjtBQUM1QixXQUFPLE9BQU9BLEtBQVAsS0FBaUIsUUFBeEI7QUFD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SCxtQkFBTyxLQUFQO0FBQ0g7QUFDSixLOzs7RUF4QjBCdEIsTTs7SUEwQnpCUSxVOzs7Ozs7Ozs7ZUFDS0YsTSxtQkFBT0gsRyxFQUFLQyxNLEVBQVFvQixJLEVBQU07QUFDN0JyQixZQUFJVSxZQUFKLENBQWlCVCxPQUFPVSxPQUF4QixFQUFpQ1UsSUFBakMsRUFBdUNwQixPQUFPVyxXQUE5QztBQUNBLGVBQU8sSUFBSVAsVUFBSixDQUFlZCxPQUFPVSxPQUFPVSxPQUFkLEVBQXVCVSxJQUF2QixDQUFmLENBQVA7QUFDSCxLOzt5QkFDRFIsTSxtQkFBT2IsRyxFQUFLTixLLEVBQU87QUFDZixZQUFJQyxPQUFPRCxLQUFQLENBQUosRUFBbUI7QUFBQSxnQkFDVEksTUFEUyxHQUNFLElBREYsQ0FDVEEsTUFEUzs7QUFFZixnQkFBSW1CLGdCQUFnQm5CLE9BQU9tQixhQUFQLEVBQXBCO0FBQ0EsZ0JBQUlMLGNBQWNwQixNQUFNTSxNQUFOLENBQWxCO0FBQ0EsaUJBQUtBLE1BQUwsR0FBY0UsSUFBSXNCLGdCQUFKLENBQXFCTCxhQUFyQixFQUFvQ3ZCLEtBQXBDLEVBQTJDa0IsV0FBM0MsQ0FBZDtBQUNBLG1CQUFPLElBQVA7QUFDSCxTQU5ELE1BTU87QUFDSCxtQkFBTyxLQUFQO0FBQ0g7QUFDSixLOzs7RUFmb0JmLE0iLCJmaWxlIjoibGliL3Vwc2VydC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVucmVhY2hhYmxlIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBTaW5nbGVOb2RlQm91bmRzLCBzaW5nbGUsIGNsZWFyIH0gZnJvbSAnLi9ib3VuZHMnO1xuZXhwb3J0IGZ1bmN0aW9uIGlzU2FmZVN0cmluZyh2YWx1ZSkge1xuICAgIHJldHVybiAhIXZhbHVlICYmIHR5cGVvZiB2YWx1ZVsndG9IVE1MJ10gPT09ICdmdW5jdGlvbic7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNOb2RlKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIHZhbHVlWydub2RlVHlwZSddID09PSAnbnVtYmVyJztcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZyh2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnO1xufVxuY2xhc3MgVXBzZXJ0IHtcbiAgICBjb25zdHJ1Y3Rvcihib3VuZHMpIHtcbiAgICAgICAgdGhpcy5ib3VuZHMgPSBib3VuZHM7XG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgVXBzZXJ0O1xuZXhwb3J0IGZ1bmN0aW9uIGNhdXRpb3VzSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIFRleHRVcHNlcnQuaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gICAgfVxuICAgIGlmIChpc1NhZmVTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBTYWZlU3RyaW5nVXBzZXJ0Lmluc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICAgIH1cbiAgICBpZiAoaXNOb2RlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gTm9kZVVwc2VydC5pbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG4gICAgdGhyb3cgdW5yZWFjaGFibGUoKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB0cnVzdGluZ0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpIHtcbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBIVE1MVXBzZXJ0Lmluc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICAgIH1cbiAgICBpZiAoaXNOb2RlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gTm9kZVVwc2VydC5pbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG4gICAgdGhyb3cgdW5yZWFjaGFibGUoKTtcbn1cbmNsYXNzIFRleHRVcHNlcnQgZXh0ZW5kcyBVcHNlcnQge1xuICAgIHN0YXRpYyBpbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKSB7XG4gICAgICAgIGxldCB0ZXh0Tm9kZSA9IGRvbS5jcmVhdGVUZXh0Tm9kZSh2YWx1ZSk7XG4gICAgICAgIGRvbS5pbnNlcnRCZWZvcmUoY3Vyc29yLmVsZW1lbnQsIHRleHROb2RlLCBjdXJzb3IubmV4dFNpYmxpbmcpO1xuICAgICAgICBsZXQgYm91bmRzID0gbmV3IFNpbmdsZU5vZGVCb3VuZHMoY3Vyc29yLmVsZW1lbnQsIHRleHROb2RlKTtcbiAgICAgICAgcmV0dXJuIG5ldyBUZXh0VXBzZXJ0KGJvdW5kcywgdGV4dE5vZGUpO1xuICAgIH1cbiAgICBjb25zdHJ1Y3Rvcihib3VuZHMsIHRleHROb2RlKSB7XG4gICAgICAgIHN1cGVyKGJvdW5kcyk7XG4gICAgICAgIHRoaXMudGV4dE5vZGUgPSB0ZXh0Tm9kZTtcbiAgICB9XG4gICAgdXBkYXRlKF9kb20sIHZhbHVlKSB7XG4gICAgICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGxldCB7IHRleHROb2RlIH0gPSB0aGlzO1xuICAgICAgICAgICAgdGV4dE5vZGUubm9kZVZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmNsYXNzIEhUTUxVcHNlcnQgZXh0ZW5kcyBVcHNlcnQge1xuICAgIHN0YXRpYyBpbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKSB7XG4gICAgICAgIGxldCBib3VuZHMgPSBkb20uaW5zZXJ0SFRNTEJlZm9yZShjdXJzb3IuZWxlbWVudCwgdmFsdWUsIGN1cnNvci5uZXh0U2libGluZyk7XG4gICAgICAgIHJldHVybiBuZXcgSFRNTFVwc2VydChib3VuZHMpO1xuICAgIH1cbiAgICB1cGRhdGUoZG9tLCB2YWx1ZSkge1xuICAgICAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgICAgICBsZXQgeyBib3VuZHMgfSA9IHRoaXM7XG4gICAgICAgICAgICBsZXQgcGFyZW50RWxlbWVudCA9IGJvdW5kcy5wYXJlbnRFbGVtZW50KCk7XG4gICAgICAgICAgICBsZXQgbmV4dFNpYmxpbmcgPSBjbGVhcihib3VuZHMpO1xuICAgICAgICAgICAgdGhpcy5ib3VuZHMgPSBkb20uaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnRFbGVtZW50LCBuZXh0U2libGluZywgdmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG59XG5jbGFzcyBTYWZlU3RyaW5nVXBzZXJ0IGV4dGVuZHMgVXBzZXJ0IHtcbiAgICBjb25zdHJ1Y3Rvcihib3VuZHMsIGxhc3RTdHJpbmdWYWx1ZSkge1xuICAgICAgICBzdXBlcihib3VuZHMpO1xuICAgICAgICB0aGlzLmxhc3RTdHJpbmdWYWx1ZSA9IGxhc3RTdHJpbmdWYWx1ZTtcbiAgICB9XG4gICAgc3RhdGljIGluc2VydChkb20sIGN1cnNvciwgdmFsdWUpIHtcbiAgICAgICAgbGV0IHN0cmluZ1ZhbHVlID0gdmFsdWUudG9IVE1MKCk7XG4gICAgICAgIGxldCBib3VuZHMgPSBkb20uaW5zZXJ0SFRNTEJlZm9yZShjdXJzb3IuZWxlbWVudCwgc3RyaW5nVmFsdWUsIGN1cnNvci5uZXh0U2libGluZyk7XG4gICAgICAgIHJldHVybiBuZXcgU2FmZVN0cmluZ1Vwc2VydChib3VuZHMsIHN0cmluZ1ZhbHVlKTtcbiAgICB9XG4gICAgdXBkYXRlKGRvbSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKGlzU2FmZVN0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGxldCBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvSFRNTCgpO1xuICAgICAgICAgICAgaWYgKHN0cmluZ1ZhbHVlICE9PSB0aGlzLmxhc3RTdHJpbmdWYWx1ZSkge1xuICAgICAgICAgICAgICAgIGxldCB7IGJvdW5kcyB9ID0gdGhpcztcbiAgICAgICAgICAgICAgICBsZXQgcGFyZW50RWxlbWVudCA9IGJvdW5kcy5wYXJlbnRFbGVtZW50KCk7XG4gICAgICAgICAgICAgICAgbGV0IG5leHRTaWJsaW5nID0gY2xlYXIoYm91bmRzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJvdW5kcyA9IGRvbS5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudEVsZW1lbnQsIG5leHRTaWJsaW5nLCBzdHJpbmdWYWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0U3RyaW5nVmFsdWUgPSBzdHJpbmdWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxufVxuY2xhc3MgTm9kZVVwc2VydCBleHRlbmRzIFVwc2VydCB7XG4gICAgc3RhdGljIGluc2VydChkb20sIGN1cnNvciwgbm9kZSkge1xuICAgICAgICBkb20uaW5zZXJ0QmVmb3JlKGN1cnNvci5lbGVtZW50LCBub2RlLCBjdXJzb3IubmV4dFNpYmxpbmcpO1xuICAgICAgICByZXR1cm4gbmV3IE5vZGVVcHNlcnQoc2luZ2xlKGN1cnNvci5lbGVtZW50LCBub2RlKSk7XG4gICAgfVxuICAgIHVwZGF0ZShkb20sIHZhbHVlKSB7XG4gICAgICAgIGlmIChpc05vZGUodmFsdWUpKSB7XG4gICAgICAgICAgICBsZXQgeyBib3VuZHMgfSA9IHRoaXM7XG4gICAgICAgICAgICBsZXQgcGFyZW50RWxlbWVudCA9IGJvdW5kcy5wYXJlbnRFbGVtZW50KCk7XG4gICAgICAgICAgICBsZXQgbmV4dFNpYmxpbmcgPSBjbGVhcihib3VuZHMpO1xuICAgICAgICAgICAgdGhpcy5ib3VuZHMgPSBkb20uaW5zZXJ0Tm9kZUJlZm9yZShwYXJlbnRFbGVtZW50LCB2YWx1ZSwgbmV4dFNpYmxpbmcpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG59Il19

@@ -90,3 +90,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; }; }();

this.stack = EvaluationStack.empty();
/* Registers */
/** Registers **/
this.pc = -1;

@@ -180,5 +180,5 @@ this.ra = -1;

return {
dynamicScope: this.dynamicScope(),
env: this.env,
scope: this.scope(),
dynamicScope: this.dynamicScope(),
stack: this.stack.capture(args)

@@ -351,14 +351,11 @@ };

var opcode = this.nextStatement(env);
var result = void 0;
if (opcode !== null) {
var opcode = void 0;
if (opcode = this.nextStatement(env)) {
APPEND_OPCODES.evaluate(this, opcode, opcode.type);
result = { done: false, value: null };
} else {
result = {
done: true,
value: new RenderResult(env, updatingOpcodeStack.pop(), elementStack.popBlock())
};
return { done: false, value: null };
}
return result;
return {
done: true,
value: new RenderResult(env, updatingOpcodeStack.pop(), elementStack.popBlock())
};
};

@@ -411,2 +408,2 @@

export default VM;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi92bS9hcHBlbmQuanMiXSwibmFtZXMiOlsiUmVnaXN0ZXIiLCJTY29wZSIsIlN0YWNrIiwiTGlua2VkTGlzdCIsIkxpc3RTbGljZSIsImNvbWJpbmVTbGljZSIsIkxhYmVsT3Bjb2RlIiwiSnVtcElmTm90TW9kaWZpZWRPcGNvZGUiLCJEaWRNb2RpZnlPcGNvZGUiLCJMaXN0QmxvY2tPcGNvZGUiLCJUcnlPcGNvZGUiLCJSZW5kZXJSZXN1bHQiLCJBUFBFTkRfT1BDT0RFUyIsIkV2YWx1YXRpb25TdGFjayIsInN0YWNrIiwiZnAiLCJzcCIsIk9iamVjdCIsInNlYWwiLCJlbXB0eSIsInJlc3RvcmUiLCJzbmFwc2hvdCIsInNsaWNlIiwibGVuZ3RoIiwiaXNFbXB0eSIsInB1c2giLCJ2YWx1ZSIsImR1cCIsInBvc2l0aW9uIiwicG9wIiwibiIsInRvcCIsInBlZWsiLCJmcm9tQmFzZSIsIm9mZnNldCIsImZyb21Ub3AiLCJjYXB0dXJlIiwiaXRlbXMiLCJlbmQiLCJzdGFydCIsInRvQXJyYXkiLCJWTSIsImVudiIsInNjb3BlIiwiZHluYW1pY1Njb3BlIiwiZWxlbWVudFN0YWNrIiwiZHluYW1pY1Njb3BlU3RhY2siLCJzY29wZVN0YWNrIiwidXBkYXRpbmdPcGNvZGVTdGFjayIsImNhY2hlR3JvdXBzIiwibGlzdEJsb2NrU3RhY2siLCJwYyIsInJhIiwiczAiLCJzMSIsInQwIiwidDEiLCJjb25zdGFudHMiLCJmZXRjaCIsInJlZ2lzdGVyIiwibG9hZCIsImZldGNoVmFsdWUiLCJsb2FkVmFsdWUiLCJwdXNoRnJhbWUiLCJwb3BGcmFtZSIsImdvdG8iLCJjYWxsIiwicmV0dXJuVG8iLCJyZXR1cm4iLCJpbml0aWFsIiwic2VsZiIsInByb2dyYW0iLCJyb290Iiwic3ltYm9sVGFibGUiLCJzeW1ib2xzIiwidm0iLCJhcmdzIiwiYmVnaW5DYWNoZUdyb3VwIiwidXBkYXRpbmciLCJ0YWlsIiwiY29tbWl0Q2FjaGVHcm91cCIsIkVORCIsIm9wY29kZXMiLCJtYXJrZXIiLCJoZWFkIiwibmV4dE5vZGUiLCJ0YWciLCJndWFyZCIsImluc2VydEJlZm9yZSIsImFwcGVuZCIsImVudGVyIiwic3RhdGUiLCJ0cmFja2VyIiwiZWxlbWVudHMiLCJwdXNoVXBkYXRhYmxlQmxvY2siLCJ0cnlPcGNvZGUiLCJkaWRFbnRlciIsIml0ZXJhdGUiLCJtZW1vIiwiZW50ZXJJdGVtIiwia2V5Iiwib3Bjb2RlIiwibGlzdEJsb2NrIiwibWFwIiwiZW50ZXJMaXN0IiwicHVzaEJsb2NrTGlzdCIsImFydGlmYWN0cyIsInVwZGF0ZVdpdGgiLCJjaGlsZHJlbiIsImV4aXQiLCJwb3BCbG9jayIsInBhcmVudCIsImRpZEluaXRpYWxpemVDaGlsZHJlbiIsImV4aXRMaXN0IiwiY3VycmVudCIsInB1c2hDaGlsZFNjb3BlIiwiY2hpbGQiLCJwdXNoQ2FsbGVyU2NvcGUiLCJjaGlsZFNjb3BlIiwiY2FsbGVyU2NvcGUiLCJnZXRDYWxsZXJTY29wZSIsInB1c2hEeW5hbWljU2NvcGUiLCJwdXNoUm9vdFNjb3BlIiwic2l6ZSIsImJpbmRDYWxsZXIiLCJzaXplZCIsImJpbmRDYWxsZXJTY29wZSIsInBvcFNjb3BlIiwicG9wRHluYW1pY1Njb3BlIiwibmV3RGVzdHJveWFibGUiLCJkIiwiZ2V0U2VsZiIsInJlZmVyZW5jZUZvclN5bWJvbCIsInN5bWJvbCIsImdldFN5bWJvbCIsImV4ZWN1dGUiLCJpbml0aWFsaXplIiwicmVzdWx0IiwibmV4dCIsImRvbmUiLCJuZXh0U3RhdGVtZW50IiwiZXZhbHVhdGUiLCJ0eXBlIiwiZXZhbHVhdGVPcGNvZGUiLCJiaW5kRHluYW1pY1Njb3BlIiwibmFtZXMiLCJpIiwibmFtZSIsImdldFN0cmluZyIsInNldCJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLFNBQVNBLFFBQVQsUUFBeUIsWUFBekI7QUFDQSxTQUFTQyxLQUFULFFBQXNCLGdCQUF0QjtBQUNBLFNBQVNDLEtBQVQsRUFBZ0JDLFVBQWhCLEVBQTRCQyxTQUE1QixRQUFxRCxlQUFyRDtBQUNB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bENnQnlCLEUiLCJmaWxlIjoibGliL3ZtL2FwcGVuZC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlZ2lzdGVyIH0gZnJvbSAnLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBTY29wZSB9IGZyb20gJy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IFN0YWNrLCBMaW5rZWRMaXN0LCBMaXN0U2xpY2UsIGV4cGVjdCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgY29tYmluZVNsaWNlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IExhYmVsT3Bjb2RlLCBKdW1wSWZOb3RNb2RpZmllZE9wY29kZSwgRGlkTW9kaWZ5T3Bjb2RlIH0gZnJvbSAnLi4vY29tcGlsZWQvb3Bjb2Rlcy92bSc7XG5pbXBvcnQgeyBMaXN0QmxvY2tPcGNvZGUsIFRyeU9wY29kZSB9IGZyb20gJy4vdXBkYXRlJztcbmltcG9ydCBSZW5kZXJSZXN1bHQgZnJvbSAnLi9yZW5kZXItcmVzdWx0JztcbmltcG9ydCB7IEFQUEVORF9PUENPREVTIH0gZnJvbSAnLi4vb3Bjb2Rlcyc7XG5leHBvcnQgY2xhc3MgRXZhbHVhdGlvblN0YWNrIHtcbiAgICBjb25zdHJ1Y3RvcihzdGFjaywgZnAsIHNwKSB7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICAgICAgdGhpcy5mcCA9IGZwO1xuICAgICAgICB0aGlzLnNwID0gc3A7XG4gICAgICAgIE9iamVjdC5zZWFsKHRoaXMpO1xuICAgIH1cbiAgICBzdGF0aWMgZW1wdHkoKSB7XG4gICAgICAgIHJldHVybiBuZXcgdGhpcyhbXSwgMCwgLTEpO1xuICAgIH1cbiAgICBzdGF0aWMgcmVzdG9yZShzbmFwc2hvdCkge1xuICAgICAgICByZXR1cm4gbmV3IHRoaXMoc25hcHNob3Quc2xpY2UoKSwgMCwgc25hcHNob3QubGVuZ3RoIC0gMSk7XG4gICAgfVxuICAgIGlzRW1wdHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNwID09PSAtMTtcbiAgICB9XG4gICAgcHVzaCh2YWx1ZSkge1xuICAgICAgICB0aGlzLnN0YWNrWysrdGhpcy5zcF0gPSB2YWx1ZTtcbiAgICB9XG4gICAgZHVwKHBvc2l0aW9uID0gdGhpcy5zcCkge1xuICAgICAgICB0aGlzLnB1c2godGhpcy5zdGFja1twb3NpdGlvbl0pO1xuICAgIH1cbiAgICBwb3AobiA9IDEpIHtcbiAgICAgICAgbGV0IHRvcCA9IHRoaXMuc3RhY2tbdGhpcy5zcF07XG4gICAgICAgIHRoaXMuc3AgLT0gbjtcbiAgICAgICAgcmV0dXJuIHRvcDtcbiAgICB9XG4gICAgcGVlaygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2tbdGhpcy5zcF07XG4gICAgfVxuICAgIGZyb21CYXNlKG9mZnNldCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFja1t0aGlzLmZwIC0gb2Zmc2V0XTtcbiAgICB9XG4gICAgZnJvbVRvcChvZmZzZXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2tbdGhpcy5zcCAtIG9mZnNldF07XG4gICAgfVxuICAgIGNhcHR1cmUoaXRlbXMpIHtcbiAgICAgICAgbGV0IGVuZCA9IHRoaXMuc3AgKyAxO1xuICAgICAgICBsZXQgc3RhcnQgPSBlbmQgLSBpdGVtcztcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2suc2xpY2Uoc3RhcnQsIGVuZCk7XG4gICAgfVxuICAgIHRvQXJyYXkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrLnNsaWNlKHRoaXMuZnAsIHRoaXMuc3AgKyAxKTtcbiAgICB9XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWTSB7XG4gICAgY29uc3RydWN0b3IoZW52LCBzY29wZSwgZHluYW1pY1Njb3BlLCBlbGVtZW50U3RhY2spIHtcbiAgICAgICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgICAgIHRoaXMuZWxlbWVudFN0YWNrID0gZWxlbWVudFN0YWNrO1xuICAgICAgICB0aGlzLmR5bmFtaWNTY29wZVN0YWNrID0gbmV3IFN0YWNrKCk7XG4gICAgICAgIHRoaXMuc2NvcGVTdGFjayA9IG5ldyBTdGFjaygpO1xuICAgICAgICB0aGlzLnVwZGF0aW5nT3Bjb2RlU3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgICAgICAgdGhpcy5jYWNoZUdyb3VwcyA9IG5ldyBTdGFjaygpO1xuICAgICAgICB0aGlzLmxpc3RCbG9ja1N0YWNrID0gbmV3IFN0YWNrKCk7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBFdmFsdWF0aW9uU3RhY2suZW1wdHkoKTtcbiAgICAgICAgLyogUmVnaXN0ZXJzICovXG4gICAgICAgIHRoaXMucGMgPSAtMTtcbiAgICAgICAgdGhpcy5yYSA9IC0xO1xuICAgICAgICB0aGlzLnMwID0gbnVsbDtcbiAgICAgICAgdGhpcy5zMSA9IG51bGw7XG4gICAgICAgIHRoaXMudDAgPSBudWxsO1xuICAgICAgICB0aGlzLnQxID0gbnVsbDtcbiAgICAgICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgICAgIHRoaXMuY29uc3RhbnRzID0gZW52LmNvbnN0YW50cztcbiAgICAgICAgdGhpcy5lbGVtZW50U3RhY2sgPSBlbGVtZW50U3RhY2s7XG4gICAgICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKHNjb3BlKTtcbiAgICAgICAgdGhpcy5keW5hbWljU2NvcGVTdGFjay5wdXNoKGR5bmFtaWNTY29wZSk7XG4gICAgfVxuICAgIGdldCBmcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2suZnA7XG4gICAgfVxuICAgIHNldCBmcChmcCkge1xuICAgICAgICB0aGlzLnN0YWNrLmZwID0gZnA7XG4gICAgfVxuICAgIGdldCBzcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2suc3A7XG4gICAgfVxuICAgIHNldCBzcChzcCkge1xuICAgICAgICB0aGlzLnN0YWNrLnNwID0gc3A7XG4gICAgfVxuICAgIC8vIEZldGNoIGEgdmFsdWUgZnJvbSBhIHJlZ2lzdGVyIG9udG8gdGhlIHN0YWNrXG4gICAgZmV0Y2gocmVnaXN0ZXIpIHtcbiAgICAgICAgdGhpcy5zdGFjay5wdXNoKHRoaXNbUmVnaXN0ZXJbcmVnaXN0ZXJdXSk7XG4gICAgfVxuICAgIC8vIExvYWQgYSB2YWx1ZSBmcm9tIHRoZSBzdGFjayBpbnRvIGEgcmVnaXN0ZXJcbiAgICBsb2FkKHJlZ2lzdGVyKSB7XG4gICAgICAgIHRoaXNbUmVnaXN0ZXJbcmVnaXN0ZXJdXSA9IHRoaXMuc3RhY2sucG9wKCk7XG4gICAgfVxuICAgIC8vIEZldGNoIGEgdmFsdWUgZnJvbSBhIHJlZ2lzdGVyXG4gICAgZmV0Y2hWYWx1ZShyZWdpc3Rlcikge1xuICAgICAgICByZXR1cm4gdGhpc1tSZWdpc3RlcltyZWdpc3Rlcl1dO1xuICAgIH1cbiAgICAvLyBMb2FkIGEgdmFsdWUgaW50byBhIHJlZ2lzdGVyXG4gICAgbG9hZFZhbHVlKHJlZ2lzdGVyLCB2YWx1ZSkge1xuICAgICAgICB0aGlzW1JlZ2lzdGVyW3JlZ2lzdGVyXV0gPSB2YWx1ZTtcbiAgICB9XG4gICAgLy8gU3RhcnQgYSBuZXcgZnJhbWUgYW5kIHNhdmUgJHJhIGFuZCAkZnAgb24gdGhlIHN0YWNrXG4gICAgcHVzaEZyYW1lKCkge1xuICAgICAgICB0aGlzLnN0YWNrLnB1c2godGhpcy5yYSk7XG4gICAgICAgIHRoaXMuc3RhY2sucHVzaCh0aGlzLmZwKTtcbiAgICAgICAgdGhpcy5mcCA9IHRoaXMuc3AgLSAxO1xuICAgICAgICAvLyB0aGlzLmZwID0gdGhpcy5zcCArIDE7XG4gICAgfVxuICAgIC8vIFJlc3RvcmUgJHJhLCAkc3AgYW5kICRmcFxuICAgIHBvcEZyYW1lKCkge1xuICAgICAgICB0aGlzLnNwID0gdGhpcy5mcCAtIDE7XG4gICAgICAgIHRoaXMucmEgPSB0aGlzLnN0YWNrLmZyb21CYXNlKDApO1xuICAgICAgICB0aGlzLmZwID0gdGhpcy5zdGFjay5mcm9tQmFzZSgtMSk7XG4gICAgfVxuICAgIC8vIEp1bXAgdG8gYW4gYWRkcmVzcyBpbiBgcHJvZ3JhbWBcbiAgICBnb3RvKHBjKSB7XG4gICAgICAgIHRoaXMucGMgPSBwYztcbiAgICB9XG4gICAgLy8gU2F2ZSAkcGMgaW50byAkcmEsIHRoZW4ganVtcCB0byBhIG5ldyBhZGRyZXNzIGluIGBwcm9ncmFtYCAoamFsIGluIE1JUFMpXG4gICAgY2FsbChwYykge1xuICAgICAgICB0aGlzLnJhID0gdGhpcy5wYztcbiAgICAgICAgdGhpcy5wYyA9IHBjO1xuICAgIH1cbiAgICAvLyBQdXQgYSBzcGVjaWZpYyBgcHJvZ3JhbWAgYWRkcmVzcyBpbiAkcmFcbiAgICByZXR1cm5UbyhyYSkge1xuICAgICAgICB0aGlzLnJhID0gcmE7XG4gICAgfVxuICAgIC8vIFJldHVybiB0byB0aGUgYHByb2dyYW1gIGFkZHJlc3Mgc3RvcmVkIGluICRyYVxuICAgIHJldHVybigpIHtcbiAgICAgICAgdGhpcy5wYyA9IHRoaXMucmE7XG4gICAgfVxuICAgIHN0YXRpYyBpbml0aWFsKGVudiwgc2VsZiwgZHluYW1pY1Njb3BlLCBlbGVtZW50U3RhY2ssIHByb2dyYW0pIHtcbiAgICAgICAgbGV0IHNjb3BlID0gU2NvcGUucm9vdChzZWxmLCBwcm9ncmFtLnN5bWJvbFRhYmxlLnN5bWJvbHMubGVuZ3RoKTtcbiAgICAgICAgbGV0IHZtID0gbmV3IFZNKGVudiwgc2NvcGUsIGR5bmFtaWNTY29wZSwgZWxlbWVudFN0YWNrKTtcbiAgICAgICAgdm0ucGMgPSBwcm9ncmFtLnN0YXJ0O1xuICAgICAgICB2bS51cGRhdGluZ09wY29kZVN0YWNrLnB1c2gobmV3IExpbmtlZExpc3QoKSk7XG4gICAgICAgIHJldHVybiB2bTtcbiAgICB9XG4gICAgY2FwdHVyZShhcmdzKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkeW5hbWljU2NvcGU6IHRoaXMuZHluYW1pY1Njb3BlKCksXG4gICAgICAgICAgICBlbnY6IHRoaXMuZW52LFxuICAgICAgICAgICAgc2NvcGU6IHRoaXMuc2NvcGUoKSxcbiAgICAgICAgICAgIHN0YWNrOiB0aGlzLnN0YWNrLmNhcHR1cmUoYXJncylcbiAgICAgICAgfTtcbiAgICB9XG4gICAgYmVnaW5DYWNoZUdyb3VwKCkge1xuICAgICAgICB0aGlzLmNhY2hlR3JvdXBzLnB1c2godGhpcy51cGRhdGluZygpLnRhaWwoKSk7XG4gICAgfVxuICAgIGNvbW1pdENhY2hlR3JvdXAoKSB7XG4gICAgICAgIC8vICAgICAgICBKdW1wSWZOb3RNb2RpZmllZChFTkQpXG4gICAgICAgIC8vICAgICAgICAoaGVhZClcbiAgICAgICAgLy8gICAgICAgICguLi4uKVxuICAgICAgICAvLyAgICAgICAgKHRhaWwpXG4gICAgICAgIC8vICAgICAgICBEaWRNb2RpZnlcbiAgICAgICAgLy8gRU5EOiAgIE5vb3BcbiAgICAgICAgbGV0IEVORCA9IG5ldyBMYWJlbE9wY29kZShcIkVORFwiKTtcbiAgICAgICAgbGV0IG9wY29kZXMgPSB0aGlzLnVwZGF0aW5nKCk7XG4gICAgICAgIGxldCBtYXJrZXIgPSB0aGlzLmNhY2hlR3JvdXBzLnBvcCgpO1xuICAgICAgICBsZXQgaGVhZCA9IG1hcmtlciA/IG9wY29kZXMubmV4dE5vZGUobWFya2VyKSA6IG9wY29kZXMuaGVhZCgpO1xuICAgICAgICBsZXQgdGFpbCA9IG9wY29kZXMudGFpbCgpO1xuICAgICAgICBsZXQgdGFnID0gY29tYmluZVNsaWNlKG5ldyBMaXN0U2xpY2UoaGVhZCwgdGFpbCkpO1xuICAgICAgICBsZXQgZ3VhcmQgPSBuZXcgSnVtcElmTm90TW9kaWZpZWRPcGNvZGUodGFnLCBFTkQpO1xuICAgICAgICBvcGNvZGVzLmluc2VydEJlZm9yZShndWFyZCwgaGVhZCk7XG4gICAgICAgIG9wY29kZXMuYXBwZW5kKG5ldyBEaWRNb2RpZnlPcGNvZGUoZ3VhcmQpKTtcbiAgICAgICAgb3Bjb2Rlcy5hcHBlbmQoRU5EKTtcbiAgICB9XG4gICAgZW50ZXIoYXJncykge1xuICAgICAgICBsZXQgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdCgpO1xuICAgICAgICBsZXQgc3RhdGUgPSB0aGlzLmNhcHR1cmUoYXJncyk7XG4gICAgICAgIGxldCB0cmFja2VyID0gdGhpcy5lbGVtZW50cygpLnB1c2hVcGRhdGFibGVCbG9jaygpO1xuICAgICAgICBsZXQgdHJ5T3Bjb2RlID0gbmV3IFRyeU9wY29kZSh0aGlzLnBjLCBzdGF0ZSwgdHJhY2tlciwgdXBkYXRpbmcpO1xuICAgICAgICB0aGlzLmRpZEVudGVyKHRyeU9wY29kZSk7XG4gICAgfVxuICAgIGl0ZXJhdGUobWVtbywgdmFsdWUpIHtcbiAgICAgICAgbGV0IHN0YWNrID0gdGhpcy5zdGFjaztcbiAgICAgICAgc3RhY2sucHVzaCh2YWx1ZSk7XG4gICAgICAgIHN0YWNrLnB1c2gobWVtbyk7XG4gICAgICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZSgyKTtcbiAgICAgICAgbGV0IHRyYWNrZXIgPSB0aGlzLmVsZW1lbnRzKCkucHVzaFVwZGF0YWJsZUJsb2NrKCk7XG4gICAgICAgIC8vIGxldCBpcCA9IHRoaXMuaXA7XG4gICAgICAgIC8vIHRoaXMuaXAgPSBlbmQgKyA0O1xuICAgICAgICAvLyB0aGlzLmZyYW1lcy5wdXNoKGlwKTtcbiAgICAgICAgcmV0dXJuIG5ldyBUcnlPcGNvZGUodGhpcy5wYywgc3RhdGUsIHRyYWNrZXIsIG5ldyBMaW5rZWRMaXN0KCkpO1xuICAgIH1cbiAgICBlbnRlckl0ZW0oa2V5LCBvcGNvZGUpIHtcbiAgICAgICAgdGhpcy5saXN0QmxvY2soKS5tYXBba2V5XSA9IG9wY29kZTtcbiAgICAgICAgdGhpcy5kaWRFbnRlcihvcGNvZGUpO1xuICAgIH1cbiAgICBlbnRlckxpc3Qoc3RhcnQpIHtcbiAgICAgICAgbGV0IHVwZGF0aW5nID0gbmV3IExpbmtlZExpc3QoKTtcbiAgICAgICAgbGV0IHN0YXRlID0gdGhpcy5jYXB0dXJlKDApO1xuICAgICAgICBsZXQgdHJhY2tlciA9IHRoaXMuZWxlbWVudHMoKS5wdXNoQmxvY2tMaXN0KHVwZGF0aW5nKTtcbiAgICAgICAgbGV0IGFydGlmYWN0cyA9IHRoaXMuc3RhY2sucGVlaygpLmFydGlmYWN0cztcbiAgICAgICAgbGV0IG9wY29kZSA9IG5ldyBMaXN0QmxvY2tPcGNvZGUoc3RhcnQsIHN0YXRlLCB0cmFja2VyLCB1cGRhdGluZywgYXJ0aWZhY3RzKTtcbiAgICAgICAgdGhpcy5saXN0QmxvY2tTdGFjay5wdXNoKG9wY29kZSk7XG4gICAgICAgIHRoaXMuZGlkRW50ZXIob3Bjb2RlKTtcbiAgICB9XG4gICAgZGlkRW50ZXIob3Bjb2RlKSB7XG4gICAgICAgIHRoaXMudXBkYXRlV2l0aChvcGNvZGUpO1xuICAgICAgICB0aGlzLnVwZGF0aW5nT3Bjb2RlU3RhY2sucHVzaChvcGNvZGUuY2hpbGRyZW4pO1xuICAgIH1cbiAgICBleGl0KCkge1xuICAgICAgICB0aGlzLmVsZW1lbnRzKCkucG9wQmxvY2soKTtcbiAgICAgICAgdGhpcy51cGRhdGluZ09wY29kZVN0YWNrLnBvcCgpO1xuICAgICAgICBsZXQgcGFyZW50ID0gdGhpcy51cGRhdGluZygpLnRhaWwoKTtcbiAgICAgICAgcGFyZW50LmRpZEluaXRpYWxpemVDaGlsZHJlbigpO1xuICAgIH1cbiAgICBleGl0TGlzdCgpIHtcbiAgICAgICAgdGhpcy5leGl0KCk7XG4gICAgICAgIHRoaXMubGlzdEJsb2NrU3RhY2sucG9wKCk7XG4gICAgfVxuICAgIHVwZGF0ZVdpdGgob3Bjb2RlKSB7XG4gICAgICAgIHRoaXMudXBkYXRpbmcoKS5hcHBlbmQob3Bjb2RlKTtcbiAgICB9XG4gICAgbGlzdEJsb2NrKCkge1xuICAgICAgICByZXR1cm4gZXhwZWN0KHRoaXMubGlzdEJsb2NrU3RhY2suY3VycmVudCwgJ2V4cGVjdGVkIGEgbGlzdCBibG9jaycpO1xuICAgIH1cbiAgICB1cGRhdGluZygpIHtcbiAgICAgICAgcmV0dXJuIGV4cGVjdCh0aGlzLnVwZGF0aW5nT3Bjb2RlU3RhY2suY3VycmVudCwgJ2V4cGVjdGVkIHVwZGF0aW5nIG9wY29kZSBvbiB0aGUgdXBkYXRpbmcgb3Bjb2RlIHN0YWNrJyk7XG4gICAgfVxuICAgIGVsZW1lbnRzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50U3RhY2s7XG4gICAgfVxuICAgIHNjb3BlKCkge1xuICAgICAgICByZXR1cm4gZXhwZWN0KHRoaXMuc2NvcGVTdGFjay5jdXJyZW50LCAnZXhwZWN0ZWQgc2NvcGUgb24gdGhlIHNjb3BlIHN0YWNrJyk7XG4gICAgfVxuICAgIGR5bmFtaWNTY29wZSgpIHtcbiAgICAgICAgcmV0dXJuIGV4cGVjdCh0aGlzLmR5bmFtaWNTY29wZVN0YWNrLmN1cnJlbnQsICdleHBlY3RlZCBkeW5hbWljIHNjb3BlIG9uIHRoZSBkeW5hbWljIHNjb3BlIHN0YWNrJyk7XG4gICAgfVxuICAgIHB1c2hDaGlsZFNjb3BlKCkge1xuICAgICAgICB0aGlzLnNjb3BlU3RhY2sucHVzaCh0aGlzLnNjb3BlKCkuY2hpbGQoKSk7XG4gICAgfVxuICAgIHB1c2hDYWxsZXJTY29wZShjaGlsZFNjb3BlID0gZmFsc2UpIHtcbiAgICAgICAgbGV0IGNhbGxlclNjb3BlID0gZXhwZWN0KHRoaXMuc2NvcGUoKS5nZXRDYWxsZXJTY29wZSgpLCAncHVzaENhbGxlclNjb3BlIGlzIGNhbGxlZCB3aGVuIGEgY2FsbGVyIHNjb3BlIGlzIHByZXNlbnQnKTtcbiAgICAgICAgdGhpcy5zY29wZVN0YWNrLnB1c2goY2hpbGRTY29wZSA/IGNhbGxlclNjb3BlLmNoaWxkKCkgOiBjYWxsZXJTY29wZSk7XG4gICAgfVxuICAgIHB1c2hEeW5hbWljU2NvcGUoKSB7XG4gICAgICAgIGxldCBjaGlsZCA9IHRoaXMuZHluYW1pY1Njb3BlKCkuY2hpbGQoKTtcbiAgICAgICAgdGhpcy5keW5hbWljU2NvcGVTdGFjay5wdXNoKGNoaWxkKTtcbiAgICAgICAgcmV0dXJuIGNoaWxkO1xuICAgIH1cbiAgICBwdXNoUm9vdFNjb3BlKHNpemUsIGJpbmRDYWxsZXIpIHtcbiAgICAgICAgbGV0IHNjb3BlID0gU2NvcGUuc2l6ZWQoc2l6ZSk7XG4gICAgICAgIGlmIChiaW5kQ2FsbGVyKSBzY29wZS5iaW5kQ2FsbGVyU2NvcGUodGhpcy5zY29wZSgpKTtcbiAgICAgICAgdGhpcy5zY29wZVN0YWNrLnB1c2goc2NvcGUpO1xuICAgICAgICByZXR1cm4gc2NvcGU7XG4gICAgfVxuICAgIHBvcFNjb3BlKCkge1xuICAgICAgICB0aGlzLnNjb3BlU3RhY2sucG9wKCk7XG4gICAgfVxuICAgIHBvcER5bmFtaWNTY29wZSgpIHtcbiAgICAgICAgdGhpcy5keW5hbWljU2NvcGVTdGFjay5wb3AoKTtcbiAgICB9XG4gICAgbmV3RGVzdHJveWFibGUoZCkge1xuICAgICAgICB0aGlzLmVsZW1lbnRzKCkubmV3RGVzdHJveWFibGUoZCk7XG4gICAgfVxuICAgIC8vLyBTQ09QRSBIRUxQRVJTXG4gICAgZ2V0U2VsZigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NvcGUoKS5nZXRTZWxmKCk7XG4gICAgfVxuICAgIHJlZmVyZW5jZUZvclN5bWJvbChzeW1ib2wpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NvcGUoKS5nZXRTeW1ib2woc3ltYm9sKTtcbiAgICB9XG4gICAgLy8vIEVYRUNVVElPTlxuICAgIGV4ZWN1dGUoc3RhcnQsIGluaXRpYWxpemUpIHtcbiAgICAgICAgdGhpcy5wYyA9IHN0YXJ0O1xuICAgICAgICBpZiAoaW5pdGlhbGl6ZSkgaW5pdGlhbGl6ZSh0aGlzKTtcbiAgICAgICAgbGV0IHJlc3VsdDtcbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMubmV4dCgpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdC5kb25lKSBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0LnZhbHVlO1xuICAgIH1cbiAgICBuZXh0KCkge1xuICAgICAgICBsZXQgeyBlbnYsIHVwZGF0aW5nT3Bjb2RlU3RhY2ssIGVsZW1lbnRTdGFjayB9ID0gdGhpcztcbiAgICAgICAgbGV0IG9wY29kZSA9IHRoaXMubmV4dFN0YXRlbWVudChlbnYpO1xuICAgICAgICBsZXQgcmVzdWx0O1xuICAgICAgICBpZiAob3Bjb2RlICE9PSBudWxsKSB7XG4gICAgICAgICAgICBBUFBFTkRfT1BDT0RFUy5ldmFsdWF0ZSh0aGlzLCBvcGNvZGUsIG9wY29kZS50eXBlKTtcbiAgICAgICAgICAgIHJlc3VsdCA9IHsgZG9uZTogZmFsc2UsIHZhbHVlOiBudWxsIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICAgICAgZG9uZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogbmV3IFJlbmRlclJlc3VsdChlbnYsIGV4cGVjdCh1cGRhdGluZ09wY29kZVN0YWNrLnBvcCgpLCAndGhlcmUgc2hvdWxkIGJlIGEgZmluYWwgdXBkYXRpbmcgb3Bjb2RlIHN0YWNrJyksIGVsZW1lbnRTdGFjay5wb3BCbG9jaygpKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBuZXh0U3RhdGVtZW50KGVudikge1xuICAgICAgICBsZXQgeyBwYyB9ID0gdGhpcztcbiAgICAgICAgaWYgKHBjID09PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHByb2dyYW0gPSBlbnYucHJvZ3JhbTtcbiAgICAgICAgdGhpcy5wYyArPSA0O1xuICAgICAgICByZXR1cm4gcHJvZ3JhbS5vcGNvZGUocGMpO1xuICAgIH1cbiAgICBldmFsdWF0ZU9wY29kZShvcGNvZGUpIHtcbiAgICAgICAgQVBQRU5EX09QQ09ERVMuZXZhbHVhdGUodGhpcywgb3Bjb2RlLCBvcGNvZGUudHlwZSk7XG4gICAgfVxuICAgIGJpbmREeW5hbWljU2NvcGUobmFtZXMpIHtcbiAgICAgICAgbGV0IHNjb3BlID0gdGhpcy5keW5hbWljU2NvcGUoKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IG5hbWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBsZXQgbmFtZSA9IHRoaXMuY29uc3RhbnRzLmdldFN0cmluZyhuYW1lc1tpXSk7XG4gICAgICAgICAgICBzY29wZS5zZXQobmFtZSwgdGhpcy5zdGFjay5wb3AoKSk7XG4gICAgICAgIH1cbiAgICB9XG59Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi92bS9hcHBlbmQuanMiXSwibmFtZXMiOlsiUmVnaXN0ZXIiLCJTY29wZSIsIlN0YWNrIiwiTGlua2VkTGlzdCIsIkxpc3RTbGljZSIsImNvbWJpbmVTbGljZSIsIkxhYmVsT3Bjb2RlIiwiSnVtcElmTm90TW9kaWZpZWRPcGNvZGUiLCJEaWRNb2RpZnlPcGNvZGUiLCJMaXN0QmxvY2tPcGNvZGUiLCJUcnlPcGNvZGUiLCJSZW5kZXJSZXN1bHQiLCJBUFBFTkRfT1BDT0RFUyIsIkV2YWx1YXRpb25TdGFjayIsInN0YWNrIiwiZnAiLCJzcCIsIk9iamVjdCIsInNlYWwiLCJlbXB0eSIsInJlc3RvcmUiLCJzbmFwc2hvdCIsInNsaWNlIiwibGVuZ3RoIiwiaXNFbXB0eSIsInB1c2giLCJ2YWx1ZSIsImR1cCIsInBvc2l0aW9uIiwicG9wIiwibiIsInRvcCIsInBlZWsiLCJmcm9tQmFzZSIsIm9mZnNldCIsImZyb21Ub3AiLCJjYXB0dXJlIiwiaXRlbXMiLCJlbmQiLCJzdGFydCIsInRvQXJyYXkiLCJWTSIsImVudiIsInNjb3BlIiwiZHluYW1pY1Njb3BlIiwiZWxlbWVudFN0YWNrIiwiZHluYW1pY1Njb3BlU3RhY2siLCJzY29wZVN0YWNrIiwidXBkYXRpbmdPcGNvZGVTdGFjayIsImNhY2hlR3JvdXBzIiwibGlzdEJsb2NrU3RhY2siLCJwYyIsInJhIiwiczAiLCJzMSIsInQwIiwidDEiLCJjb25zdGFudHMiLCJmZXRjaCIsInJlZ2lzdGVyIiwibG9hZCIsImZldGNoVmFsdWUiLCJsb2FkVmFsdWUiLCJwdXNoRnJhbWUiLCJwb3BGcmFtZSIsImdvdG8iLCJjYWxsIiwicmV0dXJuVG8iLCJyZXR1cm4iLCJpbml0aWFsIiwic2VsZiIsInByb2dyYW0iLCJyb290Iiwic3ltYm9sVGFibGUiLCJzeW1ib2xzIiwidm0iLCJhcmdzIiwiYmVnaW5DYWNoZUdyb3VwIiwidXBkYXRpbmciLCJ0YWlsIiwiY29tbWl0Q2FjaGVHcm91cCIsIkVORCIsIm9wY29kZXMiLCJtYXJrZXIiLCJoZWFkIiwibmV4dE5vZGUiLCJ0YWciLCJndWFyZCIsImluc2VydEJlZm9yZSIsImFwcGVuZCIsImVudGVyIiwic3RhdGUiLCJ0cmFja2VyIiwiZWxlbWVudHMiLCJwdXNoVXBkYXRhYmxlQmxvY2siLCJ0cnlPcGNvZGUiLCJkaWRFbnRlciIsIml0ZXJhdGUiLCJtZW1vIiwiZW50ZXJJdGVtIiwia2V5Iiwib3Bjb2RlIiwibGlzdEJsb2NrIiwibWFwIiwiZW50ZXJMaXN0IiwicHVzaEJsb2NrTGlzdCIsImFydGlmYWN0cyIsInVwZGF0ZVdpdGgiLCJjaGlsZHJlbiIsImV4aXQiLCJwb3BCbG9jayIsInBhcmVudCIsImRpZEluaXRpYWxpemVDaGlsZHJlbiIsImV4aXRMaXN0IiwiY3VycmVudCIsInB1c2hDaGlsZFNjb3BlIiwiY2hpbGQiLCJwdXNoQ2FsbGVyU2NvcGUiLCJjaGlsZFNjb3BlIiwiY2FsbGVyU2NvcGUiLCJnZXRDYWxsZXJTY29wZSIsInB1c2hEeW5hbWljU2NvcGUiLCJwdXNoUm9vdFNjb3BlIiwic2l6ZSIsImJpbmRDYWxsZXIiLCJzaXplZCIsImJpbmRDYWxsZXJTY29wZSIsInBvcFNjb3BlIiwicG9wRHluYW1pY1Njb3BlIiwibmV3RGVzdHJveWFibGUiLCJkIiwiZ2V0U2VsZiIsInJlZmVyZW5jZUZvclN5bWJvbCIsInN5bWJvbCIsImdldFN5bWJvbCIsImV4ZWN1dGUiLCJpbml0aWFsaXplIiwicmVzdWx0IiwibmV4dCIsImRvbmUiLCJuZXh0U3RhdGVtZW50IiwiZXZhbHVhdGUiLCJ0eXBlIiwiZXZhbHVhdGVPcGNvZGUiLCJiaW5kRHluYW1pY1Njb3BlIiwibmFtZXMiLCJpIiwibmFtZSIsImdldFN0cmluZyIsInNldCJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLFNBQVNBLFFBQVQsUUFBeUIsWUFBekI7QUFDQSxTQUFTQyxLQUFULFFBQXNCLGdCQUF0QjtBQUNBLFNBQVNDLEtBQVQsRUFBZ0JDLFVBQWhCLEVBQTRCQyxTQUE1QixRQUFxRCxlQUFyRDtBQUNB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cG9ydCB7IFJlZ2lzdGVyIH0gZnJvbSAnLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBTY29wZSB9IGZyb20gJy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IFN0YWNrLCBMaW5rZWRMaXN0LCBMaXN0U2xpY2UsIGV4cGVjdCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgY29tYmluZVNsaWNlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IExhYmVsT3Bjb2RlLCBKdW1wSWZOb3RNb2RpZmllZE9wY29kZSwgRGlkTW9kaWZ5T3Bjb2RlIH0gZnJvbSAnLi4vY29tcGlsZWQvb3Bjb2Rlcy92bSc7XG5pbXBvcnQgeyBMaXN0QmxvY2tPcGNvZGUsIFRyeU9wY29kZSB9IGZyb20gJy4vdXBkYXRlJztcbmltcG9ydCBSZW5kZXJSZXN1bHQgZnJvbSAnLi9yZW5kZXItcmVzdWx0JztcbmltcG9ydCB7IEFQUEVORF9PUENPREVTIH0gZnJvbSAnLi4vb3Bjb2Rlcyc7XG5leHBvcnQgY2xhc3MgRXZhbHVhdGlvblN0YWNrIHtcbiAgICBjb25zdHJ1Y3RvcihzdGFjaywgZnAsIHNwKSB7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICAgICAgdGhpcy5mcCA9IGZwO1xuICAgICAgICB0aGlzLnNwID0gc3A7XG4gICAgICAgIE9iamVjdC5zZWFsKHRoaXMpO1xuICAgIH1cbiAgICBzdGF0aWMgZW1wdHkoKSB7XG4gICAgICAgIHJldHVybiBuZXcgdGhpcyhbXSwgMCwgLTEpO1xuICAgIH1cbiAgICBzdGF0aWMgcmVzdG9yZShzbmFwc2hvdCkge1xuICAgICAgICByZXR1cm4gbmV3IHRoaXMoc25hcHNob3Quc2xpY2UoKSwgMCwgc25hcHNob3QubGVuZ3RoIC0gMSk7XG4gICAgfVxuICAgIGlzRW1wdHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNwID09PSAtMTtcbiAgICB9XG4gICAgcHVzaCh2YWx1ZSkge1xuICAgICAgICB0aGlzLnN0YWNrWysrdGhpcy5zcF0gPSB2YWx1ZTtcbiAgICB9XG4gICAgZHVwKHBvc2l0aW9uID0gdGhpcy5zcCkge1xuICAgICAgICB0aGlzLnB1c2godGhpcy5zdGFja1twb3NpdGlvbl0pO1xuICAgIH1cbiAgICBwb3AobiA9IDEpIHtcbiAgICAgICAgbGV0IHRvcCA9IHRoaXMuc3RhY2tbdGhpcy5zcF07XG4gICAgICAgIHRoaXMuc3AgLT0gbjtcbiAgICAgICAgcmV0dXJuIHRvcDtcbiAgICB9XG4gICAgcGVlaygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2tbdGhpcy5zcF07XG4gICAgfVxuICAgIGZyb21CYXNlKG9mZnNldCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFja1t0aGlzLmZwIC0gb2Zmc2V0XTtcbiAgICB9XG4gICAgZnJvbVRvcChvZmZzZXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2tbdGhpcy5zcCAtIG9mZnNldF07XG4gICAgfVxuICAgIGNhcHR1cmUoaXRlbXMpIHtcbiAgICAgICAgbGV0IGVuZCA9IHRoaXMuc3AgKyAxO1xuICAgICAgICBsZXQgc3RhcnQgPSBlbmQgLSBpdGVtcztcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2suc2xpY2Uoc3RhcnQsIGVuZCk7XG4gICAgfVxuICAgIHRvQXJyYXkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrLnNsaWNlKHRoaXMuZnAsIHRoaXMuc3AgKyAxKTtcbiAgICB9XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWTSB7XG4gICAgY29uc3RydWN0b3IoZW52LCBzY29wZSwgZHluYW1pY1Njb3BlLCBlbGVtZW50U3RhY2spIHtcbiAgICAgICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgICAgIHRoaXMuZWxlbWVudFN0YWNrID0gZWxlbWVudFN0YWNrO1xuICAgICAgICB0aGlzLmR5bmFtaWNTY29wZVN0YWNrID0gbmV3IFN0YWNrKCk7XG4gICAgICAgIHRoaXMuc2NvcGVTdGFjayA9IG5ldyBTdGFjaygpO1xuICAgICAgICB0aGlzLnVwZGF0aW5nT3Bjb2RlU3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgICAgICAgdGhpcy5jYWNoZUdyb3VwcyA9IG5ldyBTdGFjaygpO1xuICAgICAgICB0aGlzLmxpc3RCbG9ja1N0YWNrID0gbmV3IFN0YWNrKCk7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBFdmFsdWF0aW9uU3RhY2suZW1wdHkoKTtcbiAgICAgICAgLyoqIFJlZ2lzdGVycyAqKi9cbiAgICAgICAgdGhpcy5wYyA9IC0xO1xuICAgICAgICB0aGlzLnJhID0gLTE7XG4gICAgICAgIHRoaXMuczAgPSBudWxsO1xuICAgICAgICB0aGlzLnMxID0gbnVsbDtcbiAgICAgICAgdGhpcy50MCA9IG51bGw7XG4gICAgICAgIHRoaXMudDEgPSBudWxsO1xuICAgICAgICB0aGlzLmVudiA9IGVudjtcbiAgICAgICAgdGhpcy5jb25zdGFudHMgPSBlbnYuY29uc3RhbnRzO1xuICAgICAgICB0aGlzLmVsZW1lbnRTdGFjayA9IGVsZW1lbnRTdGFjaztcbiAgICAgICAgdGhpcy5zY29wZVN0YWNrLnB1c2goc2NvcGUpO1xuICAgICAgICB0aGlzLmR5bmFtaWNTY29wZVN0YWNrLnB1c2goZHluYW1pY1Njb3BlKTtcbiAgICB9XG4gICAgZ2V0IGZwKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFjay5mcDtcbiAgICB9XG4gICAgc2V0IGZwKGZwKSB7XG4gICAgICAgIHRoaXMuc3RhY2suZnAgPSBmcDtcbiAgICB9XG4gICAgZ2V0IHNwKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFjay5zcDtcbiAgICB9XG4gICAgc2V0IHNwKHNwKSB7XG4gICAgICAgIHRoaXMuc3RhY2suc3AgPSBzcDtcbiAgICB9XG4gICAgLy8gRmV0Y2ggYSB2YWx1ZSBmcm9tIGEgcmVnaXN0ZXIgb250byB0aGUgc3RhY2tcbiAgICBmZXRjaChyZWdpc3Rlcikge1xuICAgICAgICB0aGlzLnN0YWNrLnB1c2godGhpc1tSZWdpc3RlcltyZWdpc3Rlcl1dKTtcbiAgICB9XG4gICAgLy8gTG9hZCBhIHZhbHVlIGZyb20gdGhlIHN0YWNrIGludG8gYSByZWdpc3RlclxuICAgIGxvYWQocmVnaXN0ZXIpIHtcbiAgICAgICAgdGhpc1tSZWdpc3RlcltyZWdpc3Rlcl1dID0gdGhpcy5zdGFjay5wb3AoKTtcbiAgICB9XG4gICAgLy8gRmV0Y2ggYSB2YWx1ZSBmcm9tIGEgcmVnaXN0ZXJcbiAgICBmZXRjaFZhbHVlKHJlZ2lzdGVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzW1JlZ2lzdGVyW3JlZ2lzdGVyXV07XG4gICAgfVxuICAgIC8vIExvYWQgYSB2YWx1ZSBpbnRvIGEgcmVnaXN0ZXJcbiAgICBsb2FkVmFsdWUocmVnaXN0ZXIsIHZhbHVlKSB7XG4gICAgICAgIHRoaXNbUmVnaXN0ZXJbcmVnaXN0ZXJdXSA9IHZhbHVlO1xuICAgIH1cbiAgICAvLyBTdGFydCBhIG5ldyBmcmFtZSBhbmQgc2F2ZSAkcmEgYW5kICRmcCBvbiB0aGUgc3RhY2tcbiAgICBwdXNoRnJhbWUoKSB7XG4gICAgICAgIHRoaXMuc3RhY2sucHVzaCh0aGlzLnJhKTtcbiAgICAgICAgdGhpcy5zdGFjay5wdXNoKHRoaXMuZnApO1xuICAgICAgICB0aGlzLmZwID0gdGhpcy5zcCAtIDE7XG4gICAgICAgIC8vIHRoaXMuZnAgPSB0aGlzLnNwICsgMTtcbiAgICB9XG4gICAgLy8gUmVzdG9yZSAkcmEsICRzcCBhbmQgJGZwXG4gICAgcG9wRnJhbWUoKSB7XG4gICAgICAgIHRoaXMuc3AgPSB0aGlzLmZwIC0gMTtcbiAgICAgICAgdGhpcy5yYSA9IHRoaXMuc3RhY2suZnJvbUJhc2UoMCk7XG4gICAgICAgIHRoaXMuZnAgPSB0aGlzLnN0YWNrLmZyb21CYXNlKC0xKTtcbiAgICB9XG4gICAgLy8gSnVtcCB0byBhbiBhZGRyZXNzIGluIGBwcm9ncmFtYFxuICAgIGdvdG8ocGMpIHtcbiAgICAgICAgdGhpcy5wYyA9IHBjO1xuICAgIH1cbiAgICAvLyBTYXZlICRwYyBpbnRvICRyYSwgdGhlbiBqdW1wIHRvIGEgbmV3IGFkZHJlc3MgaW4gYHByb2dyYW1gIChqYWwgaW4gTUlQUylcbiAgICBjYWxsKHBjKSB7XG4gICAgICAgIHRoaXMucmEgPSB0aGlzLnBjO1xuICAgICAgICB0aGlzLnBjID0gcGM7XG4gICAgfVxuICAgIC8vIFB1dCBhIHNwZWNpZmljIGBwcm9ncmFtYCBhZGRyZXNzIGluICRyYVxuICAgIHJldHVyblRvKHJhKSB7XG4gICAgICAgIHRoaXMucmEgPSByYTtcbiAgICB9XG4gICAgLy8gUmV0dXJuIHRvIHRoZSBgcHJvZ3JhbWAgYWRkcmVzcyBzdG9yZWQgaW4gJHJhXG4gICAgcmV0dXJuKCkge1xuICAgICAgICB0aGlzLnBjID0gdGhpcy5yYTtcbiAgICB9XG4gICAgc3RhdGljIGluaXRpYWwoZW52LCBzZWxmLCBkeW5hbWljU2NvcGUsIGVsZW1lbnRTdGFjaywgcHJvZ3JhbSkge1xuICAgICAgICBsZXQgc2NvcGUgPSBTY29wZS5yb290KHNlbGYsIHByb2dyYW0uc3ltYm9sVGFibGUuc3ltYm9scy5sZW5ndGgpO1xuICAgICAgICBsZXQgdm0gPSBuZXcgVk0oZW52LCBzY29wZSwgZHluYW1pY1Njb3BlLCBlbGVtZW50U3RhY2spO1xuICAgICAgICB2bS5wYyA9IHByb2dyYW0uc3RhcnQ7XG4gICAgICAgIHZtLnVwZGF0aW5nT3Bjb2RlU3RhY2sucHVzaChuZXcgTGlua2VkTGlzdCgpKTtcbiAgICAgICAgcmV0dXJuIHZtO1xuICAgIH1cbiAgICBjYXB0dXJlKGFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGVudjogdGhpcy5lbnYsXG4gICAgICAgICAgICBzY29wZTogdGhpcy5zY29wZSgpLFxuICAgICAgICAgICAgZHluYW1pY1Njb3BlOiB0aGlzLmR5bmFtaWNTY29wZSgpLFxuICAgICAgICAgICAgc3RhY2s6IHRoaXMuc3RhY2suY2FwdHVyZShhcmdzKVxuICAgICAgICB9O1xuICAgIH1cbiAgICBiZWdpbkNhY2hlR3JvdXAoKSB7XG4gICAgICAgIHRoaXMuY2FjaGVHcm91cHMucHVzaCh0aGlzLnVwZGF0aW5nKCkudGFpbCgpKTtcbiAgICB9XG4gICAgY29tbWl0Q2FjaGVHcm91cCgpIHtcbiAgICAgICAgLy8gICAgICAgIEp1bXBJZk5vdE1vZGlmaWVkKEVORClcbiAgICAgICAgLy8gICAgICAgIChoZWFkKVxuICAgICAgICAvLyAgICAgICAgKC4uLi4pXG4gICAgICAgIC8vICAgICAgICAodGFpbClcbiAgICAgICAgLy8gICAgICAgIERpZE1vZGlmeVxuICAgICAgICAvLyBFTkQ6ICAgTm9vcFxuICAgICAgICBsZXQgRU5EID0gbmV3IExhYmVsT3Bjb2RlKFwiRU5EXCIpO1xuICAgICAgICBsZXQgb3Bjb2RlcyA9IHRoaXMudXBkYXRpbmcoKTtcbiAgICAgICAgbGV0IG1hcmtlciA9IHRoaXMuY2FjaGVHcm91cHMucG9wKCk7XG4gICAgICAgIGxldCBoZWFkID0gbWFya2VyID8gb3Bjb2Rlcy5uZXh0Tm9kZShtYXJrZXIpIDogb3Bjb2Rlcy5oZWFkKCk7XG4gICAgICAgIGxldCB0YWlsID0gb3Bjb2Rlcy50YWlsKCk7XG4gICAgICAgIGxldCB0YWcgPSBjb21iaW5lU2xpY2UobmV3IExpc3RTbGljZShoZWFkLCB0YWlsKSk7XG4gICAgICAgIGxldCBndWFyZCA9IG5ldyBKdW1wSWZOb3RNb2RpZmllZE9wY29kZSh0YWcsIEVORCk7XG4gICAgICAgIG9wY29kZXMuaW5zZXJ0QmVmb3JlKGd1YXJkLCBoZWFkKTtcbiAgICAgICAgb3Bjb2Rlcy5hcHBlbmQobmV3IERpZE1vZGlmeU9wY29kZShndWFyZCkpO1xuICAgICAgICBvcGNvZGVzLmFwcGVuZChFTkQpO1xuICAgIH1cbiAgICBlbnRlcihhcmdzKSB7XG4gICAgICAgIGxldCB1cGRhdGluZyA9IG5ldyBMaW5rZWRMaXN0KCk7XG4gICAgICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZShhcmdzKTtcbiAgICAgICAgbGV0IHRyYWNrZXIgPSB0aGlzLmVsZW1lbnRzKCkucHVzaFVwZGF0YWJsZUJsb2NrKCk7XG4gICAgICAgIGxldCB0cnlPcGNvZGUgPSBuZXcgVHJ5T3Bjb2RlKHRoaXMucGMsIHN0YXRlLCB0cmFja2VyLCB1cGRhdGluZyk7XG4gICAgICAgIHRoaXMuZGlkRW50ZXIodHJ5T3Bjb2RlKTtcbiAgICB9XG4gICAgaXRlcmF0ZShtZW1vLCB2YWx1ZSkge1xuICAgICAgICBsZXQgc3RhY2sgPSB0aGlzLnN0YWNrO1xuICAgICAgICBzdGFjay5wdXNoKHZhbHVlKTtcbiAgICAgICAgc3RhY2sucHVzaChtZW1vKTtcbiAgICAgICAgbGV0IHN0YXRlID0gdGhpcy5jYXB0dXJlKDIpO1xuICAgICAgICBsZXQgdHJhY2tlciA9IHRoaXMuZWxlbWVudHMoKS5wdXNoVXBkYXRhYmxlQmxvY2soKTtcbiAgICAgICAgLy8gbGV0IGlwID0gdGhpcy5pcDtcbiAgICAgICAgLy8gdGhpcy5pcCA9IGVuZCArIDQ7XG4gICAgICAgIC8vIHRoaXMuZnJhbWVzLnB1c2goaXApO1xuICAgICAgICByZXR1cm4gbmV3IFRyeU9wY29kZSh0aGlzLnBjLCBzdGF0ZSwgdHJhY2tlciwgbmV3IExpbmtlZExpc3QoKSk7XG4gICAgfVxuICAgIGVudGVySXRlbShrZXksIG9wY29kZSkge1xuICAgICAgICB0aGlzLmxpc3RCbG9jaygpLm1hcFtrZXldID0gb3Bjb2RlO1xuICAgICAgICB0aGlzLmRpZEVudGVyKG9wY29kZSk7XG4gICAgfVxuICAgIGVudGVyTGlzdChzdGFydCkge1xuICAgICAgICBsZXQgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdCgpO1xuICAgICAgICBsZXQgc3RhdGUgPSB0aGlzLmNhcHR1cmUoMCk7XG4gICAgICAgIGxldCB0cmFja2VyID0gdGhpcy5lbGVtZW50cygpLnB1c2hCbG9ja0xpc3QodXBkYXRpbmcpO1xuICAgICAgICBsZXQgYXJ0aWZhY3RzID0gdGhpcy5zdGFjay5wZWVrKCkuYXJ0aWZhY3RzO1xuICAgICAgICBsZXQgb3Bjb2RlID0gbmV3IExpc3RCbG9ja09wY29kZShzdGFydCwgc3RhdGUsIHRyYWNrZXIsIHVwZGF0aW5nLCBhcnRpZmFjdHMpO1xuICAgICAgICB0aGlzLmxpc3RCbG9ja1N0YWNrLnB1c2gob3Bjb2RlKTtcbiAgICAgICAgdGhpcy5kaWRFbnRlcihvcGNvZGUpO1xuICAgIH1cbiAgICBkaWRFbnRlcihvcGNvZGUpIHtcbiAgICAgICAgdGhpcy51cGRhdGVXaXRoKG9wY29kZSk7XG4gICAgICAgIHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5wdXNoKG9wY29kZS5jaGlsZHJlbik7XG4gICAgfVxuICAgIGV4aXQoKSB7XG4gICAgICAgIHRoaXMuZWxlbWVudHMoKS5wb3BCbG9jaygpO1xuICAgICAgICB0aGlzLnVwZGF0aW5nT3Bjb2RlU3RhY2sucG9wKCk7XG4gICAgICAgIGxldCBwYXJlbnQgPSB0aGlzLnVwZGF0aW5nKCkudGFpbCgpO1xuICAgICAgICBwYXJlbnQuZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKCk7XG4gICAgfVxuICAgIGV4aXRMaXN0KCkge1xuICAgICAgICB0aGlzLmV4aXQoKTtcbiAgICAgICAgdGhpcy5saXN0QmxvY2tTdGFjay5wb3AoKTtcbiAgICB9XG4gICAgdXBkYXRlV2l0aChvcGNvZGUpIHtcbiAgICAgICAgdGhpcy51cGRhdGluZygpLmFwcGVuZChvcGNvZGUpO1xuICAgIH1cbiAgICBsaXN0QmxvY2soKSB7XG4gICAgICAgIHJldHVybiBleHBlY3QodGhpcy5saXN0QmxvY2tTdGFjay5jdXJyZW50LCAnZXhwZWN0ZWQgYSBsaXN0IGJsb2NrJyk7XG4gICAgfVxuICAgIHVwZGF0aW5nKCkge1xuICAgICAgICByZXR1cm4gZXhwZWN0KHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5jdXJyZW50LCAnZXhwZWN0ZWQgdXBkYXRpbmcgb3Bjb2RlIG9uIHRoZSB1cGRhdGluZyBvcGNvZGUgc3RhY2snKTtcbiAgICB9XG4gICAgZWxlbWVudHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRTdGFjaztcbiAgICB9XG4gICAgc2NvcGUoKSB7XG4gICAgICAgIHJldHVybiBleHBlY3QodGhpcy5zY29wZVN0YWNrLmN1cnJlbnQsICdleHBlY3RlZCBzY29wZSBvbiB0aGUgc2NvcGUgc3RhY2snKTtcbiAgICB9XG4gICAgZHluYW1pY1Njb3BlKCkge1xuICAgICAgICByZXR1cm4gZXhwZWN0KHRoaXMuZHluYW1pY1Njb3BlU3RhY2suY3VycmVudCwgJ2V4cGVjdGVkIGR5bmFtaWMgc2NvcGUgb24gdGhlIGR5bmFtaWMgc2NvcGUgc3RhY2snKTtcbiAgICB9XG4gICAgcHVzaENoaWxkU2NvcGUoKSB7XG4gICAgICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKHRoaXMuc2NvcGUoKS5jaGlsZCgpKTtcbiAgICB9XG4gICAgcHVzaENhbGxlclNjb3BlKGNoaWxkU2NvcGUgPSBmYWxzZSkge1xuICAgICAgICBsZXQgY2FsbGVyU2NvcGUgPSBleHBlY3QodGhpcy5zY29wZSgpLmdldENhbGxlclNjb3BlKCksICdwdXNoQ2FsbGVyU2NvcGUgaXMgY2FsbGVkIHdoZW4gYSBjYWxsZXIgc2NvcGUgaXMgcHJlc2VudCcpO1xuICAgICAgICB0aGlzLnNjb3BlU3RhY2sucHVzaChjaGlsZFNjb3BlID8gY2FsbGVyU2NvcGUuY2hpbGQoKSA6IGNhbGxlclNjb3BlKTtcbiAgICB9XG4gICAgcHVzaER5bmFtaWNTY29wZSgpIHtcbiAgICAgICAgbGV0IGNoaWxkID0gdGhpcy5keW5hbWljU2NvcGUoKS5jaGlsZCgpO1xuICAgICAgICB0aGlzLmR5bmFtaWNTY29wZVN0YWNrLnB1c2goY2hpbGQpO1xuICAgICAgICByZXR1cm4gY2hpbGQ7XG4gICAgfVxuICAgIHB1c2hSb290U2NvcGUoc2l6ZSwgYmluZENhbGxlcikge1xuICAgICAgICBsZXQgc2NvcGUgPSBTY29wZS5zaXplZChzaXplKTtcbiAgICAgICAgaWYgKGJpbmRDYWxsZXIpIHNjb3BlLmJpbmRDYWxsZXJTY29wZSh0aGlzLnNjb3BlKCkpO1xuICAgICAgICB0aGlzLnNjb3BlU3RhY2sucHVzaChzY29wZSk7XG4gICAgICAgIHJldHVybiBzY29wZTtcbiAgICB9XG4gICAgcG9wU2NvcGUoKSB7XG4gICAgICAgIHRoaXMuc2NvcGVTdGFjay5wb3AoKTtcbiAgICB9XG4gICAgcG9wRHluYW1pY1Njb3BlKCkge1xuICAgICAgICB0aGlzLmR5bmFtaWNTY29wZVN0YWNrLnBvcCgpO1xuICAgIH1cbiAgICBuZXdEZXN0cm95YWJsZShkKSB7XG4gICAgICAgIHRoaXMuZWxlbWVudHMoKS5uZXdEZXN0cm95YWJsZShkKTtcbiAgICB9XG4gICAgLy8vIFNDT1BFIEhFTFBFUlNcbiAgICBnZXRTZWxmKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zY29wZSgpLmdldFNlbGYoKTtcbiAgICB9XG4gICAgcmVmZXJlbmNlRm9yU3ltYm9sKHN5bWJvbCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zY29wZSgpLmdldFN5bWJvbChzeW1ib2wpO1xuICAgIH1cbiAgICAvLy8gRVhFQ1VUSU9OXG4gICAgZXhlY3V0ZShzdGFydCwgaW5pdGlhbGl6ZSkge1xuICAgICAgICB0aGlzLnBjID0gc3RhcnQ7XG4gICAgICAgIGlmIChpbml0aWFsaXplKSBpbml0aWFsaXplKHRoaXMpO1xuICAgICAgICBsZXQgcmVzdWx0O1xuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy5uZXh0KCk7XG4gICAgICAgICAgICBpZiAocmVzdWx0LmRvbmUpIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQudmFsdWU7XG4gICAgfVxuICAgIG5leHQoKSB7XG4gICAgICAgIGxldCB7IGVudiwgdXBkYXRpbmdPcGNvZGVTdGFjaywgZWxlbWVudFN0YWNrIH0gPSB0aGlzO1xuICAgICAgICBsZXQgb3Bjb2RlO1xuICAgICAgICBpZiAob3Bjb2RlID0gdGhpcy5uZXh0U3RhdGVtZW50KGVudikpIHtcbiAgICAgICAgICAgIEFQUEVORF9PUENPREVTLmV2YWx1YXRlKHRoaXMsIG9wY29kZSwgb3Bjb2RlLnR5cGUpO1xuICAgICAgICAgICAgcmV0dXJuIHsgZG9uZTogZmFsc2UsIHZhbHVlOiBudWxsIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRvbmU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogbmV3IFJlbmRlclJlc3VsdChlbnYsIGV4cGVjdCh1cGRhdGluZ09wY29kZVN0YWNrLnBvcCgpLCAndGhlcmUgc2hvdWxkIGJlIGEgZmluYWwgdXBkYXRpbmcgb3Bjb2RlIHN0YWNrJyksIGVsZW1lbnRTdGFjay5wb3BCbG9jaygpKVxuICAgICAgICB9O1xuICAgIH1cbiAgICBuZXh0U3RhdGVtZW50KGVudikge1xuICAgICAgICBsZXQgeyBwYyB9ID0gdGhpcztcbiAgICAgICAgaWYgKHBjID09PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHByb2dyYW0gPSBlbnYucHJvZ3JhbTtcbiAgICAgICAgdGhpcy5wYyArPSA0O1xuICAgICAgICByZXR1cm4gcHJvZ3JhbS5vcGNvZGUocGMpO1xuICAgIH1cbiAgICBldmFsdWF0ZU9wY29kZShvcGNvZGUpIHtcbiAgICAgICAgQVBQRU5EX09QQ09ERVMuZXZhbHVhdGUodGhpcywgb3Bjb2RlLCBvcGNvZGUudHlwZSk7XG4gICAgfVxuICAgIGJpbmREeW5hbWljU2NvcGUobmFtZXMpIHtcbiAgICAgICAgbGV0IHNjb3BlID0gdGhpcy5keW5hbWljU2NvcGUoKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IG5hbWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBsZXQgbmFtZSA9IHRoaXMuY29uc3RhbnRzLmdldFN0cmluZyhuYW1lc1tpXSk7XG4gICAgICAgICAgICBzY29wZS5zZXQobmFtZSwgdGhpcy5zdGFjay5wb3AoKSk7XG4gICAgICAgIH1cbiAgICB9XG59Il19

@@ -306,6 +306,5 @@ 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; }; }();

var out = dict();
for (var i = 0; i < names.length; i++) {
var name = names[i];
out[name] = references[i].value();
}
names.forEach(function (name, i) {
return out[name] = references[i].value();
});
return out;

@@ -323,6 +322,5 @@ };

map = this._map = dict();
for (var i = 0; i < names.length; i++) {
var name = names[i];
map[name] = references[i];
}
names.forEach(function (name, i) {
return map[name] = references[i];
});
}

@@ -337,2 +335,2 @@ return map;

export default new Arguments();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi92bS9hcmd1bWVudHMuanMiXSwibmFtZXMiOlsiZGljdCIsIkVNUFRZX0FSUkFZIiwiY29tYmluZVRhZ2dlZCIsIlByaW1pdGl2ZVJlZmVyZW5jZSIsIlVOREVGSU5FRF9SRUZFUkVOQ0UiLCJBcmd1bWVudHMiLCJzdGFjayIsInBvc2l0aW9uYWwiLCJQb3NpdGlvbmFsQXJndW1lbnRzIiwibmFtZWQiLCJOYW1lZEFyZ3VtZW50cyIsImVtcHR5Iiwic2V0dXAiLCJwb3NpdGlvbmFsQ291bnQiLCJzeW50aGV0aWMiLCJuYW1lcyIsImZyb21Ub3AiLCJuYW1lZENvdW50IiwibGVuZ3RoIiwic3RhcnQiLCJhdCIsInBvcyIsImdldCIsIm5hbWUiLCJjYXB0dXJlIiwidGFnIiwiY2xlYXIiLCJwb3BzIiwicG9wIiwiX3RhZyIsIl9yZWZlcmVuY2VzIiwicG9zaXRpb24iLCJDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHMiLCJyZWZlcmVuY2VzIiwiQXJyYXkiLCJpIiwidmFsdWUiLCJtYXAiLCJ2YWx1ZU9mIiwiY3JlYXRlIiwiaWR4IiwicGFyc2VJbnQiLCJyZWZlcmVuY2UiLCJfbmFtZXMiLCJfcmVhbE5hbWVzIiwiaGFzIiwiaW5kZXhPZiIsIkNhcHR1cmVkTmFtZWRBcmd1bWVudHMiLCJzbGljZU5hbWUiLCJzbGljZSIsIl9tYXAiLCJvdXQiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxTQUFTQSxJQUFULEVBQWVDLFdBQWYsUUFBa0MsZUFBbEM7QUFDQSxTQUFTQyxhQUFULFFBQThCLG9CQUE5QjtBQUNBLFNBQVNDLGtCQUFULEVBQTZCQyxtQkFBN0IsUUFBd0QsZUFBeEQ7QUFDQSxXQUFhQyxTQUFiO0FBQ0kseUJBQWM7QUFBQTs7QUFDVixhQUFLQyxLQUFMLEdBQWEsSUFBYjtBQUNBLGFBQUtDLFVBQUwsR0FBa0IsSUFBSUMsbUJBQUosRUFBbEI7QUFDQSxhQUFLQyxLQUFMLEdBQWEsSUFBSUMsY0FBSixFQUFiO0FBQ0g7O0FBTEwsd0JBTUlDLEtB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T3BDLG1CQUFQO0FBQ0gsU0FGRCxNQUVPO0FBQ0gsbUJBQU82QixXQUFXTyxHQUFYLENBQVA7QUFDSDtBQUNKLEs7O3FDQUNESixLLG9CQUFRO0FBQUEsWUFDRXJCLEtBREYsR0FDd0IsSUFEeEIsQ0FDRUEsS0FERjtBQUFBLFlBQ1NrQixVQURULEdBQ3dCLElBRHhCLENBQ1NBLFVBRFQ7O0FBRUosWUFBSWtCLE1BQU1uRCxNQUFWO0FBQ0EsYUFBSyxJQUFJbUMsSUFBSSxDQUFiLEVBQWdCQSxJQUFJcEIsTUFBTUcsTUFBMUIsRUFBa0NpQixHQUFsQyxFQUF1QztBQUNuQyxnQkFBSVosT0FBT1IsTUFBTW9CLENBQU4sQ0FBWDtBQUNBZ0IsZ0JBQUk1QixJQUFKLElBQVlVLFdBQVdFLENBQVgsRUFBY0MsS0FBZCxFQUFaO0FBQ0g7QUFDRCxlQUFPZSxHQUFQO0FBQ0gsSzs7Ozt5QkFoQ1M7QUFDTixnQkFBSWQsTUFBTSxLQUFLYSxJQUFmO0FBQ0EsZ0JBQUksQ0FBQ2IsR0FBTCxFQUFVO0FBQUEsb0JBQ0F0QixLQURBLEdBQ3NCLElBRHRCLENBQ0FBLEtBREE7QUFBQSxvQkFDT2tCLFVBRFAsR0FDc0IsSUFEdEIsQ0FDT0EsVUFEUDs7QUFFTkksc0JBQU0sS0FBS2EsSUFBTCxHQUFZbEQsTUFBbEI7QUFDQSxxQkFBSyxJQUFJbUMsSUFBSSxDQUFiLEVBQWdCQSxJQUFJcEIsTUFBTUcsTUFBMUIsRUFBa0NpQixHQUFsQyxFQUF1QztBQUNuQyx3QkFBSVosT0FBT1IsTUFBTW9CLENBQU4sQ0FBWDtBQUNBRSx3QkFBSWQsSUFBSixJQUFZVSxXQUFXRSxDQUFYLENBQVo7QUFDSDtBQUNKO0FBQ0QsbUJBQU9FLEdBQVA7QUFDSDs7Ozs7O0FBdUJMLGVBQWUsSUFBSWhDLFNBQUosRUFBZiIsImZpbGUiOiJsaWIvdm0vYXJndW1lbnRzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGljdCwgRU1QVFlfQVJSQVkgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IGNvbWJpbmVUYWdnZWQgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgUHJpbWl0aXZlUmVmZXJlbmNlLCBVTkRFRklORURfUkVGRVJFTkNFIH0gZnJvbSAnLi4vcmVmZXJlbmNlcyc7XG5leHBvcnQgY2xhc3MgQXJndW1lbnRzIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5zdGFjayA9IG51bGw7XG4gICAgICAgIHRoaXMucG9zaXRpb25hbCA9IG5ldyBQb3NpdGlvbmFsQXJndW1lbnRzKCk7XG4gICAgICAgIHRoaXMubmFtZWQgPSBuZXcgTmFtZWRBcmd1bWVudHMoKTtcbiAgICB9XG4gICAgZW1wdHkoKSB7XG4gICAgICAgIHRoaXMuc2V0dXAobnVsbCwgMCwgdHJ1ZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBzZXR1cChzdGFjaywgcG9zaXRpb25hbENvdW50LCBzeW50aGV0aWMpIHtcbiAgICAgICAgdGhpcy5zdGFjayA9IHN0YWNrO1xuICAgICAgICBsZXQgbmFtZXMgPSBzdGFjay5mcm9tVG9wKDApO1xuICAgICAgICBsZXQgbmFtZWRDb3VudCA9IG5hbWVzLmxlbmd0aDtcbiAgICAgICAgbGV0IHN0YXJ0ID0gcG9zaXRpb25hbENvdW50ICsgbmFtZWRDb3VudCArIDE7XG4gICAgICAgIGxldCBwb3NpdGlvbmFsID0gdGhpcy5wb3NpdGlvbmFsO1xuICAgICAgICBwb3NpdGlvbmFsLnNldHVwKHN0YWNrLCBzdGFydCwgcG9zaXRpb25hbENvdW50KTtcbiAgICAgICAgbGV0IG5hbWVkID0gdGhpcy5uYW1lZDtcbiAgICAgICAgbmFtZWQuc2V0dXAoc3RhY2ssIG5hbWVkQ291bnQsIG5hbWVzLCBzeW50aGV0aWMpO1xuICAgIH1cbiAgICBnZXQgdGFnKCkge1xuICAgICAgICByZXR1cm4gY29tYmluZVRhZ2dlZChbdGhpcy5wb3NpdGlvbmFsLCB0aGlzLm5hbWVkXSk7XG4gICAgfVxuICAgIGdldCBsZW5ndGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvc2l0aW9uYWwubGVuZ3RoICsgdGhpcy5uYW1lZC5sZW5ndGg7XG4gICAgfVxuICAgIGF0KHBvcykge1xuICAgICAgICByZXR1cm4gdGhpcy5wb3NpdGlvbmFsLmF0KHBvcyk7XG4gICAgfVxuICAgIGdldChuYW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hbWVkLmdldChuYW1lKTtcbiAgICB9XG4gICAgY2FwdHVyZSgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRhZzogdGhpcy50YWcsXG4gICAgICAgICAgICBsZW5ndGg6IHRoaXMubGVuZ3RoLFxuICAgICAgICAgICAgcG9zaXRpb25hbDogdGhpcy5wb3NpdGlvbmFsLmNhcHR1cmUoKSxcbiAgICAgICAgICAgIG5hbWVkOiB0aGlzLm5hbWVkLmNhcHR1cmUoKVxuICAgICAgICB9O1xuICAgIH1cbiAgICBjbGVhcigpIHtcbiAgICAgICAgbGV0IHsgc3RhY2ssIGxlbmd0aCB9ID0gdGhpcztcbiAgICAgICAgbGV0IHBvcHMgPSBsZW5ndGggKyAxO1xuICAgICAgICB3aGlsZSAoLS1wb3BzID49IDApIHtcbiAgICAgICAgICAgIHN0YWNrLnBvcCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuY2xhc3MgUG9zaXRpb25hbEFyZ3VtZW50cyB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5zdGFjayA9IG51bGw7XG4gICAgICAgIHRoaXMuc3RhcnQgPSAwO1xuICAgICAgICB0aGlzLl90YWcgPSBudWxsO1xuICAgICAgICB0aGlzLl9yZWZlcmVuY2VzID0gbnVsbDtcbiAgICB9XG4gICAgc2V0dXAoc3RhY2ssIHN0YXJ0LCBsZW5ndGgpIHtcbiAgICAgICAgdGhpcy5zdGFjayA9IHN0YWNrO1xuICAgICAgICB0aGlzLnN0YXJ0ID0gc3RhcnQ7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gbGVuZ3RoO1xuICAgICAgICB0aGlzLl90YWcgPSBudWxsO1xuICAgICAgICB0aGlzLl9yZWZlcmVuY2VzID0gbnVsbDtcbiAgICB9XG4gICAgZ2V0IHRhZygpIHtcbiAgICAgICAgbGV0IHRhZyA9IHRoaXMuX3RhZztcbiAgICAgICAgaWYgKCF0YWcpIHtcbiAgICAgICAgICAgIHRhZyA9IHRoaXMuX3RhZyA9IGNvbWJpbmVUYWdnZWQodGhpcy5yZWZlcmVuY2VzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGFnO1xuICAgIH1cbiAgICBhdChwb3NpdGlvbikge1xuICAgICAgICBsZXQgeyBzdGFydCwgbGVuZ3RoIH0gPSB0aGlzO1xuICAgICAgICBpZiAocG9zaXRpb24gPCAwIHx8IHBvc2l0aW9uID49IGxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIFVOREVGSU5FRF9SRUZFUkVOQ0U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gc3RhY2s6IHBvczEsIHBvczIsIHBvczMsIG5hbWVkMSwgbmFtZWQyXG4gICAgICAgIC8vIHN0YXJ0OiA0ICh0b3AgLSA0KVxuICAgICAgICAvL1xuICAgICAgICAvLyBhdCgwKSA9PT0gcG9zMSA9PT0gdG9wIC0gc3RhcnRcbiAgICAgICAgLy8gYXQoMSkgPT09IHBvczIgPT09IHRvcCAtIChzdGFydCAtIDEpXG4gICAgICAgIC8vIGF0KDIpID09PSBwb3MzID09PSB0b3AgLSAoc3RhcnQgLSAyKVxuICAgICAgICBsZXQgZnJvbVRvcCA9IHN0YXJ0IC0gcG9zaXRpb24gLSAxO1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFjay5mcm9tVG9wKGZyb21Ub3ApO1xuICAgIH1cbiAgICBjYXB0dXJlKCkge1xuICAgICAgICByZXR1cm4gbmV3IENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50cyh0aGlzLnRhZywgdGhpcy5yZWZlcmVuY2VzKTtcbiAgICB9XG4gICAgZ2V0IHJlZmVyZW5jZXMoKSB7XG4gICAgICAgIGxldCByZWZlcmVuY2VzID0gdGhpcy5fcmVmZXJlbmNlcztcbiAgICAgICAgaWYgKCFyZWZlcmVuY2VzKSB7XG4gICAgICAgICAgICBsZXQgeyBsZW5ndGggfSA9IHRoaXM7XG4gICAgICAgICAgICByZWZlcmVuY2VzID0gdGhpcy5fcmVmZXJlbmNlcyA9IG5ldyBBcnJheShsZW5ndGgpO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHJlZmVyZW5jZXNbaV0gPSB0aGlzLmF0KGkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZWZlcmVuY2VzO1xuICAgIH1cbn1cbmNsYXNzIENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50cyB7XG4gICAgY29uc3RydWN0b3IodGFnLCByZWZlcmVuY2VzLCBsZW5ndGggPSByZWZlcmVuY2VzLmxlbmd0aCkge1xuICAgICAgICB0aGlzLnRhZyA9IHRhZztcbiAgICAgICAgdGhpcy5yZWZlcmVuY2VzID0gcmVmZXJlbmNlcztcbiAgICAgICAgdGhpcy5sZW5ndGggPSBsZW5ndGg7XG4gICAgfVxuICAgIGF0KHBvc2l0aW9uKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZXNbcG9zaXRpb25dO1xuICAgIH1cbiAgICB2YWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlcy5tYXAodGhpcy52YWx1ZU9mKTtcbiAgICB9XG4gICAgZ2V0KG5hbWUpIHtcbiAgICAgICAgbGV0IHsgcmVmZXJlbmNlcywgbGVuZ3RoIH0gPSB0aGlzO1xuICAgICAgICBpZiAobmFtZSA9PT0gJ2xlbmd0aCcpIHtcbiAgICAgICAgICAgIHJldHVybiBQcmltaXRpdmVSZWZlcmVuY2UuY3JlYXRlKGxlbmd0aCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgaWR4ID0gcGFyc2VJbnQobmFtZSwgMTApO1xuICAgICAgICAgICAgaWYgKGlkeCA8IDAgfHwgaWR4ID49IGxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBVTkRFRklORURfUkVGRVJFTkNFO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVmZXJlbmNlc1tpZHhdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHZhbHVlT2YocmVmZXJlbmNlKSB7XG4gICAgICAgIHJldHVybiByZWZlcmVuY2UudmFsdWUoKTtcbiAgICB9XG59XG5jbGFzcyBOYW1lZEFyZ3VtZW50cyB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5fdGFnID0gbnVsbDtcbiAgICAgICAgdGhpcy5fcmVmZXJlbmNlcyA9IG51bGw7XG4gICAgICAgIHRoaXMuX25hbWVzID0gbnVsbDtcbiAgICAgICAgdGhpcy5fcmVhbE5hbWVzID0gRU1QVFlfQVJSQVk7XG4gICAgfVxuICAgIHNldHVwKHN0YWNrLCBsZW5ndGgsIG5hbWVzLCBzeW50aGV0aWMpIHtcbiAgICAgICAgdGhpcy5zdGFjayA9IHN0YWNrO1xuICAgICAgICB0aGlzLmxlbmd0aCA9IGxlbmd0aDtcbiAgICAgICAgdGhpcy5fdGFnID0gbnVsbDtcbiAgICAgICAgdGhpcy5fcmVmZXJlbmNlcyA9IG51bGw7XG4gICAgICAgIGlmIChzeW50aGV0aWMpIHtcbiAgICAgICAgICAgIHRoaXMuX25hbWVzID0gbmFtZXM7XG4gICAgICAgICAgICB0aGlzLl9yZWFsTmFtZXMgPSBFTVBUWV9BUlJBWTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX25hbWVzID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuX3JlYWxOYW1lcyA9IG5hbWVzO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCB0YWcoKSB7XG4gICAgICAgIHJldHVybiBjb21iaW5lVGFnZ2VkKHRoaXMucmVmZXJlbmNlcyk7XG4gICAgfVxuICAgIGdldCBuYW1lcygpIHtcbiAgICAgICAgbGV0IG5hbWVzID0gdGhpcy5fbmFtZXM7XG4gICAgICAgIGlmICghbmFtZXMpIHtcbiAgICAgICAgICAgIG5hbWVzID0gdGhpcy5fbmFtZXMgPSB0aGlzLl9yZWFsTmFtZXMubWFwKHRoaXMuc2xpY2VOYW1lKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmFtZXM7XG4gICAgfVxuICAgIGhhcyhuYW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hbWVzLmluZGV4T2YobmFtZSkgIT09IC0xO1xuICAgIH1cbiAgICBnZXQobmFtZSkge1xuICAgICAgICBsZXQgeyBuYW1lcywgbGVuZ3RoIH0gPSB0aGlzO1xuICAgICAgICBsZXQgaWR4ID0gbmFtZXMuaW5kZXhPZihuYW1lKTtcbiAgICAgICAgaWYgKGlkeCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiBVTkRFRklORURfUkVGRVJFTkNFO1xuICAgICAgICB9XG4gICAgICAgIC8vIHN0YWNrOiBwb3MxLCBwb3MyLCBwb3MzLCBuYW1lZDEsIG5hbWVkMlxuICAgICAgICAvLyBzdGFydDogNCAodG9wIC0gNClcbiAgICAgICAgLy8gbmFtZWREaWN0OiB7IG5hbWVkMTogMSwgbmFtZWQyOiAwIH07XG4gICAgICAgIC8vXG4gICAgICAgIC8vIGdldCgnbmFtZWQxJykgPT09IG5hbWVkMSA9PT0gdG9wIC0gKHN0YXJ0IC0gMSlcbiAgICAgICAgLy8gZ2V0KCduYW1lZDInKSA9PT0gbmFtZWQyID09PSB0b3AgLSBzdGFydFxuICAgICAgICBsZXQgZnJvbVRvcCA9IGxlbmd0aCAtIGlkeDtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2suZnJvbVRvcChmcm9tVG9wKTtcbiAgICB9XG4gICAgY2FwdHVyZSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDYXB0dXJlZE5hbWVkQXJndW1lbnRzKHRoaXMudGFnLCB0aGlzLm5hbWVzLCB0aGlzLnJlZmVyZW5jZXMpO1xuICAgIH1cbiAgICBnZXQgcmVmZXJlbmNlcygpIHtcbiAgICAgICAgbGV0IHJlZmVyZW5jZXMgPSB0aGlzLl9yZWZlcmVuY2VzO1xuICAgICAgICBpZiAoIXJlZmVyZW5jZXMpIHtcbiAgICAgICAgICAgIGxldCB7IG5hbWVzLCBsZW5ndGggfSA9IHRoaXM7XG4gICAgICAgICAgICByZWZlcmVuY2VzID0gdGhpcy5fcmVmZXJlbmNlcyA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHJlZmVyZW5jZXNbaV0gPSB0aGlzLmdldChuYW1lc1tpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlZmVyZW5jZXM7XG4gICAgfVxuICAgIHNsaWNlTmFtZShuYW1lKSB7XG4gICAgICAgIHJldHVybiBuYW1lLnNsaWNlKDEpO1xuICAgIH1cbn1cbmNsYXNzIENhcHR1cmVkTmFtZWRBcmd1bWVudHMge1xuICAgIGNvbnN0cnVjdG9yKHRhZywgbmFtZXMsIHJlZmVyZW5jZXMpIHtcbiAgICAgICAgdGhpcy50YWcgPSB0YWc7XG4gICAgICAgIHRoaXMubmFtZXMgPSBuYW1lcztcbiAgICAgICAgdGhpcy5yZWZlcmVuY2VzID0gcmVmZXJlbmNlcztcbiAgICAgICAgdGhpcy5sZW5ndGggPSBuYW1lcy5sZW5ndGg7XG4gICAgICAgIHRoaXMuX21hcCA9IG51bGw7XG4gICAgfVxuICAgIGdldCBtYXAoKSB7XG4gICAgICAgIGxldCBtYXAgPSB0aGlzLl9tYXA7XG4gICAgICAgIGlmICghbWFwKSB7XG4gICAgICAgICAgICBsZXQgeyBuYW1lcywgcmVmZXJlbmNlcyB9ID0gdGhpcztcbiAgICAgICAgICAgIG1hcCA9IHRoaXMuX21hcCA9IGRpY3QoKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVzW2ldO1xuICAgICAgICAgICAgICAgIG1hcFtuYW1lXSA9IHJlZmVyZW5jZXNbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1hcDtcbiAgICB9XG4gICAgaGFzKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmFtZXMuaW5kZXhPZihuYW1lKSAhPT0gLTE7XG4gICAgfVxuICAgIGdldChuYW1lKSB7XG4gICAgICAgIGxldCB7IG5hbWVzLCByZWZlcmVuY2VzIH0gPSB0aGlzO1xuICAgICAgICBsZXQgaWR4ID0gbmFtZXMuaW5kZXhPZihuYW1lKTtcbiAgICAgICAgaWYgKGlkeCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiBVTkRFRklORURfUkVGRVJFTkNFO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHJlZmVyZW5jZXNbaWR4XTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB2YWx1ZSgpIHtcbiAgICAgICAgbGV0IHsgbmFtZXMsIHJlZmVyZW5jZXMgfSA9IHRoaXM7XG4gICAgICAgIGxldCBvdXQgPSBkaWN0KCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBuYW1lID0gbmFtZXNbaV07XG4gICAgICAgICAgICBvdXRbbmFtZV0gPSByZWZlcmVuY2VzW2ldLnZhbHVlKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG59XG5leHBvcnQgZGVmYXVsdCBuZXcgQXJndW1lbnRzKCk7Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi92bS9hcmd1bWVudHMuanMiXSwibmFtZXMiOlsiZGljdCIsIkVNUFRZX0FSUkFZIiwiY29tYmluZVRhZ2dlZCIsIlByaW1pdGl2ZVJlZmVyZW5jZSIsIlVOREVGSU5FRF9SRUZFUkVOQ0UiLCJBcmd1bWVudHMiLCJzdGFjayIsInBvc2l0aW9uYWwiLCJQb3NpdGlvbmFsQXJndW1lbnRzIiwibmFtZWQiLCJOYW1lZEFyZ3VtZW50cyIsImVtcHR5Iiwic2V0dXAiLCJwb3NpdGlvbmFsQ291bnQiLCJzeW50aGV0aWMiLCJuYW1lcyIsImZyb21Ub3AiLCJuYW1lZENvdW50IiwibGVuZ3RoIiwic3RhcnQiLCJhdCIsInBvcyIsImdldCIsIm5hbWUiLCJjYXB0dXJlIiwidGFnIiwiY2xlYXIiLCJwb3BzIiwicG9wIiwiX3RhZyIsIl9yZWZlcmVuY2VzIiwicG9zaXRpb24iLCJDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHMiLCJyZWZlcmVuY2VzIiwiQXJyYXkiLCJpIiwidmFsdWUiLCJtYXAiLCJ2YWx1ZU9mIiwiY3JlYXRlIiwiaWR4IiwicGFyc2VJbnQiLCJyZWZlcmVuY2UiLCJfbmFtZXMiLCJfcmVhbE5hbWVzIiwiaGFzIiwiaW5kZXhPZiIsIkNhcHR1cmVkTmFtZWRBcmd1bWVudHMiLCJzbGljZU5hbWUiLCJzbGljZSIsIl9tYXAiLCJvdXQiLCJmb3JFYWNoIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUEsU0FBU0EsSUFBVCxFQUFlQyxXQUFmLFFBQWtDLGVBQWxDO0FBQ0EsU0FBU0MsYUFBVCxRQUE4QixvQkFBOUI7QUFDQSxTQUFTQyxrQkFBVCxFQUE2QkMsbUJBQTdCLFFBQXdELGVBQXhEO0FBQ0EsV0FBYUMsU0FBYjtBQUNJLHlCQUFjO0FBQUE7O0FBQ1YsYUFBS0MsS0FBTCxHQUFhLElBQWI7QUFDQSxhQUFLQyxVQUFMLEdBQWtCLElBQUlDLG1CQUFKLEVBQWxCO0FBQ0EsYUFBS0MsS0FBTCxHQUFhLElBQUlDLGNBQUosRUFBYjtBQUNIOztBQUxM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O0FBQ1osbUJBQU9wQyxtQkFBUDtBQUNILFNBRkQsTUFFTztBQUNILG1CQUFPNkIsV0FBV08sR0FBWCxDQUFQO0FBQ0g7QUFDSixLOztxQ0FDREosSyxvQkFBUTtBQUFBLFlBQ0VyQixLQURGLEdBQ3dCLElBRHhCLENBQ0VBLEtBREY7QUFBQSxZQUNTa0IsVUFEVCxHQUN3QixJQUR4QixDQUNTQSxVQURUOztBQUVKLFlBQUlrQixNQUFNbkQsTUFBVjtBQUNBZSxjQUFNcUMsT0FBTixDQUFjLFVBQUM3QixJQUFELEVBQU9ZLENBQVA7QUFBQSxtQkFBYWdCLElBQUk1QixJQUFKLElBQVlVLFdBQVdFLENBQVgsRUFBY0MsS0FBZCxFQUF6QjtBQUFBLFNBQWQ7QUFDQSxlQUFPZSxHQUFQO0FBQ0gsSzs7Ozt5QkExQlM7QUFDTixnQkFBSWQsTUFBTSxLQUFLYSxJQUFmO0FBQ0EsZ0JBQUksQ0FBQ2IsR0FBTCxFQUFVO0FBQUEsb0JBQ0F0QixLQURBLEdBQ3NCLElBRHRCLENBQ0FBLEtBREE7QUFBQSxvQkFDT2tCLFVBRFAsR0FDc0IsSUFEdEIsQ0FDT0EsVUFEUDs7QUFFTkksc0JBQU0sS0FBS2EsSUFBTCxHQUFZbEQsTUFBbEI7QUFDQWUsc0JBQU1xQyxPQUFOLENBQWMsVUFBQzdCLElBQUQsRUFBT1ksQ0FBUDtBQUFBLDJCQUFhRSxJQUFJZCxJQUFKLElBQVlVLFdBQVdFLENBQVgsQ0FBekI7QUFBQSxpQkFBZDtBQUNIO0FBQ0QsbUJBQU9FLEdBQVA7QUFDSDs7Ozs7O0FBb0JMLGVBQWUsSUFBSWhDLFNBQUosRUFBZiIsImZpbGUiOiJsaWIvdm0vYXJndW1lbnRzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGljdCwgRU1QVFlfQVJSQVkgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IGNvbWJpbmVUYWdnZWQgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgUHJpbWl0aXZlUmVmZXJlbmNlLCBVTkRFRklORURfUkVGRVJFTkNFIH0gZnJvbSAnLi4vcmVmZXJlbmNlcyc7XG5leHBvcnQgY2xhc3MgQXJndW1lbnRzIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5zdGFjayA9IG51bGw7XG4gICAgICAgIHRoaXMucG9zaXRpb25hbCA9IG5ldyBQb3NpdGlvbmFsQXJndW1lbnRzKCk7XG4gICAgICAgIHRoaXMubmFtZWQgPSBuZXcgTmFtZWRBcmd1bWVudHMoKTtcbiAgICB9XG4gICAgZW1wdHkoKSB7XG4gICAgICAgIHRoaXMuc2V0dXAobnVsbCwgMCwgdHJ1ZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBzZXR1cChzdGFjaywgcG9zaXRpb25hbENvdW50LCBzeW50aGV0aWMpIHtcbiAgICAgICAgdGhpcy5zdGFjayA9IHN0YWNrO1xuICAgICAgICBsZXQgbmFtZXMgPSBzdGFjay5mcm9tVG9wKDApO1xuICAgICAgICBsZXQgbmFtZWRDb3VudCA9IG5hbWVzLmxlbmd0aDtcbiAgICAgICAgbGV0IHN0YXJ0ID0gcG9zaXRpb25hbENvdW50ICsgbmFtZWRDb3VudCArIDE7XG4gICAgICAgIGxldCBwb3NpdGlvbmFsID0gdGhpcy5wb3NpdGlvbmFsO1xuICAgICAgICBwb3NpdGlvbmFsLnNldHVwKHN0YWNrLCBzdGFydCwgcG9zaXRpb25hbENvdW50KTtcbiAgICAgICAgbGV0IG5hbWVkID0gdGhpcy5uYW1lZDtcbiAgICAgICAgbmFtZWQuc2V0dXAoc3RhY2ssIG5hbWVkQ291bnQsIG5hbWVzLCBzeW50aGV0aWMpO1xuICAgIH1cbiAgICBnZXQgdGFnKCkge1xuICAgICAgICByZXR1cm4gY29tYmluZVRhZ2dlZChbdGhpcy5wb3NpdGlvbmFsLCB0aGlzLm5hbWVkXSk7XG4gICAgfVxuICAgIGdldCBsZW5ndGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvc2l0aW9uYWwubGVuZ3RoICsgdGhpcy5uYW1lZC5sZW5ndGg7XG4gICAgfVxuICAgIGF0KHBvcykge1xuICAgICAgICByZXR1cm4gdGhpcy5wb3NpdGlvbmFsLmF0KHBvcyk7XG4gICAgfVxuICAgIGdldChuYW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hbWVkLmdldChuYW1lKTtcbiAgICB9XG4gICAgY2FwdHVyZSgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRhZzogdGhpcy50YWcsXG4gICAgICAgICAgICBsZW5ndGg6IHRoaXMubGVuZ3RoLFxuICAgICAgICAgICAgcG9zaXRpb25hbDogdGhpcy5wb3NpdGlvbmFsLmNhcHR1cmUoKSxcbiAgICAgICAgICAgIG5hbWVkOiB0aGlzLm5hbWVkLmNhcHR1cmUoKVxuICAgICAgICB9O1xuICAgIH1cbiAgICBjbGVhcigpIHtcbiAgICAgICAgbGV0IHsgc3RhY2ssIGxlbmd0aCB9ID0gdGhpcztcbiAgICAgICAgbGV0IHBvcHMgPSBsZW5ndGggKyAxO1xuICAgICAgICB3aGlsZSAoLS1wb3BzID49IDApIHtcbiAgICAgICAgICAgIHN0YWNrLnBvcCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuY2xhc3MgUG9zaXRpb25hbEFyZ3VtZW50cyB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5zdGFjayA9IG51bGw7XG4gICAgICAgIHRoaXMuc3RhcnQgPSAwO1xuICAgICAgICB0aGlzLl90YWcgPSBudWxsO1xuICAgICAgICB0aGlzLl9yZWZlcmVuY2VzID0gbnVsbDtcbiAgICB9XG4gICAgc2V0dXAoc3RhY2ssIHN0YXJ0LCBsZW5ndGgpIHtcbiAgICAgICAgdGhpcy5zdGFjayA9IHN0YWNrO1xuICAgICAgICB0aGlzLnN0YXJ0ID0gc3RhcnQ7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gbGVuZ3RoO1xuICAgICAgICB0aGlzLl90YWcgPSBudWxsO1xuICAgICAgICB0aGlzLl9yZWZlcmVuY2VzID0gbnVsbDtcbiAgICB9XG4gICAgZ2V0IHRhZygpIHtcbiAgICAgICAgbGV0IHRhZyA9IHRoaXMuX3RhZztcbiAgICAgICAgaWYgKCF0YWcpIHtcbiAgICAgICAgICAgIHRhZyA9IHRoaXMuX3RhZyA9IGNvbWJpbmVUYWdnZWQodGhpcy5yZWZlcmVuY2VzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGFnO1xuICAgIH1cbiAgICBhdChwb3NpdGlvbikge1xuICAgICAgICBsZXQgeyBzdGFydCwgbGVuZ3RoIH0gPSB0aGlzO1xuICAgICAgICBpZiAocG9zaXRpb24gPCAwIHx8IHBvc2l0aW9uID49IGxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIFVOREVGSU5FRF9SRUZFUkVOQ0U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gc3RhY2s6IHBvczEsIHBvczIsIHBvczMsIG5hbWVkMSwgbmFtZWQyXG4gICAgICAgIC8vIHN0YXJ0OiA0ICh0b3AgLSA0KVxuICAgICAgICAvL1xuICAgICAgICAvLyBhdCgwKSA9PT0gcG9zMSA9PT0gdG9wIC0gc3RhcnRcbiAgICAgICAgLy8gYXQoMSkgPT09IHBvczIgPT09IHRvcCAtIChzdGFydCAtIDEpXG4gICAgICAgIC8vIGF0KDIpID09PSBwb3MzID09PSB0b3AgLSAoc3RhcnQgLSAyKVxuICAgICAgICBsZXQgZnJvbVRvcCA9IHN0YXJ0IC0gcG9zaXRpb24gLSAxO1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFjay5mcm9tVG9wKGZyb21Ub3ApO1xuICAgIH1cbiAgICBjYXB0dXJlKCkge1xuICAgICAgICByZXR1cm4gbmV3IENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50cyh0aGlzLnRhZywgdGhpcy5yZWZlcmVuY2VzKTtcbiAgICB9XG4gICAgZ2V0IHJlZmVyZW5jZXMoKSB7XG4gICAgICAgIGxldCByZWZlcmVuY2VzID0gdGhpcy5fcmVmZXJlbmNlcztcbiAgICAgICAgaWYgKCFyZWZlcmVuY2VzKSB7XG4gICAgICAgICAgICBsZXQgeyBsZW5ndGggfSA9IHRoaXM7XG4gICAgICAgICAgICByZWZlcmVuY2VzID0gdGhpcy5fcmVmZXJlbmNlcyA9IG5ldyBBcnJheShsZW5ndGgpO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHJlZmVyZW5jZXNbaV0gPSB0aGlzLmF0KGkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZWZlcmVuY2VzO1xuICAgIH1cbn1cbmNsYXNzIENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50cyB7XG4gICAgY29uc3RydWN0b3IodGFnLCByZWZlcmVuY2VzLCBsZW5ndGggPSByZWZlcmVuY2VzLmxlbmd0aCkge1xuICAgICAgICB0aGlzLnRhZyA9IHRhZztcbiAgICAgICAgdGhpcy5yZWZlcmVuY2VzID0gcmVmZXJlbmNlcztcbiAgICAgICAgdGhpcy5sZW5ndGggPSBsZW5ndGg7XG4gICAgfVxuICAgIGF0KHBvc2l0aW9uKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZXNbcG9zaXRpb25dO1xuICAgIH1cbiAgICB2YWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlcy5tYXAodGhpcy52YWx1ZU9mKTtcbiAgICB9XG4gICAgZ2V0KG5hbWUpIHtcbiAgICAgICAgbGV0IHsgcmVmZXJlbmNlcywgbGVuZ3RoIH0gPSB0aGlzO1xuICAgICAgICBpZiAobmFtZSA9PT0gJ2xlbmd0aCcpIHtcbiAgICAgICAgICAgIHJldHVybiBQcmltaXRpdmVSZWZlcmVuY2UuY3JlYXRlKGxlbmd0aCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgaWR4ID0gcGFyc2VJbnQobmFtZSwgMTApO1xuICAgICAgICAgICAgaWYgKGlkeCA8IDAgfHwgaWR4ID49IGxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBVTkRFRklORURfUkVGRVJFTkNFO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVmZXJlbmNlc1tpZHhdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHZhbHVlT2YocmVmZXJlbmNlKSB7XG4gICAgICAgIHJldHVybiByZWZlcmVuY2UudmFsdWUoKTtcbiAgICB9XG59XG5jbGFzcyBOYW1lZEFyZ3VtZW50cyB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5fdGFnID0gbnVsbDtcbiAgICAgICAgdGhpcy5fcmVmZXJlbmNlcyA9IG51bGw7XG4gICAgICAgIHRoaXMuX25hbWVzID0gbnVsbDtcbiAgICAgICAgdGhpcy5fcmVhbE5hbWVzID0gRU1QVFlfQVJSQVk7XG4gICAgfVxuICAgIHNldHVwKHN0YWNrLCBsZW5ndGgsIG5hbWVzLCBzeW50aGV0aWMpIHtcbiAgICAgICAgdGhpcy5zdGFjayA9IHN0YWNrO1xuICAgICAgICB0aGlzLmxlbmd0aCA9IGxlbmd0aDtcbiAgICAgICAgdGhpcy5fdGFnID0gbnVsbDtcbiAgICAgICAgdGhpcy5fcmVmZXJlbmNlcyA9IG51bGw7XG4gICAgICAgIGlmIChzeW50aGV0aWMpIHtcbiAgICAgICAgICAgIHRoaXMuX25hbWVzID0gbmFtZXM7XG4gICAgICAgICAgICB0aGlzLl9yZWFsTmFtZXMgPSBFTVBUWV9BUlJBWTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX25hbWVzID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuX3JlYWxOYW1lcyA9IG5hbWVzO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCB0YWcoKSB7XG4gICAgICAgIHJldHVybiBjb21iaW5lVGFnZ2VkKHRoaXMucmVmZXJlbmNlcyk7XG4gICAgfVxuICAgIGdldCBuYW1lcygpIHtcbiAgICAgICAgbGV0IG5hbWVzID0gdGhpcy5fbmFtZXM7XG4gICAgICAgIGlmICghbmFtZXMpIHtcbiAgICAgICAgICAgIG5hbWVzID0gdGhpcy5fbmFtZXMgPSB0aGlzLl9yZWFsTmFtZXMubWFwKHRoaXMuc2xpY2VOYW1lKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmFtZXM7XG4gICAgfVxuICAgIGhhcyhuYW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hbWVzLmluZGV4T2YobmFtZSkgIT09IC0xO1xuICAgIH1cbiAgICBnZXQobmFtZSkge1xuICAgICAgICBsZXQgeyBuYW1lcywgbGVuZ3RoIH0gPSB0aGlzO1xuICAgICAgICBsZXQgaWR4ID0gbmFtZXMuaW5kZXhPZihuYW1lKTtcbiAgICAgICAgaWYgKGlkeCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiBVTkRFRklORURfUkVGRVJFTkNFO1xuICAgICAgICB9XG4gICAgICAgIC8vIHN0YWNrOiBwb3MxLCBwb3MyLCBwb3MzLCBuYW1lZDEsIG5hbWVkMlxuICAgICAgICAvLyBzdGFydDogNCAodG9wIC0gNClcbiAgICAgICAgLy8gbmFtZWREaWN0OiB7IG5hbWVkMTogMSwgbmFtZWQyOiAwIH07XG4gICAgICAgIC8vXG4gICAgICAgIC8vIGdldCgnbmFtZWQxJykgPT09IG5hbWVkMSA9PT0gdG9wIC0gKHN0YXJ0IC0gMSlcbiAgICAgICAgLy8gZ2V0KCduYW1lZDInKSA9PT0gbmFtZWQyID09PSB0b3AgLSBzdGFydFxuICAgICAgICBsZXQgZnJvbVRvcCA9IGxlbmd0aCAtIGlkeDtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2suZnJvbVRvcChmcm9tVG9wKTtcbiAgICB9XG4gICAgY2FwdHVyZSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDYXB0dXJlZE5hbWVkQXJndW1lbnRzKHRoaXMudGFnLCB0aGlzLm5hbWVzLCB0aGlzLnJlZmVyZW5jZXMpO1xuICAgIH1cbiAgICBnZXQgcmVmZXJlbmNlcygpIHtcbiAgICAgICAgbGV0IHJlZmVyZW5jZXMgPSB0aGlzLl9yZWZlcmVuY2VzO1xuICAgICAgICBpZiAoIXJlZmVyZW5jZXMpIHtcbiAgICAgICAgICAgIGxldCB7IG5hbWVzLCBsZW5ndGggfSA9IHRoaXM7XG4gICAgICAgICAgICByZWZlcmVuY2VzID0gdGhpcy5fcmVmZXJlbmNlcyA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHJlZmVyZW5jZXNbaV0gPSB0aGlzLmdldChuYW1lc1tpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlZmVyZW5jZXM7XG4gICAgfVxuICAgIHNsaWNlTmFtZShuYW1lKSB7XG4gICAgICAgIHJldHVybiBuYW1lLnNsaWNlKDEpO1xuICAgIH1cbn1cbmNsYXNzIENhcHR1cmVkTmFtZWRBcmd1bWVudHMge1xuICAgIGNvbnN0cnVjdG9yKHRhZywgbmFtZXMsIHJlZmVyZW5jZXMpIHtcbiAgICAgICAgdGhpcy50YWcgPSB0YWc7XG4gICAgICAgIHRoaXMubmFtZXMgPSBuYW1lcztcbiAgICAgICAgdGhpcy5yZWZlcmVuY2VzID0gcmVmZXJlbmNlcztcbiAgICAgICAgdGhpcy5sZW5ndGggPSBuYW1lcy5sZW5ndGg7XG4gICAgICAgIHRoaXMuX21hcCA9IG51bGw7XG4gICAgfVxuICAgIGdldCBtYXAoKSB7XG4gICAgICAgIGxldCBtYXAgPSB0aGlzLl9tYXA7XG4gICAgICAgIGlmICghbWFwKSB7XG4gICAgICAgICAgICBsZXQgeyBuYW1lcywgcmVmZXJlbmNlcyB9ID0gdGhpcztcbiAgICAgICAgICAgIG1hcCA9IHRoaXMuX21hcCA9IGRpY3QoKTtcbiAgICAgICAgICAgIG5hbWVzLmZvckVhY2goKG5hbWUsIGkpID0+IG1hcFtuYW1lXSA9IHJlZmVyZW5jZXNbaV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXA7XG4gICAgfVxuICAgIGhhcyhuYW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hbWVzLmluZGV4T2YobmFtZSkgIT09IC0xO1xuICAgIH1cbiAgICBnZXQobmFtZSkge1xuICAgICAgICBsZXQgeyBuYW1lcywgcmVmZXJlbmNlcyB9ID0gdGhpcztcbiAgICAgICAgbGV0IGlkeCA9IG5hbWVzLmluZGV4T2YobmFtZSk7XG4gICAgICAgIGlmIChpZHggPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gVU5ERUZJTkVEX1JFRkVSRU5DRTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiByZWZlcmVuY2VzW2lkeF07XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFsdWUoKSB7XG4gICAgICAgIGxldCB7IG5hbWVzLCByZWZlcmVuY2VzIH0gPSB0aGlzO1xuICAgICAgICBsZXQgb3V0ID0gZGljdCgpO1xuICAgICAgICBuYW1lcy5mb3JFYWNoKChuYW1lLCBpKSA9PiBvdXRbbmFtZV0gPSByZWZlcmVuY2VzW2ldLnZhbHVlKCkpO1xuICAgICAgICByZXR1cm4gb3V0O1xuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IG5ldyBBcmd1bWVudHMoKTsiXX0=

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

export { Blocks as BlockMacros, Inlines as InlineMacros, BlockMacro, MissingBlockMacro, compileList, expr as compileExpression } from './lib/syntax/functions';
export { CompilableTemplate, Block, Program } from './lib/syntax/interfaces';
export { ClientSide, CompilableTemplate, ScannedBlock, ScannedProgram, Block, Program, compileStatement } from './lib/scanner';
export { PublicVM as VM, UpdatingVM, RenderResult, IteratorResult } from './lib/vm';

@@ -17,0 +17,0 @@ export { IArguments as Arguments, ICapturedArguments as CapturedArguments, IPositionalArguments as PositionalArguments, ICapturedPositionalArguments as CapturedPositionalArguments, INamedArguments as NamedArguments, ICapturedNamedArguments as CapturedNamedArguments } from './lib/vm/arguments';

@@ -1,8 +0,8 @@

import { Opaque, Option } from '@glimmer/interfaces';
import { CachedReference, PathReference, Tag } from '@glimmer/reference';
import { PathReference, CachedReference, Tag } from '@glimmer/reference';
import { Option, Opaque } from '@glimmer/interfaces';
export declare class ConcatReference extends CachedReference<Option<string>> {
private parts;
tag: Tag;
constructor(parts: Array<PathReference<Opaque>>);
constructor(parts: PathReference<Opaque>[]);
protected compute(): Option<string>;
}

@@ -1,15 +0,15 @@

import { CompilationMeta, Opaque, Option, SymbolTable } from '@glimmer/interfaces';
import * as content from './content';
import * as vm from './vm';
import { Insertion } from '../../upsert';
import { Register } from '../../opcodes';
import * as WireFormat from '@glimmer/wire-format';
import { Option, Opaque } from '@glimmer/util';
import { Constants, ConstantString, ConstantArray, ConstantOther, ConstantBlock, ConstantFunction } from '../../environment/constants';
import { ModifierManager } from '../../modifier/interfaces';
import { ComponentDefinition } from '../../component/interfaces';
import Environment, { Program } from '../../environment';
import { ConstantArray, ConstantBlock, ConstantFunction, ConstantOther, Constants, ConstantString } from '../../environment/constants';
import { ModifierManager } from '../../modifier/interfaces';
import { SymbolTable, CompilationMeta } from '@glimmer/interfaces';
import { ComponentBuilder as IComponentBuilder } from '../../opcode-builder';
import { Op, Register } from '../../opcodes';
import { FunctionExpressionCallback } from '../../syntax/client-side';
import { Block } from '../../syntax/interfaces';
import RawInlineBlock from '../../syntax/raw-block';
import { Insertion } from '../../upsert';
import * as content from './content';
import * as vm from './vm';
import { RawInlineBlock, ClientSide, Block } from '../../scanner';
import { Op } from '../../opcodes';
export interface CompilesInto<E> {

@@ -24,5 +24,5 @@ compile(builder: OpcodeBuilder): E;

program: Program;
private labelsStack;
constants: Constants;
start: number;
private labelsStack;
constructor(env: Environment, meta: CompilationMeta, program: Program);

@@ -81,3 +81,3 @@ abstract compile<E>(expr: Represents<E>): E;

concat(size: number): void;
function(f: FunctionExpressionCallback<Opaque>): void;
function(f: ClientSide.FunctionExpressionCallback<Opaque>): void;
load(register: Register): void;

@@ -126,2 +126,4 @@ fetch(register: Register): void;

guardedAppend(expression: WireFormat.Expression, trusting: boolean): void;
guardedCautiousAppend(expression: WireFormat.Expression): void;
guardedTrustingAppend(expression: WireFormat.Expression): void;
invokeComponent(attrs: Option<RawInlineBlock>, params: Option<WireFormat.Core.Params>, hash: Option<WireFormat.Core.Hash>, block: Option<Block>, inverse?: Option<Block>): void;

@@ -128,0 +130,0 @@ template(block: Option<WireFormat.SerializedInlineBlock>): Option<RawInlineBlock>;

@@ -1,7 +0,7 @@

import { Tag } from '@glimmer/reference';
import Bounds from '../../bounds';
import { Component, ComponentDefinition, ComponentManager } from '../../component/interfaces';
import { DynamicScope } from '../../environment';
import { OpcodeJSON, UpdatingOpcode } from '../../opcodes';
import { UpdatingVM } from '../../vm';
import { Component, ComponentManager, ComponentDefinition } from '../../component/interfaces';
import { DynamicScope } from '../../environment';
import Bounds from '../../bounds';
import { Tag } from '@glimmer/reference';
export interface ComponentState<T> {

@@ -8,0 +8,0 @@ definition: ComponentDefinition<T>;

@@ -1,16 +0,17 @@

import { Opaque } from '@glimmer/interfaces';
import Upsert, { Insertion, CautiousInsertion, TrustingInsertion } from '../../upsert';
import { DOMTreeConstruction } from '../../dom/helper';
import { UpdatingOpcode } from '../../opcodes';
import { VM } from '../../vm';
import { Reference, ReferenceCache } from '@glimmer/reference';
import { Opaque } from '@glimmer/util';
import { Cursor } from '../../bounds';
import { Fragment } from '../../builder';
import { DOMTreeConstruction } from '../../dom/helper';
import { UpdatingOpcode } from '../../opcodes';
import { ConditionalReference } from '../../references';
import Upsert, { CautiousInsertion, Insertion, TrustingInsertion } from '../../upsert';
import { VM } from '../../vm';
export declare function normalizeTextValue(value: Opaque): string;
export declare type AppendDynamicOpcodeConstructor = typeof OptimizedCautiousAppendOpcode | typeof OptimizedTrustingAppendOpcode;
export declare abstract class AppendDynamicOpcode<T extends Insertion> {
evaluate(vm: VM): void;
protected abstract normalize(reference: Reference<Opaque>): Reference<T>;
protected abstract insert(dom: DOMTreeConstruction, cursor: Cursor, value: T): Upsert;
protected abstract updateWith(vm: VM, reference: Reference<Opaque>, cache: ReferenceCache<T>, bounds: Fragment, upsert: Upsert): UpdatingOpcode;
evaluate(vm: VM): void;
}

@@ -33,2 +34,1 @@ export declare class IsComponentDefinitionReference extends ConditionalReference {

}
export declare type AppendDynamicOpcodeConstructor = typeof OptimizedCautiousAppendOpcode | typeof OptimizedTrustingAppendOpcode;

@@ -1,10 +0,10 @@

import { PathReference, Reference, Tag } from '@glimmer/reference';
import { Dict, Opaque, Option } from '@glimmer/util';
import { ElementOperations } from '../../builder';
import { AttributeManager } from '../../dom/attribute-managers';
import { OpcodeJSON, 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 { Reference, Tag, PathReference } from '@glimmer/reference';
import { ModifierManager } from '../../modifier/interfaces';
import { OpcodeJSON, UpdatingOpcode } from '../../opcodes';
import { UpdatingVM, VM } from '../../vm';
import { AttributeManager } from '../../dom/attribute-managers';
import { ElementOperations } from '../../builder';
export declare class SimpleElementOperations implements ElementOperations {

@@ -66,4 +66,4 @@ private env;

private namespace;
private cache;
tag: Tag;
private cache;
constructor(element: Simple.Element, attributeManager: AttributeManager, name: string, reference: Reference<Opaque>, namespace?: Simple.Namespace);

@@ -70,0 +70,0 @@ patch(env: Environment): void;

import { VersionedPathReference } from '@glimmer/reference';
import { PublicVM } from '../../vm';
import { PublicVM } from "../../vm";
export declare type FunctionExpression<T> = (vm: PublicVM) => VersionedPathReference<T>;

@@ -1,8 +0,9 @@

import { Opaque, Option, SymbolTable } from '@glimmer/interfaces';
import { CompiledDynamicTemplate } from '../blocks';
import { OpcodeJSON, UpdatingOpcode } from '../../opcodes';
import { UpdatingVM, VM } from '../../vm';
import { SymbolTable } from '@glimmer/interfaces';
import { Reference } from '@glimmer/reference';
import { Option, Opaque } from '@glimmer/util';
import { ReferenceCache, Tag } from '@glimmer/reference';
import Environment from '../../environment';
import { OpcodeJSON, UpdatingOpcode } from '../../opcodes';
import { UpdatingVM, VM } from '../../vm';
import { CompiledDynamicTemplate } from '../blocks';
export interface DynamicInvoker<S extends SymbolTable> {

@@ -9,0 +10,0 @@ invoke(vm: VM, block: Option<CompiledDynamicTemplate<S>>): void;

@@ -1,16 +0,16 @@

import { Dict, Opaque, Option } from '@glimmer/interfaces';
import { Tag, VersionedPathReference } from '@glimmer/reference';
import { Destroyable } from '@glimmer/util';
import { IArguments } from '../vm/arguments';
import { CompiledDynamicProgram } from '../compiled/blocks';
import { TemplateMeta } from '@glimmer/wire-format';
import Environment, { DynamicScope } from '../environment';
import { ElementOperations } from '../builder';
import Bounds from '../bounds';
import { ElementOperations } from '../builder';
import { CompiledDynamicProgram } from '../compiled/blocks';
import * as Simple from '../dom/interfaces';
import Environment, { DynamicScope } from '../environment';
import { Template } from '../template';
import { IArguments } from '../vm/arguments';
import { Destroyable, Opaque } from '@glimmer/util';
import { VersionedPathReference, Tag } from '@glimmer/reference';
import { Dict, Option } from "@glimmer/interfaces";
export declare type Component = Opaque;
export declare type ComponentClass = any;
export interface PreparedArguments {
positional: Array<VersionedPathReference<Opaque>>;
positional: VersionedPathReference<Opaque>[];
named: Dict<VersionedPathReference<Opaque>>;

@@ -37,3 +37,3 @@ }

wrapLayout(layout: Template<TemplateMeta>): void;
fromLayout(componentName: string, layout: Template<TemplateMeta>): void;
fromLayout(layout: Template<TemplateMeta>): void;
}

@@ -40,0 +40,0 @@ export interface ComponentTagBuilder {

@@ -13,3 +13,3 @@ import { VersionedPathReference } from '@glimmer/reference';

import { TemplateMeta } from '@glimmer/wire-format';
import { Block } from './syntax/interfaces';
import { Block } from './scanner';
import { PublicVM } from './vm/append';

@@ -16,0 +16,0 @@ import { IArguments } from './vm/arguments';

import { VersionedPathReference } from "@glimmer/reference";
import { Opaque } from "@glimmer/interfaces";
import { Block } from "../syntax/interfaces";
import { Block } from "../scanner";
export declare type ConstantType = 'slice' | 'block' | 'reference' | 'string' | 'number' | 'expression';

@@ -5,0 +5,0 @@ export declare type ConstantReference = number;

@@ -6,3 +6,3 @@ import { VersionedPathReference } from '@glimmer/reference';

import * as WireFormat from '@glimmer/wire-format';
import { Block } from './syntax/interfaces';
import { Block } from './scanner';
import { PublicVM } from './vm/append';

@@ -9,0 +9,0 @@ export declare type ComponentArgs = [WireFormat.Core.Params, WireFormat.Core.Hash, Option<Block>, Option<Block>];

@@ -41,3 +41,3 @@ import { Option, Dict, Slice as ListSlice } from '@glimmer/util';

* ..., VersionedPathReference
*/
**/
Helper = 1,

@@ -44,0 +44,0 @@ /**

@@ -1,3 +0,3 @@

import { Opaque } from '@glimmer/interfaces';
import { ConstReference, PathReference, Reference, Tag } from '@glimmer/reference';
import { Tag, ConstReference, PathReference, Reference } from '@glimmer/reference';
import { Opaque } from '@glimmer/util';
export declare type Primitive = undefined | null | boolean | number | string;

@@ -4,0 +4,0 @@ export declare class PrimitiveReference<T extends Primitive> extends ConstReference<T> implements PathReference<T> {

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

import { CompiledDynamicTemplate, CompiledStaticTemplate } from './compiled/blocks';
import OpcodeBuilder from './compiled/opcodes/builder';
import Environment from './environment';
import { Option } from '@glimmer/util';
import * as WireFormat from '@glimmer/wire-format';
import { Opaque, SymbolTable, ProgramSymbolTable, BlockSymbolTable } from '@glimmer/interfaces';
import { CompilationMeta } from '@glimmer/interfaces';
import * as WireFormat from '@glimmer/wire-format';
import Environment from './environment';
import { Block, Program } from './syntax/interfaces';
export declare type DeserializedStatement = WireFormat.Statement | WireFormat.Statements.Attribute | WireFormat.Statements.Argument;
export declare function compileStatement(statement: WireFormat.Statement, builder: OpcodeBuilder): void;
export interface ScannedTemplate<S extends SymbolTable> {
compileStatic(env: Environment): CompiledStaticTemplate;
compileDynamic(env: Environment): CompiledDynamicTemplate<S>;
}
export declare class CompilableTemplate<S extends SymbolTable> implements ScannedTemplate<S> {
statements: WireFormat.Statement[];
symbolTable: S;
private compiledStatic;
private compiledDynamic;
constructor(statements: WireFormat.Statement[], symbolTable: S);
compileStatic(env: Environment): CompiledStaticTemplate;
compileDynamic(env: Environment): CompiledDynamicTemplate<S>;
toJSON(): {
GlimmerDebug: string;
};
}
export declare type Template = CompilableTemplate<SymbolTable>;
export declare type Program = CompilableTemplate<ProgramSymbolTable>;
export declare type Block = CompilableTemplate<BlockSymbolTable>;
export declare type ScannedProgram = ScannedTemplate<ProgramSymbolTable>;
export declare type ScannedBlock = ScannedTemplate<BlockSymbolTable>;
export declare const ATTRS_BLOCK = "&attrs";
export declare function layout(prelude: WireFormat.Statement[], head: WireFormat.Statement[], body: WireFormat.Statement[], symbolTable: ProgramSymbolTable): CompilableTemplate<any>;
export default class Scanner {

@@ -12,3 +39,54 @@ private block;

scanBlock(meta: CompilationMeta): Block;
scanLayout(meta: CompilationMeta, attrs: WireFormat.Statements.Attribute[], componentName?: string): Program;
scanLayout(meta: CompilationMeta, attrs: WireFormat.Statements.Attribute[]): Program;
}
export declare function scanBlock(block: WireFormat.SerializedInlineBlock, meta: CompilationMeta, env: Environment): Block;
import { PublicVM } from './vm';
import { VersionedPathReference } from '@glimmer/reference';
export declare namespace ClientSide {
enum Ops {
OpenComponentElement = 0,
DidCreateElement = 1,
DidRenderLayout = 2,
OptimizedAppend = 3,
UnoptimizedAppend = 4,
StaticPartial = 5,
DynamicPartial = 6,
NestedBlock = 7,
ScannedBlock = 8,
FunctionExpression = 9,
}
function is<T extends any[]>(variant: Ops): (value: any[]) => value is T;
import ClientSideStatement = WireFormat.Ops.ClientSideStatement;
import ClientSideExpression = WireFormat.Ops.ClientSideExpression;
type OpenComponentElement = [ClientSideStatement, Ops.OpenComponentElement, string];
type DidCreateElement = [ClientSideStatement, Ops.DidCreateElement];
type DidRenderLayout = [ClientSideStatement, Ops.DidRenderLayout];
type OptimizedAppend = [ClientSideStatement, Ops.OptimizedAppend, WireFormat.Expression, boolean];
type UnoptimizedAppend = [ClientSideStatement, Ops.UnoptimizedAppend, WireFormat.Expression, boolean];
type StaticPartial = [ClientSideStatement, Ops.StaticPartial, string, WireFormat.Core.EvalInfo];
type DynamicPartial = [ClientSideStatement, Ops.DynamicPartial, WireFormat.Expression, WireFormat.Core.EvalInfo];
type FunctionExpression = [ClientSideExpression, Ops.FunctionExpression, FunctionExpressionCallback<Opaque>];
type FunctionExpressionCallback<T> = (VM: PublicVM, symbolTable: SymbolTable) => VersionedPathReference<T>;
type ClientSideStatement = OpenComponentElement | DidCreateElement | DidRenderLayout | OptimizedAppend | UnoptimizedAppend | StaticPartial | DynamicPartial;
type ClientSideExpression = FunctionExpression;
}
export declare abstract class RawBlock<S extends SymbolTable> {
protected env: Environment;
protected meta: CompilationMeta;
private statements;
constructor(env: Environment, meta: CompilationMeta, statements: WireFormat.Statement[]);
scanStatements(): WireFormat.Statement[];
child(block: Option<WireFormat.SerializedInlineBlock>): Option<RawInlineBlock>;
abstract scan(): CompilableTemplate<S>;
}
export declare class RawInlineBlock extends RawBlock<BlockSymbolTable> {
private parameters;
constructor(env: Environment, meta: CompilationMeta, statements: WireFormat.Statement[], parameters: number[]);
scan(): Block;
}
export declare class RawProgram extends RawBlock<ProgramSymbolTable> {
private symbols;
private hasEval;
constructor(env: Environment, meta: CompilationMeta, statements: WireFormat.Statement[], symbols: string[], hasEval: boolean);
scan(): Program;
}

@@ -1,14 +0,23 @@

import { CompilationMeta, Option, ProgramSymbolTable } from '@glimmer/interfaces';
import { CompiledDynamicProgram } from '../compiled/blocks';
import * as WireFormat from '@glimmer/wire-format';
import { CompiledDynamicProgram } from '../compiled/blocks';
import { ProgramSymbolTable } from '@glimmer/interfaces';
import OpcodeBuilder from '../compiled/opcodes/builder';
import { DynamicInvoker } from '../compiled/opcodes/vm';
import Environment from '../environment';
import { VM } from '../vm';
import { Block } from './interfaces';
import { Block, ClientSide } from '../scanner';
import { Option } from '@glimmer/util';
export declare type SexpExpression = WireFormat.Expression;
export declare type Syntax = WireFormat.Statement | WireFormat.Expression;
export declare type CompilerFunction<T extends Syntax> = ((sexp: T, builder: OpcodeBuilder) => void);
export declare const ATTRS_BLOCK = "&attrs";
export declare class Compilers<T extends Syntax> {
private offset;
private names;
private funcs;
constructor(offset?: number);
add(name: number, func: CompilerFunction<T>): void;
compile(sexp: T, builder: OpcodeBuilder): void;
}
import S = WireFormat.Statements;
export declare const STATEMENTS: Compilers<any>;
export declare const CLIENT_SIDE: Compilers<ClientSide.ClientSideStatement>;
export declare class InvokeDynamicLayout implements DynamicInvoker<ProgramSymbolTable> {

@@ -57,6 +66,1 @@ private attrs;

};
export declare function compileStatement(statement: WireFormat.Statement, builder: OpcodeBuilder): void;
export declare function compileStatements(statements: WireFormat.Statement[], meta: CompilationMeta, env: Environment): {
start: number;
finalize(): number;
};

@@ -0,8 +1,8 @@

import { TemplateMeta, SerializedTemplateWithLazyBlock, Statements } from '@glimmer/wire-format';
import { PathReference } from '@glimmer/reference';
import { Opaque } from '@glimmer/interfaces';
import { PathReference } from '@glimmer/reference';
import { SerializedTemplateWithLazyBlock, Statements, TemplateMeta } from '@glimmer/wire-format';
import { Environment, DynamicScope } from './environment';
import { VM, RenderResult, IteratorResult } from './vm';
import { Program, Block } from './scanner';
import * as Simple from './dom/interfaces';
import { DynamicScope, Environment } from './environment';
import { Block, Program } from './syntax/interfaces';
import { IteratorResult, RenderResult, VM } from './vm';
/**

@@ -31,3 +31,3 @@ * Environment specific template.

asEntryPoint(): Program;
asLayout(componentName: string, attrs?: Statements.Attribute[]): Program;
asLayout(attrs?: Statements.Attribute[]): Program;
asPartial(): Program;

@@ -34,0 +34,0 @@ asBlock(): Block;

import { Opaque } from '@glimmer/util';
import { DOMChanges, DOMTreeConstruction } from './dom/helper';
import { Bounds, Cursor } from './bounds';
import { DOMChanges, DOMTreeConstruction } from './dom/helper';
export interface SafeString {

@@ -5,0 +5,0 @@ toHTML(): string;

@@ -52,2 +52,3 @@ import { Register } from '../opcodes';

stack: EvaluationStack;
/** Registers **/
private pc;

@@ -54,0 +55,0 @@ private ra;

{
"name": "@glimmer/runtime",
"version": "0.23.0-alpha.17",
"version": "0.23.0-alpha.18",
"description": "Minimal runtime needed to render Glimmer templates",

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

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

@@ -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

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