/*!*************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./assets/styles/app.css ***!
  \*************************************************************************************************/
body {
    background-color: transparent;
}

/*!********************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/components/product/DetailProduct.vue?vue&type=style&index=0&id=b71e4d5a&scoped=true&lang=css ***!
  \********************************************************************************************************************************************************************************************************************************************************************************************/

.main-image img[data-v-b71e4d5a] {
    transition: all 0.3s ease-in-out;
}
.img-thumbnail[data-v-b71e4d5a] {
    border-radius: 8px;
    transition: transform 0.2s ease, border-color 0.3s ease;
}
.img-thumbnail[data-v-b71e4d5a]:hover {
    transform: scale(1.05);
    border-color: #0d6efd;
}
.border-primary[data-v-b71e4d5a] {
    border: 2px solid #0d6efd !important;
}

/*!*************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/components/order/NewOrder.vue?vue&type=style&index=0&id=3f17252c&scoped=true&lang=css ***!
  \*************************************************************************************************************************************************************************************************************************************************************************************/

.table th[data-v-3f17252c],
.table td[data-v-3f17252c] {
    vertical-align: middle;
}
.table td input[data-v-3f17252c],
.table td select[data-v-3f17252c] {
    width: 100%;
}


/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNzcyIsIm1hcHBpbmdzIjoiOzs7QUFBQTtJQUNJLDZCQUE2QjtBQUNqQzs7Ozs7O0FDeUpBO0lBQ0ksZ0NBQWdDO0FBQ3BDO0FBRUE7SUFDSSxrQkFBa0I7SUFDbEIsdURBQXVEO0FBQzNEO0FBRUE7SUFDSSxzQkFBc0I7SUFDdEIscUJBQXFCO0FBQ3pCO0FBRUE7SUFDSSxvQ0FBb0M7QUFDeEM7Ozs7OztBQ3VKQTs7SUFFSSxzQkFBc0I7QUFDMUI7QUFFQTs7SUFFSSxXQUFXO0FBQ2YiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvc3R5bGVzL2FwcC5jc3MiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2NvbXBvbmVudHMvcHJvZHVjdC9EZXRhaWxQcm9kdWN0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvY29tcG9uZW50cy9vcmRlci9OZXdPcmRlci52dWUiXSwic291cmNlc0NvbnRlbnQiOlsiYm9keSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4iLCI8dGVtcGxhdGU+XG4gICAgPGRpdj5cbiAgICAgICAgPCEtLSBMb2FkZXIgLS0+XG4gICAgICAgIDxkaXYgdi1pZj1cImxvYWRpbmdcIiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwiaGVpZ2h0OiA4MHZoO1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHRleHQtcHJpbWFyeVwiIHJvbGU9XCJzdGF0dXNcIiBzdHlsZT1cIndpZHRoOiAzcmVtOyBoZWlnaHQ6IDNyZW07XCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtdC0zIHRleHQtc2Vjb25kYXJ5XCI+Q2FyZ2FuZG8gZGF0b3MgZGVsIHByb2R1Y3RvLi4uPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gQ29udGVuaWRvIC0tPlxuICAgICAgICA8ZGl2IHYtZWxzZT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cInRpdGxlIGZ3LWJvbGRcIj5EZXRhbGxlIFByb2R1Y3RvPC9oMz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLXN0YXJ0IHB0LTNcIj5cbiAgICAgICAgICAgICAgICA8IS0tIEdhbGVyw61hIGRlIGltw6FnZW5lcyAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBJbWFnZW4gcHJpbmNpcGFsIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbi1pbWFnZSBtYi0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIDpzcmM9XCJzZWxlY3RlZEltYWdlIHx8IChwcm9kdWN0LmltYWdlcy5sZW5ndGggPiAwID8gcHJvZHVjdC5pbWFnZXNbMF0uaW1hZ2UgOiAnJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIkltYWdlbiBwcmluY2lwYWxcIiBjbGFzcz1cImltZy1mbHVpZCByb3VuZGVkIHNoYWRvdy1zbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXgtaGVpZ2h0OiA0MDBweDsgb2JqZWN0LWZpdDogY292ZXI7XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBUaHVtYm5haWxzIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtd3JhcCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1mb3I9XCJpbWFnZSBpbiBwcm9kdWN0LmltYWdlc1wiIDprZXk9XCJpbWFnZS5pZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgdi1pZj1cImltYWdlLmFjdGl2ZVwiIDpzcmM9XCJpbWFnZS5pbWFnZVwiIGNsYXNzPVwiaW1nLXRodW1ibmFpbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzcz1cInsgJ2JvcmRlci1wcmltYXJ5Jzogc2VsZWN0ZWRJbWFnZSA9PT0gaW1hZ2UuaW1hZ2UgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDgwcHg7IGhlaWdodDogODBweDsgb2JqZWN0LWZpdDogY292ZXI7IGN1cnNvcjogcG9pbnRlcjtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XCJzZWxlY3RlZEltYWdlID0gaW1hZ2UuaW1hZ2VcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8IS0tIEluZm9ybWFjacOzbiBkZWwgcHJvZHVjdG8gLS0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG10LTQgbXQtbWQtMFwiPlxuICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJmdy1ib2xkIG1iLTNcIj57eyBwcm9kdWN0Lm5hbWUgfX08L2gyPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtbXV0ZWQgbWItMVwiPjxzdHJvbmc+U0tVOjwvc3Ryb25nPiB7eyBwcm9kdWN0LnNrdSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LW11dGVkIG1iLTFcIj48c3Ryb25nPkNhdGVnb3LDrWE6PC9zdHJvbmc+IHt7IHByb2R1Y3QuY2F0ZWdvcnkubmFtZSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LW11dGVkIG1iLTNcIj48c3Ryb25nPk5lZ29jaW86PC9zdHJvbmc+IHt7IHByb2R1Y3QuYnVzaW5lc3MubmFtZSB9fTwvcD5cblxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm10LTNcIiBzdHlsZT1cInRleHQtYWxpZ246IGp1c3RpZnk7XCI+e3sgcHJvZHVjdC5kZXNjcmlwdGlvbiB9fTwvcD5cblxuICAgICAgICAgICAgICAgICAgICA8aHIgLz5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJmdy1ib2xkIHRleHQtc3VjY2VzcyBtYi0wIG1lLTNcIj4ke3sgcGFyc2VGbG9hdChwcm9kdWN0LnByaWNlKS50b0ZpeGVkKDIpIH19PC9oMz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHYtaWY9XCJwcm9kdWN0LmRpc2NvdW50X3ZhbHVlID4gMFwiIGNsYXNzPVwiYmFkZ2UgYmctZGFuZ2VyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLXt7IHByb2R1Y3QuZGlzY291bnRfdmFsdWUgfX0ge3sgcHJvZHVjdC5kaXNjb3VudF90eXBlID09PSAncGVyY2VudCcgPyAnJScgOiAnTVhOJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtbXV0ZWQgbWItMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz5TdG9jayBkaXNwb25pYmxlOjwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gOmNsYXNzPVwieyAndGV4dC1kYW5nZXInOiBwcm9kdWN0LnN0b2NrIDw9IHByb2R1Y3QubWluaW11bV9zdG9jayB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcHJvZHVjdC5zdG9jayB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3A+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiB2LWlmPVwicHJvZHVjdC5vY2Nhc2lvbnM/Lmxlbmd0aFwiIGNsYXNzPVwibWItMyBwdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIGQtYmxvY2sgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIElkZWFsIHBhcmE6XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtd3JhcCBnYXAtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHYtZm9yPVwib2NjYXNpb24gaW4gcHJvZHVjdC5vY2Nhc2lvbnNcIiA6a2V5PVwib2NjYXNpb24uaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhZGdlIGJnLWRhbmdlciB0ZXh0LXdoaXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG9jY2FzaW9uLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiB2LWlmPVwiT2JqZWN0LmtleXMoZ3JvdXBlZE9wdGlvbnMpLmxlbmd0aFwiIGNsYXNzPVwibWItMyBwdC0yXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdi1mb3I9XCIodmFsdWVzLCBvcHRpb25OYW1lKSBpbiBncm91cGVkT3B0aW9uc1wiIDprZXk9XCJvcHRpb25OYW1lXCIgY2xhc3M9XCJtYi0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1tdXRlZCBmdy1zZW1pYm9sZCBkLWJsb2NrIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3B0aW9uTmFtZSB9fTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXdyYXAgZ2FwLTJcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiB2LWZvcj1cInZhbHVlIGluIHZhbHVlc1wiIDprZXk9XCJ2YWx1ZS5pZFwiIGNsYXNzPVwiYmFkZ2UgdGV4dC13aGl0ZSBweC0zIHB5LTJcIiA6c3R5bGU9XCJ2YWx1ZS5oZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBiYWNrZ3JvdW5kQ29sb3I6IHZhbHVlLmhleCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHsgYmFja2dyb3VuZENvbG9yOiAnIzZjNzU3ZCcgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdmFsdWUudmFsdWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNCBkLW5vbmVcIj4gPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBtZS0yXCI+IDxpIGNsYXNzPVwiYmkgYmktY2FydC1wbHVzXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFncmVnYXIgYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJyaXRvIDwvYnV0dG9uPiA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiPiA8aSBjbGFzcz1cImJpIGJpLWhlYXJ0XCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhdm9yaXRvIDwvYnV0dG9uPiA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5leHBvcnQgZGVmYXVsdCB7XG4gICAgcHJvcHM6IFsncHJvZHVjdElkJ10sXG4gICAgZGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByb2R1Y3Q6IG51bGwsXG4gICAgICAgICAgICBsb2FkaW5nOiB0cnVlLFxuICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZTogbnVsbFxuICAgICAgICB9O1xuICAgIH0sXG4gICAgbW91bnRlZCgpIHtcbiAgICAgICAgdGhpcy5nZXRQcm9kdWN0RGV0YWlsKCk7XG4gICAgfSxcbiAgICBjb21wdXRlZDoge1xuICAgICAgICBncm91cGVkT3B0aW9ucygpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5wcm9kdWN0Py5vcHRpb25fdmFsdWVzKSByZXR1cm4ge307XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2R1Y3Qub3B0aW9uX3ZhbHVlcy5yZWR1Y2UoKGFjYywgaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghYWNjW2l0ZW0ub3B0aW9uX25hbWVdKSB7XG4gICAgICAgICAgICAgICAgICAgIGFjY1tpdGVtLm9wdGlvbl9uYW1lXSA9IFtdO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGFjY1tpdGVtLm9wdGlvbl9uYW1lXS5wdXNoKGl0ZW0pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgIH0sIHt9KTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgbWV0aG9kczoge1xuICAgICAgICBhc3luYyBnZXRQcm9kdWN0RGV0YWlsKCkge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLiRheGlvcy5nZXQoYC9hamF4L3Byb2R1Y3RzLyR7dGhpcy5wcm9kdWN0SWR9YCk7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9kdWN0ID0gcmVzcG9uc2UuZGF0YS5wcm9kdWN0O1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb2R1Y3QuaW1hZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEltYWdlID0gdGhpcy5wcm9kdWN0LmltYWdlc1swXS5pbWFnZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGVuIGxhIHNvbGljaXR1ZCBBSkFYOicsIGVycm9yKTtcbiAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59O1xuPC9zY3JpcHQ+XG5cbjxzdHlsZSBzY29wZWQ+XG4ubWFpbi1pbWFnZSBpbWcge1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0O1xufVxuXG4uaW1nLXRodW1ibmFpbCB7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzIGVhc2UsIGJvcmRlci1jb2xvciAwLjNzIGVhc2U7XG59XG5cbi5pbWctdGh1bWJuYWlsOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpO1xuICAgIGJvcmRlci1jb2xvcjogIzBkNmVmZDtcbn1cblxuLmJvcmRlci1wcmltYXJ5IHtcbiAgICBib3JkZXI6IDJweCBzb2xpZCAjMGQ2ZWZkICFpbXBvcnRhbnQ7XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICAgIDxkaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJmdy1ib2xkXCI+Q3JlYXIgT3JkZW48L2gzPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgdi1pZj1cImVycm9yc1wiIGNsYXNzPVwiYWxlcnQgYWxlcnQtZGFuZ2VyXCI+e3sgZXJyb3JzIH19PC9kaXY+XG4gICAgICAgIDxkaXYgdi1pZj1cInN1Y2Nlc3NNZXNzYWdlXCIgY2xhc3M9XCJhbGVydCBhbGVydC1zdWNjZXNzXCI+e3sgc3VjY2Vzc01lc3NhZ2UgfX08L2Rpdj5cblxuICAgICAgICA8Zm9ybSBAc3VibWl0LnByZXZlbnQ9XCJzaG93TW9kYWxcIj5cbiAgICAgICAgICAgIDwhLS0gU2VsZWNjacOzbiBkZSBOZWdvY2lvIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtdC0yXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiYnVzaW5lc3NcIiBjbGFzcz1cImZvcm0tbGFiZWwgZnctc2VtaWJvbGRcIj5OZWdvY2lvPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNoYW5nZT1cIigpID0+IHsgZmV0Y2hQcm9kdWN0cygpOyBmZXRjaE1ldGhvZHNCeUJ1c2luZXNzKCk7IH1cIiB2LW1vZGVsPVwib3JkZXIuYnVzaW5lc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIiBkaXNhYmxlZD5TZWxlY2Npb25lIHVuIG5lZ29jaW88L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHYtZm9yPVwiYnVzaW5lc3MgaW4gYnVzaW5lc3Nlc1wiIDprZXk9XCJidXNpbmVzcy5pZFwiIDp2YWx1ZT1cImJ1c2luZXNzLmlkXCI+e3sgYnVzaW5lc3MubmFtZSB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIm1ldGhvZFwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPk3DqXRvZG8gZGUgcGFnbzwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3Qtc21cIiB2LW1vZGVsPVwib3JkZXIucGF5bWVudF9tZXRob2RcIiBuYW1lPVwibWV0aG9kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cIm1ldGhvZFwiIHJlcXVpcmVkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIiBkaXNhYmxlZD5TZWxlY2Npb25lIG3DqXRvZG8gZGUgcGFnbzwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdi1mb3I9XCJtIGluIG1ldGhvZHNcIiA6a2V5PVwibS5pZFwiIDp2YWx1ZT1cIm0uaWRcIj57eyBtLm5hbWUgfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIFRhYmxhIGRlIHByb2R1Y3RvcyAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtNFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtYm9yZGVyZWQgYWxpZ24tbWlkZGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQgY2xhc3M9XCJ0YWJsZS1saWdodFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPVwid2lkdGg6IDI1JVwiPlByb2R1Y3RvPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPVwid2lkdGg6IDEwJVwiPlByZWNpbzwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT1cIndpZHRoOiAxNSVcIj5UaXBvIGRlc2N1ZW50bzwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT1cIndpZHRoOiAxMCVcIj5WYWxvciBkZXNjdWVudG88L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJ3aWR0aDogMTAlXCI+Q2FudGlkYWQ8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJ3aWR0aDogMTAlXCI+U3VidG90YWw8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJ3aWR0aDogMTAlXCI+QWNjaW9uZXM8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciB2LWZvcj1cIihpdGVtLCBpbmRleCkgaW4gb3JkZXIuaXRlbXNcIiA6a2V5PVwiaW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtXCIgdi1tb2RlbD1cIml0ZW0ucHJvZHVjdF9pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNoYW5nZT1cInVwZGF0ZUl0ZW1EYXRhKGluZGV4KVwiIHJlcXVpcmVkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIiBkaXNhYmxlZD5TZWxlY2Npb25lIHByb2R1Y3RvPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2LWZvcj1cInByb2R1Y3QgaW4gcHJvZHVjdHNcIiA6a2V5PVwicHJvZHVjdC5pZFwiIDp2YWx1ZT1cInByb2R1Y3QuaWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcHJvZHVjdC5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiR7eyBmb3JtYXRNb25leShpdGVtLnByaWNlKSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmNlbnQ6ICdQb3JjZW50YWplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXhlZDogJ0Zpam8nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9W2l0ZW0uZGlzY291bnRfdHlwZV0gfHwgJ1NpbiBkZXNjdWVudG8nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gdi1pZj1cIml0ZW0uZGlzY291bnRfdmFsdWUgPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtaWY9XCJpdGVtLmRpc2NvdW50X3R5cGUgPT09ICdwZXJjZW50J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmRpc2NvdW50X3ZhbHVlIH19JVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtZWxzZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHt7IGZvcm1hdE1vbmV5KGl0ZW0uZGlzY291bnRfdmFsdWUpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHYtZWxzZT7igJQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LW1vZGVsLm51bWJlcj1cIml0ZW0ucXVhbnRpdHlcIiBtaW49XCIxXCIgQGlucHV0PVwidXBkYXRlU3VidG90YWwoaW5kZXgpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiR7eyBmb3JtYXRNb25leShpdGVtLnN1YnRvdGFsKSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGFuZ2VyIGJ0bi1zbVwiIEBjbGljaz1cInJlbW92ZUl0ZW0oaW5kZXgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10cmFzaFwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgdi1pZj1cIiFvcmRlci5pdGVtcy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI3XCIgY2xhc3M9XCJ0ZXh0LWNlbnRlciB0ZXh0LW11dGVkXCI+Tm8gaGF5IHByb2R1Y3RvcyBhZ3JlZ2Fkb3M8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxuXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnkgYnRuLXNtIG1iLTNcIiBAY2xpY2s9XCJhZGRJdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImJpIGJpLXBsdXMtY2lyY2xlIG1lLTFcIj48L2k+IEFncmVnYXIgcHJvZHVjdG9cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJmdy1ib2xkXCI+VG90YWw6ICR7eyBmb3JtYXRNb25leSh0b3RhbCkgfX08L2g1PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgZC1mbGV4IGZsZXgtY29sdW1uIGZsZXgtc20tcm93IGp1c3RpZnktY29udGVudC1zbS1zdGFydCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgOmRpc2FibGVkPVwibG9hZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gdi1pZj1cImxvYWRpbmdcIiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtIG1lLTJcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICBDcmVhciBPcmRlblxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Zvcm0+XG5cbiAgICAgICAgPCEtLSBNb2RhbCBkZSBjb25maXJtYWNpw7NuIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwgZmFkZVwiIGlkPVwiY29uZmlybU1vZGFsXCIgcmVmPVwiY29uZmlybU1vZGFsXCIgdGFiaW5kZXg9XCItMVwiIGFyaWEtbGFiZWxsZWRieT1cImNvbmZpcm1Nb2RhbExhYmVsXCJcbiAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZyBtb2RhbC1kaWFsb2ctY2VudGVyZWRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZSBmdy1ib2xkXCIgaWQ9XCJjb25maXJtTW9kYWxMYWJlbFwiPkNvbmZpcm1hciBjcmVhY2nDs24gZGUgb3JkZW48L2g1PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tY2xvc2VcIiBkYXRhLWJzLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDZXJyYXJcIj48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cD5Qb3Igc2VndXJpZGFkLCBpbmdyZXNhIHR1IGNvbnRyYXNlw7FhIHBhcmEgY29uZmlybWFyIGxhIGNyZWFjacOzbiBkZSBlc3RhIG9yZGVuLjwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicGFzc3dvcmRcIiB2LW1vZGVsPVwiY29uZmlybVBhc3N3b3JkXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBwbGFjZWhvbGRlcj1cIkNvbnRyYXNlw7FhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdi1pZj1cInBhc3N3b3JkRXJyb3JcIiBjbGFzcz1cInRleHQtZGFuZ2VyIG10LTJcIj57eyBwYXNzd29yZEVycm9yIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgZGF0YS1icy1kaXNtaXNzPVwibW9kYWxcIj5DYW5jZWxhcjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiBAY2xpY2s9XCJjb25maXJtQW5kU2F2ZU9yZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gdi1pZj1cImxvYWRpbmdWZXJpZnlQYXNzd29yZFwiPkVudmlhbmRvLi4uPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHYtZWxzZT5Db25maXJtYXI8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5leHBvcnQgZGVmYXVsdCB7XG4gICAgZGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1c2luZXNzZXM6IFtdLFxuICAgICAgICAgICAgcHJvZHVjdHM6IFtdLFxuICAgICAgICAgICAgbWV0aG9kczogW10sXG4gICAgICAgICAgICBvcmRlcjoge1xuICAgICAgICAgICAgICAgIGJ1c2luZXNzOiBcIlwiLFxuICAgICAgICAgICAgICAgIHBheW1lbnRfbWV0aG9kOiBcIlwiLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiBbXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbmZpcm1QYXNzd29yZDogXCJcIixcbiAgICAgICAgICAgIHBhc3N3b3JkRXJyb3I6IG51bGwsXG4gICAgICAgICAgICBlcnJvcnM6IG51bGwsXG4gICAgICAgICAgICBzdWNjZXNzTWVzc2FnZTogbnVsbCxcbiAgICAgICAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgbG9hZGluZ1ZlcmlmeVBhc3N3b3JkOiBmYWxzZVxuICAgICAgICB9O1xuICAgIH0sXG4gICAgY29tcHV0ZWQ6IHtcbiAgICAgICAgdG90YWwoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vcmRlci5pdGVtcy5yZWR1Y2UoKHN1bSwgaXRlbSkgPT4gc3VtICsgaXRlbS5zdWJ0b3RhbCwgMCk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIG1vdW50ZWQoKSB7XG4gICAgICAgIHRoaXMuZmV0Y2hCdXNpbmVzc2VzKCk7XG4gICAgfSxcbiAgICBtZXRob2RzOiB7XG4gICAgICAgIGFzeW5jIGZldGNoQnVzaW5lc3NlcygpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLiRheGlvcy5nZXQoXCIvYWpheC9idXNpbmVzc2VzXCIpO1xuICAgICAgICAgICAgICAgIHRoaXMuYnVzaW5lc3NlcyA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBmZXRjaGluZyBidXNpbmVzc2VzXCIsIGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgYXN5bmMgZmV0Y2hNZXRob2RzQnlCdXNpbmVzcygpIHtcbiAgICAgICAgICAgIHRoaXMub3JkZXIucGF5bWVudF9tZXRob2QgPSBcIlwiO1xuICAgICAgICAgICAgdGhpcy5tZXRob2RzID0gW107XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5vcmRlci5idXNpbmVzcykgcmV0dXJuO1xuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCByZXNwb25zZSA9IGF3YWl0IHRoaXMuJGF4aW9zLmdldChgL2FqYXgvYnVzaW5lc3Nlcy8ke3RoaXMub3JkZXIuYnVzaW5lc3N9L21ldGhvZHNgKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1ldGhvZHMgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnRXJyb3IgZmV0Y2hpbmcgbWV0aG9kcycsIGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgYXN5bmMgZmV0Y2hQcm9kdWN0cygpIHtcbiAgICAgICAgICAgIHRoaXMucHJvZHVjdHMgPSBbXTtcbiAgICAgICAgICAgIHRoaXMub3JkZXIuaXRlbXMgPSBbXTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLm9yZGVyLmJ1c2luZXNzKSByZXR1cm47XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLiRheGlvcy5nZXQoYC9hamF4L2J1c2luZXNzZXMvJHt0aGlzLm9yZGVyLmJ1c2luZXNzfS9wcm9kdWN0c2ApO1xuICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjdHMgPSByZXNwb25zZS5kYXRhLnByb2R1Y3RzLm1hcChwID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIC4uLnAsXG4gICAgICAgICAgICAgICAgICAgIHByaWNlOiBwYXJzZUZsb2F0KHAucHJpY2UpLFxuICAgICAgICAgICAgICAgICAgICBkaXNjb3VudF92YWx1ZTogcGFyc2VGbG9hdChwLmRpc2NvdW50X3ZhbHVlKVxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGZldGNoaW5nIHByb2R1Y3RzXCIsIGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgYWRkSXRlbSgpIHtcbiAgICAgICAgICAgIHRoaXMub3JkZXIuaXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgcHJvZHVjdF9pZDogXCJcIixcbiAgICAgICAgICAgICAgICBwcmljZTogMCxcbiAgICAgICAgICAgICAgICBkaXNjb3VudF90eXBlOiBcIlwiLFxuICAgICAgICAgICAgICAgIGRpc2NvdW50X3ZhbHVlOiAwLFxuICAgICAgICAgICAgICAgIHF1YW50aXR5OiAxLFxuICAgICAgICAgICAgICAgIHN1YnRvdGFsOiAwXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVtb3ZlSXRlbShpbmRleCkge1xuICAgICAgICAgICAgdGhpcy5vcmRlci5pdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9LFxuICAgICAgICB1cGRhdGVJdGVtRGF0YShpbmRleCkge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMub3JkZXIuaXRlbXNbaW5kZXhdO1xuICAgICAgICAgICAgY29uc3QgcHJvZHVjdCA9IHRoaXMucHJvZHVjdHMuZmluZChwID0+IHAuaWQgPT09IGl0ZW0ucHJvZHVjdF9pZCk7XG5cbiAgICAgICAgICAgIGlmIChwcm9kdWN0KSB7XG4gICAgICAgICAgICAgICAgaXRlbS5wcmljZSA9IHByb2R1Y3QucHJpY2U7XG4gICAgICAgICAgICAgICAgaXRlbS5kaXNjb3VudF90eXBlID0gcHJvZHVjdC5kaXNjb3VudF90eXBlIHx8IFwiXCI7XG4gICAgICAgICAgICAgICAgaXRlbS5kaXNjb3VudF92YWx1ZSA9IHByb2R1Y3QuZGlzY291bnRfdmFsdWUgfHwgMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy51cGRhdGVTdWJ0b3RhbChpbmRleCk7XG4gICAgICAgIH0sXG4gICAgICAgIHVwZGF0ZVN1YnRvdGFsKGluZGV4KSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5vcmRlci5pdGVtc1tpbmRleF07XG4gICAgICAgICAgICBsZXQgc3VidG90YWwgPSBpdGVtLnByaWNlICogaXRlbS5xdWFudGl0eTtcblxuICAgICAgICAgICAgLy8gQXBsaWNhciBkZXNjdWVudG8gc2kgZXhpc3RlXG4gICAgICAgICAgICBpZiAoaXRlbS5kaXNjb3VudF90eXBlID09PSBcInBlcmNlbnRcIikge1xuICAgICAgICAgICAgICAgIHN1YnRvdGFsIC09IHN1YnRvdGFsICogKGl0ZW0uZGlzY291bnRfdmFsdWUgLyAxMDApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtLmRpc2NvdW50X3R5cGUgPT09IFwiZml4ZWRcIikge1xuICAgICAgICAgICAgICAgIHN1YnRvdGFsIC09IGl0ZW0uZGlzY291bnRfdmFsdWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGl0ZW0uc3VidG90YWwgPSBzdWJ0b3RhbCA+IDAgPyBzdWJ0b3RhbCA6IDA7XG4gICAgICAgIH0sXG4gICAgICAgIHNob3dNb2RhbCgpIHtcbiAgICAgICAgICAgIHRoaXMucGFzc3dvcmRFcnJvciA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLmNvbmZpcm1QYXNzd29yZCA9IFwiXCI7XG5cbiAgICAgICAgICAgIGNvbnN0IG1vZGFsRWwgPSB0aGlzLiRyZWZzLmNvbmZpcm1Nb2RhbDtcbiAgICAgICAgICAgIGNvbnN0IG1vZGFsID0gbmV3IGJvb3RzdHJhcC5Nb2RhbChtb2RhbEVsKTtcbiAgICAgICAgICAgIG1vZGFsLnNob3coKTtcblxuICAgICAgICAgICAgLy8gR3VhcmRhIGxhIGluc3RhbmNpYSBwYXJhIGNlcnJhcmxhIGRlc3B1w6lzXG4gICAgICAgICAgICB0aGlzLmNvbmZpcm1Nb2RhbEluc3RhbmNlID0gbW9kYWw7XG4gICAgICAgIH0sXG4gICAgICAgIGFzeW5jIGNvbmZpcm1BbmRTYXZlT3JkZXIoKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmdWZXJpZnlQYXNzd29yZCA9IHRydWU7XG4gICAgICAgICAgICBpZiAoIXRoaXMuY29uZmlybVBhc3N3b3JkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nVmVyaWZ5UGFzc3dvcmQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLnBhc3N3b3JkRXJyb3IgPSBcIkRlYmVzIGluZ3Jlc2FyIHR1IGNvbnRyYXNlw7FhLlwiO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLiRheGlvcy5wb3N0KFwiL2FqYXgvdXNlcnMvdmVyaWZ5LXBhc3N3b3JkXCIsIHsgcGFzc3dvcmQ6IHRoaXMuY29uZmlybVBhc3N3b3JkIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlybU1vZGFsSW5zdGFuY2UuaGlkZSgpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5zYXZlT3JkZXIoKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wYXNzd29yZEVycm9yID0gZXJyb3IucmVzcG9uc2U/LmRhdGE/LmVycm9yIHx8IFwiQ29udHJhc2XDsWEgaW5jb3JyZWN0YS5cIjtcbiAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nVmVyaWZ5UGFzc3dvcmQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgYXN5bmMgc2F2ZU9yZGVyKCkge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JzID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuc3VjY2Vzc01lc3NhZ2UgPSBudWxsO1xuXG4gICAgICAgICAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgICAgICAgICAgIGJ1c2luZXNzOiB0aGlzLm9yZGVyLmJ1c2luZXNzLFxuICAgICAgICAgICAgICAgIHBheW1lbnRfbWV0aG9kOiB0aGlzLm9yZGVyLnBheW1lbnRfbWV0aG9kLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiB0aGlzLm9yZGVyLml0ZW1zLm1hcChpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIHByb2R1Y3RfaWQ6IGkucHJvZHVjdF9pZCxcbiAgICAgICAgICAgICAgICAgICAgcXVhbnRpdHk6IGkucXVhbnRpdHlcbiAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy4kYXhpb3MucG9zdChcIi9hamF4L29yZGVyc1wiLCBwYXlsb2FkKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuc3VjY2Vzc01lc3NhZ2UgPSBcIk9yZGVuIGNyZWFkYSBleGl0b3NhbWVudGUuXCI7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9hZG1pbi9vcmRlcic7XG4gICAgICAgICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JzID0gZXJyb3IucmVzcG9uc2U/LmRhdGE/LmVycm9yIHx8IFwiRXJyb3IgYWwgY3JlYXIgbGEgb3JkZW4uXCI7XG4gICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBmb3JtYXRNb25leSh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiAnMC4wMCc7XG5cbiAgICAgICAgICAgIHJldHVybiBuZXcgSW50bC5OdW1iZXJGb3JtYXQoJ2VzLU1YJywge1xuICAgICAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMixcbiAgICAgICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDJcbiAgICAgICAgICAgIH0pLmZvcm1hdCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG59O1xuPC9zY3JpcHQ+XG5cbjxzdHlsZSBzY29wZWQ+XG4udGFibGUgdGgsXG4udGFibGUgdGQge1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi50YWJsZSB0ZCBpbnB1dCxcbi50YWJsZSB0ZCBzZWxlY3Qge1xuICAgIHdpZHRoOiAxMDAlO1xufVxuPC9zdHlsZT5cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/