@ngx-resource/handler-ngx-http-legacy
Version:
Resource handler Angular old http
354 lines (325 loc) • 35.7 kB
JavaScript
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory(require("@angular/core"), require("@ngx-resource/core"), require("@angular/http"));
else if(typeof define === 'function' && define.amd)
define(["@angular/core", "@ngx-resource/core", "@angular/http"], factory);
else if(typeof exports === 'object')
exports["ngx-resource-handler-ngx-http-legacy"] = factory(require("@angular/core"), require("@ngx-resource/core"), require("@angular/http"));
else
root["ngx-resource-handler-ngx-http-legacy"] = factory(root["@angular/core"], root["@ngx-resource/core"], root["@angular/http"]);
})(this, function(__WEBPACK_EXTERNAL_MODULE_0__, __WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_2__) {
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, {
/******/ configurable: false,
/******/ enumerable: true,
/******/ get: getter
/******/ });
/******/ }
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "/";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 4);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports) {
module.exports = __WEBPACK_EXTERNAL_MODULE_0__;
/***/ }),
/* 1 */
/***/ (function(module, exports) {
module.exports = __WEBPACK_EXTERNAL_MODULE_1__;
/***/ }),
/* 2 */
/***/ (function(module, exports) {
module.exports = __WEBPACK_EXTERNAL_MODULE_2__;
/***/ }),
/* 3 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
;
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ResourceHandlerHttp; });
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__angular_core__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__angular_http__ = __webpack_require__(2);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__angular_http___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__angular_http__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__ngx_resource_core__ = __webpack_require__(1);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__ngx_resource_core___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2__ngx_resource_core__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__ResourceHandlerAbstract__ = __webpack_require__(5);
var __extends = (this && this.__extends) || (function () {
var extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var ResourceHandlerHttp = /** @class */ (function (_super) {
__extends(ResourceHandlerHttp, _super);
function ResourceHandlerHttp(http) {
var _this = _super.call(this) || this;
_this.http = http;
return _this;
}
ResourceHandlerHttp.prototype.request = function (request) {
return this.http.request(request);
};
ResourceHandlerHttp.prototype.prepareRequest = function (req) {
var options = {
url: req.url,
body: req.body,
withCredentials: req.withCredentials
};
switch (req.method) {
case __WEBPACK_IMPORTED_MODULE_2__ngx_resource_core__["ResourceRequestMethod"].Get:
options.method = __WEBPACK_IMPORTED_MODULE_1__angular_http__["RequestMethod"].Get;
break;
case __WEBPACK_IMPORTED_MODULE_2__ngx_resource_core__["ResourceRequestMethod"].Post:
options.method = __WEBPACK_IMPORTED_MODULE_1__angular_http__["RequestMethod"].Post;
break;
case __WEBPACK_IMPORTED_MODULE_2__ngx_resource_core__["ResourceRequestMethod"].Put:
options.method = __WEBPACK_IMPORTED_MODULE_1__angular_http__["RequestMethod"].Put;
break;
case __WEBPACK_IMPORTED_MODULE_2__ngx_resource_core__["ResourceRequestMethod"].Delete:
options.method = __WEBPACK_IMPORTED_MODULE_1__angular_http__["RequestMethod"].Delete;
break;
case __WEBPACK_IMPORTED_MODULE_2__ngx_resource_core__["ResourceRequestMethod"].Head:
options.method = __WEBPACK_IMPORTED_MODULE_1__angular_http__["RequestMethod"].Head;
break;
case __WEBPACK_IMPORTED_MODULE_2__ngx_resource_core__["ResourceRequestMethod"].Options:
options.method = __WEBPACK_IMPORTED_MODULE_1__angular_http__["RequestMethod"].Options;
break;
case __WEBPACK_IMPORTED_MODULE_2__ngx_resource_core__["ResourceRequestMethod"].Patch:
options.method = __WEBPACK_IMPORTED_MODULE_1__angular_http__["RequestMethod"].Patch;
}
switch (req.responseBodyType) {
case __WEBPACK_IMPORTED_MODULE_2__ngx_resource_core__["ResourceResponseBodyType"].Json:
options.responseType = __WEBPACK_IMPORTED_MODULE_1__angular_http__["ResponseContentType"].Json;
break;
case __WEBPACK_IMPORTED_MODULE_2__ngx_resource_core__["ResourceResponseBodyType"].ArrayBuffer:
options.responseType = __WEBPACK_IMPORTED_MODULE_1__angular_http__["ResponseContentType"].ArrayBuffer;
break;
case __WEBPACK_IMPORTED_MODULE_2__ngx_resource_core__["ResourceResponseBodyType"].Blob:
options.responseType = __WEBPACK_IMPORTED_MODULE_1__angular_http__["ResponseContentType"].Blob;
break;
default:
options.responseType = __WEBPACK_IMPORTED_MODULE_1__angular_http__["ResponseContentType"].Text;
}
if (req.headers) {
options.headers = req.headers;
}
if (req.query) {
options.params = req.query;
}
return new __WEBPACK_IMPORTED_MODULE_1__angular_http__["Request"](options);
};
ResourceHandlerHttp.prototype.handleResponse = function (req, response) {
var body;
switch (req.responseBodyType) {
case __WEBPACK_IMPORTED_MODULE_2__ngx_resource_core__["ResourceResponseBodyType"].Json:
body = response.json();
break;
case __WEBPACK_IMPORTED_MODULE_2__ngx_resource_core__["ResourceResponseBodyType"].ArrayBuffer:
body = response.arrayBuffer();
break;
case __WEBPACK_IMPORTED_MODULE_2__ngx_resource_core__["ResourceResponseBodyType"].Blob:
body = response.blob();
break;
default:
body = response.text();
}
return {
status: response.status,
body: body,
headers: response.headers.toJSON()
};
};
ResourceHandlerHttp = __decorate([
Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Injectable"])(),
__metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_1__angular_http__["Http"]])
], ResourceHandlerHttp);
return ResourceHandlerHttp;
}(__WEBPACK_IMPORTED_MODULE_3__ResourceHandlerAbstract__["a" /* ResourceHandlerAbstract */]));
/***/ }),
/* 4 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
;
Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ResourceModule", function() { return ResourceModule; });
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__angular_core__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__angular_http__ = __webpack_require__(2);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__angular_http___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__angular_http__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__ngx_resource_core__ = __webpack_require__(1);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__ngx_resource_core___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2__ngx_resource_core__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__src_ResourceHandlerHttp__ = __webpack_require__(3);
/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "ResourceHandlerHttp", function() { return __WEBPACK_IMPORTED_MODULE_3__src_ResourceHandlerHttp__["a"]; });
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var ResourceModule = /** @class */ (function () {
function ResourceModule() {
}
ResourceModule_1 = ResourceModule;
/**
* For root
* @param {IResourceModuleConfig} config
* @return {ModuleWithProviders}
*/
ResourceModule.forRoot = function (config) {
if (config === void 0) { config = {}; }
return {
ngModule: ResourceModule_1,
providers: [
config.handler || { provide: __WEBPACK_IMPORTED_MODULE_2__ngx_resource_core__["ResourceHandler"], useClass: __WEBPACK_IMPORTED_MODULE_3__src_ResourceHandlerHttp__["a" /* ResourceHandlerHttp */], deps: [__WEBPACK_IMPORTED_MODULE_1__angular_http__["Http"]] }
]
};
};
/**
* For child
* @param {IResourceModuleConfig} config
* @return {ModuleWithProviders}
*/
ResourceModule.forChild = function (config) {
if (config === void 0) { config = {}; }
return {
ngModule: ResourceModule_1,
providers: [
config.handler || { provide: __WEBPACK_IMPORTED_MODULE_2__ngx_resource_core__["ResourceHandler"], useClass: __WEBPACK_IMPORTED_MODULE_3__src_ResourceHandlerHttp__["a" /* ResourceHandlerHttp */], deps: [__WEBPACK_IMPORTED_MODULE_1__angular_http__["Http"]] }
]
};
};
ResourceModule = ResourceModule_1 = __decorate([
Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["NgModule"])()
], ResourceModule);
return ResourceModule;
var ResourceModule_1;
}());
/***/ }),
/* 5 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
;
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ResourceHandlerAbstract; });
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__angular_core__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__ngx_resource_core__ = __webpack_require__(1);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__ngx_resource_core___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__ngx_resource_core__);
var __extends = (this && this.__extends) || (function () {
var extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var ResourceHandlerAbstract = /** @class */ (function (_super) {
__extends(ResourceHandlerAbstract, _super);
function ResourceHandlerAbstract() {
return _super !== null && _super.apply(this, arguments) || this;
}
ResourceHandlerAbstract.prototype.handle = function (req) {
var _this = this;
var request = this.prepareRequest(req);
var resp = {
promise: null
};
resp.promise = new Promise(function (resolve, reject) {
var subscription = _this.request(request)
.subscribe(function (resp) {
subscription = null;
resolve(_this.handleResponse(req, resp));
}, function (err) {
subscription = null;
reject(_this.handleResponse(req, err));
});
resp.abort = function () {
if (subscription) {
subscription.unsubscribe();
subscription = null;
}
};
});
return resp;
};
ResourceHandlerAbstract = __decorate([
Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Injectable"])()
], ResourceHandlerAbstract);
return ResourceHandlerAbstract;
}(__WEBPACK_IMPORTED_MODULE_1__ngx_resource_core__["ResourceHandler"]));
/***/ })
/******/ ]);
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovLy93ZWJwYWNrL2Jvb3RzdHJhcCBjNzYxNmRjZGVhNzM4ZTliYzYwYyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJAYW5ndWxhci9jb3JlXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiQG5neC1yZXNvdXJjZS9jb3JlXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiQGFuZ3VsYXIvaHR0cFwiIiwid2VicGFjazovLy8uL3NyYy9SZXNvdXJjZUhhbmRsZXJIdHRwLnRzIiwid2VicGFjazovLy8uL2luZGV4LnRzIiwid2VicGFjazovLy8uL3NyYy9SZXNvdXJjZUhhbmRsZXJBYnN0cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsTztBQ1ZBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBMkIsMEJBQTBCLEVBQUU7QUFDdkQseUNBQWlDLGVBQWU7QUFDaEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0EsOERBQXNELCtEQUErRDs7QUFFckg7QUFDQTs7QUFFQTtBQUNBOzs7Ozs7O0FDN0RBLCtDOzs7Ozs7QUNBQSwrQzs7Ozs7O0FDQUEsK0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBMkM7QUFDaUQ7QUFNaEU7QUFDd0M7QUFHcEU7SUFBeUMsdUNBQXVCO0lBRTlELDZCQUFvQixJQUFVO1FBQTlCLFlB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LENBQUMsQ0FBQztvQkFDakIsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUMzQixZQUFZLEdBQUcsSUFBSSxDQUFDO2dCQUN0QixDQUFDO1lBQ0gsQ0FBQyxDQUFDO1FBRUosQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsSUFBSSxDQUFDO0lBRWQsQ0FBQztJQXBDbUIsdUJBQXVCO1FBRDVDLGlFQUFVLEVBQUU7T0FDUyx1QkFBdUIsQ0E0QzVDO0lBQUQsOEJBQUM7Q0FBQSxDQTVDcUQsbUVBQWUsR0E0Q3BFO0FBNUM0QyIsImZpbGUiOiJoYW5kbGVyLW5neC1odHRwLWxlZ2FjeS51bWQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCJAYW5ndWxhci9jb3JlXCIpLCByZXF1aXJlKFwiQG5neC1yZXNvdXJjZS9jb3JlXCIpLCByZXF1aXJlKFwiQGFuZ3VsYXIvaHR0cFwiKSk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXCJAYW5ndWxhci9jb3JlXCIsIFwiQG5neC1yZXNvdXJjZS9jb3JlXCIsIFwiQGFuZ3VsYXIvaHR0cFwiXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJuZ3gtcmVzb3VyY2UtaGFuZGxlci1uZ3gtaHR0cC1sZWdhY3lcIl0gPSBmYWN0b3J5KHJlcXVpcmUoXCJAYW5ndWxhci9jb3JlXCIpLCByZXF1aXJlKFwiQG5neC1yZXNvdXJjZS9jb3JlXCIpLCByZXF1aXJlKFwiQGFuZ3VsYXIvaHR0cFwiKSk7XG5cdGVsc2Vcblx0XHRyb290W1wibmd4LXJlc291cmNlLWhhbmRsZXItbmd4LWh0dHAtbGVnYWN5XCJdID0gZmFjdG9yeShyb290W1wiQGFuZ3VsYXIvY29yZVwiXSwgcm9vdFtcIkBuZ3gtcmVzb3VyY2UvY29yZVwiXSwgcm9vdFtcIkBhbmd1bGFyL2h0dHBcIl0pO1xufSkodGhpcywgZnVuY3Rpb24oX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV8wX18sIF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfMV9fLCBfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFXzJfXykge1xucmV0dXJuIFxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyB3ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHtcbiBcdFx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gXHRcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuIFx0XHRcdFx0Z2V0OiBnZXR0ZXJcbiBcdFx0XHR9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCIvXCI7XG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gNCk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gd2VicGFjay9ib290c3RyYXAgYzc2MTZkY2RlYTczOGU5YmM2MGMiLCJtb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfMF9fO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIGV4dGVybmFsIFwiQGFuZ3VsYXIvY29yZVwiXG4vLyBtb2R1bGUgaWQgPSAwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIm1vZHVsZS5leHBvcnRzID0gX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV8xX187XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gZXh0ZXJuYWwgXCJAbmd4LXJlc291cmNlL2NvcmVcIlxuLy8gbW9kdWxlIGlkID0gMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfMl9fO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIGV4dGVybmFsIFwiQGFuZ3VsYXIvaHR0cFwiXG4vLyBtb2R1bGUgaWQgPSAyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHAsIFJlcXVlc3QsIFJlcXVlc3RNZXRob2QsIFJlc3BvbnNlLCBSZXNwb25zZUNvbnRlbnRUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvaHR0cCc7XG5pbXBvcnQgeyBSZXF1ZXN0QXJncyB9IGZyb20gJ0Bhbmd1bGFyL2h0dHAvc3JjL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMvT2JzZXJ2YWJsZSc7XG5pbXBvcnQge1xuICBJUmVzb3VyY2VSZXF1ZXN0LCBJUmVzb3VyY2VSZXNwb25zZSwgUmVzb3VyY2VSZXF1ZXN0TWV0aG9kLFxuICBSZXNvdXJjZVJlc3BvbnNlQm9keVR5cGVcbn0gZnJvbSAnQG5neC1yZXNvdXJjZS9jb3JlJztcbmltcG9ydCB7IFJlc291cmNlSGFuZGxlckFic3RyYWN0IH0gZnJvbSAnLi9SZXNvdXJjZUhhbmRsZXJBYnN0cmFjdCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBSZXNvdXJjZUhhbmRsZXJIdHRwIGV4dGVuZHMgUmVzb3VyY2VIYW5kbGVyQWJzdHJhY3Qge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVxdWVzdChyZXF1ZXN0OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucmVxdWVzdChyZXF1ZXN0KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwcmVwYXJlUmVxdWVzdChyZXE6IElSZXNvdXJjZVJlcXVlc3QpOiBSZXF1ZXN0IHtcblxuICAgIGNvbnN0IG9wdGlvbnM6IFJlcXVlc3RBcmdzID0ge1xuICAgICAgdXJsOiByZXEudXJsLFxuICAgICAgYm9keTogcmVxLmJvZHksXG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHJlcS53aXRoQ3JlZGVudGlhbHNcbiAgICB9O1xuXG4gICAgc3dpdGNoIChyZXEubWV0aG9kKSB7XG5cbiAgICAgIGNhc2UgUmVzb3VyY2VSZXF1ZXN0TWV0aG9kLkdldDpcbiAgICAgICAgb3B0aW9ucy5tZXRob2QgPSBSZXF1ZXN0TWV0aG9kLkdldDtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgUmVzb3VyY2VSZXF1ZXN0TWV0aG9kLlBvc3Q6XG4gICAgICAgIG9wdGlvbnMubWV0aG9kID0gUmVxdWVzdE1ldGhvZC5Qb3N0O1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBSZXNvdXJjZVJlcXVlc3RNZXRob2QuUHV0OlxuICAgICAgICBvcHRpb25zLm1ldGhvZCA9IFJlcXVlc3RNZXRob2QuUHV0O1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBSZXNvdXJjZVJlcXVlc3RNZXRob2QuRGVsZXRlOlxuICAgICAgICBvcHRpb25zLm1ldGhvZCA9IFJlcXVlc3RNZXRob2QuRGVsZXRlO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBSZXNvdXJjZVJlcXVlc3RNZXRob2QuSGVhZDpcbiAgICAgICAgb3B0aW9ucy5tZXRob2QgPSBSZXF1ZXN0TWV0aG9kLkhlYWQ7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFJlc291cmNlUmVxdWVzdE1ldGhvZC5PcHRpb25zOlxuICAgICAgICBvcHRpb25zLm1ldGhvZCA9IFJlcXVlc3RNZXRob2QuT3B0aW9ucztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgUmVzb3VyY2VSZXF1ZXN0TWV0aG9kLlBhdGNoOlxuICAgICAgICBvcHRpb25zLm1ldGhvZCA9IFJlcXVlc3RNZXRob2QuUGF0Y2g7XG5cbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlcS5yZXNwb25zZUJvZHlUeXBlKSB7XG5cbiAgICAgIGNhc2UgUmVzb3VyY2VSZXNwb25zZUJvZHlUeXBlLkpzb246XG4gICAgICAgIG9wdGlvbnMucmVzcG9uc2VUeXBlID0gUmVzcG9uc2VDb250ZW50VHlwZS5Kc29uO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBSZXNvdXJjZVJlc3BvbnNlQm9keVR5cGUuQXJyYXlCdWZmZXI6XG4gICAgICAgIG9wdGlvbnMucmVzcG9uc2VUeXBlID0gUmVzcG9uc2VDb250ZW50VHlwZS5BcnJheUJ1ZmZlcjtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgUmVzb3VyY2VSZXNwb25zZUJvZHlUeXBlLkJsb2I6XG4gICAgICAgIG9wdGlvbnMucmVzcG9uc2VUeXBlID0gUmVzcG9uc2VDb250ZW50VHlwZS5CbG9iO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgb3B0aW9ucy5yZXNwb25zZVR5cGUgPSBSZXNwb25zZUNvbnRlbnRUeXBlLlRleHQ7XG5cbiAgICB9XG5cbiAgICBpZiAocmVxLmhlYWRlcnMpIHtcbiAgICAgIG9wdGlvbnMuaGVhZGVycyA9IHJlcS5oZWFkZXJzO1xuICAgIH1cblxuICAgIGlmIChyZXEucXVlcnkpIHtcbiAgICAgIG9wdGlvbnMucGFyYW1zID0gcmVxLnF1ZXJ5O1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUmVxdWVzdChvcHRpb25zKTtcblxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZVJlc3BvbnNlKHJlcTogSVJlc291cmNlUmVxdWVzdCwgcmVzcG9uc2U6IFJlc3BvbnNlKTogSVJlc291cmNlUmVzcG9uc2Uge1xuXG4gICAgbGV0IGJvZHk6IGFueTtcbiAgICBzd2l0Y2ggKHJlcS5yZXNwb25zZUJvZHlUeXBlKSB7XG5cbiAgICAgIGNhc2UgUmVzb3VyY2VSZXNwb25zZUJvZHlUeXBlLkpzb246XG4gICAgICAgIGJvZHkgPSByZXNwb25zZS5qc29uKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFJlc291cmNlUmVzcG9uc2VCb2R5VHlwZS5BcnJheUJ1ZmZlcjpcbiAgICAgICAgYm9keSA9IHJlc3BvbnNlLmFycmF5QnVmZmVyKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFJlc291cmNlUmVzcG9uc2VCb2R5VHlwZS5CbG9iOlxuICAgICAgICBib2R5ID0gcmVzcG9uc2UuYmxvYigpO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYm9keSA9IHJlc3BvbnNlLnRleHQoKTtcblxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cyxcbiAgICAgIGJvZHksXG4gICAgICBoZWFkZXJzOiByZXNwb25zZS5oZWFkZXJzLnRvSlNPTigpXG4gICAgfTtcblxuICB9XG5cbn1cblxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL1Jlc291cmNlSGFuZGxlckh0dHAudHMiLCJpbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSwgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHAgfSBmcm9tICdAYW5ndWxhci9odHRwJztcbmltcG9ydCB7IFJlc291cmNlSGFuZGxlciB9IGZyb20gJ0BuZ3gtcmVzb3VyY2UvY29yZSc7XG5pbXBvcnQgeyBSZXNvdXJjZUhhbmRsZXJIdHRwIH0gZnJvbSAnLi9zcmMvUmVzb3VyY2VIYW5kbGVySHR0cCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vc3JjL1Jlc291cmNlSGFuZGxlckh0dHAnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElSZXNvdXJjZU1vZHVsZUNvbmZpZyB7XG4gIGhhbmRsZXI/OiBQcm92aWRlcjtcbn1cblxuQE5nTW9kdWxlKClcbmV4cG9ydCBjbGFzcyBSZXNvdXJjZU1vZHVsZSB7XG5cbiAgLyoqXG4gICAqIEZvciByb290XG4gICAqIEBwYXJhbSB7SVJlc291cmNlTW9kdWxlQ29uZmlnfSBjb25maWdcbiAgICogQHJldHVybiB7TW9kdWxlV2l0aFByb3ZpZGVyc31cbiAgICovXG4gIHN0YXRpYyBmb3JSb290KGNvbmZpZzogSVJlc291cmNlTW9kdWxlQ29uZmlnID0ge30pOiBNb2R1bGVXaXRoUHJvdmlkZXJzIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IFJlc291cmNlTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIGNvbmZpZy5oYW5kbGVyIHx8IHtwcm92aWRlOiBSZXNvdXJjZUhhbmRsZXIsIHVzZUNsYXNzOiBSZXNvdXJjZUhhbmRsZXJIdHRwLCBkZXBzOiBbSHR0cF19XG4gICAgICBdXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3IgY2hpbGRcbiAgICogQHBhcmFtIHtJUmVzb3VyY2VNb2R1bGVDb25maWd9IGNvbmZpZ1xuICAgKiBAcmV0dXJuIHtNb2R1bGVXaXRoUHJvdmlkZXJzfVxuICAgKi9cbiAgc3RhdGljIGZvckNoaWxkKGNvbmZpZzogSVJlc291cmNlTW9kdWxlQ29uZmlnID0ge30pOiBNb2R1bGVXaXRoUHJvdmlkZXJzIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IFJlc291cmNlTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIGNvbmZpZy5oYW5kbGVyIHx8IHtwcm92aWRlOiBSZXNvdXJjZUhhbmRsZXIsIHVzZUNsYXNzOiBSZXNvdXJjZUhhbmRsZXJIdHRwLCBkZXBzOiBbSHR0cF19XG4gICAgICBdXG4gICAgfTtcbiAgfVxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vaW5kZXgudHMiLCJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcy9PYnNlcnZhYmxlJztcbmltcG9ydCB7IElSZXNvdXJjZUhhbmRsZXJSZXNwb25zZSwgSVJlc291cmNlUmVxdWVzdCwgSVJlc291cmNlUmVzcG9uc2UsIFJlc291cmNlSGFuZGxlciB9IGZyb20gJ0BuZ3gtcmVzb3VyY2UvY29yZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBSZXNvdXJjZUhhbmRsZXJBYnN0cmFjdCBleHRlbmRzIFJlc291cmNlSGFuZGxlciB7XG5cblxuICBoYW5kbGUocmVxOiBJUmVzb3VyY2VSZXF1ZXN0KTogSVJlc291cmNlSGFuZGxlclJlc3BvbnNlIHtcblxuICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLnByZXBhcmVSZXF1ZXN0KHJlcSk7XG5cbiAgICBjb25zdCByZXNwOiBJUmVzb3VyY2VIYW5kbGVyUmVzcG9uc2UgPSB7XG4gICAgICBwcm9taXNlOiBudWxsXG4gICAgfTtcblxuICAgIHJlc3AucHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblxuICAgICAgbGV0IHN1YnNjcmlwdGlvbiA9IHRoaXMucmVxdWVzdChyZXF1ZXN0KVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgIChyZXNwOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgICAgICAgICByZXNvbHZlKHRoaXMuaGFuZGxlUmVzcG9uc2UocmVxLCByZXNwKSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgICAgICAgICByZWplY3QodGhpcy5oYW5kbGVSZXNwb25zZShyZXEsIGVycikpO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgcmVzcC5hYm9ydCA9ICgpID0+IHtcbiAgICAgICAgaWYgKHN1YnNjcmlwdGlvbikge1xuICAgICAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgIHN1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICB9KTtcblxuICAgIHJldHVybiByZXNwO1xuXG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVxdWVzdChyZXF1ZXN0OiBhbnkpOiBPYnNlcnZhYmxlPGFueT47XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHByZXBhcmVSZXF1ZXN0KHJlcTogSVJlc291cmNlUmVxdWVzdCk6IGFueTtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgaGFuZGxlUmVzcG9uc2UocmVxOiBJUmVzb3VyY2VSZXF1ZXN0LCByZXNwb25zZTogYW55KTogSVJlc291cmNlUmVzcG9uc2U7XG5cbn1cblxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL1Jlc291cmNlSGFuZGxlckFic3RyYWN0LnRzIl0sInNvdXJjZVJvb3QiOiIifQ==