single-scripture-rcl 3.5.5-beta.3 → 3.5.6-beta.10
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.
|
@@ -70,7 +70,7 @@ import * as React from 'react';
|
|
|
70
70
|
import * as PropTypes from 'prop-types';
|
|
71
71
|
import { core, SelectionsContextProvider } from 'scripture-resources-rcl';
|
|
72
72
|
import usfmjs from 'usfm-js';
|
|
73
|
-
import { useEdit } from 'gitea-react-toolkit';
|
|
73
|
+
import { getPatch, useEdit } from 'gitea-react-toolkit';
|
|
74
74
|
import { IconButton } from '@mui/material';
|
|
75
75
|
import { RxLink2, RxLinkBreak2 } from 'react-icons/rx';
|
|
76
76
|
import { Card, ErrorDialog, ERROR_STATE, MANIFEST_NOT_LOADED_ERROR, UpdateBranchButton, useBranchMerger, useCardState, useContentUpdateProps, useMasterMergeProps, useUserBranch } from 'translation-helps-rcl';
|
|
@@ -87,7 +87,6 @@ import { areMapsTheSame } from '../../utils/maps';
|
|
|
87
87
|
import { Title } from '../ScripturePane/styled';
|
|
88
88
|
import { NT_ORIG_LANG, ORIGINAL_SOURCE, OT_ORIG_LANG } from '../../utils';
|
|
89
89
|
import { VerseSelectorPopup } from '../VerseSelectorPopup';
|
|
90
|
-
import { getPatch } from '../../utils/files';
|
|
91
90
|
import { ScriptureReferenceType, VerseObjectsType } from '../../types';
|
|
92
91
|
var KEY_FONT_SIZE_BASE = 'scripturePaneFontSize_';
|
|
93
92
|
var label = 'Version';
|
|
@@ -1673,4 +1672,4 @@ ScriptureCard.propTypes = {
|
|
|
1673
1672
|
/** use method for using local storage specific for user */
|
|
1674
1673
|
useUserLocalStorage: PropTypes.func.isRequired
|
|
1675
1674
|
};
|
|
1676
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVnZW5lcmF0b3JSdW50aW1lIiwiZSIsInQiLCJyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiU3ltYm9sIiwiYSIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiZ2VuIiwicmVqZWN0IiwiX25leHQiLCJfdGhyb3ciLCJrZXkiLCJpbmZvIiwiZXJyb3IiLCJfYXN5bmNUb0dlbmVyYXRvciIsImZuIiwic2VsZiIsImFyZ3MiLCJhcmd1bWVudHMiLCJhcHBseSIsImVyciIsInVuZGVmaW5lZCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiYWxsb3dBcnJheUxpa2UiLCJpdCIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIkYiLCJfZSIsIm5vcm1hbENvbXBsZXRpb24iLCJkaWRFcnIiLCJzdGVwIiwiX2UyIiwiX2V4dGVuZHMiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0Iiwic291cmNlIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiYXJyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIml0ZXIiLCJmcm9tIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJvd25LZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiX29iamVjdFNwcmVhZCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwib2JqIiwiX3RvUHJvcGVydHlLZXkiLCJfdG9QcmltaXRpdmUiLCJTdHJpbmciLCJpbnB1dCIsImhpbnQiLCJwcmltIiwidG9QcmltaXRpdmUiLCJyZXMiLCJOdW1iZXIiLCJfc2xpY2VkVG9BcnJheSIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl9ub25JdGVyYWJsZVJlc3QiLCJtaW5MZW4iLCJ0b1N0cmluZyIsInRlc3QiLCJsZW4iLCJhcnIyIiwiUmVhY3QiLCJQcm9wVHlwZXMiLCJjb3JlIiwiU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciIsInVzZm1qcyIsInVzZUVkaXQiLCJJY29uQnV0dG9uIiwiUnhMaW5rMiIsIlJ4TGlua0JyZWFrMiIsIkNhcmQiLCJFcnJvckRpYWxvZyIsIkVSUk9SX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsIlVwZGF0ZUJyYW5jaEJ1dHRvbiIsInVzZUJyYW5jaE1lcmdlciIsInVzZUNhcmRTdGF0ZSIsInVzZUNvbnRlbnRVcGRhdGVQcm9wcyIsInVzZU1hc3Rlck1lcmdlUHJvcHMiLCJ1c2VVc2VyQnJhbmNoIiwiZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIiwiQWxpZ25tZW50SGVscGVycyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJpc0VxdWFsIiwiZ2V0VmVyc2VzIiwiU2NyaXB0dXJlUGFuZSIsIlNjcmlwdHVyZVNlbGVjdG9yIiwidXNlU2NyaXB0dXJlU2V0dGluZ3MiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwiZW1wdHlDb250ZW50IiwiZmV0Y2hCaWJsZUJvb2siLCJmaXhPY2N1cnJlbmNlIiwiZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lIiwiZ2V0UmVzb3VyY2VMaW5rIiwiZ2V0UmVzb3VyY2VNZXNzYWdlIiwiZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzIiwiaXNPcmlnaW5hbEJpYmxlIiwiZGVsYXkiLCJhcmVNYXBzVGhlU2FtZSIsIlRpdGxlIiwiTlRfT1JJR19MQU5HIiwiT1JJR0lOQUxfU09VUkNFIiwiT1RfT1JJR19MQU5HIiwiVmVyc2VTZWxlY3RvclBvcHVwIiwiZ2V0UGF0Y2giLCJTY3JpcHR1cmVSZWZlcmVuY2VUeXBlIiwiVmVyc2VPYmplY3RzVHlwZSIsIktFWV9GT05UX1NJWkVfQkFTRSIsImxhYmVsIiwic3R5bGUiLCJtYXJnaW5Ub3AiLCJ3aWR0aCIsImNvbXBhcmVPYmplY3QiLCJ2ZXJzZVJlZiIsIl92ZXJzZURhdGEkdmVyc2VPYmplYyIsIl9yZWYiLCJjaGFwdGVyIiwidmVyc2UiLCJ2ZXJzZURhdGEiLCJ2ZXJzZU9iamVjdHMiLCJKU09OIiwic3RyaW5naWZ5IiwiYXJlVmVyc2VzU2FtZSIsInZlcnNlc0ZvclJlZjEiLCJ2ZXJzZXNGb3JSZWYyIiwiYXJlU2FtZSIsInZlcnNlMSIsInZlcnNlMiIsImdldEN1cnJlbnRCb29rIiwic2NyaXB0dXJlQ29uZmlnIiwiYm9va0lkIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvMiIsIl9ib29rTmFtZSR0b0xvd2VyQ2FzZSIsImxhdGVzdEJpYmxlIiwicmVzb3VyY2VTdGF0ZSIsInJlc291cmNlIiwicHJvamVjdElkIiwiZmlsZW5hbWUiLCJpc0Jvb2tWYWxpZCIsImJvb2tOYW1lIiwidG9Mb3dlckNhc2UiLCJpbmNsdWRlcyIsImNvbnNvbGUiLCJ3YXJuIiwiY29uY2F0IiwiYmlibGVVc2ZtIiwiU2NyaXB0dXJlQ2FyZCIsIl9yZWYyIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvMyIsIl9zY3JpcHR1cmVDb25maWckcmVzbzQiLCJfc2NyaXB0dXJlQ29uZmlnJHJlc281IiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvNiIsIl9zY3JpcHR1cmVDb25maWckcmVzbzciLCJfYXV0aGVudGljYXRpb24kdG9rZW4iLCJfYXV0aGVudGljYXRpb24kdXNlciIsIl9zY3JpcHR1cmVDb25maWckcmVzbzkiLCJfc2NyaXB0dXJlQ29uZmlnJHJlc28xMCIsIl9odHRwQ29uZmlnIiwiX2h0dHBDb25maWcyIiwiX2F1dGhlbnRpY2F0aW9uJHVzZXIyIiwiX3ZlcnNlc0ZvclJlZjQiLCJfdmVyc2VzRm9yUmVmNSIsImFwcFJlZiIsImF1dGhlbnRpY2F0aW9uIiwiYm9va0luZGV4IiwiY2FyZE51bSIsImNsYXNzZXMiLCJkaXNhYmxlV29yZFBvcG92ZXIiLCJnZXRMYW5ndWFnZSIsImdldExleGljb25EYXRhIiwiZ3JlZWtSZXBvVXJsIiwiaGVicmV3UmVwb1VybCIsImh0dHBDb25maWciLCJpZCIsImlzTlQiLCJsb2dnZWRJblVzZXIiLCJtZXJnZUNoZWNrIiwib25NaW5pbWl6ZSIsIm9uUmVzb3VyY2VFcnJvciIsIm9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMiLCJyZWZlcmVuY2VfIiwicmVmZXJlbmNlIiwiX3JlZjIkcmVzb3VyY2UiLCJvd25lciIsImxhbmd1YWdlSWQiLCJyZXNvdXJjZUlkIiwib3JpZ2luYWxMYW5ndWFnZU93bmVyIiwicmVzb3VyY2VMaW5rIiwic2VsZWN0ZWRRdW90ZSIsInNlcnZlciIsInNldENhcmRzTG9hZGluZ01lcmdlIiwic2V0Q2FyZHNMb2FkaW5nVXBkYXRlIiwic2V0Q2FyZHNTYXZpbmciLCJzZXRTYXZlZENoYW5nZXMiLCJzZXRXb3JkQWxpZ25lclN0YXR1cyIsInRyYW5zbGF0ZSIsInRpdGxlIiwidXNlVXNlckxvY2FsU3RvcmFnZSIsInVwZGF0ZU1lcmdlU3RhdGUiLCJzYXZlSW5Qcm9ncmVzcyIsInVzZVJlZiIsIl9SZWFjdCR1c2VTdGF0ZSIsInVzZVN0YXRlIiwiY2hlY2tGb3JFZGl0QnJhbmNoIiwiY29udGV4dExpbmVzIiwiY3VycmVudFJlZmVyZW5jZSIsImVkaXRCcmFuY2hSZWFkeSIsImVkaXRWZXJzZSIsImZvdW5kT3JpZ2luYWxDb250ZW50IiwiaGF2ZVVuc2F2ZWRDaGFuZ2VzIiwibGFzdFNlbGVjdGVkUXVvdGUiLCJyZWFkeUZvckZldGNoIiwicmVmIiwic2F2ZUNsaWNrZWQiLCJzYXZlQ29udGVudCIsInNhdmVEaWZmUGF0Y2giLCJzYXZlRnVsbEJpYmxlQ29udGVudCIsInNlbGVjdGlvbnMiLCJNYXAiLCJzZWxlY3Rpb25zUmVmcyIsInNob3dBbGlnbm1lbnRQb3B1cCIsInN0YXJ0U2F2ZSIsInVybEVycm9yIiwidXNpbmdVc2VyQnJhbmNoIiwidW5zYXZlZENoYW5nZXNMaXN0IiwidmVyc2VzQWxpZ25tZW50U3RhdHVzIiwidmVyc2VzRm9yUmVmIiwidmVyc2VPYmplY3RzTWFwIiwidmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCIsIl9SZWFjdCR1c2VTdGF0ZTIiLCJzdGF0ZSIsInNldFN0YXRlXyIsIl91c2VVc2VyTG9jYWxTdG9yYWdlIiwiX3VzZVVzZXJMb2NhbFN0b3JhZ2UyIiwiZm9udFNpemUiLCJzZXRGb250U2l6ZSIsImlzTlRfIiwic2V0U3RhdGUiLCJuZXdTdGF0ZSIsInByZXZTdGF0ZSIsImNhY2hlIiwibWF4QWdlIiwibm9DYWNoZSIsIl91c2VTY3JpcHR1cmVTZXR0aW5ncyIsInNldFVybEVycm9yIiwid2hvbGVCb29rIiwiaXNOZXdUZXN0YW1lbnQiLCJzZXRTY3JpcHR1cmUiLCJzY3JpcHR1cmVTZXR0aW5ncyIsInNjcmlwdHVyZVZlcnNpb25IaXN0IiwiZmV0Y2hlZFJlc291cmNlIiwicmVwbyIsInVzaW5nT3JpZ2luYWxCaWJsZSIsImNhcmRSZXNvdXJjZUlkIiwicmVmXyIsImNhblVzZUVkaXRCcmFuY2giLCJfdXNlVXNlckJyYW5jaCIsImNhcmRJZCIsIl91c2VVc2VyQnJhbmNoJHN0YXRlIiwiYnJhbmNoRGV0ZXJtaW5lZCIsInVzZXJFZGl0QnJhbmNoTmFtZSIsIl91c2luZ1VzZXJCcmFuY2giLCJ3b3JraW5nUmVzb3VyY2VCcmFuY2giLCJfdXNlVXNlckJyYW5jaCRhY3Rpb24iLCJhY3Rpb25zIiwic3RhcnRFZGl0QnJhbmNoIiwic3RhcnRFZGl0IiwiZmluaXNoRWRpdCIsIl91c2VCcmFuY2hNZXJnZXIiLCJ1c2VyQnJhbmNoIiwidG9rZW5pZCIsInRva2VuIiwic2hhMSIsInVzZXJJZCIsInVzZXIiLCJsb2dpbiIsIl91c2VCcmFuY2hNZXJnZXIkc3RhdCIsIm1lcmdlVG9NYXN0ZXIiLCJtZXJnZVN0YXR1cyIsIm1lcmdlRnJvbU1hc3RlciIsInVwZGF0ZVN0YXR1cyIsImNoZWNrTWVyZ2VTdGF0dXMiLCJ1c2VFZmZlY3QiLCJyZXN1bHQiLCJtZXNzYWdlIiwidXBkYXRlQnV0dG9uUHJvcHMiLCJpc1NhdmluZyIsIm9uVXBkYXRlIiwicmVsb2FkUmVzb3VyY2UiLCJjYWxsVXBkYXRlVXNlckJyYW5jaCIsImlzRXJyb3JEaWFsb2dPcGVuIiwib25DbG9zZUVycm9yRGlhbG9nIiwiaXNVcGRhdGVMb2FkaW5nIiwiaXNMb2FkaW5nIiwiZGlhbG9nTWVzc2FnZSIsImRpYWxvZ1RpdGxlIiwiZGlhbG9nTGluayIsImRpYWxvZ0xpbmtUb29sdGlwIiwib25NZXJnZSIsImxvZyIsIl91c2VNYXN0ZXJNZXJnZVByb3BzIiwiaXNNZXJnZUxvYWRpbmciLCJjYWxsTWVyZ2VVc2VyQnJhbmNoIiwicHJldkNhcmRzTG9hZGluZyIsIndvcmtpbmdSZWYiLCJzY3JpcHR1cmVUaXRsZSIsIl9zY3JpcHR1cmVDb25maWckcmVzbzgiLCJyZXNvdXJjZVN0YXR1cyIsImlzQWNjZXNzRXJyb3IiLCJ2ZXJzaW9uIiwidXBkYXRlVGl0bGUiLCJnZXRTY3JpcHR1cmVTZWxlY3RvciIsInNjcmlwdHVyZVNlbGVjdGlvbkNvbmZpZyIsImNyZWF0ZUVsZW1lbnQiLCJlcnJvck1lc3NhZ2UiLCJzZXRFZGl0VmVyc2UiLCJlZGl0aW5nIiwiZGlzYWJsZUNoYW5nZUJ1dHRvbnMiLCJvbk1lbnVDbG9zZSIsImxhbmd1YWdlSWRfIiwibGFuZ3VhZ2UiLCJkaXJlY3Rpb24iLCJfcmVmZXJlbmNlIiwiaXNIZWJyZXciLCJmb250RmFjdG9yIiwic2NhbGVkRm9udFNpemUiLCJpdGVtcyIsIl91c2VDYXJkU3RhdGUiLCJfdXNlQ2FyZFN0YXRlJHN0YXRlIiwiaGVhZGVycyIsImZpbHRlcnMiLCJpdGVtSW5kZXgiLCJtYXJrZG93blZpZXciLCJfdXNlQ2FyZFN0YXRlJGFjdGlvbnMiLCJzZXRGaWx0ZXJzIiwic2V0SXRlbUluZGV4Iiwic2V0TWFya2Rvd25WaWV3IiwicmVmU3R5bGUiLCJ1c2VNZW1vIiwiZm9udEZhbWlseSIsIk1hdGgiLCJyb3VuZCIsImNvbnRlbnRTdHlsZSIsImxpbmVIZWlnaHQiLCJzY3JpcHR1cmVMYWJlbCIsImRpc2FibGVXb3JkUG9wb3Zlcl8iLCJlbmFibGVFZGl0IiwiZW5hYmxlQWxpZ25tZW50Iiwib3JpZ2luYWxSZXBvVXJsIiwic2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyIsImN1cnJlbnRWZXJzZVJlZiIsIl9zZXRTYXZlZENoYW5nZXMiLCJzb3VyY2VMYW5ndWFnZSIsInRhcmdldExhbmd1YWdlIiwiY3VycmVudEluZGV4Iiwic2F2ZWQiLCJfcmVmMyIsIl9yZWYzJGdldENoYW5nZXMiLCJnZXRDaGFuZ2VzIiwiX3JlZjMkY2xlYXJDaGFuZ2VzIiwiY2xlYXJDaGFuZ2VzIiwiX3JlZjMkc3RhdGUiLCJfdW5zYXZlZENoYW5nZXNMaXN0IiwiX2hhdmVVbnNhdmVkQ2hhbmdlcyIsImZpbmRSZWZJbkFycmF5IiwiZmluZEl0ZW0iLCJjaHVua3MiLCJyZWZMZW4iLCJpbmRleCIsImZpbmRJbmRleCIsImNodW5rIiwiaWR4Iiwic3Vic3RyaW5nIiwibmV4dENoYXIiLCJnZXRCb29rTmFtZSIsIl9zY3JpcHR1cmVDb25maWckcmVmZSIsImJvb2tDYXBzIiwidG9VcHBlckNhc2UiLCJmaWxlcGF0aCIsInNoYSIsIl91c2VFZGl0IiwiY29udGVudCIsImNvbmZpZyIsImRvbnRDcmVhdGVCcmFuY2giLCJ0aW1lb3V0Iiwic2VydmVyVGltZU91dCIsImF1dGhvciIsImVtYWlsIiwiYnJhbmNoIiwic2F2ZUVycm9yIiwiaXNTYXZlRXJyb3IiLCJpc0Vycm9yIiwib25TYXZlRWRpdCIsIm9uU2F2ZUVkaXRQYXRjaCIsImN1cnJlbnQiLCJfc2F2ZVN1Y2Nlc2Z1bCIsInByZXZDYXJkc1NhdmluZyIsInVuc2F2ZWRDYXJkSW5kaWNlcyIsIl9pdGVyYXRvciIsIl9zdGVwIiwiY2FyZEluZGV4IiwibG9nQ2hhbmdlZCIsImNvbW1lbnQiLCJpbml0aWFsIiwiZmluYWwiLCJkaWZmIiwiX3NhdmVFZGl0IiwiX3JlZjQiLCJfY2FsbGVlIiwidXBsb2FkRnVuY3Rpb24iLCJzdWNjZXNzIiwicmVzdWx0cyIsIl9zYXZlQ29udGVudCIsImZpbGVTaGEiLCJzYXZlZEJpYmxlVXNmbSIsImVkaXRlZEJpYmxlVXNmbSIsInVwVG9EYXRlIiwibmV3Q29udGV4dExpbmVzIiwiZGlmZlBhdGNoIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsIm1lcmdlVmVyc2VPYmplY3RzSW50b0JpYmxlVXNmbSIsInVwZGF0ZWRWZXJzZU9iamVjdHMiLCJuZXdVc2ZtIiwiY2hhcHRlckNodW5rcyIsInNwbGl0IiwiY2hhcHRlckluZGV4IiwiY3VycmVudENoYXB0ZXIiLCJ2ZXJzZUNodW5rcyIsInZlcnNlSW5kZXgiLCJmcm9udE1hdHRlciIsIm5ld1ZlcnNlVXNmbSIsImNvbnZlcnRWZXJzZURhdGFUb1VTRk0iLCJvbGRWZXJzZSIsInByZWZpeExlbiIsImluZGV4T2YiLCJ2ZXJzZU51bUxlbiIsIm5ld0NoYXB0ZXIiLCJqb2luIiwiZ2V0UmVhZHlGb3JTYXZlIiwiX2dldFJlYWR5Rm9yU2F2ZSIsIl9jYWxsZWUyIiwiY3JlYXRlRWRpdEJyYW5jaCIsImJpYmxlVXNmbUluaXRpYWwiLCJiaWJsZVVzZm1OZXciLCJtZXJnZUZhaWwiLCJfY2FyZE51bSIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJfdW5zYXZlZENoYW5nZXNMaXN0JF8iLCJfc3RhdGUiLCJfZ2V0Q2hhbmdlcyIsIl9yZWY1IiwiX3NhdmVEaWZmUGF0Y2giLCJfc2F2ZUZ1bGxCaWJsZUNvbnRlbnQiLCJuZXdCb29rSnNvbiIsIl9pdGVyYXRvcjMiLCJfc3RlcDMiLCJfY2FyZEluZGV4IiwiX2NhcmROdW0yIiwiX3Vuc2F2ZWRDaGFuZ2VzTGlzdCRfMiIsIl9nZXRDaGFuZ2VzMiIsIl9zdGF0ZTIiLCJfbmV3VXNmbSIsIl9nZXRDaGFuZ2VzMyIsIm5ld1ZlcnNlVGV4dCIsIl9yZWY2IiwiX3VwZGF0ZWRWZXJzZU9iamVjdHMiLCJ0YXJnZXRWZXJzZU9iamVjdHNfIiwiX0FsaWdubWVudEhlbHBlcnMkdXBkIiwidGFyZ2V0VmVyc2VPYmplY3RzIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvMTEiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJwYXJzZUludCIsInQwIiwidXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UiLCJ1cGRhdGVWZXJzZSIsInRvVVNGTSIsImZvcmNlZE5ld0xpbmVzIiwiX3JlZjciLCJfdmVyc2VzRm9yUmVmIiwibmV3U2VsZWN0aW9ucyIsInVwZGF0ZVNlbGVjdGlvbnMiLCJfbWFwIiwib3JpZ2luYWxCb29rSWQiLCJib29rVmVyc2VPYmplY3QiLCJjaGFwdGVycyIsIm5ld1NlbGVjdGVkUXVvdGUiLCJxdW90ZSIsIl9zZWxlY3RlZFF1b3RlJHJlZmVyZTMiLCJvcmlnaW5hbFZlcnNlcyIsInN1YnN0aXR1dGUiLCJzdGFydFZlcnNlIiwibGFzdFZlcnNlIiwiX3ZlcnNlIiwidmVyc2VzIiwiX2l0ZXJhdG9yNCIsIl9zdGVwNCIsInZlcnNlSXRlbSIsInZvIiwiX2Jvb2tWZXJzZU9iamVjdCRfY2hhIiwic2V0IiwiX3NlbGVjdGVkUXVvdGUkcmVmZXJlIiwiX3NlbGVjdGVkUXVvdGUkcmVmZXJlMiIsInN1YlJlZiIsInF1b3RlTWF0Y2hlcyIsImJvb2tPYmplY3QiLCJvY2N1cnJlbmNlIiwic2l6ZSIsIndvcmRzIiwiX2tleSIsIm1hcCIsIndvcmQiLCJ0ZXh0Iiwibm9ybWFsaXplU3RyaW5nIiwiYm9va3NOb3RTYW1lIiwiX3ZlcnNlc0ZvclJlZjIiLCJfZm91bmRPcmlnaW5hbENvbnRlbnQiLCJfaXRlcmF0b3I1IiwiX3N0ZXA1IiwiX2Jvb2tWZXJzZU9iamVjdCRfY2hhMiIsImlzVmVyc2VOb3RFbXB0eSIsInVwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1cyIsImFsaWduZWQiLCJfdmVyc2VzRm9yUmVmMyIsIl9yZWY4IiwicmVuZGVyZWRTY3JpcHR1cmVQYW5lcyIsIl9jdXJyZW50VmVyc2VEYXRhIiwiX2N1cnJlbnRWZXJzZURhdGEkdmVyIiwiaW5pdGlhbFZlcnNlT2JqZWN0cyIsIl9yZWY5IiwiYm9va0lkXyIsIl9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnIiwiaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50IiwiZGV0ZXJtaW5pbmdCcmFuY2giLCJvbkFsaWdubWVudEZpbmlzaCIsInNhdmluZyIsImhhbmRsZUFsaWduQnV0dG9uQ2xpY2siLCJvblJlbmRlclRvb2xiYXIiLCJfcmVmMTAiLCJuZXdJdGVtcyIsImFsbFZlcnNlc0FsaWduZWQiLCJldmVyeSIsImFsaWduU3RhdHVzIiwiYWxpZ25JY29uIiwiYWxpZ25CdXR0b25UZXh0IiwiY29sb3IiLCJvbkNsaWNrIiwiY3Vyc29yIiwiRnJhZ21lbnQiLCJvcGVuIiwib25DbG9zZSIsImxpbmsiLCJsaW5rVG9vbHRpcCIsInNlbGVjdGlvbkJvb2tPYmplY3RzIiwidGFyZ2V0VmVyc2VzRm9yUmVmIiwiaGlnaGxpZ2h0T25seUNvbXBsZXRlUXVvdGVzIiwib25TZWxlY3Rpb25zIiwib3JpZ2luYWxCb29rT2JqZWN0cyIsInJlZlN0cmluZyIsInNldHRpbmdzVGl0bGUiLCJnZXRDdXN0b21Db21wb25lbnQiLCJoaWRlTWFya2Rvd25Ub2dnbGUiLCJlZGl0YWJsZSIsIm9uVmVyc2VTZWxlY3QiLCJwcm9wVHlwZXMiLCJzdHJpbmciLCJpc1JlcXVpcmVkIiwib2JqZWN0IiwibnVtYmVyIiwiYm9vbCIsImZ1bmMiLCJzaGFwZSIsIm9uZU9mVHlwZSIsImFueSIsInNldEFyZVJlc291cmNlc0xvYWRpbmciLCJzZXRBcmVSZXNvdXJjZXNTYXZpbmciXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9TY3JpcHR1cmVDYXJkL1NjcmlwdHVyZUNhcmQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgeyBjb3JlLCBTZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyIH0gZnJvbSAnc2NyaXB0dXJlLXJlc291cmNlcy1yY2wnXG5pbXBvcnQgdXNmbWpzIGZyb20gJ3VzZm0tanMnXG5pbXBvcnQgeyB1c2VFZGl0IH0gZnJvbSAnZ2l0ZWEtcmVhY3QtdG9vbGtpdCdcbmltcG9ydCB7IEljb25CdXR0b24gfSBmcm9tICdAbXVpL21hdGVyaWFsJ1xuaW1wb3J0IHsgUnhMaW5rMiwgUnhMaW5rQnJlYWsyIH0gZnJvbSAncmVhY3QtaWNvbnMvcngnXG5pbXBvcnQge1xuICBDYXJkLFxuICBFcnJvckRpYWxvZyxcbiAgRVJST1JfU1RBVEUsXG4gIE1BTklGRVNUX05PVF9MT0FERURfRVJST1IsXG4gIFVwZGF0ZUJyYW5jaEJ1dHRvbixcbiAgdXNlQnJhbmNoTWVyZ2VyLFxuICB1c2VDYXJkU3RhdGUsXG4gIHVzZUNvbnRlbnRVcGRhdGVQcm9wcyxcbiAgdXNlTWFzdGVyTWVyZ2VQcm9wcyxcbiAgdXNlVXNlckJyYW5jaCxcbn0gZnJvbSAndHJhbnNsYXRpb24taGVscHMtcmNsJ1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIH0gZnJvbSAndXctcXVvdGUtaGVscGVycydcbmltcG9ydCB7IEFsaWdubWVudEhlbHBlcnMsIFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMgfSBmcm9tICd3b3JkLWFsaWduZXItcmNsJ1xuaW1wb3J0IHsgaXNFcXVhbCB9IGZyb20gJ0ByZWFjdC1ob29rei9kZWVwLWVxdWFsJ1xuaW1wb3J0IHsgZ2V0VmVyc2VzIH0gZnJvbSAnYmlibGUtcmVmZXJlbmNlLXJhbmdlJ1xuaW1wb3J0IHsgU2NyaXB0dXJlUGFuZSwgU2NyaXB0dXJlU2VsZWN0b3IgfSBmcm9tICcuLidcbmltcG9ydCB7IHVzZVNjcmlwdHVyZVNldHRpbmdzIH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlU2NyaXB0dXJlU2V0dGluZ3MnXG5pbXBvcnQge1xuICBjbGVhbnVwVmVyc2VPYmplY3RzLFxuICBlbXB0eUNvbnRlbnQsXG4gIGZldGNoQmlibGVCb29rLFxuICBmaXhPY2N1cnJlbmNlLFxuICBnZXRCb29rTmFtZUZyb21Vc2ZtRmlsZU5hbWUsXG4gIGdldFJlc291cmNlTGluayxcbiAgZ2V0UmVzb3VyY2VNZXNzYWdlLFxuICBnZXRTY3JpcHR1cmVWZXJzaW9uU2V0dGluZ3MsXG4gIGlzT3JpZ2luYWxCaWJsZSxcbn0gZnJvbSAnLi4vLi4vdXRpbHMvU2NyaXB0dXJlU2V0dGluZ3MnXG5pbXBvcnQgeyBkZWxheSB9IGZyb20gJy4uLy4uL3V0aWxzL2RlbGF5J1xuaW1wb3J0IHsgYXJlTWFwc1RoZVNhbWUgfSBmcm9tICcuLi8uLi91dGlscy9tYXBzJ1xuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICcuLi9TY3JpcHR1cmVQYW5lL3N0eWxlZCdcbmltcG9ydCB7XG4gIE5UX09SSUdfTEFORyxcbiAgT1JJR0lOQUxfU09VUkNFLFxuICBPVF9PUklHX0xBTkcsXG59IGZyb20gJy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHsgVmVyc2VTZWxlY3RvclBvcHVwIH0gZnJvbSAnLi4vVmVyc2VTZWxlY3RvclBvcHVwJ1xuaW1wb3J0IHsgZ2V0UGF0Y2ggfSBmcm9tICcuLi8uLi91dGlscy9maWxlcydcbmltcG9ydCB7IFNjcmlwdHVyZVJlZmVyZW5jZVR5cGUsIFZlcnNlT2JqZWN0c1R5cGUgfSBmcm9tICcuLi8uLi90eXBlcydcblxuY29uc3QgS0VZX0ZPTlRfU0laRV9CQVNFID0gJ3NjcmlwdHVyZVBhbmVGb250U2l6ZV8nXG5jb25zdCBsYWJlbCA9ICdWZXJzaW9uJ1xuY29uc3Qgc3R5bGUgPSB7IG1hcmdpblRvcDogJzE2cHgnLCB3aWR0aDogJzUwMHB4JyB9XG5cbi8qKlxuICogY3JlYXRlIGEgc2hvcnQgY29tcGFyaXNvbiB2ZXJzZSByZWYgb2JqZWN0IHdpdGhvdXQgYWxsIHRoZSB2ZXJzZURhdGFcbiAqIEBwYXJhbSB2ZXJzZVJlZlxuICovXG5mdW5jdGlvbiBjb21wYXJlT2JqZWN0KHZlcnNlUmVmKSB7XG4gIGNvbnN0IHtcbiAgICBjaGFwdGVyLFxuICAgIHZlcnNlLFxuICAgIHZlcnNlRGF0YSxcbiAgfSA9IHZlcnNlUmVmIHx8IHt9XG4gIGNvbnN0IHZlcnNlT2JqZWN0cyA9IHZlcnNlRGF0YT8udmVyc2VPYmplY3RzPy5sZW5ndGggPyBKU09OLnN0cmluZ2lmeSh2ZXJzZURhdGEudmVyc2VPYmplY3RzKSA6ICcnXG4gIHJldHVybiB7XG4gICAgY2hhcHRlcixcbiAgICB2ZXJzZSxcbiAgICB2ZXJzZU9iamVjdHMsXG4gIH1cbn1cblxuLyoqXG4gKiBjb21wYXJlIHR3byB2ZXJzZSByZWZzIHRvIHNlZSBpZiB0aGV5IGFyZSBzdWJzdGFudGlhbGx5IHNpbWlsYXJcbiAqIEBwYXJhbSB2ZXJzZXNGb3JSZWYxXG4gKiBAcGFyYW0gdmVyc2VzRm9yUmVmMlxuICovXG5mdW5jdGlvbiBhcmVWZXJzZXNTYW1lKHZlcnNlc0ZvclJlZjE6IGFueVtdLCB2ZXJzZXNGb3JSZWYyOiBhbnlbXSkge1xuICB2ZXJzZXNGb3JSZWYxID0gdmVyc2VzRm9yUmVmMSB8fCBbXVxuICB2ZXJzZXNGb3JSZWYyID0gdmVyc2VzRm9yUmVmMiB8fCBbXVxuICBsZXQgYXJlU2FtZSA9IGZhbHNlXG5cbiAgaWYgKHZlcnNlc0ZvclJlZjEubGVuZ3RoID09PSB2ZXJzZXNGb3JSZWYyLmxlbmd0aCkge1xuICAgIGFyZVNhbWUgPSB0cnVlXG5cbiAgICBmb3IgKGxldCBpID0gMCwgbD0gdmVyc2VzRm9yUmVmMS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGNvbnN0IHZlcnNlMSA9IGNvbXBhcmVPYmplY3QodmVyc2VzRm9yUmVmMVtpXSlcbiAgICAgIGNvbnN0IHZlcnNlMiA9IGNvbXBhcmVPYmplY3QodmVyc2VzRm9yUmVmMltpXSlcbiAgICAgIGFyZVNhbWUgPSBpc0VxdWFsKHZlcnNlMSwgdmVyc2UyKVxuXG4gICAgICBpZiAoIWFyZVNhbWUpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYXJlU2FtZVxufVxuXG4vKipcbiAqIGdldCB0aGUgVVNGTSBmb3IgYm9va0lkIGZyb20gc2NyaXB0dXJlQ29uZmlnLlxuICogQHBhcmFtIHtvYmplY3R9IHNjcmlwdHVyZUNvbmZpZ1xuICogQHBhcmFtIHtzdHJpbmd9IGJvb2tJZFxuICovXG5leHBvcnQgY29uc3QgZ2V0Q3VycmVudEJvb2sgPSAoc2NyaXB0dXJlQ29uZmlnLCBib29rSWQpID0+IHtcbiAgY29uc3QgbGF0ZXN0QmlibGUgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdGU/LnJlc291cmNlPy5wcm9qZWN0SWRcbiAgY29uc3QgZmlsZW5hbWUgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdGU/LnJlc291cmNlPy5uYW1lIC8vIExpa2UgXCI1Ny1USVQudXNmbVwiXG4gIGxldCBpc0Jvb2tWYWxpZCA9IGZhbHNlXG4gIGNvbnN0IGJvb2tOYW1lID0gZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lKGZpbGVuYW1lKVxuICBpc0Jvb2tWYWxpZCA9IGJvb2tOYW1lPy50b0xvd2VyQ2FzZSgpPy5pbmNsdWRlcyhib29rSWQpXG4gIGlmICghaXNCb29rVmFsaWQpIHtcbiAgICBjb25zb2xlLndhcm4oYEN1cnJlbnQgYm9va0lkIGlzICR7Ym9va0lkfSBhbmQgVVNGTSBmaWxlIGlzICR7ZmlsZW5hbWV9YClcbiAgfVxuICBpZiAobGF0ZXN0QmlibGU/LnRvTG93ZXJDYXNlKCkgIT09IGJvb2tJZCkge1xuICAgIGNvbnNvbGUud2FybihgQ3VycmVudCBib29rSWQgaXMgJHtib29rSWR9IGJ1dCBmZXRjaGVkIHByb2plY3RJZCBpcyAke2xhdGVzdEJpYmxlfWApXG4gICAgaXNCb29rVmFsaWQgPSBmYWxzZVxuICB9XG4gIGlmIChpc0Jvb2tWYWxpZCkge1xuICAgIGNvbnN0IGJpYmxlVXNmbSA9IHNjcmlwdHVyZUNvbmZpZz8uYmlibGVVc2ZtO1xuICAgIGlmIChiaWJsZVVzZm0pIHtcbiAgICAgIHJldHVybiBiaWJsZVVzZm1cbiAgICB9XG4gICAgY29uc29sZS5lcnJvcihgZ2V0Q3VycmVudEJvb2soKSAtIEJpYmxlIFVTRk0gbWlzc2luZ2ApXG4gIH1cbiAgY29uc29sZS5lcnJvcihgZ2V0Q3VycmVudEJvb2soKSAtIEV4cGVjdGVkICR7Ym9va0lkfSBidXQgZ290IGZpbGUgJHtmaWxlbmFtZX1gKVxuICByZXR1cm4gbnVsbFxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTY3JpcHR1cmVDYXJkKHtcbiAgYXBwUmVmLFxuICBhdXRoZW50aWNhdGlvbixcbiAgYm9va0luZGV4LFxuICBjYXJkTnVtLFxuICBjbGFzc2VzLFxuICBkaXNhYmxlV29yZFBvcG92ZXIsXG4gIGdldExhbmd1YWdlLFxuICBnZXRMZXhpY29uRGF0YSxcbiAgZ3JlZWtSZXBvVXJsLFxuICBoZWJyZXdSZXBvVXJsLFxuICBodHRwQ29uZmlnLFxuICBpZCxcbiAgaXNOVCxcbiAgbG9nZ2VkSW5Vc2VyLFxuICBtZXJnZUNoZWNrLFxuICBvbk1pbmltaXplLFxuICBvblJlc291cmNlRXJyb3IsXG4gIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMsXG4gIHJlZmVyZW5jZTogcmVmZXJlbmNlXyxcbiAgcmVzb3VyY2U6IHtcbiAgICBvd25lcixcbiAgICBsYW5ndWFnZUlkLFxuICAgIHJlc291cmNlSWQsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICB9LFxuICByZXNvdXJjZUxpbmssXG4gIHNlbGVjdGVkUXVvdGUsXG4gIHNlcnZlcixcbiAgc2V0Q2FyZHNMb2FkaW5nTWVyZ2UsXG4gIHNldENhcmRzTG9hZGluZ1VwZGF0ZSxcbiAgc2V0Q2FyZHNTYXZpbmcsXG4gIHNldFNhdmVkQ2hhbmdlcyxcbiAgc2V0V29yZEFsaWduZXJTdGF0dXMsXG4gIHRyYW5zbGF0ZSxcbiAgdGl0bGUsXG4gIHVzZVVzZXJMb2NhbFN0b3JhZ2UsXG4gIHVwZGF0ZU1lcmdlU3RhdGUsXG59KSB7XG4gIGNvbnN0IHNhdmVJblByb2dyZXNzID0gUmVhY3QudXNlUmVmKGZhbHNlKTsgLy8gQWRkIHJlZiB0byB0cmFjayBzYXZlIG9wZXJhdGlvblxuICBjb25zdCBib29rSWQgPSByZWZlcmVuY2VfPy5ib29rSWQgfHwgcmVmZXJlbmNlXz8ucHJvamVjdElkIC8vIG9sZGVyIHZlcnNpb25zIHVzZSBwcm9qZWN0SWQsIHNvIGZhbGwgYmFjayB0byB0aGF0XG4gIGNvbnN0IHJlZmVyZW5jZSA9IHtcbiAgICBib29rSWQsXG4gICAgY2hhcHRlcjogcmVmZXJlbmNlXz8uY2hhcHRlcixcbiAgICB2ZXJzZTogcmVmZXJlbmNlXz8udmVyc2UsXG4gIH1cbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV9dID0gUmVhY3QudXNlU3RhdGUoe1xuICAgIGNoZWNrRm9yRWRpdEJyYW5jaDogMCxcbiAgICBjb250ZXh0TGluZXM6IDQsXG4gICAgY3VycmVudFJlZmVyZW5jZTogbnVsbCxcbiAgICBlZGl0QnJhbmNoUmVhZHk6IGZhbHNlLFxuICAgIGVkaXRWZXJzZTogbnVsbCxcbiAgICBmb3VuZE9yaWdpbmFsQ29udGVudDogZmFsc2UsXG4gICAgaGF2ZVVuc2F2ZWRDaGFuZ2VzOiBmYWxzZSxcbiAgICBsYXN0U2VsZWN0ZWRRdW90ZTogbnVsbCxcbiAgICByZWFkeUZvckZldGNoOiBmYWxzZSxcbiAgICByZWY6IGFwcFJlZixcbiAgICBzYXZlQ2xpY2tlZDogZmFsc2UsXG4gICAgc2F2ZUNvbnRlbnQ6IG51bGwsXG4gICAgc2F2ZURpZmZQYXRjaDogZmFsc2UsXG4gICAgc2F2ZUZ1bGxCaWJsZUNvbnRlbnQ6IG51bGwsXG4gICAgc2VsZWN0aW9uczogbmV3IE1hcCgpLFxuICAgIHNlbGVjdGlvbnNSZWZzOiAnJyxcbiAgICBzaG93QWxpZ25tZW50UG9wdXA6IGZhbHNlLFxuICAgIHN0YXJ0U2F2ZTogZmFsc2UsXG4gICAgdXJsRXJyb3I6IG51bGwsXG4gICAgdXNpbmdVc2VyQnJhbmNoOiBmYWxzZSxcbiAgICB1bnNhdmVkQ2hhbmdlc0xpc3Q6IHt9LFxuICAgIHZlcnNlc0FsaWdubWVudFN0YXR1czogbnVsbCxcbiAgICB2ZXJzZXNGb3JSZWY6IG51bGwsXG4gICAgdmVyc2VPYmplY3RzTWFwOiBuZXcgTWFwKCksXG4gICAgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogbnVsbCxcbiAgfSlcbiAgY29uc3Qge1xuICAgIGNoZWNrRm9yRWRpdEJyYW5jaCxcbiAgICBjb250ZXh0TGluZXMsXG4gICAgY3VycmVudFJlZmVyZW5jZSxcbiAgICBlZGl0QnJhbmNoUmVhZHksXG4gICAgZWRpdFZlcnNlLCAvLyBrZWVwIHRyYWNrIG9mIHZlcnNlIGJlaW5nIGVkaXR0ZWRcbiAgICBmb3VuZE9yaWdpbmFsQ29udGVudCxcbiAgICBoYXZlVW5zYXZlZENoYW5nZXMsXG4gICAgbGFzdFNlbGVjdGVkUXVvdGUsXG4gICAgcmVhZHlGb3JGZXRjaCxcbiAgICByZWYsXG4gICAgc2F2ZUNsaWNrZWQsXG4gICAgc2F2ZUNvbnRlbnQsXG4gICAgc2F2ZURpZmZQYXRjaCxcbiAgICBzYXZlRnVsbEJpYmxlQ29udGVudCxcbiAgICBzZWxlY3Rpb25zLFxuICAgIHNlbGVjdGlvbnNSZWZzLFxuICAgIHNob3dBbGlnbm1lbnRQb3B1cCxcbiAgICBzdGFydFNhdmUsXG4gICAgdXJsRXJyb3IsXG4gICAgdXNpbmdVc2VyQnJhbmNoLFxuICAgIHVuc2F2ZWRDaGFuZ2VzTGlzdCxcbiAgICB2ZXJzZU9iamVjdHNNYXAsXG4gICAgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCxcbiAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXMsXG4gICAgdmVyc2VzRm9yUmVmLFxuICB9ID0gc3RhdGVcblxuICBjb25zdCBbZm9udFNpemUsIHNldEZvbnRTaXplXSA9IHVzZVVzZXJMb2NhbFN0b3JhZ2UoS0VZX0ZPTlRfU0laRV9CQVNFICsgY2FyZE51bSwgMTAwKVxuICBjb25zdCBpc05UXyA9IGlzTlQoYm9va0lkKVxuXG4gIGZ1bmN0aW9uIHNldFN0YXRlKG5ld1N0YXRlKSB7XG4gICAgc2V0U3RhdGVfKHByZXZTdGF0ZSA9PiAoeyAuLi5wcmV2U3RhdGUsIC4uLm5ld1N0YXRlIH0pKVxuICB9XG5cbiAgaHR0cENvbmZpZyA9IHtcbiAgICAuLi5odHRwQ29uZmlnLFxuICAgIGNhY2hlOiB7IG1heEFnZTogMCB9LFxuICAgIG5vQ2FjaGU6IHRydWUsXG4gIH0gLy8gZGlzYWJsZSBodHRwIGNhY2hpbmdcblxuICBjb25zdCB7XG4gICAgaXNOZXdUZXN0YW1lbnQsXG4gICAgc2NyaXB0dXJlQ29uZmlnLFxuICAgIHNldFNjcmlwdHVyZSxcbiAgICBzY3JpcHR1cmVTZXR0aW5ncyxcbiAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdCxcbiAgfSA9IHVzZVNjcmlwdHVyZVNldHRpbmdzKHtcbiAgICBhcHBSZWY6IHJlZixcbiAgICBjYXJkTnVtLFxuICAgIGRpc2FibGVXb3JkUG9wb3ZlcixcbiAgICBncmVla1JlcG9VcmwsXG4gICAgaGVicmV3UmVwb1VybCxcbiAgICBodHRwQ29uZmlnLFxuICAgIGlzTlQsXG4gICAgbGFuZ3VhZ2VJZCxcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gICAgb3duZXIsXG4gICAgcmVhZHlGb3JGZXRjaCxcbiAgICByZWZlcmVuY2U6IGN1cnJlbnRSZWZlcmVuY2UgfHwgcmVmZXJlbmNlLFxuICAgIHJlc291cmNlSWQsXG4gICAgcmVzb3VyY2VMaW5rLFxuICAgIHNldFVybEVycm9yOiAoZXJyb3IpID0+IHNldFN0YXRlKHsgdXJsRXJyb3I6IGVycm9yIH0pLFxuICAgIHNlcnZlcixcbiAgICB0aXRsZSxcbiAgICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICAgIHdob2xlQm9vazogdHJ1ZSxcbiAgfSlcblxuICBjb25zdCBmZXRjaGVkUmVzb3VyY2UgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdGVcbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCByZXBvID0gYCR7c2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ubGFuZ3VhZ2VJZH1fJHtzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5wcm9qZWN0SWR9YFxuICBjb25zdCB1c2luZ09yaWdpbmFsQmlibGUgPSBpc09yaWdpbmFsQmlibGUoc2NyaXB0dXJlQ29uZmlnWydyZXNvdXJjZSddPy5wcm9qZWN0SWQpXG5cblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IGNhcmRSZXNvdXJjZUlkID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucHJvamVjdElkIHx8IHJlc291cmNlSWRcbiAgLy8gQHRzLWlnbm9yZVxuICBsZXQgcmVmXyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/LnJlZiB8fCBhcHBSZWZcbiAgY29uc3QgY2FuVXNlRWRpdEJyYW5jaCA9ICEhKGxvZ2dlZEluVXNlciAmJiBhdXRoZW50aWNhdGlvbiAmJiAocmVzb3VyY2VJZCAhPT0gT1JJR0lOQUxfU09VUkNFKSAmJiAvLyBUUklDS1kgaWYgbm90IG9yaWdpbmFsIGxhbmd1YWdlIGFuZCB3ZSBoYXZlIGxvZ2luIGRhdGEsIHRoZW4gd2UgY2FuIHVzZSB0aGUgZWRpdCBicmFuY2hcbiAgICAoKHJlZl8gPT09ICdtYXN0ZXInKSB8fCAocmVmXy5pbmNsdWRlcyhsb2dnZWRJblVzZXIpKSkpIC8vIGFsc28gbWFrZSBzdXJlIG5vdCBhIHZlcnNpb24gdGFnXG5cbiAgY29uc3Qge1xuICAgIHN0YXRlOiB7XG4gICAgICBicmFuY2hEZXRlcm1pbmVkLFxuICAgICAgdXNlckVkaXRCcmFuY2hOYW1lLFxuICAgICAgdXNpbmdVc2VyQnJhbmNoOiBfdXNpbmdVc2VyQnJhbmNoLFxuICAgICAgd29ya2luZ1Jlc291cmNlQnJhbmNoLFxuICAgIH0sXG4gICAgYWN0aW9uczoge1xuICAgICAgc3RhcnRFZGl0OiBzdGFydEVkaXRCcmFuY2gsXG4gICAgICBmaW5pc2hFZGl0LFxuICAgIH0sXG4gIH0gPSB1c2VVc2VyQnJhbmNoKHtcbiAgICBhcHBSZWYsXG4gICAgYXV0aGVudGljYXRpb246IGNhblVzZUVkaXRCcmFuY2ggPyBhdXRoZW50aWNhdGlvbiA6IG51bGwsXG4gICAgYm9va0lkLFxuICAgIGNhcmRJZDogaWQsXG4gICAgY2FyZFJlc291cmNlSWQsXG4gICAgY2hlY2tGb3JFZGl0QnJhbmNoLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgbG9nZ2VkSW5Vc2VyOiBjYW5Vc2VFZGl0QnJhbmNoID8gbG9nZ2VkSW5Vc2VyIDogbnVsbCxcbiAgICBvd25lcixcbiAgICBvblJlc291cmNlRXJyb3IsXG4gICAgc2VydmVyLFxuICAgIHVzZVVzZXJMb2NhbFN0b3JhZ2UsXG4gIH0pXG5cbiAgY29uc3QgX3VzZUJyYW5jaE1lcmdlciA9IHVzZUJyYW5jaE1lcmdlcih7XG4gICAgc2VydmVyLFxuICAgIG93bmVyLFxuICAgIHJlcG8sXG4gICAgdXNlckJyYW5jaDogdXNlckVkaXRCcmFuY2hOYW1lLFxuICAgIHRva2VuaWQ6IGF1dGhlbnRpY2F0aW9uPy50b2tlbj8uc2hhMSxcbiAgICB1c2VySWQ6IGF1dGhlbnRpY2F0aW9uPy51c2VyPy5sb2dpblxuICB9KVxuICBjb25zdCB7XG4gICAgc3RhdGU6IHtcbiAgICAgIG1lcmdlU3RhdHVzOiBtZXJnZVRvTWFzdGVyLFxuICAgICAgdXBkYXRlU3RhdHVzOiBtZXJnZUZyb21NYXN0ZXIsXG4gICAgfSxcbiAgICBhY3Rpb25zOiB7XG4gICAgICBjaGVja01lcmdlU3RhdHVzLFxuICAgIH1cbiAgfSA9IF91c2VCcmFuY2hNZXJnZXJcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChtZXJnZUNoZWNrID4gMCAmJiBjaGVja01lcmdlU3RhdHVzKSB7XG4gICAgICAvLyBXcmFwIGluIHRyeS9jYXRjaCDigJQgZGNzLWJyYW5jaC1tZXJnZXIgY2FuIHRocm93IG9uIDQwNC80MDkgZnJvbSAvcHVsbHMgZW5kcG9pbnRzXG4gICAgICAvLyB3aGVuIG5vIFBSIGV4aXN0cyBmb3IgYSByZXNvdXJjZSdzIHVzZXIgYnJhbmNoLiBUaGlzIGlzIG5vcm1hbCBhbmQgc2hvdWxkIG5vdCBjcmFzaCB0aGUgYXBwLlxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gY2hlY2tNZXJnZVN0YXR1cygpXG4gICAgICAgIGlmIChyZXN1bHQgJiYgdHlwZW9mIHJlc3VsdC5jYXRjaCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHJlc3VsdC5jYXRjaChlcnIgPT4gY29uc29sZS53YXJuKGBSZXNvdXJjZUNhcmQoJHtjYXJkUmVzb3VyY2VJZH0pIG1lcmdlIGNoZWNrIGZhaWxlZDpgLCBlcnI/Lm1lc3NhZ2UgfHwgZXJyKSlcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgUmVzb3VyY2VDYXJkKCR7Y2FyZFJlc291cmNlSWR9KSBtZXJnZSBjaGVjayB0aHJldzpgLCBlcnI/Lm1lc3NhZ2UgfHwgZXJyKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW21lcmdlQ2hlY2tdKVxuXG4gIGNvbnN0IHVwZGF0ZUJ1dHRvblByb3BzID0gdXNlQ29udGVudFVwZGF0ZVByb3BzKHtcbiAgICBpc1NhdmluZzogc3RhcnRTYXZlLFxuICAgIHVzZUJyYW5jaE1lcmdlcjogX3VzZUJyYW5jaE1lcmdlcixcbiAgICBvblVwZGF0ZTogKCkgPT4ge1xuICAgICAgZGVsYXkoNTAwKS50aGVuKCgpID0+IHNjcmlwdHVyZUNvbmZpZz8ucmVsb2FkUmVzb3VyY2UoKSlcbiAgICB9LFxuICB9KVxuXG4gIGNvbnN0IHtcbiAgICBjYWxsVXBkYXRlVXNlckJyYW5jaCxcbiAgICBpc0Vycm9yRGlhbG9nT3BlbixcbiAgICBvbkNsb3NlRXJyb3JEaWFsb2csXG4gICAgaXNMb2FkaW5nOiBpc1VwZGF0ZUxvYWRpbmcsXG4gICAgZGlhbG9nTWVzc2FnZSxcbiAgICBkaWFsb2dUaXRsZSxcbiAgICBkaWFsb2dMaW5rLFxuICAgIGRpYWxvZ0xpbmtUb29sdGlwLFxuICB9ID0gdXBkYXRlQnV0dG9uUHJvcHNcblxuICBjb25zdCBvbk1lcmdlID0gKCkgPT4ge1xuICAgIGZpbmlzaEVkaXQoKVxuICAgIGNvbnNvbGUubG9nKGBvbk1lcmdlKCkgc3dpdGNoaW5nIGJhY2sgdG8gbWFzdGVyIGFmdGVyIG1lcmdlIGFwcFJlZjpgLCBhcHBSZWYpXG4gICAgc2V0U3RhdGUoe1xuICAgICAgcmVhZHlGb3JGZXRjaDogZmFsc2UsXG4gICAgICByZWY6IGFwcFJlZixcbiAgICB9KVxuICAgIGRlbGF5KDUwMCkudGhlbigoKSA9PiB7XG4gICAgICBzZXRTdGF0ZSh7XG4gICAgICAgIGNoZWNrRm9yRWRpdEJyYW5jaDogY2hlY2tGb3JFZGl0QnJhbmNoICsgMSwgLy8gdHJpZ2dlciByZWNoZWNrIG9mIHVzZXIgYnJhbmNoIHdoaWNoIHdpbGwgc3dpdGNoIHRoZSBicmFuY2ggYmFjayB0byBtYXN0ZXJcbiAgICAgICAgcmVhZHlGb3JGZXRjaDogZmFsc2UsXG4gICAgICB9KVxuICAgIH0pXG4gIH1cblxuICBjb25zdCB7IGlzTG9hZGluZzogaXNNZXJnZUxvYWRpbmcsIGNhbGxNZXJnZVVzZXJCcmFuY2ggfSA9IHVzZU1hc3Rlck1lcmdlUHJvcHMoe1xuICAgIGlzU2F2aW5nOiBzdGFydFNhdmUsXG4gICAgdXNlQnJhbmNoTWVyZ2VyOiBfdXNlQnJhbmNoTWVyZ2VyLFxuICAgIG9uTWVyZ2UsXG4gIH0pXG5cbiAgLy8gU2luY2Ugb3JpZ2luYWwgdGV4dCAoR3JlZWsvSGVicmV3KSBzaG91bGQgbm90IGJlIGVkaXRlZCwgZG8gbm90IGluY2x1ZGVcbiAgLy8gdGhlbSBpbiBtZXJnZSBzdGF0ZSBzaW5jZSB1c2VyIHdpbGwgbm90IG1lcmdlL3B1c2ggY2hhbmdlcy5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoY2FyZFJlc291cmNlSWQgJiYgIXVzaW5nT3JpZ2luYWxCaWJsZSkge1xuICAgICAgdXBkYXRlTWVyZ2VTdGF0ZSAmJiB1cGRhdGVNZXJnZVN0YXRlKFxuICAgICAgICBjYXJkUmVzb3VyY2VJZCxcbiAgICAgICAgc2NyaXB0dXJlQ29uZmlnLnRpdGxlIHx8IHNjcmlwdHVyZVNldHRpbmdzLnRpdGxlLFxuICAgICAgICBtZXJnZUZyb21NYXN0ZXIsXG4gICAgICAgIG1lcmdlVG9NYXN0ZXIsXG4gICAgICAgIGNhbGxVcGRhdGVVc2VyQnJhbmNoLFxuICAgICAgICBjYWxsTWVyZ2VVc2VyQnJhbmNoLFxuICAgICAgKVxuICAgIH1cbiAgfSxbY2FyZFJlc291cmNlSWQsIHNjcmlwdHVyZUNvbmZpZy50aXRsZSwgbWVyZ2VGcm9tTWFzdGVyLCBtZXJnZVRvTWFzdGVyXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc1VwZGF0ZUxvYWRpbmcpIHtcbiAgICAgIHNldENhcmRzTG9hZGluZ1VwZGF0ZT8uKHByZXZDYXJkc0xvYWRpbmcgPT4gWy4uLnByZXZDYXJkc0xvYWRpbmcsIGNhcmRSZXNvdXJjZUlkXSlcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0Q2FyZHNMb2FkaW5nVXBkYXRlPy4ocHJldkNhcmRzTG9hZGluZyA9PiBwcmV2Q2FyZHNMb2FkaW5nLmZpbHRlcihjYXJkSWQgPT4gY2FyZElkICE9PSBjYXJkUmVzb3VyY2VJZCkpXG4gICAgfVxuICB9LCBbaXNVcGRhdGVMb2FkaW5nXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc01lcmdlTG9hZGluZykge1xuICAgICAgc2V0Q2FyZHNMb2FkaW5nTWVyZ2U/LihwcmV2Q2FyZHNMb2FkaW5nID0+IFsuLi5wcmV2Q2FyZHNMb2FkaW5nLCBjYXJkUmVzb3VyY2VJZF0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHNldENhcmRzTG9hZGluZ01lcmdlPy4ocHJldkNhcmRzTG9hZGluZyA9PiBwcmV2Q2FyZHNMb2FkaW5nLmZpbHRlcihjYXJkSWQgPT4gY2FyZElkICE9PSBjYXJkUmVzb3VyY2VJZCkpXG4gICAgfVxuICB9LCBbaXNNZXJnZUxvYWRpbmddKVxuXG4gIGNvbnN0IHdvcmtpbmdSZWYgPSBjYW5Vc2VFZGl0QnJhbmNoID8gd29ya2luZ1Jlc291cmNlQnJhbmNoIDogYXBwUmVmXG4gIGxldCBzY3JpcHR1cmVUaXRsZVxuXG4gIGlmICghY2FuVXNlRWRpdEJyYW5jaCAmJiAhcmVhZHlGb3JGZXRjaCkgeyAvLyBpZiBiaWJsZSBub3QgZWxpZ2libGUgZm9yIHVzZXIgYnJhbmNoLCBtYWtlIHN1cmUgaXQncyByZWFkeVxuICAgIHNldFN0YXRlKHsgcmVhZHlGb3JGZXRjaDogdHJ1ZSB9KVxuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZCBib29rIGNoYW5nZWRgLCB7IGJvb2tJZCwgb3duZXIsIGxhbmd1YWdlSWQsIHJlc291cmNlSWQgfSlcblxuICAgIGlmIChjYW5Vc2VFZGl0QnJhbmNoKSB7IC8vIGlmIGJpYmxlIGVsaWdpYmxlIGZvciB1c2VyIGJyYW5jaCwgcmVmcmVzaCBpdFxuICAgICAgc2V0U3RhdGUoeyByZWFkeUZvckZldGNoOiBmYWxzZSwgY2hlY2tGb3JFZGl0QnJhbmNoOiBjaGVja0ZvckVkaXRCcmFuY2ggKyAxIH0pXG4gICAgfVxuICB9LCBbYm9va0lkLCBvd25lciwgbGFuZ3VhZ2VJZCwgcmVzb3VyY2VJZF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzRXF1YWwocmVmZXJlbmNlLCBjdXJyZW50UmVmZXJlbmNlKSkge1xuICAgICAgLy8gY29uc29sZS5sb2coYFNjcmlwdHVyZUNhcmQgcmVmZXJlbmNlIGNoYW5nZWRgLCByZWZlcmVuY2UpXG4gICAgICBzZXRTdGF0ZSh7IGN1cnJlbnRSZWZlcmVuY2U6IHJlZmVyZW5jZSwgZWRpdFZlcnNlOiBudWxsIH0pXG4gICAgfVxuICB9LCBbcmVmZXJlbmNlXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB3YWl0aW5nIGZvciBicmFuY2ggZmV0Y2ggdG8gY29tcGxldGVcbiAgICBpZiAoIXJlYWR5Rm9yRmV0Y2ggJiYgYnJhbmNoRGV0ZXJtaW5lZCApIHtcbiAgICAgIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVDYXJkIGJyYW5jaERldGVybWluZWQgaXMgJHticmFuY2hEZXRlcm1pbmVkfSBhbmQgd29ya2luZ1JlZiBpcyAke3dvcmtpbmdSZWZ9YClcbiAgICAgIHNldFN0YXRlKHsgcmVhZHlGb3JGZXRjaDogdHJ1ZSwgcmVmOiB3b3JraW5nUmVmIH0pXG4gICAgfVxuICB9LCBbYnJhbmNoRGV0ZXJtaW5lZF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gc2VsZWN0IGNvcnJlY3Qgd29ya2luZyByZWYgLSBjb3VsZCBiZSBtYXN0ZXIsIHVzZXIgYnJhbmNoLCBvciByZWxlYXNlXG4gICAgaWYgKF91c2luZ1VzZXJCcmFuY2ggIT09IHVzaW5nVXNlckJyYW5jaCkge1xuICAgICAgc2V0U3RhdGUoeyB1c2luZ1VzZXJCcmFuY2g6IF91c2luZ1VzZXJCcmFuY2ggfSlcbiAgICB9XG4gIH0sIFtfdXNpbmdVc2VyQnJhbmNoLCB1c2luZ1VzZXJCcmFuY2hdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHVwZGF0ZSBkaXNwbGF5IHN0YXR1cyBpZiBlcnJvclxuICAgIGNvbnN0IGVycm9yID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXR1cz8uW0VSUk9SX1NUQVRFXVxuXG4gICAgaWYgKGVycm9yKSB7IC8vIGlmIGVycm9yIHdhcyBmb3VuZCBkbyBjYWxsYmFja1xuICAgICAgY29uc3QgcmVzb3VyY2VTdGF0dXMgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdHVzXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCByZXNvdXJjZUxpbmsgPSBnZXRSZXNvdXJjZUxpbmsoc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZSlcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBnZXRSZXNvdXJjZU1lc3NhZ2UocmVzb3VyY2VTdGF0dXMsIHNlcnZlciwgcmVzb3VyY2VMaW5rLCBpc05UXylcbiAgICAgIGNvbnN0IGlzQWNjZXNzRXJyb3IgPSByZXNvdXJjZVN0YXR1c1tNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SXVxuICAgICAgb25SZXNvdXJjZUVycm9yICYmIG9uUmVzb3VyY2VFcnJvcihtZXNzYWdlLCBpc0FjY2Vzc0Vycm9yLCByZXNvdXJjZVN0YXR1cylcbiAgICB9XG4gIH0sIFtzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdHVzPy5bRVJST1JfU1RBVEVdXSlcblxuICBpZiAoc2NyaXB0dXJlQ29uZmlnLnRpdGxlICYmIHNjcmlwdHVyZUNvbmZpZy52ZXJzaW9uKSB7XG4gICAgc2NyaXB0dXJlVGl0bGUgPSBgJHtzY3JpcHR1cmVDb25maWcudGl0bGV9IHYke3NjcmlwdHVyZUNvbmZpZy52ZXJzaW9ufWBcbiAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdC51cGRhdGVUaXRsZShzY3JpcHR1cmVDb25maWcucmVzb3VyY2VMaW5rLCBzY3JpcHR1cmVUaXRsZSlcbiAgfSBlbHNlIHtcbiAgICBzY3JpcHR1cmVUaXRsZSA9IGBUaXRsZSBtaXNzaW5nIGZyb20gcHJvamVjdCBtYW5pZmVzdGBcbiAgfVxuXG4gIC8qKiBEeW5hbWljYWxseSBjcmVhdGVzIHRoZSBzY3JpcHR1cmUgc2VsZWN0aW9uIGRyb3Bkb3duIHRvIGJlIGluc2VydGVkIGludG8gY2FyZCBzZXR0aW5ncyAqL1xuICBmdW5jdGlvbiBnZXRTY3JpcHR1cmVTZWxlY3RvcigpIHtcbiAgICBjb25zdCBzY3JpcHR1cmVTZWxlY3Rpb25Db25maWcgPSBnZXRTY3JpcHR1cmVWZXJzaW9uU2V0dGluZ3Moe1xuICAgICAgbGFiZWwsXG4gICAgICByZXNvdXJjZUxpbms6IHNjcmlwdHVyZUNvbmZpZy5yZXNvdXJjZUxpbmssXG4gICAgICBzZXRTY3JpcHR1cmUsXG4gICAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdCxcbiAgICB9KVxuXG4gICAgcmV0dXJuIDxTY3JpcHR1cmVTZWxlY3RvciB7Li4uc2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnfSBzdHlsZT17c3R5bGV9IGVycm9yTWVzc2FnZT17dXJsRXJyb3J9IC8+XG4gIH1cblxuICAvKipcbiAgICogc2V0IGVkaXQgc3RhdGUgZm9yIHNwZWNpZmljIHZlcnNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2ZXJzZVJlZiAtIHJlZmVyZW5jZSBvZiB2ZXJzZSBiZWluZyBlZGl0ZWQgb3IgZmluaXNoZWQgZWRpdFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGVkaXRpbmcgLSB0cnVlIHdoZW4gZWRpdGluZ1xuICAgKi9cbiAgZnVuY3Rpb24gc2V0RWRpdFZlcnNlKHZlcnNlUmVmLCBlZGl0aW5nKSB7XG4gICAgaWYgKGVkaXRpbmcgJiYgKHZlcnNlUmVmICE9PSBlZGl0VmVyc2UpKSB7IC8vIGNoZWNrIGlmIHdlIG5lZWQgdG8gc2V0IGZsYWcgdGhhdCB3ZSBhcmUgZWRpdGluZyB0aGlzIHZlcnNlXG4gICAgICBzZXRTdGF0ZSh7IGVkaXRWZXJzZTogdmVyc2VSZWYgfSlcbiAgICB9IGVsc2UgaWYgKCFlZGl0aW5nICYmICh2ZXJzZVJlZiA9PT0gZWRpdFZlcnNlKSkgeyAvLyBjbGVhciBlZGl0IGZsYWcgaWYgaXQgaXMgZm9yIGN1cnJlbnQgZWRpdCB2ZXJzZVxuICAgICAgc2V0U3RhdGUoeyBlZGl0VmVyc2U6IG51bGwgfSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBkaXNhYmxlQ2hhbmdlQnV0dG9ucyA9ICEhZWRpdFZlcnNlIC8vIHdlIGRvbid0IHdhbnQgdG8gYWxsb3cgY2xpY2tpbmcgb24gY2hhbmdlIGJ1dHRvbnMgd2hpbGUgZWRpdGluZ1xuXG4gIGZ1bmN0aW9uIG9uTWVudUNsb3NlKCkge1xuICAgIC8vIGNvbnNvbGUubG9nKGBvbk1lbnVDbG9zZSgpYClcbiAgICBzZXRTdGF0ZSh7IHVybEVycm9yOiBudWxsIH0pXG4gIH1cblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IGxhbmd1YWdlSWRfID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ubGFuZ3VhZ2VJZFxuICBjb25zdCBsYW5ndWFnZSA9IGdldExhbmd1YWdlKHsgbGFuZ3VhZ2VJZDogbGFuZ3VhZ2VJZF8gfSlcbiAgY29uc3QgZGlyZWN0aW9uID0gKGxhbmd1YWdlPy5kaXJlY3Rpb24pIHx8ICdsdHInXG4gIGNvbnN0IF9yZWZlcmVuY2UgPSBjdXJyZW50UmVmZXJlbmNlIHx8IHJlZmVyZW5jZVxuXG4gIGNvbnN0IGlzSGVicmV3ID0gKGxhbmd1YWdlSWRfID09PSAnaGJvJylcbiAgY29uc3QgZm9udEZhY3RvciA9IGlzSGVicmV3ID8gMS40IDogMSAvLyB3ZSBhdXRvbWF0aWNhbGx5IHNjYWxlIHVwIGZvbnQgc2l6ZSBmb3IgSGVicmV3XG4gIGNvbnN0IHNjYWxlZEZvbnRTaXplID0gZm9udFNpemUgKiBmb250RmFjdG9yXG5cbiAgY29uc3QgaXRlbXMgPSBudWxsXG4gIGNvbnN0IHtcbiAgICBzdGF0ZToge1xuICAgICAgaGVhZGVycywgZmlsdGVycywgaXRlbUluZGV4LCBtYXJrZG93blZpZXcsXG4gICAgfSxcbiAgICBhY3Rpb25zOiB7XG4gICAgICBzZXRGaWx0ZXJzLCBzZXRJdGVtSW5kZXgsIHNldE1hcmtkb3duVmlldyxcbiAgICB9LFxuICB9ID0gdXNlQ2FyZFN0YXRlKHsgaXRlbXMgfSlcblxuICBjb25zdCByZWZTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgICBmb250U2l6ZTogYCR7TWF0aC5yb3VuZChzY2FsZWRGb250U2l6ZSAqIDAuOSl9JWAsXG4gIH0pLCBbc2NhbGVkRm9udFNpemVdKVxuXG4gIGNvbnN0IGNvbnRlbnRTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgICBmb250U2l6ZTogYCR7c2NhbGVkRm9udFNpemV9JWAsXG4gICAgLi4uKGlzSGVicmV3ID8ge2xpbmVIZWlnaHQ6ICcyLjBlbSd9IDoge30pXG4gIH0pLCBbc2NhbGVkRm9udFNpemVdKVxuXG4gIGNvbnN0IHNjcmlwdHVyZUxhYmVsID0gPFRpdGxlPntzY3JpcHR1cmVUaXRsZX08L1RpdGxlPlxuICBsZXQgZGlzYWJsZVdvcmRQb3BvdmVyXyA9IGRpc2FibGVXb3JkUG9wb3ZlclxuXG4gIGlmIChkaXNhYmxlV29yZFBvcG92ZXIgPT09IHVuZGVmaW5lZCkgeyAvLyBpZiBub3Qgc3BlY2lmaWVkLCB0aGVuIGRldGVybWluZSBpZiBvcmlnaW5hbCBsYW5ndWFnZSByZXNvdXJjZVxuICAgIGRpc2FibGVXb3JkUG9wb3Zlcl8gPSAhdXNpbmdPcmlnaW5hbEJpYmxlXG4gIH1cblxuICBjb25zdCBlbmFibGVFZGl0ID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICBjb25zdCBlbmFibGVBbGlnbm1lbnQgPSAhdXNpbmdPcmlnaW5hbEJpYmxlICYmIGZvdW5kT3JpZ2luYWxDb250ZW50XG4gIGNvbnN0IG9yaWdpbmFsUmVwb1VybCA9IGlzTmV3VGVzdGFtZW50ID8gZ3JlZWtSZXBvVXJsIDogaGVicmV3UmVwb1VybFxuICBjb25zdCBzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnID0ge1xuICAgIGF1dGhlbnRpY2F0aW9uOiBjYW5Vc2VFZGl0QnJhbmNoID8gYXV0aGVudGljYXRpb24gOiBudWxsLFxuICAgIGJvb2tJbmRleCxcbiAgICBjdXJyZW50VmVyc2VSZWY6IF9yZWZlcmVuY2UsXG4gICAgZW5hYmxlRWRpdCxcbiAgICBlbmFibGVBbGlnbm1lbnQsXG4gICAgaHR0cENvbmZpZyxcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaXNOZXdUZXN0YW1lbnQsXG4gICAgbG9nZ2VkSW5Vc2VyOiBjYW5Vc2VFZGl0QnJhbmNoID8gbG9nZ2VkSW5Vc2VyIDogbnVsbCxcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIG9yaWdpbmFsUmVwb1VybCxcbiAgICBzY3JpcHR1cmVDb25maWcsXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MsXG4gICAgc3RhcnRFZGl0QnJhbmNoLFxuICAgIHNldFNhdmVkQ2hhbmdlczogX3NldFNhdmVkQ2hhbmdlcyxcbiAgICBzb3VyY2VMYW5ndWFnZTogaXNOVF8gPyBOVF9PUklHX0xBTkcgOiBPVF9PUklHX0xBTkcsXG4gICAgdGFyZ2V0TGFuZ3VhZ2U6IGxhbmd1YWdlLFxuICAgIHRpdGxlOiBzY3JpcHR1cmVUaXRsZSxcbiAgICB3b3JraW5nUmVzb3VyY2VCcmFuY2g6IHJlZixcbiAgfVxuXG4gIC8qKlxuICAgKiB0aGlzIGdldHMgY2FsbGVkIHdoZW5ldmVyIGEgc2NyaXB0dXJlIHBhbmUgaGFzIGEgY2hhbmdlIGluIHNhdmUgc3RhdGVcbiAgICogQHBhcmFtIHtudW1iZXJ9IGN1cnJlbnRJbmRleFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHNhdmVkXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGdldENoYW5nZXMgLSB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciB1c2VyIGNsaWNrcyBzYXZlIGJ1dHRvblxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjbGVhckNoYW5nZXMgLSB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciBzYXZlIGhhcyBjb21wbGV0ZWRcbiAgICogQHBhcmFtIHtvYmplY3R9IHN0YXRlIC0gY3VycmVudCBzdGF0ZSBvZiB3b3JkIGFsaWdubWVudC9lZGl0XG4gICAqL1xuICBmdW5jdGlvbiBfc2V0U2F2ZWRDaGFuZ2VzKGN1cnJlbnRJbmRleCwgc2F2ZWQsIHsgZ2V0Q2hhbmdlcyA9IG51bGwsIGNsZWFyQ2hhbmdlcyA9IG51bGwsIHN0YXRlID0gbnVsbCB9KSB7XG4gICAgY29uc3QgX3Vuc2F2ZWRDaGFuZ2VzTGlzdCA9IHsgLi4udW5zYXZlZENoYW5nZXNMaXN0IH1cblxuICAgIGlmIChzYXZlZCkge1xuICAgICAgaWYgKF91bnNhdmVkQ2hhbmdlc0xpc3QuaGFzT3duUHJvcGVydHkoY3VycmVudEluZGV4KSkge1xuICAgICAgICBkZWxldGUgX3Vuc2F2ZWRDaGFuZ2VzTGlzdFtjdXJyZW50SW5kZXhdXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIF91bnNhdmVkQ2hhbmdlc0xpc3RbY3VycmVudEluZGV4XSA9IHsgZ2V0Q2hhbmdlcywgY2xlYXJDaGFuZ2VzLCBzdGF0ZSB9IC8vIHVwZGF0ZSB3aXRoIGxhdGVzdFxuICAgIH1cblxuICAgIGNvbnN0IF9oYXZlVW5zYXZlZENoYW5nZXMgPSAhIU9iamVjdC5rZXlzKF91bnNhdmVkQ2hhbmdlc0xpc3QpLmxlbmd0aFxuXG4gICAgaWYgKGhhdmVVbnNhdmVkQ2hhbmdlcyAhPSBfaGF2ZVVuc2F2ZWRDaGFuZ2VzKSB7XG4gICAgICBzZXRTYXZlZENoYW5nZXMgJiYgc2V0U2F2ZWRDaGFuZ2VzKHJlc291cmNlSWQsICFfaGF2ZVVuc2F2ZWRDaGFuZ2VzKVxuICAgICAgc2V0U3RhdGUoeyBoYXZlVW5zYXZlZENoYW5nZXM6IF9oYXZlVW5zYXZlZENoYW5nZXMgfSlcbiAgICB9XG5cbiAgICBpZiAoIWlzRXF1YWwoX3Vuc2F2ZWRDaGFuZ2VzTGlzdCwgdW5zYXZlZENoYW5nZXNMaXN0KSkge1xuICAgICAgc2V0U3RhdGUoeyB1bnNhdmVkQ2hhbmdlc0xpc3Q6IF91bnNhdmVkQ2hhbmdlc0xpc3QgfSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogc2VhcmNoIGNoYXB0ZXIgb3IgdmVyc2UgY2h1bmsgdG8gbGluZSB0aGF0IHN0YXJ0cyB3aXRoIGZpbmRJdGVtXG4gICAqIEBwYXJhbSB7bnVtYmVyfHN0cmluZ30gZmluZEl0ZW1cbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gY2h1bmtzXG4gICAqL1xuICBmdW5jdGlvbiBmaW5kUmVmSW5BcnJheShmaW5kSXRlbSwgY2h1bmtzKSB7XG4gICAgY29uc3QgcmVmXyA9IGZpbmRJdGVtICsgJydcbiAgICBjb25zdCByZWZMZW4gPSByZWZfLmxlbmd0aFxuICAgIGNvbnN0IGluZGV4ID0gY2h1bmtzLmZpbmRJbmRleCgoY2h1bmssIGlkeCkgPT4ge1xuICAgICAgaWYgKGlkeCA+IDApIHtcbiAgICAgICAgaWYgKGNodW5rLnN1YnN0cmluZygwLCByZWZMZW4pID09PSByZWZfKSB7XG4gICAgICAgICAgY29uc3QgbmV4dENoYXIgPSBjaHVua1tyZWZMZW5dXG5cbiAgICAgICAgICBpZiAoKG5leHRDaGFyID4gJzknKSB8fCAobmV4dENoYXIgPCAnMCcpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSlcbiAgICByZXR1cm4gaW5kZXhcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEJvb2tOYW1lKCkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBib29rQ2FwcyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVmZXJlbmNlPy5ib29rSWQgPyBzY3JpcHR1cmVDb25maWcucmVmZXJlbmNlLmJvb2tJZC50b1VwcGVyQ2FzZSgpIDogJydcbiAgICByZXR1cm4gYCR7Ym9va0luZGV4fS0ke2Jvb2tDYXBzfS51c2ZtYFxuICB9XG5cbiAgY29uc3QgZmlsZXBhdGggPSBnZXRCb29rTmFtZSgpXG4gIGNvbnN0IHNoYSA9IGZldGNoZWRSZXNvdXJjZT8uc2hhXG5cbiAgLy8ga2VlcCB0cmFjayBvZiB2ZXJzZSBlZGl0IHN0YXRlXG4gIGNvbnN0IHtcbiAgICBlcnJvcjogc2F2ZUVycm9yLFxuICAgIGlzRXJyb3I6IGlzU2F2ZUVycm9yLFxuICAgIG9uU2F2ZUVkaXQsXG4gICAgb25TYXZlRWRpdFBhdGNoLFxuICB9ID0gdXNlRWRpdCh7XG4gICAgc2hhLFxuICAgIG93bmVyLFxuICAgIGNvbnRlbnQ6IHNhdmVDb250ZW50LFxuICAgIGNvbmZpZzoge1xuICAgICAgY2FjaGU6IHsgbWF4QWdlOiAwIH0sXG4gICAgICAuLi5hdXRoZW50aWNhdGlvbj8uY29uZmlnLFxuICAgICAgZG9udENyZWF0ZUJyYW5jaDogdHJ1ZSxcbiAgICAgIHRva2VuOiBhdXRoZW50aWNhdGlvbj8udG9rZW4sXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB0aW1lb3V0OiBodHRwQ29uZmlnPy5zZXJ2ZXJUaW1lT3V0IHx8IGh0dHBDb25maWc/LnRpbWVvdXQgfHwgMTAwMDAsXG4gICAgICBzZXJ2ZXIsXG4gICAgfSxcbiAgICBhdXRob3I6IGxvZ2dlZEluVXNlcixcbiAgICBlbWFpbDogYXV0aGVudGljYXRpb24/LnVzZXI/LmVtYWlsLFxuICAgIHRva2VuOiBhdXRoZW50aWNhdGlvbj8udG9rZW4sXG4gICAgYnJhbmNoOiB3b3JraW5nUmVzb3VyY2VCcmFuY2gsXG4gICAgZmlsZXBhdGgsXG4gICAgcmVwbyxcbiAgfSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB3aGVuIHdlIGdldCBhIHNhdmUgc2F2ZUVycm9yXG4gICAgaWYgKHNhdmVFcnJvciAmJiBpc1NhdmVFcnJvciAmJiAhc3RhcnRTYXZlKSB7IC8vIGlmIGVycm9yIHRoZW4gc2hvdyBhZnRlciBzYXZlIGNvbXBsZXRlcywgc2luY2Ugd2UgbWF5IHJldHJ5XG4gICAgICBjb25zb2xlLmxvZyhgc2F2ZSBlcnJvcmAsIHNhdmVFcnJvcilcbiAgICAgIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobnVsbCwgZmFsc2UsIG51bGwsIGBFcnJvciBzYXZpbmcgJHtsYW5ndWFnZUlkfV8ke2NhcmRSZXNvdXJjZUlkfSAke3NhdmVFcnJvcn1gLCB0cnVlKVxuICAgICAgc2F2ZUluUHJvZ3Jlc3MuY3VycmVudCA9IGZhbHNlOyAvLyBSZXNldCB0aGUgZmxhZyBvbiBlcnJvclxuICAgIH1cbiAgfSwgW3NhdmVFcnJvciwgaXNTYXZlRXJyb3IsIHN0YXJ0U2F2ZV0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gd2hlbiBzdGFydFNhdmUgZ29lcyB0cnVlLCBzYXZlIGVkaXRzIHRvIHVzZXIgYnJhbmNoIGFuZCB0aGVuIGNsZWFyIHN0YXJ0U2F2ZVxuICAgIGZ1bmN0aW9uIF9zYXZlU3VjY2VzZnVsKCkge1xuICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2ZSBzY3JpcHR1cmUgZWRpdHMgc3VjY2Vzc2ApXG4gICAgICBzZXRDYXJkc1NhdmluZyhwcmV2Q2FyZHNTYXZpbmcgPT4gcHJldkNhcmRzU2F2aW5nLmZpbHRlcihjYXJkSWQgPT4gY2FyZElkICE9PSBjYXJkUmVzb3VyY2VJZCkpXG4gICAgICBzZXRTdGF0ZSh7XG4gICAgICAgIHN0YXJ0U2F2ZTogZmFsc2UsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCB1bnNhdmVkQ2FyZEluZGljZXMgPSBPYmplY3Qua2V5cyh1bnNhdmVkQ2hhbmdlc0xpc3QpXG5cbiAgICAgIGlmICh1bnNhdmVkQ2FyZEluZGljZXM/Lmxlbmd0aCkge1xuICAgICAgICBmb3IgKGNvbnN0IGNhcmRJbmRleCBvZiB1bnNhdmVkQ2FyZEluZGljZXMpIHtcbiAgICAgICAgICBjb25zdCB7Y2xlYXJDaGFuZ2VzfSA9IHVuc2F2ZWRDaGFuZ2VzTGlzdFtjYXJkSW5kZXhdXG4gICAgICAgICAgY2xlYXJDaGFuZ2VzICYmIGNsZWFyQ2hhbmdlcygpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc29sZS5pbmZvKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIFJlbG9hZGluZyByZXNvdXJjZScpXG4gICAgICBzZXRTdGF0ZSh7XG4gICAgICAgIHN0YXJ0U2F2ZTogZmFsc2UsXG4gICAgICAgIHJlYWR5Rm9yRmV0Y2g6IHRydWUsXG4gICAgICAgIHNhdmVGdWxsQmlibGVDb250ZW50OiBudWxsLFxuICAgICAgICBzYXZlQ29udGVudDogbnVsbCxcbiAgICAgICAgcmVmOiB1c2VyRWRpdEJyYW5jaE5hbWUsXG4gICAgICB9KVxuICAgICAgZGVsYXkoMTAwKS50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0Q2FyZHNTYXZpbmcocHJldkNhcmRzU2F2aW5nID0+IHByZXZDYXJkc1NhdmluZy5maWx0ZXIoY2FyZElkID0+IGNhcmRJZCAhPT0gY2FyZFJlc291cmNlSWQpKVxuICAgICAgICBzY3JpcHR1cmVDb25maWc/LnJlbG9hZFJlc291cmNlKHNoYSwgdXNlckVkaXRCcmFuY2hOYW1lKVxuICAgICAgfSlcbiAgICAgIHNhdmVJblByb2dyZXNzLmN1cnJlbnQgPSBmYWxzZTsgLy8gUmVzZXQgdGhlIGZsYWcgb24gc3VjY2Vzc1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb2dDaGFuZ2VkKGNvbW1lbnQsIGluaXRpYWwsIGZpbmFsLCBkaWZmLCBzaGEpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYCR7Y29tbWVudH0gLSBzaGE6YCwgc2hhKVxuICAgICAgY29uc29sZS5lcnJvcihgaW5pdGlhbGAsIGluaXRpYWwpXG4gICAgICBjb25zb2xlLmVycm9yKGBmaW5hbGAsIGZpbmFsKVxuICAgICAgY29uc29sZS5lcnJvcihgZGlmZmAsIGRpZmYpXG4gICAgfVxuXG4gICAgY29uc3QgX3NhdmVFZGl0ID0gYXN5bmMgKCkgPT4geyAvLyBiZWdpbiB1cGxvYWRpbmcgbmV3IFVTRk1cbiAgICAgIGlmIChzYXZlSW5Qcm9ncmVzcy5jdXJyZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIFNhdmUgYWxyZWFkeSBpbiBwcm9ncmVzcywgc2tpcHBpbmcgZHVwbGljYXRlIGNhbGwnKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBzYXZlSW5Qcm9ncmVzcy5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgIGNvbnNvbGUuaW5mbyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBVc2luZyBzaGE6ICR7c2hhfWApXG4gICAgICBsZXQgdXBsb2FkRnVuY3Rpb24gPSBvblNhdmVFZGl0XG4gICAgICBpZiAoc2F2ZURpZmZQYXRjaCkge1xuICAgICAgICB1cGxvYWRGdW5jdGlvbiA9IG9uU2F2ZUVkaXRQYXRjaCAvLyBpZiB3ZSBhcmUgc2VuZGluZyB1cCBhIGRpZmZwYXRjaCwgd2Ugd2lsbCB1c2UgdGhpcyBtZXRob2RcbiAgICAgIH1cblxuICAgICAgbGV0IHN1Y2Nlc3MgPSBhd2FpdCB1cGxvYWRGdW5jdGlvbih1c2VyRWRpdEJyYW5jaE5hbWUpLnRoZW4ociA9PiByKS5jYXRjaCgoKSA9PiBmYWxzZSkvLyBwdXNoIGNoYW5nZSB0byBzZXJ2ZXJcbiAgICAgIGxldCBlcnJvciA9IHN1Y2Nlc3MgPyBudWxsIDogJ3NhdmluZyBjaGFuZ2VkIHNjcmlwdHVyZSBmYWlsZWQnXG5cbiAgICAgIGlmICghc3VjY2VzcykgeyAvLyBpZiBzYXZlIGZhaWxlZCwgYXR0ZW1wdCBhIHJldHJ5XG4gICAgICAgIC8vIGxvZ0NoYW5nZWQoJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2aW5nIGNoYW5nZWQgc2NyaXB0dXJlIGZhaWxlZCwgc2VudCcsIHNhdmVGdWxsQmlibGVDb250ZW50Py5pbml0aWFsLCBzYXZlRnVsbEJpYmxlQ29udGVudD8ubmV3LCBzYXZlQ29udGVudCwgc2hhKVxuICAgICAgICBjb25zb2xlLmVycm9yKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmluZyBjaGFuZ2VkIHNjcmlwdHVyZSBmYWlsZWQsIHJldHJ5aW5nIC0gY29udGV4dCBsaW5lcyBhcmUgJHtjb250ZXh0TGluZXN9LCBkaWZmOlxcbmAsIHNhdmVDb250ZW50KVxuICAgICAgICBhd2FpdCBkZWxheSg1MDApIC8vIHNpbmNlIHdlIGhhZCBhbiBlcnJvciwgd2FpdCBmb3IgZGF0YSB0byB1cGRhdGUgb24gc2VydmVyIGJlZm9yZSBnZXR0aW5nIHRoZSBsYXRlc3RcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAvLyBmZXRjaCB0aGUgbGF0ZXN0IGJvb2sgY29udGVudCwgc28gd2UgY2FuIHRlbGwgaWYgbGF0ZXN0IGNoYW5nZXMgd2VyZSBzYXZlZCBhbmQgaGF2ZSB0aGUgbGF0ZXN0IGZpbGUgc2hhXG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBmZXRjaEJpYmxlQm9vayhzZXJ2ZXIsIGh0dHBDb25maWcsIHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2UsIHNjcmlwdHVyZUNvbmZpZz8ucmVmZXJlbmNlKVxuICAgICAgICBlcnJvciA9IHJlc3VsdHM/LmVycm9yXG4gICAgICAgIGxldCBfc2F2ZUNvbnRlbnQgPSBzYXZlQ29udGVudFxuICAgICAgICBsZXQgZmlsZVNoYSA9IG51bGxcbiAgICAgICAgY29uc3Qgc2F2ZWRCaWJsZVVzZm0gPSByZXN1bHRzPy5iaWJsZVVzZm1cbiAgICAgICAgY29uc3QgZWRpdGVkQmlibGVVc2ZtID0gc2F2ZUZ1bGxCaWJsZUNvbnRlbnQ/Lm5ld1xuICAgICAgICBsZXQgdXBUb0RhdGUgPSBzYXZlZEJpYmxlVXNmbSA9PT0gZWRpdGVkQmlibGVVc2ZtIC8vIGNoZWNrIGlmIG5ldyBiaWJsZSBjb250ZW50IGRpZmZlcnMgZnJvbSBsYXRlc3Qgb24gcmVwb1xuXG4gICAgICAgIGlmICghZXJyb3IpIHtcbiAgICAgICAgICBpZiAodXBUb0RhdGUpIHsgLy8gaWYgdGhlIGRhdGEgd2UgYXJlIHRyeWluZyB0byBzYXZlIG1hdGNoZXMgd2hhdCBpcyBub3cgb24gdGhlIHNlcnZlciB0aGVyZSBpcyBub3RoaW5nIHRvIGRvXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBkYXRhIHdhcyBjb3JyZWN0bHkgdXBsb2FkZWQsIHNvIG5vdGhpbmcgbW9yZSB0byBkbycpXG4gICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgbmV3Q29udGV4dExpbmVzID0gY29udGV4dExpbmVzICsgMVxuICAgICAgICAgICAgaWYgKHNhdmVEaWZmUGF0Y2gpIHtcbiAgICAgICAgICAgICAgYXdhaXQgZGVsYXkoMTAwKSAvLyBhbGxvdyBVSSB0byB1cGRhdGUgYmVmb3JlIHJ1bm5pbmcgY29tcHV0YXRpb25hbGx5IGV4cGVuc2l2ZSBmdW5jdGlvblxuICAgICAgICAgICAgICAvLyByZWdlbmVyYXRlIHRoZSBwYXRjaCBhZ2FpbnN0IHRoZSBsYXRlc3QgY29udGVudCBhbmQgYWRkIG1vcmUgbGluZXMgb2YgY29udGV4dFxuICAgICAgICAgICAgICAvLyBUUklDS1kgLSB3ZSBoYXZlIG5vdGljZWQgdGhhdCBEQ1Mgd2lsbCBmYWlsIHRoZSBwYXRjaCBzb21ldGltZXMsIGJ1dCBpZiB3ZSBpbmNyZWFzZSB0aGUgY29udGV4dCBsaW5lIGNvdW50IGl0IHdpbGwgc3VjY2VlZCwgc28gd2UgYXJlIGluY3JlYXNpbmcgdGhlIGNvbnRleHQgbGluZSBjb3VudFxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBjb250ZXh0IGxpbmVzIGFyZSBub3cgJHtuZXdDb250ZXh0TGluZXN9YClcbiAgICAgICAgICAgICAgY29uc3QgZGlmZlBhdGNoID0gZ2V0UGF0Y2goc2F2ZUZ1bGxCaWJsZUNvbnRlbnQ/LmZpbGVuYW1lLCBzYXZlZEJpYmxlVXNmbSwgZWRpdGVkQmlibGVVc2ZtLCBmYWxzZSwgbmV3Q29udGV4dExpbmVzKVxuICAgICAgICAgICAgICBfc2F2ZUNvbnRlbnQgPSBkaWZmUGF0Y2hcbiAgICAgICAgICAgICAgZmlsZVNoYSA9IHJlc3VsdHM/LnNoYVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzdWNjZXNzID0gYXdhaXQgdXBsb2FkRnVuY3Rpb24odXNlckVkaXRCcmFuY2hOYW1lLCBfc2F2ZUNvbnRlbnQsIGZpbGVTaGEpIC8vIHB1c2ggY2hhbmdlIHRvIHNlcnZlclxuICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgICAgICAgIGxvZ0NoYW5nZWQoJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2aW5nIGNoYW5nZWQgc2NyaXB0dXJlIGZhaWxlZCBvbiBzZWNvbmQgYXR0ZW1wdCwgc2VudCcsIHNhdmVkQmlibGVVc2ZtLCBlZGl0ZWRCaWJsZVVzZm0sIF9zYXZlQ29udGVudCwgZmlsZVNoYSlcbiAgICAgICAgICAgICAgZXJyb3IgPSAnc2F2aW5nIGNoYW5nZWQgc2NyaXB0dXJlIGZhaWxlZCBvbiBzZWNvbmQgYXR0ZW1wdCdcbiAgICAgICAgICAgICAgbmV3Q29udGV4dExpbmVzKysgLy8gaWYgZmFpbGVkIGluY3JlYXNlIHRoZSBjb3VudCBmb3IgbmV4dCBhdHRlbXB0XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZygnc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZlIHN1Y2Nlc3NmdWwgb24gc2Vjb25kIHdpdGggZGlmZicsIF9zYXZlQ29udGVudClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuZXdDb250ZXh0TGluZXMgPiAxMCkge1xuICAgICAgICAgICAgICBuZXdDb250ZXh0TGluZXMgPSA0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRTdGF0ZSh7Y29udGV4dExpbmVzOiBuZXdDb250ZXh0TGluZXN9KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIWVycm9yICYmIHN1Y2Nlc3MpIHsgLy8gaWYgbm8gZXJyb3IgbWVzc2FnZSBhbmQgc2F2ZSB3YXMgYSBzdWNjZXNzXG4gICAgICAgIHJldHVybiBfc2F2ZVN1Y2Nlc2Z1bCgpIC8vIG5vdGhpbmcgdG8gZG9cbiAgICAgIH1cblxuICAgICAgY29uc29sZS5lcnJvcihgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSAke2Vycm9yIHx8ICd1bmtub3duIHNhdmUgZXJyb3InfWApXG4gICAgICBzZXRDYXJkc1NhdmluZyhwcmV2Q2FyZHNTYXZpbmcgPT4gcHJldkNhcmRzU2F2aW5nLmZpbHRlcihjYXJkSWQgPT4gY2FyZElkICE9PSBjYXJkUmVzb3VyY2VJZCkpXG4gICAgICBzZXRTdGF0ZSh7c3RhcnRTYXZlOiBmYWxzZX0pXG4gICAgICBzYXZlSW5Qcm9ncmVzcy5jdXJyZW50ID0gZmFsc2U7IC8vIFJlc2V0IHRoZSBmbGFnIG9uIGZhaWx1cmVcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIGlmIChzdGFydFNhdmUpIHtcbiAgICAgIGlmICghZWRpdEJyYW5jaFJlYWR5KSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBlZGl0IGJyYW5jaCBub3QgeWV0IGNyZWF0ZWRgKVxuICAgICAgfSBlbHNlIGlmICghc2hhKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBzYXZlIHNoYSBub3QgeWV0IHJlYWR5YClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBjYWxsaW5nIF9zYXZlRWRpdCgpYClcbiAgICAgICAgc2V0Q2FyZHNTYXZpbmcocHJldkNhcmRzU2F2aW5nID0+IFsuLi5wcmV2Q2FyZHNTYXZpbmcsIGNhcmRSZXNvdXJjZUlkXSlcbiAgICAgICAgX3NhdmVFZGl0KClcbiAgICAgIH1cbiAgICB9XG5cbiAgfSwgW3N0YXJ0U2F2ZSwgZWRpdEJyYW5jaFJlYWR5LCBzaGFdKVxuXG4gIC8qKlxuICAgKiBjb252ZXJ0IHVwZGF0ZWRWZXJzZU9iamVjdHMgdG8gVVNGTSBhbmQgbWVyZ2UgaW50byB0aGUgYmlibGVVc2ZtXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBiaWJsZVVzZm0gLSBVU0ZNIG9mIGJpYmxlXG4gICAqIEBwYXJhbSB7U2NyaXB0dXJlUmVmZXJlbmNlVHlwZX0gcmVmIC0gcmVmZXJlbmNlIG9mIHZlcnNlIHRvIG1lcmdlIGluXG4gICAqIEBwYXJhbSB7VmVyc2VPYmplY3RzVHlwZX0gdXBkYXRlZFZlcnNlT2JqZWN0cyAtIG5ldyB2ZXJzZSBpbiB2ZXJzZU9iamVjdCBmb3JtYXRcbiAgICogQHBhcmFtIHtudW1iZXJ9IGNhcmROdW1cbiAgICovXG4gIGZ1bmN0aW9uIG1lcmdlVmVyc2VPYmplY3RzSW50b0JpYmxlVXNmbShiaWJsZVVzZm06IHN0cmluZywgcmVmOiBTY3JpcHR1cmVSZWZlcmVuY2VUeXBlLCB1cGRhdGVkVmVyc2VPYmplY3RzOiBWZXJzZU9iamVjdHNUeXBlLCBjYXJkTnVtOiBudW1iZXIpIHtcbiAgICBsZXQgbmV3VXNmbVxuICAgIGNvbnN0IGNoYXB0ZXJDaHVua3MgPSBiaWJsZVVzZm0/LnNwbGl0KCdcXFxcYyAnKVxuICAgIGNvbnN0IGNoYXB0ZXJJbmRleCA9IGZpbmRSZWZJbkFycmF5KHJlZj8uY2hhcHRlciwgY2hhcHRlckNodW5rcylcblxuICAgIGlmIChjaGFwdGVySW5kZXggPj0gMCkge1xuICAgICAgY29uc3QgY3VycmVudENoYXB0ZXIgPSBjaGFwdGVyQ2h1bmtzW2NoYXB0ZXJJbmRleF1cbiAgICAgIGxldCB2ZXJzZUNodW5rcyA9IGN1cnJlbnRDaGFwdGVyLnNwbGl0KCdcXFxcdiAnKVxuICAgICAgY29uc3QgdmVyc2VJbmRleCA9IGZpbmRSZWZJbkFycmF5KHJlZj8udmVyc2UsIHZlcnNlQ2h1bmtzKVxuICAgICAgY29uc3QgZnJvbnRNYXR0ZXIgPSByZWY/LnZlcnNlID09PSAnZnJvbnQnXG5cbiAgICAgIGlmIChmcm9udE1hdHRlciB8fCB2ZXJzZUluZGV4ID49IDApIHtcbiAgICAgICAgY29uc3QgbmV3VmVyc2VVc2ZtID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5jb252ZXJ0VmVyc2VEYXRhVG9VU0ZNKHVwZGF0ZWRWZXJzZU9iamVjdHMpXG4gICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIG5ldyBVU0ZNIGZvciBjYXJkICR7Y2FyZE51bX0sIHZlcnNlICR7cmVmPy52ZXJzZX06fSAtICR7bmV3VmVyc2VVc2ZtLnN1YnN0cmluZygwLCAxMDApfWApXG4gICAgICAgIGlmIChmcm9udE1hdHRlcikgeyAvLyBmcm9udCBtYXR0ZXIgZ29lcyBiZWZvcmUgZmlyc3QgdmVyc2VcbiAgICAgICAgICBjb25zdCBvbGRWZXJzZSA9IHZlcnNlQ2h1bmtzWzBdXG4gICAgICAgICAgY29uc3QgcHJlZml4TGVuID0gb2xkVmVyc2UuaW5kZXhPZignXFxuJykgLy8gY2hhcmFjdGVycyBiZWZvcmUgdGhlIGZyb250IG1hdHRlciB0ZXh0XG4gICAgICAgICAgdmVyc2VDaHVua3NbMF0gPSBvbGRWZXJzZS5zdWJzdHJpbmcoMCwgcHJlZml4TGVuICsgMSkgKyBuZXdWZXJzZVVzZm1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBvbGRWZXJzZSA9IHZlcnNlQ2h1bmtzW3ZlcnNlSW5kZXhdXG4gICAgICAgICAgY29uc3QgdmVyc2VOdW1MZW4gPSAocmVmPy52ZXJzZSArICcnKS5sZW5ndGggLy8gY2hhcmFjdGVycyBiZWZvcmUgdGhlIHZlcnNlIHRleHRcbiAgICAgICAgICB2ZXJzZUNodW5rc1t2ZXJzZUluZGV4XSA9IG9sZFZlcnNlLnN1YnN0cmluZygwLCB2ZXJzZU51bUxlbiArIDEpICsgbmV3VmVyc2VVc2ZtXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3Q2hhcHRlciA9IHZlcnNlQ2h1bmtzLmpvaW4oJ1xcXFx2ICcpXG4gICAgICAgIGNoYXB0ZXJDaHVua3NbY2hhcHRlckluZGV4XSA9IG5ld0NoYXB0ZXJcbiAgICAgICAgbmV3VXNmbSA9IGNoYXB0ZXJDaHVua3Muam9pbignXFxcXGMgJylcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ld1VzZm1cbiAgfVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIGZvciBlYWNoIHVuc2F2ZWQgY2hhbmdlLCBjYWxsIGludG8gc2NyaXB0dXJlUGFuZSB0byBnZXQgbGF0ZXN0IGNoYW5nZXMgZm9yIHZlcnNlIHRvIHNhdmVcbiAgICBhc3luYyBmdW5jdGlvbiBnZXRSZWFkeUZvclNhdmUoKSB7XG4gICAgICBpZiAoc2F2ZUNsaWNrZWQpIHtcbiAgICAgICAgbGV0IGNyZWF0ZUVkaXRCcmFuY2ggPSAhX3VzaW5nVXNlckJyYW5jaFxuXG4gICAgICAgIGlmICghY3JlYXRlRWRpdEJyYW5jaCkgeyAvLyBpZiBhbHJlYWR5IHVzaW5nIHRoZSB1c2VyIGJyYW5jaFxuICAgICAgICAgIGlmICh3b3JraW5nUmVzb3VyY2VCcmFuY2ggIT09IHVzZXJFZGl0QnJhbmNoTmFtZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBzdGF0ZSBjb25mbGljdCAtIHNob3VsZCBiZSBpbiB1c2VyIGJyYW5jaCAke3VzZXJFZGl0QnJhbmNoTmFtZX0sIGJ1dCBhY3R1YWxseSB1c2luZyAke3dvcmtpbmdSZXNvdXJjZUJyYW5jaH1gKVxuICAgICAgICAgICAgY3JlYXRlRWRpdEJyYW5jaCA9IHRydWVcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGFscmVhZHkgdXNpbmcgZWRpdCBicmFuY2g6ICR7d29ya2luZ1Jlc291cmNlQnJhbmNofWApXG4gICAgICAgICAgICBzZXRTdGF0ZSh7IGVkaXRCcmFuY2hSZWFkeTogdHJ1ZSB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjcmVhdGVFZGl0QnJhbmNoKSB7IC8vIGlmIG5vdCB5ZXQgdXNpbmcgdGhlIHVzZXIgYnJhbmNoLCBjcmVhdGUgaXRcbiAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gY3JlYXRpbmcgZWRpdCBicmFuY2hgKVxuICAgICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICAgIGVkaXRCcmFuY2hSZWFkeTogZmFsc2UsXG4gICAgICAgICAgICByZWFkeUZvckZldGNoOiBmYWxzZSxcbiAgICAgICAgICAgIHNoYTogbnVsbCxcbiAgICAgICAgICB9KSAvLyB3ZSB3aWxsIG5lZWQgYSBuZXcgc2hhIGZvciBib29rL2JyYW5jaFxuXG4gICAgICAgICAgY29uc3QgYnJhbmNoID0gYXdhaXQgc3RhcnRFZGl0QnJhbmNoKClcblxuICAgICAgICAgIGlmIChicmFuY2gpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBlZGl0IGJyYW5jaCBjcmVhdGVkYClcbiAgICAgICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICAgICAgZWRpdEJyYW5jaFJlYWR5OiB0cnVlLFxuICAgICAgICAgICAgICByZWFkeUZvckZldGNoOiB0cnVlLFxuICAgICAgICAgICAgICByZWY6IGJyYW5jaCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gZXJyb3IgY3JlYXRpbmcgZWRpdCBicmFuY2gnKVxuICAgICAgICAgICAgb25SZXNvdXJjZUVycm9yICYmIG9uUmVzb3VyY2VFcnJvcihudWxsLCBmYWxzZSwgbnVsbCwgYEVycm9yIGNyZWF0aW5nIGVkaXQgYnJhbmNoICR7bGFuZ3VhZ2VJZF99XyR7cmVzb3VyY2VJZH1gLCB0cnVlKVxuICAgICAgICAgICAgc2V0U3RhdGUoeyBzYXZlQ2xpY2tlZDogZmFsc2UgfSlcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBnZXR0aW5nIHZlcnNlIGNoYW5nZXNgKVxuICAgICAgICBjb25zdCB1bnNhdmVkQ2FyZEluZGljZXMgPSBPYmplY3Qua2V5cyh1bnNhdmVkQ2hhbmdlc0xpc3QpXG5cbiAgICAgICAgaWYgKHVuc2F2ZWRDYXJkSW5kaWNlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgbGV0IGJpYmxlVXNmbUluaXRpYWwgPSBnZXRDdXJyZW50Qm9vayhzY3JpcHR1cmVDb25maWcsIGJvb2tJZCkgLy8gZ2V0IG9yaWdpbmFsIFVTRk1cbiAgICAgICAgICBsZXQgYmlibGVVc2ZtTmV3ID0gYmlibGVVc2ZtSW5pdGlhbCAvLyBtYWtlIGEgY29weSB0byBlZGl0XG4gICAgICAgICAgbGV0IG1lcmdlRmFpbCA9IGZhbHNlXG5cbiAgICAgICAgICBpZiAoYmlibGVVc2ZtSW5pdGlhbCkge1xuICAgICAgICAgICAgbGV0IGNhcmROdW0gPSAwXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgY2FyZEluZGV4IG9mIHVuc2F2ZWRDYXJkSW5kaWNlcykge1xuICAgICAgICAgICAgICBjYXJkTnVtID0gcGFyc2VJbnQoY2FyZEluZGV4KVxuICAgICAgICAgICAgICBjb25zdCB7IGdldENoYW5nZXMsIHN0YXRlIH0gPSB1bnNhdmVkQ2hhbmdlc0xpc3RbY2FyZE51bV1cblxuICAgICAgICAgICAgICBpZiAoZ2V0Q2hhbmdlcykge1xuICAgICAgICAgICAgICAgIGxldCBuZXdVc2ZtXG4gICAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgICAgcmVmLFxuICAgICAgICAgICAgICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0cyxcbiAgICAgICAgICAgICAgICB9ID0gZ2V0Q2hhbmdlcyhzdGF0ZSlcblxuICAgICAgICAgICAgICAgIGlmICh1cGRhdGVkVmVyc2VPYmplY3RzICYmIGJpYmxlVXNmbU5ldykgeyAvLyBqdXN0IHJlcGxhY2UgdmVyc2VcbiAgICAgICAgICAgICAgICAgIG5ld1VzZm0gPSBtZXJnZVZlcnNlT2JqZWN0c0ludG9CaWJsZVVzZm0oYmlibGVVc2ZtTmV3LCByZWYsIHVwZGF0ZWRWZXJzZU9iamVjdHMsIGNhcmROdW0pXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKG5ld1VzZm0pIHtcbiAgICAgICAgICAgICAgICAgIGJpYmxlVXNmbU5ldyA9IG5ld1VzZm1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgbWVyZ2VGYWlsID0gdHJ1ZVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgc2F2ZURpZmZQYXRjaCA9IGZhbHNlIC8vIGlmIHRydWUgdGhlbiB3ZSB3aWxsIHNlbmQgdXAgYSBkaWZmcGF0Y2ggaW5zdGVhZCBvZiB0aGUgd2hvbGUgYm9va1xuICAgICAgICAgIGxldCBfc2F2ZUZ1bGxCaWJsZUNvbnRlbnQgPSBudWxsXG4gICAgICAgICAgbGV0IF9zYXZlQ29udGVudCA9IGJpYmxlVXNmbU5ld1xuXG4gICAgICAgICAgaWYgKG1lcmdlRmFpbCkgeyAvLyBpZiB3ZSBmYWlsZWQgdG8gbWVyZ2UsIGZhbGxiYWNrIHRvIGJydXRlIGZvcmNlIHZlcnNlIG9iamVjdHMgdG8gVVNGTVxuICAgICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgke2NhcmROdW19KSAtIHZlcnNlIG5vdCBmb3VuZCwgZmFsbGluZyBiYWNrIHRvIGluc2VydGluZyB2ZXJzZSBvYmplY3RgKVxuICAgICAgICAgICAgbGV0IG5ld0Jvb2tKc29uXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgY2FyZEluZGV4IG9mIHVuc2F2ZWRDYXJkSW5kaWNlcykge1xuICAgICAgICAgICAgICBjb25zdCBjYXJkTnVtID0gcGFyc2VJbnQoY2FyZEluZGV4KVxuICAgICAgICAgICAgICBjb25zdCB7IGdldENoYW5nZXMsIHN0YXRlIH0gPSB1bnNhdmVkQ2hhbmdlc0xpc3RbY2FyZE51bV1cblxuICAgICAgICAgICAgICBpZiAoZ2V0Q2hhbmdlcykge1xuICAgICAgICAgICAgICAgIGxldCBuZXdVc2ZtXG4gICAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgICAgbmV3VmVyc2VUZXh0LFxuICAgICAgICAgICAgICAgICAgcmVmLFxuICAgICAgICAgICAgICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0cyxcbiAgICAgICAgICAgICAgICB9ID0gZ2V0Q2hhbmdlcyhzdGF0ZSlcblxuICAgICAgICAgICAgICAgIGlmICh1cGRhdGVkVmVyc2VPYmplY3RzICYmICFuZXdVc2ZtKSB7XG4gICAgICAgICAgICAgICAgICBsZXQgdGFyZ2V0VmVyc2VPYmplY3RzXyA9IG51bGxcblxuICAgICAgICAgICAgICAgICAgaWYgKHJlZikge1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV3VmVyc2VUZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB0YXJnZXRWZXJzZU9iamVjdHMgfSA9IEFsaWdubWVudEhlbHBlcnMudXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UodXBkYXRlZFZlcnNlT2JqZWN0cywgbmV3VmVyc2VUZXh0KVxuICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFZlcnNlT2JqZWN0c18gPSB0YXJnZXRWZXJzZU9iamVjdHNcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRWZXJzZU9iamVjdHNfID0gdXBkYXRlZFZlcnNlT2JqZWN0c1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG5ld0Jvb2tKc29uID0gdGFyZ2V0VmVyc2VPYmplY3RzXyAmJiBzY3JpcHR1cmVDb25maWc/LnVwZGF0ZVZlcnNlKHJlZi5jaGFwdGVyLCByZWYudmVyc2UsIHt2ZXJzZU9iamVjdHM6IHRhcmdldFZlcnNlT2JqZWN0c199KVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBfc2F2ZUNvbnRlbnQgPSB1c2ZtanMudG9VU0ZNKG5ld0Jvb2tKc29uLCB7IGZvcmNlZE5ld0xpbmVzOiB0cnVlIH0pXG4gICAgICAgICAgfSBlbHNlIHsgLy8gaWYgb25seSBjaGFuZ2VkIGEgZmV3IHZlcnNlcywgd2Ugd2lsbCBqdXN0IG1ha2UgYSBkaWZmcGF0Y2ggaW5zdGVhZCBvZiBzZW5kaW5nIHRoZSB3aG9sZSBib29rXG4gICAgICAgICAgICBjb25zdCBmaWxlbmFtZSA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0ZT8ucmVzb3VyY2U/Lm5hbWUgLy8gTGlrZSBcIjU3LVRJVC51c2ZtXCJcbiAgICAgICAgICAgIGlmIChmaWxlbmFtZSAmJiBiaWJsZVVzZm1OZXcgJiYgYmlibGVVc2ZtSW5pdGlhbCkgeyAvLyBtYWtlIHN1cmUgd2UgaGF2ZSBldmVyeXRoaW5nIG5lZWRlZCB0byBtYWtlIGEgcGF0Y2hcbiAgICAgICAgICAgICAgaWYgKGJpYmxlVXNmbUluaXRpYWwgPT09IGJpYmxlVXNmbU5ldykgeyAvLyBpZiBubyBkYXRhIGNoYW5nZSwgdGhlbiBza2lwIHNhdmUgYmVjYXVzZSBEQ1MgY3Jhc2hlcyBvbiBhbiBlbXB0eSBwYXRjaFxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2Fybihgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSB0aGVyZSBpcyBub3RoaW5nIHRvIHNhdmUsIHNraXBwaW5nYClcbiAgICAgICAgICAgICAgICBzZXRTdGF0ZSh7IHNhdmVDbGlja2VkOiBmYWxzZSB9KVxuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGRpZmZQYXRjaCA9IGdldFBhdGNoKGZpbGVuYW1lLCBiaWJsZVVzZm1Jbml0aWFsLCBiaWJsZVVzZm1OZXcsIGZhbHNlLCBjb250ZXh0TGluZXMpXG4gICAgICAgICAgICAgIHNhdmVEaWZmUGF0Y2ggPSB0cnVlXG4gICAgICAgICAgICAgIF9zYXZlQ29udGVudCA9IGRpZmZQYXRjaCAvLyByZXBsYWNlIHdob2xlIGJvb2sgY29udGVudCB3aXRoIGp1c3QgcGF0Y2ggZGF0YSAobXVjaCBmYXN0ZXIgdXBsb2FkcylcbiAgICAgICAgICAgICAgX3NhdmVGdWxsQmlibGVDb250ZW50ID0geyAgLy8ga2VlcCB0cmFjayBvZiBwYXRjaCBkYXRhIGluIGNhc2Ugd2UgbmVlZCB0byByZXRyeSBzYXZlXG4gICAgICAgICAgICAgICAgZmlsZW5hbWUsXG4gICAgICAgICAgICAgICAgaW5pdGlhbDogYmlibGVVc2ZtSW5pdGlhbCxcbiAgICAgICAgICAgICAgICBuZXc6IGJpYmxlVXNmbU5ldyxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChiaWJsZVVzZm1OZXcpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmluZyBuZXcgVVNGTTogJHtiaWJsZVVzZm1OZXcuc3Vic3RyaW5nKDAsIDEwMCl9Li4uYClcbiAgICAgICAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBbLi4ucHJldkNhcmRzU2F2aW5nLCBjYXJkUmVzb3VyY2VJZF0pXG4gICAgICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgICAgIHNhdmVDb250ZW50OiBfc2F2ZUNvbnRlbnQsXG4gICAgICAgICAgICAgIHNhdmVDbGlja2VkOiBmYWxzZSxcbiAgICAgICAgICAgICAgc2F2ZURpZmZQYXRjaCxcbiAgICAgICAgICAgICAgc2F2ZUZ1bGxCaWJsZUNvbnRlbnQ6IF9zYXZlRnVsbEJpYmxlQ29udGVudCxcbiAgICAgICAgICAgICAgc3RhcnRTYXZlOiB0cnVlLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBFcnJvciByZXRyaWV2aW5nIHRoZSBjb3JyZWN0IGJvb2sgZGF0YTogaW5jb3JyZWN0IGJvb2sgJHtsYW5ndWFnZUlkX31fJHtyZXNvdXJjZUlkfWApXG4gICAgICAgICAgICBvblJlc291cmNlRXJyb3IgJiYgb25SZXNvdXJjZUVycm9yKG51bGwsIGZhbHNlLCBudWxsLCBgRXJyb3IgcmV0cmlldmluZyB0aGUgY29ycmVjdCBib29rIGRhdGEgJHtsYW5ndWFnZUlkX31fJHtyZXNvdXJjZUlkfWAsIHRydWUpXG4gICAgICAgICAgICBzZXRTdGF0ZSh7IHNhdmVDbGlja2VkOiBmYWxzZSB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGdldFJlYWR5Rm9yU2F2ZSgpXG4gIH0sIFtzYXZlQ2xpY2tlZF0pXG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCB7IGNoYXB0ZXIgfSA9IF9yZWZlcmVuY2UgfHwge31cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IF92ZXJzZXNGb3JSZWYgPSBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZlxuICAgIGxldCBuZXdTZWxlY3Rpb25zID0gbmV3IE1hcCgpXG4gICAgbGV0IHVwZGF0ZVNlbGVjdGlvbnMgPSBmYWxzZVxuICAgIGNvbnN0IF9tYXAgPSBuZXdTZWxlY3Rpb25zXG4gICAgY29uc3Qgb3JpZ2luYWxCb29rSWQgPSBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPy5ib29rSWRcbiAgICBjb25zdCBib29rVmVyc2VPYmplY3QgPSBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPy5jaGFwdGVyc1xuICAgIGxldCBuZXdTZWxlY3RlZFF1b3RlID0gbnVsbFxuXG4gICAgLy8gaWYgd2UgaGF2ZSBldmVyeXRoaW5nIHdlIG5lZWQgdG8gY2FsY3VsYXRlIHNlbGVjdGlvbnNcbiAgICBpZiAoX3ZlcnNlc0ZvclJlZj8ubGVuZ3RoICYmXG4gICAgICBib29rVmVyc2VPYmplY3QgJiZcbiAgICAgIChib29rSWQgPT09IG9yaWdpbmFsQm9va0lkKSAmJlxuICAgICAgYm9va1ZlcnNlT2JqZWN0W2NoYXB0ZXJdICYmIC8vIHdlIG5lZWQgdG8gaGF2ZSBkYXRhIGZvciBjaGFwdGVyXG4gICAgICBzZWxlY3RlZFF1b3RlPy5xdW90ZVxuICAgICkge1xuICAgICAgLy8gaWYgcXVvdGUgaXMgZGlmZmVyZW50IHRoYW4gbGFzdFxuICAgICAgaWYgKCFpc0VxdWFsKGxhc3RTZWxlY3RlZFF1b3RlLCBzZWxlY3RlZFF1b3RlKSB8fFxuICAgICAgICAhaXNFcXVhbCh2ZXJzZXNGb3JSZWYsIF92ZXJzZXNGb3JSZWYpKSB7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsVmVyc2VzID0ge31cbiAgICAgICAgY29uc3Qgc3Vic3RpdHV0ZSA9IHt9IC8vIGtlZXAgdHJhY2sgb2YgdmVyc2Ugc3Vic3RpdHV0aW9uc1xuICAgICAgICBsZXQgc3RhcnRWZXJzZSA9IF92ZXJzZXNGb3JSZWZbMF0udmVyc2VcblxuICAgICAgICBpZiAodHlwZW9mIHN0YXJ0VmVyc2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgc3RhcnRWZXJzZSA9IHBhcnNlSW50KHN0YXJ0VmVyc2UpXG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbGFzdFZlcnNlID0gc3RhcnRWZXJzZVxuXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsID0gX3ZlcnNlc0ZvclJlZi5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICBjb25zdCB2ZXJzZVJlZiA9IF92ZXJzZXNGb3JSZWZbaV1cbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBjaGFwdGVyLFxuICAgICAgICAgICAgdmVyc2UsXG4gICAgICAgICAgfSA9IHZlcnNlUmVmXG4gICAgICAgICAgLy8gVFJJQ0tZIC0gd2UgcmVtYXAgdmVyc2VzIGluIHJlZmVyZW5jZSByYW5nZSB0byBhIGxpbmVhciBzZXJpZXMgb2YgdmVyc2VzIHNvIHZlcnNlIHNwYW5zIGRvbid0IGNob2tlIGdldFF1b3RlTWF0Y2hlc0luQm9va1JlZlxuICAgICAgICAgIGxldCBfdmVyc2UgPSBzdGFydFZlcnNlICsgaVxuICAgICAgICAgIGxhc3RWZXJzZSA9IF92ZXJzZVxuICAgICAgICAgIHN1YnN0aXR1dGVbYCR7Y2hhcHRlcn06JHtfdmVyc2V9YF0gPSBgJHtjaGFwdGVyfToke3ZlcnNlfWBcblxuICAgICAgICAgIGlmICghb3JpZ2luYWxWZXJzZXNbY2hhcHRlcl0pIHtcbiAgICAgICAgICAgIG9yaWdpbmFsVmVyc2VzW2NoYXB0ZXJdID0ge31cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgdmVyc2VPYmplY3RzID0gW11cblxuICAgICAgICAgIGlmICgodHlwZW9mIHZlcnNlID09PSAnc3RyaW5nJykgJiYgKHZlcnNlLmluY2x1ZGVzKCctJykpKSB7XG4gICAgICAgICAgICBjb25zdCB2ZXJzZXMgPSBnZXRWZXJzZXMoYm9va1ZlcnNlT2JqZWN0LCBgJHtjaGFwdGVyfToke3ZlcnNlfWApXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgdmVyc2VJdGVtIG9mIHZlcnNlcykge1xuICAgICAgICAgICAgICBjb25zdCB2byA9IHZlcnNlSXRlbS52ZXJzZURhdGEudmVyc2VPYmplY3RzXG4gICAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IHZlcnNlT2JqZWN0cy5jb25jYXQodm8pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IGJvb2tWZXJzZU9iamVjdFtjaGFwdGVyXVt2ZXJzZV0/LnZlcnNlT2JqZWN0c1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh2ZXJzZU9iamVjdHMpIHtcbiAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IGNsZWFudXBWZXJzZU9iamVjdHModmVyc2VPYmplY3RzKVxuICAgICAgICAgICAgb3JpZ2luYWxWZXJzZXNbY2hhcHRlcl1bX3ZlcnNlXSA9IHsgdmVyc2VPYmplY3RzIH1cbiAgICAgICAgICAgIF9tYXAuc2V0KGAke2NoYXB0ZXJ9OiR7dmVyc2V9YCwgdmVyc2VPYmplY3RzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNyZWF0ZSBuZXcgcmVmZXJlbmNlIHJhbmdlIGZvciBuZXcgbGluZWFyIHZlcnNlIHJhbmdlXG4gICAgICAgIGNvbnN0IFtjaGFwdGVyXSA9IHNlbGVjdGVkUXVvdGU/LnJlZmVyZW5jZT8uc3BsaXQoJzonKVxuICAgICAgICBsZXQgc3ViUmVmID0gYCR7Y2hhcHRlcn06JHtzdGFydFZlcnNlfWBcblxuICAgICAgICBpZiAobGFzdFZlcnNlICE9IHN0YXJ0VmVyc2UpIHtcbiAgICAgICAgICBzdWJSZWYgKz0gYC0ke2xhc3RWZXJzZX1gXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBxdW90ZU1hdGNoZXMgPSBnZXRRdW90ZU1hdGNoZXNJbkJvb2tSZWYoe1xuICAgICAgICAgIGJvb2tPYmplY3Q6IG9yaWdpbmFsVmVyc2VzLFxuICAgICAgICAgIHJlZjogc3ViUmVmLFxuICAgICAgICAgIHF1b3RlOiBzZWxlY3RlZFF1b3RlPy5xdW90ZSxcbiAgICAgICAgICBvY2N1cnJlbmNlOiBzZWxlY3RlZFF1b3RlPy5vY2N1cnJlbmNlLFxuICAgICAgICB9KVxuXG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbnMgPSBuZXcgTWFwKClcblxuICAgICAgICBpZiAocXVvdGVNYXRjaGVzPy5zaXplKSB7XG4gICAgICAgICAgcXVvdGVNYXRjaGVzLmZvckVhY2goKHdvcmRzLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IF9rZXkgPSBzdWJzdGl0dXRlW2tleV1cblxuICAgICAgICAgICAgc2VsZWN0aW9ucy5zZXQoX2tleSwgd29yZHMubWFwKHdvcmQgPT4gKFxuICAgICAgICAgICAgICB7IC4uLndvcmQsIHRleHQ6IGNvcmUubm9ybWFsaXplU3RyaW5nKHdvcmQudGV4dCkgfVxuICAgICAgICAgICAgKSkpXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgICBuZXdTZWxlY3Rpb25zID0gc2VsZWN0aW9uc1xuICAgICAgICBuZXdTZWxlY3RlZFF1b3RlID0gc2VsZWN0ZWRRdW90ZVxuICAgICAgICB1cGRhdGVTZWxlY3Rpb25zID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG5ld1N0YXRlOiBhbnkgPSB7fVxuXG4gICAgLy8gdXBkYXRlIHN0YXRlcyB0aGF0IGhhdmUgY2hhbmdlZFxuICAgIGlmICghYXJlTWFwc1RoZVNhbWUodmVyc2VPYmplY3RzTWFwLCBfbWFwKSkge1xuICAgICAgbmV3U3RhdGUudmVyc2VPYmplY3RzTWFwID0gX21hcFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgbmV3U3RhdGUuc2VsZWN0aW9uc1JlZnMgPSBfbWFwID8gWy4uLl9tYXAua2V5cygpXS5qb2luKCc7JykgOiAnJyAvLyBjb21iaW5lIGFsbCB0aGUgdmVyc2UgcmVmZXJlbmNlcyBpbnRvIGEgc2luZ2xlIHZlcnNlIHJlZmVyZW5jZSBmb3IgdGhlIHNlbGVjdGlvbnNcbiAgICB9XG5cbiAgICBjb25zdCBib29rc05vdFNhbWUgPSByZWZlcmVuY2U/LmJvb2tJZCAhPT0gY3VycmVudFJlZmVyZW5jZT8uYm9va0lkXG5cbiAgICBpZiAoYm9va3NOb3RTYW1lIHx8ICFhcmVWZXJzZXNTYW1lKHZlcnNlc0ZvclJlZiwgX3ZlcnNlc0ZvclJlZikpIHtcbiAgICAgIG5ld1N0YXRlLnZlcnNlc0ZvclJlZiA9IF92ZXJzZXNGb3JSZWZcbiAgICAgIG5ld1N0YXRlLmxhc3RTZWxlY3RlZFF1b3RlID0gbmV3U2VsZWN0ZWRRdW90ZVxuICAgICAgbmV3U3RhdGUuc2VsZWN0aW9ucyA9IG5ld1NlbGVjdGlvbnNcbiAgICB9XG5cbiAgICBpZiAobmV3U2VsZWN0ZWRRdW90ZSkge1xuICAgICAgbmV3U3RhdGUubGFzdFNlbGVjdGVkUXVvdGUgPSBuZXdTZWxlY3RlZFF1b3RlXG4gICAgfVxuXG4gICAgaWYgKHVwZGF0ZVNlbGVjdGlvbnMpIHtcbiAgICAgIGlmICghYXJlTWFwc1RoZVNhbWUoc2VsZWN0aW9ucyB8fCAobmV3IE1hcCgpKSwgbmV3U2VsZWN0aW9ucykpIHtcbiAgICAgICAgbmV3U3RhdGUuc2VsZWN0aW9ucyA9IG5ld1NlbGVjdGlvbnNcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoT2JqZWN0LmtleXMobmV3U3RhdGUpLmxlbmd0aCkge1xuICAgICAgc2V0U3RhdGUobmV3U3RhdGUpXG4gICAgfVxuICB9LCBbXG4gICAgb3duZXIsXG4gICAgcmVzb3VyY2VJZCxcbiAgICBib29rSWQsXG4gICAgbGFuZ3VhZ2VJZF8sXG4gICAgc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWYsXG4gICAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyxcbiAgICBzZWxlY3RlZFF1b3RlLFxuICBdKVxuXG5cbiAgLy8gQ2hlY2sgaWYgb3JpZ2luYWwgbGFuZ3VhZ2UgY29udGVudCBpcyBhdmFpbGFibGUgZm9yIHRoZSBjdXJyZW50IHZlcnNlcy5cbiAgLy8gVGhpcyBzZXRzIGZvdW5kT3JpZ2luYWxDb250ZW50IHN0YXRlLCB3aGljaCBpbiB0dXJuIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIGlmXG4gIC8vIGFsaWdubWVudCBmdW5jdGlvbmFsaXR5IHNob3VsZCBiZSBlbmFibGVkXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb3JpZ2luYWxCb29rSWQgPSBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPy5ib29rSWRcbiAgICBjb25zdCBib29rVmVyc2VPYmplY3QgPSBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPy5jaGFwdGVyc1xuICAgIGxldCBfZm91bmRPcmlnaW5hbENvbnRlbnQgPSBmYWxzZVxuXG4gICAgLy8gY2hlY2sgaWYgd2UgaGF2ZSBldmVyeXRoaW5nIHdlIG5lZWQgdG8gZ2V0IG9yaWdpbmFsIHZlcnNlc1xuICAgIGlmIChfdmVyc2VzRm9yUmVmPy5sZW5ndGggJiZcbiAgICAgIGJvb2tWZXJzZU9iamVjdCAmJlxuICAgICAgKGJvb2tJZCA9PT0gb3JpZ2luYWxCb29rSWQpICYmXG4gICAgICBib29rVmVyc2VPYmplY3Q/LltjaGFwdGVyXSAvLyB3ZSBuZWVkIHRvIGhhdmUgZGF0YSBmb3IgY2hhcHRlclxuICAgICkge1xuICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBfdmVyc2VzRm9yUmVmLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICBjb25zdCB2ZXJzZVJlZiA9IF92ZXJzZXNGb3JSZWZbaV1cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGNoYXB0ZXIsXG4gICAgICAgICAgdmVyc2UsXG4gICAgICAgIH0gPSB2ZXJzZVJlZlxuXG4gICAgICAgIGxldCB2ZXJzZU9iamVjdHMgPSBbXVxuXG4gICAgICAgIGlmICgodHlwZW9mIHZlcnNlID09PSAnc3RyaW5nJykgJiYgKHZlcnNlLmluY2x1ZGVzKCctJykpKSB7XG4gICAgICAgICAgY29uc3QgdmVyc2VzID0gZ2V0VmVyc2VzKGJvb2tWZXJzZU9iamVjdCwgYCR7Y2hhcHRlcn06JHt2ZXJzZX1gKVxuXG4gICAgICAgICAgZm9yIChjb25zdCB2ZXJzZUl0ZW0gb2YgdmVyc2VzKSB7XG4gICAgICAgICAgICBjb25zdCB2byA9IHZlcnNlSXRlbS52ZXJzZURhdGEudmVyc2VPYmplY3RzXG4gICAgICAgICAgICB2ZXJzZU9iamVjdHMgPSB2ZXJzZU9iamVjdHMuY29uY2F0KHZvKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2ZXJzZU9iamVjdHMgPSBib29rVmVyc2VPYmplY3RbY2hhcHRlcl0/Llt2ZXJzZV0/LnZlcnNlT2JqZWN0c1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZlcnNlT2JqZWN0cykge1xuICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IGNsZWFudXBWZXJzZU9iamVjdHModmVyc2VPYmplY3RzKVxuXG4gICAgICAgICAgY29uc3QgaXNWZXJzZU5vdEVtcHR5ID0gIWVtcHR5Q29udGVudCh2ZXJzZU9iamVjdHMpXG4gICAgICAgICAgaWYgKGlzVmVyc2VOb3RFbXB0eSkge1xuICAgICAgICAgICAgX2ZvdW5kT3JpZ2luYWxDb250ZW50ID0gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChfZm91bmRPcmlnaW5hbENvbnRlbnQgIT0gZm91bmRPcmlnaW5hbENvbnRlbnQpIHtcbiAgICAgIHNldFN0YXRlKHsgZm91bmRPcmlnaW5hbENvbnRlbnQ6IF9mb3VuZE9yaWdpbmFsQ29udGVudCB9KVxuICAgIH1cbiAgfSwgW1xuICAgIGJvb2tJZCxcbiAgICBsYW5ndWFnZUlkXyxcbiAgICBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZixcbiAgICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzLFxuICBdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIGNsZWFyIHNldHRpbmdzIG9uIHZlcnNlIGNoYW5nZVxuICAgIHNldFN0YXRlKHtcbiAgICAgIHZlcnNlc0FsaWdubWVudFN0YXR1czogbnVsbCxcbiAgICAgIHVuc2F2ZWRDaGFuZ2VzTGlzdDoge30sXG4gICAgICBoYXZlVW5zYXZlZENoYW5nZXM6IGZhbHNlLFxuICAgIH0pXG4gIH0sIFtfcmVmZXJlbmNlXSlcblxuICBjb25zdCB1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXMgPSAocmVmZXJlbmNlOiBTY3JpcHR1cmVSZWZlcmVuY2VUeXBlLCBhbGlnbmVkOiBib29sZWFuKSA9PiB7XG4gICAgc2V0U3RhdGVfKHByZXZTdGF0ZSA9PiAoe1xuICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzOiB7IC4uLnByZXZTdGF0ZS52ZXJzZXNBbGlnbm1lbnRTdGF0dXMsIFtgJHtyZWZlcmVuY2UuY2hhcHRlcn06JHtyZWZlcmVuY2UudmVyc2V9YF06IGFsaWduZWQgfSxcbiAgICB9KSlcbiAgfVxuXG4gIGxldCBfdmVyc2VzRm9yUmVmID0gc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWZcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChfdmVyc2VzRm9yUmVmPy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHsgcmVmZXJlbmNlLCByZXNvdXJjZUxpbmsgfSA9IHNjcmlwdHVyZUNvbmZpZyB8fCB7fVxuICAgICAgY29uc29sZS5sb2coYFNjcmlwdHVyZUNhcmQuX3ZlcnNlc0ZvclJlZiBjaGFuZ2VkYCwgeyByZWZlcmVuY2UsIHJlc291cmNlTGluayB9KVxuICAgIH1cbiAgfSwgW192ZXJzZXNGb3JSZWZdKVxuXG4gIGlmICghX3ZlcnNlc0ZvclJlZj8ubGVuZ3RoKSB7IC8vIGlmIGVtcHR5IG9mIHJlZmVyZW5jZXMsIGNyZWF0ZSBzaW5nbGUgZW1wdHkgcmVmZXJlbmNlXG4gICAgX3ZlcnNlc0ZvclJlZiA9IFt7IC4uLnJlZmVyZW5jZSB9XVxuICB9XG5cbiAgY29uc3QgcmVuZGVyZWRTY3JpcHR1cmVQYW5lcyA9IF92ZXJzZXNGb3JSZWY/Lm1hcCgoX2N1cnJlbnRWZXJzZURhdGEsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgaW5pdGlhbFZlcnNlT2JqZWN0cyA9IF9jdXJyZW50VmVyc2VEYXRhPy52ZXJzZURhdGE/LnZlcnNlT2JqZWN0cyB8fCBbXVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCB7IGNoYXB0ZXIsIHZlcnNlIH0gPSBfY3VycmVudFZlcnNlRGF0YSB8fCB7fVxuICAgIGNvbnN0IGJvb2tJZF8gPSBjdXJyZW50UmVmZXJlbmNlPy5ib29rSWQgfHwgYm9va0lkXG4gICAgY29uc3QgX3JlZmVyZW5jZSA9IHtcbiAgICAgIC4uLl92ZXJzZXNGb3JSZWYsXG4gICAgICBjaGFwdGVyLFxuICAgICAgYm9va0lkOiBib29rSWRfLFxuICAgICAgdmVyc2UsXG4gICAgfVxuICAgIGNvbnN0IF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnID0ge1xuICAgICAgLi4uc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyxcbiAgICAgIGN1cnJlbnRJbmRleDogaW5kZXgsXG4gICAgICBpbml0aWFsVmVyc2VPYmplY3RzLFxuICAgICAgcmVmZXJlbmNlOiBfcmVmZXJlbmNlLFxuICAgICAgaXNOZXdUZXN0YW1lbnQsXG4gICAgfVxuXG4gICAgbGV0IGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCA9IGZhbHNlXG5cbiAgICBpZiAodmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCkge1xuICAgICAgaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50ID0gdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudC5jaGFwdGVyID09IGNoYXB0ZXIgJiYgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudC52ZXJzZSA9PSB2ZXJzZVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8U2NyaXB0dXJlUGFuZVxuICAgICAgICB7Li4uc2NyaXB0dXJlQ29uZmlnfVxuICAgICAgICBjb250ZW50U3R5bGU9e2NvbnRlbnRTdHlsZX1cbiAgICAgICAgY3VycmVudEluZGV4PXtpbmRleH1cbiAgICAgICAgZGV0ZXJtaW5pbmdCcmFuY2g9eyFyZWFkeUZvckZldGNofVxuICAgICAgICBkaXJlY3Rpb249e2RpcmVjdGlvbn1cbiAgICAgICAgZGlzYWJsZVdvcmRQb3BvdmVyPXtkaXNhYmxlV29yZFBvcG92ZXJffVxuICAgICAgICBmb250U2l6ZT17Zm9udFNpemV9XG4gICAgICAgIGdldExleGljb25EYXRhPXtnZXRMZXhpY29uRGF0YX1cbiAgICAgICAgaXNOVD17aXNOVF99XG4gICAgICAgIGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudD17aXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50fVxuICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICBvbkFsaWdubWVudEZpbmlzaD17KCkgPT4gc2V0U3RhdGUoeyB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiBudWxsIH0pfVxuICAgICAgICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPXtvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzfVxuICAgICAgICByZWZTdHlsZT17cmVmU3R5bGV9XG4gICAgICAgIHJlZmVyZW5jZT17X3JlZmVyZW5jZX1cbiAgICAgICAgc2F2aW5nPXtzdGFydFNhdmV9XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZz17X3NjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWd9XG4gICAgICAgIHNldEVkaXRWZXJzZT17c2V0RWRpdFZlcnNlfVxuICAgICAgICBzZXRXb3JkQWxpZ25lclN0YXR1cz17c2V0V29yZEFsaWduZXJTdGF0dXN9XG4gICAgICAgIHNlcnZlcj17c2VydmVyfVxuICAgICAgICB0cmFuc2xhdGU9e3RyYW5zbGF0ZX1cbiAgICAgICAgdXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzPXt1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXN9XG4gICAgICAvPlxuICAgIClcbiAgfSlcblxuICBjb25zdCBoYW5kbGVBbGlnbkJ1dHRvbkNsaWNrID0gKCkgPT4ge1xuICAgIGlmICh2ZXJzZXNGb3JSZWY/Lmxlbmd0aCA+IDEpIHsgLy8gaWYgdGhlcmUgYXJlIG11bHRpcGxlIHZlcnNlcyBzaG93biBpbiBjYXJkLCBuZWVkIHRvIHByb21wdCB1c2VyIGZvciB3aGljaCB2ZXJzZSB0byBhbGlnblxuICAgICAgc2V0U3RhdGUoeyBzaG93QWxpZ25tZW50UG9wdXA6IHRydWUgfSlcbiAgICB9IGVsc2UgaWYgKHZlcnNlc0ZvclJlZj8ubGVuZ3RoID09PSAxKSB7IC8vIGlmIG9ubHkgb25lIHZlcnNlIGlzIHNob3duIG9uIGNhcmQsIHRoZW4gZWRpdCB0aGF0IHZlcnNlXG4gICAgICBzZXRTdGF0ZSh7IHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ6IHZlcnNlc0ZvclJlZlswXSB9KVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG9uUmVuZGVyVG9vbGJhciA9ICh7IGl0ZW1zIH0pID0+IHtcbiAgICBjb25zdCBuZXdJdGVtcyA9IFsuLi5pdGVtc11cblxuICAgIGxldCBhbGxWZXJzZXNBbGlnbmVkID0gZmFsc2VcblxuICAgIC8vIENoZWNrIGlmIGFsbCB2YWx1ZXMgaW4gdmVyc2VzQWxpZ25tZW50U3RhdHVzIGFyZSB0cnVlXG4gICAgaWYgKHZlcnNlc0FsaWdubWVudFN0YXR1cykge1xuICAgICAgYWxsVmVyc2VzQWxpZ25lZCA9IE9iamVjdC52YWx1ZXModmVyc2VzQWxpZ25tZW50U3RhdHVzKS5ldmVyeShhbGlnblN0YXR1cyA9PiBhbGlnblN0YXR1cyA9PT0gdHJ1ZSlcbiAgICB9XG5cbiAgICBsZXQgYWxpZ25JY29uID0gbnVsbFxuICAgIGxldCBhbGlnbkJ1dHRvblRleHQgPSAnJ1xuXG4gICAgaWYgKGFsbFZlcnNlc0FsaWduZWQpIHtcbiAgICAgIGFsaWduSWNvbiA9IDxSeExpbmsyIGlkPXtgdmFsaWRfaWNvbl8ke3Jlc291cmNlSWR9YH0gY29sb3I9JyNCQkInIC8+XG4gICAgICBhbGlnbkJ1dHRvblRleHQgPSAnQWxpZ25tZW50IGlzIFZhbGlkJ1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjb2xvciA9IGRpc2FibGVDaGFuZ2VCdXR0b25zID8gJyNCQkInIDogJyMwMDAnIC8vIGdyYXkgb3V0IGJ1dHRvbiBpZiBkaXNhYmxlZFxuICAgICAgYWxpZ25JY29uID0gPFJ4TGlua0JyZWFrMiBpZD17YGludmFsaWRfYWxpZ25tZW50X2ljb25fJHtyZXNvdXJjZUlkfWB9IGNvbG9yPXtjb2xvcn0gLz5cbiAgICAgIGFsaWduQnV0dG9uVGV4dCA9ICdBbGlnbm1lbnQgaXMgSW52YWxpZCdcbiAgICB9XG5cbiAgICBpZiAoZm91bmRPcmlnaW5hbENvbnRlbnQgJiYgc2V0V29yZEFsaWduZXJTdGF0dXMgJiYgcmVzb3VyY2VJZCAhPT0gJ09SSUdJTkFMX1NPVVJDRScpIHtcbiAgICAgIG5ld0l0ZW1zLnB1c2goXG4gICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgaWQ9e2BhbGlnbm1lbnRfaWNvbl8ke3Jlc291cmNlSWR9YH1cbiAgICAgICAgICBrZXk9J2NoZWNraW5nLWJ1dHRvbidcbiAgICAgICAgICBvbkNsaWNrPXtkaXNhYmxlQ2hhbmdlQnV0dG9ucyA/IG51bGwgOiBoYW5kbGVBbGlnbkJ1dHRvbkNsaWNrfVxuICAgICAgICAgIHRpdGxlPXthbGlnbkJ1dHRvblRleHR9XG4gICAgICAgICAgYXJpYS1sYWJlbD17YWxpZ25CdXR0b25UZXh0fVxuICAgICAgICAgIHN0eWxlPXt7IGN1cnNvcjogJ3BvaW50ZXInIH19XG4gICAgICAgID5cbiAgICAgICAgICB7YWxpZ25JY29ufVxuICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICApXG4gICAgfVxuXG4gICAgLy8gT25seSBzaG93IHRoZSB1cGRhdGUgZnJvbSBtYWluIGJ1dHRvbiBpZiBzY3JpcHR1cmUgaXMgbm90IG9yaWdpbmFsIHRleHQuXG4gICAgIXVzaW5nT3JpZ2luYWxCaWJsZSAmJiBuZXdJdGVtcy5wdXNoKFxuICAgICAgPD5cbiAgICAgICAgPFVwZGF0ZUJyYW5jaEJ1dHRvbiB7Li4udXBkYXRlQnV0dG9uUHJvcHN9IGlzTG9hZGluZz17aXNVcGRhdGVMb2FkaW5nIHx8IHN0YXJ0U2F2ZX0vPlxuICAgICAgICA8RXJyb3JEaWFsb2cgdGl0bGU9e2RpYWxvZ1RpdGxlfSBjb250ZW50PXtkaWFsb2dNZXNzYWdlfSBvcGVuPXtpc0Vycm9yRGlhbG9nT3Blbn0gb25DbG9zZT17b25DbG9zZUVycm9yRGlhbG9nfSBpc0xvYWRpbmc9eyBpc1VwZGF0ZUxvYWRpbmcgfHwgc3RhcnRTYXZlIH0gbGluaz17ZGlhbG9nTGlua30gbGlua1Rvb2x0aXA9e2RpYWxvZ0xpbmtUb29sdGlwfSAvPlxuICAgICAgPC8+XG4gICAgKVxuXG4gICAgcmV0dXJuIG5ld0l0ZW1zXG4gIH1cblxuICBjb25zdCBzZWxlY3Rpb25Cb29rT2JqZWN0cyA9IG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM/LmNoYXB0ZXJzXG5cbiAgLy8gd2Ugb25seSB3YW50IHRvIGNoZWNrIHRoZSB0YXJnZXQgYWxpZ25tZW50IGlmIG5vdCB1c2luZyBvcmlnaW5hbCBiaWJsZVxuICBjb25zdCB0YXJnZXRWZXJzZXNGb3JSZWYgPSB1c2luZ09yaWdpbmFsQmlibGUgPyBudWxsIDogX3ZlcnNlc0ZvclJlZlxuXG4gIHJldHVybiAoXG4gICAgPFNlbGVjdGlvbnNDb250ZXh0UHJvdmlkZXJcbiAgICAgIGhpZ2hsaWdodE9ubHlDb21wbGV0ZVF1b3Rlcz17dHJ1ZX1cbiAgICAgIG9jY3VycmVuY2U9e2ZpeE9jY3VycmVuY2Uoc2VsZWN0ZWRRdW90ZT8ub2NjdXJyZW5jZSl9XG4gICAgICBvblNlbGVjdGlvbnM9e25ld1NlbGVjdGlvbnMgPT4ge1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnb25TZWxlY3Rpb25zJywgbmV3U2VsZWN0aW9ucylcbiAgICAgIH19XG4gICAgICBvcmlnaW5hbEJvb2tPYmplY3RzPXtzZWxlY3Rpb25Cb29rT2JqZWN0cyB8fCB7fX1cbiAgICAgIHF1b3RlPXtzZWxlY3RlZFF1b3RlPy5xdW90ZSB8fCAnJ31cbiAgICAgIHJlZlN0cmluZz17c2VsZWN0aW9uc1JlZnN9XG4gICAgICBzZWxlY3Rpb25zPXtzZWxlY3Rpb25zfVxuICAgICAgdGFyZ2V0VmVyc2VzRm9yUmVmPXt0YXJnZXRWZXJzZXNGb3JSZWZ9XG4gICAgPlxuICAgICAgPENhcmRcbiAgICAgICAgaWQ9e2BzY3JpcHR1cmVfY2FyZF8ke2NhcmROdW19YH1cbiAgICAgICAgdGl0bGU9e3NjcmlwdHVyZUxhYmVsfVxuICAgICAgICBzZXR0aW5nc1RpdGxlPXtzY3JpcHR1cmVUaXRsZSArICcgU2V0dGluZ3MnfVxuICAgICAgICBpdGVtcz17aXRlbXN9XG4gICAgICAgIGNsYXNzZXM9e2NsYXNzZXN9XG4gICAgICAgIGhlYWRlcnM9e2hlYWRlcnN9XG4gICAgICAgIGZpbHRlcnM9e2ZpbHRlcnN9XG4gICAgICAgIGZvbnRTaXplPXtmb250U2l6ZX1cbiAgICAgICAgaXRlbUluZGV4PXtpdGVtSW5kZXh9XG4gICAgICAgIHNldEZpbHRlcnM9e3NldEZpbHRlcnN9XG4gICAgICAgIHNldEZvbnRTaXplPXtzZXRGb250U2l6ZX1cbiAgICAgICAgc2V0SXRlbUluZGV4PXtzZXRJdGVtSW5kZXh9XG4gICAgICAgIG1hcmtkb3duVmlldz17bWFya2Rvd25WaWV3fVxuICAgICAgICBzZXRNYXJrZG93blZpZXc9e3NldE1hcmtkb3duVmlld31cbiAgICAgICAgZ2V0Q3VzdG9tQ29tcG9uZW50PXtnZXRTY3JpcHR1cmVTZWxlY3Rvcn1cbiAgICAgICAgaGlkZU1hcmtkb3duVG9nZ2xlXG4gICAgICAgIG9uTWVudUNsb3NlPXtvbk1lbnVDbG9zZX1cbiAgICAgICAgb25NaW5pbWl6ZT17b25NaW5pbWl6ZSA/ICgpID0+IG9uTWluaW1pemUoaWQsIHNjcmlwdHVyZVRpdGxlKSA6IG51bGx9XG4gICAgICAgIGVkaXRhYmxlPXtlbmFibGVFZGl0IHx8IGVuYWJsZUFsaWdubWVudH1cbiAgICAgICAgc2F2ZWQ9e2Rpc2FibGVDaGFuZ2VCdXR0b25zIHx8IHN0YXJ0U2F2ZSB8fCAhaGF2ZVVuc2F2ZWRDaGFuZ2VzfSAvLyBncmF5IG91dCBzYXZlIGJ1dHRvbiBpZiBkaXNhYmxlZCwgaWYgc2F2aW5nLCBvciBpZiBubyB1bnNhdmVkIGNoYW5nZXNcbiAgICAgICAgb25TYXZlRWRpdD17KCkgPT4gc2V0U3RhdGUoeyBzYXZlQ2xpY2tlZDogdHJ1ZSB9KX1cbiAgICAgICAgb25SZW5kZXJUb29sYmFyPXtvblJlbmRlclRvb2xiYXJ9XG4gICAgICA+XG4gICAgICAgIDxkaXYgaWQ9XCJzY3JpcHR1cmUtcGFuZS1saXN0XCI+XG4gICAgICAgICAge3JlbmRlcmVkU2NyaXB0dXJlUGFuZXN9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9DYXJkPlxuICAgICAgPFZlcnNlU2VsZWN0b3JQb3B1cFxuICAgICAgICByZXNvdXJjZUlkPXtyZXNvdXJjZUlkfVxuICAgICAgICBvcGVuPXtzaG93QWxpZ25tZW50UG9wdXB9XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFN0YXRlKHsgc2hvd0FsaWdubWVudFBvcHVwOiBmYWxzZSB9KX1cbiAgICAgICAgdmVyc2VzRm9yUmVmPXt2ZXJzZXNGb3JSZWZ9XG4gICAgICAgIHZlcnNlc0FsaWdubWVudFN0YXR1cz17dmVyc2VzQWxpZ25tZW50U3RhdHVzfVxuICAgICAgICBvblZlcnNlU2VsZWN0PXsodmVyc2UpID0+IHNldFN0YXRlKHtcbiAgICAgICAgICB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiB2ZXJzZSxcbiAgICAgICAgICBzaG93QWxpZ25tZW50UG9wdXA6IGZhbHNlLFxuICAgICAgICB9KX1cbiAgICAgIC8+XG4gICAgPC9TZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyPlxuICApXG59XG5cblNjcmlwdHVyZUNhcmQucHJvcFR5cGVzID0ge1xuICAvKiogcmVwbyBicmFuY2ggb3IgdGFnIHN1Y2ggYXMgbWFzdGVyICovXG4gIGFwcFJlZjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogYXV0aGVudGljYXRpb24gaW5mbyAqL1xuICBhdXRoZW50aWNhdGlvbjogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIGluZGV4IGZvciBjdXJyZW50IGJvb2sgKGUuZy4gJzAxJyBmb3IgJ2dlbicpKi9cbiAgYm9va0luZGV4OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogc2NyaXB0dXJlIGNhcmQgbnVtYmVyICgwIHRvIDIgZm9yIGV4YW1wbGUpICovXG4gIGNhcmROdW06IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgLyoqIENTUyBjbGFzc2VzICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBpZiB0cnVlIHRoZW4gd29yZCBkYXRhIGhvdmVyIGlzIHNob3duICovXG4gIGRpc2FibGVXb3JkUG9wb3ZlcjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKiBnZXQgbGFuZ3VhZ2UgZGV0YWlscyAqL1xuICBnZXRMYW5ndWFnZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgLyoqIGZ1bmN0aW9uIHRvIGdldCBsYXRlc3QgbGV4aWNvbiBkYXRhICovXG4gIGdldExleGljb25EYXRhOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIG9wdGlvbmFsIHVybCBmb3IgZ3JlZWsgcmVwbyAqL1xuICBncmVla1JlcG9Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBvcHRpb25hbCB1cmwgZm9yIGhlYnJldyByZXBvICovXG4gIGhlYnJld1JlcG9Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBvcHRpb25hbCBodHRwIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciBmZXRjaGluZyByZXNvdXJjZXMsIGRlZmF1bHQgaXMgMCAodmVyeSBsb25nIHdhaXQpICovXG4gIGh0dHBDb25maWc6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBodG1sIGlkZW50aWZpZXIgdG8gdXNlIGZvciBjYXJkICovXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogbWV0aG9kIHRvIGRldGVybWluZSBpZiBOVCBvciBPVCAqL1xuICBpc05UOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAvKiogdXNlci1uYW1lICovXG4gIGxvZ2dlZEluVXNlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgbWVyZ2VDaGVjazogUHJvcFR5cGVzLm51bWJlciwgLy8gaWYgdGhpcyBjaGFuZ2VzLCBuZWVkIHRvIHJlY2hlY2sgbWVyZ2Ugc3RhdHVzXG4gIC8qKiBmdW5jdGlvbiB0byBtaW5pbWl6ZSB0aGUgY2FyZCAob3B0aW9uYWwpICovXG4gIG9uTWluaW1pemU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogb3B0aW9uYWwgY2FsbGJhY2sgaWYgZXJyb3IgbG9hZGluZyByZXNvdXJjZSwgcGFyYW1ldGVyIHJldHVybmVkIGFyZTpcbiAgICogICAgKHtzdHJpbmd9IGVycm9yTWVzc2FnZSwge2Jvb2xlYW59IGlzQWNjZXNzRXJyb3IsIHtvYmplY3R9IHJlc291cmNlU3RhdHVzKVxuICAgKiAgICAgIC0gaXNBY2Nlc3NFcnJvciAtIGlzIHRydWUgaWYgdGhpcyB3YXMgYW4gZXJyb3IgdHJ5aW5nIHRvIGFjY2VzcyBmaWxlXG4gICAqICAgICAgLSByZXNvdXJjZVN0YXR1cyAtIGlzIG9iamVjdCBjb250YWluaW5nIGRldGFpbHMgYWJvdXQgcHJvYmxlbXMgZmV0Y2hpbmcgcmVzb3VyY2UgKi9cbiAgb25SZXNvdXJjZUVycm9yOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIHRoZSBvcmlnaW5hbCBzY3JpcHR1cmUgYm9va09iamVjdHMgZm9yIGN1cnJlbnQgYm9vayAqL1xuICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzOiBQcm9wVHlwZXMub2JqZWN0LFxuICByZWZlcmVuY2U6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgLyoqIGJvb2sgSUQgdG8gdXNlLCBvbGRlciBsaWJyYXJpZXMgdXNlZCBwcm9qZWN0SWQgKi9cbiAgICBib29rSWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogb2xkZXIgbGlicmFyaWVzIHVzZWQgcHJvamVjdElkIGluc3RlYWQgb2YgYm9va0lkICovXG4gICAgcHJvamVjdElkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIC8qKiBjdXJyZW50IGNoYXB0ZXIgbnVtYmVyICovXG4gICAgY2hhcHRlcjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLmlzUmVxdWlyZWQsXG4gICAgLyoqIGN1cnJlbnQgdmVyc2UgbnVtYmVyICovXG4gICAgdmVyc2U6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKS5pc1JlcXVpcmVkLFxuICB9KSxcbiAgLyoqIHJlc291cmNlIG9iamVjdCAqL1xuICByZXNvdXJjZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAvKiogcmVzb3VyY2UgbGFuZ3VhZ2UgdG8gdXNlICovXG4gICAgbGFuZ3VhZ2VJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiByZXBvIG93bmVyIHN1Y2ggYXMgdW5mb2xkaW5nV29yZCAqL1xuICAgIG93bmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIHJlc291cmNlSWQgdG8gdXNlIChlLmcuIHVnbnQpICovXG4gICAgcmVzb3VyY2VJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiByZXBvIG93bmVyIGZvciBvcmlnaW5hbCBsYW5ndWFnZXMgc3VjaCBhcyB1bmZvbGRpbmdXb3JkICovXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIH0pLFxuICAvKiogcmVzb3VyY2VMaW5rICovXG4gIHJlc291cmNlTGluazogUHJvcFR5cGVzLmFueSxcbiAgLyoqVGhpcyBpcyBjdXJyZW50bHkgc2VsZWN0ZWQgcXVvdGUgKi9cbiAgc2VsZWN0ZWRRdW90ZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIHNlcnZlciAoZS5nLiAnaHR0cHM6Ly9naXQuZG9vcjQzLm9yZycpICovXG4gIHNlcnZlcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogY2FsbGJhY2sgdG8gdXBkYXRlIGxvYWRpbmcgc3RhdGUgKi9cbiAgc2V0QXJlUmVzb3VyY2VzTG9hZGluZzogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byB1cGRhdGUgc2F2aW5nIHN0YXRlKi9cbiAgc2V0QXJlUmVzb3VyY2VzU2F2aW5nOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHJlcG9ydCBjYXJkIG1lcmdlIHN0YXR1cyAqL1xuICBzZXRDYXJkc0xvYWRpbmdNZXJnZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byByZXBvcnQgY2FyZCB1cGRhdGUgc3RhdHVzICovXG4gIHNldENhcmRzTG9hZGluZ1VwZGF0ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byByZXBvcnQgY2FyZCBzYXZpbmcgc3RhdHVzICovXG4gIHNldENhcmRzU2F2aW5nOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGZ1bmN0aW9uIHRvIHNldCBzdGF0ZSBpbiBhcHAgdGhhdCB0aGVyZSBhcmUgdW5zYXZlZCBjaGFuZ2VzICovXG4gIHNldFNhdmVkQ2hhbmdlczogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byB1cGRhdGUgd29yZCBhbGlnbmVyIHN0YXRlICovXG4gIHNldFdvcmRBbGlnbmVyU3RhdHVzOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIHRpdGxlIGZvciBzY3JpcHR1cmUgY2FyZCAqL1xuICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogb3B0aW9uYWwgZnVuY3Rpb24gZm9yIGxvY2FsaXphdGlvbiAqL1xuICB0cmFuc2xhdGU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogY2FsbGJhY2sgdG8gdXBkYXRlIHRoZSBjYXJkJ3MgbWVyZ2Ugc3RhdGUgaW4gYXBwICovXG4gIHVwZGF0ZU1lcmdlU3RhdGU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogdXNlIG1ldGhvZCBmb3IgdXNpbmcgbG9jYWwgc3RvcmFnZSBzcGVjaWZpYyBmb3IgdXNlciAqL1xuICB1c2VVc2VyTG9jYWxTdG9yYWdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxufVxuIl0sIm1hcHBpbmdzIjoiOytDQUNBLHFKQUFBQSxtQkFBQSxZQUFBQSxvQkFBQSxXQUFBQyxDQUFBLFNBQUFDLENBQUEsRUFBQUQsQ0FBQSxPQUFBRSxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsU0FBQSxFQUFBQyxDQUFBLEdBQUFILENBQUEsQ0FBQUksY0FBQSxFQUFBQyxDQUFBLEdBQUFKLE1BQUEsQ0FBQUssY0FBQSxjQUFBUCxDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxJQUFBRCxDQUFBLENBQUFELENBQUEsSUFBQUUsQ0FBQSxDQUFBTyxLQUFBLEtBQUFDLENBQUEsd0JBQUFDLE1BQUEsR0FBQUEsTUFBQSxPQUFBQyxDQUFBLEdBQUFGLENBQUEsQ0FBQUcsUUFBQSxrQkFBQUMsQ0FBQSxHQUFBSixDQUFBLENBQUFLLGFBQUEsdUJBQUFDLENBQUEsR0FBQU4sQ0FBQSxDQUFBTyxXQUFBLDhCQUFBQyxPQUFBakIsQ0FBQSxFQUFBRCxDQUFBLEVBQUFFLENBQUEsV0FBQUMsTUFBQSxDQUFBSyxjQUFBLENBQUFQLENBQUEsRUFBQUQsQ0FBQSxJQUFBUyxLQUFBLEVBQUFQLENBQUEsRUFBQWlCLFVBQUEsTUFBQUMsWUFBQSxNQUFBQyxRQUFBLFNBQUFwQixDQUFBLENBQUFELENBQUEsV0FBQWtCLE1BQUEsbUJBQUFqQixDQUFBLElBQUFpQixNQUFBLFlBQUFBLE9BQUFqQixDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxXQUFBRCxDQUFBLENB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
|
|
1675
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVnZW5lcmF0b3JSdW50aW1lIiwiZSIsInQiLCJyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiU3ltYm9sIiwiYSIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiZ2VuIiwicmVqZWN0IiwiX25leHQiLCJfdGhyb3ciLCJrZXkiLCJpbmZvIiwiZXJyb3IiLCJfYXN5bmNUb0dlbmVyYXRvciIsImZuIiwic2VsZiIsImFyZ3MiLCJhcmd1bWVudHMiLCJhcHBseSIsImVyciIsInVuZGVmaW5lZCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiYWxsb3dBcnJheUxpa2UiLCJpdCIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIkYiLCJfZSIsIm5vcm1hbENvbXBsZXRpb24iLCJkaWRFcnIiLCJzdGVwIiwiX2UyIiwiX2V4dGVuZHMiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0Iiwic291cmNlIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiYXJyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIml0ZXIiLCJmcm9tIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJvd25LZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiX29iamVjdFNwcmVhZCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwib2JqIiwiX3RvUHJvcGVydHlLZXkiLCJfdG9QcmltaXRpdmUiLCJTdHJpbmciLCJpbnB1dCIsImhpbnQiLCJwcmltIiwidG9QcmltaXRpdmUiLCJyZXMiLCJOdW1iZXIiLCJfc2xpY2VkVG9BcnJheSIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl9ub25JdGVyYWJsZVJlc3QiLCJtaW5MZW4iLCJ0b1N0cmluZyIsInRlc3QiLCJsZW4iLCJhcnIyIiwiUmVhY3QiLCJQcm9wVHlwZXMiLCJjb3JlIiwiU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciIsInVzZm1qcyIsImdldFBhdGNoIiwidXNlRWRpdCIsIkljb25CdXR0b24iLCJSeExpbmsyIiwiUnhMaW5rQnJlYWsyIiwiQ2FyZCIsIkVycm9yRGlhbG9nIiwiRVJST1JfU1RBVEUiLCJNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SIiwiVXBkYXRlQnJhbmNoQnV0dG9uIiwidXNlQnJhbmNoTWVyZ2VyIiwidXNlQ2FyZFN0YXRlIiwidXNlQ29udGVudFVwZGF0ZVByb3BzIiwidXNlTWFzdGVyTWVyZ2VQcm9wcyIsInVzZVVzZXJCcmFuY2giLCJnZXRRdW90ZU1hdGNoZXNJbkJvb2tSZWYiLCJBbGlnbm1lbnRIZWxwZXJzIiwiVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycyIsImlzRXF1YWwiLCJnZXRWZXJzZXMiLCJTY3JpcHR1cmVQYW5lIiwiU2NyaXB0dXJlU2VsZWN0b3IiLCJ1c2VTY3JpcHR1cmVTZXR0aW5ncyIsImNsZWFudXBWZXJzZU9iamVjdHMiLCJlbXB0eUNvbnRlbnQiLCJmZXRjaEJpYmxlQm9vayIsImZpeE9jY3VycmVuY2UiLCJnZXRCb29rTmFtZUZyb21Vc2ZtRmlsZU5hbWUiLCJnZXRSZXNvdXJjZUxpbmsiLCJnZXRSZXNvdXJjZU1lc3NhZ2UiLCJnZXRTY3JpcHR1cmVWZXJzaW9uU2V0dGluZ3MiLCJpc09yaWdpbmFsQmlibGUiLCJkZWxheSIsImFyZU1hcHNUaGVTYW1lIiwiVGl0bGUiLCJOVF9PUklHX0xBTkciLCJPUklHSU5BTF9TT1VSQ0UiLCJPVF9PUklHX0xBTkciLCJWZXJzZVNlbGVjdG9yUG9wdXAiLCJTY3JpcHR1cmVSZWZlcmVuY2VUeXBlIiwiVmVyc2VPYmplY3RzVHlwZSIsIktFWV9GT05UX1NJWkVfQkFTRSIsImxhYmVsIiwic3R5bGUiLCJtYXJnaW5Ub3AiLCJ3aWR0aCIsImNvbXBhcmVPYmplY3QiLCJ2ZXJzZVJlZiIsIl92ZXJzZURhdGEkdmVyc2VPYmplYyIsIl9yZWYiLCJjaGFwdGVyIiwidmVyc2UiLCJ2ZXJzZURhdGEiLCJ2ZXJzZU9iamVjdHMiLCJKU09OIiwic3RyaW5naWZ5IiwiYXJlVmVyc2VzU2FtZSIsInZlcnNlc0ZvclJlZjEiLCJ2ZXJzZXNGb3JSZWYyIiwiYXJlU2FtZSIsInZlcnNlMSIsInZlcnNlMiIsImdldEN1cnJlbnRCb29rIiwic2NyaXB0dXJlQ29uZmlnIiwiYm9va0lkIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvMiIsIl9ib29rTmFtZSR0b0xvd2VyQ2FzZSIsImxhdGVzdEJpYmxlIiwicmVzb3VyY2VTdGF0ZSIsInJlc291cmNlIiwicHJvamVjdElkIiwiZmlsZW5hbWUiLCJpc0Jvb2tWYWxpZCIsImJvb2tOYW1lIiwidG9Mb3dlckNhc2UiLCJpbmNsdWRlcyIsImNvbnNvbGUiLCJ3YXJuIiwiY29uY2F0IiwiYmlibGVVc2ZtIiwiU2NyaXB0dXJlQ2FyZCIsIl9yZWYyIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvMyIsIl9zY3JpcHR1cmVDb25maWckcmVzbzQiLCJfc2NyaXB0dXJlQ29uZmlnJHJlc281IiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvNiIsIl9zY3JpcHR1cmVDb25maWckcmVzbzciLCJfYXV0aGVudGljYXRpb24kdG9rZW4iLCJfYXV0aGVudGljYXRpb24kdXNlciIsIl9zY3JpcHR1cmVDb25maWckcmVzbzkiLCJfc2NyaXB0dXJlQ29uZmlnJHJlc28xMCIsIl9odHRwQ29uZmlnIiwiX2h0dHBDb25maWcyIiwiX2F1dGhlbnRpY2F0aW9uJHVzZXIyIiwiX3ZlcnNlc0ZvclJlZjQiLCJfdmVyc2VzRm9yUmVmNSIsImFwcFJlZiIsImF1dGhlbnRpY2F0aW9uIiwiYm9va0luZGV4IiwiY2FyZE51bSIsImNsYXNzZXMiLCJkaXNhYmxlV29yZFBvcG92ZXIiLCJnZXRMYW5ndWFnZSIsImdldExleGljb25EYXRhIiwiZ3JlZWtSZXBvVXJsIiwiaGVicmV3UmVwb1VybCIsImh0dHBDb25maWciLCJpZCIsImlzTlQiLCJsb2dnZWRJblVzZXIiLCJtZXJnZUNoZWNrIiwib25NaW5pbWl6ZSIsIm9uUmVzb3VyY2VFcnJvciIsIm9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMiLCJyZWZlcmVuY2VfIiwicmVmZXJlbmNlIiwiX3JlZjIkcmVzb3VyY2UiLCJvd25lciIsImxhbmd1YWdlSWQiLCJyZXNvdXJjZUlkIiwib3JpZ2luYWxMYW5ndWFnZU93bmVyIiwicmVzb3VyY2VMaW5rIiwic2VsZWN0ZWRRdW90ZSIsInNlcnZlciIsInNldENhcmRzTG9hZGluZ01lcmdlIiwic2V0Q2FyZHNMb2FkaW5nVXBkYXRlIiwic2V0Q2FyZHNTYXZpbmciLCJzZXRTYXZlZENoYW5nZXMiLCJzZXRXb3JkQWxpZ25lclN0YXR1cyIsInRyYW5zbGF0ZSIsInRpdGxlIiwidXNlVXNlckxvY2FsU3RvcmFnZSIsInVwZGF0ZU1lcmdlU3RhdGUiLCJzYXZlSW5Qcm9ncmVzcyIsInVzZVJlZiIsIl9SZWFjdCR1c2VTdGF0ZSIsInVzZVN0YXRlIiwiY2hlY2tGb3JFZGl0QnJhbmNoIiwiY29udGV4dExpbmVzIiwiY3VycmVudFJlZmVyZW5jZSIsImVkaXRCcmFuY2hSZWFkeSIsImVkaXRWZXJzZSIsImZvdW5kT3JpZ2luYWxDb250ZW50IiwiaGF2ZVVuc2F2ZWRDaGFuZ2VzIiwibGFzdFNlbGVjdGVkUXVvdGUiLCJyZWFkeUZvckZldGNoIiwicmVmIiwic2F2ZUNsaWNrZWQiLCJzYXZlQ29udGVudCIsInNhdmVEaWZmUGF0Y2giLCJzYXZlRnVsbEJpYmxlQ29udGVudCIsInNlbGVjdGlvbnMiLCJNYXAiLCJzZWxlY3Rpb25zUmVmcyIsInNob3dBbGlnbm1lbnRQb3B1cCIsInN0YXJ0U2F2ZSIsInVybEVycm9yIiwidXNpbmdVc2VyQnJhbmNoIiwidW5zYXZlZENoYW5nZXNMaXN0IiwidmVyc2VzQWxpZ25tZW50U3RhdHVzIiwidmVyc2VzRm9yUmVmIiwidmVyc2VPYmplY3RzTWFwIiwidmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCIsIl9SZWFjdCR1c2VTdGF0ZTIiLCJzdGF0ZSIsInNldFN0YXRlXyIsIl91c2VVc2VyTG9jYWxTdG9yYWdlIiwiX3VzZVVzZXJMb2NhbFN0b3JhZ2UyIiwiZm9udFNpemUiLCJzZXRGb250U2l6ZSIsImlzTlRfIiwic2V0U3RhdGUiLCJuZXdTdGF0ZSIsInByZXZTdGF0ZSIsImNhY2hlIiwibWF4QWdlIiwibm9DYWNoZSIsIl91c2VTY3JpcHR1cmVTZXR0aW5ncyIsInNldFVybEVycm9yIiwid2hvbGVCb29rIiwiaXNOZXdUZXN0YW1lbnQiLCJzZXRTY3JpcHR1cmUiLCJzY3JpcHR1cmVTZXR0aW5ncyIsInNjcmlwdHVyZVZlcnNpb25IaXN0IiwiZmV0Y2hlZFJlc291cmNlIiwicmVwbyIsInVzaW5nT3JpZ2luYWxCaWJsZSIsImNhcmRSZXNvdXJjZUlkIiwicmVmXyIsImNhblVzZUVkaXRCcmFuY2giLCJfdXNlVXNlckJyYW5jaCIsImNhcmRJZCIsIl91c2VVc2VyQnJhbmNoJHN0YXRlIiwiYnJhbmNoRGV0ZXJtaW5lZCIsInVzZXJFZGl0QnJhbmNoTmFtZSIsIl91c2luZ1VzZXJCcmFuY2giLCJ3b3JraW5nUmVzb3VyY2VCcmFuY2giLCJfdXNlVXNlckJyYW5jaCRhY3Rpb24iLCJhY3Rpb25zIiwic3RhcnRFZGl0QnJhbmNoIiwic3RhcnRFZGl0IiwiZmluaXNoRWRpdCIsIl91c2VCcmFuY2hNZXJnZXIiLCJ1c2VyQnJhbmNoIiwidG9rZW5pZCIsInRva2VuIiwic2hhMSIsInVzZXJJZCIsInVzZXIiLCJsb2dpbiIsIl91c2VCcmFuY2hNZXJnZXIkc3RhdCIsIm1lcmdlVG9NYXN0ZXIiLCJtZXJnZVN0YXR1cyIsIm1lcmdlRnJvbU1hc3RlciIsInVwZGF0ZVN0YXR1cyIsImNoZWNrTWVyZ2VTdGF0dXMiLCJ1c2VFZmZlY3QiLCJyZXN1bHQiLCJtZXNzYWdlIiwidXBkYXRlQnV0dG9uUHJvcHMiLCJpc1NhdmluZyIsIm9uVXBkYXRlIiwicmVsb2FkUmVzb3VyY2UiLCJjYWxsVXBkYXRlVXNlckJyYW5jaCIsImlzRXJyb3JEaWFsb2dPcGVuIiwib25DbG9zZUVycm9yRGlhbG9nIiwiaXNVcGRhdGVMb2FkaW5nIiwiaXNMb2FkaW5nIiwiZGlhbG9nTWVzc2FnZSIsImRpYWxvZ1RpdGxlIiwiZGlhbG9nTGluayIsImRpYWxvZ0xpbmtUb29sdGlwIiwib25NZXJnZSIsImxvZyIsIl91c2VNYXN0ZXJNZXJnZVByb3BzIiwiaXNNZXJnZUxvYWRpbmciLCJjYWxsTWVyZ2VVc2VyQnJhbmNoIiwicHJldkNhcmRzTG9hZGluZyIsIndvcmtpbmdSZWYiLCJzY3JpcHR1cmVUaXRsZSIsIl9zY3JpcHR1cmVDb25maWckcmVzbzgiLCJyZXNvdXJjZVN0YXR1cyIsImlzQWNjZXNzRXJyb3IiLCJ2ZXJzaW9uIiwidXBkYXRlVGl0bGUiLCJnZXRTY3JpcHR1cmVTZWxlY3RvciIsInNjcmlwdHVyZVNlbGVjdGlvbkNvbmZpZyIsImNyZWF0ZUVsZW1lbnQiLCJlcnJvck1lc3NhZ2UiLCJzZXRFZGl0VmVyc2UiLCJlZGl0aW5nIiwiZGlzYWJsZUNoYW5nZUJ1dHRvbnMiLCJvbk1lbnVDbG9zZSIsImxhbmd1YWdlSWRfIiwibGFuZ3VhZ2UiLCJkaXJlY3Rpb24iLCJfcmVmZXJlbmNlIiwiaXNIZWJyZXciLCJmb250RmFjdG9yIiwic2NhbGVkRm9udFNpemUiLCJpdGVtcyIsIl91c2VDYXJkU3RhdGUiLCJfdXNlQ2FyZFN0YXRlJHN0YXRlIiwiaGVhZGVycyIsImZpbHRlcnMiLCJpdGVtSW5kZXgiLCJtYXJrZG93blZpZXciLCJfdXNlQ2FyZFN0YXRlJGFjdGlvbnMiLCJzZXRGaWx0ZXJzIiwic2V0SXRlbUluZGV4Iiwic2V0TWFya2Rvd25WaWV3IiwicmVmU3R5bGUiLCJ1c2VNZW1vIiwiZm9udEZhbWlseSIsIk1hdGgiLCJyb3VuZCIsImNvbnRlbnRTdHlsZSIsImxpbmVIZWlnaHQiLCJzY3JpcHR1cmVMYWJlbCIsImRpc2FibGVXb3JkUG9wb3Zlcl8iLCJlbmFibGVFZGl0IiwiZW5hYmxlQWxpZ25tZW50Iiwib3JpZ2luYWxSZXBvVXJsIiwic2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyIsImN1cnJlbnRWZXJzZVJlZiIsIl9zZXRTYXZlZENoYW5nZXMiLCJzb3VyY2VMYW5ndWFnZSIsInRhcmdldExhbmd1YWdlIiwiY3VycmVudEluZGV4Iiwic2F2ZWQiLCJfcmVmMyIsIl9yZWYzJGdldENoYW5nZXMiLCJnZXRDaGFuZ2VzIiwiX3JlZjMkY2xlYXJDaGFuZ2VzIiwiY2xlYXJDaGFuZ2VzIiwiX3JlZjMkc3RhdGUiLCJfdW5zYXZlZENoYW5nZXNMaXN0IiwiX2hhdmVVbnNhdmVkQ2hhbmdlcyIsImZpbmRSZWZJbkFycmF5IiwiZmluZEl0ZW0iLCJjaHVua3MiLCJyZWZMZW4iLCJpbmRleCIsImZpbmRJbmRleCIsImNodW5rIiwiaWR4Iiwic3Vic3RyaW5nIiwibmV4dENoYXIiLCJnZXRCb29rTmFtZSIsIl9zY3JpcHR1cmVDb25maWckcmVmZSIsImJvb2tDYXBzIiwidG9VcHBlckNhc2UiLCJmaWxlcGF0aCIsInNoYSIsIl91c2VFZGl0IiwiY29udGVudCIsImNvbmZpZyIsImRvbnRDcmVhdGVCcmFuY2giLCJ0aW1lb3V0Iiwic2VydmVyVGltZU91dCIsImF1dGhvciIsImVtYWlsIiwiYnJhbmNoIiwic2F2ZUVycm9yIiwiaXNTYXZlRXJyb3IiLCJpc0Vycm9yIiwib25TYXZlRWRpdCIsIm9uU2F2ZUVkaXRQYXRjaCIsImN1cnJlbnQiLCJfc2F2ZVN1Y2Nlc2Z1bCIsInByZXZDYXJkc1NhdmluZyIsInVuc2F2ZWRDYXJkSW5kaWNlcyIsIl9pdGVyYXRvciIsIl9zdGVwIiwiY2FyZEluZGV4IiwibG9nQ2hhbmdlZCIsImNvbW1lbnQiLCJpbml0aWFsIiwiZmluYWwiLCJkaWZmIiwiX3NhdmVFZGl0IiwiX3JlZjQiLCJfY2FsbGVlIiwidXBsb2FkRnVuY3Rpb24iLCJzdWNjZXNzIiwicmVzdWx0cyIsIl9zYXZlQ29udGVudCIsImZpbGVTaGEiLCJzYXZlZEJpYmxlVXNmbSIsImVkaXRlZEJpYmxlVXNmbSIsInVwVG9EYXRlIiwibmV3Q29udGV4dExpbmVzIiwiZGlmZlBhdGNoIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsIm1lcmdlVmVyc2VPYmplY3RzSW50b0JpYmxlVXNmbSIsInVwZGF0ZWRWZXJzZU9iamVjdHMiLCJuZXdVc2ZtIiwiY2hhcHRlckNodW5rcyIsInNwbGl0IiwiY2hhcHRlckluZGV4IiwiY3VycmVudENoYXB0ZXIiLCJ2ZXJzZUNodW5rcyIsInZlcnNlSW5kZXgiLCJmcm9udE1hdHRlciIsIm5ld1ZlcnNlVXNmbSIsImNvbnZlcnRWZXJzZURhdGFUb1VTRk0iLCJvbGRWZXJzZSIsInByZWZpeExlbiIsImluZGV4T2YiLCJ2ZXJzZU51bUxlbiIsIm5ld0NoYXB0ZXIiLCJqb2luIiwiZ2V0UmVhZHlGb3JTYXZlIiwiX2dldFJlYWR5Rm9yU2F2ZSIsIl9jYWxsZWUyIiwiY3JlYXRlRWRpdEJyYW5jaCIsImJpYmxlVXNmbUluaXRpYWwiLCJiaWJsZVVzZm1OZXciLCJtZXJnZUZhaWwiLCJfY2FyZE51bSIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJfdW5zYXZlZENoYW5nZXNMaXN0JF8iLCJfc3RhdGUiLCJfZ2V0Q2hhbmdlcyIsIl9yZWY1IiwiX3NhdmVEaWZmUGF0Y2giLCJfc2F2ZUZ1bGxCaWJsZUNvbnRlbnQiLCJuZXdCb29rSnNvbiIsIl9pdGVyYXRvcjMiLCJfc3RlcDMiLCJfY2FyZEluZGV4IiwiX2NhcmROdW0yIiwiX3Vuc2F2ZWRDaGFuZ2VzTGlzdCRfMiIsIl9nZXRDaGFuZ2VzMiIsIl9zdGF0ZTIiLCJfbmV3VXNmbSIsIl9nZXRDaGFuZ2VzMyIsIm5ld1ZlcnNlVGV4dCIsIl9yZWY2IiwiX3VwZGF0ZWRWZXJzZU9iamVjdHMiLCJ0YXJnZXRWZXJzZU9iamVjdHNfIiwiX0FsaWdubWVudEhlbHBlcnMkdXBkIiwidGFyZ2V0VmVyc2VPYmplY3RzIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvMTEiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJwYXJzZUludCIsInQwIiwidXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UiLCJ1cGRhdGVWZXJzZSIsInRvVVNGTSIsImZvcmNlZE5ld0xpbmVzIiwiX3JlZjciLCJfdmVyc2VzRm9yUmVmIiwibmV3U2VsZWN0aW9ucyIsInVwZGF0ZVNlbGVjdGlvbnMiLCJfbWFwIiwib3JpZ2luYWxCb29rSWQiLCJib29rVmVyc2VPYmplY3QiLCJjaGFwdGVycyIsIm5ld1NlbGVjdGVkUXVvdGUiLCJxdW90ZSIsIl9zZWxlY3RlZFF1b3RlJHJlZmVyZTMiLCJvcmlnaW5hbFZlcnNlcyIsInN1YnN0aXR1dGUiLCJzdGFydFZlcnNlIiwibGFzdFZlcnNlIiwiX3ZlcnNlIiwidmVyc2VzIiwiX2l0ZXJhdG9yNCIsIl9zdGVwNCIsInZlcnNlSXRlbSIsInZvIiwiX2Jvb2tWZXJzZU9iamVjdCRfY2hhIiwic2V0IiwiX3NlbGVjdGVkUXVvdGUkcmVmZXJlIiwiX3NlbGVjdGVkUXVvdGUkcmVmZXJlMiIsInN1YlJlZiIsInF1b3RlTWF0Y2hlcyIsImJvb2tPYmplY3QiLCJvY2N1cnJlbmNlIiwic2l6ZSIsIndvcmRzIiwiX2tleSIsIm1hcCIsIndvcmQiLCJ0ZXh0Iiwibm9ybWFsaXplU3RyaW5nIiwiYm9va3NOb3RTYW1lIiwiX3ZlcnNlc0ZvclJlZjIiLCJfZm91bmRPcmlnaW5hbENvbnRlbnQiLCJfaXRlcmF0b3I1IiwiX3N0ZXA1IiwiX2Jvb2tWZXJzZU9iamVjdCRfY2hhMiIsImlzVmVyc2VOb3RFbXB0eSIsInVwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1cyIsImFsaWduZWQiLCJfdmVyc2VzRm9yUmVmMyIsIl9yZWY4IiwicmVuZGVyZWRTY3JpcHR1cmVQYW5lcyIsIl9jdXJyZW50VmVyc2VEYXRhIiwiX2N1cnJlbnRWZXJzZURhdGEkdmVyIiwiaW5pdGlhbFZlcnNlT2JqZWN0cyIsIl9yZWY5IiwiYm9va0lkXyIsIl9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnIiwiaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50IiwiZGV0ZXJtaW5pbmdCcmFuY2giLCJvbkFsaWdubWVudEZpbmlzaCIsInNhdmluZyIsImhhbmRsZUFsaWduQnV0dG9uQ2xpY2siLCJvblJlbmRlclRvb2xiYXIiLCJfcmVmMTAiLCJuZXdJdGVtcyIsImFsbFZlcnNlc0FsaWduZWQiLCJldmVyeSIsImFsaWduU3RhdHVzIiwiYWxpZ25JY29uIiwiYWxpZ25CdXR0b25UZXh0IiwiY29sb3IiLCJvbkNsaWNrIiwiY3Vyc29yIiwiRnJhZ21lbnQiLCJvcGVuIiwib25DbG9zZSIsImxpbmsiLCJsaW5rVG9vbHRpcCIsInNlbGVjdGlvbkJvb2tPYmplY3RzIiwidGFyZ2V0VmVyc2VzRm9yUmVmIiwiaGlnaGxpZ2h0T25seUNvbXBsZXRlUXVvdGVzIiwib25TZWxlY3Rpb25zIiwib3JpZ2luYWxCb29rT2JqZWN0cyIsInJlZlN0cmluZyIsInNldHRpbmdzVGl0bGUiLCJnZXRDdXN0b21Db21wb25lbnQiLCJoaWRlTWFya2Rvd25Ub2dnbGUiLCJlZGl0YWJsZSIsIm9uVmVyc2VTZWxlY3QiLCJwcm9wVHlwZXMiLCJzdHJpbmciLCJpc1JlcXVpcmVkIiwib2JqZWN0IiwibnVtYmVyIiwiYm9vbCIsImZ1bmMiLCJzaGFwZSIsIm9uZU9mVHlwZSIsImFueSIsInNldEFyZVJlc291cmNlc0xvYWRpbmciLCJzZXRBcmVSZXNvdXJjZXNTYXZpbmciXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9TY3JpcHR1cmVDYXJkL1NjcmlwdHVyZUNhcmQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgeyBjb3JlLCBTZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyIH0gZnJvbSAnc2NyaXB0dXJlLXJlc291cmNlcy1yY2wnXG5pbXBvcnQgdXNmbWpzIGZyb20gJ3VzZm0tanMnXG5pbXBvcnQgeyBnZXRQYXRjaCwgdXNlRWRpdCB9IGZyb20gJ2dpdGVhLXJlYWN0LXRvb2xraXQnXG5pbXBvcnQgeyBJY29uQnV0dG9uIH0gZnJvbSAnQG11aS9tYXRlcmlhbCdcbmltcG9ydCB7IFJ4TGluazIsIFJ4TGlua0JyZWFrMiB9IGZyb20gJ3JlYWN0LWljb25zL3J4J1xuaW1wb3J0IHtcbiAgQ2FyZCxcbiAgRXJyb3JEaWFsb2csXG4gIEVSUk9SX1NUQVRFLFxuICBNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SLFxuICBVcGRhdGVCcmFuY2hCdXR0b24sXG4gIHVzZUJyYW5jaE1lcmdlcixcbiAgdXNlQ2FyZFN0YXRlLFxuICB1c2VDb250ZW50VXBkYXRlUHJvcHMsXG4gIHVzZU1hc3Rlck1lcmdlUHJvcHMsXG4gIHVzZVVzZXJCcmFuY2gsXG59IGZyb20gJ3RyYW5zbGF0aW9uLWhlbHBzLXJjbCdcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IGdldFF1b3RlTWF0Y2hlc0luQm9va1JlZiB9IGZyb20gJ3V3LXF1b3RlLWhlbHBlcnMnXG5pbXBvcnQgeyBBbGlnbm1lbnRIZWxwZXJzLCBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzIH0gZnJvbSAnd29yZC1hbGlnbmVyLXJjbCdcbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tICdAcmVhY3QtaG9va3ovZGVlcC1lcXVhbCdcbmltcG9ydCB7IGdldFZlcnNlcyB9IGZyb20gJ2JpYmxlLXJlZmVyZW5jZS1yYW5nZSdcbmltcG9ydCB7IFNjcmlwdHVyZVBhbmUsIFNjcmlwdHVyZVNlbGVjdG9yIH0gZnJvbSAnLi4nXG5pbXBvcnQgeyB1c2VTY3JpcHR1cmVTZXR0aW5ncyB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZVNjcmlwdHVyZVNldHRpbmdzJ1xuaW1wb3J0IHtcbiAgY2xlYW51cFZlcnNlT2JqZWN0cyxcbiAgZW1wdHlDb250ZW50LFxuICBmZXRjaEJpYmxlQm9vayxcbiAgZml4T2NjdXJyZW5jZSxcbiAgZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lLFxuICBnZXRSZXNvdXJjZUxpbmssXG4gIGdldFJlc291cmNlTWVzc2FnZSxcbiAgZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzLFxuICBpc09yaWdpbmFsQmlibGUsXG59IGZyb20gJy4uLy4uL3V0aWxzL1NjcmlwdHVyZVNldHRpbmdzJ1xuaW1wb3J0IHsgZGVsYXkgfSBmcm9tICcuLi8uLi91dGlscy9kZWxheSdcbmltcG9ydCB7IGFyZU1hcHNUaGVTYW1lIH0gZnJvbSAnLi4vLi4vdXRpbHMvbWFwcydcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSAnLi4vU2NyaXB0dXJlUGFuZS9zdHlsZWQnXG5pbXBvcnQge1xuICBOVF9PUklHX0xBTkcsXG4gIE9SSUdJTkFMX1NPVVJDRSxcbiAgT1RfT1JJR19MQU5HLFxufSBmcm9tICcuLi8uLi91dGlscydcbmltcG9ydCB7IFZlcnNlU2VsZWN0b3JQb3B1cCB9IGZyb20gJy4uL1ZlcnNlU2VsZWN0b3JQb3B1cCdcbmltcG9ydCB7IFNjcmlwdHVyZVJlZmVyZW5jZVR5cGUsIFZlcnNlT2JqZWN0c1R5cGUgfSBmcm9tICcuLi8uLi90eXBlcydcblxuY29uc3QgS0VZX0ZPTlRfU0laRV9CQVNFID0gJ3NjcmlwdHVyZVBhbmVGb250U2l6ZV8nXG5jb25zdCBsYWJlbCA9ICdWZXJzaW9uJ1xuY29uc3Qgc3R5bGUgPSB7IG1hcmdpblRvcDogJzE2cHgnLCB3aWR0aDogJzUwMHB4JyB9XG5cbi8qKlxuICogY3JlYXRlIGEgc2hvcnQgY29tcGFyaXNvbiB2ZXJzZSByZWYgb2JqZWN0IHdpdGhvdXQgYWxsIHRoZSB2ZXJzZURhdGFcbiAqIEBwYXJhbSB2ZXJzZVJlZlxuICovXG5mdW5jdGlvbiBjb21wYXJlT2JqZWN0KHZlcnNlUmVmKSB7XG4gIGNvbnN0IHtcbiAgICBjaGFwdGVyLFxuICAgIHZlcnNlLFxuICAgIHZlcnNlRGF0YSxcbiAgfSA9IHZlcnNlUmVmIHx8IHt9XG4gIGNvbnN0IHZlcnNlT2JqZWN0cyA9IHZlcnNlRGF0YT8udmVyc2VPYmplY3RzPy5sZW5ndGggPyBKU09OLnN0cmluZ2lmeSh2ZXJzZURhdGEudmVyc2VPYmplY3RzKSA6ICcnXG4gIHJldHVybiB7XG4gICAgY2hhcHRlcixcbiAgICB2ZXJzZSxcbiAgICB2ZXJzZU9iamVjdHMsXG4gIH1cbn1cblxuLyoqXG4gKiBjb21wYXJlIHR3byB2ZXJzZSByZWZzIHRvIHNlZSBpZiB0aGV5IGFyZSBzdWJzdGFudGlhbGx5IHNpbWlsYXJcbiAqIEBwYXJhbSB2ZXJzZXNGb3JSZWYxXG4gKiBAcGFyYW0gdmVyc2VzRm9yUmVmMlxuICovXG5mdW5jdGlvbiBhcmVWZXJzZXNTYW1lKHZlcnNlc0ZvclJlZjE6IGFueVtdLCB2ZXJzZXNGb3JSZWYyOiBhbnlbXSkge1xuICB2ZXJzZXNGb3JSZWYxID0gdmVyc2VzRm9yUmVmMSB8fCBbXVxuICB2ZXJzZXNGb3JSZWYyID0gdmVyc2VzRm9yUmVmMiB8fCBbXVxuICBsZXQgYXJlU2FtZSA9IGZhbHNlXG5cbiAgaWYgKHZlcnNlc0ZvclJlZjEubGVuZ3RoID09PSB2ZXJzZXNGb3JSZWYyLmxlbmd0aCkge1xuICAgIGFyZVNhbWUgPSB0cnVlXG5cbiAgICBmb3IgKGxldCBpID0gMCwgbD0gdmVyc2VzRm9yUmVmMS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGNvbnN0IHZlcnNlMSA9IGNvbXBhcmVPYmplY3QodmVyc2VzRm9yUmVmMVtpXSlcbiAgICAgIGNvbnN0IHZlcnNlMiA9IGNvbXBhcmVPYmplY3QodmVyc2VzRm9yUmVmMltpXSlcbiAgICAgIGFyZVNhbWUgPSBpc0VxdWFsKHZlcnNlMSwgdmVyc2UyKVxuXG4gICAgICBpZiAoIWFyZVNhbWUpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYXJlU2FtZVxufVxuXG4vKipcbiAqIGdldCB0aGUgVVNGTSBmb3IgYm9va0lkIGZyb20gc2NyaXB0dXJlQ29uZmlnLlxuICogQHBhcmFtIHtvYmplY3R9IHNjcmlwdHVyZUNvbmZpZ1xuICogQHBhcmFtIHtzdHJpbmd9IGJvb2tJZFxuICovXG5leHBvcnQgY29uc3QgZ2V0Q3VycmVudEJvb2sgPSAoc2NyaXB0dXJlQ29uZmlnLCBib29rSWQpID0+IHtcbiAgY29uc3QgbGF0ZXN0QmlibGUgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdGU/LnJlc291cmNlPy5wcm9qZWN0SWRcbiAgY29uc3QgZmlsZW5hbWUgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdGU/LnJlc291cmNlPy5uYW1lIC8vIExpa2UgXCI1Ny1USVQudXNmbVwiXG4gIGxldCBpc0Jvb2tWYWxpZCA9IGZhbHNlXG4gIGNvbnN0IGJvb2tOYW1lID0gZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lKGZpbGVuYW1lKVxuICBpc0Jvb2tWYWxpZCA9IGJvb2tOYW1lPy50b0xvd2VyQ2FzZSgpPy5pbmNsdWRlcyhib29rSWQpXG4gIGlmICghaXNCb29rVmFsaWQpIHtcbiAgICBjb25zb2xlLndhcm4oYEN1cnJlbnQgYm9va0lkIGlzICR7Ym9va0lkfSBhbmQgVVNGTSBmaWxlIGlzICR7ZmlsZW5hbWV9YClcbiAgfVxuICBpZiAobGF0ZXN0QmlibGU/LnRvTG93ZXJDYXNlKCkgIT09IGJvb2tJZCkge1xuICAgIGNvbnNvbGUud2FybihgQ3VycmVudCBib29rSWQgaXMgJHtib29rSWR9IGJ1dCBmZXRjaGVkIHByb2plY3RJZCBpcyAke2xhdGVzdEJpYmxlfWApXG4gICAgaXNCb29rVmFsaWQgPSBmYWxzZVxuICB9XG4gIGlmIChpc0Jvb2tWYWxpZCkge1xuICAgIGNvbnN0IGJpYmxlVXNmbSA9IHNjcmlwdHVyZUNvbmZpZz8uYmlibGVVc2ZtO1xuICAgIGlmIChiaWJsZVVzZm0pIHtcbiAgICAgIHJldHVybiBiaWJsZVVzZm1cbiAgICB9XG4gICAgY29uc29sZS5lcnJvcihgZ2V0Q3VycmVudEJvb2soKSAtIEJpYmxlIFVTRk0gbWlzc2luZ2ApXG4gIH1cbiAgY29uc29sZS5lcnJvcihgZ2V0Q3VycmVudEJvb2soKSAtIEV4cGVjdGVkICR7Ym9va0lkfSBidXQgZ290IGZpbGUgJHtmaWxlbmFtZX1gKVxuICByZXR1cm4gbnVsbFxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTY3JpcHR1cmVDYXJkKHtcbiAgYXBwUmVmLFxuICBhdXRoZW50aWNhdGlvbixcbiAgYm9va0luZGV4LFxuICBjYXJkTnVtLFxuICBjbGFzc2VzLFxuICBkaXNhYmxlV29yZFBvcG92ZXIsXG4gIGdldExhbmd1YWdlLFxuICBnZXRMZXhpY29uRGF0YSxcbiAgZ3JlZWtSZXBvVXJsLFxuICBoZWJyZXdSZXBvVXJsLFxuICBodHRwQ29uZmlnLFxuICBpZCxcbiAgaXNOVCxcbiAgbG9nZ2VkSW5Vc2VyLFxuICBtZXJnZUNoZWNrLFxuICBvbk1pbmltaXplLFxuICBvblJlc291cmNlRXJyb3IsXG4gIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMsXG4gIHJlZmVyZW5jZTogcmVmZXJlbmNlXyxcbiAgcmVzb3VyY2U6IHtcbiAgICBvd25lcixcbiAgICBsYW5ndWFnZUlkLFxuICAgIHJlc291cmNlSWQsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICB9LFxuICByZXNvdXJjZUxpbmssXG4gIHNlbGVjdGVkUXVvdGUsXG4gIHNlcnZlcixcbiAgc2V0Q2FyZHNMb2FkaW5nTWVyZ2UsXG4gIHNldENhcmRzTG9hZGluZ1VwZGF0ZSxcbiAgc2V0Q2FyZHNTYXZpbmcsXG4gIHNldFNhdmVkQ2hhbmdlcyxcbiAgc2V0V29yZEFsaWduZXJTdGF0dXMsXG4gIHRyYW5zbGF0ZSxcbiAgdGl0bGUsXG4gIHVzZVVzZXJMb2NhbFN0b3JhZ2UsXG4gIHVwZGF0ZU1lcmdlU3RhdGUsXG59KSB7XG4gIGNvbnN0IHNhdmVJblByb2dyZXNzID0gUmVhY3QudXNlUmVmKGZhbHNlKTsgLy8gQWRkIHJlZiB0byB0cmFjayBzYXZlIG9wZXJhdGlvblxuICBjb25zdCBib29rSWQgPSByZWZlcmVuY2VfPy5ib29rSWQgfHwgcmVmZXJlbmNlXz8ucHJvamVjdElkIC8vIG9sZGVyIHZlcnNpb25zIHVzZSBwcm9qZWN0SWQsIHNvIGZhbGwgYmFjayB0byB0aGF0XG4gIGNvbnN0IHJlZmVyZW5jZSA9IHtcbiAgICBib29rSWQsXG4gICAgY2hhcHRlcjogcmVmZXJlbmNlXz8uY2hhcHRlcixcbiAgICB2ZXJzZTogcmVmZXJlbmNlXz8udmVyc2UsXG4gIH1cbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV9dID0gUmVhY3QudXNlU3RhdGUoe1xuICAgIGNoZWNrRm9yRWRpdEJyYW5jaDogMCxcbiAgICBjb250ZXh0TGluZXM6IDQsXG4gICAgY3VycmVudFJlZmVyZW5jZTogbnVsbCxcbiAgICBlZGl0QnJhbmNoUmVhZHk6IGZhbHNlLFxuICAgIGVkaXRWZXJzZTogbnVsbCxcbiAgICBmb3VuZE9yaWdpbmFsQ29udGVudDogZmFsc2UsXG4gICAgaGF2ZVVuc2F2ZWRDaGFuZ2VzOiBmYWxzZSxcbiAgICBsYXN0U2VsZWN0ZWRRdW90ZTogbnVsbCxcbiAgICByZWFkeUZvckZldGNoOiBmYWxzZSxcbiAgICByZWY6IGFwcFJlZixcbiAgICBzYXZlQ2xpY2tlZDogZmFsc2UsXG4gICAgc2F2ZUNvbnRlbnQ6IG51bGwsXG4gICAgc2F2ZURpZmZQYXRjaDogZmFsc2UsXG4gICAgc2F2ZUZ1bGxCaWJsZUNvbnRlbnQ6IG51bGwsXG4gICAgc2VsZWN0aW9uczogbmV3IE1hcCgpLFxuICAgIHNlbGVjdGlvbnNSZWZzOiAnJyxcbiAgICBzaG93QWxpZ25tZW50UG9wdXA6IGZhbHNlLFxuICAgIHN0YXJ0U2F2ZTogZmFsc2UsXG4gICAgdXJsRXJyb3I6IG51bGwsXG4gICAgdXNpbmdVc2VyQnJhbmNoOiBmYWxzZSxcbiAgICB1bnNhdmVkQ2hhbmdlc0xpc3Q6IHt9LFxuICAgIHZlcnNlc0FsaWdubWVudFN0YXR1czogbnVsbCxcbiAgICB2ZXJzZXNGb3JSZWY6IG51bGwsXG4gICAgdmVyc2VPYmplY3RzTWFwOiBuZXcgTWFwKCksXG4gICAgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogbnVsbCxcbiAgfSlcbiAgY29uc3Qge1xuICAgIGNoZWNrRm9yRWRpdEJyYW5jaCxcbiAgICBjb250ZXh0TGluZXMsXG4gICAgY3VycmVudFJlZmVyZW5jZSxcbiAgICBlZGl0QnJhbmNoUmVhZHksXG4gICAgZWRpdFZlcnNlLCAvLyBrZWVwIHRyYWNrIG9mIHZlcnNlIGJlaW5nIGVkaXR0ZWRcbiAgICBmb3VuZE9yaWdpbmFsQ29udGVudCxcbiAgICBoYXZlVW5zYXZlZENoYW5nZXMsXG4gICAgbGFzdFNlbGVjdGVkUXVvdGUsXG4gICAgcmVhZHlGb3JGZXRjaCxcbiAgICByZWYsXG4gICAgc2F2ZUNsaWNrZWQsXG4gICAgc2F2ZUNvbnRlbnQsXG4gICAgc2F2ZURpZmZQYXRjaCxcbiAgICBzYXZlRnVsbEJpYmxlQ29udGVudCxcbiAgICBzZWxlY3Rpb25zLFxuICAgIHNlbGVjdGlvbnNSZWZzLFxuICAgIHNob3dBbGlnbm1lbnRQb3B1cCxcbiAgICBzdGFydFNhdmUsXG4gICAgdXJsRXJyb3IsXG4gICAgdXNpbmdVc2VyQnJhbmNoLFxuICAgIHVuc2F2ZWRDaGFuZ2VzTGlzdCxcbiAgICB2ZXJzZU9iamVjdHNNYXAsXG4gICAgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCxcbiAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXMsXG4gICAgdmVyc2VzRm9yUmVmLFxuICB9ID0gc3RhdGVcblxuICBjb25zdCBbZm9udFNpemUsIHNldEZvbnRTaXplXSA9IHVzZVVzZXJMb2NhbFN0b3JhZ2UoS0VZX0ZPTlRfU0laRV9CQVNFICsgY2FyZE51bSwgMTAwKVxuICBjb25zdCBpc05UXyA9IGlzTlQoYm9va0lkKVxuXG4gIGZ1bmN0aW9uIHNldFN0YXRlKG5ld1N0YXRlKSB7XG4gICAgc2V0U3RhdGVfKHByZXZTdGF0ZSA9PiAoeyAuLi5wcmV2U3RhdGUsIC4uLm5ld1N0YXRlIH0pKVxuICB9XG5cbiAgaHR0cENvbmZpZyA9IHtcbiAgICAuLi5odHRwQ29uZmlnLFxuICAgIGNhY2hlOiB7IG1heEFnZTogMCB9LFxuICAgIG5vQ2FjaGU6IHRydWUsXG4gIH0gLy8gZGlzYWJsZSBodHRwIGNhY2hpbmdcblxuICBjb25zdCB7XG4gICAgaXNOZXdUZXN0YW1lbnQsXG4gICAgc2NyaXB0dXJlQ29uZmlnLFxuICAgIHNldFNjcmlwdHVyZSxcbiAgICBzY3JpcHR1cmVTZXR0aW5ncyxcbiAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdCxcbiAgfSA9IHVzZVNjcmlwdHVyZVNldHRpbmdzKHtcbiAgICBhcHBSZWY6IHJlZixcbiAgICBjYXJkTnVtLFxuICAgIGRpc2FibGVXb3JkUG9wb3ZlcixcbiAgICBncmVla1JlcG9VcmwsXG4gICAgaGVicmV3UmVwb1VybCxcbiAgICBodHRwQ29uZmlnLFxuICAgIGlzTlQsXG4gICAgbGFuZ3VhZ2VJZCxcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gICAgb3duZXIsXG4gICAgcmVhZHlGb3JGZXRjaCxcbiAgICByZWZlcmVuY2U6IGN1cnJlbnRSZWZlcmVuY2UgfHwgcmVmZXJlbmNlLFxuICAgIHJlc291cmNlSWQsXG4gICAgcmVzb3VyY2VMaW5rLFxuICAgIHNldFVybEVycm9yOiAoZXJyb3IpID0+IHNldFN0YXRlKHsgdXJsRXJyb3I6IGVycm9yIH0pLFxuICAgIHNlcnZlcixcbiAgICB0aXRsZSxcbiAgICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICAgIHdob2xlQm9vazogdHJ1ZSxcbiAgfSlcblxuICBjb25zdCBmZXRjaGVkUmVzb3VyY2UgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdGVcbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCByZXBvID0gYCR7c2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ubGFuZ3VhZ2VJZH1fJHtzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5wcm9qZWN0SWR9YFxuICBjb25zdCB1c2luZ09yaWdpbmFsQmlibGUgPSBpc09yaWdpbmFsQmlibGUoc2NyaXB0dXJlQ29uZmlnWydyZXNvdXJjZSddPy5wcm9qZWN0SWQpXG5cblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IGNhcmRSZXNvdXJjZUlkID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucHJvamVjdElkIHx8IHJlc291cmNlSWRcbiAgLy8gQHRzLWlnbm9yZVxuICBsZXQgcmVmXyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/LnJlZiB8fCBhcHBSZWZcbiAgY29uc3QgY2FuVXNlRWRpdEJyYW5jaCA9ICEhKGxvZ2dlZEluVXNlciAmJiBhdXRoZW50aWNhdGlvbiAmJiAocmVzb3VyY2VJZCAhPT0gT1JJR0lOQUxfU09VUkNFKSAmJiAvLyBUUklDS1kgaWYgbm90IG9yaWdpbmFsIGxhbmd1YWdlIGFuZCB3ZSBoYXZlIGxvZ2luIGRhdGEsIHRoZW4gd2UgY2FuIHVzZSB0aGUgZWRpdCBicmFuY2hcbiAgICAoKHJlZl8gPT09ICdtYXN0ZXInKSB8fCAocmVmXy5pbmNsdWRlcyhsb2dnZWRJblVzZXIpKSkpIC8vIGFsc28gbWFrZSBzdXJlIG5vdCBhIHZlcnNpb24gdGFnXG5cbiAgY29uc3Qge1xuICAgIHN0YXRlOiB7XG4gICAgICBicmFuY2hEZXRlcm1pbmVkLFxuICAgICAgdXNlckVkaXRCcmFuY2hOYW1lLFxuICAgICAgdXNpbmdVc2VyQnJhbmNoOiBfdXNpbmdVc2VyQnJhbmNoLFxuICAgICAgd29ya2luZ1Jlc291cmNlQnJhbmNoLFxuICAgIH0sXG4gICAgYWN0aW9uczoge1xuICAgICAgc3RhcnRFZGl0OiBzdGFydEVkaXRCcmFuY2gsXG4gICAgICBmaW5pc2hFZGl0LFxuICAgIH0sXG4gIH0gPSB1c2VVc2VyQnJhbmNoKHtcbiAgICBhcHBSZWYsXG4gICAgYXV0aGVudGljYXRpb246IGNhblVzZUVkaXRCcmFuY2ggPyBhdXRoZW50aWNhdGlvbiA6IG51bGwsXG4gICAgYm9va0lkLFxuICAgIGNhcmRJZDogaWQsXG4gICAgY2FyZFJlc291cmNlSWQsXG4gICAgY2hlY2tGb3JFZGl0QnJhbmNoLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgbG9nZ2VkSW5Vc2VyOiBjYW5Vc2VFZGl0QnJhbmNoID8gbG9nZ2VkSW5Vc2VyIDogbnVsbCxcbiAgICBvd25lcixcbiAgICBvblJlc291cmNlRXJyb3IsXG4gICAgc2VydmVyLFxuICAgIHVzZVVzZXJMb2NhbFN0b3JhZ2UsXG4gIH0pXG5cbiAgY29uc3QgX3VzZUJyYW5jaE1lcmdlciA9IHVzZUJyYW5jaE1lcmdlcih7XG4gICAgc2VydmVyLFxuICAgIG93bmVyLFxuICAgIHJlcG8sXG4gICAgdXNlckJyYW5jaDogdXNlckVkaXRCcmFuY2hOYW1lLFxuICAgIHRva2VuaWQ6IGF1dGhlbnRpY2F0aW9uPy50b2tlbj8uc2hhMSxcbiAgICB1c2VySWQ6IGF1dGhlbnRpY2F0aW9uPy51c2VyPy5sb2dpblxuICB9KVxuICBjb25zdCB7XG4gICAgc3RhdGU6IHtcbiAgICAgIG1lcmdlU3RhdHVzOiBtZXJnZVRvTWFzdGVyLFxuICAgICAgdXBkYXRlU3RhdHVzOiBtZXJnZUZyb21NYXN0ZXIsXG4gICAgfSxcbiAgICBhY3Rpb25zOiB7XG4gICAgICBjaGVja01lcmdlU3RhdHVzLFxuICAgIH1cbiAgfSA9IF91c2VCcmFuY2hNZXJnZXJcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChtZXJnZUNoZWNrID4gMCAmJiBjaGVja01lcmdlU3RhdHVzKSB7XG4gICAgICAvLyBXcmFwIGluIHRyeS9jYXRjaCDigJQgZGNzLWJyYW5jaC1tZXJnZXIgY2FuIHRocm93IG9uIDQwNC80MDkgZnJvbSAvcHVsbHMgZW5kcG9pbnRzXG4gICAgICAvLyB3aGVuIG5vIFBSIGV4aXN0cyBmb3IgYSByZXNvdXJjZSdzIHVzZXIgYnJhbmNoLiBUaGlzIGlzIG5vcm1hbCBhbmQgc2hvdWxkIG5vdCBjcmFzaCB0aGUgYXBwLlxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gY2hlY2tNZXJnZVN0YXR1cygpXG4gICAgICAgIGlmIChyZXN1bHQgJiYgdHlwZW9mIHJlc3VsdC5jYXRjaCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHJlc3VsdC5jYXRjaChlcnIgPT4gY29uc29sZS53YXJuKGBSZXNvdXJjZUNhcmQoJHtjYXJkUmVzb3VyY2VJZH0pIG1lcmdlIGNoZWNrIGZhaWxlZDpgLCBlcnI/Lm1lc3NhZ2UgfHwgZXJyKSlcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgUmVzb3VyY2VDYXJkKCR7Y2FyZFJlc291cmNlSWR9KSBtZXJnZSBjaGVjayB0aHJldzpgLCBlcnI/Lm1lc3NhZ2UgfHwgZXJyKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW21lcmdlQ2hlY2tdKVxuXG4gIGNvbnN0IHVwZGF0ZUJ1dHRvblByb3BzID0gdXNlQ29udGVudFVwZGF0ZVByb3BzKHtcbiAgICBpc1NhdmluZzogc3RhcnRTYXZlLFxuICAgIHVzZUJyYW5jaE1lcmdlcjogX3VzZUJyYW5jaE1lcmdlcixcbiAgICBvblVwZGF0ZTogKCkgPT4ge1xuICAgICAgZGVsYXkoNTAwKS50aGVuKCgpID0+IHNjcmlwdHVyZUNvbmZpZz8ucmVsb2FkUmVzb3VyY2UoKSlcbiAgICB9LFxuICB9KVxuXG4gIGNvbnN0IHtcbiAgICBjYWxsVXBkYXRlVXNlckJyYW5jaCxcbiAgICBpc0Vycm9yRGlhbG9nT3BlbixcbiAgICBvbkNsb3NlRXJyb3JEaWFsb2csXG4gICAgaXNMb2FkaW5nOiBpc1VwZGF0ZUxvYWRpbmcsXG4gICAgZGlhbG9nTWVzc2FnZSxcbiAgICBkaWFsb2dUaXRsZSxcbiAgICBkaWFsb2dMaW5rLFxuICAgIGRpYWxvZ0xpbmtUb29sdGlwLFxuICB9ID0gdXBkYXRlQnV0dG9uUHJvcHNcblxuICBjb25zdCBvbk1lcmdlID0gKCkgPT4ge1xuICAgIGZpbmlzaEVkaXQoKVxuICAgIGNvbnNvbGUubG9nKGBvbk1lcmdlKCkgc3dpdGNoaW5nIGJhY2sgdG8gbWFzdGVyIGFmdGVyIG1lcmdlIGFwcFJlZjpgLCBhcHBSZWYpXG4gICAgc2V0U3RhdGUoe1xuICAgICAgcmVhZHlGb3JGZXRjaDogZmFsc2UsXG4gICAgICByZWY6IGFwcFJlZixcbiAgICB9KVxuICAgIGRlbGF5KDUwMCkudGhlbigoKSA9PiB7XG4gICAgICBzZXRTdGF0ZSh7XG4gICAgICAgIGNoZWNrRm9yRWRpdEJyYW5jaDogY2hlY2tGb3JFZGl0QnJhbmNoICsgMSwgLy8gdHJpZ2dlciByZWNoZWNrIG9mIHVzZXIgYnJhbmNoIHdoaWNoIHdpbGwgc3dpdGNoIHRoZSBicmFuY2ggYmFjayB0byBtYXN0ZXJcbiAgICAgICAgcmVhZHlGb3JGZXRjaDogZmFsc2UsXG4gICAgICB9KVxuICAgIH0pXG4gIH1cblxuICBjb25zdCB7IGlzTG9hZGluZzogaXNNZXJnZUxvYWRpbmcsIGNhbGxNZXJnZVVzZXJCcmFuY2ggfSA9IHVzZU1hc3Rlck1lcmdlUHJvcHMoe1xuICAgIGlzU2F2aW5nOiBzdGFydFNhdmUsXG4gICAgdXNlQnJhbmNoTWVyZ2VyOiBfdXNlQnJhbmNoTWVyZ2VyLFxuICAgIG9uTWVyZ2UsXG4gIH0pXG5cbiAgLy8gU2luY2Ugb3JpZ2luYWwgdGV4dCAoR3JlZWsvSGVicmV3KSBzaG91bGQgbm90IGJlIGVkaXRlZCwgZG8gbm90IGluY2x1ZGVcbiAgLy8gdGhlbSBpbiBtZXJnZSBzdGF0ZSBzaW5jZSB1c2VyIHdpbGwgbm90IG1lcmdlL3B1c2ggY2hhbmdlcy5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoY2FyZFJlc291cmNlSWQgJiYgIXVzaW5nT3JpZ2luYWxCaWJsZSkge1xuICAgICAgdXBkYXRlTWVyZ2VTdGF0ZSAmJiB1cGRhdGVNZXJnZVN0YXRlKFxuICAgICAgICBjYXJkUmVzb3VyY2VJZCxcbiAgICAgICAgc2NyaXB0dXJlQ29uZmlnLnRpdGxlIHx8IHNjcmlwdHVyZVNldHRpbmdzLnRpdGxlLFxuICAgICAgICBtZXJnZUZyb21NYXN0ZXIsXG4gICAgICAgIG1lcmdlVG9NYXN0ZXIsXG4gICAgICAgIGNhbGxVcGRhdGVVc2VyQnJhbmNoLFxuICAgICAgICBjYWxsTWVyZ2VVc2VyQnJhbmNoLFxuICAgICAgKVxuICAgIH1cbiAgfSxbY2FyZFJlc291cmNlSWQsIHNjcmlwdHVyZUNvbmZpZy50aXRsZSwgbWVyZ2VGcm9tTWFzdGVyLCBtZXJnZVRvTWFzdGVyXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc1VwZGF0ZUxvYWRpbmcpIHtcbiAgICAgIHNldENhcmRzTG9hZGluZ1VwZGF0ZT8uKHByZXZDYXJkc0xvYWRpbmcgPT4gWy4uLnByZXZDYXJkc0xvYWRpbmcsIGNhcmRSZXNvdXJjZUlkXSlcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0Q2FyZHNMb2FkaW5nVXBkYXRlPy4ocHJldkNhcmRzTG9hZGluZyA9PiBwcmV2Q2FyZHNMb2FkaW5nLmZpbHRlcihjYXJkSWQgPT4gY2FyZElkICE9PSBjYXJkUmVzb3VyY2VJZCkpXG4gICAgfVxuICB9LCBbaXNVcGRhdGVMb2FkaW5nXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc01lcmdlTG9hZGluZykge1xuICAgICAgc2V0Q2FyZHNMb2FkaW5nTWVyZ2U/LihwcmV2Q2FyZHNMb2FkaW5nID0+IFsuLi5wcmV2Q2FyZHNMb2FkaW5nLCBjYXJkUmVzb3VyY2VJZF0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHNldENhcmRzTG9hZGluZ01lcmdlPy4ocHJldkNhcmRzTG9hZGluZyA9PiBwcmV2Q2FyZHNMb2FkaW5nLmZpbHRlcihjYXJkSWQgPT4gY2FyZElkICE9PSBjYXJkUmVzb3VyY2VJZCkpXG4gICAgfVxuICB9LCBbaXNNZXJnZUxvYWRpbmddKVxuXG4gIGNvbnN0IHdvcmtpbmdSZWYgPSBjYW5Vc2VFZGl0QnJhbmNoID8gd29ya2luZ1Jlc291cmNlQnJhbmNoIDogYXBwUmVmXG4gIGxldCBzY3JpcHR1cmVUaXRsZVxuXG4gIGlmICghY2FuVXNlRWRpdEJyYW5jaCAmJiAhcmVhZHlGb3JGZXRjaCkgeyAvLyBpZiBiaWJsZSBub3QgZWxpZ2libGUgZm9yIHVzZXIgYnJhbmNoLCBtYWtlIHN1cmUgaXQncyByZWFkeVxuICAgIHNldFN0YXRlKHsgcmVhZHlGb3JGZXRjaDogdHJ1ZSB9KVxuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZCBib29rIGNoYW5nZWRgLCB7IGJvb2tJZCwgb3duZXIsIGxhbmd1YWdlSWQsIHJlc291cmNlSWQgfSlcblxuICAgIGlmIChjYW5Vc2VFZGl0QnJhbmNoKSB7IC8vIGlmIGJpYmxlIGVsaWdpYmxlIGZvciB1c2VyIGJyYW5jaCwgcmVmcmVzaCBpdFxuICAgICAgc2V0U3RhdGUoeyByZWFkeUZvckZldGNoOiBmYWxzZSwgY2hlY2tGb3JFZGl0QnJhbmNoOiBjaGVja0ZvckVkaXRCcmFuY2ggKyAxIH0pXG4gICAgfVxuICB9LCBbYm9va0lkLCBvd25lciwgbGFuZ3VhZ2VJZCwgcmVzb3VyY2VJZF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzRXF1YWwocmVmZXJlbmNlLCBjdXJyZW50UmVmZXJlbmNlKSkge1xuICAgICAgLy8gY29uc29sZS5sb2coYFNjcmlwdHVyZUNhcmQgcmVmZXJlbmNlIGNoYW5nZWRgLCByZWZlcmVuY2UpXG4gICAgICBzZXRTdGF0ZSh7IGN1cnJlbnRSZWZlcmVuY2U6IHJlZmVyZW5jZSwgZWRpdFZlcnNlOiBudWxsIH0pXG4gICAgfVxuICB9LCBbcmVmZXJlbmNlXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB3YWl0aW5nIGZvciBicmFuY2ggZmV0Y2ggdG8gY29tcGxldGVcbiAgICBpZiAoIXJlYWR5Rm9yRmV0Y2ggJiYgYnJhbmNoRGV0ZXJtaW5lZCApIHtcbiAgICAgIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVDYXJkIGJyYW5jaERldGVybWluZWQgaXMgJHticmFuY2hEZXRlcm1pbmVkfSBhbmQgd29ya2luZ1JlZiBpcyAke3dvcmtpbmdSZWZ9YClcbiAgICAgIHNldFN0YXRlKHsgcmVhZHlGb3JGZXRjaDogdHJ1ZSwgcmVmOiB3b3JraW5nUmVmIH0pXG4gICAgfVxuICB9LCBbYnJhbmNoRGV0ZXJtaW5lZF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gc2VsZWN0IGNvcnJlY3Qgd29ya2luZyByZWYgLSBjb3VsZCBiZSBtYXN0ZXIsIHVzZXIgYnJhbmNoLCBvciByZWxlYXNlXG4gICAgaWYgKF91c2luZ1VzZXJCcmFuY2ggIT09IHVzaW5nVXNlckJyYW5jaCkge1xuICAgICAgc2V0U3RhdGUoeyB1c2luZ1VzZXJCcmFuY2g6IF91c2luZ1VzZXJCcmFuY2ggfSlcbiAgICB9XG4gIH0sIFtfdXNpbmdVc2VyQnJhbmNoLCB1c2luZ1VzZXJCcmFuY2hdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHVwZGF0ZSBkaXNwbGF5IHN0YXR1cyBpZiBlcnJvclxuICAgIGNvbnN0IGVycm9yID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXR1cz8uW0VSUk9SX1NUQVRFXVxuXG4gICAgaWYgKGVycm9yKSB7IC8vIGlmIGVycm9yIHdhcyBmb3VuZCBkbyBjYWxsYmFja1xuICAgICAgY29uc3QgcmVzb3VyY2VTdGF0dXMgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdHVzXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCByZXNvdXJjZUxpbmsgPSBnZXRSZXNvdXJjZUxpbmsoc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZSlcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBnZXRSZXNvdXJjZU1lc3NhZ2UocmVzb3VyY2VTdGF0dXMsIHNlcnZlciwgcmVzb3VyY2VMaW5rLCBpc05UXylcbiAgICAgIGNvbnN0IGlzQWNjZXNzRXJyb3IgPSByZXNvdXJjZVN0YXR1c1tNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SXVxuICAgICAgb25SZXNvdXJjZUVycm9yICYmIG9uUmVzb3VyY2VFcnJvcihtZXNzYWdlLCBpc0FjY2Vzc0Vycm9yLCByZXNvdXJjZVN0YXR1cylcbiAgICB9XG4gIH0sIFtzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdHVzPy5bRVJST1JfU1RBVEVdXSlcblxuICBpZiAoc2NyaXB0dXJlQ29uZmlnLnRpdGxlICYmIHNjcmlwdHVyZUNvbmZpZy52ZXJzaW9uKSB7XG4gICAgc2NyaXB0dXJlVGl0bGUgPSBgJHtzY3JpcHR1cmVDb25maWcudGl0bGV9IHYke3NjcmlwdHVyZUNvbmZpZy52ZXJzaW9ufWBcbiAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdC51cGRhdGVUaXRsZShzY3JpcHR1cmVDb25maWcucmVzb3VyY2VMaW5rLCBzY3JpcHR1cmVUaXRsZSlcbiAgfSBlbHNlIHtcbiAgICBzY3JpcHR1cmVUaXRsZSA9IGBUaXRsZSBtaXNzaW5nIGZyb20gcHJvamVjdCBtYW5pZmVzdGBcbiAgfVxuXG4gIC8qKiBEeW5hbWljYWxseSBjcmVhdGVzIHRoZSBzY3JpcHR1cmUgc2VsZWN0aW9uIGRyb3Bkb3duIHRvIGJlIGluc2VydGVkIGludG8gY2FyZCBzZXR0aW5ncyAqL1xuICBmdW5jdGlvbiBnZXRTY3JpcHR1cmVTZWxlY3RvcigpIHtcbiAgICBjb25zdCBzY3JpcHR1cmVTZWxlY3Rpb25Db25maWcgPSBnZXRTY3JpcHR1cmVWZXJzaW9uU2V0dGluZ3Moe1xuICAgICAgbGFiZWwsXG4gICAgICByZXNvdXJjZUxpbms6IHNjcmlwdHVyZUNvbmZpZy5yZXNvdXJjZUxpbmssXG4gICAgICBzZXRTY3JpcHR1cmUsXG4gICAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdCxcbiAgICB9KVxuXG4gICAgcmV0dXJuIDxTY3JpcHR1cmVTZWxlY3RvciB7Li4uc2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnfSBzdHlsZT17c3R5bGV9IGVycm9yTWVzc2FnZT17dXJsRXJyb3J9IC8+XG4gIH1cblxuICAvKipcbiAgICogc2V0IGVkaXQgc3RhdGUgZm9yIHNwZWNpZmljIHZlcnNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2ZXJzZVJlZiAtIHJlZmVyZW5jZSBvZiB2ZXJzZSBiZWluZyBlZGl0ZWQgb3IgZmluaXNoZWQgZWRpdFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGVkaXRpbmcgLSB0cnVlIHdoZW4gZWRpdGluZ1xuICAgKi9cbiAgZnVuY3Rpb24gc2V0RWRpdFZlcnNlKHZlcnNlUmVmLCBlZGl0aW5nKSB7XG4gICAgaWYgKGVkaXRpbmcgJiYgKHZlcnNlUmVmICE9PSBlZGl0VmVyc2UpKSB7IC8vIGNoZWNrIGlmIHdlIG5lZWQgdG8gc2V0IGZsYWcgdGhhdCB3ZSBhcmUgZWRpdGluZyB0aGlzIHZlcnNlXG4gICAgICBzZXRTdGF0ZSh7IGVkaXRWZXJzZTogdmVyc2VSZWYgfSlcbiAgICB9IGVsc2UgaWYgKCFlZGl0aW5nICYmICh2ZXJzZVJlZiA9PT0gZWRpdFZlcnNlKSkgeyAvLyBjbGVhciBlZGl0IGZsYWcgaWYgaXQgaXMgZm9yIGN1cnJlbnQgZWRpdCB2ZXJzZVxuICAgICAgc2V0U3RhdGUoeyBlZGl0VmVyc2U6IG51bGwgfSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBkaXNhYmxlQ2hhbmdlQnV0dG9ucyA9ICEhZWRpdFZlcnNlIC8vIHdlIGRvbid0IHdhbnQgdG8gYWxsb3cgY2xpY2tpbmcgb24gY2hhbmdlIGJ1dHRvbnMgd2hpbGUgZWRpdGluZ1xuXG4gIGZ1bmN0aW9uIG9uTWVudUNsb3NlKCkge1xuICAgIC8vIGNvbnNvbGUubG9nKGBvbk1lbnVDbG9zZSgpYClcbiAgICBzZXRTdGF0ZSh7IHVybEVycm9yOiBudWxsIH0pXG4gIH1cblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IGxhbmd1YWdlSWRfID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ubGFuZ3VhZ2VJZFxuICBjb25zdCBsYW5ndWFnZSA9IGdldExhbmd1YWdlKHsgbGFuZ3VhZ2VJZDogbGFuZ3VhZ2VJZF8gfSlcbiAgY29uc3QgZGlyZWN0aW9uID0gKGxhbmd1YWdlPy5kaXJlY3Rpb24pIHx8ICdsdHInXG4gIGNvbnN0IF9yZWZlcmVuY2UgPSBjdXJyZW50UmVmZXJlbmNlIHx8IHJlZmVyZW5jZVxuXG4gIGNvbnN0IGlzSGVicmV3ID0gKGxhbmd1YWdlSWRfID09PSAnaGJvJylcbiAgY29uc3QgZm9udEZhY3RvciA9IGlzSGVicmV3ID8gMS40IDogMSAvLyB3ZSBhdXRvbWF0aWNhbGx5IHNjYWxlIHVwIGZvbnQgc2l6ZSBmb3IgSGVicmV3XG4gIGNvbnN0IHNjYWxlZEZvbnRTaXplID0gZm9udFNpemUgKiBmb250RmFjdG9yXG5cbiAgY29uc3QgaXRlbXMgPSBudWxsXG4gIGNvbnN0IHtcbiAgICBzdGF0ZToge1xuICAgICAgaGVhZGVycywgZmlsdGVycywgaXRlbUluZGV4LCBtYXJrZG93blZpZXcsXG4gICAgfSxcbiAgICBhY3Rpb25zOiB7XG4gICAgICBzZXRGaWx0ZXJzLCBzZXRJdGVtSW5kZXgsIHNldE1hcmtkb3duVmlldyxcbiAgICB9LFxuICB9ID0gdXNlQ2FyZFN0YXRlKHsgaXRlbXMgfSlcblxuICBjb25zdCByZWZTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgICBmb250U2l6ZTogYCR7TWF0aC5yb3VuZChzY2FsZWRGb250U2l6ZSAqIDAuOSl9JWAsXG4gIH0pLCBbc2NhbGVkRm9udFNpemVdKVxuXG4gIGNvbnN0IGNvbnRlbnRTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgICBmb250U2l6ZTogYCR7c2NhbGVkRm9udFNpemV9JWAsXG4gICAgLi4uKGlzSGVicmV3ID8ge2xpbmVIZWlnaHQ6ICcyLjBlbSd9IDoge30pXG4gIH0pLCBbc2NhbGVkRm9udFNpemVdKVxuXG4gIGNvbnN0IHNjcmlwdHVyZUxhYmVsID0gPFRpdGxlPntzY3JpcHR1cmVUaXRsZX08L1RpdGxlPlxuICBsZXQgZGlzYWJsZVdvcmRQb3BvdmVyXyA9IGRpc2FibGVXb3JkUG9wb3ZlclxuXG4gIGlmIChkaXNhYmxlV29yZFBvcG92ZXIgPT09IHVuZGVmaW5lZCkgeyAvLyBpZiBub3Qgc3BlY2lmaWVkLCB0aGVuIGRldGVybWluZSBpZiBvcmlnaW5hbCBsYW5ndWFnZSByZXNvdXJjZVxuICAgIGRpc2FibGVXb3JkUG9wb3Zlcl8gPSAhdXNpbmdPcmlnaW5hbEJpYmxlXG4gIH1cblxuICBjb25zdCBlbmFibGVFZGl0ID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICBjb25zdCBlbmFibGVBbGlnbm1lbnQgPSAhdXNpbmdPcmlnaW5hbEJpYmxlICYmIGZvdW5kT3JpZ2luYWxDb250ZW50XG4gIGNvbnN0IG9yaWdpbmFsUmVwb1VybCA9IGlzTmV3VGVzdGFtZW50ID8gZ3JlZWtSZXBvVXJsIDogaGVicmV3UmVwb1VybFxuICBjb25zdCBzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnID0ge1xuICAgIGF1dGhlbnRpY2F0aW9uOiBjYW5Vc2VFZGl0QnJhbmNoID8gYXV0aGVudGljYXRpb24gOiBudWxsLFxuICAgIGJvb2tJbmRleCxcbiAgICBjdXJyZW50VmVyc2VSZWY6IF9yZWZlcmVuY2UsXG4gICAgZW5hYmxlRWRpdCxcbiAgICBlbmFibGVBbGlnbm1lbnQsXG4gICAgaHR0cENvbmZpZyxcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaXNOZXdUZXN0YW1lbnQsXG4gICAgbG9nZ2VkSW5Vc2VyOiBjYW5Vc2VFZGl0QnJhbmNoID8gbG9nZ2VkSW5Vc2VyIDogbnVsbCxcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIG9yaWdpbmFsUmVwb1VybCxcbiAgICBzY3JpcHR1cmVDb25maWcsXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MsXG4gICAgc3RhcnRFZGl0QnJhbmNoLFxuICAgIHNldFNhdmVkQ2hhbmdlczogX3NldFNhdmVkQ2hhbmdlcyxcbiAgICBzb3VyY2VMYW5ndWFnZTogaXNOVF8gPyBOVF9PUklHX0xBTkcgOiBPVF9PUklHX0xBTkcsXG4gICAgdGFyZ2V0TGFuZ3VhZ2U6IGxhbmd1YWdlLFxuICAgIHRpdGxlOiBzY3JpcHR1cmVUaXRsZSxcbiAgICB3b3JraW5nUmVzb3VyY2VCcmFuY2g6IHJlZixcbiAgfVxuXG4gIC8qKlxuICAgKiB0aGlzIGdldHMgY2FsbGVkIHdoZW5ldmVyIGEgc2NyaXB0dXJlIHBhbmUgaGFzIGEgY2hhbmdlIGluIHNhdmUgc3RhdGVcbiAgICogQHBhcmFtIHtudW1iZXJ9IGN1cnJlbnRJbmRleFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHNhdmVkXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGdldENoYW5nZXMgLSB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciB1c2VyIGNsaWNrcyBzYXZlIGJ1dHRvblxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjbGVhckNoYW5nZXMgLSB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciBzYXZlIGhhcyBjb21wbGV0ZWRcbiAgICogQHBhcmFtIHtvYmplY3R9IHN0YXRlIC0gY3VycmVudCBzdGF0ZSBvZiB3b3JkIGFsaWdubWVudC9lZGl0XG4gICAqL1xuICBmdW5jdGlvbiBfc2V0U2F2ZWRDaGFuZ2VzKGN1cnJlbnRJbmRleCwgc2F2ZWQsIHsgZ2V0Q2hhbmdlcyA9IG51bGwsIGNsZWFyQ2hhbmdlcyA9IG51bGwsIHN0YXRlID0gbnVsbCB9KSB7XG4gICAgY29uc3QgX3Vuc2F2ZWRDaGFuZ2VzTGlzdCA9IHsgLi4udW5zYXZlZENoYW5nZXNMaXN0IH1cblxuICAgIGlmIChzYXZlZCkge1xuICAgICAgaWYgKF91bnNhdmVkQ2hhbmdlc0xpc3QuaGFzT3duUHJvcGVydHkoY3VycmVudEluZGV4KSkge1xuICAgICAgICBkZWxldGUgX3Vuc2F2ZWRDaGFuZ2VzTGlzdFtjdXJyZW50SW5kZXhdXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIF91bnNhdmVkQ2hhbmdlc0xpc3RbY3VycmVudEluZGV4XSA9IHsgZ2V0Q2hhbmdlcywgY2xlYXJDaGFuZ2VzLCBzdGF0ZSB9IC8vIHVwZGF0ZSB3aXRoIGxhdGVzdFxuICAgIH1cblxuICAgIGNvbnN0IF9oYXZlVW5zYXZlZENoYW5nZXMgPSAhIU9iamVjdC5rZXlzKF91bnNhdmVkQ2hhbmdlc0xpc3QpLmxlbmd0aFxuXG4gICAgaWYgKGhhdmVVbnNhdmVkQ2hhbmdlcyAhPSBfaGF2ZVVuc2F2ZWRDaGFuZ2VzKSB7XG4gICAgICBzZXRTYXZlZENoYW5nZXMgJiYgc2V0U2F2ZWRDaGFuZ2VzKHJlc291cmNlSWQsICFfaGF2ZVVuc2F2ZWRDaGFuZ2VzKVxuICAgICAgc2V0U3RhdGUoeyBoYXZlVW5zYXZlZENoYW5nZXM6IF9oYXZlVW5zYXZlZENoYW5nZXMgfSlcbiAgICB9XG5cbiAgICBpZiAoIWlzRXF1YWwoX3Vuc2F2ZWRDaGFuZ2VzTGlzdCwgdW5zYXZlZENoYW5nZXNMaXN0KSkge1xuICAgICAgc2V0U3RhdGUoeyB1bnNhdmVkQ2hhbmdlc0xpc3Q6IF91bnNhdmVkQ2hhbmdlc0xpc3QgfSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogc2VhcmNoIGNoYXB0ZXIgb3IgdmVyc2UgY2h1bmsgdG8gbGluZSB0aGF0IHN0YXJ0cyB3aXRoIGZpbmRJdGVtXG4gICAqIEBwYXJhbSB7bnVtYmVyfHN0cmluZ30gZmluZEl0ZW1cbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gY2h1bmtzXG4gICAqL1xuICBmdW5jdGlvbiBmaW5kUmVmSW5BcnJheShmaW5kSXRlbSwgY2h1bmtzKSB7XG4gICAgY29uc3QgcmVmXyA9IGZpbmRJdGVtICsgJydcbiAgICBjb25zdCByZWZMZW4gPSByZWZfLmxlbmd0aFxuICAgIGNvbnN0IGluZGV4ID0gY2h1bmtzLmZpbmRJbmRleCgoY2h1bmssIGlkeCkgPT4ge1xuICAgICAgaWYgKGlkeCA+IDApIHtcbiAgICAgICAgaWYgKGNodW5rLnN1YnN0cmluZygwLCByZWZMZW4pID09PSByZWZfKSB7XG4gICAgICAgICAgY29uc3QgbmV4dENoYXIgPSBjaHVua1tyZWZMZW5dXG5cbiAgICAgICAgICBpZiAoKG5leHRDaGFyID4gJzknKSB8fCAobmV4dENoYXIgPCAnMCcpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSlcbiAgICByZXR1cm4gaW5kZXhcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEJvb2tOYW1lKCkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBib29rQ2FwcyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVmZXJlbmNlPy5ib29rSWQgPyBzY3JpcHR1cmVDb25maWcucmVmZXJlbmNlLmJvb2tJZC50b1VwcGVyQ2FzZSgpIDogJydcbiAgICByZXR1cm4gYCR7Ym9va0luZGV4fS0ke2Jvb2tDYXBzfS51c2ZtYFxuICB9XG5cbiAgY29uc3QgZmlsZXBhdGggPSBnZXRCb29rTmFtZSgpXG4gIGNvbnN0IHNoYSA9IGZldGNoZWRSZXNvdXJjZT8uc2hhXG5cbiAgLy8ga2VlcCB0cmFjayBvZiB2ZXJzZSBlZGl0IHN0YXRlXG4gIGNvbnN0IHtcbiAgICBlcnJvcjogc2F2ZUVycm9yLFxuICAgIGlzRXJyb3I6IGlzU2F2ZUVycm9yLFxuICAgIG9uU2F2ZUVkaXQsXG4gICAgb25TYXZlRWRpdFBhdGNoLFxuICB9ID0gdXNlRWRpdCh7XG4gICAgc2hhLFxuICAgIG93bmVyLFxuICAgIGNvbnRlbnQ6IHNhdmVDb250ZW50LFxuICAgIGNvbmZpZzoge1xuICAgICAgY2FjaGU6IHsgbWF4QWdlOiAwIH0sXG4gICAgICAuLi5hdXRoZW50aWNhdGlvbj8uY29uZmlnLFxuICAgICAgZG9udENyZWF0ZUJyYW5jaDogdHJ1ZSxcbiAgICAgIHRva2VuOiBhdXRoZW50aWNhdGlvbj8udG9rZW4sXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB0aW1lb3V0OiBodHRwQ29uZmlnPy5zZXJ2ZXJUaW1lT3V0IHx8IGh0dHBDb25maWc/LnRpbWVvdXQgfHwgMTAwMDAsXG4gICAgICBzZXJ2ZXIsXG4gICAgfSxcbiAgICBhdXRob3I6IGxvZ2dlZEluVXNlcixcbiAgICBlbWFpbDogYXV0aGVudGljYXRpb24/LnVzZXI/LmVtYWlsLFxuICAgIHRva2VuOiBhdXRoZW50aWNhdGlvbj8udG9rZW4sXG4gICAgYnJhbmNoOiB3b3JraW5nUmVzb3VyY2VCcmFuY2gsXG4gICAgZmlsZXBhdGgsXG4gICAgcmVwbyxcbiAgfSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB3aGVuIHdlIGdldCBhIHNhdmUgc2F2ZUVycm9yXG4gICAgaWYgKHNhdmVFcnJvciAmJiBpc1NhdmVFcnJvciAmJiAhc3RhcnRTYXZlKSB7IC8vIGlmIGVycm9yIHRoZW4gc2hvdyBhZnRlciBzYXZlIGNvbXBsZXRlcywgc2luY2Ugd2UgbWF5IHJldHJ5XG4gICAgICBjb25zb2xlLmxvZyhgc2F2ZSBlcnJvcmAsIHNhdmVFcnJvcilcbiAgICAgIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobnVsbCwgZmFsc2UsIG51bGwsIGBFcnJvciBzYXZpbmcgJHtsYW5ndWFnZUlkfV8ke2NhcmRSZXNvdXJjZUlkfSAke3NhdmVFcnJvcn1gLCB0cnVlKVxuICAgICAgc2F2ZUluUHJvZ3Jlc3MuY3VycmVudCA9IGZhbHNlOyAvLyBSZXNldCB0aGUgZmxhZyBvbiBlcnJvclxuICAgIH1cbiAgfSwgW3NhdmVFcnJvciwgaXNTYXZlRXJyb3IsIHN0YXJ0U2F2ZV0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gd2hlbiBzdGFydFNhdmUgZ29lcyB0cnVlLCBzYXZlIGVkaXRzIHRvIHVzZXIgYnJhbmNoIGFuZCB0aGVuIGNsZWFyIHN0YXJ0U2F2ZVxuICAgIGZ1bmN0aW9uIF9zYXZlU3VjY2VzZnVsKCkge1xuICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2ZSBzY3JpcHR1cmUgZWRpdHMgc3VjY2Vzc2ApXG4gICAgICBzZXRDYXJkc1NhdmluZyhwcmV2Q2FyZHNTYXZpbmcgPT4gcHJldkNhcmRzU2F2aW5nLmZpbHRlcihjYXJkSWQgPT4gY2FyZElkICE9PSBjYXJkUmVzb3VyY2VJZCkpXG4gICAgICBzZXRTdGF0ZSh7XG4gICAgICAgIHN0YXJ0U2F2ZTogZmFsc2UsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCB1bnNhdmVkQ2FyZEluZGljZXMgPSBPYmplY3Qua2V5cyh1bnNhdmVkQ2hhbmdlc0xpc3QpXG5cbiAgICAgIGlmICh1bnNhdmVkQ2FyZEluZGljZXM/Lmxlbmd0aCkge1xuICAgICAgICBmb3IgKGNvbnN0IGNhcmRJbmRleCBvZiB1bnNhdmVkQ2FyZEluZGljZXMpIHtcbiAgICAgICAgICBjb25zdCB7Y2xlYXJDaGFuZ2VzfSA9IHVuc2F2ZWRDaGFuZ2VzTGlzdFtjYXJkSW5kZXhdXG4gICAgICAgICAgY2xlYXJDaGFuZ2VzICYmIGNsZWFyQ2hhbmdlcygpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc29sZS5pbmZvKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIFJlbG9hZGluZyByZXNvdXJjZScpXG4gICAgICBzZXRTdGF0ZSh7XG4gICAgICAgIHN0YXJ0U2F2ZTogZmFsc2UsXG4gICAgICAgIHJlYWR5Rm9yRmV0Y2g6IHRydWUsXG4gICAgICAgIHNhdmVGdWxsQmlibGVDb250ZW50OiBudWxsLFxuICAgICAgICBzYXZlQ29udGVudDogbnVsbCxcbiAgICAgICAgcmVmOiB1c2VyRWRpdEJyYW5jaE5hbWUsXG4gICAgICB9KVxuICAgICAgZGVsYXkoMTAwKS50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0Q2FyZHNTYXZpbmcocHJldkNhcmRzU2F2aW5nID0+IHByZXZDYXJkc1NhdmluZy5maWx0ZXIoY2FyZElkID0+IGNhcmRJZCAhPT0gY2FyZFJlc291cmNlSWQpKVxuICAgICAgICBzY3JpcHR1cmVDb25maWc/LnJlbG9hZFJlc291cmNlKHNoYSwgdXNlckVkaXRCcmFuY2hOYW1lKVxuICAgICAgfSlcbiAgICAgIHNhdmVJblByb2dyZXNzLmN1cnJlbnQgPSBmYWxzZTsgLy8gUmVzZXQgdGhlIGZsYWcgb24gc3VjY2Vzc1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb2dDaGFuZ2VkKGNvbW1lbnQsIGluaXRpYWwsIGZpbmFsLCBkaWZmLCBzaGEpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYCR7Y29tbWVudH0gLSBzaGE6YCwgc2hhKVxuICAgICAgY29uc29sZS5lcnJvcihgaW5pdGlhbGAsIGluaXRpYWwpXG4gICAgICBjb25zb2xlLmVycm9yKGBmaW5hbGAsIGZpbmFsKVxuICAgICAgY29uc29sZS5lcnJvcihgZGlmZmAsIGRpZmYpXG4gICAgfVxuXG4gICAgY29uc3QgX3NhdmVFZGl0ID0gYXN5bmMgKCkgPT4geyAvLyBiZWdpbiB1cGxvYWRpbmcgbmV3IFVTRk1cbiAgICAgIGlmIChzYXZlSW5Qcm9ncmVzcy5jdXJyZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIFNhdmUgYWxyZWFkeSBpbiBwcm9ncmVzcywgc2tpcHBpbmcgZHVwbGljYXRlIGNhbGwnKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBzYXZlSW5Qcm9ncmVzcy5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgIGNvbnNvbGUuaW5mbyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBVc2luZyBzaGE6ICR7c2hhfWApXG4gICAgICBsZXQgdXBsb2FkRnVuY3Rpb24gPSBvblNhdmVFZGl0XG4gICAgICBpZiAoc2F2ZURpZmZQYXRjaCkge1xuICAgICAgICB1cGxvYWRGdW5jdGlvbiA9IG9uU2F2ZUVkaXRQYXRjaCAvLyBpZiB3ZSBhcmUgc2VuZGluZyB1cCBhIGRpZmZwYXRjaCwgd2Ugd2lsbCB1c2UgdGhpcyBtZXRob2RcbiAgICAgIH1cblxuICAgICAgbGV0IHN1Y2Nlc3MgPSBhd2FpdCB1cGxvYWRGdW5jdGlvbih1c2VyRWRpdEJyYW5jaE5hbWUpLnRoZW4ociA9PiByKS5jYXRjaCgoKSA9PiBmYWxzZSkvLyBwdXNoIGNoYW5nZSB0byBzZXJ2ZXJcbiAgICAgIGxldCBlcnJvciA9IHN1Y2Nlc3MgPyBudWxsIDogJ3NhdmluZyBjaGFuZ2VkIHNjcmlwdHVyZSBmYWlsZWQnXG5cbiAgICAgIGlmICghc3VjY2VzcykgeyAvLyBpZiBzYXZlIGZhaWxlZCwgYXR0ZW1wdCBhIHJldHJ5XG4gICAgICAgIC8vIGxvZ0NoYW5nZWQoJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2aW5nIGNoYW5nZWQgc2NyaXB0dXJlIGZhaWxlZCwgc2VudCcsIHNhdmVGdWxsQmlibGVDb250ZW50Py5pbml0aWFsLCBzYXZlRnVsbEJpYmxlQ29udGVudD8ubmV3LCBzYXZlQ29udGVudCwgc2hhKVxuICAgICAgICBjb25zb2xlLmVycm9yKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmluZyBjaGFuZ2VkIHNjcmlwdHVyZSBmYWlsZWQsIHJldHJ5aW5nIC0gY29udGV4dCBsaW5lcyBhcmUgJHtjb250ZXh0TGluZXN9LCBkaWZmOlxcbmAsIHNhdmVDb250ZW50KVxuICAgICAgICBhd2FpdCBkZWxheSg1MDApIC8vIHNpbmNlIHdlIGhhZCBhbiBlcnJvciwgd2FpdCBmb3IgZGF0YSB0byB1cGRhdGUgb24gc2VydmVyIGJlZm9yZSBnZXR0aW5nIHRoZSBsYXRlc3RcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAvLyBmZXRjaCB0aGUgbGF0ZXN0IGJvb2sgY29udGVudCwgc28gd2UgY2FuIHRlbGwgaWYgbGF0ZXN0IGNoYW5nZXMgd2VyZSBzYXZlZCBhbmQgaGF2ZSB0aGUgbGF0ZXN0IGZpbGUgc2hhXG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBmZXRjaEJpYmxlQm9vayhzZXJ2ZXIsIGh0dHBDb25maWcsIHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2UsIHNjcmlwdHVyZUNvbmZpZz8ucmVmZXJlbmNlKVxuICAgICAgICBlcnJvciA9IHJlc3VsdHM/LmVycm9yXG4gICAgICAgIGxldCBfc2F2ZUNvbnRlbnQgPSBzYXZlQ29udGVudFxuICAgICAgICBsZXQgZmlsZVNoYSA9IG51bGxcbiAgICAgICAgY29uc3Qgc2F2ZWRCaWJsZVVzZm0gPSByZXN1bHRzPy5iaWJsZVVzZm1cbiAgICAgICAgY29uc3QgZWRpdGVkQmlibGVVc2ZtID0gc2F2ZUZ1bGxCaWJsZUNvbnRlbnQ/Lm5ld1xuICAgICAgICBsZXQgdXBUb0RhdGUgPSBzYXZlZEJpYmxlVXNmbSA9PT0gZWRpdGVkQmlibGVVc2ZtIC8vIGNoZWNrIGlmIG5ldyBiaWJsZSBjb250ZW50IGRpZmZlcnMgZnJvbSBsYXRlc3Qgb24gcmVwb1xuXG4gICAgICAgIGlmICghZXJyb3IpIHtcbiAgICAgICAgICBpZiAodXBUb0RhdGUpIHsgLy8gaWYgdGhlIGRhdGEgd2UgYXJlIHRyeWluZyB0byBzYXZlIG1hdGNoZXMgd2hhdCBpcyBub3cgb24gdGhlIHNlcnZlciB0aGVyZSBpcyBub3RoaW5nIHRvIGRvXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBkYXRhIHdhcyBjb3JyZWN0bHkgdXBsb2FkZWQsIHNvIG5vdGhpbmcgbW9yZSB0byBkbycpXG4gICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgbmV3Q29udGV4dExpbmVzID0gY29udGV4dExpbmVzICsgMVxuICAgICAgICAgICAgaWYgKHNhdmVEaWZmUGF0Y2gpIHtcbiAgICAgICAgICAgICAgYXdhaXQgZGVsYXkoMTAwKSAvLyBhbGxvdyBVSSB0byB1cGRhdGUgYmVmb3JlIHJ1bm5pbmcgY29tcHV0YXRpb25hbGx5IGV4cGVuc2l2ZSBmdW5jdGlvblxuICAgICAgICAgICAgICAvLyByZWdlbmVyYXRlIHRoZSBwYXRjaCBhZ2FpbnN0IHRoZSBsYXRlc3QgY29udGVudCBhbmQgYWRkIG1vcmUgbGluZXMgb2YgY29udGV4dFxuICAgICAgICAgICAgICAvLyBUUklDS1kgLSB3ZSBoYXZlIG5vdGljZWQgdGhhdCBEQ1Mgd2lsbCBmYWlsIHRoZSBwYXRjaCBzb21ldGltZXMsIGJ1dCBpZiB3ZSBpbmNyZWFzZSB0aGUgY29udGV4dCBsaW5lIGNvdW50IGl0IHdpbGwgc3VjY2VlZCwgc28gd2UgYXJlIGluY3JlYXNpbmcgdGhlIGNvbnRleHQgbGluZSBjb3VudFxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBjb250ZXh0IGxpbmVzIGFyZSBub3cgJHtuZXdDb250ZXh0TGluZXN9YClcbiAgICAgICAgICAgICAgY29uc3QgZGlmZlBhdGNoID0gZ2V0UGF0Y2goc2F2ZUZ1bGxCaWJsZUNvbnRlbnQ/LmZpbGVuYW1lLCBzYXZlZEJpYmxlVXNmbSwgZWRpdGVkQmlibGVVc2ZtLCBmYWxzZSwgbmV3Q29udGV4dExpbmVzKVxuICAgICAgICAgICAgICBfc2F2ZUNvbnRlbnQgPSBkaWZmUGF0Y2hcbiAgICAgICAgICAgICAgZmlsZVNoYSA9IHJlc3VsdHM/LnNoYVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzdWNjZXNzID0gYXdhaXQgdXBsb2FkRnVuY3Rpb24odXNlckVkaXRCcmFuY2hOYW1lLCBfc2F2ZUNvbnRlbnQsIGZpbGVTaGEpIC8vIHB1c2ggY2hhbmdlIHRvIHNlcnZlclxuICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgICAgICAgIGxvZ0NoYW5nZWQoJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2aW5nIGNoYW5nZWQgc2NyaXB0dXJlIGZhaWxlZCBvbiBzZWNvbmQgYXR0ZW1wdCwgc2VudCcsIHNhdmVkQmlibGVVc2ZtLCBlZGl0ZWRCaWJsZVVzZm0sIF9zYXZlQ29udGVudCwgZmlsZVNoYSlcbiAgICAgICAgICAgICAgZXJyb3IgPSAnc2F2aW5nIGNoYW5nZWQgc2NyaXB0dXJlIGZhaWxlZCBvbiBzZWNvbmQgYXR0ZW1wdCdcbiAgICAgICAgICAgICAgbmV3Q29udGV4dExpbmVzKysgLy8gaWYgZmFpbGVkIGluY3JlYXNlIHRoZSBjb3VudCBmb3IgbmV4dCBhdHRlbXB0XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZygnc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZlIHN1Y2Nlc3NmdWwgb24gc2Vjb25kIHdpdGggZGlmZicsIF9zYXZlQ29udGVudClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuZXdDb250ZXh0TGluZXMgPiAxMCkge1xuICAgICAgICAgICAgICBuZXdDb250ZXh0TGluZXMgPSA0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRTdGF0ZSh7Y29udGV4dExpbmVzOiBuZXdDb250ZXh0TGluZXN9KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIWVycm9yICYmIHN1Y2Nlc3MpIHsgLy8gaWYgbm8gZXJyb3IgbWVzc2FnZSBhbmQgc2F2ZSB3YXMgYSBzdWNjZXNzXG4gICAgICAgIHJldHVybiBfc2F2ZVN1Y2Nlc2Z1bCgpIC8vIG5vdGhpbmcgdG8gZG9cbiAgICAgIH1cblxuICAgICAgY29uc29sZS5lcnJvcihgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSAke2Vycm9yIHx8ICd1bmtub3duIHNhdmUgZXJyb3InfWApXG4gICAgICBzZXRDYXJkc1NhdmluZyhwcmV2Q2FyZHNTYXZpbmcgPT4gcHJldkNhcmRzU2F2aW5nLmZpbHRlcihjYXJkSWQgPT4gY2FyZElkICE9PSBjYXJkUmVzb3VyY2VJZCkpXG4gICAgICBzZXRTdGF0ZSh7c3RhcnRTYXZlOiBmYWxzZX0pXG4gICAgICBzYXZlSW5Qcm9ncmVzcy5jdXJyZW50ID0gZmFsc2U7IC8vIFJlc2V0IHRoZSBmbGFnIG9uIGZhaWx1cmVcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIGlmIChzdGFydFNhdmUpIHtcbiAgICAgIGlmICghZWRpdEJyYW5jaFJlYWR5KSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBlZGl0IGJyYW5jaCBub3QgeWV0IGNyZWF0ZWRgKVxuICAgICAgfSBlbHNlIGlmICghc2hhKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBzYXZlIHNoYSBub3QgeWV0IHJlYWR5YClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBjYWxsaW5nIF9zYXZlRWRpdCgpYClcbiAgICAgICAgc2V0Q2FyZHNTYXZpbmcocHJldkNhcmRzU2F2aW5nID0+IFsuLi5wcmV2Q2FyZHNTYXZpbmcsIGNhcmRSZXNvdXJjZUlkXSlcbiAgICAgICAgX3NhdmVFZGl0KClcbiAgICAgIH1cbiAgICB9XG5cbiAgfSwgW3N0YXJ0U2F2ZSwgZWRpdEJyYW5jaFJlYWR5LCBzaGFdKVxuXG4gIC8qKlxuICAgKiBjb252ZXJ0IHVwZGF0ZWRWZXJzZU9iamVjdHMgdG8gVVNGTSBhbmQgbWVyZ2UgaW50byB0aGUgYmlibGVVc2ZtXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBiaWJsZVVzZm0gLSBVU0ZNIG9mIGJpYmxlXG4gICAqIEBwYXJhbSB7U2NyaXB0dXJlUmVmZXJlbmNlVHlwZX0gcmVmIC0gcmVmZXJlbmNlIG9mIHZlcnNlIHRvIG1lcmdlIGluXG4gICAqIEBwYXJhbSB7VmVyc2VPYmplY3RzVHlwZX0gdXBkYXRlZFZlcnNlT2JqZWN0cyAtIG5ldyB2ZXJzZSBpbiB2ZXJzZU9iamVjdCBmb3JtYXRcbiAgICogQHBhcmFtIHtudW1iZXJ9IGNhcmROdW1cbiAgICovXG4gIGZ1bmN0aW9uIG1lcmdlVmVyc2VPYmplY3RzSW50b0JpYmxlVXNmbShiaWJsZVVzZm06IHN0cmluZywgcmVmOiBTY3JpcHR1cmVSZWZlcmVuY2VUeXBlLCB1cGRhdGVkVmVyc2VPYmplY3RzOiBWZXJzZU9iamVjdHNUeXBlLCBjYXJkTnVtOiBudW1iZXIpIHtcbiAgICBsZXQgbmV3VXNmbVxuICAgIGNvbnN0IGNoYXB0ZXJDaHVua3MgPSBiaWJsZVVzZm0/LnNwbGl0KCdcXFxcYyAnKVxuICAgIGNvbnN0IGNoYXB0ZXJJbmRleCA9IGZpbmRSZWZJbkFycmF5KHJlZj8uY2hhcHRlciwgY2hhcHRlckNodW5rcylcblxuICAgIGlmIChjaGFwdGVySW5kZXggPj0gMCkge1xuICAgICAgY29uc3QgY3VycmVudENoYXB0ZXIgPSBjaGFwdGVyQ2h1bmtzW2NoYXB0ZXJJbmRleF1cbiAgICAgIGxldCB2ZXJzZUNodW5rcyA9IGN1cnJlbnRDaGFwdGVyLnNwbGl0KCdcXFxcdiAnKVxuICAgICAgY29uc3QgdmVyc2VJbmRleCA9IGZpbmRSZWZJbkFycmF5KHJlZj8udmVyc2UsIHZlcnNlQ2h1bmtzKVxuICAgICAgY29uc3QgZnJvbnRNYXR0ZXIgPSByZWY/LnZlcnNlID09PSAnZnJvbnQnXG5cbiAgICAgIGlmIChmcm9udE1hdHRlciB8fCB2ZXJzZUluZGV4ID49IDApIHtcbiAgICAgICAgY29uc3QgbmV3VmVyc2VVc2ZtID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5jb252ZXJ0VmVyc2VEYXRhVG9VU0ZNKHVwZGF0ZWRWZXJzZU9iamVjdHMpXG4gICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIG5ldyBVU0ZNIGZvciBjYXJkICR7Y2FyZE51bX0sIHZlcnNlICR7cmVmPy52ZXJzZX06fSAtICR7bmV3VmVyc2VVc2ZtLnN1YnN0cmluZygwLCAxMDApfWApXG4gICAgICAgIGlmIChmcm9udE1hdHRlcikgeyAvLyBmcm9udCBtYXR0ZXIgZ29lcyBiZWZvcmUgZmlyc3QgdmVyc2VcbiAgICAgICAgICBjb25zdCBvbGRWZXJzZSA9IHZlcnNlQ2h1bmtzWzBdXG4gICAgICAgICAgY29uc3QgcHJlZml4TGVuID0gb2xkVmVyc2UuaW5kZXhPZignXFxuJykgLy8gY2hhcmFjdGVycyBiZWZvcmUgdGhlIGZyb250IG1hdHRlciB0ZXh0XG4gICAgICAgICAgdmVyc2VDaHVua3NbMF0gPSBvbGRWZXJzZS5zdWJzdHJpbmcoMCwgcHJlZml4TGVuICsgMSkgKyBuZXdWZXJzZVVzZm1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBvbGRWZXJzZSA9IHZlcnNlQ2h1bmtzW3ZlcnNlSW5kZXhdXG4gICAgICAgICAgY29uc3QgdmVyc2VOdW1MZW4gPSAocmVmPy52ZXJzZSArICcnKS5sZW5ndGggLy8gY2hhcmFjdGVycyBiZWZvcmUgdGhlIHZlcnNlIHRleHRcbiAgICAgICAgICB2ZXJzZUNodW5rc1t2ZXJzZUluZGV4XSA9IG9sZFZlcnNlLnN1YnN0cmluZygwLCB2ZXJzZU51bUxlbiArIDEpICsgbmV3VmVyc2VVc2ZtXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3Q2hhcHRlciA9IHZlcnNlQ2h1bmtzLmpvaW4oJ1xcXFx2ICcpXG4gICAgICAgIGNoYXB0ZXJDaHVua3NbY2hhcHRlckluZGV4XSA9IG5ld0NoYXB0ZXJcbiAgICAgICAgbmV3VXNmbSA9IGNoYXB0ZXJDaHVua3Muam9pbignXFxcXGMgJylcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ld1VzZm1cbiAgfVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIGZvciBlYWNoIHVuc2F2ZWQgY2hhbmdlLCBjYWxsIGludG8gc2NyaXB0dXJlUGFuZSB0byBnZXQgbGF0ZXN0IGNoYW5nZXMgZm9yIHZlcnNlIHRvIHNhdmVcbiAgICBhc3luYyBmdW5jdGlvbiBnZXRSZWFkeUZvclNhdmUoKSB7XG4gICAgICBpZiAoc2F2ZUNsaWNrZWQpIHtcbiAgICAgICAgbGV0IGNyZWF0ZUVkaXRCcmFuY2ggPSAhX3VzaW5nVXNlckJyYW5jaFxuXG4gICAgICAgIGlmICghY3JlYXRlRWRpdEJyYW5jaCkgeyAvLyBpZiBhbHJlYWR5IHVzaW5nIHRoZSB1c2VyIGJyYW5jaFxuICAgICAgICAgIGlmICh3b3JraW5nUmVzb3VyY2VCcmFuY2ggIT09IHVzZXJFZGl0QnJhbmNoTmFtZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBzdGF0ZSBjb25mbGljdCAtIHNob3VsZCBiZSBpbiB1c2VyIGJyYW5jaCAke3VzZXJFZGl0QnJhbmNoTmFtZX0sIGJ1dCBhY3R1YWxseSB1c2luZyAke3dvcmtpbmdSZXNvdXJjZUJyYW5jaH1gKVxuICAgICAgICAgICAgY3JlYXRlRWRpdEJyYW5jaCA9IHRydWVcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGFscmVhZHkgdXNpbmcgZWRpdCBicmFuY2g6ICR7d29ya2luZ1Jlc291cmNlQnJhbmNofWApXG4gICAgICAgICAgICBzZXRTdGF0ZSh7IGVkaXRCcmFuY2hSZWFkeTogdHJ1ZSB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjcmVhdGVFZGl0QnJhbmNoKSB7IC8vIGlmIG5vdCB5ZXQgdXNpbmcgdGhlIHVzZXIgYnJhbmNoLCBjcmVhdGUgaXRcbiAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gY3JlYXRpbmcgZWRpdCBicmFuY2hgKVxuICAgICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICAgIGVkaXRCcmFuY2hSZWFkeTogZmFsc2UsXG4gICAgICAgICAgICByZWFkeUZvckZldGNoOiBmYWxzZSxcbiAgICAgICAgICAgIHNoYTogbnVsbCxcbiAgICAgICAgICB9KSAvLyB3ZSB3aWxsIG5lZWQgYSBuZXcgc2hhIGZvciBib29rL2JyYW5jaFxuXG4gICAgICAgICAgY29uc3QgYnJhbmNoID0gYXdhaXQgc3RhcnRFZGl0QnJhbmNoKClcblxuICAgICAgICAgIGlmIChicmFuY2gpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBlZGl0IGJyYW5jaCBjcmVhdGVkYClcbiAgICAgICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICAgICAgZWRpdEJyYW5jaFJlYWR5OiB0cnVlLFxuICAgICAgICAgICAgICByZWFkeUZvckZldGNoOiB0cnVlLFxuICAgICAgICAgICAgICByZWY6IGJyYW5jaCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gZXJyb3IgY3JlYXRpbmcgZWRpdCBicmFuY2gnKVxuICAgICAgICAgICAgb25SZXNvdXJjZUVycm9yICYmIG9uUmVzb3VyY2VFcnJvcihudWxsLCBmYWxzZSwgbnVsbCwgYEVycm9yIGNyZWF0aW5nIGVkaXQgYnJhbmNoICR7bGFuZ3VhZ2VJZF99XyR7cmVzb3VyY2VJZH1gLCB0cnVlKVxuICAgICAgICAgICAgc2V0U3RhdGUoeyBzYXZlQ2xpY2tlZDogZmFsc2UgfSlcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBnZXR0aW5nIHZlcnNlIGNoYW5nZXNgKVxuICAgICAgICBjb25zdCB1bnNhdmVkQ2FyZEluZGljZXMgPSBPYmplY3Qua2V5cyh1bnNhdmVkQ2hhbmdlc0xpc3QpXG5cbiAgICAgICAgaWYgKHVuc2F2ZWRDYXJkSW5kaWNlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgbGV0IGJpYmxlVXNmbUluaXRpYWwgPSBnZXRDdXJyZW50Qm9vayhzY3JpcHR1cmVDb25maWcsIGJvb2tJZCkgLy8gZ2V0IG9yaWdpbmFsIFVTRk1cbiAgICAgICAgICBsZXQgYmlibGVVc2ZtTmV3ID0gYmlibGVVc2ZtSW5pdGlhbCAvLyBtYWtlIGEgY29weSB0byBlZGl0XG4gICAgICAgICAgbGV0IG1lcmdlRmFpbCA9IGZhbHNlXG5cbiAgICAgICAgICBpZiAoYmlibGVVc2ZtSW5pdGlhbCkge1xuICAgICAgICAgICAgbGV0IGNhcmROdW0gPSAwXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgY2FyZEluZGV4IG9mIHVuc2F2ZWRDYXJkSW5kaWNlcykge1xuICAgICAgICAgICAgICBjYXJkTnVtID0gcGFyc2VJbnQoY2FyZEluZGV4KVxuICAgICAgICAgICAgICBjb25zdCB7IGdldENoYW5nZXMsIHN0YXRlIH0gPSB1bnNhdmVkQ2hhbmdlc0xpc3RbY2FyZE51bV1cblxuICAgICAgICAgICAgICBpZiAoZ2V0Q2hhbmdlcykge1xuICAgICAgICAgICAgICAgIGxldCBuZXdVc2ZtXG4gICAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgICAgcmVmLFxuICAgICAgICAgICAgICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0cyxcbiAgICAgICAgICAgICAgICB9ID0gZ2V0Q2hhbmdlcyhzdGF0ZSlcblxuICAgICAgICAgICAgICAgIGlmICh1cGRhdGVkVmVyc2VPYmplY3RzICYmIGJpYmxlVXNmbU5ldykgeyAvLyBqdXN0IHJlcGxhY2UgdmVyc2VcbiAgICAgICAgICAgICAgICAgIG5ld1VzZm0gPSBtZXJnZVZlcnNlT2JqZWN0c0ludG9CaWJsZVVzZm0oYmlibGVVc2ZtTmV3LCByZWYsIHVwZGF0ZWRWZXJzZU9iamVjdHMsIGNhcmROdW0pXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKG5ld1VzZm0pIHtcbiAgICAgICAgICAgICAgICAgIGJpYmxlVXNmbU5ldyA9IG5ld1VzZm1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgbWVyZ2VGYWlsID0gdHJ1ZVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgc2F2ZURpZmZQYXRjaCA9IGZhbHNlIC8vIGlmIHRydWUgdGhlbiB3ZSB3aWxsIHNlbmQgdXAgYSBkaWZmcGF0Y2ggaW5zdGVhZCBvZiB0aGUgd2hvbGUgYm9va1xuICAgICAgICAgIGxldCBfc2F2ZUZ1bGxCaWJsZUNvbnRlbnQgPSBudWxsXG4gICAgICAgICAgbGV0IF9zYXZlQ29udGVudCA9IGJpYmxlVXNmbU5ld1xuXG4gICAgICAgICAgaWYgKG1lcmdlRmFpbCkgeyAvLyBpZiB3ZSBmYWlsZWQgdG8gbWVyZ2UsIGZhbGxiYWNrIHRvIGJydXRlIGZvcmNlIHZlcnNlIG9iamVjdHMgdG8gVVNGTVxuICAgICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgke2NhcmROdW19KSAtIHZlcnNlIG5vdCBmb3VuZCwgZmFsbGluZyBiYWNrIHRvIGluc2VydGluZyB2ZXJzZSBvYmplY3RgKVxuICAgICAgICAgICAgbGV0IG5ld0Jvb2tKc29uXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgY2FyZEluZGV4IG9mIHVuc2F2ZWRDYXJkSW5kaWNlcykge1xuICAgICAgICAgICAgICBjb25zdCBjYXJkTnVtID0gcGFyc2VJbnQoY2FyZEluZGV4KVxuICAgICAgICAgICAgICBjb25zdCB7IGdldENoYW5nZXMsIHN0YXRlIH0gPSB1bnNhdmVkQ2hhbmdlc0xpc3RbY2FyZE51bV1cblxuICAgICAgICAgICAgICBpZiAoZ2V0Q2hhbmdlcykge1xuICAgICAgICAgICAgICAgIGxldCBuZXdVc2ZtXG4gICAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgICAgbmV3VmVyc2VUZXh0LFxuICAgICAgICAgICAgICAgICAgcmVmLFxuICAgICAgICAgICAgICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0cyxcbiAgICAgICAgICAgICAgICB9ID0gZ2V0Q2hhbmdlcyhzdGF0ZSlcblxuICAgICAgICAgICAgICAgIGlmICh1cGRhdGVkVmVyc2VPYmplY3RzICYmICFuZXdVc2ZtKSB7XG4gICAgICAgICAgICAgICAgICBsZXQgdGFyZ2V0VmVyc2VPYmplY3RzXyA9IG51bGxcblxuICAgICAgICAgICAgICAgICAgaWYgKHJlZikge1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV3VmVyc2VUZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB0YXJnZXRWZXJzZU9iamVjdHMgfSA9IEFsaWdubWVudEhlbHBlcnMudXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UodXBkYXRlZFZlcnNlT2JqZWN0cywgbmV3VmVyc2VUZXh0KVxuICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFZlcnNlT2JqZWN0c18gPSB0YXJnZXRWZXJzZU9iamVjdHNcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRWZXJzZU9iamVjdHNfID0gdXBkYXRlZFZlcnNlT2JqZWN0c1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG5ld0Jvb2tKc29uID0gdGFyZ2V0VmVyc2VPYmplY3RzXyAmJiBzY3JpcHR1cmVDb25maWc/LnVwZGF0ZVZlcnNlKHJlZi5jaGFwdGVyLCByZWYudmVyc2UsIHt2ZXJzZU9iamVjdHM6IHRhcmdldFZlcnNlT2JqZWN0c199KVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBfc2F2ZUNvbnRlbnQgPSB1c2ZtanMudG9VU0ZNKG5ld0Jvb2tKc29uLCB7IGZvcmNlZE5ld0xpbmVzOiB0cnVlIH0pXG4gICAgICAgICAgfSBlbHNlIHsgLy8gaWYgb25seSBjaGFuZ2VkIGEgZmV3IHZlcnNlcywgd2Ugd2lsbCBqdXN0IG1ha2UgYSBkaWZmcGF0Y2ggaW5zdGVhZCBvZiBzZW5kaW5nIHRoZSB3aG9sZSBib29rXG4gICAgICAgICAgICBjb25zdCBmaWxlbmFtZSA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0ZT8ucmVzb3VyY2U/Lm5hbWUgLy8gTGlrZSBcIjU3LVRJVC51c2ZtXCJcbiAgICAgICAgICAgIGlmIChmaWxlbmFtZSAmJiBiaWJsZVVzZm1OZXcgJiYgYmlibGVVc2ZtSW5pdGlhbCkgeyAvLyBtYWtlIHN1cmUgd2UgaGF2ZSBldmVyeXRoaW5nIG5lZWRlZCB0byBtYWtlIGEgcGF0Y2hcbiAgICAgICAgICAgICAgaWYgKGJpYmxlVXNmbUluaXRpYWwgPT09IGJpYmxlVXNmbU5ldykgeyAvLyBpZiBubyBkYXRhIGNoYW5nZSwgdGhlbiBza2lwIHNhdmUgYmVjYXVzZSBEQ1MgY3Jhc2hlcyBvbiBhbiBlbXB0eSBwYXRjaFxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2Fybihgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSB0aGVyZSBpcyBub3RoaW5nIHRvIHNhdmUsIHNraXBwaW5nYClcbiAgICAgICAgICAgICAgICBzZXRTdGF0ZSh7IHNhdmVDbGlja2VkOiBmYWxzZSB9KVxuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGRpZmZQYXRjaCA9IGdldFBhdGNoKGZpbGVuYW1lLCBiaWJsZVVzZm1Jbml0aWFsLCBiaWJsZVVzZm1OZXcsIGZhbHNlLCBjb250ZXh0TGluZXMpXG4gICAgICAgICAgICAgIHNhdmVEaWZmUGF0Y2ggPSB0cnVlXG4gICAgICAgICAgICAgIF9zYXZlQ29udGVudCA9IGRpZmZQYXRjaCAvLyByZXBsYWNlIHdob2xlIGJvb2sgY29udGVudCB3aXRoIGp1c3QgcGF0Y2ggZGF0YSAobXVjaCBmYXN0ZXIgdXBsb2FkcylcbiAgICAgICAgICAgICAgX3NhdmVGdWxsQmlibGVDb250ZW50ID0geyAgLy8ga2VlcCB0cmFjayBvZiBwYXRjaCBkYXRhIGluIGNhc2Ugd2UgbmVlZCB0byByZXRyeSBzYXZlXG4gICAgICAgICAgICAgICAgZmlsZW5hbWUsXG4gICAgICAgICAgICAgICAgaW5pdGlhbDogYmlibGVVc2ZtSW5pdGlhbCxcbiAgICAgICAgICAgICAgICBuZXc6IGJpYmxlVXNmbU5ldyxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChiaWJsZVVzZm1OZXcpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmluZyBuZXcgVVNGTTogJHtiaWJsZVVzZm1OZXcuc3Vic3RyaW5nKDAsIDEwMCl9Li4uYClcbiAgICAgICAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBbLi4ucHJldkNhcmRzU2F2aW5nLCBjYXJkUmVzb3VyY2VJZF0pXG4gICAgICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgICAgIHNhdmVDb250ZW50OiBfc2F2ZUNvbnRlbnQsXG4gICAgICAgICAgICAgIHNhdmVDbGlja2VkOiBmYWxzZSxcbiAgICAgICAgICAgICAgc2F2ZURpZmZQYXRjaCxcbiAgICAgICAgICAgICAgc2F2ZUZ1bGxCaWJsZUNvbnRlbnQ6IF9zYXZlRnVsbEJpYmxlQ29udGVudCxcbiAgICAgICAgICAgICAgc3RhcnRTYXZlOiB0cnVlLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBFcnJvciByZXRyaWV2aW5nIHRoZSBjb3JyZWN0IGJvb2sgZGF0YTogaW5jb3JyZWN0IGJvb2sgJHtsYW5ndWFnZUlkX31fJHtyZXNvdXJjZUlkfWApXG4gICAgICAgICAgICBvblJlc291cmNlRXJyb3IgJiYgb25SZXNvdXJjZUVycm9yKG51bGwsIGZhbHNlLCBudWxsLCBgRXJyb3IgcmV0cmlldmluZyB0aGUgY29ycmVjdCBib29rIGRhdGEgJHtsYW5ndWFnZUlkX31fJHtyZXNvdXJjZUlkfWAsIHRydWUpXG4gICAgICAgICAgICBzZXRTdGF0ZSh7IHNhdmVDbGlja2VkOiBmYWxzZSB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGdldFJlYWR5Rm9yU2F2ZSgpXG4gIH0sIFtzYXZlQ2xpY2tlZF0pXG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCB7IGNoYXB0ZXIgfSA9IF9yZWZlcmVuY2UgfHwge31cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IF92ZXJzZXNGb3JSZWYgPSBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZlxuICAgIGxldCBuZXdTZWxlY3Rpb25zID0gbmV3IE1hcCgpXG4gICAgbGV0IHVwZGF0ZVNlbGVjdGlvbnMgPSBmYWxzZVxuICAgIGNvbnN0IF9tYXAgPSBuZXdTZWxlY3Rpb25zXG4gICAgY29uc3Qgb3JpZ2luYWxCb29rSWQgPSBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPy5ib29rSWRcbiAgICBjb25zdCBib29rVmVyc2VPYmplY3QgPSBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPy5jaGFwdGVyc1xuICAgIGxldCBuZXdTZWxlY3RlZFF1b3RlID0gbnVsbFxuXG4gICAgLy8gaWYgd2UgaGF2ZSBldmVyeXRoaW5nIHdlIG5lZWQgdG8gY2FsY3VsYXRlIHNlbGVjdGlvbnNcbiAgICBpZiAoX3ZlcnNlc0ZvclJlZj8ubGVuZ3RoICYmXG4gICAgICBib29rVmVyc2VPYmplY3QgJiZcbiAgICAgIChib29rSWQgPT09IG9yaWdpbmFsQm9va0lkKSAmJlxuICAgICAgYm9va1ZlcnNlT2JqZWN0W2NoYXB0ZXJdICYmIC8vIHdlIG5lZWQgdG8gaGF2ZSBkYXRhIGZvciBjaGFwdGVyXG4gICAgICBzZWxlY3RlZFF1b3RlPy5xdW90ZVxuICAgICkge1xuICAgICAgLy8gaWYgcXVvdGUgaXMgZGlmZmVyZW50IHRoYW4gbGFzdFxuICAgICAgaWYgKCFpc0VxdWFsKGxhc3RTZWxlY3RlZFF1b3RlLCBzZWxlY3RlZFF1b3RlKSB8fFxuICAgICAgICAhaXNFcXVhbCh2ZXJzZXNGb3JSZWYsIF92ZXJzZXNGb3JSZWYpKSB7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsVmVyc2VzID0ge31cbiAgICAgICAgY29uc3Qgc3Vic3RpdHV0ZSA9IHt9IC8vIGtlZXAgdHJhY2sgb2YgdmVyc2Ugc3Vic3RpdHV0aW9uc1xuICAgICAgICBsZXQgc3RhcnRWZXJzZSA9IF92ZXJzZXNGb3JSZWZbMF0udmVyc2VcblxuICAgICAgICBpZiAodHlwZW9mIHN0YXJ0VmVyc2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgc3RhcnRWZXJzZSA9IHBhcnNlSW50KHN0YXJ0VmVyc2UpXG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbGFzdFZlcnNlID0gc3RhcnRWZXJzZVxuXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsID0gX3ZlcnNlc0ZvclJlZi5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICBjb25zdCB2ZXJzZVJlZiA9IF92ZXJzZXNGb3JSZWZbaV1cbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBjaGFwdGVyLFxuICAgICAgICAgICAgdmVyc2UsXG4gICAgICAgICAgfSA9IHZlcnNlUmVmXG4gICAgICAgICAgLy8gVFJJQ0tZIC0gd2UgcmVtYXAgdmVyc2VzIGluIHJlZmVyZW5jZSByYW5nZSB0byBhIGxpbmVhciBzZXJpZXMgb2YgdmVyc2VzIHNvIHZlcnNlIHNwYW5zIGRvbid0IGNob2tlIGdldFF1b3RlTWF0Y2hlc0luQm9va1JlZlxuICAgICAgICAgIGxldCBfdmVyc2UgPSBzdGFydFZlcnNlICsgaVxuICAgICAgICAgIGxhc3RWZXJzZSA9IF92ZXJzZVxuICAgICAgICAgIHN1YnN0aXR1dGVbYCR7Y2hhcHRlcn06JHtfdmVyc2V9YF0gPSBgJHtjaGFwdGVyfToke3ZlcnNlfWBcblxuICAgICAgICAgIGlmICghb3JpZ2luYWxWZXJzZXNbY2hhcHRlcl0pIHtcbiAgICAgICAgICAgIG9yaWdpbmFsVmVyc2VzW2NoYXB0ZXJdID0ge31cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgdmVyc2VPYmplY3RzID0gW11cblxuICAgICAgICAgIGlmICgodHlwZW9mIHZlcnNlID09PSAnc3RyaW5nJykgJiYgKHZlcnNlLmluY2x1ZGVzKCctJykpKSB7XG4gICAgICAgICAgICBjb25zdCB2ZXJzZXMgPSBnZXRWZXJzZXMoYm9va1ZlcnNlT2JqZWN0LCBgJHtjaGFwdGVyfToke3ZlcnNlfWApXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgdmVyc2VJdGVtIG9mIHZlcnNlcykge1xuICAgICAgICAgICAgICBjb25zdCB2byA9IHZlcnNlSXRlbS52ZXJzZURhdGEudmVyc2VPYmplY3RzXG4gICAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IHZlcnNlT2JqZWN0cy5jb25jYXQodm8pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IGJvb2tWZXJzZU9iamVjdFtjaGFwdGVyXVt2ZXJzZV0/LnZlcnNlT2JqZWN0c1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh2ZXJzZU9iamVjdHMpIHtcbiAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IGNsZWFudXBWZXJzZU9iamVjdHModmVyc2VPYmplY3RzKVxuICAgICAgICAgICAgb3JpZ2luYWxWZXJzZXNbY2hhcHRlcl1bX3ZlcnNlXSA9IHsgdmVyc2VPYmplY3RzIH1cbiAgICAgICAgICAgIF9tYXAuc2V0KGAke2NoYXB0ZXJ9OiR7dmVyc2V9YCwgdmVyc2VPYmplY3RzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNyZWF0ZSBuZXcgcmVmZXJlbmNlIHJhbmdlIGZvciBuZXcgbGluZWFyIHZlcnNlIHJhbmdlXG4gICAgICAgIGNvbnN0IFtjaGFwdGVyXSA9IHNlbGVjdGVkUXVvdGU/LnJlZmVyZW5jZT8uc3BsaXQoJzonKVxuICAgICAgICBsZXQgc3ViUmVmID0gYCR7Y2hhcHRlcn06JHtzdGFydFZlcnNlfWBcblxuICAgICAgICBpZiAobGFzdFZlcnNlICE9IHN0YXJ0VmVyc2UpIHtcbiAgICAgICAgICBzdWJSZWYgKz0gYC0ke2xhc3RWZXJzZX1gXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBxdW90ZU1hdGNoZXMgPSBnZXRRdW90ZU1hdGNoZXNJbkJvb2tSZWYoe1xuICAgICAgICAgIGJvb2tPYmplY3Q6IG9yaWdpbmFsVmVyc2VzLFxuICAgICAgICAgIHJlZjogc3ViUmVmLFxuICAgICAgICAgIHF1b3RlOiBzZWxlY3RlZFF1b3RlPy5xdW90ZSxcbiAgICAgICAgICBvY2N1cnJlbmNlOiBzZWxlY3RlZFF1b3RlPy5vY2N1cnJlbmNlLFxuICAgICAgICB9KVxuXG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbnMgPSBuZXcgTWFwKClcblxuICAgICAgICBpZiAocXVvdGVNYXRjaGVzPy5zaXplKSB7XG4gICAgICAgICAgcXVvdGVNYXRjaGVzLmZvckVhY2goKHdvcmRzLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IF9rZXkgPSBzdWJzdGl0dXRlW2tleV1cblxuICAgICAgICAgICAgc2VsZWN0aW9ucy5zZXQoX2tleSwgd29yZHMubWFwKHdvcmQgPT4gKFxuICAgICAgICAgICAgICB7IC4uLndvcmQsIHRleHQ6IGNvcmUubm9ybWFsaXplU3RyaW5nKHdvcmQudGV4dCkgfVxuICAgICAgICAgICAgKSkpXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgICBuZXdTZWxlY3Rpb25zID0gc2VsZWN0aW9uc1xuICAgICAgICBuZXdTZWxlY3RlZFF1b3RlID0gc2VsZWN0ZWRRdW90ZVxuICAgICAgICB1cGRhdGVTZWxlY3Rpb25zID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG5ld1N0YXRlOiBhbnkgPSB7fVxuXG4gICAgLy8gdXBkYXRlIHN0YXRlcyB0aGF0IGhhdmUgY2hhbmdlZFxuICAgIGlmICghYXJlTWFwc1RoZVNhbWUodmVyc2VPYmplY3RzTWFwLCBfbWFwKSkge1xuICAgICAgbmV3U3RhdGUudmVyc2VPYmplY3RzTWFwID0gX21hcFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgbmV3U3RhdGUuc2VsZWN0aW9uc1JlZnMgPSBfbWFwID8gWy4uLl9tYXAua2V5cygpXS5qb2luKCc7JykgOiAnJyAvLyBjb21iaW5lIGFsbCB0aGUgdmVyc2UgcmVmZXJlbmNlcyBpbnRvIGEgc2luZ2xlIHZlcnNlIHJlZmVyZW5jZSBmb3IgdGhlIHNlbGVjdGlvbnNcbiAgICB9XG5cbiAgICBjb25zdCBib29rc05vdFNhbWUgPSByZWZlcmVuY2U/LmJvb2tJZCAhPT0gY3VycmVudFJlZmVyZW5jZT8uYm9va0lkXG5cbiAgICBpZiAoYm9va3NOb3RTYW1lIHx8ICFhcmVWZXJzZXNTYW1lKHZlcnNlc0ZvclJlZiwgX3ZlcnNlc0ZvclJlZikpIHtcbiAgICAgIG5ld1N0YXRlLnZlcnNlc0ZvclJlZiA9IF92ZXJzZXNGb3JSZWZcbiAgICAgIG5ld1N0YXRlLmxhc3RTZWxlY3RlZFF1b3RlID0gbmV3U2VsZWN0ZWRRdW90ZVxuICAgICAgbmV3U3RhdGUuc2VsZWN0aW9ucyA9IG5ld1NlbGVjdGlvbnNcbiAgICB9XG5cbiAgICBpZiAobmV3U2VsZWN0ZWRRdW90ZSkge1xuICAgICAgbmV3U3RhdGUubGFzdFNlbGVjdGVkUXVvdGUgPSBuZXdTZWxlY3RlZFF1b3RlXG4gICAgfVxuXG4gICAgaWYgKHVwZGF0ZVNlbGVjdGlvbnMpIHtcbiAgICAgIGlmICghYXJlTWFwc1RoZVNhbWUoc2VsZWN0aW9ucyB8fCAobmV3IE1hcCgpKSwgbmV3U2VsZWN0aW9ucykpIHtcbiAgICAgICAgbmV3U3RhdGUuc2VsZWN0aW9ucyA9IG5ld1NlbGVjdGlvbnNcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoT2JqZWN0LmtleXMobmV3U3RhdGUpLmxlbmd0aCkge1xuICAgICAgc2V0U3RhdGUobmV3U3RhdGUpXG4gICAgfVxuICB9LCBbXG4gICAgb3duZXIsXG4gICAgcmVzb3VyY2VJZCxcbiAgICBib29rSWQsXG4gICAgbGFuZ3VhZ2VJZF8sXG4gICAgc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWYsXG4gICAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyxcbiAgICBzZWxlY3RlZFF1b3RlLFxuICBdKVxuXG5cbiAgLy8gQ2hlY2sgaWYgb3JpZ2luYWwgbGFuZ3VhZ2UgY29udGVudCBpcyBhdmFpbGFibGUgZm9yIHRoZSBjdXJyZW50IHZlcnNlcy5cbiAgLy8gVGhpcyBzZXRzIGZvdW5kT3JpZ2luYWxDb250ZW50IHN0YXRlLCB3aGljaCBpbiB0dXJuIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIGlmXG4gIC8vIGFsaWdubWVudCBmdW5jdGlvbmFsaXR5IHNob3VsZCBiZSBlbmFibGVkXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb3JpZ2luYWxCb29rSWQgPSBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPy5ib29rSWRcbiAgICBjb25zdCBib29rVmVyc2VPYmplY3QgPSBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPy5jaGFwdGVyc1xuICAgIGxldCBfZm91bmRPcmlnaW5hbENvbnRlbnQgPSBmYWxzZVxuXG4gICAgLy8gY2hlY2sgaWYgd2UgaGF2ZSBldmVyeXRoaW5nIHdlIG5lZWQgdG8gZ2V0IG9yaWdpbmFsIHZlcnNlc1xuICAgIGlmIChfdmVyc2VzRm9yUmVmPy5sZW5ndGggJiZcbiAgICAgIGJvb2tWZXJzZU9iamVjdCAmJlxuICAgICAgKGJvb2tJZCA9PT0gb3JpZ2luYWxCb29rSWQpICYmXG4gICAgICBib29rVmVyc2VPYmplY3Q/LltjaGFwdGVyXSAvLyB3ZSBuZWVkIHRvIGhhdmUgZGF0YSBmb3IgY2hhcHRlclxuICAgICkge1xuICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBfdmVyc2VzRm9yUmVmLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICBjb25zdCB2ZXJzZVJlZiA9IF92ZXJzZXNGb3JSZWZbaV1cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGNoYXB0ZXIsXG4gICAgICAgICAgdmVyc2UsXG4gICAgICAgIH0gPSB2ZXJzZVJlZlxuXG4gICAgICAgIGxldCB2ZXJzZU9iamVjdHMgPSBbXVxuXG4gICAgICAgIGlmICgodHlwZW9mIHZlcnNlID09PSAnc3RyaW5nJykgJiYgKHZlcnNlLmluY2x1ZGVzKCctJykpKSB7XG4gICAgICAgICAgY29uc3QgdmVyc2VzID0gZ2V0VmVyc2VzKGJvb2tWZXJzZU9iamVjdCwgYCR7Y2hhcHRlcn06JHt2ZXJzZX1gKVxuXG4gICAgICAgICAgZm9yIChjb25zdCB2ZXJzZUl0ZW0gb2YgdmVyc2VzKSB7XG4gICAgICAgICAgICBjb25zdCB2byA9IHZlcnNlSXRlbS52ZXJzZURhdGEudmVyc2VPYmplY3RzXG4gICAgICAgICAgICB2ZXJzZU9iamVjdHMgPSB2ZXJzZU9iamVjdHMuY29uY2F0KHZvKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2ZXJzZU9iamVjdHMgPSBib29rVmVyc2VPYmplY3RbY2hhcHRlcl0/Llt2ZXJzZV0/LnZlcnNlT2JqZWN0c1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZlcnNlT2JqZWN0cykge1xuICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IGNsZWFudXBWZXJzZU9iamVjdHModmVyc2VPYmplY3RzKVxuXG4gICAgICAgICAgY29uc3QgaXNWZXJzZU5vdEVtcHR5ID0gIWVtcHR5Q29udGVudCh2ZXJzZU9iamVjdHMpXG4gICAgICAgICAgaWYgKGlzVmVyc2VOb3RFbXB0eSkge1xuICAgICAgICAgICAgX2ZvdW5kT3JpZ2luYWxDb250ZW50ID0gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChfZm91bmRPcmlnaW5hbENvbnRlbnQgIT0gZm91bmRPcmlnaW5hbENvbnRlbnQpIHtcbiAgICAgIHNldFN0YXRlKHsgZm91bmRPcmlnaW5hbENvbnRlbnQ6IF9mb3VuZE9yaWdpbmFsQ29udGVudCB9KVxuICAgIH1cbiAgfSwgW1xuICAgIGJvb2tJZCxcbiAgICBsYW5ndWFnZUlkXyxcbiAgICBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZixcbiAgICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzLFxuICBdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIGNsZWFyIHNldHRpbmdzIG9uIHZlcnNlIGNoYW5nZVxuICAgIHNldFN0YXRlKHtcbiAgICAgIHZlcnNlc0FsaWdubWVudFN0YXR1czogbnVsbCxcbiAgICAgIHVuc2F2ZWRDaGFuZ2VzTGlzdDoge30sXG4gICAgICBoYXZlVW5zYXZlZENoYW5nZXM6IGZhbHNlLFxuICAgIH0pXG4gIH0sIFtfcmVmZXJlbmNlXSlcblxuICBjb25zdCB1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXMgPSAocmVmZXJlbmNlOiBTY3JpcHR1cmVSZWZlcmVuY2VUeXBlLCBhbGlnbmVkOiBib29sZWFuKSA9PiB7XG4gICAgc2V0U3RhdGVfKHByZXZTdGF0ZSA9PiAoe1xuICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzOiB7IC4uLnByZXZTdGF0ZS52ZXJzZXNBbGlnbm1lbnRTdGF0dXMsIFtgJHtyZWZlcmVuY2UuY2hhcHRlcn06JHtyZWZlcmVuY2UudmVyc2V9YF06IGFsaWduZWQgfSxcbiAgICB9KSlcbiAgfVxuXG4gIGxldCBfdmVyc2VzRm9yUmVmID0gc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWZcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChfdmVyc2VzRm9yUmVmPy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHsgcmVmZXJlbmNlLCByZXNvdXJjZUxpbmsgfSA9IHNjcmlwdHVyZUNvbmZpZyB8fCB7fVxuICAgICAgY29uc29sZS5sb2coYFNjcmlwdHVyZUNhcmQuX3ZlcnNlc0ZvclJlZiBjaGFuZ2VkYCwgeyByZWZlcmVuY2UsIHJlc291cmNlTGluayB9KVxuICAgIH1cbiAgfSwgW192ZXJzZXNGb3JSZWZdKVxuXG4gIGlmICghX3ZlcnNlc0ZvclJlZj8ubGVuZ3RoKSB7IC8vIGlmIGVtcHR5IG9mIHJlZmVyZW5jZXMsIGNyZWF0ZSBzaW5nbGUgZW1wdHkgcmVmZXJlbmNlXG4gICAgX3ZlcnNlc0ZvclJlZiA9IFt7IC4uLnJlZmVyZW5jZSB9XVxuICB9XG5cbiAgY29uc3QgcmVuZGVyZWRTY3JpcHR1cmVQYW5lcyA9IF92ZXJzZXNGb3JSZWY/Lm1hcCgoX2N1cnJlbnRWZXJzZURhdGEsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgaW5pdGlhbFZlcnNlT2JqZWN0cyA9IF9jdXJyZW50VmVyc2VEYXRhPy52ZXJzZURhdGE/LnZlcnNlT2JqZWN0cyB8fCBbXVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCB7IGNoYXB0ZXIsIHZlcnNlIH0gPSBfY3VycmVudFZlcnNlRGF0YSB8fCB7fVxuICAgIGNvbnN0IGJvb2tJZF8gPSBjdXJyZW50UmVmZXJlbmNlPy5ib29rSWQgfHwgYm9va0lkXG4gICAgY29uc3QgX3JlZmVyZW5jZSA9IHtcbiAgICAgIC4uLl92ZXJzZXNGb3JSZWYsXG4gICAgICBjaGFwdGVyLFxuICAgICAgYm9va0lkOiBib29rSWRfLFxuICAgICAgdmVyc2UsXG4gICAgfVxuICAgIGNvbnN0IF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnID0ge1xuICAgICAgLi4uc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyxcbiAgICAgIGN1cnJlbnRJbmRleDogaW5kZXgsXG4gICAgICBpbml0aWFsVmVyc2VPYmplY3RzLFxuICAgICAgcmVmZXJlbmNlOiBfcmVmZXJlbmNlLFxuICAgICAgaXNOZXdUZXN0YW1lbnQsXG4gICAgfVxuXG4gICAgbGV0IGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCA9IGZhbHNlXG5cbiAgICBpZiAodmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCkge1xuICAgICAgaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50ID0gdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudC5jaGFwdGVyID09IGNoYXB0ZXIgJiYgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudC52ZXJzZSA9PSB2ZXJzZVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8U2NyaXB0dXJlUGFuZVxuICAgICAgICB7Li4uc2NyaXB0dXJlQ29uZmlnfVxuICAgICAgICBjb250ZW50U3R5bGU9e2NvbnRlbnRTdHlsZX1cbiAgICAgICAgY3VycmVudEluZGV4PXtpbmRleH1cbiAgICAgICAgZGV0ZXJtaW5pbmdCcmFuY2g9eyFyZWFkeUZvckZldGNofVxuICAgICAgICBkaXJlY3Rpb249e2RpcmVjdGlvbn1cbiAgICAgICAgZGlzYWJsZVdvcmRQb3BvdmVyPXtkaXNhYmxlV29yZFBvcG92ZXJffVxuICAgICAgICBmb250U2l6ZT17Zm9udFNpemV9XG4gICAgICAgIGdldExleGljb25EYXRhPXtnZXRMZXhpY29uRGF0YX1cbiAgICAgICAgaXNOVD17aXNOVF99XG4gICAgICAgIGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudD17aXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50fVxuICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICBvbkFsaWdubWVudEZpbmlzaD17KCkgPT4gc2V0U3RhdGUoeyB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiBudWxsIH0pfVxuICAgICAgICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPXtvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzfVxuICAgICAgICByZWZTdHlsZT17cmVmU3R5bGV9XG4gICAgICAgIHJlZmVyZW5jZT17X3JlZmVyZW5jZX1cbiAgICAgICAgc2F2aW5nPXtzdGFydFNhdmV9XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZz17X3NjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWd9XG4gICAgICAgIHNldEVkaXRWZXJzZT17c2V0RWRpdFZlcnNlfVxuICAgICAgICBzZXRXb3JkQWxpZ25lclN0YXR1cz17c2V0V29yZEFsaWduZXJTdGF0dXN9XG4gICAgICAgIHNlcnZlcj17c2VydmVyfVxuICAgICAgICB0cmFuc2xhdGU9e3RyYW5zbGF0ZX1cbiAgICAgICAgdXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzPXt1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXN9XG4gICAgICAvPlxuICAgIClcbiAgfSlcblxuICBjb25zdCBoYW5kbGVBbGlnbkJ1dHRvbkNsaWNrID0gKCkgPT4ge1xuICAgIGlmICh2ZXJzZXNGb3JSZWY/Lmxlbmd0aCA+IDEpIHsgLy8gaWYgdGhlcmUgYXJlIG11bHRpcGxlIHZlcnNlcyBzaG93biBpbiBjYXJkLCBuZWVkIHRvIHByb21wdCB1c2VyIGZvciB3aGljaCB2ZXJzZSB0byBhbGlnblxuICAgICAgc2V0U3RhdGUoeyBzaG93QWxpZ25tZW50UG9wdXA6IHRydWUgfSlcbiAgICB9IGVsc2UgaWYgKHZlcnNlc0ZvclJlZj8ubGVuZ3RoID09PSAxKSB7IC8vIGlmIG9ubHkgb25lIHZlcnNlIGlzIHNob3duIG9uIGNhcmQsIHRoZW4gZWRpdCB0aGF0IHZlcnNlXG4gICAgICBzZXRTdGF0ZSh7IHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ6IHZlcnNlc0ZvclJlZlswXSB9KVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG9uUmVuZGVyVG9vbGJhciA9ICh7IGl0ZW1zIH0pID0+IHtcbiAgICBjb25zdCBuZXdJdGVtcyA9IFsuLi5pdGVtc11cblxuICAgIGxldCBhbGxWZXJzZXNBbGlnbmVkID0gZmFsc2VcblxuICAgIC8vIENoZWNrIGlmIGFsbCB2YWx1ZXMgaW4gdmVyc2VzQWxpZ25tZW50U3RhdHVzIGFyZSB0cnVlXG4gICAgaWYgKHZlcnNlc0FsaWdubWVudFN0YXR1cykge1xuICAgICAgYWxsVmVyc2VzQWxpZ25lZCA9IE9iamVjdC52YWx1ZXModmVyc2VzQWxpZ25tZW50U3RhdHVzKS5ldmVyeShhbGlnblN0YXR1cyA9PiBhbGlnblN0YXR1cyA9PT0gdHJ1ZSlcbiAgICB9XG5cbiAgICBsZXQgYWxpZ25JY29uID0gbnVsbFxuICAgIGxldCBhbGlnbkJ1dHRvblRleHQgPSAnJ1xuXG4gICAgaWYgKGFsbFZlcnNlc0FsaWduZWQpIHtcbiAgICAgIGFsaWduSWNvbiA9IDxSeExpbmsyIGlkPXtgdmFsaWRfaWNvbl8ke3Jlc291cmNlSWR9YH0gY29sb3I9JyNCQkInIC8+XG4gICAgICBhbGlnbkJ1dHRvblRleHQgPSAnQWxpZ25tZW50IGlzIFZhbGlkJ1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjb2xvciA9IGRpc2FibGVDaGFuZ2VCdXR0b25zID8gJyNCQkInIDogJyMwMDAnIC8vIGdyYXkgb3V0IGJ1dHRvbiBpZiBkaXNhYmxlZFxuICAgICAgYWxpZ25JY29uID0gPFJ4TGlua0JyZWFrMiBpZD17YGludmFsaWRfYWxpZ25tZW50X2ljb25fJHtyZXNvdXJjZUlkfWB9IGNvbG9yPXtjb2xvcn0gLz5cbiAgICAgIGFsaWduQnV0dG9uVGV4dCA9ICdBbGlnbm1lbnQgaXMgSW52YWxpZCdcbiAgICB9XG5cbiAgICBpZiAoZm91bmRPcmlnaW5hbENvbnRlbnQgJiYgc2V0V29yZEFsaWduZXJTdGF0dXMgJiYgcmVzb3VyY2VJZCAhPT0gJ09SSUdJTkFMX1NPVVJDRScpIHtcbiAgICAgIG5ld0l0ZW1zLnB1c2goXG4gICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgaWQ9e2BhbGlnbm1lbnRfaWNvbl8ke3Jlc291cmNlSWR9YH1cbiAgICAgICAgICBrZXk9J2NoZWNraW5nLWJ1dHRvbidcbiAgICAgICAgICBvbkNsaWNrPXtkaXNhYmxlQ2hhbmdlQnV0dG9ucyA/IG51bGwgOiBoYW5kbGVBbGlnbkJ1dHRvbkNsaWNrfVxuICAgICAgICAgIHRpdGxlPXthbGlnbkJ1dHRvblRleHR9XG4gICAgICAgICAgYXJpYS1sYWJlbD17YWxpZ25CdXR0b25UZXh0fVxuICAgICAgICAgIHN0eWxlPXt7IGN1cnNvcjogJ3BvaW50ZXInIH19XG4gICAgICAgID5cbiAgICAgICAgICB7YWxpZ25JY29ufVxuICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICApXG4gICAgfVxuXG4gICAgLy8gT25seSBzaG93IHRoZSB1cGRhdGUgZnJvbSBtYWluIGJ1dHRvbiBpZiBzY3JpcHR1cmUgaXMgbm90IG9yaWdpbmFsIHRleHQuXG4gICAgIXVzaW5nT3JpZ2luYWxCaWJsZSAmJiBuZXdJdGVtcy5wdXNoKFxuICAgICAgPD5cbiAgICAgICAgPFVwZGF0ZUJyYW5jaEJ1dHRvbiB7Li4udXBkYXRlQnV0dG9uUHJvcHN9IGlzTG9hZGluZz17aXNVcGRhdGVMb2FkaW5nIHx8IHN0YXJ0U2F2ZX0vPlxuICAgICAgICA8RXJyb3JEaWFsb2cgdGl0bGU9e2RpYWxvZ1RpdGxlfSBjb250ZW50PXtkaWFsb2dNZXNzYWdlfSBvcGVuPXtpc0Vycm9yRGlhbG9nT3Blbn0gb25DbG9zZT17b25DbG9zZUVycm9yRGlhbG9nfSBpc0xvYWRpbmc9eyBpc1VwZGF0ZUxvYWRpbmcgfHwgc3RhcnRTYXZlIH0gbGluaz17ZGlhbG9nTGlua30gbGlua1Rvb2x0aXA9e2RpYWxvZ0xpbmtUb29sdGlwfSAvPlxuICAgICAgPC8+XG4gICAgKVxuXG4gICAgcmV0dXJuIG5ld0l0ZW1zXG4gIH1cblxuICBjb25zdCBzZWxlY3Rpb25Cb29rT2JqZWN0cyA9IG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM/LmNoYXB0ZXJzXG5cbiAgLy8gd2Ugb25seSB3YW50IHRvIGNoZWNrIHRoZSB0YXJnZXQgYWxpZ25tZW50IGlmIG5vdCB1c2luZyBvcmlnaW5hbCBiaWJsZVxuICBjb25zdCB0YXJnZXRWZXJzZXNGb3JSZWYgPSB1c2luZ09yaWdpbmFsQmlibGUgPyBudWxsIDogX3ZlcnNlc0ZvclJlZlxuXG4gIHJldHVybiAoXG4gICAgPFNlbGVjdGlvbnNDb250ZXh0UHJvdmlkZXJcbiAgICAgIGhpZ2hsaWdodE9ubHlDb21wbGV0ZVF1b3Rlcz17dHJ1ZX1cbiAgICAgIG9jY3VycmVuY2U9e2ZpeE9jY3VycmVuY2Uoc2VsZWN0ZWRRdW90ZT8ub2NjdXJyZW5jZSl9XG4gICAgICBvblNlbGVjdGlvbnM9e25ld1NlbGVjdGlvbnMgPT4ge1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnb25TZWxlY3Rpb25zJywgbmV3U2VsZWN0aW9ucylcbiAgICAgIH19XG4gICAgICBvcmlnaW5hbEJvb2tPYmplY3RzPXtzZWxlY3Rpb25Cb29rT2JqZWN0cyB8fCB7fX1cbiAgICAgIHF1b3RlPXtzZWxlY3RlZFF1b3RlPy5xdW90ZSB8fCAnJ31cbiAgICAgIHJlZlN0cmluZz17c2VsZWN0aW9uc1JlZnN9XG4gICAgICBzZWxlY3Rpb25zPXtzZWxlY3Rpb25zfVxuICAgICAgdGFyZ2V0VmVyc2VzRm9yUmVmPXt0YXJnZXRWZXJzZXNGb3JSZWZ9XG4gICAgPlxuICAgICAgPENhcmRcbiAgICAgICAgaWQ9e2BzY3JpcHR1cmVfY2FyZF8ke2NhcmROdW19YH1cbiAgICAgICAgdGl0bGU9e3NjcmlwdHVyZUxhYmVsfVxuICAgICAgICBzZXR0aW5nc1RpdGxlPXtzY3JpcHR1cmVUaXRsZSArICcgU2V0dGluZ3MnfVxuICAgICAgICBpdGVtcz17aXRlbXN9XG4gICAgICAgIGNsYXNzZXM9e2NsYXNzZXN9XG4gICAgICAgIGhlYWRlcnM9e2hlYWRlcnN9XG4gICAgICAgIGZpbHRlcnM9e2ZpbHRlcnN9XG4gICAgICAgIGZvbnRTaXplPXtmb250U2l6ZX1cbiAgICAgICAgaXRlbUluZGV4PXtpdGVtSW5kZXh9XG4gICAgICAgIHNldEZpbHRlcnM9e3NldEZpbHRlcnN9XG4gICAgICAgIHNldEZvbnRTaXplPXtzZXRGb250U2l6ZX1cbiAgICAgICAgc2V0SXRlbUluZGV4PXtzZXRJdGVtSW5kZXh9XG4gICAgICAgIG1hcmtkb3duVmlldz17bWFya2Rvd25WaWV3fVxuICAgICAgICBzZXRNYXJrZG93blZpZXc9e3NldE1hcmtkb3duVmlld31cbiAgICAgICAgZ2V0Q3VzdG9tQ29tcG9uZW50PXtnZXRTY3JpcHR1cmVTZWxlY3Rvcn1cbiAgICAgICAgaGlkZU1hcmtkb3duVG9nZ2xlXG4gICAgICAgIG9uTWVudUNsb3NlPXtvbk1lbnVDbG9zZX1cbiAgICAgICAgb25NaW5pbWl6ZT17b25NaW5pbWl6ZSA/ICgpID0+IG9uTWluaW1pemUoaWQsIHNjcmlwdHVyZVRpdGxlKSA6IG51bGx9XG4gICAgICAgIGVkaXRhYmxlPXtlbmFibGVFZGl0IHx8IGVuYWJsZUFsaWdubWVudH1cbiAgICAgICAgc2F2ZWQ9e2Rpc2FibGVDaGFuZ2VCdXR0b25zIHx8IHN0YXJ0U2F2ZSB8fCAhaGF2ZVVuc2F2ZWRDaGFuZ2VzfSAvLyBncmF5IG91dCBzYXZlIGJ1dHRvbiBpZiBkaXNhYmxlZCwgaWYgc2F2aW5nLCBvciBpZiBubyB1bnNhdmVkIGNoYW5nZXNcbiAgICAgICAgb25TYXZlRWRpdD17KCkgPT4gc2V0U3RhdGUoeyBzYXZlQ2xpY2tlZDogdHJ1ZSB9KX1cbiAgICAgICAgb25SZW5kZXJUb29sYmFyPXtvblJlbmRlclRvb2xiYXJ9XG4gICAgICA+XG4gICAgICAgIDxkaXYgaWQ9XCJzY3JpcHR1cmUtcGFuZS1saXN0XCI+XG4gICAgICAgICAge3JlbmRlcmVkU2NyaXB0dXJlUGFuZXN9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9DYXJkPlxuICAgICAgPFZlcnNlU2VsZWN0b3JQb3B1cFxuICAgICAgICByZXNvdXJjZUlkPXtyZXNvdXJjZUlkfVxuICAgICAgICBvcGVuPXtzaG93QWxpZ25tZW50UG9wdXB9XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFN0YXRlKHsgc2hvd0FsaWdubWVudFBvcHVwOiBmYWxzZSB9KX1cbiAgICAgICAgdmVyc2VzRm9yUmVmPXt2ZXJzZXNGb3JSZWZ9XG4gICAgICAgIHZlcnNlc0FsaWdubWVudFN0YXR1cz17dmVyc2VzQWxpZ25tZW50U3RhdHVzfVxuICAgICAgICBvblZlcnNlU2VsZWN0PXsodmVyc2UpID0+IHNldFN0YXRlKHtcbiAgICAgICAgICB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiB2ZXJzZSxcbiAgICAgICAgICBzaG93QWxpZ25tZW50UG9wdXA6IGZhbHNlLFxuICAgICAgICB9KX1cbiAgICAgIC8+XG4gICAgPC9TZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyPlxuICApXG59XG5cblNjcmlwdHVyZUNhcmQucHJvcFR5cGVzID0ge1xuICAvKiogcmVwbyBicmFuY2ggb3IgdGFnIHN1Y2ggYXMgbWFzdGVyICovXG4gIGFwcFJlZjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogYXV0aGVudGljYXRpb24gaW5mbyAqL1xuICBhdXRoZW50aWNhdGlvbjogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIGluZGV4IGZvciBjdXJyZW50IGJvb2sgKGUuZy4gJzAxJyBmb3IgJ2dlbicpKi9cbiAgYm9va0luZGV4OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogc2NyaXB0dXJlIGNhcmQgbnVtYmVyICgwIHRvIDIgZm9yIGV4YW1wbGUpICovXG4gIGNhcmROdW06IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgLyoqIENTUyBjbGFzc2VzICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBpZiB0cnVlIHRoZW4gd29yZCBkYXRhIGhvdmVyIGlzIHNob3duICovXG4gIGRpc2FibGVXb3JkUG9wb3ZlcjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKiBnZXQgbGFuZ3VhZ2UgZGV0YWlscyAqL1xuICBnZXRMYW5ndWFnZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgLyoqIGZ1bmN0aW9uIHRvIGdldCBsYXRlc3QgbGV4aWNvbiBkYXRhICovXG4gIGdldExleGljb25EYXRhOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIG9wdGlvbmFsIHVybCBmb3IgZ3JlZWsgcmVwbyAqL1xuICBncmVla1JlcG9Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBvcHRpb25hbCB1cmwgZm9yIGhlYnJldyByZXBvICovXG4gIGhlYnJld1JlcG9Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBvcHRpb25hbCBodHRwIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciBmZXRjaGluZyByZXNvdXJjZXMsIGRlZmF1bHQgaXMgMCAodmVyeSBsb25nIHdhaXQpICovXG4gIGh0dHBDb25maWc6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBodG1sIGlkZW50aWZpZXIgdG8gdXNlIGZvciBjYXJkICovXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogbWV0aG9kIHRvIGRldGVybWluZSBpZiBOVCBvciBPVCAqL1xuICBpc05UOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAvKiogdXNlci1uYW1lICovXG4gIGxvZ2dlZEluVXNlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgbWVyZ2VDaGVjazogUHJvcFR5cGVzLm51bWJlciwgLy8gaWYgdGhpcyBjaGFuZ2VzLCBuZWVkIHRvIHJlY2hlY2sgbWVyZ2Ugc3RhdHVzXG4gIC8qKiBmdW5jdGlvbiB0byBtaW5pbWl6ZSB0aGUgY2FyZCAob3B0aW9uYWwpICovXG4gIG9uTWluaW1pemU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogb3B0aW9uYWwgY2FsbGJhY2sgaWYgZXJyb3IgbG9hZGluZyByZXNvdXJjZSwgcGFyYW1ldGVyIHJldHVybmVkIGFyZTpcbiAgICogICAgKHtzdHJpbmd9IGVycm9yTWVzc2FnZSwge2Jvb2xlYW59IGlzQWNjZXNzRXJyb3IsIHtvYmplY3R9IHJlc291cmNlU3RhdHVzKVxuICAgKiAgICAgIC0gaXNBY2Nlc3NFcnJvciAtIGlzIHRydWUgaWYgdGhpcyB3YXMgYW4gZXJyb3IgdHJ5aW5nIHRvIGFjY2VzcyBmaWxlXG4gICAqICAgICAgLSByZXNvdXJjZVN0YXR1cyAtIGlzIG9iamVjdCBjb250YWluaW5nIGRldGFpbHMgYWJvdXQgcHJvYmxlbXMgZmV0Y2hpbmcgcmVzb3VyY2UgKi9cbiAgb25SZXNvdXJjZUVycm9yOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIHRoZSBvcmlnaW5hbCBzY3JpcHR1cmUgYm9va09iamVjdHMgZm9yIGN1cnJlbnQgYm9vayAqL1xuICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzOiBQcm9wVHlwZXMub2JqZWN0LFxuICByZWZlcmVuY2U6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgLyoqIGJvb2sgSUQgdG8gdXNlLCBvbGRlciBsaWJyYXJpZXMgdXNlZCBwcm9qZWN0SWQgKi9cbiAgICBib29rSWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogb2xkZXIgbGlicmFyaWVzIHVzZWQgcHJvamVjdElkIGluc3RlYWQgb2YgYm9va0lkICovXG4gICAgcHJvamVjdElkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIC8qKiBjdXJyZW50IGNoYXB0ZXIgbnVtYmVyICovXG4gICAgY2hhcHRlcjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLmlzUmVxdWlyZWQsXG4gICAgLyoqIGN1cnJlbnQgdmVyc2UgbnVtYmVyICovXG4gICAgdmVyc2U6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKS5pc1JlcXVpcmVkLFxuICB9KSxcbiAgLyoqIHJlc291cmNlIG9iamVjdCAqL1xuICByZXNvdXJjZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAvKiogcmVzb3VyY2UgbGFuZ3VhZ2UgdG8gdXNlICovXG4gICAgbGFuZ3VhZ2VJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiByZXBvIG93bmVyIHN1Y2ggYXMgdW5mb2xkaW5nV29yZCAqL1xuICAgIG93bmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIHJlc291cmNlSWQgdG8gdXNlIChlLmcuIHVnbnQpICovXG4gICAgcmVzb3VyY2VJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiByZXBvIG93bmVyIGZvciBvcmlnaW5hbCBsYW5ndWFnZXMgc3VjaCBhcyB1bmZvbGRpbmdXb3JkICovXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIH0pLFxuICAvKiogcmVzb3VyY2VMaW5rICovXG4gIHJlc291cmNlTGluazogUHJvcFR5cGVzLmFueSxcbiAgLyoqVGhpcyBpcyBjdXJyZW50bHkgc2VsZWN0ZWQgcXVvdGUgKi9cbiAgc2VsZWN0ZWRRdW90ZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIHNlcnZlciAoZS5nLiAnaHR0cHM6Ly9naXQuZG9vcjQzLm9yZycpICovXG4gIHNlcnZlcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogY2FsbGJhY2sgdG8gdXBkYXRlIGxvYWRpbmcgc3RhdGUgKi9cbiAgc2V0QXJlUmVzb3VyY2VzTG9hZGluZzogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byB1cGRhdGUgc2F2aW5nIHN0YXRlKi9cbiAgc2V0QXJlUmVzb3VyY2VzU2F2aW5nOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHJlcG9ydCBjYXJkIG1lcmdlIHN0YXR1cyAqL1xuICBzZXRDYXJkc0xvYWRpbmdNZXJnZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byByZXBvcnQgY2FyZCB1cGRhdGUgc3RhdHVzICovXG4gIHNldENhcmRzTG9hZGluZ1VwZGF0ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byByZXBvcnQgY2FyZCBzYXZpbmcgc3RhdHVzICovXG4gIHNldENhcmRzU2F2aW5nOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGZ1bmN0aW9uIHRvIHNldCBzdGF0ZSBpbiBhcHAgdGhhdCB0aGVyZSBhcmUgdW5zYXZlZCBjaGFuZ2VzICovXG4gIHNldFNhdmVkQ2hhbmdlczogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byB1cGRhdGUgd29yZCBhbGlnbmVyIHN0YXRlICovXG4gIHNldFdvcmRBbGlnbmVyU3RhdHVzOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIHRpdGxlIGZvciBzY3JpcHR1cmUgY2FyZCAqL1xuICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogb3B0aW9uYWwgZnVuY3Rpb24gZm9yIGxvY2FsaXphdGlvbiAqL1xuICB0cmFuc2xhdGU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogY2FsbGJhY2sgdG8gdXBkYXRlIHRoZSBjYXJkJ3MgbWVyZ2Ugc3RhdGUgaW4gYXBwICovXG4gIHVwZGF0ZU1lcmdlU3RhdGU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogdXNlIG1ldGhvZCBmb3IgdXNpbmcgbG9jYWwgc3RvcmFnZSBzcGVjaWZpYyBmb3IgdXNlciAqL1xuICB1c2VVc2VyTG9jYWxTdG9yYWdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxufVxuIl0sIm1hcHBpbmdzIjoiOytDQUNBLHFKQUFBQSxtQkFBQSxZQUFBQSxvQkFBQSxXQUFBQyxDQUFBLFNBQUFDLENBQUEsRUFBQUQsQ0FBQSxPQUFBRSxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsU0FBQSxFQUFBQyxDQUFBLEdBQUFILENBQUEsQ0FBQUksY0FBQSxFQUFBQyxDQUFBLEdBQUFKLE1BQUEsQ0FBQUssY0FBQSxjQUFBUCxDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxJQUFBRCxDQUFBLENBQUFELENBQUEsSUFBQUUsQ0FBQSxDQUFBTyxLQUFBLEtBQUFDLENBQUEsd0JBQUFDLE1BQUEsR0FBQUEsTUFBQSxPQUFBQyxDQUFBLEdBQUFGLENBQUEsQ0FBQUcsUUFBQSxrQkFBQUMsQ0FBQSxHQUFBSixDQUFBLENBQUFLLGFBQUEsdUJBQUFDLENBQUEsR0FBQU4sQ0FBQSxDQUFBTyxXQUFBLDhCQUFBQyxPQUFBakIsQ0FBQSxFQUFBRCxDQUFBLEVBQUFFLENBQUEsV0FBQUMsTUFBQSxDQUFBSyxjQUFBLENBQUFQLENBQUEsRUFBQUQsQ0FBQSxJQUFBUyxLQUFBLEVBQUFQLENBQUEsRUFBQWlCLFVBQUEsTUFBQUMsWUFBQSxNQUFBQyxRQUFBLFNBQUFwQixDQUFBLENBQUFELENBQUEsV0FBQWtCLE1BQUEsbUJBQUFqQixDQUFBLElBQUFpQixNQUFBLFlBQUFBLE9BQUFqQixDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxXQUFBRCxDQUFBLENBQUFELENBQUEsSUFBQUUsQ0FBQSxnQkFBQW9CLEtBQUFyQixD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
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "single-scripture-rcl",
|
|
3
3
|
"description": "A React Component Library for Rendering a Single Scripture Resource.",
|
|
4
|
-
"version": "3.5.
|
|
4
|
+
"version": "3.5.6-beta.10",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/unfoldingWord/single-scripture-rcl.git"
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"@material-ui/icons": "^4.9.1",
|
|
24
24
|
"@material-ui/lab": "4.0.0-alpha.56",
|
|
25
25
|
"bible-reference-range": "^1.1.0",
|
|
26
|
-
"gitea-react-toolkit": "^
|
|
26
|
+
"gitea-react-toolkit": "^2.4.2",
|
|
27
27
|
"prop-types": "^15.x",
|
|
28
28
|
"react": "^17.x",
|
|
29
29
|
"react-dom": "^17.x",
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
"eslint-plugin-react": "7.21.5",
|
|
75
75
|
"eslint-plugin-react-hooks": "^4.2.0",
|
|
76
76
|
"fs-extra": "^11.1.1",
|
|
77
|
-
"gitea-react-toolkit": "
|
|
77
|
+
"gitea-react-toolkit": "2.4.2",
|
|
78
78
|
"jest": "^29.6.4",
|
|
79
79
|
"path-extra": "^4.3.0",
|
|
80
80
|
"prop-types": "^15.7.2",
|
package/dist/utils/files.js
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import "core-js/modules/es.regexp.exec.js";
|
|
2
|
-
import "core-js/modules/es.string.replace.js";
|
|
3
|
-
import "core-js/modules/esnext.string.replace-all.js";
|
|
4
|
-
import { applyPatch, createPatch } from 'diff';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* replace any characters that are not compatible with a json string content
|
|
8
|
-
* @param {string} diffFile
|
|
9
|
-
* @return {string} escaped text
|
|
10
|
-
*/
|
|
11
|
-
export function escapeJsonStringChars(diffFile) {
|
|
12
|
-
var newDiff = diffFile.replaceAll('\\', '\\\\');
|
|
13
|
-
newDiff = newDiff.replaceAll('\n\r', '\\n');
|
|
14
|
-
newDiff = newDiff.replaceAll('\n', '\\n');
|
|
15
|
-
newDiff = newDiff.replaceAll('"', '\\"');
|
|
16
|
-
return newDiff;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* create a patch of the differences between the contents of originalFile and editedFile
|
|
21
|
-
* @param {string} fileName - name of the file being changed
|
|
22
|
-
* @param {string} originalFileContents - original file contents
|
|
23
|
-
* @param {string} editedFileContents - new file contents
|
|
24
|
-
* @param {boolean} jsonEscape - if true then we escape characters to fit in json string contents
|
|
25
|
-
* @param {number} contextLines - number of context lines to include in patch
|
|
26
|
-
* @return {string} - differences between files
|
|
27
|
-
*/
|
|
28
|
-
export function getPatch(fileName, originalFileContents, editedFileContents) {
|
|
29
|
-
var jsonEscape = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
30
|
-
var contextLines = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 4;
|
|
31
|
-
var diffResult = createPatch(fileName, originalFileContents, editedFileContents, undefined, undefined, {
|
|
32
|
-
context: contextLines
|
|
33
|
-
});
|
|
34
|
-
if (jsonEscape) {
|
|
35
|
-
diffResult = escapeJsonStringChars(diffResult);
|
|
36
|
-
}
|
|
37
|
-
return diffResult;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
*
|
|
42
|
-
* @param {string} originalFileContents - original file contents
|
|
43
|
-
* @return {string} - updated file contents
|
|
44
|
-
*/
|
|
45
|
-
export function applyPatchToString(originalText, diff) {
|
|
46
|
-
var newContents = applyPatch(originalText, diff);
|
|
47
|
-
return newContents;
|
|
48
|
-
}
|
|
49
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhcHBseVBhdGNoIiwiY3JlYXRlUGF0Y2giLCJlc2NhcGVKc29uU3RyaW5nQ2hhcnMiLCJkaWZmRmlsZSIsIm5ld0RpZmYiLCJyZXBsYWNlQWxsIiwiZ2V0UGF0Y2giLCJmaWxlTmFtZSIsIm9yaWdpbmFsRmlsZUNvbnRlbnRzIiwiZWRpdGVkRmlsZUNvbnRlbnRzIiwianNvbkVzY2FwZSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsImNvbnRleHRMaW5lcyIsImRpZmZSZXN1bHQiLCJjb250ZXh0IiwiYXBwbHlQYXRjaFRvU3RyaW5nIiwib3JpZ2luYWxUZXh0IiwiZGlmZiIsIm5ld0NvbnRlbnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2ZpbGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFwcGx5UGF0Y2gsIGNyZWF0ZVBhdGNoIH0gZnJvbSAnZGlmZidcblxuLyoqXG4gKiByZXBsYWNlIGFueSBjaGFyYWN0ZXJzIHRoYXQgYXJlIG5vdCBjb21wYXRpYmxlIHdpdGggYSBqc29uIHN0cmluZyBjb250ZW50XG4gKiBAcGFyYW0ge3N0cmluZ30gZGlmZkZpbGVcbiAqIEByZXR1cm4ge3N0cmluZ30gZXNjYXBlZCB0ZXh0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlc2NhcGVKc29uU3RyaW5nQ2hhcnMoZGlmZkZpbGUpIHtcbiAgbGV0IG5ld0RpZmYgPSBkaWZmRmlsZS5yZXBsYWNlQWxsKCdcXFxcJywgJ1xcXFxcXFxcJylcbiAgbmV3RGlmZiA9IG5ld0RpZmYucmVwbGFjZUFsbCgnXFxuXFxyJywgJ1xcXFxuJylcbiAgbmV3RGlmZiA9IG5ld0RpZmYucmVwbGFjZUFsbCgnXFxuJywgJ1xcXFxuJylcbiAgbmV3RGlmZiA9IG5ld0RpZmYucmVwbGFjZUFsbCgnXCInLCAnXFxcXFwiJylcbiAgcmV0dXJuIG5ld0RpZmZcbn1cblxuLyoqXG4gKiBjcmVhdGUgYSBwYXRjaCBvZiB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgY29udGVudHMgb2Ygb3JpZ2luYWxGaWxlIGFuZCBlZGl0ZWRGaWxlXG4gKiBAcGFyYW0ge3N0cmluZ30gZmlsZU5hbWUgLSBuYW1lIG9mIHRoZSBmaWxlIGJlaW5nIGNoYW5nZWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBvcmlnaW5hbEZpbGVDb250ZW50cyAtIG9yaWdpbmFsIGZpbGUgY29udGVudHNcbiAqIEBwYXJhbSB7c3RyaW5nfSBlZGl0ZWRGaWxlQ29udGVudHMgLSBuZXcgZmlsZSBjb250ZW50c1xuICogQHBhcmFtIHtib29sZWFufSBqc29uRXNjYXBlIC0gaWYgdHJ1ZSB0aGVuIHdlIGVzY2FwZSBjaGFyYWN0ZXJzIHRvIGZpdCBpbiBqc29uIHN0cmluZyBjb250ZW50c1xuICogQHBhcmFtIHtudW1iZXJ9IGNvbnRleHRMaW5lcyAtIG51bWJlciBvZiBjb250ZXh0IGxpbmVzIHRvIGluY2x1ZGUgaW4gcGF0Y2hcbiAqIEByZXR1cm4ge3N0cmluZ30gLSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGZpbGVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXRjaChmaWxlTmFtZSwgb3JpZ2luYWxGaWxlQ29udGVudHMsIGVkaXRlZEZpbGVDb250ZW50cywganNvbkVzY2FwZSA9IGZhbHNlLCBjb250ZXh0TGluZXMgPSA0KSB7XG4gIGxldCBkaWZmUmVzdWx0ID0gY3JlYXRlUGF0Y2goZmlsZU5hbWUsIG9yaWdpbmFsRmlsZUNvbnRlbnRzLCBlZGl0ZWRGaWxlQ29udGVudHMsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB7IGNvbnRleHQ6IGNvbnRleHRMaW5lcyB9KVxuXG4gIGlmIChqc29uRXNjYXBlKSB7XG4gICAgZGlmZlJlc3VsdCA9IGVzY2FwZUpzb25TdHJpbmdDaGFycyhkaWZmUmVzdWx0KVxuICB9XG4gIHJldHVybiBkaWZmUmVzdWx0XG59XG5cbi8qKlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBvcmlnaW5hbEZpbGVDb250ZW50cyAtIG9yaWdpbmFsIGZpbGUgY29udGVudHNcbiAqIEByZXR1cm4ge3N0cmluZ30gLSB1cGRhdGVkIGZpbGUgY29udGVudHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UGF0Y2hUb1N0cmluZyhvcmlnaW5hbFRleHQsIGRpZmYpIHtcbiAgbGV0IG5ld0NvbnRlbnRzID0gYXBwbHlQYXRjaChvcmlnaW5hbFRleHQsIGRpZmYpXG4gIHJldHVybiBuZXdDb250ZW50c1xufVxuXG4iXSwibWFwcGluZ3MiOiI7OztBQUFBLFNBQVNBLFVBQVUsRUFBRUMsV0FBVyxRQUFRLE1BQU07O0FBRTlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLFNBQVNDLHFCQUFxQkEsQ0FBQ0MsUUFBUSxFQUFFO0VBQzlDLElBQUlDLE9BQU8sR0FBR0QsUUFBUSxDQUFDRSxVQUFVLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQztFQUMvQ0QsT0FBTyxHQUFHQSxPQUFPLENBQUNDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDO0VBQzNDRCxPQUFPLEdBQUdBLE9BQU8sQ0FBQ0MsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7RUFDekNELE9BQU8sR0FBR0EsT0FBTyxDQUFDQyxVQUFVLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQztFQUN4QyxPQUFPRCxPQUFPO0FBQ2hCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sU0FBU0UsUUFBUUEsQ0FBQ0MsUUFBUSxFQUFFQyxvQkFBb0IsRUFBRUMsa0JBQWtCLEVBQXdDO0VBQUEsSUFBdENDLFVBQVUsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQUUsU0FBQSxHQUFBRixTQUFBLE1BQUcsS0FBSztFQUFBLElBQUVHLFlBQVksR0FBQUgsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQUUsU0FBQSxHQUFBRixTQUFBLE1BQUcsQ0FBQztFQUMvRyxJQUFJSSxVQUFVLEdBQUdkLFdBQVcsQ0FBQ00sUUFBUSxFQUFFQyxvQkFBb0IsRUFBRUMsa0JBQWtCLEVBQUVJLFNBQVMsRUFBRUEsU0FBUyxFQUFFO0lBQUVHLE9BQU8sRUFBRUY7RUFBYSxDQUFDLENBQUM7RUFFakksSUFBSUosVUFBVSxFQUFFO0lBQ2RLLFVBQVUsR0FBR2IscUJBQXFCLENBQUNhLFVBQVUsQ0FBQztFQUNoRDtFQUNBLE9BQU9BLFVBQVU7QUFDbkI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sU0FBU0Usa0JBQWtCQSxDQUFDQyxZQUFZLEVBQUVDLElBQUksRUFBRTtFQUNyRCxJQUFJQyxXQUFXLEdBQUdwQixVQUFVLENBQUNrQixZQUFZLEVBQUVDLElBQUksQ0FBQztFQUNoRCxPQUFPQyxXQUFXO0FBQ3BCIn0=
|