vcomply-workflow-engine 7.4.7 → 7.4.9
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/esm2022/lib/add-multiple-responsibility-container/add-multiple-responsibility-container.component.mjs +20 -1
- package/esm2022/lib/add-multiple-responsibility-with-tab/add-multiple-responsibility-with-tab.component.mjs +97 -44
- package/esm2022/lib/constants/responsibility.mjs +89 -1
- package/esm2022/lib/interfaces/responsibilty.interface.mjs +1 -1
- package/esm2022/lib/services/bulk-upload.service.mjs +146 -1
- package/esm2022/lib/sharedComponents/format-and-evidence/format-and-evidence.component.mjs +3 -2
- package/esm2022/lib/workflow-compliance/workflow-compliance.component.mjs +8 -3
- package/esm2022/lib/workflow-services/responsibility.service.mjs +4 -1
- package/fesm2022/vcomply-workflow-engine.mjs +479 -167
- package/fesm2022/vcomply-workflow-engine.mjs.map +1 -1
- package/lib/add-multiple-responsibility-with-tab/add-multiple-responsibility-with-tab.component.d.ts +11 -1
- package/lib/constants/responsibility.d.ts +13 -0
- package/lib/interfaces/responsibilty.interface.d.ts +1 -0
- package/lib/services/bulk-upload.service.d.ts +20 -0
- package/lib/workflow-risk/workflow-risk.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -58,6 +58,28 @@ export const FREQUENCY_DROPDOWN_LIST = [
|
|
|
58
58
|
'One Time',
|
|
59
59
|
'Other Frequency',
|
|
60
60
|
];
|
|
61
|
+
/** Due Date (Day) max is 7 for these frequencies (DD-02). */
|
|
62
|
+
export const WEEKDAY_FREQUENCIES = [
|
|
63
|
+
'weekly',
|
|
64
|
+
'every week',
|
|
65
|
+
'every 2 weeks',
|
|
66
|
+
'every 3 weeks',
|
|
67
|
+
'every fortnight',
|
|
68
|
+
];
|
|
69
|
+
export const SHORT_MONTH_NAMES = [
|
|
70
|
+
'jan',
|
|
71
|
+
'feb',
|
|
72
|
+
'mar',
|
|
73
|
+
'apr',
|
|
74
|
+
'may',
|
|
75
|
+
'jun',
|
|
76
|
+
'jul',
|
|
77
|
+
'aug',
|
|
78
|
+
'sep',
|
|
79
|
+
'oct',
|
|
80
|
+
'nov',
|
|
81
|
+
'dec',
|
|
82
|
+
];
|
|
61
83
|
export const FULL_MONTH_NAMES = [
|
|
62
84
|
'January',
|
|
63
85
|
'February',
|
|
@@ -72,8 +94,74 @@ export const FULL_MONTH_NAMES = [
|
|
|
72
94
|
'November',
|
|
73
95
|
'December',
|
|
74
96
|
];
|
|
97
|
+
export const FILE_VALIDATION_MESSAGES = {
|
|
98
|
+
HEADERS_MISSING: 'One or more required columns are missing or have been renamed. Use the original VComply template without modifying column headers.',
|
|
99
|
+
EXTRA_COLUMNS: 'Additional columns have been detected in the template. Please do not insert or delete columns. Download a fresh template and re-populate.',
|
|
100
|
+
};
|
|
101
|
+
export const REQUIRED_TEMPLATE_HEADERS = [
|
|
102
|
+
'responsibility name',
|
|
103
|
+
'entrusted by',
|
|
104
|
+
'key responsibility',
|
|
105
|
+
'risk class',
|
|
106
|
+
'format',
|
|
107
|
+
'evidence',
|
|
108
|
+
'reviewer',
|
|
109
|
+
];
|
|
110
|
+
export const REQUIRED_FREQUENCY_HEADERS = ['frequency'];
|
|
111
|
+
export const REQUIRED_ASSIGNEE_HEADERS = ['entrust to', 'person or group'];
|
|
112
|
+
export const ALLOWED_TEMPLATE_HEADERS = [
|
|
113
|
+
'responsibility name',
|
|
114
|
+
'program',
|
|
115
|
+
'program type',
|
|
116
|
+
'program category',
|
|
117
|
+
'entrusted by',
|
|
118
|
+
'entrust to',
|
|
119
|
+
'person or group',
|
|
120
|
+
'all or any persons',
|
|
121
|
+
'key responsibility',
|
|
122
|
+
'frequency of occurrence and completion window',
|
|
123
|
+
'frequency',
|
|
124
|
+
'due date',
|
|
125
|
+
'due time',
|
|
126
|
+
'start',
|
|
127
|
+
'fail',
|
|
128
|
+
'responsibility ends after occurences',
|
|
129
|
+
'responsibility ends after occurrences',
|
|
130
|
+
'responsibility ends by date',
|
|
131
|
+
'responsibility centre',
|
|
132
|
+
'responsibility center',
|
|
133
|
+
'risk class',
|
|
134
|
+
'objective',
|
|
135
|
+
'notes',
|
|
136
|
+
'format & evidence',
|
|
137
|
+
'format and evidence',
|
|
138
|
+
'format',
|
|
139
|
+
'format for responsibility',
|
|
140
|
+
'evidence',
|
|
141
|
+
'review of responsibility',
|
|
142
|
+
'reviewer',
|
|
143
|
+
'reviewer type',
|
|
144
|
+
'review start',
|
|
145
|
+
'review fail',
|
|
146
|
+
'overseer',
|
|
147
|
+
'always notify',
|
|
148
|
+
'notify on failure',
|
|
149
|
+
'collaborator',
|
|
150
|
+
'assessments or checkpoints',
|
|
151
|
+
'who should be shown',
|
|
152
|
+
'created the responsibility',
|
|
153
|
+
'number of occurrences',
|
|
154
|
+
'specify the type',
|
|
155
|
+
'no. of days',
|
|
156
|
+
'completion window',
|
|
157
|
+
'entrusted to',
|
|
158
|
+
'assignor',
|
|
159
|
+
'assignee',
|
|
160
|
+
];
|
|
75
161
|
export const VALIDATION_MESSAGES = {
|
|
76
162
|
DROPDOWN: 'The data added in this field is not valid. Select from the dropdown provided in the template.',
|
|
163
|
+
FILE_HEADERS_MISSING: FILE_VALIDATION_MESSAGES.HEADERS_MISSING,
|
|
164
|
+
FILE_EXTRA_COLUMNS: FILE_VALIDATION_MESSAGES.EXTRA_COLUMNS,
|
|
77
165
|
RESPONSIBILITY_NAME_REQUIRED: 'This is a mandatory field. Enter a name for this responsibility.',
|
|
78
166
|
RESPONSIBILITY_NAME_WHITESPACE: 'Responsibility Name cannot be blank or contain only spaces.',
|
|
79
167
|
PROGRAM_CATEGORY_MISMATCH: 'Program Category does not belong to the selected Program. Select a valid category for this Program.',
|
|
@@ -125,4 +213,4 @@ export const VALIDATION_MESSAGES = {
|
|
|
125
213
|
export function dueDateDayOutOfRangeMessage(frequency) {
|
|
126
214
|
return `The value provided is out of range for a [${frequency}] frequency. Select a valid option.`;
|
|
127
215
|
}
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2liaWxpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9jb25zdGFudHMvcmVzcG9uc2liaWxpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHO0lBQzdCLE1BQU07SUFDTixhQUFhO0lBQ2IsUUFBUTtJQUNSLFlBQVk7SUFDWixLQUFLO0NBQ04sQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHO0lBQ2pDLEtBQUssRUFBRSxPQUFPO0lBQ2QsT0FBTyxFQUFFLFNBQVM7SUFDbEIsSUFBSSxFQUFFLE1BQU07Q0FDSixDQUFDO0FBRVgsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUc7SUFDMUMsVUFBVTtJQUNWLGNBQWM7SUFDZCxtQkFBbUI7SUFDbkIsU0FBUztDQUNWLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztBQUVsRCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRztJQUN4QyxhQUFhO0lBQ2IsV0FBVztJQUNYLG1CQUFtQjtJQUNuQixRQUFRO0NBQ1QsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHO0lBQ3pDLDJEQUEyRDtJQUMzRCxzREFBc0Q7Q0FDdkQsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHO0lBQ25DLDRCQUE0QjtJQUM1QixrQ0FBa0M7Q0FDbkMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHO0lBQ3pDLFlBQVk7SUFDWix3Q0FBd0M7Q0FDekMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHO0lBQ3JDLE9BQU87SUFDUCxxQkFBcUI7SUFDckIsUUFBUTtJQUNSLGVBQWU7SUFDZixpQkFBaUI7SUFDakIsZUFBZTtJQUNmLGVBQWU7SUFDZixTQUFTO0lBQ1QsZUFBZTtJQUNmLHVCQUF1QjtJQUN2QixXQUFXO0lBQ1gsZ0JBQWdCO0lBQ2hCLFVBQVU7SUFDVixRQUFRO0lBQ1IsZUFBZTtJQUNmLGVBQWU7SUFDZixlQUFlO0lBQ2YsZUFBZTtJQUNmLGdCQUFnQjtJQUNoQixVQUFVO0lBQ1YsaUJBQWlCO0NBQ2xCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRztJQUM5QixTQUFTO0lBQ1QsVUFBVTtJQUNWLE9BQU87SUFDUCxPQUFPO0lBQ1AsS0FBSztJQUNMLE1BQU07SUFDTixNQUFNO0lBQ04sUUFBUTtJQUNSLFdBQVc7SUFDWCxTQUFTO0lBQ1QsVUFBVTtJQUNWLFVBQVU7Q0FDWCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUc7SUFDakMsUUFBUSxFQUNOLCtGQUErRjtJQUNqRyw0QkFBNEIsRUFDMUIsa0VBQWtFO0lBQ3BFLDhCQUE4QixFQUM1Qiw2REFBNkQ7SUFDL0QseUJBQXlCLEVBQ3ZCLHFHQUFxRztJQUN2RyxnQ0FBZ0MsRUFDOUIsOEdBQThHO0lBQ2hILDRCQUE0QixFQUMxQixrSEFBa0g7SUFDcEgsb0JBQW9CLEVBQ2xCLDhHQUE4RztJQUNoSCxxQkFBcUIsRUFDbkIsdUhBQXVIO0lBQ3pILGlCQUFpQixFQUFFLG9EQUFvRDtJQUN2RSxnQkFBZ0IsRUFDZCxrR0FBa0c7SUFDcEcsaUJBQWlCLEVBQ2YsOEVBQThFO0lBQ2hGLHFCQUFxQixFQUNuQixrTEFBa0w7SUFDcEwsbUJBQW1CLEVBQ2pCLDhHQUE4RztJQUNoSCwwQkFBMEIsRUFDeEIsZ0lBQWdJO0lBQ2xJLGtCQUFrQixFQUFFLDhDQUE4QztJQUNsRSx1QkFBdUIsRUFDckIsdUdBQXVHO0lBQ3pHLHlCQUF5QixFQUN2QixxRkFBcUY7SUFDdkYsaUJBQWlCLEVBQ2YsNkVBQTZFO0lBQy9FLHNCQUFzQixFQUNwQix1R0FBdUc7SUFDekcsY0FBYyxFQUNaLDBHQUEwRztJQUM1RyxvQkFBb0IsRUFDbEIsMEhBQTBIO0lBQzVILFdBQVcsRUFDVCxnSEFBZ0g7SUFDbEgsdUJBQXVCLEVBQ3JCLGtJQUFrSTtJQUNwSSxrQkFBa0IsRUFBRSx5QkFBeUI7SUFDN0MsaUJBQWlCLEVBQUUsd0RBQXdEO0lBQzNFLDhCQUE4QixFQUM1QiwrR0FBK0c7SUFDakgsNEJBQTRCLEVBQzFCLCtGQUErRjtJQUNqRyw0QkFBNEIsRUFDMUIsdUZBQXVGO0lBQ3pGLGtCQUFrQixFQUFFLHdEQUF3RDtJQUM1RSxxQkFBcUIsRUFBRSwrQ0FBK0M7SUFDdEUsa0JBQWtCLEVBQ2hCLCtHQUErRztJQUNqSCxrQkFBa0IsRUFDaEIsOEhBQThIO0lBQ2hJLHlCQUF5QixFQUN2QiwwSEFBMEg7SUFDNUgsbUJBQW1CLEVBQ2pCLHdEQUF3RDtJQUMxRCxhQUFhLEVBQUUscURBQXFEO0lBQ3BFLFVBQVUsRUFDUixvRUFBb0U7SUFDdEUsR0FBRyxFQUFFLG9GQUFvRjtJQUN6RixXQUFXLEVBQ1QsbUZBQW1GO0lBQ3JGLFFBQVEsRUFBRSxtQkFBbUI7SUFDN0IsUUFBUSxFQUNOLHFIQUFxSDtJQUN2SCx3Q0FBd0MsRUFBRSx3QkFBd0I7SUFDbEUsOEJBQThCLEVBQUUsdUJBQXVCO0lBQ3ZELHlCQUF5QixFQUN2QixzRUFBc0U7SUFDeEUsZUFBZSxFQUFFLDJCQUEyQjtJQUM1QywwQkFBMEIsRUFDeEIsK0ZBQStGO0lBQ2pHLHVCQUF1QixFQUNyQixzSEFBc0g7SUFDeEgsaUJBQWlCLEVBQ2Ysa0dBQWtHO0lBQ3BHLHFCQUFxQixFQUNuQixtS0FBbUs7Q0FDdEssQ0FBQztBQUVGLE1BQU0sVUFBVSwyQkFBMkIsQ0FBQyxTQUFpQjtJQUMzRCxPQUFPLDZDQUE2QyxTQUFTLHFDQUFxQyxDQUFDO0FBQ3JHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgUklTS19DTEFTU19MSVNUID0gW1xyXG4gICdoaWdoJyxcclxuICAnbWVkaXVtLWhpZ2gnLFxyXG4gICdtZWRpdW0nLFxyXG4gICdsb3ctbWVkaXVtJyxcclxuICAnbG93JyxcclxuXTtcclxuXHJcbmV4cG9ydCBjb25zdCBWQUxJREFUSU9OX1NFVkVSSVRZID0ge1xyXG4gIEVSUk9SOiAnZXJyb3InLFxyXG4gIFdBUk5JTkc6ICd3YXJuaW5nJyxcclxuICBJTkZPOiAnaW5mbycsXHJcbn0gYXMgY29uc3Q7XHJcblxyXG5leHBvcnQgY29uc3QgTk9OX0JMT0NLSU5HX0RST1BET1dOX0ZJRUxEUyA9IFtcclxuICAnYXNzaWdub3InLFxyXG4gICdhc3NpZ25lZVR5cGUnLFxyXG4gICdrZXlSZXNwb25zaWJpbGl0eScsXHJcbiAgJ2R1ZVRpbWUnLFxyXG5dO1xyXG5cclxuZXhwb3J0IGNvbnN0IFlFU19OT19EUk9QRE9XTl9MSVNUID0gWydZZXMnLCAnTm8nXTtcclxuXHJcbmV4cG9ydCBjb25zdCBQUk9HUkFNX1RZUEVfRFJPUERPV05fTElTVCA9IFtcclxuICAnUmVndWxhdGlvbnMnLFxyXG4gICdTdGFuZGFyZHMnLFxyXG4gICdJbnRlcm5hbCBDb250cm9scycsXHJcbiAgJ090aGVycycsXHJcbl07XHJcblxyXG5leHBvcnQgY29uc3QgQVNTSUdORUVfVFlQRV9EUk9QRE9XTl9MSVNUID0gW1xyXG4gICdBbGwgc2VsZWN0ZWQgcGVyc29ucyBuZWVkIHRvIGNvbXBsZXRlIHRoaXMgcmVzcG9uc2liaWxpdHknLFxyXG4gICdBbnkgc2VsZWN0ZWQgcGVyc29uIGNhbiBjb21wbGV0ZSB0aGlzIHJlc3BvbnNpYmlsaXR5JyxcclxuXTtcclxuXHJcbmV4cG9ydCBjb25zdCBSQ19UWVBFX0RST1BET1dOX0xJU1QgPSBbXHJcbiAgJ0Fzc2lnbiBzYW1lIHJlc3BvbnNpYmlsaXR5JyxcclxuICAnQ3JlYXRlIHNlcGFyYXRlIHJlc3BvbnNpYmlsaXRpZXMnLFxyXG5dO1xyXG5cclxuZXhwb3J0IGNvbnN0IFJFVklFV0VSX1RZUEVfRFJPUERPV05fTElTVCA9IFtcclxuICAnU0VRVUVOVElBTCcsXHJcbiAgJ0FOWSBSRVZJRVdFUiBDQU4gTUFSSyBUSElTIEFTIFJFVklFV0VEJyxcclxuXTtcclxuXHJcbmV4cG9ydCBjb25zdCBGUkVRVUVOQ1lfRFJPUERPV05fTElTVCA9IFtcclxuICAnRGFpbHknLFxyXG4gICdFdmVyeSBBbHRlcm5hdGUgRGF5JyxcclxuICAnV2Vla2x5JyxcclxuICAnRXZlcnkgMTAgRGF5cycsXHJcbiAgJ0V2ZXJ5IEZvcnRuaWdodCcsXHJcbiAgJ0V2ZXJ5IDIgV2Vla3MnLFxyXG4gICdFdmVyeSAzIFdlZWtzJyxcclxuICAnTW9udGhseScsXHJcbiAgJ0V2ZXJ5IDQ1IERheXMnLFxyXG4gICdFdmVyeSBBbHRlcm5hdGUgTW9udGgnLFxyXG4gICdRdWFydGVybHknLFxyXG4gICdFdmVyeSAxMjAgRGF5cycsXHJcbiAgJ0JpYW5udWFsJyxcclxuICAnQW5udWFsJyxcclxuICAnRXZlcnkgMiBZZWFycycsXHJcbiAgJ0V2ZXJ5IDMgWWVhcnMnLFxyXG4gICdFdmVyeSA0IFllYXJzJyxcclxuICAnRXZlcnkgNSBZZWFycycsXHJcbiAgJ0V2ZXJ5IDEwIFllYXJzJyxcclxuICAnT25lIFRpbWUnLFxyXG4gICdPdGhlciBGcmVxdWVuY3knLFxyXG5dO1xyXG5cclxuZXhwb3J0IGNvbnN0IEZVTExfTU9OVEhfTkFNRVMgPSBbXHJcbiAgJ0phbnVhcnknLFxyXG4gICdGZWJydWFyeScsXHJcbiAgJ01hcmNoJyxcclxuICAnQXByaWwnLFxyXG4gICdNYXknLFxyXG4gICdKdW5lJyxcclxuICAnSnVseScsXHJcbiAgJ0F1Z3VzdCcsXHJcbiAgJ1NlcHRlbWJlcicsXHJcbiAgJ09jdG9iZXInLFxyXG4gICdOb3ZlbWJlcicsXHJcbiAgJ0RlY2VtYmVyJyxcclxuXTtcclxuXHJcbmV4cG9ydCBjb25zdCBWQUxJREFUSU9OX01FU1NBR0VTID0ge1xyXG4gIERST1BET1dOOlxyXG4gICAgJ1RoZSBkYXRhIGFkZGVkIGluIHRoaXMgZmllbGQgaXMgbm90IHZhbGlkLiBTZWxlY3QgZnJvbSB0aGUgZHJvcGRvd24gcHJvdmlkZWQgaW4gdGhlIHRlbXBsYXRlLicsXHJcbiAgUkVTUE9OU0lCSUxJVFlfTkFNRV9SRVFVSVJFRDpcclxuICAgICdUaGlzIGlzIGEgbWFuZGF0b3J5IGZpZWxkLiBFbnRlciBhIG5hbWUgZm9yIHRoaXMgcmVzcG9uc2liaWxpdHkuJyxcclxuICBSRVNQT05TSUJJTElUWV9OQU1FX1dISVRFU1BBQ0U6XHJcbiAgICAnUmVzcG9uc2liaWxpdHkgTmFtZSBjYW5ub3QgYmUgYmxhbmsgb3IgY29udGFpbiBvbmx5IHNwYWNlcy4nLFxyXG4gIFBST0dSQU1fQ0FURUdPUllfTUlTTUFUQ0g6XHJcbiAgICAnUHJvZ3JhbSBDYXRlZ29yeSBkb2VzIG5vdCBiZWxvbmcgdG8gdGhlIHNlbGVjdGVkIFByb2dyYW0uIFNlbGVjdCBhIHZhbGlkIGNhdGVnb3J5IGZvciB0aGlzIFByb2dyYW0uJyxcclxuICBQUk9HUkFNX0NBVEVHT1JZX1dJVEhPVVRfUFJPR1JBTTpcclxuICAgICdQcm9ncmFtIENhdGVnb3J5IGhhcyBiZWVuIHByb3ZpZGVkIHdpdGhvdXQgYSBQcm9ncmFtLiBTZWxlY3QgYSBQcm9ncmFtLCBvciBjbGVhciB0aGUgUHJvZ3JhbSBDYXRlZ29yeSBmaWVsZC4nLFxyXG4gIFBST0dSQU1fVFlQRV9XSVRIT1VUX1BST0dSQU06XHJcbiAgICAnUHJvZ3JhbSBUeXBlIGhhcyBiZWVuIHByb3ZpZGVkIHdpdGhvdXQgYSBQcm9ncmFtLiBQbGVhc2UgYWxzbyBzZWxlY3QgYSBQcm9ncmFtLCBvciBjbGVhciB0aGUgUHJvZ3JhbSBUeXBlIGZpZWxkLicsXHJcbiAgRU5UUlVTVEVEX0JZX0lOVkFMSUQ6XHJcbiAgICAnVGhpcyBpcyBub3QgYSB2YWxpZCB1c2VyLiBTZWxlY3QgYSB1c2VyIGZyb20gdGhlIGRyb3Bkb3duIG9yIGxlYXZlIGJsYW5rIHRvIHVzZSB5b3VyIGFjY291bnQgYXMgdGhlIGRlZmF1bHQuJyxcclxuICBFTlRSVVNURURfQllfSU5BQ1RJVkU6XHJcbiAgICAnVGhlIHVzZXIgc2VsZWN0ZWQgaW4gdGhpcyBmaWVsZCBpcyBpbmFjdGl2ZS4gU2VsZWN0IGFuIGFjdGl2ZSB1c2VyIG9yIGxlYXZlIGJsYW5rIHRvIHVzZSB5b3VyIGFjY291bnQgYXMgdGhlIGRlZmF1bHQuJyxcclxuICBBU1NJR05FRV9SRVFVSVJFRDogJ1RoaXMgaXMgYSBtYW5kYXRvcnkgZmllbGQuIFNlbGVjdCBhIHVzZXIgb3IgZ3JvdXAuJyxcclxuICBBU1NJR05FRV9JTlZBTElEOlxyXG4gICAgJ1RoaXMgaXMgbm90IGEgdmFsaWQgdXNlciBvciBncm91cCBpbiBWQ29tcGx5LiBTZWxlY3QgZnJvbSB0aGUgZHJvcGRvd24gcHJvdmlkZWQgaW4gdGhlIHRlbXBsYXRlLicsXHJcbiAgQVNTSUdORUVfSU5BQ1RJVkU6XHJcbiAgICAnVGhlIHVzZXIgc2VsZWN0ZWQgaW4gdGhpcyBmaWVsZCBpcyBpbmFjdGl2ZS4gU2VsZWN0IGFuIGFjdGl2ZSB1c2VyIG9yIGdyb3VwLicsXHJcbiAgQVNTSUdORUVfVFlQRV9JTlZBTElEOlxyXG4gICAgJ1RoZSBkYXRhIGFkZGVkIGluIHRoaXMgZmllbGQgaXMgbm90IHZhbGlkLiBTZWxlY3QgZnJvbSB0aGUgZHJvcGRvd24gcHJvdmlkZWQgaW4gdGhlIHRlbXBsYXRlIG9yIHRoZSBkZWZhdWx0IHNlbGVjdGlvbiBvZiBcIkFueSBzZWxlY3QgcGVyc29uIGNhbiBjb21wbGV0ZWQgdGhpc1wiIHdpbGwgYmUgYXBwbGllZC4nLFxyXG4gIEdST1VQX0FMTF9BTllfQkxBTks6XHJcbiAgICBcIkEgZ3JvdXAgaGFzIGJlZW4gYXNzaWduZWQuIFRoZSBkZWZhdWx0IHNlbGVjdGlvbiBvZiAnQW55IHNlbGVjdGVkIHBlcnNvbiBjYW4gY29tcGxldGUgdGhpcycgd2lsbCBiZSBhcHBsaWVkLlwiLFxyXG4gIEtFWV9SRVNQT05TSUJJTElUWV9JTlZBTElEOlxyXG4gICAgXCJUaGUgZGF0YSBhZGRlZCBpbiB0aGlzIGZpZWxkIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHNlbGVjdCAnWWVzJywgJ05vJywgb3IgbGVhdmUgYmxhbmsgKGRlZmF1bHRzIHRvICdOb3QgYSBLZXkgUmVzcG9uc2liaWxpdHknKS5cIixcclxuICBGUkVRVUVOQ1lfUkVRVUlSRUQ6ICdUaGlzIGlzIG1hbmRhdG9yeSBmaWVsZC4gU2VsZWN0IGEgZnJlcXVlbmN5LicsXHJcbiAgRFVFX0RBVEVfREFZX05PVF9OVU1CRVI6XHJcbiAgICAnVGhlIGRhdGEgYWRkZWQgaW4gdGhpcyBmaWVsZCBpcyBub3QgdmFsaWQuIEVudGVyIGEgbnVtYmVyIGZyb20gdGhlIGRyb3Bkb3duIHByb3ZpZGVkIGluIHRoZSB0ZW1wbGF0ZS4nLFxyXG4gIERVRV9EQVRFX0RBWV9PVVRfT0ZfUkFOR0U6XHJcbiAgICAnVGhlIHZhbHVlIHByb3ZpZGVkIGlzIG91dCBvZiByYW5nZSBmb3IgYSBbV2Vla2x5XSBmcmVxdWVuY3kuIFNlbGVjdCBhIHZhbGlkIG9wdGlvbi4nLFxyXG4gIERVRV9EQVRFX1JFUVVJUkVEOlxyXG4gICAgJ1RoaXMgaXMgbWFuZGF0b3J5IGZpZWxkLiBTZWxlY3QgZnJvbSB0aGUgZHJvcGRvd24gcHJvdmlkZWQgaW4gdGhlIHRlbXBsYXRlLicsXHJcbiAgRFVFX0RBVEVfTU9OVEhfSU5WQUxJRDpcclxuICAgICdUaGUgZGF0YSBhZGRlZCBpbiB0aGlzIGZpZWxkIGlzIG5vdCB2YWxpZC4gU2VsZWN0IGEgbW9udGggZnJvbSB0aGUgZHJvcGRvd24gcHJvdmlkZWQgaW4gdGhlIHRlbXBsYXRlLicsXHJcbiAgRFVFX1RJTUVfQkxBTks6XHJcbiAgICAnVGhlIHJlc3BvbnNpYmlsaXRpZXMgd2lsbCBiZSBjcmVhdGVkIHdpdGggYSBkZWZhdWx0IHRpbWUgb2YgMTE6MzAgUE0gYWNjb3JkaW5nIHRvIHlvdXIgVkNvbXBseSB0aW1lem9uZS4nLFxyXG4gIFJDX1RZUEVfV0lUSE9VVF9OQU1FOlxyXG4gICAgJ1Jlc3BvbnNpYmlsaXR5IENlbnRlciBUeXBlIGhhcyBiZWVuIHByb3ZpZGVkIHdpdGhvdXQgYSBSZXNwb25zaWJpbGl0eSBDZW50ZXIgTmFtZS4gRW50ZXIgdGhlIFJlc3BvbnNpYmlsaXR5IENlbnRlciBuYW1lLicsXHJcbiAgUkNfSU5BQ1RJVkU6XHJcbiAgICAnVGhpcyBSZXNwb25zaWJpbGl0eSBDZW50ZXIgbm8gbG9uZ2VyIGV4aXN0cyBpbiBWQ29tcGx5LiBTZWxlY3QgYW4gYWN0aXZlIFJlc3BvbnNpYmlsaXR5IENlbnRlciBvciBsZWF2ZSBibGFuay4nLFxyXG4gIEZPUk1BVF9MSU5LX1dJVEhPVVRfWUVTOlxyXG4gICAgJ0EgZm9ybWF0IGxpbmsgaGFzIGJlZW4gcHJvdmlkZWQgYnV0IEZvcm1hdCBzZWxlY3RvbiBpcyBzZXQgdG8gXCJOb1wiLiBTZXQgdGhlIEZvcm1hdCBmaWVsZCB0byBcIlllc1wiIGFuZCB1cGxvYWQgdGhlIHRlbXBsYXRlIGFnYWluLicsXHJcbiAgRk9STUFUX0lOVkFMSURfVVJMOiAnVGhpcyBpcyBhbiBpbnZhbGlkIFVSTC4nLFxyXG4gIFJFVklFV0VSX0lOQUNUSVZFOiAnVGhpcyB1c2VyIGlzIGluYWN0aXZlLiBTZWxlY3QgYW4gYWN0aXZlIHVzZXIgb3IgZ3JvdXAuJyxcclxuICBSRVZJRVdfV0lORE9XX1dJVEhPVVRfUkVWSUVXRVI6XHJcbiAgICAnUmV2aWV3IHdpbmRvdyBoYXMgYmVlbiBzcGVjaWZpZWQgYnV0IG5vIFJldmlld2VyIGhhcyBiZWVuIHNlbGVjdGVkLiBTZWxlY3QgYSBSZXZpZXdlciwgb3IgY2xlYXIgdGhlc2UgZmllbGRzLicsXHJcbiAgT1ZFUlNJR0hUX0RVUExJQ0FURV9BU1NJR05FRTpcclxuICAgICdUaGlzIHVzZXIgaXMgYWxyZWFkeSBhc3NpZ25lZCBhcyB0aGUgcHJpbWFyeSBBc3NpZ25lZS4gQWRkaW5nIHRoZW0gdG8gb3ZlcnNpZ2h0IGlzIHJlZHVuZGFudC4nLFxyXG4gIE9WRVJTSUdIVF9EVVBMSUNBVEVfQVNTSUdOT1I6XHJcbiAgICAnVGhpcyB1c2VyIGlzIGFscmVhZHkgYXNzaWduZWQgYXMgdGhlIEFzc2lnbm9yLiBBZGRpbmcgdGhlbSB0byBvdmVyc2lnaHQgaXMgcmVkdW5kYW50LicsXHJcbiAgT1ZFUlNJR0hUX0lOQUNUSVZFOiAnVGhpcyB1c2VyIGlzIGluYWN0aXZlLiBTZWxlY3QgYW4gYWN0aXZlIHVzZXIgb3IgZ3JvdXAuJyxcclxuICBDT0xMQUJPUkFUT1JfSU5BQ1RJVkU6ICdUaGlzIHVzZXIgaXMgaW5hY3RpdmUuIFNlbGVjdCBhbiBhY3RpdmUgdXNlci4nLFxyXG4gIENPTExBQk9SQVRPUl9HUk9VUDpcclxuICAgICdDb2xsYWJvcmF0b3JzIG11c3QgYmUgaW5kaXZpZHVhbCB1c2Vycywgbm90IGdyb3Vwcy4gUGxlYXNlIHNlbGVjdCBhIHNwZWNpZmljIHVzZXIgZm9yIHRoZSBDb2xsYWJvcmF0b3IgZmllbGQuJyxcclxuICBPTkVfVElNRV9MSUZFQ1lDTEU6XHJcbiAgICBcIkEgJ09uZSBUaW1lJyByZXNwb25zaWJpbGl0eSBjYW5ub3QgYWxzbyBoYXZlIGEgbGlmZWN5Y2xlIGVuZCBydWxlLiBDbGVhciB0aGUgRW5kcyBBZnRlciBPY2N1cnJlbmNlcyBhbmQgRW5kcyBCeSBEYXRlIGZpZWxkcy5cIixcclxuICBFTkRTX0FGVEVSX09ORV9PQ0NVUlJFTkNFOlxyXG4gICAgXCJFbmRpbmcgYWZ0ZXIgMSBvY2N1cnJlbmNlIGlzIGVxdWl2YWxlbnQgdG8gYSAnT25lIFRpbWUnIHJlc3BvbnNpYmlsaXR5LiBDb25zaWRlciB1c2luZyB0aGUgJ09uZSBUaW1lJyBmcmVxdWVuY3kgaW5zdGVhZC5cIixcclxuICBVU0VSX05PVF9JTl9QUk9HUkFNOlxyXG4gICAgJ1RoaXMgdXNlciBpcyBub3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBzZWxlY3RlZCBQcm9ncmFtLicsXHJcbiAgUEFTVF9EVUVfREFURTogJ1RoaXMgZGF0ZSBvY2N1cnMgaW4gdGhlIHBhc3QuIFNlbGVjdCBhIGZ1dHVyZSBkYXRlLicsXHJcbiAgUklTS19DTEFTUzpcclxuICAgICdJbnZhbGlkIHJpc2sgY2xhc3MuIFNlbGVjdCBhIHZhbGlkIG9wdGlvbiBmcm9tIHRoZSBkcm9wLWRvd24gbGlzdC4nLFxyXG4gIERBWTogJ0ludmFsaWQgZGF5IHNlbGVjdGlvbi4gU2VsZWN0IGEgdmFsaWQgZGF5IGZyb20gdGhlIGRyb3AtZG93biBsaXN0IGluIHRoZSB0ZW1wbGF0ZS4nLFxyXG4gIERBVEVfRk9STUFUOlxyXG4gICAgJ0ludmFsaWQgZGF0ZSBmb3JtYXQuIFNlbGVjdCBhIHZhbGlkIGRhdGUgZnJvbSB0aGUgZHJvcC1kb3duIGxpc3QgaW4gdGhlIHRlbXBsYXRlLicsXHJcbiAgRFVFX0RBVEU6ICdJbnZhbGlkIER1ZSBEYXRlLicsXHJcbiAgRFVFX1RJTUU6XHJcbiAgICBcIlRoaXMgdmFsdWUgZG9lcyBub3QgbWF0Y2ggdGhlIFZDb21wbHkgdGVtcGxhdGUncyBmb3JtYXQuIFVzZSB0aGUgY29ycmVjdCB2YWx1ZSBmcm9tIHRoZSBkcm9wLWRvd25zIGluIHRoZSB0ZW1wbGF0ZS5cIixcclxuICBFTkRTX0FGVEVSX09DQ1VSUkVOQ0VTX0dSRUFURVJfVEhBTl9aRVJPOiAnTXVzdCBiZSBncmVhdGVyIHRoYW4gMCcsXHJcbiAgRU5EU19BRlRFUl9PQ0NVUlJFTkNFU19OVU1FUklDOiAnTXVzdCBiZSBudW1lcmljIHZhbHVlJyxcclxuICBXSE9MRV9OVU1CRVJfTk9OX05FR0FUSVZFOlxyXG4gICAgJ011c3QgYmUgYSB3aG9sZSBudW1iZXIuIE5lZ2F0aXZlIGFuZCBkZWNpbWFsIHZhbHVlcyBhcmUgbm90IGFsbG93ZWQuJyxcclxuICBQT1NJVElWRV9OVU1CRVI6ICdNdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyJyxcclxuICBFTkRTX0JZX0RBVEVfSU5WQUxJRF9WQUxVRTpcclxuICAgICdUaGUgZGF0YSBhZGRlZCBpbiB0aGlzIGZpZWxkIGlzIG5vdCB2YWxpZC4gU2VsZWN0IGZyb20gdGhlIGRyb3Bkb3duIHByb3ZpZGVkIGluIHRoZSB0ZW1wbGF0ZS4nLFxyXG4gIEVORFNfQllfREFURV9JTkNPTVBMRVRFOlxyXG4gICAgJ0VuZHMgQnkgRGF0ZSByZXF1aXJlcyBib3RoIGEgZGF5IGFuZCBhIG1vbnRoLiBQbGVhc2UgY29tcGxldGUgYm90aCBmaWVsZHMgb3IgY2xlYXIgYm90aCB0byBsZWF2ZSB0aGUgZW5kIGRhdGUgdW5zZXQuJyxcclxuICBFTkRTX0JZX0RBVEVfUEFTVDpcclxuICAgICdUaGUgRW5kcyBCeSBEYXRlIGlzIGluIHRoZSBwYXN0LiBUaGlzIHJlc3BvbnNpYmlsaXR5IHdpbGwgYmUgY3JlYXRlZCB3aXRoIG5vIGZ1dHVyZSBvY2N1cnJlbmNlcy4nLFxyXG4gIEVORFNfQllfREFURV9DT05GTElDVDpcclxuICAgIFwiWW91IGhhdmUgcHJvdmlkZWQgdmFsdWVzIGZvciBib3RoICdFbmRzIEFmdGVyIE9jY3VycmVuY2VzJyBhbmQgJ0VuZHMgQnkgRGF0ZScuIEZpbGwgaW4gb25seSBvbmUsIG9yIGxlYXZlIGJvdGggYmxhbmsgaWYgdGhlIHJlc3BvbnNpYmlsaXR5IHdpbGwgYWx3YXlzIGJlIGFjdGl2ZS5cIixcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBkdWVEYXRlRGF5T3V0T2ZSYW5nZU1lc3NhZ2UoZnJlcXVlbmN5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gIHJldHVybiBgVGhlIHZhbHVlIHByb3ZpZGVkIGlzIG91dCBvZiByYW5nZSBmb3IgYSBbJHtmcmVxdWVuY3l9XSBmcmVxdWVuY3kuIFNlbGVjdCBhIHZhbGlkIG9wdGlvbi5gO1xyXG59XHJcbiJdfQ==
|
|
216
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2liaWxpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9jb25zdGFudHMvcmVzcG9uc2liaWxpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHO0lBQzdCLE1BQU07SUFDTixhQUFhO0lBQ2IsUUFBUTtJQUNSLFlBQVk7SUFDWixLQUFLO0NBQ04sQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHO0lBQ2pDLEtBQUssRUFBRSxPQUFPO0lBQ2QsT0FBTyxFQUFFLFNBQVM7SUFDbEIsSUFBSSxFQUFFLE1BQU07Q0FDSixDQUFDO0FBRVgsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUc7SUFDMUMsVUFBVTtJQUNWLGNBQWM7SUFDZCxtQkFBbUI7SUFDbkIsU0FBUztDQUNWLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztBQUVsRCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRztJQUN4QyxhQUFhO0lBQ2IsV0FBVztJQUNYLG1CQUFtQjtJQUNuQixRQUFRO0NBQ1QsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHO0lBQ3pDLDJEQUEyRDtJQUMzRCxzREFBc0Q7Q0FDdkQsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHO0lBQ25DLDRCQUE0QjtJQUM1QixrQ0FBa0M7Q0FDbkMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHO0lBQ3pDLFlBQVk7SUFDWix3Q0FBd0M7Q0FDekMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHO0lBQ3JDLE9BQU87SUFDUCxxQkFBcUI7SUFDckIsUUFBUTtJQUNSLGVBQWU7SUFDZixpQkFBaUI7SUFDakIs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QUN4RSxlQUFlLEVBQUUsMkJBQTJCO0lBQzVDLDBCQUEwQixFQUN4QiwrRkFBK0Y7SUFDakcsdUJBQXVCLEVBQ3JCLHNIQUFzSDtJQUN4SCxpQkFBaUIsRUFDZixrR0FBa0c7SUFDcEcscUJBQXFCLEVBQ25CLG1LQUFtSztDQUN0SyxDQUFDO0FBRUYsTUFBTSxVQUFVLDJCQUEyQixDQUFDLFNBQWlCO0lBQzNELE9BQU8sNkNBQTZDLFNBQVMscUNBQXFDLENBQUM7QUFDckcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBSSVNLX0NMQVNTX0xJU1QgPSBbXHJcbiAgJ2hpZ2gnLFxyXG4gICdtZWRpdW0taGlnaCcsXHJcbiAgJ21lZGl1bScsXHJcbiAgJ2xvdy1tZWRpdW0nLFxyXG4gICdsb3cnLFxyXG5dO1xyXG5cclxuZXhwb3J0IGNvbnN0IFZBTElEQVRJT05fU0VWRVJJVFkgPSB7XHJcbiAgRVJST1I6ICdlcnJvcicsXHJcbiAgV0FSTklORzogJ3dhcm5pbmcnLFxyXG4gIElORk86ICdpbmZvJyxcclxufSBhcyBjb25zdDtcclxuXHJcbmV4cG9ydCBjb25zdCBOT05fQkxPQ0tJTkdfRFJPUERPV05fRklFTERTID0gW1xyXG4gICdhc3NpZ25vcicsXHJcbiAgJ2Fzc2lnbmVlVHlwZScsXHJcbiAgJ2tleVJlc3BvbnNpYmlsaXR5JyxcclxuICAnZHVlVGltZScsXHJcbl07XHJcblxyXG5leHBvcnQgY29uc3QgWUVTX05PX0RST1BET1dOX0xJU1QgPSBbJ1llcycsICdObyddO1xyXG5cclxuZXhwb3J0IGNvbnN0IFBST0dSQU1fVFlQRV9EUk9QRE9XTl9MSVNUID0gW1xyXG4gICdSZWd1bGF0aW9ucycsXHJcbiAgJ1N0YW5kYXJkcycsXHJcbiAgJ0ludGVybmFsIENvbnRyb2xzJyxcclxuICAnT3RoZXJzJyxcclxuXTtcclxuXHJcbmV4cG9ydCBjb25zdCBBU1NJR05FRV9UWVBFX0RST1BET1dOX0xJU1QgPSBbXHJcbiAgJ0FsbCBzZWxlY3RlZCBwZXJzb25zIG5lZWQgdG8gY29tcGxldGUgdGhpcyByZXNwb25zaWJpbGl0eScsXHJcbiAgJ0FueSBzZWxlY3RlZCBwZXJzb24gY2FuIGNvbXBsZXRlIHRoaXMgcmVzcG9uc2liaWxpdHknLFxyXG5dO1xyXG5cclxuZXhwb3J0IGNvbnN0IFJDX1RZUEVfRFJPUERPV05fTElTVCA9IFtcclxuICAnQXNzaWduIHNhbWUgcmVzcG9uc2liaWxpdHknLFxyXG4gICdDcmVhdGUgc2VwYXJhdGUgcmVzcG9uc2liaWxpdGllcycsXHJcbl07XHJcblxyXG5leHBvcnQgY29uc3QgUkVWSUVXRVJfVFlQRV9EUk9QRE9XTl9MSVNUID0gW1xyXG4gICdTRVFVRU5USUFMJyxcclxuICAnQU5ZIFJFVklFV0VSIENBTiBNQVJLIFRISVMgQVMgUkVWSUVXRUQnLFxyXG5dO1xyXG5cclxuZXhwb3J0IGNvbnN0IEZSRVFVRU5DWV9EUk9QRE9XTl9MSVNUID0gW1xyXG4gICdEYWlseScsXHJcbiAgJ0V2ZXJ5IEFsdGVybmF0ZSBEYXknLFxyXG4gICdXZWVrbHknLFxyXG4gICdFdmVyeSAxMCBEYXlzJyxcclxuICAnRXZlcnkgRm9ydG5pZ2h0JyxcclxuICAnRXZlcnkgMiBXZWVrcycsXHJcbiAgJ0V2ZXJ5IDMgV2Vla3MnLFxyXG4gICdNb250aGx5JyxcclxuICAnRXZlcnkgNDUgRGF5cycsXHJcbiAgJ0V2ZXJ5IEFsdGVybmF0ZSBNb250aCcsXHJcbiAgJ1F1YXJ0ZXJseScsXHJcbiAgJ0V2ZXJ5IDEyMCBEYXlzJyxcclxuICAnQmlhbm51YWwnLFxyXG4gICdBbm51YWwnLFxyXG4gICdFdmVyeSAyIFllYXJzJyxcclxuICAnRXZlcnkgMyBZZWFycycsXHJcbiAgJ0V2ZXJ5IDQgWWVhcnMnLFxyXG4gICdFdmVyeSA1IFllYXJzJyxcclxuICAnRXZlcnkgMTAgWWVhcnMnLFxyXG4gICdPbmUgVGltZScsXHJcbiAgJ090aGVyIEZyZXF1ZW5jeScsXHJcbl07XHJcblxyXG4vKiogRHVlIERhdGUgKERheSkgbWF4IGlzIDcgZm9yIHRoZXNlIGZyZXF1ZW5jaWVzIChERC0wMikuICovXHJcbmV4cG9ydCBjb25zdCBXRUVLREFZX0ZSRVFVRU5DSUVTID0gW1xyXG4gICd3ZWVrbHknLFxyXG4gICdldmVyeSB3ZWVrJyxcclxuICAnZXZlcnkgMiB3ZWVrcycsXHJcbiAgJ2V2ZXJ5IDMgd2Vla3MnLFxyXG4gICdldmVyeSBmb3J0bmlnaHQnLFxyXG5dO1xyXG5cclxuZXhwb3J0IGNvbnN0IFNIT1JUX01PTlRIX05BTUVTID0gW1xyXG4gICdqYW4nLFxyXG4gICdmZWInLFxyXG4gICdtYXInLFxyXG4gICdhcHInLFxyXG4gICdtYXknLFxyXG4gICdqdW4nLFxyXG4gICdqdWwnLFxyXG4gICdhdWcnLFxyXG4gICdzZXAnLFxyXG4gICdvY3QnLFxyXG4gICdub3YnLFxyXG4gICdkZWMnLFxyXG5dO1xyXG5cclxuZXhwb3J0IGNvbnN0IEZVTExfTU9OVEhfTkFNRVMgPSBbXHJcbiAgJ0phbnVhcnknLFxyXG4gICdGZWJydWFyeScsXHJcbiAgJ01hcmNoJyxcclxuICAnQXByaWwnLFxyXG4gICdNYXknLFxyXG4gICdKdW5lJyxcclxuICAnSnVseScsXHJcbiAgJ0F1Z3VzdCcsXHJcbiAgJ1NlcHRlbWJlcicsXHJcbiAgJ09jdG9iZXInLFxyXG4gICdOb3ZlbWJlcicsXHJcbiAgJ0RlY2VtYmVyJyxcclxuXTtcclxuXHJcbmV4cG9ydCBjb25zdCBGSUxFX1ZBTElEQVRJT05fTUVTU0FHRVMgPSB7XHJcbiAgSEVBREVSU19NSVNTSU5HOlxyXG4gICAgJ09uZSBvciBtb3JlIHJlcXVpcmVkIGNvbHVtbnMgYXJlIG1pc3Npbmcgb3IgaGF2ZSBiZWVuIHJlbmFtZWQuIFVzZSB0aGUgb3JpZ2luYWwgVkNvbXBseSB0ZW1wbGF0ZSB3aXRob3V0IG1vZGlmeWluZyBjb2x1bW4gaGVhZGVycy4nLFxyXG4gIEVYVFJBX0NPTFVNTlM6XHJcbiAgICAnQWRkaXRpb25hbCBjb2x1bW5zIGhhdmUgYmVlbiBkZXRlY3RlZCBpbiB0aGUgdGVtcGxhdGUuIFBsZWFzZSBkbyBub3QgaW5zZXJ0IG9yIGRlbGV0ZSBjb2x1bW5zLiBEb3dubG9hZCBhIGZyZXNoIHRlbXBsYXRlIGFuZCByZS1wb3B1bGF0ZS4nLFxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IFJFUVVJUkVEX1RFTVBMQVRFX0hFQURFUlMgPSBbXHJcbiAgJ3Jlc3BvbnNpYmlsaXR5IG5hbWUnLFxyXG4gICdlbnRydXN0ZWQgYnknLFxyXG4gICdrZXkgcmVzcG9uc2liaWxpdHknLFxyXG4gICdyaXNrIGNsYXNzJyxcclxuICAnZm9ybWF0JyxcclxuICAnZXZpZGVuY2UnLFxyXG4gICdyZXZpZXdlcicsXHJcbl07XHJcblxyXG5leHBvcnQgY29uc3QgUkVRVUlSRURfRlJFUVVFTkNZX0hFQURFUlMgPSBbJ2ZyZXF1ZW5jeSddO1xyXG5cclxuZXhwb3J0IGNvbnN0IFJFUVVJUkVEX0FTU0lHTkVFX0hFQURFUlMgPSBbJ2VudHJ1c3QgdG8nLCAncGVyc29uIG9yIGdyb3VwJ107XHJcblxyXG5leHBvcnQgY29uc3QgQUxMT1dFRF9URU1QTEFURV9IRUFERVJTID0gW1xyXG4gICdyZXNwb25zaWJpbGl0eSBuYW1lJyxcclxuICAncHJvZ3JhbScsXHJcbiAgJ3Byb2dyYW0gdHlwZScsXHJcbiAgJ3Byb2dyYW0gY2F0ZWdvcnknLFxyXG4gICdlbnRydXN0ZWQgYnknLFxyXG4gICdlbnRydXN0IHRvJyxcclxuICAncGVyc29uIG9yIGdyb3VwJyxcclxuICAnYWxsIG9yIGFueSBwZXJzb25zJyxcclxuICAna2V5IHJlc3BvbnNpYmlsaXR5JyxcclxuICAnZnJlcXVlbmN5IG9mIG9jY3VycmVuY2UgYW5kIGNvbXBsZXRpb24gd2luZG93JyxcclxuICAnZnJlcXVlbmN5JyxcclxuICAnZHVlIGRhdGUnLFxyXG4gICdkdWUgdGltZScsXHJcbiAgJ3N0YXJ0JyxcclxuICAnZmFpbCcsXHJcbiAgJ3Jlc3BvbnNpYmlsaXR5IGVuZHMgYWZ0ZXIgb2NjdXJlbmNlcycsXHJcbiAgJ3Jlc3BvbnNpYmlsaXR5IGVuZHMgYWZ0ZXIgb2NjdXJyZW5jZXMnLFxyXG4gICdyZXNwb25zaWJpbGl0eSBlbmRzIGJ5IGRhdGUnLFxyXG4gICdyZXNwb25zaWJpbGl0eSBjZW50cmUnLFxyXG4gICdyZXNwb25zaWJpbGl0eSBjZW50ZXInLFxyXG4gICdyaXNrIGNsYXNzJyxcclxuICAnb2JqZWN0aXZlJyxcclxuICAnbm90ZXMnLFxyXG4gICdmb3JtYXQgJiBldmlkZW5jZScsXHJcbiAgJ2Zvcm1hdCBhbmQgZXZpZGVuY2UnLFxyXG4gICdmb3JtYXQnLFxyXG4gICdmb3JtYXQgZm9yIHJlc3BvbnNpYmlsaXR5JyxcclxuICAnZXZpZGVuY2UnLFxyXG4gICdyZXZpZXcgb2YgcmVzcG9uc2liaWxpdHknLFxyXG4gICdyZXZpZXdlcicsXHJcbiAgJ3Jldmlld2VyIHR5cGUnLFxyXG4gICdyZXZpZXcgc3RhcnQnLFxyXG4gICdyZXZpZXcgZmFpbCcsXHJcbiAgJ292ZXJzZWVyJyxcclxuICAnYWx3YXlzIG5vdGlmeScsXHJcbiAgJ25vdGlmeSBvbiBmYWlsdXJlJyxcclxuICAnY29sbGFib3JhdG9yJyxcclxuICAnYXNzZXNzbWVudHMgb3IgY2hlY2twb2ludHMnLFxyXG4gICd3aG8gc2hvdWxkIGJlIHNob3duJyxcclxuICAnY3JlYXRlZCB0aGUgcmVzcG9uc2liaWxpdHknLFxyXG4gICdudW1iZXIgb2Ygb2NjdXJyZW5jZXMnLFxyXG4gICdzcGVjaWZ5IHRoZSB0eXBlJyxcclxuICAnbm8uIG9mIGRheXMnLFxyXG4gICdjb21wbGV0aW9uIHdpbmRvdycsXHJcbiAgJ2VudHJ1c3RlZCB0bycsXHJcbiAgJ2Fzc2lnbm9yJyxcclxuICAnYXNzaWduZWUnLFxyXG5dO1xyXG5cclxuZXhwb3J0IGNvbnN0IFZBTElEQVRJT05fTUVTU0FHRVMgPSB7XHJcbiAgRFJPUERPV046XHJcbiAgICAnVGhlIGRhdGEgYWRkZWQgaW4gdGhpcyBmaWVsZCBpcyBub3QgdmFsaWQuIFNlbGVjdCBmcm9tIHRoZSBkcm9wZG93biBwcm92aWRlZCBpbiB0aGUgdGVtcGxhdGUuJyxcclxuICBGSUxFX0hFQURFUlNfTUlTU0lORzogRklMRV9WQUxJREFUSU9OX01FU1NBR0VTLkhFQURFUlNfTUlTU0lORyxcclxuICBGSUxFX0VYVFJBX0NPTFVNTlM6IEZJTEVfVkFMSURBVElPTl9NRVNTQUdFUy5FWFRSQV9DT0xVTU5TLFxyXG4gIFJFU1BPTlNJQklMSVRZX05BTUVfUkVRVUlSRUQ6XHJcbiAgICAnVGhpcyBpcyBhIG1hbmRhdG9yeSBmaWVsZC4gRW50ZXIgYSBuYW1lIGZvciB0aGlzIHJlc3BvbnNpYmlsaXR5LicsXHJcbiAgUkVTUE9OU0lCSUxJVFlfTkFNRV9XSElURVNQQUNFOlxyXG4gICAgJ1Jlc3BvbnNpYmlsaXR5IE5hbWUgY2Fubm90IGJlIGJsYW5rIG9yIGNvbnRhaW4gb25seSBzcGFjZXMuJyxcclxuICBQUk9HUkFNX0NBVEVHT1JZX01JU01BVENIOlxyXG4gICAgJ1Byb2dyYW0gQ2F0ZWdvcnkgZG9lcyBub3QgYmVsb25nIHRvIHRoZSBzZWxlY3RlZCBQcm9ncmFtLiBTZWxlY3QgYSB2YWxpZCBjYXRlZ29yeSBmb3IgdGhpcyBQcm9ncmFtLicsXHJcbiAgUFJPR1JBTV9DQVRFR09SWV9XSVRIT1VUX1BST0dSQU06XHJcbiAgICAnUHJvZ3JhbSBDYXRlZ29yeSBoYXMgYmVlbiBwcm92aWRlZCB3aXRob3V0IGEgUHJvZ3JhbS4gU2VsZWN0IGEgUHJvZ3JhbSwgb3IgY2xlYXIgdGhlIFByb2dyYW0gQ2F0ZWdvcnkgZmllbGQuJyxcclxuICBQUk9HUkFNX1RZUEVfV0lUSE9VVF9QUk9HUkFNOlxyXG4gICAgJ1Byb2dyYW0gVHlwZSBoYXMgYmVlbiBwcm92aWRlZCB3aXRob3V0IGEgUHJvZ3JhbS4gUGxlYXNlIGFsc28gc2VsZWN0IGEgUHJvZ3JhbSwgb3IgY2xlYXIgdGhlIFByb2dyYW0gVHlwZSBmaWVsZC4nLFxyXG4gIEVOVFJVU1RFRF9CWV9JTlZBTElEOlxyXG4gICAgJ1RoaXMgaXMgbm90IGEgdmFsaWQgdXNlci4gU2VsZWN0IGEgdXNlciBmcm9tIHRoZSBkcm9wZG93biBvciBsZWF2ZSBibGFuayB0byB1c2UgeW91ciBhY2NvdW50IGFzIHRoZSBkZWZhdWx0LicsXHJcbiAgRU5UUlVTVEVEX0JZX0lOQUNUSVZFOlxyXG4gICAgJ1RoZSB1c2VyIHNlbGVjdGVkIGluIHRoaXMgZmllbGQgaXMgaW5hY3RpdmUuIFNlbGVjdCBhbiBhY3RpdmUgdXNlciBvciBsZWF2ZSBibGFuayB0byB1c2UgeW91ciBhY2NvdW50IGFzIHRoZSBkZWZhdWx0LicsXHJcbiAgQVNTSUdORUVfUkVRVUlSRUQ6ICdUaGlzIGlzIGEgbWFuZGF0b3J5IGZpZWxkLiBTZWxlY3QgYSB1c2VyIG9yIGdyb3VwLicsXHJcbiAgQVNTSUdORUVfSU5WQUxJRDpcclxuICAgICdUaGlzIGlzIG5vdCBhIHZhbGlkIHVzZXIgb3IgZ3JvdXAgaW4gVkNvbXBseS4gU2VsZWN0IGZyb20gdGhlIGRyb3Bkb3duIHByb3ZpZGVkIGluIHRoZSB0ZW1wbGF0ZS4nLFxyXG4gIEFTU0lHTkVFX0lOQUNUSVZFOlxyXG4gICAgJ1RoZSB1c2VyIHNlbGVjdGVkIGluIHRoaXMgZmllbGQgaXMgaW5hY3RpdmUuIFNlbGVjdCBhbiBhY3RpdmUgdXNlciBvciBncm91cC4nLFxyXG4gIEFTU0lHTkVFX1RZUEVfSU5WQUxJRDpcclxuICAgICdUaGUgZGF0YSBhZGRlZCBpbiB0aGlzIGZpZWxkIGlzIG5vdCB2YWxpZC4gU2VsZWN0IGZyb20gdGhlIGRyb3Bkb3duIHByb3ZpZGVkIGluIHRoZSB0ZW1wbGF0ZSBvciB0aGUgZGVmYXVsdCBzZWxlY3Rpb24gb2YgXCJBbnkgc2VsZWN0IHBlcnNvbiBjYW4gY29tcGxldGVkIHRoaXNcIiB3aWxsIGJlIGFwcGxpZWQuJyxcclxuICBHUk9VUF9BTExfQU5ZX0JMQU5LOlxyXG4gICAgXCJBIGdyb3VwIGhhcyBiZWVuIGFzc2lnbmVkLiBUaGUgZGVmYXVsdCBzZWxlY3Rpb24gb2YgJ0FueSBzZWxlY3RlZCBwZXJzb24gY2FuIGNvbXBsZXRlIHRoaXMnIHdpbGwgYmUgYXBwbGllZC5cIixcclxuICBLRVlfUkVTUE9OU0lCSUxJVFlfSU5WQUxJRDpcclxuICAgIFwiVGhlIGRhdGEgYWRkZWQgaW4gdGhpcyBmaWVsZCBpcyBub3QgdmFsaWQuIFBsZWFzZSBzZWxlY3QgJ1llcycsICdObycsIG9yIGxlYXZlIGJsYW5rIChkZWZhdWx0cyB0byAnTm90IGEgS2V5IFJlc3BvbnNpYmlsaXR5JykuXCIsXHJcbiAgRlJFUVVFTkNZX1JFUVVJUkVEOiAnVGhpcyBpcyBtYW5kYXRvcnkgZmllbGQuIFNlbGVjdCBhIGZyZXF1ZW5jeS4nLFxyXG4gIERVRV9EQVRFX0RBWV9OT1RfTlVNQkVSOlxyXG4gICAgJ1RoZSBkYXRhIGFkZGVkIGluIHRoaXMgZmllbGQgaXMgbm90IHZhbGlkLiBFbnRlciBhIG51bWJlciBmcm9tIHRoZSBkcm9wZG93biBwcm92aWRlZCBpbiB0aGUgdGVtcGxhdGUuJyxcclxuICBEVUVfREFURV9EQVlfT1VUX09GX1JBTkdFOlxyXG4gICAgJ1RoZSB2YWx1ZSBwcm92aWRlZCBpcyBvdXQgb2YgcmFuZ2UgZm9yIGEgW1dlZWtseV0gZnJlcXVlbmN5LiBTZWxlY3QgYSB2YWxpZCBvcHRpb24uJyxcclxuICBEVUVfREFURV9SRVFVSVJFRDpcclxuICAgICdUaGlzIGlzIG1hbmRhdG9yeSBmaWVsZC4gU2VsZWN0IGZyb20gdGhlIGRyb3Bkb3duIHByb3ZpZGVkIGluIHRoZSB0ZW1wbGF0ZS4nLFxyXG4gIERVRV9EQVRFX01PTlRIX0lOVkFMSUQ6XHJcbiAgICAnVGhlIGRhdGEgYWRkZWQgaW4gdGhpcyBmaWVsZCBpcyBub3QgdmFsaWQuIFNlbGVjdCBhIG1vbnRoIGZyb20gdGhlIGRyb3Bkb3duIHByb3ZpZGVkIGluIHRoZSB0ZW1wbGF0ZS4nLFxyXG4gIERVRV9USU1FX0JMQU5LOlxyXG4gICAgJ1RoZSByZXNwb25zaWJpbGl0aWVzIHdpbGwgYmUgY3JlYXRlZCB3aXRoIGEgZGVmYXVsdCB0aW1lIG9mIDExOjMwIFBNIGFjY29yZGluZyB0byB5b3VyIFZDb21wbHkgdGltZXpvbmUuJyxcclxuICBSQ19UWVBFX1dJVEhPVVRfTkFNRTpcclxuICAgICdSZXNwb25zaWJpbGl0eSBDZW50ZXIgVHlwZSBoYXMgYmVlbiBwcm92aWRlZCB3aXRob3V0IGEgUmVzcG9uc2liaWxpdHkgQ2VudGVyIE5hbWUuIEVudGVyIHRoZSBSZXNwb25zaWJpbGl0eSBDZW50ZXIgbmFtZS4nLFxyXG4gIFJDX0lOQUNUSVZFOlxyXG4gICAgJ1RoaXMgUmVzcG9uc2liaWxpdHkgQ2VudGVyIG5vIGxvbmdlciBleGlzdHMgaW4gVkNvbXBseS4gU2VsZWN0IGFuIGFjdGl2ZSBSZXNwb25zaWJpbGl0eSBDZW50ZXIgb3IgbGVhdmUgYmxhbmsuJyxcclxuICBGT1JNQVRfTElOS19XSVRIT1VUX1lFUzpcclxuICAgICdBIGZvcm1hdCBsaW5rIGhhcyBiZWVuIHByb3ZpZGVkIGJ1dCBGb3JtYXQgc2VsZWN0b24gaXMgc2V0IHRvIFwiTm9cIi4gU2V0IHRoZSBGb3JtYXQgZmllbGQgdG8gXCJZZXNcIiBhbmQgdXBsb2FkIHRoZSB0ZW1wbGF0ZSBhZ2Fpbi4nLFxyXG4gIEZPUk1BVF9JTlZBTElEX1VSTDogJ1RoaXMgaXMgYW4gaW52YWxpZCBVUkwuJyxcclxuICBSRVZJRVdFUl9JTkFDVElWRTogJ1RoaXMgdXNlciBpcyBpbmFjdGl2ZS4gU2VsZWN0IGFuIGFjdGl2ZSB1c2VyIG9yIGdyb3VwLicsXHJcbiAgUkVWSUVXX1dJTkRPV19XSVRIT1VUX1JFVklFV0VSOlxyXG4gICAgJ1JldmlldyB3aW5kb3cgaGFzIGJlZW4gc3BlY2lmaWVkIGJ1dCBubyBSZXZpZXdlciBoYXMgYmVlbiBzZWxlY3RlZC4gU2VsZWN0IGEgUmV2aWV3ZXIsIG9yIGNsZWFyIHRoZXNlIGZpZWxkcy4nLFxyXG4gIE9WRVJTSUdIVF9EVVBMSUNBVEVfQVNTSUdORUU6XHJcbiAgICAnVGhpcyB1c2VyIGlzIGFscmVhZHkgYXNzaWduZWQgYXMgdGhlIHByaW1hcnkgQXNzaWduZWUuIEFkZGluZyB0aGVtIHRvIG92ZXJzaWdodCBpcyByZWR1bmRhbnQuJyxcclxuICBPVkVSU0lHSFRfRFVQTElDQVRFX0FTU0lHTk9SOlxyXG4gICAgJ1RoaXMgdXNlciBpcyBhbHJlYWR5IGFzc2lnbmVkIGFzIHRoZSBBc3NpZ25vci4gQWRkaW5nIHRoZW0gdG8gb3ZlcnNpZ2h0IGlzIHJlZHVuZGFudC4nLFxyXG4gIE9WRVJTSUdIVF9JTkFDVElWRTogJ1RoaXMgdXNlciBpcyBpbmFjdGl2ZS4gU2VsZWN0IGFuIGFjdGl2ZSB1c2VyIG9yIGdyb3VwLicsXHJcbiAgQ09MTEFCT1JBVE9SX0lOQUNUSVZFOiAnVGhpcyB1c2VyIGlzIGluYWN0aXZlLiBTZWxlY3QgYW4gYWN0aXZlIHVzZXIuJyxcclxuICBDT0xMQUJPUkFUT1JfR1JPVVA6XHJcbiAgICAnQ29sbGFib3JhdG9ycyBtdXN0IGJlIGluZGl2aWR1YWwgdXNlcnMsIG5vdCBncm91cHMuIFBsZWFzZSBzZWxlY3QgYSBzcGVjaWZpYyB1c2VyIGZvciB0aGUgQ29sbGFib3JhdG9yIGZpZWxkLicsXHJcbiAgT05FX1RJTUVfTElGRUNZQ0xFOlxyXG4gICAgXCJBICdPbmUgVGltZScgcmVzcG9uc2liaWxpdHkgY2Fubm90IGFsc28gaGF2ZSBhIGxpZmVjeWNsZSBlbmQgcnVsZS4gQ2xlYXIgdGhlIEVuZHMgQWZ0ZXIgT2NjdXJyZW5jZXMgYW5kIEVuZHMgQnkgRGF0ZSBmaWVsZHMuXCIsXHJcbiAgRU5EU19BRlRFUl9PTkVfT0NDVVJSRU5DRTpcclxuICAgIFwiRW5kaW5nIGFmdGVyIDEgb2NjdXJyZW5jZSBpcyBlcXVpdmFsZW50IHRvIGEgJ09uZSBUaW1lJyByZXNwb25zaWJpbGl0eS4gQ29uc2lkZXIgdXNpbmcgdGhlICdPbmUgVGltZScgZnJlcXVlbmN5IGluc3RlYWQuXCIsXHJcbiAgVVNFUl9OT1RfSU5fUFJPR1JBTTpcclxuICAgICdUaGlzIHVzZXIgaXMgbm90IGFzc29jaWF0ZWQgd2l0aCB0aGUgc2VsZWN0ZWQgUHJvZ3JhbS4nLFxyXG4gIFBBU1RfRFVFX0RBVEU6ICdUaGlzIGRhdGUgb2NjdXJzIGluIHRoZSBwYXN0LiBTZWxlY3QgYSBmdXR1cmUgZGF0ZS4nLFxyXG4gIFJJU0tfQ0xBU1M6XHJcbiAgICAnSW52YWxpZCByaXNrIGNsYXNzLiBTZWxlY3QgYSB2YWxpZCBvcHRpb24gZnJvbSB0aGUgZHJvcC1kb3duIGxpc3QuJyxcclxuICBEQVk6ICdJbnZhbGlkIGRheSBzZWxlY3Rpb24uIFNlbGVjdCBhIHZhbGlkIGRheSBmcm9tIHRoZSBkcm9wLWRvd24gbGlzdCBpbiB0aGUgdGVtcGxhdGUuJyxcclxuICBEQVRFX0ZPUk1BVDpcclxuICAgICdJbnZhbGlkIGRhdGUgZm9ybWF0LiBTZWxlY3QgYSB2YWxpZCBkYXRlIGZyb20gdGhlIGRyb3AtZG93biBsaXN0IGluIHRoZSB0ZW1wbGF0ZS4nLFxyXG4gIERVRV9EQVRFOiAnSW52YWxpZCBEdWUgRGF0ZS4nLFxyXG4gIERVRV9USU1FOlxyXG4gICAgXCJUaGlzIHZhbHVlIGRvZXMgbm90IG1hdGNoIHRoZSBWQ29tcGx5IHRlbXBsYXRlJ3MgZm9ybWF0LiBVc2UgdGhlIGNvcnJlY3QgdmFsdWUgZnJvbSB0aGUgZHJvcC1kb3ducyBpbiB0aGUgdGVtcGxhdGUuXCIsXHJcbiAgRU5EU19BRlRFUl9PQ0NVUlJFTkNFU19HUkVBVEVSX1RIQU5fWkVSTzogJ011c3QgYmUgZ3JlYXRlciB0aGFuIDAnLFxyXG4gIEVORFNfQUZURVJfT0NDVVJSRU5DRVNfTlVNRVJJQzogJ011c3QgYmUgbnVtZXJpYyB2YWx1ZScsXHJcbiAgV0hPTEVfTlVNQkVSX05PTl9ORUdBVElWRTpcclxuICAgICdNdXN0IGJlIGEgd2hvbGUgbnVtYmVyLiBOZWdhdGl2ZSBhbmQgZGVjaW1hbCB2YWx1ZXMgYXJlIG5vdCBhbGxvd2VkLicsXHJcbiAgUE9TSVRJVkVfTlVNQkVSOiAnTXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlcicsXHJcbiAgRU5EU19CWV9EQVRFX0lOVkFMSURfVkFMVUU6XHJcbiAgICAnVGhlIGRhdGEgYWRkZWQgaW4gdGhpcyBmaWVsZCBpcyBub3QgdmFsaWQuIFNlbGVjdCBmcm9tIHRoZSBkcm9wZG93biBwcm92aWRlZCBpbiB0aGUgdGVtcGxhdGUuJyxcclxuICBFTkRTX0JZX0RBVEVfSU5DT01QTEVURTpcclxuICAgICdFbmRzIEJ5IERhdGUgcmVxdWlyZXMgYm90aCBhIGRheSBhbmQgYSBtb250aC4gUGxlYXNlIGNvbXBsZXRlIGJvdGggZmllbGRzIG9yIGNsZWFyIGJvdGggdG8gbGVhdmUgdGhlIGVuZCBkYXRlIHVuc2V0LicsXHJcbiAgRU5EU19CWV9EQVRFX1BBU1Q6XHJcbiAgICAnVGhlIEVuZHMgQnkgRGF0ZSBpcyBpbiB0aGUgcGFzdC4gVGhpcyByZXNwb25zaWJpbGl0eSB3aWxsIGJlIGNyZWF0ZWQgd2l0aCBubyBmdXR1cmUgb2NjdXJyZW5jZXMuJyxcclxuICBFTkRTX0JZX0RBVEVfQ09ORkxJQ1Q6XHJcbiAgICBcIllvdSBoYXZlIHByb3ZpZGVkIHZhbHVlcyBmb3IgYm90aCAnRW5kcyBBZnRlciBPY2N1cnJlbmNlcycgYW5kICdFbmRzIEJ5IERhdGUnLiBGaWxsIGluIG9ubHkgb25lLCBvciBsZWF2ZSBib3RoIGJsYW5rIGlmIHRoZSByZXNwb25zaWJpbGl0eSB3aWxsIGFsd2F5cyBiZSBhY3RpdmUuXCIsXHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZHVlRGF0ZURheU91dE9mUmFuZ2VNZXNzYWdlKGZyZXF1ZW5jeTogc3RyaW5nKTogc3RyaW5nIHtcclxuICByZXR1cm4gYFRoZSB2YWx1ZSBwcm92aWRlZCBpcyBvdXQgb2YgcmFuZ2UgZm9yIGEgWyR7ZnJlcXVlbmN5fV0gZnJlcXVlbmN5LiBTZWxlY3QgYSB2YWxpZCBvcHRpb24uYDtcclxufVxyXG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2liaWx0eS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9pbnRlcmZhY2VzL3Jlc3BvbnNpYmlsdHkuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbnRlcmZhY2UgRnJlcXVlbmN5IHtcclxuICB0eXBlOiBzdHJpbmc7XHJcbn1cclxuXHJcbmludGVyZmFjZSBBc3NpZ25lZSB7XHJcbiAgdHlwZTogJ2FsbCcgfCAnYW55JztcclxuICB1c2VySWQ6IG51bWJlcltdO1xyXG4gIHVzZXJHcm91cElkOiBudW1iZXJbXTtcclxufVxyXG5cclxuaW50ZXJmYWNlIFJlc3BvbnNpYmlsaXR5Q2VudGVyIHtcclxuICB0eXBlOiAnYW55JyB8ICdhbGwnO1xyXG4gIGlkOiBudW1iZXJbXTtcclxufVxyXG5cclxuaW50ZXJmYWNlIFJldmlld2VyRnJlcXVlbmN5IHtcclxuICBjb21wbGV0ZUJ5OiBudW1iZXI7XHJcbiAgZW5kQWZ0ZXI6IG51bWJlcjtcclxufVxyXG5cclxuaW50ZXJmYWNlIFJldmlld2VyIHtcclxuICB0eXBlOiAnc2VxdWVudGlhbCcgfCAnYW55JztcclxuICBmcmVxdWVuY3k6IFJldmlld2VyRnJlcXVlbmN5O1xyXG4gIHVzZXJJZDogbnVtYmVyW107XHJcbn1cclxuXHJcbmludGVyZmFjZSBPdmVyc2Vlckdyb3VwIHtcclxuICB1c2VySWQ6IG51bWJlcltdO1xyXG4gIHVzZXJHcm91cElkOiBudW1iZXJbXTtcclxufVxyXG5cclxuaW50ZXJmYWNlIE92ZXJzZWVyIHtcclxuICBzdWNjZXNzOiBPdmVyc2Vlckdyb3VwO1xyXG4gIGZhaWw6IE92ZXJzZWVyR3JvdXA7XHJcbn1cclxuXHJcbmludGVyZmFjZSBDb2xsYWJvcmF0b3Ige1xyXG4gIHVzZXJJZDogbnVtYmVyW107XHJcbiAgdXNlckdyb3VwSWQ6IG51bWJlcltdO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgRXZpZGVuY2VGb3JtYXQge1xyXG4gIHR5cGU6ICdsaW5rJyB8ICdmaWxlJyB8ICcnO1xyXG4gIGRhdGE6IHN0cmluZ1tdO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgRXZpZGVuY2Uge1xyXG4gIHJlcXVpcmVkOiAnMCB8IDEnO1xyXG4gIGZvcm1hdDogRXZpZGVuY2VGb3JtYXQ7XHJcbn1cclxuXHJcbmludGVyZmFjZSBQcm9ncmFtIHtcclxuICBpZDogbnVtYmVyW107XHJcbiAgdGFnczogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSZXNwb25zaWJpbGl0eSB7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBrZXk6IG51bWJlcjtcclxuICByaXNrQ2xhc3M6ICdsb3cnIHwgJ2xvd19tZWRpdW0nIHwgJ21lZGl1bV9oaWdoJyB8ICdoaWdoJztcclxuICBub3Rlczogc3RyaW5nO1xyXG4gIG9iamVjdGl2ZTogc3RyaW5nO1xyXG4gIGZyZXF1ZW5jeTogRnJlcXVlbmN5O1xyXG4gIGFzc2lnbm9yOiBudW1iZXI7XHJcbiAgYXNzaWduZWU6IEFzc2lnbmVlO1xyXG4gIHJlc3BvbnNpYmlsaXR5Q2VudGVyOiBSZXNwb25zaWJpbGl0eUNlbnRlciB8IHVuZGVmaW5lZDtcclxuICByZXZpZXdlcjogUmV2aWV3ZXIgfCB1bmRlZmluZWQ7XHJcbiAgb3ZlcnNlZXI6IE92ZXJzZWVyIHwgdW5kZWZpbmVkO1xyXG4gIGV2aWRlbmNlOiBFdmlkZW5jZTtcclxuICBwcm9ncmFtOiBQcm9ncmFtO1xyXG4gIGdyY09iamVjdElkOiBhbnlbXTtcclxuICBhc3Nlc3NtZW50SWQ6IHN0cmluZztcclxuICBpZD86IG51bWJlcjtcclxuICByZWZlcmVuY2VSZXNwb25zaWJpbGl0eUlkPzogbnVtYmVyO1xyXG4gIGN1c3RvbUZpZWxkOiBhbnlbXTtcclxufSJdfQ==
|
|
@@ -32,6 +32,151 @@ export class BulkUploadService {
|
|
|
32
32
|
}
|
|
33
33
|
return false;
|
|
34
34
|
}
|
|
35
|
+
getHeaderRows(data) {
|
|
36
|
+
const listData = XLSX.utils.sheet_to_json(data, {
|
|
37
|
+
header: 1,
|
|
38
|
+
raw: false,
|
|
39
|
+
});
|
|
40
|
+
const rows = listData.filter((res) => {
|
|
41
|
+
let isUndefined = '';
|
|
42
|
+
(res || []).forEach((el) => {
|
|
43
|
+
isUndefined = isUndefined + el;
|
|
44
|
+
});
|
|
45
|
+
if (listData[2] && listData[2][1] === 'Program') {
|
|
46
|
+
return !(res?.length === 9 && res[8] === '' && !isUndefined.length);
|
|
47
|
+
}
|
|
48
|
+
return !(res?.length === 6 && res[5] === '' && !isUndefined.length);
|
|
49
|
+
});
|
|
50
|
+
return {
|
|
51
|
+
header: cloneDeep(rows[2] || []),
|
|
52
|
+
subHeading: cloneDeep(rows[3] || []),
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* F-02: required header missing or renamed.
|
|
57
|
+
* F-03: extra columns inserted.
|
|
58
|
+
*/
|
|
59
|
+
validateResponsibilityHeaders(sheets) {
|
|
60
|
+
let sawSheet = false;
|
|
61
|
+
let missing = false;
|
|
62
|
+
let extra = false;
|
|
63
|
+
(sheets || []).forEach((sheet) => {
|
|
64
|
+
const header = sheet?.header || [];
|
|
65
|
+
if (!header.some((cell) => this.normalizeHeaderLabel(cell))) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
sawSheet = true;
|
|
69
|
+
const status = this.validateSheetHeaders(header, sheet?.subHeading || [], sheet?.sheet);
|
|
70
|
+
if (status === 'missing') {
|
|
71
|
+
missing = true;
|
|
72
|
+
}
|
|
73
|
+
else if (status === 'extra') {
|
|
74
|
+
extra = true;
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
if (!sawSheet || missing) {
|
|
78
|
+
return 'missing';
|
|
79
|
+
}
|
|
80
|
+
return extra ? 'extra' : 'ok';
|
|
81
|
+
}
|
|
82
|
+
validateSheetHeaders(header = [], subHeading = [], sheet) {
|
|
83
|
+
const firstHeader = this.normalizeHeaderLabel(header[0]);
|
|
84
|
+
if (!firstHeader.includes('responsibility name')) {
|
|
85
|
+
return 'missing';
|
|
86
|
+
}
|
|
87
|
+
const hasProgram = this.hasProgramColumns(header);
|
|
88
|
+
const expectedKeyIndex = hasProgram ? 7 : 4;
|
|
89
|
+
const keyIndex = this.findLabelIndex(header, subHeading, 'key responsibility');
|
|
90
|
+
if (keyIndex === -1) {
|
|
91
|
+
return 'missing';
|
|
92
|
+
}
|
|
93
|
+
// An inserted column shifts Key Responsibility off its template index
|
|
94
|
+
// (program templates: H / 7, otherwise: E / 4). That is F-03, not a remap.
|
|
95
|
+
if (keyIndex !== expectedKeyIndex) {
|
|
96
|
+
return 'extra';
|
|
97
|
+
}
|
|
98
|
+
const hasAssigneeColumn = this.findLabelIndex(header, subHeading, 'entrust to') !== -1 ||
|
|
99
|
+
this.findLabelIndex(header, subHeading, 'person or group') !== -1 ||
|
|
100
|
+
this.findLabelIndex(header, subHeading, 'entrusted by') !== -1;
|
|
101
|
+
if (!hasAssigneeColumn) {
|
|
102
|
+
return 'missing';
|
|
103
|
+
}
|
|
104
|
+
if (sheet === 'frequency') {
|
|
105
|
+
const frequencyIndex = this.findLabelIndex(header, subHeading, 'frequency');
|
|
106
|
+
if (frequencyIndex === -1) {
|
|
107
|
+
return 'missing';
|
|
108
|
+
}
|
|
109
|
+
const expectedFrequencyIndex = hasProgram ? 8 : 5;
|
|
110
|
+
if (frequencyIndex !== expectedFrequencyIndex) {
|
|
111
|
+
return 'extra';
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
const lastIndex = Math.max(this.lastFilledIndex(header), this.lastFilledIndex(subHeading));
|
|
115
|
+
if (lastIndex < 8) {
|
|
116
|
+
return 'missing';
|
|
117
|
+
}
|
|
118
|
+
if (lastIndex > this.getExpectedLastHeaderIndex(header, subHeading, sheet)) {
|
|
119
|
+
return 'extra';
|
|
120
|
+
}
|
|
121
|
+
return 'ok';
|
|
122
|
+
}
|
|
123
|
+
hasProgramColumns(header = []) {
|
|
124
|
+
return (header[1] === 'Program' ||
|
|
125
|
+
this.normalizeHeaderLabel(header[1]) === 'program');
|
|
126
|
+
}
|
|
127
|
+
findLabelIndex(header = [], subHeading = [], needle) {
|
|
128
|
+
const maxLen = Math.max(header.length, subHeading.length);
|
|
129
|
+
for (let index = 0; index < maxLen; index++) {
|
|
130
|
+
const headerLabel = this.normalizeHeaderLabel(header[index]);
|
|
131
|
+
const subLabel = this.normalizeHeaderLabel(subHeading[index]);
|
|
132
|
+
if (headerLabel.includes(needle) || subLabel.includes(needle)) {
|
|
133
|
+
return index;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return -1;
|
|
137
|
+
}
|
|
138
|
+
getExpectedLastHeaderIndex(header = [], subHeading = [], sheet) {
|
|
139
|
+
const hasProgram = this.hasProgramColumns(header);
|
|
140
|
+
const hasExtended = [...header, ...subHeading].some((cell) => {
|
|
141
|
+
const label = this.normalizeHeaderLabel(cell);
|
|
142
|
+
return (label.includes('due time') ||
|
|
143
|
+
label.includes('responsibility ends after') ||
|
|
144
|
+
label.includes('responsibility ends by date'));
|
|
145
|
+
});
|
|
146
|
+
if (sheet === 'ongoing') {
|
|
147
|
+
return hasProgram ? 22 : 20;
|
|
148
|
+
}
|
|
149
|
+
if (hasProgram && hasExtended) {
|
|
150
|
+
return 31;
|
|
151
|
+
}
|
|
152
|
+
if (hasProgram) {
|
|
153
|
+
return 27;
|
|
154
|
+
}
|
|
155
|
+
if (hasExtended) {
|
|
156
|
+
return 26;
|
|
157
|
+
}
|
|
158
|
+
return 22;
|
|
159
|
+
}
|
|
160
|
+
getMaxHeaderIndex(header = [], subHeading = [], sheet) {
|
|
161
|
+
return this.getExpectedLastHeaderIndex(header, subHeading, sheet);
|
|
162
|
+
}
|
|
163
|
+
normalizeHeaderLabel(value) {
|
|
164
|
+
return String(value ?? '')
|
|
165
|
+
.replace(/[\u200B-\u200D\uFEFF]/g, '')
|
|
166
|
+
.replace(/\u00a0/g, ' ')
|
|
167
|
+
.replace(/\*/g, '')
|
|
168
|
+
.replace(/\s+/g, ' ')
|
|
169
|
+
.trim()
|
|
170
|
+
.toLowerCase();
|
|
171
|
+
}
|
|
172
|
+
lastFilledIndex(row = []) {
|
|
173
|
+
for (let index = row.length - 1; index >= 0; index--) {
|
|
174
|
+
if (this.normalizeHeaderLabel(row[index])) {
|
|
175
|
+
return index;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
return -1;
|
|
179
|
+
}
|
|
35
180
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BulkUploadService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
36
181
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BulkUploadService, providedIn: 'root' }); }
|
|
37
182
|
}
|
|
@@ -41,4 +186,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
41
186
|
providedIn: 'root'
|
|
42
187
|
}]
|
|
43
188
|
}], ctorParameters: function () { return []; } });
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVsay11cGxvYWQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3NlcnZpY2VzL2J1bGstdXBsb2FkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDOztBQU03QixNQUFNLE9BQU8saUJBQWlCO0lBRTVCLGdCQUFnQixDQUFDO0lBRWpCLGFBQWEsQ0FBQyxJQUFTLEVBQUUsY0FBc0I7UUFDN0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFO1lBQzlDLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUs7U0FDdEIsQ0FBUSxDQUFDO1FBQ1YsSUFBSSxTQUFTLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDbEQsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxjQUFjLENBQUMsSUFBUztRQUN0QixJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFnQixFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDbkIsT0FBTyxHQUFHLElBQUksQ0FBQztTQUNoQjtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxJQUFTLEVBQUUsV0FBbUI7UUFDN0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFO1lBQzlDLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUs7U0FDdEIsQ0FBUSxDQUFDO1FBQ1YsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ2hELElBQUcsV0FBVyxLQUFLLENBQUMsRUFBRTtZQUNwQixPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBLENBQUMsQ0FBQyxLQUFLLENBQUM7U0FDM0Q7YUFBTSxJQUFHLFdBQVcsS0FBSyxDQUFDLEVBQUU7WUFDM0IsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssNEJBQTRCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQSxDQUFDLENBQUMsS0FBSyxDQUFDO1NBQ2pFO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOytHQWhDVSxpQkFBaUI7bUhBQWpCLGlCQUFpQixjQUZoQixNQUFNOzs0RkFFUCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xyXG5pbXBvcnQgKiBhcyBYTFNYIGZyb20gJ3hsc3gnO1xyXG50eXBlIEFPQSA9IGFueVtdW107XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCdWxrVXBsb2FkU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIGhhc0RhdGFJbkxpc3QoZGF0YTogYW55LCBkYXRhU3RhcnRJbmRleDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBsaXN0RGF0YSA9IFhMU1gudXRpbHMuc2hlZXRfdG9fanNvbihkYXRhLCB7XHJcbiAgICAgIGhlYWRlcjogMSwgcmF3OiBmYWxzZSxcclxuICAgIH0pIGFzIEFPQTtcclxuICAgIGxldCBmaW5hbERhdGEgPSBsaXN0RGF0YS5zbGljZSgwLCBkYXRhU3RhcnRJbmRleCk7XHJcbiAgICByZXR1cm4gdGhpcy5jaGVja0VtcHR5RmlsZShmaW5hbERhdGEpO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tFbXB0eUZpbGUoZGF0YTogYW55KSB7XHJcbiAgICBsZXQgaXNFbXB0eSA9IGZhbHNlO1xyXG4gICAgZGF0YSA9IGRhdGEuZmlsdGVyKChkYXRhRWxlbWVudDogYW55KSA9PiBkYXRhRWxlbWVudC5sZW5ndGggPiAwKTtcclxuICAgIGlmIChkYXRhLmxlbmd0aCA8IDEpIHtcclxuICAgICAgaXNFbXB0eSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXNFbXB0eTtcclxuICB9XHJcblxyXG4gIGNoZWNrQ29ycmVjdEZpbGUoZGF0YTogYW55LCBoZWFkZXJJbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBsaXN0RGF0YSA9IFhMU1gudXRpbHMuc2hlZXRfdG9fanNvbihkYXRhLCB7XHJcbiAgICAgIGhlYWRlcjogMSwgcmF3OiBmYWxzZSxcclxuICAgIH0pIGFzIEFPQTtcclxuICAgIGNvbnN0IGhlYWRlciA9IGNsb25lRGVlcChsaXN0RGF0YVtoZWFkZXJJbmRleF0pO1xyXG4gICAgaWYoaGVhZGVySW5kZXggPT09IDIpIHtcclxuICAgICAgcmV0dXJuIGhlYWRlclswXSA9PT0gJ1Jlc3BvbnNpYmlsaXR5IE5hbWUqJyA/IHRydWU6IGZhbHNlO1xyXG4gICAgfSBlbHNlIGlmKGhlYWRlckluZGV4ID09PSAwKSB7XHJcbiAgICAgIHJldHVybiBoZWFkZXJbMF0gPT09ICdFbnRlciBSZXNwb25zaWJpbGl0eSBOYW1lKicgPyB0cnVlOiBmYWxzZTtcclxuICAgIH0gXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
189
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVsay11cGxvYWQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3NlcnZpY2VzL2J1bGstdXBsb2FkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDOztBQU03QixNQUFNLE9BQU8saUJBQWlCO0lBRTVCLGdCQUFnQixDQUFDO0lBRWpCLGFBQWEsQ0FBQyxJQUFTLEVBQUUsY0FBc0I7UUFDN0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFO1lBQzlDLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUs7U0FDdEIsQ0FBUSxDQUFDO1FBQ1YsSUFBSSxTQUFTLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDbEQsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxjQUFjLENBQUMsSUFBUztRQUN0QixJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFnQixFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDbkIsT0FBTyxHQUFHLElBQUksQ0FBQztTQUNoQjtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxJQUFTLEVBQUUsV0FBbUI7UUFDN0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFO1lBQzlDLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUs7U0FDdEIsQ0FBUSxDQUFDO1FBQ1YsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ2hELElBQUcsV0FBVyxLQUFLLENBQUMsRUFBRTtZQUNwQixPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBLENBQUMsQ0FBQyxLQUFLLENBQUM7U0FDM0Q7YUFBTSxJQUFHLFdBQVcsS0FBSyxDQUFDLEVBQUU7WUFDM0IsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssNEJBQTRCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQSxDQUFDLENBQUMsS0FBSyxDQUFDO1NBQ2pFO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsYUFBYSxDQUFDLElBQVM7UUFDckIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFO1lBQzlDLE1BQU0sRUFBRSxDQUFDO1lBQ1QsR0FBRyxFQUFFLEtBQUs7U0FDWCxDQUFRLENBQUM7UUFDVixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDeEMsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO1lBQ3JCLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQU8sRUFBRSxFQUFFO2dCQUM5QixXQUFXLEdBQUcsV0FBVyxHQUFHLEVBQUUsQ0FBQztZQUNqQyxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLEVBQUU7Z0JBQy9DLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDckU7WUFDRCxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RFLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTztZQUNMLE1BQU0sRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNoQyxVQUFVLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDckMsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSCw2QkFBNkIsQ0FDM0IsTUFBcUU7UUFFckUsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbEIsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDL0IsTUFBTSxNQUFNLEdBQUcsS0FBSyxFQUFFLE1BQU0sSUFBSSxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO2dCQUMzRCxPQUFPO2FBQ1I7WUFDRCxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ2hCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFVBQVUsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3hGLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRTtnQkFDeEIsT0FBTyxHQUFHLElBQUksQ0FBQzthQUNoQjtpQkFBTSxJQUFJLE1BQU0sS0FBSyxPQUFPLEVBQUU7Z0JBQzdCLEtBQUssR0FBRyxJQUFJLENBQUM7YUFDZDtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFFBQVEsSUFBSSxPQUFPLEVBQUU7WUFDeEIsT0FBTyxTQUFTLENBQUM7U0FDbEI7UUFDRCxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDaEMsQ0FBQztJQUVELG9CQUFvQixDQUNsQixTQUFnQixFQUFFLEVBQ2xCLGFBQW9CLEVBQUUsRUFDdEIsS0FBYztRQUVkLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFO1lBQ2hELE9BQU8sU0FBUyxDQUFDO1NBQ2xCO1FBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xELE1BQU0sZ0JBQWdCLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUNsQyxNQUFNLEVBQ04sVUFBVSxFQUNWLG9CQUFvQixDQUNyQixDQUFDO1FBQ0YsSUFBSSxRQUFRLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDbkIsT0FBTyxTQUFTLENBQUM7U0FDbEI7UUFDRCxzRUFBc0U7UUFDdEUsMkVBQTJFO1FBQzNFLElBQUksUUFBUSxLQUFLLGdCQUFnQixFQUFFO1lBQ2pDLE9BQU8sT0FBTyxDQUFDO1NBQ2hCO1FBRUQsTUFBTSxpQkFBaUIsR0FDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1RCxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUN0QixPQUFPLFNBQVMsQ0FBQztTQUNsQjtRQUVELElBQUksS0FBSyxLQUFLLFdBQVcsRUFBRTtZQUN6QixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUN4QyxNQUFNLEVBQ04sVUFBVSxFQUNWLFdBQVcsQ0FDWixDQUFDO1lBQ0YsSUFBSSxjQUFjLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pCLE9BQU8sU0FBUyxDQUFDO2FBQ2xCO1lBQ0QsTUFBTSxzQkFBc0IsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xELElBQUksY0FBYyxLQUFLLHNCQUFzQixFQUFFO2dCQUM3QyxPQUFPLE9BQU8sQ0FBQzthQUNoQjtTQUNGO1FBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FDeEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFDNUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FDakMsQ0FBQztRQUNGLElBQUksU0FBUyxHQUFHLENBQUMsRUFBRTtZQUNqQixPQUFPLFNBQVMsQ0FBQztTQUNsQjtRQUNELElBQUksU0FBUyxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxFQUFFO1lBQzFFLE9BQU8sT0FBTyxDQUFDO1NBQ2hCO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsU0FBZ0IsRUFBRTtRQUNsQyxPQUFPLENBQ0wsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVM7WUFDdkIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FDbkQsQ0FBQztJQUNKLENBQUM7SUFFRCxjQUFjLENBQ1osU0FBZ0IsRUFBRSxFQUNsQixhQUFvQixFQUFFLEVBQ3RCLE1BQWM7UUFFZCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFELEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDM0MsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzdELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUM5RCxJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDN0QsT0FBTyxLQUFLLENBQUM7YUFDZDtTQUNGO1FBQ0QsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNaLENBQUM7SUFFRCwwQkFBMEIsQ0FDeEIsU0FBZ0IsRUFBRSxFQUNsQixhQUFvQixFQUFFLEVBQ3RCLEtBQWM7UUFFZCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEQsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFHLE1BQU0sRUFBRSxHQUFHLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzNELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM5QyxPQUFPLENBQ0wsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7Z0JBQzFCLEtBQUssQ0FBQyxRQUFRLENBQUMsMkJBQTJCLENBQUM7Z0JBQzNDLEtBQUssQ0FBQyxRQUFRLENBQUMsNkJBQTZCLENBQUMsQ0FDOUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQ3ZCLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUM3QjtRQUNELElBQUksVUFBVSxJQUFJLFdBQVcsRUFBRTtZQUM3QixPQUFPLEVBQUUsQ0FBQztTQUNYO1FBQ0QsSUFBSSxVQUFVLEVBQUU7WUFDZCxPQUFPLEVBQUUsQ0FBQztTQUNYO1FBQ0QsSUFBSSxXQUFXLEVBQUU7WUFDZixPQUFPLEVBQUUsQ0FBQztTQUNYO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsaUJBQWlCLENBQ2YsU0FBZ0IsRUFBRSxFQUNsQixhQUFvQixFQUFFLEVBQ3RCLEtBQWM7UUFFZCxPQUFPLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxLQUFVO1FBQzdCLE9BQU8sTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7YUFDdkIsT0FBTyxDQUFDLHdCQUF3QixFQUFFLEVBQUUsQ0FBQzthQUNyQyxPQUFPLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQzthQUN2QixPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQzthQUNsQixPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQzthQUNwQixJQUFJLEVBQUU7YUFDTixXQUFXLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsZUFBZSxDQUFDLE1BQWEsRUFBRTtRQUM3QixLQUFLLElBQUksS0FBSyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDcEQsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pDLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7U0FDRjtRQUNELE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDWixDQUFDOytHQS9OVSxpQkFBaUI7bUhBQWpCLGlCQUFpQixjQUZoQixNQUFNOzs0RkFFUCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xyXG5pbXBvcnQgKiBhcyBYTFNYIGZyb20gJ3hsc3gnO1xyXG50eXBlIEFPQSA9IGFueVtdW107XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCdWxrVXBsb2FkU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIGhhc0RhdGFJbkxpc3QoZGF0YTogYW55LCBkYXRhU3RhcnRJbmRleDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBsaXN0RGF0YSA9IFhMU1gudXRpbHMuc2hlZXRfdG9fanNvbihkYXRhLCB7XHJcbiAgICAgIGhlYWRlcjogMSwgcmF3OiBmYWxzZSxcclxuICAgIH0pIGFzIEFPQTtcclxuICAgIGxldCBmaW5hbERhdGEgPSBsaXN0RGF0YS5zbGljZSgwLCBkYXRhU3RhcnRJbmRleCk7XHJcbiAgICByZXR1cm4gdGhpcy5jaGVja0VtcHR5RmlsZShmaW5hbERhdGEpO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tFbXB0eUZpbGUoZGF0YTogYW55KSB7XHJcbiAgICBsZXQgaXNFbXB0eSA9IGZhbHNlO1xyXG4gICAgZGF0YSA9IGRhdGEuZmlsdGVyKChkYXRhRWxlbWVudDogYW55KSA9PiBkYXRhRWxlbWVudC5sZW5ndGggPiAwKTtcclxuICAgIGlmIChkYXRhLmxlbmd0aCA8IDEpIHtcclxuICAgICAgaXNFbXB0eSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXNFbXB0eTtcclxuICB9XHJcblxyXG4gIGNoZWNrQ29ycmVjdEZpbGUoZGF0YTogYW55LCBoZWFkZXJJbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBsaXN0RGF0YSA9IFhMU1gudXRpbHMuc2hlZXRfdG9fanNvbihkYXRhLCB7XHJcbiAgICAgIGhlYWRlcjogMSwgcmF3OiBmYWxzZSxcclxuICAgIH0pIGFzIEFPQTtcclxuICAgIGNvbnN0IGhlYWRlciA9IGNsb25lRGVlcChsaXN0RGF0YVtoZWFkZXJJbmRleF0pO1xyXG4gICAgaWYoaGVhZGVySW5kZXggPT09IDIpIHtcclxuICAgICAgcmV0dXJuIGhlYWRlclswXSA9PT0gJ1Jlc3BvbnNpYmlsaXR5IE5hbWUqJyA/IHRydWU6IGZhbHNlO1xyXG4gICAgfSBlbHNlIGlmKGhlYWRlckluZGV4ID09PSAwKSB7XHJcbiAgICAgIHJldHVybiBoZWFkZXJbMF0gPT09ICdFbnRlciBSZXNwb25zaWJpbGl0eSBOYW1lKicgPyB0cnVlOiBmYWxzZTtcclxuICAgIH0gXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBnZXRIZWFkZXJSb3dzKGRhdGE6IGFueSk6IHsgaGVhZGVyOiBhbnlbXTsgc3ViSGVhZGluZzogYW55W10gfSB7XHJcbiAgICBjb25zdCBsaXN0RGF0YSA9IFhMU1gudXRpbHMuc2hlZXRfdG9fanNvbihkYXRhLCB7XHJcbiAgICAgIGhlYWRlcjogMSxcclxuICAgICAgcmF3OiBmYWxzZSxcclxuICAgIH0pIGFzIEFPQTtcclxuICAgIGNvbnN0IHJvd3MgPSBsaXN0RGF0YS5maWx0ZXIoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGxldCBpc1VuZGVmaW5lZCA9ICcnO1xyXG4gICAgICAocmVzIHx8IFtdKS5mb3JFYWNoKChlbDogYW55KSA9PiB7XHJcbiAgICAgICAgaXNVbmRlZmluZWQgPSBpc1VuZGVmaW5lZCArIGVsO1xyXG4gICAgICB9KTtcclxuICAgICAgaWYgKGxpc3REYXRhWzJdICYmIGxpc3REYXRhWzJdWzFdID09PSAnUHJvZ3JhbScpIHtcclxuICAgICAgICByZXR1cm4gIShyZXM/Lmxlbmd0aCA9PT0gOSAmJiByZXNbOF0gPT09ICcnICYmICFpc1VuZGVmaW5lZC5sZW5ndGgpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiAhKHJlcz8ubGVuZ3RoID09PSA2ICYmIHJlc1s1XSA9PT0gJycgJiYgIWlzVW5kZWZpbmVkLmxlbmd0aCk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGhlYWRlcjogY2xvbmVEZWVwKHJvd3NbMl0gfHwgW10pLFxyXG4gICAgICBzdWJIZWFkaW5nOiBjbG9uZURlZXAocm93c1szXSB8fCBbXSksXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRi0wMjogcmVxdWlyZWQgaGVhZGVyIG1pc3Npbmcgb3IgcmVuYW1lZC5cclxuICAgKiBGLTAzOiBleHRyYSBjb2x1bW5zIGluc2VydGVkLlxyXG4gICAqL1xyXG4gIHZhbGlkYXRlUmVzcG9uc2liaWxpdHlIZWFkZXJzKFxyXG4gICAgc2hlZXRzOiBBcnJheTx7IGhlYWRlcj86IGFueVtdOyBzdWJIZWFkaW5nPzogYW55W107IHNoZWV0Pzogc3RyaW5nIH0+XHJcbiAgKTogJ29rJyB8ICdtaXNzaW5nJyB8ICdleHRyYScge1xyXG4gICAgbGV0IHNhd1NoZWV0ID0gZmFsc2U7XHJcbiAgICBsZXQgbWlzc2luZyA9IGZhbHNlO1xyXG4gICAgbGV0IGV4dHJhID0gZmFsc2U7XHJcbiAgICAoc2hlZXRzIHx8IFtdKS5mb3JFYWNoKChzaGVldCkgPT4ge1xyXG4gICAgICBjb25zdCBoZWFkZXIgPSBzaGVldD8uaGVhZGVyIHx8IFtdO1xyXG4gICAgICBpZiAoIWhlYWRlci5zb21lKChjZWxsKSA9PiB0aGlzLm5vcm1hbGl6ZUhlYWRlckxhYmVsKGNlbGwpKSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBzYXdTaGVldCA9IHRydWU7XHJcbiAgICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMudmFsaWRhdGVTaGVldEhlYWRlcnMoaGVhZGVyLCBzaGVldD8uc3ViSGVhZGluZyB8fCBbXSwgc2hlZXQ/LnNoZWV0KTtcclxuICAgICAgaWYgKHN0YXR1cyA9PT0gJ21pc3NpbmcnKSB7XHJcbiAgICAgICAgbWlzc2luZyA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSBpZiAoc3RhdHVzID09PSAnZXh0cmEnKSB7XHJcbiAgICAgICAgZXh0cmEgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmICghc2F3U2hlZXQgfHwgbWlzc2luZykge1xyXG4gICAgICByZXR1cm4gJ21pc3NpbmcnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGV4dHJhID8gJ2V4dHJhJyA6ICdvayc7XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZVNoZWV0SGVhZGVycyhcclxuICAgIGhlYWRlcjogYW55W10gPSBbXSxcclxuICAgIHN1YkhlYWRpbmc6IGFueVtdID0gW10sXHJcbiAgICBzaGVldD86IHN0cmluZ1xyXG4gICk6ICdvaycgfCAnbWlzc2luZycgfCAnZXh0cmEnIHtcclxuICAgIGNvbnN0IGZpcnN0SGVhZGVyID0gdGhpcy5ub3JtYWxpemVIZWFkZXJMYWJlbChoZWFkZXJbMF0pO1xyXG4gICAgaWYgKCFmaXJzdEhlYWRlci5pbmNsdWRlcygncmVzcG9uc2liaWxpdHkgbmFtZScpKSB7XHJcbiAgICAgIHJldHVybiAnbWlzc2luZyc7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaGFzUHJvZ3JhbSA9IHRoaXMuaGFzUHJvZ3JhbUNvbHVtbnMoaGVhZGVyKTtcclxuICAgIGNvbnN0IGV4cGVjdGVkS2V5SW5kZXggPSBoYXNQcm9ncmFtID8gNyA6IDQ7XHJcbiAgICBjb25zdCBrZXlJbmRleCA9IHRoaXMuZmluZExhYmVsSW5kZXgoXHJcbiAgICAgIGhlYWRlcixcclxuICAgICAgc3ViSGVhZGluZyxcclxuICAgICAgJ2tleSByZXNwb25zaWJpbGl0eSdcclxuICAgICk7XHJcbiAgICBpZiAoa2V5SW5kZXggPT09IC0xKSB7XHJcbiAgICAgIHJldHVybiAnbWlzc2luZyc7XHJcbiAgICB9XHJcbiAgICAvLyBBbiBpbnNlcnRlZCBjb2x1bW4gc2hpZnRzIEtleSBSZXNwb25zaWJpbGl0eSBvZmYgaXRzIHRlbXBsYXRlIGluZGV4XHJcbiAgICAvLyAocHJvZ3JhbSB0ZW1wbGF0ZXM6IEggLyA3LCBvdGhlcndpc2U6IEUgLyA0KS4gVGhhdCBpcyBGLTAzLCBub3QgYSByZW1hcC5cclxuICAgIGlmIChrZXlJbmRleCAhPT0gZXhwZWN0ZWRLZXlJbmRleCkge1xyXG4gICAgICByZXR1cm4gJ2V4dHJhJztcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBoYXNBc3NpZ25lZUNvbHVtbiA9XHJcbiAgICAgIHRoaXMuZmluZExhYmVsSW5kZXgoaGVhZGVyLCBzdWJIZWFkaW5nLCAnZW50cnVzdCB0bycpICE9PSAtMSB8fFxyXG4gICAgICB0aGlzLmZpbmRMYWJlbEluZGV4KGhlYWRlciwgc3ViSGVhZGluZywgJ3BlcnNvbiBvciBncm91cCcpICE9PSAtMSB8fFxyXG4gICAgICB0aGlzLmZpbmRMYWJlbEluZGV4KGhlYWRlciwgc3ViSGVhZGluZywgJ2VudHJ1c3RlZCBieScpICE9PSAtMTtcclxuICAgIGlmICghaGFzQXNzaWduZWVDb2x1bW4pIHtcclxuICAgICAgcmV0dXJuICdtaXNzaW5nJztcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc2hlZXQgPT09ICdmcmVxdWVuY3knKSB7XHJcbiAgICAgIGNvbnN0IGZyZXF1ZW5jeUluZGV4ID0gdGhpcy5maW5kTGFiZWxJbmRleChcclxuICAgICAgICBoZWFkZXIsXHJcbiAgICAgICAgc3ViSGVhZGluZyxcclxuICAgICAgICAnZnJlcXVlbmN5J1xyXG4gICAgICApO1xyXG4gICAgICBpZiAoZnJlcXVlbmN5SW5kZXggPT09IC0xKSB7XHJcbiAgICAgICAgcmV0dXJuICdtaXNzaW5nJztcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBleHBlY3RlZEZyZXF1ZW5jeUluZGV4ID0gaGFzUHJvZ3JhbSA/IDggOiA1O1xyXG4gICAgICBpZiAoZnJlcXVlbmN5SW5kZXggIT09IGV4cGVjdGVkRnJlcXVlbmN5SW5kZXgpIHtcclxuICAgICAgICByZXR1cm4gJ2V4dHJhJztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGxhc3RJbmRleCA9IE1hdGgubWF4KFxyXG4gICAgICB0aGlzLmxhc3RGaWxsZWRJbmRleChoZWFkZXIpLFxyXG4gICAgICB0aGlzLmxhc3RGaWxsZWRJbmRleChzdWJIZWFkaW5nKVxyXG4gICAgKTtcclxuICAgIGlmIChsYXN0SW5kZXggPCA4KSB7XHJcbiAgICAgIHJldHVybiAnbWlzc2luZyc7XHJcbiAgICB9XHJcbiAgICBpZiAobGFzdEluZGV4ID4gdGhpcy5nZXRFeHBlY3RlZExhc3RIZWFkZXJJbmRleChoZWFkZXIsIHN1YkhlYWRpbmcsIHNoZWV0KSkge1xyXG4gICAgICByZXR1cm4gJ2V4dHJhJztcclxuICAgIH1cclxuICAgIHJldHVybiAnb2snO1xyXG4gIH1cclxuXHJcbiAgaGFzUHJvZ3JhbUNvbHVtbnMoaGVhZGVyOiBhbnlbXSA9IFtdKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICBoZWFkZXJbMV0gPT09ICdQcm9ncmFtJyB8fFxyXG4gICAgICB0aGlzLm5vcm1hbGl6ZUhlYWRlckxhYmVsKGhlYWRlclsxXSkgPT09ICdwcm9ncmFtJ1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGZpbmRMYWJlbEluZGV4KFxyXG4gICAgaGVhZGVyOiBhbnlbXSA9IFtdLFxyXG4gICAgc3ViSGVhZGluZzogYW55W10gPSBbXSxcclxuICAgIG5lZWRsZTogc3RyaW5nXHJcbiAgKTogbnVtYmVyIHtcclxuICAgIGNvbnN0IG1heExlbiA9IE1hdGgubWF4KGhlYWRlci5sZW5ndGgsIHN1YkhlYWRpbmcubGVuZ3RoKTtcclxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBtYXhMZW47IGluZGV4KyspIHtcclxuICAgICAgY29uc3QgaGVhZGVyTGFiZWwgPSB0aGlzLm5vcm1hbGl6ZUhlYWRlckxhYmVsKGhlYWRlcltpbmRleF0pO1xyXG4gICAgICBjb25zdCBzdWJMYWJlbCA9IHRoaXMubm9ybWFsaXplSGVhZGVyTGFiZWwoc3ViSGVhZGluZ1tpbmRleF0pO1xyXG4gICAgICBpZiAoaGVhZGVyTGFiZWwuaW5jbHVkZXMobmVlZGxlKSB8fCBzdWJMYWJlbC5pbmNsdWRlcyhuZWVkbGUpKSB7XHJcbiAgICAgICAgcmV0dXJuIGluZGV4O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gLTE7XHJcbiAgfVxyXG5cclxuICBnZXRFeHBlY3RlZExhc3RIZWFkZXJJbmRleChcclxuICAgIGhlYWRlcjogYW55W10gPSBbXSxcclxuICAgIHN1YkhlYWRpbmc6IGFueVtdID0gW10sXHJcbiAgICBzaGVldD86IHN0cmluZ1xyXG4gICk6IG51bWJlciB7XHJcbiAgICBjb25zdCBoYXNQcm9ncmFtID0gdGhpcy5oYXNQcm9ncmFtQ29sdW1ucyhoZWFkZXIpO1xyXG4gICAgY29uc3QgaGFzRXh0ZW5kZWQgPSBbLi4uaGVhZGVyLCAuLi5zdWJIZWFkaW5nXS5zb21lKChjZWxsKSA9PiB7XHJcbiAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5ub3JtYWxpemVIZWFkZXJMYWJlbChjZWxsKTtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICBsYWJlbC5pbmNsdWRlcygnZHVlIHRpbWUnKSB8fFxyXG4gICAgICAgIGxhYmVsLmluY2x1ZGVzKCdyZXNwb25zaWJpbGl0eSBlbmRzIGFmdGVyJykgfHxcclxuICAgICAgICBsYWJlbC5pbmNsdWRlcygncmVzcG9uc2liaWxpdHkgZW5kcyBieSBkYXRlJylcclxuICAgICAgKTtcclxuICAgIH0pO1xyXG4gICAgaWYgKHNoZWV0ID09PSAnb25nb2luZycpIHtcclxuICAgICAgcmV0dXJuIGhhc1Byb2dyYW0gPyAyMiA6IDIwO1xyXG4gICAgfVxyXG4gICAgaWYgKGhhc1Byb2dyYW0gJiYgaGFzRXh0ZW5kZWQpIHtcclxuICAgICAgcmV0dXJuIDMxO1xyXG4gICAgfVxyXG4gICAgaWYgKGhhc1Byb2dyYW0pIHtcclxuICAgICAgcmV0dXJuIDI3O1xyXG4gICAgfVxyXG4gICAgaWYgKGhhc0V4dGVuZGVkKSB7XHJcbiAgICAgIHJldHVybiAyNjtcclxuICAgIH1cclxuICAgIHJldHVybiAyMjtcclxuICB9XHJcblxyXG4gIGdldE1heEhlYWRlckluZGV4KFxyXG4gICAgaGVhZGVyOiBhbnlbXSA9IFtdLFxyXG4gICAgc3ViSGVhZGluZzogYW55W10gPSBbXSxcclxuICAgIHNoZWV0Pzogc3RyaW5nXHJcbiAgKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmdldEV4cGVjdGVkTGFzdEhlYWRlckluZGV4KGhlYWRlciwgc3ViSGVhZGluZywgc2hlZXQpO1xyXG4gIH1cclxuXHJcbiAgbm9ybWFsaXplSGVhZGVyTGFiZWwodmFsdWU6IGFueSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlID8/ICcnKVxyXG4gICAgICAucmVwbGFjZSgvW1xcdTIwMEItXFx1MjAwRFxcdUZFRkZdL2csICcnKVxyXG4gICAgICAucmVwbGFjZSgvXFx1MDBhMC9nLCAnICcpXHJcbiAgICAgIC5yZXBsYWNlKC9cXCovZywgJycpXHJcbiAgICAgIC5yZXBsYWNlKC9cXHMrL2csICcgJylcclxuICAgICAgLnRyaW0oKVxyXG4gICAgICAudG9Mb3dlckNhc2UoKTtcclxuICB9XHJcblxyXG4gIGxhc3RGaWxsZWRJbmRleChyb3c6IGFueVtdID0gW10pOiBudW1iZXIge1xyXG4gICAgZm9yIChsZXQgaW5kZXggPSByb3cubGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXgtLSkge1xyXG4gICAgICBpZiAodGhpcy5ub3JtYWxpemVIZWFkZXJMYWJlbChyb3dbaW5kZXhdKSkge1xyXG4gICAgICAgIHJldHVybiBpbmRleDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIC0xO1xyXG4gIH1cclxufVxyXG4iXX0=
|