Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 

749 linhas
61 KiB

  1. (function() {
  2. var exports = {};
  3. exports.id = "pages/_app";
  4. exports.ids = ["pages/_app"];
  5. exports.modules = {
  6. /***/ "./components/_App/GoTop.js":
  7. /*!**********************************!*\
  8. !*** ./components/_App/GoTop.js ***!
  9. \**********************************/
  10. /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
  11. "use strict";
  12. __webpack_require__.r(__webpack_exports__);
  13. /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
  14. /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);
  15. /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
  16. /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
  17. /* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-feather */ "react-feather");
  18. /* harmony import */ var react_feather__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_feather__WEBPACK_IMPORTED_MODULE_2__);
  19. var _jsxFileName = "E:\\Project\\Templae\\tbg-company-ecomm-web\\components\\_App\\GoTop.js";
  20. const GoTop = ({
  21. scrollStepInPx,
  22. delayInMs
  23. }) => {
  24. const [thePosition, setThePosition] = react__WEBPACK_IMPORTED_MODULE_1___default().useState(false);
  25. const timeoutRef = react__WEBPACK_IMPORTED_MODULE_1___default().useRef(null);
  26. react__WEBPACK_IMPORTED_MODULE_1___default().useEffect(() => {
  27. document.addEventListener("scroll", () => {
  28. if (window.scrollY > 170) {
  29. setThePosition(true);
  30. } else {
  31. setThePosition(false);
  32. }
  33. });
  34. }, []);
  35. const onScrollStep = () => {
  36. if (window.pageYOffset === 0) {
  37. clearInterval(timeoutRef.current);
  38. }
  39. window.scroll(0, window.pageYOffset - scrollStepInPx);
  40. };
  41. const scrollToTop = () => {
  42. timeoutRef.current = setInterval(onScrollStep, delayInMs);
  43. };
  44. const renderGoTopIcon = () => {
  45. return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)("div", {
  46. className: `go-top ${thePosition ? 'active' : ''}`,
  47. onClick: scrollToTop,
  48. children: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_feather__WEBPACK_IMPORTED_MODULE_2__.ArrowUp, {}, void 0, false, {
  49. fileName: _jsxFileName,
  50. lineNumber: 33,
  51. columnNumber: 17
  52. }, undefined)
  53. }, void 0, false, {
  54. fileName: _jsxFileName,
  55. lineNumber: 32,
  56. columnNumber: 13
  57. }, undefined);
  58. };
  59. return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((react__WEBPACK_IMPORTED_MODULE_1___default().Fragment), {
  60. children: renderGoTopIcon()
  61. }, void 0, false, {
  62. fileName: _jsxFileName,
  63. lineNumber: 39,
  64. columnNumber: 9
  65. }, undefined);
  66. };
  67. /* harmony default export */ __webpack_exports__["default"] = (GoTop);
  68. /***/ }),
  69. /***/ "./components/_App/Layout.js":
  70. /*!***********************************!*\
  71. !*** ./components/_App/Layout.js ***!
  72. \***********************************/
  73. /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
  74. "use strict";
  75. __webpack_require__.r(__webpack_exports__);
  76. /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
  77. /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);
  78. /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
  79. /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
  80. /* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/head */ "next/head");
  81. /* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_head__WEBPACK_IMPORTED_MODULE_2__);
  82. /* harmony import */ var _GoTop__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./GoTop */ "./components/_App/GoTop.js");
  83. var _jsxFileName = "E:\\Project\\Templae\\tbg-company-ecomm-web\\components\\_App\\Layout.js";
  84. const Layout = ({
  85. children
  86. }) => {
  87. return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {
  88. children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_head__WEBPACK_IMPORTED_MODULE_2___default()), {
  89. children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)("meta", {
  90. charSet: "utf-8"
  91. }, void 0, false, {
  92. fileName: _jsxFileName,
  93. lineNumber: 9,
  94. columnNumber: 17
  95. }, undefined), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)("meta", {
  96. name: "viewport",
  97. content: "width=device-width, initial-scale=1"
  98. }, void 0, false, {
  99. fileName: _jsxFileName,
  100. lineNumber: 10,
  101. columnNumber: 17
  102. }, undefined), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)("title", {
  103. children: "Thamrin Group"
  104. }, void 0, false, {
  105. fileName: _jsxFileName,
  106. lineNumber: 11,
  107. columnNumber: 17
  108. }, undefined)]
  109. }, void 0, true, {
  110. fileName: _jsxFileName,
  111. lineNumber: 8,
  112. columnNumber: 13
  113. }, undefined), children, /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_GoTop__WEBPACK_IMPORTED_MODULE_3__.default, {
  114. scrollStepInPx: "100",
  115. delayInMs: "10.50"
  116. }, void 0, false, {
  117. fileName: _jsxFileName,
  118. lineNumber: 15,
  119. columnNumber: 13
  120. }, undefined)]
  121. }, void 0, true);
  122. };
  123. /* harmony default export */ __webpack_exports__["default"] = (Layout);
  124. /***/ }),
  125. /***/ "./pages/_app.js":
  126. /*!***********************!*\
  127. !*** ./pages/_app.js ***!
  128. \***********************/
  129. /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
  130. "use strict";
  131. __webpack_require__.r(__webpack_exports__);
  132. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  133. /* harmony export */ "default": function() { return /* binding */ App; }
  134. /* harmony export */ });
  135. /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
  136. /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);
  137. /* harmony import */ var _public_css_bootstrap_min_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/public/css/bootstrap.min.css */ "./public/css/bootstrap.min.css");
  138. /* harmony import */ var _public_css_bootstrap_min_css__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_public_css_bootstrap_min_css__WEBPACK_IMPORTED_MODULE_1__);
  139. /* harmony import */ var animate_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! animate.css */ "./node_modules/animate.css/animate.css");
  140. /* harmony import */ var animate_css__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(animate_css__WEBPACK_IMPORTED_MODULE_2__);
  141. /* harmony import */ var _public_css_boxicons_min_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/public/css/boxicons.min.css */ "./public/css/boxicons.min.css");
  142. /* harmony import */ var _public_css_boxicons_min_css__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_public_css_boxicons_min_css__WEBPACK_IMPORTED_MODULE_3__);
  143. /* harmony import */ var _public_css_flaticon_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/public/css/flaticon.css */ "./public/css/flaticon.css");
  144. /* harmony import */ var _public_css_flaticon_css__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_public_css_flaticon_css__WEBPACK_IMPORTED_MODULE_4__);
  145. /* harmony import */ var _public_css_slick_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/public/css/slick.css */ "./public/css/slick.css");
  146. /* harmony import */ var _public_css_slick_css__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_public_css_slick_css__WEBPACK_IMPORTED_MODULE_5__);
  147. /* harmony import */ var react_accessible_accordion_dist_fancy_example_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react-accessible-accordion/dist/fancy-example.css */ "./node_modules/react-accessible-accordion/dist/fancy-example.css");
  148. /* harmony import */ var react_accessible_accordion_dist_fancy_example_css__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react_accessible_accordion_dist_fancy_example_css__WEBPACK_IMPORTED_MODULE_6__);
  149. /* harmony import */ var _public_css_style_css__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/public/css/style.css */ "./public/css/style.css");
  150. /* harmony import */ var _public_css_style_css__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_public_css_style_css__WEBPACK_IMPORTED_MODULE_7__);
  151. /* harmony import */ var _public_css_responsive_css__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/public/css/responsive.css */ "./public/css/responsive.css");
  152. /* harmony import */ var _public_css_responsive_css__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_public_css_responsive_css__WEBPACK_IMPORTED_MODULE_8__);
  153. /* harmony import */ var _components_App_Layout__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/components/_App/Layout */ "./components/_App/Layout.js");
  154. /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react-redux */ "react-redux");
  155. /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_10__);
  156. /* harmony import */ var react_toast_notifications__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! react-toast-notifications */ "react-toast-notifications");
  157. /* harmony import */ var react_toast_notifications__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(react_toast_notifications__WEBPACK_IMPORTED_MODULE_11__);
  158. /* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../store */ "./store.js");
  159. var _jsxFileName = "E:\\Project\\Templae\\tbg-company-ecomm-web\\pages\\_app.js";
  160. function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
  161. function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
  162. function _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; }
  163. // Multicolor if you want this color comment out
  164. // import '@/public/css/colors/brink-pink-style.css'
  165. // import '@/public/css/colors/pink-style.css'
  166. // import '@/public/css/colors/purple-style.css'
  167. function App({
  168. Component,
  169. pageProps
  170. }) {
  171. const store = (0,_store__WEBPACK_IMPORTED_MODULE_12__.useStore)(pageProps.initialReduxState);
  172. return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_toast_notifications__WEBPACK_IMPORTED_MODULE_11__.ToastProvider, {
  173. placement: "bottom-left",
  174. autoDismissTimeout: 6000,
  175. autoDismiss: true,
  176. children: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_redux__WEBPACK_IMPORTED_MODULE_10__.Provider, {
  177. store: store,
  178. children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_App_Layout__WEBPACK_IMPORTED_MODULE_9__.default, {}, void 0, false, {
  179. fileName: _jsxFileName,
  180. lineNumber: 30,
  181. columnNumber: 17
  182. }, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Component, _objectSpread({}, pageProps), void 0, false, {
  183. fileName: _jsxFileName,
  184. lineNumber: 31,
  185. columnNumber: 17
  186. }, this)]
  187. }, void 0, true, {
  188. fileName: _jsxFileName,
  189. lineNumber: 29,
  190. columnNumber: 13
  191. }, this)
  192. }, void 0, false, {
  193. fileName: _jsxFileName,
  194. lineNumber: 24,
  195. columnNumber: 9
  196. }, this);
  197. }
  198. /***/ }),
  199. /***/ "./products.js":
  200. /*!*********************!*\
  201. !*** ./products.js ***!
  202. \*********************/
  203. /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
  204. "use strict";
  205. __webpack_require__.r(__webpack_exports__);
  206. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  207. /* harmony export */ "productsData": function() { return /* binding */ productsData; }
  208. /* harmony export */ });
  209. const productsData = [{
  210. id: 'wood-pencil',
  211. name: 'Wood Pencil',
  212. price: 19.99,
  213. desc: "There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable.",
  214. availability: 'In Stock',
  215. image: '/images/shop-image/shop-image1.jpg',
  216. images: [{
  217. id: 1,
  218. img: '/images/shop-image/shop-image1.jpg'
  219. }, {
  220. id: 2,
  221. img: '/images/shop-image/shop-image1.jpg'
  222. }, {
  223. id: 3,
  224. img: '/images/shop-image/shop-image1.jpg'
  225. }, {
  226. id: 4,
  227. img: '/images/shop-image/shop-image1.jpg'
  228. }]
  229. }, {
  230. id: 't-shirt',
  231. name: 'T-Shirt',
  232. price: 22.99,
  233. desc: "There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable.",
  234. availability: 'In Stock',
  235. image: '/images/shop-image/shop-image2.jpg',
  236. images: [{
  237. id: 1,
  238. img: '/images/shop-image/shop-image1.jpg'
  239. }, {
  240. id: 2,
  241. img: '/images/shop-image/shop-image2.jpg'
  242. }, {
  243. id: 3,
  244. img: '/images/shop-image/shop-image1.jpg'
  245. }, {
  246. id: 4,
  247. img: '/images/shop-image/shop-image2.jpg'
  248. }]
  249. }, {
  250. id: 'casual-shoe',
  251. name: 'Casual Shoe',
  252. price: 31.99,
  253. desc: "There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable.",
  254. availability: 'In Stock',
  255. image: '/images/shop-image/shop-image3.jpg',
  256. images: [{
  257. id: 1,
  258. img: '/images/shop-image/shop-image3.jpg'
  259. }, {
  260. id: 2,
  261. img: '/images/shop-image/shop-image2.jpg'
  262. }, {
  263. id: 3,
  264. img: '/images/shop-image/shop-image1.jpg'
  265. }, {
  266. id: 4,
  267. img: '/images/shop-image/shop-image2.jpg'
  268. }]
  269. }, {
  270. id: 'coffee-bag',
  271. name: 'Coffee Bag',
  272. price: 4.99,
  273. desc: "There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable.",
  274. availability: 'In Stock',
  275. image: '/images/shop-image/shop-image4.jpg',
  276. images: [{
  277. id: 1,
  278. img: '/images/shop-image/shop-image4.jpg'
  279. }, {
  280. id: 2,
  281. img: '/images/shop-image/shop-image2.jpg'
  282. }, {
  283. id: 3,
  284. img: '/images/shop-image/shop-image1.jpg'
  285. }, {
  286. id: 4,
  287. img: '/images/shop-image/shop-image4.jpg'
  288. }]
  289. }, {
  290. id: 'single-chair',
  291. name: 'Single Chair',
  292. price: 149.99,
  293. desc: "There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable.",
  294. availability: 'In Stock',
  295. image: '/images/shop-image/shop-image5.jpg',
  296. images: [{
  297. id: 1,
  298. img: '/images/shop-image/shop-image5.jpg'
  299. }, {
  300. id: 2,
  301. img: '/images/shop-image/shop-image2.jpg'
  302. }, {
  303. id: 3,
  304. img: '/images/shop-image/shop-image1.jpg'
  305. }, {
  306. id: 4,
  307. img: '/images/shop-image/shop-image4.jpg'
  308. }]
  309. }, {
  310. id: 'business-card',
  311. name: 'Business Card',
  312. price: 1.99,
  313. desc: "There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable.",
  314. availability: 'In Stock',
  315. image: '/images/shop-image/shop-image6.jpg',
  316. images: [{
  317. id: 1,
  318. img: '/images/shop-image/shop-image6.jpg'
  319. }, {
  320. id: 2,
  321. img: '/images/shop-image/shop-image2.jpg'
  322. }, {
  323. id: 3,
  324. img: '/images/shop-image/shop-image1.jpg'
  325. }, {
  326. id: 4,
  327. img: '/images/shop-image/shop-image4.jpg'
  328. }]
  329. }, {
  330. id: 'book-cover',
  331. name: 'Book Cover',
  332. price: 3.99,
  333. desc: "There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable.",
  334. availability: 'In Stock',
  335. image: '/images/shop-image/shop-image7.jpg',
  336. images: [{
  337. id: 1,
  338. img: '/images/shop-image/shop-image7.jpg'
  339. }, {
  340. id: 2,
  341. img: '/images/shop-image/shop-image2.jpg'
  342. }, {
  343. id: 3,
  344. img: '/images/shop-image/shop-image1.jpg'
  345. }, {
  346. id: 4,
  347. img: '/images/shop-image/shop-image4.jpg'
  348. }]
  349. }, {
  350. id: 'wall-watch',
  351. name: 'Wall Watch',
  352. price: 9.99,
  353. desc: "There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable.",
  354. availability: 'In Stock',
  355. image: '/images/shop-image/shop-image8.jpg',
  356. images: [{
  357. id: 1,
  358. img: '/images/shop-image/shop-image8.jpg'
  359. }, {
  360. id: 2,
  361. img: '/images/shop-image/shop-image2.jpg'
  362. }, {
  363. id: 3,
  364. img: '/images/shop-image/shop-image1.jpg'
  365. }, {
  366. id: 4,
  367. img: '/images/shop-image/shop-image4.jpg'
  368. }]
  369. }];
  370. /***/ }),
  371. /***/ "./store.js":
  372. /*!******************!*\
  373. !*** ./store.js ***!
  374. \******************/
  375. /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
  376. "use strict";
  377. __webpack_require__.r(__webpack_exports__);
  378. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  379. /* harmony export */ "initializeStore": function() { return /* binding */ initializeStore; },
  380. /* harmony export */ "useStore": function() { return /* binding */ useStore; }
  381. /* harmony export */ });
  382. /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
  383. /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
  384. /* harmony import */ var redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! redux */ "redux");
  385. /* harmony import */ var redux__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(redux__WEBPACK_IMPORTED_MODULE_1__);
  386. /* harmony import */ var redux_devtools_extension__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! redux-devtools-extension */ "redux-devtools-extension");
  387. /* harmony import */ var redux_devtools_extension__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(redux_devtools_extension__WEBPACK_IMPORTED_MODULE_2__);
  388. /* harmony import */ var _products__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./products */ "./products.js");
  389. function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
  390. function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
  391. function _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; }
  392. let store;
  393. const initialState = {
  394. products: _products__WEBPACK_IMPORTED_MODULE_3__.productsData,
  395. cart: [],
  396. total: 0
  397. };
  398. const reducer = (state = initialState, action) => {
  399. switch (action.type) {
  400. case 'ADD_TO_CART':
  401. let addedItem = state.products.find(item => item.id === action.id);
  402. let existed_item = state.cart.find(item => action.id === item.id);
  403. if (existed_item) {
  404. addedItem.quantity += 1;
  405. return _objectSpread(_objectSpread({}, state), {}, {
  406. total: state.total + addedItem.price
  407. });
  408. } else {
  409. addedItem.quantity = 1;
  410. let newTotal = state.total + addedItem.price;
  411. return _objectSpread(_objectSpread({}, state), {}, {
  412. cart: [...state.cart, addedItem],
  413. total: newTotal
  414. });
  415. }
  416. case 'ADD_QUANTITY':
  417. let existingItem = state.cart.find(item => item.id === action.id);
  418. existingItem.quantity += 1;
  419. let newTotal = state.total + existingItem.price;
  420. return _objectSpread(_objectSpread({}, state), {}, {
  421. total: newTotal
  422. });
  423. case 'SUB_QUANTITY':
  424. let exItem = state.products.find(item => item.id === action.id);
  425. if (exItem.quantity === 1) {
  426. let new_items = state.cart.filter(item => item.id !== action.id);
  427. let newTotal = state.total - exItem.price;
  428. return _objectSpread(_objectSpread({}, state), {}, {
  429. cart: new_items,
  430. total: newTotal
  431. });
  432. } else {
  433. exItem.quantity -= 1;
  434. let newTotal = state.total - exItem.price;
  435. return _objectSpread(_objectSpread({}, state), {}, {
  436. total: newTotal
  437. });
  438. }
  439. case 'ADD_QUANTITY_WITH_NUMBER':
  440. let addedItemD = state.products.find(item => item.id === action.id); //check if the action id exists in the addedItems
  441. let existed_itemd = state.cart.find(item => action.id === item.id);
  442. if (existed_itemd) {
  443. addeaddedItemDdItem.quantity += action.qty;
  444. return _objectSpread(_objectSpread({}, state), {}, {
  445. total: state.total + addedItemD.price * action.qty
  446. });
  447. } else {
  448. addedItemD.quantity = action.qty; //calculating the total
  449. let newTotal = state.total + addedItemD.price * action.qty;
  450. return _objectSpread(_objectSpread({}, state), {}, {
  451. cart: [...state.cart, addedItemD],
  452. total: newTotal
  453. });
  454. }
  455. case 'REMOVE_ITEM':
  456. let itemToRemove = state.cart.find(item => action.id === item.id);
  457. let new_items = state.cart.filter(item => action.id !== item.id); //calculating the total
  458. let newTotalRemove = state.total - itemToRemove.price * itemToRemove.quantity;
  459. return _objectSpread(_objectSpread({}, state), {}, {
  460. cart: new_items,
  461. total: newTotalRemove
  462. });
  463. case 'RESET':
  464. return _objectSpread(_objectSpread({}, state), {}, {
  465. cart: []
  466. });
  467. default:
  468. return state;
  469. }
  470. };
  471. function initStore(preloadedState = initialState) {
  472. return (0,redux__WEBPACK_IMPORTED_MODULE_1__.createStore)(reducer, preloadedState, (0,redux_devtools_extension__WEBPACK_IMPORTED_MODULE_2__.composeWithDevTools)((0,redux__WEBPACK_IMPORTED_MODULE_1__.applyMiddleware)()));
  473. }
  474. const initializeStore = preloadedState => {
  475. var _store2;
  476. let _store = (_store2 = store) !== null && _store2 !== void 0 ? _store2 : initStore(preloadedState); // After navigating to a page with an initial Redux state, merge that state
  477. // with the current state in the store, and create a new store
  478. if (preloadedState && store) {
  479. _store = initStore(_objectSpread(_objectSpread({}, store.getState()), preloadedState)); // Reset the current store
  480. store = undefined;
  481. } // For SSG and SSR always create a new store
  482. if (true) return _store; // Create the store once in the client
  483. if (!store) store = _store;
  484. return _store;
  485. };
  486. function useStore(initialState) {
  487. const store = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => initializeStore(initialState), [initialState]);
  488. return store;
  489. }
  490. /***/ }),
  491. /***/ "./node_modules/animate.css/animate.css":
  492. /*!**********************************************!*\
  493. !*** ./node_modules/animate.css/animate.css ***!
  494. \**********************************************/
  495. /***/ (function() {
  496. /***/ }),
  497. /***/ "./node_modules/react-accessible-accordion/dist/fancy-example.css":
  498. /*!************************************************************************!*\
  499. !*** ./node_modules/react-accessible-accordion/dist/fancy-example.css ***!
  500. \************************************************************************/
  501. /***/ (function() {
  502. /***/ }),
  503. /***/ "./public/css/bootstrap.min.css":
  504. /*!**************************************!*\
  505. !*** ./public/css/bootstrap.min.css ***!
  506. \**************************************/
  507. /***/ (function() {
  508. /***/ }),
  509. /***/ "./public/css/boxicons.min.css":
  510. /*!*************************************!*\
  511. !*** ./public/css/boxicons.min.css ***!
  512. \*************************************/
  513. /***/ (function() {
  514. /***/ }),
  515. /***/ "./public/css/flaticon.css":
  516. /*!*********************************!*\
  517. !*** ./public/css/flaticon.css ***!
  518. \*********************************/
  519. /***/ (function() {
  520. /***/ }),
  521. /***/ "./public/css/responsive.css":
  522. /*!***********************************!*\
  523. !*** ./public/css/responsive.css ***!
  524. \***********************************/
  525. /***/ (function() {
  526. /***/ }),
  527. /***/ "./public/css/slick.css":
  528. /*!******************************!*\
  529. !*** ./public/css/slick.css ***!
  530. \******************************/
  531. /***/ (function() {
  532. /***/ }),
  533. /***/ "./public/css/style.css":
  534. /*!******************************!*\
  535. !*** ./public/css/style.css ***!
  536. \******************************/
  537. /***/ (function() {
  538. /***/ }),
  539. /***/ "next/head":
  540. /*!****************************!*\
  541. !*** external "next/head" ***!
  542. \****************************/
  543. /***/ (function(module) {
  544. "use strict";
  545. module.exports = require("next/head");;
  546. /***/ }),
  547. /***/ "react":
  548. /*!************************!*\
  549. !*** external "react" ***!
  550. \************************/
  551. /***/ (function(module) {
  552. "use strict";
  553. module.exports = require("react");;
  554. /***/ }),
  555. /***/ "react-feather":
  556. /*!********************************!*\
  557. !*** external "react-feather" ***!
  558. \********************************/
  559. /***/ (function(module) {
  560. "use strict";
  561. module.exports = require("react-feather");;
  562. /***/ }),
  563. /***/ "react-redux":
  564. /*!******************************!*\
  565. !*** external "react-redux" ***!
  566. \******************************/
  567. /***/ (function(module) {
  568. "use strict";
  569. module.exports = require("react-redux");;
  570. /***/ }),
  571. /***/ "react-toast-notifications":
  572. /*!********************************************!*\
  573. !*** external "react-toast-notifications" ***!
  574. \********************************************/
  575. /***/ (function(module) {
  576. "use strict";
  577. module.exports = require("react-toast-notifications");;
  578. /***/ }),
  579. /***/ "react/jsx-dev-runtime":
  580. /*!****************************************!*\
  581. !*** external "react/jsx-dev-runtime" ***!
  582. \****************************************/
  583. /***/ (function(module) {
  584. "use strict";
  585. module.exports = require("react/jsx-dev-runtime");;
  586. /***/ }),
  587. /***/ "redux":
  588. /*!************************!*\
  589. !*** external "redux" ***!
  590. \************************/
  591. /***/ (function(module) {
  592. "use strict";
  593. module.exports = require("redux");;
  594. /***/ }),
  595. /***/ "redux-devtools-extension":
  596. /*!*******************************************!*\
  597. !*** external "redux-devtools-extension" ***!
  598. \*******************************************/
  599. /***/ (function(module) {
  600. "use strict";
  601. module.exports = require("redux-devtools-extension");;
  602. /***/ })
  603. };
  604. ;
  605. // load runtime
  606. var __webpack_require__ = require("../webpack-runtime.js");
  607. __webpack_require__.C(exports);
  608. var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); }
  609. var __webpack_exports__ = (__webpack_exec__("./pages/_app.js"));
  610. module.exports = __webpack_exports__;
  611. })();
  612. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9zdGFydHAvLi9jb21wb25lbnRzL19BcHAvR29Ub3AuanMiLCJ3ZWJwYWNrOi8vc3RhcnRwLy4vY29tcG9uZW50cy9fQXBwL0xheW91dC5qcyIsIndlYnBhY2s6Ly9zdGFydHAvLi9wYWdlcy9fYXBwLmpzIiwid2VicGFjazovL3N0YXJ0cC8uL3Byb2R1Y3RzLmpzIiwid2VicGFjazovL3N0YXJ0cC8uL3N0b3JlLmpzIiwid2VicGFjazovL3N0YXJ0cC9leHRlcm5hbCBcIm5leHQvaGVhZFwiIiwid2VicGFjazovL3N0YXJ0cC9leHRlcm5hbCBcInJlYWN0XCIiLCJ3ZWJwYWNrOi8vc3RhcnRwL2V4dGVybmFsIFwicmVhY3QtZmVhdGhlclwiIiwid2VicGFjazovL3N0YXJ0cC9leHRlcm5hbCBcInJlYWN0LXJlZHV4XCIiLCJ3ZWJwYWNrOi8vc3RhcnRwL2V4dGVybmFsIFwicmVhY3QtdG9hc3Qtbm90aWZpY2F0aW9uc1wiIiwid2VicGFjazovL3N0YXJ0cC9leHRlcm5hbCBcInJlYWN0L2pzeC1kZXYtcnVudGltZVwiIiwid2VicGFjazovL3N0YXJ0cC9leHRlcm5hbCBcInJlZHV4XCIiLCJ3ZWJwYWNrOi8vc3RhcnRwL2V4dGVybmFsIFwicmVkdXgtZGV2dG9vbHMtZXh0ZW5zaW9uXCIiXSwibmFtZXMiOlsiR29Ub3AiLCJzY3JvbGxTdGVwSW5QeCIsImRlbGF5SW5NcyIsInRoZVBvc2l0aW9uIiwic2V0VGhlUG9zaXRpb24iLCJSZWFjdCIsInRpbWVvdXRSZWYiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJ3aW5kb3ciLCJzY3JvbGxZIiwib25TY3JvbGxTdGVwIiwicGFnZVlPZmZzZXQiLCJjbGVhckludGVydmFsIiwiY3VycmVudCIsInNjcm9sbCIsInNjcm9sbFRvVG9wIiwic2V0SW50ZXJ2YWwiLCJyZW5kZXJHb1RvcEljb24iLCJMYXlvdXQiLCJjaGlsZHJlbiIsIkFwcCIsIkNvbXBvbmVudCIsInBhZ2VQcm9wcyIsInN0b3JlIiwidXNlU3RvcmUiLCJpbml0aWFsUmVkdXhTdGF0ZSIsInByb2R1Y3RzRGF0YSIsImlkIiwibmFtZSIsInByaWNlIiwiZGVzYyIsImF2YWlsYWJpbGl0eSIsImltYWdlIiwiaW1hZ2VzIiwiaW1nIiwiaW5pdGlhbFN0YXRlIiwicHJvZHVjdHMiLCJjYXJ0IiwidG90YWwiLCJyZWR1Y2VyIiwic3RhdGUiLCJhY3Rpb24iLCJ0eXBlIiwiYWRkZWRJdGVtIiwiZmluZCIsIml0ZW0iLCJleGlzdGVkX2l0ZW0iLCJxdWFudGl0eSIsIm5ld1RvdGFsIiwiZXhpc3RpbmdJdGVtIiwiZXhJdGVtIiwibmV3X2l0ZW1zIiwiZmlsdGVyIiwiYWRkZWRJdGVtRCIsImV4aXN0ZWRfaXRlbWQiLCJhZGRlYWRkZWRJdGVtRGRJdGVtIiwicXR5IiwiaXRlbVRvUmVtb3ZlIiwibmV3VG90YWxSZW1vdmUiLCJpbml0U3RvcmUiLCJwcmVsb2FkZWRTdGF0ZSIsImNyZWF0ZVN0b3JlIiwiY29tcG9zZVdpdGhEZXZUb29scyIsImFwcGx5TWlkZGxld2FyZSIsImluaXRpYWxpemVTdG9yZSIsIl9zdG9yZSIsImdldFN0YXRlIiwidW5kZWZpbmVkIiwidXNlTWVtbyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7O0FBRUEsTUFBTUEsS0FBSyxHQUFHLENBQUM7QUFBQ0MsZ0JBQUQ7QUFBaUJDO0FBQWpCLENBQUQsS0FBaUM7QUFFM0MsUUFBTSxDQUFDQyxXQUFELEVBQWNDLGNBQWQsSUFBZ0NDLHFEQUFBLENBQWUsS0FBZixDQUF0QztBQUNBLFFBQU1DLFVBQVUsR0FBR0QsbURBQUEsQ0FBYSxJQUFiLENBQW5CO0FBRUFBLHdEQUFBLENBQWdCLE1BQU07QUFDbEJFLFlBQVEsQ0FBQ0MsZ0JBQVQsQ0FBMEIsUUFBMUIsRUFBb0MsTUFBTTtBQUN0QyxVQUFJQyxNQUFNLENBQUNDLE9BQVAsR0FBaUIsR0FBckIsRUFBMEI7QUFDdEJOLHNCQUFjLENBQUMsSUFBRCxDQUFkO0FBQ0gsT0FG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VyxZQUFsQixFQUFnQztBQUNyQyxRQUFNWixLQUFLLEdBQUc2Qyw4Q0FBTyxDQUFDLE1BQU1KLGVBQWUsQ0FBQzdCLFlBQUQsQ0FBdEIsRUFBc0MsQ0FBQ0EsWUFBRCxDQUF0QyxDQUFyQjtBQUNBLFNBQU9aLEtBQVA7QUFDRCxDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDL0lELHVDOzs7Ozs7Ozs7OztBQ0FBLG1DOzs7Ozs7Ozs7OztBQ0FBLDJDOzs7Ozs7Ozs7OztBQ0FBLHlDOzs7Ozs7Ozs7OztBQ0FBLHVEOzs7Ozs7Ozs7OztBQ0FBLG1EOzs7Ozs7Ozs7OztBQ0FBLG1DOzs7Ozs7Ozs7OztBQ0FBLHNEIiwiZmlsZSI6InBhZ2VzL19hcHAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgSWNvbiBmcm9tICdyZWFjdC1mZWF0aGVyJztcblxuY29uc3QgR29Ub3AgPSAoe3Njcm9sbFN0ZXBJblB4LCBkZWxheUluTXN9KSA9PiB7XG5cbiAgICBjb25zdCBbdGhlUG9zaXRpb24sIHNldFRoZVBvc2l0aW9uXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCB0aW1lb3V0UmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCAoKSA9PiB7XG4gICAgICAgICAgICBpZiAod2luZG93LnNjcm9sbFkgPiAxNzApIHtcbiAgICAgICAgICAgICAgICBzZXRUaGVQb3NpdGlvbih0cnVlKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZXRUaGVQb3NpdGlvbihmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0sIFtdKVxuICAgIFxuICAgIGNvbnN0IG9uU2Nyb2xsU3RlcCA9ICgpID0+IHtcbiAgICAgICAgaWYgKHdpbmRvdy5wYWdlWU9mZnNldCA9PT0gMCl7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVvdXRSZWYuY3VycmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgd2luZG93LnNjcm9sbCgwLCB3aW5kb3cucGFnZVlPZmZzZXQgLSBzY3JvbGxTdGVwSW5QeCk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2Nyb2xsVG9Ub3AgPSAoKSA9PiB7XG4gICAgICAgIHRpbWVvdXRSZWYuY3VycmVudCA9IHNldEludGVydmFsKG9uU2Nyb2xsU3RlcCwgZGVsYXlJbk1zKTtcbiAgICB9XG5cbiAgICBjb25zdCByZW5kZXJHb1RvcEljb24gPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YGdvLXRvcCAke3RoZVBvc2l0aW9uID8gJ2FjdGl2ZScgOiAnJ31gfSBvbkNsaWNrPXtzY3JvbGxUb1RvcH0+XG4gICAgICAgICAgICAgICAgPEljb24uQXJyb3dVcCAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8UmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgICAgICB7cmVuZGVyR29Ub3BJY29uKCl9XG4gICAgICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gICAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBHb1RvcDsiLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgSGVhZCBmcm9tIFwibmV4dC9oZWFkXCJcbmltcG9ydCBHb1RvcCBmcm9tICcuL0dvVG9wJ1xuIFxuY29uc3QgTGF5b3V0ID0gKHsgY2hpbGRyZW4gfSkgPT4ge1xuICAgIHJldHVybihcbiAgICAgICAgPD5cbiAgICAgICAgICAgIDxIZWFkPlxuICAgICAgICAgICAgICAgIDxtZXRhIGNoYXJTZXQ9XCJ1dGYtOFwiIC8+XG4gICAgICAgICAgICAgICAgPG1ldGEgbmFtZT1cInZpZXdwb3J0XCIgY29udGVudD1cIndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xXCIgLz5cbiAgICAgICAgICAgICAgICA8dGl0bGU+VGhhbXJpbiBHcm91cDwvdGl0bGU+XG4gICAgICAgICAgICA8L0hlYWQ+XG4gICAgICAgICAgICB7Y2hpbGRyZW59XG5cbiAgICAgICAgICAgIDxHb1RvcCBzY3JvbGxTdGVwSW5QeD1cIjEwMFwiIGRlbGF5SW5Ncz1cIjEwLjUwXCIgLz5cbiAgICAgICAgPC8+XG4gICAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBMYXlvdXQiLCJpbXBvcnQgJ0AvcHVibGljL2Nzcy9ib290c3RyYXAubWluLmNzcydcbmltcG9ydCAnYW5pbWF0ZS5jc3MnXG5pbXBvcnQgJ0AvcHVibGljL2Nzcy9ib3hpY29ucy5taW4uY3NzJ1xuaW1wb3J0ICdAL3B1YmxpYy9jc3MvZmxhdGljb24uY3NzJ1xuaW1wb3J0IFwiQC9wdWJsaWMvY3NzL3NsaWNrLmNzc1wiXG5pbXBvcnQgJ3JlYWN0LWFjY2Vzc2libGUtYWNjb3JkaW9uL2Rpc3QvZmFuY3ktZXhhbXBsZS5jc3MnXG5pbXBvcnQgJ0AvcHVibGljL2Nzcy9zdHlsZS5jc3MnXG5pbXBvcnQgJ0AvcHVibGljL2Nzcy9yZXNwb25zaXZlLmNzcydcblxuLy8gTXVsdGljb2xvciBpZiB5b3Ugd2FudCB0aGlzIGNvbG9yIGNvbW1lbnQgb3V0IFxuLy8gaW1wb3J0ICdAL3B1YmxpYy9jc3MvY29sb3JzL2JyaW5rLXBpbmstc3R5bGUuY3NzJ1xuLy8gaW1wb3J0ICdAL3B1YmxpYy9jc3MvY29sb3JzL3Bpbmstc3R5bGUuY3NzJ1xuLy8gaW1wb3J0ICdAL3B1YmxpYy9jc3MvY29sb3JzL3B1cnBsZS1zdHlsZS5jc3MnICBcblxuaW1wb3J0IExheW91dCBmcm9tICdAL2NvbXBvbmVudHMvX0FwcC9MYXlvdXQnXG5pbXBvcnQgeyBQcm92aWRlciB9IGZyb20gJ3JlYWN0LXJlZHV4J1xuaW1wb3J0IHsgVG9hc3RQcm92aWRlciB9IGZyb20gJ3JlYWN0LXRvYXN0LW5vdGlmaWNhdGlvbnMnXG5pbXBvcnQgeyB1c2VTdG9yZSB9IGZyb20gJy4uL3N0b3JlJ1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBBcHAoeyBDb21wb25lbnQsIHBhZ2VQcm9wcyB9KSB7XG4gICAgY29uc3Qgc3RvcmUgPSB1c2VTdG9yZShwYWdlUHJvcHMuaW5pdGlhbFJlZHV4U3RhdGUpXG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8VG9hc3RQcm92aWRlciBcbiAgICAgICAgICAgIHBsYWNlbWVudCA9IFwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgYXV0b0Rpc21pc3NUaW1lb3V0PXs2MDAwfVxuICAgICAgICAgICAgYXV0b0Rpc21pc3NcbiAgICAgICAgPlxuICAgICAgICAgICAgPFByb3ZpZGVyIHN0b3JlPXtzdG9yZX0+XG4gICAgICAgICAgICAgICAgPExheW91dCAvPlxuICAgICAgICAgICAgICAgIDxDb21wb25lbnQgey4uLnBhZ2VQcm9wc30gLz5cbiAgICAgICAgICAgIDwvUHJvdmlkZXI+XG4gICAgICAgIDwvVG9hc3RQcm92aWRlcj5cbiAgICApXG59XG4iLCJleHBvcnQgY29uc3QgcHJvZHVjdHNEYXRhID0gW1xuICAgIHtcbiAgICAgICAgaWQ6ICd3b29kLXBlbmNpbCcsXG4gICAgICAgIG5hbWU6ICdXb29kIFBlbmNpbCcsXG4gICAgICAgIHByaWNlOiAxOS45OSxcbiAgICAgICAgZGVzYzogXCJUaGVyZSBhcmUgbWFueSB2YXJpYXRpb25zIG9mIHBhc3NhZ2VzIG9mIExvcmVtIElwc3VtIGF2YWlsYWJsZSwgYnV0IHRoZSBtYWpvcml0eSBoYXZlIHN1ZmZlcmVkIGFsdGVyYXRpb24gaW4gc29tZSBmb3JtLCBieSBpbmplY3RlZCBodW1vdXIsIG9yIHJhbmRvbWlzZWQgd29yZHMgd2hpY2ggZG9uJ3QgbG9vayBldmVuIHNsaWdodGx5IGJlbGlldmFibGUuXCIsXG4gICAgICAgIGF2YWlsYWJpbGl0eTogJ0luIFN0b2NrJyxcbiAgICAgICAgaW1hZ2U6ICcvaW1hZ2VzL3Nob3AtaW1hZ2Uvc2hvcC1pbWFnZTEuanBnJyxcbiAgICAgICAgaW1hZ2VzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6IDEsXG4gICAgICAgICAgICAgICAgaW1nOiAnL2ltYWdlcy9zaG9wLWltYWdlL3Nob3AtaW1hZ2UxLmpwZydcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6IDIsXG4gICAgICAgICAgICAgICAgaW1nOiAnL2ltYWdlcy9zaG9wLWltYWdlL3Nob3AtaW1hZ2UxLmpwZydcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6IDMsXG4gICAgICAgICAgICAgICAgaW1nOiAnL2ltYWdlcy9zaG9wLWltYWdlL3Nob3AtaW1hZ2UxLmpwZydcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6IDQsXG4gICAgICAgICAgICAgICAgaW1nOiAnL2ltYWdlcy9zaG9wLWltYWdlL3Nob3AtaW1hZ2UxLmpwZydcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgaWQ6ICd0LXNoaXJ0JyxcbiAgICAgICAgbmFtZTogJ1QtU2hpcnQnLFxuICAgICAgICBwcmljZTogMjIuOTksXG4gICAgICAgIGRlc2M6IFwiVGhlcmUgYXJlIG1hbnkgdmFyaWF0aW9ucyBvZiBwYXNzYWdlcyBvZiBMb3JlbSBJcHN1bSBhdmFpbGFibGUsIGJ1dCB0aGUgbWFqb3JpdHkgaGF2ZSBzdWZmZXJlZCBhbHRlcmF0aW9uIGluIHNvbWUgZm9ybSwgYnkgaW5qZWN0ZWQgaHVtb3VyLCBvciByYW5kb21pc2VkIHdvcmRzIHdoaWNoIGRvbid0IGxvb2sgZXZlbiBzbGlnaHRseSBiZWxpZXZhYmxlLlwiLFxuICAgICAgICBhdmFpbGFiaWxpdHk6ICdJbiBTdG9jaycsXG4gICAgICAgIGltYWdlOiAnL2ltYWdlcy9zaG9wLWltYWdlL3Nob3AtaW1hZ2UyLmpwZycsXG4gICAgICAgIGltYWdlczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAxLFxuICAgICAgICAgICAgICAgIGltZzogJy9pbWFnZXMvc2hvcC1pbWFnZS9zaG9wLWltYWdlMS5qcGcnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAyLFxuICAgICAgICAgICAgICAgIGltZzogJy9pbWFnZXMvc2hvcC1pbWFnZS9zaG9wLWltYWdlMi5qcGcnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAzLFxuICAgICAgICAgICAgICAgIGltZzogJy9pbWFnZXMvc2hvcC1pbWFnZS9zaG9wLWltYWdlMS5qcGcnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiA0LFxuICAgICAgICAgICAgICAgIGltZzogJy9pbWFnZXMvc2hvcC1pbWFnZS9zaG9wLWltYWdlMi5qcGcnXG4gICAgICAgICAgICB9LFxuICAgICAgICBdXG4gICAgfSxcbiAgICB7XG4gICAgICAgIGlkOiAnY2FzdWFsLXNob2UnLFxuICAgICAgICBuYW1lOiAnQ2FzdWFsIFNob2UnLFxuICAgICAgICBwcmljZTogMzEuOTksXG4gICAgICAgIGRlc2M6IFwiVGhlcmUgYXJlIG1hbnkgdmFyaWF0aW9ucyBvZiBwYXNzYWdlcyBvZiBMb3JlbSBJcHN1bSBhdmFpbGFibGUsIGJ1dCB0aGUgbWFqb3JpdHkgaGF2ZSBzdWZmZXJlZCBhbHRlcmF0aW9uIGluIHNvbWUgZm9ybSwgYnkgaW5qZWN0ZWQgaHVtb3VyLCBvciByYW5kb21pc2VkIHdvcmRzIHdoaWNoIGRvbid0IGxvb2sgZXZlbiBzbGlnaHRseSBiZWxpZXZhYmxlLlwiLFxuICAgICAgICBhdmFpbGFiaWxpdHk6ICdJbiBTdG9jaycsXG4gICAgICAgIGltYWdlOiAnL2ltYWdlcy9zaG9wLWltYWdlL3Nob3AtaW1hZ2UzLmpwZycsXG4gICAgICAgIGltYWdlczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAxLFxuICAgICAgICAgICAgICAgIGltZzogJy9pbWFnZXMvc2hvcC1pbWFnZS9zaG9wLWltYWdlMy5qcGcnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAyLFxuICAgICAgICAgICAgICAgIGltZzogJy9pbWFnZXMvc2hvcC1pbWFnZS9zaG9wLWltYWdlMi5qcGcnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAzLFxuICAgICAgICAgICAgICAgIGltZzogJy9pbWFnZXMvc2hvcC1pbWFnZS9zaG9wLWltYWdlMS5qcGcnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiA0LFxuICAgICAgICAgICAgICAgIGltZzogJy9pbWFnZXMvc2hvcC1pbWFnZS9zaG9wLWltYWdlMi5qcGcnXG4gICAgICAgICAgICB9LFxuICAgICAgICBdXG4gICAgfSxcbiAgICB7XG4gICAgICAgIGlkOiAnY29mZmVlLWJhZycsXG4gICAgICAgIG5hbWU6ICdDb2ZmZWUgQmFnJyxcbiAgICAgICAgcHJpY2U6IDQuOTksXG4gICAgICAgIGRlc2M6IFwiVGhlcmUgYXJlIG1hbnkgdmFyaWF0aW9ucyBvZiBwYXNzYWdlcyBvZiBMb3JlbSBJcHN1bSBhdmFpbGFibGUsIGJ1dCB0aGUgbWFqb3JpdHkgaGF2ZSBzdWZmZXJlZCBhbHRlcmF0aW9uIGluIHNvbWUgZm9ybSwgYnkgaW5qZWN0ZWQgaHVtb3VyLCBvciByYW5kb21pc2VkIHdvcmRzIHdoaWNoIGRvbid0IGxvb2sgZXZlbiBzbGlnaHRseSBiZWxpZXZhYmxlLlwiLFxuICAgICAgICBhdmFpbGFiaWxpdHk6ICdJbiBTdG9jaycsXG4gICAgICAgIGltYWdlOiAnL2ltYWdlcy9zaG9wLWltYWdlL3Nob3AtaW1hZ2U0LmpwZycsXG4gICAgICAgIGltYWdlczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAxLFxuICAgICAgICAgICAgICAgIGltZzogJy9pbWFnZXMvc2hvcC1pbWFnZS9zaG9wLWltYWdlNC5qcGcnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAyLFxuICAgICAgICAgICAgICAgIGltZzogJy9pbWFnZXMvc2hvcC1pbWFnZS9zaG9wLWltYWdlMi5qcGcnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAzLFxuICAgICAgICAgICAgICAgIGltZzogJy9pbWFnZXMvc2hvcC1pbWFnZS9zaG9wLWltYWdlMS5qcGcnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiA0LFxuICAgICAgICAgICAgICAgIGltZzogJy9pbWFnZXMvc2hvcC1pbWFnZS9zaG9wLWltYWdlNC5qcGcnXG4gICAgICAgICAgICB9LFxuICAgICAgICBdXG4gICAgfSxcbiAgICB7XG4gICAgICAgIGlkOiAnc2luZ2xlLWNoYWlyJyxcbiAgICAgICAgbmFtZTogJ1NpbmdsZSBDaGFpcicsXG4gICAgICAgIHByaWNlOiAxNDkuOTksXG4gICAgICAgIGRlc2M6IFwiVGhlcmUgYXJlIG1hbnkgdmFyaWF0aW9ucyBvZiBwYXNzYWdlcyBvZiBMb3JlbSBJcHN1bSBhdmFpbGFibGUsIGJ1dCB0aGUgbWFqb3JpdHkgaGF2ZSBzdWZmZXJlZCBhbHRlcmF0aW9uIGluIHNvbWUgZm9ybSwgYnkgaW5qZWN0ZWQgaHVtb3VyLCBvciByYW5kb21pc2VkIHdvcmRzIHdoaWNoIGRvbid0IGxvb2sgZXZlbiBzbGlnaHRseSBiZWxpZXZhYmxlLlwiLFxuICAgICAgICBhdmFpbGFiaWxpdHk6ICdJbiBTdG9jaycsXG4gICAgICAgIGltYWdlOiAnL2ltYWdlcy9zaG9wLWltYWdlL3Nob3AtaW1hZ2U1LmpwZycsXG4gICAgICAgIGltYWdlczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAxLFxuICAgICAgICAgICAgICAgIGltZzogJy9pbWFnZXMvc2hvcC1pbWFnZS9zaG9wLWltYWdlNS5qcGcnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAyLFxuICAgICAgICAgICAgICAgIGltZzogJy9pbWFnZXMvc2hvcC1pbWFnZS9zaG9wLWltYWdlMi5qcGcnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAzLFxuICAgICAgICAgICAgICAgIGltZzogJy9pbWFnZXMvc2hvcC1pbWFnZS9zaG9wLWltYWdlMS5qcGcnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiA0LFxuICAgICAgICAgICAgICAgIGltZzogJy9pbWFnZXMvc2hvcC1pbWFnZS9zaG9wLWltYWdlNC5qcGcnXG4gICAgICAgICAgICB9LFxuICAgICAgICBdXG4gICAgfSxcbiAgICB7XG4gICAgICAgIGlkOiAnYnVzaW5lc3MtY2FyZCcsXG4gICAgICAgIG5hbWU6ICdCdXNpbmVzcyBDYXJkJyxcbiAgICAgICAgcHJpY2U6IDEuOTksXG4gICAgICAgIGRlc2M6IFwiVGhlcmUgYXJlIG1hbnkgdmFyaWF0aW9ucyBvZiBwYXNzYWdlcyBvZiBMb3JlbSBJcHN1bSBhdmFpbGFibGUsIGJ1dCB0aGUgbWFqb3JpdHkgaGF2ZSBzdWZmZXJlZCBhbHRlcmF0aW9uIGluIHNvbWUgZm9ybSwgYnkgaW5qZWN0ZWQgaHVtb3VyLCBvciByYW5kb21pc2VkIHdvcmRzIHdoaWNoIGRvbid0IGxvb2sgZXZlbiBzbGlnaHRseSBiZWxpZXZhYmxlLlwiLFxuICAgICAgICBhdmFpbGFiaWxpdHk6ICdJbiBTdG9jaycsXG4gICAgICAgIGltYWdlOiAnL2ltYWdlcy9zaG9wLWltYWdlL3Nob3AtaW1hZ2U2LmpwZycsXG4gICAgICAgIGltYWdlczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAxLFxuICAgICAgICAgICAgICAgIGltZzogJy9pbWFnZXMvc2hvcC1pbWFnZS9zaG9wLWltYWdlNi5qcGcnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAyLFxuICAgICAgICAgICAgICAgIGltZzogJy9pbWFnZXMvc2hvcC1pbWFnZS9zaG9wLWltYWdlMi5qcGcnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAzLFxuICAgICAgICAgICAgICAgIGltZzogJy9pbWFnZXMvc2hvcC1pbWFnZS9zaG9wLWltYWdlMS5qcGcnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiA0LFxuICAgICAgICAgICAgICAgIGltZzogJy9pbWFnZXMvc2hvcC1pbWFnZS9zaG9wLWltYWdlNC5qcGcnXG4gICAgICAgICAgICB9LFxuICAgICAgICBdXG4gICAgfSxcbiAgICB7XG4gICAgICAgIGlkOiAnYm9vay1jb3ZlcicsXG4gICAgICAgIG5hbWU6ICdCb29rIENvdmVyJyxcbiAgICAgICAgcHJpY2U6IDMuOTksXG4gICAgICAgIGRlc2M6IFwiVGhlcmUgYXJlIG1hbnkgdmFyaWF0aW9ucyBvZiBwYXNzYWdlcyBvZiBMb3JlbSBJcHN1bSBhdmFpbGFibGUsIGJ1dCB0aGUgbWFqb3JpdHkgaGF2ZSBzdWZmZXJlZCBhbHRlcmF0aW9uIGluIHNvbWUgZm9ybSwgYnkgaW5qZWN0ZWQgaHVtb3VyLCBvciByYW5kb21pc2VkIHdvcmRzIHdoaWNoIGRvbid0IGxvb2sgZXZlbiBzbGlnaHRseSBiZWxpZXZhYmxlLlwiLFxuICAgICAgICBhdmFpbGFiaWxpdHk6ICdJbiBTdG9jaycsXG4gICAgICAgIGltYWdlOiAnL2ltYWdlcy9zaG9wLWltYWdlL3Nob3AtaW1hZ2U3LmpwZycsXG4gICAgICAgIGltYWdlczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAxLFxuICAgICAgICAgICAgICAgIGltZzogJy9pbWFnZXMvc2hvcC1pbWFnZS9zaG9wLWltYWdlNy5qcGcnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAyLFxuICAgICAgICAgICAgICAgIGltZzogJy9pbWFnZXMvc2hvcC1pbWFnZS9zaG9wLWltYWdlMi5qcGcnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAzLFxuICAgICAgICAgICAgICAgIGltZzogJy9pbWFnZXMvc2hvcC1pbWFnZS9zaG9wLWltYWdlMS5qcGcnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiA0LFxuICAgICAgICAgICAgICAgIGltZzogJy9pbWFnZXMvc2hvcC1pbWFnZS9zaG9wLWltYWdlNC5qcGcnXG4gICAgICAgICAgICB9LFxuICAgICAgICBdXG4gICAgfSxcbiAgICB7XG4gICAgICAgIGlkOiAnd2FsbC13YXRjaCcsXG4gICAgICAgIG5hbWU6ICdXYWxsIFdhdGNoJyxcbiAgICAgICAgcHJpY2U6IDkuOTksXG4gICAgICAgIGRlc2M6IFwiVGhlcmUgYXJlIG1hbnkgdmFyaWF0aW9ucyBvZiBwYXNzYWdlcyBvZiBMb3JlbSBJcHN1bSBhdmFpbGFibGUsIGJ1dCB0aGUgbWFqb3JpdHkgaGF2ZSBzdWZmZXJlZCBhbHRlcmF0aW9uIGluIHNvbWUgZm9ybSwgYnkgaW5qZWN0ZWQgaHVtb3VyLCBvciByYW5kb21pc2VkIHdvcmRzIHdoaWNoIGRvbid0IGxvb2sgZXZlbiBzbGlnaHRseSBiZWxpZXZhYmxlLlwiLFxuICAgICAgICBhdmFpbGFiaWxpdHk6ICdJbiBTdG9jaycsXG4gICAgICAgIGltYWdlOiAnL2ltYWdlcy9zaG9wLWltYWdlL3Nob3AtaW1hZ2U4LmpwZycsXG4gICAgICAgIGltYWdlczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAxLFxuICAgICAgICAgICAgICAgIGltZzogJy9pbWFnZXMvc2hvcC1pbWFnZS9zaG9wLWltYWdlOC5qcGcnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAyLFxuICAgICAgICAgICAgICAgIGltZzogJy9pbWFnZXMvc2hvcC1pbWFnZS9zaG9wLWltYWdlMi5qcGcnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAzLFxuICAgICAgICAgICAgICAgIGltZzogJy9pbWFnZXMvc2hvcC1pbWFnZS9zaG9wLWltYWdlMS5qcGcnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiA0LFxuICAgICAgICAgICAgICAgIGltZzogJy9pbWFnZXMvc2hvcC1pbWFnZS9zaG9wLWltYWdlNC5qcGcnXG4gICAgICAgICAgICB9LFxuICAgICAgICBdXG4gICAgfSxcbl0iLCJpbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjcmVhdGVTdG9yZSwgYXBwbHlNaWRkbGV3YXJlIH0gZnJvbSAncmVkdXgnXG5pbXBvcnQgeyBjb21wb3NlV2l0aERldlRvb2xzIH0gZnJvbSAncmVkdXgtZGV2dG9vbHMtZXh0ZW5zaW9uJ1xuaW1wb3J0IHsgcHJvZHVjdHNEYXRhIH0gZnJvbSAnLi9wcm9kdWN0cydcblxubGV0IHN0b3JlXG5cbmNvbnN0IGluaXRpYWxTdGF0ZSA9IHtcbiAgcHJvZHVjdHM6IHByb2R1Y3RzRGF0YSxcbiAgY2FydDogW10sXG4gIHRvdGFsOiAwLFxufVxuXG5jb25zdCByZWR1Y2VyID0gKHN0YXRlID0gaW5pdGlhbFN0YXRlLCBhY3Rpb24pID0+IHtcbiAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICAgIGNhc2UgJ0FERF9UT19DQVJUJzpcbiAgICAgIGxldCBhZGRlZEl0ZW0gPSBzdGF0ZS5wcm9kdWN0cy5maW5kKGl0ZW0gPT4gaXRlbS5pZCA9PT0gYWN0aW9uLmlkKVxuICAgICAgbGV0IGV4aXN0ZWRfaXRlbSA9IHN0YXRlLmNhcnQuZmluZChpdGVtID0+IGFjdGlvbi5pZCA9PT0gaXRlbS5pZClcblxuICAgICAgaWYoZXhpc3RlZF9pdGVtKXtcbiAgICAgICAgYWRkZWRJdGVtLnF1YW50aXR5ICs9IDFcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICB0b3RhbDogc3RhdGUudG90YWwgKyBhZGRlZEl0ZW0ucHJpY2VcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWRkZWRJdGVtLnF1YW50aXR5ID0gMVxuICAgICAgICBsZXQgbmV3VG90YWwgPSBzdGF0ZS50b3RhbCArIGFkZGVkSXRlbS5wcmljZVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIGNhcnQ6IFsuLi5zdGF0ZS5jYXJ0LCBhZGRlZEl0ZW1dLFxuICAgICAgICAgIHRvdGFsOiBuZXdUb3RhbFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICBjYXNlICdBRERfUVVBTlRJVFknOlxuICAgICAgbGV0IGV4aXN0aW5nSXRlbSA9IHN0YXRlLmNhcnQuZmluZChpdGVtID0+IGl0ZW0uaWQgPT09IGFjdGlvbi5pZClcbiAgICAgIGV4aXN0aW5nSXRlbS5xdWFudGl0eSArPSAxXG4gICAgICBsZXQgbmV3VG90YWwgPSBzdGF0ZS50b3RhbCArIGV4aXN0aW5nSXRlbS5wcmljZVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHRvdGFsOiBuZXdUb3RhbFxuICAgICAgfVxuXG4gICAgY2FzZSAnU1VCX1FVQU5USVRZJzpcbiAgICAgICAgbGV0IGV4SXRlbSA9IHN0YXRlLnByb2R1Y3RzLmZpbmQoaXRlbT0+IGl0ZW0uaWQgPT09IGFjdGlvbi5pZClcbiAgICAgICAgaWYoZXhJdGVtLnF1YW50aXR5ID09PSAxKXtcbiAgICAgICAgICBsZXQgbmV3X2l0ZW1zID0gc3RhdGUuY2FydC5maWx0ZXIoaXRlbT0+aXRlbS5pZCAhPT0gYWN0aW9uLmlkKVxuICAgICAgICAgIGxldCBuZXdUb3RhbCA9IHN0YXRlLnRvdGFsIC0gZXhJdGVtLnByaWNlXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICAgIGNhcnQ6IG5ld19pdGVtcyxcbiAgICAgICAgICAgICAgdG90YWw6IG5ld1RvdGFsXG4gICAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXhJdGVtLnF1YW50aXR5IC09IDFcbiAgICAgICAgbGV0IG5ld1RvdGFsID0gc3RhdGUudG90YWwgLSBleEl0ZW0ucHJpY2VcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICB0b3RhbDogbmV3VG90YWxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgY2FzZSAnQUREX1FVQU5USVRZX1dJVEhfTlVNQkVSJzpcbiAgICAgICAgbGV0IGFkZGVkSXRlbUQgPSBzdGF0ZS5wcm9kdWN0cy5maW5kKGl0ZW0gPT4gaXRlbS5pZCA9PT0gYWN0aW9uLmlkKVxuICAgICAgICAvL2NoZWNrIGlmIHRoZSBhY3Rpb24gaWQgZXhpc3RzIGluIHRoZSBhZGRlZEl0ZW1zXG4gICAgICAgIGxldCBleGlzdGVkX2l0ZW1kID0gc3RhdGUuY2FydC5maW5kKGl0ZW09PiBhY3Rpb24uaWQgPT09IGl0ZW0uaWQpXG4gICAgICAgIGlmKGV4aXN0ZWRfaXRlbWQpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGFkZGVhZGRlZEl0ZW1EZEl0ZW0ucXVhbnRpdHkgKz0gYWN0aW9uLnF0eVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgICAgICB0b3RhbDogc3RhdGUudG90YWwgKyBhZGRlZEl0ZW1ELnByaWNlICogYWN0aW9uLnF0eVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYWRkZWRJdGVtRC5xdWFudGl0eSA9IGFjdGlvbi5xdHk7XG4gICAgICAgICAgICAvL2NhbGN1bGF0aW5nIHRoZSB0b3RhbFxuICAgICAgICAgICAgbGV0IG5ld1RvdGFsID0gc3RhdGUudG90YWwgKyBhZGRlZEl0ZW1ELnByaWNlICogYWN0aW9uLnF0eVxuICAgICAgICAgICAgXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgICAgIGNhcnQ6IFsuLi5zdGF0ZS5jYXJ0LCBhZGRlZEl0ZW1EXSxcbiAgICAgICAgICAgICAgICB0b3RhbCA6IG5ld1RvdGFsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgfVxuXG4gICAgY2FzZSAnUkVNT1ZFX0lURU0nOlxuICAgICAgbGV0IGl0ZW1Ub1JlbW92ZSA9IHN0YXRlLmNhcnQuZmluZChpdGVtPT4gYWN0aW9uLmlkID09PSBpdGVtLmlkKVxuICAgICAgbGV0IG5ld19pdGVtcyA9IHN0YXRlLmNhcnQuZmlsdGVyKGl0ZW09PiBhY3Rpb24uaWQgIT09IGl0ZW0uaWQpXG4gICAgICAgIFxuICAgICAgLy9jYWxjdWxhdGluZyB0aGUgdG90YWxcbiAgICAgIGxldCBuZXdUb3RhbFJlbW92ZSA9IHN0YXRlLnRvdGFsIC0gKGl0ZW1Ub1JlbW92ZS5wcmljZSAqIGl0ZW1Ub1JlbW92ZS5xdWFudGl0eSApO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIGNhcnQ6IG5ld19pdGVtcyxcbiAgICAgICAgICB0b3RhbDogbmV3VG90YWxSZW1vdmVcbiAgICAgIH1cblxuICAgIGNhc2UgJ1JFU0VUJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBjYXJ0OiBbXSxcbiAgICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHN0YXRlXG4gIH1cbn1cblxuZnVuY3Rpb24gaW5pdFN0b3JlKHByZWxvYWRlZFN0YXRlID0gaW5pdGlhbFN0YXRlKSB7XG4gIHJldHVybiBjcmVhdGVTdG9yZShcbiAgICByZWR1Y2VyLFxuICAgIHByZWxvYWRlZFN0YXRlLFxuICAgIGNvbXBvc2VXaXRoRGV2VG9vbHMoYXBwbHlNaWRkbGV3YXJlKCkpXG4gIClcbn1cblxuZXhwb3J0IGNvbnN0IGluaXRpYWxpemVTdG9yZSA9IChwcmVsb2FkZWRTdGF0ZSkgPT4ge1xuICBsZXQgX3N0b3JlID0gc3RvcmUgPz8gaW5pdFN0b3JlKHByZWxvYWRlZFN0YXRlKVxuXG4gIC8vIEFmdGVyIG5hdmlnYXRpbmcgdG8gYSBwYWdlIHdpdGggYW4gaW5pdGlhbCBSZWR1eCBzdGF0ZSwgbWVyZ2UgdGhhdCBzdGF0ZVxuICAvLyB3aXRoIHRoZSBjdXJyZW50IHN0YXRlIGluIHRoZSBzdG9yZSwgYW5kIGNyZWF0ZSBhIG5ldyBzdG9yZVxuICBpZiAocHJlbG9hZGVkU3RhdGUgJiYgc3RvcmUpIHtcbiAgICBfc3RvcmUgPSBpbml0U3RvcmUoe1xuICAgICAgLi4uc3RvcmUuZ2V0U3RhdGUoKSxcbiAgICAgIC4uLnByZWxvYWRlZFN0YXRlLFxuICAgIH0pXG4gICAgLy8gUmVzZXQgdGhlIGN1cnJlbnQgc3RvcmVcbiAgICBzdG9yZSA9IHVuZGVmaW5lZFxuICB9XG5cbiAgLy8gRm9yIFNTRyBhbmQgU1NSIGFsd2F5cyBjcmVhdGUgYSBuZXcgc3RvcmVcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSByZXR1cm4gX3N0b3JlXG4gIC8vIENyZWF0ZSB0aGUgc3RvcmUgb25jZSBpbiB0aGUgY2xpZW50XG4gIGlmICghc3RvcmUpIHN0b3JlID0gX3N0b3JlXG5cbiAgcmV0dXJuIF9zdG9yZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlU3RvcmUoaW5pdGlhbFN0YXRlKSB7XG4gIGNvbnN0IHN0b3JlID0gdXNlTWVtbygoKSA9PiBpbml0aWFsaXplU3RvcmUoaW5pdGlhbFN0YXRlKSwgW2luaXRpYWxTdGF0ZV0pXG4gIHJldHVybiBzdG9yZVxufVxuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibmV4dC9oZWFkXCIpOzsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdFwiKTs7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtZmVhdGhlclwiKTs7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtcmVkdXhcIik7OyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXRvYXN0LW5vdGlmaWNhdGlvbnNcIik7OyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0L2pzeC1kZXYtcnVudGltZVwiKTs7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXhcIik7OyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LWRldnRvb2xzLWV4dGVuc2lvblwiKTs7Il0sInNvdXJjZVJvb3QiOiIifQ==