@mnemonica/tactica 0.3.0 → 0.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +146 -3
- package/lib/analyzer.d.ts +246 -6
- package/lib/analyzer.js +1323 -123
- package/lib/cli.d.ts +3 -2
- package/lib/cli.js +70 -9
- package/lib/generator.d.ts +21 -2
- package/lib/generator.js +43 -2
- package/lib/graph.d.ts +28 -0
- package/lib/graph.js +78 -1
- package/lib/plugins.d.ts +14 -0
- package/lib/plugins.js +3 -1
- package/lib/scopes.d.ts +8 -0
- package/lib/scopes.js +13 -2
- package/lib/types.d.ts +18 -1
- package/lib/types.js +1 -1
- package/package.json +2 -2
package/lib/scopes.js
CHANGED
|
@@ -386,6 +386,7 @@ class LocalScopeWalker {
|
|
|
386
386
|
if (lookup) {
|
|
387
387
|
pendingEntry.lookupPath = lookup.path;
|
|
388
388
|
pendingEntry.lookupReceiver = lookup.receiver;
|
|
389
|
+
pendingEntry.lookupCall = initializer;
|
|
389
390
|
}
|
|
390
391
|
}
|
|
391
392
|
this.pending.push(pendingEntry);
|
|
@@ -542,7 +543,7 @@ class LocalScopeWalker {
|
|
|
542
543
|
if (entry.lookupPath) {
|
|
543
544
|
// Receiver-relative first: `user.lookup('AdminEntity')` resolves
|
|
544
545
|
// against the receiver variable's typePath when that yields a
|
|
545
|
-
// known path (
|
|
546
|
+
// known path (value-scope tier — innermost binding wins)
|
|
546
547
|
if (entry.lookupReceiver) {
|
|
547
548
|
for (const scopeId of entry.scopeChain) {
|
|
548
549
|
const receiverVariable = this.variables.get(`${scopeId}#${entry.lookupReceiver}`);
|
|
@@ -555,6 +556,16 @@ class LocalScopeWalker {
|
|
|
555
556
|
}
|
|
556
557
|
}
|
|
557
558
|
}
|
|
559
|
+
// The analyzer's tier law above value scope (import scope,
|
|
560
|
+
// source-relative, root): an imported `Holder.lookup('Token')`
|
|
561
|
+
// or `lookup(App, 'Crate')` resolves exactly as the usages pass
|
|
562
|
+
// resolved it, so scopes.json agrees with the hard-fail verdicts
|
|
563
|
+
if (resolver.resolveLookup && entry.lookupCall) {
|
|
564
|
+
const resolved = resolver.resolveLookup(entry.lookupCall);
|
|
565
|
+
if (resolved && resolver.hasPath(resolved)) {
|
|
566
|
+
return resolved;
|
|
567
|
+
}
|
|
568
|
+
}
|
|
558
569
|
if (resolver.hasPath(entry.lookupPath)) {
|
|
559
570
|
return entry.lookupPath;
|
|
560
571
|
}
|
|
@@ -579,4 +590,4 @@ class LocalScopeWalker {
|
|
|
579
590
|
}
|
|
580
591
|
}
|
|
581
592
|
exports.LocalScopeWalker = LocalScopeWalker;
|
|
582
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NvcGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Njb3Blcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUViLDJDQUE2QjtBQUM3QiwrQ0FBaUM7QUFrRGpDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxHQUFHLENBQWdCO0lBQ25ELEVBQUUsQ0FBQyxVQUFVLENBQUMsV0FBVztJQUN6QixFQUFFLENBQUMsVUFBVSxDQUFDLGVBQWU7SUFDN0IsRUFBRSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0I7SUFDOUIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUI7SUFDakMsRUFBRSxDQUFDLFVBQVUsQ0FBQywyQkFBMkI7SUFDekMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0I7SUFDOUIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0I7SUFDaEMsRUFBRSxDQUFDLFVBQVUsQ0FBQywyQkFBMkI7SUFDekMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxpQ0FBaUM7SUFDL0MsRUFBRSxDQUFDLFVBQVUsQ0FBQyw0Q0FBNEM7SUFDMUQsRUFBRSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0I7SUFDbEMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxjQUFjO0lBQzVCLEVBQUUsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCO0lBQzlCLEVBQUUsQ0FBQyxVQUFVLENBQUMsNkJBQTZCO0lBQzNDLEVBQUUsQ0FBQyxVQUFVLENBQUMsaUJBQWlCO0lBQy9CLEVBQUUsQ0FBQyxVQUFVLENBQUMsMkJBQTJCO0NBQ3pDLENBQUMsQ0FBQztBQUVIOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFhLGdCQUFnQjtJQUE3QjtRQUNTLFdBQU0sR0FBRyxJQUFJLEdBQUcsRUFBcUIsQ0FBQztRQUN0QyxVQUFLLEdBQUcsSUFBSSxHQUFHLEVBQXVCLENBQUM7UUFDdkMsY0FBUyxHQUFHLElBQUksR0FBRyxF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QUFDO0NBQ0Q7QUFubEJELDRDQW1sQkMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7XG5cdFNjb3BlQW5hbHlzaXMsIFNjb3BlSW5mbywgU2NvcGVLaW5kLCBTY29wZVZhcmlhYmxlLCBVc2FnZUluZm9cbn0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogQ29tcGlsZS10aW1lIHZpZXcgb3ZlciB0aGUgYW5hbHl6ZXIncyBkZWZpbml0aW9ucywgdXNlZCB0byBhdHRhY2ggbW5lbW9uaWNhXG4gKiB0eXBlIHBhdGhzIHRvIHZhcmlhYmxlcy4gTmFtZS1iYXNlZCBoZXVyaXN0aWNzIG9ubHkg4oCUIHRoZSBuby1nZXRUeXBlQ2hlY2tlcigpXG4gKiBwcmVjZWRlbnQgc3RheXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NvcGVUeXBlUmVzb2x2ZXIge1xuXHQvKiogUmVzb2x2ZSBhIGJhcmUgY29uc3RydWN0b3IvdHlwZSBuYW1lIHRvIGEgbW5lbW9uaWNhIGZ1bGxQYXRoICh1bmRlZmluZWQgd2hlbiB1bmtub3duIG9yIGFtYmlndW91cykgKi9cblx0cmVzb2x2ZUJ5TmFtZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdC8qKiBUcnVlIHdoZW4gdGhlIGRvdHRlZCBwYXRoIGlzIGEga25vd24gbW5lbW9uaWNhIHR5cGUgKi9cblx0aGFzUGF0aChmdWxsUGF0aDogc3RyaW5nKTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBJbnRlcm5hbCBzY29wZSByZWNvcmQ6IG51bWVyaWMgc3BhbiAoMS1iYXNlZCBsaW5lL2NvbCkga2VwdCBmb3JcbiAqIGZpbmRIb2xkZXJTY29wZUlkKCkgY29udGFpbm1lbnQgbWF0Y2hpbmc7IFNjb3BlSW5mbyBpdHNlbGYgY2FycmllcyBzdHJpbmdzLlxuICovXG5pbnRlcmZhY2UgU2NvcGVTcGFuIHtcblx0c2NvcGVJZDogc3RyaW5nO1xuXHRzdGFydExpbmU6IG51bWJlcjtcblx0c3RhcnRDb2w6IG51bWJlcjtcblx0ZW5kTGluZTogbnVtYmVyO1xuXHRlbmRDb2w6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBSYXcgdmFyaWFibGUgcmVjb3JkIGNvbGxlY3RlZCBkdXJpbmcgdGhlIEFTVCB3YWxrLiB0eXBlUGF0aCBpcyByZXNvbHZlZFxuICogbGF0ZXIgaW4gYnVpbGQoKSwgb25jZSBkZWZpbml0aW9ucyBhcmUga25vd24uXG4gKi9cbmludGVyZmFjZSBQZW5kaW5nVmFyaWFibGUge1xuXHR2YXJpYWJsZTogU2NvcGVWYXJpYWJsZTtcblx0LyoqIEJhcmUgY29uc3RydWN0b3IgbmFtZSBmb3IgYG5ldyBYKC4uLilgIGluaXRpYWxpemVycyAqL1xuXHRuZXdOYW1lPzogc3RyaW5nO1xuXHQvKiogUm9vdCBpZGVudGlmaWVyICsgcHJvcGVydHkgY2hhaW4gZm9yIGBuZXcgYS5iLkMoLi4uKWAgaW5pdGlhbGl6ZXJzICovXG5cdG5ld0NoYWluUm9vdD86IHN0cmluZztcblx0bmV3Q2hhaW5SZXN0Pzogc3RyaW5nW107XG5cdC8qKiBTdHJpbmctbGl0ZXJhbCBwYXRoIG9mIGEgYGxvb2t1cCgnQS5CJylgIGluaXRpYWxpemVyICovXG5cdGxvb2t1cFBhdGg/OiBzdHJpbmc7XG5cdC8qKiBSb290IGlkZW50aWZpZXIgb2YgdGhlIHJlY2VpdmVyIGZvciBgcmVjZWl2ZXIubG9va3VwKCdBLkInKWAgLyBgbG9va3VwKHNvdXJjZSwgJ0EuQicpYCAqL1xuXHRsb29rdXBSZWNlaXZlcj86IHN0cmluZztcblx0LyoqIFJhdyB0eXBlIGFubm90YXRpb24gdGV4dCAoZS5nLiAnVXNlckVudGl0eV9Vc2VyUmVzcG9uc2UnKSAqL1xuXHRhbm5vdGF0aW9uPzogc3RyaW5nO1xuXHQvKiogU2NvcGUgY2hhaW4gZnJvbSBkZWNsYXJhdGlvbiBzaXRlIG91dHdhcmQsIGZvciBjaGFpbi1yb290IGxvb2t1cCAqL1xuXHRzY29wZUNoYWluOiBzdHJpbmdbXTtcbn1cblxuY29uc3QgQVNTSUdOTUVOVF9PUEVSQVRPUlMgPSBuZXcgU2V0PHRzLlN5bnRheEtpbmQ+KFtcblx0dHMuU3ludGF4S2luZC5FcXVhbHNUb2tlbixcblx0dHMuU3ludGF4S2luZC5QbHVzRXF1YWxzVG9rZW4sXG5cdHRzLlN5bnRheEtpbmQuTWludXNFcXVhbHNUb2tlbixcblx0dHMuU3ludGF4S2luZC5Bc3Rlcmlza0VxdWFsc1Rva2VuLFxuXHR0cy5TeW50YXhLaW5kLkFzdGVyaXNrQXN0ZXJpc2tFcXVhbHNUb2tlbixcblx0dHMuU3ludGF4S2luZC5TbGFzaEVxdWFsc1Rva2VuLFxuXHR0cy5TeW50YXhLaW5kLlBlcmNlbnRFcXVhbHNUb2tlbixcblx0dHMuU3ludGF4S2luZC5MZXNzVGhhbkxlc3NUaGFuRXF1YWxzVG9rZW4sXG5cdHRzLlN5bnRheEtpbmQuR3JlYXRlclRoYW5HcmVhdGVyVGhhbkVxdWFsc1Rva2VuLFxuXHR0cy5TeW50YXhLaW5kLkdyZWF0ZXJUaGFuR3JlYXRlclRoYW5HcmVhdGVyVGhhbkVxdWFsc1Rva2VuLFxuXHR0cy5TeW50YXhLaW5kLkFtcGVyc2FuZEVxdWFsc1Rva2VuLFxuXHR0cy5TeW50YXhLaW5kLkJhckVxdWFsc1Rva2VuLFxuXHR0cy5TeW50YXhLaW5kLkNhcmV0RXF1YWxzVG9rZW4sXG5cdHRzLlN5bnRheEtpbmQuQW1wZXJzYW5kQW1wZXJzYW5kRXF1YWxzVG9rZW4sXG5cdHRzLlN5bnRheEtpbmQuQmFyQmFyRXF1YWxzVG9rZW4sXG5cdHRzLlN5bnRheEtpbmQuUXVlc3Rpb25RdWVzdGlvbkVxdWFsc1Rva2VuLFxuXSk7XG5cbi8qKlxuICogTG9jYWwtc2NvcGUgd2Fsa2VyIChpbnN0cnVtZW50YXRpb24gd2Fsa2VyIHBsYW4sIFBoYXNlIDIpLlxuICpcbiAqIFRyYWNrcyBmdW5jdGlvbi9tZXRob2QvYXJyb3cgc2NvcGVzIE9OTFkgKGRlY2lzaW9uIDU6IG5vIGJsb2NrIHNjb3BlcyksXG4gKiBwbHVzIG9uZSBzeW50aGV0aWMgJ21vZHVsZScgc2NvcGUgcGVyIGZpbGUg4oCUIHRoZSBwbGFuIHJlcXVpcmVzIG1vZHVsZS1zY29wZVxuICogaW5zdGFuY2UgY3JlYXRpb25zIHRvIGJlIGxhYmVsZWQsIG5vdCBkcm9wcGVkLiBWYXJpYWJsZXMgY2FycnkgaXNNdXRhYmxlXG4gKiAoY29uc3QgdnMgbGV0L3Zhci9wYXJhbWV0ZXIpIGFuZCBgcmVhc3NpZ25tZW50c2A6IGVhY2ggcmVhc3NpZ25tZW50IHNpdGUgb2ZcbiAqIGEgbXV0YWJsZSBiaW5kaW5nIGlzIGEgZmxvdy10ZXJtaW5hdGlvbiBwb2ludCAoZGVjaXNpb24gNikg4oCUIGRvd25zdHJlYW0gdGhlXG4gKiB3YWxrZXIgc3RvcHMgZm9sbG93aW5nIHRoYXQgYmluZGluZyB0aGVyZS5cbiAqXG4gKiBVc2FnZTogYWRkRmlsZSgpIHBlciBzb3VyY2UgZmlsZSwgdGhlbiBidWlsZChyZXNvbHZlcikgb25jZSBkZWZpbml0aW9ucyBhcmVcbiAqIGtub3duLiBmaW5kSG9sZGVyU2NvcGVJZChsb2NhdGlvbikgbWFwcyBhIHVzYWdlIGxvY2F0aW9uIHN0cmluZyB0byB0aGVcbiAqIGlubmVybW9zdCBzY29wZSBjb250YWluaW5nIGl0ICh1c2FnZXMuanNvbiBob2xkZXJTY29wZUlkKS5cbiAqL1xuZXhwb3J0IGNsYXNzIExvY2FsU2NvcGVXYWxrZXIge1xuXHRwcml2YXRlIHNjb3BlcyA9IG5ldyBNYXA8c3RyaW5nLCBTY29wZUluZm8+KCk7XG5cdHByaXZhdGUgc3BhbnMgPSBuZXcgTWFwPHN0cmluZywgU2NvcGVTcGFuW10+KCk7XG5cdHByaXZhdGUgdmFyaWFibGVzID0gbmV3IE1hcDxzdHJpbmcsIFNjb3BlVmFyaWFibGU+KCk7XG5cdHByaXZhdGUgcGVuZGluZzogUGVuZGluZ1ZhcmlhYmxlW10gPSBbXTtcblx0LyoqXG5cdCAqIEFycm93L2Z1bmN0aW9uLWV4cHJlc3Npb24gbm9kZSAtPiBuYW1lIGl0IGlzIGJvdW5kIHRvIChgY29uc3QgZiA9ICgpID0+IOKApmAsXG5cdCAqIGB7IGhhbmRsZXI6ICgpID0+IOKApiB9YCwgY2xhc3MgcHJvcGVydGllcykuIFByb2dyYW0gc291cmNlIGZpbGVzIGNhbiBiZVxuXHQgKiBVTkJPVU5EIChubyBub2RlLnBhcmVudCBwb2ludGVycyksIHNvIGJpbmRpbmcgbmFtZXMgdHJhdmVsIHRocm91Z2ggdGhpc1xuXHQgKiBtYXAgaW5zdGVhZCBvZiBwYXJlbnQgbG9va3Vwcy5cblx0ICovXG5cdHByaXZhdGUgYm91bmROYW1lcyA9IG5ldyBNYXA8dHMuTm9kZSwgc3RyaW5nPigpO1xuXG5cdC8qKlxuXHQgKiBUcmFjayBvbmUgc291cmNlIGZpbGUuIFJlLWFkZGluZyB0aGUgc2FtZSBmaWxlIHJlcGxhY2VzIGl0cyByZWNvcmRzLFxuXHQgKiBzbyBhIHdhbGtlciBtYXkgc2FmZWx5IGJlIHJldXNlZCBhY3Jvc3MgcGFzc2VzLlxuXHQgKi9cblx0YWRkRmlsZSAoc291cmNlRmlsZTogdHMuU291cmNlRmlsZSk6IHZvaWQge1xuXHRcdGNvbnN0IGZpbGVQYXRoID0gcGF0aC5yZXNvbHZlKHNvdXJjZUZpbGUuZmlsZU5hbWUpO1xuXHRcdHRoaXMuZHJvcEZpbGUoZmlsZVBhdGgpO1xuXG5cdFx0Y29uc3QgbW9kdWxlU2NvcGU6IFNjb3BlSW5mbyA9IHtcblx0XHRcdHNjb3BlSWQgIDogZmlsZVBhdGgsXG5cdFx0XHRuYW1lICAgICA6IGZpbGVQYXRoLFxuXHRcdFx0a2luZCAgICAgOiAnbW9kdWxlJyxcblx0XHRcdGZpbGVQYXRoLFxuXHRcdFx0bG9jYXRpb24gOiBgJHtmaWxlUGF0aH06MToxYCxcblx0XHR9O1xuXHRcdHRoaXMuc2NvcGVzLnNldChtb2R1bGVTY29wZS5zY29wZUlkLCBtb2R1bGVTY29wZSk7XG5cblx0XHRjb25zdCBzcGFuczogU2NvcGVTcGFuW10gPSBbXTtcblx0XHR0aGlzLnNwYW5zLnNldChmaWxlUGF0aCwgc3BhbnMpO1xuXHRcdHNwYW5zLnB1c2godGhpcy5zcGFuT2Yoc291cmNlRmlsZSwgc291cmNlRmlsZSwgbW9kdWxlU2NvcGUuc2NvcGVJZCkpO1xuXG5cdFx0Y29uc3Qgc2NvcGVTdGFjazogc3RyaW5nW10gPSBbIG1vZHVsZVNjb3BlLnNjb3BlSWQgXTtcblx0XHRjb25zdCBjbGFzc1N0YWNrOiBzdHJpbmdbXSA9IFtdO1xuXHRcdHRoaXMudmlzaXROb2RlKHNvdXJjZUZpbGUsIHNvdXJjZUZpbGUsIGZpbGVQYXRoLCBzY29wZVN0YWNrLCBjbGFzc1N0YWNrLCBzcGFucyk7XG5cdH1cblxuXHQvKipcblx0ICogUmVzb2x2ZSBwZW5kaW5nIHR5cGVQYXRocyBhbmQgcmV0dXJuIHRoZSBhbmFseXNpcy5cblx0ICovXG5cdGJ1aWxkIChyZXNvbHZlcj86IFNjb3BlVHlwZVJlc29sdmVyKTogU2NvcGVBbmFseXNpcyB7XG5cdFx0aWYgKHJlc29sdmVyKSB7XG5cdFx0XHRmb3IgKGNvbnN0IGVudHJ5IG9mIHRoaXMucGVuZGluZykge1xuXHRcdFx0XHRjb25zdCB0eXBlUGF0aCA9IHRoaXMucmVzb2x2ZVZhcmlhYmxlVHlwZVBhdGgoZW50cnksIHJlc29sdmVyKTtcblx0XHRcdFx0aWYgKHR5cGVQYXRoKSB7XG5cdFx0XHRcdFx0ZW50cnkudmFyaWFibGUudHlwZVBhdGggPSB0eXBlUGF0aDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGNvbnN0IGFuYWx5c2lzOiBTY29wZUFuYWx5c2lzID0ge1xuXHRcdFx0c2NvcGVzICAgIDogdGhpcy5zY29wZXMsXG5cdFx0XHR2YXJpYWJsZXMgOiB0aGlzLnZhcmlhYmxlcyxcblx0XHR9O1xuXHRcdHJldHVybiBhbmFseXNpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBNYXAgYSB1c2FnZSBsb2NhdGlvbiBzdHJpbmcgKCdhYnMvZmlsZS50czpsaW5lOmNvbCcpIHRvIHRoZSBpbm5lcm1vc3Rcblx0ICogc2NvcGUgY29udGFpbmluZyBpdC4gTW9kdWxlIHNjb3BlIGlzIHRoZSBmYWxsYmFjaywgc28gZXZlcnkgbG9jYXRpb25cblx0ICogaW5zaWRlIGEgdHJhY2tlZCBmaWxlIHJlc29sdmVzIHRvIHNvbWUgc2NvcGUuXG5cdCAqL1xuXHRmaW5kSG9sZGVyU2NvcGVJZCAobG9jYXRpb246IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgbGFzdENvbG9uID0gbG9jYXRpb24ubGFzdEluZGV4T2YoJzonKTtcblx0XHRjb25zdCBwcmV2Q29sb24gPSBsb2NhdGlvbi5sYXN0SW5kZXhPZignOicsIGxhc3RDb2xvbiAtIDEpO1xuXHRcdGlmIChsYXN0Q29sb24gPCAwIHx8IHByZXZDb2xvbiA8IDApIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGNvbnN0IGZpbGVQYXRoID0gcGF0aC5yZXNvbHZlKGxvY2F0aW9uLnNsaWNlKDAsIHByZXZDb2xvbikpO1xuXHRcdGNvbnN0IGxpbmUgPSBOdW1iZXIobG9jYXRpb24uc2xpY2UocHJldkNvbG9uICsgMSwgbGFzdENvbG9uKSk7XG5cdFx0Y29uc3QgY29sID0gTnVtYmVyKGxvY2F0aW9uLnNsaWNlKGxhc3RDb2xvbiArIDEpKTtcblx0XHRpZiAoIU51bWJlci5pc0Zpbml0ZShsaW5lKSB8fCAhTnVtYmVyLmlzRmluaXRlKGNvbCkpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgc3BhbnMgPSB0aGlzLnNwYW5zLmdldChmaWxlUGF0aCk7XG5cdFx0aWYgKCFzcGFucykge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cblx0XHRsZXQgYmVzdDogU2NvcGVTcGFuIHwgdW5kZWZpbmVkO1xuXHRcdGZvciAoY29uc3Qgc3BhbiBvZiBzcGFucykge1xuXHRcdFx0Y29uc3Qgc3RhcnRzQmVmb3JlID0gc3Bhbi5zdGFydExpbmUgPCBsaW5lIHx8IChzcGFuLnN0YXJ0TGluZSA9PT0gbGluZSAmJiBzcGFuLnN0YXJ0Q29sIDw9IGNvbCk7XG5cdFx0XHRjb25zdCBlbmRzQWZ0ZXIgPSBzcGFuLmVuZExpbmUgPiBsaW5lIHx8IChzcGFuLmVuZExpbmUgPT09IGxpbmUgJiYgc3Bhbi5lbmRDb2wgPj0gY29sKTtcblx0XHRcdGlmICghc3RhcnRzQmVmb3JlIHx8ICFlbmRzQWZ0ZXIpIHtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cdFx0XHQvLyBJbm5lcm1vc3QgPSBzbWFsbGVzdCBjb250YWluaW5nIHNwYW5cblx0XHRcdGlmIChiZXN0ICYmIChiZXN0LnN0YXJ0TGluZSA8IHNwYW4uc3RhcnRMaW5lIHx8XG5cdFx0XHRcdChiZXN0LnN0YXJ0TGluZSA9PT0gc3Bhbi5zdGFydExpbmUgJiYgYmVzdC5zdGFydENvbCA8PSBzcGFuLnN0YXJ0Q29sKSkpIHtcblx0XHRcdFx0YmVzdCA9IHNwYW47XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCFiZXN0KSB7XG5cdFx0XHRcdGJlc3QgPSBzcGFuO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRjb25zdCByZXN1bHQgPSBiZXN0Py5zY29wZUlkO1xuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblxuXHQvKipcblx0ICogUmVtb3ZlIGV2ZXJ5IHJlY29yZCBiZWxvbmdpbmcgdG8gb25lIGZpbGUgKHJlLWFkZCBzdXBwb3J0KS5cblx0ICovXG5cdHByaXZhdGUgZHJvcEZpbGUgKGZpbGVQYXRoOiBzdHJpbmcpOiB2b2lkIHtcblx0XHRmb3IgKGNvbnN0IFsgc2NvcGVJZCwgc2NvcGUgXSBvZiB0aGlzLnNjb3Blcykge1xuXHRcdFx0aWYgKHNjb3BlLmZpbGVQYXRoID09PSBmaWxlUGF0aCkge1xuXHRcdFx0XHR0aGlzLnNjb3Blcy5kZWxldGUoc2NvcGVJZCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGZvciAoY29uc3Qga2V5IG9mIEFycmF5LmZyb20odGhpcy52YXJpYWJsZXMua2V5cygpKSkge1xuXHRcdFx0aWYgKGtleS5zdGFydHNXaXRoKGAke2ZpbGVQYXRofSNgKSB8fCBrZXkuc3RhcnRzV2l0aChgJHtmaWxlUGF0aH06YCkpIHtcblx0XHRcdFx0dGhpcy52YXJpYWJsZXMuZGVsZXRlKGtleSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHRoaXMucGVuZGluZyA9IHRoaXMucGVuZGluZy5maWx0ZXIoZW50cnkgPT5cblx0XHRcdCFlbnRyeS52YXJpYWJsZS5kZWNsYXJhdGlvbi5zdGFydHNXaXRoKGAke2ZpbGVQYXRofTpgKSk7XG5cdFx0dGhpcy5zcGFucy5kZWxldGUoZmlsZVBhdGgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEF0dGFjaCBob2xkZXJTY29wZUlkIHRvIGV2ZXJ5IHVzYWdlIHdob3NlIGxvY2F0aW9uIGZhbGxzIGluc2lkZSBhXG5cdCAqIHRyYWNrZWQgc2NvcGUuIEFkZGl0aXZlIG9uIFVzYWdlSW5mbzsgdXNhZ2VzIG91dHNpZGUgdHJhY2tlZCBmaWxlc1xuXHQgKiBhcmUgbGVmdCB1bnRvdWNoZWQuXG5cdCAqL1xuXHRzdGF0aWMgYXR0YWNoSG9sZGVyU2NvcGVJZHMgKHVzYWdlczogTWFwPHN0cmluZywgVXNhZ2VJbmZvW10+LCB3YWxrZXI6IExvY2FsU2NvcGVXYWxrZXIpOiB2b2lkIHtcblx0XHRmb3IgKGNvbnN0IHVzYWdlTGlzdCBvZiB1c2FnZXMudmFsdWVzKCkpIHtcblx0XHRcdGZvciAoY29uc3QgdXNhZ2Ugb2YgdXNhZ2VMaXN0KSB7XG5cdFx0XHRcdGNvbnN0IHNjb3BlSWQgPSB3YWxrZXIuZmluZEhvbGRlclNjb3BlSWQodXNhZ2UubG9jYXRpb24pO1xuXHRcdFx0XHRpZiAoc2NvcGVJZCkge1xuXHRcdFx0XHRcdHVzYWdlLmhvbGRlclNjb3BlSWQgPSBzY29wZUlkO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSB2aXNpdE5vZGUgKFxuXHRcdG5vZGU6IHRzLk5vZGUsXG5cdFx0c291cmNlRmlsZTogdHMuU291cmNlRmlsZSxcblx0XHRmaWxlUGF0aDogc3RyaW5nLFxuXHRcdHNjb3BlU3RhY2s6IHN0cmluZ1tdLFxuXHRcdGNsYXNzU3RhY2s6IHN0cmluZ1tdLFxuXHRcdHNwYW5zOiBTY29wZVNwYW5bXVxuXHQpOiB2b2lkIHtcblx0XHRjb25zdCBzY29wZUtpbmQgPSBMb2NhbFNjb3BlV2Fsa2VyLnNjb3BlS2luZE9mKG5vZGUpO1xuXHRcdGxldCBlbnRlcmVkID0gZmFsc2U7XG5cdFx0aWYgKHNjb3BlS2luZCAmJiB0aGlzLmhhc0JvZHkobm9kZSkpIHtcblx0XHRcdHRoaXMuZW50ZXJTY29wZShub2RlLCBzY29wZUtpbmQsIHNvdXJjZUZpbGUsIGZpbGVQYXRoLCBzY29wZVN0YWNrLCBjbGFzc1N0YWNrLCBzcGFucyk7XG5cdFx0XHRlbnRlcmVkID0gdHJ1ZTtcblx0XHR9XG5cblx0XHRjb25zdCBpc0NsYXNzID0gdHMuaXNDbGFzc0RlY2xhcmF0aW9uKG5vZGUpIHx8IHRzLmlzQ2xhc3NFeHByZXNzaW9uKG5vZGUpO1xuXHRcdGlmIChpc0NsYXNzKSB7XG5cdFx0XHRjbGFzc1N0YWNrLnB1c2gobm9kZS5uYW1lPy50ZXh0ID8/ICcnKTtcblx0XHR9XG5cblx0XHR0aGlzLmNvbGxlY3RCb3VuZE5hbWUobm9kZSk7XG5cdFx0dGhpcy5jb2xsZWN0VmFyaWFibGVEZWNsYXJhdGlvbkxpc3Qobm9kZSwgc291cmNlRmlsZSwgc2NvcGVTdGFjayk7XG5cdFx0dGhpcy5jb2xsZWN0UmVhc3NpZ25tZW50KG5vZGUsIHNvdXJjZUZpbGUsIHNjb3BlU3RhY2spO1xuXG5cdFx0dHMuZm9yRWFjaENoaWxkKG5vZGUsIGNoaWxkID0+IHtcblx0XHRcdHRoaXMudmlzaXROb2RlKGNoaWxkLCBzb3VyY2VGaWxlLCBmaWxlUGF0aCwgc2NvcGVTdGFjaywgY2xhc3NTdGFjaywgc3BhbnMpO1xuXHRcdH0pO1xuXG5cdFx0aWYgKGlzQ2xhc3MpIHtcblx0XHRcdGNsYXNzU3RhY2sucG9wKCk7XG5cdFx0fVxuXHRcdGlmIChlbnRlcmVkKSB7XG5cdFx0XHRzY29wZVN0YWNrLnBvcCgpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgc3RhdGljIHNjb3BlS2luZE9mIChub2RlOiB0cy5Ob2RlKTogU2NvcGVLaW5kIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAodHMuaXNNZXRob2REZWNsYXJhdGlvbihub2RlKSB8fCB0cy5pc0dldEFjY2Vzc29yRGVjbGFyYXRpb24obm9kZSkgfHxcblx0XHRcdHRzLmlzU2V0QWNjZXNzb3JEZWNsYXJhdGlvbihub2RlKSB8fCB0cy5pc0NvbnN0cnVjdG9yRGVjbGFyYXRpb24obm9kZSkpIHtcblx0XHRcdHJldHVybiAnbWV0aG9kJztcblx0XHR9XG5cdFx0aWYgKHRzLmlzRnVuY3Rpb25EZWNsYXJhdGlvbihub2RlKSB8fCB0cy5pc0Z1bmN0aW9uRXhwcmVzc2lvbihub2RlKSkge1xuXHRcdFx0cmV0dXJuICdmdW5jdGlvbic7XG5cdFx0fVxuXHRcdGlmICh0cy5pc0Fycm93RnVuY3Rpb24obm9kZSkpIHtcblx0XHRcdHJldHVybiAnYXJyb3cnO1xuXHRcdH1cblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cblx0cHJpdmF0ZSBoYXNCb2R5IChub2RlOiB0cy5Ob2RlKTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgYm9keUhvbGRlciA9IG5vZGUgYXMgdHMuRnVuY3Rpb25MaWtlRGVjbGFyYXRpb247XG5cdFx0Y29uc3QgcmVzdWx0ID0gYm9keUhvbGRlci5ib2R5ICE9PSB1bmRlZmluZWQ7XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXG5cdHByaXZhdGUgZW50ZXJTY29wZSAoXG5cdFx0bm9kZTogdHMuTm9kZSxcblx0XHRraW5kOiBTY29wZUtpbmQsXG5cdFx0c291cmNlRmlsZTogdHMuU291cmNlRmlsZSxcblx0XHRmaWxlUGF0aDogc3RyaW5nLFxuXHRcdHNjb3BlU3RhY2s6IHN0cmluZ1tdLFxuXHRcdGNsYXNzU3RhY2s6IHN0cmluZ1tdLFxuXHRcdHNwYW5zOiBTY29wZVNwYW5bXVxuXHQpOiB2b2lkIHtcblx0XHRjb25zdCB7IGxpbmUsIGNoYXJhY3RlciB9ID0gc291cmNlRmlsZS5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihub2RlLmdldFN0YXJ0KHNvdXJjZUZpbGUpKTtcblx0XHRjb25zdCBzY29wZUlkID0gYCR7ZmlsZVBhdGh9OiR7bGluZSArIDF9OiR7Y2hhcmFjdGVyICsgMX1gO1xuXHRcdGNvbnN0IHBhcmVudFNjb3BlSWQgPSBzY29wZVN0YWNrWyBzY29wZVN0YWNrLmxlbmd0aCAtIDEgXTtcblxuXHRcdGNvbnN0IHNjb3BlOiBTY29wZUluZm8gPSB7XG5cdFx0XHRzY29wZUlkLFxuXHRcdFx0bmFtZSAgICAgOiB0aGlzLnNjb3BlTmFtZShub2RlLCBraW5kLCBmaWxlUGF0aCwgbGluZSArIDEsIGNsYXNzU3RhY2spLFxuXHRcdFx0a2luZCxcblx0XHRcdHBhcmVudFNjb3BlSWQsXG5cdFx0XHRmaWxlUGF0aCxcblx0XHRcdGxvY2F0aW9uIDogc2NvcGVJZCxcblx0XHR9O1xuXHRcdHRoaXMuc2NvcGVzLnNldChzY29wZUlkLCBzY29wZSk7XG5cdFx0c3BhbnMucHVzaCh0aGlzLnNwYW5PZihub2RlLCBzb3VyY2VGaWxlLCBzY29wZUlkKSk7XG5cdFx0c2NvcGVTdGFjay5wdXNoKHNjb3BlSWQpO1xuXG5cdFx0Ly8gUGFyYW1ldGVycyBhcmUgdmFyaWFibGVzIG9mIHRoZSBzY29wZTsgdGhleSBhcmUgcmVhc3NpZ25hYmxlLCBzb1xuXHRcdC8vIGlzTXV0YWJsZTogdHJ1ZSDigJQgYSBwYXJhbWV0ZXIgcmVhc3NpZ25tZW50IHRlcm1pbmF0ZXMgdGhlIGZsb3cgdG9vXG5cdFx0Y29uc3QgZm4gPSBub2RlIGFzIHRzLkZ1bmN0aW9uTGlrZURlY2xhcmF0aW9uO1xuXHRcdGZvciAoY29uc3QgcGFyYW0gb2YgZm4ucGFyYW1ldGVycyA/PyBbXSkge1xuXHRcdFx0aWYgKCF0cy5pc0lkZW50aWZpZXIocGFyYW0ubmFtZSkpIHtcblx0XHRcdFx0Ly8gU2tpcCBkZXN0cnVjdHVyZWQgcGFyYW1ldGVycyAoYW5hbHl6ZXIgcHJlY2VkZW50KVxuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblx0XHRcdHRoaXMucmVjb3JkVmFyaWFibGUocGFyYW0ubmFtZS50ZXh0LCBwYXJhbS5uYW1lLCBzb3VyY2VGaWxlLCBzY29wZVN0YWNrLCB7XG5cdFx0XHRcdGlzUGFyYW1ldGVyIDogdHJ1ZSxcblx0XHRcdFx0Ly8gYHRoaXNgIHBhcmFtZXRlcnMgKG1uZW1vbmljYSBoYW5kbGVycykgYXJlIG5ldmVyIHJlYXNzaWduYWJsZVxuXHRcdFx0XHRpc011dGFibGUgICA6IHBhcmFtLm5hbWUudGV4dCAhPT0gJ3RoaXMnLFxuXHRcdFx0XHRhbm5vdGF0aW9uICA6IHBhcmFtLnR5cGU/LmdldFRleHQoc291cmNlRmlsZSksXG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogRGVjaXNpb24gOCBsYWJlbGluZzogZnVuY3Rpb25zIGJ5IG5hbWU7IG1ldGhvZHMgYXMgQ2xhc3MubWV0aG9kO1xuXHQgKiBhcnJvd3MvZnVuY3Rpb25zIGJvdW5kIHRvIGEgdmFyaWFibGUgb3IgcHJvcGVydHkgdGFrZSB0aGF0IG5hbWU7XG5cdCAqIGFub255bW91cyBob2xkZXJzIGFyZSBsYWJlbGVkIGZpbGU6bGluZS5cblx0ICovXG5cdHByaXZhdGUgc2NvcGVOYW1lIChcblx0XHRub2RlOiB0cy5Ob2RlLFxuXHRcdGtpbmQ6IFNjb3BlS2luZCxcblx0XHRmaWxlUGF0aDogc3RyaW5nLFxuXHRcdGxpbmU6IG51bWJlcixcblx0XHRjbGFzc1N0YWNrOiBzdHJpbmdbXVxuXHQpOiBzdHJpbmcge1xuXHRcdGNvbnN0IG5hbWVkID0gbm9kZSBhcyB0cy5OYW1lZERlY2xhcmF0aW9uO1xuXHRcdGlmIChraW5kID09PSAnbWV0aG9kJykge1xuXHRcdFx0Y29uc3QgbWV0aG9kTmFtZSA9IG5hbWVkLm5hbWUgPyBuYW1lZC5uYW1lLmdldFRleHQoKSA6ICdhbm9ueW1vdXMnO1xuXHRcdFx0Y29uc3QgY2xhc3NOYW1lID0gY2xhc3NTdGFja1sgY2xhc3NTdGFjay5sZW5ndGggLSAxIF07XG5cdFx0XHRjb25zdCBjdG9yID0gdHMuaXNDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKG5vZGUpID8gJ2NvbnN0cnVjdG9yJyA6IG1ldGhvZE5hbWU7XG5cdFx0XHRjb25zdCBtZXRob2RTY29wZU5hbWUgPSBjbGFzc05hbWUgPyBgJHtjbGFzc05hbWV9LiR7Y3Rvcn1gIDogY3Rvcjtcblx0XHRcdHJldHVybiBtZXRob2RTY29wZU5hbWU7XG5cdFx0fVxuXHRcdGlmIChuYW1lZC5uYW1lICYmIHRzLmlzSWRlbnRpZmllcihuYW1lZC5uYW1lKSkge1xuXHRcdFx0Y29uc3QgZGVjbGFyZWROYW1lID0gbmFtZWQubmFtZS50ZXh0O1xuXHRcdFx0cmV0dXJuIGRlY2xhcmVkTmFtZTtcblx0XHR9XG5cdFx0Ly8gQm91bmQgbmFtZXMgY29tZSBmcm9tIHRoZSBib3VuZE5hbWVzIG1hcCDigJQgcHJvZ3JhbSBmaWxlcyBtYXkgYmVcblx0XHQvLyB1bmJvdW5kLCBzbyBub2RlLnBhcmVudCBpcyBub3QgYSByZWxpYWJsZSBwYXRoIHRvIHRoZSB2YXJpYWJsZSBuYW1lXG5cdFx0Y29uc3QgYm91bmQgPSB0aGlzLmJvdW5kTmFtZXMuZ2V0KG5vZGUpO1xuXHRcdGlmIChib3VuZCkge1xuXHRcdFx0cmV0dXJuIGJvdW5kO1xuXHRcdH1cblx0XHRjb25zdCByZXN1bHQgPSBgJHtmaWxlUGF0aH06JHtsaW5lfWA7XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXG5cdHByaXZhdGUgc3Bhbk9mIChcblx0XHRub2RlOiB0cy5Ob2RlLFxuXHRcdHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUsXG5cdFx0c2NvcGVJZDogc3RyaW5nXG5cdCk6IFNjb3BlU3BhbiB7XG5cdFx0Y29uc3Qgc3RhcnQgPSBzb3VyY2VGaWxlLmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKG5vZGUuZ2V0U3RhcnQoc291cmNlRmlsZSkpO1xuXHRcdGNvbnN0IGVuZCA9IHNvdXJjZUZpbGUuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24obm9kZS5nZXRFbmQoKSk7XG5cdFx0Y29uc3Qgc3BhbjogU2NvcGVTcGFuID0ge1xuXHRcdFx0c2NvcGVJZCxcblx0XHRcdHN0YXJ0TGluZSA6IHN0YXJ0LmxpbmUgKyAxLFxuXHRcdFx0c3RhcnRDb2wgIDogc3RhcnQuY2hhcmFjdGVyICsgMSxcblx0XHRcdGVuZExpbmUgICA6IGVuZC5saW5lICsgMSxcblx0XHRcdGVuZENvbCAgICA6IGVuZC5jaGFyYWN0ZXIgKyAxLFxuXHRcdH07XG5cdFx0cmV0dXJuIHNwYW47XG5cdH1cblxuXHQvKipcblx0ICogUmVjb3JkIHRoZSBuYW1lIGFuIGFycm93L2Z1bmN0aW9uLWV4cHJlc3Npb24gaXMgYm91bmQgdG8sIHdpdGhvdXRcblx0ICogcmVseWluZyBvbiBub2RlLnBhcmVudCAodW5ib3VuZCBwcm9ncmFtIGZpbGVzKTogYGNvbnN0IGYgPSAoKSA9PiDigKZgLFxuXHQgKiBgeyBoYW5kbGVyOiAoKSA9PiDigKYgfWAsIGBjbGFzcyBDIHsgcnVuID0gKCkgPT4g4oCmIH1gLlxuXHQgKi9cblx0cHJpdmF0ZSBjb2xsZWN0Qm91bmROYW1lIChub2RlOiB0cy5Ob2RlKTogdm9pZCB7XG5cdFx0aWYgKHRzLmlzVmFyaWFibGVEZWNsYXJhdGlvbihub2RlKSAmJiB0cy5pc0lkZW50aWZpZXIobm9kZS5uYW1lKSAmJiBub2RlLmluaXRpYWxpemVyICYmXG5cdFx0XHQodHMuaXNBcnJvd0Z1bmN0aW9uKG5vZGUuaW5pdGlhbGl6ZXIpIHx8IHRzLmlzRnVuY3Rpb25FeHByZXNzaW9uKG5vZGUuaW5pdGlhbGl6ZXIpKSkge1xuXHRcdFx0dGhpcy5ib3VuZE5hbWVzLnNldChub2RlLmluaXRpYWxpemVyLCBub2RlLm5hbWUudGV4dCk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGlmICgodHMuaXNQcm9wZXJ0eUFzc2lnbm1lbnQobm9kZSkgfHwgdHMuaXNQcm9wZXJ0eURlY2xhcmF0aW9uKG5vZGUpKSAmJlxuXHRcdFx0dHMuaXNJZGVudGlmaWVyKG5vZGUubmFtZSkgJiYgbm9kZS5pbml0aWFsaXplciAmJlxuXHRcdFx0KHRzLmlzQXJyb3dGdW5jdGlvbihub2RlLmluaXRpYWxpemVyKSB8fCB0cy5pc0Z1bmN0aW9uRXhwcmVzc2lvbihub2RlLmluaXRpYWxpemVyKSkpIHtcblx0XHRcdHRoaXMuYm91bmROYW1lcy5zZXQobm9kZS5pbml0aWFsaXplciwgbm9kZS5uYW1lLnRleHQpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgY29sbGVjdFZhcmlhYmxlRGVjbGFyYXRpb25MaXN0IChcblx0XHRub2RlOiB0cy5Ob2RlLFxuXHRcdHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUsXG5cdFx0c2NvcGVTdGFjazogc3RyaW5nW11cblx0KTogdm9pZCB7XG5cdFx0aWYgKCF0cy5pc1ZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KG5vZGUpKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdC8vIEZsYWdzIGxpdmUgb24gdGhlIGxpc3QgaXRzZWxmIOKAlCBubyBwYXJlbnQgd2FsayBuZWVkZWQgKHRoZSBsaXN0J3Ncblx0XHQvLyBwYXJlbnQgbWF5IGJlIHVuc2V0IG9uIHVuYm91bmQgcHJvZ3JhbSBmaWxlcylcblx0XHRjb25zdCBpc0NvbnN0ID0gKG5vZGUuZmxhZ3MgJiB0cy5Ob2RlRmxhZ3MuQ29uc3QpICE9PSAwO1xuXHRcdGZvciAoY29uc3QgZGVjbCBvZiBub2RlLmRlY2xhcmF0aW9ucykge1xuXHRcdFx0Ly8gRGVzdHJ1Y3R1cmluZyBkZWNsYXJhdGlvbnMgYXJlIHNraXBwZWQ6IG9ubHkgcGxhaW5cblx0XHRcdC8vIGBjb25zdC9sZXQvdmFyIHggPSDigKZgIGhhcyBhbiBpZGVudGlmaWVyIG5hbWVcblx0XHRcdGlmICghdHMuaXNJZGVudGlmaWVyKGRlY2wubmFtZSkpIHtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLnJlY29yZFZhcmlhYmxlKGRlY2wubmFtZS50ZXh0LCBkZWNsLm5hbWUsIHNvdXJjZUZpbGUsIHNjb3BlU3RhY2ssIHtcblx0XHRcdFx0aXNQYXJhbWV0ZXIgOiBmYWxzZSxcblx0XHRcdFx0aXNNdXRhYmxlICAgOiAhaXNDb25zdCxcblx0XHRcdFx0YW5ub3RhdGlvbiAgOiBkZWNsLnR5cGU/LmdldFRleHQoc291cmNlRmlsZSksXG5cdFx0XHRcdGluaXRpYWxpemVyIDogZGVjbC5pbml0aWFsaXplcixcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgcmVjb3JkVmFyaWFibGUgKFxuXHRcdG5hbWU6IHN0cmluZyxcblx0XHRub2RlOiB0cy5Ob2RlLFxuXHRcdHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUsXG5cdFx0c2NvcGVTdGFjazogc3RyaW5nW10sXG5cdFx0b3B0aW9uczoge1xuXHRcdFx0aXNQYXJhbWV0ZXI6IGJvb2xlYW47XG5cdFx0XHRpc011dGFibGU6IGJvb2xlYW47XG5cdFx0XHRhbm5vdGF0aW9uPzogc3RyaW5nO1xuXHRcdFx0aW5pdGlhbGl6ZXI/OiB0cy5FeHByZXNzaW9uO1xuXHRcdH1cblx0KTogdm9pZCB7XG5cdFx0Y29uc3Qgc2NvcGVJZCA9IHNjb3BlU3RhY2tbIHNjb3BlU3RhY2subGVuZ3RoIC0gMSBdO1xuXHRcdGNvbnN0IHsgbGluZSwgY2hhcmFjdGVyIH0gPSBzb3VyY2VGaWxlLmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKG5vZGUuZ2V0U3RhcnQoc291cmNlRmlsZSkpO1xuXHRcdGNvbnN0IGZpbGVQYXRoID0gcGF0aC5yZXNvbHZlKHNvdXJjZUZpbGUuZmlsZU5hbWUpO1xuXG5cdFx0Y29uc3QgdmFyaWFibGU6IFNjb3BlVmFyaWFibGUgPSB7XG5cdFx0XHRuYW1lLFxuXHRcdFx0c2NvcGVJZCxcblx0XHRcdGRlY2xhcmF0aW9uICAgOiBgJHtmaWxlUGF0aH06JHtsaW5lICsgMX06JHtjaGFyYWN0ZXIgKyAxfWAsXG5cdFx0XHRpc1BhcmFtZXRlciAgIDogb3B0aW9ucy5pc1BhcmFtZXRlcixcblx0XHRcdGlzTXV0YWJsZSAgICAgOiBvcHRpb25zLmlzTXV0YWJsZSxcblx0XHRcdHJlYXNzaWdubWVudHMgOiBbXSxcblx0XHR9O1xuXHRcdGNvbnN0IGluZmVycmVkID0gb3B0aW9ucy5hbm5vdGF0aW9uID8/IChcblx0XHRcdG9wdGlvbnMuaW5pdGlhbGl6ZXIgPyBMb2NhbFNjb3BlV2Fsa2VyLmluZmVySW5pdGlhbGl6ZXJLaW5kKG9wdGlvbnMuaW5pdGlhbGl6ZXIpIDogdW5kZWZpbmVkXG5cdFx0KTtcblx0XHRpZiAoaW5mZXJyZWQpIHtcblx0XHRcdHZhcmlhYmxlLmluZmVycmVkVHlwZSA9IGluZmVycmVkO1xuXHRcdH1cblxuXHRcdGNvbnN0IHBlbmRpbmdFbnRyeTogUGVuZGluZ1ZhcmlhYmxlID0ge1xuXHRcdFx0dmFyaWFibGUsXG5cdFx0XHRzY29wZUNoYWluIDogWyAuLi5zY29wZVN0YWNrIF0ucmV2ZXJzZSgpLFxuXHRcdFx0YW5ub3RhdGlvbiA6IG9wdGlvbnMuYW5ub3RhdGlvbixcblx0XHR9O1xuXHRcdGNvbnN0IHsgaW5pdGlhbGl6ZXIgfSA9IG9wdGlvbnM7XG5cdFx0aWYgKGluaXRpYWxpemVyICYmIHRzLmlzTmV3RXhwcmVzc2lvbihpbml0aWFsaXplcikpIHtcblx0XHRcdGNvbnN0IHsgZXhwcmVzc2lvbiB9ID0gaW5pdGlhbGl6ZXI7XG5cdFx0XHRpZiAodHMuaXNJZGVudGlmaWVyKGV4cHJlc3Npb24pKSB7XG5cdFx0XHRcdHBlbmRpbmdFbnRyeS5uZXdOYW1lID0gZXhwcmVzc2lvbi50ZXh0O1xuXHRcdFx0fSBlbHNlIGlmICh0cy5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihleHByZXNzaW9uKSkge1xuXHRcdFx0XHRjb25zdCBjaGFpbiA9IExvY2FsU2NvcGVXYWxrZXIudW53cmFwUHJvcGVydHlBY2Nlc3MoZXhwcmVzc2lvbik7XG5cdFx0XHRcdGlmIChjaGFpbi5sZW5ndGggPiAxKSB7XG5cdFx0XHRcdFx0Y29uc3QgWyByb290LCAuLi5yZXN0IF0gPSBjaGFpbjtcblx0XHRcdFx0XHRwZW5kaW5nRW50cnkubmV3Q2hhaW5Sb290ID0gcm9vdDtcblx0XHRcdFx0XHRwZW5kaW5nRW50cnkubmV3Q2hhaW5SZXN0ID0gcmVzdDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoaW5pdGlhbGl6ZXIgJiYgdHMuaXNDYWxsRXhwcmVzc2lvbihpbml0aWFsaXplcikpIHtcblx0XHRcdGNvbnN0IGxvb2t1cCA9IExvY2FsU2NvcGVXYWxrZXIudW53cmFwTG9va3VwQ2FsbChpbml0aWFsaXplcik7XG5cdFx0XHRpZiAobG9va3VwKSB7XG5cdFx0XHRcdHBlbmRpbmdFbnRyeS5sb29rdXBQYXRoID0gbG9va3VwLnBhdGg7XG5cdFx0XHRcdHBlbmRpbmdFbnRyeS5sb29rdXBSZWNlaXZlciA9IGxvb2t1cC5yZWNlaXZlcjtcblx0XHRcdH1cblx0XHR9XG5cdFx0dGhpcy5wZW5kaW5nLnB1c2gocGVuZGluZ0VudHJ5KTtcblx0XHR0aGlzLnZhcmlhYmxlcy5zZXQoYCR7c2NvcGVJZH0jJHtuYW1lfWAsIHZhcmlhYmxlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBgYS5iLmNgIOKGkiBbJ2EnLCAnYicsICdjJ10gKGxlZnQtdG8tcmlnaHQpOyB1bmRlZmluZWQtc2FmZSBmb3Jcblx0ICogbm9uLWlkZW50aWZpZXIgcm9vdHMuXG5cdCAqL1xuXHRwcml2YXRlIHN0YXRpYyB1bndyYXBQcm9wZXJ0eUFjY2VzcyAoZXhwcmVzc2lvbjogdHMuUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKTogc3RyaW5nW10ge1xuXHRcdGNvbnN0IGNoYWluOiBzdHJpbmdbXSA9IFtdO1xuXHRcdGxldCBjdXJyZW50OiB0cy5FeHByZXNzaW9uID0gZXhwcmVzc2lvbjtcblx0XHR3aGlsZSAodHMuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oY3VycmVudCkpIHtcblx0XHRcdGNoYWluLnVuc2hpZnQoY3VycmVudC5uYW1lLnRleHQpO1xuXHRcdFx0Y3VycmVudCA9IGN1cnJlbnQuZXhwcmVzc2lvbjtcblx0XHR9XG5cdFx0aWYgKHRzLmlzSWRlbnRpZmllcihjdXJyZW50KSkge1xuXHRcdFx0Y2hhaW4udW5zaGlmdChjdXJyZW50LnRleHQpO1xuXHRcdH1cblx0XHRyZXR1cm4gY2hhaW47XG5cdH1cblxuXHQvKipcblx0ICogYGxvb2t1cCgnQS5CJylgLCBgQXBwLmxvb2t1cCgnQS5CJylgLCBgbG9va3VwKHNvdXJjZSwgJ0EuQicpYCDihpIgdGhlXG5cdCAqIHN0cmluZy1saXRlcmFsIHBhdGggcGx1cyB0aGUgcmVjZWl2ZXIncyByb290IGlkZW50aWZpZXIgd2hlbiB0aGVyZSBpc1xuXHQgKiBvbmUuIE9ubHkgbGl0ZXJhbCBwYXRocyBhcmUgdHJhY2tlZDogYSBjb21wdXRlZCBwYXRoIGlzIGRhdGEgdGhlIHN0YXRpY1xuXHQgKiB3YWxrZXIgY2Fubm90IGZvbGxvdywgc28gaXQgaXMgc2tpcHBlZCAodGhlIGFuYWx5emVyJ3MgdXNhZ2UgcGFzcyBzdGlsbFxuXHQgKiByZWNvcmRzIHRoZSBsb29rdXAgY2FsbCBpdHNlbGYpLlxuXHQgKi9cblx0cHJpdmF0ZSBzdGF0aWMgdW53cmFwTG9va3VwQ2FsbCAoY2FsbDogdHMuQ2FsbEV4cHJlc3Npb24pOiB7IHBhdGg6IHN0cmluZzsgcmVjZWl2ZXI/OiBzdHJpbmcgfSB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgeyBleHByZXNzaW9uIH0gPSBjYWxsO1xuXHRcdGNvbnN0IFsgZmlyc3RBcmcsIHNlY29uZEFyZyBdID0gY2FsbC5hcmd1bWVudHM7XG5cblx0XHRpZiAodHMuaXNJZGVudGlmaWVyKGV4cHJlc3Npb24pKSB7XG5cdFx0XHRpZiAoZXhwcmVzc2lvbi50ZXh0ICE9PSAnbG9va3VwJykge1xuXHRcdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdFx0fVxuXHRcdFx0Ly8gbG9va3VwKCdBLkInKVxuXHRcdFx0aWYgKGZpcnN0QXJnICYmIHRzLmlzU3RyaW5nTGl0ZXJhbExpa2UoZmlyc3RBcmcpKSB7XG5cdFx0XHRcdGNvbnN0IHJlc3VsdCA9IHsgcGF0aCA6IGZpcnN0QXJnLnRleHQgfTtcblx0XHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHRcdH1cblx0XHRcdC8vIGxvb2t1cChzb3VyY2UsICdBLkInKSDigJQgZXhwbGljaXQtc291cmNlIGZvcm1cblx0XHRcdGlmIChmaXJzdEFyZyAmJiB0cy5pc0lkZW50aWZpZXIoZmlyc3RBcmcpICYmIHNlY29uZEFyZyAmJiB0cy5pc1N0cmluZ0xpdGVyYWxMaWtlKHNlY29uZEFyZykpIHtcblx0XHRcdFx0Y29uc3QgcmVzdWx0ID0geyBwYXRoIDogc2Vjb25kQXJnLnRleHQsIHJlY2VpdmVyIDogZmlyc3RBcmcudGV4dCB9O1xuXHRcdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cblx0XHRpZiAodHMuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oZXhwcmVzc2lvbikgJiYgZXhwcmVzc2lvbi5uYW1lLnRleHQgPT09ICdsb29rdXAnKSB7XG5cdFx0XHRpZiAoIWZpcnN0QXJnIHx8ICF0cy5pc1N0cmluZ0xpdGVyYWxMaWtlKGZpcnN0QXJnKSkge1xuXHRcdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgY2hhaW4gPSBMb2NhbFNjb3BlV2Fsa2VyLnVud3JhcFByb3BlcnR5QWNjZXNzKGV4cHJlc3Npb24pO1xuXHRcdFx0Ly8gY2hhaW4gPCAyIG1lYW5zIG5vIGlkZW50aWZpZXIgcmVjZWl2ZXIgKGUuZy4gdGhpcy5sb29rdXAoJ0EuQicpKVxuXHRcdFx0aWYgKGNoYWluLmxlbmd0aCA8IDIpIHtcblx0XHRcdFx0Y29uc3QgcGF0aE9ubHkgPSB7IHBhdGggOiBmaXJzdEFyZy50ZXh0IH07XG5cdFx0XHRcdHJldHVybiBwYXRoT25seTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IFsgcmVjZWl2ZXIgXSA9IGNoYWluO1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0geyBwYXRoIDogZmlyc3RBcmcudGV4dCwgcmVjZWl2ZXIgfTtcblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVhcCBpbml0aWFsaXplciBjbGFzc2lmaWNhdGlvbiBmb3IgaW5mZXJyZWRUeXBlLiBEZWxpYmVyYXRlbHkgdGlueTpcblx0ICogbGl0ZXJhbCBraW5kcyBhbmQgYG5ldyBYYCBjb25zdHJ1Y3RvciBuYW1lczsgZXZlcnl0aGluZyBlbHNlIHVuZGVmaW5lZC5cblx0ICovXG5cdHByaXZhdGUgc3RhdGljIGluZmVySW5pdGlhbGl6ZXJLaW5kIChpbml0aWFsaXplcjogdHMuRXhwcmVzc2lvbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0aWYgKHRzLmlzU3RyaW5nTGl0ZXJhbExpa2UoaW5pdGlhbGl6ZXIpIHx8IHRzLmlzVGVtcGxhdGVFeHByZXNzaW9uKGluaXRpYWxpemVyKSkge1xuXHRcdFx0cmV0dXJuICdzdHJpbmcnO1xuXHRcdH1cblx0XHRpZiAodHMuaXNOdW1lcmljTGl0ZXJhbChpbml0aWFsaXplcikpIHtcblx0XHRcdHJldHVybiAnbnVtYmVyJztcblx0XHR9XG5cdFx0aWYgKGluaXRpYWxpemVyLmtpbmQgPT09IHRzLlN5bnRheEtpbmQuVHJ1ZUtleXdvcmQgfHwgaW5pdGlhbGl6ZXIua2luZCA9PT0gdHMuU3ludGF4S2luZC5GYWxzZUtleXdvcmQpIHtcblx0XHRcdHJldHVybiAnYm9vbGVhbic7XG5cdFx0fVxuXHRcdGlmICh0cy5pc0Fycm93RnVuY3Rpb24oaW5pdGlhbGl6ZXIpIHx8IHRzLmlzRnVuY3Rpb25FeHByZXNzaW9uKGluaXRpYWxpemVyKSkge1xuXHRcdFx0cmV0dXJuICdmdW5jdGlvbic7XG5cdFx0fVxuXHRcdGlmICh0cy5pc0FycmF5TGl0ZXJhbEV4cHJlc3Npb24oaW5pdGlhbGl6ZXIpKSB7XG5cdFx0XHRyZXR1cm4gJ0FycmF5PHVua25vd24+Jztcblx0XHR9XG5cdFx0aWYgKHRzLmlzTmV3RXhwcmVzc2lvbihpbml0aWFsaXplcikgJiYgdHMuaXNJZGVudGlmaWVyKGluaXRpYWxpemVyLmV4cHJlc3Npb24pKSB7XG5cdFx0XHRjb25zdCByZXN1bHQgPSBpbml0aWFsaXplci5leHByZXNzaW9uLnRleHQ7XG5cdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdH1cblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlYXNzaWdubWVudCBvZiBhIGxldC92YXIvcGFyYW1ldGVyIGJpbmRpbmc6IGEgZmxvdy10ZXJtaW5hdGlvbiBwb2ludFxuXHQgKiAoZGVjaXNpb24gNikuIFJlY29yZGVkIG9uIHRoZSB2YXJpYWJsZSBzbyB0aGUgUGhhc2UgMyB3YWxrZXIgc3RvcHNcblx0ICogZm9sbG93aW5nIHRoYXQgYmluZGluZyB0aGVyZS5cblx0ICovXG5cdHByaXZhdGUgY29sbGVjdFJlYXNzaWdubWVudCAoXG5cdFx0bm9kZTogdHMuTm9kZSxcblx0XHRzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlLFxuXHRcdHNjb3BlU3RhY2s6IHN0cmluZ1tdXG5cdCk6IHZvaWQge1xuXHRcdGxldCB0YXJnZXQ6IHRzLklkZW50aWZpZXIgfCB1bmRlZmluZWQ7XG5cdFx0aWYgKHRzLmlzQmluYXJ5RXhwcmVzc2lvbihub2RlKSAmJlxuXHRcdFx0QVNTSUdOTUVOVF9PUEVSQVRPUlMuaGFzKG5vZGUub3BlcmF0b3JUb2tlbi5raW5kKSAmJlxuXHRcdFx0dHMuaXNJZGVudGlmaWVyKG5vZGUubGVmdCkpIHtcblx0XHRcdHRhcmdldCA9IG5vZGUubGVmdDtcblx0XHR9XG5cdFx0aWYgKCh0cy5pc1ByZWZpeFVuYXJ5RXhwcmVzc2lvbihub2RlKSB8fCB0cy5pc1Bvc3RmaXhVbmFyeUV4cHJlc3Npb24obm9kZSkpICYmXG5cdFx0XHQobm9kZS5vcGVyYXRvciA9PT0gdHMuU3ludGF4S2luZC5QbHVzUGx1c1Rva2VuIHx8IG5vZGUub3BlcmF0b3IgPT09IHRzLlN5bnRheEtpbmQuTWludXNNaW51c1Rva2VuKSAmJlxuXHRcdFx0dHMuaXNJZGVudGlmaWVyKG5vZGUub3BlcmFuZCkpIHtcblx0XHRcdHRhcmdldCA9IG5vZGUub3BlcmFuZDtcblx0XHR9XG5cdFx0aWYgKCF0YXJnZXQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Ly8gTm90ZTogYSBkZWNsYXJhdGlvbiBpbml0aWFsaXplciAoYGxldCB4ID0gNWApIGlzIGEgVmFyaWFibGVEZWNsYXJhdGlvbixcblx0XHQvLyBuZXZlciBhIEJpbmFyeUV4cHJlc3Npb24sIHNvIGl0IGNhbm5vdCByZWFjaCB0aGlzIHBhdGggYXMgYSBcInJlYXNzaWdubWVudFwiXG5cblx0XHRjb25zdCB2YXJpYWJsZSA9IHRoaXMuZmluZFZhcmlhYmxlKHRhcmdldC50ZXh0LCBzY29wZVN0YWNrKTtcblx0XHRpZiAoIXZhcmlhYmxlKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IGZpbGVQYXRoID0gcGF0aC5yZXNvbHZlKHNvdXJjZUZpbGUuZmlsZU5hbWUpO1xuXHRcdGNvbnN0IHsgbGluZSwgY2hhcmFjdGVyIH0gPSBzb3VyY2VGaWxlLmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKHRhcmdldC5nZXRTdGFydChzb3VyY2VGaWxlKSk7XG5cdFx0dmFyaWFibGUucmVhc3NpZ25tZW50cy5wdXNoKGAke2ZpbGVQYXRofToke2xpbmUgKyAxfToke2NoYXJhY3RlciArIDF9YCk7XG5cdH1cblxuXHQvKipcblx0ICogRmluZCBhIHZhcmlhYmxlIGJ5IG5hbWUgd2Fsa2luZyB0aGUgc2NvcGUgY2hhaW4gb3V0d2FyZC5cblx0ICovXG5cdHByaXZhdGUgZmluZFZhcmlhYmxlIChuYW1lOiBzdHJpbmcsIHNjb3BlU3RhY2s6IHN0cmluZ1tdKTogU2NvcGVWYXJpYWJsZSB8IHVuZGVmaW5lZCB7XG5cdFx0Zm9yIChsZXQgaSA9IHNjb3BlU3RhY2subGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcblx0XHRcdGNvbnN0IHZhcmlhYmxlID0gdGhpcy52YXJpYWJsZXMuZ2V0KGAke3Njb3BlU3RhY2tbIGkgXX0jJHtuYW1lfWApO1xuXHRcdFx0aWYgKHZhcmlhYmxlKSB7XG5cdFx0XHRcdHJldHVybiB2YXJpYWJsZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdHByaXZhdGUgcmVzb2x2ZVZhcmlhYmxlVHlwZVBhdGggKGVudHJ5OiBQZW5kaW5nVmFyaWFibGUsIHJlc29sdmVyOiBTY29wZVR5cGVSZXNvbHZlcik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0Ly8gYG5ldyBTb21lVHlwZSguLi4pYCDigJQgYmFyZSBjb25zdHJ1Y3RvciBuYW1lXG5cdFx0aWYgKGVudHJ5Lm5ld05hbWUpIHtcblx0XHRcdGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZXIucmVzb2x2ZUJ5TmFtZShlbnRyeS5uZXdOYW1lKTtcblx0XHRcdGlmIChyZXNvbHZlZCkge1xuXHRcdFx0XHRyZXR1cm4gcmVzb2x2ZWQ7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gYG5ldyBpbnN0YW5jZS5TdWIuVHlwZSguLi4pYCDigJQgY2hhaW4gb2ZmIGEgdHJhY2tlZCB2YXJpYWJsZSdzIHR5cGVQYXRoXG5cdFx0aWYgKGVudHJ5Lm5ld0NoYWluUm9vdCAmJiBlbnRyeS5uZXdDaGFpblJlc3QgJiYgZW50cnkubmV3Q2hhaW5SZXN0Lmxlbmd0aCA+IDApIHtcblx0XHRcdGZvciAoY29uc3Qgc2NvcGVJZCBvZiBlbnRyeS5zY29wZUNoYWluKSB7XG5cdFx0XHRcdGNvbnN0IHJvb3RWYXJpYWJsZSA9IHRoaXMudmFyaWFibGVzLmdldChgJHtzY29wZUlkfSMke2VudHJ5Lm5ld0NoYWluUm9vdH1gKTtcblx0XHRcdFx0aWYgKCFyb290VmFyaWFibGU/LnR5cGVQYXRoKSB7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgY2FuZGlkYXRlID0gWyByb290VmFyaWFibGUudHlwZVBhdGgsIC4uLmVudHJ5Lm5ld0NoYWluUmVzdCBdLmpvaW4oJy4nKTtcblx0XHRcdFx0aWYgKHJlc29sdmVyLmhhc1BhdGgoY2FuZGlkYXRlKSkge1xuXHRcdFx0XHRcdHJldHVybiBjYW5kaWRhdGU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBgbG9va3VwKCdBLkInKWAgLyBgcmVjZWl2ZXIubG9va3VwKCdBLkInKWAgaW5pdGlhbGl6ZXJzXG5cdFx0aWYgKGVudHJ5Lmxvb2t1cFBhdGgpIHtcblx0XHRcdC8vIFJlY2VpdmVyLXJlbGF0aXZlIGZpcnN0OiBgdXNlci5sb29rdXAoJ0FkbWluRW50aXR5JylgIHJlc29sdmVzXG5cdFx0XHQvLyBhZ2FpbnN0IHRoZSByZWNlaXZlciB2YXJpYWJsZSdzIHR5cGVQYXRoIHdoZW4gdGhhdCB5aWVsZHMgYVxuXHRcdFx0Ly8ga25vd24gcGF0aCAobWlycm9ycyB0aGUgYW5hbHl6ZXIncyByZWxhdGl2ZS10aGVuLXJvb3QgcnVsZSlcblx0XHRcdGlmIChlbnRyeS5sb29rdXBSZWNlaXZlcikge1xuXHRcdFx0XHRmb3IgKGNvbnN0IHNjb3BlSWQgb2YgZW50cnkuc2NvcGVDaGFpbikge1xuXHRcdFx0XHRcdGNvbnN0IHJlY2VpdmVyVmFyaWFibGUgPSB0aGlzLnZhcmlhYmxlcy5nZXQoYCR7c2NvcGVJZH0jJHtlbnRyeS5sb29rdXBSZWNlaXZlcn1gKTtcblx0XHRcdFx0XHRpZiAoIXJlY2VpdmVyVmFyaWFibGU/LnR5cGVQYXRoKSB7XG5cdFx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29uc3QgY2FuZGlkYXRlID0gYCR7cmVjZWl2ZXJWYXJpYWJsZS50eXBlUGF0aH0uJHtlbnRyeS5sb29rdXBQYXRofWA7XG5cdFx0XHRcdFx0aWYgKHJlc29sdmVyLmhhc1BhdGgoY2FuZGlkYXRlKSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGNhbmRpZGF0ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmIChyZXNvbHZlci5oYXNQYXRoKGVudHJ5Lmxvb2t1cFBhdGgpKSB7XG5cdFx0XHRcdHJldHVybiBlbnRyeS5sb29rdXBQYXRoO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgYnlOYW1lID0gcmVzb2x2ZXIucmVzb2x2ZUJ5TmFtZShlbnRyeS5sb29rdXBQYXRoKTtcblx0XHRcdGlmIChieU5hbWUpIHtcblx0XHRcdFx0cmV0dXJuIGJ5TmFtZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBUeXBlIGFubm90YXRpb246ICdVc2VyRW50aXR5X1VzZXJSZXNwb25zZScgKHRhY3RpY2EgdHlwZXMudHMgbmFtaW5nKVxuXHRcdC8vIOKGkiBkb3R0ZWQgcGF0aCwgb3IgYSBiYXJlIGtub3duIHR5cGUgbmFtZVxuXHRcdGlmIChlbnRyeS5hbm5vdGF0aW9uKSB7XG5cdFx0XHRjb25zdCBkb3R0ZWQgPSBlbnRyeS5hbm5vdGF0aW9uLnJlcGxhY2UoL18vZywgJy4nKTtcblx0XHRcdGlmIChkb3R0ZWQuaW5jbHVkZXMoJy4nKSAmJiByZXNvbHZlci5oYXNQYXRoKGRvdHRlZCkpIHtcblx0XHRcdFx0cmV0dXJuIGRvdHRlZDtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGJ5TmFtZSA9IHJlc29sdmVyLnJlc29sdmVCeU5hbWUoZW50cnkuYW5ub3RhdGlvbik7XG5cdFx0XHRpZiAoYnlOYW1lKSB7XG5cdFx0XHRcdHJldHVybiBieU5hbWU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxufVxuIl19
|
|
593
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NvcGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Njb3Blcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUViLDJDQUE2QjtBQUM3QiwrQ0FBaUM7QUE0RGpDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxHQUFHLENBQWdCO0lBQ25ELEVBQUUsQ0FBQyxVQUFVLENBQUMsV0FBVztJQUN6QixFQUFFLENBQUMsVUFBVSxDQUFDLGVBQWU7SUFDN0IsRUFBRSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0I7SUFDOUIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUI7SUFDakMsRUFBRSxDQUFDLFVBQVUsQ0FBQywyQkFBMkI7SUFDekMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0I7SUFDOUIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0I7SUFDaEMsRUFBRSxDQUFDLFVBQVUsQ0FBQywyQkFBMkI7SUFDekMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxpQ0FBaUM7SUFDL0MsRUFBRSxDQUFDLFVBQVUsQ0FBQyw0Q0FBNEM7SUFDMUQsRUFBRSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0I7SUFDbEMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxjQUFjO0lBQzVCLEVBQUUsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCO0lBQzlCLEVBQUUsQ0FBQyxVQUFVLENBQUMsNkJBQTZCO0lBQzNDLEVBQUUsQ0FBQyxVQUFVLENBQUMsaUJBQWlCO0lBQy9CLEVBQUUsQ0FBQyxVQUFVLENBQUMsMkJBQTJCO0NBQ3pDLENBQUMsQ0FBQztBQUVIOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFhLGdCQUFnQjtJQUE3QjtRQUNTLFdBQU0sR0FBRyxJQUFJLEdBQUcsRUFBcUIsQ0FBQztRQUN0QyxVQUFLLEdBQUcsSUFBSSxHQUFHLEVBQXVCLENBQUM7UUFDdkMsY0FBUyxHQUFHLElBQUksR0FBRyxF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Q0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ25ELElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7Z0JBQ3RELE9BQU8sTUFBTSxDQUFDO1lBQ2YsQ0FBQztZQUNELE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3hELElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1osT0FBTyxNQUFNLENBQUM7WUFDZixDQUFDO1FBQ0YsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ2xCLENBQUM7Q0FDRDtBQTlsQkQsNENBOGxCQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuaW1wb3J0IHtcblx0U2NvcGVBbmFseXNpcywgU2NvcGVJbmZvLCBTY29wZUtpbmQsIFNjb3BlVmFyaWFibGUsIFVzYWdlSW5mb1xufSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBDb21waWxlLXRpbWUgdmlldyBvdmVyIHRoZSBhbmFseXplcidzIGRlZmluaXRpb25zLCB1c2VkIHRvIGF0dGFjaCBtbmVtb25pY2FcbiAqIHR5cGUgcGF0aHMgdG8gdmFyaWFibGVzLiBOYW1lLWJhc2VkIGhldXJpc3RpY3Mgb25seSDigJQgdGhlIG5vLWdldFR5cGVDaGVja2VyKClcbiAqIHByZWNlZGVudCBzdGF5cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTY29wZVR5cGVSZXNvbHZlciB7XG5cdC8qKiBSZXNvbHZlIGEgYmFyZSBjb25zdHJ1Y3Rvci90eXBlIG5hbWUgdG8gYSBtbmVtb25pY2EgZnVsbFBhdGggKHVuZGVmaW5lZCB3aGVuIHVua25vd24gb3IgYW1iaWd1b3VzKSAqL1xuXHRyZXNvbHZlQnlOYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0LyoqIFRydWUgd2hlbiB0aGUgZG90dGVkIHBhdGggaXMgYSBrbm93biBtbmVtb25pY2EgdHlwZSAqL1xuXHRoYXNQYXRoKGZ1bGxQYXRoOiBzdHJpbmcpOiBib29sZWFuO1xuXHQvKipcblx0ICogT3B0aW9uYWwgbG9va3VwLWxhdyBkZWxlZ2F0ZTogcmVzb2x2ZSBhIGBsb29rdXAoKWAgaW5pdGlhbGl6ZXIgY2FsbFxuXHQgKiB0aHJvdWdoIHRoZSBhbmFseXplcidzIGZ1bGwgdGllciBsYXcgKHZhbHVlIHNjb3BlLCBpbXBvcnQgc2NvcGUsXG5cdCAqIHNvdXJjZS1yZWxhdGl2ZSwgcm9vdCkuIFRoZSB3YWxrZXIgcnVucyBpdHMgb3duIHNjb3BlLWNoYWluXG5cdCAqIHZhbHVlLXNjb3BlIHRpZXIgZmlyc3Q7IHRoaXMgYmFja3MgdGhlIHRpZXJzIGFib3ZlIGl0IHNvIHNjb3Blcy5qc29uXG5cdCAqIHR5cGVQYXRocyBhZ3JlZSB3aXRoIHRoZSBhbmFseXplcidzIChoYXJkLWZhaWwpIHZlcmRpY3RzLlxuXHQgKi9cblx0cmVzb2x2ZUxvb2t1cD8oY2FsbDogdHMuQ2FsbEV4cHJlc3Npb24pOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogSW50ZXJuYWwgc2NvcGUgcmVjb3JkOiBudW1lcmljIHNwYW4gKDEtYmFzZWQgbGluZS9jb2wpIGtlcHQgZm9yXG4gKiBmaW5kSG9sZGVyU2NvcGVJZCgpIGNvbnRhaW5tZW50IG1hdGNoaW5nOyBTY29wZUluZm8gaXRzZWxmIGNhcnJpZXMgc3RyaW5ncy5cbiAqL1xuaW50ZXJmYWNlIFNjb3BlU3BhbiB7XG5cdHNjb3BlSWQ6IHN0cmluZztcblx0c3RhcnRMaW5lOiBudW1iZXI7XG5cdHN0YXJ0Q29sOiBudW1iZXI7XG5cdGVuZExpbmU6IG51bWJlcjtcblx0ZW5kQ29sOiBudW1iZXI7XG59XG5cbi8qKlxuICogUmF3IHZhcmlhYmxlIHJlY29yZCBjb2xsZWN0ZWQgZHVyaW5nIHRoZSBBU1Qgd2Fsay4gdHlwZVBhdGggaXMgcmVzb2x2ZWRcbiAqIGxhdGVyIGluIGJ1aWxkKCksIG9uY2UgZGVmaW5pdGlvbnMgYXJlIGtub3duLlxuICovXG5pbnRlcmZhY2UgUGVuZGluZ1ZhcmlhYmxlIHtcblx0dmFyaWFibGU6IFNjb3BlVmFyaWFibGU7XG5cdC8qKiBCYXJlIGNvbnN0cnVjdG9yIG5hbWUgZm9yIGBuZXcgWCguLi4pYCBpbml0aWFsaXplcnMgKi9cblx0bmV3TmFtZT86IHN0cmluZztcblx0LyoqIFJvb3QgaWRlbnRpZmllciArIHByb3BlcnR5IGNoYWluIGZvciBgbmV3IGEuYi5DKC4uLilgIGluaXRpYWxpemVycyAqL1xuXHRuZXdDaGFpblJvb3Q/OiBzdHJpbmc7XG5cdG5ld0NoYWluUmVzdD86IHN0cmluZ1tdO1xuXHQvKiogU3RyaW5nLWxpdGVyYWwgcGF0aCBvZiBhIGBsb29rdXAoJ0EuQicpYCBpbml0aWFsaXplciAqL1xuXHRsb29rdXBQYXRoPzogc3RyaW5nO1xuXHQvKiogUm9vdCBpZGVudGlmaWVyIG9mIHRoZSByZWNlaXZlciBmb3IgYHJlY2VpdmVyLmxvb2t1cCgnQS5CJylgIC8gYGxvb2t1cChzb3VyY2UsICdBLkInKWAgKi9cblx0bG9va3VwUmVjZWl2ZXI/OiBzdHJpbmc7XG5cdC8qKiBUaGUgbG9va3VwKCkgY2FsbCBub2RlIGl0c2VsZiDigJQgaGFuZGVkIHRvIHRoZSByZXNvbHZlcidzIGxvb2t1cC1sYXcgZGVsZWdhdGUgKi9cblx0bG9va3VwQ2FsbD86IHRzLkNhbGxFeHByZXNzaW9uO1xuXHQvKiogUmF3IHR5cGUgYW5ub3RhdGlvbiB0ZXh0IChlLmcuICdVc2VyRW50aXR5X1VzZXJSZXNwb25zZScpICovXG5cdGFubm90YXRpb24/OiBzdHJpbmc7XG5cdC8qKiBTY29wZSBjaGFpbiBmcm9tIGRlY2xhcmF0aW9uIHNpdGUgb3V0d2FyZCwgZm9yIGNoYWluLXJvb3QgbG9va3VwICovXG5cdHNjb3BlQ2hhaW46IHN0cmluZ1tdO1xufVxuXG5jb25zdCBBU1NJR05NRU5UX09QRVJBVE9SUyA9IG5ldyBTZXQ8dHMuU3ludGF4S2luZD4oW1xuXHR0cy5TeW50YXhLaW5kLkVxdWFsc1Rva2VuLFxuXHR0cy5TeW50YXhLaW5kLlBsdXNFcXVhbHNUb2tlbixcblx0dHMuU3ludGF4S2luZC5NaW51c0VxdWFsc1Rva2VuLFxuXHR0cy5TeW50YXhLaW5kLkFzdGVyaXNrRXF1YWxzVG9rZW4sXG5cdHRzLlN5bnRheEtpbmQuQXN0ZXJpc2tBc3Rlcmlza0VxdWFsc1Rva2VuLFxuXHR0cy5TeW50YXhLaW5kLlNsYXNoRXF1YWxzVG9rZW4sXG5cdHRzLlN5bnRheEtpbmQuUGVyY2VudEVxdWFsc1Rva2VuLFxuXHR0cy5TeW50YXhLaW5kLkxlc3NUaGFuTGVzc1RoYW5FcXVhbHNUb2tlbixcblx0dHMuU3ludGF4S2luZC5HcmVhdGVyVGhhbkdyZWF0ZXJUaGFuRXF1YWxzVG9rZW4sXG5cdHRzLlN5bnRheEtpbmQuR3JlYXRlclRoYW5HcmVhdGVyVGhhbkdyZWF0ZXJUaGFuRXF1YWxzVG9rZW4sXG5cdHRzLlN5bnRheEtpbmQuQW1wZXJzYW5kRXF1YWxzVG9rZW4sXG5cdHRzLlN5bnRheEtpbmQuQmFyRXF1YWxzVG9rZW4sXG5cdHRzLlN5bnRheEtpbmQuQ2FyZXRFcXVhbHNUb2tlbixcblx0dHMuU3ludGF4S2luZC5BbXBlcnNhbmRBbXBlcnNhbmRFcXVhbHNUb2tlbixcblx0dHMuU3ludGF4S2luZC5CYXJCYXJFcXVhbHNUb2tlbixcblx0dHMuU3ludGF4S2luZC5RdWVzdGlvblF1ZXN0aW9uRXF1YWxzVG9rZW4sXG5dKTtcblxuLyoqXG4gKiBMb2NhbC1zY29wZSB3YWxrZXIgKGluc3RydW1lbnRhdGlvbiB3YWxrZXIgcGxhbiwgUGhhc2UgMikuXG4gKlxuICogVHJhY2tzIGZ1bmN0aW9uL21ldGhvZC9hcnJvdyBzY29wZXMgT05MWSAoZGVjaXNpb24gNTogbm8gYmxvY2sgc2NvcGVzKSxcbiAqIHBsdXMgb25lIHN5bnRoZXRpYyAnbW9kdWxlJyBzY29wZSBwZXIgZmlsZSDigJQgdGhlIHBsYW4gcmVxdWlyZXMgbW9kdWxlLXNjb3BlXG4gKiBpbnN0YW5jZSBjcmVhdGlvbnMgdG8gYmUgbGFiZWxlZCwgbm90IGRyb3BwZWQuIFZhcmlhYmxlcyBjYXJyeSBpc011dGFibGVcbiAqIChjb25zdCB2cyBsZXQvdmFyL3BhcmFtZXRlcikgYW5kIGByZWFzc2lnbm1lbnRzYDogZWFjaCByZWFzc2lnbm1lbnQgc2l0ZSBvZlxuICogYSBtdXRhYmxlIGJpbmRpbmcgaXMgYSBmbG93LXRlcm1pbmF0aW9uIHBvaW50IChkZWNpc2lvbiA2KSDigJQgZG93bnN0cmVhbSB0aGVcbiAqIHdhbGtlciBzdG9wcyBmb2xsb3dpbmcgdGhhdCBiaW5kaW5nIHRoZXJlLlxuICpcbiAqIFVzYWdlOiBhZGRGaWxlKCkgcGVyIHNvdXJjZSBmaWxlLCB0aGVuIGJ1aWxkKHJlc29sdmVyKSBvbmNlIGRlZmluaXRpb25zIGFyZVxuICoga25vd24uIGZpbmRIb2xkZXJTY29wZUlkKGxvY2F0aW9uKSBtYXBzIGEgdXNhZ2UgbG9jYXRpb24gc3RyaW5nIHRvIHRoZVxuICogaW5uZXJtb3N0IHNjb3BlIGNvbnRhaW5pbmcgaXQgKHVzYWdlcy5qc29uIGhvbGRlclNjb3BlSWQpLlxuICovXG5leHBvcnQgY2xhc3MgTG9jYWxTY29wZVdhbGtlciB7XG5cdHByaXZhdGUgc2NvcGVzID0gbmV3IE1hcDxzdHJpbmcsIFNjb3BlSW5mbz4oKTtcblx0cHJpdmF0ZSBzcGFucyA9IG5ldyBNYXA8c3RyaW5nLCBTY29wZVNwYW5bXT4oKTtcblx0cHJpdmF0ZSB2YXJpYWJsZXMgPSBuZXcgTWFwPHN0cmluZywgU2NvcGVWYXJpYWJsZT4oKTtcblx0cHJpdmF0ZSBwZW5kaW5nOiBQZW5kaW5nVmFyaWFibGVbXSA9IFtdO1xuXHQvKipcblx0ICogQXJyb3cvZnVuY3Rpb24tZXhwcmVzc2lvbiBub2RlIC0+IG5hbWUgaXQgaXMgYm91bmQgdG8gKGBjb25zdCBmID0gKCkgPT4g4oCmYCxcblx0ICogYHsgaGFuZGxlcjogKCkgPT4g4oCmIH1gLCBjbGFzcyBwcm9wZXJ0aWVzKS4gUHJvZ3JhbSBzb3VyY2UgZmlsZXMgY2FuIGJlXG5cdCAqIFVOQk9VTkQgKG5vIG5vZGUucGFyZW50IHBvaW50ZXJzKSwgc28gYmluZGluZyBuYW1lcyB0cmF2ZWwgdGhyb3VnaCB0aGlzXG5cdCAqIG1hcCBpbnN0ZWFkIG9mIHBhcmVudCBsb29rdXBzLlxuXHQgKi9cblx0cHJpdmF0ZSBib3VuZE5hbWVzID0gbmV3IE1hcDx0cy5Ob2RlLCBzdHJpbmc+KCk7XG5cblx0LyoqXG5cdCAqIFRyYWNrIG9uZSBzb3VyY2UgZmlsZS4gUmUtYWRkaW5nIHRoZSBzYW1lIGZpbGUgcmVwbGFjZXMgaXRzIHJlY29yZHMsXG5cdCAqIHNvIGEgd2Fsa2VyIG1heSBzYWZlbHkgYmUgcmV1c2VkIGFjcm9zcyBwYXNzZXMuXG5cdCAqL1xuXHRhZGRGaWxlIChzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlKTogdm9pZCB7XG5cdFx0Y29uc3QgZmlsZVBhdGggPSBwYXRoLnJlc29sdmUoc291cmNlRmlsZS5maWxlTmFtZSk7XG5cdFx0dGhpcy5kcm9wRmlsZShmaWxlUGF0aCk7XG5cblx0XHRjb25zdCBtb2R1bGVTY29wZTogU2NvcGVJbmZvID0ge1xuXHRcdFx0c2NvcGVJZCAgOiBmaWxlUGF0aCxcblx0XHRcdG5hbWUgICAgIDogZmlsZVBhdGgsXG5cdFx0XHRraW5kICAgICA6ICdtb2R1bGUnLFxuXHRcdFx0ZmlsZVBhdGgsXG5cdFx0XHRsb2NhdGlvbiA6IGAke2ZpbGVQYXRofToxOjFgLFxuXHRcdH07XG5cdFx0dGhpcy5zY29wZXMuc2V0KG1vZHVsZVNjb3BlLnNjb3BlSWQsIG1vZHVsZVNjb3BlKTtcblxuXHRcdGNvbnN0IHNwYW5zOiBTY29wZVNwYW5bXSA9IFtdO1xuXHRcdHRoaXMuc3BhbnMuc2V0KGZpbGVQYXRoLCBzcGFucyk7XG5cdFx0c3BhbnMucHVzaCh0aGlzLnNwYW5PZihzb3VyY2VGaWxlLCBzb3VyY2VGaWxlLCBtb2R1bGVTY29wZS5zY29wZUlkKSk7XG5cblx0XHRjb25zdCBzY29wZVN0YWNrOiBzdHJpbmdbXSA9IFsgbW9kdWxlU2NvcGUuc2NvcGVJZCBdO1xuXHRcdGNvbnN0IGNsYXNzU3RhY2s6IHN0cmluZ1tdID0gW107XG5cdFx0dGhpcy52aXNpdE5vZGUoc291cmNlRmlsZSwgc291cmNlRmlsZSwgZmlsZVBhdGgsIHNjb3BlU3RhY2ssIGNsYXNzU3RhY2ssIHNwYW5zKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXNvbHZlIHBlbmRpbmcgdHlwZVBhdGhzIGFuZCByZXR1cm4gdGhlIGFuYWx5c2lzLlxuXHQgKi9cblx0YnVpbGQgKHJlc29sdmVyPzogU2NvcGVUeXBlUmVzb2x2ZXIpOiBTY29wZUFuYWx5c2lzIHtcblx0XHRpZiAocmVzb2x2ZXIpIHtcblx0XHRcdGZvciAoY29uc3QgZW50cnkgb2YgdGhpcy5wZW5kaW5nKSB7XG5cdFx0XHRcdGNvbnN0IHR5cGVQYXRoID0gdGhpcy5yZXNvbHZlVmFyaWFibGVUeXBlUGF0aChlbnRyeSwgcmVzb2x2ZXIpO1xuXHRcdFx0XHRpZiAodHlwZVBhdGgpIHtcblx0XHRcdFx0XHRlbnRyeS52YXJpYWJsZS50eXBlUGF0aCA9IHR5cGVQYXRoO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Y29uc3QgYW5hbHlzaXM6IFNjb3BlQW5hbHlzaXMgPSB7XG5cdFx0XHRzY29wZXMgICAgOiB0aGlzLnNjb3Blcyxcblx0XHRcdHZhcmlhYmxlcyA6IHRoaXMudmFyaWFibGVzLFxuXHRcdH07XG5cdFx0cmV0dXJuIGFuYWx5c2lzO1xuXHR9XG5cblx0LyoqXG5cdCAqIE1hcCBhIHVzYWdlIGxvY2F0aW9uIHN0cmluZyAoJ2Ficy9maWxlLnRzOmxpbmU6Y29sJykgdG8gdGhlIGlubmVybW9zdFxuXHQgKiBzY29wZSBjb250YWluaW5nIGl0LiBNb2R1bGUgc2NvcGUgaXMgdGhlIGZhbGxiYWNrLCBzbyBldmVyeSBsb2NhdGlvblxuXHQgKiBpbnNpZGUgYSB0cmFja2VkIGZpbGUgcmVzb2x2ZXMgdG8gc29tZSBzY29wZS5cblx0ICovXG5cdGZpbmRIb2xkZXJTY29wZUlkIChsb2NhdGlvbjogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBsYXN0Q29sb24gPSBsb2NhdGlvbi5sYXN0SW5kZXhPZignOicpO1xuXHRcdGNvbnN0IHByZXZDb2xvbiA9IGxvY2F0aW9uLmxhc3RJbmRleE9mKCc6JywgbGFzdENvbG9uIC0gMSk7XG5cdFx0aWYgKGxhc3RDb2xvbiA8IDAgfHwgcHJldkNvbG9uIDwgMCkge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0Y29uc3QgZmlsZVBhdGggPSBwYXRoLnJlc29sdmUobG9jYXRpb24uc2xpY2UoMCwgcHJldkNvbG9uKSk7XG5cdFx0Y29uc3QgbGluZSA9IE51bWJlcihsb2NhdGlvbi5zbGljZShwcmV2Q29sb24gKyAxLCBsYXN0Q29sb24pKTtcblx0XHRjb25zdCBjb2wgPSBOdW1iZXIobG9jYXRpb24uc2xpY2UobGFzdENvbG9uICsgMSkpO1xuXHRcdGlmICghTnVtYmVyLmlzRmluaXRlKGxpbmUpIHx8ICFOdW1iZXIuaXNGaW5pdGUoY29sKSkge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cblx0XHRjb25zdCBzcGFucyA9IHRoaXMuc3BhbnMuZ2V0KGZpbGVQYXRoKTtcblx0XHRpZiAoIXNwYW5zKSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblxuXHRcdGxldCBiZXN0OiBTY29wZVNwYW4gfCB1bmRlZmluZWQ7XG5cdFx0Zm9yIChjb25zdCBzcGFuIG9mIHNwYW5zKSB7XG5cdFx0XHRjb25zdCBzdGFydHNCZWZvcmUgPSBzcGFuLnN0YXJ0TGluZSA8IGxpbmUgfHwgKHNwYW4uc3RhcnRMaW5lID09PSBsaW5lICYmIHNwYW4uc3RhcnRDb2wgPD0gY29sKTtcblx0XHRcdGNvbnN0IGVuZHNBZnRlciA9IHNwYW4uZW5kTGluZSA+IGxpbmUgfHwgKHNwYW4uZW5kTGluZSA9PT0gbGluZSAmJiBzcGFuLmVuZENvbCA+PSBjb2wpO1xuXHRcdFx0aWYgKCFzdGFydHNCZWZvcmUgfHwgIWVuZHNBZnRlcikge1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblx0XHRcdC8vIElubmVybW9zdCA9IHNtYWxsZXN0IGNvbnRhaW5pbmcgc3BhblxuXHRcdFx0aWYgKGJlc3QgJiYgKGJlc3Quc3RhcnRMaW5lIDwgc3Bhbi5zdGFydExpbmUgfHxcblx0XHRcdFx0KGJlc3Quc3RhcnRMaW5lID09PSBzcGFuLnN0YXJ0TGluZSAmJiBiZXN0LnN0YXJ0Q29sIDw9IHNwYW4uc3RhcnRDb2wpKSkge1xuXHRcdFx0XHRiZXN0ID0gc3Bhbjtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIWJlc3QpIHtcblx0XHRcdFx0YmVzdCA9IHNwYW47XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGNvbnN0IHJlc3VsdCA9IGJlc3Q/LnNjb3BlSWQ7XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZW1vdmUgZXZlcnkgcmVjb3JkIGJlbG9uZ2luZyB0byBvbmUgZmlsZSAocmUtYWRkIHN1cHBvcnQpLlxuXHQgKi9cblx0cHJpdmF0ZSBkcm9wRmlsZSAoZmlsZVBhdGg6IHN0cmluZyk6IHZvaWQge1xuXHRcdGZvciAoY29uc3QgWyBzY29wZUlkLCBzY29wZSBdIG9mIHRoaXMuc2NvcGVzKSB7XG5cdFx0XHRpZiAoc2NvcGUuZmlsZVBhdGggPT09IGZpbGVQYXRoKSB7XG5cdFx0XHRcdHRoaXMuc2NvcGVzLmRlbGV0ZShzY29wZUlkKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Zm9yIChjb25zdCBrZXkgb2YgQXJyYXkuZnJvbSh0aGlzLnZhcmlhYmxlcy5rZXlzKCkpKSB7XG5cdFx0XHRpZiAoa2V5LnN0YXJ0c1dpdGgoYCR7ZmlsZVBhdGh9I2ApIHx8IGtleS5zdGFydHNXaXRoKGAke2ZpbGVQYXRofTpgKSkge1xuXHRcdFx0XHR0aGlzLnZhcmlhYmxlcy5kZWxldGUoa2V5KTtcblx0XHRcdH1cblx0XHR9XG5cdFx0dGhpcy5wZW5kaW5nID0gdGhpcy5wZW5kaW5nLmZpbHRlcihlbnRyeSA9PlxuXHRcdFx0IWVudHJ5LnZhcmlhYmxlLmRlY2xhcmF0aW9uLnN0YXJ0c1dpdGgoYCR7ZmlsZVBhdGh9OmApKTtcblx0XHR0aGlzLnNwYW5zLmRlbGV0ZShmaWxlUGF0aCk7XG5cdH1cblxuXHQvKipcblx0ICogQXR0YWNoIGhvbGRlclNjb3BlSWQgdG8gZXZlcnkgdXNhZ2Ugd2hvc2UgbG9jYXRpb24gZmFsbHMgaW5zaWRlIGFcblx0ICogdHJhY2tlZCBzY29wZS4gQWRkaXRpdmUgb24gVXNhZ2VJbmZvOyB1c2FnZXMgb3V0c2lkZSB0cmFja2VkIGZpbGVzXG5cdCAqIGFyZSBsZWZ0IHVudG91Y2hlZC5cblx0ICovXG5cdHN0YXRpYyBhdHRhY2hIb2xkZXJTY29wZUlkcyAodXNhZ2VzOiBNYXA8c3RyaW5nLCBVc2FnZUluZm9bXT4sIHdhbGtlcjogTG9jYWxTY29wZVdhbGtlcik6IHZvaWQge1xuXHRcdGZvciAoY29uc3QgdXNhZ2VMaXN0IG9mIHVzYWdlcy52YWx1ZXMoKSkge1xuXHRcdFx0Zm9yIChjb25zdCB1c2FnZSBvZiB1c2FnZUxpc3QpIHtcblx0XHRcdFx0Y29uc3Qgc2NvcGVJZCA9IHdhbGtlci5maW5kSG9sZGVyU2NvcGVJZCh1c2FnZS5sb2NhdGlvbik7XG5cdFx0XHRcdGlmIChzY29wZUlkKSB7XG5cdFx0XHRcdFx0dXNhZ2UuaG9sZGVyU2NvcGVJZCA9IHNjb3BlSWQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHZpc2l0Tm9kZSAoXG5cdFx0bm9kZTogdHMuTm9kZSxcblx0XHRzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlLFxuXHRcdGZpbGVQYXRoOiBzdHJpbmcsXG5cdFx0c2NvcGVTdGFjazogc3RyaW5nW10sXG5cdFx0Y2xhc3NTdGFjazogc3RyaW5nW10sXG5cdFx0c3BhbnM6IFNjb3BlU3BhbltdXG5cdCk6IHZvaWQge1xuXHRcdGNvbnN0IHNjb3BlS2luZCA9IExvY2FsU2NvcGVXYWxrZXIuc2NvcGVLaW5kT2Yobm9kZSk7XG5cdFx0bGV0IGVudGVyZWQgPSBmYWxzZTtcblx0XHRpZiAoc2NvcGVLaW5kICYmIHRoaXMuaGFzQm9keShub2RlKSkge1xuXHRcdFx0dGhpcy5lbnRlclNjb3BlKG5vZGUsIHNjb3BlS2luZCwgc291cmNlRmlsZSwgZmlsZVBhdGgsIHNjb3BlU3RhY2ssIGNsYXNzU3RhY2ssIHNwYW5zKTtcblx0XHRcdGVudGVyZWQgPSB0cnVlO1xuXHRcdH1cblxuXHRcdGNvbnN0IGlzQ2xhc3MgPSB0cy5pc0NsYXNzRGVjbGFyYXRpb24obm9kZSkgfHwgdHMuaXNDbGFzc0V4cHJlc3Npb24obm9kZSk7XG5cdFx0aWYgKGlzQ2xhc3MpIHtcblx0XHRcdGNsYXNzU3RhY2sucHVzaChub2RlLm5hbWU/LnRleHQgPz8gJycpO1xuXHRcdH1cblxuXHRcdHRoaXMuY29sbGVjdEJvdW5kTmFtZShub2RlKTtcblx0XHR0aGlzLmNvbGxlY3RWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChub2RlLCBzb3VyY2VGaWxlLCBzY29wZVN0YWNrKTtcblx0XHR0aGlzLmNvbGxlY3RSZWFzc2lnbm1lbnQobm9kZSwgc291cmNlRmlsZSwgc2NvcGVTdGFjayk7XG5cblx0XHR0cy5mb3JFYWNoQ2hpbGQobm9kZSwgY2hpbGQgPT4ge1xuXHRcdFx0dGhpcy52aXNpdE5vZGUoY2hpbGQsIHNvdXJjZUZpbGUsIGZpbGVQYXRoLCBzY29wZVN0YWNrLCBjbGFzc1N0YWNrLCBzcGFucyk7XG5cdFx0fSk7XG5cblx0XHRpZiAoaXNDbGFzcykge1xuXHRcdFx0Y2xhc3NTdGFjay5wb3AoKTtcblx0XHR9XG5cdFx0aWYgKGVudGVyZWQpIHtcblx0XHRcdHNjb3BlU3RhY2sucG9wKCk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBzdGF0aWMgc2NvcGVLaW5kT2YgKG5vZGU6IHRzLk5vZGUpOiBTY29wZUtpbmQgfCB1bmRlZmluZWQge1xuXHRcdGlmICh0cy5pc01ldGhvZERlY2xhcmF0aW9uKG5vZGUpIHx8IHRzLmlzR2V0QWNjZXNzb3JEZWNsYXJhdGlvbihub2RlKSB8fFxuXHRcdFx0dHMuaXNTZXRBY2Nlc3NvckRlY2xhcmF0aW9uKG5vZGUpIHx8IHRzLmlzQ29uc3RydWN0b3JEZWNsYXJhdGlvbihub2RlKSkge1xuXHRcdFx0cmV0dXJuICdtZXRob2QnO1xuXHRcdH1cblx0XHRpZiAodHMuaXNGdW5jdGlvbkRlY2xhcmF0aW9uKG5vZGUpIHx8IHRzLmlzRnVuY3Rpb25FeHByZXNzaW9uKG5vZGUpKSB7XG5cdFx0XHRyZXR1cm4gJ2Z1bmN0aW9uJztcblx0XHR9XG5cdFx0aWYgKHRzLmlzQXJyb3dGdW5jdGlvbihub2RlKSkge1xuXHRcdFx0cmV0dXJuICdhcnJvdyc7XG5cdFx0fVxuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHRwcml2YXRlIGhhc0JvZHkgKG5vZGU6IHRzLk5vZGUpOiBib29sZWFuIHtcblx0XHRjb25zdCBib2R5SG9sZGVyID0gbm9kZSBhcyB0cy5GdW5jdGlvbkxpa2VEZWNsYXJhdGlvbjtcblx0XHRjb25zdCByZXN1bHQgPSBib2R5SG9sZGVyLmJvZHkgIT09IHVuZGVmaW5lZDtcblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG5cblx0cHJpdmF0ZSBlbnRlclNjb3BlIChcblx0XHRub2RlOiB0cy5Ob2RlLFxuXHRcdGtpbmQ6IFNjb3BlS2luZCxcblx0XHRzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlLFxuXHRcdGZpbGVQYXRoOiBzdHJpbmcsXG5cdFx0c2NvcGVTdGFjazogc3RyaW5nW10sXG5cdFx0Y2xhc3NTdGFjazogc3RyaW5nW10sXG5cdFx0c3BhbnM6IFNjb3BlU3BhbltdXG5cdCk6IHZvaWQge1xuXHRcdGNvbnN0IHsgbGluZSwgY2hhcmFjdGVyIH0gPSBzb3VyY2VGaWxlLmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKG5vZGUuZ2V0U3RhcnQoc291cmNlRmlsZSkpO1xuXHRcdGNvbnN0IHNjb3BlSWQgPSBgJHtmaWxlUGF0aH06JHtsaW5lICsgMX06JHtjaGFyYWN0ZXIgKyAxfWA7XG5cdFx0Y29uc3QgcGFyZW50U2NvcGVJZCA9IHNjb3BlU3RhY2tbIHNjb3BlU3RhY2subGVuZ3RoIC0gMSBdO1xuXG5cdFx0Y29uc3Qgc2NvcGU6IFNjb3BlSW5mbyA9IHtcblx0XHRcdHNjb3BlSWQsXG5cdFx0XHRuYW1lICAgICA6IHRoaXMuc2NvcGVOYW1lKG5vZGUsIGtpbmQsIGZpbGVQYXRoLCBsaW5lICsgMSwgY2xhc3NTdGFjayksXG5cdFx0XHRraW5kLFxuXHRcdFx0cGFyZW50U2NvcGVJZCxcblx0XHRcdGZpbGVQYXRoLFxuXHRcdFx0bG9jYXRpb24gOiBzY29wZUlkLFxuXHRcdH07XG5cdFx0dGhpcy5zY29wZXMuc2V0KHNjb3BlSWQsIHNjb3BlKTtcblx0XHRzcGFucy5wdXNoKHRoaXMuc3Bhbk9mKG5vZGUsIHNvdXJjZUZpbGUsIHNjb3BlSWQpKTtcblx0XHRzY29wZVN0YWNrLnB1c2goc2NvcGVJZCk7XG5cblx0XHQvLyBQYXJhbWV0ZXJzIGFyZSB2YXJpYWJsZXMgb2YgdGhlIHNjb3BlOyB0aGV5IGFyZSByZWFzc2lnbmFibGUsIHNvXG5cdFx0Ly8gaXNNdXRhYmxlOiB0cnVlIOKAlCBhIHBhcmFtZXRlciByZWFzc2lnbm1lbnQgdGVybWluYXRlcyB0aGUgZmxvdyB0b29cblx0XHRjb25zdCBmbiA9IG5vZGUgYXMgdHMuRnVuY3Rpb25MaWtlRGVjbGFyYXRpb247XG5cdFx0Zm9yIChjb25zdCBwYXJhbSBvZiBmbi5wYXJhbWV0ZXJzID8/IFtdKSB7XG5cdFx0XHRpZiAoIXRzLmlzSWRlbnRpZmllcihwYXJhbS5uYW1lKSkge1xuXHRcdFx0XHQvLyBTa2lwIGRlc3RydWN0dXJlZCBwYXJhbWV0ZXJzIChhbmFseXplciBwcmVjZWRlbnQpXG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5yZWNvcmRWYXJpYWJsZShwYXJhbS5uYW1lLnRleHQsIHBhcmFtLm5hbWUsIHNvdXJjZUZpbGUsIHNjb3BlU3RhY2ssIHtcblx0XHRcdFx0aXNQYXJhbWV0ZXIgOiB0cnVlLFxuXHRcdFx0XHQvLyBgdGhpc2AgcGFyYW1ldGVycyAobW5lbW9uaWNhIGhhbmRsZXJzKSBhcmUgbmV2ZXIgcmVhc3NpZ25hYmxlXG5cdFx0XHRcdGlzTXV0YWJsZSAgIDogcGFyYW0ubmFtZS50ZXh0ICE9PSAndGhpcycsXG5cdFx0XHRcdGFubm90YXRpb24gIDogcGFyYW0udHlwZT8uZ2V0VGV4dChzb3VyY2VGaWxlKSxcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBEZWNpc2lvbiA4IGxhYmVsaW5nOiBmdW5jdGlvbnMgYnkgbmFtZTsgbWV0aG9kcyBhcyBDbGFzcy5tZXRob2Q7XG5cdCAqIGFycm93cy9mdW5jdGlvbnMgYm91bmQgdG8gYSB2YXJpYWJsZSBvciBwcm9wZXJ0eSB0YWtlIHRoYXQgbmFtZTtcblx0ICogYW5vbnltb3VzIGhvbGRlcnMgYXJlIGxhYmVsZWQgZmlsZTpsaW5lLlxuXHQgKi9cblx0cHJpdmF0ZSBzY29wZU5hbWUgKFxuXHRcdG5vZGU6IHRzLk5vZGUsXG5cdFx0a2luZDogU2NvcGVLaW5kLFxuXHRcdGZpbGVQYXRoOiBzdHJpbmcsXG5cdFx0bGluZTogbnVtYmVyLFxuXHRcdGNsYXNzU3RhY2s6IHN0cmluZ1tdXG5cdCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgbmFtZWQgPSBub2RlIGFzIHRzLk5hbWVkRGVjbGFyYXRpb247XG5cdFx0aWYgKGtpbmQgPT09ICdtZXRob2QnKSB7XG5cdFx0XHRjb25zdCBtZXRob2ROYW1lID0gbmFtZWQubmFtZSA/IG5hbWVkLm5hbWUuZ2V0VGV4dCgpIDogJ2Fub255bW91cyc7XG5cdFx0XHRjb25zdCBjbGFzc05hbWUgPSBjbGFzc1N0YWNrWyBjbGFzc1N0YWNrLmxlbmd0aCAtIDEgXTtcblx0XHRcdGNvbnN0IGN0b3IgPSB0cy5pc0NvbnN0cnVjdG9yRGVjbGFyYXRpb24obm9kZSkgPyAnY29uc3RydWN0b3InIDogbWV0aG9kTmFtZTtcblx0XHRcdGNvbnN0IG1ldGhvZFNjb3BlTmFtZSA9IGNsYXNzTmFtZSA/IGAke2NsYXNzTmFtZX0uJHtjdG9yfWAgOiBjdG9yO1xuXHRcdFx0cmV0dXJuIG1ldGhvZFNjb3BlTmFtZTtcblx0XHR9XG5cdFx0aWYgKG5hbWVkLm5hbWUgJiYgdHMuaXNJZGVudGlmaWVyKG5hbWVkLm5hbWUpKSB7XG5cdFx0XHRjb25zdCBkZWNsYXJlZE5hbWUgPSBuYW1lZC5uYW1lLnRleHQ7XG5cdFx0XHRyZXR1cm4gZGVjbGFyZWROYW1lO1xuXHRcdH1cblx0XHQvLyBCb3VuZCBuYW1lcyBjb21lIGZyb20gdGhlIGJvdW5kTmFtZXMgbWFwIOKAlCBwcm9ncmFtIGZpbGVzIG1heSBiZVxuXHRcdC8vIHVuYm91bmQsIHNvIG5vZGUucGFyZW50IGlzIG5vdCBhIHJlbGlhYmxlIHBhdGggdG8gdGhlIHZhcmlhYmxlIG5hbWVcblx0XHRjb25zdCBib3VuZCA9IHRoaXMuYm91bmROYW1lcy5nZXQobm9kZSk7XG5cdFx0aWYgKGJvdW5kKSB7XG5cdFx0XHRyZXR1cm4gYm91bmQ7XG5cdFx0fVxuXHRcdGNvbnN0IHJlc3VsdCA9IGAke2ZpbGVQYXRofToke2xpbmV9YDtcblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG5cblx0cHJpdmF0ZSBzcGFuT2YgKFxuXHRcdG5vZGU6IHRzLk5vZGUsXG5cdFx0c291cmNlRmlsZTogdHMuU291cmNlRmlsZSxcblx0XHRzY29wZUlkOiBzdHJpbmdcblx0KTogU2NvcGVTcGFuIHtcblx0XHRjb25zdCBzdGFydCA9IHNvdXJjZUZpbGUuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24obm9kZS5nZXRTdGFydChzb3VyY2VGaWxlKSk7XG5cdFx0Y29uc3QgZW5kID0gc291cmNlRmlsZS5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihub2RlLmdldEVuZCgpKTtcblx0XHRjb25zdCBzcGFuOiBTY29wZVNwYW4gPSB7XG5cdFx0XHRzY29wZUlkLFxuXHRcdFx0c3RhcnRMaW5lIDogc3RhcnQubGluZSArIDEsXG5cdFx0XHRzdGFydENvbCAgOiBzdGFydC5jaGFyYWN0ZXIgKyAxLFxuXHRcdFx0ZW5kTGluZSAgIDogZW5kLmxpbmUgKyAxLFxuXHRcdFx0ZW5kQ29sICAgIDogZW5kLmNoYXJhY3RlciArIDEsXG5cdFx0fTtcblx0XHRyZXR1cm4gc3Bhbjtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWNvcmQgdGhlIG5hbWUgYW4gYXJyb3cvZnVuY3Rpb24tZXhwcmVzc2lvbiBpcyBib3VuZCB0bywgd2l0aG91dFxuXHQgKiByZWx5aW5nIG9uIG5vZGUucGFyZW50ICh1bmJvdW5kIHByb2dyYW0gZmlsZXMpOiBgY29uc3QgZiA9ICgpID0+IOKApmAsXG5cdCAqIGB7IGhhbmRsZXI6ICgpID0+IOKApiB9YCwgYGNsYXNzIEMgeyBydW4gPSAoKSA9PiDigKYgfWAuXG5cdCAqL1xuXHRwcml2YXRlIGNvbGxlY3RCb3VuZE5hbWUgKG5vZGU6IHRzLk5vZGUpOiB2b2lkIHtcblx0XHRpZiAodHMuaXNWYXJpYWJsZURlY2xhcmF0aW9uKG5vZGUpICYmIHRzLmlzSWRlbnRpZmllcihub2RlLm5hbWUpICYmIG5vZGUuaW5pdGlhbGl6ZXIgJiZcblx0XHRcdCh0cy5pc0Fycm93RnVuY3Rpb24obm9kZS5pbml0aWFsaXplcikgfHwgdHMuaXNGdW5jdGlvbkV4cHJlc3Npb24obm9kZS5pbml0aWFsaXplcikpKSB7XG5cdFx0XHR0aGlzLmJvdW5kTmFtZXMuc2V0KG5vZGUuaW5pdGlhbGl6ZXIsIG5vZGUubmFtZS50ZXh0KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKCh0cy5pc1Byb3BlcnR5QXNzaWdubWVudChub2RlKSB8fCB0cy5pc1Byb3BlcnR5RGVjbGFyYXRpb24obm9kZSkpICYmXG5cdFx0XHR0cy5pc0lkZW50aWZpZXIobm9kZS5uYW1lKSAmJiBub2RlLmluaXRpYWxpemVyICYmXG5cdFx0XHQodHMuaXNBcnJvd0Z1bmN0aW9uKG5vZGUuaW5pdGlhbGl6ZXIpIHx8IHRzLmlzRnVuY3Rpb25FeHByZXNzaW9uKG5vZGUuaW5pdGlhbGl6ZXIpKSkge1xuXHRcdFx0dGhpcy5ib3VuZE5hbWVzLnNldChub2RlLmluaXRpYWxpemVyLCBub2RlLm5hbWUudGV4dCk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBjb2xsZWN0VmFyaWFibGVEZWNsYXJhdGlvbkxpc3QgKFxuXHRcdG5vZGU6IHRzLk5vZGUsXG5cdFx0c291cmNlRmlsZTogdHMuU291cmNlRmlsZSxcblx0XHRzY29wZVN0YWNrOiBzdHJpbmdbXVxuXHQpOiB2b2lkIHtcblx0XHRpZiAoIXRzLmlzVmFyaWFibGVEZWNsYXJhdGlvbkxpc3Qobm9kZSkpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Ly8gRmxhZ3MgbGl2ZSBvbiB0aGUgbGlzdCBpdHNlbGYg4oCUIG5vIHBhcmVudCB3YWxrIG5lZWRlZCAodGhlIGxpc3Qnc1xuXHRcdC8vIHBhcmVudCBtYXkgYmUgdW5zZXQgb24gdW5ib3VuZCBwcm9ncmFtIGZpbGVzKVxuXHRcdGNvbnN0IGlzQ29uc3QgPSAobm9kZS5mbGFncyAmIHRzLk5vZGVGbGFncy5Db25zdCkgIT09IDA7XG5cdFx0Zm9yIChjb25zdCBkZWNsIG9mIG5vZGUuZGVjbGFyYXRpb25zKSB7XG5cdFx0XHQvLyBEZXN0cnVjdHVyaW5nIGRlY2xhcmF0aW9ucyBhcmUgc2tpcHBlZDogb25seSBwbGFpblxuXHRcdFx0Ly8gYGNvbnN0L2xldC92YXIgeCA9IOKApmAgaGFzIGFuIGlkZW50aWZpZXIgbmFtZVxuXHRcdFx0aWYgKCF0cy5pc0lkZW50aWZpZXIoZGVjbC5uYW1lKSkge1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblx0XHRcdHRoaXMucmVjb3JkVmFyaWFibGUoZGVjbC5uYW1lLnRleHQsIGRlY2wubmFtZSwgc291cmNlRmlsZSwgc2NvcGVTdGFjaywge1xuXHRcdFx0XHRpc1BhcmFtZXRlciA6IGZhbHNlLFxuXHRcdFx0XHRpc011dGFibGUgICA6ICFpc0NvbnN0LFxuXHRcdFx0XHRhbm5vdGF0aW9uICA6IGRlY2wudHlwZT8uZ2V0VGV4dChzb3VyY2VGaWxlKSxcblx0XHRcdFx0aW5pdGlhbGl6ZXIgOiBkZWNsLmluaXRpYWxpemVyLFxuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSByZWNvcmRWYXJpYWJsZSAoXG5cdFx0bmFtZTogc3RyaW5nLFxuXHRcdG5vZGU6IHRzLk5vZGUsXG5cdFx0c291cmNlRmlsZTogdHMuU291cmNlRmlsZSxcblx0XHRzY29wZVN0YWNrOiBzdHJpbmdbXSxcblx0XHRvcHRpb25zOiB7XG5cdFx0XHRpc1BhcmFtZXRlcjogYm9vbGVhbjtcblx0XHRcdGlzTXV0YWJsZTogYm9vbGVhbjtcblx0XHRcdGFubm90YXRpb24/OiBzdHJpbmc7XG5cdFx0XHRpbml0aWFsaXplcj86IHRzLkV4cHJlc3Npb247XG5cdFx0fVxuXHQpOiB2b2lkIHtcblx0XHRjb25zdCBzY29wZUlkID0gc2NvcGVTdGFja1sgc2NvcGVTdGFjay5sZW5ndGggLSAxIF07XG5cdFx0Y29uc3QgeyBsaW5lLCBjaGFyYWN0ZXIgfSA9IHNvdXJjZUZpbGUuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24obm9kZS5nZXRTdGFydChzb3VyY2VGaWxlKSk7XG5cdFx0Y29uc3QgZmlsZVBhdGggPSBwYXRoLnJlc29sdmUoc291cmNlRmlsZS5maWxlTmFtZSk7XG5cblx0XHRjb25zdCB2YXJpYWJsZTogU2NvcGVWYXJpYWJsZSA9IHtcblx0XHRcdG5hbWUsXG5cdFx0XHRzY29wZUlkLFxuXHRcdFx0ZGVjbGFyYXRpb24gICA6IGAke2ZpbGVQYXRofToke2xpbmUgKyAxfToke2NoYXJhY3RlciArIDF9YCxcblx0XHRcdGlzUGFyYW1ldGVyICAgOiBvcHRpb25zLmlzUGFyYW1ldGVyLFxuXHRcdFx0aXNNdXRhYmxlICAgICA6IG9wdGlvbnMuaXNNdXRhYmxlLFxuXHRcdFx0cmVhc3NpZ25tZW50cyA6IFtdLFxuXHRcdH07XG5cdFx0Y29uc3QgaW5mZXJyZWQgPSBvcHRpb25zLmFubm90YXRpb24gPz8gKFxuXHRcdFx0b3B0aW9ucy5pbml0aWFsaXplciA/IExvY2FsU2NvcGVXYWxrZXIuaW5mZXJJbml0aWFsaXplcktpbmQob3B0aW9ucy5pbml0aWFsaXplcikgOiB1bmRlZmluZWRcblx0XHQpO1xuXHRcdGlmIChpbmZlcnJlZCkge1xuXHRcdFx0dmFyaWFibGUuaW5mZXJyZWRUeXBlID0gaW5mZXJyZWQ7XG5cdFx0fVxuXG5cdFx0Y29uc3QgcGVuZGluZ0VudHJ5OiBQZW5kaW5nVmFyaWFibGUgPSB7XG5cdFx0XHR2YXJpYWJsZSxcblx0XHRcdHNjb3BlQ2hhaW4gOiBbIC4uLnNjb3BlU3RhY2sgXS5yZXZlcnNlKCksXG5cdFx0XHRhbm5vdGF0aW9uIDogb3B0aW9ucy5hbm5vdGF0aW9uLFxuXHRcdH07XG5cdFx0Y29uc3QgeyBpbml0aWFsaXplciB9ID0gb3B0aW9ucztcblx0XHRpZiAoaW5pdGlhbGl6ZXIgJiYgdHMuaXNOZXdFeHByZXNzaW9uKGluaXRpYWxpemVyKSkge1xuXHRcdFx0Y29uc3QgeyBleHByZXNzaW9uIH0gPSBpbml0aWFsaXplcjtcblx0XHRcdGlmICh0cy5pc0lkZW50aWZpZXIoZXhwcmVzc2lvbikpIHtcblx0XHRcdFx0cGVuZGluZ0VudHJ5Lm5ld05hbWUgPSBleHByZXNzaW9uLnRleHQ7XG5cdFx0XHR9IGVsc2UgaWYgKHRzLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKGV4cHJlc3Npb24pKSB7XG5cdFx0XHRcdGNvbnN0IGNoYWluID0gTG9jYWxTY29wZVdhbGtlci51bndyYXBQcm9wZXJ0eUFjY2VzcyhleHByZXNzaW9uKTtcblx0XHRcdFx0aWYgKGNoYWluLmxlbmd0aCA+IDEpIHtcblx0XHRcdFx0XHRjb25zdCBbIHJvb3QsIC4uLnJlc3QgXSA9IGNoYWluO1xuXHRcdFx0XHRcdHBlbmRpbmdFbnRyeS5uZXdDaGFpblJvb3QgPSByb290O1xuXHRcdFx0XHRcdHBlbmRpbmdFbnRyeS5uZXdDaGFpblJlc3QgPSByZXN0O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChpbml0aWFsaXplciAmJiB0cy5pc0NhbGxFeHByZXNzaW9uKGluaXRpYWxpemVyKSkge1xuXHRcdFx0Y29uc3QgbG9va3VwID0gTG9jYWxTY29wZVdhbGtlci51bndyYXBMb29rdXBDYWxsKGluaXRpYWxpemVyKTtcblx0XHRcdGlmIChsb29rdXApIHtcblx0XHRcdFx0cGVuZGluZ0VudHJ5Lmxvb2t1cFBhdGggPSBsb29rdXAucGF0aDtcblx0XHRcdFx0cGVuZGluZ0VudHJ5Lmxvb2t1cFJlY2VpdmVyID0gbG9va3VwLnJlY2VpdmVyO1xuXHRcdFx0XHRwZW5kaW5nRW50cnkubG9va3VwQ2FsbCA9IGluaXRpYWxpemVyO1xuXHRcdFx0fVxuXHRcdH1cblx0XHR0aGlzLnBlbmRpbmcucHVzaChwZW5kaW5nRW50cnkpO1xuXHRcdHRoaXMudmFyaWFibGVzLnNldChgJHtzY29wZUlkfSMke25hbWV9YCwgdmFyaWFibGUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIGBhLmIuY2Ag4oaSIFsnYScsICdiJywgJ2MnXSAobGVmdC10by1yaWdodCk7IHVuZGVmaW5lZC1zYWZlIGZvclxuXHQgKiBub24taWRlbnRpZmllciByb290cy5cblx0ICovXG5cdHByaXZhdGUgc3RhdGljIHVud3JhcFByb3BlcnR5QWNjZXNzIChleHByZXNzaW9uOiB0cy5Qcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24pOiBzdHJpbmdbXSB7XG5cdFx0Y29uc3QgY2hhaW46IHN0cmluZ1tdID0gW107XG5cdFx0bGV0IGN1cnJlbnQ6IHRzLkV4cHJlc3Npb24gPSBleHByZXNzaW9uO1xuXHRcdHdoaWxlICh0cy5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihjdXJyZW50KSkge1xuXHRcdFx0Y2hhaW4udW5zaGlmdChjdXJyZW50Lm5hbWUudGV4dCk7XG5cdFx0XHRjdXJyZW50ID0gY3VycmVudC5leHByZXNzaW9uO1xuXHRcdH1cblx0XHRpZiAodHMuaXNJZGVudGlmaWVyKGN1cnJlbnQpKSB7XG5cdFx0XHRjaGFpbi51bnNoaWZ0KGN1cnJlbnQudGV4dCk7XG5cdFx0fVxuXHRcdHJldHVybiBjaGFpbjtcblx0fVxuXG5cdC8qKlxuXHQgKiBgbG9va3VwKCdBLkInKWAsIGBBcHAubG9va3VwKCdBLkInKWAsIGBsb29rdXAoc291cmNlLCAnQS5CJylgIOKGkiB0aGVcblx0ICogc3RyaW5nLWxpdGVyYWwgcGF0aCBwbHVzIHRoZSByZWNlaXZlcidzIHJvb3QgaWRlbnRpZmllciB3aGVuIHRoZXJlIGlzXG5cdCAqIG9uZS4gT25seSBsaXRlcmFsIHBhdGhzIGFyZSB0cmFja2VkOiBhIGNvbXB1dGVkIHBhdGggaXMgZGF0YSB0aGUgc3RhdGljXG5cdCAqIHdhbGtlciBjYW5ub3QgZm9sbG93LCBzbyBpdCBpcyBza2lwcGVkICh0aGUgYW5hbHl6ZXIncyB1c2FnZSBwYXNzIHN0aWxsXG5cdCAqIHJlY29yZHMgdGhlIGxvb2t1cCBjYWxsIGl0c2VsZikuXG5cdCAqL1xuXHRwcml2YXRlIHN0YXRpYyB1bndyYXBMb29rdXBDYWxsIChjYWxsOiB0cy5DYWxsRXhwcmVzc2lvbik6IHsgcGF0aDogc3RyaW5nOyByZWNlaXZlcj86IHN0cmluZyB9IHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCB7IGV4cHJlc3Npb24gfSA9IGNhbGw7XG5cdFx0Y29uc3QgWyBmaXJzdEFyZywgc2Vjb25kQXJnIF0gPSBjYWxsLmFyZ3VtZW50cztcblxuXHRcdGlmICh0cy5pc0lkZW50aWZpZXIoZXhwcmVzc2lvbikpIHtcblx0XHRcdGlmIChleHByZXNzaW9uLnRleHQgIT09ICdsb29rdXAnKSB7XG5cdFx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0XHR9XG5cdFx0XHQvLyBsb29rdXAoJ0EuQicpXG5cdFx0XHRpZiAoZmlyc3RBcmcgJiYgdHMuaXNTdHJpbmdMaXRlcmFsTGlrZShmaXJzdEFyZykpIHtcblx0XHRcdFx0Y29uc3QgcmVzdWx0ID0geyBwYXRoIDogZmlyc3RBcmcudGV4dCB9O1xuXHRcdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdFx0fVxuXHRcdFx0Ly8gbG9va3VwKHNvdXJjZSwgJ0EuQicpIOKAlCBleHBsaWNpdC1zb3VyY2UgZm9ybVxuXHRcdFx0aWYgKGZpcnN0QXJnICYmIHRzLmlzSWRlbnRpZmllcihmaXJzdEFyZykgJiYgc2Vjb25kQXJnICYmIHRzLmlzU3RyaW5nTGl0ZXJhbExpa2Uoc2Vjb25kQXJnKSkge1xuXHRcdFx0XHRjb25zdCByZXN1bHQgPSB7IHBhdGggOiBzZWNvbmRBcmcudGV4dCwgcmVjZWl2ZXIgOiBmaXJzdEFyZy50ZXh0IH07XG5cdFx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblxuXHRcdGlmICh0cy5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihleHByZXNzaW9uKSAmJiBleHByZXNzaW9uLm5hbWUudGV4dCA9PT0gJ2xvb2t1cCcpIHtcblx0XHRcdGlmICghZmlyc3RBcmcgfHwgIXRzLmlzU3RyaW5nTGl0ZXJhbExpa2UoZmlyc3RBcmcpKSB7XG5cdFx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBjaGFpbiA9IExvY2FsU2NvcGVXYWxrZXIudW53cmFwUHJvcGVydHlBY2Nlc3MoZXhwcmVzc2lvbik7XG5cdFx0XHQvLyBjaGFpbiA8IDIgbWVhbnMgbm8gaWRlbnRpZmllciByZWNlaXZlciAoZS5nLiB0aGlzLmxvb2t1cCgnQS5CJykpXG5cdFx0XHRpZiAoY2hhaW4ubGVuZ3RoIDwgMikge1xuXHRcdFx0XHRjb25zdCBwYXRoT25seSA9IHsgcGF0aCA6IGZpcnN0QXJnLnRleHQgfTtcblx0XHRcdFx0cmV0dXJuIHBhdGhPbmx5O1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgWyByZWNlaXZlciBdID0gY2hhaW47XG5cdFx0XHRjb25zdCByZXN1bHQgPSB7IHBhdGggOiBmaXJzdEFyZy50ZXh0LCByZWNlaXZlciB9O1xuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9XG5cblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWFwIGluaXRpYWxpemVyIGNsYXNzaWZpY2F0aW9uIGZvciBpbmZlcnJlZFR5cGUuIERlbGliZXJhdGVseSB0aW55OlxuXHQgKiBsaXRlcmFsIGtpbmRzIGFuZCBgbmV3IFhgIGNvbnN0cnVjdG9yIG5hbWVzOyBldmVyeXRoaW5nIGVsc2UgdW5kZWZpbmVkLlxuXHQgKi9cblx0cHJpdmF0ZSBzdGF0aWMgaW5mZXJJbml0aWFsaXplcktpbmQgKGluaXRpYWxpemVyOiB0cy5FeHByZXNzaW9uKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAodHMuaXNTdHJpbmdMaXRlcmFsTGlrZShpbml0aWFsaXplcikgfHwgdHMuaXNUZW1wbGF0ZUV4cHJlc3Npb24oaW5pdGlhbGl6ZXIpKSB7XG5cdFx0XHRyZXR1cm4gJ3N0cmluZyc7XG5cdFx0fVxuXHRcdGlmICh0cy5pc051bWVyaWNMaXRlcmFsKGluaXRpYWxpemVyKSkge1xuXHRcdFx0cmV0dXJuICdudW1iZXInO1xuXHRcdH1cblx0XHRpZiAoaW5pdGlhbGl6ZXIua2luZCA9PT0gdHMuU3ludGF4S2luZC5UcnVlS2V5d29yZCB8fCBpbml0aWFsaXplci5raW5kID09PSB0cy5TeW50YXhLaW5kLkZhbHNlS2V5d29yZCkge1xuXHRcdFx0cmV0dXJuICdib29sZWFuJztcblx0XHR9XG5cdFx0aWYgKHRzLmlzQXJyb3dGdW5jdGlvbihpbml0aWFsaXplcikgfHwgdHMuaXNGdW5jdGlvbkV4cHJlc3Npb24oaW5pdGlhbGl6ZXIpKSB7XG5cdFx0XHRyZXR1cm4gJ2Z1bmN0aW9uJztcblx0XHR9XG5cdFx0aWYgKHRzLmlzQXJyYXlMaXRlcmFsRXhwcmVzc2lvbihpbml0aWFsaXplcikpIHtcblx0XHRcdHJldHVybiAnQXJyYXk8dW5rbm93bj4nO1xuXHRcdH1cblx0XHRpZiAodHMuaXNOZXdFeHByZXNzaW9uKGluaXRpYWxpemVyKSAmJiB0cy5pc0lkZW50aWZpZXIoaW5pdGlhbGl6ZXIuZXhwcmVzc2lvbikpIHtcblx0XHRcdGNvbnN0IHJlc3VsdCA9IGluaXRpYWxpemVyLmV4cHJlc3Npb24udGV4dDtcblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0fVxuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHQvKipcblx0ICogUmVhc3NpZ25tZW50IG9mIGEgbGV0L3Zhci9wYXJhbWV0ZXIgYmluZGluZzogYSBmbG93LXRlcm1pbmF0aW9uIHBvaW50XG5cdCAqIChkZWNpc2lvbiA2KS4gUmVjb3JkZWQgb24gdGhlIHZhcmlhYmxlIHNvIHRoZSBQaGFzZSAzIHdhbGtlciBzdG9wc1xuXHQgKiBmb2xsb3dpbmcgdGhhdCBiaW5kaW5nIHRoZXJlLlxuXHQgKi9cblx0cHJpdmF0ZSBjb2xsZWN0UmVhc3NpZ25tZW50IChcblx0XHRub2RlOiB0cy5Ob2RlLFxuXHRcdHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUsXG5cdFx0c2NvcGVTdGFjazogc3RyaW5nW11cblx0KTogdm9pZCB7XG5cdFx0bGV0IHRhcmdldDogdHMuSWRlbnRpZmllciB8IHVuZGVmaW5lZDtcblx0XHRpZiAodHMuaXNCaW5hcnlFeHByZXNzaW9uKG5vZGUpICYmXG5cdFx0XHRBU1NJR05NRU5UX09QRVJBVE9SUy5oYXMobm9kZS5vcGVyYXRvclRva2VuLmtpbmQpICYmXG5cdFx0XHR0cy5pc0lkZW50aWZpZXIobm9kZS5sZWZ0KSkge1xuXHRcdFx0dGFyZ2V0ID0gbm9kZS5sZWZ0O1xuXHRcdH1cblx0XHRpZiAoKHRzLmlzUHJlZml4VW5hcnlFeHByZXNzaW9uKG5vZGUpIHx8IHRzLmlzUG9zdGZpeFVuYXJ5RXhwcmVzc2lvbihub2RlKSkgJiZcblx0XHRcdChub2RlLm9wZXJhdG9yID09PSB0cy5TeW50YXhLaW5kLlBsdXNQbHVzVG9rZW4gfHwgbm9kZS5vcGVyYXRvciA9PT0gdHMuU3ludGF4S2luZC5NaW51c01pbnVzVG9rZW4pICYmXG5cdFx0XHR0cy5pc0lkZW50aWZpZXIobm9kZS5vcGVyYW5kKSkge1xuXHRcdFx0dGFyZ2V0ID0gbm9kZS5vcGVyYW5kO1xuXHRcdH1cblx0XHRpZiAoIXRhcmdldCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHQvLyBOb3RlOiBhIGRlY2xhcmF0aW9uIGluaXRpYWxpemVyIChgbGV0IHggPSA1YCkgaXMgYSBWYXJpYWJsZURlY2xhcmF0aW9uLFxuXHRcdC8vIG5ldmVyIGEgQmluYXJ5RXhwcmVzc2lvbiwgc28gaXQgY2Fubm90IHJlYWNoIHRoaXMgcGF0aCBhcyBhIFwicmVhc3NpZ25tZW50XCJcblxuXHRcdGNvbnN0IHZhcmlhYmxlID0gdGhpcy5maW5kVmFyaWFibGUodGFyZ2V0LnRleHQsIHNjb3BlU3RhY2spO1xuXHRcdGlmICghdmFyaWFibGUpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgZmlsZVBhdGggPSBwYXRoLnJlc29sdmUoc291cmNlRmlsZS5maWxlTmFtZSk7XG5cdFx0Y29uc3QgeyBsaW5lLCBjaGFyYWN0ZXIgfSA9IHNvdXJjZUZpbGUuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24odGFyZ2V0LmdldFN0YXJ0KHNvdXJjZUZpbGUpKTtcblx0XHR2YXJpYWJsZS5yZWFzc2lnbm1lbnRzLnB1c2goYCR7ZmlsZVBhdGh9OiR7bGluZSArIDF9OiR7Y2hhcmFjdGVyICsgMX1gKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBGaW5kIGEgdmFyaWFibGUgYnkgbmFtZSB3YWxraW5nIHRoZSBzY29wZSBjaGFpbiBvdXR3YXJkLlxuXHQgKi9cblx0cHJpdmF0ZSBmaW5kVmFyaWFibGUgKG5hbWU6IHN0cmluZywgc2NvcGVTdGFjazogc3RyaW5nW10pOiBTY29wZVZhcmlhYmxlIHwgdW5kZWZpbmVkIHtcblx0XHRmb3IgKGxldCBpID0gc2NvcGVTdGFjay5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuXHRcdFx0Y29uc3QgdmFyaWFibGUgPSB0aGlzLnZhcmlhYmxlcy5nZXQoYCR7c2NvcGVTdGFja1sgaSBdfSMke25hbWV9YCk7XG5cdFx0XHRpZiAodmFyaWFibGUpIHtcblx0XHRcdFx0cmV0dXJuIHZhcmlhYmxlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cblx0cHJpdmF0ZSByZXNvbHZlVmFyaWFibGVUeXBlUGF0aCAoZW50cnk6IFBlbmRpbmdWYXJpYWJsZSwgcmVzb2x2ZXI6IFNjb3BlVHlwZVJlc29sdmVyKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHQvLyBgbmV3IFNvbWVUeXBlKC4uLilgIOKAlCBiYXJlIGNvbnN0cnVjdG9yIG5hbWVcblx0XHRpZiAoZW50cnkubmV3TmFtZSkge1xuXHRcdFx0Y29uc3QgcmVzb2x2ZWQgPSByZXNvbHZlci5yZXNvbHZlQnlOYW1lKGVudHJ5Lm5ld05hbWUpO1xuXHRcdFx0aWYgKHJlc29sdmVkKSB7XG5cdFx0XHRcdHJldHVybiByZXNvbHZlZDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBgbmV3IGluc3RhbmNlLlN1Yi5UeXBlKC4uLilgIOKAlCBjaGFpbiBvZmYgYSB0cmFja2VkIHZhcmlhYmxlJ3MgdHlwZVBhdGhcblx0XHRpZiAoZW50cnkubmV3Q2hhaW5Sb290ICYmIGVudHJ5Lm5ld0NoYWluUmVzdCAmJiBlbnRyeS5uZXdDaGFpblJlc3QubGVuZ3RoID4gMCkge1xuXHRcdFx0Zm9yIChjb25zdCBzY29wZUlkIG9mIGVudHJ5LnNjb3BlQ2hhaW4pIHtcblx0XHRcdFx0Y29uc3Qgcm9vdFZhcmlhYmxlID0gdGhpcy52YXJpYWJsZXMuZ2V0KGAke3Njb3BlSWR9IyR7ZW50cnkubmV3Q2hhaW5Sb290fWApO1xuXHRcdFx0XHRpZiAoIXJvb3RWYXJpYWJsZT8udHlwZVBhdGgpIHtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCBjYW5kaWRhdGUgPSBbIHJvb3RWYXJpYWJsZS50eXBlUGF0aCwgLi4uZW50cnkubmV3Q2hhaW5SZXN0IF0uam9pbignLicpO1xuXHRcdFx0XHRpZiAocmVzb2x2ZXIuaGFzUGF0aChjYW5kaWRhdGUpKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGNhbmRpZGF0ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIGBsb29rdXAoJ0EuQicpYCAvIGByZWNlaXZlci5sb29rdXAoJ0EuQicpYCBpbml0aWFsaXplcnNcblx0XHRpZiAoZW50cnkubG9va3VwUGF0aCkge1xuXHRcdFx0Ly8gUmVjZWl2ZXItcmVsYXRpdmUgZmlyc3Q6IGB1c2VyLmxvb2t1cCgnQWRtaW5FbnRpdHknKWAgcmVzb2x2ZXNcblx0XHRcdC8vIGFnYWluc3QgdGhlIHJlY2VpdmVyIHZhcmlhYmxlJ3MgdHlwZVBhdGggd2hlbiB0aGF0IHlpZWxkcyBhXG5cdFx0XHQvLyBrbm93biBwYXRoICh2YWx1ZS1zY29wZSB0aWVyIOKAlCBpbm5lcm1vc3QgYmluZGluZyB3aW5zKVxuXHRcdFx0aWYgKGVudHJ5Lmxvb2t1cFJlY2VpdmVyKSB7XG5cdFx0XHRcdGZvciAoY29uc3Qgc2NvcGVJZCBvZiBlbnRyeS5zY29wZUNoYWluKSB7XG5cdFx0XHRcdFx0Y29uc3QgcmVjZWl2ZXJWYXJpYWJsZSA9IHRoaXMudmFyaWFibGVzLmdldChgJHtzY29wZUlkfSMke2VudHJ5Lmxvb2t1cFJlY2VpdmVyfWApO1xuXHRcdFx0XHRcdGlmICghcmVjZWl2ZXJWYXJpYWJsZT8udHlwZVBhdGgpIHtcblx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjb25zdCBjYW5kaWRhdGUgPSBgJHtyZWNlaXZlclZhcmlhYmxlLnR5cGVQYXRofS4ke2VudHJ5Lmxvb2t1cFBhdGh9YDtcblx0XHRcdFx0XHRpZiAocmVzb2x2ZXIuaGFzUGF0aChjYW5kaWRhdGUpKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gY2FuZGlkYXRlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Ly8gVGhlIGFuYWx5emVyJ3MgdGllciBsYXcgYWJvdmUgdmFsdWUgc2NvcGUgKGltcG9ydCBzY29wZSxcblx0XHRcdC8vIHNvdXJjZS1yZWxhdGl2ZSwgcm9vdCk6IGFuIGltcG9ydGVkIGBIb2xkZXIubG9va3VwKCdUb2tlbicpYFxuXHRcdFx0Ly8gb3IgYGxvb2t1cChBcHAsICdDcmF0ZScpYCByZXNvbHZlcyBleGFjdGx5IGFzIHRoZSB1c2FnZXMgcGFzc1xuXHRcdFx0Ly8gcmVzb2x2ZWQgaXQsIHNvIHNjb3Blcy5qc29uIGFncmVlcyB3aXRoIHRoZSBoYXJkLWZhaWwgdmVyZGljdHNcblx0XHRcdGlmIChyZXNvbHZlci5yZXNvbHZlTG9va3VwICYmIGVudHJ5Lmxvb2t1cENhbGwpIHtcblx0XHRcdFx0Y29uc3QgcmVzb2x2ZWQgPSByZXNvbHZlci5yZXNvbHZlTG9va3VwKGVudHJ5Lmxvb2t1cENhbGwpO1xuXHRcdFx0XHRpZiAocmVzb2x2ZWQgJiYgcmVzb2x2ZXIuaGFzUGF0aChyZXNvbHZlZCkpIHtcblx0XHRcdFx0XHRyZXR1cm4gcmVzb2x2ZWQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmIChyZXNvbHZlci5oYXNQYXRoKGVudHJ5Lmxvb2t1cFBhdGgpKSB7XG5cdFx0XHRcdHJldHVybiBlbnRyeS5sb29rdXBQYXRoO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgYnlOYW1lID0gcmVzb2x2ZXIucmVzb2x2ZUJ5TmFtZShlbnRyeS5sb29rdXBQYXRoKTtcblx0XHRcdGlmIChieU5hbWUpIHtcblx0XHRcdFx0cmV0dXJuIGJ5TmFtZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBUeXBlIGFubm90YXRpb246ICdVc2VyRW50aXR5X1VzZXJSZXNwb25zZScgKHRhY3RpY2EgdHlwZXMudHMgbmFtaW5nKVxuXHRcdC8vIOKGkiBkb3R0ZWQgcGF0aCwgb3IgYSBiYXJlIGtub3duIHR5cGUgbmFtZVxuXHRcdGlmIChlbnRyeS5hbm5vdGF0aW9uKSB7XG5cdFx0XHRjb25zdCBkb3R0ZWQgPSBlbnRyeS5hbm5vdGF0aW9uLnJlcGxhY2UoL18vZywgJy4nKTtcblx0XHRcdGlmIChkb3R0ZWQuaW5jbHVkZXMoJy4nKSAmJiByZXNvbHZlci5oYXNQYXRoKGRvdHRlZCkpIHtcblx0XHRcdFx0cmV0dXJuIGRvdHRlZDtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGJ5TmFtZSA9IHJlc29sdmVyLnJlc29sdmVCeU5hbWUoZW50cnkuYW5ub3RhdGlvbik7XG5cdFx0XHRpZiAoYnlOYW1lKSB7XG5cdFx0XHRcdHJldHVybiBieU5hbWU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxufVxuIl19
|
package/lib/types.d.ts
CHANGED
|
@@ -158,7 +158,12 @@ export interface EDSInfo {
|
|
|
158
158
|
code: string;
|
|
159
159
|
/** Resolved target type if detectable */
|
|
160
160
|
targetType?: string;
|
|
161
|
-
/**
|
|
161
|
+
/**
|
|
162
|
+
* Enclosing mnemonica type path (define/lazy handler or decorated class);
|
|
163
|
+
* for wrap sites outside any handler, attributed through the instance/context
|
|
164
|
+
* argument (tracked assignment or parameter annotation), then inherited down
|
|
165
|
+
* the wrap generation chain (`via`)
|
|
166
|
+
*/
|
|
162
167
|
scope?: string;
|
|
163
168
|
/** Location of the enclosing wrap site whose runtime wrapping caused this entry */
|
|
164
169
|
via?: string;
|
|
@@ -531,3 +536,15 @@ export interface HierarchyNode {
|
|
|
531
536
|
/** Child types in the Trie */
|
|
532
537
|
children: HierarchyNode[];
|
|
533
538
|
}
|
|
539
|
+
/**
|
|
540
|
+
* A fatal resolution failure: same-namespace duplicate mnemonica
|
|
541
|
+
* definitions, or a mnemonica-graph type reference that stays ambiguous
|
|
542
|
+
* after path-aware resolution (or resolves to nothing). The CLI prints
|
|
543
|
+
* every location and writes no .tactica output at all.
|
|
544
|
+
*/
|
|
545
|
+
export interface ResolutionError {
|
|
546
|
+
/** human-readable description of the failure */
|
|
547
|
+
message: string;
|
|
548
|
+
/** every involved source location, `file:line:column` */
|
|
549
|
+
locations: string[];
|
|
550
|
+
}
|
package/lib/types.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIFR5cGUgZGVmaW5pdGlvbnMgZm9yIFRhY3RpY2FcbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIFRhY3RpY2FDb25maWcge1xuXHQvKiogT3V0cHV0IGRpcmVjdG9yeSBmb3IgZ2VuZXJhdGVkIHR5cGVzIChkZWZhdWx0OiAudGFjdGljYSkgKi9cblx0b3V0cHV0RGlyPzogc3RyaW5nO1xuXHQvKiogRmlsZXMgdG8gaW5jbHVkZSAoZ2xvYiBwYXR0ZXJucykgKi9cblx0aW5jbHVkZT86IHN0cmluZ1tdO1xuXHQvKiogRmlsZXMgdG8gZXhjbHVkZSAoZ2xvYiBwYXR0ZXJucykgKi9cblx0ZXhjbHVkZT86IHN0cmluZ1tdO1xuXHQvKiogRW5hYmxlIHZlcmJvc2UgbG9nZ2luZyAqL1xuXHR2ZXJib3NlPzogYm9vbGVhbjtcblx0LyoqIEdlbmVyYXRlIGdsb2JhbCBhdWdtZW50YXRpb24gaW5zdGVhZCBvZiBtb2R1bGUgYXVnbWVudGF0aW9uIChkZWZhdWx0OiB0cnVlKSAqL1xuXHRnbG9iYWxBdWdtZW50YXRpb24/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BlcnR5SW5mbyB7XG5cdG5hbWU6IHN0cmluZztcblx0dHlwZTogc3RyaW5nO1xuXHRvcHRpb25hbDogYm9vbGVhbjtcblx0LyoqIFRydWUgaWYgdGhpcyBpcyBhIGdldHRlciBwcm9wZXJ0eSAocmVhZG9ubHkpICovXG5cdHJlYWRvbmx5PzogYm9vbGVhbjtcbn1cblxuLyoqIENvbnN0cnVjdG9yIHBhcmFtZXRlciBpbmZvIGZvciBUeXBlUmVnaXN0cnkgc2lnbmF0dXJlcyAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25zdHJ1Y3RvclBhcmFtSW5mbyB7XG5cdC8qKiBQYXJhbWV0ZXIgbmFtZSAoZS5nLiwgXCJ1c2FnZXNcIiwgXCJkYXRhXCIsIFwiY29uZmlnXCIpICovXG5cdG5hbWU6IHN0cmluZztcblx0LyoqIFRoZSB0eXBlIHN0cmluZyAtIGNhbiBiZSBhIHNpbXBsZSB0eXBlIG9yIGV4cGFuZGVkIG9iamVjdCBsaXRlcmFsICovXG5cdHR5cGU6IHN0cmluZztcblx0b3B0aW9uYWw6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZU5vZGUge1xuXHQvKiogVHlwZSBuYW1lIChlLmcuLCBcIlNlY29uZFR5cGVcIikgKi9cblx0bmFtZTogc3RyaW5nO1xuXHQvKiogRnVsbCBwYXRoIChlLmcuLCBcIkZpcnN0VHlwZS5TZWNvbmRUeXBlXCIpICovXG5cdGZ1bGxQYXRoOiBzdHJpbmc7XG5cdC8qKiBQcm9wZXJ0aWVzIGRlZmluZWQgaW4gdGhpcyB0eXBlJ3MgY29uc3RydWN0b3IgKi9cblx0cHJvcGVydGllczogTWFwPHN0cmluZywgUHJvcGVydHlJbmZvPjtcblx0LyoqIENvbnN0cnVjdG9yIHBhcmFtZXRlcnMgKGZvciBUeXBlUmVnaXN0cnkgY29uc3RydWN0b3Igc2lnbmF0dXJlKSAqL1xuXHRjb25zdHJ1Y3RvclBhcmFtcz86IENvbnN0cnVjdG9yUGFyYW1JbmZvW107XG5cdC8qKiBQYXJlbnQgdHlwZSBub2RlICovXG5cdHBhcmVudD86IFR5cGVOb2RlO1xuXHQvKiogQ2hpbGQgdHlwZXMgKi9cblx0Y2hpbGRyZW46IE1hcDxzdHJpbmcsIFR5cGVOb2RlPjtcblx0LyoqIFNvdXJjZSBmaWxlIHBhdGggKi9cblx0c291cmNlRmlsZTogc3RyaW5nO1xuXHQvKiogTGluZSBudW1iZXIgaW4gc291cmNlICovXG5cdGxpbmU6IG51bWJlcjtcblx0LyoqIENvbHVtbiBudW1iZXIgaW4gc291cmNlICovXG5cdGNvbHVtbjogbnVtYmVyO1xuXHQvKiogQ29uc3RydWN0b3IgZnVuY3Rpb24gbmFtZSBvciBjbGFzcyBuYW1lICovXG5cdGNvbnN0cnVjdG9yTmFtZT86IHN0cmluZztcblx0LyoqIENvbGxlY3Rpb24gaWRlbnRpZmllciBpZiB0aGUgdHlwZSBiZWxvbmdzIHRvIGEgY3VzdG9tIGNvbGxlY3Rpb24gKHVuZGVmaW5lZCA9IGRlZmF1bHQvZ2xvYmFsIHJlZ2lzdHJ5KSAqL1xuXHRjb2xsZWN0aW9uSWQ/OiBzdHJpbmc7XG5cdC8qKiBSZWdpc3RyeSBpbnRlcmZhY2UgbmFtZSBmb3IgY3VzdG9tIGNvbGxlY3Rpb25zIHVzaW5nIE9wdGlvbiBCICh1c2VyLXByb3ZpZGVkIHJlZ2lzdHJ5IGludGVyZmFjZSkgKi9cblx0cmVnaXN0cnlJbnRlcmZhY2VOYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVHcmFwaCB7XG5cdC8qKiBSb290IHR5cGVzLCBrZXllZCBieSBmdWxsIHBhdGggKGN1c3RvbS1jb2xsZWN0aW9uIHJvb3RzIGNhcnJ5IHRoZSBgY29sbGVjdGlvbklkOjpgIHByZWZpeCkgKi9cblx0cm9vdHM6IE1hcDxzdHJpbmcsIFR5cGVOb2RlPjtcblx0LyoqIEFsbCB0eXBlcyBieSBmdWxsIHBhdGggKi9cblx0YWxsVHlwZXM6IE1hcDxzdHJpbmcsIFR5cGVOb2RlPjtcblx0LyoqIEFkZCBhIHJvb3QgdHlwZSAqL1xuXHRhZGRSb290KG5vZGU6IFR5cGVOb2RlKTogdm9pZDtcblx0LyoqIEZpbmQgYSB0eXBlIGJ5IGZ1bGwgcGF0aCAqL1xuXHRmaW5kVHlwZShmdWxsUGF0aDogc3RyaW5nKTogVHlwZU5vZGUgfCB1bmRlZmluZWQ7XG5cdC8qKiBHZXQgYWxsIHR5cGVzIGFzIGFycmF5ICovXG5cdGdldEFsbFR5cGVzKCk6IFR5cGVOb2RlW107XG5cdC8qKiBDbGVhciB0aGUgZ3JhcGggKi9cblx0Y2xlYXIoKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBbmFseXplUmVzdWx0IHtcblx0LyoqIFR5cGVzIGZvdW5kIGluIHRoZSBhbmFseXNpcyAqL1xuXHR0eXBlczogVHlwZU5vZGVbXTtcblx0LyoqIEVycm9ycyBlbmNvdW50ZXJlZCAqL1xuXHRlcnJvcnM6IEFuYWx5emVFcnJvcltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFuYWx5emVFcnJvciB7XG5cdG1lc3NhZ2U6IHN0cmluZztcblx0ZmlsZTogc3RyaW5nO1xuXHRsaW5lOiBudW1iZXI7XG5cdGNvbHVtbjogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYXRlZFR5cGVzIHtcblx0LyoqIENvbnRlbnQgb2YgdGhlIC5kLnRzIGZpbGUgKi9cblx0Y29udGVudDogc3RyaW5nO1xuXHQvKiogVHlwZXMgdGhhdCB3ZXJlIGdlbmVyYXRlZCAqL1xuXHR0eXBlczogc3RyaW5nW107XG59XG5cbi8qKlxuICogRGVmaW5pdGlvbiBpbmZvIGZvciBjb2RlIG5hdmlnYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWZpbml0aW9uSW5mbyB7XG5cdC8qKiBUeXBlIG5hbWUgKGUuZy4sIFwiQWRtaW5UeXBlXCIpICovXG5cdG5hbWU6IHN0cmluZztcblx0LyoqIExvY2F0aW9uIGluIHNvdXJjZTogZmlsZS50czpMaW5lOkNvbCAqL1xuXHRsb2NhdGlvbjogc3RyaW5nO1xuXHQvKiogSG93IHR5cGUgd2FzIGNyZWF0ZWQ6ICdkZWZpbmUnIG9yICdkZWNvcmF0ZScgKi9cblx0a2luZDogJ2RlZmluZScgfCAnZGVjb3JhdGUnO1xuXHQvKiogUGFyZW50IHR5cGUgZnVsbCBwYXRoLCBudWxsIGlmIHJvb3QgKi9cblx0cGFyZW50OiBzdHJpbmcgfCBudWxsO1xuXHQvKiogc3RyaWN0Q2hhaW4gY29uZmlnIG9wdGlvbiAqL1xuXHRzdHJpY3RDaGFpbjogYm9vbGVhbjtcblx0LyoqIGJsb2NrRXJyb3JzIGNvbmZpZyBvcHRpb24gKi9cblx0YmxvY2tFcnJvcnM6IGJvb2xlYW47XG59XG5cbi8qKlxuICogVXNhZ2UgaW5mbyBmb3IgY29kZSBuYXZpZ2F0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXNhZ2VJbmZvIHtcblx0LyoqIExvY2F0aW9uIGluIHNvdXJjZTogZmlsZS50czpMaW5lOkNvbCAqL1xuXHRsb2NhdGlvbjogc3RyaW5nO1xuXHQvKiogS2luZCBvZiB1c2FnZTogaW5zdGFudGlhdGlvbiwgdHlwZUFubm90YXRpb24sIHByb3BlcnR5QWNjZXNzLCBsb29rdXAsIHJlZmVyZW5jZSAqL1xuXHRraW5kOiAnaW5zdGFudGlhdGlvbicgfCAndHlwZUFubm90YXRpb24nIHwgJ3Byb3BlcnR5QWNjZXNzJyB8ICdsb29rdXAnIHwgJ3JlZmVyZW5jZSc7XG5cdC8qKiBDb2RlIHNuaXBwZXQgKi9cblx0Y29kZTogc3RyaW5nO1xuXHQvKipcblx0ICogU2NvcGUgaG9sZGluZyB0aGlzIHVzYWdlIChMb2NhbFNjb3BlV2Fsa2VyIHNjb3BlSWQ6IG1vZHVsZSBzY29wZSBpcyB0aGVcblx0ICogZmlsZSBwYXRoLCBmdW5jdGlvbiBzY29wZXMgYXJlIGZpbGU6bGluZTpjb2wpLiBBZGRpdGl2ZTsgYWJzZW50IHdoZW4gdGhlXG5cdCAqIHVzYWdlIHNpdHMgb3V0c2lkZSB0cmFja2VkIGZpbGVzLlxuXHQgKi9cblx0aG9sZGVyU2NvcGVJZD86IHN0cmluZztcblx0LyoqXG5cdCAqIENvbnN0cnVjdG9yIGV4cHJlc3Npb24gdGV4dCBhdCBhbiBpbnN0YW50aWF0aW9uIHNpdGUgKCdUaGluZycsXG5cdCAqICd1c2VyLkFkbWluRW50aXR5JywgJ1QyJyBmb3IgYSBsb29rdXAgYWxpYXMpLiBBZGRpdGl2ZTsgc2V0IG9ubHkgb25cblx0ICoga2luZCAnaW5zdGFudGlhdGlvbicuIEZlZWRzIENyZWF0aW9uQW5jaG9yLmNvbnN0cnVjdG9yVGV4dCAoUGhhc2UgMykuXG5cdCAqL1xuXHRjb25zdHJ1Y3RvclRleHQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogSlNPTiBvdXRwdXQgZm9yIGRlZmluaXRpb25zLmpzb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWZpbml0aW9uc0pzb24ge1xuXHR2ZXJzaW9uOiBzdHJpbmc7XG5cdGdlbmVyYXRlZEF0OiBzdHJpbmc7XG5cdGRlZmluaXRpb25zOiBSZWNvcmQ8c3RyaW5nLCBEZWZpbml0aW9uSW5mbz47XG59XG5cbi8qKlxuICogSlNPTiBvdXRwdXQgZm9yIHVzYWdlcy5qc29uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXNhZ2VzSnNvbiB7XG5cdHZlcnNpb246IHN0cmluZztcblx0Z2VuZXJhdGVkQXQ6IHN0cmluZztcblx0dXNhZ2VzOiBSZWNvcmQ8c3RyaW5nLCBVc2FnZUluZm9bXT47XG59XG5cbi8qKlxuICogRURTIChFeGVjdXRpb24gRGF0YSBTdG9yYWdlKSBraW5kIGZvciB0cmFja2luZyBleGVjdXRpb24gZmxvdyBwYXR0ZXJuc1xuICovXG5leHBvcnQgdHlwZSBFRFNLaW5kID1cblx0fCAnd3JhcCdcblx0fCAnY29udGV4dENvbnN1bWUnXG5cdHwgJ2hvb2tBdHRhY2gnO1xuXG4vKipcbiAqIEVEUyBpbmZvIGZvciBleGVjdXRpb24gZGF0YSBmbG93IHRyYWNraW5nXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRURTSW5mbyB7XG5cdC8qKiBMb2NhdGlvbiBpbiBzb3VyY2U6IGZpbGUudHM6TGluZTpDb2wgKi9cblx0bG9jYXRpb246IHN0cmluZztcblx0LyoqIEtpbmQgb2YgRURTIHVzYWdlICovXG5cdGtpbmQ6IEVEU0tpbmQ7XG5cdC8qKiBDb2RlIHNuaXBwZXQgKi9cblx0Y29kZTogc3RyaW5nO1xuXHQvKiogUmVzb2x2ZWQgdGFyZ2V0IHR5cGUgaWYgZGV0ZWN0YWJsZSAqL1xuXHR0YXJnZXRUeXBlPzogc3RyaW5nO1xuXHQvKiogRW5jbG9zaW5nIG1uZW1vbmljYSB0eXBlIHBhdGggKGRlZmluZS9sYXp5IGhhbmRsZXIgb3IgZGVjb3JhdGVkIGNsYXNzKSAqL1xuXHRzY29wZT86IHN0cmluZztcblx0LyoqIExvY2F0aW9uIG9mIHRoZSBlbmNsb3Npbmcgd3JhcCBzaXRlIHdob3NlIHJ1bnRpbWUgd3JhcHBpbmcgY2F1c2VkIHRoaXMgZW50cnkgKi9cblx0dmlhPzogc3RyaW5nO1xuXHQvKiogTW5lbW9uaWNhIHR5cGUgZnVsbFBhdGhzIGluc3RhbnRpYXRlZCBpbnNpZGUgdGhlIHdyYXBwZWQgYm9keSDigJQgZ3VhcmFudGVlZCBwYXRoIGhpdHMgKi9cblx0Y3JlYXRlc1R5cGVzPzogc3RyaW5nW107XG5cdC8qKiBMYWJlbCBzdHJpbmcgbGl0ZXJhbCBwYXNzZWQgdG8gd3JhcChmbiwg4oCmLCAnbGFiZWwnKSB3aGVuIHN0YXRpY2FsbHkgdmlzaWJsZSAqL1xuXHRsYWJlbD86IHN0cmluZztcblx0LyoqIHNjb3BlSWQgKHNjb3Blcy5qc29uKSBvZiB0aGUgd3JhcHBlZCBjYWxsYmFjaydzIG93biBzY29wZSDigJQgam9pbnMgdG8gdGhlIGNyZWF0aW9uIGdyYXBoICovXG5cdGNhbGxiYWNrU2NvcGVJZD86IHN0cmluZztcblx0LyoqIElkZW50aWZpZXIgcGFzc2VkIGFzIHRoZSBpbnN0YW5jZS9jb250ZXh0IGFyZ3VtZW50ICgndXNlcicpLCB3aGVuIGl0IGlzIG9uZSAqL1xuXHRpbnN0YW5jZUFyZz86IHN0cmluZztcblx0LyoqIHNjb3BlSWQgb2YgdGhlIHNjb3BlIGhvbGRpbmcgdGhlIHdyYXAgY2FsbCBzaXRlIOKAlCBqb2lucyB0byB0aGUgY3JlYXRpb24gZ3JhcGggKi9cblx0c2NvcGVJZD86IHN0cmluZztcblx0LyoqIE1uZW1vbmljYSBmdWxsUGF0aCBvZiB0aGUgaW5zdGFuY2UgYXJndW1lbnQsIHJlc29sdmVkIHRocm91Z2ggc2NvcGUgdmFyaWFibGVzICovXG5cdHdyYXBzVHlwZVBhdGg/OiBzdHJpbmc7XG5cdC8qKiBXcmFwLWZhbWlseSBmdW5jdGlvbiBuYW1lICgnd3JhcCcgfCAnd3JhcENvbnN0cnVjdG9yQXJnJyB8IOKApikg4oCUIGpvaW5zIHRoZVxuXHQgKiAgY2FsbCBzaXRlIHRvIGRpdmUncyBlbmdpbmUga25vdCBpbiBncmFwaCBjb25zdW1lcnMgKi9cblx0Zm4/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogSlNPTiBvdXRwdXQgZm9yIGVkcy5qc29uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRURTSnNvbiB7XG5cdHZlcnNpb246IHN0cmluZztcblx0Z2VuZXJhdGVkQXQ6IHN0cmluZztcblx0ZWRzOiBSZWNvcmQ8c3RyaW5nLCBFRFNJbmZvW10+O1xufVxuXG4vKipcbiAqIEluc3RydW1lbnRhdGlvbiBraW5kIGZvciBmcmFtZXdvcmsgbGlmZWN5Y2xlIGNyb3Nzcm9hZHNcbiAqL1xuZXhwb3J0IHR5cGUgSW5zdHJ1bWVudGF0aW9uS2luZCA9XG5cdHwgJ2ludGVyY2VwdG9yJ1xuXHR8ICdndWFyZCdcblx0fCAncGlwZSdcblx0fCAnZmlsdGVyJ1xuXHR8ICdtaWRkbGV3YXJlJztcblxuLyoqXG4gKiBJbnN0cnVtZW50YXRpb24gc2NvcGU6IHdoZXJlIHRoZSBwb2ludCBhdHRhY2hlcy5cbiAqICdnbG9iYWwnIGZvciBwcm92aWRlci10b2tlbiByZWdpc3RyYXRpb25zLCAnbW9kdWxlJyBmb3IgbWlkZGxld2FyZSB3aXJlZFxuICogdmlhIGNvbnN1bWVyLmFwcGx5KCkgQU5EIGZvciBiYXJlIGhlcml0YWdlIGRlY2xhcmF0aW9ucyB3aG9zZSBhdHRhY2htZW50XG4gKiBpcyBzdGF0aWNhbGx5IHVua25vd24sIGBjb250cm9sbGVyOk5hbWVgIC8gYG1ldGhvZDpDbGFzcy5tZXRob2RgIGZvclxuICogZGVjb3JhdG9yLXNjb3BlZCBhdHRhY2htZW50cy5cbiAqL1xuZXhwb3J0IHR5cGUgSW5zdHJ1bWVudGF0aW9uU2NvcGUgPVxuXHR8ICdnbG9iYWwnXG5cdHwgJ21vZHVsZSdcblx0fCBgY29udHJvbGxlcjoke3N0cmluZ31gXG5cdHwgYG1ldGhvZDoke3N0cmluZ31gO1xuXG4vKipcbiAqIEluc3RydW1lbnRhdGlvbiBwb2ludDogYSBmcmFtZXdvcmsgbGlmZWN5Y2xlIGNyb3Nzcm9hZCAoaW50ZXJjZXB0b3IsXG4gKiBndWFyZCwgcGlwZSwgZmlsdGVyLCBtaWRkbGV3YXJlKSBkZXRlY3RlZCBzeW50YWN0aWNhbGx5LiBUaGUgdm9jYWJ1bGFyeVxuICogdGhhdCB0dXJucyBhIHN5bnRhY3RpYyBzaGFwZSBpbnRvIGEgcG9pbnQgY29tZXMgZnJvbSBwbHVnaW5zIOKAlCB3aXRoIG5vXG4gKiBwbHVnaW4gbG9hZGVkLCBubyBwb2ludHMgYXJlIGNvbGxlY3RlZC5cbiAqXG4gKiBEZWR1cGUvc2NvcGUgZGVjaXNpb246IHBvaW50cyBhcmUga2V5ZWQgYnkgKGtpbmQsIGNsYXNzTmFtZSwgbG9jYXRpb24sXG4gKiBzY29wZSkgYW5kIGR1cGxpY2F0ZXMgbWVyZ2UgdGhlaXIgYHRhcmdldHNgLiBBIGNsYXNzIGRldGVjdGVkIGJvdGggYnlcbiAqIGhlcml0YWdlIChhIHBsdWdpbi1saXN0ZWQgYGltcGxlbWVudHNgIGludGVyZmFjZSkgYW5kIGJ5IGEgZGVjb3JhdG9yXG4gKiBzaXRlIHlpZWxkcyBTRVBBUkFURSBlbnRyaWVzIOKAlCB0aGUgY2xhc3MtZGVjbGFyYXRpb24gcG9pbnQga2VlcHMgc2NvcGVcbiAqICdtb2R1bGUnIChhdHRhY2htZW50IHVua25vd24pIHdoaWxlIGVhY2ggcmVnaXN0cmF0aW9uIHNpdGUgY2FycmllcyBpdHNcbiAqIG93biBzY29wZS4gT25lIHBvaW50IHNlcnZpbmcgbXVsdGlwbGUgc2NvcGVzIHZpYSBtZXJnZWQgc2NvcGUgbGlzdHMgd2FzXG4gKiByZWplY3RlZDogY29uc3VtZXJzIChtbmVtb2dyYXBoaWNhIGRpYW1vbmRzKSBrZXkgb2ZmIGEgc2luZ2xlIHNjb3BlIHBlclxuICogcG9pbnQsIGFuZCBzZXBhcmF0ZSBlbnRyaWVzIGtlZXAgdGhhdCBjb250cmFjdCBzaW1wbGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5zdHJ1bWVudGF0aW9uUG9pbnQge1xuXHQvKiogS2luZCBvZiBsaWZlY3ljbGUgY3Jvc3Nyb2FkICovXG5cdGtpbmQ6IEluc3RydW1lbnRhdGlvbktpbmQ7XG5cdC8qKiBDbGFzcyBwcm92aWRpbmcgdGhlIGluc3RydW1lbnRhdGlvbiAoZS5nLiwgXCJBdXRoR3VhcmRcIikgKi9cblx0Y2xhc3NOYW1lOiBzdHJpbmc7XG5cdC8qKiBMb2NhdGlvbiBpbiBzb3VyY2U6IGZpbGUudHM6TGluZTpDb2wgKGNsYXNzIGRlY2xhcmF0aW9uIHdoZW4gZGVjbGFyZWQgaW4tcHJvamVjdCwgZWxzZSB0aGUgcmVnaXN0cmF0aW9uIHNpdGUpICovXG5cdGxvY2F0aW9uOiBzdHJpbmc7XG5cdC8qKiBDb2RlIHNuaXBwZXQ6IHNpZ25hdHVyZSAvIGZpcnN0IGxpbmUsIGxpa2UgRURTIGBjb2RlYCAqL1xuXHRjb2RlOiBzdHJpbmc7XG5cdC8qKiBXaGVyZSB0aGUgcG9pbnQgYXR0YWNoZXMgKi9cblx0c2NvcGU6IEluc3RydW1lbnRhdGlvblNjb3BlO1xuXHQvKiogQ29udHJvbGxlci9wcm92aWRlciBuYW1lcyB0aGUgcG9pbnQgYXR0YWNoZXMgdG87IGVtcHR5IGZvciBnbG9iYWwgcG9pbnRzICovXG5cdHRhcmdldHM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEpTT04gb3V0cHV0IGZvciBpbnN0cnVtZW50YXRpb24uanNvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluc3RydW1lbnRhdGlvbkpzb24ge1xuXHQvKiogU2NoZW1hIHZlcnNpb246IDIgYWRkcyB0aGUgb3B0aW9uYWwgY3JlYXRpb25HcmFwaCBrZXkgKFBoYXNlIDMpICovXG5cdHZlcnNpb246IG51bWJlcjtcblx0Z2VuZXJhdGVkQXQ6IHN0cmluZztcblx0cG9pbnRzOiBJbnN0cnVtZW50YXRpb25Qb2ludFtdO1xuXHQvKipcblx0ICogSW5zaWRlLW91dCBjcmVhdGlvbiB3YWxrIChpbnN0cnVtZW50YXRpb24gd2Fsa2VyIHBsYW4sIFBoYXNlIDMpOiB3aGljaFxuXHQgKiBzY29wZXMgY3JlYXRlIG1uZW1vbmljYSBpbnN0YW5jZXMgYW5kIHdobyBjYWxscyB0aGVtLCB3YWxrZWQgb3V0d2FyZCB0b1xuXHQgKiB0aGUgc3RhcnRlcnMuIEFic2VudCB3aGVuIHRoZSB3cml0ZXIgaXMgY2FsbGVkIHdpdGhvdXQgY3JlYXRpb24tZ3JhcGhcblx0ICogZGF0YSAoZGlyZWN0IGxpYnJhcnkgdXNlKTsgYWx3YXlzIHByZXNlbnQgZnJvbSB0aGUgQ0xJLlxuXHQgKi9cblx0Y3JlYXRpb25HcmFwaD86IENyZWF0aW9uR3JhcGg7XG59XG5cbi8qKlxuICogRmxvdyBraW5kIGZvciB0cmFja2luZyBuYXRpdmUgaW5zdGFuY2UgdXNhZ2UgcGF0dGVybnNcbiAqL1xuZXhwb3J0IHR5cGUgRmxvd0tpbmQgPVxuXHR8ICdwcm9wZXJ0eVJlYWQnXG5cdHwgJ3Byb3BlcnR5V3JpdGUnXG5cdHwgJ21ldGhvZENhbGwnXG5cdHwgJ2Rlc3RydWN0dXJlUmVhZCdcblx0fCAncGFzc0FzQXJnJ1xuXHR8ICdyZXR1cm4nXG5cdHwgJ3NwcmVhZCdcblx0fCAnYXJyYXlFbGVtZW50J1xuXHR8ICdjb25kaXRpb25hbEFjY2Vzcydcblx0fCAnZWxlbWVudEFjY2Vzcydcblx0fCAncmVhc3NpZ25tZW50J1xuXHR8ICdpbnN0YW50aWF0aW9uJztcblxuLyoqXG4gKiBGbG93IGluZm8gZm9yIG5hdGl2ZSBpbnN0YW5jZSB1c2FnZSB0cmFja2luZ1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dJbmZvIHtcblx0LyoqIExvY2F0aW9uIGluIHNvdXJjZTogZmlsZS50czpMaW5lOkNvbCAqL1xuXHRsb2NhdGlvbjogc3RyaW5nO1xuXHQvKiogS2luZCBvZiBmbG93ICovXG5cdGtpbmQ6IEZsb3dLaW5kO1xuXHQvKiogQ29kZSBzbmlwcGV0ICovXG5cdGNvZGU6IHN0cmluZztcblx0LyoqIFByb3BlcnR5IG5hbWUgaWYgYXBwbGljYWJsZSAqL1xuXHRwcm9wZXJ0eU5hbWU/OiBzdHJpbmc7XG5cdC8qKiBSZXNvbHZlZCB0YXJnZXQgdHlwZSBpZiBrbm93biAqL1xuXHR0YXJnZXRUeXBlPzogc3RyaW5nO1xuXHQvKiogQ29udGV4dCAoZnVuY3Rpb24gbmFtZSwgcGFyYW0gcG9zaXRpb24sIGV0Yy4pICovXG5cdGNvbnRleHQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogSlNPTiBvdXRwdXQgZm9yIGZsb3cuanNvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dKc29uIHtcblx0dmVyc2lvbjogc3RyaW5nO1xuXHRnZW5lcmF0ZWRBdDogc3RyaW5nO1xuXHRmbG93OiBSZWNvcmQ8c3RyaW5nLCBGbG93SW5mb1tdPjtcbn1cblxuLyoqXG4gKiBXaGF0IGEgbW9kdWxlLWxldmVsIGJpbmRpbmcgaXMuIFZhcmlhYmxlcyBhcmUgY2xhc3NpZmllZCBhcyAnY29uc3QnXG4gKiByZWdhcmRsZXNzIG9mIGxldC92YXIg4oCUIG11dGFiaWxpdHkgKHJlYXNzaWdubWVudCB0cmFja2luZykgaXMgdGhlXG4gKiBsb2NhbC1zY29wZSB3YWxrZXIncyBjb25jZXJuIChQaGFzZSAyKSwgbm90IHRoZSBtb2R1bGUgZ3JhcGgncy5cbiAqL1xuZXhwb3J0IHR5cGUgTW9kdWxlQmluZGluZ0tpbmQgPVxuXHR8ICdmdW5jdGlvbidcblx0fCAnY2xhc3MnXG5cdHwgJ2NvbnN0J1xuXHR8ICd0eXBlJ1xuXHR8ICd1bmtub3duJztcblxuLyoqXG4gKiBIb3cgYSBiaW5kaW5nIGVudGVycyBhIG1vZHVsZVxuICovXG5leHBvcnQgdHlwZSBNb2R1bGVJbXBvcnRLaW5kID1cblx0fCAnbmFtZWQnXG5cdHwgJ2RlZmF1bHQnXG5cdHwgJ25hbWVzcGFjZSdcblx0fCAncmVxdWlyZSc7XG5cbi8qKlxuICogQSBnZW5lcmljIG1vZHVsZS1sZXZlbCBiaW5kaW5nIChleHBvcnQsIGltcG9ydCwgb3IgcmUtZXhwb3J0KS5cbiAqXG4gKiBgbmFtZWAgaXMgYWx3YXlzIHRoZSBuYW1lIHRoaXMgbW9kdWxlIHByZXNlbnRzOiB0aGUgbG9jYWwgaWRlbnRpZmllciBmb3JcbiAqIGltcG9ydHMsIHRoZSBleHBvcnRlZCBuYW1lIGZvciBleHBvcnRzLiBgaW1wb3J0QWxpYXNgIGNhcnJpZXMgdGhlIG9yaWdpbmFsXG4gKiBuYW1lIGluIHRoZSBzb3VyY2UgbW9kdWxlIHdoZW4gaXQgZGlmZmVycyAoYGltcG9ydCB7IFggYXMgWSB9YCDihpIgbmFtZSAnWScsXG4gKiBpbXBvcnRBbGlhcyAnWCc7IGBleHBvcnQgeyBYIGFzIFkgfSBmcm9tIOKApmAg4oaSIG5hbWUgJ1knLCBpbXBvcnRBbGlhcyAnWCcpLlxuICogRm9yIGRlZmF1bHQgaW1wb3J0cyBuYW1lIGlzIHRoZSBsb2NhbCBpZGVudGlmaWVyIGFuZCB0aGUgc291cmNlIGxvb2t1cCBrZXlcbiAqIGlzICdkZWZhdWx0JyAoaW1wbGllZCBieSBpbXBvcnRLaW5kKTsgZm9yIG5hbWVzcGFjZSBpbXBvcnRzL2V4cG9ydHMgbmFtZSBpc1xuICogdGhlIG5hbWVzcGFjZSBhbGlhcyAoJyonIGZvciBiYXJlIGBleHBvcnQgKiBmcm9tIOKApmApLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1vZHVsZUJpbmRpbmcge1xuXHQvKiogTmFtZSBhcyBwcmVzZW50ZWQgaW4gdGhpcyBtb2R1bGUgKGxvY2FsIG5hbWUgZm9yIGltcG9ydHMsIGV4cG9ydGVkIG5hbWUgZm9yIGV4cG9ydHMpICovXG5cdG5hbWU6IHN0cmluZztcblx0LyoqIFdoYXQgdGhlIGJpbmRpbmcgaXM7IGJhY2tmaWxsZWQgZnJvbSB0aGUgb3JpZ2luIG1vZHVsZSB3aGVuIHJlc29sdmFibGUgKi9cblx0a2luZDogTW9kdWxlQmluZGluZ0tpbmQ7XG5cdC8qKlxuXHQgKiBSZXNvbHZlZCBhYnNvbHV0ZSBmaWxlIHBhdGggb2YgdGhlIHNvdXJjZSBtb2R1bGUgKHRoZSBtb2R1bGUgaXRzZWxmIGZvclxuXHQgKiBsb2NhbCBkZWNsYXJhdGlvbnM7IHRoZSByYXcgc3BlY2lmaWVyIHdoZW4gcmVzb2x1dGlvbiBmYWlscylcblx0ICovXG5cdHNvdXJjZU1vZHVsZTogc3RyaW5nO1xuXHQvKiogSG93IHRoZSBiaW5kaW5nIGVudGVycyB0aGUgbW9kdWxlIChhYnNlbnQgb24gcGxhaW4gbG9jYWwgZXhwb3J0cykgKi9cblx0aW1wb3J0S2luZD86IE1vZHVsZUltcG9ydEtpbmQ7XG5cdC8qKiBPcmlnaW5hbCBuYW1lIGluIHRoZSBzb3VyY2UgbW9kdWxlIHdoZW4gYWxpYXNlZCAqL1xuXHRpbXBvcnRBbGlhcz86IHN0cmluZztcblx0LyoqIFRydWUgZm9yIGBleHBvcnQgeyBYIH0gZnJvbSAnLi95J2AgLyBgZXhwb3J0ICogZnJvbSAnLi95J2AgKGJhcnJlbHMpICovXG5cdGlzUmVFeHBvcnQ6IGJvb2xlYW47XG5cdC8qKlxuXHQgKiBUcnVlIHdoZW4gdGhlIHNwZWNpZmllciByZXNvbHZlZCBpbnRvIG5vZGVfbW9kdWxlc1xuXHQgKiAodHMucmVzb2x2ZU1vZHVsZU5hbWUncyBpc0V4dGVybmFsTGlicmFyeUltcG9ydCkuIEV4dGVybmFsIGJpbmRpbmdzIGFyZVxuXHQgKiByZWNvcmRlZCBmb3IgcmVmZXJlbmNlIGJ1dCBuZXZlciBlbnRlciBgZGVwZW5kZW5jaWVzYCBhbmQgYXJlIG5ldmVyIHdhbGtlZC5cblx0ICogTm9kZS5qcyBidWlsdGlucyBhcmUgbm90IHJlY29yZGVkIGFzIGJpbmRpbmdzIGF0IGFsbCDigJQgc2VlXG5cdCAqIE1vZHVsZUluZm8uYnVpbHRpblNwZWNpZmllcnMuXG5cdCAqL1xuXHRleHRlcm5hbD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUGVyLW1vZHVsZSByZWNvcmQgb2YgdGhlIGNyb3NzLWZpbGUgZ3JhcGggKG1vZHVsZXMuanNvbilcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb2R1bGVJbmZvIHtcblx0LyoqIEFic29sdXRlIGZpbGUgcGF0aCAobWFwIGtleSkgKi9cblx0ZmlsZVBhdGg6IHN0cmluZztcblx0LyoqIE1uZW1vbmljYSB0eXBlIGZ1bGxQYXRocyBkZWZpbmVkIGluIHRoaXMgbW9kdWxlICovXG5cdGRlZmluZWRUeXBlczogc3RyaW5nW107XG5cdC8qKiBFdmVyeXRoaW5nIHRoaXMgbW9kdWxlIGV4cG9ydHMgKGxvY2FsIGRlY2xhcmF0aW9ucyBhbmQgcmUtZXhwb3J0cykgKi9cblx0ZXhwb3J0ZWRCaW5kaW5nczogTW9kdWxlQmluZGluZ1tdO1xuXHQvKiogRXZlcnl0aGluZyB0aGlzIG1vZHVsZSBpbXBvcnRzIChyZS1leHBvcnRzIGFwcGVhciBoZXJlIHRvbywgbWFya2VkIGlzUmVFeHBvcnQpICovXG5cdGltcG9ydGVkQmluZGluZ3M6IE1vZHVsZUJpbmRpbmdbXTtcblx0LyoqIEFic29sdXRlIHBhdGhzIG9mIGFuYWx5emVkIHByb2plY3QgbW9kdWxlcyB0aGlzIG1vZHVsZSBpbXBvcnRzIGZyb20gKi9cblx0ZGVwZW5kZW5jaWVzOiBzdHJpbmdbXTtcblx0LyoqIEltcG9ydCBzcGVjaWZpZXJzIHRoYXQgbW9kdWxlIHJlc29sdXRpb24gY291bGQgbm90IHJlc29sdmUgKG5vZGUgYnVpbHRpbnMgZXhjbHVkZWQg4oCUIHNlZSBidWlsdGluU3BlY2lmaWVycykgKi9cblx0dW5yZXNvbHZlZFNwZWNpZmllcnM6IHN0cmluZ1tdO1xuXHQvKipcblx0ICogTm9kZS5qcyBidWlsdGluIHNwZWNpZmllcnMgdGhpcyBtb2R1bGUgaW1wb3J0cyAoJ3BhdGgnLCAnbm9kZTpmcycsIOKApiksXG5cdCAqIG1hdGNoZWQgYWdhaW5zdCBub2RlOm1vZHVsZSdzIGJ1aWx0aW5Nb2R1bGVzIGluIGJvdGggYmFyZSBhbmRcblx0ICogYG5vZGU6YC1wcmVmaXhlZCBmb3Jtcy4gUmVjb3JkZWQgZm9yIGhvbmVzdHkgb25seTogYnVpbHRpbnMgcHJvZHVjZSBub1xuXHQgKiBiaW5kaW5ncywgbmV2ZXIgZW50ZXIgYGRlcGVuZGVuY2llc2AvYHVucmVzb2x2ZWRTcGVjaWZpZXJzYCwgYW5kIG5ldmVyXG5cdCAqIHByb2R1Y2UgZWRnZXMuXG5cdCAqL1xuXHRidWlsdGluU3BlY2lmaWVyczogc3RyaW5nW107XG59XG5cbi8qKlxuICogQSBjcm9zcy1tb2R1bGUgdXNhZ2Ugb2YgYSBtbmVtb25pY2EgdHlwZTogdXNhZ2VNb2R1bGUgaW1wb3J0cyBhIGJpbmRpbmdcbiAqIHdob3NlIG9yaWdpbiBtb2R1bGUgZGVmaW5lcyB0aGUgdHlwZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcm9zc01vZHVsZVVzYWdlIHtcblx0LyoqIE1hdGNoZWQgbW5lbW9uaWNhIHR5cGUgZnVsbFBhdGggKG9yIHRoZSBpbXBvcnRlZCBuYW1lIHdoZW4gdW5tYXRjaGVkKSAqL1xuXHR0eXBlUGF0aDogc3RyaW5nO1xuXHQvKiogQWJzb2x1dGUgcGF0aCBvZiB0aGUgbW9kdWxlIHdoZXJlIHRoZSB0eXBlIGlzIGRlZmluZWQgKHJlLWV4cG9ydCBjaGFpbnMgY2hhc2VkIHRvIHRoZSBvcmlnaW4pICovXG5cdGRlZmluaXRpb25Nb2R1bGU6IHN0cmluZztcblx0LyoqIEFic29sdXRlIHBhdGggb2YgdGhlIGltcG9ydGluZyBtb2R1bGUgKi9cblx0dXNhZ2VNb2R1bGU6IHN0cmluZztcblx0LyoqIEltcG9ydCBzaXRlOiBmaWxlLnRzOkxpbmU6Q29sICovXG5cdHVzYWdlTG9jYXRpb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgZnVsbCBtb2R1bGUgZ3JhcGhcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb2R1bGVHcmFwaCB7XG5cdC8qKiBLZXllZCBieSBhYnNvbHV0ZSBmaWxlIHBhdGggKi9cblx0bW9kdWxlczogTWFwPHN0cmluZywgTW9kdWxlSW5mbz47XG5cdGVkZ2VzOiBDcm9zc01vZHVsZVVzYWdlW107XG5cdC8qKlxuXHQgKiBDaXJjdWxhciBpbXBvcnQgY2hhaW5zIChlYWNoIGFuIGFycmF5IG9mIGFic29sdXRlIHBhdGhzKS4gUmVjb3JkZWQsIG5vdFxuXHQgKiBhbiBlcnJvciDigJQgbW5lbW9uaWNhIHN0cmljdENoYWluOmZhbHNlIHBlcm1pdHMgbm9uLWxpbmVhciBjb25zdHJ1Y3Rpb25cblx0ICovXG5cdGN5Y2xlczogc3RyaW5nW11bXTtcbn1cblxuLyoqXG4gKiBKU09OIG91dHB1dCBmb3IgbW9kdWxlcy5qc29uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9kdWxlc0pzb24ge1xuXHR2ZXJzaW9uOiBzdHJpbmc7XG5cdGdlbmVyYXRlZEF0OiBzdHJpbmc7XG5cdG1vZHVsZXM6IFJlY29yZDxzdHJpbmcsIE1vZHVsZUluZm8+O1xuXHRlZGdlczogQ3Jvc3NNb2R1bGVVc2FnZVtdO1xuXHRjeWNsZXM6IHN0cmluZ1tdW107XG59XG5cbi8qKlxuICogV2hhdCBhIHRyYWNrZWQgc2NvcGUgaXMuIERlY2lzaW9uIDUgKHJlc29sdmVkIDIwMjYtMDktMDMpOiBmdW5jdGlvbixcbiAqIG1ldGhvZCwgYW5kIGFycm93IHNjb3BlcyBPTkxZIOKAlCBubyBibG9jayBzY29wZXMuICdtb2R1bGUnIGlzIHRoZSBzeW50aGV0aWNcbiAqIHBlci1maWxlIHJvb3Qgc2NvcGUgc28gbW9kdWxlLWxldmVsIGluc3RhbmNlIGNyZWF0aW9ucyBhcmUgbGFiZWxlZCwgbm90XG4gKiBkcm9wcGVkICh3YWxrZXIgcGxhbjogXCJyZWNvcmRlZCBhcyBhIHJvb3RlZCBpbnN0YW5jZVwiKS5cbiAqL1xuZXhwb3J0IHR5cGUgU2NvcGVLaW5kID1cblx0fCAnbW9kdWxlJ1xuXHR8ICdmdW5jdGlvbidcblx0fCAnbWV0aG9kJ1xuXHR8ICdhcnJvdyc7XG5cbi8qKlxuICogT25lIHRyYWNrZWQgc2NvcGUgKHNjb3Blcy5qc29uKVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNjb3BlSW5mbyB7XG5cdC8qKiBVbmlxdWUgaWQ6IG1vZHVsZSBzY29wZSBpcyB0aGUgZmlsZSBwYXRoOyBmdW5jdGlvbiBzY29wZXMgYXJlIGZpbGU6bGluZTpjb2wgb2YgdGhlIHNjb3BlIG5vZGUgKi9cblx0c2NvcGVJZDogc3RyaW5nO1xuXHQvKiogRGVjaXNpb24gOCBsYWJlbGluZzogZnVuY3Rpb24vbWV0aG9kIG5hbWUgKCdDbGFzcy5tZXRob2QnIGZvciBtZXRob2RzKSwgZmlsZTpsaW5lIGZvciBhbm9ueW1vdXMgaG9sZGVycyAqL1xuXHRuYW1lOiBzdHJpbmc7XG5cdGtpbmQ6IFNjb3BlS2luZDtcblx0LyoqIE5lYXJlc3QgZW5jbG9zaW5nIHNjb3BlICh1bmRlZmluZWQgb24gbW9kdWxlIHNjb3BlcykgKi9cblx0cGFyZW50U2NvcGVJZD86IHN0cmluZztcblx0LyoqIEFic29sdXRlIGZpbGUgcGF0aCAqL1xuXHRmaWxlUGF0aDogc3RyaW5nO1xuXHQvKiogU2NvcGUgc3RhcnQ6IGZpbGUudHM6TGluZTpDb2wgKG1vZHVsZSBzY29wZTogZmlsZToxOjEpICovXG5cdGxvY2F0aW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogT25lIHRyYWNrZWQgdmFyaWFibGUgKHNjb3Blcy5qc29uKVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNjb3BlVmFyaWFibGUge1xuXHRuYW1lOiBzdHJpbmc7XG5cdC8qKiBPd25pbmcgc2NvcGUgKi9cblx0c2NvcGVJZDogc3RyaW5nO1xuXHQvKiogTW5lbW9uaWNhIHR5cGUgZnVsbFBhdGggd2hlbiBrbm93biAobmV3IFgoKSBvbiBhIGtub3duIHR5cGUsIG5ldyBpbnN0LlN1YigpIGNoYWluaW5nLCBvciBhIGtub3duIGFubm90YXRpb24pICovXG5cdHR5cGVQYXRoPzogc3RyaW5nO1xuXHQvKiogQ2hlYXAgdGV4dHVhbCB0eXBlOiBhbm5vdGF0aW9uIHRleHQgb3IgdGlueSBpbml0aWFsaXplciBjbGFzc2lmaWNhdGlvbiAqL1xuXHRpbmZlcnJlZFR5cGU/OiBzdHJpbmc7XG5cdC8qKiBEZWNsYXJhdGlvbiBzaXRlOiBmaWxlLnRzOkxpbmU6Q29sICovXG5cdGRlY2xhcmF0aW9uOiBzdHJpbmc7XG5cdGlzUGFyYW1ldGVyOiBib29sZWFuO1xuXHQvKiogY29uc3QgPSBmYWxzZTsgbGV0L3ZhciBhbmQgcGFyYW1ldGVycyA9IHRydWUgKHBhcmFtZXRlcnMgYXJlIHJlYXNzaWduYWJsZSkgKi9cblx0aXNNdXRhYmxlOiBib29sZWFuO1xuXHQvKipcblx0ICogUmVhc3NpZ25tZW50IHNpdGVzIChmaWxlLnRzOkxpbmU6Q29sKSBvZiB0aGlzIGJpbmRpbmcg4oCUIGZsb3ctdGVybWluYXRpb25cblx0ICogcG9pbnRzIChkZWNpc2lvbiA2KTogdGhlIFBoYXNlIDMgd2Fsa2VyIHN0b3BzIGZvbGxvd2luZyB0aGUgYmluZGluZyB0aGVyZVxuXHQgKi9cblx0cmVhc3NpZ25tZW50czogc3RyaW5nW107XG59XG5cbi8qKlxuICogVGhlIGZ1bGwgbG9jYWwtc2NvcGUgYW5hbHlzaXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTY29wZUFuYWx5c2lzIHtcblx0LyoqIEtleWVkIGJ5IHNjb3BlSWQgKi9cblx0c2NvcGVzOiBNYXA8c3RyaW5nLCBTY29wZUluZm8+O1xuXHQvKiogS2V5ZWQgYnkgYCR7c2NvcGVJZH0jJHtuYW1lfWAgKi9cblx0dmFyaWFibGVzOiBNYXA8c3RyaW5nLCBTY29wZVZhcmlhYmxlPjtcbn1cblxuLyoqXG4gKiBKU09OIG91dHB1dCBmb3Igc2NvcGVzLmpzb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTY29wZXNKc29uIHtcblx0dmVyc2lvbjogc3RyaW5nO1xuXHRnZW5lcmF0ZWRBdDogc3RyaW5nO1xuXHRzY29wZXM6IFJlY29yZDxzdHJpbmcsIFNjb3BlSW5mbz47XG5cdHZhcmlhYmxlczogU2NvcGVWYXJpYWJsZVtdO1xufVxuXG4vKipcbiAqIE9uZSBub2RlIG9mIHRoZSBjcmVhdGlvbiBncmFwaCAoaW5zdHJ1bWVudGF0aW9uIHdhbGtlciBwbGFuLCBQaGFzZSAzKTpcbiAqIGEgc2NvcGUgdGhhdCBjcmVhdGVzIG1uZW1vbmljYSBpbnN0YW5jZXMsIG9yIG9uZSBzaXR0aW5nIG9uIGEgY2FsbCBwYXRoXG4gKiB0byBhIGNyZWF0b3IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRpb25HcmFwaE5vZGUge1xuXHQvKiogTG9jYWxTY29wZVdhbGtlciBzY29wZUlkIChtb2R1bGUgc2NvcGUgPSBmaWxlIHBhdGg7IGZ1bmN0aW9uIHNjb3BlcyA9IGZpbGU6bGluZTpjb2wpICovXG5cdHNjb3BlSWQ6IHN0cmluZztcblx0LyoqIERlY2lzaW9uIDggbGFiZWw6IGZ1bmN0aW9uL21ldGhvZCBuYW1lICgnQ2xhc3MubWV0aG9kJyksIGZpbGU6bGluZSBmb3IgYW5vbnltb3VzIGhvbGRlcnMgKi9cblx0bmFtZTogc3RyaW5nO1xuXHRraW5kOiBTY29wZUtpbmQ7XG5cdC8qKiBBYnNvbHV0ZSBmaWxlIHBhdGggKi9cblx0ZmlsZVBhdGg6IHN0cmluZztcblx0LyoqIFNjb3BlIHN0YXJ0OiBmaWxlLnRzOkxpbmU6Q29sICovXG5cdGxvY2F0aW9uOiBzdHJpbmc7XG5cdC8qKiBUcnVlIHdoZW4gdGhlIHdhbGsgZm91bmQgbm8gY2FsbGVycyDigJQgYW4gYXBwbGljYXRpb24gZW50cnkgcG9pbnQgKi9cblx0c3RhcnRlcjogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBPbmUgZWRnZSBvZiB0aGUgY3JlYXRpb24gZ3JhcGg6IHRoZSBjYWxsZXIgc2NvcGUgaW52b2tlcyBvciByZWZlcmVuY2VzIHRoZVxuICogY2FsbGVlIHNjb3BlLiBEaXJlY3Rpb24gaXMgaW5zaWRlLW91dDogY2FsbGVyIOKGkiBjYWxsZWUsIHdoZXJlIHRoZSBjYWxsZWUgaXNcbiAqIGNsb3NlciB0byB0aGUgY3JlYXRpb24gc2l0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVhdGlvbkdyYXBoRWRnZSB7XG5cdC8qKiBDYWxsaW5nIHNjb3BlJ3Mgc2NvcGVJZCAqL1xuXHRjYWxsZXI6IHN0cmluZztcblx0LyoqIENhbGxlZCAoaG9sZGVyKSBzY29wZSdzIHNjb3BlSWQgKi9cblx0Y2FsbGVlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQW4gaW5zdGFudGlhdGlvbiBhbmNob3I6IG9uZSBtbmVtb25pY2EgY3JlYXRpb24gc2l0ZSBwaW5uZWQgdG8gaXRzIGhvbGRlclxuICogc2NvcGUuXG4gKlxuICogYHZhcmlhYmxlYC9gdGVybWluYXRlZEF0YCBhcmUgYSBkb2N1bWVudGVkIGhldXJpc3RpYzogdGhlIHZhcmlhYmxlIGRlY2xhcmVkXG4gKiBpbiB0aGUgaG9sZGVyIHNjb3BlIG9uIHRoZSBTQU1FIGxpbmUgYXMgdGhlIGNyZWF0aW9uLCB3aG9zZSB0eXBlUGF0aCAod2hlblxuICoga25vd24pIG1hdGNoZXMgdGhlIGNyZWF0ZWQgdHlwZS4gYHRlcm1pbmF0ZWRBdGAgaXMgdGhhdCB2YXJpYWJsZSdzIGZpcnN0XG4gKiByZWFzc2lnbm1lbnQgc2l0ZSDigJQgdGhlIGRlY2lzaW9uIDYgZmxvdy10ZXJtaW5hdGlvbiBwb2ludCB3aGVyZSB0aGUgd2Fsa2VyXG4gKiBzdG9wcyBmb2xsb3dpbmcgdGhlIGJpbmRpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRpb25BbmNob3Ige1xuXHQvKiogQ3JlYXRpb24gc2l0ZTogZmlsZS50czpMaW5lOkNvbCAodGhlIHVzYWdlcy5qc29uIGxvY2F0aW9uKSAqL1xuXHRsb2NhdGlvbjogc3RyaW5nO1xuXHQvKiogU2NvcGUgaG9sZGluZyB0aGUgY3JlYXRpb24gKHNjb3Blcy5qc29uIHNjb3BlSWQpICovXG5cdGhvbGRlclNjb3BlSWQ6IHN0cmluZztcblx0LyoqIE1uZW1vbmljYSB0eXBlIGZ1bGxQYXRoIGJlaW5nIGNyZWF0ZWQgKi9cblx0dHlwZVBhdGg6IHN0cmluZztcblx0LyoqIENvbnN0cnVjdG9yIGV4cHJlc3Npb24gdGV4dCAoJ1RoaW5nJywgJ3VzZXIuQWRtaW5FbnRpdHknLCBhIGxvb2t1cCBhbGlhcyBuYW1lKSAqL1xuXHRjb25zdHJ1Y3RvclRleHQ/OiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBUcnVlIHdoZW4gdGhlIGhvbGRlciBpcyB0aGUgbW9kdWxlIHNjb3BlIOKAlCBhIHJvb3RlZCBpbnN0YW5jZSAocGxhbjpcblx0ICogbGVnaXRpbWF0ZSByb290IG9yIGRldmVsb3BlciBlcnJvcjsgbGFiZWxlZCwgbm90IHBvbGljZWQpXG5cdCAqL1xuXHRyb290ZWQ/OiBib29sZWFuO1xuXHQvKiogVmFyaWFibGUgdGhlIGZyZXNoIGluc3RhbmNlIHdhcyBib3VuZCB0byAoc2FtZS1saW5lIGhldXJpc3RpYykgKi9cblx0dmFyaWFibGU/OiBzdHJpbmc7XG5cdC8qKiBGaXJzdCByZWFzc2lnbm1lbnQgc2l0ZSBvZiB0aGF0IHZhcmlhYmxlOiBmaWxlLnRzOkxpbmU6Q29sICovXG5cdHRlcm1pbmF0ZWRBdD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgY3JlYXRpb24gZ3JhcGg6IGV2ZXJ5dGhpbmcgdGhhdCBsZWFkcyB0byBtbmVtb25pY2EgaW5zdGFuY2VzIGJlaW5nXG4gKiBjcmVhdGVkLiBFbWl0dGVkIGFzIHRoZSBgY3JlYXRpb25HcmFwaGAga2V5IG9mIGluc3RydW1lbnRhdGlvbi5qc29uIHYyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0aW9uR3JhcGgge1xuXHRub2RlczogQ3JlYXRpb25HcmFwaE5vZGVbXTtcblx0ZWRnZXM6IENyZWF0aW9uR3JhcGhFZGdlW107XG5cdGFuY2hvcnM6IENyZWF0aW9uQW5jaG9yW107XG59XG5cbi8qKlxuICogSlNPTiBvdXRwdXQgZm9yIGhpZXJhcmNoeS5qc29uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSGllcmFyY2h5SnNvbiB7XG5cdHZlcnNpb246IHN0cmluZztcblx0Z2VuZXJhdGVkQXQ6IHN0cmluZztcblx0cm9vdHM6IEhpZXJhcmNoeU5vZGVbXTtcbn1cblxuLyoqXG4gKiBTdHJ1Y3R1cmVkIGhpZXJhcmNoeSBub2RlIGZvciBtYWNoaW5lIGNvbnN1bXB0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEhpZXJhcmNoeU5vZGUge1xuXHQvKiogVHlwZSBuYW1lIChlLmcuLCBcIkFkbWluVHlwZVwiKSAqL1xuXHRuYW1lOiBzdHJpbmc7XG5cdC8qKiBGdWxsIGRvdHRlZCBwYXRoIChlLmcuLCBcIlVzZXJUeXBlLkFkbWluVHlwZVwiKSAqL1xuXHRmdWxsUGF0aDogc3RyaW5nO1xuXHQvKiogTG9jYXRpb24gaW4gc291cmNlOiBmaWxlLnRzOkxpbmU6Q29sICovXG5cdGxvY2F0aW9uOiBzdHJpbmc7XG5cdC8qKiBDaGlsZCB0eXBlcyBpbiB0aGUgVHJpZSAqL1xuXHRjaGlsZHJlbjogSGllcmFyY2h5Tm9kZVtdO1xufVxuIl19
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIFR5cGUgZGVmaW5pdGlvbnMgZm9yIFRhY3RpY2FcbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIFRhY3RpY2FDb25maWcge1xuXHQvKiogT3V0cHV0IGRpcmVjdG9yeSBmb3IgZ2VuZXJhdGVkIHR5cGVzIChkZWZhdWx0OiAudGFjdGljYSkgKi9cblx0b3V0cHV0RGlyPzogc3RyaW5nO1xuXHQvKiogRmlsZXMgdG8gaW5jbHVkZSAoZ2xvYiBwYXR0ZXJucykgKi9cblx0aW5jbHVkZT86IHN0cmluZ1tdO1xuXHQvKiogRmlsZXMgdG8gZXhjbHVkZSAoZ2xvYiBwYXR0ZXJucykgKi9cblx0ZXhjbHVkZT86IHN0cmluZ1tdO1xuXHQvKiogRW5hYmxlIHZlcmJvc2UgbG9nZ2luZyAqL1xuXHR2ZXJib3NlPzogYm9vbGVhbjtcblx0LyoqIEdlbmVyYXRlIGdsb2JhbCBhdWdtZW50YXRpb24gaW5zdGVhZCBvZiBtb2R1bGUgYXVnbWVudGF0aW9uIChkZWZhdWx0OiB0cnVlKSAqL1xuXHRnbG9iYWxBdWdtZW50YXRpb24/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BlcnR5SW5mbyB7XG5cdG5hbWU6IHN0cmluZztcblx0dHlwZTogc3RyaW5nO1xuXHRvcHRpb25hbDogYm9vbGVhbjtcblx0LyoqIFRydWUgaWYgdGhpcyBpcyBhIGdldHRlciBwcm9wZXJ0eSAocmVhZG9ubHkpICovXG5cdHJlYWRvbmx5PzogYm9vbGVhbjtcbn1cblxuLyoqIENvbnN0cnVjdG9yIHBhcmFtZXRlciBpbmZvIGZvciBUeXBlUmVnaXN0cnkgc2lnbmF0dXJlcyAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25zdHJ1Y3RvclBhcmFtSW5mbyB7XG5cdC8qKiBQYXJhbWV0ZXIgbmFtZSAoZS5nLiwgXCJ1c2FnZXNcIiwgXCJkYXRhXCIsIFwiY29uZmlnXCIpICovXG5cdG5hbWU6IHN0cmluZztcblx0LyoqIFRoZSB0eXBlIHN0cmluZyAtIGNhbiBiZSBhIHNpbXBsZSB0eXBlIG9yIGV4cGFuZGVkIG9iamVjdCBsaXRlcmFsICovXG5cdHR5cGU6IHN0cmluZztcblx0b3B0aW9uYWw6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZU5vZGUge1xuXHQvKiogVHlwZSBuYW1lIChlLmcuLCBcIlNlY29uZFR5cGVcIikgKi9cblx0bmFtZTogc3RyaW5nO1xuXHQvKiogRnVsbCBwYXRoIChlLmcuLCBcIkZpcnN0VHlwZS5TZWNvbmRUeXBlXCIpICovXG5cdGZ1bGxQYXRoOiBzdHJpbmc7XG5cdC8qKiBQcm9wZXJ0aWVzIGRlZmluZWQgaW4gdGhpcyB0eXBlJ3MgY29uc3RydWN0b3IgKi9cblx0cHJvcGVydGllczogTWFwPHN0cmluZywgUHJvcGVydHlJbmZvPjtcblx0LyoqIENvbnN0cnVjdG9yIHBhcmFtZXRlcnMgKGZvciBUeXBlUmVnaXN0cnkgY29uc3RydWN0b3Igc2lnbmF0dXJlKSAqL1xuXHRjb25zdHJ1Y3RvclBhcmFtcz86IENvbnN0cnVjdG9yUGFyYW1JbmZvW107XG5cdC8qKiBQYXJlbnQgdHlwZSBub2RlICovXG5cdHBhcmVudD86IFR5cGVOb2RlO1xuXHQvKiogQ2hpbGQgdHlwZXMgKi9cblx0Y2hpbGRyZW46IE1hcDxzdHJpbmcsIFR5cGVOb2RlPjtcblx0LyoqIFNvdXJjZSBmaWxlIHBhdGggKi9cblx0c291cmNlRmlsZTogc3RyaW5nO1xuXHQvKiogTGluZSBudW1iZXIgaW4gc291cmNlICovXG5cdGxpbmU6IG51bWJlcjtcblx0LyoqIENvbHVtbiBudW1iZXIgaW4gc291cmNlICovXG5cdGNvbHVtbjogbnVtYmVyO1xuXHQvKiogQ29uc3RydWN0b3IgZnVuY3Rpb24gbmFtZSBvciBjbGFzcyBuYW1lICovXG5cdGNvbnN0cnVjdG9yTmFtZT86IHN0cmluZztcblx0LyoqIENvbGxlY3Rpb24gaWRlbnRpZmllciBpZiB0aGUgdHlwZSBiZWxvbmdzIHRvIGEgY3VzdG9tIGNvbGxlY3Rpb24gKHVuZGVmaW5lZCA9IGRlZmF1bHQvZ2xvYmFsIHJlZ2lzdHJ5KSAqL1xuXHRjb2xsZWN0aW9uSWQ/OiBzdHJpbmc7XG5cdC8qKiBSZWdpc3RyeSBpbnRlcmZhY2UgbmFtZSBmb3IgY3VzdG9tIGNvbGxlY3Rpb25zIHVzaW5nIE9wdGlvbiBCICh1c2VyLXByb3ZpZGVkIHJlZ2lzdHJ5IGludGVyZmFjZSkgKi9cblx0cmVnaXN0cnlJbnRlcmZhY2VOYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVHcmFwaCB7XG5cdC8qKiBSb290IHR5cGVzLCBrZXllZCBieSBmdWxsIHBhdGggKGN1c3RvbS1jb2xsZWN0aW9uIHJvb3RzIGNhcnJ5IHRoZSBgY29sbGVjdGlvbklkOjpgIHByZWZpeCkgKi9cblx0cm9vdHM6IE1hcDxzdHJpbmcsIFR5cGVOb2RlPjtcblx0LyoqIEFsbCB0eXBlcyBieSBmdWxsIHBhdGggKi9cblx0YWxsVHlwZXM6IE1hcDxzdHJpbmcsIFR5cGVOb2RlPjtcblx0LyoqIEFkZCBhIHJvb3QgdHlwZSAqL1xuXHRhZGRSb290KG5vZGU6IFR5cGVOb2RlKTogdm9pZDtcblx0LyoqIEZpbmQgYSB0eXBlIGJ5IGZ1bGwgcGF0aCAqL1xuXHRmaW5kVHlwZShmdWxsUGF0aDogc3RyaW5nKTogVHlwZU5vZGUgfCB1bmRlZmluZWQ7XG5cdC8qKiBHZXQgYWxsIHR5cGVzIGFzIGFycmF5ICovXG5cdGdldEFsbFR5cGVzKCk6IFR5cGVOb2RlW107XG5cdC8qKiBDbGVhciB0aGUgZ3JhcGggKi9cblx0Y2xlYXIoKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBbmFseXplUmVzdWx0IHtcblx0LyoqIFR5cGVzIGZvdW5kIGluIHRoZSBhbmFseXNpcyAqL1xuXHR0eXBlczogVHlwZU5vZGVbXTtcblx0LyoqIEVycm9ycyBlbmNvdW50ZXJlZCAqL1xuXHRlcnJvcnM6IEFuYWx5emVFcnJvcltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFuYWx5emVFcnJvciB7XG5cdG1lc3NhZ2U6IHN0cmluZztcblx0ZmlsZTogc3RyaW5nO1xuXHRsaW5lOiBudW1iZXI7XG5cdGNvbHVtbjogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYXRlZFR5cGVzIHtcblx0LyoqIENvbnRlbnQgb2YgdGhlIC5kLnRzIGZpbGUgKi9cblx0Y29udGVudDogc3RyaW5nO1xuXHQvKiogVHlwZXMgdGhhdCB3ZXJlIGdlbmVyYXRlZCAqL1xuXHR0eXBlczogc3RyaW5nW107XG59XG5cbi8qKlxuICogRGVmaW5pdGlvbiBpbmZvIGZvciBjb2RlIG5hdmlnYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWZpbml0aW9uSW5mbyB7XG5cdC8qKiBUeXBlIG5hbWUgKGUuZy4sIFwiQWRtaW5UeXBlXCIpICovXG5cdG5hbWU6IHN0cmluZztcblx0LyoqIExvY2F0aW9uIGluIHNvdXJjZTogZmlsZS50czpMaW5lOkNvbCAqL1xuXHRsb2NhdGlvbjogc3RyaW5nO1xuXHQvKiogSG93IHR5cGUgd2FzIGNyZWF0ZWQ6ICdkZWZpbmUnIG9yICdkZWNvcmF0ZScgKi9cblx0a2luZDogJ2RlZmluZScgfCAnZGVjb3JhdGUnO1xuXHQvKiogUGFyZW50IHR5cGUgZnVsbCBwYXRoLCBudWxsIGlmIHJvb3QgKi9cblx0cGFyZW50OiBzdHJpbmcgfCBudWxsO1xuXHQvKiogc3RyaWN0Q2hhaW4gY29uZmlnIG9wdGlvbiAqL1xuXHRzdHJpY3RDaGFpbjogYm9vbGVhbjtcblx0LyoqIGJsb2NrRXJyb3JzIGNvbmZpZyBvcHRpb24gKi9cblx0YmxvY2tFcnJvcnM6IGJvb2xlYW47XG59XG5cbi8qKlxuICogVXNhZ2UgaW5mbyBmb3IgY29kZSBuYXZpZ2F0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXNhZ2VJbmZvIHtcblx0LyoqIExvY2F0aW9uIGluIHNvdXJjZTogZmlsZS50czpMaW5lOkNvbCAqL1xuXHRsb2NhdGlvbjogc3RyaW5nO1xuXHQvKiogS2luZCBvZiB1c2FnZTogaW5zdGFudGlhdGlvbiwgdHlwZUFubm90YXRpb24sIHByb3BlcnR5QWNjZXNzLCBsb29rdXAsIHJlZmVyZW5jZSAqL1xuXHRraW5kOiAnaW5zdGFudGlhdGlvbicgfCAndHlwZUFubm90YXRpb24nIHwgJ3Byb3BlcnR5QWNjZXNzJyB8ICdsb29rdXAnIHwgJ3JlZmVyZW5jZSc7XG5cdC8qKiBDb2RlIHNuaXBwZXQgKi9cblx0Y29kZTogc3RyaW5nO1xuXHQvKipcblx0ICogU2NvcGUgaG9sZGluZyB0aGlzIHVzYWdlIChMb2NhbFNjb3BlV2Fsa2VyIHNjb3BlSWQ6IG1vZHVsZSBzY29wZSBpcyB0aGVcblx0ICogZmlsZSBwYXRoLCBmdW5jdGlvbiBzY29wZXMgYXJlIGZpbGU6bGluZTpjb2wpLiBBZGRpdGl2ZTsgYWJzZW50IHdoZW4gdGhlXG5cdCAqIHVzYWdlIHNpdHMgb3V0c2lkZSB0cmFja2VkIGZpbGVzLlxuXHQgKi9cblx0aG9sZGVyU2NvcGVJZD86IHN0cmluZztcblx0LyoqXG5cdCAqIENvbnN0cnVjdG9yIGV4cHJlc3Npb24gdGV4dCBhdCBhbiBpbnN0YW50aWF0aW9uIHNpdGUgKCdUaGluZycsXG5cdCAqICd1c2VyLkFkbWluRW50aXR5JywgJ1QyJyBmb3IgYSBsb29rdXAgYWxpYXMpLiBBZGRpdGl2ZTsgc2V0IG9ubHkgb25cblx0ICoga2luZCAnaW5zdGFudGlhdGlvbicuIEZlZWRzIENyZWF0aW9uQW5jaG9yLmNvbnN0cnVjdG9yVGV4dCAoUGhhc2UgMykuXG5cdCAqL1xuXHRjb25zdHJ1Y3RvclRleHQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogSlNPTiBvdXRwdXQgZm9yIGRlZmluaXRpb25zLmpzb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWZpbml0aW9uc0pzb24ge1xuXHR2ZXJzaW9uOiBzdHJpbmc7XG5cdGdlbmVyYXRlZEF0OiBzdHJpbmc7XG5cdGRlZmluaXRpb25zOiBSZWNvcmQ8c3RyaW5nLCBEZWZpbml0aW9uSW5mbz47XG59XG5cbi8qKlxuICogSlNPTiBvdXRwdXQgZm9yIHVzYWdlcy5qc29uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXNhZ2VzSnNvbiB7XG5cdHZlcnNpb246IHN0cmluZztcblx0Z2VuZXJhdGVkQXQ6IHN0cmluZztcblx0dXNhZ2VzOiBSZWNvcmQ8c3RyaW5nLCBVc2FnZUluZm9bXT47XG59XG5cbi8qKlxuICogRURTIChFeGVjdXRpb24gRGF0YSBTdG9yYWdlKSBraW5kIGZvciB0cmFja2luZyBleGVjdXRpb24gZmxvdyBwYXR0ZXJuc1xuICovXG5leHBvcnQgdHlwZSBFRFNLaW5kID1cblx0fCAnd3JhcCdcblx0fCAnY29udGV4dENvbnN1bWUnXG5cdHwgJ2hvb2tBdHRhY2gnO1xuXG4vKipcbiAqIEVEUyBpbmZvIGZvciBleGVjdXRpb24gZGF0YSBmbG93IHRyYWNraW5nXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRURTSW5mbyB7XG5cdC8qKiBMb2NhdGlvbiBpbiBzb3VyY2U6IGZpbGUudHM6TGluZTpDb2wgKi9cblx0bG9jYXRpb246IHN0cmluZztcblx0LyoqIEtpbmQgb2YgRURTIHVzYWdlICovXG5cdGtpbmQ6IEVEU0tpbmQ7XG5cdC8qKiBDb2RlIHNuaXBwZXQgKi9cblx0Y29kZTogc3RyaW5nO1xuXHQvKiogUmVzb2x2ZWQgdGFyZ2V0IHR5cGUgaWYgZGV0ZWN0YWJsZSAqL1xuXHR0YXJnZXRUeXBlPzogc3RyaW5nO1xuXHQvKipcblx0ICogRW5jbG9zaW5nIG1uZW1vbmljYSB0eXBlIHBhdGggKGRlZmluZS9sYXp5IGhhbmRsZXIgb3IgZGVjb3JhdGVkIGNsYXNzKTtcblx0ICogZm9yIHdyYXAgc2l0ZXMgb3V0c2lkZSBhbnkgaGFuZGxlciwgYXR0cmlidXRlZCB0aHJvdWdoIHRoZSBpbnN0YW5jZS9jb250ZXh0XG5cdCAqIGFyZ3VtZW50ICh0cmFja2VkIGFzc2lnbm1lbnQgb3IgcGFyYW1ldGVyIGFubm90YXRpb24pLCB0aGVuIGluaGVyaXRlZCBkb3duXG5cdCAqIHRoZSB3cmFwIGdlbmVyYXRpb24gY2hhaW4gKGB2aWFgKVxuXHQgKi9cblx0c2NvcGU/OiBzdHJpbmc7XG5cdC8qKiBMb2NhdGlvbiBvZiB0aGUgZW5jbG9zaW5nIHdyYXAgc2l0ZSB3aG9zZSBydW50aW1lIHdyYXBwaW5nIGNhdXNlZCB0aGlzIGVudHJ5ICovXG5cdHZpYT86IHN0cmluZztcblx0LyoqIE1uZW1vbmljYSB0eXBlIGZ1bGxQYXRocyBpbnN0YW50aWF0ZWQgaW5zaWRlIHRoZSB3cmFwcGVkIGJvZHkg4oCUIGd1YXJhbnRlZWQgcGF0aCBoaXRzICovXG5cdGNyZWF0ZXNUeXBlcz86IHN0cmluZ1tdO1xuXHQvKiogTGFiZWwgc3RyaW5nIGxpdGVyYWwgcGFzc2VkIHRvIHdyYXAoZm4sIOKApiwgJ2xhYmVsJykgd2hlbiBzdGF0aWNhbGx5IHZpc2libGUgKi9cblx0bGFiZWw/OiBzdHJpbmc7XG5cdC8qKiBzY29wZUlkIChzY29wZXMuanNvbikgb2YgdGhlIHdyYXBwZWQgY2FsbGJhY2sncyBvd24gc2NvcGUg4oCUIGpvaW5zIHRvIHRoZSBjcmVhdGlvbiBncmFwaCAqL1xuXHRjYWxsYmFja1Njb3BlSWQ/OiBzdHJpbmc7XG5cdC8qKiBJZGVudGlmaWVyIHBhc3NlZCBhcyB0aGUgaW5zdGFuY2UvY29udGV4dCBhcmd1bWVudCAoJ3VzZXInKSwgd2hlbiBpdCBpcyBvbmUgKi9cblx0aW5zdGFuY2VBcmc/OiBzdHJpbmc7XG5cdC8qKiBzY29wZUlkIG9mIHRoZSBzY29wZSBob2xkaW5nIHRoZSB3cmFwIGNhbGwgc2l0ZSDigJQgam9pbnMgdG8gdGhlIGNyZWF0aW9uIGdyYXBoICovXG5cdHNjb3BlSWQ/OiBzdHJpbmc7XG5cdC8qKiBNbmVtb25pY2EgZnVsbFBhdGggb2YgdGhlIGluc3RhbmNlIGFyZ3VtZW50LCByZXNvbHZlZCB0aHJvdWdoIHNjb3BlIHZhcmlhYmxlcyAqL1xuXHR3cmFwc1R5cGVQYXRoPzogc3RyaW5nO1xuXHQvKiogV3JhcC1mYW1pbHkgZnVuY3Rpb24gbmFtZSAoJ3dyYXAnIHwgJ3dyYXBDb25zdHJ1Y3RvckFyZycgfCDigKYpIOKAlCBqb2lucyB0aGVcblx0ICogIGNhbGwgc2l0ZSB0byBkaXZlJ3MgZW5naW5lIGtub3QgaW4gZ3JhcGggY29uc3VtZXJzICovXG5cdGZuPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEpTT04gb3V0cHV0IGZvciBlZHMuanNvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVEU0pzb24ge1xuXHR2ZXJzaW9uOiBzdHJpbmc7XG5cdGdlbmVyYXRlZEF0OiBzdHJpbmc7XG5cdGVkczogUmVjb3JkPHN0cmluZywgRURTSW5mb1tdPjtcbn1cblxuLyoqXG4gKiBJbnN0cnVtZW50YXRpb24ga2luZCBmb3IgZnJhbWV3b3JrIGxpZmVjeWNsZSBjcm9zc3JvYWRzXG4gKi9cbmV4cG9ydCB0eXBlIEluc3RydW1lbnRhdGlvbktpbmQgPVxuXHR8ICdpbnRlcmNlcHRvcidcblx0fCAnZ3VhcmQnXG5cdHwgJ3BpcGUnXG5cdHwgJ2ZpbHRlcidcblx0fCAnbWlkZGxld2FyZSc7XG5cbi8qKlxuICogSW5zdHJ1bWVudGF0aW9uIHNjb3BlOiB3aGVyZSB0aGUgcG9pbnQgYXR0YWNoZXMuXG4gKiAnZ2xvYmFsJyBmb3IgcHJvdmlkZXItdG9rZW4gcmVnaXN0cmF0aW9ucywgJ21vZHVsZScgZm9yIG1pZGRsZXdhcmUgd2lyZWRcbiAqIHZpYSBjb25zdW1lci5hcHBseSgpIEFORCBmb3IgYmFyZSBoZXJpdGFnZSBkZWNsYXJhdGlvbnMgd2hvc2UgYXR0YWNobWVudFxuICogaXMgc3RhdGljYWxseSB1bmtub3duLCBgY29udHJvbGxlcjpOYW1lYCAvIGBtZXRob2Q6Q2xhc3MubWV0aG9kYCBmb3JcbiAqIGRlY29yYXRvci1zY29wZWQgYXR0YWNobWVudHMuXG4gKi9cbmV4cG9ydCB0eXBlIEluc3RydW1lbnRhdGlvblNjb3BlID1cblx0fCAnZ2xvYmFsJ1xuXHR8ICdtb2R1bGUnXG5cdHwgYGNvbnRyb2xsZXI6JHtzdHJpbmd9YFxuXHR8IGBtZXRob2Q6JHtzdHJpbmd9YDtcblxuLyoqXG4gKiBJbnN0cnVtZW50YXRpb24gcG9pbnQ6IGEgZnJhbWV3b3JrIGxpZmVjeWNsZSBjcm9zc3JvYWQgKGludGVyY2VwdG9yLFxuICogZ3VhcmQsIHBpcGUsIGZpbHRlciwgbWlkZGxld2FyZSkgZGV0ZWN0ZWQgc3ludGFjdGljYWxseS4gVGhlIHZvY2FidWxhcnlcbiAqIHRoYXQgdHVybnMgYSBzeW50YWN0aWMgc2hhcGUgaW50byBhIHBvaW50IGNvbWVzIGZyb20gcGx1Z2lucyDigJQgd2l0aCBub1xuICogcGx1Z2luIGxvYWRlZCwgbm8gcG9pbnRzIGFyZSBjb2xsZWN0ZWQuXG4gKlxuICogRGVkdXBlL3Njb3BlIGRlY2lzaW9uOiBwb2ludHMgYXJlIGtleWVkIGJ5IChraW5kLCBjbGFzc05hbWUsIGxvY2F0aW9uLFxuICogc2NvcGUpIGFuZCBkdXBsaWNhdGVzIG1lcmdlIHRoZWlyIGB0YXJnZXRzYC4gQSBjbGFzcyBkZXRlY3RlZCBib3RoIGJ5XG4gKiBoZXJpdGFnZSAoYSBwbHVnaW4tbGlzdGVkIGBpbXBsZW1lbnRzYCBpbnRlcmZhY2UpIGFuZCBieSBhIGRlY29yYXRvclxuICogc2l0ZSB5aWVsZHMgU0VQQVJBVEUgZW50cmllcyDigJQgdGhlIGNsYXNzLWRlY2xhcmF0aW9uIHBvaW50IGtlZXBzIHNjb3BlXG4gKiAnbW9kdWxlJyAoYXR0YWNobWVudCB1bmtub3duKSB3aGlsZSBlYWNoIHJlZ2lzdHJhdGlvbiBzaXRlIGNhcnJpZXMgaXRzXG4gKiBvd24gc2NvcGUuIE9uZSBwb2ludCBzZXJ2aW5nIG11bHRpcGxlIHNjb3BlcyB2aWEgbWVyZ2VkIHNjb3BlIGxpc3RzIHdhc1xuICogcmVqZWN0ZWQ6IGNvbnN1bWVycyAobW5lbW9ncmFwaGljYSBkaWFtb25kcykga2V5IG9mZiBhIHNpbmdsZSBzY29wZSBwZXJcbiAqIHBvaW50LCBhbmQgc2VwYXJhdGUgZW50cmllcyBrZWVwIHRoYXQgY29udHJhY3Qgc2ltcGxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluc3RydW1lbnRhdGlvblBvaW50IHtcblx0LyoqIEtpbmQgb2YgbGlmZWN5Y2xlIGNyb3Nzcm9hZCAqL1xuXHRraW5kOiBJbnN0cnVtZW50YXRpb25LaW5kO1xuXHQvKiogQ2xhc3MgcHJvdmlkaW5nIHRoZSBpbnN0cnVtZW50YXRpb24gKGUuZy4sIFwiQXV0aEd1YXJkXCIpICovXG5cdGNsYXNzTmFtZTogc3RyaW5nO1xuXHQvKiogTG9jYXRpb24gaW4gc291cmNlOiBmaWxlLnRzOkxpbmU6Q29sIChjbGFzcyBkZWNsYXJhdGlvbiB3aGVuIGRlY2xhcmVkIGluLXByb2plY3QsIGVsc2UgdGhlIHJlZ2lzdHJhdGlvbiBzaXRlKSAqL1xuXHRsb2NhdGlvbjogc3RyaW5nO1xuXHQvKiogQ29kZSBzbmlwcGV0OiBzaWduYXR1cmUgLyBmaXJzdCBsaW5lLCBsaWtlIEVEUyBgY29kZWAgKi9cblx0Y29kZTogc3RyaW5nO1xuXHQvKiogV2hlcmUgdGhlIHBvaW50IGF0dGFjaGVzICovXG5cdHNjb3BlOiBJbnN0cnVtZW50YXRpb25TY29wZTtcblx0LyoqIENvbnRyb2xsZXIvcHJvdmlkZXIgbmFtZXMgdGhlIHBvaW50IGF0dGFjaGVzIHRvOyBlbXB0eSBmb3IgZ2xvYmFsIHBvaW50cyAqL1xuXHR0YXJnZXRzOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBKU09OIG91dHB1dCBmb3IgaW5zdHJ1bWVudGF0aW9uLmpzb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnN0cnVtZW50YXRpb25Kc29uIHtcblx0LyoqIFNjaGVtYSB2ZXJzaW9uOiAyIGFkZHMgdGhlIG9wdGlvbmFsIGNyZWF0aW9uR3JhcGgga2V5IChQaGFzZSAzKSAqL1xuXHR2ZXJzaW9uOiBudW1iZXI7XG5cdGdlbmVyYXRlZEF0OiBzdHJpbmc7XG5cdHBvaW50czogSW5zdHJ1bWVudGF0aW9uUG9pbnRbXTtcblx0LyoqXG5cdCAqIEluc2lkZS1vdXQgY3JlYXRpb24gd2FsayAoaW5zdHJ1bWVudGF0aW9uIHdhbGtlciBwbGFuLCBQaGFzZSAzKTogd2hpY2hcblx0ICogc2NvcGVzIGNyZWF0ZSBtbmVtb25pY2EgaW5zdGFuY2VzIGFuZCB3aG8gY2FsbHMgdGhlbSwgd2Fsa2VkIG91dHdhcmQgdG9cblx0ICogdGhlIHN0YXJ0ZXJzLiBBYnNlbnQgd2hlbiB0aGUgd3JpdGVyIGlzIGNhbGxlZCB3aXRob3V0IGNyZWF0aW9uLWdyYXBoXG5cdCAqIGRhdGEgKGRpcmVjdCBsaWJyYXJ5IHVzZSk7IGFsd2F5cyBwcmVzZW50IGZyb20gdGhlIENMSS5cblx0ICovXG5cdGNyZWF0aW9uR3JhcGg/OiBDcmVhdGlvbkdyYXBoO1xufVxuXG4vKipcbiAqIEZsb3cga2luZCBmb3IgdHJhY2tpbmcgbmF0aXZlIGluc3RhbmNlIHVzYWdlIHBhdHRlcm5zXG4gKi9cbmV4cG9ydCB0eXBlIEZsb3dLaW5kID1cblx0fCAncHJvcGVydHlSZWFkJ1xuXHR8ICdwcm9wZXJ0eVdyaXRlJ1xuXHR8ICdtZXRob2RDYWxsJ1xuXHR8ICdkZXN0cnVjdHVyZVJlYWQnXG5cdHwgJ3Bhc3NBc0FyZydcblx0fCAncmV0dXJuJ1xuXHR8ICdzcHJlYWQnXG5cdHwgJ2FycmF5RWxlbWVudCdcblx0fCAnY29uZGl0aW9uYWxBY2Nlc3MnXG5cdHwgJ2VsZW1lbnRBY2Nlc3MnXG5cdHwgJ3JlYXNzaWdubWVudCdcblx0fCAnaW5zdGFudGlhdGlvbic7XG5cbi8qKlxuICogRmxvdyBpbmZvIGZvciBuYXRpdmUgaW5zdGFuY2UgdXNhZ2UgdHJhY2tpbmdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93SW5mbyB7XG5cdC8qKiBMb2NhdGlvbiBpbiBzb3VyY2U6IGZpbGUudHM6TGluZTpDb2wgKi9cblx0bG9jYXRpb246IHN0cmluZztcblx0LyoqIEtpbmQgb2YgZmxvdyAqL1xuXHRraW5kOiBGbG93S2luZDtcblx0LyoqIENvZGUgc25pcHBldCAqL1xuXHRjb2RlOiBzdHJpbmc7XG5cdC8qKiBQcm9wZXJ0eSBuYW1lIGlmIGFwcGxpY2FibGUgKi9cblx0cHJvcGVydHlOYW1lPzogc3RyaW5nO1xuXHQvKiogUmVzb2x2ZWQgdGFyZ2V0IHR5cGUgaWYga25vd24gKi9cblx0dGFyZ2V0VHlwZT86IHN0cmluZztcblx0LyoqIENvbnRleHQgKGZ1bmN0aW9uIG5hbWUsIHBhcmFtIHBvc2l0aW9uLCBldGMuKSAqL1xuXHRjb250ZXh0Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEpTT04gb3V0cHV0IGZvciBmbG93Lmpzb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93SnNvbiB7XG5cdHZlcnNpb246IHN0cmluZztcblx0Z2VuZXJhdGVkQXQ6IHN0cmluZztcblx0ZmxvdzogUmVjb3JkPHN0cmluZywgRmxvd0luZm9bXT47XG59XG5cbi8qKlxuICogV2hhdCBhIG1vZHVsZS1sZXZlbCBiaW5kaW5nIGlzLiBWYXJpYWJsZXMgYXJlIGNsYXNzaWZpZWQgYXMgJ2NvbnN0J1xuICogcmVnYXJkbGVzcyBvZiBsZXQvdmFyIOKAlCBtdXRhYmlsaXR5IChyZWFzc2lnbm1lbnQgdHJhY2tpbmcpIGlzIHRoZVxuICogbG9jYWwtc2NvcGUgd2Fsa2VyJ3MgY29uY2VybiAoUGhhc2UgMiksIG5vdCB0aGUgbW9kdWxlIGdyYXBoJ3MuXG4gKi9cbmV4cG9ydCB0eXBlIE1vZHVsZUJpbmRpbmdLaW5kID1cblx0fCAnZnVuY3Rpb24nXG5cdHwgJ2NsYXNzJ1xuXHR8ICdjb25zdCdcblx0fCAndHlwZSdcblx0fCAndW5rbm93bic7XG5cbi8qKlxuICogSG93IGEgYmluZGluZyBlbnRlcnMgYSBtb2R1bGVcbiAqL1xuZXhwb3J0IHR5cGUgTW9kdWxlSW1wb3J0S2luZCA9XG5cdHwgJ25hbWVkJ1xuXHR8ICdkZWZhdWx0J1xuXHR8ICduYW1lc3BhY2UnXG5cdHwgJ3JlcXVpcmUnO1xuXG4vKipcbiAqIEEgZ2VuZXJpYyBtb2R1bGUtbGV2ZWwgYmluZGluZyAoZXhwb3J0LCBpbXBvcnQsIG9yIHJlLWV4cG9ydCkuXG4gKlxuICogYG5hbWVgIGlzIGFsd2F5cyB0aGUgbmFtZSB0aGlzIG1vZHVsZSBwcmVzZW50czogdGhlIGxvY2FsIGlkZW50aWZpZXIgZm9yXG4gKiBpbXBvcnRzLCB0aGUgZXhwb3J0ZWQgbmFtZSBmb3IgZXhwb3J0cy4gYGltcG9ydEFsaWFzYCBjYXJyaWVzIHRoZSBvcmlnaW5hbFxuICogbmFtZSBpbiB0aGUgc291cmNlIG1vZHVsZSB3aGVuIGl0IGRpZmZlcnMgKGBpbXBvcnQgeyBYIGFzIFkgfWAg4oaSIG5hbWUgJ1knLFxuICogaW1wb3J0QWxpYXMgJ1gnOyBgZXhwb3J0IHsgWCBhcyBZIH0gZnJvbSDigKZgIOKGkiBuYW1lICdZJywgaW1wb3J0QWxpYXMgJ1gnKS5cbiAqIEZvciBkZWZhdWx0IGltcG9ydHMgbmFtZSBpcyB0aGUgbG9jYWwgaWRlbnRpZmllciBhbmQgdGhlIHNvdXJjZSBsb29rdXAga2V5XG4gKiBpcyAnZGVmYXVsdCcgKGltcGxpZWQgYnkgaW1wb3J0S2luZCk7IGZvciBuYW1lc3BhY2UgaW1wb3J0cy9leHBvcnRzIG5hbWUgaXNcbiAqIHRoZSBuYW1lc3BhY2UgYWxpYXMgKCcqJyBmb3IgYmFyZSBgZXhwb3J0ICogZnJvbSDigKZgKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb2R1bGVCaW5kaW5nIHtcblx0LyoqIE5hbWUgYXMgcHJlc2VudGVkIGluIHRoaXMgbW9kdWxlIChsb2NhbCBuYW1lIGZvciBpbXBvcnRzLCBleHBvcnRlZCBuYW1lIGZvciBleHBvcnRzKSAqL1xuXHRuYW1lOiBzdHJpbmc7XG5cdC8qKiBXaGF0IHRoZSBiaW5kaW5nIGlzOyBiYWNrZmlsbGVkIGZyb20gdGhlIG9yaWdpbiBtb2R1bGUgd2hlbiByZXNvbHZhYmxlICovXG5cdGtpbmQ6IE1vZHVsZUJpbmRpbmdLaW5kO1xuXHQvKipcblx0ICogUmVzb2x2ZWQgYWJzb2x1dGUgZmlsZSBwYXRoIG9mIHRoZSBzb3VyY2UgbW9kdWxlICh0aGUgbW9kdWxlIGl0c2VsZiBmb3Jcblx0ICogbG9jYWwgZGVjbGFyYXRpb25zOyB0aGUgcmF3IHNwZWNpZmllciB3aGVuIHJlc29sdXRpb24gZmFpbHMpXG5cdCAqL1xuXHRzb3VyY2VNb2R1bGU6IHN0cmluZztcblx0LyoqIEhvdyB0aGUgYmluZGluZyBlbnRlcnMgdGhlIG1vZHVsZSAoYWJzZW50IG9uIHBsYWluIGxvY2FsIGV4cG9ydHMpICovXG5cdGltcG9ydEtpbmQ/OiBNb2R1bGVJbXBvcnRLaW5kO1xuXHQvKiogT3JpZ2luYWwgbmFtZSBpbiB0aGUgc291cmNlIG1vZHVsZSB3aGVuIGFsaWFzZWQgKi9cblx0aW1wb3J0QWxpYXM/OiBzdHJpbmc7XG5cdC8qKiBUcnVlIGZvciBgZXhwb3J0IHsgWCB9IGZyb20gJy4veSdgIC8gYGV4cG9ydCAqIGZyb20gJy4veSdgIChiYXJyZWxzKSAqL1xuXHRpc1JlRXhwb3J0OiBib29sZWFuO1xuXHQvKipcblx0ICogVHJ1ZSB3aGVuIHRoZSBzcGVjaWZpZXIgcmVzb2x2ZWQgaW50byBub2RlX21vZHVsZXNcblx0ICogKHRzLnJlc29sdmVNb2R1bGVOYW1lJ3MgaXNFeHRlcm5hbExpYnJhcnlJbXBvcnQpLiBFeHRlcm5hbCBiaW5kaW5ncyBhcmVcblx0ICogcmVjb3JkZWQgZm9yIHJlZmVyZW5jZSBidXQgbmV2ZXIgZW50ZXIgYGRlcGVuZGVuY2llc2AgYW5kIGFyZSBuZXZlciB3YWxrZWQuXG5cdCAqIE5vZGUuanMgYnVpbHRpbnMgYXJlIG5vdCByZWNvcmRlZCBhcyBiaW5kaW5ncyBhdCBhbGwg4oCUIHNlZVxuXHQgKiBNb2R1bGVJbmZvLmJ1aWx0aW5TcGVjaWZpZXJzLlxuXHQgKi9cblx0ZXh0ZXJuYWw/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBlci1tb2R1bGUgcmVjb3JkIG9mIHRoZSBjcm9zcy1maWxlIGdyYXBoIChtb2R1bGVzLmpzb24pXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9kdWxlSW5mbyB7XG5cdC8qKiBBYnNvbHV0ZSBmaWxlIHBhdGggKG1hcCBrZXkpICovXG5cdGZpbGVQYXRoOiBzdHJpbmc7XG5cdC8qKiBNbmVtb25pY2EgdHlwZSBmdWxsUGF0aHMgZGVmaW5lZCBpbiB0aGlzIG1vZHVsZSAqL1xuXHRkZWZpbmVkVHlwZXM6IHN0cmluZ1tdO1xuXHQvKiogRXZlcnl0aGluZyB0aGlzIG1vZHVsZSBleHBvcnRzIChsb2NhbCBkZWNsYXJhdGlvbnMgYW5kIHJlLWV4cG9ydHMpICovXG5cdGV4cG9ydGVkQmluZGluZ3M6IE1vZHVsZUJpbmRpbmdbXTtcblx0LyoqIEV2ZXJ5dGhpbmcgdGhpcyBtb2R1bGUgaW1wb3J0cyAocmUtZXhwb3J0cyBhcHBlYXIgaGVyZSB0b28sIG1hcmtlZCBpc1JlRXhwb3J0KSAqL1xuXHRpbXBvcnRlZEJpbmRpbmdzOiBNb2R1bGVCaW5kaW5nW107XG5cdC8qKiBBYnNvbHV0ZSBwYXRocyBvZiBhbmFseXplZCBwcm9qZWN0IG1vZHVsZXMgdGhpcyBtb2R1bGUgaW1wb3J0cyBmcm9tICovXG5cdGRlcGVuZGVuY2llczogc3RyaW5nW107XG5cdC8qKiBJbXBvcnQgc3BlY2lmaWVycyB0aGF0IG1vZHVsZSByZXNvbHV0aW9uIGNvdWxkIG5vdCByZXNvbHZlIChub2RlIGJ1aWx0aW5zIGV4Y2x1ZGVkIOKAlCBzZWUgYnVpbHRpblNwZWNpZmllcnMpICovXG5cdHVucmVzb2x2ZWRTcGVjaWZpZXJzOiBzdHJpbmdbXTtcblx0LyoqXG5cdCAqIE5vZGUuanMgYnVpbHRpbiBzcGVjaWZpZXJzIHRoaXMgbW9kdWxlIGltcG9ydHMgKCdwYXRoJywgJ25vZGU6ZnMnLCDigKYpLFxuXHQgKiBtYXRjaGVkIGFnYWluc3Qgbm9kZTptb2R1bGUncyBidWlsdGluTW9kdWxlcyBpbiBib3RoIGJhcmUgYW5kXG5cdCAqIGBub2RlOmAtcHJlZml4ZWQgZm9ybXMuIFJlY29yZGVkIGZvciBob25lc3R5IG9ubHk6IGJ1aWx0aW5zIHByb2R1Y2Ugbm9cblx0ICogYmluZGluZ3MsIG5ldmVyIGVudGVyIGBkZXBlbmRlbmNpZXNgL2B1bnJlc29sdmVkU3BlY2lmaWVyc2AsIGFuZCBuZXZlclxuXHQgKiBwcm9kdWNlIGVkZ2VzLlxuXHQgKi9cblx0YnVpbHRpblNwZWNpZmllcnM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEEgY3Jvc3MtbW9kdWxlIHVzYWdlIG9mIGEgbW5lbW9uaWNhIHR5cGU6IHVzYWdlTW9kdWxlIGltcG9ydHMgYSBiaW5kaW5nXG4gKiB3aG9zZSBvcmlnaW4gbW9kdWxlIGRlZmluZXMgdGhlIHR5cGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3Jvc3NNb2R1bGVVc2FnZSB7XG5cdC8qKiBNYXRjaGVkIG1uZW1vbmljYSB0eXBlIGZ1bGxQYXRoIChvciB0aGUgaW1wb3J0ZWQgbmFtZSB3aGVuIHVubWF0Y2hlZCkgKi9cblx0dHlwZVBhdGg6IHN0cmluZztcblx0LyoqIEFic29sdXRlIHBhdGggb2YgdGhlIG1vZHVsZSB3aGVyZSB0aGUgdHlwZSBpcyBkZWZpbmVkIChyZS1leHBvcnQgY2hhaW5zIGNoYXNlZCB0byB0aGUgb3JpZ2luKSAqL1xuXHRkZWZpbml0aW9uTW9kdWxlOiBzdHJpbmc7XG5cdC8qKiBBYnNvbHV0ZSBwYXRoIG9mIHRoZSBpbXBvcnRpbmcgbW9kdWxlICovXG5cdHVzYWdlTW9kdWxlOiBzdHJpbmc7XG5cdC8qKiBJbXBvcnQgc2l0ZTogZmlsZS50czpMaW5lOkNvbCAqL1xuXHR1c2FnZUxvY2F0aW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIGZ1bGwgbW9kdWxlIGdyYXBoXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9kdWxlR3JhcGgge1xuXHQvKiogS2V5ZWQgYnkgYWJzb2x1dGUgZmlsZSBwYXRoICovXG5cdG1vZHVsZXM6IE1hcDxzdHJpbmcsIE1vZHVsZUluZm8+O1xuXHRlZGdlczogQ3Jvc3NNb2R1bGVVc2FnZVtdO1xuXHQvKipcblx0ICogQ2lyY3VsYXIgaW1wb3J0IGNoYWlucyAoZWFjaCBhbiBhcnJheSBvZiBhYnNvbHV0ZSBwYXRocykuIFJlY29yZGVkLCBub3Rcblx0ICogYW4gZXJyb3Ig4oCUIG1uZW1vbmljYSBzdHJpY3RDaGFpbjpmYWxzZSBwZXJtaXRzIG5vbi1saW5lYXIgY29uc3RydWN0aW9uXG5cdCAqL1xuXHRjeWNsZXM6IHN0cmluZ1tdW107XG59XG5cbi8qKlxuICogSlNPTiBvdXRwdXQgZm9yIG1vZHVsZXMuanNvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1vZHVsZXNKc29uIHtcblx0dmVyc2lvbjogc3RyaW5nO1xuXHRnZW5lcmF0ZWRBdDogc3RyaW5nO1xuXHRtb2R1bGVzOiBSZWNvcmQ8c3RyaW5nLCBNb2R1bGVJbmZvPjtcblx0ZWRnZXM6IENyb3NzTW9kdWxlVXNhZ2VbXTtcblx0Y3ljbGVzOiBzdHJpbmdbXVtdO1xufVxuXG4vKipcbiAqIFdoYXQgYSB0cmFja2VkIHNjb3BlIGlzLiBEZWNpc2lvbiA1IChyZXNvbHZlZCAyMDI2LTA5LTAzKTogZnVuY3Rpb24sXG4gKiBtZXRob2QsIGFuZCBhcnJvdyBzY29wZXMgT05MWSDigJQgbm8gYmxvY2sgc2NvcGVzLiAnbW9kdWxlJyBpcyB0aGUgc3ludGhldGljXG4gKiBwZXItZmlsZSByb290IHNjb3BlIHNvIG1vZHVsZS1sZXZlbCBpbnN0YW5jZSBjcmVhdGlvbnMgYXJlIGxhYmVsZWQsIG5vdFxuICogZHJvcHBlZCAod2Fsa2VyIHBsYW46IFwicmVjb3JkZWQgYXMgYSByb290ZWQgaW5zdGFuY2VcIikuXG4gKi9cbmV4cG9ydCB0eXBlIFNjb3BlS2luZCA9XG5cdHwgJ21vZHVsZSdcblx0fCAnZnVuY3Rpb24nXG5cdHwgJ21ldGhvZCdcblx0fCAnYXJyb3cnO1xuXG4vKipcbiAqIE9uZSB0cmFja2VkIHNjb3BlIChzY29wZXMuanNvbilcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTY29wZUluZm8ge1xuXHQvKiogVW5pcXVlIGlkOiBtb2R1bGUgc2NvcGUgaXMgdGhlIGZpbGUgcGF0aDsgZnVuY3Rpb24gc2NvcGVzIGFyZSBmaWxlOmxpbmU6Y29sIG9mIHRoZSBzY29wZSBub2RlICovXG5cdHNjb3BlSWQ6IHN0cmluZztcblx0LyoqIERlY2lzaW9uIDggbGFiZWxpbmc6IGZ1bmN0aW9uL21ldGhvZCBuYW1lICgnQ2xhc3MubWV0aG9kJyBmb3IgbWV0aG9kcyksIGZpbGU6bGluZSBmb3IgYW5vbnltb3VzIGhvbGRlcnMgKi9cblx0bmFtZTogc3RyaW5nO1xuXHRraW5kOiBTY29wZUtpbmQ7XG5cdC8qKiBOZWFyZXN0IGVuY2xvc2luZyBzY29wZSAodW5kZWZpbmVkIG9uIG1vZHVsZSBzY29wZXMpICovXG5cdHBhcmVudFNjb3BlSWQ/OiBzdHJpbmc7XG5cdC8qKiBBYnNvbHV0ZSBmaWxlIHBhdGggKi9cblx0ZmlsZVBhdGg6IHN0cmluZztcblx0LyoqIFNjb3BlIHN0YXJ0OiBmaWxlLnRzOkxpbmU6Q29sIChtb2R1bGUgc2NvcGU6IGZpbGU6MToxKSAqL1xuXHRsb2NhdGlvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9uZSB0cmFja2VkIHZhcmlhYmxlIChzY29wZXMuanNvbilcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTY29wZVZhcmlhYmxlIHtcblx0bmFtZTogc3RyaW5nO1xuXHQvKiogT3duaW5nIHNjb3BlICovXG5cdHNjb3BlSWQ6IHN0cmluZztcblx0LyoqIE1uZW1vbmljYSB0eXBlIGZ1bGxQYXRoIHdoZW4ga25vd24gKG5ldyBYKCkgb24gYSBrbm93biB0eXBlLCBuZXcgaW5zdC5TdWIoKSBjaGFpbmluZywgb3IgYSBrbm93biBhbm5vdGF0aW9uKSAqL1xuXHR0eXBlUGF0aD86IHN0cmluZztcblx0LyoqIENoZWFwIHRleHR1YWwgdHlwZTogYW5ub3RhdGlvbiB0ZXh0IG9yIHRpbnkgaW5pdGlhbGl6ZXIgY2xhc3NpZmljYXRpb24gKi9cblx0aW5mZXJyZWRUeXBlPzogc3RyaW5nO1xuXHQvKiogRGVjbGFyYXRpb24gc2l0ZTogZmlsZS50czpMaW5lOkNvbCAqL1xuXHRkZWNsYXJhdGlvbjogc3RyaW5nO1xuXHRpc1BhcmFtZXRlcjogYm9vbGVhbjtcblx0LyoqIGNvbnN0ID0gZmFsc2U7IGxldC92YXIgYW5kIHBhcmFtZXRlcnMgPSB0cnVlIChwYXJhbWV0ZXJzIGFyZSByZWFzc2lnbmFibGUpICovXG5cdGlzTXV0YWJsZTogYm9vbGVhbjtcblx0LyoqXG5cdCAqIFJlYXNzaWdubWVudCBzaXRlcyAoZmlsZS50czpMaW5lOkNvbCkgb2YgdGhpcyBiaW5kaW5nIOKAlCBmbG93LXRlcm1pbmF0aW9uXG5cdCAqIHBvaW50cyAoZGVjaXNpb24gNik6IHRoZSBQaGFzZSAzIHdhbGtlciBzdG9wcyBmb2xsb3dpbmcgdGhlIGJpbmRpbmcgdGhlcmVcblx0ICovXG5cdHJlYXNzaWdubWVudHM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFRoZSBmdWxsIGxvY2FsLXNjb3BlIGFuYWx5c2lzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NvcGVBbmFseXNpcyB7XG5cdC8qKiBLZXllZCBieSBzY29wZUlkICovXG5cdHNjb3BlczogTWFwPHN0cmluZywgU2NvcGVJbmZvPjtcblx0LyoqIEtleWVkIGJ5IGAke3Njb3BlSWR9IyR7bmFtZX1gICovXG5cdHZhcmlhYmxlczogTWFwPHN0cmluZywgU2NvcGVWYXJpYWJsZT47XG59XG5cbi8qKlxuICogSlNPTiBvdXRwdXQgZm9yIHNjb3Blcy5qc29uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NvcGVzSnNvbiB7XG5cdHZlcnNpb246IHN0cmluZztcblx0Z2VuZXJhdGVkQXQ6IHN0cmluZztcblx0c2NvcGVzOiBSZWNvcmQ8c3RyaW5nLCBTY29wZUluZm8+O1xuXHR2YXJpYWJsZXM6IFNjb3BlVmFyaWFibGVbXTtcbn1cblxuLyoqXG4gKiBPbmUgbm9kZSBvZiB0aGUgY3JlYXRpb24gZ3JhcGggKGluc3RydW1lbnRhdGlvbiB3YWxrZXIgcGxhbiwgUGhhc2UgMyk6XG4gKiBhIHNjb3BlIHRoYXQgY3JlYXRlcyBtbmVtb25pY2EgaW5zdGFuY2VzLCBvciBvbmUgc2l0dGluZyBvbiBhIGNhbGwgcGF0aFxuICogdG8gYSBjcmVhdG9yLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0aW9uR3JhcGhOb2RlIHtcblx0LyoqIExvY2FsU2NvcGVXYWxrZXIgc2NvcGVJZCAobW9kdWxlIHNjb3BlID0gZmlsZSBwYXRoOyBmdW5jdGlvbiBzY29wZXMgPSBmaWxlOmxpbmU6Y29sKSAqL1xuXHRzY29wZUlkOiBzdHJpbmc7XG5cdC8qKiBEZWNpc2lvbiA4IGxhYmVsOiBmdW5jdGlvbi9tZXRob2QgbmFtZSAoJ0NsYXNzLm1ldGhvZCcpLCBmaWxlOmxpbmUgZm9yIGFub255bW91cyBob2xkZXJzICovXG5cdG5hbWU6IHN0cmluZztcblx0a2luZDogU2NvcGVLaW5kO1xuXHQvKiogQWJzb2x1dGUgZmlsZSBwYXRoICovXG5cdGZpbGVQYXRoOiBzdHJpbmc7XG5cdC8qKiBTY29wZSBzdGFydDogZmlsZS50czpMaW5lOkNvbCAqL1xuXHRsb2NhdGlvbjogc3RyaW5nO1xuXHQvKiogVHJ1ZSB3aGVuIHRoZSB3YWxrIGZvdW5kIG5vIGNhbGxlcnMg4oCUIGFuIGFwcGxpY2F0aW9uIGVudHJ5IHBvaW50ICovXG5cdHN0YXJ0ZXI6IGJvb2xlYW47XG59XG5cbi8qKlxuICogT25lIGVkZ2Ugb2YgdGhlIGNyZWF0aW9uIGdyYXBoOiB0aGUgY2FsbGVyIHNjb3BlIGludm9rZXMgb3IgcmVmZXJlbmNlcyB0aGVcbiAqIGNhbGxlZSBzY29wZS4gRGlyZWN0aW9uIGlzIGluc2lkZS1vdXQ6IGNhbGxlciDihpIgY2FsbGVlLCB3aGVyZSB0aGUgY2FsbGVlIGlzXG4gKiBjbG9zZXIgdG8gdGhlIGNyZWF0aW9uIHNpdGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRpb25HcmFwaEVkZ2Uge1xuXHQvKiogQ2FsbGluZyBzY29wZSdzIHNjb3BlSWQgKi9cblx0Y2FsbGVyOiBzdHJpbmc7XG5cdC8qKiBDYWxsZWQgKGhvbGRlcikgc2NvcGUncyBzY29wZUlkICovXG5cdGNhbGxlZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFuIGluc3RhbnRpYXRpb24gYW5jaG9yOiBvbmUgbW5lbW9uaWNhIGNyZWF0aW9uIHNpdGUgcGlubmVkIHRvIGl0cyBob2xkZXJcbiAqIHNjb3BlLlxuICpcbiAqIGB2YXJpYWJsZWAvYHRlcm1pbmF0ZWRBdGAgYXJlIGEgZG9jdW1lbnRlZCBoZXVyaXN0aWM6IHRoZSB2YXJpYWJsZSBkZWNsYXJlZFxuICogaW4gdGhlIGhvbGRlciBzY29wZSBvbiB0aGUgU0FNRSBsaW5lIGFzIHRoZSBjcmVhdGlvbiwgd2hvc2UgdHlwZVBhdGggKHdoZW5cbiAqIGtub3duKSBtYXRjaGVzIHRoZSBjcmVhdGVkIHR5cGUuIGB0ZXJtaW5hdGVkQXRgIGlzIHRoYXQgdmFyaWFibGUncyBmaXJzdFxuICogcmVhc3NpZ25tZW50IHNpdGUg4oCUIHRoZSBkZWNpc2lvbiA2IGZsb3ctdGVybWluYXRpb24gcG9pbnQgd2hlcmUgdGhlIHdhbGtlclxuICogc3RvcHMgZm9sbG93aW5nIHRoZSBiaW5kaW5nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0aW9uQW5jaG9yIHtcblx0LyoqIENyZWF0aW9uIHNpdGU6IGZpbGUudHM6TGluZTpDb2wgKHRoZSB1c2FnZXMuanNvbiBsb2NhdGlvbikgKi9cblx0bG9jYXRpb246IHN0cmluZztcblx0LyoqIFNjb3BlIGhvbGRpbmcgdGhlIGNyZWF0aW9uIChzY29wZXMuanNvbiBzY29wZUlkKSAqL1xuXHRob2xkZXJTY29wZUlkOiBzdHJpbmc7XG5cdC8qKiBNbmVtb25pY2EgdHlwZSBmdWxsUGF0aCBiZWluZyBjcmVhdGVkICovXG5cdHR5cGVQYXRoOiBzdHJpbmc7XG5cdC8qKiBDb25zdHJ1Y3RvciBleHByZXNzaW9uIHRleHQgKCdUaGluZycsICd1c2VyLkFkbWluRW50aXR5JywgYSBsb29rdXAgYWxpYXMgbmFtZSkgKi9cblx0Y29uc3RydWN0b3JUZXh0Pzogc3RyaW5nO1xuXHQvKipcblx0ICogVHJ1ZSB3aGVuIHRoZSBob2xkZXIgaXMgdGhlIG1vZHVsZSBzY29wZSDigJQgYSByb290ZWQgaW5zdGFuY2UgKHBsYW46XG5cdCAqIGxlZ2l0aW1hdGUgcm9vdCBvciBkZXZlbG9wZXIgZXJyb3I7IGxhYmVsZWQsIG5vdCBwb2xpY2VkKVxuXHQgKi9cblx0cm9vdGVkPzogYm9vbGVhbjtcblx0LyoqIFZhcmlhYmxlIHRoZSBmcmVzaCBpbnN0YW5jZSB3YXMgYm91bmQgdG8gKHNhbWUtbGluZSBoZXVyaXN0aWMpICovXG5cdHZhcmlhYmxlPzogc3RyaW5nO1xuXHQvKiogRmlyc3QgcmVhc3NpZ25tZW50IHNpdGUgb2YgdGhhdCB2YXJpYWJsZTogZmlsZS50czpMaW5lOkNvbCAqL1xuXHR0ZXJtaW5hdGVkQXQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIGNyZWF0aW9uIGdyYXBoOiBldmVyeXRoaW5nIHRoYXQgbGVhZHMgdG8gbW5lbW9uaWNhIGluc3RhbmNlcyBiZWluZ1xuICogY3JlYXRlZC4gRW1pdHRlZCBhcyB0aGUgYGNyZWF0aW9uR3JhcGhgIGtleSBvZiBpbnN0cnVtZW50YXRpb24uanNvbiB2Mi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVhdGlvbkdyYXBoIHtcblx0bm9kZXM6IENyZWF0aW9uR3JhcGhOb2RlW107XG5cdGVkZ2VzOiBDcmVhdGlvbkdyYXBoRWRnZVtdO1xuXHRhbmNob3JzOiBDcmVhdGlvbkFuY2hvcltdO1xufVxuXG4vKipcbiAqIEpTT04gb3V0cHV0IGZvciBoaWVyYXJjaHkuanNvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEhpZXJhcmNoeUpzb24ge1xuXHR2ZXJzaW9uOiBzdHJpbmc7XG5cdGdlbmVyYXRlZEF0OiBzdHJpbmc7XG5cdHJvb3RzOiBIaWVyYXJjaHlOb2RlW107XG59XG5cbi8qKlxuICogU3RydWN0dXJlZCBoaWVyYXJjaHkgbm9kZSBmb3IgbWFjaGluZSBjb25zdW1wdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIaWVyYXJjaHlOb2RlIHtcblx0LyoqIFR5cGUgbmFtZSAoZS5nLiwgXCJBZG1pblR5cGVcIikgKi9cblx0bmFtZTogc3RyaW5nO1xuXHQvKiogRnVsbCBkb3R0ZWQgcGF0aCAoZS5nLiwgXCJVc2VyVHlwZS5BZG1pblR5cGVcIikgKi9cblx0ZnVsbFBhdGg6IHN0cmluZztcblx0LyoqIExvY2F0aW9uIGluIHNvdXJjZTogZmlsZS50czpMaW5lOkNvbCAqL1xuXHRsb2NhdGlvbjogc3RyaW5nO1xuXHQvKiogQ2hpbGQgdHlwZXMgaW4gdGhlIFRyaWUgKi9cblx0Y2hpbGRyZW46IEhpZXJhcmNoeU5vZGVbXTtcbn1cblxuLyoqXG4gKiBBIGZhdGFsIHJlc29sdXRpb24gZmFpbHVyZTogc2FtZS1uYW1lc3BhY2UgZHVwbGljYXRlIG1uZW1vbmljYVxuICogZGVmaW5pdGlvbnMsIG9yIGEgbW5lbW9uaWNhLWdyYXBoIHR5cGUgcmVmZXJlbmNlIHRoYXQgc3RheXMgYW1iaWd1b3VzXG4gKiBhZnRlciBwYXRoLWF3YXJlIHJlc29sdXRpb24gKG9yIHJlc29sdmVzIHRvIG5vdGhpbmcpLiBUaGUgQ0xJIHByaW50c1xuICogZXZlcnkgbG9jYXRpb24gYW5kIHdyaXRlcyBubyAudGFjdGljYSBvdXRwdXQgYXQgYWxsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc29sdXRpb25FcnJvciB7XG5cdC8qKiBodW1hbi1yZWFkYWJsZSBkZXNjcmlwdGlvbiBvZiB0aGUgZmFpbHVyZSAqL1xuXHRtZXNzYWdlOiBzdHJpbmc7XG5cdC8qKiBldmVyeSBpbnZvbHZlZCBzb3VyY2UgbG9jYXRpb24sIGBmaWxlOmxpbmU6Y29sdW1uYCAqL1xuXHRsb2NhdGlvbnM6IHN0cmluZ1tdO1xufVxuIl19
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mnemonica/tactica",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.5",
|
|
4
4
|
"description": "Type definition generator for Mnemonica — statically analyzes define() calls and emits .tactica/ types, registry, and metadata",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
"mocha": "^8.4.0",
|
|
64
64
|
"nyc": "^18.0.0",
|
|
65
65
|
"ts-node": "^10.9.2",
|
|
66
|
-
"typeomatica": "^0.3.
|
|
66
|
+
"typeomatica": "^0.3.63",
|
|
67
67
|
"typescript": "^5.9.3"
|
|
68
68
|
},
|
|
69
69
|
"dependencies": {
|