@rededor/site-front-end-lib 1.3.69 → 1.3.70
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.
|
@@ -437,7 +437,7 @@ export class SeoService {
|
|
|
437
437
|
headline: post.title?.rendered,
|
|
438
438
|
datePublished: post.date_gmt,
|
|
439
439
|
publisher: {
|
|
440
|
-
'@type': '
|
|
440
|
+
'@type': 'MedicalOrganization',
|
|
441
441
|
name: 'Rede D’Or',
|
|
442
442
|
},
|
|
443
443
|
description: post.title?.rendered,
|
|
@@ -450,7 +450,7 @@ export class SeoService {
|
|
|
450
450
|
width: postHeaderImage?.width || '',
|
|
451
451
|
},
|
|
452
452
|
author: {
|
|
453
|
-
'@type': '
|
|
453
|
+
'@type': 'MedicalOrganization',
|
|
454
454
|
name: 'Rede D’Or',
|
|
455
455
|
},
|
|
456
456
|
wordcount: postContent.split(' ').length,
|
|
@@ -486,4 +486,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
486
486
|
type: Inject,
|
|
487
487
|
args: [DOCUMENT]
|
|
488
488
|
}] }] });
|
|
489
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VvLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaXRlLWZyb250LWVuZC1saWIvc3JjL2xpYi9zZXJ2aWNlcy9zZW8vc2VvLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLFFBQVEsRUFBWSxNQUFNLGlCQUFpQixDQUFDO0FBRXJELE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBUXpCLE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSx3QkFBd0IsQ0FBQzs7OztBQUsvRCxNQUFNLE9BQU8sVUFBVTtJQXlCckIsWUFDVSxLQUFZLEVBQ1osSUFBVSxFQUNWLFFBQWtCLEVBQ0UsU0FBb0IsRUFDdEIsUUFBa0I7UUFKcEMsVUFBSyxHQUFMLEtBQUssQ0FBTztRQUNaLFNBQUksR0FBSixJQUFJLENBQU07UUFDVixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ0UsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBN0J2QyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGlCQUFZLEdBQUcsV0FBVyxDQUFDO1FBRTNCLFdBQU0sR0FBRztZQUNkLG1DQUFtQztZQUNuQyw0Q0FBNEM7WUFDNUMsa0RBQWtEO1lBQ2xELDZCQUE2QjtTQUM5QixDQUFDO1FBQ0ssZ0JBQVcsR0FBRyxVQUFVLENBQUM7UUFJeEIsY0FBUyxHQUFHLFNBQVMsQ0FBQztRQUV0Qix5QkFBb0IsR0FBRyxpQkFBaUIsQ0FBQztRQUUxQyxZQUFPLEdBQVEsSUFBSSxDQUFDO1FBQ3BCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLGdCQUFXLEdBQVcsRUFBRSxDQUFD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USxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELG1CQUFtQixDQUFDLFVBQWtCO1FBQ3BDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRU0sVUFBVSxDQUFDLEVBQUUsT0FBTyxHQUFHLElBQUksRUFBRSxXQUFXLEdBQUcsRUFBRSxFQUFFLFdBQVcsR0FBRyxFQUFFLEVBQUUsV0FBVyxHQUFHLEVBQUUsRUFBYztRQUNwRyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUNqQyxDQUFDOytHQXRnQlUsVUFBVSxtRkE2QlgsVUFBVSxhQUNWLFFBQVE7bUhBOUJQLFVBQVUsY0FGVCxNQUFNOzs0RkFFUCxVQUFVO2tCQUh0QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBOEJJLE1BQU07MkJBQUMsVUFBVTs7MEJBQ2pCLE1BQU07MkJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNZXRhLCBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBET0NVTUVOVCwgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuaW1wb3J0ICogYXMgaGUgZnJvbSAnaGUnO1xyXG5cclxuaW1wb3J0IHsgU29jaWFsTWV0YVByb3BlcnRpZXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvc29jaWFsLW1ldGEtcHJvcGVydGllcy5tb2RlbCc7XHJcbmltcG9ydCB7IEJyZWFkY3J1bWJzSXRlbXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvYnJlYWRjcnVtYnMvYnJlYWRjcnVtYnMtaXRlbXMubW9kZWwnO1xyXG5pbXBvcnQgeyBCcmVhZGNydW1ic0pzb25JdGVtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2JyZWFkY3J1bWJzL2JyZWFkY3J1bWJzLWpzb24taXRlbS5tb2RlbCc7XHJcbmltcG9ydCB7IFNlb0RhdGEgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2VvL3Nlby1kYXRhLm1vZGVsJztcclxuaW1wb3J0IHsgU2VvVW5pZGFkZSB9IGZyb20gJy4uLy4uL21vZGVscy9zZW8vc2VvLXVuaWRhZGUubW9kZWwnO1xyXG5pbXBvcnQgeyBXcFBvc3QgfSBmcm9tICcuLi8uLi9tb2RlbHMvd29yZHByZXNzL3Bvc3QvcG9zdC5tb2RlbCc7XHJcbmltcG9ydCB7IGdldFNpdGVVcmwsIHJlbW92ZUh0bWxUYWdzIH0gZnJvbSAnLi4vLi4vaGVscGVycyc7XHJcbmltcG9ydCB7IExJQl9DT05GSUcsIExpYkNvbmZpZyB9IGZyb20gJy4uLy4uL3Rva2Vucy9MaWJDb25maWcnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNlb1NlcnZpY2Uge1xyXG4gIHB1YmxpYyBzZXBhcmF0b3IgPSAnIC0gJztcclxuICBwdWJsaWMgZGVmYXVsdFRpdGxlID0gJ1JlZGUgROKAmU9yJztcclxuICBwdWJsaWMgYWN0aXZlRGVzY3JpcHRpb24hOiBzdHJpbmc7XHJcbiAgcHVibGljIHNhbWVBcyA9IFtcclxuICAgICdodHRwczovL3d3dy5mYWNlYm9vay5jb20vcmVkZWRvci8nLFxyXG4gICAgJ2h0dHBzOi8vd3d3Lmluc3RhZ3JhbS5jb20vcmVkZWRvcl9vZmljaWFsLycsXHJcbiAgICAnaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2NvbXBhbnkvcmVkZWRvci1zYW9sdWl6JyxcclxuICAgICdodHRwczovL3R3aXR0ZXIuY29tL3JlZGVkb3InLFxyXG4gIF07XHJcbiAgcHVibGljIHR3aXR0ZXJVc2VyID0gJ0ByZWRlZG9yJztcclxuXHJcbiAgcHJpdmF0ZSBjYW5vbmljYWxUYWchOiBIVE1MTGlua0VsZW1lbnQ7XHJcbiAgcHJpdmF0ZSBqc29uVGFnITogSFRNTFNjcmlwdEVsZW1lbnQ7XHJcbiAgcHJpdmF0ZSBqc29uVGFnSWQgPSAnc2VvSlNPTic7XHJcbiAgcHJpdmF0ZSBicmVhZGNydW1ic0pzb25UYWchOiBIVE1MU2NyaXB0RWxlbWVudDtcclxuICBwcml2YXRlIGJyZWFkY3J1bWJzSnNvblRhZ0lkID0gJ2JyZWFkY3J1bWJzSlNPTic7XHJcblxyXG4gIHB1YmxpYyB1bmlkYWRlOiBhbnkgPSBudWxsO1xyXG4gIHB1YmxpYyB1bmlkYWRlTmFtZTogc3RyaW5nID0gJyc7XHJcbiAgcHVibGljIHVuaWRhZGVQYXRoOiBzdHJpbmcgPSAnJztcclxuICBwdWJsaWMgdW5pZGFkZVNsdWc6IHN0cmluZyA9ICcnO1xyXG5cclxuICBwdWJsaWMgY3VzdG9tSnNvblR5cGU6IGFueVtdID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSB0aXRsZTogVGl0bGUsXHJcbiAgICBwcml2YXRlIG1ldGE6IE1ldGEsXHJcbiAgICBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbixcclxuICAgIEBJbmplY3QoTElCX0NPTkZJRykgcHJpdmF0ZSBsaWJDb25maWc6IExpYkNvbmZpZyxcclxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LFxyXG4gICkge31cclxuXHJcbiAgcHVibGljIHNldEZ1bGxTZW8oZGF0YTogU2VvRGF0YSkge1xyXG4gICAgdGhpcy5zZXRUaXRsZShkYXRhLnRpdGxlLnRleHQsICEhZGF0YS50aXRsZS5zdWIpO1xyXG4gICAgdGhpcy5zZXREZXNjcmlwdGlvbihkYXRhLmRlc2NyaXB0aW9uKTtcclxuICAgIHRoaXMuc2V0Q2Fub25pY2FsSHJlZihkYXRhLmNhbm9uaWNhbCk7XHJcbiAgICB0aGlzLnNldFBhZ2VKc29uKCk7XHJcbiAgICB0aGlzLnNldFNvY2lhbFRhZ3MoZGF0YS5zb2NpYWxUYWdzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmluZSB0YWcgZGVzY3JpcHRpb24gZGEgcMOhZ2luYVxyXG4gICAqIEBwYXJhbSBjb250ZW50IGNvbnRlw7pkbyBkYSBkZXNjcmnDp8OjbyA8c3RyaW5nPlxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXREZXNjcmlwdGlvbihjb250ZW50OiBzdHJpbmcpOiBTZW9TZXJ2aWNlIHtcclxuICAgIGNvbnN0IGRlc2NUYWcgPSB0aGlzLm1ldGEuZ2V0VGFnKFwibmFtZT0nZGVzY3JpcHRpb24nXCIpO1xyXG4gICAgaWYgKGNvbnRlbnQpIHtcclxuICAgICAgY29udGVudCA9IGhlLmRlY29kZShjb250ZW50KTtcclxuICAgICAgY29udGVudCA9IHJlbW92ZUh0bWxUYWdzKGNvbnRlbnQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29udGVudCA9ICcnO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hY3RpdmVEZXNjcmlwdGlvbiA9IGNvbnRlbnQ7XHJcbiAgICBjb25zdCB0YWdDb250ZW50ID0geyBuYW1lOiAnZGVzY3JpcHRpb24nLCBjb250ZW50IH07XHJcbiAgICBpZiAoZGVzY1RhZykge1xyXG4gICAgICB0aGlzLm1ldGEudXBkYXRlVGFnKHRhZ0NvbnRlbnQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5tZXRhLmFkZFRhZyh0YWdDb250ZW50KTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVmaW5lIG1ldGEgdGFncyBwYXJhIGEgcMOhZ2luYVxyXG4gICAqIEBwYXJhbSB0YWcgbm9tZSBkYSB0YWcgbWV0YVxyXG4gICAqIEBwYXJhbSBjb250ZW50IGNvbnRlw7pkbyBkYSB0YWcgbWV0YVxyXG4gICAqIEBwYXJhbSB0eXBlIHRpcG8gZGUgdGFnIG1ldGFcclxuICAgKi9cclxuICBwdWJsaWMgc2V0TWV0YVRhZyh0YWc6IHN0cmluZywgY29udGVudDogc3RyaW5nLCB0eXBlID0gJ25hbWUnKSB7XHJcbiAgICBjb25zdCBtZXRhdGFnID0gdGhpcy5tZXRhLmdldFRhZyhgJHt0eXBlfT0nJHt0YWd9J2ApO1xyXG4gICAgY29udGVudCA9IGhlLmRlY29kZShjb250ZW50KTtcclxuICAgIGNvbnRlbnQgPSByZW1vdmVIdG1sVGFncyhjb250ZW50KTtcclxuICAgIGNvbnN0IHRhZ0NvbnRlbnQgPSB7XHJcbiAgICAgIFt0eXBlXTogdGFnLFxyXG4gICAgICBjb250ZW50LFxyXG4gICAgfTtcclxuICAgIGlmICghbWV0YXRhZykge1xyXG4gICAgICB0aGlzLm1ldGEuYWRkVGFnKHRhZ0NvbnRlbnQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5tZXRhLnVwZGF0ZVRhZyh0YWdDb250ZW50KTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlIG1ldGEgdGFncyBkYSBww6FnaW5hXHJcbiAgICogQHBhcmFtIHRhZyBub21lIGRhIHRhZyBtZXRhXHJcbiAgICogQHBhcmFtIGNvbnRlbnQgY29udGXDumRvIGRhIHRhZyBtZXRhXHJcbiAgICogQHBhcmFtIGF0dHIgYXRyaWJ1dG8gZGEgdGFnIG1ldGFcclxuICAgKiBAcGFyYW0gdHlwZSB0aXBvIGRlIHRhZyBtZXRhXHJcbiAgICovXHJcbiAgcHVibGljIHJlbW92ZVRhZyh0YWc6IHN0cmluZywgY29udGVudDogc3RyaW5nLCBhdHRyOiBzdHJpbmcsIHR5cGUgPSAnbmFtZScpIHtcclxuICAgIGNvbnN0IG1ldGF0YWcgPSB0aGlzLm1ldGEuZ2V0VGFnKGAke3R5cGV9PScke3RhZ30nYCk7XHJcbiAgICBpZiAobWV0YXRhZykge1xyXG4gICAgICB0aGlzLm1ldGEucmVtb3ZlVGFnKGAke2F0dHJ9PSR7Y29udGVudH1gKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVmaW5lIG1ldGEgdGFncyBwYXJhIEZhY2Vib29rXHJcbiAgICogQHBhcmFtIHRpdGxlIHTDrXR1bG8gcGFyYSBvIGZhY2Vib29rXHJcbiAgICogQHBhcmFtIGRlc2NyaXB0aW9uIGRlc2NyacOnw6NvIHBhcmEgbyBmYWNlYm9va1xyXG4gICAqIEBwYXJhbSB1cmwgdXJsIHBhcmEgZGVmaW5pw6fDo28gZG8gZmFjZWJvb2tcclxuICAgKiBAcGFyYW0gaW1nIGltYWdlbSBwYXJhIGRlZmluacOnw6NvIG5vIGZhY2Vib29rXHJcbiAgICovXHJcbiAgcHVibGljIHNldE1ldGFGYWNlYm9vayh0aXRsZTogc3RyaW5nLCBkZXNjcmlwdGlvbjogc3RyaW5nLCB1cmw6IHN0cmluZywgaW1nOiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xyXG4gICAgdGhpcy5zZXRNZXRhVGFnKCdvZzp1cmwnLCB1cmwsICdwcm9wZXJ0eScpO1xyXG4gICAgdGhpcy5zZXRNZXRhVGFnKCdvZzp0aXRsZScsIHRpdGxlLCAncHJvcGVydHknKTtcclxuICAgIHRoaXMuc2V0TWV0YVRhZygnb2c6ZGVzY3JpcHRpb24nLCBkZXNjcmlwdGlvbiwgJ3Byb3BlcnR5Jyk7XHJcbiAgICB0aGlzLnNldE1ldGFUYWcoJ29nOnR5cGUnLCAnd2Vic2l0ZScsICdwcm9wZXJ0eScpO1xyXG4gICAgdGhpcy5zZXRNZXRhVGFnKCdvZzppbWFnZScsIGltZyA/PyAnJywgJ3Byb3BlcnR5Jyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWZpbmUgbWV0YSB0YWdzIHBhcmEgVHdpdHRlclxyXG4gICAqIEBwYXJhbSB0aXRsZSB0w610dWxvIHBhcmEgbyB0d2l0dGVyXHJcbiAgICogQHBhcmFtIGRlc2NyaXB0aW9uIGRlc2NyacOnw6NvIHBhcmEgbyB0d2l0dGVyXHJcbiAgICogQHBhcmFtIHVybCB1cmwgcGFyYSBvIHR3aXR0ZXJcclxuICAgKiBAcGFyYW0gaW1nIGltYWdlbSBwYXJhIGRlZmluacOnw6NvIG5vIHR3aXR0ZXJcclxuICAgKi9cclxuICBwdWJsaWMgc2V0TWV0YVR3aXR0ZXIodGl0bGU6IHN0cmluZywgZGVzY3JpcHRpb246IHN0cmluZywgdXJsOiBzdHJpbmcsIGltZzogc3RyaW5nIHwgbnVsbCA9IG51bGwpIHtcclxuICAgIHRoaXMuc2V0TWV0YVRhZygndHdpdHRlcjpzaXRlJywgdXJsLCAnbmFtZScpO1xyXG4gICAgdGhpcy5zZXRNZXRhVGFnKCd0d2l0dGVyOnRpdGxlJywgdGl0bGUsICduYW1lJyk7XHJcbiAgICB0aGlzLnNldE1ldGFUYWcoJ3R3aXR0ZXI6ZGVzY3JpcHRpb24nLCBkZXNjcmlwdGlvbiwgJ25hbWUnKTtcclxuICAgIHRoaXMuc2V0TWV0YVRhZygndHdpdHRlcjppbWFnZScsIGltZyA/PyAnJywgJ25hbWUnKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmluZSB0YWdzIGRlIHJlZGVzIHNvY2lhaXMgKFR3aXR0ZXIgZSBPcGVuIEdyYXBoKVxyXG4gICAqIEBwYXJhbSBwcm9wZXJ0aWVzXHJcbiAgICovXHJcbiAgc2V0U29jaWFsVGFncyhwcm9wZXJ0aWVzPzogU29jaWFsTWV0YVByb3BlcnRpZXMpIHtcclxuICAgIGNvbnN0IHBhZ2VQYXRoID0gdGhpcy5sb2NhdGlvbi5wYXRoKCk7XHJcbiAgICBjb25zdCBzaXRldXJsID0gZ2V0U2l0ZVVybCh0aGlzLmxpYkNvbmZpZz8uc2l0ZVVybCwgdGhpcy5saWJDb25maWc/LnNpdGVTdWZpeCk7XHJcbiAgICBsZXQgZGVmYXVsdFByb3BlcnRpZXM6IFNvY2lhbE1ldGFQcm9wZXJ0aWVzID0ge1xyXG4gICAgICB0d2l0dGVyQ2FyZDogJ3N1bW1hcnknLFxyXG4gICAgICB0d2l0dGVyU2l0ZTogdGhpcy50d2l0dGVyVXNlcixcclxuICAgICAgdHlwZTogJ3dlYnNpdGUnLFxyXG4gICAgICB0aXRsZTogdGhpcy5nZXRUaXRsZSgpLFxyXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5hY3RpdmVEZXNjcmlwdGlvbiB8fCAnJyxcclxuICAgICAgdXJsOiBgJHtzaXRldXJsfSR7cGFnZVBhdGh9YCxcclxuICAgICAgaW1hZ2U6IHRoaXMubGliQ29uZmlnPy5sb2dvUGF0aCA/IGAke3NpdGV1cmx9JHt0aGlzLmxpYkNvbmZpZy5sb2dvUGF0aH1gIDogJ2h0dHBzOi8vd3d3LnJlZGVkb3JzYW9sdWl6LmNvbS5ici9hc3NldHMvaW1ncy9sb2dvLXJlZGVkb3ItYmx1ZS5wbmcnLFxyXG4gICAgfTtcclxuICAgIGlmIChwcm9wZXJ0aWVzKSB7XHJcbiAgICAgIGRlZmF1bHRQcm9wZXJ0aWVzID0geyAuLi5kZWZhdWx0UHJvcGVydGllcywgLi4ucHJvcGVydGllcyB9O1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRNZXRhVGFnKCd0d2l0dGVyOmNhcmQnLCBkZWZhdWx0UHJvcGVydGllcy50d2l0dGVyQ2FyZCB8fCAnJywgJ25hbWUnKVxyXG4gICAgICAuc2V0TWV0YVRhZygndHdpdHRlcjpzaXRlJywgZGVmYXVsdFByb3BlcnRpZXMudHdpdHRlclNpdGUgfHwgJycsICduYW1lJylcclxuICAgICAgLnNldE1ldGFUYWcoJ29nOnR5cGUnLCBkZWZhdWx0UHJvcGVydGllcy50eXBlIHx8ICcnLCAncHJvcGVydHknKVxyXG4gICAgICAuc2V0TWV0YVRhZygnb2c6dGl0bGUnLCBkZWZhdWx0UHJvcGVydGllcy50aXRsZSB8fCAnJywgJ3Byb3BlcnR5JylcclxuICAgICAgLnNldE1ldGFUYWcoJ29nOmRlc2NyaXB0aW9uJywgZGVmYXVsdFByb3BlcnRpZXMuZGVzY3JpcHRpb24gfHwgJycsICdwcm9wZXJ0eScpXHJcbiAgICAgIC5zZXRNZXRhVGFnKCdvZzp1cmwnLCBkZWZhdWx0UHJvcGVydGllcy51cmwgfHwgJycsICdwcm9wZXJ0eScpXHJcbiAgICAgIC5zZXRNZXRhVGFnKCdvZzppbWFnZScsIGRlZmF1bHRQcm9wZXJ0aWVzLmltYWdlIHx8ICcnLCAncHJvcGVydHknKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmluZSB0w610dWxvIGRhIHDDoWdpbmFcclxuICAgKiBAcGFyYW0gdGl0bGUgdMOtdHVsbyBkYSBww6FnaW5hIDxzdHJpbmc+XHJcbiAgICogQHBhcmFtIHN1YiBTZSDDqSBzdWJzaXRlIGFjcmVzY2VudGEgdW5pZGFkZSA8Ym9vbGVhbj5cclxuICAgKi9cclxuICBwdWJsaWMgc2V0VGl0bGUodGl0bGU6IHN0cmluZywgc3ViID0gZmFsc2UpIHtcclxuICAgIGlmICh0aXRsZSAmJiB0aXRsZSAhPT0gJycpIHtcclxuICAgICAgdGl0bGUgPSBoZS5kZWNvZGUodGl0bGUpO1xyXG4gICAgICB0aXRsZSA9IHJlbW92ZUh0bWxUYWdzKHRpdGxlKTtcclxuICAgICAgaWYgKHN1Yikge1xyXG4gICAgICAgIHRpdGxlID0gaGUuZGVjb2RlKGAke3RpdGxlfSR7dGhpcy5zZXBhcmF0b3J9JHt0aGlzLnVuaWRhZGVOYW1lfWApO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudGl0bGUuc2V0VGl0bGUodGl0bGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKiogT2J0ZW0gdMOtdHVsbyBhdHVhbCBkYSBww6FnaW5hICovXHJcbiAgcHVibGljIGdldFRpdGxlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy50aXRsZS5nZXRUaXRsZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldDQwNFRpdGxlKGNvbXBvbmVudDogc3RyaW5nID0gJ0RlZmF1bHQgQ29tcG9uZW50Jykge1xyXG4gICAgaWYgKGNvbXBvbmVudCAmJiBjb21wb25lbnQgIT09ICcnKSB7XHJcbiAgICAgIGNvbXBvbmVudCA9IGhlLmRlY29kZShjb21wb25lbnQpO1xyXG4gICAgICBjb21wb25lbnQgPSByZW1vdmVIdG1sVGFncyhjb21wb25lbnQpO1xyXG4gICAgICBpZiAodGhpcy51bmlkYWRlTmFtZSkge1xyXG4gICAgICAgIGNvbXBvbmVudCA9IGhlLmRlY29kZShgJHtjb21wb25lbnR9JHt0aGlzLnNlcGFyYXRvcn0ke3RoaXMudW5pZGFkZU5hbWV9YCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IHRpdGxlID0gYEVycm8gNDA0IC0gJHtjb21wb25lbnR9IC0gJHt0aGlzLmxpYkNvbmZpZz8uc2l0ZU5hbWV9IC0gJHt0aGlzLmxvY2F0aW9uLnBhdGgoKX1gO1xyXG4gICAgdGhpcy50aXRsZS5zZXRUaXRsZSh0aXRsZSk7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXQ1MDBUaXRsZShjb21wb25lbnQ6IHN0cmluZyA9ICdEZWZhdWx0IENvbXBvbmVudCcpIHtcclxuICAgIGlmIChjb21wb25lbnQgJiYgY29tcG9uZW50ICE9PSAnJykge1xyXG4gICAgICBjb21wb25lbnQgPSBoZS5kZWNvZGUoY29tcG9uZW50KTtcclxuICAgICAgY29tcG9uZW50ID0gcmVtb3ZlSHRtbFRhZ3MoY29tcG9uZW50KTtcclxuICAgICAgaWYgKHRoaXMudW5pZGFkZU5hbWUpIHtcclxuICAgICAgICBjb21wb25lbnQgPSBoZS5kZWNvZGUoYCR7Y29tcG9uZW50fSR7dGhpcy5zZXBhcmF0b3J9JHt0aGlzLnVuaWRhZGVOYW1lfWApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCB0aXRsZSA9IGBFcnJvIDUwMCAtICR7Y29tcG9uZW50fSAtICR7dGhpcy5saWJDb25maWc/LnNpdGVOYW1lfSAtICR7dGhpcy5sb2NhdGlvbi5wYXRoKCl9YDtcclxuICAgIHRoaXMudGl0bGUuc2V0VGl0bGUodGl0bGUpO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKiogQ3JpYSB0YWcgc2NyaXB0IHBhcmEgSlNPTiBkZSBicmVhZGNydW1icyAqL1xyXG4gIHByaXZhdGUgY3JlYXRlQnJlYWRjcnVtYnNKU09OVGFnKCk6IEhUTUxTY3JpcHRFbGVtZW50IHtcclxuICAgIGNvbnN0IHRhZzogSFRNTFNjcmlwdEVsZW1lbnQgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xyXG4gICAgdGFnLmlkID0gdGhpcy5icmVhZGNydW1ic0pzb25UYWdJZDtcclxuICAgIHRhZy50eXBlID0gJ2FwcGxpY2F0aW9uL2xkK2pzb24nO1xyXG4gICAgdGhpcy5kb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHRhZyk7XHJcbiAgICB0aGlzLmJyZWFkY3J1bWJzSnNvblRhZyA9IHRhZztcclxuICAgIHJldHVybiB0YWc7XHJcbiAgfVxyXG5cclxuICAvKiogUmV0b3JuYSB0YWcgcGFyYSBzY3JpcHQganNvbiBkZSBicmVhZGNydW1icyBvdSBjcmlhIHNlIG7Do28gaG91dmVyLiAqL1xyXG4gIHByaXZhdGUgZ2V0QnJlYWRjcnVtYnNKU09OVGFnKCk6IEhUTUxTY3JpcHRFbGVtZW50IHtcclxuICAgIGNvbnN0IGVsZW1lbnRzID0gdGhpcy5kb2N1bWVudC5oZWFkLmNoaWxkcmVuO1xyXG4gICAgbGV0IGk6IG51bWJlcjtcclxuICAgIGZvciAoaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBlbGVtID0gZWxlbWVudHNbaV0gYXMgSFRNTFNjcmlwdEVsZW1lbnQ7XHJcbiAgICAgIGlmIChlbGVtICYmIGVsZW0uaWQgPT09IHRoaXMuYnJlYWRjcnVtYnNKc29uVGFnSWQpIHtcclxuICAgICAgICByZXR1cm4gZWxlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlQnJlYWRjcnVtYnNKU09OVGFnKCk7XHJcbiAgfVxyXG5cclxuICAvKiogRGVmaW5lIG8gSlNPTiBkZSBicmVhZGNydW1icyBkYSBww6FnaW5hICovXHJcbiAgcHVibGljIHNldEJyZWFkY3J1bWJzSnNvbihpdGVtczogQnJlYWRjcnVtYnNJdGVtc1tdKSB7XHJcbiAgICB0aGlzLmJyZWFkY3J1bWJzSnNvblRhZyA9IHRoaXMuZ2V0QnJlYWRjcnVtYnNKU09OVGFnKCk7XHJcbiAgICBjb25zdCBqc29uID0ge1xyXG4gICAgICAnQGNvbnRleHQnOiAnaHR0cDovL3NjaGVtYS5vcmcnLFxyXG4gICAgICAnQHR5cGUnOiAnQnJlYWRjcnVtYkxpc3QnLFxyXG4gICAgICBpdGVtTGlzdEVsZW1lbnQ6IHRoaXMuZ2V0SnNvbkJyZWFkY3J1bWJJdGVtcyhpdGVtcyksXHJcbiAgICB9O1xyXG4gICAgdGhpcy5icmVhZGNydW1ic0pzb25UYWcuaW5uZXJIVE1MID0gSlNPTi5zdHJpbmdpZnkoanNvbik7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKiBDb252ZXJ0ZSBpdGVucyBkbyBicmVhZGNydW1iIGVtIGl0ZW5zIGRvIEpTT04gKi9cclxuICBwcml2YXRlIGdldEpzb25CcmVhZGNydW1iSXRlbXMoaXRlbXM6IEJyZWFkY3J1bWJzSXRlbXNbXSk6IEJyZWFkY3J1bWJzSnNvbkl0ZW1bXSB7XHJcbiAgICBjb25zdCBqc29uSXRlbXMgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICAnQHR5cGUnOiAnTGlzdEl0ZW0nLFxyXG4gICAgICAgIHBvc2l0aW9uOiAxLFxyXG4gICAgICAgIGl0ZW06IHsgJ0BpZCc6IHRoaXMuZ2V0QnJlYWRjcnVtYkl0ZW1VcmwoWycvJ10pLCBuYW1lOiBoZS5lbmNvZGUoJ1DDoWdpbmEgSW5pY2lhbCcpIH0sXHJcbiAgICAgIH0gYXMgQnJlYWRjcnVtYnNKc29uSXRlbSxcclxuICAgIF07XHJcbiAgICBpdGVtcy5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgIGNvbnN0IGpzb25JdGVtOiBCcmVhZGNydW1ic0pzb25JdGVtID0ge1xyXG4gICAgICAgICdAdHlwZSc6ICdMaXN0SXRlbScsXHJcbiAgICAgICAgcG9zaXRpb246IGkgKyAyLFxyXG4gICAgICAgIGl0ZW06IHsgJ0BpZCc6IHRoaXMuZ2V0QnJlYWRjcnVtYkl0ZW1VcmwoaXRlbT8udXJsIHx8IFtdKSwgbmFtZTogaGUuZW5jb2RlKGl0ZW0ubGFiZWwpIH0sXHJcbiAgICAgIH07XHJcbiAgICAgIGpzb25JdGVtcy5wdXNoKGpzb25JdGVtKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGpzb25JdGVtcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1vbnRhIGEgdXJsIGRvIGl0ZW0gZGUgYnJlYWRjcnVtYiBwcm92ZW5pZW50ZSBkbyBhcnJheSBkZSB1cmxzXHJcbiAgICogb3UgZG8gY2FtaW5obyBkYSBwcsOzcHJpYSBww6FnaW5hLCBjb25mb3JtZSBjYXNvIGRvIMO6bHRpbW8gaXRlbS5cclxuICAgKi9cclxuICBwcml2YXRlIGdldEJyZWFkY3J1bWJJdGVtVXJsKHVybDogc3RyaW5nW10pOiBzdHJpbmcge1xyXG4gICAgY29uc3Qgc2l0ZXVybCA9IGdldFNpdGVVcmwodGhpcy5saWJDb25maWc/LnNpdGVVcmwsIHRoaXMubGliQ29uZmlnPy5zaXRlU3VmaXgpO1xyXG4gICAgaWYgKCF1cmwgfHwgdXJsLmxlbmd0aCA8PSAwKSB7XHJcbiAgICAgIGNvbnN0IHBhZ2VQYXRoID0gdGhpcy5sb2NhdGlvbi5wYXRoKCk7XHJcbiAgICAgIHJldHVybiBgJHtzaXRldXJsfSR7cGFnZVBhdGh9YDtcclxuICAgIH1cclxuICAgIHVybCA9IHVybC5maWx0ZXIoKHUpID0+IHUgIT09IHRoaXMudW5pZGFkZVBhdGgpO1xyXG4gICAgY29uc3QgdW5pZGFkZVBhdGggPSB0aGlzLmdldFVuaWRhZGVQYXRoKCk7XHJcbiAgICBjb25zdCBmdWxsUGF0aCA9IGAke3VuaWRhZGVQYXRofS8ke3VybC5qb2luKCcvJykucmVwbGFjZSgvXlxcLz8vLCAnJyl9YDtcclxuICAgIHJldHVybiBgJHtzaXRldXJsfSR7ZnVsbFBhdGh9YC5yZXBsYWNlKC9cXC8kLywgJycpO1xyXG4gIH1cclxuXHJcbiAgLyoqIENyaWEgdGFnIHNjcmlwdCBwYXJhIG8gSlNPTiBkZSBTRU8gKi9cclxuICBwcml2YXRlIGNyZWF0ZUpTT05UYWcoKTogSFRNTFNjcmlwdEVsZW1lbnQge1xyXG4gICAgY29uc3QgdGFnOiBIVE1MU2NyaXB0RWxlbWVudCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XHJcbiAgICB0YWcuaWQgPSB0aGlzLmpzb25UYWdJZDtcclxuICAgIHRhZy50eXBlID0gJ2FwcGxpY2F0aW9uL2xkK2pzb24nO1xyXG4gICAgdGhpcy5kb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHRhZyk7XHJcbiAgICB0aGlzLmpzb25UYWcgPSB0YWc7XHJcbiAgICByZXR1cm4gdGFnO1xyXG4gIH1cclxuXHJcbiAgLyoqIFJldG9ybmEgdGFnIHBhcmEgc2NyaXB0IGpzb24gZGUgYnJlYWRjcnVtYnMgb3UgY3JpYSBzZSBuw6NvIGhvdXZlci4gKi9cclxuICBwcml2YXRlIGdldEpTT05UYWcoKTogSFRNTFNjcmlwdEVsZW1lbnQge1xyXG4gICAgY29uc3QgZWxlbWVudHMgPSB0aGlzLmRvY3VtZW50LmhlYWQuY2hpbGRyZW47XHJcbiAgICBsZXQgaTogbnVtYmVyO1xyXG4gICAgZm9yIChpID0gMDsgaSA8IGVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGVsZW0gPSBlbGVtZW50c1tpXSBhcyBIVE1MU2NyaXB0RWxlbWVudDtcclxuICAgICAgaWYgKGVsZW0gJiYgZWxlbS5pZCA9PT0gdGhpcy5qc29uVGFnSWQpIHtcclxuICAgICAgICByZXR1cm4gZWxlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlSlNPTlRhZygpO1xyXG4gIH1cclxuXHJcbiAgLyoqIERlZmluZSBKU09OIHBhcmEgU0VPIHNvbWVudGUgcXVhbmRvIG5vIHNlcnZpZG9yICovXHJcbiAgcHVibGljIHNldFBhZ2VKc29uKCkge1xyXG4gICAgdGhpcy5qc29uVGFnID0gdGhpcy5nZXRKU09OVGFnKCk7XHJcblxyXG4gICAgY29uc3QgYmFzZUdyYXBoID0gW3RoaXMuZ2V0T3JnSnNvbigpLCB0aGlzLmdldFdlYnNpdGVKc29uKCksIHRoaXMuZ2V0V2VicGFnZUpzb24oKV07XHJcblxyXG4gICAgY29uc3QgZXh0ZW5kZWRHcmFwaCA9IHRoaXMuY3VzdG9tSnNvblR5cGUubGVuZ3RoID8gWy4uLmJhc2VHcmFwaCwgLi4udGhpcy5jdXN0b21Kc29uVHlwZV0gOiBiYXNlR3JhcGg7XHJcblxyXG4gICAgdGhpcy5jdXN0b21Kc29uVHlwZSA9IFtdO1xyXG5cclxuICAgIGNvbnN0IGpzb24gPSB7XHJcbiAgICAgICdAY29udGV4dCc6ICdodHRwOi8vc2NoZW1hLm9yZycsXHJcbiAgICAgICdAZ3JhcGgnOiBleHRlbmRlZEdyYXBoLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmpzb25UYWcuaW5uZXJIVE1MID0gSlNPTi5zdHJpbmdpZnkoanNvbik7XHJcblxyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKiogT2J0ZW0gSlNPTiBkYSBPcmdhbml6YcOnw6NvICovXHJcbiAgcHJpdmF0ZSBnZXRPcmdKc29uKCkge1xyXG4gICAgY29uc3Qgc2l0ZXVybCA9IGdldFNpdGVVcmwodGhpcy5saWJDb25maWc/LnNpdGVVcmwsIHRoaXMubGliQ29uZmlnPy5zaXRlU3VmaXgpO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgJ0B0eXBlJzogJ01lZGljYWxPcmdhbml6YXRpb24nLFxyXG4gICAgICAnQGlkJzogYCR7c2l0ZXVybH0jbWVkaWNhbG9yZ2FuaXphdGlvbmAsXHJcbiAgICAgIG5hbWU6IHRoaXMuZGVmYXVsdFRpdGxlLFxyXG4gICAgICBrZXl3b3JkczogdGhpcy5saWJDb25maWc/LmtleXdvcmRzLFxyXG4gICAgICB1cmw6IGAke3NpdGV1cmx9YCxcclxuICAgICAgc2FtZUFzOiB0aGlzLnNhbWVBcyxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKiogT2J0ZW0gSlNPTiBkbyBXZWJzaXRlIChwb3J0YWwsIHVuaWRhZGVzLCBldGMpICovXHJcbiAgcHJpdmF0ZSBnZXRXZWJzaXRlSnNvbigpIHtcclxuICAgIGNvbnN0IHVuaWRhZGVQYXRoID0gdGhpcy5nZXRVbmlkYWRlUGF0aCgpO1xyXG4gICAgY29uc3Qgc2l0ZXVybCA9IGdldFNpdGVVcmwodGhpcy5saWJDb25maWc/LnNpdGVVcmwsIHRoaXMubGliQ29uZmlnPy5zaXRlU3VmaXgpO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgJ0B0eXBlJzogJ1dlYlNpdGUnLFxyXG4gICAgICAnQGlkJzogYCR7c2l0ZXVybH0ke3VuaWRhZGVQYXRofSN3ZWJzaXRlYCxcclxuICAgICAgdXJsOiBgJHtzaXRldXJsfSR7dW5pZGFkZVBhdGh9YCxcclxuICAgICAgbmFtZTogdGhpcy51bmlkYWRlTmFtZSxcclxuICAgICAga2V5d29yZHM6IHRoaXMubGliQ29uZmlnPy5rZXl3b3JkcyxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKiogT2J0ZW0gSnNvbiBkYSBww6FnaW5hICovXHJcbiAgcHJpdmF0ZSBnZXRXZWJwYWdlSnNvbigpIHtcclxuICAgIGNvbnN0IHVuaWRhZGVQYXRoID0gdGhpcy5nZXRVbmlkYWRlUGF0aCgpO1xyXG4gICAgY29uc3Qgc2l0ZVVSTCA9IGdldFNpdGVVcmwodGhpcy5saWJDb25maWc/LnNpdGVVcmwsIHRoaXMubGliQ29uZmlnPy5zaXRlU3VmaXgpO1xyXG4gICAgY29uc3QgcGFnZVBhdGggPSBgJHtzaXRlVVJMfSR7dGhpcy5sb2NhdGlvbi5wYXRoKCl9YDtcclxuICAgIGNvbnN0IGRlc2MgPSB0aGlzLmFjdGl2ZURlc2NyaXB0aW9uID8gdGhpcy5hY3RpdmVEZXNjcmlwdGlvbiA6ICcnO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgJ0B0eXBlJzogJ1dlYlBhZ2UnLFxyXG4gICAgICAnQGlkJzogYCR7cGFnZVBhdGh9I3dlYnBhZ2VgLFxyXG4gICAgICB1cmw6IHBhZ2VQYXRoLFxyXG4gICAgICBpbkxhbmd1YWdlOiAncHQtQlInLFxyXG4gICAgICBuYW1lOiB0aGlzLmdldFRpdGxlKCksXHJcbiAgICAgIGlzUGFydE9mOiB7ICdAaWQnOiBgJHtzaXRlVVJMfSR7dW5pZGFkZVBhdGh9I3dlYnNpdGVgIH0sXHJcbiAgICAgIGFib3V0OiB7ICdAaWQnOiBgJHtzaXRlVVJMfSNtZWRpY2Fsb3JnYW5pemF0aW9uYCB9LFxyXG4gICAgICBkZXNjcmlwdGlvbjogZGVzYyxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFVuaWRhZGVQYXRoKCkge1xyXG4gICAgbGV0IHVuaWRhZGVQYXRoID0gJyc7XHJcbiAgICBpZiAodGhpcy51bmlkYWRlICYmIHRoaXMudW5pZGFkZVBhdGgpIHtcclxuICAgICAgdW5pZGFkZVBhdGggPSB0aGlzLnVuaWRhZGU/LnBhdGggPT09ICcvJyA/ICcnIDogdGhpcy51bmlkYWRlUGF0aD8uc3Vic3RyaW5nKDAsIHRoaXMudW5pZGFkZVBhdGg/Lmxlbmd0aCAtIDEpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVuaWRhZGVQYXRoO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT2J0w6ltIGEgVVJMIGNhbsO0bmljYSBkYSBww6FnaW5hLlxyXG4gICAqIEByZXR1cm5zIEEgVVJMIGNhbsO0bmljYSBkYSBww6FnaW5hLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRDYW5vbmljYWxIcmVmKCk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXRoaXMuY2Fub25pY2FsVGFnKSB7XHJcbiAgICAgIHRoaXMuY2Fub25pY2FsVGFnID0gdGhpcy5nZXRDYW5vbmljYWxUYWcoKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmNhbm9uaWNhbFRhZy5ocmVmO1xyXG4gIH1cclxuXHJcbiAgLyoqIENyaWEgdGFnIHBhcmEgbGlua3MgY2Fub25pY2FscyBubyBoZWFkICovXHJcbiAgcHJpdmF0ZSBjcmVhdGVDYW5vbmljYWxUYWcoKTogSFRNTExpbmtFbGVtZW50IHtcclxuICAgIGNvbnN0IHRhZyA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGluaycpO1xyXG4gICAgdGFnLnNldEF0dHJpYnV0ZSgncmVsJywgJ2Nhbm9uaWNhbCcpO1xyXG4gICAgdGhpcy5kb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHRhZyk7XHJcbiAgICB0YWcuc2V0QXR0cmlidXRlKCdocmVmJywgdGhpcy5kb2N1bWVudC5VUkwpO1xyXG4gICAgdGhpcy5jYW5vbmljYWxUYWcgPSB0YWc7XHJcbiAgICByZXR1cm4gdGFnO1xyXG4gIH1cclxuXHJcbiAgLyoqIFJldG9ybmEgdGFnIHBhcmEgbGluayBjYW5vbmljYWwgZXhpc3RlIG91IGNyaWEgc2UgbsOjbyBob3V2ZXIuICovXHJcbiAgcHJpdmF0ZSBnZXRDYW5vbmljYWxUYWcoKTogSFRNTExpbmtFbGVtZW50IHtcclxuICAgIGNvbnN0IGVsZW1lbnRzID0gdGhpcy5kb2N1bWVudC5oZWFkLmNoaWxkcmVuO1xyXG4gICAgbGV0IGk6IG51bWJlcjtcclxuICAgIGZvciAoaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBlbGVtID0gZWxlbWVudHNbaV0gYXMgSFRNTExpbmtFbGVtZW50O1xyXG4gICAgICBpZiAoZWxlbSAmJiBlbGVtLnRhZ05hbWUgPT09ICdMSU5LJyAmJiBlbGVtLnJlbCA9PT0gJ2Nhbm9uaWNhbCcpIHtcclxuICAgICAgICByZXR1cm4gZWxlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlQ2Fub25pY2FsVGFnKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWZpbmUgbGluayBjYW5vbmljYWwgZGEgcMOhZ2luYVxyXG4gICAqIEBwYXJhbSB1cmwgdXJsIGNhbm9uaWNhbFxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXRDYW5vbmljYWxIcmVmKHVybD86IHN0cmluZykge1xyXG4gICAgaWYgKCF0aGlzLmNhbm9uaWNhbFRhZykge1xyXG4gICAgICB0aGlzLmNhbm9uaWNhbFRhZyA9IHRoaXMuZ2V0Q2Fub25pY2FsVGFnKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHBhdGggPSB0aGlzLmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lO1xyXG5cclxuICAgIGlmICh0aGlzLmxpYkNvbmZpZz8uc2l0ZVN1Zml4ICYmIHBhdGguaW5jbHVkZXModGhpcy5saWJDb25maWc/LnNpdGVTdWZpeCkpIHtcclxuICAgICAgcGF0aCA9IHBhdGgucmVwbGFjZSh0aGlzLmxpYkNvbmZpZz8uc2l0ZVN1Zml4LCAnJyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFwYXRoLnN0YXJ0c1dpdGgoJy8nKSkge1xyXG4gICAgICBwYXRoID0gYC8ke3BhdGh9YDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjYW5vbmljYWxVcmwgPSB1cmwgJiYgdGhpcy5pc0N1c3RvbUNhbm9uaWNhbCh1cmwpID8gdXJsIDogYCR7Z2V0U2l0ZVVybCh0aGlzLmxpYkNvbmZpZz8uc2l0ZVVybCwgdGhpcy5saWJDb25maWc/LnNpdGVTdWZpeCl9JHtwYXRofWA7XHJcblxyXG4gICAgdGhpcy5jYW5vbmljYWxUYWcuc2V0QXR0cmlidXRlKCdocmVmJywgY2Fub25pY2FsVXJsKTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmVyaWZpY2Egc2UgYSBVUkwgZm9ybmVjaWRhIMOpIHVtIGxpbmsgY2Fub25pY2FsIHBlcnNvbmFsaXphZG9cclxuICAgKiBAcGFyYW0gdXJsIFVSTCBmb3JuZWNpZGFcclxuICAgKi9cclxuICBwdWJsaWMgaXNDdXN0b21DYW5vbmljYWwodXJsOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHNpdGV1cmwgPSBnZXRTaXRlVXJsKHRoaXMubGliQ29uZmlnPy5zaXRlVXJsLCB0aGlzLmxpYkNvbmZpZz8uc2l0ZVN1Zml4KTtcclxuICAgIHJldHVybiB1cmwuc3RhcnRzV2l0aChzaXRldXJsKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9idMOpbSB1bWEgdXJsIHbDoWxpZGEgbmEgYXBsaWNhw6fDo28gcHJvdmVuaWVudGUgZGUgdW1hIFVSTCBnZXJhZGFcclxuICAgKiBwZWxvIHBsdWdpbiBZb2FzdCBwYXJhIGNhbm9uaWNhbCBhdXRvbcOhdGljby5cclxuICAgKiBFeC46IGh0dHBzOi8vd3AucmVkZWRvcnNhb2x1aXouY29tLmJyL2JyYXNpbC9lc3BlY2lhbGlkYWRlcy9jYXJkaW9sb2dpYS9cclxuICAgKiBAcGFyYW0gdXJsRnJvbVdwQXBpIFVSTCBjYW5vbmljYSBnZXJhZGEgcGVsbyBZb2FzdCBQbHVnaW4uXHJcbiAgICovXHJcbiAgdG9Mb2NhbENhbm9uaWNhbCh1cmxGcm9tV3BBcGk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBhcGlVcmwgPSB0aGlzLmxpYkNvbmZpZz8ud3BVcmwgPz8gJyc7XHJcbiAgICBjb25zdCBzaXRldXJsID0gZ2V0U2l0ZVVybCh0aGlzLmxpYkNvbmZpZz8uc2l0ZVVybCwgdGhpcy5saWJDb25maWc/LnNpdGVTdWZpeCk7XHJcbiAgICBjb25zdCB1bmlkYWRlU2x1ZyA9IHRoaXMudW5pZGFkZVNsdWc7XHJcbiAgICBsZXQgY29udmVydGVkID0gdXJsRnJvbVdwQXBpLnJlcGxhY2UoYXBpVXJsLCBzaXRldXJsKTtcclxuICAgIGlmICh1bmlkYWRlU2x1ZyAhPT0gJy8nICYmIGNvbnZlcnRlZC5pbmNsdWRlcyhgLyR7dW5pZGFkZVNsdWd9L2ApKSB7XHJcbiAgICAgIGNvbnZlcnRlZCA9IGNvbnZlcnRlZC5yZXBsYWNlKGAvJHt1bmlkYWRlU2x1Z30vYCwgYCR7dGhpcy51bmlkYWRlUGF0aH1gKTtcclxuICAgIH1cclxuICAgIHJldHVybiBjb252ZXJ0ZWQ7XHJcbiAgfVxyXG5cclxuICBnZXRQb3N0Q29udGVudChwb3N0OiBXcFBvc3QpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgY29udGVudCA9IHBvc3Q/LmFjZj8uWydyZHNsX3Bvc3RfY29udGVudCddID8gcG9zdD8uYWNmPy5yZHNsX3Bvc3RfY29udGVudD8uZmluZCgoY29udGVudDogYW55KSA9PiBjb250ZW50LmFjZl9mY19sYXlvdXQgPT09ICd0ZXh0X2h0bWwnKSA6IG51bGw7XHJcbiAgICByZXR1cm4gY29udGVudD8uY29udGVudCB8fCBwb3N0LmNvbnRlbnQucmVuZGVyZWQgfHwgJyc7XHJcbiAgfVxyXG5cclxuICBhZGRBcnRpY2xlU2NyaXB0KHBvc3Q6IFdwUG9zdCwgc2NyaXB0TmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBwb3N0Q29udGVudCA9IHRoaXMuZ2V0UG9zdENvbnRlbnQocG9zdCk7XHJcbiAgICBjb25zdCBwb3N0SGVhZGVySW1hZ2UgPSBwb3N0Py5hY2Y/LlsncmRzbF9wb3N0X2hlYWRlcl9pbWcnXVxyXG4gICAgICA/IHtcclxuICAgICAgICAgIHVybDogcG9zdD8uYWNmPy5bJ3Jkc2xfcG9zdF9oZWFkZXJfaW1nJ10udXJsLFxyXG4gICAgICAgICAgd2lkdGg6IHBvc3Q/LmFjZj8uWydyZHNsX3Bvc3RfaGVhZGVyX2ltZyddLndpZHRoLFxyXG4gICAgICAgICAgaGVpZ2h0OiBwb3N0Py5hY2Y/LlsncmRzbF9wb3N0X2hlYWRlcl9pbWcnXS5oZWlnaHQsXHJcbiAgICAgICAgfVxyXG4gICAgICA6IG51bGw7XHJcblxyXG4gICAgY29uc3Qgc3RydWN0dXJlZERhdGEgPSB7XHJcbiAgICAgICdAY29udGV4dCc6ICdodHRwczovL3NjaGVtYS5vcmcnLFxyXG4gICAgICAnQHR5cGUnOiAnQXJ0aWNsZScsXHJcbiAgICAgIG1haW5FbnRpdHlPZlBhZ2U6IGAke2dldFNpdGVVcmwodGhpcy5saWJDb25maWc/LnNpdGVVcmwsIHRoaXMubGliQ29uZmlnPy5zaXRlU3VmaXgpfSR7dGhpcy5sb2NhdGlvbi5wYXRoKCl9YCxcclxuICAgICAgaGVhZGxpbmU6IHBvc3QudGl0bGU/LnJlbmRlcmVkLFxyXG4gICAgICBkYXRlUHVibGlzaGVkOiBwb3N0LmRhdGVfZ210LFxyXG4gICAgICBwdWJsaXNoZXI6IHtcclxuICAgICAgICAnQHR5cGUnOiAnT3JnYW5pemF0aW9uJyxcclxuICAgICAgICBuYW1lOiAnUmVkZSBE4oCZT3InLFxyXG4gICAgICB9LFxyXG4gICAgICBkZXNjcmlwdGlvbjogcG9zdC50aXRsZT8ucmVuZGVyZWQsXHJcbiAgICAgIGFydGljbGVCb2R5OiByZW1vdmVIdG1sVGFncyhoZS5kZWNvZGUocG9zdENvbnRlbnQpKSxcclxuICAgICAgZGF0ZU1vZGlmaWVkOiBwb3N0Lm1vZGlmaWVkX2dtdCxcclxuICAgICAgaW1hZ2U6IHtcclxuICAgICAgICAnQHR5cGUnOiAnSW1hZ2VPYmplY3QnLFxyXG4gICAgICAgIHVybDogcG9zdEhlYWRlckltYWdlPy51cmwgfHwgcG9zdC5mZWF0dXJlZF9tZWRpYV9wYXRoIHx8ICcnLFxyXG4gICAgICAgIGhlaWdodDogcG9zdEhlYWRlckltYWdlPy5oZWlnaHQgfHwgJycsXHJcbiAgICAgICAgd2lkdGg6IHBvc3RIZWFkZXJJbWFnZT8ud2lkdGggfHwgJycsXHJcbiAgICAgIH0sXHJcbiAgICAgIGF1dGhvcjoge1xyXG4gICAgICAgICdAdHlwZSc6ICdPcmdhbml6YXRpb24nLFxyXG4gICAgICAgIG5hbWU6ICdSZWRlIETigJlPcicsXHJcbiAgICAgIH0sXHJcbiAgICAgIHdvcmRjb3VudDogcG9zdENvbnRlbnQuc3BsaXQoJyAnKS5sZW5ndGgsXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHNjcmlwdCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XHJcblxyXG4gICAgc2NyaXB0LnR5cGUgPSAnYXBwbGljYXRpb24vbGQranNvbic7XHJcbiAgICBzY3JpcHQuaWQgPSBzY3JpcHROYW1lO1xyXG4gICAgc2NyaXB0LmlubmVySFRNTCA9IEpTT04uc3RyaW5naWZ5KHN0cnVjdHVyZWREYXRhKTtcclxuXHJcbiAgICB0aGlzLmRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUFydGljbGVTY3JpcHQoc2NyaXB0TmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBzY3JpcHQgPSB0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNjcmlwdE5hbWUpO1xyXG4gICAgc2NyaXB0Py5yZW1vdmUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRVbmlkYWRlKHsgdW5pZGFkZSA9IG51bGwsIHVuaWRhZGVOYW1lID0gJycsIHVuaWRhZGVQYXRoID0gJycsIHVuaWRhZGVTbHVnID0gJycgfTogU2VvVW5pZGFkZSkge1xyXG4gICAgdGhpcy51bmlkYWRlID0gdW5pZGFkZTtcclxuICAgIHRoaXMudW5pZGFkZU5hbWUgPSB1bmlkYWRlTmFtZTtcclxuICAgIHRoaXMudW5pZGFkZVBhdGggPSB1bmlkYWRlUGF0aDtcclxuICAgIHRoaXMudW5pZGFkZVNsdWcgPSB1bmlkYWRlU2x1ZztcclxuICB9XHJcbn1cclxuIl19
|
|
489
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VvLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaXRlLWZyb250LWVuZC1saWIvc3JjL2xpYi9zZXJ2aWNlcy9zZW8vc2VvLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLFFBQVEsRUFBWSxNQUFNLGlCQUFpQixDQUFDO0FBRXJELE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBUXpCLE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSx3QkFBd0IsQ0FBQzs7OztBQUsvRCxNQUFNLE9BQU8sVUFBVTtJQXlCckIsWUFDVSxLQUFZLEVBQ1osSUFBVSxFQUNWLFFBQWtCLEVBQ0UsU0FBb0IsRUFDdEIsUUFBa0I7UUFKcEMsVUFBSyxHQUFMLEtBQUssQ0FBTztRQUNaLFNBQUksR0FBSixJQUFJLENBQU07UUFDVixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ0UsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBN0J2QyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGlCQUFZLEdBQUcsV0FBVyxDQUFDO1FBRTNCLFdBQU0sR0FBRztZQUNkLG1DQUFtQztZQUNuQyw0Q0FBNEM7WUFDNUMsa0RBQWtEO1lBQ2xELDZCQUE2QjtTQUM5QixDQUFDO1FBQ0ssZ0JBQVcsR0FBRyxVQUFVLENBQUM7UUFJeEIsY0FBUyxHQUFHLFNBQVMsQ0FBQztRQUV0Qix5QkFBb0IsR0FBRyxpQkFBaUIsQ0FBQztRQUUxQyxZQUFPLEdBQVEsSUFBSSxDQUFDO1FBQ3BCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLGdCQUFXLEdBQVcsRUFBRSxDQUFD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LFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxVQUFrQjtRQUNwQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4RCxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVNLFVBQVUsQ0FBQyxFQUFFLE9BQU8sR0FBRyxJQUFJLEVBQUUsV0FBVyxHQUFHLEVBQUUsRUFBRSxXQUFXLEdBQUcsRUFBRSxFQUFFLFdBQVcsR0FBRyxFQUFFLEVBQWM7UUFDcEcsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDakMsQ0FBQzsrR0F0Z0JVLFVBQVUsbUZBNkJYLFVBQVUsYUFDVixRQUFRO21IQTlCUCxVQUFVLGNBRlQsTUFBTTs7NEZBRVAsVUFBVTtrQkFIdEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQThCSSxNQUFNOzJCQUFDLFVBQVU7OzBCQUNqQixNQUFNOzJCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWV0YSwgVGl0bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgRE9DVU1FTlQsIExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbmltcG9ydCAqIGFzIGhlIGZyb20gJ2hlJztcclxuXHJcbmltcG9ydCB7IFNvY2lhbE1ldGFQcm9wZXJ0aWVzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NvY2lhbC1tZXRhLXByb3BlcnRpZXMubW9kZWwnO1xyXG5pbXBvcnQgeyBCcmVhZGNydW1ic0l0ZW1zIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2JyZWFkY3J1bWJzL2JyZWFkY3J1bWJzLWl0ZW1zLm1vZGVsJztcclxuaW1wb3J0IHsgQnJlYWRjcnVtYnNKc29uSXRlbSB9IGZyb20gJy4uLy4uL21vZGVscy9icmVhZGNydW1icy9icmVhZGNydW1icy1qc29uLWl0ZW0ubW9kZWwnO1xyXG5pbXBvcnQgeyBTZW9EYXRhIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3Nlby9zZW8tZGF0YS5tb2RlbCc7XHJcbmltcG9ydCB7IFNlb1VuaWRhZGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2VvL3Nlby11bmlkYWRlLm1vZGVsJztcclxuaW1wb3J0IHsgV3BQb3N0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3dvcmRwcmVzcy9wb3N0L3Bvc3QubW9kZWwnO1xyXG5pbXBvcnQgeyBnZXRTaXRlVXJsLCByZW1vdmVIdG1sVGFncyB9IGZyb20gJy4uLy4uL2hlbHBlcnMnO1xyXG5pbXBvcnQgeyBMSUJfQ09ORklHLCBMaWJDb25maWcgfSBmcm9tICcuLi8uLi90b2tlbnMvTGliQ29uZmlnJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZW9TZXJ2aWNlIHtcclxuICBwdWJsaWMgc2VwYXJhdG9yID0gJyAtICc7XHJcbiAgcHVibGljIGRlZmF1bHRUaXRsZSA9ICdSZWRlIETigJlPcic7XHJcbiAgcHVibGljIGFjdGl2ZURlc2NyaXB0aW9uITogc3RyaW5nO1xyXG4gIHB1YmxpYyBzYW1lQXMgPSBbXHJcbiAgICAnaHR0cHM6Ly93d3cuZmFjZWJvb2suY29tL3JlZGVkb3IvJyxcclxuICAgICdodHRwczovL3d3dy5pbnN0YWdyYW0uY29tL3JlZGVkb3Jfb2ZpY2lhbC8nLFxyXG4gICAgJ2h0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9jb21wYW55L3JlZGVkb3Itc2FvbHVpeicsXHJcbiAgICAnaHR0cHM6Ly90d2l0dGVyLmNvbS9yZWRlZG9yJyxcclxuICBdO1xyXG4gIHB1YmxpYyB0d2l0dGVyVXNlciA9ICdAcmVkZWRvcic7XHJcblxyXG4gIHByaXZhdGUgY2Fub25pY2FsVGFnITogSFRNTExpbmtFbGVtZW50O1xyXG4gIHByaXZhdGUganNvblRhZyE6IEhUTUxTY3JpcHRFbGVtZW50O1xyXG4gIHByaXZhdGUganNvblRhZ0lkID0gJ3Nlb0pTT04nO1xyXG4gIHByaXZhdGUgYnJlYWRjcnVtYnNKc29uVGFnITogSFRNTFNjcmlwdEVsZW1lbnQ7XHJcbiAgcHJpdmF0ZSBicmVhZGNydW1ic0pzb25UYWdJZCA9ICdicmVhZGNydW1ic0pTT04nO1xyXG5cclxuICBwdWJsaWMgdW5pZGFkZTogYW55ID0gbnVsbDtcclxuICBwdWJsaWMgdW5pZGFkZU5hbWU6IHN0cmluZyA9ICcnO1xyXG4gIHB1YmxpYyB1bmlkYWRlUGF0aDogc3RyaW5nID0gJyc7XHJcbiAgcHVibGljIHVuaWRhZGVTbHVnOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgcHVibGljIGN1c3RvbUpzb25UeXBlOiBhbnlbXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgdGl0bGU6IFRpdGxlLFxyXG4gICAgcHJpdmF0ZSBtZXRhOiBNZXRhLFxyXG4gICAgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb24sXHJcbiAgICBASW5qZWN0KExJQl9DT05GSUcpIHByaXZhdGUgbGliQ29uZmlnOiBMaWJDb25maWcsXHJcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCxcclxuICApIHt9XHJcblxyXG4gIHB1YmxpYyBzZXRGdWxsU2VvKGRhdGE6IFNlb0RhdGEpIHtcclxuICAgIHRoaXMuc2V0VGl0bGUoZGF0YS50aXRsZS50ZXh0LCAhIWRhdGEudGl0bGUuc3ViKTtcclxuICAgIHRoaXMuc2V0RGVzY3JpcHRpb24oZGF0YS5kZXNjcmlwdGlvbik7XHJcbiAgICB0aGlzLnNldENhbm9uaWNhbEhyZWYoZGF0YS5jYW5vbmljYWwpO1xyXG4gICAgdGhpcy5zZXRQYWdlSnNvbigpO1xyXG4gICAgdGhpcy5zZXRTb2NpYWxUYWdzKGRhdGEuc29jaWFsVGFncyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWZpbmUgdGFnIGRlc2NyaXB0aW9uIGRhIHDDoWdpbmFcclxuICAgKiBAcGFyYW0gY29udGVudCBjb250ZcO6ZG8gZGEgZGVzY3Jpw6fDo28gPHN0cmluZz5cclxuICAgKi9cclxuICBwdWJsaWMgc2V0RGVzY3JpcHRpb24oY29udGVudDogc3RyaW5nKTogU2VvU2VydmljZSB7XHJcbiAgICBjb25zdCBkZXNjVGFnID0gdGhpcy5tZXRhLmdldFRhZyhcIm5hbWU9J2Rlc2NyaXB0aW9uJ1wiKTtcclxuICAgIGlmIChjb250ZW50KSB7XHJcbiAgICAgIGNvbnRlbnQgPSBoZS5kZWNvZGUoY29udGVudCk7XHJcbiAgICAgIGNvbnRlbnQgPSByZW1vdmVIdG1sVGFncyhjb250ZW50KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnRlbnQgPSAnJztcclxuICAgIH1cclxuICAgIHRoaXMuYWN0aXZlRGVzY3JpcHRpb24gPSBjb250ZW50O1xyXG4gICAgY29uc3QgdGFnQ29udGVudCA9IHsgbmFtZTogJ2Rlc2NyaXB0aW9uJywgY29udGVudCB9O1xyXG4gICAgaWYgKGRlc2NUYWcpIHtcclxuICAgICAgdGhpcy5tZXRhLnVwZGF0ZVRhZyh0YWdDb250ZW50KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubWV0YS5hZGRUYWcodGFnQ29udGVudCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmluZSBtZXRhIHRhZ3MgcGFyYSBhIHDDoWdpbmFcclxuICAgKiBAcGFyYW0gdGFnIG5vbWUgZGEgdGFnIG1ldGFcclxuICAgKiBAcGFyYW0gY29udGVudCBjb250ZcO6ZG8gZGEgdGFnIG1ldGFcclxuICAgKiBAcGFyYW0gdHlwZSB0aXBvIGRlIHRhZyBtZXRhXHJcbiAgICovXHJcbiAgcHVibGljIHNldE1ldGFUYWcodGFnOiBzdHJpbmcsIGNvbnRlbnQ6IHN0cmluZywgdHlwZSA9ICduYW1lJykge1xyXG4gICAgY29uc3QgbWV0YXRhZyA9IHRoaXMubWV0YS5nZXRUYWcoYCR7dHlwZX09JyR7dGFnfSdgKTtcclxuICAgIGNvbnRlbnQgPSBoZS5kZWNvZGUoY29udGVudCk7XHJcbiAgICBjb250ZW50ID0gcmVtb3ZlSHRtbFRhZ3MoY29udGVudCk7XHJcbiAgICBjb25zdCB0YWdDb250ZW50ID0ge1xyXG4gICAgICBbdHlwZV06IHRhZyxcclxuICAgICAgY29udGVudCxcclxuICAgIH07XHJcbiAgICBpZiAoIW1ldGF0YWcpIHtcclxuICAgICAgdGhpcy5tZXRhLmFkZFRhZyh0YWdDb250ZW50KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubWV0YS51cGRhdGVUYWcodGFnQ29udGVudCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZSBtZXRhIHRhZ3MgZGEgcMOhZ2luYVxyXG4gICAqIEBwYXJhbSB0YWcgbm9tZSBkYSB0YWcgbWV0YVxyXG4gICAqIEBwYXJhbSBjb250ZW50IGNvbnRlw7pkbyBkYSB0YWcgbWV0YVxyXG4gICAqIEBwYXJhbSBhdHRyIGF0cmlidXRvIGRhIHRhZyBtZXRhXHJcbiAgICogQHBhcmFtIHR5cGUgdGlwbyBkZSB0YWcgbWV0YVxyXG4gICAqL1xyXG4gIHB1YmxpYyByZW1vdmVUYWcodGFnOiBzdHJpbmcsIGNvbnRlbnQ6IHN0cmluZywgYXR0cjogc3RyaW5nLCB0eXBlID0gJ25hbWUnKSB7XHJcbiAgICBjb25zdCBtZXRhdGFnID0gdGhpcy5tZXRhLmdldFRhZyhgJHt0eXBlfT0nJHt0YWd9J2ApO1xyXG4gICAgaWYgKG1ldGF0YWcpIHtcclxuICAgICAgdGhpcy5tZXRhLnJlbW92ZVRhZyhgJHthdHRyfT0ke2NvbnRlbnR9YCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmluZSBtZXRhIHRhZ3MgcGFyYSBGYWNlYm9va1xyXG4gICAqIEBwYXJhbSB0aXRsZSB0w610dWxvIHBhcmEgbyBmYWNlYm9va1xyXG4gICAqIEBwYXJhbSBkZXNjcmlwdGlvbiBkZXNjcmnDp8OjbyBwYXJhIG8gZmFjZWJvb2tcclxuICAgKiBAcGFyYW0gdXJsIHVybCBwYXJhIGRlZmluacOnw6NvIGRvIGZhY2Vib29rXHJcbiAgICogQHBhcmFtIGltZyBpbWFnZW0gcGFyYSBkZWZpbmnDp8OjbyBubyBmYWNlYm9va1xyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXRNZXRhRmFjZWJvb2sodGl0bGU6IHN0cmluZywgZGVzY3JpcHRpb246IHN0cmluZywgdXJsOiBzdHJpbmcsIGltZzogc3RyaW5nIHwgbnVsbCA9IG51bGwpIHtcclxuICAgIHRoaXMuc2V0TWV0YVRhZygnb2c6dXJsJywgdXJsLCAncHJvcGVydHknKTtcclxuICAgIHRoaXMuc2V0TWV0YVRhZygnb2c6dGl0bGUnLCB0aXRsZSwgJ3Byb3BlcnR5Jyk7XHJcbiAgICB0aGlzLnNldE1ldGFUYWcoJ29nOmRlc2NyaXB0aW9uJywgZGVzY3JpcHRpb24sICdwcm9wZXJ0eScpO1xyXG4gICAgdGhpcy5zZXRNZXRhVGFnKCdvZzp0eXBlJywgJ3dlYnNpdGUnLCAncHJvcGVydHknKTtcclxuICAgIHRoaXMuc2V0TWV0YVRhZygnb2c6aW1hZ2UnLCBpbWcgPz8gJycsICdwcm9wZXJ0eScpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVmaW5lIG1ldGEgdGFncyBwYXJhIFR3aXR0ZXJcclxuICAgKiBAcGFyYW0gdGl0bGUgdMOtdHVsbyBwYXJhIG8gdHdpdHRlclxyXG4gICAqIEBwYXJhbSBkZXNjcmlwdGlvbiBkZXNjcmnDp8OjbyBwYXJhIG8gdHdpdHRlclxyXG4gICAqIEBwYXJhbSB1cmwgdXJsIHBhcmEgbyB0d2l0dGVyXHJcbiAgICogQHBhcmFtIGltZyBpbWFnZW0gcGFyYSBkZWZpbmnDp8OjbyBubyB0d2l0dGVyXHJcbiAgICovXHJcbiAgcHVibGljIHNldE1ldGFUd2l0dGVyKHRpdGxlOiBzdHJpbmcsIGRlc2NyaXB0aW9uOiBzdHJpbmcsIHVybDogc3RyaW5nLCBpbWc6IHN0cmluZyB8IG51bGwgPSBudWxsKSB7XHJcbiAgICB0aGlzLnNldE1ldGFUYWcoJ3R3aXR0ZXI6c2l0ZScsIHVybCwgJ25hbWUnKTtcclxuICAgIHRoaXMuc2V0TWV0YVRhZygndHdpdHRlcjp0aXRsZScsIHRpdGxlLCAnbmFtZScpO1xyXG4gICAgdGhpcy5zZXRNZXRhVGFnKCd0d2l0dGVyOmRlc2NyaXB0aW9uJywgZGVzY3JpcHRpb24sICduYW1lJyk7XHJcbiAgICB0aGlzLnNldE1ldGFUYWcoJ3R3aXR0ZXI6aW1hZ2UnLCBpbWcgPz8gJycsICduYW1lJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWZpbmUgdGFncyBkZSByZWRlcyBzb2NpYWlzIChUd2l0dGVyIGUgT3BlbiBHcmFwaClcclxuICAgKiBAcGFyYW0gcHJvcGVydGllc1xyXG4gICAqL1xyXG4gIHNldFNvY2lhbFRhZ3MocHJvcGVydGllcz86IFNvY2lhbE1ldGFQcm9wZXJ0aWVzKSB7XHJcbiAgICBjb25zdCBwYWdlUGF0aCA9IHRoaXMubG9jYXRpb24ucGF0aCgpO1xyXG4gICAgY29uc3Qgc2l0ZXVybCA9IGdldFNpdGVVcmwodGhpcy5saWJDb25maWc/LnNpdGVVcmwsIHRoaXMubGliQ29uZmlnPy5zaXRlU3VmaXgpO1xyXG4gICAgbGV0IGRlZmF1bHRQcm9wZXJ0aWVzOiBTb2NpYWxNZXRhUHJvcGVydGllcyA9IHtcclxuICAgICAgdHdpdHRlckNhcmQ6ICdzdW1tYXJ5JyxcclxuICAgICAgdHdpdHRlclNpdGU6IHRoaXMudHdpdHRlclVzZXIsXHJcbiAgICAgIHR5cGU6ICd3ZWJzaXRlJyxcclxuICAgICAgdGl0bGU6IHRoaXMuZ2V0VGl0bGUoKSxcclxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuYWN0aXZlRGVzY3JpcHRpb24gfHwgJycsXHJcbiAgICAgIHVybDogYCR7c2l0ZXVybH0ke3BhZ2VQYXRofWAsXHJcbiAgICAgIGltYWdlOiB0aGlzLmxpYkNvbmZpZz8ubG9nb1BhdGggPyBgJHtzaXRldXJsfSR7dGhpcy5saWJDb25maWcubG9nb1BhdGh9YCA6ICdodHRwczovL3d3dy5yZWRlZG9yc2FvbHVpei5jb20uYnIvYXNzZXRzL2ltZ3MvbG9nby1yZWRlZG9yLWJsdWUucG5nJyxcclxuICAgIH07XHJcbiAgICBpZiAocHJvcGVydGllcykge1xyXG4gICAgICBkZWZhdWx0UHJvcGVydGllcyA9IHsgLi4uZGVmYXVsdFByb3BlcnRpZXMsIC4uLnByb3BlcnRpZXMgfTtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0TWV0YVRhZygndHdpdHRlcjpjYXJkJywgZGVmYXVsdFByb3BlcnRpZXMudHdpdHRlckNhcmQgfHwgJycsICduYW1lJylcclxuICAgICAgLnNldE1ldGFUYWcoJ3R3aXR0ZXI6c2l0ZScsIGRlZmF1bHRQcm9wZXJ0aWVzLnR3aXR0ZXJTaXRlIHx8ICcnLCAnbmFtZScpXHJcbiAgICAgIC5zZXRNZXRhVGFnKCdvZzp0eXBlJywgZGVmYXVsdFByb3BlcnRpZXMudHlwZSB8fCAnJywgJ3Byb3BlcnR5JylcclxuICAgICAgLnNldE1ldGFUYWcoJ29nOnRpdGxlJywgZGVmYXVsdFByb3BlcnRpZXMudGl0bGUgfHwgJycsICdwcm9wZXJ0eScpXHJcbiAgICAgIC5zZXRNZXRhVGFnKCdvZzpkZXNjcmlwdGlvbicsIGRlZmF1bHRQcm9wZXJ0aWVzLmRlc2NyaXB0aW9uIHx8ICcnLCAncHJvcGVydHknKVxyXG4gICAgICAuc2V0TWV0YVRhZygnb2c6dXJsJywgZGVmYXVsdFByb3BlcnRpZXMudXJsIHx8ICcnLCAncHJvcGVydHknKVxyXG4gICAgICAuc2V0TWV0YVRhZygnb2c6aW1hZ2UnLCBkZWZhdWx0UHJvcGVydGllcy5pbWFnZSB8fCAnJywgJ3Byb3BlcnR5Jyk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWZpbmUgdMOtdHVsbyBkYSBww6FnaW5hXHJcbiAgICogQHBhcmFtIHRpdGxlIHTDrXR1bG8gZGEgcMOhZ2luYSA8c3RyaW5nPlxyXG4gICAqIEBwYXJhbSBzdWIgU2Ugw6kgc3Vic2l0ZSBhY3Jlc2NlbnRhIHVuaWRhZGUgPGJvb2xlYW4+XHJcbiAgICovXHJcbiAgcHVibGljIHNldFRpdGxlKHRpdGxlOiBzdHJpbmcsIHN1YiA9IGZhbHNlKSB7XHJcbiAgICBpZiAodGl0bGUgJiYgdGl0bGUgIT09ICcnKSB7XHJcbiAgICAgIHRpdGxlID0gaGUuZGVjb2RlKHRpdGxlKTtcclxuICAgICAgdGl0bGUgPSByZW1vdmVIdG1sVGFncyh0aXRsZSk7XHJcbiAgICAgIGlmIChzdWIpIHtcclxuICAgICAgICB0aXRsZSA9IGhlLmRlY29kZShgJHt0aXRsZX0ke3RoaXMuc2VwYXJhdG9yfSR7dGhpcy51bmlkYWRlTmFtZX1gKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnRpdGxlLnNldFRpdGxlKHRpdGxlKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgLyoqIE9idGVtIHTDrXR1bG8gYXR1YWwgZGEgcMOhZ2luYSAqL1xyXG4gIHB1YmxpYyBnZXRUaXRsZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMudGl0bGUuZ2V0VGl0bGUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXQ0MDRUaXRsZShjb21wb25lbnQ6IHN0cmluZyA9ICdEZWZhdWx0IENvbXBvbmVudCcpIHtcclxuICAgIGlmIChjb21wb25lbnQgJiYgY29tcG9uZW50ICE9PSAnJykge1xyXG4gICAgICBjb21wb25lbnQgPSBoZS5kZWNvZGUoY29tcG9uZW50KTtcclxuICAgICAgY29tcG9uZW50ID0gcmVtb3ZlSHRtbFRhZ3MoY29tcG9uZW50KTtcclxuICAgICAgaWYgKHRoaXMudW5pZGFkZU5hbWUpIHtcclxuICAgICAgICBjb21wb25lbnQgPSBoZS5kZWNvZGUoYCR7Y29tcG9uZW50fSR7dGhpcy5zZXBhcmF0b3J9JHt0aGlzLnVuaWRhZGVOYW1lfWApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCB0aXRsZSA9IGBFcnJvIDQwNCAtICR7Y29tcG9uZW50fSAtICR7dGhpcy5saWJDb25maWc/LnNpdGVOYW1lfSAtICR7dGhpcy5sb2NhdGlvbi5wYXRoKCl9YDtcclxuICAgIHRoaXMudGl0bGUuc2V0VGl0bGUodGl0bGUpO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0NTAwVGl0bGUoY29tcG9uZW50OiBzdHJpbmcgPSAnRGVmYXVsdCBDb21wb25lbnQnKSB7XHJcbiAgICBpZiAoY29tcG9uZW50ICYmIGNvbXBvbmVudCAhPT0gJycpIHtcclxuICAgICAgY29tcG9uZW50ID0gaGUuZGVjb2RlKGNvbXBvbmVudCk7XHJcbiAgICAgIGNvbXBvbmVudCA9IHJlbW92ZUh0bWxUYWdzKGNvbXBvbmVudCk7XHJcbiAgICAgIGlmICh0aGlzLnVuaWRhZGVOYW1lKSB7XHJcbiAgICAgICAgY29tcG9uZW50ID0gaGUuZGVjb2RlKGAke2NvbXBvbmVudH0ke3RoaXMuc2VwYXJhdG9yfSR7dGhpcy51bmlkYWRlTmFtZX1gKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgdGl0bGUgPSBgRXJybyA1MDAgLSAke2NvbXBvbmVudH0gLSAke3RoaXMubGliQ29uZmlnPy5zaXRlTmFtZX0gLSAke3RoaXMubG9jYXRpb24ucGF0aCgpfWA7XHJcbiAgICB0aGlzLnRpdGxlLnNldFRpdGxlKHRpdGxlKTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgLyoqIENyaWEgdGFnIHNjcmlwdCBwYXJhIEpTT04gZGUgYnJlYWRjcnVtYnMgKi9cclxuICBwcml2YXRlIGNyZWF0ZUJyZWFkY3J1bWJzSlNPTlRhZygpOiBIVE1MU2NyaXB0RWxlbWVudCB7XHJcbiAgICBjb25zdCB0YWc6IEhUTUxTY3JpcHRFbGVtZW50ID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcclxuICAgIHRhZy5pZCA9IHRoaXMuYnJlYWRjcnVtYnNKc29uVGFnSWQ7XHJcbiAgICB0YWcudHlwZSA9ICdhcHBsaWNhdGlvbi9sZCtqc29uJztcclxuICAgIHRoaXMuZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCh0YWcpO1xyXG4gICAgdGhpcy5icmVhZGNydW1ic0pzb25UYWcgPSB0YWc7XHJcbiAgICByZXR1cm4gdGFnO1xyXG4gIH1cclxuXHJcbiAgLyoqIFJldG9ybmEgdGFnIHBhcmEgc2NyaXB0IGpzb24gZGUgYnJlYWRjcnVtYnMgb3UgY3JpYSBzZSBuw6NvIGhvdXZlci4gKi9cclxuICBwcml2YXRlIGdldEJyZWFkY3J1bWJzSlNPTlRhZygpOiBIVE1MU2NyaXB0RWxlbWVudCB7XHJcbiAgICBjb25zdCBlbGVtZW50cyA9IHRoaXMuZG9jdW1lbnQuaGVhZC5jaGlsZHJlbjtcclxuICAgIGxldCBpOiBudW1iZXI7XHJcbiAgICBmb3IgKGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgZWxlbSA9IGVsZW1lbnRzW2ldIGFzIEhUTUxTY3JpcHRFbGVtZW50O1xyXG4gICAgICBpZiAoZWxlbSAmJiBlbGVtLmlkID09PSB0aGlzLmJyZWFkY3J1bWJzSnNvblRhZ0lkKSB7XHJcbiAgICAgICAgcmV0dXJuIGVsZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmNyZWF0ZUJyZWFkY3J1bWJzSlNPTlRhZygpO1xyXG4gIH1cclxuXHJcbiAgLyoqIERlZmluZSBvIEpTT04gZGUgYnJlYWRjcnVtYnMgZGEgcMOhZ2luYSAqL1xyXG4gIHB1YmxpYyBzZXRCcmVhZGNydW1ic0pzb24oaXRlbXM6IEJyZWFkY3J1bWJzSXRlbXNbXSkge1xyXG4gICAgdGhpcy5icmVhZGNydW1ic0pzb25UYWcgPSB0aGlzLmdldEJyZWFkY3J1bWJzSlNPTlRhZygpO1xyXG4gICAgY29uc3QganNvbiA9IHtcclxuICAgICAgJ0Bjb250ZXh0JzogJ2h0dHA6Ly9zY2hlbWEub3JnJyxcclxuICAgICAgJ0B0eXBlJzogJ0JyZWFkY3J1bWJMaXN0JyxcclxuICAgICAgaXRlbUxpc3RFbGVtZW50OiB0aGlzLmdldEpzb25CcmVhZGNydW1iSXRlbXMoaXRlbXMpLFxyXG4gICAgfTtcclxuICAgIHRoaXMuYnJlYWRjcnVtYnNKc29uVGFnLmlubmVySFRNTCA9IEpTT04uc3RyaW5naWZ5KGpzb24pO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKiogQ29udmVydGUgaXRlbnMgZG8gYnJlYWRjcnVtYiBlbSBpdGVucyBkbyBKU09OICovXHJcbiAgcHJpdmF0ZSBnZXRKc29uQnJlYWRjcnVtYkl0ZW1zKGl0ZW1zOiBCcmVhZGNydW1ic0l0ZW1zW10pOiBCcmVhZGNydW1ic0pzb25JdGVtW10ge1xyXG4gICAgY29uc3QganNvbkl0ZW1zID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgJ0B0eXBlJzogJ0xpc3RJdGVtJyxcclxuICAgICAgICBwb3NpdGlvbjogMSxcclxuICAgICAgICBpdGVtOiB7ICdAaWQnOiB0aGlzLmdldEJyZWFkY3J1bWJJdGVtVXJsKFsnLyddKSwgbmFtZTogaGUuZW5jb2RlKCdQw6FnaW5hIEluaWNpYWwnKSB9LFxyXG4gICAgICB9IGFzIEJyZWFkY3J1bWJzSnNvbkl0ZW0sXHJcbiAgICBdO1xyXG4gICAgaXRlbXMuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICBjb25zdCBqc29uSXRlbTogQnJlYWRjcnVtYnNKc29uSXRlbSA9IHtcclxuICAgICAgICAnQHR5cGUnOiAnTGlzdEl0ZW0nLFxyXG4gICAgICAgIHBvc2l0aW9uOiBpICsgMixcclxuICAgICAgICBpdGVtOiB7ICdAaWQnOiB0aGlzLmdldEJyZWFkY3J1bWJJdGVtVXJsKGl0ZW0/LnVybCB8fCBbXSksIG5hbWU6IGhlLmVuY29kZShpdGVtLmxhYmVsKSB9LFxyXG4gICAgICB9O1xyXG4gICAgICBqc29uSXRlbXMucHVzaChqc29uSXRlbSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBqc29uSXRlbXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNb250YSBhIHVybCBkbyBpdGVtIGRlIGJyZWFkY3J1bWIgcHJvdmVuaWVudGUgZG8gYXJyYXkgZGUgdXJsc1xyXG4gICAqIG91IGRvIGNhbWluaG8gZGEgcHLDs3ByaWEgcMOhZ2luYSwgY29uZm9ybWUgY2FzbyBkbyDDumx0aW1vIGl0ZW0uXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRCcmVhZGNydW1iSXRlbVVybCh1cmw6IHN0cmluZ1tdKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHNpdGV1cmwgPSBnZXRTaXRlVXJsKHRoaXMubGliQ29uZmlnPy5zaXRlVXJsLCB0aGlzLmxpYkNvbmZpZz8uc2l0ZVN1Zml4KTtcclxuICAgIGlmICghdXJsIHx8IHVybC5sZW5ndGggPD0gMCkge1xyXG4gICAgICBjb25zdCBwYWdlUGF0aCA9IHRoaXMubG9jYXRpb24ucGF0aCgpO1xyXG4gICAgICByZXR1cm4gYCR7c2l0ZXVybH0ke3BhZ2VQYXRofWA7XHJcbiAgICB9XHJcbiAgICB1cmwgPSB1cmwuZmlsdGVyKCh1KSA9PiB1ICE9PSB0aGlzLnVuaWRhZGVQYXRoKTtcclxuICAgIGNvbnN0IHVuaWRhZGVQYXRoID0gdGhpcy5nZXRVbmlkYWRlUGF0aCgpO1xyXG4gICAgY29uc3QgZnVsbFBhdGggPSBgJHt1bmlkYWRlUGF0aH0vJHt1cmwuam9pbignLycpLnJlcGxhY2UoL15cXC8/LywgJycpfWA7XHJcbiAgICByZXR1cm4gYCR7c2l0ZXVybH0ke2Z1bGxQYXRofWAucmVwbGFjZSgvXFwvJC8sICcnKTtcclxuICB9XHJcblxyXG4gIC8qKiBDcmlhIHRhZyBzY3JpcHQgcGFyYSBvIEpTT04gZGUgU0VPICovXHJcbiAgcHJpdmF0ZSBjcmVhdGVKU09OVGFnKCk6IEhUTUxTY3JpcHRFbGVtZW50IHtcclxuICAgIGNvbnN0IHRhZzogSFRNTFNjcmlwdEVsZW1lbnQgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xyXG4gICAgdGFnLmlkID0gdGhpcy5qc29uVGFnSWQ7XHJcbiAgICB0YWcudHlwZSA9ICdhcHBsaWNhdGlvbi9sZCtqc29uJztcclxuICAgIHRoaXMuZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCh0YWcpO1xyXG4gICAgdGhpcy5qc29uVGFnID0gdGFnO1xyXG4gICAgcmV0dXJuIHRhZztcclxuICB9XHJcblxyXG4gIC8qKiBSZXRvcm5hIHRhZyBwYXJhIHNjcmlwdCBqc29uIGRlIGJyZWFkY3J1bWJzIG91IGNyaWEgc2UgbsOjbyBob3V2ZXIuICovXHJcbiAgcHJpdmF0ZSBnZXRKU09OVGFnKCk6IEhUTUxTY3JpcHRFbGVtZW50IHtcclxuICAgIGNvbnN0IGVsZW1lbnRzID0gdGhpcy5kb2N1bWVudC5oZWFkLmNoaWxkcmVuO1xyXG4gICAgbGV0IGk6IG51bWJlcjtcclxuICAgIGZvciAoaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBlbGVtID0gZWxlbWVudHNbaV0gYXMgSFRNTFNjcmlwdEVsZW1lbnQ7XHJcbiAgICAgIGlmIChlbGVtICYmIGVsZW0uaWQgPT09IHRoaXMuanNvblRhZ0lkKSB7XHJcbiAgICAgICAgcmV0dXJuIGVsZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmNyZWF0ZUpTT05UYWcoKTtcclxuICB9XHJcblxyXG4gIC8qKiBEZWZpbmUgSlNPTiBwYXJhIFNFTyBzb21lbnRlIHF1YW5kbyBubyBzZXJ2aWRvciAqL1xyXG4gIHB1YmxpYyBzZXRQYWdlSnNvbigpIHtcclxuICAgIHRoaXMuanNvblRhZyA9IHRoaXMuZ2V0SlNPTlRhZygpO1xyXG5cclxuICAgIGNvbnN0IGJhc2VHcmFwaCA9IFt0aGlzLmdldE9yZ0pzb24oKSwgdGhpcy5nZXRXZWJzaXRlSnNvbigpLCB0aGlzLmdldFdlYnBhZ2VKc29uKCldO1xyXG5cclxuICAgIGNvbnN0IGV4dGVuZGVkR3JhcGggPSB0aGlzLmN1c3RvbUpzb25UeXBlLmxlbmd0aCA/IFsuLi5iYXNlR3JhcGgsIC4uLnRoaXMuY3VzdG9tSnNvblR5cGVdIDogYmFzZUdyYXBoO1xyXG5cclxuICAgIHRoaXMuY3VzdG9tSnNvblR5cGUgPSBbXTtcclxuXHJcbiAgICBjb25zdCBqc29uID0ge1xyXG4gICAgICAnQGNvbnRleHQnOiAnaHR0cDovL3NjaGVtYS5vcmcnLFxyXG4gICAgICAnQGdyYXBoJzogZXh0ZW5kZWRHcmFwaCxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5qc29uVGFnLmlubmVySFRNTCA9IEpTT04uc3RyaW5naWZ5KGpzb24pO1xyXG5cclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgLyoqIE9idGVtIEpTT04gZGEgT3JnYW5pemHDp8OjbyAqL1xyXG4gIHByaXZhdGUgZ2V0T3JnSnNvbigpIHtcclxuICAgIGNvbnN0IHNpdGV1cmwgPSBnZXRTaXRlVXJsKHRoaXMubGliQ29uZmlnPy5zaXRlVXJsLCB0aGlzLmxpYkNvbmZpZz8uc2l0ZVN1Zml4KTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICdAdHlwZSc6ICdNZWRpY2FsT3JnYW5pemF0aW9uJyxcclxuICAgICAgJ0BpZCc6IGAke3NpdGV1cmx9I21lZGljYWxvcmdhbml6YXRpb25gLFxyXG4gICAgICBuYW1lOiB0aGlzLmRlZmF1bHRUaXRsZSxcclxuICAgICAga2V5d29yZHM6IHRoaXMubGliQ29uZmlnPy5rZXl3b3JkcyxcclxuICAgICAgdXJsOiBgJHtzaXRldXJsfWAsXHJcbiAgICAgIHNhbWVBczogdGhpcy5zYW1lQXMsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqIE9idGVtIEpTT04gZG8gV2Vic2l0ZSAocG9ydGFsLCB1bmlkYWRlcywgZXRjKSAqL1xyXG4gIHByaXZhdGUgZ2V0V2Vic2l0ZUpzb24oKSB7XHJcbiAgICBjb25zdCB1bmlkYWRlUGF0aCA9IHRoaXMuZ2V0VW5pZGFkZVBhdGgoKTtcclxuICAgIGNvbnN0IHNpdGV1cmwgPSBnZXRTaXRlVXJsKHRoaXMubGliQ29uZmlnPy5zaXRlVXJsLCB0aGlzLmxpYkNvbmZpZz8uc2l0ZVN1Zml4KTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICdAdHlwZSc6ICdXZWJTaXRlJyxcclxuICAgICAgJ0BpZCc6IGAke3NpdGV1cmx9JHt1bmlkYWRlUGF0aH0jd2Vic2l0ZWAsXHJcbiAgICAgIHVybDogYCR7c2l0ZXVybH0ke3VuaWRhZGVQYXRofWAsXHJcbiAgICAgIG5hbWU6IHRoaXMudW5pZGFkZU5hbWUsXHJcbiAgICAgIGtleXdvcmRzOiB0aGlzLmxpYkNvbmZpZz8ua2V5d29yZHMsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqIE9idGVtIEpzb24gZGEgcMOhZ2luYSAqL1xyXG4gIHByaXZhdGUgZ2V0V2VicGFnZUpzb24oKSB7XHJcbiAgICBjb25zdCB1bmlkYWRlUGF0aCA9IHRoaXMuZ2V0VW5pZGFkZVBhdGgoKTtcclxuICAgIGNvbnN0IHNpdGVVUkwgPSBnZXRTaXRlVXJsKHRoaXMubGliQ29uZmlnPy5zaXRlVXJsLCB0aGlzLmxpYkNvbmZpZz8uc2l0ZVN1Zml4KTtcclxuICAgIGNvbnN0IHBhZ2VQYXRoID0gYCR7c2l0ZVVSTH0ke3RoaXMubG9jYXRpb24ucGF0aCgpfWA7XHJcbiAgICBjb25zdCBkZXNjID0gdGhpcy5hY3RpdmVEZXNjcmlwdGlvbiA/IHRoaXMuYWN0aXZlRGVzY3JpcHRpb24gOiAnJztcclxuICAgIHJldHVybiB7XHJcbiAgICAgICdAdHlwZSc6ICdXZWJQYWdlJyxcclxuICAgICAgJ0BpZCc6IGAke3BhZ2VQYXRofSN3ZWJwYWdlYCxcclxuICAgICAgdXJsOiBwYWdlUGF0aCxcclxuICAgICAgaW5MYW5ndWFnZTogJ3B0LUJSJyxcclxuICAgICAgbmFtZTogdGhpcy5nZXRUaXRsZSgpLFxyXG4gICAgICBpc1BhcnRPZjogeyAnQGlkJzogYCR7c2l0ZVVSTH0ke3VuaWRhZGVQYXRofSN3ZWJzaXRlYCB9LFxyXG4gICAgICBhYm91dDogeyAnQGlkJzogYCR7c2l0ZVVSTH0jbWVkaWNhbG9yZ2FuaXphdGlvbmAgfSxcclxuICAgICAgZGVzY3JpcHRpb246IGRlc2MsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRVbmlkYWRlUGF0aCgpIHtcclxuICAgIGxldCB1bmlkYWRlUGF0aCA9ICcnO1xyXG4gICAgaWYgKHRoaXMudW5pZGFkZSAmJiB0aGlzLnVuaWRhZGVQYXRoKSB7XHJcbiAgICAgIHVuaWRhZGVQYXRoID0gdGhpcy51bmlkYWRlPy5wYXRoID09PSAnLycgPyAnJyA6IHRoaXMudW5pZGFkZVBhdGg/LnN1YnN0cmluZygwLCB0aGlzLnVuaWRhZGVQYXRoPy5sZW5ndGggLSAxKTtcclxuICAgIH1cclxuICAgIHJldHVybiB1bmlkYWRlUGF0aDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9idMOpbSBhIFVSTCBjYW7DtG5pY2EgZGEgcMOhZ2luYS5cclxuICAgKiBAcmV0dXJucyBBIFVSTCBjYW7DtG5pY2EgZGEgcMOhZ2luYS5cclxuICAgKi9cclxuICBwdWJsaWMgZ2V0Q2Fub25pY2FsSHJlZigpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF0aGlzLmNhbm9uaWNhbFRhZykge1xyXG4gICAgICB0aGlzLmNhbm9uaWNhbFRhZyA9IHRoaXMuZ2V0Q2Fub25pY2FsVGFnKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5jYW5vbmljYWxUYWcuaHJlZjtcclxuICB9XHJcblxyXG4gIC8qKiBDcmlhIHRhZyBwYXJhIGxpbmtzIGNhbm9uaWNhbHMgbm8gaGVhZCAqL1xyXG4gIHByaXZhdGUgY3JlYXRlQ2Fub25pY2FsVGFnKCk6IEhUTUxMaW5rRWxlbWVudCB7XHJcbiAgICBjb25zdCB0YWcgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKTtcclxuICAgIHRhZy5zZXRBdHRyaWJ1dGUoJ3JlbCcsICdjYW5vbmljYWwnKTtcclxuICAgIHRoaXMuZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCh0YWcpO1xyXG4gICAgdGFnLnNldEF0dHJpYnV0ZSgnaHJlZicsIHRoaXMuZG9jdW1lbnQuVVJMKTtcclxuICAgIHRoaXMuY2Fub25pY2FsVGFnID0gdGFnO1xyXG4gICAgcmV0dXJuIHRhZztcclxuICB9XHJcblxyXG4gIC8qKiBSZXRvcm5hIHRhZyBwYXJhIGxpbmsgY2Fub25pY2FsIGV4aXN0ZSBvdSBjcmlhIHNlIG7Do28gaG91dmVyLiAqL1xyXG4gIHByaXZhdGUgZ2V0Q2Fub25pY2FsVGFnKCk6IEhUTUxMaW5rRWxlbWVudCB7XHJcbiAgICBjb25zdCBlbGVtZW50cyA9IHRoaXMuZG9jdW1lbnQuaGVhZC5jaGlsZHJlbjtcclxuICAgIGxldCBpOiBudW1iZXI7XHJcbiAgICBmb3IgKGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgZWxlbSA9IGVsZW1lbnRzW2ldIGFzIEhUTUxMaW5rRWxlbWVudDtcclxuICAgICAgaWYgKGVsZW0gJiYgZWxlbS50YWdOYW1lID09PSAnTElOSycgJiYgZWxlbS5yZWwgPT09ICdjYW5vbmljYWwnKSB7XHJcbiAgICAgICAgcmV0dXJuIGVsZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmNyZWF0ZUNhbm9uaWNhbFRhZygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVmaW5lIGxpbmsgY2Fub25pY2FsIGRhIHDDoWdpbmFcclxuICAgKiBAcGFyYW0gdXJsIHVybCBjYW5vbmljYWxcclxuICAgKi9cclxuICBwdWJsaWMgc2V0Q2Fub25pY2FsSHJlZih1cmw/OiBzdHJpbmcpIHtcclxuICAgIGlmICghdGhpcy5jYW5vbmljYWxUYWcpIHtcclxuICAgICAgdGhpcy5jYW5vbmljYWxUYWcgPSB0aGlzLmdldENhbm9uaWNhbFRhZygpO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBwYXRoID0gdGhpcy5kb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZTtcclxuXHJcbiAgICBpZiAodGhpcy5saWJDb25maWc/LnNpdGVTdWZpeCAmJiBwYXRoLmluY2x1ZGVzKHRoaXMubGliQ29uZmlnPy5zaXRlU3VmaXgpKSB7XHJcbiAgICAgIHBhdGggPSBwYXRoLnJlcGxhY2UodGhpcy5saWJDb25maWc/LnNpdGVTdWZpeCwgJycpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghcGF0aC5zdGFydHNXaXRoKCcvJykpIHtcclxuICAgICAgcGF0aCA9IGAvJHtwYXRofWA7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY2Fub25pY2FsVXJsID0gdXJsICYmIHRoaXMuaXNDdXN0b21DYW5vbmljYWwodXJsKSA/IHVybCA6IGAke2dldFNpdGVVcmwodGhpcy5saWJDb25maWc/LnNpdGVVcmwsIHRoaXMubGliQ29uZmlnPy5zaXRlU3VmaXgpfSR7cGF0aH1gO1xyXG5cclxuICAgIHRoaXMuY2Fub25pY2FsVGFnLnNldEF0dHJpYnV0ZSgnaHJlZicsIGNhbm9uaWNhbFVybCk7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFZlcmlmaWNhIHNlIGEgVVJMIGZvcm5lY2lkYSDDqSB1bSBsaW5rIGNhbm9uaWNhbCBwZXJzb25hbGl6YWRvXHJcbiAgICogQHBhcmFtIHVybCBVUkwgZm9ybmVjaWRhXHJcbiAgICovXHJcbiAgcHVibGljIGlzQ3VzdG9tQ2Fub25pY2FsKHVybDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBzaXRldXJsID0gZ2V0U2l0ZVVybCh0aGlzLmxpYkNvbmZpZz8uc2l0ZVVybCwgdGhpcy5saWJDb25maWc/LnNpdGVTdWZpeCk7XHJcbiAgICByZXR1cm4gdXJsLnN0YXJ0c1dpdGgoc2l0ZXVybCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPYnTDqW0gdW1hIHVybCB2w6FsaWRhIG5hIGFwbGljYcOnw6NvIHByb3ZlbmllbnRlIGRlIHVtYSBVUkwgZ2VyYWRhXHJcbiAgICogcGVsbyBwbHVnaW4gWW9hc3QgcGFyYSBjYW5vbmljYWwgYXV0b23DoXRpY28uXHJcbiAgICogRXguOiBodHRwczovL3dwLnJlZGVkb3JzYW9sdWl6LmNvbS5ici9icmFzaWwvZXNwZWNpYWxpZGFkZXMvY2FyZGlvbG9naWEvXHJcbiAgICogQHBhcmFtIHVybEZyb21XcEFwaSBVUkwgY2Fub25pY2EgZ2VyYWRhIHBlbG8gWW9hc3QgUGx1Z2luLlxyXG4gICAqL1xyXG4gIHRvTG9jYWxDYW5vbmljYWwodXJsRnJvbVdwQXBpOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgYXBpVXJsID0gdGhpcy5saWJDb25maWc/LndwVXJsID8/ICcnO1xyXG4gICAgY29uc3Qgc2l0ZXVybCA9IGdldFNpdGVVcmwodGhpcy5saWJDb25maWc/LnNpdGVVcmwsIHRoaXMubGliQ29uZmlnPy5zaXRlU3VmaXgpO1xyXG4gICAgY29uc3QgdW5pZGFkZVNsdWcgPSB0aGlzLnVuaWRhZGVTbHVnO1xyXG4gICAgbGV0IGNvbnZlcnRlZCA9IHVybEZyb21XcEFwaS5yZXBsYWNlKGFwaVVybCwgc2l0ZXVybCk7XHJcbiAgICBpZiAodW5pZGFkZVNsdWcgIT09ICcvJyAmJiBjb252ZXJ0ZWQuaW5jbHVkZXMoYC8ke3VuaWRhZGVTbHVnfS9gKSkge1xyXG4gICAgICBjb252ZXJ0ZWQgPSBjb252ZXJ0ZWQucmVwbGFjZShgLyR7dW5pZGFkZVNsdWd9L2AsIGAke3RoaXMudW5pZGFkZVBhdGh9YCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29udmVydGVkO1xyXG4gIH1cclxuXHJcbiAgZ2V0UG9zdENvbnRlbnQocG9zdDogV3BQb3N0KTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGNvbnRlbnQgPSBwb3N0Py5hY2Y/LlsncmRzbF9wb3N0X2NvbnRlbnQnXSA/IHBvc3Q/LmFjZj8ucmRzbF9wb3N0X2NvbnRlbnQ/LmZpbmQoKGNvbnRlbnQ6IGFueSkgPT4gY29udGVudC5hY2ZfZmNfbGF5b3V0ID09PSAndGV4dF9odG1sJykgOiBudWxsO1xyXG4gICAgcmV0dXJuIGNvbnRlbnQ/LmNvbnRlbnQgfHwgcG9zdC5jb250ZW50LnJlbmRlcmVkIHx8ICcnO1xyXG4gIH1cclxuXHJcbiAgYWRkQXJ0aWNsZVNjcmlwdChwb3N0OiBXcFBvc3QsIHNjcmlwdE5hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgcG9zdENvbnRlbnQgPSB0aGlzLmdldFBvc3RDb250ZW50KHBvc3QpO1xyXG4gICAgY29uc3QgcG9zdEhlYWRlckltYWdlID0gcG9zdD8uYWNmPy5bJ3Jkc2xfcG9zdF9oZWFkZXJfaW1nJ11cclxuICAgICAgPyB7XHJcbiAgICAgICAgICB1cmw6IHBvc3Q/LmFjZj8uWydyZHNsX3Bvc3RfaGVhZGVyX2ltZyddLnVybCxcclxuICAgICAgICAgIHdpZHRoOiBwb3N0Py5hY2Y/LlsncmRzbF9wb3N0X2hlYWRlcl9pbWcnXS53aWR0aCxcclxuICAgICAgICAgIGhlaWdodDogcG9zdD8uYWNmPy5bJ3Jkc2xfcG9zdF9oZWFkZXJfaW1nJ10uaGVpZ2h0LFxyXG4gICAgICAgIH1cclxuICAgICAgOiBudWxsO1xyXG5cclxuICAgIGNvbnN0IHN0cnVjdHVyZWREYXRhID0ge1xyXG4gICAgICAnQGNvbnRleHQnOiAnaHR0cHM6Ly9zY2hlbWEub3JnJyxcclxuICAgICAgJ0B0eXBlJzogJ0FydGljbGUnLFxyXG4gICAgICBtYWluRW50aXR5T2ZQYWdlOiBgJHtnZXRTaXRlVXJsKHRoaXMubGliQ29uZmlnPy5zaXRlVXJsLCB0aGlzLmxpYkNvbmZpZz8uc2l0ZVN1Zml4KX0ke3RoaXMubG9jYXRpb24ucGF0aCgpfWAsXHJcbiAgICAgIGhlYWRsaW5lOiBwb3N0LnRpdGxlPy5yZW5kZXJlZCxcclxuICAgICAgZGF0ZVB1Ymxpc2hlZDogcG9zdC5kYXRlX2dtdCxcclxuICAgICAgcHVibGlzaGVyOiB7XHJcbiAgICAgICAgJ0B0eXBlJzogJ01lZGljYWxPcmdhbml6YXRpb24nLFxyXG4gICAgICAgIG5hbWU6ICdSZWRlIETigJlPcicsXHJcbiAgICAgIH0sXHJcbiAgICAgIGRlc2NyaXB0aW9uOiBwb3N0LnRpdGxlPy5yZW5kZXJlZCxcclxuICAgICAgYXJ0aWNsZUJvZHk6IHJlbW92ZUh0bWxUYWdzKGhlLmRlY29kZShwb3N0Q29udGVudCkpLFxyXG4gICAgICBkYXRlTW9kaWZpZWQ6IHBvc3QubW9kaWZpZWRfZ210LFxyXG4gICAgICBpbWFnZToge1xyXG4gICAgICAgICdAdHlwZSc6ICdJbWFnZU9iamVjdCcsXHJcbiAgICAgICAgdXJsOiBwb3N0SGVhZGVySW1hZ2U/LnVybCB8fCBwb3N0LmZlYXR1cmVkX21lZGlhX3BhdGggfHwgJycsXHJcbiAgICAgICAgaGVpZ2h0OiBwb3N0SGVhZGVySW1hZ2U/LmhlaWdodCB8fCAnJyxcclxuICAgICAgICB3aWR0aDogcG9zdEhlYWRlckltYWdlPy53aWR0aCB8fCAnJyxcclxuICAgICAgfSxcclxuICAgICAgYXV0aG9yOiB7XHJcbiAgICAgICAgJ0B0eXBlJzogJ01lZGljYWxPcmdhbml6YXRpb24nLFxyXG4gICAgICAgIG5hbWU6ICdSZWRlIETigJlPcicsXHJcbiAgICAgIH0sXHJcbiAgICAgIHdvcmRjb3VudDogcG9zdENvbnRlbnQuc3BsaXQoJyAnKS5sZW5ndGgsXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHNjcmlwdCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XHJcblxyXG4gICAgc2NyaXB0LnR5cGUgPSAnYXBwbGljYXRpb24vbGQranNvbic7XHJcbiAgICBzY3JpcHQuaWQgPSBzY3JpcHROYW1lO1xyXG4gICAgc2NyaXB0LmlubmVySFRNTCA9IEpTT04uc3RyaW5naWZ5KHN0cnVjdHVyZWREYXRhKTtcclxuXHJcbiAgICB0aGlzLmRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUFydGljbGVTY3JpcHQoc2NyaXB0TmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBzY3JpcHQgPSB0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNjcmlwdE5hbWUpO1xyXG4gICAgc2NyaXB0Py5yZW1vdmUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRVbmlkYWRlKHsgdW5pZGFkZSA9IG51bGwsIHVuaWRhZGVOYW1lID0gJycsIHVuaWRhZGVQYXRoID0gJycsIHVuaWRhZGVTbHVnID0gJycgfTogU2VvVW5pZGFkZSkge1xyXG4gICAgdGhpcy51bmlkYWRlID0gdW5pZGFkZTtcclxuICAgIHRoaXMudW5pZGFkZU5hbWUgPSB1bmlkYWRlTmFtZTtcclxuICAgIHRoaXMudW5pZGFkZVBhdGggPSB1bmlkYWRlUGF0aDtcclxuICAgIHRoaXMudW5pZGFkZVNsdWcgPSB1bmlkYWRlU2x1ZztcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1724,7 +1724,7 @@ class SeoService {
|
|
|
1724
1724
|
headline: post.title?.rendered,
|
|
1725
1725
|
datePublished: post.date_gmt,
|
|
1726
1726
|
publisher: {
|
|
1727
|
-
'@type': '
|
|
1727
|
+
'@type': 'MedicalOrganization',
|
|
1728
1728
|
name: 'Rede D’Or',
|
|
1729
1729
|
},
|
|
1730
1730
|
description: post.title?.rendered,
|
|
@@ -1737,7 +1737,7 @@ class SeoService {
|
|
|
1737
1737
|
width: postHeaderImage?.width || '',
|
|
1738
1738
|
},
|
|
1739
1739
|
author: {
|
|
1740
|
-
'@type': '
|
|
1740
|
+
'@type': 'MedicalOrganization',
|
|
1741
1741
|
name: 'Rede D’Or',
|
|
1742
1742
|
},
|
|
1743
1743
|
wordcount: postContent.split(' ').length,
|