@senior-agronegocio/angular-components 0.0.89 → 0.0.90

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.
Files changed (45) hide show
  1. package/bundles/senior-agronegocio-angular-components.umd.js +345 -342
  2. package/bundles/senior-agronegocio-angular-components.umd.js.map +1 -1
  3. package/bundles/senior-agronegocio-angular-components.umd.min.js +2 -2
  4. package/bundles/senior-agronegocio-angular-components.umd.min.js.map +1 -1
  5. package/common/agro-platform-utils.class.d.ts +9 -0
  6. package/common/agro-string-utils.class.d.ts +46 -146
  7. package/common/colors.class.d.ts +2 -0
  8. package/components/cancel-event-dialog/cancel-event-dialog.component.d.ts +2 -2
  9. package/enums/agro-numbers.enum.d.ts +3 -2
  10. package/esm2015/common/agro-cookie-utils.class.js +7 -3
  11. package/esm2015/common/agro-date-utils.class.js +7 -3
  12. package/esm2015/common/agro-logics.class.js +22 -20
  13. package/esm2015/common/agro-name-utils.class.js +5 -4
  14. package/esm2015/common/agro-number-utils.class.js +20 -10
  15. package/esm2015/common/agro-object-utils.class.js +9 -7
  16. package/esm2015/common/agro-platform-utils.class.js +46 -50
  17. package/esm2015/common/agro-string-utils.class.js +217 -215
  18. package/esm2015/common/colors.class.js +3 -1
  19. package/esm2015/components/cancel-event-dialog/cancel-event-dialog.component.js +8 -8
  20. package/esm2015/components/event-control-board/event-control-board.component.js +2 -2
  21. package/esm2015/components/event-steps/index.js +1 -1
  22. package/esm2015/enums/agro-numbers.enum.js +3 -2
  23. package/esm2015/services/websocket/websocket.service.js +2 -2
  24. package/esm5/common/agro-cookie-utils.class.js +7 -3
  25. package/esm5/common/agro-date-utils.class.js +7 -3
  26. package/esm5/common/agro-logics.class.js +34 -42
  27. package/esm5/common/agro-name-utils.class.js +5 -4
  28. package/esm5/common/agro-number-utils.class.js +20 -10
  29. package/esm5/common/agro-object-utils.class.js +9 -7
  30. package/esm5/common/agro-platform-utils.class.js +46 -50
  31. package/esm5/common/agro-string-utils.class.js +217 -215
  32. package/esm5/common/colors.class.js +3 -1
  33. package/esm5/components/cancel-event-dialog/cancel-event-dialog.component.js +8 -8
  34. package/esm5/components/event-control-board/event-control-board.component.js +2 -2
  35. package/esm5/components/event-steps/index.js +1 -1
  36. package/esm5/enums/agro-numbers.enum.js +3 -2
  37. package/esm5/services/websocket/websocket.service.js +2 -2
  38. package/fesm2015/senior-agronegocio-angular-components.js +334 -321
  39. package/fesm2015/senior-agronegocio-angular-components.js.map +1 -1
  40. package/fesm5/senior-agronegocio-angular-components.js +345 -342
  41. package/fesm5/senior-agronegocio-angular-components.js.map +1 -1
  42. package/package.json +1 -1
  43. package/common/numbers.d.ts +0 -6
  44. package/esm2015/common/numbers.js +0 -8
  45. package/esm5/common/numbers.js +0 -8
@@ -1,6 +1,9 @@
1
1
  import { AgroCookieUtils } from "./agro-cookie-utils.class";
2
- import { AgroObjectUtils } from "./agro-object-utils.class";
3
2
  import { StringUtils } from "./agro-string-utils.class";
3
+ // Cookie name constants
4
+ var COOKIE_TOKEN = 'com.senior.token';
5
+ var COOKIE_BASE_URL = 'com.senior.base.url';
6
+ var COOKIE_SERVICES_URL = 'com.senior.services.url';
4
7
  export { AgroPlatformUtils as APU, AgroPlatformUtils as PlatformUtils };
