@angular/cdk 18.2.1 → 18.2.2
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/a11y/index.d.ts +5 -1
- package/esm2022/a11y/key-manager/tree-key-manager-strategy.mjs +1 -1
- package/esm2022/a11y/key-manager/tree-key-manager.mjs +22 -12
- package/esm2022/drag-drop/drag-ref.mjs +3 -2
- package/esm2022/tree/tree.mjs +23 -6
- package/esm2022/version.mjs +1 -1
- package/fesm2022/a11y.mjs +21 -11
- package/fesm2022/a11y.mjs.map +1 -1
- package/fesm2022/cdk.mjs +1 -1
- package/fesm2022/cdk.mjs.map +1 -1
- package/fesm2022/drag-drop.mjs +2 -1
- package/fesm2022/drag-drop.mjs.map +1 -1
- package/fesm2022/tree.mjs +26 -7
- package/fesm2022/tree.mjs.map +1 -1
- package/package.json +1 -1
- package/schematics/ng-add/index.js +1 -1
- package/schematics/ng-add/index.mjs +1 -1
- package/tree/index.d.ts +4 -1
package/a11y/index.d.ts
CHANGED
|
@@ -1279,7 +1279,7 @@ export declare class TreeKeyManager<T extends TreeKeyManagerItem> implements Tre
|
|
|
1279
1279
|
private _typeahead?;
|
|
1280
1280
|
private _typeaheadSubscription;
|
|
1281
1281
|
private _hasInitialFocused;
|
|
1282
|
-
private
|
|
1282
|
+
private _initializeFocus;
|
|
1283
1283
|
/**
|
|
1284
1284
|
*
|
|
1285
1285
|
* @param items List of TreeKeyManager options. Can be synchronous or asynchronous.
|
|
@@ -1371,6 +1371,10 @@ export declare interface TreeKeyManagerItem {
|
|
|
1371
1371
|
* Unfocus the item. This should remove the focus state.
|
|
1372
1372
|
*/
|
|
1373
1373
|
unfocus(): void;
|
|
1374
|
+
/**
|
|
1375
|
+
* Sets the item to be focusable without actually focusing it.
|
|
1376
|
+
*/
|
|
1377
|
+
makeFocusable?(): void;
|
|
1374
1378
|
}
|
|
1375
1379
|
|
|
1376
1380
|
/**
|
|
@@ -6,4 +6,4 @@
|
|
|
6
6
|
* found in the LICENSE file at https://angular.io/license
|
|
7
7
|
*/
|
|
8
8
|
export {};
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1rZXktbWFuYWdlci1zdHJhdGVneS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jZGsvYTExeS9rZXktbWFuYWdlci90cmVlLWtleS1tYW5hZ2VyLXN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge1F1ZXJ5TGlzdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGUsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuXG4vKiogUmVwcmVzZW50cyBhbiBpdGVtIHdpdGhpbiBhIHRyZWUgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIGEgVHJlZUtleU1hbmFnZXIuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyZWVLZXlNYW5hZ2VySXRlbSB7XG4gIC8qKiBXaGV0aGVyIHRoZSBpdGVtIGlzIGRpc2FibGVkLiAqL1xuICBpc0Rpc2FibGVkPzogKCgpID0+IGJvb2xlYW4pIHwgYm9vbGVhbjtcblxuICAvKiogVGhlIHVzZXItZmFjaW5nIGxhYmVsIGZvciB0aGlzIGl0ZW0uICovXG4gIGdldExhYmVsPygpOiBzdHJpbmc7XG5cbiAgLyoqIFBlcmZvcm0gdGhlIG1haW4gYWN0aW9uIChpLmUuIHNlbGVjdGlvbikgZm9yIHRoaXMgaXRlbS4gKi9cbiAgYWN0aXZhdGUoKTogdm9pZDtcblxuICAvKiogUmV0cmlldmVzIHRoZSBwYXJlbnQgZm9yIHRoaXMgaXRlbS4gVGhpcyBpcyBgbnVsbGAgaWYgdGhlcmUgaXMgbm8gcGFyZW50LiAqL1xuICBnZXRQYXJlbnQoKTogVHJlZUtleU1hbmFnZXJJdGVtIHwgbnVsbDtcblxuICAvKiogUmV0cmlldmVzIHRoZSBjaGlsZHJlbiBmb3IgdGhpcyBpdGVtLiAqL1xuICBnZXRDaGlsZHJlbigpOiBUcmVlS2V5TWFuYWdlckl0ZW1bXSB8IE9ic2VydmFibGU8VHJlZUtleU1hbmFnZXJJdGVtW10+O1xuXG4gIC8qKiBEZXRlcm1pbmVzIGlmIHRoZSBpdGVtIGlzIGN1cnJlbnRseSBleHBhbmRlZC4gKi9cbiAgaXNFeHBhbmRlZDogKCgpID0+
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1rZXktbWFuYWdlci1zdHJhdGVneS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jZGsvYTExeS9rZXktbWFuYWdlci90cmVlLWtleS1tYW5hZ2VyLXN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge1F1ZXJ5TGlzdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGUsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuXG4vKiogUmVwcmVzZW50cyBhbiBpdGVtIHdpdGhpbiBhIHRyZWUgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIGEgVHJlZUtleU1hbmFnZXIuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyZWVLZXlNYW5hZ2VySXRlbSB7XG4gIC8qKiBXaGV0aGVyIHRoZSBpdGVtIGlzIGRpc2FibGVkLiAqL1xuICBpc0Rpc2FibGVkPzogKCgpID0+IGJvb2xlYW4pIHwgYm9vbGVhbjtcblxuICAvKiogVGhlIHVzZXItZmFjaW5nIGxhYmVsIGZvciB0aGlzIGl0ZW0uICovXG4gIGdldExhYmVsPygpOiBzdHJpbmc7XG5cbiAgLyoqIFBlcmZvcm0gdGhlIG1haW4gYWN0aW9uIChpLmUuIHNlbGVjdGlvbikgZm9yIHRoaXMgaXRlbS4gKi9cbiAgYWN0aXZhdGUoKTogdm9pZDtcblxuICAvKiogUmV0cmlldmVzIHRoZSBwYXJlbnQgZm9yIHRoaXMgaXRlbS4gVGhpcyBpcyBgbnVsbGAgaWYgdGhlcmUgaXMgbm8gcGFyZW50LiAqL1xuICBnZXRQYXJlbnQoKTogVHJlZUtleU1hbmFnZXJJdGVtIHwgbnVsbDtcblxuICAvKiogUmV0cmlldmVzIHRoZSBjaGlsZHJlbiBmb3IgdGhpcyBpdGVtLiAqL1xuICBnZXRDaGlsZHJlbigpOiBUcmVlS2V5TWFuYWdlckl0ZW1bXSB8IE9ic2VydmFibGU8VHJlZUtleU1hbmFnZXJJdGVtW10+O1xuXG4gIC8qKiBEZXRlcm1pbmVzIGlmIHRoZSBpdGVtIGlzIGN1cnJlbnRseSBleHBhbmRlZC4gKi9cbiAgaXNFeHBhbmRlZDogKCgpID0+IGJvb2xlYW4pIHwgYm9vbGVhbjtcblxuICAvKiogQ29sbGFwc2VzIHRoZSBpdGVtLCBoaWRpbmcgaXRzIGNoaWxkcmVuLiAqL1xuICBjb2xsYXBzZSgpOiB2b2lkO1xuXG4gIC8qKiBFeHBhbmRzIHRoZSBpdGVtLCBzaG93aW5nIGl0cyBjaGlsZHJlbi4gKi9cbiAgZXhwYW5kKCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEZvY3VzZXMgdGhlIGl0ZW0uIFRoaXMgc2hvdWxkIHByb3ZpZGUgc29tZSBpbmRpY2F0aW9uIHRvIHRoZSB1c2VyIHRoYXQgdGhpcyBpdGVtIGlzIGZvY3VzZWQuXG4gICAqL1xuICBmb2N1cygpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBVbmZvY3VzIHRoZSBpdGVtLiBUaGlzIHNob3VsZCByZW1vdmUgdGhlIGZvY3VzIHN0YXRlLlxuICAgKi9cbiAgdW5mb2N1cygpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBpdGVtIHRvIGJlIGZvY3VzYWJsZSB3aXRob3V0IGFjdHVhbGx5IGZvY3VzaW5nIGl0LlxuICAgKi9cbiAgbWFrZUZvY3VzYWJsZT8oKTogdm9pZDtcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciB0aGUgVHJlZUtleU1hbmFnZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJlZUtleU1hbmFnZXJPcHRpb25zPFQgZXh0ZW5kcyBUcmVlS2V5TWFuYWdlckl0ZW0+IHtcbiAgLyoqXG4gICAqIElmIHRydWUsIHRoZW4gdGhlIGtleSBtYW5hZ2VyIHdpbGwgY2FsbCBgYWN0aXZhdGVgIGluIGFkZGl0aW9uIHRvIGNhbGxpbmcgYGZvY3VzYCB3aGVuIGFcbiAgICogcGFydGljdWxhciBpdGVtIGlzIGZvY3VzZWQuXG4gICAqL1xuICBzaG91bGRBY3RpdmF0aW9uRm9sbG93Rm9jdXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgZGlyZWN0aW9uIGluIHdoaWNoIHRoZSB0cmVlIGl0ZW1zIGFyZSBsYWlkIG91dCBob3Jpem9udGFsbHkuIFRoaXMgaW5mbHVlbmNlcyB3aGljaCBrZXlcbiAgICogd2lsbCBiZSBpbnRlcnByZXRlZCBhcyBleHBhbmQgb3IgY29sbGFwc2UuXG4gICAqL1xuICBob3Jpem9udGFsT3JpZW50YXRpb24/OiAncnRsJyB8ICdsdHInO1xuXG4gIC8qKlxuICAgKiBJZiBwcm92aWRlZCwgbmF2aWdhdGlvbiBcInNraXBzXCIgb3ZlciBpdGVtcyB0aGF0IHBhc3MgdGhlIGdpdmVuIHByZWRpY2F0ZS5cbiAgICpcbiAgICogSWYgdGhlIGl0ZW0gaXMgdG8gYmUgc2tpcHBlZCwgcHJlZGljYXRlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gZmFsc2UuXG4gICAqL1xuICBza2lwUHJlZGljYXRlPzogKGl0ZW06IFQpID0+IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIHByb3ZpZGVkLCBkZXRlcm1pbmVzIGhvdyB0aGUga2V5IG1hbmFnZXIgZGV0ZXJtaW5lcyBpZiB0d28gaXRlbXMgYXJlIGVxdWl2YWxlbnQuXG4gICAqXG4gICAqIEl0IHNob3VsZCBwcm92aWRlIGEgdW5pcXVlIGtleSBmb3IgZWFjaCB1bmlxdWUgdHJlZSBpdGVtLiBJZiB0d28gdHJlZSBpdGVtcyBhcmUgZXF1aXZhbGVudCxcbiAgICogdGhlbiB0aGlzIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gdGhlIHNhbWUgdmFsdWUuXG4gICAqL1xuICB0cmFja0J5PzogKHRyZWVJdGVtOiBUKSA9PiB1bmtub3duO1xuXG4gIC8qKlxuICAgKiBJZiBhIHZhbHVlIGlzIHByb3ZpZGVkLCBlbmFibGVzIHR5cGVhaGVhZCBtb2RlLCB3aGljaCBhbGxvd3MgdXNlcnMgdG8gc2V0IHRoZSBhY3RpdmUgaXRlbVxuICAgKiBieSB0eXBpbmcgdGhlIHZpc2libGUgbGFiZWwgb2YgdGhlIGl0ZW0uXG4gICAqXG4gICAqIElmIGEgbnVtYmVyIGlzIHByb3ZpZGVkLCB0aGlzIHdpbGwgYmUgdGhlIHRpbWUgdG8gd2FpdCBhZnRlciB0aGUgbGFzdCBrZXlzdHJva2UgYmVmb3JlXG4gICAqIHNldHRpbmcgdGhlIGFjdGl2ZSBpdGVtLiBJZiBgdHJ1ZWAgaXMgcHJvdmlkZWQsIHRoZSBkZWZhdWx0IGludGVydmFsIG9mIDIwMG1zIHdpbGwgYmUgdXNlZC5cbiAgICovXG4gIHR5cGVBaGVhZERlYm91bmNlSW50ZXJ2YWw/OiB0cnVlIHwgbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyZWVLZXlNYW5hZ2VyU3RyYXRlZ3k8VCBleHRlbmRzIFRyZWVLZXlNYW5hZ2VySXRlbT4ge1xuICAvKiogU3RyZWFtIHRoYXQgZW1pdHMgYW55IHRpbWUgdGhlIGZvY3VzZWQgaXRlbSBjaGFuZ2VzLiAqL1xuICByZWFkb25seSBjaGFuZ2U6IFN1YmplY3Q8VCB8IG51bGw+O1xuXG4gIC8qKlxuICAgKiBDbGVhbnMgdXAgdGhlIGtleSBtYW5hZ2VyLlxuICAgKi9cbiAgZGVzdHJveSgpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBIYW5kbGVzIGEga2V5Ym9hcmQgZXZlbnQgb24gdGhlIHRyZWUuXG4gICAqXG4gICAqIEBwYXJhbSBldmVudCBLZXlib2FyZCBldmVudCB0aGF0IHJlcHJlc2VudHMgdGhlIHVzZXIgaW50ZXJhY3Rpb24gd2l0aCB0aGUgdHJlZS5cbiAgICovXG4gIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQ7XG5cbiAgLyoqIEluZGV4IG9mIHRoZSBjdXJyZW50bHkgYWN0aXZlIGl0ZW0uICovXG4gIGdldEFjdGl2ZUl0ZW1JbmRleCgpOiBudW1iZXIgfCBudWxsO1xuXG4gIC8qKiBUaGUgY3VycmVudGx5IGFjdGl2ZSBpdGVtLiAqL1xuICBnZXRBY3RpdmVJdGVtKCk6IFQgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBGb2N1cyB0aGUgcHJvdmlkZWQgaXRlbSBieSBpbmRleC5cbiAgICpcbiAgICogVXBkYXRlcyB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnRseSBhY3RpdmUgaXRlbS4gRW1pdHMgdG8gYGNoYW5nZWAgc3RyZWFtIGlmIGFjdGl2ZSBpdGVtXG4gICAqIENoYW5nZXMuXG4gICAqIEBwYXJhbSBpbmRleCBUaGUgaW5kZXggb2YgdGhlIGl0ZW0gdG8gZm9jdXMuXG4gICAqIEBwYXJhbSBvcHRpb25zIEFkZGl0aW9uYWwgZm9jdXNpbmcgb3B0aW9ucy5cbiAgICovXG4gIGZvY3VzSXRlbShpbmRleDogbnVtYmVyLCBvcHRpb25zPzoge2VtaXRDaGFuZ2VFdmVudD86IGJvb2xlYW59KTogdm9pZDtcbiAgLyoqXG4gICAqIEZvY3VzIHRoZSBwcm92aWRlZCBpdGVtLlxuICAgKlxuICAgKiBVcGRhdGVzIHRoZSBzdGF0ZSBvZiB0aGUgY3VycmVudGx5IGFjdGl2ZSBpdGVtLiBFbWl0cyB0byBgY2hhbmdlYCBzdHJlYW0gaWYgYWN0aXZlIGl0ZW1cbiAgICogQ2hhbmdlcy5cbiAgICogQHBhcmFtIGl0ZW0gVGhlIGl0ZW0gdG8gZm9jdXMuIEVxdWFsaXR5IGlzIGRldGVybWluZWQgdmlhIHRoZSB0cmFja0J5IGZ1bmN0aW9uLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBBZGRpdGlvbmFsIGZvY3VzaW5nIG9wdGlvbnMuXG4gICAqL1xuICBmb2N1c0l0ZW0oaXRlbTogVCwgb3B0aW9ucz86IHtlbWl0Q2hhbmdlRXZlbnQ/OiBib29sZWFufSk6IHZvaWQ7XG4gIGZvY3VzSXRlbShpdGVtT3JJbmRleDogbnVtYmVyIHwgVCwgb3B0aW9ucz86IHtlbWl0Q2hhbmdlRXZlbnQ/OiBib29sZWFufSk6IHZvaWQ7XG59XG5cbmV4cG9ydCB0eXBlIFRyZWVLZXlNYW5hZ2VyRmFjdG9yeTxUIGV4dGVuZHMgVHJlZUtleU1hbmFnZXJJdGVtPiA9IChcbiAgaXRlbXM6IE9ic2VydmFibGU8VFtdPiB8IFF1ZXJ5TGlzdDxUPiB8IFRbXSxcbiAgb3B0aW9uczogVHJlZUtleU1hbmFnZXJPcHRpb25zPFQ+LFxuKSA9PiBUcmVlS2V5TWFuYWdlclN0cmF0ZWd5PFQ+O1xuIl19
|
|
@@ -16,21 +16,31 @@ import { Typeahead } from './typeahead';
|
|
|
16
16
|
* keyboard events occur.
|
|
17
17
|
*/
|
|
18
18
|
export class TreeKeyManager {
|
|
19
|
-
|
|
20
|
-
if (this._hasInitialFocused) {
|
|
19
|
+
_initializeFocus() {
|
|
20
|
+
if (this._hasInitialFocused || this._items.length === 0) {
|
|
21
21
|
return;
|
|
22
22
|
}
|
|
23
|
-
|
|
24
|
-
return;
|
|
25
|
-
}
|
|
26
|
-
let focusIndex = 0;
|
|
23
|
+
let activeIndex = 0;
|
|
27
24
|
for (let i = 0; i < this._items.length; i++) {
|
|
28
25
|
if (!this._skipPredicateFn(this._items[i]) && !this._isItemDisabled(this._items[i])) {
|
|
29
|
-
|
|
26
|
+
activeIndex = i;
|
|
30
27
|
break;
|
|
31
28
|
}
|
|
32
29
|
}
|
|
33
|
-
this.
|
|
30
|
+
const activeItem = this._items[activeIndex];
|
|
31
|
+
// Use `makeFocusable` here, because we want the item to just be focusable, not actually
|
|
32
|
+
// capture the focus since the user isn't interacting with it. See #29628.
|
|
33
|
+
if (activeItem.makeFocusable) {
|
|
34
|
+
this._activeItem?.unfocus();
|
|
35
|
+
this._activeItemIndex = activeIndex;
|
|
36
|
+
this._activeItem = activeItem;
|
|
37
|
+
this._typeahead?.setCurrentSelectedItemIndex(activeIndex);
|
|
38
|
+
activeItem.makeFocusable();
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
// Backwards compatibility for items that don't implement `makeFocusable`.
|
|
42
|
+
this.focusItem(activeIndex);
|
|
43
|
+
}
|
|
34
44
|
this._hasInitialFocused = true;
|
|
35
45
|
}
|
|
36
46
|
/**
|
|
@@ -79,7 +89,7 @@ export class TreeKeyManager {
|
|
|
79
89
|
this._items = newItems.toArray();
|
|
80
90
|
this._typeahead?.setItems(this._items);
|
|
81
91
|
this._updateActiveItemIndex(this._items);
|
|
82
|
-
this.
|
|
92
|
+
this._initializeFocus();
|
|
83
93
|
});
|
|
84
94
|
}
|
|
85
95
|
else if (isObservable(items)) {
|
|
@@ -87,12 +97,12 @@ export class TreeKeyManager {
|
|
|
87
97
|
this._items = newItems;
|
|
88
98
|
this._typeahead?.setItems(newItems);
|
|
89
99
|
this._updateActiveItemIndex(newItems);
|
|
90
|
-
this.
|
|
100
|
+
this._initializeFocus();
|
|
91
101
|
});
|
|
92
102
|
}
|
|
93
103
|
else {
|
|
94
104
|
this._items = items;
|
|
95
|
-
this.
|
|
105
|
+
this._initializeFocus();
|
|
96
106
|
}
|
|
97
107
|
if (typeof config.shouldActivationFollowFocus === 'boolean') {
|
|
98
108
|
this._shouldActivationFollowFocus = config.shouldActivationFollowFocus;
|
|
@@ -342,4 +352,4 @@ export const TREE_KEY_MANAGER_FACTORY_PROVIDER = {
|
|
|
342
352
|
provide: TREE_KEY_MANAGER,
|
|
343
353
|
useFactory: TREE_KEY_MANAGER_FACTORY,
|
|
344
354
|
};
|
|
345
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1rZXktbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jZGsvYTExeS9rZXktbWFuYWdlci90cmVlLWtleS1tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyxjQUFjLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQy9ELE9BQU8sRUFBYSxPQUFPLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxFQUFFLElBQUksWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3pGLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQU9wQyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBRXRDOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sY0FBYztJQWtDakIsYUFBYTtRQUNuQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzVCLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDeEIsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDbkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNwRixVQUFVLEdB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QUFDO0lBQ0wsQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixJQUFJLENBQUMsV0FBVyxFQUFFLFFBQVEsRUFBRSxDQUFDO0lBQy9CLENBQUM7Q0FDRjtBQUVELG9CQUFvQjtBQUNwQixNQUFNLFVBQVUsd0JBQXdCO0lBQ3RDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDaEUsQ0FBQztBQUVELDhEQUE4RDtBQUM5RCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLGNBQWMsQ0FBNkIsa0JBQWtCLEVBQUU7SUFDakcsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLHdCQUF3QjtDQUNsQyxDQUFDLENBQUM7QUFFSCxvQkFBb0I7QUFDcEIsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQUc7SUFDL0MsT0FBTyxFQUFFLGdCQUFnQjtJQUN6QixVQUFVLEVBQUUsd0JBQXdCO0NBQ3JDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtJbmplY3Rpb25Ub2tlbiwgUXVlcnlMaXN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Y29lcmNlT2JzZXJ2YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uL3ByaXZhdGUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGlzT2JzZXJ2YWJsZSwgb2YgYXMgb2JzZXJ2YWJsZU9mfSBmcm9tICdyeGpzJztcbmltcG9ydCB7dGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgVHJlZUtleU1hbmFnZXJGYWN0b3J5LFxuICBUcmVlS2V5TWFuYWdlckl0ZW0sXG4gIFRyZWVLZXlNYW5hZ2VyT3B0aW9ucyxcbiAgVHJlZUtleU1hbmFnZXJTdHJhdGVneSxcbn0gZnJvbSAnLi90cmVlLWtleS1tYW5hZ2VyLXN0cmF0ZWd5JztcbmltcG9ydCB7VHlwZWFoZWFkfSBmcm9tICcuL3R5cGVhaGVhZCc7XG5cbi8qKlxuICogVGhpcyBjbGFzcyBtYW5hZ2VzIGtleWJvYXJkIGV2ZW50cyBmb3IgdHJlZXMuIElmIHlvdSBwYXNzIGl0IGEgUXVlcnlMaXN0IG9yIG90aGVyIGxpc3Qgb2YgdHJlZVxuICogaXRlbXMsIGl0IHdpbGwgc2V0IHRoZSBhY3RpdmUgaXRlbSwgZm9jdXMsIGhhbmRsZSBleHBhbnNpb24gYW5kIHR5cGVhaGVhZCBjb3JyZWN0bHkgd2hlblxuICoga2V5Ym9hcmQgZXZlbnRzIG9jY3VyLlxuICovXG5leHBvcnQgY2xhc3MgVHJlZUtleU1hbmFnZXI8VCBleHRlbmRzIFRyZWVLZXlNYW5hZ2VySXRlbT4gaW1wbGVtZW50cyBUcmVlS2V5TWFuYWdlclN0cmF0ZWd5PFQ+IHtcbiAgLyoqIFRoZSBpbmRleCBvZiB0aGUgY3VycmVudGx5IGFjdGl2ZSAoZm9jdXNlZCkgaXRlbS4gKi9cbiAgcHJpdmF0ZSBfYWN0aXZlSXRlbUluZGV4ID0gLTE7XG4gIC8qKiBUaGUgY3VycmVudGx5IGFjdGl2ZSAoZm9jdXNlZCkgaXRlbS4gKi9cbiAgcHJpdmF0ZSBfYWN0aXZlSXRlbTogVCB8IG51bGwgPSBudWxsO1xuICAvKiogV2hldGhlciBvciBub3Qgd2UgYWN0aXZhdGUgdGhlIGl0ZW0gd2hlbiBpdCdzIGZvY3VzZWQuICovXG4gIHByaXZhdGUgX3Nob3VsZEFjdGl2YXRpb25Gb2xsb3dGb2N1cyA9IGZhbHNlO1xuICAvKipcbiAgICogVGhlIG9yaWVudGF0aW9uIHRoYXQgdGhlIHRyZWUgaXMgbGFpZCBvdXQgaW4uIEluIGBydGxgIG1vZGUsIHRoZSBiZWhhdmlvciBvZiBMZWZ0IGFuZFxuICAgKiBSaWdodCBhcnJvdyBhcmUgc3dpdGNoZWQuXG4gICAqL1xuICBwcml2YXRlIF9ob3Jpem9udGFsT3JpZW50YXRpb246ICdsdHInIHwgJ3J0bCcgPSAnbHRyJztcblxuICAvKipcbiAgICogUHJlZGljYXRlIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBhbiBpdGVtIHNob3VsZCBiZSBza2lwcGVkXG4gICAqIGJ5IHRoZSBrZXkgbWFuYWdlci5cbiAgICpcbiAgICogVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoaXMgZG9lc24ndCBza2lwIGFueSBlbGVtZW50cyBpbiBvcmRlciB0byBrZWVwIHRyZWUgaXRlbXMgZm9jdXNhYmxlXG4gICAqIHdoZW4gZGlzYWJsZWQuIFRoaXMgYWxpZ25zIHdpdGggQVJJQSBndWlkZWxpbmVzOlxuICAgKiBodHRwczovL3d3dy53My5vcmcvV0FJL0FSSUEvYXBnL3ByYWN0aWNlcy9rZXlib2FyZC1pbnRlcmZhY2UvI2ZvY3VzYWJpbGl0eW9mZGlzYWJsZWRjb250cm9scy5cbiAgICovXG4gIHByaXZhdGUgX3NraXBQcmVkaWNhdGVGbiA9IChfaXRlbTogVCkgPT4gZmFsc2U7XG5cbiAgLyoqIEZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50IGl0ZW1zLiAqL1xuICBwcml2YXRlIF90cmFja0J5Rm46IChpdGVtOiBUKSA9PiB1bmtub3duID0gKGl0ZW06IFQpID0+IGl0ZW07XG5cbiAgLyoqIFN5bmNocm9ub3VzIGNhY2hlIG9mIHRoZSBpdGVtcyB0byBtYW5hZ2UuICovXG4gIHByaXZhdGUgX2l0ZW1zOiBUW10gPSBbXTtcblxuICBwcml2YXRlIF90eXBlYWhlYWQ/OiBUeXBlYWhlYWQ8VD47XG4gIHByaXZhdGUgX3R5cGVhaGVhZFN1YnNjcmlwdGlvbiA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcblxuICBwcml2YXRlIF9oYXNJbml0aWFsRm9jdXNlZCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2luaXRpYWxGb2N1cygpIHtcbiAgICBpZiAodGhpcy5faGFzSW5pdGlhbEZvY3VzZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX2l0ZW1zLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBmb2N1c0luZGV4ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX2l0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoIXRoaXMuX3NraXBQcmVkaWNhdGVGbih0aGlzLl9pdGVtc1tpXSkgJiYgIXRoaXMuX2lzSXRlbURpc2FibGVkKHRoaXMuX2l0ZW1zW2ldKSkge1xuICAgICAgICBmb2N1c0luZGV4ID0gaTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5mb2N1c0l0ZW0oZm9jdXNJbmRleCk7XG4gICAgdGhpcy5faGFzSW5pdGlhbEZvY3VzZWQgPSB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBpdGVtcyBMaXN0IG9mIFRyZWVLZXlNYW5hZ2VyIG9wdGlvbnMuIENhbiBiZSBzeW5jaHJvbm91cyBvciBhc3luY2hyb25vdXMuXG4gICAqIEBwYXJhbSBjb25maWcgT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvcHRpb25zLiBCeSBkZWZhdWx0LCB1c2UgJ2x0cicgaG9yaXpvbnRhbCBvcmllbnRhdGlvbi4gQnlcbiAgICogZGVmYXVsdCwgZG8gbm90IHNraXAgYW55IG5vZGVzLiBCeSBkZWZhdWx0LCBrZXkgbWFuYWdlciBvbmx5IGNhbGxzIGBmb2N1c2AgbWV0aG9kIHdoZW4gaXRlbXNcbiAgICogYXJlIGZvY3VzZWQgYW5kIGRvZXMgbm90IGNhbGwgYGFjdGl2YXRlYC4gSWYgYHR5cGVhaGVhZERlZmF1bHRJbnRlcnZhbGAgaXMgYHRydWVgLCB1c2UgYVxuICAgKiBkZWZhdWx0IGludGVydmFsIG9mIDIwMG1zLlxuICAgKi9cbiAgY29uc3RydWN0b3IoaXRlbXM6IE9ic2VydmFibGU8VFtdPiB8IFF1ZXJ5TGlzdDxUPiB8IFRbXSwgY29uZmlnOiBUcmVlS2V5TWFuYWdlck9wdGlvbnM8VD4pIHtcbiAgICAvLyBXZSBhbGxvdyBmb3IgdGhlIGl0ZW1zIHRvIGJlIGFuIGFycmF5IG9yIE9ic2VydmFibGUgYmVjYXVzZSwgaW4gc29tZSBjYXNlcywgdGhlIGNvbnN1bWVyIG1heVxuICAgIC8vIG5vdCBoYXZlIGFjY2VzcyB0byBhIFF1ZXJ5TGlzdCBvZiB0aGUgaXRlbXMgdGhleSB3YW50IHRvIG1hbmFnZSAoZS5nLiB3aGVuIHRoZVxuICAgIC8vIGl0ZW1zIGFyZW4ndCBiZWluZyBjb2xsZWN0ZWQgdmlhIGBWaWV3Q2hpbGRyZW5gIG9yIGBDb250ZW50Q2hpbGRyZW5gKS5cbiAgICBpZiAoaXRlbXMgaW5zdGFuY2VvZiBRdWVyeUxpc3QpIHtcbiAgICAgIHRoaXMuX2l0ZW1zID0gaXRlbXMudG9BcnJheSgpO1xuICAgICAgaXRlbXMuY2hhbmdlcy5zdWJzY3JpYmUoKG5ld0l0ZW1zOiBRdWVyeUxpc3Q8VD4pID0+IHtcbiAgICAgICAgdGhpcy5faXRlbXMgPSBuZXdJdGVtcy50b0FycmF5KCk7XG4gICAgICAgIHRoaXMuX3R5cGVhaGVhZD8uc2V0SXRlbXModGhpcy5faXRlbXMpO1xuICAgICAgICB0aGlzLl91cGRhdGVBY3RpdmVJdGVtSW5kZXgodGhpcy5faXRlbXMpO1xuICAgICAgICB0aGlzLl9pbml0aWFsRm9jdXMoKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoaXNPYnNlcnZhYmxlKGl0ZW1zKSkge1xuICAgICAgaXRlbXMuc3Vic2NyaWJlKG5ld0l0ZW1zID0+IHtcbiAgICAgICAgdGhpcy5faXRlbXMgPSBuZXdJdGVtcztcbiAgICAgICAgdGhpcy5fdHlwZWFoZWFkPy5zZXRJdGVtcyhuZXdJdGVtcyk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUFjdGl2ZUl0ZW1JbmRleChuZXdJdGVtcyk7XG4gICAgICAgIHRoaXMuX2luaXRpYWxGb2N1cygpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2l0ZW1zID0gaXRlbXM7XG4gICAgICB0aGlzLl9pbml0aWFsRm9jdXMoKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGNvbmZpZy5zaG91bGRBY3RpdmF0aW9uRm9sbG93Rm9jdXMgPT09ICdib29sZWFuJykge1xuICAgICAgdGhpcy5fc2hvdWxkQWN0aXZhdGlvbkZvbGxvd0ZvY3VzID0gY29uZmlnLnNob3VsZEFjdGl2YXRpb25Gb2xsb3dGb2N1cztcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5ob3Jpem9udGFsT3JpZW50YXRpb24pIHtcbiAgICAgIHRoaXMuX2hvcml6b250YWxPcmllbnRhdGlvbiA9IGNvbmZpZy5ob3Jpem9udGFsT3JpZW50YXRpb247XG4gICAgfVxuICAgIGlmIChjb25maWcuc2tpcFByZWRpY2F0ZSkge1xuICAgICAgdGhpcy5fc2tpcFByZWRpY2F0ZUZuID0gY29uZmlnLnNraXBQcmVkaWNhdGU7XG4gICAgfVxuICAgIGlmIChjb25maWcudHJhY2tCeSkge1xuICAgICAgdGhpcy5fdHJhY2tCeUZuID0gY29uZmlnLnRyYWNrQnk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgY29uZmlnLnR5cGVBaGVhZERlYm91bmNlSW50ZXJ2YWwgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aGlzLl9zZXRUeXBlQWhlYWQoY29uZmlnLnR5cGVBaGVhZERlYm91bmNlSW50ZXJ2YWwpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBTdHJlYW0gdGhhdCBlbWl0cyBhbnkgdGltZSB0aGUgZm9jdXNlZCBpdGVtIGNoYW5nZXMuICovXG4gIHJlYWRvbmx5IGNoYW5nZSA9IG5ldyBTdWJqZWN0PFQgfCBudWxsPigpO1xuXG4gIC8qKiBDbGVhbnMgdXAgdGhlIGtleSBtYW5hZ2VyLiAqL1xuICBkZXN0cm95KCkge1xuICAgIHRoaXMuX3R5cGVhaGVhZFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuX3R5cGVhaGVhZD8uZGVzdHJveSgpO1xuICAgIHRoaXMuY2hhbmdlLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBhIGtleWJvYXJkIGV2ZW50IG9uIHRoZSB0cmVlLlxuICAgKiBAcGFyYW0gZXZlbnQgS2V5Ym9hcmQgZXZlbnQgdGhhdCByZXByZXNlbnRzIHRoZSB1c2VyIGludGVyYWN0aW9uIHdpdGggdGhlIHRyZWUuXG4gICAqL1xuICBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBjb25zdCBrZXkgPSBldmVudC5rZXk7XG5cbiAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgY2FzZSAnVGFiJzpcbiAgICAgICAgLy8gUmV0dXJuIGVhcmx5IGhlcmUsIGluIG9yZGVyIHRvIGFsbG93IFRhYiB0byBhY3R1YWxseSB0YWIgb3V0IG9mIHRoZSB0cmVlXG4gICAgICAgIHJldHVybjtcblxuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgdGhpcy5fZm9jdXNOZXh0SXRlbSgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgIHRoaXMuX2ZvY3VzUHJldmlvdXNJdGVtKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdBcnJvd1JpZ2h0JzpcbiAgICAgICAgdGhpcy5faG9yaXpvbnRhbE9yaWVudGF0aW9uID09PSAncnRsJ1xuICAgICAgICAgID8gdGhpcy5fY29sbGFwc2VDdXJyZW50SXRlbSgpXG4gICAgICAgICAgOiB0aGlzLl9leHBhbmRDdXJyZW50SXRlbSgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgdGhpcy5faG9yaXpvbnRhbE9yaWVudGF0aW9uID09PSAncnRsJ1xuICAgICAgICAgID8gdGhpcy5fZXhwYW5kQ3VycmVudEl0ZW0oKVxuICAgICAgICAgIDogdGhpcy5fY29sbGFwc2VDdXJyZW50SXRlbSgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnSG9tZSc6XG4gICAgICAgIHRoaXMuX2ZvY3VzRmlyc3RJdGVtKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdFbmQnOlxuICAgICAgICB0aGlzLl9mb2N1c0xhc3RJdGVtKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdFbnRlcic6XG4gICAgICBjYXNlICcgJzpcbiAgICAgICAgdGhpcy5fYWN0aXZhdGVDdXJyZW50SXRlbSgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJyonKSB7XG4gICAgICAgICAgdGhpcy5fZXhwYW5kQWxsSXRlbXNBdEN1cnJlbnRJdGVtTGV2ZWwoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3R5cGVhaGVhZD8uaGFuZGxlS2V5KGV2ZW50KTtcbiAgICAgICAgLy8gUmV0dXJuIGhlcmUsIGluIG9yZGVyIHRvIGF2b2lkIHByZXZlbnRpbmcgdGhlIGRlZmF1bHQgYWN0aW9uIG9mIG5vbi1uYXZpZ2F0aW9uYWxcbiAgICAgICAgLy8ga2V5cyBvciByZXNldHRpbmcgdGhlIGJ1ZmZlciBvZiBwcmVzc2VkIGxldHRlcnMuXG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBSZXNldCB0aGUgdHlwZWFoZWFkIHNpbmNlIHRoZSB1c2VyIGhhcyB1c2VkIGEgbmF2aWdhdGlvbmFsIGtleS5cbiAgICB0aGlzLl90eXBlYWhlYWQ/LnJlc2V0KCk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIC8qKiBJbmRleCBvZiB0aGUgY3VycmVudGx5IGFjdGl2ZSBpdGVtLiAqL1xuICBnZXRBY3RpdmVJdGVtSW5kZXgoKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZUl0ZW1JbmRleDtcbiAgfVxuXG4gIC8qKiBUaGUgY3VycmVudGx5IGFjdGl2ZSBpdGVtLiAqL1xuICBnZXRBY3RpdmVJdGVtKCk6IFQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlSXRlbTtcbiAgfVxuXG4gIC8qKiBGb2N1cyB0aGUgZmlyc3QgYXZhaWxhYmxlIGl0ZW0uICovXG4gIHByaXZhdGUgX2ZvY3VzRmlyc3RJdGVtKCk6IHZvaWQge1xuICAgIHRoaXMuZm9jdXNJdGVtKHRoaXMuX2ZpbmROZXh0QXZhaWxhYmxlSXRlbUluZGV4KC0xKSk7XG4gIH1cblxuICAvKiogRm9jdXMgdGhlIGxhc3QgYXZhaWxhYmxlIGl0ZW0uICovXG4gIHByaXZhdGUgX2ZvY3VzTGFzdEl0ZW0oKTogdm9pZCB7XG4gICAgdGhpcy5mb2N1c0l0ZW0odGhpcy5fZmluZFByZXZpb3VzQXZhaWxhYmxlSXRlbUluZGV4KHRoaXMuX2l0ZW1zLmxlbmd0aCkpO1xuICB9XG5cbiAgLyoqIEZvY3VzIHRoZSBuZXh0IGF2YWlsYWJsZSBpdGVtLiAqL1xuICBwcml2YXRlIF9mb2N1c05leHRJdGVtKCk6IHZvaWQge1xuICAgIHRoaXMuZm9jdXNJdGVtKHRoaXMuX2ZpbmROZXh0QXZhaWxhYmxlSXRlbUluZGV4KHRoaXMuX2FjdGl2ZUl0ZW1JbmRleCkpO1xuICB9XG5cbiAgLyoqIEZvY3VzIHRoZSBwcmV2aW91cyBhdmFpbGFibGUgaXRlbS4gKi9cbiAgcHJpdmF0ZSBfZm9jdXNQcmV2aW91c0l0ZW0oKTogdm9pZCB7XG4gICAgdGhpcy5mb2N1c0l0ZW0odGhpcy5fZmluZFByZXZpb3VzQXZhaWxhYmxlSXRlbUluZGV4KHRoaXMuX2FjdGl2ZUl0ZW1JbmRleCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvY3VzIHRoZSBwcm92aWRlZCBpdGVtIGJ5IGluZGV4LlxuICAgKiBAcGFyYW0gaW5kZXggVGhlIGluZGV4IG9mIHRoZSBpdGVtIHRvIGZvY3VzLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBBZGRpdGlvbmFsIGZvY3VzaW5nIG9wdGlvbnMuXG4gICAqL1xuICBmb2N1c0l0ZW0oaW5kZXg6IG51bWJlciwgb3B0aW9ucz86IHtlbWl0Q2hhbmdlRXZlbnQ/OiBib29sZWFufSk6IHZvaWQ7XG4gIGZvY3VzSXRlbShpdGVtOiBULCBvcHRpb25zPzoge2VtaXRDaGFuZ2VFdmVudD86IGJvb2xlYW59KTogdm9pZDtcbiAgZm9jdXNJdGVtKGl0ZW1PckluZGV4OiBudW1iZXIgfCBULCBvcHRpb25zPzoge2VtaXRDaGFuZ2VFdmVudD86IGJvb2xlYW59KTogdm9pZDtcbiAgZm9jdXNJdGVtKGl0ZW1PckluZGV4OiBudW1iZXIgfCBULCBvcHRpb25zOiB7ZW1pdENoYW5nZUV2ZW50PzogYm9vbGVhbn0gPSB7fSkge1xuICAgIC8vIFNldCBkZWZhdWx0IG9wdGlvbnNcbiAgICBvcHRpb25zLmVtaXRDaGFuZ2VFdmVudCA/Pz0gdHJ1ZTtcblxuICAgIGxldCBpbmRleCA9XG4gICAgICB0eXBlb2YgaXRlbU9ySW5kZXggPT09ICdudW1iZXInXG4gICAgICAgID8gaXRlbU9ySW5kZXhcbiAgICAgICAgOiB0aGlzLl9pdGVtcy5maW5kSW5kZXgoaXRlbSA9PiB0aGlzLl90cmFja0J5Rm4oaXRlbSkgPT09IHRoaXMuX3RyYWNrQnlGbihpdGVtT3JJbmRleCkpO1xuICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdGhpcy5faXRlbXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGFjdGl2ZUl0ZW0gPSB0aGlzLl9pdGVtc1tpbmRleF07XG5cbiAgICAvLyBJZiB3ZSdyZSBqdXN0IHNldHRpbmcgdGhlIHNhbWUgaXRlbSwgZG9uJ3QgcmUtY2FsbCBhY3RpdmF0ZSBvciBmb2N1c1xuICAgIGlmIChcbiAgICAgIHRoaXMuX2FjdGl2ZUl0ZW0gIT09IG51bGwgJiZcbiAgICAgIHRoaXMuX3RyYWNrQnlGbihhY3RpdmVJdGVtKSA9PT0gdGhpcy5fdHJhY2tCeUZuKHRoaXMuX2FjdGl2ZUl0ZW0pXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcHJldmlvdXNBY3RpdmVJdGVtID0gdGhpcy5fYWN0aXZlSXRlbTtcbiAgICB0aGlzLl9hY3RpdmVJdGVtID0gYWN0aXZlSXRlbSA/PyBudWxsO1xuICAgIHRoaXMuX2FjdGl2ZUl0ZW1JbmRleCA9IGluZGV4O1xuICAgIHRoaXMuX3R5cGVhaGVhZD8uc2V0Q3VycmVudFNlbGVjdGVkSXRlbUluZGV4KGluZGV4KTtcblxuICAgIHRoaXMuX2FjdGl2ZUl0ZW0/LmZvY3VzKCk7XG4gICAgcHJldmlvdXNBY3RpdmVJdGVtPy51bmZvY3VzKCk7XG5cbiAgICBpZiAob3B0aW9ucy5lbWl0Q2hhbmdlRXZlbnQpIHtcbiAgICAgIHRoaXMuY2hhbmdlLm5leHQodGhpcy5fYWN0aXZlSXRlbSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3Nob3VsZEFjdGl2YXRpb25Gb2xsb3dGb2N1cykge1xuICAgICAgdGhpcy5fYWN0aXZhdGVDdXJyZW50SXRlbSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZUFjdGl2ZUl0ZW1JbmRleChuZXdJdGVtczogVFtdKSB7XG4gICAgY29uc3QgYWN0aXZlSXRlbSA9IHRoaXMuX2FjdGl2ZUl0ZW07XG4gICAgaWYgKCFhY3RpdmVJdGVtKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbmV3SW5kZXggPSBuZXdJdGVtcy5maW5kSW5kZXgoXG4gICAgICBpdGVtID0+IHRoaXMuX3RyYWNrQnlGbihpdGVtKSA9PT0gdGhpcy5fdHJhY2tCeUZuKGFjdGl2ZUl0ZW0pLFxuICAgICk7XG5cbiAgICBpZiAobmV3SW5kZXggPiAtMSAmJiBuZXdJbmRleCAhPT0gdGhpcy5fYWN0aXZlSXRlbUluZGV4KSB7XG4gICAgICB0aGlzLl9hY3RpdmVJdGVtSW5kZXggPSBuZXdJbmRleDtcbiAgICAgIHRoaXMuX3R5cGVhaGVhZD8uc2V0Q3VycmVudFNlbGVjdGVkSXRlbUluZGV4KG5ld0luZGV4KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zZXRUeXBlQWhlYWQoZGVib3VuY2VJbnRlcnZhbDogbnVtYmVyIHwgYm9vbGVhbikge1xuICAgIHRoaXMuX3R5cGVhaGVhZCA9IG5ldyBUeXBlYWhlYWQodGhpcy5faXRlbXMsIHtcbiAgICAgIGRlYm91bmNlSW50ZXJ2YWw6IHR5cGVvZiBkZWJvdW5jZUludGVydmFsID09PSAnbnVtYmVyJyA/IGRlYm91bmNlSW50ZXJ2YWwgOiB1bmRlZmluZWQsXG4gICAgICBza2lwUHJlZGljYXRlOiBpdGVtID0+IHRoaXMuX3NraXBQcmVkaWNhdGVGbihpdGVtKSxcbiAgICB9KTtcblxuICAgIHRoaXMuX3R5cGVhaGVhZFN1YnNjcmlwdGlvbiA9IHRoaXMuX3R5cGVhaGVhZC5zZWxlY3RlZEl0ZW0uc3Vic2NyaWJlKGl0ZW0gPT4ge1xuICAgICAgdGhpcy5mb2N1c0l0ZW0oaXRlbSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9maW5kTmV4dEF2YWlsYWJsZUl0ZW1JbmRleChzdGFydGluZ0luZGV4OiBudW1iZXIpIHtcbiAgICBmb3IgKGxldCBpID0gc3RhcnRpbmdJbmRleCArIDE7IGkgPCB0aGlzLl9pdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKCF0aGlzLl9za2lwUHJlZGljYXRlRm4odGhpcy5faXRlbXNbaV0pKSB7XG4gICAgICAgIHJldHVybiBpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3RhcnRpbmdJbmRleDtcbiAgfVxuXG4gIHByaXZhdGUgX2ZpbmRQcmV2aW91c0F2YWlsYWJsZUl0ZW1JbmRleChzdGFydGluZ0luZGV4OiBudW1iZXIpIHtcbiAgICBmb3IgKGxldCBpID0gc3RhcnRpbmdJbmRleCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBpZiAoIXRoaXMuX3NraXBQcmVkaWNhdGVGbih0aGlzLl9pdGVtc1tpXSkpIHtcbiAgICAgICAgcmV0dXJuIGk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdGFydGluZ0luZGV4O1xuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZSBpdGVtIGlzIGFscmVhZHkgZXhwYW5kZWQsIHdlIGNvbGxhcHNlIHRoZSBpdGVtLiBPdGhlcndpc2UsIHdlIHdpbGwgZm9jdXMgdGhlIHBhcmVudC5cbiAgICovXG4gIHByaXZhdGUgX2NvbGxhcHNlQ3VycmVudEl0ZW0oKSB7XG4gICAgaWYgKCF0aGlzLl9hY3RpdmVJdGVtKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2lzQ3VycmVudEl0ZW1FeHBhbmRlZCgpKSB7XG4gICAgICB0aGlzLl9hY3RpdmVJdGVtLmNvbGxhcHNlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuX2FjdGl2ZUl0ZW0uZ2V0UGFyZW50KCk7XG4gICAgICBpZiAoIXBhcmVudCB8fCB0aGlzLl9za2lwUHJlZGljYXRlRm4ocGFyZW50IGFzIFQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuZm9jdXNJdGVtKHBhcmVudCBhcyBUKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIGl0ZW0gaXMgYWxyZWFkeSBjb2xsYXBzZWQsIHdlIGV4cGFuZCB0aGUgaXRlbS4gT3RoZXJ3aXNlLCB3ZSB3aWxsIGZvY3VzIHRoZSBmaXJzdCBjaGlsZC5cbiAgICovXG4gIHByaXZhdGUgX2V4cGFuZEN1cnJlbnRJdGVtKCkge1xuICAgIGlmICghdGhpcy5fYWN0aXZlSXRlbSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5faXNDdXJyZW50SXRlbUV4cGFuZGVkKCkpIHtcbiAgICAgIHRoaXMuX2FjdGl2ZUl0ZW0uZXhwYW5kKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvZXJjZU9ic2VydmFibGUodGhpcy5fYWN0aXZlSXRlbS5nZXRDaGlsZHJlbigpKVxuICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAuc3Vic2NyaWJlKGNoaWxkcmVuID0+IHtcbiAgICAgICAgICBjb25zdCBmaXJzdENoaWxkID0gY2hpbGRyZW4uZmluZChjaGlsZCA9PiAhdGhpcy5fc2tpcFByZWRpY2F0ZUZuKGNoaWxkIGFzIFQpKTtcbiAgICAgICAgICBpZiAoIWZpcnN0Q2hpbGQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5mb2N1c0l0ZW0oZmlyc3RDaGlsZCBhcyBUKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaXNDdXJyZW50SXRlbUV4cGFuZGVkKCkge1xuICAgIGlmICghdGhpcy5fYWN0aXZlSXRlbSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHlwZW9mIHRoaXMuX2FjdGl2ZUl0ZW0uaXNFeHBhbmRlZCA9PT0gJ2Jvb2xlYW4nXG4gICAgICA/IHRoaXMuX2FjdGl2ZUl0ZW0uaXNFeHBhbmRlZFxuICAgICAgOiB0aGlzLl9hY3RpdmVJdGVtLmlzRXhwYW5kZWQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2lzSXRlbURpc2FibGVkKGl0ZW06IFRyZWVLZXlNYW5hZ2VySXRlbSkge1xuICAgIHJldHVybiB0eXBlb2YgaXRlbS5pc0Rpc2FibGVkID09PSAnYm9vbGVhbicgPyBpdGVtLmlzRGlzYWJsZWQgOiBpdGVtLmlzRGlzYWJsZWQ/LigpO1xuICB9XG5cbiAgLyoqIEZvciBhbGwgaXRlbXMgdGhhdCBhcmUgdGhlIHNhbWUgbGV2ZWwgYXMgdGhlIGN1cnJlbnQgaXRlbSwgd2UgZXhwYW5kIHRob3NlIGl0ZW1zLiAqL1xuICBwcml2YXRlIF9leHBhbmRBbGxJdGVtc0F0Q3VycmVudEl0ZW1MZXZlbCgpIHtcbiAgICBpZiAoIXRoaXMuX2FjdGl2ZUl0ZW0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLl9hY3RpdmVJdGVtLmdldFBhcmVudCgpO1xuICAgIGxldCBpdGVtc1RvRXhwYW5kO1xuICAgIGlmICghcGFyZW50KSB7XG4gICAgICBpdGVtc1RvRXhwYW5kID0gb2JzZXJ2YWJsZU9mKHRoaXMuX2l0ZW1zLmZpbHRlcihpdGVtID0+IGl0ZW0uZ2V0UGFyZW50KCkgPT09IG51bGwpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaXRlbXNUb0V4cGFuZCA9IGNvZXJjZU9ic2VydmFibGUocGFyZW50LmdldENoaWxkcmVuKCkpO1xuICAgIH1cblxuICAgIGl0ZW1zVG9FeHBhbmQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoaXRlbXMgPT4ge1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgIGl0ZW0uZXhwYW5kKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9hY3RpdmF0ZUN1cnJlbnRJdGVtKCkge1xuICAgIHRoaXMuX2FjdGl2ZUl0ZW0/LmFjdGl2YXRlKCk7XG4gIH1cbn1cblxuLyoqIEBkb2NzLXByaXZhdGUgKi9cbmV4cG9ydCBmdW5jdGlvbiBUUkVFX0tFWV9NQU5BR0VSX0ZBQ1RPUlk8VCBleHRlbmRzIFRyZWVLZXlNYW5hZ2VySXRlbT4oKTogVHJlZUtleU1hbmFnZXJGYWN0b3J5PFQ+IHtcbiAgcmV0dXJuIChpdGVtcywgb3B0aW9ucykgPT4gbmV3IFRyZWVLZXlNYW5hZ2VyKGl0ZW1zLCBvcHRpb25zKTtcbn1cblxuLyoqIEluamVjdGlvbiB0b2tlbiB0aGF0IGRldGVybWluZXMgdGhlIGtleSBtYW5hZ2VyIHRvIHVzZS4gKi9cbmV4cG9ydCBjb25zdCBUUkVFX0tFWV9NQU5BR0VSID0gbmV3IEluamVjdGlvblRva2VuPFRyZWVLZXlNYW5hZ2VyRmFjdG9yeTxhbnk+PigndHJlZS1rZXktbWFuYWdlcicsIHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICBmYWN0b3J5OiBUUkVFX0tFWV9NQU5BR0VSX0ZBQ1RPUlksXG59KTtcblxuLyoqIEBkb2NzLXByaXZhdGUgKi9cbmV4cG9ydCBjb25zdCBUUkVFX0tFWV9NQU5BR0VSX0ZBQ1RPUllfUFJPVklERVIgPSB7XG4gIHByb3ZpZGU6IFRSRUVfS0VZX01BTkFHRVIsXG4gIHVzZUZhY3Rvcnk6IFRSRUVfS0VZX01BTkFHRVJfRkFDVE9SWSxcbn07XG4iXX0=
|
|
355
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1rZXktbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jZGsvYTExeS9rZXktbWFuYWdlci90cmVlLWtleS1tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyxjQUFjLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQy9ELE9BQU8sRUFBYSxPQUFPLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxFQUFFLElBQUksWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3pGLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQU9wQyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBRXRDOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sY0FBYztJQWtDakIsZ0JBQWdCO1FBQ3RCLElBQUksSUFBSSxDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hELE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDcEYsV0FBVyxHQUFHLENBQUMsQ0FBQztnQkFDaEIsTUFBTTtZQUNSLENBQUM7UUFDSCxDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUU1Qyx3RkFBd0Y7UUFDeEYsMEVBQTBFO1FBQzFFLElBQUksVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFdBQVcsQ0FBQztZQUNwQyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztZQUM5QixJQUFJLENBQUMsVUFBVSxFQUFFLDJCQUEyQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzFELFVBQVUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM3QixDQUFDO2FBQU0sQ0FBQztZQUNOLDBFQUEwRTtZQUMxRSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzlCLENBQUM7UUFFRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsWUFBWSxLQUEyQyxFQUFFLE1BQWdDO1FBeEV6Rix3REFBd0Q7UUFDaEQscUJBQWdCLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDOUIsMkNBQTJDO1FBQ25DLGdCQUFXLEdBQWEsSUFBSSxDQUFDO1FBQ3JDLDZEQUE2RDtRQUNyRCxpQ0FBNEIsR0FBRyxLQUFLLENBQUM7UUFDN0M7OztXQUdHO1FBQ0ssMkJBQXNCLEdBQWtCLEtBQUssQ0FBQztRQUV0RDs7Ozs7OztXQU9HO1FBQ0sscUJBQWdCLEdBQUcsQ0FBQyxLQUFRLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQztRQUUvQyw4Q0FBOEM7UUFDdEMsZUFBVSxHQUF5QixDQUFDLElBQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDO1FBRTdELGdEQUFnRDtRQUN4QyxXQUFNLEdBQVEsRUFBRSxDQUFDO1FBR2pCLDJCQUFzQixHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFFNUMsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBa0ZuQywyREFBMkQ7UUFDbEQsV0FBTSxHQUFHLElBQUksT0FBTyxFQUFZLENBQUM7UUF6Q3hDLCtGQUErRjtRQUMvRixpRkFBaUY7UUFDakYseUVBQXlFO1FBQ3pFLElBQUksS0FBSyxZQUFZLFNBQVMsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzlCLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBc0IsRUFBRSxFQUFFO2dCQUNqRCxJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDakMsSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN2QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN6QyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMxQixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQy9CLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDO2dCQUN2QixJQUFJLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDcEMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN0QyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMxQixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDcEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDMUIsQ0FBQztRQUVELElBQUksT0FBTyxNQUFNLENBQUMsMkJBQTJCLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDNUQsSUFBSSxDQUFDLDRCQUE0QixHQUFHLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQztRQUN6RSxDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDO1FBQzdELENBQUM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQztRQUMvQyxDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQ25DLENBQUM7UUFDRCxJQUFJLE9BQU8sTUFBTSxDQUFDLHlCQUF5QixLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQzVELElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDdkQsQ0FBQztJQUNILENBQUM7SUFLRCxpQ0FBaUM7SUFDakMsT0FBTztRQUNMLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMxQyxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFNBQVMsQ0FBQyxLQUFvQjtRQUM1QixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDO1FBRXRCLFFBQVEsR0FBRyxFQUFFLENBQUM7WUFDWixLQUFLLEtBQUs7Z0JBQ1IsMkVBQTJFO2dCQUMzRSxPQUFPO1lBRVQsS0FBSyxXQUFXO2dCQUNkLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdEIsTUFBTTtZQUVSLEtBQUssU0FBUztnQkFDWixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFDMUIsTUFBTTtZQUVSLEtBQUssWUFBWTtnQkFDZixJQUFJLENBQUMsc0JBQXNCLEtBQUssS0FBSztvQkFDbkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtvQkFDN0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUM5QixNQUFNO1lBRVIsS0FBSyxXQUFXO2dCQUNkLElBQUksQ0FBQyxzQkFBc0IsS0FBSyxLQUFLO29CQUNuQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFO29CQUMzQixDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7Z0JBQ2hDLE1BQU07WUFFUixLQUFLLE1BQU07Z0JBQ1QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUN2QixNQUFNO1lBRVIsS0FBSyxLQUFLO2dCQUNSLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdEIsTUFBTTtZQUVSLEtBQUssT0FBTyxDQUFDO1lBQ2IsS0FBSyxHQUFHO2dCQUNOLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2dCQUM1QixNQUFNO1lBRVI7Z0JBQ0UsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLEdBQUcsRUFBRSxDQUFDO29CQUN0QixJQUFJLENBQUMsaUNBQWlDLEVBQUUsQ0FBQztvQkFDekMsTUFBTTtnQkFDUixDQUFDO2dCQUVELElBQUksQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNsQyxtRkFBbUY7Z0JBQ25GLG1EQUFtRDtnQkFDbkQsT0FBTztRQUNYLENBQUM7UUFFRCxrRUFBa0U7UUFDbEUsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUN6QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELDBDQUEwQztJQUMxQyxrQkFBa0I7UUFDaEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztJQUVELGlDQUFpQztJQUNqQyxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRCxzQ0FBc0M7SUFDOUIsZUFBZTtRQUNyQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELHFDQUFxQztJQUM3QixjQUFjO1FBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLCtCQUErQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQscUNBQXFDO0lBQzdCLGNBQWM7UUFDcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQseUNBQXlDO0lBQ2pDLGtCQUFrQjtRQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFVRCxTQUFTLENBQUMsV0FBdUIsRUFBRSxVQUF1QyxFQUFFO1FBQzFFLHNCQUFzQjtRQUN0QixPQUFPLENBQUMsZUFBZSxLQUFLLElBQUksQ0FBQztRQUVqQyxJQUFJLEtBQUssR0FDUCxPQUFPLFdBQVcsS0FBSyxRQUFRO1lBQzdCLENBQUMsQ0FBQyxXQUFXO1lBQ2IsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDNUYsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzdDLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV0Qyx1RUFBdUU7UUFDdkUsSUFDRSxJQUFJLENBQUMsV0FBVyxLQUFLLElBQUk7WUFDekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsS0FBSyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFDakUsQ0FBQztZQUNELE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQzVDLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxJQUFJLElBQUksQ0FBQztRQUN0QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQzlCLElBQUksQ0FBQyxVQUFVLEVBQUUsMkJBQTJCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFcEQsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUMxQixrQkFBa0IsRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUU5QixJQUFJLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDckMsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxRQUFhO1FBQzFDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDcEMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FDakMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQzlELENBQUM7UUFFRixJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUMsSUFBSSxRQUFRLEtBQUssSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFFBQVEsQ0FBQztZQUNqQyxJQUFJLENBQUMsVUFBVSxFQUFFLDJCQUEyQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pELENBQUM7SUFDSCxDQUFDO0lBRU8sYUFBYSxDQUFDLGdCQUFrQztRQUN0RCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDM0MsZ0JBQWdCLEVBQUUsT0FBTyxnQkFBZ0IsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQ3JGLGFBQWEsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7U0FDbkQsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMxRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLDJCQUEyQixDQUFDLGFBQXFCO1FBQ3ZELEtBQUssSUFBSSxDQUFDLEdBQUcsYUFBYSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUM1RCxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUMzQyxPQUFPLENBQUMsQ0FBQztZQUNYLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVPLCtCQUErQixDQUFDLGFBQXFCO1FBQzNELEtBQUssSUFBSSxDQUFDLEdBQUcsYUFBYSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDM0MsT0FBTyxDQUFDLENBQUM7WUFDWCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7T0FFRztJQUNLLG9CQUFvQjtRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUIsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzVDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xELE9BQU87WUFDVCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFXLENBQUMsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssa0JBQWtCO1FBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEIsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzVCLENBQUM7YUFBTSxDQUFDO1lBQ04sZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztpQkFDN0MsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDYixTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ3BCLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUM5RSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7b0JBQ2hCLE9BQU87Z0JBQ1QsQ0FBQztnQkFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQWUsQ0FBQyxDQUFDO1lBQ2xDLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNILENBQUM7SUFFTyxzQkFBc0I7UUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN0QixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxPQUFPLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEtBQUssU0FBUztZQUNyRCxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVO1lBQzdCLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFTyxlQUFlLENBQUMsSUFBd0I7UUFDOUMsT0FBTyxPQUFPLElBQUksQ0FBQyxVQUFVLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztJQUN0RixDQUFDO0lBRUQsd0ZBQXdGO0lBQ2hGLGlDQUFpQztRQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM1QyxJQUFJLGFBQWEsQ0FBQztRQUNsQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixhQUFhLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDdEYsQ0FBQzthQUFNLENBQUM7WUFDTixhQUFhLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDekQsQ0FBQztRQUVELGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzVDLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLElBQUksQ0FBQyxXQUFXLEVBQUUsUUFBUSxFQUFFLENBQUM7SUFDL0IsQ0FBQztDQUNGO0FBRUQsb0JBQW9CO0FBQ3BCLE1BQU0sVUFBVSx3QkFBd0I7SUFDdEMsT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksY0FBYyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNoRSxDQUFDO0FBRUQsOERBQThEO0FBQzlELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLElBQUksY0FBYyxDQUE2QixrQkFBa0IsRUFBRTtJQUNqRyxVQUFVLEVBQUUsTUFBTTtJQUNsQixPQUFPLEVBQUUsd0JBQXdCO0NBQ2xDLENBQUMsQ0FBQztBQUVILG9CQUFvQjtBQUNwQixNQUFNLENBQUMsTUFBTSxpQ0FBaUMsR0FBRztJQUMvQyxPQUFPLEVBQUUsZ0JBQWdCO0lBQ3pCLFVBQVUsRUFBRSx3QkFBd0I7Q0FDckMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0luamVjdGlvblRva2VuLCBRdWVyeUxpc3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtjb2VyY2VPYnNlcnZhYmxlfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24vcHJpdmF0ZSc7XG5pbXBvcnQge09ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgaXNPYnNlcnZhYmxlLCBvZiBhcyBvYnNlcnZhYmxlT2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHt0YWtlfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBUcmVlS2V5TWFuYWdlckZhY3RvcnksXG4gIFRyZWVLZXlNYW5hZ2VySXRlbSxcbiAgVHJlZUtleU1hbmFnZXJPcHRpb25zLFxuICBUcmVlS2V5TWFuYWdlclN0cmF0ZWd5LFxufSBmcm9tICcuL3RyZWUta2V5LW1hbmFnZXItc3RyYXRlZ3knO1xuaW1wb3J0IHtUeXBlYWhlYWR9IGZyb20gJy4vdHlwZWFoZWFkJztcblxuLyoqXG4gKiBUaGlzIGNsYXNzIG1hbmFnZXMga2V5Ym9hcmQgZXZlbnRzIGZvciB0cmVlcy4gSWYgeW91IHBhc3MgaXQgYSBRdWVyeUxpc3Qgb3Igb3RoZXIgbGlzdCBvZiB0cmVlXG4gKiBpdGVtcywgaXQgd2lsbCBzZXQgdGhlIGFjdGl2ZSBpdGVtLCBmb2N1cywgaGFuZGxlIGV4cGFuc2lvbiBhbmQgdHlwZWFoZWFkIGNvcnJlY3RseSB3aGVuXG4gKiBrZXlib2FyZCBldmVudHMgb2NjdXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBUcmVlS2V5TWFuYWdlcjxUIGV4dGVuZHMgVHJlZUtleU1hbmFnZXJJdGVtPiBpbXBsZW1lbnRzIFRyZWVLZXlNYW5hZ2VyU3RyYXRlZ3k8VD4ge1xuICAvKiogVGhlIGluZGV4IG9mIHRoZSBjdXJyZW50bHkgYWN0aXZlIChmb2N1c2VkKSBpdGVtLiAqL1xuICBwcml2YXRlIF9hY3RpdmVJdGVtSW5kZXggPSAtMTtcbiAgLyoqIFRoZSBjdXJyZW50bHkgYWN0aXZlIChmb2N1c2VkKSBpdGVtLiAqL1xuICBwcml2YXRlIF9hY3RpdmVJdGVtOiBUIHwgbnVsbCA9IG51bGw7XG4gIC8qKiBXaGV0aGVyIG9yIG5vdCB3ZSBhY3RpdmF0ZSB0aGUgaXRlbSB3aGVuIGl0J3MgZm9jdXNlZC4gKi9cbiAgcHJpdmF0ZSBfc2hvdWxkQWN0aXZhdGlvbkZvbGxvd0ZvY3VzID0gZmFsc2U7XG4gIC8qKlxuICAgKiBUaGUgb3JpZW50YXRpb24gdGhhdCB0aGUgdHJlZSBpcyBsYWlkIG91dCBpbi4gSW4gYHJ0bGAgbW9kZSwgdGhlIGJlaGF2aW9yIG9mIExlZnQgYW5kXG4gICAqIFJpZ2h0IGFycm93IGFyZSBzd2l0Y2hlZC5cbiAgICovXG4gIHByaXZhdGUgX2hvcml6b250YWxPcmllbnRhdGlvbjogJ2x0cicgfCAncnRsJyA9ICdsdHInO1xuXG4gIC8qKlxuICAgKiBQcmVkaWNhdGUgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIGFuIGl0ZW0gc2hvdWxkIGJlIHNraXBwZWRcbiAgICogYnkgdGhlIGtleSBtYW5hZ2VyLlxuICAgKlxuICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhpcyBkb2Vzbid0IHNraXAgYW55IGVsZW1lbnRzIGluIG9yZGVyIHRvIGtlZXAgdHJlZSBpdGVtcyBmb2N1c2FibGVcbiAgICogd2hlbiBkaXNhYmxlZC4gVGhpcyBhbGlnbnMgd2l0aCBBUklBIGd1aWRlbGluZXM6XG4gICAqIGh0dHBzOi8vd3d3LnczLm9yZy9XQUkvQVJJQS9hcGcvcHJhY3RpY2VzL2tleWJvYXJkLWludGVyZmFjZS8jZm9jdXNhYmlsaXR5b2ZkaXNhYmxlZGNvbnRyb2xzLlxuICAgKi9cbiAgcHJpdmF0ZSBfc2tpcFByZWRpY2F0ZUZuID0gKF9pdGVtOiBUKSA9PiBmYWxzZTtcblxuICAvKiogRnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnQgaXRlbXMuICovXG4gIHByaXZhdGUgX3RyYWNrQnlGbjogKGl0ZW06IFQpID0+IHVua25vd24gPSAoaXRlbTogVCkgPT4gaXRlbTtcblxuICAvKiogU3luY2hyb25vdXMgY2FjaGUgb2YgdGhlIGl0ZW1zIHRvIG1hbmFnZS4gKi9cbiAgcHJpdmF0ZSBfaXRlbXM6IFRbXSA9IFtdO1xuXG4gIHByaXZhdGUgX3R5cGVhaGVhZD86IFR5cGVhaGVhZDxUPjtcbiAgcHJpdmF0ZSBfdHlwZWFoZWFkU3Vic2NyaXB0aW9uID0gU3Vic2NyaXB0aW9uLkVNUFRZO1xuXG4gIHByaXZhdGUgX2hhc0luaXRpYWxGb2N1c2VkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfaW5pdGlhbGl6ZUZvY3VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9oYXNJbml0aWFsRm9jdXNlZCB8fCB0aGlzLl9pdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgYWN0aXZlSW5kZXggPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5faXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICghdGhpcy5fc2tpcFByZWRpY2F0ZUZuKHRoaXMuX2l0ZW1zW2ldKSAmJiAhdGhpcy5faXNJdGVtRGlzYWJsZWQodGhpcy5faXRlbXNbaV0pKSB7XG4gICAgICAgIGFjdGl2ZUluZGV4ID0gaTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgYWN0aXZlSXRlbSA9IHRoaXMuX2l0ZW1zW2FjdGl2ZUluZGV4XTtcblxuICAgIC8vIFVzZSBgbWFrZUZvY3VzYWJsZWAgaGVyZSwgYmVjYXVzZSB3ZSB3YW50IHRoZSBpdGVtIHRvIGp1c3QgYmUgZm9jdXNhYmxlLCBub3QgYWN0dWFsbHlcbiAgICAvLyBjYXB0dXJlIHRoZSBmb2N1cyBzaW5jZSB0aGUgdXNlciBpc24ndCBpbnRlcmFjdGluZyB3aXRoIGl0LiBTZWUgIzI5NjI4LlxuICAgIGlmIChhY3RpdmVJdGVtLm1ha2VGb2N1c2FibGUpIHtcbiAgICAgIHRoaXMuX2FjdGl2ZUl0ZW0/LnVuZm9jdXMoKTtcbiAgICAgIHRoaXMuX2FjdGl2ZUl0ZW1JbmRleCA9IGFjdGl2ZUluZGV4O1xuICAgICAgdGhpcy5fYWN0aXZlSXRlbSA9IGFjdGl2ZUl0ZW07XG4gICAgICB0aGlzLl90eXBlYWhlYWQ/LnNldEN1cnJlbnRTZWxlY3RlZEl0ZW1JbmRleChhY3RpdmVJbmRleCk7XG4gICAgICBhY3RpdmVJdGVtLm1ha2VGb2N1c2FibGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQmFja3dhcmRzIGNvbXBhdGliaWxpdHkgZm9yIGl0ZW1zIHRoYXQgZG9uJ3QgaW1wbGVtZW50IGBtYWtlRm9jdXNhYmxlYC5cbiAgICAgIHRoaXMuZm9jdXNJdGVtKGFjdGl2ZUluZGV4KTtcbiAgICB9XG5cbiAgICB0aGlzLl9oYXNJbml0aWFsRm9jdXNlZCA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGl0ZW1zIExpc3Qgb2YgVHJlZUtleU1hbmFnZXIgb3B0aW9ucy4gQ2FuIGJlIHN5bmNocm9ub3VzIG9yIGFzeW5jaHJvbm91cy5cbiAgICogQHBhcmFtIGNvbmZpZyBPcHRpb25hbCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEJ5IGRlZmF1bHQsIHVzZSAnbHRyJyBob3Jpem9udGFsIG9yaWVudGF0aW9uLiBCeVxuICAgKiBkZWZhdWx0LCBkbyBub3Qgc2tpcCBhbnkgbm9kZXMuIEJ5IGRlZmF1bHQsIGtleSBtYW5hZ2VyIG9ubHkgY2FsbHMgYGZvY3VzYCBtZXRob2Qgd2hlbiBpdGVtc1xuICAgKiBhcmUgZm9jdXNlZCBhbmQgZG9lcyBub3QgY2FsbCBgYWN0aXZhdGVgLiBJZiBgdHlwZWFoZWFkRGVmYXVsdEludGVydmFsYCBpcyBgdHJ1ZWAsIHVzZSBhXG4gICAqIGRlZmF1bHQgaW50ZXJ2YWwgb2YgMjAwbXMuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihpdGVtczogT2JzZXJ2YWJsZTxUW10+IHwgUXVlcnlMaXN0PFQ+IHwgVFtdLCBjb25maWc6IFRyZWVLZXlNYW5hZ2VyT3B0aW9uczxUPikge1xuICAgIC8vIFdlIGFsbG93IGZvciB0aGUgaXRlbXMgdG8gYmUgYW4gYXJyYXkgb3IgT2JzZXJ2YWJsZSBiZWNhdXNlLCBpbiBzb21lIGNhc2VzLCB0aGUgY29uc3VtZXIgbWF5XG4gICAgLy8gbm90IGhhdmUgYWNjZXNzIHRvIGEgUXVlcnlMaXN0IG9mIHRoZSBpdGVtcyB0aGV5IHdhbnQgdG8gbWFuYWdlIChlLmcuIHdoZW4gdGhlXG4gICAgLy8gaXRlbXMgYXJlbid0IGJlaW5nIGNvbGxlY3RlZCB2aWEgYFZpZXdDaGlsZHJlbmAgb3IgYENvbnRlbnRDaGlsZHJlbmApLlxuICAgIGlmIChpdGVtcyBpbnN0YW5jZW9mIFF1ZXJ5TGlzdCkge1xuICAgICAgdGhpcy5faXRlbXMgPSBpdGVtcy50b0FycmF5KCk7XG4gICAgICBpdGVtcy5jaGFuZ2VzLnN1YnNjcmliZSgobmV3SXRlbXM6IFF1ZXJ5TGlzdDxUPikgPT4ge1xuICAgICAgICB0aGlzLl9pdGVtcyA9IG5ld0l0ZW1zLnRvQXJyYXkoKTtcbiAgICAgICAgdGhpcy5fdHlwZWFoZWFkPy5zZXRJdGVtcyh0aGlzLl9pdGVtcyk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUFjdGl2ZUl0ZW1JbmRleCh0aGlzLl9pdGVtcyk7XG4gICAgICAgIHRoaXMuX2luaXRpYWxpemVGb2N1cygpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChpc09ic2VydmFibGUoaXRlbXMpKSB7XG4gICAgICBpdGVtcy5zdWJzY3JpYmUobmV3SXRlbXMgPT4ge1xuICAgICAgICB0aGlzLl9pdGVtcyA9IG5ld0l0ZW1zO1xuICAgICAgICB0aGlzLl90eXBlYWhlYWQ/LnNldEl0ZW1zKG5ld0l0ZW1zKTtcbiAgICAgICAgdGhpcy5fdXBkYXRlQWN0aXZlSXRlbUluZGV4KG5ld0l0ZW1zKTtcbiAgICAgICAgdGhpcy5faW5pdGlhbGl6ZUZvY3VzKCk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5faXRlbXMgPSBpdGVtcztcbiAgICAgIHRoaXMuX2luaXRpYWxpemVGb2N1cygpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY29uZmlnLnNob3VsZEFjdGl2YXRpb25Gb2xsb3dGb2N1cyA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0aGlzLl9zaG91bGRBY3RpdmF0aW9uRm9sbG93Rm9jdXMgPSBjb25maWcuc2hvdWxkQWN0aXZhdGlvbkZvbGxvd0ZvY3VzO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLmhvcml6b250YWxPcmllbnRhdGlvbikge1xuICAgICAgdGhpcy5faG9yaXpvbnRhbE9yaWVudGF0aW9uID0gY29uZmlnLmhvcml6b250YWxPcmllbnRhdGlvbjtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5za2lwUHJlZGljYXRlKSB7XG4gICAgICB0aGlzLl9za2lwUHJlZGljYXRlRm4gPSBjb25maWcuc2tpcFByZWRpY2F0ZTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy50cmFja0J5KSB7XG4gICAgICB0aGlzLl90cmFja0J5Rm4gPSBjb25maWcudHJhY2tCeTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBjb25maWcudHlwZUFoZWFkRGVib3VuY2VJbnRlcnZhbCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRoaXMuX3NldFR5cGVBaGVhZChjb25maWcudHlwZUFoZWFkRGVib3VuY2VJbnRlcnZhbCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFN0cmVhbSB0aGF0IGVtaXRzIGFueSB0aW1lIHRoZSBmb2N1c2VkIGl0ZW0gY2hhbmdlcy4gKi9cbiAgcmVhZG9ubHkgY2hhbmdlID0gbmV3IFN1YmplY3Q8VCB8IG51bGw+KCk7XG5cbiAgLyoqIENsZWFucyB1cCB0aGUga2V5IG1hbmFnZXIuICovXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5fdHlwZWFoZWFkU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fdHlwZWFoZWFkPy5kZXN0cm95KCk7XG4gICAgdGhpcy5jaGFuZ2UuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIGEga2V5Ym9hcmQgZXZlbnQgb24gdGhlIHRyZWUuXG4gICAqIEBwYXJhbSBldmVudCBLZXlib2FyZCBldmVudCB0aGF0IHJlcHJlc2VudHMgdGhlIHVzZXIgaW50ZXJhY3Rpb24gd2l0aCB0aGUgdHJlZS5cbiAgICovXG4gIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGNvbnN0IGtleSA9IGV2ZW50LmtleTtcblxuICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICBjYXNlICdUYWInOlxuICAgICAgICAvLyBSZXR1cm4gZWFybHkgaGVyZSwgaW4gb3JkZXIgdG8gYWxsb3cgVGFiIHRvIGFjdHVhbGx5IHRhYiBvdXQgb2YgdGhlIHRyZWVcbiAgICAgICAgcmV0dXJuO1xuXG4gICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICB0aGlzLl9mb2N1c05leHRJdGVtKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgdGhpcy5fZm9jdXNQcmV2aW91c0l0ZW0oKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICB0aGlzLl9ob3Jpem9udGFsT3JpZW50YXRpb24gPT09ICdydGwnXG4gICAgICAgICAgPyB0aGlzLl9jb2xsYXBzZUN1cnJlbnRJdGVtKClcbiAgICAgICAgICA6IHRoaXMuX2V4cGFuZEN1cnJlbnRJdGVtKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICB0aGlzLl9ob3Jpem9udGFsT3JpZW50YXRpb24gPT09ICdydGwnXG4gICAgICAgICAgPyB0aGlzLl9leHBhbmRDdXJyZW50SXRlbSgpXG4gICAgICAgICAgOiB0aGlzLl9jb2xsYXBzZUN1cnJlbnRJdGVtKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdIb21lJzpcbiAgICAgICAgdGhpcy5fZm9jdXNGaXJzdEl0ZW0oKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ0VuZCc6XG4gICAgICAgIHRoaXMuX2ZvY3VzTGFzdEl0ZW0oKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgIGNhc2UgJyAnOlxuICAgICAgICB0aGlzLl9hY3RpdmF0ZUN1cnJlbnRJdGVtKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnKicpIHtcbiAgICAgICAgICB0aGlzLl9leHBhbmRBbGxJdGVtc0F0Q3VycmVudEl0ZW1MZXZlbCgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fdHlwZWFoZWFkPy5oYW5kbGVLZXkoZXZlbnQpO1xuICAgICAgICAvLyBSZXR1cm4gaGVyZSwgaW4gb3JkZXIgdG8gYXZvaWQgcHJldmVudGluZyB0aGUgZGVmYXVsdCBhY3Rpb24gb2Ygbm9uLW5hdmlnYXRpb25hbFxuICAgICAgICAvLyBrZXlzIG9yIHJlc2V0dGluZyB0aGUgYnVmZmVyIG9mIHByZXNzZWQgbGV0dGVycy5cbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFJlc2V0IHRoZSB0eXBlYWhlYWQgc2luY2UgdGhlIHVzZXIgaGFzIHVzZWQgYSBuYXZpZ2F0aW9uYWwga2V5LlxuICAgIHRoaXMuX3R5cGVhaGVhZD8ucmVzZXQoKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgLyoqIEluZGV4IG9mIHRoZSBjdXJyZW50bHkgYWN0aXZlIGl0ZW0uICovXG4gIGdldEFjdGl2ZUl0ZW1JbmRleCgpOiBudW1iZXIgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlSXRlbUluZGV4O1xuICB9XG5cbiAgLyoqIFRoZSBjdXJyZW50bHkgYWN0aXZlIGl0ZW0uICovXG4gIGdldEFjdGl2ZUl0ZW0oKTogVCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmVJdGVtO1xuICB9XG5cbiAgLyoqIEZvY3VzIHRoZSBmaXJzdCBhdmFpbGFibGUgaXRlbS4gKi9cbiAgcHJpdmF0ZSBfZm9jdXNGaXJzdEl0ZW0oKTogdm9pZCB7XG4gICAgdGhpcy5mb2N1c0l0ZW0odGhpcy5fZmluZE5leHRBdmFpbGFibGVJdGVtSW5kZXgoLTEpKTtcbiAgfVxuXG4gIC8qKiBGb2N1cyB0aGUgbGFzdCBhdmFpbGFibGUgaXRlbS4gKi9cbiAgcHJpdmF0ZSBfZm9jdXNMYXN0SXRlbSgpOiB2b2lkIHtcbiAgICB0aGlzLmZvY3VzSXRlbSh0aGlzLl9maW5kUHJldmlvdXNBdmFpbGFibGVJdGVtSW5kZXgodGhpcy5faXRlbXMubGVuZ3RoKSk7XG4gIH1cblxuICAvKiogRm9jdXMgdGhlIG5leHQgYXZhaWxhYmxlIGl0ZW0uICovXG4gIHByaXZhdGUgX2ZvY3VzTmV4dEl0ZW0oKTogdm9pZCB7XG4gICAgdGhpcy5mb2N1c0l0ZW0odGhpcy5fZmluZE5leHRBdmFpbGFibGVJdGVtSW5kZXgodGhpcy5fYWN0aXZlSXRlbUluZGV4KSk7XG4gIH1cblxuICAvKiogRm9jdXMgdGhlIHByZXZpb3VzIGF2YWlsYWJsZSBpdGVtLiAqL1xuICBwcml2YXRlIF9mb2N1c1ByZXZpb3VzSXRlbSgpOiB2b2lkIHtcbiAgICB0aGlzLmZvY3VzSXRlbSh0aGlzLl9maW5kUHJldmlvdXNBdmFpbGFibGVJdGVtSW5kZXgodGhpcy5fYWN0aXZlSXRlbUluZGV4KSk7XG4gIH1cblxuICAvKipcbiAgICogRm9jdXMgdGhlIHByb3ZpZGVkIGl0ZW0gYnkgaW5kZXguXG4gICAqIEBwYXJhbSBpbmRleCBUaGUgaW5kZXggb2YgdGhlIGl0ZW0gdG8gZm9jdXMuXG4gICAqIEBwYXJhbSBvcHRpb25zIEFkZGl0aW9uYWwgZm9jdXNpbmcgb3B0aW9ucy5cbiAgICovXG4gIGZvY3VzSXRlbShpbmRleDogbnVtYmVyLCBvcHRpb25zPzoge2VtaXRDaGFuZ2VFdmVudD86IGJvb2xlYW59KTogdm9pZDtcbiAgZm9jdXNJdGVtKGl0ZW06IFQsIG9wdGlvbnM/OiB7ZW1pdENoYW5nZUV2ZW50PzogYm9vbGVhbn0pOiB2b2lkO1xuICBmb2N1c0l0ZW0oaXRlbU9ySW5kZXg6IG51bWJlciB8IFQsIG9wdGlvbnM/OiB7ZW1pdENoYW5nZUV2ZW50PzogYm9vbGVhbn0pOiB2b2lkO1xuICBmb2N1c0l0ZW0oaXRlbU9ySW5kZXg6IG51bWJlciB8IFQsIG9wdGlvbnM6IHtlbWl0Q2hhbmdlRXZlbnQ/OiBib29sZWFufSA9IHt9KSB7XG4gICAgLy8gU2V0IGRlZmF1bHQgb3B0aW9uc1xuICAgIG9wdGlvbnMuZW1pdENoYW5nZUV2ZW50ID8/PSB0cnVlO1xuXG4gICAgbGV0IGluZGV4ID1cbiAgICAgIHR5cGVvZiBpdGVtT3JJbmRleCA9PT0gJ251bWJlcidcbiAgICAgICAgPyBpdGVtT3JJbmRleFxuICAgICAgICA6IHRoaXMuX2l0ZW1zLmZpbmRJbmRleChpdGVtID0+IHRoaXMuX3RyYWNrQnlGbihpdGVtKSA9PT0gdGhpcy5fdHJhY2tCeUZuKGl0ZW1PckluZGV4KSk7XG4gICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSB0aGlzLl9pdGVtcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgYWN0aXZlSXRlbSA9IHRoaXMuX2l0ZW1zW2luZGV4XTtcblxuICAgIC8vIElmIHdlJ3JlIGp1c3Qgc2V0dGluZyB0aGUgc2FtZSBpdGVtLCBkb24ndCByZS1jYWxsIGFjdGl2YXRlIG9yIGZvY3VzXG4gICAgaWYgKFxuICAgICAgdGhpcy5fYWN0aXZlSXRlbSAhPT0gbnVsbCAmJlxuICAgICAgdGhpcy5fdHJhY2tCeUZuKGFjdGl2ZUl0ZW0pID09PSB0aGlzLl90cmFja0J5Rm4odGhpcy5fYWN0aXZlSXRlbSlcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwcmV2aW91c0FjdGl2ZUl0ZW0gPSB0aGlzLl9hY3RpdmVJdGVtO1xuICAgIHRoaXMuX2FjdGl2ZUl0ZW0gPSBhY3RpdmVJdGVtID8/IG51bGw7XG4gICAgdGhpcy5fYWN0aXZlSXRlbUluZGV4ID0gaW5kZXg7XG4gICAgdGhpcy5fdHlwZWFoZWFkPy5zZXRDdXJyZW50U2VsZWN0ZWRJdGVtSW5kZXgoaW5kZXgpO1xuXG4gICAgdGhpcy5fYWN0aXZlSXRlbT8uZm9jdXMoKTtcbiAgICBwcmV2aW91c0FjdGl2ZUl0ZW0/LnVuZm9jdXMoKTtcblxuICAgIGlmIChvcHRpb25zLmVtaXRDaGFuZ2VFdmVudCkge1xuICAgICAgdGhpcy5jaGFuZ2UubmV4dCh0aGlzLl9hY3RpdmVJdGVtKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc2hvdWxkQWN0aXZhdGlvbkZvbGxvd0ZvY3VzKSB7XG4gICAgICB0aGlzLl9hY3RpdmF0ZUN1cnJlbnRJdGVtKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlQWN0aXZlSXRlbUluZGV4KG5ld0l0ZW1zOiBUW10pIHtcbiAgICBjb25zdCBhY3RpdmVJdGVtID0gdGhpcy5fYWN0aXZlSXRlbTtcbiAgICBpZiAoIWFjdGl2ZUl0ZW0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdJbmRleCA9IG5ld0l0ZW1zLmZpbmRJbmRleChcbiAgICAgIGl0ZW0gPT4gdGhpcy5fdHJhY2tCeUZuKGl0ZW0pID09PSB0aGlzLl90cmFja0J5Rm4oYWN0aXZlSXRlbSksXG4gICAgKTtcblxuICAgIGlmIChuZXdJbmRleCA+IC0xICYmIG5ld0luZGV4ICE9PSB0aGlzLl9hY3RpdmVJdGVtSW5kZXgpIHtcbiAgICAgIHRoaXMuX2FjdGl2ZUl0ZW1JbmRleCA9IG5ld0luZGV4O1xuICAgICAgdGhpcy5fdHlwZWFoZWFkPy5zZXRDdXJyZW50U2VsZWN0ZWRJdGVtSW5kZXgobmV3SW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NldFR5cGVBaGVhZChkZWJvdW5jZUludGVydmFsOiBudW1iZXIgfCBib29sZWFuKSB7XG4gICAgdGhpcy5fdHlwZWFoZWFkID0gbmV3IFR5cGVhaGVhZCh0aGlzLl9pdGVtcywge1xuICAgICAgZGVib3VuY2VJbnRlcnZhbDogdHlwZW9mIGRlYm91bmNlSW50ZXJ2YWwgPT09ICdudW1iZXInID8gZGVib3VuY2VJbnRlcnZhbCA6IHVuZGVmaW5lZCxcbiAgICAgIHNraXBQcmVkaWNhdGU6IGl0ZW0gPT4gdGhpcy5fc2tpcFByZWRpY2F0ZUZuKGl0ZW0pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5fdHlwZWFoZWFkU3Vic2NyaXB0aW9uID0gdGhpcy5fdHlwZWFoZWFkLnNlbGVjdGVkSXRlbS5zdWJzY3JpYmUoaXRlbSA9PiB7XG4gICAgICB0aGlzLmZvY3VzSXRlbShpdGVtKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2ZpbmROZXh0QXZhaWxhYmxlSXRlbUluZGV4KHN0YXJ0aW5nSW5kZXg6IG51bWJlcikge1xuICAgIGZvciAobGV0IGkgPSBzdGFydGluZ0luZGV4ICsgMTsgaSA8IHRoaXMuX2l0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoIXRoaXMuX3NraXBQcmVkaWNhdGVGbih0aGlzLl9pdGVtc1tpXSkpIHtcbiAgICAgICAgcmV0dXJuIGk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdGFydGluZ0luZGV4O1xuICB9XG5cbiAgcHJpdmF0ZSBfZmluZFByZXZpb3VzQXZhaWxhYmxlSXRlbUluZGV4KHN0YXJ0aW5nSW5kZXg6IG51bWJlcikge1xuICAgIGZvciAobGV0IGkgPSBzdGFydGluZ0luZGV4IC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGlmICghdGhpcy5fc2tpcFByZWRpY2F0ZUZuKHRoaXMuX2l0ZW1zW2ldKSkge1xuICAgICAgICByZXR1cm4gaTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHN0YXJ0aW5nSW5kZXg7XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIGl0ZW0gaXMgYWxyZWFkeSBleHBhbmRlZCwgd2UgY29sbGFwc2UgdGhlIGl0ZW0uIE90aGVyd2lzZSwgd2Ugd2lsbCBmb2N1cyB0aGUgcGFyZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBfY29sbGFwc2VDdXJyZW50SXRlbSgpIHtcbiAgICBpZiAoIXRoaXMuX2FjdGl2ZUl0ZW0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5faXNDdXJyZW50SXRlbUV4cGFuZGVkKCkpIHtcbiAgICAgIHRoaXMuX2FjdGl2ZUl0ZW0uY29sbGFwc2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5fYWN0aXZlSXRlbS5nZXRQYXJlbnQoKTtcbiAgICAgIGlmICghcGFyZW50IHx8IHRoaXMuX3NraXBQcmVkaWNhdGVGbihwYXJlbnQgYXMgVCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5mb2N1c0l0ZW0ocGFyZW50IGFzIFQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgaXRlbSBpcyBhbHJlYWR5IGNvbGxhcHNlZCwgd2UgZXhwYW5kIHRoZSBpdGVtLiBPdGhlcndpc2UsIHdlIHdpbGwgZm9jdXMgdGhlIGZpcnN0IGNoaWxkLlxuICAgKi9cbiAgcHJpdmF0ZSBfZXhwYW5kQ3VycmVudEl0ZW0oKSB7XG4gICAgaWYgKCF0aGlzLl9hY3RpdmVJdGVtKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9pc0N1cnJlbnRJdGVtRXhwYW5kZWQoKSkge1xuICAgICAgdGhpcy5fYWN0aXZlSXRlbS5leHBhbmQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29lcmNlT2JzZXJ2YWJsZSh0aGlzLl9hY3RpdmVJdGVtLmdldENoaWxkcmVuKCkpXG4gICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgIC5zdWJzY3JpYmUoY2hpbGRyZW4gPT4ge1xuICAgICAgICAgIGNvbnN0IGZpcnN0Q2hpbGQgPSBjaGlsZHJlbi5maW5kKGNoaWxkID0+ICF0aGlzLl9za2lwUHJlZGljYXRlRm4oY2hpbGQgYXMgVCkpO1xuICAgICAgICAgIGlmICghZmlyc3RDaGlsZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmZvY3VzSXRlbShmaXJzdENoaWxkIGFzIFQpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9pc0N1cnJlbnRJdGVtRXhwYW5kZWQoKSB7XG4gICAgaWYgKCF0aGlzLl9hY3RpdmVJdGVtKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0eXBlb2YgdGhpcy5fYWN0aXZlSXRlbS5pc0V4cGFuZGVkID09PSAnYm9vbGVhbidcbiAgICAgID8gdGhpcy5fYWN0aXZlSXRlbS5pc0V4cGFuZGVkXG4gICAgICA6IHRoaXMuX2FjdGl2ZUl0ZW0uaXNFeHBhbmRlZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNJdGVtRGlzYWJsZWQoaXRlbTogVHJlZUtleU1hbmFnZXJJdGVtKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBpdGVtLmlzRGlzYWJsZWQgPT09ICdib29sZWFuJyA/IGl0ZW0uaXNEaXNhYmxlZCA6IGl0ZW0uaXNEaXNhYmxlZD8uKCk7XG4gIH1cblxuICAvKiogRm9yIGFsbCBpdGVtcyB0aGF0IGFyZSB0aGUgc2FtZSBsZXZlbCBhcyB0aGUgY3VycmVudCBpdGVtLCB3ZSBleHBhbmQgdGhvc2UgaXRlbXMuICovXG4gIHByaXZhdGUgX2V4cGFuZEFsbEl0ZW1zQXRDdXJyZW50SXRlbUxldmVsKCkge1xuICAgIGlmICghdGhpcy5fYWN0aXZlSXRlbSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuX2FjdGl2ZUl0ZW0uZ2V0UGFyZW50KCk7XG4gICAgbGV0IGl0ZW1zVG9FeHBhbmQ7XG4gICAgaWYgKCFwYXJlbnQpIHtcbiAgICAgIGl0ZW1zVG9FeHBhbmQgPSBvYnNlcnZhYmxlT2YodGhpcy5faXRlbXMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5nZXRQYXJlbnQoKSA9PT0gbnVsbCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpdGVtc1RvRXhwYW5kID0gY29lcmNlT2JzZXJ2YWJsZShwYXJlbnQuZ2V0Q2hpbGRyZW4oKSk7XG4gICAgfVxuXG4gICAgaXRlbXNUb0V4cGFuZC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShpdGVtcyA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgaXRlbS5leHBhbmQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2FjdGl2YXRlQ3VycmVudEl0ZW0oKSB7XG4gICAgdGhpcy5fYWN0aXZlSXRlbT8uYWN0aXZhdGUoKTtcbiAgfVxufVxuXG4vKiogQGRvY3MtcHJpdmF0ZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIFRSRUVfS0VZX01BTkFHRVJfRkFDVE9SWTxUIGV4dGVuZHMgVHJlZUtleU1hbmFnZXJJdGVtPigpOiBUcmVlS2V5TWFuYWdlckZhY3Rvcnk8VD4ge1xuICByZXR1cm4gKGl0ZW1zLCBvcHRpb25zKSA9PiBuZXcgVHJlZUtleU1hbmFnZXIoaXRlbXMsIG9wdGlvbnMpO1xufVxuXG4vKiogSW5qZWN0aW9uIHRva2VuIHRoYXQgZGV0ZXJtaW5lcyB0aGUga2V5IG1hbmFnZXIgdG8gdXNlLiAqL1xuZXhwb3J0IGNvbnN0IFRSRUVfS0VZX01BTkFHRVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48VHJlZUtleU1hbmFnZXJGYWN0b3J5PGFueT4+KCd0cmVlLWtleS1tYW5hZ2VyJywge1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGZhY3Rvcnk6IFRSRUVfS0VZX01BTkFHRVJfRkFDVE9SWSxcbn0pO1xuXG4vKiogQGRvY3MtcHJpdmF0ZSAqL1xuZXhwb3J0IGNvbnN0IFRSRUVfS0VZX01BTkFHRVJfRkFDVE9SWV9QUk9WSURFUiA9IHtcbiAgcHJvdmlkZTogVFJFRV9LRVlfTUFOQUdFUixcbiAgdXNlRmFjdG9yeTogVFJFRV9LRVlfTUFOQUdFUl9GQUNUT1JZLFxufTtcbiJdfQ==
|