(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define([], factory); else if(typeof exports === 'object') exports["gtw"] = factory(); else root["ntt"] = root["ntt"] || {}, root["ntt"]["smartit"] = root["ntt"]["smartit"] || {}, root["ntt"]["smartit"]["gtw"] = factory(); })(window, function() { return /******/ (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, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // create a fake namespace object /******/ // mode & 1: value is a module id, require it /******/ // mode & 2: merge all properties of value into the ns /******/ // mode & 4: return value when already ns object /******/ // mode & 8|1: behave like require /******/ __webpack_require__.t = function(value, mode) { /******/ if(mode & 1) value = __webpack_require__(value); /******/ if(mode & 8) return value; /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; /******/ var ns = Object.create(null); /******/ __webpack_require__.r(ns); /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); /******/ return ns; /******/ }; /******/ /******/ // 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 = "./src/modules/gtw/gtw.js"); /******/ }) /************************************************************************/ /******/ ({ /***/ "./src/modules/gtw/gtw.js": /*!********************************!*\ !*** ./src/modules/gtw/gtw.js ***! \********************************/ /*! exports provided: gtwModul */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "gtwModul", function() { return gtwModul; }); function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a 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); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } //import { ICustomModule } from "../../customApi/ICustomModule"; /*var bootstrapOld = angular.bootstrap; angular.bootstrap = function () { bootstrapOld.apply(bootstrapOld, arguments); console.log(bootstrapOld); console.log("bootstrap overriden"); nttTest(); } var servicesX; var nttTest = function ($stateProvider) { servicesX = allServices(); function allServices() { const injector = angular.element(document).injector(); const originalHasOwnProperty = Object.prototype.hasOwnProperty Object.prototype.hasOwnProperty = () => true Object.defineProperty(Object.prototype, '__self__', { configurable: true, enumerable: false, get() { return this } }) const cache = injector.get('__self__') Object.prototype.hasOwnProperty = originalHasOwnProperty return cache } */ //}; var gtwModul = /*#__PURE__*/ function (_ntt$smartit$api$ICus) { _inherits(gtwModul, _ntt$smartit$api$ICus); function gtwModul() { _classCallCheck(this, gtwModul); return _possibleConstructorReturn(this, _getPrototypeOf(gtwModul).apply(this, arguments)); } _createClass(gtwModul, [{ key: "name", value: function name() { return "gtw"; } }, { key: "templates", value: function templates() { return [{ origin: "views/ticket/incident-details-v2.html", template: "views/ticket/incident-details-v2.html" }, { origin: "views/ticket/task-details-v2.html", template: "views/ticket/task-details-v2.html" }, { template: "views/ticket/ticket-gtw-panel.html" }]; } }, { key: "i18nLocales", value: function i18nLocales() { return [{ locale: "de", path: "i18n/ntt-resources-locale_de.json" }]; } }]); return gtwModul; }(ntt.smartit.api.ICustomModule); ntt.smartit.api.nttSmartitModules.push(new gtwModul()); /*angular.module("myitsmApp").run(["$rootScope", "$templateCache", "$templateRequest", "i18nService", function ($rootScope, $templateCache, $templateRequest, i18nService) { var x = $templateRequest("NTT/views/ticket/incident-details-v2.html"); Promise.resolve(x).then(function (value) { $templateCache.put("views/ticket/incident-details-v2.html", value); }); }]);*/ angular.module('ticketModule').directive('nttTicketGtw', ['ticketModel', 'relationModel', 'userModel', '$q', '$filter', '$modal', 'events', '$timeout', '$state', 'i18nService', 'systemAlertService', 'objectValueMapperService', function (ticketModel, relationModel, userModel, $q, $filter, $modal, events, $timeout, $state, i18nService, systemAlertService, objectValueMapperService) { return { restrict: 'E', //templateUrl: 'NTTDATA/modules/gtw/views/ticket/ticket-tasks.html', templateUrl: 'views/ticket/ticket-gtw-panel.html', scope: { ticket: '=', relationCounters: '=', tasksDisabled: '=' } }; }]); //angular.module('nttModule', []); //angular.module("myitsmApp") angular.module("ticketModule").controller("gtwController", function ($scope, $http, $controller, nttGenericService) { var genericResponse = function genericResponse(response) { $scope.$parent.relationCounters.gtwV = response.items.length; $scope.data = response; $scope.gtwFields = [{ name: "Variable1", customFieldLabelI18n: "Test", label: "Variable1", value: "haha", maxLength: 20, type: "char" }]; }; var onError = function onError(data, status, headers, config) { $scope.error = status; }; nttGenericService.getArEntriesByFormAndQual({ form: "ITSM:GTW_SHR_TicketAction", qual: "'1000000182'=\"" + $scope.$parent.ticket.displayId + "\"", fields: [700025101, 700055100] }).$promise.then(genericResponse); //var promise = $http.get("smartit/rest/v1/ntt/CTM:People/1=1?fields=1&limit=2&offset=2").success(onSuccess).error(onError); /*$scope.gtwFields = [ {name:"Variable1", customFieldLabelI18n:"Test", label:"Variable1", value:"123", maxLength:20, type:"char" }, {name:"Variable2", customFieldLabelI18n:"Test", label:"Variable2", value:"123", maxLength:20, type:"char" }, {name:"Variable3", customFieldLabelI18n:"Test", label:"Variable3", value:"123", maxLength:20, type:"char" }, {name:"Variable4", customFieldLabelI18n:"Test", label:"Variable4", value:123, maxLength:20, type:"int" } ] $scope.$parent.relationCounters.gtwV = $scope.gtwFields.length; $scope.onSaveClick = function () { var x = 0; }; $scope.field = {mappedField : {name:"test", customFieldLabelI18n:"Test", label:"hallo", value:"123"}}; /* $scope.gtw.variables = [ {"key":"Varaible1", "value":"Text", "type":"char"}, {"key":"Variable2", "value":"Text2", "type":"char"} ];*/ }); /***/ }) /******/ }); }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9udHQuc21hcnRpdC5bbmFtZV0vd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL250dC5zbWFydGl0LltuYW1lXS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9udHQuc21hcnRpdC5bbmFtZV0vLi9zcmMvbW9kdWxlcy9ndHcvZ3R3LmpzIl0sIm5hbWVzIjpbImd0d01vZHVsIiwib3JpZ2luIiwidGVtcGxhdGUiLCJsb2NhbGUiLCJwYXRoIiwibnR0Iiwic21hcnRpdCIsImFwaSIsIklDdXN0b21Nb2R1bGUiLCJudHRTbWFydGl0TW9kdWxlcyIsInB1c2giLCJhbmd1bGFyIiwibW9kdWxlIiwiZGlyZWN0aXZlIiwidGlja2V0TW9kZWwiLCJyZWxhdGlvbk1vZGVsIiwidXNlck1vZGVsIiwiJHEiLCIkZmlsdGVyIiwiJG1vZGFsIiwiZXZlbnRzIiwiJHRpbWVvdXQiLCIkc3RhdGUiLCJpMThuU2VydmljZSIsInN5c3RlbUFsZXJ0U2VydmljZSIsIm9iamVjdFZhbHVlTWFwcGVyU2VydmljZSIsInJlc3RyaWN0IiwidGVtcGxhdGVVcmwiLCJzY29wZSIsInRpY2tldCIsInJlbGF0aW9uQ291bnRlcnMiLCJ0YXNrc0Rpc2FibGVkIiwiY29udHJvbGxlciIsIiRzY29wZSIsIiRodHRwIiwiJGNvbnRyb2xsZXIiLCJudHRHZW5lcmljU2VydmljZSIsImdlbmVyaWNSZXNwb25zZSIsInJlc3BvbnNlIiwiJHBhcmVudCIsImd0d1YiLCJpdGVtcyIsImxlbmd0aCIsImRhdGEiLCJndHdGaWVsZHMiLCJuYW1lIiwiY3VzdG9tRmllbGRMYWJlbEkxOG4iLCJsYWJlbCIsInZhbHVlIiwibWF4TGVuZ3RoIiwidHlwZSIsIm9uRXJyb3IiLCJzdGF0dXMiLCJoZWFkZXJzIiwiY29uZmlnIiwiZXJyb3IiLCJnZXRBckVudHJpZXNCeUZvcm1BbmRRdWFsIiwiZm9ybSIsInF1YWwiLCJkaXNwbGF5SWQiLCJmaWVsZHMi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bnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiZ3R3XCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIm50dFwiXSA9IHJvb3RbXCJudHRcIl0gfHwge30sIHJvb3RbXCJudHRcIl1bXCJzbWFydGl0XCJdID0gcm9vdFtcIm50dFwiXVtcInNtYXJ0aXRcIl0gfHwge30sIHJvb3RbXCJudHRcIl1bXCJzbWFydGl0XCJdW1wiZ3R3XCJdID0gZmFjdG9yeSgpO1xufSkod2luZG93LCBmdW5jdGlvbigpIHtcbnJldHVybiAiLCIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gXCIuL3NyYy9tb2R1bGVzL2d0dy9ndHcuanNcIik7XG4iLCIvL2ltcG9ydCB7IElDdXN0b21Nb2R1bGUgfSBmcm9tIFwiLi4vLi4vY3VzdG9tQXBpL0lDdXN0b21Nb2R1bGVcIjtcblxuLyp2YXIgYm9vdHN0cmFwT2xkID0gYW5ndWxhci5ib290c3RyYXA7XG5cbmFuZ3VsYXIuYm9vdHN0cmFwID0gZnVuY3Rpb24gKCkge1xuXG4gIGJvb3RzdHJhcE9sZC5hcHBseShib290c3RyYXBPbGQsIGFyZ3VtZW50cyk7XG4gIGNvbnNvbGUubG9nKGJvb3RzdHJhcE9sZCk7XG4gIGNvbnNvbGUubG9nKFwiYm9vdHN0cmFwIG92ZXJyaWRlblwiKTtcblxuICBudHRUZXN0KCk7XG59XG5cblxuXG5cbnZhciBzZXJ2aWNlc1g7XG5cblxudmFyIG50dFRlc3QgPSBmdW5jdGlvbiAoJHN0YXRlUHJvdmlkZXIpIHtcblxuICBzZXJ2aWNlc1ggPSBhbGxTZXJ2aWNlcygpO1xuICBmdW5jdGlvbiBhbGxTZXJ2aWNlcygpIHtcbiAgICBjb25zdCBpbmplY3RvciA9IGFuZ3VsYXIuZWxlbWVudChkb2N1bWVudCkuaW5qZWN0b3IoKTtcbiAgICBjb25zdCBvcmlnaW5hbEhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eVxuICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkgPSAoKSA9PiB0cnVlXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE9iamVjdC5wcm90b3R5cGUsICdfX3NlbGZfXycsIHsgY29uZmlndXJhYmxlOiB0cnVlLCBlbnVtZXJhYmxlOiBmYWxzZSwgZ2V0KCkgeyByZXR1cm4gdGhpcyB9IH0pXG4gICAgY29uc3QgY2FjaGUgPSBpbmplY3Rvci5nZXQoJ19fc2VsZl9fJylcbiAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5ID0gb3JpZ2luYWxIYXNPd25Qcm9wZXJ0eVxuICAgIHJldHVybiBjYWNoZVxuICB9XG5cbiovXG5cblxuICBcblxuLy99O1xuXG5leHBvcnQgY2xhc3MgZ3R3TW9kdWwgZXh0ZW5kcyBudHQuc21hcnRpdC5hcGkuSUN1c3RvbU1vZHVsZSB7XG5cbiAgbmFtZSgpIHtcbiAgICAgcmV0dXJuIFwiZ3R3XCI7XG4gIH1cblxuICB0ZW1wbGF0ZXMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgb3JpZ2luOlwidmlld3MvdGlja2V0L2luY2lkZW50LWRldGFpbHMtdjIuaHRtbFwiLFxuICAgICAgICB0ZW1wbGF0ZTpcInZpZXdzL3RpY2tldC9pbmNpZGVudC1kZXRhaWxzLXYyLmh0bWxcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgb3JpZ2luOlwidmlld3MvdGlja2V0L3Rhc2stZGV0YWlscy12Mi5odG1sXCIsXG4gICAgICAgIHRlbXBsYXRlOlwidmlld3MvdGlja2V0L3Rhc2stZGV0YWlscy12Mi5odG1sXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRlbXBsYXRlOlwidmlld3MvdGlja2V0L3RpY2tldC1ndHctcGFuZWwuaHRtbFwiXG4gICAgICB9XG4gICAgXVxuICB9XG5cbiAgaTE4bkxvY2FsZXMoKSB7XG4gICAgIHJldHVybiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbG9jYWxlOlwiZGVcIixcbiAgICAgICAgICAgIHBhdGg6XCJpMThuL250dC1yZXNvdXJjZXMtbG9jYWxlX2RlLmpzb25cIlxuICAgICAgICAgIH0gIFxuICAgICBdXG4gIH1cblxufVxuXG5udHQuc21hcnRpdC5hcGkubnR0U21hcnRpdE1vZHVsZXMucHVzaChuZXcgZ3R3TW9kdWwoKSk7XG5cblxuXG4vKmFuZ3VsYXIubW9kdWxlKFwibXlpdHNtQXBwXCIpLnJ1bihbXCIkcm9vdFNjb3BlXCIsIFwiJHRlbXBsYXRlQ2FjaGVcIiwgXCIkdGVtcGxhdGVSZXF1ZXN0XCIsIFwiaTE4blNlcnZpY2VcIiwgZnVuY3Rpb24gKCRyb290U2NvcGUsICR0ZW1wbGF0ZUNhY2hlLCAkdGVtcGxhdGVSZXF1ZXN0LCBpMThuU2VydmljZSkge1xuXG4gIHZhciB4ID0gJHRlbXBsYXRlUmVxdWVzdChcIk5UVC92aWV3cy90aWNrZXQvaW5jaWRlbnQtZGV0YWlscy12Mi5odG1sXCIpO1xuXG4gIFByb21pc2UucmVzb2x2ZSh4KS50aGVuKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICR0ZW1wbGF0ZUNhY2hlLnB1dChcInZpZXdzL3RpY2tldC9pbmNpZGVudC1kZXRhaWxzLXYyLmh0bWxcIiwgdmFsdWUpO1xuXG4gIH0pO1xuXG59XSk7Ki9cblxuXG5hbmd1bGFyLm1vZHVsZSgndGlja2V0TW9kdWxlJylcbiAgLmRpcmVjdGl2ZSgnbnR0VGlja2V0R3R3JywgWyd0aWNrZXRNb2RlbCcsICdyZWxhdGlvbk1vZGVsJywgJ3VzZXJNb2RlbCcsICckcScsICckZmlsdGVyJywgJyRtb2RhbCcsICdldmVudHMnLCAnJHRpbWVvdXQnLFxuICAgICckc3RhdGUnLCAnaTE4blNlcnZpY2UnLCAnc3lzdGVtQWxlcnRTZXJ2aWNlJywgJ29iamVjdFZhbHVlTWFwcGVyU2VydmljZScsXG4gICAgZnVuY3Rpb24gKHRpY2tldE1vZGVsLCByZWxhdGlvbk1vZGVsLCB1c2VyTW9kZWwsICRxLCAkZmlsdGVyLCAkbW9kYWwsIGV2ZW50cywgJHRpbWVvdXQsICRzdGF0ZSwgaTE4blNlcnZpY2UsIHN5c3RlbUFsZXJ0U2VydmljZSwgb2JqZWN0VmFsdWVNYXBwZXJTZXJ2aWNlKSB7XG4gICAgICByZXR1cm4ge1xuXG4gICAgICAgIHJlc3RyaWN0OiAnRScsXG4gICAgICAgIC8vdGVtcGxhdGVVcmw6ICdOVFREQVRBL21vZHVsZXMvZ3R3L3ZpZXdzL3RpY2tldC90aWNrZXQtdGFza3MuaHRtbCcsXG4gICAgICAgICB0ZW1wbGF0ZVVybDogJ3ZpZXdzL3RpY2tldC90aWNrZXQtZ3R3LXBhbmVsLmh0bWwnLFxuICAgICAgICBzY29wZToge1xuICAgICAgICAgIHRpY2tldDogJz0nLFxuICAgICAgICAgIHJlbGF0aW9uQ291bnRlcnM6ICc9JyxcbiAgICAgICAgICB0YXNrc0Rpc2FibGVkOiAnPSdcbiAgICAgICAgfVxuXG5cbiAgICAgIH1cbiAgICB9XSk7XG5cblxuLy9hbmd1bGFyLm1vZHVsZSgnbnR0TW9kdWxlJywgW10pO1xuLy9hbmd1bGFyLm1vZHVsZShcIm15aXRzbUFwcFwiKSAgICBcbmFuZ3VsYXIubW9kdWxlKFwidGlja2V0TW9kdWxlXCIpXG4uY29udHJvbGxlcihcImd0d0NvbnRyb2xsZXJcIiwgZnVuY3Rpb24oJHNjb3BlLCAkaHR0cCwgJGNvbnRyb2xsZXIsbnR0R2VuZXJpY1NlcnZpY2UpIHtcblxuICAgdmFyIGdlbmVyaWNSZXNwb25zZSA9IGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICRzY29wZS4kcGFyZW50LnJlbGF0aW9uQ291bnRlcnMuZ3R3ViA9IHJlc3BvbnNlLml0ZW1zLmxlbmd0aDtcbiAgICAkc2NvcGUuZGF0YSA9IHJlc3BvbnNlO1xuXG4gICAgJHNjb3BlLmd0d0ZpZWxkcyA9W1xuICAgICAge25hbWU6XCJWYXJpYWJsZTFcIixcbiAgICAgICBjdXN0b21GaWVsZExhYmVsSTE4bjpcIlRlc3RcIixcbiAgICAgICBsYWJlbDpcIlZhcmlhYmxlMVwiLFxuICAgICAgIHZhbHVlOiBcImhhaGFcIixcbiAgICAgICBtYXhMZW5ndGg6MjAsXG4gICAgICAgdHlwZTpcImNoYXJcIlxuICAgICAgfV07XG4gIH07XG5cbiAgdmFyIG9uRXJyb3IgPSBmdW5jdGlvbiAoZGF0YSwgc3RhdHVzLCBoZWFkZXJzLCBjb25maWcpIHtcbiAgICAgICRzY29wZS5lcnJvciA9IHN0YXR1cztcbiAgfVxuXG4gIG50dEdlbmVyaWNTZXJ2aWNlLmdldEFyRW50cmllc0J5Rm9ybUFuZFF1YWwoe2Zvcm06XCJJVFNNOkdUV19TSFJfVGlja2V0QWN0aW9uXCIscXVhbDpcIicxMDAwMDAwMTgyJz1cXFwiXCIrJHNjb3BlLiRwYXJlbnQudGlja2V0LmRpc3BsYXlJZCtcIlxcXCJcIixmaWVsZHM6WzcwMDAyNTEwMSw3MDAwNTUxMDBdfSkuJHByb21pc2UudGhlbihnZW5lcmljUmVzcG9uc2UpO1xuICAvL3ZhciBwcm9taXNlID0gJGh0dHAuZ2V0KFwic21hcnRpdC9yZXN0L3YxL250dC9DVE06UGVvcGxlLzE9MT9maWVsZHM9MSZsaW1pdD0yJm9mZnNldD0yXCIpLnN1Y2Nlc3Mob25TdWNjZXNzKS5lcnJvcihvbkVycm9yKTtcbiAgICAgIFxuICAvKiRzY29wZS5ndHdGaWVsZHMgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgIHtuYW1lOlwiVmFyaWFibGUxXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21GaWVsZExhYmVsSTE4bjpcIlRlc3RcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOlwiVmFyaWFibGUxXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTpcIjEyM1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4TGVuZ3RoOjIwLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTpcImNoYXJcIlxuICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICB7bmFtZTpcIlZhcmlhYmxlMlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tRmllbGRMYWJlbEkxOG46XCJUZXN0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDpcIlZhcmlhYmxlMlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6XCIxMjNcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heExlbmd0aDoyMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6XCJjaGFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAge25hbWU6XCJWYXJpYWJsZTNcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbUZpZWxkTGFiZWxJMThuOlwiVGVzdFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6XCJWYXJpYWJsZTNcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOlwiMTIzXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhMZW5ndGg6MjAsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOlwiY2hhclwiXG4gICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgIHtuYW1lOlwiVmFyaWFibGU0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21GaWVsZExhYmVsSTE4bjpcIlRlc3RcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOlwiVmFyaWFibGU0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZToxMjMsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhMZW5ndGg6MjAsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOlwiaW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIF1cblxuICAgICAkc2NvcGUuJHBhcmVudC5yZWxhdGlvbkNvdW50ZXJzLmd0d1YgPSAkc2NvcGUuZ3R3RmllbGRzLmxlbmd0aDtcbiAgICAgXG4gICAgICRzY29wZS5vblNhdmVDbGljayA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICB2YXIgeCA9IDA7XG4gICAgICB9O1xuICAgICAkc2NvcGUuZmllbGQgPSB7bWFwcGVkRmllbGQgOiB7bmFtZTpcInRlc3RcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21GaWVsZExhYmVsSTE4bjpcIlRlc3RcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDpcImhhbGxvXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6XCIxMjNcIn19O1xuICAgIC8qICRzY29wZS5ndHcudmFyaWFibGVzID0gWyB7XCJrZXlcIjpcIlZhcmFpYmxlMVwiLCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidmFsdWVcIjpcIlRleHRcIiwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjpcImNoYXJcIn0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XCJrZXlcIjpcIlZhcmlhYmxlMlwiLCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidmFsdWVcIjpcIlRleHQyXCIsIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6XCJjaGFyXCJ9IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07Ki9cbn0pO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==