occam-verify-cli 1.0.898 → 1.0.899
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/lib/context/file/nominal.js +5 -5
- package/lib/element/declaration/complexType.js +4 -4
- package/lib/element/declaration/simpleType.js +6 -4
- package/lib/element/declaration/typePrefix.js +2 -2
- package/lib/element/rule.js +3 -3
- package/lib/element/type.js +7 -6
- package/lib/element/typePrefix.js +5 -1
- package/lib/utilities/json.js +15 -1
- package/package.json +1 -1
- package/src/context/file/nominal.js +4 -4
- package/src/element/declaration/complexType.js +4 -3
- package/src/element/declaration/simpleType.js +9 -4
- package/src/element/declaration/typePrefix.js +2 -1
- package/src/element/rule.js +2 -2
- package/src/element/type.js +16 -8
- package/src/element/typePrefix.js +6 -0
- package/src/utilities/json.js +19 -7
package/lib/utilities/json.js
CHANGED
|
@@ -183,6 +183,12 @@ _export(exports, {
|
|
|
183
183
|
get parametersToParametersJSON () {
|
|
184
184
|
return parametersToParametersJSON;
|
|
185
185
|
},
|
|
186
|
+
get prefixNameFromJSON () {
|
|
187
|
+
return prefixNameFromJSON;
|
|
188
|
+
},
|
|
189
|
+
get prefixnameToPrevixNameJSON () {
|
|
190
|
+
return prefixnameToPrevixNameJSON;
|
|
191
|
+
},
|
|
186
192
|
get premisesFromJSON () {
|
|
187
193
|
return premisesFromJSON;
|
|
188
194
|
},
|
|
@@ -559,6 +565,10 @@ function equalitiesFromJSON(json, context) {
|
|
|
559
565
|
});
|
|
560
566
|
return equalities;
|
|
561
567
|
}
|
|
568
|
+
function prefixNameFromJSON(json, context) {
|
|
569
|
+
const { prefixName } = json;
|
|
570
|
+
return prefixName;
|
|
571
|
+
}
|
|
562
572
|
function superTypesFromJSON(json, context) {
|
|
563
573
|
const { superTypes: superTypesJSON } = json;
|
|
564
574
|
const superTypes = superTypesJSON.map((superTypeJSON)=>{
|
|
@@ -907,6 +917,10 @@ function hypothesesToHypothesesJSON(hypotheses) {
|
|
|
907
917
|
});
|
|
908
918
|
return hypothesesJSON;
|
|
909
919
|
}
|
|
920
|
+
function prefixnameToPrevixNameJSON(prefixname) {
|
|
921
|
+
const prefixNameJSON = prefixname; ///
|
|
922
|
+
return prefixNameJSON;
|
|
923
|
+
}
|
|
910
924
|
function superTypesToSuperTypesJSON(superTypes) {
|
|
911
925
|
const superTypesJSON = superTypes.map((superType)=>{
|
|
912
926
|
const abridged = true, superTypeJSON = superType.toJSON(abridged);
|
|
@@ -1070,4 +1084,4 @@ function findMetaTypeByName(name, context) {
|
|
|
1070
1084
|
return metaType;
|
|
1071
1085
|
}
|
|
1072
1086
|
|
|
1073
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvanNvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IE1uZW1pY0NvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvbW5lbWljXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBuYW1lRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBuYW1lIH0gPSBqc29uO1xuXG4gIGNvbnN0IG5hbWVKU09OID0gbmFtZTsgIC8vL1xuXG4gIG5hbWUgPSBuYW1lSlNPTjsgIC8vL1xuXG4gIHJldHVybiBuYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdGVybSB9ID0ganNvbjtcblxuICBpZiAodGVybSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHRlcm1KU09OID0gdGVybTsgIC8vL1xuXG4gICAganNvbiA9IHRlcm1KU09OOyAgLy8vXG5cbiAgICBjb25zdCB7IFRlcm0gfSA9IGVsZW1lbnRzO1xuXG4gICAgdGVybSA9IFRlcm0uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gdGVybTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHR5cGUgfSA9IGpzb247XG5cbiAgaWYgKHR5cGUgIT09IG51bGwpIHtcbiAgICBqc29uID0gdHlwZTsgIC8vL1xuXG4gICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgbmFtZSA9IHN0cmluZzsgIC8vL1xuXG4gICAgdHlwZSA9IGZpbmRUeXBlQnlOYW1lKG5hbWUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbEZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbGFiZWwgfSA9IGpzb247XG5cbiAgY29uc3QgeyBMYWJlbCB9ID0gZWxlbWVudHMsXG4gICAgbGFiZWxKU09OID0gbGFiZWw7ICAvLy9cblxuICBqc29uID0gbGFiZWxKU09OOyAvLy9cblxuICBsYWJlbCA9IExhYmVsLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiBsYWJlbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyYW1lRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBmcmFtZSB9ID0ganNvbjtcblxuICBpZiAoZnJhbWUgIT09IG51bGwpIHtcbiAgICBjb25zdCBmcmFtZUpTT04gPSBmcmFtZTsgIC8vL1xuXG4gICAganNvbiA9IGZyYW1lSlNPTjsgIC8vL1xuXG4gICAgY29uc3QgeyBGcmFtZSB9ID0gZWxlbWVudHM7XG5cbiAgICBmcmFtZSA9IEZyYW1lLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIGZyYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmVnYXRlZEZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgY29uc3QgeyBuZWdhdGVkIH0gPSBqc29uO1xuXG4gIHJldHVybiBuZWdhdGVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVR5cGVGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IG1ldGFUeXBlIH0gPSBqc29uO1xuXG4gIGlmIChtZXRhVHlwZSAhPT0gbnVsbCkge1xuICAgIGpzb24gPSBtZXRhVHlwZTsgIC8vL1xuXG4gICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgbmFtZSA9IHN0cmluZzsgIC8vL1xuXG4gICAgbWV0YVR5cGUgPSBmaW5kTWV0YVR5cGVCeU5hbWUobmFtZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gbWV0YVR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHN0YXRlbWVudCA9IG51bGwgfSA9IGpzb247XG5cbiAgaWYgKHN0YXRlbWVudCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHsgU3RhdGVtZW50IH0gPSBlbGVtZW50cyxcbiAgICAgICAgICBzdGF0ZW1lbnRKU09OID0gc3RhdGVtZW50OyAgLy8vXG5cbiAgICBqc29uID0gc3RhdGVtZW50SlNPTjsgLy8vXG5cbiAgICBzdGF0ZW1lbnQgPSBTdGF0ZW1lbnQuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVkdWN0aW9uRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBkZWR1Y3Rpb24gfSA9IGpzb247XG5cbiAgY29uc3QgeyBEZWR1Y3Rpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBkZWR1Y3Rpb25KU09OID0gZGVkdWN0aW9uOyAgLy8vXG5cbiAganNvbiA9IGRlZHVjdGlvbkpTT047ICAvLy9cblxuICBkZWR1Y3Rpb24gPSBEZWR1Y3Rpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGRlZHVjdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hdHVyZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc2lnbmF0dXJlID0gbnVsbCB9ID0ganNvbjtcblxuICBpZiAoc2lnbmF0dXJlICE9PSBudWxsKSB7XG4gICAgY29uc3QgeyBTaWduYXR1cmUgfSA9IGVsZW1lbnRzLFxuICAgICAgICAgIHNpZ25hdHVyZUpTT04gPSBzaWduYXR1cmU7ICAvLy9cblxuICAgIGpzb24gPSBzaWduYXR1cmVKU09OOyAvLy9cblxuICAgIHNpZ25hdHVyZSA9IFNpZ25hdHVyZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBzaWduYXR1cmU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2VGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHJlZmVyZW5jZSB9ID0ganNvbjtcblxuICBjb25zdCB7IFJlZmVyZW5jZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHJlZmVyZW5jZUpTT04gPSByZWZlcmVuY2U7ICAvLy9cblxuICBqc29uID0gcmVmZXJlbmNlSlNPTjsgLy8vXG5cbiAgcmVmZXJlbmNlID0gUmVmZXJlbmNlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiByZWZlcmVuY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpZGVudGlmaWVyRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBpZGVudGlmaWVyIH0gPSBqc29uO1xuXG4gIGNvbnN0IGlkZW50aWZpZXJKU09OID0gaWRlbnRpZmllcjsgIC8vL1xuXG4gIGlkZW50aWZpZXIgPSBpZGVudGlmaWVySlNPTjsgIC8vL1xuXG4gIHJldHVybiBpZGVudGlmaWVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uY2x1c2lvbkZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgY29uY2x1c2lvbiB9ID0ganNvbjtcblxuICBjb25zdCB7IENvbmNsdXNpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBjb25jbHVzaW9uSlNPTiA9IGNvbmNsdXNpb247ICAvLy9cblxuICBqc29uID0gY29uY2x1c2lvbkpTT047ICAvLy9cblxuICBjb25jbHVzaW9uID0gQ29uY2x1c2lvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICByZXR1cm4gY29uY2x1c2lvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3Zpc2lvbmFsRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBjb25zdCB7IHByb3Zpc2lvbmFsIH0gPSBqc29uO1xuXG4gIHJldHVybiBwcm92aXNpb25hbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF2YXJpYWJsZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbWV0YXZhcmlhYmxlIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTWV0YXZhcmlhYmxlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbWV0YXZhcmlhYmxlSlNPTiA9IG1ldGF2YXJpYWJsZTsgIC8vL1xuXG4gIGpzb24gPSBtZXRhdmFyaWFibGVKU09OOyAvLy9cblxuICBtZXRhdmFyaWFibGUgPSBNZXRhdmFyaWFibGUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1uZW1pY0NvbnRleHRGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IHJlbGVhc2VDb250ZXh0ID0gY29udGV4dDsgLy8vXG5cbiAgKHsgY29udGV4dCB9ID0ganNvbik7XG5cbiAganNvbiA9IGNvbnRleHQ7IC8vL1xuXG4gIGNvbnRleHQgPSByZWxlYXNlQ29udGV4dDsgLy8vXG5cbiAgY29uc3QgbW5lbWljQ29udGV4dCA9IE1uZW1pY0NvbnRleHQuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIG1uZW1pY0NvbnRleHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZWR1cmVDYWxsRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwcm9jZWR1cmVDYWxsID0gbnVsbCB9ID0ganNvbjtcblxuICBpZiAocHJvY2VkdXJlQ2FsbCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHsgUHJvY2VkdXJlQ2FsbCB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgcHJvY2VkdXJlQ2FsbEpTT04gPSBwcm9jZWR1cmVDYWxsOyAgLy8vXG5cbiAgICBqc29uID0gcHJvY2VkdXJlQ2FsbEpTT047IC8vL1xuXG4gICAgcHJvY2VkdXJlQ2FsbCA9IFByb2NlZHVyZUNhbGwuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gcHJvY2VkdXJlQ2FsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2NlZHVyZVJlZmVyZW5jZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcHJvY2VkdXJlUmVmZXJlbmNlIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUHJvY2VkdXJlUmVmZXJlbmNlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgcHJvY2VkdXJlUmVmZXJlbmNlSlNPTiA9IHByb2NlZHVyZVJlZmVyZW5jZTsgIC8vL1xuXG4gIGpzb24gPSBwcm9jZWR1cmVSZWZlcmVuY2VKU09OOyAgLy8vXG5cbiAgcHJvY2VkdXJlUmVmZXJlbmNlID0gUHJvY2VkdXJlUmVmZXJlbmNlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiBwcm9jZWR1cmVSZWZlcmVuY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlc0Zyb21KU09OKGpzb24sIHR5cGVzLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgdHlwZXM6IHR5cGVzSlNPTiB9ID0ganNvbjtcblxuICBjb25zdCB7IFR5cGUgfSA9IGVsZW1lbnRzO1xuXG4gIHR5cGVzSlNPTi5mb3JFYWNoKCh0eXBlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB0eXBlSlNPTiwgIC8vL1xuICAgICAgICAgIHR5cGUgPSBUeXBlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgdHlwZXMucHVzaCh0eXBlKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdGVybXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBUZXJtIH0gPSBlbGVtZW50cyxcbiAgICAgICAgdGVybXNKU09OID0gdGVybXM7IC8vL1xuXG4gIHRlcm1zID0gdGVybXNKU09OLm1hcCgodGVybUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gdGVybUpTT04sICAvLy9cbiAgICAgICAgICB0ZXJtID0gVGVybS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiB0ZXJtO1xuICB9KTtcblxuICByZXR1cm4gdGVybXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBydWxlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcnVsZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBSdWxlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgcnVsZXNKU09OID0gcnVsZXM7IC8vL1xuXG4gIHJ1bGVzID0gcnVsZXNKU09OLm1hcCgocnVsZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gcnVsZUpTT04sICAvLy9cbiAgICAgICAgICBydWxlID0gUnVsZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBydWxlO1xuICB9KTtcblxuICByZXR1cm4gcnVsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmcmFtZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGZyYW1lcyB9ID0ganNvbjtcblxuICBjb25zdCB7IEZyYW1lIH0gPSBlbGVtZW50cyxcbiAgICBmcmFtZXNKU09OID0gZnJhbWVzOyAvLy9cblxuICBmcmFtZXMgPSBmcmFtZXNKU09OLm1hcCgoZnJhbWVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGZyYW1lSlNPTiwgIC8vL1xuICAgICAgICAgIGZyYW1lID0gRnJhbWUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZnJhbWU7XG4gIH0pO1xuXG4gIHJldHVybiBmcmFtZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbHNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGxhYmVscyB9ID0ganNvbjtcblxuICBjb25zdCB7IExhYmVsIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbGFiZWxzSlNPTiA9IGxhYmVsczsgIC8vL1xuXG4gIGxhYmVscyA9IGxhYmVsc0pTT04ubWFwKChsYWJlbEpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gbGFiZWxKU09OLCAvLy9cbiAgICAgICAgICBsYWJlbCA9IExhYmVsLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGxhYmVsO1xuICB9KTtcblxuICByZXR1cm4gbGFiZWxzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXhpb21zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBheGlvbXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBBeGlvbSB9ID0gZWxlbWVudHMsXG4gICAgICAgIGF4aW9tc0pTT04gPSBheGlvbXM7IC8vL1xuXG4gIGF4aW9tcyA9IGF4aW9tc0pTT04ubWFwKChheGlvbUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gYXhpb21KU09OLCAgLy8vXG4gICAgICAgICAgYXhpb20gPSBBeGlvbS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBheGlvbTtcbiAgfSk7XG5cbiAgcmV0dXJuIGF4aW9tcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZW1pc2VzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwcmVtaXNlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFByZW1pc2UgfSA9IGVsZW1lbnRzLFxuICAgICAgICBwcmVtaXNlc0pTT04gPSBwcmVtaXNlczsgIC8vL1xuXG4gIHByZW1pc2VzID0gcHJlbWlzZXNKU09OLm1hcCgocHJlbWlzZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gcHJlbWlzZUpTT04sIC8vL1xuICAgICAgICAgIHByZW1pc2UgPSBQcmVtaXNlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByZW1pc2U7XG4gIH0pO1xuXG4gIHJldHVybiBwcmVtaXNlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRoZW9yZW1zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyB0aGVvcmVtcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFRoZW9yZW0gfSA9IGVsZW1lbnRzLFxuICAgICAgICB0aGVvcmVtc0pTT04gPSB0aGVvcmVtczsgLy8vXG5cbiAgdGhlb3JlbXMgPSB0aGVvcmVtc0pTT04ubWFwKCh0aGVvcmVtSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB0aGVvcmVtSlNPTiwgIC8vL1xuICAgICAgICAgIHRoZW9yZW0gPSBUaGVvcmVtLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHRoZW9yZW07XG4gIH0pO1xuXG4gIHJldHVybiB0aGVvcmVtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdmFyaWFibGVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVmFyaWFibGUgfSA9IGVsZW1lbnRzLFxuICAgICAgICB2YXJpYWJsZXNKU09OID0gdmFyaWFibGVzOyAvLy9cblxuICB2YXJpYWJsZXMgPSB2YXJpYWJsZXNKU09OLm1hcCgodmFyaWFibGVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHZhcmlhYmxlSlNPTiwgIC8vL1xuICAgICAgICAgIHZhcmlhYmxlID0gVmFyaWFibGUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdmFyaWFibGU7XG4gIH0pO1xuXG4gIHJldHVybiB2YXJpYWJsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9wZXJ0aWVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwcm9wZXJ0aWVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUHJvcGVydHkgfSA9IGVsZW1lbnRzLFxuICAgICAgICBwcm9wZXJ0aWVzSlNPTiA9IHByb3BlcnRpZXM7IC8vL1xuXG4gIHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzSlNPTi5tYXAoKHByb3BlcnR5SlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBwcm9wZXJ0eUpTT04sICAvLy9cbiAgICAgICAgICBwcm9wZXJ0eSA9IFByb3BlcnR5LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByb3BlcnR5O1xuICB9KTtcblxuICByZXR1cm4gcHJvcGVydGllcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWFsaXRpZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGVxdWFsaXRpZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBFcXVhbGl0eSB9ID0gZWxlbWVudHMsXG4gICAgZXF1YWxpdGllc0pTT04gPSBlcXVhbGl0aWVzOyAvLy9cblxuICBlcXVhbGl0aWVzID0gZXF1YWxpdGllc0pTT04ubWFwKChlcXVhbGl0eUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gZXF1YWxpdHlKU09OLCAgLy8vXG4gICAgICBlcXVhbGl0eSA9IEVxdWFsaXR5LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5O1xuICB9KTtcblxuICByZXR1cm4gZXF1YWxpdGllcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cGVyVHlwZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgc3VwZXJUeXBlczogc3VwZXJUeXBlc0pTT04gfSA9IGpzb247XG5cbiAgY29uc3Qgc3VwZXJUeXBlcyA9IHN1cGVyVHlwZXNKU09OLm1hcCgoc3VwZXJUeXBlSlNPTikgPT4ge1xuICAgICAgICAgIGNvbnN0IGpzb24gPSBzdXBlclR5cGVKU09OLCAgLy8vXG4gICAgICAgICAgICAgICAgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgICAgbmFtZSA9IHN0cmluZywgIC8vL1xuICAgICAgICAgICAgICAgIHR5cGUgPSBmaW5kVHlwZUJ5TmFtZShuYW1lLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgICBzdXBlclR5cGUgPSB0eXBlOyAvLy9cblxuICAgICAgICAgIHJldHVybiBzdXBlclR5cGU7XG4gICAgICAgIH0pO1xuXG4gIHJldHVybiBzdXBlclR5cGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaHlwb3RoZXNlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgaHlwb3RoZXNlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IEh5cG90aGVzaXMgfSA9IGVsZW1lbnRzLFxuICAgICAgICBoeXBvdGhlc2VzSlNPTiA9IGh5cG90aGVzZXM7ICAvLy9cblxuICBoeXBvdGhlc2VzID0gaHlwb3RoZXNlc0pTT04ubWFwKChoeXBvdGhlc2lzSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBoeXBvdGhlc2lzSlNPTiwgLy8vXG4gICAgICAgICAgaHlwb3RoZXNpcyA9IEh5cG90aGVzaXMuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gaHlwb3RoZXNpcztcbiAgfSk7XG5cbiAgcmV0dXJuIGh5cG90aGVzZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJhbWV0ZXJzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwYXJhbWV0ZXJzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUGFyYW1ldGVyIH0gPSBlbGVtZW50cyxcbiAgICAgICAgcGFyYW1ldGVyc0pTT04gPSBwYXJhbWV0ZXJzOyAvLy9cblxuICBwYXJhbWV0ZXJzID0gcGFyYW1ldGVyc0pTT04ubWFwKChwYXJhbWV0ZXJKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHBhcmFtZXRlckpTT04sICAvLy9cbiAgICAgICAgICBwYXJhbWV0ZXIgPSBQYXJhbWV0ZXIuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gcGFyYW1ldGVyO1xuICB9KTtcblxuICByZXR1cm4gcGFyYW1ldGVycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGp1ZGdlbWVudHNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGp1ZGdlbWVudHMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBKdWRnZW1lbnQgfSA9IGVsZW1lbnRzLFxuICAgICAgICBqdWRnZW1lbnRzSlNPTiA9IGp1ZGdlbWVudHM7IC8vL1xuXG4gIGp1ZGdlbWVudHMgPSBqdWRnZW1lbnRzSlNPTi5tYXAoKGp1ZGdlbWVudEpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0ganVkZ2VtZW50SlNPTiwgIC8vL1xuICAgICAgICAgIGp1ZGdlbWVudCA9IEp1ZGdlbWVudC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBqdWRnZW1lbnQ7XG4gIH0pO1xuXG4gIHJldHVybiBqdWRnZW1lbnRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhdGVtZW50c0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc3RhdGVtZW50cyB9ID0ganNvbjtcblxuICBjb25zdCB7IFN0YXRlbWVudCB9ID0gZWxlbWVudHMsXG4gICAgICAgIHN0YXRlbWVudHNKU09OID0gc3RhdGVtZW50czsgLy8vXG5cbiAgc3RhdGVtZW50cyA9IHN0YXRlbWVudHNKU09OLm1hcCgoc3RhdGVtZW50SlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBzdGF0ZW1lbnRKU09OLCAgLy8vXG4gICAgICAgICAgc3RhdGVtZW50ID0gU3RhdGVtZW50LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudDtcbiAgfSk7XG5cbiAgcmV0dXJuIHN0YXRlbWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBhc3NlcnRpb25zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVHlwZUFzc2VydGlvbiwgRGVmaW5lZEFzc2VydGlvbiwgUHJvcGVydHlBc3NlcnRpb24sIFN1YnByb29mQXNzZXJ0aW9uLCBTYXRpc2ZpZXNBc3NlcnRpb24sIENvbnRhaW5lZEFzc2VydGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgIGFzc2VydGlvbnNKU09OID0gYXNzZXJ0aW9uczsgLy8vXG5cbiAgYXNzZXJ0aW9ucyA9IGFzc2VydGlvbnNKU09OLm1hcCgoYXNzZXJ0aW9uSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBhc3NlcnRpb25KU09OLCAgLy8vXG4gICAgICAgICAgYXNzZXJ0aW9uID0gVHlwZUFzc2VydGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICBEZWZpbmVkQXNzZXJ0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgIFByb3BlcnR5QXNzZXJ0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgIFN1YnByb29mQXNzZXJ0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgIFNhdGlzZmllc0Fzc2VydGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICBDb250YWluZWRBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gYXNzZXJ0aW9uO1xuICB9KTtcblxuICByZXR1cm4gYXNzZXJ0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZmVyZW5jZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHJlZmVyZW5jZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBSZWZlcmVuY2UgfSA9IGVsZW1lbnRzLFxuICAgICAgICByZWZlcmVuY2VzSlNPTiA9IHJlZmVyZW5jZXM7IC8vL1xuXG4gIHJlZmVyZW5jZXMgPSByZWZlcmVuY2VzSlNPTi5tYXAoKHJlZmVyZW5jZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gcmVmZXJlbmNlSlNPTiwgIC8vL1xuICAgICAgICAgIHJlZmVyZW5jZSA9IFJlZmVyZW5jZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiByZWZlcmVuY2U7XG4gIH0pO1xuXG4gIHJldHVybiByZWZlcmVuY2VzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uamVjdHVyZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGNvbmplY3R1cmVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgQ29uamVjdHVyZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIGNvbmplY3R1cmVzSlNPTiA9IGNvbmplY3R1cmVzOyAvLy9cblxuICBjb25qZWN0dXJlcyA9IGNvbmplY3R1cmVzSlNPTi5tYXAoKGNvbmplY3R1cmVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGNvbmplY3R1cmVKU09OLCAgLy8vXG4gICAgICAgICAgY29uamVjdHVyZSA9IENvbmplY3R1cmUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29uamVjdHVyZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbmplY3R1cmVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tYmluYXRvcnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGNvbWJpbmF0b3JzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgQ29tYmluYXRvciB9ID0gZWxlbWVudHMsXG4gICAgICAgIGNvbWJpbmF0b3JzSlNPTiA9IGNvbWJpbmF0b3JzOyAvLy9cblxuICBjb21iaW5hdG9ycyA9IGNvbWJpbmF0b3JzSlNPTi5tYXAoKGNvbWJpbmF0b3JKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGNvbWJpbmF0b3JKU09OLCAgLy8vXG4gICAgICAgICAgY29tYmluYXRvciA9IENvbWJpbmF0b3IuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29tYmluYXRvcjtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbWJpbmF0b3JzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzdW1wdGlvbnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGFzc3VtcHRpb25zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgQXNzdW1wdGlvbiB9ID0gZWxlbWVudHMsXG4gICAgYXNzdW1wdGlvbnNKU09OID0gYXNzdW1wdGlvbnM7IC8vL1xuXG4gIGFzc3VtcHRpb25zID0gYXNzdW1wdGlvbnNKU09OLm1hcCgoYXNzdW1wdGlvbkpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gYXNzdW1wdGlvbkpTT04sICAvLy9cbiAgICAgICAgICBhc3N1bXB0aW9uID0gQXNzdW1wdGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBhc3N1bXB0aW9uO1xuICB9KTtcblxuICByZXR1cm4gYXNzdW1wdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlUHJlZml4ZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHR5cGVQcmVmaXhlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFR5cGVQcmVmaXggfSA9IGVsZW1lbnRzLFxuICAgICAgICB0eXBlUHJlZml4ZXNKU09OID0gdHlwZVByZWZpeGVzOyAvLy9cblxuICB0eXBlUHJlZml4ZXMgPSB0eXBlUHJlZml4ZXNKU09OLm1hcCgodHlwZVByZWZpeEpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gdHlwZVByZWZpeEpTT04sICAvLy9cbiAgICAgICAgICB0eXBlUHJlZml4ID0gVHlwZVByZWZpeC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiB0eXBlUHJlZml4O1xuICB9KTtcblxuICByZXR1cm4gdHlwZVByZWZpeGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0b3JzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBjb25zdHJ1Y3RvcnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBDb25zdHJ1Y3RvciB9ID0gZWxlbWVudHMsXG4gICAgICAgIGNvbnN0cnVjdG9yc0pTT04gPSBjb25zdHJ1Y3RvcnM7IC8vL1xuXG4gIGNvbnN0cnVjdG9ycyA9IGNvbnN0cnVjdG9yc0pTT04ubWFwKChjb25zdHJ1Y3RvckpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gY29uc3RydWN0b3JKU09OLCAgLy8vXG4gICAgICAgICAgY29uc3RydWN0b3IgPSBDb25zdHJ1Y3Rvci5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb25zdHJ1Y3RvcjtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbnN0cnVjdG9ycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF0aGVvcmVtc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbWV0YXRoZW9yZW1zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTWV0YXRoZW9yZW0gfSA9IGVsZW1lbnRzLFxuICAgICAgICBtZXRhdGhlb3JlbXNKU09OID0gbWV0YXRoZW9yZW1zOyAvLy9cblxuICBtZXRhdGhlb3JlbXMgPSBtZXRhdGhlb3JlbXNKU09OLm1hcCgobWV0YXRoZW9yZW1KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IG1ldGF0aGVvcmVtSlNPTiwgIC8vL1xuICAgICAgICAgIG1ldGF0aGVvcmVtID0gTWV0YXRoZW9yZW0uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gbWV0YXRoZW9yZW07XG4gIH0pO1xuXG4gIHJldHVybiBtZXRhdGhlb3JlbXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdXBwb3NpdGlvbnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHN1cHBvc2l0aW9ucyB9ID0ganNvbjtcblxuICBjb25zdCB7IFN1cHBvc2l0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgc3VwcG9zaXRpb25zSlNPTiA9IHN1cHBvc2l0aW9uczsgIC8vL1xuXG4gIHN1cHBvc2l0aW9ucyA9IHN1cHBvc2l0aW9uc0pTT04ubWFwKChzdXBwb3NpdGlvbkpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gc3VwcG9zaXRpb25KU09OLCAvLy9cbiAgICAgICAgICBzdXBwb3NpdGlvbiA9IFN1cHBvc2l0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uO1xuICB9KTtcblxuICByZXR1cm4gc3VwcG9zaXRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3Vic3RpdHV0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc3Vic3RpdHV0aW9ucyB9ID0ganNvbjsgIC8vL1xuXG4gIGNvbnN0IHN1YnN0aXR1dGlvbnNKU09OID0gc3Vic3RpdHV0aW9uczsgLy8vXG5cbiAgc3Vic3RpdHV0aW9ucyA9IHN1YnN0aXR1dGlvbnNKU09OLm1hcCgoc3Vic3RpdHV0aW9uSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBzdWJzdGl0dXRpb25KU09OLCAgLy8vXG4gICAgICAgICAgc3Vic3RpdHV0aW9uID0gc3Vic3RpdHV0aW9uRnJvbVN1YnN0aXR1dGlvbkpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uO1xuICB9KTtcblxuICByZXR1cm4gc3Vic3RpdHV0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF2YXJpYWJsZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IG1ldGF2YXJpYWJsZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBNZXRhdmFyaWFibGUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBtZXRhdmFyaWFibGVzSlNPTiA9IG1ldGF2YXJpYWJsZXM7IC8vL1xuXG4gIG1ldGF2YXJpYWJsZXMgPSBtZXRhdmFyaWFibGVzSlNPTi5tYXAoKG1ldGF2YXJpYWJsZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gbWV0YXZhcmlhYmxlSlNPTiwgIC8vL1xuICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IE1ldGF2YXJpYWJsZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGU7XG4gIH0pO1xuXG4gIHJldHVybiBtZXRhdmFyaWFibGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW5lbWljQ29udGV4dHNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IHJlbGVhc2VDb250ZXh0ID0gY29udGV4dDsgLy8vXG5cbiAgY29uc3QgeyBjb250ZXh0cyB9ID0ganNvbjtcblxuICBjb25zdCBtbmVtaWNDb250ZXh0cyA9IGNvbnRleHRzLm1hcCgoY29udGV4dCkgPT4ge1xuICAgIGpzb24gPSBjb250ZXh0OyAvLy9cblxuICAgIGNvbnRleHQgPSByZWxlYXNlQ29udGV4dDsgLy8vXG5cbiAgICBjb25zdCBtbmVtaWNDb250ZXh0ID0gTW5lbWljQ29udGV4dC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBtbmVtaWNDb250ZXh0OyAgLy8vXG4gIH0pO1xuXG4gIHJldHVybiBtbmVtaWNDb250ZXh0cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY2xhcmVkVmFyaWFibGVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBkZWNsYXJlZFZhcmlhYmxlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFZhcmlhYmxlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgZGVjbGFyZWRWYXJpYWJsZXNKU09OID0gZGVjbGFyZWRWYXJpYWJsZXM7IC8vL1xuXG4gIGRlY2xhcmVkVmFyaWFibGVzID0gZGVjbGFyZWRWYXJpYWJsZXNKU09OLm1hcCgoZGVjbGFyZWRWYXJpYWJsZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gZGVjbGFyZWRWYXJpYWJsZUpTT04sICAvLy9cbiAgICAgICAgICB2YXJpYWJsZSA9IFZhcmlhYmxlLmZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIGRlY2xhcmVkVmFyaWFibGUgPSB2YXJpYWJsZTsgIC8vL1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGU7XG4gIH0pO1xuXG4gIHJldHVybiBkZWNsYXJlZFZhcmlhYmxlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3BlcnR5UmVsYXRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwcm9wZXJ0eVJlbGF0aW9ucyB9ID0ganNvbjtcblxuICBjb25zdCB7IFByb3BlcnR5UmVsYXRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBwcm9wZXJ0eVJlbGF0aW9uc0pTT04gPSBwcm9wZXJ0eVJlbGF0aW9uczsgLy8vXG5cbiAgcHJvcGVydHlSZWxhdGlvbnMgPSBwcm9wZXJ0eVJlbGF0aW9uc0pTT04ubWFwKChwcm9wZXJ0eVJlbGF0aW9uSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBwcm9wZXJ0eVJlbGF0aW9uSlNPTiwgIC8vL1xuICAgICAgICAgIHByb3BlcnR5UmVsYXRpb24gPSBQcm9wZXJ0eVJlbGF0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByb3BlcnR5UmVsYXRpb247XG4gIH0pO1xuXG4gIHJldHVybiBwcm9wZXJ0eVJlbGF0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGFMZXZlbEFzc3VtcHRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBtZXRhTGV2ZWxBc3N1bXB0aW9ucyB9ID0ganNvbjtcblxuICBjb25zdCB7IE1ldGFMZXZlbEFzc3VtcHRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBtZXRhTGV2ZWxBc3N1bXB0aW9uc0pTT04gPSBtZXRhTGV2ZWxBc3N1bXB0aW9uczsgLy8vXG5cbiAgbWV0YUxldmVsQXNzdW1wdGlvbnMgPSBtZXRhTGV2ZWxBc3N1bXB0aW9uc0pTT04ubWFwKChtZXRhTGV2ZWxBc3N1bXB0aW9uSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBtZXRhTGV2ZWxBc3N1bXB0aW9uSlNPTiwgIC8vL1xuICAgICAgICAgIG1ldGFMZXZlbEFzc3VtcHRpb24gPSBNZXRhTGV2ZWxBc3N1bXB0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIG1ldGFMZXZlbEFzc3VtcHRpb247XG4gIH0pO1xuXG4gIHJldHVybiBtZXRhTGV2ZWxBc3N1bXB0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY2xhcmVkTWV0YXZhcmlhYmxlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgZGVjbGFyZWRNZXRhdmFyaWFibGVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTWV0YXZhcmlhYmxlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgZGVjbGFyZWRNZXRhdmFyaWFibGVzSlNPTiA9IGRlY2xhcmVkTWV0YXZhcmlhYmxlczsgLy8vXG5cbiAgZGVjbGFyZWRNZXRhdmFyaWFibGVzID0gZGVjbGFyZWRNZXRhdmFyaWFibGVzSlNPTi5tYXAoKGRlY2xhcmVkTWV0YXZhcmlhYmxlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBkZWNsYXJlZE1ldGF2YXJpYWJsZUpTT04sICAvLy9cbiAgICAgICAgICBtZXRhdmFyaWFibGUgPSBNZXRhdmFyaWFibGUuZnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgZGVjbGFyZWRNZXRhdmFyaWFibGUgPSBtZXRhdmFyaWFibGU7ICAvLy9cblxuICAgIHJldHVybiBkZWNsYXJlZE1ldGF2YXJpYWJsZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGRlY2xhcmVkTWV0YXZhcmlhYmxlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5hbWVUb05hbWVKU09OKG5hbWUpIHtcbiAgY29uc3QgbmFtZUpTT04gPSBuYW1lOyAgLy8vXG5cbiAgcmV0dXJuIG5hbWVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybVRvVGVybUpTT04odGVybSkge1xuICBjb25zdCB0ZXJtSlNPTiA9ICh0ZXJtICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICB0ZXJtLnRvSlNPTigpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcblxuICByZXR1cm4gdGVybUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlVG9UeXBlSlNPTih0eXBlKSB7XG4gIGxldCB0eXBlSlNPTiA9IG51bGw7XG5cbiAgaWYgKHR5cGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBhYnJpZGdlZCA9IHRydWU7XG5cbiAgICB0eXBlSlNPTiA9IHR5cGUudG9KU09OKGFicmlkZ2VkKTtcbiAgfVxuXG4gIHJldHVybiB0eXBlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyYW1lVG9GcmFtZUpTT04oZnJhbWUpIHtcbiAgY29uc3QgZnJhbWVKU09OID0gKGZyYW1lICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgZnJhbWUudG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcblxuICByZXR1cm4gZnJhbWVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxUb0xhYmVsSlNPTihsYWJlbCkge1xuICBjb25zdCBsYWJlbEpTT04gPSBsYWJlbC50b0pTT04oKTtcblxuICByZXR1cm4gbGFiZWxKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmVnYXRlZFRvTmVnYXRlZEpTT04obmVnYXRlZCkge1xuICBjb25zdCBuZWdhdGVkSlNPTiA9IG5lZ2F0ZWQ7ICAvLy9cblxuICByZXR1cm4gbmVnYXRlZEpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcmlhYmxlVG9WYXJpYWJsZUpTT04oYXJpYWJsZSkge1xuICBjb25zdCBhcmlhYmxlSlNPTiA9IGFyaWFibGUudG9KU09OKCk7XG5cbiAgcmV0dXJuIGFyaWFibGVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVR5cGVUb01ldGFUeXBlSlNPTihtZXRhVHlwZSkge1xuICBjb25zdCBtZXRhVHlwZUpTT04gPSAobWV0YVR5cGUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhVHlwZS50b0pTT04oKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiBtZXRhVHlwZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2VUb1JlZmVyZW5jZUpTT04ocmVmZXJlbmNlKSB7XG4gIGNvbnN0IHJlZmVyZW5jZUpTT04gPSByZWZlcmVuY2UudG9KU09OKCk7XG5cbiAgcmV0dXJuIHJlZmVyZW5jZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRUb1N0YXRlbWVudEpTT04oc3RhdGVtZW50KSB7XG4gIGNvbnN0IHN0YXRlbWVudEpTT04gPSAoc3RhdGVtZW50ICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudC50b0pTT04oKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcblxuICByZXR1cm4gc3RhdGVtZW50SlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZHVjdGlvblRvRGVkdWN0aW9uSlNPTihkZWR1Y3Rpb24pIHtcbiAgY29uc3QgZGVkdWN0aW9uSlNPTiA9IGRlZHVjdGlvbi50b0pTT04oKTtcblxuICByZXR1cm4gZGVkdWN0aW9uSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hdHVyZVRvU2lnbmF0dXJlSlNPTihzaWduYXR1cmUpIHtcbiAgY29uc3Qgc2lnbmF0dXJlSlNPTiA9IChzaWduYXR1cmUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmF0dXJlLnRvSlNPTigpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiBzaWduYXR1cmVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaWRlbnRpZmllclRvSWRlbnRpZmllckpTT04oaWRlbnRpZmllcikge1xuICBjb25zdCBpZGVudGlmaWVySlNPTiA9IGlkZW50aWZpZXI7ICAvLy9cblxuICByZXR1cm4gaWRlbnRpZmllckpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25jbHVzaW9uVG9Db25jbHVzaW9uSlNPTihjb25jbHVzaW9uKSB7XG4gIGNvbnN0IGNvbmNsdXNpb25KU09OID0gY29uY2x1c2lvbi50b0pTT04oKTtcblxuICByZXR1cm4gY29uY2x1c2lvbkpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aXNpb25hbFRvUHJvdmlzaW9uYWxKU09OKHByb3Zpc2lvbmFsKSB7XG4gIGNvbnN0IHByb3Zpc2lvbmFsSlNPTiA9IHByb3Zpc2lvbmFsOyAgLy8vXG5cbiAgcmV0dXJuIHByb3Zpc2lvbmFsSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF2YXJpYWJsZVRvTWV0YXZhcmlhYmxlSlNPTihtZXRhdmFyaWFibGUpIHtcbiAgY29uc3QgbWV0YXZhcmlhYmxlSlNPTiA9IG1ldGF2YXJpYWJsZS50b0pTT04oKTtcblxuICByZXR1cm4gbWV0YXZhcmlhYmxlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2NlZHVyZUNhbGxUb1Byb2NlZHVyZUNhbGxKU09OKHByb2NlZHVyZUNhbGwpIHtcbiAgY29uc3QgcHJvY2VkdXJlQ2FsbEpTT04gPSAocHJvY2VkdXJlQ2FsbCAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2VkdXJlQ2FsbC50b0pTT04oKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG5cbiAgcmV0dXJuIHByb2NlZHVyZUNhbGxKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW5lbWljQ29udGV4dFRvTW5lbWljQ29udGV4dEpTT04obW5lbWljQ29udGV4dCkge1xuICBjb25zdCBtbmVtaWNDb250ZXh0SlNPTiA9IG1uZW1pY0NvbnRleHQudG9KU09OKCk7XG5cbiAgcmV0dXJuIG1uZW1pY0NvbnRleHRKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2VkdXJlUmVmZXJlbmNlVG9Qcm9jZWR1cmVSZWZlcmVuY2VKU09OKHByb2NlZHVyZVJlZmVyZW5jZSkge1xuICBjb25zdCBwcm9jZWR1cmVSZWZlcmVuY2VKU09OID0gcHJvY2VkdXJlUmVmZXJlbmNlLnRvSlNPTigpO1xuXG4gIHJldHVybiBwcm9jZWR1cmVSZWZlcmVuY2VKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjbGFyZWRNZXRhdmFyaWFibGVUb0RFY2xhcmVkTWV0YXZhcmlhYmxlSlNPTihkZWNsYXJlZE1ldGF2YXJpYWJsZSkge1xuICBjb25zdCBkZWNsYXJlZE1ldGF2YXJpYWJsZUpTT04gPSBkZWNsYXJlZE1ldGF2YXJpYWJsZS50b0pTT04oKTtcblxuICByZXR1cm4gZGVjbGFyZWRNZXRhdmFyaWFibGVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3Vic3RpdHV0aW9uRnJvbVN1YnN0aXR1dGlvbkpTT04oanNvbiwgY29udGV4dCkge1xuICBjb25zdCB7IFRlcm1TdWJzdGl0dXRpb24sIEZyYW1lU3Vic3RpdHV0aW9uLCBTdGF0ZW1lbnRTdWJzdGl0dXRpb24sIFJlZmVyZW5jZVN1YnN0aXR1dGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgIHN1YnN0aXR1dGlvbiA9IFRlcm1TdWJzdGl0dXRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVTdWJzdGl0dXRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgU3RhdGVtZW50U3Vic3RpdHV0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgIFJlZmVyZW5jZVN1YnN0aXR1dGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICByZXR1cm4gc3Vic3RpdHV0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybXNUb1Rlcm1zSlNPTih0ZXJtcykge1xuICBjb25zdCB0ZXJtc0pTT04gPSB0ZXJtcy5tYXAoKHRlcm0pID0+IHtcbiAgICBjb25zdCB0ZXJtSlNPTiA9IHRlcm0udG9KU09OKCk7XG5cbiAgICByZXR1cm4gdGVybUpTT047XG4gIH0pO1xuXG4gIHJldHVybiB0ZXJtc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlc1RvVHlwZXNKU09OKHR5cGVzKSB7XG4gIGNvbnN0IHR5cGVzSlNPTiA9IHR5cGVzLm1hcCgodHlwZSkgPT4ge1xuICAgIGNvbnN0IHR5cGVKU09OID0gdHlwZS50b0pTT04oKTtcblxuICAgIHJldHVybiB0eXBlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHR5cGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bGVzVG9SdWxlc0pTT04ocnVsZXMpIHtcbiAgY29uc3QgcnVsZXNKU09OID0gcnVsZXMubWFwKChydWxlKSA9PiB7XG4gICAgY29uc3QgcnVsZUpTT04gPSBydWxlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHJ1bGVKU09OO1xuICB9KTtcblxuICByZXR1cm4gcnVsZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxzVG9MYWJlbHNKU09OKGxhYmVscykge1xuICBjb25zdCBsYWJlbHNKU09OID0gbGFiZWxzLm1hcCgobGFiZWwpID0+IHtcbiAgICBjb25zdCBsYWJlbEpTT04gPSBsYWJlbC50b0pTT04oKTtcblxuICAgIHJldHVybiBsYWJlbEpTT047XG4gIH0pO1xuXG4gIHJldHVybiBsYWJlbHNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZnJhbWVzVG9GcmFtZXNKU09OKGZyYW1lcykge1xuICBjb25zdCBmcmFtZXNKU09OID0gZnJhbWVzLm1hcCgoZnJhbWUpID0+IHtcbiAgICBjb25zdCBmcmFtZUpTT04gPSBmcmFtZS50b0pTT04oKTtcblxuICAgIHJldHVybiBmcmFtZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBmcmFtZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXhpb21zVG9BeGlvbXNKU09OKGF4aW9tcykge1xuICBjb25zdCBheGlvbXNKU09OID0gYXhpb21zLm1hcCgoYXhpb20pID0+IHtcbiAgICBjb25zdCBheGlvbUpTT04gPSBheGlvbS50b0pTT04oKTtcblxuICAgIHJldHVybiBheGlvbUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBheGlvbXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlbWlzZXNUb1ByZW1pc2VzSlNPTihwcmVtaXNlcykge1xuICBjb25zdCBwcmVtaXNlc0pTT04gPSBwcmVtaXNlcy5tYXAoKHByZW1pc2UpID0+IHtcbiAgICBjb25zdCBwcmVtaXNlSlNPTiA9IHByZW1pc2UudG9KU09OKCk7XG5cbiAgICByZXR1cm4gcHJlbWlzZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBwcmVtaXNlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aGVvcmVtc1RvVGhlb3JlbXNKU09OKHRoZW9yZW1zKSB7XG4gIGNvbnN0IHRoZW9yZW1zSlNPTiA9IHRoZW9yZW1zLm1hcCgodGhlb3JlbSkgPT4ge1xuICAgIGNvbnN0IHRoZW9yZW1KU09OID0gdGhlb3JlbS50b0pTT04oKTtcblxuICAgIHJldHVybiB0aGVvcmVtSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHRoZW9yZW1zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlc1RvVmFyaWFibGVzSlNPTih2YXJpYWJsZXMpIHtcbiAgY29uc3QgdmFyaWFibGVzSlNPTiA9IHZhcmlhYmxlcy5tYXAoKHZhcmlhYmxlKSA9PiB7XG4gICAgY29uc3QgdmFyaWFibGVKU09OID0gdmFyaWFibGUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gdmFyaWFibGVKU09OO1xuICB9KTtcblxuICByZXR1cm4gdmFyaWFibGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OKGh5cG90aGVzZXMpIHtcbiAgY29uc3QgaHlwb3RoZXNlc0pTT04gPSBoeXBvdGhlc2VzLm1hcCgoaHlwb3RoZXNpcykgPT4ge1xuICAgIGNvbnN0IGh5cG90aGVzaXNKU09OID0gaHlwb3RoZXNpcy50b0pTT04oKTtcblxuICAgIHJldHVybiBoeXBvdGhlc2lzSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGh5cG90aGVzZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwZXJUeXBlc1RvU3VwZXJUeXBlc0pTT04oc3VwZXJUeXBlcykge1xuICBjb25zdCBzdXBlclR5cGVzSlNPTiA9IHN1cGVyVHlwZXMubWFwKChzdXBlclR5cGUpID0+IHtcbiAgICAgICAgICBjb25zdCBhYnJpZGdlZCA9IHRydWUsXG4gICAgICAgICAgICAgICAgc3VwZXJUeXBlSlNPTiA9IHN1cGVyVHlwZS50b0pTT04oYWJyaWRnZWQpO1xuXG4gICAgICAgICAgcmV0dXJuIHN1cGVyVHlwZUpTT047XG4gICAgICAgIH0pO1xuXG4gIHJldHVybiBzdXBlclR5cGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcmFtZXRlcnNUb1BhcmFtZXRlcnNKU09OKHBhcmFtZXRlcnMpIHtcbiAgY29uc3QgcGFyYW1ldGVyc0pTT04gPSBwYXJhbWV0ZXJzLm1hcCgocGFyYW1ldGVyKSA9PiB7XG4gICAgY29uc3QgcGFyYW1ldGVySlNPTiA9IHBhcmFtZXRlci50b0pTT04oKTtcblxuICAgIHJldHVybiBwYXJhbWV0ZXJKU09OO1xuICB9KTtcblxuICByZXR1cm4gcGFyYW1ldGVyc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9wZXJ0aWVzVG9Qcm9wZXJ0aWVzSlNPTihwcm9wZXJ0aWVzKSB7XG4gIGNvbnN0IHByb3BlcnRpZXNKU09OID0gcHJvcGVydGllcy5tYXAoKHByb3BlcnR5KSA9PiB7XG4gICAgY29uc3QgcHJvcGVydHlKU09OID0gcHJvcGVydHkudG9KU09OKCk7XG5cbiAgICByZXR1cm4gcHJvcGVydHlKU09OO1xuICB9KTtcblxuICByZXR1cm4gcHJvcGVydGllc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBqdWRnZW1lbnRzVG9KdWRnZW1lbnRzSlNPTihqdWRnZW1lbnRzKSB7XG4gIGNvbnN0IGp1ZGdlbWVudHNKU09OID0ganVkZ2VtZW50cy5tYXAoKGp1ZGdlbWVudCkgPT4ge1xuICAgIGNvbnN0IGp1ZGdlbWVudEpTT04gPSBqdWRnZW1lbnQudG9KU09OKCk7XG5cbiAgICByZXR1cm4ganVkZ2VtZW50SlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGp1ZGdlbWVudHNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXF1YWxpdGllc1RvRXF1YWxpdGllc0pTT04oZXF1YWxpdGllcykge1xuICBjb25zdCBlcXVhbGl0aWVzSlNPTiA9IGVxdWFsaXRpZXMubWFwKChlcXVhbGl0eSkgPT4ge1xuICAgIGNvbnN0IGVxdWFsaXR5SlNPTiA9IGVxdWFsaXR5LnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5SlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGVxdWFsaXRpZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhdGVtZW50c1RvU3RhdGVtZW50c0pTT04oc3RhdGVtZW50cykge1xuICBjb25zdCBzdGF0ZW1lbnRzSlNPTiA9IHN0YXRlbWVudHMubWFwKChzdGF0ZW1lbnQpID0+IHtcbiAgICBjb25zdCBzdGF0ZW1lbnRKU09OID0gc3RhdGVtZW50LnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudEpTT047XG4gIH0pO1xuXG4gIHJldHVybiBzdGF0ZW1lbnRzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydGlvbnNUb0Fzc2VydGlvbnNKU09OKGFzc2VydGlvbnMpIHtcbiAgY29uc3QgYXNzZXJ0aW9uc0pTT04gPSBhc3NlcnRpb25zLm1hcCgoYXNzZXJ0aW9uKSA9PiB7XG4gICAgY29uc3QgYXNzZXJ0aW9uSlNPTiA9IGFzc2VydGlvbi50b0pTT04oKTtcblxuICAgIHJldHVybiBhc3NlcnRpb25KU09OO1xuICB9KTtcblxuICByZXR1cm4gYXNzZXJ0aW9uc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2VzVG9SZWZlcmVuY2VzSlNPTihyZWZlcmVuY2VzKSB7XG4gIGNvbnN0IHJlZmVyZW5jZXNKU09OID0gcmVmZXJlbmNlcy5tYXAoKHJlZmVyZW5jZSkgPT4ge1xuICAgIGNvbnN0IHJlZmVyZW5jZUpTT04gPSByZWZlcmVuY2UudG9KU09OKCk7XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlZmVyZW5jZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uamVjdHVyZXNUb0NvbmplY3R1cmVzSlNPTihjb25qZWN0dXJlcykge1xuICBjb25zdCBjb25qZWN0dXJlc0pTT04gPSBjb25qZWN0dXJlcy5tYXAoKGNvbmplY3R1cmUpID0+IHtcbiAgICBjb25zdCBjb25qZWN0dXJlSlNPTiA9IGNvbmplY3R1cmUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gY29uamVjdHVyZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBjb25qZWN0dXJlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5hdG9yc1RvQ29tYmluYXRvcnNKU09OKGNvbWJpbmF0b3JzKSB7XG4gIGNvbnN0IGNvbWJpbmF0b3JzSlNPTiA9IGNvbWJpbmF0b3JzLm1hcCgoY29tYmluYXRvcikgPT4ge1xuICAgIGNvbnN0IGNvbWJpbmF0b3JKU09OID0gY29tYmluYXRvci50b0pTT04oKTtcblxuICAgIHJldHVybiBjb21iaW5hdG9ySlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbWJpbmF0b3JzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc3VtcHRpb25zVG9Bc3N1bXB0aW9uc0pTT04oYXNzdW1wdGlvbnMpIHtcbiAgY29uc3QgYXNzdW1wdGlvbnNKU09OID0gYXNzdW1wdGlvbnMubWFwKChhc3N1bXB0aW9uKSA9PiB7XG4gICAgY29uc3QgYXNzdW1wdGlvbkpTT04gPSBhc3N1bXB0aW9uLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGFzc3VtcHRpb25KU09OO1xuICB9KTtcblxuICByZXR1cm4gYXNzdW1wdGlvbnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwcG9zaXRpb25zVG9TdXBwb3NpdGlvbnNKU09OKHN1cHBvc2l0aW9ucykge1xuICBjb25zdCBzdXBwb3NpdGlvbnNKU09OID0gc3VwcG9zaXRpb25zLm1hcCgoc3VwcG9zaXRpb24pID0+IHtcbiAgICBjb25zdCBzdXBwb3NpdGlvbkpTT04gPSBzdXBwb3NpdGlvbi50b0pTT04oKTtcblxuICAgIHJldHVybiBzdXBwb3NpdGlvbkpTT047XG4gIH0pO1xuXG4gIHJldHVybiBzdXBwb3NpdGlvbnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0b3JzVG9Db25zdHJ1Y3RvcnNKU09OKGNvbnN0cnVjdG9ycykge1xuICBjb25zdCBjb25zdHJ1Y3RvcnNKU09OID0gY29uc3RydWN0b3JzLm1hcCgoY29uc3RydWN0b3IpID0+IHtcbiAgICBjb25zdCBjb25zdHJ1Y3RvckpTT04gPSBjb25zdHJ1Y3Rvci50b0pTT04oKTtcblxuICAgIHJldHVybiBjb25zdHJ1Y3RvckpTT047XG4gIH0pO1xuXG4gIHJldHVybiBjb25zdHJ1Y3RvcnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXRoZW9yZW1zVG9NZXRhdGhlb3JlbXNKU09OKG1ldGF0aGVvcmVtcykge1xuICBjb25zdCBtZXRhdGhlb3JlbXNKU09OID0gbWV0YXRoZW9yZW1zLm1hcCgobWV0YXRoZW9yZW0pID0+IHtcbiAgICBjb25zdCBtZXRhdGhlb3JlbUpTT04gPSBtZXRhdGhlb3JlbS50b0pTT04oKTtcblxuICAgIHJldHVybiBtZXRhdGhlb3JlbUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBtZXRhdGhlb3JlbXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZVByZWZpeGVzVG9UeXBlUHJlZml4ZXNKU09OKHR5cGVQcmVmaXhlcykge1xuICBjb25zdCB0eXBlUHJlZml4ZXNKU09OID0gdHlwZVByZWZpeGVzLm1hcCgodHlwZVByZWZpeCkgPT4ge1xuICAgIGNvbnN0IHR5cGVQcmVmaXhKU09OID0gdHlwZVByZWZpeC50b0pTT04oKTtcblxuICAgIHJldHVybiB0eXBlUHJlZml4SlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHR5cGVQcmVmaXhlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJzdGl0dXRpb25zVG9TdWJzdGl0dXRpb25zSlNPTihzdWJzdGl0dXRpb25zKSB7XG4gIGNvbnN0IHN1YnN0aXR1dGlvbnNKU09OID0gc3Vic3RpdHV0aW9ucy5tYXAoKHN1YnN0aXR1dGlvbikgPT4ge1xuICAgIGNvbnN0IHN1YnN0aXR1dGlvbkpTT04gPSBzdWJzdGl0dXRpb24udG9KU09OKCk7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHN1YnN0aXR1dGlvbnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXZhcmlhYmxlc1RvTWV0YXZhcmlhYmxlc0pTT04obWV0YXZhcmlhYmxlcykge1xuICBjb25zdCBtZXRhdmFyaWFibGVzSlNPTiA9IG1ldGF2YXJpYWJsZXMubWFwKChtZXRhdmFyaWFibGUpID0+IHtcbiAgICBjb25zdCBtZXRhdmFyaWFibGVKU09OID0gbWV0YXZhcmlhYmxlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBtZXRhdmFyaWFibGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1uZW1pY0NvbnRleHRzVG9NbmVtaWNDb250ZXh0c0pTT04obW5lbWljQ29udGV4dHMpIHtcbiAgY29uc3QgbW5lbWljQ29udGV4dHNKU09OID0gbW5lbWljQ29udGV4dHMubWFwKChtbmVtaWNDb250ZXh0KSA9PiB7XG4gICAgY29uc3QgbW5lbWljQ29udGV4dEpTT04gPSBtbmVtaWNDb250ZXh0LnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIG1uZW1pY0NvbnRleHRKU09OO1xuICB9KTtcblxuICByZXR1cm4gbW5lbWljQ29udGV4dHNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvcGVydHlSZWxhdGlvbnNUb1Byb3BlcnR5UmVsYXRpb25zSlNPTihwcm9wZXJ0eVJlbGF0aW9ucykge1xuICBjb25zdCBwcm9wZXJ0eVJlbGF0aW9uc0pTT04gPSBwcm9wZXJ0eVJlbGF0aW9ucy5tYXAoKHByb3BlcnR5UmVsYXRpb24pID0+IHtcbiAgICBjb25zdCBwcm9wZXJ0eVJlbGF0aW9uSlNPTiA9IHByb3BlcnR5UmVsYXRpb24udG9KU09OKCk7XG5cbiAgICByZXR1cm4gcHJvcGVydHlSZWxhdGlvbkpTT047XG4gIH0pO1xuXG4gIHJldHVybiBwcm9wZXJ0eVJlbGF0aW9uc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNsYXJlZFZhcmlhYmxlc1RvRGVjbGFyZWRWYXJpYWJsZXNKU09OKGRlY2xhcmVkVmFyaWFibGVzKSB7XG4gIGNvbnN0IGRlY2xhcmVkVmFyaWFibGVzSlNPTiA9IGRlY2xhcmVkVmFyaWFibGVzLm1hcCgoZGVjbGFyZWRWYXJpYWJsZSkgPT4ge1xuICAgIGNvbnN0IGRlY2xhcmVkVmFyaWFibGVKU09OID0gZGVjbGFyZWRWYXJpYWJsZS50b0pTT04oKTtcblxuICAgIHJldHVybiBkZWNsYXJlZFZhcmlhYmxlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGFMZXZlbEFzc3VtcHRpb25zVG9NZXRhTGV2ZWxBc3N1bXB0aW9uc0pTT04obWV0YUxldmVsQXNzdW1wdGlvbnMpIHtcbiAgY29uc3QgbWV0YUxldmVsQXNzdW1wdGlvbnNKU09OID0gbWV0YUxldmVsQXNzdW1wdGlvbnMubWFwKChtZXRhTGV2ZWxBc3N1bXB0aW9uKSA9PiB7XG4gICAgY29uc3QgbWV0YUxldmVsQXNzdW1wdGlvbkpTT04gPSBtZXRhTGV2ZWxBc3N1bXB0aW9uLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIG1ldGFMZXZlbEFzc3VtcHRpb25KU09OO1xuICB9KTtcblxuICByZXR1cm4gbWV0YUxldmVsQXNzdW1wdGlvbnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjbGFyZWRNZXRhdmFyaWFibGVzVG9EZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OKGRlY2xhcmVkTWV0YXZhcmlhYmxlcykge1xuICBjb25zdCBkZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OID0gZGVjbGFyZWRNZXRhdmFyaWFibGVzLm1hcCgoZGVjbGFyZWRNZXRhdmFyaWFibGUpID0+IHtcbiAgICBjb25zdCBkZWNsYXJlZE1ldGF2YXJpYWJsZUpTT04gPSBkZWNsYXJlZE1ldGF2YXJpYWJsZS50b0pTT04oKTtcblxuICAgIHJldHVybiBkZWNsYXJlZE1ldGF2YXJpYWJsZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBkZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OO1xufVxuXG5mdW5jdGlvbiBmaW5kVHlwZUJ5TmFtZShuYW1lLCBjb250ZXh0KSB7XG4gIGNvbnN0IHR5cGVOYW1lID0gbmFtZSwgIC8vL1xuICAgICAgICB0eXBlID0gY29udGV4dC5maW5kVHlwZUJ5VHlwZU5hbWUodHlwZU5hbWUpO1xuXG4gIHJldHVybiB0eXBlO1xufVxuXG5mdW5jdGlvbiBmaW5kTWV0YVR5cGVCeU5hbWUobmFtZSwgY29udGV4dCkge1xuICBjb25zdCBtZXRhVHlwZU5hbWUgPSBuYW1lLCAgLy8vXG4gICAgICAgIG1ldGFUeXBlID0gY29udGV4dC5maW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZShtZXRhVHlwZU5hbWUpO1xuXG4gIHJldHVybiBtZXRhVHlwZTtcbn1cbiJdLCJuYW1lcyI6WyJhcmlhYmxlVG9WYXJpYWJsZUpTT04iLCJhc3NlcnRpb25zRnJvbUpTT04iLCJhc3NlcnRpb25zVG9Bc3NlcnRpb25zSlNPTiIsImFzc3VtcHRpb25zRnJvbUpTT04iLCJhc3N1bXB0aW9uc1RvQXNzdW1wdGlvbnNKU09OIiwiYXhpb21zRnJvbUpTT04iLCJheGlvbXNUb0F4aW9tc0pTT04iLCJjb21iaW5hdG9yc0Zyb21KU09OIiwiY29tYmluYXRvcnNUb0NvbWJpbmF0b3JzSlNPTiIsImNvbmNsdXNpb25Gcm9tSlNPTiIsImNvbmNsdXNpb25Ub0NvbmNsdXNpb25KU09OIiwiY29uamVjdHVyZXNGcm9tSlNPTiIsImNvbmplY3R1cmVzVG9Db25qZWN0dXJlc0pTT04iLCJjb25zdHJ1Y3RvcnNGcm9tSlNPTiIsImNvbnN0cnVjdG9yc1RvQ29uc3RydWN0b3JzSlNPTiIsImRlY2xhcmVkTWV0YXZhcmlhYmxlVG9ERWNsYXJlZE1ldGF2YXJpYWJsZUpTT04iLCJkZWNsYXJlZE1ldGF2YXJpYWJsZXNGcm9tSlNPTiIsImRlY2xhcmVkTWV0YXZhcmlhYmxlc1RvRGVjbGFyZWRNZXRhdmFyaWFibGVzSlNPTiIsImRlY2xhcmVkVmFyaWFibGVzRnJvbUpTT04iLCJkZWNsYXJlZFZhcmlhYmxlc1RvRGVjbGFyZWRWYXJpYWJsZXNKU09OIiwiZGVkdWN0aW9uRnJvbUpTT04iLCJkZWR1Y3Rpb25Ub0RlZHVjdGlvbkpTT04iLCJlcXVhbGl0aWVzRnJvbUpTT04iLCJlcXVhbGl0aWVzVG9FcXVhbGl0aWVzSlNPTiIsImZyYW1lRnJvbUpTT04iLCJmcmFtZVRvRnJhbWVKU09OIiwiZnJhbWVzRnJvbUpTT04iLCJmcmFtZXNUb0ZyYW1lc0pTT04iLCJoeXBvdGhlc2VzRnJvbUpTT04iLCJoeXBvdGhlc2VzVG9IeXBvdGhlc2VzSlNPTiIsImlkZW50aWZpZXJGcm9tSlNPTiIsImlkZW50aWZpZXJUb0lkZW50aWZpZXJKU09OIiwianVkZ2VtZW50c0Zyb21KU09OIiwianVkZ2VtZW50c1RvSnVkZ2VtZW50c0pTT04iLCJsYWJlbEZyb21KU09OIiwibGFiZWxUb0xhYmVsSlNPTiIsImxhYmVsc0Zyb21KU09OIiwibGFiZWxzVG9MYWJlbHNKU09OIiwibWV0YUxldmVsQXNzdW1wdGlvbnNGcm9tSlNPTiIsIm1ldGFMZXZlbEFzc3VtcHRpb25zVG9NZXRhTGV2ZWxBc3N1bXB0aW9uc0pTT04iLCJtZXRhVHlwZUZyb21KU09OIiwibWV0YVR5cGVUb01ldGFUeXBlSlNPTiIsIm1ldGF0aGVvcmVtc0Zyb21KU09OIiwibWV0YXRoZW9yZW1zVG9NZXRhdGhlb3JlbXNKU09OIiwibWV0YXZhcmlhYmxlRnJvbUpTT04iLCJtZXRhdmFyaWFibGVUb01ldGF2YXJpYWJsZUpTT04iLCJtZXRhdmFyaWFibGVzRnJvbUpTT04iLCJtZXRhdmFyaWFibGVzVG9NZXRhdmFyaWFibGVzSlNPTiIsIm1uZW1pY0NvbnRleHRGcm9tSlNPTiIsIm1uZW1pY0NvbnRleHRUb01uZW1pY0NvbnRleHRKU09OIiwibW5lbWljQ29udGV4dHNGcm9tSlNPTiIsIm1uZW1pY0NvbnRleHRzVG9NbmVtaWNDb250ZXh0c0pTT04iLCJuYW1lRnJvbUpTT04iLCJuYW1lVG9OYW1lSlNPTiIsIm5lZ2F0ZWRGcm9tSlNPTiIsIm5lZ2F0ZWRUb05lZ2F0ZWRKU09OIiwicGFyYW1ldGVyc0Zyb21KU09OIiwicGFyYW1ldGVyc1RvUGFyYW1ldGVyc0pTT04iLCJwcmVtaXNlc0Zyb21KU09OIiwicHJlbWlzZXNUb1ByZW1pc2VzSlNPTiIsInByb2NlZHVyZUNhbGxGcm9tSlNPTiIsInByb2NlZHVyZUNhbGxUb1Byb2NlZHVyZUNhbGxKU09OIiwicHJvY2VkdXJlUmVmZXJlbmNlRnJvbUpTT04iLCJwcm9jZWR1cmVSZWZlcmVuY2VUb1Byb2NlZHVyZVJlZmVyZW5jZUpTT04iLCJwcm9wZXJ0aWVzRnJvbUpTT04iLCJwcm9wZXJ0aWVzVG9Qcm9wZXJ0aWVzSlNPTiIsInByb3BlcnR5UmVsYXRpb25zRnJvbUpTT04iLCJwcm9wZXJ0eVJlbGF0aW9uc1RvUHJvcGVydHlSZWxhdGlvbnNKU09OIiwicHJvdmlzaW9uYWxGcm9tSlNPTiIsInByb3Zpc2lvbmFsVG9Qcm92aXNpb25hbEpTT04iLCJyZWZlcmVuY2VGcm9tSlNPTiIsInJlZmVyZW5jZVRvUmVmZXJlbmNlSlNPTiIsInJlZmVyZW5jZXNGcm9tSlNPTiIsInJlZmVyZW5jZXNUb1JlZmVyZW5jZXNKU09OIiwicnVsZXNGcm9tSlNPTiIsInJ1bGVzVG9SdWxlc0pTT04iLCJzaWduYXR1cmVGcm9tSlNPTiIsInNpZ25hdHVyZVRvU2lnbmF0dXJlSlNPTiIsInN0YXRlbWVudEZyb21KU09OIiwic3RhdGVtZW50VG9TdGF0ZW1lbnRKU09OIiwic3RhdGVtZW50c0Zyb21KU09OIiwic3RhdGVtZW50c1RvU3RhdGVtZW50c0pTT04iLCJzdWJzdGl0dXRpb25Gcm9tU3Vic3RpdHV0aW9uSlNPTiIsInN1YnN0aXR1dGlvbnNGcm9tSlNPTiIsInN1YnN0aXR1dGlvbnNUb1N1YnN0aXR1dGlvbnNKU09OIiwic3VwZXJUeXBlc0Zyb21KU09OIiwic3VwZXJUeXBlc1RvU3VwZXJUeXBlc0pTT04iLCJzdXBwb3NpdGlvbnNGcm9tSlNPTiIsInN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTiIsInRlcm1Gcm9tSlNPTiIsInRlcm1Ub1Rlcm1KU09OIiwidGVybXNGcm9tSlNPTiIsInRlcm1zVG9UZXJtc0pTT04iLCJ0aGVvcmVtc0Zyb21KU09OIiwidGhlb3JlbXNUb1RoZW9yZW1zSlNPTiIsInR5cGVGcm9tSlNPTiIsInR5cGVQcmVmaXhlc0Zyb21KU09OIiwidHlwZVByZWZpeGVzVG9UeXBlUHJlZml4ZXNKU09OIiwidHlwZVRvVHlwZUpTT04iLCJ0eXBlc0Zyb21KU09OIiwidHlwZXNUb1R5cGVzSlNPTiIsInZhcmlhYmxlc0Zyb21KU09OIiwidmFyaWFibGVzVG9WYXJpYWJsZXNKU09OIiwianNvbiIsImNvbnRleHQiLCJuYW1lIiwibmFtZUpTT04iLCJ0ZXJtIiwidGVybUpTT04iLCJUZXJtIiwiZWxlbWVudHMiLCJmcm9tSlNPTiIsInR5cGUiLCJzdHJpbmciLCJmaW5kVHlwZUJ5TmFtZSIsImxhYmVsIiwiTGFiZWwiLCJsYWJlbEpTT04iLCJmcmFtZSIsImZyYW1lSlNPTiIsIkZyYW1lIiwibmVnYXRlZCIsIm1ldGFUeXBlIiwiZmluZE1ldGFUeXBlQnlOYW1lIiwic3RhdGVtZW50IiwiU3RhdGVtZW50Iiwic3RhdGVtZW50SlNPTiIsImRlZHVjdGlvbiIsIkRlZHVjdGlvbiIsImRlZHVjdGlvbkpTT04iLCJzaWduYXR1cmUiLCJTaWduYXR1cmUiLCJzaWduYXR1cmVKU09OIiwicmVmZXJlbmNlIiwiUmVmZXJlbmNlIiwicmVmZXJlbmNlSlNPTiIsImlkZW50aWZpZXIiLCJpZGVudGlmaWVySlNPTiIsImNvbmNsdXNpb24iLCJDb25jbHVzaW9uIiwiY29uY2x1c2lvbkpTT04iLCJwcm92aXNpb25hbCIsIm1ldGF2YXJpYWJsZSIsIk1ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZUpTT04iLCJyZWxlYXNlQ29udGV4dCIsIm1uZW1pY0NvbnRleHQiLCJNbmVtaWNDb250ZXh0IiwicHJvY2VkdXJlQ2FsbCIsIlByb2NlZHVyZUNhbGwiLCJwcm9jZWR1cmVDYWxsSlNPTiIsInByb2NlZHVyZVJlZmVyZW5jZSIsIlByb2NlZHVyZVJlZmVyZW5jZSIsInByb2NlZHVyZVJlZmVyZW5jZUpTT04iLCJ0eXBlcyIsInR5cGVzSlNPTiIsIlR5cGUiLCJmb3JFYWNoIiwidHlwZUpTT04iLCJwdXNoIiwidGVybXMiLCJ0ZXJtc0pTT04iLCJtYXAiLCJydWxlcyIsIlJ1bGUiLCJydWxlc0pTT04iLCJydWxlSlNPTiIsInJ1bGUiLCJmcmFtZXMiLCJmcmFtZXNKU09OIiwibGFiZWxzIiwibGFiZWxzSlNPTiIsImF4aW9tcyIsIkF4aW9tIiwiYXhpb21zSlNPTiIsImF4aW9tSlNPTiIsImF4aW9tIiwicHJlbWlzZXMiLCJQcmVtaXNlIiwicHJlbWlzZXNKU09OIiwicHJlbWlzZUpTT04iLCJwcmVtaXNlIiwidGhlb3JlbXMiLCJUaGVvcmVtIiwidGhlb3JlbXNKU09OIiwidGhlb3JlbUpTT04iLCJ0aGVvcmVtIiwidmFyaWFibGVzIiwiVmFyaWFibGUiLCJ2YXJpYWJsZXNKU09OIiwidmFyaWFibGVKU09OIiwidmFyaWFibGUiLCJwcm9wZXJ0aWVzIiwiUHJvcGVydHkiLCJwcm9wZXJ0aWVzSlNPTiIsInByb3BlcnR5SlNPTiIsInByb3BlcnR5IiwiZXF1YWxpdGllcyIsIkVxdWFsaXR5IiwiZXF1YWxpdGllc0pTT04iLCJlcXVhbGl0eUpTT04iLCJlcXVhbGl0eSIsInN1cGVyVHlwZXMiLCJzdXBlclR5cGVzSlNPTiIsInN1cGVyVHlwZUpTT04iLCJzdXBlclR5cGUiLCJoeXBvdGhlc2VzIiwiSHlwb3RoZXNpcyIsImh5cG90aGVzZXNKU09OIiwiaHlwb3RoZXNpc0pTT04iLCJoeXBvdGhlc2lzIiwicGFyYW1ldGVycyIsIlBhcmFtZXRlciIsInBhcmFtZXRlcnNKU09OIiwicGFyYW1ldGVySlNPTiIsInBhcmFtZXRlciIsImp1ZGdlbWVudHMiLCJKdWRnZW1lbnQiLCJqdWRnZW1lbnRzSlNPTiIsImp1ZGdlbWVudEpTT04iLCJqdWRnZW1lbnQiLCJzdGF0ZW1lbnRzIiwic3RhdGVtZW50c0pTT04iLCJhc3NlcnRpb25zIiwiVHlwZUFzc2VydGlvbiIsIkRlZmluZWRBc3NlcnRpb24iLCJQcm9wZXJ0eUFzc2VydGlvbiIsIlN1YnByb29mQXNzZXJ0aW9uIiwiU2F0aXNmaWVzQXNzZXJ0aW9uIiwiQ29udGFpbmVkQXNzZXJ0aW9uIiwiYXNzZXJ0aW9uc0pTT04iLCJhc3NlcnRpb25KU09OIiwiYXNzZXJ0aW9uIiwicmVmZXJlbmNlcyIsInJlZmVyZW5jZXNKU09OIiwiY29uamVjdHVyZXMiLCJDb25qZWN0dXJlIiwiY29uamVjdHVyZXNKU09OIiwiY29uamVjdHVyZUpTT04iLCJjb25qZWN0dXJlIiwiY29tYmluYXRvcnMiLCJDb21iaW5hdG9yIiwiY29tYmluYXRvcnNKU09OIiwiY29tYmluYXRvckpTT04iLCJjb21iaW5hdG9yIiwiYXNzdW1wdGlvbnMiLCJBc3N1bXB0aW9uIiwiYXNzdW1wdGlvbnNKU09OIiwiYXNzdW1wdGlvbkpTT04iLCJhc3N1bXB0aW9uIiwidHlwZVByZWZpeGVzIiwiVHlwZVByZWZpeCIsInR5cGVQcmVmaXhlc0pTT04iLCJ0eXBlUHJlZml4SlNPTiIsInR5cGVQcmVmaXgiLCJjb25zdHJ1Y3RvcnMiLCJDb25zdHJ1Y3RvciIsImNvbnN0cnVjdG9yc0pTT04iLCJjb25zdHJ1Y3RvckpTT04iLCJjb25zdHJ1Y3RvciIsIm1ldGF0aGVvcmVtcyIsIk1ldGF0aGVvcmVtIiwibWV0YXRoZW9yZW1zSlNPTiIsIm1ldGF0aGVvcmVtSlNPTiIsIm1ldGF0aGVvcmVtIiwic3VwcG9zaXRpb25zIiwiU3VwcG9zaXRpb24iLCJzdXBwb3NpdGlvbnNKU09OIiwic3VwcG9zaXRpb25KU09OIiwic3VwcG9zaXRpb24iLCJzdWJzdGl0dXRpb25zIiwic3Vic3RpdHV0aW9uc0pTT04iLCJzdWJzdGl0dXRpb25KU09OIiwic3Vic3RpdHV0aW9uIiwibWV0YXZhcmlhYmxlcyIsIm1ldGF2YXJpYWJsZXNKU09OIiwiY29udGV4dHMiLCJtbmVtaWNDb250ZXh0cyIsImRlY2xhcmVkVmFyaWFibGVzIiwiZGVjbGFyZWRWYXJpYWJsZXNKU09OIiwiZGVjbGFyZWRWYXJpYWJsZUpTT04iLCJkZWNsYXJlZFZhcmlhYmxlIiwicHJvcGVydHlSZWxhdGlvbnMiLCJQcm9wZXJ0eVJlbGF0aW9uIiwicHJvcGVydHlSZWxhdGlvbnNKU09OIiwicHJvcGVydHlSZWxhdGlvbkpTT04iLCJwcm9wZXJ0eVJlbGF0aW9uIiwibWV0YUxldmVsQXNzdW1wdGlvbnMiLCJNZXRhTGV2ZWxBc3N1bXB0aW9uIiwibWV0YUxldmVsQXNzdW1wdGlvbnNKU09OIiwibWV0YUxldmVsQXNzdW1wdGlvbkpTT04iLCJtZXRhTGV2ZWxBc3N1bXB0aW9uIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVzIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVzSlNPTiIsImRlY2xhcmVkTWV0YXZhcmlhYmxlSlNPTiIsImRlY2xhcmVkTWV0YXZhcmlhYmxlIiwidG9KU09OIiwiYWJyaWRnZWQiLCJuZWdhdGVkSlNPTiIsImFyaWFibGUiLCJhcmlhYmxlSlNPTiIsIm1ldGFUeXBlSlNPTiIsInByb3Zpc2lvbmFsSlNPTiIsIm1uZW1pY0NvbnRleHRKU09OIiwiVGVybVN1YnN0aXR1dGlvbiIsIkZyYW1lU3Vic3RpdHV0aW9uIiwiU3RhdGVtZW50U3Vic3RpdHV0aW9uIiwiUmVmZXJlbmNlU3Vic3RpdHV0aW9uIiwibW5lbWljQ29udGV4dHNKU09OIiwidHlwZU5hbWUiLCJmaW5kVHlwZUJ5VHlwZU5hbWUiLCJtZXRhVHlwZU5hbWUiLCJmaW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBK3hCZ0JBO2VBQUFBOztRQXRUQUM7ZUFBQUE7O1FBNmpCQUM7ZUFBQUE7O1FBeGZBQztlQUFBQTs7UUFnaUJBQztlQUFBQTs7UUFyeEJBQztlQUFBQTs7UUE4bkJBQztlQUFBQTs7UUF6WkFDO2VBQUFBOztRQXNpQkFDO2VBQUFBOztRQWw2QkFDO2VBQUFBOztRQTZxQkFDO2VBQUFBOztRQWpVQUM7ZUFBQUE7O1FBNGlCQUM7ZUFBQUE7O1FBNWVBQztlQUFBQTs7UUFvaEJBQztlQUFBQTs7UUE3T0FDO2VBQUFBOztRQXJKQUM7ZUFBQUE7O1FBNGRBQztlQUFBQTs7UUE3Z0JBQztlQUFBQTs7UUF5ZkFDO2VBQUFBOztRQXpqQ0FDO2VBQUFBOztRQTRzQkFDO2VBQUFBOztRQWxiQUM7ZUFBQUE7O1FBeW9CQUM7ZUFBQUE7O1FBdjlCQUM7ZUFBQUE7O1FBZ3RCQUM7ZUFBQUE7O1FBbGZBQztlQUFBQTs7UUFvcEJBQztlQUFBQTs7UUFwZ0JBQztlQUFBQTs7UUFzakJBQztlQUFBQTs7UUF2MEJBQztlQUFBQTs7UUFpckJBQztlQUFBQTs7UUFoWUFDO2VBQUFBOztRQStqQkFDO2VBQUFBOztRQTE5QkFDO2VBQUFBOztRQXF1QkFDO2VBQUFBOztRQTFlQUM7ZUFBQUE7O1FBMG5CQUM7ZUFBQUE7O1FBbk5BQztlQUFBQTs7UUFrZUFDO2VBQUFBOztRQWptQ0FDO2VBQUFBOztRQW90QkFDO2VBQUFBOztRQXZNQUM7ZUFBQUE7O1FBOGdCQUM7ZUFBQUE7O1FBdjdCQUM7ZUFBQUE7O1FBc3FCQUM7ZUFBQUE7O1FBOU1BQztlQUFBQTs7UUE2ZkFDO2VBQUFBOztRQXg4QkFDO2VBQUFBOztRQXVxQkFDO2VBQUFBOztRQTVNQUM7ZUFBQUE7O1FBdWZBQztlQUFBQTs7UUEvb0NBQztlQUFBQTs7UUE0dUJBQztlQUFBQTs7UUF0cUJBQztlQUFBQTs7UUE4c0JB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
|
|
1087
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvanNvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IE1uZW1pY0NvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvbW5lbWljXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBuYW1lRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBuYW1lIH0gPSBqc29uO1xuXG4gIGNvbnN0IG5hbWVKU09OID0gbmFtZTsgIC8vL1xuXG4gIG5hbWUgPSBuYW1lSlNPTjsgIC8vL1xuXG4gIHJldHVybiBuYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdGVybSB9ID0ganNvbjtcblxuICBpZiAodGVybSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHRlcm1KU09OID0gdGVybTsgIC8vL1xuXG4gICAganNvbiA9IHRlcm1KU09OOyAgLy8vXG5cbiAgICBjb25zdCB7IFRlcm0gfSA9IGVsZW1lbnRzO1xuXG4gICAgdGVybSA9IFRlcm0uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gdGVybTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHR5cGUgfSA9IGpzb247XG5cbiAgaWYgKHR5cGUgIT09IG51bGwpIHtcbiAgICBqc29uID0gdHlwZTsgIC8vL1xuXG4gICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgbmFtZSA9IHN0cmluZzsgIC8vL1xuXG4gICAgdHlwZSA9IGZpbmRUeXBlQnlOYW1lKG5hbWUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbEZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbGFiZWwgfSA9IGpzb247XG5cbiAgY29uc3QgeyBMYWJlbCB9ID0gZWxlbWVudHMsXG4gICAgbGFiZWxKU09OID0gbGFiZWw7ICAvLy9cblxuICBqc29uID0gbGFiZWxKU09OOyAvLy9cblxuICBsYWJlbCA9IExhYmVsLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiBsYWJlbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyYW1lRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBmcmFtZSB9ID0ganNvbjtcblxuICBpZiAoZnJhbWUgIT09IG51bGwpIHtcbiAgICBjb25zdCBmcmFtZUpTT04gPSBmcmFtZTsgIC8vL1xuXG4gICAganNvbiA9IGZyYW1lSlNPTjsgIC8vL1xuXG4gICAgY29uc3QgeyBGcmFtZSB9ID0gZWxlbWVudHM7XG5cbiAgICBmcmFtZSA9IEZyYW1lLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIGZyYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmVnYXRlZEZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgY29uc3QgeyBuZWdhdGVkIH0gPSBqc29uO1xuXG4gIHJldHVybiBuZWdhdGVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVR5cGVGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IG1ldGFUeXBlIH0gPSBqc29uO1xuXG4gIGlmIChtZXRhVHlwZSAhPT0gbnVsbCkge1xuICAgIGpzb24gPSBtZXRhVHlwZTsgIC8vL1xuXG4gICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgbmFtZSA9IHN0cmluZzsgIC8vL1xuXG4gICAgbWV0YVR5cGUgPSBmaW5kTWV0YVR5cGVCeU5hbWUobmFtZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gbWV0YVR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHN0YXRlbWVudCA9IG51bGwgfSA9IGpzb247XG5cbiAgaWYgKHN0YXRlbWVudCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHsgU3RhdGVtZW50IH0gPSBlbGVtZW50cyxcbiAgICAgICAgICBzdGF0ZW1lbnRKU09OID0gc3RhdGVtZW50OyAgLy8vXG5cbiAgICBqc29uID0gc3RhdGVtZW50SlNPTjsgLy8vXG5cbiAgICBzdGF0ZW1lbnQgPSBTdGF0ZW1lbnQuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVkdWN0aW9uRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBkZWR1Y3Rpb24gfSA9IGpzb247XG5cbiAgY29uc3QgeyBEZWR1Y3Rpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBkZWR1Y3Rpb25KU09OID0gZGVkdWN0aW9uOyAgLy8vXG5cbiAganNvbiA9IGRlZHVjdGlvbkpTT047ICAvLy9cblxuICBkZWR1Y3Rpb24gPSBEZWR1Y3Rpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGRlZHVjdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hdHVyZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc2lnbmF0dXJlID0gbnVsbCB9ID0ganNvbjtcblxuICBpZiAoc2lnbmF0dXJlICE9PSBudWxsKSB7XG4gICAgY29uc3QgeyBTaWduYXR1cmUgfSA9IGVsZW1lbnRzLFxuICAgICAgICAgIHNpZ25hdHVyZUpTT04gPSBzaWduYXR1cmU7ICAvLy9cblxuICAgIGpzb24gPSBzaWduYXR1cmVKU09OOyAvLy9cblxuICAgIHNpZ25hdHVyZSA9IFNpZ25hdHVyZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBzaWduYXR1cmU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2VGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHJlZmVyZW5jZSB9ID0ganNvbjtcblxuICBjb25zdCB7IFJlZmVyZW5jZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHJlZmVyZW5jZUpTT04gPSByZWZlcmVuY2U7ICAvLy9cblxuICBqc29uID0gcmVmZXJlbmNlSlNPTjsgLy8vXG5cbiAgcmVmZXJlbmNlID0gUmVmZXJlbmNlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiByZWZlcmVuY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpZGVudGlmaWVyRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBpZGVudGlmaWVyIH0gPSBqc29uO1xuXG4gIGNvbnN0IGlkZW50aWZpZXJKU09OID0gaWRlbnRpZmllcjsgIC8vL1xuXG4gIGlkZW50aWZpZXIgPSBpZGVudGlmaWVySlNPTjsgIC8vL1xuXG4gIHJldHVybiBpZGVudGlmaWVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uY2x1c2lvbkZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgY29uY2x1c2lvbiB9ID0ganNvbjtcblxuICBjb25zdCB7IENvbmNsdXNpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBjb25jbHVzaW9uSlNPTiA9IGNvbmNsdXNpb247ICAvLy9cblxuICBqc29uID0gY29uY2x1c2lvbkpTT047ICAvLy9cblxuICBjb25jbHVzaW9uID0gQ29uY2x1c2lvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICByZXR1cm4gY29uY2x1c2lvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3Zpc2lvbmFsRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBjb25zdCB7IHByb3Zpc2lvbmFsIH0gPSBqc29uO1xuXG4gIHJldHVybiBwcm92aXNpb25hbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF2YXJpYWJsZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbWV0YXZhcmlhYmxlIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTWV0YXZhcmlhYmxlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbWV0YXZhcmlhYmxlSlNPTiA9IG1ldGF2YXJpYWJsZTsgIC8vL1xuXG4gIGpzb24gPSBtZXRhdmFyaWFibGVKU09OOyAvLy9cblxuICBtZXRhdmFyaWFibGUgPSBNZXRhdmFyaWFibGUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1uZW1pY0NvbnRleHRGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IHJlbGVhc2VDb250ZXh0ID0gY29udGV4dDsgLy8vXG5cbiAgKHsgY29udGV4dCB9ID0ganNvbik7XG5cbiAganNvbiA9IGNvbnRleHQ7IC8vL1xuXG4gIGNvbnRleHQgPSByZWxlYXNlQ29udGV4dDsgLy8vXG5cbiAgY29uc3QgbW5lbWljQ29udGV4dCA9IE1uZW1pY0NvbnRleHQuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIG1uZW1pY0NvbnRleHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZWR1cmVDYWxsRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwcm9jZWR1cmVDYWxsID0gbnVsbCB9ID0ganNvbjtcblxuICBpZiAocHJvY2VkdXJlQ2FsbCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHsgUHJvY2VkdXJlQ2FsbCB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgcHJvY2VkdXJlQ2FsbEpTT04gPSBwcm9jZWR1cmVDYWxsOyAgLy8vXG5cbiAgICBqc29uID0gcHJvY2VkdXJlQ2FsbEpTT047IC8vL1xuXG4gICAgcHJvY2VkdXJlQ2FsbCA9IFByb2NlZHVyZUNhbGwuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gcHJvY2VkdXJlQ2FsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2NlZHVyZVJlZmVyZW5jZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcHJvY2VkdXJlUmVmZXJlbmNlIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUHJvY2VkdXJlUmVmZXJlbmNlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgcHJvY2VkdXJlUmVmZXJlbmNlSlNPTiA9IHByb2NlZHVyZVJlZmVyZW5jZTsgIC8vL1xuXG4gIGpzb24gPSBwcm9jZWR1cmVSZWZlcmVuY2VKU09OOyAgLy8vXG5cbiAgcHJvY2VkdXJlUmVmZXJlbmNlID0gUHJvY2VkdXJlUmVmZXJlbmNlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiBwcm9jZWR1cmVSZWZlcmVuY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlc0Zyb21KU09OKGpzb24sIHR5cGVzLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgdHlwZXM6IHR5cGVzSlNPTiB9ID0ganNvbjtcblxuICBjb25zdCB7IFR5cGUgfSA9IGVsZW1lbnRzO1xuXG4gIHR5cGVzSlNPTi5mb3JFYWNoKCh0eXBlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB0eXBlSlNPTiwgIC8vL1xuICAgICAgICAgIHR5cGUgPSBUeXBlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgdHlwZXMucHVzaCh0eXBlKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdGVybXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBUZXJtIH0gPSBlbGVtZW50cyxcbiAgICAgICAgdGVybXNKU09OID0gdGVybXM7IC8vL1xuXG4gIHRlcm1zID0gdGVybXNKU09OLm1hcCgodGVybUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gdGVybUpTT04sICAvLy9cbiAgICAgICAgICB0ZXJtID0gVGVybS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiB0ZXJtO1xuICB9KTtcblxuICByZXR1cm4gdGVybXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBydWxlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcnVsZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBSdWxlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgcnVsZXNKU09OID0gcnVsZXM7IC8vL1xuXG4gIHJ1bGVzID0gcnVsZXNKU09OLm1hcCgocnVsZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gcnVsZUpTT04sICAvLy9cbiAgICAgICAgICBydWxlID0gUnVsZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBydWxlO1xuICB9KTtcblxuICByZXR1cm4gcnVsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmcmFtZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGZyYW1lcyB9ID0ganNvbjtcblxuICBjb25zdCB7IEZyYW1lIH0gPSBlbGVtZW50cyxcbiAgICBmcmFtZXNKU09OID0gZnJhbWVzOyAvLy9cblxuICBmcmFtZXMgPSBmcmFtZXNKU09OLm1hcCgoZnJhbWVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGZyYW1lSlNPTiwgIC8vL1xuICAgICAgICAgIGZyYW1lID0gRnJhbWUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZnJhbWU7XG4gIH0pO1xuXG4gIHJldHVybiBmcmFtZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbHNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGxhYmVscyB9ID0ganNvbjtcblxuICBjb25zdCB7IExhYmVsIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbGFiZWxzSlNPTiA9IGxhYmVsczsgIC8vL1xuXG4gIGxhYmVscyA9IGxhYmVsc0pTT04ubWFwKChsYWJlbEpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gbGFiZWxKU09OLCAvLy9cbiAgICAgICAgICBsYWJlbCA9IExhYmVsLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGxhYmVsO1xuICB9KTtcblxuICByZXR1cm4gbGFiZWxzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXhpb21zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBheGlvbXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBBeGlvbSB9ID0gZWxlbWVudHMsXG4gICAgICAgIGF4aW9tc0pTT04gPSBheGlvbXM7IC8vL1xuXG4gIGF4aW9tcyA9IGF4aW9tc0pTT04ubWFwKChheGlvbUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gYXhpb21KU09OLCAgLy8vXG4gICAgICAgICAgYXhpb20gPSBBeGlvbS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBheGlvbTtcbiAgfSk7XG5cbiAgcmV0dXJuIGF4aW9tcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZW1pc2VzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwcmVtaXNlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFByZW1pc2UgfSA9IGVsZW1lbnRzLFxuICAgICAgICBwcmVtaXNlc0pTT04gPSBwcmVtaXNlczsgIC8vL1xuXG4gIHByZW1pc2VzID0gcHJlbWlzZXNKU09OLm1hcCgocHJlbWlzZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gcHJlbWlzZUpTT04sIC8vL1xuICAgICAgICAgIHByZW1pc2UgPSBQcmVtaXNlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByZW1pc2U7XG4gIH0pO1xuXG4gIHJldHVybiBwcmVtaXNlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRoZW9yZW1zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyB0aGVvcmVtcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFRoZW9yZW0gfSA9IGVsZW1lbnRzLFxuICAgICAgICB0aGVvcmVtc0pTT04gPSB0aGVvcmVtczsgLy8vXG5cbiAgdGhlb3JlbXMgPSB0aGVvcmVtc0pTT04ubWFwKCh0aGVvcmVtSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB0aGVvcmVtSlNPTiwgIC8vL1xuICAgICAgICAgIHRoZW9yZW0gPSBUaGVvcmVtLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHRoZW9yZW07XG4gIH0pO1xuXG4gIHJldHVybiB0aGVvcmVtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdmFyaWFibGVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVmFyaWFibGUgfSA9IGVsZW1lbnRzLFxuICAgICAgICB2YXJpYWJsZXNKU09OID0gdmFyaWFibGVzOyAvLy9cblxuICB2YXJpYWJsZXMgPSB2YXJpYWJsZXNKU09OLm1hcCgodmFyaWFibGVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHZhcmlhYmxlSlNPTiwgIC8vL1xuICAgICAgICAgIHZhcmlhYmxlID0gVmFyaWFibGUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdmFyaWFibGU7XG4gIH0pO1xuXG4gIHJldHVybiB2YXJpYWJsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9wZXJ0aWVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwcm9wZXJ0aWVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUHJvcGVydHkgfSA9IGVsZW1lbnRzLFxuICAgICAgICBwcm9wZXJ0aWVzSlNPTiA9IHByb3BlcnRpZXM7IC8vL1xuXG4gIHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzSlNPTi5tYXAoKHByb3BlcnR5SlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBwcm9wZXJ0eUpTT04sICAvLy9cbiAgICAgICAgICBwcm9wZXJ0eSA9IFByb3BlcnR5LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByb3BlcnR5O1xuICB9KTtcblxuICByZXR1cm4gcHJvcGVydGllcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWFsaXRpZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGVxdWFsaXRpZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBFcXVhbGl0eSB9ID0gZWxlbWVudHMsXG4gICAgZXF1YWxpdGllc0pTT04gPSBlcXVhbGl0aWVzOyAvLy9cblxuICBlcXVhbGl0aWVzID0gZXF1YWxpdGllc0pTT04ubWFwKChlcXVhbGl0eUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gZXF1YWxpdHlKU09OLCAgLy8vXG4gICAgICBlcXVhbGl0eSA9IEVxdWFsaXR5LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5O1xuICB9KTtcblxuICByZXR1cm4gZXF1YWxpdGllcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZWZpeE5hbWVGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgcHJlZml4TmFtZSB9ID0ganNvbjtcblxuICByZXR1cm4gcHJlZml4TmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cGVyVHlwZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgc3VwZXJUeXBlczogc3VwZXJUeXBlc0pTT04gfSA9IGpzb247XG5cbiAgY29uc3Qgc3VwZXJUeXBlcyA9IHN1cGVyVHlwZXNKU09OLm1hcCgoc3VwZXJUeXBlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBzdXBlclR5cGVKU09OLCAgLy8vXG4gICAgICB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgIG5hbWUgPSBzdHJpbmcsICAvLy9cbiAgICAgIHR5cGUgPSBmaW5kVHlwZUJ5TmFtZShuYW1lLCBjb250ZXh0KSxcbiAgICAgIHN1cGVyVHlwZSA9IHR5cGU7IC8vL1xuXG4gICAgcmV0dXJuIHN1cGVyVHlwZTtcbiAgfSk7XG5cbiAgcmV0dXJuIHN1cGVyVHlwZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoeXBvdGhlc2VzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBoeXBvdGhlc2VzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgSHlwb3RoZXNpcyB9ID0gZWxlbWVudHMsXG4gICAgICAgIGh5cG90aGVzZXNKU09OID0gaHlwb3RoZXNlczsgIC8vL1xuXG4gIGh5cG90aGVzZXMgPSBoeXBvdGhlc2VzSlNPTi5tYXAoKGh5cG90aGVzaXNKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGh5cG90aGVzaXNKU09OLCAvLy9cbiAgICAgICAgICBoeXBvdGhlc2lzID0gSHlwb3RoZXNpcy5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBoeXBvdGhlc2lzO1xuICB9KTtcblxuICByZXR1cm4gaHlwb3RoZXNlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcmFtZXRlcnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHBhcmFtZXRlcnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBQYXJhbWV0ZXIgfSA9IGVsZW1lbnRzLFxuICAgICAgICBwYXJhbWV0ZXJzSlNPTiA9IHBhcmFtZXRlcnM7IC8vL1xuXG4gIHBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzSlNPTi5tYXAoKHBhcmFtZXRlckpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gcGFyYW1ldGVySlNPTiwgIC8vL1xuICAgICAgICAgIHBhcmFtZXRlciA9IFBhcmFtZXRlci5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBwYXJhbWV0ZXI7XG4gIH0pO1xuXG4gIHJldHVybiBwYXJhbWV0ZXJzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24ganVkZ2VtZW50c0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsganVkZ2VtZW50cyB9ID0ganNvbjtcblxuICBjb25zdCB7IEp1ZGdlbWVudCB9ID0gZWxlbWVudHMsXG4gICAgICAgIGp1ZGdlbWVudHNKU09OID0ganVkZ2VtZW50czsgLy8vXG5cbiAganVkZ2VtZW50cyA9IGp1ZGdlbWVudHNKU09OLm1hcCgoanVkZ2VtZW50SlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBqdWRnZW1lbnRKU09OLCAgLy8vXG4gICAgICAgICAganVkZ2VtZW50ID0gSnVkZ2VtZW50LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGp1ZGdlbWVudDtcbiAgfSk7XG5cbiAgcmV0dXJuIGp1ZGdlbWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBzdGF0ZW1lbnRzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgU3RhdGVtZW50IH0gPSBlbGVtZW50cyxcbiAgICAgICAgc3RhdGVtZW50c0pTT04gPSBzdGF0ZW1lbnRzOyAvLy9cblxuICBzdGF0ZW1lbnRzID0gc3RhdGVtZW50c0pTT04ubWFwKChzdGF0ZW1lbnRKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHN0YXRlbWVudEpTT04sICAvLy9cbiAgICAgICAgICBzdGF0ZW1lbnQgPSBTdGF0ZW1lbnQuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50O1xuICB9KTtcblxuICByZXR1cm4gc3RhdGVtZW50cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydGlvbnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGFzc2VydGlvbnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBUeXBlQXNzZXJ0aW9uLCBEZWZpbmVkQXNzZXJ0aW9uLCBQcm9wZXJ0eUFzc2VydGlvbiwgU3VicHJvb2ZBc3NlcnRpb24sIFNhdGlzZmllc0Fzc2VydGlvbiwgQ29udGFpbmVkQXNzZXJ0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgYXNzZXJ0aW9uc0pTT04gPSBhc3NlcnRpb25zOyAvLy9cblxuICBhc3NlcnRpb25zID0gYXNzZXJ0aW9uc0pTT04ubWFwKChhc3NlcnRpb25KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGFzc2VydGlvbkpTT04sICAvLy9cbiAgICAgICAgICBhc3NlcnRpb24gPSBUeXBlQXNzZXJ0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgIERlZmluZWRBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgUHJvcGVydHlBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgU3VicHJvb2ZBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgU2F0aXNmaWVzQXNzZXJ0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgIENvbnRhaW5lZEFzc2VydGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBhc3NlcnRpb247XG4gIH0pO1xuXG4gIHJldHVybiBhc3NlcnRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVmZXJlbmNlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcmVmZXJlbmNlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFJlZmVyZW5jZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHJlZmVyZW5jZXNKU09OID0gcmVmZXJlbmNlczsgLy8vXG5cbiAgcmVmZXJlbmNlcyA9IHJlZmVyZW5jZXNKU09OLm1hcCgocmVmZXJlbmNlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSByZWZlcmVuY2VKU09OLCAgLy8vXG4gICAgICAgICAgcmVmZXJlbmNlID0gUmVmZXJlbmNlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHJlZmVyZW5jZTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlZmVyZW5jZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25qZWN0dXJlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgY29uamVjdHVyZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBDb25qZWN0dXJlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgY29uamVjdHVyZXNKU09OID0gY29uamVjdHVyZXM7IC8vL1xuXG4gIGNvbmplY3R1cmVzID0gY29uamVjdHVyZXNKU09OLm1hcCgoY29uamVjdHVyZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gY29uamVjdHVyZUpTT04sICAvLy9cbiAgICAgICAgICBjb25qZWN0dXJlID0gQ29uamVjdHVyZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb25qZWN0dXJlO1xuICB9KTtcblxuICByZXR1cm4gY29uamVjdHVyZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5hdG9yc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgY29tYmluYXRvcnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBDb21iaW5hdG9yIH0gPSBlbGVtZW50cyxcbiAgICAgICAgY29tYmluYXRvcnNKU09OID0gY29tYmluYXRvcnM7IC8vL1xuXG4gIGNvbWJpbmF0b3JzID0gY29tYmluYXRvcnNKU09OLm1hcCgoY29tYmluYXRvckpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gY29tYmluYXRvckpTT04sICAvLy9cbiAgICAgICAgICBjb21iaW5hdG9yID0gQ29tYmluYXRvci5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb21iaW5hdG9yO1xuICB9KTtcblxuICByZXR1cm4gY29tYmluYXRvcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3N1bXB0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgYXNzdW1wdGlvbnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBBc3N1bXB0aW9uIH0gPSBlbGVtZW50cyxcbiAgICBhc3N1bXB0aW9uc0pTT04gPSBhc3N1bXB0aW9uczsgLy8vXG5cbiAgYXNzdW1wdGlvbnMgPSBhc3N1bXB0aW9uc0pTT04ubWFwKChhc3N1bXB0aW9uSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBhc3N1bXB0aW9uSlNPTiwgIC8vL1xuICAgICAgICAgIGFzc3VtcHRpb24gPSBBc3N1bXB0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGFzc3VtcHRpb247XG4gIH0pO1xuXG4gIHJldHVybiBhc3N1bXB0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVQcmVmaXhlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdHlwZVByZWZpeGVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVHlwZVByZWZpeCB9ID0gZWxlbWVudHMsXG4gICAgICAgIHR5cGVQcmVmaXhlc0pTT04gPSB0eXBlUHJlZml4ZXM7IC8vL1xuXG4gIHR5cGVQcmVmaXhlcyA9IHR5cGVQcmVmaXhlc0pTT04ubWFwKCh0eXBlUHJlZml4SlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB0eXBlUHJlZml4SlNPTiwgIC8vL1xuICAgICAgICAgIHR5cGVQcmVmaXggPSBUeXBlUHJlZml4LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVmaXg7XG4gIH0pO1xuXG4gIHJldHVybiB0eXBlUHJlZml4ZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RvcnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGNvbnN0cnVjdG9ycyB9ID0ganNvbjtcblxuICBjb25zdCB7IENvbnN0cnVjdG9yIH0gPSBlbGVtZW50cyxcbiAgICAgICAgY29uc3RydWN0b3JzSlNPTiA9IGNvbnN0cnVjdG9yczsgLy8vXG5cbiAgY29uc3RydWN0b3JzID0gY29uc3RydWN0b3JzSlNPTi5tYXAoKGNvbnN0cnVjdG9ySlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBjb25zdHJ1Y3RvckpTT04sICAvLy9cbiAgICAgICAgICBjb25zdHJ1Y3RvciA9IENvbnN0cnVjdG9yLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGNvbnN0cnVjdG9yO1xuICB9KTtcblxuICByZXR1cm4gY29uc3RydWN0b3JzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXRoZW9yZW1zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBtZXRhdGhlb3JlbXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBNZXRhdGhlb3JlbSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG1ldGF0aGVvcmVtc0pTT04gPSBtZXRhdGhlb3JlbXM7IC8vL1xuXG4gIG1ldGF0aGVvcmVtcyA9IG1ldGF0aGVvcmVtc0pTT04ubWFwKChtZXRhdGhlb3JlbUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gbWV0YXRoZW9yZW1KU09OLCAgLy8vXG4gICAgICAgICAgbWV0YXRoZW9yZW0gPSBNZXRhdGhlb3JlbS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBtZXRhdGhlb3JlbTtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF0aGVvcmVtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cHBvc2l0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc3VwcG9zaXRpb25zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgU3VwcG9zaXRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBzdXBwb3NpdGlvbnNKU09OID0gc3VwcG9zaXRpb25zOyAgLy8vXG5cbiAgc3VwcG9zaXRpb25zID0gc3VwcG9zaXRpb25zSlNPTi5tYXAoKHN1cHBvc2l0aW9uSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBzdXBwb3NpdGlvbkpTT04sIC8vL1xuICAgICAgICAgIHN1cHBvc2l0aW9uID0gU3VwcG9zaXRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gc3VwcG9zaXRpb247XG4gIH0pO1xuXG4gIHJldHVybiBzdXBwb3NpdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJzdGl0dXRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBzdWJzdGl0dXRpb25zIH0gPSBqc29uOyAgLy8vXG5cbiAgY29uc3Qgc3Vic3RpdHV0aW9uc0pTT04gPSBzdWJzdGl0dXRpb25zOyAvLy9cblxuICBzdWJzdGl0dXRpb25zID0gc3Vic3RpdHV0aW9uc0pTT04ubWFwKChzdWJzdGl0dXRpb25KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHN1YnN0aXR1dGlvbkpTT04sICAvLy9cbiAgICAgICAgICBzdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb25Gcm9tU3Vic3RpdHV0aW9uSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb247XG4gIH0pO1xuXG4gIHJldHVybiBzdWJzdGl0dXRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXZhcmlhYmxlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbWV0YXZhcmlhYmxlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IE1ldGF2YXJpYWJsZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG1ldGF2YXJpYWJsZXNKU09OID0gbWV0YXZhcmlhYmxlczsgLy8vXG5cbiAgbWV0YXZhcmlhYmxlcyA9IG1ldGF2YXJpYWJsZXNKU09OLm1hcCgobWV0YXZhcmlhYmxlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBtZXRhdmFyaWFibGVKU09OLCAgLy8vXG4gICAgICAgICAgbWV0YXZhcmlhYmxlID0gTWV0YXZhcmlhYmxlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtbmVtaWNDb250ZXh0c0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgY29uc3QgcmVsZWFzZUNvbnRleHQgPSBjb250ZXh0OyAvLy9cblxuICBjb25zdCB7IGNvbnRleHRzIH0gPSBqc29uO1xuXG4gIGNvbnN0IG1uZW1pY0NvbnRleHRzID0gY29udGV4dHMubWFwKChjb250ZXh0KSA9PiB7XG4gICAganNvbiA9IGNvbnRleHQ7IC8vL1xuXG4gICAgY29udGV4dCA9IHJlbGVhc2VDb250ZXh0OyAvLy9cblxuICAgIGNvbnN0IG1uZW1pY0NvbnRleHQgPSBNbmVtaWNDb250ZXh0LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIG1uZW1pY0NvbnRleHQ7ICAvLy9cbiAgfSk7XG5cbiAgcmV0dXJuIG1uZW1pY0NvbnRleHRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjbGFyZWRWYXJpYWJsZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGRlY2xhcmVkVmFyaWFibGVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVmFyaWFibGUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBkZWNsYXJlZFZhcmlhYmxlc0pTT04gPSBkZWNsYXJlZFZhcmlhYmxlczsgLy8vXG5cbiAgZGVjbGFyZWRWYXJpYWJsZXMgPSBkZWNsYXJlZFZhcmlhYmxlc0pTT04ubWFwKChkZWNsYXJlZFZhcmlhYmxlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBkZWNsYXJlZFZhcmlhYmxlSlNPTiwgIC8vL1xuICAgICAgICAgIHZhcmlhYmxlID0gVmFyaWFibGUuZnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZSA9IHZhcmlhYmxlOyAgLy8vXG5cbiAgICByZXR1cm4gZGVjbGFyZWRWYXJpYWJsZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvcGVydHlSZWxhdGlvbnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHByb3BlcnR5UmVsYXRpb25zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUHJvcGVydHlSZWxhdGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgIHByb3BlcnR5UmVsYXRpb25zSlNPTiA9IHByb3BlcnR5UmVsYXRpb25zOyAvLy9cblxuICBwcm9wZXJ0eVJlbGF0aW9ucyA9IHByb3BlcnR5UmVsYXRpb25zSlNPTi5tYXAoKHByb3BlcnR5UmVsYXRpb25KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHByb3BlcnR5UmVsYXRpb25KU09OLCAgLy8vXG4gICAgICAgICAgcHJvcGVydHlSZWxhdGlvbiA9IFByb3BlcnR5UmVsYXRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gcHJvcGVydHlSZWxhdGlvbjtcbiAgfSk7XG5cbiAgcmV0dXJuIHByb3BlcnR5UmVsYXRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YUxldmVsQXNzdW1wdGlvbnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IG1ldGFMZXZlbEFzc3VtcHRpb25zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTWV0YUxldmVsQXNzdW1wdGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgIG1ldGFMZXZlbEFzc3VtcHRpb25zSlNPTiA9IG1ldGFMZXZlbEFzc3VtcHRpb25zOyAvLy9cblxuICBtZXRhTGV2ZWxBc3N1bXB0aW9ucyA9IG1ldGFMZXZlbEFzc3VtcHRpb25zSlNPTi5tYXAoKG1ldGFMZXZlbEFzc3VtcHRpb25KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IG1ldGFMZXZlbEFzc3VtcHRpb25KU09OLCAgLy8vXG4gICAgICAgICAgbWV0YUxldmVsQXNzdW1wdGlvbiA9IE1ldGFMZXZlbEFzc3VtcHRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gbWV0YUxldmVsQXNzdW1wdGlvbjtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGFMZXZlbEFzc3VtcHRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjbGFyZWRNZXRhdmFyaWFibGVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBkZWNsYXJlZE1ldGF2YXJpYWJsZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBNZXRhdmFyaWFibGUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBkZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OID0gZGVjbGFyZWRNZXRhdmFyaWFibGVzOyAvLy9cblxuICBkZWNsYXJlZE1ldGF2YXJpYWJsZXMgPSBkZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OLm1hcCgoZGVjbGFyZWRNZXRhdmFyaWFibGVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGRlY2xhcmVkTWV0YXZhcmlhYmxlSlNPTiwgIC8vL1xuICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IE1ldGF2YXJpYWJsZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICBkZWNsYXJlZE1ldGF2YXJpYWJsZSA9IG1ldGF2YXJpYWJsZTsgIC8vL1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkTWV0YXZhcmlhYmxlO1xuICB9KTtcblxuICByZXR1cm4gZGVjbGFyZWRNZXRhdmFyaWFibGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmFtZVRvTmFtZUpTT04obmFtZSkge1xuICBjb25zdCBuYW1lSlNPTiA9IG5hbWU7ICAvLy9cblxuICByZXR1cm4gbmFtZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtVG9UZXJtSlNPTih0ZXJtKSB7XG4gIGNvbnN0IHRlcm1KU09OID0gKHRlcm0gIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgIHRlcm0udG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiB0ZXJtSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVUb1R5cGVKU09OKHR5cGUpIHtcbiAgbGV0IHR5cGVKU09OID0gbnVsbDtcblxuICBpZiAodHlwZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGFicmlkZ2VkID0gdHJ1ZTtcblxuICAgIHR5cGVKU09OID0gdHlwZS50b0pTT04oYWJyaWRnZWQpO1xuICB9XG5cbiAgcmV0dXJuIHR5cGVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZnJhbWVUb0ZyYW1lSlNPTihmcmFtZSkge1xuICBjb25zdCBmcmFtZUpTT04gPSAoZnJhbWUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICBmcmFtZS50b0pTT04oKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiBmcmFtZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbFRvTGFiZWxKU09OKGxhYmVsKSB7XG4gIGNvbnN0IGxhYmVsSlNPTiA9IGxhYmVsLnRvSlNPTigpO1xuXG4gIHJldHVybiBsYWJlbEpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuZWdhdGVkVG9OZWdhdGVkSlNPTihuZWdhdGVkKSB7XG4gIGNvbnN0IG5lZ2F0ZWRKU09OID0gbmVnYXRlZDsgIC8vL1xuXG4gIHJldHVybiBuZWdhdGVkSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFyaWFibGVUb1ZhcmlhYmxlSlNPTihhcmlhYmxlKSB7XG4gIGNvbnN0IGFyaWFibGVKU09OID0gYXJpYWJsZS50b0pTT04oKTtcblxuICByZXR1cm4gYXJpYWJsZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhVHlwZVRvTWV0YVR5cGVKU09OKG1ldGFUeXBlKSB7XG4gIGNvbnN0IG1ldGFUeXBlSlNPTiA9IChtZXRhVHlwZSAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFUeXBlLnRvSlNPTigpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG5cbiAgcmV0dXJuIG1ldGFUeXBlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZmVyZW5jZVRvUmVmZXJlbmNlSlNPTihyZWZlcmVuY2UpIHtcbiAgY29uc3QgcmVmZXJlbmNlSlNPTiA9IHJlZmVyZW5jZS50b0pTT04oKTtcblxuICByZXR1cm4gcmVmZXJlbmNlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlbWVudFRvU3RhdGVtZW50SlNPTihzdGF0ZW1lbnQpIHtcbiAgY29uc3Qgc3RhdGVtZW50SlNPTiA9IChzdGF0ZW1lbnQgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50LnRvSlNPTigpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiBzdGF0ZW1lbnRKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVkdWN0aW9uVG9EZWR1Y3Rpb25KU09OKGRlZHVjdGlvbikge1xuICBjb25zdCBkZWR1Y3Rpb25KU09OID0gZGVkdWN0aW9uLnRvSlNPTigpO1xuXG4gIHJldHVybiBkZWR1Y3Rpb25KU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbmF0dXJlVG9TaWduYXR1cmVKU09OKHNpZ25hdHVyZSkge1xuICBjb25zdCBzaWduYXR1cmVKU09OID0gKHNpZ25hdHVyZSAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYXR1cmUudG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG5cbiAgcmV0dXJuIHNpZ25hdHVyZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpZGVudGlmaWVyVG9JZGVudGlmaWVySlNPTihpZGVudGlmaWVyKSB7XG4gIGNvbnN0IGlkZW50aWZpZXJKU09OID0gaWRlbnRpZmllcjsgIC8vL1xuXG4gIHJldHVybiBpZGVudGlmaWVySlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmNsdXNpb25Ub0NvbmNsdXNpb25KU09OKGNvbmNsdXNpb24pIHtcbiAgY29uc3QgY29uY2x1c2lvbkpTT04gPSBjb25jbHVzaW9uLnRvSlNPTigpO1xuXG4gIHJldHVybiBjb25jbHVzaW9uSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3Zpc2lvbmFsVG9Qcm92aXNpb25hbEpTT04ocHJvdmlzaW9uYWwpIHtcbiAgY29uc3QgcHJvdmlzaW9uYWxKU09OID0gcHJvdmlzaW9uYWw7ICAvLy9cblxuICByZXR1cm4gcHJvdmlzaW9uYWxKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXZhcmlhYmxlVG9NZXRhdmFyaWFibGVKU09OKG1ldGF2YXJpYWJsZSkge1xuICBjb25zdCBtZXRhdmFyaWFibGVKU09OID0gbWV0YXZhcmlhYmxlLnRvSlNPTigpO1xuXG4gIHJldHVybiBtZXRhdmFyaWFibGVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2VkdXJlQ2FsbFRvUHJvY2VkdXJlQ2FsbEpTT04ocHJvY2VkdXJlQ2FsbCkge1xuICBjb25zdCBwcm9jZWR1cmVDYWxsSlNPTiA9IChwcm9jZWR1cmVDYWxsICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZWR1cmVDYWxsLnRvSlNPTigpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcblxuICByZXR1cm4gcHJvY2VkdXJlQ2FsbEpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtbmVtaWNDb250ZXh0VG9NbmVtaWNDb250ZXh0SlNPTihtbmVtaWNDb250ZXh0KSB7XG4gIGNvbnN0IG1uZW1pY0NvbnRleHRKU09OID0gbW5lbWljQ29udGV4dC50b0pTT04oKTtcblxuICByZXR1cm4gbW5lbWljQ29udGV4dEpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZWR1cmVSZWZlcmVuY2VUb1Byb2NlZHVyZVJlZmVyZW5jZUpTT04ocHJvY2VkdXJlUmVmZXJlbmNlKSB7XG4gIGNvbnN0IHByb2NlZHVyZVJlZmVyZW5jZUpTT04gPSBwcm9jZWR1cmVSZWZlcmVuY2UudG9KU09OKCk7XG5cbiAgcmV0dXJuIHByb2NlZHVyZVJlZmVyZW5jZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNsYXJlZE1ldGF2YXJpYWJsZVRvREVjbGFyZWRNZXRhdmFyaWFibGVKU09OKGRlY2xhcmVkTWV0YXZhcmlhYmxlKSB7XG4gIGNvbnN0IGRlY2xhcmVkTWV0YXZhcmlhYmxlSlNPTiA9IGRlY2xhcmVkTWV0YXZhcmlhYmxlLnRvSlNPTigpO1xuXG4gIHJldHVybiBkZWNsYXJlZE1ldGF2YXJpYWJsZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJzdGl0dXRpb25Gcm9tU3Vic3RpdHV0aW9uSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgVGVybVN1YnN0aXR1dGlvbiwgRnJhbWVTdWJzdGl0dXRpb24sIFN0YXRlbWVudFN1YnN0aXR1dGlvbiwgUmVmZXJlbmNlU3Vic3RpdHV0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgc3Vic3RpdHV0aW9uID0gVGVybVN1YnN0aXR1dGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICBGcmFtZVN1YnN0aXR1dGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZW1lbnRTdWJzdGl0dXRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgUmVmZXJlbmNlU3Vic3RpdHV0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiBzdWJzdGl0dXRpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtc1RvVGVybXNKU09OKHRlcm1zKSB7XG4gIGNvbnN0IHRlcm1zSlNPTiA9IHRlcm1zLm1hcCgodGVybSkgPT4ge1xuICAgIGNvbnN0IHRlcm1KU09OID0gdGVybS50b0pTT04oKTtcblxuICAgIHJldHVybiB0ZXJtSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHRlcm1zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVzVG9UeXBlc0pTT04odHlwZXMpIHtcbiAgY29uc3QgdHlwZXNKU09OID0gdHlwZXMubWFwKCh0eXBlKSA9PiB7XG4gICAgY29uc3QgdHlwZUpTT04gPSB0eXBlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHR5cGVKU09OO1xuICB9KTtcblxuICByZXR1cm4gdHlwZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVsZXNUb1J1bGVzSlNPTihydWxlcykge1xuICBjb25zdCBydWxlc0pTT04gPSBydWxlcy5tYXAoKHJ1bGUpID0+IHtcbiAgICBjb25zdCBydWxlSlNPTiA9IHJ1bGUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gcnVsZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBydWxlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbHNUb0xhYmVsc0pTT04obGFiZWxzKSB7XG4gIGNvbnN0IGxhYmVsc0pTT04gPSBsYWJlbHMubWFwKChsYWJlbCkgPT4ge1xuICAgIGNvbnN0IGxhYmVsSlNPTiA9IGxhYmVsLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGxhYmVsSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGxhYmVsc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmcmFtZXNUb0ZyYW1lc0pTT04oZnJhbWVzKSB7XG4gIGNvbnN0IGZyYW1lc0pTT04gPSBmcmFtZXMubWFwKChmcmFtZSkgPT4ge1xuICAgIGNvbnN0IGZyYW1lSlNPTiA9IGZyYW1lLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGZyYW1lSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGZyYW1lc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBheGlvbXNUb0F4aW9tc0pTT04oYXhpb21zKSB7XG4gIGNvbnN0IGF4aW9tc0pTT04gPSBheGlvbXMubWFwKChheGlvbSkgPT4ge1xuICAgIGNvbnN0IGF4aW9tSlNPTiA9IGF4aW9tLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGF4aW9tSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGF4aW9tc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVtaXNlc1RvUHJlbWlzZXNKU09OKHByZW1pc2VzKSB7XG4gIGNvbnN0IHByZW1pc2VzSlNPTiA9IHByZW1pc2VzLm1hcCgocHJlbWlzZSkgPT4ge1xuICAgIGNvbnN0IHByZW1pc2VKU09OID0gcHJlbWlzZS50b0pTT04oKTtcblxuICAgIHJldHVybiBwcmVtaXNlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHByZW1pc2VzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRoZW9yZW1zVG9UaGVvcmVtc0pTT04odGhlb3JlbXMpIHtcbiAgY29uc3QgdGhlb3JlbXNKU09OID0gdGhlb3JlbXMubWFwKCh0aGVvcmVtKSA9PiB7XG4gICAgY29uc3QgdGhlb3JlbUpTT04gPSB0aGVvcmVtLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHRoZW9yZW1KU09OO1xuICB9KTtcblxuICByZXR1cm4gdGhlb3JlbXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVzVG9WYXJpYWJsZXNKU09OKHZhcmlhYmxlcykge1xuICBjb25zdCB2YXJpYWJsZXNKU09OID0gdmFyaWFibGVzLm1hcCgodmFyaWFibGUpID0+IHtcbiAgICBjb25zdCB2YXJpYWJsZUpTT04gPSB2YXJpYWJsZS50b0pTT04oKTtcblxuICAgIHJldHVybiB2YXJpYWJsZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiB2YXJpYWJsZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04oaHlwb3RoZXNlcykge1xuICBjb25zdCBoeXBvdGhlc2VzSlNPTiA9IGh5cG90aGVzZXMubWFwKChoeXBvdGhlc2lzKSA9PiB7XG4gICAgY29uc3QgaHlwb3RoZXNpc0pTT04gPSBoeXBvdGhlc2lzLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGh5cG90aGVzaXNKU09OO1xuICB9KTtcblxuICByZXR1cm4gaHlwb3RoZXNlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVmaXhuYW1lVG9QcmV2aXhOYW1lSlNPTihwcmVmaXhuYW1lKSB7XG4gIGNvbnN0IHByZWZpeE5hbWVKU09OID0gcHJlZml4bmFtZTsgIC8vL1xuXG4gIHJldHVybiBwcmVmaXhOYW1lSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cGVyVHlwZXNUb1N1cGVyVHlwZXNKU09OKHN1cGVyVHlwZXMpIHtcbiAgY29uc3Qgc3VwZXJUeXBlc0pTT04gPSBzdXBlclR5cGVzLm1hcCgoc3VwZXJUeXBlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYWJyaWRnZWQgPSB0cnVlLFxuICAgICAgICAgICAgICAgIHN1cGVyVHlwZUpTT04gPSBzdXBlclR5cGUudG9KU09OKGFicmlkZ2VkKTtcblxuICAgICAgICAgIHJldHVybiBzdXBlclR5cGVKU09OO1xuICAgICAgICB9KTtcblxuICByZXR1cm4gc3VwZXJUeXBlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJhbWV0ZXJzVG9QYXJhbWV0ZXJzSlNPTihwYXJhbWV0ZXJzKSB7XG4gIGNvbnN0IHBhcmFtZXRlcnNKU09OID0gcGFyYW1ldGVycy5tYXAoKHBhcmFtZXRlcikgPT4ge1xuICAgIGNvbnN0IHBhcmFtZXRlckpTT04gPSBwYXJhbWV0ZXIudG9KU09OKCk7XG5cbiAgICByZXR1cm4gcGFyYW1ldGVySlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHBhcmFtZXRlcnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvcGVydGllc1RvUHJvcGVydGllc0pTT04ocHJvcGVydGllcykge1xuICBjb25zdCBwcm9wZXJ0aWVzSlNPTiA9IHByb3BlcnRpZXMubWFwKChwcm9wZXJ0eSkgPT4ge1xuICAgIGNvbnN0IHByb3BlcnR5SlNPTiA9IHByb3BlcnR5LnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHByb3BlcnR5SlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHByb3BlcnRpZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24ganVkZ2VtZW50c1RvSnVkZ2VtZW50c0pTT04oanVkZ2VtZW50cykge1xuICBjb25zdCBqdWRnZW1lbnRzSlNPTiA9IGp1ZGdlbWVudHMubWFwKChqdWRnZW1lbnQpID0+IHtcbiAgICBjb25zdCBqdWRnZW1lbnRKU09OID0ganVkZ2VtZW50LnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGp1ZGdlbWVudEpTT047XG4gIH0pO1xuXG4gIHJldHVybiBqdWRnZW1lbnRzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWFsaXRpZXNUb0VxdWFsaXRpZXNKU09OKGVxdWFsaXRpZXMpIHtcbiAgY29uc3QgZXF1YWxpdGllc0pTT04gPSBlcXVhbGl0aWVzLm1hcCgoZXF1YWxpdHkpID0+IHtcbiAgICBjb25zdCBlcXVhbGl0eUpTT04gPSBlcXVhbGl0eS50b0pTT04oKTtcblxuICAgIHJldHVybiBlcXVhbGl0eUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBlcXVhbGl0aWVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlbWVudHNUb1N0YXRlbWVudHNKU09OKHN0YXRlbWVudHMpIHtcbiAgY29uc3Qgc3RhdGVtZW50c0pTT04gPSBzdGF0ZW1lbnRzLm1hcCgoc3RhdGVtZW50KSA9PiB7XG4gICAgY29uc3Qgc3RhdGVtZW50SlNPTiA9IHN0YXRlbWVudC50b0pTT04oKTtcblxuICAgIHJldHVybiBzdGF0ZW1lbnRKU09OO1xuICB9KTtcblxuICByZXR1cm4gc3RhdGVtZW50c0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRpb25zVG9Bc3NlcnRpb25zSlNPTihhc3NlcnRpb25zKSB7XG4gIGNvbnN0IGFzc2VydGlvbnNKU09OID0gYXNzZXJ0aW9ucy5tYXAoKGFzc2VydGlvbikgPT4ge1xuICAgIGNvbnN0IGFzc2VydGlvbkpTT04gPSBhc3NlcnRpb24udG9KU09OKCk7XG5cbiAgICByZXR1cm4gYXNzZXJ0aW9uSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGFzc2VydGlvbnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVmZXJlbmNlc1RvUmVmZXJlbmNlc0pTT04ocmVmZXJlbmNlcykge1xuICBjb25zdCByZWZlcmVuY2VzSlNPTiA9IHJlZmVyZW5jZXMubWFwKChyZWZlcmVuY2UpID0+IHtcbiAgICBjb25zdCByZWZlcmVuY2VKU09OID0gcmVmZXJlbmNlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHJlZmVyZW5jZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiByZWZlcmVuY2VzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmplY3R1cmVzVG9Db25qZWN0dXJlc0pTT04oY29uamVjdHVyZXMpIHtcbiAgY29uc3QgY29uamVjdHVyZXNKU09OID0gY29uamVjdHVyZXMubWFwKChjb25qZWN0dXJlKSA9PiB7XG4gICAgY29uc3QgY29uamVjdHVyZUpTT04gPSBjb25qZWN0dXJlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGNvbmplY3R1cmVKU09OO1xuICB9KTtcblxuICByZXR1cm4gY29uamVjdHVyZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tYmluYXRvcnNUb0NvbWJpbmF0b3JzSlNPTihjb21iaW5hdG9ycykge1xuICBjb25zdCBjb21iaW5hdG9yc0pTT04gPSBjb21iaW5hdG9ycy5tYXAoKGNvbWJpbmF0b3IpID0+IHtcbiAgICBjb25zdCBjb21iaW5hdG9ySlNPTiA9IGNvbWJpbmF0b3IudG9KU09OKCk7XG5cbiAgICByZXR1cm4gY29tYmluYXRvckpTT047XG4gIH0pO1xuXG4gIHJldHVybiBjb21iaW5hdG9yc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3N1bXB0aW9uc1RvQXNzdW1wdGlvbnNKU09OKGFzc3VtcHRpb25zKSB7XG4gIGNvbnN0IGFzc3VtcHRpb25zSlNPTiA9IGFzc3VtcHRpb25zLm1hcCgoYXNzdW1wdGlvbikgPT4ge1xuICAgIGNvbnN0IGFzc3VtcHRpb25KU09OID0gYXNzdW1wdGlvbi50b0pTT04oKTtcblxuICAgIHJldHVybiBhc3N1bXB0aW9uSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGFzc3VtcHRpb25zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTihzdXBwb3NpdGlvbnMpIHtcbiAgY29uc3Qgc3VwcG9zaXRpb25zSlNPTiA9IHN1cHBvc2l0aW9ucy5tYXAoKHN1cHBvc2l0aW9uKSA9PiB7XG4gICAgY29uc3Qgc3VwcG9zaXRpb25KU09OID0gc3VwcG9zaXRpb24udG9KU09OKCk7XG5cbiAgICByZXR1cm4gc3VwcG9zaXRpb25KU09OO1xuICB9KTtcblxuICByZXR1cm4gc3VwcG9zaXRpb25zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnN0cnVjdG9yc1RvQ29uc3RydWN0b3JzSlNPTihjb25zdHJ1Y3RvcnMpIHtcbiAgY29uc3QgY29uc3RydWN0b3JzSlNPTiA9IGNvbnN0cnVjdG9ycy5tYXAoKGNvbnN0cnVjdG9yKSA9PiB7XG4gICAgY29uc3QgY29uc3RydWN0b3JKU09OID0gY29uc3RydWN0b3IudG9KU09OKCk7XG5cbiAgICByZXR1cm4gY29uc3RydWN0b3JKU09OO1xuICB9KTtcblxuICByZXR1cm4gY29uc3RydWN0b3JzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF0aGVvcmVtc1RvTWV0YXRoZW9yZW1zSlNPTihtZXRhdGhlb3JlbXMpIHtcbiAgY29uc3QgbWV0YXRoZW9yZW1zSlNPTiA9IG1ldGF0aGVvcmVtcy5tYXAoKG1ldGF0aGVvcmVtKSA9PiB7XG4gICAgY29uc3QgbWV0YXRoZW9yZW1KU09OID0gbWV0YXRoZW9yZW0udG9KU09OKCk7XG5cbiAgICByZXR1cm4gbWV0YXRoZW9yZW1KU09OO1xuICB9KTtcblxuICByZXR1cm4gbWV0YXRoZW9yZW1zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVQcmVmaXhlc1RvVHlwZVByZWZpeGVzSlNPTih0eXBlUHJlZml4ZXMpIHtcbiAgY29uc3QgdHlwZVByZWZpeGVzSlNPTiA9IHR5cGVQcmVmaXhlcy5tYXAoKHR5cGVQcmVmaXgpID0+IHtcbiAgICBjb25zdCB0eXBlUHJlZml4SlNPTiA9IHR5cGVQcmVmaXgudG9KU09OKCk7XG5cbiAgICByZXR1cm4gdHlwZVByZWZpeEpTT047XG4gIH0pO1xuXG4gIHJldHVybiB0eXBlUHJlZml4ZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3Vic3RpdHV0aW9uc1RvU3Vic3RpdHV0aW9uc0pTT04oc3Vic3RpdHV0aW9ucykge1xuICBjb25zdCBzdWJzdGl0dXRpb25zSlNPTiA9IHN1YnN0aXR1dGlvbnMubWFwKChzdWJzdGl0dXRpb24pID0+IHtcbiAgICBjb25zdCBzdWJzdGl0dXRpb25KU09OID0gc3Vic3RpdHV0aW9uLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbkpTT047XG4gIH0pO1xuXG4gIHJldHVybiBzdWJzdGl0dXRpb25zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF2YXJpYWJsZXNUb01ldGF2YXJpYWJsZXNKU09OKG1ldGF2YXJpYWJsZXMpIHtcbiAgY29uc3QgbWV0YXZhcmlhYmxlc0pTT04gPSBtZXRhdmFyaWFibGVzLm1hcCgobWV0YXZhcmlhYmxlKSA9PiB7XG4gICAgY29uc3QgbWV0YXZhcmlhYmxlSlNPTiA9IG1ldGF2YXJpYWJsZS50b0pTT04oKTtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGVKU09OO1xuICB9KTtcblxuICByZXR1cm4gbWV0YXZhcmlhYmxlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtbmVtaWNDb250ZXh0c1RvTW5lbWljQ29udGV4dHNKU09OKG1uZW1pY0NvbnRleHRzKSB7XG4gIGNvbnN0IG1uZW1pY0NvbnRleHRzSlNPTiA9IG1uZW1pY0NvbnRleHRzLm1hcCgobW5lbWljQ29udGV4dCkgPT4ge1xuICAgIGNvbnN0IG1uZW1pY0NvbnRleHRKU09OID0gbW5lbWljQ29udGV4dC50b0pTT04oKTtcblxuICAgIHJldHVybiBtbmVtaWNDb250ZXh0SlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIG1uZW1pY0NvbnRleHRzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3BlcnR5UmVsYXRpb25zVG9Qcm9wZXJ0eVJlbGF0aW9uc0pTT04ocHJvcGVydHlSZWxhdGlvbnMpIHtcbiAgY29uc3QgcHJvcGVydHlSZWxhdGlvbnNKU09OID0gcHJvcGVydHlSZWxhdGlvbnMubWFwKChwcm9wZXJ0eVJlbGF0aW9uKSA9PiB7XG4gICAgY29uc3QgcHJvcGVydHlSZWxhdGlvbkpTT04gPSBwcm9wZXJ0eVJlbGF0aW9uLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHByb3BlcnR5UmVsYXRpb25KU09OO1xuICB9KTtcblxuICByZXR1cm4gcHJvcGVydHlSZWxhdGlvbnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjbGFyZWRWYXJpYWJsZXNUb0RlY2xhcmVkVmFyaWFibGVzSlNPTihkZWNsYXJlZFZhcmlhYmxlcykge1xuICBjb25zdCBkZWNsYXJlZFZhcmlhYmxlc0pTT04gPSBkZWNsYXJlZFZhcmlhYmxlcy5tYXAoKGRlY2xhcmVkVmFyaWFibGUpID0+IHtcbiAgICBjb25zdCBkZWNsYXJlZFZhcmlhYmxlSlNPTiA9IGRlY2xhcmVkVmFyaWFibGUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gZGVjbGFyZWRWYXJpYWJsZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBkZWNsYXJlZFZhcmlhYmxlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhTGV2ZWxBc3N1bXB0aW9uc1RvTWV0YUxldmVsQXNzdW1wdGlvbnNKU09OKG1ldGFMZXZlbEFzc3VtcHRpb25zKSB7XG4gIGNvbnN0IG1ldGFMZXZlbEFzc3VtcHRpb25zSlNPTiA9IG1ldGFMZXZlbEFzc3VtcHRpb25zLm1hcCgobWV0YUxldmVsQXNzdW1wdGlvbikgPT4ge1xuICAgIGNvbnN0IG1ldGFMZXZlbEFzc3VtcHRpb25KU09OID0gbWV0YUxldmVsQXNzdW1wdGlvbi50b0pTT04oKTtcblxuICAgIHJldHVybiBtZXRhTGV2ZWxBc3N1bXB0aW9uSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGFMZXZlbEFzc3VtcHRpb25zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY2xhcmVkTWV0YXZhcmlhYmxlc1RvRGVjbGFyZWRNZXRhdmFyaWFibGVzSlNPTihkZWNsYXJlZE1ldGF2YXJpYWJsZXMpIHtcbiAgY29uc3QgZGVjbGFyZWRNZXRhdmFyaWFibGVzSlNPTiA9IGRlY2xhcmVkTWV0YXZhcmlhYmxlcy5tYXAoKGRlY2xhcmVkTWV0YXZhcmlhYmxlKSA9PiB7XG4gICAgY29uc3QgZGVjbGFyZWRNZXRhdmFyaWFibGVKU09OID0gZGVjbGFyZWRNZXRhdmFyaWFibGUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gZGVjbGFyZWRNZXRhdmFyaWFibGVKU09OO1xuICB9KTtcblxuICByZXR1cm4gZGVjbGFyZWRNZXRhdmFyaWFibGVzSlNPTjtcbn1cblxuZnVuY3Rpb24gZmluZFR5cGVCeU5hbWUobmFtZSwgY29udGV4dCkge1xuICBjb25zdCB0eXBlTmFtZSA9IG5hbWUsICAvLy9cbiAgICAgICAgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeVR5cGVOYW1lKHR5cGVOYW1lKTtcblxuICByZXR1cm4gdHlwZTtcbn1cblxuZnVuY3Rpb24gZmluZE1ldGFUeXBlQnlOYW1lKG5hbWUsIGNvbnRleHQpIHtcbiAgY29uc3QgbWV0YVR5cGVOYW1lID0gbmFtZSwgIC8vL1xuICAgICAgICBtZXRhVHlwZSA9IGNvbnRleHQuZmluZE1ldGFUeXBlQnlNZXRhVHlwZU5hbWUobWV0YVR5cGVOYW1lKTtcblxuICByZXR1cm4gbWV0YVR5cGU7XG59XG4iXSwibmFtZXMiOlsiYXJpYWJsZVRvVmFyaWFibGVKU09OIiwiYXNzZXJ0aW9uc0Zyb21KU09OIiwiYXNzZXJ0aW9uc1RvQXNzZXJ0aW9uc0pTT04iLCJhc3N1bXB0aW9uc0Zyb21KU09OIiwiYXNzdW1wdGlvbnNUb0Fzc3VtcHRpb25zSlNPTiIsImF4aW9tc0Zyb21KU09OIiwiYXhpb21zVG9BeGlvbXNKU09OIiwiY29tYmluYXRvcnNGcm9tSlNPTiIsImNvbWJpbmF0b3JzVG9Db21iaW5hdG9yc0pTT04iLCJjb25jbHVzaW9uRnJvbUpTT04iLCJjb25jbHVzaW9uVG9Db25jbHVzaW9uSlNPTiIsImNvbmplY3R1cmVzRnJvbUpTT04iLCJjb25qZWN0dXJlc1RvQ29uamVjdHVyZXNKU09OIiwiY29uc3RydWN0b3JzRnJvbUpTT04iLCJjb25zdHJ1Y3RvcnNUb0NvbnN0cnVjdG9yc0pTT04iLCJkZWNsYXJlZE1ldGF2YXJpYWJsZVRvREVjbGFyZWRNZXRhdmFyaWFibGVKU09OIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVzRnJvbUpTT04iLCJkZWNsYXJlZE1ldGF2YXJpYWJsZXNUb0RlY2xhcmVkTWV0YXZhcmlhYmxlc0pTT04iLCJkZWNsYXJlZFZhcmlhYmxlc0Zyb21KU09OIiwiZGVjbGFyZWRWYXJpYWJsZXNUb0RlY2xhcmVkVmFyaWFibGVzSlNPTiIsImRlZHVjdGlvbkZyb21KU09OIiwiZGVkdWN0aW9uVG9EZWR1Y3Rpb25KU09OIiwiZXF1YWxpdGllc0Zyb21KU09OIiwiZXF1YWxpdGllc1RvRXF1YWxpdGllc0pTT04iLCJmcmFtZUZyb21KU09OIiwiZnJhbWVUb0ZyYW1lSlNPTiIsImZyYW1lc0Zyb21KU09OIiwiZnJhbWVzVG9GcmFtZXNKU09OIiwiaHlwb3RoZXNlc0Zyb21KU09OIiwiaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04iLCJpZGVudGlmaWVyRnJvbUpTT04iLCJpZGVudGlmaWVyVG9JZGVudGlmaWVySlNPTiIsImp1ZGdlbWVudHNGcm9tSlNPTiIsImp1ZGdlbWVudHNUb0p1ZGdlbWVudHNKU09OIiwibGFiZWxGcm9tSlNPTiIsImxhYmVsVG9MYWJlbEpTT04iLCJsYWJlbHNGcm9tSlNPTiIsImxhYmVsc1RvTGFiZWxzSlNPTiIsIm1ldGFMZXZlbEFzc3VtcHRpb25zRnJvbUpTT04iLCJtZXRhTGV2ZWxBc3N1bXB0aW9uc1RvTWV0YUxldmVsQXNzdW1wdGlvbnNKU09OIiwibWV0YVR5cGVGcm9tSlNPTiIsIm1ldGFUeXBlVG9NZXRhVHlwZUpTT04iLCJtZXRhdGhlb3JlbXNGcm9tSlNPTiIsIm1ldGF0aGVvcmVtc1RvTWV0YXRoZW9yZW1zSlNPTiIsIm1ldGF2YXJpYWJsZUZyb21KU09OIiwibWV0YXZhcmlhYmxlVG9NZXRhdmFyaWFibGVKU09OIiwibWV0YXZhcmlhYmxlc0Zyb21KU09OIiwibWV0YXZhcmlhYmxlc1RvTWV0YXZhcmlhYmxlc0pTT04iLCJtbmVtaWNDb250ZXh0RnJvbUpTT04iLCJtbmVtaWNDb250ZXh0VG9NbmVtaWNDb250ZXh0SlNPTiIsIm1uZW1pY0NvbnRleHRzRnJvbUpTT04iLCJtbmVtaWNDb250ZXh0c1RvTW5lbWljQ29udGV4dHNKU09OIiwibmFtZUZyb21KU09OIiwibmFtZVRvTmFtZUpTT04iLCJuZWdhdGVkRnJvbUpTT04iLCJuZWdhdGVkVG9OZWdhdGVkSlNPTiIsInBhcmFtZXRlcnNGcm9tSlNPTiIsInBhcmFtZXRlcnNUb1BhcmFtZXRlcnNKU09OIiwicHJlZml4TmFtZUZyb21KU09OIiwicHJlZml4bmFtZVRvUHJldml4TmFtZUpTT04iLCJwcmVtaXNlc0Zyb21KU09OIiwicHJlbWlzZXNUb1ByZW1pc2VzSlNPTiIsInByb2NlZHVyZUNhbGxGcm9tSlNPTiIsInByb2NlZHVyZUNhbGxUb1Byb2NlZHVyZUNhbGxKU09OIiwicHJvY2VkdXJlUmVmZXJlbmNlRnJvbUpTT04iLCJwcm9jZWR1cmVSZWZlcmVuY2VUb1Byb2NlZHVyZVJlZmVyZW5jZUpTT04iLCJwcm9wZXJ0aWVzRnJvbUpTT04iLCJwcm9wZXJ0aWVzVG9Qcm9wZXJ0aWVzSlNPTiIsInByb3BlcnR5UmVsYXRpb25zRnJvbUpTT04iLCJwcm9wZXJ0eVJlbGF0aW9uc1RvUHJvcGVydHlSZWxhdGlvbnNKU09OIiwicHJvdmlzaW9uYWxGcm9tSlNPTiIsInByb3Zpc2lvbmFsVG9Qcm92aXNpb25hbEpTT04iLCJyZWZlcmVuY2VGcm9tSlNPTiIsInJlZmVyZW5jZVRvUmVmZXJlbmNlSlNPTiIsInJlZmVyZW5jZXNGcm9tSlNPTiIsInJlZmVyZW5jZXNUb1JlZmVyZW5jZXNKU09OIiwicnVsZXNGcm9tSlNPTiIsInJ1bGVzVG9SdWxlc0pTT04iLCJzaWduYXR1cmVGcm9tSlNPTiIsInNpZ25hdHVyZVRvU2lnbmF0dXJlSlNPTiIsInN0YXRlbWVudEZyb21KU09OIiwic3RhdGVtZW50VG9TdGF0ZW1lbnRKU09OIiwic3RhdGVtZW50c0Zyb21KU09OIiwic3RhdGVtZW50c1RvU3RhdGVtZW50c0pTT04iLCJzdWJzdGl0dXRpb25Gcm9tU3Vic3RpdHV0aW9uSlNPTiIsInN1YnN0aXR1dGlvbnNGcm9tSlNPTiIsInN1YnN0aXR1dGlvbnNUb1N1YnN0aXR1dGlvbnNKU09OIiwic3VwZXJUeXBlc0Zyb21KU09OIiwic3VwZXJUeXBlc1RvU3VwZXJUeXBlc0pTT04iLCJzdXBwb3NpdGlvbnNGcm9tSlNPTiIsInN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTiIsInRlcm1Gcm9tSlNPTiIsInRlcm1Ub1Rlcm1KU09OIiwidGVybXNGcm9tSlNPTiIsInRlcm1zVG9UZXJtc0pTT04iLCJ0aGVvcmVtc0Zyb21KU09OIiwidGhlb3JlbXNUb1RoZW9yZW1zSlNPTiIsInR5cGVGcm9tSlNPTiIsInR5cGVQcmVmaXhlc0Zyb21KU09OIiwidHlwZVByZWZpeGVzVG9UeXBlUHJlZml4ZXNKU09OIiwidHlwZVRvVHlwZUpTT04iLCJ0eXBlc0Zyb21KU09OIiwidHlwZXNUb1R5cGVzSlNPTiIsInZhcmlhYmxlc0Zyb21KU09OIiwidmFyaWFibGVzVG9WYXJpYWJsZXNKU09OIiwianNvbiIsImNvbnRleHQiLCJuYW1lIiwibmFtZUpTT04iLCJ0ZXJtIiwidGVybUpTT04iLCJUZXJtIiwiZWxlbWVudHMiLCJmcm9tSlNPTiIsInR5cGUiLCJzdHJpbmciLCJmaW5kVHlwZUJ5TmFtZSIsImxhYmVsIiwiTGFiZWwiLCJsYWJlbEpTT04iLCJmcmFtZSIsImZyYW1lSlNPTiIsIkZyYW1lIiwibmVnYXRlZCIsIm1ldGFUeXBlIiwiZmluZE1ldGFUeXBlQnlOYW1lIiwic3RhdGVtZW50IiwiU3RhdGVtZW50Iiwic3RhdGVtZW50SlNPTiIsImRlZHVjdGlvbiIsIkRlZHVjdGlvbiIsImRlZHVjdGlvbkpTT04iLCJzaWduYXR1cmUiLCJTaWduYXR1cmUiLCJzaWduYXR1cmVKU09OIiwicmVmZXJlbmNlIiwiUmVmZXJlbmNlIiwicmVmZXJlbmNlSlNPTiIsImlkZW50aWZpZXIiLCJpZGVudGlmaWVySlNPTiIsImNvbmNsdXNpb24iLCJDb25jbHVzaW9uIiwiY29uY2x1c2lvbkpTT04iLCJwcm92aXNpb25hbCIsIm1ldGF2YXJpYWJsZSIsIk1ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZUpTT04iLCJyZWxlYXNlQ29udGV4dCIsIm1uZW1pY0NvbnRleHQiLCJNbmVtaWNDb250ZXh0IiwicHJvY2VkdXJlQ2FsbCIsIlByb2NlZHVyZUNhbGwiLCJwcm9jZWR1cmVDYWxsSlNPTiIsInByb2NlZHVyZVJlZmVyZW5jZSIsIlByb2NlZHVyZVJlZmVyZW5jZSIsInByb2NlZHVyZVJlZmVyZW5jZUpTT04iLCJ0eXBlcyIsInR5cGVzSlNPTiIsIlR5cGUiLCJmb3JFYWNoIiwidHlwZUpTT04iLCJwdXNoIiwidGVybXMiLCJ0ZXJtc0pTT04iLCJtYXAiLCJydWxlcyIsIlJ1bGUiLCJydWxlc0pTT04iLCJydWxlSlNPTiIsInJ1bGUiLCJmcmFtZXMiLCJmcmFtZXNKU09OIiwibGFiZWxzIiwibGFiZWxzSlNPTiIsImF4aW9tcyIsIkF4aW9tIiwiYXhpb21zSlNPTiIsImF4aW9tSlNPTiIsImF4aW9tIiwicHJlbWlzZXMiLCJQcmVtaXNlIiwicHJlbWlzZXNKU09OIiwicHJlbWlzZUpTT04iLCJwcmVtaXNlIiwidGhlb3JlbXMiLCJUaGVvcmVtIiwidGhlb3JlbXNKU09OIiwidGhlb3JlbUpTT04iLCJ0aGVvcmVtIiwidmFyaWFibGVzIiwiVmFyaWFibGUiLCJ2YXJpYWJsZXNKU09OIiwidmFyaWFibGVKU09OIiwidmFyaWFibGUiLCJwcm9wZXJ0aWVzIiwiUHJvcGVydHkiLCJwcm9wZXJ0aWVzSlNPTiIsInByb3BlcnR5SlNPTiIsInByb3BlcnR5IiwiZXF1YWxpdGllcyIsIkVxdWFsaXR5IiwiZXF1YWxpdGllc0pTT04iLCJlcXVhbGl0eUpTT04iLCJlcXVhbGl0eSIsInByZWZpeE5hbWUiLCJzdXBlclR5cGVzIiwic3VwZXJUeXBlc0pTT04iLCJzdXBlclR5cGVKU09OIiwic3VwZXJUeXBlIiwiaHlwb3RoZXNlcyIsIkh5cG90aGVzaXMiLCJoeXBvdGhlc2VzSlNPTiIsImh5cG90aGVzaXNKU09OIiwiaHlwb3RoZXNpcyIsInBhcmFtZXRlcnMiLCJQYXJhbWV0ZXIiLCJwYXJhbWV0ZXJzSlNPTiIsInBhcmFtZXRlckpTT04iLCJwYXJhbWV0ZXIiLCJqdWRnZW1lbnRzIiwiSnVkZ2VtZW50IiwianVkZ2VtZW50c0pTT04iLCJqdWRnZW1lbnRKU09OIiwianVkZ2VtZW50Iiwic3RhdGVtZW50cyIsInN0YXRlbWVudHNKU09OIiwiYXNzZXJ0aW9ucyIsIlR5cGVBc3NlcnRpb24iLCJEZWZpbmVkQXNzZXJ0aW9uIiwiUHJvcGVydHlBc3NlcnRpb24iLCJTdWJwcm9vZkFzc2VydGlvbiIsIlNhdGlzZmllc0Fzc2VydGlvbiIsIkNvbnRhaW5lZEFzc2VydGlvbiIsImFzc2VydGlvbnNKU09OIiwiYXNzZXJ0aW9uSlNPTiIsImFzc2VydGlvbiIsInJlZmVyZW5jZXMiLCJyZWZlcmVuY2VzSlNPTiIsImNvbmplY3R1cmVzIiwiQ29uamVjdHVyZSIsImNvbmplY3R1cmVzSlNPTiIsImNvbmplY3R1cmVKU09OIiwiY29uamVjdHVyZSIsImNvbWJpbmF0b3JzIiwiQ29tYmluYXRvciIsImNvbWJpbmF0b3JzSlNPTiIsImNvbWJpbmF0b3JKU09OIiwiY29tYmluYXRvciIsImFzc3VtcHRpb25zIiwiQXNzdW1wdGlvbiIsImFzc3VtcHRpb25zSlNPTiIsImFzc3VtcHRpb25KU09OIiwiYXNzdW1wdGlvbiIsInR5cGVQcmVmaXhlcyIsIlR5cGVQcmVmaXgiLCJ0eXBlUHJlZml4ZXNKU09OIiwidHlwZVByZWZpeEpTT04iLCJ0eXBlUHJlZml4IiwiY29uc3RydWN0b3JzIiwiQ29uc3RydWN0b3IiLCJjb25zdHJ1Y3RvcnNKU09OIiwiY29uc3RydWN0b3JKU09OIiwiY29uc3RydWN0b3IiLCJtZXRhdGhlb3JlbXMiLCJNZXRhdGhlb3JlbSIsIm1ldGF0aGVvcmVtc0pTT04iLCJtZXRhdGhlb3JlbUpTT04iLCJtZXRhdGhlb3JlbSIsInN1cHBvc2l0aW9ucyIsIlN1cHBvc2l0aW9uIiwic3VwcG9zaXRpb25zSlNPTiIsInN1cHBvc2l0aW9uSlNPTiIsInN1cHBvc2l0aW9uIiwic3Vic3RpdHV0aW9ucyIsInN1YnN0aXR1dGlvbnNKU09OIiwic3Vic3RpdHV0aW9uSlNPTiIsInN1YnN0aXR1dGlvbiIsIm1ldGF2YXJpYWJsZXMiLCJtZXRhdmFyaWFibGVzSlNPTiIsImNvbnRleHRzIiwibW5lbWljQ29udGV4dHMiLCJkZWNsYXJlZFZhcmlhYmxlcyIsImRlY2xhcmVkVmFyaWFibGVzSlNPTiIsImRlY2xhcmVkVmFyaWFibGVKU09OIiwiZGVjbGFyZWRWYXJpYWJsZSIsInByb3BlcnR5UmVsYXRpb25zIiwiUHJvcGVydHlSZWxhdGlvbiIsInByb3BlcnR5UmVsYXRpb25zSlNPTiIsInByb3BlcnR5UmVsYXRpb25KU09OIiwicHJvcGVydHlSZWxhdGlvbiIsIm1ldGFMZXZlbEFzc3VtcHRpb25zIiwiTWV0YUxldmVsQXNzdW1wdGlvbiIsIm1ldGFMZXZlbEFzc3VtcHRpb25zSlNPTiIsIm1ldGFMZXZlbEFzc3VtcHRpb25KU09OIiwibWV0YUxldmVsQXNzdW1wdGlvbiIsImRlY2xhcmVkTWV0YXZhcmlhYmxlcyIsImRlY2xhcmVkTWV0YXZhcmlhYmxlc0pTT04iLCJkZWNsYXJlZE1ldGF2YXJpYWJsZUpTT04iLCJkZWNsYXJlZE1ldGF2YXJpYWJsZSIsInRvSlNPTiIsImFicmlkZ2VkIiwibmVnYXRlZEpTT04iLCJhcmlhYmxlIiwiYXJpYWJsZUpTT04iLCJtZXRhVHlwZUpTT04iLCJwcm92aXNpb25hbEpTT04iLCJtbmVtaWNDb250ZXh0SlNPTiIsIlRlcm1TdWJzdGl0dXRpb24iLCJGcmFtZVN1YnN0aXR1dGlvbiIsIlN0YXRlbWVudFN1YnN0aXR1dGlvbiIsIlJlZmVyZW5jZVN1YnN0aXR1dGlvbiIsInByZWZpeG5hbWUiLCJwcmVmaXhOYW1lSlNPTiIsIm1uZW1pY0NvbnRleHRzSlNPTiIsInR5cGVOYW1lIiwiZmluZFR5cGVCeVR5cGVOYW1lIiwibWV0YVR5cGVOYW1lIiwiZmluZE1ldGFUeXBlQnlNZXRhVHlwZU5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQXF5QmdCQTtlQUFBQTs7UUF0VEFDO2VBQUFBOztRQW1rQkFDO2VBQUFBOztRQTlmQUM7ZUFBQUE7O1FBc2lCQUM7ZUFBQUE7O1FBanlCQUM7ZUFBQUE7O1FBb29CQUM7ZUFBQUE7O1FBelpBQztlQUFBQTs7UUE0aUJBQztlQUFBQTs7UUE5NkJBQztlQUFBQTs7UUFtckJBQztlQUFBQTs7UUFqVUFDO2VBQUFBOztRQWtqQkFDO2VBQUFBOztRQWxmQUM7ZUFBQUE7O1FBMGhCQUM7ZUFBQUE7O1FBblBBQztlQUFBQTs7UUFySkFDO2VBQUFBOztRQWtlQUM7ZUFBQUE7O1FBbmhCQUM7ZUFBQUE7O1FBK2ZBQztlQUFBQTs7UUFya0NBQztlQUFBQTs7UUFrdEJBQztlQUFBQTs7UUF4YkFDO2VBQUFBOztRQXFwQkFDO2VBQUFBOztRQW4rQkFDO2VBQUFBOztRQXN0QkFDO2VBQUFBOztRQXhmQUM7ZUFBQUE7O1FBMHBCQUM7ZUFBQUE7O1FBcGdCQUM7ZUFBQUE7O1FBc2pCQUM7ZUFBQUE7O1FBNzBCQUM7ZUFBQUE7O1FBdXJCQUM7ZUFBQUE7O1FBaFlBQztlQUFBQTs7UUFxa0JBQztlQUFBQTs7UUF0K0JBQztlQUFBQTs7UUEydUJBQztlQUFBQTs7UUFoZkFDO2VBQUFBOztRQWdvQkFDO2VBQUFBOztRQW5OQUM7ZUFBQUE7O1FBd2VBQztlQUFBQTs7UUE3bUNBQztlQUFBQTs7UUEwdEJBQztlQUFBQTs7UUF2TUFDO2VBQUFBOztRQW9oQkFDO2VBQUFBOztRQW44QkFDO2VBQUFBOztRQTRxQkFDO2VBQUFBOztRQTlNQUM7ZUFBQUE7O1FBbWdCQUM7ZUFBQUE7O1FBcDlCQUM7ZUFBQUE7O1FBNnFCQUM7ZUFBQUE7O1FBNU1BQztlQUFBQTs7UUE2ZkFDO2VBQUFBOztRQTNwQ0FDO2VBQUFBOztRQWt2QkFDO2VBQUFBOztRQTVxQkFDO2VBQUFBOztRQW90QkFDO2VBQUFBOztRQWhXQUM7ZUFBQUE7O1FBaWtCQUM7ZUFBQUE7O1FBdm1CQUM7ZUFBQUE7O1FBc2xCQUM7ZUFBQUE7O1FBdHFCQUM7ZUFBQUE7O1FBOG5CQUM7ZUFBQUE7O1FBdnZCQUM7ZUFBQUE7O1FBdXBCQUM7ZUFBQUE7O1FBeG9CQUM7ZUFBQUE7O1FBc3BCQUM7ZUFBQUE7O1FBNWZBQztlQUFBQTs7UUFpcEJBQztlQUFBQTs7UUFwVUFDO2VBQUFBOztRQW9lQUM7ZUFBQUE7O1FBMy9CQUM7ZUFBQUE7O1FBNHFCQUM7ZUFBQUE7O1FBaHRCQUM7ZUFBQUE7O1FBd3FCQUM7ZUFBQUE7O1FBL1NBQztlQUFBQTs7UUF3akJBQztlQUFBQTs7UUFuekJBQztlQUFBQTs7UUFzcEJBQztlQUFBQTs7UUFueUJBQztlQUFBQTs7UUEyc0JBQztlQUFBQTs7UUF2dUJBQztlQUFBQTs7UUF5dEJBQztlQUFBQTs7UUExVkFDO2VBQUFBOztRQXlrQkFDO2VBQUFBOztRQXZLQUM7ZUFBQUE7O1FBN1BBQztlQUFBQTs7UUF3Z0JBQztlQUFBQTs7UUE3dUJBQztlQUFBQTs7UUFzbEJBQztlQUFBQTs7UUFqWUFDO2VBQUFBOztRQWdmQUM7ZUFBQUE7O1FBcmxDQUM7ZUFBQUE7O1FBOHVCQUM7ZUFBQUE7O1FBcGdCQUM7ZUFBQUE7O1FBa3BCQUM7ZUFBQUE7O1FBbGpCQUM7ZUFBQUE7O1FBd25CQUM7ZUFBQUE7O1FBbDdCQUM7ZUFBQUE7O1FBcWlCQUM7ZUFBQUE7O1FBOGpCQUM7ZUFBQUE7O1FBN1hBQztlQUFBQTs7UUF6aEJBQztlQUFBQTs7UUF5cUJBQztlQUFBQTs7UUE1aUJBQztlQUFBQTs7UUFrbkJBQztlQUFBQTs7O2lFQXo5Qks7K0RBQ0s7Ozs7OztBQUVuQixTQUFTcEQsYUFBYXFELElBQUksRUFBRUMsT0FBTztJQUN4QyxJQUFJLEVBQUVDLElBQUksRUFBRSxHQUFHRjtJQUVmLE1BQU1HLFdBQVdELE1BQU8sR0FBRztJQUUzQkEsT0FBT0MsVUFBVyxHQUFHO0lBRXJCLE9BQU9EO0FBQ1Q7QUFFTyxTQUFTaEIsYUFBYWMsSUFBSSxFQUFFQyxPQUFPO0lBQ3hDLElBQUksRUFBRUcsSUFBSSxFQUFFLEdBQUdKO0lBRWYsSUFBSUksU0FBUyxNQUFNO1FBQ2pCLE1BQU1DLFdBQVdELE1BQU8sR0FBRztRQUUzQkosT0FBT0ssVUFBVyxHQUFHO1FBRXJCLE1BQU0sRUFBRUMsSUFBSSxFQUFFLEdBQUdDLGlCQUFRO1FBRXpCSCxPQUFPRSxLQUFLRSxRQUFRLENBQUNSLE1BQU1DO0lBQzdCO0lBRUEsT0FBT0c7QUFDVDtBQUVPLFNBQVNaLGFBQWFRLElBQUksRUFBRUMsT0FBTztJQUN4QyxJQUFJLEVBQUVRLElBQUksRUFBRSxHQUFHVDtJQUVmLElBQUlTLFNBQVMsTUFBTTtRQUNqQlQsT0FBT1MsTUFBTyxHQUFHO1FBRWpCLE1BQU0sRUFBRUMsTUFBTSxFQUFFLEdBQUdWLE1BQ2JFLE9BQU9RLFFBQVMsR0FBRztRQUV6QkQsT0FBT0UsZUFBZVQsTUFBTUQ7SUFDOUI7SUFFQSxPQUFPUTtBQUNUO0FBRU8sU0FBU2hGLGNBQWN1RSxJQUFJLEVBQUVDLE9BQU87SUFDekMsSUFBSSxFQUFFVyxLQUFLLEVBQUUsR0FBR1o7SUFFaEIsTUFBTSxFQUFFYSxLQUFLLEVBQUUsR0FBR04saUJBQVEsRUFDeEJPLFlBQVlGLE9BQVEsR0FBRztJQUV6QlosT0FBT2MsV0FBVyxHQUFHO0lBRXJCRixRQUFRQyxNQUFNTCxRQUFRLENBQUNSLE1BQU1DO0lBRTdCLE9BQU9XO0FBQ1Q7QUFFTyxTQUFTN0YsY0FBY2lGLElBQUksRUFBRUMsT0FBTztJQUN6QyxJQUFJLEVBQUVjLEtBQUssRUFBRSxHQUFHZjtJQUVoQixJQUFJZSxVQUFVLE1BQU07UUFDbEIsTUFBTUMsWUFBWUQsT0FBUSxHQUFHO1FBRTdCZixPQUFPZ0IsV0FBWSxHQUFHO1FBRXRCLE1BQU0sRUFBRUMsS0FBSyxFQUFFLEdBQUdWLGlCQUFRO1FBRTFCUSxRQUFRRSxNQUFNVCxRQUFRLENBQUNSLE1BQU1DO0lBQy9CO0lBRUEsT0FBT2M7QUFDVDtBQUVPLFNBQVNsRSxnQkFBZ0JtRCxJQUFJLEVBQUVDLE9BQU87SUFDM0MsTUFBTSxFQUFFaUIsT0FBTyxFQUFFLEdBQUdsQjtJQUVwQixPQUFPa0I7QUFDVDtBQUVPLFNBQVNuRixpQkFBaUJpRSxJQUFJLEVBQUVDLE9BQU87SUFDNUMsSUFBSSxFQUFFa0IsUUFBUSxFQUFFLEdBQUduQjtJQUVuQixJQUFJbUIsYUFBYSxNQUFNO1FBQ3JCbkIsT0FBT21CLFVBQVcsR0FBRztRQUVyQixNQUFNLEVBQUVULE1BQU0sRUFBRSxHQUFHVixNQUNiRSxPQUFPUSxRQUFTLEdBQUc7UUFFekJTLFdBQVdDLG1CQUFtQmxCLE1BQU1EO0lBQ3RDO0lBRUEsT0FBT2tCO0FBQ1Q7QUFFTyxTQUFTNUMsa0JBQWtCeUIsSUFBSSxFQUFFQyxPQUFPO0lBQzdDLElBQUksRUFBRW9CLFlBQVksSUFBSSxFQUFFLEdBQUdyQjtJQUUzQixJQUFJcUIsY0FBYyxNQUFNO1FBQ3RCLE1BQU0sRUFBRUMsU0FBUyxFQUFFLEdBQUdmLGlCQUFRLEVBQ3hCZ0IsZ0JBQWdCRixXQUFZLEdBQUc7UUFFckNyQixPQUFPdUIsZUFBZSxHQUFHO1FBRXpCRixZQUFZQyxVQUFVZCxRQUFRLENBQUNSLE1BQU1DO0lBQ3ZDO0lBRUEsT0FBT29CO0FBQ1Q7QUFFTyxTQUFTMUcsa0JBQWtCcUYsSUFBSSxFQUFFQyxPQUFPO0lBQzdDLElBQUksRUFBRXVCLFNBQVMsRUFBRSxHQUFHeEI7SUFFcEIsTUFBTSxFQUFFeUIsU0FBUyxFQUFFLEdBQUdsQixpQkFBUSxFQUN4Qm1CLGdCQUFnQkYsV0FBWSxHQUFHO0lBRXJDeEIsT0FBTzBCLGVBQWdCLEdBQUc7SUFFMUJGLFlBQVlDLFVBQVVqQixRQUFRLENBQUNSLE1BQU1DO0lBRXJDLE9BQU91QjtBQUNUO0FBRU8sU0FBU25ELGtCQUFrQjJCLElBQUksRUFBRUMsT0FBTztJQUM3QyxJQUFJLEVBQUUwQixZQUFZLElBQUksRUFBRSxHQUFHM0I7SUFFM0IsSUFBSTJCLGNBQWMsTUFBTTtRQUN0QixNQUFNLEVBQUVDLFNBQVMsRUFBRSxHQUFHckIsaUJBQVEsRUFDeEJzQixnQkFBZ0JGLFdBQVksR0FBRztRQUVyQzNCLE9BQU82QixlQUFlLEdBQUc7UUFFekJGLFlBQVlDLFVBQVVwQixRQUFRLENBQUNSLE1BQU1DO0lBQ3ZDO0lBRUEsT0FBTzBCO0FBQ1Q7QUFFTyxTQUFTNUQsa0JBQWtCaUMsSUFBSSxFQUFFQyxPQUFPO0lBQzdDLElBQUksRUFBRTZCLFNBQVMsRUFBRSxHQUFHOUI7SUFFcEIsTUFBTSxFQUFFK0IsU0FBUyxFQUFFLEdBQUd4QixpQkFBUSxFQUN4QnlCLGdCQUFnQkYsV0FBWSxHQUFHO0lBRXJDOUIsT0FBT2dDLGVBQWUsR0FBRztJQUV6QkYsWUFBWUMsVUFBVXZCLFFBQVEsQ0FBQ1IsTUFBTUM7SUFFckMsT0FBTzZCO0FBQ1Q7QUFFTyxTQUFTekcsbUJBQW1CMkUsSUFBSSxFQUFFQyxPQUFPO0lBQzlDLElBQUksRUFBRWdDLFVBQVUsRUFBRSxHQUFHakM7SUFFckIsTUFBTWtDLGlCQUFpQkQsWUFBYSxHQUFHO0lBRXZDQSxhQUFhQyxnQkFBaUIsR0FBRztJQUVqQyxPQUFPRDtBQUNUO0FBRU8sU0FBU2pJLG1CQUFtQmdHLElBQUksRUFBRUMsT0FBTztJQUM5QyxJQUFJLEVBQUVrQyxVQUFVLEVBQUUsR0FBR25DO0lBRXJCLE1BQU0sRUFBRW9DLFVBQVUsRUFBRSxHQUFHN0IsaUJBQVEsRUFDekI4QixpQkFBaUJGLFlBQWEsR0FBRztJQUV2Q25DLE9BQU9xQyxnQkFBaUIsR0FBRztJQUUzQkYsYUFBYUMsV0FBVzVCLFFBQVEsQ0FBQ1IsTUFBTUM7SUFFdkMsT0FBT2tDO0FBQ1Q7QUFFTyxTQUFTdEUsb0JBQW9CbUMsSUFBSSxFQUFFQyxPQUFPO0lBQy9DLE1BQU0sRUFBRXFDLFdBQVcsRUFBRSxHQUFHdEM7SUFFeEIsT0FBT3NDO0FBQ1Q7QUFFTyxTQUFTbkcscUJBQXFCNkQsSUFBSSxFQUFFQyxPQUFPO0lBQ2hELElBQUksRUFBRXNDLFlBQVksRUFBRSxHQUFHdkM7SUFFdkIsTUFBTSxFQUFFd0MsWUFBWSxFQUFFLEdBQUdqQyxpQkFBUSxFQUMzQmtDLG1CQUFtQkYsY0FBZSxHQUFHO0lBRTNDdkMsT0FBT3lDLGtCQUFrQixHQUFHO0lBRTVCRixlQUFlQyxhQUFhaEMsUUFBUSxDQUFDUixNQUFNQztJQUUzQyxPQUFPc0M7QUFDVDtBQUVPLFNBQVNoRyxzQkFBc0J5RCxJQUFJLEVBQUVDLE9BQU87SUFDakQsTUFBTXlDLGlCQUFpQnpDLFNBQVMsR0FBRztJQUVsQyxDQUFBLEVBQUVBLE9BQU8sRUFBRSxHQUFHRCxJQUFHO0lBRWxCQSxPQUFPQyxTQUFTLEdBQUc7SUFFbkJBLFVBQVV5QyxnQkFBZ0IsR0FBRztJQUU3QixNQUFNQyxnQkFBZ0JDLGVBQWEsQ0FBQ3BDLFFBQVEsQ0FBQ1IsTUFBTUM7SUFFbkQsT0FBTzBDO0FBQ1Q7QUFFTyxTQUFTdEYsc0JBQXNCMkMsSUFBSSxFQUFFQyxPQUFPO0lBQ2pELElBQUksRUFBRTRDLGdCQUFnQixJQUFJLEVBQUUsR0FBRzdDO0lBRS9CLElBQUk2QyxrQkFBa0IsTUFBTTtRQUMxQixNQUFNLEVBQUVDLGFBQWEsRUFBRSxHQUFHdkMsaUJBQVEsRUFDNUJ3QyxvQkFBb0JGLGVBQWdCLEdBQUc7UUFFN0M3QyxPQUFPK0MsbUJBQW1CLEdBQUc7UUFFN0JGLGdCQUFnQkMsY0FBY3RDLFFBQVEsQ0FBQ1IsTUFBTUM7SUFDL0M7SUFFQSxPQUFPNEM7QUFDVDtBQUVPLFNBQVN0RiwyQkFBMkJ5QyxJQUFJLEVBQUVDLE9BQU87SUFDdEQsSUFBSSxFQUFFK0Msa0JBQWtCLEVBQUUsR0FBR2hEO0lBRTdCLE1BQU0sRUFBRWlELGtCQUFrQixFQUFFLEdBQUcxQyxpQkFBUSxFQUNqQzJDLHlCQUF5QkYsb0JBQXFCLEdBQUc7SUFFdkRoRCxPQUFPa0Qsd0JBQXlCLEdBQUc7SUFFbkNGLHFCQUFxQkMsbUJBQW1CekMsUUFBUSxDQUFDUixNQUFNQztJQUV2RCxPQUFPK0M7QUFDVDtBQUVPLFNBQVNwRCxjQUFjSSxJQUFJLEVBQUVtRCxLQUFLLEVBQUVsRCxPQUFPO0lBQ2hELE1BQU0sRUFBRWtELE9BQU9DLFNBQVMsRUFBRSxHQUFHcEQ7SUFFN0IsTUFBTSxFQUFFcUQsSUFBSSxFQUFFLEdBQUc5QyxpQkFBUTtJQUV6QjZDLFVBQVVFLE9BQU8sQ0FBQyxDQUFDQztRQUNqQixNQUFNdkQsT0FBT3VELFVBQ1A5QyxPQUFPNEMsS0FBSzdDLFFBQVEsQ0FBQ1IsTUFBTUM7UUFFakNrRCxNQUFNSyxJQUFJLENBQUMvQztJQUNiO0FBQ0Y7QUFFTyxTQUFTckIsY0FBY1ksSUFBSSxFQUFFQyxPQUFPO0lBQ3pDLElBQUksRUFBRXdELEtBQUssRUFBRSxHQUFHekQ7SUFFaEIsTUFBTSxFQUFFTSxJQUFJLEVBQUUsR0FBR0MsaUJBQVEsRUFDbkJtRCxZQUFZRCxPQUFPLEdBQUc7SUFFNUJBLFFBQVFDLFVBQVVDLEdBQUcsQ0FBQyxDQUFDdEQ7UUFDckIsTUFBTUwsT0FBT0ssVUFDUEQsT0FBT0UsS0FBS0UsUUFBUSxDQUFDUixNQUFNQztRQUVqQyxPQUFPRztJQUNUO0lBRUEsT0FBT3FEO0FBQ1Q7QUFFTyxTQUFTdEYsY0FBYzZCLElBQUksRUFBRUMsT0FBTztJQUN6QyxJQUFJLEVBQUUyRCxLQUFLLEVBQUUsR0FBRzVEO0lBRWhCLE1BQU0sRUFBRTZELElBQUksRUFBRSxHQUFHdEQsaUJBQVEsRUFDbkJ1RCxZQUFZRixPQUFPLEdBQUc7SUFFNUJBLFFBQVFFLFVBQVVILEdBQUcsQ0FBQyxDQUFDSTtRQUNyQixNQUFNL0QsT0FBTytELFVBQ1BDLE9BQU9ILEtBQUtyRCxRQUFRLENBQUNSLE1BQU1DO1FBRWpDLE9BQU8rRDtJQUNUO0lBRUEsT0FBT0o7QUFDVDtBQUVPLFNBQVMzSSxlQUFlK0UsSUFBSSxFQUFFQyxPQUFPO0lBQzFDLElBQUksRUFBRWdFLE1BQU0sRUFBRSxHQUFHakU7SUFFakIsTUFBTSxFQUFFaUIsS0FBSyxFQUFFLEdBQUdWLGlCQUFRLEVBQ3hCMkQsYUFBYUQsUUFBUSxHQUFHO0lBRTFCQSxTQUFTQyxXQUFXUCxHQUFHLENBQUMsQ0FBQzNDO1FBQ3ZCLE1BQU1oQixPQUFPZ0IsV0FDUEQsUUFBUUUsTUFBTVQsUUFBUSxDQUFDUixNQUFNQztRQUVuQyxPQUFPYztJQUNUO0lBRUEsT0FBT2tEO0FBQ1Q7QUFFTyxTQUFTdEksZUFBZXFFLElBQUksRUFBRUMsT0FBTztJQUMxQyxJQUFJLEVBQUVrRSxNQUFNLEVBQUUsR0FBR25FO0lBRWpCLE1BQU0sRUFBRWEsS0FBSyxFQUFFLEdBQUdOLGlCQUFRLEVBQ3BCNkQsYUFBYUQsUUFBUyxHQUFHO0lBRS9CQSxTQUFTQyxXQUFXVCxHQUFHLENBQUMsQ0FBQzdDO1FBQ3ZCLE1BQU1kLE9BQU9jLFdBQ1BGLFFBQVFDLE1BQU1MLFFBQVEsQ0FBQ1IsTUFBTUM7UUFFbkMsT0FBT1c7SUFDVDtJQUVBLE9BQU91RDtBQUNUO0FBRU8sU0FBU3ZLLGVBQWVvRyxJQUFJLEVBQUVDLE9BQU87SUFDMUMsSUFBSSxFQUFFb0UsTUFBTSxFQUFFLEdBQUdyRTtJQUVqQixNQUFNLEVBQUVzRSxLQUFLLEVBQUUsR0FBRy9ELGlCQUFRLEVBQ3BCZ0UsYUFBYUYsUUFBUSxHQUFHO0lBRTlCQSxTQUFTRSxXQUFXWixHQUFHLENBQUMsQ0FBQ2E7UUFDdkIsTUFBTXhFLE9BQU93RSxXQUNQQyxRQUFRSCxNQUFNOUQsUUFBUSxDQUFDUixNQUFNQztRQUVuQyxPQUFPd0U7SUFDVDtJQUVBLE9BQU9KO0FBQ1Q7QUFFTyxTQUFTbEgsaUJBQWlCNkMsSUFBSSxFQUFFQyxPQUFPO0lBQzVDLElBQUksRUFBRXlFLFFBQVEsRUFBRSxHQUFHMUU7SUFFbkIsTUFBTSxFQUFFMkUsT0FBTyxFQUFFLEdBQUdwRSxpQkFBUSxFQUN0QnFFLGVBQWVGLFVBQVcsR0FBRztJQUVuQ0EsV0FBV0UsYUFBYWpCLEdBQUcsQ0FBQyxDQUFDa0I7UUFDM0IsTUFBTTdFLE9BQU82RSxhQUNQQyxVQUFVSCxRQUFRbkUsUUFBUSxDQUFDUixNQUFNQztRQUV2QyxPQUFPNkU7SUFDVDtJQUVBLE9BQU9KO0FBQ1Q7QUFFTyxTQUFTcEYsaUJBQWlCVSxJQUFJLEVBQUVDLE9BQU87SUFDNUMsSUFBSSxFQUFFOEUsUUFBUSxFQUFFLEdBQUcvRTtJQUVuQixNQUFNLEVBQUVnRixPQUFPLEVBQUUsR0FBR3pFLGlCQUFRLEVBQ3RCMEUsZUFBZUYsVUFBVSxHQUFHO0lBRWxDQSxXQUFXRSxhQUFhdEIsR0FBRyxDQUFDLENBQUN1QjtRQUMzQixNQUFNbEYsT0FBT2tGLGFBQ1BDLFVBQVVILFFBQVF4RSxRQUFRLENBQUNSLE1BQU1DO1FBRXZDLE9BQU9rRjtJQUNUO0lBRUEsT0FBT0o7QUFDVDtBQUVPLFNBQVNqRixrQkFBa0JFLElBQUksRUFBRUMsT0FBTztJQUM3QyxJQUFJLEVBQUVtRixTQUFTLEVBQUUsR0FBR3BGO0lBRXBCLE1BQU0sRUFBRXFGLFFBQVEsRUFBRSxHQUFHOUUsaUJBQVEsRUFDdkIrRSxnQkFBZ0JGLFdBQVcsR0FBRztJQUVwQ0EsWUFBWUUsY0FBYzNCLEdBQUcsQ0FBQyxDQUFDNEI7UUFDN0IsTUFBTXZGLE9BQU91RixjQUNQQyxXQUFXSCxTQUFTN0UsUUFBUSxDQUFDUixNQUFNQztRQUV6QyxPQUFPdUY7SUFDVDtJQUVBLE9BQU9KO0FBQ1Q7QUFFTyxTQUFTM0gsbUJBQW1CdUMsSUFBSSxFQUFFQyxPQUFPO0lBQzlDLElBQUksRUFBRXdGLFVBQVUsRUFBRSxHQUFHekY7SUFFckIsTUFBTSxFQUFFMEYsUUFBUSxFQUFFLEdBQUduRixpQkFBUSxFQUN2Qm9GLGlCQUFpQkYsWUFBWSxHQUFHO0lBRXRDQSxhQUFhRSxlQUFlaEMsR0FBRyxDQUFDLENBQUNpQztRQUMvQixNQUFNNUYsT0FBTzRGLGNBQ1BDLFdBQVdILFNBQVNsRixRQUFRLENBQUNSLE1BQU1DO1FBRXpDLE9BQU80RjtJQUNUO0lBRUEsT0FBT0o7QUFDVDtBQUVPLFNBQVM1SyxtQkFBbUJtRixJQUFJLEVBQUVDLE9BQU87SUFDOUMsSUFBSSxFQUFFNkYsVUFBVSxFQUFFLEdBQUc5RjtJQUVyQixNQUFNLEVBQUUrRixRQUFRLEVBQUUsR0FBR3hGLGlCQUFRLEVBQzNCeUYsaUJBQWlCRixZQUFZLEdBQUc7SUFFbENBLGFBQWFFLGVBQWVyQyxHQUFHLENBQUMsQ0FBQ3NDO1FBQy9CLE1BQU1qRyxPQUFPaUcsY0FDWEMsV0FBV0gsU0FBU3ZGLFFBQVEsQ0FBQ1IsTUFBTUM7UUFFckMsT0FBT2lHO0lBQ1Q7SUFFQSxPQUFPSjtBQUNUO0FBRU8sU0FBUzdJLG1CQUFtQitDLElBQUksRUFBRUMsT0FBTztJQUM5QyxNQUFNLEVBQUVrRyxVQUFVLEVBQUUsR0FBR25HO0lBRXZCLE9BQU9tRztBQUNUO0FBRU8sU0FBU3JILG1CQUFtQmtCLElBQUksRUFBRUMsT0FBTztJQUM5QyxNQUFNLEVBQUVtRyxZQUFZQyxjQUFjLEVBQUUsR0FBR3JHO0lBRXZDLE1BQU1vRyxhQUFhQyxlQUFlMUMsR0FBRyxDQUFDLENBQUMyQztRQUNyQyxNQUFNdEcsT0FBT3NHLGVBQ1gsRUFBRTVGLE1BQU0sRUFBRSxHQUFHVixNQUNiRSxPQUFPUSxRQUNQRCxPQUFPRSxlQUFlVCxNQUFNRCxVQUM1QnNHLFlBQVk5RixNQUFNLEdBQUc7UUFFdkIsT0FBTzhGO0lBQ1Q7SUFFQSxPQUFPSDtBQUNUO0FBRU8sU0FBU2pMLG1CQUFtQjZFLElBQUksRUFBRUMsT0FBTztJQUM5QyxJQUFJLEVBQUV1RyxVQUFVLEVBQUUsR0FBR3hHO0lBRXJCLE1BQU0sRUFBRXlHLFVBQVUsRUFBRSxHQUFHbEcsaUJBQVEsRUFDekJtRyxpQkFBaUJGLFlBQWEsR0FBRztJQUV2Q0EsYUFBYUUsZUFBZS9DLEdBQUcsQ0FBQyxDQUFDZ0Q7UUFDL0IsTUFBTTNHLE9BQU8yRyxnQkFDUEMsYUFBYUgsV0FBV2pHLFFBQVEsQ0FBQ1IsTUFBTUM7UUFFN0MsT0FBTzJHO0lBQ1Q7SUFFQSxPQUFPSjtBQUNUO0FBRU8sU0FBU3pKLG1CQUFtQmlELElBQUksRUFBRUMsT0FBTztJQUM5QyxJQUFJLEVBQUU0RyxVQUFVLEVBQUUsR0FBRzdHO0lBRXJCLE1BQU0sRUFBRThHLFNBQVMsRUFBRSxHQUFHdkcsaUJBQVEsRUFDeEJ3RyxpQkFBaUJGLFlBQVksR0FBRztJQUV0Q0EsYUFBYUUsZUFBZXBELEdBQUcsQ0FBQyxDQUFDcUQ7UUFDL0IsTUFBTWhILE9BQU9nSCxlQUNQQyxZQUFZSCxVQUFVdEcsUUFBUSxDQUFDUixNQUFNQztRQUUzQyxPQUFPZ0g7SUFDVDtJQUVBLE9BQU9KO0FBQ1Q7QUFFTyxTQUFTdEwsbUJBQW1CeUUsSUFBSSxFQUFFQyxPQUFPO0lBQzlDLElBQUksRUFBRWlILFVBQVUsRUFBRSxHQUFHbEg7SUFFckIsTUFBTSxFQUFFbUgsU0FBUyxFQUFFLEdBQUc1RyxpQkFBUSxFQUN4QjZHLGlCQUFpQkYsWUFBWSxHQUFHO0lBRXRDQSxhQUFhRSxlQUFlekQsR0FBRyxDQUFDLENBQUMwRDtRQUMvQixNQUFNckgsT0FBT3FILGVBQ1BDLFlBQVlILFVBQVUzRyxRQUFRLENBQUNSLE1BQU1DO1FBRTNDLE9BQU9xSDtJQUNUO0lBRUEsT0FBT0o7QUFDVDtBQUVPLFNBQVN6SSxtQkFBbUJ1QixJQUFJLEVBQUVDLE9BQU87SUFDOUMsSUFBSSxFQUFFc0gsVUFBVSxFQUFFLEdBQUd2SDtJQUVyQixNQUFNLEVBQUVzQixTQUFTLEVBQUUsR0FBR2YsaUJBQVEsRUFDeEJpSCxpQkFBaUJELFlBQVksR0FBRztJQUV0Q0EsYUFBYUMsZUFBZTdELEdBQUcsQ0FBQyxDQUFDcEM7UUFDL0IsTUFBTXZCLE9BQU91QixlQUNQRixZQUFZQyxVQUFVZCxRQUFRLENBQUNSLE1BQU1DO1FBRTNDLE9BQU9vQjtJQUNUO0lBRUEsT0FBT2tHO0FBQ1Q7QUFFTyxTQUFTL04sbUJBQW1Cd0csSUFBSSxFQUFFQyxPQUFPO0lBQzlDLElBQUksRUFBRXdILFVBQVUsRUFBRSxHQUFHekg7SUFFckIsTUFBTSxFQUFFMEgsYUFBYSxFQUFFQyxnQkFBZ0IsRUFBRUMsaUJBQWlCLEVBQUVDLGlCQUFpQixFQUFFQyxrQkFBa0IsRUFBRUMsa0JBQWtCLEVBQUUsR0FBR3hILGlCQUFRLEVBQzVIeUgsaUJBQWlCUCxZQUFZLEdBQUc7SUFFdENBLGFBQWFPLGVBQWVyRSxHQUFHLENBQUMsQ0FBQ3NFO1FBQy9CLE1BQU1qSSxPQUFPaUksZUFDUEMsWUFBWVIsY0FBY2xILFFBQVEsQ0FBQ1IsTUFBTUMsWUFDNUIwSCxpQkFBaUJuSCxRQUFRLENBQUNSLE1BQU1DLFlBQ2hDMkgsa0JBQWtCcEgsUUFBUSxDQUFDUixNQUFNQyxZQUNqQzRILGtCQUFrQnJILFFBQVEsQ0FBQ1IsTUFBTUMsWUFDakM2SCxtQkFBbUJ0SCxRQUFRLENBQUNSLE1BQU1DLFlBQ2xDOEgsbUJBQW1CdkgsUUFBUSxDQUFDUixNQUFNQztRQUVyRCxPQUFPaUk7SUFDVDtJQUVBLE9BQU9UO0FBQ1Q7QUFFTyxTQUFTeEosbUJBQW1CK0IsSUFBSSxFQUFFQyxPQUFPO0lBQzlDLElBQUksRUFBRWtJLFVBQVUsRUFBRSxHQUFHbkk7SUFFckIsTUFBTSxFQUFFK0IsU0FBUyxFQUFFLEdBQUd4QixpQkFBUSxFQUN4QjZILGlCQUFpQkQsWUFBWSxHQUFHO0lBRXRDQSxhQUFhQyxlQUFlekUsR0FBRyxDQUFDLENBQUMzQjtRQUMvQixNQUFNaEMsT0FBT2dDLGVBQ1BGLFlBQVlDLFVBQVV2QixRQUFRLENBQUNSLE1BQU1DO1FBRTNDLE9BQU82QjtJQUNUO0lBRUEsT0FBT3FHO0FBQ1Q7QUFFTyxTQUFTak8sb0JBQW9COEYsSUFBSSxFQUFFQyxPQUFPO0lBQy9DLElBQUksRUFBRW9JLFdBQVcsRUFBRSxHQUFHckk7SUFFdEIsTUFBTSxFQUFFc0ksVUFBVSxFQUFFLEdBQUcvSCxpQkFBUSxFQUN6QmdJLGtCQUFrQkYsYUFBYSxHQUFHO0lBRXhDQSxjQUFjRSxnQkFBZ0I1RSxHQUFHLENBQUMsQ0FBQzZFO1FBQ2pDLE1BQU14SSxPQUFPd0ksZ0JBQ1BDLGFBQWFILFdBQVc5SCxRQUFRLENBQUNSLE1BQU1DO1FBRTdDLE9BQU93STtJQUNUO0lBRUEsT0FBT0o7QUFDVDtBQUVPLFNBQVN2TyxvQkFBb0JrRyxJQUFJLEVBQUVDLE9BQU87SUFDL0MsSUFBSSxFQUFFeUksV0FBVyxFQUFFLEdBQUcxSTtJQUV0QixNQUFNLEVBQUUySSxVQUFVLEVBQUUsR0FBR3BJLGlCQUFRLEVBQ3pCcUksa0JBQWtCRixhQUFhLEdBQUc7SUFFeENBLGNBQWNFLGdCQUFnQmpGLEdBQUcsQ0FBQyxDQUFDa0Y7UUFDakMsTUFBTTdJLE9BQU82SSxnQkFDUEMsYUFBYUgsV0FBV25JLFFBQVEsQ0FBQ1IsTUFBTUM7UUFFN0MsT0FBTzZJO0lBQ1Q7SUFFQSxPQUFPSjtBQUNUO0FBRU8sU0FBU2hQLG9CQUFvQnNHLElBQUksRUFBRUMsT0FBTztJQUMvQyxJQUFJLEVBQUU4SSxXQUFXLEVBQUUsR0FBRy9JO0lBRXRCLE1BQU0sRUFBRWdKLFVBQVUsRUFBRSxHQUFHekksaUJBQVEsRUFDN0IwSSxrQkFBa0JGLGFBQWEsR0FBRztJQUVwQ0EsY0FBY0UsZ0JBQWdCdEYsR0FBRyxDQUFDLENBQUN1RjtRQUNqQyxNQUFNbEosT0FBT2tKLGdCQUNQQyxhQUFhSCxXQUFXeEksUUFBUSxDQUFDUixNQUFNQztRQUU3QyxPQUFPa0o7SUFDVDtJQUVBLE9BQU9KO0FBQ1Q7QUFFTyxTQUFTdEoscUJBQXFCTyxJQUFJLEVBQUVDLE9BQU87SUFDaEQsSUFBSSxFQUFFbUosWUFBWSxFQUFFLEdBQUdwSjtJQUV2QixNQUFNLEVBQUVxSixVQUFVLEVBQUUsR0FBRzlJLGlCQUFRLEVBQ3pCK0ksbUJBQW1CRixjQUFjLEdBQUc7SUFFMUNBLGVBQWVFLGlCQUFpQjNGLEdBQUcsQ0FBQyxDQUFDNEY7UUFDbkMsTUFBTXZKLE9BQU91SixnQkFDUEMsYUFBYUgsV0FBVzdJLFFBQVEsQ0FBQ1IsTUFBTUM7UUFFN0MsT0FBT3VKO0lBQ1Q7SUFFQSxPQUFPSjtBQUNUO0FBRU8sU0FBU2hQLHFCQUFxQjRGLElBQUksRUFBRUMsT0FBTztJQUNoRCxJQUFJLEVBQUV3SixZQUFZLEVBQUUsR0FBR3pKO0lBRXZCLE1BQU0sRUFBRTBKLFdBQVcsRUFBRSxHQUFHbkosaUJBQVEsRUFDMUJvSixtQkFBbUJGLGNBQWMsR0FBRztJQUUxQ0EsZUFBZUUsaUJBQWlCaEcsR0FBRyxDQUFDLENBQUNpRztRQUNuQyxNQUFNNUosT0FBTzRKLGlCQUNQQyxjQUFjSCxZQUFZbEosUUFBUSxDQUFDUixNQUFNQztRQUUvQyxPQUFPNEo7SUFDVDtJQUVBLE9BQU9KO0FBQ1Q7QUFFTyxTQUFTeE4scUJBQXFCK0QsSUFBSSxFQUFFQyxPQUFPO0lBQ2hELElBQUksRUFBRTZKLFlBQVksRUFBRSxHQUFHOUo7SUFFdkIsTUFBTSxFQUFFK0osV0FBVyxFQUFFLEdBQUd4SixpQkFBUSxFQUMxQnlKLG1CQUFtQkYsY0FBYyxHQUFHO0lBRTFDQSxlQUFlRSxpQkFBaUJyRyxHQUFHLENBQUMsQ0FBQ3NHO1FBQ25DLE1BQU1qSyxPQUFPaUssaUJBQ1BDLGNBQWNILFlBQVl2SixRQUFRLENBQUNSLE1BQU1DO1FBRS9DLE9BQU9pSztJQUNUO0lBRUEsT0FBT0o7QUFDVDtBQUVPLFNBQVM5SyxxQkFBcUJnQixJQUFJLEVBQUVDLE9BQU87SUFDaEQsSUFBSSxFQUFFa0ssWUFBWSxFQUFFLEdBQUduSztJQUV2QixNQUFNLEVBQUVvSyxXQUFXLEVBQUUsR0FBRzdKLGlCQUFRLEVBQzFCOEosbUJBQW1CRixjQUFlLEdBQUc7SUFFM0NBLGVBQWVFLGlCQUFpQjFHLEdBQUcsQ0FBQyxDQUFDMkc7UUFDbkMsTUFBTXRLLE9BQU9zSyxpQkFDUEMsY0FBY0gsWUFBWTVKLFFBQVEsQ0FBQ1IsTUFBTUM7UUFFL0MsT0FBT3NLO0lBQ1Q7SUFFQSxPQUFPSjtBQUNUO0FBRU8sU0FBU3ZMLHNCQUFzQm9CLElBQUksRUFBRUMsT0FBTztJQUNqRCxJQUFJLEVBQUV1SyxhQUFhLEVBQUUsR0FBR3hLLE1BQU8sR0FBRztJQUVsQyxNQUFNeUssb0JBQW9CRCxlQUFlLEdBQUc7SUFFNUNBLGdCQUFnQkMsa0JBQWtCOUcsR0FBRyxDQUFDLENBQUMrRztRQUNyQyxNQUFNMUssT0FBTzBLLGtCQUNQQyxlQUFlaE0saUNBQWlDcUIsTUFBTUM7UUFFNUQsT0FBTzBLO0lBQ1Q7SUFFQSxPQUFPSDtBQUNUO0FBRU8sU0FBU25PLHNCQUFzQjJELElBQUksRUFBRUMsT0FBTztJQUNqRCxJQUFJLEVBQUUySyxhQUFhLEVBQUUsR0FBRzVLO0lBRXhCLE1BQU0sRUFBRXdDLFlBQVksRUFBRSxHQUFHakMsaUJBQVEsRUFDM0JzSyxvQkFBb0JELGVBQWUsR0FBRztJQUU1Q0EsZ0JBQWdCQyxrQkFBa0JsSCxHQUFHLENBQUMsQ0FBQ2xCO1FBQ3JDLE1BQU16QyxPQUFPeUMsa0JBQ1BGLGVBQWVDLGFBQWFoQyxRQUFRLENBQUNSLE1BQU1DO1FBRWpELE9BQU9zQztJQUNUO0lBRUEsT0FBT3FJO0FBQ1Q7QUFFTyxTQUFTbk8sdUJBQXVCdUQsSUFBSSxFQUFFQyxPQUFPO0lBQ2xELE1BQU15QyxpQkFBaUJ6QyxTQUFTLEdBQUc7SUFFbkMsTUFBTSxFQUFFNkssUUFBUSxFQUFFLEdBQUc5SztJQUVyQixNQUFNK0ssaUJBQWlCRCxTQUFTbkgsR0FBRyxDQUFDLENBQUMxRDtRQUNuQ0QsT0FBT0MsU0FBUyxHQUFHO1FBRW5CQSxVQUFVeUMsZ0JBQWdCLEdBQUc7UUFFN0IsTUFBTUMsZ0JBQWdCQyxlQUFhLENBQUNwQyxRQUFRLENBQUNSLE1BQU1DO1FBRW5ELE9BQU8wQyxlQUFnQixHQUFHO0lBQzVCO0lBRUEsT0FBT29JO0FBQ1Q7QUFFTyxTQUFTdFEsMEJBQTBCdUYsSUFBSSxFQUFFQyxPQUFPO0lBQ3JELElBQUksRUFBRStLLGlCQUFpQixFQUFFLEdBQUdoTDtJQUU1QixNQUFNLEVBQUVxRixRQUFRLEVBQUUsR0FBRzlFLGlCQUFRLEVBQ3ZCMEssd0JBQXdCRCxtQkFBbUIsR0FBRztJQUVwREEsb0JBQW9CQyxzQkFBc0J0SCxHQUFHLENBQUMsQ0FBQ3VIO1FBQzdDLE1BQU1sTCxPQUFPa0wsc0JBQ1AxRixXQUFXSCxTQUFTN0UsUUFBUSxDQUFDUixNQUFNQyxVQUNuQ2tMLG1CQUFtQjNGLFVBQVcsR0FBRztRQUV2QyxPQUFPMkY7SUFDVDtJQUVBLE9BQU9IO0FBQ1Q7QUFFTyxTQUFTck4sMEJBQTBCcUMsSUFBSSxFQUFFQyxPQUFPO0lBQ3JELElBQUksRUFBRW1MLGlCQUFpQixFQUFFLEdBQUdwTDtJQUU1QixNQUFNLEVBQUVxTCxnQkFBZ0IsRUFBRSxHQUFHOUssaUJBQVEsRUFDL0IrSyx3QkFBd0JGLG1CQUFtQixHQUFHO0lBRXBEQSxvQkFBb0JFLHNCQUFzQjNILEdBQUcsQ0FBQyxDQUFDNEg7UUFDN0MsTUFBTXZMLE9BQU91TCxzQkFDUEMsbUJBQW1CSCxpQkFBaUI3SyxRQUFRLENBQUNSLE1BQU1DO1FBRXpELE9BQU91TDtJQUNUO0lBRUEsT0FBT0o7QUFDVDtBQUVPLFNBQVN2UCw2QkFBNkJtRSxJQUFJLEVBQUVDLE9BQU87SUFDeEQsSUFBSSxFQUFFd0wsb0JBQW9CLEVBQUUsR0FBR3pMO0lBRS9CLE1BQU0sRUFBRTBMLG1CQUFtQixFQUFFLEdBQUduTCxpQkFBUSxFQUNsQ29MLDJCQUEyQkYsc0JBQXNCLEdBQUc7SUFFMURBLHVCQUF1QkUseUJBQXlCaEksR0FBRyxDQUFDLENBQUNpSTtRQUNuRCxNQUFNNUwsT0FBTzRMLHlCQUNQQyxzQkFBc0JILG9CQUFvQmxMLFFBQVEsQ0FBQ1IsTUFBTUM7UUFFL0QsT0FBTzRMO0lBQ1Q7SUFFQSxPQUFPSjtBQUNUO0FBRU8sU0FBU2xSLDhCQUE4QnlGLElBQUksRUFBRUMsT0FBTztJQUN6RCxJQUFJLEVBQUU2TCxxQkFBcUIsRUFBRSxHQUFHOUw7SUFFaEMsTUFBTSxFQUFFd0MsWUFBWSxFQUFFLEdBQUdqQyxpQkFBUSxFQUMzQndMLDRCQUE0QkQsdUJBQXVCLEdBQUc7SUFFNURBLHdCQUF3QkMsMEJBQTBCcEksR0FBRyxDQUFDLENBQUNxSTtRQUNyRCxNQUFNaE0sT0FBT2dNLDBCQUNQekosZUFBZUMsYUFBYWhDLFFBQVEsQ0FBQ1IsTUFBTUMsVUFDM0NnTSx1QkFBdUIxSixjQUFlLEdBQUc7UUFFL0MsT0FBTzBKO0lBQ1Q7SUFFQSxPQUFPSDtBQUNUO0FBRU8sU0FBU2xQLGVBQWVzRCxJQUFJO0lBQ2pDLE1BQU1DLFdBQVdELE1BQU8sR0FBRztJQUUzQixPQUFPQztBQUNUO0FBRU8sU0FBU2hCLGVBQWVpQixJQUFJO0lBQ2pDLE1BQU1DLFdBQVcsQUFBQ0QsU0FBUyxPQUNSQSxLQUFLOEwsTUFBTSxLQUNUO0lBRXJCLE9BQU83TDtBQUNUO0FBRU8sU0FBU1YsZUFBZWMsSUFBSTtJQUNqQyxJQUFJOEMsV0FBVztJQUVmLElBQUk5QyxTQUFTLE1BQU07UUFDakIsTUFBTTBMLFdBQVc7UUFFakI1SSxXQUFXOUMsS0FBS3lMLE1BQU0sQ0FBQ0M7SUFDekI7SUFFQSxPQUFPNUk7QUFDVDtBQUVPLFNBQVN2SSxpQkFBaUIrRixLQUFLO0lBQ3BDLE1BQU1DLFlBQVksQUFBQ0QsVUFBVSxPQUNUQSxNQUFNbUwsTUFBTSxLQUNWO0lBRXRCLE9BQU9sTDtBQUNUO0FBRU8sU0FBU3RGLGlCQUFpQmtGLEtBQUs7SUFDcEMsTUFBTUUsWUFBWUYsTUFBTXNMLE1BQU07SUFFOUIsT0FBT3BMO0FBQ1Q7QUFFTyxTQUFTaEUscUJBQXFCb0UsT0FBTztJQUMxQyxNQUFNa0wsY0FBY2xMLFNBQVUsR0FBRztJQUVqQyxPQUFPa0w7QUFDVDtBQUVPLFNBQVM3UyxzQkFBc0I4UyxPQUFPO0lBQzNDLE1BQU1DLGNBQWNELFFBQVFILE1BQU07SUFFbEMsT0FBT0k7QUFDVDtBQUVPLFNBQVN0USx1QkFBdUJtRixRQUFRO0lBQzdDLE1BQU1vTCxlQUFlLEFBQUNwTCxhQUFhLE9BQ1pBLFNBQVMrSyxNQUFNLEtBQ2I7SUFFekIsT0FBT0s7QUFDVDtBQUVPLFNBQVN2Tyx5QkFBeUI4RCxTQUFTO0lBQ2hELE1BQU1FLGdCQUFnQkYsVUFBVW9LLE1BQU07SUFFdEMsT0FBT2xLO0FBQ1Q7QUFFTyxTQUFTeEQseUJBQXlCNkMsU0FBUztJQUNoRCxNQUFNRSxnQkFBZ0IsQUFBQ0YsY0FBYyxPQUNiQSxVQUFVNkssTUFBTSxLQUNkO0lBRTFCLE9BQU8zSztBQUNUO0FBRU8sU0FBUzNHLHlCQUF5QjRHLFNBQVM7SUFDaEQsTUFBTUUsZ0JBQWdCRixVQUFVMEssTUFBTTtJQUV0QyxPQUFPeEs7QUFDVDtBQUVPLFNBQVNwRCx5QkFBeUJxRCxTQUFTO0lBQ2hELE1BQU1FLGdCQUFnQixBQUFDRixjQUFjLE9BQ2JBLFVBQVV1SyxNQUFNLEtBQ2Q7SUFFMUIsT0FBT3JLO0FBQ1Q7QUFFTyxTQUFTdkcsMkJBQTJCMkcsVUFBVTtJQUNuRCxNQUFNQyxpQkFBaUJELFlBQWEsR0FBRztJQUV2QyxPQUFPQztBQUNUO0FBRU8sU0FBU2pJLDJCQUEyQmtJLFVBQVU7SUFDbkQsTUFBTUUsaUJBQWlCRixXQUFXK0osTUFBTTtJQUV4QyxPQUFPN0o7QUFDVDtBQUVPLFNBQVN2RSw2QkFBNkJ3RSxXQUFXO0lBQ3RELE1BQU1rSyxrQkFBa0JsSyxhQUFjLEdBQUc7SUFFekMsT0FBT2tLO0FBQ1Q7QUFFTyxTQUFTcFEsK0JBQStCbUcsWUFBWTtJQUN6RCxNQUFNRSxtQkFBbUJGLGFBQWEySixNQUFNO0lBRTVDLE9BQU96SjtBQUNUO0FBRU8sU0FBU25GLGlDQUFpQ3VGLGFBQWE7SUFDNUQsTUFBTUUsb0JBQW9CLEFBQUNGLGtCQUFrQixPQUNqQkEsY0FBY3FKLE1BQU0sS0FDbEI7SUFFOUIsT0FBT25KO0FBQ1Q7QUFFTyxTQUFTdkcsaUNBQWlDbUcsYUFBYTtJQUM1RCxNQUFNOEosb0JBQW9COUosY0FBY3VKLE1BQU07SUFFOUMsT0FBT087QUFDVDtBQUVPLFNBQVNqUCwyQ0FBMkN3RixrQkFBa0I7SUFDM0UsTUFBTUUseUJBQXlCRixtQkFBbUJrSixNQUFNO0lBRXhELE9BQU9oSjtBQUNUO0FBRU8sU0FBUzVJLCtDQUErQzJSLG9CQUFvQjtJQUNqRixNQUFNRCwyQkFBMkJDLHFCQUFxQkMsTUFBTTtJQUU1RCxPQUFPRjtBQUNUO0FBRU8sU0FBU3JOLGlDQUFpQ3FCLElBQUksRUFBRUMsT0FBTztJQUM1RCxNQUFNLEVBQUV5TSxnQkFBZ0IsRUFBRUMsaUJBQWlCLEVBQUVDLHFCQUFxQixFQUFFQyxxQkFBcUIsRUFBRSxHQUFHdE0saUJBQVEsRUFDaEdvSyxlQUFlK0IsaUJBQWlCbE0sUUFBUSxDQUFDUixNQUFNQyxZQUNoQzBNLGtCQUFrQm5NLFFBQVEsQ0FBQ1IsTUFBTUMsWUFDakMyTSxzQkFBc0JwTSxRQUFRLENBQUNSLE1BQU1DLFlBQ3JDNE0sc0JBQXNCck0sUUFBUSxDQUFDUixNQUFNQztJQUUxRCxPQUFPMEs7QUFDVDtBQUVPLFNBQVN0TCxpQkFBaUJvRSxLQUFLO0lBQ3BDLE1BQU1DLFlBQVlELE1BQU1FLEdBQUcsQ0FBQyxDQUFDdkQ7UUFDM0IsTUFBTUMsV0FBV0QsS0FBSzhMLE1BQU07UUFFNUIsT0FBTzdMO0lBQ1Q7SUFFQSxPQUFPcUQ7QUFDVDtBQUVPLFNBQVM3RCxpQkFBaUJzRCxLQUFLO0lBQ3BDLE1BQU1DLFlBQVlELE1BQU1RLEdBQUcsQ0FBQyxDQUFDbEQ7UUFDM0IsTUFBTThDLFdBQVc5QyxLQUFLeUwsTUFBTTtRQUU1QixPQUFPM0k7SUFDVDtJQUVBLE9BQU9IO0FBQ1Q7QUFFTyxTQUFTaEYsaUJBQWlCd0YsS0FBSztJQUNwQyxNQUFNRSxZQUFZRixNQUFNRCxHQUFHLENBQUMsQ0FBQ0s7UUFDM0IsTUFBTUQsV0FBV0MsS0FBS2tJLE1BQU07UUFFNUIsT0FBT25JO0lBQ1Q7SUFFQSxPQUFPRDtBQUNUO0FBRU8sU0FBU2xJLG1CQUFtQnVJLE1BQU07SUFDdkMsTUFBTUMsYUFBYUQsT0FBT1IsR0FBRyxDQUFDLENBQUMvQztRQUM3QixNQUFNRSxZQUFZRixNQUFNc0wsTUFBTTtRQUU5QixPQUFPcEw7SUFDVDtJQUVBLE9BQU9zRDtBQUNUO0FBRU8sU0FBU2xKLG1CQUFtQitJLE1BQU07SUFDdkMsTUFBTUMsYUFBYUQsT0FBT04sR0FBRyxDQUFDLENBQUM1QztRQUM3QixNQUFNQyxZQUFZRCxNQUFNbUwsTUFBTTtRQUU5QixPQUFPbEw7SUFDVDtJQUVBLE9BQU9rRDtBQUNUO0FBRU8sU0FBU3JLLG1CQUFtQndLLE1BQU07SUFDdkMsTUFBTUUsYUFBYUYsT0FBT1YsR0FBRyxDQUFDLENBQUNjO1FBQzdCLE1BQU1ELFlBQVlDLE1BQU15SCxNQUFNO1FBRTlCLE9BQU8xSDtJQUNUO0lBRUEsT0FBT0Q7QUFDVDtBQUVPLFNBQVNuSCx1QkFBdUJzSCxRQUFRO0lBQzdDLE1BQU1FLGVBQWVGLFNBQVNmLEdBQUcsQ0FBQyxDQUFDbUI7UUFDakMsTUFBTUQsY0FBY0MsUUFBUW9ILE1BQU07UUFFbEMsT0FBT3JIO0lBQ1Q7SUFFQSxPQUFPRDtBQUNUO0FBRU8sU0FBU3JGLHVCQUF1QndGLFFBQVE7SUFDN0MsTUFBTUUsZUFBZUYsU0FBU3BCLEdBQUcsQ0FBQyxDQUFDd0I7UUFDakMsTUFBTUQsY0FBY0MsUUFBUStHLE1BQU07UUFFbEMsT0FBT2hIO0lBQ1Q7SUFFQSxPQUFPRDtBQUNUO0FBRU8sU0FBU2xGLHlCQUF5QnFGLFNBQVM7SUFDaEQsTUFBTUUsZ0JBQWdCRixVQUFVekIsR0FBRyxDQUFDLENBQUM2QjtRQUNuQyxNQUFNRCxlQUFlQyxTQUFTMEcsTUFBTTtRQUVwQyxPQUFPM0c7SUFDVDtJQUVBLE9BQU9EO0FBQ1Q7QUFFTyxTQUFTbEssMkJBQTJCb0wsVUFBVTtJQUNuRCxNQUFNRSxpQkFBaUJGLFdBQVc3QyxHQUFHLENBQUMsQ0FBQ2lEO1FBQ3JDLE1BQU1ELGlCQUFpQkMsV0FBV3NGLE1BQU07UUFFeEMsT0FBT3ZGO0lBQ1Q7SUFFQSxPQUFPRDtBQUNUO0FBRU8sU0FBU3hKLDJCQUEyQjRQLFVBQVU7SUFDbkQsTUFBTUMsaUJBQWlCRCxZQUFhLEdBQUc7SUFFdkMsT0FBT0M7QUFDVDtBQUVPLFNBQVNoTywyQkFBMkJxSCxVQUFVO0lBQ25ELE1BQU1DLGlCQUFpQkQsV0FBV3pDLEdBQUcsQ0FBQyxDQUFDNEM7UUFDL0IsTUFBTTRGLFdBQVcsTUFDWDdGLGdCQUFnQkMsVUFBVTJGLE1BQU0sQ0FBQ0M7UUFFdkMsT0FBTzdGO0lBQ1Q7SUFFTixPQUFPRDtBQUNUO0FBRU8sU0FBU3JKLDJCQUEyQjZKLFVBQVU7SUFDbkQsTUFBTUUsaUJBQWlCRixXQUFXbEQsR0FBRyxDQUFDLENBQUNzRDtRQUNyQyxNQUFNRCxnQkFBZ0JDLFVBQVVpRixNQUFNO1FBRXRDLE9BQU9sRjtJQUNUO0lBRUEsT0FBT0Q7QUFDVDtBQUVPLFNBQVNySiwyQkFBMkIrSCxVQUFVO0lBQ25ELE1BQU1FLGlCQUFpQkYsV0FBVzlCLEdBQUcsQ0FBQyxDQUFDa0M7UUFDckMsTUFBTUQsZUFBZUMsU0FBU3FHLE1BQU07UUFFcEMsT0FBT3RHO0lBQ1Q7SUFFQSxPQUFPRDtBQUNUO0FBRU8sU0FBU25LLDJCQUEyQjBMLFVBQVU7SUFDbkQsTUFBTUUsaUJBQWlCRixXQUFXdkQsR0FBRyxDQUFDLENBQUMyRDtRQUNyQyxNQUFNRCxnQkFBZ0JDLFVBQVU0RSxNQUFNO1FBRXRDLE9BQU83RTtJQUNUO0lBRUEsT0FBT0Q7QUFDVDtBQUVPLFNBQVN0TSwyQkFBMkJnTCxVQUFVO0lBQ25ELE1BQU1FLGlCQUFpQkYsV0FBV25DLEdBQUcsQ0FBQyxDQUFDdUM7UUFDckMsTUFBTUQsZUFBZUMsU0FBU2dHLE1BQU07UUFFcEMsT0FBT2pHO0lBQ1Q7SUFFQSxPQUFPRDtBQUNUO0FBRU8sU0FBU3RILDJCQUEyQjZJLFVBQVU7SUFDbkQsTUFBTUMsaUJBQWlCRCxXQUFXNUQsR0FBRyxDQUFDLENBQUN0QztRQUNyQyxNQUFNRSxnQkFBZ0JGLFVBQVU2SyxNQUFNO1FBRXRDLE9BQU8zSztJQUNUO0lBRUEsT0FBT2lHO0FBQ1Q7QUFFTyxTQUFTL04sMkJBQTJCZ08sVUFBVTtJQUNuRCxNQUFNTyxpQkFBaUJQLFdBQVc5RCxHQUFHLENBQUMsQ0FBQ3VFO1FBQ3JDLE1BQU1ELGdCQUFnQkMsVUFBVWdFLE1BQU07UUFFdEMsT0FBT2pFO0lBQ1Q7SUFFQSxPQUFPRDtBQUNUO0FBRU8sU0FBUzlKLDJCQUEyQmlLLFVBQVU7SUFDbkQsTUFBTUMsaUJBQWlCRCxXQUFXeEUsR0FBRyxDQUFDLENBQUM3QjtRQUNyQyxNQUFNRSxnQkFBZ0JGLFVBQVVvSyxNQUFNO1FBRXRDLE9BQU9sSztJQUNUO0lBRUEsT0FBT29HO0FBQ1Q7QUFFTyxTQUFTak8sNkJBQTZCa08sV0FBVztJQUN0RCxNQUFNRSxrQkFBa0JGLFlBQVkxRSxHQUFHLENBQUMsQ0FBQzhFO1FBQ3ZDLE1BQU1ELGlCQUFpQkMsV0FBV3lELE1BQU07UUFFeEMsT0FBTzFEO0lBQ1Q7SUFFQSxPQUFPRDtBQUNUO0FBRU8sU0FBU3hPLDZCQUE2QjJPLFdBQVc7SUFDdEQsTUFBTUUsa0JBQWtCRixZQUFZL0UsR0FBRyxDQUFDLENBQUNtRjtRQUN2QyxNQUFNRCxpQkFBaUJDLFdBQVdvRCxNQUFNO1FBRXhDLE9BQU9yRDtJQUNUO0lBRUEsT0FBT0Q7QUFDVDtBQUVPLFNBQVNqUCw2QkFBNkJvUCxXQUFXO0lBQ3RELE1BQU1FLGtCQUFrQkYsWUFBWXBGLEdBQUcsQ0FBQyxDQUFDd0Y7UUFDdkMsTUFBTUQsaUJBQWlCQyxXQUFXK0MsTUFBTTtRQUV4QyxPQUFPaEQ7SUFDVDtJQUVBLE9BQU9EO0FBQ1Q7QUFFTyxTQUFTaEssK0JBQStCa0wsWUFBWTtJQUN6RCxNQUFNRSxtQkFBbUJGLGFBQWF4RyxHQUFHLENBQUMsQ0FBQzRHO1FBQ3pDLE1BQU1ELGtCQUFrQkMsWUFBWTJCLE1BQU07UUFFMUMsT0FBTzVCO0lBQ1Q7SUFFQSxPQUFPRDtBQUNUO0FBRU8sU0FBU2hRLCtCQUErQm9QLFlBQVk7SUFDekQsTUFBTUUsbUJBQW1CRixhQUFhOUYsR0FBRyxDQUFDLENBQUNrRztRQUN6QyxNQUFNRCxrQkFBa0JDLFlBQVlxQyxNQUFNO1FBRTFDLE9BQU90QztJQUNUO0lBRUEsT0FBT0Q7QUFDVDtBQUVPLFNBQVN6TiwrQkFBK0I0TixZQUFZO0lBQ3pELE1BQU1FLG1CQUFtQkYsYUFBYW5HLEdBQUcsQ0FBQyxDQUFDdUc7UUFDekMsTUFBTUQsa0JBQWtCQyxZQUFZZ0MsTUFBTTtRQUUxQyxPQUFPakM7SUFDVDtJQUVBLE9BQU9EO0FBQ1Q7QUFFTyxTQUFTdEssK0JBQStCMEosWUFBWTtJQUN6RCxNQUFNRSxtQkFBbUJGLGFBQWF6RixHQUFHLENBQUMsQ0FBQzZGO1FBQ3pDLE1BQU1ELGlCQUFpQkMsV0FBVzBDLE1BQU07UUFFeEMsT0FBTzNDO0lBQ1Q7SUFFQSxPQUFPRDtBQUNUO0FBRU8sU0FBU3pLLGlDQUFpQzJMLGFBQWE7SUFDNUQsTUFBTUMsb0JBQW9CRCxjQUFjN0csR0FBRyxDQUFDLENBQUNnSDtRQUMzQyxNQUFNRCxtQkFBbUJDLGFBQWF1QixNQUFNO1FBRTVDLE9BQU94QjtJQUNUO0lBRUEsT0FBT0Q7QUFDVDtBQUVPLFNBQVNuTyxpQ0FBaUNzTyxhQUFhO0lBQzVELE1BQU1DLG9CQUFvQkQsY0FBY2pILEdBQUcsQ0FBQyxDQUFDcEI7UUFDM0MsTUFBTUUsbUJBQW1CRixhQUFhMkosTUFBTTtRQUU1QyxPQUFPeko7SUFDVDtJQUVBLE9BQU9vSTtBQUNUO0FBRU8sU0FBU25PLG1DQUFtQ3FPLGNBQWM7SUFDL0QsTUFBTWlDLHFCQUFxQmpDLGVBQWVwSCxHQUFHLENBQUMsQ0FBQ2hCO1FBQzdDLE1BQU04SixvQkFBb0I5SixjQUFjdUosTUFBTTtRQUU5QyxPQUFPTztJQUNUO0lBRUEsT0FBT087QUFDVDtBQUVPLFNBQVNwUCx5Q0FBeUN3TixpQkFBaUI7SUFDeEUsTUFBTUUsd0JBQXdCRixrQkFBa0J6SCxHQUFHLENBQUMsQ0FBQzZIO1FBQ25ELE1BQU1ELHVCQUF1QkMsaUJBQWlCVSxNQUFNO1FBRXBELE9BQU9YO0lBQ1Q7SUFFQSxPQUFPRDtBQUNUO0FBRU8sU0FBUzVRLHlDQUF5Q3NRLGlCQUFpQjtJQUN4RSxNQUFNQyx3QkFBd0JELGtCQUFrQnJILEdBQUcsQ0FBQyxDQUFDd0g7UUFDbkQsTUFBTUQsdUJBQXVCQyxpQkFBaUJlLE1BQU07UUFFcEQsT0FBT2hCO0lBQ1Q7SUFFQSxPQUFPRDtBQUNUO0FBRU8sU0FBU25QLCtDQUErQzJQLG9CQUFvQjtJQUNqRixNQUFNRSwyQkFBMkJGLHFCQUFxQjlILEdBQUcsQ0FBQyxDQUFDa0k7UUFDekQsTUFBTUQsMEJBQTBCQyxvQkFBb0JLLE1BQU07UUFFMUQsT0FBT047SUFDVDtJQUVBLE9BQU9EO0FBQ1Q7QUFFTyxTQUFTblIsaURBQWlEc1IscUJBQXFCO0lBQ3BGLE1BQU1DLDRCQUE0QkQsc0JBQXNCbkksR0FBRyxDQUFDLENBQUNzSTtRQUMzRCxNQUFNRCwyQkFBMkJDLHFCQUFxQkMsTUFBTTtRQUU1RCxPQUFPRjtJQUNUO0lBRUEsT0FBT0Q7QUFDVDtBQUVBLFNBQVNwTCxlQUFlVCxJQUFJLEVBQUVELE9BQU87SUFDbkMsTUFBTWdOLFdBQVcvTSxNQUNYTyxPQUFPUixRQUFRaU4sa0JBQWtCLENBQUNEO0lBRXhDLE9BQU94TTtBQUNUO0FBRUEsU0FBU1csbUJBQW1CbEIsSUFBSSxFQUFFRCxPQUFPO0lBQ3ZDLE1BQU1rTixlQUFlak4sTUFDZmlCLFdBQVdsQixRQUFRbU4sMEJBQTBCLENBQUNEO0lBRXBELE9BQU9oTTtBQUNUIn0=
|
package/package.json
CHANGED
|
@@ -552,8 +552,8 @@ export default class NominalFileContext extends FileContext {
|
|
|
552
552
|
return topLevelMetaAssertions;
|
|
553
553
|
}
|
|
554
554
|
|
|
555
|
-
findTypeByTypeName(typeName) {
|
|
556
|
-
let types = this.getTypes();
|
|
555
|
+
findTypeByTypeName(typeName, includeRelease = true) {
|
|
556
|
+
let types = this.getTypes(includeRelease);
|
|
557
557
|
|
|
558
558
|
const baseType = baseTypeFromNothing();
|
|
559
559
|
|
|
@@ -758,8 +758,8 @@ export default class NominalFileContext extends FileContext {
|
|
|
758
758
|
return labelPresent;
|
|
759
759
|
}
|
|
760
760
|
|
|
761
|
-
isTypePresentByTypeName(typeName) {
|
|
762
|
-
const type = this.findTypeByTypeName(typeName),
|
|
761
|
+
isTypePresentByTypeName(typeName, includeRelease = true) {
|
|
762
|
+
const type = this.findTypeByTypeName(typeName, includeRelease),
|
|
763
763
|
typePresent = (type !== null);
|
|
764
764
|
|
|
765
765
|
return typePresent;
|
|
@@ -105,7 +105,8 @@ export default define(class ComplexTypeDeclaration extends Declaration {
|
|
|
105
105
|
context.trace(`Verifying the '${complexTypeDeclarationString}' complex type declaration's '${typeString}' type...`);
|
|
106
106
|
|
|
107
107
|
const typeName = this.type.getName(),
|
|
108
|
-
|
|
108
|
+
includeRelease = false,
|
|
109
|
+
typePresent = context.isTypePresentByTypeName(typeName, includeRelease);
|
|
109
110
|
|
|
110
111
|
if (!typePresent) {
|
|
111
112
|
const prefixedTypeName = typeName, ///
|
|
@@ -129,7 +130,7 @@ export default define(class ComplexTypeDeclaration extends Declaration {
|
|
|
129
130
|
return typeVerifies;
|
|
130
131
|
}
|
|
131
132
|
|
|
132
|
-
verifySuperType(
|
|
133
|
+
verifySuperType(superType, superTypes, context) {
|
|
133
134
|
let superTypeVerifies = false;
|
|
134
135
|
|
|
135
136
|
const superTypeString = superType.getString(),
|
|
@@ -171,7 +172,7 @@ export default define(class ComplexTypeDeclaration extends Declaration {
|
|
|
171
172
|
context.trace(`Verifying the '${complexTypeDeclarationString}' complex type declaration's super-types...`);
|
|
172
173
|
|
|
173
174
|
superTypesVerify = this.superTypes.every((superType) => {
|
|
174
|
-
const superTypeVerifies = this.verifySuperType(
|
|
175
|
+
const superTypeVerifies = this.verifySuperType(superType, superTypes, context);
|
|
175
176
|
|
|
176
177
|
if (superTypeVerifies) {
|
|
177
178
|
return true;
|
|
@@ -54,6 +54,13 @@ export default define(class SimpleTypeDeclaration extends Declaration {
|
|
|
54
54
|
const propertiesVerifies = this.verifyProperties(context);
|
|
55
55
|
|
|
56
56
|
if (propertiesVerifies) {
|
|
57
|
+
const typePrefix = context.getTypePrefix(),
|
|
58
|
+
prefixName = typePrefix.getPrefixName();
|
|
59
|
+
|
|
60
|
+
this.type.setProvisional(this.provisional);
|
|
61
|
+
|
|
62
|
+
this.type.setPrefixName(prefixName);
|
|
63
|
+
|
|
57
64
|
context.addType(this.type);
|
|
58
65
|
|
|
59
66
|
verifies = true;
|
|
@@ -85,8 +92,6 @@ export default define(class SimpleTypeDeclaration extends Declaration {
|
|
|
85
92
|
typePresent = context.isTypePresentByPrefixedTypeName(prefixedTypeName);
|
|
86
93
|
|
|
87
94
|
if (!typePresent) {
|
|
88
|
-
this.type.setProvisional(this.provisional);
|
|
89
|
-
|
|
90
95
|
typeVerifies = true;
|
|
91
96
|
} else {
|
|
92
97
|
context.debug(`The '${typeString}' type is already present.`);
|
|
@@ -102,7 +107,7 @@ export default define(class SimpleTypeDeclaration extends Declaration {
|
|
|
102
107
|
return typeVerifies;
|
|
103
108
|
}
|
|
104
109
|
|
|
105
|
-
verifySuperType(
|
|
110
|
+
verifySuperType(superType, superTypes, context) {
|
|
106
111
|
let superTypeVerifies = false;
|
|
107
112
|
|
|
108
113
|
const superTypeString = superType.getString(),
|
|
@@ -144,7 +149,7 @@ export default define(class SimpleTypeDeclaration extends Declaration {
|
|
|
144
149
|
context.trace(`Verifying the '${simpleTypeDeclarationString}' simple type declaration's super-types...`);
|
|
145
150
|
|
|
146
151
|
superTypesVerify = this.superTypes.every((superType) => {
|
|
147
|
-
const superTypeVerifies = this.verifySuperType(
|
|
152
|
+
const superTypeVerifies = this.verifySuperType(superType, superTypes, context);
|
|
148
153
|
|
|
149
154
|
if (superTypeVerifies) {
|
|
150
155
|
return true;
|
|
@@ -31,7 +31,8 @@ export default define(class TypePrefixDeclaration extends Declaration {
|
|
|
31
31
|
|
|
32
32
|
context.trace(`Verifying the '${typePrefixDeclarationString}' type prefix declaration...`);
|
|
33
33
|
|
|
34
|
-
const
|
|
34
|
+
const includeRelease = false,
|
|
35
|
+
types = context.getTypes(includeRelease),
|
|
35
36
|
typesLength = types.length;
|
|
36
37
|
|
|
37
38
|
if (typesLength === 0) {
|
package/src/element/rule.js
CHANGED
|
@@ -95,7 +95,7 @@ export default define(class Rule extends Element {
|
|
|
95
95
|
return verifies;
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
-
verifyLabel(
|
|
98
|
+
verifyLabel(label, context) {
|
|
99
99
|
let labelVerifies;
|
|
100
100
|
|
|
101
101
|
const ruleString = this.getString(), ///
|
|
@@ -120,7 +120,7 @@ export default define(class Rule extends Element {
|
|
|
120
120
|
context.trace(`Verifying the '${ruleString}' rule's labels...`);
|
|
121
121
|
|
|
122
122
|
labelsVerify = this.labels.every((label) => {
|
|
123
|
-
const labelVerifies = this.verifyLabel(
|
|
123
|
+
const labelVerifies = this.verifyLabel(label, context);
|
|
124
124
|
|
|
125
125
|
if (labelVerifies) {
|
|
126
126
|
return true;
|
package/src/element/type.js
CHANGED
|
@@ -6,9 +6,16 @@ import { arrayUtilities } from "necessary";
|
|
|
6
6
|
import { define } from "../elements";
|
|
7
7
|
import { instantiate } from "../utilities/context";
|
|
8
8
|
import { instantiateType } from "../process/instantiate";
|
|
9
|
+
import { nameFromTypeNode } from "../utilities/element";
|
|
9
10
|
import { baseTypeFromNothing } from "../utilities/type";
|
|
10
|
-
import {
|
|
11
|
-
|
|
11
|
+
import { propertiesFromJSON,
|
|
12
|
+
prefixNameFromJSON,
|
|
13
|
+
superTypesFromJSON,
|
|
14
|
+
provisionalFromJSON,
|
|
15
|
+
prefixnameToPrevixNameJSON,
|
|
16
|
+
superTypesToSuperTypesJSON,
|
|
17
|
+
propertiesToPropertiesJSON,
|
|
18
|
+
provisionalToProvisionalJSON } from "../utilities/json";
|
|
12
19
|
|
|
13
20
|
const { push, first } = arrayUtilities;
|
|
14
21
|
|
|
@@ -229,8 +236,7 @@ export default define(class Type extends Element {
|
|
|
229
236
|
}
|
|
230
237
|
|
|
231
238
|
compareTypeName(typeName) {
|
|
232
|
-
const
|
|
233
|
-
nameTypeName = (name === typeName),
|
|
239
|
+
const nameTypeName = (this.name === typeName),
|
|
234
240
|
comparesToTypeName = nameTypeName; ///
|
|
235
241
|
|
|
236
242
|
return comparesToTypeName;
|
|
@@ -254,8 +260,7 @@ export default define(class Type extends Element {
|
|
|
254
260
|
let comparesToNominalTypeName = false;
|
|
255
261
|
|
|
256
262
|
if (!comparesToNominalTypeName) {
|
|
257
|
-
const
|
|
258
|
-
nominalTypeNameName = (nominalTypeName === name);
|
|
263
|
+
const nominalTypeNameName = (this.name === nominalTypeName);
|
|
259
264
|
|
|
260
265
|
if (nominalTypeNameName) {
|
|
261
266
|
comparesToNominalTypeName = true;
|
|
@@ -304,14 +309,17 @@ export default define(class Type extends Element {
|
|
|
304
309
|
};
|
|
305
310
|
|
|
306
311
|
if (!abridged) {
|
|
307
|
-
const
|
|
312
|
+
const prefixNameJSON = prefixnameToPrevixNameJSON(this.prefixName),
|
|
313
|
+
superTypesJSON = superTypesToSuperTypesJSON(this.superTypes),
|
|
308
314
|
propertiesJSON = propertiesToPropertiesJSON(this.properties),
|
|
309
315
|
provisinoalJSOM = provisionalToProvisionalJSON(this.provisional),
|
|
316
|
+
prefixName = prefixNameJSON, ///
|
|
310
317
|
superTypes = superTypesJSON, ///
|
|
311
318
|
properties = propertiesJSON, ///
|
|
312
319
|
provisional = provisinoalJSOM; ///
|
|
313
320
|
|
|
314
321
|
Object.assign(json, {
|
|
322
|
+
prefixName,
|
|
315
323
|
superTypes,
|
|
316
324
|
properties,
|
|
317
325
|
provisional
|
|
@@ -329,7 +337,7 @@ export default define(class Type extends Element {
|
|
|
329
337
|
typeNode = instantiateType(string, context),
|
|
330
338
|
node = typeNode, ///
|
|
331
339
|
name = nameFromTypeNode(typeNode, context),
|
|
332
|
-
prefixName =
|
|
340
|
+
prefixName = prefixNameFromJSON(json, context),
|
|
333
341
|
superTypes = superTypesFromJSON(json, context),
|
|
334
342
|
properties = propertiesFromJSON(json, context),
|
|
335
343
|
provisional = provisionalFromJSON(json);
|
|
@@ -25,6 +25,12 @@ export default define(class TypePrefix extends Element {
|
|
|
25
25
|
return typePrefixNode;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
+
getPrefixName() {
|
|
29
|
+
const prefixName = this.name; ///
|
|
30
|
+
|
|
31
|
+
return prefixName;
|
|
32
|
+
}
|
|
33
|
+
|
|
28
34
|
compareTypePrefixName(typePrefixName) {
|
|
29
35
|
const comparesToTypePrefixName = (this.name === typePrefixName);
|
|
30
36
|
|