@tricoteuses/assemblee 1.1.12 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/lib/bugs/agenda-00011.js +4 -5
- package/lib/bugs/agenda-00011.mjs +1 -2
- package/lib/bugs.js +3 -1
- package/lib/cleaners/actes_legislatifs.js +3 -1
- package/lib/cleaners/acteurs.js +3 -1
- package/lib/cleaners/amendements.js +3 -1
- package/lib/cleaners/documents.js +3 -1
- package/lib/cleaners/dossiers_legislatifs.js +3 -1
- package/lib/cleaners/reunions.js +2 -1
- package/lib/cleaners/scrutins.js +3 -1
- package/lib/cleaners/xml.js +3 -1
- package/lib/dates.js +1 -1
- package/lib/dossiers_legislatifs.d.ts +2 -1
- package/lib/dossiers_legislatifs.js +45 -2
- package/lib/dossiers_legislatifs.mjs +7 -1
- package/lib/file_systems.js +4 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.js +13 -1
- package/lib/index.mjs +3 -3
- package/lib/inserters.js +3 -1
- package/lib/loaders.js +4 -1
- package/lib/parsers/documents.js +3 -1
- package/lib/parsers/recherche_amendements.js +4 -5
- package/lib/parsers/recherche_amendements.mjs +1 -2
- package/lib/raw_types/acteurs_et_organes.js +2 -1
- package/lib/raw_types/agendas.js +2 -1
- package/lib/raw_types/amendements.d.ts +1 -1
- package/lib/raw_types/amendements.js +3 -2
- package/lib/raw_types/amendements.mjs +2 -2
- package/lib/raw_types/debats.js +2 -1
- package/lib/raw_types/dossiers_legislatifs.js +2 -1
- package/lib/raw_types/questions.js +2 -1
- package/lib/raw_types/scrutins.js +2 -1
- package/lib/scripts/bugs_helper.js +3 -1
- package/lib/scripts/clean_reorganized_data.js +4 -2
- package/lib/scripts/clean_reorganized_data.mjs +2 -2
- package/lib/scripts/diff_amendements.js +3 -1
- package/lib/scripts/document_dossiers_legislatifs.js +2 -1
- package/lib/scripts/merge_scrutins.js +4 -1
- package/lib/scripts/parse_textes_lois.js +3 -1
- package/lib/scripts/raw_types_from_amendements.js +3 -1
- package/lib/scripts/reorganize_data.js +4 -2
- package/lib/scripts/reorganize_data.mjs +2 -2
- package/lib/scripts/retrieve_deputes_photos.js +4 -3
- package/lib/scripts/retrieve_deputes_photos.mjs +1 -2
- package/lib/scripts/retrieve_documents.js +342 -521
- package/lib/scripts/retrieve_documents.mjs +180 -229
- package/lib/scripts/retrieve_open_data.js +4 -4
- package/lib/scripts/retrieve_open_data.mjs +2 -3
- package/lib/scripts/retrieve_pending_amendments.js +3 -1
- package/lib/scripts/retrieve_senateurs_photos.js +5 -4
- package/lib/scripts/retrieve_senateurs_photos.mjs +2 -3
- package/lib/scripts/retrieve_textes_lois.js +7 -4
- package/lib/scripts/retrieve_textes_lois.mjs +5 -2
- package/lib/scripts/validate_json.js +3 -1
- package/lib/types/acteurs_et_organes.js +2 -1
- package/lib/types/agendas.js +2 -1
- package/lib/types/amendements.d.ts +1 -1
- package/lib/types/amendements.js +3 -2
- package/lib/types/amendements.mjs +2 -2
- package/lib/types/debats.js +2 -1
- package/lib/types/dossiers_legislatifs.js +2 -1
- package/lib/types/questions.js +2 -1
- package/lib/types/scrutins.js +2 -1
- package/lib/urls.d.ts +8 -2
- package/lib/urls.js +153 -23
- package/lib/urls.mjs +97 -22
- package/package.json +3 -5
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
4
|
+
require("core-js/modules/es.array.slice.js");
|
|
4
5
|
require("core-js/modules/es.function.name.js");
|
|
5
6
|
require("core-js/modules/es.array.from.js");
|
|
6
|
-
require("core-js/modules/es.
|
|
7
|
+
require("core-js/modules/es.regexp.exec.js");
|
|
8
|
+
require("core-js/modules/es.symbol.js");
|
|
9
|
+
require("core-js/modules/es.symbol.description.js");
|
|
7
10
|
require("core-js/modules/es.symbol.iterator.js");
|
|
8
|
-
require("core-js/modules/es.array.iterator.js");
|
|
9
|
-
require("core-js/modules/web.dom-collections.iterator.js");
|
|
10
11
|
require("core-js/modules/es.array.is-array.js");
|
|
11
|
-
require("core-js/modules/es.
|
|
12
|
+
require("core-js/modules/es.object.define-property.js");
|
|
12
13
|
require("core-js/modules/es.symbol.async-iterator.js");
|
|
13
14
|
require("core-js/modules/es.symbol.to-string-tag.js");
|
|
14
15
|
require("core-js/modules/es.json.to-string-tag.js");
|
|
@@ -21,553 +22,373 @@ require("core-js/modules/es.object.set-prototype-of.js");
|
|
|
21
22
|
require("core-js/modules/es.array.reverse.js");
|
|
22
23
|
require("core-js/modules/es.weak-map.js");
|
|
23
24
|
require("core-js/modules/es.object.get-own-property-descriptor.js");
|
|
24
|
-
require("core-js/modules/es.array.concat.js");
|
|
25
|
-
require("core-js/modules/es.array.map.js");
|
|
26
|
-
require("core-js/modules/es.date.to-string.js");
|
|
27
25
|
require("core-js/modules/es.object.to-string.js");
|
|
28
|
-
require("core-js/modules/es.
|
|
29
|
-
require("core-js/modules/es.array.slice.js");
|
|
26
|
+
require("core-js/modules/es.promise.js");
|
|
30
27
|
require("core-js/modules/es.array.join.js");
|
|
31
|
-
require("core-js/modules/es.
|
|
28
|
+
require("core-js/modules/es.string.iterator.js");
|
|
29
|
+
require("core-js/modules/es.array.iterator.js");
|
|
30
|
+
require("core-js/modules/web.dom-collections.iterator.js");
|
|
31
|
+
require("core-js/modules/es.array.find.js");
|
|
32
|
+
require("core-js/modules/es.array.concat.js");
|
|
32
33
|
require("core-js/modules/es.string.starts-with.js");
|
|
33
|
-
require("core-js/modules/es.
|
|
34
|
-
require("core-js/modules/es.string.
|
|
35
|
-
require("
|
|
36
|
-
require("
|
|
37
|
-
require("core-js/modules/es.date.to-primitive.js");
|
|
38
|
-
require("core-js/modules/es.symbol.js");
|
|
39
|
-
require("core-js/modules/es.symbol.description.js");
|
|
40
|
-
require("core-js/modules/es.number.constructor.js");
|
|
34
|
+
require("core-js/modules/es.date.to-string.js");
|
|
35
|
+
require("core-js/modules/es.regexp.to-string.js");
|
|
36
|
+
var _assert = _interopRequireDefault(require("assert"));
|
|
37
|
+
var _child_process = require("child_process");
|
|
41
38
|
var _commandLineArgs = _interopRequireDefault(require("command-line-args"));
|
|
42
|
-
var
|
|
43
|
-
var git = _interopRequireWildcard(require("../../src/git"));
|
|
39
|
+
var _crypto = require("crypto");
|
|
44
40
|
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
45
41
|
var _path = _interopRequireDefault(require("path"));
|
|
46
|
-
var
|
|
42
|
+
var _dossiers_legislatifs = require("../dossiers_legislatifs");
|
|
43
|
+
var git = _interopRequireWildcard(require("../git"));
|
|
44
|
+
var _loaders = require("../loaders");
|
|
47
45
|
var _urls = require("../urls");
|
|
48
46
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
49
47
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
50
48
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
51
|
-
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
52
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
53
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
54
|
-
function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
|
|
55
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
56
49
|
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) keys.push(key); return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
|
|
57
|
-
function
|
|
58
|
-
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
59
|
-
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
60
|
-
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
61
|
-
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
62
|
-
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
63
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
50
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
64
51
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
65
52
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
66
|
-
function
|
|
67
|
-
function
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
content: "Retrieve documents"
|
|
125
|
-
}, {
|
|
126
|
-
header: "Options",
|
|
127
|
-
optionList: optionsDefinitions
|
|
128
|
-
}];
|
|
129
|
-
var options = (0, _commandLineArgs["default"])(optionsDefinitions, {
|
|
130
|
-
argv: argv
|
|
131
|
-
});
|
|
132
|
-
if ("help" in options) {
|
|
133
|
-
var usage = (0, _commandLineUsage["default"])(sections);
|
|
134
|
-
console.warn(usage);
|
|
135
|
-
return null;
|
|
136
|
-
}
|
|
137
|
-
return options;
|
|
53
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
54
|
+
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
55
|
+
var optionsDefinitions = [{
|
|
56
|
+
alias: "c",
|
|
57
|
+
help: "commit documents",
|
|
58
|
+
name: "commit",
|
|
59
|
+
type: Boolean
|
|
60
|
+
}, {
|
|
61
|
+
alias: "f",
|
|
62
|
+
help: "retrieve all documents, even already retrieved ones",
|
|
63
|
+
name: "full",
|
|
64
|
+
type: Boolean
|
|
65
|
+
}, {
|
|
66
|
+
alias: "l",
|
|
67
|
+
defaultValue: "16",
|
|
68
|
+
help: 'legislatures to retrieve, "*" for all',
|
|
69
|
+
name: "legislature",
|
|
70
|
+
type: String
|
|
71
|
+
}, {
|
|
72
|
+
alias: "n",
|
|
73
|
+
help: "try to also retrieve documents that were previously not found",
|
|
74
|
+
name: "not-found",
|
|
75
|
+
type: Boolean
|
|
76
|
+
}, {
|
|
77
|
+
alias: "p",
|
|
78
|
+
help: "pull repositories before proceeding",
|
|
79
|
+
name: "pull",
|
|
80
|
+
type: Boolean
|
|
81
|
+
}, {
|
|
82
|
+
alias: "r",
|
|
83
|
+
help: "push commit to given remote",
|
|
84
|
+
multiple: true,
|
|
85
|
+
name: "remote",
|
|
86
|
+
type: String
|
|
87
|
+
}, {
|
|
88
|
+
alias: "s",
|
|
89
|
+
help: "don't log anything",
|
|
90
|
+
name: "silent",
|
|
91
|
+
type: Boolean
|
|
92
|
+
}, {
|
|
93
|
+
alias: "u",
|
|
94
|
+
help: "UID of first Assemblée's document or division to retrieve",
|
|
95
|
+
name: "uid",
|
|
96
|
+
type: String
|
|
97
|
+
}, {
|
|
98
|
+
alias: "v",
|
|
99
|
+
help: "verbose logs",
|
|
100
|
+
name: "verbose",
|
|
101
|
+
type: Boolean
|
|
102
|
+
}, {
|
|
103
|
+
defaultOption: true,
|
|
104
|
+
help: "directory containing Assemblée open data files",
|
|
105
|
+
name: "dataDir",
|
|
106
|
+
type: String
|
|
107
|
+
}];
|
|
108
|
+
var options = (0, _commandLineArgs["default"])(optionsDefinitions);
|
|
109
|
+
function retrieveDocuments() {
|
|
110
|
+
return _retrieveDocuments.apply(this, arguments);
|
|
138
111
|
}
|
|
139
|
-
|
|
140
|
-
function
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
112
|
+
function _retrieveDocuments() {
|
|
113
|
+
_retrieveDocuments = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
114
|
+
var dataDir, documentsDir, _iterator, _step, filename, firstUid, skip, _iterator2, _step2, document, _iterator3, _step3, documentOrDivision, documentDir, filenameBySha256, indexPath, index, _iterator4, _step4, _loop, _ret;
|
|
115
|
+
return _regeneratorRuntime().wrap(function _callee$(_context2) {
|
|
116
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
117
|
+
case 0:
|
|
118
|
+
(0, _assert["default"])(!options.commit || options.uid, 'Options "commit" & "uid" are incompatible');
|
|
119
|
+
dataDir = options.dataDir;
|
|
120
|
+
documentsDir = _path["default"].join(dataDir, "Documents");
|
|
121
|
+
if (options.pull) {
|
|
122
|
+
(0, _child_process.execSync)("git reset --hard origin/master", {
|
|
123
|
+
cwd: documentsDir,
|
|
124
|
+
env: process.env,
|
|
125
|
+
encoding: "utf-8",
|
|
126
|
+
stdio: ["ignore", "ignore", "pipe"]
|
|
127
|
+
});
|
|
128
|
+
(0, _child_process.execSync)("git pull --rebase", {
|
|
129
|
+
cwd: documentsDir,
|
|
130
|
+
env: process.env,
|
|
131
|
+
encoding: "utf-8",
|
|
132
|
+
stdio: ["ignore", "ignore", "pipe"]
|
|
133
|
+
});
|
|
156
134
|
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
135
|
+
_fsExtra["default"].ensureDirSync(documentsDir);
|
|
136
|
+
if (!(options.full && !options.uid)) {
|
|
137
|
+
_context2.next = 24;
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
_iterator = _createForOfIteratorHelper(_fsExtra["default"].readdirSync(documentsDir));
|
|
141
|
+
_context2.prev = 7;
|
|
142
|
+
_iterator.s();
|
|
143
|
+
case 9:
|
|
144
|
+
if ((_step = _iterator.n()).done) {
|
|
145
|
+
_context2.next = 16;
|
|
146
|
+
break;
|
|
147
|
+
}
|
|
148
|
+
filename = _step.value;
|
|
149
|
+
if (!(filename[0] === ".")) {
|
|
150
|
+
_context2.next = 13;
|
|
151
|
+
break;
|
|
152
|
+
}
|
|
153
|
+
return _context2.abrupt("continue", 14);
|
|
154
|
+
case 13:
|
|
155
|
+
_fsExtra["default"].removeSync(_path["default"].join(documentsDir, filename));
|
|
156
|
+
case 14:
|
|
157
|
+
_context2.next = 9;
|
|
158
|
+
break;
|
|
159
|
+
case 16:
|
|
160
|
+
_context2.next = 21;
|
|
161
|
+
break;
|
|
162
|
+
case 18:
|
|
163
|
+
_context2.prev = 18;
|
|
164
|
+
_context2.t0 = _context2["catch"](7);
|
|
165
|
+
_iterator.e(_context2.t0);
|
|
166
|
+
case 21:
|
|
167
|
+
_context2.prev = 21;
|
|
160
168
|
_iterator.f();
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
})));else return [document];
|
|
173
|
-
}
|
|
174
|
-
}, {
|
|
175
|
-
key: "commitAndPush",
|
|
176
|
-
value: function () {
|
|
177
|
-
var _commitAndPush = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(repositoryDir) {
|
|
178
|
-
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
179
|
-
while (1) switch (_context.prev = _context.next) {
|
|
180
|
-
case 0:
|
|
181
|
-
if (!(this.options.commit == undefined)) {
|
|
182
|
-
_context.next = 2;
|
|
183
|
-
break;
|
|
184
|
-
}
|
|
185
|
-
return _context.abrupt("return");
|
|
186
|
-
case 2:
|
|
187
|
-
git.commit(repositoryDir, "Nouvelle moisson");
|
|
188
|
-
if (!(this.options.remote == undefined)) {
|
|
189
|
-
_context.next = 5;
|
|
190
|
-
break;
|
|
191
|
-
}
|
|
192
|
-
return _context.abrupt("return");
|
|
193
|
-
case 5:
|
|
194
|
-
git.run(repositoryDir, "push ".concat(this.options.remote, " HEAD:master"));
|
|
195
|
-
case 6:
|
|
196
|
-
case "end":
|
|
197
|
-
return _context.stop();
|
|
169
|
+
return _context2.finish(21);
|
|
170
|
+
case 24:
|
|
171
|
+
firstUid = options.uid;
|
|
172
|
+
skip = Boolean(firstUid);
|
|
173
|
+
_iterator2 = _createForOfIteratorHelper((0, _loaders.iterLoadAssembleeDocuments)(dataDir, options.legislature));
|
|
174
|
+
_context2.prev = 27;
|
|
175
|
+
_iterator2.s();
|
|
176
|
+
case 29:
|
|
177
|
+
if ((_step2 = _iterator2.n()).done) {
|
|
178
|
+
_context2.next = 81;
|
|
179
|
+
break;
|
|
198
180
|
}
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
key: "getUrls",
|
|
208
|
-
value: function getUrls(divisionOrDocument, format) {
|
|
209
|
-
var ext = format == "html" ? "raw" : "pdf";
|
|
210
|
-
var urls = ["http://www.assemblee-nationale.fr/dyn/docs/".concat(divisionOrDocument.uid, ".").concat(ext)];
|
|
211
|
-
if (format == "html") {
|
|
212
|
-
urls.push((0, _urls.urlFromDocument)(divisionOrDocument, _urls.DocumentUrlFormat.RawHtml));
|
|
213
|
-
urls.push((0, _urls.urlFromDocument)(divisionOrDocument, _urls.DocumentUrlFormat.Html));
|
|
214
|
-
} else if (format == "pdf") {
|
|
215
|
-
urls.push((0, _urls.urlFromDocument)(divisionOrDocument, _urls.DocumentUrlFormat.Pdf));
|
|
216
|
-
}
|
|
217
|
-
return urls;
|
|
218
|
-
}
|
|
219
|
-
}, {
|
|
220
|
-
key: "needsDownload",
|
|
221
|
-
value: function () {
|
|
222
|
-
var _needsDownload = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(filePath, uid) {
|
|
223
|
-
var isNotEmpty, retryFailed, urlPath, url;
|
|
224
|
-
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
225
|
-
while (1) switch (_context2.prev = _context2.next) {
|
|
226
|
-
case 0:
|
|
227
|
-
if (!_fsExtra["default"].existsSync(filePath)) {
|
|
228
|
-
_context2.next = 6;
|
|
229
|
-
break;
|
|
230
|
-
}
|
|
231
|
-
isNotEmpty = _fsExtra["default"].statSync(filePath).size > 0;
|
|
232
|
-
retryFailed = "retry-failed" in this.options;
|
|
233
|
-
if (!(!retryFailed || isNotEmpty)) {
|
|
234
|
-
_context2.next = 6;
|
|
235
|
-
break;
|
|
236
|
-
}
|
|
237
|
-
if (this.options.verbose) {
|
|
238
|
-
if (isNotEmpty) {
|
|
239
|
-
urlPath = "".concat(filePath, ".url");
|
|
240
|
-
if (_fsExtra["default"].existsSync(urlPath)) url = _fsExtra["default"].readFileSync(urlPath).toString();else url = "<unknown url>";
|
|
241
|
-
console.log("".concat(uid, ": Cached OK ").concat(filePath, " from ").concat(url));
|
|
242
|
-
} else {
|
|
243
|
-
console.log("".concat(uid, ": Cached FAIL ").concat(filePath));
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
return _context2.abrupt("return", false);
|
|
247
|
-
case 6:
|
|
248
|
-
return _context2.abrupt("return", true);
|
|
249
|
-
case 7:
|
|
250
|
-
case "end":
|
|
251
|
-
return _context2.stop();
|
|
181
|
+
document = _step2.value.document;
|
|
182
|
+
_iterator3 = _createForOfIteratorHelper((0, _dossiers_legislatifs.walkDocumentAndDivisions)(document));
|
|
183
|
+
_context2.prev = 32;
|
|
184
|
+
_iterator3.s();
|
|
185
|
+
case 34:
|
|
186
|
+
if ((_step3 = _iterator3.n()).done) {
|
|
187
|
+
_context2.next = 71;
|
|
188
|
+
break;
|
|
252
189
|
}
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
190
|
+
documentOrDivision = _step3.value;
|
|
191
|
+
if (!(documentOrDivision.uid.substring(4, 6) === "SN")) {
|
|
192
|
+
_context2.next = 38;
|
|
193
|
+
break;
|
|
194
|
+
}
|
|
195
|
+
return _context2.abrupt("continue", 69);
|
|
196
|
+
case 38:
|
|
197
|
+
if (!skip) {
|
|
198
|
+
_context2.next = 44;
|
|
199
|
+
break;
|
|
200
|
+
}
|
|
201
|
+
if (!(documentOrDivision.uid === firstUid)) {
|
|
202
|
+
_context2.next = 43;
|
|
203
|
+
break;
|
|
204
|
+
}
|
|
205
|
+
skip = false;
|
|
206
|
+
_context2.next = 44;
|
|
207
|
+
break;
|
|
208
|
+
case 43:
|
|
209
|
+
return _context2.abrupt("continue", 69);
|
|
210
|
+
case 44:
|
|
211
|
+
documentDir = (0, _loaders.pathFromDocumentUid)(documentsDir, documentOrDivision.uid);
|
|
212
|
+
_fsExtra["default"].ensureDirSync(documentDir);
|
|
213
|
+
filenameBySha256 = {};
|
|
214
|
+
indexPath = _path["default"].join(documentDir, "index.json");
|
|
215
|
+
index = _fsExtra["default"].pathExistsSync(indexPath) ? _fsExtra["default"].readJsonSync(indexPath) : {};
|
|
216
|
+
_iterator4 = _createForOfIteratorHelper((0, _urls.iterDocumentOrDivisionUrls)(documentOrDivision));
|
|
217
|
+
_context2.prev = 50;
|
|
218
|
+
_loop = /*#__PURE__*/_regeneratorRuntime().mark(function _loop() {
|
|
219
|
+
var _step4$value, format, type, url, fileInfos, filename, response, filePath, arrayBuffer, buffer, sha256, existingFilename;
|
|
220
|
+
return _regeneratorRuntime().wrap(function _loop$(_context) {
|
|
221
|
+
while (1) switch (_context.prev = _context.next) {
|
|
222
|
+
case 0:
|
|
223
|
+
_step4$value = _step4.value, format = _step4$value.format, type = _step4$value.type, url = _step4$value.url;
|
|
224
|
+
if (index[format] === undefined) {
|
|
225
|
+
index[format] = [];
|
|
226
|
+
}
|
|
227
|
+
fileInfos = index[format].find(function (fileInfos) {
|
|
228
|
+
return fileInfos.url === url;
|
|
229
|
+
});
|
|
230
|
+
if (fileInfos === undefined) {
|
|
231
|
+
fileInfos = {};
|
|
232
|
+
index[format].push(fileInfos);
|
|
233
|
+
}
|
|
234
|
+
fileInfos.url = url;
|
|
235
|
+
filename = "".concat(type, ".").concat(format === _urls.DocumentUrlFormat.Pdf ? "pdf" : "html");
|
|
236
|
+
if (!(fileInfos.status === 200 && !options.full)) {
|
|
237
|
+
_context.next = 9;
|
|
238
|
+
break;
|
|
239
|
+
}
|
|
240
|
+
filenameBySha256[fileInfos.sha256] = filename;
|
|
241
|
+
return _context.abrupt("return", "continue");
|
|
242
|
+
case 9:
|
|
243
|
+
if (!(fileInfos.status === 404 && !options["not-found"])) {
|
|
244
|
+
_context.next = 11;
|
|
245
|
+
break;
|
|
246
|
+
}
|
|
247
|
+
return _context.abrupt("return", "continue");
|
|
248
|
+
case 11:
|
|
249
|
+
if (!options.silent) {
|
|
250
|
+
console.log("Retrieving document or division ".concat(documentOrDivision.uid, " at ").concat(url, "\u2026"));
|
|
251
|
+
}
|
|
252
|
+
_context.next = 14;
|
|
253
|
+
return fetch(url);
|
|
254
|
+
case 14:
|
|
255
|
+
response = _context.sent;
|
|
256
|
+
filePath = _path["default"].join(documentDir, filename);
|
|
257
|
+
if (!response.ok) {
|
|
258
|
+
_context.next = 24;
|
|
259
|
+
break;
|
|
260
|
+
}
|
|
261
|
+
_context.next = 19;
|
|
262
|
+
return response.arrayBuffer();
|
|
263
|
+
case 19:
|
|
264
|
+
arrayBuffer = _context.sent;
|
|
265
|
+
buffer = Buffer.from(arrayBuffer);
|
|
266
|
+
if (format === _urls.DocumentUrlFormat.Pdf && !buffer.subarray(0, 4).toString().startsWith("%PDF")) {
|
|
267
|
+
// Instead of a PDF, the received data may be an HTML page with a message like
|
|
268
|
+
// "Document non encore publié".
|
|
269
|
+
if (!options.silent) {
|
|
270
|
+
console.warn(" PDF \"".concat(url, "\" not found."));
|
|
271
|
+
}
|
|
272
|
+
_fsExtra["default"].removeSync(filePath);
|
|
273
|
+
delete fileInfos.filename;
|
|
274
|
+
delete fileInfos.sha256;
|
|
275
|
+
} else {
|
|
276
|
+
sha256 = (0, _crypto.createHash)("sha256").update(buffer).digest("hex");
|
|
277
|
+
existingFilename = filenameBySha256[sha256];
|
|
278
|
+
if (existingFilename === undefined) {
|
|
279
|
+
_fsExtra["default"].createWriteStream(filePath).write(buffer);
|
|
280
|
+
fileInfos.filename = filename;
|
|
281
|
+
filenameBySha256[sha256] = filename;
|
|
282
|
+
} else {
|
|
283
|
+
fileInfos.filename = existingFilename;
|
|
284
|
+
}
|
|
285
|
+
fileInfos.sha256 = sha256;
|
|
286
|
+
}
|
|
287
|
+
_context.next = 28;
|
|
288
|
+
break;
|
|
289
|
+
case 24:
|
|
290
|
+
if (response.status === 404) {
|
|
291
|
+
if (!options.silent) {
|
|
292
|
+
console.warn(" Page \"".concat(url, "\" not found."));
|
|
293
|
+
}
|
|
294
|
+
} else {
|
|
295
|
+
console.error(" Error:\n".concat(JSON.stringify({
|
|
282
296
|
code: response.status,
|
|
283
297
|
message: response.statusText
|
|
284
298
|
}, null, 2)));
|
|
285
299
|
}
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
_fsExtra["default"].writeFileSync(filePath, page);
|
|
300
|
+
_fsExtra["default"].removeSync(filePath);
|
|
301
|
+
delete fileInfos.filename;
|
|
302
|
+
delete fileInfos.sha256;
|
|
303
|
+
case 28:
|
|
304
|
+
fileInfos.status = response.status;
|
|
305
|
+
case 29:
|
|
306
|
+
case "end":
|
|
307
|
+
return _context.stop();
|
|
295
308
|
}
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
function get(_x4, _x5, _x6, _x7) {
|
|
304
|
-
return _get.apply(this, arguments);
|
|
305
|
-
}
|
|
306
|
-
return get;
|
|
307
|
-
}()
|
|
308
|
-
}, {
|
|
309
|
-
key: "download",
|
|
310
|
-
value: function () {
|
|
311
|
-
var _download = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(textesDir, divisionOrDocument, format) {
|
|
312
|
-
var uid, filePath, success, info, url, _iterator2, _step2, status, urlPath;
|
|
313
|
-
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
314
|
-
while (1) switch (_context4.prev = _context4.next) {
|
|
315
|
-
case 0:
|
|
316
|
-
uid = divisionOrDocument.uid;
|
|
317
|
-
filePath = "".concat(textesDir, "/uid/").concat(uid, ".").concat(format);
|
|
318
|
-
_context4.next = 4;
|
|
319
|
-
return this.needsDownload(filePath, uid);
|
|
320
|
-
case 4:
|
|
321
|
-
if (_context4.sent) {
|
|
322
|
-
_context4.next = 6;
|
|
323
|
-
break;
|
|
324
|
-
}
|
|
325
|
-
return _context4.abrupt("return", 0);
|
|
326
|
-
case 6:
|
|
327
|
-
if (this.options.verbose) console.log("".concat(uid, ": Checking ").concat(filePath));
|
|
328
|
-
success = false;
|
|
329
|
-
info = "";
|
|
330
|
-
_iterator2 = _createForOfIteratorHelper(this.getUrls(divisionOrDocument, format));
|
|
331
|
-
_context4.prev = 10;
|
|
332
|
-
_iterator2.s();
|
|
333
|
-
case 12:
|
|
334
|
-
if ((_step2 = _iterator2.n()).done) {
|
|
335
|
-
_context4.next = 29;
|
|
336
|
-
break;
|
|
337
|
-
}
|
|
338
|
-
url = _step2.value;
|
|
339
|
-
if (!("dry-run" in this.options)) {
|
|
340
|
-
_context4.next = 19;
|
|
341
|
-
break;
|
|
342
|
-
}
|
|
343
|
-
info += " * ".concat(url, "\n");
|
|
344
|
-
return _context4.abrupt("continue", 27);
|
|
345
|
-
case 19:
|
|
346
|
-
info += " * ".concat(url, " ");
|
|
347
|
-
case 20:
|
|
348
|
-
_context4.next = 22;
|
|
349
|
-
return this.get(url, filePath, format, uid);
|
|
350
|
-
case 22:
|
|
351
|
-
status = _context4.sent;
|
|
352
|
-
info += "".concat(status, "\n");
|
|
353
|
-
if (!(status == "OK")) {
|
|
354
|
-
_context4.next = 27;
|
|
355
|
-
break;
|
|
356
|
-
}
|
|
357
|
-
success = true;
|
|
358
|
-
return _context4.abrupt("break", 29);
|
|
359
|
-
case 27:
|
|
360
|
-
_context4.next = 12;
|
|
361
|
-
break;
|
|
362
|
-
case 29:
|
|
363
|
-
_context4.next = 34;
|
|
364
|
-
break;
|
|
365
|
-
case 31:
|
|
366
|
-
_context4.prev = 31;
|
|
367
|
-
_context4.t0 = _context4["catch"](10);
|
|
368
|
-
_iterator2.e(_context4.t0);
|
|
369
|
-
case 34:
|
|
370
|
-
_context4.prev = 34;
|
|
371
|
-
_iterator2.f();
|
|
372
|
-
return _context4.finish(34);
|
|
373
|
-
case 37:
|
|
374
|
-
urlPath = "".concat(filePath, ".url");
|
|
375
|
-
if (success) {
|
|
376
|
-
_fsExtra["default"].writeFileSync(urlPath, url);
|
|
377
|
-
} else if (_fsExtra["default"].existsSync(urlPath)) {
|
|
378
|
-
_fsExtra["default"].unlinkSync(urlPath);
|
|
379
|
-
}
|
|
380
|
-
if (!(info != "" && !this.options.silent)) {
|
|
381
|
-
_context4.next = 44;
|
|
382
|
-
break;
|
|
383
|
-
}
|
|
384
|
-
console.log("* ".concat(Retrieve.urlFromUid(uid), ": Retrieving ").concat(filePath, "\n").concat(info.slice(0, -1)));
|
|
385
|
-
return _context4.abrupt("return", 1);
|
|
386
|
-
case 44:
|
|
387
|
-
return _context4.abrupt("return", 0);
|
|
388
|
-
case 45:
|
|
389
|
-
case "end":
|
|
390
|
-
return _context4.stop();
|
|
309
|
+
}, _loop);
|
|
310
|
+
});
|
|
311
|
+
_iterator4.s();
|
|
312
|
+
case 53:
|
|
313
|
+
if ((_step4 = _iterator4.n()).done) {
|
|
314
|
+
_context2.next = 60;
|
|
315
|
+
break;
|
|
391
316
|
}
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
}()
|
|
399
|
-
}, {
|
|
400
|
-
key: "retrieveDocuments",
|
|
401
|
-
value: function () {
|
|
402
|
-
var _retrieveDocuments = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {
|
|
403
|
-
var gitDir, textesDir, _iterator3, _step3, filename, document, _iterator4, _step4, divisionOrDocument, status, _i2, _arr2, format;
|
|
404
|
-
return _regeneratorRuntime().wrap(function _callee5$(_context5) {
|
|
405
|
-
while (1) switch (_context5.prev = _context5.next) {
|
|
406
|
-
case 0:
|
|
407
|
-
gitDir = "".concat(this.options.textes, "/.git");
|
|
408
|
-
if (_fsExtra["default"].existsSync(gitDir)) {
|
|
409
|
-
_context5.next = 4;
|
|
410
|
-
break;
|
|
411
|
-
}
|
|
412
|
-
console.error("".concat(gitDir, " is expected to exist but does not"));
|
|
413
|
-
return _context5.abrupt("return", 1);
|
|
414
|
-
case 4:
|
|
415
|
-
textesDir = _path["default"].join(this.options.textes, this.options.legislature);
|
|
416
|
-
_fsExtra["default"].ensureDirSync("".concat(textesDir, "/uid"));
|
|
417
|
-
_iterator3 = _createForOfIteratorHelper((0, _file_systems.getFiles)(this.options.data));
|
|
418
|
-
_context5.prev = 7;
|
|
419
|
-
_iterator3.s();
|
|
420
|
-
case 9:
|
|
421
|
-
if ((_step3 = _iterator3.n()).done) {
|
|
422
|
-
_context5.next = 45;
|
|
423
|
-
break;
|
|
424
|
-
}
|
|
425
|
-
filename = _step3.value;
|
|
426
|
-
document = (0, _file_systems.load)(filename);
|
|
427
|
-
if (!(/^....SN/.test(document.uid) || /^DECL/.test(document.uid))) {
|
|
428
|
-
_context5.next = 14;
|
|
429
|
-
break;
|
|
430
|
-
}
|
|
431
|
-
return _context5.abrupt("continue", 43);
|
|
432
|
-
case 14:
|
|
433
|
-
_iterator4 = _createForOfIteratorHelper(this.getDivisionsOrDocument(document));
|
|
434
|
-
_context5.prev = 15;
|
|
435
|
-
_iterator4.s();
|
|
436
|
-
case 17:
|
|
437
|
-
if ((_step4 = _iterator4.n()).done) {
|
|
438
|
-
_context5.next = 35;
|
|
439
|
-
break;
|
|
440
|
-
}
|
|
441
|
-
divisionOrDocument = _step4.value;
|
|
442
|
-
if (!/-COMPA$/.test(divisionOrDocument.uid)) {
|
|
443
|
-
_context5.next = 21;
|
|
444
|
-
break;
|
|
445
|
-
}
|
|
446
|
-
return _context5.abrupt("continue", 33);
|
|
447
|
-
case 21:
|
|
448
|
-
status = 0;
|
|
449
|
-
_i2 = 0, _arr2 = ["html", "pdf"];
|
|
450
|
-
case 23:
|
|
451
|
-
if (!(_i2 < _arr2.length)) {
|
|
452
|
-
_context5.next = 32;
|
|
453
|
-
break;
|
|
454
|
-
}
|
|
455
|
-
format = _arr2[_i2];
|
|
456
|
-
_context5.t0 = status;
|
|
457
|
-
_context5.next = 28;
|
|
458
|
-
return this.download(textesDir, divisionOrDocument, format);
|
|
459
|
-
case 28:
|
|
460
|
-
status = _context5.t0 |= _context5.sent;
|
|
461
|
-
case 29:
|
|
462
|
-
_i2++;
|
|
463
|
-
_context5.next = 23;
|
|
464
|
-
break;
|
|
465
|
-
case 32:
|
|
466
|
-
if (status && !this.options.silent) console.log("---");
|
|
467
|
-
case 33:
|
|
468
|
-
_context5.next = 17;
|
|
469
|
-
break;
|
|
470
|
-
case 35:
|
|
471
|
-
_context5.next = 40;
|
|
472
|
-
break;
|
|
473
|
-
case 37:
|
|
474
|
-
_context5.prev = 37;
|
|
475
|
-
_context5.t1 = _context5["catch"](15);
|
|
476
|
-
_iterator4.e(_context5.t1);
|
|
477
|
-
case 40:
|
|
478
|
-
_context5.prev = 40;
|
|
479
|
-
_iterator4.f();
|
|
480
|
-
return _context5.finish(40);
|
|
481
|
-
case 43:
|
|
482
|
-
_context5.next = 9;
|
|
483
|
-
break;
|
|
484
|
-
case 45:
|
|
485
|
-
_context5.next = 50;
|
|
486
|
-
break;
|
|
487
|
-
case 47:
|
|
488
|
-
_context5.prev = 47;
|
|
489
|
-
_context5.t2 = _context5["catch"](7);
|
|
490
|
-
_iterator3.e(_context5.t2);
|
|
491
|
-
case 50:
|
|
492
|
-
_context5.prev = 50;
|
|
493
|
-
_iterator3.f();
|
|
494
|
-
return _context5.finish(50);
|
|
495
|
-
case 53:
|
|
496
|
-
if ("dry-run" in this.options) {
|
|
497
|
-
_context5.next = 56;
|
|
498
|
-
break;
|
|
499
|
-
}
|
|
500
|
-
_context5.next = 56;
|
|
501
|
-
return this.commitAndPush(textesDir);
|
|
502
|
-
case 56:
|
|
503
|
-
return _context5.abrupt("return", 0);
|
|
504
|
-
case 57:
|
|
505
|
-
case "end":
|
|
506
|
-
return _context5.stop();
|
|
317
|
+
return _context2.delegateYield(_loop(), "t1", 55);
|
|
318
|
+
case 55:
|
|
319
|
+
_ret = _context2.t1;
|
|
320
|
+
if (!(_ret === "continue")) {
|
|
321
|
+
_context2.next = 58;
|
|
322
|
+
break;
|
|
507
323
|
}
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
324
|
+
return _context2.abrupt("continue", 58);
|
|
325
|
+
case 58:
|
|
326
|
+
_context2.next = 53;
|
|
327
|
+
break;
|
|
328
|
+
case 60:
|
|
329
|
+
_context2.next = 65;
|
|
330
|
+
break;
|
|
331
|
+
case 62:
|
|
332
|
+
_context2.prev = 62;
|
|
333
|
+
_context2.t2 = _context2["catch"](50);
|
|
334
|
+
_iterator4.e(_context2.t2);
|
|
335
|
+
case 65:
|
|
336
|
+
_context2.prev = 65;
|
|
337
|
+
_iterator4.f();
|
|
338
|
+
return _context2.finish(65);
|
|
339
|
+
case 68:
|
|
340
|
+
_fsExtra["default"].writeJsonSync(indexPath, index, {
|
|
341
|
+
encoding: "utf-8",
|
|
342
|
+
spaces: 2
|
|
343
|
+
});
|
|
344
|
+
case 69:
|
|
345
|
+
_context2.next = 34;
|
|
346
|
+
break;
|
|
347
|
+
case 71:
|
|
348
|
+
_context2.next = 76;
|
|
349
|
+
break;
|
|
350
|
+
case 73:
|
|
351
|
+
_context2.prev = 73;
|
|
352
|
+
_context2.t3 = _context2["catch"](32);
|
|
353
|
+
_iterator3.e(_context2.t3);
|
|
354
|
+
case 76:
|
|
355
|
+
_context2.prev = 76;
|
|
356
|
+
_iterator3.f();
|
|
357
|
+
return _context2.finish(76);
|
|
358
|
+
case 79:
|
|
359
|
+
_context2.next = 29;
|
|
360
|
+
break;
|
|
361
|
+
case 81:
|
|
362
|
+
_context2.next = 86;
|
|
363
|
+
break;
|
|
364
|
+
case 83:
|
|
365
|
+
_context2.prev = 83;
|
|
366
|
+
_context2.t4 = _context2["catch"](27);
|
|
367
|
+
_iterator2.e(_context2.t4);
|
|
368
|
+
case 86:
|
|
369
|
+
_context2.prev = 86;
|
|
370
|
+
_iterator2.f();
|
|
371
|
+
return _context2.finish(86);
|
|
372
|
+
case 89:
|
|
373
|
+
if (!options.commit) {
|
|
374
|
+
_context2.next = 91;
|
|
553
375
|
break;
|
|
554
376
|
}
|
|
555
|
-
return
|
|
556
|
-
case
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
case 5:
|
|
377
|
+
return _context2.abrupt("return", git.commitAndPush(documentsDir, "Nouvelle moisson", options.remote));
|
|
378
|
+
case 91:
|
|
379
|
+
return _context2.abrupt("return", 0);
|
|
380
|
+
case 92:
|
|
560
381
|
case "end":
|
|
561
|
-
return
|
|
382
|
+
return _context2.stop();
|
|
562
383
|
}
|
|
563
|
-
},
|
|
384
|
+
}, _callee, null, [[7, 18, 21, 24], [27, 83, 86, 89], [32, 73, 76, 79], [50, 62, 65, 68]]);
|
|
564
385
|
}));
|
|
565
|
-
return
|
|
386
|
+
return _retrieveDocuments.apply(this, arguments);
|
|
566
387
|
}
|
|
567
|
-
|
|
568
|
-
process.exit(exitCode);
|
|
388
|
+
retrieveDocuments().then(function (exitCode) {
|
|
389
|
+
return process.exit(exitCode);
|
|
569
390
|
})["catch"](function (error) {
|
|
570
|
-
console.
|
|
391
|
+
console.log(error);
|
|
571
392
|
process.exit(1);
|
|
572
393
|
});
|
|
573
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29tbWFuZExpbmVBcmdzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29tbWFuZExpbmVVc2FnZSIsImdpdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2ZzRXh0cmEiLCJfcGF0aCIsIl9maWxlX3N5c3RlbXMiLCJfdXJscyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwiX3NsaWNlZFRvQXJyYXkiLCJhcnIiLCJpIiwiX2FycmF5V2l0aEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlUmVzdCIsIlR5cGVFcnJvciIsIl9pIiwiX3MiLCJfZSIsIl94IiwiX3IiLCJfYXJyIiwiX24iLCJfZCIsIm5leHQiLCJkb25lIiwicHVzaCIsInZhbHVlIiwibGVuZ3RoIiwiZXJyIiwiQXJyYXkiLCJpc0FycmF5IiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsImV4cG9ydHMiLCJPcCIsImhhc093biIsIiRTeW1ib2wiLCJpdGVyYXRvclN5bWJvbCIsImFzeW5jSXRlcmF0b3JTeW1ib2wiLCJhc3luY0l0ZXJhdG9yIiwidG9TdHJpbmdUYWdTeW1ib2wiLCJ0b1N0cmluZ1RhZyIsImRlZmluZSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIndyYXAiLCJpbm5lckZuIiwib3V0ZXJGbiIsInNlbGYiLCJ0cnlMb2NzTGlzdCIsInByb3RvR2VuZXJhdG9yIiwiR2VuZXJhdG9yIiwiZ2VuZXJhdG9yIiwiY3JlYXRlIiwiY29udGV4dCIsIkNvbnRleHQiLCJtYWtlSW52b2tlTWV0aG9kIiwidHJ5Q2F0Y2giLCJmbiIsImFyZyIsInR5cGUiLCJDb250aW51ZVNlbnRpbmVsIiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsIkl0ZXJhdG9yUHJvdG90eXBlIiwiZ2V0UHJvdG8iLCJnZXRQcm90b3R5cGVPZiIsIk5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlIiwidmFsdWVzIiwiR3AiLCJkZWZpbmVJdGVyYXRvck1ldGhvZHMiLCJmb3JFYWNoIiwibWV0aG9kIiwiX2ludm9rZSIsIkFzeW5jSXRlcmF0b3IiLCJQcm9taXNlSW1wbCIsImludm9rZSIsInJlc29sdmUiLCJyZWplY3QiLCJyZWNvcmQiLCJyZXN1bHQiLCJfX2F3YWl0IiwidGhlbiIsInVud3JhcHBlZCIsImVycm9yIiwicHJldmlvdXNQcm9taXNlIiwiY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmciLCJzdGF0ZSIsIkVycm9yIiwiZG9uZVJlc3VsdCIsImRlbGVnYXRlIiwiZGVsZWdhdGVSZXN1bHQiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJtZXRob2ROYW1lIiwidW5kZWZpbmVkIiwiaW5mbyIsInJlc3VsdE5hbWUiLCJuZXh0TG9jIiwicHVzaFRyeUVudHJ5IiwibG9jcyIsImVudHJ5IiwidHJ5TG9jIiwiY2F0Y2hMb2MiLCJmaW5hbGx5TG9jIiwiYWZ0ZXJMb2MiLCJ0cnlFbnRyaWVzIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsIml0ZXJhYmxlIiwiaXRlcmF0b3JNZXRob2QiLCJpc05hTiIsImRpc3BsYXlOYW1lIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsImdlbkZ1biIsImN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJpdGVyIiwia2V5cyIsInZhbCIsIm9iamVjdCIsInJldmVyc2UiLCJwb3AiLCJza2lwVGVtcFJlc2V0IiwicHJldiIsImNoYXJBdCIsInNsaWNlIiwic3RvcCIsInJvb3RSZWNvcmQiLCJydmFsIiwiZXhjZXB0aW9uIiwiaGFuZGxlIiwibG9jIiwiY2F1Z2h0IiwiaGFzQ2F0Y2giLCJoYXNGaW5hbGx5IiwiZmluYWxseUVudHJ5IiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJ0aHJvd24iLCJkZWxlZ2F0ZVlpZWxkIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiZ2VuIiwiX25leHQiLCJfdGhyb3ciLCJfYXN5bmNUb0dlbmVyYXRvciIsImFyZ3MiLCJhcmd1bWVudHMiLCJhcHBseSIsIl90b0NvbnN1bWFibGVBcnJheSIsIl9hcnJheVdpdGhvdXRIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVTcHJlYWQiLCJmcm9tIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIm8iLCJhbGxvd0FycmF5TGlrZSIsIml0IiwiRiIsInMiLCJuIiwiZSIsIl9lMiIsImYiLCJub3JtYWxDb21wbGV0aW9uIiwiZGlkRXJyIiwic3RlcCIsIl9lMyIsIm1pbkxlbiIsInRvU3RyaW5nIiwidGVzdCIsImxlbiIsImFycjIiLCJfY2xhc3NDYWxsQ2hlY2siLCJpbnN0YW5jZSIsIkNvbnN0cnVjdG9yIiwiX2RlZmluZVByb3BlcnRpZXMiLCJ0YXJnZXQiLCJwcm9wcyIsImRlc2NyaXB0b3IiLCJfdG9Qcm9wZXJ0eUtleSIsIl9jcmVhdGVDbGFzcyIsInByb3RvUHJvcHMiLCJzdGF0aWNQcm9wcyIsIl9kZWZpbmVQcm9wZXJ0eSIsIl90b1ByaW1pdGl2ZSIsIlN0cmluZyIsImlucHV0IiwiaGludCIsInByaW0iLCJ0b1ByaW1pdGl2ZSIsInJlcyIsIk51bWJlciIsImZldGNoIiwicGFyc2VBcmdzIiwiYXJndiIsIm9wdGlvbnNEZWZpbml0aW9ucyIsImFsaWFzIiwiaGVscCIsIkJvb2xlYW4iLCJkZWZhdWx0VmFsdWUiLCJkZWZhdWx0T3B0aW9uIiwibXVsdGlwbGUiLCJzZWN0aW9ucyIsImhlYWRlciIsImNvbnRlbnQiLCJvcHRpb25MaXN0Iiwib3B0aW9ucyIsImNvbW1hbmRMaW5lQXJncyIsInVzYWdlIiwiY29tbWFuZExpbmVVc2FnZSIsImNvbnNvbGUiLCJ3YXJuIiwiUmV0cmlldmUiLCJnZXREaXZpc2lvbnMiLCJkaXZpc2lvbiIsImRpdmlzaW9ucyIsIl9pdGVyYXRvciIsIl9zdGVwIiwiZCIsImNvbmNhdCIsImdldERpdmlzaW9uc09yRG9jdW1lbnQiLCJkb2N1bWVudCIsIl9yZWYiLCJfdGhpcyIsIm1hcCIsIl9jb21taXRBbmRQdXNoIiwiX2NhbGxlZSIsInJlcG9zaXRvcnlEaXIiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwiY29tbWl0IiwicmVtb3RlIiwicnVuIiwiY29tbWl0QW5kUHVzaCIsImdldFVybHMiLCJkaXZpc2lvbk9yRG9jdW1lbnQiLCJmb3JtYXQiLCJleHQiLCJ1cmxzIiwidWlkIiwidXJsRnJvbURvY3VtZW50IiwiRG9jdW1lbnRVcmxGb3JtYXQiLCJSYXdIdG1sIiwiSHRtbCIsIlBkZiIsIl9uZWVkc0Rvd25sb2FkIiwiX2NhbGxlZTIiLCJmaWxlUGF0aCIsImlzTm90RW1wdHkiLCJyZXRyeUZhaWxlZCIsInVybFBhdGgiLCJ1cmwiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJmcyIsImV4aXN0c1N5bmMiLCJzdGF0U3luYyIsInNpemUiLCJ2ZXJib3NlIiwicmVhZEZpbGVTeW5jIiwibG9nIiwibmVlZHNEb3dubG9hZCIsIl94MiIsIl94MyIsIl9nZXQiLCJfY2FsbGVlMyIsInJlc3BvbnNlIiwicGFnZSIsInN0YXR1cyIsIl9SZXRyaWV2ZSRzYW5pdHlDaGVjayIsIl9SZXRyaWV2ZSRzYW5pdHlDaGVjazIiLCJfY2FsbGVlMyQiLCJfY29udGV4dDMiLCJidWZmZXIiLCJvayIsIkpTT04iLCJzdHJpbmdpZnkiLCJjb2RlIiwibWVzc2FnZSIsInN0YXR1c1RleHQiLCJ3cml0ZUZpbGVTeW5jIiwic2FuaXR5Q2hlY2tGb3JtYXQiLCJfeDQiLCJfeDUiLCJfeDYiLCJfeDciLCJfZG93bmxvYWQiLCJfY2FsbGVlNCIsInRleHRlc0RpciIsInN1Y2Nlc3MiLCJfaXRlcmF0b3IyIiwiX3N0ZXAyIiwiX2NhbGxlZTQkIiwiX2NvbnRleHQ0IiwidDAiLCJ1bmxpbmtTeW5jIiwic2lsZW50IiwidXJsRnJvbVVpZCIsImRvd25sb2FkIiwiX3g4IiwiX3g5IiwiX3gxMCIsIl9yZXRyaWV2ZURvY3VtZW50cyIsIl9jYWxsZWU1IiwiZ2l0RGlyIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsImZpbGVuYW1lIiwiX2l0ZXJhdG9yNCIsIl9zdGVwNCIsIl9pMiIsIl9hcnIyIiwiX2NhbGxlZTUkIiwiX2NvbnRleHQ1IiwidGV4dGVzIiwicGF0aCIsImpvaW4iLCJsZWdpc2xhdHVyZSIsImVuc3VyZURpclN5bmMiLCJnZXRGaWxlcyIsImRhdGEiLCJsb2FkIiwidDEiLCJ0MiIsInJldHJpZXZlRG9jdW1lbnRzIiwiTWF0aCIsIm1pbiIsImhlYWQiLCJzdGFydHNXaXRoIiwiQnVmZmVyIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiaW5jbHVkZXMiLCJtYWluIiwiX3gxMSIsIl9tYWluIiwiX2NhbGxlZTYiLCJyZXRyaWV2ZSIsIl9jYWxsZWU2JCIsIl9jb250ZXh0NiIsInByb2Nlc3MiLCJlbmRzV2l0aCIsImV4aXRDb2RlIiwiZXhpdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL3JldHJpZXZlX2RvY3VtZW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgY29tbWFuZExpbmVVc2FnZSBmcm9tIFwiY29tbWFuZC1saW5lLXVzYWdlXCJcbmltcG9ydCAqIGFzIGdpdCBmcm9tIFwiLi4vLi4vc3JjL2dpdFwiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmxldCBmZXRjaCA9IHJlcXVpcmUoXCJub2RlLWZldGNoXCIpXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5cbmltcG9ydCB7IGxvYWQsIGdldEZpbGVzIH0gZnJvbSBcIi4uL2ZpbGVfc3lzdGVtc1wiXG5pbXBvcnQgeyBEb2N1bWVudFVybEZvcm1hdCwgdXJsRnJvbURvY3VtZW50IH0gZnJvbSBcIi4uL3VybHNcIlxuXG5mdW5jdGlvbiBwYXJzZUFyZ3MoYXJndjogc3RyaW5nW10pOiBhbnkge1xuICBjb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gICAge1xuICAgICAgYWxpYXM6IFwiY1wiLFxuICAgICAgaGVscDogXCJjb21taXQgZG9jdW1lbnRzXCIsXG4gICAgICBuYW1lOiBcImNvbW1pdFwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIGhlbHA6IFwiZHJ5IHJ1blwiLFxuICAgICAgbmFtZTogXCJkcnktcnVuXCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgaGVscDogXCJyZXRyeSBmYWlsZWQgZG9jdW1lbnRzXCIsXG4gICAgICBuYW1lOiBcInJldHJ5LWZhaWxlZFwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIGhlbHA6IFwicmV0cnkgYWxsIGRvY3VtZW50c1wiLFxuICAgICAgbmFtZTogXCJyZXRyeVwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIGFsaWFzOiBcImxcIixcbiAgICAgIGRlZmF1bHRWYWx1ZTogXCIxNlwiLFxuICAgICAgbmFtZTogXCJsZWdpc2xhdHVyZVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgYWxpYXM6IFwiclwiLFxuICAgICAgaGVscDogXCJwdXNoIGNvbW1pdCB0byBnaXZlbiByZW1vdGVcIixcbiAgICAgIG5hbWU6IFwicmVtb3RlXCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBhbGlhczogXCJzXCIsXG4gICAgICBoZWxwOiBcImRvbid0IGxvZyBhbnl0aGluZ1wiLFxuICAgICAgbmFtZTogXCJzaWxlbnRcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBoZWxwOiBcInRleHRlcyBkaXJcIixcbiAgICAgIG5hbWU6IFwidGV4dGVzXCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBhbGlhczogXCJ2XCIsXG4gICAgICBoZWxwOiBcInZlcmJvc2UgbG9nc1wiLFxuICAgICAgbmFtZTogXCJ2ZXJib3NlXCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVmYXVsdE9wdGlvbjogdHJ1ZSxcbiAgICAgIGhlbHA6IFwiZmlsZXMgb3IgZ2xvYnMgdG8gZG9jdW1lbnRzXCIsXG4gICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgIG5hbWU6IFwiZGF0YVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gIF1cbiAgY29uc3Qgc2VjdGlvbnMgPSBbXG4gICAge1xuICAgICAgaGVhZGVyOiBcIlJldHJpZXZlIGRvY3VtZW50c1wiLFxuICAgICAgY29udGVudDogXCJSZXRyaWV2ZSBkb2N1bWVudHNcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGhlYWRlcjogXCJPcHRpb25zXCIsXG4gICAgICBvcHRpb25MaXN0OiBvcHRpb25zRGVmaW5pdGlvbnMsXG4gICAgfSxcbiAgXVxuICBjb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucywge1xuICAgIGFyZ3Y6IGFyZ3YsXG4gIH0pXG5cbiAgaWYgKFwiaGVscFwiIGluIG9wdGlvbnMpIHtcbiAgICBjb25zdCB1c2FnZSA9IGNvbW1hbmRMaW5lVXNhZ2Uoc2VjdGlvbnMpXG4gICAgY29uc29sZS53YXJuKHVzYWdlKVxuICAgIHJldHVybiBudWxsXG4gIH1cbiAgcmV0dXJuIG9wdGlvbnNcbn1cblxuY2xhc3MgUmV0cmlldmUge1xuICBvcHRpb25zOiBhbnlcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBhbnkpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zXG4gIH1cblxuICBnZXREaXZpc2lvbnMoZGl2aXNpb246IGFueSkge1xuICAgIGxldCBkaXZpc2lvbnMgPSBbZGl2aXNpb25dXG4gICAgaWYgKGRpdmlzaW9uLmRpdmlzaW9ucyAhPSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgZCBvZiBkaXZpc2lvbi5kaXZpc2lvbnMpXG4gICAgICAgIGRpdmlzaW9ucyA9IGRpdmlzaW9ucy5jb25jYXQodGhpcy5nZXREaXZpc2lvbnMoZCkpXG4gICAgfVxuICAgIHJldHVybiBkaXZpc2lvbnNcbiAgfVxuXG4gIGdldERpdmlzaW9uc09yRG9jdW1lbnQoZG9jdW1lbnQ6IGFueSkge1xuICAgIGlmIChkb2N1bWVudC5kaXZpc2lvbnMgIT0gdW5kZWZpbmVkKVxuICAgICAgcmV0dXJuIFtdLmNvbmNhdChcbiAgICAgICAgLi4uZG9jdW1lbnQuZGl2aXNpb25zLm1hcCgoZDogYW55KSA9PiB0aGlzLmdldERpdmlzaW9ucyhkKSksXG4gICAgICApXG4gICAgZWxzZSByZXR1cm4gW2RvY3VtZW50XVxuICB9XG5cbiAgYXN5bmMgY29tbWl0QW5kUHVzaChyZXBvc2l0b3J5RGlyOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5vcHRpb25zLmNvbW1pdCA9PSB1bmRlZmluZWQpIHJldHVyblxuICAgIGdpdC5jb21taXQocmVwb3NpdG9yeURpciwgXCJOb3V2ZWxsZSBtb2lzc29uXCIpXG5cbiAgICBpZiAodGhpcy5vcHRpb25zLnJlbW90ZSA9PSB1bmRlZmluZWQpIHJldHVyblxuICAgIGdpdC5ydW4ocmVwb3NpdG9yeURpciwgYHB1c2ggJHt0aGlzLm9wdGlvbnMucmVtb3RlfSBIRUFEOm1hc3RlcmApXG4gIH1cblxuICBnZXRVcmxzKGRpdmlzaW9uT3JEb2N1bWVudDogYW55LCBmb3JtYXQ6IHN0cmluZykge1xuICAgIGNvbnN0IGV4dCA9IGZvcm1hdCA9PSBcImh0bWxcIiA/IFwicmF3XCIgOiBcInBkZlwiXG4gICAgbGV0IHVybHM6IGFueSA9IFtcbiAgICAgIGBodHRwOi8vd3d3LmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvZHluL2RvY3MvJHtkaXZpc2lvbk9yRG9jdW1lbnQudWlkfS4ke2V4dH1gLFxuICAgIF1cbiAgICBpZiAoZm9ybWF0ID09IFwiaHRtbFwiKSB7XG4gICAgICB1cmxzLnB1c2godXJsRnJvbURvY3VtZW50KGRpdmlzaW9uT3JEb2N1bWVudCwgRG9jdW1lbnRVcmxGb3JtYXQuUmF3SHRtbCkpXG4gICAgICB1cmxzLnB1c2godXJsRnJvbURvY3VtZW50KGRpdmlzaW9uT3JEb2N1bWVudCwgRG9jdW1lbnRVcmxGb3JtYXQuSHRtbCkpXG4gICAgfSBlbHNlIGlmIChmb3JtYXQgPT0gXCJwZGZcIikge1xuICAgICAgdXJscy5wdXNoKHVybEZyb21Eb2N1bWVudChkaXZpc2lvbk9yRG9jdW1lbnQsIERvY3VtZW50VXJsRm9ybWF0LlBkZikpXG4gICAgfVxuICAgIHJldHVybiB1cmxzXG4gIH1cblxuICBzdGF0aWMgc2FuaXR5Q2hlY2tGb3JtYXQocGFnZTogQnVmZmVyLCBmb3JtYXQ6IHN0cmluZyk6IFtCdWZmZXIsIHN0cmluZ10ge1xuICAgIGlmIChmb3JtYXQgPT0gXCJwZGZcIikge1xuICAgICAgY29uc3QgbGVuZ3RoID0gTWF0aC5taW4ocGFnZS5sZW5ndGgsIDQpXG4gICAgICBjb25zdCBoZWFkID0gcGFnZS5zbGljZSgwLCBsZW5ndGgpLnRvU3RyaW5nKClcbiAgICAgIGlmICghaGVhZC5zdGFydHNXaXRoKFwiJVBERlwiKSlcbiAgICAgICAgcmV0dXJuIFtCdWZmZXIuZnJvbShcIlwiKSwgYGJhZCBwZGYgJHtlbmNvZGVVUklDb21wb25lbnQoaGVhZCl9Li4uYF1cbiAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PSBcImh0bWxcIikge1xuICAgICAgY29uc3QgbGVuZ3RoID0gTWF0aC5taW4ocGFnZS5sZW5ndGgsIDUwKVxuICAgICAgY29uc3QgaGVhZCA9IHBhZ2Uuc2xpY2UoMCwgbGVuZ3RoKS50b1N0cmluZygpXG4gICAgICBpZiAoIWhlYWQuaW5jbHVkZXMoXCJET0NUWVBFXCIpICYmICFoZWFkLmluY2x1ZGVzKFwiPD94bWxcIikpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICBCdWZmZXIuZnJvbShcIlwiKSxcbiAgICAgICAgICBgYmFkIGh0bWwgJHtlbmNvZGVVUklDb21wb25lbnQoaGVhZC5zbGljZSgwLCA0KSl9Li4uYCxcbiAgICAgICAgXVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gW3BhZ2UsIFwiT0tcIl1cbiAgfVxuXG4gIGFzeW5jIG5lZWRzRG93bmxvYWQoZmlsZVBhdGg6IHN0cmluZywgdWlkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAoZnMuZXhpc3RzU3luYyhmaWxlUGF0aCkpIHtcbiAgICAgIGNvbnN0IGlzTm90RW1wdHkgPSBmcy5zdGF0U3luYyhmaWxlUGF0aCkuc2l6ZSA+IDBcbiAgICAgIGNvbnN0IHJldHJ5RmFpbGVkID0gXCJyZXRyeS1mYWlsZWRcIiBpbiB0aGlzLm9wdGlvbnNcbiAgICAgIGlmICghcmV0cnlGYWlsZWQgfHwgaXNOb3RFbXB0eSkge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICBpZiAoaXNOb3RFbXB0eSkge1xuICAgICAgICAgICAgY29uc3QgdXJsUGF0aCA9IGAke2ZpbGVQYXRofS51cmxgXG4gICAgICAgICAgICBsZXQgdXJsXG4gICAgICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh1cmxQYXRoKSlcbiAgICAgICAgICAgICAgdXJsID0gZnMucmVhZEZpbGVTeW5jKHVybFBhdGgpLnRvU3RyaW5nKClcbiAgICAgICAgICAgIGVsc2UgdXJsID0gXCI8dW5rbm93biB1cmw+XCJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGAke3VpZH06IENhY2hlZCBPSyAke2ZpbGVQYXRofSBmcm9tICR7dXJsfWApXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGAke3VpZH06IENhY2hlZCBGQUlMICR7ZmlsZVBhdGh9YClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBhc3luYyBnZXQoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgZmlsZVBhdGg6IHN0cmluZyxcbiAgICBmb3JtYXQ6IHN0cmluZyxcbiAgICB1aWQ6IHN0cmluZyxcbiAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBpZiAodGhpcy5vcHRpb25zLnZlcmJvc2UpIGNvbnNvbGUubG9nKGAke3VpZH06IGZldGNoKCR7dXJsfSlgKVxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsKVxuICAgIGxldCBwYWdlOiBhbnkgPSBhd2FpdCByZXNwb25zZS5idWZmZXIoKVxuICAgIGxldCBzdGF0dXNcbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICBzdGF0dXMgPSByZXNwb25zZS5zdGF0dXNcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgIT09IDQwNCkge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgYEVycm9yIHdoaWxlIGdldHRpbmcgcGFnZSBcIiR7dXJsfVwiICh1aWQ6ICR7dWlkfSk6XFxuXFxuRXJyb3I6XFxuJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgICAgeyBjb2RlOiByZXNwb25zZS5zdGF0dXMsIG1lc3NhZ2U6IHJlc3BvbnNlLnN0YXR1c1RleHQgfSxcbiAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgMixcbiAgICAgICAgICAgICl9YCxcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZzLndyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIFwiXCIpXG4gICAgfSBlbHNlIHtcbiAgICAgIDtbcGFnZSwgc3RhdHVzXSA9IFJldHJpZXZlLnNhbml0eUNoZWNrRm9ybWF0KHBhZ2UsIGZvcm1hdClcbiAgICAgIGZzLndyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIHBhZ2UpXG4gICAgfVxuICAgIHJldHVybiBzdGF0dXNcbiAgfVxuXG4gIHN0YXRpYyB1cmxGcm9tVWlkKHVpZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB1cmwgPVxuICAgICAgXCJodHRwczovL2dpdC5lbi1yb290Lm9yZy90cmljb3RldXNlcy9kYXRhLnRyaWNvdGV1c2VzLmZyL0Rvc3NpZXJzX0xlZ2lzbGF0aWZzX1hWLy0vdHJlZS9tYXN0ZXIvZG9jdW1lbnRzXCJcbiAgICByZXR1cm4gYFske3VpZH1dKCR7dXJsfS91aWQvJHt1aWR9Lmpzb24pYFxuICB9XG5cbiAgYXN5bmMgZG93bmxvYWQoXG4gICAgdGV4dGVzRGlyOiBzdHJpbmcsXG4gICAgZGl2aXNpb25PckRvY3VtZW50OiBhbnksXG4gICAgZm9ybWF0OiBzdHJpbmcsXG4gICk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3QgdWlkID0gZGl2aXNpb25PckRvY3VtZW50LnVpZFxuICAgIGNvbnN0IGZpbGVQYXRoID0gYCR7dGV4dGVzRGlyfS91aWQvJHt1aWR9LiR7Zm9ybWF0fWBcbiAgICBpZiAoIShhd2FpdCB0aGlzLm5lZWRzRG93bmxvYWQoZmlsZVBhdGgsIHVpZCkpKSByZXR1cm4gMFxuICAgIGlmICh0aGlzLm9wdGlvbnMudmVyYm9zZSkgY29uc29sZS5sb2coYCR7dWlkfTogQ2hlY2tpbmcgJHtmaWxlUGF0aH1gKVxuICAgIGxldCBzdWNjZXNzID0gZmFsc2VcbiAgICBsZXQgaW5mbyA9IFwiXCJcbiAgICBsZXQgdXJsXG5cbiAgICBmb3IgKHVybCBvZiB0aGlzLmdldFVybHMoZGl2aXNpb25PckRvY3VtZW50LCBmb3JtYXQpKSB7XG4gICAgICBpZiAoXCJkcnktcnVuXCIgaW4gdGhpcy5vcHRpb25zKSB7XG4gICAgICAgIGluZm8gKz0gYCAgKiAke3VybH1cXG5gXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbmZvICs9IGAgICogJHt1cmx9IGBcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgdGhpcy5nZXQodXJsLCBmaWxlUGF0aCwgZm9ybWF0LCB1aWQpXG5cbiAgICAgIGluZm8gKz0gYCR7c3RhdHVzfVxcbmBcbiAgICAgIGlmIChzdGF0dXMgPT0gXCJPS1wiKSB7XG4gICAgICAgIHN1Y2Nlc3MgPSB0cnVlXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHVybFBhdGggPSBgJHtmaWxlUGF0aH0udXJsYFxuICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICBmcy53cml0ZUZpbGVTeW5jKHVybFBhdGgsIHVybClcbiAgICB9IGVsc2UgaWYgKGZzLmV4aXN0c1N5bmModXJsUGF0aCkpIHtcbiAgICAgIGZzLnVubGlua1N5bmModXJsUGF0aClcbiAgICB9XG4gICAgaWYgKGluZm8gIT0gXCJcIiAmJiAhdGhpcy5vcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGAqICR7UmV0cmlldmUudXJsRnJvbVVpZCh1aWQpfTogUmV0cmlldmluZyAke2ZpbGVQYXRofVxcbiR7aW5mby5zbGljZShcbiAgICAgICAgICAwLFxuICAgICAgICAgIC0xLFxuICAgICAgICApfWAsXG4gICAgICApXG4gICAgICByZXR1cm4gMVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gMFxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHJldHJpZXZlRG9jdW1lbnRzKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3QgZ2l0RGlyID0gYCR7dGhpcy5vcHRpb25zLnRleHRlc30vLmdpdGBcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMoZ2l0RGlyKSkge1xuICAgICAgY29uc29sZS5lcnJvcihgJHtnaXREaXJ9IGlzIGV4cGVjdGVkIHRvIGV4aXN0IGJ1dCBkb2VzIG5vdGApXG4gICAgICByZXR1cm4gMVxuICAgIH1cblxuICAgIGNvbnN0IHRleHRlc0RpciA9IHBhdGguam9pbih0aGlzLm9wdGlvbnMudGV4dGVzLCB0aGlzLm9wdGlvbnMubGVnaXNsYXR1cmUpXG4gICAgZnMuZW5zdXJlRGlyU3luYyhgJHt0ZXh0ZXNEaXJ9L3VpZGApXG5cbiAgICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIGdldEZpbGVzKHRoaXMub3B0aW9ucy5kYXRhKSkge1xuICAgICAgY29uc3QgZG9jdW1lbnQgPSBsb2FkKGZpbGVuYW1lKVxuICAgICAgaWYgKC9eLi4uLlNOLy50ZXN0KGRvY3VtZW50LnVpZCkgfHwgL15ERUNMLy50ZXN0KGRvY3VtZW50LnVpZCkpIGNvbnRpbnVlXG4gICAgICBmb3IgKGNvbnN0IGRpdmlzaW9uT3JEb2N1bWVudCBvZiB0aGlzLmdldERpdmlzaW9uc09yRG9jdW1lbnQoZG9jdW1lbnQpKSB7XG4gICAgICAgIGlmICgvLUNPTVBBJC8udGVzdChkaXZpc2lvbk9yRG9jdW1lbnQudWlkKSkgY29udGludWVcbiAgICAgICAgbGV0IHN0YXR1cyA9IDBcbiAgICAgICAgZm9yIChjb25zdCBmb3JtYXQgb2YgW1wiaHRtbFwiLCBcInBkZlwiXSkge1xuICAgICAgICAgIHN0YXR1cyB8PSBhd2FpdCB0aGlzLmRvd25sb2FkKHRleHRlc0RpciwgZGl2aXNpb25PckRvY3VtZW50LCBmb3JtYXQpXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXR1cyAmJiAhdGhpcy5vcHRpb25zLnNpbGVudCkgY29uc29sZS5sb2coXCItLS1cIilcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIShcImRyeS1ydW5cIiBpbiB0aGlzLm9wdGlvbnMpKSB7XG4gICAgICBhd2FpdCB0aGlzLmNvbW1pdEFuZFB1c2godGV4dGVzRGlyKVxuICAgIH1cblxuICAgIHJldHVybiAwXG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gbWFpbihhcmd2OiBhbnkpOiBQcm9taXNlPG51bWJlcj4ge1xuICBjb25zdCBvcHRpb25zID0gcGFyc2VBcmdzKGFyZ3YpXG4gIGlmIChvcHRpb25zID09PSBudWxsKSByZXR1cm4gMVxuICBjb25zdCByZXRyaWV2ZSA9IG5ldyBSZXRyaWV2ZShvcHRpb25zKVxuICByZXR1cm4gcmV0cmlldmUucmV0cmlldmVEb2N1bWVudHMoKVxufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbmlmIChwcm9jZXNzLmFyZ3ZbMV0uZW5kc1dpdGgoXCJyZXRyaWV2ZV9kb2N1bWVudHMudHNcIikpXG4gIG1haW4ocHJvY2Vzcy5hcmd2KVxuICAgIC50aGVuKChleGl0Q29kZSkgPT4ge1xuICAgICAgcHJvY2Vzcy5leGl0KGV4aXRDb2RlKVxuICAgIH0pXG4gICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcihlcnJvcilcbiAgICAgIHByb2Nlc3MuZXhpdCgxKVxuICAgIH0pXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxnQkFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsaUJBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLEdBQUEsR0FBQUMsdUJBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFJLFFBQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFLLEtBQUEsR0FBQU4sc0JBQUEsQ0FBQUMsT0FB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
|
|
394
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY2hpbGRfcHJvY2VzcyIsIl9jb21tYW5kTGluZUFyZ3MiLCJfY3J5cHRvIiwiX2ZzRXh0cmEiLCJfcGF0aCIsIl9kb3NzaWVyc19sZWdpc2xhdGlmcyIsImdpdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2xvYWRlcnMiLCJfdXJscyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwiZXhwb3J0cyIsIk9wIiwiaGFzT3duIiwidmFsdWUiLCIkU3ltYm9sIiwiU3ltYm9sIiwiaXRlcmF0b3JTeW1ib2wiLCJpdGVyYXRvciIsImFzeW5jSXRlcmF0b3JTeW1ib2wiLCJhc3luY0l0ZXJhdG9yIiwidG9TdHJpbmdUYWdTeW1ib2wiLCJ0b1N0cmluZ1RhZyIsImRlZmluZSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImVyciIsIndyYXAiLCJpbm5lckZuIiwib3V0ZXJGbiIsInNlbGYiLCJ0cnlMb2NzTGlzdCIsInByb3RvR2VuZXJhdG9yIiwiR2VuZXJhdG9yIiwiZ2VuZXJhdG9yIiwiY3JlYXRlIiwiY29udGV4dCIsIkNvbnRleHQiLCJtYWtlSW52b2tlTWV0aG9kIiwidHJ5Q2F0Y2giLCJmbiIsImFyZyIsInR5cGUiLCJDb250aW51ZVNlbnRpbmVsIiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsIkl0ZXJhdG9yUHJvdG90eXBlIiwiZ2V0UHJvdG8iLCJnZXRQcm90b3R5cGVPZiIsIk5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlIiwidmFsdWVzIiwiR3AiLCJkZWZpbmVJdGVyYXRvck1ldGhvZHMiLCJmb3JFYWNoIiwibWV0aG9kIiwiX2ludm9rZSIsIkFzeW5jSXRlcmF0b3IiLCJQcm9taXNlSW1wbCIsImludm9rZSIsInJlc29sdmUiLCJyZWplY3QiLCJyZWNvcmQiLCJyZXN1bHQiLCJfX2F3YWl0IiwidGhlbiIsInVud3JhcHBlZCIsImVycm9yIiwicHJldmlvdXNQcm9taXNlIiwiY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmciLCJzdGF0ZSIsIkVycm9yIiwiZG9uZVJlc3VsdCIsImRlbGVnYXRlIiwiZGVsZWdhdGVSZXN1bHQiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJkb25lIiwibWV0aG9kTmFtZSIsInVuZGVmaW5lZCIsIlR5cGVFcnJvciIsImluZm8iLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJsb2NzIiwiZW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsIml0ZXJhYmxlIiwiaXRlcmF0b3JNZXRob2QiLCJpc05hTiIsImxlbmd0aCIsImkiLCJkaXNwbGF5TmFtZSIsImlzR2VuZXJhdG9yRnVuY3Rpb24iLCJnZW5GdW4iLCJjdG9yIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJpdGVyIiwia2V5cyIsInZhbCIsIm9iamVjdCIsInJldmVyc2UiLCJwb3AiLCJza2lwVGVtcFJlc2V0IiwicHJldiIsImNoYXJBdCIsInNsaWNlIiwic3RvcCIsInJvb3RSZWNvcmQiLCJydmFsIiwiZXhjZXB0aW9uIiwiaGFuZGxlIiwibG9jIiwiY2F1Z2h0IiwiaGFzQ2F0Y2giLCJoYXNGaW5hbGx5IiwiZmluYWxseUVudHJ5IiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJ0aHJvd24iLCJkZWxlZ2F0ZVlpZWxkIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJvIiwiYWxsb3dBcnJheUxpa2UiLCJpdCIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIkYiLCJzIiwibiIsImUiLCJfZSIsImYiLCJub3JtYWxDb21wbGV0aW9uIiwiZGlkRXJyIiwic3RlcCIsIl9lMiIsIm1pbkxlbiIsIl9hcnJheUxpa2VUb0FycmF5IiwidG9TdHJpbmciLCJmcm9tIiwidGVzdCIsImFyciIsImxlbiIsImFycjIiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJnZW4iLCJfbmV4dCIsIl90aHJvdyIsIl9hc3luY1RvR2VuZXJhdG9yIiwiYXJncyIsImFyZ3VtZW50cyIsImFwcGx5Iiwib3B0aW9uc0RlZmluaXRpb25zIiwiYWxpYXMiLCJoZWxwIiwiQm9vbGVhbiIsImRlZmF1bHRWYWx1ZSIsIlN0cmluZyIsIm11bHRpcGxlIiwiZGVmYXVsdE9wdGlvbiIsIm9wdGlvbnMiLCJjb21tYW5kTGluZUFyZ3MiLCJyZXRyaWV2ZURvY3VtZW50cyIsIl9yZXRyaWV2ZURvY3VtZW50cyIsIl9jYWxsZWUiLCJkYXRhRGlyIiwiZG9jdW1lbnRzRGlyIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJmaWxlbmFtZSIsImZpcnN0VWlkIiwic2tpcCIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJkb2N1bWVudCIsIl9pdGVyYXRvcjMiLCJfc3RlcDMiLCJkb2N1bWVudE9yRGl2aXNpb24iLCJkb2N1bWVudERpciIsImZpbGVuYW1lQnlTaGEyNTYiLCJpbmRleFBhdGgiLCJpbmRleCIsIl9pdGVyYXRvcjQiLCJfc3RlcDQiLCJfbG9vcCIsIl9yZXQiLCJfY2FsbGVlJCIsIl9jb250ZXh0MiIsImFzc2VydCIsImNvbW1pdCIsInVpZCIsInBhdGgiLCJqb2luIiwicHVsbCIsImV4ZWNTeW5jIiwiY3dkIiwiZW52IiwicHJvY2VzcyIsImVuY29kaW5nIiwic3RkaW8iLCJmcyIsImVuc3VyZURpclN5bmMiLCJmdWxsIiwicmVhZGRpclN5bmMiLCJyZW1vdmVTeW5jIiwidDAiLCJpdGVyTG9hZEFzc2VtYmxlZURvY3VtZW50cyIsImxlZ2lzbGF0dXJlIiwid2Fsa0RvY3VtZW50QW5kRGl2aXNpb25zIiwic3Vic3RyaW5nIiwicGF0aEZyb21Eb2N1bWVudFVpZCIsInBhdGhFeGlzdHNTeW5jIiwicmVhZEpzb25TeW5jIiwiaXRlckRvY3VtZW50T3JEaXZpc2lvblVybHMiLCJfc3RlcDQkdmFsdWUiLCJmb3JtYXQiLCJ1cmwiLCJmaWxlSW5mb3MiLCJyZXNwb25zZSIsImZpbGVQYXRoIiwiYXJyYXlCdWZmZXIiLCJidWZmZXIiLCJzaGEyNTYiLCJleGlzdGluZ0ZpbGVuYW1lIiwiX2xvb3AkIiwiX2NvbnRleHQiLCJmaW5kIiwiY29uY2F0IiwiRG9jdW1lbnRVcmxGb3JtYXQiLCJQZGYiLCJzdGF0dXMiLCJzaWxlbnQiLCJjb25zb2xlIiwibG9nIiwiZmV0Y2giLCJvayIsIkJ1ZmZlciIsInN1YmFycmF5Iiwic3RhcnRzV2l0aCIsIndhcm4iLCJjcmVhdGVIYXNoIiwidXBkYXRlIiwiZGlnZXN0IiwiY3JlYXRlV3JpdGVTdHJlYW0iLCJ3cml0ZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJjb2RlIiwibWVzc2FnZSIsInN0YXR1c1RleHQiLCJ0MSIsInQyIiwid3JpdGVKc29uU3luYyIsInNwYWNlcyIsInQzIiwidDQiLCJjb21taXRBbmRQdXNoIiwicmVtb3RlIiwiZXhpdENvZGUiLCJleGl0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvcmV0cmlldmVfZG9jdW1lbnRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiXG5pbXBvcnQgeyBleGVjU3luYyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCJcbmltcG9ydCBjb21tYW5kTGluZUFyZ3MgZnJvbSBcImNvbW1hbmQtbGluZS1hcmdzXCJcbmltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tIFwiY3J5cHRvXCJcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuXG5pbXBvcnQgeyB3YWxrRG9jdW1lbnRBbmREaXZpc2lvbnMgfSBmcm9tIFwiLi4vZG9zc2llcnNfbGVnaXNsYXRpZnNcIlxuaW1wb3J0ICogYXMgZ2l0IGZyb20gXCIuLi9naXRcIlxuaW1wb3J0IHsgaXRlckxvYWRBc3NlbWJsZWVEb2N1bWVudHMsIHBhdGhGcm9tRG9jdW1lbnRVaWQgfSBmcm9tIFwiLi4vbG9hZGVyc1wiXG5pbXBvcnQgeyBEb2N1bWVudFVybEZvcm1hdCwgaXRlckRvY3VtZW50T3JEaXZpc2lvblVybHMgfSBmcm9tIFwiLi4vdXJsc1wiXG5cbmludGVyZmFjZSBGaWxlSW5mb3Mge1xuICBmaWxlbmFtZT86IHN0cmluZ1xuICBzaGEyNTY/OiBzdHJpbmdcbiAgdXJsOiBzdHJpbmdcbiAgc3RhdHVzOiBudW1iZXJcbn1cblxuY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICB7XG4gICAgYWxpYXM6IFwiY1wiLFxuICAgIGhlbHA6IFwiY29tbWl0IGRvY3VtZW50c1wiLFxuICAgIG5hbWU6IFwiY29tbWl0XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcImZcIixcbiAgICBoZWxwOiBcInJldHJpZXZlIGFsbCBkb2N1bWVudHMsIGV2ZW4gYWxyZWFkeSByZXRyaWV2ZWQgb25lc1wiLFxuICAgIG5hbWU6IFwiZnVsbFwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJsXCIsXG4gICAgZGVmYXVsdFZhbHVlOiBcIjE2XCIsXG4gICAgaGVscDogJ2xlZ2lzbGF0dXJlcyB0byByZXRyaWV2ZSwgXCIqXCIgZm9yIGFsbCcsXG4gICAgbmFtZTogXCJsZWdpc2xhdHVyZVwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcIm5cIixcbiAgICBoZWxwOiBcInRyeSB0byBhbHNvIHJldHJpZXZlIGRvY3VtZW50cyB0aGF0IHdlcmUgcHJldmlvdXNseSBub3QgZm91bmRcIixcbiAgICBuYW1lOiBcIm5vdC1mb3VuZFwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJwXCIsXG4gICAgaGVscDogXCJwdWxsIHJlcG9zaXRvcmllcyBiZWZvcmUgcHJvY2VlZGluZ1wiLFxuICAgIG5hbWU6IFwicHVsbFwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJyXCIsXG4gICAgaGVscDogXCJwdXNoIGNvbW1pdCB0byBnaXZlbiByZW1vdGVcIixcbiAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICBuYW1lOiBcInJlbW90ZVwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInNcIixcbiAgICBoZWxwOiBcImRvbid0IGxvZyBhbnl0aGluZ1wiLFxuICAgIG5hbWU6IFwic2lsZW50XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInVcIixcbiAgICBoZWxwOiBcIlVJRCBvZiBmaXJzdCBBc3NlbWJsw6llJ3MgZG9jdW1lbnQgb3IgZGl2aXNpb24gdG8gcmV0cmlldmVcIixcbiAgICBuYW1lOiBcInVpZFwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInZcIixcbiAgICBoZWxwOiBcInZlcmJvc2UgbG9nc1wiLFxuICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgIGhlbHA6IFwiZGlyZWN0b3J5IGNvbnRhaW5pbmcgQXNzZW1ibMOpZSBvcGVuIGRhdGEgZmlsZXNcIixcbiAgICBuYW1lOiBcImRhdGFEaXJcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG5dXG5jb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucylcblxuYXN5bmMgZnVuY3Rpb24gcmV0cmlldmVEb2N1bWVudHMoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgYXNzZXJ0KFxuICAgICFvcHRpb25zLmNvbW1pdCB8fCBvcHRpb25zLnVpZCxcbiAgICAnT3B0aW9ucyBcImNvbW1pdFwiICYgXCJ1aWRcIiBhcmUgaW5jb21wYXRpYmxlJyxcbiAgKVxuXG4gIGNvbnN0IGRhdGFEaXIgPSBvcHRpb25zLmRhdGFEaXJcbiAgY29uc3QgZG9jdW1lbnRzRGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIFwiRG9jdW1lbnRzXCIpXG4gIGlmIChvcHRpb25zLnB1bGwpIHtcbiAgICBleGVjU3luYyhgZ2l0IHJlc2V0IC0taGFyZCBvcmlnaW4vbWFzdGVyYCwge1xuICAgICAgY3dkOiBkb2N1bWVudHNEaXIsXG4gICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgIH0pXG4gICAgZXhlY1N5bmMoYGdpdCBwdWxsIC0tcmViYXNlYCwge1xuICAgICAgY3dkOiBkb2N1bWVudHNEaXIsXG4gICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgIH0pXG4gIH1cblxuICBmcy5lbnN1cmVEaXJTeW5jKGRvY3VtZW50c0RpcilcbiAgaWYgKG9wdGlvbnMuZnVsbCAmJiAhb3B0aW9ucy51aWQpIHtcbiAgICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIGZzLnJlYWRkaXJTeW5jKGRvY3VtZW50c0RpcikpIHtcbiAgICAgIGlmIChmaWxlbmFtZVswXSA9PT0gXCIuXCIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGZzLnJlbW92ZVN5bmMocGF0aC5qb2luKGRvY3VtZW50c0RpciwgZmlsZW5hbWUpKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGZpcnN0VWlkID0gb3B0aW9ucy51aWRcbiAgbGV0IHNraXAgPSBCb29sZWFuKGZpcnN0VWlkKVxuICBmb3IgKGNvbnN0IHsgZG9jdW1lbnQgfSBvZiBpdGVyTG9hZEFzc2VtYmxlZURvY3VtZW50cyhcbiAgICBkYXRhRGlyLFxuICAgIG9wdGlvbnMubGVnaXNsYXR1cmUsXG4gICkpIHtcbiAgICBmb3IgKGNvbnN0IGRvY3VtZW50T3JEaXZpc2lvbiBvZiB3YWxrRG9jdW1lbnRBbmREaXZpc2lvbnMoZG9jdW1lbnQpKSB7XG4gICAgICAvLyBJZ25vcmUgZG9jdW1lbnRzIGZyb20gU8OpbmF0LlxuICAgICAgaWYgKGRvY3VtZW50T3JEaXZpc2lvbi51aWQuc3Vic3RyaW5nKDQsIDYpID09PSBcIlNOXCIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgaWYgKHNraXApIHtcbiAgICAgICAgaWYgKGRvY3VtZW50T3JEaXZpc2lvbi51aWQgPT09IGZpcnN0VWlkKSB7XG4gICAgICAgICAgc2tpcCA9IGZhbHNlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkb2N1bWVudERpciA9IHBhdGhGcm9tRG9jdW1lbnRVaWQoXG4gICAgICAgIGRvY3VtZW50c0RpcixcbiAgICAgICAgZG9jdW1lbnRPckRpdmlzaW9uLnVpZCxcbiAgICAgIClcbiAgICAgIGZzLmVuc3VyZURpclN5bmMoZG9jdW1lbnREaXIpXG5cbiAgICAgIGNvbnN0IGZpbGVuYW1lQnlTaGEyNTY6IHsgW2RpZ2VzdDogc3RyaW5nXTogc3RyaW5nIH0gPSB7fVxuICAgICAgY29uc3QgaW5kZXhQYXRoID0gcGF0aC5qb2luKGRvY3VtZW50RGlyLCBcImluZGV4Lmpzb25cIilcbiAgICAgIGNvbnN0IGluZGV4ID0gKFxuICAgICAgICBmcy5wYXRoRXhpc3RzU3luYyhpbmRleFBhdGgpID8gZnMucmVhZEpzb25TeW5jKGluZGV4UGF0aCkgOiB7fVxuICAgICAgKSBhcyB7IFtmb3JtYXQ6IHN0cmluZ106IEZpbGVJbmZvc1tdIH1cbiAgICAgIGZvciAoY29uc3QgeyBmb3JtYXQsIHR5cGUsIHVybCB9IG9mIGl0ZXJEb2N1bWVudE9yRGl2aXNpb25VcmxzKFxuICAgICAgICBkb2N1bWVudE9yRGl2aXNpb24sXG4gICAgICApKSB7XG4gICAgICAgIGlmIChpbmRleFtmb3JtYXRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpbmRleFtmb3JtYXRdID0gW11cbiAgICAgICAgfVxuICAgICAgICBsZXQgZmlsZUluZm9zID0gaW5kZXhbZm9ybWF0XS5maW5kKChmaWxlSW5mb3MpID0+IGZpbGVJbmZvcy51cmwgPT09IHVybClcbiAgICAgICAgaWYgKGZpbGVJbmZvcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZmlsZUluZm9zID0ge30gYXMgRmlsZUluZm9zXG4gICAgICAgICAgaW5kZXhbZm9ybWF0XS5wdXNoKGZpbGVJbmZvcylcbiAgICAgICAgfVxuICAgICAgICBmaWxlSW5mb3MudXJsID0gdXJsXG5cbiAgICAgICAgY29uc3QgZmlsZW5hbWUgPSBgJHt0eXBlfS4ke1xuICAgICAgICAgIGZvcm1hdCA9PT0gRG9jdW1lbnRVcmxGb3JtYXQuUGRmID8gXCJwZGZcIiA6IFwiaHRtbFwiXG4gICAgICAgIH1gXG4gICAgICAgIGlmIChmaWxlSW5mb3Muc3RhdHVzID09PSAyMDAgJiYgIW9wdGlvbnMuZnVsbCkge1xuICAgICAgICAgIGZpbGVuYW1lQnlTaGEyNTZbZmlsZUluZm9zLnNoYTI1NiBhcyBzdHJpbmddID0gZmlsZW5hbWVcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGlmIChmaWxlSW5mb3Muc3RhdHVzID09PSA0MDQgJiYgIW9wdGlvbnNbXCJub3QtZm91bmRcIl0pIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgYFJldHJpZXZpbmcgZG9jdW1lbnQgb3IgZGl2aXNpb24gJHtkb2N1bWVudE9yRGl2aXNpb24udWlkfSBhdCAke3VybH3igKZgLFxuICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsKVxuICAgICAgICBjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbihkb2N1bWVudERpciwgZmlsZW5hbWUpXG4gICAgICAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgcmVzcG9uc2UuYXJyYXlCdWZmZXIoKVxuICAgICAgICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGFycmF5QnVmZmVyKVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGZvcm1hdCA9PT0gRG9jdW1lbnRVcmxGb3JtYXQuUGRmICYmXG4gICAgICAgICAgICAhYnVmZmVyLnN1YmFycmF5KDAsIDQpLnRvU3RyaW5nKCkuc3RhcnRzV2l0aChcIiVQREZcIilcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIC8vIEluc3RlYWQgb2YgYSBQREYsIHRoZSByZWNlaXZlZCBkYXRhIG1heSBiZSBhbiBIVE1MIHBhZ2Ugd2l0aCBhIG1lc3NhZ2UgbGlrZVxuICAgICAgICAgICAgLy8gXCJEb2N1bWVudCBub24gZW5jb3JlIHB1Ymxpw6lcIi5cbiAgICAgICAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgICAgICAgY29uc29sZS53YXJuKGAgIFBERiBcIiR7dXJsfVwiIG5vdCBmb3VuZC5gKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnMucmVtb3ZlU3luYyhmaWxlUGF0aClcbiAgICAgICAgICAgIGRlbGV0ZSBmaWxlSW5mb3MuZmlsZW5hbWVcbiAgICAgICAgICAgIGRlbGV0ZSBmaWxlSW5mb3Muc2hhMjU2XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHNoYTI1NiA9IGNyZWF0ZUhhc2goXCJzaGEyNTZcIikudXBkYXRlKGJ1ZmZlcikuZGlnZXN0KFwiaGV4XCIpXG4gICAgICAgICAgICBjb25zdCBleGlzdGluZ0ZpbGVuYW1lID0gZmlsZW5hbWVCeVNoYTI1NltzaGEyNTZdXG4gICAgICAgICAgICBpZiAoZXhpc3RpbmdGaWxlbmFtZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGZzLmNyZWF0ZVdyaXRlU3RyZWFtKGZpbGVQYXRoKS53cml0ZShidWZmZXIpXG4gICAgICAgICAgICAgIGZpbGVJbmZvcy5maWxlbmFtZSA9IGZpbGVuYW1lXG4gICAgICAgICAgICAgIGZpbGVuYW1lQnlTaGEyNTZbc2hhMjU2XSA9IGZpbGVuYW1lXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmaWxlSW5mb3MuZmlsZW5hbWUgPSBleGlzdGluZ0ZpbGVuYW1lXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaWxlSW5mb3Muc2hhMjU2ID0gc2hhMjU2XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwNCkge1xuICAgICAgICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYCAgUGFnZSBcIiR7dXJsfVwiIG5vdCBmb3VuZC5gKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICBgICBFcnJvcjpcXG4ke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgICAgIHsgY29kZTogcmVzcG9uc2Uuc3RhdHVzLCBtZXNzYWdlOiByZXNwb25zZS5zdGF0dXNUZXh0IH0sXG4gICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICAyLFxuICAgICAgICAgICAgICApfWAsXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICAgIGZzLnJlbW92ZVN5bmMoZmlsZVBhdGgpXG4gICAgICAgICAgZGVsZXRlIGZpbGVJbmZvcy5maWxlbmFtZVxuICAgICAgICAgIGRlbGV0ZSBmaWxlSW5mb3Muc2hhMjU2XG4gICAgICAgIH1cbiAgICAgICAgZmlsZUluZm9zLnN0YXR1cyA9IHJlc3BvbnNlLnN0YXR1c1xuICAgICAgfVxuICAgICAgZnMud3JpdGVKc29uU3luYyhpbmRleFBhdGgsIGluZGV4LCB7IGVuY29kaW5nOiBcInV0Zi04XCIsIHNwYWNlczogMiB9KVxuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgIHJldHVybiBnaXQuY29tbWl0QW5kUHVzaChkb2N1bWVudHNEaXIsIFwiTm91dmVsbGUgbW9pc3NvblwiLCBvcHRpb25zLnJlbW90ZSlcbiAgfVxuICByZXR1cm4gMFxufVxuXG5yZXRyaWV2ZURvY3VtZW50cygpXG4gIC50aGVuKChleGl0Q29kZSkgPT4gcHJvY2Vzcy5leGl0KGV4aXRDb2RlKSlcbiAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgIGNvbnNvbGUubG9nKGVycm9yKVxuICAgIHByb2Nlc3MuZXhpdCgxKVxuICB9KVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNB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
|