@magicx-eng/ai-autocomplete-angular 0.27.0 → 0.28.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/esm2020/lib/ai-autocomplete-dropdown/ai-autocomplete-dropdown.component.mjs +7 -3
- package/esm2020/lib/controller/ai-autocomplete.controller.mjs +11 -1
- package/esm2020/lib/internal/date-grid/date-grid.component.mjs +7 -3
- package/esm2020/lib/internal/suggestion-grid/suggestion-grid.component.mjs +7 -3
- package/esm2020/lib/internal/suggestion-item/suggestion-item.component.mjs +14 -3
- package/fesm2015/magicx-eng-ai-autocomplete-angular.mjs +41 -8
- package/fesm2015/magicx-eng-ai-autocomplete-angular.mjs.map +1 -1
- package/fesm2020/magicx-eng-ai-autocomplete-angular.mjs +41 -8
- package/fesm2020/magicx-eng-ai-autocomplete-angular.mjs.map +1 -1
- package/lib/ai-autocomplete-dropdown/ai-autocomplete-dropdown.component.d.ts +1 -0
- package/lib/ai-autocomplete-dropdown/ai-autocomplete-dropdown.component.d.ts.map +1 -1
- package/lib/controller/ai-autocomplete.controller.d.ts +6 -0
- package/lib/controller/ai-autocomplete.controller.d.ts.map +1 -1
- package/lib/internal/date-grid/date-grid.component.d.ts +3 -1
- package/lib/internal/date-grid/date-grid.component.d.ts.map +1 -1
- package/lib/internal/suggestion-grid/suggestion-grid.component.d.ts +3 -1
- package/lib/internal/suggestion-grid/suggestion-grid.component.d.ts.map +1 -1
- package/lib/internal/suggestion-item/suggestion-item.component.d.ts +8 -1
- package/lib/internal/suggestion-item/suggestion-item.component.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -262,6 +262,16 @@ export class AIAutocompleteController {
|
|
|
262
262
|
return;
|
|
263
263
|
this.core.setActiveDropdownIndex(index);
|
|
264
264
|
}
|
|
265
|
+
/**
|
|
266
|
+
* The pointer left option `index`: clear the highlight if it is still on it,
|
|
267
|
+
* so Enter afterwards submits instead of picking an option the pointer is no
|
|
268
|
+
* longer on. A highlight the keyboard has since moved is left alone.
|
|
269
|
+
*/
|
|
270
|
+
clearHighlight(index) {
|
|
271
|
+
if (this.isDestroyed)
|
|
272
|
+
return;
|
|
273
|
+
this.core.clearHighlight(index);
|
|
274
|
+
}
|
|
265
275
|
/** Page the datepicker back one month. No-op unless a date pill is active. */
|
|
266
276
|
showPreviousMonth() {
|
|
267
277
|
if (this.isDestroyed)
|
|
@@ -400,4 +410,4 @@ function computeDropdown(s, optionsPosition) {
|
|
|
400
410
|
optionsPosition,
|
|
401
411
|
};
|
|
402
412
|
}
|
|
403
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWktYXV0b2NvbXBsZXRlLmNvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NvbnRyb2xsZXIvYWktYXV0b2NvbXBsZXRlLmNvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLGNBQWMsSUFBSSxrQkFBa0IsRUFHcEMsZ0JBQWdCLEVBRWhCLG9CQUFvQixHQU1yQixNQUFNLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBbUIsV0FBVyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBT3pGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUM7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxPQUFPLHdCQUF3QjtJQW1HbkM7OztPQUdHO0lBQ0gsWUFBWSxPQUF3QyxFQUFFO1FBcEd0RCw0RUFBNEU7UUFDNUUsNEVBQTRFO1FBQzVFLG1FQUFtRTtRQUNsRCxxQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBb0IsT0FBTyxDQUFDLENBQUM7UUFFNUUsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFnRzFCLElBQUksT0FBTyxRQUFRLEtBQUssV0FBVyxFQUFFO1lBQ25DLE1BQU0sSUFBSSxLQUFLLENBQ2IsMkRBQTJEO2dCQUN6RCx3RUFBd0UsQ0FDM0UsQ0FBQztTQUNIO1FBRUQsd0VBQXdFO1FBQ3hFLHFFQUFxRTtRQUNyRSxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTNDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLEVBQUU7WUFDdkMsR0FBRyxJQUFJO1lBQ1AsVUFBVSxFQUFFLFVBQVU7WUFDdEIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLElBQUksY0FBYztZQUNyQyxpRUFBaUU7WUFDakUsb0VBQW9FO1lBQ3BFLDJD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VyxFQUFFLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDOUYsV0FBVyxFQUFFLENBQUMsQ0FBQyxtQkFBbUI7UUFDbEMsTUFBTSxFQUFFLENBQUMsQ0FBQyxjQUFjO1FBQ3hCLEtBQUssRUFBRSxhQUFhO1FBQ3BCLG9CQUFvQixFQUFFLENBQUMsQ0FBQyxvQkFBb0I7UUFDNUMsU0FBUyxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQztRQUM5QixlQUFlLEVBQUUsQ0FBQyxDQUFDLGVBQWU7UUFDbEMsWUFBWSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxLQUFLLENBQUM7UUFDeEMsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRO1FBQ3BCLFNBQVMsRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksT0FBTyxDQUFDLGlCQUFpQixDQUFDO1FBQzlELG9CQUFvQixFQUFFLENBQUMsQ0FBQyxvQkFBb0I7UUFDNUMsb0VBQW9FO1FBQ3BFLHNFQUFzRTtRQUN0RSwyRUFBMkU7UUFDM0Usa0NBQWtDO1FBQ2xDLFVBQVUsRUFBRSxDQUFDLENBQUMsZ0JBQWdCO1FBQzlCLFFBQVEsRUFBRSxDQUFDLENBQUMsUUFBUTtRQUNwQixlQUFlLEVBQUUsYUFBYSxDQUFDLFdBQVc7UUFDMUMsaUJBQWlCLEVBQUUsYUFBYSxDQUFDLGFBQWE7UUFDOUMsY0FBYyxFQUFFLGFBQWEsQ0FBQyxVQUFVO1FBQ3hDLGVBQWU7S0FDaEIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICB0eXBlIEF1dG9jb21wbGV0ZVJlc3VsdCxcbiAgdHlwZSBDb21wbGV0ZWRQYXJhbVN0YXRlLFxuICBBSUF1dG9jb21wbGV0ZSBhcyBDb3JlQUlBdXRvY29tcGxldGUsXG4gIHR5cGUgQ29yZVN0YXRlLFxuICB0eXBlIEN1c3RvbUZpZWxkc1JlcG9ydCxcbiAgZGF0ZVNlbGVjdGlvbkZvcixcbiAgdHlwZSBJZGVudGlmaWVkUGFyYW1TdGF0ZSxcbiAgaWRlbnRpZmllZFBhcmFtTGFiZWwsXG4gIHR5cGUgUHJvZHVjdCxcbiAgdHlwZSBTZWdtZW50LFxuICB0eXBlIFNraXBwZWRQYXJhbVN0YXRlLFxuICB0eXBlIFN1Z2dlc3Rpb24sXG4gIHR5cGUgU3VnZ2VzdGlvbk9wdGlvbixcbn0gZnJvbSBcIkBtYWdpY3gtZW5nL2FpLWF1dG9jb21wbGV0ZS12YW5pbGxhXCI7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgdHlwZSBPYnNlcnZhYmxlLCBzaGFyZVJlcGxheSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgdHlwZSB7XG4gIEFJQXV0b2NvbXBsZXRlQ29udHJvbGxlck9wdGlvbnMsXG4gIEFJQXV0b2NvbXBsZXRlQ29udHJvbGxlclN0YXRlLFxuICBBSUF1dG9jb21wbGV0ZUNvbnRyb2xsZXJVcGRhdGUsXG4gIEFJQXV0b2NvbXBsZXRlRHJvcGRvd25TdGF0ZSxcbn0gZnJvbSBcIi4uL3NoYXJlZC90eXBlc1wiO1xuaW1wb3J0IHsgZGVyaXZlRmllbGQgfSBmcm9tIFwiLi9vYnNlcnZhYmxlc1wiO1xuXG4vKipcbiAqIFRpZXIgMiBsb2dpYyBzdXJmYWNlIGZvciBgQG1hZ2ljeC1lbmcvYWktYXV0b2NvbXBsZXRlLWFuZ3VsYXJgIOKAlCB0aGUgQW5ndWxhclxuICogZXF1aXZhbGVudCBvZiBSZWFjdCdzIGB1c2VBSUF1dG9jb21wbGV0ZSgpYCBob29rLiBXcmFwcyBhIGhlYWRsZXNzXG4gKiBgQG1hZ2ljeC1lbmcvYWktYXV0b2NvbXBsZXRlLXZhbmlsbGFgIGNvcmUgYW5kIGV4cG9zZXMgaXRzIHN0YXRlIGFzIFJ4SlNcbiAqIG9ic2VydmFibGVzIHBsdXMgdGhpbiBhY3Rpb24gbWV0aG9kcy5cbiAqXG4gKiBUaGUgY29udHJvbGxlciBpcyBjb25zdW1lci1tYW5hZ2VkIOKAlCB0aGUgY29uc3VtZXIgY3JlYXRlcyBpdFxuICogd2l0aCBgbmV3YCwgaG9sZHMgdGhlIHJlZmVyZW5jZSwgYW5kICoqbXVzdCBjYWxsIGBkZXN0cm95KClgKiogaW4gdGhlaXJcbiAqIG93biBgbmdPbkRlc3Ryb3lgLiBUaGUgVGllciAxIGA8YWktYXV0b2NvbXBsZXRlPmAgY29tcG9uZW50IGRvZXMgdGhpc1xuICogYXV0b21hdGljYWxseTsgVGllciAyIGNvbnN1bWVycyBkbyBub3QgZ2V0IGF1dG8tY2xlYW51cC5cbiAqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjbGFzcyBBSUF1dG9jb21wbGV0ZUNvbnRyb2xsZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGNvcmU6IENvcmVBSUF1dG9jb21wbGV0ZTtcbiAgcHJpdmF0ZSByZWFkb25seSByYXdTdGF0ZSQ6IEJlaGF2aW9yU3ViamVjdDxDb3JlU3RhdGU+O1xuICAvLyBvcHRpb25zUG9zaXRpb24gaXNuJ3QgcGFydCBvZiBDb3JlU3RhdGUgKGl0J3MgYSBjb3JlIG9wdGlvbiksIHNvIHRyYWNrIGl0XG4gIC8vIGhlcmUgYW5kIGZvbGQgaXQgaW50byBgZHJvcGRvd24kYCBzbyB0aGUgZHJvcGRvd24gY2FuIHJlYWQgcGxhY2VtZW50IGZyb21cbiAgLy8gdGhlIGNvbnRyb2xsZXIg4oCUIGNvbmZpZ3VyZWQgb25jZSwga2VwdCBpbiBzeW5jIHRocm91Z2ggdXBkYXRlKCkuXG4gIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uc1Bvc2l0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8XCJhYm92ZVwiIHwgXCJiZWxvd1wiPihcImJlbG93XCIpO1xuICBwcml2YXRlIHJlYWRvbmx5IHVuc3Vic2NyaWJlQ29yZTogKCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBpc0Rlc3Ryb3llZCA9IGZhbHNlO1xuXG4gIC8vID09PSBQZXItZmllbGQgb2JzZXJ2YWJsZXMgPT09XG4gIC8vIEVhY2ggb25lIHJ1bnMgdGhyb3VnaCBkZXJpdmVGaWVsZCwgd2hpY2ggYmFrZXMgaW4gZGlzdGluY3RVbnRpbENoYW5nZWRcbiAgLy8gYW5kIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSkgcGVyIMKnMTkuNC5cblxuICAvKiogUGxhaW4tdGV4dCBjb250ZW50IG9mIHRoZSBlZGl0b3IuICovXG4gIHJlYWRvbmx5IHRleHQkOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIC8qKiBDb21wbGV0ZWQgKGJvbGQpIHBhcmFtcyBjdXJyZW50bHkgaW4gdGhlIGVkaXRvci4gKi9cbiAgcmVhZG9ubHkgY29tcGxldGVkUGFyYW1zJDogT2JzZXJ2YWJsZTxDb21wbGV0ZWRQYXJhbVN0YXRlW10+O1xuICAvKipcbiAgICogU3VnZ2VzdGlvbnMgdGhlIHVzZXIgZGlzbWlzc2VkIHdpdGggdGhlIHNraXAga2V5ICjihpIpLiBOb3RoaW5nIHJlbmRlcnNcbiAgICogdGhlbTsgdGhleSBleGlzdCBzbyBhIGhhbmQtcm9sbGVkIHN1Ym1pdCBjYW4gcGFzcyB0aGVtIHRvXG4gICAqIGBidWlsZFN1Ym1pdFJlc3VsdGAgYW5kIGNhcnJ5IHRoZSBzYW1lIGB0ZXh0OiBcInNraXBwZWRcImAgZW50cmllcyB0aGVcbiAgICogU0RLJ3Mgb3duIHJlcXVlc3RzIGRvLlxuICAgKi9cbiAgcmVhZG9ubHkgc2tpcHBlZFBhcmFtcyQ6IE9ic2VydmFibGU8U2tpcHBlZFBhcmFtU3RhdGVbXT47XG4gIC8qKlxuICAgKiBQYXJhbXMgdGhlIHNlcnZlciBpZGVudGlmaWVkIGluIHRoZSB1c2VyJ3Mgb3duIHdvcmRzLiBBbHJlYWR5IHJlbmRlcmVkXG4gICAqIHRocm91Z2ggYHNlZ21lbnRzJGA7IGV4cG9zZWQgc28gYSBoYW5kLXJvbGxlZCBzdWJtaXQgY2FuIHBhc3MgdGhlbSB0b1xuICAgKiBgYnVpbGRTdWJtaXRSZXN1bHRgIGFuZCByZXBvcnQgdGhlIHNhbWUgYGlkZW50aWZpZWRfcGFyYW1zYCB0aGUgU0RLJ3NcbiAgICogb3duIHJlc3VsdHMgY2FycnkuXG4gICAqL1xuICByZWFkb25seSBpZGVudGlmaWVkUGFyYW1zJDogT2JzZXJ2YWJsZTxJZGVudGlmaWVkUGFyYW1TdGF0ZVtdPjtcbiAgLyoqIEFjdGlvbmFibGUgc3VnZ2VzdGlvbiBwaWxscyAoZmlyc3Qgb25lIGlzIHRoZSBhY3RpdmUgcGlsbCkuICovXG4gIHJlYWRvbmx5IHN1Z2dlc3Rpb25QaWxscyQ6IE9ic2VydmFibGU8U3VnZ2VzdGlvbltdPjtcbiAgLyoqIFRleHQgKyBjb21wbGV0ZWQtcGFyYW0gc2VnbWVudHMgZm9yIHJlbmRlcmluZyB0aGUgZWRpdG9yIGJvZHkuICovXG4gIHJlYWRvbmx5IHNlZ21lbnRzJDogT2JzZXJ2YWJsZTxTZWdtZW50W10+O1xuICAvKiogSUQgb2YgdGhlIG1vc3QtcmVjZW50bHktcHJvbW90ZWQgcGFyYW0gKGRyaXZlcyBzaGltbWVyIGFuaW1hdGlvbikuICovXG4gIHJlYWRvbmx5IG5ld1BhcmFtSWQkOiBPYnNlcnZhYmxlPHN0cmluZyB8IG51bGw+O1xuICAvKiogQWxsIHN1Z2dlc3Rpb25zIGZyb20gdGhlIHNlcnZlciAoaW5jbHVkaW5nIG5vbi1hY3Rpb25hYmxlIG9uZXMpLiAqL1xuICByZWFkb25seSBzdWdnZXN0aW9ucyQ6IE9ic2VydmFibGU8U3VnZ2VzdGlvbltdPjtcbiAgLyoqXG4gICAqIFdoYXQgdGhlIHByb2R1Y3Qgc3RyaXAgc2hvd3M6IHRoZSBpdGVtcyB0aGUgbGF0ZXN0IGAvc3VnZ2VzdGAgcmVzcG9uc2VcbiAgICogcmVwb3J0ZWQgYXMgbWF0Y2hpbmcgdGhlIHF1ZXJ5LCBvciDigJQgd2l0aCBgcHJvZHVjdHNgIGNvbmZpZ3VyZWQgb24gdGhlXG4gICAqIGNvbnRyb2xsZXIg4oCUIHRoZSByZXN1bHRzIG9mIHRoYXQgY3VzdG9tIHNlYXJjaC5cbiAgICovXG4gIHJlYWRvbmx5IHByb2R1Y3RzJDogT2JzZXJ2YWJsZTxQcm9kdWN0W10+O1xuICAvKipcbiAgICogVGhlIGNhdGFsb2cgZ3JvdW5kaW5nIHJlcG9ydCB0aGUgbGF0ZXN0IHJlc3BvbnNlIGNhcnJpZWQsIG9yIG51bGwgd2hlbiBpdFxuICAgKiBjYXJyaWVkIG5vbmU6IHdoaWNoIG9mIHRoZSBxdWVyeSdzIGNvbnN0cmFpbnRzIHRoZSBjYXRhbG9nIGFwcGxpZWQsIHdoaWNoXG4gICAqIGl0IGRyb3BwZWQsIGFuZCBob3cgbWFueSBpdGVtcyAoYW5kIHdoaWNoKSB0aGUgYXBwbGllZCBvbmVzIGxlZnRcbiAgICogc3RhbmRpbmcuIE51bGwgaXMgXCJubyBuZXdzXCIsIG5vdCBhbiBlbXB0eSBjYXRhbG9nLlxuICAgKi9cbiAgcmVhZG9ubHkgY3VzdG9tRmllbGRzJDogT2JzZXJ2YWJsZTxDdXN0b21GaWVsZHNSZXBvcnQgfCBudWxsPjtcbiAgLyoqIEN1cnJlbnRseSBoaWdobGlnaHRlZCBkcm9wZG93biBvcHRpb24gaW5kZXguIC0xID0gbm9uZS4gKi9cbiAgcmVhZG9ubHkgYWN0aXZlSW5kZXgkOiBPYnNlcnZhYmxlPG51bWJlcj47XG4gIC8qKlxuICAgKiBVSS12aXNpYmxlIGxvYWRpbmcgZmxhZyDigJQgc3VwcHJlc3NlZCBkdXJpbmcgdGhlIHBvc3Qtc2VsZWN0IHByZXNzXG4gICAqIGFuaW1hdGlvbiBhbmQgZHVyaW5nIHJlLWVkaXQgKGNhY2hlZCBvcHRpb25zIHN0YXkgdmlzaWJsZSB0aGVyZSkuIFVzZVxuICAgKiB0aGlzIGluc3RlYWQgb2YgdGhlIHJhdyBjb3JlIHN0YXRlIGZvciBhbnkgbG9hZGluZy1za2VsZXRvbiBiaW5kaW5nLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNMb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgLyoqIFNlcnZlci1yZXBvcnRlZCBcInF1ZXJ5IGlzIGNvbXBsZXRlXCIgZmxhZy4gKi9cbiAgcmVhZG9ubHkgaXNSZWFkeSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIC8qKiBXaGV0aGVyIHRoZSBlZGl0b3IgY3VycmVudGx5IGhhcyBmb2N1cy4gKi9cbiAgcmVhZG9ubHkgaXNGb2N1c2VkJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgLyoqIFdoZXRoZXIgdGhlIGRyb3Bkb3duIHNob3VsZCBjdXJyZW50bHkgYmUgdmlzaWJsZS4gKi9cbiAgcmVhZG9ubHkgaXNEcm9wZG93bk9wZW4kOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAvKipcbiAgICogV2hldGhlciB0aGUgYWN0aXZlIChsZWFkaW5nKSBwaWxsIHNob3VsZCByZW5kZXIgc2VsZWN0ZWQgKGZ1bGwgb3BhY2l0eSlcbiAgICogcmF0aGVyIHRoYW4gdGhlIGRlLWVtcGhhc2l6ZWQgYGZpcnN0YCB0aWVyLiBBdXRvIHRyaWdnZXIg4oeSIHRydWUgb25seSB3aGlsZVxuICAgKiBhIGRyb3Bkb3duIG9wdGlvbiBpcyBoaWdobGlnaHRlZDsgbWFudWFsIOKHkiB0cnVlIG9uY2UgdGhlIHBpbGwgaXMgdGFwcGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNBY3RpdmVQaWxsU2VsZWN0ZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAvKiogU2VydmVyLXN1Z2dlc3RlZCBwbGFjZWhvbGRlciB0ZXh0IGZvciB0aGUgZWRpdG9yLiAqL1xuICByZWFkb25seSBwbGFjZWhvbGRlclRleHQkOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIC8qKiBMYXN0IGZldGNoIGVycm9yLCBvciBudWxsLiAqL1xuICByZWFkb25seSBlcnJvciQ6IE9ic2VydmFibGU8RXJyb3IgfCBudWxsPjtcbiAgLyoqIFBhcmFtIGN1cnJlbnRseSBiZWluZyByZS1lZGl0ZWQsIG9yIG51bGwuICovXG4gIHJlYWRvbmx5IGVkaXRpbmdQYXJhbSQ6IE9ic2VydmFibGU8Q29tcGxldGVkUGFyYW1TdGF0ZSB8IG51bGw+O1xuICAvKiogUGxhaW4tdGV4dCBvZmZzZXQgd2hlcmUgdGhlIGVkaXQgcmVnaW9uIHN0YXJ0cywgb3IgbnVsbC4gKi9cbiAgcmVhZG9ubHkgZWRpdGluZ0FuY2hvciQ6IE9ic2VydmFibGU8bnVtYmVyIHwgbnVsbD47XG4gIC8qKiBMaXZlIGNhcmV0IG9mZnNldCB3aXRoaW4gdGhlIGVkaXRvci4gKi9cbiAgcmVhZG9ubHkgY2FyZXRPZmZzZXQkOiBPYnNlcnZhYmxlPG51bWJlciB8IG51bGw+O1xuXG4gIC8vID09PSBDb21wb3NpdGUgb2JzZXJ2YWJsZXMgPT09XG5cbiAgLyoqXG4gICAqIFNuYXBzaG90IG9mIGV2ZXJ5IHB1YmxpYyBmaWVsZCBpbiBvbmUgb2JqZWN0LiBDb252ZW5pZW50IGZvclxuICAgKiBgKm5nSWY9XCJjdHJsLnN0YXRlJCB8IGFzeW5jIGFzIHN0YXRlXCJgIHRlbXBsYXRpbmcg4oCUIGFsaWFzZXMgYWxsIGZpZWxkc1xuICAgKiB1bmRlciBhIHNpbmdsZSBzdWJzY3JpcHRpb24gaW5zdGVhZCBvZiBtdWx0aXBsZSBgfCBhc3luY2AgcGlwZXMuXG4gICAqL1xuICByZWFkb25seSBzdGF0ZSQ6IE9ic2VydmFibGU8QUlBdXRvY29tcGxldGVDb250cm9sbGVyU3RhdGU+O1xuXG4gIC8qKlxuICAgKiBDb21wb3NpdGUgc3RhdGUgZm9yIHRoZSBkcm9wZG93biB2aWV3LiBUaWVyIDIgY29uc3VtZXJzIHNwcmVhZCB0aGlzIGludG9cbiAgICogYDxhaS1hdXRvY29tcGxldGUtZHJvcGRvd24+YDsgVGllciAxIHVzZXMgdGhlIHNhbWUgc2hhcGUgaW50ZXJuYWxseS5cbiAgICovXG4gIHJlYWRvbmx5IGRyb3Bkb3duJDogT2JzZXJ2YWJsZTxBSUF1dG9jb21wbGV0ZURyb3Bkb3duU3RhdGU+O1xuXG4gIC8qKlxuICAgKiBUaHJvd3MgaWYgaW52b2tlZCBvdXRzaWRlIGEgYnJvd3NlciBlbnZpcm9ubWVudC4gRm9yIFNTUiAvIEFuZ3VsYXJcbiAgICogVW5pdmVyc2FsLCBnYXRlIGNvbnN0cnVjdGlvbiB3aXRoIGBpc1BsYXRmb3JtQnJvd3NlcmAuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRzOiBBSUF1dG9jb21wbGV0ZUNvbnRyb2xsZXJPcHRpb25zID0ge30pIHtcbiAgICBpZiAodHlwZW9mIGRvY3VtZW50ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiQUlBdXRvY29tcGxldGVDb250cm9sbGVyIHJlcXVpcmVzIGEgYnJvd3NlciBlbnZpcm9ubWVudC4gXCIgK1xuICAgICAgICAgIFwiRm9yIFNTUiAvIEFuZ3VsYXIgVW5pdmVyc2FsLCBnYXRlIGNvbnN0cnVjdGlvbiB3aXRoIGlzUGxhdGZvcm1Ccm93c2VyLlwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBIZWFkbGVzcyBtb2RlIG5ldmVyIHJlbmRlcnMgdG8gdGhlIGhvc3QsIHNvIGEgdGhyb3dhd2F5IGRpdiBpcyBmaW5lIOKAlFxuICAgIC8vIGl0J3MgcmVxdWlyZWQgYnkgdGhlIGNvcmUncyBzaWduYXR1cmUgZm9yIHN5bW1ldHJ5IHdpdGggZnVsbCBtb2RlLlxuICAgIGNvbnN0IGhvc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuXG4gICAgdGhpcy5jb3JlID0gbmV3IENvcmVBSUF1dG9jb21wbGV0ZShob3N0LCB7XG4gICAgICAuLi5vcHRzLFxuICAgICAgcmVuZGVyTW9kZTogXCJoZWFkbGVzc1wiLFxuICAgICAgc291cmNlOiBvcHRzLnNvdXJjZSA/PyBcImhlYWRsZXNzLXNka1wiLFxuICAgICAgLy8gSGVhZGxlc3MgbW9kZSBuZXZlciByZW5kZXJzIHRoZSBkcm9wZG93biBET00sIGJ1dCB0aGUga2V5Ym9hcmRcbiAgICAgIC8vIGNvbnRyb2xsZXIgc3RpbGwgcmVhZHMgYG9wdGlvbnNQb3NpdGlvbmAgdG8gZGVjaWRlIHdoaWNoIHZlcnRpY2FsXG4gICAgICAvLyBhcnJvdyBvcGVucyB0aGUgZHJvcGRvd24gZnJvbSB0aGUgaW5wdXQuXG4gICAgICBvcHRpb25zUG9zaXRpb246IG9wdHMub3B0aW9uc1Bvc2l0aW9uID8/IFwiYmVsb3dcIixcbiAgICB9KTtcblxuICAgIHRoaXMucmF3U3RhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDb3JlU3RhdGU+KHRoaXMuY29yZS5nZXRTdGF0ZSgpKTtcbiAgICAvLyBQdXNoIHRoZSBzdG9yZSdzICpjdXJyZW50KiBzdGF0ZSwgbm90IHRoZSBzbmFwc2hvdCB0aGUgbGlzdGVuZXIgd2FzXG4gICAgLy8gaGFuZGVkLiBUaGUgY29yZSBub3RpZmllcyBsaXN0ZW5lcnMgc3luY2hyb25vdXNseSwgYW5kIHNvbWUgYWN0aW9uc1xuICAgIC8vIHRyaWdnZXIgcmVlbnRyYW50IGBzdG9yZS5zZXRgIGNhbGxzIChlLmcuIHR5cGluZyBhIG5vbi1tYXRjaGluZyBjaGFyXG4gICAgLy8gZHVyaW5nIHJlLWVkaXQgbWFrZXMgdGhlIGNvcmUgc3luY2hyb25vdXNseSBleGl0IHJlLWVkaXQgYW5kIGtpY2sgb2ZmIGFcbiAgICAvLyBmZXRjaCkuXG4gICAgLy9cbiAgICAvLyBUaGUgY29yZSdzIHN0b3JlIHVzZWQgdG8gZGVsaXZlciBzdWNoIGEgbmVzdGVkIHNldCBpbmxpbmUgYW5kIHRoZW5cbiAgICAvLyByZXN1bWUgdGhlIG91dGVyIGxpc3RlbmVyIGxvb3AsIHNvIGEgbGlzdGVuZXIgY291bGQgYmUgaGFuZGVkIGFuIG9sZGVyXG4gICAgLy8gc3RhdGUgKHN0aWxsIGluIHJlLWVkaXQpICphZnRlciogYSBuZXdlciBvbmUgKHJlLWVkaXQgZXhpdGVkKSDigJQgd2hpY2hcbiAgICAvLyByZXN1cnJlY3RlZCBhIHN0YWxlIGBlZGl0aW5nUGFyYW1gIGFuZCByZXRyaWdnZXJlZCB0aGUgZWRpdG9yJ3MgcmUtZWRpdFxuICAgIC8vIGNhcmV0LXBhcmssIHlhbmtpbmcgdGhlIGNhcmV0IGJhY2sgdG8gd2hlcmUgcmUtZWRpdGluZyBzdGFydGVkLiBUaGVcbiAgICAvLyBzdG9yZSBub3cgcXVldWVzIG5vdGlmaWNhdGlvbnMgYW5kIGRyYWlucyB0aGVtIGluIG9yZGVyLCBzbyB0aGF0XG4gICAgLy8gb3V0LW9mLW9yZGVyIGRlbGl2ZXJ5IGNhbiBubyBsb25nZXIgaGFwcGVuIGF0IHRoZSBzb3VyY2UuXG4gICAgLy9cbiAgICAvLyBSZWFkaW5nIGBnZXRTdGF0ZSgpYCBhdCBlbWlzc2lvbiB0aW1lIGlzIGtlcHQgYXMgYmVsdC1hbmQtYnJhY2VzOiBpdFxuICAgIC8vIGNvc3RzIG5vdGhpbmcgKGRpc3RpbmN0VW50aWxDaGFuZ2VkIGRvd25zdHJlYW0gZHJvcHMgdGhlIGR1cGxpY2F0ZVxuICAgIC8vIGVtaXNzaW9ucykgYW5kIGtlZXBzIHRoaXMgYnJpZGdlIGNvcnJlY3QgZm9yIGFueSBmdXR1cmUgY29uc3VtZXIgdGhhdFxuICAgIC8vIGVtaXRzIG1pZC1jYXNjYWRlLiBSZWFjdCBuZWVkcyBuZWl0aGVyLCBzaW5jZSBpdCBiYXRjaGVzIHJlbmRlcnMgYW5kXG4gICAgLy8gZ2F0ZXMgaXRzIGNhcmV0IGVmZmVjdHMgb24gZGVwZW5kZW5jaWVzLlxuICAgIHRoaXMudW5zdWJzY3JpYmVDb3JlID0gdGhpcy5jb3JlLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuaXNEZXN0cm95ZWQpIHRoaXMucmF3U3RhdGUkLm5leHQodGhpcy5jb3JlLmdldFN0YXRlKCkpO1xuICAgIH0pO1xuXG4gICAgLy8gPT09IFBlci1maWVsZCBvYnNlcnZhYmxlcyA9PT1cbiAgICAvLyBBcnJheS12YWx1ZWQgZmllbGRzIHVzZSBzaGFsbG93IGVxdWFsaXR5LiBUaGUgdmFuaWxsYSBzdG9yZSBzcHJlYWRzIG9uXG4gICAgLy8gZXZlcnkgd3JpdGUgKGBzdG9yZS5zZXQoeyBjb21wbGV0ZWRQYXJhbXM6IFsuLi5dIH0pYCksIHNvIHJlZmVyZW5jZVxuICAgIC8vIGVxdWFsaXR5IHdvdWxkIHJlLWZpcmUgZG93bnN0cmVhbSBzdWJzY3JpYmVycyBvbiBldmVyeSBzdGF0ZSB0aWNrIGV2ZW5cbiAgICAvLyB3aGVuIHRoZSBhcnJheSdzIGNvbnRlbnRzIGFyZSB1bmNoYW5nZWQuIFRoZSBvdGhlciBmaWVsZHMgYXJlXG4gICAgLy8gcHJpbWl0aXZlcyBvciBzdGFibGUgb2JqZWN0IHJlZmVyZW5jZXMsIHNvIGRlZmF1bHQgaWRlbnRpdHkgZXF1YWxpdHlcbiAgICAvLyB3b3JrcyBmaW5lLlxuICAgIHRoaXMudGV4dCQgPSBkZXJpdmVGaWVsZCh0aGlzLnJhd1N0YXRlJCwgKHMpID0+IHMudGV4dCk7XG4gICAgdGhpcy5jb21wbGV0ZWRQYXJhbXMkID0gZGVyaXZlRmllbGQodGhpcy5yYXdTdGF0ZSQsIChzKSA9PiBzLmNvbXBsZXRlZFBhcmFtcywgYXJyRXEpO1xuICAgIHRoaXMuc2tpcHBlZFBhcmFtcyQgPSBkZXJpdmVGaWVsZCh0aGlzLnJhd1N0YXRlJCwgKHMpID0+IHMuc2tpcHBlZFBhcmFtcywgYXJyRXEpO1xuICAgIHRoaXMuaWRlbnRpZmllZFBhcmFtcyQgPSBkZXJpdmVGaWVsZCh0aGlzLnJhd1N0YXRlJCwgKHMpID0+IHMuaWRlbnRpZmllZFBhcmFtcywgYXJyRXEpO1xuICAgIHRoaXMuc3VnZ2VzdGlvblBpbGxzJCA9IGRlcml2ZUZpZWxkKHRoaXMucmF3U3RhdGUkLCAocykgPT4gcy5hY3Rpb25hYmxlU3VnZ2VzdGlvbnMsIGFyckVxKTtcbiAgICB0aGlzLnNlZ21lbnRzJCA9IGRlcml2ZUZpZWxkKHRoaXMucmF3U3RhdGUkLCAocykgPT4gcy5zZWdtZW50cywgYXJyRXEpO1xuICAgIHRoaXMubmV3UGFyYW1JZCQgPSBkZXJpdmVGaWVsZCh0aGlzLnJhd1N0YXRlJCwgKHMpID0+IHMubmV3UGFyYW1JZCk7XG4gICAgdGhpcy5zdWdnZXN0aW9ucyQgPSBkZXJpdmVGaWVsZCh0aGlzLnJhd1N0YXRlJCwgKHMpID0+IHMuc3VnZ2VzdGlvbnMsIGFyckVxKTtcbiAgICB0aGlzLnByb2R1Y3RzJCA9IGRlcml2ZUZpZWxkKHRoaXMucmF3U3RhdGUkLCAocykgPT4gcy5wcm9kdWN0cywgYXJyRXEpO1xuICAgIHRoaXMuY3VzdG9tRmllbGRzJCA9IGRlcml2ZUZpZWxkKHRoaXMucmF3U3RhdGUkLCAocykgPT4gcy5jdXN0b21GaWVsZHMpO1xuICAgIHRoaXMuYWN0aXZlSW5kZXgkID0gZGVyaXZlRmllbGQodGhpcy5yYXdTdGF0ZSQsIChzKSA9PiBzLmFjdGl2ZURyb3Bkb3duSW5kZXgpO1xuICAgIHRoaXMuaXNMb2FkaW5nJCA9IGRlcml2ZUZpZWxkKHRoaXMucmF3U3RhdGUkLCBjb21wdXRlVWlMb2FkaW5nKTtcbiAgICB0aGlzLmlzUmVhZHkkID0gZGVyaXZlRmllbGQodGhpcy5yYXdTdGF0ZSQsIChzKSA9PiBzLmlzUmVhZHkpO1xuICAgIHRoaXMuaXNGb2N1c2VkJCA9IGRlcml2ZUZpZWxkKHRoaXMucmF3U3RhdGUkLCAocykgPT4gcy5pc0ZvY3VzZWQpO1xuICAgIHRoaXMuaXNEcm9wZG93bk9wZW4kID0gZGVyaXZlRmllbGQodGhpcy5yYXdTdGF0ZSQsIChzKSA9PiBzLmlzRHJvcGRvd25PcGVuKTtcbiAgICB0aGlzLmlzQWN0aXZlUGlsbFNlbGVjdGVkJCA9IGRlcml2ZUZpZWxkKHRoaXMucmF3U3RhdGUkLCAocykgPT4gcy5pc0FjdGl2ZVBpbGxTZWxlY3RlZCk7XG4gICAgdGhpcy5wbGFjZWhvbGRlclRleHQkID0gZGVyaXZlRmllbGQodGhpcy5yYXdTdGF0ZSQsIChzKSA9PiBzLnBsYWNlaG9sZGVyVGV4dCk7XG4gICAgdGhpcy5lcnJvciQgPSBkZXJpdmVGaWVsZCh0aGlzLnJhd1N0YXRlJCwgKHMpID0+IHMuZXJyb3IpO1xuICAgIHRoaXMuZWRpdGluZ1BhcmFtJCA9IGRlcml2ZUZpZWxkKHRoaXMucmF3U3RhdGUkLCAocykgPT4gcy5lZGl0aW5nUGFyYW0pO1xuICAgIHRoaXMuZWRpdGluZ0FuY2hvciQgPSBkZXJpdmVGaWVsZCh0aGlzLnJhd1N0YXRlJCwgKHMpID0+IHMuZWRpdGluZ0FuY2hvcik7XG4gICAgdGhpcy5jYXJldE9mZnNldCQgPSBkZXJpdmVGaWVsZCh0aGlzLnJhd1N0YXRlJCwgKHMpID0+IHMuY2FyZXRPZmZzZXQpO1xuXG4gICAgLy8gPT09IENvbXBvc2l0ZSBvYnNlcnZhYmxlcyA9PT1cbiAgICAvLyBQcm9qZWN0IGRpcmVjdGx5IG9mZiBgcmF3U3RhdGUkYCB3aXRoIGEgc2luZ2xlIG1hcCgpIHNvIGVhY2ggc3RvcmVcbiAgICAvLyB0aWNrIHByb2R1Y2VzIGV4YWN0bHkgT05FIGNvaGVyZW50IHN0YXRlJCBlbWlzc2lvbi4gVXNpbmdcbiAgICAvLyBgY29tYmluZUxhdGVzdGAgb3ZlciB0aGUgcGVyLWZpZWxkIG9ic2VydmFibGVzIGhlcmUgd291bGQgZmlyZSBvbmVcbiAgICAvLyBlbWlzc2lvbiBwZXIgaW5uZXItc291cmNlIHRpY2sgKHVwIHRvIE4gcGVyIHN0b3JlIHVwZGF0ZSksIGFuZCB0aGVcbiAgICAvLyBlZGl0b3ItaG9zdCBkaXJlY3RpdmUncyBwb3N0LXByb21vdGUgcmVmb2N1cyB3b3VsZCBydW4gYWdhaW5zdCBhblxuICAgIC8vIGludGVybWVkaWF0ZSBzdGF0ZSB3aGVyZSBgbmV3UGFyYW1JZGAgd2FzIHNldCBidXQgYHNlZ21lbnRzYCAvXG4gICAgLy8gYGNhcmV0T2Zmc2V0YCBzdGlsbCBoZWxkIHRoZWlyIG9sZCB2YWx1ZXMg4oCUIGxlYXZpbmcgdGhlIGNhcmV0IHN0dWNrXG4gICAgLy8gYXQgdGhlIHByZS1jbGljayBwb3NpdGlvbi5cbiAgICB0aGlzLnN0YXRlJCA9IHRoaXMucmF3U3RhdGUkLnBpcGUoXG4gICAgICBtYXAoY29tcHV0ZVN0YXRlKSxcbiAgICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSksXG4gICAgKTtcblxuICAgIHRoaXMub3B0aW9uc1Bvc2l0aW9uJC5uZXh0KG9wdHMub3B0aW9uc1Bvc2l0aW9uID8/IFwiYmVsb3dcIik7XG4gICAgdGhpcy5kcm9wZG93biQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLnJhd1N0YXRlJCwgdGhpcy5vcHRpb25zUG9zaXRpb24kXSkucGlwZShcbiAgICAgIG1hcCgoW3MsIG9wdGlvbnNQb3NpdGlvbl0pID0+IGNvbXB1dGVEcm9wZG93bihzLCBvcHRpb25zUG9zaXRpb24pKSxcbiAgICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSksXG4gICAgKTtcbiAgfVxuXG4gIC8vID09PSBSZWFkLW9ubHkgYWNjZXNzb3JzID09PVxuXG4gIC8qKiBTdGFibGUgQVJJQSBsaXN0Ym94IElEIGZvciB0aGUgZHJvcGRvd24uIFBhc3MgdG8gYDx0ZXh0YXJlYSBhcmlhLWNvbnRyb2xzPVwiLi4uXCI+YC4gKi9cbiAgZ2V0IGxpc3Rib3hJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNvcmUubGlzdGJveElkO1xuICB9XG5cbiAgLyoqIFdoZXRoZXIgYGRlc3Ryb3koKWAgaGFzIGJlZW4gY2FsbGVkLiBBZnRlciBkZXN0cnVjdGlvbiBhbGwgYWN0aW9uIG1ldGhvZHMgbm8tb3AuICovXG4gIGdldCBkZXN0cm95ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNEZXN0cm95ZWQ7XG4gIH1cblxuICAvKipcbiAgICogU3luY2hyb25vdXMgc25hcHNob3Qgb2YgdGhlIGNvbnRyb2xsZXIncyBjdXJyZW50IHB1YmxpYyBzdGF0ZS4gTWlycm9yc1xuICAgKiB0aGUgbGF0ZXN0IGVtaXNzaW9uIG9mIGBzdGF0ZSRgLiBVc2VmdWwgaW4gY2FsbGJhY2tzIHdoZXJlIHlvdSBjYW4ndFxuICAgKiBgc3Vic2NyaWJlYCAoZS5nLiBpbnNpZGUgYW4gZXZlbnQgaGFuZGxlcikuXG4gICAqL1xuICBnZXRTdGF0ZSgpOiBBSUF1dG9jb21wbGV0ZUNvbnRyb2xsZXJTdGF0ZSB7XG4gICAgcmV0dXJuIGNvbXB1dGVTdGF0ZSh0aGlzLnJhd1N0YXRlJC52YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHN0cnVjdHVyZWQgcXVlcnkgYXMgdGhlIFNESyB1bmRlcnN0YW5kcyBpdCByaWdodCBub3cg4oCUIHRoZSBzYW1lXG4gICAqIG9iamVjdCBgb25SZXN1bHRgIGRlbGl2ZXJzIGFmdGVyIGVhY2ggcmVzcG9uc2UgYW5kIGBvblN1Ym1pdGAgZGVsaXZlcnNcbiAgICogb24gc3VibWl0LiBSZWFkIGl0IG9uIGRlbWFuZCBmcm9tIGEgcGxhY2UgdGhhdCBoYXMgbm8gZXZlbnQgaGFuZHkgKGFcbiAgICogY3VzdG9tIHN1Ym1pdCBidXR0b24sIGEgXCJzYXZlIGRyYWZ0XCIgYWN0aW9uKS5cbiAgICovXG4gIGdldFJlc3VsdCgpOiBBdXRvY29tcGxldGVSZXN1bHQge1xuICAgIHJldHVybiB0aGlzLmNvcmUuZ2V0UmVzdWx0KCk7XG4gIH1cblxuICAvLyA9PT0gQWN0aW9uIG1ldGhvZHMgKHBhc3MtdGhyb3VnaCB0byB0aGUgY29yZSkgPT09XG4gIC8vXG4gIC8vIEV2ZXJ5IGFjdGlvbiBtZXRob2QgYmVnaW5zIHdpdGggYW4gYGlzRGVzdHJveWVkYCBndWFyZCBzbyB0aGF0IGNhbGxlcnNcbiAgLy8gd2hvIGhvbGQgYSBzdGFsZSByZWZlcmVuY2UgYWZ0ZXIgYGRlc3Ryb3koKWAgZG9uJ3QgYWNjaWRlbnRhbGx5IHRyaWdnZXJcbiAgLy8gd29yayBvbiBhIHRvcm4tZG93biBjb3JlLiBUaGUgdmFuaWxsYSBjb3JlIGRvZXMgbm90IGdhdGUgaXRzIG93biBtZXRob2RzXG4gIC8vIHBvc3QtZGlzcG9zZSDigJQgYHJlc2V0KClgLCBgaGFuZGxlVGV4dENoYW5nZSgpYCwgYW5kIGZyaWVuZHMgd291bGQgc3RpbGxcbiAgLy8gc2NoZWR1bGUgZmV0Y2hlcyBvciBmaXJlIEhUVFAgcmVxdWVzdHMgYWdhaW5zdCBhbiBhYm9ydGVkIGNvbnRyb2xsZXIsXG4gIC8vIGFuZCB0aGUgcmVzcG9uc2VzIHdvdWxkIGhhdmUgbm93aGVyZSB0byBzdXJmYWNlIChyYXdTdGF0ZSQgaXMgYWxyZWFkeVxuICAvLyBjb21wbGV0ZSkuIFRoZSBndWFyZCBtYWtlcyB0aGUgSlNEb2MtcHJvbWlzZWQgXCJuby1vcCBzaWxlbnRseVwiXG4gIC8vIHNlbWFudGljcyBhY3R1YWxseSB0cnVlLlxuXG4gIC8qKiBDbGVhciBhbGwgc3RhdGUsIHJvdGF0ZSBgc2Vzc2lvbl9pZGAsIGFuZCByZS1mZXRjaC4gQ2FsbCBhZnRlciBzdWJtaXQuICovXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKSByZXR1cm47XG4gICAgdGhpcy5jb3JlLnJlc2V0KCk7XG4gIH1cblxuICAvKiogUGljayBhIGRyb3Bkb3duIG9wdGlvbiAob3IgcmVwbGFjZSB0aGUgcmUtZWRpdGVkIHBhcmFtIGlmIGluIHJlLWVkaXQgbW9kZSkuICovXG4gIHNlbGVjdE9wdGlvbihvcHRpb246IFN1Z2dlc3Rpb25PcHRpb24pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCkgcmV0dXJuO1xuICAgIHRoaXMuY29yZS5zZWxlY3RPcHRpb24ob3B0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbm5vdW5jZSBhIHByb2R1Y3Qgc2VsZWN0aW9uIOKAlCBmaXJlcyB0aGUgYG9uUHJvZHVjdFNlbGVjdGAgY2FsbGJhY2sgdGhlXG4gICAqIGNvbnRyb2xsZXIgd2FzIGNvbnN0cnVjdGVkIHdpdGguIGA8YWktYXV0b2NvbXBsZXRlLWRyb3Bkb3duPmAgY2FsbHMgdGhpc1xuICAgKiBmb3IgeW91OyBjb25zdW1lcnMgcmVuZGVyaW5nIHRoZWlyIG93biBzdHJpcCBjYWxsIGl0IHRoZW1zZWx2ZXMuXG4gICAqXG4gICAqIEVtaXR0aW5nIGlzIHRoZSB3aG9sZSBiZWhhdmlvdXI6IHRoZSBTREsgZGVsaWJlcmF0ZWx5IGRvZXMgbm90IG5hdmlnYXRlIHRvXG4gICAqIGBwcm9kdWN0LnVybGAsIGJlY2F1c2Ugb25seSB0aGUgaW50ZWdyYXRpb24ga25vd3Mgd2hldGhlciBhIHNlbGVjdGlvblxuICAgKiBtZWFucyBcIm9wZW4gdGhlIFBEUFwiLCBcImFkZCB0byBjYXJ0XCIsIG9yIFwiZmlsbCB0aGUgaW5wdXRcIi5cbiAgICovXG4gIHNlbGVjdFByb2R1Y3QocHJvZHVjdDogUHJvZHVjdCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKSByZXR1cm47XG4gICAgdGhpcy5jb3JlLnNlbGVjdFByb2R1Y3QocHJvZHVjdCk7XG4gIH1cblxuICAvKiogUHJvbW90ZSB0aGUgcGlsbCBhdCBgaW5kZXhgIHRvIGFjdGl2ZSAoZnJvbnQgb2YgdGhlIGxpc3QpLiAqL1xuICBzZXRBY3RpdmVQaWxsKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCkgcmV0dXJuO1xuICAgIHRoaXMuY29yZS5zZXRBY3RpdmVQaWxsKGluZGV4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTa2lwIHRoZSBhY3RpdmUgcGlsbCDigJQgc2FtZSBhY3Rpb24gYXMgcHJlc3Npbmcg4oaSIGF0IHRoZSBlbmQgb2YgdGhlIGlucHV0LlxuICAgKiBUaGUgZHJvcGRvd24ncyBza2lwIGJ1dHRvbiBjYWxscyB0aGlzOyBjb25zdW1lcnMgcmVuZGVyaW5nIHRoZWlyIG93biBza2lwXG4gICAqIGFmZm9yZGFuY2UgY2FsbCBpdCBkaXJlY3RseS4gVGhlIHNraXBwZWQgc3VnZ2VzdGlvbiBqb2lucyBgc2tpcHBlZFBhcmFtcyRgLlxuICAgKi9cbiAgc2tpcEFjdGl2ZVBpbGwoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNEZXN0cm95ZWQpIHJldHVybjtcbiAgICB0aGlzLmNvcmUuc2tpcEFjdGl2ZVBpbGwoKTtcbiAgfVxuXG4gIC8qKiBEcm9wIHRoZSBsYXN0IGNvbXBsZXRlZCBwYXJhbSdzIFwiY29tcGxldGVkXCIgc3RhdHVzLiBUZXh0IHN0YXlzIGFzIHBsYWluIHRleHQuICovXG4gIHJlbW92ZUxhc3RQYXJhbSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCkgcmV0dXJuO1xuICAgIHRoaXMuY29yZS5yZW1vdmVMYXN0UGFyYW0oKTtcbiAgfVxuXG4gIC8qKiBDbGVhciB0aGUgc2hpbW1lciBhbmltYXRpb24gc3RhdGUgZm9yIHRoZSBtb3N0LXJlY2VudGx5LWFkZGVkIHBhcmFtLiAqL1xuICBjbGVhck5ld1BhcmFtSWQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNEZXN0cm95ZWQpIHJldHVybjtcbiAgICB0aGlzLmNvcmUuY2xlYXJOZXdQYXJhbUlkKCk7XG4gIH1cblxuICAvKiogQ29udHJvbGxlZC1tb2RlIHNldHRlciBmb3IgZWRpdG9yIHRleHQuICovXG4gIHNldFZhbHVlKHRleHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKSByZXR1cm47XG4gICAgdGhpcy5jb3JlLnNldFZhbHVlKHRleHQpO1xuICB9XG5cbiAgLyoqIENvbnRyb2xsZWQtbW9kZSBzZXR0ZXIgZm9yIGNvbXBsZXRlZCBwYXJhbXMuICovXG4gIHNldENvbXBsZXRlZFBhcmFtcyhwYXJhbXM6IENvbXBsZXRlZFBhcmFtU3RhdGVbXSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKSByZXR1cm47XG4gICAgdGhpcy5jb3JlLnNldENvbXBsZXRlZFBhcmFtcyhwYXJhbXMpO1xuICB9XG5cbiAgLyoqIEZvcndhcmQgcGxhaW4tdGV4dCBpbnB1dCBmcm9tIHRoZSBjb25zdW1lcidzIGA8dGV4dGFyZWE+YCB0byB0aGUgY29yZS4gKi9cbiAgaGFuZGxlVGV4dENoYW5nZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNEZXN0cm95ZWQpIHJldHVybjtcbiAgICB0aGlzLmNvcmUuaGFuZGxlVGV4dENoYW5nZSh2YWx1ZSk7XG4gIH1cblxuICAvKiogRm9yd2FyZCBrZXlib2FyZCBldmVudHMgZnJvbSB0aGUgY29uc3VtZXIncyBgPHRleHRhcmVhPmAgdG8gdGhlIGNvcmUuICovXG4gIGhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCkgcmV0dXJuO1xuICAgIHRoaXMuY29yZS5oYW5kbGVLZXlEb3duKGV2ZW50KTtcbiAgfVxuXG4gIC8qKiBOb3RpZnkgdGhlIGNvcmUgb2YgZm9jdXMgc3RhdGUuICovXG4gIHNldEZvY3VzZWQoZm9jdXNlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKSByZXR1cm47XG4gICAgdGhpcy5jb3JlLnNldEZvY3VzZWQoZm9jdXNlZCk7XG4gIH1cblxuICAvKiogRW50ZXIgcmUtZWRpdCBtb2RlIGZvciB0aGUgYm9sZCBwYXJhbSB3aXRoIHRoZSBnaXZlbiBpZC4gKi9cbiAgc3RhcnRFZGl0aW5nUGFyYW0ocGFyYW1JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNEZXN0cm95ZWQpIHJldHVybjtcbiAgICB0aGlzLmNvcmUuc3RhcnRFZGl0aW5nUGFyYW0ocGFyYW1JZCk7XG4gIH1cblxuICAvKiogRXhpdCByZS1lZGl0IG1vZGUgd2l0aG91dCBjaGFuZ2luZyB0aGUgYm9sZCBwYXJhbS4gKi9cbiAgZXhpdEVkaXRNb2RlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKSByZXR1cm47XG4gICAgdGhpcy5jb3JlLmV4aXRFZGl0TW9kZSgpO1xuICB9XG5cbiAgLyoqIEZvcndhcmQgcG9zdC1pbnB1dCBjYXJldCBwb3NpdGlvbiAoZXh0ZW5kcyB0aGUgZWRpdCB0YWlsKS4gKi9cbiAgaGFuZGxlQ2FyZXRBZnRlcklucHV0KG9mZnNldDogbnVtYmVyIHwgbnVsbCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKSByZXR1cm47XG4gICAgdGhpcy5jb3JlLmhhbmRsZUNhcmV0QWZ0ZXJJbnB1dChvZmZzZXQpO1xuICB9XG5cbiAgLyoqIEZvcndhcmQgc2VsZWN0aW9uLW9ubHkgY2FyZXQgbW92ZXMgKG1heSBleGl0IHJlLWVkaXQpLiAqL1xuICBoYW5kbGVDYXJldE1vdmUob2Zmc2V0OiBudW1iZXIgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNEZXN0cm95ZWQpIHJldHVybjtcbiAgICB0aGlzLmNvcmUuaGFuZGxlQ2FyZXRNb3ZlKG9mZnNldCk7XG4gIH1cblxuICAvKiogUmVwbGFjZSB0aGUgYm9sZCBwYXJhbSBiZWluZyByZS1lZGl0ZWQuIFJldHVybnMgdHJ1ZSB3aGVuIGFwcGxpZWQuICovXG4gIHJlcGxhY2VFZGl0aW5nUmFuZ2UocmVwbGFjZW1lbnQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRoaXMuY29yZS5yZXBsYWNlRWRpdGluZ1JhbmdlKHJlcGxhY2VtZW50KTtcbiAgfVxuXG4gIC8qKiBTZXQgdGhlIGhpZ2hsaWdodGVkIG9wdGlvbiBpbmRleCAodHlwaWNhbGx5IGRyaXZlbiBieSBob3ZlcikuICovXG4gIHNldEFjdGl2ZURyb3Bkb3duSW5kZXgoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKSByZXR1cm47XG4gICAgdGhpcy5jb3JlLnNldEFjdGl2ZURyb3Bkb3duSW5kZXgoaW5kZXgpO1xuICB9XG5cbiAgLyoqIFBhZ2UgdGhlIGRhdGVwaWNrZXIgYmFjayBvbmUgbW9udGguIE5vLW9wIHVubGVzcyBhIGRhdGUgcGlsbCBpcyBhY3RpdmUuICovXG4gIHNob3dQcmV2aW91c01vbnRoKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKSByZXR1cm47XG4gICAgdGhpcy5jb3JlLnNob3dQcmV2aW91c01vbnRoKCk7XG4gIH1cblxuICAvKiogUGFnZSB0aGUgZGF0ZXBpY2tlciBmb3J3YXJkIG9uZSBtb250aC4gTm8tb3AgdW5sZXNzIGEgZGF0ZSBwaWxsIGlzIGFjdGl2ZS4gKi9cbiAgc2hvd05leHRNb250aCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCkgcmV0dXJuO1xuICAgIHRoaXMuY29yZS5zaG93TmV4dE1vbnRoKCk7XG4gIH1cblxuICAvLyA9PT0gTGlmZWN5Y2xlID09PVxuXG4gIC8qKlxuICAgKiBBcHBseSBydW50aW1lIGNoYW5nZXMgdG8gYSBzdWJzZXQgb2Ygb3B0aW9ucy4gRXZlbnQgY2FsbGJhY2tzXG4gICAqIChgb25TdWJtaXRgLCBgb25SZXN1bHRgLCBgb25FcnJvcmAsIGV0Yy4pIGNhbm5vdCBiZSBzd2FwcGVkIHRoaXMgd2F5IOKAlCB0aGV5IGFyZVxuICAgKiByZWdpc3RlcmVkIG9uY2UgYXQgY29uc3RydWN0aW9uIChtYXRjaGVzIHRoZSBSZWFjdCBob29rJ3MgZGVzaWduKS4gRm9yXG4gICAqIGR5bmFtaWMgZXZlbnQgcmVhY3Rpdml0eSwgc3Vic2NyaWJlIHRvIHRoZSBjb3JyZXNwb25kaW5nIG9ic2VydmFibGVcbiAgICogKGUuZy4gYHRleHQkYCBpbnN0ZWFkIG9mIGBvbkNoYW5nZWApLlxuICAgKi9cbiAgdXBkYXRlKG9wdHM6IEFJQXV0b2NvbXBsZXRlQ29udHJvbGxlclVwZGF0ZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKSByZXR1cm47XG4gICAgdGhpcy5jb3JlLnVwZGF0ZShvcHRzKTtcbiAgICBpZiAob3B0cy5vcHRpb25zUG9zaXRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5vcHRpb25zUG9zaXRpb24kLm5leHQob3B0cy5vcHRpb25zUG9zaXRpb24pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZWxlYXNlIGFsbCByZXNvdXJjZXMg4oCUIHVuc3Vic2NyaWJlcyBmcm9tIHRoZSBjb3JlLCBkZXN0cm95cyB0aGUgY29yZSxcbiAgICogYW5kIGNvbXBsZXRlcyB0aGUgaW50ZXJuYWwgc3RhdGUgc3ViamVjdC4gU2FmZSB0byBjYWxsIG11bHRpcGxlIHRpbWVzLlxuICAgKiBBZnRlciBkZXN0cnVjdGlvbiwgYWN0aW9uIG1ldGhvZHMgbm8tb3Agc2lsZW50bHkuXG4gICAqL1xuICBkZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKSByZXR1cm47XG4gICAgdGhpcy5pc0Rlc3Ryb3llZCA9IHRydWU7XG4gICAgdGhpcy51bnN1YnNjcmliZUNvcmUoKTtcbiAgICB0aGlzLmNvcmUuZGVzdHJveSgpO1xuICAgIHRoaXMucmF3U3RhdGUkLmNvbXBsZXRlKCk7XG4gIH1cbn1cblxuLy8gPT09PT0gUHVyZSBoZWxwZXJzIOKAlCBub3QgcGFydCBvZiB0aGUgcHVibGljIHN1cmZhY2UgPT09PT1cblxuLyoqXG4gKiBTaGFsbG93IGFycmF5IGVxdWFsaXR5LiBUaGUgdmFuaWxsYSBzdG9yZSByZWFzc2lnbnMgYXJyYXkgZmllbGRzIG9uIGV2ZXJ5XG4gKiB3cml0ZSAoYHN0b3JlLnNldCh7IGNvbXBsZXRlZFBhcmFtczogWy4uLnByZXYsIHhdIH0pYCksIHNvIHJlZmVyZW5jZVxuICogZXF1YWxpdHkgYWxvbmUgd291bGQgcmUtZW1pdCBkb3duc3RyZWFtIGV2ZW4gd2hlbiB0aGUgY29udGVudHMgYXJlXG4gKiBpZGVudGljYWwuIFVzZWQgZm9yIGBjb21wbGV0ZWRQYXJhbXMkYCwgYHN1Z2dlc3Rpb25zJGAsIGBzdWdnZXN0aW9uUGlsbHMkYCxcbiAqIGFuZCBgc2VnbWVudHMkYC5cbiAqL1xuZnVuY3Rpb24gYXJyRXE8VD4oYTogcmVhZG9ubHkgVFtdLCBiOiByZWFkb25seSBUW10pOiBib29sZWFuIHtcbiAgaWYgKGEgPT09IGIpIHJldHVybiB0cnVlO1xuICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgIGlmIChhW2ldICE9PSBiW2ldKSByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKiBVSS12aXNpYmxlIGxvYWRpbmcg4oCUIHRoZSBjb3JlJ3MgYGRyb3Bkb3duTG9hZGluZ2AgKHNlZSBpdHMgZG9jcykuICovXG5mdW5jdGlvbiBjb21wdXRlVWlMb2FkaW5nKHM6IENvcmVTdGF0ZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gcy5kcm9wZG93bkxvYWRpbmc7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVTdGF0ZShzOiBDb3JlU3RhdGUpOiBBSUF1dG9jb21wbGV0ZUNvbnRyb2xsZXJTdGF0ZSB7XG4gIHJldHVybiB7XG4gICAgdGV4dDogcy50ZXh0LFxuICAgIGNvbXBsZXRlZFBhcmFtczogcy5jb21wbGV0ZWRQYXJhbXMsXG4gICAgc2tpcHBlZFBhcmFtczogcy5za2lwcGVkUGFyYW1zLFxuICAgIGlkZW50aWZpZWRQYXJhbXM6IHMuaWRlbnRpZmllZFBhcmFtcyxcbiAgICBzdWdnZXN0aW9uUGlsbHM6IHMuYWN0aW9uYWJsZVN1Z2dlc3Rpb25zLFxuICAgIHNlZ21lbnRzOiBzLnNlZ21lbnRzLFxuICAgIG5ld1BhcmFtSWQ6IHMubmV3UGFyYW1JZCxcbiAgICBzdWdnZXN0aW9uczogcy5zdWdnZXN0aW9ucyxcbiAgICBwcm9kdWN0czogcy5wcm9kdWN0cyxcbiAgICBjdXN0b21GaWVsZHM6IHMuY3VzdG9tRmllbGRzLFxuICAgIGFjdGl2ZUluZGV4OiBzLmFjdGl2ZURyb3Bkb3duSW5kZXgsXG4gICAgaXNMb2FkaW5nOiBjb21wdXRlVWlMb2FkaW5nKHMpLFxuICAgIGlzUmVhZHk6IHMuaXNSZWFkeSxcbiAgICBpc0ZvY3VzZWQ6IHMuaXNGb2N1c2VkLFxuICAgIGlzRHJvcGRvd25PcGVuOiBzLmlzRHJvcGRvd25PcGVuLFxuICAgIHBsYWNlaG9sZGVyVGV4dDogcy5wbGFjZWhvbGRlclRleHQsXG4gICAgZXJyb3I6IHMuZXJyb3IsXG4gICAgZWRpdGluZ1BhcmFtOiBzLmVkaXRpbmdQYXJhbSxcbiAgICBlZGl0aW5nSWRlbnRpZmllZDogcy5lZGl0aW5nSWRlbnRpZmllZCxcbiAgICBlZGl0aW5nQW5jaG9yOiBzLmVkaXRpbmdBbmNob3IsXG4gICAgY2FyZXRPZmZzZXQ6IHMuY2FyZXRPZmZzZXQsXG4gIH07XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVEcm9wZG93bihcbiAgczogQ29yZVN0YXRlLFxuICBvcHRpb25zUG9zaXRpb246IFwiYWJvdmVcIiB8IFwiYmVsb3dcIixcbik6IEFJQXV0b2NvbXBsZXRlRHJvcGRvd25TdGF0ZSB7XG4gIGNvbnN0IGVkaXRpbmdQYXJhbSA9IHMuZWRpdGluZ1BhcmFtO1xuICBjb25zdCBlZGl0aW5nSWRlbnRpZmllZCA9IHMuZWRpdGluZ0lkZW50aWZpZWQ7XG4gIGNvbnN0IGRhdGVTZWxlY3Rpb24gPSBkYXRlU2VsZWN0aW9uRm9yKHMpO1xuICBjb25zdCBhY3RpdmVTdWdnZXN0aW9uID0gcy5hY3Rpb25hYmxlU3VnZ2VzdGlvbnNbMF07XG4gIGNvbnN0IGRyb3Bkb3duUGlsbDogU3VnZ2VzdGlvbiB8IG51bGwgPSBlZGl0aW5nUGFyYW1cbiAgICA/IHtcbiAgICAgICAgdHlwZTogZWRpdGluZ1BhcmFtLnN1Z2dlc3Rpb25UeXBlLFxuICAgICAgICB0ZXh0OiBlZGl0aW5nUGFyYW0uc3VnZ2VzdGlvblBsYWNlaG9sZGVyLFxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgb3B0aW9uczogZWRpdGluZ1BhcmFtLm9wdGlvbnMsXG4gICAgICB9XG4gICAgOiBlZGl0aW5nSWRlbnRpZmllZFxuICAgICAgPyAvLyBBbnN3ZXJpbmcgYSBzcGFuIHRoZSB1c2VyIHdyb3RlIHRoZW1zZWx2ZXM6IHRoZSBwaWxsIG5hbWVzIHRoZVxuICAgICAgICAvLyBwYXJhbWV0ZXIgdGhlIHNlcnZlciBtYXRjaGVkIGl0IHRvLCBzbyB0aGUgY2FsZW5kYXIgaXNuJ3QgdW5sYWJlbGxlZC5cbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IGVkaXRpbmdJZGVudGlmaWVkLnR5cGUsXG4gICAgICAgICAgdGV4dDogaWRlbnRpZmllZFBhcmFtTGFiZWwoZWRpdGluZ0lkZW50aWZpZWQudHlwZSksXG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgb3B0aW9uczogW10sXG4gICAgICAgIH1cbiAgICAgIDogbnVsbDtcbiAgY29uc3QgZHJvcGRvd25BY3RpdmVQaWxsID0gcy5kcm9wZG93blN1Z2dlc3Rpb24gPz8gZHJvcGRvd25QaWxsID8/IGFjdGl2ZVN1Z2dlc3Rpb247XG4gIGNvbnN0IGRyb3Bkb3duUGlsbHMgPSBkcm9wZG93blBpbGwgPyBbZHJvcGRvd25QaWxsXSA6IHMuYWN0aW9uYWJsZVN1Z2dlc3Rpb25zO1xuICByZXR1cm4ge1xuICAgIHN1Z2dlc3Rpb25zOiBkcm9wZG93bkFjdGl2ZVBpbGwgPyBbeyAuLi5kcm9wZG93bkFjdGl2ZVBpbGwsIG9wdGlvbnM6IHMuZHJvcGRvd25PcHRpb25zIH1dIDogW10sXG4gICAgYWN0aXZlSW5kZXg6IHMuYWN0aXZlRHJvcGRvd25JbmRleCxcbiAgICBpc09wZW46IHMuaXNEcm9wZG93bk9wZW4sXG4gICAgcGlsbHM6IGRyb3Bkb3duUGlsbHMsXG4gICAgaXNBY3RpdmVQaWxsU2VsZWN0ZWQ6IHMuaXNBY3RpdmVQaWxsU2VsZWN0ZWQsXG4gICAgaXNMb2FkaW5nOiBjb21wdXRlVWlMb2FkaW5nKHMpLFxuICAgIHNrZWxldG9uRXhpdGluZzogcy5za2VsZXRvbkV4aXRpbmcsXG4gICAgaXNJbnB1dEVtcHR5OiBzLnRleHQudHJpbSgpLmxlbmd0aCA9PT0gMCxcbiAgICBwcm9kdWN0czogcy5wcm9kdWN0cyxcbiAgICBpc0VkaXRpbmc6IEJvb2xlYW4oZWRpdGluZ1BhcmFtKSB8fCBCb29sZWFuKGVkaXRpbmdJZGVudGlmaWVkKSxcbiAgICBpblNlbGVjdGlvbkFuaW1hdGlvbjogcy5pblNlbGVjdGlvbkFuaW1hdGlvbixcbiAgICAvLyBEYXRlcGlja2VyLiBgcy5maWx0ZXJlZE9wdGlvbnNgIGFib3ZlIGFscmVhZHkgY2FycmllcyB0aGUgdmlzaWJsZVxuICAgIC8vIG1vbnRoJ3MgY2VsbHMgcmF0aGVyIHRoYW4gdGhlIHN1Z2dlc3Rpb24ncyBvd24gb3B0aW9ucyB3aGVuIHRoaXMgaXNcbiAgICAvLyBcImRhdGVcIiDigJQgdGhlIGNvcmUgc3dhcHBlZCB0aGVtIGluIGl0cyBkZXJpdmUgbGF5ZXIsIHNvIHRoZSBkcm9wZG93biBvbmx5XG4gICAgLy8gaGFzIHRvIGtub3cgd2hpY2ggYm9keSB0byBkcmF3LlxuICAgIGZvcm1hdFR5cGU6IHMuYWN0aXZlRm9ybWF0VHlwZSxcbiAgICBkYXRlVmlldzogcy5kYXRlVmlldyxcbiAgICBzZWxlY3RlZERhdGVJc286IGRhdGVTZWxlY3Rpb24uc2VsZWN0ZWRJc28sXG4gICAgc2VsZWN0ZWREYXRlUmFuZ2U6IGRhdGVTZWxlY3Rpb24uc2VsZWN0ZWRSYW5nZSxcbiAgICBkYXRlUmFuZ2VTdGFydDogZGF0ZVNlbGVjdGlvbi5yYW5nZVN0YXJ0LFxuICAgIG9wdGlvbnNQb3NpdGlvbixcbiAgfTtcbn1cbiJdfQ==
|
|
413
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWktYXV0b2NvbXBsZXRlLmNvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NvbnRyb2xsZXIvYWktYXV0b2NvbXBsZXRlLmNvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLGNBQWMsSUFBSSxrQkFBa0IsRUFHcEMsZ0JBQWdCLEVBRWhCLG9CQUFvQixHQU1yQixNQUFNLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBbUIsV0FBVyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBT3pGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUM7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxPQUFPLHdCQUF3QjtJQW1HbkM7OztPQUdHO0lBQ0gsWUFBWSxPQUF3QyxFQUFFO1FBcEd0RCw0RUFBNEU7UUFDNUUsNEVBQTRFO1FBQzVFLG1FQUFtRTtRQUNsRCxxQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBb0IsT0FBTyxDQUFDLENBQUM7UUFFNUUsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFnRzFCLElBQUksT0FBTyxRQUFRLEtBQUssV0FBVyxFQUFFO1lBQ25DLE1BQU0sSUFBSSxLQUFLLENBQ2IsMkRBQTJEO2dCQUN6RCx3RUFBd0UsQ0FDM0UsQ0FBQztTQUNIO1FBRUQsd0VBQXdFO1FBQ3hFLHFFQUFxRTtRQUNyRSxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTNDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLEVBQUU7WUFDdkMsR0FBRyxJQUFJO1lBQ1AsVUFBVSxFQUFFLFVBQVU7WUFDdEIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLElBQUksY0FBYztZQUNyQyxpRUFBaUU7WUFDakUsb0VBQW9FO1lBQ3BFLDJD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IHR5cGUgQXV0b2NvbXBsZXRlUmVzdWx0LFxuICB0eXBlIENvbXBsZXRlZFBhcmFtU3RhdGUsXG4gIEFJQXV0b2NvbXBsZXRlIGFzIENvcmVBSUF1dG9jb21wbGV0ZSxcbiAgdHlwZSBDb3JlU3RhdGUsXG4gIHR5cGUgQ3VzdG9tRmllbGRzUmVwb3J0LFxuICBkYXRlU2VsZWN0aW9uRm9yLFxuICB0eXBlIElkZW50aWZpZWRQYXJhbVN0YXRlLFxuICBpZGVudGlmaWVkUGFyYW1MYWJlbCxcbiAgdHlwZSBQcm9kdWN0LFxuICB0eXBlIFNlZ21lbnQsXG4gIHR5cGUgU2tpcHBlZFBhcmFtU3RhdGUsXG4gIHR5cGUgU3VnZ2VzdGlvbixcbiAgdHlwZSBTdWdnZXN0aW9uT3B0aW9uLFxufSBmcm9tIFwiQG1hZ2ljeC1lbmcvYWktYXV0b2NvbXBsZXRlLXZhbmlsbGFcIjtcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbWFwLCB0eXBlIE9ic2VydmFibGUsIHNoYXJlUmVwbGF5IH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB0eXBlIHtcbiAgQUlBdXRvY29tcGxldGVDb250cm9sbGVyT3B0aW9ucyxcbiAgQUlBdXRvY29tcGxldGVDb250cm9sbGVyU3RhdGUsXG4gIEFJQXV0b2NvbXBsZXRlQ29udHJvbGxlclVwZGF0ZSxcbiAgQUlBdXRvY29tcGxldGVEcm9wZG93blN0YXRlLFxufSBmcm9tIFwiLi4vc2hhcmVkL3R5cGVzXCI7XG5pbXBvcnQgeyBkZXJpdmVGaWVsZCB9IGZyb20gXCIuL29ic2VydmFibGVzXCI7XG5cbi8qKlxuICogVGllciAyIGxvZ2ljIHN1cmZhY2UgZm9yIGBAbWFnaWN4LWVuZy9haS1hdXRvY29tcGxldGUtYW5ndWxhcmAg4oCUIHRoZSBBbmd1bGFyXG4gKiBlcXVpdmFsZW50IG9mIFJlYWN0J3MgYHVzZUFJQXV0b2NvbXBsZXRlKClgIGhvb2suIFdyYXBzIGEgaGVhZGxlc3NcbiAqIGBAbWFnaWN4LWVuZy9haS1hdXRvY29tcGxldGUtdmFuaWxsYWAgY29yZSBhbmQgZXhwb3NlcyBpdHMgc3RhdGUgYXMgUnhKU1xuICogb2JzZXJ2YWJsZXMgcGx1cyB0aGluIGFjdGlvbiBtZXRob2RzLlxuICpcbiAqIFRoZSBjb250cm9sbGVyIGlzIGNvbnN1bWVyLW1hbmFnZWQg4oCUIHRoZSBjb25zdW1lciBjcmVhdGVzIGl0XG4gKiB3aXRoIGBuZXdgLCBob2xkcyB0aGUgcmVmZXJlbmNlLCBhbmQgKiptdXN0IGNhbGwgYGRlc3Ryb3koKWAqKiBpbiB0aGVpclxuICogb3duIGBuZ09uRGVzdHJveWAuIFRoZSBUaWVyIDEgYDxhaS1hdXRvY29tcGxldGU+YCBjb21wb25lbnQgZG9lcyB0aGlzXG4gKiBhdXRvbWF0aWNhbGx5OyBUaWVyIDIgY29uc3VtZXJzIGRvIG5vdCBnZXQgYXV0by1jbGVhbnVwLlxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNsYXNzIEFJQXV0b2NvbXBsZXRlQ29udHJvbGxlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29yZTogQ29yZUFJQXV0b2NvbXBsZXRlO1xuICBwcml2YXRlIHJlYWRvbmx5IHJhd1N0YXRlJDogQmVoYXZpb3JTdWJqZWN0PENvcmVTdGF0ZT47XG4gIC8vIG9wdGlvbnNQb3NpdGlvbiBpc24ndCBwYXJ0IG9mIENvcmVTdGF0ZSAoaXQncyBhIGNvcmUgb3B0aW9uKSwgc28gdHJhY2sgaXRcbiAgLy8gaGVyZSBhbmQgZm9sZCBpdCBpbnRvIGBkcm9wZG93biRgIHNvIHRoZSBkcm9wZG93biBjYW4gcmVhZCBwbGFjZW1lbnQgZnJvbVxuICAvLyB0aGUgY29udHJvbGxlciDigJQgY29uZmlndXJlZCBvbmNlLCBrZXB0IGluIHN5bmMgdGhyb3VnaCB1cGRhdGUoKS5cbiAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zUG9zaXRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxcImFib3ZlXCIgfCBcImJlbG93XCI+KFwiYmVsb3dcIik7XG4gIHByaXZhdGUgcmVhZG9ubHkgdW5zdWJzY3JpYmVDb3JlOiAoKSA9PiB2b2lkO1xuICBwcml2YXRlIGlzRGVzdHJveWVkID0gZmFsc2U7XG5cbiAgLy8gPT09IFBlci1maWVsZCBvYnNlcnZhYmxlcyA9PT1cbiAgLy8gRWFjaCBvbmUgcnVucyB0aHJvdWdoIGRlcml2ZUZpZWxkLCB3aGljaCBiYWtlcyBpbiBkaXN0aW5jdFVudGlsQ2hhbmdlZFxuICAvLyBhbmQgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSBwZXIgwqcxOS40LlxuXG4gIC8qKiBQbGFpbi10ZXh0IGNvbnRlbnQgb2YgdGhlIGVkaXRvci4gKi9cbiAgcmVhZG9ubHkgdGV4dCQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgLyoqIENvbXBsZXRlZCAoYm9sZCkgcGFyYW1zIGN1cnJlbnRseSBpbiB0aGUgZWRpdG9yLiAqL1xuICByZWFkb25seSBjb21wbGV0ZWRQYXJhbXMkOiBPYnNlcnZhYmxlPENvbXBsZXRlZFBhcmFtU3RhdGVbXT47XG4gIC8qKlxuICAgKiBTdWdnZXN0aW9ucyB0aGUgdXNlciBkaXNtaXNzZWQgd2l0aCB0aGUgc2tpcCBrZXkgKOKGkikuIE5vdGhpbmcgcmVuZGVyc1xuICAgKiB0aGVtOyB0aGV5IGV4aXN0IHNvIGEgaGFuZC1yb2xsZWQgc3VibWl0IGNhbiBwYXNzIHRoZW0gdG9cbiAgICogYGJ1aWxkU3VibWl0UmVzdWx0YCBhbmQgY2FycnkgdGhlIHNhbWUgYHRleHQ6IFwic2tpcHBlZFwiYCBlbnRyaWVzIHRoZVxuICAgKiBTREsncyBvd24gcmVxdWVzdHMgZG8uXG4gICAqL1xuICByZWFkb25seSBza2lwcGVkUGFyYW1zJDogT2JzZXJ2YWJsZTxTa2lwcGVkUGFyYW1TdGF0ZVtdPjtcbiAgLyoqXG4gICAqIFBhcmFtcyB0aGUgc2VydmVyIGlkZW50aWZpZWQgaW4gdGhlIHVzZXIncyBvd24gd29yZHMuIEFscmVhZHkgcmVuZGVyZWRcbiAgICogdGhyb3VnaCBgc2VnbWVudHMkYDsgZXhwb3NlZCBzbyBhIGhhbmQtcm9sbGVkIHN1Ym1pdCBjYW4gcGFzcyB0aGVtIHRvXG4gICAqIGBidWlsZFN1Ym1pdFJlc3VsdGAgYW5kIHJlcG9ydCB0aGUgc2FtZSBgaWRlbnRpZmllZF9wYXJhbXNgIHRoZSBTREsnc1xuICAgKiBvd24gcmVzdWx0cyBjYXJyeS5cbiAgICovXG4gIHJlYWRvbmx5IGlkZW50aWZpZWRQYXJhbXMkOiBPYnNlcnZhYmxlPElkZW50aWZpZWRQYXJhbVN0YXRlW10+O1xuICAvKiogQWN0aW9uYWJsZSBzdWdnZXN0aW9uIHBpbGxzIChmaXJzdCBvbmUgaXMgdGhlIGFjdGl2ZSBwaWxsKS4gKi9cbiAgcmVhZG9ubHkgc3VnZ2VzdGlvblBpbGxzJDogT2JzZXJ2YWJsZTxTdWdnZXN0aW9uW10+O1xuICAvKiogVGV4dCArIGNvbXBsZXRlZC1wYXJhbSBzZWdtZW50cyBmb3IgcmVuZGVyaW5nIHRoZSBlZGl0b3IgYm9keS4gKi9cbiAgcmVhZG9ubHkgc2VnbWVudHMkOiBPYnNlcnZhYmxlPFNlZ21lbnRbXT47XG4gIC8qKiBJRCBvZiB0aGUgbW9zdC1yZWNlbnRseS1wcm9tb3RlZCBwYXJhbSAoZHJpdmVzIHNoaW1tZXIgYW5pbWF0aW9uKS4gKi9cbiAgcmVhZG9ubHkgbmV3UGFyYW1JZCQ6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD47XG4gIC8qKiBBbGwgc3VnZ2VzdGlvbnMgZnJvbSB0aGUgc2VydmVyIChpbmNsdWRpbmcgbm9uLWFjdGlvbmFibGUgb25lcykuICovXG4gIHJlYWRvbmx5IHN1Z2dlc3Rpb25zJDogT2JzZXJ2YWJsZTxTdWdnZXN0aW9uW10+O1xuICAvKipcbiAgICogV2hhdCB0aGUgcHJvZHVjdCBzdHJpcCBzaG93czogdGhlIGl0ZW1zIHRoZSBsYXRlc3QgYC9zdWdnZXN0YCByZXNwb25zZVxuICAgKiByZXBvcnRlZCBhcyBtYXRjaGluZyB0aGUgcXVlcnksIG9yIOKAlCB3aXRoIGBwcm9kdWN0c2AgY29uZmlndXJlZCBvbiB0aGVcbiAgICogY29udHJvbGxlciDigJQgdGhlIHJlc3VsdHMgb2YgdGhhdCBjdXN0b20gc2VhcmNoLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvZHVjdHMkOiBPYnNlcnZhYmxlPFByb2R1Y3RbXT47XG4gIC8qKlxuICAgKiBUaGUgY2F0YWxvZyBncm91bmRpbmcgcmVwb3J0IHRoZSBsYXRlc3QgcmVzcG9uc2UgY2FycmllZCwgb3IgbnVsbCB3aGVuIGl0XG4gICAqIGNhcnJpZWQgbm9uZTogd2hpY2ggb2YgdGhlIHF1ZXJ5J3MgY29uc3RyYWludHMgdGhlIGNhdGFsb2cgYXBwbGllZCwgd2hpY2hcbiAgICogaXQgZHJvcHBlZCwgYW5kIGhvdyBtYW55IGl0ZW1zIChhbmQgd2hpY2gpIHRoZSBhcHBsaWVkIG9uZXMgbGVmdFxuICAgKiBzdGFuZGluZy4gTnVsbCBpcyBcIm5vIG5ld3NcIiwgbm90IGFuIGVtcHR5IGNhdGFsb2cuXG4gICAqL1xuICByZWFkb25seSBjdXN0b21GaWVsZHMkOiBPYnNlcnZhYmxlPEN1c3RvbUZpZWxkc1JlcG9ydCB8IG51bGw+O1xuICAvKiogQ3VycmVudGx5IGhpZ2hsaWdodGVkIGRyb3Bkb3duIG9wdGlvbiBpbmRleC4gLTEgPSBub25lLiAqL1xuICByZWFkb25seSBhY3RpdmVJbmRleCQ6IE9ic2VydmFibGU8bnVtYmVyPjtcbiAgLyoqXG4gICAqIFVJLXZpc2libGUgbG9hZGluZyBmbGFnIOKAlCBzdXBwcmVzc2VkIGR1cmluZyB0aGUgcG9zdC1zZWxlY3QgcHJlc3NcbiAgICogYW5pbWF0aW9uIGFuZCBkdXJpbmcgcmUtZWRpdCAoY2FjaGVkIG9wdGlvbnMgc3RheSB2aXNpYmxlIHRoZXJlKS4gVXNlXG4gICAqIHRoaXMgaW5zdGVhZCBvZiB0aGUgcmF3IGNvcmUgc3RhdGUgZm9yIGFueSBsb2FkaW5nLXNrZWxldG9uIGJpbmRpbmcuXG4gICAqL1xuICByZWFkb25seSBpc0xvYWRpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAvKiogU2VydmVyLXJlcG9ydGVkIFwicXVlcnkgaXMgY29tcGxldGVcIiBmbGFnLiAqL1xuICByZWFkb25seSBpc1JlYWR5JDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgLyoqIFdoZXRoZXIgdGhlIGVkaXRvciBjdXJyZW50bHkgaGFzIGZvY3VzLiAqL1xuICByZWFkb25seSBpc0ZvY3VzZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAvKiogV2hldGhlciB0aGUgZHJvcGRvd24gc2hvdWxkIGN1cnJlbnRseSBiZSB2aXNpYmxlLiAqL1xuICByZWFkb25seSBpc0Ryb3Bkb3duT3BlbiQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBhY3RpdmUgKGxlYWRpbmcpIHBpbGwgc2hvdWxkIHJlbmRlciBzZWxlY3RlZCAoZnVsbCBvcGFjaXR5KVxuICAgKiByYXRoZXIgdGhhbiB0aGUgZGUtZW1waGFzaXplZCBgZmlyc3RgIHRpZXIuIEF1dG8gdHJpZ2dlciDih5IgdHJ1ZSBvbmx5IHdoaWxlXG4gICAqIGEgZHJvcGRvd24gb3B0aW9uIGlzIGhpZ2hsaWdodGVkOyBtYW51YWwg4oeSIHRydWUgb25jZSB0aGUgcGlsbCBpcyB0YXBwZWQuXG4gICAqL1xuICByZWFkb25seSBpc0FjdGl2ZVBpbGxTZWxlY3RlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIC8qKiBTZXJ2ZXItc3VnZ2VzdGVkIHBsYWNlaG9sZGVyIHRleHQgZm9yIHRoZSBlZGl0b3IuICovXG4gIHJlYWRvbmx5IHBsYWNlaG9sZGVyVGV4dCQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgLyoqIExhc3QgZmV0Y2ggZXJyb3IsIG9yIG51bGwuICovXG4gIHJlYWRvbmx5IGVycm9yJDogT2JzZXJ2YWJsZTxFcnJvciB8IG51bGw+O1xuICAvKiogUGFyYW0gY3VycmVudGx5IGJlaW5nIHJlLWVkaXRlZCwgb3IgbnVsbC4gKi9cbiAgcmVhZG9ubHkgZWRpdGluZ1BhcmFtJDogT2JzZXJ2YWJsZTxDb21wbGV0ZWRQYXJhbVN0YXRlIHwgbnVsbD47XG4gIC8qKiBQbGFpbi10ZXh0IG9mZnNldCB3aGVyZSB0aGUgZWRpdCByZWdpb24gc3RhcnRzLCBvciBudWxsLiAqL1xuICByZWFkb25seSBlZGl0aW5nQW5jaG9yJDogT2JzZXJ2YWJsZTxudW1iZXIgfCBudWxsPjtcbiAgLyoqIExpdmUgY2FyZXQgb2Zmc2V0IHdpdGhpbiB0aGUgZWRpdG9yLiAqL1xuICByZWFkb25seSBjYXJldE9mZnNldCQ6IE9ic2VydmFibGU8bnVtYmVyIHwgbnVsbD47XG5cbiAgLy8gPT09IENvbXBvc2l0ZSBvYnNlcnZhYmxlcyA9PT1cblxuICAvKipcbiAgICogU25hcHNob3Qgb2YgZXZlcnkgcHVibGljIGZpZWxkIGluIG9uZSBvYmplY3QuIENvbnZlbmllbnQgZm9yXG4gICAqIGAqbmdJZj1cImN0cmwuc3RhdGUkIHwgYXN5bmMgYXMgc3RhdGVcImAgdGVtcGxhdGluZyDigJQgYWxpYXNlcyBhbGwgZmllbGRzXG4gICAqIHVuZGVyIGEgc2luZ2xlIHN1YnNjcmlwdGlvbiBpbnN0ZWFkIG9mIG11bHRpcGxlIGB8IGFzeW5jYCBwaXBlcy5cbiAgICovXG4gIHJlYWRvbmx5IHN0YXRlJDogT2JzZXJ2YWJsZTxBSUF1dG9jb21wbGV0ZUNvbnRyb2xsZXJTdGF0ZT47XG5cbiAgLyoqXG4gICAqIENvbXBvc2l0ZSBzdGF0ZSBmb3IgdGhlIGRyb3Bkb3duIHZpZXcuIFRpZXIgMiBjb25zdW1lcnMgc3ByZWFkIHRoaXMgaW50b1xuICAgKiBgPGFpLWF1dG9jb21wbGV0ZS1kcm9wZG93bj5gOyBUaWVyIDEgdXNlcyB0aGUgc2FtZSBzaGFwZSBpbnRlcm5hbGx5LlxuICAgKi9cbiAgcmVhZG9ubHkgZHJvcGRvd24kOiBPYnNlcnZhYmxlPEFJQXV0b2NvbXBsZXRlRHJvcGRvd25TdGF0ZT47XG5cbiAgLyoqXG4gICAqIFRocm93cyBpZiBpbnZva2VkIG91dHNpZGUgYSBicm93c2VyIGVudmlyb25tZW50LiBGb3IgU1NSIC8gQW5ndWxhclxuICAgKiBVbml2ZXJzYWwsIGdhdGUgY29uc3RydWN0aW9uIHdpdGggYGlzUGxhdGZvcm1Ccm93c2VyYC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKG9wdHM6IEFJQXV0b2NvbXBsZXRlQ29udHJvbGxlck9wdGlvbnMgPSB7fSkge1xuICAgIGlmICh0eXBlb2YgZG9jdW1lbnQgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJBSUF1dG9jb21wbGV0ZUNvbnRyb2xsZXIgcmVxdWlyZXMgYSBicm93c2VyIGVudmlyb25tZW50LiBcIiArXG4gICAgICAgICAgXCJGb3IgU1NSIC8gQW5ndWxhciBVbml2ZXJzYWwsIGdhdGUgY29uc3RydWN0aW9uIHdpdGggaXNQbGF0Zm9ybUJyb3dzZXIuXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIEhlYWRsZXNzIG1vZGUgbmV2ZXIgcmVuZGVycyB0byB0aGUgaG9zdCwgc28gYSB0aHJvd2F3YXkgZGl2IGlzIGZpbmUg4oCUXG4gICAgLy8gaXQncyByZXF1aXJlZCBieSB0aGUgY29yZSdzIHNpZ25hdHVyZSBmb3Igc3ltbWV0cnkgd2l0aCBmdWxsIG1vZGUuXG4gICAgY29uc3QgaG9zdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG5cbiAgICB0aGlzLmNvcmUgPSBuZXcgQ29yZUFJQXV0b2NvbXBsZXRlKGhvc3QsIHtcbiAgICAgIC4uLm9wdHMsXG4gICAgICByZW5kZXJNb2RlOiBcImhlYWRsZXNzXCIsXG4gICAgICBzb3VyY2U6IG9wdHMuc291cmNlID8/IFwiaGVhZGxlc3Mtc2RrXCIsXG4gICAgICAvLyBIZWFkbGVzcyBtb2RlIG5ldmVyIHJlbmRlcnMgdGhlIGRyb3Bkb3duIERPTSwgYnV0IHRoZSBrZXlib2FyZFxuICAgICAgLy8gY29udHJvbGxlciBzdGlsbCByZWFkcyBgb3B0aW9uc1Bvc2l0aW9uYCB0byBkZWNpZGUgd2hpY2ggdmVydGljYWxcbiAgICAgIC8vIGFycm93IG9wZW5zIHRoZSBkcm9wZG93biBmcm9tIHRoZSBpbnB1dC5cbiAgICAgIG9wdGlvbnNQb3NpdGlvbjogb3B0cy5vcHRpb25zUG9zaXRpb24gPz8gXCJiZWxvd1wiLFxuICAgIH0pO1xuXG4gICAgdGhpcy5yYXdTdGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENvcmVTdGF0ZT4odGhpcy5jb3JlLmdldFN0YXRlKCkpO1xuICAgIC8vIFB1c2ggdGhlIHN0b3JlJ3MgKmN1cnJlbnQqIHN0YXRlLCBub3QgdGhlIHNuYXBzaG90IHRoZSBsaXN0ZW5lciB3YXNcbiAgICAvLyBoYW5kZWQuIFRoZSBjb3JlIG5vdGlmaWVzIGxpc3RlbmVycyBzeW5jaHJvbm91c2x5LCBhbmQgc29tZSBhY3Rpb25zXG4gICAgLy8gdHJpZ2dlciByZWVudHJhbnQgYHN0b3JlLnNldGAgY2FsbHMgKGUuZy4gdHlwaW5nIGEgbm9uLW1hdGNoaW5nIGNoYXJcbiAgICAvLyBkdXJpbmcgcmUtZWRpdCBtYWtlcyB0aGUgY29yZSBzeW5jaHJvbm91c2x5IGV4aXQgcmUtZWRpdCBhbmQga2ljayBvZmYgYVxuICAgIC8vIGZldGNoKS5cbiAgICAvL1xuICAgIC8vIFRoZSBjb3JlJ3Mgc3RvcmUgdXNlZCB0byBkZWxpdmVyIHN1Y2ggYSBuZXN0ZWQgc2V0IGlubGluZSBhbmQgdGhlblxuICAgIC8vIHJlc3VtZSB0aGUgb3V0ZXIgbGlzdGVuZXIgbG9vcCwgc28gYSBsaXN0ZW5lciBjb3VsZCBiZSBoYW5kZWQgYW4gb2xkZXJcbiAgICAvLyBzdGF0ZSAoc3RpbGwgaW4gcmUtZWRpdCkgKmFmdGVyKiBhIG5ld2VyIG9uZSAocmUtZWRpdCBleGl0ZWQpIOKAlCB3aGljaFxuICAgIC8vIHJlc3VycmVjdGVkIGEgc3RhbGUgYGVkaXRpbmdQYXJhbWAgYW5kIHJldHJpZ2dlcmVkIHRoZSBlZGl0b3IncyByZS1lZGl0XG4gICAgLy8gY2FyZXQtcGFyaywgeWFua2luZyB0aGUgY2FyZXQgYmFjayB0byB3aGVyZSByZS1lZGl0aW5nIHN0YXJ0ZWQuIFRoZVxuICAgIC8vIHN0b3JlIG5vdyBxdWV1ZXMgbm90aWZpY2F0aW9ucyBhbmQgZHJhaW5zIHRoZW0gaW4gb3JkZXIsIHNvIHRoYXRcbiAgICAvLyBvdXQtb2Ytb3JkZXIgZGVsaXZlcnkgY2FuIG5vIGxvbmdlciBoYXBwZW4gYXQgdGhlIHNvdXJjZS5cbiAgICAvL1xuICAgIC8vIFJlYWRpbmcgYGdldFN0YXRlKClgIGF0IGVtaXNzaW9uIHRpbWUgaXMga2VwdCBhcyBiZWx0LWFuZC1icmFjZXM6IGl0XG4gICAgLy8gY29zdHMgbm90aGluZyAoZGlzdGluY3RVbnRpbENoYW5nZWQgZG93bnN0cmVhbSBkcm9wcyB0aGUgZHVwbGljYXRlXG4gICAgLy8gZW1pc3Npb25zKSBhbmQga2VlcHMgdGhpcyBicmlkZ2UgY29ycmVjdCBmb3IgYW55IGZ1dHVyZSBjb25zdW1lciB0aGF0XG4gICAgLy8gZW1pdHMgbWlkLWNhc2NhZGUuIFJlYWN0IG5lZWRzIG5laXRoZXIsIHNpbmNlIGl0IGJhdGNoZXMgcmVuZGVycyBhbmRcbiAgICAvLyBnYXRlcyBpdHMgY2FyZXQgZWZmZWN0cyBvbiBkZXBlbmRlbmNpZXMuXG4gICAgdGhpcy51bnN1YnNjcmliZUNvcmUgPSB0aGlzLmNvcmUuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5pc0Rlc3Ryb3llZCkgdGhpcy5yYXdTdGF0ZSQubmV4dCh0aGlzLmNvcmUuZ2V0U3RhdGUoKSk7XG4gICAgfSk7XG5cbiAgICAvLyA9PT0gUGVyLWZpZWxkIG9ic2VydmFibGVzID09PVxuICAgIC8vIEFycmF5LXZhbHVlZCBmaWVsZHMgdXNlIHNoYWxsb3cgZXF1YWxpdHkuIFRoZSB2YW5pbGxhIHN0b3JlIHNwcmVhZHMgb25cbiAgICAvLyBldmVyeSB3cml0ZSAoYHN0b3JlLnNldCh7IGNvbXBsZXRlZFBhcmFtczogWy4uLl0gfSlgKSwgc28gcmVmZXJlbmNlXG4gICAgLy8gZXF1YWxpdHkgd291bGQgcmUtZmlyZSBkb3duc3RyZWFtIHN1YnNjcmliZXJzIG9uIGV2ZXJ5IHN0YXRlIHRpY2sgZXZlblxuICAgIC8vIHdoZW4gdGhlIGFycmF5J3MgY29udGVudHMgYXJlIHVuY2hhbmdlZC4gVGhlIG90aGVyIGZpZWxkcyBhcmVcbiAgICAvLyBwcmltaXRpdmVzIG9yIHN0YWJsZSBvYmplY3QgcmVmZXJlbmNlcywgc28gZGVmYXVsdCBpZGVudGl0eSBlcXVhbGl0eVxuICAgIC8vIHdvcmtzIGZpbmUuXG4gICAgdGhpcy50ZXh0JCA9IGRlcml2ZUZpZWxkKHRoaXMucmF3U3RhdGUkLCAocykgPT4gcy50ZXh0KTtcbiAgICB0aGlzLmNvbXBsZXRlZFBhcmFtcyQgPSBkZXJpdmVGaWVsZCh0aGlzLnJhd1N0YXRlJCwgKHMpID0+IHMuY29tcGxldGVkUGFyYW1zLCBhcnJFcSk7XG4gICAgdGhpcy5za2lwcGVkUGFyYW1zJCA9IGRlcml2ZUZpZWxkKHRoaXMucmF3U3RhdGUkLCAocykgPT4gcy5za2lwcGVkUGFyYW1zLCBhcnJFcSk7XG4gICAgdGhpcy5pZGVudGlmaWVkUGFyYW1zJCA9IGRlcml2ZUZpZWxkKHRoaXMucmF3U3RhdGUkLCAocykgPT4gcy5pZGVudGlmaWVkUGFyYW1zLCBhcnJFcSk7XG4gICAgdGhpcy5zdWdnZXN0aW9uUGlsbHMkID0gZGVyaXZlRmllbGQodGhpcy5yYXdTdGF0ZSQsIChzKSA9PiBzLmFjdGlvbmFibGVTdWdnZXN0aW9ucywgYXJyRXEpO1xuICAgIHRoaXMuc2VnbWVudHMkID0gZGVyaXZlRmllbGQodGhpcy5yYXdTdGF0ZSQsIChzKSA9PiBzLnNlZ21lbnRzLCBhcnJFcSk7XG4gICAgdGhpcy5uZXdQYXJhbUlkJCA9IGRlcml2ZUZpZWxkKHRoaXMucmF3U3RhdGUkLCAocykgPT4gcy5uZXdQYXJhbUlkKTtcbiAgICB0aGlzLnN1Z2dlc3Rpb25zJCA9IGRlcml2ZUZpZWxkKHRoaXMucmF3U3RhdGUkLCAocykgPT4gcy5zdWdnZXN0aW9ucywgYXJyRXEpO1xuICAgIHRoaXMucHJvZHVjdHMkID0gZGVyaXZlRmllbGQodGhpcy5yYXdTdGF0ZSQsIChzKSA9PiBzLnByb2R1Y3RzLCBhcnJFcSk7XG4gICAgdGhpcy5jdXN0b21GaWVsZHMkID0gZGVyaXZlRmllbGQodGhpcy5yYXdTdGF0ZSQsIChzKSA9PiBzLmN1c3RvbUZpZWxkcyk7XG4gICAgdGhpcy5hY3RpdmVJbmRleCQgPSBkZXJpdmVGaWVsZCh0aGlzLnJhd1N0YXRlJCwgKHMpID0+IHMuYWN0aXZlRHJvcGRvd25JbmRleCk7XG4gICAgdGhpcy5pc0xvYWRpbmckID0gZGVyaXZlRmllbGQodGhpcy5yYXdTdGF0ZSQsIGNvbXB1dGVVaUxvYWRpbmcpO1xuICAgIHRoaXMuaXNSZWFkeSQgPSBkZXJpdmVGaWVsZCh0aGlzLnJhd1N0YXRlJCwgKHMpID0+IHMuaXNSZWFkeSk7XG4gICAgdGhpcy5pc0ZvY3VzZWQkID0gZGVyaXZlRmllbGQodGhpcy5yYXdTdGF0ZSQsIChzKSA9PiBzLmlzRm9jdXNlZCk7XG4gICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiQgPSBkZXJpdmVGaWVsZCh0aGlzLnJhd1N0YXRlJCwgKHMpID0+IHMuaXNEcm9wZG93bk9wZW4pO1xuICAgIHRoaXMuaXNBY3RpdmVQaWxsU2VsZWN0ZWQkID0gZGVyaXZlRmllbGQodGhpcy5yYXdTdGF0ZSQsIChzKSA9PiBzLmlzQWN0aXZlUGlsbFNlbGVjdGVkKTtcbiAgICB0aGlzLnBsYWNlaG9sZGVyVGV4dCQgPSBkZXJpdmVGaWVsZCh0aGlzLnJhd1N0YXRlJCwgKHMpID0+IHMucGxhY2Vob2xkZXJUZXh0KTtcbiAgICB0aGlzLmVycm9yJCA9IGRlcml2ZUZpZWxkKHRoaXMucmF3U3RhdGUkLCAocykgPT4gcy5lcnJvcik7XG4gICAgdGhpcy5lZGl0aW5nUGFyYW0kID0gZGVyaXZlRmllbGQodGhpcy5yYXdTdGF0ZSQsIChzKSA9PiBzLmVkaXRpbmdQYXJhbSk7XG4gICAgdGhpcy5lZGl0aW5nQW5jaG9yJCA9IGRlcml2ZUZpZWxkKHRoaXMucmF3U3RhdGUkLCAocykgPT4gcy5lZGl0aW5nQW5jaG9yKTtcbiAgICB0aGlzLmNhcmV0T2Zmc2V0JCA9IGRlcml2ZUZpZWxkKHRoaXMucmF3U3RhdGUkLCAocykgPT4gcy5jYXJldE9mZnNldCk7XG5cbiAgICAvLyA9PT0gQ29tcG9zaXRlIG9ic2VydmFibGVzID09PVxuICAgIC8vIFByb2plY3QgZGlyZWN0bHkgb2ZmIGByYXdTdGF0ZSRgIHdpdGggYSBzaW5nbGUgbWFwKCkgc28gZWFjaCBzdG9yZVxuICAgIC8vIHRpY2sgcHJvZHVjZXMgZXhhY3RseSBPTkUgY29oZXJlbnQgc3RhdGUkIGVtaXNzaW9uLiBVc2luZ1xuICAgIC8vIGBjb21iaW5lTGF0ZXN0YCBvdmVyIHRoZSBwZXItZmllbGQgb2JzZXJ2YWJsZXMgaGVyZSB3b3VsZCBmaXJlIG9uZVxuICAgIC8vIGVtaXNzaW9uIHBlciBpbm5lci1zb3VyY2UgdGljayAodXAgdG8gTiBwZXIgc3RvcmUgdXBkYXRlKSwgYW5kIHRoZVxuICAgIC8vIGVkaXRvci1ob3N0IGRpcmVjdGl2ZSdzIHBvc3QtcHJvbW90ZSByZWZvY3VzIHdvdWxkIHJ1biBhZ2FpbnN0IGFuXG4gICAgLy8gaW50ZXJtZWRpYXRlIHN0YXRlIHdoZXJlIGBuZXdQYXJhbUlkYCB3YXMgc2V0IGJ1dCBgc2VnbWVudHNgIC9cbiAgICAvLyBgY2FyZXRPZmZzZXRgIHN0aWxsIGhlbGQgdGhlaXIgb2xkIHZhbHVlcyDigJQgbGVhdmluZyB0aGUgY2FyZXQgc3R1Y2tcbiAgICAvLyBhdCB0aGUgcHJlLWNsaWNrIHBvc2l0aW9uLlxuICAgIHRoaXMuc3RhdGUkID0gdGhpcy5yYXdTdGF0ZSQucGlwZShcbiAgICAgIG1hcChjb21wdXRlU3RhdGUpLFxuICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSxcbiAgICApO1xuXG4gICAgdGhpcy5vcHRpb25zUG9zaXRpb24kLm5leHQob3B0cy5vcHRpb25zUG9zaXRpb24gPz8gXCJiZWxvd1wiKTtcbiAgICB0aGlzLmRyb3Bkb3duJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMucmF3U3RhdGUkLCB0aGlzLm9wdGlvbnNQb3NpdGlvbiRdKS5waXBlKFxuICAgICAgbWFwKChbcywgb3B0aW9uc1Bvc2l0aW9uXSkgPT4gY29tcHV0ZURyb3Bkb3duKHMsIG9wdGlvbnNQb3NpdGlvbikpLFxuICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSxcbiAgICApO1xuICB9XG5cbiAgLy8gPT09IFJlYWQtb25seSBhY2Nlc3NvcnMgPT09XG5cbiAgLyoqIFN0YWJsZSBBUklBIGxpc3Rib3ggSUQgZm9yIHRoZSBkcm9wZG93bi4gUGFzcyB0byBgPHRleHRhcmVhIGFyaWEtY29udHJvbHM9XCIuLi5cIj5gLiAqL1xuICBnZXQgbGlzdGJveElkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29yZS5saXN0Ym94SWQ7XG4gIH1cblxuICAvKiogV2hldGhlciBgZGVzdHJveSgpYCBoYXMgYmVlbiBjYWxsZWQuIEFmdGVyIGRlc3RydWN0aW9uIGFsbCBhY3Rpb24gbWV0aG9kcyBuby1vcC4gKi9cbiAgZ2V0IGRlc3Ryb3llZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0Rlc3Ryb3llZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTeW5jaHJvbm91cyBzbmFwc2hvdCBvZiB0aGUgY29udHJvbGxlcidzIGN1cnJlbnQgcHVibGljIHN0YXRlLiBNaXJyb3JzXG4gICAqIHRoZSBsYXRlc3QgZW1pc3Npb24gb2YgYHN0YXRlJGAuIFVzZWZ1bCBpbiBjYWxsYmFja3Mgd2hlcmUgeW91IGNhbid0XG4gICAqIGBzdWJzY3JpYmVgIChlLmcuIGluc2lkZSBhbiBldmVudCBoYW5kbGVyKS5cbiAgICovXG4gIGdldFN0YXRlKCk6IEFJQXV0b2NvbXBsZXRlQ29udHJvbGxlclN0YXRlIHtcbiAgICByZXR1cm4gY29tcHV0ZVN0YXRlKHRoaXMucmF3U3RhdGUkLnZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgc3RydWN0dXJlZCBxdWVyeSBhcyB0aGUgU0RLIHVuZGVyc3RhbmRzIGl0IHJpZ2h0IG5vdyDigJQgdGhlIHNhbWVcbiAgICogb2JqZWN0IGBvblJlc3VsdGAgZGVsaXZlcnMgYWZ0ZXIgZWFjaCByZXNwb25zZSBhbmQgYG9uU3VibWl0YCBkZWxpdmVyc1xuICAgKiBvbiBzdWJtaXQuIFJlYWQgaXQgb24gZGVtYW5kIGZyb20gYSBwbGFjZSB0aGF0IGhhcyBubyBldmVudCBoYW5keSAoYVxuICAgKiBjdXN0b20gc3VibWl0IGJ1dHRvbiwgYSBcInNhdmUgZHJhZnRcIiBhY3Rpb24pLlxuICAgKi9cbiAgZ2V0UmVzdWx0KCk6IEF1dG9jb21wbGV0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIHRoaXMuY29yZS5nZXRSZXN1bHQoKTtcbiAgfVxuXG4gIC8vID09PSBBY3Rpb24gbWV0aG9kcyAocGFzcy10aHJvdWdoIHRvIHRoZSBjb3JlKSA9PT1cbiAgLy9cbiAgLy8gRXZlcnkgYWN0aW9uIG1ldGhvZCBiZWdpbnMgd2l0aCBhbiBgaXNEZXN0cm95ZWRgIGd1YXJkIHNvIHRoYXQgY2FsbGVyc1xuICAvLyB3aG8gaG9sZCBhIHN0YWxlIHJlZmVyZW5jZSBhZnRlciBgZGVzdHJveSgpYCBkb24ndCBhY2NpZGVudGFsbHkgdHJpZ2dlclxuICAvLyB3b3JrIG9uIGEgdG9ybi1kb3duIGNvcmUuIFRoZSB2YW5pbGxhIGNvcmUgZG9lcyBub3QgZ2F0ZSBpdHMgb3duIG1ldGhvZHNcbiAgLy8gcG9zdC1kaXNwb3NlIOKAlCBgcmVzZXQoKWAsIGBoYW5kbGVUZXh0Q2hhbmdlKClgLCBhbmQgZnJpZW5kcyB3b3VsZCBzdGlsbFxuICAvLyBzY2hlZHVsZSBmZXRjaGVzIG9yIGZpcmUgSFRUUCByZXF1ZXN0cyBhZ2FpbnN0IGFuIGFib3J0ZWQgY29udHJvbGxlcixcbiAgLy8gYW5kIHRoZSByZXNwb25zZXMgd291bGQgaGF2ZSBub3doZXJlIHRvIHN1cmZhY2UgKHJhd1N0YXRlJCBpcyBhbHJlYWR5XG4gIC8vIGNvbXBsZXRlKS4gVGhlIGd1YXJkIG1ha2VzIHRoZSBKU0RvYy1wcm9taXNlZCBcIm5vLW9wIHNpbGVudGx5XCJcbiAgLy8gc2VtYW50aWNzIGFjdHVhbGx5IHRydWUuXG5cbiAgLyoqIENsZWFyIGFsbCBzdGF0ZSwgcm90YXRlIGBzZXNzaW9uX2lkYCwgYW5kIHJlLWZldGNoLiBDYWxsIGFmdGVyIHN1Ym1pdC4gKi9cbiAgcmVzZXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNEZXN0cm95ZWQpIHJldHVybjtcbiAgICB0aGlzLmNvcmUucmVzZXQoKTtcbiAgfVxuXG4gIC8qKiBQaWNrIGEgZHJvcGRvd24gb3B0aW9uIChvciByZXBsYWNlIHRoZSByZS1lZGl0ZWQgcGFyYW0gaWYgaW4gcmUtZWRpdCBtb2RlKS4gKi9cbiAgc2VsZWN0T3B0aW9uKG9wdGlvbjogU3VnZ2VzdGlvbk9wdGlvbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKSByZXR1cm47XG4gICAgdGhpcy5jb3JlLnNlbGVjdE9wdGlvbihvcHRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFubm91bmNlIGEgcHJvZHVjdCBzZWxlY3Rpb24g4oCUIGZpcmVzIHRoZSBgb25Qcm9kdWN0U2VsZWN0YCBjYWxsYmFjayB0aGVcbiAgICogY29udHJvbGxlciB3YXMgY29uc3RydWN0ZWQgd2l0aC4gYDxhaS1hdXRvY29tcGxldGUtZHJvcGRvd24+YCBjYWxscyB0aGlzXG4gICAqIGZvciB5b3U7IGNvbnN1bWVycyByZW5kZXJpbmcgdGhlaXIgb3duIHN0cmlwIGNhbGwgaXQgdGhlbXNlbHZlcy5cbiAgICpcbiAgICogRW1pdHRpbmcgaXMgdGhlIHdob2xlIGJlaGF2aW91cjogdGhlIFNESyBkZWxpYmVyYXRlbHkgZG9lcyBub3QgbmF2aWdhdGUgdG9cbiAgICogYHByb2R1Y3QudXJsYCwgYmVjYXVzZSBvbmx5IHRoZSBpbnRlZ3JhdGlvbiBrbm93cyB3aGV0aGVyIGEgc2VsZWN0aW9uXG4gICAqIG1lYW5zIFwib3BlbiB0aGUgUERQXCIsIFwiYWRkIHRvIGNhcnRcIiwgb3IgXCJmaWxsIHRoZSBpbnB1dFwiLlxuICAgKi9cbiAgc2VsZWN0UHJvZHVjdChwcm9kdWN0OiBQcm9kdWN0KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNEZXN0cm95ZWQpIHJldHVybjtcbiAgICB0aGlzLmNvcmUuc2VsZWN0UHJvZHVjdChwcm9kdWN0KTtcbiAgfVxuXG4gIC8qKiBQcm9tb3RlIHRoZSBwaWxsIGF0IGBpbmRleGAgdG8gYWN0aXZlIChmcm9udCBvZiB0aGUgbGlzdCkuICovXG4gIHNldEFjdGl2ZVBpbGwoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKSByZXR1cm47XG4gICAgdGhpcy5jb3JlLnNldEFjdGl2ZVBpbGwoaW5kZXgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNraXAgdGhlIGFjdGl2ZSBwaWxsIOKAlCBzYW1lIGFjdGlvbiBhcyBwcmVzc2luZyDihpIgYXQgdGhlIGVuZCBvZiB0aGUgaW5wdXQuXG4gICAqIFRoZSBkcm9wZG93bidzIHNraXAgYnV0dG9uIGNhbGxzIHRoaXM7IGNvbnN1bWVycyByZW5kZXJpbmcgdGhlaXIgb3duIHNraXBcbiAgICogYWZmb3JkYW5jZSBjYWxsIGl0IGRpcmVjdGx5LiBUaGUgc2tpcHBlZCBzdWdnZXN0aW9uIGpvaW5zIGBza2lwcGVkUGFyYW1zJGAuXG4gICAqL1xuICBza2lwQWN0aXZlUGlsbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCkgcmV0dXJuO1xuICAgIHRoaXMuY29yZS5za2lwQWN0aXZlUGlsbCgpO1xuICB9XG5cbiAgLyoqIERyb3AgdGhlIGxhc3QgY29tcGxldGVkIHBhcmFtJ3MgXCJjb21wbGV0ZWRcIiBzdGF0dXMuIFRleHQgc3RheXMgYXMgcGxhaW4gdGV4dC4gKi9cbiAgcmVtb3ZlTGFzdFBhcmFtKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKSByZXR1cm47XG4gICAgdGhpcy5jb3JlLnJlbW92ZUxhc3RQYXJhbSgpO1xuICB9XG5cbiAgLyoqIENsZWFyIHRoZSBzaGltbWVyIGFuaW1hdGlvbiBzdGF0ZSBmb3IgdGhlIG1vc3QtcmVjZW50bHktYWRkZWQgcGFyYW0uICovXG4gIGNsZWFyTmV3UGFyYW1JZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCkgcmV0dXJuO1xuICAgIHRoaXMuY29yZS5jbGVhck5ld1BhcmFtSWQoKTtcbiAgfVxuXG4gIC8qKiBDb250cm9sbGVkLW1vZGUgc2V0dGVyIGZvciBlZGl0b3IgdGV4dC4gKi9cbiAgc2V0VmFsdWUodGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNEZXN0cm95ZWQpIHJldHVybjtcbiAgICB0aGlzLmNvcmUuc2V0VmFsdWUodGV4dCk7XG4gIH1cblxuICAvKiogQ29udHJvbGxlZC1tb2RlIHNldHRlciBmb3IgY29tcGxldGVkIHBhcmFtcy4gKi9cbiAgc2V0Q29tcGxldGVkUGFyYW1zKHBhcmFtczogQ29tcGxldGVkUGFyYW1TdGF0ZVtdKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNEZXN0cm95ZWQpIHJldHVybjtcbiAgICB0aGlzLmNvcmUuc2V0Q29tcGxldGVkUGFyYW1zKHBhcmFtcyk7XG4gIH1cblxuICAvKiogRm9yd2FyZCBwbGFpbi10ZXh0IGlucHV0IGZyb20gdGhlIGNvbnN1bWVyJ3MgYDx0ZXh0YXJlYT5gIHRvIHRoZSBjb3JlLiAqL1xuICBoYW5kbGVUZXh0Q2hhbmdlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCkgcmV0dXJuO1xuICAgIHRoaXMuY29yZS5oYW5kbGVUZXh0Q2hhbmdlKHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBGb3J3YXJkIGtleWJvYXJkIGV2ZW50cyBmcm9tIHRoZSBjb25zdW1lcidzIGA8dGV4dGFyZWE+YCB0byB0aGUgY29yZS4gKi9cbiAgaGFuZGxlS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKSByZXR1cm47XG4gICAgdGhpcy5jb3JlLmhhbmRsZUtleURvd24oZXZlbnQpO1xuICB9XG5cbiAgLyoqIE5vdGlmeSB0aGUgY29yZSBvZiBmb2N1cyBzdGF0ZS4gKi9cbiAgc2V0Rm9jdXNlZChmb2N1c2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNEZXN0cm95ZWQpIHJldHVybjtcbiAgICB0aGlzLmNvcmUuc2V0Rm9jdXNlZChmb2N1c2VkKTtcbiAgfVxuXG4gIC8qKiBFbnRlciByZS1lZGl0IG1vZGUgZm9yIHRoZSBib2xkIHBhcmFtIHdpdGggdGhlIGdpdmVuIGlkLiAqL1xuICBzdGFydEVkaXRpbmdQYXJhbShwYXJhbUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCkgcmV0dXJuO1xuICAgIHRoaXMuY29yZS5zdGFydEVkaXRpbmdQYXJhbShwYXJhbUlkKTtcbiAgfVxuXG4gIC8qKiBFeGl0IHJlLWVkaXQgbW9kZSB3aXRob3V0IGNoYW5naW5nIHRoZSBib2xkIHBhcmFtLiAqL1xuICBleGl0RWRpdE1vZGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNEZXN0cm95ZWQpIHJldHVybjtcbiAgICB0aGlzLmNvcmUuZXhpdEVkaXRNb2RlKCk7XG4gIH1cblxuICAvKiogRm9yd2FyZCBwb3N0LWlucHV0IGNhcmV0IHBvc2l0aW9uIChleHRlbmRzIHRoZSBlZGl0IHRhaWwpLiAqL1xuICBoYW5kbGVDYXJldEFmdGVySW5wdXQob2Zmc2V0OiBudW1iZXIgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNEZXN0cm95ZWQpIHJldHVybjtcbiAgICB0aGlzLmNvcmUuaGFuZGxlQ2FyZXRBZnRlcklucHV0KG9mZnNldCk7XG4gIH1cblxuICAvKiogRm9yd2FyZCBzZWxlY3Rpb24tb25seSBjYXJldCBtb3ZlcyAobWF5IGV4aXQgcmUtZWRpdCkuICovXG4gIGhhbmRsZUNhcmV0TW92ZShvZmZzZXQ6IG51bWJlciB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCkgcmV0dXJuO1xuICAgIHRoaXMuY29yZS5oYW5kbGVDYXJldE1vdmUob2Zmc2V0KTtcbiAgfVxuXG4gIC8qKiBSZXBsYWNlIHRoZSBib2xkIHBhcmFtIGJlaW5nIHJlLWVkaXRlZC4gUmV0dXJucyB0cnVlIHdoZW4gYXBwbGllZC4gKi9cbiAgcmVwbGFjZUVkaXRpbmdSYW5nZShyZXBsYWNlbWVudDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuaXNEZXN0cm95ZWQpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdGhpcy5jb3JlLnJlcGxhY2VFZGl0aW5nUmFuZ2UocmVwbGFjZW1lbnQpO1xuICB9XG5cbiAgLyoqIFNldCB0aGUgaGlnaGxpZ2h0ZWQgb3B0aW9uIGluZGV4ICh0eXBpY2FsbHkgZHJpdmVuIGJ5IGhvdmVyKS4gKi9cbiAgc2V0QWN0aXZlRHJvcGRvd25JbmRleChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNEZXN0cm95ZWQpIHJldHVybjtcbiAgICB0aGlzLmNvcmUuc2V0QWN0aXZlRHJvcGRvd25JbmRleChpbmRleCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHBvaW50ZXIgbGVmdCBvcHRpb24gYGluZGV4YDogY2xlYXIgdGhlIGhpZ2hsaWdodCBpZiBpdCBpcyBzdGlsbCBvbiBpdCxcbiAgICogc28gRW50ZXIgYWZ0ZXJ3YXJkcyBzdWJtaXRzIGluc3RlYWQgb2YgcGlja2luZyBhbiBvcHRpb24gdGhlIHBvaW50ZXIgaXMgbm9cbiAgICogbG9uZ2VyIG9uLiBBIGhpZ2hsaWdodCB0aGUga2V5Ym9hcmQgaGFzIHNpbmNlIG1vdmVkIGlzIGxlZnQgYWxvbmUuXG4gICAqL1xuICBjbGVhckhpZ2hsaWdodChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNEZXN0cm95ZWQpIHJldHVybjtcbiAgICB0aGlzLmNvcmUuY2xlYXJIaWdobGlnaHQoaW5kZXgpO1xuICB9XG5cbiAgLyoqIFBhZ2UgdGhlIGRhdGVwaWNrZXIgYmFjayBvbmUgbW9udGguIE5vLW9wIHVubGVzcyBhIGRhdGUgcGlsbCBpcyBhY3RpdmUuICovXG4gIHNob3dQcmV2aW91c01vbnRoKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKSByZXR1cm47XG4gICAgdGhpcy5jb3JlLnNob3dQcmV2aW91c01vbnRoKCk7XG4gIH1cblxuICAvKiogUGFnZSB0aGUgZGF0ZXBpY2tlciBmb3J3YXJkIG9uZSBtb250aC4gTm8tb3AgdW5sZXNzIGEgZGF0ZSBwaWxsIGlzIGFjdGl2ZS4gKi9cbiAgc2hvd05leHRNb250aCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCkgcmV0dXJuO1xuICAgIHRoaXMuY29yZS5zaG93TmV4dE1vbnRoKCk7XG4gIH1cblxuICAvLyA9PT0gTGlmZWN5Y2xlID09PVxuXG4gIC8qKlxuICAgKiBBcHBseSBydW50aW1lIGNoYW5nZXMgdG8gYSBzdWJzZXQgb2Ygb3B0aW9ucy4gRXZlbnQgY2FsbGJhY2tzXG4gICAqIChgb25TdWJtaXRgLCBgb25SZXN1bHRgLCBgb25FcnJvcmAsIGV0Yy4pIGNhbm5vdCBiZSBzd2FwcGVkIHRoaXMgd2F5IOKAlCB0aGV5IGFyZVxuICAgKiByZWdpc3RlcmVkIG9uY2UgYXQgY29uc3RydWN0aW9uIChtYXRjaGVzIHRoZSBSZWFjdCBob29rJ3MgZGVzaWduKS4gRm9yXG4gICAqIGR5bmFtaWMgZXZlbnQgcmVhY3Rpdml0eSwgc3Vic2NyaWJlIHRvIHRoZSBjb3JyZXNwb25kaW5nIG9ic2VydmFibGVcbiAgICogKGUuZy4gYHRleHQkYCBpbnN0ZWFkIG9mIGBvbkNoYW5nZWApLlxuICAgKi9cbiAgdXBkYXRlKG9wdHM6IEFJQXV0b2NvbXBsZXRlQ29udHJvbGxlclVwZGF0ZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKSByZXR1cm47XG4gICAgdGhpcy5jb3JlLnVwZGF0ZShvcHRzKTtcbiAgICBpZiAob3B0cy5vcHRpb25zUG9zaXRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5vcHRpb25zUG9zaXRpb24kLm5leHQob3B0cy5vcHRpb25zUG9zaXRpb24pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZWxlYXNlIGFsbCByZXNvdXJjZXMg4oCUIHVuc3Vic2NyaWJlcyBmcm9tIHRoZSBjb3JlLCBkZXN0cm95cyB0aGUgY29yZSxcbiAgICogYW5kIGNvbXBsZXRlcyB0aGUgaW50ZXJuYWwgc3RhdGUgc3ViamVjdC4gU2FmZSB0byBjYWxsIG11bHRpcGxlIHRpbWVzLlxuICAgKiBBZnRlciBkZXN0cnVjdGlvbiwgYWN0aW9uIG1ldGhvZHMgbm8tb3Agc2lsZW50bHkuXG4gICAqL1xuICBkZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKSByZXR1cm47XG4gICAgdGhpcy5pc0Rlc3Ryb3llZCA9IHRydWU7XG4gICAgdGhpcy51bnN1YnNjcmliZUNvcmUoKTtcbiAgICB0aGlzLmNvcmUuZGVzdHJveSgpO1xuICAgIHRoaXMucmF3U3RhdGUkLmNvbXBsZXRlKCk7XG4gIH1cbn1cblxuLy8gPT09PT0gUHVyZSBoZWxwZXJzIOKAlCBub3QgcGFydCBvZiB0aGUgcHVibGljIHN1cmZhY2UgPT09PT1cblxuLyoqXG4gKiBTaGFsbG93IGFycmF5IGVxdWFsaXR5LiBUaGUgdmFuaWxsYSBzdG9yZSByZWFzc2lnbnMgYXJyYXkgZmllbGRzIG9uIGV2ZXJ5XG4gKiB3cml0ZSAoYHN0b3JlLnNldCh7IGNvbXBsZXRlZFBhcmFtczogWy4uLnByZXYsIHhdIH0pYCksIHNvIHJlZmVyZW5jZVxuICogZXF1YWxpdHkgYWxvbmUgd291bGQgcmUtZW1pdCBkb3duc3RyZWFtIGV2ZW4gd2hlbiB0aGUgY29udGVudHMgYXJlXG4gKiBpZGVudGljYWwuIFVzZWQgZm9yIGBjb21wbGV0ZWRQYXJhbXMkYCwgYHN1Z2dlc3Rpb25zJGAsIGBzdWdnZXN0aW9uUGlsbHMkYCxcbiAqIGFuZCBgc2VnbWVudHMkYC5cbiAqL1xuZnVuY3Rpb24gYXJyRXE8VD4oYTogcmVhZG9ubHkgVFtdLCBiOiByZWFkb25seSBUW10pOiBib29sZWFuIHtcbiAgaWYgKGEgPT09IGIpIHJldHVybiB0cnVlO1xuICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgIGlmIChhW2ldICE9PSBiW2ldKSByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKiBVSS12aXNpYmxlIGxvYWRpbmcg4oCUIHRoZSBjb3JlJ3MgYGRyb3Bkb3duTG9hZGluZ2AgKHNlZSBpdHMgZG9jcykuICovXG5mdW5jdGlvbiBjb21wdXRlVWlMb2FkaW5nKHM6IENvcmVTdGF0ZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gcy5kcm9wZG93bkxvYWRpbmc7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVTdGF0ZShzOiBDb3JlU3RhdGUpOiBBSUF1dG9jb21wbGV0ZUNvbnRyb2xsZXJTdGF0ZSB7XG4gIHJldHVybiB7XG4gICAgdGV4dDogcy50ZXh0LFxuICAgIGNvbXBsZXRlZFBhcmFtczogcy5jb21wbGV0ZWRQYXJhbXMsXG4gICAgc2tpcHBlZFBhcmFtczogcy5za2lwcGVkUGFyYW1zLFxuICAgIGlkZW50aWZpZWRQYXJhbXM6IHMuaWRlbnRpZmllZFBhcmFtcyxcbiAgICBzdWdnZXN0aW9uUGlsbHM6IHMuYWN0aW9uYWJsZVN1Z2dlc3Rpb25zLFxuICAgIHNlZ21lbnRzOiBzLnNlZ21lbnRzLFxuICAgIG5ld1BhcmFtSWQ6IHMubmV3UGFyYW1JZCxcbiAgICBzdWdnZXN0aW9uczogcy5zdWdnZXN0aW9ucyxcbiAgICBwcm9kdWN0czogcy5wcm9kdWN0cyxcbiAgICBjdXN0b21GaWVsZHM6IHMuY3VzdG9tRmllbGRzLFxuICAgIGFjdGl2ZUluZGV4OiBzLmFjdGl2ZURyb3Bkb3duSW5kZXgsXG4gICAgaXNMb2FkaW5nOiBjb21wdXRlVWlMb2FkaW5nKHMpLFxuICAgIGlzUmVhZHk6IHMuaXNSZWFkeSxcbiAgICBpc0ZvY3VzZWQ6IHMuaXNGb2N1c2VkLFxuICAgIGlzRHJvcGRvd25PcGVuOiBzLmlzRHJvcGRvd25PcGVuLFxuICAgIHBsYWNlaG9sZGVyVGV4dDogcy5wbGFjZWhvbGRlclRleHQsXG4gICAgZXJyb3I6IHMuZXJyb3IsXG4gICAgZWRpdGluZ1BhcmFtOiBzLmVkaXRpbmdQYXJhbSxcbiAgICBlZGl0aW5nSWRlbnRpZmllZDogcy5lZGl0aW5nSWRlbnRpZmllZCxcbiAgICBlZGl0aW5nQW5jaG9yOiBzLmVkaXRpbmdBbmNob3IsXG4gICAgY2FyZXRPZmZzZXQ6IHMuY2FyZXRPZmZzZXQsXG4gIH07XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVEcm9wZG93bihcbiAgczogQ29yZVN0YXRlLFxuICBvcHRpb25zUG9zaXRpb246IFwiYWJvdmVcIiB8IFwiYmVsb3dcIixcbik6IEFJQXV0b2NvbXBsZXRlRHJvcGRvd25TdGF0ZSB7XG4gIGNvbnN0IGVkaXRpbmdQYXJhbSA9IHMuZWRpdGluZ1BhcmFtO1xuICBjb25zdCBlZGl0aW5nSWRlbnRpZmllZCA9IHMuZWRpdGluZ0lkZW50aWZpZWQ7XG4gIGNvbnN0IGRhdGVTZWxlY3Rpb24gPSBkYXRlU2VsZWN0aW9uRm9yKHMpO1xuICBjb25zdCBhY3RpdmVTdWdnZXN0aW9uID0gcy5hY3Rpb25hYmxlU3VnZ2VzdGlvbnNbMF07XG4gIGNvbnN0IGRyb3Bkb3duUGlsbDogU3VnZ2VzdGlvbiB8IG51bGwgPSBlZGl0aW5nUGFyYW1cbiAgICA/IHtcbiAgICAgICAgdHlwZTogZWRpdGluZ1BhcmFtLnN1Z2dlc3Rpb25UeXBlLFxuICAgICAgICB0ZXh0OiBlZGl0aW5nUGFyYW0uc3VnZ2VzdGlvblBsYWNlaG9sZGVyLFxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgb3B0aW9uczogZWRpdGluZ1BhcmFtLm9wdGlvbnMsXG4gICAgICB9XG4gICAgOiBlZGl0aW5nSWRlbnRpZmllZFxuICAgICAgPyAvLyBBbnN3ZXJpbmcgYSBzcGFuIHRoZSB1c2VyIHdyb3RlIHRoZW1zZWx2ZXM6IHRoZSBwaWxsIG5hbWVzIHRoZVxuICAgICAgICAvLyBwYXJhbWV0ZXIgdGhlIHNlcnZlciBtYXRjaGVkIGl0IHRvLCBzbyB0aGUgY2FsZW5kYXIgaXNuJ3QgdW5sYWJlbGxlZC5cbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IGVkaXRpbmdJZGVudGlmaWVkLnR5cGUsXG4gICAgICAgICAgdGV4dDogaWRlbnRpZmllZFBhcmFtTGFiZWwoZWRpdGluZ0lkZW50aWZpZWQudHlwZSksXG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgb3B0aW9uczogW10sXG4gICAgICAgIH1cbiAgICAgIDogbnVsbDtcbiAgY29uc3QgZHJvcGRvd25BY3RpdmVQaWxsID0gcy5kcm9wZG93blN1Z2dlc3Rpb24gPz8gZHJvcGRvd25QaWxsID8/IGFjdGl2ZVN1Z2dlc3Rpb247XG4gIGNvbnN0IGRyb3Bkb3duUGlsbHMgPSBkcm9wZG93blBpbGwgPyBbZHJvcGRvd25QaWxsXSA6IHMuYWN0aW9uYWJsZVN1Z2dlc3Rpb25zO1xuICByZXR1cm4ge1xuICAgIHN1Z2dlc3Rpb25zOiBkcm9wZG93bkFjdGl2ZVBpbGwgPyBbeyAuLi5kcm9wZG93bkFjdGl2ZVBpbGwsIG9wdGlvbnM6IHMuZHJvcGRvd25PcHRpb25zIH1dIDogW10sXG4gICAgYWN0aXZlSW5kZXg6IHMuYWN0aXZlRHJvcGRvd25JbmRleCxcbiAgICBpc09wZW46IHMuaXNEcm9wZG93bk9wZW4sXG4gICAgcGlsbHM6IGRyb3Bkb3duUGlsbHMsXG4gICAgaXNBY3RpdmVQaWxsU2VsZWN0ZWQ6IHMuaXNBY3RpdmVQaWxsU2VsZWN0ZWQsXG4gICAgaXNMb2FkaW5nOiBjb21wdXRlVWlMb2FkaW5nKHMpLFxuICAgIHNrZWxldG9uRXhpdGluZzogcy5za2VsZXRvbkV4aXRpbmcsXG4gICAgaXNJbnB1dEVtcHR5OiBzLnRleHQudHJpbSgpLmxlbmd0aCA9PT0gMCxcbiAgICBwcm9kdWN0czogcy5wcm9kdWN0cyxcbiAgICBpc0VkaXRpbmc6IEJvb2xlYW4oZWRpdGluZ1BhcmFtKSB8fCBCb29sZWFuKGVkaXRpbmdJZGVudGlmaWVkKSxcbiAgICBpblNlbGVjdGlvbkFuaW1hdGlvbjogcy5pblNlbGVjdGlvbkFuaW1hdGlvbixcbiAgICAvLyBEYXRlcGlja2VyLiBgcy5maWx0ZXJlZE9wdGlvbnNgIGFib3ZlIGFscmVhZHkgY2FycmllcyB0aGUgdmlzaWJsZVxuICAgIC8vIG1vbnRoJ3MgY2VsbHMgcmF0aGVyIHRoYW4gdGhlIHN1Z2dlc3Rpb24ncyBvd24gb3B0aW9ucyB3aGVuIHRoaXMgaXNcbiAgICAvLyBcImRhdGVcIiDigJQgdGhlIGNvcmUgc3dhcHBlZCB0aGVtIGluIGl0cyBkZXJpdmUgbGF5ZXIsIHNvIHRoZSBkcm9wZG93biBvbmx5XG4gICAgLy8gaGFzIHRvIGtub3cgd2hpY2ggYm9keSB0byBkcmF3LlxuICAgIGZvcm1hdFR5cGU6IHMuYWN0aXZlRm9ybWF0VHlwZSxcbiAgICBkYXRlVmlldzogcy5kYXRlVmlldyxcbiAgICBzZWxlY3RlZERhdGVJc286IGRhdGVTZWxlY3Rpb24uc2VsZWN0ZWRJc28sXG4gICAgc2VsZWN0ZWREYXRlUmFuZ2U6IGRhdGVTZWxlY3Rpb24uc2VsZWN0ZWRSYW5nZSxcbiAgICBkYXRlUmFuZ2VTdGFydDogZGF0ZVNlbGVjdGlvbi5yYW5nZVN0YXJ0LFxuICAgIG9wdGlvbnNQb3NpdGlvbixcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -29,6 +29,8 @@ export class DateGridComponent {
|
|
|
29
29
|
this.selection = { selectedIso: null, selectedRange: null, rangeStart: null };
|
|
30
30
|
this.select = new EventEmitter();
|
|
31
31
|
this.highlight = new EventEmitter();
|
|
32
|
+
/** The pointer left cell `index` — the dropdown clears a highlight still on it. */
|
|
33
|
+
this.unhighlight = new EventEmitter();
|
|
32
34
|
this.previousMonth = new EventEmitter();
|
|
33
35
|
this.nextMonth = new EventEmitter();
|
|
34
36
|
this.weekdays = WEEKDAY_LABELS;
|
|
@@ -99,10 +101,10 @@ export class DateGridComponent {
|
|
|
99
101
|
}
|
|
100
102
|
}
|
|
101
103
|
DateGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DateGridComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
102
|
-
DateGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DateGridComponent, isStandalone: true, selector: "aia-date-grid", inputs: { options: "options", activeIndex: "activeIndex", listboxId: "listboxId", view: "view", selection: "selection" }, outputs: { select: "select", highlight: "highlight", previousMonth: "previousMonth", nextMonth: "nextMonth" }, ngImport: i0, template: "<div class=\"magicx-aia-datepicker\" data-aia-datepicker=\"\">\n <div class=\"magicx-aia-datepicker-header\">\n <!-- tabIndex -1 for the same reason the skip button is: Tab is already\n bound to walking the dropdown's options. -->\n <button\n type=\"button\"\n tabindex=\"-1\"\n class=\"magicx-aia-datepicker-nav\"\n data-aia-date-prev=\"\"\n aria-label=\"Previous month\"\n (mousedown)=\"preventBlur($event)\"\n (click)=\"previousMonth.emit()\"\n >\n ‹\n </button>\n <span class=\"magicx-aia-datepicker-month\" data-aia-date-month=\"\" aria-live=\"polite\">\n {{ monthLabel }}\n </span>\n <button\n type=\"button\"\n tabindex=\"-1\"\n class=\"magicx-aia-datepicker-nav\"\n data-aia-date-next=\"\"\n aria-label=\"Next month\"\n (mousedown)=\"preventBlur($event)\"\n (click)=\"nextMonth.emit()\"\n >\n ›\n </button>\n </div>\n\n <!-- Decorative: each cell announces its own full date, so repeating the\n column letters to AT adds noise \u2014 and the duplicate T/S would be\n meaningless read aloud anyway. -->\n <div class=\"magicx-aia-datepicker-weekdays\" aria-hidden=\"true\">\n <span class=\"magicx-aia-datepicker-weekday\" *ngFor=\"let label of weekdays\">{{ label }}</span>\n </div>\n\n <div class=\"magicx-aia-datepicker-grid\" data-aia-date-grid=\"\">\n <ng-container *ngFor=\"let option of options; trackBy: trackByCell; let i = index\">\n <!-- Padding for the days before the 1st / after the last. Non-tappable,\n so arrow navigation skips it; hidden from AT so the month reads as\n its own days and nothing else. -->\n <div\n *ngIf=\"dayOf(option) === null; else dayCell\"\n [id]=\"listboxId + '-option-' + i\"\n role=\"option\"\n data-aia-option=\"\"\n data-aia-date-cell=\"\"\n aria-hidden=\"true\"\n [attr.aria-selected]=\"false\"\n tabindex=\"-1\"\n class=\"magicx-aia-date-cell magicx-aia-date-cell--blank\"\n ></div>\n\n <ng-template #dayCell>\n <!-- A day already gone by is de-emphasized, not disabled: it renders\n dimmed but stays every bit as pickable as the rest of the month. -->\n <div\n [id]=\"listboxId + '-option-' + i\"\n role=\"option\"\n data-aia-option=\"\"\n data-aia-date-cell=\"\"\n [attr.aria-selected]=\"i === activeIndex\"\n [attr.aria-label]=\"option.text\"\n tabindex=\"0\"\n class=\"magicx-aia-date-cell magicx-aia-date-cell--day\"\n [class.magicx-aia-date-cell--past]=\"isPast(option)\"\n [class.magicx-aia-date-cell--highlighted]=\"i === activeIndex\"\n [class.magicx-aia-date-cell--today]=\"isToday(option)\"\n [class.magicx-aia-date-cell--in-range]=\"isInRange(option)\"\n [class.magicx-aia-date-cell--selected]=\"isSelected(option)\"\n [class.magicx-aia-date-cell--pressed]=\"i === pressedIndex\"\n (click)=\"onSelect(option, i)\"\n (keydown)=\"onKeyDown($event, option, i)\"\n (mouseenter)=\"highlight.emit(i)\"\n >\n <!-- The cell paints the day number; `option.text` is the full\n committed value (\"March 23 2026\") and is what AT announces,\n since that is what selecting it puts in the input. -->\n <span class=\"magicx-aia-date-cell-number\">{{ dayOf(option) }}</span>\n </div>\n </ng-template>\n </ng-container>\n </div>\n</div>\n", styles: [".magicx-aia-datepicker{display:flex;flex-direction:column;gap:4px;padding:4px 2px}.magicx-aia-datepicker-header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:2px 6px 6px}.magicx-aia-datepicker-month{font-family:inherit;font-size:var(--aia-date-month-font-size, 14px);font-weight:500;line-height:20px;color:var(--aia-option-color-selected, var(--aia-color-text-default, #fff))}.magicx-aia-datepicker-nav{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;border-radius:6px;background:transparent;font-family:inherit;font-size:16px;line-height:1;color:var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb));cursor:pointer;transition:color .15s ease-out,background-color .15s ease-out}.magicx-aia-datepicker-nav:hover{color:var(--aia-option-color-selected, var(--aia-color-text-default, #fff));background:var(--aia-option-bg, transparent)}.magicx-aia-datepicker-weekdays,.magicx-aia-datepicker-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.magicx-aia-datepicker-weekday{padding:2px 0;text-align:center;font-family:inherit;font-size:var(--aia-date-weekday-font-size, 11px);font-weight:500;line-height:16px;color:var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb));opacity:.7}.magicx-aia-date-cell{display:flex;align-items:center;justify-content:center;min-width:0;height:var(--aia-date-row-height, 28px);font-family:inherit;font-size:var(--aia-date-cell-font-size, 13px);font-weight:450;line-height:20px;color:var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb))}.magicx-aia-date-cell-number{display:flex;align-items:center;justify-content:center;width:var(--aia-date-cell-size, 26px);height:var(--aia-date-cell-size, 26px);border-radius:6px}.magicx-aia-date-cell--day{cursor:pointer}.magicx-aia-date-cell--blank{cursor:default}.magicx-aia-date-cell--past{opacity:.35}.magicx-aia-date-cell--day:hover .magicx-aia-date-cell-number,.magicx-aia-date-cell--highlighted .magicx-aia-date-cell-number{color:var(--aia-option-color-selected, var(--aia-color-text-default, #fff));background:var(--aia-option-bg, transparent);font-weight:500}.magicx-aia-date-cell--today .magicx-aia-date-cell-number{box-shadow:inset 0 0 0 1px var(--aia-date-today-ring, var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb)))}.magicx-aia-date-cell--in-range{background:var(--aia-date-range-bg, rgba(var(--aia-streak-rgb, 255, 255, 255), .06))}.magicx-aia-date-cell--selected .magicx-aia-date-cell-number{color:var(--aia-option-color-selected, var(--aia-color-text-default, #fff));background:var(--aia-date-selected-bg, rgba(var(--aia-streak-rgb, 255, 255, 255), .12));font-weight:500}.magicx-aia-date-cell--pressed .magicx-aia-date-cell-number{opacity:.8;background:rgba(var(--aia-streak-rgb, 255, 255, 255),.06)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
104
|
+
DateGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DateGridComponent, isStandalone: true, selector: "aia-date-grid", inputs: { options: "options", activeIndex: "activeIndex", listboxId: "listboxId", view: "view", selection: "selection" }, outputs: { select: "select", highlight: "highlight", unhighlight: "unhighlight", previousMonth: "previousMonth", nextMonth: "nextMonth" }, ngImport: i0, template: "<div class=\"magicx-aia-datepicker\" data-aia-datepicker=\"\">\n <div class=\"magicx-aia-datepicker-header\">\n <!-- tabIndex -1 for the same reason the skip button is: Tab is already\n bound to walking the dropdown's options. -->\n <button\n type=\"button\"\n tabindex=\"-1\"\n class=\"magicx-aia-datepicker-nav\"\n data-aia-date-prev=\"\"\n aria-label=\"Previous month\"\n (mousedown)=\"preventBlur($event)\"\n (click)=\"previousMonth.emit()\"\n >\n ‹\n </button>\n <span class=\"magicx-aia-datepicker-month\" data-aia-date-month=\"\" aria-live=\"polite\">\n {{ monthLabel }}\n </span>\n <button\n type=\"button\"\n tabindex=\"-1\"\n class=\"magicx-aia-datepicker-nav\"\n data-aia-date-next=\"\"\n aria-label=\"Next month\"\n (mousedown)=\"preventBlur($event)\"\n (click)=\"nextMonth.emit()\"\n >\n ›\n </button>\n </div>\n\n <!-- Decorative: each cell announces its own full date, so repeating the\n column letters to AT adds noise \u2014 and the duplicate T/S would be\n meaningless read aloud anyway. -->\n <div class=\"magicx-aia-datepicker-weekdays\" aria-hidden=\"true\">\n <span class=\"magicx-aia-datepicker-weekday\" *ngFor=\"let label of weekdays\">{{ label }}</span>\n </div>\n\n <div class=\"magicx-aia-datepicker-grid\" data-aia-date-grid=\"\">\n <ng-container *ngFor=\"let option of options; trackBy: trackByCell; let i = index\">\n <!-- Padding for the days before the 1st / after the last. Non-tappable,\n so arrow navigation skips it; hidden from AT so the month reads as\n its own days and nothing else. -->\n <div\n *ngIf=\"dayOf(option) === null; else dayCell\"\n [id]=\"listboxId + '-option-' + i\"\n role=\"option\"\n data-aia-option=\"\"\n data-aia-date-cell=\"\"\n aria-hidden=\"true\"\n [attr.aria-selected]=\"false\"\n tabindex=\"-1\"\n class=\"magicx-aia-date-cell magicx-aia-date-cell--blank\"\n ></div>\n\n <ng-template #dayCell>\n <!-- A day already gone by is de-emphasized, not disabled: it renders\n dimmed but stays every bit as pickable as the rest of the month. -->\n <div\n [id]=\"listboxId + '-option-' + i\"\n role=\"option\"\n data-aia-option=\"\"\n data-aia-date-cell=\"\"\n [attr.aria-selected]=\"i === activeIndex\"\n [attr.aria-label]=\"option.text\"\n tabindex=\"0\"\n class=\"magicx-aia-date-cell magicx-aia-date-cell--day\"\n [class.magicx-aia-date-cell--past]=\"isPast(option)\"\n [class.magicx-aia-date-cell--highlighted]=\"i === activeIndex\"\n [class.magicx-aia-date-cell--today]=\"isToday(option)\"\n [class.magicx-aia-date-cell--in-range]=\"isInRange(option)\"\n [class.magicx-aia-date-cell--selected]=\"isSelected(option)\"\n [class.magicx-aia-date-cell--pressed]=\"i === pressedIndex\"\n (click)=\"onSelect(option, i)\"\n (keydown)=\"onKeyDown($event, option, i)\"\n (mouseenter)=\"highlight.emit(i)\"\n (mouseleave)=\"unhighlight.emit(i)\"\n >\n <!-- The cell paints the day number; `option.text` is the full\n committed value (\"March 23 2026\") and is what AT announces,\n since that is what selecting it puts in the input. -->\n <span class=\"magicx-aia-date-cell-number\">{{ dayOf(option) }}</span>\n </div>\n </ng-template>\n </ng-container>\n </div>\n</div>\n", styles: [".magicx-aia-datepicker{display:flex;flex-direction:column;gap:4px;padding:4px 2px}.magicx-aia-datepicker-header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:2px 6px 6px}.magicx-aia-datepicker-month{font-family:inherit;font-size:var(--aia-date-month-font-size, 14px);font-weight:500;line-height:20px;color:var(--aia-option-color-selected, var(--aia-color-text-default, #fff))}.magicx-aia-datepicker-nav{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;border-radius:6px;background:transparent;font-family:inherit;font-size:16px;line-height:1;color:var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb));cursor:pointer;transition:color .15s ease-out,background-color .15s ease-out}.magicx-aia-datepicker-nav:hover{color:var(--aia-option-color-selected, var(--aia-color-text-default, #fff));background:var(--aia-option-bg, transparent)}.magicx-aia-datepicker-weekdays,.magicx-aia-datepicker-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.magicx-aia-datepicker-weekday{padding:2px 0;text-align:center;font-family:inherit;font-size:var(--aia-date-weekday-font-size, 11px);font-weight:500;line-height:16px;color:var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb));opacity:.7}.magicx-aia-date-cell{display:flex;align-items:center;justify-content:center;min-width:0;height:var(--aia-date-row-height, 28px);font-family:inherit;font-size:var(--aia-date-cell-font-size, 13px);font-weight:450;line-height:20px;color:var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb))}.magicx-aia-date-cell-number{display:flex;align-items:center;justify-content:center;width:var(--aia-date-cell-size, 26px);height:var(--aia-date-cell-size, 26px);border-radius:6px}.magicx-aia-date-cell--day{cursor:pointer}.magicx-aia-date-cell--blank{cursor:default}.magicx-aia-date-cell--past{opacity:.35}.magicx-aia-date-cell--day:hover .magicx-aia-date-cell-number,.magicx-aia-date-cell--highlighted .magicx-aia-date-cell-number{color:var(--aia-option-color-selected, var(--aia-color-text-default, #fff));background:var(--aia-option-bg, transparent);font-weight:500}.magicx-aia-date-cell--today .magicx-aia-date-cell-number{box-shadow:inset 0 0 0 1px var(--aia-date-today-ring, var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb)))}.magicx-aia-date-cell--in-range{background:var(--aia-date-range-bg, rgba(var(--aia-streak-rgb, 255, 255, 255), .06))}.magicx-aia-date-cell--selected .magicx-aia-date-cell-number{color:var(--aia-option-color-selected, var(--aia-color-text-default, #fff));background:var(--aia-date-selected-bg, rgba(var(--aia-streak-rgb, 255, 255, 255), .12));font-weight:500}.magicx-aia-date-cell--pressed .magicx-aia-date-cell-number{opacity:.8;background:rgba(var(--aia-streak-rgb, 255, 255, 255),.06)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
103
105
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DateGridComponent, decorators: [{
|
|
104
106
|
type: Component,
|
|
105
|
-
args: [{ selector: "aia-date-grid", standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"magicx-aia-datepicker\" data-aia-datepicker=\"\">\n <div class=\"magicx-aia-datepicker-header\">\n <!-- tabIndex -1 for the same reason the skip button is: Tab is already\n bound to walking the dropdown's options. -->\n <button\n type=\"button\"\n tabindex=\"-1\"\n class=\"magicx-aia-datepicker-nav\"\n data-aia-date-prev=\"\"\n aria-label=\"Previous month\"\n (mousedown)=\"preventBlur($event)\"\n (click)=\"previousMonth.emit()\"\n >\n ‹\n </button>\n <span class=\"magicx-aia-datepicker-month\" data-aia-date-month=\"\" aria-live=\"polite\">\n {{ monthLabel }}\n </span>\n <button\n type=\"button\"\n tabindex=\"-1\"\n class=\"magicx-aia-datepicker-nav\"\n data-aia-date-next=\"\"\n aria-label=\"Next month\"\n (mousedown)=\"preventBlur($event)\"\n (click)=\"nextMonth.emit()\"\n >\n ›\n </button>\n </div>\n\n <!-- Decorative: each cell announces its own full date, so repeating the\n column letters to AT adds noise \u2014 and the duplicate T/S would be\n meaningless read aloud anyway. -->\n <div class=\"magicx-aia-datepicker-weekdays\" aria-hidden=\"true\">\n <span class=\"magicx-aia-datepicker-weekday\" *ngFor=\"let label of weekdays\">{{ label }}</span>\n </div>\n\n <div class=\"magicx-aia-datepicker-grid\" data-aia-date-grid=\"\">\n <ng-container *ngFor=\"let option of options; trackBy: trackByCell; let i = index\">\n <!-- Padding for the days before the 1st / after the last. Non-tappable,\n so arrow navigation skips it; hidden from AT so the month reads as\n its own days and nothing else. -->\n <div\n *ngIf=\"dayOf(option) === null; else dayCell\"\n [id]=\"listboxId + '-option-' + i\"\n role=\"option\"\n data-aia-option=\"\"\n data-aia-date-cell=\"\"\n aria-hidden=\"true\"\n [attr.aria-selected]=\"false\"\n tabindex=\"-1\"\n class=\"magicx-aia-date-cell magicx-aia-date-cell--blank\"\n ></div>\n\n <ng-template #dayCell>\n <!-- A day already gone by is de-emphasized, not disabled: it renders\n dimmed but stays every bit as pickable as the rest of the month. -->\n <div\n [id]=\"listboxId + '-option-' + i\"\n role=\"option\"\n data-aia-option=\"\"\n data-aia-date-cell=\"\"\n [attr.aria-selected]=\"i === activeIndex\"\n [attr.aria-label]=\"option.text\"\n tabindex=\"0\"\n class=\"magicx-aia-date-cell magicx-aia-date-cell--day\"\n [class.magicx-aia-date-cell--past]=\"isPast(option)\"\n [class.magicx-aia-date-cell--highlighted]=\"i === activeIndex\"\n [class.magicx-aia-date-cell--today]=\"isToday(option)\"\n [class.magicx-aia-date-cell--in-range]=\"isInRange(option)\"\n [class.magicx-aia-date-cell--selected]=\"isSelected(option)\"\n [class.magicx-aia-date-cell--pressed]=\"i === pressedIndex\"\n (click)=\"onSelect(option, i)\"\n (keydown)=\"onKeyDown($event, option, i)\"\n (mouseenter)=\"highlight.emit(i)\"\n >\n <!-- The cell paints the day number; `option.text` is the full\n committed value (\"March 23 2026\") and is what AT announces,\n since that is what selecting it puts in the input. -->\n <span class=\"magicx-aia-date-cell-number\">{{ dayOf(option) }}</span>\n </div>\n </ng-template>\n </ng-container>\n </div>\n</div>\n", styles: [".magicx-aia-datepicker{display:flex;flex-direction:column;gap:4px;padding:4px 2px}.magicx-aia-datepicker-header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:2px 6px 6px}.magicx-aia-datepicker-month{font-family:inherit;font-size:var(--aia-date-month-font-size, 14px);font-weight:500;line-height:20px;color:var(--aia-option-color-selected, var(--aia-color-text-default, #fff))}.magicx-aia-datepicker-nav{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;border-radius:6px;background:transparent;font-family:inherit;font-size:16px;line-height:1;color:var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb));cursor:pointer;transition:color .15s ease-out,background-color .15s ease-out}.magicx-aia-datepicker-nav:hover{color:var(--aia-option-color-selected, var(--aia-color-text-default, #fff));background:var(--aia-option-bg, transparent)}.magicx-aia-datepicker-weekdays,.magicx-aia-datepicker-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.magicx-aia-datepicker-weekday{padding:2px 0;text-align:center;font-family:inherit;font-size:var(--aia-date-weekday-font-size, 11px);font-weight:500;line-height:16px;color:var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb));opacity:.7}.magicx-aia-date-cell{display:flex;align-items:center;justify-content:center;min-width:0;height:var(--aia-date-row-height, 28px);font-family:inherit;font-size:var(--aia-date-cell-font-size, 13px);font-weight:450;line-height:20px;color:var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb))}.magicx-aia-date-cell-number{display:flex;align-items:center;justify-content:center;width:var(--aia-date-cell-size, 26px);height:var(--aia-date-cell-size, 26px);border-radius:6px}.magicx-aia-date-cell--day{cursor:pointer}.magicx-aia-date-cell--blank{cursor:default}.magicx-aia-date-cell--past{opacity:.35}.magicx-aia-date-cell--day:hover .magicx-aia-date-cell-number,.magicx-aia-date-cell--highlighted .magicx-aia-date-cell-number{color:var(--aia-option-color-selected, var(--aia-color-text-default, #fff));background:var(--aia-option-bg, transparent);font-weight:500}.magicx-aia-date-cell--today .magicx-aia-date-cell-number{box-shadow:inset 0 0 0 1px var(--aia-date-today-ring, var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb)))}.magicx-aia-date-cell--in-range{background:var(--aia-date-range-bg, rgba(var(--aia-streak-rgb, 255, 255, 255), .06))}.magicx-aia-date-cell--selected .magicx-aia-date-cell-number{color:var(--aia-option-color-selected, var(--aia-color-text-default, #fff));background:var(--aia-date-selected-bg, rgba(var(--aia-streak-rgb, 255, 255, 255), .12));font-weight:500}.magicx-aia-date-cell--pressed .magicx-aia-date-cell-number{opacity:.8;background:rgba(var(--aia-streak-rgb, 255, 255, 255),.06)}\n"] }]
|
|
107
|
+
args: [{ selector: "aia-date-grid", standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"magicx-aia-datepicker\" data-aia-datepicker=\"\">\n <div class=\"magicx-aia-datepicker-header\">\n <!-- tabIndex -1 for the same reason the skip button is: Tab is already\n bound to walking the dropdown's options. -->\n <button\n type=\"button\"\n tabindex=\"-1\"\n class=\"magicx-aia-datepicker-nav\"\n data-aia-date-prev=\"\"\n aria-label=\"Previous month\"\n (mousedown)=\"preventBlur($event)\"\n (click)=\"previousMonth.emit()\"\n >\n ‹\n </button>\n <span class=\"magicx-aia-datepicker-month\" data-aia-date-month=\"\" aria-live=\"polite\">\n {{ monthLabel }}\n </span>\n <button\n type=\"button\"\n tabindex=\"-1\"\n class=\"magicx-aia-datepicker-nav\"\n data-aia-date-next=\"\"\n aria-label=\"Next month\"\n (mousedown)=\"preventBlur($event)\"\n (click)=\"nextMonth.emit()\"\n >\n ›\n </button>\n </div>\n\n <!-- Decorative: each cell announces its own full date, so repeating the\n column letters to AT adds noise \u2014 and the duplicate T/S would be\n meaningless read aloud anyway. -->\n <div class=\"magicx-aia-datepicker-weekdays\" aria-hidden=\"true\">\n <span class=\"magicx-aia-datepicker-weekday\" *ngFor=\"let label of weekdays\">{{ label }}</span>\n </div>\n\n <div class=\"magicx-aia-datepicker-grid\" data-aia-date-grid=\"\">\n <ng-container *ngFor=\"let option of options; trackBy: trackByCell; let i = index\">\n <!-- Padding for the days before the 1st / after the last. Non-tappable,\n so arrow navigation skips it; hidden from AT so the month reads as\n its own days and nothing else. -->\n <div\n *ngIf=\"dayOf(option) === null; else dayCell\"\n [id]=\"listboxId + '-option-' + i\"\n role=\"option\"\n data-aia-option=\"\"\n data-aia-date-cell=\"\"\n aria-hidden=\"true\"\n [attr.aria-selected]=\"false\"\n tabindex=\"-1\"\n class=\"magicx-aia-date-cell magicx-aia-date-cell--blank\"\n ></div>\n\n <ng-template #dayCell>\n <!-- A day already gone by is de-emphasized, not disabled: it renders\n dimmed but stays every bit as pickable as the rest of the month. -->\n <div\n [id]=\"listboxId + '-option-' + i\"\n role=\"option\"\n data-aia-option=\"\"\n data-aia-date-cell=\"\"\n [attr.aria-selected]=\"i === activeIndex\"\n [attr.aria-label]=\"option.text\"\n tabindex=\"0\"\n class=\"magicx-aia-date-cell magicx-aia-date-cell--day\"\n [class.magicx-aia-date-cell--past]=\"isPast(option)\"\n [class.magicx-aia-date-cell--highlighted]=\"i === activeIndex\"\n [class.magicx-aia-date-cell--today]=\"isToday(option)\"\n [class.magicx-aia-date-cell--in-range]=\"isInRange(option)\"\n [class.magicx-aia-date-cell--selected]=\"isSelected(option)\"\n [class.magicx-aia-date-cell--pressed]=\"i === pressedIndex\"\n (click)=\"onSelect(option, i)\"\n (keydown)=\"onKeyDown($event, option, i)\"\n (mouseenter)=\"highlight.emit(i)\"\n (mouseleave)=\"unhighlight.emit(i)\"\n >\n <!-- The cell paints the day number; `option.text` is the full\n committed value (\"March 23 2026\") and is what AT announces,\n since that is what selecting it puts in the input. -->\n <span class=\"magicx-aia-date-cell-number\">{{ dayOf(option) }}</span>\n </div>\n </ng-template>\n </ng-container>\n </div>\n</div>\n", styles: [".magicx-aia-datepicker{display:flex;flex-direction:column;gap:4px;padding:4px 2px}.magicx-aia-datepicker-header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:2px 6px 6px}.magicx-aia-datepicker-month{font-family:inherit;font-size:var(--aia-date-month-font-size, 14px);font-weight:500;line-height:20px;color:var(--aia-option-color-selected, var(--aia-color-text-default, #fff))}.magicx-aia-datepicker-nav{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;border-radius:6px;background:transparent;font-family:inherit;font-size:16px;line-height:1;color:var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb));cursor:pointer;transition:color .15s ease-out,background-color .15s ease-out}.magicx-aia-datepicker-nav:hover{color:var(--aia-option-color-selected, var(--aia-color-text-default, #fff));background:var(--aia-option-bg, transparent)}.magicx-aia-datepicker-weekdays,.magicx-aia-datepicker-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.magicx-aia-datepicker-weekday{padding:2px 0;text-align:center;font-family:inherit;font-size:var(--aia-date-weekday-font-size, 11px);font-weight:500;line-height:16px;color:var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb));opacity:.7}.magicx-aia-date-cell{display:flex;align-items:center;justify-content:center;min-width:0;height:var(--aia-date-row-height, 28px);font-family:inherit;font-size:var(--aia-date-cell-font-size, 13px);font-weight:450;line-height:20px;color:var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb))}.magicx-aia-date-cell-number{display:flex;align-items:center;justify-content:center;width:var(--aia-date-cell-size, 26px);height:var(--aia-date-cell-size, 26px);border-radius:6px}.magicx-aia-date-cell--day{cursor:pointer}.magicx-aia-date-cell--blank{cursor:default}.magicx-aia-date-cell--past{opacity:.35}.magicx-aia-date-cell--day:hover .magicx-aia-date-cell-number,.magicx-aia-date-cell--highlighted .magicx-aia-date-cell-number{color:var(--aia-option-color-selected, var(--aia-color-text-default, #fff));background:var(--aia-option-bg, transparent);font-weight:500}.magicx-aia-date-cell--today .magicx-aia-date-cell-number{box-shadow:inset 0 0 0 1px var(--aia-date-today-ring, var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb)))}.magicx-aia-date-cell--in-range{background:var(--aia-date-range-bg, rgba(var(--aia-streak-rgb, 255, 255, 255), .06))}.magicx-aia-date-cell--selected .magicx-aia-date-cell-number{color:var(--aia-option-color-selected, var(--aia-color-text-default, #fff));background:var(--aia-date-selected-bg, rgba(var(--aia-streak-rgb, 255, 255, 255), .12));font-weight:500}.magicx-aia-date-cell--pressed .magicx-aia-date-cell-number{opacity:.8;background:rgba(var(--aia-streak-rgb, 255, 255, 255),.06)}\n"] }]
|
|
106
108
|
}], propDecorators: { options: [{
|
|
107
109
|
type: Input
|
|
108
110
|
}], activeIndex: [{
|
|
@@ -117,9 +119,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
117
119
|
type: Output
|
|
118
120
|
}], highlight: [{
|
|
119
121
|
type: Output
|
|
122
|
+
}], unhighlight: [{
|
|
123
|
+
type: Output
|
|
120
124
|
}], previousMonth: [{
|
|
121
125
|
type: Output
|
|
122
126
|
}], nextMonth: [{
|
|
123
127
|
type: Output
|
|
124
128
|
}] } });
|
|
125
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1ncmlkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvaW50ZXJuYWwvZGF0ZS1ncmlkL2RhdGUtZ3JpZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2ludGVybmFsL2RhdGUtZ3JpZC9kYXRlLWdyaWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsT0FBTyxFQUNQLE9BQU8sRUFJUCxhQUFhLEVBQ2IsT0FBTyxFQUNQLFVBQVUsRUFFVixnQkFBZ0IsRUFDaEIsY0FBYyxHQUNmLE1BQU0scUNBQXFDLENBQUM7OztBQUU3Qzs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQVVILE1BQU0sT0FBTyxpQkFBaUI7SUFUOUI7UUFVRSx1RkFBdUY7UUFDOUUsWUFBTyxHQUF1QixFQUFFLENBQUM7UUFDakMsZ0JBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNqQixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ2YsU0FBSSxHQUF5QixJQUFJLENBQUM7UUFDM0MsZ0ZBQWdGO1FBQ3ZFLGNBQVMsR0FBa0IsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDO1FBRTlFLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQUM5QyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN2QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDekMsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7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a1RDL0M5QiwyZ0hBc0ZBLGkwRkQ3Q1ksWUFBWTs0RkFNWCxpQkFBaUI7a0JBVDdCLFNBQVM7K0JBQ0UsZUFBZSxjQUNiLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxtQkFDTix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJOzhCQU01QixPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVhLE1BQU07c0JBQXhCLE1BQU07Z0JBQ1ksU0FBUztzQkFBM0IsTUFBTTtnQkFDWSxhQUFhO3NCQUEvQixNQUFNO2dCQUNZLFNBQVM7c0JBQTNCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtcbiAgY2VsbERheSxcbiAgY2VsbElzbyxcbiAgdHlwZSBEYXRlTW9udGhWaWV3LFxuICB0eXBlIERhdGVSYW5nZSxcbiAgdHlwZSBEYXRlU2VsZWN0aW9uLFxuICBkYXRlQ2VsbE1hcmtzLFxuICBpc29EYXRlLFxuICBtb250aExhYmVsLFxuICB0eXBlIFN1Z2dlc3Rpb25PcHRpb24sXG4gIHZpc2libGVEYXRlUmFuZ2UsXG4gIFdFRUtEQVlfTEFCRUxTLFxufSBmcm9tIFwiQG1hZ2ljeC1lbmcvYWktYXV0b2NvbXBsZXRlLXZhbmlsbGFcIjtcblxuLyoqXG4gKiBUaGUgZHJvcGRvd24ncyBjYWxlbmRhciBib2R5LCByZW5kZXJlZCBpbiBwbGFjZSBvZiB0aGUgb3B0aW9ucyBncmlkIHdoZW4gdGhlXG4gKiBhY3RpdmUgcGFyYW1ldGVyIGlzIGEgZGF0ZS4gQW5ndWxhciBhbmFsb2d1ZSBvZiB2YW5pbGxhJ3MgYHJlbmRlckRhdGVHcmlkYFxuICogYW5kIFJlYWN0J3MgYDxEYXRlR3JpZD5gLlxuICpcbiAqIFRoZSBjZWxscyBjYXJyeSB0aGUgc2FtZSBgJHtsaXN0Ym94SWR9LW9wdGlvbi0ke2l9YCBpZHMsIGByb2xlPVwib3B0aW9uXCJgIGFuZFxuICogYGFyaWEtc2VsZWN0ZWRgIHRoZSBvcHRpb25zIGdyaWQgZW1pdHMsIGFuZCB0aGF0IGlzIGxvYWQtYmVhcmluZyByYXRoZXIgdGhhblxuICogY29zbWV0aWM6IHRoZSBrZXlib2FyZCBjb250cm9sbGVyIGxpdmVzIGluIHRoZSB2YW5pbGxhIGNvcmUgZm9yIGFsbCB0aHJlZVxuICogcGFja2FnZXMsIG5hdmlnYXRlcyBieSBpbmRleCBpbnRvIGBmaWx0ZXJlZE9wdGlvbnNgLCBhbmQgY29tbWl0cyBieSBjbGlja2luZ1xuICogYCMke2xpc3Rib3hJZH0tb3B0aW9uLSR7aX1gLiBgZ2V0RWZmZWN0aXZlQ29sdW1uc2AgYWxzbyBtZWFzdXJlcyB0aGUgbGl2ZVxuICogYGdyaWQtdGVtcGxhdGUtY29sdW1uc2Agb2Ygb3B0aW9uLTAncyBwYXJlbnQsIHdoaWNoIGlzIHdoeSB0aGUgNyBjb2x1bW5zIHNpdFxuICogb24gdGhlIGNlbGwgY29udGFpbmVyIGl0c2VsZiBhbmQgbm90IG9uIGFuIGFuY2VzdG9yLlxuICpcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiYWlhLWRhdGUtZ3JpZFwiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHRlbXBsYXRlVXJsOiBcIi4vZGF0ZS1ncmlkLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi9kYXRlLWdyaWQuY29tcG9uZW50LmNzc1wiXSxcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZUdyaWRDb21wb25lbnQge1xuICAvKiogVGhlIHZpc2libGUgbW9udGgncyBjZWxscy4gVGhlc2UgQVJFIGBmaWx0ZXJlZE9wdGlvbnNgIOKAlCBzZWUgYGJ1aWxkRGF0ZU9wdGlvbnNgLiAqL1xuICBASW5wdXQoKSBvcHRpb25zOiBTdWdnZXN0aW9uT3B0aW9uW10gPSBbXTtcbiAgQElucHV0KCkgYWN0aXZlSW5kZXggPSAtMTtcbiAgQElucHV0KCkgbGlzdGJveElkID0gXCJcIjtcbiAgQElucHV0KCkgdmlldzogRGF0ZU1vbnRoVmlldyB8IG51bGwgPSBudWxsO1xuICAvKiogV2hhdCB0aGUgY2FsZW5kYXIgcGFpbnRzIGFzIGFuc3dlcmVkIOKAlCBzZWUgdGhlIGNvcmUncyBgZGF0ZVNlbGVjdGlvbkZvcmAuICovXG4gIEBJbnB1dCgpIHNlbGVjdGlvbjogRGF0ZVNlbGVjdGlvbiA9IHsgc2VsZWN0ZWRJc286IG51bGwsIHNlbGVjdGVkUmFuZ2U6IG51bGwsIHJhbmdlU3RhcnQ6IG51bGwgfTtcblxuICBAT3V0cHV0KCkgcmVhZG9ubHkgc2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxTdWdnZXN0aW9uT3B0aW9uPigpO1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgaGlnaGxpZ2h0ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSByZWFkb25seSBwcmV2aW91c01vbnRoID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgbmV4dE1vbnRoID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHJlYWRvbmx5IHdlZWtkYXlzID0gV0VFS0RBWV9MQUJFTFM7XG5cbiAgLyoqIEluZGV4IG9mIHRoZSBjZWxsIHNob3dpbmcgYSAxNzBtcyBwcmVzcyBhbmltYXRpb24sIG9yIC0xLiAqL1xuICBwcmVzc2VkSW5kZXggPSAtMTtcblxuICBnZXQgbW9udGhMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnZpZXcgPyBtb250aExhYmVsKHRoaXMudmlldykgOiBcIlwiO1xuICB9XG5cbiAgZGF5T2Yob3B0aW9uOiBTdWdnZXN0aW9uT3B0aW9uKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgcmV0dXJuIGNlbGxEYXkob3B0aW9uKTtcbiAgfVxuXG4gIGlzVG9kYXkob3B0aW9uOiBTdWdnZXN0aW9uT3B0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGNlbGxJc28ob3B0aW9uKSA9PT0gaXNvRGF0ZShuZXcgRGF0ZSgpKTtcbiAgfVxuXG4gIC8qKiBCZWZvcmUgdG9kYXk6IHJlbmRlcmVkIGRpbW1lZCwgYnV0IGV2ZXJ5IGJpdCBhcyBwaWNrYWJsZSBhcyB0aGUgcmVzdC4gKi9cbiAgaXNQYXN0KG9wdGlvbjogU3VnZ2VzdGlvbk9wdGlvbik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGlzbyA9IGNlbGxJc28ob3B0aW9uKTtcbiAgICAvLyBJU08gc3RyaW5ncyBvcmRlciB0aGUgc2FtZSB3YXkgdGhlIGRhdGVzIHRoZXkgbmFtZSBkby5cbiAgICByZXR1cm4gaXNvICE9IG51bGwgJiYgaXNvIDwgaXNvRGF0ZShuZXcgRGF0ZSgpKTtcbiAgfVxuXG4gIGlzU2VsZWN0ZWQob3B0aW9uOiBTdWdnZXN0aW9uT3B0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGRhdGVDZWxsTWFya3MoY2VsbElzbyhvcHRpb24pLCB7XG4gICAgICBzZWxlY3RlZElzbzogdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRJc28sXG4gICAgICByYW5nZTogdGhpcy5wYWludGVkUmFuZ2UsXG4gICAgfSkuc2VsZWN0ZWQ7XG4gIH1cblxuICAvKiogQmV0d2VlbiB0aGUgdHdvIGVuZHMgb2YgdGhlIHBhaW50ZWQgc3BhbiDigJQgYmFuZGVkLCBub3QgZmlsbGVkLiAqL1xuICBpc0luUmFuZ2Uob3B0aW9uOiBTdWdnZXN0aW9uT3B0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGRhdGVDZWxsTWFya3MoY2VsbElzbyhvcHRpb24pLCB7XG4gICAgICBzZWxlY3RlZElzbzogdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRJc28sXG4gICAgICByYW5nZTogdGhpcy5wYWludGVkUmFuZ2UsXG4gICAgfSkuaW5SYW5nZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGlsZSBhIHN0YXJ0IGlzIHBlbmRpbmcsIHRoZSBzcGFuIHJ1bnMgdG8gd2hhdGV2ZXIgY2VsbCBpcyBoaWdobGlnaHRlZCDigJRcbiAgICogdGhlIGhvdmVyL2Fycm93IHByZXZpZXcgdGhhdCB0ZWxscyB0aGUgdXNlciB0aGUgZmlyc3QgdGFwIHJlZ2lzdGVyZWQuXG4gICAqXG4gICAqIEEgZ2V0dGVyIHJhdGhlciB0aGFuIGEgY2FjaGVkIGZpZWxkOiBgT25QdXNoYCByZS1ydW5zIHRoZSB0ZW1wbGF0ZSdzXG4gICAqIGJpbmRpbmdzIHdoZW5ldmVyIGBvcHRpb25zYCwgYGFjdGl2ZUluZGV4YCBvciBgc2VsZWN0aW9uYCBjaGFuZ2VzLCBhbmQgZWFjaFxuICAgKiBvZiB0aG9zZSBjaGFuZ2VzIHRoaXMgYW5zd2VyLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXQgcGFpbnRlZFJhbmdlKCk6IERhdGVSYW5nZSB8IG51bGwge1xuICAgIHJldHVybiB2aXNpYmxlRGF0ZVJhbmdlKHtcbiAgICAgIHBlbmRpbmdTdGFydDogdGhpcy5zZWxlY3Rpb24ucmFuZ2VTdGFydCxcbiAgICAgIGhpZ2hsaWdodGVkSXNvOiBjZWxsSXNvKHRoaXMub3B0aW9uc1t0aGlzLmFjdGl2ZUluZGV4XSksXG4gICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRSYW5nZSxcbiAgICB9KTtcbiAgfVxuXG4gIG9uU2VsZWN0KG9wdGlvbjogU3VnZ2VzdGlvbk9wdGlvbiwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMucHJlc3NlZEluZGV4ID0gaW5kZXg7XG4gICAgdGhpcy5zZWxlY3QuZW1pdChvcHRpb24pO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5wcmVzc2VkSW5kZXggPSAtMTtcbiAgICB9LCAxNzApO1xuICB9XG5cbiAgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBvcHRpb246IFN1Z2dlc3Rpb25PcHRpb24sIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSBcIkVudGVyXCIgfHwgZXZlbnQua2V5ID09PSBcIiBcIikge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMub25TZWxlY3Qob3B0aW9uLCBpbmRleCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEtlZXBzIHRoZSBpbnB1dCBmb2N1c2VkLCB3aGljaCB0aGUgZHJvcGRvd24ncyB2aXNpYmlsaXR5IGdhdGUgZGVwZW5kcyBvbi4gKi9cbiAgcHJldmVudEJsdXIoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgLy8gUGFkZGluZyBjZWxscyBoYXZlIG5vIGRhdGUgb2YgdGhlaXIgb3duLCBzbyB0aGV5IGtleSBvZmYgcG9zaXRpb24uXG4gIHRyYWNrQnlDZWxsID0gKGluZGV4OiBudW1iZXIsIG9wdGlvbjogU3VnZ2VzdGlvbk9wdGlvbik6IHN0cmluZyA9PlxuICAgIGNlbGxJc28ob3B0aW9uKSA/PyBgcGFkLSR7aW5kZXh9YDtcbn1cbiIsIjxkaXYgY2xhc3M9XCJtYWdpY3gtYWlhLWRhdGVwaWNrZXJcIiBkYXRhLWFpYS1kYXRlcGlja2VyPVwiXCI+XG4gIDxkaXYgY2xhc3M9XCJtYWdpY3gtYWlhLWRhdGVwaWNrZXItaGVhZGVyXCI+XG4gICAgPCEtLSB0YWJJbmRleCAtMSBmb3IgdGhlIHNhbWUgcmVhc29uIHRoZSBza2lwIGJ1dHRvbiBpczogVGFiIGlzIGFscmVhZHlcbiAgICAgICAgIGJvdW5kIHRvIHdhbGtpbmcgdGhlIGRyb3Bkb3duJ3Mgb3B0aW9ucy4gLS0+XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgIGNsYXNzPVwibWFnaWN4LWFpYS1kYXRlcGlja2VyLW5hdlwiXG4gICAgICBkYXRhLWFpYS1kYXRlLXByZXY9XCJcIlxuICAgICAgYXJpYS1sYWJlbD1cIlByZXZpb3VzIG1vbnRoXCJcbiAgICAgIChtb3VzZWRvd24pPVwicHJldmVudEJsdXIoJGV2ZW50KVwiXG4gICAgICAoY2xpY2spPVwicHJldmlvdXNNb250aC5lbWl0KClcIlxuICAgID5cbiAgICAgICZsc2FxdW87XG4gICAgPC9idXR0b24+XG4gICAgPHNwYW4gY2xhc3M9XCJtYWdpY3gtYWlhLWRhdGVwaWNrZXItbW9udGhcIiBkYXRhLWFpYS1kYXRlLW1vbnRoPVwiXCIgYXJpYS1saXZlPVwicG9saXRlXCI+XG4gICAgICB7eyBtb250aExhYmVsIH19XG4gICAgPC9zcGFuPlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICBjbGFzcz1cIm1hZ2ljeC1haWEtZGF0ZXBpY2tlci1uYXZcIlxuICAgICAgZGF0YS1haWEtZGF0ZS1uZXh0PVwiXCJcbiAgICAgIGFyaWEtbGFiZWw9XCJOZXh0IG1vbnRoXCJcbiAgICAgIChtb3VzZWRvd24pPVwicHJldmVudEJsdXIoJGV2ZW50KVwiXG4gICAgICAoY2xpY2spPVwibmV4dE1vbnRoLmVtaXQoKVwiXG4gICAgPlxuICAgICAgJnJzYXF1bztcbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBEZWNvcmF0aXZlOiBlYWNoIGNlbGwgYW5ub3VuY2VzIGl0cyBvd24gZnVsbCBkYXRlLCBzbyByZXBlYXRpbmcgdGhlXG4gICAgICAgY29sdW1uIGxldHRlcnMgdG8gQVQgYWRkcyBub2lzZSDigJQgYW5kIHRoZSBkdXBsaWNhdGUgVC9TIHdvdWxkIGJlXG4gICAgICAgbWVhbmluZ2xlc3MgcmVhZCBhbG91ZCBhbnl3YXkuIC0tPlxuICA8ZGl2IGNsYXNzPVwibWFnaWN4LWFpYS1kYXRlcGlja2VyLXdlZWtkYXlzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJtYWdpY3gtYWlhLWRhdGVwaWNrZXItd2Vla2RheVwiICpuZ0Zvcj1cImxldCBsYWJlbCBvZiB3ZWVrZGF5c1wiPnt7IGxhYmVsIH19PC9zcGFuPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibWFnaWN4LWFpYS1kYXRlcGlja2VyLWdyaWRcIiBkYXRhLWFpYS1kYXRlLWdyaWQ9XCJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uczsgdHJhY2tCeTogdHJhY2tCeUNlbGw7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgIDwhLS0gUGFkZGluZyBmb3IgdGhlIGRheXMgYmVmb3JlIHRoZSAxc3QgLyBhZnRlciB0aGUgbGFzdC4gTm9uLXRhcHBhYmxlLFxuICAgICAgICAgICBzbyBhcnJvdyBuYXZpZ2F0aW9uIHNraXBzIGl0OyBoaWRkZW4gZnJvbSBBVCBzbyB0aGUgbW9udGggcmVhZHMgYXNcbiAgICAgICAgICAgaXRzIG93biBkYXlzIGFuZCBub3RoaW5nIGVsc2UuIC0tPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cImRheU9mKG9wdGlvbikgPT09IG51bGw7IGVsc2UgZGF5Q2VsbFwiXG4gICAgICAgIFtpZF09XCJsaXN0Ym94SWQgKyAnLW9wdGlvbi0nICsgaVwiXG4gICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICBkYXRhLWFpYS1vcHRpb249XCJcIlxuICAgICAgICBkYXRhLWFpYS1kYXRlLWNlbGw9XCJcIlxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cImZhbHNlXCJcbiAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgIGNsYXNzPVwibWFnaWN4LWFpYS1kYXRlLWNlbGwgbWFnaWN4LWFpYS1kYXRlLWNlbGwtLWJsYW5rXCJcbiAgICAgID48L2Rpdj5cblxuICAgICAgPG5nLXRlbXBsYXRlICNkYXlDZWxsPlxuICAgICAgICA8IS0tIEEgZGF5IGFscmVhZHkgZ29uZSBieSBpcyBkZS1lbXBoYXNpemVkLCBub3QgZGlzYWJsZWQ6IGl0IHJlbmRlcnNcbiAgICAgICAgICAgICBkaW1tZWQgYnV0IHN0YXlzIGV2ZXJ5IGJpdCBhcyBwaWNrYWJsZSBhcyB0aGUgcmVzdCBvZiB0aGUgbW9udGguIC0tPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgW2lkXT1cImxpc3Rib3hJZCArICctb3B0aW9uLScgKyBpXCJcbiAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICBkYXRhLWFpYS1vcHRpb249XCJcIlxuICAgICAgICAgIGRhdGEtYWlhLWRhdGUtY2VsbD1cIlwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJpID09PSBhY3RpdmVJbmRleFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJvcHRpb24udGV4dFwiXG4gICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICBjbGFzcz1cIm1hZ2ljeC1haWEtZGF0ZS1jZWxsIG1hZ2ljeC1haWEtZGF0ZS1jZWxsLS1kYXlcIlxuICAgICAgICAgIFtjbGFzcy5tYWdpY3gtYWlhLWRhdGUtY2VsbC0tcGFzdF09XCJpc1Bhc3Qob3B0aW9uKVwiXG4gICAgICAgICAgW2NsYXNzLm1hZ2ljeC1haWEtZGF0ZS1jZWxsLS1oaWdobGlnaHRlZF09XCJpID09PSBhY3RpdmVJbmRleFwiXG4gICAgICAgICAgW2NsYXNzLm1hZ2ljeC1haWEtZGF0ZS1jZWxsLS10b2RheV09XCJpc1RvZGF5KG9wdGlvbilcIlxuICAgICAgICAgIFtjbGFzcy5tYWdpY3gtYWlhLWRhdGUtY2VsbC0taW4tcmFuZ2VdPVwiaXNJblJhbmdlKG9wdGlvbilcIlxuICAgICAgICAgIFtjbGFzcy5tYWdpY3gtYWlhLWRhdGUtY2VsbC0tc2VsZWN0ZWRdPVwiaXNTZWxlY3RlZChvcHRpb24pXCJcbiAgICAgICAgICBbY2xhc3MubWFnaWN4LWFpYS1kYXRlLWNlbGwtLXByZXNzZWRdPVwiaSA9PT0gcHJlc3NlZEluZGV4XCJcbiAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3Qob3B0aW9uLCBpKVwiXG4gICAgICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudCwgb3B0aW9uLCBpKVwiXG4gICAgICAgICAgKG1vdXNlZW50ZXIpPVwiaGlnaGxpZ2h0LmVtaXQoaSlcIlxuICAgICAgICA+XG4gICAgICAgICAgPCEtLSBUaGUgY2VsbCBwYWludHMgdGhlIGRheSBudW1iZXI7IGBvcHRpb24udGV4dGAgaXMgdGhlIGZ1bGxcbiAgICAgICAgICAgICAgIGNvbW1pdHRlZCB2YWx1ZSAoXCJNYXJjaCAyMyAyMDI2XCIpIGFuZCBpcyB3aGF0IEFUIGFubm91bmNlcyxcbiAgICAgICAgICAgICAgIHNpbmNlIHRoYXQgaXMgd2hhdCBzZWxlY3RpbmcgaXQgcHV0cyBpbiB0aGUgaW5wdXQuIC0tPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWFnaWN4LWFpYS1kYXRlLWNlbGwtbnVtYmVyXCI+e3sgZGF5T2Yob3B0aW9uKSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1ncmlkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvaW50ZXJuYWwvZGF0ZS1ncmlkL2RhdGUtZ3JpZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2ludGVybmFsL2RhdGUtZ3JpZC9kYXRlLWdyaWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsT0FBTyxFQUNQLE9BQU8sRUFJUCxhQUFhLEVBQ2IsT0FBTyxFQUNQLFVBQVUsRUFFVixnQkFBZ0IsRUFDaEIsY0FBYyxHQUNmLE1BQU0scUNBQXFDLENBQUM7OztBQUU3Qzs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQVVILE1BQU0sT0FBTyxpQkFBaUI7SUFUOUI7UUFVRSx1RkFBdUY7UUFDOUUsWUFBTyxHQUF1QixFQUFFLENBQUM7UUFDakMsZ0JBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNqQixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ2YsU0FBSSxHQUF5QixJQUFJLENBQUM7UUFDM0MsZ0ZBQWdGO1FBQ3ZFLGNBQVMsR0FBa0IsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDO1FBRTlFLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQUM5QyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUUxRCxtRkFBbUY7UUFDaEUsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3pDLGtCQUFhLEdBQUcsSUFBSSxZ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RUFBRSxDQUFDO0lBQ3pCLENBQUM7OytHQTFGVSxpQkFBaUI7bUdBQWpCLGlCQUFpQiw4VUMvQzlCLDJqSEF1RkEsaTBGRDlDWSxZQUFZOzRGQU1YLGlCQUFpQjtrQkFUN0IsU0FBUzsrQkFDRSxlQUFlLGNBQ2IsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDLG1CQUNOLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUk7OEJBTTVCLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRWEsTUFBTTtzQkFBeEIsTUFBTTtnQkFDWSxTQUFTO3NCQUEzQixNQUFNO2dCQUdZLFdBQVc7c0JBQTdCLE1BQU07Z0JBQ1ksYUFBYTtzQkFBL0IsTUFBTTtnQkFDWSxTQUFTO3NCQUEzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7XG4gIGNlbGxEYXksXG4gIGNlbGxJc28sXG4gIHR5cGUgRGF0ZU1vbnRoVmlldyxcbiAgdHlwZSBEYXRlUmFuZ2UsXG4gIHR5cGUgRGF0ZVNlbGVjdGlvbixcbiAgZGF0ZUNlbGxNYXJrcyxcbiAgaXNvRGF0ZSxcbiAgbW9udGhMYWJlbCxcbiAgdHlwZSBTdWdnZXN0aW9uT3B0aW9uLFxuICB2aXNpYmxlRGF0ZVJhbmdlLFxuICBXRUVLREFZX0xBQkVMUyxcbn0gZnJvbSBcIkBtYWdpY3gtZW5nL2FpLWF1dG9jb21wbGV0ZS12YW5pbGxhXCI7XG5cbi8qKlxuICogVGhlIGRyb3Bkb3duJ3MgY2FsZW5kYXIgYm9keSwgcmVuZGVyZWQgaW4gcGxhY2Ugb2YgdGhlIG9wdGlvbnMgZ3JpZCB3aGVuIHRoZVxuICogYWN0aXZlIHBhcmFtZXRlciBpcyBhIGRhdGUuIEFuZ3VsYXIgYW5hbG9ndWUgb2YgdmFuaWxsYSdzIGByZW5kZXJEYXRlR3JpZGBcbiAqIGFuZCBSZWFjdCdzIGA8RGF0ZUdyaWQ+YC5cbiAqXG4gKiBUaGUgY2VsbHMgY2FycnkgdGhlIHNhbWUgYCR7bGlzdGJveElkfS1vcHRpb24tJHtpfWAgaWRzLCBgcm9sZT1cIm9wdGlvblwiYCBhbmRcbiAqIGBhcmlhLXNlbGVjdGVkYCB0aGUgb3B0aW9ucyBncmlkIGVtaXRzLCBhbmQgdGhhdCBpcyBsb2FkLWJlYXJpbmcgcmF0aGVyIHRoYW5cbiAqIGNvc21ldGljOiB0aGUga2V5Ym9hcmQgY29udHJvbGxlciBsaXZlcyBpbiB0aGUgdmFuaWxsYSBjb3JlIGZvciBhbGwgdGhyZWVcbiAqIHBhY2thZ2VzLCBuYXZpZ2F0ZXMgYnkgaW5kZXggaW50byBgZmlsdGVyZWRPcHRpb25zYCwgYW5kIGNvbW1pdHMgYnkgY2xpY2tpbmdcbiAqIGAjJHtsaXN0Ym94SWR9LW9wdGlvbi0ke2l9YC4gYGdldEVmZmVjdGl2ZUNvbHVtbnNgIGFsc28gbWVhc3VyZXMgdGhlIGxpdmVcbiAqIGBncmlkLXRlbXBsYXRlLWNvbHVtbnNgIG9mIG9wdGlvbi0wJ3MgcGFyZW50LCB3aGljaCBpcyB3aHkgdGhlIDcgY29sdW1ucyBzaXRcbiAqIG9uIHRoZSBjZWxsIGNvbnRhaW5lciBpdHNlbGYgYW5kIG5vdCBvbiBhbiBhbmNlc3Rvci5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImFpYS1kYXRlLWdyaWRcIixcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICB0ZW1wbGF0ZVVybDogXCIuL2RhdGUtZ3JpZC5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vZGF0ZS1ncmlkLmNvbXBvbmVudC5jc3NcIl0sXG59KVxuZXhwb3J0IGNsYXNzIERhdGVHcmlkQ29tcG9uZW50IHtcbiAgLyoqIFRoZSB2aXNpYmxlIG1vbnRoJ3MgY2VsbHMuIFRoZXNlIEFSRSBgZmlsdGVyZWRPcHRpb25zYCDigJQgc2VlIGBidWlsZERhdGVPcHRpb25zYC4gKi9cbiAgQElucHV0KCkgb3B0aW9uczogU3VnZ2VzdGlvbk9wdGlvbltdID0gW107XG4gIEBJbnB1dCgpIGFjdGl2ZUluZGV4ID0gLTE7XG4gIEBJbnB1dCgpIGxpc3Rib3hJZCA9IFwiXCI7XG4gIEBJbnB1dCgpIHZpZXc6IERhdGVNb250aFZpZXcgfCBudWxsID0gbnVsbDtcbiAgLyoqIFdoYXQgdGhlIGNhbGVuZGFyIHBhaW50cyBhcyBhbnN3ZXJlZCDigJQgc2VlIHRoZSBjb3JlJ3MgYGRhdGVTZWxlY3Rpb25Gb3JgLiAqL1xuICBASW5wdXQoKSBzZWxlY3Rpb246IERhdGVTZWxlY3Rpb24gPSB7IHNlbGVjdGVkSXNvOiBudWxsLCBzZWxlY3RlZFJhbmdlOiBudWxsLCByYW5nZVN0YXJ0OiBudWxsIH07XG5cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8U3VnZ2VzdGlvbk9wdGlvbj4oKTtcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGhpZ2hsaWdodCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIC8qKiBUaGUgcG9pbnRlciBsZWZ0IGNlbGwgYGluZGV4YCDigJQgdGhlIGRyb3Bkb3duIGNsZWFycyBhIGhpZ2hsaWdodCBzdGlsbCBvbiBpdC4gKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHVuaGlnaGxpZ2h0ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSByZWFkb25seSBwcmV2aW91c01vbnRoID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgbmV4dE1vbnRoID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHJlYWRvbmx5IHdlZWtkYXlzID0gV0VFS0RBWV9MQUJFTFM7XG5cbiAgLyoqIEluZGV4IG9mIHRoZSBjZWxsIHNob3dpbmcgYSAxNzBtcyBwcmVzcyBhbmltYXRpb24sIG9yIC0xLiAqL1xuICBwcmVzc2VkSW5kZXggPSAtMTtcblxuICBnZXQgbW9udGhMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnZpZXcgPyBtb250aExhYmVsKHRoaXMudmlldykgOiBcIlwiO1xuICB9XG5cbiAgZGF5T2Yob3B0aW9uOiBTdWdnZXN0aW9uT3B0aW9uKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgcmV0dXJuIGNlbGxEYXkob3B0aW9uKTtcbiAgfVxuXG4gIGlzVG9kYXkob3B0aW9uOiBTdWdnZXN0aW9uT3B0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGNlbGxJc28ob3B0aW9uKSA9PT0gaXNvRGF0ZShuZXcgRGF0ZSgpKTtcbiAgfVxuXG4gIC8qKiBCZWZvcmUgdG9kYXk6IHJlbmRlcmVkIGRpbW1lZCwgYnV0IGV2ZXJ5IGJpdCBhcyBwaWNrYWJsZSBhcyB0aGUgcmVzdC4gKi9cbiAgaXNQYXN0KG9wdGlvbjogU3VnZ2VzdGlvbk9wdGlvbik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGlzbyA9IGNlbGxJc28ob3B0aW9uKTtcbiAgICAvLyBJU08gc3RyaW5ncyBvcmRlciB0aGUgc2FtZSB3YXkgdGhlIGRhdGVzIHRoZXkgbmFtZSBkby5cbiAgICByZXR1cm4gaXNvICE9IG51bGwgJiYgaXNvIDwgaXNvRGF0ZShuZXcgRGF0ZSgpKTtcbiAgfVxuXG4gIGlzU2VsZWN0ZWQob3B0aW9uOiBTdWdnZXN0aW9uT3B0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGRhdGVDZWxsTWFya3MoY2VsbElzbyhvcHRpb24pLCB7XG4gICAgICBzZWxlY3RlZElzbzogdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRJc28sXG4gICAgICByYW5nZTogdGhpcy5wYWludGVkUmFuZ2UsXG4gICAgfSkuc2VsZWN0ZWQ7XG4gIH1cblxuICAvKiogQmV0d2VlbiB0aGUgdHdvIGVuZHMgb2YgdGhlIHBhaW50ZWQgc3BhbiDigJQgYmFuZGVkLCBub3QgZmlsbGVkLiAqL1xuICBpc0luUmFuZ2Uob3B0aW9uOiBTdWdnZXN0aW9uT3B0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGRhdGVDZWxsTWFya3MoY2VsbElzbyhvcHRpb24pLCB7XG4gICAgICBzZWxlY3RlZElzbzogdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRJc28sXG4gICAgICByYW5nZTogdGhpcy5wYWludGVkUmFuZ2UsXG4gICAgfSkuaW5SYW5nZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGlsZSBhIHN0YXJ0IGlzIHBlbmRpbmcsIHRoZSBzcGFuIHJ1bnMgdG8gd2hhdGV2ZXIgY2VsbCBpcyBoaWdobGlnaHRlZCDigJRcbiAgICogdGhlIGhvdmVyL2Fycm93IHByZXZpZXcgdGhhdCB0ZWxscyB0aGUgdXNlciB0aGUgZmlyc3QgdGFwIHJlZ2lzdGVyZWQuXG4gICAqXG4gICAqIEEgZ2V0dGVyIHJhdGhlciB0aGFuIGEgY2FjaGVkIGZpZWxkOiBgT25QdXNoYCByZS1ydW5zIHRoZSB0ZW1wbGF0ZSdzXG4gICAqIGJpbmRpbmdzIHdoZW5ldmVyIGBvcHRpb25zYCwgYGFjdGl2ZUluZGV4YCBvciBgc2VsZWN0aW9uYCBjaGFuZ2VzLCBhbmQgZWFjaFxuICAgKiBvZiB0aG9zZSBjaGFuZ2VzIHRoaXMgYW5zd2VyLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXQgcGFpbnRlZFJhbmdlKCk6IERhdGVSYW5nZSB8IG51bGwge1xuICAgIHJldHVybiB2aXNpYmxlRGF0ZVJhbmdlKHtcbiAgICAgIHBlbmRpbmdTdGFydDogdGhpcy5zZWxlY3Rpb24ucmFuZ2VTdGFydCxcbiAgICAgIGhpZ2hsaWdodGVkSXNvOiBjZWxsSXNvKHRoaXMub3B0aW9uc1t0aGlzLmFjdGl2ZUluZGV4XSksXG4gICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRSYW5nZSxcbiAgICB9KTtcbiAgfVxuXG4gIG9uU2VsZWN0KG9wdGlvbjogU3VnZ2VzdGlvbk9wdGlvbiwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMucHJlc3NlZEluZGV4ID0gaW5kZXg7XG4gICAgdGhpcy5zZWxlY3QuZW1pdChvcHRpb24pO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5wcmVzc2VkSW5kZXggPSAtMTtcbiAgICB9LCAxNzApO1xuICB9XG5cbiAgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBvcHRpb246IFN1Z2dlc3Rpb25PcHRpb24sIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSBcIkVudGVyXCIgfHwgZXZlbnQua2V5ID09PSBcIiBcIikge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMub25TZWxlY3Qob3B0aW9uLCBpbmRleCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEtlZXBzIHRoZSBpbnB1dCBmb2N1c2VkLCB3aGljaCB0aGUgZHJvcGRvd24ncyB2aXNpYmlsaXR5IGdhdGUgZGVwZW5kcyBvbi4gKi9cbiAgcHJldmVudEJsdXIoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgLy8gUGFkZGluZyBjZWxscyBoYXZlIG5vIGRhdGUgb2YgdGhlaXIgb3duLCBzbyB0aGV5IGtleSBvZmYgcG9zaXRpb24uXG4gIHRyYWNrQnlDZWxsID0gKGluZGV4OiBudW1iZXIsIG9wdGlvbjogU3VnZ2VzdGlvbk9wdGlvbik6IHN0cmluZyA9PlxuICAgIGNlbGxJc28ob3B0aW9uKSA/PyBgcGFkLSR7aW5kZXh9YDtcbn1cbiIsIjxkaXYgY2xhc3M9XCJtYWdpY3gtYWlhLWRhdGVwaWNrZXJcIiBkYXRhLWFpYS1kYXRlcGlja2VyPVwiXCI+XG4gIDxkaXYgY2xhc3M9XCJtYWdpY3gtYWlhLWRhdGVwaWNrZXItaGVhZGVyXCI+XG4gICAgPCEtLSB0YWJJbmRleCAtMSBmb3IgdGhlIHNhbWUgcmVhc29uIHRoZSBza2lwIGJ1dHRvbiBpczogVGFiIGlzIGFscmVhZHlcbiAgICAgICAgIGJvdW5kIHRvIHdhbGtpbmcgdGhlIGRyb3Bkb3duJ3Mgb3B0aW9ucy4gLS0+XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgIGNsYXNzPVwibWFnaWN4LWFpYS1kYXRlcGlja2VyLW5hdlwiXG4gICAgICBkYXRhLWFpYS1kYXRlLXByZXY9XCJcIlxuICAgICAgYXJpYS1sYWJlbD1cIlByZXZpb3VzIG1vbnRoXCJcbiAgICAgIChtb3VzZWRvd24pPVwicHJldmVudEJsdXIoJGV2ZW50KVwiXG4gICAgICAoY2xpY2spPVwicHJldmlvdXNNb250aC5lbWl0KClcIlxuICAgID5cbiAgICAgICZsc2FxdW87XG4gICAgPC9idXR0b24+XG4gICAgPHNwYW4gY2xhc3M9XCJtYWdpY3gtYWlhLWRhdGVwaWNrZXItbW9udGhcIiBkYXRhLWFpYS1kYXRlLW1vbnRoPVwiXCIgYXJpYS1saXZlPVwicG9saXRlXCI+XG4gICAgICB7eyBtb250aExhYmVsIH19XG4gICAgPC9zcGFuPlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICBjbGFzcz1cIm1hZ2ljeC1haWEtZGF0ZXBpY2tlci1uYXZcIlxuICAgICAgZGF0YS1haWEtZGF0ZS1uZXh0PVwiXCJcbiAgICAgIGFyaWEtbGFiZWw9XCJOZXh0IG1vbnRoXCJcbiAgICAgIChtb3VzZWRvd24pPVwicHJldmVudEJsdXIoJGV2ZW50KVwiXG4gICAgICAoY2xpY2spPVwibmV4dE1vbnRoLmVtaXQoKVwiXG4gICAgPlxuICAgICAgJnJzYXF1bztcbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBEZWNvcmF0aXZlOiBlYWNoIGNlbGwgYW5ub3VuY2VzIGl0cyBvd24gZnVsbCBkYXRlLCBzbyByZXBlYXRpbmcgdGhlXG4gICAgICAgY29sdW1uIGxldHRlcnMgdG8gQVQgYWRkcyBub2lzZSDigJQgYW5kIHRoZSBkdXBsaWNhdGUgVC9TIHdvdWxkIGJlXG4gICAgICAgbWVhbmluZ2xlc3MgcmVhZCBhbG91ZCBhbnl3YXkuIC0tPlxuICA8ZGl2IGNsYXNzPVwibWFnaWN4LWFpYS1kYXRlcGlja2VyLXdlZWtkYXlzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJtYWdpY3gtYWlhLWRhdGVwaWNrZXItd2Vla2RheVwiICpuZ0Zvcj1cImxldCBsYWJlbCBvZiB3ZWVrZGF5c1wiPnt7IGxhYmVsIH19PC9zcGFuPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibWFnaWN4LWFpYS1kYXRlcGlja2VyLWdyaWRcIiBkYXRhLWFpYS1kYXRlLWdyaWQ9XCJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uczsgdHJhY2tCeTogdHJhY2tCeUNlbGw7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgIDwhLS0gUGFkZGluZyBmb3IgdGhlIGRheXMgYmVmb3JlIHRoZSAxc3QgLyBhZnRlciB0aGUgbGFzdC4gTm9uLXRhcHBhYmxlLFxuICAgICAgICAgICBzbyBhcnJvdyBuYXZpZ2F0aW9uIHNraXBzIGl0OyBoaWRkZW4gZnJvbSBBVCBzbyB0aGUgbW9udGggcmVhZHMgYXNcbiAgICAgICAgICAgaXRzIG93biBkYXlzIGFuZCBub3RoaW5nIGVsc2UuIC0tPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cImRheU9mKG9wdGlvbikgPT09IG51bGw7IGVsc2UgZGF5Q2VsbFwiXG4gICAgICAgIFtpZF09XCJsaXN0Ym94SWQgKyAnLW9wdGlvbi0nICsgaVwiXG4gICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICBkYXRhLWFpYS1vcHRpb249XCJcIlxuICAgICAgICBkYXRhLWFpYS1kYXRlLWNlbGw9XCJcIlxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cImZhbHNlXCJcbiAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgIGNsYXNzPVwibWFnaWN4LWFpYS1kYXRlLWNlbGwgbWFnaWN4LWFpYS1kYXRlLWNlbGwtLWJsYW5rXCJcbiAgICAgID48L2Rpdj5cblxuICAgICAgPG5nLXRlbXBsYXRlICNkYXlDZWxsPlxuICAgICAgICA8IS0tIEEgZGF5IGFscmVhZHkgZ29uZSBieSBpcyBkZS1lbXBoYXNpemVkLCBub3QgZGlzYWJsZWQ6IGl0IHJlbmRlcnNcbiAgICAgICAgICAgICBkaW1tZWQgYnV0IHN0YXlzIGV2ZXJ5IGJpdCBhcyBwaWNrYWJsZSBhcyB0aGUgcmVzdCBvZiB0aGUgbW9udGguIC0tPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgW2lkXT1cImxpc3Rib3hJZCArICctb3B0aW9uLScgKyBpXCJcbiAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICBkYXRhLWFpYS1vcHRpb249XCJcIlxuICAgICAgICAgIGRhdGEtYWlhLWRhdGUtY2VsbD1cIlwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJpID09PSBhY3RpdmVJbmRleFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJvcHRpb24udGV4dFwiXG4gICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICBjbGFzcz1cIm1hZ2ljeC1haWEtZGF0ZS1jZWxsIG1hZ2ljeC1haWEtZGF0ZS1jZWxsLS1kYXlcIlxuICAgICAgICAgIFtjbGFzcy5tYWdpY3gtYWlhLWRhdGUtY2VsbC0tcGFzdF09XCJpc1Bhc3Qob3B0aW9uKVwiXG4gICAgICAgICAgW2NsYXNzLm1hZ2ljeC1haWEtZGF0ZS1jZWxsLS1oaWdobGlnaHRlZF09XCJpID09PSBhY3RpdmVJbmRleFwiXG4gICAgICAgICAgW2NsYXNzLm1hZ2ljeC1haWEtZGF0ZS1jZWxsLS10b2RheV09XCJpc1RvZGF5KG9wdGlvbilcIlxuICAgICAgICAgIFtjbGFzcy5tYWdpY3gtYWlhLWRhdGUtY2VsbC0taW4tcmFuZ2VdPVwiaXNJblJhbmdlKG9wdGlvbilcIlxuICAgICAgICAgIFtjbGFzcy5tYWdpY3gtYWlhLWRhdGUtY2VsbC0tc2VsZWN0ZWRdPVwiaXNTZWxlY3RlZChvcHRpb24pXCJcbiAgICAgICAgICBbY2xhc3MubWFnaWN4LWFpYS1kYXRlLWNlbGwtLXByZXNzZWRdPVwiaSA9PT0gcHJlc3NlZEluZGV4XCJcbiAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3Qob3B0aW9uLCBpKVwiXG4gICAgICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudCwgb3B0aW9uLCBpKVwiXG4gICAgICAgICAgKG1vdXNlZW50ZXIpPVwiaGlnaGxpZ2h0LmVtaXQoaSlcIlxuICAgICAgICAgIChtb3VzZWxlYXZlKT1cInVuaGlnaGxpZ2h0LmVtaXQoaSlcIlxuICAgICAgICA+XG4gICAgICAgICAgPCEtLSBUaGUgY2VsbCBwYWludHMgdGhlIGRheSBudW1iZXI7IGBvcHRpb24udGV4dGAgaXMgdGhlIGZ1bGxcbiAgICAgICAgICAgICAgIGNvbW1pdHRlZCB2YWx1ZSAoXCJNYXJjaCAyMyAyMDI2XCIpIGFuZCBpcyB3aGF0IEFUIGFubm91bmNlcyxcbiAgICAgICAgICAgICAgIHNpbmNlIHRoYXQgaXMgd2hhdCBzZWxlY3RpbmcgaXQgcHV0cyBpbiB0aGUgaW5wdXQuIC0tPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWFnaWN4LWFpYS1kYXRlLWNlbGwtbnVtYmVyXCI+e3sgZGF5T2Yob3B0aW9uKSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -39,6 +39,8 @@ export class SuggestionGridComponent {
|
|
|
39
39
|
this.showCounts = true;
|
|
40
40
|
this.select = new EventEmitter();
|
|
41
41
|
this.highlight = new EventEmitter();
|
|
42
|
+
/** The pointer left option `index` — the dropdown clears a highlight still on it. */
|
|
43
|
+
this.unhighlight = new EventEmitter();
|
|
42
44
|
this.cdr = inject(ChangeDetectorRef);
|
|
43
45
|
/**
|
|
44
46
|
* The measured layout plan. Starts as the measurement-free baseline (one
|
|
@@ -121,10 +123,10 @@ export class SuggestionGridComponent {
|
|
|
121
123
|
}
|
|
122
124
|
}
|
|
123
125
|
SuggestionGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SuggestionGridComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
124
|
-
SuggestionGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SuggestionGridComponent, isStandalone: true, selector: "aia-suggestion-grid", inputs: { options: "options", activeIndex: "activeIndex", listboxId: "listboxId", loading: "loading", groupKey: "groupKey", optionsPosition: "optionsPosition", showIcons: "showIcons", showImages: "showImages", showCounts: "showCounts" }, outputs: { select: "select", highlight: "highlight" }, host: { listeners: { "window:resize": "onResize()" } }, viewQueries: [{ propertyName: "gridComp", first: true, predicate: GridComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- max=\"1fr\": columns share out the full width, so a lone column spans the\n whole options box instead of stopping at 250px. -->\n<aia-grid\n min=\"250px\"\n max=\"1fr\"\n gap=\"0\"\n [scroll]=\"true\"\n [scrollResetKey]=\"groupKey\"\n [template]=\"plan.template\"\n [maxHeight]=\"plan.maxHeight\"\n [group]=\"groupKey\"\n>\n <aia-suggestion-item\n *ngFor=\"let option of options; trackBy: trackByOptionText; let i = index\"\n [option]=\"option\"\n [isHighlighted]=\"i === activeIndex\"\n [id]=\"listboxId + '-option-' + i\"\n [loading]=\"loading\"\n [showIcon]=\"showIcons\"\n [showImage]=\"showImages\"\n [showCount]=\"showCounts\"\n [scrollHint]=\"isScrollHint(i)\"\n [enterDelayMs]=\"enterDelayMs(i)\"\n (select)=\"select.emit($event)\"\n (highlight)=\"highlight.emit(i)\"\n ></aia-suggestion-item>\n</aia-grid>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: GridComponent, selector: "aia-grid", inputs: ["min", "max", "gap", "scroll", "maxHeight", "scrollResetKey", "cols", "template", "group"] }, { kind: "component", type: SuggestionItemComponent, selector: "aia-suggestion-item", inputs: ["option", "isHighlighted", "id", "loading", "showIcon", "showImage", "showCount", "scrollHint", "enterDelayMs"], outputs: ["select", "highlight"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
126
|
+
SuggestionGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SuggestionGridComponent, isStandalone: true, selector: "aia-suggestion-grid", inputs: { options: "options", activeIndex: "activeIndex", listboxId: "listboxId", loading: "loading", groupKey: "groupKey", optionsPosition: "optionsPosition", showIcons: "showIcons", showImages: "showImages", showCounts: "showCounts" }, outputs: { select: "select", highlight: "highlight", unhighlight: "unhighlight" }, host: { listeners: { "window:resize": "onResize()" } }, viewQueries: [{ propertyName: "gridComp", first: true, predicate: GridComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- max=\"1fr\": columns share out the full width, so a lone column spans the\n whole options box instead of stopping at 250px. -->\n<aia-grid\n min=\"250px\"\n max=\"1fr\"\n gap=\"0\"\n [scroll]=\"true\"\n [scrollResetKey]=\"groupKey\"\n [template]=\"plan.template\"\n [maxHeight]=\"plan.maxHeight\"\n [group]=\"groupKey\"\n>\n <aia-suggestion-item\n *ngFor=\"let option of options; trackBy: trackByOptionText; let i = index\"\n [option]=\"option\"\n [isHighlighted]=\"i === activeIndex\"\n [id]=\"listboxId + '-option-' + i\"\n [loading]=\"loading\"\n [showIcon]=\"showIcons\"\n [showImage]=\"showImages\"\n [showCount]=\"showCounts\"\n [scrollHint]=\"isScrollHint(i)\"\n [enterDelayMs]=\"enterDelayMs(i)\"\n (select)=\"select.emit($event)\"\n (highlight)=\"highlight.emit(i)\"\n (unhighlight)=\"unhighlight.emit(i)\"\n ></aia-suggestion-item>\n</aia-grid>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: GridComponent, selector: "aia-grid", inputs: ["min", "max", "gap", "scroll", "maxHeight", "scrollResetKey", "cols", "template", "group"] }, { kind: "component", type: SuggestionItemComponent, selector: "aia-suggestion-item", inputs: ["option", "isHighlighted", "id", "loading", "showIcon", "showImage", "showCount", "scrollHint", "enterDelayMs"], outputs: ["select", "highlight", "unhighlight"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
125
127
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SuggestionGridComponent, decorators: [{
|
|
126
128
|
type: Component,
|
|
127
|
-
args: [{ selector: "aia-suggestion-grid", standalone: true, imports: [CommonModule, GridComponent, SuggestionItemComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<!-- max=\"1fr\": columns share out the full width, so a lone column spans the\n whole options box instead of stopping at 250px. -->\n<aia-grid\n min=\"250px\"\n max=\"1fr\"\n gap=\"0\"\n [scroll]=\"true\"\n [scrollResetKey]=\"groupKey\"\n [template]=\"plan.template\"\n [maxHeight]=\"plan.maxHeight\"\n [group]=\"groupKey\"\n>\n <aia-suggestion-item\n *ngFor=\"let option of options; trackBy: trackByOptionText; let i = index\"\n [option]=\"option\"\n [isHighlighted]=\"i === activeIndex\"\n [id]=\"listboxId + '-option-' + i\"\n [loading]=\"loading\"\n [showIcon]=\"showIcons\"\n [showImage]=\"showImages\"\n [showCount]=\"showCounts\"\n [scrollHint]=\"isScrollHint(i)\"\n [enterDelayMs]=\"enterDelayMs(i)\"\n (select)=\"select.emit($event)\"\n (highlight)=\"highlight.emit(i)\"\n ></aia-suggestion-item>\n</aia-grid>\n" }]
|
|
129
|
+
args: [{ selector: "aia-suggestion-grid", standalone: true, imports: [CommonModule, GridComponent, SuggestionItemComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<!-- max=\"1fr\": columns share out the full width, so a lone column spans the\n whole options box instead of stopping at 250px. -->\n<aia-grid\n min=\"250px\"\n max=\"1fr\"\n gap=\"0\"\n [scroll]=\"true\"\n [scrollResetKey]=\"groupKey\"\n [template]=\"plan.template\"\n [maxHeight]=\"plan.maxHeight\"\n [group]=\"groupKey\"\n>\n <aia-suggestion-item\n *ngFor=\"let option of options; trackBy: trackByOptionText; let i = index\"\n [option]=\"option\"\n [isHighlighted]=\"i === activeIndex\"\n [id]=\"listboxId + '-option-' + i\"\n [loading]=\"loading\"\n [showIcon]=\"showIcons\"\n [showImage]=\"showImages\"\n [showCount]=\"showCounts\"\n [scrollHint]=\"isScrollHint(i)\"\n [enterDelayMs]=\"enterDelayMs(i)\"\n (select)=\"select.emit($event)\"\n (highlight)=\"highlight.emit(i)\"\n (unhighlight)=\"unhighlight.emit(i)\"\n ></aia-suggestion-item>\n</aia-grid>\n" }]
|
|
128
130
|
}], propDecorators: { options: [{
|
|
129
131
|
type: Input
|
|
130
132
|
}], activeIndex: [{
|
|
@@ -147,6 +149,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
147
149
|
type: Output
|
|
148
150
|
}], highlight: [{
|
|
149
151
|
type: Output
|
|
152
|
+
}], unhighlight: [{
|
|
153
|
+
type: Output
|
|
150
154
|
}], gridComp: [{
|
|
151
155
|
type: ViewChild,
|
|
152
156
|
args: [GridComponent, { static: false }]
|
|
@@ -154,4 +158,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
154
158
|
type: HostListener,
|
|
155
159
|
args: ["window:resize"]
|
|
156
160
|
}] } });
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VnZ2VzdGlvbi1ncmlkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvaW50ZXJuYWwvc3VnZ2VzdGlvbi1ncmlkL3N1Z2dlc3Rpb24tZ3JpZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2ludGVybmFsL3N1Z2dlc3Rpb24tZ3JpZC9zdWdnZXN0aW9uLWdyaWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBRU4sTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLDJCQUEyQixFQUMzQixrQkFBa0IsRUFDbEIsMkJBQTJCLEVBRTNCLGtCQUFrQixFQUNsQixlQUFlLEVBRWYsY0FBYyxHQUNmLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOzs7QUFFdkY7Ozs7Ozs7O0dBUUc7QUFTSCxNQUFNLE9BQU8sdUJBQXVCO0lBUnBDO1FBU1csWUFBTyxHQUF1QixFQUFFLENBQUM7UUFDakMsZ0JBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNqQixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ2YsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUN6Qjs7OztXQUlHO1FBQ00sYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUN2Qjs7O1dBR0c7UUFDTSxvQkFBZSxHQUFzQixPQUFPLENBQUM7UUFDdEQseUVBQXlFO1FBQ2hFLGNBQVMsR0FB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bkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFNRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRWEsTUFBTTtzQkFBeEIsTUFBTTtnQkFDWSxTQUFTO3NCQUEzQixNQUFNO2dCQUk4QyxRQUFRO3NCQUE1RCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBbUIzQyxRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7XG4gIHR5cGUgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgaW5qZWN0LFxuICB0eXBlIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICB0eXBlIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1xuICBpc09wdGlvbnNHcmlkTW9iaWxlVmlld3BvcnQsXG4gIG1lYXN1cmVPcHRpb25zR3JpZCxcbiAgbmVlZHNPcHRpb25zR3JpZE1lYXN1cmVtZW50LFxuICB0eXBlIE9wdGlvbnNHcmlkUGxhbixcbiAgb3B0aW9uRW50ZXJEZWxheU1zLFxuICBwbGFuT3B0aW9uc0dyaWQsXG4gIHR5cGUgU3VnZ2VzdGlvbk9wdGlvbixcbiAgc2FtZU9wdGlvblJvd3MsXG59IGZyb20gXCJAbWFnaWN4LWVuZy9haS1hdXRvY29tcGxldGUtdmFuaWxsYVwiO1xuaW1wb3J0IHsgR3JpZENvbXBvbmVudCB9IGZyb20gXCIuLi9sYXlvdXQvZ3JpZC5jb21wb25lbnRcIjtcbmltcG9ydCB7IFN1Z2dlc3Rpb25JdGVtQ29tcG9uZW50IH0gZnJvbSBcIi4uL3N1Z2dlc3Rpb24taXRlbS9zdWdnZXN0aW9uLWl0ZW0uY29tcG9uZW50XCI7XG5cbi8qKlxuICogSW50ZXJuYWwgZ3JpZCBvZiBzdWdnZXN0aW9uIG9wdGlvbnMuIE1pcnJvcnNcbiAqIGBwYWNrYWdlcy9yZWFjdC9zcmMvY29tcG9uZW50cy9TdWdnZXN0aW9uR3JpZC50c3hgIOKAlCBhIHRoaW4gd3JhcHBlciBvdmVyIHRoZVxuICogYEdyaWRgIGxheW91dCBwcmltaXRpdmUgKHdoaWNoIG93bnMgdGhlIGF1dG8tZml0IGNvbHVtbnMgYW5kIHRoZVxuICogY2FwcGVkLWhlaWdodCBzY3JvbGwpLiBJdCBvbmx5IHdpcmVzIGVhY2ggb3B0aW9uIHRvIGl0c1xuICogc2VsZWN0L2hpZ2hsaWdodCBoYW5kbGVycyBhbmQgbGlzdGJveC1zY29wZWQgaWQuXG4gKlxuICogQGludGVybmFsXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJhaWEtc3VnZ2VzdGlvbi1ncmlkXCIsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEdyaWRDb21wb25lbnQsIFN1Z2dlc3Rpb25JdGVtQ29tcG9uZW50XSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHRlbXBsYXRlVXJsOiBcIi4vc3VnZ2VzdGlvbi1ncmlkLmNvbXBvbmVudC5odG1sXCIsXG59KVxuZXhwb3J0IGNsYXNzIFN1Z2dlc3Rpb25HcmlkQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdDaGVja2VkIHtcbiAgQElucHV0KCkgb3B0aW9uczogU3VnZ2VzdGlvbk9wdGlvbltdID0gW107XG4gIEBJbnB1dCgpIGFjdGl2ZUluZGV4ID0gLTE7XG4gIEBJbnB1dCgpIGxpc3Rib3hJZCA9IFwiXCI7XG4gIEBJbnB1dCgpIGxvYWRpbmcgPSBmYWxzZTtcbiAgLyoqXG4gICAqIElkZW50aXR5IG9mIHRoZSBzdWdnZXN0aW9uIHRoZXNlIG9wdGlvbnMgYmVsb25nIHRvLiBXaGVuIGl0IGNoYW5nZXMgdGhlXG4gICAqIGdyaWQgc2Nyb2xscyBiYWNrIHRvIHRoZSB0b3AsIHNvIHRoZSBuZXh0IHBhcmFtZXRlcidzIG9wdGlvbnMgYXJlIHJlYWRcbiAgICogZnJvbSB0aGUgZmlyc3Qgb25lIGluc3RlYWQgb2YgZnJvbSB0aGUgcHJldmlvdXMgbGlzdCdzIHNjcm9sbCBvZmZzZXQuXG4gICAqL1xuICBASW5wdXQoKSBncm91cEtleSA9IFwiXCI7XG4gIC8qKlxuICAgKiBXaGljaCBzaWRlIG9mIHRoZSBpbnB1dCB0aGUgZHJvcGRvd24gb3BlbnMgb24uIFRoZSByb3dzJyBlbnRyYW5jZSBzdGFydHNcbiAgICogZnJvbSB0aGUgaW5wdXQncyBzaWRlIG91dHdhcmQsIHNvIFwiYWJvdmVcIiByZXZlcnNlcyB0aGUgb3JkZXIuXG4gICAqL1xuICBASW5wdXQoKSBvcHRpb25zUG9zaXRpb246IFwiYWJvdmVcIiB8IFwiYmVsb3dcIiA9IFwiYmVsb3dcIjtcbiAgLyoqIFdoZXRoZXIgcm93cyBkcmF3IHRoZWlyIGBpY29uX3N2Z2AgYmVmb3JlIHRoZSB0ZXh0LiBEZWZhdWx0OiB0cnVlLiAqL1xuICBASW5wdXQoKSBzaG93SWNvbnMgPSB0cnVlO1xuICAvKiogV2hldGhlciByb3dzIGRyYXcgdGhlaXIgYGltYWdlX3VybGAgYXMgYSB0aHVtYm5haWwgYmVmb3JlIHRoZSB0ZXh0LiBEZWZhdWx0OiB0cnVlLiAqL1xuICBASW5wdXQoKSBzaG93SW1hZ2VzID0gdHJ1ZTtcbiAgLyoqIFdoZXRoZXIgcm93cyBzaG93IHRoZWlyIGBpdGVtX2NvdW50YCBhdCB0aGUgdHJhaWxpbmcgZWRnZS4gRGVmYXVsdDogdHJ1ZS4gKi9cbiAgQElucHV0KCkgc2hvd0NvdW50cyA9IHRydWU7XG5cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8U3VnZ2VzdGlvbk9wdGlvbj4oKTtcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGhpZ2hsaWdodCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICBAVmlld0NoaWxkKEdyaWRDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KSBwcml2YXRlIGdyaWRDb21wPzogR3JpZENvbXBvbmVudDtcblxuICAvKipcbiAgICogVGhlIG1lYXN1cmVkIGxheW91dCBwbGFuLiBTdGFydHMgYXMgdGhlIG1lYXN1cmVtZW50LWZyZWUgYmFzZWxpbmUgKG9uZVxuICAgKiBjb2x1bW4pOyBhZnRlciBlYWNoIHZpZXcgdXBkYXRlIHRoZSByZW5kZXJlZCByb3dzIGFyZSBtZWFzdXJlZCBhbmQgdGhlXG4gICAqIHBsYW4gdXBncmFkZXMgdG8gdHdvIGNvbHVtbnMgd2hlbiB0aGV5IHByb3ZhYmx5IGZpdCDigJQgc2FtZSB0d28tcGFzcyB0aGVcbiAgICogUmVhY3QgZ3JpZCBkb2VzIHdpdGggaXRzIGxheW91dCBlZmZlY3QsIGFsbCB0aHJvdWdoIGBwbGFuT3B0aW9uc0dyaWRgLlxuICAgKi9cbiAgcGxhbjogT3B0aW9uc0dyaWRQbGFuID0gcGxhbk9wdGlvbnNHcmlkKDAsIGZhbHNlLCBudWxsLCBudWxsKTtcbiAgcHJpdmF0ZSBuZWVkc01lYXN1cmUgPSB0cnVlO1xuICAvKipcbiAgICogVGhlIHJvd3MgdGhlIGN1cnJlbnQgcGxhbiB3YXMgbWVhc3VyZWQgZnJvbS4gQSBza2VsZXRvbiBtaXJyb3JpbmcgdGhlbVxuICAgKiBrZWVwcyB0aGF0IHBsYW4g4oCUIHNlZSBgc2FtZU9wdGlvblJvd3NgLlxuICAgKi9cbiAgcHJpdmF0ZSBtZWFzdXJlZFJvd3M6IFN1Z2dlc3Rpb25PcHRpb25bXSB8IG51bGwgPSBudWxsO1xuXG4gIC8vIFJlLW1lYXN1cmUgd2hlbiB0aGUgdmlld3BvcnQgY2hhbmdlcyAoYnJlYWtwb2ludCBvciB3aWR0aCBib3RoIG1hdHRlciB0b1xuICAvLyB0aGUgdHdvLWNvbHVtbiBmaXQpLlxuICBASG9zdExpc3RlbmVyKFwid2luZG93OnJlc2l6ZVwiKVxuICBvblJlc2l6ZSgpOiB2b2lkIHtcbiAgICB0aGlzLm5lZWRzTWVhc3VyZSA9IHRydWU7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgLy8gT25seSB0aGUgaW5wdXRzIHRoZSBwbGFuIGRlcGVuZHMgb24gcmVzZXQgaXQg4oCUIGFjdGl2ZUluZGV4IGNoYW5nZXMgb25cbiAgICAvLyBldmVyeSBhcnJvdyBrZXkgYW5kIG11c3Qgbm90IGtub2NrIGEgbWVhc3VyZWQgdHdvLWNvbHVtbiBncmlkIGJhY2sgdG9cbiAgICAvLyB0aGUgYmFzZWxpbmUgKHRoZSBSZWFjdCBncmlkJ3MgbGF5b3V0IGVmZmVjdCBleGNsdWRlcyBpdCB0aGUgc2FtZSB3YXkpLlxuICAgIGlmICghY2hhbmdlc1tcIm9wdGlvbnNcIl0gJiYgIWNoYW5nZXNbXCJsb2FkaW5nXCJdKSByZXR1cm47XG4gICAgaWYgKHRoaXMubG9hZGluZyAmJiBzYW1lT3B0aW9uUm93cyh0aGlzLm1lYXN1cmVkUm93cywgdGhpcy5vcHRpb25zKSkgcmV0dXJuO1xuICAgIHRoaXMubWVhc3VyZWRSb3dzID0gdGhpcy5sb2FkaW5nID8gbnVsbCA6IHRoaXMub3B0aW9ucztcbiAgICB0aGlzLm5lZWRzTWVhc3VyZSA9IHRydWU7XG4gICAgLy8gVGhlIHByZS1tZWFzdXJlIGJhc2VsaW5lIGZvciB0aGUgbmV3IGlucHV0cywgc28gdGhlIGZpcnN0IHBhaW50IGlzIHRoZVxuICAgIC8vIHNhbWUgb25lLWNvbHVtbiBsYXlvdXQgdGhlIG90aGVyIHBhY2thZ2VzIHN0YXJ0IGZyb20uXG4gICAgdGhpcy5wbGFuID0gcGxhbk9wdGlvbnNHcmlkKHRoaXMub3B0aW9ucy5sZW5ndGgsIGlzT3B0aW9uc0dyaWRNb2JpbGVWaWV3cG9ydCgpLCBudWxsLCBudWxsKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubmVlZHNNZWFzdXJlKSByZXR1cm47XG4gICAgdGhpcy5uZWVkc01lYXN1cmUgPSBmYWxzZTtcbiAgICBjb25zdCBpc01vYmlsZSA9IGlzT3B0aW9uc0dyaWRNb2JpbGVWaWV3cG9ydCgpO1xuICAgIGNvbnN0IGdyaWQgPSB0aGlzLmdyaWRDb21wPy5ncmlkUmVmPy5uYXRpdmVFbGVtZW50O1xuICAgIC8vIE1lYXN1cmluZyBjbG9uZXMgZXZlcnkgcm93IGFuZCBmb3JjZXMgYSBsYXlvdXQg4oCUIHNraXAgaXQgd2hlbmV2ZXIgdGhlXG4gICAgLy8gcGxhbiB3b3VsZCBpZ25vcmUgdGhlIHJlc3VsdCAobW9iaWxlLCBmZXdlciB0aGFuIGZpdmUgb3B0aW9ucykuXG4gICAgY29uc3Qgc2hvdWxkTWVhc3VyZSA9XG4gICAgICBncmlkICYmICF0aGlzLmxvYWRpbmcgJiYgbmVlZHNPcHRpb25zR3JpZE1lYXN1cmVtZW50KHRoaXMub3B0aW9ucy5sZW5ndGgsIGlzTW9iaWxlKTtcbiAgICBjb25zdCBtZWFzdXJlZCA9IHNob3VsZE1lYXN1cmUgPyBtZWFzdXJlT3B0aW9uc0dyaWQoZ3JpZCkgOiBudWxsO1xuICAgIGNvbnN0IG5leHQgPSBwbGFuT3B0aW9uc0dyaWQoXG4gICAgICB0aGlzLm9wdGlvbnMubGVuZ3RoLFxuICAgICAgaXNNb2JpbGUsXG4gICAgICBtZWFzdXJlZD8ucm93V2lkdGhzID8/IG51bGwsXG4gICAgICBtZWFzdXJlZD8uZ3JpZFdpZHRoID8/IG51bGwsXG4gICAgKTtcbiAgICBjb25zdCB1bmNoYW5nZWQgPVxuICAgICAgbmV4dC50ZW1wbGF0ZSA9PT0gdGhpcy5wbGFuLnRlbXBsYXRlICYmXG4gICAgICBuZXh0Lm1heEhlaWdodCA9PT0gdGhpcy5wbGFuLm1heEhlaWdodCAmJlxuICAgICAgbmV4dC5zY3JvbGxIaW50SW5kaWNlcy5qb2luKCkgPT09IHRoaXMucGxhbi5zY3JvbGxIaW50SW5kaWNlcy5qb2luKCk7XG4gICAgaWYgKHVuY2hhbmdlZCkgcmV0dXJuO1xuICAgIC8vIFRoZSB2aWV3IHdhcyBhbHJlYWR5IGNoZWNrZWQgdGhpcyBjeWNsZSDigJQgYXBwbHkgdGhlIG1lYXN1cmVkIHBsYW4gaW4gYVxuICAgIC8vIGZyZXNoIG1pY3JvdGFzayBzbyBPblB1c2ggcGlja3MgaXQgdXAgd2l0aG91dCBhblxuICAgIC8vIEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkIGVycm9yLlxuICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgIHRoaXMucGxhbiA9IG5leHQ7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlzU2Nyb2xsSGludChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmxvYWRpbmcgJiYgdGhpcy5wbGFuLnNjcm9sbEhpbnRJbmRpY2VzLmluY2x1ZGVzKGluZGV4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydCBkZWxheSBvZiByb3cgYGluZGV4YCdzIGVudHJhbmNlIOKAlCBlYWNoIHJvdyByaXNlcyBpbiBhIGJlYXQgYWZ0ZXJcbiAgICogdGhlIG9uZSBuZWFyZXIgdGhlIGlucHV0LiBTa2VsZXRvbiByb3dzIGZhZGUgaW4gdG9nZXRoZXIgKHRoZXkncmVcbiAgICogcGxhY2Vob2xkZXJzLCBub3QgY29udGVudCBhcnJpdmluZykuXG4gICAqL1xuICBlbnRlckRlbGF5TXMoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgaWYgKHRoaXMubG9hZGluZykgcmV0dXJuIDA7XG4gICAgLy8gQWNyb3NzIHRoZSBjb2x1bW5zIHRoZSBtZWFzdXJlZCBwbGFuIHNldHRsZWQgb24g4oCUIHRoZSB0d28tY29sdW1uXG4gICAgLy8gdXBncmFkZSBvbmx5IGRlY2lkZXMgdGhhdCBhZnRlciB0aGUgcm93cyBleGlzdC5cbiAgICByZXR1cm4gb3B0aW9uRW50ZXJEZWxheU1zKGluZGV4LCB0aGlzLnBsYW4uY29scywgdGhpcy5vcHRpb25zLmxlbmd0aCwgdGhpcy5vcHRpb25zUG9zaXRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBncm91cCBpcyBwYXJ0IG9mIHRoZSBpZGVudGl0eTogYSBuZXcgc3VnZ2VzdGlvbidzIG9wdGlvbnMgYXJlIG5ld1xuICAgKiByb3dzIGFuZCBnZXQgdGhlIGVudHJhbmNlIGFuaW1hdGlvbiBldmVuIHdoZW4gb25lIHNwZWxscyB0aGUgc2FtZSBhcyBhXG4gICAqIHJvdyBhbHJlYWR5IG9uIHNjcmVlbi5cbiAgICovXG4gIHRyYWNrQnlPcHRpb25UZXh0ID0gKF86IG51bWJlciwgb3B0OiBTdWdnZXN0aW9uT3B0aW9uKTogc3RyaW5nID0+IGAke3RoaXMuZ3JvdXBLZXl9XFwwJHtvcHQudGV4dH1gO1xufVxuIiwiPCEtLSBtYXg9XCIxZnJcIjogY29sdW1ucyBzaGFyZSBvdXQgdGhlIGZ1bGwgd2lkdGgsIHNvIGEgbG9uZSBjb2x1bW4gc3BhbnMgdGhlXG4gICAgIHdob2xlIG9wdGlvbnMgYm94IGluc3RlYWQgb2Ygc3RvcHBpbmcgYXQgMjUwcHguIC0tPlxuPGFpYS1ncmlkXG4gIG1pbj1cIjI1MHB4XCJcbiAgbWF4PVwiMWZyXCJcbiAgZ2FwPVwiMFwiXG4gIFtzY3JvbGxdPVwidHJ1ZVwiXG4gIFtzY3JvbGxSZXNldEtleV09XCJncm91cEtleVwiXG4gIFt0ZW1wbGF0ZV09XCJwbGFuLnRlbXBsYXRlXCJcbiAgW21heEhlaWdodF09XCJwbGFuLm1heEhlaWdodFwiXG4gIFtncm91cF09XCJncm91cEtleVwiXG4+XG4gIDxhaWEtc3VnZ2VzdGlvbi1pdGVtXG4gICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zOyB0cmFja0J5OiB0cmFja0J5T3B0aW9uVGV4dDsgbGV0IGkgPSBpbmRleFwiXG4gICAgW29wdGlvbl09XCJvcHRpb25cIlxuICAgIFtpc0hpZ2hsaWdodGVkXT1cImkgPT09IGFjdGl2ZUluZGV4XCJcbiAgICBbaWRdPVwibGlzdGJveElkICsgJy1vcHRpb24tJyArIGlcIlxuICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxuICAgIFtzaG93SWNvbl09XCJzaG93SWNvbnNcIlxuICAgIFtzaG93SW1hZ2VdPVwic2hvd0ltYWdlc1wiXG4gICAgW3Nob3dDb3VudF09XCJzaG93Q291bnRzXCJcbiAgICBbc2Nyb2xsSGludF09XCJpc1Njcm9sbEhpbnQoaSlcIlxuICAgIFtlbnRlckRlbGF5TXNdPVwiZW50ZXJEZWxheU1zKGkpXCJcbiAgICAoc2VsZWN0KT1cInNlbGVjdC5lbWl0KCRldmVudClcIlxuICAgIChoaWdobGlnaHQpPVwiaGlnaGxpZ2h0LmVtaXQoaSlcIlxuICA+PC9haWEtc3VnZ2VzdGlvbi1pdGVtPlxuPC9haWEtZ3JpZD5cbiJdfQ==
|
|
161
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VnZ2VzdGlvbi1ncmlkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvaW50ZXJuYWwvc3VnZ2VzdGlvbi1ncmlkL3N1Z2dlc3Rpb24tZ3JpZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2ludGVybmFsL3N1Z2dlc3Rpb24tZ3JpZC9zdWdnZXN0aW9uLWdyaWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBRU4sTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLDJCQUEyQixFQUMzQixrQkFBa0IsRUFDbEIsMkJBQTJCLEVBRTNCLGtCQUFrQixFQUNsQixlQUFlLEVBRWYsY0FBYyxHQUNmLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOzs7QUFFdkY7Ozs7Ozs7O0dBUUc7QUFTSCxNQUFNLE9BQU8sdUJBQXVCO0lBUnBDO1FBU1csWUFBTyxHQUF1QixFQUFFLENBQUM7UUFDakMsZ0JBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNqQixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ2YsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUN6Qjs7OztXQUlHO1FBQ00sYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUN2Qjs7O1dBR0c7UUFDTSxvQkFBZSxHQUFzQixPQUFPLENBQUM7UUFDdEQseUVBQXlFO1FBQ2hFLGNBQVMsR0FB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QixDQUFDLElBQUk7OEJBSTVCLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQU1HLFFBQVE7c0JBQWhCLEtBQUs7Z0JBS0csZUFBZTtzQkFBdkIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFYSxNQUFNO3NCQUF4QixNQUFNO2dCQUNZLFNBQVM7c0JBQTNCLE1BQU07Z0JBRVksV0FBVztzQkFBN0IsTUFBTTtnQkFJOEMsUUFBUTtzQkFBNUQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQW1CM0MsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQge1xuICB0eXBlIEFmdGVyVmlld0NoZWNrZWQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIGluamVjdCxcbiAgdHlwZSBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgdHlwZSBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtcbiAgaXNPcHRpb25zR3JpZE1vYmlsZVZpZXdwb3J0LFxuICBtZWFzdXJlT3B0aW9uc0dyaWQsXG4gIG5lZWRzT3B0aW9uc0dyaWRNZWFzdXJlbWVudCxcbiAgdHlwZSBPcHRpb25zR3JpZFBsYW4sXG4gIG9wdGlvbkVudGVyRGVsYXlNcyxcbiAgcGxhbk9wdGlvbnNHcmlkLFxuICB0eXBlIFN1Z2dlc3Rpb25PcHRpb24sXG4gIHNhbWVPcHRpb25Sb3dzLFxufSBmcm9tIFwiQG1hZ2ljeC1lbmcvYWktYXV0b2NvbXBsZXRlLXZhbmlsbGFcIjtcbmltcG9ydCB7IEdyaWRDb21wb25lbnQgfSBmcm9tIFwiLi4vbGF5b3V0L2dyaWQuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBTdWdnZXN0aW9uSXRlbUNvbXBvbmVudCB9IGZyb20gXCIuLi9zdWdnZXN0aW9uLWl0ZW0vc3VnZ2VzdGlvbi1pdGVtLmNvbXBvbmVudFwiO1xuXG4vKipcbiAqIEludGVybmFsIGdyaWQgb2Ygc3VnZ2VzdGlvbiBvcHRpb25zLiBNaXJyb3JzXG4gKiBgcGFja2FnZXMvcmVhY3Qvc3JjL2NvbXBvbmVudHMvU3VnZ2VzdGlvbkdyaWQudHN4YCDigJQgYSB0aGluIHdyYXBwZXIgb3ZlciB0aGVcbiAqIGBHcmlkYCBsYXlvdXQgcHJpbWl0aXZlICh3aGljaCBvd25zIHRoZSBhdXRvLWZpdCBjb2x1bW5zIGFuZCB0aGVcbiAqIGNhcHBlZC1oZWlnaHQgc2Nyb2xsKS4gSXQgb25seSB3aXJlcyBlYWNoIG9wdGlvbiB0byBpdHNcbiAqIHNlbGVjdC9oaWdobGlnaHQgaGFuZGxlcnMgYW5kIGxpc3Rib3gtc2NvcGVkIGlkLlxuICpcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiYWlhLXN1Z2dlc3Rpb24tZ3JpZFwiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBHcmlkQ29tcG9uZW50LCBTdWdnZXN0aW9uSXRlbUNvbXBvbmVudF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICB0ZW1wbGF0ZVVybDogXCIuL3N1Z2dlc3Rpb24tZ3JpZC5jb21wb25lbnQuaHRtbFwiLFxufSlcbmV4cG9ydCBjbGFzcyBTdWdnZXN0aW9uR3JpZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3Q2hlY2tlZCB7XG4gIEBJbnB1dCgpIG9wdGlvbnM6IFN1Z2dlc3Rpb25PcHRpb25bXSA9IFtdO1xuICBASW5wdXQoKSBhY3RpdmVJbmRleCA9IC0xO1xuICBASW5wdXQoKSBsaXN0Ym94SWQgPSBcIlwiO1xuICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XG4gIC8qKlxuICAgKiBJZGVudGl0eSBvZiB0aGUgc3VnZ2VzdGlvbiB0aGVzZSBvcHRpb25zIGJlbG9uZyB0by4gV2hlbiBpdCBjaGFuZ2VzIHRoZVxuICAgKiBncmlkIHNjcm9sbHMgYmFjayB0byB0aGUgdG9wLCBzbyB0aGUgbmV4dCBwYXJhbWV0ZXIncyBvcHRpb25zIGFyZSByZWFkXG4gICAqIGZyb20gdGhlIGZpcnN0IG9uZSBpbnN0ZWFkIG9mIGZyb20gdGhlIHByZXZpb3VzIGxpc3QncyBzY3JvbGwgb2Zmc2V0LlxuICAgKi9cbiAgQElucHV0KCkgZ3JvdXBLZXkgPSBcIlwiO1xuICAvKipcbiAgICogV2hpY2ggc2lkZSBvZiB0aGUgaW5wdXQgdGhlIGRyb3Bkb3duIG9wZW5zIG9uLiBUaGUgcm93cycgZW50cmFuY2Ugc3RhcnRzXG4gICAqIGZyb20gdGhlIGlucHV0J3Mgc2lkZSBvdXR3YXJkLCBzbyBcImFib3ZlXCIgcmV2ZXJzZXMgdGhlIG9yZGVyLlxuICAgKi9cbiAgQElucHV0KCkgb3B0aW9uc1Bvc2l0aW9uOiBcImFib3ZlXCIgfCBcImJlbG93XCIgPSBcImJlbG93XCI7XG4gIC8qKiBXaGV0aGVyIHJvd3MgZHJhdyB0aGVpciBgaWNvbl9zdmdgIGJlZm9yZSB0aGUgdGV4dC4gRGVmYXVsdDogdHJ1ZS4gKi9cbiAgQElucHV0KCkgc2hvd0ljb25zID0gdHJ1ZTtcbiAgLyoqIFdoZXRoZXIgcm93cyBkcmF3IHRoZWlyIGBpbWFnZV91cmxgIGFzIGEgdGh1bWJuYWlsIGJlZm9yZSB0aGUgdGV4dC4gRGVmYXVsdDogdHJ1ZS4gKi9cbiAgQElucHV0KCkgc2hvd0ltYWdlcyA9IHRydWU7XG4gIC8qKiBXaGV0aGVyIHJvd3Mgc2hvdyB0aGVpciBgaXRlbV9jb3VudGAgYXQgdGhlIHRyYWlsaW5nIGVkZ2UuIERlZmF1bHQ6IHRydWUuICovXG4gIEBJbnB1dCgpIHNob3dDb3VudHMgPSB0cnVlO1xuXG4gIEBPdXRwdXQoKSByZWFkb25seSBzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPFN1Z2dlc3Rpb25PcHRpb24+KCk7XG4gIEBPdXRwdXQoKSByZWFkb25seSBoaWdobGlnaHQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgLyoqIFRoZSBwb2ludGVyIGxlZnQgb3B0aW9uIGBpbmRleGAg4oCUIHRoZSBkcm9wZG93biBjbGVhcnMgYSBoaWdobGlnaHQgc3RpbGwgb24gaXQuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSB1bmhpZ2hsaWdodCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICBAVmlld0NoaWxkKEdyaWRDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KSBwcml2YXRlIGdyaWRDb21wPzogR3JpZENvbXBvbmVudDtcblxuICAvKipcbiAgICogVGhlIG1lYXN1cmVkIGxheW91dCBwbGFuLiBTdGFydHMgYXMgdGhlIG1lYXN1cmVtZW50LWZyZWUgYmFzZWxpbmUgKG9uZVxuICAgKiBjb2x1bW4pOyBhZnRlciBlYWNoIHZpZXcgdXBkYXRlIHRoZSByZW5kZXJlZCByb3dzIGFyZSBtZWFzdXJlZCBhbmQgdGhlXG4gICAqIHBsYW4gdXBncmFkZXMgdG8gdHdvIGNvbHVtbnMgd2hlbiB0aGV5IHByb3ZhYmx5IGZpdCDigJQgc2FtZSB0d28tcGFzcyB0aGVcbiAgICogUmVhY3QgZ3JpZCBkb2VzIHdpdGggaXRzIGxheW91dCBlZmZlY3QsIGFsbCB0aHJvdWdoIGBwbGFuT3B0aW9uc0dyaWRgLlxuICAgKi9cbiAgcGxhbjogT3B0aW9uc0dyaWRQbGFuID0gcGxhbk9wdGlvbnNHcmlkKDAsIGZhbHNlLCBudWxsLCBudWxsKTtcbiAgcHJpdmF0ZSBuZWVkc01lYXN1cmUgPSB0cnVlO1xuICAvKipcbiAgICogVGhlIHJvd3MgdGhlIGN1cnJlbnQgcGxhbiB3YXMgbWVhc3VyZWQgZnJvbS4gQSBza2VsZXRvbiBtaXJyb3JpbmcgdGhlbVxuICAgKiBrZWVwcyB0aGF0IHBsYW4g4oCUIHNlZSBgc2FtZU9wdGlvblJvd3NgLlxuICAgKi9cbiAgcHJpdmF0ZSBtZWFzdXJlZFJvd3M6IFN1Z2dlc3Rpb25PcHRpb25bXSB8IG51bGwgPSBudWxsO1xuXG4gIC8vIFJlLW1lYXN1cmUgd2hlbiB0aGUgdmlld3BvcnQgY2hhbmdlcyAoYnJlYWtwb2ludCBvciB3aWR0aCBib3RoIG1hdHRlciB0b1xuICAvLyB0aGUgdHdvLWNvbHVtbiBmaXQpLlxuICBASG9zdExpc3RlbmVyKFwid2luZG93OnJlc2l6ZVwiKVxuICBvblJlc2l6ZSgpOiB2b2lkIHtcbiAgICB0aGlzLm5lZWRzTWVhc3VyZSA9IHRydWU7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgLy8gT25seSB0aGUgaW5wdXRzIHRoZSBwbGFuIGRlcGVuZHMgb24gcmVzZXQgaXQg4oCUIGFjdGl2ZUluZGV4IGNoYW5nZXMgb25cbiAgICAvLyBldmVyeSBhcnJvdyBrZXkgYW5kIG11c3Qgbm90IGtub2NrIGEgbWVhc3VyZWQgdHdvLWNvbHVtbiBncmlkIGJhY2sgdG9cbiAgICAvLyB0aGUgYmFzZWxpbmUgKHRoZSBSZWFjdCBncmlkJ3MgbGF5b3V0IGVmZmVjdCBleGNsdWRlcyBpdCB0aGUgc2FtZSB3YXkpLlxuICAgIGlmICghY2hhbmdlc1tcIm9wdGlvbnNcIl0gJiYgIWNoYW5nZXNbXCJsb2FkaW5nXCJdKSByZXR1cm47XG4gICAgaWYgKHRoaXMubG9hZGluZyAmJiBzYW1lT3B0aW9uUm93cyh0aGlzLm1lYXN1cmVkUm93cywgdGhpcy5vcHRpb25zKSkgcmV0dXJuO1xuICAgIHRoaXMubWVhc3VyZWRSb3dzID0gdGhpcy5sb2FkaW5nID8gbnVsbCA6IHRoaXMub3B0aW9ucztcbiAgICB0aGlzLm5lZWRzTWVhc3VyZSA9IHRydWU7XG4gICAgLy8gVGhlIHByZS1tZWFzdXJlIGJhc2VsaW5lIGZvciB0aGUgbmV3IGlucHV0cywgc28gdGhlIGZpcnN0IHBhaW50IGlzIHRoZVxuICAgIC8vIHNhbWUgb25lLWNvbHVtbiBsYXlvdXQgdGhlIG90aGVyIHBhY2thZ2VzIHN0YXJ0IGZyb20uXG4gICAgdGhpcy5wbGFuID0gcGxhbk9wdGlvbnNHcmlkKHRoaXMub3B0aW9ucy5sZW5ndGgsIGlzT3B0aW9uc0dyaWRNb2JpbGVWaWV3cG9ydCgpLCBudWxsLCBudWxsKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubmVlZHNNZWFzdXJlKSByZXR1cm47XG4gICAgdGhpcy5uZWVkc01lYXN1cmUgPSBmYWxzZTtcbiAgICBjb25zdCBpc01vYmlsZSA9IGlzT3B0aW9uc0dyaWRNb2JpbGVWaWV3cG9ydCgpO1xuICAgIGNvbnN0IGdyaWQgPSB0aGlzLmdyaWRDb21wPy5ncmlkUmVmPy5uYXRpdmVFbGVtZW50O1xuICAgIC8vIE1lYXN1cmluZyBjbG9uZXMgZXZlcnkgcm93IGFuZCBmb3JjZXMgYSBsYXlvdXQg4oCUIHNraXAgaXQgd2hlbmV2ZXIgdGhlXG4gICAgLy8gcGxhbiB3b3VsZCBpZ25vcmUgdGhlIHJlc3VsdCAobW9iaWxlLCBmZXdlciB0aGFuIGZpdmUgb3B0aW9ucykuXG4gICAgY29uc3Qgc2hvdWxkTWVhc3VyZSA9XG4gICAgICBncmlkICYmICF0aGlzLmxvYWRpbmcgJiYgbmVlZHNPcHRpb25zR3JpZE1lYXN1cmVtZW50KHRoaXMub3B0aW9ucy5sZW5ndGgsIGlzTW9iaWxlKTtcbiAgICBjb25zdCBtZWFzdXJlZCA9IHNob3VsZE1lYXN1cmUgPyBtZWFzdXJlT3B0aW9uc0dyaWQoZ3JpZCkgOiBudWxsO1xuICAgIGNvbnN0IG5leHQgPSBwbGFuT3B0aW9uc0dyaWQoXG4gICAgICB0aGlzLm9wdGlvbnMubGVuZ3RoLFxuICAgICAgaXNNb2JpbGUsXG4gICAgICBtZWFzdXJlZD8ucm93V2lkdGhzID8/IG51bGwsXG4gICAgICBtZWFzdXJlZD8uZ3JpZFdpZHRoID8/IG51bGwsXG4gICAgKTtcbiAgICBjb25zdCB1bmNoYW5nZWQgPVxuICAgICAgbmV4dC50ZW1wbGF0ZSA9PT0gdGhpcy5wbGFuLnRlbXBsYXRlICYmXG4gICAgICBuZXh0Lm1heEhlaWdodCA9PT0gdGhpcy5wbGFuLm1heEhlaWdodCAmJlxuICAgICAgbmV4dC5zY3JvbGxIaW50SW5kaWNlcy5qb2luKCkgPT09IHRoaXMucGxhbi5zY3JvbGxIaW50SW5kaWNlcy5qb2luKCk7XG4gICAgaWYgKHVuY2hhbmdlZCkgcmV0dXJuO1xuICAgIC8vIFRoZSB2aWV3IHdhcyBhbHJlYWR5IGNoZWNrZWQgdGhpcyBjeWNsZSDigJQgYXBwbHkgdGhlIG1lYXN1cmVkIHBsYW4gaW4gYVxuICAgIC8vIGZyZXNoIG1pY3JvdGFzayBzbyBPblB1c2ggcGlja3MgaXQgdXAgd2l0aG91dCBhblxuICAgIC8vIEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkIGVycm9yLlxuICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgIHRoaXMucGxhbiA9IG5leHQ7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlzU2Nyb2xsSGludChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmxvYWRpbmcgJiYgdGhpcy5wbGFuLnNjcm9sbEhpbnRJbmRpY2VzLmluY2x1ZGVzKGluZGV4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydCBkZWxheSBvZiByb3cgYGluZGV4YCdzIGVudHJhbmNlIOKAlCBlYWNoIHJvdyByaXNlcyBpbiBhIGJlYXQgYWZ0ZXJcbiAgICogdGhlIG9uZSBuZWFyZXIgdGhlIGlucHV0LiBTa2VsZXRvbiByb3dzIGZhZGUgaW4gdG9nZXRoZXIgKHRoZXkncmVcbiAgICogcGxhY2Vob2xkZXJzLCBub3QgY29udGVudCBhcnJpdmluZykuXG4gICAqL1xuICBlbnRlckRlbGF5TXMoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgaWYgKHRoaXMubG9hZGluZykgcmV0dXJuIDA7XG4gICAgLy8gQWNyb3NzIHRoZSBjb2x1bW5zIHRoZSBtZWFzdXJlZCBwbGFuIHNldHRsZWQgb24g4oCUIHRoZSB0d28tY29sdW1uXG4gICAgLy8gdXBncmFkZSBvbmx5IGRlY2lkZXMgdGhhdCBhZnRlciB0aGUgcm93cyBleGlzdC5cbiAgICByZXR1cm4gb3B0aW9uRW50ZXJEZWxheU1zKGluZGV4LCB0aGlzLnBsYW4uY29scywgdGhpcy5vcHRpb25zLmxlbmd0aCwgdGhpcy5vcHRpb25zUG9zaXRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBncm91cCBpcyBwYXJ0IG9mIHRoZSBpZGVudGl0eTogYSBuZXcgc3VnZ2VzdGlvbidzIG9wdGlvbnMgYXJlIG5ld1xuICAgKiByb3dzIGFuZCBnZXQgdGhlIGVudHJhbmNlIGFuaW1hdGlvbiBldmVuIHdoZW4gb25lIHNwZWxscyB0aGUgc2FtZSBhcyBhXG4gICAqIHJvdyBhbHJlYWR5IG9uIHNjcmVlbi5cbiAgICovXG4gIHRyYWNrQnlPcHRpb25UZXh0ID0gKF86IG51bWJlciwgb3B0OiBTdWdnZXN0aW9uT3B0aW9uKTogc3RyaW5nID0+IGAke3RoaXMuZ3JvdXBLZXl9XFwwJHtvcHQudGV4dH1gO1xufVxuIiwiPCEtLSBtYXg9XCIxZnJcIjogY29sdW1ucyBzaGFyZSBvdXQgdGhlIGZ1bGwgd2lkdGgsIHNvIGEgbG9uZSBjb2x1bW4gc3BhbnMgdGhlXG4gICAgIHdob2xlIG9wdGlvbnMgYm94IGluc3RlYWQgb2Ygc3RvcHBpbmcgYXQgMjUwcHguIC0tPlxuPGFpYS1ncmlkXG4gIG1pbj1cIjI1MHB4XCJcbiAgbWF4PVwiMWZyXCJcbiAgZ2FwPVwiMFwiXG4gIFtzY3JvbGxdPVwidHJ1ZVwiXG4gIFtzY3JvbGxSZXNldEtleV09XCJncm91cEtleVwiXG4gIFt0ZW1wbGF0ZV09XCJwbGFuLnRlbXBsYXRlXCJcbiAgW21heEhlaWdodF09XCJwbGFuLm1heEhlaWdodFwiXG4gIFtncm91cF09XCJncm91cEtleVwiXG4+XG4gIDxhaWEtc3VnZ2VzdGlvbi1pdGVtXG4gICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zOyB0cmFja0J5OiB0cmFja0J5T3B0aW9uVGV4dDsgbGV0IGkgPSBpbmRleFwiXG4gICAgW29wdGlvbl09XCJvcHRpb25cIlxuICAgIFtpc0hpZ2hsaWdodGVkXT1cImkgPT09IGFjdGl2ZUluZGV4XCJcbiAgICBbaWRdPVwibGlzdGJveElkICsgJy1vcHRpb24tJyArIGlcIlxuICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxuICAgIFtzaG93SWNvbl09XCJzaG93SWNvbnNcIlxuICAgIFtzaG93SW1hZ2VdPVwic2hvd0ltYWdlc1wiXG4gICAgW3Nob3dDb3VudF09XCJzaG93Q291bnRzXCJcbiAgICBbc2Nyb2xsSGludF09XCJpc1Njcm9sbEhpbnQoaSlcIlxuICAgIFtlbnRlckRlbGF5TXNdPVwiZW50ZXJEZWxheU1zKGkpXCJcbiAgICAoc2VsZWN0KT1cInNlbGVjdC5lbWl0KCRldmVudClcIlxuICAgIChoaWdobGlnaHQpPVwiaGlnaGxpZ2h0LmVtaXQoaSlcIlxuICAgICh1bmhpZ2hsaWdodCk9XCJ1bmhpZ2hsaWdodC5lbWl0KGkpXCJcbiAgPjwvYWlhLXN1Z2dlc3Rpb24taXRlbT5cbjwvYWlhLWdyaWQ+XG4iXX0=
|