@tricoteuses/assemblee
Version:
Retrieve, clean up & handle French Assemblée nationale's open data
777 lines (774 loc) • 93.2 kB
JavaScript
"use strict";
require("core-js/modules/es.symbol.js");
require("core-js/modules/es.symbol.description.js");
require("core-js/modules/es.symbol.iterator.js");
require("core-js/modules/es.array.iterator.js");
require("core-js/modules/es.object.define-property.js");
require("core-js/modules/es.string.iterator.js");
require("core-js/modules/web.dom-collections.iterator.js");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.UidXsiType = exports.TypeReunion = exports.TypePointOdj = exports.ReunionXsiType = exports.Quantieme = exports.Procedure = exports.Presence = exports.PointOdjXsiType = exports.NatureTravauxOdj = exports.FormatReunion = exports.Etat = exports.Convert = exports.Civ = void 0;
require("core-js/modules/es.symbol.to-primitive.js");
require("core-js/modules/es.array.concat.js");
require("core-js/modules/es.array.for-each.js");
require("core-js/modules/es.array.index-of.js");
require("core-js/modules/es.array.is-array.js");
require("core-js/modules/es.array.map.js");
require("core-js/modules/es.date.to-json.js");
require("core-js/modules/es.date.to-primitive.js");
require("core-js/modules/es.date.to-string.js");
require("core-js/modules/es.number.constructor.js");
require("core-js/modules/es.object.get-own-property-names.js");
require("core-js/modules/es.object.keys.js");
require("core-js/modules/es.object.to-string.js");
require("core-js/modules/web.dom-collections.for-each.js");
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
// To parse this data:
//
// import { Convert, Reunion, Agendas } from "./file";
//
// const reunion = Convert.toReunion(json);
// const agendas = Convert.toAgendas(json);
//
// These functions will throw an error if the JSON doesn't
// match the expected interface, even if the JSON is valid.
var ReunionXsiType = exports.ReunionXsiType = /*#__PURE__*/function (ReunionXsiType) {
ReunionXsiType["ReunionCommissionType"] = "reunionCommission_type";
ReunionXsiType["ReunionInitParlementaireType"] = "reunionInitParlementaire_type";
ReunionXsiType["SeanceType"] = "seance_type";
return ReunionXsiType;
}({});
var PointOdjXsiType = exports.PointOdjXsiType = /*#__PURE__*/function (PointOdjXsiType) {
PointOdjXsiType["PodjReunionType"] = "podjReunion_type";
PointOdjXsiType["PodjSeanceConfPresType"] = "podjSeanceConfPres_type";
return PointOdjXsiType;
}({});
var Etat = exports.Etat = /*#__PURE__*/function (Etat) {
Etat["Annul\xE9"] = "Annul\xE9";
Etat["Confirm\xE9"] = "Confirm\xE9";
Etat["Eventuel"] = "Eventuel";
Etat["Supprim\xE9"] = "Supprim\xE9";
return Etat;
}({});
var NatureTravauxOdj = exports.NatureTravauxOdj = /*#__PURE__*/function (NatureTravauxOdj) {
NatureTravauxOdj["Odjpr"] = "ODJPR";
NatureTravauxOdj["Odjsn"] = "ODJSN";
return NatureTravauxOdj;
}({});
var Procedure = exports.Procedure = /*#__PURE__*/function (Procedure) {
Procedure["DiscussionG\xE9n\xE9raleCommune"] = "discussion g\xE9n\xE9rale commune";
Procedure["Proc\xE9dureDExamenSimplifi\xE9eArticle103"] = "proc\xE9dure d'examen simplifi\xE9e-Article 103";
Procedure["Proc\xE9dureDExamenSimplifi\xE9eArticle106"] = "proc\xE9dure d'examen simplifi\xE9e-Article 106";
Procedure["Proc\xE9dureDExamenSimplifi\xE9eArticle107"] = "proc\xE9dure d'examen simplifi\xE9e-Article 107";
Procedure["Proc\xE9dureDeL\xE9gislationEnCommissionArticle1071"] = "proc\xE9dure de l\xE9gislation en commission-Article 107-1";
return Procedure;
}({});
var TypePointOdj = exports.TypePointOdj = /*#__PURE__*/function (TypePointOdj) {
TypePointOdj["AmendementsArt88"] = "Amendements (Art. 88)";
TypePointOdj["AmendementsArt91"] = "Amendements (Art. 91)";
TypePointOdj["Audition"] = "Audition";
TypePointOdj["AuditionMinistre"] = "Audition ministre";
TypePointOdj["AuditionMinistreOuverte\xC0LaPresse"] = "Audition ministre ouverte \xE0 la presse";
TypePointOdj["AuditionOuverte\xC0LaPresse"] = "Audition ouverte \xE0 la presse";
TypePointOdj["Communication"] = "Communication";
TypePointOdj["ConstitutionDeMissionDInformation"] = "Constitution de mission d'information";
TypePointOdj["Discussion"] = "Discussion";
TypePointOdj["D\xE9batDInitiativeParlementaire"] = "D\xE9bat d'initiative parlementaire";
TypePointOdj["D\xE9clarationDuGouvernementSuivieDUnD\xE9bat"] = "D\xE9claration du Gouvernement suivie d'un d\xE9bat";
TypePointOdj["EchangesDeVues"] = "Echanges de vues";
TypePointOdj["Examen"] = "Examen";
TypePointOdj["ExplicationsDeVoteDesGroupesEtVoteParScrutinPublic"] = "Explications de vote des groupes et vote par scrutin public";
TypePointOdj["ExplicationsDeVoteEtVoteParScrutinPublic"] = "Explications de vote et vote par scrutin public";
TypePointOdj["FixationDeLOrdreDuJour"] = "Fixation de l'ordre du jour";
TypePointOdj["NominationBureau"] = "Nomination bureau";
TypePointOdj["NominationCandidatsOrganismeExtraparlementaire"] = "Nomination candidats organisme extraparlementaire";
TypePointOdj["NominationDUnMembreDUneMissionDInformation"] = "Nomination d'un membre d'une mission d'information";
TypePointOdj["NominationRapporteur"] = "Nomination rapporteur";
TypePointOdj["NominationRapporteurDApplication"] = "Nomination rapporteur d'application";
TypePointOdj["NominationRapporteurDInformation"] = "Nomination rapporteur d'information";
TypePointOdj["NominationRapporteurPourAvis"] = "Nomination rapporteur pour avis";
TypePointOdj["OuvertureEtCl\xF4tureDeSession"] = "Ouverture et cl\xF4ture de session";
TypePointOdj["QuestionsAuGouvernement"] = "Questions au Gouvernement";
TypePointOdj["QuestionsOralesSansD\xE9bat"] = "Questions orales sans d\xE9bat";
TypePointOdj["Rapport"] = "Rapport";
TypePointOdj["RapportDInformation"] = "Rapport d'information";
TypePointOdj["RapportPourAvis"] = "Rapport pour avis";
TypePointOdj["SeancesReserveesGroupeOppositionOuMinoritaire"] = "S\xE9ances r\xE9serv\xE9es \xE0 un groupe de l'opposition ou minoritaire";
TypePointOdj["SuiteDeLaDiscussion"] = "Suite de la discussion";
TypePointOdj["TableRonde"] = "Table ronde";
TypePointOdj["VoteParScrutinPublic"] = "Vote par scrutin public";
TypePointOdj["VoteSolennel"] = "Vote solennel";
return TypePointOdj;
}({});
var FormatReunion = exports.FormatReunion = /*#__PURE__*/function (FormatReunion) {
FormatReunion["AuditionExterne"] = "AuditionExterne";
FormatReunion["AuditionParPresidentCommission"] = "AuditionParPresidentCommission";
FormatReunion["AuditionParRapporteur"] = "AuditionParRapporteur";
FormatReunion["Ordinaire"] = "Ordinaire";
return FormatReunion;
}({});
var Quantieme = exports.Quantieme = /*#__PURE__*/function (Quantieme) {
Quantieme["Deuxi\xE8me"] = "Deuxi\xE8me";
Quantieme["Premi\xE8re"] = "Premi\xE8re";
Quantieme["Troisi\xE8me"] = "Troisi\xE8me";
Quantieme["Unique"] = "Unique";
return Quantieme;
}({});
var Presence = exports.Presence = /*#__PURE__*/function (Presence) {
Presence["Absent"] = "absent";
Presence["Excus\xE9"] = "excus\xE9";
Presence["Pr\xE9sent"] = "pr\xE9sent";
return Presence;
}({});
var TypeReunion = exports.TypeReunion = /*#__PURE__*/function (TypeReunion) {
TypeReunion["Dep"] = "DEP";
TypeReunion["Ga"] = "GA";
TypeReunion["Ge"] = "GE";
TypeReunion["Gevi"] = "GEVI";
TypeReunion["Gp"] = "GP";
TypeReunion["H\xE9Aur\xE9lien"] = "H\xC9 Aur\xE9lien";
return TypeReunion;
}({});
var Civ = exports.Civ = /*#__PURE__*/function (Civ) {
Civ["M"] = "M.";
Civ["Mme"] = "Mme";
return Civ;
}({});
var UidXsiType = exports.UidXsiType = /*#__PURE__*/function (UidXsiType) {
UidXsiType["IdActeurType"] = "IdActeur_type";
UidXsiType["IdPersonneExterneType"] = "IdPersonneExterne_type";
return UidXsiType;
}({}); // Converts JSON strings to/from your types
// and asserts the results of JSON.parse at runtime
var Convert = exports.Convert = /*#__PURE__*/function () {
function Convert() {
_classCallCheck(this, Convert);
}
return _createClass(Convert, null, [{
key: "toReunion",
value: function toReunion(json) {
return cast(JSON.parse(json), r("Reunion"));
}
}, {
key: "reunionToJson",
value: function reunionToJson(value) {
return JSON.stringify(uncast(value, r("Reunion")), null, 2);
}
}, {
key: "toAgendas",
value: function toAgendas(json) {
return cast(JSON.parse(json), r("Agendas"));
}
}, {
key: "agendasToJson",
value: function agendasToJson(value) {
return JSON.stringify(uncast(value, r("Agendas")), null, 2);
}
}]);
}();
function invalidValue(typ, val) {
var key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
if (key) {
throw Error("Invalid value for key \"".concat(key, "\". Expected type ").concat(JSON.stringify(typ), " but got ").concat(JSON.stringify(val)));
}
throw Error("Invalid value ".concat(JSON.stringify(val), " for type ").concat(JSON.stringify(typ)));
}
function jsonToJSProps(typ) {
if (typ.jsonToJS === undefined) {
var map = {};
typ.props.forEach(function (p) {
return map[p.json] = {
key: p.js,
typ: p.typ
};
});
typ.jsonToJS = map;
}
return typ.jsonToJS;
}
function jsToJSONProps(typ) {
if (typ.jsToJSON === undefined) {
var map = {};
typ.props.forEach(function (p) {
return map[p.js] = {
key: p.json,
typ: p.typ
};
});
typ.jsToJSON = map;
}
return typ.jsToJSON;
}
function transform(val, typ, getProps) {
var key = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';
function transformPrimitive(typ, val) {
if (_typeof(typ) === _typeof(val)) return val;
return invalidValue(typ, val, key);
}
function transformUnion(typs, val) {
// val must validate against one typ in typs
var l = typs.length;
for (var i = 0; i < l; i++) {
var _typ = typs[i];
try {
return transform(val, _typ, getProps);
} catch (_) {}
}
return invalidValue(typs, val);
}
function transformEnum(cases, val) {
if (cases.indexOf(val) !== -1) return val;
return invalidValue(cases, val);
}
function transformArray(typ, val) {
// val must be an array with no invalid elements
if (!Array.isArray(val)) return invalidValue("array", val);
return val.map(function (el) {
return transform(el, typ, getProps);
});
}
function transformDate(val) {
if (val === null) {
return null;
}
var d = new Date(val);
if (isNaN(d.valueOf())) {
return invalidValue("Date", val);
}
return d;
}
function transformObject(props, additional, val) {
if (val === null || _typeof(val) !== "object" || Array.isArray(val)) {
return invalidValue("object", val);
}
var result = {};
Object.getOwnPropertyNames(props).forEach(function (key) {
var prop = props[key];
var v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
result[prop.key] = transform(v, prop.typ, getProps, prop.key);
});
Object.getOwnPropertyNames(val).forEach(function (key) {
if (!Object.prototype.hasOwnProperty.call(props, key)) {
result[key] = transform(val[key], additional, getProps, key);
}
});
return result;
}
if (typ === "any") return val;
if (typ === null) {
if (val === null) return val;
return invalidValue(typ, val);
}
if (typ === false) return invalidValue(typ, val);
while (_typeof(typ) === "object" && typ.ref !== undefined) {
typ = typeMap[typ.ref];
}
if (Array.isArray(typ)) return transformEnum(typ, val);
if (_typeof(typ) === "object") {
return typ.hasOwnProperty("unionMembers") ? transformUnion(typ.unionMembers, val) : typ.hasOwnProperty("arrayItems") ? transformArray(typ.arrayItems, val) : typ.hasOwnProperty("props") ? transformObject(getProps(typ), typ.additional, val) : invalidValue(typ, val);
}
// Numbers can be parsed by Date but shouldn't be.
if (typ === Date && typeof val !== "number") return transformDate(val);
return transformPrimitive(typ, val);
}
function cast(val, typ) {
return transform(val, typ, jsonToJSProps);
}
function uncast(val, typ) {
return transform(val, typ, jsToJSONProps);
}
function a(typ) {
return {
arrayItems: typ
};
}
function u() {
for (var _len = arguments.length, typs = new Array(_len), _key = 0; _key < _len; _key++) {
typs[_key] = arguments[_key];
}
return {
unionMembers: typs
};
}
function o(props, additional) {
return {
props: props,
additional: additional
};
}
// function m(additional: any) {
// return { props: [], additional };
// }
function r(name) {
return {
ref: name
};
}
var typeMap = {
"Reunion": o([{
json: "reunion",
js: "reunion",
typ: r("ReunionReunion")
}], false),
"ReunionReunion": o([{
json: "@xmlns",
js: "@xmlns",
typ: ""
}, {
json: "@xmlns:xsi",
js: "@xmlns:xsi",
typ: ""
}, {
json: "@xsi:type",
js: "@xsi:type",
typ: r("ReunionXsiType")
}, {
json: "uid",
js: "uid",
typ: ""
}, {
json: "timeStampDebut",
js: "timeStampDebut",
typ: Date
}, {
json: "timeStampFin",
js: "timeStampFin",
typ: u(undefined, "")
}, {
json: "lieu",
js: "lieu",
typ: u(undefined, r("Lieu"))
}, {
json: "cycleDeVie",
js: "cycleDeVie",
typ: r("CycleDeVie")
}, {
json: "demandeurs",
js: "demandeurs",
typ: u(undefined, u(r("Demandeurs"), null))
}, {
json: "organeReuniRef",
js: "organeReuniRef",
typ: u(null, "")
}, {
json: "typeReunion",
js: "typeReunion",
typ: u(undefined, r("TypeReunion"))
}, {
json: "demandeur",
js: "demandeur",
typ: u(undefined, u(r("Demandeur"), null))
}, {
json: "participants",
js: "participants",
typ: u(undefined, u(r("PurpleParticipants"), null))
}, {
json: "visioConference",
js: "visioConference",
typ: u(undefined, u(null, ""))
}, {
json: "ODJ",
js: "ODJ",
typ: u(undefined, u(r("Odj"), null))
}, {
json: "sessionRef",
js: "sessionRef",
typ: u(undefined, u("", null))
}, {
json: "ouverturePresse",
js: "ouverturePresse",
typ: u(undefined, "")
}, {
json: "captationVideo",
js: "captationVideo",
typ: u(undefined, "")
}, {
json: "compteRenduRef",
js: "compteRenduRef",
typ: u(undefined, u(null, ""))
}, {
json: "formatReunion",
js: "formatReunion",
typ: u(undefined, r("FormatReunion"))
}, {
json: "infosReunionsInternationale",
js: "infosReunionsInternationale",
typ: u(undefined, r("InfosReunionsInternationale"))
}, {
json: "identifiants",
js: "identifiants",
typ: u(undefined, r("Identifiants"))
}], false),
"Odj": o([{
json: "convocationODJ",
js: "convocationODJ",
typ: u(r("ConvocationOdjClass"), null)
}, {
json: "resumeODJ",
js: "resumeODJ",
typ: u(r("ConvocationOdjClass"), null)
}, {
json: "pointsODJ",
js: "pointsODJ",
typ: u(undefined, u(r("PointsOdj"), null))
}], false),
"ConvocationOdjClass": o([{
json: "item",
js: "item",
typ: u(a(""), "")
}], false),
"PointsOdj": o([{
json: "pointODJ",
js: "pointODJ",
typ: u(a(r("PointOdjElement")), r("PointOdjElement"))
}], false),
"PointOdjElement": o([{
json: "@xsi:type",
js: "@xsi:type",
typ: r("PointOdjXsiType")
}, {
json: "uid",
js: "uid",
typ: ""
}, {
json: "cycleDeVie",
js: "cycleDeVie",
typ: r("CycleDeVie")
}, {
json: "objet",
js: "objet",
typ: ""
}, {
json: "demandeurPoint",
js: "demandeurPoint",
typ: null
}, {
json: "procedure",
js: "procedure",
typ: u(r("Procedure"), null)
}, {
json: "dossiersLegislatifsRefs",
js: "dossiersLegislatifsRefs",
typ: u(r("DossiersLegislatifsRefs"), null)
}, {
json: "typePointODJ",
js: "typePointODJ",
typ: r("TypePointOdj")
}, {
json: "comiteSecret",
js: "comiteSecret",
typ: ""
}, {
json: "textesAssocies",
js: "textesAssocies",
typ: null
}, {
json: "natureTravauxODJ",
js: "natureTravauxODJ",
typ: u(undefined, r("NatureTravauxOdj"))
}, {
json: "dateConfPres",
js: "dateConfPres",
typ: u(undefined, "")
}, {
json: "dateLettreMinistre",
js: "dateLettreMinistre",
typ: u(undefined, "")
}], false),
"CycleDeVie": o([{
json: "etat",
js: "etat",
typ: r("Etat")
}, {
json: "chrono",
js: "chrono",
typ: r("Chrono")
}], false),
"Chrono": o([{
json: "creation",
js: "creation",
typ: ""
}, {
json: "cloture",
js: "cloture",
typ: u(null, "")
}], false),
"DossiersLegislatifsRefs": o([{
json: "dossierRef",
js: "dossierRef",
typ: u(a(""), "")
}], false),
"Demandeur": o([{
json: "acteur",
js: "acteur",
typ: u(undefined, r("ActeurElement"))
}, {
json: "organe",
js: "organe",
typ: u(undefined, r("Organe"))
}], false),
"ActeurElement": o([{
json: "nom",
js: "nom",
typ: u(null, "")
}, {
json: "acteurRef",
js: "acteurRef",
typ: ""
}], false),
"Organe": o([{
json: "nom",
js: "nom",
typ: ""
}, {
json: "organeRef",
js: "organeRef",
typ: ""
}], false),
"Demandeurs": o([{
json: "acteur",
js: "acteur",
typ: u(undefined, u(a(r("ActeurElement")), r("ActeurElement")))
}, {
json: "organe",
js: "organe",
typ: u(undefined, r("Organe"))
}], false),
"Identifiants": o([{
json: "numSeanceJO",
js: "numSeanceJO",
typ: u(null, "")
}, {
json: "idJO",
js: "idJO",
typ: u(null, "")
}, {
json: "quantieme",
js: "quantieme",
typ: r("Quantieme")
}, {
json: "DateSeance",
js: "DateSeance",
typ: ""
}], false),
"InfosReunionsInternationale": o([{
json: "estReunionInternationale",
js: "estReunionInternationale",
typ: ""
}, {
json: "listePays",
js: "listePays",
typ: u(r("ListePays"), null)
}, {
json: "informationsComplementaires",
js: "informationsComplementaires",
typ: u(undefined, u(null, ""))
}], false),
"ListePays": o([{
json: "paysRef",
js: "paysRef",
typ: u(a(""), "")
}], false),
"Lieu": o([{
json: "code",
js: "code",
typ: u(undefined, u("", null))
}, {
json: "libelleCourt",
js: "libelleCourt",
typ: u(undefined, u("", null))
}, {
json: "libelleLong",
js: "libelleLong",
typ: u(null, "")
}, {
json: "lieuRef",
js: "lieuRef",
typ: u(undefined, u("", null))
}], false),
"PurpleParticipants": o([{
json: "participantsInternes",
js: "participantsInternes",
typ: u(r("PurpleParticipantsInternes"), null)
}, {
json: "personnesAuditionnees",
js: "personnesAuditionnees",
typ: u(r("PurplePersonnesAuditionnees"), null)
}], false),
"PurpleParticipantsInternes": o([{
json: "participantInterne",
js: "participantInterne",
typ: u(a(r("ParticipantInterneElement")), r("ParticipantInterneElement"))
}], false),
"ParticipantInterneElement": o([{
json: "acteurRef",
js: "acteurRef",
typ: ""
}, {
json: "presence",
js: "presence",
typ: r("Presence")
}], false),
"PurplePersonnesAuditionnees": o([{
json: "personneAuditionnee",
js: "personneAuditionnee",
typ: u(a(null), null)
}], false),
"Agendas": o([{
json: "reunions",
js: "reunions",
typ: r("Reunions")
}], false),
"Reunions": o([{
json: "reunion",
js: "reunion",
typ: a(r("ReunionElement"))
}], false),
"ReunionElement": o([{
json: "uid",
js: "uid",
typ: ""
}, {
json: "timeStampDebut",
js: "timeStampDebut",
typ: Date
}, {
json: "timeStampFin",
js: "timeStampFin",
typ: u(undefined, "")
}, {
json: "lieu",
js: "lieu",
typ: r("Lieu")
}, {
json: "cycleDeVie",
js: "cycleDeVie",
typ: r("CycleDeVie")
}, {
json: "demandeurs",
js: "demandeurs",
typ: u(undefined, u(r("Demandeurs"), null))
}, {
json: "organeReuniRef",
js: "organeReuniRef",
typ: u(null, "")
}, {
json: "typeReunion",
js: "typeReunion",
typ: u(undefined, r("TypeReunion"))
}, {
json: "@xmlns:xsi",
js: "@xmlns:xsi",
typ: u(undefined, "")
}, {
json: "demandeur",
js: "demandeur",
typ: u(undefined, null)
}, {
json: "participants",
js: "participants",
typ: u(undefined, u(r("FluffyParticipants"), null))
}, {
json: "sessionRef",
js: "sessionRef",
typ: u(undefined, u("", null))
}, {
json: "ouverturePresse",
js: "ouverturePresse",
typ: u(undefined, "")
}, {
json: "ODJ",
js: "ODJ",
typ: u(undefined, r("Odj"))
}, {
json: "compteRenduRef",
js: "compteRenduRef",
typ: u(undefined, u(null, ""))
}, {
json: "identifiants",
js: "identifiants",
typ: u(undefined, r("Identifiants"))
}], false),
"FluffyParticipants": o([{
json: "participantsInternes",
js: "participantsInternes",
typ: u(r("FluffyParticipantsInternes"), null)
}, {
json: "personnesAuditionnees",
js: "personnesAuditionnees",
typ: u(r("FluffyPersonnesAuditionnees"), null)
}], false),
"FluffyParticipantsInternes": o([{
json: "participantInterne",
js: "participantInterne",
typ: a(r("ParticipantInterneElement"))
}], false),
"FluffyPersonnesAuditionnees": o([{
json: "personneAuditionnee",
js: "personneAuditionnee",
typ: u(a(r("PersonneAuditionneeElement")), r("PersonneAuditionneeElement"))
}], false),
"PersonneAuditionneeElement": o([{
json: "uid",
js: "uid",
typ: r("Uid")
}, {
json: "ident",
js: "ident",
typ: r("Ident")
}, {
json: "dateNais",
js: "dateNais",
typ: u(Date, null)
}], false),
"Ident": o([{
json: "civ",
js: "civ",
typ: r("Civ")
}, {
json: "prenom",
js: "prenom",
typ: ""
}, {
json: "nom",
js: "nom",
typ: ""
}, {
json: "alpha",
js: "alpha",
typ: u(undefined, "")
}, {
json: "trigramme",
js: "trigramme",
typ: u(undefined, u(null, ""))
}], false),
"Uid": o([{
json: "@xsi:type",
js: "@xsi:type",
typ: r("UidXsiType")
}, {
json: "#text",
js: "#text",
typ: ""
}], false),
"ReunionXsiType": ["reunionCommission_type", "reunionInitParlementaire_type", "seance_type"],
"PointOdjXsiType": ["podjReunion_type", "podjSeanceConfPres_type"],
"Etat": ["Annulé", "Confirmé", "Eventuel", "Supprimé"],
"NatureTravauxOdj": ["ODJPR", "ODJSN"],
"Procedure": ["discussion générale commune", "procédure d'examen simplifiée-Article 103", "procédure d'examen simplifiée-Article 106", "procédure d'examen simplifiée-Article 107", "procédure de législation en commission-Article 107-1"],
"TypePointOdj": ["Amendements (Art. 88)", "Amendements (Art. 91)", "Audition", "Audition ministre", "Audition ministre ouverte à la presse", "Audition ouverte à la presse", "Communication", "Constitution de mission d'information", "Discussion", "Débat d'initiative parlementaire", "Déclaration du Gouvernement suivie d'un débat", "Echanges de vues", "Examen", "Explications de vote des groupes et vote par scrutin public", "Explications de vote et vote par scrutin public", "Fixation de l'ordre du jour", "Nomination bureau", "Nomination candidats organisme extraparlementaire", "Nomination d'un membre d'une mission d'information", "Nomination rapporteur", "Nomination rapporteur d'application", "Nomination rapporteur d'information", "Nomination rapporteur pour avis", "Ouverture et clôture de session", "Questions au Gouvernement", "Questions orales sans débat", "Rapport", "Rapport d'information", "Rapport pour avis", "Séances réservées à un groupe de l'opposition ou minoritaire", "Suite de la discussion", "Table ronde", "Vote par scrutin public", "Vote solennel"],
"FormatReunion": ["AuditionExterne", "AuditionParPresidentCommission", "AuditionParRapporteur", "Ordinaire"],
"Quantieme": ["Deuxième", "Première", "Troisième", "Unique"],
"Presence": ["absent", "excusé", "présent"],
"TypeReunion": ["DEP", "GA", "GE", "GEVI", "GP", "HÉ Aurélien"],
"Civ": ["M.", "Mme"],
"UidXsiType": ["IdActeur_type", "IdPersonneExterne_type"]
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZXVuaW9uWHNpVHlwZSIsImV4cG9ydHMiLCJQb2ludE9kalhzaVR5cGUiLCJFdGF0IiwiTmF0dXJlVHJhdmF1eE9kaiIsIlByb2NlZHVyZSIsIlR5cGVQb2ludE9kaiIsIkZvcm1hdFJldW5pb24iLCJRdWFudGllbWUiLCJQcmVzZW5jZSIsIlR5cGVSZXVuaW9uIiwiQ2l2IiwiVWlkWHNpVHlwZSIsIkNvbnZlcnQiLCJfY2xhc3NDYWxsQ2hlY2siLCJfY3JlYXRlQ2xhc3MiLCJrZXkiLCJ2YWx1ZSIsInRvUmV1bmlvbiIsImpzb24iLCJjYXN0IiwiSlNPTiIsInBhcnNlIiwiciIsInJldW5pb25Ub0pzb24iLCJzdHJpbmdpZnkiLCJ1bmNhc3QiLCJ0b0FnZW5kYXMiLCJhZ2VuZGFzVG9Kc29uIiwiaW52YWxpZFZhbHVlIiwidHlwIiwidmFsIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiRXJyb3IiLCJjb25jYXQiLCJqc29uVG9KU1Byb3BzIiwianNvblRvSlMiLCJtYXAiLCJwcm9wcyIsImZvckVhY2giLCJwIiwianMiLCJqc1RvSlNPTlByb3BzIiwianNUb0pTT04iLCJ0cmFuc2Zvcm0iLCJnZXRQcm9wcyIsInRyYW5zZm9ybVByaW1pdGl2ZSIsIl90eXBlb2YiLCJ0cmFuc2Zvcm1VbmlvbiIsInR5cHMiLCJsIiwiaSIsIl8iLCJ0cmFuc2Zvcm1FbnVtIiwiY2FzZXMiLCJpbmRleE9mIiwidHJhbnNmb3JtQXJyYXkiLCJBcnJheSIsImlzQXJyYXkiLCJlbCIsInRyYW5zZm9ybURhdGUiLCJkIiwiRGF0ZSIsImlzTmFOIiwidmFsdWVPZiIsInRyYW5zZm9ybU9iamVjdCIsImFkZGl0aW9uYWwiLCJyZXN1bHQiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwicHJvcCIsInYiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJyZWYiLCJ0eXBlTWFwIiwidW5pb25NZW1iZXJzIiwiYXJyYXlJdGVtcyIsImEiLCJ1IiwiX2xlbiIsIl9rZXkiLCJvIiwibmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yYXdfdHlwZXMvYWdlbmRhcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUbyBwYXJzZSB0aGlzIGRhdGE6XG4vL1xuLy8gICBpbXBvcnQgeyBDb252ZXJ0LCBSZXVuaW9uLCBBZ2VuZGFzIH0gZnJvbSBcIi4vZmlsZVwiO1xuLy9cbi8vICAgY29uc3QgcmV1bmlvbiA9IENvbnZlcnQudG9SZXVuaW9uKGpzb24pO1xuLy8gICBjb25zdCBhZ2VuZGFzID0gQ29udmVydC50b0FnZW5kYXMoanNvbik7XG4vL1xuLy8gVGhlc2UgZnVuY3Rpb25zIHdpbGwgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIEpTT04gZG9lc24ndFxuLy8gbWF0Y2ggdGhlIGV4cGVjdGVkIGludGVyZmFjZSwgZXZlbiBpZiB0aGUgSlNPTiBpcyB2YWxpZC5cblxuZXhwb3J0IGludGVyZmFjZSBSZXVuaW9uIHtcbiAgICByZXVuaW9uOiBSZXVuaW9uUmV1bmlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXVuaW9uUmV1bmlvbiB7XG4gICAgXCJAeG1sbnNcIjogICAgICAgICAgICAgICAgICAgICBzdHJpbmc7XG4gICAgXCJAeG1sbnM6eHNpXCI6ICAgICAgICAgICAgICAgICBzdHJpbmc7XG4gICAgXCJAeHNpOnR5cGVcIjogICAgICAgICAgICAgICAgICBSZXVuaW9uWHNpVHlwZTtcbiAgICB1aWQ6ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmc7XG4gICAgdGltZVN0YW1wRGVidXQ6ICAgICAgICAgICAgICAgRGF0ZTtcbiAgICB0aW1lU3RhbXBGaW4/OiAgICAgICAgICAgICAgICBzdHJpbmc7XG4gICAgbGlldT86ICAgICAgICAgICAgICAgICAgICAgICAgTGlldTtcbiAgICBjeWNsZURlVmllOiAgICAgICAgICAgICAgICAgICBDeWNsZURlVmllO1xuICAgIGRlbWFuZGV1cnM/OiAgICAgICAgICAgICAgICAgIERlbWFuZGV1cnMgfCBudWxsO1xuICAgIG9yZ2FuZVJldW5pUmVmOiAgICAgICAgICAgICAgIG51bGwgfCBzdHJpbmc7XG4gICAgdHlwZVJldW5pb24/OiAgICAgICAgICAgICAgICAgVHlwZVJldW5pb247XG4gICAgZGVtYW5kZXVyPzogICAgICAgICAgICAgICAgICAgRGVtYW5kZXVyIHwgbnVsbDtcbiAgICBwYXJ0aWNpcGFudHM/OiAgICAgICAgICAgICAgICBQdXJwbGVQYXJ0aWNpcGFudHMgfCBudWxsO1xuICAgIHZpc2lvQ29uZmVyZW5jZT86ICAgICAgICAgICAgIG51bGwgfCBzdHJpbmc7XG4gICAgT0RKPzogICAgICAgICAgICAgICAgICAgICAgICAgT2RqIHwgbnVsbDtcbiAgICBzZXNzaW9uUmVmPzogICAgICAgICAgICAgICAgICBudWxsIHwgc3RyaW5nO1xuICAgIG91dmVydHVyZVByZXNzZT86ICAgICAgICAgICAgIHN0cmluZztcbiAgICBjYXB0YXRpb25WaWRlbz86ICAgICAgICAgICAgICBzdHJpbmc7XG4gICAgY29tcHRlUmVuZHVSZWY/OiAgICAgICAgICAgICAgbnVsbCB8IHN0cmluZztcbiAgICBmb3JtYXRSZXVuaW9uPzogICAgICAgICAgICAgICBGb3JtYXRSZXVuaW9uO1xuICAgIGluZm9zUmV1bmlvbnNJbnRlcm5hdGlvbmFsZT86IEluZm9zUmV1bmlvbnNJbnRlcm5hdGlvbmFsZTtcbiAgICBpZGVudGlmaWFudHM/OiAgICAgICAgICAgICAgICBJZGVudGlmaWFudHM7XG59XG5cbmV4cG9ydCBlbnVtIFJldW5pb25Yc2lUeXBlIHtcbiAgICBSZXVuaW9uQ29tbWlzc2lvblR5cGUgPSBcInJldW5pb25Db21taXNzaW9uX3R5cGVcIixcbiAgICBSZXVuaW9uSW5pdFBhcmxlbWVudGFpcmVUeXBlID0gXCJyZXVuaW9uSW5pdFBhcmxlbWVudGFpcmVfdHlwZVwiLFxuICAgIFNlYW5jZVR5cGUgPSBcInNlYW5jZV90eXBlXCIsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2RqIHtcbiAgICBjb252b2NhdGlvbk9ESjogQ29udm9jYXRpb25PZGpDbGFzcyB8IG51bGw7XG4gICAgcmVzdW1lT0RKOiAgICAgIENvbnZvY2F0aW9uT2RqQ2xhc3MgfCBudWxsO1xuICAgIHBvaW50c09ESj86ICAgICBQb2ludHNPZGogfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnZvY2F0aW9uT2RqQ2xhc3Mge1xuICAgIGl0ZW06IHN0cmluZ1tdIHwgc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBvaW50c09kaiB7XG4gICAgcG9pbnRPREo6IFBvaW50T2RqRWxlbWVudFtdIHwgUG9pbnRPZGpFbGVtZW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBvaW50T2RqRWxlbWVudCB7XG4gICAgXCJAeHNpOnR5cGVcIjogICAgICAgICAgICAgUG9pbnRPZGpYc2lUeXBlO1xuICAgIHVpZDogICAgICAgICAgICAgICAgICAgICBzdHJpbmc7XG4gICAgY3ljbGVEZVZpZTogICAgICAgICAgICAgIEN5Y2xlRGVWaWU7XG4gICAgb2JqZXQ6ICAgICAgICAgICAgICAgICAgIHN0cmluZztcbiAgICBkZW1hbmRldXJQb2ludDogICAgICAgICAgbnVsbDtcbiAgICBwcm9jZWR1cmU6ICAgICAgICAgICAgICAgUHJvY2VkdXJlIHwgbnVsbDtcbiAgICBkb3NzaWVyc0xlZ2lzbGF0aWZzUmVmczogRG9zc2llcnNMZWdpc2xhdGlmc1JlZnMgfCBudWxsO1xuICAgIHR5cGVQb2ludE9ESjogICAgICAgICAgICBUeXBlUG9pbnRPZGo7XG4gICAgY29taXRlU2VjcmV0OiAgICAgICAgICAgIHN0cmluZztcbiAgICB0ZXh0ZXNBc3NvY2llczogICAgICAgICAgbnVsbDtcbiAgICBuYXR1cmVUcmF2YXV4T0RKPzogICAgICAgTmF0dXJlVHJhdmF1eE9kajtcbiAgICBkYXRlQ29uZlByZXM/OiAgICAgICAgICAgc3RyaW5nO1xuICAgIGRhdGVMZXR0cmVNaW5pc3RyZT86ICAgICBzdHJpbmc7XG59XG5cbmV4cG9ydCBlbnVtIFBvaW50T2RqWHNpVHlwZSB7XG4gICAgUG9kalJldW5pb25UeXBlID0gXCJwb2RqUmV1bmlvbl90eXBlXCIsXG4gICAgUG9kalNlYW5jZUNvbmZQcmVzVHlwZSA9IFwicG9kalNlYW5jZUNvbmZQcmVzX3R5cGVcIixcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDeWNsZURlVmllIHtcbiAgICBldGF0OiAgIEV0YXQ7XG4gICAgY2hyb25vOiBDaHJvbm87XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hyb25vIHtcbiAgICBjcmVhdGlvbjogc3RyaW5nO1xuICAgIGNsb3R1cmU6ICBudWxsIHwgc3RyaW5nO1xufVxuXG5leHBvcnQgZW51bSBFdGF0IHtcbiAgICBBbm51bMOpID0gXCJBbm51bMOpXCIsXG4gICAgQ29uZmlybcOpID0gXCJDb25maXJtw6lcIixcbiAgICBFdmVudHVlbCA9IFwiRXZlbnR1ZWxcIixcbiAgICBTdXBwcmltw6kgPSBcIlN1cHByaW3DqVwiLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvc3NpZXJzTGVnaXNsYXRpZnNSZWZzIHtcbiAgICBkb3NzaWVyUmVmOiBzdHJpbmdbXSB8IHN0cmluZztcbn1cblxuZXhwb3J0IGVudW0gTmF0dXJlVHJhdmF1eE9kaiB7XG4gICAgT2RqcHIgPSBcIk9ESlBSXCIsXG4gICAgT2Rqc24gPSBcIk9ESlNOXCIsXG59XG5cbmV4cG9ydCBlbnVtIFByb2NlZHVyZSB7XG4gICAgRGlzY3Vzc2lvbkfDqW7DqXJhbGVDb21tdW5lID0gXCJkaXNjdXNzaW9uIGfDqW7DqXJhbGUgY29tbXVuZVwiLFxuICAgIFByb2PDqWR1cmVERXhhbWVuU2ltcGxpZmnDqWVBcnRpY2xlMTAzID0gXCJwcm9jw6lkdXJlIGQnZXhhbWVuIHNpbXBsaWZpw6llLUFydGljbGUgMTAzXCIsXG4gICAgUHJvY8OpZHVyZURFeGFtZW5TaW1wbGlmacOpZUFydGljbGUxMDYgPSBcInByb2PDqWR1cmUgZCdleGFtZW4gc2ltcGxpZmnDqWUtQXJ0aWNsZSAxMDZcIixcbiAgICBQcm9jw6lkdXJlREV4YW1lblNpbXBsaWZpw6llQXJ0aWNsZTEwNyA9IFwicHJvY8OpZHVyZSBkJ2V4YW1lbiBzaW1wbGlmacOpZS1BcnRpY2xlIDEwN1wiLFxuICAgIFByb2PDqWR1cmVEZUzDqWdpc2xhdGlvbkVuQ29tbWlzc2lvbkFydGljbGUxMDcxID0gXCJwcm9jw6lkdXJlIGRlIGzDqWdpc2xhdGlvbiBlbiBjb21taXNzaW9uLUFydGljbGUgMTA3LTFcIixcbn1cblxuZXhwb3J0IGVudW0gVHlwZVBvaW50T2RqIHtcbiAgICBBbWVuZGVtZW50c0FydDg4ID0gXCJBbWVuZGVtZW50cyAoQXJ0LiA4OClcIixcbiAgICBBbWVuZGVtZW50c0FydDkxID0gXCJBbWVuZGVtZW50cyAoQXJ0LiA5MSlcIixcbiAgICBBdWRpdGlvbiA9IFwiQXVkaXRpb25cIixcbiAgICBBdWRpdGlvbk1pbmlzdHJlID0gXCJBdWRpdGlvbiBtaW5pc3RyZVwiLFxuICAgIEF1ZGl0aW9uTWluaXN0cmVPdXZlcnRlw4BMYVByZXNzZSA9IFwiQXVkaXRpb24gbWluaXN0cmUgb3V2ZXJ0ZSDDoCBsYSBwcmVzc2VcIixcbiAgICBBdWRpdGlvbk91dmVydGXDgExhUHJlc3NlID0gXCJBdWRpdGlvbiBvdXZlcnRlIMOgIGxhIHByZXNzZVwiLFxuICAgIENvbW11bmljYXRpb24gPSBcIkNvbW11bmljYXRpb25cIixcbiAgICBDb25zdGl0dXRpb25EZU1pc3Npb25ESW5mb3JtYXRpb24gPSBcIkNvbnN0aXR1dGlvbiBkZSBtaXNzaW9uIGQnaW5mb3JtYXRpb25cIixcbiAgICBEaXNjdXNzaW9uID0gXCJEaXNjdXNzaW9uXCIsXG4gICAgRMOpYmF0REluaXRpYXRpdmVQYXJsZW1lbnRhaXJlID0gXCJEw6liYXQgZCdpbml0aWF0aXZlIHBhcmxlbWVudGFpcmVcIixcbiAgICBEw6ljbGFyYXRpb25EdUdvdXZlcm5lbWVudFN1aXZpZURVbkTDqWJhdCA9IFwiRMOpY2xhcmF0aW9uIGR1IEdvdXZlcm5lbWVudCBzdWl2aWUgZCd1biBkw6liYXRcIixcbiAgICBFY2hhbmdlc0RlVnVlcyA9IFwiRWNoYW5nZXMgZGUgdnVlc1wiLFxuICAgIEV4YW1lbiA9IFwiRXhhbWVuXCIsXG4gICAgRXhwbGljYXRpb25zRGVWb3RlRGVzR3JvdXBlc0V0Vm90ZVBhclNjcnV0aW5QdWJsaWMgPSBcIkV4cGxpY2F0aW9ucyBkZSB2b3RlIGRlcyBncm91cGVzIGV0IHZvdGUgcGFyIHNjcnV0aW4gcHVibGljXCIsXG4gICAgRXhwbGljYXRpb25zRGVWb3RlRXRWb3RlUGFyU2NydXRpblB1YmxpYyA9IFwiRXhwbGljYXRpb25zIGRlIHZvdGUgZXQgdm90ZSBwYXIgc2NydXRpbiBwdWJsaWNcIixcbiAgICBGaXhhdGlvbkRlTE9yZHJlRHVKb3VyID0gXCJGaXhhdGlvbiBkZSBsJ29yZHJlIGR1IGpvdXJcIixcbiAgICBOb21pbmF0aW9uQnVyZWF1ID0gXCJOb21pbmF0aW9uIGJ1cmVhdVwiLFxuICAgIE5vbWluYXRpb25DYW5kaWRhdHNPcmdhbmlzbWVFeHRyYXBhcmxlbWVudGFpcmUgPSBcIk5vbWluYXRpb24gY2FuZGlkYXRzIG9yZ2FuaXNtZSBleHRyYXBhcmxlbWVudGFpcmVcIixcbiAgICBOb21pbmF0aW9uRFVuTWVtYnJlRFVuZU1pc3Npb25ESW5mb3JtYXRpb24gPSBcIk5vbWluYXRpb24gZCd1biBtZW1icmUgZCd1bmUgbWlzc2lvbiBkJ2luZm9ybWF0aW9uXCIsXG4gICAgTm9taW5hdGlvblJhcHBvcnRldXIgPSBcIk5vbWluYXRpb24gcmFwcG9ydGV1clwiLFxuICAgIE5vbWluYXRpb25SYXBwb3J0ZXVyREFwcGxpY2F0aW9uID0gXCJOb21pbmF0aW9uIHJhcHBvcnRldXIgZCdhcHBsaWNhdGlvblwiLFxuICAgIE5vbWluYXRpb25SYXBwb3J0ZXVyREluZm9ybWF0aW9uID0gXCJOb21pbmF0aW9uIHJhcHBvcnRldXIgZCdpbmZvcm1hdGlvblwiLFxuICAgIE5vbWluYXRpb25SYXBwb3J0ZXVyUG91ckF2aXMgPSBcIk5vbWluYXRpb24gcmFwcG9ydGV1ciBwb3VyIGF2aXNcIixcbiAgICBPdXZlcnR1cmVFdENsw7R0dXJlRGVTZXNzaW9uID0gXCJPdXZlcnR1cmUgZXQgY2zDtHR1cmUgZGUgc2Vzc2lvblwiLFxuICAgIFF1ZXN0aW9uc0F1R291dmVybmVtZW50ID0gXCJRdWVzdGlvbnMgYXUgR291dmVybmVtZW50XCIsXG4gICAgUXVlc3Rpb25zT3JhbGVzU2Fuc0TDqWJhdCA9IFwiUXVlc3Rpb25zIG9yYWxlcyBzYW5zIGTDqWJhdFwiLFxuICAgIFJhcHBvcnQgPSBcIlJhcHBvcnRcIixcbiAgICBSYXBwb3J0REluZm9ybWF0aW9uID0gXCJSYXBwb3J0IGQnaW5mb3JtYXRpb25cIixcbiAgICBSYXBwb3J0UG91ckF2aXMgPSBcIlJhcHBvcnQgcG91ciBhdmlzXCIsXG4gICAgU2VhbmNlc1Jlc2VydmVlc0dyb3VwZU9wcG9zaXRpb25PdU1pbm9yaXRhaXJlPVwiU8OpYW5jZXMgcsOpc2VydsOpZXMgw6AgdW4gZ3JvdXBlIGRlIGwnb3Bwb3NpdGlvbiBvdSBtaW5vcml0YWlyZVwiLFxuICAgIFN1aXRlRGVMYURpc2N1c3Npb24gPSBcIlN1aXRlIGRlIGxhIGRpc2N1c3Npb25cIixcbiAgICBUYWJsZVJvbmRlID0gXCJUYWJsZSByb25kZVwiLFxuICAgIFZvdGVQYXJTY3J1dGluUHVibGljID0gXCJWb3RlIHBhciBzY3J1dGluIHB1YmxpY1wiLFxuICAgIFZvdGVTb2xlbm5lbCA9IFwiVm90ZSBzb2xlbm5lbFwiLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlbWFuZGV1ciB7XG4gICAgYWN0ZXVyPzogQWN0ZXVyRWxlbWVudDtcbiAgICBvcmdhbmU/OiBPcmdhbmU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWN0ZXVyRWxlbWVudCB7XG4gICAgbm9tOiAgICAgICBudWxsIHwgc3RyaW5nO1xuICAgIGFjdGV1clJlZjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9yZ2FuZSB7XG4gICAgbm9tOiAgICAgICBzdHJpbmc7XG4gICAgb3JnYW5lUmVmOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVtYW5kZXVycyB7XG4gICAgYWN0ZXVyPzogQWN0ZXVyRWxlbWVudFtdIHwgQWN0ZXVyRWxlbWVudDtcbiAgICBvcmdhbmU/OiBPcmdhbmU7XG59XG5cbmV4cG9ydCBlbnVtIEZvcm1hdFJldW5pb24ge1xuICAgIEF1ZGl0aW9uRXh0ZXJuZSA9IFwiQXVkaXRpb25FeHRlcm5lXCIsXG4gICAgQXVkaXRpb25QYXJQcmVzaWRlbnRDb21taXNzaW9uID0gXCJBdWRpdGlvblBhclByZXNpZGVudENvbW1pc3Npb25cIixcbiAgICBBdWRpdGlvblBhclJhcHBvcnRldXIgPSBcIkF1ZGl0aW9uUGFyUmFwcG9ydGV1clwiLFxuICAgIE9yZGluYWlyZSA9IFwiT3JkaW5haXJlXCIsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWRlbnRpZmlhbnRzIHtcbiAgICBudW1TZWFuY2VKTzogbnVsbCB8IHN0cmluZztcbiAgICBpZEpPOiAgICAgICAgbnVsbCB8IHN0cmluZztcbiAgICBxdWFudGllbWU6ICAgUXVhbnRpZW1lO1xuICAgIERhdGVTZWFuY2U6ICBzdHJpbmc7XG59XG5cbmV4cG9ydCBlbnVtIFF1YW50aWVtZSB7XG4gICAgRGV1eGnDqG1lID0gXCJEZXV4acOobWVcIixcbiAgICBQcmVtacOocmUgPSBcIlByZW1pw6hyZVwiLFxuICAgIFRyb2lzacOobWUgPSBcIlRyb2lzacOobWVcIixcbiAgICBVbmlxdWUgPSBcIlVuaXF1ZVwiLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEluZm9zUmV1bmlvbnNJbnRlcm5hdGlvbmFsZSB7XG4gICAgZXN0UmV1bmlvbkludGVybmF0aW9uYWxlOiAgICAgc3RyaW5nO1xuICAgIGxpc3RlUGF5czogICAgICAgICAgICAgICAgICAgIExpc3RlUGF5cyB8IG51bGw7XG4gICAgaW5mb3JtYXRpb25zQ29tcGxlbWVudGFpcmVzPzogbnVsbCB8IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0ZVBheXMge1xuICAgIHBheXNSZWY6IHN0cmluZ1tdIHwgc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpZXUge1xuICAgIGNvZGU/OiAgICAgICAgIHN0cmluZyB8IG51bGw7XG4gICAgbGliZWxsZUNvdXJ0Pzogc3RyaW5nIHwgbnVsbDtcbiAgICBsaWJlbGxlTG9uZzogICBudWxsIHwgc3RyaW5nO1xuICAgIGxpZXVSZWY/OiAgICAgIHN0cmluZyB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVycGxlUGFydGljaXBhbnRzIHtcbiAgICBwYXJ0aWNpcGFudHNJbnRlcm5lczogIFB1cnBsZVBhcnRpY2lwYW50c0ludGVybmVzIHwgbnVsbDtcbiAgICBwZXJzb25uZXNBdWRpdGlvbm5lZXM6IFB1cnBsZVBlcnNvbm5lc0F1ZGl0aW9ubmVlcyB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVycGxlUGFydGljaXBhbnRzSW50ZXJuZXMge1xuICAgIHBhcnRpY2lwYW50SW50ZXJuZTogUGFydGljaXBhbnRJbnRlcm5lRWxlbWVudFtdIHwgUGFydGljaXBhbnRJbnRlcm5lRWxlbWVudDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYXJ0aWNpcGFudEludGVybmVFbGVtZW50IHtcbiAgICBhY3RldXJSZWY6IHN0cmluZztcbiAgICBwcmVzZW5jZTogIFByZXNlbmNlO1xufVxuXG5leHBvcnQgZW51bSBQcmVzZW5jZSB7XG4gICAgQWJzZW50ID0gXCJhYnNlbnRcIixcbiAgICBFeGN1c8OpID0gXCJleGN1c8OpXCIsXG4gICAgUHLDqXNlbnQgPSBcInByw6lzZW50XCIsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVycGxlUGVyc29ubmVzQXVkaXRpb25uZWVzIHtcbiAgICBwZXJzb25uZUF1ZGl0aW9ubmVlOiBudWxsW10gfCBudWxsO1xufVxuXG5leHBvcnQgZW51bSBUeXBlUmV1bmlvbiB7XG4gICAgRGVwID0gXCJERVBcIixcbiAgICBHYSA9IFwiR0FcIixcbiAgICBHZSA9IFwiR0VcIixcbiAgICBHZXZpID0gXCJHRVZJXCIsXG4gICAgR3AgPSBcIkdQXCIsXG4gICAgSMOpQXVyw6lsaWVuID0gXCJIw4kgQXVyw6lsaWVuXCIsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbmRhcyB7XG4gICAgcmV1bmlvbnM6IFJldW5pb25zO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJldW5pb25zIHtcbiAgICByZXVuaW9uOiBSZXVuaW9uRWxlbWVudFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJldW5pb25FbGVtZW50IHtcbiAgICB1aWQ6ICAgICAgICAgICAgICBzdHJpbmc7XG4gICAgdGltZVN0YW1wRGVidXQ6ICAgRGF0ZTtcbiAgICB0aW1lU3RhbXBGaW4/OiAgICBzdHJpbmc7XG4gICAgbGlldTogICAgICAgICAgICAgTGlldTtcbiAgICBjeWNsZURlVmllOiAgICAgICBDeWNsZURlVmllO1xuICAgIGRlbWFuZGV1cnM/OiAgICAgIERlbWFuZGV1cnMgfCBudWxsO1xuICAgIG9yZ2FuZVJldW5pUmVmOiAgIG51bGwgfCBzdHJpbmc7XG4gICAgdHlwZVJldW5pb24/OiAgICAgVHlwZVJldW5pb247XG4gICAgXCJAeG1sbnM6eHNpXCI/OiAgICBzdHJpbmc7XG4gICAgZGVtYW5kZXVyPzogICAgICAgbnVsbDtcbiAgICBwYXJ0aWNpcGFudHM/OiAgICBGbHVmZnlQYXJ0aWNpcGFudHMgfCBudWxsO1xuICAgIHNlc3Npb25SZWY/OiAgICAgIG51bGwgfCBzdHJpbmc7XG4gICAgb3V2ZXJ0dXJlUHJlc3NlPzogc3RyaW5nO1xuICAgIE9ESj86ICAgICAgICAgICAgIE9kajtcbiAgICBjb21wdGVSZW5kdVJlZj86ICBudWxsIHwgc3RyaW5nO1xuICAgIGlkZW50aWZpYW50cz86ICAgIElkZW50aWZpYW50cztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbHVmZnlQYXJ0aWNpcGFudHMge1xuICAgIHBhcnRpY2lwYW50c0ludGVybmVzOiAgRmx1ZmZ5UGFydGljaXBhbnRzSW50ZXJuZXMgfCBudWxsO1xuICAgIHBlcnNvbm5lc0F1ZGl0aW9ubmVlczogRmx1ZmZ5UGVyc29ubmVzQXVkaXRpb25uZWVzIHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbHVmZnlQYXJ0aWNpcGFudHNJbnRlcm5lcyB7XG4gICAgcGFydGljaXBhbnRJbnRlcm5lOiBQYXJ0aWNpcGFudEludGVybmVFbGVtZW50W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmx1ZmZ5UGVyc29ubmVzQXVkaXRpb25uZWVzIHtcbiAgICBwZXJzb25uZUF1ZGl0aW9ubmVlOiBQZXJzb25uZUF1ZGl0aW9ubmVlRWxlbWVudFtdIHwgUGVyc29ubmVBdWRpdGlvbm5lZUVsZW1lbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGVyc29ubmVBdWRpdGlvbm5lZUVsZW1lbnQge1xuICAgIHVpZDogICAgICBVaWQ7XG4gICAgaWRlbnQ6ICAgIElkZW50O1xuICAgIGRhdGVOYWlzOiBEYXRlIHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJZGVudCB7XG4gICAgY2l2OiAgICAgICAgQ2l2O1xuICAgIHByZW5vbTogICAgIHN0cmluZztcbiAgICBub206ICAgICAgICBzdHJpbmc7XG4gICAgYWxwaGE/OiAgICAgc3RyaW5nO1xuICAgIHRyaWdyYW1tZT86IG51bGwgfCBzdHJpbmc7XG59XG5cbmV4cG9ydCBlbnVtIENpdiB7XG4gICAgTSA9IFwiTS5cIixcbiAgICBNbWUgPSBcIk1tZVwiLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVpZCB7XG4gICAgXCJAeHNpOnR5cGVcIjogVWlkWHNpVHlwZTtcbiAgICBcIiN0ZXh0XCI6ICAgICBzdHJpbmc7XG59XG5cbmV4cG9ydCBlbnVtIFVpZFhzaVR5cGUge1xuICAgIElkQWN0ZXVyVHlwZSA9IFwiSWRBY3RldXJfdHlwZVwiLFxuICAgIElkUGVyc29ubmVFeHRlcm5lVHlwZSA9IFwiSWRQZXJzb25uZUV4dGVybmVfdHlwZVwiLFxufVxuXG4vLyBDb252ZXJ0cyBKU09OIHN0cmluZ3MgdG8vZnJvbSB5b3VyIHR5cGVzXG4vLyBhbmQgYXNzZXJ0cyB0aGUgcmVzdWx0cyBvZiBKU09OLnBhcnNlIGF0IHJ1bnRpbWVcbmV4cG9ydCBjbGFzcyBDb252ZXJ0IHtcbiAgICBwdWJsaWMgc3RhdGljIHRvUmV1bmlvbihqc29uOiBzdHJpbmcpOiBSZXVuaW9uIHtcbiAgICAgICAgcmV0dXJuIGNhc3QoSlNPTi5wYXJzZShqc29uKSwgcihcIlJldW5pb25cIikpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcmV1bmlvblRvSnNvbih2YWx1ZTogUmV1bmlvbik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh1bmNhc3QodmFsdWUsIHIoXCJSZXVuaW9uXCIpKSwgbnVsbCwgMik7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyB0b0FnZW5kYXMoanNvbjogc3RyaW5nKTogQWdlbmRhcyB7XG4gICAgICAgIHJldHVybiBjYXN0KEpTT04ucGFyc2UoanNvbiksIHIoXCJBZ2VuZGFzXCIpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGFnZW5kYXNUb0pzb24odmFsdWU6IEFnZW5kYXMpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodW5jYXN0KHZhbHVlLCByKFwiQWdlbmRhc1wiKSksIG51bGwsIDIpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gaW52YWxpZFZhbHVlKHR5cDogYW55LCB2YWw6IGFueSwga2V5OiBhbnkgPSAnJyk6IG5ldmVyIHtcbiAgICBpZiAoa2V5KSB7XG4gICAgICAgIHRocm93IEVycm9yKGBJbnZhbGlkIHZhbHVlIGZvciBrZXkgXCIke2tleX1cIi4gRXhwZWN0ZWQgdHlwZSAke0pTT04uc3RyaW5naWZ5KHR5cCl9IGJ1dCBnb3QgJHtKU09OLnN0cmluZ2lmeSh2YWwpfWApO1xuICAgIH1cbiAgICB0aHJvdyBFcnJvcihgSW52YWxpZCB2YWx1ZSAke0pTT04uc3RyaW5naWZ5KHZhbCl9IGZvciB0eXBlICR7SlNPTi5zdHJpbmdpZnkodHlwKX1gLCApO1xufVxuXG5mdW5jdGlvbiBqc29uVG9KU1Byb3BzKHR5cDogYW55KTogYW55IHtcbiAgICBpZiAodHlwLmpzb25Ub0pTID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgbWFwOiBhbnkgPSB7fTtcbiAgICAgICAgdHlwLnByb3BzLmZvckVhY2goKHA6IGFueSkgPT4gbWFwW3AuanNvbl0gPSB7IGtleTogcC5qcywgdHlwOiBwLnR5cCB9KTtcbiAgICAgICAgdHlwLmpzb25Ub0pTID0gbWFwO1xuICAgIH1cbiAgICByZXR1cm4gdHlwLmpzb25Ub0pTO1xufVxuXG5mdW5jdGlvbiBqc1RvSlNPTlByb3BzKHR5cDogYW55KTogYW55IHtcbiAgICBpZiAodHlwLmpzVG9KU09OID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgbWFwOiBhbnkgPSB7fTtcbiAgICAgICAgdHlwLnByb3BzLmZvckVhY2goKHA6IGFueSkgPT4gbWFwW3AuanNdID0geyBrZXk6IHAuanNvbiwgdHlwOiBwLnR5cCB9KTtcbiAgICAgICAgdHlwLmpzVG9KU09OID0gbWFwO1xuICAgIH1cbiAgICByZXR1cm4gdHlwLmpzVG9KU09OO1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm0odmFsOiBhbnksIHR5cDogYW55LCBnZXRQcm9wczogYW55LCBrZXk6IGFueSA9ICcnKTogYW55IHtcbiAgICBmdW5jdGlvbiB0cmFuc2Zvcm1QcmltaXRpdmUodHlwOiBzdHJpbmcsIHZhbDogYW55KTogYW55IHtcbiAgICAgICAgaWYgKHR5cGVvZiB0eXAgPT09IHR5cGVvZiB2YWwpIHJldHVybiB2YWw7XG4gICAgICAgIHJldHVybiBpbnZhbGlkVmFsdWUodHlwLCB2YWwsIGtleSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdHJhbnNmb3JtVW5pb24odHlwczogYW55W10sIHZhbDogYW55KTogYW55IHtcbiAgICAgICAgLy8gdmFsIG11c3QgdmFsaWRhdGUgYWdhaW5zdCBvbmUgdHlwIGluIHR5cHNcbiAgICAgICAgY29uc3QgbCA9IHR5cHMubGVuZ3RoO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdHlwID0gdHlwc1tpXTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zZm9ybSh2YWwsIHR5cCwgZ2V0UHJvcHMpO1xuICAgICAgICAgICAgfSBjYXRjaCAoXykge31cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW52YWxpZFZhbHVlKHR5cHMsIHZhbCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdHJhbnNmb3JtRW51bShjYXNlczogc3RyaW5nW10sIHZhbDogYW55KTogYW55IHtcbiAgICAgICAgaWYgKGNhc2VzLmluZGV4T2YodmFsKSAhPT0gLTEpIHJldHVybiB2YWw7XG4gICAgICAgIHJldHVybiBpbnZhbGlkVmFsdWUoY2FzZXMsIHZhbCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdHJhbnNmb3JtQXJyYXkodHlwOiBhbnksIHZhbDogYW55KTogYW55IHtcbiAgICAgICAgLy8gdmFsIG11c3QgYmUgYW4gYXJyYXkgd2l0aCBubyBpbnZhbGlkIGVsZW1lbnRzXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWwpKSByZXR1cm4gaW52YWxpZFZhbHVlKFwiYXJyYXlcIiwgdmFsKTtcbiAgICAgICAgcmV0dXJuIHZhbC5tYXAoZWwgPT4gdHJhbnNmb3JtKGVsLCB0eXAsIGdldFByb3BzKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdHJhbnNmb3JtRGF0ZSh2YWw6IGFueSk6IGFueSB7XG4gICAgICAgIGlmICh2YWwgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGQgPSBuZXcgRGF0ZSh2YWwpO1xuICAgICAgICBpZiAoaXNOYU4oZC52YWx1ZU9mKCkpKSB7XG4gICAgICAgICAgICByZXR1cm4gaW52YWxpZFZhbHVlKFwiRGF0ZVwiLCB2YWwpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRyYW5zZm9ybU9iamVjdChwcm9wczogeyBbazogc3RyaW5nXTogYW55IH0sIGFkZGl0aW9uYWw6IGFueSwgdmFsOiBhbnkpOiBhbnkge1xuICAgICAgICBpZiAodmFsID09PSBudWxsIHx8IHR5cGVvZiB2YWwgIT09IFwib2JqZWN0XCIgfHwgQXJyYXkuaXNBcnJheSh2YWwpKSB7XG4gICAgICAgICAgICByZXR1cm4gaW52YWxpZFZhbHVlKFwib2JqZWN0XCIsIHZhbCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzdWx0OiBhbnkgPSB7fTtcbiAgICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMocHJvcHMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHByb3AgPSBwcm9wc1trZXldO1xuICAgICAgICAgICAgY29uc3QgdiA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2YWwsIGtleSkgPyB2YWxba2V5XSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHJlc3VsdFtwcm9wLmtleV0gPSB0cmFuc2Zvcm0odiwgcHJvcC50eXAsIGdldFByb3BzLCBwcm9wLmtleSk7XG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh2YWwpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSB0cmFuc2Zvcm0odmFsW2tleV0sIGFkZGl0aW9uYWwsIGdldFByb3BzLCBrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBpZiAodHlwID09PSBcImFueVwiKSByZXR1cm4gdmFsO1xuICAgIGlmICh0eXAgPT09IG51bGwpIHtcbiAgICAgICAgaWYgKHZhbCA9PT0gbnVsbCkgcmV0dXJuIHZhbDtcbiAgICAgICAgcmV0dXJuIGludmFsaWRWYWx1ZSh0eXAsIHZhbCk7XG4gICAgfVxuICAgIGlmICh0eXAgPT09IGZhbHNlKSByZXR1cm4gaW52YWxpZFZhbHVlKHR5cCwgdmFsKTtcbiAgICB3aGlsZSAodHlwZW9mIHR5cCA9PT0gXCJvYmplY3RcIiAmJiB0eXAucmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdHlwID0gdHlwZU1hcFt0eXAucmVmXTtcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodHlwKSkgcmV0dXJuIHRyYW5zZm9ybUVudW0odHlwLCB2YWwpO1xuICAgIGlmICh0eXBlb2YgdHlwID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIHJldHVybiB0eXAuaGFzT3duUHJvcGVydHkoXCJ1bmlvbk1lbWJlcnNcIikgPyB0cmFuc2Zvcm1Vbmlvbih0eXAudW5pb25NZW1iZXJzLCB2YWwpXG4gICAgICAgICAgICA6IHR5cC5oYXNPd25Qcm9wZXJ0eShcImFycmF5SXRlbXNcIikgICAgPyB0cmFuc2Zvcm1BcnJheSh0eXAuYXJyYXlJdGVtcywgdmFsKVxuICAgICAgICAgICAgOiB0eXAuaGFzT3duUHJvcGVydHkoXCJwcm9wc1wiKSAgICAgICAgID8gdHJhbnNmb3JtT2JqZWN0KGdldFByb3BzKHR5cCksIHR5cC5hZGRpdGlvbmFsLCB2YWwpXG4gICAgICAgICAgICA6IGludmFsaWRWYWx1ZSh0eXAsIHZhbCk7XG4gICAgfVxuICAgIC8vIE51bWJlcnMgY2FuIGJlIHBhcnNlZCBieSBEYXRlIGJ1dCBzaG91bGRuJ3QgYmUuXG4gICAgaWYgKHR5cCA9PT0gRGF0ZSAmJiB0eXBlb2YgdmFsICE9PSBcIm51bWJlclwiKSByZXR1cm4gdHJhbnNmb3JtRGF0ZSh2YWwpO1xuICAgIHJldHVybiB0cmFuc2Zvcm1QcmltaXRpdmUodHlwLCB2YWwpO1xufVxuXG5mdW5jdGlvbiBjYXN0PFQ+KHZhbDogYW55LCB0eXA6IGFueSk6IFQge1xuICAgIHJldHVybiB0cmFuc2Zvcm0odmFsLCB0eXAsIGpzb25Ub0pTUHJvcHMpO1xufVxuXG5mdW5jdGlvbiB1bmNhc3Q8VD4odmFsOiBULCB0eXA6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIHRyYW5zZm9ybSh2YWwsIHR5cCwganNUb0pTT05Qcm9wcyk7XG59XG5cbmZ1bmN0aW9uIGEodHlwOiBhbnkpIHtcbiAgICByZXR1cm4geyBhcnJheUl0ZW1zOiB0eXAgfTtcbn1cblxuZnVuY3Rpb24gdSguLi50eXBzOiBhbnlbXSkge1xuICAgIHJldHVybiB7IHVuaW9uTWVtYmVyczogdHlwcyB9O1xufVxuXG5mdW5jdGlvbiBvKHByb3BzOiBhbnlbXSwgYWRkaXRpb25hbDogYW55KSB7XG4gICAgcmV0dXJuIHsgcHJvcHMsIGFkZGl0aW9uYWwgfTtcbn1cblxuLy8gZnVuY3Rpb24gbShhZGRpdGlvbmFsOiBhbnkpIHtcbi8vICAgICByZXR1cm4geyBwcm9wczogW10sIGFkZGl0aW9uYWwgfTtcbi8vIH1cblxuZnVuY3Rpb24gcihuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4geyByZWY6IG5hbWUgfTtcbn1cblxuY29uc3QgdHlwZU1hcDogYW55ID0ge1xuICAgIFwiUmV1bmlvblwiOiBvKFtcbiAgICAgICAgeyBqc29uOiBcInJldW5pb25cIiwganM6IFwicmV1bmlvblwiLCB0eXA6IHIoXCJSZXVuaW9uUmV1bmlvblwiKSB9LFxuICAgIF0sIGZhbHNlKSxcbiAgICBcIlJldW5pb25SZXVuaW9uXCI6IG8oW1xuICAgICAgICB7IGpzb246IFwiQHhtbG5zXCIsIGpzOiBcIkB4bWxuc1wiLCB0eXA6IFwiXCIgfSxcbiAgICAgICAgeyBqc29uOiBcIkB4bWxuczp4c2lcIiwganM6IFwiQHhtbG5zOnhzaVwiLCB0eXA6IFwiXCIgfSxcbiAgICAgICAgeyBqc29uOiBcIkB4c2k6dHlwZVwiLCBqczogXCJAeHNpOnR5cGVcIiwgdHlwOiByKFwiUmV1bmlvblhzaVR5cGVcIikgfSxcbiAgICAgICAgeyBqc29uOiBcInVpZFwiLCBqczogXCJ1aWRcIiwgdHlwOiBcIlwiIH0sXG4gICAgICAgIHsganNvbjogXCJ0aW1lU3RhbXBEZWJ1dFwiLCBqczogXCJ0aW1lU3RhbXBEZWJ1dFwiLCB0eXA6IERhdGUgfSxcbiAgICAgICAgeyBqc29uOiBcInRpbWVTdGFtcEZpblwiLCBqczogXCJ0aW1lU3RhbXBGaW5cIiwgdHlwOiB1KHVuZGVmaW5lZCwgXCJcIikgfSxcbiAgICAgICAgeyBqc29uOiBcImxpZXVcIiwganM6IFwibGlldVwiLCB0eXA6IHUodW5kZWZpbmVkLCByKFwiTGlldVwiKSkgfSxcbiAgICAgICAgeyBqc29uOiBcImN5Y2xlRGVWaWVcIiwganM6IFwiY3ljbGVEZVZpZVwiLCB0eXA6IHIoXCJDeWNsZURlVmllXCIpIH0sXG4gICAgICAgIHsganNvbjogXCJkZW1hbmRldXJzXCIsIGpzOiBcImRlbWFuZGV1cnNcIiwgdHlwOiB1KHVuZGVmaW5lZCwgdShyKFwiRGVtYW5kZXVyc1wiKSwgbnVsbCkpIH0sXG4gICAgICAgIHsganNvbjogXCJvcmdhbmVSZXVuaVJlZlwiLCBqczogXCJvcmdhbmVSZXVuaVJlZlwiLCB0eXA6IHUobnVsbCwgXCJcIikgfSxcbiAgICAgICAgeyBqc29uOiBcInR5cGVSZXVuaW9uXCIsIGpzOiBcInR5cGVSZXVuaW9uXCIsIHR5cDogdSh1bmRlZmluZWQsIHIoXCJUeXBlUmV1bmlvblwiKSkgfSxcbiAgICAgICAgeyBqc29uOiBcImRlbWFuZGV1clwiLCBqczogXCJkZW1hbmRldXJcIiwgdHlwOiB1KHVuZGVmaW5lZCwgdShyKFwiRGVtYW5kZXVyXCIpLCBudWxsKSkgfSxcbiAgICAgICAgeyBqc29uOiBcInBhcnRpY2lwYW50c1wiLCBqczogXCJwYXJ0aWNpcGFudHNcIiwgdHlwOiB1KHVuZGVmaW5lZCwgdShyKFwiUHVycGxlUGFydGljaXBhbnRzXCIpLCBudWxsKSkgfSxcbiAgICAgICAgeyBqc29uOiBcInZpc2lvQ29uZmVyZW5jZVwiLCBqczogXCJ2aXNpb0NvbmZlcmVuY2VcIiwgdHlwOiB1KHVuZGVmaW5lZCwgdShudWxsLCBcIlwiKSkgfSxcbiAgICAgICAgeyBqc29uOiBcIk9ESlwiLCBqczogXCJPREpcIiwgdHlwOiB1KHVuZGVmaW5lZCwgdShyKFwiT2RqXCIpLCBudWxsKSkgfSxcbiAgICAgICAgeyBqc29uOiBcInNlc3Npb25SZWZcIiwganM6IFwic2Vzc2lvblJlZlwiLCB0eXA6IHUodW5kZWZpbmVkLCB1KFwiXCIsIG51bGwpKSB9LFxuICAgICAgICB7IGpzb246IFwib3V2ZXJ0dXJlUHJlc3NlXCIsIGpzOiBcIm91dmVydHVyZVByZXNzZVwiLCB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSB9LFxuICAgICAgICB7IGpzb246IFwiY2FwdGF0aW9uVmlkZW9cIiwganM6IFwiY2FwdGF0aW9uVmlkZW9cIiwgdHlwOiB1KHVuZGVmaW5lZCwgXCJcIikgfSxcbiAgICAgICAgeyBqc29uOiBcImNvbXB0ZVJlbmR1UmVmXCIsIGpzOiBcImNvbXB0ZVJlbmR1UmVmXCIsIHR5cDogdSh1bmRlZmluZWQsIHUobnVsbCwgXCJcIikpIH0sXG4gICAgICAgIHsganNvbjogXCJmb3JtYXRSZXVuaW9uXCIsIGpzOiBcImZvcm1hdFJldW5pb25cIiwgdHlwOiB1KHVuZGVmaW5lZCwgcihcIkZvcm1hdFJldW5pb25cIikpIH0sXG4gICAgICAgIHsganNvbjogXCJpbmZvc1JldW5pb25zSW50ZXJuYXRpb25hbGVcIiwganM6IFwiaW5mb3NSZXVuaW9uc0ludGVybmF0aW9uYWxlXCIsIHR5cDogdSh1bmRlZmluZWQsIHIoXCJJbmZvc1JldW5pb25zSW50ZXJuYXRpb25hbGVcIikpIH0sXG4gICAgICAgIHsganNvbjogXCJpZGVudGlmaWFudHNcIiwganM6IFwiaWRlbnRpZmlhbnRzXCIsIHR5cDogdSh1bmRlZmluZWQsIHIoXCJJZGVudGlmaWFudHNcIikpIH0sXG4gICAgXSwgZmFsc2UpLFxuICAgIFwiT2RqXCI6IG8oW1xuICAgICAgICB7IGpzb246IFwiY29udm9jYXRpb25PREpcIiwganM6IFwiY29udm9jYXRpb25PREpcIiwgdHlwOiB1KHIoXCJDb252b2NhdGlvbk9kakNsYXNzXCIpLCBudWxsKSB9LFxuICAgICAgICB7IGpzb246IFwicmVzdW1lT0RKXCIsIGpzOiBcInJlc3VtZU9ESlwiLCB0eXA6IHUocihcIkNvbnZvY2F0aW9uT2RqQ2xhc3NcIiksIG51bGwpIH0sXG4gICAgICAgIHsganNvbjogXCJwb2ludHNPREpcIiwganM6IFwicG9pbnRzT0RKXCIsIHR5cDogdSh1bmRlZmluZWQsIHUocihcIlBvaW50c09kalwiKSwgbnVsbCk