single-scripture-rcl 3.4.17 → 3.4.20-beta.16
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.
|
@@ -213,6 +213,7 @@ export default function ScriptureCard(_ref2) {
|
|
|
213
213
|
checkForEditBranch: 0,
|
|
214
214
|
currentReference: null,
|
|
215
215
|
editBranchReady: false,
|
|
216
|
+
editVerse: null,
|
|
216
217
|
haveUnsavedChanges: false,
|
|
217
218
|
lastSelectedQuote: null,
|
|
218
219
|
readyForFetch: false,
|
|
@@ -239,6 +240,7 @@ export default function ScriptureCard(_ref2) {
|
|
|
239
240
|
var checkForEditBranch = state.checkForEditBranch,
|
|
240
241
|
currentReference = state.currentReference,
|
|
241
242
|
editBranchReady = state.editBranchReady,
|
|
243
|
+
editVerse = state.editVerse,
|
|
242
244
|
haveUnsavedChanges = state.haveUnsavedChanges,
|
|
243
245
|
lastSelectedQuote = state.lastSelectedQuote,
|
|
244
246
|
readyForFetch = state.readyForFetch,
|
|
@@ -450,7 +452,8 @@ export default function ScriptureCard(_ref2) {
|
|
|
450
452
|
if (!isEqual(reference, currentReference)) {
|
|
451
453
|
// console.log(`ScriptureCard reference changed`, reference)
|
|
452
454
|
setState({
|
|
453
|
-
currentReference: reference
|
|
455
|
+
currentReference: reference,
|
|
456
|
+
editVerse: null
|
|
454
457
|
});
|
|
455
458
|
}
|
|
456
459
|
}, [reference]);
|
|
@@ -505,6 +508,27 @@ export default function ScriptureCard(_ref2) {
|
|
|
505
508
|
errorMessage: urlError
|
|
506
509
|
}));
|
|
507
510
|
}
|
|
511
|
+
|
|
512
|
+
/**
|
|
513
|
+
* set edit state for specific verse
|
|
514
|
+
* @param {string} verseRef - reference of verse being edited or finished edit
|
|
515
|
+
* @param {boolean} editing - true when editing
|
|
516
|
+
*/
|
|
517
|
+
function setEditVerse(verseRef, editing) {
|
|
518
|
+
if (editing && verseRef !== editVerse) {
|
|
519
|
+
// if we need to set flag that we are editing this verse
|
|
520
|
+
setState({
|
|
521
|
+
editVerse: verseRef
|
|
522
|
+
});
|
|
523
|
+
} else if (!editing && verseRef === editVerse) {
|
|
524
|
+
// clear edit flag if it is for current edit verse
|
|
525
|
+
setState({
|
|
526
|
+
editVerse: null
|
|
527
|
+
});
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
var disableChangeButtons = editVerse; // we don't want to allow clicking on change buttons while editing
|
|
531
|
+
|
|
508
532
|
function onMenuClose() {
|
|
509
533
|
// console.log(`onMenuClose()`)
|
|
510
534
|
setState({
|
|
@@ -1309,6 +1333,7 @@ export default function ScriptureCard(_ref2) {
|
|
|
1309
1333
|
// @ts-ignore
|
|
1310
1334
|
,
|
|
1311
1335
|
scriptureAlignmentEditConfig: _scriptureAlignmentEditConfig,
|
|
1336
|
+
setEditVerse: setEditVerse,
|
|
1312
1337
|
setWordAlignerStatus: setWordAlignerStatus,
|
|
1313
1338
|
server: server,
|
|
1314
1339
|
translate: translate,
|
|
@@ -1317,10 +1342,12 @@ export default function ScriptureCard(_ref2) {
|
|
|
1317
1342
|
});
|
|
1318
1343
|
var handleAlignButtonClick = function handleAlignButtonClick() {
|
|
1319
1344
|
if ((versesForRef === null || versesForRef === void 0 ? void 0 : versesForRef.length) > 1) {
|
|
1345
|
+
// if there are multiple verses shown in card, need to prompt user for which verse to align
|
|
1320
1346
|
setState({
|
|
1321
1347
|
showAlignmentPopup: true
|
|
1322
1348
|
});
|
|
1323
1349
|
} else if ((versesForRef === null || versesForRef === void 0 ? void 0 : versesForRef.length) === 1) {
|
|
1350
|
+
// if only one verse is shown, then edit that verse
|
|
1324
1351
|
setState({
|
|
1325
1352
|
verseSelectedForAlignment: versesForRef[0]
|
|
1326
1353
|
});
|
|
@@ -1346,9 +1373,10 @@ export default function ScriptureCard(_ref2) {
|
|
|
1346
1373
|
});
|
|
1347
1374
|
alignButtonText = 'Alignment is Valid';
|
|
1348
1375
|
} else {
|
|
1376
|
+
var color = disableChangeButtons ? '#BBB' : '#000'; // gray out button if disabled
|
|
1349
1377
|
alignIcon = /*#__PURE__*/React.createElement(RxLinkBreak2, {
|
|
1350
1378
|
id: "invalid_alignment_icon_".concat(resourceId),
|
|
1351
|
-
color:
|
|
1379
|
+
color: color
|
|
1352
1380
|
});
|
|
1353
1381
|
alignButtonText = 'Alignment is Invalid';
|
|
1354
1382
|
}
|
|
@@ -1356,7 +1384,7 @@ export default function ScriptureCard(_ref2) {
|
|
|
1356
1384
|
newItems.push( /*#__PURE__*/React.createElement(IconButton, {
|
|
1357
1385
|
id: "alignment_icon_".concat(resourceId),
|
|
1358
1386
|
key: "checking-button",
|
|
1359
|
-
onClick: handleAlignButtonClick,
|
|
1387
|
+
onClick: disableChangeButtons ? null : handleAlignButtonClick,
|
|
1360
1388
|
title: alignButtonText,
|
|
1361
1389
|
"aria-label": alignButtonText,
|
|
1362
1390
|
style: {
|
|
@@ -1411,7 +1439,8 @@ export default function ScriptureCard(_ref2) {
|
|
|
1411
1439
|
return onMinimize(id, scriptureTitle);
|
|
1412
1440
|
} : null,
|
|
1413
1441
|
editable: enableEdit || enableAlignment,
|
|
1414
|
-
saved: startSave || !haveUnsavedChanges,
|
|
1442
|
+
saved: disableChangeButtons || startSave || !haveUnsavedChanges // gray out save button if disabled, if saving, or if no unsaved changes
|
|
1443
|
+
,
|
|
1415
1444
|
onSaveEdit: function onSaveEdit() {
|
|
1416
1445
|
return setState({
|
|
1417
1446
|
saveClicked: true
|
|
@@ -1526,4 +1555,4 @@ ScriptureCard.propTypes = {
|
|
|
1526
1555
|
/** use method for using local storage specific for user */
|
|
1527
1556
|
useUserLocalStorage: PropTypes.func.isRequired
|
|
1528
1557
|
};
|
|
1529
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVnZW5lcmF0b3JSdW50aW1lIiwiZSIsInQiLCJyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiU3ltYm9sIiwiYSIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiZ2VuIiwicmVqZWN0IiwiX25leHQiLCJfdGhyb3ciLCJrZXkiLCJpbmZvIiwiZXJyb3IiLCJfYXN5bmNUb0dlbmVyYXRvciIsImZuIiwic2VsZiIsImFyZ3MiLCJhcmd1bWVudHMiLCJhcHBseSIsImVyciIsInVuZGVmaW5lZCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiYWxsb3dBcnJheUxpa2UiLCJpdCIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIkYiLCJfZSIsIm5vcm1hbENvbXBsZXRpb24iLCJkaWRFcnIiLCJzdGVwIiwiX2UyIiwiX2V4dGVuZHMiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0Iiwic291cmNlIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiYXJyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIml0ZXIiLCJmcm9tIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJvd25LZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiX29iamVjdFNwcmVhZCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwib2JqIiwiX3RvUHJvcGVydHlLZXkiLCJfdG9QcmltaXRpdmUiLCJTdHJpbmciLCJpbnB1dCIsImhpbnQiLCJwcmltIiwidG9QcmltaXRpdmUiLCJyZXMiLCJOdW1iZXIiLCJfc2xpY2VkVG9BcnJheSIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl9ub25JdGVyYWJsZVJlc3QiLCJtaW5MZW4iLCJ0b1N0cmluZyIsInRlc3QiLCJsZW4iLCJhcnIyIiwiUmVhY3QiLCJQcm9wVHlwZXMiLCJjb3JlIiwiU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciIsInVzZm1qcyIsInVzZUVkaXQiLCJJY29uQnV0dG9uIiwiUnhMaW5rMiIsIlJ4TGlua0JyZWFrMiIsIkNhcmQiLCJFcnJvckRpYWxvZyIsIkVSUk9SX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsIlVwZGF0ZUJyYW5jaEJ1dHRvbiIsInVzZUJyYW5jaE1lcmdlciIsInVzZUNhcmRTdGF0ZSIsInVzZUNvbnRlbnRVcGRhdGVQcm9wcyIsInVzZU1hc3Rlck1lcmdlUHJvcHMiLCJ1c2VVc2VyQnJhbmNoIiwiZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIiwiQWxpZ25tZW50SGVscGVycyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJpc0VxdWFsIiwiZ2V0VmVyc2VzIiwiU2NyaXB0dXJlUGFuZSIsIlNjcmlwdHVyZVNlbGVjdG9yIiwidXNlU2NyaXB0dXJlU2V0dGluZ3MiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwiZmV0Y2hCaWJsZUJvb2siLCJmaXhPY2N1cnJlbmNlIiwiZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lIiwiZ2V0UmVzb3VyY2VMaW5rIiwiZ2V0UmVzb3VyY2VNZXNzYWdlIiwiZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzIiwiaXNPcmlnaW5hbEJpYmxlIiwiZGVsYXkiLCJhcmVNYXBzVGhlU2FtZSIsIlRpdGxlIiwiTlRfT1JJR19MQU5HIiwiT1JJR0lOQUxfU09VUkNFIiwiT1RfT1JJR19MQU5HIiwiVmVyc2VTZWxlY3RvclBvcHVwIiwiZ2V0UGF0Y2giLCJTY3JpcHR1cmVSZWZlcmVuY2VUeXBlIiwiVmVyc2VPYmplY3RzVHlwZSIsIktFWV9GT05UX1NJWkVfQkFTRSIsImxhYmVsIiwic3R5bGUiLCJtYXJnaW5Ub3AiLCJ3aWR0aCIsImNvbXBhcmVPYmplY3QiLCJ2ZXJzZVJlZiIsIl92ZXJzZURhdGEkdmVyc2VPYmplYyIsIl9yZWYiLCJjaGFwdGVyIiwidmVyc2UiLCJ2ZXJzZURhdGEiLCJ2ZXJzZU9iamVjdHMiLCJKU09OIiwic3RyaW5naWZ5IiwiYXJlVmVyc2VzU2FtZSIsInZlcnNlc0ZvclJlZjEiLCJ2ZXJzZXNGb3JSZWYyIiwiYXJlU2FtZSIsInZlcnNlMSIsInZlcnNlMiIsImdldEN1cnJlbnRCb29rIiwic2NyaXB0dXJlQ29uZmlnIiwiYm9va0lkIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvMiIsIl9ib29rTmFtZSR0b0xvd2VyQ2FzZSIsImxhdGVzdEJpYmxlIiwicmVzb3VyY2VTdGF0ZSIsInJlc291cmNlIiwicHJvamVjdElkIiwiZmlsZW5hbWUiLCJpc0Jvb2tWYWxpZCIsImJvb2tOYW1lIiwidG9Mb3dlckNhc2UiLCJpbmNsdWRlcyIsImNvbnNvbGUiLCJ3YXJuIiwiY29uY2F0IiwiYmlibGVVc2ZtIiwiU2NyaXB0dXJlQ2FyZCIsIl9yZWYyIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvMyIsIl9zY3JpcHR1cmVDb25maWckcmVzbzQiLCJfc2NyaXB0dXJlQ29uZmlnJHJlc281IiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvNiIsIl9zY3JpcHR1cmVDb25maWckcmVzbzciLCJfYXV0aGVudGljYXRpb24kdG9rZW4iLCJfc2NyaXB0dXJlQ29uZmlnJHJlc285IiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvMTAiLCJfaHR0cENvbmZpZyIsIl9odHRwQ29uZmlnMiIsIl9hdXRoZW50aWNhdGlvbiR1c2VyIiwiX3ZlcnNlc0ZvclJlZjMiLCJfdmVyc2VzRm9yUmVmNCIsImFwcFJlZiIsImF1dGhlbnRpY2F0aW9uIiwiYm9va0luZGV4IiwiY2FyZE51bSIsImNsYXNzZXMiLCJkaXNhYmxlV29yZFBvcG92ZXIiLCJnZXRMYW5ndWFnZSIsImdldExleGljb25EYXRhIiwiZ3JlZWtSZXBvVXJsIiwiaGVicmV3UmVwb1VybCIsImh0dHBDb25maWciLCJpZCIsImlzTlQiLCJsb2dnZWRJblVzZXIiLCJvbk1pbmltaXplIiwib25SZXNvdXJjZUVycm9yIiwib3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyIsInJlZmVyZW5jZV8iLCJyZWZlcmVuY2UiLCJfcmVmMiRyZXNvdXJjZSIsIm93bmVyIiwibGFuZ3VhZ2VJZCIsInJlc291cmNlSWQiLCJvcmlnaW5hbExhbmd1YWdlT3duZXIiLCJyZXNvdXJjZUxpbmsiLCJzZWxlY3RlZFF1b3RlIiwic2VydmVyIiwic2V0Q2FyZHNMb2FkaW5nTWVyZ2UiLCJzZXRDYXJkc0xvYWRpbmdVcGRhdGUiLCJzZXRDYXJkc1NhdmluZyIsInNldFNhdmVkQ2hhbmdlcyIsInNldFdvcmRBbGlnbmVyU3RhdHVzIiwidHJhbnNsYXRlIiwidGl0bGUiLCJ1c2VVc2VyTG9jYWxTdG9yYWdlIiwidXBkYXRlTWVyZ2VTdGF0ZSIsIl9SZWFjdCR1c2VTdGF0ZSIsInVzZVN0YXRlIiwiY2hlY2tGb3JFZGl0QnJhbmNoIiwiY3VycmVudFJlZmVyZW5jZSIsImVkaXRCcmFuY2hSZWFkeSIsImhhdmVVbnNhdmVkQ2hhbmdlcyIsImxhc3RTZWxlY3RlZFF1b3RlIiwicmVhZHlGb3JGZXRjaCIsInJlZiIsInNhdmVDbGlja2VkIiwic2F2ZUNvbnRlbnQiLCJzYXZlRGlmZlBhdGNoIiwic2F2ZUZ1bGxCaWJsZUNvbnRlbnQiLCJzZWxlY3Rpb25zIiwiTWFwIiwic2VsZWN0aW9uc1JlZnMiLCJzaG93QWxpZ25tZW50UG9wdXAiLCJzdGFydFNhdmUiLCJ1cmxFcnJvciIsInVzaW5nVXNlckJyYW5jaCIsInVuc2F2ZWRDaGFuZ2VzTGlzdCIsInZlcnNlc0FsaWdubWVudFN0YXR1cyIsInZlcnNlc0ZvclJlZiIsInZlcnNlT2JqZWN0c01hcCIsInZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQiLCJfUmVhY3QkdXNlU3RhdGUyIiwic3RhdGUiLCJzZXRTdGF0ZV8iLCJfdXNlVXNlckxvY2FsU3RvcmFnZSIsIl91c2VVc2VyTG9jYWxTdG9yYWdlMiIsImZvbnRTaXplIiwic2V0Rm9udFNpemUiLCJpc05UXyIsInNldFN0YXRlIiwibmV3U3RhdGUiLCJwcmV2U3RhdGUiLCJjYWNoZSIsIm1heEFnZSIsIm5vQ2FjaGUiLCJfdXNlU2NyaXB0dXJlU2V0dGluZ3MiLCJzZXRVcmxFcnJvciIsIndob2xlQm9vayIsImlzTmV3VGVzdGFtZW50Iiwic2V0U2NyaXB0dXJlIiwic2NyaXB0dXJlU2V0dGluZ3MiLCJzY3JpcHR1cmVWZXJzaW9uSGlzdCIsImZldGNoZWRSZXNvdXJjZSIsInJlcG8iLCJ1c2luZ09yaWdpbmFsQmlibGUiLCJjYXJkUmVzb3VyY2VJZCIsInJlZl8iLCJjYW5Vc2VFZGl0QnJhbmNoIiwiX3VzZVVzZXJCcmFuY2giLCJjYXJkSWQiLCJfdXNlVXNlckJyYW5jaCRzdGF0ZSIsImJyYW5jaERldGVybWluZWQiLCJ1c2VyRWRpdEJyYW5jaE5hbWUiLCJfdXNpbmdVc2VyQnJhbmNoIiwid29ya2luZ1Jlc291cmNlQnJhbmNoIiwiX3VzZVVzZXJCcmFuY2gkYWN0aW9uIiwiYWN0aW9ucyIsInN0YXJ0RWRpdEJyYW5jaCIsInN0YXJ0RWRpdCIsImZpbmlzaEVkaXQiLCJfdXNlQnJhbmNoTWVyZ2VyIiwidXNlckJyYW5jaCIsInRva2VuaWQiLCJ0b2tlbiIsInNoYTEiLCJfdXNlQnJhbmNoTWVyZ2VyJHN0YXQiLCJtZXJnZVRvTWFzdGVyIiwibWVyZ2VTdGF0dXMiLCJtZXJnZUZyb21NYXN0ZXIiLCJ1cGRhdGVTdGF0dXMiLCJ1cGRhdGVCdXR0b25Qcm9wcyIsImlzU2F2aW5nIiwib25VcGRhdGUiLCJyZWxvYWRSZXNvdXJjZSIsImNhbGxVcGRhdGVVc2VyQnJhbmNoIiwiaXNFcnJvckRpYWxvZ09wZW4iLCJvbkNsb3NlRXJyb3JEaWFsb2ciLCJpc1VwZGF0ZUxvYWRpbmciLCJpc0xvYWRpbmciLCJkaWFsb2dNZXNzYWdlIiwiZGlhbG9nVGl0bGUiLCJkaWFsb2dMaW5rIiwiZGlhbG9nTGlua1Rvb2x0aXAiLCJvbk1lcmdlIiwibG9nIiwiX3VzZU1hc3Rlck1lcmdlUHJvcHMiLCJpc01lcmdlTG9hZGluZyIsImNhbGxNZXJnZVVzZXJCcmFuY2giLCJ1c2VFZmZlY3QiLCJwcmV2Q2FyZHNMb2FkaW5nIiwid29ya2luZ1JlZiIsInNjcmlwdHVyZVRpdGxlIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvOCIsInJlc291cmNlU3RhdHVzIiwibWVzc2FnZSIsImlzQWNjZXNzRXJyb3IiLCJ2ZXJzaW9uIiwidXBkYXRlVGl0bGUiLCJnZXRTY3JpcHR1cmVTZWxlY3RvciIsInNjcmlwdHVyZVNlbGVjdGlvbkNvbmZpZyIsImNyZWF0ZUVsZW1lbnQiLCJlcnJvck1lc3NhZ2UiLCJvbk1lbnVDbG9zZSIsImxhbmd1YWdlSWRfIiwibGFuZ3VhZ2UiLCJkaXJlY3Rpb24iLCJfcmVmZXJlbmNlIiwiaXNIZWJyZXciLCJmb250RmFjdG9yIiwic2NhbGVkRm9udFNpemUiLCJpdGVtcyIsIl91c2VDYXJkU3RhdGUiLCJfdXNlQ2FyZFN0YXRlJHN0YXRlIiwiaGVhZGVycyIsImZpbHRlcnMiLCJpdGVtSW5kZXgiLCJtYXJrZG93blZpZXciLCJfdXNlQ2FyZFN0YXRlJGFjdGlvbnMiLCJzZXRGaWx0ZXJzIiwic2V0SXRlbUluZGV4Iiwic2V0TWFya2Rvd25WaWV3IiwicmVmU3R5bGUiLCJ1c2VNZW1vIiwiZm9udEZhbWlseSIsIk1hdGgiLCJyb3VuZCIsImNvbnRlbnRTdHlsZSIsInNjcmlwdHVyZUxhYmVsIiwiZGlzYWJsZVdvcmRQb3BvdmVyXyIsImVuYWJsZUVkaXQiLCJlbmFibGVBbGlnbm1lbnQiLCJvcmlnaW5hbFJlcG9VcmwiLCJzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnIiwiY3VycmVudFZlcnNlUmVmIiwiX3NldFNhdmVkQ2hhbmdlcyIsInNvdXJjZUxhbmd1YWdlIiwidGFyZ2V0TGFuZ3VhZ2UiLCJjdXJyZW50SW5kZXgiLCJzYXZlZCIsIl9yZWYzIiwiX3JlZjMkZ2V0Q2hhbmdlcyIsImdldENoYW5nZXMiLCJfcmVmMyRjbGVhckNoYW5nZXMiLCJjbGVhckNoYW5nZXMiLCJfcmVmMyRzdGF0ZSIsIl91bnNhdmVkQ2hhbmdlc0xpc3QiLCJfaGF2ZVVuc2F2ZWRDaGFuZ2VzIiwiZmluZFJlZkluQXJyYXkiLCJmaW5kSXRlbSIsImNodW5rcyIsInJlZkxlbiIsImluZGV4IiwiZmluZEluZGV4IiwiY2h1bmsiLCJpZHgiLCJzdWJzdHJpbmciLCJuZXh0Q2hhciIsImdldEJvb2tOYW1lIiwiX3NjcmlwdHVyZUNvbmZpZyRyZWZlIiwiYm9va0NhcHMiLCJ0b1VwcGVyQ2FzZSIsImZpbGVwYXRoIiwic2hhIiwiX3VzZUVkaXQiLCJjb250ZW50IiwiY29uZmlnIiwiZG9udENyZWF0ZUJyYW5jaCIsInRpbWVvdXQiLCJzZXJ2ZXJUaW1lT3V0IiwiYXV0aG9yIiwiZW1haWwiLCJ1c2VyIiwiYnJhbmNoIiwic2F2ZUVycm9yIiwiaXNTYXZlRXJyb3IiLCJpc0Vycm9yIiwib25TYXZlRWRpdCIsIm9uU2F2ZUVkaXRQYXRjaCIsIl9zYXZlU3VjY2VzZnVsIiwicHJldkNhcmRzU2F2aW5nIiwidW5zYXZlZENhcmRJbmRpY2VzIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJjYXJkSW5kZXgiLCJfc2F2ZUVkaXQiLCJfcmVmNCIsIl9jYWxsZWUiLCJ1cGxvYWRGdW5jdGlvbiIsInN1Y2Nlc3MiLCJyZXN1bHRzIiwiX3NhdmVDb250ZW50IiwiZmlsZVNoYSIsInNhdmVkQmlibGVVc2ZtIiwiZWRpdGVkQmlibGVVc2ZtIiwidXBUb0RhdGUiLCJkaWZmUGF0Y2giLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwibWVyZ2VWZXJzZU9iamVjdHNJbnRvQmlibGVVc2ZtIiwidXBkYXRlZFZlcnNlT2JqZWN0cyIsIm5ld1VzZm0iLCJjaGFwdGVyQ2h1bmtzIiwic3BsaXQiLCJjaGFwdGVySW5kZXgiLCJjdXJyZW50Q2hhcHRlciIsInZlcnNlQ2h1bmtzIiwidmVyc2VJbmRleCIsImZyb250TWF0dGVyIiwibmV3VmVyc2VVc2ZtIiwiY29udmVydFZlcnNlRGF0YVRvVVNGTSIsIm9sZFZlcnNlIiwicHJlZml4TGVuIiwiaW5kZXhPZiIsInZlcnNlTnVtTGVuIiwibmV3Q2hhcHRlciIsImpvaW4iLCJnZXRSZWFkeUZvclNhdmUiLCJfZ2V0UmVhZHlGb3JTYXZlIiwiX2NhbGxlZTIiLCJjcmVhdGVFZGl0QnJhbmNoIiwiYmlibGVVc2ZtSW5pdGlhbCIsImJpYmxlVXNmbU5ldyIsIm1lcmdlRmFpbCIsIl9jYXJkTnVtIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsIl91bnNhdmVkQ2hhbmdlc0xpc3QkXyIsIl9zdGF0ZSIsIl9nZXRDaGFuZ2VzIiwiX3JlZjUiLCJfc2F2ZURpZmZQYXRjaCIsIl9zYXZlRnVsbEJpYmxlQ29udGVudCIsIm5ld0Jvb2tKc29uIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsIl9jYXJkSW5kZXgiLCJfY2FyZE51bTIiLCJfdW5zYXZlZENoYW5nZXNMaXN0JF8yIiwiX2dldENoYW5nZXMyIiwiX3N0YXRlMiIsIl9uZXdVc2ZtIiwiX2dldENoYW5nZXMzIiwibmV3VmVyc2VUZXh0IiwiX3JlZjYiLCJfdXBkYXRlZFZlcnNlT2JqZWN0cyIsInRhcmdldFZlcnNlT2JqZWN0c18iLCJfQWxpZ25tZW50SGVscGVycyR1cGQiLCJ0YXJnZXRWZXJzZU9iamVjdHMiLCJfc2NyaXB0dXJlQ29uZmlnJHJlc28xMSIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiIsInBhcnNlSW50IiwidDAiLCJ1cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSIsInVwZGF0ZVZlcnNlIiwidG9VU0ZNIiwiZm9yY2VkTmV3TGluZXMiLCJpbml0aWFsIiwiX3JlZjciLCJfdmVyc2VzRm9yUmVmIiwibmV3U2VsZWN0aW9ucyIsInVwZGF0ZVNlbGVjdGlvbnMiLCJfbWFwIiwib3JpZ2luYWxCb29rSWQiLCJib29rVmVyc2VPYmplY3QiLCJjaGFwdGVycyIsIm5ld1NlbGVjdGVkUXVvdGUiLCJxdW90ZSIsIl9zZWxlY3RlZFF1b3RlJHJlZmVyZTMiLCJvcmlnaW5hbFZlcnNlcyIsInN1YnN0aXR1dGUiLCJzdGFydFZlcnNlIiwibGFzdFZlcnNlIiwiX3ZlcnNlIiwidmVyc2VzIiwiX2l0ZXJhdG9yNCIsIl9zdGVwNCIsInZlcnNlSXRlbSIsInZvIiwiX2Jvb2tWZXJzZU9iamVjdCRfY2hhIiwic2V0IiwiX3NlbGVjdGVkUXVvdGUkcmVmZXJlIiwiX3NlbGVjdGVkUXVvdGUkcmVmZXJlMiIsInN1YlJlZiIsInF1b3RlTWF0Y2hlcyIsImJvb2tPYmplY3QiLCJvY2N1cnJlbmNlIiwic2l6ZSIsIndvcmRzIiwiX2tleSIsIm1hcCIsIndvcmQiLCJ0ZXh0Iiwibm9ybWFsaXplU3RyaW5nIiwiYm9va3NOb3RTYW1lIiwidXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzIiwiYWxpZ25lZCIsIl92ZXJzZXNGb3JSZWYyIiwiX3JlZjgiLCJyZW5kZXJlZFNjcmlwdHVyZVBhbmVzIiwiX2N1cnJlbnRWZXJzZURhdGEiLCJfY3VycmVudFZlcnNlRGF0YSR2ZXIiLCJpbml0aWFsVmVyc2VPYmplY3RzIiwiX3JlZjkiLCJib29rSWRfIiwiX3NjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWciLCJpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQiLCJkZXRlcm1pbmluZ0JyYW5jaCIsIm9uQWxpZ25tZW50RmluaXNoIiwic2F2aW5nIiwiaGFuZGxlQWxpZ25CdXR0b25DbGljayIsIm9uUmVuZGVyVG9vbGJhciIsIl9yZWYxMCIsIm5ld0l0ZW1zIiwiYWxsVmVyc2VzQWxpZ25lZCIsImV2ZXJ5IiwiYWxpZ25TdGF0dXMiLCJhbGlnbkljb24iLCJhbGlnbkJ1dHRvblRleHQiLCJjb2xvciIsIm9uQ2xpY2siLCJjdXJzb3IiLCJGcmFnbWVudCIsIm9wZW4iLCJvbkNsb3NlIiwibGluayIsImxpbmtUb29sdGlwIiwic2VsZWN0aW9uQm9va09iamVjdHMiLCJvblNlbGVjdGlvbnMiLCJyZWZTdHJpbmciLCJzZXR0aW5nc1RpdGxlIiwiZ2V0Q3VzdG9tQ29tcG9uZW50IiwiaGlkZU1hcmtkb3duVG9nZ2xlIiwiZWRpdGFibGUiLCJvblZlcnNlU2VsZWN0IiwicHJvcFR5cGVzIiwic3RyaW5nIiwiaXNSZXF1aXJlZCIsIm9iamVjdCIsIm51bWJlciIsImJvb2wiLCJmdW5jIiwic2hhcGUiLCJvbmVPZlR5cGUiLCJhbnkiLCJzZXRBcmVSZXNvdXJjZXNMb2FkaW5nIiwic2V0QXJlUmVzb3VyY2VzU2F2aW5nIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvU2NyaXB0dXJlQ2FyZC9TY3JpcHR1cmVDYXJkLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCAqIGFzIFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IHsgY29yZSwgU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciB9IGZyb20gJ3NjcmlwdHVyZS1yZXNvdXJjZXMtcmNsJ1xuaW1wb3J0IHVzZm1qcyBmcm9tICd1c2ZtLWpzJ1xuaW1wb3J0IHsgdXNlRWRpdCB9IGZyb20gJ2dpdGVhLXJlYWN0LXRvb2xraXQnXG5pbXBvcnQgeyBJY29uQnV0dG9uIH0gZnJvbSAnQG11aS9tYXRlcmlhbCdcbmltcG9ydCB7IFJ4TGluazIsIFJ4TGlua0JyZWFrMiB9IGZyb20gJ3JlYWN0LWljb25zL3J4J1xuaW1wb3J0IHtcbiAgQ2FyZCxcbiAgRXJyb3JEaWFsb2csXG4gIEVSUk9SX1NUQVRFLFxuICBNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SLFxuICBVcGRhdGVCcmFuY2hCdXR0b24sXG4gIHVzZUJyYW5jaE1lcmdlcixcbiAgdXNlQ2FyZFN0YXRlLFxuICB1c2VDb250ZW50VXBkYXRlUHJvcHMsXG4gIHVzZU1hc3Rlck1lcmdlUHJvcHMsXG4gIHVzZVVzZXJCcmFuY2gsXG59IGZyb20gJ3RyYW5zbGF0aW9uLWhlbHBzLXJjbCdcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IGdldFF1b3RlTWF0Y2hlc0luQm9va1JlZiB9IGZyb20gJ3V3LXF1b3RlLWhlbHBlcnMnXG5pbXBvcnQgeyBBbGlnbm1lbnRIZWxwZXJzLCBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzIH0gZnJvbSAnd29yZC1hbGlnbmVyLXJjbCdcbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tICdAcmVhY3QtaG9va3ovZGVlcC1lcXVhbCdcbmltcG9ydCB7IGdldFZlcnNlcyB9IGZyb20gJ2JpYmxlLXJlZmVyZW5jZS1yYW5nZSdcbmltcG9ydCB7IFNjcmlwdHVyZVBhbmUsIFNjcmlwdHVyZVNlbGVjdG9yIH0gZnJvbSAnLi4nXG5pbXBvcnQgeyB1c2VTY3JpcHR1cmVTZXR0aW5ncyB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZVNjcmlwdHVyZVNldHRpbmdzJ1xuaW1wb3J0IHtcbiAgY2xlYW51cFZlcnNlT2JqZWN0cyxcbiAgZmV0Y2hCaWJsZUJvb2ssXG4gIGZpeE9jY3VycmVuY2UsXG4gIGdldEJvb2tOYW1lRnJvbVVzZm1GaWxlTmFtZSxcbiAgZ2V0UmVzb3VyY2VMaW5rLFxuICBnZXRSZXNvdXJjZU1lc3NhZ2UsXG4gIGdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyxcbiAgaXNPcmlnaW5hbEJpYmxlLFxufSBmcm9tICcuLi8uLi91dGlscy9TY3JpcHR1cmVTZXR0aW5ncydcbmltcG9ydCB7IGRlbGF5IH0gZnJvbSAnLi4vLi4vdXRpbHMvZGVsYXknXG5pbXBvcnQgeyBhcmVNYXBzVGhlU2FtZSB9IGZyb20gJy4uLy4uL3V0aWxzL21hcHMnXG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJy4uL1NjcmlwdHVyZVBhbmUvc3R5bGVkJ1xuaW1wb3J0IHtcbiAgTlRfT1JJR19MQU5HLFxuICBPUklHSU5BTF9TT1VSQ0UsXG4gIE9UX09SSUdfTEFORyxcbn0gZnJvbSAnLi4vLi4vdXRpbHMnXG5pbXBvcnQgeyBWZXJzZVNlbGVjdG9yUG9wdXAgfSBmcm9tICcuLi9WZXJzZVNlbGVjdG9yUG9wdXAnXG5pbXBvcnQgeyBnZXRQYXRjaCB9IGZyb20gJy4uLy4uL3V0aWxzL2ZpbGVzJ1xuaW1wb3J0IHsgU2NyaXB0dXJlUmVmZXJlbmNlVHlwZSwgVmVyc2VPYmplY3RzVHlwZSB9IGZyb20gJy4uLy4uL3R5cGVzJ1xuXG5jb25zdCBLRVlfRk9OVF9TSVpFX0JBU0UgPSAnc2NyaXB0dXJlUGFuZUZvbnRTaXplXydcbmNvbnN0IGxhYmVsID0gJ1ZlcnNpb24nXG5jb25zdCBzdHlsZSA9IHsgbWFyZ2luVG9wOiAnMTZweCcsIHdpZHRoOiAnNTAwcHgnIH1cblxuLyoqXG4gKiBjcmVhdGUgYSBzaG9ydCBjb21wYXJpc29uIHZlcnNlIHJlZiBvYmplY3Qgd2l0aG91dCBhbGwgdGhlIHZlcnNlRGF0YVxuICogQHBhcmFtIHZlcnNlUmVmXG4gKi9cbmZ1bmN0aW9uIGNvbXBhcmVPYmplY3QodmVyc2VSZWYpIHtcbiAgY29uc3Qge1xuICAgIGNoYXB0ZXIsXG4gICAgdmVyc2UsXG4gICAgdmVyc2VEYXRhLFxuICB9ID0gdmVyc2VSZWYgfHwge31cbiAgY29uc3QgdmVyc2VPYmplY3RzID0gdmVyc2VEYXRhPy52ZXJzZU9iamVjdHM/Lmxlbmd0aCA/IEpTT04uc3RyaW5naWZ5KHZlcnNlRGF0YS52ZXJzZU9iamVjdHMpIDogJydcbiAgcmV0dXJuIHtcbiAgICBjaGFwdGVyLFxuICAgIHZlcnNlLFxuICAgIHZlcnNlT2JqZWN0cyxcbiAgfVxufVxuXG4vKipcbiAqIGNvbXBhcmUgdHdvIHZlcnNlIHJlZnMgdG8gc2VlIGlmIHRoZXkgYXJlIHN1YnN0YW50aWFsbHkgc2ltaWxhclxuICogQHBhcmFtIHZlcnNlc0ZvclJlZjFcbiAqIEBwYXJhbSB2ZXJzZXNGb3JSZWYyXG4gKi9cbmZ1bmN0aW9uIGFyZVZlcnNlc1NhbWUodmVyc2VzRm9yUmVmMTogYW55W10sIHZlcnNlc0ZvclJlZjI6IGFueVtdKSB7XG4gIHZlcnNlc0ZvclJlZjEgPSB2ZXJzZXNGb3JSZWYxIHx8IFtdXG4gIHZlcnNlc0ZvclJlZjIgPSB2ZXJzZXNGb3JSZWYyIHx8IFtdXG4gIGxldCBhcmVTYW1lID0gZmFsc2VcblxuICBpZiAodmVyc2VzRm9yUmVmMS5sZW5ndGggPT09IHZlcnNlc0ZvclJlZjIubGVuZ3RoKSB7XG4gICAgYXJlU2FtZSA9IHRydWVcblxuICAgIGZvciAobGV0IGkgPSAwLCBsPSB2ZXJzZXNGb3JSZWYxLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgY29uc3QgdmVyc2UxID0gY29tcGFyZU9iamVjdCh2ZXJzZXNGb3JSZWYxW2ldKVxuICAgICAgY29uc3QgdmVyc2UyID0gY29tcGFyZU9iamVjdCh2ZXJzZXNGb3JSZWYyW2ldKVxuICAgICAgYXJlU2FtZSA9IGlzRXF1YWwodmVyc2UxLCB2ZXJzZTIpXG5cbiAgICAgIGlmICghYXJlU2FtZSkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhcmVTYW1lXG59XG5cbi8qKlxuICogZ2V0IHRoZSBVU0ZNIGZvciBib29rSWQgZnJvbSBzY3JpcHR1cmVDb25maWcuXG4gKiBAcGFyYW0ge29iamVjdH0gc2NyaXB0dXJlQ29uZmlnXG4gKiBAcGFyYW0ge3N0cmluZ30gYm9va0lkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRDdXJyZW50Qm9vayA9IChzY3JpcHR1cmVDb25maWcsIGJvb2tJZCkgPT4ge1xuICBjb25zdCBsYXRlc3RCaWJsZSA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0ZT8ucmVzb3VyY2U/LnByb2plY3RJZFxuICBjb25zdCBmaWxlbmFtZSA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0ZT8ucmVzb3VyY2U/Lm5hbWUgLy8gTGlrZSBcIjU3LVRJVC51c2ZtXCJcbiAgbGV0IGlzQm9va1ZhbGlkID0gZmFsc2VcbiAgY29uc3QgYm9va05hbWUgPSBnZXRCb29rTmFtZUZyb21Vc2ZtRmlsZU5hbWUoZmlsZW5hbWUpXG4gIGlzQm9va1ZhbGlkID0gYm9va05hbWU/LnRvTG93ZXJDYXNlKCk/LmluY2x1ZGVzKGJvb2tJZClcbiAgaWYgKCFpc0Jvb2tWYWxpZCkge1xuICAgIGNvbnNvbGUud2FybihgQ3VycmVudCBib29rSWQgaXMgJHtib29rSWR9IGFuZCBVU0ZNIGZpbGUgaXMgJHtmaWxlbmFtZX1gKVxuICB9XG4gIGlmIChsYXRlc3RCaWJsZT8udG9Mb3dlckNhc2UoKSAhPT0gYm9va0lkKSB7XG4gICAgY29uc29sZS53YXJuKGBDdXJyZW50IGJvb2tJZCBpcyAke2Jvb2tJZH0gYnV0IGZldGNoZWQgcHJvamVjdElkIGlzICR7bGF0ZXN0QmlibGV9YClcbiAgICBpc0Jvb2tWYWxpZCA9IGZhbHNlXG4gIH1cbiAgaWYgKGlzQm9va1ZhbGlkKSB7XG4gICAgY29uc3QgYmlibGVVc2ZtID0gc2NyaXB0dXJlQ29uZmlnPy5iaWJsZVVzZm07XG4gICAgaWYgKGJpYmxlVXNmbSkge1xuICAgICAgcmV0dXJuIGJpYmxlVXNmbVxuICAgIH1cbiAgICBjb25zb2xlLmVycm9yKGBnZXRDdXJyZW50Qm9vaygpIC0gQmlibGUgVVNGTSBtaXNzaW5nYClcbiAgfVxuICBjb25zb2xlLmVycm9yKGBnZXRDdXJyZW50Qm9vaygpIC0gRXhwZWN0ZWQgJHtib29rSWR9IGJ1dCBnb3QgZmlsZSAke2ZpbGVuYW1lfWApXG4gIHJldHVybiBudWxsXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNjcmlwdHVyZUNhcmQoe1xuICBhcHBSZWYsXG4gIGF1dGhlbnRpY2F0aW9uLFxuICBib29rSW5kZXgsXG4gIGNhcmROdW0sXG4gIGNsYXNzZXMsXG4gIGRpc2FibGVXb3JkUG9wb3ZlcixcbiAgZ2V0TGFuZ3VhZ2UsXG4gIGdldExleGljb25EYXRhLFxuICBncmVla1JlcG9VcmwsXG4gIGhlYnJld1JlcG9VcmwsXG4gIGh0dHBDb25maWcsXG4gIGlkLFxuICBpc05ULFxuICBsb2dnZWRJblVzZXIsXG4gIG9uTWluaW1pemUsXG4gIG9uUmVzb3VyY2VFcnJvcixcbiAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyxcbiAgcmVmZXJlbmNlOiByZWZlcmVuY2VfLFxuICByZXNvdXJjZToge1xuICAgIG93bmVyLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgcmVzb3VyY2VJZCxcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gIH0sXG4gIHJlc291cmNlTGluayxcbiAgc2VsZWN0ZWRRdW90ZSxcbiAgc2VydmVyLFxuICBzZXRDYXJkc0xvYWRpbmdNZXJnZSxcbiAgc2V0Q2FyZHNMb2FkaW5nVXBkYXRlLFxuICBzZXRDYXJkc1NhdmluZyxcbiAgc2V0U2F2ZWRDaGFuZ2VzLFxuICBzZXRXb3JkQWxpZ25lclN0YXR1cyxcbiAgdHJhbnNsYXRlLFxuICB0aXRsZSxcbiAgdXNlVXNlckxvY2FsU3RvcmFnZSxcbiAgdXBkYXRlTWVyZ2VTdGF0ZSxcbn0pIHtcbiAgY29uc3QgYm9va0lkID0gcmVmZXJlbmNlXz8uYm9va0lkIHx8IHJlZmVyZW5jZV8/LnByb2plY3RJZCAvLyBvbGRlciB2ZXJzaW9ucyB1c2UgcHJvamVjdElkLCBzbyBmYWxsIGJhY2sgdG8gdGhhdFxuICBjb25zdCByZWZlcmVuY2UgPSB7XG4gICAgYm9va0lkLFxuICAgIGNoYXB0ZXI6IHJlZmVyZW5jZV8/LmNoYXB0ZXIsXG4gICAgdmVyc2U6IHJlZmVyZW5jZV8/LnZlcnNlLFxuICB9XG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVfXSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICBjaGVja0ZvckVkaXRCcmFuY2g6IDAsXG4gICAgY3VycmVudFJlZmVyZW5jZTogbnVsbCxcbiAgICBlZGl0QnJhbmNoUmVhZHk6IGZhbHNlLFxuICAgIGhhdmVVbnNhdmVkQ2hhbmdlczogZmFsc2UsXG4gICAgbGFzdFNlbGVjdGVkUXVvdGU6IG51bGwsXG4gICAgcmVhZHlGb3JGZXRjaDogZmFsc2UsXG4gICAgcmVmOiBhcHBSZWYsXG4gICAgc2F2ZUNsaWNrZWQ6IGZhbHNlLFxuICAgIHNhdmVDb250ZW50OiBudWxsLFxuICAgIHNhdmVEaWZmUGF0Y2g6IGZhbHNlLFxuICAgIHNhdmVGdWxsQmlibGVDb250ZW50OiBudWxsLFxuICAgIHNlbGVjdGlvbnM6IG5ldyBNYXAoKSxcbiAgICBzZWxlY3Rpb25zUmVmczogJycsXG4gICAgc2hvd0FsaWdubWVudFBvcHVwOiBmYWxzZSxcbiAgICBzdGFydFNhdmU6IGZhbHNlLFxuICAgIHVybEVycm9yOiBudWxsLFxuICAgIHVzaW5nVXNlckJyYW5jaDogZmFsc2UsXG4gICAgdW5zYXZlZENoYW5nZXNMaXN0OiB7fSxcbiAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXM6IG51bGwsXG4gICAgdmVyc2VzRm9yUmVmOiBudWxsLFxuICAgIHZlcnNlT2JqZWN0c01hcDogbmV3IE1hcCgpLFxuICAgIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ6IG51bGwsXG4gIH0pXG4gIGNvbnN0IHtcbiAgICBjaGVja0ZvckVkaXRCcmFuY2gsXG4gICAgY3VycmVudFJlZmVyZW5jZSxcbiAgICBlZGl0QnJhbmNoUmVhZHksXG4gICAgaGF2ZVVuc2F2ZWRDaGFuZ2VzLFxuICAgIGxhc3RTZWxlY3RlZFF1b3RlLFxuICAgIHJlYWR5Rm9yRmV0Y2gsXG4gICAgcmVmLFxuICAgIHNhdmVDbGlja2VkLFxuICAgIHNhdmVDb250ZW50LFxuICAgIHNhdmVEaWZmUGF0Y2gsXG4gICAgc2F2ZUZ1bGxCaWJsZUNvbnRlbnQsXG4gICAgc2VsZWN0aW9ucyxcbiAgICBzZWxlY3Rpb25zUmVmcyxcbiAgICBzaG93QWxpZ25tZW50UG9wdXAsXG4gICAgc3RhcnRTYXZlLFxuICAgIHVybEVycm9yLFxuICAgIHVzaW5nVXNlckJyYW5jaCxcbiAgICB1bnNhdmVkQ2hhbmdlc0xpc3QsXG4gICAgdmVyc2VPYmplY3RzTWFwLFxuICAgIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQsXG4gICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzLFxuICAgIHZlcnNlc0ZvclJlZixcbiAgfSA9IHN0YXRlXG5cbiAgY29uc3QgW2ZvbnRTaXplLCBzZXRGb250U2l6ZV0gPSB1c2VVc2VyTG9jYWxTdG9yYWdlKEtFWV9GT05UX1NJWkVfQkFTRSArIGNhcmROdW0sIDEwMClcbiAgY29uc3QgaXNOVF8gPSBpc05UKGJvb2tJZClcblxuICBmdW5jdGlvbiBzZXRTdGF0ZShuZXdTdGF0ZSkge1xuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHsgLi4ucHJldlN0YXRlLCAuLi5uZXdTdGF0ZSB9KSlcbiAgfVxuXG4gIGh0dHBDb25maWcgPSB7XG4gICAgLi4uaHR0cENvbmZpZyxcbiAgICBjYWNoZTogeyBtYXhBZ2U6IDAgfSxcbiAgICBub0NhY2hlOiB0cnVlLFxuICB9IC8vIGRpc2FibGUgaHR0cCBjYWNoaW5nXG5cbiAgY29uc3Qge1xuICAgIGlzTmV3VGVzdGFtZW50LFxuICAgIHNjcmlwdHVyZUNvbmZpZyxcbiAgICBzZXRTY3JpcHR1cmUsXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MsXG4gICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QsXG4gIH0gPSB1c2VTY3JpcHR1cmVTZXR0aW5ncyh7XG4gICAgYXBwUmVmOiByZWYsXG4gICAgY2FyZE51bSxcbiAgICBkaXNhYmxlV29yZFBvcG92ZXIsXG4gICAgZ3JlZWtSZXBvVXJsLFxuICAgIGhlYnJld1JlcG9VcmwsXG4gICAgaHR0cENvbmZpZyxcbiAgICBpc05ULFxuICAgIGxhbmd1YWdlSWQsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICAgIG93bmVyLFxuICAgIHJlYWR5Rm9yRmV0Y2gsXG4gICAgcmVmZXJlbmNlOiBjdXJyZW50UmVmZXJlbmNlIHx8IHJlZmVyZW5jZSxcbiAgICByZXNvdXJjZUlkLFxuICAgIHJlc291cmNlTGluayxcbiAgICBzZXRVcmxFcnJvcjogKGVycm9yKSA9PiBzZXRTdGF0ZSh7IHVybEVycm9yOiBlcnJvciB9KSxcbiAgICBzZXJ2ZXIsXG4gICAgdGl0bGUsXG4gICAgdXNlVXNlckxvY2FsU3RvcmFnZSxcbiAgICB3aG9sZUJvb2s6IHRydWUsXG4gIH0pXG5cbiAgY29uc3QgZmV0Y2hlZFJlc291cmNlID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXRlXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgcmVwbyA9IGAke3NjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/Lmxhbmd1YWdlSWR9XyR7c2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucHJvamVjdElkfWBcbiAgY29uc3QgdXNpbmdPcmlnaW5hbEJpYmxlID0gaXNPcmlnaW5hbEJpYmxlKHNjcmlwdHVyZUNvbmZpZ1sncmVzb3VyY2UnXT8ucHJvamVjdElkKVxuXG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBjYXJkUmVzb3VyY2VJZCA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/LnByb2plY3RJZCB8fCByZXNvdXJjZUlkXG4gIC8vIEB0cy1pZ25vcmVcbiAgbGV0IHJlZl8gPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5yZWYgfHwgYXBwUmVmXG4gIGNvbnN0IGNhblVzZUVkaXRCcmFuY2ggPSAhIShsb2dnZWRJblVzZXIgJiYgYXV0aGVudGljYXRpb24gJiYgKHJlc291cmNlSWQgIT09IE9SSUdJTkFMX1NPVVJDRSkgJiYgLy8gVFJJQ0tZIGlmIG5vdCBvcmlnaW5hbCBsYW5ndWFnZSBhbmQgd2UgaGF2ZSBsb2dpbiBkYXRhLCB0aGVuIHdlIGNhbiB1c2UgdGhlIGVkaXQgYnJhbmNoXG4gICAgKChyZWZfID09PSAnbWFzdGVyJykgfHwgKHJlZl8uaW5jbHVkZXMobG9nZ2VkSW5Vc2VyKSkpKSAvLyBhbHNvIG1ha2Ugc3VyZSBub3QgYSB2ZXJzaW9uIHRhZ1xuXG4gIGNvbnN0IHtcbiAgICBzdGF0ZToge1xuICAgICAgYnJhbmNoRGV0ZXJtaW5lZCxcbiAgICAgIHVzZXJFZGl0QnJhbmNoTmFtZSxcbiAgICAgIHVzaW5nVXNlckJyYW5jaDogX3VzaW5nVXNlckJyYW5jaCxcbiAgICAgIHdvcmtpbmdSZXNvdXJjZUJyYW5jaCxcbiAgICB9LFxuICAgIGFjdGlvbnM6IHtcbiAgICAgIHN0YXJ0RWRpdDogc3RhcnRFZGl0QnJhbmNoLFxuICAgICAgZmluaXNoRWRpdCxcbiAgICB9LFxuICB9ID0gdXNlVXNlckJyYW5jaCh7XG4gICAgYXBwUmVmLFxuICAgIGF1dGhlbnRpY2F0aW9uOiBjYW5Vc2VFZGl0QnJhbmNoID8gYXV0aGVudGljYXRpb24gOiBudWxsLFxuICAgIGJvb2tJZCxcbiAgICBjYXJkSWQ6IGlkLFxuICAgIGNhcmRSZXNvdXJjZUlkLFxuICAgIGNoZWNrRm9yRWRpdEJyYW5jaCxcbiAgICBsYW5ndWFnZUlkLFxuICAgIGxvZ2dlZEluVXNlcjogY2FuVXNlRWRpdEJyYW5jaCA/IGxvZ2dlZEluVXNlciA6IG51bGwsXG4gICAgb3duZXIsXG4gICAgb25SZXNvdXJjZUVycm9yLFxuICAgIHNlcnZlcixcbiAgICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICB9KVxuXG4gIGNvbnN0IF91c2VCcmFuY2hNZXJnZXIgPSB1c2VCcmFuY2hNZXJnZXIoeyBzZXJ2ZXIsIG93bmVyLCByZXBvLCB1c2VyQnJhbmNoOiB1c2VyRWRpdEJyYW5jaE5hbWUsIHRva2VuaWQ6IGF1dGhlbnRpY2F0aW9uPy50b2tlbj8uc2hhMSB9KVxuICBjb25zdCB7XG4gICAgc3RhdGU6IHtcbiAgICAgIG1lcmdlU3RhdHVzOiBtZXJnZVRvTWFzdGVyLFxuICAgICAgdXBkYXRlU3RhdHVzOiBtZXJnZUZyb21NYXN0ZXIsXG4gICAgfSxcbiAgfSA9IF91c2VCcmFuY2hNZXJnZXJcblxuICBjb25zdCB1cGRhdGVCdXR0b25Qcm9wcyA9IHVzZUNvbnRlbnRVcGRhdGVQcm9wcyh7XG4gICAgaXNTYXZpbmc6IHN0YXJ0U2F2ZSxcbiAgICB1c2VCcmFuY2hNZXJnZXI6IF91c2VCcmFuY2hNZXJnZXIsXG4gICAgb25VcGRhdGU6ICgpID0+IHtcbiAgICAgIGRlbGF5KDUwMCkudGhlbigoKSA9PiBzY3JpcHR1cmVDb25maWc/LnJlbG9hZFJlc291cmNlKCkpXG4gICAgfSxcbiAgfSlcblxuICBjb25zdCB7XG4gICAgY2FsbFVwZGF0ZVVzZXJCcmFuY2gsXG4gICAgaXNFcnJvckRpYWxvZ09wZW4sXG4gICAgb25DbG9zZUVycm9yRGlhbG9nLFxuICAgIGlzTG9hZGluZzogaXNVcGRhdGVMb2FkaW5nLFxuICAgIGRpYWxvZ01lc3NhZ2UsXG4gICAgZGlhbG9nVGl0bGUsXG4gICAgZGlhbG9nTGluayxcbiAgICBkaWFsb2dMaW5rVG9vbHRpcCxcbiAgfSA9IHVwZGF0ZUJ1dHRvblByb3BzXG5cbiAgY29uc3Qgb25NZXJnZSA9ICgpID0+IHtcbiAgICBmaW5pc2hFZGl0KClcbiAgICBjb25zb2xlLmxvZyhgb25NZXJnZSgpIHN3aXRjaGluZyBiYWNrIHRvIG1hc3RlciBhZnRlciBtZXJnZSBhcHBSZWY6YCwgYXBwUmVmKVxuICAgIHNldFN0YXRlKHtcbiAgICAgIHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLFxuICAgICAgcmVmOiBhcHBSZWYsXG4gICAgfSlcbiAgICBkZWxheSg1MDApLnRoZW4oKCkgPT4ge1xuICAgICAgc2V0U3RhdGUoe1xuICAgICAgICBjaGVja0ZvckVkaXRCcmFuY2g6IGNoZWNrRm9yRWRpdEJyYW5jaCArIDEsIC8vIHRyaWdnZXIgcmVjaGVjayBvZiB1c2VyIGJyYW5jaCB3aGljaCB3aWxsIHN3aXRjaCB0aGUgYnJhbmNoIGJhY2sgdG8gbWFzdGVyXG4gICAgICAgIHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLFxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgeyBpc0xvYWRpbmc6IGlzTWVyZ2VMb2FkaW5nLCBjYWxsTWVyZ2VVc2VyQnJhbmNoIH0gPSB1c2VNYXN0ZXJNZXJnZVByb3BzKHtcbiAgICBpc1NhdmluZzogc3RhcnRTYXZlLFxuICAgIHVzZUJyYW5jaE1lcmdlcjogX3VzZUJyYW5jaE1lcmdlcixcbiAgICBvbk1lcmdlLFxuICB9KVxuXG4gIC8vIFNpbmNlIG9yaWdpbmFsIHRleHQgKEdyZWVrL0hlYnJldykgc2hvdWxkIG5vdCBiZSBlZGl0ZWQsIGRvIG5vdCBpbmNsdWRlXG4gIC8vIHRoZW0gaW4gbWVyZ2Ugc3RhdGUgc2luY2UgdXNlciB3aWxsIG5vdCBtZXJnZS9wdXNoIGNoYW5nZXMuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNhcmRSZXNvdXJjZUlkICYmICF1c2luZ09yaWdpbmFsQmlibGUpIHtcbiAgICAgIHVwZGF0ZU1lcmdlU3RhdGUgJiYgdXBkYXRlTWVyZ2VTdGF0ZShcbiAgICAgICAgY2FyZFJlc291cmNlSWQsXG4gICAgICAgIHNjcmlwdHVyZUNvbmZpZy50aXRsZSxcbiAgICAgICAgbWVyZ2VGcm9tTWFzdGVyLFxuICAgICAgICBtZXJnZVRvTWFzdGVyLFxuICAgICAgICBjYWxsVXBkYXRlVXNlckJyYW5jaCxcbiAgICAgICAgY2FsbE1lcmdlVXNlckJyYW5jaCxcbiAgICAgIClcbiAgICB9XG4gIH0sW2NhcmRSZXNvdXJjZUlkLCBzY3JpcHR1cmVDb25maWcudGl0bGUsIG1lcmdlRnJvbU1hc3RlciwgbWVyZ2VUb01hc3Rlcl0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNVcGRhdGVMb2FkaW5nKSB7XG4gICAgICBzZXRDYXJkc0xvYWRpbmdVcGRhdGU/LihwcmV2Q2FyZHNMb2FkaW5nID0+IFsuLi5wcmV2Q2FyZHNMb2FkaW5nLCBjYXJkUmVzb3VyY2VJZF0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHNldENhcmRzTG9hZGluZ1VwZGF0ZT8uKHByZXZDYXJkc0xvYWRpbmcgPT4gcHJldkNhcmRzTG9hZGluZy5maWx0ZXIoY2FyZElkID0+IGNhcmRJZCAhPT0gY2FyZFJlc291cmNlSWQpKVxuICAgIH1cbiAgfSwgW2lzVXBkYXRlTG9hZGluZ10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNNZXJnZUxvYWRpbmcpIHtcbiAgICAgIHNldENhcmRzTG9hZGluZ01lcmdlPy4ocHJldkNhcmRzTG9hZGluZyA9PiBbLi4ucHJldkNhcmRzTG9hZGluZywgY2FyZFJlc291cmNlSWRdKVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRDYXJkc0xvYWRpbmdNZXJnZT8uKHByZXZDYXJkc0xvYWRpbmcgPT4gcHJldkNhcmRzTG9hZGluZy5maWx0ZXIoY2FyZElkID0+IGNhcmRJZCAhPT0gY2FyZFJlc291cmNlSWQpKVxuICAgIH1cbiAgfSwgW2lzTWVyZ2VMb2FkaW5nXSlcblxuICBjb25zdCB3b3JraW5nUmVmID0gY2FuVXNlRWRpdEJyYW5jaCA/IHdvcmtpbmdSZXNvdXJjZUJyYW5jaCA6IGFwcFJlZlxuICBsZXQgc2NyaXB0dXJlVGl0bGVcblxuICBpZiAoIWNhblVzZUVkaXRCcmFuY2ggJiYgIXJlYWR5Rm9yRmV0Y2gpIHsgLy8gaWYgYmlibGUgbm90IGVsaWdpYmxlIGZvciB1c2VyIGJyYW5jaCwgbWFrZSBzdXJlIGl0J3MgcmVhZHlcbiAgICBzZXRTdGF0ZSh7IHJlYWR5Rm9yRmV0Y2g6IHRydWUgfSlcbiAgfVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYFNjcmlwdHVyZUNhcmQgYm9vayBjaGFuZ2VkYCwgeyBib29rSWQsIG93bmVyLCBsYW5ndWFnZUlkLCByZXNvdXJjZUlkIH0pXG5cbiAgICBpZiAoY2FuVXNlRWRpdEJyYW5jaCkgeyAvLyBpZiBiaWJsZSBlbGlnaWJsZSBmb3IgdXNlciBicmFuY2gsIHJlZnJlc2ggaXRcbiAgICAgIHNldFN0YXRlKHsgcmVhZHlGb3JGZXRjaDogZmFsc2UsIGNoZWNrRm9yRWRpdEJyYW5jaDogY2hlY2tGb3JFZGl0QnJhbmNoICsgMSB9KVxuICAgIH1cbiAgfSwgW2Jvb2tJZCwgb3duZXIsIGxhbmd1YWdlSWQsIHJlc291cmNlSWRdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc0VxdWFsKHJlZmVyZW5jZSwgY3VycmVudFJlZmVyZW5jZSkpIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVDYXJkIHJlZmVyZW5jZSBjaGFuZ2VkYCwgcmVmZXJlbmNlKVxuICAgICAgc2V0U3RhdGUoeyBjdXJyZW50UmVmZXJlbmNlOiByZWZlcmVuY2UgfSlcbiAgICB9XG4gIH0sIFtyZWZlcmVuY2VdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHdhaXRpbmcgZm9yIGJyYW5jaCBmZXRjaCB0byBjb21wbGV0ZVxuICAgIGlmICghcmVhZHlGb3JGZXRjaCAmJiBicmFuY2hEZXRlcm1pbmVkICkge1xuICAgICAgY29uc29sZS5sb2coYFNjcmlwdHVyZUNhcmQgYnJhbmNoRGV0ZXJtaW5lZCBpcyAke2JyYW5jaERldGVybWluZWR9IGFuZCB3b3JraW5nUmVmIGlzICR7d29ya2luZ1JlZn1gKVxuICAgICAgc2V0U3RhdGUoeyByZWFkeUZvckZldGNoOiB0cnVlLCByZWY6IHdvcmtpbmdSZWYgfSlcbiAgICB9XG4gIH0sIFticmFuY2hEZXRlcm1pbmVkXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBzZWxlY3QgY29ycmVjdCB3b3JraW5nIHJlZiAtIGNvdWxkIGJlIG1hc3RlciwgdXNlciBicmFuY2gsIG9yIHJlbGVhc2VcbiAgICBpZiAoX3VzaW5nVXNlckJyYW5jaCAhPT0gdXNpbmdVc2VyQnJhbmNoKSB7XG4gICAgICBzZXRTdGF0ZSh7IHVzaW5nVXNlckJyYW5jaDogX3VzaW5nVXNlckJyYW5jaCB9KVxuICAgIH1cbiAgfSwgW191c2luZ1VzZXJCcmFuY2gsIHVzaW5nVXNlckJyYW5jaF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gdXBkYXRlIGRpc3BsYXkgc3RhdHVzIGlmIGVycm9yXG4gICAgY29uc3QgZXJyb3IgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdHVzPy5bRVJST1JfU1RBVEVdXG5cbiAgICBpZiAoZXJyb3IpIHsgLy8gaWYgZXJyb3Igd2FzIGZvdW5kIGRvIGNhbGxiYWNrXG4gICAgICBjb25zdCByZXNvdXJjZVN0YXR1cyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0dXNcbiAgICAgIGNvbnN0IHJlc291cmNlTGluayA9IGdldFJlc291cmNlTGluayhzY3JpcHR1cmVDb25maWcpXG4gICAgICBjb25zdCBtZXNzYWdlID0gZ2V0UmVzb3VyY2VNZXNzYWdlKHJlc291cmNlU3RhdHVzLCBzZXJ2ZXIsIHJlc291cmNlTGluaywgaXNOVF8pXG4gICAgICBjb25zdCBpc0FjY2Vzc0Vycm9yID0gcmVzb3VyY2VTdGF0dXNbTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUl1cbiAgICAgIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobWVzc2FnZSwgaXNBY2Nlc3NFcnJvciwgcmVzb3VyY2VTdGF0dXMpXG4gICAgfVxuICB9LCBbc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXR1cz8uW0VSUk9SX1NUQVRFXV0pXG5cbiAgaWYgKHNjcmlwdHVyZUNvbmZpZy50aXRsZSAmJiBzY3JpcHR1cmVDb25maWcudmVyc2lvbikge1xuICAgIHNjcmlwdHVyZVRpdGxlID0gYCR7c2NyaXB0dXJlQ29uZmlnLnRpdGxlfSB2JHtzY3JpcHR1cmVDb25maWcudmVyc2lvbn1gXG4gICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QudXBkYXRlVGl0bGUoc2NyaXB0dXJlQ29uZmlnLnJlc291cmNlTGluaywgc2NyaXB0dXJlVGl0bGUpXG4gIH0gZWxzZSB7XG4gICAgc2NyaXB0dXJlVGl0bGUgPSBgVGl0bGUgbWlzc2luZyBmcm9tIHByb2plY3QgbWFuaWZlc3RgXG4gIH1cblxuICAvKiogRHluYW1pY2FsbHkgY3JlYXRlcyB0aGUgc2NyaXB0dXJlIHNlbGVjdGlvbiBkcm9wZG93biB0byBiZSBpbnNlcnRlZCBpbnRvIGNhcmQgc2V0dGluZ3MgKi9cbiAgZnVuY3Rpb24gZ2V0U2NyaXB0dXJlU2VsZWN0b3IoKSB7XG4gICAgY29uc3Qgc2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnID0gZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzKHtcbiAgICAgIGxhYmVsLFxuICAgICAgcmVzb3VyY2VMaW5rOiBzY3JpcHR1cmVDb25maWcucmVzb3VyY2VMaW5rLFxuICAgICAgc2V0U2NyaXB0dXJlLFxuICAgICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QsXG4gICAgfSlcblxuICAgIHJldHVybiA8U2NyaXB0dXJlU2VsZWN0b3Igey4uLnNjcmlwdHVyZVNlbGVjdGlvbkNvbmZpZ30gc3R5bGU9e3N0eWxlfSBlcnJvck1lc3NhZ2U9e3VybEVycm9yfSAvPlxuICB9XG5cbiAgZnVuY3Rpb24gb25NZW51Q2xvc2UoKSB7XG4gICAgLy8gY29uc29sZS5sb2coYG9uTWVudUNsb3NlKClgKVxuICAgIHNldFN0YXRlKHsgdXJsRXJyb3I6IG51bGwgfSlcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgbGFuZ3VhZ2VJZF8gPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5sYW5ndWFnZUlkXG4gIGNvbnN0IGxhbmd1YWdlID0gZ2V0TGFuZ3VhZ2UoeyBsYW5ndWFnZUlkOiBsYW5ndWFnZUlkXyB9KVxuICBjb25zdCBkaXJlY3Rpb24gPSAobGFuZ3VhZ2U/LmRpcmVjdGlvbikgfHwgJ2x0cidcbiAgY29uc3QgX3JlZmVyZW5jZSA9IGN1cnJlbnRSZWZlcmVuY2UgfHwgcmVmZXJlbmNlXG5cbiAgY29uc3QgaXNIZWJyZXcgPSAobGFuZ3VhZ2VJZF8gPT09ICdoYm8nKVxuICBjb25zdCBmb250RmFjdG9yID0gaXNIZWJyZXcgPyAxLjQgOiAxIC8vIHdlIGF1dG9tYXRpY2FsbHkgc2NhbGUgdXAgZm9udCBzaXplIGZvciBIZWJyZXdcbiAgY29uc3Qgc2NhbGVkRm9udFNpemUgPSBmb250U2l6ZSAqIGZvbnRGYWN0b3JcblxuICBjb25zdCBpdGVtcyA9IG51bGxcbiAgY29uc3Qge1xuICAgIHN0YXRlOiB7XG4gICAgICBoZWFkZXJzLCBmaWx0ZXJzLCBpdGVtSW5kZXgsIG1hcmtkb3duVmlldyxcbiAgICB9LFxuICAgIGFjdGlvbnM6IHtcbiAgICAgIHNldEZpbHRlcnMsIHNldEl0ZW1JbmRleCwgc2V0TWFya2Rvd25WaWV3LFxuICAgIH0sXG4gIH0gPSB1c2VDYXJkU3RhdGUoeyBpdGVtcyB9KVxuXG4gIGNvbnN0IHJlZlN0eWxlID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIGZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxuICAgIGZvbnRTaXplOiBgJHtNYXRoLnJvdW5kKHNjYWxlZEZvbnRTaXplICogMC45KX0lYCxcbiAgfSksIFtzY2FsZWRGb250U2l6ZV0pXG5cbiAgY29uc3QgY29udGVudFN0eWxlID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIGZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxuICAgIGZvbnRTaXplOiBgJHtzY2FsZWRGb250U2l6ZX0lYCxcbiAgfSksIFtzY2FsZWRGb250U2l6ZV0pXG5cbiAgY29uc3Qgc2NyaXB0dXJlTGFiZWwgPSA8VGl0bGU+e3NjcmlwdHVyZVRpdGxlfTwvVGl0bGU+XG4gIGxldCBkaXNhYmxlV29yZFBvcG92ZXJfID0gZGlzYWJsZVdvcmRQb3BvdmVyXG5cbiAgaWYgKGRpc2FibGVXb3JkUG9wb3ZlciA9PT0gdW5kZWZpbmVkKSB7IC8vIGlmIG5vdCBzcGVjaWZpZWQsIHRoZW4gZGV0ZXJtaW5lIGlmIG9yaWdpbmFsIGxhbmd1YWdlIHJlc291cmNlXG4gICAgZGlzYWJsZVdvcmRQb3BvdmVyXyA9ICF1c2luZ09yaWdpbmFsQmlibGVcbiAgfVxuXG4gIGNvbnN0IGVuYWJsZUVkaXQgPSAhdXNpbmdPcmlnaW5hbEJpYmxlXG4gIGNvbnN0IGVuYWJsZUFsaWdubWVudCA9ICF1c2luZ09yaWdpbmFsQmlibGVcbiAgY29uc3Qgb3JpZ2luYWxSZXBvVXJsID0gaXNOZXdUZXN0YW1lbnQgPyBncmVla1JlcG9VcmwgOiBoZWJyZXdSZXBvVXJsXG4gIGNvbnN0IHNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcgPSB7XG4gICAgYXV0aGVudGljYXRpb246IGNhblVzZUVkaXRCcmFuY2ggPyBhdXRoZW50aWNhdGlvbiA6IG51bGwsXG4gICAgYm9va0luZGV4LFxuICAgIGN1cnJlbnRWZXJzZVJlZjogX3JlZmVyZW5jZSxcbiAgICBlbmFibGVFZGl0LFxuICAgIGVuYWJsZUFsaWdubWVudCxcbiAgICBodHRwQ29uZmlnLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpc05ld1Rlc3RhbWVudCxcbiAgICBsb2dnZWRJblVzZXI6IGNhblVzZUVkaXRCcmFuY2ggPyBsb2dnZWRJblVzZXIgOiBudWxsLFxuICAgIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcixcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgb3JpZ2luYWxSZXBvVXJsLFxuICAgIHNjcmlwdHVyZUNvbmZpZyxcbiAgICBzY3JpcHR1cmVTZXR0aW5ncyxcbiAgICBzdGFydEVkaXRCcmFuY2gsXG4gICAgc2V0U2F2ZWRDaGFuZ2VzOiBfc2V0U2F2ZWRDaGFuZ2VzLFxuICAgIHNvdXJjZUxhbmd1YWdlOiBpc05UXyA/IE5UX09SSUdfTEFORyA6IE9UX09SSUdfTEFORyxcbiAgICB0YXJnZXRMYW5ndWFnZTogbGFuZ3VhZ2UsXG4gICAgdGl0bGU6IHNjcmlwdHVyZVRpdGxlLFxuICAgIHdvcmtpbmdSZXNvdXJjZUJyYW5jaDogcmVmLFxuICB9XG5cbiAgLyoqXG4gICAqIHRoaXMgZ2V0cyBjYWxsZWQgd2hlbmV2ZXIgYSBzY3JpcHR1cmUgcGFuZSBoYXMgYSBjaGFuZ2UgaW4gc2F2ZSBzdGF0ZVxuICAgKiBAcGFyYW0ge251bWJlcn0gY3VycmVudEluZGV4XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc2F2ZWRcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gZ2V0Q2hhbmdlcyAtIHdpbGwgYmUgY2FsbGVkIHdoZW5ldmVyIHVzZXIgY2xpY2tzIHNhdmUgYnV0dG9uXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNsZWFyQ2hhbmdlcyAtIHdpbGwgYmUgY2FsbGVkIHdoZW5ldmVyIHNhdmUgaGFzIGNvbXBsZXRlZFxuICAgKiBAcGFyYW0ge29iamVjdH0gc3RhdGUgLSBjdXJyZW50IHN0YXRlIG9mIHdvcmQgYWxpZ25tZW50L2VkaXRcbiAgICovXG4gIGZ1bmN0aW9uIF9zZXRTYXZlZENoYW5nZXMoY3VycmVudEluZGV4LCBzYXZlZCwgeyBnZXRDaGFuZ2VzID0gbnVsbCwgY2xlYXJDaGFuZ2VzID0gbnVsbCwgc3RhdGUgPSBudWxsIH0pIHtcbiAgICBjb25zdCBfdW5zYXZlZENoYW5nZXNMaXN0ID0geyAuLi51bnNhdmVkQ2hhbmdlc0xpc3QgfVxuXG4gICAgaWYgKHNhdmVkKSB7XG4gICAgICBpZiAoX3Vuc2F2ZWRDaGFuZ2VzTGlzdC5oYXNPd25Qcm9wZXJ0eShjdXJyZW50SW5kZXgpKSB7XG4gICAgICAgIGRlbGV0ZSBfdW5zYXZlZENoYW5nZXNMaXN0W2N1cnJlbnRJbmRleF1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgX3Vuc2F2ZWRDaGFuZ2VzTGlzdFtjdXJyZW50SW5kZXhdID0geyBnZXRDaGFuZ2VzLCBjbGVhckNoYW5nZXMsIHN0YXRlIH0gLy8gdXBkYXRlIHdpdGggbGF0ZXN0XG4gICAgfVxuXG4gICAgY29uc3QgX2hhdmVVbnNhdmVkQ2hhbmdlcyA9ICEhT2JqZWN0LmtleXMoX3Vuc2F2ZWRDaGFuZ2VzTGlzdCkubGVuZ3RoXG5cbiAgICBpZiAoaGF2ZVVuc2F2ZWRDaGFuZ2VzICE9IF9oYXZlVW5zYXZlZENoYW5nZXMpIHtcbiAgICAgIHNldFNhdmVkQ2hhbmdlcyAmJiBzZXRTYXZlZENoYW5nZXMocmVzb3VyY2VJZCwgIV9oYXZlVW5zYXZlZENoYW5nZXMpXG4gICAgICBzZXRTdGF0ZSh7IGhhdmVVbnNhdmVkQ2hhbmdlczogX2hhdmVVbnNhdmVkQ2hhbmdlcyB9KVxuICAgIH1cblxuICAgIGlmICghaXNFcXVhbChfdW5zYXZlZENoYW5nZXNMaXN0LCB1bnNhdmVkQ2hhbmdlc0xpc3QpKSB7XG4gICAgICBzZXRTdGF0ZSh7IHVuc2F2ZWRDaGFuZ2VzTGlzdDogX3Vuc2F2ZWRDaGFuZ2VzTGlzdCB9KVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBzZWFyY2ggY2hhcHRlciBvciB2ZXJzZSBjaHVuayB0byBsaW5lIHRoYXQgc3RhcnRzIHdpdGggZmluZEl0ZW1cbiAgICogQHBhcmFtIHtudW1iZXJ8c3RyaW5nfSBmaW5kSXRlbVxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBjaHVua3NcbiAgICovXG4gIGZ1bmN0aW9uIGZpbmRSZWZJbkFycmF5KGZpbmRJdGVtLCBjaHVua3MpIHtcbiAgICBjb25zdCByZWZfID0gZmluZEl0ZW0gKyAnJ1xuICAgIGNvbnN0IHJlZkxlbiA9IHJlZl8ubGVuZ3RoXG4gICAgY29uc3QgaW5kZXggPSBjaHVua3MuZmluZEluZGV4KChjaHVuaywgaWR4KSA9PiB7XG4gICAgICBpZiAoaWR4ID4gMCkge1xuICAgICAgICBpZiAoY2h1bmsuc3Vic3RyaW5nKDAsIHJlZkxlbikgPT09IHJlZl8pIHtcbiAgICAgICAgICBjb25zdCBuZXh0Q2hhciA9IGNodW5rW3JlZkxlbl1cblxuICAgICAgICAgIGlmICgobmV4dENoYXIgPiAnOScpIHx8IChuZXh0Q2hhciA8ICcwJykpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9KVxuICAgIHJldHVybiBpbmRleFxuICB9XG5cbiAgZnVuY3Rpb24gZ2V0Qm9va05hbWUoKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IGJvb2tDYXBzID0gc2NyaXB0dXJlQ29uZmlnPy5yZWZlcmVuY2U/LmJvb2tJZCA/IHNjcmlwdHVyZUNvbmZpZy5yZWZlcmVuY2UuYm9va0lkLnRvVXBwZXJDYXNlKCkgOiAnJ1xuICAgIHJldHVybiBgJHtib29rSW5kZXh9LSR7Ym9va0NhcHN9LnVzZm1gXG4gIH1cblxuICBjb25zdCBmaWxlcGF0aCA9IGdldEJvb2tOYW1lKClcbiAgY29uc3Qgc2hhID0gZmV0Y2hlZFJlc291cmNlPy5zaGFcblxuICAvLyBrZWVwIHRyYWNrIG9mIHZlcnNlIGVkaXQgc3RhdGVcbiAgY29uc3Qge1xuICAgIGVycm9yOiBzYXZlRXJyb3IsXG4gICAgaXNFcnJvcjogaXNTYXZlRXJyb3IsXG4gICAgb25TYXZlRWRpdCxcbiAgICBvblNhdmVFZGl0UGF0Y2gsXG4gIH0gPSB1c2VFZGl0KHtcbiAgICBzaGEsXG4gICAgb3duZXIsXG4gICAgY29udGVudDogc2F2ZUNvbnRlbnQsXG4gICAgY29uZmlnOiB7XG4gICAgICBjYWNoZTogeyBtYXhBZ2U6IDAgfSxcbiAgICAgIC4uLmF1dGhlbnRpY2F0aW9uPy5jb25maWcsXG4gICAgICBkb250Q3JlYXRlQnJhbmNoOiB0cnVlLFxuICAgICAgdG9rZW46IGF1dGhlbnRpY2F0aW9uPy50b2tlbixcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRpbWVvdXQ6IGh0dHBDb25maWc/LnNlcnZlclRpbWVPdXQgfHwgaHR0cENvbmZpZz8udGltZW91dCB8fCAxMDAwMCxcbiAgICAgIHNlcnZlcixcbiAgICB9LFxuICAgIGF1dGhvcjogbG9nZ2VkSW5Vc2VyLFxuICAgIGVtYWlsOiBhdXRoZW50aWNhdGlvbj8udXNlcj8uZW1haWwsXG4gICAgdG9rZW46IGF1dGhlbnRpY2F0aW9uPy50b2tlbixcbiAgICBicmFuY2g6IHdvcmtpbmdSZXNvdXJjZUJyYW5jaCxcbiAgICBmaWxlcGF0aCxcbiAgICByZXBvLFxuICB9KVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHdoZW4gd2UgZ2V0IGEgc2F2ZSBzYXZlRXJyb3JcbiAgICBpZiAoc2F2ZUVycm9yICYmIGlzU2F2ZUVycm9yICYmICFzdGFydFNhdmUpIHsgLy8gaWYgZXJyb3IgdGhlbiBzaG93IGFmdGVyIHNhdmUgY29tcGxldGVzLCBzaW5jZSB3ZSBtYXkgcmV0cnlcbiAgICAgIGNvbnNvbGUubG9nKGBzYXZlIGVycm9yYCwgc2F2ZUVycm9yKVxuICAgICAgb25SZXNvdXJjZUVycm9yICYmIG9uUmVzb3VyY2VFcnJvcihudWxsLCBmYWxzZSwgbnVsbCwgYEVycm9yIHNhdmluZyAke2xhbmd1YWdlSWRffV8ke3Jlc291cmNlSWR9ICR7c2F2ZUVycm9yfWAsIHRydWUpXG4gICAgfVxuICB9LCBbc2F2ZUVycm9yLCBpc1NhdmVFcnJvciwgc3RhcnRTYXZlXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB3aGVuIHN0YXJ0U2F2ZSBnb2VzIHRydWUsIHNhdmUgZWRpdHMgdG8gdXNlciBicmFuY2ggYW5kIHRoZW4gY2xlYXIgc3RhcnRTYXZlXG4gICAgZnVuY3Rpb24gX3NhdmVTdWNjZXNmdWwoKSB7XG4gICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZlIHNjcmlwdHVyZSBlZGl0cyBzdWNjZXNzYClcbiAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBwcmV2Q2FyZHNTYXZpbmcuZmlsdGVyKGNhcmRJZCA9PiBjYXJkSWQgIT09IGNhcmRSZXNvdXJjZUlkKSlcbiAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgc3RhcnRTYXZlOiBmYWxzZSxcbiAgICAgIH0pXG5cbiAgICAgIGNvbnN0IHVuc2F2ZWRDYXJkSW5kaWNlcyA9IE9iamVjdC5rZXlzKHVuc2F2ZWRDaGFuZ2VzTGlzdClcblxuICAgICAgaWYgKHVuc2F2ZWRDYXJkSW5kaWNlcz8ubGVuZ3RoKSB7XG4gICAgICAgIGZvciAoY29uc3QgY2FyZEluZGV4IG9mIHVuc2F2ZWRDYXJkSW5kaWNlcykge1xuICAgICAgICAgIGNvbnN0IHtjbGVhckNoYW5nZXN9ID0gdW5zYXZlZENoYW5nZXNMaXN0W2NhcmRJbmRleF1cbiAgICAgICAgICBjbGVhckNoYW5nZXMgJiYgY2xlYXJDaGFuZ2VzKClcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zb2xlLmluZm8oJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gUmVsb2FkaW5nIHJlc291cmNlJylcbiAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgc3RhcnRTYXZlOiBmYWxzZSxcbiAgICAgICAgcmVhZHlGb3JGZXRjaDogdHJ1ZSxcbiAgICAgICAgc2F2ZUZ1bGxCaWJsZUNvbnRlbnQ6IG51bGwsXG4gICAgICAgIHNhdmVDb250ZW50OiBudWxsLFxuICAgICAgICByZWY6IHVzZXJFZGl0QnJhbmNoTmFtZSxcbiAgICAgIH0pXG4gICAgICBkZWxheSgxMDApLnRoZW4oKCkgPT4ge1xuICAgICAgICBzZXRDYXJkc1NhdmluZyhwcmV2Q2FyZHNTYXZpbmcgPT4gcHJldkNhcmRzU2F2aW5nLmZpbHRlcihjYXJkSWQgPT4gY2FyZElkICE9PSBjYXJkUmVzb3VyY2VJZCkpXG4gICAgICAgIHNjcmlwdHVyZUNvbmZpZz8ucmVsb2FkUmVzb3VyY2Uoc2hhLCB1c2VyRWRpdEJyYW5jaE5hbWUpXG4gICAgICB9KVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICBjb25zdCBfc2F2ZUVkaXQgPSBhc3luYyAoKSA9PiB7IC8vIGJlZ2luIHVwbG9hZGluZyBuZXcgVVNGTVxuICAgICAgY29uc29sZS5pbmZvKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIFVzaW5nIHNoYTogJHtzaGF9YClcbiAgICAgIGxldCB1cGxvYWRGdW5jdGlvbiA9IG9uU2F2ZUVkaXRcbiAgICAgIGlmIChzYXZlRGlmZlBhdGNoKSB7XG4gICAgICAgIHVwbG9hZEZ1bmN0aW9uID0gb25TYXZlRWRpdFBhdGNoIC8vIGlmIHdlIGFyZSBzZW5kaW5nIHVwIGEgZGlmZnBhdGNoLCB3ZSB3aWxsIHVzZSB0aGlzIG1ldGhvZFxuICAgICAgfVxuICAgICAgbGV0IHN1Y2Nlc3MgPSBhd2FpdCB1cGxvYWRGdW5jdGlvbih1c2VyRWRpdEJyYW5jaE5hbWUpLy8gcHVzaCBjaGFuZ2UgdG8gc2VydmVyXG4gICAgICBsZXQgZXJyb3IgPSBzdWNjZXNzID8gbnVsbCA6ICdzYXZpbmcgY2hhbmdlZCBzY3JpcHR1cmUgZmFpbGVkJ1xuXG4gICAgICBpZiAoIXN1Y2Nlc3MpIHsgLy8gaWYgc2F2ZSBmYWlsZWQsIGF0dGVtcHQgYSByZXRyeVxuICAgICAgICBjb25zb2xlLmVycm9yKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmluZyBjaGFuZ2VkIHNjcmlwdHVyZSBmYWlsZWQsIHJldHJ5aW5nJylcbiAgICAgICAgYXdhaXQgZGVsYXkoNTAwKSAvLyBzaW5jZSB3ZSBoYWQgYW4gZXJyb3IsIHdhaXQgZm9yIGRhdGEgdG8gdXBkYXRlIG9uIHNlcnZlciBiZWZvcmUgZ2V0dGluZyB0aGUgbGF0ZXN0XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgLy8gZmV0Y2ggdGhlIGxhdGVzdCBib29rIGNvbnRlbnQsIHNvIHdlIGNhbiB0ZWxsIGlmIGxhdGVzdCBjaGFuZ2VzIHdlcmUgc2F2ZWQgYW5kIGhhdmUgdGhlIGxhdGVzdCBmaWxlIHNoYVxuICAgICAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgZmV0Y2hCaWJsZUJvb2soc2VydmVyLCBodHRwQ29uZmlnLCBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlLCBzY3JpcHR1cmVDb25maWc/LnJlZmVyZW5jZSlcbiAgICAgICAgZXJyb3IgPSByZXN1bHRzPy5lcnJvclxuICAgICAgICBsZXQgX3NhdmVDb250ZW50ID0gc2F2ZUNvbnRlbnRcbiAgICAgICAgbGV0IGZpbGVTaGEgPSBudWxsXG4gICAgICAgIGNvbnN0IHNhdmVkQmlibGVVc2ZtID0gcmVzdWx0cz8uYmlibGVVc2ZtXG4gICAgICAgIGNvbnN0IGVkaXRlZEJpYmxlVXNmbSA9IHNhdmVGdWxsQmlibGVDb250ZW50Py5uZXdcbiAgICAgICAgbGV0IHVwVG9EYXRlID0gc2F2ZWRCaWJsZVVzZm0gPT09IGVkaXRlZEJpYmxlVXNmbSAvLyBjaGVjayBpZiBuZXcgYmlibGUgY29udGVudCBkaWZmZXJzIGZyb20gbGF0ZXN0IG9uIHJlcG9cblxuICAgICAgICBpZiAoIWVycm9yKSB7XG4gICAgICAgICAgaWYgKHVwVG9EYXRlKSB7IC8vIGlmIHRoZSBkYXRhIHdlIGFyZSB0cnlpbmcgdG8gc2F2ZSBtYXRjaGVzIHdoYXQgaXMgbm93IG9uIHRoZSBzZXJ2ZXIgdGhlcmUgaXMgbm90aGluZyB0byBkb1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gZGF0YSB3YXMgY29ycmVjdGx5IHVwbG9hZGVkLCBzbyBub3RoaW5nIG1vcmUgdG8gZG8nKVxuICAgICAgICAgICAgc3VjY2VzcyA9IHRydWVcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHNhdmVEaWZmUGF0Y2gpIHtcbiAgICAgICAgICAgICAgYXdhaXQgZGVsYXkoMTAwKSAvLyBhbGxvdyBVSSB0byB1cGRhdGUgYmVmb3JlIHJ1bm5pbmcgY29tcHV0YXRpb25hbGx5IGV4cGVuc2l2ZSBmdW5jdGlvblxuICAgICAgICAgICAgICAvLyByZWdlbmVyYXRlIHRoZSBwYXRjaCBhZ2FpbnN0IHRoZSBsYXRlc3QgY29udGVudFxuICAgICAgICAgICAgICBjb25zdCBkaWZmUGF0Y2ggPSBnZXRQYXRjaChzYXZlRnVsbEJpYmxlQ29udGVudD8uZmlsZW5hbWUsIHNhdmVkQmlibGVVc2ZtLCBlZGl0ZWRCaWJsZVVzZm0sIGZhbHNlKVxuICAgICAgICAgICAgICBfc2F2ZUNvbnRlbnQgPSBkaWZmUGF0Y2hcbiAgICAgICAgICAgICAgZmlsZVNoYSA9IHJlc3VsdHM/LnNoYVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzdWNjZXNzID0gYXdhaXQgdXBsb2FkRnVuY3Rpb24odXNlckVkaXRCcmFuY2hOYW1lLCBfc2F2ZUNvbnRlbnQsIGZpbGVTaGEpIC8vIHB1c2ggY2hhbmdlIHRvIHNlcnZlclxuICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgICAgICAgIGVycm9yID0gJ3NhdmluZyBjaGFuZ2VkIHNjcmlwdHVyZSBmYWlsZWQgb24gc2Vjb25kIGF0dGVtcHQnXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZygnc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZlIHN1Y2Nlc3NmdWwgb24gc2Vjb25kIGF0dGVtcHQnKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIWVycm9yICYmIHN1Y2Nlc3MpIHsgLy8gaWYgbm8gZXJyb3IgbWVzc2FnZSBhbmQgc2F2ZSB3YXMgYSBzdWNjZXNzXG4gICAgICAgIHJldHVybiBfc2F2ZVN1Y2Nlc2Z1bCgpIC8vIG5vdGhpbmcgdG8gZG9cbiAgICAgIH1cblxuICAgICAgY29uc29sZS5lcnJvcihgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSAke2Vycm9yIHx8ICd1bmtub3duIHNhdmUgZXJyb3InfWApXG4gICAgICBzZXRDYXJkc1NhdmluZyhwcmV2Q2FyZHNTYXZpbmcgPT4gcHJldkNhcmRzU2F2aW5nLmZpbHRlcihjYXJkSWQgPT4gY2FyZElkICE9PSBjYXJkUmVzb3VyY2VJZCkpXG4gICAgICBzZXRTdGF0ZSh7c3RhcnRTYXZlOiBmYWxzZX0pXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAoc3RhcnRTYXZlKSB7XG4gICAgICBpZiAoIWVkaXRCcmFuY2hSZWFkeSkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gZWRpdCBicmFuY2ggbm90IHlldCBjcmVhdGVkYClcbiAgICAgIH0gZWxzZSBpZiAoIXNoYSkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gc2F2ZSBzaGEgbm90IHlldCByZWFkeWApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gY2FsbGluZyBfc2F2ZUVkaXQoKWApXG4gICAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBbLi4ucHJldkNhcmRzU2F2aW5nLCBjYXJkUmVzb3VyY2VJZF0pXG4gICAgICAgIF9zYXZlRWRpdCgpXG4gICAgICB9XG4gICAgfVxuICB9LCBbc3RhcnRTYXZlLCBlZGl0QnJhbmNoUmVhZHksIHNoYV0pXG5cbiAgLyoqXG4gICAqIGNvbnZlcnQgdXBkYXRlZFZlcnNlT2JqZWN0cyB0byBVU0ZNIGFuZCBtZXJnZSBpbnRvIHRoZSBiaWJsZVVzZm1cbiAgICogQHBhcmFtIHtzdHJpbmd9IGJpYmxlVXNmbSAtIFVTRk0gb2YgYmlibGVcbiAgICogQHBhcmFtIHtTY3JpcHR1cmVSZWZlcmVuY2VUeXBlfSByZWYgLSByZWZlcmVuY2Ugb2YgdmVyc2UgdG8gbWVyZ2UgaW5cbiAgICogQHBhcmFtIHtWZXJzZU9iamVjdHNUeXBlfSB1cGRhdGVkVmVyc2VPYmplY3RzIC0gbmV3IHZlcnNlIGluIHZlcnNlT2JqZWN0IGZvcm1hdFxuICAgKiBAcGFyYW0ge251bWJlcn0gY2FyZE51bVxuICAgKi9cbiAgZnVuY3Rpb24gbWVyZ2VWZXJzZU9iamVjdHNJbnRvQmlibGVVc2ZtKGJpYmxlVXNmbTogc3RyaW5nLCByZWY6IFNjcmlwdHVyZVJlZmVyZW5jZVR5cGUsIHVwZGF0ZWRWZXJzZU9iamVjdHM6IFZlcnNlT2JqZWN0c1R5cGUsIGNhcmROdW06IG51bWJlcikge1xuICAgIGxldCBuZXdVc2ZtXG4gICAgY29uc3QgY2hhcHRlckNodW5rcyA9IGJpYmxlVXNmbT8uc3BsaXQoJ1xcXFxjICcpXG4gICAgY29uc3QgY2hhcHRlckluZGV4ID0gZmluZFJlZkluQXJyYXkocmVmPy5jaGFwdGVyLCBjaGFwdGVyQ2h1bmtzKVxuXG4gICAgaWYgKGNoYXB0ZXJJbmRleCA+PSAwKSB7XG4gICAgICBjb25zdCBjdXJyZW50Q2hhcHRlciA9IGNoYXB0ZXJDaHVua3NbY2hhcHRlckluZGV4XVxuICAgICAgbGV0IHZlcnNlQ2h1bmtzID0gY3VycmVudENoYXB0ZXIuc3BsaXQoJ1xcXFx2ICcpXG4gICAgICBjb25zdCB2ZXJzZUluZGV4ID0gZmluZFJlZkluQXJyYXkocmVmPy52ZXJzZSwgdmVyc2VDaHVua3MpXG4gICAgICBjb25zdCBmcm9udE1hdHRlciA9IHJlZj8udmVyc2UgPT09ICdmcm9udCdcblxuICAgICAgaWYgKGZyb250TWF0dGVyIHx8IHZlcnNlSW5kZXggPj0gMCkge1xuICAgICAgICBjb25zdCBuZXdWZXJzZVVzZm0gPSBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLmNvbnZlcnRWZXJzZURhdGFUb1VTRk0odXBkYXRlZFZlcnNlT2JqZWN0cylcbiAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gbmV3IFVTRk0gZm9yIGNhcmQgJHtjYXJkTnVtfSwgdmVyc2UgJHtyZWY/LnZlcnNlfTp9IC0gJHtuZXdWZXJzZVVzZm0uc3Vic3RyaW5nKDAsIDEwMCl9YClcbiAgICAgICAgaWYgKGZyb250TWF0dGVyKSB7IC8vIGZyb250IG1hdHRlciBnb2VzIGJlZm9yZSBmaXJzdCB2ZXJzZVxuICAgICAgICAgIGNvbnN0IG9sZFZlcnNlID0gdmVyc2VDaHVua3NbMF1cbiAgICAgICAgICBjb25zdCBwcmVmaXhMZW4gPSBvbGRWZXJzZS5pbmRleE9mKCdcXG4nKSAvLyBjaGFyYWN0ZXJzIGJlZm9yZSB0aGUgZnJvbnQgbWF0dGVyIHRleHRcbiAgICAgICAgICB2ZXJzZUNodW5rc1swXSA9IG9sZFZlcnNlLnN1YnN0cmluZygwLCBwcmVmaXhMZW4gKyAxKSArIG5ld1ZlcnNlVXNmbVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG9sZFZlcnNlID0gdmVyc2VDaHVua3NbdmVyc2VJbmRleF1cbiAgICAgICAgICBjb25zdCB2ZXJzZU51bUxlbiA9IChyZWY/LnZlcnNlICsgJycpLmxlbmd0aCAvLyBjaGFyYWN0ZXJzIGJlZm9yZSB0aGUgdmVyc2UgdGV4dFxuICAgICAgICAgIHZlcnNlQ2h1bmtzW3ZlcnNlSW5kZXhdID0gb2xkVmVyc2Uuc3Vic3RyaW5nKDAsIHZlcnNlTnVtTGVuICsgMSkgKyBuZXdWZXJzZVVzZm1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXdDaGFwdGVyID0gdmVyc2VDaHVua3Muam9pbignXFxcXHYgJylcbiAgICAgICAgY2hhcHRlckNodW5rc1tjaGFwdGVySW5kZXhdID0gbmV3Q2hhcHRlclxuICAgICAgICBuZXdVc2ZtID0gY2hhcHRlckNodW5rcy5qb2luKCdcXFxcYyAnKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3VXNmbVxuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gZm9yIGVhY2ggdW5zYXZlZCBjaGFuZ2UsIGNhbGwgaW50byBzY3JpcHR1cmVQYW5lIHRvIGdldCBsYXRlc3QgY2hhbmdlcyBmb3IgdmVyc2UgdG8gc2F2ZVxuICAgIGFzeW5jIGZ1bmN0aW9uIGdldFJlYWR5Rm9yU2F2ZSgpIHtcbiAgICAgIGlmIChzYXZlQ2xpY2tlZCkge1xuICAgICAgICBsZXQgY3JlYXRlRWRpdEJyYW5jaCA9ICFfdXNpbmdVc2VyQnJhbmNoXG5cbiAgICAgICAgaWYgKCFjcmVhdGVFZGl0QnJhbmNoKSB7IC8vIGlmIGFscmVhZHkgdXNpbmcgdGhlIHVzZXIgYnJhbmNoXG4gICAgICAgICAgaWYgKHdvcmtpbmdSZXNvdXJjZUJyYW5jaCAhPT0gdXNlckVkaXRCcmFuY2hOYW1lKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIHN0YXRlIGNvbmZsaWN0IC0gc2hvdWxkIGJlIGluIHVzZXIgYnJhbmNoICR7dXNlckVkaXRCcmFuY2hOYW1lfSwgYnV0IGFjdHVhbGx5IHVzaW5nICR7d29ya2luZ1Jlc291cmNlQnJhbmNofWApXG4gICAgICAgICAgICBjcmVhdGVFZGl0QnJhbmNoID0gdHJ1ZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gYWxyZWFkeSB1c2luZyBlZGl0IGJyYW5jaDogJHt3b3JraW5nUmVzb3VyY2VCcmFuY2h9YClcbiAgICAgICAgICAgIHNldFN0YXRlKHsgZWRpdEJyYW5jaFJlYWR5OiB0cnVlIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNyZWF0ZUVkaXRCcmFuY2gpIHsgLy8gaWYgbm90IHlldCB1c2luZyB0aGUgdXNlciBicmFuY2gsIGNyZWF0ZSBpdFxuICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBjcmVhdGluZyBlZGl0IGJyYW5jaGApXG4gICAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgICAgZWRpdEJyYW5jaFJlYWR5OiBmYWxzZSxcbiAgICAgICAgICAgIHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLFxuICAgICAgICAgICAgc2hhOiBudWxsLFxuICAgICAgICAgIH0pIC8vIHdlIHdpbGwgbmVlZCBhIG5ldyBzaGEgZm9yIGJvb2svYnJhbmNoXG5cbiAgICAgICAgICBjb25zdCBicmFuY2ggPSBhd2FpdCBzdGFydEVkaXRCcmFuY2goKVxuXG4gICAgICAgICAgaWYgKGJyYW5jaCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGVkaXQgYnJhbmNoIGNyZWF0ZWRgKVxuICAgICAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgICAgICBlZGl0QnJhbmNoUmVhZHk6IHRydWUsXG4gICAgICAgICAgICAgIHJlYWR5Rm9yRmV0Y2g6IHRydWUsXG4gICAgICAgICAgICAgIHJlZjogYnJhbmNoLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBlcnJvciBjcmVhdGluZyBlZGl0IGJyYW5jaCcpXG4gICAgICAgICAgICBvblJlc291cmNlRXJyb3IgJiYgb25SZXNvdXJjZUVycm9yKG51bGwsIGZhbHNlLCBudWxsLCBgRXJyb3IgY3JlYXRpbmcgZWRpdCBicmFuY2ggJHtsYW5ndWFnZUlkX31fJHtyZXNvdXJjZUlkfWAsIHRydWUpXG4gICAgICAgICAgICBzZXRTdGF0ZSh7IHNhdmVDbGlja2VkOiBmYWxzZSB9KVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGdldHRpbmcgdmVyc2UgY2hhbmdlc2ApXG4gICAgICAgIGNvbnN0IHVuc2F2ZWRDYXJkSW5kaWNlcyA9IE9iamVjdC5rZXlzKHVuc2F2ZWRDaGFuZ2VzTGlzdClcblxuICAgICAgICBpZiAodW5zYXZlZENhcmRJbmRpY2VzPy5sZW5ndGgpIHtcbiAgICAgICAgICBsZXQgYmlibGVVc2ZtSW5pdGlhbCA9IGdldEN1cnJlbnRCb29rKHNjcmlwdHVyZUNvbmZpZywgYm9va0lkKSAvLyBnZXQgb3JpZ2luYWwgVVNGTVxuICAgICAgICAgIGxldCBiaWJsZVVzZm1OZXcgPSBiaWJsZVVzZm1Jbml0aWFsIC8vIG1ha2UgYSBjb3B5IHRvIGVkaXRcbiAgICAgICAgICBsZXQgbWVyZ2VGYWlsID0gZmFsc2VcblxuICAgICAgICAgIGlmIChiaWJsZVVzZm1Jbml0aWFsKSB7XG4gICAgICAgICAgICBsZXQgY2FyZE51bSA9IDBcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjYXJkSW5kZXggb2YgdW5zYXZlZENhcmRJbmRpY2VzKSB7XG4gICAgICAgICAgICAgIGNhcmROdW0gPSBwYXJzZUludChjYXJkSW5kZXgpXG4gICAgICAgICAgICAgIGNvbnN0IHsgZ2V0Q2hhbmdlcywgc3RhdGUgfSA9IHVuc2F2ZWRDaGFuZ2VzTGlzdFtjYXJkTnVtXVxuXG4gICAgICAgICAgICAgIGlmIChnZXRDaGFuZ2VzKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5ld1VzZm1cbiAgICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgICByZWYsXG4gICAgICAgICAgICAgICAgICB1cGRhdGVkVmVyc2VPYmplY3RzLFxuICAgICAgICAgICAgICAgIH0gPSBnZXRDaGFuZ2VzKHN0YXRlKVxuXG4gICAgICAgICAgICAgICAgaWYgKHVwZGF0ZWRWZXJzZU9iamVjdHMgJiYgYmlibGVVc2ZtTmV3KSB7IC8vIGp1c3QgcmVwbGFjZSB2ZXJzZVxuICAgICAgICAgICAgICAgICAgbmV3VXNmbSA9IG1lcmdlVmVyc2VPYmplY3RzSW50b0JpYmxlVXNmbShiaWJsZVVzZm1OZXcsIHJlZiwgdXBkYXRlZFZlcnNlT2JqZWN0cywgY2FyZE51bSlcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAobmV3VXNmbSkge1xuICAgICAgICAgICAgICAgICAgYmlibGVVc2ZtTmV3ID0gbmV3VXNmbVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBtZXJnZUZhaWwgPSB0cnVlXG4gICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGxldCBzYXZlRGlmZlBhdGNoID0gZmFsc2UgLy8gaWYgdHJ1ZSB0aGVuIHdlIHdpbGwgc2VuZCB1cCBhIGRpZmZwYXRjaCBpbnN0ZWFkIG9mIHRoZSB3aG9sZSBib29rXG4gICAgICAgICAgbGV0IF9zYXZlRnVsbEJpYmxlQ29udGVudCA9IG51bGxcbiAgICAgICAgICBsZXQgX3NhdmVDb250ZW50ID0gYmlibGVVc2ZtTmV3XG5cbiAgICAgICAgICBpZiAobWVyZ2VGYWlsKSB7IC8vIGlmIHdlIGZhaWxlZCB0byBtZXJnZSwgZmFsbGJhY2sgdG8gYnJ1dGUgZm9yY2UgdmVyc2Ugb2JqZWN0cyB0byBVU0ZNXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCR7Y2FyZE51bX0pIC0gdmVyc2Ugbm90IGZvdW5kLCBmYWxsaW5nIGJhY2sgdG8gaW5zZXJ0aW5nIHZlcnNlIG9iamVjdGApXG4gICAgICAgICAgICBsZXQgbmV3Qm9va0pzb25cblxuICAgICAgICAgICAgZm9yIChjb25zdCBjYXJkSW5kZXggb2YgdW5zYXZlZENhcmRJbmRpY2VzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNhcmROdW0gPSBwYXJzZUludChjYXJkSW5kZXgpXG4gICAgICAgICAgICAgIGNvbnN0IHsgZ2V0Q2hhbmdlcywgc3RhdGUgfSA9IHVuc2F2ZWRDaGFuZ2VzTGlzdFtjYXJkTnVtXVxuXG4gICAgICAgICAgICAgIGlmIChnZXRDaGFuZ2VzKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5ld1VzZm1cbiAgICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgICBuZXdWZXJzZVRleHQsXG4gICAgICAgICAgICAgICAgICByZWYsXG4gICAgICAgICAgICAgICAgICB1cGRhdGVkVmVyc2VPYmplY3RzLFxuICAgICAgICAgICAgICAgIH0gPSBnZXRDaGFuZ2VzKHN0YXRlKVxuXG4gICAgICAgICAgICAgICAgaWYgKHVwZGF0ZWRWZXJzZU9iamVjdHMgJiYgIW5ld1VzZm0pIHtcbiAgICAgICAgICAgICAgICAgIGxldCB0YXJnZXRWZXJzZU9iamVjdHNfID0gbnVsbFxuXG4gICAgICAgICAgICAgICAgICBpZiAocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdWZXJzZVRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHRhcmdldFZlcnNlT2JqZWN0cyB9ID0gQWxpZ25tZW50SGVscGVycy51cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSh1cGRhdGVkVmVyc2VPYmplY3RzLCBuZXdWZXJzZVRleHQpXG4gICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VmVyc2VPYmplY3RzXyA9IHRhcmdldFZlcnNlT2JqZWN0c1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFZlcnNlT2JqZWN0c18gPSB1cGRhdGVkVmVyc2VPYmplY3RzXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbmV3Qm9va0pzb24gPSB0YXJnZXRWZXJzZU9iamVjdHNfICYmIHNjcmlwdHVyZUNvbmZpZz8udXBkYXRlVmVyc2UocmVmLmNoYXB0ZXIsIHJlZi52ZXJzZSwge3ZlcnNlT2JqZWN0czogdGFyZ2V0VmVyc2VPYmplY3RzX30pXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIF9zYXZlQ29udGVudCA9IHVzZm1qcy50b1VTRk0obmV3Qm9va0pzb24sIHsgZm9yY2VkTmV3TGluZXM6IHRydWUgfSlcbiAgICAgICAgICB9IGVsc2UgeyAvLyBpZiBvbmx5IGNoYW5nZWQgYSBmZXcgdmVyc2VzLCB3ZSB3aWxsIGp1c3QgbWFrZSBhIGRpZmZwYXRjaCBpbnN0ZWFkIG9mIHNlbmRpbmcgdGhlIHdob2xlIGJvb2tcbiAgICAgICAgICAgIGNvbnN0IGZpbGVuYW1lID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXRlPy5yZXNvdXJjZT8ubmFtZSAvLyBMaWtlIFwiNTctVElULnVzZm1cIlxuICAgICAgICAgICAgaWYgKGZpbGVuYW1lICYmIGJpYmxlVXNmbU5ldyAmJiBiaWJsZVVzZm1Jbml0aWFsKSB7IC8vIG1ha2Ugc3VyZSB3ZSBoYXZlIGV2ZXJ5dGhpbmcgbmVlZGVkIHRvIG1ha2UgYSBwYXRjaFxuICAgICAgICAgICAgICBpZiAoYmlibGVVc2ZtSW5pdGlhbCA9PT0gYmlibGVVc2ZtTmV3KSB7IC8vIGlmIG5vIGRhdGEgY2hhbmdlLCB0aGVuIHNraXAgc2F2ZSBiZWNhdXNlIERDUyBjcmFzaGVzIG9uIGFuIGVtcHR5IHBhdGNoXG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHRoZXJlIGlzIG5vdGhpbmcgdG8gc2F2ZSwgc2tpcHBpbmdgKVxuICAgICAgICAgICAgICAgIHNldFN0YXRlKHsgc2F2ZUNsaWNrZWQ6IGZhbHNlIH0pXG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgZGlmZlBhdGNoID0gZ2V0UGF0Y2goZmlsZW5hbWUsIGJpYmxlVXNmbUluaXRpYWwsIGJpYmxlVXNmbU5ldywgZmFsc2UpXG4gICAgICAgICAgICAgIHNhdmVEaWZmUGF0Y2ggPSB0cnVlXG4gICAgICAgICAgICAgIF9zYXZlQ29udGVudCA9IGRpZmZQYXRjaCAvLyByZXBsYWNlIHdob2xlIGJvb2sgY29udGVudCB3aXRoIGp1c3QgcGF0Y2ggZGF0YSAobXVjaCBmYXN0ZXIgdXBsb2FkcylcbiAgICAgICAgICAgICAgX3NhdmVGdWxsQmlibGVDb250ZW50ID0geyAgLy8ga2VlcCB0cmFjayBvZiBwYXRjaCBkYXRhIGluIGNhc2Ugd2UgbmVlZCB0byByZXRyeSBzYXZlXG4gICAgICAgICAgICAgICAgZmlsZW5hbWUsXG4gICAgICAgICAgICAgICAgaW5pdGlhbDogYmlibGVVc2ZtSW5pdGlhbCxcbiAgICAgICAgICAgICAgICBuZXc6IGJpYmxlVXNmbU5ldyxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChiaWJsZVVzZm1OZXcpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmluZyBuZXcgVVNGTTogJHtiaWJsZVVzZm1OZXcuc3Vic3RyaW5nKDAsIDEwMCl9Li4uYClcbiAgICAgICAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBbLi4ucHJldkNhcmRzU2F2aW5nLCBjYXJkUmVzb3VyY2VJZF0pXG4gICAgICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgICAgIHNhdmVDb250ZW50OiBfc2F2ZUNvbnRlbnQsXG4gICAgICAgICAgICAgIHNhdmVDbGlja2VkOiBmYWxzZSxcbiAgICAgICAgICAgICAgc2F2ZURpZmZQYXRjaCxcbiAgICAgICAgICAgICAgc2F2ZUZ1bGxCaWJsZUNvbnRlbnQ6IF9zYXZlRnVsbEJpYmxlQ29udGVudCxcbiAgICAgICAgICAgICAgc3RhcnRTYXZlOiB0cnVlLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBFcnJvciByZXRyaWV2aW5nIHRoZSBjb3JyZWN0IGJvb2sgZGF0YTogaW5jb3JyZWN0IGJvb2sgJHtsYW5ndWFnZUlkX31fJHtyZXNvdXJjZUlkfWApXG4gICAgICAgICAgICBvblJlc291cmNlRXJyb3IgJiYgb25SZXNvdXJjZUVycm9yKG51bGwsIGZhbHNlLCBudWxsLCBgRXJyb3IgcmV0cmlldmluZyB0aGUgY29ycmVjdCBib29rIGRhdGEgJHtsYW5ndWFnZUlkX31fJHtyZXNvdXJjZUlkfWAsIHRydWUpXG4gICAgICAgICAgICBzZXRTdGF0ZSh7IHNhdmVDbGlja2VkOiBmYWxzZSB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGdldFJlYWR5Rm9yU2F2ZSgpXG4gIH0sIFtzYXZlQ2xpY2tlZF0pXG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCB7IGNoYXB0ZXIgfSA9IF9yZWZlcmVuY2UgfHwge31cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IF92ZXJzZXNGb3JSZWYgPSBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZlxuICAgIGxldCBuZXdTZWxlY3Rpb25zID0gbmV3IE1hcCgpXG4gICAgbGV0IHVwZGF0ZVNlbGVjdGlvbnMgPSBmYWxzZVxuICAgIGNvbnN0IF9tYXAgPSBuZXdTZWxlY3Rpb25zXG4gICAgY29uc3Qgb3JpZ2luYWxCb29rSWQgPSBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPy5ib29rSWRcbiAgICBjb25zdCBib29rVmVyc2VPYmplY3QgPSBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPy5jaGFwdGVyc1xuICAgIGxldCBuZXdTZWxlY3RlZFF1b3RlID0gbnVsbFxuXG4gICAgLy8gaWYgd2UgaGF2ZSBldmVyeXRoaW5nIHdlIG5lZWQgdG8gY2FsY3VsYXRlIHNlbGVjdGlvbnNcbiAgICBpZiAoX3ZlcnNlc0ZvclJlZj8ubGVuZ3RoICYmXG4gICAgICBib29rVmVyc2VPYmplY3QgJiZcbiAgICAgIChib29rSWQgPT09IG9yaWdpbmFsQm9va0lkKSAmJlxuICAgICAgYm9va1ZlcnNlT2JqZWN0W2NoYXB0ZXJdICYmIC8vIHdlIG5lZWQgdG8gaGF2ZSBkYXRhIGZvciBjaGFwdGVyXG4gICAgICBzZWxlY3RlZFF1b3RlPy5xdW90ZVxuICAgICkge1xuICAgICAgLy8gaWYgcXVvdGUgaXMgZGlmZmVyZW50IHRoYW4gbGFzdFxuICAgICAgaWYgKCFpc0VxdWFsKGxhc3RTZWxlY3RlZFF1b3RlLCBzZWxlY3RlZFF1b3RlKSB8fFxuICAgICAgICAhaXNFcXVhbCh2ZXJzZXNGb3JSZWYsIF92ZXJzZXNGb3JSZWYpKSB7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsVmVyc2VzID0ge31cbiAgICAgICAgY29uc3Qgc3Vic3RpdHV0ZSA9IHt9IC8vIGtlZXAgdHJhY2sgb2YgdmVyc2Ugc3Vic3RpdHV0aW9uc1xuICAgICAgICBsZXQgc3RhcnRWZXJzZSA9IF92ZXJzZXNGb3JSZWZbMF0udmVyc2VcblxuICAgICAgICBpZiAodHlwZW9mIHN0YXJ0VmVyc2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgc3RhcnRWZXJzZSA9IHBhcnNlSW50KHN0YXJ0VmVyc2UpXG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbGFzdFZlcnNlID0gc3RhcnRWZXJzZVxuXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsID0gX3ZlcnNlc0ZvclJlZi5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICBjb25zdCB2ZXJzZVJlZiA9IF92ZXJzZXNGb3JSZWZbaV1cbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBjaGFwdGVyLFxuICAgICAgICAgICAgdmVyc2UsXG4gICAgICAgICAgfSA9IHZlcnNlUmVmXG4gICAgICAgICAgLy8gVFJJQ0tZIC0gd2UgcmVtYXAgdmVyc2VzIGluIHJlZmVyZW5jZSByYW5nZSB0byBhIGxpbmVhciBzZXJpZXMgb2YgdmVyc2VzIHNvIHZlcnNlIHNwYW5zIGRvbid0IGNob2tlIGdldFF1b3RlTWF0Y2hlc0luQm9va1JlZlxuICAgICAgICAgIGxldCBfdmVyc2UgPSBzdGFydFZlcnNlICsgaVxuICAgICAgICAgIGxhc3RWZXJzZSA9IF92ZXJzZVxuICAgICAgICAgIHN1YnN0aXR1dGVbYCR7Y2hhcHRlcn06JHtfdmVyc2V9YF0gPSBgJHtjaGFwdGVyfToke3ZlcnNlfWBcblxuICAgICAgICAgIGlmICghb3JpZ2luYWxWZXJzZXNbY2hhcHRlcl0pIHtcbiAgICAgICAgICAgIG9yaWdpbmFsVmVyc2VzW2NoYXB0ZXJdID0ge31cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgdmVyc2VPYmplY3RzID0gW11cblxuICAgICAgICAgIGlmICgodHlwZW9mIHZlcnNlID09PSAnc3RyaW5nJykgJiYgKHZlcnNlLmluY2x1ZGVzKCctJykpKSB7XG4gICAgICAgICAgICBjb25zdCB2ZXJzZXMgPSBnZXRWZXJzZXMoYm9va1ZlcnNlT2JqZWN0LCBgJHtjaGFwdGVyfToke3ZlcnNlfWApXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgdmVyc2VJdGVtIG9mIHZlcnNlcykge1xuICAgICAgICAgICAgICBjb25zdCB2byA9IHZlcnNlSXRlbS52ZXJzZURhdGEudmVyc2VPYmplY3RzXG4gICAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IHZlcnNlT2JqZWN0cy5jb25jYXQodm8pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IGJvb2tWZXJzZU9iamVjdFtjaGFwdGVyXVt2ZXJzZV0/LnZlcnNlT2JqZWN0c1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh2ZXJzZU9iamVjdHMpIHtcbiAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IGNsZWFudXBWZXJzZU9iamVjdHModmVyc2VPYmplY3RzKVxuICAgICAgICAgICAgb3JpZ2luYWxWZXJzZXNbY2hhcHRlcl1bX3ZlcnNlXSA9IHsgdmVyc2VPYmplY3RzIH1cbiAgICAgICAgICAgIF9tYXAuc2V0KGAke2NoYXB0ZXJ9OiR7dmVyc2V9YCwgdmVyc2VPYmplY3RzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNyZWF0ZSBuZXcgcmVmZXJlbmNlIHJhbmdlIGZvciBuZXcgbGluZWFyIHZlcnNlIHJhbmdlXG4gICAgICAgIGNvbnN0IFtjaGFwdGVyXSA9IHNlbGVjdGVkUXVvdGU/LnJlZmVyZW5jZT8uc3BsaXQoJzonKVxuICAgICAgICBsZXQgc3ViUmVmID0gYCR7Y2hhcHRlcn06JHtzdGFydFZlcnNlfWBcblxuICAgICAgICBpZiAobGFzdFZlcnNlICE9IHN0YXJ0VmVyc2UpIHtcbiAgICAgICAgICBzdWJSZWYgKz0gYC0ke2xhc3RWZXJzZX1gXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBxdW90ZU1hdGNoZXMgPSBnZXRRdW90ZU1hdGNoZXNJbkJvb2tSZWYoe1xuICAgICAgICAgIGJvb2tPYmplY3Q6IG9yaWdpbmFsVmVyc2VzLFxuICAgICAgICAgIHJlZjogc3ViUmVmLFxuICAgICAgICAgIHF1b3RlOiBzZWxlY3RlZFF1b3RlPy5xdW90ZSxcbiAgICAgICAgICBvY2N1cnJlbmNlOiBzZWxlY3RlZFF1b3RlPy5vY2N1cnJlbmNlLFxuICAgICAgICB9KVxuXG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbnMgPSBuZXcgTWFwKClcblxuICAgICAgICBpZiAocXVvdGVNYXRjaGVzPy5zaXplKSB7XG4gICAgICAgICAgcXVvdGVNYXRjaGVzLmZvckVhY2goKHdvcmRzLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IF9rZXkgPSBzdWJzdGl0dXRlW2tleV1cblxuICAgICAgICAgICAgc2VsZWN0aW9ucy5zZXQoX2tleSwgd29yZHMubWFwKHdvcmQgPT4gKFxuICAgICAgICAgICAgICB7IC4uLndvcmQsIHRleHQ6IGNvcmUubm9ybWFsaXplU3RyaW5nKHdvcmQudGV4dCkgfVxuICAgICAgICAgICAgKSkpXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgICBuZXdTZWxlY3Rpb25zID0gc2VsZWN0aW9uc1xuICAgICAgICBuZXdTZWxlY3RlZFF1b3RlID0gc2VsZWN0ZWRRdW90ZVxuICAgICAgICB1cGRhdGVTZWxlY3Rpb25zID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG5ld1N0YXRlOiBhbnkgPSB7fVxuXG4gICAgLy8gdXBkYXRlIHN0YXRlcyB0aGF0IGhhdmUgY2hhbmdlZFxuICAgIGlmICghYXJlTWFwc1RoZVNhbWUodmVyc2VPYmplY3RzTWFwLCBfbWFwKSkge1xuICAgICAgbmV3U3RhdGUudmVyc2VPYmplY3RzTWFwID0gX21hcFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgbmV3U3RhdGUuc2VsZWN0aW9uc1JlZnMgPSBfbWFwID8gWy4uLl9tYXAua2V5cygpXS5qb2luKCc7JykgOiAnJyAvLyBjb21iaW5lIGFsbCB0aGUgdmVyc2UgcmVmZXJlbmNlcyBpbnRvIGEgc2luZ2xlIHZlcnNlIHJlZmVyZW5jZSBmb3IgdGhlIHNlbGVjdGlvbnNcbiAgICB9XG5cbiAgICBjb25zdCBib29rc05vdFNhbWUgPSByZWZlcmVuY2U/LmJvb2tJZCAhPT0gY3VycmVudFJlZmVyZW5jZT8uYm9va0lkXG5cbiAgICBpZiAoYm9va3NOb3RTYW1lIHx8ICFhcmVWZXJzZXNTYW1lKHZlcnNlc0ZvclJlZiwgX3ZlcnNlc0ZvclJlZikpIHtcbiAgICAgIG5ld1N0YXRlLnZlcnNlc0ZvclJlZiA9IF92ZXJzZXNGb3JSZWZcbiAgICAgIG5ld1N0YXRlLmxhc3RTZWxlY3RlZFF1b3RlID0gbmV3U2VsZWN0ZWRRdW90ZVxuICAgICAgbmV3U3RhdGUuc2VsZWN0aW9ucyA9IG5ld1NlbGVjdGlvbnNcbiAgICB9XG5cbiAgICBpZiAobmV3U2VsZWN0ZWRRdW90ZSkge1xuICAgICAgbmV3U3RhdGUubGFzdFNlbGVjdGVkUXVvdGUgPSBuZXdTZWxlY3RlZFF1b3RlXG4gICAgfVxuXG4gICAgaWYgKHVwZGF0ZVNlbGVjdGlvbnMpIHtcbiAgICAgIGlmICghYXJlTWFwc1RoZVNhbWUoc2VsZWN0aW9ucyB8fCAobmV3IE1hcCgpKSwgbmV3U2VsZWN0aW9ucykpIHtcbiAgICAgICAgbmV3U3RhdGUuc2VsZWN0aW9ucyA9IG5ld1NlbGVjdGlvbnNcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoT2JqZWN0LmtleXMobmV3U3RhdGUpLmxlbmd0aCkge1xuICAgICAgc2V0U3RhdGUobmV3U3RhdGUpXG4gICAgfVxuICB9LCBbXG4gICAgb3duZXIsXG4gICAgcmVzb3VyY2VJZCxcbiAgICBib29rSWQsXG4gICAgbGFuZ3VhZ2VJZF8sXG4gICAgc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWYsXG4gICAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyxcbiAgICBzZWxlY3RlZFF1b3RlLFxuICBdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIGNsZWFyIHNldHRpbmdzIG9uIHZlcnNlIGNoYW5nZVxuICAgIHNldFN0YXRlKHtcbiAgICAgIHZlcnNlc0FsaWdubWVudFN0YXR1czogbnVsbCxcbiAgICAgIHVuc2F2ZWRDaGFuZ2VzTGlzdDoge30sXG4gICAgICBoYXZlVW5zYXZlZENoYW5nZXM6IGZhbHNlLFxuICAgIH0pXG4gIH0sIFtfcmVmZXJlbmNlXSlcblxuICBjb25zdCB1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXMgPSAocmVmZXJlbmNlOiBTY3JpcHR1cmVSZWZlcmVuY2VUeXBlLCBhbGlnbmVkOiBib29sZWFuKSA9PiB7XG4gICAgc2V0U3RhdGVfKHByZXZTdGF0ZSA9PiAoe1xuICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzOiB7IC4uLnByZXZTdGF0ZS52ZXJzZXNBbGlnbm1lbnRTdGF0dXMsIFtgJHtyZWZlcmVuY2UuY2hhcHRlcn06JHtyZWZlcmVuY2UudmVyc2V9YF06IGFsaWduZWQgfSxcbiAgICB9KSlcbiAgfVxuXG4gIGxldCBfdmVyc2VzRm9yUmVmID0gc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWZcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChfdmVyc2VzRm9yUmVmPy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHsgcmVmZXJlbmNlLCByZXNvdXJjZUxpbmsgfSA9IHNjcmlwdHVyZUNvbmZpZyB8fCB7fVxuICAgICAgY29uc29sZS5sb2coYFNjcmlwdHVyZUNhcmQuX3ZlcnNlc0ZvclJlZiBjaGFuZ2VkYCwgeyByZWZlcmVuY2UsIHJlc291cmNlTGluayB9KVxuICAgIH1cbiAgfSwgW192ZXJzZXNGb3JSZWZdKVxuXG4gIGlmICghX3ZlcnNlc0ZvclJlZj8ubGVuZ3RoKSB7IC8vIGlmIGVtcHR5IG9mIHJlZmVyZW5jZXMsIGNyZWF0ZSBzaW5nbGUgZW1wdHkgcmVmZXJlbmNlXG4gICAgX3ZlcnNlc0ZvclJlZiA9IFt7IC4uLnJlZmVyZW5jZSB9XVxuICB9XG5cbiAgY29uc3QgcmVuZGVyZWRTY3JpcHR1cmVQYW5lcyA9IF92ZXJzZXNGb3JSZWY/Lm1hcCgoX2N1cnJlbnRWZXJzZURhdGEsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgaW5pdGlhbFZlcnNlT2JqZWN0cyA9IF9jdXJyZW50VmVyc2VEYXRhPy52ZXJzZURhdGE/LnZlcnNlT2JqZWN0cyB8fCBbXVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCB7IGNoYXB0ZXIsIHZlcnNlIH0gPSBfY3VycmVudFZlcnNlRGF0YSB8fCB7fVxuICAgIGNvbnN0IGJvb2tJZF8gPSBjdXJyZW50UmVmZXJlbmNlPy5ib29rSWQgfHwgYm9va0lkXG4gICAgY29uc3QgX3JlZmVyZW5jZSA9IHtcbiAgICAgIC4uLl92ZXJzZXNGb3JSZWYsXG4gICAgICBjaGFwdGVyLFxuICAgICAgYm9va0lkOiBib29rSWRfLFxuICAgICAgdmVyc2UsXG4gICAgfVxuICAgIGNvbnN0IF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnID0ge1xuICAgICAgLi4uc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyxcbiAgICAgIGN1cnJlbnRJbmRleDogaW5kZXgsXG4gICAgICBpbml0aWFsVmVyc2VPYmplY3RzLFxuICAgICAgcmVmZXJlbmNlOiBfcmVmZXJlbmNlLFxuICAgICAgaXNOZXdUZXN0YW1lbnQsXG4gICAgfVxuXG4gICAgbGV0IGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCA9IGZhbHNlXG5cbiAgICBpZiAodmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCkge1xuICAgICAgaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50ID0gdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudC5jaGFwdGVyID09IGNoYXB0ZXIgJiYgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudC52ZXJzZSA9PSB2ZXJzZVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8U2NyaXB0dXJlUGFuZVxuICAgICAgICB7Li4uc2NyaXB0dXJlQ29uZmlnfVxuICAgICAgICBjb250ZW50U3R5bGU9e2NvbnRlbnRTdHlsZX1cbiAgICAgICAgY3VycmVudEluZGV4PXtpbmRleH1cbiAgICAgICAgZGV0ZXJtaW5pbmdCcmFuY2g9eyFyZWFkeUZvckZldGNofVxuICAgICAgICBkaXJlY3Rpb249e2RpcmVjdGlvbn1cbiAgICAgICAgZGlzYWJsZVdvcmRQb3BvdmVyPXtkaXNhYmxlV29yZFBvcG92ZXJffVxuICAgICAgICBmb250U2l6ZT17Zm9udFNpemV9XG4gICAgICAgIGdldExleGljb25EYXRhPXtnZXRMZXhpY29uRGF0YX1cbiAgICAgICAgaXNOVD17aXNOVF99XG4gICAgICAgIGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudD17aXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50fVxuICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICBvbkFsaWdubWVudEZpbmlzaD17KCkgPT4gc2V0U3RhdGUoeyB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiBudWxsIH0pfVxuICAgICAgICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPXtvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzfVxuICAgICAgICByZWZTdHlsZT17cmVmU3R5bGV9XG4gICAgICAgIHJlZmVyZW5jZT17X3JlZmVyZW5jZX1cbiAgICAgICAgc2F2aW5nPXtzdGFydFNhdmV9XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZz17X3NjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWd9XG4gICAgICAgIHNldFdvcmRBbGlnbmVyU3RhdHVzPXtzZXRXb3JkQWxpZ25lclN0YXR1c31cbiAgICAgICAgc2VydmVyPXtzZXJ2ZXJ9XG4gICAgICAgIHRyYW5zbGF0ZT17dHJhbnNsYXRlfVxuICAgICAgICB1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXM9e3VwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1c31cbiAgICAgIC8+XG4gICAgKVxuICB9KVxuXG4gIGNvbnN0IGhhbmRsZUFsaWduQnV0dG9uQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKHZlcnNlc0ZvclJlZj8ubGVuZ3RoID4gMSkge1xuICAgICAgc2V0U3RhdGUoeyBzaG93QWxpZ25tZW50UG9wdXA6IHRydWUgfSlcbiAgICB9IGVsc2UgaWYgKHZlcnNlc0ZvclJlZj8ubGVuZ3RoID09PSAxKSB7XG4gICAgICBzZXRTdGF0ZSh7IHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ6IHZlcnNlc0ZvclJlZlswXSB9KVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG9uUmVuZGVyVG9vbGJhciA9ICh7IGl0ZW1zIH0pID0+IHtcbiAgICBjb25zdCBuZXdJdGVtcyA9IFsuLi5pdGVtc11cblxuICAgIGxldCBhbGxWZXJzZXNBbGlnbmVkID0gZmFsc2VcblxuICAgIC8vIENoZWNrIGlmIGFsbCB2YWx1ZXMgaW4gdmVyc2VzQWxpZ25tZW50U3RhdHVzIGFyZSB0cnVlXG4gICAgaWYgKHZlcnNlc0FsaWdubWVudFN0YXR1cykge1xuICAgICAgYWxsVmVyc2VzQWxpZ25lZCA9IE9iamVjdC52YWx1ZXModmVyc2VzQWxpZ25tZW50U3RhdHVzKS5ldmVyeShhbGlnblN0YXR1cyA9PiBhbGlnblN0YXR1cyA9PT0gdHJ1ZSlcbiAgICB9XG5cbiAgICBsZXQgYWxpZ25JY29uID0gbnVsbFxuICAgIGxldCBhbGlnbkJ1dHRvblRleHQgPSAnJ1xuXG4gICAgaWYgKGFsbFZlcnNlc0FsaWduZWQpIHtcbiAgICAgIGFsaWduSWNvbiA9IDxSeExpbmsyIGlkPXtgdmFsaWRfaWNvbl8ke3Jlc291cmNlSWR9YH0gY29sb3I9JyNCQkInIC8+XG4gICAgICBhbGlnbkJ1dHRvblRleHQgPSAnQWxpZ25tZW50IGlzIFZhbGlkJ1xuICAgIH0gZWxzZSB7XG4gICAgICBhbGlnbkljb24gPSA8UnhMaW5rQnJlYWsyIGlkPXtgaW52YWxpZF9hbGlnbm1lbnRfaWNvbl8ke3Jlc291cmNlSWR9YH0gY29sb3I9JyMwMDAnIC8+XG4gICAgICBhbGlnbkJ1dHRvblRleHQgPSAnQWxpZ25tZW50IGlzIEludmFsaWQnXG4gICAgfVxuXG4gICAgaWYgKHNldFdvcmRBbGlnbmVyU3RhdHVzICYmIHJlc291cmNlSWQgIT09ICdPUklHSU5BTF9TT1VSQ0UnKSB7XG4gICAgICBuZXdJdGVtcy5wdXNoKFxuICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgIGlkPXtgYWxpZ25tZW50X2ljb25fJHtyZXNvdXJjZUlkfWB9XG4gICAgICAgICAga2V5PSdjaGVja2luZy1idXR0b24nXG4gICAgICAgICAgb25DbGljaz17aGFuZGxlQWxpZ25CdXR0b25DbGlja31cbiAgICAgICAgICB0aXRsZT17YWxpZ25CdXR0b25UZXh0fVxuICAgICAgICAgIGFyaWEtbGFiZWw9e2FsaWduQnV0dG9uVGV4dH1cbiAgICAgICAgICBzdHlsZT17eyBjdXJzb3I6ICdwb2ludGVyJyB9fVxuICAgICAgICA+XG4gICAgICAgICAge2FsaWduSWNvbn1cbiAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgKVxuICAgIH1cblxuICAgIC8vIE9ubHkgc2hvdyB0aGUgdXBkYXRlIGZyb20gbWFpbiBidXR0b24gaWYgc2NyaXB0dXJlIGlzIG5vdCBvcmlnaW5hbCB0ZXh0LlxuICAgICF1c2luZ09yaWdpbmFsQmlibGUgJiYgbmV3SXRlbXMucHVzaChcbiAgICAgIDw+XG4gICAgICAgIDxVcGRhdGVCcmFuY2hCdXR0b24gey4uLnVwZGF0ZUJ1dHRvblByb3BzfSBpc0xvYWRpbmc9e2lzVXBkYXRlTG9hZGluZyB8fCBzdGFydFNhdmV9Lz5cbiAgICAgICAgPEVycm9yRGlhbG9nIHRpdGxlPXtkaWFsb2dUaXRsZX0gY29udGVudD17ZGlhbG9nTWVzc2FnZX0gb3Blbj17aXNFcnJvckRpYWxvZ09wZW59IG9uQ2xvc2U9e29uQ2xvc2VFcnJvckRpYWxvZ30gaXNMb2FkaW5nPXsgaXNVcGRhdGVMb2FkaW5nIHx8IHN0YXJ0U2F2ZSB9IGxpbms9e2RpYWxvZ0xpbmt9IGxpbmtUb29sdGlwPXtkaWFsb2dMaW5rVG9vbHRpcH0gLz5cbiAgICAgIDwvPlxuICAgIClcblxuICAgIHJldHVybiBuZXdJdGVtc1xuICB9XG5cbiAgY29uc3Qgc2VsZWN0aW9uQm9va09iamVjdHMgPSBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPy5jaGFwdGVyc1xuXG4gIHJldHVybiAoXG4gICAgPFNlbGVjdGlvbnNDb250ZXh0UHJvdmlkZXJcbiAgICAgIGJvb2tPYmplY3Q9e3NlbGVjdGlvbkJvb2tPYmplY3RzIHx8IHt9fVxuICAgICAgb2NjdXJyZW5jZT17Zml4T2NjdXJyZW5jZShzZWxlY3RlZFF1b3RlPy5vY2N1cnJlbmNlKX1cbiAgICAgIG9uU2VsZWN0aW9ucz17bmV3U2VsZWN0aW9ucyA9PiB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdvblNlbGVjdGlvbnMnLCBuZXdTZWxlY3Rpb25zKVxuICAgICAgfX1cbiAgICAgIHF1b3RlPXtzZWxlY3RlZFF1b3RlPy5xdW90ZSB8fCAnJ31cbiAgICAgIHJlZlN0cmluZz17c2VsZWN0aW9uc1JlZnN9XG4gICAgICBzZWxlY3Rpb25zPXtzZWxlY3Rpb25zfVxuICAgID5cbiAgICAgIDxDYXJkXG4gICAgICAgIGlkPXtgc2NyaXB0dXJlX2NhcmRfJHtjYXJkTnVtfWB9XG4gICAgICAgIHRpdGxlPXtzY3JpcHR1cmVMYWJlbH1cbiAgICAgICAgc2V0dGluZ3NUaXRsZT17c2NyaXB0dXJlVGl0bGUgKyAnIFNldHRpbmdzJ31cbiAgICAgICAgaXRlbXM9e2l0ZW1zfVxuICAgICAgICBjbGFzc2VzPXtjbGFzc2VzfVxuICAgICAgICBoZWFkZXJzPXtoZWFkZXJzfVxuICAgICAgICBmaWx0ZXJzPXtmaWx0ZXJzfVxuICAgICAgICBmb250U2l6ZT17Zm9udFNpemV9XG4gICAgICAgIGl0ZW1JbmRleD17aXRlbUluZGV4fVxuICAgICAgICBzZXRGaWx0ZXJzPXtzZXRGaWx0ZXJzfVxuICAgICAgICBzZXRGb250U2l6ZT17c2V0Rm9udFNpemV9XG4gICAgICAgIHNldEl0ZW1JbmRleD17c2V0SXRlbUluZGV4fVxuICAgICAgICBtYXJrZG93blZpZXc9e21hcmtkb3duVmlld31cbiAgICAgICAgc2V0TWFya2Rvd25WaWV3PXtzZXRNYXJrZG93blZpZXd9XG4gICAgICAgIGdldEN1c3RvbUNvbXBvbmVudD17Z2V0U2NyaXB0dXJlU2VsZWN0b3J9XG4gICAgICAgIGhpZGVNYXJrZG93blRvZ2dsZVxuICAgICAgICBvbk1lbnVDbG9zZT17b25NZW51Q2xvc2V9XG4gICAgICAgIG9uTWluaW1pemU9e29uTWluaW1pemUgPyAoKSA9PiBvbk1pbmltaXplKGlkLCBzY3JpcHR1cmVUaXRsZSkgOiBudWxsfVxuICAgICAgICBlZGl0YWJsZT17ZW5hYmxlRWRpdCB8fCBlbmFibGVBbGlnbm1lbnR9XG4gICAgICAgIHNhdmVkPXtzdGFydFNhdmUgfHwgIWhhdmVVbnNhdmVkQ2hhbmdlc31cbiAgICAgICAgb25TYXZlRWRpdD17KCkgPT4gc2V0U3RhdGUoeyBzYXZlQ2xpY2tlZDogdHJ1ZSB9KX1cbiAgICAgICAgb25SZW5kZXJUb29sYmFyPXtvblJlbmRlclRvb2xiYXJ9XG4gICAgICA+XG4gICAgICAgIDxkaXYgaWQ9XCJzY3JpcHR1cmUtcGFuZS1saXN0XCI+XG4gICAgICAgICAge3JlbmRlcmVkU2NyaXB0dXJlUGFuZXN9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9DYXJkPlxuICAgICAgPFZlcnNlU2VsZWN0b3JQb3B1cFxuICAgICAgICByZXNvdXJjZUlkPXtyZXNvdXJjZUlkfVxuICAgICAgICBvcGVuPXtzaG93QWxpZ25tZW50UG9wdXB9XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFN0YXRlKHsgc2hvd0FsaWdubWVudFBvcHVwOiBmYWxzZSB9KX1cbiAgICAgICAgdmVyc2VzRm9yUmVmPXt2ZXJzZXNGb3JSZWZ9XG4gICAgICAgIHZlcnNlc0FsaWdubWVudFN0YXR1cz17dmVyc2VzQWxpZ25tZW50U3RhdHVzfVxuICAgICAgICBvblZlcnNlU2VsZWN0PXsodmVyc2UpID0+IHNldFN0YXRlKHtcbiAgICAgICAgICB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiB2ZXJzZSxcbiAgICAgICAgICBzaG93QWxpZ25tZW50UG9wdXA6IGZhbHNlLFxuICAgICAgICB9KX1cbiAgICAgIC8+XG4gICAgPC9TZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyPlxuICApXG59XG5cblNjcmlwdHVyZUNhcmQucHJvcFR5cGVzID0ge1xuICAvKiogcmVwbyBicmFuY2ggb3IgdGFnIHN1Y2ggYXMgbWFzdGVyICovXG4gIGFwcFJlZjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogYXV0aGVudGljYXRpb24gaW5mbyAqL1xuICBhdXRoZW50aWNhdGlvbjogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIGluZGV4IGZvciBjdXJyZW50IGJvb2sgKGUuZy4gJzAxJyBmb3IgJ2dlbicpKi9cbiAgYm9va0luZGV4OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogc2NyaXB0dXJlIGNhcmQgbnVtYmVyICgwIHRvIDIgZm9yIGV4YW1wbGUpICovXG4gIGNhcmROdW06IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgLyoqIENTUyBjbGFzc2VzICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBpZiB0cnVlIHRoZW4gd29yZCBkYXRhIGhvdmVyIGlzIHNob3duICovXG4gIGRpc2FibGVXb3JkUG9wb3ZlcjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKiBnZXQgbGFuZ3VhZ2UgZGV0YWlscyAqL1xuICBnZXRMYW5ndWFnZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgLyoqIGZ1bmN0aW9uIHRvIGdldCBsYXRlc3QgbGV4aWNvbiBkYXRhICovXG4gIGdldExleGljb25EYXRhOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIG9wdGlvbmFsIHVybCBmb3IgZ3JlZWsgcmVwbyAqL1xuICBncmVla1JlcG9Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBvcHRpb25hbCB1cmwgZm9yIGhlYnJldyByZXBvICovXG4gIGhlYnJld1JlcG9Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBvcHRpb25hbCBodHRwIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciBmZXRjaGluZyByZXNvdXJjZXMsIGRlZmF1bHQgaXMgMCAodmVyeSBsb25nIHdhaXQpICovXG4gIGh0dHBDb25maWc6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBodG1sIGlkZW50aWZpZXIgdG8gdXNlIGZvciBjYXJkICovXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogbWV0aG9kIHRvIGRldGVybWluZSBpZiBOVCBvciBPVCAqL1xuICBpc05UOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAvKiogdXNlci1uYW1lICovXG4gIGxvZ2dlZEluVXNlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIGZ1bmN0aW9uIHRvIG1pbmltaXplIHRoZSBjYXJkIChvcHRpb25hbCkgKi9cbiAgb25NaW5pbWl6ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBvcHRpb25hbCBjYWxsYmFjayBpZiBlcnJvciBsb2FkaW5nIHJlc291cmNlLCBwYXJhbWV0ZXIgcmV0dXJuZWQgYXJlOlxuICAgKiAgICAoe3N0cmluZ30gZXJyb3JNZXNzYWdlLCB7Ym9vbGVhbn0gaXNBY2Nlc3NFcnJvciwge29iamVjdH0gcmVzb3VyY2VTdGF0dXMpXG4gICAqICAgICAgLSBpc0FjY2Vzc0Vycm9yIC0gaXMgdHJ1ZSBpZiB0aGlzIHdhcyBhbiBlcnJvciB0cnlpbmcgdG8gYWNjZXNzIGZpbGVcbiAgICogICAgICAtIHJlc291cmNlU3RhdHVzIC0gaXMgb2JqZWN0IGNvbnRhaW5pbmcgZGV0YWlscyBhYm91dCBwcm9ibGVtcyBmZXRjaGluZyByZXNvdXJjZSAqL1xuICBvblJlc291cmNlRXJyb3I6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogdGhlIG9yaWdpbmFsIHNjcmlwdHVyZSBib29rT2JqZWN0cyBmb3IgY3VycmVudCBib29rICovXG4gIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM6IFByb3BUeXBlcy5vYmplY3QsXG4gIHJlZmVyZW5jZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAvKiogYm9vayBJRCB0byB1c2UsIG9sZGVyIGxpYnJhcmllcyB1c2VkIHByb2plY3RJZCAqL1xuICAgIGJvb2tJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiBvbGRlciBsaWJyYXJpZXMgdXNlZCBwcm9qZWN0SWQgaW5zdGVhZCBvZiBib29rSWQgKi9cbiAgICBwcm9qZWN0SWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgLyoqIGN1cnJlbnQgY2hhcHRlciBudW1iZXIgKi9cbiAgICBjaGFwdGVyOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nXSkuaXNSZXF1aXJlZCxcbiAgICAvKiogY3VycmVudCB2ZXJzZSBudW1iZXIgKi9cbiAgICB2ZXJzZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLmlzUmVxdWlyZWQsXG4gIH0pLFxuICAvKiogcmVzb3VyY2Ugb2JqZWN0ICovXG4gIHJlc291cmNlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIC8qKiByZXNvdXJjZSBsYW5ndWFnZSB0byB1c2UgKi9cbiAgICBsYW5ndWFnZUlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIHJlcG8gb3duZXIgc3VjaCBhcyB1bmZvbGRpbmdXb3JkICovXG4gICAgb3duZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogcmVzb3VyY2VJZCB0byB1c2UgKGUuZy4gdWdudCkgKi9cbiAgICByZXNvdXJjZUlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIHJlcG8gb3duZXIgZm9yIG9yaWdpbmFsIGxhbmd1YWdlcyBzdWNoIGFzIHVuZm9sZGluZ1dvcmQgKi9cbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgfSksXG4gIC8qKiByZXNvdXJjZUxpbmsgKi9cbiAgcmVzb3VyY2VMaW5rOiBQcm9wVHlwZXMuYW55LFxuICAvKipUaGlzIGlzIGN1cnJlbnRseSBzZWxlY3RlZCBxdW90ZSAqL1xuICBzZWxlY3RlZFF1b3RlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogc2VydmVyIChlLmcuICdodHRwczovL2dpdC5kb29yNDMub3JnJykgKi9cbiAgc2VydmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIC8qKiBjYWxsYmFjayB0byB1cGRhdGUgbG9hZGluZyBzdGF0ZSAqL1xuICBzZXRBcmVSZXNvdXJjZXNMb2FkaW5nOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHVwZGF0ZSBzYXZpbmcgc3RhdGUqL1xuICBzZXRBcmVSZXNvdXJjZXNTYXZpbmc6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogY2FsbGJhY2sgdG8gcmVwb3J0IGNhcmQgbWVyZ2Ugc3RhdHVzICovXG4gIHNldENhcmRzTG9hZGluZ01lcmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHJlcG9ydCBjYXJkIHVwZGF0ZSBzdGF0dXMgKi9cbiAgc2V0Q2FyZHNMb2FkaW5nVXBkYXRlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHJlcG9ydCBjYXJkIHNhdmluZyBzdGF0dXMgKi9cbiAgc2V0Q2FyZHNTYXZpbmc6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogZnVuY3Rpb24gdG8gc2V0IHN0YXRlIGluIGFwcCB0aGF0IHRoZXJlIGFyZSB1bnNhdmVkIGNoYW5nZXMgKi9cbiAgc2V0U2F2ZWRDaGFuZ2VzOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHVwZGF0ZSB3b3JkIGFsaWduZXIgc3RhdGUgKi9cbiAgc2V0V29yZEFsaWduZXJTdGF0dXM6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogdGl0bGUgZm9yIHNjcmlwdHVyZSBjYXJkICovXG4gIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIC8qKiBvcHRpb25hbCBmdW5jdGlvbiBmb3IgbG9jYWxpemF0aW9uICovXG4gIHRyYW5zbGF0ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byB1cGRhdGUgdGhlIGNhcmQncyBtZXJnZSBzdGF0ZSBpbiBhcHAgKi9cbiAgdXBkYXRlTWVyZ2VTdGF0ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiB1c2UgbWV0aG9kIGZvciB1c2luZyBsb2NhbCBzdG9yYWdlIHNwZWNpZmljIGZvciB1c2VyICovXG4gIHVzZVVzZXJMb2NhbFN0b3JhZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG59XG4iXSwibWFwcGluZ3MiOiI7K0NBQ0EscUpBQUFBLG1CQUFBLFlBQUFBLG9CQUFBLFdBQUFDLENBQUEsU0FBQUMsQ0FBQSxFQUFBRCxDQUFBLE9BQUFF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
|
|
1558
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVnZW5lcmF0b3JSdW50aW1lIiwiZSIsInQiLCJyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiU3ltYm9sIiwiYSIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiZ2VuIiwicmVqZWN0IiwiX25leHQiLCJfdGhyb3ciLCJrZXkiLCJpbmZvIiwiZXJyb3IiLCJfYXN5bmNUb0dlbmVyYXRvciIsImZuIiwic2VsZiIsImFyZ3MiLCJhcmd1bWVudHMiLCJhcHBseSIsImVyciIsInVuZGVmaW5lZCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiYWxsb3dBcnJheUxpa2UiLCJpdCIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIkYiLCJfZSIsIm5vcm1hbENvbXBsZXRpb24iLCJkaWRFcnIiLCJzdGVwIiwiX2UyIiwiX2V4dGVuZHMiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0Iiwic291cmNlIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiYXJyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIml0ZXIiLCJmcm9tIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJvd25LZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiX29iamVjdFNwcmVhZCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwib2JqIiwiX3RvUHJvcGVydHlLZXkiLCJfdG9QcmltaXRpdmUiLCJTdHJpbmciLCJpbnB1dCIsImhpbnQiLCJwcmltIiwidG9QcmltaXRpdmUiLCJyZXMiLCJOdW1iZXIiLCJfc2xpY2VkVG9BcnJheSIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl9ub25JdGVyYWJsZVJlc3QiLCJtaW5MZW4iLCJ0b1N0cmluZyIsInRlc3QiLCJsZW4iLCJhcnIyIiwiUmVhY3QiLCJQcm9wVHlwZXMiLCJjb3JlIiwiU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciIsInVzZm1qcyIsInVzZUVkaXQiLCJJY29uQnV0dG9uIiwiUnhMaW5rMiIsIlJ4TGlua0JyZWFrMiIsIkNhcmQiLCJFcnJvckRpYWxvZyIsIkVSUk9SX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsIlVwZGF0ZUJyYW5jaEJ1dHRvbiIsInVzZUJyYW5jaE1lcmdlciIsInVzZUNhcmRTdGF0ZSIsInVzZUNvbnRlbnRVcGRhdGVQcm9wcyIsInVzZU1hc3Rlck1lcmdlUHJvcHMiLCJ1c2VVc2VyQnJhbmNoIiwiZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIiwiQWxpZ25tZW50SGVscGVycyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJpc0VxdWFsIiwiZ2V0VmVyc2VzIiwiU2NyaXB0dXJlUGFuZSIsIlNjcmlwdHVyZVNlbGVjdG9yIiwidXNlU2NyaXB0dXJlU2V0dGluZ3MiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwiZmV0Y2hCaWJsZUJvb2siLCJmaXhPY2N1cnJlbmNlIiwiZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lIiwiZ2V0UmVzb3VyY2VMaW5rIiwiZ2V0UmVzb3VyY2VNZXNzYWdlIiwiZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzIiwiaXNPcmlnaW5hbEJpYmxlIiwiZGVsYXkiLCJhcmVNYXBzVGhlU2FtZSIsIlRpdGxlIiwiTlRfT1JJR19MQU5HIiwiT1JJR0lOQUxfU09VUkNFIiwiT1RfT1JJR19MQU5HIiwiVmVyc2VTZWxlY3RvclBvcHVwIiwiZ2V0UGF0Y2giLCJTY3JpcHR1cmVSZWZlcmVuY2VUeXBlIiwiVmVyc2VPYmplY3RzVHlwZSIsIktFWV9GT05UX1NJWkVfQkFTRSIsImxhYmVsIiwic3R5bGUiLCJtYXJnaW5Ub3AiLCJ3aWR0aCIsImNvbXBhcmVPYmplY3QiLCJ2ZXJzZVJlZiIsIl92ZXJzZURhdGEkdmVyc2VPYmplYyIsIl9yZWYiLCJjaGFwdGVyIiwidmVyc2UiLCJ2ZXJzZURhdGEiLCJ2ZXJzZU9iamVjdHMiLCJKU09OIiwic3RyaW5naWZ5IiwiYXJlVmVyc2VzU2FtZSIsInZlcnNlc0ZvclJlZjEiLCJ2ZXJzZXNGb3JSZWYyIiwiYXJlU2FtZSIsInZlcnNlMSIsInZlcnNlMiIsImdldEN1cnJlbnRCb29rIiwic2NyaXB0dXJlQ29uZmlnIiwiYm9va0lkIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvMiIsIl9ib29rTmFtZSR0b0xvd2VyQ2FzZSIsImxhdGVzdEJpYmxlIiwicmVzb3VyY2VTdGF0ZSIsInJlc291cmNlIiwicHJvamVjdElkIiwiZmlsZW5hbWUiLCJpc0Jvb2tWYWxpZCIsImJvb2tOYW1lIiwidG9Mb3dlckNhc2UiLCJpbmNsdWRlcyIsImNvbnNvbGUiLCJ3YXJuIiwiY29uY2F0IiwiYmlibGVVc2ZtIiwiU2NyaXB0dXJlQ2FyZCIsIl9yZWYyIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvMyIsIl9zY3JpcHR1cmVDb25maWckcmVzbzQiLCJfc2NyaXB0dXJlQ29uZmlnJHJlc281IiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvNiIsIl9zY3JpcHR1cmVDb25maWckcmVzbzciLCJfYXV0aGVudGljYXRpb24kdG9rZW4iLCJfc2NyaXB0dXJlQ29uZmlnJHJlc285IiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvMTAiLCJfaHR0cENvbmZpZyIsIl9odHRwQ29uZmlnMiIsIl9hdXRoZW50aWNhdGlvbiR1c2VyIiwiX3ZlcnNlc0ZvclJlZjMiLCJfdmVyc2VzRm9yUmVmNCIsImFwcFJlZiIsImF1dGhlbnRpY2F0aW9uIiwiYm9va0luZGV4IiwiY2FyZE51bSIsImNsYXNzZXMiLCJkaXNhYmxlV29yZFBvcG92ZXIiLCJnZXRMYW5ndWFnZSIsImdldExleGljb25EYXRhIiwiZ3JlZWtSZXBvVXJsIiwiaGVicmV3UmVwb1VybCIsImh0dHBDb25maWciLCJpZCIsImlzTlQiLCJsb2dnZWRJblVzZXIiLCJvbk1pbmltaXplIiwib25SZXNvdXJjZUVycm9yIiwib3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyIsInJlZmVyZW5jZV8iLCJyZWZlcmVuY2UiLCJfcmVmMiRyZXNvdXJjZSIsIm93bmVyIiwibGFuZ3VhZ2VJZCIsInJlc291cmNlSWQiLCJvcmlnaW5hbExhbmd1YWdlT3duZXIiLCJyZXNvdXJjZUxpbmsiLCJzZWxlY3RlZFF1b3RlIiwic2VydmVyIiwic2V0Q2FyZHNMb2FkaW5nTWVyZ2UiLCJzZXRDYXJkc0xvYWRpbmdVcGRhdGUiLCJzZXRDYXJkc1NhdmluZyIsInNldFNhdmVkQ2hhbmdlcyIsInNldFdvcmRBbGlnbmVyU3RhdHVzIiwidHJhbnNsYXRlIiwidGl0bGUiLCJ1c2VVc2VyTG9jYWxTdG9yYWdlIiwidXBkYXRlTWVyZ2VTdGF0ZSIsIl9SZWFjdCR1c2VTdGF0ZSIsInVzZVN0YXRlIiwiY2hlY2tGb3JFZGl0QnJhbmNoIiwiY3VycmVudFJlZmVyZW5jZSIsImVkaXRCcmFuY2hSZWFkeSIsImVkaXRWZXJzZSIsImhhdmVVbnNhdmVkQ2hhbmdlcyIsImxhc3RTZWxlY3RlZFF1b3RlIiwicmVhZHlGb3JGZXRjaCIsInJlZiIsInNhdmVDbGlja2VkIiwic2F2ZUNvbnRlbnQiLCJzYXZlRGlmZlBhdGNoIiwic2F2ZUZ1bGxCaWJsZUNvbnRlbnQiLCJzZWxlY3Rpb25zIiwiTWFwIiwic2VsZWN0aW9uc1JlZnMiLCJzaG93QWxpZ25tZW50UG9wdXAiLCJzdGFydFNhdmUiLCJ1cmxFcnJvciIsInVzaW5nVXNlckJyYW5jaCIsInVuc2F2ZWRDaGFuZ2VzTGlzdCIsInZlcnNlc0FsaWdubWVudFN0YXR1cyIsInZlcnNlc0ZvclJlZiIsInZlcnNlT2JqZWN0c01hcCIsInZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQiLCJfUmVhY3QkdXNlU3RhdGUyIiwic3RhdGUiLCJzZXRTdGF0ZV8iLCJfdXNlVXNlckxvY2FsU3RvcmFnZSIsIl91c2VVc2VyTG9jYWxTdG9yYWdlMiIsImZvbnRTaXplIiwic2V0Rm9udFNpemUiLCJpc05UXyIsInNldFN0YXRlIiwibmV3U3RhdGUiLCJwcmV2U3RhdGUiLCJjYWNoZSIsIm1heEFnZSIsIm5vQ2FjaGUiLCJfdXNlU2NyaXB0dXJlU2V0dGluZ3MiLCJzZXRVcmxFcnJvciIsIndob2xlQm9vayIsImlzTmV3VGVzdGFtZW50Iiwic2V0U2NyaXB0dXJlIiwic2NyaXB0dXJlU2V0dGluZ3MiLCJzY3JpcHR1cmVWZXJzaW9uSGlzdCIsImZldGNoZWRSZXNvdXJjZSIsInJlcG8iLCJ1c2luZ09yaWdpbmFsQmlibGUiLCJjYXJkUmVzb3VyY2VJZCIsInJlZl8iLCJjYW5Vc2VFZGl0QnJhbmNoIiwiX3VzZVVzZXJCcmFuY2giLCJjYXJkSWQiLCJfdXNlVXNlckJyYW5jaCRzdGF0ZSIsImJyYW5jaERldGVybWluZWQiLCJ1c2VyRWRpdEJyYW5jaE5hbWUiLCJfdXNpbmdVc2VyQnJhbmNoIiwid29ya2luZ1Jlc291cmNlQnJhbmNoIiwiX3VzZVVzZXJCcmFuY2gkYWN0aW9uIiwiYWN0aW9ucyIsInN0YXJ0RWRpdEJyYW5jaCIsInN0YXJ0RWRpdCIsImZpbmlzaEVkaXQiLCJfdXNlQnJhbmNoTWVyZ2VyIiwidXNlckJyYW5jaCIsInRva2VuaWQiLCJ0b2tlbiIsInNoYTEiLCJfdXNlQnJhbmNoTWVyZ2VyJHN0YXQiLCJtZXJnZVRvTWFzdGVyIiwibWVyZ2VTdGF0dXMiLCJtZXJnZUZyb21NYXN0ZXIiLCJ1cGRhdGVTdGF0dXMiLCJ1cGRhdGVCdXR0b25Qcm9wcyIsImlzU2F2aW5nIiwib25VcGRhdGUiLCJyZWxvYWRSZXNvdXJjZSIsImNhbGxVcGRhdGVVc2VyQnJhbmNoIiwiaXNFcnJvckRpYWxvZ09wZW4iLCJvbkNsb3NlRXJyb3JEaWFsb2ciLCJpc1VwZGF0ZUxvYWRpbmciLCJpc0xvYWRpbmciLCJkaWFsb2dNZXNzYWdlIiwiZGlhbG9nVGl0bGUiLCJkaWFsb2dMaW5rIiwiZGlhbG9nTGlua1Rvb2x0aXAiLCJvbk1lcmdlIiwibG9nIiwiX3VzZU1hc3Rlck1lcmdlUHJvcHMiLCJpc01lcmdlTG9hZGluZyIsImNhbGxNZXJnZVVzZXJCcmFuY2giLCJ1c2VFZmZlY3QiLCJwcmV2Q2FyZHNMb2FkaW5nIiwid29ya2luZ1JlZiIsInNjcmlwdHVyZVRpdGxlIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvOCIsInJlc291cmNlU3RhdHVzIiwibWVzc2FnZSIsImlzQWNjZXNzRXJyb3IiLCJ2ZXJzaW9uIiwidXBkYXRlVGl0bGUiLCJnZXRTY3JpcHR1cmVTZWxlY3RvciIsInNjcmlwdHVyZVNlbGVjdGlvbkNvbmZpZyIsImNyZWF0ZUVsZW1lbnQiLCJlcnJvck1lc3NhZ2UiLCJzZXRFZGl0VmVyc2UiLCJlZGl0aW5nIiwiZGlzYWJsZUNoYW5nZUJ1dHRvbnMiLCJvbk1lbnVDbG9zZSIsImxhbmd1YWdlSWRfIiwibGFuZ3VhZ2UiLCJkaXJlY3Rpb24iLCJfcmVmZXJlbmNlIiwiaXNIZWJyZXciLCJmb250RmFjdG9yIiwic2NhbGVkRm9udFNpemUiLCJpdGVtcyIsIl91c2VDYXJkU3RhdGUiLCJfdXNlQ2FyZFN0YXRlJHN0YXRlIiwiaGVhZGVycyIsImZpbHRlcnMiLCJpdGVtSW5kZXgiLCJtYXJrZG93blZpZXciLCJfdXNlQ2FyZFN0YXRlJGFjdGlvbnMiLCJzZXRGaWx0ZXJzIiwic2V0SXRlbUluZGV4Iiwic2V0TWFya2Rvd25WaWV3IiwicmVmU3R5bGUiLCJ1c2VNZW1vIiwiZm9udEZhbWlseSIsIk1hdGgiLCJyb3VuZCIsImNvbnRlbnRTdHlsZSIsInNjcmlwdHVyZUxhYmVsIiwiZGlzYWJsZVdvcmRQb3BvdmVyXyIsImVuYWJsZUVkaXQiLCJlbmFibGVBbGlnbm1lbnQiLCJvcmlnaW5hbFJlcG9VcmwiLCJzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnIiwiY3VycmVudFZlcnNlUmVmIiwiX3NldFNhdmVkQ2hhbmdlcyIsInNvdXJjZUxhbmd1YWdlIiwidGFyZ2V0TGFuZ3VhZ2UiLCJjdXJyZW50SW5kZXgiLCJzYXZlZCIsIl9yZWYzIiwiX3JlZjMkZ2V0Q2hhbmdlcyIsImdldENoYW5nZXMiLCJfcmVmMyRjbGVhckNoYW5nZXMiLCJjbGVhckNoYW5nZXMiLCJfcmVmMyRzdGF0ZSIsIl91bnNhdmVkQ2hhbmdlc0xpc3QiLCJfaGF2ZVVuc2F2ZWRDaGFuZ2VzIiwiZmluZFJlZkluQXJyYXkiLCJmaW5kSXRlbSIsImNodW5rcyIsInJlZkxlbiIsImluZGV4IiwiZmluZEluZGV4IiwiY2h1bmsiLCJpZHgiLCJzdWJzdHJpbmciLCJuZXh0Q2hhciIsImdldEJvb2tOYW1lIiwiX3NjcmlwdHVyZUNvbmZpZyRyZWZlIiwiYm9va0NhcHMiLCJ0b1VwcGVyQ2FzZSIsImZpbGVwYXRoIiwic2hhIiwiX3VzZUVkaXQiLCJjb250ZW50IiwiY29uZmlnIiwiZG9udENyZWF0ZUJyYW5jaCIsInRpbWVvdXQiLCJzZXJ2ZXJUaW1lT3V0IiwiYXV0aG9yIiwiZW1haWwiLCJ1c2VyIiwiYnJhbmNoIiwic2F2ZUVycm9yIiwiaXNTYXZlRXJyb3IiLCJpc0Vycm9yIiwib25TYXZlRWRpdCIsIm9uU2F2ZUVkaXRQYXRjaCIsIl9zYXZlU3VjY2VzZnVsIiwicHJldkNhcmRzU2F2aW5nIiwidW5zYXZlZENhcmRJbmRpY2VzIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJjYXJkSW5kZXgiLCJfc2F2ZUVkaXQiLCJfcmVmNCIsIl9jYWxsZWUiLCJ1cGxvYWRGdW5jdGlvbiIsInN1Y2Nlc3MiLCJyZXN1bHRzIiwiX3NhdmVDb250ZW50IiwiZmlsZVNoYSIsInNhdmVkQmlibGVVc2ZtIiwiZWRpdGVkQmlibGVVc2ZtIiwidXBUb0RhdGUiLCJkaWZmUGF0Y2giLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwibWVyZ2VWZXJzZU9iamVjdHNJbnRvQmlibGVVc2ZtIiwidXBkYXRlZFZlcnNlT2JqZWN0cyIsIm5ld1VzZm0iLCJjaGFwdGVyQ2h1bmtzIiwic3BsaXQiLCJjaGFwdGVySW5kZXgiLCJjdXJyZW50Q2hhcHRlciIsInZlcnNlQ2h1bmtzIiwidmVyc2VJbmRleCIsImZyb250TWF0dGVyIiwibmV3VmVyc2VVc2ZtIiwiY29udmVydFZlcnNlRGF0YVRvVVNGTSIsIm9sZFZlcnNlIiwicHJlZml4TGVuIiwiaW5kZXhPZiIsInZlcnNlTnVtTGVuIiwibmV3Q2hhcHRlciIsImpvaW4iLCJnZXRSZWFkeUZvclNhdmUiLCJfZ2V0UmVhZHlGb3JTYXZlIiwiX2NhbGxlZTIiLCJjcmVhdGVFZGl0QnJhbmNoIiwiYmlibGVVc2ZtSW5pdGlhbCIsImJpYmxlVXNmbU5ldyIsIm1lcmdlRmFpbCIsIl9jYXJkTnVtIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsIl91bnNhdmVkQ2hhbmdlc0xpc3QkXyIsIl9zdGF0ZSIsIl9nZXRDaGFuZ2VzIiwiX3JlZjUiLCJfc2F2ZURpZmZQYXRjaCIsIl9zYXZlRnVsbEJpYmxlQ29udGVudCIsIm5ld0Jvb2tKc29uIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsIl9jYXJkSW5kZXgiLCJfY2FyZE51bTIiLCJfdW5zYXZlZENoYW5nZXNMaXN0JF8yIiwiX2dldENoYW5nZXMyIiwiX3N0YXRlMiIsIl9uZXdVc2ZtIiwiX2dldENoYW5nZXMzIiwibmV3VmVyc2VUZXh0IiwiX3JlZjYiLCJfdXBkYXRlZFZlcnNlT2JqZWN0cyIsInRhcmdldFZlcnNlT2JqZWN0c18iLCJfQWxpZ25tZW50SGVscGVycyR1cGQiLCJ0YXJnZXRWZXJzZU9iamVjdHMiLCJfc2NyaXB0dXJlQ29uZmlnJHJlc28xMSIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiIsInBhcnNlSW50IiwidDAiLCJ1cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSIsInVwZGF0ZVZlcnNlIiwidG9VU0ZNIiwiZm9yY2VkTmV3TGluZXMiLCJpbml0aWFsIiwiX3JlZjciLCJfdmVyc2VzRm9yUmVmIiwibmV3U2VsZWN0aW9ucyIsInVwZGF0ZVNlbGVjdGlvbnMiLCJfbWFwIiwib3JpZ2luYWxCb29rSWQiLCJib29rVmVyc2VPYmplY3QiLCJjaGFwdGVycyIsIm5ld1NlbGVjdGVkUXVvdGUiLCJxdW90ZSIsIl9zZWxlY3RlZFF1b3RlJHJlZmVyZTMiLCJvcmlnaW5hbFZlcnNlcyIsInN1YnN0aXR1dGUiLCJzdGFydFZlcnNlIiwibGFzdFZlcnNlIiwiX3ZlcnNlIiwidmVyc2VzIiwiX2l0ZXJhdG9yNCIsIl9zdGVwNCIsInZlcnNlSXRlbSIsInZvIiwiX2Jvb2tWZXJzZU9iamVjdCRfY2hhIiwic2V0IiwiX3NlbGVjdGVkUXVvdGUkcmVmZXJlIiwiX3NlbGVjdGVkUXVvdGUkcmVmZXJlMiIsInN1YlJlZiIsInF1b3RlTWF0Y2hlcyIsImJvb2tPYmplY3QiLCJvY2N1cnJlbmNlIiwic2l6ZSIsIndvcmRzIiwiX2tleSIsIm1hcCIsIndvcmQiLCJ0ZXh0Iiwibm9ybWFsaXplU3RyaW5nIiwiYm9va3NOb3RTYW1lIiwidXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzIiwiYWxpZ25lZCIsIl92ZXJzZXNGb3JSZWYyIiwiX3JlZjgiLCJyZW5kZXJlZFNjcmlwdHVyZVBhbmVzIiwiX2N1cnJlbnRWZXJzZURhdGEiLCJfY3VycmVudFZlcnNlRGF0YSR2ZXIiLCJpbml0aWFsVmVyc2VPYmplY3RzIiwiX3JlZjkiLCJib29rSWRfIiwiX3NjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWciLCJpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQiLCJkZXRlcm1pbmluZ0JyYW5jaCIsIm9uQWxpZ25tZW50RmluaXNoIiwic2F2aW5nIiwiaGFuZGxlQWxpZ25CdXR0b25DbGljayIsIm9uUmVuZGVyVG9vbGJhciIsIl9yZWYxMCIsIm5ld0l0ZW1zIiwiYWxsVmVyc2VzQWxpZ25lZCIsImV2ZXJ5IiwiYWxpZ25TdGF0dXMiLCJhbGlnbkljb24iLCJhbGlnbkJ1dHRvblRleHQiLCJjb2xvciIsIm9uQ2xpY2siLCJjdXJzb3IiLCJGcmFnbWVudCIsIm9wZW4iLCJvbkNsb3NlIiwibGluayIsImxpbmtUb29sdGlwIiwic2VsZWN0aW9uQm9va09iamVjdHMiLCJvblNlbGVjdGlvbnMiLCJyZWZTdHJpbmciLCJzZXR0aW5nc1RpdGxlIiwiZ2V0Q3VzdG9tQ29tcG9uZW50IiwiaGlkZU1hcmtkb3duVG9nZ2xlIiwiZWRpdGFibGUiLCJvblZlcnNlU2VsZWN0IiwicHJvcFR5cGVzIiwic3RyaW5nIiwiaXNSZXF1aXJlZCIsIm9iamVjdCIsIm51bWJlciIsImJvb2wiLCJmdW5jIiwic2hhcGUiLCJvbmVPZlR5cGUiLCJhbnkiLCJzZXRBcmVSZXNvdXJjZXNMb2FkaW5nIiwic2V0QXJlUmVzb3VyY2VzU2F2aW5nIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvU2NyaXB0dXJlQ2FyZC9TY3JpcHR1cmVDYXJkLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCAqIGFzIFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IHsgY29yZSwgU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciB9IGZyb20gJ3NjcmlwdHVyZS1yZXNvdXJjZXMtcmNsJ1xuaW1wb3J0IHVzZm1qcyBmcm9tICd1c2ZtLWpzJ1xuaW1wb3J0IHsgdXNlRWRpdCB9IGZyb20gJ2dpdGVhLXJlYWN0LXRvb2xraXQnXG5pbXBvcnQgeyBJY29uQnV0dG9uIH0gZnJvbSAnQG11aS9tYXRlcmlhbCdcbmltcG9ydCB7IFJ4TGluazIsIFJ4TGlua0JyZWFrMiB9IGZyb20gJ3JlYWN0LWljb25zL3J4J1xuaW1wb3J0IHtcbiAgQ2FyZCxcbiAgRXJyb3JEaWFsb2csXG4gIEVSUk9SX1NUQVRFLFxuICBNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SLFxuICBVcGRhdGVCcmFuY2hCdXR0b24sXG4gIHVzZUJyYW5jaE1lcmdlcixcbiAgdXNlQ2FyZFN0YXRlLFxuICB1c2VDb250ZW50VXBkYXRlUHJvcHMsXG4gIHVzZU1hc3Rlck1lcmdlUHJvcHMsXG4gIHVzZVVzZXJCcmFuY2gsXG59IGZyb20gJ3RyYW5zbGF0aW9uLWhlbHBzLXJjbCdcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IGdldFF1b3RlTWF0Y2hlc0luQm9va1JlZiB9IGZyb20gJ3V3LXF1b3RlLWhlbHBlcnMnXG5pbXBvcnQgeyBBbGlnbm1lbnRIZWxwZXJzLCBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzIH0gZnJvbSAnd29yZC1hbGlnbmVyLXJjbCdcbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tICdAcmVhY3QtaG9va3ovZGVlcC1lcXVhbCdcbmltcG9ydCB7IGdldFZlcnNlcyB9IGZyb20gJ2JpYmxlLXJlZmVyZW5jZS1yYW5nZSdcbmltcG9ydCB7IFNjcmlwdHVyZVBhbmUsIFNjcmlwdHVyZVNlbGVjdG9yIH0gZnJvbSAnLi4nXG5pbXBvcnQgeyB1c2VTY3JpcHR1cmVTZXR0aW5ncyB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZVNjcmlwdHVyZVNldHRpbmdzJ1xuaW1wb3J0IHtcbiAgY2xlYW51cFZlcnNlT2JqZWN0cyxcbiAgZmV0Y2hCaWJsZUJvb2ssXG4gIGZpeE9jY3VycmVuY2UsXG4gIGdldEJvb2tOYW1lRnJvbVVzZm1GaWxlTmFtZSxcbiAgZ2V0UmVzb3VyY2VMaW5rLFxuICBnZXRSZXNvdXJjZU1lc3NhZ2UsXG4gIGdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyxcbiAgaXNPcmlnaW5hbEJpYmxlLFxufSBmcm9tICcuLi8uLi91dGlscy9TY3JpcHR1cmVTZXR0aW5ncydcbmltcG9ydCB7IGRlbGF5IH0gZnJvbSAnLi4vLi4vdXRpbHMvZGVsYXknXG5pbXBvcnQgeyBhcmVNYXBzVGhlU2FtZSB9IGZyb20gJy4uLy4uL3V0aWxzL21hcHMnXG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJy4uL1NjcmlwdHVyZVBhbmUvc3R5bGVkJ1xuaW1wb3J0IHtcbiAgTlRfT1JJR19MQU5HLFxuICBPUklHSU5BTF9TT1VSQ0UsXG4gIE9UX09SSUdfTEFORyxcbn0gZnJvbSAnLi4vLi4vdXRpbHMnXG5pbXBvcnQgeyBWZXJzZVNlbGVjdG9yUG9wdXAgfSBmcm9tICcuLi9WZXJzZVNlbGVjdG9yUG9wdXAnXG5pbXBvcnQgeyBnZXRQYXRjaCB9IGZyb20gJy4uLy4uL3V0aWxzL2ZpbGVzJ1xuaW1wb3J0IHsgU2NyaXB0dXJlUmVmZXJlbmNlVHlwZSwgVmVyc2VPYmplY3RzVHlwZSB9IGZyb20gJy4uLy4uL3R5cGVzJ1xuXG5jb25zdCBLRVlfRk9OVF9TSVpFX0JBU0UgPSAnc2NyaXB0dXJlUGFuZUZvbnRTaXplXydcbmNvbnN0IGxhYmVsID0gJ1ZlcnNpb24nXG5jb25zdCBzdHlsZSA9IHsgbWFyZ2luVG9wOiAnMTZweCcsIHdpZHRoOiAnNTAwcHgnIH1cblxuLyoqXG4gKiBjcmVhdGUgYSBzaG9ydCBjb21wYXJpc29uIHZlcnNlIHJlZiBvYmplY3Qgd2l0aG91dCBhbGwgdGhlIHZlcnNlRGF0YVxuICogQHBhcmFtIHZlcnNlUmVmXG4gKi9cbmZ1bmN0aW9uIGNvbXBhcmVPYmplY3QodmVyc2VSZWYpIHtcbiAgY29uc3Qge1xuICAgIGNoYXB0ZXIsXG4gICAgdmVyc2UsXG4gICAgdmVyc2VEYXRhLFxuICB9ID0gdmVyc2VSZWYgfHwge31cbiAgY29uc3QgdmVyc2VPYmplY3RzID0gdmVyc2VEYXRhPy52ZXJzZU9iamVjdHM/Lmxlbmd0aCA/IEpTT04uc3RyaW5naWZ5KHZlcnNlRGF0YS52ZXJzZU9iamVjdHMpIDogJydcbiAgcmV0dXJuIHtcbiAgICBjaGFwdGVyLFxuICAgIHZlcnNlLFxuICAgIHZlcnNlT2JqZWN0cyxcbiAgfVxufVxuXG4vKipcbiAqIGNvbXBhcmUgdHdvIHZlcnNlIHJlZnMgdG8gc2VlIGlmIHRoZXkgYXJlIHN1YnN0YW50aWFsbHkgc2ltaWxhclxuICogQHBhcmFtIHZlcnNlc0ZvclJlZjFcbiAqIEBwYXJhbSB2ZXJzZXNGb3JSZWYyXG4gKi9cbmZ1bmN0aW9uIGFyZVZlcnNlc1NhbWUodmVyc2VzRm9yUmVmMTogYW55W10sIHZlcnNlc0ZvclJlZjI6IGFueVtdKSB7XG4gIHZlcnNlc0ZvclJlZjEgPSB2ZXJzZXNGb3JSZWYxIHx8IFtdXG4gIHZlcnNlc0ZvclJlZjIgPSB2ZXJzZXNGb3JSZWYyIHx8IFtdXG4gIGxldCBhcmVTYW1lID0gZmFsc2VcblxuICBpZiAodmVyc2VzRm9yUmVmMS5sZW5ndGggPT09IHZlcnNlc0ZvclJlZjIubGVuZ3RoKSB7XG4gICAgYXJlU2FtZSA9IHRydWVcblxuICAgIGZvciAobGV0IGkgPSAwLCBsPSB2ZXJzZXNGb3JSZWYxLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgY29uc3QgdmVyc2UxID0gY29tcGFyZU9iamVjdCh2ZXJzZXNGb3JSZWYxW2ldKVxuICAgICAgY29uc3QgdmVyc2UyID0gY29tcGFyZU9iamVjdCh2ZXJzZXNGb3JSZWYyW2ldKVxuICAgICAgYXJlU2FtZSA9IGlzRXF1YWwodmVyc2UxLCB2ZXJzZTIpXG5cbiAgICAgIGlmICghYXJlU2FtZSkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhcmVTYW1lXG59XG5cbi8qKlxuICogZ2V0IHRoZSBVU0ZNIGZvciBib29rSWQgZnJvbSBzY3JpcHR1cmVDb25maWcuXG4gKiBAcGFyYW0ge29iamVjdH0gc2NyaXB0dXJlQ29uZmlnXG4gKiBAcGFyYW0ge3N0cmluZ30gYm9va0lkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRDdXJyZW50Qm9vayA9IChzY3JpcHR1cmVDb25maWcsIGJvb2tJZCkgPT4ge1xuICBjb25zdCBsYXRlc3RCaWJsZSA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0ZT8ucmVzb3VyY2U/LnByb2plY3RJZFxuICBjb25zdCBmaWxlbmFtZSA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0ZT8ucmVzb3VyY2U/Lm5hbWUgLy8gTGlrZSBcIjU3LVRJVC51c2ZtXCJcbiAgbGV0IGlzQm9va1ZhbGlkID0gZmFsc2VcbiAgY29uc3QgYm9va05hbWUgPSBnZXRCb29rTmFtZUZyb21Vc2ZtRmlsZU5hbWUoZmlsZW5hbWUpXG4gIGlzQm9va1ZhbGlkID0gYm9va05hbWU/LnRvTG93ZXJDYXNlKCk/LmluY2x1ZGVzKGJvb2tJZClcbiAgaWYgKCFpc0Jvb2tWYWxpZCkge1xuICAgIGNvbnNvbGUud2FybihgQ3VycmVudCBib29rSWQgaXMgJHtib29rSWR9IGFuZCBVU0ZNIGZpbGUgaXMgJHtmaWxlbmFtZX1gKVxuICB9XG4gIGlmIChsYXRlc3RCaWJsZT8udG9Mb3dlckNhc2UoKSAhPT0gYm9va0lkKSB7XG4gICAgY29uc29sZS53YXJuKGBDdXJyZW50IGJvb2tJZCBpcyAke2Jvb2tJZH0gYnV0IGZldGNoZWQgcHJvamVjdElkIGlzICR7bGF0ZXN0QmlibGV9YClcbiAgICBpc0Jvb2tWYWxpZCA9IGZhbHNlXG4gIH1cbiAgaWYgKGlzQm9va1ZhbGlkKSB7XG4gICAgY29uc3QgYmlibGVVc2ZtID0gc2NyaXB0dXJlQ29uZmlnPy5iaWJsZVVzZm07XG4gICAgaWYgKGJpYmxlVXNmbSkge1xuICAgICAgcmV0dXJuIGJpYmxlVXNmbVxuICAgIH1cbiAgICBjb25zb2xlLmVycm9yKGBnZXRDdXJyZW50Qm9vaygpIC0gQmlibGUgVVNGTSBtaXNzaW5nYClcbiAgfVxuICBjb25zb2xlLmVycm9yKGBnZXRDdXJyZW50Qm9vaygpIC0gRXhwZWN0ZWQgJHtib29rSWR9IGJ1dCBnb3QgZmlsZSAke2ZpbGVuYW1lfWApXG4gIHJldHVybiBudWxsXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNjcmlwdHVyZUNhcmQoe1xuICBhcHBSZWYsXG4gIGF1dGhlbnRpY2F0aW9uLFxuICBib29rSW5kZXgsXG4gIGNhcmROdW0sXG4gIGNsYXNzZXMsXG4gIGRpc2FibGVXb3JkUG9wb3ZlcixcbiAgZ2V0TGFuZ3VhZ2UsXG4gIGdldExleGljb25EYXRhLFxuICBncmVla1JlcG9VcmwsXG4gIGhlYnJld1JlcG9VcmwsXG4gIGh0dHBDb25maWcsXG4gIGlkLFxuICBpc05ULFxuICBsb2dnZWRJblVzZXIsXG4gIG9uTWluaW1pemUsXG4gIG9uUmVzb3VyY2VFcnJvcixcbiAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyxcbiAgcmVmZXJlbmNlOiByZWZlcmVuY2VfLFxuICByZXNvdXJjZToge1xuICAgIG93bmVyLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgcmVzb3VyY2VJZCxcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gIH0sXG4gIHJlc291cmNlTGluayxcbiAgc2VsZWN0ZWRRdW90ZSxcbiAgc2VydmVyLFxuICBzZXRDYXJkc0xvYWRpbmdNZXJnZSxcbiAgc2V0Q2FyZHNMb2FkaW5nVXBkYXRlLFxuICBzZXRDYXJkc1NhdmluZyxcbiAgc2V0U2F2ZWRDaGFuZ2VzLFxuICBzZXRXb3JkQWxpZ25lclN0YXR1cyxcbiAgdHJhbnNsYXRlLFxuICB0aXRsZSxcbiAgdXNlVXNlckxvY2FsU3RvcmFnZSxcbiAgdXBkYXRlTWVyZ2VTdGF0ZSxcbn0pIHtcbiAgY29uc3QgYm9va0lkID0gcmVmZXJlbmNlXz8uYm9va0lkIHx8IHJlZmVyZW5jZV8/LnByb2plY3RJZCAvLyBvbGRlciB2ZXJzaW9ucyB1c2UgcHJvamVjdElkLCBzbyBmYWxsIGJhY2sgdG8gdGhhdFxuICBjb25zdCByZWZlcmVuY2UgPSB7XG4gICAgYm9va0lkLFxuICAgIGNoYXB0ZXI6IHJlZmVyZW5jZV8/LmNoYXB0ZXIsXG4gICAgdmVyc2U6IHJlZmVyZW5jZV8/LnZlcnNlLFxuICB9XG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVfXSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICBjaGVja0ZvckVkaXRCcmFuY2g6IDAsXG4gICAgY3VycmVudFJlZmVyZW5jZTogbnVsbCxcbiAgICBlZGl0QnJhbmNoUmVhZHk6IGZhbHNlLFxuICAgIGVkaXRWZXJzZTogbnVsbCxcbiAgICBoYXZlVW5zYXZlZENoYW5nZXM6IGZhbHNlLFxuICAgIGxhc3RTZWxlY3RlZFF1b3RlOiBudWxsLFxuICAgIHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLFxuICAgIHJlZjogYXBwUmVmLFxuICAgIHNhdmVDbGlja2VkOiBmYWxzZSxcbiAgICBzYXZlQ29udGVudDogbnVsbCxcbiAgICBzYXZlRGlmZlBhdGNoOiBmYWxzZSxcbiAgICBzYXZlRnVsbEJpYmxlQ29udGVudDogbnVsbCxcbiAgICBzZWxlY3Rpb25zOiBuZXcgTWFwKCksXG4gICAgc2VsZWN0aW9uc1JlZnM6ICcnLFxuICAgIHNob3dBbGlnbm1lbnRQb3B1cDogZmFsc2UsXG4gICAgc3RhcnRTYXZlOiBmYWxzZSxcbiAgICB1cmxFcnJvcjogbnVsbCxcbiAgICB1c2luZ1VzZXJCcmFuY2g6IGZhbHNlLFxuICAgIHVuc2F2ZWRDaGFuZ2VzTGlzdDoge30sXG4gICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzOiBudWxsLFxuICAgIHZlcnNlc0ZvclJlZjogbnVsbCxcbiAgICB2ZXJzZU9iamVjdHNNYXA6IG5ldyBNYXAoKSxcbiAgICB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiBudWxsLFxuICB9KVxuICBjb25zdCB7XG4gICAgY2hlY2tGb3JFZGl0QnJhbmNoLFxuICAgIGN1cnJlbnRSZWZlcmVuY2UsXG4gICAgZWRpdEJyYW5jaFJlYWR5LFxuICAgIGVkaXRWZXJzZSwgLy8ga2VlcCB0cmFjayBvZiB2ZXJzZSBiZWluZyBlZGl0dGVkXG4gICAgaGF2ZVVuc2F2ZWRDaGFuZ2VzLFxuICAgIGxhc3RTZWxlY3RlZFF1b3RlLFxuICAgIHJlYWR5Rm9yRmV0Y2gsXG4gICAgcmVmLFxuICAgIHNhdmVDbGlja2VkLFxuICAgIHNhdmVDb250ZW50LFxuICAgIHNhdmVEaWZmUGF0Y2gsXG4gICAgc2F2ZUZ1bGxCaWJsZUNvbnRlbnQsXG4gICAgc2VsZWN0aW9ucyxcbiAgICBzZWxlY3Rpb25zUmVmcyxcbiAgICBzaG93QWxpZ25tZW50UG9wdXAsXG4gICAgc3RhcnRTYXZlLFxuICAgIHVybEVycm9yLFxuICAgIHVzaW5nVXNlckJyYW5jaCxcbiAgICB1bnNhdmVkQ2hhbmdlc0xpc3QsXG4gICAgdmVyc2VPYmplY3RzTWFwLFxuICAgIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQsXG4gICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzLFxuICAgIHZlcnNlc0ZvclJlZixcbiAgfSA9IHN0YXRlXG5cbiAgY29uc3QgW2ZvbnRTaXplLCBzZXRGb250U2l6ZV0gPSB1c2VVc2VyTG9jYWxTdG9yYWdlKEtFWV9GT05UX1NJWkVfQkFTRSArIGNhcmROdW0sIDEwMClcbiAgY29uc3QgaXNOVF8gPSBpc05UKGJvb2tJZClcblxuICBmdW5jdGlvbiBzZXRTdGF0ZShuZXdTdGF0ZSkge1xuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHsgLi4ucHJldlN0YXRlLCAuLi5uZXdTdGF0ZSB9KSlcbiAgfVxuXG4gIGh0dHBDb25maWcgPSB7XG4gICAgLi4uaHR0cENvbmZpZyxcbiAgICBjYWNoZTogeyBtYXhBZ2U6IDAgfSxcbiAgICBub0NhY2hlOiB0cnVlLFxuICB9IC8vIGRpc2FibGUgaHR0cCBjYWNoaW5nXG5cbiAgY29uc3Qge1xuICAgIGlzTmV3VGVzdGFtZW50LFxuICAgIHNjcmlwdHVyZUNvbmZpZyxcbiAgICBzZXRTY3JpcHR1cmUsXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MsXG4gICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QsXG4gIH0gPSB1c2VTY3JpcHR1cmVTZXR0aW5ncyh7XG4gICAgYXBwUmVmOiByZWYsXG4gICAgY2FyZE51bSxcbiAgICBkaXNhYmxlV29yZFBvcG92ZXIsXG4gICAgZ3JlZWtSZXBvVXJsLFxuICAgIGhlYnJld1JlcG9VcmwsXG4gICAgaHR0cENvbmZpZyxcbiAgICBpc05ULFxuICAgIGxhbmd1YWdlSWQsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICAgIG93bmVyLFxuICAgIHJlYWR5Rm9yRmV0Y2gsXG4gICAgcmVmZXJlbmNlOiBjdXJyZW50UmVmZXJlbmNlIHx8IHJlZmVyZW5jZSxcbiAgICByZXNvdXJjZUlkLFxuICAgIHJlc291cmNlTGluayxcbiAgICBzZXRVcmxFcnJvcjogKGVycm9yKSA9PiBzZXRTdGF0ZSh7IHVybEVycm9yOiBlcnJvciB9KSxcbiAgICBzZXJ2ZXIsXG4gICAgdGl0bGUsXG4gICAgdXNlVXNlckxvY2FsU3RvcmFnZSxcbiAgICB3aG9sZUJvb2s6IHRydWUsXG4gIH0pXG5cbiAgY29uc3QgZmV0Y2hlZFJlc291cmNlID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXRlXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgcmVwbyA9IGAke3NjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/Lmxhbmd1YWdlSWR9XyR7c2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucHJvamVjdElkfWBcbiAgY29uc3QgdXNpbmdPcmlnaW5hbEJpYmxlID0gaXNPcmlnaW5hbEJpYmxlKHNjcmlwdHVyZUNvbmZpZ1sncmVzb3VyY2UnXT8ucHJvamVjdElkKVxuXG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBjYXJkUmVzb3VyY2VJZCA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/LnByb2plY3RJZCB8fCByZXNvdXJjZUlkXG4gIC8vIEB0cy1pZ25vcmVcbiAgbGV0IHJlZl8gPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5yZWYgfHwgYXBwUmVmXG4gIGNvbnN0IGNhblVzZUVkaXRCcmFuY2ggPSAhIShsb2dnZWRJblVzZXIgJiYgYXV0aGVudGljYXRpb24gJiYgKHJlc291cmNlSWQgIT09IE9SSUdJTkFMX1NPVVJDRSkgJiYgLy8gVFJJQ0tZIGlmIG5vdCBvcmlnaW5hbCBsYW5ndWFnZSBhbmQgd2UgaGF2ZSBsb2dpbiBkYXRhLCB0aGVuIHdlIGNhbiB1c2UgdGhlIGVkaXQgYnJhbmNoXG4gICAgKChyZWZfID09PSAnbWFzdGVyJykgfHwgKHJlZl8uaW5jbHVkZXMobG9nZ2VkSW5Vc2VyKSkpKSAvLyBhbHNvIG1ha2Ugc3VyZSBub3QgYSB2ZXJzaW9uIHRhZ1xuXG4gIGNvbnN0IHtcbiAgICBzdGF0ZToge1xuICAgICAgYnJhbmNoRGV0ZXJtaW5lZCxcbiAgICAgIHVzZXJFZGl0QnJhbmNoTmFtZSxcbiAgICAgIHVzaW5nVXNlckJyYW5jaDogX3VzaW5nVXNlckJyYW5jaCxcbiAgICAgIHdvcmtpbmdSZXNvdXJjZUJyYW5jaCxcbiAgICB9LFxuICAgIGFjdGlvbnM6IHtcbiAgICAgIHN0YXJ0RWRpdDogc3RhcnRFZGl0QnJhbmNoLFxuICAgICAgZmluaXNoRWRpdCxcbiAgICB9LFxuICB9ID0gdXNlVXNlckJyYW5jaCh7XG4gICAgYXBwUmVmLFxuICAgIGF1dGhlbnRpY2F0aW9uOiBjYW5Vc2VFZGl0QnJhbmNoID8gYXV0aGVudGljYXRpb24gOiBudWxsLFxuICAgIGJvb2tJZCxcbiAgICBjYXJkSWQ6IGlkLFxuICAgIGNhcmRSZXNvdXJjZUlkLFxuICAgIGNoZWNrRm9yRWRpdEJyYW5jaCxcbiAgICBsYW5ndWFnZUlkLFxuICAgIGxvZ2dlZEluVXNlcjogY2FuVXNlRWRpdEJyYW5jaCA/IGxvZ2dlZEluVXNlciA6IG51bGwsXG4gICAgb3duZXIsXG4gICAgb25SZXNvdXJjZUVycm9yLFxuICAgIHNlcnZlcixcbiAgICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICB9KVxuXG4gIGNvbnN0IF91c2VCcmFuY2hNZXJnZXIgPSB1c2VCcmFuY2hNZXJnZXIoeyBzZXJ2ZXIsIG93bmVyLCByZXBvLCB1c2VyQnJhbmNoOiB1c2VyRWRpdEJyYW5jaE5hbWUsIHRva2VuaWQ6IGF1dGhlbnRpY2F0aW9uPy50b2tlbj8uc2hhMSB9KVxuICBjb25zdCB7XG4gICAgc3RhdGU6IHtcbiAgICAgIG1lcmdlU3RhdHVzOiBtZXJnZVRvTWFzdGVyLFxuICAgICAgdXBkYXRlU3RhdHVzOiBtZXJnZUZyb21NYXN0ZXIsXG4gICAgfSxcbiAgfSA9IF91c2VCcmFuY2hNZXJnZXJcblxuICBjb25zdCB1cGRhdGVCdXR0b25Qcm9wcyA9IHVzZUNvbnRlbnRVcGRhdGVQcm9wcyh7XG4gICAgaXNTYXZpbmc6IHN0YXJ0U2F2ZSxcbiAgICB1c2VCcmFuY2hNZXJnZXI6IF91c2VCcmFuY2hNZXJnZXIsXG4gICAgb25VcGRhdGU6ICgpID0+IHtcbiAgICAgIGRlbGF5KDUwMCkudGhlbigoKSA9PiBzY3JpcHR1cmVDb25maWc/LnJlbG9hZFJlc291cmNlKCkpXG4gICAgfSxcbiAgfSlcblxuICBjb25zdCB7XG4gICAgY2FsbFVwZGF0ZVVzZXJCcmFuY2gsXG4gICAgaXNFcnJvckRpYWxvZ09wZW4sXG4gICAgb25DbG9zZUVycm9yRGlhbG9nLFxuICAgIGlzTG9hZGluZzogaXNVcGRhdGVMb2FkaW5nLFxuICAgIGRpYWxvZ01lc3NhZ2UsXG4gICAgZGlhbG9nVGl0bGUsXG4gICAgZGlhbG9nTGluayxcbiAgICBkaWFsb2dMaW5rVG9vbHRpcCxcbiAgfSA9IHVwZGF0ZUJ1dHRvblByb3BzXG5cbiAgY29uc3Qgb25NZXJnZSA9ICgpID0+IHtcbiAgICBmaW5pc2hFZGl0KClcbiAgICBjb25zb2xlLmxvZyhgb25NZXJnZSgpIHN3aXRjaGluZyBiYWNrIHRvIG1hc3RlciBhZnRlciBtZXJnZSBhcHBSZWY6YCwgYXBwUmVmKVxuICAgIHNldFN0YXRlKHtcbiAgICAgIHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLFxuICAgICAgcmVmOiBhcHBSZWYsXG4gICAgfSlcbiAgICBkZWxheSg1MDApLnRoZW4oKCkgPT4ge1xuICAgICAgc2V0U3RhdGUoe1xuICAgICAgICBjaGVja0ZvckVkaXRCcmFuY2g6IGNoZWNrRm9yRWRpdEJyYW5jaCArIDEsIC8vIHRyaWdnZXIgcmVjaGVjayBvZiB1c2VyIGJyYW5jaCB3aGljaCB3aWxsIHN3aXRjaCB0aGUgYnJhbmNoIGJhY2sgdG8gbWFzdGVyXG4gICAgICAgIHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLFxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgeyBpc0xvYWRpbmc6IGlzTWVyZ2VMb2FkaW5nLCBjYWxsTWVyZ2VVc2VyQnJhbmNoIH0gPSB1c2VNYXN0ZXJNZXJnZVByb3BzKHtcbiAgICBpc1NhdmluZzogc3RhcnRTYXZlLFxuICAgIHVzZUJyYW5jaE1lcmdlcjogX3VzZUJyYW5jaE1lcmdlcixcbiAgICBvbk1lcmdlLFxuICB9KVxuXG4gIC8vIFNpbmNlIG9yaWdpbmFsIHRleHQgKEdyZWVrL0hlYnJldykgc2hvdWxkIG5vdCBiZSBlZGl0ZWQsIGRvIG5vdCBpbmNsdWRlXG4gIC8vIHRoZW0gaW4gbWVyZ2Ugc3RhdGUgc2luY2UgdXNlciB3aWxsIG5vdCBtZXJnZS9wdXNoIGNoYW5nZXMuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNhcmRSZXNvdXJjZUlkICYmICF1c2luZ09yaWdpbmFsQmlibGUpIHtcbiAgICAgIHVwZGF0ZU1lcmdlU3RhdGUgJiYgdXBkYXRlTWVyZ2VTdGF0ZShcbiAgICAgICAgY2FyZFJlc291cmNlSWQsXG4gICAgICAgIHNjcmlwdHVyZUNvbmZpZy50aXRsZSxcbiAgICAgICAgbWVyZ2VGcm9tTWFzdGVyLFxuICAgICAgICBtZXJnZVRvTWFzdGVyLFxuICAgICAgICBjYWxsVXBkYXRlVXNlckJyYW5jaCxcbiAgICAgICAgY2FsbE1lcmdlVXNlckJyYW5jaCxcbiAgICAgIClcbiAgICB9XG4gIH0sW2NhcmRSZXNvdXJjZUlkLCBzY3JpcHR1cmVDb25maWcudGl0bGUsIG1lcmdlRnJvbU1hc3RlciwgbWVyZ2VUb01hc3Rlcl0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNVcGRhdGVMb2FkaW5nKSB7XG4gICAgICBzZXRDYXJkc0xvYWRpbmdVcGRhdGU/LihwcmV2Q2FyZHNMb2FkaW5nID0+IFsuLi5wcmV2Q2FyZHNMb2FkaW5nLCBjYXJkUmVzb3VyY2VJZF0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHNldENhcmRzTG9hZGluZ1VwZGF0ZT8uKHByZXZDYXJkc0xvYWRpbmcgPT4gcHJldkNhcmRzTG9hZGluZy5maWx0ZXIoY2FyZElkID0+IGNhcmRJZCAhPT0gY2FyZFJlc291cmNlSWQpKVxuICAgIH1cbiAgfSwgW2lzVXBkYXRlTG9hZGluZ10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNNZXJnZUxvYWRpbmcpIHtcbiAgICAgIHNldENhcmRzTG9hZGluZ01lcmdlPy4ocHJldkNhcmRzTG9hZGluZyA9PiBbLi4ucHJldkNhcmRzTG9hZGluZywgY2FyZFJlc291cmNlSWRdKVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRDYXJkc0xvYWRpbmdNZXJnZT8uKHByZXZDYXJkc0xvYWRpbmcgPT4gcHJldkNhcmRzTG9hZGluZy5maWx0ZXIoY2FyZElkID0+IGNhcmRJZCAhPT0gY2FyZFJlc291cmNlSWQpKVxuICAgIH1cbiAgfSwgW2lzTWVyZ2VMb2FkaW5nXSlcblxuICBjb25zdCB3b3JraW5nUmVmID0gY2FuVXNlRWRpdEJyYW5jaCA/IHdvcmtpbmdSZXNvdXJjZUJyYW5jaCA6IGFwcFJlZlxuICBsZXQgc2NyaXB0dXJlVGl0bGVcblxuICBpZiAoIWNhblVzZUVkaXRCcmFuY2ggJiYgIXJlYWR5Rm9yRmV0Y2gpIHsgLy8gaWYgYmlibGUgbm90IGVsaWdpYmxlIGZvciB1c2VyIGJyYW5jaCwgbWFrZSBzdXJlIGl0J3MgcmVhZHlcbiAgICBzZXRTdGF0ZSh7IHJlYWR5Rm9yRmV0Y2g6IHRydWUgfSlcbiAgfVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYFNjcmlwdHVyZUNhcmQgYm9vayBjaGFuZ2VkYCwgeyBib29rSWQsIG93bmVyLCBsYW5ndWFnZUlkLCByZXNvdXJjZUlkIH0pXG5cbiAgICBpZiAoY2FuVXNlRWRpdEJyYW5jaCkgeyAvLyBpZiBiaWJsZSBlbGlnaWJsZSBmb3IgdXNlciBicmFuY2gsIHJlZnJlc2ggaXRcbiAgICAgIHNldFN0YXRlKHsgcmVhZHlGb3JGZXRjaDogZmFsc2UsIGNoZWNrRm9yRWRpdEJyYW5jaDogY2hlY2tGb3JFZGl0QnJhbmNoICsgMSB9KVxuICAgIH1cbiAgfSwgW2Jvb2tJZCwgb3duZXIsIGxhbmd1YWdlSWQsIHJlc291cmNlSWRdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc0VxdWFsKHJlZmVyZW5jZSwgY3VycmVudFJlZmVyZW5jZSkpIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVDYXJkIHJlZmVyZW5jZSBjaGFuZ2VkYCwgcmVmZXJlbmNlKVxuICAgICAgc2V0U3RhdGUoeyBjdXJyZW50UmVmZXJlbmNlOiByZWZlcmVuY2UsIGVkaXRWZXJzZTogbnVsbCB9KVxuICAgIH1cbiAgfSwgW3JlZmVyZW5jZV0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gd2FpdGluZyBmb3IgYnJhbmNoIGZldGNoIHRvIGNvbXBsZXRlXG4gICAgaWYgKCFyZWFkeUZvckZldGNoICYmIGJyYW5jaERldGVybWluZWQgKSB7XG4gICAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZCBicmFuY2hEZXRlcm1pbmVkIGlzICR7YnJhbmNoRGV0ZXJtaW5lZH0gYW5kIHdvcmtpbmdSZWYgaXMgJHt3b3JraW5nUmVmfWApXG4gICAgICBzZXRTdGF0ZSh7IHJlYWR5Rm9yRmV0Y2g6IHRydWUsIHJlZjogd29ya2luZ1JlZiB9KVxuICAgIH1cbiAgfSwgW2JyYW5jaERldGVybWluZWRdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHNlbGVjdCBjb3JyZWN0IHdvcmtpbmcgcmVmIC0gY291bGQgYmUgbWFzdGVyLCB1c2VyIGJyYW5jaCwgb3IgcmVsZWFzZVxuICAgIGlmIChfdXNpbmdVc2VyQnJhbmNoICE9PSB1c2luZ1VzZXJCcmFuY2gpIHtcbiAgICAgIHNldFN0YXRlKHsgdXNpbmdVc2VyQnJhbmNoOiBfdXNpbmdVc2VyQnJhbmNoIH0pXG4gICAgfVxuICB9LCBbX3VzaW5nVXNlckJyYW5jaCwgdXNpbmdVc2VyQnJhbmNoXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB1cGRhdGUgZGlzcGxheSBzdGF0dXMgaWYgZXJyb3JcbiAgICBjb25zdCBlcnJvciA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0dXM/LltFUlJPUl9TVEFURV1cblxuICAgIGlmIChlcnJvcikgeyAvLyBpZiBlcnJvciB3YXMgZm91bmQgZG8gY2FsbGJhY2tcbiAgICAgIGNvbnN0IHJlc291cmNlU3RhdHVzID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXR1c1xuICAgICAgY29uc3QgcmVzb3VyY2VMaW5rID0gZ2V0UmVzb3VyY2VMaW5rKHNjcmlwdHVyZUNvbmZpZylcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBnZXRSZXNvdXJjZU1lc3NhZ2UocmVzb3VyY2VTdGF0dXMsIHNlcnZlciwgcmVzb3VyY2VMaW5rLCBpc05UXylcbiAgICAgIGNvbnN0IGlzQWNjZXNzRXJyb3IgPSByZXNvdXJjZVN0YXR1c1tNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SXVxuICAgICAgb25SZXNvdXJjZUVycm9yICYmIG9uUmVzb3VyY2VFcnJvcihtZXNzYWdlLCBpc0FjY2Vzc0Vycm9yLCByZXNvdXJjZVN0YXR1cylcbiAgICB9XG4gIH0sIFtzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdHVzPy5bRVJST1JfU1RBVEVdXSlcblxuICBpZiAoc2NyaXB0dXJlQ29uZmlnLnRpdGxlICYmIHNjcmlwdHVyZUNvbmZpZy52ZXJzaW9uKSB7XG4gICAgc2NyaXB0dXJlVGl0bGUgPSBgJHtzY3JpcHR1cmVDb25maWcudGl0bGV9IHYke3NjcmlwdHVyZUNvbmZpZy52ZXJzaW9ufWBcbiAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdC51cGRhdGVUaXRsZShzY3JpcHR1cmVDb25maWcucmVzb3VyY2VMaW5rLCBzY3JpcHR1cmVUaXRsZSlcbiAgfSBlbHNlIHtcbiAgICBzY3JpcHR1cmVUaXRsZSA9IGBUaXRsZSBtaXNzaW5nIGZyb20gcHJvamVjdCBtYW5pZmVzdGBcbiAgfVxuXG4gIC8qKiBEeW5hbWljYWxseSBjcmVhdGVzIHRoZSBzY3JpcHR1cmUgc2VsZWN0aW9uIGRyb3Bkb3duIHRvIGJlIGluc2VydGVkIGludG8gY2FyZCBzZXR0aW5ncyAqL1xuICBmdW5jdGlvbiBnZXRTY3JpcHR1cmVTZWxlY3RvcigpIHtcbiAgICBjb25zdCBzY3JpcHR1cmVTZWxlY3Rpb25Db25maWcgPSBnZXRTY3JpcHR1cmVWZXJzaW9uU2V0dGluZ3Moe1xuICAgICAgbGFiZWwsXG4gICAgICByZXNvdXJjZUxpbms6IHNjcmlwdHVyZUNvbmZpZy5yZXNvdXJjZUxpbmssXG4gICAgICBzZXRTY3JpcHR1cmUsXG4gICAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdCxcbiAgICB9KVxuXG4gICAgcmV0dXJuIDxTY3JpcHR1cmVTZWxlY3RvciB7Li4uc2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnfSBzdHlsZT17c3R5bGV9IGVycm9yTWVzc2FnZT17dXJsRXJyb3J9IC8+XG4gIH1cblxuICAvKipcbiAgICogc2V0IGVkaXQgc3RhdGUgZm9yIHNwZWNpZmljIHZlcnNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2ZXJzZVJlZiAtIHJlZmVyZW5jZSBvZiB2ZXJzZSBiZWluZyBlZGl0ZWQgb3IgZmluaXNoZWQgZWRpdFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGVkaXRpbmcgLSB0cnVlIHdoZW4gZWRpdGluZ1xuICAgKi9cbiAgZnVuY3Rpb24gc2V0RWRpdFZlcnNlKHZlcnNlUmVmLCBlZGl0aW5nKSB7XG4gICAgaWYgKGVkaXRpbmcgJiYgKHZlcnNlUmVmICE9PSBlZGl0VmVyc2UpKSB7IC8vIGlmIHdlIG5lZWQgdG8gc2V0IGZsYWcgdGhhdCB3ZSBhcmUgZWRpdGluZyB0aGlzIHZlcnNlXG4gICAgICBzZXRTdGF0ZSh7IGVkaXRWZXJzZTogdmVyc2VSZWYgfSlcbiAgICB9IGVsc2UgaWYgKCFlZGl0aW5nICYmICh2ZXJzZVJlZiA9PT0gZWRpdFZlcnNlKSkgeyAvLyBjbGVhciBlZGl0IGZsYWcgaWYgaXQgaXMgZm9yIGN1cnJlbnQgZWRpdCB2ZXJzZVxuICAgICAgc2V0U3RhdGUoeyBlZGl0VmVyc2U6IG51bGwgfSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBkaXNhYmxlQ2hhbmdlQnV0dG9ucyA9IGVkaXRWZXJzZSAvLyB3ZSBkb24ndCB3YW50IHRvIGFsbG93IGNsaWNraW5nIG9uIGNoYW5nZSBidXR0b25zIHdoaWxlIGVkaXRpbmdcblxuICBmdW5jdGlvbiBvbk1lbnVDbG9zZSgpIHtcbiAgICAvLyBjb25zb2xlLmxvZyhgb25NZW51Q2xvc2UoKWApXG4gICAgc2V0U3RhdGUoeyB1cmxFcnJvcjogbnVsbCB9KVxuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBsYW5ndWFnZUlkXyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/Lmxhbmd1YWdlSWRcbiAgY29uc3QgbGFuZ3VhZ2UgPSBnZXRMYW5ndWFnZSh7IGxhbmd1YWdlSWQ6IGxhbmd1YWdlSWRfIH0pXG4gIGNvbnN0IGRpcmVjdGlvbiA9IChsYW5ndWFnZT8uZGlyZWN0aW9uKSB8fCAnbHRyJ1xuICBjb25zdCBfcmVmZXJlbmNlID0gY3VycmVudFJlZmVyZW5jZSB8fCByZWZlcmVuY2VcblxuICBjb25zdCBpc0hlYnJldyA9IChsYW5ndWFnZUlkXyA9PT0gJ2hibycpXG4gIGNvbnN0IGZvbnRGYWN0b3IgPSBpc0hlYnJldyA/IDEuNCA6IDEgLy8gd2UgYXV0b21hdGljYWxseSBzY2FsZSB1cCBmb250IHNpemUgZm9yIEhlYnJld1xuICBjb25zdCBzY2FsZWRGb250U2l6ZSA9IGZvbnRTaXplICogZm9udEZhY3RvclxuXG4gIGNvbnN0IGl0ZW1zID0gbnVsbFxuICBjb25zdCB7XG4gICAgc3RhdGU6IHtcbiAgICAgIGhlYWRlcnMsIGZpbHRlcnMsIGl0ZW1JbmRleCwgbWFya2Rvd25WaWV3LFxuICAgIH0sXG4gICAgYWN0aW9uczoge1xuICAgICAgc2V0RmlsdGVycywgc2V0SXRlbUluZGV4LCBzZXRNYXJrZG93blZpZXcsXG4gICAgfSxcbiAgfSA9IHVzZUNhcmRTdGF0ZSh7IGl0ZW1zIH0pXG5cbiAgY29uc3QgcmVmU3R5bGUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgZm9udEZhbWlseTogJ05vdG8gU2FucycsXG4gICAgZm9udFNpemU6IGAke01hdGgucm91bmQoc2NhbGVkRm9udFNpemUgKiAwLjkpfSVgLFxuICB9KSwgW3NjYWxlZEZvbnRTaXplXSlcblxuICBjb25zdCBjb250ZW50U3R5bGUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgZm9udEZhbWlseTogJ05vdG8gU2FucycsXG4gICAgZm9udFNpemU6IGAke3NjYWxlZEZvbnRTaXplfSVgLFxuICB9KSwgW3NjYWxlZEZvbnRTaXplXSlcblxuICBjb25zdCBzY3JpcHR1cmVMYWJlbCA9IDxUaXRsZT57c2NyaXB0dXJlVGl0bGV9PC9UaXRsZT5cbiAgbGV0IGRpc2FibGVXb3JkUG9wb3Zlcl8gPSBkaXNhYmxlV29yZFBvcG92ZXJcblxuICBpZiAoZGlzYWJsZVdvcmRQb3BvdmVyID09PSB1bmRlZmluZWQpIHsgLy8gaWYgbm90IHNwZWNpZmllZCwgdGhlbiBkZXRlcm1pbmUgaWYgb3JpZ2luYWwgbGFuZ3VhZ2UgcmVzb3VyY2VcbiAgICBkaXNhYmxlV29yZFBvcG92ZXJfID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICB9XG5cbiAgY29uc3QgZW5hYmxlRWRpdCA9ICF1c2luZ09yaWdpbmFsQmlibGVcbiAgY29uc3QgZW5hYmxlQWxpZ25tZW50ID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICBjb25zdCBvcmlnaW5hbFJlcG9VcmwgPSBpc05ld1Rlc3RhbWVudCA/IGdyZWVrUmVwb1VybCA6IGhlYnJld1JlcG9VcmxcbiAgY29uc3Qgc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyA9IHtcbiAgICBhdXRoZW50aWNhdGlvbjogY2FuVXNlRWRpdEJyYW5jaCA/IGF1dGhlbnRpY2F0aW9uIDogbnVsbCxcbiAgICBib29rSW5kZXgsXG4gICAgY3VycmVudFZlcnNlUmVmOiBfcmVmZXJlbmNlLFxuICAgIGVuYWJsZUVkaXQsXG4gICAgZW5hYmxlQWxpZ25tZW50LFxuICAgIGh0dHBDb25maWcsXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlzTmV3VGVzdGFtZW50LFxuICAgIGxvZ2dlZEluVXNlcjogY2FuVXNlRWRpdEJyYW5jaCA/IGxvZ2dlZEluVXNlciA6IG51bGwsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBvcmlnaW5hbFJlcG9VcmwsXG4gICAgc2NyaXB0dXJlQ29uZmlnLFxuICAgIHNjcmlwdHVyZVNldHRpbmdzLFxuICAgIHN0YXJ0RWRpdEJyYW5jaCxcbiAgICBzZXRTYXZlZENoYW5nZXM6IF9zZXRTYXZlZENoYW5nZXMsXG4gICAgc291cmNlTGFuZ3VhZ2U6IGlzTlRfID8gTlRfT1JJR19MQU5HIDogT1RfT1JJR19MQU5HLFxuICAgIHRhcmdldExhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICB0aXRsZTogc2NyaXB0dXJlVGl0bGUsXG4gICAgd29ya2luZ1Jlc291cmNlQnJhbmNoOiByZWYsXG4gIH1cblxuICAvKipcbiAgICogdGhpcyBnZXRzIGNhbGxlZCB3aGVuZXZlciBhIHNjcmlwdHVyZSBwYW5lIGhhcyBhIGNoYW5nZSBpbiBzYXZlIHN0YXRlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjdXJyZW50SW5kZXhcbiAgICogQHBhcmFtIHtib29sZWFufSBzYXZlZFxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBnZXRDaGFuZ2VzIC0gd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgdXNlciBjbGlja3Mgc2F2ZSBidXR0b25cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2xlYXJDaGFuZ2VzIC0gd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgc2F2ZSBoYXMgY29tcGxldGVkXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBzdGF0ZSAtIGN1cnJlbnQgc3RhdGUgb2Ygd29yZCBhbGlnbm1lbnQvZWRpdFxuICAgKi9cbiAgZnVuY3Rpb24gX3NldFNhdmVkQ2hhbmdlcyhjdXJyZW50SW5kZXgsIHNhdmVkLCB7IGdldENoYW5nZXMgPSBudWxsLCBjbGVhckNoYW5nZXMgPSBudWxsLCBzdGF0ZSA9IG51bGwgfSkge1xuICAgIGNvbnN0IF91bnNhdmVkQ2hhbmdlc0xpc3QgPSB7IC4uLnVuc2F2ZWRDaGFuZ2VzTGlzdCB9XG5cbiAgICBpZiAoc2F2ZWQpIHtcbiAgICAgIGlmIChfdW5zYXZlZENoYW5nZXNMaXN0Lmhhc093blByb3BlcnR5KGN1cnJlbnRJbmRleCkpIHtcbiAgICAgICAgZGVsZXRlIF91bnNhdmVkQ2hhbmdlc0xpc3RbY3VycmVudEluZGV4XVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBfdW5zYXZlZENoYW5nZXNMaXN0W2N1cnJlbnRJbmRleF0gPSB7IGdldENoYW5nZXMsIGNsZWFyQ2hhbmdlcywgc3RhdGUgfSAvLyB1cGRhdGUgd2l0aCBsYXRlc3RcbiAgICB9XG5cbiAgICBjb25zdCBfaGF2ZVVuc2F2ZWRDaGFuZ2VzID0gISFPYmplY3Qua2V5cyhfdW5zYXZlZENoYW5nZXNMaXN0KS5sZW5ndGhcblxuICAgIGlmIChoYXZlVW5zYXZlZENoYW5nZXMgIT0gX2hhdmVVbnNhdmVkQ2hhbmdlcykge1xuICAgICAgc2V0U2F2ZWRDaGFuZ2VzICYmIHNldFNhdmVkQ2hhbmdlcyhyZXNvdXJjZUlkLCAhX2hhdmVVbnNhdmVkQ2hhbmdlcylcbiAgICAgIHNldFN0YXRlKHsgaGF2ZVVuc2F2ZWRDaGFuZ2VzOiBfaGF2ZVVuc2F2ZWRDaGFuZ2VzIH0pXG4gICAgfVxuXG4gICAgaWYgKCFpc0VxdWFsKF91bnNhdmVkQ2hhbmdlc0xpc3QsIHVuc2F2ZWRDaGFuZ2VzTGlzdCkpIHtcbiAgICAgIHNldFN0YXRlKHsgdW5zYXZlZENoYW5nZXNMaXN0OiBfdW5zYXZlZENoYW5nZXNMaXN0IH0pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIHNlYXJjaCBjaGFwdGVyIG9yIHZlcnNlIGNodW5rIHRvIGxpbmUgdGhhdCBzdGFydHMgd2l0aCBmaW5kSXRlbVxuICAgKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9IGZpbmRJdGVtXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGNodW5rc1xuICAgKi9cbiAgZnVuY3Rpb24gZmluZFJlZkluQXJyYXkoZmluZEl0ZW0sIGNodW5rcykge1xuICAgIGNvbnN0IHJlZl8gPSBmaW5kSXRlbSArICcnXG4gICAgY29uc3QgcmVmTGVuID0gcmVmXy5sZW5ndGhcbiAgICBjb25zdCBpbmRleCA9IGNodW5rcy5maW5kSW5kZXgoKGNodW5rLCBpZHgpID0+IHtcbiAgICAgIGlmIChpZHggPiAwKSB7XG4gICAgICAgIGlmIChjaHVuay5zdWJzdHJpbmcoMCwgcmVmTGVuKSA9PT0gcmVmXykge1xuICAgICAgICAgIGNvbnN0IG5leHRDaGFyID0gY2h1bmtbcmVmTGVuXVxuXG4gICAgICAgICAgaWYgKChuZXh0Q2hhciA+ICc5JykgfHwgKG5leHRDaGFyIDwgJzAnKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0pXG4gICAgcmV0dXJuIGluZGV4XG4gIH1cblxuICBmdW5jdGlvbiBnZXRCb29rTmFtZSgpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgYm9va0NhcHMgPSBzY3JpcHR1cmVDb25maWc/LnJlZmVyZW5jZT8uYm9va0lkID8gc2NyaXB0dXJlQ29uZmlnLnJlZmVyZW5jZS5ib29rSWQudG9VcHBlckNhc2UoKSA6ICcnXG4gICAgcmV0dXJuIGAke2Jvb2tJbmRleH0tJHtib29rQ2Fwc30udXNmbWBcbiAgfVxuXG4gIGNvbnN0IGZpbGVwYXRoID0gZ2V0Qm9va05hbWUoKVxuICBjb25zdCBzaGEgPSBmZXRjaGVkUmVzb3VyY2U/LnNoYVxuXG4gIC8vIGtlZXAgdHJhY2sgb2YgdmVyc2UgZWRpdCBzdGF0ZVxuICBjb25zdCB7XG4gICAgZXJyb3I6IHNhdmVFcnJvcixcbiAgICBpc0Vycm9yOiBpc1NhdmVFcnJvcixcbiAgICBvblNhdmVFZGl0LFxuICAgIG9uU2F2ZUVkaXRQYXRjaCxcbiAgfSA9IHVzZUVkaXQoe1xuICAgIHNoYSxcbiAgICBvd25lcixcbiAgICBjb250ZW50OiBzYXZlQ29udGVudCxcbiAgICBjb25maWc6IHtcbiAgICAgIGNhY2hlOiB7IG1heEFnZTogMCB9LFxuICAgICAgLi4uYXV0aGVudGljYXRpb24/LmNvbmZpZyxcbiAgICAgIGRvbnRDcmVhdGVCcmFuY2g6IHRydWUsXG4gICAgICB0b2tlbjogYXV0aGVudGljYXRpb24/LnRva2VuLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGltZW91dDogaHR0cENvbmZpZz8uc2VydmVyVGltZU91dCB8fCBodHRwQ29uZmlnPy50aW1lb3V0IHx8IDEwMDAwLFxuICAgICAgc2VydmVyLFxuICAgIH0sXG4gICAgYXV0aG9yOiBsb2dnZWRJblVzZXIsXG4gICAgZW1haWw6IGF1dGhlbnRpY2F0aW9uPy51c2VyPy5lbWFpbCxcbiAgICB0b2tlbjogYXV0aGVudGljYXRpb24/LnRva2VuLFxuICAgIGJyYW5jaDogd29ya2luZ1Jlc291cmNlQnJhbmNoLFxuICAgIGZpbGVwYXRoLFxuICAgIHJlcG8sXG4gIH0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gd2hlbiB3ZSBnZXQgYSBzYXZlIHNhdmVFcnJvclxuICAgIGlmIChzYXZlRXJyb3IgJiYgaXNTYXZlRXJyb3IgJiYgIXN0YXJ0U2F2ZSkgeyAvLyBpZiBlcnJvciB0aGVuIHNob3cgYWZ0ZXIgc2F2ZSBjb21wbGV0ZXMsIHNpbmNlIHdlIG1heSByZXRyeVxuICAgICAgY29uc29sZS5sb2coYHNhdmUgZXJyb3JgLCBzYXZlRXJyb3IpXG4gICAgICBvblJlc291cmNlRXJyb3IgJiYgb25SZXNvdXJjZUVycm9yKG51bGwsIGZhbHNlLCBudWxsLCBgRXJyb3Igc2F2aW5nICR7bGFuZ3VhZ2VJZF99XyR7cmVzb3VyY2VJZH0gJHtzYXZlRXJyb3J9YCwgdHJ1ZSlcbiAgICB9XG4gIH0sIFtzYXZlRXJyb3IsIGlzU2F2ZUVycm9yLCBzdGFydFNhdmVdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHdoZW4gc3RhcnRTYXZlIGdvZXMgdHJ1ZSwgc2F2ZSBlZGl0cyB0byB1c2VyIGJyYW5jaCBhbmQgdGhlbiBjbGVhciBzdGFydFNhdmVcbiAgICBmdW5jdGlvbiBfc2F2ZVN1Y2Nlc2Z1bCgpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmUgc2NyaXB0dXJlIGVkaXRzIHN1Y2Nlc3NgKVxuICAgICAgc2V0Q2FyZHNTYXZpbmcocHJldkNhcmRzU2F2aW5nID0+IHByZXZDYXJkc1NhdmluZy5maWx0ZXIoY2FyZElkID0+IGNhcmRJZCAhPT0gY2FyZFJlc291cmNlSWQpKVxuICAgICAgc2V0U3RhdGUoe1xuICAgICAgICBzdGFydFNhdmU6IGZhbHNlLFxuICAgICAgfSlcblxuICAgICAgY29uc3QgdW5zYXZlZENhcmRJbmRpY2VzID0gT2JqZWN0LmtleXModW5zYXZlZENoYW5nZXNMaXN0KVxuXG4gICAgICBpZiAodW5zYXZlZENhcmRJbmRpY2VzPy5sZW5ndGgpIHtcbiAgICAgICAgZm9yIChjb25zdCBjYXJkSW5kZXggb2YgdW5zYXZlZENhcmRJbmRpY2VzKSB7XG4gICAgICAgICAgY29uc3Qge2NsZWFyQ2hhbmdlc30gPSB1bnNhdmVkQ2hhbmdlc0xpc3RbY2FyZEluZGV4XVxuICAgICAgICAgIGNsZWFyQ2hhbmdlcyAmJiBjbGVhckNoYW5nZXMoKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnNvbGUuaW5mbygnc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBSZWxvYWRpbmcgcmVzb3VyY2UnKVxuICAgICAgc2V0U3RhdGUoe1xuICAgICAgICBzdGFydFNhdmU6IGZhbHNlLFxuICAgICAgICByZWFkeUZvckZldGNoOiB0cnVlLFxuICAgICAgICBzYXZlRnVsbEJpYmxlQ29udGVudDogbnVsbCxcbiAgICAgICAgc2F2ZUNvbnRlbnQ6IG51bGwsXG4gICAgICAgIHJlZjogdXNlckVkaXRCcmFuY2hOYW1lLFxuICAgICAgfSlcbiAgICAgIGRlbGF5KDEwMCkudGhlbigoKSA9PiB7XG4gICAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBwcmV2Q2FyZHNTYXZpbmcuZmlsdGVyKGNhcmRJZCA9PiBjYXJkSWQgIT09IGNhcmRSZXNvdXJjZUlkKSlcbiAgICAgICAgc2NyaXB0dXJlQ29uZmlnPy5yZWxvYWRSZXNvdXJjZShzaGEsIHVzZXJFZGl0QnJhbmNoTmFtZSlcbiAgICAgIH0pXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIGNvbnN0IF9zYXZlRWRpdCA9IGFzeW5jICgpID0+IHsgLy8gYmVnaW4gdXBsb2FkaW5nIG5ldyBVU0ZNXG4gICAgICBjb25zb2xlLmluZm8oYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gVXNpbmcgc2hhOiAke3NoYX1gKVxuICAgICAgbGV0IHVwbG9hZEZ1bmN0aW9uID0gb25TYXZlRWRpdFxuICAgICAgaWYgKHNhdmVEaWZmUGF0Y2gpIHtcbiAgICAgICAgdXBsb2FkRnVuY3Rpb24gPSBvblNhdmVFZGl0UGF0Y2ggLy8gaWYgd2UgYXJlIHNlbmRpbmcgdXAgYSBkaWZmcGF0Y2gsIHdlIHdpbGwgdXNlIHRoaXMgbWV0aG9kXG4gICAgICB9XG4gICAgICBsZXQgc3VjY2VzcyA9IGF3YWl0IHVwbG9hZEZ1bmN0aW9uKHVzZXJFZGl0QnJhbmNoTmFtZSkvLyBwdXNoIGNoYW5nZSB0byBzZXJ2ZXJcbiAgICAgIGxldCBlcnJvciA9IHN1Y2Nlc3MgPyBudWxsIDogJ3NhdmluZyBjaGFuZ2VkIHNjcmlwdHVyZSBmYWlsZWQnXG5cbiAgICAgIGlmICghc3VjY2VzcykgeyAvLyBpZiBzYXZlIGZhaWxlZCwgYXR0ZW1wdCBhIHJldHJ5XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2aW5nIGNoYW5nZWQgc2NyaXB0dXJlIGZhaWxlZCwgcmV0cnlpbmcnKVxuICAgICAgICBhd2FpdCBkZWxheSg1MDApIC8vIHNpbmNlIHdlIGhhZCBhbiBlcnJvciwgd2FpdCBmb3IgZGF0YSB0byB1cGRhdGUgb24gc2VydmVyIGJlZm9yZSBnZXR0aW5nIHRoZSBsYXRlc3RcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAvLyBmZXRjaCB0aGUgbGF0ZXN0IGJvb2sgY29udGVudCwgc28gd2UgY2FuIHRlbGwgaWYgbGF0ZXN0IGNoYW5nZXMgd2VyZSBzYXZlZCBhbmQgaGF2ZSB0aGUgbGF0ZXN0IGZpbGUgc2hhXG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBmZXRjaEJpYmxlQm9vayhzZXJ2ZXIsIGh0dHBDb25maWcsIHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2UsIHNjcmlwdHVyZUNvbmZpZz8ucmVmZXJlbmNlKVxuICAgICAgICBlcnJvciA9IHJlc3VsdHM/LmVycm9yXG4gICAgICAgIGxldCBfc2F2ZUNvbnRlbnQgPSBzYXZlQ29udGVudFxuICAgICAgICBsZXQgZmlsZVNoYSA9IG51bGxcbiAgICAgICAgY29uc3Qgc2F2ZWRCaWJsZVVzZm0gPSByZXN1bHRzPy5iaWJsZVVzZm1cbiAgICAgICAgY29uc3QgZWRpdGVkQmlibGVVc2ZtID0gc2F2ZUZ1bGxCaWJsZUNvbnRlbnQ/Lm5ld1xuICAgICAgICBsZXQgdXBUb0RhdGUgPSBzYXZlZEJpYmxlVXNmbSA9PT0gZWRpdGVkQmlibGVVc2ZtIC8vIGNoZWNrIGlmIG5ldyBiaWJsZSBjb250ZW50IGRpZmZlcnMgZnJvbSBsYXRlc3Qgb24gcmVwb1xuXG4gICAgICAgIGlmICghZXJyb3IpIHtcbiAgICAgICAgICBpZiAodXBUb0RhdGUpIHsgLy8gaWYgdGhlIGRhdGEgd2UgYXJlIHRyeWluZyB0byBzYXZlIG1hdGNoZXMgd2hhdCBpcyBub3cgb24gdGhlIHNlcnZlciB0aGVyZSBpcyBub3RoaW5nIHRvIGRvXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBkYXRhIHdhcyBjb3JyZWN0bHkgdXBsb2FkZWQsIHNvIG5vdGhpbmcgbW9yZSB0byBkbycpXG4gICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoc2F2ZURpZmZQYXRjaCkge1xuICAgICAgICAgICAgICBhd2FpdCBkZWxheSgxMDApIC8vIGFsbG93IFVJIHRvIHVwZGF0ZSBiZWZvcmUgcnVubmluZyBjb21wdXRhdGlvbmFsbHkgZXhwZW5zaXZlIGZ1bmN0aW9uXG4gICAgICAgICAgICAgIC8vIHJlZ2VuZXJhdGUgdGhlIHBhdGNoIGFnYWluc3QgdGhlIGxhdGVzdCBjb250ZW50XG4gICAgICAgICAgICAgIGNvbnN0IGRpZmZQYXRjaCA9IGdldFBhdGNoKHNhdmVGdWxsQmlibGVDb250ZW50Py5maWxlbmFtZSwgc2F2ZWRCaWJsZVVzZm0sIGVkaXRlZEJpYmxlVXNmbSwgZmFsc2UpXG4gICAgICAgICAgICAgIF9zYXZlQ29udGVudCA9IGRpZmZQYXRjaFxuICAgICAgICAgICAgICBmaWxlU2hhID0gcmVzdWx0cz8uc2hhXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHN1Y2Nlc3MgPSBhd2FpdCB1cGxvYWRGdW5jdGlvbih1c2VyRWRpdEJyYW5jaE5hbWUsIF9zYXZlQ29udGVudCwgZmlsZVNoYSkgLy8gcHVzaCBjaGFuZ2UgdG8gc2VydmVyXG4gICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgZXJyb3IgPSAnc2F2aW5nIGNoYW5nZWQgc2NyaXB0dXJlIGZhaWxlZCBvbiBzZWNvbmQgYXR0ZW1wdCdcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmUgc3VjY2Vzc2Z1bCBvbiBzZWNvbmQgYXR0ZW1wdCcpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghZXJyb3IgJiYgc3VjY2VzcykgeyAvLyBpZiBubyBlcnJvciBtZXNzYWdlIGFuZCBzYXZlIHdhcyBhIHN1Y2Nlc3NcbiAgICAgICAgcmV0dXJuIF9zYXZlU3VjY2VzZnVsKCkgLy8gbm90aGluZyB0byBkb1xuICAgICAgfVxuXG4gICAgICBjb25zb2xlLmVycm9yKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtICR7ZXJyb3IgfHwgJ3Vua25vd24gc2F2ZSBlcnJvcid9YClcbiAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBwcmV2Q2FyZHNTYXZpbmcuZmlsdGVyKGNhcmRJZCA9PiBjYXJkSWQgIT09IGNhcmRSZXNvdXJjZUlkKSlcbiAgICAgIHNldFN0YXRlKHtzdGFydFNhdmU6IGZhbHNlfSlcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIGlmIChzdGFydFNhdmUpIHtcbiAgICAgIGlmICghZWRpdEJyYW5jaFJlYWR5KSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBlZGl0IGJyYW5jaCBub3QgeWV0IGNyZWF0ZWRgKVxuICAgICAgfSBlbHNlIGlmICghc2hhKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBzYXZlIHNoYSBub3QgeWV0IHJlYWR5YClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBjYWxsaW5nIF9zYXZlRWRpdCgpYClcbiAgICAgICAgc2V0Q2FyZHNTYXZpbmcocHJldkNhcmRzU2F2aW5nID0+IFsuLi5wcmV2Q2FyZHNTYXZpbmcsIGNhcmRSZXNvdXJjZUlkXSlcbiAgICAgICAgX3NhdmVFZGl0KClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtzdGFydFNhdmUsIGVkaXRCcmFuY2hSZWFkeSwgc2hhXSlcblxuICAvKipcbiAgICogY29udmVydCB1cGRhdGVkVmVyc2VPYmplY3RzIHRvIFVTRk0gYW5kIG1lcmdlIGludG8gdGhlIGJpYmxlVXNmbVxuICAgKiBAcGFyYW0ge3N0cmluZ30gYmlibGVVc2ZtIC0gVVNGTSBvZiBiaWJsZVxuICAgKiBAcGFyYW0ge1NjcmlwdHVyZVJlZmVyZW5jZVR5cGV9IHJlZiAtIHJlZmVyZW5jZSBvZiB2ZXJzZSB0byBtZXJnZSBpblxuICAgKiBAcGFyYW0ge1ZlcnNlT2JqZWN0c1R5cGV9IHVwZGF0ZWRWZXJzZU9iamVjdHMgLSBuZXcgdmVyc2UgaW4gdmVyc2VPYmplY3QgZm9ybWF0XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjYXJkTnVtXG4gICAqL1xuICBmdW5jdGlvbiBtZXJnZVZlcnNlT2JqZWN0c0ludG9CaWJsZVVzZm0oYmlibGVVc2ZtOiBzdHJpbmcsIHJlZjogU2NyaXB0dXJlUmVmZXJlbmNlVHlwZSwgdXBkYXRlZFZlcnNlT2JqZWN0czogVmVyc2VPYmplY3RzVHlwZSwgY2FyZE51bTogbnVtYmVyKSB7XG4gICAgbGV0IG5ld1VzZm1cbiAgICBjb25zdCBjaGFwdGVyQ2h1bmtzID0gYmlibGVVc2ZtPy5zcGxpdCgnXFxcXGMgJylcbiAgICBjb25zdCBjaGFwdGVySW5kZXggPSBmaW5kUmVmSW5BcnJheShyZWY/LmNoYXB0ZXIsIGNoYXB0ZXJDaHVua3MpXG5cbiAgICBpZiAoY2hhcHRlckluZGV4ID49IDApIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRDaGFwdGVyID0gY2hhcHRlckNodW5rc1tjaGFwdGVySW5kZXhdXG4gICAgICBsZXQgdmVyc2VDaHVua3MgPSBjdXJyZW50Q2hhcHRlci5zcGxpdCgnXFxcXHYgJylcbiAgICAgIGNvbnN0IHZlcnNlSW5kZXggPSBmaW5kUmVmSW5BcnJheShyZWY/LnZlcnNlLCB2ZXJzZUNodW5rcylcbiAgICAgIGNvbnN0IGZyb250TWF0dGVyID0gcmVmPy52ZXJzZSA9PT0gJ2Zyb250J1xuXG4gICAgICBpZiAoZnJvbnRNYXR0ZXIgfHwgdmVyc2VJbmRleCA+PSAwKSB7XG4gICAgICAgIGNvbnN0IG5ld1ZlcnNlVXNmbSA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuY29udmVydFZlcnNlRGF0YVRvVVNGTSh1cGRhdGVkVmVyc2VPYmplY3RzKVxuICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBuZXcgVVNGTSBmb3IgY2FyZCAke2NhcmROdW19LCB2ZXJzZSAke3JlZj8udmVyc2V9On0gLSAke25ld1ZlcnNlVXNmbS5zdWJzdHJpbmcoMCwgMTAwKX1gKVxuICAgICAgICBpZiAoZnJvbnRNYXR0ZXIpIHsgLy8gZnJvbnQgbWF0dGVyIGdvZXMgYmVmb3JlIGZpcnN0IHZlcnNlXG4gICAgICAgICAgY29uc3Qgb2xkVmVyc2UgPSB2ZXJzZUNodW5rc1swXVxuICAgICAgICAgIGNvbnN0IHByZWZpeExlbiA9IG9sZFZlcnNlLmluZGV4T2YoJ1xcbicpIC8vIGNoYXJhY3RlcnMgYmVmb3JlIHRoZSBmcm9udCBtYXR0ZXIgdGV4dFxuICAgICAgICAgIHZlcnNlQ2h1bmtzWzBdID0gb2xkVmVyc2Uuc3Vic3RyaW5nKDAsIHByZWZpeExlbiArIDEpICsgbmV3VmVyc2VVc2ZtXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3Qgb2xkVmVyc2UgPSB2ZXJzZUNodW5rc1t2ZXJzZUluZGV4XVxuICAgICAgICAgIGNvbnN0IHZlcnNlTnVtTGVuID0gKHJlZj8udmVyc2UgKyAnJykubGVuZ3RoIC8vIGNoYXJhY3RlcnMgYmVmb3JlIHRoZSB2ZXJzZSB0ZXh0XG4gICAgICAgICAgdmVyc2VDaHVua3NbdmVyc2VJbmRleF0gPSBvbGRWZXJzZS5zdWJzdHJpbmcoMCwgdmVyc2VOdW1MZW4gKyAxKSArIG5ld1ZlcnNlVXNmbVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld0NoYXB0ZXIgPSB2ZXJzZUNodW5rcy5qb2luKCdcXFxcdiAnKVxuICAgICAgICBjaGFwdGVyQ2h1bmtzW2NoYXB0ZXJJbmRleF0gPSBuZXdDaGFwdGVyXG4gICAgICAgIG5ld1VzZm0gPSBjaGFwdGVyQ2h1bmtzLmpvaW4oJ1xcXFxjICcpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXdVc2ZtXG4gIH1cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBmb3IgZWFjaCB1bnNhdmVkIGNoYW5nZSwgY2FsbCBpbnRvIHNjcmlwdHVyZVBhbmUgdG8gZ2V0IGxhdGVzdCBjaGFuZ2VzIGZvciB2ZXJzZSB0byBzYXZlXG4gICAgYXN5bmMgZnVuY3Rpb24gZ2V0UmVhZHlGb3JTYXZlKCkge1xuICAgICAgaWYgKHNhdmVDbGlja2VkKSB7XG4gICAgICAgIGxldCBjcmVhdGVFZGl0QnJhbmNoID0gIV91c2luZ1VzZXJCcmFuY2hcblxuICAgICAgICBpZiAoIWNyZWF0ZUVkaXRCcmFuY2gpIHsgLy8gaWYgYWxyZWFkeSB1c2luZyB0aGUgdXNlciBicmFuY2hcbiAgICAgICAgICBpZiAod29ya2luZ1Jlc291cmNlQnJhbmNoICE9PSB1c2VyRWRpdEJyYW5jaE5hbWUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2Fybihgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gc3RhdGUgY29uZmxpY3QgLSBzaG91bGQgYmUgaW4gdXNlciBicmFuY2ggJHt1c2VyRWRpdEJyYW5jaE5hbWV9LCBidXQgYWN0dWFsbHkgdXNpbmcgJHt3b3JraW5nUmVzb3VyY2VCcmFuY2h9YClcbiAgICAgICAgICAgIGNyZWF0ZUVkaXRCcmFuY2ggPSB0cnVlXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBhbHJlYWR5IHVzaW5nIGVkaXQgYnJhbmNoOiAke3dvcmtpbmdSZXNvdXJjZUJyYW5jaH1gKVxuICAgICAgICAgICAgc2V0U3RhdGUoeyBlZGl0QnJhbmNoUmVhZHk6IHRydWUgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY3JlYXRlRWRpdEJyYW5jaCkgeyAvLyBpZiBub3QgeWV0IHVzaW5nIHRoZSB1c2VyIGJyYW5jaCwgY3JlYXRlIGl0XG4gICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGNyZWF0aW5nIGVkaXQgYnJhbmNoYClcbiAgICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgICBlZGl0QnJhbmNoUmVhZHk6IGZhbHNlLFxuICAgICAgICAgICAgcmVhZHlGb3JGZXRjaDogZmFsc2UsXG4gICAgICAgICAgICBzaGE6IG51bGwsXG4gICAgICAgICAgfSkgLy8gd2Ugd2lsbCBuZWVkIGEgbmV3IHNoYSBmb3IgYm9vay9icmFuY2hcblxuICAgICAgICAgIGNvbnN0IGJyYW5jaCA9IGF3YWl0IHN0YXJ0RWRpdEJyYW5jaCgpXG5cbiAgICAgICAgICBpZiAoYnJhbmNoKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gZWRpdCBicmFuY2ggY3JlYXRlZGApXG4gICAgICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgICAgIGVkaXRCcmFuY2hSZWFkeTogdHJ1ZSxcbiAgICAgICAgICAgICAgcmVhZHlGb3JGZXRjaDogdHJ1ZSxcbiAgICAgICAgICAgICAgcmVmOiBicmFuY2gsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIGVycm9yIGNyZWF0aW5nIGVkaXQgYnJhbmNoJylcbiAgICAgICAgICAgIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobnVsbCwgZmFsc2UsIG51bGwsIGBFcnJvciBjcmVhdGluZyBlZGl0IGJyYW5jaCAke2xhbmd1YWdlSWRffV8ke3Jlc291cmNlSWR9YCwgdHJ1ZSlcbiAgICAgICAgICAgIHNldFN0YXRlKHsgc2F2ZUNsaWNrZWQ6IGZhbHNlIH0pXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gZ2V0dGluZyB2ZXJzZSBjaGFuZ2VzYClcbiAgICAgICAgY29uc3QgdW5zYXZlZENhcmRJbmRpY2VzID0gT2JqZWN0LmtleXModW5zYXZlZENoYW5nZXNMaXN0KVxuXG4gICAgICAgIGlmICh1bnNhdmVkQ2FyZEluZGljZXM/Lmxlbmd0aCkge1xuICAgICAgICAgIGxldCBiaWJsZVVzZm1Jbml0aWFsID0gZ2V0Q3VycmVudEJvb2soc2NyaXB0dXJlQ29uZmlnLCBib29rSWQpIC8vIGdldCBvcmlnaW5hbCBVU0ZNXG4gICAgICAgICAgbGV0IGJpYmxlVXNmbU5ldyA9IGJpYmxlVXNmbUluaXRpYWwgLy8gbWFrZSBhIGNvcHkgdG8gZWRpdFxuICAgICAgICAgIGxldCBtZXJnZUZhaWwgPSBmYWxzZVxuXG4gICAgICAgICAgaWYgKGJpYmxlVXNmbUluaXRpYWwpIHtcbiAgICAgICAgICAgIGxldCBjYXJkTnVtID0gMFxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNhcmRJbmRleCBvZiB1bnNhdmVkQ2FyZEluZGljZXMpIHtcbiAgICAgICAgICAgICAgY2FyZE51bSA9IHBhcnNlSW50KGNhcmRJbmRleClcbiAgICAgICAgICAgICAgY29uc3QgeyBnZXRDaGFuZ2VzLCBzdGF0ZSB9ID0gdW5zYXZlZENoYW5nZXNMaXN0W2NhcmROdW1dXG5cbiAgICAgICAgICAgICAgaWYgKGdldENoYW5nZXMpIHtcbiAgICAgICAgICAgICAgICBsZXQgbmV3VXNmbVxuICAgICAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgICAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHMsXG4gICAgICAgICAgICAgICAgfSA9IGdldENoYW5nZXMoc3RhdGUpXG5cbiAgICAgICAgICAgICAgICBpZiAodXBkYXRlZFZlcnNlT2JqZWN0cyAmJiBiaWJsZVVzZm1OZXcpIHsgLy8ganVzdCByZXBsYWNlIHZlcnNlXG4gICAgICAgICAgICAgICAgICBuZXdVc2ZtID0gbWVyZ2VWZXJzZU9iamVjdHNJbnRvQmlibGVVc2ZtKGJpYmxlVXNmbU5ldywgcmVmLCB1cGRhdGVkVmVyc2VPYmplY3RzLCBjYXJkTnVtKVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChuZXdVc2ZtKSB7XG4gICAgICAgICAgICAgICAgICBiaWJsZVVzZm1OZXcgPSBuZXdVc2ZtXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIG1lcmdlRmFpbCA9IHRydWVcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGV0IHNhdmVEaWZmUGF0Y2ggPSBmYWxzZSAvLyBpZiB0cnVlIHRoZW4gd2Ugd2lsbCBzZW5kIHVwIGEgZGlmZnBhdGNoIGluc3RlYWQgb2YgdGhlIHdob2xlIGJvb2tcbiAgICAgICAgICBsZXQgX3NhdmVGdWxsQmlibGVDb250ZW50ID0gbnVsbFxuICAgICAgICAgIGxldCBfc2F2ZUNvbnRlbnQgPSBiaWJsZVVzZm1OZXdcblxuICAgICAgICAgIGlmIChtZXJnZUZhaWwpIHsgLy8gaWYgd2UgZmFpbGVkIHRvIG1lcmdlLCBmYWxsYmFjayB0byBicnV0ZSBmb3JjZSB2ZXJzZSBvYmplY3RzIHRvIFVTRk1cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoJHtjYXJkTnVtfSkgLSB2ZXJzZSBub3QgZm91bmQsIGZhbGxpbmcgYmFjayB0byBpbnNlcnRpbmcgdmVyc2Ugb2JqZWN0YClcbiAgICAgICAgICAgIGxldCBuZXdCb29rSnNvblxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNhcmRJbmRleCBvZiB1bnNhdmVkQ2FyZEluZGljZXMpIHtcbiAgICAgICAgICAgICAgY29uc3QgY2FyZE51bSA9IHBhcnNlSW50KGNhcmRJbmRleClcbiAgICAgICAgICAgICAgY29uc3QgeyBnZXRDaGFuZ2VzLCBzdGF0ZSB9ID0gdW5zYXZlZENoYW5nZXNMaXN0W2NhcmROdW1dXG5cbiAgICAgICAgICAgICAgaWYgKGdldENoYW5nZXMpIHtcbiAgICAgICAgICAgICAgICBsZXQgbmV3VXNmbVxuICAgICAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICAgIG5ld1ZlcnNlVGV4dCxcbiAgICAgICAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgICAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHMsXG4gICAgICAgICAgICAgICAgfSA9IGdldENoYW5nZXMoc3RhdGUpXG5cbiAgICAgICAgICAgICAgICBpZiAodXBkYXRlZFZlcnNlT2JqZWN0cyAmJiAhbmV3VXNmbSkge1xuICAgICAgICAgICAgICAgICAgbGV0IHRhcmdldFZlcnNlT2JqZWN0c18gPSBudWxsXG5cbiAgICAgICAgICAgICAgICAgIGlmIChyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5ld1ZlcnNlVGV4dCkge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgdGFyZ2V0VmVyc2VPYmplY3RzIH0gPSBBbGlnbm1lbnRIZWxwZXJzLnVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlKHVwZGF0ZWRWZXJzZU9iamVjdHMsIG5ld1ZlcnNlVGV4dClcbiAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRWZXJzZU9iamVjdHNfID0gdGFyZ2V0VmVyc2VPYmplY3RzXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VmVyc2VPYmplY3RzXyA9IHVwZGF0ZWRWZXJzZU9iamVjdHNcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBuZXdCb29rSnNvbiA9IHRhcmdldFZlcnNlT2JqZWN0c18gJiYgc2NyaXB0dXJlQ29uZmlnPy51cGRhdGVWZXJzZShyZWYuY2hhcHRlciwgcmVmLnZlcnNlLCB7dmVyc2VPYmplY3RzOiB0YXJnZXRWZXJzZU9iamVjdHNffSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgX3NhdmVDb250ZW50ID0gdXNmbWpzLnRvVVNGTShuZXdCb29rSnNvbiwgeyBmb3JjZWROZXdMaW5lczogdHJ1ZSB9KVxuICAgICAgICAgIH0gZWxzZSB7IC8vIGlmIG9ubHkgY2hhbmdlZCBhIGZldyB2ZXJzZXMsIHdlIHdpbGwganVzdCBtYWtlIGEgZGlmZnBhdGNoIGluc3RlYWQgb2Ygc2VuZGluZyB0aGUgd2hvbGUgYm9va1xuICAgICAgICAgICAgY29uc3QgZmlsZW5hbWUgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdGU/LnJlc291cmNlPy5uYW1lIC8vIExpa2UgXCI1Ny1USVQudXNmbVwiXG4gICAgICAgICAgICBpZiAoZmlsZW5hbWUgJiYgYmlibGVVc2ZtTmV3ICYmIGJpYmxlVXNmbUluaXRpYWwpIHsgLy8gbWFrZSBzdXJlIHdlIGhhdmUgZXZlcnl0aGluZyBuZWVkZWQgdG8gbWFrZSBhIHBhdGNoXG4gICAgICAgICAgICAgIGlmIChiaWJsZVVzZm1Jbml0aWFsID09PSBiaWJsZVVzZm1OZXcpIHsgLy8gaWYgbm8gZGF0YSBjaGFuZ2UsIHRoZW4gc2tpcCBzYXZlIGJlY2F1c2UgRENTIGNyYXNoZXMgb24gYW4gZW1wdHkgcGF0Y2hcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gdGhlcmUgaXMgbm90aGluZyB0byBzYXZlLCBza2lwcGluZ2ApXG4gICAgICAgICAgICAgICAgc2V0U3RhdGUoeyBzYXZlQ2xpY2tlZDogZmFsc2UgfSlcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBkaWZmUGF0Y2ggPSBnZXRQYXRjaChmaWxlbmFtZSwgYmlibGVVc2ZtSW5pdGlhbCwgYmlibGVVc2ZtTmV3LCBmYWxzZSlcbiAgICAgICAgICAgICAgc2F2ZURpZmZQYXRjaCA9IHRydWVcbiAgICAgICAgICAgICAgX3NhdmVDb250ZW50ID0gZGlmZlBhdGNoIC8vIHJlcGxhY2Ugd2hvbGUgYm9vayBjb250ZW50IHdpdGgganVzdCBwYXRjaCBkYXRhIChtdWNoIGZhc3RlciB1cGxvYWRzKVxuICAgICAgICAgICAgICBfc2F2ZUZ1bGxCaWJsZUNvbnRlbnQgPSB7ICAvLyBrZWVwIHRyYWNrIG9mIHBhdGNoIGRhdGEgaW4gY2FzZSB3ZSBuZWVkIHRvIHJldHJ5IHNhdmVcbiAgICAgICAgICAgICAgICBmaWxlbmFtZSxcbiAgICAgICAgICAgICAgICBpbml0aWFsOiBiaWJsZVVzZm1Jbml0aWFsLFxuICAgICAgICAgICAgICAgIG5ldzogYmlibGVVc2ZtTmV3LFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGJpYmxlVXNmbU5ldykge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2aW5nIG5ldyBVU0ZNOiAke2JpYmxlVXNmbU5ldy5zdWJzdHJpbmcoMCwgMTAwKX0uLi5gKVxuICAgICAgICAgICAgc2V0Q2FyZHNTYXZpbmcocHJldkNhcmRzU2F2aW5nID0+IFsuLi5wcmV2Q2FyZHNTYXZpbmcsIGNhcmRSZXNvdXJjZUlkXSlcbiAgICAgICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICAgICAgc2F2ZUNvbnRlbnQ6IF9zYXZlQ29udGVudCxcbiAgICAgICAgICAgICAgc2F2ZUNsaWNrZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICBzYXZlRGlmZlBhdGNoLFxuICAgICAgICAgICAgICBzYXZlRnVsbEJpYmxlQ29udGVudDogX3NhdmVGdWxsQmlibGVDb250ZW50LFxuICAgICAgICAgICAgICBzdGFydFNhdmU6IHRydWUsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIEVycm9yIHJldHJpZXZpbmcgdGhlIGNvcnJlY3QgYm9vayBkYXRhOiBpbmNvcnJlY3QgYm9vayAke2xhbmd1YWdlSWRffV8ke3Jlc291cmNlSWR9YClcbiAgICAgICAgICAgIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobnVsbCwgZmFsc2UsIG51bGwsIGBFcnJvciByZXRyaWV2aW5nIHRoZSBjb3JyZWN0IGJvb2sgZGF0YSAke2xhbmd1YWdlSWRffV8ke3Jlc291cmNlSWR9YCwgdHJ1ZSlcbiAgICAgICAgICAgIHNldFN0YXRlKHsgc2F2ZUNsaWNrZWQ6IGZhbHNlIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZ2V0UmVhZHlGb3JTYXZlKClcbiAgfSwgW3NhdmVDbGlja2VkXSlcblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IHsgY2hhcHRlciB9ID0gX3JlZmVyZW5jZSB8fCB7fVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgX3ZlcnNlc0ZvclJlZiA9IHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmXG4gICAgbGV0IG5ld1NlbGVjdGlvbnMgPSBuZXcgTWFwKClcbiAgICBsZXQgdXBkYXRlU2VsZWN0aW9ucyA9IGZhbHNlXG4gICAgY29uc3QgX21hcCA9IG5ld1NlbGVjdGlvbnNcbiAgICBjb25zdCBvcmlnaW5hbEJvb2tJZCA9IG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM/LmJvb2tJZFxuICAgIGNvbnN0IGJvb2tWZXJzZU9iamVjdCA9IG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM/LmNoYXB0ZXJzXG4gICAgbGV0IG5ld1NlbGVjdGVkUXVvdGUgPSBudWxsXG5cbiAgICAvLyBpZiB3ZSBoYXZlIGV2ZXJ5dGhpbmcgd2UgbmVlZCB0byBjYWxjdWxhdGUgc2VsZWN0aW9uc1xuICAgIGlmIChfdmVyc2VzRm9yUmVmPy5sZW5ndGggJiZcbiAgICAgIGJvb2tWZXJzZU9iamVjdCAmJlxuICAgICAgKGJvb2tJZCA9PT0gb3JpZ2luYWxCb29rSWQpICYmXG4gICAgICBib29rVmVyc2VPYmplY3RbY2hhcHRlcl0gJiYgLy8gd2UgbmVlZCB0byBoYXZlIGRhdGEgZm9yIGNoYXB0ZXJcbiAgICAgIHNlbGVjdGVkUXVvdGU/LnF1b3RlXG4gICAgKSB7XG4gICAgICAvLyBpZiBxdW90ZSBpcyBkaWZmZXJlbnQgdGhhbiBsYXN0XG4gICAgICBpZiAoIWlzRXF1YWwobGFzdFNlbGVjdGVkUXVvdGUsIHNlbGVjdGVkUXVvdGUpIHx8XG4gICAgICAgICFpc0VxdWFsKHZlcnNlc0ZvclJlZiwgX3ZlcnNlc0ZvclJlZikpIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxWZXJzZXMgPSB7fVxuICAgICAgICBjb25zdCBzdWJzdGl0dXRlID0ge30gLy8ga2VlcCB0cmFjayBvZiB2ZXJzZSBzdWJzdGl0dXRpb25zXG4gICAgICAgIGxldCBzdGFydFZlcnNlID0gX3ZlcnNlc0ZvclJlZlswXS52ZXJzZVxuXG4gICAgICAgIGlmICh0eXBlb2Ygc3RhcnRWZXJzZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBzdGFydFZlcnNlID0gcGFyc2VJbnQoc3RhcnRWZXJzZSlcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBsYXN0VmVyc2UgPSBzdGFydFZlcnNlXG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBfdmVyc2VzRm9yUmVmLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgIGNvbnN0IHZlcnNlUmVmID0gX3ZlcnNlc0ZvclJlZltpXVxuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGNoYXB0ZXIsXG4gICAgICAgICAgICB2ZXJzZSxcbiAgICAgICAgICB9ID0gdmVyc2VSZWZcbiAgICAgICAgICAvLyBUUklDS1kgLSB3ZSByZW1hcCB2ZXJzZXMgaW4gcmVmZXJlbmNlIHJhbmdlIHRvIGEgbGluZWFyIHNlcmllcyBvZiB2ZXJzZXMgc28gdmVyc2Ugc3BhbnMgZG9uJ3QgY2hva2UgZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmXG4gICAgICAgICAgbGV0IF92ZXJzZSA9IHN0YXJ0VmVyc2UgKyBpXG4gICAgICAgICAgbGFzdFZlcnNlID0gX3ZlcnNlXG4gICAgICAgICAgc3Vic3RpdHV0ZVtgJHtjaGFwdGVyfToke192ZXJzZX1gXSA9IGAke2NoYXB0ZXJ9OiR7dmVyc2V9YFxuXG4gICAgICAgICAgaWYgKCFvcmlnaW5hbFZlcnNlc1tjaGFwdGVyXSkge1xuICAgICAgICAgICAgb3JpZ2luYWxWZXJzZXNbY2hhcHRlcl0gPSB7fVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGxldCB2ZXJzZU9iamVjdHMgPSBbXVxuXG4gICAgICAgICAgaWYgKCh0eXBlb2YgdmVyc2UgPT09ICdzdHJpbmcnKSAmJiAodmVyc2UuaW5jbHVkZXMoJy0nKSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHZlcnNlcyA9IGdldFZlcnNlcyhib29rVmVyc2VPYmplY3QsIGAke2NoYXB0ZXJ9OiR7dmVyc2V9YClcblxuICAgICAgICAgICAgZm9yIChjb25zdCB2ZXJzZUl0ZW0gb2YgdmVyc2VzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHZvID0gdmVyc2VJdGVtLnZlcnNlRGF0YS52ZXJzZU9iamVjdHNcbiAgICAgICAgICAgICAgdmVyc2VPYmplY3RzID0gdmVyc2VPYmplY3RzLmNvbmNhdCh2bylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmVyc2VPYmplY3RzID0gYm9va1ZlcnNlT2JqZWN0W2NoYXB0ZXJdW3ZlcnNlXT8udmVyc2VPYmplY3RzXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHZlcnNlT2JqZWN0cykge1xuICAgICAgICAgICAgdmVyc2VPYmplY3RzID0gY2xlYW51cFZlcnNlT2JqZWN0cyh2ZXJzZU9iamVjdHMpXG4gICAgICAgICAgICBvcmlnaW5hbFZlcnNlc1tjaGFwdGVyXVtfdmVyc2VdID0geyB2ZXJzZU9iamVjdHMgfVxuICAgICAgICAgICAgX21hcC5zZXQoYCR7Y2hhcHRlcn06JHt2ZXJzZX1gLCB2ZXJzZU9iamVjdHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gY3JlYXRlIG5ldyByZWZlcmVuY2UgcmFuZ2UgZm9yIG5ldyBsaW5lYXIgdmVyc2UgcmFuZ2VcbiAgICAgICAgY29uc3QgW2NoYXB0ZXJdID0gc2VsZWN0ZWRRdW90ZT8ucmVmZXJlbmNlPy5zcGxpdCgnOicpXG4gICAgICAgIGxldCBzdWJSZWYgPSBgJHtjaGFwdGVyfToke3N0YXJ0VmVyc2V9YFxuXG4gICAgICAgIGlmIChsYXN0VmVyc2UgIT0gc3RhcnRWZXJzZSkge1xuICAgICAgICAgIHN1YlJlZiArPSBgLSR7bGFzdFZlcnNlfWBcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHF1b3RlTWF0Y2hlcyA9IGdldFF1b3RlTWF0Y2hlc0luQm9va1JlZih7XG4gICAgICAgICAgYm9va09iamVjdDogb3JpZ2luYWxWZXJzZXMsXG4gICAgICAgICAgcmVmOiBzdWJSZWYsXG4gICAgICAgICAgcXVvdGU6IHNlbGVjdGVkUXVvdGU/LnF1b3RlLFxuICAgICAgICAgIG9jY3VycmVuY2U6IHNlbGVjdGVkUXVvdGU/Lm9jY3VycmVuY2UsXG4gICAgICAgIH0pXG5cbiAgICAgICAgY29uc3Qgc2VsZWN0aW9ucyA9IG5ldyBNYXAoKVxuXG4gICAgICAgIGlmIChxdW90ZU1hdGNoZXM/LnNpemUpIHtcbiAgICAgICAgICBxdW90ZU1hdGNoZXMuZm9yRWFjaCgod29yZHMsIGtleSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgX2tleSA9IHN1YnN0aXR1dGVba2V5XVxuXG4gICAgICAgICAgICBzZWxlY3Rpb25zLnNldChfa2V5LCB3b3Jkcy5tYXAod29yZCA9PiAoXG4gICAgICAgICAgICAgIHsgLi4ud29yZCwgdGV4dDogY29yZS5ub3JtYWxpemVTdHJpbmcod29yZC50ZXh0KSB9XG4gICAgICAgICAgICApKSlcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIG5ld1NlbGVjdGlvbnMgPSBzZWxlY3Rpb25zXG4gICAgICAgIG5ld1NlbGVjdGVkUXVvdGUgPSBzZWxlY3RlZFF1b3RlXG4gICAgICAgIHVwZGF0ZVNlbGVjdGlvbnMgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgbmV3U3RhdGU6IGFueSA9IHt9XG5cbiAgICAvLyB1cGRhdGUgc3RhdGVzIHRoYXQgaGF2ZSBjaGFuZ2VkXG4gICAgaWYgKCFhcmVNYXBzVGhlU2FtZSh2ZXJzZU9iamVjdHNNYXAsIF9tYXApKSB7XG4gICAgICBuZXdTdGF0ZS52ZXJzZU9iamVjdHNNYXAgPSBfbWFwXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBuZXdTdGF0ZS5zZWxlY3Rpb25zUmVmcyA9IF9tYXAgPyBbLi4uX21hcC5rZXlzKCldLmpvaW4oJzsnKSA6ICcnIC8vIGNvbWJpbmUgYWxsIHRoZSB2ZXJzZSByZWZlcmVuY2VzIGludG8gYSBzaW5nbGUgdmVyc2UgcmVmZXJlbmNlIGZvciB0aGUgc2VsZWN0aW9uc1xuICAgIH1cblxuICAgIGNvbnN0IGJvb2tzTm90U2FtZSA9IHJlZmVyZW5jZT8uYm9va0lkICE9PSBjdXJyZW50UmVmZXJlbmNlPy5ib29rSWRcblxuICAgIGlmIChib29rc05vdFNhbWUgfHwgIWFyZVZlcnNlc1NhbWUodmVyc2VzRm9yUmVmLCBfdmVyc2VzRm9yUmVmKSkge1xuICAgICAgbmV3U3RhdGUudmVyc2VzRm9yUmVmID0gX3ZlcnNlc0ZvclJlZlxuICAgICAgbmV3U3RhdGUubGFzdFNlbGVjdGVkUXVvdGUgPSBuZXdTZWxlY3RlZFF1b3RlXG4gICAgICBuZXdTdGF0ZS5zZWxlY3Rpb25zID0gbmV3U2VsZWN0aW9uc1xuICAgIH1cblxuICAgIGlmIChuZXdTZWxlY3RlZFF1b3RlKSB7XG4gICAgICBuZXdTdGF0ZS5sYXN0U2VsZWN0ZWRRdW90ZSA9IG5ld1NlbGVjdGVkUXVvdGVcbiAgICB9XG5cbiAgICBpZiAodXBkYXRlU2VsZWN0aW9ucykge1xuICAgICAgaWYgKCFhcmVNYXBzVGhlU2FtZShzZWxlY3Rpb25zIHx8IChuZXcgTWFwKCkpLCBuZXdTZWxlY3Rpb25zKSkge1xuICAgICAgICBuZXdTdGF0ZS5zZWxlY3Rpb25zID0gbmV3U2VsZWN0aW9uc1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChPYmplY3Qua2V5cyhuZXdTdGF0ZSkubGVuZ3RoKSB7XG4gICAgICBzZXRTdGF0ZShuZXdTdGF0ZSlcbiAgICB9XG4gIH0sIFtcbiAgICBvd25lcixcbiAgICByZXNvdXJjZUlkLFxuICAgIGJvb2tJZCxcbiAgICBsYW5ndWFnZUlkXyxcbiAgICBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZixcbiAgICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzLFxuICAgIHNlbGVjdGVkUXVvdGUsXG4gIF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gY2xlYXIgc2V0dGluZ3Mgb24gdmVyc2UgY2hhbmdlXG4gICAgc2V0U3RhdGUoe1xuICAgICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzOiBudWxsLFxuICAgICAgdW5zYXZlZENoYW5nZXNMaXN0OiB7fSxcbiAgICAgIGhhdmVVbnNhdmVkQ2hhbmdlczogZmFsc2UsXG4gICAgfSlcbiAgfSwgW19yZWZlcmVuY2VdKVxuXG4gIGNvbnN0IHVwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1cyA9IChyZWZlcmVuY2U6IFNjcmlwdHVyZVJlZmVyZW5jZVR5cGUsIGFsaWduZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBzZXRTdGF0ZV8ocHJldlN0YXRlID0+ICh7XG4gICAgICAuLi5wcmV2U3RhdGUsXG4gICAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXM6IHsgLi4ucHJldlN0YXRlLnZlcnNlc0FsaWdubWVudFN0YXR1cywgW2Ake3JlZmVyZW5jZS5jaGFwdGVyfToke3JlZmVyZW5jZS52ZXJzZX1gXTogYWxpZ25lZCB9LFxuICAgIH0pKVxuICB9XG5cbiAgbGV0IF92ZXJzZXNGb3JSZWYgPSBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZlxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKF92ZXJzZXNGb3JSZWY/Lmxlbmd0aCkge1xuICAgICAgY29uc3QgeyByZWZlcmVuY2UsIHJlc291cmNlTGluayB9ID0gc2NyaXB0dXJlQ29uZmlnIHx8IHt9XG4gICAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZC5fdmVyc2VzRm9yUmVmIGNoYW5nZWRgLCB7IHJlZmVyZW5jZSwgcmVzb3VyY2VMaW5rIH0pXG4gICAgfVxuICB9LCBbX3ZlcnNlc0ZvclJlZl0pXG5cbiAgaWYgKCFfdmVyc2VzRm9yUmVmPy5sZW5ndGgpIHsgLy8gaWYgZW1wdHkgb2YgcmVmZXJlbmNlcywgY3JlYXRlIHNpbmdsZSBlbXB0eSByZWZlcmVuY2VcbiAgICBfdmVyc2VzRm9yUmVmID0gW3sgLi4ucmVmZXJlbmNlIH1dXG4gIH1cblxuICBjb25zdCByZW5kZXJlZFNjcmlwdHVyZVBhbmVzID0gX3ZlcnNlc0ZvclJlZj8ubWFwKChfY3VycmVudFZlcnNlRGF0YSwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBpbml0aWFsVmVyc2VPYmplY3RzID0gX2N1cnJlbnRWZXJzZURhdGE/LnZlcnNlRGF0YT8udmVyc2VPYmplY3RzIHx8IFtdXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHsgY2hhcHRlciwgdmVyc2UgfSA9IF9jdXJyZW50VmVyc2VEYXRhIHx8IHt9XG4gICAgY29uc3QgYm9va0lkXyA9IGN1cnJlbnRSZWZlcmVuY2U/LmJvb2tJZCB8fCBib29rSWRcbiAgICBjb25zdCBfcmVmZXJlbmNlID0ge1xuICAgICAgLi4uX3ZlcnNlc0ZvclJlZixcbiAgICAgIGNoYXB0ZXIsXG4gICAgICBib29rSWQ6IGJvb2tJZF8sXG4gICAgICB2ZXJzZSxcbiAgICB9XG4gICAgY29uc3QgX3NjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcgPSB7XG4gICAgICAuLi5zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnLFxuICAgICAgY3VycmVudEluZGV4OiBpbmRleCxcbiAgICAgIGluaXRpYWxWZXJzZU9iamVjdHMsXG4gICAgICByZWZlcmVuY2U6IF9yZWZlcmVuY2UsXG4gICAgICBpc05ld1Rlc3RhbWVudCxcbiAgICB9XG5cbiAgICBsZXQgaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50ID0gZmFsc2VcblxuICAgIGlmICh2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50KSB7XG4gICAgICBpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQgPSB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50LmNoYXB0ZXIgPT0gY2hhcHRlciAmJiB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50LnZlcnNlID09IHZlcnNlXG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTY3JpcHR1cmVQYW5lXG4gICAgICAgIHsuLi5zY3JpcHR1cmVDb25maWd9XG4gICAgICAgIGNvbnRlbnRTdHlsZT17Y29udGVudFN0eWxlfVxuICAgICAgICBjdXJyZW50SW5kZXg9e2luZGV4fVxuICAgICAgICBkZXRlcm1pbmluZ0JyYW5jaD17IXJlYWR5Rm9yRmV0Y2h9XG4gICAgICAgIGRpcmVjdGlvbj17ZGlyZWN0aW9ufVxuICAgICAgICBkaXNhYmxlV29yZFBvcG92ZXI9e2Rpc2FibGVXb3JkUG9wb3Zlcl99XG4gICAgICAgIGZvbnRTaXplPXtmb250U2l6ZX1cbiAgICAgICAgZ2V0TGV4aWNvbkRhdGE9e2dldExleGljb25EYXRhfVxuICAgICAgICBpc05UPXtpc05UX31cbiAgICAgICAgaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50PXtpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnR9XG4gICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgIG9uQWxpZ25tZW50RmluaXNoPXsoKSA9PiBzZXRTdGF0ZSh7IHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ6IG51bGwgfSl9XG4gICAgICAgIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM9e29yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHN9XG4gICAgICAgIHJlZlN0eWxlPXtyZWZTdHlsZX1cbiAgICAgICAgcmVmZXJlbmNlPXtfcmVmZXJlbmNlfVxuICAgICAgICBzYXZpbmc9e3N0YXJ0U2F2ZX1cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnPXtfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZ31cbiAgICAgICAgc2V0RWRpdFZlcnNlPXtzZXRFZGl0VmVyc2V9XG4gICAgICAgIHNldFdvcmRBbGlnbmVyU3RhdHVzPXtzZXRXb3JkQWxpZ25lclN0YXR1c31cbiAgICAgICAgc2VydmVyPXtzZXJ2ZXJ9XG4gICAgICAgIHRyYW5zbGF0ZT17dHJhbnNsYXRlfVxuICAgICAgICB1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXM9e3VwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1c31cbiAgICAgIC8+XG4gICAgKVxuICB9KVxuXG4gIGNvbnN0IGhhbmRsZUFsaWduQnV0dG9uQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKHZlcnNlc0ZvclJlZj8ubGVuZ3RoID4gMSkgeyAvLyBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgdmVyc2VzIHNob3duIGluIGNhcmQsIG5lZWQgdG8gcHJvbXB0IHVzZXIgZm9yIHdoaWNoIHZlcnNlIHRvIGFsaWduXG4gICAgICBzZXRTdGF0ZSh7IHNob3dBbGlnbm1lbnRQb3B1cDogdHJ1ZSB9KVxuICAgIH0gZWxzZSBpZiAodmVyc2VzRm9yUmVmPy5sZW5ndGggPT09IDEpIHsgLy8gaWYgb25seSBvbmUgdmVyc2UgaXMgc2hvd24sIHRoZW4gZWRpdCB0aGF0IHZlcnNlXG4gICAgICBzZXRTdGF0ZSh7IHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ6IHZlcnNlc0ZvclJlZlswXSB9KVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG9uUmVuZGVyVG9vbGJhciA9ICh7IGl0ZW1zIH0pID0+IHtcbiAgICBjb25zdCBuZXdJdGVtcyA9IFsuLi5pdGVtc11cblxuICAgIGxldCBhbGxWZXJzZXNBbGlnbmVkID0gZmFsc2VcblxuICAgIC8vIENoZWNrIGlmIGFsbCB2YWx1ZXMgaW4gdmVyc2VzQWxpZ25tZW50U3RhdHVzIGFyZSB0cnVlXG4gICAgaWYgKHZlcnNlc0FsaWdubWVudFN0YXR1cykge1xuICAgICAgYWxsVmVyc2VzQWxpZ25lZCA9IE9iamVjdC52YWx1ZXModmVyc2VzQWxpZ25tZW50U3RhdHVzKS5ldmVyeShhbGlnblN0YXR1cyA9PiBhbGlnblN0YXR1cyA9PT0gdHJ1ZSlcbiAgICB9XG5cbiAgICBsZXQgYWxpZ25JY29uID0gbnVsbFxuICAgIGxldCBhbGlnbkJ1dHRvblRleHQgPSAnJ1xuXG4gICAgaWYgKGFsbFZlcnNlc0FsaWduZWQpIHtcbiAgICAgIGFsaWduSWNvbiA9IDxSeExpbmsyIGlkPXtgdmFsaWRfaWNvbl8ke3Jlc291cmNlSWR9YH0gY29sb3I9JyNCQkInIC8+XG4gICAgICBhbGlnbkJ1dHRvblRleHQgPSAnQWxpZ25tZW50IGlzIFZhbGlkJ1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjb2xvciA9IGRpc2FibGVDaGFuZ2VCdXR0b25zID8gJyNCQkInIDogJyMwMDAnIC8vIGdyYXkgb3V0IGJ1dHRvbiBpZiBkaXNhYmxlZFxuICAgICAgYWxpZ25JY29uID0gPFJ4TGlua0JyZWFrMiBpZD17YGludmFsaWRfYWxpZ25tZW50X2ljb25fJHtyZXNvdXJjZUlkfWB9IGNvbG9yPXtjb2xvcn0gLz5cbiAgICAgIGFsaWduQnV0dG9uVGV4dCA9ICdBbGlnbm1lbnQgaXMgSW52YWxpZCdcbiAgICB9XG5cbiAgICBpZiAoc2V0V29yZEFsaWduZXJTdGF0dXMgJiYgcmVzb3VyY2VJZCAhPT0gJ09SSUdJTkFMX1NPVVJDRScpIHtcbiAgICAgIG5ld0l0ZW1zLnB1c2goXG4gICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgaWQ9e2BhbGlnbm1lbnRfaWNvbl8ke3Jlc291cmNlSWR9YH1cbiAgICAgICAgICBrZXk9J2NoZWNraW5nLWJ1dHRvbidcbiAgICAgICAgICBvbkNsaWNrPXtkaXNhYmxlQ2hhbmdlQnV0dG9ucyA/IG51bGwgOiBoYW5kbGVBbGlnbkJ1dHRvbkNsaWNrfVxuICAgICAgICAgIHRpdGxlPXthbGlnbkJ1dHRvblRleHR9XG4gICAgICAgICAgYXJpYS1sYWJlbD17YWxpZ25CdXR0b25UZXh0fVxuICAgICAgICAgIHN0eWxlPXt7IGN1cnNvcjogJ3BvaW50ZXInIH19XG4gICAgICAgID5cbiAgICAgICAgICB7YWxpZ25JY29ufVxuICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICApXG4gICAgfVxuXG4gICAgLy8gT25seSBzaG93IHRoZSB1cGRhdGUgZnJvbSBtYWluIGJ1dHRvbiBpZiBzY3JpcHR1cmUgaXMgbm90IG9yaWdpbmFsIHRleHQuXG4gICAgIXVzaW5nT3JpZ2luYWxCaWJsZSAmJiBuZXdJdGVtcy5wdXNoKFxuICAgICAgPD5cbiAgICAgICAgPFVwZGF0ZUJyYW5jaEJ1dHRvbiB7Li4udXBkYXRlQnV0dG9uUHJvcHN9IGlzTG9hZGluZz17aXNVcGRhdGVMb2FkaW5nIHx8IHN0YXJ0U2F2ZX0vPlxuICAgICAgICA8RXJyb3JEaWFsb2cgdGl0bGU9e2RpYWxvZ1RpdGxlfSBjb250ZW50PXtkaWFsb2dNZXNzYWdlfSBvcGVuPXtpc0Vycm9yRGlhbG9nT3Blbn0gb25DbG9zZT17b25DbG9zZUVycm9yRGlhbG9nfSBpc0xvYWRpbmc9eyBpc1VwZGF0ZUxvYWRpbmcgfHwgc3RhcnRTYXZlIH0gbGluaz17ZGlhbG9nTGlua30gbGlua1Rvb2x0aXA9e2RpYWxvZ0xpbmtUb29sdGlwfSAvPlxuICAgICAgPC8+XG4gICAgKVxuXG4gICAgcmV0dXJuIG5ld0l0ZW1zXG4gIH1cblxuICBjb25zdCBzZWxlY3Rpb25Cb29rT2JqZWN0cyA9IG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM/LmNoYXB0ZXJzXG5cbiAgcmV0dXJuIChcbiAgICA8U2VsZWN0aW9uc0NvbnRleHRQcm92aWRlclxuICAgICAgYm9va09iamVjdD17c2VsZWN0aW9uQm9va09iamVjdHMgfHwge319XG4gICAgICBvY2N1cnJlbmNlPXtmaXhPY2N1cnJlbmNlKHNlbGVjdGVkUXVvdGU/Lm9jY3VycmVuY2UpfVxuICAgICAgb25TZWxlY3Rpb25zPXtuZXdTZWxlY3Rpb25zID0+IHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ29uU2VsZWN0aW9ucycsIG5ld1NlbGVjdGlvbnMpXG4gICAgICB9fVxuICAgICAgcXVvdGU9e3NlbGVjdGVkUXVvdGU/LnF1b3RlIHx8ICcnfVxuICAgICAgcmVmU3RyaW5nPXtzZWxlY3Rpb25zUmVmc31cbiAgICAgIHNlbGVjdGlvbnM9e3NlbGVjdGlvbnN9XG4gICAgPlxuICAgICAgPENhcmRcbiAgICAgICAgaWQ9e2BzY3JpcHR1cmVfY2FyZF8ke2NhcmROdW19YH1cbiAgICAgICAgdGl0bGU9e3NjcmlwdHVyZUxhYmVsfVxuICAgICAgICBzZXR0aW5nc1RpdGxlPXtzY3JpcHR1cmVUaXRsZSArICcgU2V0dGluZ3MnfVxuICAgICAgICBpdGVtcz17aXRlbXN9XG4gICAgICAgIGNsYXNzZXM9e2NsYXNzZXN9XG4gICAgICAgIGhlYWRlcnM9e2hlYWRlcnN9XG4gICAgICAgIGZpbHRlcnM9e2ZpbHRlcnN9XG4gICAgICAgIGZvbnRTaXplPXtmb250U2l6ZX1cbiAgICAgICAgaXRlbUluZGV4PXtpdGVtSW5kZXh9XG4gICAgICAgIHNldEZpbHRlcnM9e3NldEZpbHRlcnN9XG4gICAgICAgIHNldEZvbnRTaXplPXtzZXRGb250U2l6ZX1cbiAgICAgICAgc2V0SXRlbUluZGV4PXtzZXRJdGVtSW5kZXh9XG4gICAgICAgIG1hcmtkb3duVmlldz17bWFya2Rvd25WaWV3fVxuICAgICAgICBzZXRNYXJrZG93blZpZXc9e3NldE1hcmtkb3duVmlld31cbiAgICAgICAgZ2V0Q3VzdG9tQ29tcG9uZW50PXtnZXRTY3JpcHR1cmVTZWxlY3Rvcn1cbiAgICAgICAgaGlkZU1hcmtkb3duVG9nZ2xlXG4gICAgICAgIG9uTWVudUNsb3NlPXtvbk1lbnVDbG9zZX1cbiAgICAgICAgb25NaW5pbWl6ZT17b25NaW5pbWl6ZSA/ICgpID0+IG9uTWluaW1pemUoaWQsIHNjcmlwdHVyZVRpdGxlKSA6IG51bGx9XG4gICAgICAgIGVkaXRhYmxlPXtlbmFibGVFZGl0IHx8IGVuYWJsZUFsaWdubWVudH1cbiAgICAgICAgc2F2ZWQ9e2Rpc2FibGVDaGFuZ2VCdXR0b25zIHx8IHN0YXJ0U2F2ZSB8fCAhaGF2ZVVuc2F2ZWRDaGFuZ2VzfSAvLyBncmF5IG91dCBzYXZlIGJ1dHRvbiBpZiBkaXNhYmxlZCwgaWYgc2F2aW5nLCBvciBpZiBubyB1bnNhdmVkIGNoYW5nZXNcbiAgICAgICAgb25TYXZlRWRpdD17KCkgPT4gc2V0U3RhdGUoeyBzYXZlQ2xpY2tlZDogdHJ1ZSB9KX1cbiAgICAgICAgb25SZW5kZXJUb29sYmFyPXtvblJlbmRlclRvb2xiYXJ9XG4gICAgICA+XG4gICAgICAgIDxkaXYgaWQ9XCJzY3JpcHR1cmUtcGFuZS1saXN0XCI+XG4gICAgICAgICAge3JlbmRlcmVkU2NyaXB0dXJlUGFuZXN9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9DYXJkPlxuICAgICAgPFZlcnNlU2VsZWN0b3JQb3B1cFxuICAgICAgICByZXNvdXJjZUlkPXtyZXNvdXJjZUlkfVxuICAgICAgICBvcGVuPXtzaG93QWxpZ25tZW50UG9wdXB9XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFN0YXRlKHsgc2hvd0FsaWdubWVudFBvcHVwOiBmYWxzZSB9KX1cbiAgICAgICAgdmVyc2VzRm9yUmVmPXt2ZXJzZXNGb3JSZWZ9XG4gICAgICAgIHZlcnNlc0FsaWdubWVudFN0YXR1cz17dmVyc2VzQWxpZ25tZW50U3RhdHVzfVxuICAgICAgICBvblZlcnNlU2VsZWN0PXsodmVyc2UpID0+IHNldFN0YXRlKHtcbiAgICAgICAgICB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiB2ZXJzZSxcbiAgICAgICAgICBzaG93QWxpZ25tZW50UG9wdXA6IGZhbHNlLFxuICAgICAgICB9KX1cbiAgICAgIC8+XG4gICAgPC9TZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyPlxuICApXG59XG5cblNjcmlwdHVyZUNhcmQucHJvcFR5cGVzID0ge1xuICAvKiogcmVwbyBicmFuY2ggb3IgdGFnIHN1Y2ggYXMgbWFzdGVyICovXG4gIGFwcFJlZjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogYXV0aGVudGljYXRpb24gaW5mbyAqL1xuICBhdXRoZW50aWNhdGlvbjogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIGluZGV4IGZvciBjdXJyZW50IGJvb2sgKGUuZy4gJzAxJyBmb3IgJ2dlbicpKi9cbiAgYm9va0luZGV4OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogc2NyaXB0dXJlIGNhcmQgbnVtYmVyICgwIHRvIDIgZm9yIGV4YW1wbGUpICovXG4gIGNhcmROdW06IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgLyoqIENTUyBjbGFzc2VzICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBpZiB0cnVlIHRoZW4gd29yZCBkYXRhIGhvdmVyIGlzIHNob3duICovXG4gIGRpc2FibGVXb3JkUG9wb3ZlcjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKiBnZXQgbGFuZ3VhZ2UgZGV0YWlscyAqL1xuICBnZXRMYW5ndWFnZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgLyoqIGZ1bmN0aW9uIHRvIGdldCBsYXRlc3QgbGV4aWNvbiBkYXRhICovXG4gIGdldExleGljb25EYXRhOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIG9wdGlvbmFsIHVybCBmb3IgZ3JlZWsgcmVwbyAqL1xuICBncmVla1JlcG9Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBvcHRpb25hbCB1cmwgZm9yIGhlYnJldyByZXBvICovXG4gIGhlYnJld1JlcG9Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBvcHRpb25hbCBodHRwIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciBmZXRjaGluZyByZXNvdXJjZXMsIGRlZmF1bHQgaXMgMCAodmVyeSBsb25nIHdhaXQpICovXG4gIGh0dHBDb25maWc6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBodG1sIGlkZW50aWZpZXIgdG8gdXNlIGZvciBjYXJkICovXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogbWV0aG9kIHRvIGRldGVybWluZSBpZiBOVCBvciBPVCAqL1xuICBpc05UOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAvKiogdXNlci1uYW1lICovXG4gIGxvZ2dlZEluVXNlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIGZ1bmN0aW9uIHRvIG1pbmltaXplIHRoZSBjYXJkIChvcHRpb25hbCkgKi9cbiAgb25NaW5pbWl6ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBvcHRpb25hbCBjYWxsYmFjayBpZiBlcnJvciBsb2FkaW5nIHJlc291cmNlLCBwYXJhbWV0ZXIgcmV0dXJuZWQgYXJlOlxuICAgKiAgICAoe3N0cmluZ30gZXJyb3JNZXNzYWdlLCB7Ym9vbGVhbn0gaXNBY2Nlc3NFcnJvciwge29iamVjdH0gcmVzb3VyY2VTdGF0dXMpXG4gICAqICAgICAgLSBpc0FjY2Vzc0Vycm9yIC0gaXMgdHJ1ZSBpZiB0aGlzIHdhcyBhbiBlcnJvciB0cnlpbmcgdG8gYWNjZXNzIGZpbGVcbiAgICogICAgICAtIHJlc291cmNlU3RhdHVzIC0gaXMgb2JqZWN0IGNvbnRhaW5pbmcgZGV0YWlscyBhYm91dCBwcm9ibGVtcyBmZXRjaGluZyByZXNvdXJjZSAqL1xuICBvblJlc291cmNlRXJyb3I6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogdGhlIG9yaWdpbmFsIHNjcmlwdHVyZSBib29rT2JqZWN0cyBmb3IgY3VycmVudCBib29rICovXG4gIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM6IFByb3BUeXBlcy5vYmplY3QsXG4gIHJlZmVyZW5jZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAvKiogYm9vayBJRCB0byB1c2UsIG9sZGVyIGxpYnJhcmllcyB1c2VkIHByb2plY3RJZCAqL1xuICAgIGJvb2tJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiBvbGRlciBsaWJyYXJpZXMgdXNlZCBwcm9qZWN0SWQgaW5zdGVhZCBvZiBib29rSWQgKi9cbiAgICBwcm9qZWN0SWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgLyoqIGN1cnJlbnQgY2hhcHRlciBudW1iZXIgKi9cbiAgICBjaGFwdGVyOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nXSkuaXNSZXF1aXJlZCxcbiAgICAvKiogY3VycmVudCB2ZXJzZSBudW1iZXIgKi9cbiAgICB2ZXJzZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLmlzUmVxdWlyZWQsXG4gIH0pLFxuICAvKiogcmVzb3VyY2Ugb2JqZWN0ICovXG4gIHJlc291cmNlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIC8qKiByZXNvdXJjZSBsYW5ndWFnZSB0byB1c2UgKi9cbiAgICBsYW5ndWFnZUlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIHJlcG8gb3duZXIgc3VjaCBhcyB1bmZvbGRpbmdXb3JkICovXG4gICAgb3duZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogcmVzb3VyY2VJZCB0byB1c2UgKGUuZy4gdWdudCkgKi9cbiAgICByZXNvdXJjZUlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIHJlcG8gb3duZXIgZm9yIG9yaWdpbmFsIGxhbmd1YWdlcyBzdWNoIGFzIHVuZm9sZGluZ1dvcmQgKi9cbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgfSksXG4gIC8qKiByZXNvdXJjZUxpbmsgKi9cbiAgcmVzb3VyY2VMaW5rOiBQcm9wVHlwZXMuYW55LFxuICAvKipUaGlzIGlzIGN1cnJlbnRseSBzZWxlY3RlZCBxdW90ZSAqL1xuICBzZWxlY3RlZFF1b3RlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogc2VydmVyIChlLmcuICdodHRwczovL2dpdC5kb29yNDMub3JnJykgKi9cbiAgc2VydmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIC8qKiBjYWxsYmFjayB0byB1cGRhdGUgbG9hZGluZyBzdGF0ZSAqL1xuICBzZXRBcmVSZXNvdXJjZXNMb2FkaW5nOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHVwZGF0ZSBzYXZpbmcgc3RhdGUqL1xuICBzZXRBcmVSZXNvdXJjZXNTYXZpbmc6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogY2FsbGJhY2sgdG8gcmVwb3J0IGNhcmQgbWVyZ2Ugc3RhdHVzICovXG4gIHNldENhcmRzTG9hZGluZ01lcmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHJlcG9ydCBjYXJkIHVwZGF0ZSBzdGF0dXMgKi9cbiAgc2V0Q2FyZHNMb2FkaW5nVXBkYXRlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHJlcG9ydCBjYXJkIHNhdmluZyBzdGF0dXMgKi9cbiAgc2V0Q2FyZHNTYXZpbmc6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogZnVuY3Rpb24gdG8gc2V0IHN0YXRlIGluIGFwcCB0aGF0IHRoZXJlIGFyZSB1bnNhdmVkIGNoYW5nZXMgKi9cbiAgc2V0U2F2ZWRDaGFuZ2VzOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHVwZGF0ZSB3b3JkIGFsaWduZXIgc3RhdGUgKi9cbiAgc2V0V29yZEFsaWduZXJTdGF0dXM6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogdGl0bGUgZm9yIHNjcmlwdHVyZSBjYXJkICovXG4gIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIC8qKiBvcHRpb25hbCBmdW5jdGlvbiBmb3IgbG9jYWxpemF0aW9uICovXG4gIHRyYW5zbGF0ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byB1cGRhdGUgdGhlIGNhcmQncyBtZXJnZSBzdGF0ZSBpbiBhcHAgKi9cbiAgdXBkYXRlTWVyZ2VTdGF0ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiB1c2UgbWV0aG9kIGZvciB1c2luZyBsb2NhbCBzdG9yYWdlIHNwZWNpZmljIGZvciB1c2VyICovXG4gIHVzZVVzZXJMb2NhbFN0b3JhZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG59XG4iXSwibWFwcGluZ3MiOiI7K0NBQ0EscUpBQUFBLG1CQUFBLFlBQUFBLG9CQUFBLFdBQUFDLENBQUEsU0FBQUMsQ0FBQSxFQUFBRCxDQUFBLE9BQUFFLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxTQUFBLEVBQUFDLENBQUEsR0FBQUgsQ0FBQSxDQUFBSSxjQUFBLEVBQUFDLENBQUEsR0FBQUosTUFBQSxDQUFBSyxjQUFBLGNBQUFQLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLElBQUFELENBQUEsQ0FBQUQsQ0FBQSxJQUFBRSxDQUFBLENBQUFPLEtBQUEsS0FBQUMsQ0FBQSx3QkFBQUMsTUFBQSxHQUFBQSxNQUFBLE9BQUFDLENBQUEsR0FBQUYsQ0FBQSxDQUFBRyxRQUFBLGtCQUFBQyxDQUFBLEdBQUFKLENBQUEsQ0FBQUssYUFBQSx1QkFBQUMsQ0FBQSxHQUFBTixDQUFBLENBQUFPLFdBQUEsOEJBQUFDLE9BQUFqQixDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxXQUFBQyxNQUFBLENBQUFLLGNBQUEsQ0FBQVAsQ0FBQSxFQUFBRCxDQUFBLElBQUFTLEtBQUEsRUFBQVAsQ0FBQSxFQUFBaUIsVUFBQSxNQUFBQyxZQUFBLE1BQUFDLFFBQUEsU0FBQXBCLENBQUEsQ0FBQUQsQ0FBQSxXQUFBa0IsTUFBQSxtQkFBQWpCLENBQUEsSUFBQWlCLE1BQUEsWUFBQUEsT0FBQWpCLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLFdBQUFELENBQUEsQ0FBQUQsQ0FBQSxJQUFBRSxDQUFBLGdCQUFBb0IsS0FBQXJCLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLEVBQUFHLENBQUEsUUFBQUssQ0FBQSxHQUFBVixDQUFBLElBQUFBLENBQUEsQ0FBQUksU0FBQSxZQUFBbUIsU0FBQSxHQUFBdkIsQ0FBQSxHQUFBdUIsU0FBQSxFQUFBWCxDQUFBLEdBQUFULE1BQUEsQ0FBQXFCLE1BQUEsQ0FBQWQsQ0FBQSxDQUFBTixTQUFBLEdBQUFVLENBQUEsT0FBQVcsT0FBQSxDQUFBcEIsQ0FBQSxnQkFBQUUsQ0FBQSxDQUFBSyxDQUFBLGVBQUFILEtBQUEsRUFBQWlCLGdCQUFBLENBQUF6QixDQUFBLEVBQUFDLENBQUEsRUFBQVksQ0FBQSxNQUFBRixDQUFBLGFBQUFlLFNBQUExQixDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxtQkFBQTBCLElBQUEsWUFBQUMsR0FBQSxFQUFBNUIsQ0FBQSxDQUFBNkIsSUFBQSxDQUFBOUIsQ0FBQSxFQUFBRSxDQUFBLGNBQUFELENBQUEsYUFBQTJCLElBQUEsV0FBQUMsR0FBQSxFQUFBNUIsQ0FBQSxRQUFBRCxDQUFBLENBQUFzQixJQUFBLEdBQUFBLElBQUEsTUFBQVMsQ0FBQSxxQkFBQUMsQ0FBQSxxQkFBQUMsQ0FBQSxnQkFBQUMsQ0FBQSxnQkFBQUMsQ0FBQSxnQkFBQVosVUFBQSxjQUFBYSxrQkFBQSxjQUFBQywyQkFBQSxTQUFBQyxDQUFBLE9BQUFwQixNQUFBLENBQUFvQixDQUFBLEVBQUExQixDQUFBLHFDQUFBMkIsQ0FBQSxHQUFBcEMsTUFBQSxDQUFBcUMsY0FBQSxFQUFBQyxDQUFBLEdBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBQSxDQUFBLENBQUFHLE1BQUEsUUFBQUQsQ0FBQSxJQUFBQSxDQUFBLEtBQUF2QyxDQUFBLElBQUFHLENBQUEsQ0FBQXlCLElBQUEsQ0FBQVcsQ0FBQSxFQUFBN0IsQ0FBQSxNQUFBMEIsQ0FBQSxHQUFBRyxDQUFBLE9BQUFFLENBQUEsR0FBQU4sMEJBQUEsQ0FBQWpDLFNBQUEsR0FBQW1CLFNBQUEsQ0FBQW5CLFNBQUEsR0FBQUQsTUFBQSxDQUFBcUIsTUFBQSxDQUFBYyxDQUFBLFlBQUFNLHNCQUFBM0MsQ0FBQSxnQ0FBQTRDLE9BQUEsV0FBQTdDLENBQUEsSUFBQWtCLE1BQUEsQ0FBQWpCLENBQUEsRUFBQUQsQ0FBQSxZQUFBQyxDQUFBLGdCQUFBNkMsT0FBQSxDQUFBOUMsQ0FBQSxFQUFBQyxDQUFBLHNCQUFBOEMsY0FBQTlDLENBQUEsRUFBQUQsQ0FBQSxhQUFBZ0QsT0FBQTlDLENBQUEsRUFBQUssQ0FBQSxFQUFBRyxDQUFBLEVBQUFFLENBQUEsUUFBQUUsQ0FBQSxHQUFBYSxRQUFBLENBQUExQixDQUFBLENBQUFDLENBQUEsR0FBQUQsQ0FBQSxFQUFBTSxDQUFBLG1CQUFBTyxDQUFBLENBQUFjLElBQUEsUUFBQVosQ0FBQSxHQUFBRixDQUFBLENBQUFlLEdBQUEsRUFBQUUsQ0FBQSxHQUFBZixDQUFBLENBQUFQLEtBQUEsU0FBQXNCLENBQUEsZ0JBQUFrQixPQUFBLENBQUFsQixDQUFBLEtBQUExQixDQUFBLENBQUF5QixJQUFBLENBQUFDLENBQUEsZUFBQS9CLENBQUEsQ0FBQWtELE9BQUEsQ0FBQW5CLENBQUEsQ0FBQW9CLE9BQUEsRUFBQUMsSUFBQSxXQUFBbkQsQ0FBQSxJQUFBK0MsTUFBQSxTQUFBL0MsQ0FBQSxFQUFBUyxDQUFBLEVBQUFFLENBQUEsZ0JBQUFYLENBQUEsSUFBQStDLE1BQUEsVUFBQS9DLENBQUEsRUFBQVMsQ0FBQSxFQUFBRSxDQUFBLFFBQUFaLENBQUEsQ0FBQWtELE9BQUEsQ0FBQW5CLENBQUEsRUFBQXFCLElBQUEsV0FBQW5ELENBQUEsSUFBQWUsQ0FBQSxDQUFBUCxLQUFBLEdBQUFSLENBQUEsRUFBQVMsQ0FBQSxDQUFBTSxDQUFBLGdCQUFBZixDQUFBLFdBQUErQyxNQUFBLFVBQUEvQyxDQUFBLEVBQUFTLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLENBQUFFLENBQUEsQ0FBQWUsR0FBQSxTQUFBM0IsQ0FBQSxFQUFBSyxDQUFBLG9CQUFBRSxLQUFBLFdBQUFBLE1BQUFSLENBQUEsRUFBQUksQ0FBQSxhQUFBZ0QsMkJBQUEsZUFBQXJELENBQUEsV0FBQUEsQ0FBQSxFQUFBRSxDQUFBLElBQUE4QyxNQUFBLENBQUEvQyxDQUFBLEVBQUFJLENBQUEsRUFBQUwsQ0FBQSxFQUFBRSxDQUFBLGdCQUFBQSxDQUFBLEdBQUFBLENBQUEsR0FBQUEsQ0FBQSxDQUFBa0QsSUFBQSxDQUFBQywwQkFBQSxFQUFBQSwwQkFBQSxJQUFBQSwwQkFBQSxxQkFBQTNCLGlCQUFBMUIsQ0FBQSxFQUFBRSxDQUFBLEVBQUFHLENBQUEsUUFBQUUsQ0FBQSxHQUFBd0IsQ0FBQSxtQkFBQXJCLENBQUEsRUFBQUUsQ0FBQSxRQUFBTCxDQUFBLEtBQUEwQixDQUFBLFlBQUFxQixLQUFBLHNDQUFBL0MsQ0FBQSxLQUFBMkIsQ0FBQSxvQkFBQXhCLENBQUEsUUFBQUUsQ0FBQSxXQUFBSCxLQUFBLEVBQUFSLENBQUEsRUFBQXNELElBQUEsZUFBQWxELENBQUEsQ0FBQW1ELE1BQUEsR0FBQTlDLENBQUEsRUFBQUwsQ0FBQSxDQUFBd0IsR0FBQSxHQUFBakIsQ0FBQSxVQUFBRSxDQUFBLEdBQUFULENBQUEsQ0FBQW9ELFFBQUEsTUFBQTNDLENBQUEsUUFBQUUsQ0FBQSxHQUFBMEMsbUJBQUEsQ0FBQTVDLENBQUEsRUFBQVQsQ0FBQSxPQUFBVyxDQUFBLFFBQUFBLENBQUEsS0FBQW1CLENBQUEsbUJBQUFuQixDQUFBLHFCQUFBWCxDQUFBLENBQUFtRCxNQUFBLEVBQUFuRCxDQUFBLENBQUFzRCxJQUFBLEdBQUF0RCxDQUFBLENBQUF1RCxLQUFBLEdBQUF2RCxDQUFBLENBQUF3QixHQUFBLHNCQUFBeEIsQ0FBQSxDQUFBbUQsTUFBQSxRQUFBakQsQ0FBQSxLQUFBd0IsQ0FBQSxRQUFBeEIsQ0FBQSxHQUFBMkIsQ0FBQSxFQUFBN0IsQ0FBQSxDQUFBd0IsR0FBQSxFQUFBeEIsQ0FBQSxDQUFBd0QsaUJBQUEsQ0FBQXhELENBQUEsQ0FBQXdCLEdBQUEsdUJBQUF4QixDQUFBLENBQUFtRCxNQUFBLElBQUFuRCxDQUFBLENBQUF5RCxNQUFBLFdBQUF6RCxDQUFBLENBQUF3QixHQUFBLEdBQUF0QixDQUFBLEdBQUEwQixDQUFBLE1BQUFLLENBQUEsR0FBQVgsUUFBQSxDQUFBM0IsQ0FBQSxFQUFBRSxDQUFBLEVBQUFHLENBQUEsb0JBQUFpQyxDQUFBLENBQUFWLElBQUEsUUFBQXJCLENBQUEsR0FBQUYsQ0FBQSxDQUFBa0QsSUFBQSxHQUFBckIsQ0FBQSxHQUFBRixDQUFBLEVBQUFNLENBQUEsQ0FBQVQsR0FBQSxLQUFBTSxDQUFBLHFCQUFBMUIsS0FBQSxFQUFBNkIsQ0FBQSxDQUFBVCxHQUFBLEVBQUEwQixJQUFBLEVBQUFsRCxDQUFBLENBQUFrRCxJQUFBLGtCQUFBakIsQ0FBQSxDQUFBVixJQUFBLEtBQUFyQixDQUFBLEdBQUEyQixDQUFBLEVBQUE3QixDQUFBLENBQUFtRCxNQUFBLFlBQUFuRCxDQUFBLENBQUF3QixHQUFBLEdBQUFTLENBQUEsQ0FBQVQsR0FBQSxtQkFBQTZCLG9CQUFBMUQsQ0FBQSxFQUFBRSxDQUFBLFFBQUFHLENBQUEsR0FBQUgsQ0FBQSxDQUFBc0QsTUFBQSxFQUFBakQsQ0FBQSxHQUFBUCxDQUFBLENBQUFhLFFBQUEsQ0FBQVIsQ0FBQSxPQUFBRSxDQUFBLEtBQUFOLENBQUEsU0FBQUMsQ0FBQSxDQUFBdUQsUUFBQSxxQkFBQXBELENBQUEsSUFBQUwsQ0FBQSxDQUFBYSxRQUFBLGVBQUFYLENBQUEsQ0FBQXNELE1BQUEsYUFBQXRELENBQUEsQ0FBQTJCLEdBQUEsR0FBQTVCLENBQUEsRUFBQXlELG1CQUFBLENBQUExRCxDQUFBLEVBQUFFLENBQUEsZUFBQUEsQ0FBQSxDQUFBc0QsTUFBQSxrQkFBQW5ELENBQUEsS0FBQUgsQ0FBQSxDQUFBc0QsTUFBQSxZQUFBdEQsQ0FBQSxDQUFBMkIsR0FBQSxPQUFBa0MsU0FBQSx1Q0FBQTFELENBQUEsaUJBQUE4QixDQUFBLE1BQUF6QixDQUFBLEdBQUFpQixRQUFBLENBQUFwQixDQUFBLEVBQUFQLENBQUEsQ0FBQWEsUUFBQSxFQUFBWCxDQUFBLENBQUEyQixHQUFBLG1CQUFBbkIsQ0FBQSxDQUFBa0IsSUFBQSxTQUFBMUIsQ0FBQSxDQUFBc0QsTUFBQSxZQUFBdEQsQ0FBQSxDQUFBMkIsR0FBQSxHQUFBbkIsQ0FBQSxDQUFBbUIsR0FBQSxFQUFBM0IsQ0FBQSxDQUFBdUQsUUFBQSxTQUFBdEIsQ0FBQSxNQUFBdkIsQ0FBQSxHQUFBRixDQUFBLENBQUFtQixHQUFBLFNBQUFqQixDQUFBLEdBQUFBLENBQUEsQ0FBQTJDLElBQUEsSUFBQXJELENBQUEsQ0FBQUYsQ0FBQSxDQUFBZ0UsVUFBQSxJQUFBcEQsQ0FBQSxDQUFBSCxLQUFBLEVBQUFQLENBQUEsQ0FBQStELElBQUEsR0FBQWpFLENBQUEsQ0FBQWtFLE9BQUEsZUFBQWhFLENBQUEsQ0FBQXNELE1BQUEsS0FBQXRELENBQUEsQ0FBQXNELE1BQUEsV0FBQXRELENBQUEsQ0FBQTJCLEdBQUEsR0FBQTVCLENBQUEsR0FBQUMsQ0FBQSxDQUFBdUQsUUFBQSxTQUFBdEIsQ0FBQSxJQUFBdkIsQ0FBQSxJQUFBVixDQUFBLENBQUFzRCxNQUFBLFlBQUF0RCxDQUFBLENBQUEyQixHQUFBLE9BQUFrQyxTQUFBLHNDQUFBN0QsQ0FBQSxDQUFBdUQsUUFBQSxTQUFBdEIsQ0FBQSxjQUFBZ0MsYUFBQWxFLENBQUEsUUFBQUQsQ0FBQSxLQUFBb0UsTUFBQSxFQUFBbkUsQ0FBQSxZQUFBQSxDQUFBLEtBQUFELENBQUEsQ0FBQXFFLFFBQUEsR0FBQXBFLENBQUEsV0FBQUEsQ0FBQSxLQUFBRCxDQUFBLENBQUFzRSxVQUFBLEdBQUFyRSxDQUFBLEtBQUFELENBQUEsQ0FBQXVFLFFBQUEsR0FBQXRFLENBQUEsV0FBQXVFLFVBQUEsQ0FBQUMsSUFBQSxDQUFBekUsQ0FBQSxjQUFBMEUsY0FBQXpFLENBQUEsUUFBQUQsQ0FBQSxHQUFBQyxDQUFBLENBQUEwRSxVQUFBLFFBQUEzRSxDQUFBLENBQUE0QixJQUFBLG9CQUFBNUIsQ0FBQSxDQUFBNkIsR0FBQSxFQUFBNUIsQ0FBQSxDQUFBMEUsVUFBQSxHQUFBM0UsQ0FBQSxhQUFBeUIsUUFBQXhCLENBQUEsU0FBQXVFLFVBQUEsTUFBQUosTUFBQSxhQUFBbkUsQ0FBQSxDQUFBNEMsT0FBQSxDQUFBc0IsWUFBQSxjQUFBUyxLQUFBLGlCQUFBbEMsT0FBQTFDLENBQUEsUUFBQUEsQ0FBQSxXQUFBQSxDQUFBLFFBQUFFLENBQUEsR0FBQUYsQ0FBQSxDQUFBWSxDQUFBLE9BQUFWLENBQUEsU0FBQUEsQ0FBQSxDQUFBNEIsSUFBQSxDQUFBOUIsQ0FBQSw0QkFBQUEsQ0FBQSxDQUFBaUUsSUFBQSxTQUFBakUsQ0FBQSxPQUFBNkUsS0FBQSxDQUFBN0UsQ0FBQSxDQUFBOEUsTUFBQSxTQUFBdkUsQ0FBQSxPQUFBRyxDQUFBLFlBQUF1RCxLQUFBLGFBQUExRCxDQUFBLEdBQUFQLENBQUEsQ0FBQThFLE1BQUEsT0FBQXpFLENBQUEsQ0FBQXlCLElBQUEsQ0FBQTlCLENBQUEsRUFBQU8sQ0FBQSxVQUFBMEQsSUFBQSxDQUFBeEQsS0FBQSxHQUFBVCxDQUFBLENBQUFPLENBQUEsR0FBQTBELElBQUEsQ0FBQVYsSUFBQSxPQUFBVSxJQUFBLFNBQUFBLElBQUEsQ0FBQXhELEtBQUEsR0FBQVIsQ0FBQSxFQUFBZ0UsSUFBQSxDQUFBVixJQUFBLE9BQUFVLElBQUEsWUFBQXZELENBQUEsQ0FBQXVELElBQUEsR0FBQXZELENBQUEsZ0JBQUFxRCxTQUFBLENBQUFkLE9BQUEsQ0FBQWpELENBQUEsa0NBQUFvQyxpQkFBQSxDQUFBaEMsU0FBQSxHQUFBaUMsMEJBQUEsRUFBQTlCLENBQUEsQ0FBQW9DLENBQUEsbUJBQUFsQyxLQUFBLEVBQUE0QiwwQkFBQSxFQUFBakIsWUFBQSxTQUFBYixDQUFBLENBQUE4QiwwQkFBQSxtQkFBQTVCLEtBQUEsRUFBQTJCLGlCQUFBLEVBQUFoQixZQUFBLFNBQUFnQixpQkFBQSxDQUFBMkMsV0FBQSxHQUFBN0QsTUFBQSxDQUFBbUIsMEJBQUEsRUFBQXJCLENBQUEsd0JBQUFoQixDQUFBLENBQUFnRixtQkFBQSxhQUFBL0UsQ0FBQSxRQUFBRCxDQUFBLHdCQUFBQyxDQUFBLElBQUFBLENBQUEsQ0FBQWdGLFdBQUEsV0FBQWpGLENBQUEsS0FBQUEsQ0FBQSxLQUFBb0MsaUJBQUEsNkJBQUFwQyxDQUFBLENBQUErRSxXQUFBLElBQUEvRSxDQUFBLENBQUFrRixJQUFBLE9BQUFsRixDQUFBLENBQUFtRixJQUFBLGFBQUFsRixDQUFBLFdBQUFFLE1BQUEsQ0FBQWlGLGNBQUEsR0FBQWpGLE1BQUEsQ0FBQWlGLGNBQUEsQ0FBQW5GLENBQUEsRUFBQW9DLDBCQUFBLEtBQUFwQyxDQUFBLENBQUFvRixTQUFBLEdBQUFoRCwwQkFBQSxFQUFBbkIsTUFBQSxDQUFBakIsQ0FBQSxFQUFBZSxDQUFBLHlCQUFBZixDQUFBLENBQUFHLFNBQUEsR0FBQUQsTUFBQSxDQUFBcUIsTUFBQSxDQUFBbUIsQ0FBQSxHQUFBMUMsQ0FBQSxLQUFBRCxDQUFBLENBQUFzRixLQUFBLGFBQUFyRixDQUFBLGFBQUFrRCxPQUFBLEVBQUFsRCxDQUFBLE9BQUEyQyxxQkFBQSxDQUFBRyxhQUFBLENBQUEzQyxTQUFBLEdBQUFjLE1BQUEsQ0FBQTZCLGFBQUEsQ0FBQTNDLFNBQUEsRUFBQVUsQ0FBQSxpQ0FBQWQsQ0FBQSxDQUFBK0MsYUFBQSxHQUFBQSxhQUFBLEVBQUEvQyxDQUFBLENBQUF1RixLQUFBLGFBQUF0RixDQUFBLEVBQUFDLENBQUEsRUFBQUcsQ0FBQSxFQUFBRSxDQUFBLEVBQUFHLENBQUEsZUFBQUEsQ0FBQSxLQUFBQSxDQUFBLEdBQUE4RSxPQUFBLE9BQUE1RSxDQUFBLE9BQUFtQyxhQUFBLENBQUF6QixJQUFBLENBQUFyQixDQUFBLEVBQUFDLENBQUEsRUFBQUcsQ0FBQSxFQUFBRSxDQUFBLEdBQUFHLENBQUEsVUFBQVYsQ0FBQSxDQUFBZ0YsbUJBQUEsQ0FBQTlFLENBQUEsSUFBQVUsQ0FBQSxHQUFBQSxDQUFBLENBQUFxRCxJQUFBLEdBQUFiLElBQUEsV0FBQW5ELENBQUEsV0FBQUEsQ0FBQSxDQUFBc0QsSUFBQSxHQUFBdEQsQ0FBQSxDQUFBUSxLQUFBLEdBQUFHLENBQUEsQ0FBQXFELElBQUEsV0FBQXJCLHFCQUFBLENBQUFELENBQUEsR0FBQXpCLE1BQUEsQ0FBQXlCLENBQUEsRUFBQTNCLENBQUEsZ0JBQUFFLE1BQUEsQ0FBQXlCLENBQUEsRUFBQS9CLENBQUEsaUNBQUFNLE1BQUEsQ0FBQXlCLENBQUEsNkRBQUEzQyxDQUFBLENBQUF5RixJQUFBLGFBQUF4RixDQUFBLFFBQUFELENBQUEsR0FBQUcsTUFBQSxDQUFBRixDQUFBLEdBQUFDLENBQUEsZ0JBQUFHLENBQUEsSUFBQUwsQ0FBQSxFQUFBRSxDQUFBLENBQUF1RSxJQUFBLENBQUFwRSxDQUFBLFVBQUFILENBQUEsQ0FBQXdGLE9BQUEsYUFBQXpCLEtBQUEsV0FBQS9ELENBQUEsQ0FBQTRFLE1BQUEsU0FBQTdFLENBQUEsR0FBQUMsQ0FBQSxDQUFBeUYsR0FBQSxRQUFBMUYsQ0FBQSxJQUFBRCxDQUFBLFNBQUFpRSxJQUFBLENBQUF4RCxLQUFBLEdBQUFSLENBQUEsRUFBQWdFLElBQUEsQ0FBQVYsSUFBQSxPQUFBVSxJQUFBLFdBQUFBLElBQUEsQ0FBQVYsSUFBQSxPQUFBVSxJQUFBLFFBQUFqRSxDQUFBLENBQUEwQyxNQUFBLEdBQUFBLE1BQUEsRUFBQWpCLE9BQUEsQ0FBQXJCLFNBQUEsS0FBQTZFLFdBQUEsRUFBQXhELE9BQUEsRUFBQW1ELEtBQUEsV0FBQUEsTUFBQTVFLENBQUEsYUFBQTRGLElBQUEsV0FBQTNCLElBQUEsV0FBQU4sSUFBQSxRQUFBQyxLQUFBLEdBQUEzRCxDQUFBLE9BQUFzRCxJQUFBLFlBQUFFLFFBQUEsY0FBQUQsTUFBQSxnQkFBQTNCLEdBQUEsR0FBQTVCLENBQUEsT0FBQXVFLFVBQUEsQ0FBQTNCLE9BQUEsQ0FBQTZCLGFBQUEsSUFBQTFFLENBQUEsV0FBQUUsQ0FBQSxrQkFBQUEsQ0FBQSxDQUFBMkYsTUFBQSxPQUFBeEYsQ0FBQSxDQUFBeUIsSUFBQSxPQUFBNUIsQ0FBQSxNQUFBMkUsS0FBQSxFQUFBM0UsQ0FBQSxDQUFBNEYsS0FBQSxjQUFBNUYsQ0FBQSxJQUFBRCxDQUFBLE1BQUE4RixJQUFBLFdBQUFBLEtBQUEsU0FBQXhDLElBQUEsV0FBQXRELENBQUEsUUFBQXVFLFVBQUEsSUFBQUcsVUFBQSxrQkFBQTFFLENBQUEsQ0FBQTJCLElBQUEsUUFBQTNCLENBQUEsQ0FBQTRCLEdBQUEsY0FBQW1FLElBQUEsS0FBQW5DLGlCQUFBLFdBQUFBLGtCQUFBN0QsQ0FBQSxhQUFBdUQsSUFBQSxRQUFBdkQsQ0FBQSxNQUFBRSxDQUFBLGtCQUFBK0YsT0FBQTVGLENBQUEsRUFBQUUsQ0FBQSxXQUFBSyxDQUFBLENBQUFnQixJQUFBLFlBQUFoQixDQUFBLENBQUFpQixHQUFBLEdBQUE3QixDQUFBLEVBQUFFLENBQUEsQ0FBQStELElBQUEsR0FBQTVELENBQUEsRUFBQUUsQ0FBQSxLQUFBTCxDQUFBLENBQUFzRCxNQUFBLFdBQUF0RCxDQUFBLENBQUEyQixHQUFBLEdBQUE1QixDQUFBLEtBQUFNLENBQUEsYUFBQUEsQ0FBQSxRQUFBaUUsVUFBQSxDQUFBTSxNQUFBLE1BQUF2RSxDQUFBLFNBQUFBLENBQUEsUUFBQUcsQ0FBQSxRQUFBOEQsVUFBQSxDQUFBakUsQ0FBQSxHQUFBSyxDQUFBLEdBQUFGLENBQUEsQ0FBQWlFLFVBQUEsaUJBQUFqRSxDQUFBLENBQUEwRCxNQUFBLFNBQUE2QixNQUFBLGFBQUF2RixDQUFBLENBQUEwRCxNQUFBLFNBQUF3QixJQUFBLFFBQUE5RSxDQUFBLEdBQUFULENBQUEsQ0FBQXlCLElBQUEsQ0FBQXBCLENBQUEsZUFBQU0sQ0FBQSxHQUFBWCxDQUFBLENBQUF5QixJQUFBLENBQUFwQixDQUFBLHFCQUFBSSxDQUFBLElBQUFFLENBQUEsYUFBQTRFLElBQUEsR0FBQWxGLENBQUEsQ0FBQTJELFFBQUEsU0FBQTRCLE1BQUEsQ0FBQXZGLENBQUEsQ0FBQTJELFFBQUEsZ0JBQUF1QixJQUFBLEdBQUFsRixDQUFBLENBQUE0RCxVQUFBLFNBQUEyQixNQUFBLENBQUF2RixDQUFBLENBQUE0RCxVQUFBLGNBQUF4RCxDQUFBLGFBQUE4RSxJQUFBLEdBQUFsRixDQUFBLENBQUEyRCxRQUFBLFNBQUE0QixNQUFBLENBQUF2RixDQUFBLENBQUEyRCxRQUFBLHFCQUFBckQsQ0FBQSxZQUFBc0MsS0FBQSxxREFBQXNDLElBQUEsR0FBQWxGLENBQUEsQ0FBQTRELFVBQUEsU0FBQTJCLE1BQUEsQ0FBQXZGLENBQUEsQ0FBQTRELFVBQUEsWUFBQVIsTUFBQSxXQUFBQSxPQUFBN0QsQ0FBQSxFQUFBRCxDQUFBLGFBQUFFLENBQUEsUUFBQXNFLFVBQUEsQ0FBQU0sTUFBQSxNQUFBNUUsQ0FBQSxTQUFBQSxDQUFBLFFBQUFLLENBQUEsUUFBQWlFLFVBQUEsQ0FBQXRFLENBQUEsT0FBQUssQ0FBQSxDQUFBNkQsTUFBQSxTQUFBd0IsSUFBQSxJQUFBdkYsQ0FBQSxDQUFBeUIsSUFBQSxDQUFBdkIsQ0FBQSx3QkFBQXFGLElBQUEsR0FBQXJGLENBQUEsQ0FBQStELFVBQUEsUUFBQTVELENBQUEsR0FBQUgsQ0FBQSxhQUFBRyxDQUFBLGlCQUFBVCxDQUFBLG1CQUFBQSxDQUFBLEtBQUFTLENBQUEsQ0FBQTBELE1BQUEsSUFBQXBFLENBQUEsSUFBQUEsQ0FBQSxJQUFBVSxDQUFBLENBQUE0RCxVQUFBLEtBQUE1RCxDQUFBLGNBQUFFLENBQUEsR0FBQUYsQ0FBQSxHQUFBQSxDQUFBLENBQUFpRSxVQUFBLGNBQUEvRCxDQUFBLENBQUFnQixJQUFBLEdBQUEzQixDQUFBLEVBQUFXLENBQUEsQ0FBQWlCLEdBQUEsR0FBQTdCLENBQUEsRUFBQVUsQ0FBQSxTQUFBOEMsTUFBQSxnQkFBQVMsSUFBQSxHQUFBdkQsQ0FBQSxDQUFBNEQsVUFBQSxFQUFBbkMsQ0FBQSxTQUFBK0QsUUFBQSxDQUFBdEYsQ0FBQSxNQUFBc0YsUUFBQSxXQUFBQSxTQUFBakcsQ0FBQSxFQUFBRCxDQUFBLG9CQUFBQyxDQUFBLENBQUEyQixJQUFBLFFBQUEzQixDQUFBLENBQUE0QixHQUFBLHFCQUFBNUIsQ0FBQSxDQUFBMkIsSUFBQSxtQkFBQTNCLENBQUEsQ0FBQTJCLElBQUEsUUFBQXFDLElBQUEsR0FBQWhFLENBQUEsQ0FBQTRCLEdBQUEsZ0JBQUE1QixDQUFBLENBQUEyQixJQUFBLFNBQUFvRSxJQUFBLFFBQUFuRSxHQUFBLEdBQUE1QixDQUFBLENBQUE0QixHQUFBLE9BQUEyQixNQUFBLGtCQUFBUyxJQUFBLHlCQUFBaEUsQ0FBQSxDQUFBMkIsSUFBQSxJQUFBNUIsQ0FBQSxVQUFBaUUsSUFBQSxHQUFBakUsQ0FBQSxHQUFBbUMsQ0FBQSxLQUFBZ0UsTUFBQSxXQUFBQSxPQUFBbEcsQ0FBQSxhQUFBRCxDQUFBLFFBQUF3RSxVQUFBLENBQUFNLE1BQUEsTUFBQTlFLENBQUEsU0FBQUEsQ0FBQSxRQUFBRSxDQUFBLFFBQUFzRSxVQUFBLENBQUF4RSxDQUFBLE9BQUFFLENBQUEsQ0FBQW9FLFVBQUEsS0FBQXJFLENBQUEsY0FBQWlHLFFBQUEsQ0FBQWhHLENBQUEsQ0FBQXlFLFVBQUEsRUFBQXpFLENBQUEsQ0FBQXFFLFFBQUEsR0FBQUcsYUFBQSxDQUFBeEUsQ0FBQSxHQUFBaUMsQ0FBQSx5QkFBQWlFLE9BQUFuRyxDQUFBLGFBQUFELENBQUEsUUFBQXdFLFVBQUEsQ0FBQU0sTUFBQSxNQUFBOUUsQ0FBQSxTQUFBQSxDQUFBLFFBQUFFLENBQUEsUUFBQXNFLFVBQUEsQ0FBQXhFLENBQUEsT0FBQUUsQ0FBQSxDQUFBa0UsTUFBQSxLQUFBbkUsQ0FBQSxRQUFBSSxDQUFBLEdBQUFILENBQUEsQ0FBQXlFLFVBQUEsa0JBQUF0RSxDQUFBLENBQUF1QixJQUFBLFFBQUFyQixDQUFBLEdBQUFGLENBQUEsQ0FBQXdCLEdBQUEsRUFBQTZDLGFBQUEsQ0FBQXhFLENBQUEsWUFBQUssQ0FBQSxnQkFBQStDLEtBQUEsOEJBQUErQyxhQUFBLFdBQUFBLGNBQUFyRyxDQUFBLEVBQUFFLENBQUEsRUFBQUcsQ0FBQSxnQkFBQW9ELFFBQUEsS0FBQTVDLFFBQUEsRUFBQTZCLE1BQUEsQ0FBQTFDLENBQUEsR0FBQWdFLFVBQUEsRUFBQTlELENBQUEsRUFBQWdFLE9BQUEsRUFBQTdELENBQUEsb0JBQUFtRCxNQUFBLFVBQUEzQixHQUFBLEdBQUE1QixDQUFBLEdBQUFrQyxDQUFBLE9BQUFuQyxDQUFBO0FBQUEsU0FBQXNHLG1CQUFBQyxHQUFBLEVBQUFyRCxPQUFBLEVBQUFzRCxNQUFBLEVBQUFDLEtBQUEsRUFBQUMsTUFBQSxFQUFBQyxHQUFBLEVBQUE5RSxHQUFBLGNBQUErRSxJQUFBLEdBQUFMLEdBQUEsQ0FBQUksR0FBQSxFQUFBOUUsR0FBQSxPQUFBcEIsS0FBQSxHQUFBbUcsSUFBQSxDQUFBbkcsS0FBQSxXQUFBb0csS0FBQSxJQUFBTCxNQUFBLENBQUFLLEtBQUEsaUJBQUFELElBQUEsQ0FBQXJELElBQUEsSUFBQUwsT0FBQSxDQUFBekMsS0FBQSxZQUFBK0UsT0FBQSxDQUFBdEMsT0FBQSxDQUFBekMsS0FBQSxFQUFBMkMsSUFBQSxDQUFBcUQsS0FBQSxFQUFBQyxNQUFBO0FBQUEsU0FBQUksa0JBQUFDLEVBQUEsNkJBQUFDLElBQUEsU0FBQUMsSUFBQSxHQUFBQyxTQUFBLGFBQUExQixPQUFBLFdBQUF0QyxPQUFBLEVBQUFzRCxNQUFBLFFBQUFELEdBQUEsR0FBQVEsRUFBQSxDQUFBSSxLQUFBLENBQUFILElBQUEsRUFBQUMsSUFBQSxZQUFBUixNQUFBaEcsS0FBQSxJQUFBNkYsa0JBQUEsQ0FBQUMsR0FBQSxFQUFBckQsT0FBQSxFQUFBc0QsTUFBQSxFQUFBQyxLQUFBLEVBQUFDLE1BQUEsVUFBQWpHLEtBQUEsY0FBQWlHLE9BQUFVLEdBQUEsSUFBQWQsa0JBQUEsQ0FBQUMsR0FBQSxFQUFBckQsT0FBQSxFQUFBc0QsTUFBQSxFQUFBQyxLQUFBLEVBQUFDLE1BQUEsV0FBQVUsR0FBQSxLQUFBWCxLQUFBLENBQUFZLFNBQUE7QUFBQSxTQUFBQywyQkFBQS9HLENBQUEsRUFBQWdILGNBQUEsUUFBQUMsRUFBQSxVQUFBN0csTUFBQSxvQkFBQUosQ0FBQSxDQUFBSSxNQUFBLENBQUFFLFFBQUEsS0FBQU4sQ0FBQSxxQkFBQWlILEVBQUEsUUFBQUMsS0FBQSxDQUFBQyxPQUFBLENBQUFuSCxDQUFBLE1BQUFpSCxFQUFBLEdBQUFHLDJCQUFBLENBQUFwSCxDQUFBLE1BQUFnSCxjQUFBLElBQUFoSCxDQUFBLFdBQUFBLENBQUEsQ0FBQXVFLE1BQUEscUJBQUEwQyxFQUFBLEVBQUFqSCxDQUFBLEdBQUFpSCxFQUFBLE1BQUE5RyxDQUFBLFVBQUFrSCxDQUFBLFlBQUFBLEVBQUEsZUFBQTFGLENBQUEsRUFBQTBGLENBQUEsRUFBQXZILENBQUEsV0FBQUEsRUFBQSxRQUFBSyxDQUFBLElBQUFILENBQUEsQ0FBQXVFLE1BQUEsV0FBQXZCLElBQUEsbUJBQUFBLElBQUEsU0FBQTlDLEtBQUEsRUFBQUYsQ0FBQSxDQUFBRyxDQUFBLFVBQUFWLENBQUEsV0FBQUEsRUFBQTZILEVBQUEsVUFBQUEsRUFBQSxLQUFBNUYsQ0FBQSxFQUFBMkYsQ0FBQSxnQkFBQTdELFNBQUEsaUpBQUErRCxnQkFBQSxTQUFBQyxNQUFBLFVBQUFYLEdBQUEsV0FBQWxGLENBQUEsV0FBQUEsRUFBQSxJQUFBc0YsRUFBQSxHQUFBQSxFQUFBLENBQUExRixJQUFBLENBQUF2QixDQUFBLE1BQUFGLENBQUEsV0FBQUEsRUFBQSxRQUFBMkgsSUFBQSxHQUFBUixFQUFBLENBQUF2RCxJQUFBLElBQUE2RCxnQkFBQSxHQUFBRSxJQUFBLENBQUF6RSxJQUFBLFNBQUF5RSxJQUFBLEtBQUFoSSxDQUFBLFdBQUFBLEVBQUFpSSxHQUFBLElBQUFGLE1BQUEsU0FBQVgsR0FBQSxHQUFBYSxHQUFBLEtBQUFoRyxDQUFBLFdBQUFBLEVBQUEsZUFBQTZGLGdCQUFBLElBQUFOLEVBQUEsb0JBQUFBLEVBQUEsOEJBQUFPLE1BQUEsUUFBQVgsR0FBQTtBQUFBLFNBQUFjLFNBQUEsSUFBQUEsUUFBQSxHQUFBL0gsTUFBQSxDQUFBZ0ksTUFBQSxHQUFBaEksTUFBQSxDQUFBZ0ksTUFBQSxDQUFBQyxJQUFBLGVBQUFDLE1BQUEsYUFBQTNILENBQUEsTUFBQUEsQ0FBQSxHQUFBd0csU0FBQSxDQUFBcEMsTUFBQSxFQUFBcEUsQ0FBQSxVQUFBNEgsTUFBQSxHQUFBcEIsU0FBQSxDQUFBeEcsQ0FBQSxZQUFBaUcsR0FBQSxJQUFBMkIsTUFBQSxRQUFBbkksTUFBQSxDQUFBQyxTQUFBLENBQUFFLGNBQUEsQ0FBQXdCLElBQUEsQ0FBQXdHLE1BQUEsRUFBQTNCLEdBQUEsS0FBQTBCLE1BQUEsQ0FBQTFCLEdBQUEsSUFBQTJCLE1BQUEsQ0FBQTNCLEdBQUEsZ0JBQUEwQixNQUFBLFlBQUFILFFBQUEsQ0FBQWYsS0FBQSxPQUFBRCxTQUFBO0FBQUEsU0FBQXFCLG1CQUFBQyxHQUFBLFdBQUFDLGtCQUFBLENBQUFELEdBQUEsS0FBQUUsZ0JBQUEsQ0FBQUYsR0FBQSxLQUFBYiwyQkFBQSxDQUFBYSxHQUFBLEtBQUFHLGtCQUFBO0FBQUEsU0FBQUEsbUJBQUEsY0FBQTVFLFNBQUE7QUFBQSxTQUFBMkUsaUJBQUFFLElBQUEsZUFBQWpJLE1BQUEsb0JBQUFpSSxJQUFBLENBQUFqSSxNQUFBLENBQUFFLFFBQUEsYUFBQStILElBQUEsK0JBQUFuQixLQUFBLENBQUFvQixJQUFBLENBQUFELElBQUE7QUFBQSxTQUFBSCxtQkFBQUQsR0FBQSxRQUFBZixLQUFBLENBQUFDLE9BQUEsQ0FBQWMsR0FBQSxVQUFBTSxpQkFBQSxDQUFBTixHQUFBO0FBQUEsU0FBQU8sUUFBQS9JLENBQUEsRUFBQUUsQ0FBQSxRQUFBRCxDQUFBLEdBQUFFLE1BQUEsQ0FBQXNGLElBQUEsQ0FBQXpGLENBQUEsT0FBQUcsTUFBQSxDQUFBNkkscUJBQUEsUUFBQXpJLENBQUEsR0FBQUosTUFBQSxDQUFBNkkscUJBQUEsQ0FBQWhKLENBQUEsR0FBQUUsQ0FBQSxLQUFBSyxDQUFBLEdBQUFBLENBQUEsQ0FBQTBJLE1BQUEsV0FBQS9JLENBQUEsV0FBQUMsTUFBQSxDQUFBK0ksd0JBQUEsQ0FBQWxKLENBQUEsRUFBQUUsQ0FBQSxFQUFBaUIsVUFBQSxPQUFBbEIsQ0FBQSxDQUFBd0UsSUFBQSxDQUFBMEMsS0FBQSxDQUFBbEgsQ0FBQSxFQUFBTSxDQUFBLFlBQUFOLENBQUE7QUFBQSxTQUFBa0osY0FBQW5KLENBQUEsYUFBQUUsQ0FBQSxNQUFBQSxDQUFBLEdBQUFnSCxTQUFBLENBQUFwQyxNQUFBLEVBQUE1RSxDQUFBLFVBQUFELENBQUEsV0FBQWlILFNBQUEsQ0FBQWhILENBQUEsSUFBQWdILFNBQUEsQ0FBQWhILENBQUEsUUFBQUEsQ0FBQSxPQUFBNkksT0FBQSxDQUFBNUksTUFBQSxDQUFBRixDQUFBLE9BQUE0QyxPQUFBLFdBQUEzQyxDQUFBLElBQUFrSixlQUFBLENBQUFwSixDQUFBLEVBQUFFLENBQUEsRUFBQUQsQ0FBQSxDQUFBQyxDQUFBLFNBQUFDLE1BQUEsQ0FBQWtKLHlCQUFBLEdBQUFsSixNQUFBLENBQUFtSixnQkFBQSxDQUFBdEosQ0FBQSxFQUFBRyxNQUFBLENBQUFrSix5QkFBQSxDQUFBcEosQ0FBQSxLQUFBOEksT0FBQSxDQUFBNUksTUFBQSxDQUFBRixDQUFBLEdBQUE0QyxPQUFBLFdBQUEzQyxDQUFBLElBQUFDLE1BQUEsQ0FBQUssY0FBQSxDQUFBUixDQUFBLEVBQUFFLENBQUEsRUFBQUMsTUFBQSxDQUFBK0ksd0JBQUEsQ0FBQWpKLENBQUEsRUFBQUMsQ0FBQSxpQkFBQUYsQ0FBQTtBQUFBLFNBQUFvSixnQkFBQUcsR0FBQSxFQUFBNUMsR0FBQSxFQUFBbEcsS0FBQSxJQUFBa0csR0FBQSxHQUFBNkMsY0FBQSxDQUFBN0MsR0FBQSxPQUFBQSxHQUFBLElBQUE0QyxHQUFBLElBQUFwSixNQUFBLENBQUFLLGNBQUEsQ0FBQStJLEdBQUEsRUFBQTVDLEdBQUEsSUFBQWxHLEtBQUEsRUFBQUEsS0FBQSxFQUFBVSxVQUFBLFFBQUFDLFlBQUEsUUFBQUMsUUFBQSxvQkFBQWtJLEdBQUEsQ0FBQTVDLEdBQUEsSUFBQWxHLEtBQUEsV0FBQThJLEdBQUE7QUFBQSxTQUFBQyxlQUFBM0gsR0FBQSxRQUFBOEUsR0FBQSxHQUFBOEMsWUFBQSxDQUFBNUgsR0FBQSxvQkFBQW9CLE9BQUEsQ0FBQTBELEdBQUEsaUJBQUFBLEdBQUEsR0FBQStDLE1BQUEsQ0FBQS9DLEdBQUE7QUFBQSxTQUFBOEMsYUFBQUUsS0FBQSxFQUFBQyxJQUFBLFFBQUEzRyxPQUFBLENBQUEwRyxLQUFBLGtCQUFBQSxLQUFBLGtCQUFBQSxLQUFBLE1BQUFFLElBQUEsR0FBQUYsS0FBQSxDQUFBaEosTUFBQSxDQUFBbUosV0FBQSxPQUFBRCxJQUFBLEtBQUF4QyxTQUFBLFFBQUEwQyxHQUFBLEdBQUFGLElBQUEsQ0FBQS9ILElBQUEsQ0FBQTZILEtBQUEsRUFBQUMsSUFBQSxvQkFBQTNHLE9BQUEsQ0FBQThHLEdBQUEsdUJBQUFBLEdBQUEsWUFBQWhHLFNBQUEsNERBQUE2RixJQUFBLGdCQUFBRixNQUFBLEdBQUFNLE1BQUEsRUFBQUwsS0FBQTtBQUFBLFNBQUFNLGVBQUF6QixHQUFBLEVBQUE5SCxDQUFBLFdBQUF3SixlQUFBLENBQUExQixHQUFBLEtBQUEyQixxQkFBQSxDQUFBM0IsR0FBQSxFQUFBOUgsQ0FBQSxLQUFBaUgsMkJBQUEsQ0FBQWEsR0FBQSxFQUFBOUgsQ0FBQSxLQUFBMEosZ0JBQUE7QUFBQSxTQUFBQSxpQkFBQSxjQUFBckcsU0FBQTtBQUFBLFNBQUE0RCw0QkFBQXBILENBQUEsRUFBQThKLE1BQUEsU0FBQTlKLENBQUEscUJBQUFBLENBQUEsc0JBQUF1SSxpQkFBQSxDQUFBdkksQ0FBQSxFQUFBOEosTUFBQSxPQUFBaEssQ0FBQSxHQUFBRixNQUFBLENBQUFDLFNBQUEsQ0FBQWtLLFFBQUEsQ0FBQXhJLElBQUEsQ0FBQXZCLENBQUEsRUFBQXVGLEtBQUEsYUFBQXpGLENBQUEsaUJBQUFFLENBQUEsQ0FBQTBFLFdBQUEsRUFBQTVFLENBQUEsR0FBQUUsQ0FBQSxDQUFBMEUsV0FBQSxDQUFBQyxJQUFBLE1BQUE3RSxDQUFBLGNBQUFBLENBQUEsbUJBQUFvSCxLQUFBLENBQUFvQixJQUFBLENBQUF0SSxDQUFBLE9BQUFGLENBQUEsK0RBQUFrSyxJQUFBLENBQUFsSyxDQUFBLFVBQUF5SSxpQkFBQSxDQUFBdkksQ0FBQSxFQUFBOEosTUFBQTtBQUFBLFNBQUF2QixrQkFBQU4sR0FBQSxFQUFBZ0MsR0FBQSxRQUFBQSxHQUFBLFlBQUFBLEdBQUEsR0FBQWhDLEdBQUEsQ0FBQTFELE1BQUEsRUFBQTBGLEdBQUEsR0FBQWhDLEdBQUEsQ0FBQTFELE1BQUEsV0FBQXBFLENBQUEsTUFBQStKLElBQUEsT0FBQWhELEtBQUEsQ0FBQStDLEdBQUEsR0FBQTlKLENBQUEsR0FBQThKLEdBQUEsRUFBQTlKLENBQUEsSUFBQStKLElBQUEsQ0FBQS9KLENBQUEsSUFBQThILEdBQUEsQ0FBQTlILENBQUEsVUFBQStKLElBQUE7QUFBQSxTQUFBTixzQkFBQWpLLENBQUEsRUFBQThCLENBQUEsUUFBQS9CLENBQUEsV0FBQUMsQ0FBQSxnQ0FBQVMsTUFBQSxJQUFBVCxDQUFBLENBQUFTLE1BQUEsQ0FBQUUsUUFBQSxLQUFBWCxDQUFBLDRCQUFBRCxDQUFBLFFBQUFELENBQUEsRUFBQUssQ0FBQSxFQUFBSyxDQUFBLEVBQUFNLENBQUEsRUFBQUosQ0FBQSxPQUFBcUIsQ0FBQSxPQUFBMUIsQ0FBQSxpQkFBQUcsQ0FBQSxJQUFBVCxDQUFBLEdBQUFBLENBQUEsQ0FBQTZCLElBQUEsQ0FBQTVCLENBQUEsR0FBQStELElBQUEsUUFBQWpDLENBQUEsUUFBQTdCLE1BQUEsQ0FBQUYsQ0FBQSxNQUFBQSxDQUFBLFVBQUFnQyxDQUFBLHVCQUFBQSxDQUFBLElBQUFqQyxDQUFBLEdBQUFVLENBQUEsQ0FBQW9CLElBQUEsQ0FBQTdCLENBQUEsR0FBQXNELElBQUEsTUFBQTNDLENBQUEsQ0FBQTZELElBQUEsQ0FBQXpFLENBQUEsQ0FBQVMsS0FBQSxHQUFBRyxDQUFBLENBQUFrRSxNQUFBLEtBQUE5QyxDQUFBLEdBQUFDLENBQUEsaUJBQUEvQixDQUFBLElBQUFLLENBQUEsT0FBQUYsQ0FBQSxHQUFBSCxDQUFBLHlCQUFBK0IsQ0FBQSxZQUFBaEMsQ0FBQSxlQUFBZSxDQUFBLEdBQUFmLENBQUEsY0FBQUUsTUFBQSxDQUFBYSxDQUFBLE1BQUFBLENBQUEsMkJBQUFULENBQUEsUUFBQUYsQ0FBQSxhQUFBTyxDQUFBO0FBQUEsU0FBQXNKLGdCQUFBMUIsR0FBQSxRQUFBZixLQUFBLENBQUFDLE9BQUEsQ0FBQWMsR0FBQSxVQUFBQSxHQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQURBLE9BQU8sS0FBS2tDLEtBQUssTUFBTSxPQUFPO0FBQzlCLE9BQU8sS0FBS0MsU0FBUyxNQUFNLFlBQVk7QUFDdkMsU0FBU0MsSUFBSSxFQUFFQyx5QkFBeUIsUUFBUSx5QkFBeUI7QUFDekUsT0FBT0MsTUFBTSxNQUFNLFNBQVM7QUFDNUIsU0FBU0MsT0FBTyxRQUFRLHFCQUFxQjtBQUM3QyxTQUFTQyxVQUFVLFFBQVEsZUFBZTtBQUMxQyxTQUFTQyxPQUFPLEVBQUVDLFlBQVksUUFBUSxnQkFBZ0I7QUFDdEQsU0FDRUMsSUFBSSxFQUNKQyxXQUFXLEVBQ1hDLFdBQVcsRUFDWEMseUJBQXlCLEVBQ3pCQyxrQkFBa0IsRUFDbEJDLGVBQWUsRUFDZkMsWUFBWSxFQUNaQyxxQkFBcUIsRUFDckJDLG1CQUFtQixFQUNuQkMsYUFBYSxRQUNSLHVCQUF1QjtBQUM5QjtBQUNBLFNBQVNDLHdCQUF3QixRQUFRLGtCQUFrQjtBQUMzRCxTQUFTQyxnQkFBZ0IsRUFBRUMseUJBQXlCLFFBQVEsa0JBQWtCO0FBQzlFLFNBQVNDLE9BQU8sUUFBUSx5QkFBeUI7QUFDakQsU0FBU0MsU0FBUyxRQUFRLHVCQUF1QjtBQUNqRCxTQUFTQyxhQUFhLEVBQUVDLGlCQUFpQixRQUFRLElBQUk7QUFDckQsU0FBU0Msb0JBQW9CLFFBQVEsa0NBQWtDO0FBQ3ZFLFNBQ0VDLG1CQUFtQixFQUNuQkMsY0FBYyxFQUNkQyxhQUFhLEVBQ2JDLDJCQUEyQixFQUMzQkMsZUFBZSxFQUNmQyxrQkFBa0IsRUFDbEJDLDJCQUEyQixFQUMzQkMsZUFBZSxRQUNWLCtCQUErQjtBQUN0QyxTQUFTQyxLQUFLLFFBQVEsbUJBQW1CO0FBQ3pDLFNBQVNDLGNBQWMsUUFBUSxrQkFBa0I7QUFDakQsU0FBU0MsS0FBSyxRQUFRLHlCQUF5QjtBQUMvQyxTQUNFQyxZQUFZLEVBQ1pDLGVBQWUsRUFDZkMsWUFBWSxRQUNQLGFBQWE7QUFDcEIsU0FBU0Msa0JBQWtCLFFBQVEsdUJBQXVCO0FBQzFELFNBQVNDLFFBQVEsUUFBUSxtQkFBbUI7QUFDNUMsU0FBU0Msc0JBQXNCLEVBQUVDLGdCQUFnQixRQUFRLGFBQWE7QUFFdEUsSUFBTUMsa0JBQWtCLEdBQUcsd0JBQXdCO0FBQ25ELElBQU1DLEtBQUssR0FBRyxTQUFTO0FBQ3ZCLElBQU1DLEtBQUssR0FBRztFQUFFQyxTQUFTLEVBQUUsTUFBTTtFQUFFQyxLQUFLLEVBQUU7QUFBUSxDQUFDOztBQUVuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNDLGFBQWFBLENBQUNDLFFBQVEsRUFBRTtFQUFBLElBQUFDLHFCQUFBO0VBQy9CLElBQUFDLElBQUEsR0FJSUYsUUFBUSxJQUFJLENBQUMsQ0FBQztJQUhoQkcsT0FBTyxHQUFBRCxJQUFBLENBQVBDLE9BQU87SUFDUEMsS0FBSyxHQUFBRixJQUFBLENBQUxFLEtBQUs7SUFDTEMsU0FBUyxHQUFBSCxJQUFBLENBQVRHLFNBQVM7RUFFWCxJQUFNQyxZQUFZLEdBQUdELFNBQVMsYUFBVEEsU0FBUyxnQkFBQUoscUJBQUEsR0FBVEksU0FBUyxDQUFFQyxZQUFZLGNBQUFMLHFCQUFBLGVBQXZCQSxxQkFBQSxDQUF5QmhKLE1BQU0sR0FBR3NKLElBQUksQ0FBQ0MsU0FBUyxDQUFDSCxTQUFTLENBQUNDLFlBQVksQ0FBQyxHQUFHLEVBQUU7RUFDbEcsT0FBTztJQUNMSCxPQUFPLEVBQVBBLE9BQU87SUFDUEMsS0FBSyxFQUFMQSxLQUFLO0lBQ0xFLFlBQVksRUFBWkE7RUFDRixDQUFDO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNHLGFBQWFBLENBQUNDLGFBQW9CLEVBQUVDLGFBQW9CLEVBQUU7RUFDakVELGFBQWEsR0FBR0EsYUFBYSxJQUFJLEVBQUU7RUFDbkNDLGFBQWEsR0FBR0EsYUFBYSxJQUFJLEVBQUU7RUFDbkMsSUFBSUMsT0FBTyxHQUFHLEtBQUs7RUFFbkIsSUFBSUYsYUFBYSxDQUFDekosTUFBTSxLQUFLMEosYUFBYSxDQUFDMUosTUFBTSxFQUFFO0lBQ2pEMkosT0FBTyxHQUFHLElBQUk7SUFFZCxLQUFLLElBQUkvTixDQUFDLEdBQUcsQ0FBQyxFQUFFc0IsQ0FBQyxHQUFFdU0sYUFBYSxDQUFDekosTUFBTSxFQUFFcEUsQ0FBQyxHQUFHc0IsQ0FBQyxFQUFFdEIsQ0FBQyxFQUFFLEVBQUU7TUFDbkQsSUFBTWdPLE1BQU0sR0FBR2QsYUFBYSxDQUFDVyxhQUFhLENBQUM3TixDQUFDLENBQUMsQ0FBQztNQUM5QyxJQUFNaU8sTUFBTSxHQUFHZixhQUFhLENBQUNZLGFBQWEsQ0FBQzlOLENBQUMsQ0FBQyxDQUFDO01BQzlDK04sT0FBTyxHQUFHekMsT0FBTyxDQUFDMEMsTUFBTSxFQUFFQyxNQUFNLENBQUM7TUFFakMsSUFBSSxDQUFDRixPQUFPLEVBQUU7UUFDWjtNQUNGO0lBQ0Y7RUFDRjtFQUVBLE9BQU9BLE9BQU87QUFDaEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sSUFBTUcsY0FBYyxHQUFHLFNBQWpCQSxjQUFjQSxDQUFJQyxlQUFlLEVBQUVDLE1BQU0sRUFBSztFQUFBLElBQUFDLHFCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLHFCQUFBO0VBQ3pELElBQU1DLFdBQVcsR0FBR0wsZUFBZSxhQUFmQSxlQUFlLGdCQUFBRSxxQkFBQSxHQUFmRixlQUFlLENBQUVNLGFBQWEsY0FBQUoscUJBQUEsZ0JBQUFBLHFCQUFBLEdBQTlCQSxxQkFBQSxDQUFnQ0ssUUFBUSxjQUFBTCxxQkFBQSx1QkFBeENBLHFCQUFBLENBQTBDTSxTQUFTO0VBQ3ZFLElBQU1DLFFBQVEsR0FBR1QsZUFBZSxhQUFmQSxlQUFlLGdCQUFBRyxzQkFBQSxHQUFmSCxlQUFlLENBQUVNLGFBQWEsY0FBQUgsc0JBQUEsZ0JBQUFBLHNCQUFBLEdBQTlCQSxzQkFBQSxDQUFnQ0ksUUFBUSxjQUFBSixzQkFBQSx1QkFBeENBLHNCQUFBLENBQTBDOUosSUFBSSxFQUFDO0VBQ2hFLElBQUlxSyxXQUFXLEdBQUcsS0FBSztFQUN2QixJQUFNQyxRQUFRLEdBQUdoRCwyQkFBMkIsQ0FBQzhDLFFBQVEsQ0FBQztFQUN0REMsV0FBVyxHQUFHQyxRQUFRLGFBQVJBLFFBQVEsZ0JBQUFQLHFCQUFBLEdBQVJPLFFBQVEsQ0FBRUMsV0FBVyxDQUFDLENBQUMsY0FBQVIscUJBQUEsdUJBQXZCQSxxQkFBQSxDQUF5QlMsUUFBUSxDQUFDWixNQUFNLENBQUM7RUFDdkQsSUFBSSxDQUFDUyxXQUFXLEVBQUU7SUFDaEJJLE9BQU8sQ0FBQ0MsSUFBSSxzQkFBQUMsTUFBQSxDQUFzQmYsTUFBTSx3QkFBQWUsTUFBQSxDQUFxQlAsUUFBUSxDQUFFLENBQUM7RUFDMUU7RUFDQSxJQUFJLENBQUFKLFdBQVcsYUFBWEEsV0FBVyx1QkFBWEEsV0FBVyxDQUFFTyxXQUFXLENBQUMsQ0FBQyxNQUFLWCxNQUFNLEVBQUU7SUFDekNhLE9BQU8sQ0FBQ0MsSUFBSSxzQkFBQUMsTUFBQSxDQUFzQmYsTUFBTSxnQ0FBQWUsTUFBQSxDQUE2QlgsV0FBVyxDQUFFLENBQUM7SUFDbkZLLFdBQVcsR0FBRyxLQUFLO0VBQ3JCO0VBQ0EsSUFBSUEsV0FBVyxFQUFFO0lBQ2YsSUFBTU8sU0FBUyxHQUFHakIsZUFBZSxhQUFmQSxlQUFlLHVCQUFmQSxlQUFlLENBQUVpQixTQUFTO0lBQzVDLElBQUlBLFNBQVMsRUFBRTtNQUNiLE9BQU9BLFNBQVM7SUFDbEI7SUFDQUgsT0FBTyxDQUFDOUksS0FBSyx3Q0FBd0MsQ0FBQztFQUN4RDtFQUNBOEksT0FBTyxDQUFDOUksS0FBSyxnQ0FBQWdKLE1BQUEsQ0FBZ0NmLE1BQU0sb0JBQUFlLE1BQUEsQ0FBaUJQLFFBQVEsQ0FBRSxDQUFDO0VBQy9FLE9BQU8sSUFBSTtBQUNiLENBQUM7QUFFRCxlQUFlLFNBQVNTLGFBQWFBLENBQUFDLEtBQUEsRUFxQ2xDO0VBQUEsSUFBQUMsc0JBQUEsRUFBQUMsc0JBQUEsRUFBQUMsc0JBQUEsRUFBQUMsc0JBQUEsRUFBQUMsc0JBQUEsRUFBQUMscUJBQUEsRUFBQUMsc0JBQUEsRUFBQUMsdUJBQUEsRUFBQUMsV0FBQSxFQUFBQyxZQUFBLEVBQUFDLG9CQUFBLEVBQUFDLGNBQUEsRUFBQUMsY0FBQTtFQUFBLElBcENEQyxNQUFNLEdBQUFkLEtBQUEsQ0FBTmMsTUFBTTtJQUNOQyxjQUFjLEdBQUFmLEtBQUEsQ0FBZGUsY0FBYztJQUNkQyxTQUFTLEdBQUFoQixLQUFBLENBQVRnQixTQUFTO0lBQ1RDLE9BQU8sR0FBQWpCLEtBQUEsQ0FBUGlCLE9BQU87SUFDUEMsT0FBTyxHQUFBbEIsS0FBQSxDQUFQa0IsT0FBTztJQUNQQyxrQkFBa0IsR0FBQW5CLEtBQUEsQ0FBbEJtQixrQkFBa0I7SUFDbEJDLFdBQVcsR0FBQXBCLEtBQUEsQ0FBWG9CLFdBQVc7SUFDWEMsY0FBYyxHQUFBckIsS0FBQSxDQUFkcUIsY0FBYztJQUNkQyxZQUFZLEdBQUF0QixLQUFBLENBQVpzQixZQUFZO0lBQ1pDLGFBQWEsR0FBQXZCLEtBQUEsQ0FBYnVCLGFBQWE7SUFDYkMsVUFBVSxHQUFBeEIsS0FBQSxDQUFWd0IsVUFBVTtJQUNWQyxFQUFFLEdBQUF6QixLQUFBLENBQUZ5QixFQUFFO0lBQ0ZDLElBQUksR0FBQTFCLEtBQUEsQ0FBSjBCLElBQUk7SUFDSkMsWUFBWSxHQUFBM0IsS0FBQSxDQUFaMkIsWUFBWTtJQUNaQyxVQUFVLEdBQUE1QixLQUFBLENBQVY0QixVQUFVO0lBQ1ZDLGVBQWUsR0FBQTdCLEtBQUEsQ0FBZjZCLGVBQWU7SUFDZkMsNEJBQTRCLEdBQUE5QixLQUFBLENBQTVCOEIsNEJBQTRCO0lBQ2pCQyxVQUFVLEdBQUEvQixLQUFBLENBQXJCZ0MsU0FBUztJQUFBQyxjQUFBLEdBQUFqQyxLQUFBLENBQ1RaLFFBQVE7SUFDTjhDLEtBQUssR0FBQUQsY0FBQSxDQUFMQyxLQUFLO0lBQ0xDLFVBQVUsR0FBQUYsY0FBQSxDQUFWRSxVQUFVO0lBQ1ZDLFVBQVUsR0FBQUgsY0FBQSxDQUFWRyxVQUFVO0lBQ1ZDLHFCQUFxQixHQUFBSixjQUFBLENBQXJCSSxxQkFBcUI7SUFFdkJDLFlBQVksR0FBQXRDLEtBQUEsQ0FBWnNDLFlBQVk7SUFDWkMsYUFBYSxHQUFBdkMsS0FBQSxDQUFidUMsYUFBYTtJQUNiQyxNQUFNLEdBQUF4QyxLQUFBLENBQU53QyxNQUFNO0lBQ05DLG9CQUFvQixHQUFBekMsS0FBQSxDQUFwQnlDLG9CQUFvQjtJQUNwQkMscUJBQXFCLEdBQUExQyxLQUFBLENBQXJCMEMscUJBQXFCO0lBQ3JCQyxjQUFjLEdBQUEzQyxLQUFBLENBQWQyQyxjQUFjO0lBQ2RDLGVBQWUsR0FBQTVDLEtBQUEsQ0FBZjRDLGVBQWU7SUFDZkMsb0JBQW9CLEdBQUE3QyxLQUFBLENBQXBCNkMsb0JBQW9CO0lBQ3BCQyxTQUFTLEdBQUE5QyxLQUFBLENBQVQ4QyxTQUFTO0lBQ1RDLEtBQUssR0FBQS9DLEtBQUEsQ0FBTCtDLEtBQUs7SUFDTEMsbUJBQW1CLEdBQUFoRCxLQUFBLENBQW5CZ0QsbUJBQW1CO0lBQ25CQyxnQkFBZ0IsR0FBQWpELEtBQUEsQ0FBaEJpRCxnQkFBZ0I7RUFFaEIsSUFBTW5FLE1BQU0sR0FBRyxDQUFBaUQsVUFBVSxhQUFWQSxVQUFVLHVCQUFWQSxVQUFVLENBQUVqRCxNQUFNLE1BQUlpRCxVQUFVLGFBQVZBLFVBQVUsdUJBQVZBLFVBQVUsQ0FBRTFDLFNBQVMsR0FBQztFQUMzRCxJQUFNMkMsU0FBUyxHQUFHO0lBQ2hCbEQsTUFBTSxFQUFOQSxNQUFNO0lBQ05kLE9BQU8sRUFBRStELFVBQVUsYUFBVkEsVUFBVSx1QkFBVkEsVUFBVSxDQUFFL0QsT0FBTztJQUM1QkMsS0FBSyxFQUFFOEQsVUFBVSxhQUFWQSxVQUFVLHVCQUFWQSxVQUFVLENBQUU5RDtFQUNyQixDQUFDO0VBQ0QsSUFBQWlGLGVBQUEsR0FBMkJ4SSxLQUFLLENBQUN5SSxRQUFRLENBQUM7TUFDeENDLGtCQUFrQixFQUFFLENBQUM7TUFDckJDLGdCQUFnQixFQUFFLElBQUk7TUFDdEJDLGVBQWUsRUFBRSxLQUFLO01BQ3RCQyxTQUFTLEVBQUUsSUFBSTtNQUNmQyxrQkFBa0IsRUFBRSxLQUFLO01BQ3pCQyxpQkFBaUIsRUFBRSxJQUFJO01BQ3ZCQyxhQUFhLEVBQUUsS0FBSztNQUNwQkMsR0FBRyxFQUFFN0MsTUFBTTtNQUNYOEMsV0FBVyxFQUFFLEtBQUs7TUFDbEJDLFdBQVcsRUFBRSxJQUFJO01BQ2pCQyxhQUFhLEVBQUUsS0FBSztNQUNwQkMsb0JBQW9CLEVBQUUsSUFBSTtNQUMxQkMsVUFBVSxFQUFFLElBQUlDLEdBQUcsQ0FBQyxDQUFDO01BQ3JCQyxjQUFjLEVBQUUsRUFBRTtNQUNsQkMsa0JBQWtCLEVBQUUsS0FBSztNQUN6QkMsU0FBUyxFQUFFLEtBQUs7TUFDaEJDLFFBQVEsRUFBRSxJQUFJO01BQ2RDLGVBQWUsRUFBRSxLQUFLO01BQ3RCQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7TUFDdEJDLHFCQUFxQixFQUFFLElBQUk7TUFDM0JDLFlBQVksRUFBRSxJQUFJO01BQ2xCQyxlQUFlLEVBQUUsSUFBSVQsR0FBRyxDQUFDLENBQUM7TUFDMUJVLHlCQUF5QixFQUFFO0lBQzdCLENBQUMsQ0FBQztJQUFBQyxnQkFBQSxHQUFBM0ssY0FBQSxDQUFBaUosZUFBQTtJQXhCSzJCLEtBQUssR0FBQUQsZ0JBQUE7SUFBRUUsU0FBUyxHQUFBRixnQkFBQTtFQXlCdkIsSUFDRXhCLGtCQUFrQixHQXVCaEJ5QixLQUFLLENBdkJQekIsa0JBQWtCO0lBQ2xCQyxnQkFBZ0IsR0FzQmR3QixLQUFLLENBdEJQeEIsZ0JBQWdCO0lBQ2hCQyxlQUFlLEdBcUJidUIsS0FBSyxDQXJCUHZCLGVBQWU7SUFDZkMsU0FBUyxHQW9CUHNCLEtBQUssQ0FwQlB0QixTQUFTO0lBQ1RDLGtCQUFrQixHQW1CaEJxQixLQUFLLENBbkJQckIsa0JBQWtCO0lBQ2xCQyxpQkFBaUIsR0FrQmZvQixLQUFLLENBbEJQcEIsaUJBQWlCO0lBQ2pCQyxhQUFhLEdBaUJYbUIsS0FBSyxDQWpCUG5CLGFBQWE7SUFDYkMsR0FBRyxHQWdCRGtCLEtBQUssQ0FoQlBsQixHQUFHO0lBQ0hDLFdBQVcsR0FlVGlCLEtBQUssQ0FmUGpCLFdBQVc7SUFDWEMsV0FBVyxHQWNUZ0IsS0FBSyxDQWRQaEIsV0FBVztJQUNYQyxhQUFhLEdBYVhlLEtBQUssQ0FiUGYsYUFBYTtJQUNiQyxvQkFBb0IsR0FZbEJjLEtBQUssQ0FaUGQsb0JBQW9CO0lBQ3BCQyxVQUFVLEdBV1JhLEtBQUssQ0FYUGIsVUFBVTtJQUNWRSxjQUFjLEdBVVpXLEtBQUssQ0FWUFgsY0FBYztJQUNkQyxrQkFBa0IsR0FTaEJVLEtBQUssQ0FUUFYsa0JBQWtCO0lBQ2xCQyxTQUFTLEdBUVBTLEtBQUssQ0FSUFQsU0FBUztJQUNUQyxRQUFRLEdBT05RLEtBQUssQ0FQUFIsUUFBUTtJQUNSQyxlQUFlLEdBTWJPLEtBQUssQ0FOUFAsZUFBZTtJQUNmQyxrQkFBa0IsR0FLaEJNLEtBQUssQ0FMUE4sa0JBQWtCO0lBQ2xCRyxlQUFlLEdBSWJHLEtBQUssQ0FKUEgsZUFBZTtJQUNmQyx5QkFBeUIsR0FHdkJFLEtBQUssQ0FIUEYseUJBQXlCO0lBQ3pCSCxxQkFBcUIsR0FFbkJLLEtBQUssQ0FGUEwscUJBQXFCO0lBQ3JCQyxZQUFZLEdBQ1ZJLEtBQUssQ0FEUEosWUFBWTtFQUdkLElBQUFNLG9CQUFBLEdBQWdDL0IsbUJBQW1CLENBQUN6RixrQkFBa0IsR0FBRzBELE9BQU8sRUFBRSxHQUFHLENBQUM7SUFBQStELHFCQUFBLEdBQUEvSyxjQUFBLENBQUE4SyxvQkFBQTtJQUEvRUUsUUFBUSxHQUFBRCxxQkFBQTtJQUFFRSxXQUFXLEdBQUFGLHFCQUFBO0VBQzVCLElBQU1HLEtBQUssR0FBR3pELElBQUksQ0FBQzVDLE1BQU0sQ0FBQztFQUUxQixTQUFTc0csUUFBUUEsQ0FBQ0MsUUFBUSxFQUFFO0lBQzFCUCxTQUFTLENBQUMsVUFBQVEsU0FBUztNQUFBLE9BQUFuTSxhQUFBLENBQUFBLGFBQUEsS0FBVW1NLFNBQVMsR0FBS0QsUUFBUTtJQUFBLENBQUcsQ0FBQztFQUN6RDtFQUVBN0QsVUFBVSxHQUFBckksYUFBQSxDQUFBQSxhQUFBLEtBQ0xxSSxVQUFVO0lBQ2IrRCxLQUFLLEVBQUU7TUFBRUMsTUFBTSxFQUFFO0lBQUUsQ0FBQztJQUNwQkMsT0FBTyxFQUFFO0VBQUksRUFDZCxFQUFDOztFQUVGLElBQUFDLHFCQUFBLEdBTUl0SixvQkFBb0IsQ0FBQztNQUN2QjBFLE1BQU0sRUFBRTZDLEdBQUc7TUFDWDFDLE9BQU8sRUFBUEEsT0FBTztNQUNQRSxrQkFBa0IsRUFBbEJBLGtCQUFrQjtNQUNsQkcsWUFBWSxFQUFaQSxZQUFZO01BQ1pDLGFBQWEsRUFBYkEsYUFBYTtNQUNiQyxVQUFVLEVBQVZBLFVBQVU7TUFDVkUsSUFBSSxFQUFKQSxJQUFJO01BQ0pTLFVBQVUsRUFBVkEsVUFBVTtNQUNWRSxxQkFBcUIsRUFBckJBLHFCQUFxQjtNQUNyQkgsS0FBSyxFQUFMQSxLQUFLO01BQ0x3QixhQUFhLEVBQWJBLGFBQWE7TUFDYjFCLFNBQVMsRUFBRXFCLGdCQUFnQixJQUFJckIsU0FBUztNQUN4Q0ksVUFBVSxFQUFWQSxVQUFVO01BQ1ZFLFlBQVksRUFBWkEsWUFBWTtNQUNacUQsV0FBVyxFQUFFLFNBQUFBLFlBQUM5TyxLQUFLO1FBQUEsT0FBS3VPLFFBQVEsQ0FBQztVQUFFZixRQUFRLEVBQUV4TjtRQUFNLENBQUMsQ0FBQztNQUFBO01BQ3JEMkwsTUFBTSxFQUFOQSxNQUFNO01BQ05PLEtBQUssRUFBTEEsS0FBSztNQUNMQyxtQkFBbUIsRUFBbkJBLG1CQUFtQjtNQUNuQjRDLFNBQVMsRUFBRTtJQUNiLENBQUMsQ0FBQztJQXpCQUMsY0FBYyxHQUFBSCxxQkFBQSxDQUFkRyxjQUFjO0lBQ2RoSCxlQUFlLEdBQUE2RyxxQkFBQSxDQUFmN0csZUFBZTtJQUNmaUgsWUFBWSxHQUFBSixxQkFBQSxDQUFaSSxZQUFZO0lBQ1pDLGlCQUFpQixHQUFBTCxxQkFBQSxDQUFqQkssaUJBQWlCO0lBQ2pCQyxvQkFBb0IsR0FBQU4scUJBQUEsQ0FBcEJNLG9CQUFvQjtFQXVCdEIsSUFBTUMsZUFBZSxHQUFHcEgsZUFBZSxhQUFmQSxlQUFlLHVCQUFmQSxlQUFlLENBQUVNLGFBQWE7RUFDdEQ7RUFDQSxJQUFNK0csSUFBSSxNQUFBckcsTUFBQSxDQUFNaEIsZUFBZSxhQUFmQSxlQUFlLGdCQUFBb0Isc0JBQUEsR0FBZnBCLGVBQWUsQ0FBRU8sUUFBUSxjQUFBYSxzQkFBQSx1QkFBekJBLHNCQUFBLENBQTJCa0MsVUFBVSxPQUFBdEMsTUFBQSxDQUFJaEIsZUFBZSxhQUFmQSxlQUFlLGdCQUFBcUIsc0JBQUEsR0FBZnJCLGVBQWUsQ0FBRU8sUUFBUSxjQUFBYyxzQkFBQSx1QkFBekJBLHNCQUFBLENBQTJCYixTQUFTLENBQUU7RUFDL0YsSUFBTThHLGtCQUFrQixHQUFHdkosZUFBZSxFQUFBdUQsc0JBQUEsR0FBQ3RCLGVBQWUsQ0FBQyxVQUFVLENBQUMsY0FBQXNCLHNCQUFBLHVCQUEzQkEsc0JBQUEsQ0FBNkJkLFNBQVMsQ0FBQzs7RUFHbEY7RUFDQSxJQUFNK0csY0FBYyxHQUFHLENBQUF2SCxlQUFlLGFBQWZBLGVBQWUsZ0JBQUF1QixzQkFBQSxHQUFmdkIsZUFBZSxDQUFFTyxRQUFRLGNBQUFnQixzQkFBQSx1QkFBekJBLHNCQUFBLENBQTJCZixTQUFTLEtBQUkrQyxVQUFVO0VBQ3pFO0VBQ0EsSUFBSWlFLElBQUksR0FBRyxDQUFBeEgsZUFBZSxhQUFmQSxlQUFlLGdCQUFBd0Isc0JBQUEsR0FBZnhCLGVBQWUsQ0FBRU8sUUFBUSxjQUFBaUIsc0JBQUEsdUJBQXpCQSxzQkFBQSxDQUEyQnNELEdBQUcsS0FBSTdDLE1BQU07RUFDbkQsSUFBTXdGLGdCQUFnQixHQUFHLENBQUMsRUFBRTNFLFlBQVksSUFBSVosY0FBYyxJQUFLcUIsVUFBVSxLQUFLbkYsZUFBZ0I7RUFBSTtFQUM5Rm9KLElBQUksS0FBSyxRQUFRLElBQU1BLElBQUksQ0FBQzNHLFFBQVEsQ0FBQ2lDLFlBQVksQ0FBRSxDQUFDLENBQUMsRUFBQzs7RUFFMUQsSUFBQTRFLGNBQUEsR0FXSTNLLGFBQWEsQ0FBQztNQUNoQmtGLE1BQU0sRUFBTkEsTUFBTTtNQUNOQyxjQUFjLEVBQUV1RixnQkFBZ0IsR0FBR3ZGLGNBQWMsR0FBRyxJQUFJO01BQ3hEakMsTUFBTSxFQUFOQSxNQUFNO01BQ04wSCxNQUFNLEVBQUUvRSxFQUFFO01BQ1YyRSxjQUFjLEVBQWRBLGNBQWM7TUFDZGhELGtCQUFrQixFQUFsQkEsa0JBQWtCO01BQ2xCakIsVUFBVSxFQUFWQSxVQUFVO01BQ1ZSLFlBQVksRUFBRTJFLGdCQUFnQixHQUFHM0UsWUFBWSxHQUFHLElBQUk7TUFDcERPLEtBQUssRUFBTEEsS0FBSztNQUNMTCxlQUFlLEVBQWZBLGVBQWU7TUFDZlcsTUFBTSxFQUFOQSxNQUFNO01BQ05RLG1CQUFtQixFQUFuQkE7SUFDRixDQUFDLENBQUM7SUFBQXlELG9CQUFBLEdBQUFGLGNBQUEsQ0F2QkExQixLQUFLO0lBQ0g2QixnQkFBZ0IsR0FBQUQsb0JBQUEsQ0FBaEJDLGdCQUFnQjtJQUNoQkMsa0JBQWtCLEdBQUFGLG9CQUFBLENBQWxCRSxrQkFBa0I7SUFDREMsZ0JBQWdCLEdBQUFILG9CQUFBLENBQWpDbkMsZUFBZTtJQUNmdUMscUJBQXFCLEdBQUFKLG9CQUFBLENBQXJCSSxxQkFBcUI7SUFBQUMscUJBQUEsR0FBQVAsY0FBQSxDQUV2QlEsT0FBTztJQUNNQyxlQUFlLEdBQUFGLHFCQUFBLENBQTFCRyxTQUFTO0lBQ1RDLFVBQVUsR0FBQUoscUJBQUEsQ0FBVkksVUFBVTtFQWlCZCxJQUFNQyxnQkFBZ0IsR0FBRzNMLGVBQWUsQ0FBQztJQUFFZ0gsTUFBTSxFQUFOQSxNQUFNO0lBQUVOLEtBQUssRUFBTEEsS0FBSztJQUFFZ0UsSUFBSSxFQUFKQSxJQUFJO0lBQUVrQixVQUFVLEVBQUVULGtCQUFrQjtJQUFFVSxPQUFPLEVBQUV0RyxjQUFjLGFBQWRBLGNBQWMsZ0JBQUFULHFCQUFBLEdBQWRTLGNBQWMsQ0FBRXVHLEtBQUssY0FBQWhILHFCQUFBLHVCQUFyQkEscUJBQUEsQ0FBdUJpSDtFQUFLLENBQUMsQ0FBQztFQUN2SSxJQUFBQyxxQkFBQSxHQUtJTCxnQkFBZ0IsQ0FKbEJ0QyxLQUFLO0lBQ1U0QyxhQUFhLEdBQUFELHFCQUFBLENBQTFCRSxXQUFXO0lBQ0dDLGVBQWUsR0FBQUgscUJBQUEsQ0FBN0JJLFlBQVk7RUFJaEIsSUFBTUMsaUJBQWlCLEdBQUduTSxxQkFBcUIsQ0FBQztJQUM5Q29NLFFBQVEsRUFBRTFELFNBQVM7SUFDbkI1SSxlQUFlLEVBQUUyTCxnQkFBZ0I7SUFDakNZLFFBQVEsRUFBRSxTQUFBQSxTQUFBLEVBQU07TUFDZGxMLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQ3pKLElBQUksQ0FBQztRQUFBLE9BQU15TCxlQUFlLGFBQWZBLGVBQWUsdUJBQWZBLGVBQWUsQ0FBRW1KLGNBQWMsQ0FBQyxDQUFDO01BQUEsRUFBQztJQUMxRDtFQUNGLENBQUMsQ0FBQztFQUVGLElBQ0VDLG9CQUFvQixHQVFsQkosaUJBQWlCLENBUm5CSSxvQkFBb0I7SUFDcEJDLGlCQUFpQixHQU9mTCxpQkFBaUIsQ0FQbkJLLGlCQUFpQjtJQUNqQkMsa0JBQWtCLEdBTWhCTixpQkFBaUIsQ0FObkJNLGtCQUFrQjtJQUNQQyxlQUFlLEdBS3hCUCxpQkFBaUIsQ0FMbkJRLFNBQVM7SUFDVEMsYUFBYSxHQUlYVCxpQkFBaUIsQ0FKbkJTLGFBQWE7SUFDYkMsV0FBVyxHQUdUVixpQkFBaUIsQ0FIbkJVLFdBQVc7SUFDWEMsVUFBVSxHQUVSWCxpQkFBaUIsQ0FGbkJXLFVBQVU7SUFDVkMsaUJBQWlCLEdBQ2ZaLGlCQUFpQixDQURuQlksaUJBQWlCO0VBR25CLElBQU1DLE9BQU8sR0FBRyxTQUFWQSxPQUFPQSxDQUFBLEVBQVM7SUFDcEJ4QixVQUFVLENBQUMsQ0FBQztJQUNadkgsT0FBTyxDQUFDZ0osR0FBRywyREFBMkQ3SCxNQUFNLENBQUM7SUFDN0VzRSxRQUFRLENBQUM7TUFDUDFCLGFBQWEsRUFBRSxLQUFLO01BQ3BCQyxHQUFHLEVBQUU3QztJQUNQLENBQUMsQ0FBQztJQUNGakUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDekosSUFBSSxDQUFDLFlBQU07TUFDcEJnUyxRQUFRLENBQUM7UUFDUGhDLGtCQUFrQixFQUFFQSxrQkFBa0IsR0FBRyxDQUFDO1FBQUU7UUFDNUNNLGFBQWEsRUFBRTtNQUNqQixDQUFDLENBQUM7SUFDSixDQUFDLENBQUM7RUFDSixDQUFDO0VBRUQsSUFBQWtGLG9CQUFBLEdBQTJEak4sbUJBQW1CLENBQUM7TUFDN0VtTSxRQUFRLEVBQUUxRCxTQUFTO01BQ25CNUksZUFBZSxFQUFFMkwsZ0JBQWdCO01BQ2pDdUIsT0FBTyxFQUFQQTtJQUNGLENBQUMsQ0FBQztJQUppQkcsY0FBYyxHQUFBRCxvQkFBQSxDQUF6QlAsU0FBUztJQUFrQlMsbUJBQW1CLEdBQUFGLG9CQUFBLENBQW5CRSxtQkFBbUI7O0VBTXREO0VBQ0E7RUFDQXBPLEtBQUssQ0FBQ3FPLFNBQVMsQ0FBQyxZQUFNO0lBQ3BCLElBQUkzQyxjQUFjLElBQUksQ0FBQ0Qsa0JBQWtCLEVBQUU7TUFDekNsRCxnQkFBZ0IsSUFBSUEsZ0JBQWdCLENBQ2xDbUQsY0FBYyxFQUNkdkgsZUFBZSxDQUFDa0UsS0FBSyxFQUNyQjRFLGVBQWUsRUFDZkYsYUFBYSxFQUNiUSxvQkFBb0IsRUFDcEJhLG1CQUNGLENBQUM7SUFDSDtFQUNGLENBQUMsRUFBQyxDQUFDMUMsY0FBYyxFQUFFdkgsZUFBZSxDQUFDa0UsS0FBSyxFQUFFNEUsZUFBZSxFQUFFRixhQUFhLENBQUMsQ0FBQztFQUUxRS9NLEtBQUssQ0FBQ3FPLFNBQVMsQ0FBQyxZQUFNO0lBQ3BCLElBQUlYLGVBQWUsRUFBRTtNQUNuQjFGLHFCQUFxQixhQUFyQkEscUJBQXFCLGVBQXJCQSxxQkFBcUIsQ0FBRyxVQUFBc0csZ0JBQWdCO1FBQUEsVUFBQW5KLE1BQUEsQ0FBQXRILGtCQUFBLENBQVF5USxnQkFBZ0IsSUFBRTVDLGNBQWM7TUFBQSxDQUFDLENBQUM7SUFDcEYsQ0FBQyxNQUFNO01BQ0wxRCxxQkFBcUIsYUFBckJBLHFCQUFxQixlQUFyQkEscUJBQXFCLENBQUcsVUFBQXNHLGdCQUFnQjtRQUFBLE9BQUlBLGdCQUFnQixDQUFDL1AsTUFBTSxDQUFDLFVBQUF1TixNQUFNO1VBQUEsT0FBSUEsTUFBTSxLQUFLSixjQUFjO1FBQUEsRUFBQztNQUFBLEVBQUM7SUFDM0c7RUFDRixDQUFDLEVBQUUsQ0FBQ2dDLGVBQWUsQ0FBQyxDQUFDO0VBRXJCMU4sS0FBSyxDQUFDcU8sU0FBUyxDQUFDLFlBQU07SUFDcEIsSUFBSUYsY0FBYyxFQUFFO01BQ2xCcEcsb0JBQW9CLGFBQXBCQSxvQkFBb0IsZUFBcEJBLG9CQUFvQixDQUFHLFVBQUF1RyxnQkFBZ0I7UUFBQSxVQUFBbkosTUFBQSxDQUFBdEgsa0JBQUEsQ0FBUXlRLGdCQUFnQixJQUFFNUMsY0FBYztNQUFBLENBQUMsQ0FBQztJQUNuRixDQUFDLE1BQU07TUFDTDNELG9CQUFvQixhQUFwQkEsb0JBQW9CLGVBQXBCQSxvQkFBb0IsQ0FBRyxVQUFBdUcsZ0JBQWdCO1FBQUEsT0FBSUEsZ0JBQWdCLENBQUMvUCxNQUFNLENBQUMsVUFBQXVOLE1BQU07VUFBQSxPQUFJQSxNQUFNLEtBQUtKLGNBQWM7UUFBQSxFQUFDO01BQUEsRUFBQztJQUMxRztFQUNGLENBQUMsRUFBRSxDQUFDeUMsY0FBYyxDQUFDLENBQUM7RUFFcEIsSUFBTUksVUFBVSxHQUFHM0MsZ0JBQWdCLEdBQUdPLHFCQUFxQixHQUFHL0YsTUFBTTtFQUNwRSxJQUFJb0ksY0FBYztFQUVsQixJQUFJLENBQUM1QyxnQkFBZ0IsSUFBSSxDQUFDNUMsYUFBYSxFQUFFO0lBQUU7SUFDekMwQixRQUFRLENBQUM7TUFBRTFCLGFBQWEsRUFBRTtJQUFLLENBQUMsQ0FBQztFQUNuQztFQUVBaEosS0FBSyxDQUFDcU8sU0FBUyxDQUFDLFlBQU07SUFDcEJwSixPQUFPLENBQUNnSixHQUFHLCtCQUErQjtNQUFFN0osTUFBTSxFQUFOQSxNQUFNO01BQUVvRCxLQUFLLEVBQUxBLEtBQUs7TUFBRUMsVUFBVSxFQUFWQSxVQUFVO01BQUVDLFVBQVUsRUFBVkE7SUFBVyxDQUFDLENBQUM7SUFFcEYsSUFBSWtFLGdCQUFnQixFQUFFO01BQUU7TUFDdEJsQixRQUFRLENBQUM7UUFBRTFCLGFBQWEsRUFBRSxLQUFLO1FBQUVOLGtCQUFrQixFQUFFQSxrQkFBa0IsR0FBRztNQUFFLENBQUMsQ0FBQztJQUNoRjtFQUNGLENBQUMsRUFBRSxDQUFDdEUsTUFBTSxFQUFFb0QsS0FBSyxFQUFFQyxVQUFVLEVBQUVDLFVBQVUsQ0FBQyxDQUFDO0VBRTNDMUgsS0FBSyxDQUFDcU8sU0FBUyxDQUFDLFlBQU07SUFDcEIsSUFBSSxDQUFDL00sT0FBTyxDQUFDZ0csU0FBUyxFQUFFcUIsZ0JBQWdCLENBQUMsRUFBRTtNQUN6QztNQUNBK0IsUUFBUSxDQUFDO1FBQUUvQixnQkFBZ0IsRUFBRXJCLFNBQVM7UUFBRXVCLFNBQVMsRUFBRTtNQUFLLENBQUMsQ0FBQztJQUM1RDtFQUNGLENBQUMsRUFBRSxDQUFDdkIsU0FBUyxDQUFDLENBQUM7RUFFZnRILEtBQUssQ0FBQ3FPLFNBQVMsQ0FBQyxZQUFNO0lBQUU7SUFDdEIsSUFBSSxDQUFDckYsYUFBYSxJQUFJZ0QsZ0JBQWdCLEVBQUc7TUFDdkMvRyxPQUFPLENBQUNnSixHQUFHLHNDQUFBOUksTUFBQSxDQUFzQzZHLGdCQUFnQix5QkFBQTdHLE1BQUEsQ0FBc0JvSixVQUFVLENBQUUsQ0FBQztNQUNwRzdELFFBQVEsQ0FBQztRQUFFMUIsYUFBYSxFQUFFLElBQUk7UUFBRUMsR0FBRyxFQUFFc0Y7TUFBVyxDQUFDLENBQUM7SUFDcEQ7RUFDRixDQUFDLEVBQUUsQ0FBQ3ZDLGdCQUFnQixDQUFDLENBQUM7RUFFdEJoTSxLQUFLLENBQUNxTyxTQUFTLENBQUMsWUFBTTtJQUFFO0lBQ3RCLElBQUluQyxnQkFBZ0IsS0FBS3RDLGVBQWUsRUFBRTtNQUN4Q2MsUUFBUSxDQUFDO1FBQUVkLGVBQWUsRUFBRXNDO01BQWlCLENBQUMsQ0FBQztJQUNqRDtFQUNGLENBQUMsRUFBRSxDQUFDQSxnQkFBZ0IsRUFBRXRDLGVBQWUsQ0FBQyxDQUFDO0VBRXZDNUosS0FBSyxDQUFDcU8sU0FBUyxDQUFDLFlBQU07SUFBQSxJQUFBSSxzQkFBQTtJQUFFO0lBQ3RCLElBQU10UyxLQUFLLEdBQUdnSSxlQUFlLGFBQWZBLGVBQWUsZ0JBQUFzSyxzQkFBQSxHQUFmdEssZUFBZSxDQUFFdUssY0FBYyxjQUFBRCxzQkFBQSx1QkFBL0JBLHNCQUFBLENBQWtDOU4sV0FBVyxDQUFDO0lBRTVELElBQUl4RSxLQUFLLEVBQUU7TUFBRTtNQUNYLElBQU11UyxjQUFjLEdBQUd2SyxlQUFlLGFBQWZBLGVBQWUsdUJBQWZBLGVBQWUsQ0FBRXVLLGNBQWM7TUFDdEQsSUFBTTlHLGFBQVksR0FBRzdGLGVBQWUsQ0FBQ29DLGVBQWUsQ0FBQztNQUNyRCxJQUFNd0ssT0FBTyxHQUFHM00sa0JBQWtCLENBQUMwTSxjQUFjLEVBQUU1RyxNQUFNLEVBQUVGLGFBQVksRUFBRTZDLEtBQUssQ0FBQztNQUMvRSxJQUFNbUUsYUFBYSxHQUFHRixjQUFjLENBQUM5Tix5QkFBeUIsQ0FBQztNQUMvRHVHLGVBQWUsSUFBSUEsZUFBZSxDQUFDd0gsT0FBTyxFQUFFQyxhQUFhLEVBQUVGLGNBQWMsQ0FBQztJQUM1RTtFQUNGLENBQUMsRUFBRSxDQUFDdkssZUFBZSxhQUFmQSxlQUFlLGdCQUFBMEIsc0JBQUEsR0FBZjFCLGVBQWUsQ0FBRXVLLGNBQWMsY0FBQTdJLHNCQUFBLHVCQUEvQkEsc0JBQUEsQ0FBa0NsRixXQUFXLENBQUMsQ0FBQyxDQUFDO0VBRXBELElBQUl3RCxlQUFlLENBQUNrRSxLQUFLLElBQUlsRSxlQUFlLENBQUMwSyxPQUFPLEVBQUU7SUFDcERMLGNBQWMsTUFBQXJKLE1BQUEsQ0FBTWhCLGVBQWUsQ0FBQ2tFLEtBQUssUUFBQWxELE1BQUEsQ0FBS2hCLGVBQWUsQ0FBQzBLLE9BQU8sQ0FBRTtJQUN2RXZELG9CQUFvQixDQUFDd0QsV0FBVyxDQUFDM0ssZUFBZSxDQUFDeUQsWUFBWSxFQUFFNEcsY0FBYyxDQUFDO0VBQ2hGLENBQUMsTUFBTTtJQUNMQSxjQUFjLHdDQUF3QztFQUN4RDs7RUFFQTtFQUNBLFNBQVNPLG9CQUFvQkEsQ0FBQSxFQUFHO0lBQzlCLElBQU1DLHdCQUF3QixHQUFHL00sMkJBQTJCLENBQUM7TUFDM0RhLEtBQUssRUFBTEEsS0FBSztNQUNMOEUsWUFBWSxFQUFFekQsZUFBZSxDQUFDeUQsWUFBWTtNQUMxQ3dELFlBQVksRUFBWkEsWUFBWTtNQUNaRSxvQkFBb0IsRUFBcEJBO0lBQ0YsQ0FBQyxDQUFDO0lBRUYsb0JBQU90TCxLQUFBLENBQUFpUCxhQUFBLENBQUN4TixpQkFBaUIsRUFBQWpFLFFBQUEsS0FBS3dSLHdCQUF3QjtNQUFFak0sS0FBSyxFQUFFQSxLQUFNO01BQUNtTSxZQUFZLEVBQUV2RjtJQUFTLEVBQUUsQ0FBQztFQUNsRzs7RUFFQTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0VBQ0UsU0FBU3dGLFlBQVlBLENBQUNoTSxRQUFRLEVBQUVpTSxPQUFPLEVBQUU7SUFDdkMsSUFBSUEsT0FBTyxJQUFLak0sUUFBUSxLQUFLMEYsU0FBVSxFQUFFO01BQUU7TUFDekM2QixRQUFRLENBQUM7UUFBRTdCLFNBQVMsRUFBRTFGO01BQVMsQ0FBQyxDQUFDO0lBQ25DLENBQUMsTUFBTSxJQUFJLENBQUNpTSxPQUFPLElBQUtqTSxRQUFRLEtBQUswRixTQUFVLEVBQUU7TUFBRTtNQUNqRDZCLFFBQVEsQ0FBQztRQUFFN0IsU0FBUyxFQUFFO01BQUssQ0FBQyxDQUFDO0lBQy9CO0VBQ0Y7RUFFQSxJQUFNd0csb0JBQW9CLEdBQUd4RyxTQUFTLEVBQUM7O0VBRXZDLFNBQVN5RyxXQUFXQSxDQUFBLEVBQUc7SUFDckI7SUFDQTVFLFFBQVEsQ0FBQztNQUFFZixRQUFRLEVBQUU7SUFBSyxDQUFDLENBQUM7RUFDOUI7O0VBRUE7RUFDQSxJQUFNNEYsV0FBVyxHQUFHcEwsZUFBZSxhQUFmQSxlQUFlLGdCQUFBMkIsdUJBQUEsR0FBZjNCLGVBQWUsQ0FBRU8sUUFBUSxjQUFBb0IsdUJBQUEsdUJBQXpCQSx1QkFBQSxDQUEyQjJCLFVBQVU7RUFDekQsSUFBTStILFFBQVEsR0FBRzlJLFdBQVcsQ0FBQztJQUFFZSxVQUFVLEVBQUU4SDtFQUFZLENBQUMsQ0FBQztFQUN6RCxJQUFNRSxTQUFTLEdBQUcsQ0FBQ0QsUUFBUSxhQUFSQSxRQUFRLHVCQUFSQSxRQUFRLENBQUVDLFNBQVMsS0FBSyxLQUFLO0VBQ2hELElBQU1DLFVBQVUsR0FBRy9HLGdCQUFnQixJQUFJckIsU0FBUztFQUVoRCxJQUFNcUksUUFBUSxHQUFJSixXQUFXLEtBQUssS0FBTTtFQUN4QyxJQUFNSyxVQUFVLEdBQUdELFFBQVEsR0FBRyxHQUFHLEdBQUcsQ0FBQyxFQUFDO0VBQ3RDLElBQU1FLGNBQWMsR0FBR3RGLFFBQVEsR0FBR3FGLFVBQVU7RUFFNUMsSUFBTUUsS0FBSyxHQUFHLElBQUk7RUFDbEIsSUFBQUMsYUFBQSxHQU9JaFAsWUFBWSxDQUFDO01BQUUrTyxLQUFLLEVBQUxBO0lBQU0sQ0FBQyxDQUFDO0lBQUFFLG1CQUFBLEdBQUFELGFBQUEsQ0FOekI1RixLQUFLO0lBQ0g4RixPQUFPLEdBQUFELG1CQUFBLENBQVBDLE9BQU87SUFBRUMsT0FBTyxHQUFBRixtQkFBQSxDQUFQRSxPQUFPO0lBQUVDLFNBQVMsR0FBQUgsbUJBQUEsQ0FBVEcsU0FBUztJQUFFQyxZQUFZLEdBQUFKLG1CQUFBLENBQVpJLFlBQVk7SUFBQUMscUJBQUEsR0FBQU4sYUFBQSxDQUUzQzFELE9BQU87SUFDTGlFLFVBQVUsR0FBQUQscUJBQUEsQ0FBVkMsVUFBVTtJQUFFQyxZQUFZLEdBQUFGLHFCQUFBLENBQVpFLFlBQVk7SUFBRUMsZUFBZSxHQUFBSCxxQkFBQSxDQUFmRyxlQUFlO0VBSTdDLElBQU1DLFFBQVEsR0FBR3pRLEtBQUssQ0FBQzBRLE9BQU8sQ0FBQztJQUFBLE9BQU87TUFDcENDLFVBQVUsRUFBRSxXQUFXO01BQ3ZCcEcsUUFBUSxLQUFBcEYsTUFBQSxDQUFLeUwsSUFBSSxDQUFDQyxLQUFLLENBQUNoQixjQUFjLEdBQUcsR0FBRyxDQUFDO0lBQy9DLENBQUM7RUFBQSxDQUFDLEVBQUUsQ0FBQ0EsY0FBYyxDQUFDLENBQUM7RUFFckIsSUFBTWlCLFlBQVksR0FBRzlRLEtBQUssQ0FBQzBRLE9BQU8sQ0FBQztJQUFBLE9BQU87TUFDeENDLFVBQVUsRUFBRSxXQUFXO01BQ3ZCcEcsUUFBUSxLQUFBcEYsTUFBQSxDQUFLMEssY0FBYztJQUM3QixDQUFDO0VBQUEsQ0FBQyxFQUFFLENBQUNBLGNBQWMsQ0FBQyxDQUFDO0VBRXJCLElBQU1rQixjQUFjLGdCQUFHL1EsS0FBQSxDQUFBaVAsYUFBQSxDQUFDNU0sS0FBSyxRQUFFbU0sY0FBc0IsQ0FBQztFQUN0RCxJQUFJd0MsbUJBQW1CLEdBQUd2SyxrQkFBa0I7RUFFNUMsSUFBSUEsa0JBQWtCLEtBQUs5SixTQUFTLEVBQUU7SUFBRTtJQUN0Q3FVLG1CQUFtQixHQUFHLENBQUN2RixrQkFBa0I7RUFDM0M7RUFFQSxJQUFNd0YsVUFBVSxHQUFHLENBQUN4RixrQkFBa0I7RUFDdEMsSUFBTXlGLGVBQWUsR0FBRyxDQUFDekYsa0JBQWtCO0VBQzNDLElBQU0wRixlQUFlLEdBQUdoRyxjQUFjLEdBQUd2RSxZQUFZLEdBQUdDLGFBQWE7RUFDckUsSUFBTXVLLDRCQUE0QixHQUFHO0lBQ25DL0ssY0FBYyxFQUFFdUYsZ0JBQWdCLEdBQUd2RixjQUFjLEdBQUcsSUFBSTtJQUN4REMsU0FBUyxFQUFUQSxTQUFTO0lBQ1QrSyxlQUFlLEVBQUUzQixVQUFVO0lBQzNCdUIsVUFBVSxFQUFWQSxVQUFVO0lBQ1ZDLGVBQWUsRUFBZkEsZUFBZTtJQUNmcEssVUFBVSxFQUFWQSxVQUFVO0lBQ1Y7SUFDQXFFLGNBQWMsRUFBZEEsY0FBYztJQUNkbEUsWUFBWSxFQUFFMkUsZ0JBQWdCLEdBQUczRSxZQUFZLEdBQUcsSUFBSTtJQUNwRFUscUJBQXFCLEVBQXJCQSxxQkFBcUI7SUFDckI7SUFDQXdKLGVBQWUsRUFBZkEsZUFBZTtJQUNmaE4sZUFBZSxFQUFmQSxlQUFlO0lBQ2ZrSCxpQkFBaUIsRUFBakJBLGlCQUFpQjtJQUNqQmlCLGVBQWUsRUFBZkEsZUFBZTtJQUNmcEUsZUFBZSxFQUFFb0osZ0JBQWdCO0lBQ2pDQyxjQUFjLEVBQUU5RyxLQUFLLEdBQUduSSxZQUFZLEdBQUdFLFlBQVk7SUFDbkRnUCxjQUFjLEVBQUVoQyxRQUFRO0lBQ3hCbkgsS0FBSyxFQUFFbUcsY0FBYztJQUNyQnJDLHFCQUFxQixFQUFFbEQ7RUFDekIsQ0FBQzs7RUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0UsU0FBU3FJLGdCQUFnQkEsQ0FBQ0csWUFBWSxFQUFFQyxLQUFLLEVBQUFDLEtBQUEsRUFBNEQ7SUFBQSxJQUFBQyxnQkFBQSxHQUFBRCxLQUFBLENBQXhERSxVQUFVO01BQVZBLFVBQVUsR0FBQUQsZ0JBQUEsY0FBRyxJQUFJLEdBQUFBLGdCQUFBO01BQUFFLGtCQUFBLEdBQUFILEtBQUEsQ0FBRUksWUFBWTtNQUFaQSxZQUFZLEdBQUFELGtCQUFBLGNBQUcsSUFBSSxHQUFBQSxrQkFBQTtNQUFBRSxXQUFBLEdBQUFMLEtBQUEsQ0FBRXhILEtBQUs7TUFBTEEsS0FBSyxHQUFBNkgsV0FBQSxjQUFHLElBQUksR0FBQUEsV0FBQTtJQUNuRyxJQUFNQyxtQkFBbUIsR0FBQXhULGFBQUEsS0FBUW9MLGtCQUFrQixDQUFFO0lBRXJELElBQUk2SCxLQUFLLEVBQUU7TUFDVCxJQUFJTyxtQkFBbUIsQ0FBQ3JjLGNBQWMsQ0FBQzZiLFlBQVksQ0FBQyxFQUFFO1FBQ3BELE9BQU9RLG1CQUFtQixDQUFDUixZQUFZLENBQUM7TUFDMUM7SUFDRixDQUFDLE1BQU07TUFDTFEsbUJBQW1CLENBQUNSLFlBQVksQ0FBQyxHQUFHO1FBQUVJLFVBQVUsRUFBVkEsVUFBVTtRQUFFRSxZQUFZLEVBQVpBLFlBQVk7UUFBRTVILEtBQUssRUFBTEE7TUFBTSxDQUFDLEVBQUM7SUFDMUU7O0lBRUEsSUFBTStILG1CQUFtQixHQUFHLENBQUMsQ0FBQ3pjLE1BQU0sQ0FBQ3NGLElBQUksQ0FBQ2tYLG1CQUFtQixDQUFDLENBQUM3WCxNQUFNO0lBRXJFLElBQUkwTyxrQkFBa0IsSUFBSW9KLG1CQUFtQixFQUFFO01BQzdDaEssZUFBZSxJQUFJQSxlQUFlLENBQUNSLFVBQVUsRUFBRSxDQUFDd0ssbUJBQW1CLENBQUM7TUFDcEV4SCxRQUFRLENBQUM7UUFBRTVCLGtCQUFrQixFQUFFb0o7TUFBb0IsQ0FBQyxDQUFDO0lBQ3ZEO0lBRUEsSUFBSSxDQUFDNVEsT0FBTyxDQUFDMlEsbUJBQW1CLEVBQUVwSSxrQkFBa0IsQ0FBQyxFQUFFO01BQ3JEYSxRQUFRLENBQUM7UUFBRWIsa0JBQWtCLEVBQUVvSTtNQUFvQixDQUFDLENBQUM7SUFDdkQ7RUFDRjs7RUFFQTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0VBQ0UsU0FBU0UsY0FBY0EsQ0FBQ0MsUUFBUSxFQUFFQyxNQUFNLEVBQUU7SUFDeEMsSUFBTTFHLElBQUksR0FBR3lHLFFBQVEsR0FBRyxFQUFFO0lBQzFCLElBQU1FLE1BQU0sR0FBRzNHLElBQUksQ0FBQ3ZSLE1BQU07SUFDMUIsSUFBTW1ZLEtBQUssR0FBR0YsTUFBTSxDQUFDRyxTQUFTLENBQUMsVUFBQ0MsS0FBSyxFQUFFQyxHQUFHLEVBQUs7TUFDN0MsSUFBSUEsR0FBRyxHQUFHLENBQUMsRUFBRTtRQUNYLElBQUlELEtBQUssQ0FBQ0UsU0FBUyxDQUFDLENBQUMsRUFBRUwsTUFBTSxDQUFDLEtBQUszRyxJQUFJLEVBQUU7VUFDdkMsSUFBTWlILFFBQVEsR0FBR0gsS0FBSyxDQUFDSCxNQUFNLENBQUM7VUFFOUIsSUFBS00sUUFBUSxHQUFHLEdBQUcsSUFBTUEsUUFBUSxHQUFHLEdBQUksRUFBRTtZQUN4QyxPQUFPLElBQUk7VUFDYjtRQUNGO01BQ0Y7TUFDQSxPQUFPLEtBQUs7SUFDZCxDQUFDLENBQUM7SUFDRixPQUFPTCxLQUFLO0VBQ2Q7RUFFQSxTQUFTTSxXQUFXQSxDQUFBLEVBQUc7SUFBQSxJQUFBQyxxQkFBQTtJQUNyQjtJQUNBLElBQU1DLFFBQVEsR0FBRzVPLGVBQWUsYUFBZkEsZUFBZSxnQkFBQTJPLHFCQUFBLEdBQWYzTyxlQUFlLENBQUVtRCxTQUFTLGNBQUF3TCxxQkFBQSxlQUExQkEscUJBQUEsQ0FBNEIxTyxNQUFNLEdBQUdELGVBQWUsQ0FBQ21ELFNBQVMsQ0FBQ2xELE1BQU0sQ0FBQzRPLFdBQVcsQ0FBQyxDQUFDLEdBQUcsRUFBRTtJQUN6RyxVQUFBN04sTUFBQSxDQUFVbUIsU0FBUyxPQUFBbkIsTUFBQSxDQUFJNE4sUUFBUTtFQUNqQztFQUVBLElBQU1FLFFBQVEsR0FBR0osV0FBVyxDQUFDLENBQUM7RUFDOUIsSUFBTUssR0FBRyxHQUFHM0gsZUFBZSxhQUFmQSxlQUFlLHVCQUFmQSxlQUFlLENBQUUySCxHQUFHOztFQUVoQztFQUNBLElBQUFDLFFBQUEsR0FLSTlTLE9BQU8sQ0FBQztNQUNWNlMsR0FBRyxFQUFIQSxHQUFHO01BQ0gxTCxLQUFLLEVBQUxBLEtBQUs7TUFDTDRMLE9BQU8sRUFBRWpLLFdBQVc7TUFDcEJrSyxNQUFNLEVBQUE1VSxhQUFBLENBQUFBLGFBQUE7UUFDSm9NLEtBQUssRUFBRTtVQUFFQyxNQUFNLEVBQUU7UUFBRTtNQUFDLEdBQ2pCekUsY0FBYyxhQUFkQSxjQUFjLHVCQUFkQSxjQUFjLENBQUVnTixNQUFNO1FBQ3pCQyxnQkFBZ0IsRUFBRSxJQUFJO1FBQ3RCMUcsS0FBSyxFQUFFdkcsY0FBYyxhQUFkQSxjQUFjLHVCQUFkQSxjQUFjLENBQUV1RyxLQUFLO1FBQzVCO1FBQ0EyRyxPQUFPLEVBQUUsRUFBQXhOLFdBQUEsR0FBQWUsVUFBVSxjQUFBZixXQUFBLHVCQUFWQSxXQUFBLENBQVl5TixhQUFhLE9BQUF4TixZQUFBLEdBQUljLFVBQVUsY0FBQWQsWUFBQSx1QkFBVkEsWUFBQSxDQUFZdU4sT0FBTyxLQUFJLEtBQUs7UUFDbEV6TCxNQUFNLEVBQU5BO01BQU0sRUFDUDtNQUNEMkwsTUFBTSxFQUFFeE0sWUFBWTtNQUNwQnlNLEtBQUssRUFBRXJOLGNBQWMsYUFBZEEsY0FBYyxnQkFBQUosb0JBQUEsR0FBZEksY0FBYyxDQUFFc04sSUFBSSxjQUFBMU4sb0JBQUEsdUJBQXBCQSxvQkFBQSxDQUFzQnlOLEtBQUs7TUFDbEM5RyxLQUFLLEVBQUV2RyxjQUFjLGFBQWRBLGNBQWMsdUJBQWRBLGNBQWMsQ0FBRXVHLEtBQUs7TUFDNUJnSCxNQUFNLEVBQUV6SCxxQkFBcUI7TUFDN0I4RyxRQUFRLEVBQVJBLFFBQVE7TUFDUnpILElBQUksRUFBSkE7SUFDRixDQUFDLENBQUM7SUF2Qk9xSSxTQUFTLEdBQUFWLFFBQUEsQ0FBaEJoWCxLQUFLO0lBQ0kyWCxXQUFXLEdBQUFYLFFBQUEsQ0FBcEJZLE9BQU87SUFDUEMsVUFBVSxHQUFBYixRQUFBLENBQVZhLFVBQVU7SUFDVkMsZUFBZSxHQUFBZCxRQUFBLENBQWZjLGVBQWU7RUFzQmpCalUsS0FBSyxDQUFDcU8sU0FBUyxDQUFDLFlBQU07SUFBRTtJQUN0QixJQUFJd0YsU0FBUyxJQUFJQyxXQUFXLElBQUksQ0FBQ3BLLFNBQVMsRUFBRTtNQUFFO01BQzVDekUsT0FBTyxDQUFDZ0osR0FBRyxlQUFlNEYsU0FBUyxDQUFDO01BQ3BDMU0sZUFBZSxJQUFJQSxlQUFlLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLGtCQUFBaEMsTUFBQSxDQUFrQm9LLFdBQVcsT0FBQXBLLE1BQUEsQ0FBSXVDLFVBQVUsT0FBQXZDLE1BQUEsQ0FBSTBPLFNBQVMsR0FBSSxJQUFJLENBQUM7SUFDdkg7RUFDRixDQUFDLEVBQUUsQ0FBQ0EsU0FBUyxFQUFFQyxXQUFXLEVBQUVwSyxTQUFTLENBQUMsQ0FBQztFQUV2QzFKLEtBQUssQ0FBQ3FPLFNBQVMsQ0FBQyxZQUFNO0lBQUU7SUFDdEIsU0FBUzZGLGNBQWNBLENBQUEsRUFBRztNQUN4QmpQLE9BQU8sQ0FBQ2dKLEdBQUcsc0RBQXNELENBQUM7TUFDbEVoRyxjQUFjLENBQUMsVUFBQWtNLGVBQWU7UUFBQSxPQUFJQSxlQUFlLENBQUM1VixNQUFNLENBQUMsVUFBQXVOLE1BQU07VUFBQSxPQUFJQSxNQUFNLEtBQUtKLGNBQWM7UUFBQSxFQUFDO01BQUEsRUFBQztNQUM5RmhCLFFBQVEsQ0FBQztRQUNQaEIsU0FBUyxFQUFFO01BQ2IsQ0FBQyxDQUFDO01BRUYsSUFBTTBLLGtCQUFrQixHQUFHM2UsTUFBTSxDQUFDc0YsSUFBSSxDQUFDOE8sa0JBQWtCLENBQUM7TUFFMUQsSUFBSXVLLGtCQUFrQixhQUFsQkEsa0JBQWtCLGVBQWxCQSxrQkFBa0IsQ0FBRWhhLE1BQU0sRUFBRTtRQUFBLElBQUFpYSxTQUFBLEdBQUF6WCwwQkFBQSxDQUNOd1gsa0JBQWtCO1VBQUFFLEtBQUE7UUFBQTtVQUExQyxLQUFBRCxTQUFBLENBQUE3YyxDQUFBLE1BQUE4YyxLQUFBLEdBQUFELFNBQUEsQ0FBQTFlLENBQUEsSUFBQWtELElBQUEsR0FBNEM7WUFBQSxJQUFqQzBiLFNBQVMsR0FBQUQsS0FBQSxDQUFBdmUsS0FBQTtZQUNsQixJQUFPZ2MsWUFBWSxHQUFJbEksa0JBQWtCLENBQUMwSyxTQUFTLENBQUMsQ0FBN0N4QyxZQUFZO1lBQ25CQSxZQUFZLElBQUlBLFlBQVksQ0FBQyxDQUFDO1VBQ2hDO1FBQUMsU0FBQXJWLEdBQUE7VUFBQTJYLFNBQUEsQ0FBQS9lLENBQUEsQ0FBQW9ILEdBQUE7UUFBQTtVQUFBMlgsU0FBQSxDQUFBOWMsQ0FBQTtRQUFBO01BQ0g7TUFFQTBOLE9BQU8sQ0FBQy9JLElBQUksQ0FBQywyQ0FBMkMsQ0FBQztNQUN6RHdPLFFBQVEsQ0FBQztRQUNQaEIsU0FBUyxFQUFFLEtBQUs7UUFDaEJWLGFBQWEsRUFBRSxJQUFJO1FBQ25CSyxvQkFBb0IsRUFBRSxJQUFJO1FBQzFCRixXQUFXLEVBQUUsSUFBSTtRQUNqQkYsR0FBRyxFQUFFZ0Q7TUFDUCxDQUFDLENBQUM7TUFDRjlKLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQ3pKLElBQUksQ0FBQyxZQUFNO1FBQ3BCdVAsY0FBYyxDQUFDLFVBQUFrTSxlQUFlO1VBQUEsT0FBSUEsZUFBZSxDQUFDNVYsTUFBTSxDQUFDLFVBQUF1TixNQUFNO1lBQUEsT0FBSUEsTUFBTSxLQUFLSixjQUFjO1VBQUEsRUFBQztRQUFBLEVBQUM7UUFDOUZ2SCxlQUFlLGFBQWZBLGVBQWUsZUFBZkEsZUFBZSxDQUFFbUosY0FBYyxDQUFDNEYsR0FBRyxFQUFFakgsa0JBQWtCLENBQUM7TUFDMUQsQ0FBQyxDQUFDO01BQ0YsT0FBTyxJQUFJO0lBQ2I7SUFFQSxJQUFNdUksU0FBUztNQUFBLElBQUFDLEtBQUEsR0FBQXJZLGlCQUFBLGVBQUEvRyxtQkFBQSxHQUFBb0YsSUFBQSxDQUFHLFNBQUFpYSxRQUFBO1FBQUEsSUFBQUMsY0FBQSxFQUFBQyxPQUFBLEVBQUF6WSxLQUFBLEVBQUEwWSxPQUFBLEVBQUFDLFlBQUEsRUFBQUMsT0FBQSxFQUFBQyxjQUFBLEVBQUFDLGVBQUEsRUFBQUMsUUFBQSxFQUFBQyxTQUFBO1FBQUEsT0FBQTlmLG1CQUFBLEdBQUF1QixJQUFBLFVBQUF3ZSxTQUFBQyxRQUFBO1VBQUEsa0JBQUFBLFFBQUEsQ0FBQW5hLElBQUEsR0FBQW1hLFFBQUEsQ0FBQTliLElBQUE7WUFBQTtjQUFjO2NBQzlCMEwsT0FBTyxDQUFDL0ksSUFBSSxzQ0FBQWlKLE1BQUEsQ0FBc0MrTixHQUFHLENBQUUsQ0FBQztjQUNwRHlCLGNBQWMsR0FBR1gsVUFBVTtjQUMvQixJQUFJNUssYUFBYSxFQUFFO2dCQUNqQnVMLGNBQWMsR0FBR1YsZUFBZSxFQUFDO2NBQ25DO2NBQUNvQixRQUFBLENBQUE5YixJQUFBO2NBQUEsT0FDbUJvYixjQUFjLENBQUMxSSxrQkFBa0IsQ0FBQztZQUFBO2NBQWxEMkksT0FBTyxHQUFBUyxRQUFBLENBQUFwYyxJQUFBO2NBQTJDO2NBQ2xEa0QsS0FBSyxHQUFHeVksT0FBTyxHQUFHLElBQUksR0FBRyxpQ0FBaUM7Y0FBQSxJQUV6REEsT0FBTztnQkFBQVMsUUFBQSxDQUFBOWIsSUFBQTtnQkFBQTtjQUFBO2NBQUk7Y0FDZDBMLE9BQU8sQ0FBQzlJLEtBQUssQ0FBQyxrRUFBa0UsQ0FBQztjQUFBa1osUUFBQSxDQUFBOWIsSUFBQTtjQUFBLE9BQzNFNEksS0FBSyxDQUFDLEdBQUcsQ0FBQztZQUFBO2NBQUFrVCxRQUFBLENBQUE5YixJQUFBO2NBQUEsT0FHTXFJLGNBQWMsQ0FBQ2tHLE1BQU0sRUFBRWhCLFVBQVUsRUFBRTNDLGVBQWUsYUFBZkEsZUFBZSx1QkFBZkEsZUFBZSxDQUFFTyxRQUFRLEVBQUVQLGVBQWUsYUFBZkEsZUFBZSx1QkFBZkEsZUFBZSxDQUFFbUQsU0FBUyxDQUFDO1lBQUE7Y0FBekd1TixPQUFPLEdBQUFRLFFBQUEsQ0FBQXBjLElBQUE7Y0FDYmtELEtBQUssR0FBRzBZLE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFMVksS0FBSztjQUNsQjJZLFlBQVksR0FBRzNMLFdBQVc7Y0FDMUI0TCxPQUFPLEdBQUcsSUFBSTtjQUNaQyxjQUFjLEdBQUdILE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFelAsU0FBUztjQUNuQzZQLGVBQWUsR0FBRzVMLG9CQUFvQixhQUFwQkEsb0JBQW9CLHVCQUFwQkEsb0JBQW9CLE9BQUs7Y0FDN0M2TCxRQUFRLEdBQUdGLGNBQWMsS0FBS0MsZUFBZSxFQUFDO2NBQUEsSUFFN0M5WSxLQUFLO2dCQUFBa1osUUFBQSxDQUFBOWIsSUFBQTtnQkFBQTtjQUFBO2NBQUEsS0FDSjJiLFFBQVE7Z0JBQUFHLFFBQUEsQ0FBQTliLElBQUE7Z0JBQUE7Y0FBQTtjQUFJO2NBQ2QwTCxPQUFPLENBQUNnSixHQUFHLENBQUMsMkVBQTJFLENBQUM7Y0FDeEYyRyxPQUFPLEdBQUcsSUFBSTtjQUFBUyxRQUFBLENBQUE5YixJQUFBO2NBQUE7WUFBQTtjQUFBLEtBRVY2UCxhQUFhO2dCQUFBaU0sUUFBQSxDQUFBOWIsSUFBQTtnQkFBQTtjQUFBO2NBQUE4YixRQUFBLENBQUE5YixJQUFBO2NBQUEsT0FDVDRJLEtBQUssQ0FBQyxHQUFHLENBQUM7WUFBQTtjQUFDO2NBQ2pCO2NBQ01nVCxTQUFTLEdBQUd6UyxRQUFRLENBQUMyRyxvQkFBb0IsYUFBcEJBLG9CQUFvQix1QkFBcEJBLG9CQUFvQixDQUFFekUsUUFBUSxFQUFFb1EsY0FBYyxFQUFFQyxlQUFlLEVBQUUsS0FBSyxDQUFDO2NBQ2xHSCxZQUFZLEdBQUdLLFNBQVM7Y0FDeEJKLE9BQU8sR0FBR0YsT0FBTyxhQUFQQSxPQUFPLHVCQUFQQSxPQUFPLENBQUUzQixHQUFHO1lBQUE7Y0FBQW1DLFFBQUEsQ0FBQTliLElBQUE7Y0FBQSxPQUdSb2IsY0FBYyxDQUFDMUksa0JBQWtCLEVBQUU2SSxZQUFZLEVBQUVDLE9BQU8sQ0FBQztZQUFBO2NBQXpFSCxPQUFPLEdBQUFTLFFBQUEsQ0FBQXBjLElBQUE7Y0FBbUU7Y0FDMUUsSUFBSSxDQUFDMmIsT0FBTyxFQUFFO2dCQUNaelksS0FBSyxHQUFHLG1EQUFtRDtjQUM3RCxDQUFDLE1BQU07Z0JBQ0w4SSxPQUFPLENBQUNnSixHQUFHLENBQUMsMERBQTBELENBQUM7Y0FDekU7WUFBQztjQUFBLE1BS0gsQ0FBQzlSLEtBQUssSUFBSXlZLE9BQU87Z0JBQUFTLFFBQUEsQ0FBQTliLElBQUE7Z0JBQUE7Y0FBQTtjQUFBLE9BQUE4YixRQUFBLENBQUFqYyxNQUFBLFdBQ1o4YSxjQUFjLENBQUMsQ0FBQztZQUFBO2NBR3pCalAsT0FBTyxDQUFDOUksS0FBSywyQkFBQWdKLE1BQUEsQ0FBMkJoSixLQUFLLElBQUksb0JBQW9CLENBQUUsQ0FBQztjQUN4RThMLGNBQWMsQ0FBQyxVQUFBa00sZUFBZTtnQkFBQSxPQUFJQSxlQUFlLENBQUM1VixNQUFNLENBQUMsVUFBQXVOLE1BQU07a0JBQUEsT0FBSUEsTUFBTSxLQUFLSixjQUFjO2dCQUFBLEVBQUM7Y0FBQSxFQUFDO2NBQzlGaEIsUUFBUSxDQUFDO2dCQUFDaEIsU0FBUyxFQUFFO2NBQUssQ0FBQyxDQUFDO2NBQUEsT0FBQTJMLFFBQUEsQ0FBQWpjLE1BQUEsV0FDckIsS0FBSztZQUFBO1lBQUE7Y0FBQSxPQUFBaWMsUUFBQSxDQUFBaGEsSUFBQTtVQUFBO1FBQUEsR0FBQXFaLE9BQUE7TUFBQSxDQUNiO01BQUEsZ0JBckRLRixTQUFTQSxDQUFBO1FBQUEsT0FBQUMsS0FBQSxDQUFBaFksS0FBQSxPQUFBRCxTQUFBO01BQUE7SUFBQSxHQXFEZDtJQUVELElBQUlrTixTQUFTLEVBQUU7TUFDYixJQUFJLENBQUNkLGVBQWUsRUFBRTtRQUNwQjtNQUFBLENBQ0QsTUFBTSxJQUFJLENBQUNzSyxHQUFHLEVBQUU7UUFDZjtNQUFBLENBQ0QsTUFBTTtRQUNMO1FBQ0FqTCxjQUFjLENBQUMsVUFBQWtNLGVBQWU7VUFBQSxVQUFBaFAsTUFBQSxDQUFBdEgsa0JBQUEsQ0FBUXNXLGVBQWUsSUFBRXpJLGNBQWM7UUFBQSxDQUFDLENBQUM7UUFDdkU4SSxTQUFTLENBQUMsQ0FBQztNQUNiO0lBQ0Y7RUFDRixDQUFDLEVBQUUsQ0FBQzlLLFNBQVMsRUFBRWQsZUFBZSxFQUFFc0ssR0FBRyxDQUFDLENBQUM7O0VBRXJDO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0UsU0FBU29DLDhCQUE4QkEsQ0FBQ2xRLFNBQWlCLEVBQUU2RCxHQUEyQixFQUFFc00sbUJBQXFDLEVBQUVoUCxPQUFlLEVBQUU7SUFDOUksSUFBSWlQLE9BQU87SUFDWCxJQUFNQyxhQUFhLEdBQUdyUSxTQUFTLGFBQVRBLFNBQVMsdUJBQVRBLFNBQVMsQ0FBRXNRLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDOUMsSUFBTUMsWUFBWSxHQUFHeEQsY0FBYyxDQUFDbEosR0FBRyxhQUFIQSxHQUFHLHVCQUFIQSxHQUFHLENBQUUzRixPQUFPLEVBQUVtUyxhQUFhLENBQUM7SUFFaEUsSUFBSUUsWUFBWSxJQUFJLENBQUMsRUFBRTtNQUNyQixJQUFNQyxjQUFjLEdBQUdILGFBQWEsQ0FBQ0UsWUFBWSxDQUFDO01BQ2xELElBQUlFLFdBQVcsR0FBR0QsY0FBYyxDQUFDRixLQUFLLENBQUMsTUFBTSxDQUFDO01BQzlDLElBQU1JLFVBQVUsR0FBRzNELGNBQWMsQ0FBQ2xKLEdBQUcsYUFBSEEsR0FBRyx1QkFBSEEsR0FBRyxDQUFFMUYsS0FBSyxFQUFFc1MsV0FBVyxDQUFDO01BQzFELElBQU1FLFdBQVcsR0FBRyxDQUFBOU0sR0FBRyxhQUFIQSxHQUFHLHVCQUFIQSxHQUFHLENBQUUxRixLQUFLLE1BQUssT0FBTztNQUUxQyxJQUFJd1MsV0FBVyxJQUFJRCxVQUFVLElBQUksQ0FBQyxFQUFFO1FBQ2xDLElBQU1FLFlBQVksR0FBRzNVLHlCQUF5QixDQUFDNFUsc0JBQXNCLENBQUNWLG1CQUFtQixDQUFDO1FBQzFGdFEsT0FBTyxDQUFDZ0osR0FBRyw2Q0FBQTlJLE1BQUEsQ0FBNkNvQixPQUFPLGNBQUFwQixNQUFBLENBQVc4RCxHQUFHLGFBQUhBLEdBQUcsdUJBQUhBLEdBQUcsQ0FBRTFGLEtBQUssV0FBQTRCLE1BQUEsQ0FBUTZRLFlBQVksQ0FBQ3JELFNBQVMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUUsQ0FBQztRQUM3SCxJQUFJb0QsV0FBVyxFQUFFO1VBQUU7VUFDakIsSUFBTUcsUUFBUSxHQUFHTCxXQUFXLENBQUMsQ0FBQyxDQUFDO1VBQy9CLElBQU1NLFNBQVMsR0FBR0QsUUFBUSxDQUFDRSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUM7VUFDekNQLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBR0ssUUFBUSxDQUFDdkQsU0FBUyxDQUFDLENBQUMsRUFBRXdELFNBQVMsR0FBRyxDQUFDLENBQUMsR0FBR0gsWUFBWTtRQUN0RSxDQUFDLE1BQU07VUFDTCxJQUFNRSxTQUFRLEdBQUdMLFdBQVcsQ0FBQ0MsVUFBVSxDQUFDO1VBQ3hDLElBQU1PLFdBQVcsR0FBRyxDQUFDLENBQUFwTixHQUFHLGFBQUhBLEdBQUcsdUJBQUhBLEdBQUcsQ0FBRTFGLEtBQUssSUFBRyxFQUFFLEVBQUVuSixNQUFNLEVBQUM7VUFDN0N5YixXQUFXLENBQUNDLFVBQVUsQ0FBQyxHQUFHSSxTQUFRLENBQUN2RCxTQUFTLENBQUMsQ0FBQyxFQUFFMEQsV0FBVyxHQUFHLENBQUMsQ0FBQyxHQUFHTCxZQUFZO1FBQ2pGO1FBQ0EsSUFBTU0sVUFBVSxHQUFHVCxXQUFXLENBQUNVLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0NkLGFBQWEsQ0FBQ0UsWUFBWSxDQUFDLEdBQUdXLFVBQVU7UUFDeENkLE9BQU8sR0FBR0MsYUFBYSxDQUFDYyxJQUFJLENBQUMsTUFBTSxDQUFDO01BQ3RDO0lBQ0Y7SUFDQSxPQUFPZixPQUFPO0VBQ2hCO0VBRUF4VixLQUFLLENBQUNxTyxTQUFTLENBQUMsWUFBTTtJQUFFO0lBQUEsU0FDUG1JLGVBQWVBLENBQUE7TUFBQSxPQUFBQyxnQkFBQSxDQUFBaGEsS0FBQSxPQUFBRCxTQUFBO0lBQUE7SUFBQSxTQUFBaWEsaUJBQUE7TUFBQUEsZ0JBQUEsR0FBQXJhLGlCQUFBLGVBQUEvRyxtQkFBQSxHQUFBb0YsSUFBQSxDQUE5QixTQUFBaWMsU0FBQTtRQUFBLElBQUFDLGdCQUFBLEVBQUEvQyxNQUFBLEVBQUFRLGtCQUFBLEVBQUF3QyxnQkFBQSxFQUFBQyxZQUFBLEVBQUFDLFNBQUEsRUFBQUMsUUFBQSxFQUFBQyxVQUFBLEVBQUFDLE1BQUEsRUFBQTFDLFNBQUEsRUFBQTJDLHFCQUFBLEVBQUFyRixVQUFBLEVBQUFzRixNQUFBLEVBQUEzQixPQUFBLEVBQUE0QixXQUFBLEVBQUFDLEtBQUEsRUFBQTlCLG1CQUFBLEVBQUErQixjQUFBLEVBQUFDLHFCQUFBLEVBQUF6QyxZQUFBLEVBQUEwQyxXQUFBLEVBQUFDLFVBQUEsRUFBQUMsTUFBQSxFQUFBQyxVQUFBLEVBQUFDLFNBQUEsRUFBQUMsc0JBQUEsRUFBQUMsWUFBQSxFQUFBQyxPQUFBLEVBQUFDLFFBQUEsRUFBQUMsWUFBQSxFQUFBQyxZQUFBLEVBQUFDLEtBQUEsRUFBQUMsb0JBQUEsRUFBQUMsbUJBQUEsRUFBQUMscUJBQUEsRUFBQUMsa0JBQUEsRUFBQUMsdUJBQUEsRUFBQTVULFFBQUEsRUFBQXVRLFNBQUE7UUFBQSxPQUFBOWYsbUJBQUEsR0FBQXVCLElBQUEsVUFBQTZoQixVQUFBQyxTQUFBO1VBQUEsa0JBQUFBLFNBQUEsQ0FBQXhkLElBQUEsR0FBQXdkLFNBQUEsQ0FBQW5mLElBQUE7WUFBQTtjQUFBLEtBQ00yUCxXQUFXO2dCQUFBd1AsU0FBQSxDQUFBbmYsSUFBQTtnQkFBQTtjQUFBO2NBQ1RvZCxnQkFBZ0IsR0FBRyxDQUFDekssZ0JBQWdCO2NBRXhDLElBQUksQ0FBQ3lLLGdCQUFnQixFQUFFO2dCQUFFO2dCQUN2QixJQUFJeEsscUJBQXFCLEtBQUtGLGtCQUFrQixFQUFFO2tCQUNoRGhILE9BQU8sQ0FBQ0MsSUFBSSxtRUFBQUMsTUFBQSxDQUFtRThHLGtCQUFrQiwyQkFBQTlHLE1BQUEsQ0FBd0JnSCxxQkFBcUIsQ0FBRSxDQUFDO2tCQUNqSndLLGdCQUFnQixHQUFHLElBQUk7Z0JBQ3pCLENBQUMsTUFBTTtrQkFDTDFSLE9BQU8sQ0FBQ2dKLEdBQUcsb0RBQUE5SSxNQUFBLENBQW9EZ0gscUJBQXFCLENBQUUsQ0FBQztrQkFDdkZ6QixRQUFRLENBQUM7b0JBQUU5QixlQUFlLEVBQUU7a0JBQUssQ0FBQyxDQUFDO2dCQUNyQztjQUNGO2NBQUMsS0FFRytOLGdCQUFnQjtnQkFBQStCLFNBQUEsQ0FBQW5mLElBQUE7Z0JBQUE7Y0FBQTtjQUFJO2NBQ3RCMEwsT0FBTyxDQUFDZ0osR0FBRyw0Q0FBNEMsQ0FBQztjQUN4RHZELFFBQVEsQ0FBQztnQkFDUDlCLGVBQWUsRUFBRSxLQUFLO2dCQUN0QkksYUFBYSxFQUFFLEtBQUs7Z0JBQ3BCa0ssR0FBRyxFQUFFO2NBQ1AsQ0FBQyxDQUFDLEVBQUM7Y0FBQXdGLFNBQUEsQ0FBQW5mLElBQUE7Y0FBQSxPQUVrQitTLGVBQWUsQ0FBQyxDQUFDO1lBQUE7Y0FBaENzSCxNQUFNLEdBQUE4RSxTQUFBLENBQUF6ZixJQUFBO2NBQUEsS0FFUjJhLE1BQU07Z0JBQUE4RSxTQUFBLENBQUFuZixJQUFBO2dCQUFBO2NBQUE7Y0FDUjBMLE9BQU8sQ0FBQ2dKLEdBQUcsMkNBQTJDLENBQUM7Y0FDdkR2RCxRQUFRLENBQUM7Z0JBQ1A5QixlQUFlLEVBQUUsSUFBSTtnQkFDckJJLGFBQWEsRUFBRSxJQUFJO2dCQUNuQkMsR0FBRyxFQUFFMks7Y0FDUCxDQUFDLENBQUM7Y0FBQThFLFNBQUEsQ0FBQW5mLElBQUE7Y0FBQTtZQUFBO2NBRUYwTCxPQUFPLENBQUM5SSxLQUFLLENBQUMsbURBQW1ELENBQUM7Y0FDbEVnTCxlQUFlLElBQUlBLGVBQWUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksZ0NBQUFoQyxNQUFBLENBQWdDb0ssV0FBVyxPQUFBcEssTUFBQSxDQUFJdUMsVUFBVSxHQUFJLElBQUksQ0FBQztjQUN0SGdELFFBQVEsQ0FBQztnQkFBRXhCLFdBQVcsRUFBRTtjQUFNLENBQUMsQ0FBQztjQUFBLE9BQUF3UCxTQUFBLENBQUF0ZixNQUFBO1lBQUE7Y0FLcEM2TCxPQUFPLENBQUNnSixHQUFHLDZDQUE2QyxDQUFDO2NBQ25EbUcsa0JBQWtCLEdBQUczZSxNQUFNLENBQUNzRixJQUFJLENBQUM4TyxrQkFBa0IsQ0FBQztjQUFBLE1BRXREdUssa0JBQWtCLGFBQWxCQSxrQkFBa0IsZUFBbEJBLGtCQUFrQixDQUFFaGEsTUFBTTtnQkFBQXNlLFNBQUEsQ0FBQW5mLElBQUE7Z0JBQUE7Y0FBQTtjQUN4QnFkLGdCQUFnQixHQUFHMVMsY0FBYyxDQUFDQyxlQUFlLEVBQUVDLE1BQU0sQ0FBQyxFQUFDO2NBQzNEeVMsWUFBWSxHQUFHRCxnQkFBZ0IsRUFBQztjQUNoQ0UsU0FBUyxHQUFHLEtBQUs7Y0FBQSxLQUVqQkYsZ0JBQWdCO2dCQUFBOEIsU0FBQSxDQUFBbmYsSUFBQTtnQkFBQTtjQUFBO2NBQ2RnTixRQUFPLEdBQUcsQ0FBQztjQUFBeVEsVUFBQSxHQUFBcGEsMEJBQUEsQ0FFU3dYLGtCQUFrQjtjQUFBc0UsU0FBQSxDQUFBeGQsSUFBQTtjQUFBOGIsVUFBQSxDQUFBeGYsQ0FBQTtZQUFBO2NBQUEsS0FBQXlmLE1BQUEsR0FBQUQsVUFBQSxDQUFBcmhCLENBQUEsSUFBQWtELElBQUE7Z0JBQUE2ZixTQUFBLENBQUFuZixJQUFBO2dCQUFBO2NBQUE7Y0FBL0JnYixTQUFTLEdBQUEwQyxNQUFBLENBQUFsaEIsS0FBQTtjQUNsQndRLFFBQU8sR0FBR29TLFFBQVEsQ0FBQ3BFLFNBQVMsQ0FBQztjQUFBMkMscUJBQUEsR0FDQ3JOLGtCQUFrQixDQUFDdEQsUUFBTyxDQUFDLEVBQWpEc0wsVUFBVSxHQUFBcUYscUJBQUEsQ0FBVnJGLFVBQVUsRUFBRTFILE1BQUssR0FBQStNLHFCQUFBLENBQUwvTSxLQUFLO2NBQUEsS0FFckIwSCxVQUFVO2dCQUFBNkcsU0FBQSxDQUFBbmYsSUFBQTtnQkFBQTtjQUFBO2NBQ1JpYyxPQUFPO2NBQUE0QixXQUFBLEdBSVB2RixVQUFVLENBQUMxSCxNQUFLLENBQUMsRUFGbkJsQixLQUFHLEdBQUFtTyxXQUFBLENBQUhuTyxHQUFHLEVBQ0hzTSxtQkFBbUIsR0FBQTZCLFdBQUEsQ0FBbkI3QixtQkFBbUI7Y0FHckIsSUFBSUEsbUJBQW1CLElBQUlzQixZQUFZLEVBQUU7Z0JBQUU7Z0JBQ3pDckIsT0FBTyxHQUFHRiw4QkFBOEIsQ0FBQ3VCLFlBQVksRUFBRTVOLEtBQUcsRUFBRXNNLG1CQUFtQixFQUFFaFAsUUFBTyxDQUFDO2NBQzNGO2NBQUMsS0FFR2lQLE9BQU87Z0JBQUFrRCxTQUFBLENBQUFuZixJQUFBO2dCQUFBO2NBQUE7Y0FDVHNkLFlBQVksR0FBR3JCLE9BQU87Y0FBQWtELFNBQUEsQ0FBQW5mLElBQUE7Y0FBQTtZQUFBO2NBRXRCdWQsU0FBUyxHQUFHLElBQUk7Y0FBQSxPQUFBNEIsU0FBQSxDQUFBdGYsTUFBQTtZQUFBO2NBQUFzZixTQUFBLENBQUFuZixJQUFBO2NBQUE7WUFBQTtjQUFBbWYsU0FBQSxDQUFBbmYsSUFBQTtjQUFBO1lBQUE7Y0FBQW1mLFNBQUEsQ0FBQXhkLElBQUE7Y0FBQXdkLFNBQUEsQ0FBQUUsRUFBQSxHQUFBRixTQUFBO2NBQUExQixVQUFBLENBQUExaEIsQ0FBQSxDQUFBb2pCLFNBQUEsQ0FBQUUsRUFBQTtZQUFBO2NBQUFGLFNBQUEsQ0FBQXhkLElBQUE7Y0FBQThiLFVBQUEsQ0FBQXpmLENBQUE7Y0FBQSxPQUFBbWhCLFNBQUEsQ0FBQWpkLE1BQUE7WUFBQTtjQU9wQjJOLGNBQWEsR0FBRyxLQUFLLEVBQUM7Y0FDdEJtTyxxQkFBcUIsR0FBRyxJQUFJO2NBQzVCekMsWUFBWSxHQUFHK0IsWUFBWTtjQUFBLEtBRTNCQyxTQUFTO2dCQUFBNEIsU0FBQSxDQUFBbmYsSUFBQTtnQkFBQTtjQUFBO2NBQUk7Y0FDZjBMLE9BQU8sQ0FBQ2dKLEdBQUcsdUJBQUE5SSxNQUFBLENBQXVCb0IsT0FBTyxnRUFBNkQsQ0FBQztjQUFBa1IsVUFBQSxHQUFBN2EsMEJBQUEsQ0FHL0V3WCxrQkFBa0I7Y0FBQTtnQkFBMUMsS0FBQXFELFVBQUEsQ0FBQWpnQixDQUFBLE1BQUFrZ0IsTUFBQSxHQUFBRCxVQUFBLENBQUE5aEIsQ0FBQSxJQUFBa0QsSUFBQSxHQUE0QztrQkFBakMwYixVQUFTLEdBQUFtRCxNQUFBLENBQUEzaEIsS0FBQTtrQkFDWndRLFNBQU8sR0FBR29TLFFBQVEsQ0FBQ3BFLFVBQVMsQ0FBQztrQkFBQXNELHNCQUFBLEdBQ0xoTyxrQkFBa0IsQ0FBQ3RELFNBQU8sQ0FBQyxFQUFqRHNMLFlBQVUsR0FBQWdHLHNCQUFBLENBQVZoRyxVQUFVLEVBQUUxSCxPQUFLLEdBQUEwTixzQkFBQSxDQUFMMU4sS0FBSztrQkFFekIsSUFBSTBILFlBQVUsRUFBRTtvQkFDVjJELFFBQU87b0JBQUF5QyxZQUFBLEdBS1BwRyxZQUFVLENBQUMxSCxPQUFLLENBQUMsRUFIbkIrTixZQUFZLEdBQUFELFlBQUEsQ0FBWkMsWUFBWSxFQUNaalAsS0FBRyxHQUFBZ1AsWUFBQSxDQUFIaFAsR0FBRyxFQUNIc00sb0JBQW1CLEdBQUEwQyxZQUFBLENBQW5CMUMsbUJBQW1CO29CQUdyQixJQUFJQSxvQkFBbUIsSUFBSSxDQUFDQyxRQUFPLEVBQUU7c0JBQy9CNkMsbUJBQW1CLEdBQUcsSUFBSTtzQkFFOUIsSUFBSXBQLEtBQUcsRUFBRTt3QkFDUCxJQUFJaVAsWUFBWSxFQUFFOzBCQUFBSSxxQkFBQSxHQUNlbFgsZ0JBQWdCLENBQUN5WCw2QkFBNkIsQ0FBQ3RELG9CQUFtQixFQUFFMkMsWUFBWSxDQUFDLEVBQXhHSyxrQkFBa0IsR0FBQUQscUJBQUEsQ0FBbEJDLGtCQUFrQjswQkFDMUJGLG1CQUFtQixHQUFHRSxrQkFBa0I7d0JBQzFDLENBQUMsTUFBTTswQkFDTEYsbUJBQW1CLEdBQUc5QyxvQkFBbUI7d0JBQzNDO3dCQUNBaUMsV0FBVyxHQUFHYSxtQkFBbUIsS0FBSWxVLGVBQWUsYUFBZkEsZUFBZSx1QkFBZkEsZUFBZSxDQUFFMlUsV0FBVyxDQUFDN1AsS0FBRyxDQUFDM0YsT0FBTyxFQUFFMkYsS0FBRyxDQUFDMUYsS0FBSyxFQUFFOzBCQUFDRSxZQUFZLEVBQUU0VTt3QkFBbUIsQ0FBQyxDQUFDO3NCQUNoSTtvQkFDRjtrQkFDRjtnQkFDRjtjQUFDLFNBQUEzYixHQUFBO2dCQUFBK2EsVUFBQSxDQUFBbmlCLENBQUEsQ0FBQW9ILEdBQUE7Y0FBQTtnQkFBQSthLFVBQUEsQ0FBQWxnQixDQUFBO2NBQUE7Y0FFRHVkLFlBQVksR0FBRzFVLE1BQU0sQ0FBQzJZLE1BQU0sQ0FBQ3ZCLFdBQVcsRUFBRTtnQkFBRXdCLGNBQWMsRUFBRTtjQUFLLENBQUMsQ0FBQztjQUFBTixTQUFBLENBQUFuZixJQUFBO2NBQUE7WUFBQTtjQUM1RDtjQUNEcUwsUUFBUSxHQUFHVCxlQUFlLGFBQWZBLGVBQWUsZ0JBQUFxVSx1QkFBQSxHQUFmclUsZUFBZSxDQUFFTSxhQUFhLGNBQUErVCx1QkFBQSxnQkFBQUEsdUJBQUEsR0FBOUJBLHVCQUFBLENBQWdDOVQsUUFBUSxjQUFBOFQsdUJBQUEsdUJBQXhDQSx1QkFBQSxDQUEwQ2hlLElBQUksRUFBQztjQUFBLE1BQzVEb0ssUUFBUSxJQUFJaVMsWUFBWSxJQUFJRCxnQkFBZ0I7Z0JBQUE4QixTQUFBLENBQUFuZixJQUFBO2dCQUFBO2NBQUE7Y0FBQSxNQUMxQ3FkLGdCQUFnQixLQUFLQyxZQUFZO2dCQUFBNkIsU0FBQSxDQUFBbmYsSUFBQTtnQkFBQTtjQUFBO2NBQUk7Y0FDdkMwTCxPQUFPLENBQUNDLElBQUksNERBQTRELENBQUM7Y0FDekV3RixRQUFRLENBQUM7Z0JBQUV4QixXQUFXLEVBQUU7Y0FBTSxDQUFDLENBQUM7Y0FBQSxPQUFBd1AsU0FBQSxDQUFBdGYsTUFBQTtZQUFBO2NBRzVCK2IsU0FBUyxHQUFHelMsUUFBUSxDQUFDa0MsUUFBUSxFQUFFZ1MsZ0JBQWdCLEVBQUVDLFlBQVksRUFBRSxLQUFLLENBQUM7Y0FDM0V6TixjQUFhLEdBQUcsSUFBSTtjQUNwQjBMLFlBQVksR0FBR0ssU0FBUyxFQUFDO2NBQ3pCb0MscUJBQXFCLEdBQUc7Z0JBQUc7Z0JBQ3pCM1MsUUFBUSxFQUFSQSxRQUFRO2dCQUNScVUsT0FBTyxFQUFFckMsZ0JBQWdCO2dCQUN6QixPQUFLQztjQUNQLENBQUM7WUFBQTtjQUlMLElBQUlBLFlBQVksRUFBRTtnQkFDaEI1UixPQUFPLENBQUNnSixHQUFHLDRDQUFBOUksTUFBQSxDQUE0QzBSLFlBQVksQ0FBQ2xFLFNBQVMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLFFBQUssQ0FBQztnQkFDM0YxSyxjQUFjLENBQUMsVUFBQWtNLGVBQWU7a0JBQUEsVUFBQWhQLE1BQUEsQ0FBQXRILGtCQUFBLENBQVFzVyxlQUFlLElBQUV6SSxjQUFjO2dCQUFBLENBQUMsQ0FBQztnQkFDdkVoQixRQUFRLENBQUM7a0JBQ1B2QixXQUFXLEVBQUUyTCxZQUFZO2tCQUN6QjVMLFdBQVcsRUFBRSxLQUFLO2tCQUNsQkUsYUFBYSxFQUFiQSxjQUFhO2tCQUNiQyxvQkFBb0IsRUFBRWtPLHFCQUFxQjtrQkFDM0M3TixTQUFTLEVBQUU7Z0JBQ2IsQ0FBQyxDQUFDO2NBQ0osQ0FBQyxNQUFNO2dCQUNMekUsT0FBTyxDQUFDOUksS0FBSyxrRkFBQWdKLE1BQUEsQ0FBa0ZvSyxXQUFXLE9BQUFwSyxNQUFBLENBQUl1QyxVQUFVLENBQUUsQ0FBQztnQkFDM0hQLGVBQWUsSUFBSUEsZUFBZSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSw0Q0FBQWhDLE1BQUEsQ0FBNENvSyxXQUFXLE9BQUFwSyxNQUFBLENBQUl1QyxVQUFVLEdBQUksSUFBSSxDQUFDO2dCQUNsSWdELFFBQVEsQ0FBQztrQkFBRXhCLFdBQVcsRUFBRTtnQkFBTSxDQUFDLENBQUM7Y0FDbEM7WUFBQztZQUFBO2NBQUEsT0FBQXdQLFNBQUEsQ0FBQXJkLElBQUE7VUFBQTtRQUFBLEdBQUFxYixRQUFBO01BQUEsQ0FHTjtNQUFBLE9BQUFELGdCQUFBLENBQUFoYSxLQUFBLE9BQUFELFNBQUE7SUFBQTtJQUVEZ2EsZUFBZSxDQUFDLENBQUM7RUFDbkIsQ0FBQyxFQUFFLENBQUN0TixXQUFXLENBQUMsQ0FBQzs7RUFFakI7RUFDQSxJQUFBZ1EsS0FBQSxHQUFvQnhKLFVBQVUsSUFBSSxDQUFDLENBQUM7SUFBNUJwTSxPQUFPLEdBQUE0VixLQUFBLENBQVA1VixPQUFPO0VBRWZ0RCxLQUFLLENBQUNxTyxTQUFTLENBQUMsWUFBTTtJQUNwQixJQUFNOEssYUFBYSxHQUFHaFYsZUFBZSxhQUFmQSxlQUFlLHVCQUFmQSxlQUFlLENBQUU0RixZQUFZO0lBQ25ELElBQUlxUCxhQUFhLEdBQUcsSUFBSTdQLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLElBQUk4UCxnQkFBZ0IsR0FBRyxLQUFLO0lBQzVCLElBQU1DLElBQUksR0FBR0YsYUFBYTtJQUMxQixJQUFNRyxjQUFjLEdBQUduUyw0QkFBNEIsYUFBNUJBLDRCQUE0Qix1QkFBNUJBLDRCQUE0QixDQUFFaEQsTUFBTTtJQUMzRCxJQUFNb1YsZUFBZSxHQUFHcFMsNEJBQTRCLGFBQTVCQSw0QkFBNEIsdUJBQTVCQSw0QkFBNEIsQ0FBRXFTLFFBQVE7SUFDOUQsSUFBSUMsZ0JBQWdCLEdBQUcsSUFBSTs7SUFFM0I7SUFDQSxJQUFJUCxhQUFhLGFBQWJBLGFBQWEsZUFBYkEsYUFBYSxDQUFFL2UsTUFBTSxJQUN2Qm9mLGVBQWUsSUFDZHBWLE1BQU0sS0FBS21WLGNBQWUsSUFDM0JDLGVBQWUsQ0FBQ2xXLE9BQU8sQ0FBQyxJQUFJO0lBQzVCdUUsYUFBYSxhQUFiQSxhQUFhLGVBQWJBLGFBQWEsQ0FBRThSLEtBQUssRUFDcEI7TUFDQTtNQUNBLElBQUksQ0FBQ3JZLE9BQU8sQ0FBQ3lILGlCQUFpQixFQUFFbEIsYUFBYSxDQUFDLElBQzVDLENBQUN2RyxPQUFPLENBQUN5SSxZQUFZLEVBQUVvUCxhQUFhLENBQUMsRUFBRTtRQUFBLElBQUFTLHNCQUFBO1FBQ3ZDLElBQU1DLGNBQWMsR0FBRyxDQUFDLENBQUM7UUFDekIsSUFBTUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxFQUFDO1FBQ3RCLElBQUlDLFVBQVUsR0FBR1osYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDNVYsS0FBSztRQUV2QyxJQUFJLE9BQU93VyxVQUFVLEtBQUssUUFBUSxFQUFFO1VBQ2xDQSxVQUFVLEdBQUdwQixRQUFRLENBQUNvQixVQUFVLENBQUM7UUFDbkM7UUFFQSxJQUFJQyxTQUFTLEdBQUdELFVBQVU7UUFFMUIsS0FBSyxJQUFJL2pCLENBQUMsR0FBRyxDQUFDLEVBQUVzQixDQUFDLEdBQUc2aEIsYUFBYSxDQUFDL2UsTUFBTSxFQUFFcEUsQ0FBQyxHQUFHc0IsQ0FBQyxFQUFFdEIsQ0FBQyxFQUFFLEVBQUU7VUFDcEQsSUFBTW1OLFFBQVEsR0FBR2dXLGFBQWEsQ0FBQ25qQixDQUFDLENBQUM7VUFDakMsSUFDRXNOLFFBQU8sR0FFTEgsUUFBUSxDQUZWRyxPQUFPO1lBQ1BDLEtBQUssR0FDSEosUUFBUSxDQURWSSxLQUFLO1VBRVA7VUFDQSxJQUFJMFcsTUFBTSxHQUFHRixVQUFVLEdBQUcvakIsQ0FBQztVQUMzQmdrQixTQUFTLEdBQUdDLE1BQU07VUFDbEJILFVBQVUsSUFBQTNVLE1BQUEsQ0FBSTdCLFFBQU8sT0FBQTZCLE1BQUEsQ0FBSThVLE1BQU0sRUFBRyxNQUFBOVUsTUFBQSxDQUFNN0IsUUFBTyxPQUFBNkIsTUFBQSxDQUFJNUIsS0FBSyxDQUFFO1VBRTFELElBQUksQ0FBQ3NXLGNBQWMsQ0FBQ3ZXLFFBQU8sQ0FBQyxFQUFFO1lBQzVCdVcsY0FBYyxDQUFDdlcsUUFBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1VBQzlCO1VBRUEsSUFBSUcsWUFBWSxHQUFHLEVBQUU7VUFFckIsSUFBSyxPQUFPRixLQUFLLEtBQUssUUFBUSxJQUFNQSxLQUFLLENBQUN5QixRQUFRLENBQUMsR0FBRyxDQUFFLEVBQUU7WUFDeEQsSUFBTWtWLE1BQU0sR0FBRzNZLFNBQVMsQ0FBQ2lZLGVBQWUsS0FBQXJVLE1BQUEsQ0FBSzdCLFFBQU8sT0FBQTZCLE1BQUEsQ0FBSTVCLEtBQUssQ0FBRSxDQUFDO1lBQUEsSUFBQTRXLFVBQUEsR0FBQXZkLDBCQUFBLENBRXhDc2QsTUFBTTtjQUFBRSxNQUFBO1lBQUE7Y0FBOUIsS0FBQUQsVUFBQSxDQUFBM2lCLENBQUEsTUFBQTRpQixNQUFBLEdBQUFELFVBQUEsQ0FBQXhrQixDQUFBLElBQUFrRCxJQUFBLEdBQWdDO2dCQUFBLElBQXJCd2hCLFNBQVMsR0FBQUQsTUFBQSxDQUFBcmtCLEtBQUE7Z0JBQ2xCLElBQU11a0IsRUFBRSxHQUFHRCxTQUFTLENBQUM3VyxTQUFTLENBQUNDLFlBQVk7Z0JBQzNDQSxZQUFZLEdBQUdBLFlBQVksQ0FBQzBCLE1BQU0sQ0FBQ21WLEVBQUUsQ0FBQztjQUN4QztZQUFDLFNBQUE1ZCxHQUFBO2NBQUF5ZCxVQUFBLENBQUE3a0IsQ0FBQSxDQUFBb0gsR0FBQTtZQUFBO2NBQUF5ZCxVQUFBLENBQUE1aUIsQ0FBQTtZQUFBO1VBQ0gsQ0FBQyxNQUFNO1lBQUEsSUFBQWdqQixxQkFBQTtZQUNMOVcsWUFBWSxJQUFBOFcscUJBQUEsR0FBR2YsZUFBZSxDQUFDbFcsUUFBTyxDQUFDLENBQUNDLEtBQUssQ0FBQyxjQUFBZ1gscUJBQUEsdUJBQS9CQSxxQkFBQSxDQUFpQzlXLFlBQVk7VUFDOUQ7VUFFQSxJQUFJQSxZQUFZLEVBQUU7WUFDaEJBLFlBQVksR0FBRzlCLG1CQUFtQixDQUFDOEIsWUFBWSxDQUFDO1lBQ2hEb1csY0FBYyxDQUFDdlcsUUFBTyxDQUFDLENBQUMyVyxNQUFNLENBQUMsR0FBRztjQUFFeFcsWUFBWSxFQUFaQTtZQUFhLENBQUM7WUFDbEQ2VixJQUFJLENBQUNrQixHQUFHLElBQUFyVixNQUFBLENBQUk3QixRQUFPLE9BQUE2QixNQUFBLENBQUk1QixLQUFLLEdBQUlFLFlBQVksQ0FBQztVQUMvQztRQUNGOztRQUVBO1FBQ0EsSUFBQWdYLHFCQUFBLEdBQWtCNVMsYUFBYSxhQUFiQSxhQUFhLGdCQUFBK1Isc0JBQUEsR0FBYi9SLGFBQWEsQ0FBRVAsU0FBUyxjQUFBc1Msc0JBQUEsdUJBQXhCQSxzQkFBQSxDQUEwQmxFLEtBQUssQ0FBQyxHQUFHLENBQUM7VUFBQWdGLHNCQUFBLEdBQUFuYixjQUFBLENBQUFrYixxQkFBQTtVQUEvQ25YLFNBQU8sR0FBQW9YLHNCQUFBO1FBQ2QsSUFBSUMsTUFBTSxNQUFBeFYsTUFBQSxDQUFNN0IsU0FBTyxPQUFBNkIsTUFBQSxDQUFJNFUsVUFBVSxDQUFFO1FBRXZDLElBQUlDLFNBQVMsSUFBSUQsVUFBVSxFQUFFO1VBQzNCWSxNQUFNLFFBQUF4VixNQUFBLENBQVE2VSxTQUFTLENBQUU7UUFDM0I7UUFFQSxJQUFNWSxZQUFZLEdBQUd6Wix3QkFBd0IsQ0FBQztVQUM1QzBaLFVBQVUsRUFBRWhCLGNBQWM7VUFDMUI1USxHQUFHLEVBQUUwUixNQUFNO1VBQ1hoQixLQUFLLEVBQUU5UixhQUFhLGFBQWJBLGFBQWEsdUJBQWJBLGFBQWEsQ0FBRThSLEtBQUs7VUFDM0JtQixVQUFVLEVBQUVqVCxhQUFhLGFBQWJBLGFBQWEsdUJBQWJBLGFBQWEsQ0FBRWlUO1FBQzdCLENBQUMsQ0FBQztRQUVGLElBQU14UixXQUFVLEdBQUcsSUFBSUMsR0FBRyxDQUFDLENBQUM7UUFFNUIsSUFBSXFSLFlBQVksYUFBWkEsWUFBWSxlQUFaQSxZQUFZLENBQUVHLElBQUksRUFBRTtVQUN0QkgsWUFBWSxDQUFDemlCLE9BQU8sQ0FBQyxVQUFDNmlCLEtBQUssRUFBRS9lLEdBQUcsRUFBSztZQUNuQyxJQUFNZ2YsSUFBSSxHQUFHbkIsVUFBVSxDQUFDN2QsR0FBRyxDQUFDO1lBRTVCcU4sV0FBVSxDQUFDa1IsR0FBRyxDQUFDUyxJQUFJLEVBQUVELEtBQUssQ0FBQ0UsR0FBRyxDQUFDLFVBQUFDLElBQUk7Y0FBQSxPQUFBMWMsYUFBQSxDQUFBQSxhQUFBLEtBQzVCMGMsSUFBSTtnQkFBRUMsSUFBSSxFQUFFbGIsSUFBSSxDQUFDbWIsZUFBZSxDQUFDRixJQUFJLENBQUNDLElBQUk7Y0FBQztZQUFBLENBQ2pELENBQUMsQ0FBQztVQUNMLENBQUMsQ0FBQztRQUNKO1FBQ0FoQyxhQUFhLEdBQUc5UCxXQUFVO1FBQzFCb1EsZ0JBQWdCLEdBQUc3UixhQUFhO1FBQ2hDd1IsZ0JBQWdCLEdBQUcsSUFBSTtNQUN6QjtJQUNGO0lBRUEsSUFBTTFPLFFBQWEsR0FBRyxDQUFDLENBQUM7O0lBRXhCO0lBQ0EsSUFBSSxDQUFDdkksY0FBYyxDQUFDNEgsZUFBZSxFQUFFc1AsSUFBSSxDQUFDLEVBQUU7TUFDMUMzTyxRQUFRLENBQUNYLGVBQWUsR0FBR3NQLElBQUk7TUFDL0I7TUFDQTNPLFFBQVEsQ0FBQ25CLGNBQWMsR0FBRzhQLElBQUksR0FBR3piLGtCQUFBLENBQUl5YixJQUFJLENBQUN2ZSxJQUFJLENBQUMsQ0FBQyxFQUFFd2IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBQztJQUNuRTs7SUFFQSxJQUFNK0UsWUFBWSxHQUFHLENBQUFoVSxTQUFTLGFBQVRBLFNBQVMsdUJBQVRBLFNBQVMsQ0FBRWxELE1BQU0sT0FBS3VFLGdCQUFnQixhQUFoQkEsZ0JBQWdCLHVCQUFoQkEsZ0JBQWdCLENBQUV2RSxNQUFNO0lBRW5FLElBQUlrWCxZQUFZLElBQUksQ0FBQzFYLGFBQWEsQ0FBQ21HLFlBQVksRUFBRW9QLGFBQWEsQ0FBQyxFQUFFO01BQy9EeE8sUUFBUSxDQUFDWixZQUFZLEdBQUdvUCxhQUFhO01BQ3JDeE8sUUFBUSxDQUFDNUIsaUJBQWlCLEdBQUcyUSxnQkFBZ0I7TUFDN0MvTyxRQUFRLENBQUNyQixVQUFVLEdBQUc4UCxhQUFhO0lBQ3JDO0lBRUEsSUFBSU0sZ0JBQWdCLEVBQUU7TUFDcEIvTyxRQUFRLENBQUM1QixpQkFBaUIsR0FBRzJRLGdCQUFnQjtJQUMvQztJQUVBLElBQUlMLGdCQUFnQixFQUFFO01BQ3BCLElBQUksQ0FBQ2pYLGNBQWMsQ0FBQ2tILFVBQVUsSUFBSyxJQUFJQyxHQUFHLENBQUMsQ0FBRSxFQUFFNlAsYUFBYSxDQUFDLEVBQUU7UUFDN0R6TyxRQUFRLENBQUNyQixVQUFVLEdBQUc4UCxhQUFhO01BQ3JDO0lBQ0Y7SUFFQSxJQUFJM2pCLE1BQU0sQ0FBQ3NGLElBQUksQ0FBQzRQLFFBQVEsQ0FBQyxDQUFDdlEsTUFBTSxFQUFFO01BQ2hDc1EsUUFBUSxDQUFDQyxRQUFRLENBQUM7SUFDcEI7RUFDRixDQUFDLEVBQUUsQ0FDRG5ELEtBQUssRUFDTEUsVUFBVSxFQUNWdEQsTUFBTSxFQUNObUwsV0FBVyxFQUNYcEwsZUFBZSxhQUFmQSxlQUFlLHVCQUFmQSxlQUFlLENBQUU0RixZQUFZLEVBQzdCM0MsNEJBQTRCLEVBQzVCUyxhQUFhLENBQ2QsQ0FBQztFQUVGN0gsS0FBSyxDQUFDcU8sU0FBUyxDQUFDLFlBQU07SUFBRTtJQUN0QjNELFFBQVEsQ0FBQztNQUNQWixxQkFBcUIsRUFBRSxJQUFJO01BQzNCRCxrQkFBa0IsRUFBRSxDQUFDLENBQUM7TUFDdEJmLGtCQUFrQixFQUFFO0lBQ3RCLENBQUMsQ0FBQztFQUNKLENBQUMsRUFBRSxDQUFDNEcsVUFBVSxDQUFDLENBQUM7RUFFaEIsSUFBTTZMLDJCQUEyQixHQUFHLFNBQTlCQSwyQkFBMkJBLENBQUlqVSxTQUFpQyxFQUFFa1UsT0FBZ0IsRUFBSztJQUMzRnBSLFNBQVMsQ0FBQyxVQUFBUSxTQUFTO01BQUEsT0FBQW5NLGFBQUEsQ0FBQUEsYUFBQSxLQUNkbU0sU0FBUztRQUNaZCxxQkFBcUIsRUFBQXJMLGFBQUEsQ0FBQUEsYUFBQSxLQUFPbU0sU0FBUyxDQUFDZCxxQkFBcUIsT0FBQXBMLGVBQUEsUUFBQXlHLE1BQUEsQ0FBTW1DLFNBQVMsQ0FBQ2hFLE9BQU8sT0FBQTZCLE1BQUEsQ0FBSW1DLFNBQVMsQ0FBQy9ELEtBQUssR0FBS2lZLE9BQU87TUFBRTtJQUFBLENBQ25ILENBQUM7RUFDTCxDQUFDO0VBRUQsSUFBSXJDLGFBQWEsR0FBR2hWLGVBQWUsYUFBZkEsZUFBZSx1QkFBZkEsZUFBZSxDQUFFNEYsWUFBWTtFQUVqRC9KLEtBQUssQ0FBQ3FPLFNBQVMsQ0FBQyxZQUFNO0lBQUEsSUFBQW9OLGNBQUE7SUFDcEIsS0FBQUEsY0FBQSxHQUFJdEMsYUFBYSxjQUFBc0MsY0FBQSxlQUFiQSxjQUFBLENBQWVyaEIsTUFBTSxFQUFFO01BQ3pCLElBQUFzaEIsS0FBQSxHQUFvQ3ZYLGVBQWUsSUFBSSxDQUFDLENBQUM7UUFBakRtRCxXQUFTLEdBQUFvVSxLQUFBLENBQVRwVSxTQUFTO1FBQUVNLGNBQVksR0FBQThULEtBQUEsQ0FBWjlULFlBQVk7TUFDL0IzQyxPQUFPLENBQUNnSixHQUFHLHdDQUF3QztRQUFFM0csU0FBUyxFQUFUQSxXQUFTO1FBQUVNLFlBQVksRUFBWkE7TUFBYSxDQUFDLENBQUM7SUFDakY7RUFDRixDQUFDLEVBQUUsQ0FBQ3VSLGFBQWEsQ0FBQyxDQUFDO0VBRW5CLElBQUksR0FBQWpULGNBQUEsR0FBQ2lULGFBQWEsY0FBQWpULGNBQUEsZUFBYkEsY0FBQSxDQUFlOUwsTUFBTSxHQUFFO0lBQUU7SUFDNUIrZSxhQUFhLEdBQUcsQ0FBQTFhLGFBQUEsS0FBTTZJLFNBQVMsRUFBRztFQUNwQztFQUVBLElBQU1xVSxzQkFBc0IsSUFBQXhWLGNBQUEsR0FBR2dULGFBQWEsY0FBQWhULGNBQUEsdUJBQWJBLGNBQUEsQ0FBZStVLEdBQUcsQ0FBQyxVQUFDVSxpQkFBaUIsRUFBRXJKLEtBQUssRUFBSztJQUFBLElBQUFzSixxQkFBQTtJQUM5RSxJQUFNQyxtQkFBbUIsR0FBRyxDQUFBRixpQkFBaUIsYUFBakJBLGlCQUFpQixnQkFBQUMscUJBQUEsR0FBakJELGlCQUFpQixDQUFFcFksU0FBUyxjQUFBcVkscUJBQUEsdUJBQTVCQSxxQkFBQSxDQUE4QnBZLFlBQVksS0FBSSxFQUFFO0lBQzVFO0lBQ0EsSUFBQXNZLEtBQUEsR0FBMkJILGlCQUFpQixJQUFJLENBQUMsQ0FBQztNQUExQ3RZLE9BQU8sR0FBQXlZLEtBQUEsQ0FBUHpZLE9BQU87TUFBRUMsS0FBSyxHQUFBd1ksS0FBQSxDQUFMeFksS0FBSztJQUN0QixJQUFNeVksT0FBTyxHQUFHLENBQUFyVCxnQkFBZ0IsYUFBaEJBLGdCQUFnQix1QkFBaEJBLGdCQUFnQixDQUFFdkUsTUFBTSxLQUFJQSxNQUFNO0lBQ2xELElBQU1zTCxVQUFVLEdBQUFqUixhQUFBLENBQUFBLGFBQUEsS0FDWDBhLGFBQWE7TUFDaEI3VixPQUFPLEVBQVBBLE9BQU87TUFDUGMsTUFBTSxFQUFFNFgsT0FBTztNQUNmelksS0FBSyxFQUFMQTtJQUFLLEVBQ047SUFDRCxJQUFNMFksNkJBQTZCLEdBQUF4ZCxhQUFBLENBQUFBLGFBQUEsS0FDOUIyUyw0QkFBNEI7TUFDL0JLLFlBQVksRUFBRWMsS0FBSztNQUNuQnVKLG1CQUFtQixFQUFuQkEsbUJBQW1CO01BQ25CeFUsU0FBUyxFQUFFb0ksVUFBVTtNQUNyQnZFLGNBQWMsRUFBZEE7SUFBYyxFQUNmO0lBRUQsSUFBSStRLDJCQUEyQixHQUFHLEtBQUs7SUFFdkMsSUFBSWpTLHlCQUF5QixFQUFFO01BQzdCaVMsMkJBQTJCLEdBQUdqUyx5QkFBeUIsQ0FBQzNHLE9BQU8sSUFBSUEsT0FBTyxJQUFJMkcseUJBQXlCLENBQUMxRyxLQUFLLElBQUlBLEtBQUs7SUFDeEg7SUFFQSxvQkFDRXZELEtBQUEsQ0FBQWlQLGFBQUEsQ0FBQ3pOLGFBQWEsRUFBQWhFLFFBQUEsS0FDUjJHLGVBQWU7TUFDbkIyTSxZQUFZLEVBQUVBLFlBQWE7TUFDM0JXLFlBQVksRUFBRWMsS0FBTTtNQUNwQjRKLGlCQUFpQixFQUFFLENBQUNuVCxhQUFjO01BQ2xDeUcsU0FBUyxFQUFFQSxTQUFVO01BQ3JCaEosa0JBQWtCLEVBQUV1SyxtQkFBb0I7TUFDeEN6RyxRQUFRLEVBQUVBLFFBQVM7TUFDbkI1RCxjQUFjLEVBQUVBLGNBQWU7TUFDL0JLLElBQUksRUFBRXlELEtBQU07TUFDWnlSLDJCQUEyQixFQUFFQSwyQkFBNEI7TUFDekRqZ0IsR0FBRyxFQUFFc1csS0FBTTtNQUNYNkosaUJBQWlCLEVBQUUsU0FBQUEsa0JBQUE7UUFBQSxPQUFNMVIsUUFBUSxDQUFDO1VBQUVULHlCQUF5QixFQUFFO1FBQUssQ0FBQyxDQUFDO01BQUEsQ0FBQztNQUN2RTdDLDRCQUE0QixFQUFFQSw0QkFBNkI7TUFDM0RxSixRQUFRLEVBQUVBLFFBQVM7TUFDbkJuSixTQUFTLEVBQUVvSSxVQUFXO01BQ3RCMk0sTUFBTSxFQUFFM1M7TUFDUjtNQUFBO01BQ0EwSCw0QkFBNEIsRUFBRTZLLDZCQUE4QjtNQUM1RDlNLFlBQVksRUFBRUEsWUFBYTtNQUMzQmhILG9CQUFvQixFQUFFQSxvQkFBcUI7TUFDM0NMLE1BQU0sRUFBRUEsTUFBTztNQUNmTSxTQUFTLEVBQUVBLFNBQVU7TUFDckJtVCwyQkFBMkIsRUFBRUE7SUFBNEIsRUFDMUQsQ0FBQztFQUVOLENBQUMsQ0FBQztFQUVGLElBQU1lLHNCQUFzQixHQUFHLFNBQXpCQSxzQkFBc0JBLENBQUEsRUFBUztJQUNuQyxJQUFJLENBQUF2UyxZQUFZLGFBQVpBLFlBQVksdUJBQVpBLFlBQVksQ0FBRTNQLE1BQU0sSUFBRyxDQUFDLEVBQUU7TUFBRTtNQUM5QnNRLFFBQVEsQ0FBQztRQUFFakIsa0JBQWtCLEVBQUU7TUFBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQyxNQUFNLElBQUksQ0FBQU0sWUFBWSxhQUFaQSxZQUFZLHVCQUFaQSxZQUFZLENBQUUzUCxNQUFNLE1BQUssQ0FBQyxFQUFFO01BQUU7TUFDdkNzUSxRQUFRLENBQUM7UUFBRVQseUJBQXlCLEVBQUVGLFlBQVksQ0FBQyxDQUFDO01BQUUsQ0FBQyxDQUFDO0lBQzFEO0VBQ0YsQ0FBQztFQUVELElBQU13UyxlQUFlLEdBQUcsU0FBbEJBLGVBQWVBLENBQUFDLE1BQUEsRUFBa0I7SUFBQSxJQUFaMU0sS0FBSyxHQUFBME0sTUFBQSxDQUFMMU0sS0FBSztJQUM5QixJQUFNMk0sUUFBUSxHQUFBNWUsa0JBQUEsQ0FBT2lTLEtBQUssQ0FBQztJQUUzQixJQUFJNE0sZ0JBQWdCLEdBQUcsS0FBSzs7SUFFNUI7SUFDQSxJQUFJNVMscUJBQXFCLEVBQUU7TUFDekI0UyxnQkFBZ0IsR0FBR2puQixNQUFNLENBQUN1QyxNQUFNLENBQUM4UixxQkFBcUIsQ0FBQyxDQUFDNlMsS0FBSyxDQUFDLFVBQUFDLFdBQVc7UUFBQSxPQUFJQSxXQUFXLEtBQUssSUFBSTtNQUFBLEVBQUM7SUFDcEc7SUFFQSxJQUFJQyxTQUFTLEdBQUcsSUFBSTtJQUNwQixJQUFJQyxlQUFlLEdBQUcsRUFBRTtJQUV4QixJQUFJSixnQkFBZ0IsRUFBRTtNQUNwQkcsU0FBUyxnQkFBRzdjLEtBQUEsQ0FBQWlQLGFBQUEsQ0FBQzFPLE9BQU87UUFBQ3dHLEVBQUUsZ0JBQUE1QixNQUFBLENBQWdCdUMsVUFBVSxDQUFHO1FBQUNxVixLQUFLLEVBQUM7TUFBTSxDQUFFLENBQUM7TUFDcEVELGVBQWUsR0FBRyxvQkFBb0I7SUFDeEMsQ0FBQyxNQUFNO01BQ0wsSUFBTUMsS0FBSyxHQUFHMU4sb0JBQW9CLEdBQUcsTUFBTSxHQUFHLE1BQU0sRUFBQztNQUNyRHdOLFNBQVMsZ0JBQUc3YyxLQUFBLENBQUFpUCxhQUFBLENBQUN6TyxZQUFZO1FBQUN1RyxFQUFFLDRCQUFBNUIsTUFBQSxDQUE0QnVDLFVBQVUsQ0FBRztRQUFDcVYsS0FBSyxFQUFFQTtNQUFNLENBQUUsQ0FBQztNQUN0RkQsZUFBZSxHQUFHLHNCQUFzQjtJQUMxQztJQUVBLElBQUkzVSxvQkFBb0IsSUFBSVQsVUFBVSxLQUFLLGlCQUFpQixFQUFFO01BQzVEK1UsUUFBUSxDQUFDMWlCLElBQUksZUFDWGlHLEtBQUEsQ0FBQWlQLGFBQUEsQ0FBQzNPLFVBQVU7UUFDVHlHLEVBQUUsb0JBQUE1QixNQUFBLENBQW9CdUMsVUFBVSxDQUFHO1FBQ25DekwsR0FBRyxFQUFDLGlCQUFpQjtRQUNyQitnQixPQUFPLEVBQUUzTixvQkFBb0IsR0FBRyxJQUFJLEdBQUdpTixzQkFBdUI7UUFDOURqVSxLQUFLLEVBQUV5VSxlQUFnQjtRQUN2QixjQUFZQSxlQUFnQjtRQUM1Qi9aLEtBQUssRUFBRTtVQUFFa2EsTUFBTSxFQUFFO1FBQVU7TUFBRSxHQUU1QkosU0FDUyxDQUNkLENBQUM7SUFDSDs7SUFFQTtJQUNBLENBQUNwUixrQkFBa0IsSUFBSWdSLFFBQVEsQ0FBQzFpQixJQUFJLGVBQ2xDaUcsS0FBQSxDQUFBaVAsYUFBQSxDQUFBalAsS0FBQSxDQUFBa2QsUUFBQSxxQkFDRWxkLEtBQUEsQ0FBQWlQLGFBQUEsQ0FBQ3BPLGtCQUFrQixFQUFBckQsUUFBQSxLQUFLMlAsaUJBQWlCO01BQUVRLFNBQVMsRUFBRUQsZUFBZSxJQUFJaEU7SUFBVSxFQUFDLENBQUMsZUFDckYxSixLQUFBLENBQUFpUCxhQUFBLENBQUN2TyxXQUFXO01BQUMySCxLQUFLLEVBQUV3RixXQUFZO01BQUN1RixPQUFPLEVBQUV4RixhQUFjO01BQUN1UCxJQUFJLEVBQUUzUCxpQkFBa0I7TUFBQzRQLE9BQU8sRUFBRTNQLGtCQUFtQjtNQUFDRSxTQUFTLEVBQUdELGVBQWUsSUFBSWhFLFNBQVc7TUFBQzJULElBQUksRUFBRXZQLFVBQVc7TUFBQ3dQLFdBQVcsRUFBRXZQO0lBQWtCLENBQUUsQ0FDN00sQ0FDSixDQUFDO0lBRUQsT0FBTzBPLFFBQVE7RUFDakIsQ0FBQztFQUVELElBQU1jLG9CQUFvQixHQUFHblcsNEJBQTRCLGFBQTVCQSw0QkFBNEIsdUJBQTVCQSw0QkFBNEIsQ0FBRXFTLFFBQVE7RUFFbkUsb0JBQ0V6WixLQUFBLENBQUFpUCxhQUFBLENBQUM5Tyx5QkFBeUI7SUFDeEIwYSxVQUFVLEVBQUUwQyxvQkFBb0IsSUFBSSxDQUFDLENBQUU7SUFDdkN6QyxVQUFVLEVBQUVqWixhQUFhLENBQUNnRyxhQUFhLGFBQWJBLGFBQWEsdUJBQWJBLGFBQWEsQ0FBRWlULFVBQVUsQ0FBRTtJQUNyRDBDLFlBQVksRUFBRSxTQUFBQSxhQUFBcEUsYUFBYSxFQUFJO01BQzdCO0lBQUEsQ0FDQTtJQUNGTyxLQUFLLEVBQUUsQ0FBQTlSLGFBQWEsYUFBYkEsYUFBYSx1QkFBYkEsYUFBYSxDQUFFOFIsS0FBSyxLQUFJLEVBQUc7SUFDbEM4RCxTQUFTLEVBQUVqVSxjQUFlO0lBQzFCRixVQUFVLEVBQUVBO0VBQVcsZ0JBRXZCdEosS0FBQSxDQUFBaVAsYUFBQSxDQUFDeE8sSUFBSTtJQUNIc0csRUFBRSxvQkFBQTVCLE1BQUEsQ0FBb0JvQixPQUFPLENBQUc7SUFDaEM4QixLQUFLLEVBQUUwSSxjQUFlO0lBQ3RCMk0sYUFBYSxFQUFFbFAsY0FBYyxHQUFHLFdBQVk7SUFDNUNzQixLQUFLLEVBQUVBLEtBQU07SUFDYnRKLE9BQU8sRUFBRUEsT0FBUTtJQUNqQnlKLE9BQU8sRUFBRUEsT0FBUTtJQUNqQkMsT0FBTyxFQUFFQSxPQUFRO0lBQ2pCM0YsUUFBUSxFQUFFQSxRQUFTO0lBQ25CNEYsU0FBUyxFQUFFQSxTQUFVO0lBQ3JCRyxVQUFVLEVBQUVBLFVBQVc7SUFDdkI5RixXQUFXLEVBQUVBLFdBQVk7SUFDekIrRixZQUFZLEVBQUVBLFlBQWE7SUFDM0JILFlBQVksRUFBRUEsWUFBYTtJQUMzQkksZUFBZSxFQUFFQSxlQUFnQjtJQUNqQ21OLGtCQUFrQixFQUFFNU8sb0JBQXFCO0lBQ3pDNk8sa0JBQWtCO0lBQ2xCdE8sV0FBVyxFQUFFQSxXQUFZO0lBQ3pCcEksVUFBVSxFQUFFQSxVQUFVLEdBQUc7TUFBQSxPQUFNQSxVQUFVLENBQUNILEVBQUUsRUFBRXlILGNBQWMsQ0FBQztJQUFBLElBQUcsSUFBSztJQUNyRXFQLFFBQVEsRUFBRTVNLFVBQVUsSUFBSUMsZUFBZ0I7SUFDeENRLEtBQUssRUFBRXJDLG9CQUFvQixJQUFJM0YsU0FBUyxJQUFJLENBQUNaLGtCQUFtQixDQUFDO0lBQUE7SUFDakVrTCxVQUFVLEVBQUUsU0FBQUEsV0FBQTtNQUFBLE9BQU10SixRQUFRLENBQUM7UUFBRXhCLFdBQVcsRUFBRTtNQUFLLENBQUMsQ0FBQztJQUFBLENBQUM7SUFDbERxVCxlQUFlLEVBQUVBO0VBQWdCLGdCQUVqQ3ZjLEtBQUEsQ0FBQWlQLGFBQUE7SUFBS2xJLEVBQUUsRUFBQztFQUFxQixHQUMxQjRVLHNCQUNFLENBQ0QsQ0FBQyxlQUNQM2IsS0FBQSxDQUFBaVAsYUFBQSxDQUFDeE0sa0JBQWtCO0lBQ2pCaUYsVUFBVSxFQUFFQSxVQUFXO0lBQ3ZCeVYsSUFBSSxFQUFFMVQsa0JBQW1CO0lBQ3pCMlQsT0FBTyxFQUFFLFNBQUFBLFFBQUE7TUFBQSxPQUFNMVMsUUFBUSxDQUFDO1FBQUVqQixrQkFBa0IsRUFBRTtNQUFNLENBQUMsQ0FBQztJQUFBLENBQUM7SUFDdkRNLFlBQVksRUFBRUEsWUFBYTtJQUMzQkQscUJBQXFCLEVBQUVBLHFCQUFzQjtJQUM3Q2dVLGFBQWEsRUFBRSxTQUFBQSxjQUFDdmEsS0FBSztNQUFBLE9BQUttSCxRQUFRLENBQUM7UUFDakNULHlCQUF5QixFQUFFMUcsS0FBSztRQUNoQ2tHLGtCQUFrQixFQUFFO01BQ3RCLENBQUMsQ0FBQztJQUFBO0VBQUMsQ0FDSixDQUN3QixDQUFDO0FBRWhDO0FBRUFwRSxhQUFhLENBQUMwWSxTQUFTLEdBQUc7RUFDeEI7RUFDQTNYLE1BQU0sRUFBRW5HLFNBQVMsQ0FBQytkLE1BQU0sQ0FBQ0MsVUFBVTtFQUNuQztFQUNBNVgsY0FBYyxFQUFFcEcsU0FBUyxDQUFDaWUsTUFBTTtFQUNoQztFQUNBNVgsU0FBUyxFQUFFckcsU0FBUyxDQUFDK2QsTUFBTTtFQUMzQjtFQUNBelgsT0FBTyxFQUFFdEcsU0FBUyxDQUFDa2UsTUFBTSxDQUFDRixVQUFVO0VBQ3BDO0VBQ0F6WCxPQUFPLEVBQUV2RyxTQUFTLENBQUNpZSxNQUFNO0VBQ3pCO0VBQ0F6WCxrQkFBa0IsRUFBRXhHLFNBQVMsQ0FBQ21lLElBQUk7RUFDbEM7RUFDQTFYLFdBQVcsRUFBRXpHLFNBQVMsQ0FBQ29lLElBQUksQ0FBQ0osVUFBVTtFQUN0QztFQUNBdFgsY0FBYyxFQUFFMUcsU0FBUyxDQUFDb2UsSUFBSTtFQUM5QjtFQUNBelgsWUFBWSxFQUFFM0csU0FBUyxDQUFDK2QsTUFBTTtFQUM5QjtFQUNBblgsYUFBYSxFQUFFNUcsU0FBUyxDQUFDK2QsTUFBTTtFQUMvQjtFQUNBbFgsVUFBVSxFQUFFN0csU0FBUyxDQUFDaWUsTUFBTTtFQUM1QjtFQUNBblgsRUFBRSxFQUFFOUcsU0FBUyxDQUFDK2QsTUFBTTtFQUNwQjtFQUNBaFgsSUFBSSxFQUFFL0csU0FBUyxDQUFDb2UsSUFBSSxDQUFDSixVQUFVO0VBQy9CO0VBQ0FoWCxZQUFZLEVBQUVoSCxTQUFTLENBQUMrZCxNQUFNO0VBQzlCO0VBQ0E5VyxVQUFVLEVBQUVqSCxTQUFTLENBQUNvZSxJQUFJO0VBQzFCO0FBQ0Y7QUFDQTtBQUNBO0VBQ0VsWCxlQUFlLEVBQUVsSCxTQUFTLENBQUNvZSxJQUFJO0VBQy9CO0VBQ0FqWCw0QkFBNEIsRUFBRW5ILFNBQVMsQ0FBQ2llLE1BQU07RUFDOUM1VyxTQUFTLEVBQUVySCxTQUFTLENBQUNxZSxLQUFLLENBQUM7SUFDekI7SUFDQWxhLE1BQU0sRUFBRW5FLFNBQVMsQ0FBQytkLE1BQU0sQ0FBQ0MsVUFBVTtJQUNuQztJQUNBdFosU0FBUyxFQUFFMUUsU0FBUyxDQUFDK2QsTUFBTTtJQUMzQjtJQUNBMWEsT0FBTyxFQUFFckQsU0FBUyxDQUFDc2UsU0FBUyxDQUFDLENBQUN0ZSxTQUFTLENBQUNrZSxNQUFNLEVBQUVsZSxTQUFTLENBQUMrZCxNQUFNLENBQUMsQ0FBQyxDQUFDQyxVQUFVO0lBQzdFO0lBQ0ExYSxLQUFLLEVBQUV0RCxTQUFTLENBQUNzZSxTQUFTLENBQUMsQ0FBQ3RlLFNBQVMsQ0FBQ2tlLE1BQU0sRUFBRWxlLFNBQVMsQ0FBQytkLE1BQU0sQ0FBQyxDQUFDLENBQUNDO0VBQ25FLENBQUMsQ0FBQztFQUNGO0VBQ0F2WixRQUFRLEVBQUV6RSxTQUFTLENBQUNxZSxLQUFLLENBQUM7SUFDeEI7SUFDQTdXLFVBQVUsRUFBRXhILFNBQVMsQ0FBQytkLE1BQU0sQ0FBQ0MsVUFBVTtJQUN2QztJQUNBelcsS0FBSyxFQUFFdkgsU0FBUyxDQUFDK2QsTUFBTSxDQUFDQyxVQUFVO0lBQ2xDO0lBQ0F2VyxVQUFVLEVBQUV6SCxTQUFTLENBQUMrZCxNQUFNLENBQUNDLFVBQVU7SUFDdkM7SUFDQXRXLHFCQUFxQixFQUFFMUgsU0FBUyxDQUFDK2QsTUFBTSxDQUFDQztFQUMxQyxDQUFDLENBQUM7RUFDRjtFQUNBclcsWUFBWSxFQUFFM0gsU0FBUyxDQUFDdWUsR0FBRztFQUMzQjtFQUNBM1csYUFBYSxFQUFFNUgsU0FBUyxDQUFDaWUsTUFBTTtFQUMvQjtFQUNBcFcsTUFBTSxFQUFFN0gsU0FBUyxDQUFDK2QsTUFBTSxDQUFDQyxVQUFVO0VBQ25DO0VBQ0FRLHNCQUFzQixFQUFFeGUsU0FBUyxDQUFDb2UsSUFBSTtFQUN0QztFQUNBSyxxQkFBcUIsRUFBRXplLFNBQVMsQ0FBQ29lLElBQUk7RUFDckM7RUFDQXRXLG9CQUFvQixFQUFFOUgsU0FBUyxDQUFDb2UsSUFBSTtFQUNwQztFQUNBclcscUJBQXFCLEVBQUUvSCxTQUFTLENBQUNvZSxJQUFJO0VBQ3JDO0VBQ0FwVyxjQUFjLEVBQUVoSSxTQUFTLENBQUNvZSxJQUFJO0VBQzlCO0VBQ0FuVyxlQUFlLEVBQUVqSSxTQUFTLENBQUNvZSxJQUFJO0VBQy9CO0VBQ0FsVyxvQkFBb0IsRUFBRWxJLFNBQVMsQ0FBQ29lLElBQUk7RUFDcEM7RUFDQWhXLEtBQUssRUFBRXBJLFNBQVMsQ0FBQytkLE1BQU0sQ0FBQ0MsVUFBVTtFQUNsQztFQUNBN1YsU0FBUyxFQUFFbkksU0FBUyxDQUFDb2UsSUFBSTtFQUN6QjtFQUNBOVYsZ0JBQWdCLEVBQUV0SSxTQUFTLENBQUNvZSxJQUFJO0VBQ2hDO0VBQ0EvVixtQkFBbUIsRUFBRXJJLFNBQVMsQ0FBQ29lLElBQUksQ0FBQ0o7QUFDdEMsQ0FBQyJ9
|