@1money/component-ui 0.0.90-alpha.14 → 0.0.90-alpha.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/business/Dialog/FormDialog/FormDialog.js +4 -6
- package/es/business/Dialog/VerificationDialog/VerificationDialog.js +62 -20
- package/es/business/Dialog/index.d.ts +1 -0
- package/es/business/Dialog/index.js +1 -1
- package/es/business/Dialog/variants/LoadingDialog.js +94 -67
- package/es/business/Dialog/variants/index.d.ts +1 -1
- package/es/business/FieldList/index.js +8 -1
- package/es/business/FormPage/FormPage.js +3 -6
- package/es/business/shared/formCore/useRelayedFormRef.d.ts +16 -0
- package/es/business/shared/formCore/useRelayedFormRef.js +43 -0
- package/es/components/ProForm/ProForm.js +11 -4
- package/es/index.css +1 -1
- package/lib/business/Dialog/FormDialog/FormDialog.js +4 -6
- package/lib/business/Dialog/VerificationDialog/VerificationDialog.js +62 -20
- package/lib/business/Dialog/index.d.ts +1 -0
- package/lib/business/Dialog/index.js +1 -1
- package/lib/business/Dialog/variants/LoadingDialog.js +93 -66
- package/lib/business/Dialog/variants/index.d.ts +1 -1
- package/lib/business/FieldList/index.js +8 -1
- package/lib/business/FormPage/FormPage.js +3 -6
- package/lib/business/shared/formCore/useRelayedFormRef.d.ts +16 -0
- package/lib/business/shared/formCore/useRelayedFormRef.js +49 -0
- package/lib/components/ProForm/ProForm.js +11 -4
- package/lib/index.css +1 -1
- package/package.json +11 -1
- package/scripts/mcp-server/index.generated.json +22 -14
|
@@ -338,10 +338,17 @@ var ProFormBase = function ProFormBase(props) {
|
|
|
338
338
|
});
|
|
339
339
|
}, [formInstance, applyPipeline, wrappedHandleSubmit]);
|
|
340
340
|
// ── Sync to formRef prop ──
|
|
341
|
+
// The cleanup clears the ref on unmount: a handle to an unmounted form
|
|
342
|
+
// validates an empty field store and reports fake success, so consumers
|
|
343
|
+
// (and the business-shell relay refs) must observe `undefined` instead.
|
|
341
344
|
(0, _react.useEffect)(function () {
|
|
342
|
-
if (formRef)
|
|
343
|
-
|
|
344
|
-
|
|
345
|
+
if (!formRef) return undefined;
|
|
346
|
+
formRef.current = proFormFormInstance;
|
|
347
|
+
return function () {
|
|
348
|
+
if (formRef.current === proFormFormInstance) {
|
|
349
|
+
formRef.current = undefined;
|
|
350
|
+
}
|
|
351
|
+
};
|
|
345
352
|
}, [formRef, proFormFormInstance]);
|
|
346
353
|
// ── request / params auto-load ──
|
|
347
354
|
var requestRef = (0, _useLatest["default"])(request);
|
|
@@ -510,4 +517,4 @@ var ProFormBase = function ProFormBase(props) {
|
|
|
510
517
|
ProFormBase.displayName = 'ProForm';
|
|
511
518
|
var ProForm = exports.ProForm = /*#__PURE__*/(0, _react.memo)(ProFormBase);
|
|
512
519
|
var _default = exports["default"] = ProForm;
|
|
513
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtLmpzIiwiY29tcG9uZW50cy9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL1Byb0Zvcm0udHN4Il0sIm5hbWVzIjpbIl9qc3hSdW50aW1lIiwicmVxdWlyZSIsIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX3VzZUxhdGVzdCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdXNlU2FmZVN0YXRlNSIsIl91c2VNZW1vaXplZEZuIiwiX3VzZUV2ZW50Q2FsbGJhY2siLCJfY2xhc3NuYW1lcyIsIl9HcmlkIiwiX3VzZUZvcm0yIiwiX2NvbnRleHQ0IiwiX1N1Ym1pdHRlciIsIl9jb25zdGFudHMiLCJfdXRpbHMiLCJfZm9ybVN0b3JlIiwiX3VzZVVybFN5bmMyIiwiX3BhdGhVdGlscyIsIl92YWxpZGF0aW9uRXJyb3IiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YzIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiX19hd2FpdGVyIiwidGhpc0FyZyIsIl9hcmd1bWVudHMiLCJQIiwiZ2VuZXJhdG9yIiwiYWRvcHQiLCJ2YWx1ZSIsInJlc29sdmUiLCJQcm9taXNlIiwicmVqZWN0IiwiZnVsZmlsbGVkIiwic3RlcCIsIm5leHQiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiYXBwbHkiLCJfX3Jlc3QiLCJzIiwicCIsInByb3RvdHlwZSIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImNsYXNzZXMiLCJjbGFzc25hbWVzIiwiQ1NTX1BSRUZJWCIsImZvcm1DbGFzc2VzIiwiREVGQVVMVF9DT0xfUFJPUFMiLCJzcGFuIiwiREVGQVVMVF9DT0xfU1BBTiIsIlByb0Zvcm1CYXNlIiwicHJvcHMiLCJjaGlsZHJlbiIsImNsYXNzTmFtZSIsInN1Ym1pdHRlciIsIl9wcm9wcyRtb2RlIiwibW9kZSIsIl9wcm9wcyRncmlkIiwiZ3JpZCIsImNvbFByb3BzIiwicm93UHJvcHMiLCJfcHJvcHMkbG9hZGluZyIsImxvYWRpbmciLCJyZXF1ZXN0IiwicGFyYW1zIiwiaW5pdGlhbFZhbHVlcyIsIm9uRmluaXNoIiwib25GaW5pc2hGYWlsZWQiLCJvblZhbHVlc0NoYW5nZSIsIm9uUmVzZXQiLCJvbkluaXQiLCJvbkxvYWRpbmdDaGFuZ2UiLCJzeW5jVG9VcmwiLCJfcHJvcHMkc3luY1RvVXJsQXNJbXAiLCJzeW5jVG9VcmxBc0ltcG9ydGFudCIsImV4dHJhVXJsUGFyYW1zIiwiX3Byb3BzJGF1dG9Gb2N1c0ZpcnN0IiwiYXV0b0ZvY3VzRmlyc3RJbnB1dCIsImZvcm1Db21wb25lbnRUeXBlIiwiZm9ybVJlZiIsIl9wcm9wcyRvbWl0TmlsIiwib21pdE5pbCIsIl9wcm9wcyRkYXRlRm9ybWF0dGVyIiwiZGF0ZUZvcm1hdHRlciIsImZpZWxkUHJvcHMiLCJmb3JtSXRlbVByb3BzIiwibGF5b3V0IiwiX3Byb3BzJHNpemUiLCJzaXplIiwiX3Byb3BzJGxhYmVsQWxpZ24iLCJsYWJlbEFsaWduIiwiX3Byb3BzJGRpc2FibGVkIiwiZGlzYWJsZWQiLCJfcHJvcHMkdmFsaWRhdGVUcmlnZ2UiLCJ2YWxpZGF0ZVRyaWdnZXIiLCJfcHJlZml4Q2xzIiwicHJlZml4Q2xzIiwicmVzdCIsIl91c2VTYWZlU3RhdGUiLCJ1c2VTYWZlU3RhdGUiLCJfdXNlU2FmZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsInJlcXVlc3RMb2FkaW5nIiwic2V0UmVxdWVzdExvYWRpbmciLCJfdXNlU2FmZVN0YXRlMyIsIl91c2VTYWZlU3RhdGU0Iiwic3VibWl0dGluZyIsInNldFN1Ym1pdHRpbmciLCJzdWJtaXR0aW5nUmVmIiwidXNlUmVmIiwiaXNMb2FkaW5nIiwidHJhbnNmb3JtS2V5UmVmIiwidmFsdWVUeXBlUmVmIiwicmVnaXN0ZXJUcmFuc2Zvcm0iLCJ1c2VNZW1vaXplZEZuIiwibmFtZSIsImZuIiwiY3VycmVudCIsInVucmVnaXN0ZXJUcmFuc2Zvcm0iLCJ1bmRlZmluZWQiLCJyZWdpc3RlclZhbHVlVHlwZSIsInZhbHVlVHlwZSIsInVucmVnaXN0ZXJWYWx1ZVR5cGUiLCJvbkZpbmlzaFJlZiIsInVzZUxhdGVzdCIsIm9uSW5pdFJlZiIsIm9uTG9hZGluZ0NoYW5nZVJlZiIsImFwcGx5UGlwZWxpbmUiLCJ2YWx1ZXMiLCJmb3JtYXREYXRlVmFsdWVzIiwidHJhbnNmb3JtU3VibWl0VmFsdWVzIiwib21pdE5pbFZhbHVlcyIsImZvcm1hdFZhbHVlc0tlZXBOaWwiLCJfdXNlVXJsU3luYyIsInVzZVVybFN5bmMiLCJ1cmxJbml0aWFsVmFsdWVzIiwib25VcmxTeW5jRmluaXNoIiwib25VcmxTeW5jUmVzZXQiLCJtZXJnZWRJbml0aWFsVmFsdWVzUmVmIiwiYXNzaWduIiwibWVyZ2VkSW5pdGlhbFZhbHVlcyIsInJlc2V0RXBvY2hSZWYiLCJmaXJlRm9ybVJlc2V0IiwiZmluYWxWYWx1ZXMiLCJmb3JtSW5zdGFuY2UiLCJnZXRGaWVsZHNWYWx1ZSIsIl91c2VGb3JtIiwidXNlRm9ybSIsImludGVybmFscyIsInN0b3JlIiwid3JhcHBlZEhhbmRsZVN1Ym1pdCIsInVzZUV2ZW50Q2FsbGJhY2siLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsIl9hIiwiX2IiLCJfYyIsImVwb2NoIiwidmFsaWRhdGVkVmFsdWVzIiwicGlwZWxpbmVkIiwiX3QiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwicHJldmVudERlZmF1bHQiLCJhYnJ1cHQiLCJ2YWxpZGF0ZUZpZWxkcyIsInNlbnQiLCJGb3JtVmFsaWRhdGlvbkVycm9yIiwiZXJyb3JzIiwiY29uc29sZSIsImVycm9yIiwiZmluaXNoIiwic3RvcCIsInByb0Zvcm1Gb3JtSW5zdGFuY2UiLCJ1c2VNZW1vIiwiZ2V0RmllbGRzRm9ybWF0VmFsdWUiLCJnZXRGaWVsZEZvcm1hdFZhbHVlIiwicmVzb2x2ZVZhbHVlIiwiZ2V0RmllbGRGb3JtYXRWYWx1ZU9iamVjdCIsImZvcm1hdHRlZCIsInNldE5lc3RlZFZhbHVlIiwidmFsaWRhdGVGaWVsZHNSZXR1cm5Gb3JtYXRWYWx1ZSIsIl9jYWxsZWUyIiwidmFscyIsIl90MiIsIl9jb250ZXh0MiIsInN1Y2Nlc3MiLCJzdWJtaXRGb3JtIiwidXNlRWZmZWN0IiwicmVxdWVzdFJlZiIsImhhc1JlcXVlc3QiLCJzZXJpYWxpemVkUGFyYW1zIiwic3RhYmxlU2VyaWFsaXplIiwiaW5pdEZpcmVkUmVmIiwiZmlyZUluaXQiLCJzdGFsZSIsImZldGNoRGF0YSIsIl9jYWxsZWUzIiwicmVxdWVzdEZuIiwiZGF0YSIsIl90MyIsIl9jb250ZXh0MyIsIl90eXBlb2YyIiwic2V0RmllbGRzVmFsdWUiLCJmb3JtRWxSZWYiLCJmaXJzdElucHV0IiwicXVlcnlTZWxlY3RvciIsImZvY3VzIiwic3RhYmxlRmllbGRQcm9wcyIsInVzZVNoYWxsb3dTdGFibGUiLCJzdGFibGVGb3JtSXRlbVByb3BzIiwic3RhYmxlQ29sUHJvcHMiLCJzdGFibGVMYXlvdXQiLCJzdGFibGVWYWx1ZSIsInNldEZpZWxkVmFsdWUiLCJzZXRGaWVsZEVycm9yIiwic2V0RmllbGRXYXJuaW5nIiwidmFsaWRhdGVGaWVsZEFzeW5jIiwicmVnaXN0ZXJGaWVsZCIsInVucmVnaXN0ZXJGaWVsZCIsInJldGFpbkZpZWxkIiwicmVsZWFzZUZpZWxkIiwiV3JhcHBlckNvbXBvbmVudCIsIlJvdyIsIkZyYWdtZW50Iiwid3JhcHBlclByb3BzIiwiaGFuZGxlU3VibWl0dGVyUmVzZXQiLCJzdWJtaXR0ZXJOb2RlIiwiX2pzeCIsIlN1Ym1pdHRlciIsIlByb0Zvcm1TdGFibGVDb250ZXh0IiwiUHJvdmlkZXIiLCJQcm9Gb3JtU3RhdGVDb250ZXh0IiwiX2pzeHMiLCJyZWYiLCJqb2luQ2xzIiwib25TdWJtaXQiLCJoYW5kbGVSZXNldCIsImRpc3BsYXlOYW1lIiwiUHJvRm9ybSIsImV4cG9ydHMiLCJtZW1vIiwiX2RlZmF1bHQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBb0JBLElBQUFBLFdBQUEsR0FBQUMsT0FBQTtBQ3BCQSxJQUFBQyxNQUFBLEdBQUFDLHVCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBRyxVQUFBLEdBQUFDLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBSyxjQUFBLEdBQUFELHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBTSxjQUFBLEdBQUFGLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBTyxpQkFBQSxHQUFBSCxzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQVEsV0FBQSxHQUFBTix1QkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQVMsS0FBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsU0FBQSxHQUFBVixPQUFBO0FBQ0EsSUFBQVcsU0FBQSxHQUFBWCxPQUFBO0FBQ0EsSUFBQVksVUFBQSxHQUFBWixPQUFBO0FBQ0EsSUFBQWEsVUFBQSxHQUFBYixPQUFBO0FBQ0EsSUFBQWMsTUFBQSxHQUFBZCxPQUFBO0FBQ0EsSUFBQWUsVUFBQSxHQUFBZixPQUFBO0FBQ0EsSUFBQWdCLFlBQUEsR0FBQWhCLE9BQUE7QUFDQSxJQUFBaUIsVUFBQSxHQUFBakIsT0FBQTtBQUNBLElBQUFrQixnQkFBQSxHQUFBbEIsT0FBQTtBQUE2RCxTQUFBbUIseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFsQix3QkFBQWtCLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxV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T0FBTyxFQUFFK0UsU0FBUyxDQUFDMkYsV0FBVztRQUFBM0wsUUFBQSxFQUFBLENBRTlCLElBQUFrTCxlQUFBLEVBQUNOLGdCQUFnQixFQUFBdk4sTUFBQSxDQUFBa0ksTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUFLd0YsWUFBWSxFQUFBO1VBQUEvSyxRQUFBLEVBQUdBO1FBQVEsQ0FBQSxDQUFBLENBQW9CLEVBQ2hFaUwsYUFBYTtNQUFBLENBQUEsQ0FBQTtJQUNULENBQUE7RUFDc0IsQ0FBQSxDQUNEO0FBRXBDLENBQUM7QUFFRG5MLFdBQVcsQ0FBQzhMLFdBQVcsR0FBRyxTQUFTO0FBYTVCLElBQU1DLE9BQU8sR0FBQUMsT0FBQSxDQUFBRCxPQUFBLGdCQUFHLElBQUFFLFdBQUksRUFBQ2pNLFdBQVcsQ0FBNEI7QUFBQyxJQUFBa00sUUFBQSxHQUFBRixPQUFBLGNBRXJERCxPQUFPIiwiZmlsZSI6ImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IFJlYWN0LCB7IG1lbW8sIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCBGcmFnbWVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VMYXRlc3QgZnJvbSAnQDFtb25leS9ob29rcy91c2VMYXRlc3QnO1xuaW1wb3J0IHVzZVNhZmVTdGF0ZSBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZVNhZmVTdGF0ZSc7XG5pbXBvcnQgdXNlTWVtb2l6ZWRGbiBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZU1lbW9pemVkRm4nO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnQDFtb25leS9ob29rcy91c2VFdmVudENhbGxiYWNrJztcbmltcG9ydCB7IGRlZmF1bHQgYXMgY2xhc3NuYW1lcywgam9pbkNscyB9IGZyb20gJy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsgUm93IH0gZnJvbSAnLi4vR3JpZCc7XG5pbXBvcnQgeyB1c2VGb3JtIH0gZnJvbSAnLi9jb3JlL2hvb2tzL3VzZUZvcm0nO1xuaW1wb3J0IHsgUHJvRm9ybVN0YWJsZUNvbnRleHQsIFByb0Zvcm1TdGF0ZUNvbnRleHQgfSBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IHsgU3VibWl0dGVyIH0gZnJvbSAnLi9TdWJtaXR0ZXInO1xuaW1wb3J0IHsgQ1NTX1BSRUZJWCwgREVGQVVMVF9DT0xfU1BBTiB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IHN0YWJsZVNlcmlhbGl6ZSwgdHJhbnNmb3JtU3VibWl0VmFsdWVzLCBvbWl0TmlsVmFsdWVzLCBmb3JtYXREYXRlVmFsdWVzIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyB1c2VTaGFsbG93U3RhYmxlIH0gZnJvbSAnLi9jb3JlL2Zvcm1TdG9yZSc7XG5pbXBvcnQgeyB1c2VVcmxTeW5jIH0gZnJvbSAnLi9ob29rcy91c2VVcmxTeW5jJztcbmltcG9ydCB7IHJlc29sdmVWYWx1ZSwgc2V0TmVzdGVkVmFsdWUgfSBmcm9tICcuL2NvcmUvcGF0aFV0aWxzJztcbmltcG9ydCB7IEZvcm1WYWxpZGF0aW9uRXJyb3IgfSBmcm9tICcuL2NvcmUvdmFsaWRhdGlvbkVycm9yJztcbmNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKENTU19QUkVGSVgpO1xuY29uc3QgZm9ybUNsYXNzZXMgPSBjbGFzc25hbWVzKCdmb3JtJyk7XG5jb25zdCBERUZBVUxUX0NPTF9QUk9QUyA9IHsgc3BhbjogREVGQVVMVF9DT0xfU1BBTiB9O1xuY29uc3QgUHJvRm9ybUJhc2UgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHN1Ym1pdHRlciwgbW9kZSA9ICdlZGl0JywgZ3JpZCA9IGZhbHNlLCBjb2xQcm9wcywgcm93UHJvcHMsIGxvYWRpbmcgPSBmYWxzZSwgcmVxdWVzdCwgcGFyYW1zLCBpbml0aWFsVmFsdWVzLCBvbkZpbmlzaCwgb25GaW5pc2hGYWlsZWQsIG9uVmFsdWVzQ2hhbmdlLCBvblJlc2V0LCBvbkluaXQsIG9uTG9hZGluZ0NoYW5nZSwgc3luY1RvVXJsLCBzeW5jVG9VcmxBc0ltcG9ydGFudCA9IGZhbHNlLCBleHRyYVVybFBhcmFtcywgYXV0b0ZvY3VzRmlyc3RJbnB1dCA9IGZhbHNlLCBmb3JtQ29tcG9uZW50VHlwZSwgZm9ybVJlZiwgb21pdE5pbCA9IHRydWUsIGRhdGVGb3JtYXR0ZXIgPSAnc3RyaW5nJywgZmllbGRQcm9wcywgZm9ybUl0ZW1Qcm9wcywgbGF5b3V0LCBzaXplID0gJ2xhcmdlJywgbGFiZWxBbGlnbiA9ICdsZWZ0JywgZGlzYWJsZWQgPSBmYWxzZSwgdmFsaWRhdGVUcmlnZ2VyID0gJ29uQ2hhbmdlJywgcHJlZml4Q2xzOiBfcHJlZml4Q2xzIH0gPSBwcm9wcywgcmVzdCA9IF9fcmVzdChwcm9wcywgW1wiY2hpbGRyZW5cIiwgXCJjbGFzc05hbWVcIiwgXCJzdWJtaXR0ZXJcIiwgXCJtb2RlXCIsIFwiZ3JpZFwiLCBcImNvbFByb3BzXCIsIFwicm93UHJvcHNcIiwgXCJsb2FkaW5nXCIsIFwicmVxdWVzdFwiLCBcInBhcmFtc1wiLCBcImluaXRpYWxWYWx1ZXNcIiwgXCJvbkZpbmlzaFwiLCBcIm9uRmluaXNoRmFpbGVkXCIsIFwib25WYWx1ZXNDaGFuZ2VcIiwgXCJvblJlc2V0XCIsIFwib25Jbml0XCIsIFwib25Mb2FkaW5nQ2hhbmdlXCIsIFwic3luY1RvVXJsXCIsIFwic3luY1RvVXJsQXNJbXBvcnRhbnRcIiwgXCJleHRyYVVybFBhcmFtc1wiLCBcImF1dG9Gb2N1c0ZpcnN0SW5wdXRcIiwgXCJmb3JtQ29tcG9uZW50VHlwZVwiLCBcImZvcm1SZWZcIiwgXCJvbWl0TmlsXCIsIFwiZGF0ZUZvcm1hdHRlclwiLCBcImZpZWxkUHJvcHNcIiwgXCJmb3JtSXRlbVByb3BzXCIsIFwibGF5b3V0XCIsIFwic2l6ZVwiLCBcImxhYmVsQWxpZ25cIiwgXCJkaXNhYmxlZFwiLCBcInZhbGlkYXRlVHJpZ2dlclwiLCBcInByZWZpeENsc1wiXSk7XG4gICAgY29uc3QgW3JlcXVlc3RMb2FkaW5nLCBzZXRSZXF1ZXN0TG9hZGluZ10gPSB1c2VTYWZlU3RhdGUoZmFsc2UpO1xuICAgIC8vIHVzZVNhZmVTdGF0ZSBmb3IgdGhlIFJFTkRFUkVEIHN1Ym1pdHRpbmcgc3RhdGUgKGl0cyBzZXR0ZXIgaXMgdW5tb3VudC1zYWZlXG4gICAgLy8g4oCUIHRoZSBmaW5hbGx5IGJlbG93IHJ1bnMgYWZ0ZXIgYXdhaXRpbmcgb25GaW5pc2gsIHdoZW4gdGhlIHR5cGljYWxcbiAgICAvLyBzdWJtaXQtdGhlbi1jbG9zZSBmbG93IG1heSBhbHJlYWR5IGhhdmUgdW5tb3VudGVkIHRoZSBmb3JtIG9uIFJlYWN0XG4gICAgLy8gMTYvMTcpLiBUaGUgcmVmIGlzIHRoZSBzeW5jaHJvbm91cyByZS1lbnRyeSBndWFyZDsgQDFtb25leS9ob29rcyBoYXMgbm9cbiAgICAvLyBzaW5nbGUgaG9vayB0aGF0IGlzIGJvdGggdW5tb3VudC1zYWZlIGFuZCBzeW5jaHJvbm91c2x5IHJlYWRhYmxlLlxuICAgIGNvbnN0IFtzdWJtaXR0aW5nLCBzZXRTdWJtaXR0aW5nXSA9IHVzZVNhZmVTdGF0ZShmYWxzZSk7XG4gICAgY29uc3Qgc3VibWl0dGluZ1JlZiA9IHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3QgaXNMb2FkaW5nID0gbG9hZGluZyB8fCByZXF1ZXN0TG9hZGluZyB8fCBzdWJtaXR0aW5nO1xuICAgIC8vIOKUgOKUgCBUcmFuc2Zvcm0gLyB2YWx1ZVR5cGUgcmVnaXN0cmllcyDilIDilIBcbiAgICBjb25zdCB0cmFuc2Zvcm1LZXlSZWYgPSB1c2VSZWYoe30pO1xuICAgIGNvbnN0IHZhbHVlVHlwZVJlZiA9IHVzZVJlZih7fSk7XG4gICAgY29uc3QgcmVnaXN0ZXJUcmFuc2Zvcm0gPSB1c2VNZW1vaXplZEZuKChuYW1lLCBmbikgPT4ge1xuICAgICAgICB0cmFuc2Zvcm1LZXlSZWYuY3VycmVudFtuYW1lXSA9IGZuO1xuICAgIH0pO1xuICAgIC8vIFRoZSBvcHRpb25hbCBzZWNvbmQgYXJndW1lbnQgZ3VhcmRzIHJlbW92YWw6IGRlbGV0ZSBvbmx5IHdoZW4gdGhlIHJlZ2lzdHJ5XG4gICAgLy8gc3RpbGwgaG9sZHMgdGhlIENBTExFUidTIHJlZ2lzdHJhdGlvbiwgc28gYW4gdW5tb3VudGluZyBpbnN0YW5jZSBjYW4gbmV2ZXJcbiAgICAvLyB3aXBlIGEgc2FtZS1uYW1lIHNpYmxpbmcncyBvciBzdWNjZXNzb3IncyBlbnRyeS5cbiAgICBjb25zdCB1bnJlZ2lzdGVyVHJhbnNmb3JtID0gdXNlTWVtb2l6ZWRGbigobmFtZSwgZm4pID0+IHtcbiAgICAgICAgaWYgKGZuID09PSB1bmRlZmluZWQgfHwgdHJhbnNmb3JtS2V5UmVmLmN1cnJlbnRbbmFtZV0gPT09IGZuKSB7XG4gICAgICAgICAgICBkZWxldGUgdHJhbnNmb3JtS2V5UmVmLmN1cnJlbnRbbmFtZV07XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCByZWdpc3RlclZhbHVlVHlwZSA9IHVzZU1lbW9pemVkRm4oKG5hbWUsIHZhbHVlVHlwZSkgPT4ge1xuICAgICAgICB2YWx1ZVR5cGVSZWYuY3VycmVudFtuYW1lXSA9IHZhbHVlVHlwZTtcbiAgICB9KTtcbiAgICBjb25zdCB1bnJlZ2lzdGVyVmFsdWVUeXBlID0gdXNlTWVtb2l6ZWRGbigobmFtZSwgdmFsdWVUeXBlKSA9PiB7XG4gICAgICAgIGlmICh2YWx1ZVR5cGUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZVR5cGVSZWYuY3VycmVudFtuYW1lXSA9PT0gdmFsdWVUeXBlKSB7XG4gICAgICAgICAgICBkZWxldGUgdmFsdWVUeXBlUmVmLmN1cnJlbnRbbmFtZV07XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBvbkZpbmlzaFJlZiA9IHVzZUxhdGVzdChvbkZpbmlzaCk7XG4gICAgY29uc3Qgb25Jbml0UmVmID0gdXNlTGF0ZXN0KG9uSW5pdCk7XG4gICAgY29uc3Qgb25Mb2FkaW5nQ2hhbmdlUmVmID0gdXNlTGF0ZXN0KG9uTG9hZGluZ0NoYW5nZSk7XG4gICAgLy8gU3VibWl0IHBpcGVsaW5lOiBkYXRlcyDihpIgZmllbGQgdHJhbnNmb3JtcyDihpIgb21pdE5pbFxuICAgIGNvbnN0IGFwcGx5UGlwZWxpbmUgPSB1c2VNZW1vaXplZEZuKCh2YWx1ZXMpID0+IHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IGZvcm1hdERhdGVWYWx1ZXModmFsdWVzLCBkYXRlRm9ybWF0dGVyLCB2YWx1ZVR5cGVSZWYuY3VycmVudCk7XG4gICAgICAgIHJlc3VsdCA9IHRyYW5zZm9ybVN1Ym1pdFZhbHVlcyhyZXN1bHQsIHRyYW5zZm9ybUtleVJlZi5jdXJyZW50KTtcbiAgICAgICAgaWYgKG9taXROaWwpXG4gICAgICAgICAgICByZXN1bHQgPSBvbWl0TmlsVmFsdWVzKHJlc3VsdCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSk7XG4gICAgLy8gU2FtZSBwaXBlbGluZSBXSVRIT1VUIG9taXROaWwg4oCUIHNpbmdsZS1maWVsZCByZWFkZXJzIG11c3Qgbm90IHNlZSBhIGZpZWxkXG4gICAgLy8gdmFuaXNoIGp1c3QgYmVjYXVzZSBpdHMgY3VycmVudCB2YWx1ZSBpcyBlbXB0eS5cbiAgICBjb25zdCBmb3JtYXRWYWx1ZXNLZWVwTmlsID0gdXNlTWVtb2l6ZWRGbigodmFsdWVzKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGZvcm1hdERhdGVWYWx1ZXModmFsdWVzLCBkYXRlRm9ybWF0dGVyLCB2YWx1ZVR5cGVSZWYuY3VycmVudCk7XG4gICAgICAgIHJldHVybiB0cmFuc2Zvcm1TdWJtaXRWYWx1ZXMocmVzdWx0LCB0cmFuc2Zvcm1LZXlSZWYuY3VycmVudCk7XG4gICAgfSk7XG4gICAgLy8g4pSA4pSAIFVSTCBzeW5jIChzeW5jVG9VcmwgLyBzeW5jVG9VcmxBc0ltcG9ydGFudCAvIGV4dHJhVXJsUGFyYW1zKSDilIDilIBcbiAgICBjb25zdCB7IHVybEluaXRpYWxWYWx1ZXMsIG9uVXJsU3luY0ZpbmlzaCwgb25VcmxTeW5jUmVzZXQgfSA9IHVzZVVybFN5bmMoe1xuICAgICAgICBzeW5jVG9VcmwsXG4gICAgICAgIGV4dHJhVXJsUGFyYW1zLFxuICAgIH0pO1xuICAgIC8vIGluaXRpYWxWYWx1ZXMgaXMgTU9VTlQtT05MWSAoZG9jdW1lbnRlZCBjb250cmFjdDsgdXNlRm9ybUNvcmUgcmUtZnJlZXplc1xuICAgIC8vIGFzIGEgc2FmZXR5IG5ldCkg4oCUIGNvbXB1dGUgdGhlIFVSTCBtZXJnZSBvbmNlIHNvIHRoZSBmcmVlemUgaXMgdmlzaWJsZVxuICAgIC8vIHdoZXJlIHRoZSBwcm9wcyBlbnRlciwgaW5zdGVhZCBvZiByZWNvbXB1dGluZyBkZWFkIHNwcmVhZHMgcGVyIHJlbmRlci5cbiAgICBjb25zdCBtZXJnZWRJbml0aWFsVmFsdWVzUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGlmIChtZXJnZWRJbml0aWFsVmFsdWVzUmVmLmN1cnJlbnQgPT09IG51bGwpIHtcbiAgICAgICAgbWVyZ2VkSW5pdGlhbFZhbHVlc1JlZi5jdXJyZW50ID0gc3luY1RvVXJsXG4gICAgICAgICAgICA/IChzeW5jVG9VcmxBc0ltcG9ydGFudFxuICAgICAgICAgICAgICAgID8gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBpbml0aWFsVmFsdWVzKSwgdXJsSW5pdGlhbFZhbHVlcykgOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHVybEluaXRpYWxWYWx1ZXMpLCBpbml0aWFsVmFsdWVzKSlcbiAgICAgICAgICAgIDogKGluaXRpYWxWYWx1ZXMgIT09IG51bGwgJiYgaW5pdGlhbFZhbHVlcyAhPT0gdm9pZCAwID8gaW5pdGlhbFZhbHVlcyA6IHt9KTtcbiAgICB9XG4gICAgY29uc3QgbWVyZ2VkSW5pdGlhbFZhbHVlcyA9IG1lcmdlZEluaXRpYWxWYWx1ZXNSZWYuY3VycmVudDtcbiAgICAvLyBCdW1wZWQgb24gZXZlcnkgcmVzZXQg4oCUIGFuIGluLWZsaWdodCBzdWJtaXQgY2FwdHVyZXMgaXQgYW5kIGFib3J0cyB3aGVuXG4gICAgLy8gaXQgY2hhbmdlZCB1bmRlcm5lYXRoICh0aGUgdXNlciBkaXNjYXJkZWQgdGhlIHN1Ym1pc3Npb24ncyB2YWx1ZXMpLlxuICAgIGNvbnN0IHJlc2V0RXBvY2hSZWYgPSB1c2VSZWYoMCk7XG4gICAgLy8gUmVzZXQgY2hhaW46IGZvcm0tbGV2ZWwgb25SZXNldCByZWNlaXZlcyB0aGUgKHBvc3QtcmVzZXQpIGZvcm1hdHRlZFxuICAgIC8vIHZhbHVlcywgdGhlbiB0aGUgZm9ybSdzIG93biBVUkwgcGFyYW1zIGFyZSBjbGVhcmVkLiB1c2VNZW1vaXplZEZuIGRlZmVyc1xuICAgIC8vIGV4ZWN1dGlvbiB0byBldmVudCB0aW1lLCB3aGVuIGBmb3JtSW5zdGFuY2VgIChjcmVhdGVkIGp1c3QgYmVsb3cpIGV4aXN0cy5cbiAgICBjb25zdCBmaXJlRm9ybVJlc2V0ID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIHJlc2V0RXBvY2hSZWYuY3VycmVudCArPSAxO1xuICAgICAgICBjb25zdCBmaW5hbFZhbHVlcyA9IGFwcGx5UGlwZWxpbmUoZm9ybUluc3RhbmNlLmdldEZpZWxkc1ZhbHVlKCkpO1xuICAgICAgICBvblJlc2V0ID09PSBudWxsIHx8IG9uUmVzZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uUmVzZXQoZmluYWxWYWx1ZXMpO1xuICAgICAgICBvblVybFN5bmNSZXNldCgpO1xuICAgIH0pO1xuICAgIC8vIOKUgOKUgCBGb3JtIGVuZ2luZSAodXNlRm9ybSB3aXRoIGFzeW5jIHZhbGlkYXRpb24pIOKUgOKUgFxuICAgIGNvbnN0IHsgZm9ybUluc3RhbmNlLCBpbnRlcm5hbHMsIHN0b3JlIH0gPSB1c2VGb3JtKHtcbiAgICAgICAgaW5pdGlhbFZhbHVlczogbWVyZ2VkSW5pdGlhbFZhbHVlcyxcbiAgICAgICAgb25WYWx1ZXNDaGFuZ2UsXG4gICAgICAgIG9uUmVzZXQ6IGZpcmVGb3JtUmVzZXQsXG4gICAgICAgIHNpemUsXG4gICAgICAgIGxhYmVsQWxpZ24sXG4gICAgICAgIGRpc2FibGVkLFxuICAgICAgICB2YWxpZGF0ZVRyaWdnZXIsXG4gICAgfSk7XG4gICAgLy8g4pSA4pSAIEFzeW5jIHN1Ym1pdCB3aXRoIHRyYW5zZm9ybSBwaXBlbGluZSDilIDilIBcbiAgICAvLyBSZS1lbnRyeSBndWFyZDogYSBzZWNvbmQgc3VibWl0IHdoaWxlIG9uZSBpcyBpbiBmbGlnaHQgaXMgaWdub3JlZCAodGhlXG4gICAgLy8gcmVmIGNhdGNoZXMgdHdvIGNhbGxzIGluIHRoZSBzYW1lIHRpY2spLlxuICAgIGNvbnN0IHdyYXBwZWRIYW5kbGVTdWJtaXQgPSB1c2VFdmVudENhbGxiYWNrKChlKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgIGUgPT09IG51bGwgfHwgZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAoc3VibWl0dGluZ1JlZi5jdXJyZW50KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBzdWJtaXR0aW5nUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICBzZXRTdWJtaXR0aW5nKHRydWUpO1xuICAgICAgICAoX2EgPSBvbkxvYWRpbmdDaGFuZ2VSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwob25Mb2FkaW5nQ2hhbmdlUmVmLCB0cnVlKTtcbiAgICAgICAgY29uc3QgZXBvY2ggPSByZXNldEVwb2NoUmVmLmN1cnJlbnQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCB2YWxpZGF0ZWRWYWx1ZXMgPSB5aWVsZCBmb3JtSW5zdGFuY2UudmFsaWRhdGVGaWVsZHMoKTtcbiAgICAgICAgICAgIC8vIEEgcmVzZXQgZHVyaW5nIChhc3luYykgdmFsaWRhdGlvbiBkaXNjYXJkcyB0aGlzIHN1Ym1pc3Npb24gZW50aXJlbHk6XG4gICAgICAgICAgICAvLyB2YWxpZGF0ZUZpZWxkcyByZS1yZWFkcyB0aGUgbGl2ZSBzdG9yZSwgc28gcHJvY2VlZGluZyB3b3VsZCBoYW5kXG4gICAgICAgICAgICAvLyBvbkZpbmlzaCB0aGUgUE9TVC1yZXNldCB2YWx1ZXMuXG4gICAgICAgICAgICBpZiAoZXBvY2ggIT09IHJlc2V0RXBvY2hSZWYuY3VycmVudClcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBjb25zdCBwaXBlbGluZWQgPSBhcHBseVBpcGVsaW5lKHZhbGlkYXRlZFZhbHVlcyk7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB5aWVsZCAoKF9iID0gb25GaW5pc2hSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwob25GaW5pc2hSZWYsIHBpcGVsaW5lZCkpO1xuICAgICAgICAgICAgLy8gU3luYyB0aGUgVVJMIHVubGVzcyBvbkZpbmlzaCBleHBsaWNpdGx5IHJldHVybmVkIGZhbHNlIChhIHRocm93IGFib3ZlXG4gICAgICAgICAgICAvLyBhbHNvIHNraXBzIOKAlCBhIGZhaWxlZCBzdWJtaXQgbXVzdCBub3QgcG9sbHV0ZSB0aGUgVVJMKSwgYW5kIG9ubHkgaWZcbiAgICAgICAgICAgIC8vIHRoZSB1c2VyIGRpZCBOT1QgcmVzZXQgdGhlIGZvcm0gd2hpbGUgdGhlIHN1Ym1pdCB3YXMgaW4gZmxpZ2h0LlxuICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gZmFsc2UgJiYgZXBvY2ggPT09IHJlc2V0RXBvY2hSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgICAgIG9uVXJsU3luY0ZpbmlzaChwaXBlbGluZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIC8vIEEgcmVzZXQgZHVyaW5nIHZhbGlkYXRpb24gYWxzbyBpbnZhbGlkYXRlcyB0aGUgRkFJTFVSRSBjYWxsYmFjayDigJRcbiAgICAgICAgICAgIC8vIHRoZSBlcnJvciBjYXJyaWVzIHBvc3QtcmVzZXQgdmFsdWVzIGZvciBhIGRpc2NhcmRlZCBzdWJtaXNzaW9uLlxuICAgICAgICAgICAgLy8gKEZpZWxkIGVycm9ycyBmcm9tIHRoZSBkZWFkIHZhbGlkYXRpb24gYXJlIHN1cHByZXNzZWQgYnkgdGhlXG4gICAgICAgICAgICAvLyBwZXItZmllbGQgdmFsaWRhdGlvbiBlcG9jaHM6IHJlc2V0RmllbGRzIGludmFsaWRhdGVzIGluLWZsaWdodCBydW5zLilcbiAgICAgICAgICAgIGlmIChlcG9jaCAhPT0gcmVzZXRFcG9jaFJlZi5jdXJyZW50KVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIC8vIE9ubHkgYSBWQUxJREFUSU9OIGZhaWx1cmUgcm91dGVzIHRvIG9uRmluaXNoRmFpbGVkLiBBbiBleGNlcHRpb24gb3V0XG4gICAgICAgICAgICAvLyBvZiB0aGUgY29uc3VtZXIncyBvd24gb25GaW5pc2ggaXMgbm90IGEgdmFsaWRhdGlvbiByZXN1bHQ6IHRoZSBzdWJtaXRcbiAgICAgICAgICAgIC8vIGZhaWxzIChVUkwgdW50b3VjaGVkLCBvdmVybGF5IHN0YXlzIG9wZW4pIGFuZCB0aGUgZXJyb3IgaXMgc3VyZmFjZWRcbiAgICAgICAgICAgIC8vIG9uIHRoZSBjb25zb2xlIGluc3RlYWQgb2YgYmVpbmcgbWlzcmVwb3J0ZWQgd2l0aCBhbiBlbXB0eSBwYXlsb2FkLlxuICAgICAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEZvcm1WYWxpZGF0aW9uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBvbkZpbmlzaEZhaWxlZCA9PT0gbnVsbCB8fCBvbkZpbmlzaEZhaWxlZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25GaW5pc2hGYWlsZWQoeyB2YWx1ZXM6IGVyci52YWx1ZXMsIGVycm9yczogZXJyLmVycm9ycyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tQcm9Gb3JtXSBvbkZpbmlzaCB0aHJldyBkdXJpbmcgc3VibWl0OicsIGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICBzdWJtaXR0aW5nUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgIHNldFN1Ym1pdHRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgKF9jID0gb25Mb2FkaW5nQ2hhbmdlUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5jYWxsKG9uTG9hZGluZ0NoYW5nZVJlZiwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgfSkpO1xuICAgIC8vIOKUgOKUgCBQcm9Gb3JtIGluc3RhbmNlOiBzdXBlcnNldCBvZiBGb3JtSW5zdGFuY2Ug4pSA4pSAXG4gICAgY29uc3QgcHJvRm9ybUZvcm1JbnN0YW5jZSA9IHVzZU1lbW8oKCkgPT4gKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZm9ybUluc3RhbmNlKSwgeyBnZXRGaWVsZHNGb3JtYXRWYWx1ZTogKCkgPT4gYXBwbHlQaXBlbGluZShmb3JtSW5zdGFuY2UuZ2V0RmllbGRzVmFsdWUoKSksIGdldEZpZWxkRm9ybWF0VmFsdWU6ICgobmFtZSkgPT4gcmVzb2x2ZVZhbHVlKGZvcm1hdFZhbHVlc0tlZXBOaWwoZm9ybUluc3RhbmNlLmdldEZpZWxkc1ZhbHVlKCkpLCBuYW1lKSksIGdldEZpZWxkRm9ybWF0VmFsdWVPYmplY3Q6IChuYW1lKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBmb3JtYXRWYWx1ZXNLZWVwTmlsKGZvcm1JbnN0YW5jZS5nZXRGaWVsZHNWYWx1ZSgpKTtcbiAgICAgICAgICAgIGlmICghbmFtZSlcbiAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0dGVkO1xuICAgICAgICAgICAgLy8gQSBuZXN0ZWQgb2JqZWN0IGNhcnJ5aW5nIE9OTFkgdGhlIHJlcXVlc3RlZCBsZWFmIOKAlCBub3QgdGhlIHdob2xlXG4gICAgICAgICAgICAvLyB0b3AtbGV2ZWwgc3VidHJlZSB0aGUgcGF0aCBoYXBwZW5zIHRvIGxpdmUgaW4uXG4gICAgICAgICAgICByZXR1cm4gc2V0TmVzdGVkVmFsdWUoe30sIG5hbWUsIHJlc29sdmVWYWx1ZShmb3JtYXR0ZWQsIG5hbWUpKTtcbiAgICAgICAgfSwgdmFsaWRhdGVGaWVsZHNSZXR1cm5Gb3JtYXRWYWx1ZTogKCkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHMgPSB5aWVsZCBmb3JtSW5zdGFuY2UudmFsaWRhdGVGaWVsZHMoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlLCB2YWx1ZXM6IGFwcGx5UGlwZWxpbmUodmFscykgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAvLyB2YWxpZGF0ZUZpZWxkcyByZWplY3RzIHdpdGggYW4gRXJyb3IgY2FycnlpbmcgdGhlIGZpZWxkIGVycm9ycyBtYXBcbiAgICAgICAgICAgICAgICAvLyAoc2FtZSBzaGFwZSB3cmFwcGVkSGFuZGxlU3VibWl0IGNvbnN1bWVzIGFib3ZlKS5cbiAgICAgICAgICAgICAgICBjb25zdCB7IGVycm9ycyB9ID0gZXJyO1xuICAgICAgICAgICAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IGZhbHNlLCBlcnJvcnM6IGVycm9ycyAhPT0gbnVsbCAmJiBlcnJvcnMgIT09IHZvaWQgMCA/IGVycm9ycyA6IHt9IH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLCBzdWJtaXRGb3JtOiB3cmFwcGVkSGFuZGxlU3VibWl0IH0pKSwgW2Zvcm1JbnN0YW5jZSwgYXBwbHlQaXBlbGluZSwgd3JhcHBlZEhhbmRsZVN1Ym1pdF0pO1xuICAgIC8vIOKUgOKUgCBTeW5jIHRvIGZvcm1SZWYgcHJvcCDilIDilIBcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoZm9ybVJlZikge1xuICAgICAgICAgICAgZm9ybVJlZi5jdXJyZW50ID0gcHJvRm9ybUZvcm1JbnN0YW5jZTtcbiAgICAgICAgfVxuICAgIH0sIFtmb3JtUmVmLCBwcm9Gb3JtRm9ybUluc3RhbmNlXSk7XG4gICAgLy8g4pSA4pSAIHJlcXVlc3QgLyBwYXJhbXMgYXV0by1sb2FkIOKUgOKUgFxuICAgIGNvbnN0IHJlcXVlc3RSZWYgPSB1c2VMYXRlc3QocmVxdWVzdCk7XG4gICAgY29uc3QgaGFzUmVxdWVzdCA9ICEhcmVxdWVzdDtcbiAgICBjb25zdCBzZXJpYWxpemVkUGFyYW1zID0gdXNlTWVtbygoKSA9PiBzdGFibGVTZXJpYWxpemUocGFyYW1zKSwgW3BhcmFtc10pO1xuICAgIC8vIG9uSW5pdCBmaXJlcyBleGFjdGx5IG9uY2U6IGFmdGVyIHRoZSBGSVJTVCByZXF1ZXN0IHJlc29sdmVzIHdoZW4gYVxuICAgIC8vIHJlcXVlc3QgaXMgY29uZmlndXJlZCwgb3RoZXJ3aXNlIHJpZ2h0IGFmdGVyIG1vdW50LlxuICAgIGNvbnN0IGluaXRGaXJlZFJlZiA9IHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3QgZmlyZUluaXQgPSB1c2VNZW1vaXplZEZuKCgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoaW5pdEZpcmVkUmVmLmN1cnJlbnQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGluaXRGaXJlZFJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgKF9hID0gb25Jbml0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKG9uSW5pdFJlZiwgYXBwbHlQaXBlbGluZShmb3JtSW5zdGFuY2UuZ2V0RmllbGRzVmFsdWUoKSksIHByb0Zvcm1Gb3JtSW5zdGFuY2UpO1xuICAgIH0pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIC8vIFN0YWxlbmVzcyBndWFyZDogaWYgcGFyYW1zIGNoYW5nZSBhZ2FpbiBiZWZvcmUgdGhpcyBmZXRjaCByZXNvbHZlcywgdGhlXG4gICAgICAgIC8vIGNsZWFudXAgbWFya3MgaXQgc3RhbGUgc28gdGhlIGxhdGUgcmVzcG9uc2UgY2FuJ3Qgb3ZlcndyaXRlIHRoZSB2YWx1ZXNcbiAgICAgICAgLy8gYSBuZXdlciByZXF1ZXN0IGFscmVhZHkgKG9yIHdpbGwpIHNldC5cbiAgICAgICAgbGV0IHN0YWxlID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IGZldGNoRGF0YSA9ICgpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3QgcmVxdWVzdEZuID0gcmVxdWVzdFJlZi5jdXJyZW50O1xuICAgICAgICAgICAgaWYgKCFyZXF1ZXN0Rm4pXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgc2V0UmVxdWVzdExvYWRpbmcodHJ1ZSk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSB5aWVsZCByZXF1ZXN0Rm4ocGFyYW1zKTtcbiAgICAgICAgICAgICAgICBpZiAoIXN0YWxlICYmIGRhdGEgJiYgdHlwZW9mIGRhdGEgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1JbnN0YW5jZS5zZXRGaWVsZHNWYWx1ZShkYXRhKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgLy8gQSBmYWlsZWQgcmVxdWVzdCBtdXN0IG5vdCBlc2NhcGUgYXMgYW4gdW5oYW5kbGVkIHJlamVjdGlvbiDigJQgdGhlXG4gICAgICAgICAgICAgICAgLy8gZm9ybSBrZWVwcyBpdHMgaW5pdGlhbFZhbHVlcyBhbmQgdGhlIGZhaWx1cmUgaXMgc3VyZmFjZWQgb24gdGhlXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZSAobWlycm9ycyB0aGUgZmllbGQtbGV2ZWwgdXNlRmllbGRSZXF1ZXN0IGhhbmRsaW5nKS5cbiAgICAgICAgICAgICAgICBpZiAoIXN0YWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tQcm9Gb3JtXSByZXF1ZXN0IGZhaWxlZDonLCBlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIGlmICghc3RhbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0UmVxdWVzdExvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IGEgTk9OLXN1cGVyc2VkZWQgc2V0dGxlIGluaXRpYWxpemVzIHRoZSBmb3JtOiBhIHN0YWxlXG4gICAgICAgICAgICAgICAgICAgIC8vIHJlcXVlc3QncyBkYXRhIHdhcyBkaXNjYXJkZWQsIHNvIGl0cyB2YWx1ZXMgbXVzdCBub3QgYmUgcmVwb3J0ZWQuXG4gICAgICAgICAgICAgICAgICAgIGZpcmVJbml0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHJlcXVlc3RSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgZmV0Y2hEYXRhKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBmaXJlSW5pdCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBzdGFsZSA9IHRydWU7XG4gICAgICAgIH07XG4gICAgICAgIC8vIFJlLWZldGNoIHdoZW4gcGFyYW1zIGNoYW5nZSBieSBWQUxVRSAoZGVwZW5kaW5nIG9uIHRoZSByYXcgYHBhcmFtc2BcbiAgICAgICAgLy8gcmVmZXJlbmNlIHdvdWxkIHJlLXJ1biBvbiBldmVyeSByZW5kZXIgZm9yIGlubGluZSBvYmplY3QgbGl0ZXJhbHMgYW5kLFxuICAgICAgICAvLyBjb21iaW5lZCB3aXRoIHRoZSBsb2FkaW5nIHNldFN0YXRlLCBsb29wIGZvcmV2ZXIpIOKAlCBhbmQgd2hlbiBgcmVxdWVzdGBcbiAgICAgICAgLy8gZmlyc3QgYmVjb21lcyBkZWZpbmVkIChlLmcuIGJlaGluZCBhIGZlYXR1cmUgZmxhZyksIG1pcnJvcmluZ1xuICAgICAgICAvLyB1c2VGaWVsZFJlcXVlc3QuIGZpcmVJbml0J3Mgb25jZS1ndWFyZCBrZWVwcyBvbkluaXQgZnJvbSByZS1maXJpbmcuXG4gICAgfSwgW3NlcmlhbGl6ZWRQYXJhbXMsIGhhc1JlcXVlc3RdKTtcbiAgICAvLyDilIDilIAgYXV0b0ZvY3VzRmlyc3RJbnB1dCDilIDilIBcbiAgICBjb25zdCBmb3JtRWxSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoIWF1dG9Gb2N1c0ZpcnN0SW5wdXQgfHwgbW9kZSA9PT0gJ3JlYWQnKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBmaXJzdElucHV0ID0gKF9hID0gZm9ybUVsUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5xdWVyeVNlbGVjdG9yKCdpbnB1dDpub3QoW3R5cGU9XCJoaWRkZW5cIl0pOm5vdChbZGlzYWJsZWRdKSwgdGV4dGFyZWE6bm90KFtkaXNhYmxlZF0pLCBzZWxlY3Q6bm90KFtkaXNhYmxlZF0pJyk7XG4gICAgICAgIGZpcnN0SW5wdXQgPT09IG51bGwgfHwgZmlyc3RJbnB1dCA9PT0gdm9pZCAwID8gdm9pZCAwIDogZmlyc3RJbnB1dC5mb2N1cygpO1xuICAgICAgICAvLyBNb3VudC1vbmx5IGJ5IGRlc2lnbi5cbiAgICB9LCBbXSk7XG4gICAgLy8g4pSA4pSAIFNwbGl0IGNvbnRleHQg4pSA4pSAXG4gICAgLy8gRm9ybS1sZXZlbCBwcm9wIGJhZ3MgYXJlIG9mdGVuIGlubGluZSBsaXRlcmFsczoga2VlcCB0aGVpciBpZGVudGl0eVxuICAgIC8vIHN0YWJsZSB3aGlsZSBzaGFsbG93LWVxdWFsIHNvIHRoZSBzdGFibGUgc2xpY2UgZG9lc24ndCBjaHVybiBwZXIgcmVuZGVyLlxuICAgIGNvbnN0IHN0YWJsZUZpZWxkUHJvcHMgPSB1c2VTaGFsbG93U3RhYmxlKGZpZWxkUHJvcHMpO1xuICAgIGNvbnN0IHN0YWJsZUZvcm1JdGVtUHJvcHMgPSB1c2VTaGFsbG93U3RhYmxlKGZvcm1JdGVtUHJvcHMpO1xuICAgIGNvbnN0IHN0YWJsZUNvbFByb3BzID0gdXNlU2hhbGxvd1N0YWJsZShjb2xQcm9wcyk7XG4gICAgY29uc3Qgc3RhYmxlTGF5b3V0ID0gdXNlU2hhbGxvd1N0YWJsZShsYXlvdXQpO1xuICAgIC8vIFN0YWJsZSBzbGljZTogY29uZmlndXJhdGlvbiArIGlkZW50aXR5LXN0YWJsZSBkaXNwYXRjaGVycy9pbnN0YW5jZS5cbiAgICAvLyBDaGFuZ2VzIG9ubHkgd2hlbiBmb3JtLWxldmVsIHByb3BzIGNoYW5nZSDigJQgTk9UIG9uIGtleXN0cm9rZXMsIHNvXG4gICAgLy8gc3Vic2NyaWJlcnMgbGlrZSBTdWJtaXR0ZXIgYW5kIHRoZSBmaWVsZCBmYWN0b3JpZXMgc2tpcCB0aG9zZSByZW5kZXJzLlxuICAgIGNvbnN0IHN0YWJsZVZhbHVlID0gdXNlTWVtbygoKSA9PiAoe1xuICAgICAgICBmb3JtSW5zdGFuY2U6IHByb0Zvcm1Gb3JtSW5zdGFuY2UsXG4gICAgICAgIHNldEZpZWxkVmFsdWU6IGludGVybmFscy5zZXRGaWVsZFZhbHVlLFxuICAgICAgICBzZXRGaWVsZEVycm9yOiBpbnRlcm5hbHMuc2V0RmllbGRFcnJvcixcbiAgICAgICAgc2V0RmllbGRXYXJuaW5nOiBpbnRlcm5hbHMuc2V0RmllbGRXYXJuaW5nLFxuICAgICAgICB2YWxpZGF0ZUZpZWxkQXN5bmM6IGludGVybmFscy52YWxpZGF0ZUZpZWxkQXN5bmMsXG4gICAgICAgIHJlZ2lzdGVyRmllbGQ6IGludGVybmFscy5yZWdpc3RlckZpZWxkLFxuICAgICAgICB1bnJlZ2lzdGVyRmllbGQ6IGludGVybmFscy51bnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIHJldGFpbkZpZWxkOiBpbnRlcm5hbHMucmV0YWluRmllbGQsXG4gICAgICAgIHJlbGVhc2VGaWVsZDogaW50ZXJuYWxzLnJlbGVhc2VGaWVsZCxcbiAgICAgICAgc2l6ZSxcbiAgICAgICAgbGFiZWxBbGlnbixcbiAgICAgICAgLy8gU3VibWl0dGluZy9sb2FkaW5nIGRvZXMgTk9UIGRpc2FibGUgZmllbGRzIOKAlCBvbmx5IHRoZVxuICAgICAgICAvLyBleHBsaWNpdCBgZGlzYWJsZWRgIHByb3AgZG9lcy4gS2VlcGluZyBpc0xvYWRpbmcgb3V0IG9mIHRoaXMgc2xpY2VcbiAgICAgICAgLy8gbWVhbnMgYSBzdWJtaXQgY3ljbGUgbm8gbG9uZ2VyIHJlLXJlbmRlcnMgZXZlcnkgZmllbGQgc2hlbGwuXG4gICAgICAgIGRpc2FibGVkLFxuICAgICAgICB2YWxpZGF0ZVRyaWdnZXIsXG4gICAgICAgIC8vIFByb0Zvcm0gc3BlY2lmaWNzXG4gICAgICAgIG1vZGUsXG4gICAgICAgIGdyaWQsXG4gICAgICAgIGNvbFByb3BzOiBzdGFibGVDb2xQcm9wcyAhPT0gbnVsbCAmJiBzdGFibGVDb2xQcm9wcyAhPT0gdm9pZCAwID8gc3RhYmxlQ29sUHJvcHMgOiBERUZBVUxUX0NPTF9QUk9QUyxcbiAgICAgICAgcmVnaXN0ZXJUcmFuc2Zvcm06IHJlZ2lzdGVyVHJhbnNmb3JtLFxuICAgICAgICB1bnJlZ2lzdGVyVHJhbnNmb3JtOiB1bnJlZ2lzdGVyVHJhbnNmb3JtLFxuICAgICAgICByZWdpc3RlclZhbHVlVHlwZSxcbiAgICAgICAgdW5yZWdpc3RlclZhbHVlVHlwZSxcbiAgICAgICAgZmllbGRQcm9wczogc3RhYmxlRmllbGRQcm9wcyxcbiAgICAgICAgZm9ybUl0ZW1Qcm9wczogc3RhYmxlRm9ybUl0ZW1Qcm9wcyxcbiAgICAgICAgbGF5b3V0OiBzdGFibGVMYXlvdXQsXG4gICAgICAgIGZvcm1Db21wb25lbnRUeXBlLFxuICAgIH0pLCBbXG4gICAgICAgIHByb0Zvcm1Gb3JtSW5zdGFuY2UsXG4gICAgICAgIGludGVybmFscy5zZXRGaWVsZFZhbHVlLFxuICAgICAgICBpbnRlcm5hbHMuc2V0RmllbGRFcnJvcixcbiAgICAgICAgaW50ZXJuYWxzLnNldEZpZWxkV2FybmluZyxcbiAgICAgICAgaW50ZXJuYWxzLnZhbGlkYXRlRmllbGRBc3luYyxcbiAgICAgICAgaW50ZXJuYWxzLnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIGludGVybmFscy51bnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIGludGVybmFscy5yZXRhaW5GaWVsZCxcbiAgICAgICAgaW50ZXJuYWxzLnJlbGVhc2VGaWVsZCxcbiAgICAgICAgc2l6ZSxcbiAgICAgICAgbGFiZWxBbGlnbixcbiAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgIHZhbGlkYXRlVHJpZ2dlcixcbiAgICAgICAgbW9kZSxcbiAgICAgICAgZ3JpZCxcbiAgICAgICAgc3RhYmxlQ29sUHJvcHMsXG4gICAgICAgIHJlZ2lzdGVyVHJhbnNmb3JtLFxuICAgICAgICB1bnJlZ2lzdGVyVHJhbnNmb3JtLFxuICAgICAgICByZWdpc3RlclZhbHVlVHlwZSxcbiAgICAgICAgdW5yZWdpc3RlclZhbHVlVHlwZSxcbiAgICAgICAgc3RhYmxlRmllbGRQcm9wcyxcbiAgICAgICAgc3RhYmxlRm9ybUl0ZW1Qcm9wcyxcbiAgICAgICAgc3RhYmxlTGF5b3V0LFxuICAgICAgICBmb3JtQ29tcG9uZW50VHlwZSxcbiAgICBdKTtcbiAgICBjb25zdCBXcmFwcGVyQ29tcG9uZW50ID0gZ3JpZCA/IFJvdyA6IEZyYWdtZW50O1xuICAgIGNvbnN0IHdyYXBwZXJQcm9wcyA9IGdyaWQgPyBPYmplY3QuYXNzaWduKHt9LCByb3dQcm9wcykgOiB7fTtcbiAgICAvLyBSZXNldCBjYWxsYmFjayBjaGFpbjogdGhlIFN1Ym1pdHRlciByZXNldHMgdGhlIHZhbHVlcyBmaXJzdCwgdGhlbiB0aGVcbiAgICAvLyBzdWJtaXR0ZXItbGV2ZWwgb25SZXNldCwgdGhlbiB0aGUgZm9ybS1sZXZlbCBvblJlc2V0ICh3aXRoIGZpbmFsVmFsdWVzKVxuICAgIC8vIGFuZCB0aGUgVVJMIGNsZWFudXAg4oCUIGZpcmVkIGV4YWN0bHkgb25jZSBwZXIgcmVzZXQgYWN0aW9uLlxuICAgIGNvbnN0IGhhbmRsZVN1Ym1pdHRlclJlc2V0ID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKHR5cGVvZiBzdWJtaXR0ZXIgPT09ICdvYmplY3QnKVxuICAgICAgICAgICAgKF9hID0gc3VibWl0dGVyLm9uUmVzZXQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKHN1Ym1pdHRlcik7XG4gICAgICAgIGZpcmVGb3JtUmVzZXQoKTtcbiAgICB9KTtcbiAgICBjb25zdCBzdWJtaXR0ZXJOb2RlID0gc3VibWl0dGVyICE9PSBmYWxzZSAmJiBtb2RlICE9PSAncmVhZCcgPyAoX2pzeChTdWJtaXR0ZXIsIE9iamVjdC5hc3NpZ24oe30sICh0eXBlb2Ygc3VibWl0dGVyID09PSAnb2JqZWN0JyA/IHN1Ym1pdHRlciA6IHt9KSwgeyBvblJlc2V0OiBoYW5kbGVTdWJtaXR0ZXJSZXNldCwgbG9hZGluZzogaXNMb2FkaW5nIH0pKSkgOiBudWxsO1xuICAgIHJldHVybiAoX2pzeChQcm9Gb3JtU3RhYmxlQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogc3RhYmxlVmFsdWUsIGNoaWxkcmVuOiBfanN4KFByb0Zvcm1TdGF0ZUNvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IHN0b3JlLCBjaGlsZHJlbjogX2pzeHMoXCJmb3JtXCIsIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHsgcmVmOiBmb3JtRWxSZWYsIGNsYXNzTmFtZTogZm9ybUNsYXNzZXModW5kZWZpbmVkLCBqb2luQ2xzKGNsYXNzZXMoKSwgY2xhc3NOYW1lKSksIG9uU3VibWl0OiB3cmFwcGVkSGFuZGxlU3VibWl0LCBvblJlc2V0OiBpbnRlcm5hbHMuaGFuZGxlUmVzZXQsIGNoaWxkcmVuOiBbX2pzeChXcmFwcGVyQ29tcG9uZW50LCBPYmplY3QuYXNzaWduKHt9LCB3cmFwcGVyUHJvcHMsIHsgY2hpbGRyZW46IGNoaWxkcmVuIH0pKSwgc3VibWl0dGVyTm9kZV0gfSkpIH0pIH0pKTtcbn07XG5Qcm9Gb3JtQmFzZS5kaXNwbGF5TmFtZSA9ICdQcm9Gb3JtJztcbmV4cG9ydCBjb25zdCBQcm9Gb3JtID0gbWVtbyhQcm9Gb3JtQmFzZSk7XG5leHBvcnQgZGVmYXVsdCBQcm9Gb3JtOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|
|
520
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtLmpzIiwiY29tcG9uZW50cy9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL1Byb0Zvcm0udHN4Il0sIm5hbWVzIjpbIl9qc3hSdW50aW1lIiwicmVxdWlyZSIsIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX3VzZUxhdGVzdCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdXNlU2FmZVN0YXRlNSIsIl91c2VNZW1vaXplZEZuIiwiX3VzZUV2ZW50Q2FsbGJhY2siLCJfY2xhc3NuYW1lcyIsIl9HcmlkIiwiX3VzZUZvcm0yIiwiX2NvbnRleHQ0IiwiX1N1Ym1pdHRlciIsIl9jb25zdGFudHMiLCJfdXRpbHMiLCJfZm9ybVN0b3JlIiwiX3VzZVVybFN5bmMyIiwiX3BhdGhVdGlscyIsIl92YWxpZGF0aW9uRXJyb3IiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YzIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiX19hd2FpdGVyIiwidGhpc0FyZyIsIl9hcmd1bWVudHMiLCJQIiwiZ2VuZXJhdG9yIiwiYWRvcHQiLCJ2YWx1ZSIsInJlc29sdmUiLCJQcm9taXNlIiwicmVqZWN0IiwiZnVsZmlsbGVkIiwic3RlcCIsIm5leHQiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiYXBwbHkiLCJfX3Jlc3QiLCJzIiwicCIsInByb3RvdHlwZSIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImNsYXNzZXMiLCJjbGFzc25hbWVzIiwiQ1NTX1BSRUZJWCIsImZvcm1DbGFzc2VzIiwiREVGQVVMVF9DT0xfUFJPUFMiLCJzcGFuIiwiREVGQVVMVF9DT0xfU1BBTiIsIlByb0Zvcm1CYXNlIiwicHJvcHMiLCJjaGlsZHJlbiIsImNsYXNzTmFtZSIsInN1Ym1pdHRlciIsIl9wcm9wcyRtb2RlIiwibW9kZSIsIl9wcm9wcyRncmlkIiwiZ3JpZCIsImNvbFByb3BzIiwicm93UHJvcHMiLCJfcHJvcHMkbG9hZGluZyIsImxvYWRpbmciLCJyZXF1ZXN0IiwicGFyYW1zIiwiaW5pdGlhbFZhbHVlcyIsIm9uRmluaXNoIiwib25GaW5pc2hGYWlsZWQiLCJvblZhbHVlc0NoYW5nZSIsIm9uUmVzZXQiLCJvbkluaXQiLCJvbkxvYWRpbmdDaGFuZ2UiLCJzeW5jVG9VcmwiLCJfcHJvcHMkc3luY1RvVXJsQXNJbXAiLCJzeW5jVG9VcmxBc0ltcG9ydGFudCIsImV4dHJhVXJsUGFyYW1zIiwiX3Byb3BzJGF1dG9Gb2N1c0ZpcnN0IiwiYXV0b0ZvY3VzRmlyc3RJbnB1dCIsImZvcm1Db21wb25lbnRUeXBlIiwiZm9ybVJlZiIsIl9wcm9wcyRvbWl0TmlsIiwib21pdE5pbCIsIl9wcm9wcyRkYXRlRm9ybWF0dGVyIiwiZGF0ZUZvcm1hdHRlciIsImZpZWxkUHJvcHMiLCJmb3JtSXRlbVByb3BzIiwibGF5b3V0IiwiX3Byb3BzJHNpemUiLCJzaXplIiwiX3Byb3BzJGxhYmVsQWxpZ24iLCJsYWJlbEFsaWduIiwiX3Byb3BzJGRpc2FibGVkIiwiZGlzYWJsZWQiLCJfcHJvcHMkdmFsaWRhdGVUcmlnZ2UiLCJ2YWxpZGF0ZVRyaWdnZXIiLCJfcHJlZml4Q2xzIiwicHJlZml4Q2xzIiwicmVzdCIsIl91c2VTYWZlU3RhdGUiLCJ1c2VTYWZlU3RhdGUiLCJfdXNlU2FmZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsInJlcXVlc3RMb2FkaW5nIiwic2V0UmVxdWVzdExvYWRpbmciLCJfdXNlU2FmZVN0YXRlMyIsIl91c2VTYWZlU3RhdGU0Iiwic3VibWl0dGluZyIsInNldFN1Ym1pdHRpbmciLCJzdWJtaXR0aW5nUmVmIiwidXNlUmVmIiwiaXNMb2FkaW5nIiwidHJhbnNmb3JtS2V5UmVmIiwidmFsdWVUeXBlUmVmIiwicmVnaXN0ZXJUcmFuc2Zvcm0iLCJ1c2VNZW1vaXplZEZuIiwibmFtZSIsImZuIiwiY3VycmVudCIsInVucmVnaXN0ZXJUcmFuc2Zvcm0iLCJ1bmRlZmluZWQiLCJyZWdpc3RlclZhbHVlVHlwZSIsInZhbHVlVHlwZSIsInVucmVnaXN0ZXJWYWx1ZVR5cGUiLCJvbkZpbmlzaFJlZiIsInVzZUxhdGVzdCIsIm9uSW5pdFJlZiIsIm9uTG9hZGluZ0NoYW5nZVJlZiIsImFwcGx5UGlwZWxpbmUiLCJ2YWx1ZXMiLCJmb3JtYXREYXRlVmFsdWVzIiwidHJhbnNmb3JtU3VibWl0VmFsdWVzIiwib21pdE5pbFZhbHVlcyIsImZvcm1hdFZhbHVlc0tlZXBOaWwiLCJfdXNlVXJsU3luYyIsInVzZVVybFN5bmMiLCJ1cmxJbml0aWFsVmFsdWVzIiwib25VcmxTeW5jRmluaXNoIiwib25VcmxTeW5jUmVzZXQiLCJtZXJnZWRJbml0aWFsVmFsdWVzUmVmIiwiYXNzaWduIiwibWVyZ2VkSW5pdGlhbFZhbHVlcyIsInJlc2V0RXBvY2hSZWYiLCJmaXJlRm9ybVJlc2V0IiwiZmluYWxWYWx1ZXMiLCJmb3JtSW5zdGFuY2UiLCJnZXRGaWVsZHNWYWx1ZSIsIl91c2VGb3JtIiwidXNlRm9ybSIsImludGVybmFscyIsInN0b3JlIiwid3JhcHBlZEhhbmRsZVN1Ym1pdCIsInVzZUV2ZW50Q2FsbGJhY2siLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsIl9hIiwiX2IiLCJfYyIsImVwb2NoIiwidmFsaWRhdGVkVmFsdWVzIiwicGlwZWxpbmVkIiwiX3QiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwicHJldmVudERlZmF1bHQiLCJhYnJ1cHQiLCJ2YWxpZGF0ZUZpZWxkcyIsInNlbnQiLCJGb3JtVmFsaWRhdGlvbkVycm9yIiwiZXJyb3JzIiwiY29uc29sZSIsImVycm9yIiwiZmluaXNoIiwic3RvcCIsInByb0Zvcm1Gb3JtSW5zdGFuY2UiLCJ1c2VNZW1vIiwiZ2V0RmllbGRzRm9ybWF0VmFsdWUiLCJnZXRGaWVsZEZvcm1hdFZhbHVlIiwicmVzb2x2ZVZhbHVlIiwiZ2V0RmllbGRGb3JtYXRWYWx1ZU9iamVjdCIsImZvcm1hdHRlZCIsInNldE5lc3RlZFZhbHVlIiwidmFsaWRhdGVGaWVsZHNSZXR1cm5Gb3JtYXRWYWx1ZSIsIl9jYWxsZWUyIiwidmFscyIsIl90MiIsIl9jb250ZXh0MiIsInN1Y2Nlc3MiLCJzdWJtaXRGb3JtIiwidXNlRWZmZWN0IiwicmVxdWVzdFJlZiIsImhhc1JlcXVlc3QiLCJzZXJpYWxpemVkUGFyYW1zIiwic3RhYmxlU2VyaWFsaXplIiwiaW5pdEZpcmVkUmVmIiwiZmlyZUluaXQiLCJzdGFsZSIsImZldGNoRGF0YSIsIl9jYWxsZWUzIiwicmVxdWVzdEZuIiwiZGF0YSIsIl90MyIsIl9jb250ZXh0MyIsIl90eXBlb2YyIiwic2V0RmllbGRzVmFsdWUiLCJmb3JtRWxSZWYiLCJmaXJzdElucHV0IiwicXVlcnlTZWxlY3RvciIsImZvY3VzIiwic3RhYmxlRmllbGRQcm9wcyIsInVzZVNoYWxsb3dTdGFibGUiLCJzdGFibGVGb3JtSXRlbVByb3BzIiwic3RhYmxlQ29sUHJvcHMiLCJzdGFibGVMYXlvdXQiLCJzdGFibGVWYWx1ZSIsInNldEZpZWxkVmFsdWUiLCJzZXRGaWVsZEVycm9yIiwic2V0RmllbGRXYXJuaW5nIiwidmFsaWRhdGVGaWVsZEFzeW5jIiwicmVnaXN0ZXJGaWVsZCIsInVucmVnaXN0ZXJGaWVsZCIsInJldGFpbkZpZWxkIiwicmVsZWFzZUZpZWxkIiwiV3JhcHBlckNvbXBvbmVudCIsIlJvdyIsIkZyYWdtZW50Iiwid3JhcHBlclByb3BzIiwiaGFuZGxlU3VibWl0dGVyUmVzZXQiLCJzdWJtaXR0ZXJOb2RlIiwiX2pzeCIsIlN1Ym1pdHRlciIsIlByb0Zvcm1TdGFibGVDb250ZXh0IiwiUHJvdmlkZXIiLCJQcm9Gb3JtU3RhdGVDb250ZXh0IiwiX2pzeHMiLCJyZWYiLCJqb2luQ2xzIiwib25TdWJtaXQiLCJoYW5kbGVSZXNldCIsImRpc3BsYXlOYW1lIiwiUHJvRm9ybSIsImV4cG9ydHMiLCJtZW1vIiwiX2RlZmF1bHQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBb0JBLElBQUFBLFdBQUEsR0FBQUMsT0FBQTtBQ3BCQSxJQUFBQyxNQUFBLEdBQUFDLHVCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBRyxVQUFBLEdBQUFDLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBSyxjQUFBLEdBQUFELHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBTSxjQUFBLEdBQUFGLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBTyxpQkFBQSxHQUFBSCxzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQVEsV0FBQSxHQUFBTix1QkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQVMsS0FBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsU0FBQSxHQUFBVixPQUFBO0FBQ0EsSUFBQVcsU0FBQSxHQUFBWCxPQUFBO0FBQ0EsSUFBQVksVUFBQSxHQUFBWixPQUFBO0FBQ0EsSUFBQWEsVUFBQSxHQUFBYixPQUFBO0FBQ0EsSUFBQWMsTUFBQSxHQUFBZCxPQUFBO0FBQ0EsSUFBQWUsVUFBQSxHQUFBZixPQUFBO0FBQ0EsSUFBQWdCLFlBQUEsR0FBQWhCLE9BQUE7QUFDQSxJQUFBaUIsVUFBQSxHQUFBakIsT0FBQTtBQUNBLElBQUFrQixnQkFBQSxHQUFBbEIsT0FBQTtBQUE2RCxTQUFBbUIseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFsQix3QkFBQWtCLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxV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LEVBQUU5QixTQUFTO1FBQ2R6SixTQUFTLEVBQUVQLFdBQVcsQ0FBQ3lFLFNBQVMsRUFBRSxJQUFBc0gsbUJBQU8sRUFBQ2xNLE9BQU8sQ0FBQSxDQUFFLEVBQUVVLFNBQVMsQ0FBQyxDQUFDO1FBQ2hFeUwsUUFBUSxFQUFFeEYsbUJBQW1CO1FBQzdCakYsT0FBTyxFQUFFK0UsU0FBUyxDQUFDMkYsV0FBVztRQUFBM0wsUUFBQSxFQUFBLENBRTlCLElBQUFrTCxlQUFBLEVBQUNOLGdCQUFnQixFQUFBdk4sTUFBQSxDQUFBa0ksTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUFLd0YsWUFBWSxFQUFBO1VBQUEvSyxRQUFBLEVBQUdBO1FBQVEsQ0FBQSxDQUFBLENBQW9CLEVBQ2hFaUwsYUFBYTtNQUFBLENBQUEsQ0FBQTtJQUNULENBQUE7RUFDc0IsQ0FBQSxDQUNEO0FBRXBDLENBQUM7QUFFRG5MLFdBQVcsQ0FBQzhMLFdBQVcsR0FBRyxTQUFTO0FBYTVCLElBQU1DLE9BQU8sR0FBQUMsT0FBQSxDQUFBRCxPQUFBLGdCQUFHLElBQUFFLFdBQUksRUFBQ2pNLFdBQVcsQ0FBNEI7QUFBQyxJQUFBa00sUUFBQSxHQUFBRixPQUFBLGNBRXJERCxPQUFPIiwiZmlsZSI6ImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IFJlYWN0LCB7IG1lbW8sIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCBGcmFnbWVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VMYXRlc3QgZnJvbSAnQDFtb25leS9ob29rcy91c2VMYXRlc3QnO1xuaW1wb3J0IHVzZVNhZmVTdGF0ZSBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZVNhZmVTdGF0ZSc7XG5pbXBvcnQgdXNlTWVtb2l6ZWRGbiBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZU1lbW9pemVkRm4nO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnQDFtb25leS9ob29rcy91c2VFdmVudENhbGxiYWNrJztcbmltcG9ydCB7IGRlZmF1bHQgYXMgY2xhc3NuYW1lcywgam9pbkNscyB9IGZyb20gJy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsgUm93IH0gZnJvbSAnLi4vR3JpZCc7XG5pbXBvcnQgeyB1c2VGb3JtIH0gZnJvbSAnLi9jb3JlL2hvb2tzL3VzZUZvcm0nO1xuaW1wb3J0IHsgUHJvRm9ybVN0YWJsZUNvbnRleHQsIFByb0Zvcm1TdGF0ZUNvbnRleHQgfSBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IHsgU3VibWl0dGVyIH0gZnJvbSAnLi9TdWJtaXR0ZXInO1xuaW1wb3J0IHsgQ1NTX1BSRUZJWCwgREVGQVVMVF9DT0xfU1BBTiB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IHN0YWJsZVNlcmlhbGl6ZSwgdHJhbnNmb3JtU3VibWl0VmFsdWVzLCBvbWl0TmlsVmFsdWVzLCBmb3JtYXREYXRlVmFsdWVzIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyB1c2VTaGFsbG93U3RhYmxlIH0gZnJvbSAnLi9jb3JlL2Zvcm1TdG9yZSc7XG5pbXBvcnQgeyB1c2VVcmxTeW5jIH0gZnJvbSAnLi9ob29rcy91c2VVcmxTeW5jJztcbmltcG9ydCB7IHJlc29sdmVWYWx1ZSwgc2V0TmVzdGVkVmFsdWUgfSBmcm9tICcuL2NvcmUvcGF0aFV0aWxzJztcbmltcG9ydCB7IEZvcm1WYWxpZGF0aW9uRXJyb3IgfSBmcm9tICcuL2NvcmUvdmFsaWRhdGlvbkVycm9yJztcbmNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKENTU19QUkVGSVgpO1xuY29uc3QgZm9ybUNsYXNzZXMgPSBjbGFzc25hbWVzKCdmb3JtJyk7XG5jb25zdCBERUZBVUxUX0NPTF9QUk9QUyA9IHsgc3BhbjogREVGQVVMVF9DT0xfU1BBTiB9O1xuY29uc3QgUHJvRm9ybUJhc2UgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHN1Ym1pdHRlciwgbW9kZSA9ICdlZGl0JywgZ3JpZCA9IGZhbHNlLCBjb2xQcm9wcywgcm93UHJvcHMsIGxvYWRpbmcgPSBmYWxzZSwgcmVxdWVzdCwgcGFyYW1zLCBpbml0aWFsVmFsdWVzLCBvbkZpbmlzaCwgb25GaW5pc2hGYWlsZWQsIG9uVmFsdWVzQ2hhbmdlLCBvblJlc2V0LCBvbkluaXQsIG9uTG9hZGluZ0NoYW5nZSwgc3luY1RvVXJsLCBzeW5jVG9VcmxBc0ltcG9ydGFudCA9IGZhbHNlLCBleHRyYVVybFBhcmFtcywgYXV0b0ZvY3VzRmlyc3RJbnB1dCA9IGZhbHNlLCBmb3JtQ29tcG9uZW50VHlwZSwgZm9ybVJlZiwgb21pdE5pbCA9IHRydWUsIGRhdGVGb3JtYXR0ZXIgPSAnc3RyaW5nJywgZmllbGRQcm9wcywgZm9ybUl0ZW1Qcm9wcywgbGF5b3V0LCBzaXplID0gJ2xhcmdlJywgbGFiZWxBbGlnbiA9ICdsZWZ0JywgZGlzYWJsZWQgPSBmYWxzZSwgdmFsaWRhdGVUcmlnZ2VyID0gJ29uQ2hhbmdlJywgcHJlZml4Q2xzOiBfcHJlZml4Q2xzIH0gPSBwcm9wcywgcmVzdCA9IF9fcmVzdChwcm9wcywgW1wiY2hpbGRyZW5cIiwgXCJjbGFzc05hbWVcIiwgXCJzdWJtaXR0ZXJcIiwgXCJtb2RlXCIsIFwiZ3JpZFwiLCBcImNvbFByb3BzXCIsIFwicm93UHJvcHNcIiwgXCJsb2FkaW5nXCIsIFwicmVxdWVzdFwiLCBcInBhcmFtc1wiLCBcImluaXRpYWxWYWx1ZXNcIiwgXCJvbkZpbmlzaFwiLCBcIm9uRmluaXNoRmFpbGVkXCIsIFwib25WYWx1ZXNDaGFuZ2VcIiwgXCJvblJlc2V0XCIsIFwib25Jbml0XCIsIFwib25Mb2FkaW5nQ2hhbmdlXCIsIFwic3luY1RvVXJsXCIsIFwic3luY1RvVXJsQXNJbXBvcnRhbnRcIiwgXCJleHRyYVVybFBhcmFtc1wiLCBcImF1dG9Gb2N1c0ZpcnN0SW5wdXRcIiwgXCJmb3JtQ29tcG9uZW50VHlwZVwiLCBcImZvcm1SZWZcIiwgXCJvbWl0TmlsXCIsIFwiZGF0ZUZvcm1hdHRlclwiLCBcImZpZWxkUHJvcHNcIiwgXCJmb3JtSXRlbVByb3BzXCIsIFwibGF5b3V0XCIsIFwic2l6ZVwiLCBcImxhYmVsQWxpZ25cIiwgXCJkaXNhYmxlZFwiLCBcInZhbGlkYXRlVHJpZ2dlclwiLCBcInByZWZpeENsc1wiXSk7XG4gICAgY29uc3QgW3JlcXVlc3RMb2FkaW5nLCBzZXRSZXF1ZXN0TG9hZGluZ10gPSB1c2VTYWZlU3RhdGUoZmFsc2UpO1xuICAgIC8vIHVzZVNhZmVTdGF0ZSBmb3IgdGhlIFJFTkRFUkVEIHN1Ym1pdHRpbmcgc3RhdGUgKGl0cyBzZXR0ZXIgaXMgdW5tb3VudC1zYWZlXG4gICAgLy8g4oCUIHRoZSBmaW5hbGx5IGJlbG93IHJ1bnMgYWZ0ZXIgYXdhaXRpbmcgb25GaW5pc2gsIHdoZW4gdGhlIHR5cGljYWxcbiAgICAvLyBzdWJtaXQtdGhlbi1jbG9zZSBmbG93IG1heSBhbHJlYWR5IGhhdmUgdW5tb3VudGVkIHRoZSBmb3JtIG9uIFJlYWN0XG4gICAgLy8gMTYvMTcpLiBUaGUgcmVmIGlzIHRoZSBzeW5jaHJvbm91cyByZS1lbnRyeSBndWFyZDsgQDFtb25leS9ob29rcyBoYXMgbm9cbiAgICAvLyBzaW5nbGUgaG9vayB0aGF0IGlzIGJvdGggdW5tb3VudC1zYWZlIGFuZCBzeW5jaHJvbm91c2x5IHJlYWRhYmxlLlxuICAgIGNvbnN0IFtzdWJtaXR0aW5nLCBzZXRTdWJtaXR0aW5nXSA9IHVzZVNhZmVTdGF0ZShmYWxzZSk7XG4gICAgY29uc3Qgc3VibWl0dGluZ1JlZiA9IHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3QgaXNMb2FkaW5nID0gbG9hZGluZyB8fCByZXF1ZXN0TG9hZGluZyB8fCBzdWJtaXR0aW5nO1xuICAgIC8vIOKUgOKUgCBUcmFuc2Zvcm0gLyB2YWx1ZVR5cGUgcmVnaXN0cmllcyDilIDilIBcbiAgICBjb25zdCB0cmFuc2Zvcm1LZXlSZWYgPSB1c2VSZWYoe30pO1xuICAgIGNvbnN0IHZhbHVlVHlwZVJlZiA9IHVzZVJlZih7fSk7XG4gICAgY29uc3QgcmVnaXN0ZXJUcmFuc2Zvcm0gPSB1c2VNZW1vaXplZEZuKChuYW1lLCBmbikgPT4ge1xuICAgICAgICB0cmFuc2Zvcm1LZXlSZWYuY3VycmVudFtuYW1lXSA9IGZuO1xuICAgIH0pO1xuICAgIC8vIFRoZSBvcHRpb25hbCBzZWNvbmQgYXJndW1lbnQgZ3VhcmRzIHJlbW92YWw6IGRlbGV0ZSBvbmx5IHdoZW4gdGhlIHJlZ2lzdHJ5XG4gICAgLy8gc3RpbGwgaG9sZHMgdGhlIENBTExFUidTIHJlZ2lzdHJhdGlvbiwgc28gYW4gdW5tb3VudGluZyBpbnN0YW5jZSBjYW4gbmV2ZXJcbiAgICAvLyB3aXBlIGEgc2FtZS1uYW1lIHNpYmxpbmcncyBvciBzdWNjZXNzb3IncyBlbnRyeS5cbiAgICBjb25zdCB1bnJlZ2lzdGVyVHJhbnNmb3JtID0gdXNlTWVtb2l6ZWRGbigobmFtZSwgZm4pID0+IHtcbiAgICAgICAgaWYgKGZuID09PSB1bmRlZmluZWQgfHwgdHJhbnNmb3JtS2V5UmVmLmN1cnJlbnRbbmFtZV0gPT09IGZuKSB7XG4gICAgICAgICAgICBkZWxldGUgdHJhbnNmb3JtS2V5UmVmLmN1cnJlbnRbbmFtZV07XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCByZWdpc3RlclZhbHVlVHlwZSA9IHVzZU1lbW9pemVkRm4oKG5hbWUsIHZhbHVlVHlwZSkgPT4ge1xuICAgICAgICB2YWx1ZVR5cGVSZWYuY3VycmVudFtuYW1lXSA9IHZhbHVlVHlwZTtcbiAgICB9KTtcbiAgICBjb25zdCB1bnJlZ2lzdGVyVmFsdWVUeXBlID0gdXNlTWVtb2l6ZWRGbigobmFtZSwgdmFsdWVUeXBlKSA9PiB7XG4gICAgICAgIGlmICh2YWx1ZVR5cGUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZVR5cGVSZWYuY3VycmVudFtuYW1lXSA9PT0gdmFsdWVUeXBlKSB7XG4gICAgICAgICAgICBkZWxldGUgdmFsdWVUeXBlUmVmLmN1cnJlbnRbbmFtZV07XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBvbkZpbmlzaFJlZiA9IHVzZUxhdGVzdChvbkZpbmlzaCk7XG4gICAgY29uc3Qgb25Jbml0UmVmID0gdXNlTGF0ZXN0KG9uSW5pdCk7XG4gICAgY29uc3Qgb25Mb2FkaW5nQ2hhbmdlUmVmID0gdXNlTGF0ZXN0KG9uTG9hZGluZ0NoYW5nZSk7XG4gICAgLy8gU3VibWl0IHBpcGVsaW5lOiBkYXRlcyDihpIgZmllbGQgdHJhbnNmb3JtcyDihpIgb21pdE5pbFxuICAgIGNvbnN0IGFwcGx5UGlwZWxpbmUgPSB1c2VNZW1vaXplZEZuKCh2YWx1ZXMpID0+IHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IGZvcm1hdERhdGVWYWx1ZXModmFsdWVzLCBkYXRlRm9ybWF0dGVyLCB2YWx1ZVR5cGVSZWYuY3VycmVudCk7XG4gICAgICAgIHJlc3VsdCA9IHRyYW5zZm9ybVN1Ym1pdFZhbHVlcyhyZXN1bHQsIHRyYW5zZm9ybUtleVJlZi5jdXJyZW50KTtcbiAgICAgICAgaWYgKG9taXROaWwpXG4gICAgICAgICAgICByZXN1bHQgPSBvbWl0TmlsVmFsdWVzKHJlc3VsdCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSk7XG4gICAgLy8gU2FtZSBwaXBlbGluZSBXSVRIT1VUIG9taXROaWwg4oCUIHNpbmdsZS1maWVsZCByZWFkZXJzIG11c3Qgbm90IHNlZSBhIGZpZWxkXG4gICAgLy8gdmFuaXNoIGp1c3QgYmVjYXVzZSBpdHMgY3VycmVudCB2YWx1ZSBpcyBlbXB0eS5cbiAgICBjb25zdCBmb3JtYXRWYWx1ZXNLZWVwTmlsID0gdXNlTWVtb2l6ZWRGbigodmFsdWVzKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGZvcm1hdERhdGVWYWx1ZXModmFsdWVzLCBkYXRlRm9ybWF0dGVyLCB2YWx1ZVR5cGVSZWYuY3VycmVudCk7XG4gICAgICAgIHJldHVybiB0cmFuc2Zvcm1TdWJtaXRWYWx1ZXMocmVzdWx0LCB0cmFuc2Zvcm1LZXlSZWYuY3VycmVudCk7XG4gICAgfSk7XG4gICAgLy8g4pSA4pSAIFVSTCBzeW5jIChzeW5jVG9VcmwgLyBzeW5jVG9VcmxBc0ltcG9ydGFudCAvIGV4dHJhVXJsUGFyYW1zKSDilIDilIBcbiAgICBjb25zdCB7IHVybEluaXRpYWxWYWx1ZXMsIG9uVXJsU3luY0ZpbmlzaCwgb25VcmxTeW5jUmVzZXQgfSA9IHVzZVVybFN5bmMoe1xuICAgICAgICBzeW5jVG9VcmwsXG4gICAgICAgIGV4dHJhVXJsUGFyYW1zLFxuICAgIH0pO1xuICAgIC8vIGluaXRpYWxWYWx1ZXMgaXMgTU9VTlQtT05MWSAoZG9jdW1lbnRlZCBjb250cmFjdDsgdXNlRm9ybUNvcmUgcmUtZnJlZXplc1xuICAgIC8vIGFzIGEgc2FmZXR5IG5ldCkg4oCUIGNvbXB1dGUgdGhlIFVSTCBtZXJnZSBvbmNlIHNvIHRoZSBmcmVlemUgaXMgdmlzaWJsZVxuICAgIC8vIHdoZXJlIHRoZSBwcm9wcyBlbnRlciwgaW5zdGVhZCBvZiByZWNvbXB1dGluZyBkZWFkIHNwcmVhZHMgcGVyIHJlbmRlci5cbiAgICBjb25zdCBtZXJnZWRJbml0aWFsVmFsdWVzUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGlmIChtZXJnZWRJbml0aWFsVmFsdWVzUmVmLmN1cnJlbnQgPT09IG51bGwpIHtcbiAgICAgICAgbWVyZ2VkSW5pdGlhbFZhbHVlc1JlZi5jdXJyZW50ID0gc3luY1RvVXJsXG4gICAgICAgICAgICA/IChzeW5jVG9VcmxBc0ltcG9ydGFudFxuICAgICAgICAgICAgICAgID8gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBpbml0aWFsVmFsdWVzKSwgdXJsSW5pdGlhbFZhbHVlcykgOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHVybEluaXRpYWxWYWx1ZXMpLCBpbml0aWFsVmFsdWVzKSlcbiAgICAgICAgICAgIDogKGluaXRpYWxWYWx1ZXMgIT09IG51bGwgJiYgaW5pdGlhbFZhbHVlcyAhPT0gdm9pZCAwID8gaW5pdGlhbFZhbHVlcyA6IHt9KTtcbiAgICB9XG4gICAgY29uc3QgbWVyZ2VkSW5pdGlhbFZhbHVlcyA9IG1lcmdlZEluaXRpYWxWYWx1ZXNSZWYuY3VycmVudDtcbiAgICAvLyBCdW1wZWQgb24gZXZlcnkgcmVzZXQg4oCUIGFuIGluLWZsaWdodCBzdWJtaXQgY2FwdHVyZXMgaXQgYW5kIGFib3J0cyB3aGVuXG4gICAgLy8gaXQgY2hhbmdlZCB1bmRlcm5lYXRoICh0aGUgdXNlciBkaXNjYXJkZWQgdGhlIHN1Ym1pc3Npb24ncyB2YWx1ZXMpLlxuICAgIGNvbnN0IHJlc2V0RXBvY2hSZWYgPSB1c2VSZWYoMCk7XG4gICAgLy8gUmVzZXQgY2hhaW46IGZvcm0tbGV2ZWwgb25SZXNldCByZWNlaXZlcyB0aGUgKHBvc3QtcmVzZXQpIGZvcm1hdHRlZFxuICAgIC8vIHZhbHVlcywgdGhlbiB0aGUgZm9ybSdzIG93biBVUkwgcGFyYW1zIGFyZSBjbGVhcmVkLiB1c2VNZW1vaXplZEZuIGRlZmVyc1xuICAgIC8vIGV4ZWN1dGlvbiB0byBldmVudCB0aW1lLCB3aGVuIGBmb3JtSW5zdGFuY2VgIChjcmVhdGVkIGp1c3QgYmVsb3cpIGV4aXN0cy5cbiAgICBjb25zdCBmaXJlRm9ybVJlc2V0ID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIHJlc2V0RXBvY2hSZWYuY3VycmVudCArPSAxO1xuICAgICAgICBjb25zdCBmaW5hbFZhbHVlcyA9IGFwcGx5UGlwZWxpbmUoZm9ybUluc3RhbmNlLmdldEZpZWxkc1ZhbHVlKCkpO1xuICAgICAgICBvblJlc2V0ID09PSBudWxsIHx8IG9uUmVzZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uUmVzZXQoZmluYWxWYWx1ZXMpO1xuICAgICAgICBvblVybFN5bmNSZXNldCgpO1xuICAgIH0pO1xuICAgIC8vIOKUgOKUgCBGb3JtIGVuZ2luZSAodXNlRm9ybSB3aXRoIGFzeW5jIHZhbGlkYXRpb24pIOKUgOKUgFxuICAgIGNvbnN0IHsgZm9ybUluc3RhbmNlLCBpbnRlcm5hbHMsIHN0b3JlIH0gPSB1c2VGb3JtKHtcbiAgICAgICAgaW5pdGlhbFZhbHVlczogbWVyZ2VkSW5pdGlhbFZhbHVlcyxcbiAgICAgICAgb25WYWx1ZXNDaGFuZ2UsXG4gICAgICAgIG9uUmVzZXQ6IGZpcmVGb3JtUmVzZXQsXG4gICAgICAgIHNpemUsXG4gICAgICAgIGxhYmVsQWxpZ24sXG4gICAgICAgIGRpc2FibGVkLFxuICAgICAgICB2YWxpZGF0ZVRyaWdnZXIsXG4gICAgfSk7XG4gICAgLy8g4pSA4pSAIEFzeW5jIHN1Ym1pdCB3aXRoIHRyYW5zZm9ybSBwaXBlbGluZSDilIDilIBcbiAgICAvLyBSZS1lbnRyeSBndWFyZDogYSBzZWNvbmQgc3VibWl0IHdoaWxlIG9uZSBpcyBpbiBmbGlnaHQgaXMgaWdub3JlZCAodGhlXG4gICAgLy8gcmVmIGNhdGNoZXMgdHdvIGNhbGxzIGluIHRoZSBzYW1lIHRpY2spLlxuICAgIGNvbnN0IHdyYXBwZWRIYW5kbGVTdWJtaXQgPSB1c2VFdmVudENhbGxiYWNrKChlKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgIGUgPT09IG51bGwgfHwgZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAoc3VibWl0dGluZ1JlZi5jdXJyZW50KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBzdWJtaXR0aW5nUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICBzZXRTdWJtaXR0aW5nKHRydWUpO1xuICAgICAgICAoX2EgPSBvbkxvYWRpbmdDaGFuZ2VSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwob25Mb2FkaW5nQ2hhbmdlUmVmLCB0cnVlKTtcbiAgICAgICAgY29uc3QgZXBvY2ggPSByZXNldEVwb2NoUmVmLmN1cnJlbnQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCB2YWxpZGF0ZWRWYWx1ZXMgPSB5aWVsZCBmb3JtSW5zdGFuY2UudmFsaWRhdGVGaWVsZHMoKTtcbiAgICAgICAgICAgIC8vIEEgcmVzZXQgZHVyaW5nIChhc3luYykgdmFsaWRhdGlvbiBkaXNjYXJkcyB0aGlzIHN1Ym1pc3Npb24gZW50aXJlbHk6XG4gICAgICAgICAgICAvLyB2YWxpZGF0ZUZpZWxkcyByZS1yZWFkcyB0aGUgbGl2ZSBzdG9yZSwgc28gcHJvY2VlZGluZyB3b3VsZCBoYW5kXG4gICAgICAgICAgICAvLyBvbkZpbmlzaCB0aGUgUE9TVC1yZXNldCB2YWx1ZXMuXG4gICAgICAgICAgICBpZiAoZXBvY2ggIT09IHJlc2V0RXBvY2hSZWYuY3VycmVudClcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBjb25zdCBwaXBlbGluZWQgPSBhcHBseVBpcGVsaW5lKHZhbGlkYXRlZFZhbHVlcyk7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB5aWVsZCAoKF9iID0gb25GaW5pc2hSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwob25GaW5pc2hSZWYsIHBpcGVsaW5lZCkpO1xuICAgICAgICAgICAgLy8gU3luYyB0aGUgVVJMIHVubGVzcyBvbkZpbmlzaCBleHBsaWNpdGx5IHJldHVybmVkIGZhbHNlIChhIHRocm93IGFib3ZlXG4gICAgICAgICAgICAvLyBhbHNvIHNraXBzIOKAlCBhIGZhaWxlZCBzdWJtaXQgbXVzdCBub3QgcG9sbHV0ZSB0aGUgVVJMKSwgYW5kIG9ubHkgaWZcbiAgICAgICAgICAgIC8vIHRoZSB1c2VyIGRpZCBOT1QgcmVzZXQgdGhlIGZvcm0gd2hpbGUgdGhlIHN1Ym1pdCB3YXMgaW4gZmxpZ2h0LlxuICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gZmFsc2UgJiYgZXBvY2ggPT09IHJlc2V0RXBvY2hSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgICAgIG9uVXJsU3luY0ZpbmlzaChwaXBlbGluZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIC8vIEEgcmVzZXQgZHVyaW5nIHZhbGlkYXRpb24gYWxzbyBpbnZhbGlkYXRlcyB0aGUgRkFJTFVSRSBjYWxsYmFjayDigJRcbiAgICAgICAgICAgIC8vIHRoZSBlcnJvciBjYXJyaWVzIHBvc3QtcmVzZXQgdmFsdWVzIGZvciBhIGRpc2NhcmRlZCBzdWJtaXNzaW9uLlxuICAgICAgICAgICAgLy8gKEZpZWxkIGVycm9ycyBmcm9tIHRoZSBkZWFkIHZhbGlkYXRpb24gYXJlIHN1cHByZXNzZWQgYnkgdGhlXG4gICAgICAgICAgICAvLyBwZXItZmllbGQgdmFsaWRhdGlvbiBlcG9jaHM6IHJlc2V0RmllbGRzIGludmFsaWRhdGVzIGluLWZsaWdodCBydW5zLilcbiAgICAgICAgICAgIGlmIChlcG9jaCAhPT0gcmVzZXRFcG9jaFJlZi5jdXJyZW50KVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIC8vIE9ubHkgYSBWQUxJREFUSU9OIGZhaWx1cmUgcm91dGVzIHRvIG9uRmluaXNoRmFpbGVkLiBBbiBleGNlcHRpb24gb3V0XG4gICAgICAgICAgICAvLyBvZiB0aGUgY29uc3VtZXIncyBvd24gb25GaW5pc2ggaXMgbm90IGEgdmFsaWRhdGlvbiByZXN1bHQ6IHRoZSBzdWJtaXRcbiAgICAgICAgICAgIC8vIGZhaWxzIChVUkwgdW50b3VjaGVkLCBvdmVybGF5IHN0YXlzIG9wZW4pIGFuZCB0aGUgZXJyb3IgaXMgc3VyZmFjZWRcbiAgICAgICAgICAgIC8vIG9uIHRoZSBjb25zb2xlIGluc3RlYWQgb2YgYmVpbmcgbWlzcmVwb3J0ZWQgd2l0aCBhbiBlbXB0eSBwYXlsb2FkLlxuICAgICAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEZvcm1WYWxpZGF0aW9uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBvbkZpbmlzaEZhaWxlZCA9PT0gbnVsbCB8fCBvbkZpbmlzaEZhaWxlZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25GaW5pc2hGYWlsZWQoeyB2YWx1ZXM6IGVyci52YWx1ZXMsIGVycm9yczogZXJyLmVycm9ycyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tQcm9Gb3JtXSBvbkZpbmlzaCB0aHJldyBkdXJpbmcgc3VibWl0OicsIGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICBzdWJtaXR0aW5nUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgIHNldFN1Ym1pdHRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgKF9jID0gb25Mb2FkaW5nQ2hhbmdlUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5jYWxsKG9uTG9hZGluZ0NoYW5nZVJlZiwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgfSkpO1xuICAgIC8vIOKUgOKUgCBQcm9Gb3JtIGluc3RhbmNlOiBzdXBlcnNldCBvZiBGb3JtSW5zdGFuY2Ug4pSA4pSAXG4gICAgY29uc3QgcHJvRm9ybUZvcm1JbnN0YW5jZSA9IHVzZU1lbW8oKCkgPT4gKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZm9ybUluc3RhbmNlKSwgeyBnZXRGaWVsZHNGb3JtYXRWYWx1ZTogKCkgPT4gYXBwbHlQaXBlbGluZShmb3JtSW5zdGFuY2UuZ2V0RmllbGRzVmFsdWUoKSksIGdldEZpZWxkRm9ybWF0VmFsdWU6ICgobmFtZSkgPT4gcmVzb2x2ZVZhbHVlKGZvcm1hdFZhbHVlc0tlZXBOaWwoZm9ybUluc3RhbmNlLmdldEZpZWxkc1ZhbHVlKCkpLCBuYW1lKSksIGdldEZpZWxkRm9ybWF0VmFsdWVPYmplY3Q6IChuYW1lKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBmb3JtYXRWYWx1ZXNLZWVwTmlsKGZvcm1JbnN0YW5jZS5nZXRGaWVsZHNWYWx1ZSgpKTtcbiAgICAgICAgICAgIGlmICghbmFtZSlcbiAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0dGVkO1xuICAgICAgICAgICAgLy8gQSBuZXN0ZWQgb2JqZWN0IGNhcnJ5aW5nIE9OTFkgdGhlIHJlcXVlc3RlZCBsZWFmIOKAlCBub3QgdGhlIHdob2xlXG4gICAgICAgICAgICAvLyB0b3AtbGV2ZWwgc3VidHJlZSB0aGUgcGF0aCBoYXBwZW5zIHRvIGxpdmUgaW4uXG4gICAgICAgICAgICByZXR1cm4gc2V0TmVzdGVkVmFsdWUoe30sIG5hbWUsIHJlc29sdmVWYWx1ZShmb3JtYXR0ZWQsIG5hbWUpKTtcbiAgICAgICAgfSwgdmFsaWRhdGVGaWVsZHNSZXR1cm5Gb3JtYXRWYWx1ZTogKCkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHMgPSB5aWVsZCBmb3JtSW5zdGFuY2UudmFsaWRhdGVGaWVsZHMoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlLCB2YWx1ZXM6IGFwcGx5UGlwZWxpbmUodmFscykgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAvLyB2YWxpZGF0ZUZpZWxkcyByZWplY3RzIHdpdGggYW4gRXJyb3IgY2FycnlpbmcgdGhlIGZpZWxkIGVycm9ycyBtYXBcbiAgICAgICAgICAgICAgICAvLyAoc2FtZSBzaGFwZSB3cmFwcGVkSGFuZGxlU3VibWl0IGNvbnN1bWVzIGFib3ZlKS5cbiAgICAgICAgICAgICAgICBjb25zdCB7IGVycm9ycyB9ID0gZXJyO1xuICAgICAgICAgICAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IGZhbHNlLCBlcnJvcnM6IGVycm9ycyAhPT0gbnVsbCAmJiBlcnJvcnMgIT09IHZvaWQgMCA/IGVycm9ycyA6IHt9IH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLCBzdWJtaXRGb3JtOiB3cmFwcGVkSGFuZGxlU3VibWl0IH0pKSwgW2Zvcm1JbnN0YW5jZSwgYXBwbHlQaXBlbGluZSwgd3JhcHBlZEhhbmRsZVN1Ym1pdF0pO1xuICAgIC8vIOKUgOKUgCBTeW5jIHRvIGZvcm1SZWYgcHJvcCDilIDilIBcbiAgICAvLyBUaGUgY2xlYW51cCBjbGVhcnMgdGhlIHJlZiBvbiB1bm1vdW50OiBhIGhhbmRsZSB0byBhbiB1bm1vdW50ZWQgZm9ybVxuICAgIC8vIHZhbGlkYXRlcyBhbiBlbXB0eSBmaWVsZCBzdG9yZSBhbmQgcmVwb3J0cyBmYWtlIHN1Y2Nlc3MsIHNvIGNvbnN1bWVyc1xuICAgIC8vIChhbmQgdGhlIGJ1c2luZXNzLXNoZWxsIHJlbGF5IHJlZnMpIG11c3Qgb2JzZXJ2ZSBgdW5kZWZpbmVkYCBpbnN0ZWFkLlxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICghZm9ybVJlZilcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGZvcm1SZWYuY3VycmVudCA9IHByb0Zvcm1Gb3JtSW5zdGFuY2U7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoZm9ybVJlZi5jdXJyZW50ID09PSBwcm9Gb3JtRm9ybUluc3RhbmNlKSB7XG4gICAgICAgICAgICAgICAgZm9ybVJlZi5jdXJyZW50ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH0sIFtmb3JtUmVmLCBwcm9Gb3JtRm9ybUluc3RhbmNlXSk7XG4gICAgLy8g4pSA4pSAIHJlcXVlc3QgLyBwYXJhbXMgYXV0by1sb2FkIOKUgOKUgFxuICAgIGNvbnN0IHJlcXVlc3RSZWYgPSB1c2VMYXRlc3QocmVxdWVzdCk7XG4gICAgY29uc3QgaGFzUmVxdWVzdCA9ICEhcmVxdWVzdDtcbiAgICBjb25zdCBzZXJpYWxpemVkUGFyYW1zID0gdXNlTWVtbygoKSA9PiBzdGFibGVTZXJpYWxpemUocGFyYW1zKSwgW3BhcmFtc10pO1xuICAgIC8vIG9uSW5pdCBmaXJlcyBleGFjdGx5IG9uY2U6IGFmdGVyIHRoZSBGSVJTVCByZXF1ZXN0IHJlc29sdmVzIHdoZW4gYVxuICAgIC8vIHJlcXVlc3QgaXMgY29uZmlndXJlZCwgb3RoZXJ3aXNlIHJpZ2h0IGFmdGVyIG1vdW50LlxuICAgIGNvbnN0IGluaXRGaXJlZFJlZiA9IHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3QgZmlyZUluaXQgPSB1c2VNZW1vaXplZEZuKCgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoaW5pdEZpcmVkUmVmLmN1cnJlbnQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGluaXRGaXJlZFJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgKF9hID0gb25Jbml0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKG9uSW5pdFJlZiwgYXBwbHlQaXBlbGluZShmb3JtSW5zdGFuY2UuZ2V0RmllbGRzVmFsdWUoKSksIHByb0Zvcm1Gb3JtSW5zdGFuY2UpO1xuICAgIH0pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIC8vIFN0YWxlbmVzcyBndWFyZDogaWYgcGFyYW1zIGNoYW5nZSBhZ2FpbiBiZWZvcmUgdGhpcyBmZXRjaCByZXNvbHZlcywgdGhlXG4gICAgICAgIC8vIGNsZWFudXAgbWFya3MgaXQgc3RhbGUgc28gdGhlIGxhdGUgcmVzcG9uc2UgY2FuJ3Qgb3ZlcndyaXRlIHRoZSB2YWx1ZXNcbiAgICAgICAgLy8gYSBuZXdlciByZXF1ZXN0IGFscmVhZHkgKG9yIHdpbGwpIHNldC5cbiAgICAgICAgbGV0IHN0YWxlID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IGZldGNoRGF0YSA9ICgpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3QgcmVxdWVzdEZuID0gcmVxdWVzdFJlZi5jdXJyZW50O1xuICAgICAgICAgICAgaWYgKCFyZXF1ZXN0Rm4pXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgc2V0UmVxdWVzdExvYWRpbmcodHJ1ZSk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSB5aWVsZCByZXF1ZXN0Rm4ocGFyYW1zKTtcbiAgICAgICAgICAgICAgICBpZiAoIXN0YWxlICYmIGRhdGEgJiYgdHlwZW9mIGRhdGEgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1JbnN0YW5jZS5zZXRGaWVsZHNWYWx1ZShkYXRhKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgLy8gQSBmYWlsZWQgcmVxdWVzdCBtdXN0IG5vdCBlc2NhcGUgYXMgYW4gdW5oYW5kbGVkIHJlamVjdGlvbiDigJQgdGhlXG4gICAgICAgICAgICAgICAgLy8gZm9ybSBrZWVwcyBpdHMgaW5pdGlhbFZhbHVlcyBhbmQgdGhlIGZhaWx1cmUgaXMgc3VyZmFjZWQgb24gdGhlXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZSAobWlycm9ycyB0aGUgZmllbGQtbGV2ZWwgdXNlRmllbGRSZXF1ZXN0IGhhbmRsaW5nKS5cbiAgICAgICAgICAgICAgICBpZiAoIXN0YWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tQcm9Gb3JtXSByZXF1ZXN0IGZhaWxlZDonLCBlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIGlmICghc3RhbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0UmVxdWVzdExvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IGEgTk9OLXN1cGVyc2VkZWQgc2V0dGxlIGluaXRpYWxpemVzIHRoZSBmb3JtOiBhIHN0YWxlXG4gICAgICAgICAgICAgICAgICAgIC8vIHJlcXVlc3QncyBkYXRhIHdhcyBkaXNjYXJkZWQsIHNvIGl0cyB2YWx1ZXMgbXVzdCBub3QgYmUgcmVwb3J0ZWQuXG4gICAgICAgICAgICAgICAgICAgIGZpcmVJbml0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHJlcXVlc3RSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgZmV0Y2hEYXRhKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBmaXJlSW5pdCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBzdGFsZSA9IHRydWU7XG4gICAgICAgIH07XG4gICAgICAgIC8vIFJlLWZldGNoIHdoZW4gcGFyYW1zIGNoYW5nZSBieSBWQUxVRSAoZGVwZW5kaW5nIG9uIHRoZSByYXcgYHBhcmFtc2BcbiAgICAgICAgLy8gcmVmZXJlbmNlIHdvdWxkIHJlLXJ1biBvbiBldmVyeSByZW5kZXIgZm9yIGlubGluZSBvYmplY3QgbGl0ZXJhbHMgYW5kLFxuICAgICAgICAvLyBjb21iaW5lZCB3aXRoIHRoZSBsb2FkaW5nIHNldFN0YXRlLCBsb29wIGZvcmV2ZXIpIOKAlCBhbmQgd2hlbiBgcmVxdWVzdGBcbiAgICAgICAgLy8gZmlyc3QgYmVjb21lcyBkZWZpbmVkIChlLmcuIGJlaGluZCBhIGZlYXR1cmUgZmxhZyksIG1pcnJvcmluZ1xuICAgICAgICAvLyB1c2VGaWVsZFJlcXVlc3QuIGZpcmVJbml0J3Mgb25jZS1ndWFyZCBrZWVwcyBvbkluaXQgZnJvbSByZS1maXJpbmcuXG4gICAgfSwgW3NlcmlhbGl6ZWRQYXJhbXMsIGhhc1JlcXVlc3RdKTtcbiAgICAvLyDilIDilIAgYXV0b0ZvY3VzRmlyc3RJbnB1dCDilIDilIBcbiAgICBjb25zdCBmb3JtRWxSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoIWF1dG9Gb2N1c0ZpcnN0SW5wdXQgfHwgbW9kZSA9PT0gJ3JlYWQnKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBmaXJzdElucHV0ID0gKF9hID0gZm9ybUVsUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5xdWVyeVNlbGVjdG9yKCdpbnB1dDpub3QoW3R5cGU9XCJoaWRkZW5cIl0pOm5vdChbZGlzYWJsZWRdKSwgdGV4dGFyZWE6bm90KFtkaXNhYmxlZF0pLCBzZWxlY3Q6bm90KFtkaXNhYmxlZF0pJyk7XG4gICAgICAgIGZpcnN0SW5wdXQgPT09IG51bGwgfHwgZmlyc3RJbnB1dCA9PT0gdm9pZCAwID8gdm9pZCAwIDogZmlyc3RJbnB1dC5mb2N1cygpO1xuICAgICAgICAvLyBNb3VudC1vbmx5IGJ5IGRlc2lnbi5cbiAgICB9LCBbXSk7XG4gICAgLy8g4pSA4pSAIFNwbGl0IGNvbnRleHQg4pSA4pSAXG4gICAgLy8gRm9ybS1sZXZlbCBwcm9wIGJhZ3MgYXJlIG9mdGVuIGlubGluZSBsaXRlcmFsczoga2VlcCB0aGVpciBpZGVudGl0eVxuICAgIC8vIHN0YWJsZSB3aGlsZSBzaGFsbG93LWVxdWFsIHNvIHRoZSBzdGFibGUgc2xpY2UgZG9lc24ndCBjaHVybiBwZXIgcmVuZGVyLlxuICAgIGNvbnN0IHN0YWJsZUZpZWxkUHJvcHMgPSB1c2VTaGFsbG93U3RhYmxlKGZpZWxkUHJvcHMpO1xuICAgIGNvbnN0IHN0YWJsZUZvcm1JdGVtUHJvcHMgPSB1c2VTaGFsbG93U3RhYmxlKGZvcm1JdGVtUHJvcHMpO1xuICAgIGNvbnN0IHN0YWJsZUNvbFByb3BzID0gdXNlU2hhbGxvd1N0YWJsZShjb2xQcm9wcyk7XG4gICAgY29uc3Qgc3RhYmxlTGF5b3V0ID0gdXNlU2hhbGxvd1N0YWJsZShsYXlvdXQpO1xuICAgIC8vIFN0YWJsZSBzbGljZTogY29uZmlndXJhdGlvbiArIGlkZW50aXR5LXN0YWJsZSBkaXNwYXRjaGVycy9pbnN0YW5jZS5cbiAgICAvLyBDaGFuZ2VzIG9ubHkgd2hlbiBmb3JtLWxldmVsIHByb3BzIGNoYW5nZSDigJQgTk9UIG9uIGtleXN0cm9rZXMsIHNvXG4gICAgLy8gc3Vic2NyaWJlcnMgbGlrZSBTdWJtaXR0ZXIgYW5kIHRoZSBmaWVsZCBmYWN0b3JpZXMgc2tpcCB0aG9zZSByZW5kZXJzLlxuICAgIGNvbnN0IHN0YWJsZVZhbHVlID0gdXNlTWVtbygoKSA9PiAoe1xuICAgICAgICBmb3JtSW5zdGFuY2U6IHByb0Zvcm1Gb3JtSW5zdGFuY2UsXG4gICAgICAgIHNldEZpZWxkVmFsdWU6IGludGVybmFscy5zZXRGaWVsZFZhbHVlLFxuICAgICAgICBzZXRGaWVsZEVycm9yOiBpbnRlcm5hbHMuc2V0RmllbGRFcnJvcixcbiAgICAgICAgc2V0RmllbGRXYXJuaW5nOiBpbnRlcm5hbHMuc2V0RmllbGRXYXJuaW5nLFxuICAgICAgICB2YWxpZGF0ZUZpZWxkQXN5bmM6IGludGVybmFscy52YWxpZGF0ZUZpZWxkQXN5bmMsXG4gICAgICAgIHJlZ2lzdGVyRmllbGQ6IGludGVybmFscy5yZWdpc3RlckZpZWxkLFxuICAgICAgICB1bnJlZ2lzdGVyRmllbGQ6IGludGVybmFscy51bnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIHJldGFpbkZpZWxkOiBpbnRlcm5hbHMucmV0YWluRmllbGQsXG4gICAgICAgIHJlbGVhc2VGaWVsZDogaW50ZXJuYWxzLnJlbGVhc2VGaWVsZCxcbiAgICAgICAgc2l6ZSxcbiAgICAgICAgbGFiZWxBbGlnbixcbiAgICAgICAgLy8gU3VibWl0dGluZy9sb2FkaW5nIGRvZXMgTk9UIGRpc2FibGUgZmllbGRzIOKAlCBvbmx5IHRoZVxuICAgICAgICAvLyBleHBsaWNpdCBgZGlzYWJsZWRgIHByb3AgZG9lcy4gS2VlcGluZyBpc0xvYWRpbmcgb3V0IG9mIHRoaXMgc2xpY2VcbiAgICAgICAgLy8gbWVhbnMgYSBzdWJtaXQgY3ljbGUgbm8gbG9uZ2VyIHJlLXJlbmRlcnMgZXZlcnkgZmllbGQgc2hlbGwuXG4gICAgICAgIGRpc2FibGVkLFxuICAgICAgICB2YWxpZGF0ZVRyaWdnZXIsXG4gICAgICAgIC8vIFByb0Zvcm0gc3BlY2lmaWNzXG4gICAgICAgIG1vZGUsXG4gICAgICAgIGdyaWQsXG4gICAgICAgIGNvbFByb3BzOiBzdGFibGVDb2xQcm9wcyAhPT0gbnVsbCAmJiBzdGFibGVDb2xQcm9wcyAhPT0gdm9pZCAwID8gc3RhYmxlQ29sUHJvcHMgOiBERUZBVUxUX0NPTF9QUk9QUyxcbiAgICAgICAgcmVnaXN0ZXJUcmFuc2Zvcm06IHJlZ2lzdGVyVHJhbnNmb3JtLFxuICAgICAgICB1bnJlZ2lzdGVyVHJhbnNmb3JtOiB1bnJlZ2lzdGVyVHJhbnNmb3JtLFxuICAgICAgICByZWdpc3RlclZhbHVlVHlwZSxcbiAgICAgICAgdW5yZWdpc3RlclZhbHVlVHlwZSxcbiAgICAgICAgZmllbGRQcm9wczogc3RhYmxlRmllbGRQcm9wcyxcbiAgICAgICAgZm9ybUl0ZW1Qcm9wczogc3RhYmxlRm9ybUl0ZW1Qcm9wcyxcbiAgICAgICAgbGF5b3V0OiBzdGFibGVMYXlvdXQsXG4gICAgICAgIGZvcm1Db21wb25lbnRUeXBlLFxuICAgIH0pLCBbXG4gICAgICAgIHByb0Zvcm1Gb3JtSW5zdGFuY2UsXG4gICAgICAgIGludGVybmFscy5zZXRGaWVsZFZhbHVlLFxuICAgICAgICBpbnRlcm5hbHMuc2V0RmllbGRFcnJvcixcbiAgICAgICAgaW50ZXJuYWxzLnNldEZpZWxkV2FybmluZyxcbiAgICAgICAgaW50ZXJuYWxzLnZhbGlkYXRlRmllbGRBc3luYyxcbiAgICAgICAgaW50ZXJuYWxzLnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIGludGVybmFscy51bnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIGludGVybmFscy5yZXRhaW5GaWVsZCxcbiAgICAgICAgaW50ZXJuYWxzLnJlbGVhc2VGaWVsZCxcbiAgICAgICAgc2l6ZSxcbiAgICAgICAgbGFiZWxBbGlnbixcbiAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgIHZhbGlkYXRlVHJpZ2dlcixcbiAgICAgICAgbW9kZSxcbiAgICAgICAgZ3JpZCxcbiAgICAgICAgc3RhYmxlQ29sUHJvcHMsXG4gICAgICAgIHJlZ2lzdGVyVHJhbnNmb3JtLFxuICAgICAgICB1bnJlZ2lzdGVyVHJhbnNmb3JtLFxuICAgICAgICByZWdpc3RlclZhbHVlVHlwZSxcbiAgICAgICAgdW5yZWdpc3RlclZhbHVlVHlwZSxcbiAgICAgICAgc3RhYmxlRmllbGRQcm9wcyxcbiAgICAgICAgc3RhYmxlRm9ybUl0ZW1Qcm9wcyxcbiAgICAgICAgc3RhYmxlTGF5b3V0LFxuICAgICAgICBmb3JtQ29tcG9uZW50VHlwZSxcbiAgICBdKTtcbiAgICBjb25zdCBXcmFwcGVyQ29tcG9uZW50ID0gZ3JpZCA/IFJvdyA6IEZyYWdtZW50O1xuICAgIGNvbnN0IHdyYXBwZXJQcm9wcyA9IGdyaWQgPyBPYmplY3QuYXNzaWduKHt9LCByb3dQcm9wcykgOiB7fTtcbiAgICAvLyBSZXNldCBjYWxsYmFjayBjaGFpbjogdGhlIFN1Ym1pdHRlciByZXNldHMgdGhlIHZhbHVlcyBmaXJzdCwgdGhlbiB0aGVcbiAgICAvLyBzdWJtaXR0ZXItbGV2ZWwgb25SZXNldCwgdGhlbiB0aGUgZm9ybS1sZXZlbCBvblJlc2V0ICh3aXRoIGZpbmFsVmFsdWVzKVxuICAgIC8vIGFuZCB0aGUgVVJMIGNsZWFudXAg4oCUIGZpcmVkIGV4YWN0bHkgb25jZSBwZXIgcmVzZXQgYWN0aW9uLlxuICAgIGNvbnN0IGhhbmRsZVN1Ym1pdHRlclJlc2V0ID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKHR5cGVvZiBzdWJtaXR0ZXIgPT09ICdvYmplY3QnKVxuICAgICAgICAgICAgKF9hID0gc3VibWl0dGVyLm9uUmVzZXQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKHN1Ym1pdHRlcik7XG4gICAgICAgIGZpcmVGb3JtUmVzZXQoKTtcbiAgICB9KTtcbiAgICBjb25zdCBzdWJtaXR0ZXJOb2RlID0gc3VibWl0dGVyICE9PSBmYWxzZSAmJiBtb2RlICE9PSAncmVhZCcgPyAoX2pzeChTdWJtaXR0ZXIsIE9iamVjdC5hc3NpZ24oe30sICh0eXBlb2Ygc3VibWl0dGVyID09PSAnb2JqZWN0JyA/IHN1Ym1pdHRlciA6IHt9KSwgeyBvblJlc2V0OiBoYW5kbGVTdWJtaXR0ZXJSZXNldCwgbG9hZGluZzogaXNMb2FkaW5nIH0pKSkgOiBudWxsO1xuICAgIHJldHVybiAoX2pzeChQcm9Gb3JtU3RhYmxlQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogc3RhYmxlVmFsdWUsIGNoaWxkcmVuOiBfanN4KFByb0Zvcm1TdGF0ZUNvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IHN0b3JlLCBjaGlsZHJlbjogX2pzeHMoXCJmb3JtXCIsIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHsgcmVmOiBmb3JtRWxSZWYsIGNsYXNzTmFtZTogZm9ybUNsYXNzZXModW5kZWZpbmVkLCBqb2luQ2xzKGNsYXNzZXMoKSwgY2xhc3NOYW1lKSksIG9uU3VibWl0OiB3cmFwcGVkSGFuZGxlU3VibWl0LCBvblJlc2V0OiBpbnRlcm5hbHMuaGFuZGxlUmVzZXQsIGNoaWxkcmVuOiBbX2pzeChXcmFwcGVyQ29tcG9uZW50LCBPYmplY3QuYXNzaWduKHt9LCB3cmFwcGVyUHJvcHMsIHsgY2hpbGRyZW46IGNoaWxkcmVuIH0pKSwgc3VibWl0dGVyTm9kZV0gfSkpIH0pIH0pKTtcbn07XG5Qcm9Gb3JtQmFzZS5kaXNwbGF5TmFtZSA9ICdQcm9Gb3JtJztcbmV4cG9ydCBjb25zdCBQcm9Gb3JtID0gbWVtbyhQcm9Gb3JtQmFzZSk7XG5leHBvcnQgZGVmYXVsdCBQcm9Gb3JtOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|