@openmrs/esm-app-shell 4.5.1-pre.797 → 4.5.1-pre.798
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 +105 -103
- package/dist/{48843dbd72698f2d.js → 50ed71e85430c1fd.js} +1 -1
- package/dist/{48843dbd72698f2d.js.map → 50ed71e85430c1fd.js.map} +1 -1
- package/dist/index.html +1 -1
- package/dist/{openmrs.a9975f4c18cb49fa.js → openmrs.ef7a82f971e147f4.js} +2 -2
- package/dist/{openmrs.a9975f4c18cb49fa.js.map → openmrs.ef7a82f971e147f4.js.map} +1 -1
- package/dist/service-worker.js +1 -1
- package/lib/esm-implementer-tools-app/807.js +1 -1
- package/lib/esm-implementer-tools-app/main.js +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 +3 -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/main.js +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 +3 -3
- 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/main.js +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 +3 -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/main.js +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 +3 -3
- package/lib/esm-primary-navigation-app/openmrs-esm-primary-navigation-app.old +1 -1
- package/lib/index.html +1 -1
- package/lib/openmrs.js +5 -5
- package/lib/service-worker.js +1 -1
- package/package.json +4 -4
- package/lib/esm-devtools-app/68.js +0 -1
- package/lib/esm-devtools-app/68.js.map +0 -1
- package/lib/esm-devtools-app/735.js +0 -2
- package/lib/esm-devtools-app/735.js.LICENSE.txt +0 -9
- package/lib/esm-devtools-app/735.js.map +0 -1
- package/lib/esm-devtools-app/889.js +0 -2
- package/lib/esm-devtools-app/889.js.LICENSE.txt +0 -3
- package/lib/esm-devtools-app/889.js.map +0 -1
- package/lib/esm-devtools-app/988.js +0 -1
- package/lib/esm-devtools-app/988.js.map +0 -1
- package/lib/esm-devtools-app/main.js +0 -1
- package/lib/esm-devtools-app/main.js.map +0 -1
- package/lib/esm-devtools-app/openmrs-esm-devtools-app.js +0 -1
- package/lib/esm-devtools-app/openmrs-esm-devtools-app.js.buildmanifest.json +0 -176
- package/lib/esm-devtools-app/openmrs-esm-devtools-app.js.map +0 -1
- package/lib/esm-devtools-app/openmrs-esm-devtools-app.old +0 -1
- /package/dist/{openmrs.a9975f4c18cb49fa.js.LICENSE.txt → openmrs.ef7a82f971e147f4.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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NkwseUJBQXlCLGVBQWV6SyxpRUFBYUE7QUFFNEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AY2FyYm9uL3JlYWN0L2VzL2NvbXBvbmVudHMvVGlsZS9UaWxlLmpzPzBjYTYiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMTYsIDIwMjJcbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUtMi4wIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuaW1wb3J0IHsgaW5oZXJpdHMgYXMgX2luaGVyaXRzLCBjcmVhdGVTdXBlciBhcyBfY3JlYXRlU3VwZXIsIGNsYXNzQ2FsbENoZWNrIGFzIF9jbGFzc0NhbGxDaGVjaywgY3JlYXRlQ2xhc3MgYXMgX2NyZWF0ZUNsYXNzLCBvYmplY3RXaXRob3V0UHJvcGVydGllcyBhcyBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMsIGRlZmluZVByb3BlcnR5IGFzIF9kZWZpbmVQcm9wZXJ0eSwgZXh0ZW5kcyBhcyBfZXh0ZW5kcywgYXNzZXJ0VGhpc0luaXRpYWxpemVkIGFzIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQsIHNsaWNlZFRvQXJyYXkgYXMgX3NsaWNlZFRvQXJyYXkgfSBmcm9tICcuLi8uLi9fdmlydHVhbC9fcm9sbHVwUGx1Z2luQmFiZWxIZWxwZXJzLmpzJztcbmltcG9ydCBSZWFjdF9fZGVmYXVsdCwgeyBDb21wb25lbnQsIHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY3ggZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgTGluayBmcm9tICcuLi9MaW5rL0xpbmsuanMnO1xuaW1wb3J0IHsgQ2hlY2tib3hDaGVja2VkRmlsbGVkLCBDaGVja2JveCwgQ2hldnJvbkRvd24gfSBmcm9tICdAY2FyYm9uL2ljb25zLXJlYWN0JztcbmltcG9ydCBkZXByZWNhdGUgZnJvbSAnLi4vLi4vcHJvcC10eXBlcy9kZXByZWNhdGUuanMnO1xuaW1wb3J0IHsgY29tcG9zZUV2ZW50SGFuZGxlcnMgfSBmcm9tICcuLi8uLi90b29scy9ldmVudHMuanMnO1xuaW1wb3J0IHsgUHJlZml4Q29udGV4dCwgdXNlUHJlZml4IH0gZnJvbSAnLi4vLi4vaW50ZXJuYWwvdXNlUHJlZml4LmpzJztcbmltcG9ydCB7IG1hdGNoZXMgfSBmcm9tICcuLi8uLi9pbnRlcm5hbC9rZXlib2FyZC9tYXRjaC5qcyc7XG5pbXBvcnQgeyBFbnRlciwgU3BhY2UgfSBmcm9tICcuLi8uLi9pbnRlcm5hbC9rZXlib2FyZC9rZXlzLmpzJztcblxudmFyIF9DaGVja2JveENoZWNrZWRGaWxsZSwgX0NoZWNrYm94LCBfQ2hldnJvbkRvd247XG5cbnZhciBfZXhjbHVkZWQgPSBbXCJjaGlsZHJlblwiLCBcImNsYXNzTmFtZVwiLCBcImxpZ2h0XCJdLFxuICAgIF9leGNsdWRlZDIgPSBbXCJjaGlsZHJlblwiLCBcImhyZWZcIiwgXCJjbGFzc05hbWVcIiwgXCJoYW5kbGVDbGlja1wiLCBcImhhbmRsZUtleURvd25cIiwgXCJvbkNsaWNrXCIsIFwib25LZXlEb3duXCIsIFwiY2xpY2tlZFwiLCBcImxpZ2h0XCJdLFxuICAgIF9leGNsdWRlZDMgPSBbXCJjaGlsZHJlblwiLCBcImlkXCIsIFwidGFiSW5kZXhcIiwgXCJ2YWx1ZVwiLCBcIm5hbWVcIiwgXCJ0aXRsZVwiLCBcImljb25EZXNjcmlwdGlvblwiLCBcImNsYXNzTmFtZVwiLCBcImhhbmRsZUNsaWNrXCIsIFwiaGFuZGxlS2V5RG93blwiLCBcIm9uQ2xpY2tcIiwgXCJvbkNoYW5nZVwiLCBcIm9uS2V5RG93blwiLCBcImxpZ2h0XCIsIFwiZGlzYWJsZWRcIiwgXCJzZWxlY3RlZFwiXSxcbiAgICBfZXhjbHVkZWQ0ID0gW1widGFiSW5kZXhcIiwgXCJjbGFzc05hbWVcIiwgXCJleHBhbmRlZFwiLCBcInRpbGVNYXhIZWlnaHRcIiwgXCJ0aWxlUGFkZGluZ1wiLCBcImhhbmRsZUNsaWNrXCIsIFwib25LZXlVcFwiLCBcInRpbGVDb2xsYXBzZWRJY29uVGV4dFwiLCBcInRpbGVFeHBhbmRlZEljb25UZXh0XCIsIFwidGlsZUNvbGxhcHNlZExhYmVsXCIsIFwidGlsZUV4cGFuZGVkTGFiZWxcIiwgXCJvbkJlZm9yZUNsaWNrXCIsIFwibGlnaHRcIl07XG52YXIgVGlsZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoVGlsZSwgX0NvbXBvbmVudCk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihUaWxlKTtcblxuICBmdW5jdGlvbiBUaWxlKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBUaWxlKTtcblxuICAgIHJldHVybiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhUaWxlLCBbe1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIHByZWZpeCA9IHRoaXMuY29udGV4dDtcblxuICAgICAgdmFyIF90aGlzJHByb3BzID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICBjaGlsZHJlbiA9IF90aGlzJHByb3BzLmNoaWxkcmVuLFxuICAgICAgICAgIGNsYXNzTmFtZSA9IF90aGlzJHByb3BzLmNsYXNzTmFtZSxcbiAgICAgICAgICBsaWdodCA9IF90aGlzJHByb3BzLmxpZ2h0LFxuICAgICAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3RoaXMkcHJvcHMsIF9leGNsdWRlZCk7XG5cbiAgICAgIHZhciB0aWxlQ2xhc3NlcyA9IGN4KFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGVcIiksIF9kZWZpbmVQcm9wZXJ0eSh7fSwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0tbGlnaHRcIiksIGxpZ2h0KSwgY2xhc3NOYW1lKTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfZXh0ZW5kcyh7XG4gICAgICAgIGNsYXNzTmFtZTogdGlsZUNsYXNzZXNcbiAgICAgIH0sIHJlc3QpLCBjaGlsZHJlbik7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFRpbGU7XG59KENvbXBvbmVudCk7XG5cbl9kZWZpbmVQcm9wZXJ0eShUaWxlLCBcInByb3BUeXBlc1wiLCB7XG4gIC8qKlxuICAgKiBUaGUgY2hpbGQgbm9kZXMuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG5cbiAgLyoqXG4gICAqIFRoZSBDU1MgY2xhc3MgbmFtZXMuXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIGB0cnVlYCB0byB1c2UgdGhlIGxpZ2h0IHZlcnNpb24uIEZvciB1c2Ugb24gJHVpLTAxIGJhY2tncm91bmRzIG9ubHkuXG4gICAqIERvbid0IHVzZSB0aGlzIHRvIG1ha2UgdGlsZSBiYWNrZ3JvdW5kIGNvbG9yIHNhbWUgYXMgY29udGFpbmVyIGJhY2tncm91bmQgY29sb3IuXG4gICAqL1xuICBsaWdodDogUHJvcFR5cGVzLmJvb2xcbn0pO1xuXG5fZGVmaW5lUHJvcGVydHkoVGlsZSwgXCJjb250ZXh0VHlwZVwiLCBQcmVmaXhDb250ZXh0KTtcblxuX2RlZmluZVByb3BlcnR5KFRpbGUsIFwiZGVmYXVsdFByb3BzXCIsIHtcbiAgbGlnaHQ6IGZhbHNlXG59KTtcblxudmFyIENsaWNrYWJsZVRpbGUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db21wb25lbnQyKSB7XG4gIF9pbmhlcml0cyhDbGlja2FibGVUaWxlLCBfQ29tcG9uZW50Mik7XG5cbiAgdmFyIF9zdXBlcjIgPSBfY3JlYXRlU3VwZXIoQ2xpY2thYmxlVGlsZSk7XG5cbiAgZnVuY3Rpb24gQ2xpY2thYmxlVGlsZSgpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ2xpY2thYmxlVGlsZSk7XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgX3RoaXMgPSBfc3VwZXIyLmNhbGwuYXBwbHkoX3N1cGVyMiwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwic3RhdGVcIiwge30pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImhhbmRsZUNsaWNrXCIsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIGV2dC5wZXJzaXN0KCk7XG5cbiAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgY2xpY2tlZDogIV90aGlzLnN0YXRlLmNsaWNrZWRcbiAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzJHByb3BzJGhhbmRsZUNsaSwgX3RoaXMkcHJvcHMyLCBfdGhpcyRwcm9wcyRvbkNsaWNrLCBfdGhpcyRwcm9wczM7XG5cbiAgICAgICAgLy8gVE9ETzogUmVtb3ZlIGhhbmRsZUNsaWNrIHByb3Agd2hlbiBoYW5kbGVDbGljayBpcyBkZXByZWNhdGVkXG4gICAgICAgICgoX3RoaXMkcHJvcHMkaGFuZGxlQ2xpID0gKF90aGlzJHByb3BzMiA9IF90aGlzLnByb3BzKS5oYW5kbGVDbGljaykgPT09IG51bGwgfHwgX3RoaXMkcHJvcHMkaGFuZGxlQ2xpID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRwcm9wcyRoYW5kbGVDbGkuY2FsbChfdGhpcyRwcm9wczIsIGV2dCkpIHx8ICgoX3RoaXMkcHJvcHMkb25DbGljayA9IChfdGhpcyRwcm9wczMgPSBfdGhpcy5wcm9wcykub25DbGljaykgPT09IG51bGwgfHwgX3RoaXMkcHJvcHMkb25DbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkcHJvcHMkb25DbGljay5jYWxsKF90aGlzJHByb3BzMywgZXZ0KSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJoYW5kbGVLZXlEb3duXCIsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIGV2dC5wZXJzaXN0KCk7XG5cbiAgICAgIGlmIChtYXRjaGVzKGV2dCwgW0VudGVyLCBTcGFjZV0pKSB7XG4gICAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBjbGlja2VkOiAhX3RoaXMuc3RhdGUuY2xpY2tlZFxuICAgICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgdmFyIF90aGlzJHByb3BzJGhhbmRsZUtleSwgX3RoaXMkcHJvcHM0O1xuXG4gICAgICAgICAgLy8gVE9ETzogUmVtb3ZlIGhhbmRsZUtleURvd24gcHJvcCB3aGVuIGhhbmRsZUtleURvd24gaXMgZGVwcmVjYXRlZFxuICAgICAgICAgICgoX3RoaXMkcHJvcHMkaGFuZGxlS2V5ID0gKF90aGlzJHByb3BzNCA9IF90aGlzLnByb3BzKS5oYW5kbGVLZXlEb3duKSA9PT0gbnVsbCB8fCBfdGhpcyRwcm9wcyRoYW5kbGVLZXkgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJHByb3BzJGhhbmRsZUtleS5jYWxsKF90aGlzJHByb3BzNCwgZXZ0KSkgfHwgX3RoaXMucHJvcHMub25LZXlEb3duKGV2dCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIF90aGlzJHByb3BzJGhhbmRsZUtleTIsIF90aGlzJHByb3BzNTtcblxuICAgICAgICAvLyBUT0RPOiBSZW1vdmUgaGFuZGxlS2V5RG93biBwcm9wIHdoZW4gaGFuZGxlS2V5RG93biBpcyBkZXByZWNhdGVkXG4gICAgICAgICgoX3RoaXMkcHJvcHMkaGFuZGxlS2V5MiA9IChfdGhpcyRwcm9wczUgPSBfdGhpcy5wcm9wcykuaGFuZGxlS2V5RG93bikgPT09IG51bGwgfHwgX3RoaXMkcHJvcHMkaGFuZGxlS2V5MiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkcHJvcHMkaGFuZGxlS2V5Mi5jYWxsKF90aGlzJHByb3BzNSwgZXZ0KSkgfHwgX3RoaXMucHJvcHMub25LZXlEb3duKGV2dCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoQ2xpY2thYmxlVGlsZSwgW3tcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfY3gyO1xuXG4gICAgICB2YXIgcHJlZml4ID0gdGhpcy5jb250ZXh0O1xuXG4gICAgICB2YXIgX3RoaXMkcHJvcHM2ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICBjaGlsZHJlbiA9IF90aGlzJHByb3BzNi5jaGlsZHJlbixcbiAgICAgICAgICBocmVmID0gX3RoaXMkcHJvcHM2LmhyZWYsXG4gICAgICAgICAgY2xhc3NOYW1lID0gX3RoaXMkcHJvcHM2LmNsYXNzTmFtZTtcbiAgICAgICAgICBfdGhpcyRwcm9wczYuaGFuZGxlQ2xpY2s7XG4gICAgICAgICAgX3RoaXMkcHJvcHM2LmhhbmRsZUtleURvd247XG4gICAgICAgICAgX3RoaXMkcHJvcHM2Lm9uQ2xpY2s7XG4gICAgICAgICAgX3RoaXMkcHJvcHM2Lm9uS2V5RG93bjtcbiAgICAgICAgICBfdGhpcyRwcm9wczYuY2xpY2tlZDtcbiAgICAgICAgICB2YXIgbGlnaHQgPSBfdGhpcyRwcm9wczYubGlnaHQsXG4gICAgICAgICAgcmVzdCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfdGhpcyRwcm9wczYsIF9leGNsdWRlZDIpO1xuXG4gICAgICB2YXIgY2xhc3NlcyA9IGN4KFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGVcIiksIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWNsaWNrYWJsZVwiKSwgKF9jeDIgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9jeDIsIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWlzLWNsaWNrZWRcIiksIHRoaXMuc3RhdGUuY2xpY2tlZCksIF9kZWZpbmVQcm9wZXJ0eShfY3gyLCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1saWdodFwiKSwgbGlnaHQpLCBfY3gyKSwgY2xhc3NOYW1lKTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChMaW5rLCBfZXh0ZW5kcyh7XG4gICAgICAgIGhyZWY6IGhyZWYsXG4gICAgICAgIGNsYXNzTmFtZTogY2xhc3Nlc1xuICAgICAgfSwgcmVzdCwge1xuICAgICAgICBvbkNsaWNrOiB0aGlzLmhhbmRsZUNsaWNrLFxuICAgICAgICBvbktleURvd246IHRoaXMuaGFuZGxlS2V5RG93blxuICAgICAgfSksIGNoaWxkcmVuKTtcbiAgICB9XG4gIH1dLCBbe1xuICAgIGtleTogXCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHNcIixcbiAgICB2YWx1ZTogLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L3Byb3AtdHlwZXNcbiAgICBmdW5jdGlvbiBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMoX3JlZiwgc3RhdGUpIHtcbiAgICAgIHZhciBjbGlja2VkID0gX3JlZi5jbGlja2VkO1xuICAgICAgdmFyIHByZXZDbGlja2VkID0gc3RhdGUucHJldkNsaWNrZWQ7XG4gICAgICByZXR1cm4gcHJldkNsaWNrZWQgPT09IGNsaWNrZWQgPyBudWxsIDoge1xuICAgICAgICBjbGlja2VkOiBjbGlja2VkLFxuICAgICAgICBwcmV2Q2xpY2tlZDogY2xpY2tlZFxuICAgICAgfTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gQ2xpY2thYmxlVGlsZTtcbn0oQ29tcG9uZW50KTtcblxuX2RlZmluZVByb3BlcnR5KENsaWNrYWJsZVRpbGUsIFwicHJvcFR5cGVzXCIsIHtcbiAgLyoqXG4gICAqIFRoZSBjaGlsZCBub2Rlcy5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcblxuICAvKipcbiAgICogVGhlIENTUyBjbGFzcyBuYW1lcy5cbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogRGVwcmVjYXRlZCBpbiB2MTEuIFVzZSAnb25DbGljaycgaW5zdGVhZC5cbiAgICovXG4gIGhhbmRsZUNsaWNrOiBkZXByZWNhdGUoUHJvcFR5cGVzLmZ1bmMsICdUaGUgaGFuZGxlQ2xpY2sgcHJvcCBmb3IgQ2xpY2thYmxlVGlsZSBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIG9uQ2xpY2suIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLicpLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBmdW5jdGlvbiB0byBydW4gd2hlbiB0aGUgQ2xpY2thYmxlVGlsZSBpcyBpbnRlcmFjdGVkIHdpdGggdmlhIGEga2V5Ym9hcmRcbiAgICovXG4gIGhhbmRsZUtleURvd246IGRlcHJlY2F0ZShQcm9wVHlwZXMuZnVuYywgJ1RoZSBoYW5kbGVLZXlEb3duIHByb3AgZm9yIENsaWNrYWJsZVRpbGUgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBvbktleURvd24uIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLicpLFxuXG4gIC8qKlxuICAgKiBUaGUgaHJlZiBmb3IgdGhlIGxpbmsuXG4gICAqL1xuICBocmVmOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBgdHJ1ZWAgdG8gdXNlIHRoZSBsaWdodCB2ZXJzaW9uLiBGb3IgdXNlIG9uICR1aS0wMSBiYWNrZ3JvdW5kcyBvbmx5LlxuICAgKiBEb24ndCB1c2UgdGhpcyB0byBtYWtlIHRpbGUgYmFja2dyb3VuZCBjb2xvciBzYW1lIGFzIGNvbnRhaW5lciBiYWNrZ3JvdW5kIGNvbG9yLlxuICAgKi9cbiAgbGlnaHQ6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBmdW5jdGlvbiB0byBydW4gd2hlbiB0aGUgQ2xpY2thYmxlVGlsZSBpcyBjbGlja2VkXG4gICAqL1xuICBvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgZnVuY3Rpb24gdG8gcnVuIHdoZW4gdGhlIENsaWNrYWJsZVRpbGUgaXMgaW50ZXJhY3RlZCB3aXRoIHZpYSBhIGtleWJvYXJkXG4gICAqL1xuICBvbktleURvd246IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBUaGUgcmVsIHByb3BlcnR5IGZvciB0aGUgbGluay5cbiAgICovXG4gIHJlbDogUHJvcFR5cGVzLnN0cmluZ1xufSk7XG5cbl9kZWZpbmVQcm9wZXJ0eShDbGlja2FibGVUaWxlLCBcImNvbnRleHRUeXBlXCIsIFByZWZpeENvbnRleHQpO1xuXG5fZGVmaW5lUHJvcGVydHkoQ2xpY2thYmxlVGlsZSwgXCJkZWZhdWx0UHJvcHNcIiwge1xuICBjbGlja2VkOiBmYWxzZSxcbiAgb25DbGljazogZnVuY3Rpb24gb25DbGljaygpIHt9LFxuICBvbktleURvd246IGZ1bmN0aW9uIG9uS2V5RG93bigpIHt9LFxuICBsaWdodDogZmFsc2Vcbn0pO1xuXG5mdW5jdGlvbiBTZWxlY3RhYmxlVGlsZShwcm9wcykge1xuICB2YXIgX2N4MztcblxuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICAgIGlkID0gcHJvcHMuaWQsXG4gICAgICB0YWJJbmRleCA9IHByb3BzLnRhYkluZGV4LFxuICAgICAgdmFsdWUgPSBwcm9wcy52YWx1ZSxcbiAgICAgIG5hbWUgPSBwcm9wcy5uYW1lLFxuICAgICAgdGl0bGUgPSBwcm9wcy50aXRsZTtcbiAgICAgIHByb3BzLmljb25EZXNjcmlwdGlvbjtcbiAgICAgIHZhciBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsXG4gICAgICBoYW5kbGVDbGljayA9IHByb3BzLmhhbmRsZUNsaWNrLFxuICAgICAgaGFuZGxlS2V5RG93biA9IHByb3BzLmhhbmRsZUtleURvd24sXG4gICAgICBvbkNsaWNrID0gcHJvcHMub25DbGljayxcbiAgICAgIG9uQ2hhbmdlID0gcHJvcHMub25DaGFuZ2UsXG4gICAgICBvbktleURvd24gPSBwcm9wcy5vbktleURvd24sXG4gICAgICBsaWdodCA9IHByb3BzLmxpZ2h0LFxuICAgICAgZGlzYWJsZWQgPSBwcm9wcy5kaXNhYmxlZCxcbiAgICAgIHNlbGVjdGVkID0gcHJvcHMuc2VsZWN0ZWQsXG4gICAgICByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHByb3BzLCBfZXhjbHVkZWQzKTtcblxuICB2YXIgcHJlZml4ID0gdXNlUHJlZml4KCk7IC8vIFRPRE86IHJlcGxhY2Ugd2l0aCBvbkNsaWNrIHdoZW4gaGFuZGxlQ2xpY2sgcHJvcCBpcyBkZXByZWNhdGVkXG5cbiAgdmFyIGNsaWNrSGFuZGxlciA9IGhhbmRsZUNsaWNrIHx8IG9uQ2xpY2s7IC8vIFRPRE86IHJlcGxhY2Ugd2l0aCBvbktleURvd24gd2hlbiBoYW5kbGVLZXlEb3duIHByb3AgaXMgZGVwcmVjYXRlZFxuXG4gIHZhciBrZXlEb3duSGFuZGxlciA9IGhhbmRsZUtleURvd24gfHwgb25LZXlEb3duO1xuXG4gIHZhciBfdXNlU3RhdGUgPSB1c2VTdGF0ZShzZWxlY3RlZCksXG4gICAgICBfdXNlU3RhdGUyID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlLCAyKSxcbiAgICAgIGlzU2VsZWN0ZWQgPSBfdXNlU3RhdGUyWzBdLFxuICAgICAgc2V0SXNTZWxlY3RlZCA9IF91c2VTdGF0ZTJbMV07XG5cbiAgdmFyIGlucHV0ID0gdXNlUmVmKG51bGwpO1xuICB2YXIgY2xhc3NlcyA9IGN4KFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGVcIiksIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLXNlbGVjdGFibGVcIiksIChfY3gzID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfY3gzLCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1pcy1zZWxlY3RlZFwiKSwgaXNTZWxlY3RlZCksIF9kZWZpbmVQcm9wZXJ0eShfY3gzLCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1saWdodFwiKSwgbGlnaHQpLCBfZGVmaW5lUHJvcGVydHkoX2N4MywgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0tZGlzYWJsZWRcIiksIGRpc2FibGVkKSwgX2N4MyksIGNsYXNzTmFtZSk7XG4gIHZhciBpbnB1dENsYXNzZXMgPSBjeChcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLWlucHV0XCIpLCBfZGVmaW5lUHJvcGVydHkoe30sIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtaW5wdXQtLWNoZWNrZWRcIiksIGlzU2VsZWN0ZWQpKTsgLy8gVE9ETzogcmVuYW1lIHRvIGhhbmRsZUNsaWNrIHdoZW4gaGFuZGxlQ2xpY2sgcHJvcCBpcyBkZXByZWNhdGVkXG5cbiAgZnVuY3Rpb24gaGFuZGxlT25DbGljayhldnQpIHtcbiAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldnQucGVyc2lzdCgpO1xuICAgIHNldElzU2VsZWN0ZWQoIWlzU2VsZWN0ZWQpO1xuICAgIGNsaWNrSGFuZGxlcihldnQpO1xuICAgIG9uQ2hhbmdlKGV2dCk7XG4gIH0gLy8gVE9ETzogcmVuYW1lIHRvIGhhbmRsZUtleURvd24gd2hlbiBoYW5kbGVLZXlEb3duIHByb3AgaXMgZGVwcmVjYXRlZFxuXG5cbiAgZnVuY3Rpb24gaGFuZGxlT25LZXlEb3duKGV2dCkge1xuICAgIGV2dC5wZXJzaXN0KCk7XG5cbiAgICBpZiAobWF0Y2hlcyhldnQsIFtFbnRlciwgU3BhY2VdKSkge1xuICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBzZXRJc1NlbGVjdGVkKCFpc1NlbGVjdGVkKTtcbiAgICAgIG9uQ2hhbmdlKGV2dCk7XG4gICAgfVxuXG4gICAga2V5RG93bkhhbmRsZXIoZXZ0KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZUNoYW5nZShldmVudCkge1xuICAgIHNldElzU2VsZWN0ZWQoZXZlbnQudGFyZ2V0LmNoZWNrZWQpO1xuICAgIG9uQ2hhbmdlKGV2ZW50KTtcbiAgfVxuXG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgc2V0SXNTZWxlY3RlZChzZWxlY3RlZCk7XG4gIH0sIFtzZWxlY3RlZF0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoUmVhY3RfX2RlZmF1bHQuRnJhZ21lbnQsIG51bGwsIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwge1xuICAgIHJlZjogaW5wdXQsXG4gICAgdGFiSW5kZXg6IC0xLFxuICAgIGlkOiBpZCxcbiAgICBjbGFzc05hbWU6IGlucHV0Q2xhc3NlcyxcbiAgICB2YWx1ZTogdmFsdWUsXG4gICAgb25DaGFuZ2U6ICFkaXNhYmxlZCA/IGhhbmRsZUNoYW5nZSA6IG51bGwsXG4gICAgdHlwZTogXCJjaGVja2JveFwiLFxuICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcbiAgICBuYW1lOiBuYW1lLFxuICAgIHRpdGxlOiB0aXRsZSxcbiAgICBjaGVja2VkOiBpc1NlbGVjdGVkXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImxhYmVsXCIsIF9leHRlbmRzKHtcbiAgICBodG1sRm9yOiBpZCxcbiAgICBjbGFzc05hbWU6IGNsYXNzZXMgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzeC1hMTF5L25vLW5vbmludGVyYWN0aXZlLXRhYmluZGV4XG4gICAgLFxuICAgIHRhYkluZGV4OiAhZGlzYWJsZWQgPyB0YWJJbmRleCA6IG51bGxcbiAgfSwgcmVzdCwge1xuICAgIG9uQ2xpY2s6ICFkaXNhYmxlZCA/IGhhbmRsZU9uQ2xpY2sgOiBudWxsLFxuICAgIG9uS2V5RG93bjogIWRpc2FibGVkID8gaGFuZGxlT25LZXlEb3duIDogbnVsbFxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGVfX2NoZWNrbWFyayBcIikuY29uY2F0KHByZWZpeCwgXCItLXRpbGVfX2NoZWNrbWFyay0tcGVyc2lzdGVudFwiKVxuICB9LCBpc1NlbGVjdGVkID8gX0NoZWNrYm94Q2hlY2tlZEZpbGxlIHx8IChfQ2hlY2tib3hDaGVja2VkRmlsbGUgPSAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChDaGVja2JveENoZWNrZWRGaWxsZWQsIG51bGwpKSA6IF9DaGVja2JveCB8fCAoX0NoZWNrYm94ID0gLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoQ2hlY2tib3gsIG51bGwpKSksIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLWNvbnRlbnRcIilcbiAgfSwgY2hpbGRyZW4pKSk7XG59XG5TZWxlY3RhYmxlVGlsZS5kZWZhdWx0UHJvcHMgPSB7XG4gIHZhbHVlOiAndmFsdWUnLFxuICB0aXRsZTogJ3RpdGxlJyxcbiAgc2VsZWN0ZWQ6IGZhbHNlLFxuICB0YWJJbmRleDogMCxcbiAgbGlnaHQ6IGZhbHNlLFxuICBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKCkge30sXG4gIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSgpIHt9LFxuICBvbktleURvd246IGZ1bmN0aW9uIG9uS2V5RG93bigpIHt9XG59O1xuU2VsZWN0YWJsZVRpbGUucHJvcFR5cGVzID0ge1xuICAvKipcbiAgICogVGhlIGNoaWxkIG5vZGVzLlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuXG4gIC8qKlxuICAgKiBUaGUgQ1NTIGNsYXNzIG5hbWVzLlxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHdoZXRoZXIgdGhlIFNlbGVjdGFibGVUaWxlIHNob3VsZCBiZSBkaXNhYmxlZFxuICAgKi9cbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBmdW5jdGlvbiB0byBydW4gd2hlbiB0aGUgU2VsZWN0YWJsZVRpbGUgaXMgY2xpY2tlZFxuICAgKi9cbiAgaGFuZGxlQ2xpY2s6IGRlcHJlY2F0ZShQcm9wVHlwZXMuZnVuYywgJ1RoZSBgaGFuZGxlQ2xpY2tgIHByb3AgZm9yIGBTZWxlY3RhYmxlVGlsZWAgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBgb25DbGlja2AuIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLicpLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBmdW5jdGlvbiB0byBydW4gd2hlbiB0aGUgU2VsZWN0YWJsZVRpbGUgaXMgaW50ZXJhY3RlZCB3aXRoIHZpYSBhIGtleWJvYXJkXG4gICAqL1xuICBoYW5kbGVLZXlEb3duOiBkZXByZWNhdGUoUHJvcFR5cGVzLmZ1bmMsICdUaGUgYGhhbmRsZUtleURvd25gIHByb3AgZm9yIGBTZWxlY3RhYmxlVGlsZWAgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBgb25LZXlEb3duYC4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuJyksXG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgY2hlY2ttYXJrIGljb24uXG4gICAqL1xuICBpY29uRGVzY3JpcHRpb246IGRlcHJlY2F0ZShQcm9wVHlwZXMuc3RyaW5nLCAnVGhlIGBpY29uRGVzY3JpcHRpb25gIHByb3AgZm9yIGBTZWxlY3RhYmxlVGlsZWAgaXMgbm8gbG9uZ2VyIG5lZWRlZCBhbmQgaGFzICcgKyAnYmVlbiBkZXByZWNhdGVkLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZS4nKSxcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBgPGlucHV0PmAuXG4gICAqL1xuICBpZDogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogYHRydWVgIHRvIHVzZSB0aGUgbGlnaHQgdmVyc2lvbi4gRm9yIHVzZSBvbiAkdWktMDEgYmFja2dyb3VuZHMgb25seS5cbiAgICogRG9uJ3QgdXNlIHRoaXMgdG8gbWFrZSB0aWxlIGJhY2tncm91bmQgY29sb3Igc2FtZSBhcyBjb250YWluZXIgYmFja2dyb3VuZCBjb2xvci5cbiAgICovXG4gIGxpZ2h0OiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogVGhlIGBuYW1lYCBvZiB0aGUgYDxpbnB1dD5gLlxuICAgKi9cbiAgbmFtZTogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogVGhlIGVtcHR5IGhhbmRsZXIgb2YgdGhlIGA8aW5wdXQ+YC5cbiAgICovXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgZnVuY3Rpb24gdG8gcnVuIHdoZW4gdGhlIFNlbGVjdGFibGVUaWxlIGlzIGNsaWNrZWRcbiAgICovXG4gIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBmdW5jdGlvbiB0byBydW4gd2hlbiB0aGUgU2VsZWN0YWJsZVRpbGUgaXMgaW50ZXJhY3RlZCB3aXRoIHZpYSBhIGtleWJvYXJkXG4gICAqL1xuICBvbktleURvd246IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBgdHJ1ZWAgdG8gc2VsZWN0IHRoaXMgdGlsZS5cbiAgICovXG4gIHNlbGVjdGVkOiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgdGFiIGluZGV4IG9mIHRoZSB3cmFwcGVyIGVsZW1lbnRcbiAgICovXG4gIHRhYkluZGV4OiBQcm9wVHlwZXMubnVtYmVyLFxuXG4gIC8qKlxuICAgKiBUaGUgYHRpdGxlYCBvZiB0aGUgYDxpbnB1dD5gLlxuICAgKi9cbiAgdGl0bGU6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBvZiB0aGUgYDxpbnB1dD5gLlxuICAgKi9cbiAgdmFsdWU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5udW1iZXJdKS5pc1JlcXVpcmVkXG59O1xudmFyIEV4cGFuZGFibGVUaWxlID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50Mykge1xuICBfaW5oZXJpdHMoRXhwYW5kYWJsZVRpbGUsIF9Db21wb25lbnQzKTtcblxuICB2YXIgX3N1cGVyMyA9IF9jcmVhdGVTdXBlcihFeHBhbmRhYmxlVGlsZSk7XG5cbiAgZnVuY3Rpb24gRXhwYW5kYWJsZVRpbGUoKSB7XG4gICAgdmFyIF90aGlzMjtcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBFeHBhbmRhYmxlVGlsZSk7XG5cbiAgICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbjIpLCBfa2V5MiA9IDA7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICAgIGFyZ3NbX2tleTJdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgICB9XG5cbiAgICBfdGhpczIgPSBfc3VwZXIzLmNhbGwuYXBwbHkoX3N1cGVyMywgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpczIpLCBcInN0YXRlXCIsIHt9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwicmVzaXplT2JzZXJ2ZXJcIiwgbnVsbCk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpczIpLCBcImNvbXBvbmVudERpZE1vdW50XCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzMi5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihmdW5jdGlvbiAoZW50cmllcykge1xuICAgICAgICB2YXIgX2VudHJpZXMgPSBfc2xpY2VkVG9BcnJheShlbnRyaWVzLCAxKSxcbiAgICAgICAgICAgIGFib3ZlVGhlRm9sZCA9IF9lbnRyaWVzWzBdO1xuXG4gICAgICAgIF90aGlzMi5zZXRTdGF0ZSh7XG4gICAgICAgICAgdGlsZU1heEhlaWdodDogYWJvdmVUaGVGb2xkLmNvbnRlbnRSZWN0LmhlaWdodFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoX3RoaXMyLnRpbGUpIHtcbiAgICAgICAgdmFyIGdldFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoX3RoaXMyLnRpbGUsIG51bGwpO1xuXG4gICAgICAgIGlmIChfdGhpczIuYWJvdmVUaGVGb2xkKSB7XG4gICAgICAgICAgX3RoaXMyLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUoX3RoaXMyLmFib3ZlVGhlRm9sZCk7XG5cbiAgICAgICAgICBfdGhpczIuc2V0U3RhdGUoe1xuICAgICAgICAgICAgdGlsZU1heEhlaWdodDogX3RoaXMyLmFib3ZlVGhlRm9sZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQsXG4gICAgICAgICAgICB0aWxlUGFkZGluZzogcGFyc2VJbnQoZ2V0U3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgncGFkZGluZy10b3AnKSwgMTApICsgcGFyc2VJbnQoZ2V0U3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgncGFkZGluZy1ib3R0b20nKSwgMTApXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwiY29tcG9uZW50RGlkVXBkYXRlXCIsIGZ1bmN0aW9uIChwcmV2UHJvcHMpIHtcbiAgICAgIGlmIChwcmV2UHJvcHMuZXhwYW5kZWQgIT09IF90aGlzMi5wcm9wcy5leHBhbmRlZCkge1xuICAgICAgICBfdGhpczIuc2V0TWF4SGVpZ2h0KCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpczIpLCBcInNldE1heEhlaWdodFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoX3RoaXMyLnN0YXRlLmV4cGFuZGVkID8gX3RoaXMyLnRpbGVDb250ZW50IDogX3RoaXMyLmFib3ZlVGhlRm9sZCkge1xuICAgICAgICBfdGhpczIuc2V0U3RhdGUoe1xuICAgICAgICAgIHRpbGVNYXhIZWlnaHQ6IF90aGlzMi5zdGF0ZS5leHBhbmRlZCA/IF90aGlzMi50aWxlQ29udGVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQgOiBfdGhpczIuYWJvdmVUaGVGb2xkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwiaGFuZGxlQ2xpY2tcIiwgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgaWYgKCFfdGhpczIucHJvcHMub25CZWZvcmVDbGljayhldnQpIHx8IGV2dC50YXJnZXQudGFnTmFtZSA9PT0gJ0lOUFVUJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGV2dC5wZXJzaXN0KCk7XG5cbiAgICAgIF90aGlzMi5zZXRTdGF0ZSh7XG4gICAgICAgIGV4cGFuZGVkOiAhX3RoaXMyLnN0YXRlLmV4cGFuZGVkXG4gICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpczIkcHJvcHMkaGFuZGxlQ2wsIF90aGlzMiRwcm9wcywgX3RoaXMyJHByb3BzJG9uQ2xpY2ssIF90aGlzMiRwcm9wczI7XG5cbiAgICAgICAgX3RoaXMyLnNldE1heEhlaWdodCgpOyAvLyBUT0RPOiBSZW1vdmUgaGFuZGxlQ2xpY2sgcHJvcCB3aGVuIGhhbmRsZUNsaWNrIGlzIGRlcHJlY2F0ZWRcblxuXG4gICAgICAgICgoX3RoaXMyJHByb3BzJGhhbmRsZUNsID0gKF90aGlzMiRwcm9wcyA9IF90aGlzMi5wcm9wcykuaGFuZGxlQ2xpY2spID09PSBudWxsIHx8IF90aGlzMiRwcm9wcyRoYW5kbGVDbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMyJHByb3BzJGhhbmRsZUNsLmNhbGwoX3RoaXMyJHByb3BzLCBldnQpKSB8fCAoKF90aGlzMiRwcm9wcyRvbkNsaWNrID0gKF90aGlzMiRwcm9wczIgPSBfdGhpczIucHJvcHMpLm9uQ2xpY2spID09PSBudWxsIHx8IF90aGlzMiRwcm9wcyRvbkNsaWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpczIkcHJvcHMkb25DbGljay5jYWxsKF90aGlzMiRwcm9wczIsIGV2dCkpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpczIpLCBcImhhbmRsZUtleVVwXCIsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIGlmIChldnQudGFyZ2V0ICE9PSBfdGhpczIudGlsZSkge1xuICAgICAgICBpZiAobWF0Y2hlcyhldnQsIFtFbnRlciwgU3BhY2VdKSkge1xuICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpczIpLCBcImdldENoaWxkcmVuXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBSZWFjdF9fZGVmYXVsdC5DaGlsZHJlbi50b0FycmF5KF90aGlzMi5wcm9wcy5jaGlsZHJlbik7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gX3RoaXMyO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKEV4cGFuZGFibGVUaWxlLCBbe1xuICAgIGtleTogXCJjb21wb25lbnRXaWxsVW5tb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgIGlmICh0aGlzLnJlc2l6ZU9ic2VydmVyKSB7XG4gICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIF9jeDUsXG4gICAgICAgICAgX3RoaXMzID0gdGhpcztcblxuICAgICAgdmFyIF90aGlzJHByb3BzNyA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgdGFiSW5kZXggPSBfdGhpcyRwcm9wczcudGFiSW5kZXgsXG4gICAgICAgICAgY2xhc3NOYW1lID0gX3RoaXMkcHJvcHM3LmNsYXNzTmFtZTtcbiAgICAgICAgICBfdGhpcyRwcm9wczcuZXhwYW5kZWQ7XG4gICAgICAgICAgX3RoaXMkcHJvcHM3LnRpbGVNYXhIZWlnaHQ7XG4gICAgICAgICAgX3RoaXMkcHJvcHM3LnRpbGVQYWRkaW5nO1xuICAgICAgICAgIF90aGlzJHByb3BzNy5oYW5kbGVDbGljaztcbiAgICAgICAgICB2YXIgb25LZXlVcCA9IF90aGlzJHByb3BzNy5vbktleVVwLFxuICAgICAgICAgIHRpbGVDb2xsYXBzZWRJY29uVGV4dCA9IF90aGlzJHByb3BzNy50aWxlQ29sbGFwc2VkSWNvblRleHQsXG4gICAgICAgICAgdGlsZUV4cGFuZGVkSWNvblRleHQgPSBfdGhpcyRwcm9wczcudGlsZUV4cGFuZGVkSWNvblRleHQsXG4gICAgICAgICAgdGlsZUNvbGxhcHNlZExhYmVsID0gX3RoaXMkcHJvcHM3LnRpbGVDb2xsYXBzZWRMYWJlbCxcbiAgICAgICAgICB0aWxlRXhwYW5kZWRMYWJlbCA9IF90aGlzJHByb3BzNy50aWxlRXhwYW5kZWRMYWJlbDtcbiAgICAgICAgICBfdGhpcyRwcm9wczcub25CZWZvcmVDbGljaztcbiAgICAgICAgICB2YXIgbGlnaHQgPSBfdGhpcyRwcm9wczcubGlnaHQsXG4gICAgICAgICAgcmVzdCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfdGhpcyRwcm9wczcsIF9leGNsdWRlZDQpO1xuXG4gICAgICB2YXIgcHJlZml4ID0gdGhpcy5jb250ZXh0O1xuICAgICAgdmFyIGlzRXhwYW5kZWQgPSB0aGlzLnN0YXRlLmV4cGFuZGVkO1xuICAgICAgdmFyIGNsYXNzZXMgPSBjeChcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlXCIpLCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1leHBhbmRhYmxlXCIpLCAoX2N4NSA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2N4NSwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0taXMtZXhwYW5kZWRcIiksIGlzRXhwYW5kZWQpLCBfZGVmaW5lUHJvcGVydHkoX2N4NSwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0tbGlnaHRcIiksIGxpZ2h0KSwgX2N4NSksIGNsYXNzTmFtZSk7XG4gICAgICB2YXIgdGlsZVN0eWxlID0ge1xuICAgICAgICBtYXhIZWlnaHQ6IGlzRXhwYW5kZWQgPyBudWxsIDogdGhpcy5zdGF0ZS50aWxlTWF4SGVpZ2h0ICsgdGhpcy5zdGF0ZS50aWxlUGFkZGluZ1xuICAgICAgfTtcbiAgICAgIHZhciBjaGlsZHJlbkFzQXJyYXkgPSB0aGlzLmdldENoaWxkcmVuKCk7XG4gICAgICByZXR1cm4gKFxuICAgICAgICAvKiNfX1BVUkVfXyovXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzLGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9uc1xuICAgICAgICBSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIsIF9leHRlbmRzKHtcbiAgICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICAgIHJlZjogZnVuY3Rpb24gcmVmKHRpbGUpIHtcbiAgICAgICAgICAgIF90aGlzMy50aWxlID0gdGlsZTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHN0eWxlOiB0aWxlU3R5bGUsXG4gICAgICAgICAgY2xhc3NOYW1lOiBjbGFzc2VzLFxuICAgICAgICAgIFwiYXJpYS1leHBhbmRlZFwiOiBpc0V4cGFuZGVkLFxuICAgICAgICAgIHRpdGxlOiBpc0V4cGFuZGVkID8gdGlsZUV4cGFuZGVkSWNvblRleHQgOiB0aWxlQ29sbGFwc2VkSWNvblRleHRcbiAgICAgICAgfSwgcmVzdCwge1xuICAgICAgICAgIG9uS2V5VXA6IGNvbXBvc2VFdmVudEhhbmRsZXJzKFtvbktleVVwLCB0aGlzLmhhbmRsZUtleVVwXSksXG4gICAgICAgICAgb25DbGljazogdGhpcy5oYW5kbGVDbGljayxcbiAgICAgICAgICB0YWJJbmRleDogdGFiSW5kZXhcbiAgICAgICAgfSksIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgICAgICByZWY6IGZ1bmN0aW9uIHJlZih0aWxlQ29udGVudCkge1xuICAgICAgICAgICAgX3RoaXMzLnRpbGVDb250ZW50ID0gdGlsZUNvbnRlbnQ7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgICAgcmVmOiBmdW5jdGlvbiByZWYoYWJvdmVUaGVGb2xkKSB7XG4gICAgICAgICAgICBfdGhpczMuYWJvdmVUaGVGb2xkID0gYWJvdmVUaGVGb2xkO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLWNvbnRlbnRcIilcbiAgICAgICAgfSwgY2hpbGRyZW5Bc0FycmF5WzBdKSwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZV9fY2hldnJvblwiKVxuICAgICAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgbnVsbCwgaXNFeHBhbmRlZCA/IHRpbGVFeHBhbmRlZExhYmVsIDogdGlsZUNvbGxhcHNlZExhYmVsKSwgX0NoZXZyb25Eb3duIHx8IChfQ2hldnJvbkRvd24gPSAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChDaGV2cm9uRG93biwgbnVsbCkpKSwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS1jb250ZW50XCIpXG4gICAgICAgIH0sIGNoaWxkcmVuQXNBcnJheVsxXSkpKVxuICAgICAgKTtcbiAgICB9XG4gIH1dLCBbe1xuICAgIGtleTogXCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKCAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvcHJvcC10eXBlc1xuICAgIF9yZWYyLCBzdGF0ZSkge1xuICAgICAgdmFyIGV4cGFuZGVkID0gX3JlZjIuZXhwYW5kZWQsXG4gICAgICAgICAgdGlsZU1heEhlaWdodCA9IF9yZWYyLnRpbGVNYXhIZWlnaHQsXG4gICAgICAgICAgdGlsZVBhZGRpbmcgPSBfcmVmMi50aWxlUGFkZGluZztcbiAgICAgIHZhciBwcmV2RXhwYW5kZWQgPSBzdGF0ZS5wcmV2RXhwYW5kZWQsXG4gICAgICAgICAgcHJldlRpbGVNYXhIZWlnaHQgPSBzdGF0ZS5wcmV2VGlsZU1heEhlaWdodCxcbiAgICAgICAgICBwcmV2VGlsZVBhZGRpbmcgPSBzdGF0ZS5wcmV2VGlsZVBhZGRpbmcsXG4gICAgICAgICAgY3VycmVudEV4cGFuZGVkID0gc3RhdGUuZXhwYW5kZWQsXG4gICAgICAgICAgY3VycmVudFRpbGVNYXhIZWlnaHQgPSBzdGF0ZS50aWxlTWF4SGVpZ2h0LFxuICAgICAgICAgIGN1cnJlbnRUaWxlUGFkZGluZyA9IHN0YXRlLnRpbGVQYWRkaW5nO1xuICAgICAgdmFyIGV4cGFuZGVkQ2hhbmdlZCA9IHByZXZFeHBhbmRlZCAhPT0gZXhwYW5kZWQ7XG4gICAgICB2YXIgdGlsZU1heEhlaWdodENoYW5nZWQgPSBwcmV2VGlsZU1heEhlaWdodCAhPT0gdGlsZU1heEhlaWdodDtcbiAgICAgIHZhciB0aWxlUGFkZGluZ0NoYW5nZWQgPSBwcmV2VGlsZVBhZGRpbmcgIT09IHRpbGVQYWRkaW5nO1xuICAgICAgcmV0dXJuICFleHBhbmRlZENoYW5nZWQgJiYgIXRpbGVNYXhIZWlnaHRDaGFuZ2VkICYmICF0aWxlUGFkZGluZ0NoYW5nZWQgPyBudWxsIDoge1xuICAgICAgICBleHBhbmRlZDogIWV4cGFuZGVkQ2hhbmdlZCA/IGN1cnJlbnRFeHBhbmRlZCA6IGV4cGFuZGVkLFxuICAgICAgICB0aWxlTWF4SGVpZ2h0OiAhdGlsZU1heEhlaWdodENoYW5nZWQgPyBjdXJyZW50VGlsZU1heEhlaWdodCA6IHRpbGVNYXhIZWlnaHQsXG4gICAgICAgIHRpbGVQYWRkaW5nOiAhdGlsZVBhZGRpbmdDaGFuZ2VkID8gY3VycmVudFRpbGVQYWRkaW5nIDogdGlsZVBhZGRpbmcsXG4gICAgICAgIHByZXZFeHBhbmRlZDogZXhwYW5kZWQsXG4gICAgICAgIHByZXZUaWxlTWF4SGVpZ2h0OiB0aWxlTWF4SGVpZ2h0LFxuICAgICAgICBwcmV2VGlsZVBhZGRpbmc6IHRpbGVQYWRkaW5nXG4gICAgICB9O1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBFeHBhbmRhYmxlVGlsZTtcbn0oQ29tcG9uZW50KTtcblxuX2RlZmluZVByb3BlcnR5KEV4cGFuZGFibGVUaWxlLCBcInByb3BUeXBlc1wiLCB7XG4gIC8qKlxuICAgKiBUaGUgY2hpbGQgbm9kZXMuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG5cbiAgLyoqXG4gICAqIFRoZSBDU1MgY2xhc3MgbmFtZXMuXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIGB0cnVlYCBpZiB0aGUgdGlsZSBpcyBleHBhbmRlZC5cbiAgICovXG4gIGV4cGFuZGVkOiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogRGVwcmVjYXRlZCBpbiB2MTEuIFVzZSAnb25DbGljaycgaW5zdGVhZC5cbiAgICovXG4gIGhhbmRsZUNsaWNrOiBkZXByZWNhdGUoUHJvcFR5cGVzLmZ1bmMsICdUaGUgaGFuZGxlQ2xpY2sgcHJvcCBmb3IgRXhwYW5kYWJsZVRpbGUgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBvbkNsaWNrLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZS4nKSxcblxuICAvKipcbiAgICogQW4gSUQgdGhhdCBjYW4gYmUgcHJvdmlkZWQgdG8gYXJpYS1sYWJlbGxlZGJ5XG4gICAqL1xuICBpZDogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogYHRydWVgIHRvIHVzZSB0aGUgbGlnaHQgdmVyc2lvbi4gRm9yIHVzZSBvbiAkdWktMDEgYmFja2dyb3VuZHMgb25seS5cbiAgICogRG9uJ3QgdXNlIHRoaXMgdG8gbWFrZSB0aWxlIGJhY2tncm91bmQgY29sb3Igc2FtZSBhcyBjb250YWluZXIgYmFja2dyb3VuZCBjb2xvci5cbiAgICovXG4gIGxpZ2h0OiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogb3B0aW9uYWwgaGFuZGxlciB0byBkZWNpZGUgd2hldGhlciB0byBpZ25vcmUgYSBjbGljay4gcmV0dXJucyBmYWxzZSBpZiBjbGljayBzaG91bGQgYmUgaWdub3JlZFxuICAgKi9cbiAgb25CZWZvcmVDbGljazogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGZ1bmN0aW9uIHRvIHJ1biB3aGVuIHRoZSBFeHBhbmRhYmxlVGlsZSBpcyBjbGlja2VkXG4gICAgKi9cbiAgb25DbGljazogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIG9wdGlvbmFsIGhhbmRsZXIgdG8gdHJpZ2dlciBhIGZ1bmN0aW9uIHdoZW4gYSBrZXkgaXMgcHJlc3NlZFxuICAgKi9cbiAgb25LZXlVcDogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIFRoZSBgdGFiaW5kZXhgIGF0dHJpYnV0ZS5cbiAgICovXG4gIHRhYkluZGV4OiBQcm9wVHlwZXMubnVtYmVyLFxuXG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIFwiY29sbGFwc2VkXCIgaWNvbiB0aGF0IGNhbiBiZSByZWFkIGJ5IHNjcmVlbiByZWFkZXJzLlxuICAgKi9cbiAgdGlsZUNvbGxhcHNlZEljb25UZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBXaGVuIFwiY29sbGFwc2VkXCIsIGEgbGFiZWwgdG8gYXBwZWFyIG5leHQgdG8gdGhlIGNoZXZyb24gKGUuZy4sIFwiVmlldyBtb3JlXCIpLlxuICAgKi9cbiAgdGlsZUNvbGxhcHNlZExhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIFwiZXhwYW5kZWRcIiBpY29uIHRoYXQgY2FuIGJlIHJlYWQgYnkgc2NyZWVuIHJlYWRlcnMuXG4gICAqL1xuICB0aWxlRXhwYW5kZWRJY29uVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogV2hlbiBcImV4cGFuZGVkXCIsIGEgbGFiZWwgdG8gYXBwZWFyIG5leHQgdG8gdGhlIGNoZXZyb24gKGUuZy4sIFwiVmlldyBsZXNzXCIpLlxuICAgKi9cbiAgdGlsZUV4cGFuZGVkTGFiZWw6IFByb3BUeXBlcy5zdHJpbmdcbn0pO1xuXG5fZGVmaW5lUHJvcGVydHkoRXhwYW5kYWJsZVRpbGUsIFwiY29udGV4dFR5cGVcIiwgUHJlZml4Q29udGV4dCk7XG5cbl9kZWZpbmVQcm9wZXJ0eShFeHBhbmRhYmxlVGlsZSwgXCJkZWZhdWx0UHJvcHNcIiwge1xuICB0YWJJbmRleDogMCxcbiAgZXhwYW5kZWQ6IGZhbHNlLFxuICB0aWxlTWF4SGVpZ2h0OiAwLFxuICB0aWxlUGFkZGluZzogMCxcbiAgb25CZWZvcmVDbGljazogZnVuY3Rpb24gb25CZWZvcmVDbGljaygpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcbiAgb25DbGljazogZnVuY3Rpb24gb25DbGljaygpIHt9LFxuICB0aWxlQ29sbGFwc2VkSWNvblRleHQ6ICdJbnRlcmFjdCB0byBleHBhbmQgVGlsZScsXG4gIHRpbGVFeHBhbmRlZEljb25UZXh0OiAnSW50ZXJhY3QgdG8gY29sbGFwc2UgVGlsZScsXG4gIGxpZ2h0OiBmYWxzZVxufSk7XG5cbnZhciBUaWxlQWJvdmVUaGVGb2xkQ29udGVudCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudDQpIHtcbiAgX2luaGVyaXRzKFRpbGVBYm92ZVRoZUZvbGRDb250ZW50LCBfQ29tcG9uZW50NCk7XG5cbiAgdmFyIF9zdXBlcjQgPSBfY3JlYXRlU3VwZXIoVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQpO1xuXG4gIGZ1bmN0aW9uIFRpbGVBYm92ZVRoZUZvbGRDb250ZW50KCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBUaWxlQWJvdmVUaGVGb2xkQ29udGVudCk7XG5cbiAgICByZXR1cm4gX3N1cGVyNC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFRpbGVBYm92ZVRoZUZvbGRDb250ZW50LCBbe1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIHByZWZpeCA9IHRoaXMuY29udGV4dDtcbiAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMucHJvcHMuY2hpbGRyZW47XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLWNvbnRlbnRfX2Fib3ZlLXRoZS1mb2xkXCIpXG4gICAgICB9LCBjaGlsZHJlbik7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFRpbGVBYm92ZVRoZUZvbGRDb250ZW50O1xufShDb21wb25lbnQpO1xuXG5fZGVmaW5lUHJvcGVydHkoVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQsIFwicHJvcFR5cGVzXCIsIHtcbiAgLyoqXG4gICAqIFRoZSBjaGlsZCBub2Rlcy5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZVxufSk7XG5cbl9kZWZpbmVQcm9wZXJ0eShUaWxlQWJvdmVUaGVGb2xkQ29udGVudCwgXCJjb250ZXh0VHlwZVwiLCBQcmVmaXhDb250ZXh0KTtcblxudmFyIFRpbGVCZWxvd1RoZUZvbGRDb250ZW50ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50NSkge1xuICBfaW5oZXJpdHMoVGlsZUJlbG93VGhlRm9sZENvbnRlbnQsIF9Db21wb25lbnQ1KTtcblxuICB2YXIgX3N1cGVyNSA9IF9jcmVhdGVTdXBlcihUaWxlQmVsb3dUaGVGb2xkQ29udGVudCk7XG5cbiAgZnVuY3Rpb24gVGlsZUJlbG93VGhlRm9sZENvbnRlbnQoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFRpbGVCZWxvd1RoZUZvbGRDb250ZW50KTtcblxuICAgIHJldHVybiBfc3VwZXI1LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoVGlsZUJlbG93VGhlRm9sZENvbnRlbnQsIFt7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLnByb3BzLmNoaWxkcmVuO1xuICAgICAgdmFyIHByZWZpeCA9IHRoaXMuY29udGV4dDtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtY29udGVudF9fYmVsb3ctdGhlLWZvbGRcIilcbiAgICAgIH0sIGNoaWxkcmVuKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gVGlsZUJlbG93VGhlRm9sZENvbnRlbnQ7XG59KENvbXBvbmVudCk7XG5cbl9kZWZpbmVQcm9wZXJ0eShUaWxlQmVsb3dUaGVGb2xkQ29udGVudCwgXCJwcm9wVHlwZXNcIiwge1xuICAvKipcbiAgICogVGhlIGNoaWxkIG5vZGVzLlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlXG59KTtcblxuX2RlZmluZVByb3BlcnR5KFRpbGVCZWxvd1RoZUZvbGRDb250ZW50LCBcImNvbnRleHRUeXBlXCIsIFByZWZpeENvbnRleHQpO1xuXG5leHBvcnQgeyBDbGlja2FibGVUaWxlLCBFeHBhbmRhYmxlVGlsZSwgU2VsZWN0YWJsZVRpbGUsIFRpbGUsIFRpbGVBYm92ZVRoZUZvbGRDb250ZW50LCBUaWxlQmVsb3dUaGVGb2xkQ29udGVudCB9O1xuIl0sIm5hbWVzIjpbImluaGVyaXRzIiwiX2luaGVyaXRzIiwiY3JlYXRlU3VwZXIiLCJfY3JlYXRlU3VwZXIiLCJjbGFzc0NhbGxDaGVjayIsIl9jbGFzc0NhbGxDaGVjayIsImNyZWF0ZUNsYXNzIiwiX2NyZWF0ZUNsYXNzIiwib2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl9kZWZpbmVQcm9wZXJ0eSIsImV4dGVuZHMiLCJfZXh0ZW5kcyIsImFzc2VydFRoaXNJbml0aWFsaXplZCIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJzbGljZWRUb0FycmF5IiwiX3NsaWNlZFRvQXJyYXkiLCJSZWFjdF9fZGVmYXVsdCIsIkNvbXBvbmVudCIsInVzZVN0YXRlIiwidXNlUmVmIiwidXNlRWZmZWN0IiwiUHJvcFR5cGVzIiwiY3giLCJMaW5rIiwiQ2hlY2tib3hDaGVja2VkRmlsbGVkIiwiQ2hlY2tib3giLCJDaGV2cm9uRG93biIsImRlcHJlY2F0ZSIsImNvbXBvc2VFdmVudEhhbmRsZXJzIiwiUHJlZml4Q29udGV4dCIsInVzZVByZWZpeCIsIm1hdGNoZXMiLCJFbnRlciIsIlNwYWNlIiwiX0NoZWNrYm94Q2hlY2tlZEZpbGxlIiwiX0NoZWNrYm94IiwiX0NoZXZyb25Eb3duIiwiX2V4Y2x1ZGVkIiwiX2V4Y2x1ZGVkMiIsIl9leGNsdWRlZDMiLCJfZXhjbHVkZWQ0IiwiVGlsZSIsIl9Db21wb25lbnQiLCJfc3VwZXIiLCJhcHBseSIsImFyZ3VtZW50cyIsImtleSIsInZhbHVlIiwicmVuZGVyIiwicHJlZml4IiwiY29udGV4dCIsIl90aGlzJHByb3BzIiwicHJvcHMiLCJjaGlsZHJlbiIsImNsYXNzTmFtZSIsImxpZ2h0IiwicmVzdCIsInRpbGVDbGFzc2VzIiwiY29uY2F0IiwiY3JlYXRlRWxlbWVudCIsIm5vZGUiLCJzdHJpbmciLCJib29sIiwiQ2xpY2thYmxlVGlsZSIsIl9Db21wb25lbnQyIiwiX3N1cGVyMiIsIl90aGlzIiwiX2xlbiIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJjYWxsIiwiZXZ0IiwicGVyc2lzdCIsInNldFN0YXRlIiwiY2xpY2tlZCIsInN0YXRlIiwiX3RoaXMkcHJvcHMkaGFuZGxlQ2xpIiwiX3RoaXMkcHJvcHMyIiwiX3RoaXMkcHJvcHMkb25DbGljayIsIl90aGlzJHByb3BzMyIsImhhbmRsZUNsaWNrIiwib25DbGljayIsIl90aGlzJHByb3BzJGhhbmRsZUtleSIsIl90aGlzJHByb3BzNCIsImhhbmRsZUtleURvd24iLCJvbktleURvd24iLCJfdGhpcyRwcm9wcyRoYW5kbGVLZXkyIiwiX3RoaXMkcHJvcHM1IiwiX2N4MiIsIl90aGlzJHByb3BzNiIsImhyZWYiLCJjbGFzc2VzIiwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIiwiX3JlZiIsInByZXZDbGlja2VkIiwiZnVuYyIsInJlbCIsIlNlbGVjdGFibGVUaWxlIiwiaGFuZGxlT25DbGljayIsInByZXZlbnREZWZhdWx0Iiwic2V0SXNTZWxlY3RlZCIsImlzU2VsZWN0ZWQiLCJjbGlja0hhbmRsZXIiLCJvbkNoYW5nZSIsImhhbmRsZU9uS2V5RG93biIsImtleURvd25IYW5kbGVyIiwiaGFuZGxlQ2hhbmdlIiwiZXZlbnQiLCJ0YXJnZXQiLCJjaGVja2VkIiwiX2N4MyIsImlkIiwidGFiSW5kZXgiLCJuYW1lIiwidGl0bGUiLCJpY29uRGVzY3JpcHRpb24iLCJkaXNhYmxlZCIsInNlbGVjdGVkIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsImlucHV0IiwiaW5wdXRDbGFzc2VzIiwiRnJhZ21lbnQiLCJyZWYiLCJ0eXBlIiwiaHRtbEZvciIsImRlZmF1bHRQcm9wcyIsInByb3BUeXBlcyIsIm51bWJlciIsIm9uZU9mVHlwZSIsImlzUmVxdWlyZWQiLCJFeHBhbmRhYmxlVGlsZSIsIl9Db21wb25lbnQzIiwiX3N1cGVyMyIsIl90aGlzMiIsIl9sZW4yIiwiX2tleTIiLCJyZXNpemVPYnNlcnZlciIsIlJlc2l6ZU9ic2VydmVyIiwiZW50cmllcyIsIl9lbnRyaWVzIiwiYWJvdmVUaGVGb2xkIiwidGlsZU1heEhlaWdodCIsImNvbnRlbnRSZWN0IiwiaGVpZ2h0IiwidGlsZSIsImdldFN0eWxlIiwid2luZG93IiwiZ2V0Q29tcHV0ZWRTdHlsZSIsIm9ic2VydmUiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ0aWxlUGFkZGluZyIsInBhcnNlSW50IiwiZ2V0UHJvcGVydHlWYWx1ZSIsInByZXZQcm9wcyIsImV4cGFuZGVkIiwic2V0TWF4SGVpZ2h0IiwidGlsZUNvbnRlbnQiLCJvbkJlZm9yZUNsaWNrIiwidGFnTmFtZSIsIl90aGlzMiRwcm9wcyRoYW5kbGVDbCIsIl90aGlzMiRwcm9wcyIsIl90aGlzMiRwcm9wcyRvbkNsaWNrIiwiX3RoaXMyJHByb3BzMiIsIkNoaWxkcmVuIiwidG9BcnJheSIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwiZGlzY29ubmVjdCIsIl9jeDUiLCJfdGhpczMiLCJfdGhpcyRwcm9wczciLCJvbktleVVwIiwidGlsZUNvbGxhcHNlZEljb25UZXh0IiwidGlsZUV4cGFuZGVkSWNvblRleHQiLCJ0aWxlQ29sbGFwc2VkTGFiZWwiLCJ0aWxlRXhwYW5kZWRMYWJlbCIsImlzRXhwYW5kZWQiLCJ0aWxlU3R5bGUiLCJtYXhIZWlnaHQiLCJjaGlsZHJlbkFzQXJyYXkiLCJnZXRDaGlsZHJlbiIsInN0eWxlIiwiaGFuZGxlS2V5VXAiLCJfcmVmMiIsInByZXZFeHBhbmRlZCIsInByZXZUaWxlTWF4SGVpZ2h0IiwicHJldlRpbGVQYWRkaW5nIiwiY3VycmVudEV4cGFuZGVkIiwiY3VycmVudFRpbGVNYXhIZWlnaHQiLCJjdXJyZW50VGlsZVBhZGRpbmciLCJleHBhbmRlZENoYW5nZWQiLCJ0aWxlTWF4SGVpZ2h0Q2hhbmdlZCIsInRpbGVQYWRkaW5nQ2hhbmdlZCIsIlRpbGVBYm92ZVRoZUZvbGRDb250ZW50IiwiX0NvbXBvbmVudDQiLCJfc3VwZXI0IiwiVGlsZUJlbG93VGhlRm9sZENvbnRlbnQiLCJfQ29tcG9uZW50NSIsIl9zdXBlcjUiXSwic291cmNlUm9vdCI6IiJ9\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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QUFDNkwseUJBQXlCLGVBQWV6SyxpRUFBYUE7QUFFNEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AY2FyYm9uL3JlYWN0L2VzL2NvbXBvbmVudHMvVGlsZS9UaWxlLmpzPzBjYTYiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMTYsIDIwMjJcbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUtMi4wIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuaW1wb3J0IHsgaW5oZXJpdHMgYXMgX2luaGVyaXRzLCBjcmVhdGVTdXBlciBhcyBfY3JlYXRlU3VwZXIsIGNsYXNzQ2FsbENoZWNrIGFzIF9jbGFzc0NhbGxDaGVjaywgY3JlYXRlQ2xhc3MgYXMgX2NyZWF0ZUNsYXNzLCBvYmplY3RXaXRob3V0UHJvcGVydGllcyBhcyBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMsIGRlZmluZVByb3BlcnR5IGFzIF9kZWZpbmVQcm9wZXJ0eSwgZXh0ZW5kcyBhcyBfZXh0ZW5kcywgYXNzZXJ0VGhpc0luaXRpYWxpemVkIGFzIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQsIHNsaWNlZFRvQXJyYXkgYXMgX3NsaWNlZFRvQXJyYXkgfSBmcm9tICcuLi8uLi9fdmlydHVhbC9fcm9sbHVwUGx1Z2luQmFiZWxIZWxwZXJzLmpzJztcbmltcG9ydCBSZWFjdF9fZGVmYXVsdCwgeyBDb21wb25lbnQsIHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY3ggZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgTGluayBmcm9tICcuLi9MaW5rL0xpbmsuanMnO1xuaW1wb3J0IHsgQ2hlY2tib3hDaGVja2VkRmlsbGVkLCBDaGVja2JveCwgQ2hldnJvbkRvd24gfSBmcm9tICdAY2FyYm9uL2ljb25zLXJlYWN0JztcbmltcG9ydCBkZXByZWNhdGUgZnJvbSAnLi4vLi4vcHJvcC10eXBlcy9kZXByZWNhdGUuanMnO1xuaW1wb3J0IHsgY29tcG9zZUV2ZW50SGFuZGxlcnMgfSBmcm9tICcuLi8uLi90b29scy9ldmVudHMuanMnO1xuaW1wb3J0IHsgUHJlZml4Q29udGV4dCwgdXNlUHJlZml4IH0gZnJvbSAnLi4vLi4vaW50ZXJuYWwvdXNlUHJlZml4LmpzJztcbmltcG9ydCB7IG1hdGNoZXMgfSBmcm9tICcuLi8uLi9pbnRlcm5hbC9rZXlib2FyZC9tYXRjaC5qcyc7XG5pbXBvcnQgeyBFbnRlciwgU3BhY2UgfSBmcm9tICcuLi8uLi9pbnRlcm5hbC9rZXlib2FyZC9rZXlzLmpzJztcblxudmFyIF9DaGVja2JveENoZWNrZWRGaWxsZSwgX0NoZWNrYm94LCBfQ2hldnJvbkRvd247XG5cbnZhciBfZXhjbHVkZWQgPSBbXCJjaGlsZHJlblwiLCBcImNsYXNzTmFtZVwiLCBcImxpZ2h0XCJdLFxuICAgIF9leGNsdWRlZDIgPSBbXCJjaGlsZHJlblwiLCBcImhyZWZcIiwgXCJjbGFzc05hbWVcIiwgXCJoYW5kbGVDbGlja1wiLCBcImhhbmRsZUtleURvd25cIiwgXCJvbkNsaWNrXCIsIFwib25LZXlEb3duXCIsIFwiY2xpY2tlZFwiLCBcImxpZ2h0XCJdLFxuICAgIF9leGNsdWRlZDMgPSBbXCJjaGlsZHJlblwiLCBcImlkXCIsIFwidGFiSW5kZXhcIiwgXCJ2YWx1ZVwiLCBcIm5hbWVcIiwgXCJ0aXRsZVwiLCBcImljb25EZXNjcmlwdGlvblwiLCBcImNsYXNzTmFtZVwiLCBcImhhbmRsZUNsaWNrXCIsIFwiaGFuZGxlS2V5RG93blwiLCBcIm9uQ2xpY2tcIiwgXCJvbkNoYW5nZVwiLCBcIm9uS2V5RG93blwiLCBcImxpZ2h0XCIsIFwiZGlzYWJsZWRcIiwgXCJzZWxlY3RlZFwiXSxcbiAgICBfZXhjbHVkZWQ0ID0gW1widGFiSW5kZXhcIiwgXCJjbGFzc05hbWVcIiwgXCJleHBhbmRlZFwiLCBcInRpbGVNYXhIZWlnaHRcIiwgXCJ0aWxlUGFkZGluZ1wiLCBcImhhbmRsZUNsaWNrXCIsIFwib25LZXlVcFwiLCBcInRpbGVDb2xsYXBzZWRJY29uVGV4dFwiLCBcInRpbGVFeHBhbmRlZEljb25UZXh0XCIsIFwidGlsZUNvbGxhcHNlZExhYmVsXCIsIFwidGlsZUV4cGFuZGVkTGFiZWxcIiwgXCJvbkJlZm9yZUNsaWNrXCIsIFwibGlnaHRcIl07XG52YXIgVGlsZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoVGlsZSwgX0NvbXBvbmVudCk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihUaWxlKTtcblxuICBmdW5jdGlvbiBUaWxlKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBUaWxlKTtcblxuICAgIHJldHVybiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhUaWxlLCBbe1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIHByZWZpeCA9IHRoaXMuY29udGV4dDtcblxuICAgICAgdmFyIF90aGlzJHByb3BzID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICBjaGlsZHJlbiA9IF90aGlzJHByb3BzLmNoaWxkcmVuLFxuICAgICAgICAgIGNsYXNzTmFtZSA9IF90aGlzJHByb3BzLmNsYXNzTmFtZSxcbiAgICAgICAgICBsaWdodCA9IF90aGlzJHByb3BzLmxpZ2h0LFxuICAgICAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3RoaXMkcHJvcHMsIF9leGNsdWRlZCk7XG5cbiAgICAgIHZhciB0aWxlQ2xhc3NlcyA9IGN4KFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGVcIiksIF9kZWZpbmVQcm9wZXJ0eSh7fSwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0tbGlnaHRcIiksIGxpZ2h0KSwgY2xhc3NOYW1lKTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfZXh0ZW5kcyh7XG4gICAgICAgIGNsYXNzTmFtZTogdGlsZUNsYXNzZXNcbiAgICAgIH0sIHJlc3QpLCBjaGlsZHJlbik7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFRpbGU7XG59KENvbXBvbmVudCk7XG5cbl9kZWZpbmVQcm9wZXJ0eShUaWxlLCBcInByb3BUeXBlc1wiLCB7XG4gIC8qKlxuICAgKiBUaGUgY2hpbGQgbm9kZXMuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG5cbiAgLyoqXG4gICAqIFRoZSBDU1MgY2xhc3MgbmFtZXMuXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIGB0cnVlYCB0byB1c2UgdGhlIGxpZ2h0IHZlcnNpb24uIEZvciB1c2Ugb24gJHVpLTAxIGJhY2tncm91bmRzIG9ubHkuXG4gICAqIERvbid0IHVzZSB0aGlzIHRvIG1ha2UgdGlsZSBiYWNrZ3JvdW5kIGNvbG9yIHNhbWUgYXMgY29udGFpbmVyIGJhY2tncm91bmQgY29sb3IuXG4gICAqL1xuICBsaWdodDogUHJvcFR5cGVzLmJvb2xcbn0pO1xuXG5fZGVmaW5lUHJvcGVydHkoVGlsZSwgXCJjb250ZXh0VHlwZVwiLCBQcmVmaXhDb250ZXh0KTtcblxuX2RlZmluZVByb3BlcnR5KFRpbGUsIFwiZGVmYXVsdFByb3BzXCIsIHtcbiAgbGlnaHQ6IGZhbHNlXG59KTtcblxudmFyIENsaWNrYWJsZVRpbGUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db21wb25lbnQyKSB7XG4gIF9pbmhlcml0cyhDbGlja2FibGVUaWxlLCBfQ29tcG9uZW50Mik7XG5cbiAgdmFyIF9zdXBlcjIgPSBfY3JlYXRlU3VwZXIoQ2xpY2thYmxlVGlsZSk7XG5cbiAgZnVuY3Rpb24gQ2xpY2thYmxlVGlsZSgpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ2xpY2thYmxlVGlsZSk7XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgX3RoaXMgPSBfc3VwZXIyLmNhbGwuYXBwbHkoX3N1cGVyMiwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwic3RhdGVcIiwge30pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImhhbmRsZUNsaWNrXCIsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIGV2dC5wZXJzaXN0KCk7XG5cbiAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgY2xpY2tlZDogIV90aGlzLnN0YXRlLmNsaWNrZWRcbiAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzJHByb3BzJGhhbmRsZUNsaSwgX3RoaXMkcHJvcHMyLCBfdGhpcyRwcm9wcyRvbkNsaWNrLCBfdGhpcyRwcm9wczM7XG5cbiAgICAgICAgLy8gVE9ETzogUmVtb3ZlIGhhbmRsZUNsaWNrIHByb3Agd2hlbiBoYW5kbGVDbGljayBpcyBkZXByZWNhdGVkXG4gICAgICAgICgoX3RoaXMkcHJvcHMkaGFuZGxlQ2xpID0gKF90aGlzJHByb3BzMiA9IF90aGlzLnByb3BzKS5oYW5kbGVDbGljaykgPT09IG51bGwgfHwgX3RoaXMkcHJvcHMkaGFuZGxlQ2xpID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRwcm9wcyRoYW5kbGVDbGkuY2FsbChfdGhpcyRwcm9wczIsIGV2dCkpIHx8ICgoX3RoaXMkcHJvcHMkb25DbGljayA9IChfdGhpcyRwcm9wczMgPSBfdGhpcy5wcm9wcykub25DbGljaykgPT09IG51bGwgfHwgX3RoaXMkcHJvcHMkb25DbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkcHJvcHMkb25DbGljay5jYWxsKF90aGlzJHByb3BzMywgZXZ0KSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJoYW5kbGVLZXlEb3duXCIsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIGV2dC5wZXJzaXN0KCk7XG5cbiAgICAgIGlmIChtYXRjaGVzKGV2dCwgW0VudGVyLCBTcGFjZV0pKSB7XG4gICAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBjbGlja2VkOiAhX3RoaXMuc3RhdGUuY2xpY2tlZFxuICAgICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgdmFyIF90aGlzJHByb3BzJGhhbmRsZUtleSwgX3RoaXMkcHJvcHM0O1xuXG4gICAgICAgICAgLy8gVE9ETzogUmVtb3ZlIGhhbmRsZUtleURvd24gcHJvcCB3aGVuIGhhbmRsZUtleURvd24gaXMgZGVwcmVjYXRlZFxuICAgICAgICAgICgoX3RoaXMkcHJvcHMkaGFuZGxlS2V5ID0gKF90aGlzJHByb3BzNCA9IF90aGlzLnByb3BzKS5oYW5kbGVLZXlEb3duKSA9PT0gbnVsbCB8fCBfdGhpcyRwcm9wcyRoYW5kbGVLZXkgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJHByb3BzJGhhbmRsZUtleS5jYWxsKF90aGlzJHByb3BzNCwgZXZ0KSkgfHwgX3RoaXMucHJvcHMub25LZXlEb3duKGV2dCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIF90aGlzJHByb3BzJGhhbmRsZUtleTIsIF90aGlzJHByb3BzNTtcblxuICAgICAgICAvLyBUT0RPOiBSZW1vdmUgaGFuZGxlS2V5RG93biBwcm9wIHdoZW4gaGFuZGxlS2V5RG93biBpcyBkZXByZWNhdGVkXG4gICAgICAgICgoX3RoaXMkcHJvcHMkaGFuZGxlS2V5MiA9IChfdGhpcyRwcm9wczUgPSBfdGhpcy5wcm9wcykuaGFuZGxlS2V5RG93bikgPT09IG51bGwgfHwgX3RoaXMkcHJvcHMkaGFuZGxlS2V5MiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkcHJvcHMkaGFuZGxlS2V5Mi5jYWxsKF90aGlzJHByb3BzNSwgZXZ0KSkgfHwgX3RoaXMucHJvcHMub25LZXlEb3duKGV2dCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoQ2xpY2thYmxlVGlsZSwgW3tcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfY3gyO1xuXG4gICAgICB2YXIgcHJlZml4ID0gdGhpcy5jb250ZXh0O1xuXG4gICAgICB2YXIgX3RoaXMkcHJvcHM2ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICBjaGlsZHJlbiA9IF90aGlzJHByb3BzNi5jaGlsZHJlbixcbiAgICAgICAgICBocmVmID0gX3RoaXMkcHJvcHM2LmhyZWYsXG4gICAgICAgICAgY2xhc3NOYW1lID0gX3RoaXMkcHJvcHM2LmNsYXNzTmFtZTtcbiAgICAgICAgICBfdGhpcyRwcm9wczYuaGFuZGxlQ2xpY2s7XG4gICAgICAgICAgX3RoaXMkcHJvcHM2LmhhbmRsZUtleURvd247XG4gICAgICAgICAgX3RoaXMkcHJvcHM2Lm9uQ2xpY2s7XG4gICAgICAgICAgX3RoaXMkcHJvcHM2Lm9uS2V5RG93bjtcbiAgICAgICAgICBfdGhpcyRwcm9wczYuY2xpY2tlZDtcbiAgICAgICAgICB2YXIgbGlnaHQgPSBfdGhpcyRwcm9wczYubGlnaHQsXG4gICAgICAgICAgcmVzdCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfdGhpcyRwcm9wczYsIF9leGNsdWRlZDIpO1xuXG4gICAgICB2YXIgY2xhc3NlcyA9IGN4KFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGVcIiksIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWNsaWNrYWJsZVwiKSwgKF9jeDIgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9jeDIsIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWlzLWNsaWNrZWRcIiksIHRoaXMuc3RhdGUuY2xpY2tlZCksIF9kZWZpbmVQcm9wZXJ0eShfY3gyLCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1saWdodFwiKSwgbGlnaHQpLCBfY3gyKSwgY2xhc3NOYW1lKTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChMaW5rLCBfZXh0ZW5kcyh7XG4gICAgICAgIGhyZWY6IGhyZWYsXG4gICAgICAgIGNsYXNzTmFtZTogY2xhc3Nlc1xuICAgICAgfSwgcmVzdCwge1xuICAgICAgICBvbkNsaWNrOiB0aGlzLmhhbmRsZUNsaWNrLFxuICAgICAgICBvbktleURvd246IHRoaXMuaGFuZGxlS2V5RG93blxuICAgICAgfSksIGNoaWxkcmVuKTtcbiAgICB9XG4gIH1dLCBbe1xuICAgIGtleTogXCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHNcIixcbiAgICB2YWx1ZTogLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L3Byb3AtdHlwZXNcbiAgICBmdW5jdGlvbiBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMoX3JlZiwgc3RhdGUpIHtcbiAgICAgIHZhciBjbGlja2VkID0gX3JlZi5jbGlja2VkO1xuICAgICAgdmFyIHByZXZDbGlja2VkID0gc3RhdGUucHJldkNsaWNrZWQ7XG4gICAgICByZXR1cm4gcHJldkNsaWNrZWQgPT09IGNsaWNrZWQgPyBudWxsIDoge1xuICAgICAgICBjbGlja2VkOiBjbGlja2VkLFxuICAgICAgICBwcmV2Q2xpY2tlZDogY2xpY2tlZFxuICAgICAgfTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gQ2xpY2thYmxlVGlsZTtcbn0oQ29tcG9uZW50KTtcblxuX2RlZmluZVByb3BlcnR5KENsaWNrYWJsZVRpbGUsIFwicHJvcFR5cGVzXCIsIHtcbiAgLyoqXG4gICAqIFRoZSBjaGlsZCBub2Rlcy5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcblxuICAvKipcbiAgICogVGhlIENTUyBjbGFzcyBuYW1lcy5cbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogRGVwcmVjYXRlZCBpbiB2MTEuIFVzZSAnb25DbGljaycgaW5zdGVhZC5cbiAgICovXG4gIGhhbmRsZUNsaWNrOiBkZXByZWNhdGUoUHJvcFR5cGVzLmZ1bmMsICdUaGUgaGFuZGxlQ2xpY2sgcHJvcCBmb3IgQ2xpY2thYmxlVGlsZSBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIG9uQ2xpY2suIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLicpLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBmdW5jdGlvbiB0byBydW4gd2hlbiB0aGUgQ2xpY2thYmxlVGlsZSBpcyBpbnRlcmFjdGVkIHdpdGggdmlhIGEga2V5Ym9hcmRcbiAgICovXG4gIGhhbmRsZUtleURvd246IGRlcHJlY2F0ZShQcm9wVHlwZXMuZnVuYywgJ1RoZSBoYW5kbGVLZXlEb3duIHByb3AgZm9yIENsaWNrYWJsZVRpbGUgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBvbktleURvd24uIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLicpLFxuXG4gIC8qKlxuICAgKiBUaGUgaHJlZiBmb3IgdGhlIGxpbmsuXG4gICAqL1xuICBocmVmOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBgdHJ1ZWAgdG8gdXNlIHRoZSBsaWdodCB2ZXJzaW9uLiBGb3IgdXNlIG9uICR1aS0wMSBiYWNrZ3JvdW5kcyBvbmx5LlxuICAgKiBEb24ndCB1c2UgdGhpcyB0byBtYWtlIHRpbGUgYmFja2dyb3VuZCBjb2xvciBzYW1lIGFzIGNvbnRhaW5lciBiYWNrZ3JvdW5kIGNvbG9yLlxuICAgKi9cbiAgbGlnaHQ6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBmdW5jdGlvbiB0byBydW4gd2hlbiB0aGUgQ2xpY2thYmxlVGlsZSBpcyBjbGlja2VkXG4gICAqL1xuICBvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgZnVuY3Rpb24gdG8gcnVuIHdoZW4gdGhlIENsaWNrYWJsZVRpbGUgaXMgaW50ZXJhY3RlZCB3aXRoIHZpYSBhIGtleWJvYXJkXG4gICAqL1xuICBvbktleURvd246IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBUaGUgcmVsIHByb3BlcnR5IGZvciB0aGUgbGluay5cbiAgICovXG4gIHJlbDogUHJvcFR5cGVzLnN0cmluZ1xufSk7XG5cbl9kZWZpbmVQcm9wZXJ0eShDbGlja2FibGVUaWxlLCBcImNvbnRleHRUeXBlXCIsIFByZWZpeENvbnRleHQpO1xuXG5fZGVmaW5lUHJvcGVydHkoQ2xpY2thYmxlVGlsZSwgXCJkZWZhdWx0UHJvcHNcIiwge1xuICBjbGlja2VkOiBmYWxzZSxcbiAgb25DbGljazogZnVuY3Rpb24gb25DbGljaygpIHt9LFxuICBvbktleURvd246IGZ1bmN0aW9uIG9uS2V5RG93bigpIHt9LFxuICBsaWdodDogZmFsc2Vcbn0pO1xuXG5mdW5jdGlvbiBTZWxlY3RhYmxlVGlsZShwcm9wcykge1xuICB2YXIgX2N4MztcblxuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICAgIGlkID0gcHJvcHMuaWQsXG4gICAgICB0YWJJbmRleCA9IHByb3BzLnRhYkluZGV4LFxuICAgICAgdmFsdWUgPSBwcm9wcy52YWx1ZSxcbiAgICAgIG5hbWUgPSBwcm9wcy5uYW1lLFxuICAgICAgdGl0bGUgPSBwcm9wcy50aXRsZTtcbiAgICAgIHByb3BzLmljb25EZXNjcmlwdGlvbjtcbiAgICAgIHZhciBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsXG4gICAgICBoYW5kbGVDbGljayA9IHByb3BzLmhhbmRsZUNsaWNrLFxuICAgICAgaGFuZGxlS2V5RG93biA9IHByb3BzLmhhbmRsZUtleURvd24sXG4gICAgICBvbkNsaWNrID0gcHJvcHMub25DbGljayxcbiAgICAgIG9uQ2hhbmdlID0gcHJvcHMub25DaGFuZ2UsXG4gICAgICBvbktleURvd24gPSBwcm9wcy5vbktleURvd24sXG4gICAgICBsaWdodCA9IHByb3BzLmxpZ2h0LFxuICAgICAgZGlzYWJsZWQgPSBwcm9wcy5kaXNhYmxlZCxcbiAgICAgIHNlbGVjdGVkID0gcHJvcHMuc2VsZWN0ZWQsXG4gICAgICByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHByb3BzLCBfZXhjbHVkZWQzKTtcblxuICB2YXIgcHJlZml4ID0gdXNlUHJlZml4KCk7IC8vIFRPRE86IHJlcGxhY2Ugd2l0aCBvbkNsaWNrIHdoZW4gaGFuZGxlQ2xpY2sgcHJvcCBpcyBkZXByZWNhdGVkXG5cbiAgdmFyIGNsaWNrSGFuZGxlciA9IGhhbmRsZUNsaWNrIHx8IG9uQ2xpY2s7IC8vIFRPRE86IHJlcGxhY2Ugd2l0aCBvbktleURvd24gd2hlbiBoYW5kbGVLZXlEb3duIHByb3AgaXMgZGVwcmVjYXRlZFxuXG4gIHZhciBrZXlEb3duSGFuZGxlciA9IGhhbmRsZUtleURvd24gfHwgb25LZXlEb3duO1xuXG4gIHZhciBfdXNlU3RhdGUgPSB1c2VTdGF0ZShzZWxlY3RlZCksXG4gICAgICBfdXNlU3RhdGUyID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlLCAyKSxcbiAgICAgIGlzU2VsZWN0ZWQgPSBfdXNlU3RhdGUyWzBdLFxuICAgICAgc2V0SXNTZWxlY3RlZCA9IF91c2VTdGF0ZTJbMV07XG5cbiAgdmFyIGlucHV0ID0gdXNlUmVmKG51bGwpO1xuICB2YXIgY2xhc3NlcyA9IGN4KFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGVcIiksIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLXNlbGVjdGFibGVcIiksIChfY3gzID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfY3gzLCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1pcy1zZWxlY3RlZFwiKSwgaXNTZWxlY3RlZCksIF9kZWZpbmVQcm9wZXJ0eShfY3gzLCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1saWdodFwiKSwgbGlnaHQpLCBfZGVmaW5lUHJvcGVydHkoX2N4MywgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0tZGlzYWJsZWRcIiksIGRpc2FibGVkKSwgX2N4MyksIGNsYXNzTmFtZSk7XG4gIHZhciBpbnB1dENsYXNzZXMgPSBjeChcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLWlucHV0XCIpLCBfZGVmaW5lUHJvcGVydHkoe30sIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtaW5wdXQtLWNoZWNrZWRcIiksIGlzU2VsZWN0ZWQpKTsgLy8gVE9ETzogcmVuYW1lIHRvIGhhbmRsZUNsaWNrIHdoZW4gaGFuZGxlQ2xpY2sgcHJvcCBpcyBkZXByZWNhdGVkXG5cbiAgZnVuY3Rpb24gaGFuZGxlT25DbGljayhldnQpIHtcbiAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldnQucGVyc2lzdCgpO1xuICAgIHNldElzU2VsZWN0ZWQoIWlzU2VsZWN0ZWQpO1xuICAgIGNsaWNrSGFuZGxlcihldnQpO1xuICAgIG9uQ2hhbmdlKGV2dCk7XG4gIH0gLy8gVE9ETzogcmVuYW1lIHRvIGhhbmRsZUtleURvd24gd2hlbiBoYW5kbGVLZXlEb3duIHByb3AgaXMgZGVwcmVjYXRlZFxuXG5cbiAgZnVuY3Rpb24gaGFuZGxlT25LZXlEb3duKGV2dCkge1xuICAgIGV2dC5wZXJzaXN0KCk7XG5cbiAgICBpZiAobWF0Y2hlcyhldnQsIFtFbnRlciwgU3BhY2VdKSkge1xuICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBzZXRJc1NlbGVjdGVkKCFpc1NlbGVjdGVkKTtcbiAgICAgIG9uQ2hhbmdlKGV2dCk7XG4gICAgfVxuXG4gICAga2V5RG93bkhhbmRsZXIoZXZ0KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZUNoYW5nZShldmVudCkge1xuICAgIHNldElzU2VsZWN0ZWQoZXZlbnQudGFyZ2V0LmNoZWNrZWQpO1xuICAgIG9uQ2hhbmdlKGV2ZW50KTtcbiAgfVxuXG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgc2V0SXNTZWxlY3RlZChzZWxlY3RlZCk7XG4gIH0sIFtzZWxlY3RlZF0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoUmVhY3RfX2RlZmF1bHQuRnJhZ21lbnQsIG51bGwsIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwge1xuICAgIHJlZjogaW5wdXQsXG4gICAgdGFiSW5kZXg6IC0xLFxuICAgIGlkOiBpZCxcbiAgICBjbGFzc05hbWU6IGlucHV0Q2xhc3NlcyxcbiAgICB2YWx1ZTogdmFsdWUsXG4gICAgb25DaGFuZ2U6ICFkaXNhYmxlZCA/IGhhbmRsZUNoYW5nZSA6IG51bGwsXG4gICAgdHlwZTogXCJjaGVja2JveFwiLFxuICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcbiAgICBuYW1lOiBuYW1lLFxuICAgIHRpdGxlOiB0aXRsZSxcbiAgICBjaGVja2VkOiBpc1NlbGVjdGVkXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImxhYmVsXCIsIF9leHRlbmRzKHtcbiAgICBodG1sRm9yOiBpZCxcbiAgICBjbGFzc05hbWU6IGNsYXNzZXMgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzeC1hMTF5L25vLW5vbmludGVyYWN0aXZlLXRhYmluZGV4XG4gICAgLFxuICAgIHRhYkluZGV4OiAhZGlzYWJsZWQgPyB0YWJJbmRleCA6IG51bGxcbiAgfSwgcmVzdCwge1xuICAgIG9uQ2xpY2s6ICFkaXNhYmxlZCA/IGhhbmRsZU9uQ2xpY2sgOiBudWxsLFxuICAgIG9uS2V5RG93bjogIWRpc2FibGVkID8gaGFuZGxlT25LZXlEb3duIDogbnVsbFxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGVfX2NoZWNrbWFyayBcIikuY29uY2F0KHByZWZpeCwgXCItLXRpbGVfX2NoZWNrbWFyay0tcGVyc2lzdGVudFwiKVxuICB9LCBpc1NlbGVjdGVkID8gX0NoZWNrYm94Q2hlY2tlZEZpbGxlIHx8IChfQ2hlY2tib3hDaGVja2VkRmlsbGUgPSAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChDaGVja2JveENoZWNrZWRGaWxsZWQsIG51bGwpKSA6IF9DaGVja2JveCB8fCAoX0NoZWNrYm94ID0gLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoQ2hlY2tib3gsIG51bGwpKSksIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLWNvbnRlbnRcIilcbiAgfSwgY2hpbGRyZW4pKSk7XG59XG5TZWxlY3RhYmxlVGlsZS5kZWZhdWx0UHJvcHMgPSB7XG4gIHZhbHVlOiAndmFsdWUnLFxuICB0aXRsZTogJ3RpdGxlJyxcbiAgc2VsZWN0ZWQ6IGZhbHNlLFxuICB0YWJJbmRleDogMCxcbiAgbGlnaHQ6IGZhbHNlLFxuICBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKCkge30sXG4gIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSgpIHt9LFxuICBvbktleURvd246IGZ1bmN0aW9uIG9uS2V5RG93bigpIHt9XG59O1xuU2VsZWN0YWJsZVRpbGUucHJvcFR5cGVzID0ge1xuICAvKipcbiAgICogVGhlIGNoaWxkIG5vZGVzLlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuXG4gIC8qKlxuICAgKiBUaGUgQ1NTIGNsYXNzIG5hbWVzLlxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHdoZXRoZXIgdGhlIFNlbGVjdGFibGVUaWxlIHNob3VsZCBiZSBkaXNhYmxlZFxuICAgKi9cbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBmdW5jdGlvbiB0byBydW4gd2hlbiB0aGUgU2VsZWN0YWJsZVRpbGUgaXMgY2xpY2tlZFxuICAgKi9cbiAgaGFuZGxlQ2xpY2s6IGRlcHJlY2F0ZShQcm9wVHlwZXMuZnVuYywgJ1RoZSBgaGFuZGxlQ2xpY2tgIHByb3AgZm9yIGBTZWxlY3RhYmxlVGlsZWAgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBgb25DbGlja2AuIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLicpLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBmdW5jdGlvbiB0byBydW4gd2hlbiB0aGUgU2VsZWN0YWJsZVRpbGUgaXMgaW50ZXJhY3RlZCB3aXRoIHZpYSBhIGtleWJvYXJkXG4gICAqL1xuICBoYW5kbGVLZXlEb3duOiBkZXByZWNhdGUoUHJvcFR5cGVzLmZ1bmMsICdUaGUgYGhhbmRsZUtleURvd25gIHByb3AgZm9yIGBTZWxlY3RhYmxlVGlsZWAgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBgb25LZXlEb3duYC4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuJyksXG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgY2hlY2ttYXJrIGljb24uXG4gICAqL1xuICBpY29uRGVzY3JpcHRpb246IGRlcHJlY2F0ZShQcm9wVHlwZXMuc3RyaW5nLCAnVGhlIGBpY29uRGVzY3JpcHRpb25gIHByb3AgZm9yIGBTZWxlY3RhYmxlVGlsZWAgaXMgbm8gbG9uZ2VyIG5lZWRlZCBhbmQgaGFzICcgKyAnYmVlbiBkZXByZWNhdGVkLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZS4nKSxcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBgPGlucHV0PmAuXG4gICAqL1xuICBpZDogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogYHRydWVgIHRvIHVzZSB0aGUgbGlnaHQgdmVyc2lvbi4gRm9yIHVzZSBvbiAkdWktMDEgYmFja2dyb3VuZHMgb25seS5cbiAgICogRG9uJ3QgdXNlIHRoaXMgdG8gbWFrZSB0aWxlIGJhY2tncm91bmQgY29sb3Igc2FtZSBhcyBjb250YWluZXIgYmFja2dyb3VuZCBjb2xvci5cbiAgICovXG4gIGxpZ2h0OiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogVGhlIGBuYW1lYCBvZiB0aGUgYDxpbnB1dD5gLlxuICAgKi9cbiAgbmFtZTogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogVGhlIGVtcHR5IGhhbmRsZXIgb2YgdGhlIGA8aW5wdXQ+YC5cbiAgICovXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgZnVuY3Rpb24gdG8gcnVuIHdoZW4gdGhlIFNlbGVjdGFibGVUaWxlIGlzIGNsaWNrZWRcbiAgICovXG4gIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBmdW5jdGlvbiB0byBydW4gd2hlbiB0aGUgU2VsZWN0YWJsZVRpbGUgaXMgaW50ZXJhY3RlZCB3aXRoIHZpYSBhIGtleWJvYXJkXG4gICAqL1xuICBvbktleURvd246IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBgdHJ1ZWAgdG8gc2VsZWN0IHRoaXMgdGlsZS5cbiAgICovXG4gIHNlbGVjdGVkOiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgdGFiIGluZGV4IG9mIHRoZSB3cmFwcGVyIGVsZW1lbnRcbiAgICovXG4gIHRhYkluZGV4OiBQcm9wVHlwZXMubnVtYmVyLFxuXG4gIC8qKlxuICAgKiBUaGUgYHRpdGxlYCBvZiB0aGUgYDxpbnB1dD5gLlxuICAgKi9cbiAgdGl0bGU6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBvZiB0aGUgYDxpbnB1dD5gLlxuICAgKi9cbiAgdmFsdWU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5udW1iZXJdKS5pc1JlcXVpcmVkXG59O1xudmFyIEV4cGFuZGFibGVUaWxlID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50Mykge1xuICBfaW5oZXJpdHMoRXhwYW5kYWJsZVRpbGUsIF9Db21wb25lbnQzKTtcblxuICB2YXIgX3N1cGVyMyA9IF9jcmVhdGVTdXBlcihFeHBhbmRhYmxlVGlsZSk7XG5cbiAgZnVuY3Rpb24gRXhwYW5kYWJsZVRpbGUoKSB7XG4gICAgdmFyIF90aGlzMjtcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBFeHBhbmRhYmxlVGlsZSk7XG5cbiAgICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbjIpLCBfa2V5MiA9IDA7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICAgIGFyZ3NbX2tleTJdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgICB9XG5cbiAgICBfdGhpczIgPSBfc3VwZXIzLmNhbGwuYXBwbHkoX3N1cGVyMywgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpczIpLCBcInN0YXRlXCIsIHt9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwicmVzaXplT2JzZXJ2ZXJcIiwgbnVsbCk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpczIpLCBcImNvbXBvbmVudERpZE1vdW50XCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzMi5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihmdW5jdGlvbiAoZW50cmllcykge1xuICAgICAgICB2YXIgX2VudHJpZXMgPSBfc2xpY2VkVG9BcnJheShlbnRyaWVzLCAxKSxcbiAgICAgICAgICAgIGFib3ZlVGhlRm9sZCA9IF9lbnRyaWVzWzBdO1xuXG4gICAgICAgIF90aGlzMi5zZXRTdGF0ZSh7XG4gICAgICAgICAgdGlsZU1heEhlaWdodDogYWJvdmVUaGVGb2xkLmNvbnRlbnRSZWN0LmhlaWdodFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoX3RoaXMyLnRpbGUpIHtcbiAgICAgICAgdmFyIGdldFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoX3RoaXMyLnRpbGUsIG51bGwpO1xuXG4gICAgICAgIGlmIChfdGhpczIuYWJvdmVUaGVGb2xkKSB7XG4gICAgICAgICAgX3RoaXMyLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUoX3RoaXMyLmFib3ZlVGhlRm9sZCk7XG5cbiAgICAgICAgICBfdGhpczIuc2V0U3RhdGUoe1xuICAgICAgICAgICAgdGlsZU1heEhlaWdodDogX3RoaXMyLmFib3ZlVGhlRm9sZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQsXG4gICAgICAgICAgICB0aWxlUGFkZGluZzogcGFyc2VJbnQoZ2V0U3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgncGFkZGluZy10b3AnKSwgMTApICsgcGFyc2VJbnQoZ2V0U3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgncGFkZGluZy1ib3R0b20nKSwgMTApXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwiY29tcG9uZW50RGlkVXBkYXRlXCIsIGZ1bmN0aW9uIChwcmV2UHJvcHMpIHtcbiAgICAgIGlmIChwcmV2UHJvcHMuZXhwYW5kZWQgIT09IF90aGlzMi5wcm9wcy5leHBhbmRlZCkge1xuICAgICAgICBfdGhpczIuc2V0TWF4SGVpZ2h0KCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpczIpLCBcInNldE1heEhlaWdodFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoX3RoaXMyLnN0YXRlLmV4cGFuZGVkID8gX3RoaXMyLnRpbGVDb250ZW50IDogX3RoaXMyLmFib3ZlVGhlRm9sZCkge1xuICAgICAgICBfdGhpczIuc2V0U3RhdGUoe1xuICAgICAgICAgIHRpbGVNYXhIZWlnaHQ6IF90aGlzMi5zdGF0ZS5leHBhbmRlZCA/IF90aGlzMi50aWxlQ29udGVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQgOiBfdGhpczIuYWJvdmVUaGVGb2xkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwiaGFuZGxlQ2xpY2tcIiwgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgaWYgKCFfdGhpczIucHJvcHMub25CZWZvcmVDbGljayhldnQpIHx8IGV2dC50YXJnZXQudGFnTmFtZSA9PT0gJ0lOUFVUJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGV2dC5wZXJzaXN0KCk7XG5cbiAgICAgIF90aGlzMi5zZXRTdGF0ZSh7XG4gICAgICAgIGV4cGFuZGVkOiAhX3RoaXMyLnN0YXRlLmV4cGFuZGVkXG4gICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpczIkcHJvcHMkaGFuZGxlQ2wsIF90aGlzMiRwcm9wcywgX3RoaXMyJHByb3BzJG9uQ2xpY2ssIF90aGlzMiRwcm9wczI7XG5cbiAgICAgICAgX3RoaXMyLnNldE1heEhlaWdodCgpOyAvLyBUT0RPOiBSZW1vdmUgaGFuZGxlQ2xpY2sgcHJvcCB3aGVuIGhhbmRsZUNsaWNrIGlzIGRlcHJlY2F0ZWRcblxuXG4gICAgICAgICgoX3RoaXMyJHByb3BzJGhhbmRsZUNsID0gKF90aGlzMiRwcm9wcyA9IF90aGlzMi5wcm9wcykuaGFuZGxlQ2xpY2spID09PSBudWxsIHx8IF90aGlzMiRwcm9wcyRoYW5kbGVDbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMyJHByb3BzJGhhbmRsZUNsLmNhbGwoX3RoaXMyJHByb3BzLCBldnQpKSB8fCAoKF90aGlzMiRwcm9wcyRvbkNsaWNrID0gKF90aGlzMiRwcm9wczIgPSBfdGhpczIucHJvcHMpLm9uQ2xpY2spID09PSBudWxsIHx8IF90aGlzMiRwcm9wcyRvbkNsaWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpczIkcHJvcHMkb25DbGljay5jYWxsKF90aGlzMiRwcm9wczIsIGV2dCkpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpczIpLCBcImhhbmRsZUtleVVwXCIsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIGlmIChldnQudGFyZ2V0ICE9PSBfdGhpczIudGlsZSkge1xuICAgICAgICBpZiAobWF0Y2hlcyhldnQsIFtFbnRlciwgU3BhY2VdKSkge1xuICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpczIpLCBcImdldENoaWxkcmVuXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBSZWFjdF9fZGVmYXVsdC5DaGlsZHJlbi50b0FycmF5KF90aGlzMi5wcm9wcy5jaGlsZHJlbik7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gX3RoaXMyO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKEV4cGFuZGFibGVUaWxlLCBbe1xuICAgIGtleTogXCJjb21wb25lbnRXaWxsVW5tb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgIGlmICh0aGlzLnJlc2l6ZU9ic2VydmVyKSB7XG4gICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIF9jeDUsXG4gICAgICAgICAgX3RoaXMzID0gdGhpcztcblxuICAgICAgdmFyIF90aGlzJHByb3BzNyA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgdGFiSW5kZXggPSBfdGhpcyRwcm9wczcudGFiSW5kZXgsXG4gICAgICAgICAgY2xhc3NOYW1lID0gX3RoaXMkcHJvcHM3LmNsYXNzTmFtZTtcbiAgICAgICAgICBfdGhpcyRwcm9wczcuZXhwYW5kZWQ7XG4gICAgICAgICAgX3RoaXMkcHJvcHM3LnRpbGVNYXhIZWlnaHQ7XG4gICAgICAgICAgX3RoaXMkcHJvcHM3LnRpbGVQYWRkaW5nO1xuICAgICAgICAgIF90aGlzJHByb3BzNy5oYW5kbGVDbGljaztcbiAgICAgICAgICB2YXIgb25LZXlVcCA9IF90aGlzJHByb3BzNy5vbktleVVwLFxuICAgICAgICAgIHRpbGVDb2xsYXBzZWRJY29uVGV4dCA9IF90aGlzJHByb3BzNy50aWxlQ29sbGFwc2VkSWNvblRleHQsXG4gICAgICAgICAgdGlsZUV4cGFuZGVkSWNvblRleHQgPSBfdGhpcyRwcm9wczcudGlsZUV4cGFuZGVkSWNvblRleHQsXG4gICAgICAgICAgdGlsZUNvbGxhcHNlZExhYmVsID0gX3RoaXMkcHJvcHM3LnRpbGVDb2xsYXBzZWRMYWJlbCxcbiAgICAgICAgICB0aWxlRXhwYW5kZWRMYWJlbCA9IF90aGlzJHByb3BzNy50aWxlRXhwYW5kZWRMYWJlbDtcbiAgICAgICAgICBfdGhpcyRwcm9wczcub25CZWZvcmVDbGljaztcbiAgICAgICAgICB2YXIgbGlnaHQgPSBfdGhpcyRwcm9wczcubGlnaHQsXG4gICAgICAgICAgcmVzdCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfdGhpcyRwcm9wczcsIF9leGNsdWRlZDQpO1xuXG4gICAgICB2YXIgcHJlZml4ID0gdGhpcy5jb250ZXh0O1xuICAgICAgdmFyIGlzRXhwYW5kZWQgPSB0aGlzLnN0YXRlLmV4cGFuZGVkO1xuICAgICAgdmFyIGNsYXNzZXMgPSBjeChcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlXCIpLCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1leHBhbmRhYmxlXCIpLCAoX2N4NSA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2N4NSwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0taXMtZXhwYW5kZWRcIiksIGlzRXhwYW5kZWQpLCBfZGVmaW5lUHJvcGVydHkoX2N4NSwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0tbGlnaHRcIiksIGxpZ2h0KSwgX2N4NSksIGNsYXNzTmFtZSk7XG4gICAgICB2YXIgdGlsZVN0eWxlID0ge1xuICAgICAgICBtYXhIZWlnaHQ6IGlzRXhwYW5kZWQgPyBudWxsIDogdGhpcy5zdGF0ZS50aWxlTWF4SGVpZ2h0ICsgdGhpcy5zdGF0ZS50aWxlUGFkZGluZ1xuICAgICAgfTtcbiAgICAgIHZhciBjaGlsZHJlbkFzQXJyYXkgPSB0aGlzLmdldENoaWxkcmVuKCk7XG4gICAgICByZXR1cm4gKFxuICAgICAgICAvKiNfX1BVUkVfXyovXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzLGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9uc1xuICAgICAgICBSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIsIF9leHRlbmRzKHtcbiAgICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICAgIHJlZjogZnVuY3Rpb24gcmVmKHRpbGUpIHtcbiAgICAgICAgICAgIF90aGlzMy50aWxlID0gdGlsZTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHN0eWxlOiB0aWxlU3R5bGUsXG4gICAgICAgICAgY2xhc3NOYW1lOiBjbGFzc2VzLFxuICAgICAgICAgIFwiYXJpYS1leHBhbmRlZFwiOiBpc0V4cGFuZGVkLFxuICAgICAgICAgIHRpdGxlOiBpc0V4cGFuZGVkID8gdGlsZUV4cGFuZGVkSWNvblRleHQgOiB0aWxlQ29sbGFwc2VkSWNvblRleHRcbiAgICAgICAgfSwgcmVzdCwge1xuICAgICAgICAgIG9uS2V5VXA6IGNvbXBvc2VFdmVudEhhbmRsZXJzKFtvbktleVVwLCB0aGlzLmhhbmRsZUtleVVwXSksXG4gICAgICAgICAgb25DbGljazogdGhpcy5oYW5kbGVDbGljayxcbiAgICAgICAgICB0YWJJbmRleDogdGFiSW5kZXhcbiAgICAgICAgfSksIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgICAgICByZWY6IGZ1bmN0aW9uIHJlZih0aWxlQ29udGVudCkge1xuICAgICAgICAgICAgX3RoaXMzLnRpbGVDb250ZW50ID0gdGlsZUNvbnRlbnQ7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgICAgcmVmOiBmdW5jdGlvbiByZWYoYWJvdmVUaGVGb2xkKSB7XG4gICAgICAgICAgICBfdGhpczMuYWJvdmVUaGVGb2xkID0gYWJvdmVUaGVGb2xkO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLWNvbnRlbnRcIilcbiAgICAgICAgfSwgY2hpbGRyZW5Bc0FycmF5WzBdKSwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZV9fY2hldnJvblwiKVxuICAgICAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgbnVsbCwgaXNFeHBhbmRlZCA/IHRpbGVFeHBhbmRlZExhYmVsIDogdGlsZUNvbGxhcHNlZExhYmVsKSwgX0NoZXZyb25Eb3duIHx8IChfQ2hldnJvbkRvd24gPSAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChDaGV2cm9uRG93biwgbnVsbCkpKSwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS1jb250ZW50XCIpXG4gICAgICAgIH0sIGNoaWxkcmVuQXNBcnJheVsxXSkpKVxuICAgICAgKTtcbiAgICB9XG4gIH1dLCBbe1xuICAgIGtleTogXCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKCAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvcHJvcC10eXBlc1xuICAgIF9yZWYyLCBzdGF0ZSkge1xuICAgICAgdmFyIGV4cGFuZGVkID0gX3JlZjIuZXhwYW5kZWQsXG4gICAgICAgICAgdGlsZU1heEhlaWdodCA9IF9yZWYyLnRpbGVNYXhIZWlnaHQsXG4gICAgICAgICAgdGlsZVBhZGRpbmcgPSBfcmVmMi50aWxlUGFkZGluZztcbiAgICAgIHZhciBwcmV2RXhwYW5kZWQgPSBzdGF0ZS5wcmV2RXhwYW5kZWQsXG4gICAgICAgICAgcHJldlRpbGVNYXhIZWlnaHQgPSBzdGF0ZS5wcmV2VGlsZU1heEhlaWdodCxcbiAgICAgICAgICBwcmV2VGlsZVBhZGRpbmcgPSBzdGF0ZS5wcmV2VGlsZVBhZGRpbmcsXG4gICAgICAgICAgY3VycmVudEV4cGFuZGVkID0gc3RhdGUuZXhwYW5kZWQsXG4gICAgICAgICAgY3VycmVudFRpbGVNYXhIZWlnaHQgPSBzdGF0ZS50aWxlTWF4SGVpZ2h0LFxuICAgICAgICAgIGN1cnJlbnRUaWxlUGFkZGluZyA9IHN0YXRlLnRpbGVQYWRkaW5nO1xuICAgICAgdmFyIGV4cGFuZGVkQ2hhbmdlZCA9IHByZXZFeHBhbmRlZCAhPT0gZXhwYW5kZWQ7XG4gICAgICB2YXIgdGlsZU1heEhlaWdodENoYW5nZWQgPSBwcmV2VGlsZU1heEhlaWdodCAhPT0gdGlsZU1heEhlaWdodDtcbiAgICAgIHZhciB0aWxlUGFkZGluZ0NoYW5nZWQgPSBwcmV2VGlsZVBhZGRpbmcgIT09IHRpbGVQYWRkaW5nO1xuICAgICAgcmV0dXJuICFleHBhbmRlZENoYW5nZWQgJiYgIXRpbGVNYXhIZWlnaHRDaGFuZ2VkICYmICF0aWxlUGFkZGluZ0NoYW5nZWQgPyBudWxsIDoge1xuICAgICAgICBleHBhbmRlZDogIWV4cGFuZGVkQ2hhbmdlZCA/IGN1cnJlbnRFeHBhbmRlZCA6IGV4cGFuZGVkLFxuICAgICAgICB0aWxlTWF4SGVpZ2h0OiAhdGlsZU1heEhlaWdodENoYW5nZWQgPyBjdXJyZW50VGlsZU1heEhlaWdodCA6IHRpbGVNYXhIZWlnaHQsXG4gICAgICAgIHRpbGVQYWRkaW5nOiAhdGlsZVBhZGRpbmdDaGFuZ2VkID8gY3VycmVudFRpbGVQYWRkaW5nIDogdGlsZVBhZGRpbmcsXG4gICAgICAgIHByZXZFeHBhbmRlZDogZXhwYW5kZWQsXG4gICAgICAgIHByZXZUaWxlTWF4SGVpZ2h0OiB0aWxlTWF4SGVpZ2h0LFxuICAgICAgICBwcmV2VGlsZVBhZGRpbmc6IHRpbGVQYWRkaW5nXG4gICAgICB9O1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBFeHBhbmRhYmxlVGlsZTtcbn0oQ29tcG9uZW50KTtcblxuX2RlZmluZVByb3BlcnR5KEV4cGFuZGFibGVUaWxlLCBcInByb3BUeXBlc1wiLCB7XG4gIC8qKlxuICAgKiBUaGUgY2hpbGQgbm9kZXMuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG5cbiAgLyoqXG4gICAqIFRoZSBDU1MgY2xhc3MgbmFtZXMuXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIGB0cnVlYCBpZiB0aGUgdGlsZSBpcyBleHBhbmRlZC5cbiAgICovXG4gIGV4cGFuZGVkOiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogRGVwcmVjYXRlZCBpbiB2MTEuIFVzZSAnb25DbGljaycgaW5zdGVhZC5cbiAgICovXG4gIGhhbmRsZUNsaWNrOiBkZXByZWNhdGUoUHJvcFR5cGVzLmZ1bmMsICdUaGUgaGFuZGxlQ2xpY2sgcHJvcCBmb3IgRXhwYW5kYWJsZVRpbGUgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBvbkNsaWNrLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZS4nKSxcblxuICAvKipcbiAgICogQW4gSUQgdGhhdCBjYW4gYmUgcHJvdmlkZWQgdG8gYXJpYS1sYWJlbGxlZGJ5XG4gICAqL1xuICBpZDogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogYHRydWVgIHRvIHVzZSB0aGUgbGlnaHQgdmVyc2lvbi4gRm9yIHVzZSBvbiAkdWktMDEgYmFja2dyb3VuZHMgb25seS5cbiAgICogRG9uJ3QgdXNlIHRoaXMgdG8gbWFrZSB0aWxlIGJhY2tncm91bmQgY29sb3Igc2FtZSBhcyBjb250YWluZXIgYmFja2dyb3VuZCBjb2xvci5cbiAgICovXG4gIGxpZ2h0OiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogb3B0aW9uYWwgaGFuZGxlciB0byBkZWNpZGUgd2hldGhlciB0byBpZ25vcmUgYSBjbGljay4gcmV0dXJucyBmYWxzZSBpZiBjbGljayBzaG91bGQgYmUgaWdub3JlZFxuICAgKi9cbiAgb25CZWZvcmVDbGljazogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGZ1bmN0aW9uIHRvIHJ1biB3aGVuIHRoZSBFeHBhbmRhYmxlVGlsZSBpcyBjbGlja2VkXG4gICAgKi9cbiAgb25DbGljazogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIG9wdGlvbmFsIGhhbmRsZXIgdG8gdHJpZ2dlciBhIGZ1bmN0aW9uIHdoZW4gYSBrZXkgaXMgcHJlc3NlZFxuICAgKi9cbiAgb25LZXlVcDogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIFRoZSBgdGFiaW5kZXhgIGF0dHJpYnV0ZS5cbiAgICovXG4gIHRhYkluZGV4OiBQcm9wVHlwZXMubnVtYmVyLFxuXG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIFwiY29sbGFwc2VkXCIgaWNvbiB0aGF0IGNhbiBiZSByZWFkIGJ5IHNjcmVlbiByZWFkZXJzLlxuICAgKi9cbiAgdGlsZUNvbGxhcHNlZEljb25UZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBXaGVuIFwiY29sbGFwc2VkXCIsIGEgbGFiZWwgdG8gYXBwZWFyIG5leHQgdG8gdGhlIGNoZXZyb24gKGUuZy4sIFwiVmlldyBtb3JlXCIpLlxuICAgKi9cbiAgdGlsZUNvbGxhcHNlZExhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIFwiZXhwYW5kZWRcIiBpY29uIHRoYXQgY2FuIGJlIHJlYWQgYnkgc2NyZWVuIHJlYWRlcnMuXG4gICAqL1xuICB0aWxlRXhwYW5kZWRJY29uVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogV2hlbiBcImV4cGFuZGVkXCIsIGEgbGFiZWwgdG8gYXBwZWFyIG5leHQgdG8gdGhlIGNoZXZyb24gKGUuZy4sIFwiVmlldyBsZXNzXCIpLlxuICAgKi9cbiAgdGlsZUV4cGFuZGVkTGFiZWw6IFByb3BUeXBlcy5zdHJpbmdcbn0pO1xuXG5fZGVmaW5lUHJvcGVydHkoRXhwYW5kYWJsZVRpbGUsIFwiY29udGV4dFR5cGVcIiwgUHJlZml4Q29udGV4dCk7XG5cbl9kZWZpbmVQcm9wZXJ0eShFeHBhbmRhYmxlVGlsZSwgXCJkZWZhdWx0UHJvcHNcIiwge1xuICB0YWJJbmRleDogMCxcbiAgZXhwYW5kZWQ6IGZhbHNlLFxuICB0aWxlTWF4SGVpZ2h0OiAwLFxuICB0aWxlUGFkZGluZzogMCxcbiAgb25CZWZvcmVDbGljazogZnVuY3Rpb24gb25CZWZvcmVDbGljaygpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcbiAgb25DbGljazogZnVuY3Rpb24gb25DbGljaygpIHt9LFxuICB0aWxlQ29sbGFwc2VkSWNvblRleHQ6ICdJbnRlcmFjdCB0byBleHBhbmQgVGlsZScsXG4gIHRpbGVFeHBhbmRlZEljb25UZXh0OiAnSW50ZXJhY3QgdG8gY29sbGFwc2UgVGlsZScsXG4gIGxpZ2h0OiBmYWxzZVxufSk7XG5cbnZhciBUaWxlQWJvdmVUaGVGb2xkQ29udGVudCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudDQpIHtcbiAgX2luaGVyaXRzKFRpbGVBYm92ZVRoZUZvbGRDb250ZW50LCBfQ29tcG9uZW50NCk7XG5cbiAgdmFyIF9zdXBlcjQgPSBfY3JlYXRlU3VwZXIoVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQpO1xuXG4gIGZ1bmN0aW9uIFRpbGVBYm92ZVRoZUZvbGRDb250ZW50KCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBUaWxlQWJvdmVUaGVGb2xkQ29udGVudCk7XG5cbiAgICByZXR1cm4gX3N1cGVyNC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFRpbGVBYm92ZVRoZUZvbGRDb250ZW50LCBbe1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIHByZWZpeCA9IHRoaXMuY29udGV4dDtcbiAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMucHJvcHMuY2hpbGRyZW47XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLWNvbnRlbnRfX2Fib3ZlLXRoZS1mb2xkXCIpXG4gICAgICB9LCBjaGlsZHJlbik7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFRpbGVBYm92ZVRoZUZvbGRDb250ZW50O1xufShDb21wb25lbnQpO1xuXG5fZGVmaW5lUHJvcGVydHkoVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQsIFwicHJvcFR5cGVzXCIsIHtcbiAgLyoqXG4gICAqIFRoZSBjaGlsZCBub2Rlcy5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZVxufSk7XG5cbl9kZWZpbmVQcm9wZXJ0eShUaWxlQWJvdmVUaGVGb2xkQ29udGVudCwgXCJjb250ZXh0VHlwZVwiLCBQcmVmaXhDb250ZXh0KTtcblxudmFyIFRpbGVCZWxvd1RoZUZvbGRDb250ZW50ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50NSkge1xuICBfaW5oZXJpdHMoVGlsZUJlbG93VGhlRm9sZENvbnRlbnQsIF9Db21wb25lbnQ1KTtcblxuICB2YXIgX3N1cGVyNSA9IF9jcmVhdGVTdXBlcihUaWxlQmVsb3dUaGVGb2xkQ29udGVudCk7XG5cbiAgZnVuY3Rpb24gVGlsZUJlbG93VGhlRm9sZENvbnRlbnQoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFRpbGVCZWxvd1RoZUZvbGRDb250ZW50KTtcblxuICAgIHJldHVybiBfc3VwZXI1LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoVGlsZUJlbG93VGhlRm9sZENvbnRlbnQsIFt7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLnByb3BzLmNoaWxkcmVuO1xuICAgICAgdmFyIHByZWZpeCA9IHRoaXMuY29udGV4dDtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtY29udGVudF9fYmVsb3ctdGhlLWZvbGRcIilcbiAgICAgIH0sIGNoaWxkcmVuKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gVGlsZUJlbG93VGhlRm9sZENvbnRlbnQ7XG59KENvbXBvbmVudCk7XG5cbl9kZWZpbmVQcm9wZXJ0eShUaWxlQmVsb3dUaGVGb2xkQ29udGVudCwgXCJwcm9wVHlwZXNcIiwge1xuICAvKipcbiAgICogVGhlIGNoaWxkIG5vZGVzLlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlXG59KTtcblxuX2RlZmluZVByb3BlcnR5KFRpbGVCZWxvd1RoZUZvbGRDb250ZW50LCBcImNvbnRleHRUeXBlXCIsIFByZWZpeENvbnRleHQpO1xuXG5leHBvcnQgeyBDbGlja2FibGVUaWxlLCBFeHBhbmRhYmxlVGlsZSwgU2VsZWN0YWJsZVRpbGUsIFRpbGUsIFRpbGVBYm92ZVRoZUZvbGRDb250ZW50LCBUaWxlQmVsb3dUaGVGb2xkQ29udGVudCB9O1xuIl0sIm5hbWVzIjpbImluaGVyaXRzIiwiX2luaGVyaXRzIiwiY3JlYXRlU3VwZXIiLCJfY3JlYXRlU3VwZXIiLCJjbGFzc0NhbGxDaGVjayIsIl9jbGFzc0NhbGxDaGVjayIsImNyZWF0ZUNsYXNzIiwiX2NyZWF0ZUNsYXNzIiwib2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl9kZWZpbmVQcm9wZXJ0eSIsImV4dGVuZHMiLCJfZXh0ZW5kcyIsImFzc2VydFRoaXNJbml0aWFsaXplZCIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJzbGljZWRUb0FycmF5IiwiX3NsaWNlZFRvQXJyYXkiLCJSZWFjdF9fZGVmYXVsdCIsIkNvbXBvbmVudCIsInVzZVN0YXRlIiwidXNlUmVmIiwidXNlRWZmZWN0IiwiUHJvcFR5cGVzIiwiY3giLCJMaW5rIiwiQ2hlY2tib3hDaGVja2VkRmlsbGVkIiwiQ2hlY2tib3giLCJDaGV2cm9uRG93biIsImRlcHJlY2F0ZSIsImNvbXBvc2VFdmVudEhhbmRsZXJzIiwiUHJlZml4Q29udGV4dCIsInVzZVByZWZpeCIsIm1hdGNoZXMiLCJFbnRlciIsIlNwYWNlIiwiX0NoZWNrYm94Q2hlY2tlZEZpbGxlIiwiX0NoZWNrYm94IiwiX0NoZXZyb25Eb3duIiwiX2V4Y2x1ZGVkIiwiX2V4Y2x1ZGVkMiIsIl9leGNsdWRlZDMiLCJfZXhjbHVkZWQ0IiwiVGlsZSIsIl9Db21wb25lbnQiLCJfc3VwZXIiLCJhcHBseSIsImFyZ3VtZW50cyIsImtleSIsInZhbHVlIiwicmVuZGVyIiwicHJlZml4IiwiY29udGV4dCIsIl90aGlzJHByb3BzIiwicHJvcHMiLCJjaGlsZHJlbiIsImNsYXNzTmFtZSIsImxpZ2h0IiwicmVzdCIsInRpbGVDbGFzc2VzIiwiY29uY2F0IiwiY3JlYXRlRWxlbWVudCIsIm5vZGUiLCJzdHJpbmciLCJib29sIiwiQ2xpY2thYmxlVGlsZSIsIl9Db21wb25lbnQyIiwiX3N1cGVyMiIsIl90aGlzIiwiX2xlbiIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJjYWxsIiwiZXZ0IiwicGVyc2lzdCIsInNldFN0YXRlIiwiY2xpY2tlZCIsInN0YXRlIiwiX3RoaXMkcHJvcHMkaGFuZGxlQ2xpIiwiX3RoaXMkcHJvcHMyIiwiX3RoaXMkcHJvcHMkb25DbGljayIsIl90aGlzJHByb3BzMyIsImhhbmRsZUNsaWNrIiwib25DbGljayIsIl90aGlzJHByb3BzJGhhbmRsZUtleSIsIl90aGlzJHByb3BzNCIsImhhbmRsZUtleURvd24iLCJvbktleURvd24iLCJfdGhpcyRwcm9wcyRoYW5kbGVLZXkyIiwiX3RoaXMkcHJvcHM1IiwiX2N4MiIsIl90aGlzJHByb3BzNiIsImhyZWYiLCJjbGFzc2VzIiwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIiwiX3JlZiIsInByZXZDbGlja2VkIiwiZnVuYyIsInJlbCIsIlNlbGVjdGFibGVUaWxlIiwiaGFuZGxlT25DbGljayIsInByZXZlbnREZWZhdWx0Iiwic2V0SXNTZWxlY3RlZCIsImlzU2VsZWN0ZWQiLCJjbGlja0hhbmRsZXIiLCJvbkNoYW5nZSIsImhhbmRsZU9uS2V5RG93biIsImtleURvd25IYW5kbGVyIiwiaGFuZGxlQ2hhbmdlIiwiZXZlbnQiLCJ0YXJnZXQiLCJjaGVja2VkIiwiX2N4MyIsImlkIiwidGFiSW5kZXgiLCJuYW1lIiwidGl0bGUiLCJpY29uRGVzY3JpcHRpb24iLCJkaXNhYmxlZCIsInNlbGVjdGVkIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsImlucHV0IiwiaW5wdXRDbGFzc2VzIiwiRnJhZ21lbnQiLCJyZWYiLCJ0eXBlIiwiaHRtbEZvciIsImRlZmF1bHRQcm9wcyIsInByb3BUeXBlcyIsIm51bWJlciIsIm9uZU9mVHlwZSIsImlzUmVxdWlyZWQiLCJFeHBhbmRhYmxlVGlsZSIsIl9Db21wb25lbnQzIiwiX3N1cGVyMyIsIl90aGlzMiIsIl9sZW4yIiwiX2tleTIiLCJyZXNpemVPYnNlcnZlciIsIlJlc2l6ZU9ic2VydmVyIiwiZW50cmllcyIsIl9lbnRyaWVzIiwiYWJvdmVUaGVGb2xkIiwidGlsZU1heEhlaWdodCIsImNvbnRlbnRSZWN0IiwiaGVpZ2h0IiwidGlsZSIsImdldFN0eWxlIiwid2luZG93IiwiZ2V0Q29tcHV0ZWRTdHlsZSIsIm9ic2VydmUiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ0aWxlUGFkZGluZyIsInBhcnNlSW50IiwiZ2V0UHJvcGVydHlWYWx1ZSIsInByZXZQcm9wcyIsImV4cGFuZGVkIiwic2V0TWF4SGVpZ2h0IiwidGlsZUNvbnRlbnQiLCJvbkJlZm9yZUNsaWNrIiwidGFnTmFtZSIsIl90aGlzMiRwcm9wcyRoYW5kbGVDbCIsIl90aGlzMiRwcm9wcyIsIl90aGlzMiRwcm9wcyRvbkNsaWNrIiwiX3RoaXMyJHByb3BzMiIsIkNoaWxkcmVuIiwidG9BcnJheSIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwiZGlzY29ubmVjdCIsIl9jeDUiLCJfdGhpczMiLCJfdGhpcyRwcm9wczciLCJvbktleVVwIiwidGlsZUNvbGxhcHNlZEljb25UZXh0IiwidGlsZUV4cGFuZGVkSWNvblRleHQiLCJ0aWxlQ29sbGFwc2VkTGFiZWwiLCJ0aWxlRXhwYW5kZWRMYWJlbCIsImlzRXhwYW5kZWQiLCJ0aWxlU3R5bGUiLCJtYXhIZWlnaHQiLCJjaGlsZHJlbkFzQXJyYXkiLCJnZXRDaGlsZHJlbiIsInN0eWxlIiwiaGFuZGxlS2V5VXAiLCJfcmVmMiIsInByZXZFeHBhbmRlZCIsInByZXZUaWxlTWF4SGVpZ2h0IiwicHJldlRpbGVQYWRkaW5nIiwiY3VycmVudEV4cGFuZGVkIiwiY3VycmVudFRpbGVNYXhIZWlnaHQiLCJjdXJyZW50VGlsZVBhZGRpbmciLCJleHBhbmRlZENoYW5nZWQiLCJ0aWxlTWF4SGVpZ2h0Q2hhbmdlZCIsInRpbGVQYWRkaW5nQ2hhbmdlZCIsIlRpbGVBYm92ZVRoZUZvbGRDb250ZW50IiwiX0NvbXBvbmVudDQiLCJfc3VwZXI0IiwiVGlsZUJlbG93VGhlRm9sZENvbnRlbnQiLCJfQ29tcG9uZW50NSIsIl9zdXBlcjUiXSwic291cmNlUm9vdCI6IiJ9\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.5.1-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.5.1-pre.798-20230615\";\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.5.1-pre.
|
|
11945
|
-
/******/ register("@openmrs/esm-framework", "4.5.1-pre.
|
|
11944
|
+
/******/ register("@openmrs/esm-framework/src/internal", "4.5.1-pre.798", () => (() => (__webpack_require__(/*! ../../framework/esm-framework/src/internal.ts */ "../../framework/esm-framework/src/internal.ts"))), 1);
|
|
11945
|
+
/******/ register("@openmrs/esm-framework", "4.5.1-pre.798", () => (() => (__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,5,1,,"pre",
|
|
12107
|
+
/******/ "webpack/sharing/consume/default/@openmrs/esm-framework/@openmrs/esm-framework": () => (loadSingletonVersionCheckFallback("default", "@openmrs/esm-framework", [7,4,5,1,,"pre",798], () => (() => (__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) => {
|