@openmrs/esm-app-shell 4.4.2-pre.739 → 4.4.2-pre.759
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/.turbo/turbo-build.log +103 -106
- package/dist/{5c263d7bf089e4e3.js → 8a3c820bd8a5c087.js} +1 -1
- package/dist/{5c263d7bf089e4e3.js.map → 8a3c820bd8a5c087.js.map} +1 -1
- package/dist/index.html +1 -1
- package/dist/{openmrs.7a866a1fc545cbd2.js → openmrs.d58a9da6f7fab247.js} +2 -2
- package/dist/{openmrs.7a866a1fc545cbd2.js.map → openmrs.d58a9da6f7fab247.js.map} +1 -1
- package/dist/service-worker.js +1 -1
- package/lib/esm-devtools-app/988.js +1 -1
- package/lib/esm-devtools-app/main.js +1 -1
- package/lib/esm-devtools-app/openmrs-esm-devtools-app.js +1 -1
- package/lib/esm-devtools-app/openmrs-esm-devtools-app.js.buildmanifest.json +3 -3
- package/lib/esm-devtools-app/openmrs-esm-devtools-app.old +1 -1
- package/lib/esm-implementer-tools-app/807.js +1 -1
- package/lib/esm-implementer-tools-app/807.js.map +1 -1
- package/lib/esm-implementer-tools-app/833.js +1 -0
- package/lib/esm-implementer-tools-app/main.js +1 -1
- package/lib/esm-implementer-tools-app/main.js.map +1 -1
- package/lib/esm-implementer-tools-app/openmrs-esm-implementer-tools-app.js +1 -1
- package/lib/esm-implementer-tools-app/openmrs-esm-implementer-tools-app.js.buildmanifest.json +25 -3
- package/lib/esm-implementer-tools-app/openmrs-esm-implementer-tools-app.old +1 -1
- package/lib/esm-login-app/337.js +1 -1
- package/lib/esm-login-app/337.js.map +1 -1
- package/lib/esm-login-app/642.js +1 -1
- package/lib/esm-login-app/833.js +1 -0
- package/lib/esm-login-app/main.js +1 -1
- package/lib/esm-login-app/main.js.map +1 -1
- package/lib/esm-login-app/openmrs-esm-login-app.js +1 -1
- package/lib/esm-login-app/openmrs-esm-login-app.js.buildmanifest.json +26 -4
- package/lib/esm-login-app/openmrs-esm-login-app.old +1 -1
- package/lib/esm-offline-tools-app/264.js +1 -1
- package/lib/esm-offline-tools-app/264.js.map +1 -1
- package/lib/esm-offline-tools-app/833.js +1 -0
- package/lib/esm-offline-tools-app/main.js +1 -1
- package/lib/esm-offline-tools-app/main.js.map +1 -1
- package/lib/esm-offline-tools-app/openmrs-esm-offline-tools-app.js +1 -1
- package/lib/esm-offline-tools-app/openmrs-esm-offline-tools-app.js.buildmanifest.json +25 -3
- package/lib/esm-offline-tools-app/openmrs-esm-offline-tools-app.old +1 -1
- package/lib/esm-primary-navigation-app/363.js +1 -1
- package/lib/esm-primary-navigation-app/363.js.map +1 -1
- package/lib/esm-primary-navigation-app/833.js +1 -0
- package/lib/esm-primary-navigation-app/main.js +1 -1
- package/lib/esm-primary-navigation-app/main.js.map +1 -1
- package/lib/esm-primary-navigation-app/openmrs-esm-primary-navigation-app.js +1 -1
- package/lib/esm-primary-navigation-app/openmrs-esm-primary-navigation-app.js.buildmanifest.json +25 -3
- package/lib/esm-primary-navigation-app/openmrs-esm-primary-navigation-app.old +1 -1
- package/lib/openmrs.js +5 -5
- package/lib/service-worker.js +1 -1
- package/package.json +4 -4
- /package/dist/{openmrs.7a866a1fc545cbd2.js.LICENSE.txt → openmrs.d58a9da6f7fab247.js.LICENSE.txt} +0 -0
package/lib/openmrs.js
CHANGED
|
@@ -2601,7 +2601,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
2601
2601
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
2602
2602
|
|
|
2603
2603
|
"use strict";
|
|
2604
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ClickableTile\": () => (/* binding */ ClickableTile),\n/* harmony export */ \"ExpandableTile\": () => (/* binding */ ExpandableTile),\n/* harmony export */ \"SelectableTile\": () => (/* binding */ SelectableTile),\n/* harmony export */ \"Tile\": () => (/* binding */ Tile),\n/* harmony export */ \"TileAboveTheFoldContent\": () => (/* binding */ TileAboveTheFoldContent),\n/* harmony export */ \"TileBelowTheFoldContent\": () => (/* binding */ TileBelowTheFoldContent)\n/* harmony export */ });\n/* harmony import */ var _virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../_virtual/_rollupPluginBabelHelpers.js */ \"../../../node_modules/@carbon/react/es/_virtual/_rollupPluginBabelHelpers.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! prop-types */ \"../../../node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! classnames */ \"../../../node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _Link_Link_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../Link/Link.js */ \"../../../node_modules/@carbon/react/es/components/Link/Link.js\");\n/* harmony import */ var _carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @carbon/icons-react */ \"../../../node_modules/@carbon/icons-react/es/generated/bucket-2.js\");\n/* harmony import */ var _prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../prop-types/deprecate.js */ \"../../../node_modules/@carbon/react/es/prop-types/deprecate.js\");\n/* harmony import */ var _tools_events_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../tools/events.js */ \"../../../node_modules/@carbon/react/es/tools/events.js\");\n/* harmony import */ var _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../internal/usePrefix.js */ \"../../../node_modules/@carbon/react/es/internal/usePrefix.js\");\n/* harmony import */ var _internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../internal/keyboard/match.js */ \"../../../node_modules/@carbon/react/es/internal/keyboard/match.js\");\n/* harmony import */ var _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../internal/keyboard/keys.js */ \"../../../node_modules/@carbon/react/es/internal/keyboard/keys.js\");\n/**\n * Copyright IBM Corp. 2016, 2022\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */ \n\n\n\n\n\n\n\n\n\n\nvar _CheckboxCheckedFille, _Checkbox, _ChevronDown;\nvar _excluded = [\n \"children\",\n \"className\",\n \"light\"\n], _excluded2 = [\n \"children\",\n \"href\",\n \"className\",\n \"handleClick\",\n \"handleKeyDown\",\n \"onClick\",\n \"onKeyDown\",\n \"clicked\",\n \"light\"\n], _excluded3 = [\n \"children\",\n \"id\",\n \"tabIndex\",\n \"value\",\n \"name\",\n \"title\",\n \"iconDescription\",\n \"className\",\n \"handleClick\",\n \"handleKeyDown\",\n \"onClick\",\n \"onChange\",\n \"onKeyDown\",\n \"light\",\n \"disabled\",\n \"selected\"\n], _excluded4 = [\n \"tabIndex\",\n \"className\",\n \"expanded\",\n \"tileMaxHeight\",\n \"tilePadding\",\n \"handleClick\",\n \"onKeyUp\",\n \"tileCollapsedIconText\",\n \"tileExpandedIconText\",\n \"tileCollapsedLabel\",\n \"tileExpandedLabel\",\n \"onBeforeClick\",\n \"light\"\n];\nvar Tile = /*#__PURE__*/ function(_Component) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(Tile, _Component);\n var _super = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(Tile);\n function Tile() {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, Tile);\n return _super.apply(this, arguments);\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(Tile, [\n {\n key: \"render\",\n value: function render() {\n var prefix = this.context;\n var _this$props = this.props, children = _this$props.children, className = _this$props.className, light = _this$props.light, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(_this$props, _excluded);\n var tileClasses = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)({}, \"\".concat(prefix, \"--tile--light\"), light), className);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n className: tileClasses\n }, rest), children);\n }\n }\n ]);\n return Tile;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(Tile, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(Tile, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(Tile, \"defaultProps\", {\n light: false\n});\nvar ClickableTile = /*#__PURE__*/ function(_Component2) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(ClickableTile, _Component2);\n var _super2 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(ClickableTile);\n function ClickableTile() {\n var _this;\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, ClickableTile);\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n _this = _super2.call.apply(_super2, [\n this\n ].concat(args));\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this), \"state\", {});\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this), \"handleClick\", function(evt) {\n evt.persist();\n _this.setState({\n clicked: !_this.state.clicked\n }, function() {\n var _this$props$handleCli, _this$props2, _this$props$onClick, _this$props3;\n (// TODO: Remove handleClick prop when handleClick is deprecated\n (_this$props$handleCli = (_this$props2 = _this.props).handleClick) === null || _this$props$handleCli === void 0 ? void 0 : _this$props$handleCli.call(_this$props2, evt)) || ((_this$props$onClick = (_this$props3 = _this.props).onClick) === null || _this$props$onClick === void 0 ? void 0 : _this$props$onClick.call(_this$props3, evt));\n });\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this), \"handleKeyDown\", function(evt) {\n evt.persist();\n if ((0,_internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__.matches)(evt, [\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Enter,\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Space\n ])) {\n _this.setState({\n clicked: !_this.state.clicked\n }, function() {\n var _this$props$handleKey, _this$props4;\n (// TODO: Remove handleKeyDown prop when handleKeyDown is deprecated\n (_this$props$handleKey = (_this$props4 = _this.props).handleKeyDown) === null || _this$props$handleKey === void 0 ? void 0 : _this$props$handleKey.call(_this$props4, evt)) || _this.props.onKeyDown(evt);\n });\n } else {\n var _this$props$handleKey2, _this$props5;\n // TODO: Remove handleKeyDown prop when handleKeyDown is deprecated\n ((_this$props$handleKey2 = (_this$props5 = _this.props).handleKeyDown) === null || _this$props$handleKey2 === void 0 ? void 0 : _this$props$handleKey2.call(_this$props5, evt)) || _this.props.onKeyDown(evt);\n }\n });\n return _this;\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(ClickableTile, [\n {\n key: \"render\",\n value: function render() {\n var _cx2;\n var prefix = this.context;\n var _this$props6 = this.props, children = _this$props6.children, href = _this$props6.href, className = _this$props6.className;\n _this$props6.handleClick;\n _this$props6.handleKeyDown;\n _this$props6.onClick;\n _this$props6.onKeyDown;\n _this$props6.clicked;\n var light = _this$props6.light, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(_this$props6, _excluded2);\n var classes = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), \"\".concat(prefix, \"--tile--clickable\"), (_cx2 = {}, (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx2, \"\".concat(prefix, \"--tile--is-clicked\"), this.state.clicked), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx2, \"\".concat(prefix, \"--tile--light\"), light), _cx2), className);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Link_Link_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"], (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n href: href,\n className: classes\n }, rest, {\n onClick: this.handleClick,\n onKeyDown: this.handleKeyDown\n }), children);\n }\n }\n ], [\n {\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(_ref, state) {\n var clicked = _ref.clicked;\n var prevClicked = state.prevClicked;\n return prevClicked === clicked ? null : {\n clicked: clicked,\n prevClicked: clicked\n };\n }\n }\n ]);\n return ClickableTile;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ClickableTile, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * Deprecated in v11. Use 'onClick' instead.\n */ handleClick: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The handleClick prop for ClickableTile has been deprecated in favor of onClick. It will be removed in the next major release.\"),\n /**\n * Specify the function to run when the ClickableTile is interacted with via a keyboard\n */ handleKeyDown: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The handleKeyDown prop for ClickableTile has been deprecated in favor of onKeyDown. It will be removed in the next major release.\"),\n /**\n * The href for the link.\n */ href: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Specify the function to run when the ClickableTile is clicked\n */ onClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the ClickableTile is interacted with via a keyboard\n */ onKeyDown: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * The rel property for the link.\n */ rel: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ClickableTile, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ClickableTile, \"defaultProps\", {\n clicked: false,\n onClick: function onClick() {},\n onKeyDown: function onKeyDown() {},\n light: false\n});\nfunction SelectableTile(props) {\n var handleOnClick = function handleOnClick(evt) {\n evt.preventDefault();\n evt.persist();\n setIsSelected(!isSelected);\n clickHandler(evt);\n onChange(evt);\n } // TODO: rename to handleKeyDown when handleKeyDown prop is deprecated\n ;\n var handleOnKeyDown = function handleOnKeyDown(evt) {\n evt.persist();\n if ((0,_internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__.matches)(evt, [\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Enter,\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Space\n ])) {\n evt.preventDefault();\n setIsSelected(!isSelected);\n onChange(evt);\n }\n keyDownHandler(evt);\n };\n var handleChange = function handleChange(event) {\n setIsSelected(event.target.checked);\n onChange(event);\n };\n var _cx3;\n var children = props.children, id = props.id, tabIndex = props.tabIndex, value = props.value, name = props.name, title = props.title;\n props.iconDescription;\n var className = props.className, handleClick = props.handleClick, handleKeyDown = props.handleKeyDown, onClick = props.onClick, onChange = props.onChange, onKeyDown = props.onKeyDown, light = props.light, disabled = props.disabled, selected = props.selected, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(props, _excluded3);\n var prefix = (0,_internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.usePrefix)(); // TODO: replace with onClick when handleClick prop is deprecated\n var clickHandler = handleClick || onClick; // TODO: replace with onKeyDown when handleKeyDown prop is deprecated\n var keyDownHandler = handleKeyDown || onKeyDown;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(selected), _useState2 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.slicedToArray)(_useState, 2), isSelected = _useState2[0], setIsSelected = _useState2[1];\n var input = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var classes = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), \"\".concat(prefix, \"--tile--selectable\"), (_cx3 = {}, (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx3, \"\".concat(prefix, \"--tile--is-selected\"), isSelected), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx3, \"\".concat(prefix, \"--tile--light\"), light), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx3, \"\".concat(prefix, \"--tile--disabled\"), disabled), _cx3), className);\n var inputClasses = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile-input\"), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)({}, \"\".concat(prefix, \"--tile-input--checked\"), isSelected)); // TODO: rename to handleClick when handleClick prop is deprecated\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n setIsSelected(selected);\n }, [\n selected\n ]);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n ref: input,\n tabIndex: -1,\n id: id,\n className: inputClasses,\n value: value,\n onChange: !disabled ? handleChange : null,\n type: \"checkbox\",\n disabled: disabled,\n name: name,\n title: title,\n checked: isSelected\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n htmlFor: id,\n className: classes // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\n ,\n tabIndex: !disabled ? tabIndex : null\n }, rest, {\n onClick: !disabled ? handleOnClick : null,\n onKeyDown: !disabled ? handleOnKeyDown : null\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile__checkmark \").concat(prefix, \"--tile__checkmark--persistent\")\n }, isSelected ? _CheckboxCheckedFille || (_CheckboxCheckedFille = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__.CheckboxCheckedFilled, null)) : _Checkbox || (_Checkbox = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__.Checkbox, null))), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile-content\")\n }, children)));\n}\nSelectableTile.defaultProps = {\n value: \"value\",\n title: \"title\",\n selected: false,\n tabIndex: 0,\n light: false,\n onClick: function onClick() {},\n onChange: function onChange() {},\n onKeyDown: function onKeyDown() {}\n};\nSelectableTile.propTypes = {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * Specify whether the SelectableTile should be disabled\n */ disabled: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Specify the function to run when the SelectableTile is clicked\n */ handleClick: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The `handleClick` prop for `SelectableTile` has been deprecated in favor of `onClick`. It will be removed in the next major release.\"),\n /**\n * Specify the function to run when the SelectableTile is interacted with via a keyboard\n */ handleKeyDown: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The `handleKeyDown` prop for `SelectableTile` has been deprecated in favor of `onKeyDown`. It will be removed in the next major release.\"),\n /**\n * The description of the checkmark icon.\n */ iconDescription: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().string), \"The `iconDescription` prop for `SelectableTile` is no longer needed and has \" + \"been deprecated. It will be removed in the next major release.\"),\n /**\n * The ID of the `<input>`.\n */ id: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * The `name` of the `<input>`.\n */ name: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * The empty handler of the `<input>`.\n */ onChange: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the SelectableTile is clicked\n */ onClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the SelectableTile is interacted with via a keyboard\n */ onKeyDown: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * `true` to select this tile.\n */ selected: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Specify the tab index of the wrapper element\n */ tabIndex: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number),\n /**\n * The `title` of the `<input>`.\n */ title: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * The value of the `<input>`.\n */ value: prop_types__WEBPACK_IMPORTED_MODULE_3___default().oneOfType([\n (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number)\n ]).isRequired\n};\nvar ExpandableTile = /*#__PURE__*/ function(_Component3) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(ExpandableTile, _Component3);\n var _super3 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(ExpandableTile);\n function ExpandableTile() {\n var _this2;\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, ExpandableTile);\n for(var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++){\n args[_key2] = arguments[_key2];\n }\n _this2 = _super3.call.apply(_super3, [\n this\n ].concat(args));\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"state\", {});\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"resizeObserver\", null);\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"componentDidMount\", function() {\n _this2.resizeObserver = new ResizeObserver(function(entries) {\n var _entries = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.slicedToArray)(entries, 1), aboveTheFold = _entries[0];\n _this2.setState({\n tileMaxHeight: aboveTheFold.contentRect.height\n });\n });\n if (_this2.tile) {\n var getStyle = window.getComputedStyle(_this2.tile, null);\n if (_this2.aboveTheFold) {\n _this2.resizeObserver.observe(_this2.aboveTheFold);\n _this2.setState({\n tileMaxHeight: _this2.aboveTheFold.getBoundingClientRect().height,\n tilePadding: parseInt(getStyle.getPropertyValue(\"padding-top\"), 10) + parseInt(getStyle.getPropertyValue(\"padding-bottom\"), 10)\n });\n }\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"componentDidUpdate\", function(prevProps) {\n if (prevProps.expanded !== _this2.props.expanded) {\n _this2.setMaxHeight();\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"setMaxHeight\", function() {\n if (_this2.state.expanded ? _this2.tileContent : _this2.aboveTheFold) {\n _this2.setState({\n tileMaxHeight: _this2.state.expanded ? _this2.tileContent.getBoundingClientRect().height : _this2.aboveTheFold.getBoundingClientRect().height\n });\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"handleClick\", function(evt) {\n if (!_this2.props.onBeforeClick(evt) || evt.target.tagName === \"INPUT\") {\n return;\n }\n evt.persist();\n _this2.setState({\n expanded: !_this2.state.expanded\n }, function() {\n var _this2$props$handleCl, _this2$props, _this2$props$onClick, _this2$props2;\n _this2.setMaxHeight(); // TODO: Remove handleClick prop when handleClick is deprecated\n ((_this2$props$handleCl = (_this2$props = _this2.props).handleClick) === null || _this2$props$handleCl === void 0 ? void 0 : _this2$props$handleCl.call(_this2$props, evt)) || ((_this2$props$onClick = (_this2$props2 = _this2.props).onClick) === null || _this2$props$onClick === void 0 ? void 0 : _this2$props$onClick.call(_this2$props2, evt));\n });\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"handleKeyUp\", function(evt) {\n if (evt.target !== _this2.tile) {\n if ((0,_internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__.matches)(evt, [\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Enter,\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Space\n ])) {\n evt.preventDefault();\n }\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"getChildren\", function() {\n return react__WEBPACK_IMPORTED_MODULE_0___default().Children.toArray(_this2.props.children);\n });\n return _this2;\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(ExpandableTile, [\n {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n }\n },\n {\n key: \"render\",\n value: function render() {\n var _cx5, _this3 = this;\n var _this$props7 = this.props, tabIndex = _this$props7.tabIndex, className = _this$props7.className;\n _this$props7.expanded;\n _this$props7.tileMaxHeight;\n _this$props7.tilePadding;\n _this$props7.handleClick;\n var onKeyUp = _this$props7.onKeyUp, tileCollapsedIconText = _this$props7.tileCollapsedIconText, tileExpandedIconText = _this$props7.tileExpandedIconText, tileCollapsedLabel = _this$props7.tileCollapsedLabel, tileExpandedLabel = _this$props7.tileExpandedLabel;\n _this$props7.onBeforeClick;\n var light = _this$props7.light, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(_this$props7, _excluded4);\n var prefix = this.context;\n var isExpanded = this.state.expanded;\n var classes = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), \"\".concat(prefix, \"--tile--expandable\"), (_cx5 = {}, (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx5, \"\".concat(prefix, \"--tile--is-expanded\"), isExpanded), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx5, \"\".concat(prefix, \"--tile--light\"), light), _cx5), className);\n var tileStyle = {\n maxHeight: isExpanded ? null : this.state.tileMaxHeight + this.state.tilePadding\n };\n var childrenAsArray = this.getChildren();\n return(/*#__PURE__*/ // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n type: \"button\",\n ref: function ref(tile) {\n _this3.tile = tile;\n },\n style: tileStyle,\n className: classes,\n \"aria-expanded\": isExpanded,\n title: isExpanded ? tileExpandedIconText : tileCollapsedIconText\n }, rest, {\n onKeyUp: (0,_tools_events_js__WEBPACK_IMPORTED_MODULE_10__.composeEventHandlers)([\n onKeyUp,\n this.handleKeyUp\n ]),\n onClick: this.handleClick,\n tabIndex: tabIndex\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: function ref(tileContent) {\n _this3.tileContent = tileContent;\n }\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: function ref(aboveTheFold) {\n _this3.aboveTheFold = aboveTheFold;\n },\n className: \"\".concat(prefix, \"--tile-content\")\n }, childrenAsArray[0]), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"\".concat(prefix, \"--tile__chevron\")\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, isExpanded ? tileExpandedLabel : tileCollapsedLabel), _ChevronDown || (_ChevronDown = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__.ChevronDown, null))), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"\".concat(prefix, \"--tile-content\")\n }, childrenAsArray[1]))));\n }\n }\n ], [\n {\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(_ref2, state) {\n var expanded = _ref2.expanded, tileMaxHeight = _ref2.tileMaxHeight, tilePadding = _ref2.tilePadding;\n var prevExpanded = state.prevExpanded, prevTileMaxHeight = state.prevTileMaxHeight, prevTilePadding = state.prevTilePadding, currentExpanded = state.expanded, currentTileMaxHeight = state.tileMaxHeight, currentTilePadding = state.tilePadding;\n var expandedChanged = prevExpanded !== expanded;\n var tileMaxHeightChanged = prevTileMaxHeight !== tileMaxHeight;\n var tilePaddingChanged = prevTilePadding !== tilePadding;\n return !expandedChanged && !tileMaxHeightChanged && !tilePaddingChanged ? null : {\n expanded: !expandedChanged ? currentExpanded : expanded,\n tileMaxHeight: !tileMaxHeightChanged ? currentTileMaxHeight : tileMaxHeight,\n tilePadding: !tilePaddingChanged ? currentTilePadding : tilePadding,\n prevExpanded: expanded,\n prevTileMaxHeight: tileMaxHeight,\n prevTilePadding: tilePadding\n };\n }\n }\n ]);\n return ExpandableTile;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ExpandableTile, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` if the tile is expanded.\n */ expanded: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Deprecated in v11. Use 'onClick' instead.\n */ handleClick: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The handleClick prop for ExpandableTile has been deprecated in favor of onClick. It will be removed in the next major release.\"),\n /**\n * An ID that can be provided to aria-labelledby\n */ id: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * optional handler to decide whether to ignore a click. returns false if click should be ignored\n */ onBeforeClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the ExpandableTile is clicked\n */ onClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * optional handler to trigger a function when a key is pressed\n */ onKeyUp: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * The `tabindex` attribute.\n */ tabIndex: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number),\n /**\n * The description of the \"collapsed\" icon that can be read by screen readers.\n */ tileCollapsedIconText: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * When \"collapsed\", a label to appear next to the chevron (e.g., \"View more\").\n */ tileCollapsedLabel: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * The description of the \"expanded\" icon that can be read by screen readers.\n */ tileExpandedIconText: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * When \"expanded\", a label to appear next to the chevron (e.g., \"View less\").\n */ tileExpandedLabel: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ExpandableTile, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ExpandableTile, \"defaultProps\", {\n tabIndex: 0,\n expanded: false,\n tileMaxHeight: 0,\n tilePadding: 0,\n onBeforeClick: function onBeforeClick() {\n return true;\n },\n onClick: function onClick() {},\n tileCollapsedIconText: \"Interact to expand Tile\",\n tileExpandedIconText: \"Interact to collapse Tile\",\n light: false\n});\nvar TileAboveTheFoldContent = /*#__PURE__*/ function(_Component4) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(TileAboveTheFoldContent, _Component4);\n var _super4 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(TileAboveTheFoldContent);\n function TileAboveTheFoldContent() {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, TileAboveTheFoldContent);\n return _super4.apply(this, arguments);\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(TileAboveTheFoldContent, [\n {\n key: \"render\",\n value: function render() {\n var prefix = this.context;\n var children = this.props.children;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile-content__above-the-fold\")\n }, children);\n }\n }\n ]);\n return TileAboveTheFoldContent;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileAboveTheFoldContent, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileAboveTheFoldContent, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\nvar TileBelowTheFoldContent = /*#__PURE__*/ function(_Component5) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(TileBelowTheFoldContent, _Component5);\n var _super5 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(TileBelowTheFoldContent);\n function TileBelowTheFoldContent() {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, TileBelowTheFoldContent);\n return _super5.apply(this, arguments);\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(TileBelowTheFoldContent, [\n {\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n var prefix = this.context;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile-content__below-the-fold\")\n }, children);\n }\n }\n ]);\n return TileBelowTheFoldContent;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileBelowTheFoldContent, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileBelowTheFoldContent, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BjYXJib24vcmVhY3QvZXMvY29tcG9uZW50cy9UaWxlL1RpbGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7Q0FLQyxHQUUrVztBQUNqUztBQUM1QztBQUNQO0FBQ087QUFDZ0Q7QUFDN0I7QUFDTztBQUNVO0FBQ1o7QUFDSTtBQUUvRCxJQUFJb0MsdUJBQXVCQyxXQUFXQztBQUV0QyxJQUFJQyxZQUFZO0lBQUM7SUFBWTtJQUFhO0NBQVEsRUFDOUNDLGFBQWE7SUFBQztJQUFZO0lBQVE7SUFBYTtJQUFlO0lBQWlCO0lBQVc7SUFBYTtJQUFXO0NBQVEsRUFDMUhDLGFBQWE7SUFBQztJQUFZO0lBQU07SUFBWTtJQUFTO0lBQVE7SUFBUztJQUFtQjtJQUFhO0lBQWU7SUFBaUI7SUFBVztJQUFZO0lBQWE7SUFBUztJQUFZO0NBQVcsRUFDMU1DLGFBQWE7SUFBQztJQUFZO0lBQWE7SUFBWTtJQUFpQjtJQUFlO0lBQWU7SUFBVztJQUF5QjtJQUF3QjtJQUFzQjtJQUFxQjtJQUFpQjtDQUFRO0FBQ3RPLElBQUlDLE9BQU8sV0FBVyxHQUFFLFNBQVVDLFVBQVUsRUFBRTtJQUM1QzNDLDhFQUFTQSxDQUFDMEMsTUFBTUM7SUFFaEIsSUFBSUMsU0FBUzFDLGlGQUFZQSxDQUFDd0M7SUFFMUIsU0FBU0EsT0FBTztRQUNkdEMsb0ZBQWVBLENBQUMsSUFBSSxFQUFFc0M7UUFFdEIsT0FBT0UsT0FBT0MsS0FBSyxDQUFDLElBQUksRUFBRUM7SUFDNUI7SUFFQXhDLGlGQUFZQSxDQUFDb0MsTUFBTTtRQUFDO1lBQ2xCSyxLQUFLO1lBQ0xDLE9BQU8sU0FBU0MsU0FBUztnQkFDdkIsSUFBSUMsU0FBUyxJQUFJLENBQUNDLE9BQU87Z0JBRXpCLElBQUlDLGNBQWMsSUFBSSxDQUFDQyxLQUFLLEVBQ3hCQyxXQUFXRixZQUFZRSxRQUFRLEVBQy9CQyxZQUFZSCxZQUFZRyxTQUFTLEVBQ2pDQyxRQUFR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QUM2TCx5QkFBeUIsZUFBZXpLLGlFQUFhQTtBQUU0QyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BjYXJib24vcmVhY3QvZXMvY29tcG9uZW50cy9UaWxlL1RpbGUuanM/MGNhNiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCBJQk0gQ29ycC4gMjAxNiwgMjAyMlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZS0yLjAgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pbXBvcnQgeyBpbmhlcml0cyBhcyBfaW5oZXJpdHMsIGNyZWF0ZVN1cGVyIGFzIF9jcmVhdGVTdXBlciwgY2xhc3NDYWxsQ2hlY2sgYXMgX2NsYXNzQ2FsbENoZWNrLCBjcmVhdGVDbGFzcyBhcyBfY3JlYXRlQ2xhc3MsIG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIGFzIF9vYmplY3RXaXRob3V0UHJvcGVydGllcywgZGVmaW5lUHJvcGVydHkgYXMgX2RlZmluZVByb3BlcnR5LCBleHRlbmRzIGFzIF9leHRlbmRzLCBhc3NlcnRUaGlzSW5pdGlhbGl6ZWQgYXMgX2Fzc2VydFRoaXNJbml0aWFsaXplZCwgc2xpY2VkVG9BcnJheSBhcyBfc2xpY2VkVG9BcnJheSB9IGZyb20gJy4uLy4uL192aXJ0dWFsL19yb2xsdXBQbHVnaW5CYWJlbEhlbHBlcnMuanMnO1xuaW1wb3J0IFJlYWN0X19kZWZhdWx0LCB7IENvbXBvbmVudCwgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjeCBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBMaW5rIGZyb20gJy4uL0xpbmsvTGluay5qcyc7XG5pbXBvcnQgeyBDaGVja2JveENoZWNrZWRGaWxsZWQsIENoZWNrYm94LCBDaGV2cm9uRG93biB9IGZyb20gJ0BjYXJib24vaWNvbnMtcmVhY3QnO1xuaW1wb3J0IGRlcHJlY2F0ZSBmcm9tICcuLi8uLi9wcm9wLXR5cGVzL2RlcHJlY2F0ZS5qcyc7XG5pbXBvcnQgeyBjb21wb3NlRXZlbnRIYW5kbGVycyB9IGZyb20gJy4uLy4uL3Rvb2xzL2V2ZW50cy5qcyc7XG5pbXBvcnQgeyBQcmVmaXhDb250ZXh0LCB1c2VQcmVmaXggfSBmcm9tICcuLi8uLi9pbnRlcm5hbC91c2VQcmVmaXguanMnO1xuaW1wb3J0IHsgbWF0Y2hlcyB9IGZyb20gJy4uLy4uL2ludGVybmFsL2tleWJvYXJkL21hdGNoLmpzJztcbmltcG9ydCB7IEVudGVyLCBTcGFjZSB9IGZyb20gJy4uLy4uL2ludGVybmFsL2tleWJvYXJkL2tleXMuanMnO1xuXG52YXIgX0NoZWNrYm94Q2hlY2tlZEZpbGxlLCBfQ2hlY2tib3gsIF9DaGV2cm9uRG93bjtcblxudmFyIF9leGNsdWRlZCA9IFtcImNoaWxkcmVuXCIsIFwiY2xhc3NOYW1lXCIsIFwibGlnaHRcIl0sXG4gICAgX2V4Y2x1ZGVkMiA9IFtcImNoaWxkcmVuXCIsIFwiaHJlZlwiLCBcImNsYXNzTmFtZVwiLCBcImhhbmRsZUNsaWNrXCIsIFwiaGFuZGxlS2V5RG93blwiLCBcIm9uQ2xpY2tcIiwgXCJvbktleURvd25cIiwgXCJjbGlja2VkXCIsIFwibGlnaHRcIl0sXG4gICAgX2V4Y2x1ZGVkMyA9IFtcImNoaWxkcmVuXCIsIFwiaWRcIiwgXCJ0YWJJbmRleFwiLCBcInZhbHVlXCIsIFwibmFtZVwiLCBcInRpdGxlXCIsIFwiaWNvbkRlc2NyaXB0aW9uXCIsIFwiY2xhc3NOYW1lXCIsIFwiaGFuZGxlQ2xpY2tcIiwgXCJoYW5kbGVLZXlEb3duXCIsIFwib25DbGlja1wiLCBcIm9uQ2hhbmdlXCIsIFwib25LZXlEb3duXCIsIFwibGlnaHRcIiwgXCJkaXNhYmxlZFwiLCBcInNlbGVjdGVkXCJdLFxuICAgIF9leGNsdWRlZDQgPSBbXCJ0YWJJbmRleFwiLCBcImNsYXNzTmFtZVwiLCBcImV4cGFuZGVkXCIsIFwidGlsZU1heEhlaWdodFwiLCBcInRpbGVQYWRkaW5nXCIsIFwiaGFuZGxlQ2xpY2tcIiwgXCJvbktleVVwXCIsIFwidGlsZUNvbGxhcHNlZEljb25UZXh0XCIsIFwidGlsZUV4cGFuZGVkSWNvblRleHRcIiwgXCJ0aWxlQ29sbGFwc2VkTGFiZWxcIiwgXCJ0aWxlRXhwYW5kZWRMYWJlbFwiLCBcIm9uQmVmb3JlQ2xpY2tcIiwgXCJsaWdodFwiXTtcbnZhciBUaWxlID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhUaWxlLCBfQ29tcG9uZW50KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKFRpbGUpO1xuXG4gIGZ1bmN0aW9uIFRpbGUoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFRpbGUpO1xuXG4gICAgcmV0dXJuIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFRpbGUsIFt7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgcHJlZml4ID0gdGhpcy5jb250ZXh0O1xuXG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIGNoaWxkcmVuID0gX3RoaXMkcHJvcHMuY2hpbGRyZW4sXG4gICAgICAgICAgY2xhc3NOYW1lID0gX3RoaXMkcHJvcHMuY2xhc3NOYW1lLFxuICAgICAgICAgIGxpZ2h0ID0gX3RoaXMkcHJvcHMubGlnaHQsXG4gICAgICAgICAgcmVzdCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfdGhpcyRwcm9wcywgX2V4Y2x1ZGVkKTtcblxuICAgICAgdmFyIHRpbGVDbGFzc2VzID0gY3goXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZVwiKSwgX2RlZmluZVByb3BlcnR5KHt9LCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1saWdodFwiKSwgbGlnaHQpLCBjbGFzc05hbWUpO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIF9leHRlbmRzKHtcbiAgICAgICAgY2xhc3NOYW1lOiB0aWxlQ2xhc3Nlc1xuICAgICAgfSwgcmVzdCksIGNoaWxkcmVuKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gVGlsZTtcbn0oQ29tcG9uZW50KTtcblxuX2RlZmluZVByb3BlcnR5KFRpbGUsIFwicHJvcFR5cGVzXCIsIHtcbiAgLyoqXG4gICAqIFRoZSBjaGlsZCBub2Rlcy5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcblxuICAvKipcbiAgICogVGhlIENTUyBjbGFzcyBuYW1lcy5cbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogYHRydWVgIHRvIHVzZSB0aGUgbGlnaHQgdmVyc2lvbi4gRm9yIHVzZSBvbiAkdWktMDEgYmFja2dyb3VuZHMgb25seS5cbiAgICogRG9uJ3QgdXNlIHRoaXMgdG8gbWFrZSB0aWxlIGJhY2tncm91bmQgY29sb3Igc2FtZSBhcyBjb250YWluZXIgYmFja2dyb3VuZCBjb2xvci5cbiAgICovXG4gIGxpZ2h0OiBQcm9wVHlwZXMuYm9vbFxufSk7XG5cbl9kZWZpbmVQcm9wZXJ0eShUaWxlLCBcImNvbnRleHRUeXBlXCIsIFByZWZpeENvbnRleHQpO1xuXG5fZGVmaW5lUHJvcGVydHkoVGlsZSwgXCJkZWZhdWx0UHJvcHNcIiwge1xuICBsaWdodDogZmFsc2Vcbn0pO1xuXG52YXIgQ2xpY2thYmxlVGlsZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudDIpIHtcbiAgX2luaGVyaXRzKENsaWNrYWJsZVRpbGUsIF9Db21wb25lbnQyKTtcblxuICB2YXIgX3N1cGVyMiA9IF9jcmVhdGVTdXBlcihDbGlja2FibGVUaWxlKTtcblxuICBmdW5jdGlvbiBDbGlja2FibGVUaWxlKCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDbGlja2FibGVUaWxlKTtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBfdGhpcyA9IF9zdXBlcjIuY2FsbC5hcHBseShfc3VwZXIyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJzdGF0ZVwiLCB7fSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaGFuZGxlQ2xpY2tcIiwgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgZXZ0LnBlcnNpc3QoKTtcblxuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBjbGlja2VkOiAhX3RoaXMuc3RhdGUuY2xpY2tlZFxuICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMkcHJvcHMkaGFuZGxlQ2xpLCBfdGhpcyRwcm9wczIsIF90aGlzJHByb3BzJG9uQ2xpY2ssIF90aGlzJHByb3BzMztcblxuICAgICAgICAvLyBUT0RPOiBSZW1vdmUgaGFuZGxlQ2xpY2sgcHJvcCB3aGVuIGhhbmRsZUNsaWNrIGlzIGRlcHJlY2F0ZWRcbiAgICAgICAgKChfdGhpcyRwcm9wcyRoYW5kbGVDbGkgPSAoX3RoaXMkcHJvcHMyID0gX3RoaXMucHJvcHMpLmhhbmRsZUNsaWNrKSA9PT0gbnVsbCB8fCBfdGhpcyRwcm9wcyRoYW5kbGVDbGkgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJHByb3BzJGhhbmRsZUNsaS5jYWxsKF90aGlzJHByb3BzMiwgZXZ0KSkgfHwgKChfdGhpcyRwcm9wcyRvbkNsaWNrID0gKF90aGlzJHByb3BzMyA9IF90aGlzLnByb3BzKS5vbkNsaWNrKSA9PT0gbnVsbCB8fCBfdGhpcyRwcm9wcyRvbkNsaWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRwcm9wcyRvbkNsaWNrLmNhbGwoX3RoaXMkcHJvcHMzLCBldnQpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImhhbmRsZUtleURvd25cIiwgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgZXZ0LnBlcnNpc3QoKTtcblxuICAgICAgaWYgKG1hdGNoZXMoZXZ0LCBbRW50ZXIsIFNwYWNlXSkpIHtcbiAgICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgIGNsaWNrZWQ6ICFfdGhpcy5zdGF0ZS5jbGlja2VkXG4gICAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB2YXIgX3RoaXMkcHJvcHMkaGFuZGxlS2V5LCBfdGhpcyRwcm9wczQ7XG5cbiAgICAgICAgICAvLyBUT0RPOiBSZW1vdmUgaGFuZGxlS2V5RG93biBwcm9wIHdoZW4gaGFuZGxlS2V5RG93biBpcyBkZXByZWNhdGVkXG4gICAgICAgICAgKChfdGhpcyRwcm9wcyRoYW5kbGVLZXkgPSAoX3RoaXMkcHJvcHM0ID0gX3RoaXMucHJvcHMpLmhhbmRsZUtleURvd24pID09PSBudWxsIHx8IF90aGlzJHByb3BzJGhhbmRsZUtleSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkcHJvcHMkaGFuZGxlS2V5LmNhbGwoX3RoaXMkcHJvcHM0LCBldnQpKSB8fCBfdGhpcy5wcm9wcy5vbktleURvd24oZXZ0KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgX3RoaXMkcHJvcHMkaGFuZGxlS2V5MiwgX3RoaXMkcHJvcHM1O1xuXG4gICAgICAgIC8vIFRPRE86IFJlbW92ZSBoYW5kbGVLZXlEb3duIHByb3Agd2hlbiBoYW5kbGVLZXlEb3duIGlzIGRlcHJlY2F0ZWRcbiAgICAgICAgKChfdGhpcyRwcm9wcyRoYW5kbGVLZXkyID0gKF90aGlzJHByb3BzNSA9IF90aGlzLnByb3BzKS5oYW5kbGVLZXlEb3duKSA9PT0gbnVsbCB8fCBfdGhpcyRwcm9wcyRoYW5kbGVLZXkyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRwcm9wcyRoYW5kbGVLZXkyLmNhbGwoX3RoaXMkcHJvcHM1LCBldnQpKSB8fCBfdGhpcy5wcm9wcy5vbktleURvd24oZXZ0KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhDbGlja2FibGVUaWxlLCBbe1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIF9jeDI7XG5cbiAgICAgIHZhciBwcmVmaXggPSB0aGlzLmNvbnRleHQ7XG5cbiAgICAgIHZhciBfdGhpcyRwcm9wczYgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIGNoaWxkcmVuID0gX3RoaXMkcHJvcHM2LmNoaWxkcmVuLFxuICAgICAgICAgIGhyZWYgPSBfdGhpcyRwcm9wczYuaHJlZixcbiAgICAgICAgICBjbGFzc05hbWUgPSBfdGhpcyRwcm9wczYuY2xhc3NOYW1lO1xuICAgICAgICAgIF90aGlzJHByb3BzNi5oYW5kbGVDbGljaztcbiAgICAgICAgICBfdGhpcyRwcm9wczYuaGFuZGxlS2V5RG93bjtcbiAgICAgICAgICBfdGhpcyRwcm9wczYub25DbGljaztcbiAgICAgICAgICBfdGhpcyRwcm9wczYub25LZXlEb3duO1xuICAgICAgICAgIF90aGlzJHByb3BzNi5jbGlja2VkO1xuICAgICAgICAgIHZhciBsaWdodCA9IF90aGlzJHByb3BzNi5saWdodCxcbiAgICAgICAgICByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF90aGlzJHByb3BzNiwgX2V4Y2x1ZGVkMik7XG5cbiAgICAgIHZhciBjbGFzc2VzID0gY3goXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZVwiKSwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0tY2xpY2thYmxlXCIpLCAoX2N4MiA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2N4MiwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0taXMtY2xpY2tlZFwiKSwgdGhpcy5zdGF0ZS5jbGlja2VkKSwgX2RlZmluZVByb3BlcnR5KF9jeDIsIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWxpZ2h0XCIpLCBsaWdodCksIF9jeDIpLCBjbGFzc05hbWUpO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KExpbmssIF9leHRlbmRzKHtcbiAgICAgICAgaHJlZjogaHJlZixcbiAgICAgICAgY2xhc3NOYW1lOiBjbGFzc2VzXG4gICAgICB9LCByZXN0LCB7XG4gICAgICAgIG9uQ2xpY2s6IHRoaXMuaGFuZGxlQ2xpY2ssXG4gICAgICAgIG9uS2V5RG93bjogdGhpcy5oYW5kbGVLZXlEb3duXG4gICAgICB9KSwgY2hpbGRyZW4pO1xuICAgIH1cbiAgfV0sIFt7XG4gICAga2V5OiBcImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc1wiLFxuICAgIHZhbHVlOiAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvcHJvcC10eXBlc1xuICAgIGZ1bmN0aW9uIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhfcmVmLCBzdGF0ZSkge1xuICAgICAgdmFyIGNsaWNrZWQgPSBfcmVmLmNsaWNrZWQ7XG4gICAgICB2YXIgcHJldkNsaWNrZWQgPSBzdGF0ZS5wcmV2Q2xpY2tlZDtcbiAgICAgIHJldHVybiBwcmV2Q2xpY2tlZCA9PT0gY2xpY2tlZCA/IG51bGwgOiB7XG4gICAgICAgIGNsaWNrZWQ6IGNsaWNrZWQsXG4gICAgICAgIHByZXZDbGlja2VkOiBjbGlja2VkXG4gICAgICB9O1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBDbGlja2FibGVUaWxlO1xufShDb21wb25lbnQpO1xuXG5fZGVmaW5lUHJvcGVydHkoQ2xpY2thYmxlVGlsZSwgXCJwcm9wVHlwZXNcIiwge1xuICAvKipcbiAgICogVGhlIGNoaWxkIG5vZGVzLlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuXG4gIC8qKlxuICAgKiBUaGUgQ1NTIGNsYXNzIG5hbWVzLlxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBEZXByZWNhdGVkIGluIHYxMS4gVXNlICdvbkNsaWNrJyBpbnN0ZWFkLlxuICAgKi9cbiAgaGFuZGxlQ2xpY2s6IGRlcHJlY2F0ZShQcm9wVHlwZXMuZnVuYywgJ1RoZSBoYW5kbGVDbGljayBwcm9wIGZvciBDbGlja2FibGVUaWxlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2Ygb25DbGljay4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuJyksXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGZ1bmN0aW9uIHRvIHJ1biB3aGVuIHRoZSBDbGlja2FibGVUaWxlIGlzIGludGVyYWN0ZWQgd2l0aCB2aWEgYSBrZXlib2FyZFxuICAgKi9cbiAgaGFuZGxlS2V5RG93bjogZGVwcmVjYXRlKFByb3BUeXBlcy5mdW5jLCAnVGhlIGhhbmRsZUtleURvd24gcHJvcCBmb3IgQ2xpY2thYmxlVGlsZSBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIG9uS2V5RG93bi4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuJyksXG5cbiAgLyoqXG4gICAqIFRoZSBocmVmIGZvciB0aGUgbGluay5cbiAgICovXG4gIGhyZWY6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIGB0cnVlYCB0byB1c2UgdGhlIGxpZ2h0IHZlcnNpb24uIEZvciB1c2Ugb24gJHVpLTAxIGJhY2tncm91bmRzIG9ubHkuXG4gICAqIERvbid0IHVzZSB0aGlzIHRvIG1ha2UgdGlsZSBiYWNrZ3JvdW5kIGNvbG9yIHNhbWUgYXMgY29udGFpbmVyIGJhY2tncm91bmQgY29sb3IuXG4gICAqL1xuICBsaWdodDogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGZ1bmN0aW9uIHRvIHJ1biB3aGVuIHRoZSBDbGlja2FibGVUaWxlIGlzIGNsaWNrZWRcbiAgICovXG4gIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBmdW5jdGlvbiB0byBydW4gd2hlbiB0aGUgQ2xpY2thYmxlVGlsZSBpcyBpbnRlcmFjdGVkIHdpdGggdmlhIGEga2V5Ym9hcmRcbiAgICovXG4gIG9uS2V5RG93bjogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIFRoZSByZWwgcHJvcGVydHkgZm9yIHRoZSBsaW5rLlxuICAgKi9cbiAgcmVsOiBQcm9wVHlwZXMuc3RyaW5nXG59KTtcblxuX2RlZmluZVByb3BlcnR5KENsaWNrYWJsZVRpbGUsIFwiY29udGV4dFR5cGVcIiwgUHJlZml4Q29udGV4dCk7XG5cbl9kZWZpbmVQcm9wZXJ0eShDbGlja2FibGVUaWxlLCBcImRlZmF1bHRQcm9wc1wiLCB7XG4gIGNsaWNrZWQ6IGZhbHNlLFxuICBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKCkge30sXG4gIG9uS2V5RG93bjogZnVuY3Rpb24gb25LZXlEb3duKCkge30sXG4gIGxpZ2h0OiBmYWxzZVxufSk7XG5cbmZ1bmN0aW9uIFNlbGVjdGFibGVUaWxlKHByb3BzKSB7XG4gIHZhciBfY3gzO1xuXG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgICAgaWQgPSBwcm9wcy5pZCxcbiAgICAgIHRhYkluZGV4ID0gcHJvcHMudGFiSW5kZXgsXG4gICAgICB2YWx1ZSA9IHByb3BzLnZhbHVlLFxuICAgICAgbmFtZSA9IHByb3BzLm5hbWUsXG4gICAgICB0aXRsZSA9IHByb3BzLnRpdGxlO1xuICAgICAgcHJvcHMuaWNvbkRlc2NyaXB0aW9uO1xuICAgICAgdmFyIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSxcbiAgICAgIGhhbmRsZUNsaWNrID0gcHJvcHMuaGFuZGxlQ2xpY2ssXG4gICAgICBoYW5kbGVLZXlEb3duID0gcHJvcHMuaGFuZGxlS2V5RG93bixcbiAgICAgIG9uQ2xpY2sgPSBwcm9wcy5vbkNsaWNrLFxuICAgICAgb25DaGFuZ2UgPSBwcm9wcy5vbkNoYW5nZSxcbiAgICAgIG9uS2V5RG93biA9IHByb3BzLm9uS2V5RG93bixcbiAgICAgIGxpZ2h0ID0gcHJvcHMubGlnaHQsXG4gICAgICBkaXNhYmxlZCA9IHByb3BzLmRpc2FibGVkLFxuICAgICAgc2VsZWN0ZWQgPSBwcm9wcy5zZWxlY3RlZCxcbiAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMocHJvcHMsIF9leGNsdWRlZDMpO1xuXG4gIHZhciBwcmVmaXggPSB1c2VQcmVmaXgoKTsgLy8gVE9ETzogcmVwbGFjZSB3aXRoIG9uQ2xpY2sgd2hlbiBoYW5kbGVDbGljayBwcm9wIGlzIGRlcHJlY2F0ZWRcblxuICB2YXIgY2xpY2tIYW5kbGVyID0gaGFuZGxlQ2xpY2sgfHwgb25DbGljazsgLy8gVE9ETzogcmVwbGFjZSB3aXRoIG9uS2V5RG93biB3aGVuIGhhbmRsZUtleURvd24gcHJvcCBpcyBkZXByZWNhdGVkXG5cbiAgdmFyIGtleURvd25IYW5kbGVyID0gaGFuZGxlS2V5RG93biB8fCBvbktleURvd247XG5cbiAgdmFyIF91c2VTdGF0ZSA9IHVzZVN0YXRlKHNlbGVjdGVkKSxcbiAgICAgIF91c2VTdGF0ZTIgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUsIDIpLFxuICAgICAgaXNTZWxlY3RlZCA9IF91c2VTdGF0ZTJbMF0sXG4gICAgICBzZXRJc1NlbGVjdGVkID0gX3VzZVN0YXRlMlsxXTtcblxuICB2YXIgaW5wdXQgPSB1c2VSZWYobnVsbCk7XG4gIHZhciBjbGFzc2VzID0gY3goXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZVwiKSwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0tc2VsZWN0YWJsZVwiKSwgKF9jeDMgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9jeDMsIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWlzLXNlbGVjdGVkXCIpLCBpc1NlbGVjdGVkKSwgX2RlZmluZVByb3BlcnR5KF9jeDMsIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWxpZ2h0XCIpLCBsaWdodCksIF9kZWZpbmVQcm9wZXJ0eShfY3gzLCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1kaXNhYmxlZFwiKSwgZGlzYWJsZWQpLCBfY3gzKSwgY2xhc3NOYW1lKTtcbiAgdmFyIGlucHV0Q2xhc3NlcyA9IGN4KFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtaW5wdXRcIiksIF9kZWZpbmVQcm9wZXJ0eSh7fSwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS1pbnB1dC0tY2hlY2tlZFwiKSwgaXNTZWxlY3RlZCkpOyAvLyBUT0RPOiByZW5hbWUgdG8gaGFuZGxlQ2xpY2sgd2hlbiBoYW5kbGVDbGljayBwcm9wIGlzIGRlcHJlY2F0ZWRcblxuICBmdW5jdGlvbiBoYW5kbGVPbkNsaWNrKGV2dCkge1xuICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2dC5wZXJzaXN0KCk7XG4gICAgc2V0SXNTZWxlY3RlZCghaXNTZWxlY3RlZCk7XG4gICAgY2xpY2tIYW5kbGVyKGV2dCk7XG4gICAgb25DaGFuZ2UoZXZ0KTtcbiAgfSAvLyBUT0RPOiByZW5hbWUgdG8gaGFuZGxlS2V5RG93biB3aGVuIGhhbmRsZUtleURvd24gcHJvcCBpcyBkZXByZWNhdGVkXG5cblxuICBmdW5jdGlvbiBoYW5kbGVPbktleURvd24oZXZ0KSB7XG4gICAgZXZ0LnBlcnNpc3QoKTtcblxuICAgIGlmIChtYXRjaGVzKGV2dCwgW0VudGVyLCBTcGFjZV0pKSB7XG4gICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHNldElzU2VsZWN0ZWQoIWlzU2VsZWN0ZWQpO1xuICAgICAgb25DaGFuZ2UoZXZ0KTtcbiAgICB9XG5cbiAgICBrZXlEb3duSGFuZGxlcihldnQpO1xuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlQ2hhbmdlKGV2ZW50KSB7XG4gICAgc2V0SXNTZWxlY3RlZChldmVudC50YXJnZXQuY2hlY2tlZCk7XG4gICAgb25DaGFuZ2UoZXZlbnQpO1xuICB9XG5cbiAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBzZXRJc1NlbGVjdGVkKHNlbGVjdGVkKTtcbiAgfSwgW3NlbGVjdGVkXSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChSZWFjdF9fZGVmYXVsdC5GcmFnbWVudCwgbnVsbCwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7XG4gICAgcmVmOiBpbnB1dCxcbiAgICB0YWJJbmRleDogLTEsXG4gICAgaWQ6IGlkLFxuICAgIGNsYXNzTmFtZTogaW5wdXRDbGFzc2VzLFxuICAgIHZhbHVlOiB2YWx1ZSxcbiAgICBvbkNoYW5nZTogIWRpc2FibGVkID8gaGFuZGxlQ2hhbmdlIDogbnVsbCxcbiAgICB0eXBlOiBcImNoZWNrYm94XCIsXG4gICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgIG5hbWU6IG5hbWUsXG4gICAgdGl0bGU6IHRpdGxlLFxuICAgIGNoZWNrZWQ6IGlzU2VsZWN0ZWRcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwibGFiZWxcIiwgX2V4dGVuZHMoe1xuICAgIGh0bWxGb3I6IGlkLFxuICAgIGNsYXNzTmFtZTogY2xhc3NlcyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganN4LWExMXkvbm8tbm9uaW50ZXJhY3RpdmUtdGFiaW5kZXhcbiAgICAsXG4gICAgdGFiSW5kZXg6ICFkaXNhYmxlZCA/IHRhYkluZGV4IDogbnVsbFxuICB9LCByZXN0LCB7XG4gICAgb25DbGljazogIWRpc2FibGVkID8gaGFuZGxlT25DbGljayA6IG51bGwsXG4gICAgb25LZXlEb3duOiAhZGlzYWJsZWQgPyBoYW5kbGVPbktleURvd24gOiBudWxsXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZV9fY2hlY2ttYXJrIFwiKS5jb25jYXQocHJlZml4LCBcIi0tdGlsZV9fY2hlY2ttYXJrLS1wZXJzaXN0ZW50XCIpXG4gIH0sIGlzU2VsZWN0ZWQgPyBfQ2hlY2tib3hDaGVja2VkRmlsbGUgfHwgKF9DaGVja2JveENoZWNrZWRGaWxsZSA9IC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KENoZWNrYm94Q2hlY2tlZEZpbGxlZCwgbnVsbCkpIDogX0NoZWNrYm94IHx8IChfQ2hlY2tib3ggPSAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChDaGVja2JveCwgbnVsbCkpKSwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtY29udGVudFwiKVxuICB9LCBjaGlsZHJlbikpKTtcbn1cblNlbGVjdGFibGVUaWxlLmRlZmF1bHRQcm9wcyA9IHtcbiAgdmFsdWU6ICd2YWx1ZScsXG4gIHRpdGxlOiAndGl0bGUnLFxuICBzZWxlY3RlZDogZmFsc2UsXG4gIHRhYkluZGV4OiAwLFxuICBsaWdodDogZmFsc2UsXG4gIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soKSB7fSxcbiAgb25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKCkge30sXG4gIG9uS2V5RG93bjogZnVuY3Rpb24gb25LZXlEb3duKCkge31cbn07XG5TZWxlY3RhYmxlVGlsZS5wcm9wVHlwZXMgPSB7XG4gIC8qKlxuICAgKiBUaGUgY2hpbGQgbm9kZXMuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG5cbiAgLyoqXG4gICAqIFRoZSBDU1MgY2xhc3MgbmFtZXMuXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgd2hldGhlciB0aGUgU2VsZWN0YWJsZVRpbGUgc2hvdWxkIGJlIGRpc2FibGVkXG4gICAqL1xuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGZ1bmN0aW9uIHRvIHJ1biB3aGVuIHRoZSBTZWxlY3RhYmxlVGlsZSBpcyBjbGlja2VkXG4gICAqL1xuICBoYW5kbGVDbGljazogZGVwcmVjYXRlKFByb3BUeXBlcy5mdW5jLCAnVGhlIGBoYW5kbGVDbGlja2AgcHJvcCBmb3IgYFNlbGVjdGFibGVUaWxlYCBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGBvbkNsaWNrYC4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuJyksXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGZ1bmN0aW9uIHRvIHJ1biB3aGVuIHRoZSBTZWxlY3RhYmxlVGlsZSBpcyBpbnRlcmFjdGVkIHdpdGggdmlhIGEga2V5Ym9hcmRcbiAgICovXG4gIGhhbmRsZUtleURvd246IGRlcHJlY2F0ZShQcm9wVHlwZXMuZnVuYywgJ1RoZSBgaGFuZGxlS2V5RG93bmAgcHJvcCBmb3IgYFNlbGVjdGFibGVUaWxlYCBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGBvbktleURvd25gLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZS4nKSxcblxuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBjaGVja21hcmsgaWNvbi5cbiAgICovXG4gIGljb25EZXNjcmlwdGlvbjogZGVwcmVjYXRlKFByb3BUeXBlcy5zdHJpbmcsICdUaGUgYGljb25EZXNjcmlwdGlvbmAgcHJvcCBmb3IgYFNlbGVjdGFibGVUaWxlYCBpcyBubyBsb25nZXIgbmVlZGVkIGFuZCBoYXMgJyArICdiZWVuIGRlcHJlY2F0ZWQuIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLicpLFxuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIGA8aW5wdXQ+YC5cbiAgICovXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBgdHJ1ZWAgdG8gdXNlIHRoZSBsaWdodCB2ZXJzaW9uLiBGb3IgdXNlIG9uICR1aS0wMSBiYWNrZ3JvdW5kcyBvbmx5LlxuICAgKiBEb24ndCB1c2UgdGhpcyB0byBtYWtlIHRpbGUgYmFja2dyb3VuZCBjb2xvciBzYW1lIGFzIGNvbnRhaW5lciBiYWNrZ3JvdW5kIGNvbG9yLlxuICAgKi9cbiAgbGlnaHQ6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBUaGUgYG5hbWVgIG9mIHRoZSBgPGlucHV0PmAuXG4gICAqL1xuICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBUaGUgZW1wdHkgaGFuZGxlciBvZiB0aGUgYDxpbnB1dD5gLlxuICAgKi9cbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBmdW5jdGlvbiB0byBydW4gd2hlbiB0aGUgU2VsZWN0YWJsZVRpbGUgaXMgY2xpY2tlZFxuICAgKi9cbiAgb25DbGljazogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGZ1bmN0aW9uIHRvIHJ1biB3aGVuIHRoZSBTZWxlY3RhYmxlVGlsZSBpcyBpbnRlcmFjdGVkIHdpdGggdmlhIGEga2V5Ym9hcmRcbiAgICovXG4gIG9uS2V5RG93bjogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIGB0cnVlYCB0byBzZWxlY3QgdGhpcyB0aWxlLlxuICAgKi9cbiAgc2VsZWN0ZWQ6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSB0YWIgaW5kZXggb2YgdGhlIHdyYXBwZXIgZWxlbWVudFxuICAgKi9cbiAgdGFiSW5kZXg6IFByb3BUeXBlcy5udW1iZXIsXG5cbiAgLyoqXG4gICAqIFRoZSBgdGl0bGVgIG9mIHRoZSBgPGlucHV0PmAuXG4gICAqL1xuICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSBgPGlucHV0PmAuXG4gICAqL1xuICB2YWx1ZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLm51bWJlcl0pLmlzUmVxdWlyZWRcbn07XG52YXIgRXhwYW5kYWJsZVRpbGUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db21wb25lbnQzKSB7XG4gIF9pbmhlcml0cyhFeHBhbmRhYmxlVGlsZSwgX0NvbXBvbmVudDMpO1xuXG4gIHZhciBfc3VwZXIzID0gX2NyZWF0ZVN1cGVyKEV4cGFuZGFibGVUaWxlKTtcblxuICBmdW5jdGlvbiBFeHBhbmRhYmxlVGlsZSgpIHtcbiAgICB2YXIgX3RoaXMyO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEV4cGFuZGFibGVUaWxlKTtcblxuICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuMiksIF9rZXkyID0gMDsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuICAgICAgYXJnc1tfa2V5Ml0gPSBhcmd1bWVudHNbX2tleTJdO1xuICAgIH1cblxuICAgIF90aGlzMiA9IF9zdXBlcjMuY2FsbC5hcHBseShfc3VwZXIzLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwic3RhdGVcIiwge30pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMyKSwgXCJyZXNpemVPYnNlcnZlclwiLCBudWxsKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwiY29tcG9uZW50RGlkTW91bnRcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMyLnJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKGZ1bmN0aW9uIChlbnRyaWVzKSB7XG4gICAgICAgIHZhciBfZW50cmllcyA9IF9zbGljZWRUb0FycmF5KGVudHJpZXMsIDEpLFxuICAgICAgICAgICAgYWJvdmVUaGVGb2xkID0gX2VudHJpZXNbMF07XG5cbiAgICAgICAgX3RoaXMyLnNldFN0YXRlKHtcbiAgICAgICAgICB0aWxlTWF4SGVpZ2h0OiBhYm92ZVRoZUZvbGQuY29udGVudFJlY3QuaGVpZ2h0XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChfdGhpczIudGlsZSkge1xuICAgICAgICB2YXIgZ2V0U3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShfdGhpczIudGlsZSwgbnVsbCk7XG5cbiAgICAgICAgaWYgKF90aGlzMi5hYm92ZVRoZUZvbGQpIHtcbiAgICAgICAgICBfdGhpczIucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShfdGhpczIuYWJvdmVUaGVGb2xkKTtcblxuICAgICAgICAgIF90aGlzMi5zZXRTdGF0ZSh7XG4gICAgICAgICAgICB0aWxlTWF4SGVpZ2h0OiBfdGhpczIuYWJvdmVUaGVGb2xkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCxcbiAgICAgICAgICAgIHRpbGVQYWRkaW5nOiBwYXJzZUludChnZXRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLXRvcCcpLCAxMCkgKyBwYXJzZUludChnZXRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLWJvdHRvbScpLCAxMClcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMyKSwgXCJjb21wb25lbnREaWRVcGRhdGVcIiwgZnVuY3Rpb24gKHByZXZQcm9wcykge1xuICAgICAgaWYgKHByZXZQcm9wcy5leHBhbmRlZCAhPT0gX3RoaXMyLnByb3BzLmV4cGFuZGVkKSB7XG4gICAgICAgIF90aGlzMi5zZXRNYXhIZWlnaHQoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwic2V0TWF4SGVpZ2h0XCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChfdGhpczIuc3RhdGUuZXhwYW5kZWQgPyBfdGhpczIudGlsZUNvbnRlbnQgOiBfdGhpczIuYWJvdmVUaGVGb2xkKSB7XG4gICAgICAgIF90aGlzMi5zZXRTdGF0ZSh7XG4gICAgICAgICAgdGlsZU1heEhlaWdodDogX3RoaXMyLnN0YXRlLmV4cGFuZGVkID8gX3RoaXMyLnRpbGVDb250ZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCA6IF90aGlzMi5hYm92ZVRoZUZvbGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMyKSwgXCJoYW5kbGVDbGlja1wiLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICBpZiAoIV90aGlzMi5wcm9wcy5vbkJlZm9yZUNsaWNrKGV2dCkgfHwgZXZ0LnRhcmdldC50YWdOYW1lID09PSAnSU5QVVQnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZXZ0LnBlcnNpc3QoKTtcblxuICAgICAgX3RoaXMyLnNldFN0YXRlKHtcbiAgICAgICAgZXhwYW5kZWQ6ICFfdGhpczIuc3RhdGUuZXhwYW5kZWRcbiAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzMiRwcm9wcyRoYW5kbGVDbCwgX3RoaXMyJHByb3BzLCBfdGhpczIkcHJvcHMkb25DbGljaywgX3RoaXMyJHByb3BzMjtcblxuICAgICAgICBfdGhpczIuc2V0TWF4SGVpZ2h0KCk7IC8vIFRPRE86IFJlbW92ZSBoYW5kbGVDbGljayBwcm9wIHdoZW4gaGFuZGxlQ2xpY2sgaXMgZGVwcmVjYXRlZFxuXG5cbiAgICAgICAgKChfdGhpczIkcHJvcHMkaGFuZGxlQ2wgPSAoX3RoaXMyJHByb3BzID0gX3RoaXMyLnByb3BzKS5oYW5kbGVDbGljaykgPT09IG51bGwgfHwgX3RoaXMyJHByb3BzJGhhbmRsZUNsID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpczIkcHJvcHMkaGFuZGxlQ2wuY2FsbChfdGhpczIkcHJvcHMsIGV2dCkpIHx8ICgoX3RoaXMyJHByb3BzJG9uQ2xpY2sgPSAoX3RoaXMyJHByb3BzMiA9IF90aGlzMi5wcm9wcykub25DbGljaykgPT09IG51bGwgfHwgX3RoaXMyJHByb3BzJG9uQ2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzMiRwcm9wcyRvbkNsaWNrLmNhbGwoX3RoaXMyJHByb3BzMiwgZXZ0KSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwiaGFuZGxlS2V5VXBcIiwgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgaWYgKGV2dC50YXJnZXQgIT09IF90aGlzMi50aWxlKSB7XG4gICAgICAgIGlmIChtYXRjaGVzKGV2dCwgW0VudGVyLCBTcGFjZV0pKSB7XG4gICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwiZ2V0Q2hpbGRyZW5cIiwgZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIFJlYWN0X19kZWZhdWx0LkNoaWxkcmVuLnRvQXJyYXkoX3RoaXMyLnByb3BzLmNoaWxkcmVuKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBfdGhpczI7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoRXhwYW5kYWJsZVRpbGUsIFt7XG4gICAga2V5OiBcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgaWYgKHRoaXMucmVzaXplT2JzZXJ2ZXIpIHtcbiAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgX2N4NSxcbiAgICAgICAgICBfdGhpczMgPSB0aGlzO1xuXG4gICAgICB2YXIgX3RoaXMkcHJvcHM3ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICB0YWJJbmRleCA9IF90aGlzJHByb3BzNy50YWJJbmRleCxcbiAgICAgICAgICBjbGFzc05hbWUgPSBfdGhpcyRwcm9wczcuY2xhc3NOYW1lO1xuICAgICAgICAgIF90aGlzJHByb3BzNy5leHBhbmRlZDtcbiAgICAgICAgICBfdGhpcyRwcm9wczcudGlsZU1heEhlaWdodDtcbiAgICAgICAgICBfdGhpcyRwcm9wczcudGlsZVBhZGRpbmc7XG4gICAgICAgICAgX3RoaXMkcHJvcHM3LmhhbmRsZUNsaWNrO1xuICAgICAgICAgIHZhciBvbktleVVwID0gX3RoaXMkcHJvcHM3Lm9uS2V5VXAsXG4gICAgICAgICAgdGlsZUNvbGxhcHNlZEljb25UZXh0ID0gX3RoaXMkcHJvcHM3LnRpbGVDb2xsYXBzZWRJY29uVGV4dCxcbiAgICAgICAgICB0aWxlRXhwYW5kZWRJY29uVGV4dCA9IF90aGlzJHByb3BzNy50aWxlRXhwYW5kZWRJY29uVGV4dCxcbiAgICAgICAgICB0aWxlQ29sbGFwc2VkTGFiZWwgPSBfdGhpcyRwcm9wczcudGlsZUNvbGxhcHNlZExhYmVsLFxuICAgICAgICAgIHRpbGVFeHBhbmRlZExhYmVsID0gX3RoaXMkcHJvcHM3LnRpbGVFeHBhbmRlZExhYmVsO1xuICAgICAgICAgIF90aGlzJHByb3BzNy5vbkJlZm9yZUNsaWNrO1xuICAgICAgICAgIHZhciBsaWdodCA9IF90aGlzJHByb3BzNy5saWdodCxcbiAgICAgICAgICByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF90aGlzJHByb3BzNywgX2V4Y2x1ZGVkNCk7XG5cbiAgICAgIHZhciBwcmVmaXggPSB0aGlzLmNvbnRleHQ7XG4gICAgICB2YXIgaXNFeHBhbmRlZCA9IHRoaXMuc3RhdGUuZXhwYW5kZWQ7XG4gICAgICB2YXIgY2xhc3NlcyA9IGN4KFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGVcIiksIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWV4cGFuZGFibGVcIiksIChfY3g1ID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfY3g1LCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1pcy1leHBhbmRlZFwiKSwgaXNFeHBhbmRlZCksIF9kZWZpbmVQcm9wZXJ0eShfY3g1LCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1saWdodFwiKSwgbGlnaHQpLCBfY3g1KSwgY2xhc3NOYW1lKTtcbiAgICAgIHZhciB0aWxlU3R5bGUgPSB7XG4gICAgICAgIG1heEhlaWdodDogaXNFeHBhbmRlZCA/IG51bGwgOiB0aGlzLnN0YXRlLnRpbGVNYXhIZWlnaHQgKyB0aGlzLnN0YXRlLnRpbGVQYWRkaW5nXG4gICAgICB9O1xuICAgICAgdmFyIGNoaWxkcmVuQXNBcnJheSA9IHRoaXMuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIC8qI19fUFVSRV9fKi9cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMsanN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zXG4gICAgICAgIFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIiwgX2V4dGVuZHMoe1xuICAgICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgcmVmOiBmdW5jdGlvbiByZWYodGlsZSkge1xuICAgICAgICAgICAgX3RoaXMzLnRpbGUgPSB0aWxlO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc3R5bGU6IHRpbGVTdHlsZSxcbiAgICAgICAgICBjbGFzc05hbWU6IGNsYXNzZXMsXG4gICAgICAgICAgXCJhcmlhLWV4cGFuZGVkXCI6IGlzRXhwYW5kZWQsXG4gICAgICAgICAgdGl0bGU6IGlzRXhwYW5kZWQgPyB0aWxlRXhwYW5kZWRJY29uVGV4dCA6IHRpbGVDb2xsYXBzZWRJY29uVGV4dFxuICAgICAgICB9LCByZXN0LCB7XG4gICAgICAgICAgb25LZXlVcDogY29tcG9zZUV2ZW50SGFuZGxlcnMoW29uS2V5VXAsIHRoaXMuaGFuZGxlS2V5VXBdKSxcbiAgICAgICAgICBvbkNsaWNrOiB0aGlzLmhhbmRsZUNsaWNrLFxuICAgICAgICAgIHRhYkluZGV4OiB0YWJJbmRleFxuICAgICAgICB9KSwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICAgIHJlZjogZnVuY3Rpb24gcmVmKHRpbGVDb250ZW50KSB7XG4gICAgICAgICAgICBfdGhpczMudGlsZUNvbnRlbnQgPSB0aWxlQ29udGVudDtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgICAgICByZWY6IGZ1bmN0aW9uIHJlZihhYm92ZVRoZUZvbGQpIHtcbiAgICAgICAgICAgIF90aGlzMy5hYm92ZVRoZUZvbGQgPSBhYm92ZVRoZUZvbGQ7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtY29udGVudFwiKVxuICAgICAgICB9LCBjaGlsZHJlbkFzQXJyYXlbMF0pLCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlX19jaGV2cm9uXCIpXG4gICAgICAgIH0sIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCBudWxsLCBpc0V4cGFuZGVkID8gdGlsZUV4cGFuZGVkTGFiZWwgOiB0aWxlQ29sbGFwc2VkTGFiZWwpLCBfQ2hldnJvbkRvd24gfHwgKF9DaGV2cm9uRG93biA9IC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KENoZXZyb25Eb3duLCBudWxsKSkpLCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLWNvbnRlbnRcIilcbiAgICAgICAgfSwgY2hpbGRyZW5Bc0FycmF5WzFdKSkpXG4gICAgICApO1xuICAgIH1cbiAgfV0sIFt7XG4gICAga2V5OiBcImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMoIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9wcm9wLXR5cGVzXG4gICAgX3JlZjIsIHN0YXRlKSB7XG4gICAgICB2YXIgZXhwYW5kZWQgPSBfcmVmMi5leHBhbmRlZCxcbiAgICAgICAgICB0aWxlTWF4SGVpZ2h0ID0gX3JlZjIudGlsZU1heEhlaWdodCxcbiAgICAgICAgICB0aWxlUGFkZGluZyA9IF9yZWYyLnRpbGVQYWRkaW5nO1xuICAgICAgdmFyIHByZXZFeHBhbmRlZCA9IHN0YXRlLnByZXZFeHBhbmRlZCxcbiAgICAgICAgICBwcmV2VGlsZU1heEhlaWdodCA9IHN0YXRlLnByZXZUaWxlTWF4SGVpZ2h0LFxuICAgICAgICAgIHByZXZUaWxlUGFkZGluZyA9IHN0YXRlLnByZXZUaWxlUGFkZGluZyxcbiAgICAgICAgICBjdXJyZW50RXhwYW5kZWQgPSBzdGF0ZS5leHBhbmRlZCxcbiAgICAgICAgICBjdXJyZW50VGlsZU1heEhlaWdodCA9IHN0YXRlLnRpbGVNYXhIZWlnaHQsXG4gICAgICAgICAgY3VycmVudFRpbGVQYWRkaW5nID0gc3RhdGUudGlsZVBhZGRpbmc7XG4gICAgICB2YXIgZXhwYW5kZWRDaGFuZ2VkID0gcHJldkV4cGFuZGVkICE9PSBleHBhbmRlZDtcbiAgICAgIHZhciB0aWxlTWF4SGVpZ2h0Q2hhbmdlZCA9IHByZXZUaWxlTWF4SGVpZ2h0ICE9PSB0aWxlTWF4SGVpZ2h0O1xuICAgICAgdmFyIHRpbGVQYWRkaW5nQ2hhbmdlZCA9IHByZXZUaWxlUGFkZGluZyAhPT0gdGlsZVBhZGRpbmc7XG4gICAgICByZXR1cm4gIWV4cGFuZGVkQ2hhbmdlZCAmJiAhdGlsZU1heEhlaWdodENoYW5nZWQgJiYgIXRpbGVQYWRkaW5nQ2hhbmdlZCA/IG51bGwgOiB7XG4gICAgICAgIGV4cGFuZGVkOiAhZXhwYW5kZWRDaGFuZ2VkID8gY3VycmVudEV4cGFuZGVkIDogZXhwYW5kZWQsXG4gICAgICAgIHRpbGVNYXhIZWlnaHQ6ICF0aWxlTWF4SGVpZ2h0Q2hhbmdlZCA/IGN1cnJlbnRUaWxlTWF4SGVpZ2h0IDogdGlsZU1heEhlaWdodCxcbiAgICAgICAgdGlsZVBhZGRpbmc6ICF0aWxlUGFkZGluZ0NoYW5nZWQgPyBjdXJyZW50VGlsZVBhZGRpbmcgOiB0aWxlUGFkZGluZyxcbiAgICAgICAgcHJldkV4cGFuZGVkOiBleHBhbmRlZCxcbiAgICAgICAgcHJldlRpbGVNYXhIZWlnaHQ6IHRpbGVNYXhIZWlnaHQsXG4gICAgICAgIHByZXZUaWxlUGFkZGluZzogdGlsZVBhZGRpbmdcbiAgICAgIH07XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEV4cGFuZGFibGVUaWxlO1xufShDb21wb25lbnQpO1xuXG5fZGVmaW5lUHJvcGVydHkoRXhwYW5kYWJsZVRpbGUsIFwicHJvcFR5cGVzXCIsIHtcbiAgLyoqXG4gICAqIFRoZSBjaGlsZCBub2Rlcy5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcblxuICAvKipcbiAgICogVGhlIENTUyBjbGFzcyBuYW1lcy5cbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogYHRydWVgIGlmIHRoZSB0aWxlIGlzIGV4cGFuZGVkLlxuICAgKi9cbiAgZXhwYW5kZWQ6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBEZXByZWNhdGVkIGluIHYxMS4gVXNlICdvbkNsaWNrJyBpbnN0ZWFkLlxuICAgKi9cbiAgaGFuZGxlQ2xpY2s6IGRlcHJlY2F0ZShQcm9wVHlwZXMuZnVuYywgJ1RoZSBoYW5kbGVDbGljayBwcm9wIGZvciBFeHBhbmRhYmxlVGlsZSBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIG9uQ2xpY2suIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLicpLFxuXG4gIC8qKlxuICAgKiBBbiBJRCB0aGF0IGNhbiBiZSBwcm92aWRlZCB0byBhcmlhLWxhYmVsbGVkYnlcbiAgICovXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBgdHJ1ZWAgdG8gdXNlIHRoZSBsaWdodCB2ZXJzaW9uLiBGb3IgdXNlIG9uICR1aS0wMSBiYWNrZ3JvdW5kcyBvbmx5LlxuICAgKiBEb24ndCB1c2UgdGhpcyB0byBtYWtlIHRpbGUgYmFja2dyb3VuZCBjb2xvciBzYW1lIGFzIGNvbnRhaW5lciBiYWNrZ3JvdW5kIGNvbG9yLlxuICAgKi9cbiAgbGlnaHQ6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBvcHRpb25hbCBoYW5kbGVyIHRvIGRlY2lkZSB3aGV0aGVyIHRvIGlnbm9yZSBhIGNsaWNrLiByZXR1cm5zIGZhbHNlIGlmIGNsaWNrIHNob3VsZCBiZSBpZ25vcmVkXG4gICAqL1xuICBvbkJlZm9yZUNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgZnVuY3Rpb24gdG8gcnVuIHdoZW4gdGhlIEV4cGFuZGFibGVUaWxlIGlzIGNsaWNrZWRcbiAgICAqL1xuICBvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogb3B0aW9uYWwgaGFuZGxlciB0byB0cmlnZ2VyIGEgZnVuY3Rpb24gd2hlbiBhIGtleSBpcyBwcmVzc2VkXG4gICAqL1xuICBvbktleVVwOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogVGhlIGB0YWJpbmRleGAgYXR0cmlidXRlLlxuICAgKi9cbiAgdGFiSW5kZXg6IFByb3BUeXBlcy5udW1iZXIsXG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgXCJjb2xsYXBzZWRcIiBpY29uIHRoYXQgY2FuIGJlIHJlYWQgYnkgc2NyZWVuIHJlYWRlcnMuXG4gICAqL1xuICB0aWxlQ29sbGFwc2VkSWNvblRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIFdoZW4gXCJjb2xsYXBzZWRcIiwgYSBsYWJlbCB0byBhcHBlYXIgbmV4dCB0byB0aGUgY2hldnJvbiAoZS5nLiwgXCJWaWV3IG1vcmVcIikuXG4gICAqL1xuICB0aWxlQ29sbGFwc2VkTGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgXCJleHBhbmRlZFwiIGljb24gdGhhdCBjYW4gYmUgcmVhZCBieSBzY3JlZW4gcmVhZGVycy5cbiAgICovXG4gIHRpbGVFeHBhbmRlZEljb25UZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBXaGVuIFwiZXhwYW5kZWRcIiwgYSBsYWJlbCB0byBhcHBlYXIgbmV4dCB0byB0aGUgY2hldnJvbiAoZS5nLiwgXCJWaWV3IGxlc3NcIikuXG4gICAqL1xuICB0aWxlRXhwYW5kZWRMYWJlbDogUHJvcFR5cGVzLnN0cmluZ1xufSk7XG5cbl9kZWZpbmVQcm9wZXJ0eShFeHBhbmRhYmxlVGlsZSwgXCJjb250ZXh0VHlwZVwiLCBQcmVmaXhDb250ZXh0KTtcblxuX2RlZmluZVByb3BlcnR5KEV4cGFuZGFibGVUaWxlLCBcImRlZmF1bHRQcm9wc1wiLCB7XG4gIHRhYkluZGV4OiAwLFxuICBleHBhbmRlZDogZmFsc2UsXG4gIHRpbGVNYXhIZWlnaHQ6IDAsXG4gIHRpbGVQYWRkaW5nOiAwLFxuICBvbkJlZm9yZUNsaWNrOiBmdW5jdGlvbiBvbkJlZm9yZUNsaWNrKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9LFxuICBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKCkge30sXG4gIHRpbGVDb2xsYXBzZWRJY29uVGV4dDogJ0ludGVyYWN0IHRvIGV4cGFuZCBUaWxlJyxcbiAgdGlsZUV4cGFuZGVkSWNvblRleHQ6ICdJbnRlcmFjdCB0byBjb2xsYXBzZSBUaWxlJyxcbiAgbGlnaHQ6IGZhbHNlXG59KTtcblxudmFyIFRpbGVBYm92ZVRoZUZvbGRDb250ZW50ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50NCkge1xuICBfaW5oZXJpdHMoVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQsIF9Db21wb25lbnQ0KTtcblxuICB2YXIgX3N1cGVyNCA9IF9jcmVhdGVTdXBlcihUaWxlQWJvdmVUaGVGb2xkQ29udGVudCk7XG5cbiAgZnVuY3Rpb24gVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFRpbGVBYm92ZVRoZUZvbGRDb250ZW50KTtcblxuICAgIHJldHVybiBfc3VwZXI0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQsIFt7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgcHJlZml4ID0gdGhpcy5jb250ZXh0O1xuICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5wcm9wcy5jaGlsZHJlbjtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtY29udGVudF9fYWJvdmUtdGhlLWZvbGRcIilcbiAgICAgIH0sIGNoaWxkcmVuKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQ7XG59KENvbXBvbmVudCk7XG5cbl9kZWZpbmVQcm9wZXJ0eShUaWxlQWJvdmVUaGVGb2xkQ29udGVudCwgXCJwcm9wVHlwZXNcIiwge1xuICAvKipcbiAgICogVGhlIGNoaWxkIG5vZGVzLlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlXG59KTtcblxuX2RlZmluZVByb3BlcnR5KFRpbGVBYm92ZVRoZUZvbGRDb250ZW50LCBcImNvbnRleHRUeXBlXCIsIFByZWZpeENvbnRleHQpO1xuXG52YXIgVGlsZUJlbG93VGhlRm9sZENvbnRlbnQgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db21wb25lbnQ1KSB7XG4gIF9pbmhlcml0cyhUaWxlQmVsb3dUaGVGb2xkQ29udGVudCwgX0NvbXBvbmVudDUpO1xuXG4gIHZhciBfc3VwZXI1ID0gX2NyZWF0ZVN1cGVyKFRpbGVCZWxvd1RoZUZvbGRDb250ZW50KTtcblxuICBmdW5jdGlvbiBUaWxlQmVsb3dUaGVGb2xkQ29udGVudCgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVGlsZUJlbG93VGhlRm9sZENvbnRlbnQpO1xuXG4gICAgcmV0dXJuIF9zdXBlcjUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhUaWxlQmVsb3dUaGVGb2xkQ29udGVudCwgW3tcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMucHJvcHMuY2hpbGRyZW47XG4gICAgICB2YXIgcHJlZml4ID0gdGhpcy5jb250ZXh0O1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS1jb250ZW50X19iZWxvdy10aGUtZm9sZFwiKVxuICAgICAgfSwgY2hpbGRyZW4pO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBUaWxlQmVsb3dUaGVGb2xkQ29udGVudDtcbn0oQ29tcG9uZW50KTtcblxuX2RlZmluZVByb3BlcnR5KFRpbGVCZWxvd1RoZUZvbGRDb250ZW50LCBcInByb3BUeXBlc1wiLCB7XG4gIC8qKlxuICAgKiBUaGUgY2hpbGQgbm9kZXMuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGVcbn0pO1xuXG5fZGVmaW5lUHJvcGVydHkoVGlsZUJlbG93VGhlRm9sZENvbnRlbnQsIFwiY29udGV4dFR5cGVcIiwgUHJlZml4Q29udGV4dCk7XG5cbmV4cG9ydCB7IENsaWNrYWJsZVRpbGUsIEV4cGFuZGFibGVUaWxlLCBTZWxlY3RhYmxlVGlsZSwgVGlsZSwgVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQsIFRpbGVCZWxvd1RoZUZvbGRDb250ZW50IH07XG4iXSwibmFtZXMiOlsiaW5oZXJpdHMiLCJfaW5oZXJpdHMiLCJjcmVhdGVTdXBlciIsIl9jcmVhdGVTdXBlciIsImNsYXNzQ2FsbENoZWNrIiwiX2NsYXNzQ2FsbENoZWNrIiwiY3JlYXRlQ2xhc3MiLCJfY3JlYXRlQ2xhc3MiLCJvYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX2RlZmluZVByb3BlcnR5IiwiZXh0ZW5kcyIsIl9leHRlbmRzIiwiYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiX2Fzc2VydFRoaXNJbml0aWFsaXplZCIsInNsaWNlZFRvQXJyYXkiLCJfc2xpY2VkVG9BcnJheSIsIlJlYWN0X19kZWZhdWx0IiwiQ29tcG9uZW50IiwidXNlU3RhdGUiLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJQcm9wVHlwZXMiLCJjeCIsIkxpbmsiLCJDaGVja2JveENoZWNrZWRGaWxsZWQiLCJDaGVja2JveCIsIkNoZXZyb25Eb3duIiwiZGVwcmVjYXRlIiwiY29tcG9zZUV2ZW50SGFuZGxlcnMiLCJQcmVmaXhDb250ZXh0IiwidXNlUHJlZml4IiwibWF0Y2hlcyIsIkVudGVyIiwiU3BhY2UiLCJfQ2hlY2tib3hDaGVja2VkRmlsbGUiLCJfQ2hlY2tib3giLCJfQ2hldnJvbkRvd24iLCJfZXhjbHVkZWQiLCJfZXhjbHVkZWQyIiwiX2V4Y2x1ZGVkMyIsIl9leGNsdWRlZDQiLCJUaWxlIiwiX0NvbXBvbmVudCIsIl9zdXBlciIsImFwcGx5IiwiYXJndW1lbnRzIiwia2V5IiwidmFsdWUiLCJyZW5kZXIiLCJwcmVmaXgiLCJjb250ZXh0IiwiX3RoaXMkcHJvcHMiLCJwcm9wcyIsImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwibGlnaHQiLCJyZXN0IiwidGlsZUNsYXNzZXMiLCJjb25jYXQiLCJjcmVhdGVFbGVtZW50Iiwibm9kZSIsInN0cmluZyIsImJvb2wiLCJDbGlja2FibGVUaWxlIiwiX0NvbXBvbmVudDIiLCJfc3VwZXIyIiwiX3RoaXMiLCJfbGVuIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiX2tleSIsImNhbGwiLCJldnQiLCJwZXJzaXN0Iiwic2V0U3RhdGUiLCJjbGlja2VkIiwic3RhdGUiLCJfdGhpcyRwcm9wcyRoYW5kbGVDbGkiLCJfdGhpcyRwcm9wczIiLCJfdGhpcyRwcm9wcyRvbkNsaWNrIiwiX3RoaXMkcHJvcHMzIiwiaGFuZGxlQ2xpY2siLCJvbkNsaWNrIiwiX3RoaXMkcHJvcHMkaGFuZGxlS2V5IiwiX3RoaXMkcHJvcHM0IiwiaGFuZGxlS2V5RG93biIsIm9uS2V5RG93biIsIl90aGlzJHByb3BzJGhhbmRsZUtleTIiLCJfdGhpcyRwcm9wczUiLCJfY3gyIiwiX3RoaXMkcHJvcHM2IiwiaHJlZiIsImNsYXNzZXMiLCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMiLCJfcmVmIiwicHJldkNsaWNrZWQiLCJmdW5jIiwicmVsIiwiU2VsZWN0YWJsZVRpbGUiLCJoYW5kbGVPbkNsaWNrIiwicHJldmVudERlZmF1bHQiLCJzZXRJc1NlbGVjdGVkIiwiaXNTZWxlY3RlZCIsImNsaWNrSGFuZGxlciIsIm9uQ2hhbmdlIiwiaGFuZGxlT25LZXlEb3duIiwia2V5RG93bkhhbmRsZXIiLCJoYW5kbGVDaGFuZ2UiLCJldmVudCIsInRhcmdldCIsImNoZWNrZWQiLCJfY3gzIiwiaWQiLCJ0YWJJbmRleCIsIm5hbWUiLCJ0aXRsZSIsImljb25EZXNjcmlwdGlvbiIsImRpc2FibGVkIiwic2VsZWN0ZWQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiaW5wdXQiLCJpbnB1dENsYXNzZXMiLCJGcmFnbWVudCIsInJlZiIsInR5cGUiLCJodG1sRm9yIiwiZGVmYXVsdFByb3BzIiwicHJvcFR5cGVzIiwibnVtYmVyIiwib25lT2ZUeXBlIiwiaXNSZXF1aXJlZCIsIkV4cGFuZGFibGVUaWxlIiwiX0NvbXBvbmVudDMiLCJfc3VwZXIzIiwiX3RoaXMyIiwiX2xlbjIiLCJfa2V5MiIsInJlc2l6ZU9ic2VydmVyIiwiUmVzaXplT2JzZXJ2ZXIiLCJlbnRyaWVzIiwiX2VudHJpZXMiLCJhYm92ZVRoZUZvbGQiLCJ0aWxlTWF4SGVpZ2h0IiwiY29udGVudFJlY3QiLCJoZWlnaHQiLCJ0aWxlIiwiZ2V0U3R5bGUiLCJ3aW5kb3ciLCJnZXRDb21wdXRlZFN0eWxlIiwib2JzZXJ2ZSIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInRpbGVQYWRkaW5nIiwicGFyc2VJbnQiLCJnZXRQcm9wZXJ0eVZhbHVlIiwicHJldlByb3BzIiwiZXhwYW5kZWQiLCJzZXRNYXhIZWlnaHQiLCJ0aWxlQ29udGVudCIsIm9uQmVmb3JlQ2xpY2siLCJ0YWdOYW1lIiwiX3RoaXMyJHByb3BzJGhhbmRsZUNsIiwiX3RoaXMyJHByb3BzIiwiX3RoaXMyJHByb3BzJG9uQ2xpY2siLCJfdGhpczIkcHJvcHMyIiwiQ2hpbGRyZW4iLCJ0b0FycmF5IiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJkaXNjb25uZWN0IiwiX2N4NSIsIl90aGlzMyIsIl90aGlzJHByb3BzNyIsIm9uS2V5VXAiLCJ0aWxlQ29sbGFwc2VkSWNvblRleHQiLCJ0aWxlRXhwYW5kZWRJY29uVGV4dCIsInRpbGVDb2xsYXBzZWRMYWJlbCIsInRpbGVFeHBhbmRlZExhYmVsIiwiaXNFeHBhbmRlZCIsInRpbGVTdHlsZSIsIm1heEhlaWdodCIsImNoaWxkcmVuQXNBcnJheSIsImdldENoaWxkcmVuIiwic3R5bGUiLCJoYW5kbGVLZXlVcCIsIl9yZWYyIiwicHJldkV4cGFuZGVkIiwicHJldlRpbGVNYXhIZWlnaHQiLCJwcmV2VGlsZVBhZGRpbmciLCJjdXJyZW50RXhwYW5kZWQiLCJjdXJyZW50VGlsZU1heEhlaWdodCIsImN1cnJlbnRUaWxlUGFkZGluZyIsImV4cGFuZGVkQ2hhbmdlZCIsInRpbGVNYXhIZWlnaHRDaGFuZ2VkIiwidGlsZVBhZGRpbmdDaGFuZ2VkIiwiVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQiLCJfQ29tcG9uZW50NCIsIl9zdXBlcjQiLCJUaWxlQmVsb3dUaGVGb2xkQ29udGVudCIsIl9Db21wb25lbnQ1IiwiX3N1cGVyNSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/@carbon/react/es/components/Tile/Tile.js\n");
|
|
2604
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ClickableTile\": () => (/* binding */ ClickableTile),\n/* harmony export */ \"ExpandableTile\": () => (/* binding */ ExpandableTile),\n/* harmony export */ \"SelectableTile\": () => (/* binding */ SelectableTile),\n/* harmony export */ \"Tile\": () => (/* binding */ Tile),\n/* harmony export */ \"TileAboveTheFoldContent\": () => (/* binding */ TileAboveTheFoldContent),\n/* harmony export */ \"TileBelowTheFoldContent\": () => (/* binding */ TileBelowTheFoldContent)\n/* harmony export */ });\n/* harmony import */ var _virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../_virtual/_rollupPluginBabelHelpers.js */ \"../../../node_modules/@carbon/react/es/_virtual/_rollupPluginBabelHelpers.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! prop-types */ \"../../../node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! classnames */ \"../../../node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _Link_Link_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../Link/Link.js */ \"../../../node_modules/@carbon/react/es/components/Link/Link.js\");\n/* harmony import */ var _carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @carbon/icons-react */ \"../../../node_modules/@carbon/icons-react/es/generated/bucket-2.js\");\n/* harmony import */ var _prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../prop-types/deprecate.js */ \"../../../node_modules/@carbon/react/es/prop-types/deprecate.js\");\n/* harmony import */ var _tools_events_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../tools/events.js */ \"../../../node_modules/@carbon/react/es/tools/events.js\");\n/* harmony import */ var _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../internal/usePrefix.js */ \"../../../node_modules/@carbon/react/es/internal/usePrefix.js\");\n/* harmony import */ var _internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../internal/keyboard/match.js */ \"../../../node_modules/@carbon/react/es/internal/keyboard/match.js\");\n/* harmony import */ var _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../internal/keyboard/keys.js */ \"../../../node_modules/@carbon/react/es/internal/keyboard/keys.js\");\n/**\n * Copyright IBM Corp. 2016, 2022\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */ \n\n\n\n\n\n\n\n\n\n\nvar _CheckboxCheckedFille, _Checkbox, _ChevronDown;\nvar _excluded = [\n \"children\",\n \"className\",\n \"light\"\n], _excluded2 = [\n \"children\",\n \"href\",\n \"className\",\n \"handleClick\",\n \"handleKeyDown\",\n \"onClick\",\n \"onKeyDown\",\n \"clicked\",\n \"light\"\n], _excluded3 = [\n \"children\",\n \"id\",\n \"tabIndex\",\n \"value\",\n \"name\",\n \"title\",\n \"iconDescription\",\n \"className\",\n \"handleClick\",\n \"handleKeyDown\",\n \"onClick\",\n \"onChange\",\n \"onKeyDown\",\n \"light\",\n \"disabled\",\n \"selected\"\n], _excluded4 = [\n \"tabIndex\",\n \"className\",\n \"expanded\",\n \"tileMaxHeight\",\n \"tilePadding\",\n \"handleClick\",\n \"onKeyUp\",\n \"tileCollapsedIconText\",\n \"tileExpandedIconText\",\n \"tileCollapsedLabel\",\n \"tileExpandedLabel\",\n \"onBeforeClick\",\n \"light\"\n];\nvar Tile = /*#__PURE__*/ function(_Component) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(Tile, _Component);\n var _super = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(Tile);\n function Tile() {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, Tile);\n return _super.apply(this, arguments);\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(Tile, [\n {\n key: \"render\",\n value: function render() {\n var prefix = this.context;\n var _this$props = this.props, children = _this$props.children, className = _this$props.className, light = _this$props.light, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(_this$props, _excluded);\n var tileClasses = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)({}, \"\".concat(prefix, \"--tile--light\"), light), className);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n className: tileClasses\n }, rest), children);\n }\n }\n ]);\n return Tile;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(Tile, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(Tile, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(Tile, \"defaultProps\", {\n light: false\n});\nvar ClickableTile = /*#__PURE__*/ function(_Component2) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(ClickableTile, _Component2);\n var _super2 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(ClickableTile);\n function ClickableTile() {\n var _this;\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, ClickableTile);\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n _this = _super2.call.apply(_super2, [\n this\n ].concat(args));\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this), \"state\", {});\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this), \"handleClick\", function(evt) {\n evt.persist();\n _this.setState({\n clicked: !_this.state.clicked\n }, function() {\n var _this$props$handleCli, _this$props2, _this$props$onClick, _this$props3;\n // TODO: Remove handleClick prop when handleClick is deprecated\n ((_this$props$handleCli = (_this$props2 = _this.props).handleClick) === null || _this$props$handleCli === void 0 ? void 0 : _this$props$handleCli.call(_this$props2, evt)) || ((_this$props$onClick = (_this$props3 = _this.props).onClick) === null || _this$props$onClick === void 0 ? void 0 : _this$props$onClick.call(_this$props3, evt));\n });\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this), \"handleKeyDown\", function(evt) {\n evt.persist();\n if ((0,_internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__.matches)(evt, [\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Enter,\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Space\n ])) {\n _this.setState({\n clicked: !_this.state.clicked\n }, function() {\n var _this$props$handleKey, _this$props4;\n // TODO: Remove handleKeyDown prop when handleKeyDown is deprecated\n ((_this$props$handleKey = (_this$props4 = _this.props).handleKeyDown) === null || _this$props$handleKey === void 0 ? void 0 : _this$props$handleKey.call(_this$props4, evt)) || _this.props.onKeyDown(evt);\n });\n } else {\n var _this$props$handleKey2, _this$props5;\n (// TODO: Remove handleKeyDown prop when handleKeyDown is deprecated\n (_this$props$handleKey2 = (_this$props5 = _this.props).handleKeyDown) === null || _this$props$handleKey2 === void 0 ? void 0 : _this$props$handleKey2.call(_this$props5, evt)) || _this.props.onKeyDown(evt);\n }\n });\n return _this;\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(ClickableTile, [\n {\n key: \"render\",\n value: function render() {\n var _cx2;\n var prefix = this.context;\n var _this$props6 = this.props, children = _this$props6.children, href = _this$props6.href, className = _this$props6.className;\n _this$props6.handleClick;\n _this$props6.handleKeyDown;\n _this$props6.onClick;\n _this$props6.onKeyDown;\n _this$props6.clicked;\n var light = _this$props6.light, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(_this$props6, _excluded2);\n var classes = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), \"\".concat(prefix, \"--tile--clickable\"), (_cx2 = {}, (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx2, \"\".concat(prefix, \"--tile--is-clicked\"), this.state.clicked), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx2, \"\".concat(prefix, \"--tile--light\"), light), _cx2), className);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Link_Link_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"], (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n href: href,\n className: classes\n }, rest, {\n onClick: this.handleClick,\n onKeyDown: this.handleKeyDown\n }), children);\n }\n }\n ], [\n {\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(_ref, state) {\n var clicked = _ref.clicked;\n var prevClicked = state.prevClicked;\n return prevClicked === clicked ? null : {\n clicked: clicked,\n prevClicked: clicked\n };\n }\n }\n ]);\n return ClickableTile;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ClickableTile, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * Deprecated in v11. Use 'onClick' instead.\n */ handleClick: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The handleClick prop for ClickableTile has been deprecated in favor of onClick. It will be removed in the next major release.\"),\n /**\n * Specify the function to run when the ClickableTile is interacted with via a keyboard\n */ handleKeyDown: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The handleKeyDown prop for ClickableTile has been deprecated in favor of onKeyDown. It will be removed in the next major release.\"),\n /**\n * The href for the link.\n */ href: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Specify the function to run when the ClickableTile is clicked\n */ onClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the ClickableTile is interacted with via a keyboard\n */ onKeyDown: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * The rel property for the link.\n */ rel: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ClickableTile, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ClickableTile, \"defaultProps\", {\n clicked: false,\n onClick: function onClick() {},\n onKeyDown: function onKeyDown() {},\n light: false\n});\nfunction SelectableTile(props) {\n var handleOnClick = function handleOnClick(evt) {\n evt.preventDefault();\n evt.persist();\n setIsSelected(!isSelected);\n clickHandler(evt);\n onChange(evt);\n } // TODO: rename to handleKeyDown when handleKeyDown prop is deprecated\n ;\n var handleOnKeyDown = function handleOnKeyDown(evt) {\n evt.persist();\n if ((0,_internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__.matches)(evt, [\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Enter,\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Space\n ])) {\n evt.preventDefault();\n setIsSelected(!isSelected);\n onChange(evt);\n }\n keyDownHandler(evt);\n };\n var handleChange = function handleChange(event) {\n setIsSelected(event.target.checked);\n onChange(event);\n };\n var _cx3;\n var children = props.children, id = props.id, tabIndex = props.tabIndex, value = props.value, name = props.name, title = props.title;\n props.iconDescription;\n var className = props.className, handleClick = props.handleClick, handleKeyDown = props.handleKeyDown, onClick = props.onClick, onChange = props.onChange, onKeyDown = props.onKeyDown, light = props.light, disabled = props.disabled, selected = props.selected, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(props, _excluded3);\n var prefix = (0,_internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.usePrefix)(); // TODO: replace with onClick when handleClick prop is deprecated\n var clickHandler = handleClick || onClick; // TODO: replace with onKeyDown when handleKeyDown prop is deprecated\n var keyDownHandler = handleKeyDown || onKeyDown;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(selected), _useState2 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.slicedToArray)(_useState, 2), isSelected = _useState2[0], setIsSelected = _useState2[1];\n var input = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var classes = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), \"\".concat(prefix, \"--tile--selectable\"), (_cx3 = {}, (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx3, \"\".concat(prefix, \"--tile--is-selected\"), isSelected), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx3, \"\".concat(prefix, \"--tile--light\"), light), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx3, \"\".concat(prefix, \"--tile--disabled\"), disabled), _cx3), className);\n var inputClasses = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile-input\"), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)({}, \"\".concat(prefix, \"--tile-input--checked\"), isSelected)); // TODO: rename to handleClick when handleClick prop is deprecated\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n setIsSelected(selected);\n }, [\n selected\n ]);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n ref: input,\n tabIndex: -1,\n id: id,\n className: inputClasses,\n value: value,\n onChange: !disabled ? handleChange : null,\n type: \"checkbox\",\n disabled: disabled,\n name: name,\n title: title,\n checked: isSelected\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n htmlFor: id,\n className: classes // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\n ,\n tabIndex: !disabled ? tabIndex : null\n }, rest, {\n onClick: !disabled ? handleOnClick : null,\n onKeyDown: !disabled ? handleOnKeyDown : null\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile__checkmark \").concat(prefix, \"--tile__checkmark--persistent\")\n }, isSelected ? _CheckboxCheckedFille || (_CheckboxCheckedFille = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__.CheckboxCheckedFilled, null)) : _Checkbox || (_Checkbox = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__.Checkbox, null))), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile-content\")\n }, children)));\n}\nSelectableTile.defaultProps = {\n value: \"value\",\n title: \"title\",\n selected: false,\n tabIndex: 0,\n light: false,\n onClick: function onClick() {},\n onChange: function onChange() {},\n onKeyDown: function onKeyDown() {}\n};\nSelectableTile.propTypes = {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * Specify whether the SelectableTile should be disabled\n */ disabled: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Specify the function to run when the SelectableTile is clicked\n */ handleClick: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The `handleClick` prop for `SelectableTile` has been deprecated in favor of `onClick`. It will be removed in the next major release.\"),\n /**\n * Specify the function to run when the SelectableTile is interacted with via a keyboard\n */ handleKeyDown: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The `handleKeyDown` prop for `SelectableTile` has been deprecated in favor of `onKeyDown`. It will be removed in the next major release.\"),\n /**\n * The description of the checkmark icon.\n */ iconDescription: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().string), \"The `iconDescription` prop for `SelectableTile` is no longer needed and has \" + \"been deprecated. It will be removed in the next major release.\"),\n /**\n * The ID of the `<input>`.\n */ id: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * The `name` of the `<input>`.\n */ name: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * The empty handler of the `<input>`.\n */ onChange: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the SelectableTile is clicked\n */ onClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the SelectableTile is interacted with via a keyboard\n */ onKeyDown: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * `true` to select this tile.\n */ selected: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Specify the tab index of the wrapper element\n */ tabIndex: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number),\n /**\n * The `title` of the `<input>`.\n */ title: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * The value of the `<input>`.\n */ value: prop_types__WEBPACK_IMPORTED_MODULE_3___default().oneOfType([\n (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number)\n ]).isRequired\n};\nvar ExpandableTile = /*#__PURE__*/ function(_Component3) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(ExpandableTile, _Component3);\n var _super3 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(ExpandableTile);\n function ExpandableTile() {\n var _this2;\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, ExpandableTile);\n for(var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++){\n args[_key2] = arguments[_key2];\n }\n _this2 = _super3.call.apply(_super3, [\n this\n ].concat(args));\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"state\", {});\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"resizeObserver\", null);\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"componentDidMount\", function() {\n _this2.resizeObserver = new ResizeObserver(function(entries) {\n var _entries = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.slicedToArray)(entries, 1), aboveTheFold = _entries[0];\n _this2.setState({\n tileMaxHeight: aboveTheFold.contentRect.height\n });\n });\n if (_this2.tile) {\n var getStyle = window.getComputedStyle(_this2.tile, null);\n if (_this2.aboveTheFold) {\n _this2.resizeObserver.observe(_this2.aboveTheFold);\n _this2.setState({\n tileMaxHeight: _this2.aboveTheFold.getBoundingClientRect().height,\n tilePadding: parseInt(getStyle.getPropertyValue(\"padding-top\"), 10) + parseInt(getStyle.getPropertyValue(\"padding-bottom\"), 10)\n });\n }\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"componentDidUpdate\", function(prevProps) {\n if (prevProps.expanded !== _this2.props.expanded) {\n _this2.setMaxHeight();\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"setMaxHeight\", function() {\n if (_this2.state.expanded ? _this2.tileContent : _this2.aboveTheFold) {\n _this2.setState({\n tileMaxHeight: _this2.state.expanded ? _this2.tileContent.getBoundingClientRect().height : _this2.aboveTheFold.getBoundingClientRect().height\n });\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"handleClick\", function(evt) {\n if (!_this2.props.onBeforeClick(evt) || evt.target.tagName === \"INPUT\") {\n return;\n }\n evt.persist();\n _this2.setState({\n expanded: !_this2.state.expanded\n }, function() {\n var _this2$props$handleCl, _this2$props, _this2$props$onClick, _this2$props2;\n _this2.setMaxHeight(); // TODO: Remove handleClick prop when handleClick is deprecated\n ((_this2$props$handleCl = (_this2$props = _this2.props).handleClick) === null || _this2$props$handleCl === void 0 ? void 0 : _this2$props$handleCl.call(_this2$props, evt)) || ((_this2$props$onClick = (_this2$props2 = _this2.props).onClick) === null || _this2$props$onClick === void 0 ? void 0 : _this2$props$onClick.call(_this2$props2, evt));\n });\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"handleKeyUp\", function(evt) {\n if (evt.target !== _this2.tile) {\n if ((0,_internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__.matches)(evt, [\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Enter,\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Space\n ])) {\n evt.preventDefault();\n }\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"getChildren\", function() {\n return react__WEBPACK_IMPORTED_MODULE_0___default().Children.toArray(_this2.props.children);\n });\n return _this2;\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(ExpandableTile, [\n {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n }\n },\n {\n key: \"render\",\n value: function render() {\n var _cx5, _this3 = this;\n var _this$props7 = this.props, tabIndex = _this$props7.tabIndex, className = _this$props7.className;\n _this$props7.expanded;\n _this$props7.tileMaxHeight;\n _this$props7.tilePadding;\n _this$props7.handleClick;\n var onKeyUp = _this$props7.onKeyUp, tileCollapsedIconText = _this$props7.tileCollapsedIconText, tileExpandedIconText = _this$props7.tileExpandedIconText, tileCollapsedLabel = _this$props7.tileCollapsedLabel, tileExpandedLabel = _this$props7.tileExpandedLabel;\n _this$props7.onBeforeClick;\n var light = _this$props7.light, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(_this$props7, _excluded4);\n var prefix = this.context;\n var isExpanded = this.state.expanded;\n var classes = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), \"\".concat(prefix, \"--tile--expandable\"), (_cx5 = {}, (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx5, \"\".concat(prefix, \"--tile--is-expanded\"), isExpanded), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx5, \"\".concat(prefix, \"--tile--light\"), light), _cx5), className);\n var tileStyle = {\n maxHeight: isExpanded ? null : this.state.tileMaxHeight + this.state.tilePadding\n };\n var childrenAsArray = this.getChildren();\n return(/*#__PURE__*/ // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n type: \"button\",\n ref: function ref(tile) {\n _this3.tile = tile;\n },\n style: tileStyle,\n className: classes,\n \"aria-expanded\": isExpanded,\n title: isExpanded ? tileExpandedIconText : tileCollapsedIconText\n }, rest, {\n onKeyUp: (0,_tools_events_js__WEBPACK_IMPORTED_MODULE_10__.composeEventHandlers)([\n onKeyUp,\n this.handleKeyUp\n ]),\n onClick: this.handleClick,\n tabIndex: tabIndex\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: function ref(tileContent) {\n _this3.tileContent = tileContent;\n }\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: function ref(aboveTheFold) {\n _this3.aboveTheFold = aboveTheFold;\n },\n className: \"\".concat(prefix, \"--tile-content\")\n }, childrenAsArray[0]), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"\".concat(prefix, \"--tile__chevron\")\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, isExpanded ? tileExpandedLabel : tileCollapsedLabel), _ChevronDown || (_ChevronDown = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__.ChevronDown, null))), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"\".concat(prefix, \"--tile-content\")\n }, childrenAsArray[1]))));\n }\n }\n ], [\n {\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(_ref2, state) {\n var expanded = _ref2.expanded, tileMaxHeight = _ref2.tileMaxHeight, tilePadding = _ref2.tilePadding;\n var prevExpanded = state.prevExpanded, prevTileMaxHeight = state.prevTileMaxHeight, prevTilePadding = state.prevTilePadding, currentExpanded = state.expanded, currentTileMaxHeight = state.tileMaxHeight, currentTilePadding = state.tilePadding;\n var expandedChanged = prevExpanded !== expanded;\n var tileMaxHeightChanged = prevTileMaxHeight !== tileMaxHeight;\n var tilePaddingChanged = prevTilePadding !== tilePadding;\n return !expandedChanged && !tileMaxHeightChanged && !tilePaddingChanged ? null : {\n expanded: !expandedChanged ? currentExpanded : expanded,\n tileMaxHeight: !tileMaxHeightChanged ? currentTileMaxHeight : tileMaxHeight,\n tilePadding: !tilePaddingChanged ? currentTilePadding : tilePadding,\n prevExpanded: expanded,\n prevTileMaxHeight: tileMaxHeight,\n prevTilePadding: tilePadding\n };\n }\n }\n ]);\n return ExpandableTile;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ExpandableTile, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` if the tile is expanded.\n */ expanded: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Deprecated in v11. Use 'onClick' instead.\n */ handleClick: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The handleClick prop for ExpandableTile has been deprecated in favor of onClick. It will be removed in the next major release.\"),\n /**\n * An ID that can be provided to aria-labelledby\n */ id: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * optional handler to decide whether to ignore a click. returns false if click should be ignored\n */ onBeforeClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the ExpandableTile is clicked\n */ onClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * optional handler to trigger a function when a key is pressed\n */ onKeyUp: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * The `tabindex` attribute.\n */ tabIndex: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number),\n /**\n * The description of the \"collapsed\" icon that can be read by screen readers.\n */ tileCollapsedIconText: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * When \"collapsed\", a label to appear next to the chevron (e.g., \"View more\").\n */ tileCollapsedLabel: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * The description of the \"expanded\" icon that can be read by screen readers.\n */ tileExpandedIconText: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * When \"expanded\", a label to appear next to the chevron (e.g., \"View less\").\n */ tileExpandedLabel: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ExpandableTile, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ExpandableTile, \"defaultProps\", {\n tabIndex: 0,\n expanded: false,\n tileMaxHeight: 0,\n tilePadding: 0,\n onBeforeClick: function onBeforeClick() {\n return true;\n },\n onClick: function onClick() {},\n tileCollapsedIconText: \"Interact to expand Tile\",\n tileExpandedIconText: \"Interact to collapse Tile\",\n light: false\n});\nvar TileAboveTheFoldContent = /*#__PURE__*/ function(_Component4) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(TileAboveTheFoldContent, _Component4);\n var _super4 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(TileAboveTheFoldContent);\n function TileAboveTheFoldContent() {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, TileAboveTheFoldContent);\n return _super4.apply(this, arguments);\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(TileAboveTheFoldContent, [\n {\n key: \"render\",\n value: function render() {\n var prefix = this.context;\n var children = this.props.children;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile-content__above-the-fold\")\n }, children);\n }\n }\n ]);\n return TileAboveTheFoldContent;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileAboveTheFoldContent, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileAboveTheFoldContent, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\nvar TileBelowTheFoldContent = /*#__PURE__*/ function(_Component5) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(TileBelowTheFoldContent, _Component5);\n var _super5 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(TileBelowTheFoldContent);\n function TileBelowTheFoldContent() {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, TileBelowTheFoldContent);\n return _super5.apply(this, arguments);\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(TileBelowTheFoldContent, [\n {\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n var prefix = this.context;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile-content__below-the-fold\")\n }, children);\n }\n }\n ]);\n return TileBelowTheFoldContent;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileBelowTheFoldContent, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileBelowTheFoldContent, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BjYXJib24vcmVhY3QvZXMvY29tcG9uZW50cy9UaWxlL1RpbGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7Q0FLQyxHQUUrVztBQUNqUztBQUM1QztBQUNQO0FBQ087QUFDZ0Q7QUFDN0I7QUFDTztBQUNVO0FBQ1o7QUFDSTtBQUUvRCxJQUFJb0MsdUJBQXVCQyxXQUFXQztBQUV0QyxJQUFJQyxZQUFZO0lBQUM7SUFBWTtJQUFhO0NBQVEsRUFDOUNDLGFBQWE7SUFBQztJQUFZO0lBQVE7SUFBYTtJQUFlO0lBQWlCO0lBQVc7SUFBYTtJQUFXO0NBQVEsRUFDMUhDLGFBQWE7SUFBQztJQUFZO0lBQU07SUFBWTtJQUFTO0lBQVE7SUFBUztJQUFtQjtJQUFhO0lBQWU7SUFBaUI7SUFBVztJQUFZO0lBQWE7SUFBUztJQUFZO0NBQVcsRUFDMU1DLGFBQWE7SUFBQztJQUFZO0lBQWE7SUFBWTtJQUFpQjtJQUFlO0lBQWU7SUFBVztJQUF5QjtJQUF3QjtJQUFzQjtJQUFxQjtJQUFpQjtDQUFRO0FBQ3RPLElBQUlDLE9BQU8sV0FBVyxHQUFFLFNBQVVDLFVBQVUsRUFBRTtJQUM1QzNDLDhFQUFTQSxDQUFDMEMsTUFBTUM7SUFFaEIsSUFBSUMsU0FBUzFDLGlGQUFZQSxDQUFDd0M7SUFFMUIsU0FBU0EsT0FBTztRQUNkdEMsb0ZBQWVBLENBQUMsSUFBSSxFQUFFc0M7UUFFdEIsT0FBT0UsT0FBT0MsS0FBSyxDQUFDLElBQUksRUFBRUM7SUFDNUI7SUFFQXhDLGlGQUFZQSxDQUFDb0MsTUFBTTtRQUFDO1lBQ2xCSyxLQUFLO1lBQ0xDLE9BQU8sU0FBU0MsU0FBUztnQkFDdkIsSUFBSUMsU0FBUyxJQUFJLENBQUNDLE9BQU87Z0JBRXpCLElBQUlDLGNBQWMsSUFBSSxDQUFDQyxLQUFLLEVBQ3hCQyxXQUFXRixZQUFZRSxRQUFRLEVBQy9CQyxZQUFZSCxZQUFZRyxTQUFTLEVBQ2pDQyxRQUFR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QzZMLHlCQUF5QixlQUFlekssaUVBQWFBO0FBRTRDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGNhcmJvbi9yZWFjdC9lcy9jb21wb25lbnRzL1RpbGUvVGlsZS5qcz8wY2E2Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IElCTSBDb3JwLiAyMDE2LCAyMDIyXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlLTIuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmltcG9ydCB7IGluaGVyaXRzIGFzIF9pbmhlcml0cywgY3JlYXRlU3VwZXIgYXMgX2NyZWF0ZVN1cGVyLCBjbGFzc0NhbGxDaGVjayBhcyBfY2xhc3NDYWxsQ2hlY2ssIGNyZWF0ZUNsYXNzIGFzIF9jcmVhdGVDbGFzcywgb2JqZWN0V2l0aG91dFByb3BlcnRpZXMgYXMgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLCBkZWZpbmVQcm9wZXJ0eSBhcyBfZGVmaW5lUHJvcGVydHksIGV4dGVuZHMgYXMgX2V4dGVuZHMsIGFzc2VydFRoaXNJbml0aWFsaXplZCBhcyBfYXNzZXJ0VGhpc0luaXRpYWxpemVkLCBzbGljZWRUb0FycmF5IGFzIF9zbGljZWRUb0FycmF5IH0gZnJvbSAnLi4vLi4vX3ZpcnR1YWwvX3JvbGx1cFBsdWdpbkJhYmVsSGVscGVycy5qcyc7XG5pbXBvcnQgUmVhY3RfX2RlZmF1bHQsIHsgQ29tcG9uZW50LCB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGN4IGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IExpbmsgZnJvbSAnLi4vTGluay9MaW5rLmpzJztcbmltcG9ydCB7IENoZWNrYm94Q2hlY2tlZEZpbGxlZCwgQ2hlY2tib3gsIENoZXZyb25Eb3duIH0gZnJvbSAnQGNhcmJvbi9pY29ucy1yZWFjdCc7XG5pbXBvcnQgZGVwcmVjYXRlIGZyb20gJy4uLy4uL3Byb3AtdHlwZXMvZGVwcmVjYXRlLmpzJztcbmltcG9ydCB7IGNvbXBvc2VFdmVudEhhbmRsZXJzIH0gZnJvbSAnLi4vLi4vdG9vbHMvZXZlbnRzLmpzJztcbmltcG9ydCB7IFByZWZpeENvbnRleHQsIHVzZVByZWZpeCB9IGZyb20gJy4uLy4uL2ludGVybmFsL3VzZVByZWZpeC5qcyc7XG5pbXBvcnQgeyBtYXRjaGVzIH0gZnJvbSAnLi4vLi4vaW50ZXJuYWwva2V5Ym9hcmQvbWF0Y2guanMnO1xuaW1wb3J0IHsgRW50ZXIsIFNwYWNlIH0gZnJvbSAnLi4vLi4vaW50ZXJuYWwva2V5Ym9hcmQva2V5cy5qcyc7XG5cbnZhciBfQ2hlY2tib3hDaGVja2VkRmlsbGUsIF9DaGVja2JveCwgX0NoZXZyb25Eb3duO1xuXG52YXIgX2V4Y2x1ZGVkID0gW1wiY2hpbGRyZW5cIiwgXCJjbGFzc05hbWVcIiwgXCJsaWdodFwiXSxcbiAgICBfZXhjbHVkZWQyID0gW1wiY2hpbGRyZW5cIiwgXCJocmVmXCIsIFwiY2xhc3NOYW1lXCIsIFwiaGFuZGxlQ2xpY2tcIiwgXCJoYW5kbGVLZXlEb3duXCIsIFwib25DbGlja1wiLCBcIm9uS2V5RG93blwiLCBcImNsaWNrZWRcIiwgXCJsaWdodFwiXSxcbiAgICBfZXhjbHVkZWQzID0gW1wiY2hpbGRyZW5cIiwgXCJpZFwiLCBcInRhYkluZGV4XCIsIFwidmFsdWVcIiwgXCJuYW1lXCIsIFwidGl0bGVcIiwgXCJpY29uRGVzY3JpcHRpb25cIiwgXCJjbGFzc05hbWVcIiwgXCJoYW5kbGVDbGlja1wiLCBcImhhbmRsZUtleURvd25cIiwgXCJvbkNsaWNrXCIsIFwib25DaGFuZ2VcIiwgXCJvbktleURvd25cIiwgXCJsaWdodFwiLCBcImRpc2FibGVkXCIsIFwic2VsZWN0ZWRcIl0sXG4gICAgX2V4Y2x1ZGVkNCA9IFtcInRhYkluZGV4XCIsIFwiY2xhc3NOYW1lXCIsIFwiZXhwYW5kZWRcIiwgXCJ0aWxlTWF4SGVpZ2h0XCIsIFwidGlsZVBhZGRpbmdcIiwgXCJoYW5kbGVDbGlja1wiLCBcIm9uS2V5VXBcIiwgXCJ0aWxlQ29sbGFwc2VkSWNvblRleHRcIiwgXCJ0aWxlRXhwYW5kZWRJY29uVGV4dFwiLCBcInRpbGVDb2xsYXBzZWRMYWJlbFwiLCBcInRpbGVFeHBhbmRlZExhYmVsXCIsIFwib25CZWZvcmVDbGlja1wiLCBcImxpZ2h0XCJdO1xudmFyIFRpbGUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db21wb25lbnQpIHtcbiAgX2luaGVyaXRzKFRpbGUsIF9Db21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoVGlsZSk7XG5cbiAgZnVuY3Rpb24gVGlsZSgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVGlsZSk7XG5cbiAgICByZXR1cm4gX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoVGlsZSwgW3tcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBwcmVmaXggPSB0aGlzLmNvbnRleHQ7XG5cbiAgICAgIHZhciBfdGhpcyRwcm9wcyA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgY2hpbGRyZW4gPSBfdGhpcyRwcm9wcy5jaGlsZHJlbixcbiAgICAgICAgICBjbGFzc05hbWUgPSBfdGhpcyRwcm9wcy5jbGFzc05hbWUsXG4gICAgICAgICAgbGlnaHQgPSBfdGhpcyRwcm9wcy5saWdodCxcbiAgICAgICAgICByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF90aGlzJHByb3BzLCBfZXhjbHVkZWQpO1xuXG4gICAgICB2YXIgdGlsZUNsYXNzZXMgPSBjeChcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlXCIpLCBfZGVmaW5lUHJvcGVydHkoe30sIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWxpZ2h0XCIpLCBsaWdodCksIGNsYXNzTmFtZSk7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgX2V4dGVuZHMoe1xuICAgICAgICBjbGFzc05hbWU6IHRpbGVDbGFzc2VzXG4gICAgICB9LCByZXN0KSwgY2hpbGRyZW4pO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBUaWxlO1xufShDb21wb25lbnQpO1xuXG5fZGVmaW5lUHJvcGVydHkoVGlsZSwgXCJwcm9wVHlwZXNcIiwge1xuICAvKipcbiAgICogVGhlIGNoaWxkIG5vZGVzLlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuXG4gIC8qKlxuICAgKiBUaGUgQ1NTIGNsYXNzIG5hbWVzLlxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBgdHJ1ZWAgdG8gdXNlIHRoZSBsaWdodCB2ZXJzaW9uLiBGb3IgdXNlIG9uICR1aS0wMSBiYWNrZ3JvdW5kcyBvbmx5LlxuICAgKiBEb24ndCB1c2UgdGhpcyB0byBtYWtlIHRpbGUgYmFja2dyb3VuZCBjb2xvciBzYW1lIGFzIGNvbnRhaW5lciBiYWNrZ3JvdW5kIGNvbG9yLlxuICAgKi9cbiAgbGlnaHQ6IFByb3BUeXBlcy5ib29sXG59KTtcblxuX2RlZmluZVByb3BlcnR5KFRpbGUsIFwiY29udGV4dFR5cGVcIiwgUHJlZml4Q29udGV4dCk7XG5cbl9kZWZpbmVQcm9wZXJ0eShUaWxlLCBcImRlZmF1bHRQcm9wc1wiLCB7XG4gIGxpZ2h0OiBmYWxzZVxufSk7XG5cbnZhciBDbGlja2FibGVUaWxlID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50Mikge1xuICBfaW5oZXJpdHMoQ2xpY2thYmxlVGlsZSwgX0NvbXBvbmVudDIpO1xuXG4gIHZhciBfc3VwZXIyID0gX2NyZWF0ZVN1cGVyKENsaWNrYWJsZVRpbGUpO1xuXG4gIGZ1bmN0aW9uIENsaWNrYWJsZVRpbGUoKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIENsaWNrYWJsZVRpbGUpO1xuXG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIF90aGlzID0gX3N1cGVyMi5jYWxsLmFwcGx5KF9zdXBlcjIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInN0YXRlXCIsIHt9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJoYW5kbGVDbGlja1wiLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICBldnQucGVyc2lzdCgpO1xuXG4gICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGNsaWNrZWQ6ICFfdGhpcy5zdGF0ZS5jbGlja2VkXG4gICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyRwcm9wcyRoYW5kbGVDbGksIF90aGlzJHByb3BzMiwgX3RoaXMkcHJvcHMkb25DbGljaywgX3RoaXMkcHJvcHMzO1xuXG4gICAgICAgIC8vIFRPRE86IFJlbW92ZSBoYW5kbGVDbGljayBwcm9wIHdoZW4gaGFuZGxlQ2xpY2sgaXMgZGVwcmVjYXRlZFxuICAgICAgICAoKF90aGlzJHByb3BzJGhhbmRsZUNsaSA9IChfdGhpcyRwcm9wczIgPSBfdGhpcy5wcm9wcykuaGFuZGxlQ2xpY2spID09PSBudWxsIHx8IF90aGlzJHByb3BzJGhhbmRsZUNsaSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkcHJvcHMkaGFuZGxlQ2xpLmNhbGwoX3RoaXMkcHJvcHMyLCBldnQpKSB8fCAoKF90aGlzJHByb3BzJG9uQ2xpY2sgPSAoX3RoaXMkcHJvcHMzID0gX3RoaXMucHJvcHMpLm9uQ2xpY2spID09PSBudWxsIHx8IF90aGlzJHByb3BzJG9uQ2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJHByb3BzJG9uQ2xpY2suY2FsbChfdGhpcyRwcm9wczMsIGV2dCkpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaGFuZGxlS2V5RG93blwiLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICBldnQucGVyc2lzdCgpO1xuXG4gICAgICBpZiAobWF0Y2hlcyhldnQsIFtFbnRlciwgU3BhY2VdKSkge1xuICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgY2xpY2tlZDogIV90aGlzLnN0YXRlLmNsaWNrZWRcbiAgICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHZhciBfdGhpcyRwcm9wcyRoYW5kbGVLZXksIF90aGlzJHByb3BzNDtcblxuICAgICAgICAgIC8vIFRPRE86IFJlbW92ZSBoYW5kbGVLZXlEb3duIHByb3Agd2hlbiBoYW5kbGVLZXlEb3duIGlzIGRlcHJlY2F0ZWRcbiAgICAgICAgICAoKF90aGlzJHByb3BzJGhhbmRsZUtleSA9IChfdGhpcyRwcm9wczQgPSBfdGhpcy5wcm9wcykuaGFuZGxlS2V5RG93bikgPT09IG51bGwgfHwgX3RoaXMkcHJvcHMkaGFuZGxlS2V5ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRwcm9wcyRoYW5kbGVLZXkuY2FsbChfdGhpcyRwcm9wczQsIGV2dCkpIHx8IF90aGlzLnByb3BzLm9uS2V5RG93bihldnQpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBfdGhpcyRwcm9wcyRoYW5kbGVLZXkyLCBfdGhpcyRwcm9wczU7XG5cbiAgICAgICAgLy8gVE9ETzogUmVtb3ZlIGhhbmRsZUtleURvd24gcHJvcCB3aGVuIGhhbmRsZUtleURvd24gaXMgZGVwcmVjYXRlZFxuICAgICAgICAoKF90aGlzJHByb3BzJGhhbmRsZUtleTIgPSAoX3RoaXMkcHJvcHM1ID0gX3RoaXMucHJvcHMpLmhhbmRsZUtleURvd24pID09PSBudWxsIHx8IF90aGlzJHByb3BzJGhhbmRsZUtleTIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJHByb3BzJGhhbmRsZUtleTIuY2FsbChfdGhpcyRwcm9wczUsIGV2dCkpIHx8IF90aGlzLnByb3BzLm9uS2V5RG93bihldnQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKENsaWNrYWJsZVRpbGUsIFt7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgX2N4MjtcblxuICAgICAgdmFyIHByZWZpeCA9IHRoaXMuY29udGV4dDtcblxuICAgICAgdmFyIF90aGlzJHByb3BzNiA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgY2hpbGRyZW4gPSBfdGhpcyRwcm9wczYuY2hpbGRyZW4sXG4gICAgICAgICAgaHJlZiA9IF90aGlzJHByb3BzNi5ocmVmLFxuICAgICAgICAgIGNsYXNzTmFtZSA9IF90aGlzJHByb3BzNi5jbGFzc05hbWU7XG4gICAgICAgICAgX3RoaXMkcHJvcHM2LmhhbmRsZUNsaWNrO1xuICAgICAgICAgIF90aGlzJHByb3BzNi5oYW5kbGVLZXlEb3duO1xuICAgICAgICAgIF90aGlzJHByb3BzNi5vbkNsaWNrO1xuICAgICAgICAgIF90aGlzJHByb3BzNi5vbktleURvd247XG4gICAgICAgICAgX3RoaXMkcHJvcHM2LmNsaWNrZWQ7XG4gICAgICAgICAgdmFyIGxpZ2h0ID0gX3RoaXMkcHJvcHM2LmxpZ2h0LFxuICAgICAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3RoaXMkcHJvcHM2LCBfZXhjbHVkZWQyKTtcblxuICAgICAgdmFyIGNsYXNzZXMgPSBjeChcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlXCIpLCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1jbGlja2FibGVcIiksIChfY3gyID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfY3gyLCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1pcy1jbGlja2VkXCIpLCB0aGlzLnN0YXRlLmNsaWNrZWQpLCBfZGVmaW5lUHJvcGVydHkoX2N4MiwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0tbGlnaHRcIiksIGxpZ2h0KSwgX2N4MiksIGNsYXNzTmFtZSk7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoTGluaywgX2V4dGVuZHMoe1xuICAgICAgICBocmVmOiBocmVmLFxuICAgICAgICBjbGFzc05hbWU6IGNsYXNzZXNcbiAgICAgIH0sIHJlc3QsIHtcbiAgICAgICAgb25DbGljazogdGhpcy5oYW5kbGVDbGljayxcbiAgICAgICAgb25LZXlEb3duOiB0aGlzLmhhbmRsZUtleURvd25cbiAgICAgIH0pLCBjaGlsZHJlbik7XG4gICAgfVxuICB9XSwgW3tcbiAgICBrZXk6IFwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzXCIsXG4gICAgdmFsdWU6IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9wcm9wLXR5cGVzXG4gICAgZnVuY3Rpb24gZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKF9yZWYsIHN0YXRlKSB7XG4gICAgICB2YXIgY2xpY2tlZCA9IF9yZWYuY2xpY2tlZDtcbiAgICAgIHZhciBwcmV2Q2xpY2tlZCA9IHN0YXRlLnByZXZDbGlja2VkO1xuICAgICAgcmV0dXJuIHByZXZDbGlja2VkID09PSBjbGlja2VkID8gbnVsbCA6IHtcbiAgICAgICAgY2xpY2tlZDogY2xpY2tlZCxcbiAgICAgICAgcHJldkNsaWNrZWQ6IGNsaWNrZWRcbiAgICAgIH07XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIENsaWNrYWJsZVRpbGU7XG59KENvbXBvbmVudCk7XG5cbl9kZWZpbmVQcm9wZXJ0eShDbGlja2FibGVUaWxlLCBcInByb3BUeXBlc1wiLCB7XG4gIC8qKlxuICAgKiBUaGUgY2hpbGQgbm9kZXMuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG5cbiAgLyoqXG4gICAqIFRoZSBDU1MgY2xhc3MgbmFtZXMuXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIERlcHJlY2F0ZWQgaW4gdjExLiBVc2UgJ29uQ2xpY2snIGluc3RlYWQuXG4gICAqL1xuICBoYW5kbGVDbGljazogZGVwcmVjYXRlKFByb3BUeXBlcy5mdW5jLCAnVGhlIGhhbmRsZUNsaWNrIHByb3AgZm9yIENsaWNrYWJsZVRpbGUgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBvbkNsaWNrLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZS4nKSxcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgZnVuY3Rpb24gdG8gcnVuIHdoZW4gdGhlIENsaWNrYWJsZVRpbGUgaXMgaW50ZXJhY3RlZCB3aXRoIHZpYSBhIGtleWJvYXJkXG4gICAqL1xuICBoYW5kbGVLZXlEb3duOiBkZXByZWNhdGUoUHJvcFR5cGVzLmZ1bmMsICdUaGUgaGFuZGxlS2V5RG93biBwcm9wIGZvciBDbGlja2FibGVUaWxlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2Ygb25LZXlEb3duLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZS4nKSxcblxuICAvKipcbiAgICogVGhlIGhyZWYgZm9yIHRoZSBsaW5rLlxuICAgKi9cbiAgaHJlZjogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogYHRydWVgIHRvIHVzZSB0aGUgbGlnaHQgdmVyc2lvbi4gRm9yIHVzZSBvbiAkdWktMDEgYmFja2dyb3VuZHMgb25seS5cbiAgICogRG9uJ3QgdXNlIHRoaXMgdG8gbWFrZSB0aWxlIGJhY2tncm91bmQgY29sb3Igc2FtZSBhcyBjb250YWluZXIgYmFja2dyb3VuZCBjb2xvci5cbiAgICovXG4gIGxpZ2h0OiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgZnVuY3Rpb24gdG8gcnVuIHdoZW4gdGhlIENsaWNrYWJsZVRpbGUgaXMgY2xpY2tlZFxuICAgKi9cbiAgb25DbGljazogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGZ1bmN0aW9uIHRvIHJ1biB3aGVuIHRoZSBDbGlja2FibGVUaWxlIGlzIGludGVyYWN0ZWQgd2l0aCB2aWEgYSBrZXlib2FyZFxuICAgKi9cbiAgb25LZXlEb3duOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogVGhlIHJlbCBwcm9wZXJ0eSBmb3IgdGhlIGxpbmsuXG4gICAqL1xuICByZWw6IFByb3BUeXBlcy5zdHJpbmdcbn0pO1xuXG5fZGVmaW5lUHJvcGVydHkoQ2xpY2thYmxlVGlsZSwgXCJjb250ZXh0VHlwZVwiLCBQcmVmaXhDb250ZXh0KTtcblxuX2RlZmluZVByb3BlcnR5KENsaWNrYWJsZVRpbGUsIFwiZGVmYXVsdFByb3BzXCIsIHtcbiAgY2xpY2tlZDogZmFsc2UsXG4gIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soKSB7fSxcbiAgb25LZXlEb3duOiBmdW5jdGlvbiBvbktleURvd24oKSB7fSxcbiAgbGlnaHQ6IGZhbHNlXG59KTtcblxuZnVuY3Rpb24gU2VsZWN0YWJsZVRpbGUocHJvcHMpIHtcbiAgdmFyIF9jeDM7XG5cbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgICBpZCA9IHByb3BzLmlkLFxuICAgICAgdGFiSW5kZXggPSBwcm9wcy50YWJJbmRleCxcbiAgICAgIHZhbHVlID0gcHJvcHMudmFsdWUsXG4gICAgICBuYW1lID0gcHJvcHMubmFtZSxcbiAgICAgIHRpdGxlID0gcHJvcHMudGl0bGU7XG4gICAgICBwcm9wcy5pY29uRGVzY3JpcHRpb247XG4gICAgICB2YXIgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLFxuICAgICAgaGFuZGxlQ2xpY2sgPSBwcm9wcy5oYW5kbGVDbGljayxcbiAgICAgIGhhbmRsZUtleURvd24gPSBwcm9wcy5oYW5kbGVLZXlEb3duLFxuICAgICAgb25DbGljayA9IHByb3BzLm9uQ2xpY2ssXG4gICAgICBvbkNoYW5nZSA9IHByb3BzLm9uQ2hhbmdlLFxuICAgICAgb25LZXlEb3duID0gcHJvcHMub25LZXlEb3duLFxuICAgICAgbGlnaHQgPSBwcm9wcy5saWdodCxcbiAgICAgIGRpc2FibGVkID0gcHJvcHMuZGlzYWJsZWQsXG4gICAgICBzZWxlY3RlZCA9IHByb3BzLnNlbGVjdGVkLFxuICAgICAgcmVzdCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhwcm9wcywgX2V4Y2x1ZGVkMyk7XG5cbiAgdmFyIHByZWZpeCA9IHVzZVByZWZpeCgpOyAvLyBUT0RPOiByZXBsYWNlIHdpdGggb25DbGljayB3aGVuIGhhbmRsZUNsaWNrIHByb3AgaXMgZGVwcmVjYXRlZFxuXG4gIHZhciBjbGlja0hhbmRsZXIgPSBoYW5kbGVDbGljayB8fCBvbkNsaWNrOyAvLyBUT0RPOiByZXBsYWNlIHdpdGggb25LZXlEb3duIHdoZW4gaGFuZGxlS2V5RG93biBwcm9wIGlzIGRlcHJlY2F0ZWRcblxuICB2YXIga2V5RG93bkhhbmRsZXIgPSBoYW5kbGVLZXlEb3duIHx8IG9uS2V5RG93bjtcblxuICB2YXIgX3VzZVN0YXRlID0gdXNlU3RhdGUoc2VsZWN0ZWQpLFxuICAgICAgX3VzZVN0YXRlMiA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZSwgMiksXG4gICAgICBpc1NlbGVjdGVkID0gX3VzZVN0YXRlMlswXSxcbiAgICAgIHNldElzU2VsZWN0ZWQgPSBfdXNlU3RhdGUyWzFdO1xuXG4gIHZhciBpbnB1dCA9IHVzZVJlZihudWxsKTtcbiAgdmFyIGNsYXNzZXMgPSBjeChcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlXCIpLCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1zZWxlY3RhYmxlXCIpLCAoX2N4MyA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2N4MywgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0taXMtc2VsZWN0ZWRcIiksIGlzU2VsZWN0ZWQpLCBfZGVmaW5lUHJvcGVydHkoX2N4MywgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0tbGlnaHRcIiksIGxpZ2h0KSwgX2RlZmluZVByb3BlcnR5KF9jeDMsIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWRpc2FibGVkXCIpLCBkaXNhYmxlZCksIF9jeDMpLCBjbGFzc05hbWUpO1xuICB2YXIgaW5wdXRDbGFzc2VzID0gY3goXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS1pbnB1dFwiKSwgX2RlZmluZVByb3BlcnR5KHt9LCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLWlucHV0LS1jaGVja2VkXCIpLCBpc1NlbGVjdGVkKSk7IC8vIFRPRE86IHJlbmFtZSB0byBoYW5kbGVDbGljayB3aGVuIGhhbmRsZUNsaWNrIHByb3AgaXMgZGVwcmVjYXRlZFxuXG4gIGZ1bmN0aW9uIGhhbmRsZU9uQ2xpY2soZXZ0KSB7XG4gICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZ0LnBlcnNpc3QoKTtcbiAgICBzZXRJc1NlbGVjdGVkKCFpc1NlbGVjdGVkKTtcbiAgICBjbGlja0hhbmRsZXIoZXZ0KTtcbiAgICBvbkNoYW5nZShldnQpO1xuICB9IC8vIFRPRE86IHJlbmFtZSB0byBoYW5kbGVLZXlEb3duIHdoZW4gaGFuZGxlS2V5RG93biBwcm9wIGlzIGRlcHJlY2F0ZWRcblxuXG4gIGZ1bmN0aW9uIGhhbmRsZU9uS2V5RG93bihldnQpIHtcbiAgICBldnQucGVyc2lzdCgpO1xuXG4gICAgaWYgKG1hdGNoZXMoZXZ0LCBbRW50ZXIsIFNwYWNlXSkpIHtcbiAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgc2V0SXNTZWxlY3RlZCghaXNTZWxlY3RlZCk7XG4gICAgICBvbkNoYW5nZShldnQpO1xuICAgIH1cblxuICAgIGtleURvd25IYW5kbGVyKGV2dCk7XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVDaGFuZ2UoZXZlbnQpIHtcbiAgICBzZXRJc1NlbGVjdGVkKGV2ZW50LnRhcmdldC5jaGVja2VkKTtcbiAgICBvbkNoYW5nZShldmVudCk7XG4gIH1cblxuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIHNldElzU2VsZWN0ZWQoc2VsZWN0ZWQpO1xuICB9LCBbc2VsZWN0ZWRdKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFJlYWN0X19kZWZhdWx0LkZyYWdtZW50LCBudWxsLCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHtcbiAgICByZWY6IGlucHV0LFxuICAgIHRhYkluZGV4OiAtMSxcbiAgICBpZDogaWQsXG4gICAgY2xhc3NOYW1lOiBpbnB1dENsYXNzZXMsXG4gICAgdmFsdWU6IHZhbHVlLFxuICAgIG9uQ2hhbmdlOiAhZGlzYWJsZWQgPyBoYW5kbGVDaGFuZ2UgOiBudWxsLFxuICAgIHR5cGU6IFwiY2hlY2tib3hcIixcbiAgICBkaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgbmFtZTogbmFtZSxcbiAgICB0aXRsZTogdGl0bGUsXG4gICAgY2hlY2tlZDogaXNTZWxlY3RlZFxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJsYWJlbFwiLCBfZXh0ZW5kcyh7XG4gICAgaHRtbEZvcjogaWQsXG4gICAgY2xhc3NOYW1lOiBjbGFzc2VzIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc3gtYTExeS9uby1ub25pbnRlcmFjdGl2ZS10YWJpbmRleFxuICAgICxcbiAgICB0YWJJbmRleDogIWRpc2FibGVkID8gdGFiSW5kZXggOiBudWxsXG4gIH0sIHJlc3QsIHtcbiAgICBvbkNsaWNrOiAhZGlzYWJsZWQgPyBoYW5kbGVPbkNsaWNrIDogbnVsbCxcbiAgICBvbktleURvd246ICFkaXNhYmxlZCA/IGhhbmRsZU9uS2V5RG93biA6IG51bGxcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlX19jaGVja21hcmsgXCIpLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlX19jaGVja21hcmstLXBlcnNpc3RlbnRcIilcbiAgfSwgaXNTZWxlY3RlZCA/IF9DaGVja2JveENoZWNrZWRGaWxsZSB8fCAoX0NoZWNrYm94Q2hlY2tlZEZpbGxlID0gLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoQ2hlY2tib3hDaGVja2VkRmlsbGVkLCBudWxsKSkgOiBfQ2hlY2tib3ggfHwgKF9DaGVja2JveCA9IC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KENoZWNrYm94LCBudWxsKSkpLCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS1jb250ZW50XCIpXG4gIH0sIGNoaWxkcmVuKSkpO1xufVxuU2VsZWN0YWJsZVRpbGUuZGVmYXVsdFByb3BzID0ge1xuICB2YWx1ZTogJ3ZhbHVlJyxcbiAgdGl0bGU6ICd0aXRsZScsXG4gIHNlbGVjdGVkOiBmYWxzZSxcbiAgdGFiSW5kZXg6IDAsXG4gIGxpZ2h0OiBmYWxzZSxcbiAgb25DbGljazogZnVuY3Rpb24gb25DbGljaygpIHt9LFxuICBvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoKSB7fSxcbiAgb25LZXlEb3duOiBmdW5jdGlvbiBvbktleURvd24oKSB7fVxufTtcblNlbGVjdGFibGVUaWxlLnByb3BUeXBlcyA9IHtcbiAgLyoqXG4gICAqIFRoZSBjaGlsZCBub2Rlcy5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcblxuICAvKipcbiAgICogVGhlIENTUyBjbGFzcyBuYW1lcy5cbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogU3BlY2lmeSB3aGV0aGVyIHRoZSBTZWxlY3RhYmxlVGlsZSBzaG91bGQgYmUgZGlzYWJsZWRcbiAgICovXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgZnVuY3Rpb24gdG8gcnVuIHdoZW4gdGhlIFNlbGVjdGFibGVUaWxlIGlzIGNsaWNrZWRcbiAgICovXG4gIGhhbmRsZUNsaWNrOiBkZXByZWNhdGUoUHJvcFR5cGVzLmZ1bmMsICdUaGUgYGhhbmRsZUNsaWNrYCBwcm9wIGZvciBgU2VsZWN0YWJsZVRpbGVgIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgYG9uQ2xpY2tgLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZS4nKSxcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgZnVuY3Rpb24gdG8gcnVuIHdoZW4gdGhlIFNlbGVjdGFibGVUaWxlIGlzIGludGVyYWN0ZWQgd2l0aCB2aWEgYSBrZXlib2FyZFxuICAgKi9cbiAgaGFuZGxlS2V5RG93bjogZGVwcmVjYXRlKFByb3BUeXBlcy5mdW5jLCAnVGhlIGBoYW5kbGVLZXlEb3duYCBwcm9wIGZvciBgU2VsZWN0YWJsZVRpbGVgIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgYG9uS2V5RG93bmAuIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLicpLFxuXG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIGNoZWNrbWFyayBpY29uLlxuICAgKi9cbiAgaWNvbkRlc2NyaXB0aW9uOiBkZXByZWNhdGUoUHJvcFR5cGVzLnN0cmluZywgJ1RoZSBgaWNvbkRlc2NyaXB0aW9uYCBwcm9wIGZvciBgU2VsZWN0YWJsZVRpbGVgIGlzIG5vIGxvbmdlciBuZWVkZWQgYW5kIGhhcyAnICsgJ2JlZW4gZGVwcmVjYXRlZC4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuJyksXG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgYDxpbnB1dD5gLlxuICAgKi9cbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIGB0cnVlYCB0byB1c2UgdGhlIGxpZ2h0IHZlcnNpb24uIEZvciB1c2Ugb24gJHVpLTAxIGJhY2tncm91bmRzIG9ubHkuXG4gICAqIERvbid0IHVzZSB0aGlzIHRvIG1ha2UgdGlsZSBiYWNrZ3JvdW5kIGNvbG9yIHNhbWUgYXMgY29udGFpbmVyIGJhY2tncm91bmQgY29sb3IuXG4gICAqL1xuICBsaWdodDogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIFRoZSBgbmFtZWAgb2YgdGhlIGA8aW5wdXQ+YC5cbiAgICovXG4gIG5hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIFRoZSBlbXB0eSBoYW5kbGVyIG9mIHRoZSBgPGlucHV0PmAuXG4gICAqL1xuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGZ1bmN0aW9uIHRvIHJ1biB3aGVuIHRoZSBTZWxlY3RhYmxlVGlsZSBpcyBjbGlja2VkXG4gICAqL1xuICBvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgZnVuY3Rpb24gdG8gcnVuIHdoZW4gdGhlIFNlbGVjdGFibGVUaWxlIGlzIGludGVyYWN0ZWQgd2l0aCB2aWEgYSBrZXlib2FyZFxuICAgKi9cbiAgb25LZXlEb3duOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogYHRydWVgIHRvIHNlbGVjdCB0aGlzIHRpbGUuXG4gICAqL1xuICBzZWxlY3RlZDogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIHRhYiBpbmRleCBvZiB0aGUgd3JhcHBlciBlbGVtZW50XG4gICAqL1xuICB0YWJJbmRleDogUHJvcFR5cGVzLm51bWJlcixcblxuICAvKipcbiAgICogVGhlIGB0aXRsZWAgb2YgdGhlIGA8aW5wdXQ+YC5cbiAgICovXG4gIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgb2YgdGhlIGA8aW5wdXQ+YC5cbiAgICovXG4gIHZhbHVlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMubnVtYmVyXSkuaXNSZXF1aXJlZFxufTtcbnZhciBFeHBhbmRhYmxlVGlsZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudDMpIHtcbiAgX2luaGVyaXRzKEV4cGFuZGFibGVUaWxlLCBfQ29tcG9uZW50Myk7XG5cbiAgdmFyIF9zdXBlcjMgPSBfY3JlYXRlU3VwZXIoRXhwYW5kYWJsZVRpbGUpO1xuXG4gIGZ1bmN0aW9uIEV4cGFuZGFibGVUaWxlKCkge1xuICAgIHZhciBfdGhpczI7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRXhwYW5kYWJsZVRpbGUpO1xuXG4gICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4yKSwgX2tleTIgPSAwOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgICBhcmdzW19rZXkyXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gICAgfVxuXG4gICAgX3RoaXMyID0gX3N1cGVyMy5jYWxsLmFwcGx5KF9zdXBlcjMsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMyKSwgXCJzdGF0ZVwiLCB7fSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpczIpLCBcInJlc2l6ZU9ic2VydmVyXCIsIG51bGwpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMyKSwgXCJjb21wb25lbnREaWRNb3VudFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpczIucmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoZnVuY3Rpb24gKGVudHJpZXMpIHtcbiAgICAgICAgdmFyIF9lbnRyaWVzID0gX3NsaWNlZFRvQXJyYXkoZW50cmllcywgMSksXG4gICAgICAgICAgICBhYm92ZVRoZUZvbGQgPSBfZW50cmllc1swXTtcblxuICAgICAgICBfdGhpczIuc2V0U3RhdGUoe1xuICAgICAgICAgIHRpbGVNYXhIZWlnaHQ6IGFib3ZlVGhlRm9sZC5jb250ZW50UmVjdC5oZWlnaHRcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgaWYgKF90aGlzMi50aWxlKSB7XG4gICAgICAgIHZhciBnZXRTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKF90aGlzMi50aWxlLCBudWxsKTtcblxuICAgICAgICBpZiAoX3RoaXMyLmFib3ZlVGhlRm9sZCkge1xuICAgICAgICAgIF90aGlzMi5yZXNpemVPYnNlcnZlci5vYnNlcnZlKF90aGlzMi5hYm92ZVRoZUZvbGQpO1xuXG4gICAgICAgICAgX3RoaXMyLnNldFN0YXRlKHtcbiAgICAgICAgICAgIHRpbGVNYXhIZWlnaHQ6IF90aGlzMi5hYm92ZVRoZUZvbGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0LFxuICAgICAgICAgICAgdGlsZVBhZGRpbmc6IHBhcnNlSW50KGdldFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ3BhZGRpbmctdG9wJyksIDEwKSArIHBhcnNlSW50KGdldFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ3BhZGRpbmctYm90dG9tJyksIDEwKVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpczIpLCBcImNvbXBvbmVudERpZFVwZGF0ZVwiLCBmdW5jdGlvbiAocHJldlByb3BzKSB7XG4gICAgICBpZiAocHJldlByb3BzLmV4cGFuZGVkICE9PSBfdGhpczIucHJvcHMuZXhwYW5kZWQpIHtcbiAgICAgICAgX3RoaXMyLnNldE1heEhlaWdodCgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMyKSwgXCJzZXRNYXhIZWlnaHRcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKF90aGlzMi5zdGF0ZS5leHBhbmRlZCA/IF90aGlzMi50aWxlQ29udGVudCA6IF90aGlzMi5hYm92ZVRoZUZvbGQpIHtcbiAgICAgICAgX3RoaXMyLnNldFN0YXRlKHtcbiAgICAgICAgICB0aWxlTWF4SGVpZ2h0OiBfdGhpczIuc3RhdGUuZXhwYW5kZWQgPyBfdGhpczIudGlsZUNvbnRlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0IDogX3RoaXMyLmFib3ZlVGhlRm9sZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHRcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpczIpLCBcImhhbmRsZUNsaWNrXCIsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIGlmICghX3RoaXMyLnByb3BzLm9uQmVmb3JlQ2xpY2soZXZ0KSB8fCBldnQudGFyZ2V0LnRhZ05hbWUgPT09ICdJTlBVVCcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBldnQucGVyc2lzdCgpO1xuXG4gICAgICBfdGhpczIuc2V0U3RhdGUoe1xuICAgICAgICBleHBhbmRlZDogIV90aGlzMi5zdGF0ZS5leHBhbmRlZFxuICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMyJHByb3BzJGhhbmRsZUNsLCBfdGhpczIkcHJvcHMsIF90aGlzMiRwcm9wcyRvbkNsaWNrLCBfdGhpczIkcHJvcHMyO1xuXG4gICAgICAgIF90aGlzMi5zZXRNYXhIZWlnaHQoKTsgLy8gVE9ETzogUmVtb3ZlIGhhbmRsZUNsaWNrIHByb3Agd2hlbiBoYW5kbGVDbGljayBpcyBkZXByZWNhdGVkXG5cblxuICAgICAgICAoKF90aGlzMiRwcm9wcyRoYW5kbGVDbCA9IChfdGhpczIkcHJvcHMgPSBfdGhpczIucHJvcHMpLmhhbmRsZUNsaWNrKSA9PT0gbnVsbCB8fCBfdGhpczIkcHJvcHMkaGFuZGxlQ2wgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzMiRwcm9wcyRoYW5kbGVDbC5jYWxsKF90aGlzMiRwcm9wcywgZXZ0KSkgfHwgKChfdGhpczIkcHJvcHMkb25DbGljayA9IChfdGhpczIkcHJvcHMyID0gX3RoaXMyLnByb3BzKS5vbkNsaWNrKSA9PT0gbnVsbCB8fCBfdGhpczIkcHJvcHMkb25DbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMyJHByb3BzJG9uQ2xpY2suY2FsbChfdGhpczIkcHJvcHMyLCBldnQpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMyKSwgXCJoYW5kbGVLZXlVcFwiLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICBpZiAoZXZ0LnRhcmdldCAhPT0gX3RoaXMyLnRpbGUpIHtcbiAgICAgICAgaWYgKG1hdGNoZXMoZXZ0LCBbRW50ZXIsIFNwYWNlXSkpIHtcbiAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMyKSwgXCJnZXRDaGlsZHJlblwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gUmVhY3RfX2RlZmF1bHQuQ2hpbGRyZW4udG9BcnJheShfdGhpczIucHJvcHMuY2hpbGRyZW4pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIF90aGlzMjtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhFeHBhbmRhYmxlVGlsZSwgW3tcbiAgICBrZXk6IFwiY29tcG9uZW50V2lsbFVubW91bnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICBpZiAodGhpcy5yZXNpemVPYnNlcnZlcikge1xuICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfY3g1LFxuICAgICAgICAgIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgIHZhciBfdGhpcyRwcm9wczcgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIHRhYkluZGV4ID0gX3RoaXMkcHJvcHM3LnRhYkluZGV4LFxuICAgICAgICAgIGNsYXNzTmFtZSA9IF90aGlzJHByb3BzNy5jbGFzc05hbWU7XG4gICAgICAgICAgX3RoaXMkcHJvcHM3LmV4cGFuZGVkO1xuICAgICAgICAgIF90aGlzJHByb3BzNy50aWxlTWF4SGVpZ2h0O1xuICAgICAgICAgIF90aGlzJHByb3BzNy50aWxlUGFkZGluZztcbiAgICAgICAgICBfdGhpcyRwcm9wczcuaGFuZGxlQ2xpY2s7XG4gICAgICAgICAgdmFyIG9uS2V5VXAgPSBfdGhpcyRwcm9wczcub25LZXlVcCxcbiAgICAgICAgICB0aWxlQ29sbGFwc2VkSWNvblRleHQgPSBfdGhpcyRwcm9wczcudGlsZUNvbGxhcHNlZEljb25UZXh0LFxuICAgICAgICAgIHRpbGVFeHBhbmRlZEljb25UZXh0ID0gX3RoaXMkcHJvcHM3LnRpbGVFeHBhbmRlZEljb25UZXh0LFxuICAgICAgICAgIHRpbGVDb2xsYXBzZWRMYWJlbCA9IF90aGlzJHByb3BzNy50aWxlQ29sbGFwc2VkTGFiZWwsXG4gICAgICAgICAgdGlsZUV4cGFuZGVkTGFiZWwgPSBfdGhpcyRwcm9wczcudGlsZUV4cGFuZGVkTGFiZWw7XG4gICAgICAgICAgX3RoaXMkcHJvcHM3Lm9uQmVmb3JlQ2xpY2s7XG4gICAgICAgICAgdmFyIGxpZ2h0ID0gX3RoaXMkcHJvcHM3LmxpZ2h0LFxuICAgICAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3RoaXMkcHJvcHM3LCBfZXhjbHVkZWQ0KTtcblxuICAgICAgdmFyIHByZWZpeCA9IHRoaXMuY29udGV4dDtcbiAgICAgIHZhciBpc0V4cGFuZGVkID0gdGhpcy5zdGF0ZS5leHBhbmRlZDtcbiAgICAgIHZhciBjbGFzc2VzID0gY3goXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZVwiKSwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0tZXhwYW5kYWJsZVwiKSwgKF9jeDUgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9jeDUsIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWlzLWV4cGFuZGVkXCIpLCBpc0V4cGFuZGVkKSwgX2RlZmluZVByb3BlcnR5KF9jeDUsIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWxpZ2h0XCIpLCBsaWdodCksIF9jeDUpLCBjbGFzc05hbWUpO1xuICAgICAgdmFyIHRpbGVTdHlsZSA9IHtcbiAgICAgICAgbWF4SGVpZ2h0OiBpc0V4cGFuZGVkID8gbnVsbCA6IHRoaXMuc3RhdGUudGlsZU1heEhlaWdodCArIHRoaXMuc3RhdGUudGlsZVBhZGRpbmdcbiAgICAgIH07XG4gICAgICB2YXIgY2hpbGRyZW5Bc0FycmF5ID0gdGhpcy5nZXRDaGlsZHJlbigpO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgLyojX19QVVJFX18qL1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganN4LWExMXkvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cyxqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnNcbiAgICAgICAgUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLCBfZXh0ZW5kcyh7XG4gICAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgICByZWY6IGZ1bmN0aW9uIHJlZih0aWxlKSB7XG4gICAgICAgICAgICBfdGhpczMudGlsZSA9IHRpbGU7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdHlsZTogdGlsZVN0eWxlLFxuICAgICAgICAgIGNsYXNzTmFtZTogY2xhc3NlcyxcbiAgICAgICAgICBcImFyaWEtZXhwYW5kZWRcIjogaXNFeHBhbmRlZCxcbiAgICAgICAgICB0aXRsZTogaXNFeHBhbmRlZCA/IHRpbGVFeHBhbmRlZEljb25UZXh0IDogdGlsZUNvbGxhcHNlZEljb25UZXh0XG4gICAgICAgIH0sIHJlc3QsIHtcbiAgICAgICAgICBvbktleVVwOiBjb21wb3NlRXZlbnRIYW5kbGVycyhbb25LZXlVcCwgdGhpcy5oYW5kbGVLZXlVcF0pLFxuICAgICAgICAgIG9uQ2xpY2s6IHRoaXMuaGFuZGxlQ2xpY2ssXG4gICAgICAgICAgdGFiSW5kZXg6IHRhYkluZGV4XG4gICAgICAgIH0pLCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgICAgcmVmOiBmdW5jdGlvbiByZWYodGlsZUNvbnRlbnQpIHtcbiAgICAgICAgICAgIF90aGlzMy50aWxlQ29udGVudCA9IHRpbGVDb250ZW50O1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICAgIHJlZjogZnVuY3Rpb24gcmVmKGFib3ZlVGhlRm9sZCkge1xuICAgICAgICAgICAgX3RoaXMzLmFib3ZlVGhlRm9sZCA9IGFib3ZlVGhlRm9sZDtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS1jb250ZW50XCIpXG4gICAgICAgIH0sIGNoaWxkcmVuQXNBcnJheVswXSksIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGVfX2NoZXZyb25cIilcbiAgICAgICAgfSwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIG51bGwsIGlzRXhwYW5kZWQgPyB0aWxlRXhwYW5kZWRMYWJlbCA6IHRpbGVDb2xsYXBzZWRMYWJlbCksIF9DaGV2cm9uRG93biB8fCAoX0NoZXZyb25Eb3duID0gLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoQ2hldnJvbkRvd24sIG51bGwpKSksIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtY29udGVudFwiKVxuICAgICAgICB9LCBjaGlsZHJlbkFzQXJyYXlbMV0pKSlcbiAgICAgICk7XG4gICAgfVxuICB9XSwgW3tcbiAgICBrZXk6IFwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyggLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L3Byb3AtdHlwZXNcbiAgICBfcmVmMiwgc3RhdGUpIHtcbiAgICAgIHZhciBleHBhbmRlZCA9IF9yZWYyLmV4cGFuZGVkLFxuICAgICAgICAgIHRpbGVNYXhIZWlnaHQgPSBfcmVmMi50aWxlTWF4SGVpZ2h0LFxuICAgICAgICAgIHRpbGVQYWRkaW5nID0gX3JlZjIudGlsZVBhZGRpbmc7XG4gICAgICB2YXIgcHJldkV4cGFuZGVkID0gc3RhdGUucHJldkV4cGFuZGVkLFxuICAgICAgICAgIHByZXZUaWxlTWF4SGVpZ2h0ID0gc3RhdGUucHJldlRpbGVNYXhIZWlnaHQsXG4gICAgICAgICAgcHJldlRpbGVQYWRkaW5nID0gc3RhdGUucHJldlRpbGVQYWRkaW5nLFxuICAgICAgICAgIGN1cnJlbnRFeHBhbmRlZCA9IHN0YXRlLmV4cGFuZGVkLFxuICAgICAgICAgIGN1cnJlbnRUaWxlTWF4SGVpZ2h0ID0gc3RhdGUudGlsZU1heEhlaWdodCxcbiAgICAgICAgICBjdXJyZW50VGlsZVBhZGRpbmcgPSBzdGF0ZS50aWxlUGFkZGluZztcbiAgICAgIHZhciBleHBhbmRlZENoYW5nZWQgPSBwcmV2RXhwYW5kZWQgIT09IGV4cGFuZGVkO1xuICAgICAgdmFyIHRpbGVNYXhIZWlnaHRDaGFuZ2VkID0gcHJldlRpbGVNYXhIZWlnaHQgIT09IHRpbGVNYXhIZWlnaHQ7XG4gICAgICB2YXIgdGlsZVBhZGRpbmdDaGFuZ2VkID0gcHJldlRpbGVQYWRkaW5nICE9PSB0aWxlUGFkZGluZztcbiAgICAgIHJldHVybiAhZXhwYW5kZWRDaGFuZ2VkICYmICF0aWxlTWF4SGVpZ2h0Q2hhbmdlZCAmJiAhdGlsZVBhZGRpbmdDaGFuZ2VkID8gbnVsbCA6IHtcbiAgICAgICAgZXhwYW5kZWQ6ICFleHBhbmRlZENoYW5nZWQgPyBjdXJyZW50RXhwYW5kZWQgOiBleHBhbmRlZCxcbiAgICAgICAgdGlsZU1heEhlaWdodDogIXRpbGVNYXhIZWlnaHRDaGFuZ2VkID8gY3VycmVudFRpbGVNYXhIZWlnaHQgOiB0aWxlTWF4SGVpZ2h0LFxuICAgICAgICB0aWxlUGFkZGluZzogIXRpbGVQYWRkaW5nQ2hhbmdlZCA/IGN1cnJlbnRUaWxlUGFkZGluZyA6IHRpbGVQYWRkaW5nLFxuICAgICAgICBwcmV2RXhwYW5kZWQ6IGV4cGFuZGVkLFxuICAgICAgICBwcmV2VGlsZU1heEhlaWdodDogdGlsZU1heEhlaWdodCxcbiAgICAgICAgcHJldlRpbGVQYWRkaW5nOiB0aWxlUGFkZGluZ1xuICAgICAgfTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gRXhwYW5kYWJsZVRpbGU7XG59KENvbXBvbmVudCk7XG5cbl9kZWZpbmVQcm9wZXJ0eShFeHBhbmRhYmxlVGlsZSwgXCJwcm9wVHlwZXNcIiwge1xuICAvKipcbiAgICogVGhlIGNoaWxkIG5vZGVzLlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuXG4gIC8qKlxuICAgKiBUaGUgQ1NTIGNsYXNzIG5hbWVzLlxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBgdHJ1ZWAgaWYgdGhlIHRpbGUgaXMgZXhwYW5kZWQuXG4gICAqL1xuICBleHBhbmRlZDogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIERlcHJlY2F0ZWQgaW4gdjExLiBVc2UgJ29uQ2xpY2snIGluc3RlYWQuXG4gICAqL1xuICBoYW5kbGVDbGljazogZGVwcmVjYXRlKFByb3BUeXBlcy5mdW5jLCAnVGhlIGhhbmRsZUNsaWNrIHByb3AgZm9yIEV4cGFuZGFibGVUaWxlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2Ygb25DbGljay4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuJyksXG5cbiAgLyoqXG4gICAqIEFuIElEIHRoYXQgY2FuIGJlIHByb3ZpZGVkIHRvIGFyaWEtbGFiZWxsZWRieVxuICAgKi9cbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIGB0cnVlYCB0byB1c2UgdGhlIGxpZ2h0IHZlcnNpb24uIEZvciB1c2Ugb24gJHVpLTAxIGJhY2tncm91bmRzIG9ubHkuXG4gICAqIERvbid0IHVzZSB0aGlzIHRvIG1ha2UgdGlsZSBiYWNrZ3JvdW5kIGNvbG9yIHNhbWUgYXMgY29udGFpbmVyIGJhY2tncm91bmQgY29sb3IuXG4gICAqL1xuICBsaWdodDogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIG9wdGlvbmFsIGhhbmRsZXIgdG8gZGVjaWRlIHdoZXRoZXIgdG8gaWdub3JlIGEgY2xpY2suIHJldHVybnMgZmFsc2UgaWYgY2xpY2sgc2hvdWxkIGJlIGlnbm9yZWRcbiAgICovXG4gIG9uQmVmb3JlQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBmdW5jdGlvbiB0byBydW4gd2hlbiB0aGUgRXhwYW5kYWJsZVRpbGUgaXMgY2xpY2tlZFxuICAgICovXG4gIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBvcHRpb25hbCBoYW5kbGVyIHRvIHRyaWdnZXIgYSBmdW5jdGlvbiB3aGVuIGEga2V5IGlzIHByZXNzZWRcbiAgICovXG4gIG9uS2V5VXA6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBUaGUgYHRhYmluZGV4YCBhdHRyaWJ1dGUuXG4gICAqL1xuICB0YWJJbmRleDogUHJvcFR5cGVzLm51bWJlcixcblxuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBcImNvbGxhcHNlZFwiIGljb24gdGhhdCBjYW4gYmUgcmVhZCBieSBzY3JlZW4gcmVhZGVycy5cbiAgICovXG4gIHRpbGVDb2xsYXBzZWRJY29uVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogV2hlbiBcImNvbGxhcHNlZFwiLCBhIGxhYmVsIHRvIGFwcGVhciBuZXh0IHRvIHRoZSBjaGV2cm9uIChlLmcuLCBcIlZpZXcgbW9yZVwiKS5cbiAgICovXG4gIHRpbGVDb2xsYXBzZWRMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBcImV4cGFuZGVkXCIgaWNvbiB0aGF0IGNhbiBiZSByZWFkIGJ5IHNjcmVlbiByZWFkZXJzLlxuICAgKi9cbiAgdGlsZUV4cGFuZGVkSWNvblRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIFdoZW4gXCJleHBhbmRlZFwiLCBhIGxhYmVsIHRvIGFwcGVhciBuZXh0IHRvIHRoZSBjaGV2cm9uIChlLmcuLCBcIlZpZXcgbGVzc1wiKS5cbiAgICovXG4gIHRpbGVFeHBhbmRlZExhYmVsOiBQcm9wVHlwZXMuc3RyaW5nXG59KTtcblxuX2RlZmluZVByb3BlcnR5KEV4cGFuZGFibGVUaWxlLCBcImNvbnRleHRUeXBlXCIsIFByZWZpeENvbnRleHQpO1xuXG5fZGVmaW5lUHJvcGVydHkoRXhwYW5kYWJsZVRpbGUsIFwiZGVmYXVsdFByb3BzXCIsIHtcbiAgdGFiSW5kZXg6IDAsXG4gIGV4cGFuZGVkOiBmYWxzZSxcbiAgdGlsZU1heEhlaWdodDogMCxcbiAgdGlsZVBhZGRpbmc6IDAsXG4gIG9uQmVmb3JlQ2xpY2s6IGZ1bmN0aW9uIG9uQmVmb3JlQ2xpY2soKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG4gIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soKSB7fSxcbiAgdGlsZUNvbGxhcHNlZEljb25UZXh0OiAnSW50ZXJhY3QgdG8gZXhwYW5kIFRpbGUnLFxuICB0aWxlRXhwYW5kZWRJY29uVGV4dDogJ0ludGVyYWN0IHRvIGNvbGxhcHNlIFRpbGUnLFxuICBsaWdodDogZmFsc2Vcbn0pO1xuXG52YXIgVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db21wb25lbnQ0KSB7XG4gIF9pbmhlcml0cyhUaWxlQWJvdmVUaGVGb2xkQ29udGVudCwgX0NvbXBvbmVudDQpO1xuXG4gIHZhciBfc3VwZXI0ID0gX2NyZWF0ZVN1cGVyKFRpbGVBYm92ZVRoZUZvbGRDb250ZW50KTtcblxuICBmdW5jdGlvbiBUaWxlQWJvdmVUaGVGb2xkQ29udGVudCgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQpO1xuXG4gICAgcmV0dXJuIF9zdXBlcjQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhUaWxlQWJvdmVUaGVGb2xkQ29udGVudCwgW3tcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBwcmVmaXggPSB0aGlzLmNvbnRleHQ7XG4gICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLnByb3BzLmNoaWxkcmVuO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS1jb250ZW50X19hYm92ZS10aGUtZm9sZFwiKVxuICAgICAgfSwgY2hpbGRyZW4pO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBUaWxlQWJvdmVUaGVGb2xkQ29udGVudDtcbn0oQ29tcG9uZW50KTtcblxuX2RlZmluZVByb3BlcnR5KFRpbGVBYm92ZVRoZUZvbGRDb250ZW50LCBcInByb3BUeXBlc1wiLCB7XG4gIC8qKlxuICAgKiBUaGUgY2hpbGQgbm9kZXMuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGVcbn0pO1xuXG5fZGVmaW5lUHJvcGVydHkoVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQsIFwiY29udGV4dFR5cGVcIiwgUHJlZml4Q29udGV4dCk7XG5cbnZhciBUaWxlQmVsb3dUaGVGb2xkQ29udGVudCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudDUpIHtcbiAgX2luaGVyaXRzKFRpbGVCZWxvd1RoZUZvbGRDb250ZW50LCBfQ29tcG9uZW50NSk7XG5cbiAgdmFyIF9zdXBlcjUgPSBfY3JlYXRlU3VwZXIoVGlsZUJlbG93VGhlRm9sZENvbnRlbnQpO1xuXG4gIGZ1bmN0aW9uIFRpbGVCZWxvd1RoZUZvbGRDb250ZW50KCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBUaWxlQmVsb3dUaGVGb2xkQ29udGVudCk7XG5cbiAgICByZXR1cm4gX3N1cGVyNS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFRpbGVCZWxvd1RoZUZvbGRDb250ZW50LCBbe1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5wcm9wcy5jaGlsZHJlbjtcbiAgICAgIHZhciBwcmVmaXggPSB0aGlzLmNvbnRleHQ7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLWNvbnRlbnRfX2JlbG93LXRoZS1mb2xkXCIpXG4gICAgICB9LCBjaGlsZHJlbik7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFRpbGVCZWxvd1RoZUZvbGRDb250ZW50O1xufShDb21wb25lbnQpO1xuXG5fZGVmaW5lUHJvcGVydHkoVGlsZUJlbG93VGhlRm9sZENvbnRlbnQsIFwicHJvcFR5cGVzXCIsIHtcbiAgLyoqXG4gICAqIFRoZSBjaGlsZCBub2Rlcy5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZVxufSk7XG5cbl9kZWZpbmVQcm9wZXJ0eShUaWxlQmVsb3dUaGVGb2xkQ29udGVudCwgXCJjb250ZXh0VHlwZVwiLCBQcmVmaXhDb250ZXh0KTtcblxuZXhwb3J0IHsgQ2xpY2thYmxlVGlsZSwgRXhwYW5kYWJsZVRpbGUsIFNlbGVjdGFibGVUaWxlLCBUaWxlLCBUaWxlQWJvdmVUaGVGb2xkQ29udGVudCwgVGlsZUJlbG93VGhlRm9sZENvbnRlbnQgfTtcbiJdLCJuYW1lcyI6WyJpbmhlcml0cyIsIl9pbmhlcml0cyIsImNyZWF0ZVN1cGVyIiwiX2NyZWF0ZVN1cGVyIiwiY2xhc3NDYWxsQ2hlY2siLCJfY2xhc3NDYWxsQ2hlY2siLCJjcmVhdGVDbGFzcyIsIl9jcmVhdGVDbGFzcyIsIm9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJfZGVmaW5lUHJvcGVydHkiLCJleHRlbmRzIiwiX2V4dGVuZHMiLCJhc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwic2xpY2VkVG9BcnJheSIsIl9zbGljZWRUb0FycmF5IiwiUmVhY3RfX2RlZmF1bHQiLCJDb21wb25lbnQiLCJ1c2VTdGF0ZSIsInVzZVJlZiIsInVzZUVmZmVjdCIsIlByb3BUeXBlcyIsImN4IiwiTGluayIsIkNoZWNrYm94Q2hlY2tlZEZpbGxlZCIsIkNoZWNrYm94IiwiQ2hldnJvbkRvd24iLCJkZXByZWNhdGUiLCJjb21wb3NlRXZlbnRIYW5kbGVycyIsIlByZWZpeENvbnRleHQiLCJ1c2VQcmVmaXgiLCJtYXRjaGVzIiwiRW50ZXIiLCJTcGFjZSIsIl9DaGVja2JveENoZWNrZWRGaWxsZSIsIl9DaGVja2JveCIsIl9DaGV2cm9uRG93biIsIl9leGNsdWRlZCIsIl9leGNsdWRlZDIiLCJfZXhjbHVkZWQzIiwiX2V4Y2x1ZGVkNCIsIlRpbGUiLCJfQ29tcG9uZW50IiwiX3N1cGVyIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJrZXkiLCJ2YWx1ZSIsInJlbmRlciIsInByZWZpeCIsImNvbnRleHQiLCJfdGhpcyRwcm9wcyIsInByb3BzIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJsaWdodCIsInJlc3QiLCJ0aWxlQ2xhc3NlcyIsImNvbmNhdCIsImNyZWF0ZUVsZW1lbnQiLCJub2RlIiwic3RyaW5nIiwiYm9vbCIsIkNsaWNrYWJsZVRpbGUiLCJfQ29tcG9uZW50MiIsIl9zdXBlcjIiLCJfdGhpcyIsIl9sZW4iLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY2FsbCIsImV2dCIsInBlcnNpc3QiLCJzZXRTdGF0ZSIsImNsaWNrZWQiLCJzdGF0ZSIsIl90aGlzJHByb3BzJGhhbmRsZUNsaSIsIl90aGlzJHByb3BzMiIsIl90aGlzJHByb3BzJG9uQ2xpY2siLCJfdGhpcyRwcm9wczMiLCJoYW5kbGVDbGljayIsIm9uQ2xpY2siLCJfdGhpcyRwcm9wcyRoYW5kbGVLZXkiLCJfdGhpcyRwcm9wczQiLCJoYW5kbGVLZXlEb3duIiwib25LZXlEb3duIiwiX3RoaXMkcHJvcHMkaGFuZGxlS2V5MiIsIl90aGlzJHByb3BzNSIsIl9jeDIiLCJfdGhpcyRwcm9wczYiLCJocmVmIiwiY2xhc3NlcyIsImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyIsIl9yZWYiLCJwcmV2Q2xpY2tlZCIsImZ1bmMiLCJyZWwiLCJTZWxlY3RhYmxlVGlsZSIsImhhbmRsZU9uQ2xpY2siLCJwcmV2ZW50RGVmYXVsdCIsInNldElzU2VsZWN0ZWQiLCJpc1NlbGVjdGVkIiwiY2xpY2tIYW5kbGVyIiwib25DaGFuZ2UiLCJoYW5kbGVPbktleURvd24iLCJrZXlEb3duSGFuZGxlciIsImhhbmRsZUNoYW5nZSIsImV2ZW50IiwidGFyZ2V0IiwiY2hlY2tlZCIsIl9jeDMiLCJpZCIsInRhYkluZGV4IiwibmFtZSIsInRpdGxlIiwiaWNvbkRlc2NyaXB0aW9uIiwiZGlzYWJsZWQiLCJzZWxlY3RlZCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJpbnB1dCIsImlucHV0Q2xhc3NlcyIsIkZyYWdtZW50IiwicmVmIiwidHlwZSIsImh0bWxGb3IiLCJkZWZhdWx0UHJvcHMiLCJwcm9wVHlwZXMiLCJudW1iZXIiLCJvbmVPZlR5cGUiLCJpc1JlcXVpcmVkIiwiRXhwYW5kYWJsZVRpbGUiLCJfQ29tcG9uZW50MyIsIl9zdXBlcjMiLCJfdGhpczIiLCJfbGVuMiIsIl9rZXkyIiwicmVzaXplT2JzZXJ2ZXIiLCJSZXNpemVPYnNlcnZlciIsImVudHJpZXMiLCJfZW50cmllcyIsImFib3ZlVGhlRm9sZCIsInRpbGVNYXhIZWlnaHQiLCJjb250ZW50UmVjdCIsImhlaWdodCIsInRpbGUiLCJnZXRTdHlsZSIsIndpbmRvdyIsImdldENvbXB1dGVkU3R5bGUiLCJvYnNlcnZlIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwidGlsZVBhZGRpbmciLCJwYXJzZUludCIsImdldFByb3BlcnR5VmFsdWUiLCJwcmV2UHJvcHMiLCJleHBhbmRlZCIsInNldE1heEhlaWdodCIsInRpbGVDb250ZW50Iiwib25CZWZvcmVDbGljayIsInRhZ05hbWUiLCJfdGhpczIkcHJvcHMkaGFuZGxlQ2wiLCJfdGhpczIkcHJvcHMiLCJfdGhpczIkcHJvcHMkb25DbGljayIsIl90aGlzMiRwcm9wczIiLCJDaGlsZHJlbiIsInRvQXJyYXkiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsImRpc2Nvbm5lY3QiLCJfY3g1IiwiX3RoaXMzIiwiX3RoaXMkcHJvcHM3Iiwib25LZXlVcCIsInRpbGVDb2xsYXBzZWRJY29uVGV4dCIsInRpbGVFeHBhbmRlZEljb25UZXh0IiwidGlsZUNvbGxhcHNlZExhYmVsIiwidGlsZUV4cGFuZGVkTGFiZWwiLCJpc0V4cGFuZGVkIiwidGlsZVN0eWxlIiwibWF4SGVpZ2h0IiwiY2hpbGRyZW5Bc0FycmF5IiwiZ2V0Q2hpbGRyZW4iLCJzdHlsZSIsImhhbmRsZUtleVVwIiwiX3JlZjIiLCJwcmV2RXhwYW5kZWQiLCJwcmV2VGlsZU1heEhlaWdodCIsInByZXZUaWxlUGFkZGluZyIsImN1cnJlbnRFeHBhbmRlZCIsImN1cnJlbnRUaWxlTWF4SGVpZ2h0IiwiY3VycmVudFRpbGVQYWRkaW5nIiwiZXhwYW5kZWRDaGFuZ2VkIiwidGlsZU1heEhlaWdodENoYW5nZWQiLCJ0aWxlUGFkZGluZ0NoYW5nZWQiLCJUaWxlQWJvdmVUaGVGb2xkQ29udGVudCIsIl9Db21wb25lbnQ0IiwiX3N1cGVyNCIsIlRpbGVCZWxvd1RoZUZvbGRDb250ZW50IiwiX0NvbXBvbmVudDUiLCJfc3VwZXI1Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/@carbon/react/es/components/Tile/Tile.js\n");
|
|
2605
2605
|
|
|
2606
2606
|
/***/ }),
|
|
2607
2607
|
|
|
@@ -6895,7 +6895,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
6895
6895
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
6896
6896
|
|
|
6897
6897
|
"use strict";
|
|
6898
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"setupPaths\": () => (/* binding */ setupPaths),\n/* harmony export */ \"setupUtils\": () => (/* binding */ setupUtils)\n/* harmony export */ });\nfunction setupPaths(config) {\n window.openmrsBase = config.apiUrl;\n window.spaBase = config.spaPath;\n window.spaEnv = config.env || \"production\";\n window.spaVersion = \"4.4.2-pre.
|
|
6898
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"setupPaths\": () => (/* binding */ setupPaths),\n/* harmony export */ \"setupUtils\": () => (/* binding */ setupUtils)\n/* harmony export */ });\nfunction setupPaths(config) {\n window.openmrsBase = config.apiUrl;\n window.spaBase = config.spaPath;\n window.spaEnv = config.env || \"production\";\n window.spaVersion = \"4.4.2-pre.759-20230605\";\n window.getOpenmrsSpaBase = function() {\n return \"\".concat(window.spaBase, \"/\");\n };\n}\nfunction setupUtils() {\n window.copyText = function(source) {\n var sel = window.getSelection();\n if (sel) {\n var r = document.createRange();\n r.selectNode(source);\n sel.removeAllRanges();\n sel.addRange(r);\n document.execCommand(\"copy\");\n sel.removeAllRanges();\n }\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1nbG9iYWxzL3NyYy9nbG9iYWxzLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBRU8sU0FBU0EsV0FBV0MsTUFBaUIsRUFBRTtJQUM1Q0MsT0FBT0MsV0FBVyxHQUFHRixPQUFPRyxNQUFNO0lBQ2xDRixPQUFPRyxPQUFPLEdBQUdKLE9BQU9LLE9BQU87SUFDL0JKLE9BQU9LLE1BQU0sR0FBR04sT0FBT08sR0FBRyxJQUFJO0lBQzlCTixPQUFPTyxVQUFVLEdBQUdDLHdCQUF5QjtJQUM3Q1IsT0FBT1UsaUJBQWlCLEdBQUc7ZUFBTSxHQUFrQixPQUFmVixPQUFPRyxPQUFPLEVBQUM7O0FBQ3JELENBQUM7QUFFTSxTQUFTUSxhQUFhO0lBQzNCWCxPQUFPWSxRQUFRLEdBQUcsU0FBQ0MsUUFBd0I7UUFDekMsSUFBTUMsTUFBTWQsT0FBT2UsWUFBWTtRQUUvQixJQUFJRCxLQUFLO1lBQ1AsSUFBTUUsSUFBSUMsU0FBU0MsV0FBVztZQUM5QkYsRUFBRUcsVUFBVSxDQUFDTjtZQUNiQyxJQUFJTSxlQUFlO1lBQ25CTixJQUFJTyxRQUFRLENBQUNMO1lBQ2JDLFNBQVNLLFdBQVcsQ0FBQztZQUNyQlIsSUFBSU0sZUFBZTtRQUNyQixDQUFDO0lBQ0g7QUFDRixDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLWdsb2JhbHMvc3JjL2dsb2JhbHMudHM/NDFiMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNwYUNvbmZpZyB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXR1cFBhdGhzKGNvbmZpZzogU3BhQ29uZmlnKSB7XG4gIHdpbmRvdy5vcGVubXJzQmFzZSA9IGNvbmZpZy5hcGlVcmw7XG4gIHdpbmRvdy5zcGFCYXNlID0gY29uZmlnLnNwYVBhdGg7XG4gIHdpbmRvdy5zcGFFbnYgPSBjb25maWcuZW52IHx8IFwicHJvZHVjdGlvblwiO1xuICB3aW5kb3cuc3BhVmVyc2lvbiA9IHByb2Nlc3MuZW52LkJVSUxEX1ZFUlNJT047XG4gIHdpbmRvdy5nZXRPcGVubXJzU3BhQmFzZSA9ICgpID0+IGAke3dpbmRvdy5zcGFCYXNlfS9gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0dXBVdGlscygpIHtcbiAgd2luZG93LmNvcHlUZXh0ID0gKHNvdXJjZTogSFRNTEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgICBpZiAoc2VsKSB7XG4gICAgICBjb25zdCByID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcbiAgICAgIHIuc2VsZWN0Tm9kZShzb3VyY2UpO1xuICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgICAgc2VsLmFkZFJhbmdlKHIpO1xuICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoXCJjb3B5XCIpO1xuICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgIH1cbiAgfTtcbn1cbiJdLCJuYW1lcyI6WyJzZXR1cFBhdGhzIiwiY29uZmlnIiwid2luZG93Iiwib3Blbm1yc0Jhc2UiLCJhcGlVcmwiLCJzcGFCYXNlIiwic3BhUGF0aCIsInNwYUVudiIsImVudiIsInNwYVZlcnNpb24iLCJwcm9jZXNzIiwiQlVJTERfVkVSU0lPTiIsImdldE9wZW5tcnNTcGFCYXNlIiwic2V0dXBVdGlscyIsImNvcHlUZXh0Iiwic291cmNlIiwic2VsIiwiZ2V0U2VsZWN0aW9uIiwiciIsImRvY3VtZW50IiwiY3JlYXRlUmFuZ2UiLCJzZWxlY3ROb2RlIiwicmVtb3ZlQWxsUmFuZ2VzIiwiYWRkUmFuZ2UiLCJleGVjQ29tbWFuZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-globals/src/globals.ts\n");
|
|
6899
6899
|
|
|
6900
6900
|
/***/ }),
|
|
6901
6901
|
|
|
@@ -11941,8 +11941,8 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
11941
11941
|
/******/ var promises = [];
|
|
11942
11942
|
/******/ switch(name) {
|
|
11943
11943
|
/******/ case "default": {
|
|
11944
|
-
/******/ register("@openmrs/esm-framework/src/internal", "4.4.2-pre.
|
|
11945
|
-
/******/ register("@openmrs/esm-framework", "4.4.2-pre.
|
|
11944
|
+
/******/ register("@openmrs/esm-framework/src/internal", "4.4.2-pre.759", () => (() => (__webpack_require__(/*! ../../framework/esm-framework/src/internal.ts */ "../../framework/esm-framework/src/internal.ts"))), 1);
|
|
11945
|
+
/******/ register("@openmrs/esm-framework", "4.4.2-pre.759", () => (() => (__webpack_require__(/*! ../../framework/esm-framework/src/index.ts */ "../../framework/esm-framework/src/index.ts"))), 1);
|
|
11946
11946
|
/******/ register("dayjs", "1.11.5", () => (() => (__webpack_require__(/*! ../../../node_modules/dayjs/dayjs.min.js */ "../../../node_modules/dayjs/dayjs.min.js"))), 1);
|
|
11947
11947
|
/******/ register("i18next", "19.9.2", () => (() => (__webpack_require__(/*! ../../../node_modules/i18next/dist/esm/i18next.js */ "../../../node_modules/i18next/dist/esm/i18next.js"))), 1);
|
|
11948
11948
|
/******/ register("react-dom", "18.2.0", () => (() => (__webpack_require__(/*! ../../../node_modules/react-dom/index.js */ "../../../node_modules/react-dom/index.js"))), 1);
|
|
@@ -12104,7 +12104,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
12104
12104
|
/******/ "webpack/sharing/consume/default/i18next/i18next": () => (loadSingletonVersionCheckFallback("default", "i18next", [1,19,6,0], () => (() => (__webpack_require__(/*! i18next */ "../../../node_modules/i18next/dist/esm/i18next.js"))))),
|
|
12105
12105
|
/******/ "webpack/sharing/consume/default/react-i18next/react-i18next": () => (loadSingletonVersionCheckFallback("default", "react-i18next", [1,11,7,0], () => (() => (__webpack_require__(/*! react-i18next */ "../../../node_modules/react-i18next/dist/es/index.js"))))),
|
|
12106
12106
|
/******/ "webpack/sharing/consume/default/dayjs/dayjs": () => (loadSingletonVersionCheckFallback("default", "dayjs", [1,1,10,4], () => (() => (__webpack_require__(/*! dayjs */ "../../../node_modules/dayjs/dayjs.min.js"))))),
|
|
12107
|
-
/******/ "webpack/sharing/consume/default/@openmrs/esm-framework/@openmrs/esm-framework": () => (loadSingletonVersionCheckFallback("default", "@openmrs/esm-framework", [7,4,4,2,,"pre",
|
|
12107
|
+
/******/ "webpack/sharing/consume/default/@openmrs/esm-framework/@openmrs/esm-framework": () => (loadSingletonVersionCheckFallback("default", "@openmrs/esm-framework", [7,4,4,2,,"pre",759], () => (() => (__webpack_require__(/*! @openmrs/esm-framework */ "../../framework/esm-framework/src/index.ts")))))
|
|
12108
12108
|
/******/ };
|
|
12109
12109
|
/******/ var initialConsumes = ["webpack/sharing/consume/default/@openmrs/esm-framework/src/internal/@openmrs/esm-framework/src/internal","webpack/sharing/consume/default/rxjs/rxjs","webpack/sharing/consume/default/react/react","webpack/sharing/consume/default/react-dom/react-dom","webpack/sharing/consume/default/i18next/i18next","webpack/sharing/consume/default/react-i18next/react-i18next","webpack/sharing/consume/default/dayjs/dayjs","webpack/sharing/consume/default/@openmrs/esm-framework/@openmrs/esm-framework"];
|
|
12110
12110
|
/******/ initialConsumes.forEach((id) => {
|