UNPKG

jsforce

Version:

Salesforce API Library for JavaScript

242 lines (231 loc) 26 kB
import "core-js/modules/es.array.push.js"; import _Reflect$construct from "@babel/runtime-corejs3/core-js-stable/reflect/construct"; import _Object$getOwnPropertySymbols from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols"; import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter"; import _Object$getOwnPropertyDescriptor from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor"; import _forEachInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/for-each"; import _Object$getOwnPropertyDescriptors from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors"; import _Object$defineProperties from "@babel/runtime-corejs3/core-js-stable/object/define-properties"; import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object/define-property"; import _objectWithoutProperties from "@babel/runtime-corejs3/helpers/objectWithoutProperties"; import _get from "@babel/runtime-corejs3/helpers/get"; import _possibleConstructorReturn from "@babel/runtime-corejs3/helpers/possibleConstructorReturn"; import _getPrototypeOf from "@babel/runtime-corejs3/helpers/getPrototypeOf"; import _inherits from "@babel/runtime-corejs3/helpers/inherits"; import _defineProperty from "@babel/runtime-corejs3/helpers/defineProperty"; import _classCallCheck from "@babel/runtime-corejs3/helpers/classCallCheck"; import _createClass from "@babel/runtime-corejs3/helpers/createClass"; var _excluded = ["url", "body"]; var _ref, _ref2, _ref3, _process$env$https_pr; function _superPropGet(t, o, e, r) { var p = _get(_getPrototypeOf(1 & r ? t.prototype : t), o, e); return 2 & r && "function" == typeof p ? function (t) { return p.apply(e, t); } : p; } function ownKeys(e, r) { var t = _Object$keys2(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context3, _context4; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context3 = ownKeys(Object(t), !0)).call(_context3, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context4 = ownKeys(Object(t))).call(_context4, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; } function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? _Reflect$construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } import _parseInt from "@babel/runtime-corejs3/core-js-stable/parse-int"; import _Promise from "@babel/runtime-corejs3/core-js-stable/promise"; import _Object$keys2 from "@babel/runtime-corejs3/core-js-stable/object/keys"; import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat"; import _Date$now from "@babel/runtime-corejs3/core-js-stable/date/now"; import _startsWithInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/starts-with"; import "core-js/modules/es.regexp.exec.js"; /** * */ import request, { setDefaults } from './request'; import { StreamPromise } from './util/promise'; import jsonp from './browser/jsonp'; import canvas from './browser/canvas'; /** * Normarize Salesforce API host name * @private */ function normalizeApiHost(apiHost) { var m = /(\w+)\.(visual\.force|salesforce)\.com$/.exec(apiHost); if (m) { return "".concat(m[1], ".salesforce.com"); } return apiHost; } setDefaults({ httpProxy: (_ref = (_ref2 = (_ref3 = (_process$env$https_pr = process.env.https_proxy) !== null && _process$env$https_pr !== void 0 ? _process$env$https_pr : process.env.http_proxy) !== null && _ref3 !== void 0 ? _ref3 : process.env.HTTPS_PROXY) !== null && _ref2 !== void 0 ? _ref2 : process.env.HTTP_PROXY) !== null && _ref !== void 0 ? _ref : undefined, timeout: process.env.HTTP_TIMEOUT ? _parseInt(process.env.HTTP_TIMEOUT, 10) : undefined, followRedirect: true }); var baseUrl = typeof window !== 'undefined' && window.location && window.location.host ? "https://".concat(normalizeApiHost(window.location.host)) : process.env.LOCATION_BASE_URL || ''; /** * Class for HTTP request transport * * @class * @protected */ export var Transport = /*#__PURE__*/function () { function Transport() { _classCallCheck(this, Transport); } return _createClass(Transport, [{ key: "httpRequest", value: /** */ function httpRequest(req) { var _this = this; var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; return StreamPromise.create(function () { var createStream = _this.getRequestStreamCreator(); var stream = createStream(req, options); var promise = new _Promise(function (resolve, reject) { stream.on('complete', function (res) { return resolve(res); }).on('error', reject); }); return { stream: stream, promise: promise }; }); } /** * @protected */ }, { key: "getRequestStreamCreator", value: function getRequestStreamCreator() { return request; } }]); }(); /** * Class for JSONP request transport */ export var JsonpTransport = /*#__PURE__*/function (_Transport) { function JsonpTransport(jsonpParam) { var _this2; _classCallCheck(this, JsonpTransport); _this2 = _callSuper(this, JsonpTransport); _this2._jsonpParam = jsonpParam; return _this2; } _inherits(JsonpTransport, _Transport); return _createClass(JsonpTransport, [{ key: "getRequestStreamCreator", value: function getRequestStreamCreator() { var jsonpRequest = jsonp.createRequest(this._jsonpParam); return function (params) { return jsonpRequest(params); }; } }]); }(Transport); /** * Class for Sfdc Canvas request transport */ _defineProperty(JsonpTransport, "supprted", jsonp.supported); export var CanvasTransport = /*#__PURE__*/function (_Transport2) { function CanvasTransport(signedRequest) { var _this3; _classCallCheck(this, CanvasTransport); _this3 = _callSuper(this, CanvasTransport); _this3._signedRequest = signedRequest; return _this3; } _inherits(CanvasTransport, _Transport2); return _createClass(CanvasTransport, [{ key: "getRequestStreamCreator", value: function getRequestStreamCreator() { var canvasRequest = canvas.createRequest(this._signedRequest); return function (params) { return canvasRequest(params); }; } }]); }(Transport); /* @private */ _defineProperty(CanvasTransport, "supported", canvas.supported); function createXdProxyRequest(req, proxyUrl) { var _context, _context2; var headers = { 'salesforceproxy-endpoint': req.url }; if (req.headers) { for (var _i = 0, _Object$keys = _Object$keys2(req.headers); _i < _Object$keys.length; _i++) { var name = _Object$keys[_i]; headers[name] = req.headers[name]; } } var nocache = _concatInstanceProperty(_context = "".concat(_Date$now(), ".")).call(_context, String(Math.random()).substring(2)); return _objectSpread({ method: req.method, url: _concatInstanceProperty(_context2 = "".concat(proxyUrl, "?")).call(_context2, nocache), headers: headers }, req.body != null ? { body: req.body } : {}); } /** * Class for HTTP request transport using cross-domain AJAX proxy service */ export var XdProxyTransport = /*#__PURE__*/function (_Transport3) { function XdProxyTransport(xdProxyUrl) { var _this4; _classCallCheck(this, XdProxyTransport); _this4 = _callSuper(this, XdProxyTransport); _this4._xdProxyUrl = xdProxyUrl; return _this4; } /** * Make HTTP request via AJAX proxy */ _inherits(XdProxyTransport, _Transport3); return _createClass(XdProxyTransport, [{ key: "httpRequest", value: function httpRequest(req) { var _options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var xdProxyUrl = this._xdProxyUrl; var url = req.url, body = req.body, rreq = _objectWithoutProperties(req, _excluded); var canonicalUrl = _startsWithInstanceProperty(url).call(url, '/') ? baseUrl + url : url; var xdProxyReq = createXdProxyRequest(_objectSpread(_objectSpread({}, rreq), {}, { url: canonicalUrl, body: body }), xdProxyUrl); return _superPropGet(XdProxyTransport, "httpRequest", this, 3)([xdProxyReq, { followRedirect: function followRedirect(redirectUrl) { return createXdProxyRequest(_objectSpread(_objectSpread({}, rreq), {}, { method: 'GET', url: redirectUrl }), xdProxyUrl); } }]); } }]); }(Transport); /** * Class for HTTP request transport using a proxy server */ export var HttpProxyTransport = /*#__PURE__*/function (_Transport4) { function HttpProxyTransport(httpProxy) { var _this5; _classCallCheck(this, HttpProxyTransport); _this5 = _callSuper(this, HttpProxyTransport); _this5._httpProxy = httpProxy; return _this5; } /** * Make HTTP request via proxy server */ _inherits(HttpProxyTransport, _Transport4); return _createClass(HttpProxyTransport, [{ key: "httpRequest", value: function httpRequest(req) { var options_ = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var options = _objectSpread(_objectSpread({}, options_), {}, { httpProxy: this._httpProxy }); return _superPropGet(HttpProxyTransport, "httpRequest", this, 3)([req, options]); } }]); }(Transport); export default Transport; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXF1ZXN0Iiwic2V0RGVmYXVsdHMiLCJTdHJlYW1Qcm9taXNlIiwianNvbnAiLCJjYW52YXMiLCJub3JtYWxpemVBcGlIb3N0IiwiYXBpSG9zdCIsIm0iLCJleGVjIiwiY29uY2F0IiwiaHR0cFByb3h5IiwiX3JlZiIsIl9yZWYyIiwiX3JlZjMiLCJfcHJvY2VzcyRlbnYkaHR0cHNfcHIiLCJwcm9jZXNzIiwiZW52IiwiaHR0cHNfcHJveHkiLCJodHRwX3Byb3h5IiwiSFRUUFNfUFJPWFkiLCJIVFRQX1BST1hZIiwidW5kZWZpbmVkIiwidGltZW91dCIsIkhUVFBfVElNRU9VVCIsIl9wYXJzZUludCIsImZvbGxvd1JlZGlyZWN0IiwiYmFzZVVybCIsIndpbmRvdyIsImxvY2F0aW9uIiwiaG9zdCIsIkxPQ0FUSU9OX0JBU0VfVVJMIiwiVHJhbnNwb3J0IiwiX2NsYXNzQ2FsbENoZWNrIiwiX2NyZWF0ZUNsYXNzIiwia2V5IiwidmFsdWUiLCJodHRwUmVxdWVzdCIsInJlcSIsIl90aGlzIiwib3B0aW9ucyIsImFyZ3VtZW50cyIsImxlbmd0aCIsImNyZWF0ZSIsImNyZWF0ZVN0cmVhbSIsImdldFJlcXVlc3RTdHJlYW1DcmVhdG9yIiwic3RyZWFtIiwicHJvbWlzZSIsIl9Qcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsIm9uIiwicmVzIiwiSnNvbnBUcmFuc3BvcnQiLCJfVHJhbnNwb3J0IiwianNvbnBQYXJhbSIsIl90aGlzMiIsIl9jYWxsU3VwZXIiLCJfanNvbnBQYXJhbSIsIl9pbmhlcml0cyIsImpzb25wUmVxdWVzdCIsImNyZWF0ZVJlcXVlc3QiLCJwYXJhbXMiLCJfZGVmaW5lUHJvcGVydHkiLCJzdXBwb3J0ZWQiLCJDYW52YXNUcmFuc3BvcnQiLCJfVHJhbnNwb3J0MiIsInNpZ25lZFJlcXVlc3QiLCJfdGhpczMiLCJfc2lnbmVkUmVxdWVzdCIsImNhbnZhc1JlcXVlc3QiLCJjcmVhdGVYZFByb3h5UmVxdWVzdCIsInByb3h5VXJsIiwiX2NvbnRleHQiLCJfY29udGV4dDIiLCJoZWFkZXJzIiwidXJsIiwiX2kiLCJfT2JqZWN0JGtleXMiLCJfT2JqZWN0JGtleXMyIiwibmFtZSIsIm5vY2FjaGUiLCJfY29uY2F0SW5zdGFuY2VQcm9wZXJ0eSIsIl9EYXRlJG5vdyIsImNhbGwiLCJTdHJpbmciLCJNYXRoIiwicmFuZG9tIiwic3Vic3RyaW5nIiwiX29iamVjdFNwcmVhZCIsIm1ldGhvZCIsImJvZHkiLCJYZFByb3h5VHJhbnNwb3J0IiwiX1RyYW5zcG9ydDMiLCJ4ZFByb3h5VXJsIiwiX3RoaXM0IiwiX3hkUHJveHlVcmwiLCJfb3B0aW9ucyIsInJyZXEiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJjYW5vbmljYWxVcmwiLCJfc3RhcnRzV2l0aEluc3RhbmNlUHJvcGVydHkiLCJ4ZFByb3h5UmVxIiwiX3N1cGVyUHJvcEdldCIsInJlZGlyZWN0VXJsIiwiSHR0cFByb3h5VHJhbnNwb3J0IiwiX1RyYW5zcG9ydDQiLCJfdGhpczUiLCJfaHR0cFByb3h5Iiwib3B0aW9uc18iXSwic291cmNlcyI6WyIuLi9zcmMvdHJhbnNwb3J0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICpcbiAqL1xuaW1wb3J0IHsgRHVwbGV4IH0gZnJvbSAnc3RyZWFtJztcbmltcG9ydCByZXF1ZXN0LCB7IHNldERlZmF1bHRzIH0gZnJvbSAnLi9yZXF1ZXN0JztcbmltcG9ydCB7IEh0dHBSZXF1ZXN0LCBIdHRwUmVxdWVzdE9wdGlvbnMsIEh0dHBSZXNwb25zZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgU3RyZWFtUHJvbWlzZSB9IGZyb20gJy4vdXRpbC9wcm9taXNlJztcbmltcG9ydCBqc29ucCBmcm9tICcuL2Jyb3dzZXIvanNvbnAnO1xuaW1wb3J0IGNhbnZhcyBmcm9tICcuL2Jyb3dzZXIvY2FudmFzJztcblxuLyoqXG4gKiBOb3JtYXJpemUgU2FsZXNmb3JjZSBBUEkgaG9zdCBuYW1lXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBub3JtYWxpemVBcGlIb3N0KGFwaUhvc3Q6IHN0cmluZykge1xuICBjb25zdCBtID0gLyhcXHcrKVxcLih2aXN1YWxcXC5mb3JjZXxzYWxlc2ZvcmNlKVxcLmNvbSQvLmV4ZWMoYXBpSG9zdCk7XG4gIGlmIChtKSB7XG4gICAgcmV0dXJuIGAke21bMV19LnNhbGVzZm9yY2UuY29tYDtcbiAgfVxuICByZXR1cm4gYXBpSG9zdDtcbn1cblxuc2V0RGVmYXVsdHMoe1xuICBodHRwUHJveHk6IHByb2Nlc3MuZW52Lmh0dHBzX3Byb3h5ID8/IHByb2Nlc3MuZW52Lmh0dHBfcHJveHkgPz8gcHJvY2Vzcy5lbnYuSFRUUFNfUFJPWFkgPz8gcHJvY2Vzcy5lbnYuSFRUUF9QUk9YWSA/PyB1bmRlZmluZWQsXG4gIHRpbWVvdXQ6IHByb2Nlc3MuZW52LkhUVFBfVElNRU9VVFxuICAgID8gcGFyc2VJbnQocHJvY2Vzcy5lbnYuSFRUUF9USU1FT1VULCAxMClcbiAgICA6IHVuZGVmaW5lZCxcbiAgZm9sbG93UmVkaXJlY3Q6IHRydWUsXG59KTtcblxuY29uc3QgYmFzZVVybCA9XG4gIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24uaG9zdFxuICAgID8gYGh0dHBzOi8vJHtub3JtYWxpemVBcGlIb3N0KHdpbmRvdy5sb2NhdGlvbi5ob3N0KX1gXG4gICAgOiBwcm9jZXNzLmVudi5MT0NBVElPTl9CQVNFX1VSTCB8fCAnJztcblxuLyoqXG4gKiBDbGFzcyBmb3IgSFRUUCByZXF1ZXN0IHRyYW5zcG9ydFxuICpcbiAqIEBjbGFzc1xuICogQHByb3RlY3RlZFxuICovXG5leHBvcnQgY2xhc3MgVHJhbnNwb3J0IHtcbiAgLyoqXG4gICAqL1xuICBodHRwUmVxdWVzdChcbiAgICByZXE6IEh0dHBSZXF1ZXN0LFxuICAgIG9wdGlvbnM6IEh0dHBSZXF1ZXN0T3B0aW9ucyA9IHt9LFxuICApOiBTdHJlYW1Qcm9taXNlPEh0dHBSZXNwb25zZT4ge1xuICAgIHJldHVybiBTdHJlYW1Qcm9taXNlLmNyZWF0ZSgoKSA9PiB7XG4gICAgICBjb25zdCBjcmVhdGVTdHJlYW0gPSB0aGlzLmdldFJlcXVlc3RTdHJlYW1DcmVhdG9yKCk7XG4gICAgICBjb25zdCBzdHJlYW0gPSBjcmVhdGVTdHJlYW0ocmVxLCBvcHRpb25zKTtcbiAgICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZTxIdHRwUmVzcG9uc2U+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgc3RyZWFtXG4gICAgICAgICAgLm9uKCdjb21wbGV0ZScsIChyZXM6IEh0dHBSZXNwb25zZSkgPT4gcmVzb2x2ZShyZXMpKVxuICAgICAgICAgIC5vbignZXJyb3InLCByZWplY3QpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4geyBzdHJlYW0sIHByb21pc2UgfTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBnZXRSZXF1ZXN0U3RyZWFtQ3JlYXRvcigpOiAoXG4gICAgcmVxOiBIdHRwUmVxdWVzdCxcbiAgICBvcHRpb25zOiBIdHRwUmVxdWVzdE9wdGlvbnMsXG4gICkgPT4gRHVwbGV4IHtcbiAgICByZXR1cm4gcmVxdWVzdDtcbiAgfVxufVxuXG4vKipcbiAqIENsYXNzIGZvciBKU09OUCByZXF1ZXN0IHRyYW5zcG9ydFxuICovXG5leHBvcnQgY2xhc3MgSnNvbnBUcmFuc3BvcnQgZXh0ZW5kcyBUcmFuc3BvcnQge1xuICBzdGF0aWMgc3VwcHJ0ZWQ6IGJvb2xlYW4gPSBqc29ucC5zdXBwb3J0ZWQ7XG4gIF9qc29ucFBhcmFtOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoanNvbnBQYXJhbTogc3RyaW5nKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9qc29ucFBhcmFtID0ganNvbnBQYXJhbTtcbiAgfVxuXG4gIGdldFJlcXVlc3RTdHJlYW1DcmVhdG9yKCk6IChcbiAgICByZXE6IEh0dHBSZXF1ZXN0LFxuICAgIG9wdGlvbnM6IEh0dHBSZXF1ZXN0T3B0aW9ucyxcbiAgKSA9PiBEdXBsZXgge1xuICAgIGNvbnN0IGpzb25wUmVxdWVzdCA9IGpzb25wLmNyZWF0ZVJlcXVlc3QodGhpcy5fanNvbnBQYXJhbSk7XG4gICAgcmV0dXJuIChwYXJhbXMpID0+IGpzb25wUmVxdWVzdChwYXJhbXMpO1xuICB9XG59XG5cbi8qKlxuICogQ2xhc3MgZm9yIFNmZGMgQ2FudmFzIHJlcXVlc3QgdHJhbnNwb3J0XG4gKi9cbmV4cG9ydCBjbGFzcyBDYW52YXNUcmFuc3BvcnQgZXh0ZW5kcyBUcmFuc3BvcnQge1xuICBzdGF0aWMgc3VwcG9ydGVkOiBib29sZWFuID0gY2FudmFzLnN1cHBvcnRlZDtcbiAgX3NpZ25lZFJlcXVlc3Q6IGFueTtcblxuICBjb25zdHJ1Y3RvcihzaWduZWRSZXF1ZXN0OiBhbnkpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX3NpZ25lZFJlcXVlc3QgPSBzaWduZWRSZXF1ZXN0O1xuICB9XG5cbiAgZ2V0UmVxdWVzdFN0cmVhbUNyZWF0b3IoKTogKFxuICAgIHJlcTogSHR0cFJlcXVlc3QsXG4gICAgb3B0aW9uczogSHR0cFJlcXVlc3RPcHRpb25zLFxuICApID0+IER1cGxleCB7XG4gICAgY29uc3QgY2FudmFzUmVxdWVzdCA9IGNhbnZhcy5jcmVhdGVSZXF1ZXN0KHRoaXMuX3NpZ25lZFJlcXVlc3QpO1xuICAgIHJldHVybiAocGFyYW1zKSA9PiBjYW52YXNSZXF1ZXN0KHBhcmFtcyk7XG4gIH1cbn1cblxuLyogQHByaXZhdGUgKi9cbmZ1bmN0aW9uIGNyZWF0ZVhkUHJveHlSZXF1ZXN0KHJlcTogSHR0cFJlcXVlc3QsIHByb3h5VXJsOiBzdHJpbmcpOiBIdHRwUmVxdWVzdCB7XG4gIGNvbnN0IGhlYWRlcnM6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICdzYWxlc2ZvcmNlcHJveHktZW5kcG9pbnQnOiByZXEudXJsLFxuICB9O1xuICBpZiAocmVxLmhlYWRlcnMpIHtcbiAgICBmb3IgKGNvbnN0IG5hbWUgb2YgT2JqZWN0LmtleXMocmVxLmhlYWRlcnMpKSB7XG4gICAgICBoZWFkZXJzW25hbWVdID0gcmVxLmhlYWRlcnNbbmFtZV07XG4gICAgfVxuICB9XG4gIGNvbnN0IG5vY2FjaGUgPSBgJHtEYXRlLm5vdygpfS4ke1N0cmluZyhNYXRoLnJhbmRvbSgpKS5zdWJzdHJpbmcoMil9YDtcbiAgcmV0dXJuIHtcbiAgICBtZXRob2Q6IHJlcS5tZXRob2QsXG4gICAgdXJsOiBgJHtwcm94eVVybH0/JHtub2NhY2hlfWAsXG4gICAgaGVhZGVycyxcbiAgICAuLi4ocmVxLmJvZHkgIT0gbnVsbCA/IHsgYm9keTogcmVxLmJvZHkgfSA6IHt9KSxcbiAgfTtcbn1cblxuLyoqXG4gKiBDbGFzcyBmb3IgSFRUUCByZXF1ZXN0IHRyYW5zcG9ydCB1c2luZyBjcm9zcy1kb21haW4gQUpBWCBwcm94eSBzZXJ2aWNlXG4gKi9cbmV4cG9ydCBjbGFzcyBYZFByb3h5VHJhbnNwb3J0IGV4dGVuZHMgVHJhbnNwb3J0IHtcbiAgX3hkUHJveHlVcmw6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcih4ZFByb3h5VXJsOiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX3hkUHJveHlVcmwgPSB4ZFByb3h5VXJsO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ha2UgSFRUUCByZXF1ZXN0IHZpYSBBSkFYIHByb3h5XG4gICAqL1xuICBodHRwUmVxdWVzdChyZXE6IEh0dHBSZXF1ZXN0LCBfb3B0aW9uczogSHR0cFJlcXVlc3RPcHRpb25zID0ge30pIHtcbiAgICBjb25zdCB4ZFByb3h5VXJsID0gdGhpcy5feGRQcm94eVVybDtcbiAgICBjb25zdCB7IHVybCwgYm9keSwgLi4ucnJlcSB9ID0gcmVxO1xuICAgIGNvbnN0IGNhbm9uaWNhbFVybCA9IHVybC5zdGFydHNXaXRoKCcvJykgPyBiYXNlVXJsICsgdXJsIDogdXJsO1xuICAgIGNvbnN0IHhkUHJveHlSZXEgPSBjcmVhdGVYZFByb3h5UmVxdWVzdChcbiAgICAgIHsgLi4ucnJlcSwgdXJsOiBjYW5vbmljYWxVcmwsIGJvZHkgfSxcbiAgICAgIHhkUHJveHlVcmwsXG4gICAgKTtcbiAgICByZXR1cm4gc3VwZXIuaHR0cFJlcXVlc3QoeGRQcm94eVJlcSwge1xuICAgICAgZm9sbG93UmVkaXJlY3Q6IChyZWRpcmVjdFVybCkgPT5cbiAgICAgICAgY3JlYXRlWGRQcm94eVJlcXVlc3QoXG4gICAgICAgICAgeyAuLi5ycmVxLCBtZXRob2Q6ICdHRVQnLCB1cmw6IHJlZGlyZWN0VXJsIH0sXG4gICAgICAgICAgeGRQcm94eVVybCxcbiAgICAgICAgKSxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIENsYXNzIGZvciBIVFRQIHJlcXVlc3QgdHJhbnNwb3J0IHVzaW5nIGEgcHJveHkgc2VydmVyXG4gKi9cbmV4cG9ydCBjbGFzcyBIdHRwUHJveHlUcmFuc3BvcnQgZXh0ZW5kcyBUcmFuc3BvcnQge1xuICBfaHR0cFByb3h5OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoaHR0cFByb3h5OiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX2h0dHBQcm94eSA9IGh0dHBQcm94eTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIEhUVFAgcmVxdWVzdCB2aWEgcHJveHkgc2VydmVyXG4gICAqL1xuICBodHRwUmVxdWVzdChyZXE6IEh0dHBSZXF1ZXN0LCBvcHRpb25zXzogSHR0cFJlcXVlc3RPcHRpb25zID0ge30pIHtcbiAgICBjb25zdCBvcHRpb25zID0geyAuLi5vcHRpb25zXywgaHR0cFByb3h5OiB0aGlzLl9odHRwUHJveHkgfTtcbiAgICByZXR1cm4gc3VwZXIuaHR0cFJlcXVlc3QocmVxLCBvcHRpb25zKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBUcmFuc3BvcnQ7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7O0FBRUEsT0FBT0EsT0FBTyxJQUFJQyxXQUFXLFFB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