5
8
  var AgroPlatformUtils = /** @class */ (function () {
6
9
  function AgroPlatformUtils() {
@@ -11,31 +14,30 @@ var AgroPlatformUtils = /** @class */ (function () {
11
14
  * @returns
12
15
  */
13
16
  AgroPlatformUtils.getCurrentTenant = function () {
14
- var _a;
15
- var cookie = AgroCookieUtils.getCookie('com.senior.token', true);
16
- if (cookie) {
17
- var str = (_a = AgroObjectUtils.fromString(cookie)) === null || _a === void 0 ? void 0 : _a.tenantName;
18
- if (str) {
19
- return str;
20
- }
17
+ var tenant = AgroPlatformUtils.getTokenField('tenantName');
18
+ if (tenant) {
19
+ return tenant;
21
20
  }
22
- throw new Error('Cookie: "com.senior.token" não encontrado.');
21
+ throw new Error("Cookie: \"" + COOKIE_TOKEN + "\" n\u00E3o encontrado.");
23
22
  };
24
23
  /**
25
24
  * Retorna o locale do tenant atual
26
25
  *
27
26
  * @returns
28
27
  */
29
- AgroPlatformUtils.getCurrenTenantLocale = function () {
30
- var _a;
31
- var cookie = AgroCookieUtils.getCookie('com.senior.token', true);
32
- if (cookie) {
33
- var str = (_a = AgroObjectUtils.fromString(cookie)) === null || _a === void 0 ? void 0 : _a.locale;
34
- if (str) {
35
- return str;
36
- }
28
+ AgroPlatformUtils.getCurrentTenantLocale = function () {
29
+ var locale = AgroPlatformUtils.getTokenField('locale');
30
+ if (locale) {
31
+ return locale;
37
32
  }
38
- throw new Error('Cookie: "com.senior.token" não encontrado.');
33
+ throw new Error("Cookie: \"" + COOKIE_TOKEN + "\" n\u00E3o encontrado.");
34
+ };
35
+ /**
36
+ * @deprecated Use getCurrentTenantLocale()
37
+ * Mantido por compatibilidade retroativa.
38
+ */
39
+ AgroPlatformUtils.getCurrenTenantLocale = function () {
40
+ return AgroPlatformUtils.getCurrentTenantLocale();
39
41
  };
40
42
  /**
41
43
  * Retorna o usuário logado
@@ -43,15 +45,8 @@ var AgroPlatformUtils = /** @class */ (function () {
43
45
  * @returns string || null
44
46
  */
45
47
  AgroPlatformUtils.getCurrentUserName = function () {
46
- var _a;
47
- var cookie = AgroCookieUtils.getCookie('com.senior.token');
48
- if (cookie) {
49
- var str = (_a = AgroCookieUtils.parseCookieToObject(cookie, true)) === null || _a === void 0 ? void 0 : _a.fullName;
50
- if (str) {
51
- return str;
52
- }
53
- }
54
- return null;
48
+ var name = AgroPlatformUtils.getTokenField('fullName');
49
+ return name || null;
55
50
  };
56
51
  /**
57
52
  * Retorna o e-mail do usuário logado
@@ -59,16 +54,11 @@ var AgroPlatformUtils = /** @class */ (function () {
59
54
  * @returns string
60
55
  */
61
56
  AgroPlatformUtils.getCurrentUserEmail = function () {
62
- var _a;
63
- var cookie = AgroCookieUtils.getCookie('com.senior.token');
64
- if (cookie) {
65
- var str = (_a = AgroCookieUtils.parseCookieToObject(cookie, true)) === null || _a === void 0 ? void 0 : _a.email;
66
- if (str) {
67
- return str;
68
- }
57
+ var email = AgroPlatformUtils.getTokenField('email');
58
+ if (!email) {
59
+ console.info("Cookie: \"" + COOKIE_TOKEN + "\" n\u00E3o encontrado.");
69
60
  }
70
- console.error('Cookie: "com.senior.token" não encontrado.');
71
- return null;
61
+ return email || null;
72
62
  };
73
63
  /**
74
64
  * Retorna uma string com a baseURL atual
@@ -76,11 +66,11 @@ var AgroPlatformUtils = /** @class */ (function () {
76
66
  * @example "https://cloud-leaf.senior.com.br" || "https://platform.senior.com.br"
77
67
  */
78
68
  AgroPlatformUtils.getBaseURL = function () {
79
- var cookie = AgroCookieUtils.getCookie('com.senior.base.url');
69
+ var cookie = AgroCookieUtils.getCookie(COOKIE_BASE_URL);
80
70
  if (cookie) {
81
71
  return decodeURIComponent(cookie);
82
72
  }
83
- throw new Error('Cookie: "com.senior.base.url" não encontrado.');
73
+ throw new Error("Cookie: \"" + COOKIE_BASE_URL + "\" n\u00E3o encontrado.");
84
74
  };
85
75
  /**
86
76
  * Retorna uma string com a URL dos serviços
@@ -88,29 +78,35 @@ var AgroPlatformUtils = /** @class */ (function () {
88
78
  * @example "https://cloud-leaf.senior.com.br/t/senior.com.br/bridge/1.0/"
89
79
  */
90
80
  AgroPlatformUtils.getServicesURL = function () {
91
- var cookie = AgroCookieUtils.getCookie('com.senior.services.url');
81
+ var cookie = AgroCookieUtils.getCookie(COOKIE_SERVICES_URL);
92
82
  if (StringUtils.isNotEmpty(cookie)) {
93
83
  return decodeURIComponent(cookie);
94
84
  }
95
- throw new Error('Cookie: "com.senior.services.url" não encontrado.');
85
+ throw new Error("Cookie: \"" + COOKIE_SERVICES_URL + "\" n\u00E3o encontrado.");
96
86
  };
97
87
  /**
98
88
  * Retorna uma string com o token de acesso atual
99
89
  * Caso contrário, retorna uma instância de Error
100
90
  */
101
91
  AgroPlatformUtils.getCurrentAccessToken = function () {
102
- var _a;
103
- var cookie = AgroCookieUtils.getCookie('com.senior.token');
104
- if (cookie) {
105
- var str = (_a = AgroCookieUtils.parseCookieToObject(cookie, true)) === null || _a === void 0 ? void 0 : _a.access_token;
106
- if (str) {
107
- return str;
108
- }
92
+ var token = AgroPlatformUtils.getTokenField('access_token');
93
+ if (!token) {
94
+ console.info("Cookie: \"" + COOKIE_TOKEN + "\" n\u00E3o encontrado.");
95
+ }
96
+ return token || null;
97
+ };
98
+ /**
99
+ * Helper para extrair um campo do cookie de token.
100
+ */
101
+ AgroPlatformUtils.getTokenField = function (field) {
102
+ var cookie = AgroCookieUtils.getCookie(COOKIE_TOKEN);
103
+ if (!cookie) {
104
+ return undefined;
109
105
  }
110
- console.error('Cookie: "com.senior.token" não encontrado.');
111
- return null;
106
+ var obj = AgroCookieUtils.parseCookieToObject(cookie, true);
107
+ return obj[field];
112
108
  };
113
109
  return AgroPlatformUtils;
114
110
  }());
115
111
  export { AgroPlatformUtils };
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1wbGF0Zm9ybS11dGlscy5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItYWdyb25lZ29jaW8vYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tbW9uL2Fncm8tcGxhdGZvcm0tdXRpbHMuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFeEQsT0FBTyxFQUFDLGlCQUFpQixJQUFJLEdBQUcsRUFBRSxpQkFBaUIsSUFBSSxhQUFhLEVBQUMsQ0FBQztBQUV0RTtJQUFBO0lBNkdBLENBQUM7SUEzR0c7Ozs7T0FJRztJQUNJLGtDQUFnQixHQUF2Qjs7UUFDSSxJQUFNLE1BQU0sR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ25FLElBQUksTUFBTSxFQUFFO1lBQ1IsSUFBTSxHQUFHLFNBQUcsZUFBZSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsMENBQUUsVUFBVSxDQUFDO1lBQzNELElBQUksR0FBRyxFQUFFO2dCQUNMLE9BQU8sR0FBRyxDQUFDO2FBQ2Q7U0FDSjtRQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLHVDQUFxQixHQUE1Qjs7UUFDSSxJQUFNLE1BQU0sR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ25FLElBQUksTUFBTSxFQUFFO1lBQ1IsSUFBTSxHQUFHLFNBQUcsZUFBZSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsMENBQUUsTUFBTSxDQUFDO1lBQ3ZELElBQUksR0FBRyxFQUFFO2dCQUNMLE9BQU8sR0FBRyxDQUFDO2FBQ2Q7U0FDSjtRQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLG9DQUFrQixHQUF6Qjs7UUFDSSxJQUFNLE1BQU0sR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDN0QsSUFBSSxNQUFNLEVBQUU7WUFDUixJQUFNLEdBQUcsU0FBRyxlQUFlLENBQUMsbUJBQW1CLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQywwQ0FBRSxRQUFRLENBQUM7WUFDeEUsSUFBSSxHQUFHLEVBQUU7Z0JBQ0wsT0FBTyxHQUFHLENBQUM7YUFDZDtTQUNKO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxxQ0FBbUIsR0FBMUI7O1FBQ0ksSUFBTSxNQUFNLEdBQUcsZUFBZSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzdELElBQUksTUFBTSxFQUFFO1lBQ1IsSUFBTSxHQUFHLFNBQUcsZUFBZSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsMENBQUUsS0FBSyxDQUFDO1lBQ3JFLElBQUksR0FBRyxFQUFFO2dCQUNMLE9BQU8sR0FBRyxDQUFDO2FBQ2Q7U0FDSjtRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztRQUM1RCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLDRCQUFVLEdBQWpCO1FBQ0ksSUFBTSxNQUFNLEdBQUcsZUFBZSxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ2hFLElBQUksTUFBTSxFQUFFO1lBQ1IsT0FBTyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNyQztRQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsK0NBQStDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGdDQUFjLEdBQXJCO1FBQ0ksSUFBTSxNQUFNLEdBQUcsZUFBZSxDQUFDLFNBQVMsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQ3BFLElBQUksV0FBVyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNoQyxPQUFPLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3JDO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRDs7O09BR0c7SUFDSSx1Q0FBcUIsR0FBNUI7O1FBQ0ksSUFBTSxNQUFNLEdBQUcsZUFBZSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzdELElBQUksTUFBTSxFQUFFO1lBQ1IsSUFBTSxHQUFHLFNBQUcsZUFBZSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsMENBQUUsWUFBWSxDQUFDO1lBQzVFLElBQUksR0FBRyxFQUFFO2dCQUNMLE9BQU8sR0FBRyxDQUFDO2FBQ2Q7U0FDSjtRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztRQUM1RCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUwsd0JBQUM7QUFBRCxDQUFDLEFBN0dELElBNkdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWdyb0Nvb2tpZVV0aWxzIH0gZnJvbSBcIi4vYWdyby1jb29raWUtdXRpbHMuY2xhc3NcIjtcclxuaW1wb3J0IHsgQWdyb09iamVjdFV0aWxzIH0gZnJvbSBcIi4vYWdyby1vYmplY3QtdXRpbHMuY2xhc3NcIjtcclxuaW1wb3J0IHsgU3RyaW5nVXRpbHMgfSBmcm9tIFwiLi9hZ3JvLXN0cmluZy11dGlscy5jbGFzc1wiO1xyXG5cclxuZXhwb3J0IHtBZ3JvUGxhdGZvcm1VdGlscyBhcyBBUFUsIEFncm9QbGF0Zm9ybVV0aWxzIGFzIFBsYXRmb3JtVXRpbHN9O1xyXG5cclxuZXhwb3J0IGNsYXNzIEFncm9QbGF0Zm9ybVV0aWxzIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldG9ybmEgbyB0ZW5hbnQgYXR1YWxcclxuICAgICAqIENhc28gY29udHLDoXJpbywgcmV0b3JuYSB1bWEgaW5zdMOibmNpYSBkZSBFcnJvclxyXG4gICAgICogQHJldHVybnNcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGdldEN1cnJlbnRUZW5hbnQoKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBjb29raWUgPSBBZ3JvQ29va2llVXRpbHMuZ2V0Q29va2llKCdjb20uc2VuaW9yLnRva2VuJywgdHJ1ZSk7XHJcbiAgICAgICAgaWYgKGNvb2tpZSkge1xyXG4gICAgICAgICAgICBjb25zdCBzdHIgPSBBZ3JvT2JqZWN0VXRpbHMuZnJvbVN0cmluZyhjb29raWUpPy50ZW5hbnROYW1lO1xyXG4gICAgICAgICAgICBpZiAoc3RyKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ29va2llOiBcImNvbS5zZW5pb3IudG9rZW5cIiBuw6NvIGVuY29udHJhZG8uJyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRvcm5hIG8gbG9jYWxlIGRvIHRlbmFudCBhdHVhbFxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBnZXRDdXJyZW5UZW5hbnRMb2NhbGUoKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBjb29raWUgPSBBZ3JvQ29va2llVXRpbHMuZ2V0Q29va2llKCdjb20uc2VuaW9yLnRva2VuJywgdHJ1ZSk7XHJcbiAgICAgICAgaWYgKGNvb2tpZSkge1xyXG4gICAgICAgICAgICBjb25zdCBzdHIgPSBBZ3JvT2JqZWN0VXRpbHMuZnJvbVN0cmluZyhjb29raWUpPy5sb2NhbGU7XHJcbiAgICAgICAgICAgIGlmIChzdHIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBzdHI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb29raWU6IFwiY29tLnNlbmlvci50b2tlblwiIG7Do28gZW5jb250cmFkby4nKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldG9ybmEgbyB1c3XDoXJpbyBsb2dhZG9cclxuICAgICAqIENhc28gY29udHLDoXJpbywgcmV0b3JuYSB1bWEgaW5zdMOibmNpYSBkZSBFcnJvclxyXG4gICAgICogQHJldHVybnMgc3RyaW5nIHx8IG51bGxcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGdldEN1cnJlbnRVc2VyTmFtZSgpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgICAgICBjb25zdCBjb29raWUgPSBBZ3JvQ29va2llVXRpbHMuZ2V0Q29va2llKCdjb20uc2VuaW9yLnRva2VuJyk7XHJcbiAgICAgICAgaWYgKGNvb2tpZSkge1xyXG4gICAgICAgICAgICBjb25zdCBzdHIgPSBBZ3JvQ29va2llVXRpbHMucGFyc2VDb29raWVUb09iamVjdChjb29raWUsIHRydWUpPy5mdWxsTmFtZTtcclxuICAgICAgICAgICAgaWYgKHN0cikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0cjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldG9ybmEgbyBlLW1haWwgZG8gdXN1w6FyaW8gbG9nYWRvXHJcbiAgICAgKiBDYXNvIGNvbnRyw6FyaW8sIHJldG9ybmEgdW1hIGluc3TDom5jaWEgZGUgRXJyb3JcclxuICAgICAqIEByZXR1cm5zIHN0cmluZ1xyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZ2V0Q3VycmVudFVzZXJFbWFpbCgpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgICAgICBjb25zdCBjb29raWUgPSBBZ3JvQ29va2llVXRpbHMuZ2V0Q29va2llKCdjb20uc2VuaW9yLnRva2VuJyk7XHJcbiAgICAgICAgaWYgKGNvb2tpZSkge1xyXG4gICAgICAgICAgICBjb25zdCBzdHIgPSBBZ3JvQ29va2llVXRpbHMucGFyc2VDb29raWVUb09iamVjdChjb29raWUsIHRydWUpPy5lbWFpbDtcclxuICAgICAgICAgICAgaWYgKHN0cikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0cjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zb2xlLmVycm9yKCdDb29raWU6IFwiY29tLnNlbmlvci50b2tlblwiIG7Do28gZW5jb250cmFkby4nKTtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldG9ybmEgdW1hIHN0cmluZyBjb20gYSBiYXNlVVJMIGF0dWFsXHJcbiAgICAgKiBDYXNvIGNvbnRyw6FyaW8sIHJldG9ybmEgdW1hIGluc3TDom5jaWEgZGUgRXJyb3JcclxuICAgICAqIEBleGFtcGxlIFwiaHR0cHM6Ly9jbG91ZC1sZWFmLnNlbmlvci5jb20uYnJcIiB8fCBcImh0dHBzOi8vcGxhdGZvcm0uc2VuaW9yLmNvbS5iclwiXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBnZXRCYXNlVVJMKCk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgY29va2llID0gQWdyb0Nvb2tpZVV0aWxzLmdldENvb2tpZSgnY29tLnNlbmlvci5iYXNlLnVybCcpO1xyXG4gICAgICAgIGlmIChjb29raWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChjb29raWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nvb2tpZTogXCJjb20uc2VuaW9yLmJhc2UudXJsXCIgbsOjbyBlbmNvbnRyYWRvLicpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0b3JuYSB1bWEgc3RyaW5nIGNvbSBhIFVSTCBkb3Mgc2VydmnDp29zXHJcbiAgICAgKiBDYXNvIGNvbnRyw6FyaW8sIHJldG9ybmEgdW1hIGluc3TDom5jaWEgZGUgRXJyb3JcclxuICAgICAqIEBleGFtcGxlIFwiaHR0cHM6Ly9jbG91ZC1sZWFmLnNlbmlvci5jb20uYnIvdC9zZW5pb3IuY29tLmJyL2JyaWRnZS8xLjAvXCJcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGdldFNlcnZpY2VzVVJMKCk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgY29va2llID0gQWdyb0Nvb2tpZVV0aWxzLmdldENvb2tpZSgnY29tLnNlbmlvci5zZXJ2aWNlcy51cmwnKTtcclxuICAgICAgICBpZiAoU3RyaW5nVXRpbHMuaXNOb3RFbXB0eShjb29raWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoY29va2llKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb29raWU6IFwiY29tLnNlbmlvci5zZXJ2aWNlcy51cmxcIiBuw6NvIGVuY29udHJhZG8uJyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRvcm5hIHVtYSBzdHJpbmcgY29tIG8gdG9rZW4gZGUgYWNlc3NvIGF0dWFsXHJcbiAgICAgKiBDYXNvIGNvbnRyw6FyaW8sIHJldG9ybmEgdW1hIGluc3TDom5jaWEgZGUgRXJyb3JcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGdldEN1cnJlbnRBY2Nlc3NUb2tlbigpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgICAgICBjb25zdCBjb29raWUgPSBBZ3JvQ29va2llVXRpbHMuZ2V0Q29va2llKCdjb20uc2VuaW9yLnRva2VuJyk7XHJcbiAgICAgICAgaWYgKGNvb2tpZSkge1xyXG4gICAgICAgICAgICBjb25zdCBzdHIgPSBBZ3JvQ29va2llVXRpbHMucGFyc2VDb29raWVUb09iamVjdChjb29raWUsIHRydWUpPy5hY2Nlc3NfdG9rZW47XHJcbiAgICAgICAgICAgIGlmIChzdHIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBzdHI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignQ29va2llOiBcImNvbS5zZW5pb3IudG9rZW5cIiBuw6NvIGVuY29udHJhZG8uJyk7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1wbGF0Zm9ybS11dGlscy5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItYWdyb25lZ29jaW8vYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tbW9uL2Fncm8tcGxhdGZvcm0tdXRpbHMuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTVELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV4RCx3QkFBd0I7QUFDeEIsSUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQUM7QUFDeEMsSUFBTSxlQUFlLEdBQUcscUJBQXFCLENBQUM7QUFDOUMsSUFBTSxtQkFBbUIsR0FBRyx5QkFBeUIsQ0FBQztBQUV0RCxPQUFPLEVBQUMsaUJBQWlCLElBQUksR0FBRyxFQUFFLGlCQUFpQixJQUFJLGFBQWEsRUFBQyxDQUFDO0FBRXRFO0lBQUE7SUE2R0EsQ0FBQztJQTNHRzs7OztPQUlHO0lBQ0ksa0NBQWdCLEdBQXZCO1FBQ0ksSUFBTSxNQUFNLEdBQUcsaUJBQWlCLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdELElBQUksTUFBTSxFQUFFO1lBQ1IsT0FBTyxNQUFNLENBQUM7U0FDakI7UUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLGVBQVksWUFBWSw0QkFBbUIsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksd0NBQXNCLEdBQTdCO1FBQ0ksSUFBTSxNQUFNLEdBQUcsaUJBQWlCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pELElBQUksTUFBTSxFQUFFO1lBQ1IsT0FBTyxNQUFNLENBQUM7U0FDakI7UUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLGVBQVksWUFBWSw0QkFBbUIsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7O09BR0c7SUFDSSx1Q0FBcUIsR0FBNUI7UUFDSSxPQUFPLGlCQUFpQixDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDdEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxvQ0FBa0IsR0FBekI7UUFDSSxJQUFNLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekQsT0FBTyxJQUFJLElBQUksSUFBSSxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0kscUNBQW1CLEdBQTFCO1FBQ0ksSUFBTSxLQUFLLEdBQUcsaUJBQWlCLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDUixPQUFPLENBQUMsSUFBSSxDQUFDLGVBQVksWUFBWSw0QkFBbUIsQ0FBQyxDQUFDO1NBQzdEO1FBQ0QsT0FBTyxLQUFLLElBQUksSUFBSSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksNEJBQVUsR0FBakI7UUFDSSxJQUFNLE1BQU0sR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzFELElBQUksTUFBTSxFQUFFO1lBQ1IsT0FBTyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNyQztRQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsZUFBWSxlQUFlLDRCQUFtQixDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxnQ0FBYyxHQUFyQjtRQUNJLElBQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUM5RCxJQUFJLFdBQVcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDaEMsT0FBTyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNyQztRQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsZUFBWSxtQkFBbUIsNEJBQW1CLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksdUNBQXFCLEdBQTVCO1FBQ0ksSUFBTSxLQUFLLEdBQUcsaUJBQWlCLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDUixPQUFPLENBQUMsSUFBSSxDQUFDLGVBQVksWUFBWSw0QkFBbUIsQ0FBQyxDQUFDO1NBQzdEO1FBQ0QsT0FBTyxLQUFLLElBQUksSUFBSSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7T0FFRztJQUNZLCtCQUFhLEdBQTVCLFVBQTZCLEtBQWE7UUFDdEMsSUFBTSxNQUFNLEdBQUcsZUFBZSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsT0FBTyxTQUFTLENBQUM7U0FDcEI7UUFDRCxJQUFNLEdBQUcsR0FBRyxlQUFlLENBQUMsbUJBQW1CLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzlELE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFTCx3QkFBQztBQUFELENBQUMsQUE3R0QsSUE2R0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZ3JvQ29va2llVXRpbHMgfSBmcm9tIFwiLi9hZ3JvLWNvb2tpZS11dGlscy5jbGFzc1wiO1xyXG5pbXBvcnQgeyBBZ3JvT2JqZWN0VXRpbHMgfSBmcm9tIFwiLi9hZ3JvLW9iamVjdC11dGlscy5jbGFzc1wiO1xyXG5pbXBvcnQgeyBTdHJpbmdVdGlscyB9IGZyb20gXCIuL2Fncm8tc3RyaW5nLXV0aWxzLmNsYXNzXCI7XHJcblxyXG4vLyBDb29raWUgbmFtZSBjb25zdGFudHNcclxuY29uc3QgQ09PS0lFX1RPS0VOID0gJ2NvbS5zZW5pb3IudG9rZW4nO1xyXG5jb25zdCBDT09LSUVfQkFTRV9VUkwgPSAnY29tLnNlbmlvci5iYXNlLnVybCc7XHJcbmNvbnN0IENPT0tJRV9TRVJWSUNFU19VUkwgPSAnY29tLnNlbmlvci5zZXJ2aWNlcy51cmwnO1xyXG5cclxuZXhwb3J0IHtBZ3JvUGxhdGZvcm1VdGlscyBhcyBBUFUsIEFncm9QbGF0Zm9ybVV0aWxzIGFzIFBsYXRmb3JtVXRpbHN9O1xyXG5cclxuZXhwb3J0IGNsYXNzIEFncm9QbGF0Zm9ybVV0aWxzIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldG9ybmEgbyB0ZW5hbnQgYXR1YWxcclxuICAgICAqIENhc28gY29udHLDoXJpbywgcmV0b3JuYSB1bWEgaW5zdMOibmNpYSBkZSBFcnJvclxyXG4gICAgICogQHJldHVybnNcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGdldEN1cnJlbnRUZW5hbnQoKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCB0ZW5hbnQgPSBBZ3JvUGxhdGZvcm1VdGlscy5nZXRUb2tlbkZpZWxkKCd0ZW5hbnROYW1lJyk7XHJcbiAgICAgICAgaWYgKHRlbmFudCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGVuYW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvb2tpZTogXCIke0NPT0tJRV9UT0tFTn1cIiBuw6NvIGVuY29udHJhZG8uYCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRvcm5hIG8gbG9jYWxlIGRvIHRlbmFudCBhdHVhbFxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBnZXRDdXJyZW50VGVuYW50TG9jYWxlKCk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgbG9jYWxlID0gQWdyb1BsYXRmb3JtVXRpbHMuZ2V0VG9rZW5GaWVsZCgnbG9jYWxlJyk7XHJcbiAgICAgICAgaWYgKGxvY2FsZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbG9jYWxlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvb2tpZTogXCIke0NPT0tJRV9UT0tFTn1cIiBuw6NvIGVuY29udHJhZG8uYCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVwcmVjYXRlZCBVc2UgZ2V0Q3VycmVudFRlbmFudExvY2FsZSgpXHJcbiAgICAgKiBNYW50aWRvIHBvciBjb21wYXRpYmlsaWRhZGUgcmV0cm9hdGl2YS5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGdldEN1cnJlblRlbmFudExvY2FsZSgpOiBzdHJpbmcgeyAvLyBsZWdhY3kgdHlwbyByZXRhaW5lZFxyXG4gICAgICAgIHJldHVybiBBZ3JvUGxhdGZvcm1VdGlscy5nZXRDdXJyZW50VGVuYW50TG9jYWxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRvcm5hIG8gdXN1w6FyaW8gbG9nYWRvXHJcbiAgICAgKiBDYXNvIGNvbnRyw6FyaW8sIHJldG9ybmEgdW1hIGluc3TDom5jaWEgZGUgRXJyb3JcclxuICAgICAqIEByZXR1cm5zIHN0cmluZyB8fCBudWxsXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBnZXRDdXJyZW50VXNlck5hbWUoKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICAgICAgY29uc3QgbmFtZSA9IEFncm9QbGF0Zm9ybVV0aWxzLmdldFRva2VuRmllbGQoJ2Z1bGxOYW1lJyk7XHJcbiAgICAgICAgcmV0dXJuIG5hbWUgfHwgbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldG9ybmEgbyBlLW1haWwgZG8gdXN1w6FyaW8gbG9nYWRvXHJcbiAgICAgKiBDYXNvIGNvbnRyw6FyaW8sIHJldG9ybmEgdW1hIGluc3TDom5jaWEgZGUgRXJyb3JcclxuICAgICAqIEByZXR1cm5zIHN0cmluZ1xyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZ2V0Q3VycmVudFVzZXJFbWFpbCgpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgICAgICBjb25zdCBlbWFpbCA9IEFncm9QbGF0Zm9ybVV0aWxzLmdldFRva2VuRmllbGQoJ2VtYWlsJyk7XHJcbiAgICAgICAgaWYgKCFlbWFpbCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmluZm8oYENvb2tpZTogXCIke0NPT0tJRV9UT0tFTn1cIiBuw6NvIGVuY29udHJhZG8uYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBlbWFpbCB8fCBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0b3JuYSB1bWEgc3RyaW5nIGNvbSBhIGJhc2VVUkwgYXR1YWxcclxuICAgICAqIENhc28gY29udHLDoXJpbywgcmV0b3JuYSB1bWEgaW5zdMOibmNpYSBkZSBFcnJvclxyXG4gICAgICogQGV4YW1wbGUgXCJodHRwczovL2Nsb3VkLWxlYWYuc2VuaW9yLmNvbS5iclwiIHx8IFwiaHR0cHM6Ly9wbGF0Zm9ybS5zZW5pb3IuY29tLmJyXCJcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGdldEJhc2VVUkwoKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBjb29raWUgPSBBZ3JvQ29va2llVXRpbHMuZ2V0Q29va2llKENPT0tJRV9CQVNFX1VSTCk7XHJcbiAgICAgICAgaWYgKGNvb2tpZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGNvb2tpZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29va2llOiBcIiR7Q09PS0lFX0JBU0VfVVJMfVwiIG7Do28gZW5jb250cmFkby5gKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldG9ybmEgdW1hIHN0cmluZyBjb20gYSBVUkwgZG9zIHNlcnZpw6dvc1xyXG4gICAgICogQ2FzbyBjb250csOhcmlvLCByZXRvcm5hIHVtYSBpbnN0w6JuY2lhIGRlIEVycm9yXHJcbiAgICAgKiBAZXhhbXBsZSBcImh0dHBzOi8vY2xvdWQtbGVhZi5zZW5pb3IuY29tLmJyL3Qvc2VuaW9yLmNvbS5ici9icmlkZ2UvMS4wL1wiXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBnZXRTZXJ2aWNlc1VSTCgpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IGNvb2tpZSA9IEFncm9Db29raWVVdGlscy5nZXRDb29raWUoQ09PS0lFX1NFUlZJQ0VTX1VSTCk7XHJcbiAgICAgICAgaWYgKFN0cmluZ1V0aWxzLmlzTm90RW1wdHkoY29va2llKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGNvb2tpZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29va2llOiBcIiR7Q09PS0lFX1NFUlZJQ0VTX1VSTH1cIiBuw6NvIGVuY29udHJhZG8uYCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRvcm5hIHVtYSBzdHJpbmcgY29tIG8gdG9rZW4gZGUgYWNlc3NvIGF0dWFsXHJcbiAgICAgKiBDYXNvIGNvbnRyw6FyaW8sIHJldG9ybmEgdW1hIGluc3TDom5jaWEgZGUgRXJyb3JcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGdldEN1cnJlbnRBY2Nlc3NUb2tlbigpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgICAgICBjb25zdCB0b2tlbiA9IEFncm9QbGF0Zm9ybVV0aWxzLmdldFRva2VuRmllbGQoJ2FjY2Vzc190b2tlbicpO1xyXG4gICAgICAgIGlmICghdG9rZW4pIHtcclxuICAgICAgICAgICAgY29uc29sZS5pbmZvKGBDb29raWU6IFwiJHtDT09LSUVfVE9LRU59XCIgbsOjbyBlbmNvbnRyYWRvLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdG9rZW4gfHwgbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhlbHBlciBwYXJhIGV4dHJhaXIgdW0gY2FtcG8gZG8gY29va2llIGRlIHRva2VuLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHN0YXRpYyBnZXRUb2tlbkZpZWxkKGZpZWxkOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IGNvb2tpZSA9IEFncm9Db29raWVVdGlscy5nZXRDb29raWUoQ09PS0lFX1RPS0VOKTtcclxuICAgICAgICBpZiAoIWNvb2tpZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBvYmogPSBBZ3JvQ29va2llVXRpbHMucGFyc2VDb29raWVUb09iamVjdChjb29raWUsIHRydWUpO1xyXG4gICAgICAgIHJldHVybiBvYmpbZmllbGRdO1xyXG4gICAgfVxyXG5cclxufVxyXG4iXX0=