UNPKG

@tricoteuses/assemblee

Version:

Retrieve, clean up & handle French Assemblée nationale's open data

777 lines (774 loc) 93.2 kB
"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