@yuuvis/client-shell-core 2.20.0 → 2.21.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.
|
@@ -453,4 +453,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
453
453
|
providedIn: 'root'
|
|
454
454
|
}]
|
|
455
455
|
}], ctorParameters: () => [] });
|
|
456
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveXV1dmlzL2NsaWVudC1zaGVsbC1jb3JlL3NyYy9saWIvc2VydmljZXMvc2hlbGwvc2hlbGwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sMEJBQTBCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFjLGFBQWEsRUFBRSxNQUFNLEVBQTRCLE1BQU0saUJBQWlCLENBQUM7QUFDOUcsT0FBTyxFQUNMLE9BQU8sRUFDUCxtQkFBbUIsRUFDbkIsYUFBYSxFQUViLFVBQVUsRUFFVixhQUFhLEVBQ2IsVUFBVSxFQUNWLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsS0FBSyxFQUVOLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUNMLGVBQWUsRUFDZixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxjQUFjLEVBQ2QsU0FBUyxFQUNULEdBQUcsRUFFSCxFQUFFLEVBQ0YsR0FBRyxFQUNKLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFVaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7O0FBSzFFLE1BQU0sT0FBTyxZQUFZO0lBQ3ZCLFdBQVcs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ZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgc2lnbmFsLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRJY29uUmVnaXN0cnkgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb24sIE5hdmlnYXRpb25FbmQsIFJvdXRlciwgVXJsU2VnbWVudEdyb3VwLCBVcmxUcmVlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIEFwaUJhc2UsXG4gIEJhc2VPYmplY3RUeXBlRmllbGQsXG4gIENvbmZpZ1NlcnZpY2UsXG4gIERtc09iamVjdCxcbiAgRG1zU2VydmljZSxcbiAgT2JqZWN0Q3JlYXRlRmxhdm9yLFxuICBTeXN0ZW1TZXJ2aWNlLFxuICBTeXN0ZW1UeXBlLFxuICBUcmFuc2xhdGVTZXJ2aWNlLFxuICBVc2VyU2VydmljZSxcbiAgVXRpbHMsXG4gIFl1dlVzZXJcbn0gZnJvbSAnQHl1dXZpcy9jbGllbnQtY29yZSc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGRlYm91bmNlVGltZSxcbiAgZmlsdGVyLFxuICBmaXJzdCxcbiAgZmlyc3RWYWx1ZUZyb20sXG4gIGZyb21FdmVudCxcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgdGFwXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ0xJRU5UX1NIRUxMX0FTU0VUUyB9IGZyb20gJy4uLy4uL2NsaWVudC1zaGVsbC5hc3NldHMnO1xuaW1wb3J0IHtcbiAgQXBwLFxuICBBcHBGbGF2b3IsXG4gIENsaWVudFNoZWxsQ29uZmlnLFxuICBHbG9iYWxTaG9ydGN1dCxcbiAgT2JqZWN0Rmxhdm9yLFxuICBTaGVsbEFwcFNldHRpbmdzXG59IGZyb20gJy4uLy4uL21vZGVscy9jbGllbnQtc2hlbGwuaW50ZXJmYWNlJztcbmltcG9ydCB7IFRpbGVFeHRlbnNpb24gfSBmcm9tICcuLi8uLi90aWxlLWV4dGVuc2lvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU0hFTExfQ09ORklHX1RZUEVTIH0gZnJvbSAnLi4vc2hlbGwtY29uZmlnL3NoZWxsLWNvbmZpZy5jb25zdCc7XG5pbXBvcnQgeyBDbGllbnRTaGVsbFR5cGUsIFNoZWxsQ29uZmlnIH0gZnJvbSAnLi4vc2hlbGwtY29uZmlnL3NoZWxsLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU2hlbGxDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vc2hlbGwtY29uZmlnL3NoZWxsLWNvbmZpZy5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU2hlbGxTZXJ2aWNlIHtcbiAgI2Rtc1NlcnZpY2UgPSBpbmplY3QoRG1zU2VydmljZSk7XG5cbiAgI2RpYWxvZyA9IGluamVjdChNYXREaWFsb2cpO1xuICAjc3lzdGVtID0gaW5qZWN0KFN5c3RlbVNlcnZpY2UpO1xuICAjdXNlclNlcnZpY2UgPSBpbmplY3QoVXNlclNlcnZpY2UpO1xuICAvLyBUT0RPOiBOZWVkIG9yaWduYWwgTWF0SWNvblJlZ2lzdHJ5IHRvICNyZWdpc3Rlck9iamVjdFR5cGVJY29ucywgb3RoZXJ3aXNlIGljb25zIGNvdWxkIG5vdCBiZSByZWdpc3RlcmVkIGluIHRoZSBuYW1lc3BhY2VcbiAgLy8gI2ljb25SZWdpc3RyeSA9IGluamVjdChZdXZNYXRJY29uUmVnaXN0cnkpO1xuICAjaWNvblJlZ2lzdHJ5ID0gaW5qZWN0KE1hdEljb25SZWdpc3RyeSk7XG4gICNzaGVsbENvbmZpZyA9IGluamVjdChTaGVsbENvbmZpZ1NlcnZpY2UpO1xuICAjY29uZmlnU2VydmljZSA9IGluamVjdChDb25maWdTZXJ2aWNlKTtcbiAgI3Nhbml0aXplciA9IGluamVjdChEb21TYW5pdGl6ZXIpO1xuICAjcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gICNyb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gICNET0NVTUVOVCA9IGluamVjdChET0NVTUVOVCk7XG4gIHByaXZhdGUgdHJhbnNsYXRlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuXG4gIHByaXZhdGUgX2J1c3lDb3VudCA9IDA7XG4gIHByaXZhdGUgaXNCdXN5U3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBpc0J1c3kkID0gdGhpcy5pc0J1c3lTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGVib3VuY2VUaW1lKDUwMCkpO1xuXG4gIC8vIEFwcHMgY2FuIHJlZ2lzdGVyIHRoZWlyIG93biBzZXR0aW5nIGNvbXBvbmVudHMgdG8gYmUgc2hvd24gaW4gc2hlbGwgc2V0dGluZ3NcbiAgI2FwcFNldHRpbmdzID0gc2lnbmFsPFNoZWxsQXBwU2V0dGluZ3NbXT4oW10pO1xuICBhcHBTZXR0aW5ncyA9IHRoaXMuI2FwcFNldHRpbmdzLmFzUmVhZG9ubHkoKTtcblxuICBhcHBCYXNlUm91dGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgI2RlZmF1bHRTaGVsbENvbmZpZzogQ2xpZW50U2hlbGxDb25maWcgPSB7XG4gICAgYXBwSWNvbjogQ0xJRU5UX1NIRUxMX0FTU0VUUy5hcHBJY29uLFxuICAgIHNoZWxsSWNvbk5hbWVzcGFjZTogQ0xJRU5UX1NIRUxMX0FTU0VUUy5zaGVsbEljb25OYW1lc3BhY2VcbiAgfTtcbiAgc2hlbGxDb25maWcgPSBzaWduYWw8Q2xpZW50U2hlbGxDb25maWc+KHRoaXMuI2RlZmF1bHRTaGVsbENvbmZpZyk7XG4gIGFwcHMgPSBzaWduYWw8QXBwW10+KFtdKTtcblxuICAvKiogVE9ETzogaW1wbGVtZW50IHRoaXMgZmVhdHVyZSA/Pz8/XG4gICAqIEdsb2JhbCBzaG9ydGN1dHMgYXJlIGNhcHR1cmVkIGJ5IHRoZSBzaGVsbCB0byBwcm92aWRlIGEgY29uc2lzdGVudCBleHBlcmllbmNlXG4gICAqIGFjY3Jvc3MgYWxsIGFwcHMuIFNlYXJjaCBpcyBvbmUgZXhhbXBsZS4gQXBwcyBzaG91bGQgbm90IGRlZmluZSB0aGVpciBvd24gc2hvdXJ0Y3V0c1xuICAgKiBmb3Igc2VhcmNoLiBJbnN0ZWFkIHRoZXkgc2hvdWxkIHN1YnNjcmliZSB0byB0aGUgZ2xvYmFsIHNob3J0Y3V0cyBhbmQgaW5pdGlhbGl6ZSB0aGVpclxuICAgKiBzZWFyY2ggYmFzZWQgb24gdGhlIGdsb2JhbCBzZWFyY2ggc2hvcnRjdXQuXG4gICAqL1xuICBnbG9iYWxTaG9ydGN1dHMkOiBPYnNlcnZhYmxlPEdsb2JhbFNob3J0Y3V0PiA9IGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pihkb2N1bWVudCwgJ2tleWRvd24nKS5waXBlKFxuICAgIG1hcCgoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgLy8gZ2xvYmFsIHNob3J0Y3V0IGZvciBzZWFyY2hcbiAgICAgIC8vIGlmIChlLmN0cmxLZXkgJiYgZS5jb2RlID09PSAnS2V5RicpIHtcbiAgICAgIC8vICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgLy8gICByZXR1cm4gR2xvYmFsU2hvcnRjdXQuc2VhcmNoO1xuICAgICAgLy8gfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9KSxcbiAgICBmaWx0ZXIoKHM6IEdsb2JhbFNob3J0Y3V0IHwgdW5kZWZpbmVkKSA9PiBzICE9PSB1bmRlZmluZWQpLFxuICAgIG1hcCgocykgPT4gcyBhcyBHbG9iYWxTaG9ydGN1dClcbiAgKTtcblxuICBwcml2YXRlIF9leHRlbnNpb25zOiBSZWNvcmQ8c3RyaW5nLCBUaWxlRXh0ZW5zaW9uPiA9IHt9O1xuICBwcml2YXRlIF9vYmplY3RGbGF2b3JzOiBPYmplY3RGbGF2b3JbXSA9IFtdO1xuICBwcml2YXRlIF9vYmplY3RDcmVhdGVGbGF2b3JzOiBPYmplY3RDcmVhdGVGbGF2b3JbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMudHJhbnNsYXRlLm9uTGFuZ0NoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5hcHBzLnNldCh0aGlzLiNnZXRNYXBwZWRBcHBzKHRoaXMuYXBwcygpKSk7XG4gICAgfSk7XG5cbiAgICAvLyB0cmFjayBvcGVuIGRpYWxvZ3MgaW4gYW4gYXV4aWxsYXJ5IHJvdXRlIHRvIHN1cHBvcnQgY2xvc2luZyB0aGVtIG9uIGJhY2sgbmF2aWdhdGlvblxuICAgIC8vIGFzIHRoaXMgaXMgdGhlIGV4cGVjdGVkIGJlaGF2aW91ciBvbiBtb2JpbGUgZGV2aWNlc1xuICAgIHRoaXMuI2RpYWxvZy5hZnRlck9wZW5lZC5zdWJzY3JpYmUoKHJlZjogTWF0RGlhbG9nUmVmPGFueSwgYW55PikgPT4ge1xuICAgICAgdGhpcy4jcm91dGVyLm5hdmlnYXRlKFt7IG91dGxldHM6IHsgZHQ6IFsnZGlhbG9ncycsIHRoaXMuI2RpYWxvZy5vcGVuRGlhbG9ncy5tYXAoKGQsIGkpID0+IGkpLmpvaW4oJy0nKV0gfSB9XSwge1xuICAgICAgICAvLyByZXBsYWNlVXJsOiB0cnVlLFxuICAgICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAncHJlc2VydmUnXG4gICAgICB9KTtcbiAgICAgIHJlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICAgIGlmIChyZXM/LmNsb3NlZEJ5Um91dGUpIHJldHVybjtcbiAgICAgICAgY29uc3Qgb3BlbkRpYWxvZ3MgPSB0aGlzLiNkaWFsb2cub3BlbkRpYWxvZ3MuZmlsdGVyKChkKSA9PiBkLmlkICE9PSByZWYuaWQpO1xuICAgICAgICAvLyBoYXZpbmcgbm8gb3BlbiBkaWFsb2dzLCBjbGVhciB0aGUgYXV4aWxsYXJ5IHJvdXRlXG4gICAgICAgIGNvbnN0IHBhcmFtID0gb3BlbkRpYWxvZ3MubGVuZ3RoID4gMCA/IFsnZGlhbG9ncycsIG9wZW5EaWFsb2dzLm1hcCgoZCwgaSkgPT4gaSkuam9pbignLScpXSA6IG51bGw7XG4gICAgICAgIHRoaXMuI3JvdXRlci5uYXZpZ2F0ZShbeyBvdXRsZXRzOiB7IGR0OiBwYXJhbSB9IH1dLCB7IHJlcGxhY2VVcmw6IHRydWUsIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdwcmVzZXJ2ZScgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICB0aGlzLiNyb3V0ZXIuZXZlbnRzLnBpcGUoZmlsdGVyKChlKSA9PiBlIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgLy8gd2hlbiBuYXZpZ2F0aW5nIGFuZCBoYXZpbmcgbm8gb3BlbiBkaWFsb2dzLCBjbGVhciB0aGUgYXV4aWxsYXJ5IHJvdXRlIGZyb20gdGhlIHVybFxuICAgICAgaWYgKHRoaXMuI2RpYWxvZy5vcGVuRGlhbG9ncy5sZW5ndGggPT09IDAgJiYgZS51cmxBZnRlclJlZGlyZWN0cy5tYXRjaCgvKGR0OlsuXSopLykpIHtcbiAgICAgICAgdGhpcy4jcm91dGVyLm5hdmlnYXRlKFt7IG91dGxldHM6IHsgZHQ6IG51bGwgfSB9XSwgeyByZXBsYWNlVXJsOiB0cnVlLCBxdWVyeVBhcmFtc0hhbmRsaW5nOiAncHJlc2VydmUnIH0pO1xuICAgICAgfVxuXG4gICAgICAvLyBpZiB0aGVyZSBhcmUgb3BlbiBkaWFsb2dzIGFuZCB0aGUgcHJpbWFyeSByb3V0ZSBjaGFuZ2VkLCBjbG9zZSBhbGwgb3BlbiBkaWFsb2dzXG4gICAgICBpZiAodGhpcy4jZGlhbG9nLm9wZW5EaWFsb2dzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaWYgKHRoaXMucHJpbWFyeVJvdXRlQ2hhbmdlZCh0aGlzLiNyb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKSkpIHtcbiAgICAgICAgICB0aGlzLiNkaWFsb2cub3BlbkRpYWxvZ3MuZm9yRWFjaCgoZCkgPT4gZC5jbG9zZSgpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgI2dldFByaW1hcnlSb3V0ZShuYXY6IE5hdmlnYXRpb24gfCBudWxsKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIW5hdikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjb25zdCB1cmw6IFVybFRyZWUgPSBuYXYuZmluYWxVcmwgfHwgbmF2LmV4dHJhY3RlZFVybDtcbiAgICBjb25zdCB1cmxUcmVlQ2hpbGRyZW46IFVybFNlZ21lbnRHcm91cCB8IHVuZGVmaW5lZCA9IHVybC5yb290LmNoaWxkcmVuWydwcmltYXJ5J107XG4gICAgcmV0dXJuIHVybFRyZWVDaGlsZHJlbiA/IHVybFRyZWVDaGlsZHJlbi5zZWdtZW50cy5tYXAoKHMpID0+IHMucGF0aCkuam9pbignLycpIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpbWFyeVJvdXRlQ2hhbmdlZChuYXY6IE5hdmlnYXRpb24gfCBudWxsKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcHJldmlvdXNOYXYgPSBuYXY/LnByZXZpb3VzTmF2aWdhdGlvbiB8fCBudWxsO1xuICAgIHJldHVybiB0aGlzLiNnZXRQcmltYXJ5Um91dGUobmF2KSAhPT0gdGhpcy4jZ2V0UHJpbWFyeVJvdXRlKHByZXZpb3VzTmF2KTtcbiAgfVxuXG4gIHBpY2tGaWxlKCk6IE9ic2VydmFibGU8RmlsZSB8IG51bGw+IHtcbiAgICBjb25zdCBpbnB1dCA9IHRoaXMuI0RPQ1VNRU5ULmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgaW5wdXQudHlwZSA9ICdmaWxlJztcbiAgICBpbnB1dC5jbGljaygpO1xuICAgIHJldHVybiBmcm9tRXZlbnQoaW5wdXQsICdjaGFuZ2UnKS5waXBlKFxuICAgICAgbWFwKChlOiBFdmVudCkgPT4gKGUudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmZpbGVzPy5bMF0gfHwgbnVsbCksXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICBpbnB1dC5yZW1vdmUoKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHNldFNoZWxsQ29uZmlnKGNzYzogQ2xpZW50U2hlbGxDb25maWcpIHtcbiAgICB0aGlzLnNoZWxsQ29uZmlnLnVwZGF0ZSgoc2MpID0+ICh7XG4gICAgICBhcHBJY29uOiBjc2MuYXBwSWNvbiA/PyBzYy5hcHBJY29uLFxuICAgICAgc2hlbGxJY29uTmFtZXNwYWNlOiBjc2Muc2hlbGxJY29uTmFtZXNwYWNlID8/IHNjLnNoZWxsSWNvbk5hbWVzcGFjZVxuICAgIH0pKTtcbiAgfVxuXG4gIHNldEFwcHMoYXBwczogQXBwW10pIHtcbiAgICB0aGlzLmFwcHMuc2V0KHRoaXMuI2dldE1hcHBlZEFwcHMoYXBwcykpO1xuICAgIGNvbnN0IGFwcEJhc2VSb3V0ZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgICBhcHBzLmZvckVhY2goKGEpID0+IChhcHBCYXNlUm91dGVzW2EuaWRdID0gYS5wYXRoIHx8ICcnKSk7XG4gICAgdGhpcy5hcHBCYXNlUm91dGVzID0gYXBwQmFzZVJvdXRlcztcbiAgfVxuXG4gICNnZXRNYXBwZWRBcHBzKGFwcHM6IEFwcFtdKTogQXBwW10ge1xuICAgIHJldHVybiBhcHBzLm1hcCgoYSkgPT4ge1xuICAgICAgY29uc3QgbWEgPSB7XG4gICAgICAgIC4uLmEsXG4gICAgICAgIHRpdGxlOiB0aGlzLiNnZXRBcHBUaXRsZShhKVxuICAgICAgfTtcbiAgICAgIGlmIChhLm9wdGlvbnM/LmFwcENsYWltS2V5KSB7XG4gICAgICAgIG1hLm9wdGlvbnMgPSB7IC4uLm1hLm9wdGlvbnMsIGFwcENsYWltOiB0aGlzLiNnZXRBcHBDbGFpbShhLm9wdGlvbnMuYXBwQ2xhaW1LZXkpIHx8IGEub3B0aW9ucy5hcHBDbGFpbSB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG1hO1xuICAgIH0pO1xuICB9XG5cbiAgI2dldEFwcFRpdGxlKGE6IEFwcCk6IHN0cmluZyB7XG4gICAgY29uc3QgdHJhbnNsYXRlZFRpdGxlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChhLmlkKTtcbiAgICByZXR1cm4gdHJhbnNsYXRlZFRpdGxlICYmICF0cmFuc2xhdGVkVGl0bGUuc3RhcnRzV2l0aCgnIW1pc3NpbmcnKSA/IHRyYW5zbGF0ZWRUaXRsZSA6IChhLnRpdGxlIGFzIHN0cmluZykgfHwgJyc7XG4gIH1cblxuICAjZ2V0QXBwQ2xhaW0oY2xhaW1LZXk6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgdHJhbnNsYXRlZENsYWltID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChjbGFpbUtleSk7XG4gICAgcmV0dXJuIHRyYW5zbGF0ZWRDbGFpbSAmJiAhdHJhbnNsYXRlZENsYWltLnN0YXJ0c1dpdGgoJyFtaXNzaW5nJykgPyB0cmFuc2xhdGVkQ2xhaW0gOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXRBcHAoaWQ6IHN0cmluZyk6IEFwcCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuYXBwcygpLmZpbmQoKGEpID0+IGlkID09PSBhLmlkKTtcbiAgfVxuXG4gIGdldEFwcHMoaWRzOiBzdHJpbmdbXSA9IFtdKTogQXBwW10ge1xuICAgIHJldHVybiBpZHMubGVuZ3RoID8gdGhpcy5hcHBzKCkuZmlsdGVyKChhKSA9PiBpZHMuaW5jbHVkZXMoYS5pZCkpIDogdGhpcy5hcHBzKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgc2V0dGluZ3MgZm9yIGFwcHMgdG8gaG9vayBpbnRvIHNoZWxsIHNldHRpbmdzIHBhZ2UuXG4gICAqIEBwYXJhbSBhcHBJRCBJRCBvZiB0aGUgYXBwIHRoYXQgZXhwb3NlcyB0aGUgc2V0dGluZ3NcbiAgICogQHBhcmFtIGNmZyBTaGVsbEFwcFNldHRpbmdzIG9iamVjdCBjb250YWluaW5nIHRoZSBzZXR0aW5ncyBjb21wb25lbnRcbiAgICovXG4gIHJlZ2lzdGVyQXBwU2V0dGluZ3MoY2ZnOiBTaGVsbEFwcFNldHRpbmdzKSB7XG4gICAgdGhpcy4jYXBwU2V0dGluZ3Muc2V0KFsuLi50aGlzLiNhcHBTZXR0aW5ncygpLCBjZmddKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIHBlcnNpc3RlZCBzZXR0aW5ncyBmb3IgYSBzcGVjaWZpYyBhcHBcbiAgICogQHBhcmFtIGFwcElEIElEIG9mIHRoZSBhcHAgdG8gbG9hZCB0aGUgc2V0dGluZ3MgZm9yXG4gICAqL1xuICB1c2Vyc0FwcFNldHRpbmdzJChhcHBJRDogc3RyaW5nKTogT2JzZXJ2YWJsZTxTaGVsbEFwcFNldHRpbmdzIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuI3VzZXJTZXJ2aWNlLnVzZXIkLnBpcGUoXG4gICAgICBtYXAoKHU6IFl1dlVzZXIgfCB1bmRlZmluZWQpID0+IHtcbiAgICAgICAgcmV0dXJuIHUgJiYgdS51c2VyU2V0dGluZ3MuY2xpZW50QXBwU2V0dGluZ3MgPyB1LnVzZXJTZXR0aW5ncy5jbGllbnRBcHBTZXR0aW5nc1thcHBJRF0gOiB1bmRlZmluZWQ7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBzYXZlVXNlcnNBcHBTZXR0aW5ncyhhcHBJRDogc3RyaW5nLCBzZXR0aW5nczogU2hlbGxBcHBTZXR0aW5ncyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuI3VzZXJTZXJ2aWNlLnNhdmVVc2VyU2V0dGluZ3MoeyBjbGllbnRBcHBTZXR0aW5nczogeyBbYXBwSURdOiBzZXR0aW5ncyB9IH0pO1xuICB9XG5cbiAgYWRkQnVzeSgpIHtcbiAgICBpZiAodGhpcy5fYnVzeUNvdW50ID09PSAwKSB7XG4gICAgICB0aGlzLmlzQnVzeVN1YmplY3QubmV4dCh0cnVlKTtcbiAgICB9XG4gICAgdGhpcy5fYnVzeUNvdW50Kys7XG4gIH1cbiAgcmVtb3ZlQnVzeSgpIHtcbiAgICB0aGlzLl9idXN5Q291bnQtLTtcbiAgICBpZiAodGhpcy5fYnVzeUNvdW50ID09PSAwKSB7XG4gICAgICB0aGlzLmlzQnVzeVN1YmplY3QubmV4dChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEV4cG9zZXMgb2JqZWN0IGNyZWF0ZSBmbGF2b3JzIHRvIHRoZSBzaGVsbC5cbiAgICogVGhlcyBmbGF2b3JzIGRlc2NyaWJlIGRpZmZlcmVudCB3YXlzIG9mIGhvdyBvYmplY3RzIGNhbiBiZSBjcmVhdGVkLiBTbyBhcHBzXG4gICAqIGNhbiByZWdpc3RlciBjdXN0b20gd2F5cyBvZiBjcmVhdGluZyBvYmplY3RzIHRoYXQgY2FuIHRoZW4gYmUgdXNlZCBieSBvdGhlciBhcHBzLlxuICAgKiBAcGFyYW0gZmxhdm9ycyBDcmVhdGUgZmxhdm9ycyB0byBiZSBleHBvc2VkXG4gICAqL1xuICBleHBvc2VPYmplY3RDcmVhdGVGbGF2b3JzKGZsYXZvcnM6IE9iamVjdENyZWF0ZUZsYXZvcltdKSB7XG4gICAgZmxhdm9ycy5mb3JFYWNoKChmbGF2b3I6IE9iamVjdENyZWF0ZUZsYXZvcikgPT4ge1xuICAgICAgY29uc3QgaWR4ID0gdGhpcy5fb2JqZWN0Q3JlYXRlRmxhdm9ycy5maW5kSW5kZXgoKGYpID0+IGYuaWQgPT09IGZsYXZvci5pZCk7XG4gICAgICBpZiAoaWR4ID09PSAtMSkgdGhpcy5fb2JqZWN0Q3JlYXRlRmxhdm9ycy5wdXNoKGZsYXZvcik7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIG9iamVjdCBjcmVhdGUgZmxhdm9ycyBmcm9tIHRoZSBzaGVsbHMgcmVnaXN0cnlcbiAgICogQHBhcmFtIGZsYXZvcnMgQ3JlYXRlIGZsYXZvcnMgdG8gYmUgcmVtb3ZlZFxuICAgKi9cbiAgY29uY2VhbE9iamVjdENyZWF0ZUZsYXZvcnMoZmxhdm9yczogT2JqZWN0Q3JlYXRlRmxhdm9yW10pIHtcbiAgICBjb25zdCBmaWQgPSBmbGF2b3JzLm1hcCgoZikgPT4gZi5pZCk7XG4gICAgdGhpcy5fb2JqZWN0Q3JlYXRlRmxhdm9ycyA9IHRoaXMuX29iamVjdENyZWF0ZUZsYXZvcnMuZmlsdGVyKChmKSA9PiAhZmlkLmluY2x1ZGVzKGYuaWQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYWxsIHJlZ2lzdGVyZCBvYmplY3QgY3JlYXRlIGZsYXZvcnNcbiAgICovXG4gIGdldE9iamVjdENyZWF0ZUZsYXZvcnMoKTogT2JqZWN0Q3JlYXRlRmxhdm9yW10ge1xuICAgIHJldHVybiB0aGlzLl9vYmplY3RDcmVhdGVGbGF2b3JzO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4cG9zZXMgYSBsaXN0IG9mIG9iamVjdCBmbGF2b3JzIHRvIHRoZSBzaGVsbC5cbiAgICogRmxhdm9ycyBhcmUgYWJsZSB0byBiZSBhcHBsaWVkIHRvIG9iamVjdHMgYW5kIGFkZCBuZXcgbWV0YWRhdGEgcHJvcGVydGllcyB0byB0aGVtLlxuICAgKiBAcGFyYW0gZmxhdm9ycyBBcnJheSBvZiBmbGF2b3JzIHRvIGJlIGV4cG9zZWRcbiAgICogQHBhcmFtIGFwcCBPcHRpb25hbCBJRCBvZiB0aGUgYXBwIHRoYXQgZXhwb3NlcyB0aGUgZmxhdm9ycyAoZGVmYXVsdHMgdG8gJ2dsb2JhbCcgaWYgbm90IHByb3ZpZGVkKVxuICAgKiBAcGFyYW0gb3JpZ2luIE9wdGlvbmFsIG9yaWdpbiBvZiB0aGUgZmxhdm9ycy4gRmxhdm9ycyBjb3VsZCBiZSBhZGRlZCBieSBhcHBzIG9yIGRlcml2ZWRcbiAgICogZnJvbSBhIGNvbmZpZ3VyYXRpb24gKGRlZmF1bHRzIHRvICdhcHAnIGlmIG5vdCBwcm92aWRlZClcbiAgICovXG4gIGV4cG9zZU9iamVjdEZsYXZvcnMoZmxhdm9yczogQXBwRmxhdm9yW10sIGFwcCA9ICdnbG9iYWwnLCBvcmlnaW46ICdhcHAnIHwgJ2NvbmZpZycgPSAnYXBwJykge1xuICAgIGZsYXZvcnMuZm9yRWFjaCgoZikgPT4gdGhpcy5leHBvc2VPYmplY3RGbGF2b3IoZiwgYXBwLCBvcmlnaW4pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGV4cG9zZWQgb2JqZWN0IGZsYXZvcnMgZnJvbSB0aGUgc2hlbGwuXG4gICAqIEBwYXJhbSBmbGF2b3JzIEFycmF5IG9mIGZsYXZvcnMgdG8gYmUgY29uY2VhbGVkXG4gICAqL1xuICBjb25jZWFsT2JqZWN0Rmxhdm9ycyhmbGF2b3JzOiBBcHBGbGF2b3JbXSwgYXBwID0gJ2dsb2JhbCcpIHtcbiAgICBmbGF2b3JzLmZvckVhY2goKGYpID0+IHRoaXMuY29uY2VhbE9iamVjdEZsYXZvcihmLCBhcHApKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHBvc2VzIGFuIG9iamVjdCBmbGF2b3IgdG8gdGhlIHNoZWxsLiBGbGF2b3JzIGFyZSBhYmxlIHRvIGJlIGFwcGxpZWQgdG8gb2JqZWN0c1xuICAgKiBpbiBvcmRlciB0byBhZGQgYSBuZXcgYXNwZWN0IHRvIHRoZW0uIEFuIG9iamVjdCBjb250YWluaW5nIGFuIGltYWdlIGZvciBleGFtcGxlIGNvdWxkXG4gICAqIGJlIGFkZGVkIGEgZmxhdm9yIG9mICdFWElGIERhdGEnIHRoYXQgd2lsbCBhZGQgdGhlIGNvcnJlc3BvbmRpbmcgU09UIHRvIGl0LiBUaGlzIHdheSB0aGVcbiAgICogb2JqZWN0IGdldHMgbmV3IG1ldGFkYXRhIHByb3BlcnRpZXMuIElmIHN1cHBvcnRlZCwgdGhlc2UgbWV0YWRhdGEgY291bGQgZXZlbiBiZSBleHRyYWN0ZWRcbiAgICogZnJvbSB0aGUgZmlsZSBhbmQgZmlsbGVkIG91dCBhdXRvbWF0aWNhbGx5LlxuICAgKiBAcGFyYW0gZmxhdm9yIFRoZSBmbGF2b3Igb2JqZWN0IHRvIGJlIGV4cG9zZWRcbiAgICogQHBhcmFtIGFwcCBPcHRpb25hbCBJRCBvZiB0aGUgYXBwIHRoYXQgZXhwb3NlcyB0aGUgZmxhdm9yIChkZWZhdWx0cyB0byAnZ2xvYmFsJyBpZiBub3QgcHJvdmlkZWQpXG4gICAqIEBwYXJhbSBvcmlnaW4gT3B0aW9uYWwgb3JpZ2luIG9mIHRoZSBmbGF2b3JzLiBGbGF2b3JzIGNvdWxkIGJlIGFkZGVkIGJ5IGFwcHMgb3IgZGVyaXZlZFxuICAgKiBmcm9tIGEgY29uZmlndXJhdGlvbiAoZGVmYXVsdHMgdG8gJ2FwcCcgaWYgbm90IHByb3ZpZGVkKVxuICAgKi9cbiAgZXhwb3NlT2JqZWN0Rmxhdm9yKGZsYXZvcjogQXBwRmxhdm9yLCBhcHAgPSAnZ2xvYmFsJywgb3JpZ2luOiAnYXBwJyB8ICdjb25maWcnID0gJ2FwcCcpIHtcbiAgICBjb25zdCBpZHggPSB0aGlzLl9vYmplY3RGbGF2b3JzLmZpbmRJbmRleCgoZikgPT4gZi5pZCA9PT0gZmxhdm9yLmlkICYmIGYuYXBwID09PSBhcHApO1xuICAgIGlmIChpZHggPT09IC0xKSB0aGlzLl9vYmplY3RGbGF2b3JzLnB1c2goeyAuLi5mbGF2b3IsIGFwcCwgb3JpZ2luIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYW4gZXhwb3NlZCBvYmplY3QgZmxhdm9yIGZyb20gdGhlIHNoZWxsLlxuICAgKiBAcGFyYW0gZmxhdm9yIEZsYXZvciB0byBiZSBjb25jZWFsZWRcbiAgICogQHBhcmFtIGFwcCBPcHRpb25hbCBJRCBvZiB0aGUgYXBwIHRoYXQgZXhwb3NlcyB0aGUgZmxhdm9yIChkZWZhdWx0cyB0byAnZ2xvYmFsJyBpZiBub3QgcHJvdmlkZWQpXG4gICAqL1xuICBjb25jZWFsT2JqZWN0Rmxhdm9yKGZsYXZvcjogQXBwRmxhdm9yLCBhcHAgPSAnZ2xvYmFsJykge1xuICAgIHRoaXMuX29iamVjdEZsYXZvcnMgPSB0aGlzLl9vYmplY3RGbGF2b3JzLmZpbHRlcigoZikgPT4ge1xuICAgICAgY29uc3QgaGFzU2FtZUlkID0gZi5pZCA9PT0gZmxhdm9yLmlkO1xuICAgICAgY29uc3QgaXNGcm9tU2FtZUFwcCA9IGYuYXBwID09PSBhcHA7XG4gICAgICByZXR1cm4gaGFzU2FtZUlkICYmIGlzRnJvbVNhbWVBcHAgPyBmYWxzZSA6IHRydWU7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHJlZ2lzdGVyZWQgb2JqZWN0IGZsYXZvcnNcbiAgICogQHBhcmFtIGFwcCBPcHRpb25hbCBhcHAgSUQgdGhhdCByZXN0cmljdHMgdGhlIHJldHVybmVkIGZsYXZvcnMgdG8gdGhlIG9uZXNcbiAgICogcHJvdmlkZWQgYnkgYSBwYXJ0aWN1bGFyIGFwcC4gSWYgbm90IHByb3ZpZGVkIGFsbCBmbGF2b3JzIGFyZSByZXR1cm5lZFxuICAgKiBAcmV0dXJucyBBcnJheSBvZiBtYXRjaGluZyBvYmplY3QgZmxhdm9yc1xuICAgKi9cbiAgZ2V0T2JqZWN0Rmxhdm9ycyhhcHA/OiBzdHJpbmcpOiBPYmplY3RGbGF2b3JbXSB7XG4gICAgcmV0dXJuIGFwcCA/IHRoaXMuX29iamVjdEZsYXZvcnMuZmlsdGVyKChvZikgPT4gb2YuYXBwID09PSBhcHApIDogdGhpcy5fb2JqZWN0Rmxhdm9ycztcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VycyB0aGUgYXBwbGljYXRpb24gb2YgYW4gb2JqZWN0IGZsYXZvci4gSWYgdGhlIGZsYXZvciBoYXMgYW4gYXBwbHlDb21wb25lbnRcbiAgICogZGVmaW5lZCwgdGhlIG92ZXJsYXkgd2lsbCBiZSBvcGVuZWQgd2l0aCB0aGUgY29tcG9uZW50LiBPdGhlcndpc2UgdGhlIGZsYXZvciB3aWxsXG4gICAqIGJlIGFwcGxpZWQgZGlyZWN0bHkgdG8gdGhlIG9iamVjdC5cbiAgICogQHBhcmFtIGRtc09iamVjdCBUaGUgb2JqZWN0IHRvIGFwcGx5IHRoZSBmbGF2b3IgdG9cbiAgICogQHBhcmFtIGZsYXZvciBUaGUgZmxhdm9yIHRvIGFwcGx5XG4gICAqIEBwYXJhbSBkYXRhIE9wdGlvbmFsIGRhdGEgdG8gYmUgcGFzc2VkIHRvIHRoZSBmbGF2b3IgY29tcG9uZW50XG4gICAqIEByZXR1cm5zIE9ic2VydmFibGUgdGhhdCBlbWl0cyB0cnVlIGlmIHRoZSBmbGF2b3Igd2FzIGFwcGxpZWQgc3VjY2Vzc2Z1bGx5XG4gICAqL1xuICB0cmlnZ2VyQXBwbHlPYmplY3RGbGF2b3IoXG4gICAgZG1zT2JqZWN0OiBEbXNPYmplY3QsXG4gICAgZmxhdm9yOiBPYmplY3RGbGF2b3IsXG4gICAgZGF0YT86IGFueSxcbiAgICBhcHBseUNvbXBvbmVudD86IFR5cGU8YW55PlxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBpZiAoZmxhdm9yLnByZXZlbnRBcHBseSkgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICBpZiAoZG1zT2JqZWN0KSB7XG4gICAgICBjb25zdCBhYyA9IGFwcGx5Q29tcG9uZW50IHx8IGZsYXZvci5hcHBseUNvbXBvbmVudDtcbiAgICAgIGlmIChhYykge1xuICAgICAgICB0aGlzLiNkaWFsb2cub3BlbihhYywge1xuICAgICAgICAgIG1heFdpZHRoOiAnOTB2dycsXG4gICAgICAgICAgbWF4SGVpZ2h0OiAnOTB2aCcsXG4gICAgICAgICAgbWluV2lkdGg6ICc1MHZ3JyxcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBkbXNPYmplY3QsXG4gICAgICAgICAgICBmbGF2b3IsXG4gICAgICAgICAgICBkYXRhXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc290czogc3RyaW5nW10gPSAoZG1zT2JqZWN0LmRhdGFbQmFzZU9iamVjdFR5cGVGaWVsZC5TRUNPTkRBUllfT0JKRUNUX1RZUEVfSURTXSBhcyBzdHJpbmdbXSkgfHwgW107XG4gICAgICAgIGNvbnN0IGRhdGE6IGFueSA9IHt9O1xuICAgICAgICBkYXRhW0Jhc2VPYmplY3RUeXBlRmllbGQuU0VDT05EQVJZX09CSkVDVF9UWVBFX0lEU10gPSBbLi4uc290cywgZmxhdm9yLnNvdF07XG4gICAgICAgIHJldHVybiB0aGlzLiNkbXNTZXJ2aWNlLnVwZGF0ZURtc09iamVjdChkbXNPYmplY3Q/LmlkLCBkYXRhKS5waXBlKG1hcCgoKSA9PiB0cnVlKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHJldHVybiBvZihmYWxzZSk7XG4gIH1cblxuICByZW1vdmVPYmplY3RGbGF2b3IoZG1zT2JqZWN0OiBEbXNPYmplY3QsIGZsYXZvcjogT2JqZWN0Rmxhdm9yKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAoZmxhdm9yLnByZXZlbnRSZW1vdmUpIHJldHVybiBvZihmYWxzZSk7XG4gICAgY29uc3QgZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7XG4gICAgICBbQmFzZU9iamVjdFR5cGVGaWVsZC5TRUNPTkRBUllfT0JKRUNUX1RZUEVfSURTXTogKFxuICAgICAgICBkbXNPYmplY3QuZGF0YVtCYXNlT2JqZWN0VHlwZUZpZWxkLlNFQ09OREFSWV9PQkpFQ1RfVFlQRV9JRFNdIGFzIHN0cmluZ1tdXG4gICAgICApLmZpbHRlcigoc290OiBzdHJpbmcpID0+IHNvdCAhPT0gZmxhdm9yLnNvdClcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLiNkbXNTZXJ2aWNlLnVwZGF0ZURtc09iamVjdChkbXNPYmplY3QuaWQsIGRhdGEpLnBpcGUobWFwKCgpID0+IHRydWUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgb2JqZWN0IGZsYXZvcnMgYXBwbGljYWJsZSBmb3IgYSBjZXJ0YWluIG1pbWV0eXBlXG4gICAqIEBwYXJhbSBtaW1lVHlwZSBNaW1lIHR5cGUgb3IgbWltZSB0eXBlIHBhdHRlcm4gbGlrZSAnaW1hZ2UvKidcbiAgICogQHBhcmFtIGFwcCBPcHRpb25hbCBhcHAgSUQgdGhhdCByZXN0cmljdHMgdGhlIHJldHVybmVkIGZsYXZvcnMgdG8gdGhlIG9uZXNcbiAgICogcHJvdmlkZWQgYnkgYSBwYXJ0aWN1bGFyIGFwcFxuICAgKiBAcGFyYW0gY3VzdG9tRmxhdm9ycyBPcHRpb25hbCBhcnJheSBvZiBjdXN0b20gZmxhdm9ycyB0byBhbHNvIHRha2UgaW50byBhY2NvdW50LlxuICAgKiBUaGlzIGNvdWxkIGJlIGZsYXZvcnMgbWFuYWdlZCBieSBhbiBhcHAgaXRzZWxmIHRoYXQgYXJlIG5vdCBzdXBwb3NlZCB0byBiZVxuICAgKiBleHBvc2VkIHRvIG90aGVyIGFwcHNcbiAgICogQHJldHVybnMgQXJyYXkgb2YgbWF0Y2hpbmcgb2JqZWN0IGZsYXZvcnNcbiAgICovXG4gIGdldEFwcGxpY2FibGVEb2N1bWVudEZsYXZvcnMobWltZVR5cGU6IHN0cmluZywgYXBwPzogc3RyaW5nLCBjdXN0b21GbGF2b3JzPzogT2JqZWN0Rmxhdm9yW10pOiBPYmplY3RGbGF2b3JbXSB7XG4gICAgcmV0dXJuIFsuLi4oY3VzdG9tRmxhdm9ycyB8fCBbXSksIC4uLnRoaXMuX29iamVjdEZsYXZvcnNdLmZpbHRlcihcbiAgICAgIChvZjogT2JqZWN0Rmxhdm9yKSA9PlxuICAgICAgICAvLyAhb2YucHJldmVudEFwcGx5ICYmXG4gICAgICAgICghb2YuYXBwbGljYWJsZVRvPy5mb2xkZXJzIHx8IChvZi5hcHBsaWNhYmxlVG8/LmZvbGRlcnMgJiYgb2YuYXBwbGljYWJsZVRvPy5kb2N1bWVudHMpKSAmJlxuICAgICAgICAoIW9mLmFwcGxpY2FibGVUbyB8fFxuICAgICAgICAgICFvZi5hcHBsaWNhYmxlVG8/Lm1pbWVUeXBlcyB8fFxuICAgICAgICAgIChvZi5hcHBsaWNhYmxlVG8/Lm1pbWVUeXBlcz8uc29tZSgobXRwKSA9PiBVdGlscy5wYXR0ZXJuVG9SZWdFeHAobXRwKS50ZXN0KG1pbWVUeXBlKSkgJiZcbiAgICAgICAgICAgICghYXBwIHx8IG9mLmFwcCA9PT0gYXBwKSkpXG4gICAgKTtcbiAgfVxuXG4gIGdldEFwcGxpY2FibGVGb2xkZXJGbGF2b3JzKGFwcD86IHN0cmluZywgY3VzdG9tRmxhdm9ycz86IE9iamVjdEZsYXZvcltdKTogT2JqZWN0Rmxhdm9yW10ge1xuICAgIHJldHVybiBbLi4uKGN1c3RvbUZsYXZvcnMgfHwgW10pLCAuLi50aGlzLl9vYmplY3RGbGF2b3JzXS5maWx0ZXIoXG4gICAgICAob2Y6IE9iamVjdEZsYXZvcikgPT4gIW9mLnByZXZlbnRBcHBseSAmJiBvZi5hcHBsaWNhYmxlVG8/LmZvbGRlcnMgJiYgKCFhcHAgfHwgb2YuYXBwID09PSBhcHApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYXBwbGllZCBhbmQgYXBwbGljYWJsZSBvYmplY3QgZmxhdm9ycyBmb3IgYSBjZXJ0YWluIG9iamVjdFxuICAgKiBAcGFyYW0gZG1zT2JqZWN0IERtc09iamVjdCB0byBnZXQgZmxhdm9ycyBmb3JcbiAgICogQHJldHVybnMgT2JqZWN0IGNvbnRhaW5pbmcgdHdvIGFycmF5czogYXBwbGllZCBhbmQgYXBwbGljYWJsZSBmbGF2b3JzXG4gICAqL1xuICBnZXRBcHBsaWVkT2JqZWN0Rmxhdm9ycyhkbXNPYmplY3Q6IERtc09iamVjdCk6IHtcbiAgICBhcHBsaWVkOiBPYmplY3RGbGF2b3JbXTtcbiAgICBhcHBsaWNhYmxlOiBPYmplY3RGbGF2b3JbXTtcbiAgfSB7XG4gICAgY29uc3QgYXBwbGllZDogT2JqZWN0Rmxhdm9yW10gPSBbXTtcbiAgICBjb25zdCBhcHBsaWNhYmxlOiBPYmplY3RGbGF2b3JbXSA9IFtdO1xuICAgIGlmIChkbXNPYmplY3QpIHtcbiAgICAgIGNvbnN0IHNvdHM6IHN0cmluZ1tdID0gKGRtc09iamVjdC5kYXRhW0Jhc2VPYmplY3RUeXBlRmllbGQuU0VDT05EQVJZX09CSkVDVF9UWVBFX0lEU10gYXMgc3RyaW5nW10pIHx8IFtdO1xuICAgICAgaWYgKGRtc09iamVjdC5jb250ZW50KSB7XG4gICAgICAgIHRoaXMuZ2V0QXBwbGljYWJsZURvY3VtZW50Rmxhdm9ycyhkbXNPYmplY3QuY29udGVudC5taW1lVHlwZSkuZm9yRWFjaCgoZmxhdm9yOiBPYmplY3RGbGF2b3IpID0+IHtcbiAgICAgICAgICBmbGF2b3IgPSB7XG4gICAgICAgICAgICAuLi5mbGF2b3IsXG4gICAgICAgICAgICBuYW1lOiB0aGlzLiNzeXN0ZW0uZ2V0TG9jYWxpemVkTGFiZWwoZmxhdm9yLmlkKSB8fCB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGZsYXZvci5pZCksXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgdGhpcy4jc3lzdGVtLmdldExvY2FsaXplZERlc2NyaXB0aW9uKGZsYXZvci5pZCkgfHxcbiAgICAgICAgICAgICAgKGZsYXZvci5kZXNjcmlwdGlvbktleSA/IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoZmxhdm9yLmRlc2NyaXB0aW9uS2V5KSA6IHVuZGVmaW5lZClcbiAgICAgICAgICB9O1xuICAgICAgICAgIGlmIChzb3RzLmluY2x1ZGVzKGZsYXZvci5zb3QpKSB7XG4gICAgICAgICAgICBhcHBsaWVkLnB1c2goZmxhdm9yKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKCFmbGF2b3IucHJldmVudEFwcGx5KSB7XG4gICAgICAgICAgICBhcHBsaWNhYmxlLnB1c2goZmxhdm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoZG1zT2JqZWN0LmlzRm9sZGVyKSB7XG4gICAgICAgIHRoaXMuZ2V0QXBwbGljYWJsZUZvbGRlckZsYXZvcnMoKS5mb3JFYWNoKChmbGF2b3I6IE9iamVjdEZsYXZvcikgPT4ge1xuICAgICAgICAgIGZsYXZvciA9IHtcbiAgICAgICAgICAgIC4uLmZsYXZvcixcbiAgICAgICAgICAgIG5hbWU6IHRoaXMuI3N5c3RlbS5nZXRMb2NhbGl6ZWRMYWJlbChmbGF2b3IuaWQpIHx8IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoZmxhdm9yLmlkKSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICB0aGlzLiNzeXN0ZW0uZ2V0TG9jYWxpemVkRGVzY3JpcHRpb24oZmxhdm9yLmlkKSB8fFxuICAgICAgICAgICAgICAoZmxhdm9yLmRlc2NyaXB0aW9uS2V5ID8gdGhpcy50cmFuc2xhdGUuaW5zdGFudChmbGF2b3IuZGVzY3JpcHRpb25LZXkpIDogdW5kZWZpbmVkKVxuICAgICAgICAgIH07XG4gICAgICAgICAgaWYgKHNvdHMuaW5jbHVkZXMoZmxhdm9yLnNvdCkpIHtcbiAgICAgICAgICAgIGFwcGxpZWQucHVzaChmbGF2b3IpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhcHBsaWNhYmxlLnB1c2goZmxhdm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyBhcHBsaWVkLCBhcHBsaWNhYmxlIH07XG4gIH1cblxuICBnZXRGbGF2b3JMYWJlbChpZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuI3N5c3RlbS5nZXRMb2NhbGl6ZWRMYWJlbChpZCkgfHwgdGhpcy50cmFuc2xhdGUuaW5zdGFudChpZCk7XG4gIH1cblxuICBhcHBseU9iamVjdEZsYXZvcihcbiAgICBkbXNPYmplY3Q6IERtc09iamVjdCxcbiAgICBmbGF2b3I6IE9iamVjdEZsYXZvcixcbiAgICBkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9XG4gICk6IE9ic2VydmFibGU8RG1zT2JqZWN0PiB7XG4gICAgY29uc3Qgc290czogc3RyaW5nW10gPSAoZG1zT2JqZWN0LmRhdGFbQmFzZU9iamVjdFR5cGVGaWVsZC5TRUNPTkRBUllfT0JKRUNUX1RZUEVfSURTXSBhcyBzdHJpbmdbXSkgfHwgW107XG4gICAgZGF0YVtCYXNlT2JqZWN0VHlwZUZpZWxkLlNFQ09OREFSWV9PQkpFQ1RfVFlQRV9JRFNdID0gWy4uLnNvdHMsIGZsYXZvci5zb3RdO1xuICAgIHJldHVybiB0aGlzLiNkbXNTZXJ2aWNlLnVwZGF0ZURtc09iamVjdChkbXNPYmplY3QuaWQsIGRhdGEpO1xuICB9XG5cbiAgcmVnaXN0ZXJUaWxlRXh0ZW5zaW9uKGV4dDogVGlsZUV4dGVuc2lvbikge1xuICAgIHRoaXMuX2V4dGVuc2lvbnNbZXh0LnR5cGVJZF0gPSBleHQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRpbGUgZXh0ZW5zaW9ucyBmb3IgYSBjZXJ0YWluIHR5cGVcbiAgICogQHBhcmFtIHR5cGVJZCBJRCBvZiB0aGUgdHlwZSB0byBmZXRjaCBleHRlc2lvbiBmb3IgKG9iamVjdFR5cGVJRCBvciBzZWNvbmRhcnlPYmplY3RUeXBlSUQpXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBnZXRSZWdpc3RlcmVkVGlsZUV4dGVuc2lvbnMoKTogUmVjb3JkPHN0cmluZywgVGlsZUV4dGVuc2lvbj4ge1xuICAgIHJldHVybiB0aGlzLl9leHRlbnNpb25zO1xuICB9XG5cbiAgX2luaXRPYmplY3RUeXBlQ29uZmlnKCk6IFByb21pc2U8dW5rbm93bj4ge1xuICAgIC8vIGxvYWQgZmxhdm9ycyBmcm9tIGNvbmZpZ1xuICAgIGNvbnNvbGUuZGVidWcoJ0xvYWRpbmcgb2JqZWN0IHR5cGUgY29uZmlnLi4uJyk7XG4gICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKFxuICAgICAgdGhpcy4jc2hlbGxDb25maWcuZ2V0KFNIRUxMX0NPTkZJR19UWVBFUykucGlwZShcbiAgICAgICAgdGFwKChyZXM6IFNoZWxsQ29uZmlnIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgdGhpcy4jcmVnaXN0ZXJPYmplY3RUeXBlSWNvbnMoKHJlcy5kYXRhIGFzIENsaWVudFNoZWxsVHlwZVtdKS5tYXAoKHQpID0+IHQuaWQpKTtcblxuICAgICAgICAgICAgY29uc3QgZmx2OiBBcHBGbGF2b3JbXSA9IChyZXMuZGF0YSBhcyBDbGllbnRTaGVsbFR5cGVbXSkubWFwKCh0KSA9PiAoe1xuICAgICAgICAgICAgICBpZDogdC5pZCxcbiAgICAgICAgICAgICAgc290OiB0LmlkLFxuICAgICAgICAgICAgICBpY29uOiB0LmlkLFxuICAgICAgICAgICAgICBzdmdJY29uOiB0cnVlLFxuICAgICAgICAgICAgICBvYmplY3RUeXBlSUQ6IHQuYmFzZVR5cGUsXG4gICAgICAgICAgICAgIGFwcGxpY2FibGVUbzoge1xuICAgICAgICAgICAgICAgIGZvbGRlcnM6IHQuYmFzZVR5cGUgPT09IFN5c3RlbVR5cGUuRk9MREVSIHx8IHQuYmFzZVR5cGUgPT09IFN5c3RlbVR5cGUuT0JKRUNULFxuICAgICAgICAgICAgICAgIGRvY3VtZW50czogdC5iYXNlVHlwZSA9PT0gU3lzdGVtVHlwZS5ET0NVTUVOVCB8fCB0LmJhc2VUeXBlID09PSBTeXN0ZW1UeXBlLk9CSkVDVCxcbiAgICAgICAgICAgICAgICBtaW1lVHlwZXM6IHQuYXBwbGljYWJsZVRvTWltZVR5cGVzIHx8IHVuZGVmaW5lZFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB1c2VEZWZhdWx0QXBwbHlDb21wb25lbnQ6ICF0Lmluc3RhbnRBcHBseVxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgdGhpcy5leHBvc2VPYmplY3RGbGF2b3JzKGZsdiwgJ2dsb2JhbCcsICdjb25maWcnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gICNyZWdpc3Rlck9iamVjdFR5cGVJY29ucyhpZHM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy4jc3lzdGVtLnN5c3RlbSQucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgaWRzLmZvckVhY2goKGlkKSA9PiB7XG4gICAgICAgIC8vIHNwbGl0IHRlY2huaWNhbCBuYW1lIGUuZy4gJ3N5c3RlbTpkb2N1bWVudCcgYW5kIHVzZSB0aGUgZmlyc3QgcGFydCBhcyBuYW1lc3BhY2VcbiAgICAgICAgY29uc3QgaWRUb2tlbnMgPSBpZC5zcGxpdCgnOicpO1xuICAgICAgICBpZiAoaWRUb2tlbnMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgY29uc3QgdXJpID0gYCR7dGhpcy4jY29uZmlnU2VydmljZS5nZXRBcGlCYXNlKEFwaUJhc2Uubm9uZSwgdHJ1ZSl9JHt0aGlzLiNzeXN0ZW0uZ2V0T2JqZWN0VHlwZUljb25VcmkoaWQpfWA7XG4gICAgICAgICAgdGhpcy4jaWNvblJlZ2lzdHJ5LmFkZFN2Z0ljb25Jbk5hbWVzcGFjZShcbiAgICAgICAgICAgIGlkVG9rZW5zWzBdLFxuICAgICAgICAgICAgaWRUb2tlbnNbMV0sXG4gICAgICAgICAgICB0aGlzLiNzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHVyaSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIF9pbml0KCkge1xuICAgIC8vIHRoZSBwbGFjZSBmb3IgaW5pdGlhbGl6YXRpb24gdGFza3MgaWZcbiAgfVxufVxuIl19
|
|
456
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveXV1dmlzL2NsaWVudC1zaGVsbC1jb3JlL3NyYy9saWIvc2VydmljZXMvc2hlbGwvc2hlbGwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sMEJBQTBCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFjLGFBQWEsRUFBRSxNQUFNLEVBQTRCLE1BQU0saUJBQWlCLENBQUM7QUFDOUcsT0FBTyxFQUNMLE9BQU8sRUFDUCxtQkFBbUIsRUFDbkIsYUFBYSxFQUViLFVBQVUsRUFFVixhQUFhLEVBQ2IsVUFBVSxFQUNWLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsS0FBSyxFQUVOLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUNMLGVBQWUsRUFDZixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxjQUFjLEVBQ2QsU0FBUyxFQUNULEdBQUcsRUFFSCxFQUFFLEVBQ0YsR0FBRyxFQUNKLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFVaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7O0FBSzFFLE1BQU0sT0FBTyxZQUFZO0lBQ3ZCLFdBQVcs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ZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgc2lnbmFsLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRJY29uUmVnaXN0cnkgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb24sIE5hdmlnYXRpb25FbmQsIFJvdXRlciwgVXJsU2VnbWVudEdyb3VwLCBVcmxUcmVlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIEFwaUJhc2UsXG4gIEJhc2VPYmplY3RUeXBlRmllbGQsXG4gIENvbmZpZ1NlcnZpY2UsXG4gIERtc09iamVjdCxcbiAgRG1zU2VydmljZSxcbiAgT2JqZWN0Q3JlYXRlRmxhdm9yLFxuICBTeXN0ZW1TZXJ2aWNlLFxuICBTeXN0ZW1UeXBlLFxuICBUcmFuc2xhdGVTZXJ2aWNlLFxuICBVc2VyU2VydmljZSxcbiAgVXRpbHMsXG4gIFl1dlVzZXJcbn0gZnJvbSAnQHl1dXZpcy9jbGllbnQtY29yZSc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGRlYm91bmNlVGltZSxcbiAgZmlsdGVyLFxuICBmaXJzdCxcbiAgZmlyc3RWYWx1ZUZyb20sXG4gIGZyb21FdmVudCxcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgdGFwXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ0xJRU5UX1NIRUxMX0FTU0VUUyB9IGZyb20gJy4uLy4uL2NsaWVudC1zaGVsbC5hc3NldHMnO1xuaW1wb3J0IHtcbiAgQXBwLFxuICBBcHBGbGF2b3IsXG4gIENsaWVudFNoZWxsQ29uZmlnLFxuICBHbG9iYWxTaG9ydGN1dCxcbiAgT2JqZWN0Rmxhdm9yLFxuICBTaGVsbEFwcFNldHRpbmdzXG59IGZyb20gJy4uLy4uL21vZGVscy9jbGllbnQtc2hlbGwuaW50ZXJmYWNlJztcbmltcG9ydCB7IFRpbGVFeHRlbnNpb24gfSBmcm9tICcuLi8uLi90aWxlLWV4dGVuc2lvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU0hFTExfQ09ORklHX1RZUEVTIH0gZnJvbSAnLi4vc2hlbGwtY29uZmlnL3NoZWxsLWNvbmZpZy5jb25zdCc7XG5pbXBvcnQgeyBDbGllbnRTaGVsbFR5cGUsIFNoZWxsQ29uZmlnIH0gZnJvbSAnLi4vc2hlbGwtY29uZmlnL3NoZWxsLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU2hlbGxDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vc2hlbGwtY29uZmlnL3NoZWxsLWNvbmZpZy5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU2hlbGxTZXJ2aWNlIHtcbiAgI2Rtc1NlcnZpY2UgPSBpbmplY3QoRG1zU2VydmljZSk7XG5cbiAgI2RpYWxvZyA9IGluamVjdChNYXREaWFsb2cpO1xuICAjc3lzdGVtID0gaW5qZWN0KFN5c3RlbVNlcnZpY2UpO1xuICAjdXNlclNlcnZpY2UgPSBpbmplY3QoVXNlclNlcnZpY2UpO1xuICAvLyBUT0RPOiBOZWVkIG9yaWduYWwgTWF0SWNvblJlZ2lzdHJ5IHRvICNyZWdpc3Rlck9iamVjdFR5cGVJY29ucywgb3RoZXJ3aXNlIGljb25zIGNvdWxkIG5vdCBiZSByZWdpc3RlcmVkIGluIHRoZSBuYW1lc3BhY2VcbiAgLy8gI2ljb25SZWdpc3RyeSA9IGluamVjdChZdXZNYXRJY29uUmVnaXN0cnkpO1xuICAjaWNvblJlZ2lzdHJ5ID0gaW5qZWN0KE1hdEljb25SZWdpc3RyeSk7XG4gICNzaGVsbENvbmZpZyA9IGluamVjdChTaGVsbENvbmZpZ1NlcnZpY2UpO1xuICAjY29uZmlnU2VydmljZSA9IGluamVjdChDb25maWdTZXJ2aWNlKTtcbiAgI3Nhbml0aXplciA9IGluamVjdChEb21TYW5pdGl6ZXIpO1xuICAjcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gICNyb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gICNET0NVTUVOVCA9IGluamVjdChET0NVTUVOVCk7XG4gIHByaXZhdGUgdHJhbnNsYXRlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuXG4gIHByaXZhdGUgX2J1c3lDb3VudCA9IDA7XG4gIHByaXZhdGUgaXNCdXN5U3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBpc0J1c3kkID0gdGhpcy5pc0J1c3lTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGVib3VuY2VUaW1lKDUwMCkpO1xuXG4gIC8vIEFwcHMgY2FuIHJlZ2lzdGVyIHRoZWlyIG93biBzZXR0aW5nIGNvbXBvbmVudHMgdG8gYmUgc2hvd24gaW4gc2hlbGwgc2V0dGluZ3NcbiAgI2FwcFNldHRpbmdzID0gc2lnbmFsPFNoZWxsQXBwU2V0dGluZ3NbXT4oW10pO1xuICBhcHBTZXR0aW5ncyA9IHRoaXMuI2FwcFNldHRpbmdzLmFzUmVhZG9ubHkoKTtcblxuICBhcHBCYXNlUm91dGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgI2RlZmF1bHRTaGVsbENvbmZpZzogQ2xpZW50U2hlbGxDb25maWcgPSB7XG4gICAgYXBwSWNvbjogQ0xJRU5UX1NIRUxMX0FTU0VUUy5hcHBJY29uLFxuICAgIHNoZWxsSWNvbk5hbWVzcGFjZTogQ0xJRU5UX1NIRUxMX0FTU0VUUy5zaGVsbEljb25OYW1lc3BhY2VcbiAgfTtcbiAgc2hlbGxDb25maWcgPSBzaWduYWw8Q2xpZW50U2hlbGxDb25maWc+KHRoaXMuI2RlZmF1bHRTaGVsbENvbmZpZyk7XG4gIGFwcHMgPSBzaWduYWw8QXBwW10+KFtdKTtcblxuICAvKiogVE9ETzogaW1wbGVtZW50IHRoaXMgZmVhdHVyZSA/Pz8/XG4gICAqIEdsb2JhbCBzaG9ydGN1dHMgYXJlIGNhcHR1cmVkIGJ5IHRoZSBzaGVsbCB0byBwcm92aWRlIGEgY29uc2lzdGVudCBleHBlcmllbmNlXG4gICAqIGFjY3Jvc3MgYWxsIGFwcHMuIFNlYXJjaCBpcyBvbmUgZXhhbXBsZS4gQXBwcyBzaG91bGQgbm90IGRlZmluZSB0aGVpciBvd24gc2hvdXJ0Y3V0c1xuICAgKiBmb3Igc2VhcmNoLiBJbnN0ZWFkIHRoZXkgc2hvdWxkIHN1YnNjcmliZSB0byB0aGUgZ2xvYmFsIHNob3J0Y3V0cyBhbmQgaW5pdGlhbGl6ZSB0aGVpclxuICAgKiBzZWFyY2ggYmFzZWQgb24gdGhlIGdsb2JhbCBzZWFyY2ggc2hvcnRjdXQuXG4gICAqL1xuICBnbG9iYWxTaG9ydGN1dHMkOiBPYnNlcnZhYmxlPEdsb2JhbFNob3J0Y3V0PiA9IGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pihkb2N1bWVudCwgJ2tleWRvd24nKS5waXBlKFxuICAgIG1hcCgoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgLy8gZ2xvYmFsIHNob3J0Y3V0IGZvciBzZWFyY2hcbiAgICAgIC8vIGlmIChlLmN0cmxLZXkgJiYgZS5jb2RlID09PSAnS2V5RicpIHtcbiAgICAgIC8vICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgLy8gICByZXR1cm4gR2xvYmFsU2hvcnRjdXQuc2VhcmNoO1xuICAgICAgLy8gfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9KSxcbiAgICBmaWx0ZXIoKHM6IEdsb2JhbFNob3J0Y3V0IHwgdW5kZWZpbmVkKSA9PiBzICE9PSB1bmRlZmluZWQpLFxuICAgIG1hcCgocykgPT4gcyBhcyBHbG9iYWxTaG9ydGN1dClcbiAgKTtcblxuICBwcml2YXRlIF9leHRlbnNpb25zOiBSZWNvcmQ8c3RyaW5nLCBUaWxlRXh0ZW5zaW9uPiA9IHt9O1xuICBwcml2YXRlIF9vYmplY3RGbGF2b3JzOiBPYmplY3RGbGF2b3JbXSA9IFtdO1xuICBwcml2YXRlIF9vYmplY3RDcmVhdGVGbGF2b3JzOiBPYmplY3RDcmVhdGVGbGF2b3JbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMudHJhbnNsYXRlLm9uTGFuZ0NoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5hcHBzLnNldCh0aGlzLiNnZXRNYXBwZWRBcHBzKHRoaXMuYXBwcygpKSk7XG4gICAgfSk7XG5cbiAgICAvLyB0cmFjayBvcGVuIGRpYWxvZ3MgaW4gYW4gYXV4aWxsYXJ5IHJvdXRlIHRvIHN1cHBvcnQgY2xvc2luZyB0aGVtIG9uIGJhY2sgbmF2aWdhdGlvblxuICAgIC8vIGFzIHRoaXMgaXMgdGhlIGV4cGVjdGVkIGJlaGF2aW91ciBvbiBtb2JpbGUgZGV2aWNlc1xuICAgIHRoaXMuI2RpYWxvZy5hZnRlck9wZW5lZC5zdWJzY3JpYmUoKHJlZjogTWF0RGlhbG9nUmVmPGFueSwgYW55PikgPT4ge1xuICAgICAgdGhpcy4jcm91dGVyLm5hdmlnYXRlKFt7IG91dGxldHM6IHsgZHQ6IFsnZGlhbG9ncycsIHRoaXMuI2RpYWxvZy5vcGVuRGlhbG9ncy5tYXAoKGQsIGkpID0+IGkpLmpvaW4oJy0nKV0gfSB9XSwge1xuICAgICAgICAvLyByZXBsYWNlVXJsOiB0cnVlLFxuICAgICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAncHJlc2VydmUnXG4gICAgICB9KTtcbiAgICAgIHJlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICAgIGlmIChyZXM/LmNsb3NlZEJ5Um91dGUpIHJldHVybjtcbiAgICAgICAgY29uc3Qgb3BlbkRpYWxvZ3MgPSB0aGlzLiNkaWFsb2cub3BlbkRpYWxvZ3MuZmlsdGVyKChkKSA9PiBkLmlkICE9PSByZWYuaWQpO1xuICAgICAgICAvLyBoYXZpbmcgbm8gb3BlbiBkaWFsb2dzLCBjbGVhciB0aGUgYXV4aWxsYXJ5IHJvdXRlXG4gICAgICAgIGNvbnN0IHBhcmFtID0gb3BlbkRpYWxvZ3MubGVuZ3RoID4gMCA/IFsnZGlhbG9ncycsIG9wZW5EaWFsb2dzLm1hcCgoZCwgaSkgPT4gaSkuam9pbignLScpXSA6IG51bGw7XG4gICAgICAgIHRoaXMuI3JvdXRlci5uYXZpZ2F0ZShbeyBvdXRsZXRzOiB7IGR0OiBwYXJhbSB9IH1dLCB7IHJlcGxhY2VVcmw6IHRydWUsIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdwcmVzZXJ2ZScgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICB0aGlzLiNyb3V0ZXIuZXZlbnRzLnBpcGUoZmlsdGVyKChlKSA9PiBlIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgLy8gd2hlbiBuYXZpZ2F0aW5nIGFuZCBoYXZpbmcgbm8gb3BlbiBkaWFsb2dzLCBjbGVhciB0aGUgYXV4aWxsYXJ5IHJvdXRlIGZyb20gdGhlIHVybFxuICAgICAgaWYgKHRoaXMuI2RpYWxvZy5vcGVuRGlhbG9ncy5sZW5ndGggPT09IDAgJiYgZS51cmxBZnRlclJlZGlyZWN0cy5tYXRjaCgvKGR0OlsuXSopLykpIHtcbiAgICAgICAgdGhpcy4jcm91dGVyLm5hdmlnYXRlKFt7IG91dGxldHM6IHsgZHQ6IG51bGwgfSB9XSwgeyByZXBsYWNlVXJsOiB0cnVlLCBxdWVyeVBhcmFtc0hhbmRsaW5nOiAncHJlc2VydmUnIH0pO1xuICAgICAgfVxuXG4gICAgICAvLyBpZiB0aGVyZSBhcmUgb3BlbiBkaWFsb2dzIGFuZCB0aGUgcHJpbWFyeSByb3V0ZSBjaGFuZ2VkLCBjbG9zZSBhbGwgb3BlbiBkaWFsb2dzXG4gICAgICBpZiAodGhpcy4jZGlhbG9nLm9wZW5EaWFsb2dzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaWYgKHRoaXMucHJpbWFyeVJvdXRlQ2hhbmdlZCh0aGlzLiNyb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKSkpIHtcbiAgICAgICAgICB0aGlzLiNkaWFsb2cub3BlbkRpYWxvZ3MuZm9yRWFjaCgoZCkgPT4gZC5jbG9zZSgpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgI2dldFByaW1hcnlSb3V0ZShuYXY6IE5hdmlnYXRpb24gfCBudWxsKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIW5hdikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjb25zdCB1cmw6IFVybFRyZWUgPSBuYXYuZmluYWxVcmwgfHwgbmF2LmV4dHJhY3RlZFVybDtcbiAgICBjb25zdCB1cmxUcmVlQ2hpbGRyZW46IFVybFNlZ21lbnRHcm91cCB8IHVuZGVmaW5lZCA9IHVybC5yb290LmNoaWxkcmVuWydwcmltYXJ5J107XG4gICAgcmV0dXJuIHVybFRyZWVDaGlsZHJlbiA/IHVybFRyZWVDaGlsZHJlbi5zZWdtZW50cy5tYXAoKHMpID0+IHMucGF0aCkuam9pbignLycpIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpbWFyeVJvdXRlQ2hhbmdlZChuYXY6IE5hdmlnYXRpb24gfCBudWxsKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcHJldmlvdXNOYXYgPSBuYXY/LnByZXZpb3VzTmF2aWdhdGlvbiB8fCBudWxsO1xuICAgIHJldHVybiB0aGlzLiNnZXRQcmltYXJ5Um91dGUobmF2KSAhPT0gdGhpcy4jZ2V0UHJpbWFyeVJvdXRlKHByZXZpb3VzTmF2KTtcbiAgfVxuXG4gIHBpY2tGaWxlKCk6IE9ic2VydmFibGU8RmlsZSB8IG51bGw+IHtcbiAgICBjb25zdCBpbnB1dCA9IHRoaXMuI0RPQ1VNRU5ULmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgaW5wdXQudHlwZSA9ICdmaWxlJztcbiAgICBpbnB1dC5jbGljaygpO1xuICAgIHJldHVybiBmcm9tRXZlbnQoaW5wdXQsICdjaGFuZ2UnKS5waXBlKFxuICAgICAgbWFwKChlOiBFdmVudCkgPT4gKGUudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmZpbGVzPy5bMF0gfHwgbnVsbCksXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICBpbnB1dC5yZW1vdmUoKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHNldFNoZWxsQ29uZmlnKGNzYzogQ2xpZW50U2hlbGxDb25maWcpIHtcbiAgICB0aGlzLnNoZWxsQ29uZmlnLnVwZGF0ZSgoc2MpID0+ICh7XG4gICAgICBhcHBJY29uOiBjc2MuYXBwSWNvbiA/PyBzYy5hcHBJY29uLFxuICAgICAgc2hlbGxJY29uTmFtZXNwYWNlOiBjc2Muc2hlbGxJY29uTmFtZXNwYWNlID8/IHNjLnNoZWxsSWNvbk5hbWVzcGFjZVxuICAgIH0pKTtcbiAgfVxuXG4gIHNldEFwcHMoYXBwczogQXBwW10pIHtcbiAgICB0aGlzLmFwcHMuc2V0KHRoaXMuI2dldE1hcHBlZEFwcHMoYXBwcykpO1xuICAgIGNvbnN0IGFwcEJhc2VSb3V0ZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgICBhcHBzLmZvckVhY2goKGEpID0+IChhcHBCYXNlUm91dGVzW2EuaWRdID0gYS5wYXRoIHx8ICcnKSk7XG4gICAgdGhpcy5hcHBCYXNlUm91dGVzID0gYXBwQmFzZVJvdXRlcztcbiAgfVxuXG4gICNnZXRNYXBwZWRBcHBzKGFwcHM6IEFwcFtdKTogQXBwW10ge1xuICAgIHJldHVybiBhcHBzLm1hcCgoYSkgPT4ge1xuICAgICAgY29uc3QgbWEgPSB7XG4gICAgICAgIC4uLmEsXG4gICAgICAgIHRpdGxlOiB0aGlzLiNnZXRBcHBUaXRsZShhKVxuICAgICAgfTtcbiAgICAgIGlmIChhLm9wdGlvbnM/LmFwcENsYWltS2V5KSB7XG4gICAgICAgIG1hLm9wdGlvbnMgPSB7IC4uLm1hLm9wdGlvbnMsIGFwcENsYWltOiB0aGlzLiNnZXRBcHBDbGFpbShhLm9wdGlvbnMuYXBwQ2xhaW1LZXkpIHx8IGEub3B0aW9ucy5hcHBDbGFpbSB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG1hO1xuICAgIH0pO1xuICB9XG5cbiAgI2dldEFwcFRpdGxlKGE6IEFwcCk6IHN0cmluZyB7XG4gICAgY29uc3QgdHJhbnNsYXRlZFRpdGxlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChhLmlkKTtcbiAgICByZXR1cm4gdHJhbnNsYXRlZFRpdGxlICYmICF0cmFuc2xhdGVkVGl0bGUuc3RhcnRzV2l0aCgnIW1pc3NpbmcnKSA/IHRyYW5zbGF0ZWRUaXRsZSA6IChhLnRpdGxlIGFzIHN0cmluZykgfHwgJyc7XG4gIH1cblxuICAjZ2V0QXBwQ2xhaW0oY2xhaW1LZXk6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgdHJhbnNsYXRlZENsYWltID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChjbGFpbUtleSk7XG4gICAgcmV0dXJuIHRyYW5zbGF0ZWRDbGFpbSAmJiAhdHJhbnNsYXRlZENsYWltLnN0YXJ0c1dpdGgoJyFtaXNzaW5nJykgPyB0cmFuc2xhdGVkQ2xhaW0gOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXRBcHAoaWQ6IHN0cmluZyk6IEFwcCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuYXBwcygpLmZpbmQoKGEpID0+IGlkID09PSBhLmlkKTtcbiAgfVxuXG4gIGdldEFwcHMoaWRzOiBzdHJpbmdbXSA9IFtdKTogQXBwW10ge1xuICAgIHJldHVybiBpZHMubGVuZ3RoID8gdGhpcy5hcHBzKCkuZmlsdGVyKChhKSA9PiBpZHMuaW5jbHVkZXMoYS5pZCkpIDogdGhpcy5hcHBzKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgc2V0dGluZ3MgZm9yIGFwcHMgdG8gaG9vayBpbnRvIHNoZWxsIHNldHRpbmdzIHBhZ2UuXG4gICAqIEBwYXJhbSBhcHBJRCBJRCBvZiB0aGUgYXBwIHRoYXQgZXhwb3NlcyB0aGUgc2V0dGluZ3NcbiAgICogQHBhcmFtIGNmZyBTaGVsbEFwcFNldHRpbmdzIG9iamVjdCBjb250YWluaW5nIHRoZSBzZXR0aW5ncyBjb21wb25lbnRcbiAgICovXG4gIHJlZ2lzdGVyQXBwU2V0dGluZ3MoY2ZnOiBTaGVsbEFwcFNldHRpbmdzKSB7XG4gICAgdGhpcy4jYXBwU2V0dGluZ3Muc2V0KFsuLi50aGlzLiNhcHBTZXR0aW5ncygpLCBjZmddKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIHBlcnNpc3RlZCBzZXR0aW5ncyBmb3IgYSBzcGVjaWZpYyBhcHBcbiAgICogQHBhcmFtIGFwcElEIElEIG9mIHRoZSBhcHAgdG8gbG9hZCB0aGUgc2V0dGluZ3MgZm9yXG4gICAqL1xuICB1c2Vyc0FwcFNldHRpbmdzJChhcHBJRDogc3RyaW5nKTogT2JzZXJ2YWJsZTxTaGVsbEFwcFNldHRpbmdzIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuI3VzZXJTZXJ2aWNlLnVzZXIkLnBpcGUoXG4gICAgICBtYXAoKHU6IFl1dlVzZXIgfCB1bmRlZmluZWQpID0+IHtcbiAgICAgICAgcmV0dXJuIHUgJiYgdS51c2VyU2V0dGluZ3MuY2xpZW50QXBwU2V0dGluZ3MgPyB1LnVzZXJTZXR0aW5ncy5jbGllbnRBcHBTZXR0aW5nc1thcHBJRF0gOiB1bmRlZmluZWQ7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBzYXZlVXNlcnNBcHBTZXR0aW5ncyhhcHBJRDogc3RyaW5nLCBzZXR0aW5nczogU2hlbGxBcHBTZXR0aW5ncyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuI3VzZXJTZXJ2aWNlLnNhdmVVc2VyU2V0dGluZ3MoeyBjbGllbnRBcHBTZXR0aW5nczogeyBbYXBwSURdOiBzZXR0aW5ncyB9IH0pO1xuICB9XG5cbiAgYWRkQnVzeSgpIHtcbiAgICBpZiAodGhpcy5fYnVzeUNvdW50ID09PSAwKSB7XG4gICAgICB0aGlzLmlzQnVzeVN1YmplY3QubmV4dCh0cnVlKTtcbiAgICB9XG4gICAgdGhpcy5fYnVzeUNvdW50Kys7XG4gIH1cblxuICByZW1vdmVCdXN5KCkge1xuICAgIHRoaXMuX2J1c3lDb3VudC0tO1xuICAgIGlmICh0aGlzLl9idXN5Q291bnQgPT09IDApIHtcbiAgICAgIHRoaXMuaXNCdXN5U3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRXhwb3NlcyBvYmplY3QgY3JlYXRlIGZsYXZvcnMgdG8gdGhlIHNoZWxsLlxuICAgKiBUaGVzIGZsYXZvcnMgZGVzY3JpYmUgZGlmZmVyZW50IHdheXMgb2YgaG93IG9iamVjdHMgY2FuIGJlIGNyZWF0ZWQuIFNvIGFwcHNcbiAgICogY2FuIHJlZ2lzdGVyIGN1c3RvbSB3YXlzIG9mIGNyZWF0aW5nIG9iamVjdHMgdGhhdCBjYW4gdGhlbiBiZSB1c2VkIGJ5IG90aGVyIGFwcHMuXG4gICAqIEBwYXJhbSBmbGF2b3JzIENyZWF0ZSBmbGF2b3JzIHRvIGJlIGV4cG9zZWRcbiAgICovXG4gIGV4cG9zZU9iamVjdENyZWF0ZUZsYXZvcnMoZmxhdm9yczogT2JqZWN0Q3JlYXRlRmxhdm9yW10pIHtcbiAgICBmbGF2b3JzLmZvckVhY2goKGZsYXZvcjogT2JqZWN0Q3JlYXRlRmxhdm9yKSA9PiB7XG4gICAgICBjb25zdCBpZHggPSB0aGlzLl9vYmplY3RDcmVhdGVGbGF2b3JzLmZpbmRJbmRleCgoZikgPT4gZi5pZCA9PT0gZmxhdm9yLmlkKTtcbiAgICAgIGlmIChpZHggPT09IC0xKSB0aGlzLl9vYmplY3RDcmVhdGVGbGF2b3JzLnB1c2goZmxhdm9yKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgb2JqZWN0IGNyZWF0ZSBmbGF2b3JzIGZyb20gdGhlIHNoZWxscyByZWdpc3RyeVxuICAgKiBAcGFyYW0gZmxhdm9ycyBDcmVhdGUgZmxhdm9ycyB0byBiZSByZW1vdmVkXG4gICAqL1xuICBjb25jZWFsT2JqZWN0Q3JlYXRlRmxhdm9ycyhmbGF2b3JzOiBPYmplY3RDcmVhdGVGbGF2b3JbXSkge1xuICAgIGNvbnN0IGZpZCA9IGZsYXZvcnMubWFwKChmKSA9PiBmLmlkKTtcbiAgICB0aGlzLl9vYmplY3RDcmVhdGVGbGF2b3JzID0gdGhpcy5fb2JqZWN0Q3JlYXRlRmxhdm9ycy5maWx0ZXIoKGYpID0+ICFmaWQuaW5jbHVkZXMoZi5pZCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbGwgcmVnaXN0ZXJkIG9iamVjdCBjcmVhdGUgZmxhdm9yc1xuICAgKi9cbiAgZ2V0T2JqZWN0Q3JlYXRlRmxhdm9ycygpOiBPYmplY3RDcmVhdGVGbGF2b3JbXSB7XG4gICAgcmV0dXJuIHRoaXMuX29iamVjdENyZWF0ZUZsYXZvcnM7XG4gIH1cblxuICAvKipcbiAgICogRXhwb3NlcyBhIGxpc3Qgb2Ygb2JqZWN0IGZsYXZvcnMgdG8gdGhlIHNoZWxsLlxuICAgKiBGbGF2b3JzIGFyZSBhYmxlIHRvIGJlIGFwcGxpZWQgdG8gb2JqZWN0cyBhbmQgYWRkIG5ldyBtZXRhZGF0YSBwcm9wZXJ0aWVzIHRvIHRoZW0uXG4gICAqIEBwYXJhbSBmbGF2b3JzIEFycmF5IG9mIGZsYXZvcnMgdG8gYmUgZXhwb3NlZFxuICAgKiBAcGFyYW0gYXBwIE9wdGlvbmFsIElEIG9mIHRoZSBhcHAgdGhhdCBleHBvc2VzIHRoZSBmbGF2b3JzIChkZWZhdWx0cyB0byAnZ2xvYmFsJyBpZiBub3QgcHJvdmlkZWQpXG4gICAqIEBwYXJhbSBvcmlnaW4gT3B0aW9uYWwgb3JpZ2luIG9mIHRoZSBmbGF2b3JzLiBGbGF2b3JzIGNvdWxkIGJlIGFkZGVkIGJ5IGFwcHMgb3IgZGVyaXZlZFxuICAgKiBmcm9tIGEgY29uZmlndXJhdGlvbiAoZGVmYXVsdHMgdG8gJ2FwcCcgaWYgbm90IHByb3ZpZGVkKVxuICAgKi9cbiAgZXhwb3NlT2JqZWN0Rmxhdm9ycyhmbGF2b3JzOiBBcHBGbGF2b3JbXSwgYXBwID0gJ2dsb2JhbCcsIG9yaWdpbjogJ2FwcCcgfCAnY29uZmlnJyA9ICdhcHAnKSB7XG4gICAgZmxhdm9ycy5mb3JFYWNoKChmKSA9PiB0aGlzLmV4cG9zZU9iamVjdEZsYXZvcihmLCBhcHAsIG9yaWdpbikpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgZXhwb3NlZCBvYmplY3QgZmxhdm9ycyBmcm9tIHRoZSBzaGVsbC5cbiAgICogQHBhcmFtIGZsYXZvcnMgQXJyYXkgb2YgZmxhdm9ycyB0byBiZSBjb25jZWFsZWRcbiAgICovXG4gIGNvbmNlYWxPYmplY3RGbGF2b3JzKGZsYXZvcnM6IEFwcEZsYXZvcltdLCBhcHAgPSAnZ2xvYmFsJykge1xuICAgIGZsYXZvcnMuZm9yRWFjaCgoZikgPT4gdGhpcy5jb25jZWFsT2JqZWN0Rmxhdm9yKGYsIGFwcCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4cG9zZXMgYW4gb2JqZWN0IGZsYXZvciB0byB0aGUgc2hlbGwuIEZsYXZvcnMgYXJlIGFibGUgdG8gYmUgYXBwbGllZCB0byBvYmplY3RzXG4gICAqIGluIG9yZGVyIHRvIGFkZCBhIG5ldyBhc3BlY3QgdG8gdGhlbS4gQW4gb2JqZWN0IGNvbnRhaW5pbmcgYW4gaW1hZ2UgZm9yIGV4YW1wbGUgY291bGRcbiAgICogYmUgYWRkZWQgYSBmbGF2b3Igb2YgJ0VYSUYgRGF0YScgdGhhdCB3aWxsIGFkZCB0aGUgY29ycmVzcG9uZGluZyBTT1QgdG8gaXQuIFRoaXMgd2F5IHRoZVxuICAgKiBvYmplY3QgZ2V0cyBuZXcgbWV0YWRhdGEgcHJvcGVydGllcy4gSWYgc3VwcG9ydGVkLCB0aGVzZSBtZXRhZGF0YSBjb3VsZCBldmVuIGJlIGV4dHJhY3RlZFxuICAgKiBmcm9tIHRoZSBmaWxlIGFuZCBmaWxsZWQgb3V0IGF1dG9tYXRpY2FsbHkuXG4gICAqIEBwYXJhbSBmbGF2b3IgVGhlIGZsYXZvciBvYmplY3QgdG8gYmUgZXhwb3NlZFxuICAgKiBAcGFyYW0gYXBwIE9wdGlvbmFsIElEIG9mIHRoZSBhcHAgdGhhdCBleHBvc2VzIHRoZSBmbGF2b3IgKGRlZmF1bHRzIHRvICdnbG9iYWwnIGlmIG5vdCBwcm92aWRlZClcbiAgICogQHBhcmFtIG9yaWdpbiBPcHRpb25hbCBvcmlnaW4gb2YgdGhlIGZsYXZvcnMuIEZsYXZvcnMgY291bGQgYmUgYWRkZWQgYnkgYXBwcyBvciBkZXJpdmVkXG4gICAqIGZyb20gYSBjb25maWd1cmF0aW9uIChkZWZhdWx0cyB0byAnYXBwJyBpZiBub3QgcHJvdmlkZWQpXG4gICAqL1xuICBleHBvc2VPYmplY3RGbGF2b3IoZmxhdm9yOiBBcHBGbGF2b3IsIGFwcCA9ICdnbG9iYWwnLCBvcmlnaW46ICdhcHAnIHwgJ2NvbmZpZycgPSAnYXBwJykge1xuICAgIGNvbnN0IGlkeCA9IHRoaXMuX29iamVjdEZsYXZvcnMuZmluZEluZGV4KChmKSA9PiBmLmlkID09PSBmbGF2b3IuaWQgJiYgZi5hcHAgPT09IGFwcCk7XG4gICAgaWYgKGlkeCA9PT0gLTEpIHRoaXMuX29iamVjdEZsYXZvcnMucHVzaCh7IC4uLmZsYXZvciwgYXBwLCBvcmlnaW4gfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhbiBleHBvc2VkIG9iamVjdCBmbGF2b3IgZnJvbSB0aGUgc2hlbGwuXG4gICAqIEBwYXJhbSBmbGF2b3IgRmxhdm9yIHRvIGJlIGNvbmNlYWxlZFxuICAgKiBAcGFyYW0gYXBwIE9wdGlvbmFsIElEIG9mIHRoZSBhcHAgdGhhdCBleHBvc2VzIHRoZSBmbGF2b3IgKGRlZmF1bHRzIHRvICdnbG9iYWwnIGlmIG5vdCBwcm92aWRlZClcbiAgICovXG4gIGNvbmNlYWxPYmplY3RGbGF2b3IoZmxhdm9yOiBBcHBGbGF2b3IsIGFwcCA9ICdnbG9iYWwnKSB7XG4gICAgdGhpcy5fb2JqZWN0Rmxhdm9ycyA9IHRoaXMuX29iamVjdEZsYXZvcnMuZmlsdGVyKChmKSA9PiB7XG4gICAgICBjb25zdCBoYXNTYW1lSWQgPSBmLmlkID09PSBmbGF2b3IuaWQ7XG4gICAgICBjb25zdCBpc0Zyb21TYW1lQXBwID0gZi5hcHAgPT09IGFwcDtcbiAgICAgIHJldHVybiBoYXNTYW1lSWQgJiYgaXNGcm9tU2FtZUFwcCA/IGZhbHNlIDogdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgcmVnaXN0ZXJlZCBvYmplY3QgZmxhdm9yc1xuICAgKiBAcGFyYW0gYXBwIE9wdGlvbmFsIGFwcCBJRCB0aGF0IHJlc3RyaWN0cyB0aGUgcmV0dXJuZWQgZmxhdm9ycyB0byB0aGUgb25lc1xuICAgKiBwcm92aWRlZCBieSBhIHBhcnRpY3VsYXIgYXBwLiBJZiBub3QgcHJvdmlkZWQgYWxsIGZsYXZvcnMgYXJlIHJldHVybmVkXG4gICAqIEByZXR1cm5zIEFycmF5IG9mIG1hdGNoaW5nIG9iamVjdCBmbGF2b3JzXG4gICAqL1xuICBnZXRPYmplY3RGbGF2b3JzKGFwcD86IHN0cmluZyk6IE9iamVjdEZsYXZvcltdIHtcbiAgICByZXR1cm4gYXBwID8gdGhpcy5fb2JqZWN0Rmxhdm9ycy5maWx0ZXIoKG9mKSA9PiBvZi5hcHAgPT09IGFwcCkgOiB0aGlzLl9vYmplY3RGbGF2b3JzO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXJzIHRoZSBhcHBsaWNhdGlvbiBvZiBhbiBvYmplY3QgZmxhdm9yLiBJZiB0aGUgZmxhdm9yIGhhcyBhbiBhcHBseUNvbXBvbmVudFxuICAgKiBkZWZpbmVkLCB0aGUgb3ZlcmxheSB3aWxsIGJlIG9wZW5lZCB3aXRoIHRoZSBjb21wb25lbnQuIE90aGVyd2lzZSB0aGUgZmxhdm9yIHdpbGxcbiAgICogYmUgYXBwbGllZCBkaXJlY3RseSB0byB0aGUgb2JqZWN0LlxuICAgKiBAcGFyYW0gZG1zT2JqZWN0IFRoZSBvYmplY3QgdG8gYXBwbHkgdGhlIGZsYXZvciB0b1xuICAgKiBAcGFyYW0gZmxhdm9yIFRoZSBmbGF2b3IgdG8gYXBwbHlcbiAgICogQHBhcmFtIGRhdGEgT3B0aW9uYWwgZGF0YSB0byBiZSBwYXNzZWQgdG8gdGhlIGZsYXZvciBjb21wb25lbnRcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRydWUgaWYgdGhlIGZsYXZvciB3YXMgYXBwbGllZCBzdWNjZXNzZnVsbHlcbiAgICovXG4gIHRyaWdnZXJBcHBseU9iamVjdEZsYXZvcihcbiAgICBkbXNPYmplY3Q6IERtc09iamVjdCxcbiAgICBmbGF2b3I6IE9iamVjdEZsYXZvcixcbiAgICBkYXRhPzogYW55LFxuICAgIGFwcGx5Q29tcG9uZW50PzogVHlwZTxhbnk+XG4gICk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIGlmIChmbGF2b3IucHJldmVudEFwcGx5KSByZXR1cm4gb2YoZmFsc2UpO1xuICAgIGlmIChkbXNPYmplY3QpIHtcbiAgICAgIGNvbnN0IGFjID0gYXBwbHlDb21wb25lbnQgfHwgZmxhdm9yLmFwcGx5Q29tcG9uZW50O1xuICAgICAgaWYgKGFjKSB7XG4gICAgICAgIHRoaXMuI2RpYWxvZy5vcGVuKGFjLCB7XG4gICAgICAgICAgbWF4V2lkdGg6ICc5MHZ3JyxcbiAgICAgICAgICBtYXhIZWlnaHQ6ICc5MHZoJyxcbiAgICAgICAgICBtaW5XaWR0aDogJzUwdncnLFxuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGRtc09iamVjdCxcbiAgICAgICAgICAgIGZsYXZvcixcbiAgICAgICAgICAgIGRhdGFcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBzb3RzOiBzdHJpbmdbXSA9IChkbXNPYmplY3QuZGF0YVtCYXNlT2JqZWN0VHlwZUZpZWxkLlNFQ09OREFSWV9PQkpFQ1RfVFlQRV9JRFNdIGFzIHN0cmluZ1tdKSB8fCBbXTtcbiAgICAgICAgY29uc3QgZGF0YTogYW55ID0ge307XG4gICAgICAgIGRhdGFbQmFzZU9iamVjdFR5cGVGaWVsZC5TRUNPTkRBUllfT0JKRUNUX1RZUEVfSURTXSA9IFsuLi5zb3RzLCBmbGF2b3Iuc290XTtcbiAgICAgICAgcmV0dXJuIHRoaXMuI2Rtc1NlcnZpY2UudXBkYXRlRG1zT2JqZWN0KGRtc09iamVjdD8uaWQsIGRhdGEpLnBpcGUobWFwKCgpID0+IHRydWUpKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgcmV0dXJuIG9mKGZhbHNlKTtcbiAgfVxuXG4gIHJlbW92ZU9iamVjdEZsYXZvcihkbXNPYmplY3Q6IERtc09iamVjdCwgZmxhdm9yOiBPYmplY3RGbGF2b3IpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmIChmbGF2b3IucHJldmVudFJlbW92ZSkgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICBjb25zdCBkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICAgIFtCYXNlT2JqZWN0VHlwZUZpZWxkLlNFQ09OREFSWV9PQkpFQ1RfVFlQRV9JRFNdOiAoXG4gICAgICAgIGRtc09iamVjdC5kYXRhW0Jhc2VPYmplY3RUeXBlRmllbGQuU0VDT05EQVJZX09CSkVDVF9UWVBFX0lEU10gYXMgc3RyaW5nW11cbiAgICAgICkuZmlsdGVyKChzb3Q6IHN0cmluZykgPT4gc290ICE9PSBmbGF2b3Iuc290KVxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuI2Rtc1NlcnZpY2UudXBkYXRlRG1zT2JqZWN0KGRtc09iamVjdC5pZCwgZGF0YSkucGlwZShtYXAoKCkgPT4gdHJ1ZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBvYmplY3QgZmxhdm9ycyBhcHBsaWNhYmxlIGZvciBhIGNlcnRhaW4gbWltZXR5cGVcbiAgICogQHBhcmFtIG1pbWVUeXBlIE1pbWUgdHlwZSBvciBtaW1lIHR5cGUgcGF0dGVybiBsaWtlICdpbWFnZS8qJ1xuICAgKiBAcGFyYW0gYXBwIE9wdGlvbmFsIGFwcCBJRCB0aGF0IHJlc3RyaWN0cyB0aGUgcmV0dXJuZWQgZmxhdm9ycyB0byB0aGUgb25lc1xuICAgKiBwcm92aWRlZCBieSBhIHBhcnRpY3VsYXIgYXBwXG4gICAqIEBwYXJhbSBjdXN0b21GbGF2b3JzIE9wdGlvbmFsIGFycmF5IG9mIGN1c3RvbSBmbGF2b3JzIHRvIGFsc28gdGFrZSBpbnRvIGFjY291bnQuXG4gICAqIFRoaXMgY291bGQgYmUgZmxhdm9ycyBtYW5hZ2VkIGJ5IGFuIGFwcCBpdHNlbGYgdGhhdCBhcmUgbm90IHN1cHBvc2VkIHRvIGJlXG4gICAqIGV4cG9zZWQgdG8gb3RoZXIgYXBwc1xuICAgKiBAcmV0dXJucyBBcnJheSBvZiBtYXRjaGluZyBvYmplY3QgZmxhdm9yc1xuICAgKi9cbiAgZ2V0QXBwbGljYWJsZURvY3VtZW50Rmxhdm9ycyhtaW1lVHlwZTogc3RyaW5nLCBhcHA/OiBzdHJpbmcsIGN1c3RvbUZsYXZvcnM/OiBPYmplY3RGbGF2b3JbXSk6IE9iamVjdEZsYXZvcltdIHtcbiAgICByZXR1cm4gWy4uLihjdXN0b21GbGF2b3JzIHx8IFtdKSwgLi4udGhpcy5fb2JqZWN0Rmxhdm9yc10uZmlsdGVyKFxuICAgICAgKG9mOiBPYmplY3RGbGF2b3IpID0+XG4gICAgICAgIC8vICFvZi5wcmV2ZW50QXBwbHkgJiZcbiAgICAgICAgKCFvZi5hcHBsaWNhYmxlVG8/LmZvbGRlcnMgfHwgKG9mLmFwcGxpY2FibGVUbz8uZm9sZGVycyAmJiBvZi5hcHBsaWNhYmxlVG8/LmRvY3VtZW50cykpICYmXG4gICAgICAgICghb2YuYXBwbGljYWJsZVRvIHx8XG4gICAgICAgICAgIW9mLmFwcGxpY2FibGVUbz8ubWltZVR5cGVzIHx8XG4gICAgICAgICAgKG9mLmFwcGxpY2FibGVUbz8ubWltZVR5cGVzPy5zb21lKChtdHApID0+IFV0aWxzLnBhdHRlcm5Ub1JlZ0V4cChtdHApLnRlc3QobWltZVR5cGUpKSAmJlxuICAgICAgICAgICAgKCFhcHAgfHwgb2YuYXBwID09PSBhcHApKSlcbiAgICApO1xuICB9XG5cbiAgZ2V0QXBwbGljYWJsZUZvbGRlckZsYXZvcnMoYXBwPzogc3RyaW5nLCBjdXN0b21GbGF2b3JzPzogT2JqZWN0Rmxhdm9yW10pOiBPYmplY3RGbGF2b3JbXSB7XG4gICAgcmV0dXJuIFsuLi4oY3VzdG9tRmxhdm9ycyB8fCBbXSksIC4uLnRoaXMuX29iamVjdEZsYXZvcnNdLmZpbHRlcihcbiAgICAgIChvZjogT2JqZWN0Rmxhdm9yKSA9PiAhb2YucHJldmVudEFwcGx5ICYmIG9mLmFwcGxpY2FibGVUbz8uZm9sZGVycyAmJiAoIWFwcCB8fCBvZi5hcHAgPT09IGFwcClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhcHBsaWVkIGFuZCBhcHBsaWNhYmxlIG9iamVjdCBmbGF2b3JzIGZvciBhIGNlcnRhaW4gb2JqZWN0XG4gICAqIEBwYXJhbSBkbXNPYmplY3QgRG1zT2JqZWN0IHRvIGdldCBmbGF2b3JzIGZvclxuICAgKiBAcmV0dXJucyBPYmplY3QgY29udGFpbmluZyB0d28gYXJyYXlzOiBhcHBsaWVkIGFuZCBhcHBsaWNhYmxlIGZsYXZvcnNcbiAgICovXG4gIGdldEFwcGxpZWRPYmplY3RGbGF2b3JzKGRtc09iamVjdDogRG1zT2JqZWN0KToge1xuICAgIGFwcGxpZWQ6IE9iamVjdEZsYXZvcltdO1xuICAgIGFwcGxpY2FibGU6IE9iamVjdEZsYXZvcltdO1xuICB9IHtcbiAgICBjb25zdCBhcHBsaWVkOiBPYmplY3RGbGF2b3JbXSA9IFtdO1xuICAgIGNvbnN0IGFwcGxpY2FibGU6IE9iamVjdEZsYXZvcltdID0gW107XG4gICAgaWYgKGRtc09iamVjdCkge1xuICAgICAgY29uc3Qgc290czogc3RyaW5nW10gPSAoZG1zT2JqZWN0LmRhdGFbQmFzZU9iamVjdFR5cGVGaWVsZC5TRUNPTkRBUllfT0JKRUNUX1RZUEVfSURTXSBhcyBzdHJpbmdbXSkgfHwgW107XG4gICAgICBpZiAoZG1zT2JqZWN0LmNvbnRlbnQpIHtcbiAgICAgICAgdGhpcy5nZXRBcHBsaWNhYmxlRG9jdW1lbnRGbGF2b3JzKGRtc09iamVjdC5jb250ZW50Lm1pbWVUeXBlKS5mb3JFYWNoKChmbGF2b3I6IE9iamVjdEZsYXZvcikgPT4ge1xuICAgICAgICAgIGZsYXZvciA9IHtcbiAgICAgICAgICAgIC4uLmZsYXZvcixcbiAgICAgICAgICAgIG5hbWU6IHRoaXMuI3N5c3RlbS5nZXRMb2NhbGl6ZWRMYWJlbChmbGF2b3IuaWQpIHx8IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoZmxhdm9yLmlkKSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICB0aGlzLiNzeXN0ZW0uZ2V0TG9jYWxpemVkRGVzY3JpcHRpb24oZmxhdm9yLmlkKSB8fFxuICAgICAgICAgICAgICAoZmxhdm9yLmRlc2NyaXB0aW9uS2V5ID8gdGhpcy50cmFuc2xhdGUuaW5zdGFudChmbGF2b3IuZGVzY3JpcHRpb25LZXkpIDogdW5kZWZpbmVkKVxuICAgICAgICAgIH07XG4gICAgICAgICAgaWYgKHNvdHMuaW5jbHVkZXMoZmxhdm9yLnNvdCkpIHtcbiAgICAgICAgICAgIGFwcGxpZWQucHVzaChmbGF2b3IpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoIWZsYXZvci5wcmV2ZW50QXBwbHkpIHtcbiAgICAgICAgICAgIGFwcGxpY2FibGUucHVzaChmbGF2b3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChkbXNPYmplY3QuaXNGb2xkZXIpIHtcbiAgICAgICAgdGhpcy5nZXRBcHBsaWNhYmxlRm9sZGVyRmxhdm9ycygpLmZvckVhY2goKGZsYXZvcjogT2JqZWN0Rmxhdm9yKSA9PiB7XG4gICAgICAgICAgZmxhdm9yID0ge1xuICAgICAgICAgICAgLi4uZmxhdm9yLFxuICAgICAgICAgICAgbmFtZTogdGhpcy4jc3lzdGVtLmdldExvY2FsaXplZExhYmVsKGZsYXZvci5pZCkgfHwgdGhpcy50cmFuc2xhdGUuaW5zdGFudChmbGF2b3IuaWQpLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgIHRoaXMuI3N5c3RlbS5nZXRMb2NhbGl6ZWREZXNjcmlwdGlvbihmbGF2b3IuaWQpIHx8XG4gICAgICAgICAgICAgIChmbGF2b3IuZGVzY3JpcHRpb25LZXkgPyB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGZsYXZvci5kZXNjcmlwdGlvbktleSkgOiB1bmRlZmluZWQpXG4gICAgICAgICAgfTtcbiAgICAgICAgICBpZiAoc290cy5pbmNsdWRlcyhmbGF2b3Iuc290KSkge1xuICAgICAgICAgICAgYXBwbGllZC5wdXNoKGZsYXZvcik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFwcGxpY2FibGUucHVzaChmbGF2b3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IGFwcGxpZWQsIGFwcGxpY2FibGUgfTtcbiAgfVxuXG4gIGdldEZsYXZvckxhYmVsKGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy4jc3lzdGVtLmdldExvY2FsaXplZExhYmVsKGlkKSB8fCB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGlkKTtcbiAgfVxuXG4gIGFwcGx5T2JqZWN0Rmxhdm9yKFxuICAgIGRtc09iamVjdDogRG1zT2JqZWN0LFxuICAgIGZsYXZvcjogT2JqZWN0Rmxhdm9yLFxuICAgIGRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge31cbiAgKTogT2JzZXJ2YWJsZTxEbXNPYmplY3Q+IHtcbiAgICBjb25zdCBzb3RzOiBzdHJpbmdbXSA9IChkbXNPYmplY3QuZGF0YVtCYXNlT2JqZWN0VHlwZUZpZWxkLlNFQ09OREFSWV9PQkpFQ1RfVFlQRV9JRFNdIGFzIHN0cmluZ1tdKSB8fCBbXTtcbiAgICBkYXRhW0Jhc2VPYmplY3RUeXBlRmllbGQuU0VDT05EQVJZX09CSkVDVF9UWVBFX0lEU10gPSBbLi4uc290cywgZmxhdm9yLnNvdF07XG4gICAgcmV0dXJuIHRoaXMuI2Rtc1NlcnZpY2UudXBkYXRlRG1zT2JqZWN0KGRtc09iamVjdC5pZCwgZGF0YSk7XG4gIH1cblxuICByZWdpc3RlclRpbGVFeHRlbnNpb24oZXh0OiBUaWxlRXh0ZW5zaW9uKSB7XG4gICAgdGhpcy5fZXh0ZW5zaW9uc1tleHQudHlwZUlkXSA9IGV4dDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGlsZSBleHRlbnNpb25zIGZvciBhIGNlcnRhaW4gdHlwZVxuICAgKiBAcGFyYW0gdHlwZUlkIElEIG9mIHRoZSB0eXBlIHRvIGZldGNoIGV4dGVzaW9uIGZvciAob2JqZWN0VHlwZUlEIG9yIHNlY29uZGFyeU9iamVjdFR5cGVJRClcbiAgICogQHJldHVybnNcbiAgICovXG4gIGdldFJlZ2lzdGVyZWRUaWxlRXh0ZW5zaW9ucygpOiBSZWNvcmQ8c3RyaW5nLCBUaWxlRXh0ZW5zaW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuX2V4dGVuc2lvbnM7XG4gIH1cblxuICBfaW5pdE9iamVjdFR5cGVDb25maWcoKTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgLy8gbG9hZCBmbGF2b3JzIGZyb20gY29uZmlnXG4gICAgY29uc29sZS5kZWJ1ZygnTG9hZGluZyBvYmplY3QgdHlwZSBjb25maWcuLi4nKTtcbiAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20oXG4gICAgICB0aGlzLiNzaGVsbENvbmZpZy5nZXQoU0hFTExfQ09ORklHX1RZUEVTKS5waXBlKFxuICAgICAgICB0YXAoKHJlczogU2hlbGxDb25maWcgfCB1bmRlZmluZWQpID0+IHtcbiAgICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgICB0aGlzLiNyZWdpc3Rlck9iamVjdFR5cGVJY29ucygocmVzLmRhdGEgYXMgQ2xpZW50U2hlbGxUeXBlW10pLm1hcCgodCkgPT4gdC5pZCkpO1xuXG4gICAgICAgICAgICBjb25zdCBmbHY6IEFwcEZsYXZvcltdID0gKHJlcy5kYXRhIGFzIENsaWVudFNoZWxsVHlwZVtdKS5tYXAoKHQpID0+ICh7XG4gICAgICAgICAgICAgIGlkOiB0LmlkLFxuICAgICAgICAgICAgICBzb3Q6IHQuaWQsXG4gICAgICAgICAgICAgIGljb246IHQuaWQsXG4gICAgICAgICAgICAgIHN2Z0ljb246IHRydWUsXG4gICAgICAgICAgICAgIG9iamVjdFR5cGVJRDogdC5iYXNlVHlwZSxcbiAgICAgICAgICAgICAgYXBwbGljYWJsZVRvOiB7XG4gICAgICAgICAgICAgICAgZm9sZGVyczogdC5iYXNlVHlwZSA9PT0gU3lzdGVtVHlwZS5GT0xERVIgfHwgdC5iYXNlVHlwZSA9PT0gU3lzdGVtVHlwZS5PQkpFQ1QsXG4gICAgICAgICAgICAgICAgZG9jdW1lbnRzOiB0LmJhc2VUeXBlID09PSBTeXN0ZW1UeXBlLkRPQ1VNRU5UIHx8IHQuYmFzZVR5cGUgPT09IFN5c3RlbVR5cGUuT0JKRUNULFxuICAgICAgICAgICAgICAgIG1pbWVUeXBlczogdC5hcHBsaWNhYmxlVG9NaW1lVHlwZXMgfHwgdW5kZWZpbmVkXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHVzZURlZmF1bHRBcHBseUNvbXBvbmVudDogIXQuaW5zdGFudEFwcGx5XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB0aGlzLmV4cG9zZU9iamVjdEZsYXZvcnMoZmx2LCAnZ2xvYmFsJywgJ2NvbmZpZycpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgI3JlZ2lzdGVyT2JqZWN0VHlwZUljb25zKGlkczogc3RyaW5nW10pIHtcbiAgICB0aGlzLiNzeXN0ZW0uc3lzdGVtJC5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZHMuZm9yRWFjaCgoaWQpID0+IHtcbiAgICAgICAgLy8gc3BsaXQgdGVjaG5pY2FsIG5hbWUgZS5nLiAnc3lzdGVtOmRvY3VtZW50JyBhbmQgdXNlIHRoZSBmaXJzdCBwYXJ0IGFzIG5hbWVzcGFjZVxuICAgICAgICBjb25zdCBpZFRva2VucyA9IGlkLnNwbGl0KCc6Jyk7XG4gICAgICAgIGlmIChpZFRva2Vucy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICBjb25zdCB1cmkgPSBgJHt0aGlzLiNjb25maWdTZXJ2aWNlLmdldEFwaUJhc2UoQXBpQmFzZS5ub25lLCB0cnVlKX0ke3RoaXMuI3N5c3RlbS5nZXRPYmplY3RUeXBlSWNvblVyaShpZCl9YDtcbiAgICAgICAgICB0aGlzLiNpY29uUmVnaXN0cnkuYWRkU3ZnSWNvbkluTmFtZXNwYWNlKFxuICAgICAgICAgICAgaWRUb2tlbnNbMF0sXG4gICAgICAgICAgICBpZFRva2Vuc1sxXSxcbiAgICAgICAgICAgIHRoaXMuI3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwodXJpKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgX2luaXQoKSB7XG4gICAgLy8gdGhlIHBsYWNlIGZvciBpbml0aWFsaXphdGlvbiB0YXNrcyBpZlxuICB9XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yuuvis/client-shell-core",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.21.0",
|
|
4
4
|
"author": "OPTIMAL SYSTEMS GmbH <npm@optimal-systems.de>",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"peerDependencies": {
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"@angular/material": "^19.2.15",
|
|
10
10
|
"rxjs": "^7.8.2",
|
|
11
11
|
"@angular/platform-browser": "^19.2.1",
|
|
12
|
-
"@yuuvis/client-core": "^2.
|
|
12
|
+
"@yuuvis/client-core": "^2.21.0"
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
15
|
"tslib": "^2.3.0"
|