Files
medicalalert-web-reloaded/wp/wp-content/plugins/wordpress-seo-premium/assets/js/dist/wp-seo-premium-schema-blocks-1640.min.js
Tony Volpe 4eb982d7a8 Merged in feature/from-pantheon (pull request #16)
code from pantheon

* code from pantheon
2024-01-10 17:03:02 +00:00

1 line
150 KiB
JavaScript

(window.yoastPremiumWebpackJsonp=window.yoastPremiumWebpackJsonp||[]).push([[13],{0:function(module,exports){eval("module.exports = window.wp.element;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9leHRlcm5hbCBcIndpbmRvdy53cC5lbGVtZW50XCI/YTI5ZiJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHdpbmRvdy53cC5lbGVtZW50OyJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///0\n")},1:function(module,exports){eval("module.exports = window.wp.i18n;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9leHRlcm5hbCBcIndpbmRvdy53cC5pMThuXCI/Y2Q4ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHdpbmRvdy53cC5pMThuOyJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///1\n")},10:function(module,exports){eval("module.exports = window.yoast.schemaBlocks;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJ3aW5kb3cueW9hc3Quc2NoZW1hQmxvY2tzXCI/OTA0NiJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHdpbmRvdy55b2FzdC5zY2hlbWFCbG9ja3M7Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///10\n")},138:function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n\n// EXTERNAL MODULE: external "window.yoast.schemaBlocks"\nvar external_window_yoast_schemaBlocks_ = __webpack_require__(10);\n\n// EXTERNAL MODULE: external "React"\nvar external_React_ = __webpack_require__(8);\n\n// EXTERNAL MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/block-library/node_modules/@babel/runtime/helpers/esm/defineProperty.js\nvar defineProperty = __webpack_require__(4);\n\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/block-library/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/block-library/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i["return"] != null) _i["return"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n// EXTERNAL MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/block-library/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js\nvar unsupportedIterableToArray = __webpack_require__(30);\n\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/block-library/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js\nfunction _nonIterableRest() {\n throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");\n}\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/block-library/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\n\n\n\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || Object(unsupportedIterableToArray["a" /* default */])(arr, i) || _nonIterableRest();\n}\n// EXTERNAL MODULE: external "window.wp.element"\nvar external_window_wp_element_ = __webpack_require__(0);\n\n// EXTERNAL MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/classnames/index.js\nvar classnames = __webpack_require__(23);\nvar classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);\n\n// EXTERNAL MODULE: external "window.wp.i18n"\nvar external_window_wp_i18n_ = __webpack_require__(1);\n\n// EXTERNAL MODULE: external "window.wp.components"\nvar external_window_wp_components_ = __webpack_require__(6);\n\n// EXTERNAL MODULE: external "window.wp.blockEditor"\nvar external_window_wp_blockEditor_ = __webpack_require__(7);\n\n// EXTERNAL MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/block-library/node_modules/@wordpress/keycodes/build-module/index.js + 5 modules\nvar build_module = __webpack_require__(31);\n\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/primitives/node_modules/@babel/runtime/helpers/esm/defineProperty.js\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/primitives/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/primitives/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/primitives/build-module/svg/index.js\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n/**\n * External dependencies\n */\n\n/**\n * WordPress dependencies\n */\n\n // Disable reason: JSDoc linter doesn\'t seem to parse the union (`&`) correctly.\n\n/* eslint-disable jsdoc/valid-types */\n\n/** @typedef {{isPressed?: boolean} & import(\'react\').ComponentPropsWithoutRef<\'svg\'>} SVGProps */\n\n/* eslint-enable jsdoc/valid-types */\n\n/**\n * @param {import(\'react\').ComponentPropsWithoutRef<\'circle\'>} props\n *\n * @return {JSX.Element} Circle component\n */\n\nvar svg_Circle = function Circle(props) {\n return Object(external_window_wp_element_["createElement"])(\'circle\', props);\n};\n/**\n * @param {import(\'react\').ComponentPropsWithoutRef<\'g\'>} props\n *\n * @return {JSX.Element} G component\n */\n\nvar svg_G = function G(props) {\n return Object(external_window_wp_element_["createElement"])(\'g\', props);\n};\n/**\n * @param {import(\'react\').ComponentPropsWithoutRef<\'path\'>} props\n *\n * @return {JSX.Element} Path component\n */\n\nvar svg_Path = function Path(props) {\n return Object(external_window_wp_element_["createElement"])(\'path\', props);\n};\n/**\n * @param {import(\'react\').ComponentPropsWithoutRef<\'polygon\'>} props\n *\n * @return {JSX.Element} Polygon component\n */\n\nvar svg_Polygon = function Polygon(props) {\n return Object(external_window_wp_element_["createElement"])(\'polygon\', props);\n};\n/**\n * @param {import(\'react\').ComponentPropsWithoutRef<\'rect\'>} props\n *\n * @return {JSX.Element} Rect component\n */\n\nvar svg_Rect = function Rect(props) {\n return Object(external_window_wp_element_["createElement"])(\'rect\', props);\n};\n/**\n * @param {import(\'react\').ComponentPropsWithoutRef<\'defs\'>} props\n *\n * @return {JSX.Element} Defs component\n */\n\nvar svg_Defs = function Defs(props) {\n return Object(external_window_wp_element_["createElement"])(\'defs\', props);\n};\n/**\n * @param {import(\'react\').ComponentPropsWithoutRef<\'radialGradient\'>} props\n *\n * @return {JSX.Element} RadialGradient component\n */\n\nvar svg_RadialGradient = function RadialGradient(props) {\n return Object(external_window_wp_element_["createElement"])(\'radialGradient\', props);\n};\n/**\n * @param {import(\'react\').ComponentPropsWithoutRef<\'linearGradient\'>} props\n *\n * @return {JSX.Element} LinearGradient component\n */\n\nvar svg_LinearGradient = function LinearGradient(props) {\n return Object(external_window_wp_element_["createElement"])(\'linearGradient\', props);\n};\n/**\n * @param {import(\'react\').ComponentPropsWithoutRef<\'stop\'>} props\n *\n * @return {JSX.Element} Stop component\n */\n\nvar svg_Stop = function Stop(props) {\n return Object(external_window_wp_element_["createElement"])(\'stop\', props);\n};\n/**\n *\n * @param {SVGProps} props isPressed indicates whether the SVG should appear as pressed.\n * Other props will be passed through to svg component.\n *\n * @return {JSX.Element} Stop component\n */\n\nvar svg_SVG = function SVG(_ref) {\n var className = _ref.className,\n isPressed = _ref.isPressed,\n props = _objectWithoutProperties(_ref, ["className", "isPressed"]);\n\n var appliedProps = _objectSpread({}, props, {\n className: classnames_default()(className, {\n \'is-pressed\': isPressed\n }) || undefined,\n role: \'img\',\n \'aria-hidden\': true,\n focusable: false\n }); // Disable reason: We need to have a way to render HTML tag for web.\n // eslint-disable-next-line react/forbid-elements\n\n\n return Object(external_window_wp_element_["createElement"])("svg", appliedProps);\n};\n//# sourceMappingURL=index.js.map\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/block-library/node_modules/@wordpress/icons/build-module/library/link.js\n\n\n/**\n * WordPress dependencies\n */\n\nvar link_link = Object(external_window_wp_element_["createElement"])(svg_SVG, {\n xmlns: "http://www.w3.org/2000/svg",\n viewBox: "0 0 24 24"\n}, Object(external_window_wp_element_["createElement"])(svg_Path, {\n d: "M15.6 7.2H14v1.5h1.6c2 0 3.7 1.7 3.7 3.7s-1.7 3.7-3.7 3.7H14v1.5h1.6c2.8 0 5.2-2.3 5.2-5.2 0-2.9-2.3-5.2-5.2-5.2zM4.7 12.4c0-2 1.7-3.7 3.7-3.7H10V7.2H8.4c-2.9 0-5.2 2.3-5.2 5.2 0 2.9 2.3 5.2 5.2 5.2H10v-1.5H8.4c-2 0-3.7-1.7-3.7-3.7zm4.6.9h5.3v-1.5H9.3v1.5z"\n}));\n/* harmony default export */ var library_link = (link_link);\n//# sourceMappingURL=link.js.map\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/block-library/node_modules/@wordpress/icons/build-module/library/link-off.js\n\n\n/**\n * WordPress dependencies\n */\n\nvar linkOff = Object(external_window_wp_element_["createElement"])(svg_SVG, {\n xmlns: "http://www.w3.org/2000/svg",\n viewBox: "0 0 24 24"\n}, Object(external_window_wp_element_["createElement"])(svg_Path, {\n d: "M15.6 7.3h-.7l1.6-3.5-.9-.4-3.9 8.5H9v1.5h2l-1.3 2.8H8.4c-2 0-3.7-1.7-3.7-3.7s1.7-3.7 3.7-3.7H10V7.3H8.4c-2.9 0-5.2 2.3-5.2 5.2 0 2.9 2.3 5.2 5.2 5.2H9l-1.4 3.2.9.4 5.7-12.5h1.4c2 0 3.7 1.7 3.7 3.7s-1.7 3.7-3.7 3.7H14v1.5h1.6c2.9 0 5.2-2.3 5.2-5.2 0-2.9-2.4-5.2-5.2-5.2z"\n}));\n/* harmony default export */ var link_off = (linkOff);\n//# sourceMappingURL=link-off.js.map\n// EXTERNAL MODULE: external "window.wp.blocks"\nvar external_window_wp_blocks_ = __webpack_require__(22);\n\n// EXTERNAL MODULE: external "window.wp.data"\nvar external_window_wp_data_ = __webpack_require__(3);\n\n// EXTERNAL MODULE: external "window.lodash"\nvar external_window_lodash_ = __webpack_require__(2);\n\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/block-library/build-module/button/color-edit.js\n\n\n\n\nfunction color_edit_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction color_edit_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { color_edit_ownKeys(Object(source), true).forEach(function (key) { Object(defineProperty["a" /* default */])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { color_edit_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n/**\n * External dependencies\n */\n\n/**\n * WordPress dependencies\n */\n\n\n\n\n/**\n * Internal dependencies\n */\n\n\nvar isWebPlatform = external_window_wp_element_["Platform"].OS === \'web\'; // The code in this file is copied entirely from the "color" and "style" support flags\n// The flag can\'t be used at the moment because of the extra wrapper around\n// the button block markup.\n\nfunction getBlockDOMNode(clientId) {\n return document.getElementById(\'block-\' + clientId);\n}\n/**\n * Removed undefined values from nested object.\n *\n * @param {*} object\n * @return {*} Object cleaned from undefined values\n */\n\n\nvar color_edit_cleanEmptyObject = function cleanEmptyObject(object) {\n if (!Object(external_window_lodash_["isObject"])(object)) {\n return object;\n }\n\n var cleanedNestedObjects = Object(external_window_lodash_["pickBy"])(Object(external_window_lodash_["mapValues"])(object, cleanEmptyObject), external_window_lodash_["identity"]);\n return Object(external_window_lodash_["isEqual"])(cleanedNestedObjects, {}) ? undefined : cleanedNestedObjects;\n};\n\nfunction ColorPanel(_ref) {\n var settings = _ref.settings,\n clientId = _ref.clientId,\n _ref$enableContrastCh = _ref.enableContrastChecking,\n enableContrastChecking = _ref$enableContrastCh === void 0 ? true : _ref$enableContrastCh;\n var _window = window,\n getComputedStyle = _window.getComputedStyle,\n Node = _window.Node;\n\n var _useState = Object(external_window_wp_element_["useState"])(),\n _useState2 = _slicedToArray(_useState, 2),\n detectedBackgroundColor = _useState2[0],\n setDetectedBackgroundColor = _useState2[1];\n\n var _useState3 = Object(external_window_wp_element_["useState"])(),\n _useState4 = _slicedToArray(_useState3, 2),\n detectedColor = _useState4[0],\n setDetectedColor = _useState4[1];\n\n var title = isWebPlatform ? Object(external_window_wp_i18n_["__"])(\'Color settings\') : Object(external_window_wp_i18n_["__"])(\'Color Settings\');\n Object(external_window_wp_element_["useEffect"])(function () {\n if (isWebPlatform && !enableContrastChecking) {\n return;\n }\n\n var colorsDetectionElement = getBlockDOMNode(clientId);\n\n if (!colorsDetectionElement) {\n return;\n }\n\n setDetectedColor(getComputedStyle(colorsDetectionElement).color);\n var backgroundColorNode = colorsDetectionElement;\n var backgroundColor = getComputedStyle(backgroundColorNode).backgroundColor;\n\n while (backgroundColor === \'rgba(0, 0, 0, 0)\' && backgroundColorNode.parentNode && backgroundColorNode.parentNode.nodeType === Node.ELEMENT_NODE) {\n backgroundColorNode = backgroundColorNode.parentNode;\n backgroundColor = getComputedStyle(backgroundColorNode).backgroundColor;\n }\n\n setDetectedBackgroundColor(backgroundColor);\n });\n return Object(external_window_wp_element_["createElement"])(external_window_wp_blockEditor_["InspectorControls"], null, Object(external_window_wp_element_["createElement"])(external_window_wp_blockEditor_["__experimentalPanelColorGradientSettings"], {\n title: title,\n initialOpen: false,\n settings: settings\n }, isWebPlatform && enableContrastChecking && Object(external_window_wp_element_["createElement"])(external_window_wp_blockEditor_["ContrastChecker"], {\n backgroundColor: detectedBackgroundColor,\n textColor: detectedColor\n })));\n}\n/**\n * Inspector control panel containing the color related configuration\n *\n * @param {Object} props\n *\n * @return {WPElement} Color edit element.\n */\n\n\nfunction ColorEdit(props) {\n var _style$color2, _style$color3, _style$color4;\n\n var attributes = props.attributes;\n\n var _useSelect = Object(external_window_wp_data_["useSelect"])(function (select) {\n return select(\'core/block-editor\').getSettings();\n }, []),\n colors = _useSelect.colors,\n gradients = _useSelect.gradients; // Shouldn\'t be needed but right now the ColorGradientsPanel\n // can trigger both onChangeColor and onChangeBackground\n // synchronously causing our two callbacks to override changes\n // from each other.\n\n\n var localAttributes = Object(external_window_wp_element_["useRef"])(attributes);\n Object(external_window_wp_element_["useEffect"])(function () {\n localAttributes.current = attributes;\n }, [attributes]);\n var style = attributes.style,\n textColor = attributes.textColor,\n backgroundColor = attributes.backgroundColor,\n gradient = attributes.gradient;\n var gradientValue;\n\n if (gradient) {\n gradientValue = Object(external_window_wp_blockEditor_["getGradientValueBySlug"])(gradients, gradient);\n } else {\n var _style$color;\n\n gradientValue = style === null || style === void 0 ? void 0 : (_style$color = style.color) === null || _style$color === void 0 ? void 0 : _style$color.gradient;\n }\n\n var onChangeColor = function onChangeColor(name) {\n return function (value) {\n var _localAttributes$curr, _localAttributes$curr2;\n\n var colorObject = Object(external_window_wp_blockEditor_["getColorObjectByColorValue"])(colors, value);\n var attributeName = name + \'Color\';\n\n var newStyle = color_edit_objectSpread({}, localAttributes.current.style, {\n color: color_edit_objectSpread({}, (_localAttributes$curr = localAttributes.current) === null || _localAttributes$curr === void 0 ? void 0 : (_localAttributes$curr2 = _localAttributes$curr.style) === null || _localAttributes$curr2 === void 0 ? void 0 : _localAttributes$curr2.color, Object(defineProperty["a" /* default */])({}, name, (colorObject === null || colorObject === void 0 ? void 0 : colorObject.slug) ? undefined : value))\n });\n\n var newNamedColor = (colorObject === null || colorObject === void 0 ? void 0 : colorObject.slug) ? colorObject.slug : undefined;\n\n var newAttributes = Object(defineProperty["a" /* default */])({\n style: color_edit_cleanEmptyObject(newStyle)\n }, attributeName, newNamedColor);\n\n props.setAttributes(newAttributes);\n localAttributes.current = color_edit_objectSpread({}, localAttributes.current, {}, newAttributes);\n };\n };\n\n var onChangeGradient = function onChangeGradient(value) {\n var slug = Object(external_window_wp_blockEditor_["getGradientSlugByValue"])(gradients, value);\n var newAttributes;\n\n if (slug) {\n var _localAttributes$curr3, _localAttributes$curr4, _localAttributes$curr5;\n\n var newStyle = color_edit_objectSpread({}, (_localAttributes$curr3 = localAttributes.current) === null || _localAttributes$curr3 === void 0 ? void 0 : _localAttributes$curr3.style, {\n color: color_edit_objectSpread({}, (_localAttributes$curr4 = localAttributes.current) === null || _localAttributes$curr4 === void 0 ? void 0 : (_localAttributes$curr5 = _localAttributes$curr4.style) === null || _localAttributes$curr5 === void 0 ? void 0 : _localAttributes$curr5.color, {\n gradient: undefined\n })\n });\n\n newAttributes = {\n style: color_edit_cleanEmptyObject(newStyle),\n gradient: slug\n };\n } else {\n var _localAttributes$curr6, _localAttributes$curr7, _localAttributes$curr8;\n\n var _newStyle = color_edit_objectSpread({}, (_localAttributes$curr6 = localAttributes.current) === null || _localAttributes$curr6 === void 0 ? void 0 : _localAttributes$curr6.style, {\n color: color_edit_objectSpread({}, (_localAttributes$curr7 = localAttributes.current) === null || _localAttributes$curr7 === void 0 ? void 0 : (_localAttributes$curr8 = _localAttributes$curr7.style) === null || _localAttributes$curr8 === void 0 ? void 0 : _localAttributes$curr8.color, {\n gradient: value\n })\n });\n\n newAttributes = {\n style: color_edit_cleanEmptyObject(_newStyle),\n gradient: undefined\n };\n }\n\n props.setAttributes(newAttributes);\n localAttributes.current = color_edit_objectSpread({}, localAttributes.current, {}, newAttributes);\n };\n\n return Object(external_window_wp_element_["createElement"])(ColorPanel, {\n enableContrastChecking: !gradient && !(style === null || style === void 0 ? void 0 : (_style$color2 = style.color) === null || _style$color2 === void 0 ? void 0 : _style$color2.gradient),\n clientId: props.clientId,\n settings: [{\n label: Object(external_window_wp_i18n_["__"])(\'Text Color\'),\n onColorChange: onChangeColor(\'text\'),\n colorValue: Object(external_window_wp_blockEditor_["getColorObjectByAttributeValues"])(colors, textColor, style === null || style === void 0 ? void 0 : (_style$color3 = style.color) === null || _style$color3 === void 0 ? void 0 : _style$color3.text).color\n }, {\n label: Object(external_window_wp_i18n_["__"])(\'Background Color\'),\n onColorChange: onChangeColor(\'background\'),\n colorValue: Object(external_window_wp_blockEditor_["getColorObjectByAttributeValues"])(colors, backgroundColor, style === null || style === void 0 ? void 0 : (_style$color4 = style.color) === null || _style$color4 === void 0 ? void 0 : _style$color4.background).color,\n gradientValue: gradientValue,\n onGradientChange: onChangeGradient\n }]\n });\n}\n\n/* harmony default export */ var color_edit = (ColorEdit);\n//# sourceMappingURL=color-edit.js.map\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/block-library/build-module/button/color-props.js\n\n\n/**\n * External dependencies\n */\n\n/**\n * WordPress dependencies\n */\n\n // The code in this file is copied entirely from the "color" and "style" support flags\n// The flag can\'t be used at the moment because of the extra wrapper around\n// the button block markup.\n\nfunction getColorAndStyleProps(attributes, colors) {\n var _style$color, _style$color2, _style$color3, _style$color4, _classnames, _style$color5, _style$color6, _style$color7, _style$color8, _style$color9, _style$color10;\n\n var isEdit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n // I\'d have prefered to avoid the "style" attribute usage here\n var backgroundColor = attributes.backgroundColor,\n textColor = attributes.textColor,\n gradient = attributes.gradient,\n style = attributes.style;\n var backgroundClass = Object(external_window_wp_blockEditor_["getColorClassName"])(\'background-color\', backgroundColor);\n\n var gradientClass = Object(external_window_wp_blockEditor_["__experimentalGetGradientClass"])(gradient);\n\n var textClass = Object(external_window_wp_blockEditor_["getColorClassName"])(\'color\', textColor);\n var className = classnames_default()(textClass, gradientClass, (_classnames = {}, Object(defineProperty["a" /* default */])(_classnames, backgroundClass, !(style === null || style === void 0 ? void 0 : (_style$color = style.color) === null || _style$color === void 0 ? void 0 : _style$color.gradient) && !!backgroundClass), Object(defineProperty["a" /* default */])(_classnames, \'has-text-color\', textColor || (style === null || style === void 0 ? void 0 : (_style$color2 = style.color) === null || _style$color2 === void 0 ? void 0 : _style$color2.text)), Object(defineProperty["a" /* default */])(_classnames, \'has-background\', backgroundColor || (style === null || style === void 0 ? void 0 : (_style$color3 = style.color) === null || _style$color3 === void 0 ? void 0 : _style$color3.background) || gradient || (style === null || style === void 0 ? void 0 : (_style$color4 = style.color) === null || _style$color4 === void 0 ? void 0 : _style$color4.gradient)), _classnames));\n var styleProp = (style === null || style === void 0 ? void 0 : (_style$color5 = style.color) === null || _style$color5 === void 0 ? void 0 : _style$color5.background) || (style === null || style === void 0 ? void 0 : (_style$color6 = style.color) === null || _style$color6 === void 0 ? void 0 : _style$color6.text) || (style === null || style === void 0 ? void 0 : (_style$color7 = style.color) === null || _style$color7 === void 0 ? void 0 : _style$color7.gradient) ? {\n background: (style === null || style === void 0 ? void 0 : (_style$color8 = style.color) === null || _style$color8 === void 0 ? void 0 : _style$color8.gradient) ? style.color.gradient : undefined,\n backgroundColor: (style === null || style === void 0 ? void 0 : (_style$color9 = style.color) === null || _style$color9 === void 0 ? void 0 : _style$color9.background) ? style.color.background : undefined,\n color: (style === null || style === void 0 ? void 0 : (_style$color10 = style.color) === null || _style$color10 === void 0 ? void 0 : _style$color10.text) ? style.color.text : undefined\n } : {}; // This is needed only for themes that don\'t load their color stylesheets in the editor\n // We force an inline style to apply the color.\n\n if (isEdit) {\n if (backgroundColor) {\n var backgroundColorObject = Object(external_window_wp_blockEditor_["getColorObjectByAttributeValues"])(colors, backgroundColor);\n styleProp.backgroundColor = backgroundColorObject.color;\n }\n\n if (textColor) {\n var textColorObject = Object(external_window_wp_blockEditor_["getColorObjectByAttributeValues"])(colors, textColor);\n styleProp.color = textColorObject.color;\n }\n }\n\n return {\n className: !!className ? className : undefined,\n style: styleProp\n };\n}\n//# sourceMappingURL=color-props.js.map\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/block-library/build-module/button/edit.js\n\n\n\n\nfunction edit_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction edit_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { edit_ownKeys(Object(source), true).forEach(function (key) { Object(defineProperty["a" /* default */])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { edit_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n/**\n * External dependencies\n */\n\n/**\n * WordPress dependencies\n */\n\n\n\n\n\n\n\n\n\n/**\n * Internal dependencies\n */\n\n\n\nvar NEW_TAB_REL = \'noreferrer noopener\';\nvar MIN_BORDER_RADIUS_VALUE = 0;\nvar MAX_BORDER_RADIUS_VALUE = 50;\nvar INITIAL_BORDER_RADIUS_POSITION = 5;\n\nfunction BorderPanel(_ref) {\n var _ref$borderRadius = _ref.borderRadius,\n borderRadius = _ref$borderRadius === void 0 ? \'\' : _ref$borderRadius,\n setAttributes = _ref.setAttributes;\n var initialBorderRadius = borderRadius;\n var setBorderRadius = Object(external_window_wp_element_["useCallback"])(function (newBorderRadius) {\n if (newBorderRadius === undefined) setAttributes({\n borderRadius: initialBorderRadius\n });else setAttributes({\n borderRadius: newBorderRadius\n });\n }, [setAttributes]);\n return Object(external_window_wp_element_["createElement"])(external_window_wp_components_["PanelBody"], {\n title: Object(external_window_wp_i18n_["__"])(\'Border settings\')\n }, Object(external_window_wp_element_["createElement"])(external_window_wp_components_["RangeControl"], {\n value: borderRadius,\n label: Object(external_window_wp_i18n_["__"])(\'Border radius\'),\n min: MIN_BORDER_RADIUS_VALUE,\n max: MAX_BORDER_RADIUS_VALUE,\n initialPosition: INITIAL_BORDER_RADIUS_POSITION,\n allowReset: true,\n onChange: setBorderRadius\n }));\n}\n\nfunction URLPicker(_ref2) {\n var _ref4;\n\n var isSelected = _ref2.isSelected,\n url = _ref2.url,\n setAttributes = _ref2.setAttributes,\n opensInNewTab = _ref2.opensInNewTab,\n onToggleOpenInNewTab = _ref2.onToggleOpenInNewTab;\n\n var _useState = Object(external_window_wp_element_["useState"])(false),\n _useState2 = _slicedToArray(_useState, 2),\n isURLPickerOpen = _useState2[0],\n setIsURLPickerOpen = _useState2[1];\n\n var urlIsSet = !!url;\n var urlIsSetandSelected = urlIsSet && isSelected;\n\n var openLinkControl = function openLinkControl() {\n setIsURLPickerOpen(true);\n return false; // prevents default behaviour for event\n };\n\n var unlinkButton = function unlinkButton() {\n setAttributes({\n url: undefined,\n linkTarget: undefined,\n rel: undefined\n });\n setIsURLPickerOpen(false);\n };\n\n var linkControl = (isURLPickerOpen || urlIsSetandSelected) && Object(external_window_wp_element_["createElement"])(external_window_wp_components_["Popover"], {\n position: "bottom center",\n onClose: function onClose() {\n return setIsURLPickerOpen(false);\n }\n }, Object(external_window_wp_element_["createElement"])(external_window_wp_blockEditor_["__experimentalLinkControl"], {\n className: "wp-block-navigation-link__inline-link-input",\n value: {\n url: url,\n opensInNewTab: opensInNewTab\n },\n onChange: function onChange(_ref3) {\n var _ref3$url = _ref3.url,\n newURL = _ref3$url === void 0 ? \'\' : _ref3$url,\n newOpensInNewTab = _ref3.opensInNewTab;\n setAttributes({\n url: newURL\n });\n\n if (opensInNewTab !== newOpensInNewTab) {\n onToggleOpenInNewTab(newOpensInNewTab);\n }\n }\n }));\n return Object(external_window_wp_element_["createElement"])(external_window_wp_element_["Fragment"], null, Object(external_window_wp_element_["createElement"])(external_window_wp_blockEditor_["BlockControls"], null, Object(external_window_wp_element_["createElement"])(external_window_wp_components_["ToolbarGroup"], null, !urlIsSet && Object(external_window_wp_element_["createElement"])(external_window_wp_components_["ToolbarButton"], {\n name: "link",\n icon: library_link,\n title: Object(external_window_wp_i18n_["__"])(\'Link\'),\n shortcut: build_module["displayShortcut"].primary(\'k\'),\n onClick: openLinkControl\n }), urlIsSetandSelected && Object(external_window_wp_element_["createElement"])(external_window_wp_components_["ToolbarButton"], {\n name: "link",\n icon: link_off,\n title: Object(external_window_wp_i18n_["__"])(\'Unlink\'),\n shortcut: build_module["displayShortcut"].primaryShift(\'k\'),\n onClick: unlinkButton,\n isActive: true\n }))), isSelected && Object(external_window_wp_element_["createElement"])(external_window_wp_components_["KeyboardShortcuts"], {\n bindGlobal: true,\n shortcuts: (_ref4 = {}, Object(defineProperty["a" /* default */])(_ref4, build_module["rawShortcut"].primary(\'k\'), openLinkControl), Object(defineProperty["a" /* default */])(_ref4, build_module["rawShortcut"].primaryShift(\'k\'), unlinkButton), _ref4)\n }), linkControl);\n}\n\nfunction ButtonEdit(props) {\n var attributes = props.attributes,\n setAttributes = props.setAttributes,\n className = props.className,\n isSelected = props.isSelected,\n onReplace = props.onReplace,\n mergeBlocks = props.mergeBlocks;\n var borderRadius = attributes.borderRadius,\n linkTarget = attributes.linkTarget,\n placeholder = attributes.placeholder,\n rel = attributes.rel,\n text = attributes.text,\n url = attributes.url;\n var onSetLinkRel = Object(external_window_wp_element_["useCallback"])(function (value) {\n setAttributes({\n rel: value\n });\n }, [setAttributes]);\n\n var _useSelect = Object(external_window_wp_data_["useSelect"])(function (select) {\n return select(\'core/block-editor\').getSettings();\n }, []),\n colors = _useSelect.colors;\n\n var onToggleOpenInNewTab = Object(external_window_wp_element_["useCallback"])(function (value) {\n var newLinkTarget = value ? \'_blank\' : undefined;\n var updatedRel = rel;\n\n if (newLinkTarget && !rel) {\n updatedRel = NEW_TAB_REL;\n } else if (!newLinkTarget && rel === NEW_TAB_REL) {\n updatedRel = undefined;\n }\n\n setAttributes({\n linkTarget: newLinkTarget,\n rel: updatedRel\n });\n }, [rel, setAttributes]);\n var colorProps = getColorAndStyleProps(attributes, colors, true);\n return Object(external_window_wp_element_["createElement"])(external_window_wp_element_["Fragment"], null, Object(external_window_wp_element_["createElement"])(color_edit, props), Object(external_window_wp_element_["createElement"])(external_window_wp_blockEditor_["__experimentalBlock"].div, null, Object(external_window_wp_element_["createElement"])(external_window_wp_blockEditor_["RichText"], {\n placeholder: placeholder || Object(external_window_wp_i18n_["__"])(\'Add text…\'),\n value: text,\n onChange: function onChange(value) {\n return setAttributes({\n text: value\n });\n },\n withoutInteractiveFormatting: true,\n className: classnames_default()(className, \'wp-block-button__link\', colorProps.className, {\n \'no-border-radius\': borderRadius === 0\n }),\n style: edit_objectSpread({\n borderRadius: borderRadius ? borderRadius + \'px\' : undefined\n }, colorProps.style),\n onSplit: function onSplit(value) {\n return Object(external_window_wp_blocks_["createBlock"])(\'core/button\', edit_objectSpread({}, attributes, {\n text: value\n }));\n },\n onReplace: onReplace,\n onMerge: mergeBlocks,\n identifier: "text"\n })), Object(external_window_wp_element_["createElement"])(URLPicker, {\n url: url,\n setAttributes: setAttributes,\n isSelected: isSelected,\n opensInNewTab: linkTarget === \'_blank\',\n onToggleOpenInNewTab: onToggleOpenInNewTab\n }), Object(external_window_wp_element_["createElement"])(external_window_wp_blockEditor_["InspectorControls"], null, Object(external_window_wp_element_["createElement"])(BorderPanel, {\n borderRadius: borderRadius,\n setAttributes: setAttributes\n }), Object(external_window_wp_element_["createElement"])(external_window_wp_components_["PanelBody"], {\n title: Object(external_window_wp_i18n_["__"])(\'Link settings\')\n }, Object(external_window_wp_element_["createElement"])(external_window_wp_components_["ToggleControl"], {\n label: Object(external_window_wp_i18n_["__"])(\'Open in new tab\'),\n onChange: onToggleOpenInNewTab,\n checked: linkTarget === \'_blank\'\n }), Object(external_window_wp_element_["createElement"])(external_window_wp_components_["TextControl"], {\n label: Object(external_window_wp_i18n_["__"])(\'Link rel\'),\n value: rel || \'\',\n onChange: onSetLinkRel\n }))));\n}\n\n/* harmony default export */ var edit = (ButtonEdit);\n//# sourceMappingURL=edit.js.map\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/block-library/build-module/button/save.js\n\n\n\nfunction save_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction save_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { save_ownKeys(Object(source), true).forEach(function (key) { Object(defineProperty["a" /* default */])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { save_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n/**\n * External dependencies\n */\n\n/**\n * WordPress dependencies\n */\n\n\n/**\n * Internal dependencies\n */\n\n\nfunction save(_ref) {\n var attributes = _ref.attributes;\n var borderRadius = attributes.borderRadius,\n linkTarget = attributes.linkTarget,\n rel = attributes.rel,\n text = attributes.text,\n title = attributes.title,\n url = attributes.url;\n var colorProps = getColorAndStyleProps(attributes);\n var buttonClasses = classnames_default()(\'wp-block-button__link\', colorProps.className, {\n \'no-border-radius\': borderRadius === 0\n });\n\n var buttonStyle = save_objectSpread({\n borderRadius: borderRadius ? borderRadius + \'px\' : undefined\n }, colorProps.style); // The use of a `title` attribute here is soft-deprecated, but still applied\n // if it had already been assigned, for the sake of backward-compatibility.\n // A title will no longer be assigned for new or updated button block links.\n\n\n return Object(external_window_wp_element_["createElement"])("div", null, Object(external_window_wp_element_["createElement"])(external_window_wp_blockEditor_["RichText"].Content, {\n tagName: "a",\n className: buttonClasses,\n href: url,\n title: title,\n style: buttonStyle,\n value: text,\n target: linkTarget,\n rel: rel\n }));\n}\n//# sourceMappingURL=save.js.map\n// CONCATENATED MODULE: ./schema-blocks/instructions/blocks/LinkButton.tsx\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== "function" && b !== null)\n throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (undefined && undefined.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n\n// @ts-ignore -- No typings exist for this class.\n\n// @ts-ignore -- No typings exist for this class.\n\n\n/**\n * Link button block instruction.\n */\nvar LinkButton_LinkButton = /** @class */ (function (_super) {\n __extends(LinkButton, _super);\n function LinkButton() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Renders saving the element.\n *\n * @param props The props.\n *\n * @returns {ReactElement} The element to render.\n */\n LinkButton.prototype.save = function (props) {\n return Object(external_React_["createElement"])(save, __assign({}, props));\n };\n /**\n * Renders editing the element.\n *\n * @param props The props.\n *\n * @returns {ReactElement} The element to render.\n */\n LinkButton.prototype.edit = function (props) {\n if (this.options.placeholder) {\n props.setAttributes({ placeholder: this.options.placeholder });\n }\n return Object(external_React_["createElement"])(edit, __assign({}, props));\n };\n /**\n * Configuration attributes to add to the block template\n * in which this instruction is used.\n */\n LinkButton.prototype.configuration = function () {\n return {\n attributes: {\n url: {\n type: "string",\n source: "attribute",\n selector: "a",\n attribute: "href"\n },\n title: {\n type: "string",\n source: "attribute",\n selector: "a",\n attribute: "title"\n },\n text: {\n type: "string",\n source: "html",\n selector: "a"\n },\n linkTarget: {\n type: "string",\n source: "attribute",\n selector: "a",\n attribute: "target"\n },\n rel: {\n type: "string",\n source: "attribute",\n selector: "a",\n attribute: "rel"\n },\n placeholder: {\n type: "string"\n },\n borderRadius: {\n type: "number"\n },\n style: {\n type: "object"\n },\n backgroundColor: {\n type: "string"\n },\n textColor: {\n type: "string"\n },\n gradient: {\n type: "string"\n }\n },\n supports: {\n anchor: true,\n alignWide: false,\n reusable: false,\n lightBlockWrapper: true\n }\n };\n };\n /**\n * Checks if the instruction block is valid.\n *\n * @param blockInstance The attributes from the block.\n *\n * @returns The validation result.\n */\n LinkButton.prototype.validate = function (blockInstance) {\n var presence = this.options.required === true ? external_window_yoast_schemaBlocks_["BlockPresence"].Required : external_window_yoast_schemaBlocks_["BlockPresence"].Recommended;\n // The linkbutton must have a Text, AND either a linktarget or a relative link set.\n if (Object(external_window_yoast_schemaBlocks_["attributeExists"])(blockInstance, "text") && Object(external_window_yoast_schemaBlocks_["attributeNotEmpty"])(blockInstance, "text") &&\n (Object(external_window_yoast_schemaBlocks_["attributeExists"])(blockInstance, "linkTarget") && Object(external_window_yoast_schemaBlocks_["attributeNotEmpty"])(blockInstance, "linkTarget") ||\n Object(external_window_yoast_schemaBlocks_["attributeExists"])(blockInstance, "rel") && Object(external_window_yoast_schemaBlocks_["attributeNotEmpty"])(blockInstance, "rel"))) {\n return external_window_yoast_schemaBlocks_["BlockValidationResult"].Valid(blockInstance, this.constructor.name, presence);\n }\n return external_window_yoast_schemaBlocks_["BlockValidationResult"].MissingAttribute(blockInstance, this.constructor.name, presence);\n };\n return LinkButton;\n}(external_window_yoast_schemaBlocks_["BlockInstruction"]));\n\n\n// CONCATENATED MODULE: ./schema-blocks/instructions/blocks/index.ts\n/* Add Schema Block Instruction imports here. */\n\n\n// CONCATENATED MODULE: ./schema-blocks.ts\n\n\nexternal_window_yoast_schemaBlocks_["BlockInstruction"].register("link-button", LinkButton_LinkButton);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTM4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy92YXIvamVua2lucy93b3Jrc3BhY2UvUGx1Z2luLVJlbGVhc2Uvd29yZHByZXNzLXNlby1wcmVtaXVtLy5yZXBvcy93b3JkcHJlc3Mtc2VvLXByZW1pdW0vbm9kZV9tb2R1bGVzL0B3b3JkcHJlc3MvYmxvY2stbGlicmFyeS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXJyYXlXaXRoSG9sZXMuanM/ZjhlMyIsIndlYnBhY2s6Ly8vL3Zhci9qZW5raW5zL3dvcmtzcGFjZS9QbHVnaW4tUmVsZWFzZS93b3JkcHJlc3Mtc2VvLXByZW1pdW0vLnJlcG9zL3dvcmRwcmVzcy1zZW8tcHJlbWl1bS9ub2RlX21vZHVsZXMvQHdvcmRwcmVzcy9ibG9jay1saWJyYXJ5L25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pdGVyYWJsZVRvQXJyYXlMaW1pdC5qcz8xZjJiIiwid2VicGFjazovLy8vdmFyL2plbmtpbnMvd29ya3NwYWNlL1BsdWdpbi1SZWxlYXNlL3dvcmRwcmVzcy1zZW8tcHJlbWl1bS8ucmVwb3Mvd29yZHByZXNzLXNlby1wcmVtaXVtL25vZGVfbW9kdWxlcy9Ad29yZHByZXNzL2Jsb2NrLWxpYnJhcnkvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL25vbkl0ZXJhYmxlUmVzdC5qcz8xM2IzIiwid2VicGFjazovLy8vdmFyL2plbmtpbnMvd29ya3NwYWNlL1BsdWdpbi1SZWxlYXNlL3dvcmRwcmVzcy1zZW8tcHJlbWl1bS8ucmVwb3Mvd29yZHByZXNzLXNlby1wcmVtaXVtL25vZGVfbW9kdWxlcy9Ad29yZHByZXNzL2Jsb2NrLWxpYnJhcnkvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3NsaWNlZFRvQXJyYXkuanM/OTY3YSIsIndlYnBhY2s6Ly8vL3Zhci9qZW5raW5zL3dvcmtzcGFjZS9QbHVnaW4tUmVsZWFzZS93b3JkcHJlc3Mtc2VvLXByZW1pdW0vLnJlcG9zL3dvcmRwcmVzcy1zZW8tcHJlbWl1bS9ub2RlX21vZHVsZXMvQHdvcmRwcmVzcy9wcmltaXRpdmVzL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eS5qcz8yYzBkIiwid2VicGFjazovLy8vdmFyL2plbmtpbnMvd29ya3NwYWNlL1BsdWdpbi1SZWxlYXNlL3dvcmRwcmVzcy1zZW8tcHJlbWl1bS8ucmVwb3Mvd29yZHByZXNzLXNlby1wcmVtaXVtL25vZGVfbW9kdWxlcy9Ad29yZHByZXNzL3ByaW1pdGl2ZXMvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UuanM/OWQ2YiIsIndlYnBhY2s6Ly8vL3Zhci9qZW5raW5zL3dvcmtzcGFjZS9QbHVnaW4tUmVsZWFzZS93b3JkcHJlc3Mtc2VvLXByZW1pdW0vLnJlcG9zL3dvcmRwcmVzcy1zZW8tcHJlbWl1bS9ub2RlX21vZHVsZXMvQHdvcmRwcmVzcy9wcmltaXRpdmVzL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllcy5qcz9jZDczIiwid2VicGFjazovLy8vdmFyL2plbmtpbnMvd29ya3NwYWNlL1BsdWdpbi1SZWxlYXNlL3dvcmRwcmVzcy1zZW8tcHJlbWl1bS8ucmVwb3Mvd29yZHByZXNzLXNlby1wcmVtaXVtL25vZGVfbW9kdWxlcy9Ad29yZHByZXNzL3ByaW1pdGl2ZXMvYnVpbGQtbW9kdWxlL3N2Zy9pbmRleC5qcz9iMmMwIiwid2VicGFjazovLy8vdmFyL2plbmtpbnMvd29ya3NwYWNlL1BsdWdpbi1SZWxlYXNlL3dvcmRwcmVzcy1zZW8tcHJlbWl1bS8ucmVwb3Mvd29yZHByZXNzLXNlby1wcmVtaXVtL25vZGVfbW9kdWxlcy9Ad29yZHByZXNzL2Jsb2NrLWxpYnJhcnkvbm9kZV9tb2R1bGVzL0B3b3JkcHJlc3MvaWNvbnMvYnVpbGQtbW9kdWxlL2xpYnJhcnkvbGluay5qcz8zZWJjIiwid2VicGFjazovLy8vdmFyL2plbmtpbnMvd29ya3NwYWNlL1BsdWdpbi1SZWxlYXNlL3dvcmRwcmVzcy1zZW8tcHJlbWl1bS8ucmVwb3Mvd29yZHByZXNzLXNlby1wcmVtaXVtL25vZGVfbW9kdWxlcy9Ad29yZHByZXNzL2Jsb2NrLWxpYnJhcnkvbm9kZV9tb2R1bGVzL0B3b3JkcHJlc3MvaWNvbnMvYnVpbGQtbW9kdWxlL2xpYnJhcnkvbGluay1vZmYuanM/ODhkMSIsIndlYnBhY2s6Ly8vL3Zhci9qZW5raW5zL3dvcmtzcGFjZS9QbHVnaW4tUmVsZWFzZS93b3JkcHJlc3Mtc2VvLXByZW1pdW0vLnJlcG9zL3dvcmRwcmVzcy1zZW8tcHJlbWl1bS9ub2RlX21vZHVsZXMvQHdvcmRwcmVzcy9ibG9jay1saWJyYXJ5L2J1aWxkLW1vZHVsZS9idXR0b24vY29sb3ItZWRpdC5qcz9iYmRjIiwid2VicGFjazovLy8vdmFyL2plbmtpbnMvd29ya3NwYWNlL1BsdWdpbi1SZWxlYXNlL3dvcmRwcmVzcy1zZW8tcHJlbWl1bS8ucmVwb3Mvd29yZHByZXNzLXNlby1wcmVtaXVtL25vZGVfbW9kdWxlcy9Ad29yZHByZXNzL2Jsb2NrLWxpYnJhcnkvYnVpbGQtbW9kdWxlL2J1dHRvbi9jb2xvci1wcm9wcy5qcz9lNjFhIiwid2VicGFjazovLy8vdmFyL2plbmtpbnMvd29ya3NwYWNlL1BsdWdpbi1SZWxlYXNlL3dvcmRwcmVzcy1zZW8tcHJlbWl1bS8ucmVwb3Mvd29yZHByZXNzLXNlby1wcmVtaXVtL25vZGVfbW9kdWxlcy9Ad29yZHByZXNzL2Jsb2NrLWxpYnJhcnkvYnVpbGQtbW9kdWxlL2J1dHRvbi9lZGl0LmpzP2E3NzQiLCJ3ZWJwYWNrOi8vLy92YXIvamVua2lucy93b3Jrc3BhY2UvUGx1Z2luLVJlbGVhc2Uvd29yZHByZXNzLXNlby1wcmVtaXVtLy5yZXBvcy93b3JkcHJlc3Mtc2VvLXByZW1pdW0vbm9kZV9tb2R1bGVzL0B3b3JkcHJlc3MvYmxvY2stbGlicmFyeS9idWlsZC1tb2R1bGUvYnV0dG9uL3NhdmUuanM/MDAxNSIsIndlYnBhY2s6Ly8vLi9zY2hlbWEtYmxvY2tzL2luc3RydWN0aW9ucy9ibG9ja3MvTGlua0J1dHRvbi50c3g/MjM0YyIsIndlYnBhY2s6Ly8vLi9zY2hlbWEtYmxvY2tzL2luc3RydWN0aW9ucy9ibG9ja3MvaW5kZXgudHM/MTMyYSIsIndlYnBhY2s6Ly8vLi9zY2hlbWEtYmxvY2tzLnRzPzRlM2YiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKGFycikge1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHtcbiAgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwidW5kZWZpbmVkXCIgfHwgIShTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGFycikpKSByZXR1cm47XG4gIHZhciBfYXJyID0gW107XG4gIHZhciBfbiA9IHRydWU7XG4gIHZhciBfZCA9IGZhbHNlO1xuICB2YXIgX2UgPSB1bmRlZmluZWQ7XG5cbiAgdHJ5IHtcbiAgICBmb3IgKHZhciBfaSA9IGFycltTeW1ib2wuaXRlcmF0b3JdKCksIF9zOyAhKF9uID0gKF9zID0gX2kubmV4dCgpKS5kb25lKTsgX24gPSB0cnVlKSB7XG4gICAgICBfYXJyLnB1c2goX3MudmFsdWUpO1xuXG4gICAgICBpZiAoaSAmJiBfYXJyLmxlbmd0aCA9PT0gaSkgYnJlYWs7XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBfZCA9IHRydWU7XG4gICAgX2UgPSBlcnI7XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghX24gJiYgX2lbXCJyZXR1cm5cIl0gIT0gbnVsbCkgX2lbXCJyZXR1cm5cIl0oKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKF9kKSB0aHJvdyBfZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gX2Fycjtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufSIsImltcG9ydCBhcnJheVdpdGhIb2xlcyBmcm9tIFwiLi9hcnJheVdpdGhIb2xlc1wiO1xuaW1wb3J0IGl0ZXJhYmxlVG9BcnJheUxpbWl0IGZyb20gXCIuL2l0ZXJhYmxlVG9BcnJheUxpbWl0XCI7XG5pbXBvcnQgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgZnJvbSBcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXlcIjtcbmltcG9ydCBub25JdGVyYWJsZVJlc3QgZnJvbSBcIi4vbm9uSXRlcmFibGVSZXN0XCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfc2xpY2VkVG9BcnJheShhcnIsIGkpIHtcbiAgcmV0dXJuIGFycmF5V2l0aEhvbGVzKGFycikgfHwgaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB8fCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIsIGkpIHx8IG5vbkl0ZXJhYmxlUmVzdCgpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHtcbiAgaWYgKGtleSBpbiBvYmopIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB3cml0YWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIG9ialtrZXldID0gdmFsdWU7XG4gIH1cblxuICByZXR1cm4gb2JqO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHtcbiAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307XG4gIHZhciB0YXJnZXQgPSB7fTtcbiAgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpO1xuICB2YXIga2V5LCBpO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAga2V5ID0gc291cmNlS2V5c1tpXTtcbiAgICBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlO1xuICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufSIsImltcG9ydCBvYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCIuL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhzb3VyY2UsIGV4Y2x1ZGVkKSB7XG4gIGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9O1xuICB2YXIgdGFyZ2V0ID0gb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKTtcbiAgdmFyIGtleSwgaTtcblxuICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgIHZhciBzb3VyY2VTeW1ib2xLZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2UpO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IHNvdXJjZVN5bWJvbEtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGtleSA9IHNvdXJjZVN5bWJvbEtleXNbaV07XG4gICAgICBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlO1xuICAgICAgaWYgKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoc291cmNlLCBrZXkpKSBjb250aW51ZTtcbiAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn0iLCJpbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIjtcblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbi8qKlxuICogRXh0ZXJuYWwgZGVwZW5kZW5jaWVzXG4gKi9cbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuLyoqXG4gKiBXb3JkUHJlc3MgZGVwZW5kZW5jaWVzXG4gKi9cblxuaW1wb3J0IHsgY3JlYXRlRWxlbWVudCB9IGZyb20gJ0B3b3JkcHJlc3MvZWxlbWVudCc7IC8vIERpc2FibGUgcmVhc29uOiBKU0RvYyBsaW50ZXIgZG9lc24ndCBzZWVtIHRvIHBhcnNlIHRoZSB1bmlvbiAoYCZgKSBjb3JyZWN0bHkuXG5cbi8qIGVzbGludC1kaXNhYmxlIGpzZG9jL3ZhbGlkLXR5cGVzICovXG5cbi8qKiBAdHlwZWRlZiB7e2lzUHJlc3NlZD86IGJvb2xlYW59ICYgaW1wb3J0KCdyZWFjdCcpLkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjwnc3ZnJz59IFNWR1Byb3BzICovXG5cbi8qIGVzbGludC1lbmFibGUganNkb2MvdmFsaWQtdHlwZXMgKi9cblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydCgncmVhY3QnKS5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8J2NpcmNsZSc+fSBwcm9wc1xuICpcbiAqIEByZXR1cm4ge0pTWC5FbGVtZW50fSBDaXJjbGUgY29tcG9uZW50XG4gKi9cblxuZXhwb3J0IHZhciBDaXJjbGUgPSBmdW5jdGlvbiBDaXJjbGUocHJvcHMpIHtcbiAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoJ2NpcmNsZScsIHByb3BzKTtcbn07XG4vKipcbiAqIEBwYXJhbSB7aW1wb3J0KCdyZWFjdCcpLkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjwnZyc+fSBwcm9wc1xuICpcbiAqIEByZXR1cm4ge0pTWC5FbGVtZW50fSBHIGNvbXBvbmVudFxuICovXG5cbmV4cG9ydCB2YXIgRyA9IGZ1bmN0aW9uIEcocHJvcHMpIHtcbiAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoJ2cnLCBwcm9wcyk7XG59O1xuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydCgncmVhY3QnKS5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8J3BhdGgnPn0gcHJvcHNcbiAqXG4gKiBAcmV0dXJuIHtKU1guRWxlbWVudH0gUGF0aCBjb21wb25lbnRcbiAqL1xuXG5leHBvcnQgdmFyIFBhdGggPSBmdW5jdGlvbiBQYXRoKHByb3BzKSB7XG4gIHJldHVybiBjcmVhdGVFbGVtZW50KCdwYXRoJywgcHJvcHMpO1xufTtcbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoJ3JlYWN0JykuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPCdwb2x5Z29uJz59IHByb3BzXG4gKlxuICogQHJldHVybiB7SlNYLkVsZW1lbnR9IFBvbHlnb24gY29tcG9uZW50XG4gKi9cblxuZXhwb3J0IHZhciBQb2x5Z29uID0gZnVuY3Rpb24gUG9seWdvbihwcm9wcykge1xuICByZXR1cm4gY3JlYXRlRWxlbWVudCgncG9seWdvbicsIHByb3BzKTtcbn07XG4vKipcbiAqIEBwYXJhbSB7aW1wb3J0KCdyZWFjdCcpLkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjwncmVjdCc+fSBwcm9wc1xuICpcbiAqIEByZXR1cm4ge0pTWC5FbGVtZW50fSBSZWN0IGNvbXBvbmVudFxuICovXG5cbmV4cG9ydCB2YXIgUmVjdCA9IGZ1bmN0aW9uIFJlY3QocHJvcHMpIHtcbiAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoJ3JlY3QnLCBwcm9wcyk7XG59O1xuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydCgncmVhY3QnKS5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8J2RlZnMnPn0gcHJvcHNcbiAqXG4gKiBAcmV0dXJuIHtKU1guRWxlbWVudH0gRGVmcyBjb21wb25lbnRcbiAqL1xuXG5leHBvcnQgdmFyIERlZnMgPSBmdW5jdGlvbiBEZWZzKHByb3BzKSB7XG4gIHJldHVybiBjcmVhdGVFbGVtZW50KCdkZWZzJywgcHJvcHMpO1xufTtcbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoJ3JlYWN0JykuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPCdyYWRpYWxHcmFkaWVudCc+fSBwcm9wc1xuICpcbiAqIEByZXR1cm4ge0pTWC5FbGVtZW50fSBSYWRpYWxHcmFkaWVudCBjb21wb25lbnRcbiAqL1xuXG5leHBvcnQgdmFyIFJhZGlhbEdyYWRpZW50ID0gZnVuY3Rpb24gUmFkaWFsR3JhZGllbnQocHJvcHMpIHtcbiAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoJ3JhZGlhbEdyYWRpZW50JywgcHJvcHMpO1xufTtcbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoJ3JlYWN0JykuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPCdsaW5lYXJHcmFkaWVudCc+fSBwcm9wc1xuICpcbiAqIEByZXR1cm4ge0pTWC5FbGVtZW50fSBMaW5lYXJHcmFkaWVudCBjb21wb25lbnRcbiAqL1xuXG5leHBvcnQgdmFyIExpbmVhckdyYWRpZW50ID0gZnVuY3Rpb24gTGluZWFyR3JhZGllbnQocHJvcHMpIHtcbiAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoJ2xpbmVhckdyYWRpZW50JywgcHJvcHMpO1xufTtcbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoJ3JlYWN0JykuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPCdzdG9wJz59IHByb3BzXG4gKlxuICogQHJldHVybiB7SlNYLkVsZW1lbnR9IFN0b3AgY29tcG9uZW50XG4gKi9cblxuZXhwb3J0IHZhciBTdG9wID0gZnVuY3Rpb24gU3RvcChwcm9wcykge1xuICByZXR1cm4gY3JlYXRlRWxlbWVudCgnc3RvcCcsIHByb3BzKTtcbn07XG4vKipcbiAqXG4gKiBAcGFyYW0ge1NWR1Byb3BzfSBwcm9wcyBpc1ByZXNzZWQgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIFNWRyBzaG91bGQgYXBwZWFyIGFzIHByZXNzZWQuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICBPdGhlciBwcm9wcyB3aWxsIGJlIHBhc3NlZCB0aHJvdWdoIHRvIHN2ZyBjb21wb25lbnQuXG4gKlxuICogQHJldHVybiB7SlNYLkVsZW1lbnR9IFN0b3AgY29tcG9uZW50XG4gKi9cblxuZXhwb3J0IHZhciBTVkcgPSBmdW5jdGlvbiBTVkcoX3JlZikge1xuICB2YXIgY2xhc3NOYW1lID0gX3JlZi5jbGFzc05hbWUsXG4gICAgICBpc1ByZXNzZWQgPSBfcmVmLmlzUHJlc3NlZCxcbiAgICAgIHByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWYsIFtcImNsYXNzTmFtZVwiLCBcImlzUHJlc3NlZFwiXSk7XG5cbiAgdmFyIGFwcGxpZWRQcm9wcyA9IF9vYmplY3RTcHJlYWQoe30sIHByb3BzLCB7XG4gICAgY2xhc3NOYW1lOiBjbGFzc25hbWVzKGNsYXNzTmFtZSwge1xuICAgICAgJ2lzLXByZXNzZWQnOiBpc1ByZXNzZWRcbiAgICB9KSB8fCB1bmRlZmluZWQsXG4gICAgcm9sZTogJ2ltZycsXG4gICAgJ2FyaWEtaGlkZGVuJzogdHJ1ZSxcbiAgICBmb2N1c2FibGU6IGZhbHNlXG4gIH0pOyAvLyBEaXNhYmxlIHJlYXNvbjogV2UgbmVlZCB0byBoYXZlIGEgd2F5IHRvIHJlbmRlciBIVE1MIHRhZyBmb3Igd2ViLlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvZm9yYmlkLWVsZW1lbnRzXG5cblxuICByZXR1cm4gY3JlYXRlRWxlbWVudChcInN2Z1wiLCBhcHBsaWVkUHJvcHMpO1xufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCIsImltcG9ydCB7IGNyZWF0ZUVsZW1lbnQgfSBmcm9tIFwiQHdvcmRwcmVzcy9lbGVtZW50XCI7XG5cbi8qKlxuICogV29yZFByZXNzIGRlcGVuZGVuY2llc1xuICovXG5pbXBvcnQgeyBTVkcsIFBhdGggfSBmcm9tICdAd29yZHByZXNzL3ByaW1pdGl2ZXMnO1xudmFyIGxpbmsgPSBjcmVhdGVFbGVtZW50KFNWRywge1xuICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiXG59LCBjcmVhdGVFbGVtZW50KFBhdGgsIHtcbiAgZDogXCJNMTUuNiA3LjJIMTR2MS41aDEuNmMyIDAgMy43IDEuNyAzLjcgMy43cy0xLjcgMy43LTMuNyAzLjdIMTR2MS41aDEuNmMyLjggMCA1LjItMi4zIDUuMi01LjIgMC0yLjktMi4zLTUuMi01LjItNS4yek00LjcgMTIuNGMwLTIgMS43LTMuNyAzLjctMy43SDEwVjcuMkg4LjRjLTIuOSAwLTUuMiAyLjMtNS4yIDUuMiAwIDIuOSAyLjMgNS4yIDUuMiA1LjJIMTB2LTEuNUg4LjRjLTIgMC0zLjctMS43LTMuNy0zLjd6bTQuNi45aDUuM3YtMS41SDkuM3YxLjV6XCJcbn0pKTtcbmV4cG9ydCBkZWZhdWx0IGxpbms7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1saW5rLmpzLm1hcCIsImltcG9ydCB7IGNyZWF0ZUVsZW1lbnQgfSBmcm9tIFwiQHdvcmRwcmVzcy9lbGVtZW50XCI7XG5cbi8qKlxuICogV29yZFByZXNzIGRlcGVuZGVuY2llc1xuICovXG5pbXBvcnQgeyBTVkcsIFBhdGggfSBmcm9tICdAd29yZHByZXNzL3ByaW1pdGl2ZXMnO1xudmFyIGxpbmtPZmYgPSBjcmVhdGVFbGVtZW50KFNWRywge1xuICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiXG59LCBjcmVhdGVFbGVtZW50KFBhdGgsIHtcbiAgZDogXCJNMTUuNiA3LjNoLS43bDEuNi0zLjUtLjktLjQtMy45IDguNUg5djEuNWgybC0xLjMgMi44SDguNGMtMiAwLTMuNy0xLjctMy43LTMuN3MxLjctMy43IDMuNy0zLjdIMTBWNy4zSDguNGMtMi45IDAtNS4yIDIuMy01LjIgNS4yIDAgMi45IDIuMyA1LjIgNS4yIDUuMkg5bC0xLjQgMy4yLjkuNCA1LjctMTIuNWgxLjRjMiAwIDMuNyAxLjcgMy43IDMuN3MtMS43IDMuNy0zLjcgMy43SDE0djEuNWgxLjZjMi45IDAgNS4yLTIuMyA1LjItNS4yIDAtMi45LTIuNC01LjItNS4yLTUuMnpcIlxufSkpO1xuZXhwb3J0IGRlZmF1bHQgbGlua09mZjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxpbmstb2ZmLmpzLm1hcCIsImltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX3NsaWNlZFRvQXJyYXkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3NsaWNlZFRvQXJyYXlcIjtcbmltcG9ydCB7IGNyZWF0ZUVsZW1lbnQgfSBmcm9tIFwiQHdvcmRwcmVzcy9lbGVtZW50XCI7XG5cbmZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG4vKipcbiAqIEV4dGVybmFsIGRlcGVuZGVuY2llc1xuICovXG5pbXBvcnQgeyBwaWNrQnksIGlzRXF1YWwsIGlzT2JqZWN0LCBpZGVudGl0eSwgbWFwVmFsdWVzIH0gZnJvbSAnbG9kYXNoJztcbi8qKlxuICogV29yZFByZXNzIGRlcGVuZGVuY2llc1xuICovXG5cbmltcG9ydCB7IF9fIH0gZnJvbSAnQHdvcmRwcmVzcy9pMThuJztcbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZVJlZiwgUGxhdGZvcm0gfSBmcm9tICdAd29yZHByZXNzL2VsZW1lbnQnO1xuaW1wb3J0IHsgdXNlU2VsZWN0IH0gZnJvbSAnQHdvcmRwcmVzcy9kYXRhJztcbi8qKlxuICogSW50ZXJuYWwgZGVwZW5kZW5jaWVzXG4gKi9cblxuaW1wb3J0IHsgZ2V0Q29sb3JPYmplY3RCeUNvbG9yVmFsdWUsIGdldENvbG9yT2JqZWN0QnlBdHRyaWJ1dGVWYWx1ZXMsIGdldEdyYWRpZW50VmFsdWVCeVNsdWcsIGdldEdyYWRpZW50U2x1Z0J5VmFsdWUsIF9fZXhwZXJpbWVudGFsUGFuZWxDb2xvckdyYWRpZW50U2V0dGluZ3MgYXMgUGFuZWxDb2xvckdyYWRpZW50U2V0dGluZ3MsIENvbnRyYXN0Q2hlY2tlciwgSW5zcGVjdG9yQ29udHJvbHMgfSBmcm9tICdAd29yZHByZXNzL2Jsb2NrLWVkaXRvcic7XG52YXIgaXNXZWJQbGF0Zm9ybSA9IFBsYXRmb3JtLk9TID09PSAnd2ViJzsgLy8gVGhlIGNvZGUgaW4gdGhpcyBmaWxlIGlzIGNvcGllZCBlbnRpcmVseSBmcm9tIHRoZSBcImNvbG9yXCIgYW5kIFwic3R5bGVcIiBzdXBwb3J0IGZsYWdzXG4vLyBUaGUgZmxhZyBjYW4ndCBiZSB1c2VkIGF0IHRoZSBtb21lbnQgYmVjYXVzZSBvZiB0aGUgZXh0cmEgd3JhcHBlciBhcm91bmRcbi8vIHRoZSBidXR0b24gYmxvY2sgbWFya3VwLlxuXG5mdW5jdGlvbiBnZXRCbG9ja0RPTU5vZGUoY2xpZW50SWQpIHtcbiAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdibG9jay0nICsgY2xpZW50SWQpO1xufVxuLyoqXG4gKiBSZW1vdmVkIHVuZGVmaW5lZCB2YWx1ZXMgZnJvbSBuZXN0ZWQgb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB7Kn0gb2JqZWN0XG4gKiBAcmV0dXJuIHsqfSBPYmplY3QgY2xlYW5lZCBmcm9tIHVuZGVmaW5lZCB2YWx1ZXNcbiAqL1xuXG5cbnZhciBjbGVhbkVtcHR5T2JqZWN0ID0gZnVuY3Rpb24gY2xlYW5FbXB0eU9iamVjdChvYmplY3QpIHtcbiAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfVxuXG4gIHZhciBjbGVhbmVkTmVzdGVkT2JqZWN0cyA9IHBpY2tCeShtYXBWYWx1ZXMob2JqZWN0LCBjbGVhbkVtcHR5T2JqZWN0KSwgaWRlbnRpdHkpO1xuICByZXR1cm4gaXNFcXVhbChjbGVhbmVkTmVzdGVkT2JqZWN0cywge30pID8gdW5kZWZpbmVkIDogY2xlYW5lZE5lc3RlZE9iamVjdHM7XG59O1xuXG5mdW5jdGlvbiBDb2xvclBhbmVsKF9yZWYpIHtcbiAgdmFyIHNldHRpbmdzID0gX3JlZi5zZXR0aW5ncyxcbiAgICAgIGNsaWVudElkID0gX3JlZi5jbGllbnRJZCxcbiAgICAgIF9yZWYkZW5hYmxlQ29udHJhc3RDaCA9IF9yZWYuZW5hYmxlQ29udHJhc3RDaGVja2luZyxcbiAgICAgIGVuYWJsZUNvbnRyYXN0Q2hlY2tpbmcgPSBfcmVmJGVuYWJsZUNvbnRyYXN0Q2ggPT09IHZvaWQgMCA/IHRydWUgOiBfcmVmJGVuYWJsZUNvbnRyYXN0Q2g7XG4gIHZhciBfd2luZG93ID0gd2luZG93LFxuICAgICAgZ2V0Q29tcHV0ZWRTdHlsZSA9IF93aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSxcbiAgICAgIE5vZGUgPSBfd2luZG93Lk5vZGU7XG5cbiAgdmFyIF91c2VTdGF0ZSA9IHVzZVN0YXRlKCksXG4gICAgICBfdXNlU3RhdGUyID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlLCAyKSxcbiAgICAgIGRldGVjdGVkQmFja2dyb3VuZENvbG9yID0gX3VzZVN0YXRlMlswXSxcbiAgICAgIHNldERldGVjdGVkQmFja2dyb3VuZENvbG9yID0gX3VzZVN0YXRlMlsxXTtcblxuICB2YXIgX3VzZVN0YXRlMyA9IHVzZVN0YXRlKCksXG4gICAgICBfdXNlU3RhdGU0ID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlMywgMiksXG4gICAgICBkZXRlY3RlZENvbG9yID0gX3VzZVN0YXRlNFswXSxcbiAgICAgIHNldERldGVjdGVkQ29sb3IgPSBfdXNlU3RhdGU0WzFdO1xuXG4gIHZhciB0aXRsZSA9IGlzV2ViUGxhdGZvcm0gPyBfXygnQ29sb3Igc2V0dGluZ3MnKSA6IF9fKCdDb2xvciBTZXR0aW5ncycpO1xuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIGlmIChpc1dlYlBsYXRmb3JtICYmICFlbmFibGVDb250cmFzdENoZWNraW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGNvbG9yc0RldGVjdGlvbkVsZW1lbnQgPSBnZXRCbG9ja0RPTU5vZGUoY2xpZW50SWQpO1xuXG4gICAgaWYgKCFjb2xvcnNEZXRlY3Rpb25FbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc2V0RGV0ZWN0ZWRDb2xvcihnZXRDb21wdXRlZFN0eWxlKGNvbG9yc0RldGVjdGlvbkVsZW1lbnQpLmNvbG9yKTtcbiAgICB2YXIgYmFja2dyb3VuZENvbG9yTm9kZSA9IGNvbG9yc0RldGVjdGlvbkVsZW1lbnQ7XG4gICAgdmFyIGJhY2tncm91bmRDb2xvciA9IGdldENvbXB1dGVkU3R5bGUoYmFja2dyb3VuZENvbG9yTm9kZSkuYmFja2dyb3VuZENvbG9yO1xuXG4gICAgd2hpbGUgKGJhY2tncm91bmRDb2xvciA9PT0gJ3JnYmEoMCwgMCwgMCwgMCknICYmIGJhY2tncm91bmRDb2xvck5vZGUucGFyZW50Tm9kZSAmJiBiYWNrZ3JvdW5kQ29sb3JOb2RlLnBhcmVudE5vZGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFKSB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3JOb2RlID0gYmFja2dyb3VuZENvbG9yTm9kZS5wYXJlbnROb2RlO1xuICAgICAgYmFja2dyb3VuZENvbG9yID0gZ2V0Q29tcHV0ZWRTdHlsZShiYWNrZ3JvdW5kQ29sb3JOb2RlKS5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgfVxuXG4gICAgc2V0RGV0ZWN0ZWRCYWNrZ3JvdW5kQ29sb3IoYmFja2dyb3VuZENvbG9yKTtcbiAgfSk7XG4gIHJldHVybiBjcmVhdGVFbGVtZW50KEluc3BlY3RvckNvbnRyb2xzLCBudWxsLCBjcmVhdGVFbGVtZW50KFBhbmVsQ29sb3JHcmFkaWVudFNldHRpbmdzLCB7XG4gICAgdGl0bGU6IHRpdGxlLFxuICAgIGluaXRpYWxPcGVuOiBmYWxzZSxcbiAgICBzZXR0aW5nczogc2V0dGluZ3NcbiAgfSwgaXNXZWJQbGF0Zm9ybSAmJiBlbmFibGVDb250cmFzdENoZWNraW5nICYmIGNyZWF0ZUVsZW1lbnQoQ29udHJhc3RDaGVja2VyLCB7XG4gICAgYmFja2dyb3VuZENvbG9yOiBkZXRlY3RlZEJhY2tncm91bmRDb2xvcixcbiAgICB0ZXh0Q29sb3I6IGRldGVjdGVkQ29sb3JcbiAgfSkpKTtcbn1cbi8qKlxuICogSW5zcGVjdG9yIGNvbnRyb2wgcGFuZWwgY29udGFpbmluZyB0aGUgY29sb3IgcmVsYXRlZCBjb25maWd1cmF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzXG4gKlxuICogQHJldHVybiB7V1BFbGVtZW50fSBDb2xvciBlZGl0IGVsZW1lbnQuXG4gKi9cblxuXG5mdW5jdGlvbiBDb2xvckVkaXQocHJvcHMpIHtcbiAgdmFyIF9zdHlsZSRjb2xvcjIsIF9zdHlsZSRjb2xvcjMsIF9zdHlsZSRjb2xvcjQ7XG5cbiAgdmFyIGF0dHJpYnV0ZXMgPSBwcm9wcy5hdHRyaWJ1dGVzO1xuXG4gIHZhciBfdXNlU2VsZWN0ID0gdXNlU2VsZWN0KGZ1bmN0aW9uIChzZWxlY3QpIHtcbiAgICByZXR1cm4gc2VsZWN0KCdjb3JlL2Jsb2NrLWVkaXRvcicpLmdldFNldHRpbmdzKCk7XG4gIH0sIFtdKSxcbiAgICAgIGNvbG9ycyA9IF91c2VTZWxlY3QuY29sb3JzLFxuICAgICAgZ3JhZGllbnRzID0gX3VzZVNlbGVjdC5ncmFkaWVudHM7IC8vIFNob3VsZG4ndCBiZSBuZWVkZWQgYnV0IHJpZ2h0IG5vdyB0aGUgQ29sb3JHcmFkaWVudHNQYW5lbFxuICAvLyBjYW4gdHJpZ2dlciBib3RoIG9uQ2hhbmdlQ29sb3IgYW5kIG9uQ2hhbmdlQmFja2dyb3VuZFxuICAvLyBzeW5jaHJvbm91c2x5IGNhdXNpbmcgb3VyIHR3byBjYWxsYmFja3MgdG8gb3ZlcnJpZGUgY2hhbmdlc1xuICAvLyBmcm9tIGVhY2ggb3RoZXIuXG5cblxuICB2YXIgbG9jYWxBdHRyaWJ1dGVzID0gdXNlUmVmKGF0dHJpYnV0ZXMpO1xuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIGxvY2FsQXR0cmlidXRlcy5jdXJyZW50ID0gYXR0cmlidXRlcztcbiAgfSwgW2F0dHJpYnV0ZXNdKTtcbiAgdmFyIHN0eWxlID0gYXR0cmlidXRlcy5zdHlsZSxcbiAgICAgIHRleHRDb2xvciA9IGF0dHJpYnV0ZXMudGV4dENvbG9yLFxuICAgICAgYmFja2dyb3VuZENvbG9yID0gYXR0cmlidXRlcy5iYWNrZ3JvdW5kQ29sb3IsXG4gICAgICBncmFkaWVudCA9IGF0dHJpYnV0ZXMuZ3JhZGllbnQ7XG4gIHZhciBncmFkaWVudFZhbHVlO1xuXG4gIGlmIChncmFkaWVudCkge1xuICAgIGdyYWRpZW50VmFsdWUgPSBnZXRHcmFkaWVudFZhbHVlQnlTbHVnKGdyYWRpZW50cywgZ3JhZGllbnQpO1xuICB9IGVsc2Uge1xuICAgIHZhciBfc3R5bGUkY29sb3I7XG5cbiAgICBncmFkaWVudFZhbHVlID0gc3R5bGUgPT09IG51bGwgfHwgc3R5bGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfc3R5bGUkY29sb3IgPSBzdHlsZS5jb2xvcikgPT09IG51bGwgfHwgX3N0eWxlJGNvbG9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfc3R5bGUkY29sb3IuZ3JhZGllbnQ7XG4gIH1cblxuICB2YXIgb25DaGFuZ2VDb2xvciA9IGZ1bmN0aW9uIG9uQ2hhbmdlQ29sb3IobmFtZSkge1xuICAgIHJldHVybiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgIHZhciBfbG9jYWxBdHRyaWJ1dGVzJGN1cnIsIF9sb2NhbEF0dHJpYnV0ZXMkY3VycjI7XG5cbiAgICAgIHZhciBjb2xvck9iamVjdCA9IGdldENvbG9yT2JqZWN0QnlDb2xvclZhbHVlKGNvbG9ycywgdmFsdWUpO1xuICAgICAgdmFyIGF0dHJpYnV0ZU5hbWUgPSBuYW1lICsgJ0NvbG9yJztcblxuICAgICAgdmFyIG5ld1N0eWxlID0gX29iamVjdFNwcmVhZCh7fSwgbG9jYWxBdHRyaWJ1dGVzLmN1cnJlbnQuc3R5bGUsIHtcbiAgICAgICAgY29sb3I6IF9vYmplY3RTcHJlYWQoe30sIChfbG9jYWxBdHRyaWJ1dGVzJGN1cnIgPSBsb2NhbEF0dHJpYnV0ZXMuY3VycmVudCkgPT09IG51bGwgfHwgX2xvY2FsQXR0cmlidXRlcyRjdXJyID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX2xvY2FsQXR0cmlidXRlcyRjdXJyMiA9IF9sb2NhbEF0dHJpYnV0ZXMkY3Vyci5zdHlsZSkgPT09IG51bGwgfHwgX2xvY2FsQXR0cmlidXRlcyRjdXJyMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2xvY2FsQXR0cmlidXRlcyRjdXJyMi5jb2xvciwgX2RlZmluZVByb3BlcnR5KHt9LCBuYW1lLCAoY29sb3JPYmplY3QgPT09IG51bGwgfHwgY29sb3JPYmplY3QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbG9yT2JqZWN0LnNsdWcpID8gdW5kZWZpbmVkIDogdmFsdWUpKVxuICAgICAgfSk7XG5cbiAgICAgIHZhciBuZXdOYW1lZENvbG9yID0gKGNvbG9yT2JqZWN0ID09PSBudWxsIHx8IGNvbG9yT2JqZWN0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb2xvck9iamVjdC5zbHVnKSA/IGNvbG9yT2JqZWN0LnNsdWcgOiB1bmRlZmluZWQ7XG5cbiAgICAgIHZhciBuZXdBdHRyaWJ1dGVzID0gX2RlZmluZVByb3BlcnR5KHtcbiAgICAgICAgc3R5bGU6IGNsZWFuRW1wdHlPYmplY3QobmV3U3R5bGUpXG4gICAgICB9LCBhdHRyaWJ1dGVOYW1lLCBuZXdOYW1lZENvbG9yKTtcblxuICAgICAgcHJvcHMuc2V0QXR0cmlidXRlcyhuZXdBdHRyaWJ1dGVzKTtcbiAgICAgIGxvY2FsQXR0cmlidXRlcy5jdXJyZW50ID0gX29iamVjdFNwcmVhZCh7fSwgbG9jYWxBdHRyaWJ1dGVzLmN1cnJlbnQsIHt9LCBuZXdBdHRyaWJ1dGVzKTtcbiAgICB9O1xuICB9O1xuXG4gIHZhciBvbkNoYW5nZUdyYWRpZW50ID0gZnVuY3Rpb24gb25DaGFuZ2VHcmFkaWVudCh2YWx1ZSkge1xuICAgIHZhciBzbHVnID0gZ2V0R3JhZGllbnRTbHVnQnlWYWx1ZShncmFkaWVudHMsIHZhbHVlKTtcbiAgICB2YXIgbmV3QXR0cmlidXRlcztcblxuICAgIGlmIChzbHVnKSB7XG4gICAgICB2YXIgX2xvY2FsQXR0cmlidXRlcyRjdXJyMywgX2xvY2FsQXR0cmlidXRlcyRjdXJyNCwgX2xvY2FsQXR0cmlidXRlcyRjdXJyNTtcblxuICAgICAgdmFyIG5ld1N0eWxlID0gX29iamVjdFNwcmVhZCh7fSwgKF9sb2NhbEF0dHJpYnV0ZXMkY3VycjMgPSBsb2NhbEF0dHJpYnV0ZXMuY3VycmVudCkgPT09IG51bGwgfHwgX2xvY2FsQXR0cmlidXRlcyRjdXJyMyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2xvY2FsQXR0cmlidXRlcyRjdXJyMy5zdHlsZSwge1xuICAgICAgICBjb2xvcjogX29iamVjdFNwcmVhZCh7fSwgKF9sb2NhbEF0dHJpYnV0ZXMkY3VycjQgPSBsb2NhbEF0dHJpYnV0ZXMuY3VycmVudCkgPT09IG51bGwgfHwgX2xvY2FsQXR0cmlidXRlcyRjdXJyNCA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9sb2NhbEF0dHJpYnV0ZXMkY3VycjUgPSBfbG9jYWxBdHRyaWJ1dGVzJGN1cnI0LnN0eWxlKSA9PT0gbnVsbCB8fCBfbG9jYWxBdHRyaWJ1dGVzJGN1cnI1ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfbG9jYWxBdHRyaWJ1dGVzJGN1cnI1LmNvbG9yLCB7XG4gICAgICAgICAgZ3JhZGllbnQ6IHVuZGVmaW5lZFxuICAgICAgICB9KVxuICAgICAgfSk7XG5cbiAgICAgIG5ld0F0dHJpYnV0ZXMgPSB7XG4gICAgICAgIHN0eWxlOiBjbGVhbkVtcHR5T2JqZWN0KG5ld1N0eWxlKSxcbiAgICAgICAgZ3JhZGllbnQ6IHNsdWdcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBfbG9jYWxBdHRyaWJ1dGVzJGN1cnI2LCBfbG9jYWxBdHRyaWJ1dGVzJGN1cnI3LCBfbG9jYWxBdHRyaWJ1dGVzJGN1cnI4O1xuXG4gICAgICB2YXIgX25ld1N0eWxlID0gX29iamVjdFNwcmVhZCh7fSwgKF9sb2NhbEF0dHJpYnV0ZXMkY3VycjYgPSBsb2NhbEF0dHJpYnV0ZXMuY3VycmVudCkgPT09IG51bGwgfHwgX2xvY2FsQXR0cmlidXRlcyRjdXJyNiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2xvY2FsQXR0cmlidXRlcyRjdXJyNi5zdHlsZSwge1xuICAgICAgICBjb2xvcjogX29iamVjdFNwcmVhZCh7fSwgKF9sb2NhbEF0dHJpYnV0ZXMkY3VycjcgPSBsb2NhbEF0dHJpYnV0ZXMuY3VycmVudCkgPT09IG51bGwgfHwgX2xvY2FsQXR0cmlidXRlcyRjdXJyNyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9sb2NhbEF0dHJpYnV0ZXMkY3VycjggPSBfbG9jYWxBdHRyaWJ1dGVzJGN1cnI3LnN0eWxlKSA9PT0gbnVsbCB8fCBfbG9jYWxBdHRyaWJ1dGVzJGN1cnI4ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfbG9jYWxBdHRyaWJ1dGVzJGN1cnI4LmNvbG9yLCB7XG4gICAgICAgICAgZ3JhZGllbnQ6IHZhbHVlXG4gICAgICAgIH0pXG4gICAgICB9KTtcblxuICAgICAgbmV3QXR0cmlidXRlcyA9IHtcbiAgICAgICAgc3R5bGU6IGNsZWFuRW1wdHlPYmplY3QoX25ld1N0eWxlKSxcbiAgICAgICAgZ3JhZGllbnQ6IHVuZGVmaW5lZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBwcm9wcy5zZXRBdHRyaWJ1dGVzKG5ld0F0dHJpYnV0ZXMpO1xuICAgIGxvY2FsQXR0cmlidXRlcy5jdXJyZW50ID0gX29iamVjdFNwcmVhZCh7fSwgbG9jYWxBdHRyaWJ1dGVzLmN1cnJlbnQsIHt9LCBuZXdBdHRyaWJ1dGVzKTtcbiAgfTtcblxuICByZXR1cm4gY3JlYXRlRWxlbWVudChDb2xvclBhbmVsLCB7XG4gICAgZW5hYmxlQ29udHJhc3RDaGVja2luZzogIWdyYWRpZW50ICYmICEoc3R5bGUgPT09IG51bGwgfHwgc3R5bGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfc3R5bGUkY29sb3IyID0gc3R5bGUuY29sb3IpID09PSBudWxsIHx8IF9zdHlsZSRjb2xvcjIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9zdHlsZSRjb2xvcjIuZ3JhZGllbnQpLFxuICAgIGNsaWVudElkOiBwcm9wcy5jbGllbnRJZCxcbiAgICBzZXR0aW5nczogW3tcbiAgICAgIGxhYmVsOiBfXygnVGV4dCBDb2xvcicpLFxuICAgICAgb25Db2xvckNoYW5nZTogb25DaGFuZ2VDb2xvcigndGV4dCcpLFxuICAgICAgY29sb3JWYWx1ZTogZ2V0Q29sb3JPYmplY3RCeUF0dHJpYnV0ZVZhbHVlcyhjb2xvcnMsIHRleHRDb2xvciwgc3R5bGUgPT09IG51bGwgfHwgc3R5bGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfc3R5bGUkY29sb3IzID0gc3R5bGUuY29sb3IpID09PSBudWxsIHx8IF9zdHlsZSRjb2xvcjMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9zdHlsZSRjb2xvcjMudGV4dCkuY29sb3JcbiAgICB9LCB7XG4gICAgICBsYWJlbDogX18oJ0JhY2tncm91bmQgQ29sb3InKSxcbiAgICAgIG9uQ29sb3JDaGFuZ2U6IG9uQ2hhbmdlQ29sb3IoJ2JhY2tncm91bmQnKSxcbiAgICAgIGNvbG9yVmFsdWU6IGdldENvbG9yT2JqZWN0QnlBdHRyaWJ1dGVWYWx1ZXMoY29sb3JzLCBiYWNrZ3JvdW5kQ29sb3IsIHN0eWxlID09PSBudWxsIHx8IHN0eWxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX3N0eWxlJGNvbG9yNCA9IHN0eWxlLmNvbG9yKSA9PT0gbnVsbCB8fCBfc3R5bGUkY29sb3I0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfc3R5bGUkY29sb3I0LmJhY2tncm91bmQpLmNvbG9yLFxuICAgICAgZ3JhZGllbnRWYWx1ZTogZ3JhZGllbnRWYWx1ZSxcbiAgICAgIG9uR3JhZGllbnRDaGFuZ2U6IG9uQ2hhbmdlR3JhZGllbnRcbiAgICB9XVxuICB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29sb3JFZGl0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29sb3ItZWRpdC5qcy5tYXAiLCJpbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuXG4vKipcbiAqIEV4dGVybmFsIGRlcGVuZGVuY2llc1xuICovXG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbi8qKlxuICogV29yZFByZXNzIGRlcGVuZGVuY2llc1xuICovXG5cbmltcG9ydCB7IGdldENvbG9yQ2xhc3NOYW1lLCBnZXRDb2xvck9iamVjdEJ5QXR0cmlidXRlVmFsdWVzLCBfX2V4cGVyaW1lbnRhbEdldEdyYWRpZW50Q2xhc3MgfSBmcm9tICdAd29yZHByZXNzL2Jsb2NrLWVkaXRvcic7IC8vIFRoZSBjb2RlIGluIHRoaXMgZmlsZSBpcyBjb3BpZWQgZW50aXJlbHkgZnJvbSB0aGUgXCJjb2xvclwiIGFuZCBcInN0eWxlXCIgc3VwcG9ydCBmbGFnc1xuLy8gVGhlIGZsYWcgY2FuJ3QgYmUgdXNlZCBhdCB0aGUgbW9tZW50IGJlY2F1c2Ugb2YgdGhlIGV4dHJhIHdyYXBwZXIgYXJvdW5kXG4vLyB0aGUgYnV0dG9uIGJsb2NrIG1hcmt1cC5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q29sb3JBbmRTdHlsZVByb3BzKGF0dHJpYnV0ZXMsIGNvbG9ycykge1xuICB2YXIgX3N0eWxlJGNvbG9yLCBfc3R5bGUkY29sb3IyLCBfc3R5bGUkY29sb3IzLCBfc3R5bGUkY29sb3I0LCBfY2xhc3NuYW1lcywgX3N0eWxlJGNvbG9yNSwgX3N0eWxlJGNvbG9yNiwgX3N0eWxlJGNvbG9yNywgX3N0eWxlJGNvbG9yOCwgX3N0eWxlJGNvbG9yOSwgX3N0eWxlJGNvbG9yMTA7XG5cbiAgdmFyIGlzRWRpdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogZmFsc2U7XG4gIC8vIEknZCBoYXZlIHByZWZlcmVkIHRvIGF2b2lkIHRoZSBcInN0eWxlXCIgYXR0cmlidXRlIHVzYWdlIGhlcmVcbiAgdmFyIGJhY2tncm91bmRDb2xvciA9IGF0dHJpYnV0ZXMuYmFja2dyb3VuZENvbG9yLFxuICAgICAgdGV4dENvbG9yID0gYXR0cmlidXRlcy50ZXh0Q29sb3IsXG4gICAgICBncmFkaWVudCA9IGF0dHJpYnV0ZXMuZ3JhZGllbnQsXG4gICAgICBzdHlsZSA9IGF0dHJpYnV0ZXMuc3R5bGU7XG4gIHZhciBiYWNrZ3JvdW5kQ2xhc3MgPSBnZXRDb2xvckNsYXNzTmFtZSgnYmFja2dyb3VuZC1jb2xvcicsIGJhY2tncm91bmRDb2xvcik7XG5cbiAgdmFyIGdyYWRpZW50Q2xhc3MgPSBfX2V4cGVyaW1lbnRhbEdldEdyYWRpZW50Q2xhc3MoZ3JhZGllbnQpO1xuXG4gIHZhciB0ZXh0Q2xhc3MgPSBnZXRDb2xvckNsYXNzTmFtZSgnY29sb3InLCB0ZXh0Q29sb3IpO1xuICB2YXIgY2xhc3NOYW1lID0gY2xhc3NuYW1lcyh0ZXh0Q2xhc3MsIGdyYWRpZW50Q2xhc3MsIChfY2xhc3NuYW1lcyA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzbmFtZXMsIGJhY2tncm91bmRDbGFzcywgIShzdHlsZSA9PT0gbnVsbCB8fCBzdHlsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9zdHlsZSRjb2xvciA9IHN0eWxlLmNvbG9yKSA9PT0gbnVsbCB8fCBfc3R5bGUkY29sb3IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9zdHlsZSRjb2xvci5ncmFkaWVudCkgJiYgISFiYWNrZ3JvdW5kQ2xhc3MpLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzbmFtZXMsICdoYXMtdGV4dC1jb2xvcicsIHRleHRDb2xvciB8fCAoc3R5bGUgPT09IG51bGwgfHwgc3R5bGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfc3R5bGUkY29sb3IyID0gc3R5bGUuY29sb3IpID09PSBudWxsIHx8IF9zdHlsZSRjb2xvcjIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9zdHlsZSRjb2xvcjIudGV4dCkpLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzbmFtZXMsICdoYXMtYmFja2dyb3VuZCcsIGJhY2tncm91bmRDb2xvciB8fCAoc3R5bGUgPT09IG51bGwgfHwgc3R5bGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfc3R5bGUkY29sb3IzID0gc3R5bGUuY29sb3IpID09PSBudWxsIHx8IF9zdHlsZSRjb2xvcjMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9zdHlsZSRjb2xvcjMuYmFja2dyb3VuZCkgfHwgZ3JhZGllbnQgfHwgKHN0eWxlID09PSBudWxsIHx8IHN0eWxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX3N0eWxlJGNvbG9yNCA9IHN0eWxlLmNvbG9yKSA9PT0gbnVsbCB8fCBfc3R5bGUkY29sb3I0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfc3R5bGUkY29sb3I0LmdyYWRpZW50KSksIF9jbGFzc25hbWVzKSk7XG4gIHZhciBzdHlsZVByb3AgPSAoc3R5bGUgPT09IG51bGwgfHwgc3R5bGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfc3R5bGUkY29sb3I1ID0gc3R5bGUuY29sb3IpID09PSBudWxsIHx8IF9zdHlsZSRjb2xvcjUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9zdHlsZSRjb2xvcjUuYmFja2dyb3VuZCkgfHwgKHN0eWxlID09PSBudWxsIHx8IHN0eWxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX3N0eWxlJGNvbG9yNiA9IHN0eWxlLmNvbG9yKSA9PT0gbnVsbCB8fCBfc3R5bGUkY29sb3I2ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfc3R5bGUkY29sb3I2LnRleHQpIHx8IChzdHlsZSA9PT0gbnVsbCB8fCBzdHlsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9zdHlsZSRjb2xvcjcgPSBzdHlsZS5jb2xvcikgPT09IG51bGwgfHwgX3N0eWxlJGNvbG9yNyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3N0eWxlJGNvbG9yNy5ncmFkaWVudCkgPyB7XG4gICAgYmFja2dyb3VuZDogKHN0eWxlID09PSBudWxsIHx8IHN0eWxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX3N0eWxlJGNvbG9yOCA9IHN0eWxlLmNvbG9yKSA9PT0gbnVsbCB8fCBfc3R5bGUkY29sb3I4ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfc3R5bGUkY29sb3I4LmdyYWRpZW50KSA/IHN0eWxlLmNvbG9yLmdyYWRpZW50IDogdW5kZWZpbmVkLFxuICAgIGJhY2tncm91bmRDb2xvcjogKHN0eWxlID09PSBudWxsIHx8IHN0eWxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX3N0eWxlJGNvbG9yOSA9IHN0eWxlLmNvbG9yKSA9PT0gbnVsbCB8fCBfc3R5bGUkY29sb3I5ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfc3R5bGUkY29sb3I5LmJhY2tncm91bmQpID8gc3R5bGUuY29sb3IuYmFja2dyb3VuZCA6IHVuZGVmaW5lZCxcbiAgICBjb2xvcjogKHN0eWxlID09PSBudWxsIHx8IHN0eWxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX3N0eWxlJGNvbG9yMTAgPSBzdHlsZS5jb2xvcikgPT09IG51bGwgfHwgX3N0eWxlJGNvbG9yMTAgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9zdHlsZSRjb2xvcjEwLnRleHQpID8gc3R5bGUuY29sb3IudGV4dCA6IHVuZGVmaW5lZFxuICB9IDoge307IC8vIFRoaXMgaXMgbmVlZGVkIG9ubHkgZm9yIHRoZW1lcyB0aGF0IGRvbid0IGxvYWQgdGhlaXIgY29sb3Igc3R5bGVzaGVldHMgaW4gdGhlIGVkaXRvclxuICAvLyBXZSBmb3JjZSBhbiBpbmxpbmUgc3R5bGUgdG8gYXBwbHkgdGhlIGNvbG9yLlxuXG4gIGlmIChpc0VkaXQpIHtcbiAgICBpZiAoYmFja2dyb3VuZENvbG9yKSB7XG4gICAgICB2YXIgYmFja2dyb3VuZENvbG9yT2JqZWN0ID0gZ2V0Q29sb3JPYmplY3RCeUF0dHJpYnV0ZVZhbHVlcyhjb2xvcnMsIGJhY2tncm91bmRDb2xvcik7XG4gICAgICBzdHlsZVByb3AuYmFja2dyb3VuZENvbG9yID0gYmFja2dyb3VuZENvbG9yT2JqZWN0LmNvbG9yO1xuICAgIH1cblxuICAgIGlmICh0ZXh0Q29sb3IpIHtcbiAgICAgIHZhciB0ZXh0Q29sb3JPYmplY3QgPSBnZXRDb2xvck9iamVjdEJ5QXR0cmlidXRlVmFsdWVzKGNvbG9ycywgdGV4dENvbG9yKTtcbiAgICAgIHN0eWxlUHJvcC5jb2xvciA9IHRleHRDb2xvck9iamVjdC5jb2xvcjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGNsYXNzTmFtZTogISFjbGFzc05hbWUgPyBjbGFzc05hbWUgOiB1bmRlZmluZWQsXG4gICAgc3R5bGU6IHN0eWxlUHJvcFxuICB9O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29sb3ItcHJvcHMuanMubWFwIiwiaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfc2xpY2VkVG9BcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2xpY2VkVG9BcnJheVwiO1xuaW1wb3J0IHsgY3JlYXRlRWxlbWVudCwgRnJhZ21lbnQgfSBmcm9tIFwiQHdvcmRwcmVzcy9lbGVtZW50XCI7XG5cbmZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG4vKipcbiAqIEV4dGVybmFsIGRlcGVuZGVuY2llc1xuICovXG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbi8qKlxuICogV29yZFByZXNzIGRlcGVuZGVuY2llc1xuICovXG5cbmltcG9ydCB7IF9fIH0gZnJvbSAnQHdvcmRwcmVzcy9pMThuJztcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VTdGF0ZSB9IGZyb20gJ0B3b3JkcHJlc3MvZWxlbWVudCc7XG5pbXBvcnQgeyBLZXlib2FyZFNob3J0Y3V0cywgUGFuZWxCb2R5LCBSYW5nZUNvbnRyb2wsIFRleHRDb250cm9sLCBUb2dnbGVDb250cm9sLCBUb29sYmFyQnV0dG9uLCBUb29sYmFyR3JvdXAsIFBvcG92ZXIgfSBmcm9tICdAd29yZHByZXNzL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQmxvY2tDb250cm9scywgSW5zcGVjdG9yQ29udHJvbHMsIFJpY2hUZXh0LCBfX2V4cGVyaW1lbnRhbEJsb2NrIGFzIEJsb2NrLCBfX2V4cGVyaW1lbnRhbExpbmtDb250cm9sIGFzIExpbmtDb250cm9sIH0gZnJvbSAnQHdvcmRwcmVzcy9ibG9jay1lZGl0b3InO1xuaW1wb3J0IHsgcmF3U2hvcnRjdXQsIGRpc3BsYXlTaG9ydGN1dCB9IGZyb20gJ0B3b3JkcHJlc3Mva2V5Y29kZXMnO1xuaW1wb3J0IHsgbGluaywgbGlua09mZiB9IGZyb20gJ0B3b3JkcHJlc3MvaWNvbnMnO1xuaW1wb3J0IHsgY3JlYXRlQmxvY2sgfSBmcm9tICdAd29yZHByZXNzL2Jsb2Nrcyc7XG5pbXBvcnQgeyB1c2VTZWxlY3QgfSBmcm9tICdAd29yZHByZXNzL2RhdGEnO1xuLyoqXG4gKiBJbnRlcm5hbCBkZXBlbmRlbmNpZXNcbiAqL1xuXG5pbXBvcnQgQ29sb3JFZGl0IGZyb20gJy4vY29sb3ItZWRpdCc7XG5pbXBvcnQgZ2V0Q29sb3JBbmRTdHlsZVByb3BzIGZyb20gJy4vY29sb3ItcHJvcHMnO1xudmFyIE5FV19UQUJfUkVMID0gJ25vcmVmZXJyZXIgbm9vcGVuZXInO1xudmFyIE1JTl9CT1JERVJfUkFESVVTX1ZBTFVFID0gMDtcbnZhciBNQVhfQk9SREVSX1JBRElVU19WQUxVRSA9IDUwO1xudmFyIElOSVRJQUxfQk9SREVSX1JBRElVU19QT1NJVElPTiA9IDU7XG5cbmZ1bmN0aW9uIEJvcmRlclBhbmVsKF9yZWYpIHtcbiAgdmFyIF9yZWYkYm9yZGVyUmFkaXVzID0gX3JlZi5ib3JkZXJSYWRpdXMsXG4gICAgICBib3JkZXJSYWRpdXMgPSBfcmVmJGJvcmRlclJhZGl1cyA9PT0gdm9pZCAwID8gJycgOiBfcmVmJGJvcmRlclJhZGl1cyxcbiAgICAgIHNldEF0dHJpYnV0ZXMgPSBfcmVmLnNldEF0dHJpYnV0ZXM7XG4gIHZhciBpbml0aWFsQm9yZGVyUmFkaXVzID0gYm9yZGVyUmFkaXVzO1xuICB2YXIgc2V0Qm9yZGVyUmFkaXVzID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKG5ld0JvcmRlclJhZGl1cykge1xuICAgIGlmIChuZXdCb3JkZXJSYWRpdXMgPT09IHVuZGVmaW5lZCkgc2V0QXR0cmlidXRlcyh7XG4gICAgICBib3JkZXJSYWRpdXM6IGluaXRpYWxCb3JkZXJSYWRpdXNcbiAgICB9KTtlbHNlIHNldEF0dHJpYnV0ZXMoe1xuICAgICAgYm9yZGVyUmFkaXVzOiBuZXdCb3JkZXJSYWRpdXNcbiAgICB9KTtcbiAgfSwgW3NldEF0dHJpYnV0ZXNdKTtcbiAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoUGFuZWxCb2R5LCB7XG4gICAgdGl0bGU6IF9fKCdCb3JkZXIgc2V0dGluZ3MnKVxuICB9LCBjcmVhdGVFbGVtZW50KFJhbmdlQ29udHJvbCwge1xuICAgIHZhbHVlOiBib3JkZXJSYWRpdXMsXG4gICAgbGFiZWw6IF9fKCdCb3JkZXIgcmFkaXVzJyksXG4gICAgbWluOiBNSU5fQk9SREVSX1JBRElVU19WQUxVRSxcbiAgICBtYXg6IE1BWF9CT1JERVJfUkFESVVTX1ZBTFVFLFxuICAgIGluaXRpYWxQb3NpdGlvbjogSU5JVElBTF9CT1JERVJfUkFESVVTX1BPU0lUSU9OLFxuICAgIGFsbG93UmVzZXQ6IHRydWUsXG4gICAgb25DaGFuZ2U6IHNldEJvcmRlclJhZGl1c1xuICB9KSk7XG59XG5cbmZ1bmN0aW9uIFVSTFBpY2tlcihfcmVmMikge1xuICB2YXIgX3JlZjQ7XG5cbiAgdmFyIGlzU2VsZWN0ZWQgPSBfcmVmMi5pc1NlbGVjdGVkLFxuICAgICAgdXJsID0gX3JlZjIudXJsLFxuICAgICAgc2V0QXR0cmlidXRlcyA9IF9yZWYyLnNldEF0dHJpYnV0ZXMsXG4gICAgICBvcGVuc0luTmV3VGFiID0gX3JlZjIub3BlbnNJbk5ld1RhYixcbiAgICAgIG9uVG9nZ2xlT3BlbkluTmV3VGFiID0gX3JlZjIub25Ub2dnbGVPcGVuSW5OZXdUYWI7XG5cbiAgdmFyIF91c2VTdGF0ZSA9IHVzZVN0YXRlKGZhbHNlKSxcbiAgICAgIF91c2VTdGF0ZTIgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUsIDIpLFxuICAgICAgaXNVUkxQaWNrZXJPcGVuID0gX3VzZVN0YXRlMlswXSxcbiAgICAgIHNldElzVVJMUGlja2VyT3BlbiA9IF91c2VTdGF0ZTJbMV07XG5cbiAgdmFyIHVybElzU2V0ID0gISF1cmw7XG4gIHZhciB1cmxJc1NldGFuZFNlbGVjdGVkID0gdXJsSXNTZXQgJiYgaXNTZWxlY3RlZDtcblxuICB2YXIgb3BlbkxpbmtDb250cm9sID0gZnVuY3Rpb24gb3BlbkxpbmtDb250cm9sKCkge1xuICAgIHNldElzVVJMUGlja2VyT3Blbih0cnVlKTtcbiAgICByZXR1cm4gZmFsc2U7IC8vIHByZXZlbnRzIGRlZmF1bHQgYmVoYXZpb3VyIGZvciBldmVudFxuICB9O1xuXG4gIHZhciB1bmxpbmtCdXR0b24gPSBmdW5jdGlvbiB1bmxpbmtCdXR0b24oKSB7XG4gICAgc2V0QXR0cmlidXRlcyh7XG4gICAgICB1cmw6IHVuZGVmaW5lZCxcbiAgICAgIGxpbmtUYXJnZXQ6IHVuZGVmaW5lZCxcbiAgICAgIHJlbDogdW5kZWZpbmVkXG4gICAgfSk7XG4gICAgc2V0SXNVUkxQaWNrZXJPcGVuKGZhbHNlKTtcbiAgfTtcblxuICB2YXIgbGlua0NvbnRyb2wgPSAoaXNVUkxQaWNrZXJPcGVuIHx8IHVybElzU2V0YW5kU2VsZWN0ZWQpICYmIGNyZWF0ZUVsZW1lbnQoUG9wb3Zlciwge1xuICAgIHBvc2l0aW9uOiBcImJvdHRvbSBjZW50ZXJcIixcbiAgICBvbkNsb3NlOiBmdW5jdGlvbiBvbkNsb3NlKCkge1xuICAgICAgcmV0dXJuIHNldElzVVJMUGlja2VyT3BlbihmYWxzZSk7XG4gICAgfVxuICB9LCBjcmVhdGVFbGVtZW50KExpbmtDb250cm9sLCB7XG4gICAgY2xhc3NOYW1lOiBcIndwLWJsb2NrLW5hdmlnYXRpb24tbGlua19faW5saW5lLWxpbmstaW5wdXRcIixcbiAgICB2YWx1ZToge1xuICAgICAgdXJsOiB1cmwsXG4gICAgICBvcGVuc0luTmV3VGFiOiBvcGVuc0luTmV3VGFiXG4gICAgfSxcbiAgICBvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoX3JlZjMpIHtcbiAgICAgIHZhciBfcmVmMyR1cmwgPSBfcmVmMy51cmwsXG4gICAgICAgICAgbmV3VVJMID0gX3JlZjMkdXJsID09PSB2b2lkIDAgPyAnJyA6IF9yZWYzJHVybCxcbiAgICAgICAgICBuZXdPcGVuc0luTmV3VGFiID0gX3JlZjMub3BlbnNJbk5ld1RhYjtcbiAgICAgIHNldEF0dHJpYnV0ZXMoe1xuICAgICAgICB1cmw6IG5ld1VSTFxuICAgICAgfSk7XG5cbiAgICAgIGlmIChvcGVuc0luTmV3VGFiICE9PSBuZXdPcGVuc0luTmV3VGFiKSB7XG4gICAgICAgIG9uVG9nZ2xlT3BlbkluTmV3VGFiKG5ld09wZW5zSW5OZXdUYWIpO1xuICAgICAgfVxuICAgIH1cbiAgfSkpO1xuICByZXR1cm4gY3JlYXRlRWxlbWVudChGcmFnbWVudCwgbnVsbCwgY3JlYXRlRWxlbWVudChCbG9ja0NvbnRyb2xzLCBudWxsLCBjcmVhdGVFbGVtZW50KFRvb2xiYXJHcm91cCwgbnVsbCwgIXVybElzU2V0ICYmIGNyZWF0ZUVsZW1lbnQoVG9vbGJhckJ1dHRvbiwge1xuICAgIG5hbWU6IFwibGlua1wiLFxuICAgIGljb246IGxpbmssXG4gICAgdGl0bGU6IF9fKCdMaW5rJyksXG4gICAgc2hvcnRjdXQ6IGRpc3BsYXlTaG9ydGN1dC5wcmltYXJ5KCdrJyksXG4gICAgb25DbGljazogb3BlbkxpbmtDb250cm9sXG4gIH0pLCB1cmxJc1NldGFuZFNlbGVjdGVkICYmIGNyZWF0ZUVsZW1lbnQoVG9vbGJhckJ1dHRvbiwge1xuICAgIG5hbWU6IFwibGlua1wiLFxuICAgIGljb246IGxpbmtPZmYsXG4gICAgdGl0bGU6IF9fKCdVbmxpbmsnKSxcbiAgICBzaG9ydGN1dDogZGlzcGxheVNob3J0Y3V0LnByaW1hcnlTaGlmdCgnaycpLFxuICAgIG9uQ2xpY2s6IHVubGlua0J1dHRvbixcbiAgICBpc0FjdGl2ZTogdHJ1ZVxuICB9KSkpLCBpc1NlbGVjdGVkICYmIGNyZWF0ZUVsZW1lbnQoS2V5Ym9hcmRTaG9ydGN1dHMsIHtcbiAgICBiaW5kR2xvYmFsOiB0cnVlLFxuICAgIHNob3J0Y3V0czogKF9yZWY0ID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfcmVmNCwgcmF3U2hvcnRjdXQucHJpbWFyeSgnaycpLCBvcGVuTGlua0NvbnRyb2wpLCBfZGVmaW5lUHJvcGVydHkoX3JlZjQsIHJhd1Nob3J0Y3V0LnByaW1hcnlTaGlmdCgnaycpLCB1bmxpbmtCdXR0b24pLCBfcmVmNClcbiAgfSksIGxpbmtDb250cm9sKTtcbn1cblxuZnVuY3Rpb24gQnV0dG9uRWRpdChwcm9wcykge1xuICB2YXIgYXR0cmlidXRlcyA9IHByb3BzLmF0dHJpYnV0ZXMsXG4gICAgICBzZXRBdHRyaWJ1dGVzID0gcHJvcHMuc2V0QXR0cmlidXRlcyxcbiAgICAgIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSxcbiAgICAgIGlzU2VsZWN0ZWQgPSBwcm9wcy5pc1NlbGVjdGVkLFxuICAgICAgb25SZXBsYWNlID0gcHJvcHMub25SZXBsYWNlLFxuICAgICAgbWVyZ2VCbG9ja3MgPSBwcm9wcy5tZXJnZUJsb2NrcztcbiAgdmFyIGJvcmRlclJhZGl1cyA9IGF0dHJpYnV0ZXMuYm9yZGVyUmFkaXVzLFxuICAgICAgbGlua1RhcmdldCA9IGF0dHJpYnV0ZXMubGlua1RhcmdldCxcbiAgICAgIHBsYWNlaG9sZGVyID0gYXR0cmlidXRlcy5wbGFjZWhvbGRlcixcbiAgICAgIHJlbCA9IGF0dHJpYnV0ZXMucmVsLFxuICAgICAgdGV4dCA9IGF0dHJpYnV0ZXMudGV4dCxcbiAgICAgIHVybCA9IGF0dHJpYnV0ZXMudXJsO1xuICB2YXIgb25TZXRMaW5rUmVsID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgc2V0QXR0cmlidXRlcyh7XG4gICAgICByZWw6IHZhbHVlXG4gICAgfSk7XG4gIH0sIFtzZXRBdHRyaWJ1dGVzXSk7XG5cbiAgdmFyIF91c2VTZWxlY3QgPSB1c2VTZWxlY3QoZnVuY3Rpb24gKHNlbGVjdCkge1xuICAgIHJldHVybiBzZWxlY3QoJ2NvcmUvYmxvY2stZWRpdG9yJykuZ2V0U2V0dGluZ3MoKTtcbiAgfSwgW10pLFxuICAgICAgY29sb3JzID0gX3VzZVNlbGVjdC5jb2xvcnM7XG5cbiAgdmFyIG9uVG9nZ2xlT3BlbkluTmV3VGFiID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgdmFyIG5ld0xpbmtUYXJnZXQgPSB2YWx1ZSA/ICdfYmxhbmsnIDogdW5kZWZpbmVkO1xuICAgIHZhciB1cGRhdGVkUmVsID0gcmVsO1xuXG4gICAgaWYgKG5ld0xpbmtUYXJnZXQgJiYgIXJlbCkge1xuICAgICAgdXBkYXRlZFJlbCA9IE5FV19UQUJfUkVMO1xuICAgIH0gZWxzZSBpZiAoIW5ld0xpbmtUYXJnZXQgJiYgcmVsID09PSBORVdfVEFCX1JFTCkge1xuICAgICAgdXBkYXRlZFJlbCA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBzZXRBdHRyaWJ1dGVzKHtcbiAgICAgIGxpbmtUYXJnZXQ6IG5ld0xpbmtUYXJnZXQsXG4gICAgICByZWw6IHVwZGF0ZWRSZWxcbiAgICB9KTtcbiAgfSwgW3JlbCwgc2V0QXR0cmlidXRlc10pO1xuICB2YXIgY29sb3JQcm9wcyA9IGdldENvbG9yQW5kU3R5bGVQcm9wcyhhdHRyaWJ1dGVzLCBjb2xvcnMsIHRydWUpO1xuICByZXR1cm4gY3JlYXRlRWxlbWVudChGcmFnbWVudCwgbnVsbCwgY3JlYXRlRWxlbWVudChDb2xvckVkaXQsIHByb3BzKSwgY3JlYXRlRWxlbWVudChCbG9jay5kaXYsIG51bGwsIGNyZWF0ZUVsZW1lbnQoUmljaFRleHQsIHtcbiAgICBwbGFjZWhvbGRlcjogcGxhY2Vob2xkZXIgfHwgX18oJ0FkZCB0ZXh04oCmJyksXG4gICAgdmFsdWU6IHRleHQsXG4gICAgb25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlKSB7XG4gICAgICByZXR1cm4gc2V0QXR0cmlidXRlcyh7XG4gICAgICAgIHRleHQ6IHZhbHVlXG4gICAgICB9KTtcbiAgICB9LFxuICAgIHdpdGhvdXRJbnRlcmFjdGl2ZUZvcm1hdHRpbmc6IHRydWUsXG4gICAgY2xhc3NOYW1lOiBjbGFzc25hbWVzKGNsYXNzTmFtZSwgJ3dwLWJsb2NrLWJ1dHRvbl9fbGluaycsIGNvbG9yUHJvcHMuY2xhc3NOYW1lLCB7XG4gICAgICAnbm8tYm9yZGVyLXJhZGl1cyc6IGJvcmRlclJhZGl1cyA9PT0gMFxuICAgIH0pLFxuICAgIHN0eWxlOiBfb2JqZWN0U3ByZWFkKHtcbiAgICAgIGJvcmRlclJhZGl1czogYm9yZGVyUmFkaXVzID8gYm9yZGVyUmFkaXVzICsgJ3B4JyA6IHVuZGVmaW5lZFxuICAgIH0sIGNvbG9yUHJvcHMuc3R5bGUpLFxuICAgIG9uU3BsaXQ6IGZ1bmN0aW9uIG9uU3BsaXQodmFsdWUpIHtcbiAgICAgIHJldHVybiBjcmVhdGVCbG9jaygnY29yZS9idXR0b24nLCBfb2JqZWN0U3ByZWFkKHt9LCBhdHRyaWJ1dGVzLCB7XG4gICAgICAgIHRleHQ6IHZhbHVlXG4gICAgICB9KSk7XG4gICAgfSxcbiAgICBvblJlcGxhY2U6IG9uUmVwbGFjZSxcbiAgICBvbk1lcmdlOiBtZXJnZUJsb2NrcyxcbiAgICBpZGVudGlmaWVyOiBcInRleHRcIlxuICB9KSksIGNyZWF0ZUVsZW1lbnQoVVJMUGlja2VyLCB7XG4gICAgdXJsOiB1cmwsXG4gICAgc2V0QXR0cmlidXRlczogc2V0QXR0cmlidXRlcyxcbiAgICBpc1NlbGVjdGVkOiBpc1NlbGVjdGVkLFxuICAgIG9wZW5zSW5OZXdUYWI6IGxpbmtUYXJnZXQgPT09ICdfYmxhbmsnLFxuICAgIG9uVG9nZ2xlT3BlbkluTmV3VGFiOiBvblRvZ2dsZU9wZW5Jbk5ld1RhYlxuICB9KSwgY3JlYXRlRWxlbWVudChJbnNwZWN0b3JDb250cm9scywgbnVsbCwgY3JlYXRlRWxlbWVudChCb3JkZXJQYW5lbCwge1xuICAgIGJvcmRlclJhZGl1czogYm9yZGVyUmFkaXVzLFxuICAgIHNldEF0dHJpYnV0ZXM6IHNldEF0dHJpYnV0ZXNcbiAgfSksIGNyZWF0ZUVsZW1lbnQoUGFuZWxCb2R5LCB7XG4gICAgdGl0bGU6IF9fKCdMaW5rIHNldHRpbmdzJylcbiAgfSwgY3JlYXRlRWxlbWVudChUb2dnbGVDb250cm9sLCB7XG4gICAgbGFiZWw6IF9fKCdPcGVuIGluIG5ldyB0YWInKSxcbiAgICBvbkNoYW5nZTogb25Ub2dnbGVPcGVuSW5OZXdUYWIsXG4gICAgY2hlY2tlZDogbGlua1RhcmdldCA9PT0gJ19ibGFuaydcbiAgfSksIGNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcbiAgICBsYWJlbDogX18oJ0xpbmsgcmVsJyksXG4gICAgdmFsdWU6IHJlbCB8fCAnJyxcbiAgICBvbkNoYW5nZTogb25TZXRMaW5rUmVsXG4gIH0pKSkpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBCdXR0b25FZGl0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZWRpdC5qcy5tYXAiLCJpbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IHsgY3JlYXRlRWxlbWVudCB9IGZyb20gXCJAd29yZHByZXNzL2VsZW1lbnRcIjtcblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbi8qKlxuICogRXh0ZXJuYWwgZGVwZW5kZW5jaWVzXG4gKi9cbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuLyoqXG4gKiBXb3JkUHJlc3MgZGVwZW5kZW5jaWVzXG4gKi9cblxuaW1wb3J0IHsgUmljaFRleHQgfSBmcm9tICdAd29yZHByZXNzL2Jsb2NrLWVkaXRvcic7XG4vKipcbiAqIEludGVybmFsIGRlcGVuZGVuY2llc1xuICovXG5cbmltcG9ydCBnZXRDb2xvckFuZFN0eWxlUHJvcHMgZnJvbSAnLi9jb2xvci1wcm9wcyc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzYXZlKF9yZWYpIHtcbiAgdmFyIGF0dHJpYnV0ZXMgPSBfcmVmLmF0dHJpYnV0ZXM7XG4gIHZhciBib3JkZXJSYWRpdXMgPSBhdHRyaWJ1dGVzLmJvcmRlclJhZGl1cyxcbiAgICAgIGxpbmtUYXJnZXQgPSBhdHRyaWJ1dGVzLmxpbmtUYXJnZXQsXG4gICAgICByZWwgPSBhdHRyaWJ1dGVzLnJlbCxcbiAgICAgIHRleHQgPSBhdHRyaWJ1dGVzLnRleHQsXG4gICAgICB0aXRsZSA9IGF0dHJpYnV0ZXMudGl0bGUsXG4gICAgICB1cmwgPSBhdHRyaWJ1dGVzLnVybDtcbiAgdmFyIGNvbG9yUHJvcHMgPSBnZXRDb2xvckFuZFN0eWxlUHJvcHMoYXR0cmlidXRlcyk7XG4gIHZhciBidXR0b25DbGFzc2VzID0gY2xhc3NuYW1lcygnd3AtYmxvY2stYnV0dG9uX19saW5rJywgY29sb3JQcm9wcy5jbGFzc05hbWUsIHtcbiAgICAnbm8tYm9yZGVyLXJhZGl1cyc6IGJvcmRlclJhZGl1cyA9PT0gMFxuICB9KTtcblxuICB2YXIgYnV0dG9uU3R5bGUgPSBfb2JqZWN0U3ByZWFkKHtcbiAgICBib3JkZXJSYWRpdXM6IGJvcmRlclJhZGl1cyA/IGJvcmRlclJhZGl1cyArICdweCcgOiB1bmRlZmluZWRcbiAgfSwgY29sb3JQcm9wcy5zdHlsZSk7IC8vIFRoZSB1c2Ugb2YgYSBgdGl0bGVgIGF0dHJpYnV0ZSBoZXJlIGlzIHNvZnQtZGVwcmVjYXRlZCwgYnV0IHN0aWxsIGFwcGxpZWRcbiAgLy8gaWYgaXQgaGFkIGFscmVhZHkgYmVlbiBhc3NpZ25lZCwgZm9yIHRoZSBzYWtlIG9mIGJhY2t3YXJkLWNvbXBhdGliaWxpdHkuXG4gIC8vIEEgdGl0bGUgd2lsbCBubyBsb25nZXIgYmUgYXNzaWduZWQgZm9yIG5ldyBvciB1cGRhdGVkIGJ1dHRvbiBibG9jayBsaW5rcy5cblxuXG4gIHJldHVybiBjcmVhdGVFbGVtZW50KFwiZGl2XCIsIG51bGwsIGNyZWF0ZUVsZW1lbnQoUmljaFRleHQuQ29udGVudCwge1xuICAgIHRhZ05hbWU6IFwiYVwiLFxuICAgIGNsYXNzTmFtZTogYnV0dG9uQ2xhc3NlcyxcbiAgICBocmVmOiB1cmwsXG4gICAgdGl0bGU6IHRpdGxlLFxuICAgIHN0eWxlOiBidXR0b25TdHlsZSxcbiAgICB2YWx1ZTogdGV4dCxcbiAgICB0YXJnZXQ6IGxpbmtUYXJnZXQsXG4gICAgcmVsOiByZWxcbiAgfSkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2F2ZS5qcy5tYXAiLCJ2YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbmltcG9ydCB7IGNyZWF0ZUVsZW1lbnQgfSBmcm9tIFwicmVhY3RcIjtcbi8vIEB0cy1pZ25vcmUgLS0gTm8gdHlwaW5ncyBleGlzdCBmb3IgdGhpcyBjbGFzcy5cbmltcG9ydCBCdXR0b25FZGl0IGZyb20gXCJAd29yZHByZXNzL2Jsb2NrLWxpYnJhcnkvYnVpbGQtbW9kdWxlL2J1dHRvbi9lZGl0XCI7XG4vLyBAdHMtaWdub3JlIC0tIE5vIHR5cGluZ3MgZXhpc3QgZm9yIHRoaXMgY2xhc3MuXG5pbXBvcnQgQnV0dG9uU2F2ZSBmcm9tIFwiQHdvcmRwcmVzcy9ibG9jay1saWJyYXJ5L2J1aWxkLW1vZHVsZS9idXR0b24vc2F2ZVwiO1xuaW1wb3J0IHsgQmxvY2tJbnN0cnVjdGlvbiwgQmxvY2tQcmVzZW5jZSwgQmxvY2tWYWxpZGF0aW9uUmVzdWx0LCBhdHRyaWJ1dGVFeGlzdHMsIGF0dHJpYnV0ZU5vdEVtcHR5LCB9IGZyb20gXCJAeW9hc3Qvc2NoZW1hLWJsb2Nrc1wiO1xuLyoqXG4gKiBMaW5rIGJ1dHRvbiBibG9jayBpbnN0cnVjdGlvbi5cbiAqL1xudmFyIExpbmtCdXR0b24gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKExpbmtCdXR0b24sIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gTGlua0J1dHRvbigpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZW5kZXJzIHNhdmluZyB0aGUgZWxlbWVudC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9wcyBUaGUgcHJvcHMuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7UmVhY3RFbGVtZW50fSBUaGUgZWxlbWVudCB0byByZW5kZXIuXG4gICAgICovXG4gICAgTGlua0J1dHRvbi5wcm90b3R5cGUuc2F2ZSA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICByZXR1cm4gY3JlYXRlRWxlbWVudChCdXR0b25TYXZlLCBfX2Fzc2lnbih7fSwgcHJvcHMpKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFJlbmRlcnMgZWRpdGluZyB0aGUgZWxlbWVudC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9wcyBUaGUgcHJvcHMuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7UmVhY3RFbGVtZW50fSBUaGUgZWxlbWVudCB0byByZW5kZXIuXG4gICAgICovXG4gICAgTGlua0J1dHRvbi5wcm90b3R5cGUuZWRpdCA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnBsYWNlaG9sZGVyKSB7XG4gICAgICAgICAgICBwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgcGxhY2Vob2xkZXI6IHRoaXMub3B0aW9ucy5wbGFjZWhvbGRlciB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY3JlYXRlRWxlbWVudChCdXR0b25FZGl0LCBfX2Fzc2lnbih7fSwgcHJvcHMpKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIENvbmZpZ3VyYXRpb24gYXR0cmlidXRlcyB0byBhZGQgdG8gdGhlIGJsb2NrIHRlbXBsYXRlXG4gICAgICogaW4gd2hpY2ggdGhpcyBpbnN0cnVjdGlvbiBpcyB1c2VkLlxuICAgICAqL1xuICAgIExpbmtCdXR0b24ucHJvdG90eXBlLmNvbmZpZ3VyYXRpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgdXJsOiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZTogXCJhdHRyaWJ1dGVcIixcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3I6IFwiYVwiLFxuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGU6IFwiaHJlZlwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0aXRsZToge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IFwiYXR0cmlidXRlXCIsXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yOiBcImFcIixcbiAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlOiBcInRpdGxlXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgc291cmNlOiBcImh0bWxcIixcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3I6IFwiYVwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBsaW5rVGFyZ2V0OiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZTogXCJhdHRyaWJ1dGVcIixcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3I6IFwiYVwiLFxuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGU6IFwidGFyZ2V0XCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHJlbDoge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IFwiYXR0cmlidXRlXCIsXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yOiBcImFcIixcbiAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlOiBcInJlbFwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjoge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJudW1iZXJcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJvYmplY3RcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHRleHRDb2xvcjoge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBncmFkaWVudDoge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHN1cHBvcnRzOiB7XG4gICAgICAgICAgICAgICAgYW5jaG9yOiB0cnVlLFxuICAgICAgICAgICAgICAgIGFsaWduV2lkZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgcmV1c2FibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGxpZ2h0QmxvY2tXcmFwcGVyOiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIGluc3RydWN0aW9uIGJsb2NrIGlzIHZhbGlkLlxuICAgICAqXG4gICAgICogQHBhcmFtIGJsb2NrSW5zdGFuY2UgVGhlIGF0dHJpYnV0ZXMgZnJvbSB0aGUgYmxvY2suXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBUaGUgdmFsaWRhdGlvbiByZXN1bHQuXG4gICAgICovXG4gICAgTGlua0J1dHRvbi5wcm90b3R5cGUudmFsaWRhdGUgPSBmdW5jdGlvbiAoYmxvY2tJbnN0YW5jZSkge1xuICAgICAgICB2YXIgcHJlc2VuY2UgPSB0aGlzLm9wdGlvbnMucmVxdWlyZWQgPT09IHRydWUgPyBCbG9ja1ByZXNlbmNlLlJlcXVpcmVkIDogQmxvY2tQcmVzZW5jZS5SZWNvbW1lbmRlZDtcbiAgICAgICAgLy8gVGhlIGxpbmtidXR0b24gbXVzdCBoYXZlIGEgVGV4dCwgQU5EIGVpdGhlciBhIGxpbmt0YXJnZXQgb3IgYSByZWxhdGl2ZSBsaW5rIHNldC5cbiAgICAgICAgaWYgKGF0dHJpYnV0ZUV4aXN0cyhibG9ja0luc3RhbmNlLCBcInRleHRcIikgJiYgYXR0cmlidXRlTm90RW1wdHkoYmxvY2tJbnN0YW5jZSwgXCJ0ZXh0XCIpICYmXG4gICAgICAgICAgICAoYXR0cmlidXRlRXhpc3RzKGJsb2NrSW5zdGFuY2UsIFwibGlua1RhcmdldFwiKSAmJiBhdHRyaWJ1dGVOb3RFbXB0eShibG9ja0luc3RhbmNlLCBcImxpbmtUYXJnZXRcIikgfHxcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVFeGlzdHMoYmxvY2tJbnN0YW5jZSwgXCJyZWxcIikgJiYgYXR0cmlidXRlTm90RW1wdHkoYmxvY2tJbnN0YW5jZSwgXCJyZWxcIikpKSB7XG4gICAgICAgICAgICByZXR1cm4gQmxvY2tWYWxpZGF0aW9uUmVzdWx0LlZhbGlkKGJsb2NrSW5zdGFuY2UsIHRoaXMuY29uc3RydWN0b3IubmFtZSwgcHJlc2VuY2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBCbG9ja1ZhbGlkYXRpb25SZXN1bHQuTWlzc2luZ0F0dHJpYnV0ZShibG9ja0luc3RhbmNlLCB0aGlzLmNvbnN0cnVjdG9yLm5hbWUsIHByZXNlbmNlKTtcbiAgICB9O1xuICAgIHJldHVybiBMaW5rQnV0dG9uO1xufShCbG9ja0luc3RydWN0aW9uKSk7XG5leHBvcnQgeyBMaW5rQnV0dG9uIH07XG4iLCIvKiBBZGQgU2NoZW1hIEJsb2NrIEluc3RydWN0aW9uIGltcG9ydHMgaGVyZS4gKi9cbmV4cG9ydCB7IExpbmtCdXR0b24gfSBmcm9tIFwiLi9MaW5rQnV0dG9uXCI7XG4iLCJpbXBvcnQgeyBCbG9ja0luc3RydWN0aW9uIH0gZnJvbSBcIkB5b2FzdC9zY2hlbWEtYmxvY2tzXCI7XG5pbXBvcnQgeyBMaW5rQnV0dG9uIH0gZnJvbSBcIi4vc2NoZW1hLWJsb2Nrcy9pbnN0cnVjdGlvbnMvYmxvY2tzXCI7XG5CbG9ja0luc3RydWN0aW9uLnJlZ2lzdGVyKFwibGluay1idXR0b25cIiwgTGlua0J1dHRvbik7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTs7QUNGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ3pCQTtBQUNBO0FBQ0E7O0FDRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ05BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDYkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNiQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNsQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNsSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNiQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7OztBQ2JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDek5BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM1TkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNwREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDakpBO0FBQ0E7OztBQ0RBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///138\n')},17:function(module,__webpack_exports__,__webpack_require__){"use strict";eval('/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _arrayLikeToArray; });\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vL3Zhci9qZW5raW5zL3dvcmtzcGFjZS9QbHVnaW4tUmVsZWFzZS93b3JkcHJlc3Mtc2VvLXByZW1pdW0vLnJlcG9zL3dvcmRwcmVzcy1zZW8tcHJlbWl1bS9ub2RlX21vZHVsZXMvQHdvcmRwcmVzcy9ibG9jay1saWJyYXJ5L25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hcnJheUxpa2VUb0FycmF5LmpzPzcwNmUiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHtcbiAgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7XG5cbiAgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSB7XG4gICAgYXJyMltpXSA9IGFycltpXTtcbiAgfVxuXG4gIHJldHVybiBhcnIyO1xufSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///17\n')},2:function(module,exports){eval("module.exports = window.lodash;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9leHRlcm5hbCBcIndpbmRvdy5sb2Rhc2hcIj9hNjAxIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gd2luZG93LmxvZGFzaDsiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///2\n")},22:function(module,exports){eval("module.exports = window.wp.blocks;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJ3aW5kb3cud3AuYmxvY2tzXCI/NzljMCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHdpbmRvdy53cC5ibG9ja3M7Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///22\n")},23:function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (true) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {\n\t\t\treturn classNames;\n\t\t}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else {}\n}());\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vL3Zhci9qZW5raW5zL3dvcmtzcGFjZS9QbHVnaW4tUmVsZWFzZS93b3JkcHJlc3Mtc2VvLXByZW1pdW0vLnJlcG9zL3dvcmRwcmVzcy1zZW8tcHJlbWl1bS9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9pbmRleC5qcz8zMmZmIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICBDb3B5cmlnaHQgKGMpIDIwMTcgSmVkIFdhdHNvbi5cbiAgTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlIChNSVQpLCBzZWVcbiAgaHR0cDovL2plZHdhdHNvbi5naXRodWIuaW8vY2xhc3NuYW1lc1xuKi9cbi8qIGdsb2JhbCBkZWZpbmUgKi9cblxuKGZ1bmN0aW9uICgpIHtcblx0J3VzZSBzdHJpY3QnO1xuXG5cdHZhciBoYXNPd24gPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblxuXHRmdW5jdGlvbiBjbGFzc05hbWVzICgpIHtcblx0XHR2YXIgY2xhc3NlcyA9IFtdO1xuXG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhciBhcmcgPSBhcmd1bWVudHNbaV07XG5cdFx0XHRpZiAoIWFyZykgY29udGludWU7XG5cblx0XHRcdHZhciBhcmdUeXBlID0gdHlwZW9mIGFyZztcblxuXHRcdFx0aWYgKGFyZ1R5cGUgPT09ICdzdHJpbmcnIHx8IGFyZ1R5cGUgPT09ICdudW1iZXInKSB7XG5cdFx0XHRcdGNsYXNzZXMucHVzaChhcmcpO1xuXHRcdFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFyZykgJiYgYXJnLmxlbmd0aCkge1xuXHRcdFx0XHR2YXIgaW5uZXIgPSBjbGFzc05hbWVzLmFwcGx5KG51bGwsIGFyZyk7XG5cdFx0XHRcdGlmIChpbm5lcikge1xuXHRcdFx0XHRcdGNsYXNzZXMucHVzaChpbm5lcik7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAoYXJnVHlwZSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0Zm9yICh2YXIga2V5IGluIGFyZykge1xuXHRcdFx0XHRcdGlmIChoYXNPd24uY2FsbChhcmcsIGtleSkgJiYgYXJnW2tleV0pIHtcblx0XHRcdFx0XHRcdGNsYXNzZXMucHVzaChrZXkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBjbGFzc2VzLmpvaW4oJyAnKTtcblx0fVxuXG5cdGlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyAmJiBtb2R1bGUuZXhwb3J0cykge1xuXHRcdGNsYXNzTmFtZXMuZGVmYXVsdCA9IGNsYXNzTmFtZXM7XG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBjbGFzc05hbWVzO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGRlZmluZS5hbWQgPT09ICdvYmplY3QnICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyByZWdpc3RlciBhcyAnY2xhc3NuYW1lcycsIGNvbnNpc3RlbnQgd2l0aCBucG0gcGFja2FnZSBuYW1lXG5cdFx0ZGVmaW5lKCdjbGFzc25hbWVzJywgW10sIGZ1bmN0aW9uICgpIHtcblx0XHRcdHJldHVybiBjbGFzc05hbWVzO1xuXHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdHdpbmRvdy5jbGFzc05hbWVzID0gY2xhc3NOYW1lcztcblx0fVxufSgpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQSxVQUVBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///23\n")},3:function(module,exports){eval("module.exports = window.wp.data;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9leHRlcm5hbCBcIndpbmRvdy53cC5kYXRhXCI/YzQyMiJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHdpbmRvdy53cC5kYXRhOyJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///3\n")},30:function(module,__webpack_exports__,__webpack_require__){"use strict";eval('/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _unsupportedIterableToArray; });\n/* harmony import */ var _arrayLikeToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(17);\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === "string") return Object(_arrayLikeToArray__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === "Object" && o.constructor) n = o.constructor.name;\n if (n === "Map" || n === "Set") return Array.from(o);\n if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return Object(_arrayLikeToArray__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(o, minLen);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vL3Zhci9qZW5raW5zL3dvcmtzcGFjZS9QbHVnaW4tUmVsZWFzZS93b3JkcHJlc3Mtc2VvLXByZW1pdW0vLnJlcG9zL3dvcmRwcmVzcy1zZW8tcHJlbWl1bS9ub2RlX21vZHVsZXMvQHdvcmRwcmVzcy9ibG9jay1saWJyYXJ5L25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qcz82NzQ2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhcnJheUxpa2VUb0FycmF5IGZyb20gXCIuL2FycmF5TGlrZVRvQXJyYXlcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHtcbiAgaWYgKCFvKSByZXR1cm47XG4gIGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTtcbiAgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpO1xuICBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lO1xuICBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShvKTtcbiAgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7XG59Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///30\n')},31:function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n\n// EXTERNAL MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/block-library/node_modules/@babel/runtime/helpers/esm/defineProperty.js\nvar defineProperty = __webpack_require__(4);\n\n// EXTERNAL MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/block-library/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js\nvar arrayLikeToArray = __webpack_require__(17);\n\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/block-library/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return Object(arrayLikeToArray["a" /* default */])(arr);\n}\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/block-library/node_modules/@babel/runtime/helpers/esm/iterableToArray.js\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n// EXTERNAL MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/block-library/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js\nvar unsupportedIterableToArray = __webpack_require__(30);\n\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/block-library/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js\nfunction _nonIterableSpread() {\n throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");\n}\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/block-library/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\n\n\n\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || Object(unsupportedIterableToArray["a" /* default */])(arr) || _nonIterableSpread();\n}\n// EXTERNAL MODULE: external "window.lodash"\nvar external_window_lodash_ = __webpack_require__(2);\n\n// EXTERNAL MODULE: external "window.wp.i18n"\nvar external_window_wp_i18n_ = __webpack_require__(1);\n\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/block-library/node_modules/@wordpress/keycodes/build-module/platform.js\n/**\n * External dependencies\n */\n\n/**\n * Return true if platform is MacOS.\n *\n * @param {Object} _window window object by default; used for DI testing.\n *\n * @return {boolean} True if MacOS; false otherwise.\n */\n\nfunction isAppleOS() {\n var _window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window;\n\n var platform = _window.navigator.platform;\n return platform.indexOf(\'Mac\') !== -1 || Object(external_window_lodash_["includes"])([\'iPad\', \'iPhone\'], platform);\n}\n//# sourceMappingURL=platform.js.map\n// CONCATENATED MODULE: /var/jenkins/workspace/Plugin-Release/wordpress-seo-premium/.repos/wordpress-seo-premium/node_modules/@wordpress/block-library/node_modules/@wordpress/keycodes/build-module/index.js\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BACKSPACE", function() { return BACKSPACE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TAB", function() { return TAB; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ENTER", function() { return ENTER; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ESCAPE", function() { return ESCAPE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SPACE", function() { return SPACE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LEFT", function() { return LEFT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "UP", function() { return UP; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RIGHT", function() { return RIGHT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DOWN", function() { return DOWN; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DELETE", function() { return DELETE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "F10", function() { return F10; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ALT", function() { return ALT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CTRL", function() { return CTRL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "COMMAND", function() { return COMMAND; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SHIFT", function() { return SHIFT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ZERO", function() { return ZERO; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "modifiers", function() { return modifiers; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "rawShortcut", function() { return rawShortcut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "displayShortcutList", function() { return displayShortcutList; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "displayShortcut", function() { return displayShortcut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "shortcutAriaLabel", function() { return shortcutAriaLabel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isKeyboardEvent", function() { return isKeyboardEvent; });\n\n\n\n/**\n * Note: The order of the modifier keys in many of the [foo]Shortcut()\n * functions in this file are intentional and should not be changed. They\'re\n * designed to fit with the standard menu keyboard shortcuts shown in the\n * user\'s platform.\n *\n * For example, on MacOS menu shortcuts will place Shift before Command, but\n * on Windows Control will usually come first. So don\'t provide your own\n * shortcut combos directly to keyboardShortcut().\n */\n\n/**\n * External dependencies\n */\n\n/**\n * WordPress dependencies\n */\n\n\n/**\n * Internal dependencies\n */\n\n\n/**\n * @typedef {\'primary\'|\'primaryShift\'|\'primaryAlt\'|\'secondary\'|\'access\'|\'ctrl\'|\'alt\'|\'ctrlShift\'|\'shift\'|\'shiftAlt\'} WPKeycodeModifier\n */\n\n/**\n * An object of handler functions for each of the possible modifier\n * combinations. A handler will return a value for a given key.\n *\n * @typedef {Record<WPKeycodeModifier, (key:string)=>any>} WPKeycodeHandlerByModifier\n */\n\n/**\n * Keycode for BACKSPACE key.\n */\n\nvar BACKSPACE = 8;\n/**\n * Keycode for TAB key.\n */\n\nvar TAB = 9;\n/**\n * Keycode for ENTER key.\n */\n\nvar ENTER = 13;\n/**\n * Keycode for ESCAPE key.\n */\n\nvar ESCAPE = 27;\n/**\n * Keycode for SPACE key.\n */\n\nvar SPACE = 32;\n/**\n * Keycode for LEFT key.\n */\n\nvar LEFT = 37;\n/**\n * Keycode for UP key.\n */\n\nvar UP = 38;\n/**\n * Keycode for RIGHT key.\n */\n\nvar RIGHT = 39;\n/**\n * Keycode for DOWN key.\n */\n\nvar DOWN = 40;\n/**\n * Keycode for DELETE key.\n */\n\nvar DELETE = 46;\n/**\n * Keycode for F10 key.\n */\n\nvar F10 = 121;\n/**\n * Keycode for ALT key.\n */\n\nvar ALT = \'alt\';\n/**\n * Keycode for CTRL key.\n */\n\nvar CTRL = \'ctrl\';\n/**\n * Keycode for COMMAND/META key.\n */\n\nvar COMMAND = \'meta\';\n/**\n * Keycode for SHIFT key.\n */\n\nvar SHIFT = \'shift\';\n/**\n * Keycode for ZERO key.\n */\n\nvar ZERO = 48;\n/**\n * Object that contains functions that return the available modifier\n * depending on platform.\n *\n * - `primary`: takes a isApple function as a parameter.\n * - `primaryShift`: takes a isApple function as a parameter.\n * - `primaryAlt`: takes a isApple function as a parameter.\n * - `secondary`: takes a isApple function as a parameter.\n * - `access`: takes a isApple function as a parameter.\n * - `ctrl`\n * - `alt`\n * - `ctrlShift`\n * - `shift`\n * - `shiftAlt`\n */\n\nvar modifiers = {\n primary: function primary(_isApple) {\n return _isApple() ? [COMMAND] : [CTRL];\n },\n primaryShift: function primaryShift(_isApple) {\n return _isApple() ? [SHIFT, COMMAND] : [CTRL, SHIFT];\n },\n primaryAlt: function primaryAlt(_isApple) {\n return _isApple() ? [ALT, COMMAND] : [CTRL, ALT];\n },\n secondary: function secondary(_isApple) {\n return _isApple() ? [SHIFT, ALT, COMMAND] : [CTRL, SHIFT, ALT];\n },\n access: function access(_isApple) {\n return _isApple() ? [CTRL, ALT] : [SHIFT, ALT];\n },\n ctrl: function ctrl() {\n return [CTRL];\n },\n alt: function alt() {\n return [ALT];\n },\n ctrlShift: function ctrlShift() {\n return [CTRL, SHIFT];\n },\n shift: function shift() {\n return [SHIFT];\n },\n shiftAlt: function shiftAlt() {\n return [SHIFT, ALT];\n }\n};\n/**\n * An object that contains functions to get raw shortcuts.\n * E.g. rawShortcut.primary( \'m\' ) will return \'meta+m\' on Mac.\n * These are intended for user with the KeyboardShortcuts component or TinyMCE.\n *\n * @type {WPKeycodeHandlerByModifier} Keyed map of functions to raw shortcuts.\n */\n\nvar rawShortcut = Object(external_window_lodash_["mapValues"])(modifiers, function (modifier) {\n return function (character) {\n var _isApple = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : isAppleOS;\n\n return [].concat(_toConsumableArray(modifier(_isApple)), [character.toLowerCase()]).join(\'+\');\n };\n});\n/**\n * Return an array of the parts of a keyboard shortcut chord for display\n * E.g displayShortcutList.primary( \'m\' ) will return [ \'⌘\', \'M\' ] on Mac.\n *\n * @type {WPKeycodeHandlerByModifier} Keyed map of functions to shortcut\n * sequences.\n */\n\nvar displayShortcutList = Object(external_window_lodash_["mapValues"])(modifiers, function (modifier) {\n return function (character) {\n var _replacementKeyMap;\n\n var _isApple = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : isAppleOS;\n\n var isApple = _isApple();\n\n var replacementKeyMap = (_replacementKeyMap = {}, Object(defineProperty["a" /* default */])(_replacementKeyMap, ALT, isApple ? \'⌥\' : \'Alt\'), Object(defineProperty["a" /* default */])(_replacementKeyMap, CTRL, isApple ? \'^\' : \'Ctrl\'), Object(defineProperty["a" /* default */])(_replacementKeyMap, COMMAND, \'⌘\'), Object(defineProperty["a" /* default */])(_replacementKeyMap, SHIFT, isApple ? \'⇧\' : \'Shift\'), _replacementKeyMap);\n var modifierKeys = modifier(_isApple).reduce(function (accumulator, key) {\n var replacementKey = Object(external_window_lodash_["get"])(replacementKeyMap, key, key); // If on the Mac, adhere to platform convention and don\'t show plus between keys.\n\n if (isApple) {\n return [].concat(_toConsumableArray(accumulator), [replacementKey]);\n }\n\n return [].concat(_toConsumableArray(accumulator), [replacementKey, \'+\']);\n }, []);\n var capitalizedCharacter = Object(external_window_lodash_["capitalize"])(character);\n return [].concat(_toConsumableArray(modifierKeys), [capitalizedCharacter]);\n };\n});\n/**\n * An object that contains functions to display shortcuts.\n * E.g. displayShortcut.primary( \'m\' ) will return \'⌘M\' on Mac.\n *\n * @type {WPKeycodeHandlerByModifier} Keyed map of functions to display\n * shortcuts.\n */\n\nvar displayShortcut = Object(external_window_lodash_["mapValues"])(displayShortcutList, function (shortcutList) {\n return function (character) {\n var _isApple = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : isAppleOS;\n\n return shortcutList(character, _isApple).join(\'\');\n };\n});\n/**\n * An object that contains functions to return an aria label for a keyboard shortcut.\n * E.g. shortcutAriaLabel.primary( \'.\' ) will return \'Command + Period\' on Mac.\n *\n * @type {WPKeycodeHandlerByModifier} Keyed map of functions to shortcut ARIA\n * labels.\n */\n\nvar shortcutAriaLabel = Object(external_window_lodash_["mapValues"])(modifiers, function (modifier) {\n return function (character) {\n var _replacementKeyMap2;\n\n var _isApple = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : isAppleOS;\n\n var isApple = _isApple();\n\n var replacementKeyMap = (_replacementKeyMap2 = {}, Object(defineProperty["a" /* default */])(_replacementKeyMap2, SHIFT, \'Shift\'), Object(defineProperty["a" /* default */])(_replacementKeyMap2, COMMAND, isApple ? \'Command\' : \'Control\'), Object(defineProperty["a" /* default */])(_replacementKeyMap2, CTRL, \'Control\'), Object(defineProperty["a" /* default */])(_replacementKeyMap2, ALT, isApple ? \'Option\' : \'Alt\'), Object(defineProperty["a" /* default */])(_replacementKeyMap2, \',\', Object(external_window_wp_i18n_["__"])(\'Comma\')), Object(defineProperty["a" /* default */])(_replacementKeyMap2, \'.\', Object(external_window_wp_i18n_["__"])(\'Period\')), Object(defineProperty["a" /* default */])(_replacementKeyMap2, \'`\', Object(external_window_wp_i18n_["__"])(\'Backtick\')), _replacementKeyMap2);\n return [].concat(_toConsumableArray(modifier(_isApple)), [character]).map(function (key) {\n return Object(external_window_lodash_["capitalize"])(Object(external_window_lodash_["get"])(replacementKeyMap, key, key));\n }).join(isApple ? \' \' : \' + \');\n };\n});\n/**\n * From a given KeyboardEvent, returns an array of active modifier constants for\n * the event.\n *\n * @param {KeyboardEvent} event Keyboard event.\n *\n * @return {Array<ALT|CTRL|COMMAND|SHIFT>} Active modifier constants.\n */\n\nfunction getEventModifiers(event) {\n return [ALT, CTRL, COMMAND, SHIFT].filter(function (key) {\n return event["".concat(key, "Key")];\n });\n}\n/**\n * An object that contains functions to check if a keyboard event matches a\n * predefined shortcut combination.\n * E.g. isKeyboardEvent.primary( event, \'m\' ) will return true if the event\n * signals pressing ⌘M.\n *\n * @type {WPKeycodeHandlerByModifier} Keyed map of functions to match events.\n */\n\n\nvar isKeyboardEvent = Object(external_window_lodash_["mapValues"])(modifiers, function (getModifiers) {\n return function (event, character) {\n var _isApple = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : isAppleOS;\n\n var mods = getModifiers(_isApple);\n var eventMods = getEventModifiers(event);\n\n if (Object(external_window_lodash_["xor"])(mods, eventMods).length) {\n return false;\n }\n\n if (!character) {\n return Object(external_window_lodash_["includes"])(mods, event.key.toLowerCase());\n }\n\n return event.key === character;\n };\n});\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vL3Zhci9qZW5raW5zL3dvcmtzcGFjZS9QbHVnaW4tUmVsZWFzZS93b3JkcHJlc3Mtc2VvLXByZW1pdW0vLnJlcG9zL3dvcmRwcmVzcy1zZW8tcHJlbWl1bS9ub2RlX21vZHVsZXMvQHdvcmRwcmVzcy9ibG9jay1saWJyYXJ5L25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hcnJheVdpdGhvdXRIb2xlcy5qcz83ODE5Iiwid2VicGFjazovLy8vdmFyL2plbmtpbnMvd29ya3NwYWNlL1BsdWdpbi1SZWxlYXNlL3dvcmRwcmVzcy1zZW8tcHJlbWl1bS8ucmVwb3Mvd29yZHByZXNzLXNlby1wcmVtaXVtL25vZGVfbW9kdWxlcy9Ad29yZHByZXNzL2Jsb2NrLWxpYnJhcnkvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2l0ZXJhYmxlVG9BcnJheS5qcz8yNDNmIiwid2VicGFjazovLy8vdmFyL2plbmtpbnMvd29ya3NwYWNlL1BsdWdpbi1SZWxlYXNlL3dvcmRwcmVzcy1zZW8tcHJlbWl1bS8ucmVwb3Mvd29yZHByZXNzLXNlby1wcmVtaXVtL25vZGVfbW9kdWxlcy9Ad29yZHByZXNzL2Jsb2NrLWxpYnJhcnkvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL25vbkl0ZXJhYmxlU3ByZWFkLmpzPzI2ODAiLCJ3ZWJwYWNrOi8vLy92YXIvamVua2lucy93b3Jrc3BhY2UvUGx1Z2luLVJlbGVhc2Uvd29yZHByZXNzLXNlby1wcmVtaXVtLy5yZXBvcy93b3JkcHJlc3Mtc2VvLXByZW1pdW0vbm9kZV9tb2R1bGVzL0B3b3JkcHJlc3MvYmxvY2stbGlicmFyeS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Db25zdW1hYmxlQXJyYXkuanM/NmJlMiIsIndlYnBhY2s6Ly8vL3Zhci9qZW5raW5zL3dvcmtzcGFjZS9QbHVnaW4tUmVsZWFzZS93b3JkcHJlc3Mtc2VvLXByZW1pdW0vLnJlcG9zL3dvcmRwcmVzcy1zZW8tcHJlbWl1bS9ub2RlX21vZHVsZXMvQHdvcmRwcmVzcy9ibG9jay1saWJyYXJ5L25vZGVfbW9kdWxlcy9Ad29yZHByZXNzL2tleWNvZGVzL2J1aWxkLW1vZHVsZS9wbGF0Zm9ybS5qcz81ZGNlIiwid2VicGFjazovLy8vdmFyL2plbmtpbnMvd29ya3NwYWNlL1BsdWdpbi1SZWxlYXNlL3dvcmRwcmVzcy1zZW8tcHJlbWl1bS8ucmVwb3Mvd29yZHByZXNzLXNlby1wcmVtaXVtL25vZGVfbW9kdWxlcy9Ad29yZHByZXNzL2Jsb2NrLWxpYnJhcnkvbm9kZV9tb2R1bGVzL0B3b3JkcHJlc3Mva2V5Y29kZXMvYnVpbGQtbW9kdWxlL2luZGV4LmpzPzMxZDYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFycmF5TGlrZVRvQXJyYXkgZnJvbSBcIi4vYXJyYXlMaWtlVG9BcnJheVwiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2FycmF5V2l0aG91dEhvbGVzKGFycikge1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShhcnIpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXkoaXRlcikge1xuICBpZiAodHlwZW9mIFN5bWJvbCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGl0ZXIpKSByZXR1cm4gQXJyYXkuZnJvbShpdGVyKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfbm9uSXRlcmFibGVTcHJlYWQoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufSIsImltcG9ydCBhcnJheVdpdGhvdXRIb2xlcyBmcm9tIFwiLi9hcnJheVdpdGhvdXRIb2xlc1wiO1xuaW1wb3J0IGl0ZXJhYmxlVG9BcnJheSBmcm9tIFwiLi9pdGVyYWJsZVRvQXJyYXlcIjtcbmltcG9ydCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSBmcm9tIFwiLi91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheVwiO1xuaW1wb3J0IG5vbkl0ZXJhYmxlU3ByZWFkIGZyb20gXCIuL25vbkl0ZXJhYmxlU3ByZWFkXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkoYXJyKSB7XG4gIHJldHVybiBhcnJheVdpdGhvdXRIb2xlcyhhcnIpIHx8IGl0ZXJhYmxlVG9BcnJheShhcnIpIHx8IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFycikgfHwgbm9uSXRlcmFibGVTcHJlYWQoKTtcbn0iLCIvKipcbiAqIEV4dGVybmFsIGRlcGVuZGVuY2llc1xuICovXG5pbXBvcnQgeyBpbmNsdWRlcyB9IGZyb20gJ2xvZGFzaCc7XG4vKipcbiAqIFJldHVybiB0cnVlIGlmIHBsYXRmb3JtIGlzIE1hY09TLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBfd2luZG93ICAgd2luZG93IG9iamVjdCBieSBkZWZhdWx0OyB1c2VkIGZvciBESSB0ZXN0aW5nLlxuICpcbiAqIEByZXR1cm4ge2Jvb2xlYW59ICAgICAgICAgVHJ1ZSBpZiBNYWNPUzsgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBpc0FwcGxlT1MoKSB7XG4gIHZhciBfd2luZG93ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiB3aW5kb3c7XG5cbiAgdmFyIHBsYXRmb3JtID0gX3dpbmRvdy5uYXZpZ2F0b3IucGxhdGZvcm07XG4gIHJldHVybiBwbGF0Zm9ybS5pbmRleE9mKCdNYWMnKSAhPT0gLTEgfHwgaW5jbHVkZXMoWydpUGFkJywgJ2lQaG9uZSddLCBwbGF0Zm9ybSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wbGF0Zm9ybS5qcy5tYXAiLCJpbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF90b0NvbnN1bWFibGVBcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Db25zdW1hYmxlQXJyYXlcIjtcblxuLyoqXG4gKiBOb3RlOiBUaGUgb3JkZXIgb2YgdGhlIG1vZGlmaWVyIGtleXMgaW4gbWFueSBvZiB0aGUgW2Zvb11TaG9ydGN1dCgpXG4gKiBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlIGFyZSBpbnRlbnRpb25hbCBhbmQgc2hvdWxkIG5vdCBiZSBjaGFuZ2VkLiBUaGV5J3JlXG4gKiBkZXNpZ25lZCB0byBmaXQgd2l0aCB0aGUgc3RhbmRhcmQgbWVudSBrZXlib2FyZCBzaG9ydGN1dHMgc2hvd24gaW4gdGhlXG4gKiB1c2VyJ3MgcGxhdGZvcm0uXG4gKlxuICogRm9yIGV4YW1wbGUsIG9uIE1hY09TIG1lbnUgc2hvcnRjdXRzIHdpbGwgcGxhY2UgU2hpZnQgYmVmb3JlIENvbW1hbmQsIGJ1dFxuICogb24gV2luZG93cyBDb250cm9sIHdpbGwgdXN1YWxseSBjb21lIGZpcnN0LiBTbyBkb24ndCBwcm92aWRlIHlvdXIgb3duXG4gKiBzaG9ydGN1dCBjb21ib3MgZGlyZWN0bHkgdG8ga2V5Ym9hcmRTaG9ydGN1dCgpLlxuICovXG5cbi8qKlxuICogRXh0ZXJuYWwgZGVwZW5kZW5jaWVzXG4gKi9cbmltcG9ydCB7IGdldCwgbWFwVmFsdWVzLCBpbmNsdWRlcywgY2FwaXRhbGl6ZSwgeG9yIH0gZnJvbSAnbG9kYXNoJztcbi8qKlxuICogV29yZFByZXNzIGRlcGVuZGVuY2llc1xuICovXG5cbmltcG9ydCB7IF9fIH0gZnJvbSAnQHdvcmRwcmVzcy9pMThuJztcbi8qKlxuICogSW50ZXJuYWwgZGVwZW5kZW5jaWVzXG4gKi9cblxuaW1wb3J0IHsgaXNBcHBsZU9TIH0gZnJvbSAnLi9wbGF0Zm9ybSc7XG4vKipcbiAqIEB0eXBlZGVmIHsncHJpbWFyeSd8J3ByaW1hcnlTaGlmdCd8J3ByaW1hcnlBbHQnfCdzZWNvbmRhcnknfCdhY2Nlc3MnfCdjdHJsJ3wnYWx0J3wnY3RybFNoaWZ0J3wnc2hpZnQnfCdzaGlmdEFsdCd9IFdQS2V5Y29kZU1vZGlmaWVyXG4gKi9cblxuLyoqXG4gKiBBbiBvYmplY3Qgb2YgaGFuZGxlciBmdW5jdGlvbnMgZm9yIGVhY2ggb2YgdGhlIHBvc3NpYmxlIG1vZGlmaWVyXG4gKiBjb21iaW5hdGlvbnMuIEEgaGFuZGxlciB3aWxsIHJldHVybiBhIHZhbHVlIGZvciBhIGdpdmVuIGtleS5cbiAqXG4gKiBAdHlwZWRlZiB7UmVjb3JkPFdQS2V5Y29kZU1vZGlmaWVyLCAoa2V5OnN0cmluZyk9PmFueT59IFdQS2V5Y29kZUhhbmRsZXJCeU1vZGlmaWVyXG4gKi9cblxuLyoqXG4gKiBLZXljb2RlIGZvciBCQUNLU1BBQ0Uga2V5LlxuICovXG5cbmV4cG9ydCB2YXIgQkFDS1NQQUNFID0gODtcbi8qKlxuICogS2V5Y29kZSBmb3IgVEFCIGtleS5cbiAqL1xuXG5leHBvcnQgdmFyIFRBQiA9IDk7XG4vKipcbiAqIEtleWNvZGUgZm9yIEVOVEVSIGtleS5cbiAqL1xuXG5leHBvcnQgdmFyIEVOVEVSID0gMTM7XG4vKipcbiAqIEtleWNvZGUgZm9yIEVTQ0FQRSBrZXkuXG4gKi9cblxuZXhwb3J0IHZhciBFU0NBUEUgPSAyNztcbi8qKlxuICogS2V5Y29kZSBmb3IgU1BBQ0Uga2V5LlxuICovXG5cbmV4cG9ydCB2YXIgU1BBQ0UgPSAzMjtcbi8qKlxuICogS2V5Y29kZSBmb3IgTEVGVCBrZXkuXG4gKi9cblxuZXhwb3J0IHZhciBMRUZUID0gMzc7XG4vKipcbiAqIEtleWNvZGUgZm9yIFVQIGtleS5cbiAqL1xuXG5leHBvcnQgdmFyIFVQID0gMzg7XG4vKipcbiAqIEtleWNvZGUgZm9yIFJJR0hUIGtleS5cbiAqL1xuXG5leHBvcnQgdmFyIFJJR0hUID0gMzk7XG4vKipcbiAqIEtleWNvZGUgZm9yIERPV04ga2V5LlxuICovXG5cbmV4cG9ydCB2YXIgRE9XTiA9IDQwO1xuLyoqXG4gKiBLZXljb2RlIGZvciBERUxFVEUga2V5LlxuICovXG5cbmV4cG9ydCB2YXIgREVMRVRFID0gNDY7XG4vKipcbiAqIEtleWNvZGUgZm9yIEYxMCBrZXkuXG4gKi9cblxuZXhwb3J0IHZhciBGMTAgPSAxMjE7XG4vKipcbiAqIEtleWNvZGUgZm9yIEFMVCBrZXkuXG4gKi9cblxuZXhwb3J0IHZhciBBTFQgPSAnYWx0Jztcbi8qKlxuICogS2V5Y29kZSBmb3IgQ1RSTCBrZXkuXG4gKi9cblxuZXhwb3J0IHZhciBDVFJMID0gJ2N0cmwnO1xuLyoqXG4gKiBLZXljb2RlIGZvciBDT01NQU5EL01FVEEga2V5LlxuICovXG5cbmV4cG9ydCB2YXIgQ09NTUFORCA9ICdtZXRhJztcbi8qKlxuICogS2V5Y29kZSBmb3IgU0hJRlQga2V5LlxuICovXG5cbmV4cG9ydCB2YXIgU0hJRlQgPSAnc2hpZnQnO1xuLyoqXG4gKiBLZXljb2RlIGZvciBaRVJPIGtleS5cbiAqL1xuXG5leHBvcnQgdmFyIFpFUk8gPSA0ODtcbi8qKlxuICogT2JqZWN0IHRoYXQgY29udGFpbnMgZnVuY3Rpb25zIHRoYXQgcmV0dXJuIHRoZSBhdmFpbGFibGUgbW9kaWZpZXJcbiAqIGRlcGVuZGluZyBvbiBwbGF0Zm9ybS5cbiAqXG4gKiAtIGBwcmltYXJ5YDogdGFrZXMgYSBpc0FwcGxlIGZ1bmN0aW9uIGFzIGEgcGFyYW1ldGVyLlxuICogLSBgcHJpbWFyeVNoaWZ0YDogdGFrZXMgYSBpc0FwcGxlIGZ1bmN0aW9uIGFzIGEgcGFyYW1ldGVyLlxuICogLSBgcHJpbWFyeUFsdGA6IHRha2VzIGEgaXNBcHBsZSBmdW5jdGlvbiBhcyBhIHBhcmFtZXRlci5cbiAqIC0gYHNlY29uZGFyeWA6IHRha2VzIGEgaXNBcHBsZSBmdW5jdGlvbiBhcyBhIHBhcmFtZXRlci5cbiAqIC0gYGFjY2Vzc2A6IHRha2VzIGEgaXNBcHBsZSBmdW5jdGlvbiBhcyBhIHBhcmFtZXRlci5cbiAqIC0gYGN0cmxgXG4gKiAtIGBhbHRgXG4gKiAtIGBjdHJsU2hpZnRgXG4gKiAtIGBzaGlmdGBcbiAqIC0gYHNoaWZ0QWx0YFxuICovXG5cbmV4cG9ydCB2YXIgbW9kaWZpZXJzID0ge1xuICBwcmltYXJ5OiBmdW5jdGlvbiBwcmltYXJ5KF9pc0FwcGxlKSB7XG4gICAgcmV0dXJuIF9pc0FwcGxlKCkgPyBbQ09NTUFORF0gOiBbQ1RSTF07XG4gIH0sXG4gIHByaW1hcnlTaGlmdDogZnVuY3Rpb24gcHJpbWFyeVNoaWZ0KF9pc0FwcGxlKSB7XG4gICAgcmV0dXJuIF9pc0FwcGxlKCkgPyBbU0hJRlQsIENPTU1BTkRdIDogW0NUUkwsIFNISUZUXTtcbiAgfSxcbiAgcHJpbWFyeUFsdDogZnVuY3Rpb24gcHJpbWFyeUFsdChfaXNBcHBsZSkge1xuICAgIHJldHVybiBfaXNBcHBsZSgpID8gW0FMVCwgQ09NTUFORF0gOiBbQ1RSTCwgQUxUXTtcbiAgfSxcbiAgc2Vjb25kYXJ5OiBmdW5jdGlvbiBzZWNvbmRhcnkoX2lzQXBwbGUpIHtcbiAgICByZXR1cm4gX2lzQXBwbGUoKSA/IFtTSElGVCwgQUxULCBDT01NQU5EXSA6IFtDVFJMLCBTSElGVCwgQUxUXTtcbiAgfSxcbiAgYWNjZXNzOiBmdW5jdGlvbiBhY2Nlc3MoX2lzQXBwbGUpIHtcbiAgICByZXR1cm4gX2lzQXBwbGUoKSA/IFtDVFJMLCBBTFRdIDogW1NISUZULCBBTFRdO1xuICB9LFxuICBjdHJsOiBmdW5jdGlvbiBjdHJsKCkge1xuICAgIHJldHVybiBbQ1RSTF07XG4gIH0sXG4gIGFsdDogZnVuY3Rpb24gYWx0KCkge1xuICAgIHJldHVybiBbQUxUXTtcbiAgfSxcbiAgY3RybFNoaWZ0OiBmdW5jdGlvbiBjdHJsU2hpZnQoKSB7XG4gICAgcmV0dXJuIFtDVFJMLCBTSElGVF07XG4gIH0sXG4gIHNoaWZ0OiBmdW5jdGlvbiBzaGlmdCgpIHtcbiAgICByZXR1cm4gW1NISUZUXTtcbiAgfSxcbiAgc2hpZnRBbHQ6IGZ1bmN0aW9uIHNoaWZ0QWx0KCkge1xuICAgIHJldHVybiBbU0hJRlQsIEFMVF07XG4gIH1cbn07XG4vKipcbiAqIEFuIG9iamVjdCB0aGF0IGNvbnRhaW5zIGZ1bmN0aW9ucyB0byBnZXQgcmF3IHNob3J0Y3V0cy5cbiAqIEUuZy4gcmF3U2hvcnRjdXQucHJpbWFyeSggJ20nICkgd2lsbCByZXR1cm4gJ21ldGErbScgb24gTWFjLlxuICogVGhlc2UgYXJlIGludGVuZGVkIGZvciB1c2VyIHdpdGggdGhlIEtleWJvYXJkU2hvcnRjdXRzIGNvbXBvbmVudCBvciBUaW55TUNFLlxuICpcbiAqIEB0eXBlIHtXUEtleWNvZGVIYW5kbGVyQnlNb2RpZmllcn0gS2V5ZWQgbWFwIG9mIGZ1bmN0aW9ucyB0byByYXcgc2hvcnRjdXRzLlxuICovXG5cbmV4cG9ydCB2YXIgcmF3U2hvcnRjdXQgPSBtYXBWYWx1ZXMobW9kaWZpZXJzLCBmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChjaGFyYWN0ZXIpIHtcbiAgICB2YXIgX2lzQXBwbGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IGlzQXBwbGVPUztcblxuICAgIHJldHVybiBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KG1vZGlmaWVyKF9pc0FwcGxlKSksIFtjaGFyYWN0ZXIudG9Mb3dlckNhc2UoKV0pLmpvaW4oJysnKTtcbiAgfTtcbn0pO1xuLyoqXG4gKiBSZXR1cm4gYW4gYXJyYXkgb2YgdGhlIHBhcnRzIG9mIGEga2V5Ym9hcmQgc2hvcnRjdXQgY2hvcmQgZm9yIGRpc3BsYXlcbiAqIEUuZyBkaXNwbGF5U2hvcnRjdXRMaXN0LnByaW1hcnkoICdtJyApIHdpbGwgcmV0dXJuIFsgJ+KMmCcsICdNJyBdIG9uIE1hYy5cbiAqXG4gKiBAdHlwZSB7V1BLZXljb2RlSGFuZGxlckJ5TW9kaWZpZXJ9IEtleWVkIG1hcCBvZiBmdW5jdGlvbnMgdG8gc2hvcnRjdXRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VxdWVuY2VzLlxuICovXG5cbmV4cG9ydCB2YXIgZGlzcGxheVNob3J0Y3V0TGlzdCA9IG1hcFZhbHVlcyhtb2RpZmllcnMsIGZ1bmN0aW9uIChtb2RpZmllcikge1xuICByZXR1cm4gZnVuY3Rpb24gKGNoYXJhY3Rlcikge1xuICAgIHZhciBfcmVwbGFjZW1lbnRLZXlNYXA7XG5cbiAgICB2YXIgX2lzQXBwbGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IGlzQXBwbGVPUztcblxuICAgIHZhciBpc0FwcGxlID0gX2lzQXBwbGUoKTtcblxuICAgIHZhciByZXBsYWNlbWVudEtleU1hcCA9IChfcmVwbGFjZW1lbnRLZXlNYXAgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9yZXBsYWNlbWVudEtleU1hcCwgQUxULCBpc0FwcGxlID8gJ+KMpScgOiAnQWx0JyksIF9kZWZpbmVQcm9wZXJ0eShfcmVwbGFjZW1lbnRLZXlNYXAsIENUUkwsIGlzQXBwbGUgPyAnXicgOiAnQ3RybCcpLCBfZGVmaW5lUHJvcGVydHkoX3JlcGxhY2VtZW50S2V5TWFwLCBDT01NQU5ELCAn4oyYJyksIF9kZWZpbmVQcm9wZXJ0eShfcmVwbGFjZW1lbnRLZXlNYXAsIFNISUZULCBpc0FwcGxlID8gJ+KHpycgOiAnU2hpZnQnKSwgX3JlcGxhY2VtZW50S2V5TWFwKTtcbiAgICB2YXIgbW9kaWZpZXJLZXlzID0gbW9kaWZpZXIoX2lzQXBwbGUpLnJlZHVjZShmdW5jdGlvbiAoYWNjdW11bGF0b3IsIGtleSkge1xuICAgICAgdmFyIHJlcGxhY2VtZW50S2V5ID0gZ2V0KHJlcGxhY2VtZW50S2V5TWFwLCBrZXksIGtleSk7IC8vIElmIG9uIHRoZSBNYWMsIGFkaGVyZSB0byBwbGF0Zm9ybSBjb252ZW50aW9uIGFuZCBkb24ndCBzaG93IHBsdXMgYmV0d2VlbiBrZXlzLlxuXG4gICAgICBpZiAoaXNBcHBsZSkge1xuICAgICAgICByZXR1cm4gW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShhY2N1bXVsYXRvciksIFtyZXBsYWNlbWVudEtleV0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShhY2N1bXVsYXRvciksIFtyZXBsYWNlbWVudEtleSwgJysnXSk7XG4gICAgfSwgW10pO1xuICAgIHZhciBjYXBpdGFsaXplZENoYXJhY3RlciA9IGNhcGl0YWxpemUoY2hhcmFjdGVyKTtcbiAgICByZXR1cm4gW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShtb2RpZmllcktleXMpLCBbY2FwaXRhbGl6ZWRDaGFyYWN0ZXJdKTtcbiAgfTtcbn0pO1xuLyoqXG4gKiBBbiBvYmplY3QgdGhhdCBjb250YWlucyBmdW5jdGlvbnMgdG8gZGlzcGxheSBzaG9ydGN1dHMuXG4gKiBFLmcuIGRpc3BsYXlTaG9ydGN1dC5wcmltYXJ5KCAnbScgKSB3aWxsIHJldHVybiAn4oyYTScgb24gTWFjLlxuICpcbiAqIEB0eXBlIHtXUEtleWNvZGVIYW5kbGVyQnlNb2RpZmllcn0gS2V5ZWQgbWFwIG9mIGZ1bmN0aW9ucyB0byBkaXNwbGF5XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0Y3V0cy5cbiAqL1xuXG5leHBvcnQgdmFyIGRpc3BsYXlTaG9ydGN1dCA9IG1hcFZhbHVlcyhkaXNwbGF5U2hvcnRjdXRMaXN0LCBmdW5jdGlvbiAoc2hvcnRjdXRMaXN0KSB7XG4gIHJldHVybiBmdW5jdGlvbiAoY2hhcmFjdGVyKSB7XG4gICAgdmFyIF9pc0FwcGxlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBpc0FwcGxlT1M7XG5cbiAgICByZXR1cm4gc2hvcnRjdXRMaXN0KGNoYXJhY3RlciwgX2lzQXBwbGUpLmpvaW4oJycpO1xuICB9O1xufSk7XG4vKipcbiAqIEFuIG9iamVjdCB0aGF0IGNvbnRhaW5zIGZ1bmN0aW9ucyB0byByZXR1cm4gYW4gYXJpYSBsYWJlbCBmb3IgYSBrZXlib2FyZCBzaG9ydGN1dC5cbiAqIEUuZy4gc2hvcnRjdXRBcmlhTGFiZWwucHJpbWFyeSggJy4nICkgd2lsbCByZXR1cm4gJ0NvbW1hbmQgKyBQZXJpb2QnIG9uIE1hYy5cbiAqXG4gKiBAdHlwZSB7V1BLZXljb2RlSGFuZGxlckJ5TW9kaWZpZXJ9IEtleWVkIG1hcCBvZiBmdW5jdGlvbnMgdG8gc2hvcnRjdXQgQVJJQVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMuXG4gKi9cblxuZXhwb3J0IHZhciBzaG9ydGN1dEFyaWFMYWJlbCA9IG1hcFZhbHVlcyhtb2RpZmllcnMsIGZ1bmN0aW9uIChtb2RpZmllcikge1xuICByZXR1cm4gZnVuY3Rpb24gKGNoYXJhY3Rlcikge1xuICAgIHZhciBfcmVwbGFjZW1lbnRLZXlNYXAyO1xuXG4gICAgdmFyIF9pc0FwcGxlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBpc0FwcGxlT1M7XG5cbiAgICB2YXIgaXNBcHBsZSA9IF9pc0FwcGxlKCk7XG5cbiAgICB2YXIgcmVwbGFjZW1lbnRLZXlNYXAgPSAoX3JlcGxhY2VtZW50S2V5TWFwMiA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX3JlcGxhY2VtZW50S2V5TWFwMiwgU0hJRlQsICdTaGlmdCcpLCBfZGVmaW5lUHJvcGVydHkoX3JlcGxhY2VtZW50S2V5TWFwMiwgQ09NTUFORCwgaXNBcHBsZSA/ICdDb21tYW5kJyA6ICdDb250cm9sJyksIF9kZWZpbmVQcm9wZXJ0eShfcmVwbGFjZW1lbnRLZXlNYXAyLCBDVFJMLCAnQ29udHJvbCcpLCBfZGVmaW5lUHJvcGVydHkoX3JlcGxhY2VtZW50S2V5TWFwMiwgQUxULCBpc0FwcGxlID8gJ09wdGlvbicgOiAnQWx0JyksIF9kZWZpbmVQcm9wZXJ0eShfcmVwbGFjZW1lbnRLZXlNYXAyLCAnLCcsIF9fKCdDb21tYScpKSwgX2RlZmluZVByb3BlcnR5KF9yZXBsYWNlbWVudEtleU1hcDIsICcuJywgX18oJ1BlcmlvZCcpKSwgX2RlZmluZVByb3BlcnR5KF9yZXBsYWNlbWVudEtleU1hcDIsICdgJywgX18oJ0JhY2t0aWNrJykpLCBfcmVwbGFjZW1lbnRLZXlNYXAyKTtcbiAgICByZXR1cm4gW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShtb2RpZmllcihfaXNBcHBsZSkpLCBbY2hhcmFjdGVyXSkubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHJldHVybiBjYXBpdGFsaXplKGdldChyZXBsYWNlbWVudEtleU1hcCwga2V5LCBrZXkpKTtcbiAgICB9KS5qb2luKGlzQXBwbGUgPyAnICcgOiAnICsgJyk7XG4gIH07XG59KTtcbi8qKlxuICogRnJvbSBhIGdpdmVuIEtleWJvYXJkRXZlbnQsIHJldHVybnMgYW4gYXJyYXkgb2YgYWN0aXZlIG1vZGlmaWVyIGNvbnN0YW50cyBmb3JcbiAqIHRoZSBldmVudC5cbiAqXG4gKiBAcGFyYW0ge0tleWJvYXJkRXZlbnR9IGV2ZW50IEtleWJvYXJkIGV2ZW50LlxuICpcbiAqIEByZXR1cm4ge0FycmF5PEFMVHxDVFJMfENPTU1BTkR8U0hJRlQ+fSBBY3RpdmUgbW9kaWZpZXIgY29uc3RhbnRzLlxuICovXG5cbmZ1bmN0aW9uIGdldEV2ZW50TW9kaWZpZXJzKGV2ZW50KSB7XG4gIHJldHVybiBbQUxULCBDVFJMLCBDT01NQU5ELCBTSElGVF0uZmlsdGVyKGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gZXZlbnRbXCJcIi5jb25jYXQoa2V5LCBcIktleVwiKV07XG4gIH0pO1xufVxuLyoqXG4gKiBBbiBvYmplY3QgdGhhdCBjb250YWlucyBmdW5jdGlvbnMgdG8gY2hlY2sgaWYgYSBrZXlib2FyZCBldmVudCBtYXRjaGVzIGFcbiAqIHByZWRlZmluZWQgc2hvcnRjdXQgY29tYmluYXRpb24uXG4gKiBFLmcuIGlzS2V5Ym9hcmRFdmVudC5wcmltYXJ5KCBldmVudCwgJ20nICkgd2lsbCByZXR1cm4gdHJ1ZSBpZiB0aGUgZXZlbnRcbiAqIHNpZ25hbHMgcHJlc3Npbmcg4oyYTS5cbiAqXG4gKiBAdHlwZSB7V1BLZXljb2RlSGFuZGxlckJ5TW9kaWZpZXJ9IEtleWVkIG1hcCBvZiBmdW5jdGlvbnMgdG8gbWF0Y2ggZXZlbnRzLlxuICovXG5cblxuZXhwb3J0IHZhciBpc0tleWJvYXJkRXZlbnQgPSBtYXBWYWx1ZXMobW9kaWZpZXJzLCBmdW5jdGlvbiAoZ2V0TW9kaWZpZXJzKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoZXZlbnQsIGNoYXJhY3Rlcikge1xuICAgIHZhciBfaXNBcHBsZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogaXNBcHBsZU9TO1xuXG4gICAgdmFyIG1vZHMgPSBnZXRNb2RpZmllcnMoX2lzQXBwbGUpO1xuICAgIHZhciBldmVudE1vZHMgPSBnZXRFdmVudE1vZGlmaWVycyhldmVudCk7XG5cbiAgICBpZiAoeG9yKG1vZHMsIGV2ZW50TW9kcykubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCFjaGFyYWN0ZXIpIHtcbiAgICAgIHJldHVybiBpbmNsdWRlcyhtb2RzLCBldmVudC5rZXkudG9Mb3dlckNhc2UoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGV2ZW50LmtleSA9PT0gY2hhcmFjdGVyO1xuICB9O1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBOztBQ0hBO0FBQ0E7QUFDQTs7Ozs7QUNGQTtBQUNBO0FBQ0E7O0FDRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FDTkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbEJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///31\n')},4:function(module,__webpack_exports__,__webpack_require__){"use strict";eval('/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _defineProperty; });\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8vdmFyL2plbmtpbnMvd29ya3NwYWNlL1BsdWdpbi1SZWxlYXNlL3dvcmRwcmVzcy1zZW8tcHJlbWl1bS8ucmVwb3Mvd29yZHByZXNzLXNlby1wcmVtaXVtL25vZGVfbW9kdWxlcy9Ad29yZHByZXNzL2Jsb2NrLWxpYnJhcnkvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5LmpzPzgyNjAiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkge1xuICBpZiAoa2V5IGluIG9iaikge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgb2JqW2tleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBvYmo7XG59Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///4\n')},6:function(module,exports){eval("module.exports = window.wp.components;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9leHRlcm5hbCBcIndpbmRvdy53cC5jb21wb25lbnRzXCI/NTQ0MSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHdpbmRvdy53cC5jb21wb25lbnRzOyJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///6\n")},7:function(module,exports){eval("module.exports = window.wp.blockEditor;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9leHRlcm5hbCBcIndpbmRvdy53cC5ibG9ja0VkaXRvclwiPzllOGEiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB3aW5kb3cud3AuYmxvY2tFZGl0b3I7Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///7\n")},8:function(module,exports){eval("module.exports = React;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9leHRlcm5hbCBcIlJlYWN0XCI/YzQ4MSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IFJlYWN0OyJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///8\n")}},[[138,0]]]);