Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@glimmer/resolver

Package Overview
Dependencies
Maintainers
10
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@glimmer/resolver - npm Package Compare versions

Comparing version 0.3.1 to 0.4.0

27

dist/amd/es5/glimmer-resolver.js

@@ -29,18 +29,27 @@ define('@glimmer/resolver', ['exports', '@glimmer/di'], function (exports, _glimmer_di) { 'use strict';

assert('Specifier must not include a rootName, collection, or namespace when combined with an absolute referrer', s.rootName === undefined && s.collection === undefined && s.namespace === undefined);
// Look locally in the referrer's namespace
s.rootName = r.rootName;
s.collection = r.collection;
if (s.name) {
s.namespace = r.namespace ? r.namespace + '/' + r.name : r.name;
} else {
var definitiveCollection = this._definitiveCollection(s.type);
if (!s.name) {
/*
* For specifiers without a name use the referrer's name and
* do not fallback to any other resolution rules.
*/
s.namespace = r.namespace;
s.name = r.name;
return this._serializeAndVerify(s);
}
if (result = this._serializeAndVerify(s)) {
return result;
s.namespace = r.namespace ? r.namespace + '/' + r.name : r.name;
if (s.collection === definitiveCollection) {
/*
* For specifiers with a name, try local resolution. Based on
* the referrer.
*/
if (result = this._serializeAndVerify(s)) {
return result;
}
}
// Look for a private collection in the referrer's namespace
var privateCollection = this._definitiveCollection(s.type);
if (privateCollection) {
s.namespace += '/-' + privateCollection;
if (definitiveCollection) {
s.namespace += '/-' + definitiveCollection;
if (result = this._serializeAndVerify(s)) {

@@ -47,0 +56,0 @@ return result;

@@ -26,18 +26,27 @@ 'use strict';

(0, _debug.assert)('Specifier must not include a rootName, collection, or namespace when combined with an absolute referrer', s.rootName === undefined && s.collection === undefined && s.namespace === undefined);
// Look locally in the referrer's namespace
s.rootName = r.rootName;
s.collection = r.collection;
if (s.name) {
s.namespace = r.namespace ? r.namespace + '/' + r.name : r.name;
} else {
let definitiveCollection = this._definitiveCollection(s.type);
if (!s.name) {
/*
* For specifiers without a name use the referrer's name and
* do not fallback to any other resolution rules.
*/
s.namespace = r.namespace;
s.name = r.name;
return this._serializeAndVerify(s);
}
if (result = this._serializeAndVerify(s)) {
return result;
s.namespace = r.namespace ? r.namespace + '/' + r.name : r.name;
if (s.collection === definitiveCollection) {
/*
* For specifiers with a name, try local resolution. Based on
* the referrer.
*/
if (result = this._serializeAndVerify(s)) {
return result;
}
}
// Look for a private collection in the referrer's namespace
let privateCollection = this._definitiveCollection(s.type);
if (privateCollection) {
s.namespace += '/-' + privateCollection;
if (definitiveCollection) {
s.namespace += '/-' + definitiveCollection;
if (result = this._serializeAndVerify(s)) {

@@ -106,2 +115,2 @@ return result;

exports.default = Resolver;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzcmMvcmVzb2x2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsQUFBTyxBQUdMLEFBQXlCLEFBQ3pCLEFBQXlCLEFBQ3pCLEFBQW9CLEFBQ3BCLEFBQWtCLEFBQ25CLEFBQU0sQUFBYSxBQUFDOztBQUNyQixBQUFPLEFBQUUsQUFBTSxBQUFFLEFBQU0sQUFBZSxBQUFDLEFBSXZDLEFBQU0sQUFBQyxBQUFPOzs7QUFJWixnQkFBWSxBQUE2QixRQUFFLEFBQXdCO0FBQ2pFLEFBQUksYUFBQyxBQUFNLFNBQUcsQUFBTSxBQUFDO0FBQ3JCLEFBQUksYUFBQyxBQUFRLFdBQUcsQUFBUSxBQUFDLEFBQzNCO0FBQUM7QUFFRCxBQUFRLGFBQUMsQUFBaUIsV0FBRSxBQUFpQjtBQUMzQyxBQUFFLEFBQUMsWUFBQyxBQUF5QixtQ0FBQyxBQUFTLEFBQUMsQUFBQyxZQUFDLEFBQUM7QUFDekMsQUFBTSxtQkFBQyxBQUFTLEFBQUMsQUFDbkI7QUFBQztBQUVELFlBQUksQUFBQyxJQUFHLEFBQW9CLDhCQUFDLEFBQVMsQUFBQyxBQUFDO0FBQ3hDLFlBQUksQUFBYyxBQUFDO0FBRW5CLEFBQUUsQUFBQyxZQUFDLEFBQVEsQUFBQyxVQUFDLEFBQUM7QUFDYixnQkFBSSxBQUFDLElBQUcsQUFBb0IsOEJBQUMsQUFBUSxBQUFDLEFBQUM7QUFFdkMsQUFBRSxBQUFDLGdCQUFDLEFBQXlCLG1DQUFDLEFBQUMsQUFBQyxBQUFDLElBQUMsQUFBQztBQUNqQyxBQUFNLG1DQUFDLEFBQXlHLDJHQUFFLEFBQUMsRUFBQyxBQUFRLGFBQUssQUFBUyxhQUFJLEFBQUMsRUFBQyxBQUFVLGVBQUssQUFBUyxhQUFJLEFBQUMsRUFBQyxBQUFTLGNBQUssQUFBUyxBQUFDLEFBQUM7QUFFdk0sQUFBMkM7QUFDM0MsQUFBQyxrQkFBQyxBQUFRLFdBQUcsQUFBQyxFQUFDLEFBQVEsQUFBQztBQUN4QixBQUFD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QUFBTyxRQUFDLEFBQW9CLEFBQUMsQUFDdEM7QUFBQztBQUVPLEFBQW1CLHdCQUFDLEFBQW9CO0FBQzlDLFlBQUksQUFBVSxhQUFHLEFBQWtCLDRCQUFDLEFBQVMsQUFBQyxBQUFDO0FBQy9DLEFBQUUsQUFBQyxZQUFDLEFBQUksS0FBQyxBQUFRLFNBQUMsQUFBRyxJQUFDLEFBQVUsQUFBQyxBQUFDLGFBQUMsQUFBQztBQUNsQyxBQUFNLG1CQUFDLEFBQVUsQUFBQyxBQUNwQjtBQUFDLEFBQ0g7QUFBQyxBQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgUmVzb2x2ZXIgYXMgSVJlc29sdmVyLFxuICBTcGVjaWZpZXIsXG4gIGlzU3BlY2lmaWVyU3RyaW5nQWJzb2x1dGUsXG4gIGlzU3BlY2lmaWVyT2JqZWN0QWJzb2x1dGUsXG4gIGRlc2VyaWFsaXplU3BlY2lmaWVyLFxuICBzZXJpYWxpemVTcGVjaWZpZXJcbn0gZnJvbSAnQGdsaW1tZXIvZGknO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnLi91dGlscy9kZWJ1Zyc7XG5pbXBvcnQgeyBNb2R1bGVSZWdpc3RyeSB9IGZyb20gJy4vbW9kdWxlLXJlZ2lzdHJ5JztcbmltcG9ydCB7IFJlc29sdmVyQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vcmVzb2x2ZXItY29uZmlndXJhdGlvbic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlc29sdmVyIGltcGxlbWVudHMgSVJlc29sdmVyIHtcbiAgcHVibGljIGNvbmZpZzogUmVzb2x2ZXJDb25maWd1cmF0aW9uO1xuICBwdWJsaWMgcmVnaXN0cnk6IE1vZHVsZVJlZ2lzdHJ5O1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogUmVzb2x2ZXJDb25maWd1cmF0aW9uLCByZWdpc3RyeTogTW9kdWxlUmVnaXN0cnkpIHtcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLnJlZ2lzdHJ5ID0gcmVnaXN0cnk7XG4gIH1cblxuICBpZGVudGlmeShzcGVjaWZpZXI6IHN0cmluZywgcmVmZXJyZXI/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChpc1NwZWNpZmllclN0cmluZ0Fic29sdXRlKHNwZWNpZmllcikpIHtcbiAgICAgIHJldHVybiBzcGVjaWZpZXI7XG4gICAgfVxuXG4gICAgbGV0IHMgPSBkZXNlcmlhbGl6ZVNwZWNpZmllcihzcGVjaWZpZXIpO1xuICAgIGxldCByZXN1bHQ6IHN0cmluZztcblxuICAgIGlmIChyZWZlcnJlcikge1xuICAgICAgbGV0IHIgPSBkZXNlcmlhbGl6ZVNwZWNpZmllcihyZWZlcnJlcik7XG5cbiAgICAgIGlmIChpc1NwZWNpZmllck9iamVjdEFic29sdXRlKHIpKSB7XG4gICAgICAgIGFzc2VydCgnU3BlY2lmaWVyIG11c3Qgbm90IGluY2x1ZGUgYSByb290TmFtZSwgY29sbGVjdGlvbiwgb3IgbmFtZXNwYWNlIHdoZW4gY29tYmluZWQgd2l0aCBhbiBhYnNvbHV0ZSByZWZlcnJlcicsIHMucm9vdE5hbWUgPT09IHVuZGVmaW5lZCAmJiBzLmNvbGxlY3Rpb24gPT09IHVuZGVmaW5lZCAmJiBzLm5hbWVzcGFjZSA9PT0gdW5kZWZpbmVkKTtcblxuICAgICAgICAvLyBMb29rIGxvY2FsbHkgaW4gdGhlIHJlZmVycmVyJ3MgbmFtZXNwYWNlXG4gICAgICAgIHMucm9vdE5hbWUgPSByLnJvb3ROYW1lO1xuICAgICAgICBzLmNvbGxlY3Rpb24gPSByLmNvbGxlY3Rpb247XG4gICAgICAgIGlmIChzLm5hbWUpIHtcbiAgICAgICAgICBzLm5hbWVzcGFjZSA9IHIubmFtZXNwYWNlID8gci5uYW1lc3BhY2UgKyAnLycgKyByLm5hbWUgOiByLm5hbWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcy5uYW1lc3BhY2UgPSByLm5hbWVzcGFjZTtcbiAgICAgICAgICBzLm5hbWUgPSByLm5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc3VsdCA9IHRoaXMuX3NlcmlhbGl6ZUFuZFZlcmlmeShzKSkgeyByZXR1cm4gcmVzdWx0OyB9XG5cbiAgICAgICAgLy8gTG9vayBmb3IgYSBwcml2YXRlIGNvbGxlY3Rpb24gaW4gdGhlIHJlZmVycmVyJ3MgbmFtZXNwYWNlXG4gICAgICAgIGxldCBwcml2YXRlQ29sbGVjdGlvbiA9IHRoaXMuX2RlZmluaXRpdmVDb2xsZWN0aW9uKHMudHlwZSk7XG4gICAgICAgIGlmIChwcml2YXRlQ29sbGVjdGlvbikge1xuICAgICAgICAgIHMubmFtZXNwYWNlICs9ICcvLScgKyBwcml2YXRlQ29sbGVjdGlvbjtcbiAgICAgICAgICBpZiAocmVzdWx0ID0gdGhpcy5fc2VyaWFsaXplQW5kVmVyaWZ5KHMpKSB7IHJldHVybiByZXN1bHQ7IH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEJlY2F1c2UgbG9jYWwgYW5kIHByaXZhdGUgcmVzb2x1dGlvbiBoYXMgZmFpbGVkLCBjbGVhciBhbGwgYnV0IGBuYW1lYCBhbmQgYHR5cGVgXG4gICAgICAgIC8vIHRvIHByb2NlZWQgd2l0aCB0b3AtbGV2ZWwgcmVzb2x1dGlvblxuICAgICAgICBzLnJvb3ROYW1lID0gcy5jb2xsZWN0aW9uID0gcy5uYW1lc3BhY2UgPSB1bmRlZmluZWQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhc3NlcnQoJ1JlZmVycmVyIG11c3QgZWl0aGVyIGJlIFwiYWJzb2x1dGVcIiBvciBpbmNsdWRlIGEgYHR5cGVgIHRvIGRldGVybWluZSB0aGUgYXNzb2NpYXRlZCB0eXBlJywgci50eXBlKTtcblxuICAgICAgICAvLyBMb29rIGluIHRoZSBkZWZpbml0aXZlIGNvbGxlY3Rpb24gZm9yIHRoZSBhc3NvY2lhdGVkIHR5cGVcbiAgICAgICAgcy5jb2xsZWN0aW9uID0gdGhpcy5fZGVmaW5pdGl2ZUNvbGxlY3Rpb24oci50eXBlKTtcbiAgICAgICAgYXNzZXJ0KGAnJHtyLnR5cGV9JyBkb2VzIG5vdCBoYXZlIGEgZGVmaW5pdGl2ZSBjb2xsZWN0aW9uYCwgcy5jb2xsZWN0aW9uKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgY29sbGVjdGlvbiBpcyB1bnNwZWNpZmllZCwgdXNlIHRoZSBkZWZpbml0aXZlIGNvbGxlY3Rpb24gZm9yIHRoZSBgdHlwZWBcbiAgICBpZiAoIXMuY29sbGVjdGlvbikge1xuICAgICAgcy5jb2xsZWN0aW9uID0gdGhpcy5fZGVmaW5pdGl2ZUNvbGxlY3Rpb24ocy50eXBlKTtcbiAgICAgIGFzc2VydChgJyR7cy50eXBlfScgZG9lcyBub3QgaGF2ZSBhIGRlZmluaXRpdmUgY29sbGVjdGlvbmAsIHMuY29sbGVjdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKCFzLnJvb3ROYW1lKSB7XG4gICAgICAvLyBJZiB0aGUgcm9vdCBuYW1lIGlzIHVuc3BlY2lmaWVkLCB0cnkgdGhlIGFwcCdzIGByb290TmFtZWAgZmlyc3RcbiAgICAgIHMucm9vdE5hbWUgPSB0aGlzLmNvbmZpZy5hcHAucm9vdE5hbWUgfHwgJ2FwcCc7XG4gICAgICBpZiAocmVzdWx0ID0gdGhpcy5fc2VyaWFsaXplQW5kVmVyaWZ5KHMpKSB7IHJldHVybiByZXN1bHQ7IH1cblxuICAgICAgLy8gVGhlbiBsb29rIGZvciBhbiBhZGRvbiB3aXRoIGEgbWF0Y2hpbmcgYHJvb3ROYW1lYFxuICAgICAgbGV0IGFkZG9uRGVmO1xuICAgICAgaWYgKHMubmFtZXNwYWNlKSB7XG4gICAgICAgIGFkZG9uRGVmID0gdGhpcy5jb25maWcuYWRkb25zICYmIHRoaXMuY29uZmlnLmFkZG9uc1tzLm5hbWVzcGFjZV07XG4gICAgICAgIHMucm9vdE5hbWUgPSBzLm5hbWVzcGFjZTtcbiAgICAgICAgcy5uYW1lc3BhY2UgPSB1bmRlZmluZWQ7XG5cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFkZG9uRGVmID0gdGhpcy5jb25maWcuYWRkb25zICYmIHRoaXMuY29uZmlnLmFkZG9uc1tzLm5hbWVdO1xuICAgICAgICBzLnJvb3ROYW1lID0gcy5uYW1lO1xuICAgICAgICBzLm5hbWUgPSAnbWFpbic7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHJlc3VsdCA9IHRoaXMuX3NlcmlhbGl6ZUFuZFZlcmlmeShzKSkgeyByZXR1cm4gcmVzdWx0OyB9XG4gIH1cblxuICByZXRyaWV2ZShzcGVjaWZpZXI6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMucmVnaXN0cnkuZ2V0KHNwZWNpZmllcik7XG4gIH1cblxuICByZXNvbHZlKHNwZWNpZmllcjogc3RyaW5nLCByZWZlcnJlcj86IHN0cmluZyk6IGFueSB7XG4gICAgbGV0IGlkID0gdGhpcy5pZGVudGlmeShzcGVjaWZpZXIsIHJlZmVycmVyKTtcbiAgICBpZiAoaWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnJldHJpZXZlKGlkKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9kZWZpbml0aXZlQ29sbGVjdGlvbih0eXBlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCB0eXBlRGVmID0gdGhpcy5jb25maWcudHlwZXNbdHlwZV07XG4gICAgYXNzZXJ0KGAnJHt0eXBlfScgaXMgbm90IGEgcmVjb2duaXplZCB0eXBlYCwgdHlwZURlZik7XG4gICAgcmV0dXJuIHR5cGVEZWYuZGVmaW5pdGl2ZUNvbGxlY3Rpb247XG4gIH1cblxuICBwcml2YXRlIF9zZXJpYWxpemVBbmRWZXJpZnkoc3BlY2lmaWVyOiBTcGVjaWZpZXIpOiBzdHJpbmcge1xuICAgIGxldCBzZXJpYWxpemVkID0gc2VyaWFsaXplU3BlY2lmaWVyKHNwZWNpZmllcik7XG4gICAgaWYgKHRoaXMucmVnaXN0cnkuaGFzKHNlcmlhbGl6ZWQpKSB7XG4gICAgICByZXR1cm4gc2VyaWFsaXplZDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzcmMvcmVzb2x2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsQUFBTyxBQUdMLEFBQXlCLEFBQ3pCLEFBQXlCLEFBQ3pCLEFBQW9CLEFBQ3BCLEFBQWtCLEFBQ25CLEFBQU0sQUFBYSxBQUFDOztBQUNyQixBQUFPLEFBQUUsQUFBTSxBQUFFLEFBQU0sQUFBZSxBQUFDLEFBSXZDLEFBQU0sQUFBQyxBQUFPOzs7QUFJWixnQkFBWSxBQUE2QixRQUFFLEFBQXdCO0FBQ2pFLEFBQUksYUFBQyxBQUFNLFNBQUcsQUFBTSxBQUFDO0FBQ3JCLEFBQUksYUFBQyxBQUFRLFdBQUcsQUFBUSxBQUFDLEFBQzNCO0FBQUM7QUFFRCxBQUFRLGFBQUMsQUFBaUIsV0FBRSxBQUFpQjtBQUMzQyxBQUFFLEFBQUMsWUFBQyxBQUF5QixtQ0FBQyxBQUFTLEFBQUMsQUFBQyxZQUFDLEFBQUM7QUFDekMsQUFBTSxtQkFBQyxBQUFTLEFBQUMsQUFDbkI7QUFBQztBQUVELFlBQUksQUFBQyxJQUFHLEFBQW9CLDhCQUFDLEFBQVMsQUFBQyxBQUFDO0FBQ3hDLFlBQUksQUFBYyxBQUFDO0FBRW5CLEFBQUUsQUFBQyxZQUFDLEFBQVEsQUFBQyxVQUFDLEFBQUM7QUFDYixnQkFBSSxBQUFDLElBQUcsQUFBb0IsOEJBQUMsQUFBUSxBQUFDLEFBQUM7QUFFdkMsQUFBRSxBQUFDLGdCQUFDLEFBQXlCLG1DQUFDLEFBQUMsQUFBQyxBQUFDLElBQUMsQUFBQztBQUNqQyxBQUFNLG1DQUFDLEFBQXlHLDJHQUFFLEFBQUMsRUFBQyxBQUFRLGFBQUssQUFBUyxhQUFJLEFBQUMsRUFBQyxBQUFVLGVBQUssQUFBUyxhQUFJLEFBQUMsRUFBQyxBQUFTLGNBQUssQUFBUyxBQUFDLEFBQUM7QUFFdk0sQUFBQyxrQkFBQyxBQUFRLFdBQUcsQUFBQyxFQUFDLEFBQVEsQUFBQztBQUN4QixBQUFDLGtCQUFDLEFBQVUs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LEFBQUksS0FBQyxBQUFNLE9BQUMsQUFBSyxNQUFDLEFBQUksQUFBQyxBQUFDO0FBQ3RDLEFBQU0sQUFBQywrQkFBSSxBQUFJLElBQTRCLDhCQUFFLEFBQU8sQUFBQyxBQUFDO0FBQ3RELEFBQU0sZUFBQyxBQUFPLFFBQUMsQUFBb0IsQUFBQyxBQUN0QztBQUFDO0FBRU8sQUFBbUIsd0JBQUMsQUFBb0I7QUFDOUMsWUFBSSxBQUFVLGFBQUcsQUFBa0IsNEJBQUMsQUFBUyxBQUFDLEFBQUM7QUFDL0MsQUFBRSxBQUFDLFlBQUMsQUFBSSxLQUFDLEFBQVEsU0FBQyxBQUFHLElBQUMsQUFBVSxBQUFDLEFBQUMsYUFBQyxBQUFDO0FBQ2xDLEFBQU0sbUJBQUMsQUFBVSxBQUFDLEFBQ3BCO0FBQUMsQUFDSDtBQUFDLEFBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBSZXNvbHZlciBhcyBJUmVzb2x2ZXIsXG4gIFNwZWNpZmllcixcbiAgaXNTcGVjaWZpZXJTdHJpbmdBYnNvbHV0ZSxcbiAgaXNTcGVjaWZpZXJPYmplY3RBYnNvbHV0ZSxcbiAgZGVzZXJpYWxpemVTcGVjaWZpZXIsXG4gIHNlcmlhbGl6ZVNwZWNpZmllclxufSBmcm9tICdAZ2xpbW1lci9kaSc7XG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tICcuL3V0aWxzL2RlYnVnJztcbmltcG9ydCB7IE1vZHVsZVJlZ2lzdHJ5IH0gZnJvbSAnLi9tb2R1bGUtcmVnaXN0cnknO1xuaW1wb3J0IHsgUmVzb2x2ZXJDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9yZXNvbHZlci1jb25maWd1cmF0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVzb2x2ZXIgaW1wbGVtZW50cyBJUmVzb2x2ZXIge1xuICBwdWJsaWMgY29uZmlnOiBSZXNvbHZlckNvbmZpZ3VyYXRpb247XG4gIHB1YmxpYyByZWdpc3RyeTogTW9kdWxlUmVnaXN0cnk7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBSZXNvbHZlckNvbmZpZ3VyYXRpb24sIHJlZ2lzdHJ5OiBNb2R1bGVSZWdpc3RyeSkge1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgIHRoaXMucmVnaXN0cnkgPSByZWdpc3RyeTtcbiAgfVxuXG4gIGlkZW50aWZ5KHNwZWNpZmllcjogc3RyaW5nLCByZWZlcnJlcj86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKGlzU3BlY2lmaWVyU3RyaW5nQWJzb2x1dGUoc3BlY2lmaWVyKSkge1xuICAgICAgcmV0dXJuIHNwZWNpZmllcjtcbiAgICB9XG5cbiAgICBsZXQgcyA9IGRlc2VyaWFsaXplU3BlY2lmaWVyKHNwZWNpZmllcik7XG4gICAgbGV0IHJlc3VsdDogc3RyaW5nO1xuXG4gICAgaWYgKHJlZmVycmVyKSB7XG4gICAgICBsZXQgciA9IGRlc2VyaWFsaXplU3BlY2lmaWVyKHJlZmVycmVyKTtcblxuICAgICAgaWYgKGlzU3BlY2lmaWVyT2JqZWN0QWJzb2x1dGUocikpIHtcbiAgICAgICAgYXNzZXJ0KCdTcGVjaWZpZXIgbXVzdCBub3QgaW5jbHVkZSBhIHJvb3ROYW1lLCBjb2xsZWN0aW9uLCBvciBuYW1lc3BhY2Ugd2hlbiBjb21iaW5lZCB3aXRoIGFuIGFic29sdXRlIHJlZmVycmVyJywgcy5yb290TmFtZSA9PT0gdW5kZWZpbmVkICYmIHMuY29sbGVjdGlvbiA9PT0gdW5kZWZpbmVkICYmIHMubmFtZXNwYWNlID09PSB1bmRlZmluZWQpO1xuXG4gICAgICAgIHMucm9vdE5hbWUgPSByLnJvb3ROYW1lO1xuICAgICAgICBzLmNvbGxlY3Rpb24gPSByLmNvbGxlY3Rpb247XG4gICAgICAgIGxldCBkZWZpbml0aXZlQ29sbGVjdGlvbiA9IHRoaXMuX2RlZmluaXRpdmVDb2xsZWN0aW9uKHMudHlwZSk7XG5cbiAgICAgICAgaWYgKCFzLm5hbWUpIHtcbiAgICAgICAgICAvKlxuICAgICAgICAgICAqIEZvciBzcGVjaWZpZXJzIHdpdGhvdXQgYSBuYW1lIHVzZSB0aGUgcmVmZXJyZXIncyBuYW1lIGFuZFxuICAgICAgICAgICAqIGRvIG5vdCBmYWxsYmFjayB0byBhbnkgb3RoZXIgcmVzb2x1dGlvbiBydWxlcy5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBzLm5hbWVzcGFjZSA9IHIubmFtZXNwYWNlO1xuICAgICAgICAgIHMubmFtZSA9IHIubmFtZTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fc2VyaWFsaXplQW5kVmVyaWZ5KHMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcy5uYW1lc3BhY2UgPSByLm5hbWVzcGFjZSA/IHIubmFtZXNwYWNlICsgJy8nICsgci5uYW1lIDogci5uYW1lO1xuICAgICAgICBpZiAocy5jb2xsZWN0aW9uID09PSBkZWZpbml0aXZlQ29sbGVjdGlvbikge1xuICAgICAgICAgIC8qXG4gICAgICAgICAgICogRm9yIHNwZWNpZmllcnMgd2l0aCBhIG5hbWUsIHRyeSBsb2NhbCByZXNvbHV0aW9uLiBCYXNlZCBvblxuICAgICAgICAgICAqIHRoZSByZWZlcnJlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBpZiAocmVzdWx0ID0gdGhpcy5fc2VyaWFsaXplQW5kVmVyaWZ5KHMpKSB7IHJldHVybiByZXN1bHQ7IH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIExvb2sgZm9yIGEgcHJpdmF0ZSBjb2xsZWN0aW9uIGluIHRoZSByZWZlcnJlcidzIG5hbWVzcGFjZVxuICAgICAgICBpZiAoZGVmaW5pdGl2ZUNvbGxlY3Rpb24pIHtcbiAgICAgICAgICBzLm5hbWVzcGFjZSArPSAnLy0nICsgZGVmaW5pdGl2ZUNvbGxlY3Rpb247XG4gICAgICAgICAgaWYgKHJlc3VsdCA9IHRoaXMuX3NlcmlhbGl6ZUFuZFZlcmlmeShzKSkgeyByZXR1cm4gcmVzdWx0OyB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBCZWNhdXNlIGxvY2FsIGFuZCBwcml2YXRlIHJlc29sdXRpb24gaGFzIGZhaWxlZCwgY2xlYXIgYWxsIGJ1dCBgbmFtZWAgYW5kIGB0eXBlYFxuICAgICAgICAvLyB0byBwcm9jZWVkIHdpdGggdG9wLWxldmVsIHJlc29sdXRpb25cbiAgICAgICAgcy5yb290TmFtZSA9IHMuY29sbGVjdGlvbiA9IHMubmFtZXNwYWNlID0gdW5kZWZpbmVkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXNzZXJ0KCdSZWZlcnJlciBtdXN0IGVpdGhlciBiZSBcImFic29sdXRlXCIgb3IgaW5jbHVkZSBhIGB0eXBlYCB0byBkZXRlcm1pbmUgdGhlIGFzc29jaWF0ZWQgdHlwZScsIHIudHlwZSk7XG5cbiAgICAgICAgLy8gTG9vayBpbiB0aGUgZGVmaW5pdGl2ZSBjb2xsZWN0aW9uIGZvciB0aGUgYXNzb2NpYXRlZCB0eXBlXG4gICAgICAgIHMuY29sbGVjdGlvbiA9IHRoaXMuX2RlZmluaXRpdmVDb2xsZWN0aW9uKHIudHlwZSk7XG4gICAgICAgIGFzc2VydChgJyR7ci50eXBlfScgZG9lcyBub3QgaGF2ZSBhIGRlZmluaXRpdmUgY29sbGVjdGlvbmAsIHMuY29sbGVjdGlvbik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIGNvbGxlY3Rpb24gaXMgdW5zcGVjaWZpZWQsIHVzZSB0aGUgZGVmaW5pdGl2ZSBjb2xsZWN0aW9uIGZvciB0aGUgYHR5cGVgXG4gICAgaWYgKCFzLmNvbGxlY3Rpb24pIHtcbiAgICAgIHMuY29sbGVjdGlvbiA9IHRoaXMuX2RlZmluaXRpdmVDb2xsZWN0aW9uKHMudHlwZSk7XG4gICAgICBhc3NlcnQoYCcke3MudHlwZX0nIGRvZXMgbm90IGhhdmUgYSBkZWZpbml0aXZlIGNvbGxlY3Rpb25gLCBzLmNvbGxlY3Rpb24pO1xuICAgIH1cblxuICAgIGlmICghcy5yb290TmFtZSkge1xuICAgICAgLy8gSWYgdGhlIHJvb3QgbmFtZSBpcyB1bnNwZWNpZmllZCwgdHJ5IHRoZSBhcHAncyBgcm9vdE5hbWVgIGZpcnN0XG4gICAgICBzLnJvb3ROYW1lID0gdGhpcy5jb25maWcuYXBwLnJvb3ROYW1lIHx8ICdhcHAnO1xuICAgICAgaWYgKHJlc3VsdCA9IHRoaXMuX3NlcmlhbGl6ZUFuZFZlcmlmeShzKSkgeyByZXR1cm4gcmVzdWx0OyB9XG5cbiAgICAgIC8vIFRoZW4gbG9vayBmb3IgYW4gYWRkb24gd2l0aCBhIG1hdGNoaW5nIGByb290TmFtZWBcbiAgICAgIGxldCBhZGRvbkRlZjtcbiAgICAgIGlmIChzLm5hbWVzcGFjZSkge1xuICAgICAgICBhZGRvbkRlZiA9IHRoaXMuY29uZmlnLmFkZG9ucyAmJiB0aGlzLmNvbmZpZy5hZGRvbnNbcy5uYW1lc3BhY2VdO1xuICAgICAgICBzLnJvb3ROYW1lID0gcy5uYW1lc3BhY2U7XG4gICAgICAgIHMubmFtZXNwYWNlID0gdW5kZWZpbmVkO1xuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhZGRvbkRlZiA9IHRoaXMuY29uZmlnLmFkZG9ucyAmJiB0aGlzLmNvbmZpZy5hZGRvbnNbcy5uYW1lXTtcbiAgICAgICAgcy5yb290TmFtZSA9IHMubmFtZTtcbiAgICAgICAgcy5uYW1lID0gJ21haW4nO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChyZXN1bHQgPSB0aGlzLl9zZXJpYWxpemVBbmRWZXJpZnkocykpIHsgcmV0dXJuIHJlc3VsdDsgfVxuICB9XG5cbiAgcmV0cmlldmUoc3BlY2lmaWVyOiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnJlZ2lzdHJ5LmdldChzcGVjaWZpZXIpO1xuICB9XG5cbiAgcmVzb2x2ZShzcGVjaWZpZXI6IHN0cmluZywgcmVmZXJyZXI/OiBzdHJpbmcpOiBhbnkge1xuICAgIGxldCBpZCA9IHRoaXMuaWRlbnRpZnkoc3BlY2lmaWVyLCByZWZlcnJlcik7XG4gICAgaWYgKGlkKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXRyaWV2ZShpZCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZGVmaW5pdGl2ZUNvbGxlY3Rpb24odHlwZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgdHlwZURlZiA9IHRoaXMuY29uZmlnLnR5cGVzW3R5cGVdO1xuICAgIGFzc2VydChgJyR7dHlwZX0nIGlzIG5vdCBhIHJlY29nbml6ZWQgdHlwZWAsIHR5cGVEZWYpO1xuICAgIHJldHVybiB0eXBlRGVmLmRlZmluaXRpdmVDb2xsZWN0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2VyaWFsaXplQW5kVmVyaWZ5KHNwZWNpZmllcjogU3BlY2lmaWVyKTogc3RyaW5nIHtcbiAgICBsZXQgc2VyaWFsaXplZCA9IHNlcmlhbGl6ZVNwZWNpZmllcihzcGVjaWZpZXIpO1xuICAgIGlmICh0aGlzLnJlZ2lzdHJ5LmhhcyhzZXJpYWxpemVkKSkge1xuICAgICAgcmV0dXJuIHNlcmlhbGl6ZWQ7XG4gICAgfVxuICB9XG59XG4iXX0=

@@ -35,18 +35,27 @@ 'use strict';

(0, _debug.assert)('Specifier must not include a rootName, collection, or namespace when combined with an absolute referrer', s.rootName === undefined && s.collection === undefined && s.namespace === undefined);
// Look locally in the referrer's namespace
s.rootName = r.rootName;
s.collection = r.collection;
if (s.name) {
s.namespace = r.namespace ? r.namespace + '/' + r.name : r.name;
} else {
var definitiveCollection = this._definitiveCollection(s.type);
if (!s.name) {
/*
* For specifiers without a name use the referrer's name and
* do not fallback to any other resolution rules.
*/
s.namespace = r.namespace;
s.name = r.name;
return this._serializeAndVerify(s);
}
if (result = this._serializeAndVerify(s)) {
return result;
s.namespace = r.namespace ? r.namespace + '/' + r.name : r.name;
if (s.collection === definitiveCollection) {
/*
* For specifiers with a name, try local resolution. Based on
* the referrer.
*/
if (result = this._serializeAndVerify(s)) {
return result;
}
}
// Look for a private collection in the referrer's namespace
var privateCollection = this._definitiveCollection(s.type);
if (privateCollection) {
s.namespace += '/-' + privateCollection;
if (definitiveCollection) {
s.namespace += '/-' + definitiveCollection;
if (result = this._serializeAndVerify(s)) {

@@ -122,2 +131,2 @@ return result;

exports.default = Resolver;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzcmMvcmVzb2x2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsQUFBTyxBQUdMLEFBQXlCLEFBQ3pCLEFBQXlCLEFBQ3pCLEFBQW9CLEFBQ3BCLEFBQWtCLEFBQ25CLEFBQU0sQUFBYSxBQUFDOztBQUNyQixBQUFPLEFBQUUsQUFBTSxBQUFFLEFBQU0sQUFBZSxBQUFDLEFBSXZDLEFBQU0sQUFBQyxBQUFPOzs7Ozs7OzsyQkFJWjtzQkFBWSxBQUE2QixRQUFFLEFBQXdCOzhCQUNqRSxBQUFJOzthQUFDLEFBQU0sU0FBRyxBQUFNLEFBQUMsQUFDckIsQUFBSTthQUFDLEFBQVEsV0FBRyxBQUFRLEFBQUMsQUFDM0IsQUFBQzs7O3VCQUVELEFBQVEsNkJBQUMsQUFBaUIsV0FBRSxBQUFpQixVQUMzQyxBQUFFLEFBQUM7WUFBQyxBQUF5QixtQ0FBQyxBQUFTLEFBQUMsQUFBQyxZQUFDLEFBQUMsQUFDekMsQUFBTTttQkFBQyxBQUFTLEFBQUMsQUFDbkIsQUFBQztBQUVEO1lBQUksQUFBQyxJQUFHLEFBQW9CLDhCQUFDLEFBQVMsQUFBQyxBQUFDLEFBQ3hDO1lBQUksQUFBYyxBQUFDLGNBRW5CLEFBQUUsQUFBQztZQUFDLEFBQVEsQUFBQyxVQUFDLEFBQUMsQUFDYjtnQkFBSSxBQUFDLElBQUcsQUFBb0IsOEJBQUMsQUFBUSxBQUFDLEFBQUMsQUFFdkMsQUFBRSxBQUFDO2dCQUFDLEFBQXlCLG1DQUFDLEFBQUMsQUFBQyxBQUFDLElBQUMsQUFBQyxBQUNqQyxBQUFNO21DQUFDLEFBQXlHLDJHQUFFLEFBQUMsRUFBQyxBQUFRLGFBQUssQUFBUyxhQUFJLEFBQUMsRUFBQyxBQUFVLGVBQUssQUFBUyxhQUFJLEFBQUMsRUFBQyxBQUFTLGNBQUssQUFBUyxBQUFDLEFBQUMsQUFFdk0sQUFBMkM7QUFDM0MsQUFBQztrQkFBQyxBQUFRLFdBQUcsQUFBQyxFQUFDLEFBQVEsQUFB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QUMsQUFBQyxBQUN0RCxBQUFNO2VBQUMsQUFBTyxRQUFDLEFBQW9CLEFBQUMsQUFDdEMsQUFBQzs7O3VCQUVPLEFBQW1CLG1EQUFDLEFBQW9CLFdBQzlDO1lBQUksQUFBVSxhQUFHLEFBQWtCLDRCQUFDLEFBQVMsQUFBQyxBQUFDLEFBQy9DLEFBQUUsQUFBQztZQUFDLEFBQUksS0FBQyxBQUFRLFNBQUMsQUFBRyxJQUFDLEFBQVUsQUFBQyxBQUFDLGFBQUMsQUFBQyxBQUNsQyxBQUFNO21CQUFDLEFBQVUsQUFBQyxBQUNwQixBQUFDLEFBQ0g7QUFBQyxBQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgUmVzb2x2ZXIgYXMgSVJlc29sdmVyLFxuICBTcGVjaWZpZXIsXG4gIGlzU3BlY2lmaWVyU3RyaW5nQWJzb2x1dGUsXG4gIGlzU3BlY2lmaWVyT2JqZWN0QWJzb2x1dGUsXG4gIGRlc2VyaWFsaXplU3BlY2lmaWVyLFxuICBzZXJpYWxpemVTcGVjaWZpZXJcbn0gZnJvbSAnQGdsaW1tZXIvZGknO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnLi91dGlscy9kZWJ1Zyc7XG5pbXBvcnQgeyBNb2R1bGVSZWdpc3RyeSB9IGZyb20gJy4vbW9kdWxlLXJlZ2lzdHJ5JztcbmltcG9ydCB7IFJlc29sdmVyQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vcmVzb2x2ZXItY29uZmlndXJhdGlvbic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlc29sdmVyIGltcGxlbWVudHMgSVJlc29sdmVyIHtcbiAgcHVibGljIGNvbmZpZzogUmVzb2x2ZXJDb25maWd1cmF0aW9uO1xuICBwdWJsaWMgcmVnaXN0cnk6IE1vZHVsZVJlZ2lzdHJ5O1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogUmVzb2x2ZXJDb25maWd1cmF0aW9uLCByZWdpc3RyeTogTW9kdWxlUmVnaXN0cnkpIHtcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLnJlZ2lzdHJ5ID0gcmVnaXN0cnk7XG4gIH1cblxuICBpZGVudGlmeShzcGVjaWZpZXI6IHN0cmluZywgcmVmZXJyZXI/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChpc1NwZWNpZmllclN0cmluZ0Fic29sdXRlKHNwZWNpZmllcikpIHtcbiAgICAgIHJldHVybiBzcGVjaWZpZXI7XG4gICAgfVxuXG4gICAgbGV0IHMgPSBkZXNlcmlhbGl6ZVNwZWNpZmllcihzcGVjaWZpZXIpO1xuICAgIGxldCByZXN1bHQ6IHN0cmluZztcblxuICAgIGlmIChyZWZlcnJlcikge1xuICAgICAgbGV0IHIgPSBkZXNlcmlhbGl6ZVNwZWNpZmllcihyZWZlcnJlcik7XG5cbiAgICAgIGlmIChpc1NwZWNpZmllck9iamVjdEFic29sdXRlKHIpKSB7XG4gICAgICAgIGFzc2VydCgnU3BlY2lmaWVyIG11c3Qgbm90IGluY2x1ZGUgYSByb290TmFtZSwgY29sbGVjdGlvbiwgb3IgbmFtZXNwYWNlIHdoZW4gY29tYmluZWQgd2l0aCBhbiBhYnNvbHV0ZSByZWZlcnJlcicsIHMucm9vdE5hbWUgPT09IHVuZGVmaW5lZCAmJiBzLmNvbGxlY3Rpb24gPT09IHVuZGVmaW5lZCAmJiBzLm5hbWVzcGFjZSA9PT0gdW5kZWZpbmVkKTtcblxuICAgICAgICAvLyBMb29rIGxvY2FsbHkgaW4gdGhlIHJlZmVycmVyJ3MgbmFtZXNwYWNlXG4gICAgICAgIHMucm9vdE5hbWUgPSByLnJvb3ROYW1lO1xuICAgICAgICBzLmNvbGxlY3Rpb24gPSByLmNvbGxlY3Rpb247XG4gICAgICAgIGlmIChzLm5hbWUpIHtcbiAgICAgICAgICBzLm5hbWVzcGFjZSA9IHIubmFtZXNwYWNlID8gci5uYW1lc3BhY2UgKyAnLycgKyByLm5hbWUgOiByLm5hbWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcy5uYW1lc3BhY2UgPSByLm5hbWVzcGFjZTtcbiAgICAgICAgICBzLm5hbWUgPSByLm5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc3VsdCA9IHRoaXMuX3NlcmlhbGl6ZUFuZFZlcmlmeShzKSkgeyByZXR1cm4gcmVzdWx0OyB9XG5cbiAgICAgICAgLy8gTG9vayBmb3IgYSBwcml2YXRlIGNvbGxlY3Rpb24gaW4gdGhlIHJlZmVycmVyJ3MgbmFtZXNwYWNlXG4gICAgICAgIGxldCBwcml2YXRlQ29sbGVjdGlvbiA9IHRoaXMuX2RlZmluaXRpdmVDb2xsZWN0aW9uKHMudHlwZSk7XG4gICAgICAgIGlmIChwcml2YXRlQ29sbGVjdGlvbikge1xuICAgICAgICAgIHMubmFtZXNwYWNlICs9ICcvLScgKyBwcml2YXRlQ29sbGVjdGlvbjtcbiAgICAgICAgICBpZiAocmVzdWx0ID0gdGhpcy5fc2VyaWFsaXplQW5kVmVyaWZ5KHMpKSB7IHJldHVybiByZXN1bHQ7IH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEJlY2F1c2UgbG9jYWwgYW5kIHByaXZhdGUgcmVzb2x1dGlvbiBoYXMgZmFpbGVkLCBjbGVhciBhbGwgYnV0IGBuYW1lYCBhbmQgYHR5cGVgXG4gICAgICAgIC8vIHRvIHByb2NlZWQgd2l0aCB0b3AtbGV2ZWwgcmVzb2x1dGlvblxuICAgICAgICBzLnJvb3ROYW1lID0gcy5jb2xsZWN0aW9uID0gcy5uYW1lc3BhY2UgPSB1bmRlZmluZWQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhc3NlcnQoJ1JlZmVycmVyIG11c3QgZWl0aGVyIGJlIFwiYWJzb2x1dGVcIiBvciBpbmNsdWRlIGEgYHR5cGVgIHRvIGRldGVybWluZSB0aGUgYXNzb2NpYXRlZCB0eXBlJywgci50eXBlKTtcblxuICAgICAgICAvLyBMb29rIGluIHRoZSBkZWZpbml0aXZlIGNvbGxlY3Rpb24gZm9yIHRoZSBhc3NvY2lhdGVkIHR5cGVcbiAgICAgICAgcy5jb2xsZWN0aW9uID0gdGhpcy5fZGVmaW5pdGl2ZUNvbGxlY3Rpb24oci50eXBlKTtcbiAgICAgICAgYXNzZXJ0KGAnJHtyLnR5cGV9JyBkb2VzIG5vdCBoYXZlIGEgZGVmaW5pdGl2ZSBjb2xsZWN0aW9uYCwgcy5jb2xsZWN0aW9uKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgY29sbGVjdGlvbiBpcyB1bnNwZWNpZmllZCwgdXNlIHRoZSBkZWZpbml0aXZlIGNvbGxlY3Rpb24gZm9yIHRoZSBgdHlwZWBcbiAgICBpZiAoIXMuY29sbGVjdGlvbikge1xuICAgICAgcy5jb2xsZWN0aW9uID0gdGhpcy5fZGVmaW5pdGl2ZUNvbGxlY3Rpb24ocy50eXBlKTtcbiAgICAgIGFzc2VydChgJyR7cy50eXBlfScgZG9lcyBub3QgaGF2ZSBhIGRlZmluaXRpdmUgY29sbGVjdGlvbmAsIHMuY29sbGVjdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKCFzLnJvb3ROYW1lKSB7XG4gICAgICAvLyBJZiB0aGUgcm9vdCBuYW1lIGlzIHVuc3BlY2lmaWVkLCB0cnkgdGhlIGFwcCdzIGByb290TmFtZWAgZmlyc3RcbiAgICAgIHMucm9vdE5hbWUgPSB0aGlzLmNvbmZpZy5hcHAucm9vdE5hbWUgfHwgJ2FwcCc7XG4gICAgICBpZiAocmVzdWx0ID0gdGhpcy5fc2VyaWFsaXplQW5kVmVyaWZ5KHMpKSB7IHJldHVybiByZXN1bHQ7IH1cblxuICAgICAgLy8gVGhlbiBsb29rIGZvciBhbiBhZGRvbiB3aXRoIGEgbWF0Y2hpbmcgYHJvb3ROYW1lYFxuICAgICAgbGV0IGFkZG9uRGVmO1xuICAgICAgaWYgKHMubmFtZXNwYWNlKSB7XG4gICAgICAgIGFkZG9uRGVmID0gdGhpcy5jb25maWcuYWRkb25zICYmIHRoaXMuY29uZmlnLmFkZG9uc1tzLm5hbWVzcGFjZV07XG4gICAgICAgIHMucm9vdE5hbWUgPSBzLm5hbWVzcGFjZTtcbiAgICAgICAgcy5uYW1lc3BhY2UgPSB1bmRlZmluZWQ7XG5cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFkZG9uRGVmID0gdGhpcy5jb25maWcuYWRkb25zICYmIHRoaXMuY29uZmlnLmFkZG9uc1tzLm5hbWVdO1xuICAgICAgICBzLnJvb3ROYW1lID0gcy5uYW1lO1xuICAgICAgICBzLm5hbWUgPSAnbWFpbic7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHJlc3VsdCA9IHRoaXMuX3NlcmlhbGl6ZUFuZFZlcmlmeShzKSkgeyByZXR1cm4gcmVzdWx0OyB9XG4gIH1cblxuICByZXRyaWV2ZShzcGVjaWZpZXI6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMucmVnaXN0cnkuZ2V0KHNwZWNpZmllcik7XG4gIH1cblxuICByZXNvbHZlKHNwZWNpZmllcjogc3RyaW5nLCByZWZlcnJlcj86IHN0cmluZyk6IGFueSB7XG4gICAgbGV0IGlkID0gdGhpcy5pZGVudGlmeShzcGVjaWZpZXIsIHJlZmVycmVyKTtcbiAgICBpZiAoaWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnJldHJpZXZlKGlkKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9kZWZpbml0aXZlQ29sbGVjdGlvbih0eXBlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCB0eXBlRGVmID0gdGhpcy5jb25maWcudHlwZXNbdHlwZV07XG4gICAgYXNzZXJ0KGAnJHt0eXBlfScgaXMgbm90IGEgcmVjb2duaXplZCB0eXBlYCwgdHlwZURlZik7XG4gICAgcmV0dXJuIHR5cGVEZWYuZGVmaW5pdGl2ZUNvbGxlY3Rpb247XG4gIH1cblxuICBwcml2YXRlIF9zZXJpYWxpemVBbmRWZXJpZnkoc3BlY2lmaWVyOiBTcGVjaWZpZXIpOiBzdHJpbmcge1xuICAgIGxldCBzZXJpYWxpemVkID0gc2VyaWFsaXplU3BlY2lmaWVyKHNwZWNpZmllcik7XG4gICAgaWYgKHRoaXMucmVnaXN0cnkuaGFzKHNlcmlhbGl6ZWQpKSB7XG4gICAgICByZXR1cm4gc2VyaWFsaXplZDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzcmMvcmVzb2x2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsQUFBTyxBQUdMLEFBQXlCLEFBQ3pCLEFBQXlCLEFBQ3pCLEFBQW9CLEFBQ3BCLEFBQWtCLEFBQ25CLEFBQU0sQUFBYSxBQUFDOztBQUNyQixBQUFPLEFBQUUsQUFBTSxBQUFFLEFBQU0sQUFBZSxBQUFDLEFBSXZDLEFBQU0sQUFBQyxBQUFPOzs7Ozs7OzsyQkFJWjtzQkFBWSxBQUE2QixRQUFFLEFBQXdCOzhCQUNqRSxBQUFJOzthQUFDLEFBQU0sU0FBRyxBQUFNLEFBQUMsQUFDckIsQUFBSTthQUFDLEFBQVEsV0FBRyxBQUFRLEFBQUMsQUFDM0IsQUFBQzs7O3VCQUVELEFBQVEsNkJBQUMsQUFBaUIsV0FBRSxBQUFpQixVQUMzQyxBQUFFLEFBQUM7WUFBQyxBQUF5QixtQ0FBQyxBQUFTLEFBQUMsQUFBQyxZQUFDLEFBQUMsQUFDekMsQUFBTTttQkFBQyxBQUFTLEFBQUMsQUFDbkIsQUFBQztBQUVEO1lBQUksQUFBQyxJQUFHLEFBQW9CLDhCQUFDLEFBQVMsQUFBQyxBQUFDLEFBQ3hDO1lBQUksQUFBYyxBQUFDLGNBRW5CLEFBQUUsQUFBQztZQUFDLEFBQVEsQUFBQyxVQUFDLEFBQUMsQUFDYjtnQkFBSSxBQUFDLElBQUcsQUFBb0IsOEJBQUMsQUFBUSxBQUFDLEFBQUMsQUFFdkMsQUFBRSxBQUFDO2dCQUFDLEFBQXlCLG1DQUFDLEFBQUMsQUFBQyxBQUFDLElBQUMsQUFBQyxBQUNqQyxBQUFNO21DQUFDLEFBQXlHLDJHQUFFLEFBQUMsRUFBQyxBQUFRLGFBQUssQUFBUyxhQUFJLEFBQUMsRUFBQyxBQUFVLGVBQUssQUFBUyxhQUFJLEFBQUMsRUFBQyxBQUFTLGNBQUssQUFBUyxBQUFDLEFBQUMsQUFFdk0sQUFBQztrQkFBQyxBQUFRLFdBQUcsQUFBQyxFQUFDLEFBQVEsQUFBQyxBQUN4QixBQUFD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QUFZLE1BQ3hDO1lBQUksQUFBTyxVQUFHLEFBQUksS0FBQyxBQUFNLE9BQUMsQUFBSyxNQUFDLEFBQUksQUFBQyxBQUFDLEFBQ3RDLEFBQU0sQUFBQztrQ0FBSSxBQUFJLEFBQTRCLHNDQUFFLEFBQU8sQUFBQyxBQUFDLEFBQ3RELEFBQU07ZUFBQyxBQUFPLFFBQUMsQUFBb0IsQUFBQyxBQUN0QyxBQUFDOzs7dUJBRU8sQUFBbUIsbURBQUMsQUFBb0IsV0FDOUM7WUFBSSxBQUFVLGFBQUcsQUFBa0IsNEJBQUMsQUFBUyxBQUFDLEFBQUMsQUFDL0MsQUFBRSxBQUFDO1lBQUMsQUFBSSxLQUFDLEFBQVEsU0FBQyxBQUFHLElBQUMsQUFBVSxBQUFDLEFBQUMsYUFBQyxBQUFDLEFBQ2xDLEFBQU07bUJBQUMsQUFBVSxBQUFDLEFBQ3BCLEFBQUMsQUFDSDtBQUFDLEFBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBSZXNvbHZlciBhcyBJUmVzb2x2ZXIsXG4gIFNwZWNpZmllcixcbiAgaXNTcGVjaWZpZXJTdHJpbmdBYnNvbHV0ZSxcbiAgaXNTcGVjaWZpZXJPYmplY3RBYnNvbHV0ZSxcbiAgZGVzZXJpYWxpemVTcGVjaWZpZXIsXG4gIHNlcmlhbGl6ZVNwZWNpZmllclxufSBmcm9tICdAZ2xpbW1lci9kaSc7XG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tICcuL3V0aWxzL2RlYnVnJztcbmltcG9ydCB7IE1vZHVsZVJlZ2lzdHJ5IH0gZnJvbSAnLi9tb2R1bGUtcmVnaXN0cnknO1xuaW1wb3J0IHsgUmVzb2x2ZXJDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9yZXNvbHZlci1jb25maWd1cmF0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVzb2x2ZXIgaW1wbGVtZW50cyBJUmVzb2x2ZXIge1xuICBwdWJsaWMgY29uZmlnOiBSZXNvbHZlckNvbmZpZ3VyYXRpb247XG4gIHB1YmxpYyByZWdpc3RyeTogTW9kdWxlUmVnaXN0cnk7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBSZXNvbHZlckNvbmZpZ3VyYXRpb24sIHJlZ2lzdHJ5OiBNb2R1bGVSZWdpc3RyeSkge1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgIHRoaXMucmVnaXN0cnkgPSByZWdpc3RyeTtcbiAgfVxuXG4gIGlkZW50aWZ5KHNwZWNpZmllcjogc3RyaW5nLCByZWZlcnJlcj86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKGlzU3BlY2lmaWVyU3RyaW5nQWJzb2x1dGUoc3BlY2lmaWVyKSkge1xuICAgICAgcmV0dXJuIHNwZWNpZmllcjtcbiAgICB9XG5cbiAgICBsZXQgcyA9IGRlc2VyaWFsaXplU3BlY2lmaWVyKHNwZWNpZmllcik7XG4gICAgbGV0IHJlc3VsdDogc3RyaW5nO1xuXG4gICAgaWYgKHJlZmVycmVyKSB7XG4gICAgICBsZXQgciA9IGRlc2VyaWFsaXplU3BlY2lmaWVyKHJlZmVycmVyKTtcblxuICAgICAgaWYgKGlzU3BlY2lmaWVyT2JqZWN0QWJzb2x1dGUocikpIHtcbiAgICAgICAgYXNzZXJ0KCdTcGVjaWZpZXIgbXVzdCBub3QgaW5jbHVkZSBhIHJvb3ROYW1lLCBjb2xsZWN0aW9uLCBvciBuYW1lc3BhY2Ugd2hlbiBjb21iaW5lZCB3aXRoIGFuIGFic29sdXRlIHJlZmVycmVyJywgcy5yb290TmFtZSA9PT0gdW5kZWZpbmVkICYmIHMuY29sbGVjdGlvbiA9PT0gdW5kZWZpbmVkICYmIHMubmFtZXNwYWNlID09PSB1bmRlZmluZWQpO1xuXG4gICAgICAgIHMucm9vdE5hbWUgPSByLnJvb3ROYW1lO1xuICAgICAgICBzLmNvbGxlY3Rpb24gPSByLmNvbGxlY3Rpb247XG4gICAgICAgIGxldCBkZWZpbml0aXZlQ29sbGVjdGlvbiA9IHRoaXMuX2RlZmluaXRpdmVDb2xsZWN0aW9uKHMudHlwZSk7XG5cbiAgICAgICAgaWYgKCFzLm5hbWUpIHtcbiAgICAgICAgICAvKlxuICAgICAgICAgICAqIEZvciBzcGVjaWZpZXJzIHdpdGhvdXQgYSBuYW1lIHVzZSB0aGUgcmVmZXJyZXIncyBuYW1lIGFuZFxuICAgICAgICAgICAqIGRvIG5vdCBmYWxsYmFjayB0byBhbnkgb3RoZXIgcmVzb2x1dGlvbiBydWxlcy5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBzLm5hbWVzcGFjZSA9IHIubmFtZXNwYWNlO1xuICAgICAgICAgIHMubmFtZSA9IHIubmFtZTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fc2VyaWFsaXplQW5kVmVyaWZ5KHMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcy5uYW1lc3BhY2UgPSByLm5hbWVzcGFjZSA/IHIubmFtZXNwYWNlICsgJy8nICsgci5uYW1lIDogci5uYW1lO1xuICAgICAgICBpZiAocy5jb2xsZWN0aW9uID09PSBkZWZpbml0aXZlQ29sbGVjdGlvbikge1xuICAgICAgICAgIC8qXG4gICAgICAgICAgICogRm9yIHNwZWNpZmllcnMgd2l0aCBhIG5hbWUsIHRyeSBsb2NhbCByZXNvbHV0aW9uLiBCYXNlZCBvblxuICAgICAgICAgICAqIHRoZSByZWZlcnJlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBpZiAocmVzdWx0ID0gdGhpcy5fc2VyaWFsaXplQW5kVmVyaWZ5KHMpKSB7IHJldHVybiByZXN1bHQ7IH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIExvb2sgZm9yIGEgcHJpdmF0ZSBjb2xsZWN0aW9uIGluIHRoZSByZWZlcnJlcidzIG5hbWVzcGFjZVxuICAgICAgICBpZiAoZGVmaW5pdGl2ZUNvbGxlY3Rpb24pIHtcbiAgICAgICAgICBzLm5hbWVzcGFjZSArPSAnLy0nICsgZGVmaW5pdGl2ZUNvbGxlY3Rpb247XG4gICAgICAgICAgaWYgKHJlc3VsdCA9IHRoaXMuX3NlcmlhbGl6ZUFuZFZlcmlmeShzKSkgeyByZXR1cm4gcmVzdWx0OyB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBCZWNhdXNlIGxvY2FsIGFuZCBwcml2YXRlIHJlc29sdXRpb24gaGFzIGZhaWxlZCwgY2xlYXIgYWxsIGJ1dCBgbmFtZWAgYW5kIGB0eXBlYFxuICAgICAgICAvLyB0byBwcm9jZWVkIHdpdGggdG9wLWxldmVsIHJlc29sdXRpb25cbiAgICAgICAgcy5yb290TmFtZSA9IHMuY29sbGVjdGlvbiA9IHMubmFtZXNwYWNlID0gdW5kZWZpbmVkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXNzZXJ0KCdSZWZlcnJlciBtdXN0IGVpdGhlciBiZSBcImFic29sdXRlXCIgb3IgaW5jbHVkZSBhIGB0eXBlYCB0byBkZXRlcm1pbmUgdGhlIGFzc29jaWF0ZWQgdHlwZScsIHIudHlwZSk7XG5cbiAgICAgICAgLy8gTG9vayBpbiB0aGUgZGVmaW5pdGl2ZSBjb2xsZWN0aW9uIGZvciB0aGUgYXNzb2NpYXRlZCB0eXBlXG4gICAgICAgIHMuY29sbGVjdGlvbiA9IHRoaXMuX2RlZmluaXRpdmVDb2xsZWN0aW9uKHIudHlwZSk7XG4gICAgICAgIGFzc2VydChgJyR7ci50eXBlfScgZG9lcyBub3QgaGF2ZSBhIGRlZmluaXRpdmUgY29sbGVjdGlvbmAsIHMuY29sbGVjdGlvbik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIGNvbGxlY3Rpb24gaXMgdW5zcGVjaWZpZWQsIHVzZSB0aGUgZGVmaW5pdGl2ZSBjb2xsZWN0aW9uIGZvciB0aGUgYHR5cGVgXG4gICAgaWYgKCFzLmNvbGxlY3Rpb24pIHtcbiAgICAgIHMuY29sbGVjdGlvbiA9IHRoaXMuX2RlZmluaXRpdmVDb2xsZWN0aW9uKHMudHlwZSk7XG4gICAgICBhc3NlcnQoYCcke3MudHlwZX0nIGRvZXMgbm90IGhhdmUgYSBkZWZpbml0aXZlIGNvbGxlY3Rpb25gLCBzLmNvbGxlY3Rpb24pO1xuICAgIH1cblxuICAgIGlmICghcy5yb290TmFtZSkge1xuICAgICAgLy8gSWYgdGhlIHJvb3QgbmFtZSBpcyB1bnNwZWNpZmllZCwgdHJ5IHRoZSBhcHAncyBgcm9vdE5hbWVgIGZpcnN0XG4gICAgICBzLnJvb3ROYW1lID0gdGhpcy5jb25maWcuYXBwLnJvb3ROYW1lIHx8ICdhcHAnO1xuICAgICAgaWYgKHJlc3VsdCA9IHRoaXMuX3NlcmlhbGl6ZUFuZFZlcmlmeShzKSkgeyByZXR1cm4gcmVzdWx0OyB9XG5cbiAgICAgIC8vIFRoZW4gbG9vayBmb3IgYW4gYWRkb24gd2l0aCBhIG1hdGNoaW5nIGByb290TmFtZWBcbiAgICAgIGxldCBhZGRvbkRlZjtcbiAgICAgIGlmIChzLm5hbWVzcGFjZSkge1xuICAgICAgICBhZGRvbkRlZiA9IHRoaXMuY29uZmlnLmFkZG9ucyAmJiB0aGlzLmNvbmZpZy5hZGRvbnNbcy5uYW1lc3BhY2VdO1xuICAgICAgICBzLnJvb3ROYW1lID0gcy5uYW1lc3BhY2U7XG4gICAgICAgIHMubmFtZXNwYWNlID0gdW5kZWZpbmVkO1xuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhZGRvbkRlZiA9IHRoaXMuY29uZmlnLmFkZG9ucyAmJiB0aGlzLmNvbmZpZy5hZGRvbnNbcy5uYW1lXTtcbiAgICAgICAgcy5yb290TmFtZSA9IHMubmFtZTtcbiAgICAgICAgcy5uYW1lID0gJ21haW4nO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChyZXN1bHQgPSB0aGlzLl9zZXJpYWxpemVBbmRWZXJpZnkocykpIHsgcmV0dXJuIHJlc3VsdDsgfVxuICB9XG5cbiAgcmV0cmlldmUoc3BlY2lmaWVyOiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnJlZ2lzdHJ5LmdldChzcGVjaWZpZXIpO1xuICB9XG5cbiAgcmVzb2x2ZShzcGVjaWZpZXI6IHN0cmluZywgcmVmZXJyZXI/OiBzdHJpbmcpOiBhbnkge1xuICAgIGxldCBpZCA9IHRoaXMuaWRlbnRpZnkoc3BlY2lmaWVyLCByZWZlcnJlcik7XG4gICAgaWYgKGlkKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXRyaWV2ZShpZCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZGVmaW5pdGl2ZUNvbGxlY3Rpb24odHlwZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgdHlwZURlZiA9IHRoaXMuY29uZmlnLnR5cGVzW3R5cGVdO1xuICAgIGFzc2VydChgJyR7dHlwZX0nIGlzIG5vdCBhIHJlY29nbml6ZWQgdHlwZWAsIHR5cGVEZWYpO1xuICAgIHJldHVybiB0eXBlRGVmLmRlZmluaXRpdmVDb2xsZWN0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2VyaWFsaXplQW5kVmVyaWZ5KHNwZWNpZmllcjogU3BlY2lmaWVyKTogc3RyaW5nIHtcbiAgICBsZXQgc2VyaWFsaXplZCA9IHNlcmlhbGl6ZVNwZWNpZmllcihzcGVjaWZpZXIpO1xuICAgIGlmICh0aGlzLnJlZ2lzdHJ5LmhhcyhzZXJpYWxpemVkKSkge1xuICAgICAgcmV0dXJuIHNlcmlhbGl6ZWQ7XG4gICAgfVxuICB9XG59XG4iXX0=

@@ -18,19 +18,27 @@ import { isSpecifierStringAbsolute, isSpecifierObjectAbsolute, deserializeSpecifier, serializeSpecifier } from '@glimmer/di';

assert('Specifier must not include a rootName, collection, or namespace when combined with an absolute referrer', s.rootName === undefined && s.collection === undefined && s.namespace === undefined);
// Look locally in the referrer's namespace
s.rootName = r.rootName;
s.collection = r.collection;
if (s.name) {
s.namespace = r.namespace ? r.namespace + '/' + r.name : r.name;
}
else {
let definitiveCollection = this._definitiveCollection(s.type);
if (!s.name) {
/*
* For specifiers without a name use the referrer's name and
* do not fallback to any other resolution rules.
*/
s.namespace = r.namespace;
s.name = r.name;
return this._serializeAndVerify(s);
}
if (result = this._serializeAndVerify(s)) {
return result;
s.namespace = r.namespace ? r.namespace + '/' + r.name : r.name;
if (s.collection === definitiveCollection) {
/*
* For specifiers with a name, try local resolution. Based on
* the referrer.
*/
if (result = this._serializeAndVerify(s)) {
return result;
}
}
// Look for a private collection in the referrer's namespace
let privateCollection = this._definitiveCollection(s.type);
if (privateCollection) {
s.namespace += '/-' + privateCollection;
if (definitiveCollection) {
s.namespace += '/-' + definitiveCollection;
if (result = this._serializeAndVerify(s)) {

@@ -100,2 +108,2 @@ return result;

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzcmMvcmVzb2x2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLHlCQUF5QixFQUN6Qix5QkFBeUIsRUFDekIsb0JBQW9CLEVBQ3BCLGtCQUFrQixFQUNuQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSXZDLE1BQU0sQ0FBQyxPQUFPO0lBSVosWUFBWSxNQUE2QixFQUFFLFFBQXdCO1FBQ2pFLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFFRCxRQUFRLENBQUMsU0FBaUIsRUFBRSxRQUFpQjtRQUMzQyxFQUFFLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekMsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBRUQsSUFBSSxDQUFDLEdBQUcsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDeEMsSUFBSSxNQUFjLENBQUM7UUFFbkIsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNiLElBQUksQ0FBQyxHQUFHLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXZDLEVBQUUsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDakMsTUFBTSxDQUFDLHlHQUF5RyxFQUFFLENBQUMsQ0FBQyxRQUFRLEtBQUssU0FBUyxJQUFJLENBQUMsQ0FBQyxVQUFVLEtBQUssU0FBUyxJQUFJLENBQUMsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUM7Z0JBRXZNLDJDQUEyQztnQkFDM0MsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDO2dCQUN4QixDQUFDLENBQUMs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LE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQztJQUN0QyxDQUFDO0lBRU8sbUJBQW1CLENBQUMsU0FBb0I7UUFDOUMsSUFBSSxVQUFVLEdBQUcsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0MsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFJlc29sdmVyIGFzIElSZXNvbHZlcixcbiAgU3BlY2lmaWVyLFxuICBpc1NwZWNpZmllclN0cmluZ0Fic29sdXRlLFxuICBpc1NwZWNpZmllck9iamVjdEFic29sdXRlLFxuICBkZXNlcmlhbGl6ZVNwZWNpZmllcixcbiAgc2VyaWFsaXplU3BlY2lmaWVyXG59IGZyb20gJ0BnbGltbWVyL2RpJztcbmltcG9ydCB7IGFzc2VydCB9IGZyb20gJy4vdXRpbHMvZGVidWcnO1xuaW1wb3J0IHsgTW9kdWxlUmVnaXN0cnkgfSBmcm9tICcuL21vZHVsZS1yZWdpc3RyeSc7XG5pbXBvcnQgeyBSZXNvbHZlckNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL3Jlc29sdmVyLWNvbmZpZ3VyYXRpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZXNvbHZlciBpbXBsZW1lbnRzIElSZXNvbHZlciB7XG4gIHB1YmxpYyBjb25maWc6IFJlc29sdmVyQ29uZmlndXJhdGlvbjtcbiAgcHVibGljIHJlZ2lzdHJ5OiBNb2R1bGVSZWdpc3RyeTtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IFJlc29sdmVyQ29uZmlndXJhdGlvbiwgcmVnaXN0cnk6IE1vZHVsZVJlZ2lzdHJ5KSB7XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgdGhpcy5yZWdpc3RyeSA9IHJlZ2lzdHJ5O1xuICB9XG5cbiAgaWRlbnRpZnkoc3BlY2lmaWVyOiBzdHJpbmcsIHJlZmVycmVyPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoaXNTcGVjaWZpZXJTdHJpbmdBYnNvbHV0ZShzcGVjaWZpZXIpKSB7XG4gICAgICByZXR1cm4gc3BlY2lmaWVyO1xuICAgIH1cblxuICAgIGxldCBzID0gZGVzZXJpYWxpemVTcGVjaWZpZXIoc3BlY2lmaWVyKTtcbiAgICBsZXQgcmVzdWx0OiBzdHJpbmc7XG5cbiAgICBpZiAocmVmZXJyZXIpIHtcbiAgICAgIGxldCByID0gZGVzZXJpYWxpemVTcGVjaWZpZXIocmVmZXJyZXIpO1xuXG4gICAgICBpZiAoaXNTcGVjaWZpZXJPYmplY3RBYnNvbHV0ZShyKSkge1xuICAgICAgICBhc3NlcnQoJ1NwZWNpZmllciBtdXN0IG5vdCBpbmNsdWRlIGEgcm9vdE5hbWUsIGNvbGxlY3Rpb24sIG9yIG5hbWVzcGFjZSB3aGVuIGNvbWJpbmVkIHdpdGggYW4gYWJzb2x1dGUgcmVmZXJyZXInLCBzLnJvb3ROYW1lID09PSB1bmRlZmluZWQgJiYgcy5jb2xsZWN0aW9uID09PSB1bmRlZmluZWQgJiYgcy5uYW1lc3BhY2UgPT09IHVuZGVmaW5lZCk7XG5cbiAgICAgICAgLy8gTG9vayBsb2NhbGx5IGluIHRoZSByZWZlcnJlcidzIG5hbWVzcGFjZVxuICAgICAgICBzLnJvb3ROYW1lID0gci5yb290TmFtZTtcbiAgICAgICAgcy5jb2xsZWN0aW9uID0gci5jb2xsZWN0aW9uO1xuICAgICAgICBpZiAocy5uYW1lKSB7XG4gICAgICAgICAgcy5uYW1lc3BhY2UgPSByLm5hbWVzcGFjZSA/IHIubmFtZXNwYWNlICsgJy8nICsgci5uYW1lIDogci5uYW1lO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHMubmFtZXNwYWNlID0gci5uYW1lc3BhY2U7XG4gICAgICAgICAgcy5uYW1lID0gci5uYW1lO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXN1bHQgPSB0aGlzLl9zZXJpYWxpemVBbmRWZXJpZnkocykpIHsgcmV0dXJuIHJlc3VsdDsgfVxuXG4gICAgICAgIC8vIExvb2sgZm9yIGEgcHJpdmF0ZSBjb2xsZWN0aW9uIGluIHRoZSByZWZlcnJlcidzIG5hbWVzcGFjZVxuICAgICAgICBsZXQgcHJpdmF0ZUNvbGxlY3Rpb24gPSB0aGlzLl9kZWZpbml0aXZlQ29sbGVjdGlvbihzLnR5cGUpO1xuICAgICAgICBpZiAocHJpdmF0ZUNvbGxlY3Rpb24pIHtcbiAgICAgICAgICBzLm5hbWVzcGFjZSArPSAnLy0nICsgcHJpdmF0ZUNvbGxlY3Rpb247XG4gICAgICAgICAgaWYgKHJlc3VsdCA9IHRoaXMuX3NlcmlhbGl6ZUFuZFZlcmlmeShzKSkgeyByZXR1cm4gcmVzdWx0OyB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBCZWNhdXNlIGxvY2FsIGFuZCBwcml2YXRlIHJlc29sdXRpb24gaGFzIGZhaWxlZCwgY2xlYXIgYWxsIGJ1dCBgbmFtZWAgYW5kIGB0eXBlYFxuICAgICAgICAvLyB0byBwcm9jZWVkIHdpdGggdG9wLWxldmVsIHJlc29sdXRpb25cbiAgICAgICAgcy5yb290TmFtZSA9IHMuY29sbGVjdGlvbiA9IHMubmFtZXNwYWNlID0gdW5kZWZpbmVkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXNzZXJ0KCdSZWZlcnJlciBtdXN0IGVpdGhlciBiZSBcImFic29sdXRlXCIgb3IgaW5jbHVkZSBhIGB0eXBlYCB0byBkZXRlcm1pbmUgdGhlIGFzc29jaWF0ZWQgdHlwZScsIHIudHlwZSk7XG5cbiAgICAgICAgLy8gTG9vayBpbiB0aGUgZGVmaW5pdGl2ZSBjb2xsZWN0aW9uIGZvciB0aGUgYXNzb2NpYXRlZCB0eXBlXG4gICAgICAgIHMuY29sbGVjdGlvbiA9IHRoaXMuX2RlZmluaXRpdmVDb2xsZWN0aW9uKHIudHlwZSk7XG4gICAgICAgIGFzc2VydChgJyR7ci50eXBlfScgZG9lcyBub3QgaGF2ZSBhIGRlZmluaXRpdmUgY29sbGVjdGlvbmAsIHMuY29sbGVjdGlvbik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIGNvbGxlY3Rpb24gaXMgdW5zcGVjaWZpZWQsIHVzZSB0aGUgZGVmaW5pdGl2ZSBjb2xsZWN0aW9uIGZvciB0aGUgYHR5cGVgXG4gICAgaWYgKCFzLmNvbGxlY3Rpb24pIHtcbiAgICAgIHMuY29sbGVjdGlvbiA9IHRoaXMuX2RlZmluaXRpdmVDb2xsZWN0aW9uKHMudHlwZSk7XG4gICAgICBhc3NlcnQoYCcke3MudHlwZX0nIGRvZXMgbm90IGhhdmUgYSBkZWZpbml0aXZlIGNvbGxlY3Rpb25gLCBzLmNvbGxlY3Rpb24pO1xuICAgIH1cblxuICAgIGlmICghcy5yb290TmFtZSkge1xuICAgICAgLy8gSWYgdGhlIHJvb3QgbmFtZSBpcyB1bnNwZWNpZmllZCwgdHJ5IHRoZSBhcHAncyBgcm9vdE5hbWVgIGZpcnN0XG4gICAgICBzLnJvb3ROYW1lID0gdGhpcy5jb25maWcuYXBwLnJvb3ROYW1lIHx8ICdhcHAnO1xuICAgICAgaWYgKHJlc3VsdCA9IHRoaXMuX3NlcmlhbGl6ZUFuZFZlcmlmeShzKSkgeyByZXR1cm4gcmVzdWx0OyB9XG5cbiAgICAgIC8vIFRoZW4gbG9vayBmb3IgYW4gYWRkb24gd2l0aCBhIG1hdGNoaW5nIGByb290TmFtZWBcbiAgICAgIGxldCBhZGRvbkRlZjtcbiAgICAgIGlmIChzLm5hbWVzcGFjZSkge1xuICAgICAgICBhZGRvbkRlZiA9IHRoaXMuY29uZmlnLmFkZG9ucyAmJiB0aGlzLmNvbmZpZy5hZGRvbnNbcy5uYW1lc3BhY2VdO1xuICAgICAgICBzLnJvb3ROYW1lID0gcy5uYW1lc3BhY2U7XG4gICAgICAgIHMubmFtZXNwYWNlID0gdW5kZWZpbmVkO1xuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhZGRvbkRlZiA9IHRoaXMuY29uZmlnLmFkZG9ucyAmJiB0aGlzLmNvbmZpZy5hZGRvbnNbcy5uYW1lXTtcbiAgICAgICAgcy5yb290TmFtZSA9IHMubmFtZTtcbiAgICAgICAgcy5uYW1lID0gJ21haW4nO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChyZXN1bHQgPSB0aGlzLl9zZXJpYWxpemVBbmRWZXJpZnkocykpIHsgcmV0dXJuIHJlc3VsdDsgfVxuICB9XG5cbiAgcmV0cmlldmUoc3BlY2lmaWVyOiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnJlZ2lzdHJ5LmdldChzcGVjaWZpZXIpO1xuICB9XG5cbiAgcmVzb2x2ZShzcGVjaWZpZXI6IHN0cmluZywgcmVmZXJyZXI/OiBzdHJpbmcpOiBhbnkge1xuICAgIGxldCBpZCA9IHRoaXMuaWRlbnRpZnkoc3BlY2lmaWVyLCByZWZlcnJlcik7XG4gICAgaWYgKGlkKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXRyaWV2ZShpZCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZGVmaW5pdGl2ZUNvbGxlY3Rpb24odHlwZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgdHlwZURlZiA9IHRoaXMuY29uZmlnLnR5cGVzW3R5cGVdO1xuICAgIGFzc2VydChgJyR7dHlwZX0nIGlzIG5vdCBhIHJlY29nbml6ZWQgdHlwZWAsIHR5cGVEZWYpO1xuICAgIHJldHVybiB0eXBlRGVmLmRlZmluaXRpdmVDb2xsZWN0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2VyaWFsaXplQW5kVmVyaWZ5KHNwZWNpZmllcjogU3BlY2lmaWVyKTogc3RyaW5nIHtcbiAgICBsZXQgc2VyaWFsaXplZCA9IHNlcmlhbGl6ZVNwZWNpZmllcihzcGVjaWZpZXIpO1xuICAgIGlmICh0aGlzLnJlZ2lzdHJ5LmhhcyhzZXJpYWxpemVkKSkge1xuICAgICAgcmV0dXJuIHNlcmlhbGl6ZWQ7XG4gICAgfVxuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzcmMvcmVzb2x2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLHlCQUF5QixFQUN6Qix5QkFBeUIsRUFDekIsb0JBQW9CLEVBQ3BCLGtCQUFrQixFQUNuQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSXZDLE1BQU0sQ0FBQyxPQUFPO0lBSVosWUFBWSxNQUE2QixFQUFFLFFBQXdCO1FBQ2pFLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFFRCxRQUFRLENBQUMsU0FBaUIsRUFBRSxRQUFpQjtRQUMzQyxFQUFFLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekMsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBRUQsSUFBSSxDQUFDLEdBQUcsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDeEMsSUFBSSxNQUFjLENBQUM7UUFFbkIsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNiLElBQUksQ0FBQyxHQUFHLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXZDLEVBQUUsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDakMsTUFBTSxDQUFDLHlHQUF5RyxFQUFFLENBQUMsQ0FBQyxRQUFRLEtBQUssU0FBUyxJQUFJLENBQUMsQ0FBQyxVQUFVLEtBQUssU0FBUyxJQUFJLENBQUMsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUM7Z0JBRXZNLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQztnQkFDeEIsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDO2dCQUM1QixJQUFJLG9CQUFvQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRTlELEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7b0JBQ1o7Ozt1QkFHRztvQkFDSCxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUM7b0JBQzFCLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztvQkFDaEIsTUFBTSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDckMsQ0FBQztnQkFFRCxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFNBQVMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNoRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxLQUFLLG9CQUFvQixDQUFDLENBQUMsQ0FBQztvQkFDMUM7Ozt1QkFHRztvQkFDSCxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFBQyxNQUFNLENBQUMsTUFBTSxDQUFDO29CQUFDLENBQUM7Z0JBQzlELENBQUM7Z0JBRUQsNERBQTREO2dCQUM1RCxFQUFFLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7b0JBQ3pCLENBQUMsQ0FBQyxTQUFTLElBQUksSUFBSSxHQUFHLG9CQUFvQixDQUFDO29CQUMzQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFBQyxNQUFNLENBQUMsTUFBTSxDQUFDO29CQUFDLENBQUM7Z0JBQzlELENBQUM7Z0JBRUQsbUZBQW1GO2dCQUNuRix1Q0FBdUM7Z0JBQ3ZDLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztZQUN0RCxDQUFDO1lBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ04sTUFBTSxDQUFDLHlGQUF5RixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFFMUcsNERBQTREO2dCQUM1RCxDQUFDLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2xELE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLHlDQUF5QyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM1RSxDQUFDO1FBQ0gsQ0FBQztRQUVELGlGQUFpRjtRQUNqRixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1lBQ2xCLENBQUMsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsRCxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSx5Q0FBeUMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDNUUsQ0FBQztRQUVELEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDaEIsa0VBQWtFO1lBQ2xFLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQztZQUMvQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQUMsQ0FBQztZQUU1RCxvREFBb0Q7WUFDcEQsSUFBSSxRQUFRLENBQUM7WUFDYixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFDaEIsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDakUsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUN6QixDQUFDLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztZQUUxQixDQUFDO1lBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ04sUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDNUQsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNwQixDQUFDLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztZQUNsQixDQUFDO1FBQ0gsQ0FBQztRQUVELEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELFFBQVEsQ0FBQyxTQUFpQjtRQUN4QixNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELE9BQU8sQ0FBQyxTQUFpQixFQUFFLFFBQWlCO1FBQzFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzVDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDUCxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUVPLHFCQUFxQixDQUFDLElBQVk7UUFDeEMsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsTUFBTSxDQUFDLElBQUksSUFBSSw0QkFBNEIsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN0RCxNQUFNLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDO0lBQ3RDLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxTQUFvQjtRQUM5QyxJQUFJLFVBQVUsR0FBRyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMvQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEMsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgUmVzb2x2ZXIgYXMgSVJlc29sdmVyLFxuICBTcGVjaWZpZXIsXG4gIGlzU3BlY2lmaWVyU3RyaW5nQWJzb2x1dGUsXG4gIGlzU3BlY2lmaWVyT2JqZWN0QWJzb2x1dGUsXG4gIGRlc2VyaWFsaXplU3BlY2lmaWVyLFxuICBzZXJpYWxpemVTcGVjaWZpZXJcbn0gZnJvbSAnQGdsaW1tZXIvZGknO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnLi91dGlscy9kZWJ1Zyc7XG5pbXBvcnQgeyBNb2R1bGVSZWdpc3RyeSB9IGZyb20gJy4vbW9kdWxlLXJlZ2lzdHJ5JztcbmltcG9ydCB7IFJlc29sdmVyQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vcmVzb2x2ZXItY29uZmlndXJhdGlvbic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlc29sdmVyIGltcGxlbWVudHMgSVJlc29sdmVyIHtcbiAgcHVibGljIGNvbmZpZzogUmVzb2x2ZXJDb25maWd1cmF0aW9uO1xuICBwdWJsaWMgcmVnaXN0cnk6IE1vZHVsZVJlZ2lzdHJ5O1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogUmVzb2x2ZXJDb25maWd1cmF0aW9uLCByZWdpc3RyeTogTW9kdWxlUmVnaXN0cnkpIHtcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLnJlZ2lzdHJ5ID0gcmVnaXN0cnk7XG4gIH1cblxuICBpZGVudGlmeShzcGVjaWZpZXI6IHN0cmluZywgcmVmZXJyZXI/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChpc1NwZWNpZmllclN0cmluZ0Fic29sdXRlKHNwZWNpZmllcikpIHtcbiAgICAgIHJldHVybiBzcGVjaWZpZXI7XG4gICAgfVxuXG4gICAgbGV0IHMgPSBkZXNlcmlhbGl6ZVNwZWNpZmllcihzcGVjaWZpZXIpO1xuICAgIGxldCByZXN1bHQ6IHN0cmluZztcblxuICAgIGlmIChyZWZlcnJlcikge1xuICAgICAgbGV0IHIgPSBkZXNlcmlhbGl6ZVNwZWNpZmllcihyZWZlcnJlcik7XG5cbiAgICAgIGlmIChpc1NwZWNpZmllck9iamVjdEFic29sdXRlKHIpKSB7XG4gICAgICAgIGFzc2VydCgnU3BlY2lmaWVyIG11c3Qgbm90IGluY2x1ZGUgYSByb290TmFtZSwgY29sbGVjdGlvbiwgb3IgbmFtZXNwYWNlIHdoZW4gY29tYmluZWQgd2l0aCBhbiBhYnNvbHV0ZSByZWZlcnJlcicsIHMucm9vdE5hbWUgPT09IHVuZGVmaW5lZCAmJiBzLmNvbGxlY3Rpb24gPT09IHVuZGVmaW5lZCAmJiBzLm5hbWVzcGFjZSA9PT0gdW5kZWZpbmVkKTtcblxuICAgICAgICBzLnJvb3ROYW1lID0gci5yb290TmFtZTtcbiAgICAgICAgcy5jb2xsZWN0aW9uID0gci5jb2xsZWN0aW9uO1xuICAgICAgICBsZXQgZGVmaW5pdGl2ZUNvbGxlY3Rpb24gPSB0aGlzLl9kZWZpbml0aXZlQ29sbGVjdGlvbihzLnR5cGUpO1xuXG4gICAgICAgIGlmICghcy5uYW1lKSB7XG4gICAgICAgICAgLypcbiAgICAgICAgICAgKiBGb3Igc3BlY2lmaWVycyB3aXRob3V0IGEgbmFtZSB1c2UgdGhlIHJlZmVycmVyJ3MgbmFtZSBhbmRcbiAgICAgICAgICAgKiBkbyBub3QgZmFsbGJhY2sgdG8gYW55IG90aGVyIHJlc29sdXRpb24gcnVsZXMuXG4gICAgICAgICAgICovXG4gICAgICAgICAgcy5uYW1lc3BhY2UgPSByLm5hbWVzcGFjZTtcbiAgICAgICAgICBzLm5hbWUgPSByLm5hbWU7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3NlcmlhbGl6ZUFuZFZlcmlmeShzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHMubmFtZXNwYWNlID0gci5uYW1lc3BhY2UgPyByLm5hbWVzcGFjZSArICcvJyArIHIubmFtZSA6IHIubmFtZTtcbiAgICAgICAgaWYgKHMuY29sbGVjdGlvbiA9PT0gZGVmaW5pdGl2ZUNvbGxlY3Rpb24pIHtcbiAgICAgICAgICAvKlxuICAgICAgICAgICAqIEZvciBzcGVjaWZpZXJzIHdpdGggYSBuYW1lLCB0cnkgbG9jYWwgcmVzb2x1dGlvbi4gQmFzZWQgb25cbiAgICAgICAgICAgKiB0aGUgcmVmZXJyZXIuXG4gICAgICAgICAgICovXG4gICAgICAgICAgaWYgKHJlc3VsdCA9IHRoaXMuX3NlcmlhbGl6ZUFuZFZlcmlmeShzKSkgeyByZXR1cm4gcmVzdWx0OyB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBMb29rIGZvciBhIHByaXZhdGUgY29sbGVjdGlvbiBpbiB0aGUgcmVmZXJyZXIncyBuYW1lc3BhY2VcbiAgICAgICAgaWYgKGRlZmluaXRpdmVDb2xsZWN0aW9uKSB7XG4gICAgICAgICAgcy5uYW1lc3BhY2UgKz0gJy8tJyArIGRlZmluaXRpdmVDb2xsZWN0aW9uO1xuICAgICAgICAgIGlmIChyZXN1bHQgPSB0aGlzLl9zZXJpYWxpemVBbmRWZXJpZnkocykpIHsgcmV0dXJuIHJlc3VsdDsgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQmVjYXVzZSBsb2NhbCBhbmQgcHJpdmF0ZSByZXNvbHV0aW9uIGhhcyBmYWlsZWQsIGNsZWFyIGFsbCBidXQgYG5hbWVgIGFuZCBgdHlwZWBcbiAgICAgICAgLy8gdG8gcHJvY2VlZCB3aXRoIHRvcC1sZXZlbCByZXNvbHV0aW9uXG4gICAgICAgIHMucm9vdE5hbWUgPSBzLmNvbGxlY3Rpb24gPSBzLm5hbWVzcGFjZSA9IHVuZGVmaW5lZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFzc2VydCgnUmVmZXJyZXIgbXVzdCBlaXRoZXIgYmUgXCJhYnNvbHV0ZVwiIG9yIGluY2x1ZGUgYSBgdHlwZWAgdG8gZGV0ZXJtaW5lIHRoZSBhc3NvY2lhdGVkIHR5cGUnLCByLnR5cGUpO1xuXG4gICAgICAgIC8vIExvb2sgaW4gdGhlIGRlZmluaXRpdmUgY29sbGVjdGlvbiBmb3IgdGhlIGFzc29jaWF0ZWQgdHlwZVxuICAgICAgICBzLmNvbGxlY3Rpb24gPSB0aGlzLl9kZWZpbml0aXZlQ29sbGVjdGlvbihyLnR5cGUpO1xuICAgICAgICBhc3NlcnQoYCcke3IudHlwZX0nIGRvZXMgbm90IGhhdmUgYSBkZWZpbml0aXZlIGNvbGxlY3Rpb25gLCBzLmNvbGxlY3Rpb24pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIHRoZSBjb2xsZWN0aW9uIGlzIHVuc3BlY2lmaWVkLCB1c2UgdGhlIGRlZmluaXRpdmUgY29sbGVjdGlvbiBmb3IgdGhlIGB0eXBlYFxuICAgIGlmICghcy5jb2xsZWN0aW9uKSB7XG4gICAgICBzLmNvbGxlY3Rpb24gPSB0aGlzLl9kZWZpbml0aXZlQ29sbGVjdGlvbihzLnR5cGUpO1xuICAgICAgYXNzZXJ0KGAnJHtzLnR5cGV9JyBkb2VzIG5vdCBoYXZlIGEgZGVmaW5pdGl2ZSBjb2xsZWN0aW9uYCwgcy5jb2xsZWN0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAoIXMucm9vdE5hbWUpIHtcbiAgICAgIC8vIElmIHRoZSByb290IG5hbWUgaXMgdW5zcGVjaWZpZWQsIHRyeSB0aGUgYXBwJ3MgYHJvb3ROYW1lYCBmaXJzdFxuICAgICAgcy5yb290TmFtZSA9IHRoaXMuY29uZmlnLmFwcC5yb290TmFtZSB8fCAnYXBwJztcbiAgICAgIGlmIChyZXN1bHQgPSB0aGlzLl9zZXJpYWxpemVBbmRWZXJpZnkocykpIHsgcmV0dXJuIHJlc3VsdDsgfVxuXG4gICAgICAvLyBUaGVuIGxvb2sgZm9yIGFuIGFkZG9uIHdpdGggYSBtYXRjaGluZyBgcm9vdE5hbWVgXG4gICAgICBsZXQgYWRkb25EZWY7XG4gICAgICBpZiAocy5uYW1lc3BhY2UpIHtcbiAgICAgICAgYWRkb25EZWYgPSB0aGlzLmNvbmZpZy5hZGRvbnMgJiYgdGhpcy5jb25maWcuYWRkb25zW3MubmFtZXNwYWNlXTtcbiAgICAgICAgcy5yb290TmFtZSA9IHMubmFtZXNwYWNlO1xuICAgICAgICBzLm5hbWVzcGFjZSA9IHVuZGVmaW5lZDtcblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWRkb25EZWYgPSB0aGlzLmNvbmZpZy5hZGRvbnMgJiYgdGhpcy5jb25maWcuYWRkb25zW3MubmFtZV07XG4gICAgICAgIHMucm9vdE5hbWUgPSBzLm5hbWU7XG4gICAgICAgIHMubmFtZSA9ICdtYWluJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocmVzdWx0ID0gdGhpcy5fc2VyaWFsaXplQW5kVmVyaWZ5KHMpKSB7IHJldHVybiByZXN1bHQ7IH1cbiAgfVxuXG4gIHJldHJpZXZlKHNwZWNpZmllcjogc3RyaW5nKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5yZWdpc3RyeS5nZXQoc3BlY2lmaWVyKTtcbiAgfVxuXG4gIHJlc29sdmUoc3BlY2lmaWVyOiBzdHJpbmcsIHJlZmVycmVyPzogc3RyaW5nKTogYW55IHtcbiAgICBsZXQgaWQgPSB0aGlzLmlkZW50aWZ5KHNwZWNpZmllciwgcmVmZXJyZXIpO1xuICAgIGlmIChpZCkge1xuICAgICAgcmV0dXJuIHRoaXMucmV0cmlldmUoaWQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2RlZmluaXRpdmVDb2xsZWN0aW9uKHR5cGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IHR5cGVEZWYgPSB0aGlzLmNvbmZpZy50eXBlc1t0eXBlXTtcbiAgICBhc3NlcnQoYCcke3R5cGV9JyBpcyBub3QgYSByZWNvZ25pemVkIHR5cGVgLCB0eXBlRGVmKTtcbiAgICByZXR1cm4gdHlwZURlZi5kZWZpbml0aXZlQ29sbGVjdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgX3NlcmlhbGl6ZUFuZFZlcmlmeShzcGVjaWZpZXI6IFNwZWNpZmllcik6IHN0cmluZyB7XG4gICAgbGV0IHNlcmlhbGl6ZWQgPSBzZXJpYWxpemVTcGVjaWZpZXIoc3BlY2lmaWVyKTtcbiAgICBpZiAodGhpcy5yZWdpc3RyeS5oYXMoc2VyaWFsaXplZCkpIHtcbiAgICAgIHJldHVybiBzZXJpYWxpemVkO1xuICAgIH1cbiAgfVxufVxuIl19

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

assert('Specifier must not include a rootName, collection, or namespace when combined with an absolute referrer', s.rootName === undefined && s.collection === undefined && s.namespace === undefined);
// Look locally in the referrer's namespace
s.rootName = r.rootName;
s.collection = r.collection;
if (s.name) {
s.namespace = r.namespace ? r.namespace + '/' + r.name : r.name;
} else {
var definitiveCollection = this._definitiveCollection(s.type);
if (!s.name) {
/*
* For specifiers without a name use the referrer's name and
* do not fallback to any other resolution rules.
*/
s.namespace = r.namespace;
s.name = r.name;
return this._serializeAndVerify(s);
}
if (result = this._serializeAndVerify(s)) {
return result;
s.namespace = r.namespace ? r.namespace + '/' + r.name : r.name;
if (s.collection === definitiveCollection) {
/*
* For specifiers with a name, try local resolution. Based on
* the referrer.
*/
if (result = this._serializeAndVerify(s)) {
return result;
}
}
// Look for a private collection in the referrer's namespace
var privateCollection = this._definitiveCollection(s.type);
if (privateCollection) {
s.namespace += '/-' + privateCollection;
if (definitiveCollection) {
s.namespace += '/-' + definitiveCollection;
if (result = this._serializeAndVerify(s)) {

@@ -111,2 +120,2 @@ return result;

export default Resolver;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzcmMvcmVzb2x2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxBQUFPLFNBR0wsQUFBeUIsMkJBQ3pCLEFBQXlCLDJCQUN6QixBQUFvQixzQkFDcEIsQUFBa0IsQUFDbkIsMEJBQU0sQUFBYSxBQUFDO0FBQ3JCLEFBQU8sU0FBRSxBQUFNLEFBQUUsY0FBTSxBQUFlLEFBQUMsQUFJdkMsQUFBTSxBQUFDLEFBQU87OztBQUlaLHNCQUFZLEFBQTZCLFFBQUUsQUFBd0I7OztBQUNqRSxBQUFJLGFBQUMsQUFBTSxTQUFHLEFBQU0sQUFBQztBQUNyQixBQUFJLGFBQUMsQUFBUSxXQUFHLEFBQVEsQUFBQyxBQUMzQjtBQUFDOzt1QkFFRCxBQUFRLDZCQUFDLEFBQWlCLFdBQUUsQUFBaUI7QUFDM0MsQUFBRSxBQUFDLFlBQUMsQUFBeUIsMEJBQUMsQUFBUyxBQUFDLEFBQUMsWUFBQyxBQUFDO0FBQ3pDLEFBQU0sbUJBQUMsQUFBUyxBQUFDLEFBQ25CO0FBQUM7QUFFRCxZQUFJLEFBQUMsSUFBRyxBQUFvQixxQkFBQyxBQUFTLEFBQUMsQUFBQztBQUN4QyxZQUFJLEFBQWMsQUFBQztBQUVuQixBQUFFLEFBQUMsWUFBQyxBQUFRLEFBQUMsVUFBQyxBQUFDO0FBQ2IsZ0JBQUksQUFBQyxJQUFHLEFBQW9CLHFCQUFDLEFBQVEsQUFBQyxBQUFDO0FBRXZDLEFBQUUsQUFBQyxnQkFBQyxBQUF5QiwwQkFBQyxBQUFDLEFBQUMsQUFBQyxJQUFDLEFBQUM7QUFDakMsQUFBTSx1QkFBQyxBQUF5RywyR0FBRSxBQUFDLEVBQUMsQUFBUSxhQUFLLEFBQVMsYUFBSSxBQUFDLEVBQUMsQUFBVSxlQUFLLEFBQVMsYUFBSSxBQUFDLEVBQUMsQUFBUyxjQUFLLEFBQVMsQUFBQyxBQUFDO0FBRXZNLEFBQTJDO0FBQzNDLEFBQUMsa0JBQUMsQUFBUSxXQUFHLEFBQUMsRUFBQyxBQUFRLEFBQUM7QUFDeEIs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RCxBQUFNLGVBQUMsQUFBTyxRQUFDLEFBQW9CLEFBQUMsQUFDdEM7QUFBQzs7dUJBRU8sQUFBbUIsbURBQUMsQUFBb0I7QUFDOUMsWUFBSSxBQUFVLGFBQUcsQUFBa0IsbUJBQUMsQUFBUyxBQUFDLEFBQUM7QUFDL0MsQUFBRSxBQUFDLFlBQUMsQUFBSSxLQUFDLEFBQVEsU0FBQyxBQUFHLElBQUMsQUFBVSxBQUFDLEFBQUMsYUFBQyxBQUFDO0FBQ2xDLEFBQU0sbUJBQUMsQUFBVSxBQUFDLEFBQ3BCO0FBQUMsQUFDSDtBQUFDLEFBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBSZXNvbHZlciBhcyBJUmVzb2x2ZXIsXG4gIFNwZWNpZmllcixcbiAgaXNTcGVjaWZpZXJTdHJpbmdBYnNvbHV0ZSxcbiAgaXNTcGVjaWZpZXJPYmplY3RBYnNvbHV0ZSxcbiAgZGVzZXJpYWxpemVTcGVjaWZpZXIsXG4gIHNlcmlhbGl6ZVNwZWNpZmllclxufSBmcm9tICdAZ2xpbW1lci9kaSc7XG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tICcuL3V0aWxzL2RlYnVnJztcbmltcG9ydCB7IE1vZHVsZVJlZ2lzdHJ5IH0gZnJvbSAnLi9tb2R1bGUtcmVnaXN0cnknO1xuaW1wb3J0IHsgUmVzb2x2ZXJDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9yZXNvbHZlci1jb25maWd1cmF0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVzb2x2ZXIgaW1wbGVtZW50cyBJUmVzb2x2ZXIge1xuICBwdWJsaWMgY29uZmlnOiBSZXNvbHZlckNvbmZpZ3VyYXRpb247XG4gIHB1YmxpYyByZWdpc3RyeTogTW9kdWxlUmVnaXN0cnk7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBSZXNvbHZlckNvbmZpZ3VyYXRpb24sIHJlZ2lzdHJ5OiBNb2R1bGVSZWdpc3RyeSkge1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgIHRoaXMucmVnaXN0cnkgPSByZWdpc3RyeTtcbiAgfVxuXG4gIGlkZW50aWZ5KHNwZWNpZmllcjogc3RyaW5nLCByZWZlcnJlcj86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKGlzU3BlY2lmaWVyU3RyaW5nQWJzb2x1dGUoc3BlY2lmaWVyKSkge1xuICAgICAgcmV0dXJuIHNwZWNpZmllcjtcbiAgICB9XG5cbiAgICBsZXQgcyA9IGRlc2VyaWFsaXplU3BlY2lmaWVyKHNwZWNpZmllcik7XG4gICAgbGV0IHJlc3VsdDogc3RyaW5nO1xuXG4gICAgaWYgKHJlZmVycmVyKSB7XG4gICAgICBsZXQgciA9IGRlc2VyaWFsaXplU3BlY2lmaWVyKHJlZmVycmVyKTtcblxuICAgICAgaWYgKGlzU3BlY2lmaWVyT2JqZWN0QWJzb2x1dGUocikpIHtcbiAgICAgICAgYXNzZXJ0KCdTcGVjaWZpZXIgbXVzdCBub3QgaW5jbHVkZSBhIHJvb3ROYW1lLCBjb2xsZWN0aW9uLCBvciBuYW1lc3BhY2Ugd2hlbiBjb21iaW5lZCB3aXRoIGFuIGFic29sdXRlIHJlZmVycmVyJywgcy5yb290TmFtZSA9PT0gdW5kZWZpbmVkICYmIHMuY29sbGVjdGlvbiA9PT0gdW5kZWZpbmVkICYmIHMubmFtZXNwYWNlID09PSB1bmRlZmluZWQpO1xuXG4gICAgICAgIC8vIExvb2sgbG9jYWxseSBpbiB0aGUgcmVmZXJyZXIncyBuYW1lc3BhY2VcbiAgICAgICAgcy5yb290TmFtZSA9IHIucm9vdE5hbWU7XG4gICAgICAgIHMuY29sbGVjdGlvbiA9IHIuY29sbGVjdGlvbjtcbiAgICAgICAgaWYgKHMubmFtZSkge1xuICAgICAgICAgIHMubmFtZXNwYWNlID0gci5uYW1lc3BhY2UgPyByLm5hbWVzcGFjZSArICcvJyArIHIubmFtZSA6IHIubmFtZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzLm5hbWVzcGFjZSA9IHIubmFtZXNwYWNlO1xuICAgICAgICAgIHMubmFtZSA9IHIubmFtZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzdWx0ID0gdGhpcy5fc2VyaWFsaXplQW5kVmVyaWZ5KHMpKSB7IHJldHVybiByZXN1bHQ7IH1cblxuICAgICAgICAvLyBMb29rIGZvciBhIHByaXZhdGUgY29sbGVjdGlvbiBpbiB0aGUgcmVmZXJyZXIncyBuYW1lc3BhY2VcbiAgICAgICAgbGV0IHByaXZhdGVDb2xsZWN0aW9uID0gdGhpcy5fZGVmaW5pdGl2ZUNvbGxlY3Rpb24ocy50eXBlKTtcbiAgICAgICAgaWYgKHByaXZhdGVDb2xsZWN0aW9uKSB7XG4gICAgICAgICAgcy5uYW1lc3BhY2UgKz0gJy8tJyArIHByaXZhdGVDb2xsZWN0aW9uO1xuICAgICAgICAgIGlmIChyZXN1bHQgPSB0aGlzLl9zZXJpYWxpemVBbmRWZXJpZnkocykpIHsgcmV0dXJuIHJlc3VsdDsgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQmVjYXVzZSBsb2NhbCBhbmQgcHJpdmF0ZSByZXNvbHV0aW9uIGhhcyBmYWlsZWQsIGNsZWFyIGFsbCBidXQgYG5hbWVgIGFuZCBgdHlwZWBcbiAgICAgICAgLy8gdG8gcHJvY2VlZCB3aXRoIHRvcC1sZXZlbCByZXNvbHV0aW9uXG4gICAgICAgIHMucm9vdE5hbWUgPSBzLmNvbGxlY3Rpb24gPSBzLm5hbWVzcGFjZSA9IHVuZGVmaW5lZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFzc2VydCgnUmVmZXJyZXIgbXVzdCBlaXRoZXIgYmUgXCJhYnNvbHV0ZVwiIG9yIGluY2x1ZGUgYSBgdHlwZWAgdG8gZGV0ZXJtaW5lIHRoZSBhc3NvY2lhdGVkIHR5cGUnLCByLnR5cGUpO1xuXG4gICAgICAgIC8vIExvb2sgaW4gdGhlIGRlZmluaXRpdmUgY29sbGVjdGlvbiBmb3IgdGhlIGFzc29jaWF0ZWQgdHlwZVxuICAgICAgICBzLmNvbGxlY3Rpb24gPSB0aGlzLl9kZWZpbml0aXZlQ29sbGVjdGlvbihyLnR5cGUpO1xuICAgICAgICBhc3NlcnQoYCcke3IudHlwZX0nIGRvZXMgbm90IGhhdmUgYSBkZWZpbml0aXZlIGNvbGxlY3Rpb25gLCBzLmNvbGxlY3Rpb24pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIHRoZSBjb2xsZWN0aW9uIGlzIHVuc3BlY2lmaWVkLCB1c2UgdGhlIGRlZmluaXRpdmUgY29sbGVjdGlvbiBmb3IgdGhlIGB0eXBlYFxuICAgIGlmICghcy5jb2xsZWN0aW9uKSB7XG4gICAgICBzLmNvbGxlY3Rpb24gPSB0aGlzLl9kZWZpbml0aXZlQ29sbGVjdGlvbihzLnR5cGUpO1xuICAgICAgYXNzZXJ0KGAnJHtzLnR5cGV9JyBkb2VzIG5vdCBoYXZlIGEgZGVmaW5pdGl2ZSBjb2xsZWN0aW9uYCwgcy5jb2xsZWN0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAoIXMucm9vdE5hbWUpIHtcbiAgICAgIC8vIElmIHRoZSByb290IG5hbWUgaXMgdW5zcGVjaWZpZWQsIHRyeSB0aGUgYXBwJ3MgYHJvb3ROYW1lYCBmaXJzdFxuICAgICAgcy5yb290TmFtZSA9IHRoaXMuY29uZmlnLmFwcC5yb290TmFtZSB8fCAnYXBwJztcbiAgICAgIGlmIChyZXN1bHQgPSB0aGlzLl9zZXJpYWxpemVBbmRWZXJpZnkocykpIHsgcmV0dXJuIHJlc3VsdDsgfVxuXG4gICAgICAvLyBUaGVuIGxvb2sgZm9yIGFuIGFkZG9uIHdpdGggYSBtYXRjaGluZyBgcm9vdE5hbWVgXG4gICAgICBsZXQgYWRkb25EZWY7XG4gICAgICBpZiAocy5uYW1lc3BhY2UpIHtcbiAgICAgICAgYWRkb25EZWYgPSB0aGlzLmNvbmZpZy5hZGRvbnMgJiYgdGhpcy5jb25maWcuYWRkb25zW3MubmFtZXNwYWNlXTtcbiAgICAgICAgcy5yb290TmFtZSA9IHMubmFtZXNwYWNlO1xuICAgICAgICBzLm5hbWVzcGFjZSA9IHVuZGVmaW5lZDtcblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWRkb25EZWYgPSB0aGlzLmNvbmZpZy5hZGRvbnMgJiYgdGhpcy5jb25maWcuYWRkb25zW3MubmFtZV07XG4gICAgICAgIHMucm9vdE5hbWUgPSBzLm5hbWU7XG4gICAgICAgIHMubmFtZSA9ICdtYWluJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocmVzdWx0ID0gdGhpcy5fc2VyaWFsaXplQW5kVmVyaWZ5KHMpKSB7IHJldHVybiByZXN1bHQ7IH1cbiAgfVxuXG4gIHJldHJpZXZlKHNwZWNpZmllcjogc3RyaW5nKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5yZWdpc3RyeS5nZXQoc3BlY2lmaWVyKTtcbiAgfVxuXG4gIHJlc29sdmUoc3BlY2lmaWVyOiBzdHJpbmcsIHJlZmVycmVyPzogc3RyaW5nKTogYW55IHtcbiAgICBsZXQgaWQgPSB0aGlzLmlkZW50aWZ5KHNwZWNpZmllciwgcmVmZXJyZXIpO1xuICAgIGlmIChpZCkge1xuICAgICAgcmV0dXJuIHRoaXMucmV0cmlldmUoaWQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2RlZmluaXRpdmVDb2xsZWN0aW9uKHR5cGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IHR5cGVEZWYgPSB0aGlzLmNvbmZpZy50eXBlc1t0eXBlXTtcbiAgICBhc3NlcnQoYCcke3R5cGV9JyBpcyBub3QgYSByZWNvZ25pemVkIHR5cGVgLCB0eXBlRGVmKTtcbiAgICByZXR1cm4gdHlwZURlZi5kZWZpbml0aXZlQ29sbGVjdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgX3NlcmlhbGl6ZUFuZFZlcmlmeShzcGVjaWZpZXI6IFNwZWNpZmllcik6IHN0cmluZyB7XG4gICAgbGV0IHNlcmlhbGl6ZWQgPSBzZXJpYWxpemVTcGVjaWZpZXIoc3BlY2lmaWVyKTtcbiAgICBpZiAodGhpcy5yZWdpc3RyeS5oYXMoc2VyaWFsaXplZCkpIHtcbiAgICAgIHJldHVybiBzZXJpYWxpemVkO1xuICAgIH1cbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzcmMvcmVzb2x2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxBQUFPLFNBR0wsQUFBeUIsMkJBQ3pCLEFBQXlCLDJCQUN6QixBQUFvQixzQkFDcEIsQUFBa0IsQUFDbkIsMEJBQU0sQUFBYSxBQUFDO0FBQ3JCLEFBQU8sU0FBRSxBQUFNLEFBQUUsY0FBTSxBQUFlLEFBQUMsQUFJdkMsQUFBTSxBQUFDLEFBQU87OztBQUlaLHNCQUFZLEFBQTZCLFFBQUUsQUFBd0I7OztBQUNqRSxBQUFJLGFBQUMsQUFBTSxTQUFHLEFBQU0sQUFBQztBQUNyQixBQUFJLGFBQUMsQUFBUSxXQUFHLEFBQVEsQUFBQyxBQUMzQjtBQUFDOzt1QkFFRCxBQUFRLDZCQUFDLEFBQWlCLFdBQUUsQUFBaUI7QUFDM0MsQUFBRSxBQUFDLFlBQUMsQUFBeUIsMEJBQUMsQUFBUyxBQUFDLEFBQUMsWUFBQyxBQUFDO0FBQ3pDLEFBQU0sbUJBQUMsQUFBUyxBQUFDLEFBQ25CO0FBQUM7QUFFRCxZQUFJLEFBQUMsSUFBRyxBQUFvQixxQkFBQyxBQUFTLEFBQUMsQUFBQztBQUN4QyxZQUFJLEFBQWMsQUFBQztBQUVuQixBQUFFLEFBQUMsWUFBQyxBQUFRLEFBQUMsVUFBQyxBQUFDO0FBQ2IsZ0JBQUksQUFBQyxJQUFHLEFBQW9CLHFCQUFDLEFBQVEsQUFBQyxBQUFDO0FBRXZDLEFBQUUsQUFBQyxnQkFBQyxBQUF5QiwwQkFBQyxBQUFDLEFBQUMsQUFBQyxJQUFDLEFBQUM7QUFDakMsQUFBTSx1QkFBQyxBQUF5RywyR0FBRSxBQUFDLEVBQUMsQUFBUSxhQUFLLEFBQVMsYUFBSSxBQUFDLEVBQUMsQUFBVSxlQUFLLEFBQVMsYUFBSSxBQUFDLEVBQUMsQUFBUyxjQUFLLEFBQVMsQUFBQyxBQUFDO0FBRXZNLEFBQUMsa0JBQUMsQUFBUSxXQUFHLEFBQUMsRUFBQyxBQUFRLEFBQUM7QUFDeEIsQUFBQyxrQkFBQyxB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QUksQUFBTyxVQUFHLEFBQUksS0FBQyxBQUFNLE9BQUMsQUFBSyxNQUFDLEFBQUksQUFBQyxBQUFDO0FBQ3RDLEFBQU0sQUFBQyxzQkFBSSxBQUFJLEFBQTRCLHNDQUFFLEFBQU8sQUFBQyxBQUFDO0FBQ3RELEFBQU0sZUFBQyxBQUFPLFFBQUMsQUFBb0IsQUFBQyxBQUN0QztBQUFDOzt1QkFFTyxBQUFtQixtREFBQyxBQUFvQjtBQUM5QyxZQUFJLEFBQVUsYUFBRyxBQUFrQixtQkFBQyxBQUFTLEFBQUMsQUFBQztBQUMvQyxBQUFFLEFBQUMsWUFBQyxBQUFJLEtBQUMsQUFBUSxTQUFDLEFBQUcsSUFBQyxBQUFVLEFBQUMsQUFBQyxhQUFDLEFBQUM7QUFDbEMsQUFBTSxtQkFBQyxBQUFVLEFBQUMsQUFDcEI7QUFBQyxBQUNIO0FBQUMsQUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFJlc29sdmVyIGFzIElSZXNvbHZlcixcbiAgU3BlY2lmaWVyLFxuICBpc1NwZWNpZmllclN0cmluZ0Fic29sdXRlLFxuICBpc1NwZWNpZmllck9iamVjdEFic29sdXRlLFxuICBkZXNlcmlhbGl6ZVNwZWNpZmllcixcbiAgc2VyaWFsaXplU3BlY2lmaWVyXG59IGZyb20gJ0BnbGltbWVyL2RpJztcbmltcG9ydCB7IGFzc2VydCB9IGZyb20gJy4vdXRpbHMvZGVidWcnO1xuaW1wb3J0IHsgTW9kdWxlUmVnaXN0cnkgfSBmcm9tICcuL21vZHVsZS1yZWdpc3RyeSc7XG5pbXBvcnQgeyBSZXNvbHZlckNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL3Jlc29sdmVyLWNvbmZpZ3VyYXRpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZXNvbHZlciBpbXBsZW1lbnRzIElSZXNvbHZlciB7XG4gIHB1YmxpYyBjb25maWc6IFJlc29sdmVyQ29uZmlndXJhdGlvbjtcbiAgcHVibGljIHJlZ2lzdHJ5OiBNb2R1bGVSZWdpc3RyeTtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IFJlc29sdmVyQ29uZmlndXJhdGlvbiwgcmVnaXN0cnk6IE1vZHVsZVJlZ2lzdHJ5KSB7XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgdGhpcy5yZWdpc3RyeSA9IHJlZ2lzdHJ5O1xuICB9XG5cbiAgaWRlbnRpZnkoc3BlY2lmaWVyOiBzdHJpbmcsIHJlZmVycmVyPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoaXNTcGVjaWZpZXJTdHJpbmdBYnNvbHV0ZShzcGVjaWZpZXIpKSB7XG4gICAgICByZXR1cm4gc3BlY2lmaWVyO1xuICAgIH1cblxuICAgIGxldCBzID0gZGVzZXJpYWxpemVTcGVjaWZpZXIoc3BlY2lmaWVyKTtcbiAgICBsZXQgcmVzdWx0OiBzdHJpbmc7XG5cbiAgICBpZiAocmVmZXJyZXIpIHtcbiAgICAgIGxldCByID0gZGVzZXJpYWxpemVTcGVjaWZpZXIocmVmZXJyZXIpO1xuXG4gICAgICBpZiAoaXNTcGVjaWZpZXJPYmplY3RBYnNvbHV0ZShyKSkge1xuICAgICAgICBhc3NlcnQoJ1NwZWNpZmllciBtdXN0IG5vdCBpbmNsdWRlIGEgcm9vdE5hbWUsIGNvbGxlY3Rpb24sIG9yIG5hbWVzcGFjZSB3aGVuIGNvbWJpbmVkIHdpdGggYW4gYWJzb2x1dGUgcmVmZXJyZXInLCBzLnJvb3ROYW1lID09PSB1bmRlZmluZWQgJiYgcy5jb2xsZWN0aW9uID09PSB1bmRlZmluZWQgJiYgcy5uYW1lc3BhY2UgPT09IHVuZGVmaW5lZCk7XG5cbiAgICAgICAgcy5yb290TmFtZSA9IHIucm9vdE5hbWU7XG4gICAgICAgIHMuY29sbGVjdGlvbiA9IHIuY29sbGVjdGlvbjtcbiAgICAgICAgbGV0IGRlZmluaXRpdmVDb2xsZWN0aW9uID0gdGhpcy5fZGVmaW5pdGl2ZUNvbGxlY3Rpb24ocy50eXBlKTtcblxuICAgICAgICBpZiAoIXMubmFtZSkge1xuICAgICAgICAgIC8qXG4gICAgICAgICAgICogRm9yIHNwZWNpZmllcnMgd2l0aG91dCBhIG5hbWUgdXNlIHRoZSByZWZlcnJlcidzIG5hbWUgYW5kXG4gICAgICAgICAgICogZG8gbm90IGZhbGxiYWNrIHRvIGFueSBvdGhlciByZXNvbHV0aW9uIHJ1bGVzLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHMubmFtZXNwYWNlID0gci5uYW1lc3BhY2U7XG4gICAgICAgICAgcy5uYW1lID0gci5uYW1lO1xuICAgICAgICAgIHJldHVybiB0aGlzLl9zZXJpYWxpemVBbmRWZXJpZnkocyk7XG4gICAgICAgIH1cblxuICAgICAgICBzLm5hbWVzcGFjZSA9IHIubmFtZXNwYWNlID8gci5uYW1lc3BhY2UgKyAnLycgKyByLm5hbWUgOiByLm5hbWU7XG4gICAgICAgIGlmIChzLmNvbGxlY3Rpb24gPT09IGRlZmluaXRpdmVDb2xsZWN0aW9uKSB7XG4gICAgICAgICAgLypcbiAgICAgICAgICAgKiBGb3Igc3BlY2lmaWVycyB3aXRoIGEgbmFtZSwgdHJ5IGxvY2FsIHJlc29sdXRpb24uIEJhc2VkIG9uXG4gICAgICAgICAgICogdGhlIHJlZmVycmVyLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGlmIChyZXN1bHQgPSB0aGlzLl9zZXJpYWxpemVBbmRWZXJpZnkocykpIHsgcmV0dXJuIHJlc3VsdDsgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gTG9vayBmb3IgYSBwcml2YXRlIGNvbGxlY3Rpb24gaW4gdGhlIHJlZmVycmVyJ3MgbmFtZXNwYWNlXG4gICAgICAgIGlmIChkZWZpbml0aXZlQ29sbGVjdGlvbikge1xuICAgICAgICAgIHMubmFtZXNwYWNlICs9ICcvLScgKyBkZWZpbml0aXZlQ29sbGVjdGlvbjtcbiAgICAgICAgICBpZiAocmVzdWx0ID0gdGhpcy5fc2VyaWFsaXplQW5kVmVyaWZ5KHMpKSB7IHJldHVybiByZXN1bHQ7IH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEJlY2F1c2UgbG9jYWwgYW5kIHByaXZhdGUgcmVzb2x1dGlvbiBoYXMgZmFpbGVkLCBjbGVhciBhbGwgYnV0IGBuYW1lYCBhbmQgYHR5cGVgXG4gICAgICAgIC8vIHRvIHByb2NlZWQgd2l0aCB0b3AtbGV2ZWwgcmVzb2x1dGlvblxuICAgICAgICBzLnJvb3ROYW1lID0gcy5jb2xsZWN0aW9uID0gcy5uYW1lc3BhY2UgPSB1bmRlZmluZWQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhc3NlcnQoJ1JlZmVycmVyIG11c3QgZWl0aGVyIGJlIFwiYWJzb2x1dGVcIiBvciBpbmNsdWRlIGEgYHR5cGVgIHRvIGRldGVybWluZSB0aGUgYXNzb2NpYXRlZCB0eXBlJywgci50eXBlKTtcblxuICAgICAgICAvLyBMb29rIGluIHRoZSBkZWZpbml0aXZlIGNvbGxlY3Rpb24gZm9yIHRoZSBhc3NvY2lhdGVkIHR5cGVcbiAgICAgICAgcy5jb2xsZWN0aW9uID0gdGhpcy5fZGVmaW5pdGl2ZUNvbGxlY3Rpb24oci50eXBlKTtcbiAgICAgICAgYXNzZXJ0KGAnJHtyLnR5cGV9JyBkb2VzIG5vdCBoYXZlIGEgZGVmaW5pdGl2ZSBjb2xsZWN0aW9uYCwgcy5jb2xsZWN0aW9uKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgY29sbGVjdGlvbiBpcyB1bnNwZWNpZmllZCwgdXNlIHRoZSBkZWZpbml0aXZlIGNvbGxlY3Rpb24gZm9yIHRoZSBgdHlwZWBcbiAgICBpZiAoIXMuY29sbGVjdGlvbikge1xuICAgICAgcy5jb2xsZWN0aW9uID0gdGhpcy5fZGVmaW5pdGl2ZUNvbGxlY3Rpb24ocy50eXBlKTtcbiAgICAgIGFzc2VydChgJyR7cy50eXBlfScgZG9lcyBub3QgaGF2ZSBhIGRlZmluaXRpdmUgY29sbGVjdGlvbmAsIHMuY29sbGVjdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKCFzLnJvb3ROYW1lKSB7XG4gICAgICAvLyBJZiB0aGUgcm9vdCBuYW1lIGlzIHVuc3BlY2lmaWVkLCB0cnkgdGhlIGFwcCdzIGByb290TmFtZWAgZmlyc3RcbiAgICAgIHMucm9vdE5hbWUgPSB0aGlzLmNvbmZpZy5hcHAucm9vdE5hbWUgfHwgJ2FwcCc7XG4gICAgICBpZiAocmVzdWx0ID0gdGhpcy5fc2VyaWFsaXplQW5kVmVyaWZ5KHMpKSB7IHJldHVybiByZXN1bHQ7IH1cblxuICAgICAgLy8gVGhlbiBsb29rIGZvciBhbiBhZGRvbiB3aXRoIGEgbWF0Y2hpbmcgYHJvb3ROYW1lYFxuICAgICAgbGV0IGFkZG9uRGVmO1xuICAgICAgaWYgKHMubmFtZXNwYWNlKSB7XG4gICAgICAgIGFkZG9uRGVmID0gdGhpcy5jb25maWcuYWRkb25zICYmIHRoaXMuY29uZmlnLmFkZG9uc1tzLm5hbWVzcGFjZV07XG4gICAgICAgIHMucm9vdE5hbWUgPSBzLm5hbWVzcGFjZTtcbiAgICAgICAgcy5uYW1lc3BhY2UgPSB1bmRlZmluZWQ7XG5cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFkZG9uRGVmID0gdGhpcy5jb25maWcuYWRkb25zICYmIHRoaXMuY29uZmlnLmFkZG9uc1tzLm5hbWVdO1xuICAgICAgICBzLnJvb3ROYW1lID0gcy5uYW1lO1xuICAgICAgICBzLm5hbWUgPSAnbWFpbic7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHJlc3VsdCA9IHRoaXMuX3NlcmlhbGl6ZUFuZFZlcmlmeShzKSkgeyByZXR1cm4gcmVzdWx0OyB9XG4gIH1cblxuICByZXRyaWV2ZShzcGVjaWZpZXI6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMucmVnaXN0cnkuZ2V0KHNwZWNpZmllcik7XG4gIH1cblxuICByZXNvbHZlKHNwZWNpZmllcjogc3RyaW5nLCByZWZlcnJlcj86IHN0cmluZyk6IGFueSB7XG4gICAgbGV0IGlkID0gdGhpcy5pZGVudGlmeShzcGVjaWZpZXIsIHJlZmVycmVyKTtcbiAgICBpZiAoaWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnJldHJpZXZlKGlkKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9kZWZpbml0aXZlQ29sbGVjdGlvbih0eXBlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCB0eXBlRGVmID0gdGhpcy5jb25maWcudHlwZXNbdHlwZV07XG4gICAgYXNzZXJ0KGAnJHt0eXBlfScgaXMgbm90IGEgcmVjb2duaXplZCB0eXBlYCwgdHlwZURlZik7XG4gICAgcmV0dXJuIHR5cGVEZWYuZGVmaW5pdGl2ZUNvbGxlY3Rpb247XG4gIH1cblxuICBwcml2YXRlIF9zZXJpYWxpemVBbmRWZXJpZnkoc3BlY2lmaWVyOiBTcGVjaWZpZXIpOiBzdHJpbmcge1xuICAgIGxldCBzZXJpYWxpemVkID0gc2VyaWFsaXplU3BlY2lmaWVyKHNwZWNpZmllcik7XG4gICAgaWYgKHRoaXMucmVnaXN0cnkuaGFzKHNlcmlhbGl6ZWQpKSB7XG4gICAgICByZXR1cm4gc2VyaWFsaXplZDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
{
"name": "@glimmer/resolver",
"version": "0.3.1",
"version": "0.4.0",
"description": "Resolver for Glimmer apps.",

@@ -33,3 +33,6 @@ "contributors": [

"testem": "^1.13.0"
},
"publishConfig": {
"access": "public"
}
}

@@ -36,17 +36,28 @@ import {

// Look locally in the referrer's namespace
s.rootName = r.rootName;
s.collection = r.collection;
if (s.name) {
s.namespace = r.namespace ? r.namespace + '/' + r.name : r.name;
} else {
let definitiveCollection = this._definitiveCollection(s.type);
if (!s.name) {
/*
* For specifiers without a name use the referrer's name and
* do not fallback to any other resolution rules.
*/
s.namespace = r.namespace;
s.name = r.name;
return this._serializeAndVerify(s);
}
if (result = this._serializeAndVerify(s)) { return result; }
s.namespace = r.namespace ? r.namespace + '/' + r.name : r.name;
if (s.collection === definitiveCollection) {
/*
* For specifiers with a name, try local resolution. Based on
* the referrer.
*/
if (result = this._serializeAndVerify(s)) { return result; }
}
// Look for a private collection in the referrer's namespace
let privateCollection = this._definitiveCollection(s.type);
if (privateCollection) {
s.namespace += '/-' + privateCollection;
if (definitiveCollection) {
s.namespace += '/-' + definitiveCollection;
if (result = this._serializeAndVerify(s)) { return result; }

@@ -53,0 +64,0 @@ }

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