@fundamental-ngx/core 0.43.42 → 0.43.44
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/busy-indicator/busy-indicator.component.d.ts +8 -4
- package/esm2020/busy-indicator/busy-indicator.component.mjs +24 -13
- package/esm2020/datetime-picker/datetime-picker.component.mjs +2 -2
- package/esm2020/multi-combobox/base-multi-combobox.class.mjs +1 -1
- package/esm2020/multi-combobox/multi-combobox.component.mjs +20 -8
- package/fesm2015/fundamental-ngx-core-busy-indicator.mjs +23 -12
- package/fesm2015/fundamental-ngx-core-busy-indicator.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-datetime-picker.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-multi-combobox.mjs +17 -5
- package/fesm2015/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-busy-indicator.mjs +23 -12
- package/fesm2020/fundamental-ngx-core-busy-indicator.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-datetime-picker.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-multi-combobox.mjs +15 -5
- package/fesm2020/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
- package/fundamental-ngx-core-v0.43.44.tgz +0 -0
- package/multi-combobox/base-multi-combobox.class.d.ts +1 -1
- package/multi-combobox/multi-combobox.component.d.ts +16 -6
- package/package.json +3 -3
- package/schematics/add-dependencies/index.js +4 -4
- package/fundamental-ngx-core-v0.43.42.tgz +0 -0
|
@@ -386,4 +386,4 @@ BaseMultiCombobox.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", vers
|
|
|
386
386
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BaseMultiCombobox, decorators: [{
|
|
387
387
|
type: Directive
|
|
388
388
|
}] });
|
|
389
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1tdWx0aS1jb21ib2JveC5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL211bHRpLWNvbWJvYm94L2Jhc2UtbXVsdGktY29tYm9ib3guY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILEdBQUcsRUFDSCxTQUFTLEVBQ1QsT0FBTyxFQUNQLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUNMLEdBQUcsRUFDSCxRQUFRLEVBQ1gsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBZ0IsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBRSxtQkFBbUIsRUFBYyxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JHLE9BQU8sRUFDSCxVQUFVLEVBQ1YsWUFBWSxFQUVaLFlBQVksRUFDWixzQkFBc0IsRUFFekIsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQ0gsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixVQUFVLEVBQ1YsVUFBVSxFQUNWLFFBQVEsRUFFUixhQUFhLEVBQ2hCLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDL0UsT0FBTyxLQUFLLE1BQU0saUJBQWlCLENBQUM7QUFDcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBS3hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEYsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUsxRCxNQUFNLE9BQWdCLGlCQUFpQjtJQUR2QztRQUVJLG9CQUFvQjtRQUNwQixjQUFjO1FBQ0wsZUFBVSxHQUFrQixNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFeEQsY0FBYztRQUNMLHdCQUFtQixHQUF5RCxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUVqSCwwREFBMEQ7UUFDakQsU0FBSSxHQUFHLE1BQU0sQ0FBQyxDQUFBLFlBQWUsQ0FBQSxFQUFFO1lBQ3BDLElBQUksRUFBRSxJQUFJO1NBQ2IsQ0FBQyxDQUFDO1FBRUgsNkJBQTZCO1FBQ3BCLHlCQUFvQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRTtZQUN4RCxRQUFRLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7UUFFSCwrQkFBK0I7UUFDdEIsMkJBQXNCLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFFakUsY0FBYztRQUNLLFlBQU8sR0FBRyxNQUFNLENBQUMsQ0FBQSxVQUF1QixDQUFBLENBQUMsQ0FBQztRQUU3RCxjQUFjO1FBQ0ssUUFBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRW5ELGNBQWM7UUFDSyxjQUFTLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXBELGNBQWM7UUFDSyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRTFEOzs7V0FHRztRQUNILHlCQUFvQixHQUE4QixFQUFFLENBQUM7UUFRckQ7OztXQUdHO1FBQ0gscUJBQWdCLEdBQTJCLEVBQUUsQ0FBQztRQUU5QyxjQUFjO1FBQ2QseUJBQW9CLEdBQTJCLEVBQUUsQ0FBQztRQXFCbEQsY0FBYztRQUNkLG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFXNUMsY0FBYztRQUNKLHNCQUFpQixHQUN2QixJQUFJLENBQUMsb0JBQW9CLEVBQUUsZ0JBQWdCLElBQUksZ0JBQWdCLENBQUMsUUFBUSxDQUFDO1FBRTdFLGNBQWM7UUFDSixvQkFBZSxHQUF3QixJQUFJLENBQUM7UUFFdEQsY0FBYztRQUNKLGFBQVEsR0FBZ0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFFN0Q7OztXQUdHO1FBQ2dCLG9CQUFlLEdBQWE7WUFDM0MsU0FBUztZQUNULE1BQU07WUFDTixLQUFLO1lBQ0wsT0FBTztZQUNQLEdBQUc7WUFDSCxLQUFLO1lBQ0wsUUFBUTtZQUNSLFdBQVc7WUFDWCxVQUFVO1lBQ1YsVUFBVTtZQUNWLEdBQUc7U0FDTixDQUFDO1FBV0YsY0FBYztRQUNLLG1CQUFjLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUV4RCxjQUFjO1FBQ04sdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBRW5DLGNBQWM7UUFDSixlQUFVLEdBQUcsQ0FBQyxLQUFVLEVBQVUsRUFBRSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXBGLGNBQWM7UUFDSixpQkFBWSxHQUFHLENBQUMsS0FBVSxFQUFVLEVBQUU7WUFDNUMsSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3JCLE9BQU8sS0FBSyxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUM7YUFDcEM7aUJBQU0sSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDL0MsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBRXhELE9BQU8sVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO2FBQ2hFO2lCQUFNO2dCQUNILE9BQU8sS0FBSyxDQUFDO2FBQ2hCO1FBQ0wsQ0FBQyxDQUFDO0tBNldMO0lBM1dHLGNBQWM7SUFDZCxVQUFVLENBQUMsS0FBVTtRQUNqQixJQUFJLENBQUMsYUFBYSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsUUFBUSxDQUFDLEtBQVUsRUFBRSxZQUFZLEdBQUcsSUFBSTtRQUNwQyxJQUFJLENBQUMsYUFBYSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRDs7O09BR0c7SUFDTyxnQkFBZ0I7UUFDdEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxpQ0FBaUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRTlFLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxjQUFjO0lBQ0osdUJBQXVCO1FBQzdCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxFQUFFLENBQUM7UUFFL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFO1lBQzdCLE9BQU87U0FDVjtRQUVELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNqRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQzNDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLFlBQVksSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFlBQVksQ0FDdkUsQ0FBQztZQUNGLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUNaLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQy9ELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO2FBQ2xEO1NBQ0o7UUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7O09BR0c7SUFDTyxxQkFBcUIsQ0FBQyxLQUFZO1FBQ3hDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV0QixNQUFNLHVCQUF1QixHQUFHLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdELElBQUksdUJBQXVCLEVBQUU7WUFDekIsT0FBTyxLQUErQixDQUFDO1NBQzFDO1FBRUQsTUFBTSxtQkFBbUIsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0MsSUFBSSxtQkFBbUIsRUFBRTtZQUNyQixPQUFPLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNuRDtRQUVELE1BQU0sbUJBQW1CLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLElBQUksbUJBQW1CLEVBQUU7WUFDckIsT0FBTyxJQUFJLENBQUMsOEJBQThCLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDckQ7UUFFRCxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRDs7O09BR0c7SUFDTyw0QkFBNEIsQ0FBQyxLQUFVO1FBQzdDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNkLE9BQU8sSUFBSSxDQUFDLGlDQUFpQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3hEO2FBQU0sSUFBSSxJQUFJLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNwRCxPQUFPLElBQUksQ0FBQyxxQ0FBcUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1RDthQUFNO1lBQ0gsT0FBTyxJQUFJLENBQUMsbUNBQW1DLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDMUQ7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ08saUNBQWlDLENBQWMsS0FBVTtRQUMvRCxNQUFNLEtBQUssR0FBd0IsRUFBRSxDQUFDO1FBRXRDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ25DLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ1gsU0FBUzthQUNaO1lBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDbEIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQzthQUN4QjtZQUVELEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDOUI7UUFFRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDbEMsTUFBTSxVQUFVLEdBQXlCO2dCQUNyQyxLQUFLLEVBQUUsR0FBRztnQkFDVixLQUFLLEVBQUUsSUFBSTtnQkFDWCxPQUFPLEVBQUUsSUFBSTthQUNoQixDQUFDO1lBRUYsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRWhDLElBQUksSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7Z0JBQzdDLFVBQVUsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLHFDQUFxQyxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ2xGO2lCQUFNO2dCQUNILFVBQVUsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLG1DQUFtQyxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ2hGO1lBRUQsT0FBTyxVQUFVLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7OztPQUdHO0lBQ08scUNBQXFDLENBQWMsS0FBVTtRQUNuRSxNQUFNLFdBQVcsR0FBMkIsRUFBRSxDQUFDO1FBRS9DLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ25DLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QixXQUFXLENBQUMsSUFBSSxDQUFDO2dCQUNiLEtBQUssRUFBRSxZQUFZLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUM7Z0JBQzNDLEVBQUUsRUFBRSxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUM7Z0JBQ3RDLGFBQWEsRUFBRSxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUM7Z0JBQ2xELEtBQUs7Z0JBQ0wsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUs7YUFDekQsQ0FBQyxDQUFDO1NBQ047UUFFRCxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDO0lBRUQ7OztPQUdHO0lBQ08sOEJBQThCLENBQUMsS0FBWTtRQUNqRCxNQUFNLFdBQVcsR0FBMkIsRUFBRSxDQUFDO1FBQy9DLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ25DLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QixXQUFXLENBQUMsSUFBSSxDQUFDO2dCQUNiLEtBQUssRUFBRSxLQUFLO2dCQUNaLEVBQUUsRUFBRSxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUM7Z0JBQ3RDLEtBQUs7Z0JBQ0wsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUs7YUFDekQsQ0FBQyxDQUFDO1NBQ047UUFFRCxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDO0lBRUQ7OztPQUdHO0lBQ08sbUNBQW1DLENBQUMsS0FBWTtRQUN0RCxNQUFNLFdBQVcsR0FBMkIsRUFBRSxDQUFDO1FBRS9DLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ25DLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QixXQUFXLENBQUMsSUFBSSxDQUFDO2dCQUNiLEtBQUssRUFBRSxZQUFZLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUM7Z0JBQzNDLEVBQUUsRUFBRSxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUM7Z0JBQ3RDLEtBQUs7Z0JBQ0wsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUs7YUFDekQsQ0FBQyxDQUFDO1NBQ047UUFFRCxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDO0lBRUQsY0FBYztJQUNKLGdCQUFnQjtRQUN0QixJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQ25ELE9BQU87U0FDVjtRQUVELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDO1FBRTFCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUNwRCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUM7UUFFbEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsY0FBYztJQUNKLGtCQUFrQjtRQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDO1FBRWhDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztRQUNwRCxJQUFJLENBQUMscUJBQXFCLEdBQUcsU0FBUyxDQUFDO1FBRXZDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELGNBQWM7SUFDSixtQkFBbUI7UUFDekIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNuRCxDQUFDO0lBRUQsY0FBYztJQUNKLGtCQUFrQjtRQUN4QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFMUUsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBRXhFLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtZQUN4QixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRS9CLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRWxDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRDs7O09BR0c7SUFDTyxlQUFlO1FBQ3JCLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGtCQUFrQixDQUFDO1FBRXZFLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLHVFQUF1RSxDQUFDLENBQUM7U0FDNUY7UUFFRCxrQkFBa0IsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUU5QyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3RCxNQUFNLFVBQVUsR0FBZTtZQUMzQixPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVU7U0FDM0IsQ0FBQztRQUVGLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNuQixVQUFVLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7U0FDOUM7UUFFRCxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFELGtCQUFrQixDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUU1RSxxQkFBcUI7UUFDckIsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUN0QixHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztRQUV0QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNqQixHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDcEM7UUFFRCxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFOUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTFDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUNwQixJQUFJLENBQUMsbUJBQW1CLENBQUMsa0JBQWtCLEVBQUUsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQzNGLENBQUM7UUFDRixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FDcEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGtCQUFrQixFQUFFLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUN6RixDQUFDO1FBRUYsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDekcsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDaEcsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7Z0JBQzVCLE9BQU87YUFDVjtZQUVELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBRXpDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUVqQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQztZQUV0RCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7T0FHRztJQUNPLHFCQUFxQixDQUFDLElBQVM7UUFDckMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXpDLE1BQU0seUJBQXlCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQztRQUNuRSxJQUFJLHlCQUF5QixHQUFHLENBQUMsRUFBRTtZQUMvQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcseUJBQXlCLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2hELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4RCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFFL0YsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLEVBQUU7b0JBQ1osSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO2lCQUMxQzthQUNKO1NBQ0o7UUFFRCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUN6QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUM1RixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1lBRWxELElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBRS9CLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBRTFCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7U0FDbkM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ08sNkJBQTZCLENBQUMsSUFBUztRQUM3QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUNwRSxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxLQUFLLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM1RyxJQUFJLGVBQWUsRUFBRTtnQkFDakIsVUFBVSxDQUFDLFFBQVEsR0FBRyxlQUFlLENBQUMsUUFBUSxDQUFDO2FBQ2xEO1lBQ0QsT0FBTyxVQUFVLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsY0FBYztJQUNKLG9CQUFvQjtRQUMxQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztRQUV6QyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUV4QixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNqQztRQUVELElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO1FBRWpHLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDN0IsQ0FBQzs7OEdBMWZpQixpQkFBaUI7a0dBQWpCLGlCQUFpQjsyRkFBakIsaUJBQWlCO2tCQUR0QyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBTFQsXG4gICAgQkFDS1NQQUNFLFxuICAgIENPTlRST0wsXG4gICAgRE9XTl9BUlJPVyxcbiAgICBFTlRFUixcbiAgICBFU0NBUEUsXG4gICAgTEVGVF9BUlJPVyxcbiAgICBSSUdIVF9BUlJPVyxcbiAgICBTSElGVCxcbiAgICBUQUIsXG4gICAgVVBfQVJST1dcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRhU291cmNlRGlyZWN0aXZlLCBNYXRjaGluZ0J5LCBNYXRjaGluZ1N0cmF0ZWd5IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvZGF0YS1zb3VyY2UnO1xuaW1wb3J0IHtcbiAgICBDdmFDb250cm9sLFxuICAgIEN2YURpcmVjdGl2ZSxcbiAgICBGb3JtU3RhdGVzLFxuICAgIGlzT3B0aW9uSXRlbSxcbiAgICBpc1NlbGVjdGFibGVPcHRpb25JdGVtLFxuICAgIFNlbGVjdGFibGVPcHRpb25JdGVtXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgY29lcmNlQXJyYXlTYWZlLFxuICAgIERlc3Ryb3llZFNlcnZpY2UsXG4gICAgaXNGdW5jdGlvbixcbiAgICBpc0pzT2JqZWN0LFxuICAgIGlzU3RyaW5nLFxuICAgIE51bGxhYmxlLFxuICAgIFJhbmdlU2VsZWN0b3Jcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlPYnNlcnZlciB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jb250ZW50LWRlbnNpdHknO1xuaW1wb3J0IGVxdWFsIGZyb20gJ2Zhc3QtZGVlcC1lcXVhbCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIHNraXAsIHN0YXJ0V2l0aCwgU3Vic2NyaXB0aW9uLCB0YWtlVW50aWwsIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICAgIEZkTXVsdGlDb21ib2JveEFjY2VwdGFibGVEYXRhU291cmNlLFxuICAgIEZkTXVsdGlDb21ib0JveERhdGFTb3VyY2Vcbn0gZnJvbSAnLi9kYXRhLXNvdXJjZS9tdWx0aS1jb21ib2JveC1kYXRhLXNvdXJjZSc7XG5pbXBvcnQgeyBkaXNwbGF5VmFsdWUsIGZsYXR0ZW5Hcm91cHMsIGxvb2t1cFZhbHVlLCBvYmplY3RHZXQgfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHsgTXVsdGlDb21ib2JveFNlbGVjdGlvbkNoYW5nZUV2ZW50IH0gZnJvbSAnLi9tb2RlbHMvc2VsZWN0aW9uLWNoYW5nZS5ldmVudCc7XG5pbXBvcnQgeyBNdWx0aUNvbWJvYm94Q29uZmlnIH0gZnJvbSAnLi9tdWx0aS1jb21ib2JveC1jb25maWcnO1xuaW1wb3J0IHsgRkRfTUFQX0xJTUlUIH0gZnJvbSAnLi9tdWx0aS1jb21ib2JveC5jb21wb25lbnQnO1xuXG5leHBvcnQgdHlwZSBUZXh0QWxpZ25tZW50ID0gJ2xlZnQnIHwgJ3JpZ2h0JztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZU11bHRpQ29tYm9ib3g8VCA9IGFueT4ge1xuICAgIC8vIEluamVjdGlvbiBzZWN0aW9uXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBjdmFDb250cm9sOiBDdmFDb250cm9sPFQ+ID0gaW5qZWN0KEN2YUNvbnRyb2wpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBkYXRhU291cmNlRGlyZWN0aXZlOiBEYXRhU291cmNlRGlyZWN0aXZlPFQsIEZkTXVsdGlDb21ib0JveERhdGFTb3VyY2U8VD4+ID0gaW5qZWN0KERhdGFTb3VyY2VEaXJlY3RpdmUpO1xuXG4gICAgLyoqIENvbnRyb2wgVmFsdWUgQWNjZXNzb3IgZGlyZWN0aXZlIGZvciBmb3JtcyBzdXBwb3J0LiAqL1xuICAgIHJlYWRvbmx5IF9jdmEgPSBpbmplY3QoQ3ZhRGlyZWN0aXZlPFQ+LCB7XG4gICAgICAgIHNlbGY6IHRydWVcbiAgICB9KTtcblxuICAgIC8qKiBNdWx0aSBjb21ib2JveCBjb25maWcuICovXG4gICAgcmVhZG9ubHkgX211bHRpQ29tYm9ib3hDb25maWcgPSBpbmplY3QoTXVsdGlDb21ib2JveENvbmZpZywge1xuICAgICAgICBvcHRpb25hbDogdHJ1ZVxuICAgIH0pO1xuXG4gICAgLyoqIENvbnRlbnQgRGVuc2l0eSBPYnNlcnZlciAqL1xuICAgIHJlYWRvbmx5IGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXIgPSBpbmplY3QoQ29udGVudERlbnNpdHlPYnNlcnZlcik7XG5cbiAgICAvKiogQEhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfZWxtUmVmID0gaW5qZWN0KEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9jZCA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfbWFwTGltaXQgPSBpbmplY3QoRkRfTUFQX0xJTUlUKTtcblxuICAgIC8qKiBASGlkZGVuICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9kZXN0cm95ZWQkID0gaW5qZWN0KERlc3Ryb3llZFNlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIExpc3Qgb2Ygc2VsZWN0ZWQgc3VnZ2VzdGlvbnNcbiAgICAgKi9cbiAgICBfc2VsZWN0ZWRTdWdnZXN0aW9uczogU2VsZWN0YWJsZU9wdGlvbkl0ZW08VD5bXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIExpc3Qgb2YgbWF0Y2hlZCBzdWdnZXN0aW9uc1xuICAgICAqL1xuICAgIF9zdWdnZXN0aW9uczogU2VsZWN0YWJsZU9wdGlvbkl0ZW1bXTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBHcm91cGVkIHN1Z2dlc3Rpb25zIG1hcHBlZCB0byBhcnJheS5cbiAgICAgKi9cbiAgICBfZmxhdFN1Z2dlc3Rpb25zOiBTZWxlY3RhYmxlT3B0aW9uSXRlbVtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9mdWxsRmxhdFN1Z2dlc3Rpb25zOiBTZWxlY3RhYmxlT3B0aW9uSXRlbVtdID0gW107XG5cbiAgICBhYnN0cmFjdCBzZWxlY3RlZEl0ZW1zOiBUW107XG4gICAgYWJzdHJhY3QgZ3JvdXA6IGJvb2xlYW47XG4gICAgYWJzdHJhY3QgZ3JvdXBLZXk6IHN0cmluZztcbiAgICBhYnN0cmFjdCBkaXNwbGF5S2V5OiBzdHJpbmc7XG4gICAgYWJzdHJhY3Qgc2Vjb25kYXJ5S2V5OiBzdHJpbmc7XG4gICAgYWJzdHJhY3Qgc2hvd1NlY29uZGFyeVRleHQ6IGJvb2xlYW47XG4gICAgYWJzdHJhY3QgbG9va3VwS2V5OiBzdHJpbmc7XG4gICAgYWJzdHJhY3QgaW52YWxpZEVudHJ5TWVzc2FnZTogc3RyaW5nO1xuICAgIGFic3RyYWN0IGludmFsaWRFbnRyeURpc3BsYXlUaW1lOiBudW1iZXI7XG4gICAgYWJzdHJhY3QgbGltaXRsZXNzOiBib29sZWFuO1xuICAgIGFic3RyYWN0IGlzR3JvdXA6IGJvb2xlYW47XG4gICAgYWJzdHJhY3QgaW5wdXRUZXh0OiBzdHJpbmc7XG5cbiAgICBhYnN0cmFjdCBzZWFyY2hJbnB1dEVsZW1lbnQ6IE51bGxhYmxlPEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4+O1xuXG4gICAgYWJzdHJhY3Qgc2VsZWN0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TXVsdGlDb21ib2JveFNlbGVjdGlvbkNoYW5nZUV2ZW50PjtcbiAgICBhYnN0cmFjdCBkYXRhUmVjZWl2ZWQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPjtcbiAgICBhYnN0cmFjdCBkYXRhUmVxdWVzdGVkOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNlbGVjdGVkU2hvd24kID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfZGF0YVNvdXJjZTogRmRNdWx0aUNvbWJvYm94QWNjZXB0YWJsZURhdGFTb3VyY2U8VD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfaW5wdXRUZXh0VmFsdWU6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIF9wcmV2aW91c0lucHV0VGV4dDogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX21hdGNoaW5nU3RyYXRlZ3k6IE1hdGNoaW5nU3RyYXRlZ3kgPVxuICAgICAgICB0aGlzLl9tdWx0aUNvbWJvYm94Q29uZmlnPy5tYXRjaGluZ1N0cmF0ZWd5ID8/IE1hdGNoaW5nU3RyYXRlZ3kuQ09OVEFJTlM7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfZHNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX2VsZW1lbnQ6IEhUTUxFbGVtZW50ID0gdGhpcy5fZWxtUmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogS2V5cywgdGhhdCB3b24ndCB0cmlnZ2VyIHRoZSBwb3BvdmVyJ3Mgb3BlbiBzdGF0ZSwgd2hlbiBkaXNwYXRjaGVkIG9uIHNlYXJjaCBpbnB1dC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX25vbk9wZW5pbmdLZXlzOiBudW1iZXJbXSA9IFtcbiAgICAgICAgQkFDS1NQQUNFLFxuICAgICAgICBFU0NBUEUsXG4gICAgICAgIEVOVEVSLFxuICAgICAgICBDT05UUk9MLFxuICAgICAgICBUQUIsXG4gICAgICAgIFNISUZULFxuICAgICAgICBVUF9BUlJPVyxcbiAgICAgICAgUklHSFRfQVJST1csXG4gICAgICAgIERPV05fQVJST1csXG4gICAgICAgIExFRlRfQVJST1csXG4gICAgICAgIEFMVFxuICAgIF07XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfdGltZXJTdWIkOiBTdWJzY3JpcHRpb247XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfcHJldmlvdXNTdGF0ZT86IEZvcm1TdGF0ZXM7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfcHJldmlvdXNTdGF0ZU1lc3NhZ2U6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfcmFuZ2VTZWxlY3RvciA9IG5ldyBSYW5nZVNlbGVjdG9yKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RhdGFTb3VyY2VDaGFuZ2VkID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfZGlzcGxheUZuID0gKHZhbHVlOiBhbnkpOiBzdHJpbmcgPT4gZGlzcGxheVZhbHVlKHZhbHVlLCB0aGlzLmRpc3BsYXlLZXkpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX3NlY29uZGFyeUZuID0gKHZhbHVlOiBhbnkpOiBzdHJpbmcgPT4ge1xuICAgICAgICBpZiAoaXNPcHRpb25JdGVtKHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnNlY29uZGFyeVRleHQgPz8gJyc7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNKc09iamVjdCh2YWx1ZSkgJiYgdGhpcy5zZWNvbmRhcnlLZXkpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJdGVtID0gb2JqZWN0R2V0KHZhbHVlLCB0aGlzLnNlY29uZGFyeUtleSk7XG5cbiAgICAgICAgICAgIHJldHVybiBpc0Z1bmN0aW9uKGN1cnJlbnRJdGVtKSA/IGN1cnJlbnRJdGVtKCkgOiBjdXJyZW50SXRlbTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBjb2VyY2VBcnJheVNhZmUodmFsdWUpO1xuICAgICAgICB0aGlzLl9jdmEud3JpdGVWYWx1ZSh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICAgICAgICB0aGlzLl9zZXRTZWxlY3RlZFN1Z2dlc3Rpb25zKCk7XG4gICAgICAgIHRoaXMuX2VtaXRDaGFuZ2VFdmVudCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVzZWQgdG8gY2hhbmdlIHRoZSB2YWx1ZSBvZiBhIGNvbnRyb2wuXG4gICAgICogQHBhcmFtIHZhbHVlIHRoZSB2YWx1ZSB0byBiZSBhcHBsaWVkXG4gICAgICogQHBhcmFtIGVtaXRPbkNoYW5nZSB3aGV0aGVyIHRvIGVtaXQgXCJvbkNoYW5nZVwiIGV2ZW50LlxuICAgICAqIFNob3VsZCBiZSBcImZhbHNlXCIsIGlmIHRoZSBjaGFuZ2UgaXMgbWFkZSBwcm9ncmFtbWF0aWNhbGx5IChpbnRlcm5hbGx5KSBieSB0aGUgY29udHJvbCwgXCJ0cnVlXCIgb3RoZXJ3aXNlXG4gICAgICovXG4gICAgc2V0VmFsdWUodmFsdWU6IGFueSwgZW1pdE9uQ2hhbmdlID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBjb2VyY2VBcnJheVNhZmUodmFsdWUpO1xuICAgICAgICB0aGlzLl9jdmEuc2V0VmFsdWUodGhpcy5zZWxlY3RlZEl0ZW1zLCBlbWl0T25DaGFuZ2UpO1xuICAgICAgICB0aGlzLl9zZXRTZWxlY3RlZFN1Z2dlc3Rpb25zKCk7XG4gICAgICAgIHRoaXMuX2VtaXRDaGFuZ2VFdmVudCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBNZXRob2QgdG8gZW1pdCBjaGFuZ2UgZXZlbnRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2VtaXRDaGFuZ2VFdmVudCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgTXVsdGlDb21ib2JveFNlbGVjdGlvbkNoYW5nZUV2ZW50KHRoaXMsIHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG5cbiAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX3NldFNlbGVjdGVkU3VnZ2VzdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkU3VnZ2VzdGlvbnMgPSBbXTtcblxuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbSA9IHRoaXMuc2VsZWN0ZWRJdGVtc1tpXTtcbiAgICAgICAgICAgIGNvbnN0IGlkeCA9IHRoaXMuX2Z1bGxGbGF0U3VnZ2VzdGlvbnMuZmluZEluZGV4KFxuICAgICAgICAgICAgICAgIChpdGVtKSA9PiBpdGVtLmxhYmVsID09PSBzZWxlY3RlZEl0ZW0gfHwgaXRlbS52YWx1ZSA9PT0gc2VsZWN0ZWRJdGVtXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKGlkeCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFN1Z2dlc3Rpb25zLnB1c2godGhpcy5fZnVsbEZsYXRTdWdnZXN0aW9uc1tpZHhdKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9mdWxsRmxhdFN1Z2dlc3Rpb25zW2lkeF0uc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnQgb3JpZ2luYWwgZGF0YSB0byBTZWxlY3RhYmxlT3B0aW9uSXRlbXMgSW50ZXJmYWNlXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfY29udmVydFRvT3B0aW9uSXRlbXMoaXRlbXM6IGFueVtdKTogU2VsZWN0YWJsZU9wdGlvbkl0ZW08VD5bXSB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBpdGVtc1swXTtcblxuICAgICAgICBjb25zdCBlbGVtZW50VHlwZUlzT3B0aW9uSXRlbSA9IGlzU2VsZWN0YWJsZU9wdGlvbkl0ZW0oaXRlbSk7XG4gICAgICAgIGlmIChlbGVtZW50VHlwZUlzT3B0aW9uSXRlbSkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW1zIGFzIFNlbGVjdGFibGVPcHRpb25JdGVtW107XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBlbGVtZW50VHlwZUlzT2JqZWN0ID0gaXNKc09iamVjdChpdGVtKTtcbiAgICAgICAgaWYgKGVsZW1lbnRUeXBlSXNPYmplY3QpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb252ZXJ0T2JqZWN0c1RvT3B0aW9uSXRlbXMoaXRlbXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZWxlbWVudFR5cGVJc1N0cmluZyA9IGlzU3RyaW5nKGl0ZW0pO1xuICAgICAgICBpZiAoZWxlbWVudFR5cGVJc1N0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnZlcnRQcmltaXRpdmVUb09wdGlvbkl0ZW1zKGl0ZW1zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IGRhdGEgdG8gU2VsZWN0YWJsZU9wdGlvbkl0ZW1zIEludGVyZmFjZVxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2NvbnZlcnRPYmplY3RzVG9PcHRpb25JdGVtcyhpdGVtczogVFtdKTogU2VsZWN0YWJsZU9wdGlvbkl0ZW08VD5bXSB7XG4gICAgICAgIGlmICh0aGlzLmlzR3JvdXApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb252ZXJ0T2JqZWN0c1RvR3JvdXBPcHRpb25JdGVtcyhpdGVtcyk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zaG93U2Vjb25kYXJ5VGV4dCAmJiB0aGlzLnNlY29uZGFyeUtleSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnZlcnRPYmplY3RzVG9TZWNvbmRhcnlPcHRpb25JdGVtcyhpdGVtcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY29udmVydE9iamVjdHNUb0RlZmF1bHRPcHRpb25JdGVtcyhpdGVtcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IG9iamVjdFtdIGRhdGEgdG8gR3JvdXAgT3B0aW9uSXRlbXMgSW50ZXJmYWNlXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfY29udmVydE9iamVjdHNUb0dyb3VwT3B0aW9uSXRlbXM8SyBleHRlbmRzIFQ+KGl0ZW1zOiBLW10pOiBTZWxlY3RhYmxlT3B0aW9uSXRlbTxUPltdIHtcbiAgICAgICAgY29uc3QgZ3JvdXA6IFJlY29yZDxzdHJpbmcsIEtbXT4gPSB7fTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtID0gaXRlbXNbaV07XG4gICAgICAgICAgICBjb25zdCBrZXlWYWx1ZSA9IGl0ZW1bdGhpcy5ncm91cEtleV07XG4gICAgICAgICAgICBpZiAoIWtleVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghZ3JvdXBba2V5VmFsdWVdKSB7XG4gICAgICAgICAgICAgICAgZ3JvdXBba2V5VmFsdWVdID0gW107XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGdyb3VwW2tleVZhbHVlXS5wdXNoKGl0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGdyb3VwKS5tYXAoKGtleSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0SXRlbTogU2VsZWN0YWJsZU9wdGlvbkl0ZW0gPSB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IGtleSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICAgICAgICBpc0dyb3VwOiB0cnVlXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50R3JvdXAgPSBncm91cFtrZXldO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5zaG93U2Vjb25kYXJ5VGV4dCAmJiB0aGlzLnNlY29uZGFyeUtleSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdEl0ZW0uY2hpbGRyZW4gPSB0aGlzLl9jb252ZXJ0T2JqZWN0c1RvU2Vjb25kYXJ5T3B0aW9uSXRlbXMoY3VycmVudEdyb3VwKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0SXRlbS5jaGlsZHJlbiA9IHRoaXMuX2NvbnZlcnRPYmplY3RzVG9EZWZhdWx0T3B0aW9uSXRlbXMoY3VycmVudEdyb3VwKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHNlbGVjdEl0ZW07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnQgVFtdIGRhdGEgdG8gU2Vjb25kYXJ5IFNlbGVjdGFibGVPcHRpb25JdGVtczxUPiBJbnRlcmZhY2VcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9jb252ZXJ0T2JqZWN0c1RvU2Vjb25kYXJ5T3B0aW9uSXRlbXM8SyBleHRlbmRzIFQ+KGl0ZW1zOiBLW10pOiBTZWxlY3RhYmxlT3B0aW9uSXRlbTxUPltdIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0SXRlbXM6IFNlbGVjdGFibGVPcHRpb25JdGVtW10gPSBbXTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGl0ZW1zW2ldO1xuICAgICAgICAgICAgc2VsZWN0SXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgbGFiZWw6IGRpc3BsYXlWYWx1ZSh2YWx1ZSwgdGhpcy5kaXNwbGF5S2V5KSxcbiAgICAgICAgICAgICAgICBpZDogbG9va3VwVmFsdWUodmFsdWUsIHRoaXMubG9va3VwS2V5KSxcbiAgICAgICAgICAgICAgICBzZWNvbmRhcnlUZXh0OiBvYmplY3RHZXQodmFsdWUsIHRoaXMuc2Vjb25kYXJ5S2V5KSxcbiAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZEl0ZW1zPy5pbmNsdWRlcyh2YWx1ZSkgfHwgZmFsc2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNlbGVjdEl0ZW1zO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnQgUHJpbWl0aXZlIGRhdGEoQm9vbGVhbiwgU3RyaW5nLCBOdW1iZXIpIHRvIFNlbGVjdGFibGVPcHRpb25JdGVtcyBJbnRlcmZhY2VcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9jb252ZXJ0UHJpbWl0aXZlVG9PcHRpb25JdGVtcyhpdGVtczogYW55W10pOiBTZWxlY3RhYmxlT3B0aW9uSXRlbTxUPltdIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0SXRlbXM6IFNlbGVjdGFibGVPcHRpb25JdGVtW10gPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBpdGVtc1tpXTtcbiAgICAgICAgICAgIHNlbGVjdEl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgIGxhYmVsOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICBpZDogbG9va3VwVmFsdWUodmFsdWUsIHRoaXMubG9va3VwS2V5KSxcbiAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZEl0ZW1zPy5pbmNsdWRlcyh2YWx1ZSkgfHwgZmFsc2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNlbGVjdEl0ZW1zO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnQgVFtdIHRvIFNlbGVjdGFibGVPcHRpb25JdGVtczxUPiBJbnRlcmZhY2UgKERlZmF1bHQpXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfY29udmVydE9iamVjdHNUb0RlZmF1bHRPcHRpb25JdGVtcyhpdGVtczogYW55W10pOiBTZWxlY3RhYmxlT3B0aW9uSXRlbTxUPltdIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0SXRlbXM6IFNlbGVjdGFibGVPcHRpb25JdGVtW10gPSBbXTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGl0ZW1zW2ldO1xuICAgICAgICAgICAgc2VsZWN0SXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgbGFiZWw6IGRpc3BsYXlWYWx1ZSh2YWx1ZSwgdGhpcy5kaXNwbGF5S2V5KSxcbiAgICAgICAgICAgICAgICBpZDogbG9va3VwVmFsdWUodmFsdWUsIHRoaXMubG9va3VwS2V5KSxcbiAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZEl0ZW1zPy5pbmNsdWRlcyh2YWx1ZSkgfHwgZmFsc2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNlbGVjdEl0ZW1zO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIF9zZXRJbnZhbGlkRW50cnkoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9wcmV2aW91c1N0YXRlIHx8IHRoaXMuX3ByZXZpb3VzU3RhdGVNZXNzYWdlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9wcmV2aW91c1N0YXRlID0gdGhpcy5fY3ZhLnN0YXRlO1xuICAgICAgICB0aGlzLl9jdmEuc3RhdGUgPSAnZXJyb3InO1xuXG4gICAgICAgIHRoaXMuX3ByZXZpb3VzU3RhdGVNZXNzYWdlID0gdGhpcy5fY3ZhLnN0YXRlTWVzc2FnZTtcbiAgICAgICAgdGhpcy5fY3ZhLnN0YXRlTWVzc2FnZSA9IHRoaXMuaW52YWxpZEVudHJ5TWVzc2FnZTtcblxuICAgICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfdW5zZXRJbnZhbGlkRW50cnkoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2N2YS5zdGF0ZSA9IHRoaXMuX3ByZXZpb3VzU3RhdGU7XG4gICAgICAgIHRoaXMuX3ByZXZpb3VzU3RhdGUgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgdGhpcy5fY3ZhLnN0YXRlTWVzc2FnZSA9IHRoaXMuX3ByZXZpb3VzU3RhdGVNZXNzYWdlO1xuICAgICAgICB0aGlzLl9wcmV2aW91c1N0YXRlTWVzc2FnZSA9IHVuZGVmaW5lZDtcblxuICAgICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfZm9jdXNUb1NlYXJjaEZpZWxkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlYXJjaElucHV0RWxlbWVudD8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIF9tYXBBbmRVcGRhdGVNb2RlbCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtcyA9IHRoaXMuX3NlbGVjdGVkU3VnZ2VzdGlvbnMubWFwKCh7IHZhbHVlIH0pID0+IHZhbHVlKTtcblxuICAgICAgICBjb25zdCBzaG91bGRFbWl0Q2hhbmdlRXZlbnQgPSAhZXF1YWwodGhpcy5zZWxlY3RlZEl0ZW1zLCBzZWxlY3RlZEl0ZW1zKTtcblxuICAgICAgICBpZiAoIXNob3VsZEVtaXRDaGFuZ2VFdmVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy53cml0ZVZhbHVlKHNlbGVjdGVkSXRlbXMpO1xuXG4gICAgICAgIHRoaXMuX2N2YS5vbkNoYW5nZShzZWxlY3RlZEl0ZW1zKTtcblxuICAgICAgICB0aGlzLl9lbWl0Q2hhbmdlRXZlbnQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogUHJlcGFyZXMgdGhlIGRhdGEgc3RyZWFtIGFuZCBzdWJzY3JpYmVzIHRvIGl0LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfb3BlbkRhdGFTdHJlYW0oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGRhdGFTb3VyY2VQcm92aWRlciA9IHRoaXMuZGF0YVNvdXJjZURpcmVjdGl2ZS5kYXRhU291cmNlUHJvdmlkZXI7XG5cbiAgICAgICAgaWYgKCFkYXRhU291cmNlUHJvdmlkZXIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgW2RhdGFTb3VyY2VdIHNvdXJjZSBkaWQgbm90IG1hdGNoIGFuIGFycmF5LCBPYnNlcnZhYmxlLCBvciBEYXRhU291cmNlYCk7XG4gICAgICAgIH1cblxuICAgICAgICBkYXRhU291cmNlUHJvdmlkZXIubGltaXRsZXNzID0gdGhpcy5saW1pdGxlc3M7XG5cbiAgICAgICAgZGF0YVNvdXJjZVByb3ZpZGVyLmRhdGFQcm92aWRlci5zZXRMb29rdXBLZXkodGhpcy5sb29rdXBLZXkpO1xuICAgICAgICBjb25zdCBtYXRjaGluZ0J5OiBNYXRjaGluZ0J5ID0ge1xuICAgICAgICAgICAgZmlyc3RCeTogdGhpcy5fZGlzcGxheUZuXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHRoaXMuc2Vjb25kYXJ5S2V5KSB7XG4gICAgICAgICAgICBtYXRjaGluZ0J5LnNlY29uZGFyeUJ5ID0gdGhpcy5fc2Vjb25kYXJ5Rm47XG4gICAgICAgIH1cblxuICAgICAgICBkYXRhU291cmNlUHJvdmlkZXIuZGF0YVByb3ZpZGVyLnNldE1hdGNoaW5nQnkobWF0Y2hpbmdCeSk7XG4gICAgICAgIGRhdGFTb3VyY2VQcm92aWRlci5kYXRhUHJvdmlkZXIuc2V0TWF0Y2hpbmdTdHJhdGVneSh0aGlzLl9tYXRjaGluZ1N0cmF0ZWd5KTtcblxuICAgICAgICAvLyBpbml0aWFsIGRhdGEgZmV0Y2hcbiAgICAgICAgY29uc3QgbWFwID0gbmV3IE1hcCgpO1xuICAgICAgICBtYXAuc2V0KCdxdWVyeScsICcqJyk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmxpbWl0bGVzcykge1xuICAgICAgICAgICAgbWFwLnNldCgnbGltaXQnLCB0aGlzLl9tYXBMaW1pdCk7XG4gICAgICAgIH1cblxuICAgICAgICBkYXRhU291cmNlUHJvdmlkZXIubWF0Y2gobWFwKTtcblxuICAgICAgICB0aGlzLl9kc1N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgICAgICB0aGlzLl9kc1N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgICAgICB0aGlzLmRhdGFTb3VyY2VEaXJlY3RpdmUuZGF0YVNvdXJjZVByb3ZpZGVyPy5kYXRhUmVxdWVzdGVkLnN1YnNjcmliZSh0aGlzLmRhdGFSZXF1ZXN0ZWQpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX2RzU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZURpcmVjdGl2ZS5kYXRhU291cmNlUHJvdmlkZXI/LmRhdGFSZWNlaXZlZC5zdWJzY3JpYmUodGhpcy5kYXRhUmVjZWl2ZWQpXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5kYXRhU291cmNlRGlyZWN0aXZlLmRhdGFTb3VyY2VDaGFuZ2VkLnBpcGUoc3RhcnRXaXRoKHRydWUpLCB0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkJCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhU291cmNlQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZURpcmVjdGl2ZS5kYXRhQ2hhbmdlZCQucGlwZShza2lwKDApLCB0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkJCkpLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgICAgICAgaWYgKGRhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcHJvY2Vzc2luZ0VtcHR5RGF0YSgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fcHJldmlvdXNJbnB1dFRleHQgPSB0aGlzLmlucHV0VGV4dDtcblxuICAgICAgICAgICAgdGhpcy5fcGFyc2VEYXRhU291cmNlVmFsdWUoZGF0YSk7XG5cbiAgICAgICAgICAgIHRoaXMuX2N2YS5zdGF0ZUNoYW5nZXMubmV4dCgnaW5pdERhdGFTb3VyY2Uub3BlbigpLicpO1xuXG4gICAgICAgICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFyc2VzIHRoZSBkYXRhIGZyb20gdGhlIGRhdGEgc3RyZWFtIGFuZCB1cGRhdGVzIHRoZSBtb2RlbCBpZiBuZWVkZWQuXG4gICAgICogQHBhcmFtIGRhdGEgYXJyYXkgb2Ygb2JqZWN0cyBmcm9tIHRoZSBkYXRhIHN0cmVhbS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX3BhcnNlRGF0YVNvdXJjZVZhbHVlKGRhdGE6IFRbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jb252ZXJ0RGF0YVNvdXJjZVN1Z2dlc3Rpb25zKGRhdGEpO1xuXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkU3VnZ2VzdGlvbnNMZW5ndGggPSB0aGlzLl9zZWxlY3RlZFN1Z2dlc3Rpb25zLmxlbmd0aDtcbiAgICAgICAgaWYgKHNlbGVjdGVkU3VnZ2VzdGlvbnNMZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlbGVjdGVkU3VnZ2VzdGlvbnNMZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkU3VnZ2VzdGlvbiA9IHRoaXMuX3NlbGVjdGVkU3VnZ2VzdGlvbnNbaV07XG4gICAgICAgICAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5fc3VnZ2VzdGlvbnMuZmluZEluZGV4KChpdGVtKSA9PiBlcXVhbChpdGVtLnZhbHVlLCBzZWxlY3RlZFN1Z2dlc3Rpb24udmFsdWUpKTtcblxuICAgICAgICAgICAgICAgIGlmIChpZHggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25zW2lkeF0uc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9kYXRhU291cmNlQ2hhbmdlZCkge1xuICAgICAgICAgICAgdGhpcy5fZmxhdFN1Z2dlc3Rpb25zID0gdGhpcy5pc0dyb3VwID8gZmxhdHRlbkdyb3Vwcyh0aGlzLl9zdWdnZXN0aW9ucykgOiB0aGlzLl9zdWdnZXN0aW9ucztcbiAgICAgICAgICAgIHRoaXMuX2Z1bGxGbGF0U3VnZ2VzdGlvbnMgPSB0aGlzLl9mbGF0U3VnZ2VzdGlvbnM7XG5cbiAgICAgICAgICAgIHRoaXMuX3NldFNlbGVjdGVkU3VnZ2VzdGlvbnMoKTtcblxuICAgICAgICAgICAgdGhpcy5fbWFwQW5kVXBkYXRlTW9kZWwoKTtcblxuICAgICAgICAgICAgdGhpcy5fZGF0YVNvdXJjZUNoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyYW5zZm9ybXMgcGxhaW4gYXJyYXkgaW50byBgU2VsZWN0YWJsZU9wdGlvbkl0ZW08VD5gXG4gICAgICogQHBhcmFtIGRhdGFcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2NvbnZlcnREYXRhU291cmNlU3VnZ2VzdGlvbnMoZGF0YTogVFtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25zID0gdGhpcy5fY29udmVydFRvT3B0aW9uSXRlbXMoZGF0YSkubWFwKChvcHRpb25JdGVtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnQgPSB0aGlzLl9zZWxlY3RlZFN1Z2dlc3Rpb25zLmZpbmQoKHNlbGVjdGVkSXRlbSkgPT4gc2VsZWN0ZWRJdGVtLmlkID09PSBvcHRpb25JdGVtLmlkKTtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25JdGVtLnNlbGVjdGVkID0gc2VsZWN0ZWRFbGVtZW50LnNlbGVjdGVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbkl0ZW07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIF9wcm9jZXNzaW5nRW1wdHlEYXRhKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlucHV0VGV4dCA9IHRoaXMuX3ByZXZpb3VzSW5wdXRUZXh0O1xuXG4gICAgICAgIHRoaXMuX3NldEludmFsaWRFbnRyeSgpO1xuXG4gICAgICAgIGlmICh0aGlzLl90aW1lclN1YiQpIHtcbiAgICAgICAgICAgIHRoaXMuX3RpbWVyU3ViJC51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fdGltZXJTdWIkID0gdGltZXIodGhpcy5pbnZhbGlkRW50cnlEaXNwbGF5VGltZSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3Vuc2V0SW52YWxpZEVudHJ5KCkpO1xuXG4gICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG59XG4iXX0=
|
|
389
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1tdWx0aS1jb21ib2JveC5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL211bHRpLWNvbWJvYm94L2Jhc2UtbXVsdGktY29tYm9ib3guY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILEdBQUcsRUFDSCxTQUFTLEVBQ1QsT0FBTyxFQUNQLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUNMLEdBQUcsRUFDSCxRQUFRLEVBQ1gsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBZ0IsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBRSxtQkFBbUIsRUFBYyxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JHLE9BQU8sRUFDSCxVQUFVLEVBQ1YsWUFBWSxFQUVaLFlBQVksRUFDWixzQkFBc0IsRUFFekIsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQ0gsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixVQUFVLEVBQ1YsVUFBVSxFQUNWLFFBQVEsRUFFUixhQUFhLEVBQ2hCLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDL0UsT0FBTyxLQUFLLE1BQU0saUJBQWlCLENBQUM7QUFDcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBS3hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEYsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0s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QyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUNwRSxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxLQUFLLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM1RyxJQUFJLGVBQWUsRUFBRTtnQkFDakIsVUFBVSxDQUFDLFFBQVEsR0FBRyxlQUFlLENBQUMsUUFBUSxDQUFDO2FBQ2xEO1lBQ0QsT0FBTyxVQUFVLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsY0FBYztJQUNKLG9CQUFvQjtRQUMxQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztRQUV6QyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUV4QixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNqQztRQUVELElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO1FBRWpHLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDN0IsQ0FBQzs7OEdBMWZpQixpQkFBaUI7a0dBQWpCLGlCQUFpQjsyRkFBakIsaUJBQWlCO2tCQUR0QyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBTFQsXG4gICAgQkFDS1NQQUNFLFxuICAgIENPTlRST0wsXG4gICAgRE9XTl9BUlJPVyxcbiAgICBFTlRFUixcbiAgICBFU0NBUEUsXG4gICAgTEVGVF9BUlJPVyxcbiAgICBSSUdIVF9BUlJPVyxcbiAgICBTSElGVCxcbiAgICBUQUIsXG4gICAgVVBfQVJST1dcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRhU291cmNlRGlyZWN0aXZlLCBNYXRjaGluZ0J5LCBNYXRjaGluZ1N0cmF0ZWd5IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvZGF0YS1zb3VyY2UnO1xuaW1wb3J0IHtcbiAgICBDdmFDb250cm9sLFxuICAgIEN2YURpcmVjdGl2ZSxcbiAgICBGb3JtU3RhdGVzLFxuICAgIGlzT3B0aW9uSXRlbSxcbiAgICBpc1NlbGVjdGFibGVPcHRpb25JdGVtLFxuICAgIFNlbGVjdGFibGVPcHRpb25JdGVtXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgY29lcmNlQXJyYXlTYWZlLFxuICAgIERlc3Ryb3llZFNlcnZpY2UsXG4gICAgaXNGdW5jdGlvbixcbiAgICBpc0pzT2JqZWN0LFxuICAgIGlzU3RyaW5nLFxuICAgIE51bGxhYmxlLFxuICAgIFJhbmdlU2VsZWN0b3Jcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlPYnNlcnZlciB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jb250ZW50LWRlbnNpdHknO1xuaW1wb3J0IGVxdWFsIGZyb20gJ2Zhc3QtZGVlcC1lcXVhbCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIHNraXAsIHN0YXJ0V2l0aCwgU3Vic2NyaXB0aW9uLCB0YWtlVW50aWwsIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICAgIEZkTXVsdGlDb21ib2JveEFjY2VwdGFibGVEYXRhU291cmNlLFxuICAgIEZkTXVsdGlDb21ib0JveERhdGFTb3VyY2Vcbn0gZnJvbSAnLi9kYXRhLXNvdXJjZS9tdWx0aS1jb21ib2JveC1kYXRhLXNvdXJjZSc7XG5pbXBvcnQgeyBkaXNwbGF5VmFsdWUsIGZsYXR0ZW5Hcm91cHMsIGxvb2t1cFZhbHVlLCBvYmplY3RHZXQgfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHsgTXVsdGlDb21ib2JveFNlbGVjdGlvbkNoYW5nZUV2ZW50IH0gZnJvbSAnLi9tb2RlbHMvc2VsZWN0aW9uLWNoYW5nZS5ldmVudCc7XG5pbXBvcnQgeyBNdWx0aUNvbWJvYm94Q29uZmlnIH0gZnJvbSAnLi9tdWx0aS1jb21ib2JveC1jb25maWcnO1xuaW1wb3J0IHsgRkRfTUFQX0xJTUlUIH0gZnJvbSAnLi9tdWx0aS1jb21ib2JveC5jb21wb25lbnQnO1xuXG5leHBvcnQgdHlwZSBUZXh0QWxpZ25tZW50ID0gJ2xlZnQnIHwgJ3JpZ2h0JztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZU11bHRpQ29tYm9ib3g8VCA9IGFueT4ge1xuICAgIC8vIEluamVjdGlvbiBzZWN0aW9uXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBjdmFDb250cm9sOiBDdmFDb250cm9sPFQ+ID0gaW5qZWN0KEN2YUNvbnRyb2wpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBkYXRhU291cmNlRGlyZWN0aXZlOiBEYXRhU291cmNlRGlyZWN0aXZlPFQsIEZkTXVsdGlDb21ib0JveERhdGFTb3VyY2U8VD4+ID0gaW5qZWN0KERhdGFTb3VyY2VEaXJlY3RpdmUpO1xuXG4gICAgLyoqIENvbnRyb2wgVmFsdWUgQWNjZXNzb3IgZGlyZWN0aXZlIGZvciBmb3JtcyBzdXBwb3J0LiAqL1xuICAgIHJlYWRvbmx5IF9jdmEgPSBpbmplY3QoQ3ZhRGlyZWN0aXZlPFQ+LCB7XG4gICAgICAgIHNlbGY6IHRydWVcbiAgICB9KTtcblxuICAgIC8qKiBNdWx0aSBjb21ib2JveCBjb25maWcuICovXG4gICAgcmVhZG9ubHkgX211bHRpQ29tYm9ib3hDb25maWcgPSBpbmplY3QoTXVsdGlDb21ib2JveENvbmZpZywge1xuICAgICAgICBvcHRpb25hbDogdHJ1ZVxuICAgIH0pO1xuXG4gICAgLyoqIENvbnRlbnQgRGVuc2l0eSBPYnNlcnZlciAqL1xuICAgIHJlYWRvbmx5IGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXIgPSBpbmplY3QoQ29udGVudERlbnNpdHlPYnNlcnZlcik7XG5cbiAgICAvKiogQEhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfZWxtUmVmID0gaW5qZWN0KEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9jZCA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfbWFwTGltaXQgPSBpbmplY3QoRkRfTUFQX0xJTUlUKTtcblxuICAgIC8qKiBASGlkZGVuICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9kZXN0cm95ZWQkID0gaW5qZWN0KERlc3Ryb3llZFNlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIExpc3Qgb2Ygc2VsZWN0ZWQgc3VnZ2VzdGlvbnNcbiAgICAgKi9cbiAgICBfc2VsZWN0ZWRTdWdnZXN0aW9uczogU2VsZWN0YWJsZU9wdGlvbkl0ZW08VD5bXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIExpc3Qgb2YgbWF0Y2hlZCBzdWdnZXN0aW9uc1xuICAgICAqL1xuICAgIF9zdWdnZXN0aW9uczogU2VsZWN0YWJsZU9wdGlvbkl0ZW1bXTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBHcm91cGVkIHN1Z2dlc3Rpb25zIG1hcHBlZCB0byBhcnJheS5cbiAgICAgKi9cbiAgICBfZmxhdFN1Z2dlc3Rpb25zOiBTZWxlY3RhYmxlT3B0aW9uSXRlbVtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9mdWxsRmxhdFN1Z2dlc3Rpb25zOiBTZWxlY3RhYmxlT3B0aW9uSXRlbVtdID0gW107XG5cbiAgICBhYnN0cmFjdCBzZWxlY3RlZEl0ZW1zOiBUW107XG4gICAgYWJzdHJhY3QgZ3JvdXA6IGJvb2xlYW47XG4gICAgYWJzdHJhY3QgZ3JvdXBLZXk6IHN0cmluZztcbiAgICBhYnN0cmFjdCBkaXNwbGF5S2V5OiBzdHJpbmc7XG4gICAgYWJzdHJhY3Qgc2Vjb25kYXJ5S2V5OiBzdHJpbmc7XG4gICAgYWJzdHJhY3Qgc2hvd1NlY29uZGFyeVRleHQ6IGJvb2xlYW47XG4gICAgYWJzdHJhY3QgbG9va3VwS2V5OiBzdHJpbmc7XG4gICAgYWJzdHJhY3QgaW52YWxpZEVudHJ5TWVzc2FnZTogTnVsbGFibGU8c3RyaW5nPjtcbiAgICBhYnN0cmFjdCBpbnZhbGlkRW50cnlEaXNwbGF5VGltZTogbnVtYmVyO1xuICAgIGFic3RyYWN0IGxpbWl0bGVzczogYm9vbGVhbjtcbiAgICBhYnN0cmFjdCBpc0dyb3VwOiBib29sZWFuO1xuICAgIGFic3RyYWN0IGlucHV0VGV4dDogc3RyaW5nO1xuXG4gICAgYWJzdHJhY3Qgc2VhcmNoSW5wdXRFbGVtZW50OiBOdWxsYWJsZTxFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+PjtcblxuICAgIGFic3RyYWN0IHNlbGVjdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPE11bHRpQ29tYm9ib3hTZWxlY3Rpb25DaGFuZ2VFdmVudD47XG4gICAgYWJzdHJhY3QgZGF0YVJlY2VpdmVkOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj47XG4gICAgYWJzdHJhY3QgZGF0YVJlcXVlc3RlZDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZWxlY3RlZFNob3duJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX2RhdGFTb3VyY2U6IEZkTXVsdGlDb21ib2JveEFjY2VwdGFibGVEYXRhU291cmNlPFQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX2lucHV0VGV4dFZhbHVlOiBzdHJpbmc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfcHJldmlvdXNJbnB1dFRleHQ6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIF9tYXRjaGluZ1N0cmF0ZWd5OiBNYXRjaGluZ1N0cmF0ZWd5ID1cbiAgICAgICAgdGhpcy5fbXVsdGlDb21ib2JveENvbmZpZz8ubWF0Y2hpbmdTdHJhdGVneSA/PyBNYXRjaGluZ1N0cmF0ZWd5LkNPTlRBSU5TO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX2RzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIF9lbGVtZW50OiBIVE1MRWxlbWVudCA9IHRoaXMuX2VsbVJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEtleXMsIHRoYXQgd29uJ3QgdHJpZ2dlciB0aGUgcG9wb3ZlcidzIG9wZW4gc3RhdGUsIHdoZW4gZGlzcGF0Y2hlZCBvbiBzZWFyY2ggaW5wdXQuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9ub25PcGVuaW5nS2V5czogbnVtYmVyW10gPSBbXG4gICAgICAgIEJBQ0tTUEFDRSxcbiAgICAgICAgRVNDQVBFLFxuICAgICAgICBFTlRFUixcbiAgICAgICAgQ09OVFJPTCxcbiAgICAgICAgVEFCLFxuICAgICAgICBTSElGVCxcbiAgICAgICAgVVBfQVJST1csXG4gICAgICAgIFJJR0hUX0FSUk9XLFxuICAgICAgICBET1dOX0FSUk9XLFxuICAgICAgICBMRUZUX0FSUk9XLFxuICAgICAgICBBTFRcbiAgICBdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX3RpbWVyU3ViJDogU3Vic2NyaXB0aW9uO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX3ByZXZpb3VzU3RhdGU/OiBGb3JtU3RhdGVzO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX3ByZXZpb3VzU3RhdGVNZXNzYWdlOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3JhbmdlU2VsZWN0b3IgPSBuZXcgUmFuZ2VTZWxlY3RvcigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kYXRhU291cmNlQ2hhbmdlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX2Rpc3BsYXlGbiA9ICh2YWx1ZTogYW55KTogc3RyaW5nID0+IGRpc3BsYXlWYWx1ZSh2YWx1ZSwgdGhpcy5kaXNwbGF5S2V5KTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIF9zZWNvbmRhcnlGbiA9ICh2YWx1ZTogYW55KTogc3RyaW5nID0+IHtcbiAgICAgICAgaWYgKGlzT3B0aW9uSXRlbSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5zZWNvbmRhcnlUZXh0ID8/ICcnO1xuICAgICAgICB9IGVsc2UgaWYgKGlzSnNPYmplY3QodmFsdWUpICYmIHRoaXMuc2Vjb25kYXJ5S2V5KSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50SXRlbSA9IG9iamVjdEdldCh2YWx1ZSwgdGhpcy5zZWNvbmRhcnlLZXkpO1xuXG4gICAgICAgICAgICByZXR1cm4gaXNGdW5jdGlvbihjdXJyZW50SXRlbSkgPyBjdXJyZW50SXRlbSgpIDogY3VycmVudEl0ZW07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gY29lcmNlQXJyYXlTYWZlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5fY3ZhLndyaXRlVmFsdWUodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICAgICAgdGhpcy5fc2V0U2VsZWN0ZWRTdWdnZXN0aW9ucygpO1xuICAgICAgICB0aGlzLl9lbWl0Q2hhbmdlRXZlbnQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVc2VkIHRvIGNoYW5nZSB0aGUgdmFsdWUgb2YgYSBjb250cm9sLlxuICAgICAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUgdG8gYmUgYXBwbGllZFxuICAgICAqIEBwYXJhbSBlbWl0T25DaGFuZ2Ugd2hldGhlciB0byBlbWl0IFwib25DaGFuZ2VcIiBldmVudC5cbiAgICAgKiBTaG91bGQgYmUgXCJmYWxzZVwiLCBpZiB0aGUgY2hhbmdlIGlzIG1hZGUgcHJvZ3JhbW1hdGljYWxseSAoaW50ZXJuYWxseSkgYnkgdGhlIGNvbnRyb2wsIFwidHJ1ZVwiIG90aGVyd2lzZVxuICAgICAqL1xuICAgIHNldFZhbHVlKHZhbHVlOiBhbnksIGVtaXRPbkNoYW5nZSA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gY29lcmNlQXJyYXlTYWZlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5fY3ZhLnNldFZhbHVlKHRoaXMuc2VsZWN0ZWRJdGVtcywgZW1pdE9uQ2hhbmdlKTtcbiAgICAgICAgdGhpcy5fc2V0U2VsZWN0ZWRTdWdnZXN0aW9ucygpO1xuICAgICAgICB0aGlzLl9lbWl0Q2hhbmdlRXZlbnQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTWV0aG9kIHRvIGVtaXQgY2hhbmdlIGV2ZW50XG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9lbWl0Q2hhbmdlRXZlbnQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IE11bHRpQ29tYm9ib3hTZWxlY3Rpb25DaGFuZ2VFdmVudCh0aGlzLCB0aGlzLnNlbGVjdGVkSXRlbXMpO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIF9zZXRTZWxlY3RlZFN1Z2dlc3Rpb25zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZWxlY3RlZFN1Z2dlc3Rpb25zID0gW107XG5cbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkSXRlbXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB0aGlzLnNlbGVjdGVkSXRlbXNbaV07XG4gICAgICAgICAgICBjb25zdCBpZHggPSB0aGlzLl9mdWxsRmxhdFN1Z2dlc3Rpb25zLmZpbmRJbmRleChcbiAgICAgICAgICAgICAgICAoaXRlbSkgPT4gaXRlbS5sYWJlbCA9PT0gc2VsZWN0ZWRJdGVtIHx8IGl0ZW0udmFsdWUgPT09IHNlbGVjdGVkSXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChpZHggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRTdWdnZXN0aW9ucy5wdXNoKHRoaXMuX2Z1bGxGbGF0U3VnZ2VzdGlvbnNbaWR4XSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZnVsbEZsYXRTdWdnZXN0aW9uc1tpZHhdLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IG9yaWdpbmFsIGRhdGEgdG8gU2VsZWN0YWJsZU9wdGlvbkl0ZW1zIEludGVyZmFjZVxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2NvbnZlcnRUb09wdGlvbkl0ZW1zKGl0ZW1zOiBhbnlbXSk6IFNlbGVjdGFibGVPcHRpb25JdGVtPFQ+W10ge1xuICAgICAgICBjb25zdCBpdGVtID0gaXRlbXNbMF07XG5cbiAgICAgICAgY29uc3QgZWxlbWVudFR5cGVJc09wdGlvbkl0ZW0gPSBpc1NlbGVjdGFibGVPcHRpb25JdGVtKGl0ZW0pO1xuICAgICAgICBpZiAoZWxlbWVudFR5cGVJc09wdGlvbkl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtcyBhcyBTZWxlY3RhYmxlT3B0aW9uSXRlbVtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZWxlbWVudFR5cGVJc09iamVjdCA9IGlzSnNPYmplY3QoaXRlbSk7XG4gICAgICAgIGlmIChlbGVtZW50VHlwZUlzT2JqZWN0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY29udmVydE9iamVjdHNUb09wdGlvbkl0ZW1zKGl0ZW1zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVsZW1lbnRUeXBlSXNTdHJpbmcgPSBpc1N0cmluZyhpdGVtKTtcbiAgICAgICAgaWYgKGVsZW1lbnRUeXBlSXNTdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb252ZXJ0UHJpbWl0aXZlVG9PcHRpb25JdGVtcyhpdGVtcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydCBkYXRhIHRvIFNlbGVjdGFibGVPcHRpb25JdGVtcyBJbnRlcmZhY2VcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9jb252ZXJ0T2JqZWN0c1RvT3B0aW9uSXRlbXMoaXRlbXM6IFRbXSk6IFNlbGVjdGFibGVPcHRpb25JdGVtPFQ+W10ge1xuICAgICAgICBpZiAodGhpcy5pc0dyb3VwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY29udmVydE9iamVjdHNUb0dyb3VwT3B0aW9uSXRlbXMoaXRlbXMpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2hvd1NlY29uZGFyeVRleHQgJiYgdGhpcy5zZWNvbmRhcnlLZXkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb252ZXJ0T2JqZWN0c1RvU2Vjb25kYXJ5T3B0aW9uSXRlbXMoaXRlbXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnZlcnRPYmplY3RzVG9EZWZhdWx0T3B0aW9uSXRlbXMoaXRlbXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydCBvYmplY3RbXSBkYXRhIHRvIEdyb3VwIE9wdGlvbkl0ZW1zIEludGVyZmFjZVxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2NvbnZlcnRPYmplY3RzVG9Hcm91cE9wdGlvbkl0ZW1zPEsgZXh0ZW5kcyBUPihpdGVtczogS1tdKTogU2VsZWN0YWJsZU9wdGlvbkl0ZW08VD5bXSB7XG4gICAgICAgIGNvbnN0IGdyb3VwOiBSZWNvcmQ8c3RyaW5nLCBLW10+ID0ge307XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IGl0ZW1zW2ldO1xuICAgICAgICAgICAgY29uc3Qga2V5VmFsdWUgPSBpdGVtW3RoaXMuZ3JvdXBLZXldO1xuICAgICAgICAgICAgaWYgKCFrZXlWYWx1ZSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWdyb3VwW2tleVZhbHVlXSkge1xuICAgICAgICAgICAgICAgIGdyb3VwW2tleVZhbHVlXSA9IFtdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBncm91cFtrZXlWYWx1ZV0ucHVzaChpdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhncm91cCkubWFwKChrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdEl0ZW06IFNlbGVjdGFibGVPcHRpb25JdGVtID0ge1xuICAgICAgICAgICAgICAgIGxhYmVsOiBrZXksXG4gICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgaXNHcm91cDogdHJ1ZVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3QgY3VycmVudEdyb3VwID0gZ3JvdXBba2V5XTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuc2hvd1NlY29uZGFyeVRleHQgJiYgdGhpcy5zZWNvbmRhcnlLZXkpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RJdGVtLmNoaWxkcmVuID0gdGhpcy5fY29udmVydE9iamVjdHNUb1NlY29uZGFyeU9wdGlvbkl0ZW1zKGN1cnJlbnRHcm91cCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNlbGVjdEl0ZW0uY2hpbGRyZW4gPSB0aGlzLl9jb252ZXJ0T2JqZWN0c1RvRGVmYXVsdE9wdGlvbkl0ZW1zKGN1cnJlbnRHcm91cCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzZWxlY3RJdGVtO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IFRbXSBkYXRhIHRvIFNlY29uZGFyeSBTZWxlY3RhYmxlT3B0aW9uSXRlbXM8VD4gSW50ZXJmYWNlXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfY29udmVydE9iamVjdHNUb1NlY29uZGFyeU9wdGlvbkl0ZW1zPEsgZXh0ZW5kcyBUPihpdGVtczogS1tdKTogU2VsZWN0YWJsZU9wdGlvbkl0ZW08VD5bXSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdEl0ZW1zOiBTZWxlY3RhYmxlT3B0aW9uSXRlbVtdID0gW107XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBpdGVtc1tpXTtcbiAgICAgICAgICAgIHNlbGVjdEl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgIGxhYmVsOiBkaXNwbGF5VmFsdWUodmFsdWUsIHRoaXMuZGlzcGxheUtleSksXG4gICAgICAgICAgICAgICAgaWQ6IGxvb2t1cFZhbHVlKHZhbHVlLCB0aGlzLmxvb2t1cEtleSksXG4gICAgICAgICAgICAgICAgc2Vjb25kYXJ5VGV4dDogb2JqZWN0R2V0KHZhbHVlLCB0aGlzLnNlY29uZGFyeUtleSksXG4gICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWRJdGVtcz8uaW5jbHVkZXModmFsdWUpIHx8IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzZWxlY3RJdGVtcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IFByaW1pdGl2ZSBkYXRhKEJvb2xlYW4sIFN0cmluZywgTnVtYmVyKSB0byBTZWxlY3RhYmxlT3B0aW9uSXRlbXMgSW50ZXJmYWNlXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfY29udmVydFByaW1pdGl2ZVRvT3B0aW9uSXRlbXMoaXRlbXM6IGFueVtdKTogU2VsZWN0YWJsZU9wdGlvbkl0ZW08VD5bXSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdEl0ZW1zOiBTZWxlY3RhYmxlT3B0aW9uSXRlbVtdID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gaXRlbXNbaV07XG4gICAgICAgICAgICBzZWxlY3RJdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogdmFsdWUsXG4gICAgICAgICAgICAgICAgaWQ6IGxvb2t1cFZhbHVlKHZhbHVlLCB0aGlzLmxvb2t1cEtleSksXG4gICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWRJdGVtcz8uaW5jbHVkZXModmFsdWUpIHx8IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzZWxlY3RJdGVtcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IFRbXSB0byBTZWxlY3RhYmxlT3B0aW9uSXRlbXM8VD4gSW50ZXJmYWNlIChEZWZhdWx0KVxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2NvbnZlcnRPYmplY3RzVG9EZWZhdWx0T3B0aW9uSXRlbXMoaXRlbXM6IGFueVtdKTogU2VsZWN0YWJsZU9wdGlvbkl0ZW08VD5bXSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdEl0ZW1zOiBTZWxlY3RhYmxlT3B0aW9uSXRlbVtdID0gW107XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBpdGVtc1tpXTtcbiAgICAgICAgICAgIHNlbGVjdEl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgIGxhYmVsOiBkaXNwbGF5VmFsdWUodmFsdWUsIHRoaXMuZGlzcGxheUtleSksXG4gICAgICAgICAgICAgICAgaWQ6IGxvb2t1cFZhbHVlKHZhbHVlLCB0aGlzLmxvb2t1cEtleSksXG4gICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWRJdGVtcz8uaW5jbHVkZXModmFsdWUpIHx8IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzZWxlY3RJdGVtcztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfc2V0SW52YWxpZEVudHJ5KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fcHJldmlvdXNTdGF0ZSB8fCB0aGlzLl9wcmV2aW91c1N0YXRlTWVzc2FnZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcHJldmlvdXNTdGF0ZSA9IHRoaXMuX2N2YS5zdGF0ZTtcbiAgICAgICAgdGhpcy5fY3ZhLnN0YXRlID0gJ2Vycm9yJztcblxuICAgICAgICB0aGlzLl9wcmV2aW91c1N0YXRlTWVzc2FnZSA9IHRoaXMuX2N2YS5zdGF0ZU1lc3NhZ2U7XG4gICAgICAgIHRoaXMuX2N2YS5zdGF0ZU1lc3NhZ2UgPSB0aGlzLmludmFsaWRFbnRyeU1lc3NhZ2U7XG5cbiAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX3Vuc2V0SW52YWxpZEVudHJ5KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jdmEuc3RhdGUgPSB0aGlzLl9wcmV2aW91c1N0YXRlO1xuICAgICAgICB0aGlzLl9wcmV2aW91c1N0YXRlID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIHRoaXMuX2N2YS5zdGF0ZU1lc3NhZ2UgPSB0aGlzLl9wcmV2aW91c1N0YXRlTWVzc2FnZTtcbiAgICAgICAgdGhpcy5fcHJldmlvdXNTdGF0ZU1lc3NhZ2UgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX2ZvY3VzVG9TZWFyY2hGaWVsZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWFyY2hJbnB1dEVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfbWFwQW5kVXBkYXRlTW9kZWwoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbXMgPSB0aGlzLl9zZWxlY3RlZFN1Z2dlc3Rpb25zLm1hcCgoeyB2YWx1ZSB9KSA9PiB2YWx1ZSk7XG5cbiAgICAgICAgY29uc3Qgc2hvdWxkRW1pdENoYW5nZUV2ZW50ID0gIWVxdWFsKHRoaXMuc2VsZWN0ZWRJdGVtcywgc2VsZWN0ZWRJdGVtcyk7XG5cbiAgICAgICAgaWYgKCFzaG91bGRFbWl0Q2hhbmdlRXZlbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMud3JpdGVWYWx1ZShzZWxlY3RlZEl0ZW1zKTtcblxuICAgICAgICB0aGlzLl9jdmEub25DaGFuZ2Uoc2VsZWN0ZWRJdGVtcyk7XG5cbiAgICAgICAgdGhpcy5fZW1pdENoYW5nZUV2ZW50KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFByZXBhcmVzIHRoZSBkYXRhIHN0cmVhbSBhbmQgc3Vic2NyaWJlcyB0byBpdC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX29wZW5EYXRhU3RyZWFtKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBkYXRhU291cmNlUHJvdmlkZXIgPSB0aGlzLmRhdGFTb3VyY2VEaXJlY3RpdmUuZGF0YVNvdXJjZVByb3ZpZGVyO1xuXG4gICAgICAgIGlmICghZGF0YVNvdXJjZVByb3ZpZGVyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFtkYXRhU291cmNlXSBzb3VyY2UgZGlkIG5vdCBtYXRjaCBhbiBhcnJheSwgT2JzZXJ2YWJsZSwgb3IgRGF0YVNvdXJjZWApO1xuICAgICAgICB9XG5cbiAgICAgICAgZGF0YVNvdXJjZVByb3ZpZGVyLmxpbWl0bGVzcyA9IHRoaXMubGltaXRsZXNzO1xuXG4gICAgICAgIGRhdGFTb3VyY2VQcm92aWRlci5kYXRhUHJvdmlkZXIuc2V0TG9va3VwS2V5KHRoaXMubG9va3VwS2V5KTtcbiAgICAgICAgY29uc3QgbWF0Y2hpbmdCeTogTWF0Y2hpbmdCeSA9IHtcbiAgICAgICAgICAgIGZpcnN0Qnk6IHRoaXMuX2Rpc3BsYXlGblxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0aGlzLnNlY29uZGFyeUtleSkge1xuICAgICAgICAgICAgbWF0Y2hpbmdCeS5zZWNvbmRhcnlCeSA9IHRoaXMuX3NlY29uZGFyeUZuO1xuICAgICAgICB9XG5cbiAgICAgICAgZGF0YVNvdXJjZVByb3ZpZGVyLmRhdGFQcm92aWRlci5zZXRNYXRjaGluZ0J5KG1hdGNoaW5nQnkpO1xuICAgICAgICBkYXRhU291cmNlUHJvdmlkZXIuZGF0YVByb3ZpZGVyLnNldE1hdGNoaW5nU3RyYXRlZ3kodGhpcy5fbWF0Y2hpbmdTdHJhdGVneSk7XG5cbiAgICAgICAgLy8gaW5pdGlhbCBkYXRhIGZldGNoXG4gICAgICAgIGNvbnN0IG1hcCA9IG5ldyBNYXAoKTtcbiAgICAgICAgbWFwLnNldCgncXVlcnknLCAnKicpO1xuXG4gICAgICAgIGlmICghdGhpcy5saW1pdGxlc3MpIHtcbiAgICAgICAgICAgIG1hcC5zZXQoJ2xpbWl0JywgdGhpcy5fbWFwTGltaXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgZGF0YVNvdXJjZVByb3ZpZGVyLm1hdGNoKG1hcCk7XG5cbiAgICAgICAgdGhpcy5fZHNTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAgICAgdGhpcy5fZHNTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlRGlyZWN0aXZlLmRhdGFTb3VyY2VQcm92aWRlcj8uZGF0YVJlcXVlc3RlZC5zdWJzY3JpYmUodGhpcy5kYXRhUmVxdWVzdGVkKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9kc1N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgICAgICB0aGlzLmRhdGFTb3VyY2VEaXJlY3RpdmUuZGF0YVNvdXJjZVByb3ZpZGVyPy5kYXRhUmVjZWl2ZWQuc3Vic2NyaWJlKHRoaXMuZGF0YVJlY2VpdmVkKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZURpcmVjdGl2ZS5kYXRhU291cmNlQ2hhbmdlZC5waXBlKHN0YXJ0V2l0aCh0cnVlKSwgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fZGF0YVNvdXJjZUNoYW5nZWQgPSB0cnVlO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmRhdGFTb3VyY2VEaXJlY3RpdmUuZGF0YUNoYW5nZWQkLnBpcGUoc2tpcCgwKSwgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCQpKS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgICAgICAgIGlmIChkYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3NpbmdFbXB0eURhdGEoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX3ByZXZpb3VzSW5wdXRUZXh0ID0gdGhpcy5pbnB1dFRleHQ7XG5cbiAgICAgICAgICAgIHRoaXMuX3BhcnNlRGF0YVNvdXJjZVZhbHVlKGRhdGEpO1xuXG4gICAgICAgICAgICB0aGlzLl9jdmEuc3RhdGVDaGFuZ2VzLm5leHQoJ2luaXREYXRhU291cmNlLm9wZW4oKS4nKTtcblxuICAgICAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhcnNlcyB0aGUgZGF0YSBmcm9tIHRoZSBkYXRhIHN0cmVhbSBhbmQgdXBkYXRlcyB0aGUgbW9kZWwgaWYgbmVlZGVkLlxuICAgICAqIEBwYXJhbSBkYXRhIGFycmF5IG9mIG9iamVjdHMgZnJvbSB0aGUgZGF0YSBzdHJlYW0uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9wYXJzZURhdGFTb3VyY2VWYWx1ZShkYXRhOiBUW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29udmVydERhdGFTb3VyY2VTdWdnZXN0aW9ucyhkYXRhKTtcblxuICAgICAgICBjb25zdCBzZWxlY3RlZFN1Z2dlc3Rpb25zTGVuZ3RoID0gdGhpcy5fc2VsZWN0ZWRTdWdnZXN0aW9ucy5sZW5ndGg7XG4gICAgICAgIGlmIChzZWxlY3RlZFN1Z2dlc3Rpb25zTGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWxlY3RlZFN1Z2dlc3Rpb25zTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZFN1Z2dlc3Rpb24gPSB0aGlzLl9zZWxlY3RlZFN1Z2dlc3Rpb25zW2ldO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkeCA9IHRoaXMuX3N1Z2dlc3Rpb25zLmZpbmRJbmRleCgoaXRlbSkgPT4gZXF1YWwoaXRlbS52YWx1ZSwgc2VsZWN0ZWRTdWdnZXN0aW9uLnZhbHVlKSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoaWR4ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdWdnZXN0aW9uc1tpZHhdLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fZGF0YVNvdXJjZUNoYW5nZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2ZsYXRTdWdnZXN0aW9ucyA9IHRoaXMuaXNHcm91cCA/IGZsYXR0ZW5Hcm91cHModGhpcy5fc3VnZ2VzdGlvbnMpIDogdGhpcy5fc3VnZ2VzdGlvbnM7XG4gICAgICAgICAgICB0aGlzLl9mdWxsRmxhdFN1Z2dlc3Rpb25zID0gdGhpcy5fZmxhdFN1Z2dlc3Rpb25zO1xuXG4gICAgICAgICAgICB0aGlzLl9zZXRTZWxlY3RlZFN1Z2dlc3Rpb25zKCk7XG5cbiAgICAgICAgICAgIHRoaXMuX21hcEFuZFVwZGF0ZU1vZGVsKCk7XG5cbiAgICAgICAgICAgIHRoaXMuX2RhdGFTb3VyY2VDaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmFuc2Zvcm1zIHBsYWluIGFycmF5IGludG8gYFNlbGVjdGFibGVPcHRpb25JdGVtPFQ+YFxuICAgICAqIEBwYXJhbSBkYXRhXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9jb252ZXJ0RGF0YVNvdXJjZVN1Z2dlc3Rpb25zKGRhdGE6IFRbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWdnZXN0aW9ucyA9IHRoaXMuX2NvbnZlcnRUb09wdGlvbkl0ZW1zKGRhdGEpLm1hcCgob3B0aW9uSXRlbSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50ID0gdGhpcy5fc2VsZWN0ZWRTdWdnZXN0aW9ucy5maW5kKChzZWxlY3RlZEl0ZW0pID0+IHNlbGVjdGVkSXRlbS5pZCA9PT0gb3B0aW9uSXRlbS5pZCk7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgb3B0aW9uSXRlbS5zZWxlY3RlZCA9IHNlbGVjdGVkRWxlbWVudC5zZWxlY3RlZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBvcHRpb25JdGVtO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfcHJvY2Vzc2luZ0VtcHR5RGF0YSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnB1dFRleHQgPSB0aGlzLl9wcmV2aW91c0lucHV0VGV4dDtcblxuICAgICAgICB0aGlzLl9zZXRJbnZhbGlkRW50cnkoKTtcblxuICAgICAgICBpZiAodGhpcy5fdGltZXJTdWIkKSB7XG4gICAgICAgICAgICB0aGlzLl90aW1lclN1YiQudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3RpbWVyU3ViJCA9IHRpbWVyKHRoaXMuaW52YWxpZEVudHJ5RGlzcGxheVRpbWUpLnN1YnNjcmliZSgoKSA9PiB0aGlzLl91bnNldEludmFsaWRFbnRyeSgpKTtcblxuICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxufVxuIl19
|