@eo-sdk/client 7.16.10 → 7.16.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/eo-framework-core/api/plugins.service.d.ts +3 -2
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js +9 -6
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js.map +1 -1
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js +2 -2
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js.map +1 -1
- package/bundles/eo-sdk-client.umd.js +15 -8
- package/bundles/eo-sdk-client.umd.js.map +1 -1
- package/bundles/eo-sdk-client.umd.min.js +1 -1
- package/bundles/eo-sdk-client.umd.min.js.map +1 -1
- package/eo-sdk-client.metadata.json +1 -1
- package/esm2015/app/eo-client/about-state/about-state.component.js +3 -3
- package/esm2015/app/eo-client/prepare-state/prepare-state/prepare-state.component.js +2 -2
- package/esm2015/app/eo-framework/form-elements/string/string.component.js +2 -2
- package/esm2015/app/eo-framework/object-form/object-form/object-form.component.js +2 -2
- package/esm2015/app/eo-framework/process/history/process-history.component.js +3 -3
- package/esm2015/app/eo-framework-core/api/plugins.service.js +10 -3
- package/esm2015/projects/eo-sdk/core/lib/config/translate-json-loader.js +5 -2
- package/esm2015/projects/eo-sdk/core/lib/model/eo-user.model.js +2 -2
- package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js +5 -2
- package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js.map +1 -1
- package/fesm2015/eo-sdk-client.js +16 -9
- package/fesm2015/eo-sdk-client.js.map +1 -1
- package/package.json +2 -2
- package/projects/eo-sdk/core/eo-sdk-client-projects-eo-sdk-core.metadata.json +1 -1
- package/projects/eo-sdk/core/package.json +1 -1
|
@@ -572,7 +572,7 @@ export class ObjectFormComponent extends UnsubscribeOnDestroy {
|
|
|
572
572
|
}
|
|
573
573
|
else {
|
|
574
574
|
if (element.type === 'DATETIME' && data[element.name]) {
|
|
575
|
-
value = new Date(`${data[element.name]}T00:00:00`);
|
|
575
|
+
value = new Date(`${data[element.name]}${element.withtime ? '' : 'T00:00:00'}`);
|
|
576
576
|
}
|
|
577
577
|
else {
|
|
578
578
|
value = data[element.name];
|
|
@@ -624,4 +624,4 @@ ObjectFormComponent.propDecorators = {
|
|
|
624
624
|
onFormReady: [{ type: Output }],
|
|
625
625
|
options: [{ type: Input, args: ['formOptions',] }]
|
|
626
626
|
};
|
|
627
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxFQUFFLElBQUksWUFBWSxFQUE0QixRQUFRLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDNUUsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFFWixVQUFVLEVBRVYsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFjLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ3ZFLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLGtEQUFrRCxDQUFDO0FBQzFGLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBQ3hGLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBR3RFLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQ2xGLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUM5RSxPQUFPLEVBQUMsTUFBTSxFQUFnQixhQUFhLEVBQWMsYUFBYSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQzVGLE9BQU8sRUFBQyxZQUFZLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdC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QW9FO0lBQ3BFLDBFQUEwRTtJQUNsRSxjQUFjO1FBQ3BCLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUU7WUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsMEJBQTBCLENBQUMsQ0FBQztZQUNqRyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQzs7O1lBdHFCRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtnQkFDMUIsOGRBQTJDO2dCQUUzQyxnRkFBZ0Y7Z0JBQ2hGLG1FQUFtRTtnQkFDbkUsU0FBUyxFQUFFLENBQUMsdUJBQXVCLENBQUM7O2FBRXJDOzs7WUFkTyxNQUFNO1lBaEJaLFVBQVU7WUFnQmtCLGFBQWE7WUFBYyxhQUFhO1lBTjlELHVCQUF1QjtZQUN2Qix1QkFBdUI7WUFJdkIsY0FBYztZQUdkLGdCQUFnQjtZQWhCdEIsaUJBQWlCOzs7K0JBK0JoQixLQUFLOzRCQUVMLE1BQU07MEJBRU4sTUFBTTtzQkFxQk4sS0FBSyxTQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge29mIGFzIG9ic2VydmFibGVPZiwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBmb3JrSm9pbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgT25EZXN0cm95LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0Zvcm1WYWxpZGF0aW9ufSBmcm9tICcuL2Zvcm0tdmFsaWRhdGlvbi9mb3JtLXZhbGlkYXRpb24nO1xyXG5pbXBvcnQge09iamVjdEZvcm1Hcm91cH0gZnJvbSAnLi9vYmplY3QtZm9ybS1ncm91cCc7XHJcbmltcG9ydCB7VmFsaWRhdG9yRm4sIFZhbGlkYXRvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtPYmplY3RGb3JtQ29udHJvbH0gZnJvbSAnLi9vYmplY3QtZm9ybS1jb250cm9sJztcclxuaW1wb3J0IHtPYmplY3RGb3JtQ29udHJvbFdyYXBwZXJ9IGZyb20gJy4vb2JqZWN0LWZvcm0tY29udHJvbC13cmFwcGVyJztcclxuaW1wb3J0IHtPYmplY3RGb3JtU2NyaXB0aW5nU2NvcGV9IGZyb20gJy4vb2JqZWN0LWZvcm0tc2NyaXB0L29iamVjdC1mb3JtLXNjcmlwdGluZy1zY29wZSc7XHJcbmltcG9ydCB7T2JqZWN0Rm9ybVNjcmlwdFNlcnZpY2V9IGZyb20gJy4vb2JqZWN0LWZvcm0tc2NyaXB0L29iamVjdC1mb3JtLXNjcmlwdC5zZXJ2aWNlJztcclxuaW1wb3J0IHtPYmplY3RGb3JtSGVscGVyU2VydmljZX0gZnJvbSAnLi4vb2JqZWN0LWZvcm0taGVscGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQge09iamVjdEZvcm1PcHRpb25zfSBmcm9tICcuLi9vYmplY3QtZm9ybS1vcHRpb25zLmludGVyZmFjZSc7XHJcbmltcG9ydCB7Rm9ybVN0YXR1c0NoYW5nZWRFdmVudH0gZnJvbSAnLi4vZm9ybS1zdGF0dXMtY2hhbmdlZC1ldmVudC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge1Vuc3Vic2NyaWJlT25EZXN0cm95fSBmcm9tICcuLi8uLi91dGlsL3Vuc3Vic2NyaWJlL3Vuc3Vic2NyaWJlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7UGx1Z2luc1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL2FwaS9wbHVnaW5zLnNlcnZpY2UnO1xyXG5pbXBvcnQge0xvZ2dlciwgU2VhcmNoRmlsdGVyLCBTeXN0ZW1TZXJ2aWNlLCBSYW5nZVZhbHVlLCBTZWFyY2hTZXJ2aWNlfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xyXG5pbXBvcnQge2RlYm91bmNlVGltZSwgdGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7UmVmZXJlbmNlU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvcmVmZXJlbmNlcy9yZWZlcmVuY2Uuc2VydmljZSc7XHJcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VvLW9iamVjdC1mb3JtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vb2JqZWN0LWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL29iamVjdC1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgLy8gZGVmaW5lICdjaGlsZCBvbmx5JyBzZXJ2aWNlcyBmb3IgdGhlIGZvcm0gd2l0aG91dCBzZXR0aW5nIGl0IHVwIG9uIHRoZSBtb2R1bGVcclxuICAvLyB3aGljaCB3b3VsZCBjYXVzZSB0aGVtIHRvIGJlIHByb3BhZ2F0ZWQgdG8gdGhlIHdob2xlIGFwcGxpY2F0aW9uXHJcbiAgcHJvdmlkZXJzOiBbT2JqZWN0Rm9ybVNjcmlwdFNlcnZpY2VdLFxyXG4gIC8vZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgT2JqZWN0Rm9ybUNvbXBvbmVudCBleHRlbmRzIFVuc3Vic2NyaWJlT25EZXN0cm95IGltcGxlbWVudHMgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgQElucHV0KCkgaXNJbm5lclRhYmxlRm9ybTogYm9vbGVhbjtcclxuICAvLyB0cmlnZ2VyZWQgd2hlbiB0aGUgZm9ybXMgc3RhdGUgaGFzIGJlZW4gY2hhbmdlZFxyXG4gIEBPdXRwdXQoKSBzdGF0dXNDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtU3RhdHVzQ2hhbmdlZEV2ZW50PigpO1xyXG4gIC8vIGhhbmRsZXIgdG8gYmUgZXhlY3V0ZWQgYWZ0ZXIgdGhlIGZvcm0gaGFzIGJlZW4gc2V0IHVwXHJcbiAgQE91dHB1dCgpIG9uRm9ybVJlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAvLyBjb3VudGVyIGZvciBuYW1pbmcgdGhlIGZvcm1zIGdyb3Vwc1xyXG4gIGdDb3VudCA9IDA7XHJcbiAgcHVibGljIGZvcm1PcHRpb25zOiBPYmplY3RGb3JtT3B0aW9ucztcclxuICBwdWJsaWMgZGVmYXVsdEZvcm1PcHRpb25zOiBPYmplY3RGb3JtT3B0aW9ucztcclxuICAvLyB0aGUgYWN0dWFsIGZvcm0gaW5zdGFuY2VcclxuICBwdWJsaWMgZm9ybTtcclxuICAvLyBwcm9wZXJ0eSBmb3IgaG9sZGluZyB0aGUgZm9ybXMgZGF0YSB1c2VkIGZvciBjb21wYXJpc29uIHdoZW4gYSBmb3JtLWNoYW5nZWQtZXZlbnRcclxuICAvLyBpcyBmZXRjaGVkIHRvIGluZGljYXRlIHdoZXIgb3Igbm90IHRoZSBpbmRleGRhdGEgd2VyZSBjaGFuZ2VkIG9yIGp1c3QgdGhlIHByb3BlcnRpZXNcclxuICAvLyBvZiB0aGUgZm9ybSBlbGVtZW50cyAoZWcuIGZvcm0gc2NyaXB0IHNldHRpbmcgZmllbGRzIHRvIHJlYWRvbmx5KVxyXG4gIHByaXZhdGUgZm9ybURhdGE6IGFueTtcclxuICBwcml2YXRlIHNjcmlwdE1vZGVsID0ge307XHJcbiAgcHJpdmF0ZSBzY3JpcHRpbmdTY29wZTogT2JqZWN0Rm9ybVNjcmlwdGluZ1Njb3BlO1xyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgLy8gbG9jYWwgc3RvcmUgZm9yIGFsbCB0aGUgZm9ybSBjb250cm9sIHJlZmVyZW5jZXNcclxuICBwcml2YXRlIGZvcm1Db250cm9scyA9IHt9O1xyXG4gIHByaXZhdGUgaW5pdGlhbFZhbGlkYXRvcnMgPSB7fTtcclxuXHJcblxyXG4gIEBJbnB1dCgnZm9ybU9wdGlvbnMnKVxyXG4gIHNldCBvcHRpb25zKGZvcm1PcHRpb25zOiBPYmplY3RGb3JtT3B0aW9ucykge1xyXG4gICAgdGhpcy5kZWZhdWx0Rm9ybU9wdGlvbnMgPSBmb3JtT3B0aW9ucztcclxuICAgIHRoaXMuZm9ybU9wdGlvbnMgPSBfLmNsb25lRGVlcChmb3JtT3B0aW9ucyk7XHJcbiAgICB0aGlzLmluaXQoKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbG9nZ2VyOiBMb2dnZXIsXHJcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICBwcml2YXRlIHN5c3RlbVNlcnZpY2U6IFN5c3RlbVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNlYXJjaFNlcnZpY2U6IFNlYXJjaFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZvcm1TY3JpcHRTZXJ2aWNlOiBPYmplY3RGb3JtU2NyaXB0U2VydmljZSxcclxuICAgIHByaXZhdGUgZm9ybUhlbHBlclNlcnZpY2U6IE9iamVjdEZvcm1IZWxwZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBwbHVnaW5TZXJ2aWNlOiBQbHVnaW5zU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVmZXJlbmNlU2VydmljZTogUmVmZXJlbmNlU2VydmljZSxcclxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgLy8gaW5pdGlhbGl6ZSB0aGUgZm9ybSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgZm9ybSBvcHRpb25zXHJcbiAgcHJpdmF0ZSBpbml0KCkge1xyXG4gICAgdGhpcy5mb3JtID0gbnVsbDtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmluaXRpYWxWYWxpZGF0b3JzID0ge307XHJcbiAgICAgIHRoaXMudW5zdWJzY3JpYmVBbGwoKTtcclxuICAgICAgdGhpcy5idWlsZFJlYWN0aXZlRm9ybSh0aGlzLmZvcm1PcHRpb25zIHx8IHt9KTtcclxuICAgIH0sIDApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0T3B0aW9ucygpIHtcclxuICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuZGVmYXVsdEZvcm1PcHRpb25zO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0U2NyaXB0aW5nU2NvcGUoZm9ybU9wdGlvbnMsIGRhdGFGb3JtTW9kZWwpIHtcclxuICAgIGxldCB7ZGF0YSwgYWN0aW9ucywgb2JqZWN0cywgY29udGV4dH0gPSA8T2JqZWN0Rm9ybU9wdGlvbnM+KGZvcm1PcHRpb25zIHx8IHt9KTtcclxuXHJcbiAgICBpZiAodGhpcy5zY3JpcHRpbmdTY29wZSkge1xyXG4gICAgICB0aGlzLnNjcmlwdGluZ1Njb3BlLnNldE1vZGVsKHRoaXMuc2NyaXB0TW9kZWwpO1xyXG4gICAgICAvKiogcHJvdmlkZSBhY2Nlc3MgdG8gYWN0aW9ucyAodXNlZCBpbnNpZGUgb2YgQlBNLUZvcm1zKSAqL1xyXG4gICAgICB0aGlzLnNjcmlwdGluZ1Njb3BlLmFjdGlvbnMgPSBhY3Rpb25zO1xyXG4gICAgICAvKiogcHJvdmlkZSBhY2Nlc3MgdG8gYWRkaXRpb25hbCBvYmplY3RzICh1c2VkIGZvciBleGFtcGxlIGluIEJQTS1TdGFydC1Gb3JtcyB0b1xyXG4gICAgICAgKiBhZGQgZGF0YSBvZiBETVMtT2JqZWN0cyB0byBzdGFydCB0aGUgcHJvY2VzcyBmb3IpXHJcbiAgICAgICAqL1xyXG4gICAgICB0aGlzLnNjcmlwdGluZ1Njb3BlLm9iamVjdHMgPSBvYmplY3RzO1xyXG4gICAgICB0aGlzLnNjcmlwdGluZ1Njb3BlLmNvbnRleHQgPSBjb250ZXh0O1xyXG4gICAgICAvKiogcHJvdmlkZSByZWFkb25seSBhY2Nlc3MgdG8gaW5pdGlhbCBmb3JtIGRhdGEgKHdoaWNoIG1heSBhbHNvIGNvbnRhaW4gdmFsdWVzIHRoYXRcclxuICAgICAgICogYXJlIG5vdCByZW5kZXJlZCBhcyBmb3JtIGVsZW1lbnRzIChpbnZpc2libGUgdmFsdWVzKSlcclxuICAgICAgICovXHJcbiAgICAgIHRoaXMuc2NyaXB0aW5nU2NvcGUuZGF0YSA9IGRhdGE7XHJcblxyXG4gICAgICAvKiogYnkgZGVmYXVsdCwgc2NyaXB0aW5nIHNjb3BlcyBhcmUgYXBwbGllZCB0byBmb3Jtcy4gQnV0IHRhYmxlIGVsZW1lbnRzIGNyZWF0ZSB0aGVpciBvd24gc2NvcGVcclxuICAgICAgICogZm9yIGVkaXRpbmcgcm93cy4gQmVpbmcgb25lIG9mIHRob3NlIGlubmVyIGZvcm1zIHNob3VsZCBub3QgcnVuIHRoZSBmb3JtIHNjcmlwdCBhZ2FpbiwgYnV0XHJcbiAgICAgICAqIGluc3RlYWQganVzdCBwcm92aWRlIHRoZSBvYnNlcnZpbmcgYWJpbGl0aWVzIG9mIHRoZSBzY3JpcHRpbmcgc2NvcGUuXHJcbiAgICAgICAqL1xyXG4gICAgICBpZiAoIXRoaXMuZm9ybU9wdGlvbnMuZGlzYWJsZWQgJiYgIXRoaXMuaXNJbm5lclRhYmxlRm9ybSAmJiBkYXRhRm9ybU1vZGVsKSB7XHJcbiAgICAgICAgY29uc3Qgc2NyaXB0TmFtZSA9IGRhdGFGb3JtTW9kZWwubmFtZSArICdfJyArIGRhdGFGb3JtTW9kZWwuc2l0dWF0aW9uO1xyXG5cclxuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnZXhlY3V0aW5nIGZvcm0gc2NyaXB0ICcgKyBzY3JpcHROYW1lKTtcclxuICAgICAgICB0aGlzLmZvcm1TY3JpcHRTZXJ2aWNlLnJ1bkZvcm1TY3JpcHQoXHJcbiAgICAgICAgICB0aGlzLnNjcmlwdGluZ1Njb3BlLFxyXG4gICAgICAgICAgZGF0YUZvcm1Nb2RlbC5zY3JpcHQsXHJcbiAgICAgICAgICBzY3JpcHROYW1lXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBmb2N1c0Zvcm0oKSB7XHJcbiAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpLmZvY3VzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0Rm9ybURhdGEoZGF0YSkge1xyXG4gICAgdGhpcy5mb3JtT3B0aW9ucy5kYXRhID0gZGF0YTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmluaXQoKTtcclxuICAgIH0sIDApO1xyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEV4dHJhY3RzIHRoZSB2YWx1ZXMgZnJvbSB0aGUgZm9ybSBtb2RlbC4gRWFjaCBmb3JtIHZhbHVlIGlzIHJlcHJlc2VudGVkIGJ5IG9uZVxyXG4gICAqIHByb3BlcnR5IG9uIHRoZSByZXN1bHQgb2JqZWN0IGhvbGRpbmcgdGhlIGZpZWxkcyB2YWx1ZS4gVGhlIGtleXMgKHByb3BlcnRpZXMpIGFyZSB0aGUgYG5hbWVgXHJcbiAgICogcHJvcGVydGllcyBvZiB0aGUgZm9ybSBlbGVtZW50IChpbiBTRUFSQ0ggc2l0dWF0aW9uIHRoZSBgcW5hbWVgIGZpZWxkIGlzIHVzZWQpLlxyXG4gICAqXHJcbiAgICogSG93IHZhbHVlcyBhcmUgZXh0cmFjdGVkIGlzIGluZmx1ZW5jZWQgYnkgdGhlIGZvcm1zIHNpdHVhdGlvbi5cclxuICAgKlxyXG4gICAqIEByZXR1cm4gb2JqZWN0IG9mIGtleSB2YWx1ZSBwYWlyc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRGb3JtRGF0YSgpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1Ub0RhdGEoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRGb3JtUHJpc3RpbmUoKSB7XHJcbiAgICB0aGlzLmZvcm0ubWFya0FzUHJpc3RpbmUoKTtcclxuICB9XHJcblxyXG4gIC8vIHJlc2V0IHRoZSBmb3JtIHRvIGl0cyBpbml0aWFsIHN0YXRlXHJcbiAgcHVibGljIHJlc2V0Rm9ybSgpIHtcclxuICAgIHRoaXMuaW5pdE9wdGlvbnMoKTtcclxuICAgIHRoaXMuZW1pdEZvcm1DaGFuZ2VkRXZlbnQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIG9ic2VydmVkIG1vZGVsIHRoYXQgd2FzIHBhc3NlZCB0byB0aGUgY3VycmVudCBmb3JtIHNjcmlwdCBydW5uaW5nLiBJZiB0aGVyZSBpc1xyXG4gICAqIG5vIGZvcm0gc2NyaXB0LCB0aGlzIG1ldGhvZCB3aWxsIHJldHVybiBOVUxMLlxyXG4gICAqIEByZXR1cm5zXHJcbiAgICovXHJcbiAgcHVibGljIGdldE9ic2VydmVkU2NyaXB0TW9kZWwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zY3JpcHRpbmdTY29wZSA/IHRoaXMuc2NyaXB0aW5nU2NvcGUuZ2V0TW9kZWwoKSA6IG51bGw7XHJcbiAgfVxyXG5cclxuICAvLyBDcmVhdGUgYSByZWFjdGl2ZSBmb3JtIGZyb20gdGhlIGVuYWlvIGZvcm0gbW9kZWxcclxuICBwcml2YXRlIGJ1aWxkUmVhY3RpdmVGb3JtKGZvcm1PcHRpb25zKSB7XHJcblxyXG4gICAgdGhpcy5zY3JpcHRpbmdTY29wZSA9IG51bGw7XHJcbiAgICBjb25zdCBmb3JtTW9kZWwgPSB0aGlzLmRhdGFUb0Zvcm0oZm9ybU9wdGlvbnMuZm9ybU1vZGVsLCBmb3JtT3B0aW9ucy5kYXRhKTtcclxuXHJcbiAgICBpZiAoIWZvcm1Nb2RlbCkge1xyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgfVxyXG5cclxuICAgIC8vIGlmIGEgc2NyaXB0IGlzIGF2YWlsYWJsZSwgd2UnbGwgaW5pdCB0aGUgZm9ybSBzY3JpcHRpbmcgZm9yIHRoZVxyXG4gICAgLy8gY3VycmVudCBmb3JtXHJcbiAgICBpZiAodGhpcy5pc0lubmVyVGFibGVGb3JtIHx8IChmb3JtTW9kZWwuc2NyaXB0ICYmIGZvcm1Nb2RlbC5zY3JpcHQubGVuZ3RoID4gMCkpIHtcclxuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ2FkZGluZyBmb3JtIHNjcmlwdGluZyBzY29wZScpO1xyXG4gICAgICB0aGlzLnNjcmlwdGluZ1Njb3BlID0gbmV3IE9iamVjdEZvcm1TY3JpcHRpbmdTY29wZShcclxuICAgICAgICBmb3JtTW9kZWwuc2l0dWF0aW9uLFxyXG4gICAgICAgIHRoaXMub25TY3JpcHRpbmdNb2RlbENoYW5nZWQsXHJcbiAgICAgICAgdGhpcy5wbHVnaW5TZXJ2aWNlLmdldEFwaSgpLFxyXG4gICAgICAgIHRoaXMuaXNJbm5lclRhYmxlRm9ybVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnNjcmlwdGluZ1Njb3BlLm9iamVjdElkID0gdGhpcy5mb3JtT3B0aW9ucy5vYmplY3RJZDtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgZm9ybSA9IG5ldyBPYmplY3RGb3JtR3JvdXAoe30pO1xyXG4gICAgaWYgKGZvcm1Nb2RlbC5lbGVtZW50c1swXSAmJiBmb3JtTW9kZWwuZWxlbWVudHNbMF0uZWxlbWVudHMpIHtcclxuICAgICAgdGhpcy5hZGRGb3JtQ29udHJvbChmb3JtLCBmb3JtTW9kZWwuZWxlbWVudHNbMF0sICdjb3JlJyk7XHJcbiAgICB9XHJcbiAgICBpZiAoZm9ybU1vZGVsLmVsZW1lbnRzWzFdICYmIGZvcm1Nb2RlbC5lbGVtZW50c1sxXS5lbGVtZW50cykge1xyXG4gICAgICB0aGlzLmFkZEZvcm1Db250cm9sKGZvcm0sIGZvcm1Nb2RlbC5lbGVtZW50c1sxXSwgJ2RhdGEnKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZvcm0gPSBmb3JtO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuZm9ybSkgcmV0dXJuO1xyXG5cclxuICAgICAgdGhpcy5pbml0VmFsaWRhdG9ycyh0aGlzLmZvcm0pO1xyXG4gICAgICBsZXQgZm9ybVdhdGNoID0gdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSg1MDApKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gIWZvcm1XYXRjaC5jbG9zZWQgJiYgdGhpcy5lbWl0Rm9ybUNoYW5nZWRFdmVudCgpKTtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goZm9ybVdhdGNoKTtcclxuXHJcbiAgICAgIHRoaXMuaW5pdFNjcmlwdGluZ1Njb3BlKGZvcm1PcHRpb25zLCBmb3JtTW9kZWwpO1xyXG5cclxuICAgICAgdGhpcy5vbkZvcm1SZWFkeS5lbWl0KCk7XHJcbiAgICAgIHRoaXMuZW1pdEZvcm1DaGFuZ2VkRXZlbnQoZmFsc2UpO1xyXG4gICAgfSwgMzAwKTtcclxuICB9XHJcblxyXG4gIGluaXRWYWxpZGF0b3JzKGZvcm0pIHtcclxuICAgIGlmICh0aGlzLmZvcm0pIHtcclxuICAgICAgZm9yIChsZXQga2V5IGluIGZvcm0uY29udHJvbHMpIHtcclxuICAgICAgICBjb25zdCBjb250cm9sID0gZm9ybS5jb250cm9sc1trZXldO1xyXG4gICAgICAgIGlmIChjb250cm9sLmNvbnRyb2xzKSB7XHJcbiAgICAgICAgICB0aGlzLmluaXRWYWxpZGF0b3JzKGNvbnRyb2wpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmluaXRpYWxWYWxpZGF0b3JzW2NvbnRyb2wuX2VvRm9ybUVsZW1lbnQubmFtZV0gPSBjb250cm9sLnZhbGlkYXRvcjtcclxuICAgICAgICAgIGNvbnRyb2wuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLmNvbXBvc2UodGhpcy5nZXRWYWxpZGF0b3JzKGNvbnRyb2wuX2VvRm9ybUVsZW1lbnQpLmNvbmNhdChbdGhpcy5pbml0aWFsVmFsaWRhdG9yc1tjb250cm9sLl9lb0Zvcm1FbGVtZW50Lm5hbWVdXSkpKTtcclxuICAgICAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWl0Rm9ybUNoYW5nZWRFdmVudChjb21wYXJlID0gdHJ1ZSkge1xyXG5cclxuICAgIC8vIGNoZWNrIGlmIGluZGV4ZGF0YSBoYXMgYmVlbiBjaGFuZ2VkXHJcbiAgICBsZXQgY3VycmVudEZvcm1EYXRhID0gdGhpcy5nZXRGb3JtRGF0YSgpO1xyXG4gICAgbGV0IGlkeENoYW5nZSA9IGNvbXBhcmUgPyBKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm1EYXRhKSAhPT0gSlNPTi5zdHJpbmdpZnkoY3VycmVudEZvcm1EYXRhKSA6IGZhbHNlO1xyXG4gICAgdGhpcy5mb3JtRGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoY3VycmVudEZvcm1EYXRhKSk7XHJcbiAgICBpZiAodGhpcy5mb3JtKSB7XHJcbiAgICAgIHRoaXMuc3RhdHVzQ2hhbmdlZC5lbWl0KHtcclxuICAgICAgICBpbnZhbGlkOiB0aGlzLmZvcm0uaW52YWxpZCxcclxuICAgICAgICBkaXJ0eTogdGhpcy5mb3JtLmRpcnR5LFxyXG4gICAgICAgIGRhdGE6IHRoaXMuZm9ybURhdGEsXHJcbiAgICAgICAgaW5kZXhkYXRhQ2hhbmdlZDogaWR4Q2hhbmdlXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgZWFjaCB0aW1lIHRoZSBzY3JpcHQgY2hhbmdlcyBpdHMgaW50ZXJuYWwgbW9kZWwuXHJcbiAgICogSXQgaXMgdXNlZCB0byB0cmFuc2ZlciB0aGUgc2NyaXB0IGNoYW5nZXMgdG8gdGhlIGFjdHVhbCBmb3JtIG1vZGVsLlxyXG4gICAqXHJcbiAgICogVG8gZW5zdXJlIHRoZSByaWdodCBjb250ZXh0LCB3ZSBkZWZpbmUgYW4gaW5zdGFuY2UgbWV0aG9kIGFzIGNhbGxiYWNrIGZvciB0aGUgc2NyaXB0aW5nIHNjb3BlXHJcbiAgICogQHNlZTogaHR0cHM6Ly9ibG9nLmpvaG5ueXJlaWxseS5jb20vMjAxNC8wNC90eXBlc2NyaXB0LWluc3RhbmNlLW1ldGhvZHMuaHRtbFxyXG4gICAqXHJcbiAgICogQHBhcmFtIGZvcm1Db250cm9sTmFtZVxyXG4gICAqIEBwYXJhbSBjaGFuZ2VcclxuICAgKi9cclxuICBwcml2YXRlIG9uU2NyaXB0aW5nTW9kZWxDaGFuZ2VkID0gKGZvcm1Db250cm9sTmFtZSwgY2hhbmdlKSA9PiB7XHJcblxyXG4gICAgLy8gZmluZCB0aGUgdGFyZ2V0IGNvbnRyb2xcclxuICAgIGxldCBmYzogT2JqZWN0Rm9ybUNvbnRyb2wgPSB0aGlzLmZvcm1Db250cm9sc1tmb3JtQ29udHJvbE5hbWVdIGFzIE9iamVjdEZvcm1Db250cm9sO1xyXG4gICAgaWYgKGZjKSB7XHJcblxyXG4gICAgICAvLyBjaGFuZ2Ugb25seSBhbGxvd2VkIHByb3BlcnRpZXNcclxuICAgICAgc3dpdGNoIChjaGFuZ2UubmFtZSkge1xyXG4gICAgICAgIGNhc2UgJ3ZhbHVlJzoge1xyXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY2hhbmdlLm5ld1ZhbHVlKSkge1xyXG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NBcnJheVZhbHVlQ2hhbmdlKGZjLCBjaGFuZ2UpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZmMuX2VvRm9ybUVsZW1lbnQudmFsdWUgPSBjaGFuZ2UubmV3VmFsdWU7XHJcbiAgICAgICAgICAgIGlmIChmYy52YWx1ZSAhPT0gY2hhbmdlLm5ld1ZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgZmMucGF0Y2hWYWx1ZShjaGFuZ2UubmV3VmFsdWUpO1xyXG4gICAgICAgICAgICAgIGZjLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAgICAgICBmYy5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmZvcm0ubWFya0FzRGlydHkoKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdyZXF1aXJlZCc6IHtcclxuICAgICAgICAgIGlmIChmYy5fZW9Gb3JtRWxlbWVudC5yZXF1aXJlZCAhPT0gY2hhbmdlLm5ld1ZhbHVlKSB7XHJcbiAgICAgICAgICAgIGZjLl9lb0Zvcm1FbGVtZW50LnJlcXVpcmVkID0gY2hhbmdlLm5ld1ZhbHVlO1xyXG4gICAgICAgICAgICAvLyBhcHBseSBuZXcgdmFsaWRhdG9yc1xyXG4gICAgICAgICAgICAvLyBAc2VlOiBodHRwczovL3Njb3RjaC5pby90dXRvcmlhbHMvaG93LXRvLWltcGxlbWVudC1jb25kaXRpb25hbC12YWxpZGF0aW9uLWluLWFuZ3VsYXItMi1tb2RlbC1kcml2ZW4tZm9ybXNcclxuICAgICAgICAgICAgZmMuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLmNvbXBvc2UodGhpcy5nZXRWYWxpZGF0b3JzKGZjLl9lb0Zvcm1FbGVtZW50KS5jb25jYXQoW3RoaXMuaW5pdGlhbFZhbGlkYXRvcnNbZmMuX2VvRm9ybUVsZW1lbnQubmFtZV1dKSkpO1xyXG4gICAgICAgICAgICAvLyBuZWVkIHRvIG1hcmsgZm9ybSBjb250cm9sIGFzIHRvdWNoZWQgYmVjYXVzZSBvdGhlcndpc2UgZm9ybSB2YWxpZGF0aW9uIHdpbGwgbm90IHNob3dcclxuICAgICAgICAgICAgLy8gZXJyb3IgbWVzc2FnZXNcclxuICAgICAgICAgICAgZmMubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICAgICAgICBmYy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAncmVhZG9ubHknOiB7XHJcbiAgICAgICAgICBmYy5fZW9Gb3JtRWxlbWVudC5yZWFkb25seSA9IGNoYW5nZS5uZXdWYWx1ZTtcclxuICAgICAgICAgIGlmIChjaGFuZ2UubmV3VmFsdWUgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgZmMuZGlzYWJsZSgpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZmMuZW5hYmxlKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnZXJyb3InOiB7XHJcbiAgICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkoZmMuX2VvRm9ybUVsZW1lbnQuZXJyb3IpICE9PSBKU09OLnN0cmluZ2lmeShjaGFuZ2UubmV3VmFsdWUpKSB7XHJcbiAgICAgICAgICAgIGZjLl9lb0Zvcm1FbGVtZW50LmVycm9yID0gY2hhbmdlLm5ld1ZhbHVlO1xyXG4gICAgICAgICAgICBmYy5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgICAgIGZjLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBuZXcgb25yb3dlZGl0IGZ1bmN0aW9uIHdhcyBhcHBsaWVkIGJ5IHRoZSBzY3JpcHRcclxuICAgICAgICBjYXNlICdvbnJvd2VkaXQnOiB7XHJcbiAgICAgICAgICBmYy5fZW9Gb3JtRWxlbWVudC5vbnJvd2VkaXQgPSBjaGFuZ2UubmV3VmFsdWU7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gbmV3IG9uY2hhbmdlIGZ1bmN0aW9uIHdhcyBhcHBsaWVkIGJ5IHRoZSBzY3JpcHRcclxuICAgICAgICBjYXNlICdvbmNoYW5nZSc6IHtcclxuICAgICAgICAgIGZjLl9lb0Zvcm1FbGVtZW50Lm9uY2hhbmdlID0gY2hhbmdlLm5ld1ZhbHVlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIG5ldyBjb250ZXh0SWQgd2FzIGFwcGxpZWQgYnkgdGhlIHNjcmlwdFxyXG4gICAgICAgIGNhc2UgJ2NvbnRleHRJZCc6IHtcclxuICAgICAgICAgIGZjLl9lb0Zvcm1FbGVtZW50LmNvbnRleHRJZCA9IGNoYW5nZS5uZXdWYWx1ZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwcm9jZXNzQXJyYXlWYWx1ZUNoYW5nZShmYywgY2hhbmdlKSB7XHJcbiAgICBjb25zdCBuZXdWYWwgPSBjaGFuZ2UubmV3VmFsdWU7XHJcbiAgICBjb25zdCB0YXJnZXRUeXBlID0gZmMuX2VvRm9ybUVsZW1lbnQudHlwZTtcclxuICAgIC8vIGZvciBzb21lIHR5cGVzIHdlIGhhdmUgdG8gZW5zdXJlIHRoYXQgbWV0YSBkYXRhIGFyZSBwcm92aWRlZCBhcyB3ZWxsXHJcbiAgICBzd2l0Y2ggKHRhcmdldFR5cGUpIHtcclxuICAgICAgY2FzZSAnT1JHQU5JWkFUSU9OJzoge1xyXG4gICAgICAgIHRoaXMuZ2V0RGF0YU1ldGEoZmMuX2VvRm9ybUVsZW1lbnQsIG5ld1ZhbCkuc3Vic2NyaWJlKG0gPT4ge1xyXG4gICAgICAgICAgZmMuX2VvRm9ybUVsZW1lbnQuZGF0YU1ldGEgPSBtO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0NPREVTWVNURU0nOiB7XHJcbiAgICAgICAgaWYgKCFmYy5fZW9Gb3JtRWxlbWVudC5jb2Rlc3lzdGVtLmVudHJpZXMpIHtcclxuICAgICAgICAgIGZjLl9lb0Zvcm1FbGVtZW50LmNvZGVzeXN0ZW0gPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0Q29kZXN5c3RlbShmYy5fZW9Gb3JtRWxlbWVudC5jb2Rlc3lzdGVtLmlkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnVEFCTEUnOiB7XHJcbiAgICAgICAgY29uc3QgZGF0YVRvQmVQcm9jZXNzZWQgPSB7fTtcclxuICAgICAgICBmYy5fZW9Gb3JtRWxlbWVudC5lbGVtZW50cy5mb3JFYWNoKGUgPT4ge1xyXG4gICAgICAgICAgaWYgKGUudHlwZSA9PT0gJ09SR0FOSVpBVElPTicgfHwgZS50eXBlID09PSAnQ09ERVNZU1RFTScpIHtcclxuICAgICAgICAgICAgZGF0YVRvQmVQcm9jZXNzZWRbZS5uYW1lXSA9IGU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKGRhdGFUb0JlUHJvY2Vzc2VkKS5sZW5ndGgpIHtcclxuICAgICAgICAgIGxldCBvYnMgPSBbXTtcclxuICAgICAgICAgIG5ld1ZhbC5mb3JFYWNoKHJvd0RhdGEgPT4ge1xyXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhyb3dEYXRhKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGRhdGFUb0JlUHJvY2Vzc2VkW2tleV0pIHtcclxuICAgICAgICAgICAgICAgIG9icy5wdXNoKHRoaXMuZ2V0RGF0YU1ldGEoZGF0YVRvQmVQcm9jZXNzZWRba2V5XSwgcm93RGF0YVtrZXldKS5waXBlKFxyXG4gICAgICAgICAgICAgICAgICB0YXAobSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHJvd0RhdGFba2V5ICsgJ19tZXRhJ10gPSBtO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgcm93RGF0YVtrZXkgKyAnX21ldGEnXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICApKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBmb3JrSm9pbihvYnMpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnVwZGF0ZUFycmF5VmFsdWUoZmMsIG5ld1ZhbCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy51cGRhdGVBcnJheVZhbHVlKGZjLCBuZXdWYWwpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVBcnJheVZhbHVlKGZjLCBuZXdWYWx1ZSkge1xyXG4gICAgZmMuX2VvRm9ybUVsZW1lbnQudmFsdWUgPSBbXS5jb25jYXQobmV3VmFsdWUpO1xyXG4gICAgZmMucGF0Y2hWYWx1ZShbXS5jb25jYXQobmV3VmFsdWUpKTtcclxuICAgIGZjLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIGZjLm1hcmtBc0RpcnR5KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldERhdGFNZXRhKGZvcm1FbGVtZW50OiBhbnksIG5ld1ZhbHVlOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cclxuICAgIGlmIChuZXdWYWx1ZSkge1xyXG4gICAgICBzd2l0Y2ggKGZvcm1FbGVtZW50LnR5cGUpIHtcclxuICAgICAgICBjYXNlICdPUkdBTklaQVRJT04nOiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldE9yZ2FuaXphdGlvbk9iamVjdChuZXdWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ1JFRkVSRU5DRSc6IHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZVNlcnZpY2UuZmV0Y2hJRFJlZmVyZW5jZU1ldGFEYXRhKEFycmF5LmlzQXJyYXkobmV3VmFsdWUpID8gbmV3VmFsdWUgOiBbbmV3VmFsdWVdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnQ09ERVNZU1RFTSc6IHtcclxuICAgICAgICAgIHJldHVybiBvYnNlcnZhYmxlT2YodGhpcy5zeXN0ZW1TZXJ2aWNlLmdldENvZGVzeXN0ZW0oZm9ybUVsZW1lbnQuY29kZXN5c3RlbS5pZCkuZW50cmllcy5maW5kKChlbnRyeSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gZW50cnkuZGVmYXVsdHJlcHJlc2VudGF0aW9uID09PSBuZXdWYWx1ZTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBvYnNlcnZhYmxlT2YobnVsbCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZWN1cnNpdmUgbWV0aG9kIGFkZGluZyBhIG5ldyBGb3JtQ29udHJvbCAoZ3JvdXAgb3IgY29udHJvbCkgdG8gYSBwYXJlbnQgZm9ybSBncm91cFxyXG4gICAqXHJcbiAgICogQHBhcmFtIHBhcmVudEdyb3VwIC0gdGhlIHBhcmVudCBncm91cCB0byBhZGQgdGhlIGNvbnRyb2wgdG9cclxuICAgKiBAcGFyYW0gZm9ybUVsZW1lbnQgLSB0aGUgZW5haW8gZm9ybSBtb2RlbCBlbGVtZW50IHRvIGNyZWF0ZSB0aGUgY2hpbGQgY29udHJvbCBmcm9tXHJcbiAgICogQHBhcmFtIFt1c2VOYW1lXSAtIHVzZSB0aGlzIG5hbWUgaW5zdGVhZCBvZiB0aGUgb25lIGZyb20gdGhlIG1vZGVsXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhZGRGb3JtQ29udHJvbChwYXJlbnRHcm91cDogT2JqZWN0Rm9ybUdyb3VwLCBmb3JtRWxlbWVudDogYW55LCB1c2VOYW1lPzogc3RyaW5nKSB7XHJcblxyXG4gICAgbGV0IGN0cmw7XHJcbiAgICBsZXQgbmFtZTtcclxuXHJcbiAgICAvLyBhZGQgYSBmb3JtIGdyb3VwXHJcbiAgICBpZiAoZm9ybUVsZW1lbnQudHlwZSA9PT0gJ28ybUdyb3VwJyB8fCBmb3JtRWxlbWVudC50eXBlID09PSAnbzJtR3JvdXBTdGFjaycpIHtcclxuXHJcbiAgICAgIC8vIGRvIG5vdCBhZGQgZ3JvdXBzIHRoYXQgYXJlIGVtcHR5XHJcbiAgICAgIGlmICghZm9ybUVsZW1lbnQuZWxlbWVudHMgfHwgZm9ybUVsZW1lbnQuZWxlbWVudHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0ZvdW5kIGVtcHR5IGZvcm0gZ3JvdXAnLCBmb3JtRWxlbWVudCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjdHJsID0gbmV3IE9iamVjdEZvcm1Hcm91cCh7fSk7XHJcbiAgICAgIGN0cmwuX2VvRm9ybUdyb3VwID0ge1xyXG4gICAgICAgIGxhYmVsOiBmb3JtRWxlbWVudC5sYWJlbCxcclxuICAgICAgICAvL2xheW91dGdyb3VwOiBmb3JtRWxlbWVudC5sYXlvdXRncm91cCxcclxuICAgICAgICBsYXlvdXQ6IGZvcm1FbGVtZW50LmxheW91dCxcclxuICAgICAgICB0eXBlOiBmb3JtRWxlbWVudC50eXBlXHJcbiAgICAgIH07XHJcblxyXG4gICAgICBpZiAodXNlTmFtZSA9PT0gJ2NvcmUnIHx8IHVzZU5hbWUgPT09ICdkYXRhJykge1xyXG4gICAgICAgIGN0cmwuX2VvRm9ybUdyb3VwLmxhYmVsID0gdXNlTmFtZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZm9yIChsZXQgZSBvZiBmb3JtRWxlbWVudC5lbGVtZW50cykge1xyXG4gICAgICAgIHRoaXMuYWRkRm9ybUNvbnRyb2woY3RybCwgZSk7XHJcbiAgICAgIH1cclxuICAgICAgbmFtZSA9IHVzZU5hbWUgfHwgJ2ZnJyArIHRoaXMuZ0NvdW50Kys7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBhZGQgZm9ybSBjb250cm9sXHJcbiAgICAgIC8vIFRvIGJlIGFibGUgdG8gaW50ZWdyYXRlIHJlY3Vyc2l2ZSBmb3JtIGNvbnRyb2xzIGludG8gdGhlIG1haW4gZm9ybSxcclxuICAgICAgLy8gd2UgaGF2ZSB0byB3cmFwIHRoZW0gaW4gYSBmb3JtIGdyb3VwXHJcbiAgICAgIGN0cmwgPSBuZXcgT2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyKHt9KTtcclxuICAgICAgY3RybC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIgPSB7XHJcbiAgICAgICAgLy8gdGhlIG5hbWUgb2YgdGhlIHdyYXBwZWQgRm9ybUNvbnRyb2xcclxuICAgICAgICBjb250cm9sTmFtZTogZm9ybUVsZW1lbnQubmFtZSxcclxuICAgICAgICBzaXR1YXRpb246IHRoaXMuZm9ybU9wdGlvbnMuZm9ybU1vZGVsLnNpdHVhdGlvblxyXG4gICAgICB9O1xyXG4gICAgICBpZiAodGhpcy5mb3JtT3B0aW9ucy5mb3JtTW9kZWwuc2l0dWF0aW9uID09PSAnU0VBUkNIJyAmJiBmb3JtRWxlbWVudC52YWx1ZSA9PT0gbnVsbCkge1xyXG4gICAgICAgIGZvcm1FbGVtZW50LmlzTm90U2V0VmFsdWUgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIGRvIG5vdCBzZXQgYSByZWZlcmVuY2UgYXMgdGhlIGZvcm0gY29udHJvbHMgdmFsdWVcclxuICAgICAgLy8gb3RoZXJ3aXNlIHdlIGNvdWxkIG5vdCByZXNldCB0aGUgZm9ybVxyXG4gICAgICBsZXQgdmFsdWU6IGFueTtcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZm9ybUVsZW1lbnQudmFsdWUpKSB7XHJcbiAgICAgICAgLy8gY29weSBieSB2YWx1ZSBmb3IgYXJyYXlzIG9mIG9iamVjdHMgKGUuZy4gdGFibGUgZGF0YSlcclxuICAgICAgICB2YWx1ZSA9IFtdO1xyXG4gICAgICAgIGZvcm1FbGVtZW50LnZhbHVlLmZvckVhY2goKG8pID0+IHtcclxuICAgICAgICAgIHZhbHVlLnB1c2goSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvKSkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZhbHVlID0gZm9ybUVsZW1lbnQudmFsdWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIGZvciBjb2Rlc3lzdGVtIGVsZW1lbnRzIGFkZCBlbnRyaWVzIGlmIG5vdCB5ZXQgcHJvdmlkZWRcclxuICAgICAgaWYgKGZvcm1FbGVtZW50LnR5cGUgPT09ICdDT0RFU1lTVEVNJyAmJiAhZm9ybUVsZW1lbnQuY29kZXN5c3RlbS5lbnRyaWVzKSB7XHJcbiAgICAgICAgZm9ybUVsZW1lbnQuY29kZXN5c3RlbSA9IHRoaXMuc3lzdGVtU2VydmljZS5nZXRDb2Rlc3lzdGVtKGZvcm1FbGVtZW50LmNvZGVzeXN0ZW0uaWQpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBjcmVhdGUgdGhlIGFjdHVhbCBmb3JtIGNvbnRyb2xcclxuICAgICAgbGV0IGNvbnRyb2xEaXNhYmxlZCA9IHRoaXMuZm9ybU9wdGlvbnMuZGlzYWJsZWQgfHwgISFmb3JtRWxlbWVudC5yZWFkb25seTtcclxuICAgICAgbGV0IGZvcm1Db250cm9sID0gbmV3IE9iamVjdEZvcm1Db250cm9sKHtcclxuICAgICAgICB2YWx1ZTogdmFsdWUsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGNvbnRyb2xEaXNhYmxlZFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGZvcm1FbGVtZW50LnJlYWRvbmx5ID0gY29udHJvbERpc2FibGVkO1xyXG5cclxuICAgICAgZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQgPSBmb3JtRWxlbWVudDtcclxuICAgICAgdGhpcy5mb3JtQ29udHJvbHNbZm9ybUVsZW1lbnQubmFtZV0gPSBmb3JtQ29udHJvbDtcclxuXHJcbiAgICAgIGlmIChmb3JtRWxlbWVudC50eXBlID09PSAnQ09ERVNZU1RFTScgfHwgKGZvcm1FbGVtZW50LnR5cGUgPT09ICdTVFJJTkcnICYmIGZvcm1FbGVtZW50LmNsYXNzaWZpY2F0aW9uID09PSAnc2VsZWN0b3InKSkge1xyXG4gICAgICAgIGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50LmFwcGx5RmlsdGVyID0gKGZ1bmM6IEZ1bmN0aW9uKSA9PiB7XHJcbiAgICAgICAgICBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC5maWx0ZXJGdW5jdGlvbiA9IGZ1bmM7XHJcbiAgICAgICAgfTtcclxuICAgICAgICBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC5hcHBseURpc2FibGluZ0ZpbHRlciA9IChmdW5jOiBGdW5jdGlvbikgPT4ge1xyXG4gICAgICAgICAgZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQuZGlzYWJsaW5nRmlsdGVyRnVuY3Rpb24gPSBmdW5jO1xyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChmb3JtRWxlbWVudC50eXBlID09PSAnU1RSSU5HJyAmJiBmb3JtRWxlbWVudC5jbGFzc2lmaWNhdGlvbiA9PT0gJ3NlbGVjdG9yJykge1xyXG4gICAgICAgIGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50LnNldExpc3QgPSAobGlzdE9iamVjdDogYW55KSA9PiB7XHJcbiAgICAgICAgICBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC5saXN0ID0gbGlzdE9iamVjdDtcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoZm9ybUVsZW1lbnQudHlwZSA9PT0gJ09SR0FOSVpBVElPTicpIHtcclxuICAgICAgICBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC5zZXRGaWx0ZXIgPSAoZmlsdGVyT2JqZWN0OiBhbnkpID0+IHtcclxuICAgICAgICAgIGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50LmZpbHRlciA9IGZpbHRlck9iamVjdDtcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoZm9ybUVsZW1lbnQudHlwZSA9PT0gJ1JFRkVSRU5DRScpIHtcclxuICAgICAgICBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC5zZXRRdWVyeUZpbHRlcnMgPSAocXVlcnlGaWx0ZXJzT2JqZWN0OiB7W2ZpZWxkUW5hbWU6IHN0cmluZ106IHtvOiBzdHJpbmcsIHYxOiBhbnksIHYyOiBhbnl9fSkgPT4ge1xyXG4gICAgICAgICAgZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQucXVlcnlGaWx0ZXJzID0gcXVlcnlGaWx0ZXJzT2JqZWN0O1xyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLmZvcm1PcHRpb25zLmZvcm1Nb2RlbC5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XHJcbiAgICAgICAgLy8gaW4gc2VhcmNoIHNpdHVhdGlvbiBldmVuIHJlYWRvbmx5IGZpZWxkcyBzaG91bGQgYmUgZWRpdGFibGUgLi4uXHJcbiAgICAgICAgZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHkgPSBmYWxzZTtcclxuICAgICAgICAvLyAuLi4gYW5kIHJlcXVpcmVkIG1ha2VzIG5vIHNlbnNlIGhlcmVcclxuICAgICAgICBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC5yZXF1aXJlZCA9IGZhbHNlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyByZW1vdmUgZW1wdHkgZGVzY3JpcHRpb25zXHJcbiAgICAgIGxldCBkZXNjID0gZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQuZGVzY3JpcHRpb247XHJcbiAgICAgIGlmIChkZXNjICYmIGRlc2MudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50LmRlc2NyaXB0aW9uID0gbnVsbDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gYWRkIHRoZSBmb3JtIGVsZW1lbnQgdG8gdGhlIHNjcmlwdCBtb2RlbCB0aGF0IHdpbGwgYmUgaW5qZWN0ZWQgaW50b1xyXG4gICAgICAvLyB0aGUgZm9ybXMgc2NyaXB0aW5nIHNjb3BlIGxhdGVyIG9uXHJcbiAgICAgIHRoaXMuc2NyaXB0TW9kZWxbZm9ybUVsZW1lbnQubmFtZV0gPSBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudDtcclxuXHJcbiAgICAgIC8vIGFwcGx5IGNoYW5nZSBsaXN0ZW5lciB0byB0aGUgZm9ybSBjb250cm9sLCB0aGF0IHdpbGwgdHJpZ2dlclxyXG4gICAgICAvLyB0aGUgZm9ybSBlbGVtZW50cyBvbkNoYW5nZSBsaXN0ZW5lclxyXG4gICAgICBsZXQgY29udHJvbFdhdGNoID0gY3RybC52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUoZm9ybUVsZW1lbnQudHlwZSA9PT0gJ1RBQkxFJyA/IDAgOiA1MDApKTtcclxuICAgICAgY29udHJvbFdhdGNoLnN1YnNjcmliZSgodikgPT4ge1xyXG4gICAgICAgIGlmIChmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC50eXBlID09PSAnUkVGRVJFTkNFJykge1xyXG4gICAgICAgICAgdGhpcy5nZXREYXRhTWV0YShmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudCwgdltmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC5uYW1lXSkuc3Vic2NyaWJlKG0gPT4ge1xyXG4gICAgICAgICAgICBpZiAobSkge1xyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50LmRhdGFNZXRhID0gZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQubXVsdGlzZWxlY3QgPyBtIDogbVswXTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBkZWxldGUgZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQuZGF0YU1ldGE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5zY3JpcHRpbmdTY29wZSkge1xyXG4gICAgICAgICAgdGhpcy5zY3JpcHRpbmdTY29wZS5tb2RlbENoYW5nZWQodik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goY29udHJvbFdhdGNoKTtcclxuXHJcbiAgICAgIGN0cmwuYWRkQ29udHJvbChmb3JtRWxlbWVudC5uYW1lLCBmb3JtQ29udHJvbCk7XHJcbiAgICAgIG5hbWUgPSAnZmdfJyArIGZvcm1FbGVtZW50Lm5hbWU7XHJcbiAgICB9XHJcbiAgICBwYXJlbnRHcm91cC5hZGRDb250cm9sKG5hbWUsIGN0cmwpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQnVpbGQgdmFsaWRhdG9ycyBmb3IgdGhlIGdpdmVuIGZvcm0gZWxlbWVudCB0byBiZSBhdHRhY2hlZCB0b1xyXG4gICAqIGEgcmVhY3RpdmUgZm9ybUNvbnRyb2wuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gZm9ybUVsZW1lbnQgLSBmb3JtIGVsZW1lbnQgb2JqZWN0XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRWYWxpZGF0b3JzKGZvcm1FbGVtZW50OiBhbnkpOiBWYWxpZGF0b3JGbltdIHtcclxuICAgIGxldCBlbG1WYWxpZGF0b3JzID0gRm9ybVZhbGlkYXRpb24uZ2V0VmFsaWRhdG9ycyhmb3JtRWxlbWVudCwgdGhpcy5mb3JtT3B0aW9ucy5mb3JtTW9kZWwuc2l0dWF0aW9uKTtcclxuXHJcbiAgICAvLyBhZGQgY3VzdG9tIHZhbGlkYXRvciBmb3Igc2NyaXB0IGVuYWJsZWQgZm9ybXNcclxuICAgIGlmICh0aGlzLnNjcmlwdGluZ1Njb3BlKSB7XHJcbiAgICAgIGVsbVZhbGlkYXRvcnMucHVzaChGb3JtVmFsaWRhdGlvbi5jdXN0b21TY3JpcHRpbmdWYWxpZGF0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZWxtVmFsaWRhdG9ycztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEV4dHJhY3QgdGhlIHZhbHVlcyBmcm9tIHRoZSBmb3JtXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBmb3JtVG9EYXRhKCkge1xyXG5cclxuICAgIHJldHVybiB0aGlzLmZvcm1IZWxwZXJTZXJ2aWNlLmV4dHJhY3RGb3JtRGF0YShcclxuICAgICAgdGhpcy5mb3JtLFxyXG4gICAgICB0aGlzLmZvcm1PcHRpb25zLmZvcm1Nb2RlbC5zaXR1YXRpb24sXHJcbiAgICAgIHRoaXMuZm9ybU9wdGlvbnMuZGF0YSxcclxuICAgICAgdGhpcy5pc0lubmVyVGFibGVGb3JtXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWVyZ2UgZGF0YSBpbnRvIGEgZm9ybSBtb2RlbC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBtb2RlbCAtIGZvcm0gbW9kZWxcclxuICAgKiBAcGFyYW0gZGF0YSAtIGRhdGEgb2JqZWN0IG9yIGFycmF5IG9mIFNlYXJjaEZpbHRlciBvYmplY3RzIGluIGNhc2Ugb2YgYSBzZWFyY2ggZm9ybVxyXG4gICAqL1xyXG4gIHByaXZhdGUgZGF0YVRvRm9ybShtb2RlbDogYW55LCBkYXRhOiBhbnkpIHtcclxuICAgIGlmIChtb2RlbCAmJiBkYXRhKSB7XHJcbiAgICAgIHRoaXMuc2V0RWxlbWVudFZhbHVlcyhtb2RlbC5lbGVtZW50cywgZGF0YSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbW9kZWw7XHJcbiAgfVxyXG5cclxuICAvLyByZWN1cnNpdmUgbWV0aG9kIGZvciBhZGRpbmcgdmFsdWVzIHRvIG1vZGVsIGVsZW1lbnRzXHJcbiAgcHJpdmF0ZSBzZXRFbGVtZW50VmFsdWVzKGVsZW1lbnRzLCBkYXRhKSB7XHJcblxyXG4gICAgZWxlbWVudHMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgaWYgKHRoaXMuaGFzVmFsdWUoZGF0YSwgZWxlbWVudCkpIHtcclxuXHJcbiAgICAgICAgZWxlbWVudC52YWx1ZSA9IHRoaXMuZ2V0VmFsdWUoZGF0YSwgZWxlbWVudCk7XHJcbiAgICAgICAgaWYgKGVsZW1lbnQudmFsdWUpIHtcclxuICAgICAgICAgIC8vIGFkZCBtZXRhIGRhdGEgZm9yIHNvbWUgb2YgdGhlIHR5cGVzXHJcbiAgICAgICAgICB0aGlzLmZldGNoTWV0YURhdGEoZGF0YSwgZWxlbWVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGRlbGV0ZSBlbGVtZW50LnZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChlbGVtZW50LnR5cGUgIT09ICdUQUJMRScgJiYgZWxlbWVudC5lbGVtZW50cyAmJiBlbGVtZW50LmVsZW1lbnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLnNldEVsZW1lbnRWYWx1ZXMoZWxlbWVudC5lbGVtZW50cywgZGF0YSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gaW4gc29tZSBjYXNlcyByZXF1aXJlZCBtZXRhIGRhdGEgbWF5IG5vdCBiZSBhdmFpbGFibGUgb24gdGhlIGVsZW1lbnQgaXRzZWxmXHJcbiAgLy8gc28gdGhleSBoYXZlIHRvIGJlIGZldGNoZWQgYW5kIGFkZGVkIHRvIHRoZSBlbGVtZW50IGZvciB0aGUgZm9ybSB0byBiZSBhYmxlXHJcbiAgLy8gdG8gcmVuZGVyIHRoZSBlbGVtZW50IGNvcnJlY3RseVxyXG4gIHByaXZhdGUgZmV0Y2hNZXRhRGF0YShkYXRhLCBlbGVtZW50KSB7XHJcblxyXG4gICAgaWYgKHRoaXMuZm9ybU9wdGlvbnMuZm9ybU1vZGVsLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcclxuICAgICAgLy8gdG9kbzogaG93IHRvIGZldGNoIG1ldGEgZGF0YSBpbiBzZWFyY2ggc2l0dWF0aW9uXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoZWxlbWVudC50eXBlID09PSAnT1JHQU5JWkFUSU9OJyAmJiBkYXRhW2VsZW1lbnQubmFtZSArICdfbWV0YSddKSB7XHJcbiAgICAgICAgZWxlbWVudC5kYXRhTWV0YSA9IGRhdGFbZWxlbWVudC5uYW1lICsgJ19tZXRhJ107XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC50eXBlID09PSAnQ09ERVNZU1RFTScgJiYgZGF0YVtlbGVtZW50Lm5hbWUgKyAnX21ldGEnXSkge1xyXG4gICAgICAgIGVsZW1lbnQuZGF0YU1ldGEgPSBkYXRhW2VsZW1lbnQubmFtZSArICdfbWV0YSddO1xyXG4gICAgICAgIGVsZW1lbnQuZGVmYXVsdHJlcHJlc2VudGF0aW9uID0gZGF0YVtlbGVtZW50Lm5hbWUgKyAnX21ldGEnXS5kZWZhdWx0cmVwcmVzZW50YXRpb247XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC50eXBlID09PSAnUkVGRVJFTkNFJyAmJiBkYXRhW2VsZW1lbnQubmFtZSArICdfbWV0YSddKSB7XHJcbiAgICAgICAgZWxlbWVudC5kYXRhTWV0YSA9IGRhdGFbZWxlbWVudC5uYW1lICsgJ19tZXRhJ107XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFzVmFsdWUoZGF0YSwgZWxlbWVudCkge1xyXG5cclxuICAgIC8vIGRpZmZlciBiZXR3ZWVuIGFycmF5IG9mIFNlYXJjaEZpbHRlcnMgYW5kIGEgZm9ybSBkYXRhIG9iamVjdFxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcclxuICAgICAgaWYgKGVsZW1lbnQudHlwZSA9PT0gJ1RBQkxFJykge1xyXG4gICAgICAgIHJldHVybiAhIShkYXRhLmZpbmQoKGZpbHRlcikgPT4gZmlsdGVyLnByb3BlcnR5LnN0YXJ0c1dpdGgoZWxlbWVudC5xbmFtZSkpKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gISEoZGF0YS5maW5kKChmaWx0ZXIpID0+IGZpbHRlci5wcm9wZXJ0eSA9PT0gZWxlbWVudC5xbmFtZSkpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZGF0YS5oYXNPd25Qcm9wZXJ0eShlbGVtZW50Lm5hbWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRUYWJsZUZpbHRlcnMoZmlsdGVyczogU2VhcmNoRmlsdGVyW10sIHByb3BlcnR5TmFtZTogc3RyaW5nKTogU2VhcmNoRmlsdGVyW10ge1xyXG4gICAgcmV0dXJuIGZpbHRlcnMuZmlsdGVyKGYgPT4gZi5wcm9wZXJ0eS5zdGFydHNXaXRoKHByb3BlcnR5TmFtZSArICcuJykpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRWYWx1ZShkYXRhLCBlbGVtZW50KSB7XHJcblxyXG4gICAgbGV0IHZhbHVlO1xyXG4gICAgaWYgKHRoaXMuZm9ybU9wdGlvbnMuZm9ybU1vZGVsLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcclxuICAgICAgaWYgKHRoaXMuaXNJbm5lclRhYmxlRm9ybSkge1xyXG4gICAgICAgIGlmIChlbGVtZW50LnR5cGUgPT09ICdEQVRFVElNRScgfHwgZWxlbWVudC50eXBlID09PSAnTlVNQkVSJykge1xyXG4gICAgICAgICAgdmFsdWUgPSBTZWFyY2hTZXJ2aWNlLnRvUmFuZ2VWYWx1ZShkYXRhW2VsZW1lbnQubmFtZV0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IGRhdGFbZWxlbWVudC5uYW1lXTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC50eXBlID09PSAnVEFCTEUnKSB7XHJcbiAgICAgICAgdmFsdWUgPSB0aGlzLnNlYXJjaFNlcnZpY2UudGFibGVGaWx0ZXJzVG9FbGVtZW50VmFsdWUodGhpcy5nZXRUYWJsZUZpbHRlcnMoZGF0YSwgZWxlbWVudC5xbmFtZSksIGVsZW1lbnQuZWxlbWVudHMpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGZpbHRlciA9IGRhdGEuZmluZChmID0+IGYucHJvcGVydHkgPT09IGVsZW1lbnQucW5hbWUpO1xyXG4gICAgICAgIHZhbHVlID0gdGhpcy5zZWFyY2hTZXJ2aWNlLmZpbHRlclRvRWxlbWVudFZhbHVlKGZpbHRlciwgZWxlbWVudC50eXBlKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuXHJcbiAgICAgIGlmIChlbGVtZW50LnR5cGUgPT09ICdEQVRFVElNRScgJiYgZGF0YVtlbGVtZW50Lm5hbWVdKSB7XHJcbiAgICAgICAgdmFsdWUgPSBuZXcgRGF0ZShgJHtkYXRhW2VsZW1lbnQubmFtZV19VDAwOjAwOjAwYCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdmFsdWUgPSBkYXRhW2VsZW1lbnQubmFtZV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy51bnN1YnNjcmliZUFsbCgpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICAvLyB1bnN1YnNjcmliZSBmcm9tIGFsbCB2YWx1ZSBjaGFuZ2UgbGlzdGVuZXJzIGZvciB0aGUgY3VycmVudCBmb3JtXHJcbiAgLy8gdG8gYXZvaWQgbWVtb3J5IGxlYWtzLiBUaGlzIG1ldGhvZCB3aWxsIGFsc28gYmUgY2FsbGVkIGV2ZXJ5IHRpbWVcclxuICAvLyBhIG5ldyBmb3JtIGlzIHJlbmRlcmVkIHRvIGdldCByaWQgb2YgdGhlIG9sZCBmb3JtIGVsZW1lbnQgc3Vic2NyaXB0aW9uc1xyXG4gIHByaXZhdGUgdW5zdWJzY3JpYmVBbGwoKSB7XHJcbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb25zLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygndW5zdWJzY3JpYmVkIGZyb20gJyArIHRoaXMuc3Vic2NyaXB0aW9ucy5sZW5ndGggKyAnIHZhbHVlIGNoYW5nZSBsaXN0ZW5lcnMuJyk7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zID0gW107XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
627
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxFQUFFLElBQUksWUFBWSxFQUE0QixRQUFRLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDNUUsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFFWixVQUFVLEVBRVYsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFjLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ3ZFLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLGtEQUFrRCxDQUFDO0FBQzFGLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBQ3hGLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBR3RFLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQ2xGLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUM5RSxPQUFPLEVBQUMsTUFBTSxFQUFnQixhQUFhLEVBQWMsYUFBYSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQzVGLE9BQU8sRUFBQyxZQUFZLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdC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QUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxtRUFBbUU7SUFDbkUsb0VBQW9FO0lBQ3BFLDBFQUEwRTtJQUNsRSxjQUFjO1FBQ3BCLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUU7WUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsMEJBQTBCLENBQUMsQ0FBQztZQUNqRyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQzs7O1lBdHFCRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtnQkFDMUIsOGRBQTJDO2dCQUUzQyxnRkFBZ0Y7Z0JBQ2hGLG1FQUFtRTtnQkFDbkUsU0FBUyxFQUFFLENBQUMsdUJBQXVCLENBQUM7O2FBRXJDOzs7WUFkTyxNQUFNO1lBaEJaLFVBQVU7WUFnQmtCLGFBQWE7WUFBYyxhQUFhO1lBTjlELHVCQUF1QjtZQUN2Qix1QkFBdUI7WUFJdkIsY0FBYztZQUdkLGdCQUFnQjtZQWhCdEIsaUJBQWlCOzs7K0JBK0JoQixLQUFLOzRCQUVMLE1BQU07MEJBRU4sTUFBTTtzQkFxQk4sS0FBSyxTQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge29mIGFzIG9ic2VydmFibGVPZiwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBmb3JrSm9pbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgT25EZXN0cm95LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0Zvcm1WYWxpZGF0aW9ufSBmcm9tICcuL2Zvcm0tdmFsaWRhdGlvbi9mb3JtLXZhbGlkYXRpb24nO1xyXG5pbXBvcnQge09iamVjdEZvcm1Hcm91cH0gZnJvbSAnLi9vYmplY3QtZm9ybS1ncm91cCc7XHJcbmltcG9ydCB7VmFsaWRhdG9yRm4sIFZhbGlkYXRvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtPYmplY3RGb3JtQ29udHJvbH0gZnJvbSAnLi9vYmplY3QtZm9ybS1jb250cm9sJztcclxuaW1wb3J0IHtPYmplY3RGb3JtQ29udHJvbFdyYXBwZXJ9IGZyb20gJy4vb2JqZWN0LWZvcm0tY29udHJvbC13cmFwcGVyJztcclxuaW1wb3J0IHtPYmplY3RGb3JtU2NyaXB0aW5nU2NvcGV9IGZyb20gJy4vb2JqZWN0LWZvcm0tc2NyaXB0L29iamVjdC1mb3JtLXNjcmlwdGluZy1zY29wZSc7XHJcbmltcG9ydCB7T2JqZWN0Rm9ybVNjcmlwdFNlcnZpY2V9IGZyb20gJy4vb2JqZWN0LWZvcm0tc2NyaXB0L29iamVjdC1mb3JtLXNjcmlwdC5zZXJ2aWNlJztcclxuaW1wb3J0IHtPYmplY3RGb3JtSGVscGVyU2VydmljZX0gZnJvbSAnLi4vb2JqZWN0LWZvcm0taGVscGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQge09iamVjdEZvcm1PcHRpb25zfSBmcm9tICcuLi9vYmplY3QtZm9ybS1vcHRpb25zLmludGVyZmFjZSc7XHJcbmltcG9ydCB7Rm9ybVN0YXR1c0NoYW5nZWRFdmVudH0gZnJvbSAnLi4vZm9ybS1zdGF0dXMtY2hhbmdlZC1ldmVudC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge1Vuc3Vic2NyaWJlT25EZXN0cm95fSBmcm9tICcuLi8uLi91dGlsL3Vuc3Vic2NyaWJlL3Vuc3Vic2NyaWJlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7UGx1Z2luc1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL2FwaS9wbHVnaW5zLnNlcnZpY2UnO1xyXG5pbXBvcnQge0xvZ2dlciwgU2VhcmNoRmlsdGVyLCBTeXN0ZW1TZXJ2aWNlLCBSYW5nZVZhbHVlLCBTZWFyY2hTZXJ2aWNlfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xyXG5pbXBvcnQge2RlYm91bmNlVGltZSwgdGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7UmVmZXJlbmNlU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvcmVmZXJlbmNlcy9yZWZlcmVuY2Uuc2VydmljZSc7XHJcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VvLW9iamVjdC1mb3JtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vb2JqZWN0LWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL29iamVjdC1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgLy8gZGVmaW5lICdjaGlsZCBvbmx5JyBzZXJ2aWNlcyBmb3IgdGhlIGZvcm0gd2l0aG91dCBzZXR0aW5nIGl0IHVwIG9uIHRoZSBtb2R1bGVcclxuICAvLyB3aGljaCB3b3VsZCBjYXVzZSB0aGVtIHRvIGJlIHByb3BhZ2F0ZWQgdG8gdGhlIHdob2xlIGFwcGxpY2F0aW9uXHJcbiAgcHJvdmlkZXJzOiBbT2JqZWN0Rm9ybVNjcmlwdFNlcnZpY2VdLFxyXG4gIC8vZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgT2JqZWN0Rm9ybUNvbXBvbmVudCBleHRlbmRzIFVuc3Vic2NyaWJlT25EZXN0cm95IGltcGxlbWVudHMgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgQElucHV0KCkgaXNJbm5lclRhYmxlRm9ybTogYm9vbGVhbjtcclxuICAvLyB0cmlnZ2VyZWQgd2hlbiB0aGUgZm9ybXMgc3RhdGUgaGFzIGJlZW4gY2hhbmdlZFxyXG4gIEBPdXRwdXQoKSBzdGF0dXNDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtU3RhdHVzQ2hhbmdlZEV2ZW50PigpO1xyXG4gIC8vIGhhbmRsZXIgdG8gYmUgZXhlY3V0ZWQgYWZ0ZXIgdGhlIGZvcm0gaGFzIGJlZW4gc2V0IHVwXHJcbiAgQE91dHB1dCgpIG9uRm9ybVJlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAvLyBjb3VudGVyIGZvciBuYW1pbmcgdGhlIGZvcm1zIGdyb3Vwc1xyXG4gIGdDb3VudCA9IDA7XHJcbiAgcHVibGljIGZvcm1PcHRpb25zOiBPYmplY3RGb3JtT3B0aW9ucztcclxuICBwdWJsaWMgZGVmYXVsdEZvcm1PcHRpb25zOiBPYmplY3RGb3JtT3B0aW9ucztcclxuICAvLyB0aGUgYWN0dWFsIGZvcm0gaW5zdGFuY2VcclxuICBwdWJsaWMgZm9ybTtcclxuICAvLyBwcm9wZXJ0eSBmb3IgaG9sZGluZyB0aGUgZm9ybXMgZGF0YSB1c2VkIGZvciBjb21wYXJpc29uIHdoZW4gYSBmb3JtLWNoYW5nZWQtZXZlbnRcclxuICAvLyBpcyBmZXRjaGVkIHRvIGluZGljYXRlIHdoZXIgb3Igbm90IHRoZSBpbmRleGRhdGEgd2VyZSBjaGFuZ2VkIG9yIGp1c3QgdGhlIHByb3BlcnRpZXNcclxuICAvLyBvZiB0aGUgZm9ybSBlbGVtZW50cyAoZWcuIGZvcm0gc2NyaXB0IHNldHRpbmcgZmllbGRzIHRvIHJlYWRvbmx5KVxyXG4gIHByaXZhdGUgZm9ybURhdGE6IGFueTtcclxuICBwcml2YXRlIHNjcmlwdE1vZGVsID0ge307XHJcbiAgcHJpdmF0ZSBzY3JpcHRpbmdTY29wZTogT2JqZWN0Rm9ybVNjcmlwdGluZ1Njb3BlO1xyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgLy8gbG9jYWwgc3RvcmUgZm9yIGFsbCB0aGUgZm9ybSBjb250cm9sIHJlZmVyZW5jZXNcclxuICBwcml2YXRlIGZvcm1Db250cm9scyA9IHt9O1xyXG4gIHByaXZhdGUgaW5pdGlhbFZhbGlkYXRvcnMgPSB7fTtcclxuXHJcblxyXG4gIEBJbnB1dCgnZm9ybU9wdGlvbnMnKVxyXG4gIHNldCBvcHRpb25zKGZvcm1PcHRpb25zOiBPYmplY3RGb3JtT3B0aW9ucykge1xyXG4gICAgdGhpcy5kZWZhdWx0Rm9ybU9wdGlvbnMgPSBmb3JtT3B0aW9ucztcclxuICAgIHRoaXMuZm9ybU9wdGlvbnMgPSBfLmNsb25lRGVlcChmb3JtT3B0aW9ucyk7XHJcbiAgICB0aGlzLmluaXQoKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbG9nZ2VyOiBMb2dnZXIsXHJcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICBwcml2YXRlIHN5c3RlbVNlcnZpY2U6IFN5c3RlbVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNlYXJjaFNlcnZpY2U6IFNlYXJjaFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZvcm1TY3JpcHRTZXJ2aWNlOiBPYmplY3RGb3JtU2NyaXB0U2VydmljZSxcclxuICAgIHByaXZhdGUgZm9ybUhlbHBlclNlcnZpY2U6IE9iamVjdEZvcm1IZWxwZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBwbHVnaW5TZXJ2aWNlOiBQbHVnaW5zU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVmZXJlbmNlU2VydmljZTogUmVmZXJlbmNlU2VydmljZSxcclxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgLy8gaW5pdGlhbGl6ZSB0aGUgZm9ybSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgZm9ybSBvcHRpb25zXHJcbiAgcHJpdmF0ZSBpbml0KCkge1xyXG4gICAgdGhpcy5mb3JtID0gbnVsbDtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmluaXRpYWxWYWxpZGF0b3JzID0ge307XHJcbiAgICAgIHRoaXMudW5zdWJzY3JpYmVBbGwoKTtcclxuICAgICAgdGhpcy5idWlsZFJlYWN0aXZlRm9ybSh0aGlzLmZvcm1PcHRpb25zIHx8IHt9KTtcclxuICAgIH0sIDApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0T3B0aW9ucygpIHtcclxuICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuZGVmYXVsdEZvcm1PcHRpb25zO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0U2NyaXB0aW5nU2NvcGUoZm9ybU9wdGlvbnMsIGRhdGFGb3JtTW9kZWwpIHtcclxuICAgIGxldCB7ZGF0YSwgYWN0aW9ucywgb2JqZWN0cywgY29udGV4dH0gPSA8T2JqZWN0Rm9ybU9wdGlvbnM+KGZvcm1PcHRpb25zIHx8IHt9KTtcclxuXHJcbiAgICBpZiAodGhpcy5zY3JpcHRpbmdTY29wZSkge1xyXG4gICAgICB0aGlzLnNjcmlwdGluZ1Njb3BlLnNldE1vZGVsKHRoaXMuc2NyaXB0TW9kZWwpO1xyXG4gICAgICAvKiogcHJvdmlkZSBhY2Nlc3MgdG8gYWN0aW9ucyAodXNlZCBpbnNpZGUgb2YgQlBNLUZvcm1zKSAqL1xyXG4gICAgICB0aGlzLnNjcmlwdGluZ1Njb3BlLmFjdGlvbnMgPSBhY3Rpb25zO1xyXG4gICAgICAvKiogcHJvdmlkZSBhY2Nlc3MgdG8gYWRkaXRpb25hbCBvYmplY3RzICh1c2VkIGZvciBleGFtcGxlIGluIEJQTS1TdGFydC1Gb3JtcyB0b1xyXG4gICAgICAgKiBhZGQgZGF0YSBvZiBETVMtT2JqZWN0cyB0byBzdGFydCB0aGUgcHJvY2VzcyBmb3IpXHJcbiAgICAgICAqL1xyXG4gICAgICB0aGlzLnNjcmlwdGluZ1Njb3BlLm9iamVjdHMgPSBvYmplY3RzO1xyXG4gICAgICB0aGlzLnNjcmlwdGluZ1Njb3BlLmNvbnRleHQgPSBjb250ZXh0O1xyXG4gICAgICAvKiogcHJvdmlkZSByZWFkb25seSBhY2Nlc3MgdG8gaW5pdGlhbCBmb3JtIGRhdGEgKHdoaWNoIG1heSBhbHNvIGNvbnRhaW4gdmFsdWVzIHRoYXRcclxuICAgICAgICogYXJlIG5vdCByZW5kZXJlZCBhcyBmb3JtIGVsZW1lbnRzIChpbnZpc2libGUgdmFsdWVzKSlcclxuICAgICAgICovXHJcbiAgICAgIHRoaXMuc2NyaXB0aW5nU2NvcGUuZGF0YSA9IGRhdGE7XHJcblxyXG4gICAgICAvKiogYnkgZGVmYXVsdCwgc2NyaXB0aW5nIHNjb3BlcyBhcmUgYXBwbGllZCB0byBmb3Jtcy4gQnV0IHRhYmxlIGVsZW1lbnRzIGNyZWF0ZSB0aGVpciBvd24gc2NvcGVcclxuICAgICAgICogZm9yIGVkaXRpbmcgcm93cy4gQmVpbmcgb25lIG9mIHRob3NlIGlubmVyIGZvcm1zIHNob3VsZCBub3QgcnVuIHRoZSBmb3JtIHNjcmlwdCBhZ2FpbiwgYnV0XHJcbiAgICAgICAqIGluc3RlYWQganVzdCBwcm92aWRlIHRoZSBvYnNlcnZpbmcgYWJpbGl0aWVzIG9mIHRoZSBzY3JpcHRpbmcgc2NvcGUuXHJcbiAgICAgICAqL1xyXG4gICAgICBpZiAoIXRoaXMuZm9ybU9wdGlvbnMuZGlzYWJsZWQgJiYgIXRoaXMuaXNJbm5lclRhYmxlRm9ybSAmJiBkYXRhRm9ybU1vZGVsKSB7XHJcbiAgICAgICAgY29uc3Qgc2NyaXB0TmFtZSA9IGRhdGFGb3JtTW9kZWwubmFtZSArICdfJyArIGRhdGFGb3JtTW9kZWwuc2l0dWF0aW9uO1xyXG5cclxuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnZXhlY3V0aW5nIGZvcm0gc2NyaXB0ICcgKyBzY3JpcHROYW1lKTtcclxuICAgICAgICB0aGlzLmZvcm1TY3JpcHRTZXJ2aWNlLnJ1bkZvcm1TY3JpcHQoXHJcbiAgICAgICAgICB0aGlzLnNjcmlwdGluZ1Njb3BlLFxyXG4gICAgICAgICAgZGF0YUZvcm1Nb2RlbC5zY3JpcHQsXHJcbiAgICAgICAgICBzY3JpcHROYW1lXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBmb2N1c0Zvcm0oKSB7XHJcbiAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpLmZvY3VzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0Rm9ybURhdGEoZGF0YSkge1xyXG4gICAgdGhpcy5mb3JtT3B0aW9ucy5kYXRhID0gZGF0YTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmluaXQoKTtcclxuICAgIH0sIDApO1xyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEV4dHJhY3RzIHRoZSB2YWx1ZXMgZnJvbSB0aGUgZm9ybSBtb2RlbC4gRWFjaCBmb3JtIHZhbHVlIGlzIHJlcHJlc2VudGVkIGJ5IG9uZVxyXG4gICAqIHByb3BlcnR5IG9uIHRoZSByZXN1bHQgb2JqZWN0IGhvbGRpbmcgdGhlIGZpZWxkcyB2YWx1ZS4gVGhlIGtleXMgKHByb3BlcnRpZXMpIGFyZSB0aGUgYG5hbWVgXHJcbiAgICogcHJvcGVydGllcyBvZiB0aGUgZm9ybSBlbGVtZW50IChpbiBTRUFSQ0ggc2l0dWF0aW9uIHRoZSBgcW5hbWVgIGZpZWxkIGlzIHVzZWQpLlxyXG4gICAqXHJcbiAgICogSG93IHZhbHVlcyBhcmUgZXh0cmFjdGVkIGlzIGluZmx1ZW5jZWQgYnkgdGhlIGZvcm1zIHNpdHVhdGlvbi5cclxuICAgKlxyXG4gICAqIEByZXR1cm4gb2JqZWN0IG9mIGtleSB2YWx1ZSBwYWlyc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRGb3JtRGF0YSgpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1Ub0RhdGEoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRGb3JtUHJpc3RpbmUoKSB7XHJcbiAgICB0aGlzLmZvcm0ubWFya0FzUHJpc3RpbmUoKTtcclxuICB9XHJcblxyXG4gIC8vIHJlc2V0IHRoZSBmb3JtIHRvIGl0cyBpbml0aWFsIHN0YXRlXHJcbiAgcHVibGljIHJlc2V0Rm9ybSgpIHtcclxuICAgIHRoaXMuaW5pdE9wdGlvbnMoKTtcclxuICAgIHRoaXMuZW1pdEZvcm1DaGFuZ2VkRXZlbnQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIG9ic2VydmVkIG1vZGVsIHRoYXQgd2FzIHBhc3NlZCB0byB0aGUgY3VycmVudCBmb3JtIHNjcmlwdCBydW5uaW5nLiBJZiB0aGVyZSBpc1xyXG4gICAqIG5vIGZvcm0gc2NyaXB0LCB0aGlzIG1ldGhvZCB3aWxsIHJldHVybiBOVUxMLlxyXG4gICAqIEByZXR1cm5zXHJcbiAgICovXHJcbiAgcHVibGljIGdldE9ic2VydmVkU2NyaXB0TW9kZWwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zY3JpcHRpbmdTY29wZSA/IHRoaXMuc2NyaXB0aW5nU2NvcGUuZ2V0TW9kZWwoKSA6IG51bGw7XHJcbiAgfVxyXG5cclxuICAvLyBDcmVhdGUgYSByZWFjdGl2ZSBmb3JtIGZyb20gdGhlIGVuYWlvIGZvcm0gbW9kZWxcclxuICBwcml2YXRlIGJ1aWxkUmVhY3RpdmVGb3JtKGZvcm1PcHRpb25zKSB7XHJcblxyXG4gICAgdGhpcy5zY3JpcHRpbmdTY29wZSA9IG51bGw7XHJcbiAgICBjb25zdCBmb3JtTW9kZWwgPSB0aGlzLmRhdGFUb0Zvcm0oZm9ybU9wdGlvbnMuZm9ybU1vZGVsLCBmb3JtT3B0aW9ucy5kYXRhKTtcclxuXHJcbiAgICBpZiAoIWZvcm1Nb2RlbCkge1xyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgfVxyXG5cclxuICAgIC8vIGlmIGEgc2NyaXB0IGlzIGF2YWlsYWJsZSwgd2UnbGwgaW5pdCB0aGUgZm9ybSBzY3JpcHRpbmcgZm9yIHRoZVxyXG4gICAgLy8gY3VycmVudCBmb3JtXHJcbiAgICBpZiAodGhpcy5pc0lubmVyVGFibGVGb3JtIHx8IChmb3JtTW9kZWwuc2NyaXB0ICYmIGZvcm1Nb2RlbC5zY3JpcHQubGVuZ3RoID4gMCkpIHtcclxuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ2FkZGluZyBmb3JtIHNjcmlwdGluZyBzY29wZScpO1xyXG4gICAgICB0aGlzLnNjcmlwdGluZ1Njb3BlID0gbmV3IE9iamVjdEZvcm1TY3JpcHRpbmdTY29wZShcclxuICAgICAgICBmb3JtTW9kZWwuc2l0dWF0aW9uLFxyXG4gICAgICAgIHRoaXMub25TY3JpcHRpbmdNb2RlbENoYW5nZWQsXHJcbiAgICAgICAgdGhpcy5wbHVnaW5TZXJ2aWNlLmdldEFwaSgpLFxyXG4gICAgICAgIHRoaXMuaXNJbm5lclRhYmxlRm9ybVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnNjcmlwdGluZ1Njb3BlLm9iamVjdElkID0gdGhpcy5mb3JtT3B0aW9ucy5vYmplY3RJZDtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgZm9ybSA9IG5ldyBPYmplY3RGb3JtR3JvdXAoe30pO1xyXG4gICAgaWYgKGZvcm1Nb2RlbC5lbGVtZW50c1swXSAmJiBmb3JtTW9kZWwuZWxlbWVudHNbMF0uZWxlbWVudHMpIHtcclxuICAgICAgdGhpcy5hZGRGb3JtQ29udHJvbChmb3JtLCBmb3JtTW9kZWwuZWxlbWVudHNbMF0sICdjb3JlJyk7XHJcbiAgICB9XHJcbiAgICBpZiAoZm9ybU1vZGVsLmVsZW1lbnRzWzFdICYmIGZvcm1Nb2RlbC5lbGVtZW50c1sxXS5lbGVtZW50cykge1xyXG4gICAgICB0aGlzLmFkZEZvcm1Db250cm9sKGZvcm0sIGZvcm1Nb2RlbC5lbGVtZW50c1sxXSwgJ2RhdGEnKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZvcm0gPSBmb3JtO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuZm9ybSkgcmV0dXJuO1xyXG5cclxuICAgICAgdGhpcy5pbml0VmFsaWRhdG9ycyh0aGlzLmZvcm0pO1xyXG4gICAgICBsZXQgZm9ybVdhdGNoID0gdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSg1MDApKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gIWZvcm1XYXRjaC5jbG9zZWQgJiYgdGhpcy5lbWl0Rm9ybUNoYW5nZWRFdmVudCgpKTtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goZm9ybVdhdGNoKTtcclxuXHJcbiAgICAgIHRoaXMuaW5pdFNjcmlwdGluZ1Njb3BlKGZvcm1PcHRpb25zLCBmb3JtTW9kZWwpO1xyXG5cclxuICAgICAgdGhpcy5vbkZvcm1SZWFkeS5lbWl0KCk7XHJcbiAgICAgIHRoaXMuZW1pdEZvcm1DaGFuZ2VkRXZlbnQoZmFsc2UpO1xyXG4gICAgfSwgMzAwKTtcclxuICB9XHJcblxyXG4gIGluaXRWYWxpZGF0b3JzKGZvcm0pIHtcclxuICAgIGlmICh0aGlzLmZvcm0pIHtcclxuICAgICAgZm9yIChsZXQga2V5IGluIGZvcm0uY29udHJvbHMpIHtcclxuICAgICAgICBjb25zdCBjb250cm9sID0gZm9ybS5jb250cm9sc1trZXldO1xyXG4gICAgICAgIGlmIChjb250cm9sLmNvbnRyb2xzKSB7XHJcbiAgICAgICAgICB0aGlzLmluaXRWYWxpZGF0b3JzKGNvbnRyb2wpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmluaXRpYWxWYWxpZGF0b3JzW2NvbnRyb2wuX2VvRm9ybUVsZW1lbnQubmFtZV0gPSBjb250cm9sLnZhbGlkYXRvcjtcclxuICAgICAgICAgIGNvbnRyb2wuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLmNvbXBvc2UodGhpcy5nZXRWYWxpZGF0b3JzKGNvbnRyb2wuX2VvRm9ybUVsZW1lbnQpLmNvbmNhdChbdGhpcy5pbml0aWFsVmFsaWRhdG9yc1tjb250cm9sLl9lb0Zvcm1FbGVtZW50Lm5hbWVdXSkpKTtcclxuICAgICAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWl0Rm9ybUNoYW5nZWRFdmVudChjb21wYXJlID0gdHJ1ZSkge1xyXG5cclxuICAgIC8vIGNoZWNrIGlmIGluZGV4ZGF0YSBoYXMgYmVlbiBjaGFuZ2VkXHJcbiAgICBsZXQgY3VycmVudEZvcm1EYXRhID0gdGhpcy5nZXRGb3JtRGF0YSgpO1xyXG4gICAgbGV0IGlkeENoYW5nZSA9IGNvbXBhcmUgPyBKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm1EYXRhKSAhPT0gSlNPTi5zdHJpbmdpZnkoY3VycmVudEZvcm1EYXRhKSA6IGZhbHNlO1xyXG4gICAgdGhpcy5mb3JtRGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoY3VycmVudEZvcm1EYXRhKSk7XHJcbiAgICBpZiAodGhpcy5mb3JtKSB7XHJcbiAgICAgIHRoaXMuc3RhdHVzQ2hhbmdlZC5lbWl0KHtcclxuICAgICAgICBpbnZhbGlkOiB0aGlzLmZvcm0uaW52YWxpZCxcclxuICAgICAgICBkaXJ0eTogdGhpcy5mb3JtLmRpcnR5LFxyXG4gICAgICAgIGRhdGE6IHRoaXMuZm9ybURhdGEsXHJcbiAgICAgICAgaW5kZXhkYXRhQ2hhbmdlZDogaWR4Q2hhbmdlXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgZWFjaCB0aW1lIHRoZSBzY3JpcHQgY2hhbmdlcyBpdHMgaW50ZXJuYWwgbW9kZWwuXHJcbiAgICogSXQgaXMgdXNlZCB0byB0cmFuc2ZlciB0aGUgc2NyaXB0IGNoYW5nZXMgdG8gdGhlIGFjdHVhbCBmb3JtIG1vZGVsLlxyXG4gICAqXHJcbiAgICogVG8gZW5zdXJlIHRoZSByaWdodCBjb250ZXh0LCB3ZSBkZWZpbmUgYW4gaW5zdGFuY2UgbWV0aG9kIGFzIGNhbGxiYWNrIGZvciB0aGUgc2NyaXB0aW5nIHNjb3BlXHJcbiAgICogQHNlZTogaHR0cHM6Ly9ibG9nLmpvaG5ueXJlaWxseS5jb20vMjAxNC8wNC90eXBlc2NyaXB0LWluc3RhbmNlLW1ldGhvZHMuaHRtbFxyXG4gICAqXHJcbiAgICogQHBhcmFtIGZvcm1Db250cm9sTmFtZVxyXG4gICAqIEBwYXJhbSBjaGFuZ2VcclxuICAgKi9cclxuICBwcml2YXRlIG9uU2NyaXB0aW5nTW9kZWxDaGFuZ2VkID0gKGZvcm1Db250cm9sTmFtZSwgY2hhbmdlKSA9PiB7XHJcblxyXG4gICAgLy8gZmluZCB0aGUgdGFyZ2V0IGNvbnRyb2xcclxuICAgIGxldCBmYzogT2JqZWN0Rm9ybUNvbnRyb2wgPSB0aGlzLmZvcm1Db250cm9sc1tmb3JtQ29udHJvbE5hbWVdIGFzIE9iamVjdEZvcm1Db250cm9sO1xyXG4gICAgaWYgKGZjKSB7XHJcblxyXG4gICAgICAvLyBjaGFuZ2Ugb25seSBhbGxvd2VkIHByb3BlcnRpZXNcclxuICAgICAgc3dpdGNoIChjaGFuZ2UubmFtZSkge1xyXG4gICAgICAgIGNhc2UgJ3ZhbHVlJzoge1xyXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY2hhbmdlLm5ld1ZhbHVlKSkge1xyXG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NBcnJheVZhbHVlQ2hhbmdlKGZjLCBjaGFuZ2UpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZmMuX2VvRm9ybUVsZW1lbnQudmFsdWUgPSBjaGFuZ2UubmV3VmFsdWU7XHJcbiAgICAgICAgICAgIGlmIChmYy52YWx1ZSAhPT0gY2hhbmdlLm5ld1ZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgZmMucGF0Y2hWYWx1ZShjaGFuZ2UubmV3VmFsdWUpO1xyXG4gICAgICAgICAgICAgIGZjLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAgICAgICBmYy5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmZvcm0ubWFya0FzRGlydHkoKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdyZXF1aXJlZCc6IHtcclxuICAgICAgICAgIGlmIChmYy5fZW9Gb3JtRWxlbWVudC5yZXF1aXJlZCAhPT0gY2hhbmdlLm5ld1ZhbHVlKSB7XHJcbiAgICAgICAgICAgIGZjLl9lb0Zvcm1FbGVtZW50LnJlcXVpcmVkID0gY2hhbmdlLm5ld1ZhbHVlO1xyXG4gICAgICAgICAgICAvLyBhcHBseSBuZXcgdmFsaWRhdG9yc1xyXG4gICAgICAgICAgICAvLyBAc2VlOiBodHRwczovL3Njb3RjaC5pby90dXRvcmlhbHMvaG93LXRvLWltcGxlbWVudC1jb25kaXRpb25hbC12YWxpZGF0aW9uLWluLWFuZ3VsYXItMi1tb2RlbC1kcml2ZW4tZm9ybXNcclxuICAgICAgICAgICAgZmMuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLmNvbXBvc2UodGhpcy5nZXRWYWxpZGF0b3JzKGZjLl9lb0Zvcm1FbGVtZW50KS5jb25jYXQoW3RoaXMuaW5pdGlhbFZhbGlkYXRvcnNbZmMuX2VvRm9ybUVsZW1lbnQubmFtZV1dKSkpO1xyXG4gICAgICAgICAgICAvLyBuZWVkIHRvIG1hcmsgZm9ybSBjb250cm9sIGFzIHRvdWNoZWQgYmVjYXVzZSBvdGhlcndpc2UgZm9ybSB2YWxpZGF0aW9uIHdpbGwgbm90IHNob3dcclxuICAgICAgICAgICAgLy8gZXJyb3IgbWVzc2FnZXNcclxuICAgICAgICAgICAgZmMubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICAgICAgICBmYy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAncmVhZG9ubHknOiB7XHJcbiAgICAgICAgICBmYy5fZW9Gb3JtRWxlbWVudC5yZWFkb25seSA9IGNoYW5nZS5uZXdWYWx1ZTtcclxuICAgICAgICAgIGlmIChjaGFuZ2UubmV3VmFsdWUgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgZmMuZGlzYWJsZSgpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZmMuZW5hYmxlKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnZXJyb3InOiB7XHJcbiAgICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkoZmMuX2VvRm9ybUVsZW1lbnQuZXJyb3IpICE9PSBKU09OLnN0cmluZ2lmeShjaGFuZ2UubmV3VmFsdWUpKSB7XHJcbiAgICAgICAgICAgIGZjLl9lb0Zvcm1FbGVtZW50LmVycm9yID0gY2hhbmdlLm5ld1ZhbHVlO1xyXG4gICAgICAgICAgICBmYy5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgICAgIGZjLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBuZXcgb25yb3dlZGl0IGZ1bmN0aW9uIHdhcyBhcHBsaWVkIGJ5IHRoZSBzY3JpcHRcclxuICAgICAgICBjYXNlICdvbnJvd2VkaXQnOiB7XHJcbiAgICAgICAgICBmYy5fZW9Gb3JtRWxlbWVudC5vbnJvd2VkaXQgPSBjaGFuZ2UubmV3VmFsdWU7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gbmV3IG9uY2hhbmdlIGZ1bmN0aW9uIHdhcyBhcHBsaWVkIGJ5IHRoZSBzY3JpcHRcclxuICAgICAgICBjYXNlICdvbmNoYW5nZSc6IHtcclxuICAgICAgICAgIGZjLl9lb0Zvcm1FbGVtZW50Lm9uY2hhbmdlID0gY2hhbmdlLm5ld1ZhbHVlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIG5ldyBjb250ZXh0SWQgd2FzIGFwcGxpZWQgYnkgdGhlIHNjcmlwdFxyXG4gICAgICAgIGNhc2UgJ2NvbnRleHRJZCc6IHtcclxuICAgICAgICAgIGZjLl9lb0Zvcm1FbGVtZW50LmNvbnRleHRJZCA9IGNoYW5nZS5uZXdWYWx1ZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwcm9jZXNzQXJyYXlWYWx1ZUNoYW5nZShmYywgY2hhbmdlKSB7XHJcbiAgICBjb25zdCBuZXdWYWwgPSBjaGFuZ2UubmV3VmFsdWU7XHJcbiAgICBjb25zdCB0YXJnZXRUeXBlID0gZmMuX2VvRm9ybUVsZW1lbnQudHlwZTtcclxuICAgIC8vIGZvciBzb21lIHR5cGVzIHdlIGhhdmUgdG8gZW5zdXJlIHRoYXQgbWV0YSBkYXRhIGFyZSBwcm92aWRlZCBhcyB3ZWxsXHJcbiAgICBzd2l0Y2ggKHRhcmdldFR5cGUpIHtcclxuICAgICAgY2FzZSAnT1JHQU5JWkFUSU9OJzoge1xyXG4gICAgICAgIHRoaXMuZ2V0RGF0YU1ldGEoZmMuX2VvRm9ybUVsZW1lbnQsIG5ld1ZhbCkuc3Vic2NyaWJlKG0gPT4ge1xyXG4gICAgICAgICAgZmMuX2VvRm9ybUVsZW1lbnQuZGF0YU1ldGEgPSBtO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0NPREVTWVNURU0nOiB7XHJcbiAgICAgICAgaWYgKCFmYy5fZW9Gb3JtRWxlbWVudC5jb2Rlc3lzdGVtLmVudHJpZXMpIHtcclxuICAgICAgICAgIGZjLl9lb0Zvcm1FbGVtZW50LmNvZGVzeXN0ZW0gPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0Q29kZXN5c3RlbShmYy5fZW9Gb3JtRWxlbWVudC5jb2Rlc3lzdGVtLmlkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnVEFCTEUnOiB7XHJcbiAgICAgICAgY29uc3QgZGF0YVRvQmVQcm9jZXNzZWQgPSB7fTtcclxuICAgICAgICBmYy5fZW9Gb3JtRWxlbWVudC5lbGVtZW50cy5mb3JFYWNoKGUgPT4ge1xyXG4gICAgICAgICAgaWYgKGUudHlwZSA9PT0gJ09SR0FOSVpBVElPTicgfHwgZS50eXBlID09PSAnQ09ERVNZU1RFTScpIHtcclxuICAgICAgICAgICAgZGF0YVRvQmVQcm9jZXNzZWRbZS5uYW1lXSA9IGU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKGRhdGFUb0JlUHJvY2Vzc2VkKS5sZW5ndGgpIHtcclxuICAgICAgICAgIGxldCBvYnMgPSBbXTtcclxuICAgICAgICAgIG5ld1ZhbC5mb3JFYWNoKHJvd0RhdGEgPT4ge1xyXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhyb3dEYXRhKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGRhdGFUb0JlUHJvY2Vzc2VkW2tleV0pIHtcclxuICAgICAgICAgICAgICAgIG9icy5wdXNoKHRoaXMuZ2V0RGF0YU1ldGEoZGF0YVRvQmVQcm9jZXNzZWRba2V5XSwgcm93RGF0YVtrZXldKS5waXBlKFxyXG4gICAgICAgICAgICAgICAgICB0YXAobSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHJvd0RhdGFba2V5ICsgJ19tZXRhJ10gPSBtO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgcm93RGF0YVtrZXkgKyAnX21ldGEnXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICApKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBmb3JrSm9pbihvYnMpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnVwZGF0ZUFycmF5VmFsdWUoZmMsIG5ld1ZhbCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy51cGRhdGVBcnJheVZhbHVlKGZjLCBuZXdWYWwpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVBcnJheVZhbHVlKGZjLCBuZXdWYWx1ZSkge1xyXG4gICAgZmMuX2VvRm9ybUVsZW1lbnQudmFsdWUgPSBbXS5jb25jYXQobmV3VmFsdWUpO1xyXG4gICAgZmMucGF0Y2hWYWx1ZShbXS5jb25jYXQobmV3VmFsdWUpKTtcclxuICAgIGZjLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIGZjLm1hcmtBc0RpcnR5KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldERhdGFNZXRhKGZvcm1FbGVtZW50OiBhbnksIG5ld1ZhbHVlOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cclxuICAgIGlmIChuZXdWYWx1ZSkge1xyXG4gICAgICBzd2l0Y2ggKGZvcm1FbGVtZW50LnR5cGUpIHtcclxuICAgICAgICBjYXNlICdPUkdBTklaQVRJT04nOiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldE9yZ2FuaXphdGlvbk9iamVjdChuZXdWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ1JFRkVSRU5DRSc6IHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZVNlcnZpY2UuZmV0Y2hJRFJlZmVyZW5jZU1ldGFEYXRhKEFycmF5LmlzQXJyYXkobmV3VmFsdWUpID8gbmV3VmFsdWUgOiBbbmV3VmFsdWVdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnQ09ERVNZU1RFTSc6IHtcclxuICAgICAgICAgIHJldHVybiBvYnNlcnZhYmxlT2YodGhpcy5zeXN0ZW1TZXJ2aWNlLmdldENvZGVzeXN0ZW0oZm9ybUVsZW1lbnQuY29kZXN5c3RlbS5pZCkuZW50cmllcy5maW5kKChlbnRyeSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gZW50cnkuZGVmYXVsdHJlcHJlc2VudGF0aW9uID09PSBuZXdWYWx1ZTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBvYnNlcnZhYmxlT2YobnVsbCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZWN1cnNpdmUgbWV0aG9kIGFkZGluZyBhIG5ldyBGb3JtQ29udHJvbCAoZ3JvdXAgb3IgY29udHJvbCkgdG8gYSBwYXJlbnQgZm9ybSBncm91cFxyXG4gICAqXHJcbiAgICogQHBhcmFtIHBhcmVudEdyb3VwIC0gdGhlIHBhcmVudCBncm91cCB0byBhZGQgdGhlIGNvbnRyb2wgdG9cclxuICAgKiBAcGFyYW0gZm9ybUVsZW1lbnQgLSB0aGUgZW5haW8gZm9ybSBtb2RlbCBlbGVtZW50IHRvIGNyZWF0ZSB0aGUgY2hpbGQgY29udHJvbCBmcm9tXHJcbiAgICogQHBhcmFtIFt1c2VOYW1lXSAtIHVzZSB0aGlzIG5hbWUgaW5zdGVhZCBvZiB0aGUgb25lIGZyb20gdGhlIG1vZGVsXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhZGRGb3JtQ29udHJvbChwYXJlbnRHcm91cDogT2JqZWN0Rm9ybUdyb3VwLCBmb3JtRWxlbWVudDogYW55LCB1c2VOYW1lPzogc3RyaW5nKSB7XHJcblxyXG4gICAgbGV0IGN0cmw7XHJcbiAgICBsZXQgbmFtZTtcclxuXHJcbiAgICAvLyBhZGQgYSBmb3JtIGdyb3VwXHJcbiAgICBpZiAoZm9ybUVsZW1lbnQudHlwZSA9PT0gJ28ybUdyb3VwJyB8fCBmb3JtRWxlbWVudC50eXBlID09PSAnbzJtR3JvdXBTdGFjaycpIHtcclxuXHJcbiAgICAgIC8vIGRvIG5vdCBhZGQgZ3JvdXBzIHRoYXQgYXJlIGVtcHR5XHJcbiAgICAgIGlmICghZm9ybUVsZW1lbnQuZWxlbWVudHMgfHwgZm9ybUVsZW1lbnQuZWxlbWVudHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0ZvdW5kIGVtcHR5IGZvcm0gZ3JvdXAnLCBmb3JtRWxlbWVudCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjdHJsID0gbmV3IE9iamVjdEZvcm1Hcm91cCh7fSk7XHJcbiAgICAgIGN0cmwuX2VvRm9ybUdyb3VwID0ge1xyXG4gICAgICAgIGxhYmVsOiBmb3JtRWxlbWVudC5sYWJlbCxcclxuICAgICAgICAvL2xheW91dGdyb3VwOiBmb3JtRWxlbWVudC5sYXlvdXRncm91cCxcclxuICAgICAgICBsYXlvdXQ6IGZvcm1FbGVtZW50LmxheW91dCxcclxuICAgICAgICB0eXBlOiBmb3JtRWxlbWVudC50eXBlXHJcbiAgICAgIH07XHJcblxyXG4gICAgICBpZiAodXNlTmFtZSA9PT0gJ2NvcmUnIHx8IHVzZU5hbWUgPT09ICdkYXRhJykge1xyXG4gICAgICAgIGN0cmwuX2VvRm9ybUdyb3VwLmxhYmVsID0gdXNlTmFtZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZm9yIChsZXQgZSBvZiBmb3JtRWxlbWVudC5lbGVtZW50cykge1xyXG4gICAgICAgIHRoaXMuYWRkRm9ybUNvbnRyb2woY3RybCwgZSk7XHJcbiAgICAgIH1cclxuICAgICAgbmFtZSA9IHVzZU5hbWUgfHwgJ2ZnJyArIHRoaXMuZ0NvdW50Kys7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBhZGQgZm9ybSBjb250cm9sXHJcbiAgICAgIC8vIFRvIGJlIGFibGUgdG8gaW50ZWdyYXRlIHJlY3Vyc2l2ZSBmb3JtIGNvbnRyb2xzIGludG8gdGhlIG1haW4gZm9ybSxcclxuICAgICAgLy8gd2UgaGF2ZSB0byB3cmFwIHRoZW0gaW4gYSBmb3JtIGdyb3VwXHJcbiAgICAgIGN0cmwgPSBuZXcgT2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyKHt9KTtcclxuICAgICAgY3RybC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIgPSB7XHJcbiAgICAgICAgLy8gdGhlIG5hbWUgb2YgdGhlIHdyYXBwZWQgRm9ybUNvbnRyb2xcclxuICAgICAgICBjb250cm9sTmFtZTogZm9ybUVsZW1lbnQubmFtZSxcclxuICAgICAgICBzaXR1YXRpb246IHRoaXMuZm9ybU9wdGlvbnMuZm9ybU1vZGVsLnNpdHVhdGlvblxyXG4gICAgICB9O1xyXG4gICAgICBpZiAodGhpcy5mb3JtT3B0aW9ucy5mb3JtTW9kZWwuc2l0dWF0aW9uID09PSAnU0VBUkNIJyAmJiBmb3JtRWxlbWVudC52YWx1ZSA9PT0gbnVsbCkge1xyXG4gICAgICAgIGZvcm1FbGVtZW50LmlzTm90U2V0VmFsdWUgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIGRvIG5vdCBzZXQgYSByZWZlcmVuY2UgYXMgdGhlIGZvcm0gY29udHJvbHMgdmFsdWVcclxuICAgICAgLy8gb3RoZXJ3aXNlIHdlIGNvdWxkIG5vdCByZXNldCB0aGUgZm9ybVxyXG4gICAgICBsZXQgdmFsdWU6IGFueTtcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZm9ybUVsZW1lbnQudmFsdWUpKSB7XHJcbiAgICAgICAgLy8gY29weSBieSB2YWx1ZSBmb3IgYXJyYXlzIG9mIG9iamVjdHMgKGUuZy4gdGFibGUgZGF0YSlcclxuICAgICAgICB2YWx1ZSA9IFtdO1xyXG4gICAgICAgIGZvcm1FbGVtZW50LnZhbHVlLmZvckVhY2goKG8pID0+IHtcclxuICAgICAgICAgIHZhbHVlLnB1c2goSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvKSkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZhbHVlID0gZm9ybUVsZW1lbnQudmFsdWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIGZvciBjb2Rlc3lzdGVtIGVsZW1lbnRzIGFkZCBlbnRyaWVzIGlmIG5vdCB5ZXQgcHJvdmlkZWRcclxuICAgICAgaWYgKGZvcm1FbGVtZW50LnR5cGUgPT09ICdDT0RFU1lTVEVNJyAmJiAhZm9ybUVsZW1lbnQuY29kZXN5c3RlbS5lbnRyaWVzKSB7XHJcbiAgICAgICAgZm9ybUVsZW1lbnQuY29kZXN5c3RlbSA9IHRoaXMuc3lzdGVtU2VydmljZS5nZXRDb2Rlc3lzdGVtKGZvcm1FbGVtZW50LmNvZGVzeXN0ZW0uaWQpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBjcmVhdGUgdGhlIGFjdHVhbCBmb3JtIGNvbnRyb2xcclxuICAgICAgbGV0IGNvbnRyb2xEaXNhYmxlZCA9IHRoaXMuZm9ybU9wdGlvbnMuZGlzYWJsZWQgfHwgISFmb3JtRWxlbWVudC5yZWFkb25seTtcclxuICAgICAgbGV0IGZvcm1Db250cm9sID0gbmV3IE9iamVjdEZvcm1Db250cm9sKHtcclxuICAgICAgICB2YWx1ZTogdmFsdWUsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGNvbnRyb2xEaXNhYmxlZFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGZvcm1FbGVtZW50LnJlYWRvbmx5ID0gY29udHJvbERpc2FibGVkO1xyXG5cclxuICAgICAgZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQgPSBmb3JtRWxlbWVudDtcclxuICAgICAgdGhpcy5mb3JtQ29udHJvbHNbZm9ybUVsZW1lbnQubmFtZV0gPSBmb3JtQ29udHJvbDtcclxuXHJcbiAgICAgIGlmIChmb3JtRWxlbWVudC50eXBlID09PSAnQ09ERVNZU1RFTScgfHwgKGZvcm1FbGVtZW50LnR5cGUgPT09ICdTVFJJTkcnICYmIGZvcm1FbGVtZW50LmNsYXNzaWZpY2F0aW9uID09PSAnc2VsZWN0b3InKSkge1xyXG4gICAgICAgIGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50LmFwcGx5RmlsdGVyID0gKGZ1bmM6IEZ1bmN0aW9uKSA9PiB7XHJcbiAgICAgICAgICBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC5maWx0ZXJGdW5jdGlvbiA9IGZ1bmM7XHJcbiAgICAgICAgfTtcclxuICAgICAgICBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC5hcHBseURpc2FibGluZ0ZpbHRlciA9IChmdW5jOiBGdW5jdGlvbikgPT4ge1xyXG4gICAgICAgICAgZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQuZGlzYWJsaW5nRmlsdGVyRnVuY3Rpb24gPSBmdW5jO1xyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChmb3JtRWxlbWVudC50eXBlID09PSAnU1RSSU5HJyAmJiBmb3JtRWxlbWVudC5jbGFzc2lmaWNhdGlvbiA9PT0gJ3NlbGVjdG9yJykge1xyXG4gICAgICAgIGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50LnNldExpc3QgPSAobGlzdE9iamVjdDogYW55KSA9PiB7XHJcbiAgICAgICAgICBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC5saXN0ID0gbGlzdE9iamVjdDtcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoZm9ybUVsZW1lbnQudHlwZSA9PT0gJ09SR0FOSVpBVElPTicpIHtcclxuICAgICAgICBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC5zZXRGaWx0ZXIgPSAoZmlsdGVyT2JqZWN0OiBhbnkpID0+IHtcclxuICAgICAgICAgIGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50LmZpbHRlciA9IGZpbHRlck9iamVjdDtcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoZm9ybUVsZW1lbnQudHlwZSA9PT0gJ1JFRkVSRU5DRScpIHtcclxuICAgICAgICBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC5zZXRRdWVyeUZpbHRlcnMgPSAocXVlcnlGaWx0ZXJzT2JqZWN0OiB7W2ZpZWxkUW5hbWU6IHN0cmluZ106IHtvOiBzdHJpbmcsIHYxOiBhbnksIHYyOiBhbnl9fSkgPT4ge1xyXG4gICAgICAgICAgZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQucXVlcnlGaWx0ZXJzID0gcXVlcnlGaWx0ZXJzT2JqZWN0O1xyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLmZvcm1PcHRpb25zLmZvcm1Nb2RlbC5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XHJcbiAgICAgICAgLy8gaW4gc2VhcmNoIHNpdHVhdGlvbiBldmVuIHJlYWRvbmx5IGZpZWxkcyBzaG91bGQgYmUgZWRpdGFibGUgLi4uXHJcbiAgICAgICAgZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHkgPSBmYWxzZTtcclxuICAgICAgICAvLyAuLi4gYW5kIHJlcXVpcmVkIG1ha2VzIG5vIHNlbnNlIGhlcmVcclxuICAgICAgICBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC5yZXF1aXJlZCA9IGZhbHNlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyByZW1vdmUgZW1wdHkgZGVzY3JpcHRpb25zXHJcbiAgICAgIGxldCBkZXNjID0gZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQuZGVzY3JpcHRpb247XHJcbiAgICAgIGlmIChkZXNjICYmIGRlc2MudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50LmRlc2NyaXB0aW9uID0gbnVsbDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gYWRkIHRoZSBmb3JtIGVsZW1lbnQgdG8gdGhlIHNjcmlwdCBtb2RlbCB0aGF0IHdpbGwgYmUgaW5qZWN0ZWQgaW50b1xyXG4gICAgICAvLyB0aGUgZm9ybXMgc2NyaXB0aW5nIHNjb3BlIGxhdGVyIG9uXHJcbiAgICAgIHRoaXMuc2NyaXB0TW9kZWxbZm9ybUVsZW1lbnQubmFtZV0gPSBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudDtcclxuXHJcbiAgICAgIC8vIGFwcGx5IGNoYW5nZSBsaXN0ZW5lciB0byB0aGUgZm9ybSBjb250cm9sLCB0aGF0IHdpbGwgdHJpZ2dlclxyXG4gICAgICAvLyB0aGUgZm9ybSBlbGVtZW50cyBvbkNoYW5nZSBsaXN0ZW5lclxyXG4gICAgICBsZXQgY29udHJvbFdhdGNoID0gY3RybC52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUoZm9ybUVsZW1lbnQudHlwZSA9PT0gJ1RBQkxFJyA/IDAgOiA1MDApKTtcclxuICAgICAgY29udHJvbFdhdGNoLnN1YnNjcmliZSgodikgPT4ge1xyXG4gICAgICAgIGlmIChmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC50eXBlID09PSAnUkVGRVJFTkNFJykge1xyXG4gICAgICAgICAgdGhpcy5nZXREYXRhTWV0YShmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudCwgdltmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC5uYW1lXSkuc3Vic2NyaWJlKG0gPT4ge1xyXG4gICAgICAgICAgICBpZiAobSkge1xyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50LmRhdGFNZXRhID0gZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQubXVsdGlzZWxlY3QgPyBtIDogbVswXTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBkZWxldGUgZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQuZGF0YU1ldGE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5zY3JpcHRpbmdTY29wZSkge1xyXG4gICAgICAgICAgdGhpcy5zY3JpcHRpbmdTY29wZS5tb2RlbENoYW5nZWQodik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goY29udHJvbFdhdGNoKTtcclxuXHJcbiAgICAgIGN0cmwuYWRkQ29udHJvbChmb3JtRWxlbWVudC5uYW1lLCBmb3JtQ29udHJvbCk7XHJcbiAgICAgIG5hbWUgPSAnZmdfJyArIGZvcm1FbGVtZW50Lm5hbWU7XHJcbiAgICB9XHJcbiAgICBwYXJlbnRHcm91cC5hZGRDb250cm9sKG5hbWUsIGN0cmwpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQnVpbGQgdmFsaWRhdG9ycyBmb3IgdGhlIGdpdmVuIGZvcm0gZWxlbWVudCB0byBiZSBhdHRhY2hlZCB0b1xyXG4gICAqIGEgcmVhY3RpdmUgZm9ybUNvbnRyb2wuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gZm9ybUVsZW1lbnQgLSBmb3JtIGVsZW1lbnQgb2JqZWN0XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRWYWxpZGF0b3JzKGZvcm1FbGVtZW50OiBhbnkpOiBWYWxpZGF0b3JGbltdIHtcclxuICAgIGxldCBlbG1WYWxpZGF0b3JzID0gRm9ybVZhbGlkYXRpb24uZ2V0VmFsaWRhdG9ycyhmb3JtRWxlbWVudCwgdGhpcy5mb3JtT3B0aW9ucy5mb3JtTW9kZWwuc2l0dWF0aW9uKTtcclxuXHJcbiAgICAvLyBhZGQgY3VzdG9tIHZhbGlkYXRvciBmb3Igc2NyaXB0IGVuYWJsZWQgZm9ybXNcclxuICAgIGlmICh0aGlzLnNjcmlwdGluZ1Njb3BlKSB7XHJcbiAgICAgIGVsbVZhbGlkYXRvcnMucHVzaChGb3JtVmFsaWRhdGlvbi5jdXN0b21TY3JpcHRpbmdWYWxpZGF0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZWxtVmFsaWRhdG9ycztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEV4dHJhY3QgdGhlIHZhbHVlcyBmcm9tIHRoZSBmb3JtXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBmb3JtVG9EYXRhKCkge1xyXG5cclxuICAgIHJldHVybiB0aGlzLmZvcm1IZWxwZXJTZXJ2aWNlLmV4dHJhY3RGb3JtRGF0YShcclxuICAgICAgdGhpcy5mb3JtLFxyXG4gICAgICB0aGlzLmZvcm1PcHRpb25zLmZvcm1Nb2RlbC5zaXR1YXRpb24sXHJcbiAgICAgIHRoaXMuZm9ybU9wdGlvbnMuZGF0YSxcclxuICAgICAgdGhpcy5pc0lubmVyVGFibGVGb3JtXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWVyZ2UgZGF0YSBpbnRvIGEgZm9ybSBtb2RlbC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBtb2RlbCAtIGZvcm0gbW9kZWxcclxuICAgKiBAcGFyYW0gZGF0YSAtIGRhdGEgb2JqZWN0IG9yIGFycmF5IG9mIFNlYXJjaEZpbHRlciBvYmplY3RzIGluIGNhc2Ugb2YgYSBzZWFyY2ggZm9ybVxyXG4gICAqL1xyXG4gIHByaXZhdGUgZGF0YVRvRm9ybShtb2RlbDogYW55LCBkYXRhOiBhbnkpIHtcclxuICAgIGlmIChtb2RlbCAmJiBkYXRhKSB7XHJcbiAgICAgIHRoaXMuc2V0RWxlbWVudFZhbHVlcyhtb2RlbC5lbGVtZW50cywgZGF0YSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbW9kZWw7XHJcbiAgfVxyXG5cclxuICAvLyByZWN1cnNpdmUgbWV0aG9kIGZvciBhZGRpbmcgdmFsdWVzIHRvIG1vZGVsIGVsZW1lbnRzXHJcbiAgcHJpdmF0ZSBzZXRFbGVtZW50VmFsdWVzKGVsZW1lbnRzLCBkYXRhKSB7XHJcblxyXG4gICAgZWxlbWVudHMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgaWYgKHRoaXMuaGFzVmFsdWUoZGF0YSwgZWxlbWVudCkpIHtcclxuXHJcbiAgICAgICAgZWxlbWVudC52YWx1ZSA9IHRoaXMuZ2V0VmFsdWUoZGF0YSwgZWxlbWVudCk7XHJcbiAgICAgICAgaWYgKGVsZW1lbnQudmFsdWUpIHtcclxuICAgICAgICAgIC8vIGFkZCBtZXRhIGRhdGEgZm9yIHNvbWUgb2YgdGhlIHR5cGVzXHJcbiAgICAgICAgICB0aGlzLmZldGNoTWV0YURhdGEoZGF0YSwgZWxlbWVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGRlbGV0ZSBlbGVtZW50LnZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChlbGVtZW50LnR5cGUgIT09ICdUQUJMRScgJiYgZWxlbWVudC5lbGVtZW50cyAmJiBlbGVtZW50LmVsZW1lbnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLnNldEVsZW1lbnRWYWx1ZXMoZWxlbWVudC5lbGVtZW50cywgZGF0YSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gaW4gc29tZSBjYXNlcyByZXF1aXJlZCBtZXRhIGRhdGEgbWF5IG5vdCBiZSBhdmFpbGFibGUgb24gdGhlIGVsZW1lbnQgaXRzZWxmXHJcbiAgLy8gc28gdGhleSBoYXZlIHRvIGJlIGZldGNoZWQgYW5kIGFkZGVkIHRvIHRoZSBlbGVtZW50IGZvciB0aGUgZm9ybSB0byBiZSBhYmxlXHJcbiAgLy8gdG8gcmVuZGVyIHRoZSBlbGVtZW50IGNvcnJlY3RseVxyXG4gIHByaXZhdGUgZmV0Y2hNZXRhRGF0YShkYXRhLCBlbGVtZW50KSB7XHJcblxyXG4gICAgaWYgKHRoaXMuZm9ybU9wdGlvbnMuZm9ybU1vZGVsLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcclxuICAgICAgLy8gdG9kbzogaG93IHRvIGZldGNoIG1ldGEgZGF0YSBpbiBzZWFyY2ggc2l0dWF0aW9uXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoZWxlbWVudC50eXBlID09PSAnT1JHQU5JWkFUSU9OJyAmJiBkYXRhW2VsZW1lbnQubmFtZSArICdfbWV0YSddKSB7XHJcbiAgICAgICAgZWxlbWVudC5kYXRhTWV0YSA9IGRhdGFbZWxlbWVudC5uYW1lICsgJ19tZXRhJ107XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC50eXBlID09PSAnQ09ERVNZU1RFTScgJiYgZGF0YVtlbGVtZW50Lm5hbWUgKyAnX21ldGEnXSkge1xyXG4gICAgICAgIGVsZW1lbnQuZGF0YU1ldGEgPSBkYXRhW2VsZW1lbnQubmFtZSArICdfbWV0YSddO1xyXG4gICAgICAgIGVsZW1lbnQuZGVmYXVsdHJlcHJlc2VudGF0aW9uID0gZGF0YVtlbGVtZW50Lm5hbWUgKyAnX21ldGEnXS5kZWZhdWx0cmVwcmVzZW50YXRpb247XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC50eXBlID09PSAnUkVGRVJFTkNFJyAmJiBkYXRhW2VsZW1lbnQubmFtZSArICdfbWV0YSddKSB7XHJcbiAgICAgICAgZWxlbWVudC5kYXRhTWV0YSA9IGRhdGFbZWxlbWVudC5uYW1lICsgJ19tZXRhJ107XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFzVmFsdWUoZGF0YSwgZWxlbWVudCkge1xyXG5cclxuICAgIC8vIGRpZmZlciBiZXR3ZWVuIGFycmF5IG9mIFNlYXJjaEZpbHRlcnMgYW5kIGEgZm9ybSBkYXRhIG9iamVjdFxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcclxuICAgICAgaWYgKGVsZW1lbnQudHlwZSA9PT0gJ1RBQkxFJykge1xyXG4gICAgICAgIHJldHVybiAhIShkYXRhLmZpbmQoKGZpbHRlcikgPT4gZmlsdGVyLnByb3BlcnR5LnN0YXJ0c1dpdGgoZWxlbWVudC5xbmFtZSkpKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gISEoZGF0YS5maW5kKChmaWx0ZXIpID0+IGZpbHRlci5wcm9wZXJ0eSA9PT0gZWxlbWVudC5xbmFtZSkpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZGF0YS5oYXNPd25Qcm9wZXJ0eShlbGVtZW50Lm5hbWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRUYWJsZUZpbHRlcnMoZmlsdGVyczogU2VhcmNoRmlsdGVyW10sIHByb3BlcnR5TmFtZTogc3RyaW5nKTogU2VhcmNoRmlsdGVyW10ge1xyXG4gICAgcmV0dXJuIGZpbHRlcnMuZmlsdGVyKGYgPT4gZi5wcm9wZXJ0eS5zdGFydHNXaXRoKHByb3BlcnR5TmFtZSArICcuJykpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRWYWx1ZShkYXRhLCBlbGVtZW50KSB7XHJcblxyXG4gICAgbGV0IHZhbHVlO1xyXG4gICAgaWYgKHRoaXMuZm9ybU9wdGlvbnMuZm9ybU1vZGVsLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcclxuICAgICAgaWYgKHRoaXMuaXNJbm5lclRhYmxlRm9ybSkge1xyXG4gICAgICAgIGlmIChlbGVtZW50LnR5cGUgPT09ICdEQVRFVElNRScgfHwgZWxlbWVudC50eXBlID09PSAnTlVNQkVSJykge1xyXG4gICAgICAgICAgdmFsdWUgPSBTZWFyY2hTZXJ2aWNlLnRvUmFuZ2VWYWx1ZShkYXRhW2VsZW1lbnQubmFtZV0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IGRhdGFbZWxlbWVudC5uYW1lXTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC50eXBlID09PSAnVEFCTEUnKSB7XHJcbiAgICAgICAgdmFsdWUgPSB0aGlzLnNlYXJjaFNlcnZpY2UudGFibGVGaWx0ZXJzVG9FbGVtZW50VmFsdWUodGhpcy5nZXRUYWJsZUZpbHRlcnMoZGF0YSwgZWxlbWVudC5xbmFtZSksIGVsZW1lbnQuZWxlbWVudHMpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGZpbHRlciA9IGRhdGEuZmluZChmID0+IGYucHJvcGVydHkgPT09IGVsZW1lbnQucW5hbWUpO1xyXG4gICAgICAgIHZhbHVlID0gdGhpcy5zZWFyY2hTZXJ2aWNlLmZpbHRlclRvRWxlbWVudFZhbHVlKGZpbHRlciwgZWxlbWVudC50eXBlKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuXHJcbiAgICAgIGlmIChlbGVtZW50LnR5cGUgPT09ICdEQVRFVElNRScgJiYgZGF0YVtlbGVtZW50Lm5hbWVdKSB7XHJcbiAgICAgICAgdmFsdWUgPSBuZXcgRGF0ZShgJHtkYXRhW2VsZW1lbnQubmFtZV19JHtlbGVtZW50LndpdGh0aW1lID8gJycgOiAnVDAwOjAwOjAwJ31gKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB2YWx1ZSA9IGRhdGFbZWxlbWVudC5uYW1lXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlQWxsKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIC8vIHVuc3Vic2NyaWJlIGZyb20gYWxsIHZhbHVlIGNoYW5nZSBsaXN0ZW5lcnMgZm9yIHRoZSBjdXJyZW50IGZvcm1cclxuICAvLyB0byBhdm9pZCBtZW1vcnkgbGVha3MuIFRoaXMgbWV0aG9kIHdpbGwgYWxzbyBiZSBjYWxsZWQgZXZlcnkgdGltZVxyXG4gIC8vIGEgbmV3IGZvcm0gaXMgcmVuZGVyZWQgdG8gZ2V0IHJpZCBvZiB0aGUgb2xkIGZvcm0gZWxlbWVudCBzdWJzY3JpcHRpb25zXHJcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZUFsbCgpIHtcclxuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCd1bnN1YnNjcmliZWQgZnJvbSAnICsgdGhpcy5zdWJzY3JpcHRpb25zLmxlbmd0aCArICcgdmFsdWUgY2hhbmdlIGxpc3RlbmVycy4nKTtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBbXTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
|
@@ -7,12 +7,12 @@ export class ProcessHistoryComponent {
|
|
|
7
7
|
ProcessHistoryComponent.decorators = [
|
|
8
8
|
{ type: Component, args: [{
|
|
9
9
|
selector: 'eo-process-history',
|
|
10
|
-
template: "<div class=\"process-history\">\r\n\r\n <div class=\"filter\">\r\n <div class=\"input\" [ngClass]=\"{inactive: !history?.length}\">\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_filter.svg'\"></eo-icon>\r\n <input type=\"text\" [ngModelOptions]=\"{standalone: true}\" [(ngModel)]=\"filterterm\">\r\n\r\n </div>\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"filterterm = null\" *ngIf=\"filterterm\"></eo-icon>\r\n </div>\r\n\r\n\r\n <ng-template #empty>\r\n <eo-error-message [emptyState]=\"{icon: 'ic_no-file.svg', text: 'eo.timeline.empty', className: 'history empty'}\"></eo-error-message>\r\n </ng-template>\r\n\r\n\r\n <div class=\"history eo-timeline\" [ngClass]=\"{single: history?.length === 1}\" *ngIf=\"history?.length; else empty\">\r\n\r\n <div class=\"timeline-entry\"\r\n *ngFor=\"let entry of history | historyFilter:filterterm; trackBy: trackByIndex\"\r\n [ngClass]=\"{user: entry.editor, error: entry.type === 'error' || entry?.errorType}\">\r\n\r\n <div class=\"when\">\r\n <div class=\"date\">{{entry.time | localeDate: 'eoShortDate'}}</div>\r\n <div class=\"time\">{{entry.time | localeDate: 'eoShortTime'}}</div>\r\n </div>\r\n <div class=\"marker\">\r\n <img *ngIf=\"entry.editor\"\r\n title=\"{{entry.editor.lastname}}, {{entry.editor.firstname}} ({{entry.editor.name}})\"\r\n [src]=\"entry.data?.image\">\r\n </div>\r\n <div class=\"what\">\r\n <div class=\"title\">{{entry.title}}</div>\r\n\r\n <div class=\"description\" *ngIf=\"entry.data?.periodFireTime && entry.type === 'DEADLINE_START'; else description\">\r\n <div class=\"deadline-fire\">\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_timer.svg'\"></eo-icon>\r\n <span>{{entry.data.periodFireTime | localeDate}}</span>\r\n </div>\r\n </div>\r\n <ng-template #description>\r\n <div class=\"description\">\r\n {{'eo.process.details.history.entry.type.' + entry.type + '.title'|translate}}\r\n </div>\r\n </ng-template>\r\n\r\n <div class=\"meta\" *ngIf=\"entry.performer?.length\">\r\n <span *ngFor=\"let p of entry.performer; trackBy: trackByIndex\">\r\n {{p.label}}\r\n </span>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n",
|
|
10
|
+
template: "<div class=\"process-history\">\r\n\r\n <div class=\"filter\">\r\n <div class=\"input\" [ngClass]=\"{inactive: !history?.length}\">\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_filter.svg'\"></eo-icon>\r\n <input type=\"text\" [ngModelOptions]=\"{standalone: true}\" [(ngModel)]=\"filterterm\">\r\n\r\n </div>\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"filterterm = null\" *ngIf=\"filterterm\"></eo-icon>\r\n </div>\r\n\r\n\r\n <ng-template #empty>\r\n <eo-error-message [emptyState]=\"{icon: 'ic_no-file.svg', text: 'eo.timeline.empty', className: 'history empty'}\"></eo-error-message>\r\n </ng-template>\r\n\r\n\r\n <div class=\"history eo-timeline\" [ngClass]=\"{single: history?.length === 1}\" *ngIf=\"history?.length; else empty\">\r\n\r\n <div class=\"timeline-entry\"\r\n *ngFor=\"let entry of history | historyFilter:filterterm; trackBy: trackByIndex\"\r\n [ngClass]=\"{user: entry.editor, error: entry.type === 'error' || entry?.errorType}\">\r\n\r\n <div class=\"when\">\r\n <div class=\"date\">{{entry.time | localeDate: 'eoShortDate'}}</div>\r\n <div class=\"time\">{{entry.time | localeDate: 'eoShortTime'}}</div>\r\n </div>\r\n <div class=\"marker\">\r\n <img *ngIf=\"entry.editor\"\r\n title=\"{{entry.editor.lastname}}, {{entry.editor.firstname}} ({{entry.editor.name}})\"\r\n [src]=\"entry.data?.image\">\r\n </div>\r\n <div class=\"what\">\r\n <div class=\"title\">{{entry.title}}</div>\r\n\r\n <div class=\"description\" *ngIf=\"entry.data?.periodFireTime && entry.type === 'DEADLINE_START'; else description\">\r\n <div class=\"deadline-fire\">\r\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_timer.svg'\"></eo-icon>\r\n <span>{{entry.data.periodFireTime | localeDate}}</span>\r\n </div>\r\n </div>\r\n <ng-template #description>\r\n <div *ngIf=\"entry.type !== 'USERDEFINED'; else userDefined\" class=\"description\">\r\n {{'eo.process.details.history.entry.type.' + entry.type + '.title'|translate}}\r\n </div>\r\n\r\n <ng-template #userDefined>\r\n <div class=\"description\">\r\n {{entry.description}}\r\n </div>\r\n </ng-template>\r\n </ng-template>\r\n\r\n <div class=\"performer\">\r\n {{entry.editor.lastname}}, {{entry.editor.firstname}} ({{entry.editor.name}})\r\n </div>\r\n\r\n <div class=\"meta\" *ngIf=\"entry.performer?.length\">\r\n <span *ngFor=\"let p of entry.performer; trackBy: trackByIndex\">\r\n {{p.label}}\r\n </span>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n",
|
|
11
11
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
12
|
-
styles: [":host .process-history{display:flex;flex:1;flex-direction:column;height:100%;min-height:0;min-width:0}:host .history{flex:1 1 auto;overflow-y:auto;padding:var(--app-pane-padding)}:host .filter{background-color:var(--panel-background-lightgrey);border-bottom:1px solid var(--main-background);display:flex;flex:1;flex:0 0 auto;flex-direction:row;justify-content:space-between;min-height:0;min-width:0}:host .filter .input{background-color:var(--color-white);border:1px solid var(--main-background);display:flex;flex-flow:row nowrap;margin:calc(var(--app-pane-padding)/2);padding:2px 2px 2px 0}:host .filter .input.inactive{opacity:.5;pointer-events:none}:host .filter .input input{background-color:transparent;border:0}:host .filter .input eo-icon{margin:0 calc(var(--app-pane-padding)/4)}:host .filter .input eo-icon,:host .filter>eo-icon{align-self:center;color:var(--text-color-hint);height:16px;width:16px}:host .filter>eo-icon{box-sizing:content-box;cursor:pointer;flex:0 0 auto;padding:calc(var(--app-pane-padding)/2)}:host .timeline-entry.user img{border:2px solid var(--text-color-hint);border-radius:50%;height:30px;width:30px;z-index:1}:host .timeline-entry.user .marker:before{display:none}:host .timeline-entry .what{padding-bottom:0;width:66%}:host .timeline-entry .what .deadline-fire{align-items:center;display:flex;padding-bottom:4px}:host .timeline-entry .what .description{color:var(--text-color-body)}.deadline-fire :host .timeline-entry .what .description{align-items:center;display:flex;flex-flow:row nowrap}.deadline-fire :host .timeline-entry .what .description eo-icon{color:var(--text-color-hint);height:18px;width:18px}.deadline-fire :host .timeline-entry .what .description span{padding:0 calc(var(--app-pane-padding)/4)}:host .timeline-entry .what .meta{display:flex;flex-flow:row wrap;margin-bottom:calc(var(--app-pane-padding)/4)}:host .timeline-entry .what .meta span{background-color:rgba(var(--color-black-rgb),.08);border-radius:2px;display:block;font-size:var(--font-caption);margin:0 calc(var(--app-pane-padding)/4) calc(var(--app-pane-padding)/4) 0;padding:2px 4px}:host .timeline-entry.error .what .title{color:var(--color-error)}:host .timeline-entry.error .marker:before{align-items:center;border-color:var(--color-error);border-width:4px;color:var(--color-error);content:\"!\";display:flex;flex-flow:column;font-weight:var(--font-weight-bold);justify-content:center}"]
|
|
12
|
+
styles: [":host .process-history{display:flex;flex:1;flex-direction:column;height:100%;min-height:0;min-width:0}:host .history{flex:1 1 auto;overflow-y:auto;padding:var(--app-pane-padding)}:host .filter{background-color:var(--panel-background-lightgrey);border-bottom:1px solid var(--main-background);display:flex;flex:1;flex:0 0 auto;flex-direction:row;justify-content:space-between;min-height:0;min-width:0}:host .filter .input{background-color:var(--color-white);border:1px solid var(--main-background);display:flex;flex-flow:row nowrap;margin:calc(var(--app-pane-padding)/2);padding:2px 2px 2px 0}:host .filter .input.inactive{opacity:.5;pointer-events:none}:host .filter .input input{background-color:transparent;border:0}:host .filter .input eo-icon{margin:0 calc(var(--app-pane-padding)/4)}:host .filter .input eo-icon,:host .filter>eo-icon{align-self:center;color:var(--text-color-hint);height:16px;width:16px}:host .filter>eo-icon{box-sizing:content-box;cursor:pointer;flex:0 0 auto;padding:calc(var(--app-pane-padding)/2)}:host .timeline-entry.user img{border:2px solid var(--text-color-hint);border-radius:50%;height:30px;width:30px;z-index:1}:host .timeline-entry.user .marker:before{display:none}:host .timeline-entry .what{padding-bottom:0;width:66%}:host .timeline-entry .what .deadline-fire{align-items:center;display:flex;padding-bottom:4px}:host .timeline-entry .what .description{color:var(--text-color-body)}.deadline-fire :host .timeline-entry .what .description{align-items:center;display:flex;flex-flow:row nowrap}.deadline-fire :host .timeline-entry .what .description eo-icon{color:var(--text-color-hint);height:18px;width:18px}.deadline-fire :host .timeline-entry .what .description span{padding:0 calc(var(--app-pane-padding)/4)}:host .timeline-entry .what .performer{color:var(--text-color-body);font-size:var(--font-hint);margin-bottom:calc(var(--app-pane-padding)/4)}:host .timeline-entry .what .meta{display:flex;flex-flow:row wrap;margin-bottom:calc(var(--app-pane-padding)/4)}:host .timeline-entry .what .meta span{background-color:rgba(var(--color-black-rgb),.08);border-radius:2px;display:block;font-size:var(--font-caption);margin:0 calc(var(--app-pane-padding)/4) calc(var(--app-pane-padding)/4) 0;padding:2px 4px}:host .timeline-entry.error .what .title{color:var(--color-error)}:host .timeline-entry.error .marker:before{align-items:center;border-color:var(--color-error);border-width:4px;color:var(--color-error);content:\"!\";display:flex;flex-flow:column;font-weight:var(--font-weight-bold);justify-content:center}"]
|
|
13
13
|
},] }
|
|
14
14
|
];
|
|
15
15
|
ProcessHistoryComponent.propDecorators = {
|
|
16
16
|
history: [{ type: Input }]
|
|
17
17
|
};
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1oaXN0b3J5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL3Byb2Nlc3MvaGlzdG9yeS9wcm9jZXNzLWhpc3RvcnkuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLHVCQUF1QixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBU3hFLE1BQU0sT0FBTyx1QkFBdUI7SUFLbEMsWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJO1FBQ3RCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7O1lBYkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxvQkFBb0I7Z0JBQzlCLG93RkFBK0M7Z0JBRS9DLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOzthQUNoRDs7O3NCQUdFLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtXb3JrSXRlbUhpc3RvcnlFbnRyeX0gZnJvbSAnQGVvLXNkay9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZW8tcHJvY2Vzcy1oaXN0b3J5JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcHJvY2Vzcy1oaXN0b3J5LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9wcm9jZXNzLWhpc3RvcnkuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvY2Vzc0hpc3RvcnlDb21wb25lbnQge1xyXG5cclxuICBASW5wdXQoKSBoaXN0b3J5OiBXb3JrSXRlbUhpc3RvcnlFbnRyeVtdO1xyXG4gIGZpbHRlcnRlcm06IHN0cmluZztcclxuXHJcbiAgdHJhY2tCeUluZGV4KGluZGV4LCBpdGVtKSB7XHJcbiAgICByZXR1cm4gaW5kZXg7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { map } from 'rxjs/operators';
|
|
2
|
-
import { Injectable, NgZone } from '@angular/core';
|
|
2
|
+
import { ApplicationRef, Injectable, NgZone } from '@angular/core';
|
|
3
3
|
import { Router } from '@angular/router';
|
|
4
4
|
import { AgentService } from '../agent/agent.service';
|
|
5
5
|
import { Logger, NotificationsService, BackendService, ClipboardService, DmsService, EventService, UserService, DmsObject, Utils, TranslateService, EnaioEvent } from '@eo-sdk/core';
|
|
6
6
|
export const UNDOCK_WINDOW_NAME = 'eoViewer';
|
|
7
7
|
export class PluginsService {
|
|
8
|
-
constructor(backend, notifications, clipboard, logger, translate, dmsService, router, agentService, eventService, userService, ngZone) {
|
|
8
|
+
constructor(backend, notifications, clipboard, logger, translate, dmsService, router, agentService, eventService, userService, appRef, ngZone) {
|
|
9
9
|
this.backend = backend;
|
|
10
10
|
this.notifications = notifications;
|
|
11
11
|
this.clipboard = clipboard;
|
|
@@ -16,6 +16,7 @@ export class PluginsService {
|
|
|
16
16
|
this.agentService = agentService;
|
|
17
17
|
this.eventService = eventService;
|
|
18
18
|
this.userService = userService;
|
|
19
|
+
this.appRef = appRef;
|
|
19
20
|
this.ngZone = ngZone;
|
|
20
21
|
this.agentAction = {
|
|
21
22
|
OPEN: 'eo.agent.action.open',
|
|
@@ -56,6 +57,11 @@ export class PluginsService {
|
|
|
56
57
|
// todo: create inreface for API
|
|
57
58
|
getApi() {
|
|
58
59
|
return {
|
|
60
|
+
detectChanges: () => {
|
|
61
|
+
setTimeout(() => {
|
|
62
|
+
this.appRef.tick();
|
|
63
|
+
}, 500);
|
|
64
|
+
},
|
|
59
65
|
router: {
|
|
60
66
|
get: () => this.router
|
|
61
67
|
},
|
|
@@ -248,6 +254,7 @@ PluginsService.ctorParameters = () => [
|
|
|
248
254
|
{ type: AgentService },
|
|
249
255
|
{ type: EventService },
|
|
250
256
|
{ type: UserService },
|
|
257
|
+
{ type: ApplicationRef },
|
|
251
258
|
{ type: NgZone }
|
|
252
259
|
];
|
|
253
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmstY29yZS9hcGkvcGx1Z2lucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuQyxPQUFPLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3BELE9BQU8sRUFDRyxNQUFNLEVBQUUsb0JBQW9CLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUN0RSxVQUFVLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQW1CLEtBQUssRUFDeEUsZ0JBQWdCLEVBQWUsVUFBVSxFQUMxQyxNQUFNLGNBQWMsQ0FBQztBQUV0QixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxVQUFVLENBQUM7QUFFN0MsTUFBTSxPQUFPLGNBQWM7SUFvQ3pCLFlBQW9CLE9BQXVCLEVBQ2pDLGFBQW1DLEVBQ25DLFNBQTJCLEVBQzNCLE1BQWMsRUFDZixTQUEyQixFQUMxQixVQUFzQixFQUN0QixNQUFjLEVBQ2QsWUFBMEIsRUFDMUIsWUFBMEIsRUFDMUIsV0FBd0IsRUFDeEIsTUFBYztRQVZKLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ2pDLGtCQUFhLEdBQWIsYUFBYSxDQUFzQjtRQUNuQyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2YsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDMUIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsaUJBQVksR0FBWixZQUFZLENB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LENBQUM7UUFDckMsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksWUFBWSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU87UUFFNUMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUM7YUFDM0QsU0FBUyxFQUFFO2FBQ1gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2YsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVPLFdBQVcsQ0FBQyxLQUFVO1FBQzVCLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxDQUFDO0lBQ2hELENBQUM7OztZQS9QRixVQUFVOzs7WUFONkIsY0FBYztZQUFwQyxvQkFBb0I7WUFBa0IsZ0JBQWdCO1lBQTlELE1BQU07WUFFZCxnQkFBZ0I7WUFEaEIsVUFBVTtZQUpKLE1BQU07WUFDTixZQUFZO1lBR04sWUFBWTtZQUFFLFdBQVc7WUFMbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7SW5qZWN0YWJsZSwgTmdab25lfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7QWdlbnRTZXJ2aWNlfSBmcm9tICcuLi9hZ2VudC9hZ2VudC5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBFb1VzZXIsIExvZ2dlciwgTm90aWZpY2F0aW9uc1NlcnZpY2UsIEJhY2tlbmRTZXJ2aWNlLCBDbGlwYm9hcmRTZXJ2aWNlLFxyXG4gIERtc1NlcnZpY2UsIEV2ZW50U2VydmljZSwgVXNlclNlcnZpY2UsIERtc09iamVjdCwgQ2xpcGJvYXJkQWN0aW9uLCBVdGlscyxcclxuICBUcmFuc2xhdGVTZXJ2aWNlLCBIdHRwT3B0aW9ucywgRW5haW9FdmVudFxyXG59IGZyb20gJ0Blby1zZGsvY29yZSc7XHJcblxyXG5leHBvcnQgY29uc3QgVU5ET0NLX1dJTkRPV19OQU1FID0gJ2VvVmlld2VyJztcclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgUGx1Z2luc1NlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIHVzZXI6IEVvVXNlcjtcclxuICBwcml2YXRlIGFnZW50QWN0aW9uID0ge1xyXG4gICAgT1BFTjogJ2VvLmFnZW50LmFjdGlvbi5vcGVuJyxcclxuICAgIE1BSUw6ICdlby5hZ2VudC5hY3Rpb24ubWFpbCcsXHJcbiAgICBNQUlMX0FTX1BERjogJ2VvLmFnZW50LmFjdGlvbi5tYWlsLXBkZicsXHJcbiAgICBDTElQQk9BUkQ6ICdlby5hZ2VudC5hY3Rpb24uY2xpcGJvYXJkJyxcclxuICAgIENMSVBCT0FSRF9BU19QREY6ICdlby5hZ2VudC5hY3Rpb24uY2xpcGJvYXJkLXBkZicsXHJcbiAgICBFWFRFUk5BTDogJ2VvLmFnZW50LmFjdGlvbi5leHRlcm5hbCdcclxuICB9O1xyXG5cclxuICBwdWJsaWMgZ2V0IGN1cnJlbnRVcmwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIudXJsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBhcGkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRBcGkoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhcHBseUZ1bmN0aW9uKHZhbHVlOiBzdHJpbmcgfCBGdW5jdGlvbiB8IGFueSwgcGFyYW1zPzogc3RyaW5nLCBhcmdzPzogYW55KSB7XHJcbiAgICBjb25zdCBmbmMgPSB2YWx1ZT8udG9TdHJpbmcoKS50cmltKCk7XHJcbiAgICBpZiAoIWZuYykgcmV0dXJuO1xyXG4gICAgY29uc3QgZiA9IGZuYy5tYXRjaCgvXmZ1bmN0aW9ufF5cXCguKlxcKVxccyo9Pi8pXHJcbiAgICAgID8gYHJldHVybiAoJHtmbmN9KS5hcHBseSh0aGlzLGFyZ3VtZW50cylgXHJcbiAgICAgIDogdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiAhZm5jLnN0YXJ0c1dpdGgoXCInXCIpXHJcbiAgICAgID8gYHJldHVybiAnJHtmbmN9J2BcclxuICAgICAgOiBgcmV0dXJuICR7Zm5jfWA7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBGdW5jdGlvbiguLi4ocGFyYW1zIHx8ICdhcGknKS5zcGxpdCgnLCcpLm1hcCgoYSkgPT4gYS50cmltKCkpLCBmKS5hcHBseSh0aGlzLmFwaSwgYXJncyB8fCBbdGhpcy5hcGldKTtcclxuICAgICAgfSBjYXRjaChlKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvbnM6IE5vdGlmaWNhdGlvbnNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjbGlwYm9hcmQ6IENsaXBib2FyZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyLFxyXG4gICAgcHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgZG1zU2VydmljZTogRG1zU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGFnZW50U2VydmljZTogQWdlbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkge1xyXG5cclxuICAgIHdpbmRvd1snYXBpJ10gPSB0aGlzLmFwaTtcclxuXHJcbiAgICB0aGlzLnVzZXJTZXJ2aWNlXHJcbiAgICAgIC51c2VyJFxyXG4gICAgICAuc3Vic2NyaWJlKCh1c2VyKSA9PiB0aGlzLnVzZXIgPSB1c2VyKTtcclxuICB9XHJcblxyXG4gIC8vIHRvZG86IGNyZWF0ZSBpbnJlZmFjZSBmb3IgQVBJXHJcblxyXG4gIHB1YmxpYyBnZXRBcGkoKTogYW55IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHJvdXRlcjoge1xyXG4gICAgICAgIGdldDogKCkgPT4gdGhpcy5yb3V0ZXJcclxuICAgICAgfSxcclxuICAgICAgZXZlbnRzOiB7XHJcbiAgICAgICAgZW5haW9FdmVudFR5cGU6IEVuYWlvRXZlbnQsXHJcbiAgICAgICAgb246ICh0eXBlOiBzdHJpbmcpID0+IHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmV2ZW50U2VydmljZS5vbih0eXBlKSksXHJcbiAgICAgICAgdHJpZ2dlcjogKHR5cGU6IHN0cmluZywgZGF0YT86IGFueSkgPT4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIodHlwZSwgZGF0YSkpXHJcbiAgICAgIH0sXHJcbiAgICAgIHNlc3Npb246IHtcclxuICAgICAgICBnZXRVc2VyOiAoKSA9PiB0aGlzLmdldEN1cnJlbnRVc2VyKClcclxuICAgICAgfSxcclxuICAgICAgZG1zOiB7XHJcbiAgICAgICAgZ2V0T2JqZWN0OiAoaWQsIHR5cGUsIHZlcnNpb24pID0+IHRoaXMuZ2V0RG1zT2JqZWN0KGlkLCB0eXBlLCB2ZXJzaW9uKSxcclxuICAgICAgICBnZXRSZXN1bHQ6IChmaWVsZHMsIHR5cGUpID0+IHRoaXMuZ2V0UmVzdWx0KGZpZWxkcywgdHlwZSksXHJcbiAgICAgICAgZG93bmxvYWRDb250ZW50OiAoZG1zT2JqZWN0czogRG1zT2JqZWN0W10sIHJlbmRpdGlvbj86ICdQREYnXHJcbiAgICAgICAgICB8ICdUSUZGJ1xyXG4gICAgICAgICAgfCAnVEVYVCdcclxuICAgICAgICAgIHwgJ0pQRUcnKSA9PiB0aGlzLmJhY2tlbmQuZG93bmxvYWRDb250ZW50KGRtc09iamVjdHMsIHJlbmRpdGlvbilcclxuICAgICAgfSxcclxuICAgICAgaHR0cDoge1xyXG4gICAgICAgIGdldDogKHVyaSwgYmFzZSwgb3B0aW9ucykgPT4gdGhpcy5nZXQodXJpLCBiYXNlLCBvcHRpb25zKSxcclxuICAgICAgICBwb3N0OiAodXJpLCBkYXRhLCBiYXNlLCBvcHRpb25zKSA9PiB0aGlzLnBvc3QodXJpLCBkYXRhLCBiYXNlLCBvcHRpb25zKSxcclxuICAgICAgICBkZWw6ICh1cmksIGJhc2UsIG9wdGlvbnMpID0+IHRoaXMuZGVsKHVyaSwgYmFzZSwgb3B0aW9ucyksXHJcbiAgICAgICAgcHV0OiAodXJpLCBkYXRhLCBiYXNlLCBvcHRpb25zKSA9PiB0aGlzLnB1dCh1cmksIGRhdGEsIGJhc2UsIG9wdGlvbnMpXHJcbiAgICAgIH0sXHJcbiAgICAgIGNvbmZpZzoge1xyXG4gICAgICAgIGdldDogKCkgPT4gdGhpcy5nZXRDb25maWcoKVxyXG4gICAgICB9LFxyXG4gICAgICBjb250ZW50OiB7XHJcbiAgICAgICAgdmlld2VyOiAoKSA9PiB3aW5kb3dbVU5ET0NLX1dJTkRPV19OQU1FXSB8fCAod2luZG93LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2VvLW1lZGlhIGlmcmFtZVtzcmNdJykgfHwge30pWydjb250ZW50V2luZG93J10sXHJcbiAgICAgICAgdHJpZ2dlckVycm9yOiAoZXJyLCB3aW4sIHBhcmFtZXRlcnMpID0+IHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmV2ZW50U2VydmljZS50cmlnZ2VyKFVORE9DS19XSU5ET1dfTkFNRSArICdFcnJvcicsIHsgZXJyLCB3aW4sIHBhcmFtZXRlcnMgfSkpLFxyXG4gICAgICAgIGNhdGNoRXJyb3I6ICgpID0+IHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmV2ZW50U2VydmljZS5vbihVTkRPQ0tfV0lORE9XX05BTUUgKyAnRXJyb3InKSlcclxuICAgICAgfSxcclxuICAgICAgdXRpbDoge1xyXG4gICAgICAgICQ6IChzZWxlY3RvcnMsIGVsZW1lbnQpID0+IChlbGVtZW50IHx8IHdpbmRvdy5kb2N1bWVudCkucXVlcnlTZWxlY3RvcihzZWxlY3RvcnMpLFxyXG4gICAgICAgICQkOiAoc2VsZWN0b3JzLCBlbGVtZW50KSA9PiAoZWxlbWVudCB8fCB3aW5kb3cuZG9jdW1lbnQpLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3JzKSxcclxuICAgICAgICBzdHlsZXM6IChzdHlsZXMsIGlkID0gJ19fc3R5bGVzJywgd2luOiBhbnkgPSB3aW5kb3cpID0+IHtcclxuICAgICAgICAgIGxldCBzID0gd2luLmRvY3VtZW50LmhlYWQucXVlcnlTZWxlY3RvcignIycgKyBpZCk7XHJcbiAgICAgICAgICBpZiAoIXMpIHtcclxuICAgICAgICAgICAgcyA9IHdpbi5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xyXG4gICAgICAgICAgICBzLnNldEF0dHJpYnV0ZSgnaWQnLCBpZCk7XHJcbiAgICAgICAgICAgIHdpbi5kb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcy5pbm5lckhUTUwgPSBzdHlsZXM7XHJcbiAgICAgICAgfSxcclxuICAgICAgICB0cmFuc2xhdGU6IChrZXksIGRhdGEpID0+IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoa2V5LCBkYXRhKSxcclxuICAgICAgICBlbmNvZGVGaWxlTmFtZTogKGZpbGVuYW1lKSA9PiB0aGlzLmVuY29kZUZpbGVOYW1lKGZpbGVuYW1lKSxcclxuICAgICAgICBub3RpZmllcjoge1xyXG4gICAgICAgICAgc3VjY2VzczogKHRleHQsIHRpdGxlKSA9PiB0aGlzLm5vdGlmaWNhdGlvbnMuc3VjY2Vzcyh0aXRsZSwgdGV4dCksXHJcbiAgICAgICAgICBlcnJvcjogKHRleHQsIHRpdGxlKSA9PiB0aGlzLm5vdGlmaWNhdGlvbnMuZXJyb3IodGl0bGUsIHRleHQpLFxyXG4gICAgICAgICAgaW5mbzogKHRleHQsIHRpdGxlKSA9PiB0aGlzLm5vdGlmaWNhdGlvbnMuaW5mbyh0aXRsZSwgdGV4dCksXHJcbiAgICAgICAgICB3YXJuaW5nOiAodGV4dCwgdGl0bGUpID0+IHRoaXMubm90aWZpY2F0aW9ucy53YXJuaW5nKHRpdGxlLCB0ZXh0KVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgY2xpcGJvYXJkOiB7XHJcbiAgICAgICAgc2V0OiAoZWxlbWVudHM6IERtc09iamVjdFtdLCBhY3Rpb246IENsaXBib2FyZEFjdGlvbikgPT4gdGhpcy5jbGlwYm9hcmQuc2V0KGVsZW1lbnRzLCBhY3Rpb24pLFxyXG4gICAgICAgIGdldDogKCkgPT4gdGhpcy5jbGlwYm9hcmQuZ2V0KCksXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHRoaXMuY2xpcGJvYXJkLmNsZWFyKClcclxuICAgICAgfSxcclxuICAgICAgLy8gQWdlbnRcclxuICAgICAgYWdlbnQ6IHtcclxuICAgICAgICBnZXRBdmFpbGFiaWxpdHk6ICgpID0+IHRoaXMuZ2V0QWdlbnRBdmFpbGFiaWxpdHkoKSxcclxuICAgICAgICBleGVjdXRlQWN0aW9uOiAoYWN0aW9uLCBhcmdzKSA9PiB0aGlzLmV4ZWN1dGVBZ2VudEFjdGlvbihhY3Rpb24sIGFyZ3MpLFxyXG4gICAgICAgIGFjdGlvbjogdGhpcy5hZ2VudEFjdGlvblxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcblxyXG4gIHB1YmxpYyBnZXRBZ2VudEF2YWlsYWJpbGl0eSgpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgaWYgKHRoaXMuYWdlbnRTZXJ2aWNlLmlzQ29ubmVjdGVkKSB7XHJcbiAgICAgICAgcmVzb2x2ZSh0aGlzLmFnZW50U2VydmljZS5hZ2VudEF2YWlsYWJpbGl0eS5DT05ORUNURUQpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlc29sdmUodGhpcy5hZ2VudFNlcnZpY2UuYWdlbnRBdmFpbGFiaWxpdHkuVU5BVkFJTEFCTEUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBleGVjdXRlQWdlbnRBY3Rpb24oYWN0aW9uLCBhcmdzKSB7XHJcblxyXG4gICAgc3dpdGNoIChhY3Rpb24pIHtcclxuICAgICAgY2FzZSB0aGlzLmFnZW50QWN0aW9uLkNMSVBCT0FSRDpcclxuICAgICAgICB0aGlzLmFnZW50U2VydmljZS5jb3B5VG9DbGlwYm9hcmQoYXJncyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5hZ2VudEFjdGlvbi5DTElQQk9BUkRfQVNfUERGOlxyXG4gICAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLmNvcHlUb0NsaXBib2FyZChhcmdzKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLmFnZW50QWN0aW9uLkVYVEVSTkFMOlxyXG4gICAgICAgIGlmICghYXJncy5leGVjdXRhYmxlKSB7XHJcbiAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcignTWlzc2luZyBmaWVsZCBhcmdzLmV4ZWN1dGFibGUnKTtcclxuICAgICAgICB9IGVsc2UgaWYgKChhcmdzLmFyZ3MgJiYgYXJncy5hcmdzLmxlbmd0aCA9PT0gMCkgJiYgIUFycmF5LmlzQXJyYXkoYXJncy5hcmdzKSkge1xyXG4gICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0ZpZWxkIGFyZ3MuYXJncyBtdXN0IGJlIGVtcHR5IG9yIGFycmF5LicpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmFnZW50U2VydmljZS5zZW5kRXh0ZXJuYWxBY3Rpb24oYXJncy5leGVjdXRhYmxlLCBhcmdzLmFyZ3MgfHwgW10pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLmFnZW50QWN0aW9uLk1BSUw6XHJcbiAgICAgIGNhc2UgdGhpcy5hZ2VudEFjdGlvbi5NQUlMX0FTX1BERjpcclxuICAgICAgICB0aGlzLmFnZW50U2VydmljZS5zZW5kQXNNYWlsKGFyZ3MpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMuYWdlbnRBY3Rpb24uT1BFTjpcclxuICAgICAgICB0aGlzLmFnZW50U2VydmljZS5vcGVuRG9jdW1lbnQoYXJncywgYXJncy5sb2NrKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQodXJpLCBiYXNlID0gJycsIG9wdGlvbnM/OiBIdHRwT3B0aW9ucykge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxyXG4gICAgICAuZ2V0KHVyaSwgdGhpcy5iYWNrZW5kLmdldEhvc3QoKSArIGJhc2UsIG9wdGlvbnMgfHwge29ic2VydmU6ICdyZXNwb25zZSd9KS5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiBvcHRpb25zID8gcmVzIDogeyBzdGF0dXM6IHJlcy5zdGF0dXMsIGRhdGE6IHJlcy5ib2R5IH07XHJcbiAgICAgICAgfSkpLnRvUHJvbWlzZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHB1dCh1cmksIGRhdGEsIGJhc2UgPSAnJywgb3B0aW9ucz86IEh0dHBPcHRpb25zKSB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLnB1dCh1cmksIGRhdGEsIHRoaXMuYmFja2VuZC5nZXRIb3N0KCkgKyBiYXNlLCBvcHRpb25zKS50b1Byb21pc2UoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwb3N0KHVyaSwgZGF0YSwgYmFzZSA9ICcnLCBvcHRpb25zPzogSHR0cE9wdGlvbnMpIHtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQucG9zdCh1cmksIGRhdGEsIHRoaXMuYmFja2VuZC5nZXRIb3N0KCkgKyBiYXNlLCBvcHRpb25zKS50b1Byb21pc2UoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkZWwodXJpLCBiYXNlID0gJycsIG9wdGlvbnM/OiBIdHRwT3B0aW9ucykge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5kZWwodXJpLCB0aGlzLmJhY2tlbmQuZ2V0SG9zdCgpICsgYmFzZSwgb3B0aW9ucykudG9Qcm9taXNlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Q3VycmVudFVzZXIoKTogRW9Vc2VyIHtcclxuICAgIHJldHVybiB0aGlzLnVzZXI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZW5jb2RlRmlsZU5hbWUoZmlsZW5hbWUpIHtcclxuICAgIHJldHVybiBVdGlscy5lbmNvZGVGaWxlTmFtZShmaWxlbmFtZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Q29uZmlnKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgc2VydmljZUJhc2U6IHRoaXMuYmFja2VuZC5nZXRTZXJ2aWNlQmFzZSgpXHJcblxyXG4gICAgICAvLyB0b2RvOiBkbyB3ZSBoYXZlIHRvIHByb3ZpZGUgdGhlIHBsdWdpbiBkZXZlbG9wZXJzIHdpdGggdGhlc2UgaW5mb3JtYXRpb25zP1xyXG4gICAgICAvLyBwbHVnaW5zQmFzZTogJGVvQ29uZmlnLmdldFBsdWdpbkJhc2UoKSxcclxuICAgICAgLy8gcGx1Z2luU3RhdGVzQmFzZTogJGVvQ29uZmlnLmdldFBsdWdpblN0YXRlc0Jhc2UoKSxcclxuICAgICAgLy8gdGhlbWVCYXNlOiAkZW9Db25maWcuZ2V0VGhlbWVCYXNlKClcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBmZXRjaGVzIGRtcyBvYmplY3RzIGZyb20gdGhlIHNlcnZlciB0aGF0IG1hdGNoIHRoZSBnaXZlbiBwYXJhbXNcclxuICAgKlxyXG4gICAqIEBwYXJhbSBmaWVsZHMgLSB0aGUgZmllbGRzIHRvIG1hdGNoZWQuIGV4YW1wbGU6IHtuYW1lOiAnbWF4JywgcGx6OiAnNDcxMTF9XHJcbiAgICogQHBhcmFtIHR5cGUgLSB0aGUgdGFyZ2V0IG9iamVjdCB0eXBlXHJcbiAgICpcclxuICAgKiBAcmV0dXJucyB3aGljaCB3aWxsIGJlIHJlc29sdmVkIGJ5IGFuIGFycmF5IG9mIERtc09iamVjdHMgbWF0Y2hpbmcgdGhlIGdpdmVuIHBhcmFtc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRSZXN1bHQoZmllbGRzLCB0eXBlKTogUHJvbWlzZTxEbXNPYmplY3RbXT4ge1xyXG5cclxuICAgIGxldCBxID0gT2JqZWN0LmtleXMoZmllbGRzKS5maWx0ZXIoayA9PiAoZmllbGRzW2tdICE9PSB1bmRlZmluZWQgJiYgZmllbGRzW2tdICE9PSBudWxsKSkubWFwKGsgPT4gayArICc9JyArIGZpZWxkc1trXSkuam9pbignOycpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcclxuICAgICAgLmdldEpzb24oYC9yZXN1bHQvcXVlcnk/cXVlcnk9JHtlbmNvZGVVUklDb21wb25lbnQocSl9JnR5cGU9JHt0eXBlfWApXHJcbiAgICAgIC50b1Byb21pc2UoKVxyXG4gICAgICAudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIGxldCByZXNPYmplY3RzID0gW107XHJcbiAgICAgICAgZm9yIChsZXQgaXRlbSBvZiByZXNwb25zZSkge1xyXG4gICAgICAgICAgcmVzT2JqZWN0cy5wdXNoKG5ldyBEbXNPYmplY3QoaXRlbSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc09iamVjdHMpO1xyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2godGhpcy5oYW5kbGVFcnJvcik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2FkcyBhIERNUyBvYmplY3QgZnJvbSB0aGUgYmFja2VuZC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBpZCAtIFRoZSBpZCBvZiB0aGUgRE1TLU9iamVjdCB0byBiZSBmZXRjaGVkLlxyXG4gICAqIEBwYXJhbSBbdHlwZV0gLSBUaGUgb2JqZWN0IHR5cGUgb2YgdGhlIHNlbGVjdGVkIERNUy1PYmplY3QuIFdpbGwgaW1wcm92ZSBwZXJmb3JtYW5jZSBpZiBzZXQuXHJcbiAgICogQHBhcmFtIFt2ZXJzaW9uXSAtIHJldHJpZXZlIGEgc3BlY2lmaWMgdmVyc2lvbiBvZiB0aGUgZG1zIG9iamVjdFxyXG4gICAqIEBwYXJhbSBbaW50ZW50XSAtIHVzZWQgZm9yIHNlcnZlciBzaWRlIGxvZ2dpbmcuIElmIHlvdSBwcm92aWRlIGFuIGludGVudCwgdGhlXHJcbiAgICpcclxuICAgKiBAcmV0dXJucyB3aGljaCB3aWxsIGJlIHJlc29sdmVkIGJ5IHRoZSBETVMgb2JqZWN0IGZldGNoZWQgZnJvbSB0aGUgc2VydmVyXHJcbiAgICovXHJcbiAgcHVibGljIGdldERtc09iamVjdChpZCwgdHlwZSwgdmVyc2lvbiwgaW50ZW50Pyk6IFByb21pc2U8RG1zT2JqZWN0PiB7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuZG1zU2VydmljZS5nZXREbXNPYmplY3QoaWQsIHR5cGUsIHZlcnNpb24sIGludGVudClcclxuICAgICAgLnRvUHJvbWlzZSgpXHJcbiAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcclxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3BvbnNlKTtcclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKHRoaXMuaGFuZGxlRXJyb3IpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnJvcjogYW55KTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvci5tZXNzYWdlIHx8IGVycm9yKTtcclxuICB9XHJcbn1cclxuIl19
|
|
260
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmstY29yZS9hcGkvcGx1Z2lucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuQyxPQUFPLEVBQUMsY0FBYyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVBQ0csTUFBTSxFQUFFLG9CQUFvQixFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFDdEUsVUFBVSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFtQixLQUFLLEVBQ3hFLGdCQUFnQixFQUFlLFVBQVUsRUFDMUMsTUFBTSxjQUFjLENBQUM7QUFFdEIsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsVUFBVSxDQUFDO0FBRTdDLE1BQU0sT0FBTyxjQUFjO0lBb0N6QixZQUFvQixPQUF1QixFQUNqQyxhQUFtQyxFQUNuQyxTQUEyQixFQUMzQixNQUFjLEVBQ2YsU0FBMkIsRUFDMUIsVUFBc0IsRUFDdEIsTUFBYyxFQUNkLFlBQTBCLEVBQzFCLFlBQTBCLEVBQzFCLFdBQXdCLEVBQ3hCLE1BQXNCLEVBQ3RCLE1BQWM7UUFYSixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUNqQyxrQkFBYSxHQUFiLGFBQWEsQ0FBc0I7UUFDbkMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNmLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzFCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtR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RUFBRSxFQUFFO1lBQ3RCLElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQztZQUNwQixLQUFLLElBQUksSUFBSSxJQUFJLFFBQVEsRUFBRTtnQkFDekIsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2FBQ3RDO1lBQ0QsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3JDLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNJLFlBQVksQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFPO1FBRTVDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDO2FBQzNELFNBQVMsRUFBRTthQUNYLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNmLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFTyxXQUFXLENBQUMsS0FBVTtRQUM1QixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsQ0FBQztJQUNoRCxDQUFDOzs7WUFyUUYsVUFBVTs7O1lBTjZCLGNBQWM7WUFBcEMsb0JBQW9CO1lBQWtCLGdCQUFnQjtZQUE5RCxNQUFNO1lBRWQsZ0JBQWdCO1lBRGhCLFVBQVU7WUFKSixNQUFNO1lBQ04sWUFBWTtZQUdOLFlBQVk7WUFBRSxXQUFXO1lBTC9CLGNBQWM7WUFBYyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtBcHBsaWNhdGlvblJlZiwgSW5qZWN0YWJsZSwgTmdab25lfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7QWdlbnRTZXJ2aWNlfSBmcm9tICcuLi9hZ2VudC9hZ2VudC5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBFb1VzZXIsIExvZ2dlciwgTm90aWZpY2F0aW9uc1NlcnZpY2UsIEJhY2tlbmRTZXJ2aWNlLCBDbGlwYm9hcmRTZXJ2aWNlLFxyXG4gIERtc1NlcnZpY2UsIEV2ZW50U2VydmljZSwgVXNlclNlcnZpY2UsIERtc09iamVjdCwgQ2xpcGJvYXJkQWN0aW9uLCBVdGlscyxcclxuICBUcmFuc2xhdGVTZXJ2aWNlLCBIdHRwT3B0aW9ucywgRW5haW9FdmVudFxyXG59IGZyb20gJ0Blby1zZGsvY29yZSc7XHJcblxyXG5leHBvcnQgY29uc3QgVU5ET0NLX1dJTkRPV19OQU1FID0gJ2VvVmlld2VyJztcclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgUGx1Z2luc1NlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIHVzZXI6IEVvVXNlcjtcclxuICBwcml2YXRlIGFnZW50QWN0aW9uID0ge1xyXG4gICAgT1BFTjogJ2VvLmFnZW50LmFjdGlvbi5vcGVuJyxcclxuICAgIE1BSUw6ICdlby5hZ2VudC5hY3Rpb24ubWFpbCcsXHJcbiAgICBNQUlMX0FTX1BERjogJ2VvLmFnZW50LmFjdGlvbi5tYWlsLXBkZicsXHJcbiAgICBDTElQQk9BUkQ6ICdlby5hZ2VudC5hY3Rpb24uY2xpcGJvYXJkJyxcclxuICAgIENMSVBCT0FSRF9BU19QREY6ICdlby5hZ2VudC5hY3Rpb24uY2xpcGJvYXJkLXBkZicsXHJcbiAgICBFWFRFUk5BTDogJ2VvLmFnZW50LmFjdGlvbi5leHRlcm5hbCdcclxuICB9O1xyXG5cclxuICBwdWJsaWMgZ2V0IGN1cnJlbnRVcmwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIudXJsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBhcGkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRBcGkoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhcHBseUZ1bmN0aW9uKHZhbHVlOiBzdHJpbmcgfCBGdW5jdGlvbiB8IGFueSwgcGFyYW1zPzogc3RyaW5nLCBhcmdzPzogYW55KSB7XHJcbiAgICBjb25zdCBmbmMgPSB2YWx1ZT8udG9TdHJpbmcoKS50cmltKCk7XHJcbiAgICBpZiAoIWZuYykgcmV0dXJuO1xyXG4gICAgY29uc3QgZiA9IGZuYy5tYXRjaCgvXmZ1bmN0aW9ufF5cXCguKlxcKVxccyo9Pi8pXHJcbiAgICAgID8gYHJldHVybiAoJHtmbmN9KS5hcHBseSh0aGlzLGFyZ3VtZW50cylgXHJcbiAgICAgIDogdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiAhZm5jLnN0YXJ0c1dpdGgoXCInXCIpXHJcbiAgICAgID8gYHJldHVybiAnJHtmbmN9J2BcclxuICAgICAgOiBgcmV0dXJuICR7Zm5jfWA7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBGdW5jdGlvbiguLi4ocGFyYW1zIHx8ICdhcGknKS5zcGxpdCgnLCcpLm1hcCgoYSkgPT4gYS50cmltKCkpLCBmKS5hcHBseSh0aGlzLmFwaSwgYXJncyB8fCBbdGhpcy5hcGldKTtcclxuICAgICAgfSBjYXRjaChlKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvbnM6IE5vdGlmaWNhdGlvbnNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjbGlwYm9hcmQ6IENsaXBib2FyZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyLFxyXG4gICAgcHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgZG1zU2VydmljZTogRG1zU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGFnZW50U2VydmljZTogQWdlbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmLFxyXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkge1xyXG5cclxuICAgIHdpbmRvd1snYXBpJ10gPSB0aGlzLmFwaTtcclxuXHJcbiAgICB0aGlzLnVzZXJTZXJ2aWNlXHJcbiAgICAgIC51c2VyJFxyXG4gICAgICAuc3Vic2NyaWJlKCh1c2VyKSA9PiB0aGlzLnVzZXIgPSB1c2VyKTtcclxuICB9XHJcblxyXG4gIC8vIHRvZG86IGNyZWF0ZSBpbnJlZmFjZSBmb3IgQVBJXHJcblxyXG4gIHB1YmxpYyBnZXRBcGkoKTogYW55IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGRldGVjdENoYW5nZXM6ICgpID0+IHtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgICAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLmFwcFJlZi50aWNrKCk7XHJcbiAgICAgICAgfSwgNTAwKTtcclxuICAgICAgfSxcclxuICAgICAgcm91dGVyOiB7XHJcbiAgICAgICAgZ2V0OiAoKSA9PiB0aGlzLnJvdXRlclxyXG4gICAgICB9LFxyXG4gICAgICBldmVudHM6IHtcclxuICAgICAgICBlbmFpb0V2ZW50VHlwZTogRW5haW9FdmVudCxcclxuICAgICAgICBvbjogKHR5cGU6IHN0cmluZykgPT4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuZXZlbnRTZXJ2aWNlLm9uKHR5cGUpKSxcclxuICAgICAgICB0cmlnZ2VyOiAodHlwZTogc3RyaW5nLCBkYXRhPzogYW55KSA9PiB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5ldmVudFNlcnZpY2UudHJpZ2dlcih0eXBlLCBkYXRhKSlcclxuICAgICAgfSxcclxuICAgICAgc2Vzc2lvbjoge1xyXG4gICAgICAgIGdldFVzZXI6ICgpID0+IHRoaXMuZ2V0Q3VycmVudFVzZXIoKVxyXG4gICAgICB9LFxyXG4gICAgICBkbXM6IHtcclxuICAgICAgICBnZXRPYmplY3Q6IChpZCwgdHlwZSwgdmVyc2lvbikgPT4gdGhpcy5nZXREbXNPYmplY3QoaWQsIHR5cGUsIHZlcnNpb24pLFxyXG4gICAgICAgIGdldFJlc3VsdDogKGZpZWxkcywgdHlwZSkgPT4gdGhpcy5nZXRSZXN1bHQoZmllbGRzLCB0eXBlKSxcclxuICAgICAgICBkb3dubG9hZENvbnRlbnQ6IChkbXNPYmplY3RzOiBEbXNPYmplY3RbXSwgcmVuZGl0aW9uPzogJ1BERidcclxuICAgICAgICAgIHwgJ1RJRkYnXHJcbiAgICAgICAgICB8ICdURVhUJ1xyXG4gICAgICAgICAgfCAnSlBFRycpID0+IHRoaXMuYmFja2VuZC5kb3dubG9hZENvbnRlbnQoZG1zT2JqZWN0cywgcmVuZGl0aW9uKVxyXG4gICAgICB9LFxyXG4gICAgICBodHRwOiB7XHJcbiAgICAgICAgZ2V0OiAodXJpLCBiYXNlLCBvcHRpb25zKSA9PiB0aGlzLmdldCh1cmksIGJhc2UsIG9wdGlvbnMpLFxyXG4gICAgICAgIHBvc3Q6ICh1cmksIGRhdGEsIGJhc2UsIG9wdGlvbnMpID0+IHRoaXMucG9zdCh1cmksIGRhdGEsIGJhc2UsIG9wdGlvbnMpLFxyXG4gICAgICAgIGRlbDogKHVyaSwgYmFzZSwgb3B0aW9ucykgPT4gdGhpcy5kZWwodXJpLCBiYXNlLCBvcHRpb25zKSxcclxuICAgICAgICBwdXQ6ICh1cmksIGRhdGEsIGJhc2UsIG9wdGlvbnMpID0+IHRoaXMucHV0KHVyaSwgZGF0YSwgYmFzZSwgb3B0aW9ucylcclxuICAgICAgfSxcclxuICAgICAgY29uZmlnOiB7XHJcbiAgICAgICAgZ2V0OiAoKSA9PiB0aGlzLmdldENvbmZpZygpXHJcbiAgICAgIH0sXHJcbiAgICAgIGNvbnRlbnQ6IHtcclxuICAgICAgICB2aWV3ZXI6ICgpID0+IHdpbmRvd1tVTkRPQ0tfV0lORE9XX05BTUVdIHx8ICh3aW5kb3cuZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZW8tbWVkaWEgaWZyYW1lW3NyY10nKSB8fCB7fSlbJ2NvbnRlbnRXaW5kb3cnXSxcclxuICAgICAgICB0cmlnZ2VyRXJyb3I6IChlcnIsIHdpbiwgcGFyYW1ldGVycykgPT4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIoVU5ET0NLX1dJTkRPV19OQU1FICsgJ0Vycm9yJywgeyBlcnIsIHdpbiwgcGFyYW1ldGVycyB9KSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcjogKCkgPT4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuZXZlbnRTZXJ2aWNlLm9uKFVORE9DS19XSU5ET1dfTkFNRSArICdFcnJvcicpKVxyXG4gICAgICB9LFxyXG4gICAgICB1dGlsOiB7XHJcbiAgICAgICAgJDogKHNlbGVjdG9ycywgZWxlbWVudCkgPT4gKGVsZW1lbnQgfHwgd2luZG93LmRvY3VtZW50KS5xdWVyeVNlbGVjdG9yKHNlbGVjdG9ycyksXHJcbiAgICAgICAgJCQ6IChzZWxlY3RvcnMsIGVsZW1lbnQpID0+IChlbGVtZW50IHx8IHdpbmRvdy5kb2N1bWVudCkucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcnMpLFxyXG4gICAgICAgIHN0eWxlczogKHN0eWxlcywgaWQgPSAnX19zdHlsZXMnLCB3aW46IGFueSA9IHdpbmRvdykgPT4ge1xyXG4gICAgICAgICAgbGV0IHMgPSB3aW4uZG9jdW1lbnQuaGVhZC5xdWVyeVNlbGVjdG9yKCcjJyArIGlkKTtcclxuICAgICAgICAgIGlmICghcykge1xyXG4gICAgICAgICAgICBzID0gd2luLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XHJcbiAgICAgICAgICAgIHMuc2V0QXR0cmlidXRlKCdpZCcsIGlkKTtcclxuICAgICAgICAgICAgd2luLmRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQocyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBzLmlubmVySFRNTCA9IHN0eWxlcztcclxuICAgICAgICB9LFxyXG4gICAgICAgIHRyYW5zbGF0ZTogKGtleSwgZGF0YSkgPT4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChrZXksIGRhdGEpLFxyXG4gICAgICAgIGVuY29kZUZpbGVOYW1lOiAoZmlsZW5hbWUpID0+IHRoaXMuZW5jb2RlRmlsZU5hbWUoZmlsZW5hbWUpLFxyXG4gICAgICAgIG5vdGlmaWVyOiB7XHJcbiAgICAgICAgICBzdWNjZXNzOiAodGV4dCwgdGl0bGUpID0+IHRoaXMubm90aWZpY2F0aW9ucy5zdWNjZXNzKHRpdGxlLCB0ZXh0KSxcclxuICAgICAgICAgIGVycm9yOiAodGV4dCwgdGl0bGUpID0+IHRoaXMubm90aWZpY2F0aW9ucy5lcnJvcih0aXRsZSwgdGV4dCksXHJcbiAgICAgICAgICBpbmZvOiAodGV4dCwgdGl0bGUpID0+IHRoaXMubm90aWZpY2F0aW9ucy5pbmZvKHRpdGxlLCB0ZXh0KSxcclxuICAgICAgICAgIHdhcm5pbmc6ICh0ZXh0LCB0aXRsZSkgPT4gdGhpcy5ub3RpZmljYXRpb25zLndhcm5pbmcodGl0bGUsIHRleHQpXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBjbGlwYm9hcmQ6IHtcclxuICAgICAgICBzZXQ6IChlbGVtZW50czogRG1zT2JqZWN0W10sIGFjdGlvbjogQ2xpcGJvYXJkQWN0aW9uKSA9PiB0aGlzLmNsaXBib2FyZC5zZXQoZWxlbWVudHMsIGFjdGlvbiksXHJcbiAgICAgICAgZ2V0OiAoKSA9PiB0aGlzLmNsaXBib2FyZC5nZXQoKSxcclxuICAgICAgICBjbGVhcjogKCkgPT4gdGhpcy5jbGlwYm9hcmQuY2xlYXIoKVxyXG4gICAgICB9LFxyXG4gICAgICAvLyBBZ2VudFxyXG4gICAgICBhZ2VudDoge1xyXG4gICAgICAgIGdldEF2YWlsYWJpbGl0eTogKCkgPT4gdGhpcy5nZXRBZ2VudEF2YWlsYWJpbGl0eSgpLFxyXG4gICAgICAgIGV4ZWN1dGVBY3Rpb246IChhY3Rpb24sIGFyZ3MpID0+IHRoaXMuZXhlY3V0ZUFnZW50QWN0aW9uKGFjdGlvbiwgYXJncyksXHJcbiAgICAgICAgYWN0aW9uOiB0aGlzLmFnZW50QWN0aW9uXHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgfVxyXG5cclxuXHJcbiAgcHVibGljIGdldEFnZW50QXZhaWxhYmlsaXR5KCk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5hZ2VudFNlcnZpY2UuaXNDb25uZWN0ZWQpIHtcclxuICAgICAgICByZXNvbHZlKHRoaXMuYWdlbnRTZXJ2aWNlLmFnZW50QXZhaWxhYmlsaXR5LkNPTk5FQ1RFRCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmVzb2x2ZSh0aGlzLmFnZW50U2VydmljZS5hZ2VudEF2YWlsYWJpbGl0eS5VTkFWQUlMQUJMRSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGV4ZWN1dGVBZ2VudEFjdGlvbihhY3Rpb24sIGFyZ3MpIHtcclxuXHJcbiAgICBzd2l0Y2ggKGFjdGlvbikge1xyXG4gICAgICBjYXNlIHRoaXMuYWdlbnRBY3Rpb24uQ0xJUEJPQVJEOlxyXG4gICAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLmNvcHlUb0NsaXBib2FyZChhcmdzKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLmFnZW50QWN0aW9uLkNMSVBCT0FSRF9BU19QREY6XHJcbiAgICAgICAgdGhpcy5hZ2VudFNlcnZpY2UuY29weVRvQ2xpcGJvYXJkKGFyZ3MpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMuYWdlbnRBY3Rpb24uRVhURVJOQUw6XHJcbiAgICAgICAgaWYgKCFhcmdzLmV4ZWN1dGFibGUpIHtcclxuICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdNaXNzaW5nIGZpZWxkIGFyZ3MuZXhlY3V0YWJsZScpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoKGFyZ3MuYXJncyAmJiBhcmdzLmFyZ3MubGVuZ3RoID09PSAwKSAmJiAhQXJyYXkuaXNBcnJheShhcmdzLmFyZ3MpKSB7XHJcbiAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcignRmllbGQgYXJncy5hcmdzIG11c3QgYmUgZW1wdHkgb3IgYXJyYXkuJyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLnNlbmRFeHRlcm5hbEFjdGlvbihhcmdzLmV4ZWN1dGFibGUsIGFyZ3MuYXJncyB8fCBbXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMuYWdlbnRBY3Rpb24uTUFJTDpcclxuICAgICAgY2FzZSB0aGlzLmFnZW50QWN0aW9uLk1BSUxfQVNfUERGOlxyXG4gICAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLnNlbmRBc01haWwoYXJncyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5hZ2VudEFjdGlvbi5PUEVOOlxyXG4gICAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLm9wZW5Eb2N1bWVudChhcmdzLCBhcmdzLmxvY2spO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCh1cmksIGJhc2UgPSAnJywgb3B0aW9ucz86IEh0dHBPcHRpb25zKSB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXHJcbiAgICAgIC5nZXQodXJpLCB0aGlzLmJhY2tlbmQuZ2V0SG9zdCgpICsgYmFzZSwgb3B0aW9ucyB8fCB7b2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIG9wdGlvbnMgPyByZXMgOiB7IHN0YXR1czogcmVzLnN0YXR1cywgZGF0YTogcmVzLmJvZHkgfTtcclxuICAgICAgICB9KSkudG9Qcm9taXNlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcHV0KHVyaSwgZGF0YSwgYmFzZSA9ICcnLCBvcHRpb25zPzogSHR0cE9wdGlvbnMpIHtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQucHV0KHVyaSwgZGF0YSwgdGhpcy5iYWNrZW5kLmdldEhvc3QoKSArIGJhc2UsIG9wdGlvbnMpLnRvUHJvbWlzZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHBvc3QodXJpLCBkYXRhLCBiYXNlID0gJycsIG9wdGlvbnM/OiBIdHRwT3B0aW9ucykge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5wb3N0KHVyaSwgZGF0YSwgdGhpcy5iYWNrZW5kLmdldEhvc3QoKSArIGJhc2UsIG9wdGlvbnMpLnRvUHJvbWlzZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRlbCh1cmksIGJhc2UgPSAnJywgb3B0aW9ucz86IEh0dHBPcHRpb25zKSB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmRlbCh1cmksIHRoaXMuYmFja2VuZC5nZXRIb3N0KCkgKyBiYXNlLCBvcHRpb25zKS50b1Byb21pc2UoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRDdXJyZW50VXNlcigpOiBFb1VzZXIge1xyXG4gICAgcmV0dXJuIHRoaXMudXNlcjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBlbmNvZGVGaWxlTmFtZShmaWxlbmFtZSkge1xyXG4gICAgcmV0dXJuIFV0aWxzLmVuY29kZUZpbGVOYW1lKGZpbGVuYW1lKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRDb25maWcoKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBzZXJ2aWNlQmFzZTogdGhpcy5iYWNrZW5kLmdldFNlcnZpY2VCYXNlKClcclxuXHJcbiAgICAgIC8vIHRvZG86IGRvIHdlIGhhdmUgdG8gcHJvdmlkZSB0aGUgcGx1Z2luIGRldmVsb3BlcnMgd2l0aCB0aGVzZSBpbmZvcm1hdGlvbnM/XHJcbiAgICAgIC8vIHBsdWdpbnNCYXNlOiAkZW9Db25maWcuZ2V0UGx1Z2luQmFzZSgpLFxyXG4gICAgICAvLyBwbHVnaW5TdGF0ZXNCYXNlOiAkZW9Db25maWcuZ2V0UGx1Z2luU3RhdGVzQmFzZSgpLFxyXG4gICAgICAvLyB0aGVtZUJhc2U6ICRlb0NvbmZpZy5nZXRUaGVtZUJhc2UoKVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGZldGNoZXMgZG1zIG9iamVjdHMgZnJvbSB0aGUgc2VydmVyIHRoYXQgbWF0Y2ggdGhlIGdpdmVuIHBhcmFtc1xyXG4gICAqXHJcbiAgICogQHBhcmFtIGZpZWxkcyAtIHRoZSBmaWVsZHMgdG8gbWF0Y2hlZC4gZXhhbXBsZToge25hbWU6ICdtYXgnLCBwbHo6ICc0NzExMX1cclxuICAgKiBAcGFyYW0gdHlwZSAtIHRoZSB0YXJnZXQgb2JqZWN0IHR5cGVcclxuICAgKlxyXG4gICAqIEByZXR1cm5zIHdoaWNoIHdpbGwgYmUgcmVzb2x2ZWQgYnkgYW4gYXJyYXkgb2YgRG1zT2JqZWN0cyBtYXRjaGluZyB0aGUgZ2l2ZW4gcGFyYW1zXHJcbiAgICovXHJcbiAgcHVibGljIGdldFJlc3VsdChmaWVsZHMsIHR5cGUpOiBQcm9taXNlPERtc09iamVjdFtdPiB7XHJcblxyXG4gICAgbGV0IHEgPSBPYmplY3Qua2V5cyhmaWVsZHMpLmZpbHRlcihrID0+IChmaWVsZHNba10gIT09IHVuZGVmaW5lZCAmJiBmaWVsZHNba10gIT09IG51bGwpKS5tYXAoayA9PiBrICsgJz0nICsgZmllbGRzW2tdKS5qb2luKCc7Jyk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxyXG4gICAgICAuZ2V0SnNvbihgL3Jlc3VsdC9xdWVyeT9xdWVyeT0ke2VuY29kZVVSSUNvbXBvbmVudChxKX0mdHlwZT0ke3R5cGV9YClcclxuICAgICAgLnRvUHJvbWlzZSgpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgbGV0IHJlc09iamVjdHMgPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICByZXNPYmplY3RzLnB1c2gobmV3IERtc09iamVjdChpdGVtKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzT2JqZWN0cyk7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaCh0aGlzLmhhbmRsZUVycm9yKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvYWRzIGEgRE1TIG9iamVjdCBmcm9tIHRoZSBiYWNrZW5kLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGlkIC0gVGhlIGlkIG9mIHRoZSBETVMtT2JqZWN0IHRvIGJlIGZldGNoZWQuXHJcbiAgICogQHBhcmFtIFt0eXBlXSAtIFRoZSBvYmplY3QgdHlwZSBvZiB0aGUgc2VsZWN0ZWQgRE1TLU9iamVjdC4gV2lsbCBpbXByb3ZlIHBlcmZvcm1hbmNlIGlmIHNldC5cclxuICAgKiBAcGFyYW0gW3ZlcnNpb25dIC0gcmV0cmlldmUgYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIHRoZSBkbXMgb2JqZWN0XHJcbiAgICogQHBhcmFtIFtpbnRlbnRdIC0gdXNlZCBmb3Igc2VydmVyIHNpZGUgbG9nZ2luZy4gSWYgeW91IHByb3ZpZGUgYW4gaW50ZW50LCB0aGVcclxuICAgKlxyXG4gICAqIEByZXR1cm5zIHdoaWNoIHdpbGwgYmUgcmVzb2x2ZWQgYnkgdGhlIERNUyBvYmplY3QgZmV0Y2hlZCBmcm9tIHRoZSBzZXJ2ZXJcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0RG1zT2JqZWN0KGlkLCB0eXBlLCB2ZXJzaW9uLCBpbnRlbnQ/KTogUHJvbWlzZTxEbXNPYmplY3Q+IHtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5kbXNTZXJ2aWNlLmdldERtc09iamVjdChpZCwgdHlwZSwgdmVyc2lvbiwgaW50ZW50KVxyXG4gICAgICAudG9Qcm9taXNlKClcclxuICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzcG9uc2UpO1xyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2godGhpcy5oYW5kbGVFcnJvcik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUVycm9yKGVycm9yOiBhbnkpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yLm1lc3NhZ2UgfHwgZXJyb3IpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -44,6 +44,8 @@ import localeHi from '@angular/common/locales/hi';
|
|
|
44
44
|
import localeExtraHi from '@angular/common/locales/extra/hi';
|
|
45
45
|
import localeBn from '@angular/common/locales/bn';
|
|
46
46
|
import localeExtraBn from '@angular/common/locales/extra/bn';
|
|
47
|
+
import localeEnGb from '@angular/common/locales/en-GB';
|
|
48
|
+
import localeExtraEnGb from '@angular/common/locales/extra/en-GB';
|
|
47
49
|
/**
|
|
48
50
|
* @ignore
|
|
49
51
|
* Loader that fetches translations based on the configured locations
|
|
@@ -70,6 +72,7 @@ export class EoxTranslateJsonLoader {
|
|
|
70
72
|
registerLocaleData(localeHi, 'hi', localeExtraHi); // Hindi
|
|
71
73
|
registerLocaleData(localeBn, 'bn', localeExtraBn); // Bengalese
|
|
72
74
|
registerLocaleData(localeDeCh, 'de-CH', localeExtraDeCh); // German (switzerland)
|
|
75
|
+
registerLocaleData(localeEnGb, 'en-GB', localeExtraEnGb); // English (Great-Britain)
|
|
73
76
|
}
|
|
74
77
|
/**
|
|
75
78
|
*
|
|
@@ -82,7 +85,7 @@ export class EoxTranslateJsonLoader {
|
|
|
82
85
|
loadTranslationFile(folder, lang) {
|
|
83
86
|
return this.http.get(`${folder}${lang}.json`).pipe(catchError((e) => {
|
|
84
87
|
// ISO codes with more than 2 characters are sub-languages like de-CH.
|
|
85
|
-
// If there is no translation file for that sub-language we'll try to load
|
|
88
|
+
// If there is no translation file for that sub-language we'll try to load
|
|
86
89
|
// the file for the base language (in this case de).
|
|
87
90
|
return lang.length > 2 ? this.loadTranslationFile(folder, lang.substring(0, 2)) : of({});
|
|
88
91
|
}));
|
|
@@ -92,4 +95,4 @@ EoxTranslateJsonLoader.ctorParameters = () => [
|
|
|
92
95
|
{ type: HttpClient },
|
|
93
96
|
{ type: CoreConfig, decorators: [{ type: Inject, args: [CORE_CONFIG,] }] }
|
|
94
97
|
];
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLWpzb24tbG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9jb25maWcvdHJhbnNsYXRlLWpzb24tbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3JDLE9BQU8sRUFBYSxFQUFFLEVBQUUsUUFBUSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBQyxVQUFVLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFFL0M7O0dBRUc7QUFDSCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLFVBQVUsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RCxPQUFPLGVBQWUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNsRSxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUc3RDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sc0JBQXNCO0lBRWpDLFlBQW1CLElBQWdCLEVBQThCLE1BQWtCO1FBQWhFLFNBQUksR0FBSixJQUFJLENBQVk7UUFBOEIsV0FBTSxHQUFOLE1BQU0sQ0FBWTtRQUNqRixrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsU0FBUztRQUM1RCxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsU0FBUztRQUM1RCxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsVUFBVTtRQUM3RCxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsYUFBYTtRQUNoRSxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsU0FBUztRQUM1RCxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsVUFBVTtRQUM3RCxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsVUFBVTtRQUM3RCxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsVUFBVTtRQUM3RCxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsVUFBVTtRQUM3RCxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsUUFBUTtRQUMzRCxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsU0FBUztRQUM1RCxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsU0FBUztRQUM1RCxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsWUFBWTtRQUMvRCxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsV0FBVztRQUM5RCxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsU0FBUztRQUM1RCxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsUUFBUTtRQUMzRCxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsWUFBWTtRQUMvRCxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsdUJBQXVCO0lBQ25GLENBQUM7SUFHRDs7OztPQUlHO0lBQ0gsY0FBYyxDQUFDLElBQVk7UUFDekIsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNsRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUNoRSxDQUFDO0lBQ0osQ0FBQztJQUVPLG1CQUFtQixDQUFDLE1BQWMsRUFBRSxJQUFZO1FBQ3RELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLEdBQUcsSUFBSSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQ2hELFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2Ysc0VBQXNFO1lBQ3RFLDJFQUEyRTtZQUMzRSxvREFBb0Q7WUFDcEQsT0FBTyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDMUYsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtJQUNILENBQUM7OztZQWpHSyxVQUFVO1lBSVYsVUFBVSx1QkFtRHNCLE1BQU0sU0FBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUcmFuc2xhdGVMb2FkZXJ9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQge0h0dHBDbGllbnR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHtJbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge09ic2VydmFibGUsIG9mLCBmb3JrSm9pbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7Y2F0Y2hFcnJvciwgbWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7Q29yZUNvbmZpZ30gZnJvbSAnLi9jb3JlLWNvbmZpZyc7XHJcbmltcG9ydCB7Q09SRV9DT05GSUd9IGZyb20gJy4vY29yZS1pbml0LnRva2Vucyc7XHJcblxyXG4vKipcclxuICogaTE4biBwYWNrYWdlc1xyXG4gKi9cclxuaW1wb3J0IHtyZWdpc3RlckxvY2FsZURhdGF9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCBsb2NhbGVEZUNoIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2RlLUNIJztcclxuaW1wb3J0IGxvY2FsZUV4dHJhRGVDaCBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9leHRyYS9kZS1DSCc7XHJcbmltcG9ydCBsb2NhbGVEZSBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9kZSc7XHJcbmltcG9ydCBsb2NhbGVFeHRyYURlIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2V4dHJhL2RlJztcclxuaW1wb3J0IGxvY2FsZUFyIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2FyJztcclxuaW1wb3J0IGxvY2FsZUV4dHJhQXIgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvZXh0cmEvYXInO1xyXG5pbXBvcnQgbG9jYWxlRXMgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvZXMnO1xyXG5pbXBvcnQgbG9jYWxlRXh0cmFFcyBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9leHRyYS9lcyc7XHJcbmltcG9ydCBsb2NhbGVQdCBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9wdCc7XHJcbmltcG9ydCBsb2NhbGVFeHRyYVB0IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2V4dHJhL3B0JztcclxuaW1wb3J0IGxvY2FsZUZyIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2ZyJztcclxuaW1wb3J0IGxvY2FsZUV4dHJhRnIgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvZXh0cmEvZnInO1xyXG5pbXBvcnQgbG9jYWxlWmggZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvemgnO1xyXG5pbXBvcnQgbG9jYWxlRXh0cmFaaCBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9leHRyYS96aCc7XHJcbmltcG9ydCBsb2NhbGVMdiBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9sdic7XHJcbmltcG9ydCBsb2NhbGVFeHRyYUx2IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2V4dHJhL2x2JztcclxuaW1wb3J0IGxvY2FsZVJ1IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL3J1JztcclxuaW1wb3J0IGxvY2FsZUV4dHJhUnUgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvZXh0cmEvcnUnO1xyXG5pbXBvcnQgbG9jYWxlSXQgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvaXQnO1xyXG5pbXBvcnQgbG9jYWxlRXh0cmFJdCBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9leHRyYS9pdCc7XHJcbmltcG9ydCBsb2NhbGVObCBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9ubCc7XHJcbmltcG9ydCBsb2NhbGVFeHRyYU5sIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2V4dHJhL25sJztcclxuaW1wb3J0IGxvY2FsZVNrIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL3NrJztcclxuaW1wb3J0IGxvY2FsZUV4dHJhU2sgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvZXh0cmEvc2snO1xyXG5pbXBvcnQgbG9jYWxlUGwgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvcGwnO1xyXG5pbXBvcnQgbG9jYWxlRXh0cmFQbCBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9leHRyYS9wbCc7XHJcbmltcG9ydCBsb2NhbGVVayBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy91ayc7XHJcbmltcG9ydCBsb2NhbGVFeHRyYVVrIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2V4dHJhL3VrJztcclxuaW1wb3J0IGxvY2FsZUphIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2phJztcclxuaW1wb3J0IGxvY2FsZUV4dHJhSmEgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvZXh0cmEvamEnO1xyXG5pbXBvcnQgbG9jYWxlS28gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMva28nO1xyXG5pbXBvcnQgbG9jYWxlRXh0cmFLbyBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9leHRyYS9rbyc7XHJcbmltcG9ydCBsb2NhbGVIaSBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9oaSc7XHJcbmltcG9ydCBsb2NhbGVFeHRyYUhpIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2V4dHJhL2hpJztcclxuaW1wb3J0IGxvY2FsZUJuIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2JuJztcclxuaW1wb3J0IGxvY2FsZUV4dHJhQm4gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvZXh0cmEvYm4nO1xyXG5cclxuXHJcbi8qKlxyXG4gKiBAaWdub3JlXHJcbiAqIExvYWRlciB0aGF0IGZldGNoZXMgdHJhbnNsYXRpb25zIGJhc2VkIG9uIHRoZSBjb25maWd1cmVkIGxvY2F0aW9uc1xyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEVveFRyYW5zbGF0ZUpzb25Mb2FkZXIgaW1wbGVtZW50cyBUcmFuc2xhdGVMb2FkZXIge1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgaHR0cDogSHR0cENsaWVudCwgQEluamVjdChDT1JFX0NPTkZJRykgcHVibGljIGNvbmZpZzogQ29yZUNvbmZpZykge1xyXG4gICAgcmVnaXN0ZXJMb2NhbGVEYXRhKGxvY2FsZURlLCAnZGUnLCBsb2NhbGVFeHRyYURlKTsgLy8gR2VybWFuXHJcbiAgICByZWdpc3RlckxvY2FsZURhdGEobG9jYWxlQXIsICdhcicsIGxvY2FsZUV4dHJhQXIpOyAvLyBBcmFiaWNcclxuICAgIHJlZ2lzdGVyTG9jYWxlRGF0YShsb2NhbGVFcywgJ2VzJywgbG9jYWxlRXh0cmFFcyk7IC8vIFNwYW5pc2hcclxuICAgIHJlZ2lzdGVyTG9jYWxlRGF0YShsb2NhbGVQdCwgJ3B0JywgbG9jYWxlRXh0cmFQdCk7IC8vIFBvcnR1Z3Vlc2VcclxuICAgIHJlZ2lzdGVyTG9jYWxlRGF0YShsb2NhbGVGciwgJ2ZyJywgbG9jYWxlRXh0cmFGcik7IC8vIEZyZW5jaFxyXG4gICAgcmVnaXN0ZXJMb2NhbGVEYXRhKGxvY2FsZVpoLCAnemgnLCBsb2NhbGVFeHRyYVpoKTsgLy8gQ2hpbmVzZVxyXG4gICAgcmVnaXN0ZXJMb2NhbGVEYXRhKGxvY2FsZUx2LCAnbHYnLCBsb2NhbGVFeHRyYUx2KTsgLy8gTGF0dmlhblxyXG4gICAgcmVnaXN0ZXJMb2NhbGVEYXRhKGxvY2FsZVJ1LCAncnUnLCBsb2NhbGVFeHRyYVJ1KTsgLy8gUnVzc2lhblxyXG4gICAgcmVnaXN0ZXJMb2NhbGVEYXRhKGxvY2FsZUl0LCAnaXQnLCBsb2NhbGVFeHRyYUl0KTsgLy8gSXRhbGlhblxyXG4gICAgcmVnaXN0ZXJMb2NhbGVEYXRhKGxvY2FsZU5sLCAnbmwnLCBsb2NhbGVFeHRyYU5sKTsgLy8gRHV0Y2hcclxuICAgIHJlZ2lzdGVyTG9jYWxlRGF0YShsb2NhbGVTaywgJ3NrJywgbG9jYWxlRXh0cmFTayk7IC8vIFNsb3Zha1xyXG4gICAgcmVnaXN0ZXJMb2NhbGVEYXRhKGxvY2FsZVBsLCAncGwnLCBsb2NhbGVFeHRyYVBsKTsgLy8gUG9saXNoXHJcbiAgICByZWdpc3RlckxvY2FsZURhdGEobG9jYWxlVWssICd1aycsIGxvY2FsZUV4dHJhVWspOyAvLyBVa3JhaW5pYW5cclxuICAgIHJlZ2lzdGVyTG9jYWxlRGF0YShsb2NhbGVKYSwgJ2phJywgbG9jYWxlRXh0cmFKYSk7IC8vIEphcGFuZXNlXHJcbiAgICByZWdpc3RlckxvY2FsZURhdGEobG9jYWxlS28sICdrbycsIGxvY2FsZUV4dHJhS28pOyAvLyBLb3JlYW5cclxuICAgIHJlZ2lzdGVyTG9jYWxlRGF0YShsb2NhbGVIaSwgJ2hpJywgbG9jYWxlRXh0cmFIaSk7IC8vIEhpbmRpXHJcbiAgICByZWdpc3RlckxvY2FsZURhdGEobG9jYWxlQm4sICdibicsIGxvY2FsZUV4dHJhQm4pOyAvLyBCZW5nYWxlc2VcclxuICAgIHJlZ2lzdGVyTG9jYWxlRGF0YShsb2NhbGVEZUNoLCAnZGUtQ0gnLCBsb2NhbGVFeHRyYURlQ2gpOyAvLyBHZXJtYW4gKHN3aXR6ZXJsYW5kKVxyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHN0cmluZyBsYW5nXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxPYmplY3Q+XHJcbiAgICovXHJcbiAgZ2V0VHJhbnNsYXRpb24obGFuZzogc3RyaW5nKTogT2JzZXJ2YWJsZTxPYmplY3Q+IHtcclxuICAgIHJldHVybiBmb3JrSm9pbih0aGlzLmNvbmZpZy50cmFuc2xhdGlvbnMubWFwKGZvbGRlciA9PiB0aGlzLmxvYWRUcmFuc2xhdGlvbkZpbGUoZm9sZGVyLCBsYW5nKSkpLnBpcGUoXHJcbiAgICAgIG1hcCgocmVzKSA9PiByZXMucmVkdWNlKChhY2MsIHgpID0+IE9iamVjdC5hc3NpZ24oYWNjLCB4KSwge30pKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZFRyYW5zbGF0aW9uRmlsZShmb2xkZXI6IHN0cmluZywgbGFuZzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke2ZvbGRlcn0ke2xhbmd9Lmpzb25gKS5waXBlKFxyXG4gICAgICBjYXRjaEVycm9yKChlKSA9PiB7XHJcbiAgICAgICAgLy8gSVNPIGNvZGVzIHdpdGggbW9yZSB0aGFuIDIgY2hhcmFjdGVycyBhcmUgc3ViLWxhbmd1YWdlcyBsaWtlIGRlLUNILlxyXG4gICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIHRyYW5zbGF0aW9uIGZpbGUgZm9yIHRoYXQgc3ViLWxhbmd1YWdlIHdlJ2xsIHRyeSB0byBsb2FkIFxyXG4gICAgICAgIC8vIHRoZSBmaWxlIGZvciB0aGUgYmFzZSBsYW5ndWFnZSAoaW4gdGhpcyBjYXNlIGRlKS5cclxuICAgICAgICByZXR1cm4gbGFuZy5sZW5ndGggPiAyID8gdGhpcy5sb2FkVHJhbnNsYXRpb25GaWxlKGZvbGRlciwgbGFuZy5zdWJzdHJpbmcoMCwgMikpIDogb2Yoe30pXHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLWpzb24tbG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9jb25maWcvdHJhbnNsYXRlLWpzb24tbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3JDLE9BQU8sRUFBYSxFQUFFLEVBQUUsUUFBUSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBQyxVQUFVLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFFL0M7O0dBRUc7QUFDSCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLFVBQVUsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RCxPQUFPLGVBQWUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNsRSxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFVBQVUsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RCxPQUFPLGVBQWUsTUFBTSxxQ0FBcUMsQ0FBQztBQUVsRTs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sc0JB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WUFDZixzRUFBc0U7WUFDdEUsMEVBQTBFO1lBQzFFLG9EQUFvRDtZQUNwRCxPQUFPLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUMxRixDQUFDLENBQUMsQ0FDSCxDQUFBO0lBQ0gsQ0FBQzs7O1lBbkdLLFVBQVU7WUFJVixVQUFVLHVCQW9Ec0IsTUFBTSxTQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1RyYW5zbGF0ZUxvYWRlcn0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7SHR0cENsaWVudH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQge0luamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2YsIGZvcmtKb2lufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtjYXRjaEVycm9yLCBtYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtDb3JlQ29uZmlnfSBmcm9tICcuL2NvcmUtY29uZmlnJztcclxuaW1wb3J0IHtDT1JFX0NPTkZJR30gZnJvbSAnLi9jb3JlLWluaXQudG9rZW5zJztcclxuXHJcbi8qKlxyXG4gKiBpMThuIHBhY2thZ2VzXHJcbiAqL1xyXG5pbXBvcnQge3JlZ2lzdGVyTG9jYWxlRGF0YX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IGxvY2FsZURlQ2ggZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvZGUtQ0gnO1xyXG5pbXBvcnQgbG9jYWxlRXh0cmFEZUNoIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2V4dHJhL2RlLUNIJztcclxuaW1wb3J0IGxvY2FsZURlIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2RlJztcclxuaW1wb3J0IGxvY2FsZUV4dHJhRGUgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvZXh0cmEvZGUnO1xyXG5pbXBvcnQgbG9jYWxlQXIgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvYXInO1xyXG5pbXBvcnQgbG9jYWxlRXh0cmFBciBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9leHRyYS9hcic7XHJcbmltcG9ydCBsb2NhbGVFcyBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9lcyc7XHJcbmltcG9ydCBsb2NhbGVFeHRyYUVzIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2V4dHJhL2VzJztcclxuaW1wb3J0IGxvY2FsZVB0IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL3B0JztcclxuaW1wb3J0IGxvY2FsZUV4dHJhUHQgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvZXh0cmEvcHQnO1xyXG5pbXBvcnQgbG9jYWxlRnIgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvZnInO1xyXG5pbXBvcnQgbG9jYWxlRXh0cmFGciBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9leHRyYS9mcic7XHJcbmltcG9ydCBsb2NhbGVaaCBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy96aCc7XHJcbmltcG9ydCBsb2NhbGVFeHRyYVpoIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2V4dHJhL3poJztcclxuaW1wb3J0IGxvY2FsZUx2IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2x2JztcclxuaW1wb3J0IGxvY2FsZUV4dHJhTHYgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvZXh0cmEvbHYnO1xyXG5pbXBvcnQgbG9jYWxlUnUgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvcnUnO1xyXG5pbXBvcnQgbG9jYWxlRXh0cmFSdSBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9leHRyYS9ydSc7XHJcbmltcG9ydCBsb2NhbGVJdCBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9pdCc7XHJcbmltcG9ydCBsb2NhbGVFeHRyYUl0IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2V4dHJhL2l0JztcclxuaW1wb3J0IGxvY2FsZU5sIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL25sJztcclxuaW1wb3J0IGxvY2FsZUV4dHJhTmwgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvZXh0cmEvbmwnO1xyXG5pbXBvcnQgbG9jYWxlU2sgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvc2snO1xyXG5pbXBvcnQgbG9jYWxlRXh0cmFTayBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9leHRyYS9zayc7XHJcbmltcG9ydCBsb2NhbGVQbCBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9wbCc7XHJcbmltcG9ydCBsb2NhbGVFeHRyYVBsIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2V4dHJhL3BsJztcclxuaW1wb3J0IGxvY2FsZVVrIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL3VrJztcclxuaW1wb3J0IGxvY2FsZUV4dHJhVWsgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvZXh0cmEvdWsnO1xyXG5pbXBvcnQgbG9jYWxlSmEgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvamEnO1xyXG5pbXBvcnQgbG9jYWxlRXh0cmFKYSBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9leHRyYS9qYSc7XHJcbmltcG9ydCBsb2NhbGVLbyBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9rbyc7XHJcbmltcG9ydCBsb2NhbGVFeHRyYUtvIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2V4dHJhL2tvJztcclxuaW1wb3J0IGxvY2FsZUhpIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2hpJztcclxuaW1wb3J0IGxvY2FsZUV4dHJhSGkgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvZXh0cmEvaGknO1xyXG5pbXBvcnQgbG9jYWxlQm4gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvYm4nO1xyXG5pbXBvcnQgbG9jYWxlRXh0cmFCbiBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9leHRyYS9ibic7XHJcbmltcG9ydCBsb2NhbGVFbkdiIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2VuLUdCJztcclxuaW1wb3J0IGxvY2FsZUV4dHJhRW5HYiBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9leHRyYS9lbi1HQic7XHJcblxyXG4vKipcclxuICogQGlnbm9yZVxyXG4gKiBMb2FkZXIgdGhhdCBmZXRjaGVzIHRyYW5zbGF0aW9ucyBiYXNlZCBvbiB0aGUgY29uZmlndXJlZCBsb2NhdGlvbnNcclxuICovXHJcbmV4cG9ydCBjbGFzcyBFb3hUcmFuc2xhdGVKc29uTG9hZGVyIGltcGxlbWVudHMgVHJhbnNsYXRlTG9hZGVyIHtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGh0dHA6IEh0dHBDbGllbnQsIEBJbmplY3QoQ09SRV9DT05GSUcpIHB1YmxpYyBjb25maWc6IENvcmVDb25maWcpIHtcclxuICAgIHJlZ2lzdGVyTG9jYWxlRGF0YShsb2NhbGVEZSwgJ2RlJywgbG9jYWxlRXh0cmFEZSk7IC8vIEdlcm1hblxyXG4gICAgcmVnaXN0ZXJMb2NhbGVEYXRhKGxvY2FsZUFyLCAnYXInLCBsb2NhbGVFeHRyYUFyKTsgLy8gQXJhYmljXHJcbiAgICByZWdpc3RlckxvY2FsZURhdGEobG9jYWxlRXMsICdlcycsIGxvY2FsZUV4dHJhRXMpOyAvLyBTcGFuaXNoXHJcbiAgICByZWdpc3RlckxvY2FsZURhdGEobG9jYWxlUHQsICdwdCcsIGxvY2FsZUV4dHJhUHQpOyAvLyBQb3J0dWd1ZXNlXHJcbiAgICByZWdpc3RlckxvY2FsZURhdGEobG9jYWxlRnIsICdmcicsIGxvY2FsZUV4dHJhRnIpOyAvLyBGcmVuY2hcclxuICAgIHJlZ2lzdGVyTG9jYWxlRGF0YShsb2NhbGVaaCwgJ3poJywgbG9jYWxlRXh0cmFaaCk7IC8vIENoaW5lc2VcclxuICAgIHJlZ2lzdGVyTG9jYWxlRGF0YShsb2NhbGVMdiwgJ2x2JywgbG9jYWxlRXh0cmFMdik7IC8vIExhdHZpYW5cclxuICAgIHJlZ2lzdGVyTG9jYWxlRGF0YShsb2NhbGVSdSwgJ3J1JywgbG9jYWxlRXh0cmFSdSk7IC8vIFJ1c3NpYW5cclxuICAgIHJlZ2lzdGVyTG9jYWxlRGF0YShsb2NhbGVJdCwgJ2l0JywgbG9jYWxlRXh0cmFJdCk7IC8vIEl0YWxpYW5cclxuICAgIHJlZ2lzdGVyTG9jYWxlRGF0YShsb2NhbGVObCwgJ25sJywgbG9jYWxlRXh0cmFObCk7IC8vIER1dGNoXHJcbiAgICByZWdpc3RlckxvY2FsZURhdGEobG9jYWxlU2ssICdzaycsIGxvY2FsZUV4dHJhU2spOyAvLyBTbG92YWtcclxuICAgIHJlZ2lzdGVyTG9jYWxlRGF0YShsb2NhbGVQbCwgJ3BsJywgbG9jYWxlRXh0cmFQbCk7IC8vIFBvbGlzaFxyXG4gICAgcmVnaXN0ZXJMb2NhbGVEYXRhKGxvY2FsZVVrLCAndWsnLCBsb2NhbGVFeHRyYVVrKTsgLy8gVWtyYWluaWFuXHJcbiAgICByZWdpc3RlckxvY2FsZURhdGEobG9jYWxlSmEsICdqYScsIGxvY2FsZUV4dHJhSmEpOyAvLyBKYXBhbmVzZVxyXG4gICAgcmVnaXN0ZXJMb2NhbGVEYXRhKGxvY2FsZUtvLCAna28nLCBsb2NhbGVFeHRyYUtvKTsgLy8gS29yZWFuXHJcbiAgICByZWdpc3RlckxvY2FsZURhdGEobG9jYWxlSGksICdoaScsIGxvY2FsZUV4dHJhSGkpOyAvLyBIaW5kaVxyXG4gICAgcmVnaXN0ZXJMb2NhbGVEYXRhKGxvY2FsZUJuLCAnYm4nLCBsb2NhbGVFeHRyYUJuKTsgLy8gQmVuZ2FsZXNlXHJcbiAgICByZWdpc3RlckxvY2FsZURhdGEobG9jYWxlRGVDaCwgJ2RlLUNIJywgbG9jYWxlRXh0cmFEZUNoKTsgLy8gR2VybWFuIChzd2l0emVybGFuZClcclxuICAgIHJlZ2lzdGVyTG9jYWxlRGF0YShsb2NhbGVFbkdiLCAnZW4tR0InLCBsb2NhbGVFeHRyYUVuR2IpOyAvLyBFbmdsaXNoIChHcmVhdC1Ccml0YWluKVxyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHN0cmluZyBsYW5nXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxPYmplY3Q+XHJcbiAgICovXHJcbiAgZ2V0VHJhbnNsYXRpb24obGFuZzogc3RyaW5nKTogT2JzZXJ2YWJsZTxPYmplY3Q+IHtcclxuICAgIHJldHVybiBmb3JrSm9pbih0aGlzLmNvbmZpZy50cmFuc2xhdGlvbnMubWFwKGZvbGRlciA9PiB0aGlzLmxvYWRUcmFuc2xhdGlvbkZpbGUoZm9sZGVyLCBsYW5nKSkpLnBpcGUoXHJcbiAgICAgIG1hcCgocmVzKSA9PiByZXMucmVkdWNlKChhY2MsIHgpID0+IE9iamVjdC5hc3NpZ24oYWNjLCB4KSwge30pKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZFRyYW5zbGF0aW9uRmlsZShmb2xkZXI6IHN0cmluZywgbGFuZzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke2ZvbGRlcn0ke2xhbmd9Lmpzb25gKS5waXBlKFxyXG4gICAgICBjYXRjaEVycm9yKChlKSA9PiB7XHJcbiAgICAgICAgLy8gSVNPIGNvZGVzIHdpdGggbW9yZSB0aGFuIDIgY2hhcmFjdGVycyBhcmUgc3ViLWxhbmd1YWdlcyBsaWtlIGRlLUNILlxyXG4gICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIHRyYW5zbGF0aW9uIGZpbGUgZm9yIHRoYXQgc3ViLWxhbmd1YWdlIHdlJ2xsIHRyeSB0byBsb2FkXHJcbiAgICAgICAgLy8gdGhlIGZpbGUgZm9yIHRoZSBiYXNlIGxhbmd1YWdlIChpbiB0aGlzIGNhc2UgZGUpLlxyXG4gICAgICAgIHJldHVybiBsYW5nLmxlbmd0aCA+IDIgPyB0aGlzLmxvYWRUcmFuc2xhdGlvbkZpbGUoZm9sZGVyLCBsYW5nLnN1YnN0cmluZygwLCAyKSkgOiBvZih7fSlcclxuICAgICAgfSlcclxuICAgIClcclxuICB9XHJcbn1cclxuIl19
|