@jsverse/transloco 8.0.2 → 8.2.0

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/CHANGELOG.md CHANGED
@@ -1,3 +1,32 @@
1
+ ## 8.2.0 (2025-11-15)
2
+
3
+
4
+ ### 🚀 Features
5
+
6
+ - **transloco:** 🎸 Add config option for scope auto prefixing ([#868](https://github.com/jsverse/transloco/pull/868))
7
+
8
+
9
+ ### ❤️ Thank You
10
+
11
+ - Baptiste Moreau @FU856BMO
12
+
13
+ ## 8.1.0 (2025-10-11)
14
+
15
+
16
+ ### 🚀 Features
17
+
18
+ - **transloco:** 🎸 auto-detect public folder in ng-add ([#879](https://github.com/jsverse/transloco/pull/879))
19
+
20
+
21
+ ### 🩹 Fixes
22
+
23
+ - **transloco:** 🐛 expose TranslocoLoaderData ([7c5b19ad](https://github.com/jsverse/transloco/commit/7c5b19ad))
24
+
25
+
26
+ ### ❤️ Thank You
27
+
28
+ - Shahar Kazaz @shaharkazaz
29
+
1
30
  ## 8.0.2 (2025-09-26)
2
31
 
3
32
 
package/README.md CHANGED
@@ -40,10 +40,10 @@ Transloco is your all-in-one solution for internationalizing Angular application
40
40
  <hr />
41
41
 
42
42
  - 🤓 &nbsp;Explore the (brand new ✨) [documentation](https://jsverse.gitbook.io/transloco) to learn more.
43
- - 🚀 &nbsp;Check out the [Sandbox & Examples](https://jsverse.gitbook.io/transloco) to see Transloco in action.
44
- - 😎 &nbsp;Leverage [Schematics](https://jsverse.gitbook.io/transloco/schematics) for streamlined setup and configuration.
45
- - 📖 &nbsp;Dive into insightful [blog posts](https://jsverse.gitbook.io/transloco/blog-posts).
46
- - ❓ &nbsp;Find answers to common questions in our [FAQs](https://jsverse.gitbook.io/transloco/faqs).
43
+ - 🚀 &nbsp;Check out the [Sandbox & Examples](https://jsverse.gitbook.io/transloco/resources/sandbox-and-examples) to see Transloco in action.
44
+ - 😎 &nbsp;Leverage [Schematics](https://jsverse.gitbook.io/transloco/developer-tools/schematics) for streamlined setup and configuration.
45
+ - 📖 &nbsp;Dive into insightful [blog posts](https://jsverse.gitbook.io/transloco/resources/blog-posts).
46
+ - ❓ &nbsp;Find answers to common questions in our [FAQs](https://jsverse.gitbook.io/transloco/resources/faqs).
47
47
 
48
48
  ## Contributors ✨
49
49
 
@@ -1,7 +1,8 @@
1
1
  import { Inject, Injectable, InjectionToken } from '@angular/core';
2
2
  import { TRANSLOCO_CONFIG } from './transloco.config';
3
3
  import * as i0 from "@angular/core";
4
- export const TRANSLOCO_FALLBACK_STRATEGY = new InjectionToken(ngDevMode ? 'TRANSLOCO_FALLBACK_STRATEGY' : '');
4
+ export const TRANSLOCO_FALLBACK_STRATEGY =
5
+ /* @__PURE__ */ new InjectionToken(ngDevMode ? 'TRANSLOCO_FALLBACK_STRATEGY' : '');
5
6
  export class DefaultFallbackStrategy {
6
7
  userConfig;
7
8
  constructor(userConfig) {
@@ -23,4 +24,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
23
24
  type: Inject,
24
25
  args: [TRANSLOCO_CONFIG]
25
26
  }] }] });
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsb2NvLWZhbGxiYWNrLXN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy90cmFuc2xvY28vc3JjL2xpYi90cmFuc2xvY28tZmFsbGJhY2stc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBbUIsTUFBTSxvQkFBb0IsQ0FBQzs7QUFFdkUsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQ3RDLElBQUksY0FBYyxDQUNoQixTQUFTLENBQUMsQ0FBQyxDQUFDLDZCQUE2QixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQy9DLENBQUM7QUFPSixNQUFNLE9BQU8sdUJBQXVCO0lBQ1k7SUFBOUMsWUFBOEMsVUFBMkI7UUFBM0IsZUFBVSxHQUFWLFVBQVUsQ0FBaUI7SUFBRyxDQUFDO0lBRTdFLFlBQVk7UUFDVixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQztRQUNsRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDbEIsTUFBTSxJQUFJLEtBQUssQ0FDYixzRkFBc0YsQ0FDdkYsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNyRSxDQUFDO3VHQVpVLHVCQUF1QixrQkFDZCxnQkFBZ0I7MkdBRHpCLHVCQUF1Qjs7MkZBQXZCLHVCQUF1QjtrQkFEbkMsVUFBVTs7MEJBRUksTUFBTTsyQkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFRSQU5TTE9DT19DT05GSUcsIFRyYW5zbG9jb0NvbmZpZyB9IGZyb20gJy4vdHJhbnNsb2NvLmNvbmZpZyc7XG5cbmV4cG9ydCBjb25zdCBUUkFOU0xPQ09fRkFMTEJBQ0tfU1RSQVRFR1kgPVxuICBuZXcgSW5qZWN0aW9uVG9rZW48VHJhbnNsb2NvRmFsbGJhY2tTdHJhdGVneT4oXG4gICAgbmdEZXZNb2RlID8gJ1RSQU5TTE9DT19GQUxMQkFDS19TVFJBVEVHWScgOiAnJyxcbiAgKTtcblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2xvY29GYWxsYmFja1N0cmF0ZWd5IHtcbiAgZ2V0TmV4dExhbmdzKGZhaWxlZExhbmc6IHN0cmluZyk6IHN0cmluZ1tdO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGVmYXVsdEZhbGxiYWNrU3RyYXRlZ3kgaW1wbGVtZW50cyBUcmFuc2xvY29GYWxsYmFja1N0cmF0ZWd5IHtcbiAgY29uc3RydWN0b3IoQEluamVjdChUUkFOU0xPQ09fQ09ORklHKSBwcml2YXRlIHVzZXJDb25maWc6IFRyYW5zbG9jb0NvbmZpZykge31cblxuICBnZXROZXh0TGFuZ3MoKSB7XG4gICAgY29uc3QgZmFsbGJhY2tMYW5nID0gdGhpcy51c2VyQ29uZmlnLmZhbGxiYWNrTGFuZztcbiAgICBpZiAoIWZhbGxiYWNrTGFuZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnV2hlbiB1c2luZyB0aGUgZGVmYXVsdCBmYWxsYmFjaywgYSBmYWxsYmFjayBsYW5ndWFnZSBtdXN0IGJlIHByb3ZpZGVkIGluIHRoZSBjb25maWchJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZmFsbGJhY2tMYW5nKSA/IGZhbGxiYWNrTGFuZyA6IFtmYWxsYmFja0xhbmddO1xuICB9XG59XG4iXX0=
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsb2NvLWZhbGxiYWNrLXN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy90cmFuc2xvY28vc3JjL2xpYi90cmFuc2xvY28tZmFsbGJhY2stc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBbUIsTUFBTSxvQkFBb0IsQ0FBQzs7QUFFdkUsTUFBTSxDQUFDLE1BQU0sMkJBQTJCO0FBQ3RDLGVBQWUsQ0FBQyxJQUFJLGNBQWMsQ0FDaEMsU0FBUyxDQUFDLENBQUMsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUMvQyxDQUFDO0FBT0osTUFBTSxPQUFPLHVCQUF1QjtJQUNZO0lBQTlDLFlBQThDLFVBQTJCO1FBQTNCLGVBQVUsR0FBVixVQUFVLENBQWlCO0lBQUcsQ0FBQztJQUU3RSxZQUFZO1FBQ1YsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUM7UUFDbEQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQ2Isc0ZBQXNGLENBQ3ZGLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDckUsQ0FBQzt1R0FaVSx1QkFBdUIsa0JBQ2QsZ0JBQWdCOzJHQUR6Qix1QkFBdUI7OzJGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVU7OzBCQUVJLE1BQU07MkJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBUUkFOU0xPQ09fQ09ORklHLCBUcmFuc2xvY29Db25maWcgfSBmcm9tICcuL3RyYW5zbG9jby5jb25maWcnO1xuXG5leHBvcnQgY29uc3QgVFJBTlNMT0NPX0ZBTExCQUNLX1NUUkFURUdZID1cbiAgLyogQF9fUFVSRV9fICovIG5ldyBJbmplY3Rpb25Ub2tlbjxUcmFuc2xvY29GYWxsYmFja1N0cmF0ZWd5PihcbiAgICBuZ0Rldk1vZGUgPyAnVFJBTlNMT0NPX0ZBTExCQUNLX1NUUkFURUdZJyA6ICcnLFxuICApO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zbG9jb0ZhbGxiYWNrU3RyYXRlZ3kge1xuICBnZXROZXh0TGFuZ3MoZmFpbGVkTGFuZzogc3RyaW5nKTogc3RyaW5nW107XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEZWZhdWx0RmFsbGJhY2tTdHJhdGVneSBpbXBsZW1lbnRzIFRyYW5zbG9jb0ZhbGxiYWNrU3RyYXRlZ3kge1xuICBjb25zdHJ1Y3RvcihASW5qZWN0KFRSQU5TTE9DT19DT05GSUcpIHByaXZhdGUgdXNlckNvbmZpZzogVHJhbnNsb2NvQ29uZmlnKSB7fVxuXG4gIGdldE5leHRMYW5ncygpIHtcbiAgICBjb25zdCBmYWxsYmFja0xhbmcgPSB0aGlzLnVzZXJDb25maWcuZmFsbGJhY2tMYW5nO1xuICAgIGlmICghZmFsbGJhY2tMYW5nKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdXaGVuIHVzaW5nIHRoZSBkZWZhdWx0IGZhbGxiYWNrLCBhIGZhbGxiYWNrIGxhbmd1YWdlIG11c3QgYmUgcHJvdmlkZWQgaW4gdGhlIGNvbmZpZyEnLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShmYWxsYmFja0xhbmcpID8gZmFsbGJhY2tMYW5nIDogW2ZhbGxiYWNrTGFuZ107XG4gIH1cbn1cbiJdfQ==
@@ -1,3 +1,3 @@
1
1
  import { InjectionToken } from '@angular/core';
2
- export const TRANSLOCO_LANG = new InjectionToken(ngDevMode ? 'TRANSLOCO_LANG' : '');
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsb2NvLWxhbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3RyYW5zbG9jby9zcmMvbGliL3RyYW5zbG9jby1sYW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLElBQUksY0FBYyxDQUM5QyxTQUFTLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ2xDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgVFJBTlNMT0NPX0xBTkcgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPihcbiAgbmdEZXZNb2RlID8gJ1RSQU5TTE9DT19MQU5HJyA6ICcnLFxuKTtcbiJdfQ==
2
+ export const TRANSLOCO_LANG = /* @__PURE__ */ new InjectionToken(ngDevMode ? 'TRANSLOCO_LANG' : '');
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsb2NvLWxhbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3RyYW5zbG9jby9zcmMvbGliL3RyYW5zbG9jby1sYW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLGVBQWUsQ0FBQyxJQUFJLGNBQWMsQ0FDOUQsU0FBUyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUNsQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNvbnN0IFRSQU5TTE9DT19MQU5HID0gLyogQF9fUFVSRV9fICovIG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KFxuICBuZ0Rldk1vZGUgPyAnVFJBTlNMT0NPX0xBTkcnIDogJycsXG4pO1xuIl19
@@ -1,3 +1,4 @@
1
1
  import { InjectionToken } from '@angular/core';
2
- export const TRANSLOCO_LOADING_TEMPLATE = new InjectionToken(ngDevMode ? 'TRANSLOCO_LOADING_TEMPLATE' : '');
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsb2NvLWxvYWRpbmctdGVtcGxhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3RyYW5zbG9jby9zcmMvbGliL3RyYW5zbG9jby1sb2FkaW5nLXRlbXBsYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJL0MsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxjQUFjLENBQzFELFNBQVMsQ0FBQyxDQUFDLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDOUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENvbnRlbnQgfSBmcm9tICcuL3RlbXBsYXRlLWhhbmRsZXInO1xuXG5leHBvcnQgY29uc3QgVFJBTlNMT0NPX0xPQURJTkdfVEVNUExBVEUgPSBuZXcgSW5qZWN0aW9uVG9rZW48Q29udGVudD4oXG4gIG5nRGV2TW9kZSA/ICdUUkFOU0xPQ09fTE9BRElOR19URU1QTEFURScgOiAnJyxcbik7XG4iXX0=
2
+ export const TRANSLOCO_LOADING_TEMPLATE =
3
+ /* @__PURE__ */ new InjectionToken(ngDevMode ? 'TRANSLOCO_LOADING_TEMPLATE' : '');
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsb2NvLWxvYWRpbmctdGVtcGxhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3RyYW5zbG9jby9zcmMvbGliL3RyYW5zbG9jby1sb2FkaW5nLXRlbXBsYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJL0MsTUFBTSxDQUFDLE1BQU0sMEJBQTBCO0FBQ3JDLGVBQWUsQ0FBQyxJQUFJLGNBQWMsQ0FDaEMsU0FBUyxDQUFDLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUM5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ29udGVudCB9IGZyb20gJy4vdGVtcGxhdGUtaGFuZGxlcic7XG5cbmV4cG9ydCBjb25zdCBUUkFOU0xPQ09fTE9BRElOR19URU1QTEFURSA9XG4gIC8qIEBfX1BVUkVfXyAqLyBuZXcgSW5qZWN0aW9uVG9rZW48Q29udGVudD4oXG4gICAgbmdEZXZNb2RlID8gJ1RSQU5TTE9DT19MT0FESU5HX1RFTVBMQVRFJyA6ICcnLFxuICApO1xuIl19
@@ -1,6 +1,7 @@
1
1
  import { Injectable, InjectionToken } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
- export const TRANSLOCO_MISSING_HANDLER = new InjectionToken(ngDevMode ? 'TRANSLOCO_MISSING_HANDLER' : '');
3
+ export const TRANSLOCO_MISSING_HANDLER =
4
+ /* @__PURE__ */ new InjectionToken(ngDevMode ? 'TRANSLOCO_MISSING_HANDLER' : '');
4
5
  export class DefaultMissingHandler {
5
6
  handle(key, config) {
6
7
  if (config.missingHandler.logMissingKey && !config.prodMode) {
@@ -15,4 +16,4 @@ export class DefaultMissingHandler {
15
16
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DefaultMissingHandler, decorators: [{
16
17
  type: Injectable
17
18
  }] });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsb2NvLW1pc3NpbmctaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvdHJhbnNsb2NvL3NyYy9saWIvdHJhbnNsb2NvLW1pc3NpbmctaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLM0QsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQ3BDLElBQUksY0FBYyxDQUNoQixTQUFTLENBQUMsQ0FBQyxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQzdDLENBQUM7QUFXSixNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLE1BQU0sQ0FBQyxHQUFXLEVBQUUsTUFBdUI7UUFDekMsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLGFBQWEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM1RCxNQUFNLEdBQUcsR0FBRyw0QkFBNEIsR0FBRyxHQUFHLENBQUM7WUFDL0MsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFLDZCQUE2QixDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQzt1R0FSVSxxQkFBcUI7MkdBQXJCLHFCQUFxQjs7MkZBQXJCLHFCQUFxQjtrQkFEakMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFRyYW5zbG9jb0NvbmZpZyB9IGZyb20gJy4vdHJhbnNsb2NvLmNvbmZpZyc7XG5pbXBvcnQgeyBIYXNoTWFwIH0gZnJvbSAnLi91dGlscy90eXBlLnV0aWxzJztcblxuZXhwb3J0IGNvbnN0IFRSQU5TTE9DT19NSVNTSU5HX0hBTkRMRVIgPVxuICBuZXcgSW5qZWN0aW9uVG9rZW48VHJhbnNsb2NvTWlzc2luZ0hhbmRsZXJEYXRhPihcbiAgICBuZ0Rldk1vZGUgPyAnVFJBTlNMT0NPX01JU1NJTkdfSEFORExFUicgOiAnJyxcbiAgKTtcblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2xvY29NaXNzaW5nSGFuZGxlckRhdGEgZXh0ZW5kcyBUcmFuc2xvY29Db25maWcge1xuICBhY3RpdmVMYW5nOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNsb2NvTWlzc2luZ0hhbmRsZXIge1xuICBoYW5kbGUoa2V5OiBzdHJpbmcsIGRhdGE6IFRyYW5zbG9jb01pc3NpbmdIYW5kbGVyRGF0YSwgcGFyYW1zPzogSGFzaE1hcCk6IGFueTtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERlZmF1bHRNaXNzaW5nSGFuZGxlciBpbXBsZW1lbnRzIFRyYW5zbG9jb01pc3NpbmdIYW5kbGVyIHtcbiAgaGFuZGxlKGtleTogc3RyaW5nLCBjb25maWc6IFRyYW5zbG9jb0NvbmZpZykge1xuICAgIGlmIChjb25maWcubWlzc2luZ0hhbmRsZXIubG9nTWlzc2luZ0tleSAmJiAhY29uZmlnLnByb2RNb2RlKSB7XG4gICAgICBjb25zdCBtc2cgPSBgTWlzc2luZyB0cmFuc2xhdGlvbiBmb3IgJyR7a2V5fSdgO1xuICAgICAgY29uc29sZS53YXJuKGAlYyAke21zZ31gLCAnZm9udC1zaXplOiAxMnB4OyBjb2xvcjogcmVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGtleTtcbiAgfVxufVxuIl19
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsb2NvLW1pc3NpbmctaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvdHJhbnNsb2NvL3NyYy9saWIvdHJhbnNsb2NvLW1pc3NpbmctaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLM0QsTUFBTSxDQUFDLE1BQU0seUJBQXlCO0FBQ3BDLGVBQWUsQ0FBQyxJQUFJLGNBQWMsQ0FDaEMsU0FBUyxDQUFDLENBQUMsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUM3QyxDQUFDO0FBV0osTUFBTSxPQUFPLHFCQUFxQjtJQUNoQyxNQUFNLENBQUMsR0FBVyxFQUFFLE1BQXVCO1FBQ3pDLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxhQUFhLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDNUQsTUFBTSxHQUFHLEdBQUcsNEJBQTRCLEdBQUcsR0FBRyxDQUFDO1lBQy9DLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsRUFBRSw2QkFBNkIsQ0FBQyxDQUFDO1FBQzNELENBQUM7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7dUdBUlUscUJBQXFCOzJHQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBUcmFuc2xvY29Db25maWcgfSBmcm9tICcuL3RyYW5zbG9jby5jb25maWcnO1xuaW1wb3J0IHsgSGFzaE1hcCB9IGZyb20gJy4vdXRpbHMvdHlwZS51dGlscyc7XG5cbmV4cG9ydCBjb25zdCBUUkFOU0xPQ09fTUlTU0lOR19IQU5ETEVSID1cbiAgLyogQF9fUFVSRV9fICovIG5ldyBJbmplY3Rpb25Ub2tlbjxUcmFuc2xvY29NaXNzaW5nSGFuZGxlckRhdGE+KFxuICAgIG5nRGV2TW9kZSA/ICdUUkFOU0xPQ09fTUlTU0lOR19IQU5ETEVSJyA6ICcnLFxuICApO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zbG9jb01pc3NpbmdIYW5kbGVyRGF0YSBleHRlbmRzIFRyYW5zbG9jb0NvbmZpZyB7XG4gIGFjdGl2ZUxhbmc6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2xvY29NaXNzaW5nSGFuZGxlciB7XG4gIGhhbmRsZShrZXk6IHN0cmluZywgZGF0YTogVHJhbnNsb2NvTWlzc2luZ0hhbmRsZXJEYXRhLCBwYXJhbXM/OiBIYXNoTWFwKTogYW55O1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGVmYXVsdE1pc3NpbmdIYW5kbGVyIGltcGxlbWVudHMgVHJhbnNsb2NvTWlzc2luZ0hhbmRsZXIge1xuICBoYW5kbGUoa2V5OiBzdHJpbmcsIGNvbmZpZzogVHJhbnNsb2NvQ29uZmlnKSB7XG4gICAgaWYgKGNvbmZpZy5taXNzaW5nSGFuZGxlci5sb2dNaXNzaW5nS2V5ICYmICFjb25maWcucHJvZE1vZGUpIHtcbiAgICAgIGNvbnN0IG1zZyA9IGBNaXNzaW5nIHRyYW5zbGF0aW9uIGZvciAnJHtrZXl9J2A7XG4gICAgICBjb25zb2xlLndhcm4oYCVjICR7bXNnfWAsICdmb250LXNpemU6IDEycHg7IGNvbG9yOiByZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4ga2V5O1xuICB9XG59XG4iXX0=
@@ -1,3 +1,4 @@
1
1
  import { InjectionToken } from '@angular/core';
2
- export const TRANSLOCO_SCOPE = new InjectionToken(ngDevMode ? 'TRANSLOCO_SCOPE' : '');
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsb2NvLXNjb3BlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy90cmFuc2xvY28vc3JjL2xpYi90cmFuc2xvY28tc2NvcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkvQyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxjQUFjLENBQy9DLFNBQVMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDbkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFRyYW5zbG9jb1Njb3BlIH0gZnJvbSAnLi90cmFuc2xvY28udHlwZXMnO1xuXG5leHBvcnQgY29uc3QgVFJBTlNMT0NPX1NDT1BFID0gbmV3IEluamVjdGlvblRva2VuPFRyYW5zbG9jb1Njb3BlPihcbiAgbmdEZXZNb2RlID8gJ1RSQU5TTE9DT19TQ09QRScgOiAnJyxcbik7XG4iXX0=
2
+ export const TRANSLOCO_SCOPE =
3
+ /* @__PURE__ */ new InjectionToken(ngDevMode ? 'TRANSLOCO_SCOPE' : '');
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsb2NvLXNjb3BlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy90cmFuc2xvY28vc3JjL2xpYi90cmFuc2xvY28tc2NvcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkvQyxNQUFNLENBQUMsTUFBTSxlQUFlO0FBQzFCLGVBQWUsQ0FBQyxJQUFJLGNBQWMsQ0FDaEMsU0FBUyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUNuQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgVHJhbnNsb2NvU2NvcGUgfSBmcm9tICcuL3RyYW5zbG9jby50eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBUUkFOU0xPQ09fU0NPUEUgPVxuICAvKiBAX19QVVJFX18gKi8gbmV3IEluamVjdGlvblRva2VuPFRyYW5zbG9jb1Njb3BlPihcbiAgICBuZ0Rldk1vZGUgPyAnVFJBTlNMT0NPX1NDT1BFJyA6ICcnLFxuICApO1xuIl19
@@ -4,8 +4,9 @@ import { TranslocoModule } from './transloco.module';
4
4
  import { provideTransloco } from './transloco.providers';
5
5
  import { TranslocoService } from './transloco.service';
6
6
  import * as i0 from "@angular/core";
7
- const TRANSLOCO_TEST_LANGS = new InjectionToken('TRANSLOCO_TEST_LANGS - Available testing languages');
8
- const TRANSLOCO_TEST_OPTIONS = new InjectionToken('TRANSLOCO_TEST_OPTIONS - Testing options');
7
+ const TRANSLOCO_TEST_LANGS = /* @__PURE__ */ new InjectionToken('TRANSLOCO_TEST_LANGS - Available testing languages');
8
+ const TRANSLOCO_TEST_OPTIONS =
9
+ /* @__PURE__ */ new InjectionToken('TRANSLOCO_TEST_OPTIONS - Testing options');
9
10
  export class TestingLoader {
10
11
  langs;
11
12
  constructor(langs) {
@@ -73,4 +74,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
73
74
  exports: [TranslocoModule],
74
75
  }]
75
76
  }] });
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsb2NvLXRlc3RpbmcubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy90cmFuc2xvY28vc3JjL2xpYi90cmFuc2xvY28tdGVzdGluZy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGVBQWUsRUFDZixNQUFNLEVBQ04sVUFBVSxFQUNWLGNBQWMsRUFFZCxRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUl0QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBU3ZELE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxjQUFjLENBQzdDLG9EQUFvRCxDQUNyRCxDQUFDO0FBQ0YsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLGNBQWMsQ0FDL0MsMENBQTBDLENBQzNDLENBQUM7QUFHRixNQUFNLE9BQU8sYUFBYTtJQUVnQjtJQUR4QyxZQUN3QyxLQUEyQjtRQUEzQixVQUFLLEdBQUwsS0FBSyxDQUFzQjtJQUNoRSxDQUFDO0lBRUosY0FBYyxDQUFDLElBQVk7UUFDekIsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzlCLENBQUM7dUdBUFUsYUFBYSxrQkFFZCxvQkFBb0I7MkdBRm5CLGFBQWE7OzJGQUFiLGFBQWE7a0JBRHpCLFVBQVU7OzBCQUdOLE1BQU07MkJBQUMsb0JBQW9COztBQVFoQyxNQUFNLFVBQVUsb0JBQW9CLENBQ2xDLE9BQXlCLEVBQ3pCLFFBQThCLEVBQUUsRUFDaEMsT0FBZ0M7SUFFaEMsTUFBTSxlQUFlLEdBQUcsR0FBRyxFQUFFLENBQzNCLE9BQU8sQ0FBQyxZQUFZO1FBQ2xCLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUNULE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQ2pFO1FBQ0gsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUV4QixPQUFPLGVBQWUsQ0FBQztBQUN6QixDQUFDO0FBS0QsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxNQUFNLENBQUMsT0FBTyxDQUNaLE9BQWdDO1FBRWhDLE9BQU87WUFDTCxRQUFRLEVBQUUsc0JBQXNCO1lBQ2hDLFNBQVMsRUFBRTtnQkFDVCxnQkFBZ0IsQ0FBQztvQkFDZixNQUFNLEVBQUUsYUFBYTtvQkFDckIsTUFBTSxFQUFFO3dCQUNOLFFBQVEsRUFBRSxJQUFJO3dCQUNkLGNBQWMsRUFBRSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUU7d0JBQ3hDLEdBQUcsT0FBTyxDQUFDLGVBQWU7cUJBQzNCO2lCQUNGLENBQUM7Z0JBQ0Y7b0JBQ0UsT0FBTyxFQUFFLG9CQUFvQjtvQkFDN0IsUUFBUSxFQUFFLE9BQU8sQ0FBQyxLQUFLO2lCQUN4QjtnQkFDRDtvQkFDRSxPQUFPLEVBQUUsc0JBQXNCO29CQUMvQixRQUFRLEVBQUUsT0FBTztpQkFDbEI7Z0JBQ0Q7b0JBQ0UsT0FBTyxFQUFFLGVBQWU7b0JBQ3hCLFVBQVUsRUFBRSxvQkFBb0I7b0JBQ2hDLElBQUksRUFBRTt3QkFDSixnQkFBZ0I7d0JBQ2hCLG9CQUFvQjt3QkFDcEIsc0JBQXNCO3FCQUN2QjtvQkFDRCxLQUFLLEVBQUUsSUFBSTtpQkFDWjthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7dUdBbkNVLHNCQUFzQjt3R0FBdEIsc0JBQXNCLFlBRnZCLGVBQWU7d0dBRWQsc0JBQXNCLFlBRnZCLGVBQWU7OzJGQUVkLHNCQUFzQjtrQkFIbEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxlQUFlLENBQUM7aUJBQzNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQVBQX0lOSVRJQUxJWkVSLFxuICBJbmplY3QsXG4gIEluamVjdGFibGUsXG4gIEluamVjdGlvblRva2VuLFxuICBNb2R1bGVXaXRoUHJvdmlkZXJzLFxuICBOZ01vZHVsZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBUcmFuc2xvY29Mb2FkZXIgfSBmcm9tICcuL3RyYW5zbG9jby5sb2FkZXInO1xuaW1wb3J0IHsgVHJhbnNsYXRpb24gfSBmcm9tICcuL3RyYW5zbG9jby50eXBlcyc7XG5pbXBvcnQgeyBUcmFuc2xvY29Nb2R1bGUgfSBmcm9tICcuL3RyYW5zbG9jby5tb2R1bGUnO1xuaW1wb3J0IHsgcHJvdmlkZVRyYW5zbG9jbyB9IGZyb20gJy4vdHJhbnNsb2NvLnByb3ZpZGVycyc7XG5pbXBvcnQgeyBUcmFuc2xvY29Db25maWcgfSBmcm9tICcuL3RyYW5zbG9jby5jb25maWcnO1xuaW1wb3J0IHsgVHJhbnNsb2NvU2VydmljZSB9IGZyb20gJy4vdHJhbnNsb2NvLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGFzaE1hcCB9IGZyb20gJy4vdXRpbHMvdHlwZS51dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNsb2NvVGVzdGluZ09wdGlvbnMge1xuICB0cmFuc2xvY29Db25maWc/OiBQYXJ0aWFsPFRyYW5zbG9jb0NvbmZpZz47XG4gIHByZWxvYWRMYW5ncz86IGJvb2xlYW47XG4gIGxhbmdzPzogSGFzaE1hcDxUcmFuc2xhdGlvbj47XG59XG5cbmNvbnN0IFRSQU5TTE9DT19URVNUX0xBTkdTID0gbmV3IEluamVjdGlvblRva2VuPEhhc2hNYXA8VHJhbnNsYXRpb24+PihcbiAgJ1RSQU5TTE9DT19URVNUX0xBTkdTIC0gQXZhaWxhYmxlIHRlc3RpbmcgbGFuZ3VhZ2VzJyxcbik7XG5jb25zdCBUUkFOU0xPQ09fVEVTVF9PUFRJT05TID0gbmV3IEluamVjdGlvblRva2VuPFRyYW5zbG9jb1Rlc3RpbmdPcHRpb25zPihcbiAgJ1RSQU5TTE9DT19URVNUX09QVElPTlMgLSBUZXN0aW5nIG9wdGlvbnMnLFxuKTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRlc3RpbmdMb2FkZXIgaW1wbGVtZW50cyBUcmFuc2xvY29Mb2FkZXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KFRSQU5TTE9DT19URVNUX0xBTkdTKSBwcml2YXRlIGxhbmdzOiBIYXNoTWFwPFRyYW5zbGF0aW9uPixcbiAgKSB7fVxuXG4gIGdldFRyYW5zbGF0aW9uKGxhbmc6IHN0cmluZyk6IE9ic2VydmFibGU8VHJhbnNsYXRpb24+IHwgUHJvbWlzZTxUcmFuc2xhdGlvbj4ge1xuICAgIHJldHVybiBvZih0aGlzLmxhbmdzW2xhbmddKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdFRyYW5zbG9jb1NlcnZpY2UoXG4gIHNlcnZpY2U6IFRyYW5zbG9jb1NlcnZpY2UsXG4gIGxhbmdzOiBIYXNoTWFwPFRyYW5zbGF0aW9uPiA9IHt9LFxuICBvcHRpb25zOiBUcmFuc2xvY29UZXN0aW5nT3B0aW9ucyxcbikge1xuICBjb25zdCBwcmVsb2FkQWxsTGFuZ3MgPSAoKSA9PlxuICAgIG9wdGlvbnMucHJlbG9hZExhbmdzXG4gICAgICA/IFByb21pc2UuYWxsKFxuICAgICAgICAgIE9iamVjdC5rZXlzKGxhbmdzKS5tYXAoKGxhbmcpID0+IHNlcnZpY2UubG9hZChsYW5nKS50b1Byb21pc2UoKSksXG4gICAgICAgIClcbiAgICAgIDogUHJvbWlzZS5yZXNvbHZlKCk7XG5cbiAgcmV0dXJuIHByZWxvYWRBbGxMYW5ncztcbn1cblxuQE5nTW9kdWxlKHtcbiAgZXhwb3J0czogW1RyYW5zbG9jb01vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIFRyYW5zbG9jb1Rlc3RpbmdNb2R1bGUge1xuICBzdGF0aWMgZm9yUm9vdChcbiAgICBvcHRpb25zOiBUcmFuc2xvY29UZXN0aW5nT3B0aW9ucyxcbiAgKTogTW9kdWxlV2l0aFByb3ZpZGVyczxUcmFuc2xvY29UZXN0aW5nTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBUcmFuc2xvY29UZXN0aW5nTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHByb3ZpZGVUcmFuc2xvY28oe1xuICAgICAgICAgIGxvYWRlcjogVGVzdGluZ0xvYWRlcixcbiAgICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICAgIHByb2RNb2RlOiB0cnVlLFxuICAgICAgICAgICAgbWlzc2luZ0hhbmRsZXI6IHsgbG9nTWlzc2luZ0tleTogZmFsc2UgfSxcbiAgICAgICAgICAgIC4uLm9wdGlvbnMudHJhbnNsb2NvQ29uZmlnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogVFJBTlNMT0NPX1RFU1RfTEFOR1MsXG4gICAgICAgICAgdXNlVmFsdWU6IG9wdGlvbnMubGFuZ3MsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBUUkFOU0xPQ09fVEVTVF9PUFRJT05TLFxuICAgICAgICAgIHVzZVZhbHVlOiBvcHRpb25zLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgICAgICAgIHVzZUZhY3Rvcnk6IGluaXRUcmFuc2xvY29TZXJ2aWNlLFxuICAgICAgICAgIGRlcHM6IFtcbiAgICAgICAgICAgIFRyYW5zbG9jb1NlcnZpY2UsXG4gICAgICAgICAgICBUUkFOU0xPQ09fVEVTVF9MQU5HUyxcbiAgICAgICAgICAgIFRSQU5TTE9DT19URVNUX09QVElPTlMsXG4gICAgICAgICAgXSxcbiAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxufVxuIl19
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsb2NvLXRlc3RpbmcubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy90cmFuc2xvY28vc3JjL2xpYi90cmFuc2xvY28tdGVzdGluZy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGVBQWUsRUFDZixNQUFNLEVBQ04sVUFBVSxFQUNWLGNBQWMsRUFFZCxRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUl0QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBU3ZELE1BQU0sb0JBQW9CLEdBQUcsZUFBZSxDQUFDLElBQUksY0FBYyxDQUU3RCxvREFBb0QsQ0FBQyxDQUFDO0FBQ3hELE1BQU0sc0JBQXNCO0FBQzFCLGVBQWUsQ0FBQyxJQUFJLGNBQWMsQ0FDaEMsMENBQTBDLENBQzNDLENBQUM7QUFHSixNQUFNLE9BQU8sYUFBYTtJQUVnQjtJQUR4QyxZQUN3QyxLQUEyQjtRQUEzQixVQUFLLEdBQUwsS0FBSyxDQUFzQjtJQUNoRSxDQUFDO0lBRUosY0FBYyxDQUFDLElBQVk7UUFDekIsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzlCLENBQUM7dUdBUFUsYUFBYSxrQkFFZCxvQkFBb0I7MkdBRm5CLGFBQWE7OzJGQUFiLGFBQWE7a0JBRHpCLFVBQVU7OzBCQUdOLE1BQU07MkJBQUMsb0JBQW9COztBQVFoQyxNQUFNLFVBQVUsb0JBQW9CLENBQ2xDLE9BQXlCLEVBQ3pCLFFBQThCLEVBQUUsRUFDaEMsT0FBZ0M7SUFFaEMsTUFBTSxlQUFlLEdBQUcsR0FBRyxFQUFFLENBQzNCLE9BQU8sQ0FBQyxZQUFZO1FBQ2xCLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUNULE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQ2pFO1FBQ0gsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUV4QixPQUFPLGVBQWUsQ0FBQztBQUN6QixDQUFDO0FBS0QsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxNQUFNLENBQUMsT0FBTyxDQUNaLE9BQWdDO1FBRWhDLE9BQU87WUFDTCxRQUFRLEVBQUUsc0JBQXNCO1lBQ2hDLFNBQVMsRUFBRTtnQkFDVCxnQkFBZ0IsQ0FBQztvQkFDZixNQUFNLEVBQUUsYUFBYTtvQkFDckIsTUFBTSxFQUFFO3dCQUNOLFFBQVEsRUFBRSxJQUFJO3dCQUNkLGNBQWMsRUFBRSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUU7d0JBQ3hDLEdBQUcsT0FBTyxDQUFDLGVBQWU7cUJBQzNCO2lCQUNGLENBQUM7Z0JBQ0Y7b0JBQ0UsT0FBTyxFQUFFLG9CQUFvQjtvQkFDN0IsUUFBUSxFQUFFLE9BQU8sQ0FBQyxLQUFLO2lCQUN4QjtnQkFDRDtvQkFDRSxPQUFPLEVBQUUsc0JBQXNCO29CQUMvQixRQUFRLEVBQUUsT0FBTztpQkFDbEI7Z0JBQ0Q7b0JBQ0UsT0FBTyxFQUFFLGVBQWU7b0JBQ3hCLFVBQVUsRUFBRSxvQkFBb0I7b0JBQ2hDLElBQUksRUFBRTt3QkFDSixnQkFBZ0I7d0JBQ2hCLG9CQUFvQjt3QkFDcEIsc0JBQXNCO3FCQUN2QjtvQkFDRCxLQUFLLEVBQUUsSUFBSTtpQkFDWjthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7dUdBbkNVLHNCQUFzQjt3R0FBdEIsc0JBQXNCLFlBRnZCLGVBQWU7d0dBRWQsc0JBQXNCLFlBRnZCLGVBQWU7OzJGQUVkLHNCQUFzQjtrQkFIbEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxlQUFlLENBQUM7aUJBQzNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQVBQX0lOSVRJQUxJWkVSLFxuICBJbmplY3QsXG4gIEluamVjdGFibGUsXG4gIEluamVjdGlvblRva2VuLFxuICBNb2R1bGVXaXRoUHJvdmlkZXJzLFxuICBOZ01vZHVsZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBUcmFuc2xvY29Mb2FkZXIgfSBmcm9tICcuL3RyYW5zbG9jby5sb2FkZXInO1xuaW1wb3J0IHsgVHJhbnNsYXRpb24gfSBmcm9tICcuL3RyYW5zbG9jby50eXBlcyc7XG5pbXBvcnQgeyBUcmFuc2xvY29Nb2R1bGUgfSBmcm9tICcuL3RyYW5zbG9jby5tb2R1bGUnO1xuaW1wb3J0IHsgcHJvdmlkZVRyYW5zbG9jbyB9IGZyb20gJy4vdHJhbnNsb2NvLnByb3ZpZGVycyc7XG5pbXBvcnQgeyBUcmFuc2xvY29Db25maWcgfSBmcm9tICcuL3RyYW5zbG9jby5jb25maWcnO1xuaW1wb3J0IHsgVHJhbnNsb2NvU2VydmljZSB9IGZyb20gJy4vdHJhbnNsb2NvLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGFzaE1hcCB9IGZyb20gJy4vdXRpbHMvdHlwZS51dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNsb2NvVGVzdGluZ09wdGlvbnMge1xuICB0cmFuc2xvY29Db25maWc/OiBQYXJ0aWFsPFRyYW5zbG9jb0NvbmZpZz47XG4gIHByZWxvYWRMYW5ncz86IGJvb2xlYW47XG4gIGxhbmdzPzogSGFzaE1hcDxUcmFuc2xhdGlvbj47XG59XG5cbmNvbnN0IFRSQU5TTE9DT19URVNUX0xBTkdTID0gLyogQF9fUFVSRV9fICovIG5ldyBJbmplY3Rpb25Ub2tlbjxcbiAgSGFzaE1hcDxUcmFuc2xhdGlvbj5cbj4oJ1RSQU5TTE9DT19URVNUX0xBTkdTIC0gQXZhaWxhYmxlIHRlc3RpbmcgbGFuZ3VhZ2VzJyk7XG5jb25zdCBUUkFOU0xPQ09fVEVTVF9PUFRJT05TID1cbiAgLyogQF9fUFVSRV9fICovIG5ldyBJbmplY3Rpb25Ub2tlbjxUcmFuc2xvY29UZXN0aW5nT3B0aW9ucz4oXG4gICAgJ1RSQU5TTE9DT19URVNUX09QVElPTlMgLSBUZXN0aW5nIG9wdGlvbnMnLFxuICApO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVGVzdGluZ0xvYWRlciBpbXBsZW1lbnRzIFRyYW5zbG9jb0xvYWRlciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoVFJBTlNMT0NPX1RFU1RfTEFOR1MpIHByaXZhdGUgbGFuZ3M6IEhhc2hNYXA8VHJhbnNsYXRpb24+LFxuICApIHt9XG5cbiAgZ2V0VHJhbnNsYXRpb24obGFuZzogc3RyaW5nKTogT2JzZXJ2YWJsZTxUcmFuc2xhdGlvbj4gfCBQcm9taXNlPFRyYW5zbGF0aW9uPiB7XG4gICAgcmV0dXJuIG9mKHRoaXMubGFuZ3NbbGFuZ10pO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0VHJhbnNsb2NvU2VydmljZShcbiAgc2VydmljZTogVHJhbnNsb2NvU2VydmljZSxcbiAgbGFuZ3M6IEhhc2hNYXA8VHJhbnNsYXRpb24+ID0ge30sXG4gIG9wdGlvbnM6IFRyYW5zbG9jb1Rlc3RpbmdPcHRpb25zLFxuKSB7XG4gIGNvbnN0IHByZWxvYWRBbGxMYW5ncyA9ICgpID0+XG4gICAgb3B0aW9ucy5wcmVsb2FkTGFuZ3NcbiAgICAgID8gUHJvbWlzZS5hbGwoXG4gICAgICAgICAgT2JqZWN0LmtleXMobGFuZ3MpLm1hcCgobGFuZykgPT4gc2VydmljZS5sb2FkKGxhbmcpLnRvUHJvbWlzZSgpKSxcbiAgICAgICAgKVxuICAgICAgOiBQcm9taXNlLnJlc29sdmUoKTtcblxuICByZXR1cm4gcHJlbG9hZEFsbExhbmdzO1xufVxuXG5ATmdNb2R1bGUoe1xuICBleHBvcnRzOiBbVHJhbnNsb2NvTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgVHJhbnNsb2NvVGVzdGluZ01vZHVsZSB7XG4gIHN0YXRpYyBmb3JSb290KFxuICAgIG9wdGlvbnM6IFRyYW5zbG9jb1Rlc3RpbmdPcHRpb25zLFxuICApOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFRyYW5zbG9jb1Rlc3RpbmdNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IFRyYW5zbG9jb1Rlc3RpbmdNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZVRyYW5zbG9jbyh7XG4gICAgICAgICAgbG9hZGVyOiBUZXN0aW5nTG9hZGVyLFxuICAgICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgICAgcHJvZE1vZGU6IHRydWUsXG4gICAgICAgICAgICBtaXNzaW5nSGFuZGxlcjogeyBsb2dNaXNzaW5nS2V5OiBmYWxzZSB9LFxuICAgICAgICAgICAgLi4ub3B0aW9ucy50cmFuc2xvY29Db25maWcsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBUUkFOU0xPQ09fVEVTVF9MQU5HUyxcbiAgICAgICAgICB1c2VWYWx1ZTogb3B0aW9ucy5sYW5ncyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IFRSQU5TTE9DT19URVNUX09QVElPTlMsXG4gICAgICAgICAgdXNlVmFsdWU6IG9wdGlvbnMsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXG4gICAgICAgICAgdXNlRmFjdG9yeTogaW5pdFRyYW5zbG9jb1NlcnZpY2UsXG4gICAgICAgICAgZGVwczogW1xuICAgICAgICAgICAgVHJhbnNsb2NvU2VydmljZSxcbiAgICAgICAgICAgIFRSQU5TTE9DT19URVNUX0xBTkdTLFxuICAgICAgICAgICAgVFJBTlNMT0NPX1RFU1RfT1BUSU9OUyxcbiAgICAgICAgICBdLFxuICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -1,5 +1,6 @@
1
1
  import { InjectionToken } from '@angular/core';
2
- export const TRANSLOCO_CONFIG = new InjectionToken(ngDevMode ? 'TRANSLOCO_CONFIG' : '', {
2
+ export const TRANSLOCO_CONFIG =
3
+ /* @__PURE__ */ new InjectionToken(ngDevMode ? 'TRANSLOCO_CONFIG' : '', {
3
4
  providedIn: 'root',
4
5
  factory: () => defaultConfig,
5
6
  });
@@ -21,6 +22,7 @@ export const defaultConfig = {
21
22
  interpolation: ['{{', '}}'],
22
23
  scopes: {
23
24
  keepCasing: false,
25
+ autoPrefixKeys: true,
24
26
  },
25
27
  };
26
28
  export function translocoConfig(config = {}) {
@@ -41,4 +43,4 @@ export function translocoConfig(config = {}) {
41
43
  },
42
44
  };
43
45
  }
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsb2NvLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvdHJhbnNsb2NvL3NyYy9saWIvdHJhbnNsb2NvLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBeUIvQyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLGNBQWMsQ0FDaEQsU0FBUyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUNuQztJQUNFLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxhQUFhO0NBQzdCLENBQ0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBb0I7SUFDNUMsV0FBVyxFQUFFLElBQUk7SUFDakIsb0JBQW9CLEVBQUUsS0FBSztJQUMzQixRQUFRLEVBQUUsS0FBSztJQUNmLGFBQWEsRUFBRSxDQUFDO0lBQ2hCLFlBQVksRUFBRSxFQUFFO0lBQ2hCLGNBQWMsRUFBRSxFQUFFO0lBQ2xCLGNBQWMsRUFBRTtRQUNkLGFBQWEsRUFBRSxJQUFJO1FBQ25CLHNCQUFzQixFQUFFLEtBQUs7UUFDN0IsVUFBVSxFQUFFLEtBQUs7S0FDbEI7SUFDRCxPQUFPLEVBQUU7UUFDUCxHQUFHLEVBQUUsS0FBSztLQUNYO0lBQ0QsYUFBYSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztJQUMzQixNQUFNLEVBQUU7UUFDTixVQUFVLEVBQUUsS0FBSztLQUNsQjtDQUNGLENBQUM7QUFXRixNQUFNLFVBQVUsZUFBZSxDQUM3QixTQUFpQyxFQUFFO0lBRW5DLE9BQU87UUFDTCxHQUFHLGFBQWE7UUFDaEIsR0FBRyxNQUFNO1FBQ1QsY0FBYyxFQUFFO1lBQ2QsR0FBRyxhQUFhLENBQUMsY0FBYztZQUMvQixHQUFHLE1BQU0sQ0FBQyxjQUFjO1NBQ3pCO1FBQ0QsT0FBTyxFQUFFO1lBQ1AsR0FBRyxhQUFhLENBQUMsT0FBTztZQUN4QixHQUFHLE1BQU0sQ0FBQyxPQUFPO1NBQ2xCO1FBQ0QsTUFBTSxFQUFFO1lBQ04sR0FBRyxhQUFhLENBQUMsTUFBTTtZQUN2QixHQUFHLE1BQU0sQ0FBQyxNQUFNO1NBQ2pCO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBdmFpbGFibGVMYW5ncyB9IGZyb20gJy4vdHJhbnNsb2NvLnR5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2xvY29Db25maWcge1xuICBkZWZhdWx0TGFuZzogc3RyaW5nO1xuICByZVJlbmRlck9uTGFuZ0NoYW5nZTogYm9vbGVhbjtcbiAgcHJvZE1vZGU6IGJvb2xlYW47XG4gIGZhbGxiYWNrTGFuZz86IHN0cmluZyB8IHN0cmluZ1tdO1xuICBmYWlsZWRSZXRyaWVzOiBudW1iZXI7XG4gIGF2YWlsYWJsZUxhbmdzOiBBdmFpbGFibGVMYW5ncztcbiAgZmxhdHRlbjoge1xuICAgIGFvdDogYm9vbGVhbjtcbiAgfTtcbiAgbWlzc2luZ0hhbmRsZXI6IHtcbiAgICBsb2dNaXNzaW5nS2V5OiBib29sZWFuO1xuICAgIHVzZUZhbGxiYWNrVHJhbnNsYXRpb246IGJvb2xlYW47XG4gICAgYWxsb3dFbXB0eTogYm9vbGVhbjtcbiAgfTtcbiAgaW50ZXJwb2xhdGlvbjogW3N0cmluZywgc3RyaW5nXTtcbiAgc2NvcGVzOiB7XG4gICAga2VlcENhc2luZz86IGJvb2xlYW47XG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBUUkFOU0xPQ09fQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPFRyYW5zbG9jb0NvbmZpZz4oXG4gIG5nRGV2TW9kZSA/ICdUUkFOU0xPQ09fQ09ORklHJyA6ICcnLFxuICB7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICAgIGZhY3Rvcnk6ICgpID0+IGRlZmF1bHRDb25maWcsXG4gIH0sXG4pO1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdENvbmZpZzogVHJhbnNsb2NvQ29uZmlnID0ge1xuICBkZWZhdWx0TGFuZzogJ2VuJyxcbiAgcmVSZW5kZXJPbkxhbmdDaGFuZ2U6IGZhbHNlLFxuICBwcm9kTW9kZTogZmFsc2UsXG4gIGZhaWxlZFJldHJpZXM6IDIsXG4gIGZhbGxiYWNrTGFuZzogW10sXG4gIGF2YWlsYWJsZUxhbmdzOiBbXSxcbiAgbWlzc2luZ0hhbmRsZXI6IHtcbiAgICBsb2dNaXNzaW5nS2V5OiB0cnVlLFxuICAgIHVzZUZhbGxiYWNrVHJhbnNsYXRpb246IGZhbHNlLFxuICAgIGFsbG93RW1wdHk6IGZhbHNlLFxuICB9LFxuICBmbGF0dGVuOiB7XG4gICAgYW90OiBmYWxzZSxcbiAgfSxcbiAgaW50ZXJwb2xhdGlvbjogWyd7eycsICd9fSddLFxuICBzY29wZXM6IHtcbiAgICBrZWVwQ2FzaW5nOiBmYWxzZSxcbiAgfSxcbn07XG5cbnR5cGUgRGVlcFBhcnRpYWw8VD4gPVxuICBUIGV4dGVuZHMgQXJyYXk8YW55PlxuICAgID8gVFxuICAgIDogVCBleHRlbmRzIG9iamVjdFxuICAgICAgPyB7IFtQIGluIGtleW9mIFRdPzogRGVlcFBhcnRpYWw8VFtQXT4gfVxuICAgICAgOiBUO1xuXG5leHBvcnQgdHlwZSBQYXJ0aWFsVHJhbnNsb2NvQ29uZmlnID0gRGVlcFBhcnRpYWw8VHJhbnNsb2NvQ29uZmlnPjtcblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zbG9jb0NvbmZpZyhcbiAgY29uZmlnOiBQYXJ0aWFsVHJhbnNsb2NvQ29uZmlnID0ge30sXG4pOiBUcmFuc2xvY29Db25maWcge1xuICByZXR1cm4ge1xuICAgIC4uLmRlZmF1bHRDb25maWcsXG4gICAgLi4uY29uZmlnLFxuICAgIG1pc3NpbmdIYW5kbGVyOiB7XG4gICAgICAuLi5kZWZhdWx0Q29uZmlnLm1pc3NpbmdIYW5kbGVyLFxuICAgICAgLi4uY29uZmlnLm1pc3NpbmdIYW5kbGVyLFxuICAgIH0sXG4gICAgZmxhdHRlbjoge1xuICAgICAgLi4uZGVmYXVsdENvbmZpZy5mbGF0dGVuLFxuICAgICAgLi4uY29uZmlnLmZsYXR0ZW4sXG4gICAgfSxcbiAgICBzY29wZXM6IHtcbiAgICAgIC4uLmRlZmF1bHRDb25maWcuc2NvcGVzLFxuICAgICAgLi4uY29uZmlnLnNjb3BlcyxcbiAgICB9LFxuICB9O1xufVxuIl19
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsb2NvLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvdHJhbnNsb2NvL3NyYy9saWIvdHJhbnNsb2NvLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBMEIvQyxNQUFNLENBQUMsTUFBTSxnQkFBZ0I7QUFDM0IsZUFBZSxDQUFDLElBQUksY0FBYyxDQUNoQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQ25DO0lBQ0UsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLGFBQWE7Q0FDN0IsQ0FDRixDQUFDO0FBRUosTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFvQjtJQUM1QyxXQUFXLEVBQUUsSUFBSTtJQUNqQixvQkFBb0IsRUFBRSxLQUFLO0lBQzNCLFFBQVEsRUFBRSxLQUFLO0lBQ2YsYUFBYSxFQUFFLENBQUM7SUFDaEIsWUFBWSxFQUFFLEVBQUU7SUFDaEIsY0FBYyxFQUFFLEVBQUU7SUFDbEIsY0FBYyxFQUFFO1FBQ2QsYUFBYSxFQUFFLElBQUk7UUFDbkIsc0JBQXNCLEVBQUUsS0FBSztRQUM3QixVQUFVLEVBQUUsS0FBSztLQUNsQjtJQUNELE9BQU8sRUFBRTtRQUNQLEdBQUcsRUFBRSxLQUFLO0tBQ1g7SUFDRCxhQUFhLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO0lBQzNCLE1BQU0sRUFBRTtRQUNOLFVBQVUsRUFBRSxLQUFLO1FBQ2pCLGNBQWMsRUFBRSxJQUFJO0tBQ3JCO0NBQ0YsQ0FBQztBQVdGLE1BQU0sVUFBVSxlQUFlLENBQzdCLFNBQWlDLEVBQUU7SUFFbkMsT0FBTztRQUNMLEdBQUcsYUFBYTtRQUNoQixHQUFHLE1BQU07UUFDVCxjQUFjLEVBQUU7WUFDZCxHQUFHLGFBQWEsQ0FBQyxjQUFjO1lBQy9CLEdBQUcsTUFBTSxDQUFDLGNBQWM7U0FDekI7UUFDRCxPQUFPLEVBQUU7WUFDUCxHQUFHLGFBQWEsQ0FBQyxPQUFPO1lBQ3hCLEdBQUcsTUFBTSxDQUFDLE9BQU87U0FDbEI7UUFDRCxNQUFNLEVBQUU7WUFDTixHQUFHLGFBQWEsQ0FBQyxNQUFNO1lBQ3ZCLEdBQUcsTUFBTSxDQUFDLE1BQU07U0FDakI7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEF2YWlsYWJsZUxhbmdzIH0gZnJvbSAnLi90cmFuc2xvY28udHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zbG9jb0NvbmZpZyB7XG4gIGRlZmF1bHRMYW5nOiBzdHJpbmc7XG4gIHJlUmVuZGVyT25MYW5nQ2hhbmdlOiBib29sZWFuO1xuICBwcm9kTW9kZTogYm9vbGVhbjtcbiAgZmFsbGJhY2tMYW5nPzogc3RyaW5nIHwgc3RyaW5nW107XG4gIGZhaWxlZFJldHJpZXM6IG51bWJlcjtcbiAgYXZhaWxhYmxlTGFuZ3M6IEF2YWlsYWJsZUxhbmdzO1xuICBmbGF0dGVuOiB7XG4gICAgYW90OiBib29sZWFuO1xuICB9O1xuICBtaXNzaW5nSGFuZGxlcjoge1xuICAgIGxvZ01pc3NpbmdLZXk6IGJvb2xlYW47XG4gICAgdXNlRmFsbGJhY2tUcmFuc2xhdGlvbjogYm9vbGVhbjtcbiAgICBhbGxvd0VtcHR5OiBib29sZWFuO1xuICB9O1xuICBpbnRlcnBvbGF0aW9uOiBbc3RyaW5nLCBzdHJpbmddO1xuICBzY29wZXM6IHtcbiAgICBrZWVwQ2FzaW5nPzogYm9vbGVhbjtcbiAgICBhdXRvUHJlZml4S2V5cz86IGJvb2xlYW47XG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBUUkFOU0xPQ09fQ09ORklHID1cbiAgLyogQF9fUFVSRV9fICovIG5ldyBJbmplY3Rpb25Ub2tlbjxUcmFuc2xvY29Db25maWc+KFxuICAgIG5nRGV2TW9kZSA/ICdUUkFOU0xPQ09fQ09ORklHJyA6ICcnLFxuICAgIHtcbiAgICAgIHByb3ZpZGVkSW46ICdyb290JyxcbiAgICAgIGZhY3Rvcnk6ICgpID0+IGRlZmF1bHRDb25maWcsXG4gICAgfSxcbiAgKTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRDb25maWc6IFRyYW5zbG9jb0NvbmZpZyA9IHtcbiAgZGVmYXVsdExhbmc6ICdlbicsXG4gIHJlUmVuZGVyT25MYW5nQ2hhbmdlOiBmYWxzZSxcbiAgcHJvZE1vZGU6IGZhbHNlLFxuICBmYWlsZWRSZXRyaWVzOiAyLFxuICBmYWxsYmFja0xhbmc6IFtdLFxuICBhdmFpbGFibGVMYW5nczogW10sXG4gIG1pc3NpbmdIYW5kbGVyOiB7XG4gICAgbG9nTWlzc2luZ0tleTogdHJ1ZSxcbiAgICB1c2VGYWxsYmFja1RyYW5zbGF0aW9uOiBmYWxzZSxcbiAgICBhbGxvd0VtcHR5OiBmYWxzZSxcbiAgfSxcbiAgZmxhdHRlbjoge1xuICAgIGFvdDogZmFsc2UsXG4gIH0sXG4gIGludGVycG9sYXRpb246IFsne3snLCAnfX0nXSxcbiAgc2NvcGVzOiB7XG4gICAga2VlcENhc2luZzogZmFsc2UsXG4gICAgYXV0b1ByZWZpeEtleXM6IHRydWUsXG4gIH0sXG59O1xuXG50eXBlIERlZXBQYXJ0aWFsPFQ+ID1cbiAgVCBleHRlbmRzIEFycmF5PGFueT5cbiAgICA/IFRcbiAgICA6IFQgZXh0ZW5kcyBvYmplY3RcbiAgICAgID8geyBbUCBpbiBrZXlvZiBUXT86IERlZXBQYXJ0aWFsPFRbUF0+IH1cbiAgICAgIDogVDtcblxuZXhwb3J0IHR5cGUgUGFydGlhbFRyYW5zbG9jb0NvbmZpZyA9IERlZXBQYXJ0aWFsPFRyYW5zbG9jb0NvbmZpZz47XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2xvY29Db25maWcoXG4gIGNvbmZpZzogUGFydGlhbFRyYW5zbG9jb0NvbmZpZyA9IHt9LFxuKTogVHJhbnNsb2NvQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5kZWZhdWx0Q29uZmlnLFxuICAgIC4uLmNvbmZpZyxcbiAgICBtaXNzaW5nSGFuZGxlcjoge1xuICAgICAgLi4uZGVmYXVsdENvbmZpZy5taXNzaW5nSGFuZGxlcixcbiAgICAgIC4uLmNvbmZpZy5taXNzaW5nSGFuZGxlcixcbiAgICB9LFxuICAgIGZsYXR0ZW46IHtcbiAgICAgIC4uLmRlZmF1bHRDb25maWcuZmxhdHRlbixcbiAgICAgIC4uLmNvbmZpZy5mbGF0dGVuLFxuICAgIH0sXG4gICAgc2NvcGVzOiB7XG4gICAgICAuLi5kZWZhdWx0Q29uZmlnLnNjb3BlcyxcbiAgICAgIC4uLmNvbmZpZy5zY29wZXMsXG4gICAgfSxcbiAgfTtcbn1cbiJdfQ==
@@ -1,6 +1,7 @@
1
1
  import { Injectable, InjectionToken } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
- export const TRANSLOCO_INTERCEPTOR = new InjectionToken(ngDevMode ? 'TRANSLOCO_INTERCEPTOR' : '');
3
+ export const TRANSLOCO_INTERCEPTOR =
4
+ /* @__PURE__ */ new InjectionToken(ngDevMode ? 'TRANSLOCO_INTERCEPTOR' : '');
4
5
  export class DefaultInterceptor {
5
6
  preSaveTranslation(translation) {
6
7
  return translation;
@@ -14,4 +15,4 @@ export class DefaultInterceptor {
14
15
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DefaultInterceptor, decorators: [{
15
16
  type: Injectable
16
17
  }] });
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsb2NvLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy90cmFuc2xvY28vc3JjL2xpYi90cmFuc2xvY28uaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSTNELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLElBQUksY0FBYyxDQUNyRCxTQUFTLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ3pDLENBQUM7QUFTRixNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLGtCQUFrQixDQUFDLFdBQXdCO1FBQ3pDLE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxDQUFTLEVBQUUsS0FBYTtRQUM1QyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7dUdBUFUsa0JBQWtCOzJHQUFsQixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBUcmFuc2xhdGlvbiB9IGZyb20gJy4vdHJhbnNsb2NvLnR5cGVzJztcblxuZXhwb3J0IGNvbnN0IFRSQU5TTE9DT19JTlRFUkNFUFRPUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxUcmFuc2xvY29JbnRlcmNlcHRvcj4oXG4gIG5nRGV2TW9kZSA/ICdUUkFOU0xPQ09fSU5URVJDRVBUT1InIDogJycsXG4pO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zbG9jb0ludGVyY2VwdG9yIHtcbiAgcHJlU2F2ZVRyYW5zbGF0aW9uKHRyYW5zbGF0aW9uOiBUcmFuc2xhdGlvbiwgbGFuZzogc3RyaW5nKTogVHJhbnNsYXRpb247XG5cbiAgcHJlU2F2ZVRyYW5zbGF0aW9uS2V5KGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBsYW5nOiBzdHJpbmcpOiBzdHJpbmc7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEZWZhdWx0SW50ZXJjZXB0b3IgaW1wbGVtZW50cyBUcmFuc2xvY29JbnRlcmNlcHRvciB7XG4gIHByZVNhdmVUcmFuc2xhdGlvbih0cmFuc2xhdGlvbjogVHJhbnNsYXRpb24pOiBUcmFuc2xhdGlvbiB7XG4gICAgcmV0dXJuIHRyYW5zbGF0aW9uO1xuICB9XG5cbiAgcHJlU2F2ZVRyYW5zbGF0aW9uS2V5KF86IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59XG4iXX0=
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsb2NvLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy90cmFuc2xvY28vc3JjL2xpYi90cmFuc2xvY28uaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSTNELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQjtBQUNoQyxlQUFlLENBQUMsSUFBSSxjQUFjLENBQ2hDLFNBQVMsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDekMsQ0FBQztBQVNKLE1BQU0sT0FBTyxrQkFBa0I7SUFDN0Isa0JBQWtCLENBQUMsV0FBd0I7UUFDekMsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVELHFCQUFxQixDQUFDLENBQVMsRUFBRSxLQUFhO1FBQzVDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzt1R0FQVSxrQkFBa0I7MkdBQWxCLGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFRyYW5zbGF0aW9uIH0gZnJvbSAnLi90cmFuc2xvY28udHlwZXMnO1xuXG5leHBvcnQgY29uc3QgVFJBTlNMT0NPX0lOVEVSQ0VQVE9SID1cbiAgLyogQF9fUFVSRV9fICovIG5ldyBJbmplY3Rpb25Ub2tlbjxUcmFuc2xvY29JbnRlcmNlcHRvcj4oXG4gICAgbmdEZXZNb2RlID8gJ1RSQU5TTE9DT19JTlRFUkNFUFRPUicgOiAnJyxcbiAgKTtcblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2xvY29JbnRlcmNlcHRvciB7XG4gIHByZVNhdmVUcmFuc2xhdGlvbih0cmFuc2xhdGlvbjogVHJhbnNsYXRpb24sIGxhbmc6IHN0cmluZyk6IFRyYW5zbGF0aW9uO1xuXG4gIHByZVNhdmVUcmFuc2xhdGlvbktleShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZywgbGFuZzogc3RyaW5nKTogc3RyaW5nO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGVmYXVsdEludGVyY2VwdG9yIGltcGxlbWVudHMgVHJhbnNsb2NvSW50ZXJjZXB0b3Ige1xuICBwcmVTYXZlVHJhbnNsYXRpb24odHJhbnNsYXRpb246IFRyYW5zbGF0aW9uKTogVHJhbnNsYXRpb24ge1xuICAgIHJldHVybiB0cmFuc2xhdGlvbjtcbiAgfVxuXG4gIHByZVNhdmVUcmFuc2xhdGlvbktleShfOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIl19
@@ -9,5 +9,6 @@ export class DefaultLoader {
9
9
  return of(this.translations.get(lang) || {});
10
10
  }
11
11
  }
12
- export const TRANSLOCO_LOADER = new InjectionToken(ngDevMode ? 'TRANSLOCO_LOADER' : '');
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsb2NvLmxvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvdHJhbnNsb2NvL3NyYy9saWIvdHJhbnNsb2NvLmxvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFldEMsTUFBTSxPQUFPLGFBQWE7SUFDSjtJQUFwQixZQUFvQixZQUFzQztRQUF0QyxpQkFBWSxHQUFaLFlBQVksQ0FBMEI7SUFBRyxDQUFDO0lBRTlELGNBQWMsQ0FBQyxJQUFZO1FBQ3pCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7Q0FDRjtBQUVELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLElBQUksY0FBYyxDQUNoRCxTQUFTLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ3BDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgVHJhbnNsYXRpb24gfSBmcm9tICcuL3RyYW5zbG9jby50eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNsb2NvTG9hZGVyIHtcbiAgZ2V0VHJhbnNsYXRpb24oXG4gICAgbGFuZzogc3RyaW5nLFxuICAgIGRhdGE/OiBUcmFuc2xvY29Mb2FkZXJEYXRhLFxuICApOiBPYnNlcnZhYmxlPFRyYW5zbGF0aW9uPiB8IFByb21pc2U8VHJhbnNsYXRpb24+O1xufVxuXG5leHBvcnQgdHlwZSBUcmFuc2xvY29Mb2FkZXJEYXRhID0ge1xuICBzY29wZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IGNsYXNzIERlZmF1bHRMb2FkZXIgaW1wbGVtZW50cyBUcmFuc2xvY29Mb2FkZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRyYW5zbGF0aW9uczogTWFwPHN0cmluZywgVHJhbnNsYXRpb24+KSB7fVxuXG4gIGdldFRyYW5zbGF0aW9uKGxhbmc6IHN0cmluZyk6IE9ic2VydmFibGU8VHJhbnNsYXRpb24+IHtcbiAgICByZXR1cm4gb2YodGhpcy50cmFuc2xhdGlvbnMuZ2V0KGxhbmcpIHx8IHt9KTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgVFJBTlNMT0NPX0xPQURFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxUcmFuc2xvY29Mb2FkZXI+KFxuICBuZ0Rldk1vZGUgPyAnVFJBTlNMT0NPX0xPQURFUicgOiAnJyxcbik7XG4iXX0=
12
+ export const TRANSLOCO_LOADER =
13
+ /* @__PURE__ */ new InjectionToken(ngDevMode ? 'TRANSLOCO_LOADER' : '');
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsb2NvLmxvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvdHJhbnNsb2NvL3NyYy9saWIvdHJhbnNsb2NvLmxvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFldEMsTUFBTSxPQUFPLGFBQWE7SUFDSjtJQUFwQixZQUFvQixZQUFzQztRQUF0QyxpQkFBWSxHQUFaLFlBQVksQ0FBMEI7SUFBRyxDQUFDO0lBRTlELGNBQWMsQ0FBQyxJQUFZO1FBQ3pCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7Q0FDRjtBQUVELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQjtBQUMzQixlQUFlLENBQUMsSUFBSSxjQUFjLENBQ2hDLFNBQVMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDcEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBUcmFuc2xhdGlvbiB9IGZyb20gJy4vdHJhbnNsb2NvLnR5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2xvY29Mb2FkZXIge1xuICBnZXRUcmFuc2xhdGlvbihcbiAgICBsYW5nOiBzdHJpbmcsXG4gICAgZGF0YT86IFRyYW5zbG9jb0xvYWRlckRhdGEsXG4gICk6IE9ic2VydmFibGU8VHJhbnNsYXRpb24+IHwgUHJvbWlzZTxUcmFuc2xhdGlvbj47XG59XG5cbmV4cG9ydCB0eXBlIFRyYW5zbG9jb0xvYWRlckRhdGEgPSB7XG4gIHNjb3BlOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgY2xhc3MgRGVmYXVsdExvYWRlciBpbXBsZW1lbnRzIFRyYW5zbG9jb0xvYWRlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdHJhbnNsYXRpb25zOiBNYXA8c3RyaW5nLCBUcmFuc2xhdGlvbj4pIHt9XG5cbiAgZ2V0VHJhbnNsYXRpb24obGFuZzogc3RyaW5nKTogT2JzZXJ2YWJsZTxUcmFuc2xhdGlvbj4ge1xuICAgIHJldHVybiBvZih0aGlzLnRyYW5zbGF0aW9ucy5nZXQobGFuZykgfHwge30pO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBUUkFOU0xPQ09fTE9BREVSID1cbiAgLyogQF9fUFVSRV9fICovIG5ldyBJbmplY3Rpb25Ub2tlbjxUcmFuc2xvY29Mb2FkZXI+KFxuICAgIG5nRGV2TW9kZSA/ICdUUkFOU0xPQ09fTE9BREVSJyA6ICcnLFxuICApO1xuIl19
@@ -176,9 +176,9 @@ export class TranslocoService {
176
176
  return key;
177
177
  const { scope, resolveLang } = this.resolveLangAndScope(lang);
178
178
  if (Array.isArray(key)) {
179
- return key.map((k) => this.translate(scope ? `${scope}.${k}` : k, params, resolveLang));
179
+ return key.map((k) => this.translate(this.config.scopes.autoPrefixKeys && scope ? `${scope}.${k}` : k, params, resolveLang));
180
180
  }
181
- key = scope ? `${scope}.${key}` : key;
181
+ key = this.config.scopes.autoPrefixKeys && scope ? `${scope}.${key}` : key;
182
182
  const translation = this.getTranslation(resolveLang);
183
183
  const value = translation[key];
184
184
  if (!value) {
@@ -240,10 +240,11 @@ export class TranslocoService {
240
240
  if (isString(key) || Array.isArray(key)) {
241
241
  const { resolveLang, scope } = this.resolveLangAndScope(lang);
242
242
  if (Array.isArray(key)) {
243
- return key.map((k) => this.translateObject(scope ? `${scope}.${k}` : k, params, resolveLang));
243
+ return key.map((k) => this.translateObject(this.config.scopes.autoPrefixKeys && scope ? `${scope}.${k}` : k, params, resolveLang));
244
244
  }
245
245
  const translation = this.getTranslation(resolveLang);
246
- key = scope ? `${scope}.${key}` : key;
246
+ key =
247
+ this.config.scopes.autoPrefixKeys && scope ? `${scope}.${key}` : key;
247
248
  const value = unflatten(this.getObjectByKey(translation, key));
248
249
  /* If an empty object was returned we want to try and translate the key as a string and not an object */
249
250
  return isEmpty(value)
@@ -579,4 +580,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
579
580
  type: Inject,
580
581
  args: [TRANSLOCO_FALLBACK_STRATEGY]
581
582
  }] }] });
582
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsb2NvLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3RyYW5zbG9jby9zcmMvbGliL3RyYW5zbG9jby5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxVQUFVLEVBQ1YsTUFBTSxFQUNOLE1BQU0sRUFDTixVQUFVLEVBQ1YsUUFBUSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxlQUFlLEVBQ2YsVUFBVSxFQUNWLGFBQWEsRUFDYixLQUFLLEVBQ0wsUUFBUSxFQUNSLElBQUksRUFDSixHQUFHLEVBRUgsRUFBRSxFQUNGLEtBQUssRUFDTCxXQUFXLEVBQ1gsT0FBTyxFQUNQLFNBQVMsRUFDVCxHQUFHLEdBQ0osTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdFLE9BQU8sRUFDTCxhQUFhLEVBQ2IsZ0JBQWdCLEdBRWpCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUNMLG9CQUFvQixHQUVyQixNQUFNLHdCQUF3QixDQUFDO0FBYWhDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBbUIsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RSxPQUFPLEVBQ0wseUJBQXlCLEdBRzFCLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUNMLHFCQUFxQixHQUV0QixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFDTCwyQkFBMkIsR0FFNUIsTUFBTSwrQkFBK0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV4RCxPQUFPLEVBQ0wsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLG1CQUFtQixHQUNwQixNQUFNLHFCQUFxQixDQUFDOztBQUU3QixJQUFJLE9BQXlCLENBQUM7QUFFOUIsTUFBTSxVQUFVLFNBQVMsQ0FDdkIsR0FBb0IsRUFDcEIsU0FBa0IsRUFBRSxFQUNwQixJQUFhO0lBRWIsT0FBTyxPQUFPLENBQUMsU0FBUyxDQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDakQsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBQzdCLEdBQW9CLEVBQ3BCLFNBQWtCLEVBQUUsRUFDcEIsSUFBYTtJQUViLE9BQU8sT0FBTyxDQUFDLGVBQWUsQ0FBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3ZELENBQUM7QUFHRCxNQUFNLE9BQU8sZ0JBQWdCO0lBcUJxQjtJQUNSO0lBRTlCO0lBQytCO0lBRy9CO0lBM0JWLFlBQVksQ0FBcUI7SUFFekIsWUFBWSxHQUFHLElBQUksR0FBRyxFQUF1QixDQUFDO0lBQzlDLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBbUMsQ0FBQztJQUNuRCxpQkFBaUIsQ0FBcUI7SUFDdEMsV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUNqQixjQUFjLEdBQW1CLEVBQUUsQ0FBQztJQUNwQyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7SUFDOUIsSUFBSSxDQUEwQjtJQUM5QixXQUFXLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUNoQyxNQUFNLEdBQUcsSUFBSSxPQUFPLEVBQW1CLENBQUM7SUFFaEQsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUIsTUFBTSxDQUViO0lBRU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUV4QyxZQUNnRCxNQUF1QixFQUMvQixNQUEyQixFQUV6RCxjQUF1QyxFQUNSLFdBQWlDLEVBQzlDLFVBQTJCLEVBRTdDLGdCQUEyQztRQVBMLFdBQU0sR0FBTixNQUFNLENBQWlCO1FBQy9CLFdBQU0sR0FBTixNQUFNLENBQXFCO1FBRXpELG1CQUFjLEdBQWQsY0FBYyxDQUF5QjtRQUNSLGdCQUFXLEdBQVgsV0FBVyxDQUFzQjtRQUdoRSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQTJCO1FBRW5ELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDckQsQ0FBQztRQUNELE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDZixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBRXJELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsb0NBQW9DLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksZUFBZSxDQUFTLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELGtFQUFrRTtRQUNsRSw0REFBNEQ7UUFDNUQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRTdDOztXQUVHO1FBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUMzQixJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssd0JBQXdCLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUN4RCxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDekMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzdCLGtGQUFrRjtZQUNsRiw4Q0FBOEM7WUFDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3ZCLHdGQUF3RjtZQUN4RiwwRkFBMEY7WUFDMUYsd0RBQXdEO1lBQ3hELElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsY0FBYyxDQUFDLElBQVk7UUFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDMUIsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELGFBQWEsQ0FBQyxJQUFZO1FBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDZixJQUFJLEVBQUUsYUFBYTtZQUNuQixPQUFPLEVBQUUsZUFBZSxDQUFDLElBQUksQ0FBQztTQUMvQixDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUFxQjtRQUNyQyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFJLENBQUMsSUFBWSxFQUFFLFVBQXVCLEVBQUU7UUFDMUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEMsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxJQUFJLGVBRUgsQ0FBQztRQUNGLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekMsSUFBSSxLQUFhLENBQUM7UUFDbEIsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBRUQsTUFBTSxjQUFjLEdBQUc7WUFDckIsSUFBSTtZQUNKLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTTtZQUN2QixZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQVk7WUFDbEMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7U0FDOUMsQ0FBQztRQUVGLElBQUksSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDdEMsb0VBQW9FO1lBQ3BFLE1BQU0sUUFBUSxHQUFHLE9BQU87Z0JBQ3RCLENBQUMsQ0FBQyxHQUFHLEtBQU0sSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7Z0JBQ3ZDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7WUFFM0IsTUFBTSxPQUFPLEdBQUcsbUJBQW1CLENBQUM7Z0JBQ2xDLEdBQUcsY0FBYztnQkFDakIsWUFBWSxFQUFFLFFBQVM7YUFDeEIsQ0FBQyxDQUFDO1lBQ0gsZUFBZSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0QyxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUM3QyxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pDLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxlQUFlLENBQUMsSUFBSSxDQUNoQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFDaEMsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDbEIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQy9CLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDMUMscUVBQXFFO29CQUNyRSxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFLENBQUM7d0JBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ2pDLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN4QyxDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDMUIsT0FBTyxDQUFDLEtBQUssQ0FBQywrQkFBK0IsSUFBSSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDL0QsQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLEVBQ0YsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FDcEMsQ0FBQztRQUVGLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUU1QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsU0FBUyxDQUNQLEdBQW9CLEVBQ3BCLFNBQWtCLEVBQUUsRUFDcEIsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUU7UUFFM0IsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPLEdBQVUsQ0FBQztRQUU1QixNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU5RCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN2QixPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNuQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQzFELENBQUM7UUFDWCxDQUFDO1FBRUQsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUV0QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUvQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3BELENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO1lBQzNCLEtBQUs7WUFDTCxNQUFNO1lBQ04sV0FBVztZQUNYLEdBQUc7U0FDSixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNILGVBQWUsQ0FDYixHQUFvQixFQUNwQixNQUFnQixFQUNoQixJQUFpRCxFQUNqRCxTQUFTLEdBQUcsS0FBSztRQUVqQixJQUFJLFlBQXNDLENBQUM7UUFDM0MsTUFBTSxJQUFJLEdBQUcsQ0FBQyxJQUFZLEVBQUUsT0FBcUIsRUFBRSxFQUFFLENBQ25ELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDM0IsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUNQLFNBQVM7WUFDUCxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQztZQUN6QyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUN0QyxDQUNGLENBQUM7UUFDSixJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2hCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFFRCxJQUFJLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDNUMsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN4Qix1QkFBdUI7WUFDdkIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDO1lBQzNCLElBQUksR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDO1lBQzNCLFlBQVksR0FBRyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pFLENBQUM7UUFFRCxJQUFJLEdBQUcsSUFBYyxDQUFDO1FBQ3RCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDcEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsQ0FBQztRQUNELGVBQWU7UUFDZixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbkIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDM0IsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQ2hFLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNLLGVBQWUsQ0FBQyxJQUFZO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFzQkQsZUFBZSxDQUNiLEdBQTBCLEVBQzFCLFNBQXlCLEVBQUUsRUFDM0IsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUU7UUFFM0IsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN2QixPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNuQixJQUFJLENBQUMsZUFBZSxDQUNsQixLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQzNCLE1BQU8sRUFDUCxXQUFXLENBQ1osQ0FDSyxDQUFDO1lBQ1gsQ0FBQztZQUVELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDckQsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUV0QyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMvRCx3R0FBd0c7WUFDeEcsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDO2dCQUNuQixDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsTUFBTyxFQUFFLElBQUksQ0FBQztnQkFDcEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFPLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDMUUsQ0FBQztRQUVELE1BQU0sWUFBWSxHQUFRLEVBQUUsQ0FBQztRQUM3QixLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ25ELFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUVELE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFzQkQscUJBQXFCLENBQ25CLEdBQTBCLEVBQzFCLE1BQXVCLEVBQ3ZCLElBQWE7UUFFYixJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDeEMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFJLEdBQUcsRUFBRSxNQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNELENBQUM7UUFFRCxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWhFOytIQUN1SDtRQUN2SCxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBSSxRQUFRLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FDcEUsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDWixNQUFNLFlBQVksR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdCLEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDbkMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFJLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNsRSxDQUFDO1lBRUQsT0FBTyxZQUFZLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFhRCxjQUFjLENBQUMsV0FBb0I7UUFDakMsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztnQkFDN0IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbEQsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLHFFQUFxRTtnQkFDckUsTUFBTSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ3JFLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFFN0QsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNqRCxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0gsaUJBQWlCLENBQUMsSUFBYTtRQUM3QixJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ2xDLElBQUksSUFBSSxFQUFFLENBQUM7WUFDVCxNQUFNLGtCQUFrQixHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQztZQUMzRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksa0JBQWtCLEVBQUUsQ0FBQztnQkFDNUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2QixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUNoQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxJQUFJLFdBQVcsRUFBRSxDQUFDLENBQy9DLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDLElBQUksQ0FDbkIsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUNuRSxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0gsY0FBYyxDQUNaLFdBQXdCLEVBQ3hCLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQzNCLFVBQWlDLEVBQUU7UUFFbkMsTUFBTSxRQUFRLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUNuRCxNQUFNLGFBQWEsR0FBRyxFQUFFLEdBQUcsUUFBUSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFDbEQsTUFBTSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFckM7OztXQUdHO1FBQ0gsSUFBSSx5QkFBeUIsR0FBRyxXQUFXLENBQUM7UUFFNUMsc0RBQXNEO1FBQ3RELElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZDLHlCQUF5QixHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBRUQsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRTFELE1BQU0saUJBQWlCLEdBQUc7WUFDeEIsR0FBRyxDQUFDLGFBQWEsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM1RCxHQUFHLHlCQUF5QjtTQUM3QixDQUFDO1FBRUYsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQVEsQ0FBQyxHQUFHO1lBQ2pELENBQUMsQ0FBQyxpQkFBaUI7WUFDbkIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQy9CLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQ2xELGtCQUFrQixFQUNsQixXQUFXLENBQ1osQ0FBQztRQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM3QyxhQUFhLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILGlCQUFpQixDQUNmLEdBQVcsRUFDWCxLQUFhLEVBQ2IsVUFBZ0QsRUFBRTtRQUVsRCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNsRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDMUUsTUFBTSxRQUFRLEdBQUc7WUFDZixDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVE7U0FDaEIsQ0FBQztRQUVGLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRDs7O09BR0c7SUFDSCxvQ0FBb0MsQ0FBQyxFQUNuQyxZQUFZLEdBQzBCO1FBQ3RDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO1FBQzFFLElBQUksWUFBWSxJQUFJLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3RELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFLLENBQUM7UUFDakMsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILGlCQUFpQixDQUFDLEdBQVcsRUFBRSxLQUFVLEVBQUUsTUFBZ0I7UUFDekQsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWUsQ0FBQyxVQUFVLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQzNELE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFLEVBQUUsQ0FBQztZQUNqRSw4Q0FBOEM7WUFDOUMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztZQUNsQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUNsQyxHQUFHLEVBQ0gsTUFBTSxFQUNOLElBQUksQ0FBQyxpQkFBa0IsQ0FDeEIsQ0FBQztZQUNGLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7WUFFbkMsT0FBTyxhQUFhLENBQUM7UUFDdkIsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQy9CLEdBQUcsRUFDSCxJQUFJLENBQUMscUJBQXFCLEVBQUUsRUFDNUIsTUFBTSxDQUNQLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhLENBQUMsSUFBWTtRQUN4QixPQUFPLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsSUFBWTtRQUNqQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxpQkFBaUIsQ0FDZixJQUFZLEVBQ1osWUFBMkI7UUFFM0IsTUFBTSxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFeEMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDcEUsT0FBTyxhQUFhLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO2dCQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLFlBQVksRUFBRSxDQUFDO2FBQ2xDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxzQkFBc0IsQ0FBQyxXQUFtQjtRQUN4QyxJQUNFLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDO1lBQy9CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUMzQyxDQUFDO1lBQ0QsT0FBTyxHQUFHLFdBQVcsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQztRQUNsRCxDQUFDO1FBQ0QsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsY0FBYyxDQUFDLEtBQWEsRUFBRSxLQUFhO1FBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUNoQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQzFDLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxJQUFZO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTFDLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDcEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEVBQWMsQ0FBQztRQUM5QyxDQUFDO1FBRUQsT0FBUSxJQUFJLENBQUMsaUJBQWlCLEVBQXVCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVPLHFCQUFxQjtRQUMzQixPQUFPO1lBQ0wsR0FBRyxJQUFJLENBQUMsTUFBTTtZQUNkLFVBQVUsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ2hDLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYztZQUNuQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7U0FDOUIsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSyxzQkFBc0IsQ0FBQyxJQUFhO1FBQzFDLE9BQU8sQ0FDTCxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWUsQ0FBQyxzQkFBc0I7WUFDbEQsSUFBSSxLQUFLLElBQUksQ0FBQyxpQkFBaUIsQ0FDaEMsQ0FBQztJQUNKLENBQUM7SUFFTyxhQUFhLENBQUMsSUFBWSxFQUFFLFdBQXdCO1FBQzFELElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ2YsVUFBVSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUk7WUFDbkMsSUFBSSxFQUFFLHdCQUF3QjtZQUM5QixPQUFPLEVBQUUsZUFBZSxDQUFDLElBQUksQ0FBQztTQUMvQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTyxhQUFhLENBQUMsSUFBWSxFQUFFLFdBQXdCO1FBQzFELDREQUE0RDtRQUM1RCxxREFBcUQ7UUFDckQsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7WUFDckMsV0FBVyxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUM7WUFFOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDL0IsV0FBVyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZFLENBQUM7UUFDSCxDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqQyxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsYUFBYSxDQUFDO1FBQzVDLE1BQU0sUUFBUSxHQUFHLFNBQVUsQ0FBQyxXQUFXLENBQUMsYUFBYyxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFM0IsNEVBQTRFO1FBQzVFLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDNUQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsTUFBTSxjQUFjLEdBQUcsUUFBUSxLQUFLLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRWxFLElBQUksQ0FBQyxRQUFRLElBQUksY0FBYyxFQUFFLENBQUM7WUFDaEMsSUFBSSxHQUFHLEdBQUcsMkRBQTJELENBQUM7WUFDdEUsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN4QixHQUFHLElBQUksc0NBQXNDLENBQUM7WUFDaEQsQ0FBQztZQUVELE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkIsQ0FBQztRQUVELElBQUksV0FBVyxHQUFHLFFBQVEsQ0FBQztRQUMzQixzQkFBc0I7UUFDdEIsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3hCLDRCQUE0QjtZQUM1Qix3Q0FBd0M7WUFDeEMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDO1lBQ3pDLFdBQVcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxXQUFXLENBQUMsYUFBYyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDZixJQUFJLEVBQUUsd0JBQXdCO1lBQzlCLE9BQU8sRUFBRSxlQUFlLENBQUMsSUFBSSxDQUFDO1NBQy9CLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVPLGNBQWMsQ0FBQyxLQUFhO1FBQ2xDLE1BQU0sRUFBRSxZQUFZLEdBQUcsRUFBRSxFQUFFLE1BQU0sR0FBRyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDMUUsT0FBTyxDQUNMLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQ3hFLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLG1CQUFtQixDQUFDLElBQVk7UUFDdEMsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksS0FBSyxDQUFDO1FBRVYsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDN0IsaUJBQWlCO1lBQ2pCLE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdDLGFBQWE7WUFDYixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzNDLFVBQVU7WUFDVixXQUFXLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUM3RCxpQkFBaUI7WUFDakIsS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkUsQ0FBQztRQUVELE9BQU8sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVPLGNBQWMsQ0FBQyxXQUF3QixFQUFFLEdBQVk7UUFDM0QsTUFBTSxNQUFNLEdBQWdCLEVBQUUsQ0FBQztRQUMvQixNQUFNLE1BQU0sR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBRXpCLEtBQUssTUFBTSxVQUFVLElBQUksV0FBVyxFQUFFLENBQUM7WUFDckMsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7Z0JBQ2xDLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNuRSxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFTyxVQUFVLENBQUMsR0FBbUM7UUFDcEQsT0FBTyxHQUFHLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEUsQ0FBQzt1R0E1dUJVLGdCQUFnQixrQkFxQkwsZ0JBQWdCLDZCQUM1QixvQkFBb0IsYUFDcEIseUJBQXlCLGFBRXpCLHFCQUFxQixhQUNyQixnQkFBZ0IsYUFDaEIsMkJBQTJCOzJHQTNCMUIsZ0JBQWdCLGNBREgsTUFBTTs7MkZBQ25CLGdCQUFnQjtrQkFENUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQXNCN0IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxnQkFBZ0I7OzBCQUNuQyxNQUFNOzJCQUFDLG9CQUFvQjs7MEJBQzNCLE1BQU07MkJBQUMseUJBQXlCOzswQkFFaEMsTUFBTTsyQkFBQyxxQkFBcUI7OzBCQUM1QixNQUFNOzJCQUFDLGdCQUFnQjs7MEJBQ3ZCLE1BQU07MkJBQUMsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGVzdHJveVJlZixcbiAgaW5qZWN0LFxuICBJbmplY3QsXG4gIEluamVjdGFibGUsXG4gIE9wdGlvbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY2F0Y2hFcnJvcixcbiAgY29tYmluZUxhdGVzdCxcbiAgRU1QVFksXG4gIGZvcmtKb2luLFxuICBmcm9tLFxuICBtYXAsXG4gIE9ic2VydmFibGUsXG4gIG9mLFxuICByZXRyeSxcbiAgc2hhcmVSZXBsYXksXG4gIFN1YmplY3QsXG4gIHN3aXRjaE1hcCxcbiAgdGFwLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IGlzRW1wdHksIGlzTmlsLCBpc1N0cmluZywgc2l6ZSwgdG9DYW1lbENhc2UgfSBmcm9tICdAanN2ZXJzZS91dGlscyc7XG5cbmltcG9ydCB7XG4gIERlZmF1bHRMb2FkZXIsXG4gIFRSQU5TTE9DT19MT0FERVIsXG4gIFRyYW5zbG9jb0xvYWRlcixcbn0gZnJvbSAnLi90cmFuc2xvY28ubG9hZGVyJztcbmltcG9ydCB7XG4gIFRSQU5TTE9DT19UUkFOU1BJTEVSLFxuICBUcmFuc2xvY29UcmFuc3BpbGVyLFxufSBmcm9tICcuL3RyYW5zbG9jby50cmFuc3BpbGVyJztcbmltcG9ydCB7XG4gIEF2YWlsYWJsZUxhbmdzLFxuICBJbmxpbmVMb2FkZXIsXG4gIExhbmdEZWZpbml0aW9uLFxuICBMb2FkT3B0aW9ucyxcbiAgU2V0VHJhbnNsYXRpb25PcHRpb25zLFxuICBUcmFuc2xhdGVPYmplY3RQYXJhbXMsXG4gIFRyYW5zbGF0ZVBhcmFtcyxcbiAgVHJhbnNsYXRpb24sXG4gIFRyYW5zbG9jb0V2ZW50cyxcbiAgVHJhbnNsb2NvU2NvcGUsXG59IGZyb20gJy4vdHJhbnNsb2NvLnR5cGVzJztcbmltcG9ydCB7IFRSQU5TTE9DT19DT05GSUcsIFRyYW5zbG9jb0NvbmZpZyB9IGZyb20gJy4vdHJhbnNsb2NvLmNvbmZpZyc7XG5pbXBvcnQge1xuICBUUkFOU0xPQ09fTUlTU0lOR19IQU5ETEVSLFxuICBUcmFuc2xvY29NaXNzaW5nSGFuZGxlcixcbiAgVHJhbnNsb2NvTWlzc2luZ0hhbmRsZXJEYXRhLFxufSBmcm9tICcuL3RyYW5zbG9jby1taXNzaW5nLWhhbmRsZXInO1xuaW1wb3J0IHtcbiAgVFJBTlNMT0NPX0lOVEVSQ0VQVE9SLFxuICBUcmFuc2xvY29JbnRlcmNlcHRvcixcbn0gZnJvbSAnLi90cmFuc2xvY28uaW50ZXJjZXB0b3InO1xuaW1wb3J0IHtcbiAgVFJBTlNMT0NPX0ZBTExCQUNLX1NUUkFURUdZLFxuICBUcmFuc2xvY29GYWxsYmFja1N0cmF0ZWd5LFxufSBmcm9tICcuL3RyYW5zbG9jby1mYWxsYmFjay1zdHJhdGVneSc7XG5pbXBvcnQgeyBnZXRGYWxsYmFja3NMb2FkZXJzIH0gZnJvbSAnLi9nZXQtZmFsbGJhY2tzLWxvYWRlcnMnO1xuaW1wb3J0IHsgcmVzb2x2ZUxvYWRlciB9IGZyb20gJy4vcmVzb2x2ZS1sb2FkZXInO1xuaW1wb3J0IHsgZmxhdHRlbiwgdW5mbGF0dGVuIH0gZnJvbSAnLi91dGlscy9mbGF0LnV0aWxzJztcbmltcG9ydCB7IEhhc2hNYXAgfSBmcm9tICcuL3V0aWxzL3R5cGUudXRpbHMnO1xuaW1wb3J0IHtcbiAgZ2V0RXZlbnRQYXlsb2FkLFxuICBnZXRMYW5nRnJvbVNjb3BlLFxuICBnZXRTY29wZUZyb21MYW5nLFxuICBpc1Njb3BlT2JqZWN0LFxuICByZXNvbHZlSW5saW5lTG9hZGVyLFxufSBmcm9tICcuL3V0aWxzL3Njb3BlLnV0aWxzJztcblxubGV0IHNlcnZpY2U6IFRyYW5zbG9jb1NlcnZpY2U7XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2xhdGU8VCA9IHN0cmluZz4oXG4gIGtleTogVHJhbnNsYXRlUGFyYW1zLFxuICBwYXJhbXM6IEhhc2hNYXAgPSB7fSxcbiAgbGFuZz86IHN0cmluZyxcbik6IFQge1xuICByZXR1cm4gc2VydmljZS50cmFuc2xhdGU8VD4oa2V5LCBwYXJhbXMsIGxhbmcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNsYXRlT2JqZWN0PFQ+KFxuICBrZXk6IFRyYW5zbGF0ZVBhcmFtcyxcbiAgcGFyYW1zOiBIYXNoTWFwID0ge30sXG4gIGxhbmc/OiBzdHJpbmcsXG4pOiBUIHwgVFtdIHtcbiAgcmV0dXJuIHNlcnZpY2UudHJhbnNsYXRlT2JqZWN0PFQ+KGtleSwgcGFyYW1zLCBsYW5nKTtcbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBUcmFuc2xvY29TZXJ2aWNlIHtcbiAgbGFuZ0NoYW5nZXMkOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgcHJpdmF0ZSB0cmFuc2xhdGlvbnMgPSBuZXcgTWFwPHN0cmluZywgVHJhbnNsYXRpb24+KCk7XG4gIHByaXZhdGUgY2FjaGUgPSBuZXcgTWFwPHN0cmluZywgT2JzZXJ2YWJsZTxUcmFuc2xhdGlvbj4+KCk7XG4gIHByaXZhdGUgZmlyc3RGYWxsYmFja0xhbmc6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBkZWZhdWx0TGFuZyA9ICcnO1xuICBwcml2YXRlIGF2YWlsYWJsZUxhbmdzOiBBdmFpbGFibGVMYW5ncyA9IFtdO1xuICBwcml2YXRlIGlzUmVzb2x2ZWRNaXNzaW5nT25jZSA9IGZhbHNlO1xuICBwcml2YXRlIGxhbmc6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+O1xuICBwcml2YXRlIGZhaWxlZExhbmdzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIHByaXZhdGUgZXZlbnRzID0gbmV3IFN1YmplY3Q8VHJhbnNsb2NvRXZlbnRzPigpO1xuXG4gIGV2ZW50cyQgPSB0aGlzLmV2ZW50cy5hc09ic2VydmFibGUoKTtcbiAgcmVhZG9ubHkgY29uZmlnOiBUcmFuc2xvY29Db25maWcgJiB7XG4gICAgc2NvcGVNYXBwaW5nPzogSGFzaE1hcDxzdHJpbmc+O1xuICB9O1xuXG4gIHByaXZhdGUgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFRSQU5TTE9DT19MT0FERVIpIHByaXZhdGUgbG9hZGVyOiBUcmFuc2xvY29Mb2FkZXIsXG4gICAgQEluamVjdChUUkFOU0xPQ09fVFJBTlNQSUxFUikgcHJpdmF0ZSBwYXJzZXI6IFRyYW5zbG9jb1RyYW5zcGlsZXIsXG4gICAgQEluamVjdChUUkFOU0xPQ09fTUlTU0lOR19IQU5ETEVSKVxuICAgIHByaXZhdGUgbWlzc2luZ0hhbmRsZXI6IFRyYW5zbG9jb01pc3NpbmdIYW5kbGVyLFxuICAgIEBJbmplY3QoVFJBTlNMT0NPX0lOVEVSQ0VQVE9SKSBwcml2YXRlIGludGVyY2VwdG9yOiBUcmFuc2xvY29JbnRlcmNlcHRvcixcbiAgICBASW5qZWN0KFRSQU5TTE9DT19DT05GSUcpIHVzZXJDb25maWc6IFRyYW5zbG9jb0NvbmZpZyxcbiAgICBASW5qZWN0KFRSQU5TTE9DT19GQUxMQkFDS19TVFJBVEVHWSlcbiAgICBwcml2YXRlIGZhbGxiYWNrU3RyYXRlZ3k6IFRyYW5zbG9jb0ZhbGxiYWNrU3RyYXRlZ3ksXG4gICkge1xuICAgIGlmICghdGhpcy5sb2FkZXIpIHtcbiAgICAgIHRoaXMubG9hZGVyID0gbmV3IERlZmF1bHRMb2FkZXIodGhpcy50cmFuc2xhdGlvbnMpO1xuICAgIH1cbiAgICBzZXJ2aWNlID0gdGhpcztcbiAgICB0aGlzLmNvbmZpZyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodXNlckNvbmZpZykpO1xuXG4gICAgdGhpcy5zZXRBdmFpbGFibGVMYW5ncyh0aGlzLmNvbmZpZy5hdmFpbGFibGVMYW5ncyB8fCBbXSk7XG4gICAgdGhpcy5zZXRGYWxsYmFja0xhbmdGb3JNaXNzaW5nVHJhbnNsYXRpb24odGhpcy5jb25maWcpO1xuICAgIHRoaXMuc2V0RGVmYXVsdExhbmcodGhpcy5jb25maWcuZGVmYXVsdExhbmcpO1xuICAgIHRoaXMubGFuZyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPih0aGlzLmdldERlZmF1bHRMYW5nKCkpO1xuICAgIC8vIERvbid0IHVzZSBkaXN0aW5jdFVudGlsQ2hhbmdlZCBhcyB3ZSBuZWVkIHRoZSBhYmlsaXR5IHRvIHVwZGF0ZVxuICAgIC8vIHRoZSB2YWx1ZSB3aGVuIHVzaW5nIHNldFRyYW5zbGF0aW9uIG9yIHNldFRyYW5zbGF0aW9uS2V5c1xuICAgIHRoaXMubGFuZ0NoYW5nZXMkID0gdGhpcy5sYW5nLmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgLyoqXG4gICAgICogV2hlbiB3ZSBoYXZlIGEgZmFpbHVyZSwgd2Ugd2FudCB0byBkZWZpbmUgdGhlIG5leHQgbGFuZ3VhZ2UgdGhhdCBzdWNjZWVkZWQgYXMgdGhlIGFjdGl2ZVxuICAgICAqL1xuICAgIHRoaXMuZXZlbnRzJC5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgIGlmIChlLnR5cGUgPT09ICd0cmFuc2xhdGlvbkxvYWRTdWNjZXNzJyAmJiBlLndhc0ZhaWx1cmUpIHtcbiAgICAgICAgdGhpcy5zZXRBY3RpdmVMYW5nKGUucGF5bG9hZC5sYW5nTmFtZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHtcbiAgICAgIC8vIENvbXBsZXRlIHN1YmplY3RzIHRvIHJlbGVhc2Ugb2JzZXJ2ZXJzIGlmIHVzZXJzIGZvcmdldCB0byB1bnN1YnNjcmliZSBtYW51YWxseS5cbiAgICAgIC8vIFRoaXMgaXMgaW1wb3J0YW50IGluIHNlcnZlci1zaWRlIHJlbmRlcmluZy5cbiAgICAgIHRoaXMubGFuZy5jb21wbGV0ZSgpO1xuICAgICAgdGhpcy5ldmVudHMuY29tcGxldGUoKTtcbiAgICAgIC8vIEFzIGEgcm9vdCBwcm92aWRlciwgdGhpcyBzZXJ2aWNlIGlzIGRlc3Ryb3llZCB3aXRoIHdoZW4gdGhlIGFwcGxpY2F0aW9uIGlzIGRlc3Ryb3llZC5cbiAgICAgIC8vIENhY2hlZCB2YWx1ZXMgcmV0YWluIGB0aGlzYCwgY2F1c2luZyBjaXJjdWxhciByZWZlcmVuY2VzIHRoYXQgYmxvY2sgZ2FyYmFnZSBjb2xsZWN0aW9uLFxuICAgICAgLy8gbGVhZGluZyB0byBtZW1vcnkgbGVha3MgZHVyaW5nIHNlcnZlci1zaWRlIHJlbmRlcmluZy5cbiAgICAgIHRoaXMuY2FjaGUuY2xlYXIoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldERlZmF1bHRMYW5nKCkge1xuICAgIHJldHVybiB0aGlzLmRlZmF1bHRMYW5nO1xuICB9XG5cbiAgc2V0RGVmYXVsdExhbmcobGFuZzogc3RyaW5nKSB7XG4gICAgdGhpcy5kZWZhdWx0TGFuZyA9IGxhbmc7XG4gIH1cblxuICBnZXRBY3RpdmVMYW5nKCkge1xuICAgIHJldHVybiB0aGlzLmxhbmcuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHNldEFjdGl2ZUxhbmcobGFuZzogc3RyaW5nKSB7XG4gICAgdGhpcy5wYXJzZXIub25MYW5nQ2hhbmdlZD8uKGxhbmcpO1xuICAgIHRoaXMubGFuZy5uZXh0KGxhbmcpO1xuICAgIHRoaXMuZXZlbnRzLm5leHQoe1xuICAgICAgdHlwZTogJ2xhbmdDaGFuZ2VkJyxcbiAgICAgIHBheWxvYWQ6IGdldEV2ZW50UGF5bG9hZChsYW5nKSxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNldEF2YWlsYWJsZUxhbmdzKGxhbmdzOiBBdmFpbGFibGVMYW5ncykge1xuICAgIHRoaXMuYXZhaWxhYmxlTGFuZ3MgPSBsYW5ncztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBhdmFpbGFibGUgbGFuZ3VhZ2VzLlxuICAgKlxuICAgKiBAcmV0dXJuc1xuICAgKiBBbiBhcnJheSBvZiB0aGUgYXZhaWxhYmxlIGxhbmd1YWdlcy4gQ2FuIGJlIGVpdGhlciBhIGBzdHJpbmdbXWAgb3IgYSBgeyBpZDogc3RyaW5nOyBsYWJlbDogc3RyaW5nIH1bXWBcbiAgICogZGVwZW5kaW5nIG9uIGhvdyB0aGUgYXZhaWxhYmxlIGxhbmd1YWdlcyBhcmUgc2V0IGluIHlvdXIgbW9kdWxlLlxuICAgKi9cbiAgZ2V0QXZhaWxhYmxlTGFuZ3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXZhaWxhYmxlTGFuZ3M7XG4gIH1cblxuICBsb2FkKHBhdGg6IHN0cmluZywgb3B0aW9uczogTG9hZE9wdGlvbnMgPSB7fSk6IE9ic2VydmFibGU8VHJhbnNsYXRpb24+IHtcbiAgICBjb25zdCBjYWNoZWQgPSB0aGlzLmNhY2hlLmdldChwYXRoKTtcbiAgICBpZiAoY2FjaGVkKSB7XG4gICAgICByZXR1cm4gY2FjaGVkO1xuICAgIH1cblxuICAgIGxldCBsb2FkVHJhbnNsYXRpb246IE9ic2VydmFibGU8XG4gICAgICBUcmFuc2xhdGlvbiB8IHsgdHJhbnNsYXRpb246IFRyYW5zbGF0aW9uOyBsYW5nOiBzdHJpbmcgfVtdXG4gICAgPjtcbiAgICBjb25zdCBpc1Njb3BlID0gdGhpcy5faXNMYW5nU2NvcGVkKHBhdGgpO1xuICAgIGxldCBzY29wZTogc3RyaW5nO1xuICAgIGlmIChpc1Njb3BlKSB7XG4gICAgICBzY29wZSA9IGdldFNjb3BlRnJvbUxhbmcocGF0aCk7XG4gICAgfVxuXG4gICAgY29uc3QgbG9hZGVyc09wdGlvbnMgPSB7XG4gICAgICBwYXRoLFxuICAgICAgbWFpbkxvYWRlcjogdGhpcy5sb2FkZXIsXG4gICAgICBpbmxpbmVMb2FkZXI6IG9wdGlvbnMuaW5saW5lTG9hZGVyLFxuICAgICAgZGF0YTogaXNTY29wZSA/IHsgc2NvcGU6IHNjb3BlISB9IDogdW5kZWZpbmVkLFxuICAgIH07XG5cbiAgICBpZiAodGhpcy51c2VGYWxsYmFja1RyYW5zbGF0aW9uKHBhdGgpKSB7XG4gICAgICAvLyBpZiB0aGUgcGF0aCBpcyBzY29wZSB0aGUgZmFsbGJhY2sgc2hvdWxkIGJlIGBzY29wZS9mYWxsYmFja0xhbmdgO1xuICAgICAgY29uc3QgZmFsbGJhY2sgPSBpc1Njb3BlXG4gICAgICAgID8gYCR7c2NvcGUhfS8ke3RoaXMuZmlyc3RGYWxsYmFja0xhbmd9YFxuICAgICAgICA6IHRoaXMuZmlyc3RGYWxsYmFja0xhbmc7XG5cbiAgICAgIGNvbnN0IGxvYWRlcnMgPSBnZXRGYWxsYmFja3NMb2FkZXJzKHtcbiAgICAgICAgLi4ubG9hZGVyc09wdGlvbnMsXG4gICAgICAgIGZhbGxiYWNrUGF0aDogZmFsbGJhY2shLFxuICAgICAgfSk7XG4gICAgICBsb2FkVHJhbnNsYXRpb24gPSBmb3JrSm9pbihsb2FkZXJzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbG9hZGVyID0gcmVzb2x2ZUxvYWRlcihsb2FkZXJzT3B0aW9ucyk7XG4gICAgICBsb2FkVHJhbnNsYXRpb24gPSBmcm9tKGxvYWRlcik7XG4gICAgfVxuXG4gICAgY29uc3QgbG9hZCQgPSBsb2FkVHJhbnNsYXRpb24ucGlwZShcbiAgICAgIHJldHJ5KHRoaXMuY29uZmlnLmZhaWxlZFJldHJpZXMpLFxuICAgICAgdGFwKCh0cmFuc2xhdGlvbikgPT4ge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0cmFuc2xhdGlvbikpIHtcbiAgICAgICAgICB0cmFuc2xhdGlvbi5mb3JFYWNoKCh0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVN1Y2Nlc3ModC5sYW5nLCB0LnRyYW5zbGF0aW9uKTtcbiAgICAgICAgICAgIC8vIFNhdmUgdGhlIGZhbGxiYWNrIGluIGNhY2hlIHNvIHdlJ2xsIG5vdCBjcmVhdGUgYSByZWR1bmRhbnQgcmVxdWVzdFxuICAgICAgICAgICAgaWYgKHQubGFuZyAhPT0gcGF0aCkge1xuICAgICAgICAgICAgICB0aGlzLmNhY2hlLnNldCh0LmxhbmcsIG9mKHt9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaGFuZGxlU3VjY2VzcyhwYXRoLCB0cmFuc2xhdGlvbik7XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5jb25maWcucHJvZE1vZGUpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGBFcnJvciB3aGlsZSB0cnlpbmcgdG8gbG9hZCBcIiR7cGF0aH1cImAsIGVycm9yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUZhaWx1cmUocGF0aCwgb3B0aW9ucyk7XG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZiksXG4gICAgKTtcblxuICAgIHRoaXMuY2FjaGUuc2V0KHBhdGgsIGxvYWQkKTtcblxuICAgIHJldHVybiBsb2FkJDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBpbnN0YW50IHRyYW5zbGF0ZWQgdmFsdWUgb2YgYSBrZXlcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICpcbiAgICogdHJhbnNsYXRlPHN0cmluZz4oJ2hlbGxvJylcbiAgICogdHJhbnNsYXRlKCdoZWxsbycsIHsgdmFsdWU6ICd2YWx1ZScgfSlcbiAgICogdHJhbnNsYXRlPHN0cmluZ1tdPihbJ2hlbGxvJywgJ2tleSddKVxuICAgKiB0cmFuc2xhdGUoJ2hlbGxvJywgeyB9LCAnZW4nKVxuICAgKiB0cmFuc2xhdGUoJ3Njb3BlLnNvbWVLZXknLCB7IH0sICdlbicpXG4gICAqL1xuICB0cmFuc2xhdGU8VCA9IHN0cmluZz4oXG4gICAga2V5OiBUcmFuc2xhdGVQYXJhbXMsXG4gICAgcGFyYW1zOiBIYXNoTWFwID0ge30sXG4gICAgbGFuZyA9IHRoaXMuZ2V0QWN0aXZlTGFuZygpLFxuICApOiBUIHtcbiAgICBpZiAoIWtleSkgcmV0dXJuIGtleSBhcyBhbnk7XG5cbiAgICBjb25zdCB7IHNjb3BlLCByZXNvbHZlTGFuZyB9ID0gdGhpcy5yZXNvbHZlTGFuZ0FuZFNjb3BlKGxhbmcpO1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoa2V5KSkge1xuICAgICAgcmV0dXJuIGtleS5tYXAoKGspID0+XG4gICAgICAgIHRoaXMudHJhbnNsYXRlKHNjb3BlID8gYCR7c2NvcGV9LiR7a31gIDogaywgcGFyYW1zLCByZXNvbHZlTGFuZyksXG4gICAgICApIGFzIGFueTtcbiAgICB9XG5cbiAgICBrZXkgPSBzY29wZSA/IGAke3Njb3BlfS4ke2tleX1gIDoga2V5O1xuXG4gICAgY29uc3QgdHJhbnNsYXRpb24gPSB0aGlzLmdldFRyYW5zbGF0aW9uKHJlc29sdmVMYW5nKTtcbiAgICBjb25zdCB2YWx1ZSA9IHRyYW5zbGF0aW9uW2tleV07XG5cbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5faGFuZGxlTWlzc2luZ0tleShrZXksIHZhbHVlLCBwYXJhbXMpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnBhcnNlci50cmFuc3BpbGUoe1xuICAgICAgdmFsdWUsXG4gICAgICBwYXJhbXMsXG4gICAgICB0cmFuc2xhdGlvbixcbiAgICAgIGtleSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB0cmFuc2xhdGVkIHZhbHVlIG9mIGEga2V5IGFzIG9ic2VydmFibGVcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICpcbiAgICogc2VsZWN0VHJhbnNsYXRlPHN0cmluZz4oJ2hlbGxvJykuc3Vic2NyaWJlKHZhbHVlID0+IC4uLilcbiAgICogc2VsZWN0VHJhbnNsYXRlPHN0cmluZz4oJ2hlbGxvJywge30sICdlcycpLnN1YnNjcmliZSh2YWx1ZSA9PiAuLi4pXG4gICAqIHNlbGVjdFRyYW5zbGF0ZTxzdHJpbmc+KCdoZWxsbycsIHt9LCAndG9kb3MnKS5zdWJzY3JpYmUodmFsdWUgPT4gLi4uKVxuICAgKiBzZWxlY3RUcmFuc2xhdGU8c3RyaW5nPignaGVsbG8nLCB7fSwgeyBzY29wZTogJ3RvZG9zJyB9KS5zdWJzY3JpYmUodmFsdWUgPT4gLi4uKVxuICAgKlxuICAgKi9cbiAgc2VsZWN0VHJhbnNsYXRlPFQgPSBhbnk+KFxuICAgIGtleTogVHJhbnNsYXRlUGFyYW1zLFxuICAgIHBhcmFtcz86IEhhc2hNYXAsXG4gICAgbGFuZz86IHN0cmluZyB8IFRyYW5zbG9jb1Njb3BlIHwgVHJhbnNsb2NvU2NvcGVbXSxcbiAgICBfaXNPYmplY3QgPSBmYWxzZSxcbiAgKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgbGV0IGlubGluZUxvYWRlcjogSW5saW5lTG9hZGVyIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IGxvYWQgPSAobGFuZzogc3RyaW5nLCBvcHRpb25zPzogTG9hZE9wdGlvbnMpID0+XG4gICAgICB0aGlzLmxvYWQobGFuZywgb3B0aW9ucykucGlwZShcbiAgICAgICAgbWFwKCgpID0+XG4gICAgICAgICAgX2lzT2JqZWN0XG4gICAgICAgICAgICA/IHRoaXMudHJhbnNsYXRlT2JqZWN0KGtleSwgcGFyYW1zLCBsYW5nKVxuICAgICAgICAgICAgOiB0aGlzLnRyYW5zbGF0ZShrZXksIHBhcmFtcywgbGFuZyksXG4gICAgICAgICksXG4gICAgICApO1xuICAgIGlmIChpc05pbChsYW5nKSkge1xuICAgICAgcmV0dXJuIHRoaXMubGFuZ0NoYW5nZXMkLnBpcGUoc3dpdGNoTWFwKChsYW5nKSA9PiBsb2FkKGxhbmcpKSk7XG4gICAgfVxuXG4gICAgbGFuZyA9IEFycmF5LmlzQXJyYXkobGFuZykgPyBsYW5nWzBdIDogbGFuZztcbiAgICBpZiAoaXNTY29wZU9iamVjdChsYW5nKSkge1xuICAgICAgLy8gaXQncyBhIHNjb3BlIG9iamVjdC5cbiAgICAgIGNvbnN0IHByb3ZpZGVyU2NvcGUgPSBsYW5nO1xuICAgICAgbGFuZyA9IHByb3ZpZGVyU2NvcGUuc2NvcGU7XG4gICAgICBpbmxpbmVMb2FkZXIgPSByZXNvbHZlSW5saW5lTG9hZGVyKHByb3ZpZGVyU2NvcGUsIHByb3ZpZGVyU2NvcGUuc2NvcGUpO1xuICAgIH1cblxuICAgIGxhbmcgPSBsYW5nIGFzIHN0cmluZztcbiAgICBpZiAodGhpcy5pc0xhbmcobGFuZykgfHwgdGhpcy5pc1Njb3BlV2l0aExhbmcobGFuZykpIHtcbiAgICAgIHJldHVybiBsb2FkKGxhbmcpO1xuICAgIH1cbiAgICAvLyBpdCdzIGEgc2NvcGVcbiAgICBjb25zdCBzY29wZSA9IGxhbmc7XG4gICAgcmV0dXJuIHRoaXMubGFuZ0NoYW5nZXMkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKGxhbmcpID0+IGxvYWQoYCR7c2NvcGV9LyR7bGFuZ31gLCB7IGlubGluZUxvYWRlciB9KSksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBzY29wZSB3aXRoIGxhbmdcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICpcbiAgICogdG9kb3MvZW4gPT4gdHJ1ZVxuICAgKiB0b2RvcyA9PiBmYWxzZVxuICAgKi9cbiAgcHJpdmF0ZSBpc1Njb3BlV2l0aExhbmcobGFuZzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNMYW5nKGdldExhbmdGcm9tU2NvcGUobGFuZykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zbGF0ZSB0aGUgZ2l2ZW4gcGF0aCB0aGF0IHJldHVybnMgYW4gb2JqZWN0XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqXG4gICAqIHNlcnZpY2UudHJhbnNsYXRlT2JqZWN0KCdwYXRoLnRvLm9iamVjdCcsIHsnc3VicGF0aCc6IHsgdmFsdWU6ICdzb21lVmFsdWUnfX0pID0+IHJldHVybnMgdHJhbnNsYXRlZCBvYmplY3RcbiAgICpcbiAgICovXG4gIHRyYW5zbGF0ZU9iamVjdDxUID0gYW55PihrZXk6IHN0cmluZywgcGFyYW1zPzogSGFzaE1hcCwgbGFuZz86IHN0cmluZyk6IFQ7XG4gIHRyYW5zbGF0ZU9iamVjdDxUID0gYW55PihrZXk6IHN0cmluZ1tdLCBwYXJhbXM/OiBIYXNoTWFwLCBsYW5nPzogc3RyaW5nKTogVFtdO1xuICB0cmFuc2xhdGVPYmplY3Q8VCA9IGFueT4oXG4gICAga2V5OiBUcmFuc2xhdGVQYXJhbXMsXG4gICAgcGFyYW1zPzogSGFzaE1hcCxcbiAgICBsYW5nPzogc3RyaW5nLFxuICApOiBUIHwgVFtdO1xuICB0cmFuc2xhdGVPYmplY3Q8VCA9IGFueT4oXG4gICAga2V5OiBIYXNoTWFwIHwgTWFwPHN0cmluZywgSGFzaE1hcD4sXG4gICAgcGFyYW1zPzogbnVsbCxcbiAgICBsYW5nPzogc3RyaW5nLFxuICApOiBUW107XG4gIHRyYW5zbGF0ZU9iamVjdDxUID0gYW55PihcbiAgICBrZXk6IFRyYW5zbGF0ZU9iamVjdFBhcmFtcyxcbiAgICBwYXJhbXM6IEhhc2hNYXAgfCBudWxsID0ge30sXG4gICAgbGFuZyA9IHRoaXMuZ2V0QWN0aXZlTGFuZygpLFxuICApOiBUIHwgVFtdIHtcbiAgICBpZiAoaXNTdHJpbmcoa2V5KSB8fCBBcnJheS5pc0FycmF5KGtleSkpIHtcbiAgICAgIGNvbnN0IHsgcmVzb2x2ZUxhbmcsIHNjb3BlIH0gPSB0aGlzLnJlc29sdmVMYW5nQW5kU2NvcGUobGFuZyk7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShrZXkpKSB7XG4gICAgICAgIHJldHVybiBrZXkubWFwKChrKSA9PlxuICAgICAgICAgIHRoaXMudHJhbnNsYXRlT2JqZWN0KFxuICAgICAgICAgICAgc2NvcGUgPyBgJHtzY29wZX0uJHtrfWAgOiBrLFxuICAgICAgICAgICAgcGFyYW1zISxcbiAgICAgICAgICAgIHJlc29sdmVMYW5nLFxuICAgICAgICAgICksXG4gICAgICAgICkgYXMgYW55O1xuICAgICAgfVxuXG4gICAgICBjb25zdCB0cmFuc2xhdGlvbiA9IHRoaXMuZ2V0VHJhbnNsYXRpb24ocmVzb2x2ZUxhbmcpO1xuICAgICAga2V5ID0gc2NvcGUgPyBgJHtzY29wZX0uJHtrZXl9YCA6IGtleTtcblxuICAgICAgY29uc3QgdmFsdWUgPSB1bmZsYXR0ZW4odGhpcy5nZXRPYmplY3RCeUtleSh0cmFuc2xhdGlvbiwga2V5KSk7XG4gICAgICAvKiBJZiBhbiBlbXB0eSBvYmplY3Qgd2FzIHJldHVybmVkIHdlIHdhbnQgdG8gdHJ5IGFuZCB0cmFuc2xhdGUgdGhlIGtleSBhcyBhIHN0cmluZyBhbmQgbm90IGFuIG9iamVjdCAqL1xuICAgICAgcmV0dXJuIGlzRW1wdHkodmFsdWUpXG4gICAgICAgID8gdGhpcy50cmFuc2xhdGUoa2V5LCBwYXJhbXMhLCBsYW5nKVxuICAgICAgICA6IHRoaXMucGFyc2VyLnRyYW5zcGlsZSh7IHZhbHVlLCBwYXJhbXM6IHBhcmFtcyEsIHRyYW5zbGF0aW9uLCBrZXkgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgdHJhbnNsYXRpb25zOiBUW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IFtfa2V5LCBfcGFyYW1zXSBvZiB0aGlzLmdldEVudHJpZXMoa2V5KSkge1xuICAgICAgdHJhbnNsYXRpb25zLnB1c2godGhpcy50cmFuc2xhdGVPYmplY3QoX2tleSwgX3BhcmFtcywgbGFuZykpO1xuICAgIH1cblxuICAgIHJldHVybiB0cmFuc2xhdGlvbnM7XG4gIH1cblxuICBzZWxlY3RUcmFuc2xhdGVPYmplY3Q8VCA9IGFueT4oXG4gICAga2V5OiBzdHJpbmcsXG4gICAgcGFyYW1zPzogSGFzaE1hcCxcbiAgICBsYW5nPzogc3RyaW5nLFxuICApOiBPYnNlcnZhYmxlPFQ+O1xuICBzZWxlY3RUcmFuc2xhdGVPYmplY3Q8VCA9IGFueT4oXG4gICAga2V5OiBzdHJpbmdbXSxcbiAgICBwYXJhbXM/OiBIYXNoTWFwLFxuICAgIGxhbmc/OiBzdHJpbmcsXG4gICk6IE9ic2VydmFibGU8VFtdPjtcbiAgc2VsZWN0VHJhbnNsYXRlT2JqZWN0PFQgPSBhbnk+KFxuICAgIGtleTogVHJhbnNsYXRlUGFyYW1zLFxuICAgIHBhcmFtcz86IEhhc2hNYXAsXG4gICAgbGFuZz86IHN0cmluZyxcbiAgKTogT2JzZXJ2YWJsZTxUPiB8IE9ic2VydmFibGU8VFtdPjtcbiAgc2VsZWN0VHJhbnNsYXRlT2JqZWN0PFQgPSBhbnk+KFxuICAgIGtleTogSGFzaE1hcCB8IE1hcDxzdHJpbmcsIEhhc2hNYXA+LFxuICAgIHBhcmFtcz86IG51bGwsXG4gICAgbGFuZz86IHN0cmluZyxcbiAgKTogT2JzZXJ2YWJsZTxUW10+O1xuICBzZWxlY3RUcmFuc2xhdGVPYmplY3Q8VCA9IGFueT4oXG4gICAga2V5OiBUcmFuc2xhdGVPYmplY3RQYXJhbXMsXG4gICAgcGFyYW1zPzogSGFzaE1hcCB8IG51bGwsXG4gICAgbGFuZz86IHN0cmluZyxcbiAgKTogT2JzZXJ2YWJsZTxUPiB8IE9ic2VydmFibGU8VFtdPiB7XG4gICAgaWYgKGlzU3RyaW5nKGtleSkgfHwgQXJyYXkuaXNBcnJheShrZXkpKSB7XG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3RUcmFuc2xhdGU8VD4oa2V5LCBwYXJhbXMhLCBsYW5nLCB0cnVlKTtcbiAgICB9XG5cbiAgICBjb25zdCBbW2ZpcnN0S2V5LCBmaXJzdFBhcmFtc10sIC4uLnJlc3RdID0gdGhpcy5nZXRFbnRyaWVzKGtleSk7XG5cbiAgICAvKiBJbiBvcmRlciB0byBhdm9pZCBzdWJzY3JpYmluZyBtdWx0aXBsZSB0aW1lcyB0byB0aGUgbG9hZCBsYW5ndWFnZSBldmVudCBieSBjYWxsaW5nIHNlbGVjdFRyYW5zbGF0ZU9iamVjdCBmb3IgZWFjaCBwYWlyLFxuICAgICAqIHdlIGxpc3RlbiB0byB3aGVuIHRoZSBmaXJzdCBrZXkgaGFzIGJlZW4gdHJhbnNsYXRlZCAodGhlIGxhbmd1YWdlIGlzIGxvYWRlZCkgYW5kIHRyYW5zbGF0ZSB0aGUgcmVzdCBzeW5jaHJvbm91c2x5ICovXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0VHJhbnNsYXRlT2JqZWN0PFQ+KGZpcnN0S2V5LCBmaXJzdFBhcmFtcywgbGFuZykucGlwZShcbiAgICAgIG1hcCgodmFsdWUpID0+IHtcbiAgICAgICAgY29uc3QgdHJhbnNsYXRpb25zID0gW3ZhbHVlXTtcbiAgICAgICAgZm9yIChjb25zdCBbX2tleSwgX3BhcmFtc10gb2YgcmVzdCkge1xuICAgICAgICAgIHRyYW5zbGF0aW9ucy5wdXNoKHRoaXMudHJhbnNsYXRlT2JqZWN0PFQ+KF9rZXksIF9wYXJhbXMsIGxhbmcpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cmFuc2xhdGlvbnM7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYW4gb2JqZWN0IG9mIHRyYW5zbGF0aW9ucyBmb3IgYSBnaXZlbiBsYW5ndWFnZVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKlxuICAgKiBnZXRUcmFuc2xhdGlvbigpXG4gICAqIGdldFRyYW5zbGF0aW9uKCdlbicpXG4gICAqIGdldFRyYW5zbGF0aW9uKCdhZG1pbi1wYWdlL2VuJylcbiAgICovXG4gIGdldFRyYW5zbGF0aW9uKCk6IE1hcDxzdHJpbmcsIFRyYW5zbGF0aW9uPjtcbiAgZ2V0VHJhbnNsYXRpb24obGFuZ09yU2NvcGU6IHN0cmluZyk6IFRyYW5zbGF0aW9uO1xuICBnZXRUcmFuc2xhdGlvbihsYW5nT3JTY29wZT86IHN0cmluZyk6IE1hcDxzdHJpbmcsIFRyYW5zbGF0aW9uPiB8IFRyYW5zbGF0aW9uIHtcbiAgICBpZiAobGFuZ09yU2NvcGUpIHtcbiAgICAgIGlmICh0aGlzLmlzTGFuZyhsYW5nT3JTY29wZSkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRpb25zLmdldChsYW5nT3JTY29wZSkgfHwge307XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBUaGlzIGlzIGEgc2NvcGUsIGJ1aWxkIHRoZSBzY29wZSB2YWx1ZSBmcm9tIHRoZSB0cmFuc2xhdGlvbiBvYmplY3RcbiAgICAgICAgY29uc3QgeyBzY29wZSwgcmVzb2x2ZUxhbmcgfSA9IHRoaXMucmVzb2x2ZUxhbmdBbmRTY29wZShsYW5nT3JTY29wZSk7XG4gICAgICAgIGNvbnN0IHRyYW5zbGF0aW9uID0gdGhpcy50cmFuc2xhdGlvbnMuZ2V0KHJlc29sdmVMYW5nKSB8fCB7fTtcblxuICAgICAgICByZXR1cm4gdGhpcy5nZXRPYmplY3RCeUtleSh0cmFuc2xhdGlvbiwgc2NvcGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGFuIG9iamVjdCBvZiB0cmFuc2xhdGlvbnMgZm9yIGEgZ2l2ZW4gbGFuZ3VhZ2VcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICpcbiAgICogc2VsZWN0VHJhbnNsYXRpb24oKS5zdWJzY3JpYmUoKSAtIHdpbGwgcmV0dXJuIHRoZSBjdXJyZW50IGxhbmcgdHJhbnNsYXRpb25cbiAgICogc2VsZWN0VHJhbnNsYXRpb24oJ2VzJykuc3Vic2NyaWJlKClcbiAgICogc2VsZWN0VHJhbnNsYXRpb24oJ2FkbWluLXBhZ2UnKS5zdWJzY3JpYmUoKSAtIHdpbGwgcmV0dXJuIHRoZSBjdXJyZW50IGxhbmcgc2NvcGUgdHJhbnNsYXRpb25cbiAgICogc2VsZWN0VHJhbnNsYXRpb24oJ2FkbWluLXBhZ2UvZXMnKS5zdWJzY3JpYmUoKVxuICAgKi9cbiAgc2VsZWN0VHJhbnNsYXRpb24obGFuZz86IHN0cmluZyk6IE9ic2VydmFibGU8VHJhbnNsYXRpb24+IHtcbiAgICBsZXQgbGFuZ3VhZ2UkID0gdGhpcy5sYW5nQ2hhbmdlcyQ7XG4gICAgaWYgKGxhbmcpIHtcbiAgICAgIGNvbnN0IHNjb3BlTGFuZ1NwZWNpZmllZCA9IGdldExhbmdGcm9tU2NvcGUobGFuZykgIT09IGxhbmc7XG4gICAgICBpZiAodGhpcy5pc0xhbmcobGFuZykgfHwgc2NvcGVMYW5nU3BlY2lmaWVkKSB7XG4gICAgICAgIGxhbmd1YWdlJCA9IG9mKGxhbmcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGFuZ3VhZ2UkID0gdGhpcy5sYW5nQ2hhbmdlcyQucGlwZShcbiAgICAgICAgICBtYXAoKGN1cnJlbnRMYW5nKSA9PiBgJHtsYW5nfS8ke2N1cnJlbnRMYW5nfWApLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBsYW5ndWFnZSQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgobGFuZ3VhZ2UpID0+XG4gICAgICAgIHRoaXMubG9hZChsYW5ndWFnZSkucGlwZShtYXAoKCkgPT4gdGhpcy5nZXRUcmFuc2xhdGlvbihsYW5ndWFnZSkpKSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIG9yIG1lcmdlIGEgZ2l2ZW4gdHJhbnNsYXRpb24gb2JqZWN0IHRvIGN1cnJlbnQgbGFuZ1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKlxuICAgKiBzZXRUcmFuc2xhdGlvbih7IC4uLiB9KVxuICAgKiBzZXRUcmFuc2xhdGlvbih7IC4uLiB9LCAnZW4nKVxuICAgKiBzZXRUcmFuc2xhdGlvbih7IC4uLiB9LCAnZXMnLCB7IG1lcmdlOiBmYWxzZSB9IClcbiAgICogc2V0VHJhbnNsYXRpb24oeyAuLi4gfSwgJ3RvZG9zL2VuJywgeyBtZXJnZTogZmFsc2UgfSApXG4gICAqL1xuICBzZXRUcmFuc2xhdGlvbihcbiAgICB0cmFuc2xhdGlvbjogVHJhbnNsYXRpb24sXG4gICAgbGFuZyA9IHRoaXMuZ2V0QWN0aXZlTGFuZygpLFxuICAgIG9wdGlvbnM6IFNldFRyYW5zbGF0aW9uT3B0aW9ucyA9IHt9LFxuICApIHtcbiAgICBjb25zdCBkZWZhdWx0cyA9IHsgbWVyZ2U6IHRydWUsIGVtaXRDaGFuZ2U6IHRydWUgfTtcbiAgICBjb25zdCBtZXJnZWRPcHRpb25zID0geyAuLi5kZWZhdWx0cywgLi4ub3B0aW9ucyB9O1xuICAgIGNvbnN0IHNjb3BlID0gZ2V0U2NvcGVGcm9tTGFuZyhsYW5nKTtcblxuICAgIC8qKlxuICAgICAqIElmIHRoaXMgaXNuJ3QgYSBzY29wZSB3ZSB1c2UgdGhlIHdob2xlIHRyYW5zbGF0aW9uIGFzIGlzXG4gICAgICogb3RoZXJ3aXNlIHdlIG5lZWQgdG8gZmxhdCB0aGUgc2NvcGUgYW5kIHVzZSBpdFxuICAgICAqL1xuICAgIGxldCBmbGF0dGVuU2NvcGVPclRyYW5zbGF0aW9uID0gdHJhbnNsYXRpb247XG5cbiAgICAvLyBNZXJnZWQgdGhlIHNjb3BlZCBsYW5ndWFnZSBpbnRvIHRoZSBhY3RpdmUgbGFuZ3VhZ2VcbiAgICBpZiAoc2NvcGUpIHtcbiAgICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0TWFwcGVkU2NvcGUoc2NvcGUpO1xuICAgICAgZmxhdHRlblNjb3BlT3JUcmFuc2xhdGlvbiA9IGZsYXR0ZW4oeyBba2V5XTogdHJhbnNsYXRpb24gfSk7XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudExhbmcgPSBzY29wZSA/IGdldExhbmdGcm9tU2NvcGUobGFuZykgOiBsYW5nO1xuXG4gICAgY29uc3QgbWVyZ2VkVHJhbnNsYXRpb24gPSB7XG4gICAgICAuLi4obWVyZ2VkT3B0aW9ucy5tZXJnZSAmJiB0aGlzLmdldFRyYW5zbGF0aW9uKGN1cnJlbnRMYW5nKSksXG4gICAgICAuLi5mbGF0dGVuU2NvcGVPclRyYW5zbGF0aW9uLFxuICAgIH07XG5cbiAgICBjb25zdCBmbGF0dGVuVHJhbnNsYXRpb24gPSB0aGlzLmNvbmZpZy5mbGF0dGVuIS5hb3RcbiAgICAgID8gbWVyZ2VkVHJhbnNsYXRpb25cbiAgICAgIDogZmxhdHRlbihtZXJnZWRUcmFuc2xhdGlvbik7XG4gICAgY29uc3Qgd2l0aEhvb2sgPSB0aGlzLmludGVyY2VwdG9yLnByZVNhdmVUcmFuc2xhdGlvbihcbiAgICAgIGZsYXR0ZW5UcmFuc2xhdGlvbixcbiAgICAgIGN1cnJlbnRMYW5nLFxuICAgICk7XG4gICAgdGhpcy50cmFuc2xhdGlvbnMuc2V0KGN1cnJlbnRMYW5nLCB3aXRoSG9vayk7XG4gICAgbWVyZ2VkT3B0aW9ucy5lbWl0Q2hhbmdlICYmIHRoaXMuc2V0QWN0aXZlTGFuZyh0aGlzLmdldEFjdGl2ZUxhbmcoKSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0cmFuc2xhdGlvbiBrZXkgd2l0aCBnaXZlbiB2YWx1ZVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKlxuICAgKiBzZXRUcmFuc2xhdGlvbktleSgna2V5JywgJ3ZhbHVlJylcbiAgICogc2V0VHJhbnNsYXRpb25LZXkoJ2tleS5uZXN0ZWQnLCAndmFsdWUnKVxuICAgKiBzZXRUcmFuc2xhdGlvbktleSgna2V5Lm5lc3RlZCcsICd2YWx1ZScsICdlbicpXG4gICAqIHNldFRyYW5zbGF0aW9uS2V5KCdrZXkubmVzdGVkJywgJ3ZhbHVlJywgJ2VuJywgeyBlbWl0Q2hhbmdlOiBmYWxzZSB9IClcbiAgICovXG4gIHNldFRyYW5zbGF0aW9uS2V5KFxuICAgIGtleTogc3RyaW5nLFxuICAgIHZhbHVlOiBzdHJpbmcsXG4gICAgb3B0aW9uczogT21pdDxTZXRUcmFuc2xhdGlvbk9wdGlvbnMsICdtZXJnZSc+ID0ge30sXG4gICkge1xuICAgIGNvbnN0IGxhbmcgPSBvcHRpb25zLmxhbmcgfHwgdGhpcy5nZXRBY3RpdmVMYW5nKCk7XG4gICAgY29uc3Qgd2l0aEhvb2sgPSB0aGlzLmludGVyY2VwdG9yLnByZVNhdmVUcmFuc2xhdGlvbktleShrZXksIHZhbHVlLCBsYW5nKTtcbiAgICBjb25zdCBuZXdWYWx1ZSA9IHtcbiAgICAgIFtrZXldOiB3aXRoSG9vayxcbiAgICB9O1xuXG4gICAgdGhpcy5zZXRUcmFuc2xhdGlvbihuZXdWYWx1ZSwgbGFuZywgeyAuLi5vcHRpb25zLCBtZXJnZTogdHJ1ZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBmYWxsYmFjayBsYW5nIGZvciB0aGUgY3VycmVudGx5IGFjdGl2ZSBsYW5ndWFnZVxuICAgKiBAcGFyYW0gZmFsbGJhY2tMYW5nXG4gICAqL1xuICBzZXRGYWxsYmFja0xhbmdGb3JNaXNzaW5nVHJhbnNsYXRpb24oe1xuICAgIGZhbGxiYWNrTGFuZyxcbiAgfTogUGljazxUcmFuc2xvY29Db25maWcsICdmYWxsYmFja0xhbmcnPikge1xuICAgIGNvbnN0IGxhbmcgPSBBcnJheS5pc0FycmF5KGZhbGxiYWNrTGFuZykgPyBmYWxsYmFja0xhbmdbMF0gOiBmYWxsYmFja0xhbmc7XG4gICAgaWYgKGZhbGxiYWNrTGFuZyAmJiB0aGlzLnVzZUZhbGxiYWNrVHJhbnNsYXRpb24obGFuZykpIHtcbiAgICAgIHRoaXMuZmlyc3RGYWxsYmFja0xhbmcgPSBsYW5nITtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBfaGFuZGxlTWlzc2luZ0tleShrZXk6IHN0cmluZywgdmFsdWU6IGFueSwgcGFyYW1zPzogSGFzaE1hcCkge1xuICAgIGlmICh0aGlzLmNvbmZpZy5taXNzaW5nSGFuZGxlciEuYWxsb3dFbXB0eSAmJiB2YWx1ZSA9PT0gJycpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaXNSZXNvbHZlZE1pc3NpbmdPbmNlICYmIHRoaXMudXNlRmFsbGJhY2tUcmFuc2xhdGlvbigpKSB7XG4gICAgICAvLyBXZSBuZWVkIHRvIHNldCBpdCB0byB0cnVlIHRvIHByZXZlbnQgYSBsb29wXG4gICAgICB0aGlzLmlzUmVzb2x2ZWRNaXNzaW5nT25jZSA9IHRydWU7XG4gICAgICBjb25zdCBmYWxsYmFja1ZhbHVlID0gdGhpcy50cmFuc2xhdGUoXG4gICAgICAgIGtleSxcbiAgICAgICAgcGFyYW1zLFxuICAgICAgICB0aGlzLmZpcnN0RmFsbGJhY2tMYW5nISxcbiAgICAgICk7XG4gICAgICB0aGlzLmlzUmVzb2x2ZWRNaXNzaW5nT25jZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm4gZmFsbGJhY2tWYWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5taXNzaW5nSGFuZGxlci5oYW5kbGUoXG4gICAgICBrZXksXG4gICAgICB0aGlzLmdldE1pc3NpbmdIYW5kbGVyRGF0YSgpLFxuICAgICAgcGFyYW1zLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBfaXNMYW5nU2NvcGVkKGxhbmc6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmdldEF2YWlsYWJsZUxhbmdzSWRzKCkuaW5kZXhPZihsYW5nKSA9PT0gLTE7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgZ2l2ZW4gc3RyaW5nIGlzIG9uZSBvZiB0aGUgc3BlY2lmaWVkIGF2YWlsYWJsZSBsYW5ndWFnZXMuXG4gICAqIEByZXR1cm5zXG4gICAqIFRydWUgaWYgdGhlIGdpdmVuIHN0cmluZyBpcyBhbiBhdmFpbGFibGUgbGFuZ3VhZ2UuXG4gICAqIEZhbHNlIGlmIHRoZSBnaXZlbiBzdHJpbmcgaXMgbm90IGFuIGF2YWlsYWJsZSBsYW5ndWFnZS5cbiAgICovXG4gIGlzTGFuZyhsYW5nOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBdmFpbGFibGVMYW5nc0lkcygpLmluZGV4T2YobGFuZykgIT09IC0xO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKlxuICAgKiBXZSBhbHdheXMgd2FudCB0byBtYWtlIHN1cmUgdGhlIGdsb2JhbCBsYW5nIGlzIGxvYWRlZFxuICAgKiBiZWZvcmUgbG9hZGluZyB0aGUgc2NvcGUgc2luY2UgeW91IGNhbiBhY2Nlc3MgYm90aCB2aWEgdGhlIHBpcGUvZGlyZWN0aXZlLlxuICAgKi9cbiAgX2xvYWREZXBlbmRlbmNpZXMoXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIGlubGluZUxvYWRlcj86IElubGluZUxvYWRlcixcbiAgKTogT2JzZXJ2YWJsZTxUcmFuc2xhdGlvbiB8IFRyYW5zbGF0aW9uW10+IHtcbiAgICBjb25zdCBtYWluTGFuZyA9IGdldExhbmdGcm9tU2NvcGUocGF0aCk7XG5cbiAgICBpZiAodGhpcy5faXNMYW5nU2NvcGVkKHBhdGgpICYmICF0aGlzLmlzTG9hZGVkVHJhbnNsYXRpb24obWFpbkxhbmcpKSB7XG4gICAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMubG9hZChtYWluTGFuZyksXG4gICAgICAgIHRoaXMubG9hZChwYXRoLCB7IGlubGluZUxvYWRlciB9KSxcbiAgICAgIF0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5sb2FkKHBhdGgsIHsgaW5saW5lTG9hZGVyIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgX2NvbXBsZXRlU2NvcGVXaXRoTGFuZyhsYW5nT3JTY29wZTogc3RyaW5nKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5faXNMYW5nU2NvcGVkKGxhbmdPclNjb3BlKSAmJlxuICAgICAgIXRoaXMuaXNMYW5nKGdldExhbmdGcm9tU2NvcGUobGFuZ09yU2NvcGUpKVxuICAgICkge1xuICAgICAgcmV0dXJuIGAke2xhbmdPclNjb3BlfS8ke3RoaXMuZ2V0QWN0aXZlTGFuZygpfWA7XG4gICAgfVxuICAgIHJldHVybiBsYW5nT3JTY29wZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF9zZXRTY29wZUFsaWFzKHNjb3BlOiBzdHJpbmcsIGFsaWFzOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnLnNjb3BlTWFwcGluZykge1xuICAgICAgdGhpcy5jb25maWcuc2NvcGVNYXBwaW5nID0ge307XG4gICAgfVxuICAgIHRoaXMuY29uZmlnLnNjb3BlTWFwcGluZ1tzY29wZV0gPSBhbGlhcztcbiAgfVxuXG4gIHByaXZhdGUgaXNMb2FkZWRUcmFuc2xhdGlvbihsYW5nOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gc2l6ZSh0aGlzLmdldFRyYW5zbGF0aW9uKGxhbmcpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QXZhaWxhYmxlTGFuZ3NJZHMoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGZpcnN0ID0gdGhpcy5nZXRBdmFpbGFibGVMYW5ncygpWzBdO1xuXG4gICAgaWYgKGlzU3RyaW5nKGZpcnN0KSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0QXZhaWxhYmxlTGFuZ3MoKSBhcyBzdHJpbmdbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gKHRoaXMuZ2V0QXZhaWxhYmxlTGFuZ3MoKSBhcyBMYW5nRGVmaW5pdGlvbltdKS5tYXAoKGwpID0+IGwuaWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNaXNzaW5nSGFuZGxlckRhdGEoKTogVHJhbnNsb2NvTWlzc2luZ0hhbmRsZXJEYXRhIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5jb25maWcsXG4gICAgICBhY3RpdmVMYW5nOiB0aGlzLmdldEFjdGl2ZUxhbmcoKSxcbiAgICAgIGF2YWlsYWJsZUxhbmdzOiB0aGlzLmF2YWlsYWJsZUxhbmdzLFxuICAgICAgZGVmYXVsdExhbmc6IHRoaXMuZGVmYXVsdExhbmcsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgYSBmYWxsYmFjayB0cmFuc2xhdGlvbiBzZXQgZm9yIG1pc3Npbmcga2V5cyBvZiB0aGUgcHJpbWFyeSBsYW5ndWFnZVxuICAgKiBUaGlzIGlzIHVucmVsYXRlZCB0byB0aGUgZmFsbGJhY2sgbGFuZ3VhZ2UgKHdoaWNoIGNoYW5nZXMgdGhlIGFjdGl2ZSBsYW5ndWFnZSlcbiAgICovXG4gIHByaXZhdGUgdXNlRmFsbGJhY2tUcmFuc2xhdGlvbihsYW5nPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuY29uZmlnLm1pc3NpbmdIYW5kbGVyIS51c2VGYWxsYmFja1RyYW5zbGF0aW9uICYmXG4gICAgICBsYW5nICE9PSB0aGlzLmZpcnN0RmFsbGJhY2tMYW5nXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU3VjY2VzcyhsYW5nOiBzdHJpbmcsIHRyYW5zbGF0aW9uOiBUcmFuc2xhdGlvbikge1xuICAgIHRoaXMuc2V0VHJhbnNsYXRpb24odHJhbnNsYXRpb24sIGxhbmcsIHsgZW1pdENoYW5nZTogZmFsc2UgfSk7XG4gICAgdGhpcy5ldmVudHMubmV4dCh7XG4gICAgICB3YXNGYWlsdXJlOiAhIXRoaXMuZmFpbGVkTGFuZ3Muc2l6ZSxcbiAgICAgIHR5cGU6ICd0cmFuc2xhdGlvbkxvYWRTdWNjZXNzJyxcbiAgICAgIHBheWxvYWQ6IGdldEV2ZW50UGF5bG9hZChsYW5nKSxcbiAgICB9KTtcbiAgICB0aGlzLmZhaWxlZExhbmdzLmZvckVhY2goKGwpID0+IHRoaXMuY2FjaGUuZGVsZXRlKGwpKTtcbiAgICB0aGlzLmZhaWxlZExhbmdzLmNsZWFyKCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUZhaWx1cmUobGFuZzogc3RyaW5nLCBsb2FkT3B0aW9uczogTG9hZE9wdGlvbnMpIHtcbiAgICAvLyBXaGVuIHN0YXJ0aW5nIHRvIGxvYWQgYSBmaXJzdCBjaG9pY2UgbGFuZ3VhZ2UsIGluaXRpYWxpemVcbiAgICAvLyB0aGUgZmFpbGVkIGNvdW50ZXIgYW5kIHJlc29sdmUgdGhlIGZhbGxiYWNrIGxhbmdzLlxuICAgIGlmIChpc05pbChsb2FkT3B0aW9ucy5mYWlsZWRDb3VudGVyKSkge1xuICAgICAgbG9hZE9wdGlvbnMuZmFpbGVkQ291bnRlciA9IDA7XG5cbiAgICAgIGlmICghbG9hZE9wdGlvbnMuZmFsbGJhY2tMYW5ncykge1xuICAgICAgICBsb2FkT3B0aW9ucy5mYWxsYmFja0xhbmdzID0gdGhpcy5mYWxsYmFja1N0cmF0ZWd5LmdldE5leHRMYW5ncyhsYW5nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBzcGxpdHRlZCA9IGxhbmcuc3BsaXQoJy8nKTtcbiAgICBjb25zdCBmYWxsYmFja3MgPSBsb2FkT3B0aW9ucy5mYWxsYmFja0xhbmdzO1xuICAgIGNvbnN0IG5leHRMYW5nID0gZmFsbGJhY2tzIVtsb2FkT3B0aW9ucy5mYWlsZWRDb3VudGVyIV07XG4gICAgdGhpcy5mYWlsZWRMYW5ncy5hZGQobGFuZyk7XG5cbiAgICAvLyBUaGlzIGhhbmRsZXMgdGhlIGNhc2Ugd2hlcmUgYSBsb2FkZWQgZmFsbGJhY2sgbGFuZ3VhZ2UgaXMgcmVxdWVzdGVkIGFnYWluXG4gICAgaWYgKHRoaXMuY2FjaGUuaGFzKG5leHRMYW5nKSkge1xuICAgICAgdGhpcy5oYW5kbGVTdWNjZXNzKG5leHRMYW5nLCB0aGlzLmdldFRyYW5zbGF0aW9uKG5leHRMYW5nKSk7XG4gICAgICByZXR1cm4gRU1QVFk7XG4gICAgfVxuXG4gICAgY29uc3QgaXNGYWxsYmFja0xhbmcgPSBuZXh0TGFuZyA9PT0gc3BsaXR0ZWRbc3BsaXR0ZWQubGVuZ3RoIC0gMV07XG5cbiAgICBpZiAoIW5leHRMYW5nIHx8IGlzRmFsbGJhY2tMYW5nKSB7XG4gICAgICBsZXQgbXNnID0gYFVuYWJsZSB0byBsb2FkIHRyYW5zbGF0aW9uIGFuZCBhbGwgdGhlIGZhbGxiYWNrIGxhbmd1YWdlc2A7XG4gICAgICBpZiAoc3BsaXR0ZWQubGVuZ3RoID4gMSkge1xuICAgICAgICBtc2cgKz0gYCwgZGlkIHlvdSBtaXNzcGVsbGVkIHRoZSBzY29wZSBuYW1lP2A7XG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgIH1cblxuICAgIGxldCByZXNvbHZlTGFuZyA9IG5leHRMYW5nO1xuICAgIC8vIGlmIGl0J3Mgc2NvcGVkIGxhbmdcbiAgICBpZiAoc3BsaXR0ZWQubGVuZ3RoID4gMSkge1xuICAgICAgLy8gV2UgbmVlZCB0byByZXNvbHZlIGl0IHRvOlxuICAgICAgLy8gdG9kb3MvbGFuZ05vdEV4aXN0cyA9PiB0b2Rvcy9uZXh0TGFuZ1xuICAgICAgc3BsaXR0ZWRbc3BsaXR0ZWQubGVuZ3RoIC0gMV0gPSBuZXh0TGFuZztcbiAgICAgIHJlc29sdmVMYW5nID0gc3BsaXR0ZWQuam9pbignLycpO1xuICAgIH1cblxuICAgIGxvYWRPcHRpb25zLmZhaWxlZENvdW50ZXIhKys7XG4gICAgdGhpcy5ldmVudHMubmV4dCh7XG4gICAgICB0eXBlOiAndHJhbnNsYXRpb25Mb2FkRmFpbHVyZScsXG4gICAgICBwYXlsb2FkOiBnZXRFdmVudFBheWxvYWQobGFuZyksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5sb2FkKHJlc29sdmVMYW5nLCBsb2FkT3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIGdldE1hcHBlZFNjb3BlKHNjb3BlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHsgc2NvcGVNYXBwaW5nID0ge30sIHNjb3BlcyA9IHsga2VlcENhc2luZzogZmFsc2UgfSB9ID0gdGhpcy5jb25maWc7XG4gICAgcmV0dXJuIChcbiAgICAgIHNjb3BlTWFwcGluZ1tzY29wZV0gfHwgKHNjb3Blcy5rZWVwQ2FzaW5nID8gc2NvcGUgOiB0b0NhbWVsQ2FzZShzY29wZSkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiBsYW5nIGlzIHNjb3BlIHdlIG5lZWQgdG8gY2hlY2sgdGhlIGZvbGxvd2luZyBjYXNlczpcbiAgICogdG9kb3MvZXMgPT4gaW4gdGhpcyBjYXNlIHdlIHNob3VsZCB0YWtlIGBlc2AgYXMgbGFuZ1xuICAgKiB0b2RvcyA9PiBpbiB0aGlzIGNhc2Ugd2Ugc2hvdWxkIHNldCB0aGUgYWN0aXZlIGxhbmcgYXMgbGFuZ1xuICAgKi9cbiAgcHJpdmF0ZSByZXNvbHZlTGFuZ0FuZFNjb3BlKGxhbmc6IHN0cmluZykge1xuICAgIGxldCByZXNvbHZlTGFuZyA9IGxhbmc7XG4gICAgbGV0IHNjb3BlO1xuXG4gICAgaWYgKHRoaXMuX2lzTGFuZ1Njb3BlZChsYW5nKSkge1xuICAgICAgLy8gZW4gZm9yIGV4YW1wbGVcbiAgICAgIGNvbnN0IGxhbmdGcm9tU2NvcGUgPSBnZXRMYW5nRnJvbVNjb3BlKGxhbmcpO1xuICAgICAgLy8gZW4gaXMgbGFuZ1xuICAgICAgY29uc3QgaGFzTGFuZyA9IHRoaXMuaXNMYW5nKGxhbmdGcm9tU2NvcGUpO1xuICAgICAgLy8gdGFrZSBlblxuICAgICAgcmVzb2x2ZUxhbmcgPSBoYXNMYW5nID8gbGFuZ0Zyb21TY29wZSA6IHRoaXMuZ2V0QWN0aXZlTGFuZygpO1xuICAgICAgLy8gZmluZCB0aGUgc2NvcGVcbiAgICAgIHNjb3BlID0gdGhpcy5nZXRNYXBwZWRTY29wZShoYXNMYW5nID8gZ2V0U2NvcGVGcm9tTGFuZyhsYW5nKSA6IGxhbmcpO1xuICAgIH1cblxuICAgIHJldHVybiB7IHNjb3BlLCByZXNvbHZlTGFuZyB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRPYmplY3RCeUtleSh0cmFuc2xhdGlvbjogVHJhbnNsYXRpb24sIGtleT86IHN0cmluZykge1xuICAgIGNvbnN0IHJlc3VsdDogVHJhbnNsYXRpb24gPSB7fTtcbiAgICBjb25zdCBwcmVmaXggPSBgJHtrZXl9LmA7XG5cbiAgICBmb3IgKGNvbnN0IGN1cnJlbnRLZXkgaW4gdHJhbnNsYXRpb24pIHtcbiAgICAgIGlmIChjdXJyZW50S2V5LnN0YXJ0c1dpdGgocHJlZml4KSkge1xuICAgICAgICByZXN1bHRbY3VycmVudEtleS5yZXBsYWNlKHByZWZpeCwgJycpXSA9IHRyYW5zbGF0aW9uW2N1cnJlbnRLZXldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIGdldEVudHJpZXMoa2V5OiBIYXNoTWFwIHwgTWFwPHN0cmluZywgSGFzaE1hcD4pIHtcbiAgICByZXR1cm4ga2V5IGluc3RhbmNlb2YgTWFwID8ga2V5LmVudHJpZXMoKSA6IE9iamVjdC5lbnRyaWVzKGtleSk7XG4gIH1cbn1cbiJdfQ==
583
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsb2NvLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3RyYW5zbG9jby9zcmMvbGliL3RyYW5zbG9jby5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxVQUFVLEVBQ1YsTUFBTSxFQUNOLE1BQU0sRUFDTixVQUFVLEVBQ1YsUUFBUSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxlQUFlLEVBQ2YsVUFBVSxFQUNWLGFBQWEsRUFDYixLQUFLLEVBQ0wsUUFBUSxFQUNSLElBQUksRUFDSixHQUFHLEVBRUgsRUFBRSxFQUNGLEtBQUssRUFDTCxXQUFXLEVBQ1gsT0FBTyxFQUNQLFNBQVMsRUFDVCxHQUFHLEdBQ0osTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdFLE9BQU8sRUFDTCxhQUFhLEVBQ2IsZ0JBQWdCLEdBRWpCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUNMLG9CQUFvQixHQUVyQixNQUFNLHdCQUF3QixDQUFDO0FBYWhDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBbUIsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RSxPQUFPLEVBQ0wseUJBQXlCLEdBRzFCLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUNMLHFCQUFxQixHQUV0QixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFDTCwyQkFBMkIsR0FFNUIsTUFBTSwrQkFBK0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFD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QyxHQUFHLENBQUMsQ0FBQztJQUNsRSxDQUFDO3VHQWp2QlUsZ0JBQWdCLGtCQXFCTCxnQkFBZ0IsNkJBQzVCLG9CQUFvQixhQUNwQix5QkFBeUIsYUFFekIscUJBQXFCLGFBQ3JCLGdCQUFnQixhQUNoQiwyQkFBMkI7MkdBM0IxQixnQkFBZ0IsY0FESCxNQUFNOzsyRkFDbkIsZ0JBQWdCO2tCQUQ1QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBc0I3QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGdCQUFnQjs7MEJBQ25DLE1BQU07MkJBQUMsb0JBQW9COzswQkFDM0IsTUFBTTsyQkFBQyx5QkFBeUI7OzBCQUVoQyxNQUFNOzJCQUFDLHFCQUFxQjs7MEJBQzVCLE1BQU07MkJBQUMsZ0JBQWdCOzswQkFDdkIsTUFBTTsyQkFBQywyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEZXN0cm95UmVmLFxuICBpbmplY3QsXG4gIEluamVjdCxcbiAgSW5qZWN0YWJsZSxcbiAgT3B0aW9uYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBjYXRjaEVycm9yLFxuICBjb21iaW5lTGF0ZXN0LFxuICBFTVBUWSxcbiAgZm9ya0pvaW4sXG4gIGZyb20sXG4gIG1hcCxcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIHJldHJ5LFxuICBzaGFyZVJlcGxheSxcbiAgU3ViamVjdCxcbiAgc3dpdGNoTWFwLFxuICB0YXAsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgaXNFbXB0eSwgaXNOaWwsIGlzU3RyaW5nLCBzaXplLCB0b0NhbWVsQ2FzZSB9IGZyb20gJ0Bqc3ZlcnNlL3V0aWxzJztcblxuaW1wb3J0IHtcbiAgRGVmYXVsdExvYWRlcixcbiAgVFJBTlNMT0NPX0xPQURFUixcbiAgVHJhbnNsb2NvTG9hZGVyLFxufSBmcm9tICcuL3RyYW5zbG9jby5sb2FkZXInO1xuaW1wb3J0IHtcbiAgVFJBTlNMT0NPX1RSQU5TUElMRVIsXG4gIFRyYW5zbG9jb1RyYW5zcGlsZXIsXG59IGZyb20gJy4vdHJhbnNsb2NvLnRyYW5zcGlsZXInO1xuaW1wb3J0IHtcbiAgQXZhaWxhYmxlTGFuZ3MsXG4gIElubGluZUxvYWRlcixcbiAgTGFuZ0RlZmluaXRpb24sXG4gIExvYWRPcHRpb25zLFxuICBTZXRUcmFuc2xhdGlvbk9wdGlvbnMsXG4gIFRyYW5zbGF0ZU9iamVjdFBhcmFtcyxcbiAgVHJhbnNsYXRlUGFyYW1zLFxuICBUcmFuc2xhdGlvbixcbiAgVHJhbnNsb2NvRXZlbnRzLFxuICBUcmFuc2xvY29TY29wZSxcbn0gZnJvbSAnLi90cmFuc2xvY28udHlwZXMnO1xuaW1wb3J0IHsgVFJBTlNMT0NPX0NPTkZJRywgVHJhbnNsb2NvQ29uZmlnIH0gZnJvbSAnLi90cmFuc2xvY28uY29uZmlnJztcbmltcG9ydCB7XG4gIFRSQU5TTE9DT19NSVNTSU5HX0hBTkRMRVIsXG4gIFRyYW5zbG9jb01pc3NpbmdIYW5kbGVyLFxuICBUcmFuc2xvY29NaXNzaW5nSGFuZGxlckRhdGEsXG59IGZyb20gJy4vdHJhbnNsb2NvLW1pc3NpbmctaGFuZGxlcic7XG5pbXBvcnQge1xuICBUUkFOU0xPQ09fSU5URVJDRVBUT1IsXG4gIFRyYW5zbG9jb0ludGVyY2VwdG9yLFxufSBmcm9tICcuL3RyYW5zbG9jby5pbnRlcmNlcHRvcic7XG5pbXBvcnQge1xuICBUUkFOU0xPQ09fRkFMTEJBQ0tfU1RSQVRFR1ksXG4gIFRyYW5zbG9jb0ZhbGxiYWNrU3RyYXRlZ3ksXG59IGZyb20gJy4vdHJhbnNsb2NvLWZhbGxiYWNrLXN0cmF0ZWd5JztcbmltcG9ydCB7IGdldEZhbGxiYWNrc0xvYWRlcnMgfSBmcm9tICcuL2dldC1mYWxsYmFja3MtbG9hZGVycyc7XG5pbXBvcnQgeyByZXNvbHZlTG9hZGVyIH0gZnJvbSAnLi9yZXNvbHZlLWxvYWRlcic7XG5pbXBvcnQgeyBmbGF0dGVuLCB1bmZsYXR0ZW4gfSBmcm9tICcuL3V0aWxzL2ZsYXQudXRpbHMnO1xuaW1wb3J0IHsgSGFzaE1hcCB9IGZyb20gJy4vdXRpbHMvdHlwZS51dGlscyc7XG5pbXBvcnQge1xuICBnZXRFdmVudFBheWxvYWQsXG4gIGdldExhbmdGcm9tU2NvcGUsXG4gIGdldFNjb3BlRnJvbUxhbmcsXG4gIGlzU2NvcGVPYmplY3QsXG4gIHJlc29sdmVJbmxpbmVMb2FkZXIsXG59IGZyb20gJy4vdXRpbHMvc2NvcGUudXRpbHMnO1xuXG5sZXQgc2VydmljZTogVHJhbnNsb2NvU2VydmljZTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zbGF0ZTxUID0gc3RyaW5nPihcbiAga2V5OiBUcmFuc2xhdGVQYXJhbXMsXG4gIHBhcmFtczogSGFzaE1hcCA9IHt9LFxuICBsYW5nPzogc3RyaW5nLFxuKTogVCB7XG4gIHJldHVybiBzZXJ2aWNlLnRyYW5zbGF0ZTxUPihrZXksIHBhcmFtcywgbGFuZyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2xhdGVPYmplY3Q8VD4oXG4gIGtleTogVHJhbnNsYXRlUGFyYW1zLFxuICBwYXJhbXM6IEhhc2hNYXAgPSB7fSxcbiAgbGFuZz86IHN0cmluZyxcbik6IFQgfCBUW10ge1xuICByZXR1cm4gc2VydmljZS50cmFuc2xhdGVPYmplY3Q8VD4oa2V5LCBwYXJhbXMsIGxhbmcpO1xufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFRyYW5zbG9jb1NlcnZpY2Uge1xuICBsYW5nQ2hhbmdlcyQ6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICBwcml2YXRlIHRyYW5zbGF0aW9ucyA9IG5ldyBNYXA8c3RyaW5nLCBUcmFuc2xhdGlvbj4oKTtcbiAgcHJpdmF0ZSBjYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBPYnNlcnZhYmxlPFRyYW5zbGF0aW9uPj4oKTtcbiAgcHJpdmF0ZSBmaXJzdEZhbGxiYWNrTGFuZzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGRlZmF1bHRMYW5nID0gJyc7XG4gIHByaXZhdGUgYXZhaWxhYmxlTGFuZ3M6IEF2YWlsYWJsZUxhbmdzID0gW107XG4gIHByaXZhdGUgaXNSZXNvbHZlZE1pc3NpbmdPbmNlID0gZmFsc2U7XG4gIHByaXZhdGUgbGFuZzogQmVoYXZpb3JTdWJqZWN0PHN0cmluZz47XG4gIHByaXZhdGUgZmFpbGVkTGFuZ3MgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgcHJpdmF0ZSBldmVudHMgPSBuZXcgU3ViamVjdDxUcmFuc2xvY29FdmVudHM+KCk7XG5cbiAgZXZlbnRzJCA9IHRoaXMuZXZlbnRzLmFzT2JzZXJ2YWJsZSgpO1xuICByZWFkb25seSBjb25maWc6IFRyYW5zbG9jb0NvbmZpZyAmIHtcbiAgICBzY29wZU1hcHBpbmc/OiBIYXNoTWFwPHN0cmluZz47XG4gIH07XG5cbiAgcHJpdmF0ZSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoVFJBTlNMT0NPX0xPQURFUikgcHJpdmF0ZSBsb2FkZXI6IFRyYW5zbG9jb0xvYWRlcixcbiAgICBASW5qZWN0KFRSQU5TTE9DT19UUkFOU1BJTEVSKSBwcml2YXRlIHBhcnNlcjogVHJhbnNsb2NvVHJhbnNwaWxlcixcbiAgICBASW5qZWN0KFRSQU5TTE9DT19NSVNTSU5HX0hBTkRMRVIpXG4gICAgcHJpdmF0ZSBtaXNzaW5nSGFuZGxlcjogVHJhbnNsb2NvTWlzc2luZ0hhbmRsZXIsXG4gICAgQEluamVjdChUUkFOU0xPQ09fSU5URVJDRVBUT1IpIHByaXZhdGUgaW50ZXJjZXB0b3I6IFRyYW5zbG9jb0ludGVyY2VwdG9yLFxuICAgIEBJbmplY3QoVFJBTlNMT0NPX0NPTkZJRykgdXNlckNvbmZpZzogVHJhbnNsb2NvQ29uZmlnLFxuICAgIEBJbmplY3QoVFJBTlNMT0NPX0ZBTExCQUNLX1NUUkFURUdZKVxuICAgIHByaXZhdGUgZmFsbGJhY2tTdHJhdGVneTogVHJhbnNsb2NvRmFsbGJhY2tTdHJhdGVneSxcbiAgKSB7XG4gICAgaWYgKCF0aGlzLmxvYWRlcikge1xuICAgICAgdGhpcy5sb2FkZXIgPSBuZXcgRGVmYXVsdExvYWRlcih0aGlzLnRyYW5zbGF0aW9ucyk7XG4gICAgfVxuICAgIHNlcnZpY2UgPSB0aGlzO1xuICAgIHRoaXMuY29uZmlnID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh1c2VyQ29uZmlnKSk7XG5cbiAgICB0aGlzLnNldEF2YWlsYWJsZUxhbmdzKHRoaXMuY29uZmlnLmF2YWlsYWJsZUxhbmdzIHx8IFtdKTtcbiAgICB0aGlzLnNldEZhbGxiYWNrTGFuZ0Zvck1pc3NpbmdUcmFuc2xhdGlvbih0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5zZXREZWZhdWx0TGFuZyh0aGlzLmNvbmZpZy5kZWZhdWx0TGFuZyk7XG4gICAgdGhpcy5sYW5nID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KHRoaXMuZ2V0RGVmYXVsdExhbmcoKSk7XG4gICAgLy8gRG9uJ3QgdXNlIGRpc3RpbmN0VW50aWxDaGFuZ2VkIGFzIHdlIG5lZWQgdGhlIGFiaWxpdHkgdG8gdXBkYXRlXG4gICAgLy8gdGhlIHZhbHVlIHdoZW4gdXNpbmcgc2V0VHJhbnNsYXRpb24gb3Igc2V0VHJhbnNsYXRpb25LZXlzXG4gICAgdGhpcy5sYW5nQ2hhbmdlcyQgPSB0aGlzLmxhbmcuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICAvKipcbiAgICAgKiBXaGVuIHdlIGhhdmUgYSBmYWlsdXJlLCB3ZSB3YW50IHRvIGRlZmluZSB0aGUgbmV4dCBsYW5ndWFnZSB0aGF0IHN1Y2NlZWRlZCBhcyB0aGUgYWN0aXZlXG4gICAgICovXG4gICAgdGhpcy5ldmVudHMkLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgaWYgKGUudHlwZSA9PT0gJ3RyYW5zbGF0aW9uTG9hZFN1Y2Nlc3MnICYmIGUud2FzRmFpbHVyZSkge1xuICAgICAgICB0aGlzLnNldEFjdGl2ZUxhbmcoZS5wYXlsb2FkLmxhbmdOYW1lKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuZGVzdHJveVJlZi5vbkRlc3Ryb3koKCkgPT4ge1xuICAgICAgLy8gQ29tcGxldGUgc3ViamVjdHMgdG8gcmVsZWFzZSBvYnNlcnZlcnMgaWYgdXNlcnMgZm9yZ2V0IHRvIHVuc3Vic2NyaWJlIG1hbnVhbGx5LlxuICAgICAgLy8gVGhpcyBpcyBpbXBvcnRhbnQgaW4gc2VydmVyLXNpZGUgcmVuZGVyaW5nLlxuICAgICAgdGhpcy5sYW5nLmNvbXBsZXRlKCk7XG4gICAgICB0aGlzLmV2ZW50cy5jb21wbGV0ZSgpO1xuICAgICAgLy8gQXMgYSByb290IHByb3ZpZGVyLCB0aGlzIHNlcnZpY2UgaXMgZGVzdHJveWVkIHdpdGggd2hlbiB0aGUgYXBwbGljYXRpb24gaXMgZGVzdHJveWVkLlxuICAgICAgLy8gQ2FjaGVkIHZhbHVlcyByZXRhaW4gYHRoaXNgLCBjYXVzaW5nIGNpcmN1bGFyIHJlZmVyZW5jZXMgdGhhdCBibG9jayBnYXJiYWdlIGNvbGxlY3Rpb24sXG4gICAgICAvLyBsZWFkaW5nIHRvIG1lbW9yeSBsZWFrcyBkdXJpbmcgc2VydmVyLXNpZGUgcmVuZGVyaW5nLlxuICAgICAgdGhpcy5jYWNoZS5jbGVhcigpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0RGVmYXVsdExhbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGVmYXVsdExhbmc7XG4gIH1cblxuICBzZXREZWZhdWx0TGFuZyhsYW5nOiBzdHJpbmcpIHtcbiAgICB0aGlzLmRlZmF1bHRMYW5nID0gbGFuZztcbiAgfVxuXG4gIGdldEFjdGl2ZUxhbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMubGFuZy5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgc2V0QWN0aXZlTGFuZyhsYW5nOiBzdHJpbmcpIHtcbiAgICB0aGlzLnBhcnNlci5vbkxhbmdDaGFuZ2VkPy4obGFuZyk7XG4gICAgdGhpcy5sYW5nLm5leHQobGFuZyk7XG4gICAgdGhpcy5ldmVudHMubmV4dCh7XG4gICAgICB0eXBlOiAnbGFuZ0NoYW5nZWQnLFxuICAgICAgcGF5bG9hZDogZ2V0RXZlbnRQYXlsb2FkKGxhbmcpLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0QXZhaWxhYmxlTGFuZ3MobGFuZ3M6IEF2YWlsYWJsZUxhbmdzKSB7XG4gICAgdGhpcy5hdmFpbGFibGVMYW5ncyA9IGxhbmdzO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGF2YWlsYWJsZSBsYW5ndWFnZXMuXG4gICAqXG4gICAqIEByZXR1cm5zXG4gICAqIEFuIGFycmF5IG9mIHRoZSBhdmFpbGFibGUgbGFuZ3VhZ2VzLiBDYW4gYmUgZWl0aGVyIGEgYHN0cmluZ1tdYCBvciBhIGB7IGlkOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfVtdYFxuICAgKiBkZXBlbmRpbmcgb24gaG93IHRoZSBhdmFpbGFibGUgbGFuZ3VhZ2VzIGFyZSBzZXQgaW4geW91ciBtb2R1bGUuXG4gICAqL1xuICBnZXRBdmFpbGFibGVMYW5ncygpIHtcbiAgICByZXR1cm4gdGhpcy5hdmFpbGFibGVMYW5ncztcbiAgfVxuXG4gIGxvYWQocGF0aDogc3RyaW5nLCBvcHRpb25zOiBMb2FkT3B0aW9ucyA9IHt9KTogT2JzZXJ2YWJsZTxUcmFuc2xhdGlvbj4ge1xuICAgIGNvbnN0IGNhY2hlZCA9IHRoaXMuY2FjaGUuZ2V0KHBhdGgpO1xuICAgIGlmIChjYWNoZWQpIHtcbiAgICAgIHJldHVybiBjYWNoZWQ7XG4gICAgfVxuXG4gICAgbGV0IGxvYWRUcmFuc2xhdGlvbjogT2JzZXJ2YWJsZTxcbiAgICAgIFRyYW5zbGF0aW9uIHwgeyB0cmFuc2xhdGlvbjogVHJhbnNsYXRpb247IGxhbmc6IHN0cmluZyB9W11cbiAgICA+O1xuICAgIGNvbnN0IGlzU2NvcGUgPSB0aGlzLl9pc0xhbmdTY29wZWQocGF0aCk7XG4gICAgbGV0IHNjb3BlOiBzdHJpbmc7XG4gICAgaWYgKGlzU2NvcGUpIHtcbiAgICAgIHNjb3BlID0gZ2V0U2NvcGVGcm9tTGFuZyhwYXRoKTtcbiAgICB9XG5cbiAgICBjb25zdCBsb2FkZXJzT3B0aW9ucyA9IHtcbiAgICAgIHBhdGgsXG4gICAgICBtYWluTG9hZGVyOiB0aGlzLmxvYWRlcixcbiAgICAgIGlubGluZUxvYWRlcjogb3B0aW9ucy5pbmxpbmVMb2FkZXIsXG4gICAgICBkYXRhOiBpc1Njb3BlID8geyBzY29wZTogc2NvcGUhIH0gOiB1bmRlZmluZWQsXG4gICAgfTtcblxuICAgIGlmICh0aGlzLnVzZUZhbGxiYWNrVHJhbnNsYXRpb24ocGF0aCkpIHtcbiAgICAgIC8vIGlmIHRoZSBwYXRoIGlzIHNjb3BlIHRoZSBmYWxsYmFjayBzaG91bGQgYmUgYHNjb3BlL2ZhbGxiYWNrTGFuZ2A7XG4gICAgICBjb25zdCBmYWxsYmFjayA9IGlzU2NvcGVcbiAgICAgICAgPyBgJHtzY29wZSF9LyR7dGhpcy5maXJzdEZhbGxiYWNrTGFuZ31gXG4gICAgICAgIDogdGhpcy5maXJzdEZhbGxiYWNrTGFuZztcblxuICAgICAgY29uc3QgbG9hZGVycyA9IGdldEZhbGxiYWNrc0xvYWRlcnMoe1xuICAgICAgICAuLi5sb2FkZXJzT3B0aW9ucyxcbiAgICAgICAgZmFsbGJhY2tQYXRoOiBmYWxsYmFjayEsXG4gICAgICB9KTtcbiAgICAgIGxvYWRUcmFuc2xhdGlvbiA9IGZvcmtKb2luKGxvYWRlcnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBsb2FkZXIgPSByZXNvbHZlTG9hZGVyKGxvYWRlcnNPcHRpb25zKTtcbiAgICAgIGxvYWRUcmFuc2xhdGlvbiA9IGZyb20obG9hZGVyKTtcbiAgICB9XG5cbiAgICBjb25zdCBsb2FkJCA9IGxvYWRUcmFuc2xhdGlvbi5waXBlKFxuICAgICAgcmV0cnkodGhpcy5jb25maWcuZmFpbGVkUmV0cmllcyksXG4gICAgICB0YXAoKHRyYW5zbGF0aW9uKSA9PiB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRyYW5zbGF0aW9uKSkge1xuICAgICAgICAgIHRyYW5zbGF0aW9uLmZvckVhY2goKHQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlU3VjY2Vzcyh0LmxhbmcsIHQudHJhbnNsYXRpb24pO1xuICAgICAgICAgICAgLy8gU2F2ZSB0aGUgZmFsbGJhY2sgaW4gY2FjaGUgc28gd2UnbGwgbm90IGNyZWF0ZSBhIHJlZHVuZGFudCByZXF1ZXN0XG4gICAgICAgICAgICBpZiAodC5sYW5nICE9PSBwYXRoKSB7XG4gICAgICAgICAgICAgIHRoaXMuY2FjaGUuc2V0KHQubGFuZywgb2Yoe30pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVTdWNjZXNzKHBhdGgsIHRyYW5zbGF0aW9uKTtcbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbmZpZy5wcm9kTW9kZSkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEVycm9yIHdoaWxlIHRyeWluZyB0byBsb2FkIFwiJHtwYXRofVwiYCwgZXJyb3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlRmFpbHVyZShwYXRoLCBvcHRpb25zKTtcbiAgICAgIH0pLFxuICAgICAgc2hhcmVSZXBsYXkoMSksXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSxcbiAgICApO1xuXG4gICAgdGhpcy5jYWNoZS5zZXQocGF0aCwgbG9hZCQpO1xuXG4gICAgcmV0dXJuIGxvYWQkO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGluc3RhbnQgdHJhbnNsYXRlZCB2YWx1ZSBvZiBhIGtleVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKlxuICAgKiB0cmFuc2xhdGU8c3RyaW5nPignaGVsbG8nKVxuICAgKiB0cmFuc2xhdGUoJ2hlbGxvJywgeyB2YWx1ZTogJ3ZhbHVlJyB9KVxuICAgKiB0cmFuc2xhdGU8c3RyaW5nW10+KFsnaGVsbG8nLCAna2V5J10pXG4gICAqIHRyYW5zbGF0ZSgnaGVsbG8nLCB7IH0sICdlbicpXG4gICAqIHRyYW5zbGF0ZSgnc2NvcGUuc29tZUtleScsIHsgfSwgJ2VuJylcbiAgICovXG4gIHRyYW5zbGF0ZTxUID0gc3RyaW5nPihcbiAgICBrZXk6IFRyYW5zbGF0ZVBhcmFtcyxcbiAgICBwYXJhbXM6IEhhc2hNYXAgPSB7fSxcbiAgICBsYW5nID0gdGhpcy5nZXRBY3RpdmVMYW5nKCksXG4gICk6IFQge1xuICAgIGlmICgha2V5KSByZXR1cm4ga2V5IGFzIGFueTtcblxuICAgIGNvbnN0IHsgc2NvcGUsIHJlc29sdmVMYW5nIH0gPSB0aGlzLnJlc29sdmVMYW5nQW5kU2NvcGUobGFuZyk7XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShrZXkpKSB7XG4gICAgICByZXR1cm4ga2V5Lm1hcCgoaykgPT5cbiAgICAgICAgdGhpcy50cmFuc2xhdGUoXG4gICAgICAgICAgdGhpcy5jb25maWcuc2NvcGVzLmF1dG9QcmVmaXhLZXlzICYmIHNjb3BlID8gYCR7c2NvcGV9LiR7a31gIDogayxcbiAgICAgICAgICBwYXJhbXMsXG4gICAgICAgICAgcmVzb2x2ZUxhbmcsXG4gICAgICAgICksXG4gICAgICApIGFzIGFueTtcbiAgICB9XG5cbiAgICBrZXkgPSB0aGlzLmNvbmZpZy5zY29wZXMuYXV0b1ByZWZpeEtleXMgJiYgc2NvcGUgPyBgJHtzY29wZX0uJHtrZXl9YCA6IGtleTtcblxuICAgIGNvbnN0IHRyYW5zbGF0aW9uID0gdGhpcy5nZXRUcmFuc2xhdGlvbihyZXNvbHZlTGFuZyk7XG4gICAgY29uc3QgdmFsdWUgPSB0cmFuc2xhdGlvbltrZXldO1xuXG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2hhbmRsZU1pc3NpbmdLZXkoa2V5LCB2YWx1ZSwgcGFyYW1zKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wYXJzZXIudHJhbnNwaWxlKHtcbiAgICAgIHZhbHVlLFxuICAgICAgcGFyYW1zLFxuICAgICAgdHJhbnNsYXRpb24sXG4gICAgICBrZXksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgdHJhbnNsYXRlZCB2YWx1ZSBvZiBhIGtleSBhcyBvYnNlcnZhYmxlXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqXG4gICAqIHNlbGVjdFRyYW5zbGF0ZTxzdHJpbmc+KCdoZWxsbycpLnN1YnNjcmliZSh2YWx1ZSA9PiAuLi4pXG4gICAqIHNlbGVjdFRyYW5zbGF0ZTxzdHJpbmc+KCdoZWxsbycsIHt9LCAnZXMnKS5zdWJzY3JpYmUodmFsdWUgPT4gLi4uKVxuICAgKiBzZWxlY3RUcmFuc2xhdGU8c3RyaW5nPignaGVsbG8nLCB7fSwgJ3RvZG9zJykuc3Vic2NyaWJlKHZhbHVlID0+IC4uLilcbiAgICogc2VsZWN0VHJhbnNsYXRlPHN0cmluZz4oJ2hlbGxvJywge30sIHsgc2NvcGU6ICd0b2RvcycgfSkuc3Vic2NyaWJlKHZhbHVlID0+IC4uLilcbiAgICpcbiAgICovXG4gIHNlbGVjdFRyYW5zbGF0ZTxUID0gYW55PihcbiAgICBrZXk6IFRyYW5zbGF0ZVBhcmFtcyxcbiAgICBwYXJhbXM/OiBIYXNoTWFwLFxuICAgIGxhbmc/OiBzdHJpbmcgfCBUcmFuc2xvY29TY29wZSB8IFRyYW5zbG9jb1Njb3BlW10sXG4gICAgX2lzT2JqZWN0ID0gZmFsc2UsXG4gICk6IE9ic2VydmFibGU8VD4ge1xuICAgIGxldCBpbmxpbmVMb2FkZXI6IElubGluZUxvYWRlciB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBsb2FkID0gKGxhbmc6IHN0cmluZywgb3B0aW9ucz86IExvYWRPcHRpb25zKSA9PlxuICAgICAgdGhpcy5sb2FkKGxhbmcsIG9wdGlvbnMpLnBpcGUoXG4gICAgICAgIG1hcCgoKSA9PlxuICAgICAgICAgIF9pc09iamVjdFxuICAgICAgICAgICAgPyB0aGlzLnRyYW5zbGF0ZU9iamVjdChrZXksIHBhcmFtcywgbGFuZylcbiAgICAgICAgICAgIDogdGhpcy50cmFuc2xhdGUoa2V5LCBwYXJhbXMsIGxhbmcpLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICBpZiAoaXNOaWwobGFuZykpIHtcbiAgICAgIHJldHVybiB0aGlzLmxhbmdDaGFuZ2VzJC5waXBlKHN3aXRjaE1hcCgobGFuZykgPT4gbG9hZChsYW5nKSkpO1xuICAgIH1cblxuICAgIGxhbmcgPSBBcnJheS5pc0FycmF5KGxhbmcpID8gbGFuZ1swXSA6IGxhbmc7XG4gICAgaWYgKGlzU2NvcGVPYmplY3QobGFuZykpIHtcbiAgICAgIC8vIGl0J3MgYSBzY29wZSBvYmplY3QuXG4gICAgICBjb25zdCBwcm92aWRlclNjb3BlID0gbGFuZztcbiAgICAgIGxhbmcgPSBwcm92aWRlclNjb3BlLnNjb3BlO1xuICAgICAgaW5saW5lTG9hZGVyID0gcmVzb2x2ZUlubGluZUxvYWRlcihwcm92aWRlclNjb3BlLCBwcm92aWRlclNjb3BlLnNjb3BlKTtcbiAgICB9XG5cbiAgICBsYW5nID0gbGFuZyBhcyBzdHJpbmc7XG4gICAgaWYgKHRoaXMuaXNMYW5nKGxhbmcpIHx8IHRoaXMuaXNTY29wZVdpdGhMYW5nKGxhbmcpKSB7XG4gICAgICByZXR1cm4gbG9hZChsYW5nKTtcbiAgICB9XG4gICAgLy8gaXQncyBhIHNjb3BlXG4gICAgY29uc3Qgc2NvcGUgPSBsYW5nO1xuICAgIHJldHVybiB0aGlzLmxhbmdDaGFuZ2VzJC5waXBlKFxuICAgICAgc3dpdGNoTWFwKChsYW5nKSA9PiBsb2FkKGAke3Njb3BlfS8ke2xhbmd9YCwgeyBpbmxpbmVMb2FkZXIgfSkpLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgc2NvcGUgd2l0aCBsYW5nXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqXG4gICAqIHRvZG9zL2VuID0+IHRydWVcbiAgICogdG9kb3MgPT4gZmFsc2VcbiAgICovXG4gIHByaXZhdGUgaXNTY29wZVdpdGhMYW5nKGxhbmc6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmlzTGFuZyhnZXRMYW5nRnJvbVNjb3BlKGxhbmcpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2xhdGUgdGhlIGdpdmVuIHBhdGggdGhhdCByZXR1cm5zIGFuIG9iamVjdFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKlxuICAgKiBzZXJ2aWNlLnRyYW5zbGF0ZU9iamVjdCgncGF0aC50by5vYmplY3QnLCB7J3N1YnBhdGgnOiB7IHZhbHVlOiAnc29tZVZhbHVlJ319KSA9PiByZXR1cm5zIHRyYW5zbGF0ZWQgb2JqZWN0XG4gICAqXG4gICAqL1xuICB0cmFuc2xhdGVPYmplY3Q8VCA9IGFueT4oa2V5OiBzdHJpbmcsIHBhcmFtcz86IEhhc2hNYXAsIGxhbmc/OiBzdHJpbmcpOiBUO1xuICB0cmFuc2xhdGVPYmplY3Q8VCA9IGFueT4oa2V5OiBzdHJpbmdbXSwgcGFyYW1zPzogSGFzaE1hcCwgbGFuZz86IHN0cmluZyk6IFRbXTtcbiAgdHJhbnNsYXRlT2JqZWN0PFQgPSBhbnk+KFxuICAgIGtleTogVHJhbnNsYXRlUGFyYW1zLFxuICAgIHBhcmFtcz86IEhhc2hNYXAsXG4gICAgbGFuZz86IHN0cmluZyxcbiAgKTogVCB8IFRbXTtcbiAgdHJhbnNsYXRlT2JqZWN0PFQgPSBhbnk+KFxuICAgIGtleTogSGFzaE1hcCB8IE1hcDxzdHJpbmcsIEhhc2hNYXA+LFxuICAgIHBhcmFtcz86IG51bGwsXG4gICAgbGFuZz86IHN0cmluZyxcbiAgKTogVFtdO1xuICB0cmFuc2xhdGVPYmplY3Q8VCA9IGFueT4oXG4gICAga2V5OiBUcmFuc2xhdGVPYmplY3RQYXJhbXMsXG4gICAgcGFyYW1zOiBIYXNoTWFwIHwgbnVsbCA9IHt9LFxuICAgIGxhbmcgPSB0aGlzLmdldEFjdGl2ZUxhbmcoKSxcbiAgKTogVCB8IFRbXSB7XG4gICAgaWYgKGlzU3RyaW5nKGtleSkgfHwgQXJyYXkuaXNBcnJheShrZXkpKSB7XG4gICAgICBjb25zdCB7IHJlc29sdmVMYW5nLCBzY29wZSB9ID0gdGhpcy5yZXNvbHZlTGFuZ0FuZFNjb3BlKGxhbmcpO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoa2V5KSkge1xuICAgICAgICByZXR1cm4ga2V5Lm1hcCgoaykgPT5cbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZU9iamVjdChcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLnNjb3Blcy5hdXRvUHJlZml4S2V5cyAmJiBzY29wZSA/IGAke3Njb3BlfS4ke2t9YCA6IGssXG4gICAgICAgICAgICBwYXJhbXMhLFxuICAgICAgICAgICAgcmVzb2x2ZUxhbmcsXG4gICAgICAgICAgKSxcbiAgICAgICAgKSBhcyBhbnk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRyYW5zbGF0aW9uID0gdGhpcy5nZXRUcmFuc2xhdGlvbihyZXNvbHZlTGFuZyk7XG4gICAgICBrZXkgPVxuICAgICAgICB0aGlzLmNvbmZpZy5zY29wZXMuYXV0b1ByZWZpeEtleXMgJiYgc2NvcGUgPyBgJHtzY29wZX0uJHtrZXl9YCA6IGtleTtcblxuICAgICAgY29uc3QgdmFsdWUgPSB1bmZsYXR0ZW4odGhpcy5nZXRPYmplY3RCeUtleSh0cmFuc2xhdGlvbiwga2V5KSk7XG4gICAgICAvKiBJZiBhbiBlbXB0eSBvYmplY3Qgd2FzIHJldHVybmVkIHdlIHdhbnQgdG8gdHJ5IGFuZCB0cmFuc2xhdGUgdGhlIGtleSBhcyBhIHN0cmluZyBhbmQgbm90IGFuIG9iamVjdCAqL1xuICAgICAgcmV0dXJuIGlzRW1wdHkodmFsdWUpXG4gICAgICAgID8gdGhpcy50cmFuc2xhdGUoa2V5LCBwYXJhbXMhLCBsYW5nKVxuICAgICAgICA6IHRoaXMucGFyc2VyLnRyYW5zcGlsZSh7IHZhbHVlLCBwYXJhbXM6IHBhcmFtcyEsIHRyYW5zbGF0aW9uLCBrZXkgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgdHJhbnNsYXRpb25zOiBUW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IFtfa2V5LCBfcGFyYW1zXSBvZiB0aGlzLmdldEVudHJpZXMoa2V5KSkge1xuICAgICAgdHJhbnNsYXRpb25zLnB1c2godGhpcy50cmFuc2xhdGVPYmplY3QoX2tleSwgX3BhcmFtcywgbGFuZykpO1xuICAgIH1cblxuICAgIHJldHVybiB0cmFuc2xhdGlvbnM7XG4gIH1cblxuICBzZWxlY3RUcmFuc2xhdGVPYmplY3Q8VCA9IGFueT4oXG4gICAga2V5OiBzdHJpbmcsXG4gICAgcGFyYW1zPzogSGFzaE1hcCxcbiAgICBsYW5nPzogc3RyaW5nLFxuICApOiBPYnNlcnZhYmxlPFQ+O1xuICBzZWxlY3RUcmFuc2xhdGVPYmplY3Q8VCA9IGFueT4oXG4gICAga2V5OiBzdHJpbmdbXSxcbiAgICBwYXJhbXM/OiBIYXNoTWFwLFxuICAgIGxhbmc/OiBzdHJpbmcsXG4gICk6IE9ic2VydmFibGU8VFtdPjtcbiAgc2VsZWN0VHJhbnNsYXRlT2JqZWN0PFQgPSBhbnk+KFxuICAgIGtleTogVHJhbnNsYXRlUGFyYW1zLFxuICAgIHBhcmFtcz86IEhhc2hNYXAsXG4gICAgbGFuZz86IHN0cmluZyxcbiAgKTogT2JzZXJ2YWJsZTxUPiB8IE9ic2VydmFibGU8VFtdPjtcbiAgc2VsZWN0VHJhbnNsYXRlT2JqZWN0PFQgPSBhbnk+KFxuICAgIGtleTogSGFzaE1hcCB8IE1hcDxzdHJpbmcsIEhhc2hNYXA+LFxuICAgIHBhcmFtcz86IG51bGwsXG4gICAgbGFuZz86IHN0cmluZyxcbiAgKTogT2JzZXJ2YWJsZTxUW10+O1xuICBzZWxlY3RUcmFuc2xhdGVPYmplY3Q8VCA9IGFueT4oXG4gICAga2V5OiBUcmFuc2xhdGVPYmplY3RQYXJhbXMsXG4gICAgcGFyYW1zPzogSGFzaE1hcCB8IG51bGwsXG4gICAgbGFuZz86IHN0cmluZyxcbiAgKTogT2JzZXJ2YWJsZTxUPiB8IE9ic2VydmFibGU8VFtdPiB7XG4gICAgaWYgKGlzU3RyaW5nKGtleSkgfHwgQXJyYXkuaXNBcnJheShrZXkpKSB7XG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3RUcmFuc2xhdGU8VD4oa2V5LCBwYXJhbXMhLCBsYW5nLCB0cnVlKTtcbiAgICB9XG5cbiAgICBjb25zdCBbW2ZpcnN0S2V5LCBmaXJzdFBhcmFtc10sIC4uLnJlc3RdID0gdGhpcy5nZXRFbnRyaWVzKGtleSk7XG5cbiAgICAvKiBJbiBvcmRlciB0byBhdm9pZCBzdWJzY3JpYmluZyBtdWx0aXBsZSB0aW1lcyB0byB0aGUgbG9hZCBsYW5ndWFnZSBldmVudCBieSBjYWxsaW5nIHNlbGVjdFRyYW5zbGF0ZU9iamVjdCBmb3IgZWFjaCBwYWlyLFxuICAgICAqIHdlIGxpc3RlbiB0byB3aGVuIHRoZSBmaXJzdCBrZXkgaGFzIGJlZW4gdHJhbnNsYXRlZCAodGhlIGxhbmd1YWdlIGlzIGxvYWRlZCkgYW5kIHRyYW5zbGF0ZSB0aGUgcmVzdCBzeW5jaHJvbm91c2x5ICovXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0VHJhbnNsYXRlT2JqZWN0PFQ+KGZpcnN0S2V5LCBmaXJzdFBhcmFtcywgbGFuZykucGlwZShcbiAgICAgIG1hcCgodmFsdWUpID0+IHtcbiAgICAgICAgY29uc3QgdHJhbnNsYXRpb25zID0gW3ZhbHVlXTtcbiAgICAgICAgZm9yIChjb25zdCBbX2tleSwgX3BhcmFtc10gb2YgcmVzdCkge1xuICAgICAgICAgIHRyYW5zbGF0aW9ucy5wdXNoKHRoaXMudHJhbnNsYXRlT2JqZWN0PFQ+KF9rZXksIF9wYXJhbXMsIGxhbmcpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cmFuc2xhdGlvbnM7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYW4gb2JqZWN0IG9mIHRyYW5zbGF0aW9ucyBmb3IgYSBnaXZlbiBsYW5ndWFnZVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKlxuICAgKiBnZXRUcmFuc2xhdGlvbigpXG4gICAqIGdldFRyYW5zbGF0aW9uKCdlbicpXG4gICAqIGdldFRyYW5zbGF0aW9uKCdhZG1pbi1wYWdlL2VuJylcbiAgICovXG4gIGdldFRyYW5zbGF0aW9uKCk6IE1hcDxzdHJpbmcsIFRyYW5zbGF0aW9uPjtcbiAgZ2V0VHJhbnNsYXRpb24obGFuZ09yU2NvcGU6IHN0cmluZyk6IFRyYW5zbGF0aW9uO1xuICBnZXRUcmFuc2xhdGlvbihsYW5nT3JTY29wZT86IHN0cmluZyk6IE1hcDxzdHJpbmcsIFRyYW5zbGF0aW9uPiB8IFRyYW5zbGF0aW9uIHtcbiAgICBpZiAobGFuZ09yU2NvcGUpIHtcbiAgICAgIGlmICh0aGlzLmlzTGFuZyhsYW5nT3JTY29wZSkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRpb25zLmdldChsYW5nT3JTY29wZSkgfHwge307XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBUaGlzIGlzIGEgc2NvcGUsIGJ1aWxkIHRoZSBzY29wZSB2YWx1ZSBmcm9tIHRoZSB0cmFuc2xhdGlvbiBvYmplY3RcbiAgICAgICAgY29uc3QgeyBzY29wZSwgcmVzb2x2ZUxhbmcgfSA9IHRoaXMucmVzb2x2ZUxhbmdBbmRTY29wZShsYW5nT3JTY29wZSk7XG4gICAgICAgIGNvbnN0IHRyYW5zbGF0aW9uID0gdGhpcy50cmFuc2xhdGlvbnMuZ2V0KHJlc29sdmVMYW5nKSB8fCB7fTtcblxuICAgICAgICByZXR1cm4gdGhpcy5nZXRPYmplY3RCeUtleSh0cmFuc2xhdGlvbiwgc2NvcGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGFuIG9iamVjdCBvZiB0cmFuc2xhdGlvbnMgZm9yIGEgZ2l2ZW4gbGFuZ3VhZ2VcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICpcbiAgICogc2VsZWN0VHJhbnNsYXRpb24oKS5zdWJzY3JpYmUoKSAtIHdpbGwgcmV0dXJuIHRoZSBjdXJyZW50IGxhbmcgdHJhbnNsYXRpb25cbiAgICogc2VsZWN0VHJhbnNsYXRpb24oJ2VzJykuc3Vic2NyaWJlKClcbiAgICogc2VsZWN0VHJhbnNsYXRpb24oJ2FkbWluLXBhZ2UnKS5zdWJzY3JpYmUoKSAtIHdpbGwgcmV0dXJuIHRoZSBjdXJyZW50IGxhbmcgc2NvcGUgdHJhbnNsYXRpb25cbiAgICogc2VsZWN0VHJhbnNsYXRpb24oJ2FkbWluLXBhZ2UvZXMnKS5zdWJzY3JpYmUoKVxuICAgKi9cbiAgc2VsZWN0VHJhbnNsYXRpb24obGFuZz86IHN0cmluZyk6IE9ic2VydmFibGU8VHJhbnNsYXRpb24+IHtcbiAgICBsZXQgbGFuZ3VhZ2UkID0gdGhpcy5sYW5nQ2hhbmdlcyQ7XG4gICAgaWYgKGxhbmcpIHtcbiAgICAgIGNvbnN0IHNjb3BlTGFuZ1NwZWNpZmllZCA9IGdldExhbmdGcm9tU2NvcGUobGFuZykgIT09IGxhbmc7XG4gICAgICBpZiAodGhpcy5pc0xhbmcobGFuZykgfHwgc2NvcGVMYW5nU3BlY2lmaWVkKSB7XG4gICAgICAgIGxhbmd1YWdlJCA9IG9mKGxhbmcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGFuZ3VhZ2UkID0gdGhpcy5sYW5nQ2hhbmdlcyQucGlwZShcbiAgICAgICAgICBtYXAoKGN1cnJlbnRMYW5nKSA9PiBgJHtsYW5nfS8ke2N1cnJlbnRMYW5nfWApLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBsYW5ndWFnZSQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgobGFuZ3VhZ2UpID0+XG4gICAgICAgIHRoaXMubG9hZChsYW5ndWFnZSkucGlwZShtYXAoKCkgPT4gdGhpcy5nZXRUcmFuc2xhdGlvbihsYW5ndWFnZSkpKSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIG9yIG1lcmdlIGEgZ2l2ZW4gdHJhbnNsYXRpb24gb2JqZWN0IHRvIGN1cnJlbnQgbGFuZ1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKlxuICAgKiBzZXRUcmFuc2xhdGlvbih7IC4uLiB9KVxuICAgKiBzZXRUcmFuc2xhdGlvbih7IC4uLiB9LCAnZW4nKVxuICAgKiBzZXRUcmFuc2xhdGlvbih7IC4uLiB9LCAnZXMnLCB7IG1lcmdlOiBmYWxzZSB9IClcbiAgICogc2V0VHJhbnNsYXRpb24oeyAuLi4gfSwgJ3RvZG9zL2VuJywgeyBtZXJnZTogZmFsc2UgfSApXG4gICAqL1xuICBzZXRUcmFuc2xhdGlvbihcbiAgICB0cmFuc2xhdGlvbjogVHJhbnNsYXRpb24sXG4gICAgbGFuZyA9IHRoaXMuZ2V0QWN0aXZlTGFuZygpLFxuICAgIG9wdGlvbnM6IFNldFRyYW5zbGF0aW9uT3B0aW9ucyA9IHt9LFxuICApIHtcbiAgICBjb25zdCBkZWZhdWx0cyA9IHsgbWVyZ2U6IHRydWUsIGVtaXRDaGFuZ2U6IHRydWUgfTtcbiAgICBjb25zdCBtZXJnZWRPcHRpb25zID0geyAuLi5kZWZhdWx0cywgLi4ub3B0aW9ucyB9O1xuICAgIGNvbnN0IHNjb3BlID0gZ2V0U2NvcGVGcm9tTGFuZyhsYW5nKTtcblxuICAgIC8qKlxuICAgICAqIElmIHRoaXMgaXNuJ3QgYSBzY29wZSB3ZSB1c2UgdGhlIHdob2xlIHRyYW5zbGF0aW9uIGFzIGlzXG4gICAgICogb3RoZXJ3aXNlIHdlIG5lZWQgdG8gZmxhdCB0aGUgc2NvcGUgYW5kIHVzZSBpdFxuICAgICAqL1xuICAgIGxldCBmbGF0dGVuU2NvcGVPclRyYW5zbGF0aW9uID0gdHJhbnNsYXRpb247XG5cbiAgICAvLyBNZXJnZWQgdGhlIHNjb3BlZCBsYW5ndWFnZSBpbnRvIHRoZSBhY3RpdmUgbGFuZ3VhZ2VcbiAgICBpZiAoc2NvcGUpIHtcbiAgICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0TWFwcGVkU2NvcGUoc2NvcGUpO1xuICAgICAgZmxhdHRlblNjb3BlT3JUcmFuc2xhdGlvbiA9IGZsYXR0ZW4oeyBba2V5XTogdHJhbnNsYXRpb24gfSk7XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudExhbmcgPSBzY29wZSA/IGdldExhbmdGcm9tU2NvcGUobGFuZykgOiBsYW5nO1xuXG4gICAgY29uc3QgbWVyZ2VkVHJhbnNsYXRpb24gPSB7XG4gICAgICAuLi4obWVyZ2VkT3B0aW9ucy5tZXJnZSAmJiB0aGlzLmdldFRyYW5zbGF0aW9uKGN1cnJlbnRMYW5nKSksXG4gICAgICAuLi5mbGF0dGVuU2NvcGVPclRyYW5zbGF0aW9uLFxuICAgIH07XG5cbiAgICBjb25zdCBmbGF0dGVuVHJhbnNsYXRpb24gPSB0aGlzLmNvbmZpZy5mbGF0dGVuIS5hb3RcbiAgICAgID8gbWVyZ2VkVHJhbnNsYXRpb25cbiAgICAgIDogZmxhdHRlbihtZXJnZWRUcmFuc2xhdGlvbik7XG4gICAgY29uc3Qgd2l0aEhvb2sgPSB0aGlzLmludGVyY2VwdG9yLnByZVNhdmVUcmFuc2xhdGlvbihcbiAgICAgIGZsYXR0ZW5UcmFuc2xhdGlvbixcbiAgICAgIGN1cnJlbnRMYW5nLFxuICAgICk7XG4gICAgdGhpcy50cmFuc2xhdGlvbnMuc2V0KGN1cnJlbnRMYW5nLCB3aXRoSG9vayk7XG4gICAgbWVyZ2VkT3B0aW9ucy5lbWl0Q2hhbmdlICYmIHRoaXMuc2V0QWN0aXZlTGFuZyh0aGlzLmdldEFjdGl2ZUxhbmcoKSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0cmFuc2xhdGlvbiBrZXkgd2l0aCBnaXZlbiB2YWx1ZVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKlxuICAgKiBzZXRUcmFuc2xhdGlvbktleSgna2V5JywgJ3ZhbHVlJylcbiAgICogc2V0VHJhbnNsYXRpb25LZXkoJ2tleS5uZXN0ZWQnLCAndmFsdWUnKVxuICAgKiBzZXRUcmFuc2xhdGlvbktleSgna2V5Lm5lc3RlZCcsICd2YWx1ZScsICdlbicpXG4gICAqIHNldFRyYW5zbGF0aW9uS2V5KCdrZXkubmVzdGVkJywgJ3ZhbHVlJywgJ2VuJywgeyBlbWl0Q2hhbmdlOiBmYWxzZSB9IClcbiAgICovXG4gIHNldFRyYW5zbGF0aW9uS2V5KFxuICAgIGtleTogc3RyaW5nLFxuICAgIHZhbHVlOiBzdHJpbmcsXG4gICAgb3B0aW9uczogT21pdDxTZXRUcmFuc2xhdGlvbk9wdGlvbnMsICdtZXJnZSc+ID0ge30sXG4gICkge1xuICAgIGNvbnN0IGxhbmcgPSBvcHRpb25zLmxhbmcgfHwgdGhpcy5nZXRBY3RpdmVMYW5nKCk7XG4gICAgY29uc3Qgd2l0aEhvb2sgPSB0aGlzLmludGVyY2VwdG9yLnByZVNhdmVUcmFuc2xhdGlvbktleShrZXksIHZhbHVlLCBsYW5nKTtcbiAgICBjb25zdCBuZXdWYWx1ZSA9IHtcbiAgICAgIFtrZXldOiB3aXRoSG9vayxcbiAgICB9O1xuXG4gICAgdGhpcy5zZXRUcmFuc2xhdGlvbihuZXdWYWx1ZSwgbGFuZywgeyAuLi5vcHRpb25zLCBtZXJnZTogdHJ1ZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBmYWxsYmFjayBsYW5nIGZvciB0aGUgY3VycmVudGx5IGFjdGl2ZSBsYW5ndWFnZVxuICAgKiBAcGFyYW0gZmFsbGJhY2tMYW5nXG4gICAqL1xuICBzZXRGYWxsYmFja0xhbmdGb3JNaXNzaW5nVHJhbnNsYXRpb24oe1xuICAgIGZhbGxiYWNrTGFuZyxcbiAgfTogUGljazxUcmFuc2xvY29Db25maWcsICdmYWxsYmFja0xhbmcnPikge1xuICAgIGNvbnN0IGxhbmcgPSBBcnJheS5pc0FycmF5KGZhbGxiYWNrTGFuZykgPyBmYWxsYmFja0xhbmdbMF0gOiBmYWxsYmFja0xhbmc7XG4gICAgaWYgKGZhbGxiYWNrTGFuZyAmJiB0aGlzLnVzZUZhbGxiYWNrVHJhbnNsYXRpb24obGFuZykpIHtcbiAgICAgIHRoaXMuZmlyc3RGYWxsYmFja0xhbmcgPSBsYW5nITtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBfaGFuZGxlTWlzc2luZ0tleShrZXk6IHN0cmluZywgdmFsdWU6IGFueSwgcGFyYW1zPzogSGFzaE1hcCkge1xuICAgIGlmICh0aGlzLmNvbmZpZy5taXNzaW5nSGFuZGxlciEuYWxsb3dFbXB0eSAmJiB2YWx1ZSA9PT0gJycpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaXNSZXNvbHZlZE1pc3NpbmdPbmNlICYmIHRoaXMudXNlRmFsbGJhY2tUcmFuc2xhdGlvbigpKSB7XG4gICAgICAvLyBXZSBuZWVkIHRvIHNldCBpdCB0byB0cnVlIHRvIHByZXZlbnQgYSBsb29wXG4gICAgICB0aGlzLmlzUmVzb2x2ZWRNaXNzaW5nT25jZSA9IHRydWU7XG4gICAgICBjb25zdCBmYWxsYmFja1ZhbHVlID0gdGhpcy50cmFuc2xhdGUoXG4gICAgICAgIGtleSxcbiAgICAgICAgcGFyYW1zLFxuICAgICAgICB0aGlzLmZpcnN0RmFsbGJhY2tMYW5nISxcbiAgICAgICk7XG4gICAgICB0aGlzLmlzUmVzb2x2ZWRNaXNzaW5nT25jZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm4gZmFsbGJhY2tWYWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5taXNzaW5nSGFuZGxlci5oYW5kbGUoXG4gICAgICBrZXksXG4gICAgICB0aGlzLmdldE1pc3NpbmdIYW5kbGVyRGF0YSgpLFxuICAgICAgcGFyYW1zLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBfaXNMYW5nU2NvcGVkKGxhbmc6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmdldEF2YWlsYWJsZUxhbmdzSWRzKCkuaW5kZXhPZihsYW5nKSA9PT0gLTE7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgZ2l2ZW4gc3RyaW5nIGlzIG9uZSBvZiB0aGUgc3BlY2lmaWVkIGF2YWlsYWJsZSBsYW5ndWFnZXMuXG4gICAqIEByZXR1cm5zXG4gICAqIFRydWUgaWYgdGhlIGdpdmVuIHN0cmluZyBpcyBhbiBhdmFpbGFibGUgbGFuZ3VhZ2UuXG4gICAqIEZhbHNlIGlmIHRoZSBnaXZlbiBzdHJpbmcgaXMgbm90IGFuIGF2YWlsYWJsZSBsYW5ndWFnZS5cbiAgICovXG4gIGlzTGFuZyhsYW5nOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBdmFpbGFibGVMYW5nc0lkcygpLmluZGV4T2YobGFuZykgIT09IC0xO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKlxuICAgKiBXZSBhbHdheXMgd2FudCB0byBtYWtlIHN1cmUgdGhlIGdsb2JhbCBsYW5nIGlzIGxvYWRlZFxuICAgKiBiZWZvcmUgbG9hZGluZyB0aGUgc2NvcGUgc2luY2UgeW91IGNhbiBhY2Nlc3MgYm90aCB2aWEgdGhlIHBpcGUvZGlyZWN0aXZlLlxuICAgKi9cbiAgX2xvYWREZXBlbmRlbmNpZXMoXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIGlubGluZUxvYWRlcj86IElubGluZUxvYWRlcixcbiAgKTogT2JzZXJ2YWJsZTxUcmFuc2xhdGlvbiB8IFRyYW5zbGF0aW9uW10+IHtcbiAgICBjb25zdCBtYWluTGFuZyA9IGdldExhbmdGcm9tU2NvcGUocGF0aCk7XG5cbiAgICBpZiAodGhpcy5faXNMYW5nU2NvcGVkKHBhdGgpICYmICF0aGlzLmlzTG9hZGVkVHJhbnNsYXRpb24obWFpbkxhbmcpKSB7XG4gICAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMubG9hZChtYWluTGFuZyksXG4gICAgICAgIHRoaXMubG9hZChwYXRoLCB7IGlubGluZUxvYWRlciB9KSxcbiAgICAgIF0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5sb2FkKHBhdGgsIHsgaW5saW5lTG9hZGVyIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgX2NvbXBsZXRlU2NvcGVXaXRoTGFuZyhsYW5nT3JTY29wZTogc3RyaW5nKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5faXNMYW5nU2NvcGVkKGxhbmdPclNjb3BlKSAmJlxuICAgICAgIXRoaXMuaXNMYW5nKGdldExhbmdGcm9tU2NvcGUobGFuZ09yU2NvcGUpKVxuICAgICkge1xuICAgICAgcmV0dXJuIGAke2xhbmdPclNjb3BlfS8ke3RoaXMuZ2V0QWN0aXZlTGFuZygpfWA7XG4gICAgfVxuICAgIHJldHVybiBsYW5nT3JTY29wZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF9zZXRTY29wZUFsaWFzKHNjb3BlOiBzdHJpbmcsIGFsaWFzOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnLnNjb3BlTWFwcGluZykge1xuICAgICAgdGhpcy5jb25maWcuc2NvcGVNYXBwaW5nID0ge307XG4gICAgfVxuICAgIHRoaXMuY29uZmlnLnNjb3BlTWFwcGluZ1tzY29wZV0gPSBhbGlhcztcbiAgfVxuXG4gIHByaXZhdGUgaXNMb2FkZWRUcmFuc2xhdGlvbihsYW5nOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gc2l6ZSh0aGlzLmdldFRyYW5zbGF0aW9uKGxhbmcpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QXZhaWxhYmxlTGFuZ3NJZHMoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGZpcnN0ID0gdGhpcy5nZXRBdmFpbGFibGVMYW5ncygpWzBdO1xuXG4gICAgaWYgKGlzU3RyaW5nKGZpcnN0KSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0QXZhaWxhYmxlTGFuZ3MoKSBhcyBzdHJpbmdbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gKHRoaXMuZ2V0QXZhaWxhYmxlTGFuZ3MoKSBhcyBMYW5nRGVmaW5pdGlvbltdKS5tYXAoKGwpID0+IGwuaWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNaXNzaW5nSGFuZGxlckRhdGEoKTogVHJhbnNsb2NvTWlzc2luZ0hhbmRsZXJEYXRhIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5jb25maWcsXG4gICAgICBhY3RpdmVMYW5nOiB0aGlzLmdldEFjdGl2ZUxhbmcoKSxcbiAgICAgIGF2YWlsYWJsZUxhbmdzOiB0aGlzLmF2YWlsYWJsZUxhbmdzLFxuICAgICAgZGVmYXVsdExhbmc6IHRoaXMuZGVmYXVsdExhbmcsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgYSBmYWxsYmFjayB0cmFuc2xhdGlvbiBzZXQgZm9yIG1pc3Npbmcga2V5cyBvZiB0aGUgcHJpbWFyeSBsYW5ndWFnZVxuICAgKiBUaGlzIGlzIHVucmVsYXRlZCB0byB0aGUgZmFsbGJhY2sgbGFuZ3VhZ2UgKHdoaWNoIGNoYW5nZXMgdGhlIGFjdGl2ZSBsYW5ndWFnZSlcbiAgICovXG4gIHByaXZhdGUgdXNlRmFsbGJhY2tUcmFuc2xhdGlvbihsYW5nPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuY29uZmlnLm1pc3NpbmdIYW5kbGVyIS51c2VGYWxsYmFja1RyYW5zbGF0aW9uICYmXG4gICAgICBsYW5nICE9PSB0aGlzLmZpcnN0RmFsbGJhY2tMYW5nXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU3VjY2VzcyhsYW5nOiBzdHJpbmcsIHRyYW5zbGF0aW9uOiBUcmFuc2xhdGlvbikge1xuICAgIHRoaXMuc2V0VHJhbnNsYXRpb24odHJhbnNsYXRpb24sIGxhbmcsIHsgZW1pdENoYW5nZTogZmFsc2UgfSk7XG4gICAgdGhpcy5ldmVudHMubmV4dCh7XG4gICAgICB3YXNGYWlsdXJlOiAhIXRoaXMuZmFpbGVkTGFuZ3Muc2l6ZSxcbiAgICAgIHR5cGU6ICd0cmFuc2xhdGlvbkxvYWRTdWNjZXNzJyxcbiAgICAgIHBheWxvYWQ6IGdldEV2ZW50UGF5bG9hZChsYW5nKSxcbiAgICB9KTtcbiAgICB0aGlzLmZhaWxlZExhbmdzLmZvckVhY2goKGwpID0+IHRoaXMuY2FjaGUuZGVsZXRlKGwpKTtcbiAgICB0aGlzLmZhaWxlZExhbmdzLmNsZWFyKCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUZhaWx1cmUobGFuZzogc3RyaW5nLCBsb2FkT3B0aW9uczogTG9hZE9wdGlvbnMpIHtcbiAgICAvLyBXaGVuIHN0YXJ0aW5nIHRvIGxvYWQgYSBmaXJzdCBjaG9pY2UgbGFuZ3VhZ2UsIGluaXRpYWxpemVcbiAgICAvLyB0aGUgZmFpbGVkIGNvdW50ZXIgYW5kIHJlc29sdmUgdGhlIGZhbGxiYWNrIGxhbmdzLlxuICAgIGlmIChpc05pbChsb2FkT3B0aW9ucy5mYWlsZWRDb3VudGVyKSkge1xuICAgICAgbG9hZE9wdGlvbnMuZmFpbGVkQ291bnRlciA9IDA7XG5cbiAgICAgIGlmICghbG9hZE9wdGlvbnMuZmFsbGJhY2tMYW5ncykge1xuICAgICAgICBsb2FkT3B0aW9ucy5mYWxsYmFja0xhbmdzID0gdGhpcy5mYWxsYmFja1N0cmF0ZWd5LmdldE5leHRMYW5ncyhsYW5nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBzcGxpdHRlZCA9IGxhbmcuc3BsaXQoJy8nKTtcbiAgICBjb25zdCBmYWxsYmFja3MgPSBsb2FkT3B0aW9ucy5mYWxsYmFja0xhbmdzO1xuICAgIGNvbnN0IG5leHRMYW5nID0gZmFsbGJhY2tzIVtsb2FkT3B0aW9ucy5mYWlsZWRDb3VudGVyIV07XG4gICAgdGhpcy5mYWlsZWRMYW5ncy5hZGQobGFuZyk7XG5cbiAgICAvLyBUaGlzIGhhbmRsZXMgdGhlIGNhc2Ugd2hlcmUgYSBsb2FkZWQgZmFsbGJhY2sgbGFuZ3VhZ2UgaXMgcmVxdWVzdGVkIGFnYWluXG4gICAgaWYgKHRoaXMuY2FjaGUuaGFzKG5leHRMYW5nKSkge1xuICAgICAgdGhpcy5oYW5kbGVTdWNjZXNzKG5leHRMYW5nLCB0aGlzLmdldFRyYW5zbGF0aW9uKG5leHRMYW5nKSk7XG4gICAgICByZXR1cm4gRU1QVFk7XG4gICAgfVxuXG4gICAgY29uc3QgaXNGYWxsYmFja0xhbmcgPSBuZXh0TGFuZyA9PT0gc3BsaXR0ZWRbc3BsaXR0ZWQubGVuZ3RoIC0gMV07XG5cbiAgICBpZiAoIW5leHRMYW5nIHx8IGlzRmFsbGJhY2tMYW5nKSB7XG4gICAgICBsZXQgbXNnID0gYFVuYWJsZSB0byBsb2FkIHRyYW5zbGF0aW9uIGFuZCBhbGwgdGhlIGZhbGxiYWNrIGxhbmd1YWdlc2A7XG4gICAgICBpZiAoc3BsaXR0ZWQubGVuZ3RoID4gMSkge1xuICAgICAgICBtc2cgKz0gYCwgZGlkIHlvdSBtaXNzcGVsbGVkIHRoZSBzY29wZSBuYW1lP2A7XG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgIH1cblxuICAgIGxldCByZXNvbHZlTGFuZyA9IG5leHRMYW5nO1xuICAgIC8vIGlmIGl0J3Mgc2NvcGVkIGxhbmdcbiAgICBpZiAoc3BsaXR0ZWQubGVuZ3RoID4gMSkge1xuICAgICAgLy8gV2UgbmVlZCB0byByZXNvbHZlIGl0IHRvOlxuICAgICAgLy8gdG9kb3MvbGFuZ05vdEV4aXN0cyA9PiB0b2Rvcy9uZXh0TGFuZ1xuICAgICAgc3BsaXR0ZWRbc3BsaXR0ZWQubGVuZ3RoIC0gMV0gPSBuZXh0TGFuZztcbiAgICAgIHJlc29sdmVMYW5nID0gc3BsaXR0ZWQuam9pbignLycpO1xuICAgIH1cblxuICAgIGxvYWRPcHRpb25zLmZhaWxlZENvdW50ZXIhKys7XG4gICAgdGhpcy5ldmVudHMubmV4dCh7XG4gICAgICB0eXBlOiAndHJhbnNsYXRpb25Mb2FkRmFpbHVyZScsXG4gICAgICBwYXlsb2FkOiBnZXRFdmVudFBheWxvYWQobGFuZyksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5sb2FkKHJlc29sdmVMYW5nLCBsb2FkT3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIGdldE1hcHBlZFNjb3BlKHNjb3BlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHsgc2NvcGVNYXBwaW5nID0ge30sIHNjb3BlcyA9IHsga2VlcENhc2luZzogZmFsc2UgfSB9ID0gdGhpcy5jb25maWc7XG4gICAgcmV0dXJuIChcbiAgICAgIHNjb3BlTWFwcGluZ1tzY29wZV0gfHwgKHNjb3Blcy5rZWVwQ2FzaW5nID8gc2NvcGUgOiB0b0NhbWVsQ2FzZShzY29wZSkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiBsYW5nIGlzIHNjb3BlIHdlIG5lZWQgdG8gY2hlY2sgdGhlIGZvbGxvd2luZyBjYXNlczpcbiAgICogdG9kb3MvZXMgPT4gaW4gdGhpcyBjYXNlIHdlIHNob3VsZCB0YWtlIGBlc2AgYXMgbGFuZ1xuICAgKiB0b2RvcyA9PiBpbiB0aGlzIGNhc2Ugd2Ugc2hvdWxkIHNldCB0aGUgYWN0aXZlIGxhbmcgYXMgbGFuZ1xuICAgKi9cbiAgcHJpdmF0ZSByZXNvbHZlTGFuZ0FuZFNjb3BlKGxhbmc6IHN0cmluZykge1xuICAgIGxldCByZXNvbHZlTGFuZyA9IGxhbmc7XG4gICAgbGV0IHNjb3BlO1xuXG4gICAgaWYgKHRoaXMuX2lzTGFuZ1Njb3BlZChsYW5nKSkge1xuICAgICAgLy8gZW4gZm9yIGV4YW1wbGVcbiAgICAgIGNvbnN0IGxhbmdGcm9tU2NvcGUgPSBnZXRMYW5nRnJvbVNjb3BlKGxhbmcpO1xuICAgICAgLy8gZW4gaXMgbGFuZ1xuICAgICAgY29uc3QgaGFzTGFuZyA9IHRoaXMuaXNMYW5nKGxhbmdGcm9tU2NvcGUpO1xuICAgICAgLy8gdGFrZSBlblxuICAgICAgcmVzb2x2ZUxhbmcgPSBoYXNMYW5nID8gbGFuZ0Zyb21TY29wZSA6IHRoaXMuZ2V0QWN0aXZlTGFuZygpO1xuICAgICAgLy8gZmluZCB0aGUgc2NvcGVcbiAgICAgIHNjb3BlID0gdGhpcy5nZXRNYXBwZWRTY29wZShoYXNMYW5nID8gZ2V0U2NvcGVGcm9tTGFuZyhsYW5nKSA6IGxhbmcpO1xuICAgIH1cblxuICAgIHJldHVybiB7IHNjb3BlLCByZXNvbHZlTGFuZyB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRPYmplY3RCeUtleSh0cmFuc2xhdGlvbjogVHJhbnNsYXRpb24sIGtleT86IHN0cmluZykge1xuICAgIGNvbnN0IHJlc3VsdDogVHJhbnNsYXRpb24gPSB7fTtcbiAgICBjb25zdCBwcmVmaXggPSBgJHtrZXl9LmA7XG5cbiAgICBmb3IgKGNvbnN0IGN1cnJlbnRLZXkgaW4gdHJhbnNsYXRpb24pIHtcbiAgICAgIGlmIChjdXJyZW50S2V5LnN0YXJ0c1dpdGgocHJlZml4KSkge1xuICAgICAgICByZXN1bHRbY3VycmVudEtleS5yZXBsYWNlKHByZWZpeCwgJycpXSA9IHRyYW5zbGF0aW9uW2N1cnJlbnRLZXldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIGdldEVudHJpZXMoa2V5OiBIYXNoTWFwIHwgTWFwPHN0cmluZywgSGFzaE1hcD4pIHtcbiAgICByZXR1cm4ga2V5IGluc3RhbmNlb2YgTWFwID8ga2V5LmVudHJpZXMoKSA6IE9iamVjdC5lbnRyaWVzKGtleSk7XG4gIH1cbn1cbiJdfQ==