dmencu 0.8.52 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -22,7 +22,9 @@ import {Bloque, BotonFormulario,
22
22
  IdCasillero,
23
23
  PreguntaConSiNo,
24
24
  Texto, Estructura, InformacionHdr, DatosHdrUaPpal, ConfiguracionSorteoFormulario, ResumenEstado, DatosByPassPersistibles, IdOperativo, IdEnc, Libre, UnidadAnalisis,
25
- iterator, empty, ConfiguracionHabilitarBotonFormulario
25
+ iterator, empty, ConfiguracionHabilitarBotonFormulario,
26
+ CampoPkRaiz,
27
+ ValuePkRaiz
26
28
  } from "./tipos";
27
29
  import{
28
30
  accion_abrir_formulario,
@@ -31,8 +33,9 @@ import{
31
33
  calcularDisabledBF,
32
34
  calcularPermiteBorrarBF,
33
35
  calcularResumenVivienda,
36
+ crearEncuesta,
34
37
  getDatosByPass,
35
- getFormulariosForIdVivienda,
38
+ getFormulariosForValuePkRaiz,
36
39
  getMainFormForVivienda,
37
40
  intentarBackup,
38
41
  setCalcularVariables
@@ -285,7 +288,7 @@ function SaltoDespliegue({casillero,prefijo}:{casillero:Pregunta|Opcion|Filtro,
285
288
 
286
289
  function OpcionDespliegue(props:{casillero:Opcion, valorOpcion:number, variable:IdVariable, forPk:ForPk, leer:boolean, conBotonBorrar:boolean}){
287
290
  const {casillero} = props;
288
- var dispatch = useDispatch();
291
+ const dispatch = useDispatch();
289
292
  var saltoAutomatico = useSelector((state:CasoState)=>state.opciones.saltoAutomatico);
290
293
  var handleClick:React.MouseEventHandler<HTMLButtonElement> = async (event)=>{
291
294
  var container = subirHasta(event.target as HTMLElement, elemento=>elemento.classList.contains('pregunta') || elemento.classList.contains('multiple')) || document.getElementById('main_layout')!;
@@ -519,7 +522,7 @@ function EncabezadoDespliegue(props:{casillero:CasilleroEncabezable, verIdGuion?
519
522
 
520
523
  function DesplegarConfirmarBorrarRespuesta(props:{forPk:ForPk, variableBorrar:IdVariable}){
521
524
  var [open, setOpen] = useState(!!props.variableBorrar)
522
- var dispatch = useDispatch();
525
+ const dispatch = useDispatch();
523
526
  const handleClose = () => {
524
527
  dispatch(dispatchers.CONFIRMAR_BORRAR_RESPUESTA({forPk:props.forPk, variable:null}));
525
528
  setOpen(false);
@@ -715,7 +718,7 @@ function PreguntaDespliegue(props:{
715
718
  despliegueEncabezado:'lateral'|'superior'
716
719
  }){
717
720
  var {pregunta} = props;
718
- var dispatch=useDispatch();
721
+ const dispatch=useDispatch();
719
722
  var estado:EstadoVariable;
720
723
  var id = `pregunta-${pregunta.id_casillero}`
721
724
  registrarElemento({
@@ -805,7 +808,7 @@ var calcularDisabledBFAgregarListo = (
805
808
  }
806
809
 
807
810
  function botonesDelFormulario(r:Respuestas, unidad_analisis:IdUnidadAnalisis, estructura:Estructura, forPkPadre:ForPk, feedbackAll:{[formulario in PlainForPk]:FormStructureState<IdVariable, Valor, IdFin>}):HtmlTag<HTMLDivElement>{
808
- var formsVivienda = getFormulariosForIdVivienda(forPkPadre.vivienda);
811
+ var formsVivienda = getFormulariosForValuePkRaiz(forPkPadre[estructura.mainTDPK]);
809
812
  var uaDef = estructura.unidades_analisis[unidad_analisis];
810
813
  var arrayEstructuraFormularios = (likeAr(estructura.formularios)).array();
811
814
  var x = likeAr(uaDef.hijas).filter(uaHija=>
@@ -821,7 +824,7 @@ function botonesDelFormulario(r:Respuestas, unidad_analisis:IdUnidadAnalisis, es
821
824
  likeAr(r[uaHija.unidad_analisis]||[]).map((respuestasHija, i)=>{
822
825
  var num = Number(i)+1
823
826
  var forPkHijaParcial = {...forPkPadre, [uaHija.pk_agregada]: num};
824
- var configSorteoFormulario = estructura.configSorteo?estructura.configSorteo[getMainFormForVivienda(forPkPadre.vivienda!)]:null
827
+ var configSorteoFormulario = estructura.configSorteo?estructura.configSorteo[getMainFormForVivienda(forPkPadre[estructura.mainTDPK])]:null
825
828
  var habilitacionBotonFormulario = estructura.habilitacionBotonFormulario;
826
829
  return html.div({class:'numerador-ua'}, [
827
830
  html.div({class:'botones-ua'},[
@@ -862,7 +865,7 @@ function botonesDelFormulario(r:Respuestas, unidad_analisis:IdUnidadAnalisis, es
862
865
 
863
866
  function TextoDespliegue(props:{casillero:Texto, forPk:ForPk}){
864
867
  var {casillero, forPk} = props;
865
- var dispatch = useDispatch();
868
+ const dispatch = useDispatch();
866
869
  var habilitador = casillero.expresion_habilitar_js?getFuncionHabilitar(casillero.expresion_habilitar_js):()=>true;
867
870
  var {modoDespliegue} = useSelectorVivienda(forPk);
868
871
  var id = `texto-${casillero.id_casillero}`;
@@ -1083,7 +1086,7 @@ function BotonFormularioDespliegue(props:{casillero:BotonFormulario, formulario:
1083
1086
  fun: (_r:Respuestas)=>false
1084
1087
  });
1085
1088
  */
1086
- var dispatch = useDispatch();
1089
+ const dispatch = useDispatch();
1087
1090
  var [confirmarForzarIr, setConfirmarForzarIr] = useState<DefinicionFormularioAbrir|false|null>(null);
1088
1091
  var multipleFormularios=formularioAAbrir.unidad_analisis != props.formulario.unidad_analisis;
1089
1092
  var nuevoCampoPk = defOperativo.defUA[formularioAAbrir.unidad_analisis].pk;
@@ -1114,7 +1117,7 @@ function BotonFormularioDespliegue(props:{casillero:BotonFormulario, formulario:
1114
1117
  // var estadoDelBoton = feedbackRow.feedback['$B.F:'+casillero.salto as IdVariable].estado //original
1115
1118
  var estadoDelBoton = feedbackRow.feedback['$B.F:'+armoNomSalto as IdVariable].estado
1116
1119
  // console.log('BotonFormularioDespliegue estadoDelBoton ' +estadoDelBoton );
1117
- var configSorteoFormulario = estructura.configSorteo?estructura.configSorteo[getMainFormForVivienda(forPk.vivienda)]:null
1120
+ var configSorteoFormulario = estructura.configSorteo?estructura.configSorteo[getMainFormForVivienda(forPk[estructura.mainTDPK])]:null
1118
1121
  var habilitacionBotonFormulario = estructura.habilitacionBotonFormulario;
1119
1122
  listaDeBotonesAbrir = likeAr(conjunto).map((_, i)=>{
1120
1123
  let num:number = numberOrStringIncIfArray(i, conjunto) as number;
@@ -1424,14 +1427,14 @@ function BarraDeNavegacion(props:{forPk:ForPk, soloLectura:boolean, modoDirecto:
1424
1427
  const forPk = props.forPk;
1425
1428
  const {opciones} = useSelectorVivienda(forPk);
1426
1429
  const [confirmaCerrar, setConfirmaCerrar] = useState<boolean|null>(false);
1427
- var dominio = getDatosByPass().informacionHdr[forPk.vivienda].tem.dominio;
1430
+ var estructura = getEstructura();
1431
+ var dominio = getDatosByPass().informacionHdr[forPk[estructura.mainTDPK]].tem.dominio;
1428
1432
  var cerrarDirecto = async function(){
1429
1433
  removeCSSById(BOOTSTRAP_5_1_3_SRC);
1430
- var estructura = getEstructura();
1431
1434
  gotoConsistir(
1432
1435
  estructura.operativo as IdOperativo,
1433
- getDatosByPass().informacionHdr[forPk.vivienda].tarea.tarea,
1434
- forPk.vivienda
1436
+ getDatosByPass().informacionHdr[forPk[estructura.mainTDPK]].tarea.tarea,
1437
+ forPk[estructura.mainTDPK]
1435
1438
  );
1436
1439
  //var hash=new URLSearchParams(location.hash?.replace(/^\#/,'').split('&autoproced')[0]);
1437
1440
  ////hash.delete('autoproced')
@@ -1705,9 +1708,10 @@ export function DesplegarLineaResumenUAPrincipal(props:{
1705
1708
  }){
1706
1709
  const {numVivienda, respuestas, formPrincipal, tarea} = props;
1707
1710
  const id='viv-'+numVivienda;
1708
- const forPk:ForPk={formulario:formPrincipal, vivienda:Number(numVivienda) as IdEnc}; //no quitar el casteo porque viene como texto y necesito que sea número
1711
+ const estructura = getEstructura();
1712
+ const forPk:ForPk={formulario:formPrincipal, [estructura.mainTDPK]:Number(numVivienda) as IdEnc} as ForPk; //no quitar el casteo porque viene como texto y necesito que sea número
1709
1713
  var tem = getDatosByPass().informacionHdr[numVivienda].tem;
1710
- var dispatch = useDispatch();
1714
+ const dispatch = useDispatch();
1711
1715
  useEffect(()=>{
1712
1716
  volcadoInicialElementosRegistrados(forPk);
1713
1717
  intentarBackup(forPk)
@@ -1723,7 +1727,7 @@ export function DesplegarLineaResumenUAPrincipal(props:{
1723
1727
  //pregunto si es la misma vivienda porque la funcion se dispara
1724
1728
  //con todas las combinaciones de respuestas para cada forPk
1725
1729
  //@ts-ignore vivienda existe
1726
- if(r.vivienda == forPk.vivienda){
1730
+ if(r[estructura.mainTDPK] == forPk[estructura.mainTDPK]){
1727
1731
  elemento.setAttribute('resumen-estado',calcularResumenVivienda(forPk, feedbackAll, r).resumenEstado);
1728
1732
  }
1729
1733
  }
@@ -1765,7 +1769,11 @@ export function DesplegarCarga(props:{
1765
1769
  [formulario in PlainForPk]:FormStructureState<IdVariable, Valor, IdFin>
1766
1770
  }
1767
1771
  }){
1772
+ const [newSurvey, setNewSurvey] = useState(0);
1768
1773
  const {carga, idCarga, informacionHdr, respuestas} = props;
1774
+ var estructura = getEstructura();
1775
+ let cantLineasResumen = likeAr(informacionHdr).filter((informacion)=>informacion.tem.carga==idCarga).array().length;
1776
+ const dispatch = useDispatch();
1769
1777
  return <Paper className="carga" style={{marginBottom: '10px', padding: '10px'}}>
1770
1778
  <div className="informacion-carga">
1771
1779
  <div className="carga">Área: {idCarga}</div>
@@ -1790,23 +1798,44 @@ export function DesplegarCarga(props:{
1790
1798
  <col style={{width:"10%"}}/>
1791
1799
  <col style={{width:"15%"}}/>
1792
1800
  </colgroup>
1793
- <TableHead style={{fontSize: "1.2rem"}}>
1794
- <TableRow className="tr-carga">
1795
- <TableCell>domicilio</TableCell>
1796
- <TableCell>tarea</TableCell>
1797
- <TableCell>enc</TableCell>
1798
- </TableRow>
1799
- </TableHead>
1801
+ {cantLineasResumen?
1802
+ <TableHead style={{fontSize: "1.2rem"}}>
1803
+ <TableRow className="tr-carga">
1804
+ <TableCell>domicilio</TableCell>
1805
+ <TableCell>tarea</TableCell>
1806
+ <TableCell>enc</TableCell>
1807
+ </TableRow>
1808
+ </TableHead>
1809
+ :null}
1800
1810
  <TableBody>
1811
+ <>
1801
1812
  {likeAr(informacionHdr).filter((informacion)=>informacion.tem.carga==idCarga).map((informacion, numVivienda)=>
1802
1813
  <DesplegarLineaResumenUAPrincipal
1803
1814
  key={numVivienda}
1804
1815
  numVivienda={numVivienda}
1805
1816
  tarea={informacion.tarea.tarea}
1806
1817
  formPrincipal={informacion.tarea.main_form}
1807
- respuestas={respuestas.viviendas[numVivienda] as RespuestasRaiz}
1818
+ respuestas={respuestas[estructura.mainTD][numVivienda] as RespuestasRaiz}
1808
1819
  />
1809
1820
  ).array()}
1821
+ {estructura.permiteGenerarMuestra?
1822
+ <TableRow className="tr-carga-nuevo">
1823
+ <TableCell colSpan={3}>
1824
+ <Button
1825
+ variant="contained"
1826
+ color="primary"
1827
+ onClick={()=>
1828
+ crearEncuesta(idCarga,(forPkRaiz:ForPkRaiz)=>{
1829
+ dispatch(dispatchers.CAMBIAR_FORMULARIO({forPk:forPkRaiz, apilarVuelta:false}));
1830
+ })
1831
+ }
1832
+ >
1833
+ <ICON.Add/>
1834
+ </Button>
1835
+ </TableCell>
1836
+ </TableRow>
1837
+ :null}
1838
+ </>
1810
1839
  </TableBody>
1811
1840
  </Table>:
1812
1841
  <Table>
@@ -1864,7 +1893,7 @@ export function HojaDeRutaDespliegue(){
1864
1893
  var {cargas, num_sincro, informacionHdr, respuestas} = getDatosByPass();
1865
1894
  var {modo} = useSelector((state:CasoState)=>({modo:state.modo}));
1866
1895
  var feedbackRowValidator = getFeedbackRowValidator()
1867
- var dispatch = useDispatch();
1896
+ const dispatch = useDispatch();
1868
1897
  const updateOnlineStatus = function(){
1869
1898
  setOnline(window.navigator.onLine);
1870
1899
  }
@@ -1929,7 +1958,7 @@ export function ListaTextos(props:{textos:string[]}){
1929
1958
  }
1930
1959
 
1931
1960
  export function BienvenidaDespliegue(props:{modo:CasoState["modo"]}){
1932
- var dispatch=useDispatch();
1961
+ const dispatch=useDispatch();
1933
1962
  return <Paper className="bienvenida">
1934
1963
  {props.modo.demo?
1935
1964
  <>
@@ -2206,7 +2235,7 @@ setCalcularVariables((respuestasRaiz:RespuestasRaiz, forPk:ForPk)=>{
2206
2235
  autoCargarPersonas(configPadre,'viviendas', estructura)
2207
2236
  })
2208
2237
  }
2209
- respuestasRaiz.vdominio=getDatosByPass().informacionHdr[forPk.vivienda].tem.dominio;
2238
+ respuestasRaiz.vdominio=getDatosByPass().informacionHdr[forPk[estructura.mainTDPK]].tem.dominio;
2210
2239
  //TODO: MEJORAR EN ALGUN MOMENTO EL BOTON LISTO
2211
2240
  let totalH = respuestasRaiz['total_h' as IdVariable];
2212
2241
  respuestasRaiz['$B.F:S1' as IdVariable] = (respuestasRaiz['hogares'] || []).length == totalH?'ok':null;
@@ -20,7 +20,7 @@ export type TipocDestinos = 'P' | 'CP' | 'B' | 'FILTRO' | 'BF';
20
20
  export type Tipoc = TipocDestinos | 'F' | 'O' | 'OM' | 'CONS' | 'TEXTO' | 'LIBRE';
21
21
  export type IdTarea = 'encu' | 'recu' | 'supe';
22
22
  export type FeedbackVariable = Feedback<IdVariable, IdFin>;
23
- export type TipoVariables = 'texto' | 'numero' | 'fecha' | 'horas';
23
+ export type TipoVariables = 'texto' | 'numero' | 'fecha' | 'horas' | 'hora';
24
24
  export type Despliegue = 'horizontal' | 'oculta';
25
25
  export type CasilleroBase = {
26
26
  id_casillero?: string;
@@ -172,17 +172,14 @@ export type Formulario = CasilleroBase & {
172
172
  };
173
173
  export type CasillerosImplementados = Formulario | Bloque | Filtro | ConjuntoPreguntas | Pregunta | OpcionMultiple | Opcion | BotonFormulario | Consistencia | Texto | Libre;
174
174
  export type CampoPkRaiz = 'vivienda' | 'etc...';
175
+ export type ValuePkRaiz = IdEnc;
175
176
  export type ForPkRaiz = {
176
177
  formulario: IdFormulario;
177
- vivienda: IdEnc;
178
178
  } & {
179
- [campo in CampoPkRaiz]?: number;
179
+ [campo in CampoPkRaiz]: ValuePkRaiz;
180
180
  };
181
181
  export type CampoPk = 'vivienda' | 'hogar' | 'persona' | 'etc...';
182
- export type ForPk = {
183
- formulario: IdFormulario;
184
- vivienda: IdEnc;
185
- } & {
182
+ export type ForPk = ForPkRaiz & {
186
183
  [campo in CampoPk]?: number;
187
184
  };
188
185
  export type PlainForPk = '{"formulario":"F:F1","vivienda":"10202","persona":null}' | 'etc...';
@@ -249,13 +246,14 @@ export type DatosHdrUaPpal = {
249
246
  tarea: InfoTarea;
250
247
  tem: TEM;
251
248
  };
252
- export type IdCarga = "2020-07-07" | "2020-07-08";
249
+ export type IdCarga = "1" | "2" | "etc";
253
250
  export type EstadoCarga = 'resumen' | 'relevamiento' | 'recibo';
254
251
  export type Carga = {
255
252
  fecha: Date;
256
253
  estado_carga: EstadoCarga;
257
254
  necesarias: number;
258
255
  observaciones: string;
256
+ recepcionista: string;
259
257
  };
260
258
  export type Cargas = {
261
259
  [idCarga in IdCarga]: Carga;
@@ -284,6 +282,8 @@ export type Estructura = {
284
282
  [idUnidadAnalisis in IdUnidadAnalisis]: UnidadAnalisis;
285
283
  };
286
284
  tareas: TareasEstructura;
285
+ mainTD: IdUnidadAnalisis;
286
+ mainTDPK: CampoPkRaiz;
287
287
  timestamp: number;
288
288
  operativo: IdOperativo;
289
289
  configSorteo: ConfiguracionSorteo;
@@ -306,6 +306,7 @@ export type Estructura = {
306
306
  valor_sup: string;
307
307
  grupo0_sup: string;
308
308
  }[];
309
+ defaultInformacionHdr: DatosHdrUaPpal;
309
310
  };
310
311
  export type IdEnc = 130031 | 130032;
311
312
  export type InformacionHdr = {
@@ -366,7 +367,7 @@ export type DatosByPassPersistibles = {
366
367
  tarea: IdTarea;
367
368
  idper: string;
368
369
  cargas: Cargas;
369
- informaciinformacionHdr: InformacionHdr;
370
+ informacionHdr: InformacionHdr;
370
371
  soloLectura: boolean;
371
372
  token?: string;
372
373
  num_sincro?: number;
@@ -19,4 +19,4 @@
19
19
  exports.iterator = LikeAr.iterator;
20
20
  exports.empty = LikeAr.empty;
21
21
  });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlwb3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdW5sb2dnZWQvdGlwb3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0lBQUEsWUFBWSxDQUFDOzs7SUFFYixrQ0FBa0M7SUFrZWxDLFNBQWdCLFlBQVksQ0FBQyxLQUFXO1FBQ3BDLCtDQUErQztRQUMvQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUhELG9DQUdDO0lBRVUsUUFBQSxRQUFRLEdBQStDLE1BQU0sQ0FBQyxRQUFRLENBQUE7SUFDdEUsUUFBQSxLQUFLLEdBQTBELE1BQU0sQ0FBQyxLQUFLLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcclxuaW1wb3J0IHtTdHJ1Y3R1cmUsIEZlZWRiYWNrfSBmcm9tIFwicm93LXZhbGlkYXRvclwiO1xyXG5pbXBvcnQgKiBhcyBMaWtlQXIgZnJvbSBcImxpa2UtYXJcIjtcclxuXHJcbmV4cG9ydCB0eXBlIE1vZG9BbG1hY2VuYW1pZW50byA9ICdzZXNzaW9uJ3wgLy8gY3VhbmRvIHNlYSBwYXJhIHVuYSBzb2xhIHBlc3Rhw7FhLCBzZSB1c2EgZW4gbW9kbyBkaXJlY3RvLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbG9jYWwnICAgIC8vIHBhcmEgdG9kbyBlbCBkaXNwb3NpdGl2bywgc2UgdXNhIGFsIGNhcmdhciBob2phcyBkZSBydXRhIGVudHJlc1xyXG5cclxuZXhwb3J0IHR5cGUgSWRPcGNpb24gPSBudW1iZXJcclxuZXhwb3J0IHR5cGUgSWRPcGVyYXRpdm8gPSAnZXRvaTIxMSd8J2VhaDIwMjInfCdldGMuLi4nXHJcbmV4cG9ydCB0eXBlIElkVmFyaWFibGUgPSAndjEnfCd2Mid8J3YzJ3wnZXRjLi4uJ3wndmRvbWluaW8nfCckcDAnXHJcbmV4cG9ydCB0eXBlIElkUHJlZ3VudGEgPSAnUDEnfCdQMid8J2V0Yy4uLidcclxuZXhwb3J0IHR5cGUgSWRCbG9xdWUgPSAnQjEnfCdCMid8J2V0Yy4uLidcclxuZXhwb3J0IHR5cGUgSWRGb3JtdWxhcmlvID0gJ0YxJ3wnRjInfCdldGMuLi4nXHJcbmV4cG9ydCB0eXBlIElkVW5pZGFkQW5hbGlzaXMgPSAndml2aWVuZGFzJ3wnaG9nYXJlcyd8J3BlcnNvbmFzJ1xyXG5leHBvcnQgdHlwZSBJZEJvdG9uRm9ybXVsYXJpbyA9ICdCRjpGMSd8J0JGOkYyJ3wnZXRjLi4uJ1xyXG5leHBvcnQgdHlwZSBJZENvbnNpc3RlbmNpYSA9ICdDT05TMSd8J0NPTlMyJ3wnZXRjLi4uJ1xyXG5leHBvcnQgdHlwZSBJZFRleHRvID0gJ0QzMF9SRUYnfCdNRVNfUkVGJ3wnU0VNX1JFRid8J2V0Yy4uLidcclxuZXhwb3J0IHR5cGUgSWRGaWx0cm8gPSAnRklMVFJPMScgfCAnRklMVFJPMicgfCAnZXRjLi4uJ1xyXG5leHBvcnQgdHlwZSBJZENhc2lsbGVybyA9IElkVmFyaWFibGUgfCBJZFByZWd1bnRhIHwgSWRCbG9xdWUgfCBJZEZvcm11bGFyaW8gfCBJZEZpbHRybyB8IElkT3BjaW9uXHJcbmV4cG9ydCB0eXBlIElkRmluID0gJ2Zpbic7IC8vIG5ldmVyIC8vIFRPRE86IHBvZGVyIHBvbmVyICdGSU4nXHJcbmV4cG9ydCB0eXBlIElkRGVzdGlubyA9IElkUHJlZ3VudGEgfCBJZEJsb3F1ZSB8IElkRmluIHwgSWRGaWx0cm8gXHJcbmV4cG9ydCB0eXBlIFZhbG9yID0gc3RyaW5nfG51bWJlcnxudWxsO1xyXG5leHBvcnQgdHlwZSBUaXBvY0Rlc3Rpbm9zID0gJ1AnfCdDUCd8J0InfCdGSUxUUk8nfCdCRidcclxuZXhwb3J0IHR5cGUgVGlwb2MgPSBUaXBvY0Rlc3Rpbm9zIHwgJ0YnfCdPJ3wnT00nfCdDT05TJyB8J1RFWFRPJyB8ICdMSUJSRSdcclxuXHJcbmV4cG9ydCB0eXBlIElkVGFyZWEgPSAnZW5jdSd8J3JlY3UnfCdzdXBlJztcclxuXHJcbmV4cG9ydCB0eXBlIEZlZWRiYWNrVmFyaWFibGUgPSBGZWVkYmFjazxJZFZhcmlhYmxlLCBJZEZpbj5cclxuXHJcbmV4cG9ydCB0eXBlIFRpcG9WYXJpYWJsZXMgPSAndGV4dG8nfCdudW1lcm8nfCdmZWNoYSd8J2hvcmFzJ1xyXG5cclxuZXhwb3J0IHR5cGUgRGVzcGxpZWd1ZSA9ICdob3Jpem9udGFsJ3wnb2N1bHRhJ1xyXG5cclxuZXhwb3J0IHR5cGUgQ2FzaWxsZXJvQmFzZSA9IHtcclxuICAgIGlkX2Nhc2lsbGVybz86c3RyaW5nXHJcbiAgICB0aXBvYzpUaXBvY1xyXG4gICAgY2FzaWxsZXJvOklkQ2FzaWxsZXJvXHJcbiAgICBub21icmU6c3RyaW5nXHJcbiAgICBzYWx0bzpJZERlc3Rpbm98SWRGaW58bnVsbFxyXG4gICAgdmVyX2lkOnN0cmluZ3xudWxsXHJcbiAgICBkZXNwbGllZ3VlRW5jYWJlemFkbzonbGF0ZXJhbCd8J3N1cGVyaW9yJ3xudWxsXHJcbiAgICBkZXNwbGllZ3VlQ29udGVuaWRvOid2ZXJ0aWNhbCd8J2hvcml6b250YWwnfG51bGxcclxuICAgIGRlc3BsaWVndWVUaXBvSW5wdXQ6J3RlbCd8bnVsbFxyXG4gICAgZGVzcGxpZWd1ZU9jdWx0YTpib29sZWFufG51bGxcclxuICAgIGxlZXI6Ym9vbGVhbnxudWxsXHJcbiAgICBhY2xhcmFjaW9uOnN0cmluZ3xudWxsXHJcbiAgICBwcmltZXJhX3ZhcmlhYmxlPzpJZFZhcmlhYmxlfG51bGxcclxuICAgIHZhcl9uYW1lPzpJZFZhcmlhYmxlfG51bGxcclxuICAgIHZhcl9uYW1lX2VzcGVjaWFsPzpzdHJpbmd8bnVsbFxyXG4gICAgdGlwb3Zhcj86VGlwb1ZhcmlhYmxlc3wnb3BjaW9uZXMnfCdzaV9ubyd8bnVsbFxyXG4gICAgY2FzaWxsZXJvcz86Q2FzaWxsZXJvc0ltcGxlbWVudGFkb3NbXXxudWxsXHJcbiAgICBleHByZXNpb25faGFiaWxpdGFyPzpzdHJpbmdcclxuICAgIGV4cHJlc2lvbl9oYWJpbGl0YXJfanM/OnN0cmluZ1xyXG4gICAgZXhwcmVzaW9uX2F1dG9pbmdyZXNhcj86c3RyaW5nXHJcbiAgICBleHByZXNpb25fYXV0b2luZ3Jlc2FyX2pzPzpzdHJpbmdcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgT3BjaW9uPUNhc2lsbGVyb0Jhc2UgJiB7XHJcbiAgICB0aXBvYzonTydcclxuICAgIGNhc2lsbGVybzpJZE9wY2lvblxyXG4gICAgY2FzaWxsZXJvczpQcmVndW50YVNpbXBsZVtdXHJcbiAgICB2YXJfbmFtZT86bnVsbFxyXG4gICAgdGlwb3Zhcj86bnVsbFxyXG4gICAgcHJpbWVyYV92YXJpYWJsZT86bnVsbFxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBPcGNpb25TaT1PcGNpb24gJiB7XHJcbiAgICBjYXNpbGxlcm86MVxyXG4gICAgbm9tYnJlOidTw60nXHJcbiAgICBjYXNpbGxlcm9zOlByZWd1bnRhU2ltcGxlW10gXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIE9wY2lvbk5vPU9wY2lvbiAmIHtcclxuICAgIGNhc2lsbGVybzoyXHJcbiAgICBub21icmU6J05vJ1xyXG4gICAgY2FzaWxsZXJvczpQcmVndW50YVNpbXBsZVtdIFxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBPcGNpb25NdWx0aXBsZT1DYXNpbGxlcm9CYXNlICYge1xyXG4gICAgdGlwb2M6J09NJ1xyXG4gICAgdGlwb3Zhcjonb3BjaW9uZXMnXHJcbiAgICB2YXJfbmFtZTpJZFZhcmlhYmxlXHJcbiAgICBjYXNpbGxlcm9zOltPcGNpb25TaSwgT3BjaW9uTm9dXHJcbiAgICBjYWxjdWxhZGE/OmJvb2xlYW5cclxuICAgIGxpYnJlPzpib29sZWFuXHJcbiAgICB2YWxvcl9uc19uYzogYW55XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFByZWd1bnRhQmFzZSA9IENhc2lsbGVyb0Jhc2UgJiB7XHJcbiAgICB0aXBvYzonUCdcclxuICAgIG9wdGF0aXZvOmJvb2xlYW58bnVsbFxyXG4gICAgY2FzaWxsZXJvOklkUHJlZ3VudGFcclxuICAgIGNhbGN1bGFkYTogYm9vbGVhbnxudWxsXHJcbiAgICBsaWJyZTogYm9vbGVhbnxudWxsXHJcbiAgICB2YWxvcl9uc19uYzogYW55XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFByZWd1bnRhU2ltcGxlID0gUHJlZ3VudGFCYXNlICYge1xyXG4gICAgdGlwb3ZhcjpUaXBvVmFyaWFibGVzXHJcbiAgICB2YXJfbmFtZTpJZFZhcmlhYmxlXHJcbiAgICBsb25naXR1ZDpzdHJpbmdcclxuICAgIHNhbHRvX25zX25jOklkVmFyaWFibGV8bnVsbFxyXG4gICAgY2FzaWxsZXJvczogUHJlZ3VudGFTaW1wbGVbXVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBQcmVndW50YUNvblNpTm8gPSBQcmVndW50YUJhc2UgJiB7XHJcbiAgICB0aXBvdmFyOidzaV9ubydcclxuICAgIHZhcl9uYW1lOklkVmFyaWFibGVcclxuICAgIHNhbHRvX25zX25jOklkVmFyaWFibGV8bnVsbFxyXG4gICAgY2FzaWxsZXJvczogW09wY2lvblNpLCBPcGNpb25Ob11cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUHJlZ3VudGFDb25PcGNpb25lcyA9IFByZWd1bnRhQmFzZSAmIHtcclxuICAgIHRpcG92YXI6J29wY2lvbmVzJ1xyXG4gICAgdmFyX25hbWU6SWRWYXJpYWJsZVxyXG4gICAgc2FsdG9fbnNfbmM6SWRWYXJpYWJsZXxudWxsXHJcbiAgICBjYXNpbGxlcm9zOiBPcGNpb25bXVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBQcmVndW50YUNvbk9wY2lvbmVzTXVsdGlwbGVzID0gUHJlZ3VudGFCYXNlICYge1xyXG4gICAgdmFyX25hbWU/Om51bGxcclxuICAgIHRpcG92YXI/Om51bGxcclxuICAgIGNhc2lsbGVyb3M6IE9wY2lvbk11bHRpcGxlW11cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUHJlZ3VudGE9UHJlZ3VudGFTaW1wbGUgfCBQcmVndW50YUNvblNpTm8gfCBQcmVndW50YUNvbk9wY2lvbmVzIHwgUHJlZ3VudGFDb25PcGNpb25lc011bHRpcGxlc1xyXG5cclxuZXhwb3J0IHR5cGUgQ29uanVudG9QcmVndW50YXM9IENhc2lsbGVyb0Jhc2UgJiB7XHJcbiAgICB0aXBvYzonQ1AnXHJcbiAgICBjYXNpbGxlcm86SWRQcmVndW50YVxyXG4gICAgdmFyX25hbWU/Om51bGxcclxuICAgIHRpcG92YXI/Om51bGxcclxuICAgIGNhc2lsbGVyb3M6UHJlZ3VudGFbXVxyXG59XHJcblxyXG4vKlxyXG5leHBvcnQgaW50ZXJmYWNlIElDb250ZW5pZG8gZXh0ZW5kcyBDYXNpbGxlcm9CYXNlIHtcclxuICAgIGNhc2lsbGVyb3M6SUNvbnRlbmlkb1tdXHJcbn1cclxuKi9cclxuXHJcbmV4cG9ydCB0eXBlIEZpbHRybyA9IENhc2lsbGVyb0Jhc2UgJiB7XHJcbiAgICB0aXBvYzonRklMVFJPJ1xyXG4gICAgY2FzaWxsZXJvOklkRmlsdHJvXHJcbiAgICB2YXJfbmFtZT86bnVsbFxyXG4gICAgdGlwb3Zhcj86bnVsbFxyXG4gICAgcHJpbWVyYV92YXJpYWJsZT86bnVsbFxyXG4gICAgY2FsY3VsYWRhPzpudWxsXHJcbiAgICBsaWJyZT86bnVsbFxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBDb250ZW5pZG9Gb3JtdWxhcmlvPUJsb3F1ZXxQcmVndW50YXxDb25qdW50b1ByZWd1bnRhc3xGaWx0cm98Qm90b25Gb3JtdWxhcmlvfENvbnNpc3RlbmNpYXxUZXh0b1xyXG5cclxuZXhwb3J0IHR5cGUgQmxvcXVlID0gQ2FzaWxsZXJvQmFzZSAmIHtcclxuICAgIHRpcG9jOidCJ1xyXG4gICAgY2FzaWxsZXJvOklkQmxvcXVlXHJcbiAgICBjYXNpbGxlcm9zOkNvbnRlbmlkb0Zvcm11bGFyaW9bXVxyXG4gICAgdmFyX25hbWU/Om51bGxcclxuICAgIHRpcG92YXI/Om51bGxcclxuICAgIHVuaWRhZF9hbmFsaXNpcz86SWRVbmlkYWRBbmFsaXNpc1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBDb25zaXN0ZW5jaWEgPSBDYXNpbGxlcm9CYXNlICYge1xyXG4gICAgdGlwb2M6J0NPTlMnXHJcbiAgICBjYXNpbGxlcm86SWRDb25zaXN0ZW5jaWFcclxuICAgIHZhcl9uYW1lPzpudWxsXHJcbiAgICB0aXBvdmFyPzpudWxsXHJcbiAgICBwcmltZXJhX3ZhcmlhYmxlPzpudWxsXHJcbn1cclxuZXhwb3J0IHR5cGUgVGV4dG8gPSBDYXNpbGxlcm9CYXNlICYge1xyXG4gICAgdGlwb2M6J1RFWFRPJ1xyXG4gICAgY2FzaWxsZXJvOklkVGV4dG9cclxuICAgIHZhcl9uYW1lPzpudWxsXHJcbiAgICB0aXBvdmFyPzpudWxsXHJcbiAgICBwcmltZXJhX3ZhcmlhYmxlPzpudWxsXHJcbn1cclxuZXhwb3J0IHR5cGUgTGlicmUgPSBDYXNpbGxlcm9CYXNlICYge1xyXG4gICAgdGlwb2M6J0xJQlJFJ1xyXG4gICAgY2FzaWxsZXJvOklkVGV4dG9cclxuICAgIHZhcl9uYW1lPzpudWxsXHJcbiAgICB0aXBvdmFyPzpudWxsXHJcbiAgICBwcmltZXJhX3ZhcmlhYmxlPzpudWxsXHJcbn1cclxuZXhwb3J0IHR5cGUgQm90b25Gb3JtdWxhcmlvID0gQ2FzaWxsZXJvQmFzZSAmIHtcclxuICAgIHRpcG9jOidCRidcclxuICAgIGNhc2lsbGVybzpJZEJvdG9uRm9ybXVsYXJpb1xyXG4gICAgdmFyX25hbWU/Om51bGxcclxuICAgIHRpcG92YXI/Om51bGxcclxuICAgIHByaW1lcmFfdmFyaWFibGU/Om51bGxcclxuICAgIHZhcl9uYW1lX0JGPzpJZFZhcmlhYmxlXHJcbiAgICBsb25naXR1ZD86c3RyaW5nXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEZvcm11bGFyaW8gPSBDYXNpbGxlcm9CYXNlICYge1xyXG4gICAgdGlwb2M6J0YnXHJcbiAgICBjYXNpbGxlcm86SWRGb3JtdWxhcmlvXHJcbiAgICBmb3JtdWxhcmlvX3ByaW5jaXBhbDpib29sZWFuXHJcbiAgICBjYXNpbGxlcm9zOkNvbnRlbmlkb0Zvcm11bGFyaW9bXVxyXG4gICAgdmFyX25hbWU/Om51bGxcclxuICAgIHRpcG92YXI/Om51bGxcclxuICAgIGhlcm1hbm8/OnRydWVcclxuICAgIHVuaWRhZF9hbmFsaXNpczpJZFVuaWRhZEFuYWxpc2lzXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIENhc2lsbGVyb3NJbXBsZW1lbnRhZG9zPUZvcm11bGFyaW98QmxvcXVlfEZpbHRyb3xDb25qdW50b1ByZWd1bnRhc3xQcmVndW50YXxPcGNpb25NdWx0aXBsZXxPcGNpb258Qm90b25Gb3JtdWxhcmlvfENvbnNpc3RlbmNpYXxUZXh0b3xMaWJyZVxyXG5cclxuZXhwb3J0IHR5cGUgQ2FtcG9Qa1JhaXogPSAndml2aWVuZGEnfCdldGMuLi4nO1xyXG5cclxuZXhwb3J0IHR5cGUgRm9yUGtSYWl6PXtcclxuICAgIGZvcm11bGFyaW86SWRGb3JtdWxhcmlvLCBcclxuICAgIHZpdmllbmRhOklkRW5jXHJcbn0gJiB7XHJcbiAgICBbY2FtcG8gaW4gQ2FtcG9Qa1JhaXpdPzpudW1iZXJcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgQ2FtcG9QayA9ICd2aXZpZW5kYSd8J2hvZ2FyJ3wncGVyc29uYSd8J2V0Yy4uLic7XHJcbmV4cG9ydCB0eXBlIEZvclBrID0ge1xyXG4gICAgZm9ybXVsYXJpbzpJZEZvcm11bGFyaW8sIFxyXG4gICAgdml2aWVuZGE6SWRFbmNcclxufSAmIHtcclxuICAgIFtjYW1wbyBpbiBDYW1wb1BrXT86bnVtYmVyXHJcbn1cclxuZXhwb3J0IHR5cGUgUGxhaW5Gb3JQaz0ne1wiZm9ybXVsYXJpb1wiOlwiRjpGMVwiLFwidml2aWVuZGFcIjpcIjEwMjAyXCIsXCJwZXJzb25hXCI6bnVsbH0nfCdldGMuLi4nO1xyXG5cclxuZXhwb3J0IHR5cGUgT2JqZXRvTnVtZXJhZG9PQXJyYXk8VD4gPSBUW10gfCB7W24gaW4gbnVtYmVyXTpUfVxyXG5cclxuZXhwb3J0IHR5cGUgUmVzcHVlc3Rhc1VuYVVBID0ge1xyXG4gICAgW3ByZWd1bnRhIGluIElkVmFyaWFibGVdOlZhbG9yXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFJlc3B1ZXN0YUxhc1VBID0ge1xyXG4gICAgW3VhIGluIElkVW5pZGFkQW5hbGlzaXNdOk9iamV0b051bWVyYWRvT0FycmF5PFJlc3B1ZXN0YXM+XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFJlc3B1ZXN0YXM9IFJlc3B1ZXN0YXNVbmFVQSAmIFJlc3B1ZXN0YUxhc1VBXHJcblxyXG5leHBvcnQgdHlwZSBSZXNwdWVzdGFzUmFpej1SZXNwdWVzdGFzICYge1xyXG4gICAgcmVzdW1lbkVzdGFkbzpSZXN1bWVuRXN0YWRvXHJcbiAgICByZXN1bWVuRXN0YWRvU3VwOlJlc3VtZW5Fc3RhZG9cclxuICAgICRkaXJ0eTpib29sZWFuXHJcbiAgICBjb2ROb1JlYTogc3RyaW5nfG51bGxcclxuICAgIGNvZFJlYTogbnVtYmVyfG51bGxcclxuICAgIGNvZE5vUmVhU3VwOiBzdHJpbmd8bnVsbFxyXG4gICAgY29kUmVhU3VwOiBudW1iZXJ8bnVsbFxyXG59XHJcblxyXG4vKlxyXG4gICAgYWNsYXJhY2nDs246XHJcbiAgICB7djE6J3gnLCB2MjoneCcsIHBlcnNvbmFzOlt7cDE6MSwgcDI6J3h9LHtwMToyLCBwMjp4fV0sIG1hc2NvdGFzOltdIH1cclxuICAgIGVzdMOhIGFuaWRhZG8gcG9yIHVuaWRhZCBkZSBhbsOhbGlzaXNcclxuKi9cclxuXHJcbmV4cG9ydCB0eXBlIFVuaWRhZEFuYWxpc2lzID0ge1xyXG4gICAgdW5pZGFkX2FuYWxpc2lzOklkVW5pZGFkQW5hbGlzaXMsIFxyXG4gICAgcGFkcmU/OklkVW5pZGFkQW5hbGlzaXMsIFxyXG4gICAgcGtfYWdyZWdhZGE6Q2FtcG9QaywgXHJcbiAgICBwcmluY2lwYWw/OmJvb2xlYW4sIFxyXG4gICAgaGlqYXM6IHtbayBpbiBJZFVuaWRhZEFuYWxpc2lzXT86IFVuaWRhZEFuYWxpc2lzfVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBURU0gPSB7XHJcbiAgICBub21jYWxsZTpzdHJpbmdcclxuICAgIGRvbWluaW86bnVtYmVyXHJcbiAgICBzZWN0b3I6c3RyaW5nXHJcbiAgICBlZGlmaWNpbzpzdHJpbmdcclxuICAgIGVudHJhZGE6c3RyaW5nXHJcbiAgICBucm9jYXRhc3RyYWw6c3RyaW5nXHJcbiAgICBwaXNvOnN0cmluZ1x0XHJcbiAgICBkZXBhcnRhbWVudG86c3RyaW5nXHJcbiAgICBoYWJpdGFjaW9uOnN0cmluZ1xyXG4gICAgY2FzYTpzdHJpbmdcclxuICAgIHByaW9yaWRhZDoxfDJ8M1xyXG4gICAgb2JzZXJ2YWNpb25lczpzdHJpbmdcclxuICAgIHNlbGVjY2lvbmFkbzpudW1iZXIsXHJcbiAgICBjaXRhOiBzdHJpbmcsXHJcbiAgICBjYXJnYTpzdHJpbmdcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUmVzdW1lbkVzdGFkbyA9ICd2YWNpbycgfCAnY29uIHByb2JsZW1hcycgfCAnaW5jb21wbGV0bycgfCAnb2snIHwgJ25vIHJlYScgfCAnY2l0YSBwYWN0YWRhJztcclxuXHJcbmV4cG9ydCB0eXBlIEluZm9UYXJlYT0ge1xyXG4gICAgdGFyZWE6IElkVGFyZWFcclxuICAgIG5vdGFzPzpzdHJpbmdcclxuICAgIGZlY2hhX2FzaWduYWNpb24/OkRhdGVcclxuICAgIGFzaWduYWRvPzpzdHJpbmdcclxuICAgIG1haW5fZm9ybTogSWRGb3JtdWxhcmlvXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFZpc2l0YT17XHJcbiAgICBmZWNoYTogc3RyaW5nIHwgbnVsbFxyXG4gICAgaG9yYTogc3RyaW5nIHwgbnVsbFxyXG4gICAgaWRwZXI6IHN0cmluZyB8IG51bGxcclxuICAgIG9ic2VydmFjaW9uZXM6IHN0cmluZyB8IG51bGxcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgIERhdG9zSGRyVWFQcGFsPSB7XHJcbiAgICB0YXJlYTogSW5mb1RhcmVhXHJcbiAgICB0ZW06IFRFTVxyXG4gICAgXHJcbi8qXHJcbiAgICBhY2xhcmFjacOzbjpcclxuICAgIHt2MToneCcsIHYyOid4JywgcGVyc29uYXM6W3twMToxLCBwMjoneH0se3AxOjIsIHAyOnh9XSwgbWFzY290YXM6W10gfVxyXG4gICAgZXN0w6EgYW5pZGFkbyBwb3IgdW5pZGFkIGRlIGFuw6FsaXNpc1xyXG4qL1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBJZENhcmdhPVwiMjAyMC0wNy0wN1wifFwiMjAyMC0wNy0wOFwiXHJcblxyXG5leHBvcnQgdHlwZSBFc3RhZG9DYXJnYT0ncmVzdW1lbid8J3JlbGV2YW1pZW50byd8J3JlY2libydcclxuXHJcbmV4cG9ydCB0eXBlIENhcmdhPXtcclxuICAgIGZlY2hhOiBEYXRlXHJcbiAgICBlc3RhZG9fY2FyZ2E6IEVzdGFkb0NhcmdhXHJcbiAgICBuZWNlc2FyaWFzOiBudW1iZXJcclxuICAgIG9ic2VydmFjaW9uZXM6IHN0cmluZ1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBDYXJnYXM9e1xyXG4gICAgW2lkQ2FyZ2EgaW4gSWRDYXJnYV06IENhcmdhXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3I9U3RydWN0dXJlPElkVmFyaWFibGUsVmFsb3IsSWRGaW4+O1xyXG5cclxuZXhwb3J0IHR5cGUgTW9kb0Rlc3BsaWVndWUgPSAnbWV0YWRhdG9zJ3wncmVsZXZhbWllbnRvJ3wnUERGJ1xyXG5cclxuZXhwb3J0IHR5cGUgSW5mb0Zvcm11bGFyaW89e1xyXG4gICAgY2FzaWxsZXJvczpGb3JtdWxhcmlvLCAvLyBjYXNpbGxlcm9zIGFwbGFuYWRvc1xyXG4gICAgZXN0cnVjdHVyYVJvd1ZhbGlkYXRvcjpFc3RydWN0dXJhUm93VmFsaWRhdG9yIC8vIGVzdHJ1Y3R1cmEgZGUgdmFyaWFibGVzIHBhcmEgZWwgUm93VmFsaWRhdG9yXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIElkUmVzdWx0YWRvID0gJ0FWRVJJR1VBUid8J1RPRE8nO1xyXG5cclxuZXhwb3J0IHR5cGUgVGFyZWFzRXN0cnVjdHVyYT17XHJcbiAgICBbaWRUYXJlYSBpbiBJZFRhcmVhXTp7XHJcbiAgICAgICAgcmVzdWx0YWRvczp7XHJcbiAgICAgICAgICAgIFtpZFJlc3VsdGFkbyBpbiBJZFJlc3VsdGFkb106e1xyXG4gICAgICAgICAgICAgICAgZGVzY3JpcGNpb246c3RyaW5nXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEVzdHJ1Y3R1cmEgPSB7XHJcbiAgICBmb3JtdWxhcmlvczp7IFxyXG4gICAgICAgIFtub21icmVGb3JtdWxhcmlvIGluIElkRm9ybXVsYXJpb106SW5mb0Zvcm11bGFyaW9cclxuICAgIH1cclxuICAgIHVuaWRhZGVzX2FuYWxpc2lzOnsgXHJcbiAgICAgICAgW2lkVW5pZGFkQW5hbGlzaXMgaW4gSWRVbmlkYWRBbmFsaXNpc106IFVuaWRhZEFuYWxpc2lzXHJcbiAgICB9XHJcbiAgICB0YXJlYXM6VGFyZWFzRXN0cnVjdHVyYVxyXG4gICAgdGltZXN0YW1wOm51bWJlclxyXG4gICAgb3BlcmF0aXZvOklkT3BlcmF0aXZvXHJcbiAgICBjb25maWdTb3J0ZW86IENvbmZpZ3VyYWNpb25Tb3J0ZW9cclxuICAgIGhhYmlsaXRhY2lvbkJvdG9uRm9ybXVsYXJpbzogQ29uZmlndXJhY2lvbkhhYmlsaXRhckJvdG9uRm9ybXVsYXJpb1xyXG4gICAgcGVybWl0ZUdlbmVyYXJNdWVzdHJhOiBib29sZWFuXHJcbiAgICBjb25SZWFIb2dhcjogYm9vbGVhblxyXG5cdG5vUmVhczogeyBcclxuXHQgICAgICBub19yZWE6IHN0cmluZyAgXHJcblx0XHQgIGRlc2NyaXBjaW9uOiBzdHJpbmdcclxuXHRcdCAgZ3J1cG86ICAgICBzdHJpbmcgICAgXHJcblx0XHQgIHZhcmlhYmxlOiAgc3RyaW5nXHJcblx0XHQgIHZhbG9yOiAgICAgc3RyaW5nXHJcblx0XHQgIGdydXBvMDogICAgc3RyaW5nXHJcblx0fVtdXHJcbiAgICBub1JlYXNTdXA6IHsgXHJcbiAgICAgICAgbm9fcmVhX3N1cDogc3RyaW5nICBcclxuICAgICAgICBkZXNjX25vcmVhX3N1cDogc3RyaW5nXHJcbiAgICAgICAgZ3J1cG9fc3VwOiAgICAgc3RyaW5nICAgIFxyXG4gICAgICAgIHZhcmlhYmxlX3N1cDogIHN0cmluZ1xyXG4gICAgICAgIHZhbG9yX3N1cDogICAgIHN0cmluZ1xyXG4gICAgICAgIGdydXBvMF9zdXA6ICAgIHN0cmluZ1xyXG4gIH1bXVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBJZEVuYyA9IDEzMDAzMXwxMzAwMzI7XHJcbmV4cG9ydCB0eXBlIEluZm9ybWFjaW9uSGRyPXtbZW5jIGluIElkRW5jXTogRGF0b3NIZHJVYVBwYWx9XHJcblxyXG5leHBvcnQgdHlwZSBDYXNvU3RhdGU9e1xyXG4gICAgb3BjaW9uZXM6eyAvLyBkYXRvcyBkZSBuYXZlZ2FjacOzbiBxdWUgZWxpamUgZWwgdXN1YXJpb1xyXG4gICAgICAgIGZvclBrOkZvclBrfG51bGwgLy8gw61uZGljZSBkZW50cm8gZGUgbGFzIHVuaWRhZGVzIGRlIGFuw6FsaXNpcy4gTnVsbCA9IGVuIGhvamEgZGUgcnV0YVxyXG4gICAgICAgIHBpbGFGb3JQazpGb3JQa1tdXHJcbiAgICAgICAgbW9kb0Rlc3BsaWVndWU6TW9kb0Rlc3BsaWVndWVcclxuICAgICAgICBiaWVudmVuaWRvOmJvb2xlYW5cclxuICAgICAgICBtb2RvRGlyZWN0bzpib29sZWFuXHJcbiAgICAgICAgbW9kb0JvcnJhclJlc3B1ZXN0YTpJZFZhcmlhYmxlfG51bGxcclxuICAgICAgICBjb25DYW1wb09wY2lvbmVzOmJvb2xlYW5cclxuICAgICAgICBzYWx0b0F1dG9tYXRpY286Ym9vbGVhblxyXG4gICAgfSwgXHJcbiAgICBtb2RvOnsgLy8gbm8gc2UgcGVyc2lzdGVcclxuICAgICAgICBkZW1vOmJvb2xlYW5cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgRGVmT3BlcmF0aXZvID0ge1xyXG4gICAgZXNOb1JlYToocmVzcHVlc3RhczpSZXNwdWVzdGFzKT0+IHtjb2ROb1JlYTpzdHJpbmd8bnVsbCwgZXNOb1JlYTpib29sZWFufSxcclxuICAgIGVzTm9SZWFTdXA6KHJlc3B1ZXN0YXM6UmVzcHVlc3Rhcyk9PiB7Y29kTm9SZWFTdXA6c3RyaW5nfG51bGwsIGVzTm9SZWFTdXA6Ym9vbGVhbn0sXHJcbiAgICBlc1JlYWxpemFkYToocmVzcHVlc3RhczpSZXNwdWVzdGFzKT0+IHtjb2RSZWE6bnVtYmVyfG51bGwsIGVzUmVhOmJvb2xlYW59LFxyXG4gICAgZXNSZWFsaXphZGFTdXA6KHJlc3B1ZXN0YXM6UmVzcHVlc3Rhcyk9PiB7Y29kUmVhU3VwOm51bWJlcnxudWxsLCBlc1JlYVN1cDpib29sZWFufSxcclxuICAgIFVBcHJpbmNpcGFsOiBJZFVuaWRhZEFuYWxpc2lzLFxyXG4gICAgZGVmVUE6e1tpIGluIElkVW5pZGFkQW5hbGlzaXNdOntwazpJZFZhcmlhYmxlLCBpbmNsdWlkYXM6SWRVbmlkYWRBbmFsaXNpc1tdLCBpZHNGb3I6SWRGb3JtdWxhcmlvW119fSxcclxuICAgIGRlZkZvcjp7W2YgaW4gSWRGb3JtdWxhcmlvXTp7LyphcmJvbFVBOklkVW5pZGFkQW5hbGlzaXNbXSwgKi8gaGVybWFubz86dHJ1ZX19XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIERhdG9zQnlQYXNzUGVyc2lzdGlibGVzID0ge1xyXG4gICAgcmVzcHVlc3Rhczp7W3VhIGluIElkVW5pZGFkQW5hbGlzaXNdOlJlc3B1ZXN0YXNSYWl6W119XHJcbiAgICBtb2RvQWxtYWNlbmFtaWVudG86TW9kb0FsbWFjZW5hbWllbnRvXHJcbiAgICBwZXJzb25hOnN0cmluZ1xyXG4gICAgdGFyZWE6SWRUYXJlYVxyXG4gICAgaWRwZXI6c3RyaW5nXHJcbiAgICBjYXJnYXM6IENhcmdhc1xyXG4gICAgaW5mb3JtYWNpaW5mb3JtYWNpb25IZHI6IEluZm9ybWFjaW9uSGRyXHJcbiAgICBzb2xvTGVjdHVyYTogYm9vbGVhblxyXG4gICAgdG9rZW4/OnN0cmluZ1xyXG4gICAgbnVtX3NpbmNybz86bnVtYmVyXHJcbiAgICB0aW1lc3RhbXBFc3RydWN0dXJhPzpudW1iZXJcclxufVxyXG5cclxudHlwZSBDb25maWd1cmFjaW9uU29ydGVvVGFibGEgPSB7XHJcbiAgICBtZXRvZG86IFwidGFibGFcIixcclxuICAgIHBhcmFtX21ldG9kbzoge1xyXG4gICAgICAgIHRhYmxhOnN0cmluZ1tdLFxyXG4gICAgICAgIHZhcl9sZXRyYTpJZFZhcmlhYmxlLFxyXG4gICAgfSAgICBcclxufVxyXG5cclxudHlwZSBDb25maWd1cmFjaW9uU29ydGVvSGFzaCA9IHtcclxuICAgIG1ldG9kbzogXCJoYXNoXCIsXHJcbiAgICBwYXJhbV9tZXRvZG86IHtcclxuICAgICAgICB2YXJfY29lZjogW1xyXG4gICAgICAgICAgICB7dmFyOklkVmFyaWFibGUsIGNvZWY6bnVtYmVyfSxcclxuICAgICAgICAgICAge3ZhcjpJZFZhcmlhYmxlLCBjb2VmOm51bWJlcn0sXHJcbiAgICAgICAgXSxcclxuICAgICAgICBkaXZpc29yOiBudW1iZXJcclxuICAgIH0gICAgXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIENvbmZpZ3VyYWNpb25Tb3J0ZW8gPSB7W2tleSBpbiBJZEZvcm11bGFyaW9dOkNvbmZpZ3VyYWNpb25Tb3J0ZW9Gb3JtdWxhcmlvfVxyXG5cclxuZXhwb3J0IHR5cGUgQ29uZmlndXJhY2lvbkhhYmlsaXRhckJvdG9uRm9ybXVsYXJpbyA9IHtba2V5IGluIElkRm9ybXVsYXJpb106Q29uZmlndXJhY2lvbkhhYmlsaXRhckJvdG9uRm9ybXVsYXJpb0Zvcm19XHJcblxyXG5leHBvcnQgdHlwZSBDb25maWd1cmFjaW9uU29ydGVvRm9ybXVsYXJpbyA9IHtcclxuICAgIHVuaWRhZF9hbmFsaXNpczogSWRVbmlkYWRBbmFsaXNpcyxcclxuICAgIHVuaWRhZF9hbmFsaXNpc19wYWRyZTogSWRVbmlkYWRBbmFsaXNpcyxcclxuICAgIC8vZXhwcl9pbmNvbXBsZXRpdHVkOiBzdHJpbmcgLy9cIm5vdCAocDEpIG9yIG5vIHQgKHAyKSBvciBub3QocDMpXCJcclxuICAgIGV4cHJfaW5jb21wbGV0aXR1ZDoge1xyXG4gICAgICAgIFtrZXkgaW4gbnVtYmVyXTp7ZG9taW5pbzpudW1iZXIsIGV4cHI6c3RyaW5nfVxyXG4gICAgfSBcclxuICAgIC8vZXhwcl9pbmNvbXBsZXRpdHVkX2pzOiBzdHJpbmcgLy9zZSBjcmVhIGFsIGNvbXBpbGFyXHJcbiAgICBleHByX2luY29tcGxldGl0dWRfanM6IHtcclxuICAgICAgICBba2V5IGluIG51bWJlcl06e2RvbWluaW86bnVtYmVyLCBleHByOnN0cmluZ31cclxuICAgIH0gXHJcbiAgICBkaXNwYXJhZG9yOiBJZFZhcmlhYmxlIC8vXCJwOVwiXHJcbiAgICAvL2ZpbHRybzogc3RyaW5nIC8vXCJwMz49MThcIlxyXG4gICAgZmlsdHJvOiB7XHJcbiAgICAgICAgW2tleSBpbiBudW1iZXJdOntkb21pbmlvOm51bWJlciwgZXhwcjpzdHJpbmd9XHJcbiAgICB9IFxyXG4gICAgLy9maWx0cm9fanM6IHN0cmluZyAvL3NlIGNyZWEgYWwgY29tcGlsYXJcclxuICAgIGZpbHRyb19qczoge1xyXG4gICAgICAgIFtrZXkgaW4gbnVtYmVyXTp7ZG9taW5pbzpudW1iZXIsIGV4cHI6c3RyaW5nfVxyXG4gICAgfSBcclxuICAgIG9yZGVuOiB7XHJcbiAgICAgICAgdmFyaWFibGU6SWRWYXJpYWJsZVxyXG4gICAgICAgIG9yZGVuOiAxfC0xXHJcbiAgICB9W10gLy9bXCJwM1wiLCBcInAyXCIsIFwicDFcIiwgXCJwMFwiXSwgLy8gcDAgZXMgY29uc3RydWlkYSwgbm8gdmEgZW4gcGFyw6FtZXRyb3MsIHNlIHBvbmUgcGFyYSBxdWUgZWwgb3JkZW4gc2VhIGRldGVybWluw61zdGljb1xyXG4gICAgcGFyYW1ldHJvczpJZFZhcmlhYmxlW10vLyBbXCJwMVwiLFwicDJcIixcInAzXCIsIFwicDRcIiwgXCJwNVwiLCBcInA2XCJdLCAvLyB2YXJpYWJsZXMgcXVlIGFudWxhbiBhbCBkaXNwYXJhZG9yXHJcbiAgICBjYW50aWRhZF9zb3J0ZWFibGVzOiBJZFZhcmlhYmxlXHJcbiAgICBjYW50aWRhZF90b3RhbDogSWRWYXJpYWJsZVxyXG4gICAgcmVzdWx0YWRvOiBJZFZhcmlhYmxlIC8vXCJwMTFcIlxyXG4gICAgcmVzdWx0YWRvX21hbnVhbDogSWRWYXJpYWJsZSAvL1wicDExXCJcclxuICAgIHNvcnRlYWRvX21vc3RyYXI/OiB7c291cmNlOklkVmFyaWFibGUsIHRhcmdldDpJZFZhcmlhYmxlfVtdLFxyXG4gICAgaW5jb21wbGV0YXM6IElkVmFyaWFibGVcclxuICAgIHZhcmlhYmxlQm90b25Gb3JtdWxhcmlvVUE6IElkVmFyaWFibGUvLyckQi5GOlMxX1AnXHJcbiAgICB2YXJpYWJsZUJvdG9uRm9ybXVsYXJpb1VBSW5kaXZpZHVhbD86IElkVmFyaWFibGUgLy8nJEIuRjpJMSdcclxuICAgIGlkX2Zvcm11bGFyaW9faW5kaXZpZHVhbD86IElkRm9ybXVsYXJpbyAvLyAnRjpJMSdcclxuICAgIGlkX2Zvcm11bGFyaW9fcGFkcmU/OiBJZEZvcm11bGFyaW8gLy8gJ0Y6UzEnXHJcbn0gJiAoQ29uZmlndXJhY2lvblNvcnRlb0hhc2ggfCBDb25maWd1cmFjaW9uU29ydGVvVGFibGEpXHJcblxyXG5leHBvcnQgdHlwZSBDb25maWd1cmFjaW9uSGFiaWxpdGFyQm90b25Gb3JtdWxhcmlvRm9ybSA9IHtcclxuICAgIHVuaWRhZF9hbmFsaXNpczogSWRVbmlkYWRBbmFsaXNpcyxcclxuICAgIGV4cHJfaGFiaWxpdGFyX2JvdG9uOiBzdHJpbmcsXHJcbiAgICBleHByX2hhYmlsaXRhcl9ib3Rvbl9qczogc3RyaW5nLFxyXG4gICAgaGFiaWxpdGFyX2FncmVnYXJfbGlzdG86IGJvb2xlYW5cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHRvUGxhaW5Gb3JQayhmb3JQazpGb3JQayk6UGxhaW5Gb3JQa3tcclxuICAgIC8vIEB0cy1pZ25vcmUgc2FiZW1vcyBxdWUgaGF5IHF1ZSBoYWNlciB1biBKU09OXHJcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZm9yUGspO1xyXG59XHJcblxyXG5leHBvcnQgdmFyIGl0ZXJhdG9yOjxUPihvOk9iamV0b051bWVyYWRvT0FycmF5PFQ+KT0+SXRlcmFibGU8VD4gPSBMaWtlQXIuaXRlcmF0b3JcclxuZXhwb3J0IHZhciBlbXB0eTo8VD4obzpPYmpldG9OdW1lcmFkb09BcnJheTxUPnxudWxsfHVuZGVmaW5lZCk9PmJvb2xlYW4gPSBMaWtlQXIuZW1wdHlcclxuXHJcbmRlY2xhcmUgZ2xvYmFsIHtcclxuICAgIG5hbWVzcGFjZSBteU93bntcclxuICAgICAgICBpbnRlcmZhY2UgQWRkclBhcmFtcyB7XHJcbiAgICAgICAgICAgIHN0YXRlX2ZvclBrOnN0cmluZ1xyXG4gICAgICAgICAgICBzdGF0ZV9waWxhRm9yUGs6c3RyaW5nXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBEaXJlY2Npb25BY2Npb24gPSAnYXZhbmNlJyB8ICdyZXRyb2Nlc28nIHwgJ2JsYW5xdWVvJ1xyXG5cclxuZXhwb3J0IHR5cGUgRXN0YWRvQWNjaW9uID0ge1xyXG4gICAgb3BlcmF0aXZvOiBzdHJpbmdcclxuICAgIGVzdGFkbzogc3RyaW5nXHJcbiAgICBlYWNjaW9uOiBzdHJpbmdcclxuICAgIGNvbmRpY2lvbjogc3RyaW5nXHJcbiAgICBlc3RhZG9fZGVzdGlubzogc3RyaW5nXHJcbiAgICBlYWNjaW9uX2RpcmVjY2lvbjogRGlyZWNjaW9uQWNjaW9uXHJcbiAgICBwYXRoX2ljb25vX3N2Zzogc3RyaW5nXHJcbiAgICBub21icmVfcHJvY2VkdXJlOiBzdHJpbmdcclxuICAgIG5vbWJyZV93c2NyZWVuOiBzdHJpbmdcclxuICAgIGRlc2FjdGl2YV9ib3RvbjogYm9vbGVhblxyXG4gICAgY29uZmlybWE6IGJvb2xlYW5cclxufSJdfQ==
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlwb3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdW5sb2dnZWQvdGlwb3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0lBQUEsWUFBWSxDQUFDOzs7SUFFYixrQ0FBa0M7SUFxZWxDLFNBQWdCLFlBQVksQ0FBQyxLQUFXO1FBQ3BDLCtDQUErQztRQUMvQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUhELG9DQUdDO0lBRVUsUUFBQSxRQUFRLEdBQStDLE1BQU0sQ0FBQyxRQUFRLENBQUE7SUFDdEUsUUFBQSxLQUFLLEdBQTBELE1BQU0sQ0FBQyxLQUFLLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcclxuaW1wb3J0IHtTdHJ1Y3R1cmUsIEZlZWRiYWNrfSBmcm9tIFwicm93LXZhbGlkYXRvclwiO1xyXG5pbXBvcnQgKiBhcyBMaWtlQXIgZnJvbSBcImxpa2UtYXJcIjtcclxuaW1wb3J0IHsgT3BlcmF0aXZvR2VuZXJhdG9yIH0gZnJvbSBcIm1ldGEtZW5jXCI7XHJcblxyXG5leHBvcnQgdHlwZSBNb2RvQWxtYWNlbmFtaWVudG8gPSAnc2Vzc2lvbid8IC8vIGN1YW5kbyBzZWEgcGFyYSB1bmEgc29sYSBwZXN0YcOxYSwgc2UgdXNhIGVuIG1vZG8gZGlyZWN0byxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xvY2FsJyAgICAvLyBwYXJhIHRvZG8gZWwgZGlzcG9zaXRpdm8sIHNlIHVzYSBhbCBjYXJnYXIgaG9qYXMgZGUgcnV0YSBlbnRyZXNcclxuXHJcbmV4cG9ydCB0eXBlIElkT3BjaW9uID0gbnVtYmVyXHJcbmV4cG9ydCB0eXBlIElkT3BlcmF0aXZvID0gJ2V0b2kyMTEnfCdlYWgyMDIyJ3wnZXRjLi4uJ1xyXG5leHBvcnQgdHlwZSBJZFZhcmlhYmxlID0gJ3YxJ3wndjInfCd2Myd8J2V0Yy4uLid8J3Zkb21pbmlvJ3wnJHAwJ1xyXG5leHBvcnQgdHlwZSBJZFByZWd1bnRhID0gJ1AxJ3wnUDInfCdldGMuLi4nXHJcbmV4cG9ydCB0eXBlIElkQmxvcXVlID0gJ0IxJ3wnQjInfCdldGMuLi4nXHJcbmV4cG9ydCB0eXBlIElkRm9ybXVsYXJpbyA9ICdGMSd8J0YyJ3wnZXRjLi4uJ1xyXG5leHBvcnQgdHlwZSBJZFVuaWRhZEFuYWxpc2lzID0gJ3ZpdmllbmRhcyd8J2hvZ2FyZXMnfCdwZXJzb25hcydcclxuZXhwb3J0IHR5cGUgSWRCb3RvbkZvcm11bGFyaW8gPSAnQkY6RjEnfCdCRjpGMid8J2V0Yy4uLidcclxuZXhwb3J0IHR5cGUgSWRDb25zaXN0ZW5jaWEgPSAnQ09OUzEnfCdDT05TMid8J2V0Yy4uLidcclxuZXhwb3J0IHR5cGUgSWRUZXh0byA9ICdEMzBfUkVGJ3wnTUVTX1JFRid8J1NFTV9SRUYnfCdldGMuLi4nXHJcbmV4cG9ydCB0eXBlIElkRmlsdHJvID0gJ0ZJTFRSTzEnIHwgJ0ZJTFRSTzInIHwgJ2V0Yy4uLidcclxuZXhwb3J0IHR5cGUgSWRDYXNpbGxlcm8gPSBJZFZhcmlhYmxlIHwgSWRQcmVndW50YSB8IElkQmxvcXVlIHwgSWRGb3JtdWxhcmlvIHwgSWRGaWx0cm8gfCBJZE9wY2lvblxyXG5leHBvcnQgdHlwZSBJZEZpbiA9ICdmaW4nOyAvLyBuZXZlciAvLyBUT0RPOiBwb2RlciBwb25lciAnRklOJ1xyXG5leHBvcnQgdHlwZSBJZERlc3Rpbm8gPSBJZFByZWd1bnRhIHwgSWRCbG9xdWUgfCBJZEZpbiB8IElkRmlsdHJvIFxyXG5leHBvcnQgdHlwZSBWYWxvciA9IHN0cmluZ3xudW1iZXJ8bnVsbDtcclxuZXhwb3J0IHR5cGUgVGlwb2NEZXN0aW5vcyA9ICdQJ3wnQ1AnfCdCJ3wnRklMVFJPJ3wnQkYnXHJcbmV4cG9ydCB0eXBlIFRpcG9jID0gVGlwb2NEZXN0aW5vcyB8ICdGJ3wnTyd8J09NJ3wnQ09OUycgfCdURVhUTycgfCAnTElCUkUnXHJcblxyXG5leHBvcnQgdHlwZSBJZFRhcmVhID0gJ2VuY3UnfCdyZWN1J3wnc3VwZSc7XHJcblxyXG5leHBvcnQgdHlwZSBGZWVkYmFja1ZhcmlhYmxlID0gRmVlZGJhY2s8SWRWYXJpYWJsZSwgSWRGaW4+XHJcblxyXG5leHBvcnQgdHlwZSBUaXBvVmFyaWFibGVzID0gJ3RleHRvJ3wnbnVtZXJvJ3wnZmVjaGEnfCdob3Jhcyd8J2hvcmEnXHJcblxyXG5leHBvcnQgdHlwZSBEZXNwbGllZ3VlID0gJ2hvcml6b250YWwnfCdvY3VsdGEnXHJcblxyXG5leHBvcnQgdHlwZSBDYXNpbGxlcm9CYXNlID0ge1xyXG4gICAgaWRfY2FzaWxsZXJvPzpzdHJpbmdcclxuICAgIHRpcG9jOlRpcG9jXHJcbiAgICBjYXNpbGxlcm86SWRDYXNpbGxlcm9cclxuICAgIG5vbWJyZTpzdHJpbmdcclxuICAgIHNhbHRvOklkRGVzdGlub3xJZEZpbnxudWxsXHJcbiAgICB2ZXJfaWQ6c3RyaW5nfG51bGxcclxuICAgIGRlc3BsaWVndWVFbmNhYmV6YWRvOidsYXRlcmFsJ3wnc3VwZXJpb3InfG51bGxcclxuICAgIGRlc3BsaWVndWVDb250ZW5pZG86J3ZlcnRpY2FsJ3wnaG9yaXpvbnRhbCd8bnVsbFxyXG4gICAgZGVzcGxpZWd1ZVRpcG9JbnB1dDondGVsJ3xudWxsXHJcbiAgICBkZXNwbGllZ3VlT2N1bHRhOmJvb2xlYW58bnVsbFxyXG4gICAgbGVlcjpib29sZWFufG51bGxcclxuICAgIGFjbGFyYWNpb246c3RyaW5nfG51bGxcclxuICAgIHByaW1lcmFfdmFyaWFibGU/OklkVmFyaWFibGV8bnVsbFxyXG4gICAgdmFyX25hbWU/OklkVmFyaWFibGV8bnVsbFxyXG4gICAgdmFyX25hbWVfZXNwZWNpYWw/OnN0cmluZ3xudWxsXHJcbiAgICB0aXBvdmFyPzpUaXBvVmFyaWFibGVzfCdvcGNpb25lcyd8J3NpX25vJ3xudWxsXHJcbiAgICBjYXNpbGxlcm9zPzpDYXNpbGxlcm9zSW1wbGVtZW50YWRvc1tdfG51bGxcclxuICAgIGV4cHJlc2lvbl9oYWJpbGl0YXI/OnN0cmluZ1xyXG4gICAgZXhwcmVzaW9uX2hhYmlsaXRhcl9qcz86c3RyaW5nXHJcbiAgICBleHByZXNpb25fYXV0b2luZ3Jlc2FyPzpzdHJpbmdcclxuICAgIGV4cHJlc2lvbl9hdXRvaW5ncmVzYXJfanM/OnN0cmluZ1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBPcGNpb249Q2FzaWxsZXJvQmFzZSAmIHtcclxuICAgIHRpcG9jOidPJ1xyXG4gICAgY2FzaWxsZXJvOklkT3BjaW9uXHJcbiAgICBjYXNpbGxlcm9zOlByZWd1bnRhU2ltcGxlW11cclxuICAgIHZhcl9uYW1lPzpudWxsXHJcbiAgICB0aXBvdmFyPzpudWxsXHJcbiAgICBwcmltZXJhX3ZhcmlhYmxlPzpudWxsXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIE9wY2lvblNpPU9wY2lvbiAmIHtcclxuICAgIGNhc2lsbGVybzoxXHJcbiAgICBub21icmU6J1PDrSdcclxuICAgIGNhc2lsbGVyb3M6UHJlZ3VudGFTaW1wbGVbXSBcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgT3BjaW9uTm89T3BjaW9uICYge1xyXG4gICAgY2FzaWxsZXJvOjJcclxuICAgIG5vbWJyZTonTm8nXHJcbiAgICBjYXNpbGxlcm9zOlByZWd1bnRhU2ltcGxlW10gXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIE9wY2lvbk11bHRpcGxlPUNhc2lsbGVyb0Jhc2UgJiB7XHJcbiAgICB0aXBvYzonT00nXHJcbiAgICB0aXBvdmFyOidvcGNpb25lcydcclxuICAgIHZhcl9uYW1lOklkVmFyaWFibGVcclxuICAgIGNhc2lsbGVyb3M6W09wY2lvblNpLCBPcGNpb25Ob11cclxuICAgIGNhbGN1bGFkYT86Ym9vbGVhblxyXG4gICAgbGlicmU/OmJvb2xlYW5cclxuICAgIHZhbG9yX25zX25jOiBhbnlcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUHJlZ3VudGFCYXNlID0gQ2FzaWxsZXJvQmFzZSAmIHtcclxuICAgIHRpcG9jOidQJ1xyXG4gICAgb3B0YXRpdm86Ym9vbGVhbnxudWxsXHJcbiAgICBjYXNpbGxlcm86SWRQcmVndW50YVxyXG4gICAgY2FsY3VsYWRhOiBib29sZWFufG51bGxcclxuICAgIGxpYnJlOiBib29sZWFufG51bGxcclxuICAgIHZhbG9yX25zX25jOiBhbnlcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUHJlZ3VudGFTaW1wbGUgPSBQcmVndW50YUJhc2UgJiB7XHJcbiAgICB0aXBvdmFyOlRpcG9WYXJpYWJsZXNcclxuICAgIHZhcl9uYW1lOklkVmFyaWFibGVcclxuICAgIGxvbmdpdHVkOnN0cmluZ1xyXG4gICAgc2FsdG9fbnNfbmM6SWRWYXJpYWJsZXxudWxsXHJcbiAgICBjYXNpbGxlcm9zOiBQcmVndW50YVNpbXBsZVtdXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFByZWd1bnRhQ29uU2lObyA9IFByZWd1bnRhQmFzZSAmIHtcclxuICAgIHRpcG92YXI6J3NpX25vJ1xyXG4gICAgdmFyX25hbWU6SWRWYXJpYWJsZVxyXG4gICAgc2FsdG9fbnNfbmM6SWRWYXJpYWJsZXxudWxsXHJcbiAgICBjYXNpbGxlcm9zOiBbT3BjaW9uU2ksIE9wY2lvbk5vXVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBQcmVndW50YUNvbk9wY2lvbmVzID0gUHJlZ3VudGFCYXNlICYge1xyXG4gICAgdGlwb3Zhcjonb3BjaW9uZXMnXHJcbiAgICB2YXJfbmFtZTpJZFZhcmlhYmxlXHJcbiAgICBzYWx0b19uc19uYzpJZFZhcmlhYmxlfG51bGxcclxuICAgIGNhc2lsbGVyb3M6IE9wY2lvbltdXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFByZWd1bnRhQ29uT3BjaW9uZXNNdWx0aXBsZXMgPSBQcmVndW50YUJhc2UgJiB7XHJcbiAgICB2YXJfbmFtZT86bnVsbFxyXG4gICAgdGlwb3Zhcj86bnVsbFxyXG4gICAgY2FzaWxsZXJvczogT3BjaW9uTXVsdGlwbGVbXVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBQcmVndW50YT1QcmVndW50YVNpbXBsZSB8IFByZWd1bnRhQ29uU2lObyB8IFByZWd1bnRhQ29uT3BjaW9uZXMgfCBQcmVndW50YUNvbk9wY2lvbmVzTXVsdGlwbGVzXHJcblxyXG5leHBvcnQgdHlwZSBDb25qdW50b1ByZWd1bnRhcz0gQ2FzaWxsZXJvQmFzZSAmIHtcclxuICAgIHRpcG9jOidDUCdcclxuICAgIGNhc2lsbGVybzpJZFByZWd1bnRhXHJcbiAgICB2YXJfbmFtZT86bnVsbFxyXG4gICAgdGlwb3Zhcj86bnVsbFxyXG4gICAgY2FzaWxsZXJvczpQcmVndW50YVtdXHJcbn1cclxuXHJcbi8qXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUNvbnRlbmlkbyBleHRlbmRzIENhc2lsbGVyb0Jhc2Uge1xyXG4gICAgY2FzaWxsZXJvczpJQ29udGVuaWRvW11cclxufVxyXG4qL1xyXG5cclxuZXhwb3J0IHR5cGUgRmlsdHJvID0gQ2FzaWxsZXJvQmFzZSAmIHtcclxuICAgIHRpcG9jOidGSUxUUk8nXHJcbiAgICBjYXNpbGxlcm86SWRGaWx0cm9cclxuICAgIHZhcl9uYW1lPzpudWxsXHJcbiAgICB0aXBvdmFyPzpudWxsXHJcbiAgICBwcmltZXJhX3ZhcmlhYmxlPzpudWxsXHJcbiAgICBjYWxjdWxhZGE/Om51bGxcclxuICAgIGxpYnJlPzpudWxsXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIENvbnRlbmlkb0Zvcm11bGFyaW89QmxvcXVlfFByZWd1bnRhfENvbmp1bnRvUHJlZ3VudGFzfEZpbHRyb3xCb3RvbkZvcm11bGFyaW98Q29uc2lzdGVuY2lhfFRleHRvXHJcblxyXG5leHBvcnQgdHlwZSBCbG9xdWUgPSBDYXNpbGxlcm9CYXNlICYge1xyXG4gICAgdGlwb2M6J0InXHJcbiAgICBjYXNpbGxlcm86SWRCbG9xdWVcclxuICAgIGNhc2lsbGVyb3M6Q29udGVuaWRvRm9ybXVsYXJpb1tdXHJcbiAgICB2YXJfbmFtZT86bnVsbFxyXG4gICAgdGlwb3Zhcj86bnVsbFxyXG4gICAgdW5pZGFkX2FuYWxpc2lzPzpJZFVuaWRhZEFuYWxpc2lzXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIENvbnNpc3RlbmNpYSA9IENhc2lsbGVyb0Jhc2UgJiB7XHJcbiAgICB0aXBvYzonQ09OUydcclxuICAgIGNhc2lsbGVybzpJZENvbnNpc3RlbmNpYVxyXG4gICAgdmFyX25hbWU/Om51bGxcclxuICAgIHRpcG92YXI/Om51bGxcclxuICAgIHByaW1lcmFfdmFyaWFibGU/Om51bGxcclxufVxyXG5leHBvcnQgdHlwZSBUZXh0byA9IENhc2lsbGVyb0Jhc2UgJiB7XHJcbiAgICB0aXBvYzonVEVYVE8nXHJcbiAgICBjYXNpbGxlcm86SWRUZXh0b1xyXG4gICAgdmFyX25hbWU/Om51bGxcclxuICAgIHRpcG92YXI/Om51bGxcclxuICAgIHByaW1lcmFfdmFyaWFibGU/Om51bGxcclxufVxyXG5leHBvcnQgdHlwZSBMaWJyZSA9IENhc2lsbGVyb0Jhc2UgJiB7XHJcbiAgICB0aXBvYzonTElCUkUnXHJcbiAgICBjYXNpbGxlcm86SWRUZXh0b1xyXG4gICAgdmFyX25hbWU/Om51bGxcclxuICAgIHRpcG92YXI/Om51bGxcclxuICAgIHByaW1lcmFfdmFyaWFibGU/Om51bGxcclxufVxyXG5leHBvcnQgdHlwZSBCb3RvbkZvcm11bGFyaW8gPSBDYXNpbGxlcm9CYXNlICYge1xyXG4gICAgdGlwb2M6J0JGJ1xyXG4gICAgY2FzaWxsZXJvOklkQm90b25Gb3JtdWxhcmlvXHJcbiAgICB2YXJfbmFtZT86bnVsbFxyXG4gICAgdGlwb3Zhcj86bnVsbFxyXG4gICAgcHJpbWVyYV92YXJpYWJsZT86bnVsbFxyXG4gICAgdmFyX25hbWVfQkY/OklkVmFyaWFibGVcclxuICAgIGxvbmdpdHVkPzpzdHJpbmdcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgRm9ybXVsYXJpbyA9IENhc2lsbGVyb0Jhc2UgJiB7XHJcbiAgICB0aXBvYzonRidcclxuICAgIGNhc2lsbGVybzpJZEZvcm11bGFyaW9cclxuICAgIGZvcm11bGFyaW9fcHJpbmNpcGFsOmJvb2xlYW5cclxuICAgIGNhc2lsbGVyb3M6Q29udGVuaWRvRm9ybXVsYXJpb1tdXHJcbiAgICB2YXJfbmFtZT86bnVsbFxyXG4gICAgdGlwb3Zhcj86bnVsbFxyXG4gICAgaGVybWFubz86dHJ1ZVxyXG4gICAgdW5pZGFkX2FuYWxpc2lzOklkVW5pZGFkQW5hbGlzaXNcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgQ2FzaWxsZXJvc0ltcGxlbWVudGFkb3M9Rm9ybXVsYXJpb3xCbG9xdWV8RmlsdHJvfENvbmp1bnRvUHJlZ3VudGFzfFByZWd1bnRhfE9wY2lvbk11bHRpcGxlfE9wY2lvbnxCb3RvbkZvcm11bGFyaW98Q29uc2lzdGVuY2lhfFRleHRvfExpYnJlXHJcblxyXG5leHBvcnQgdHlwZSBDYW1wb1BrUmFpeiA9ICd2aXZpZW5kYSd8J2V0Yy4uLic7XHJcblxyXG5leHBvcnQgdHlwZSBWYWx1ZVBrUmFpeiA9IElkRW5jXHJcblxyXG5leHBvcnQgdHlwZSBGb3JQa1JhaXo9e1xyXG4gICAgZm9ybXVsYXJpbzpJZEZvcm11bGFyaW9cclxufSAmIHtcclxuICAgIFtjYW1wbyBpbiBDYW1wb1BrUmFpel06VmFsdWVQa1JhaXpcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgQ2FtcG9QayA9ICd2aXZpZW5kYSd8J2hvZ2FyJ3wncGVyc29uYSd8J2V0Yy4uLic7XHJcbmV4cG9ydCB0eXBlIEZvclBrID0gRm9yUGtSYWl6ICYge1xyXG4gICAgW2NhbXBvIGluIENhbXBvUGtdPzpudW1iZXJcclxufVxyXG5leHBvcnQgdHlwZSBQbGFpbkZvclBrPSd7XCJmb3JtdWxhcmlvXCI6XCJGOkYxXCIsXCJ2aXZpZW5kYVwiOlwiMTAyMDJcIixcInBlcnNvbmFcIjpudWxsfSd8J2V0Yy4uLic7XHJcblxyXG5leHBvcnQgdHlwZSBPYmpldG9OdW1lcmFkb09BcnJheTxUPiA9IFRbXSB8IHtbbiBpbiBudW1iZXJdOlR9XHJcblxyXG5leHBvcnQgdHlwZSBSZXNwdWVzdGFzVW5hVUEgPSB7XHJcbiAgICBbcHJlZ3VudGEgaW4gSWRWYXJpYWJsZV06VmFsb3JcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUmVzcHVlc3RhTGFzVUEgPSB7XHJcbiAgICBbdWEgaW4gSWRVbmlkYWRBbmFsaXNpc106T2JqZXRvTnVtZXJhZG9PQXJyYXk8UmVzcHVlc3Rhcz5cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUmVzcHVlc3Rhcz0gUmVzcHVlc3Rhc1VuYVVBICYgUmVzcHVlc3RhTGFzVUFcclxuXHJcbmV4cG9ydCB0eXBlIFJlc3B1ZXN0YXNSYWl6PVJlc3B1ZXN0YXMgJiB7XHJcbiAgICByZXN1bWVuRXN0YWRvOlJlc3VtZW5Fc3RhZG9cclxuICAgIHJlc3VtZW5Fc3RhZG9TdXA6UmVzdW1lbkVzdGFkb1xyXG4gICAgJGRpcnR5OmJvb2xlYW5cclxuICAgIGNvZE5vUmVhOiBzdHJpbmd8bnVsbFxyXG4gICAgY29kUmVhOiBudW1iZXJ8bnVsbFxyXG4gICAgY29kTm9SZWFTdXA6IHN0cmluZ3xudWxsXHJcbiAgICBjb2RSZWFTdXA6IG51bWJlcnxudWxsXHJcbn1cclxuXHJcbi8qXHJcbiAgICBhY2xhcmFjacOzbjpcclxuICAgIHt2MToneCcsIHYyOid4JywgcGVyc29uYXM6W3twMToxLCBwMjoneH0se3AxOjIsIHAyOnh9XSwgbWFzY290YXM6W10gfVxyXG4gICAgZXN0w6EgYW5pZGFkbyBwb3IgdW5pZGFkIGRlIGFuw6FsaXNpc1xyXG4qL1xyXG5cclxuZXhwb3J0IHR5cGUgVW5pZGFkQW5hbGlzaXMgPSB7XHJcbiAgICB1bmlkYWRfYW5hbGlzaXM6SWRVbmlkYWRBbmFsaXNpcywgXHJcbiAgICBwYWRyZT86SWRVbmlkYWRBbmFsaXNpcywgXHJcbiAgICBwa19hZ3JlZ2FkYTpDYW1wb1BrLCBcclxuICAgIHByaW5jaXBhbD86Ym9vbGVhbiwgXHJcbiAgICBoaWphczoge1trIGluIElkVW5pZGFkQW5hbGlzaXNdPzogVW5pZGFkQW5hbGlzaXN9XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFRFTSA9IHtcclxuICAgIG5vbWNhbGxlOnN0cmluZ1xyXG4gICAgZG9taW5pbzpudW1iZXJcclxuICAgIHNlY3RvcjpzdHJpbmdcclxuICAgIGVkaWZpY2lvOnN0cmluZ1xyXG4gICAgZW50cmFkYTpzdHJpbmdcclxuICAgIG5yb2NhdGFzdHJhbDpzdHJpbmdcclxuICAgIHBpc286c3RyaW5nXHRcclxuICAgIGRlcGFydGFtZW50bzpzdHJpbmdcclxuICAgIGhhYml0YWNpb246c3RyaW5nXHJcbiAgICBjYXNhOnN0cmluZ1xyXG4gICAgcHJpb3JpZGFkOjF8MnwzXHJcbiAgICBvYnNlcnZhY2lvbmVzOnN0cmluZ1xyXG4gICAgc2VsZWNjaW9uYWRvOm51bWJlcixcclxuICAgIGNpdGE6IHN0cmluZyxcclxuICAgIGNhcmdhOnN0cmluZ1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBSZXN1bWVuRXN0YWRvID0gJ3ZhY2lvJyB8ICdjb24gcHJvYmxlbWFzJyB8ICdpbmNvbXBsZXRvJyB8ICdvaycgfCAnbm8gcmVhJyB8ICdjaXRhIHBhY3RhZGEnO1xyXG5cclxuZXhwb3J0IHR5cGUgSW5mb1RhcmVhPSB7XHJcbiAgICB0YXJlYTogSWRUYXJlYVxyXG4gICAgbm90YXM/OnN0cmluZ1xyXG4gICAgZmVjaGFfYXNpZ25hY2lvbj86RGF0ZVxyXG4gICAgYXNpZ25hZG8/OnN0cmluZ1xyXG4gICAgbWFpbl9mb3JtOiBJZEZvcm11bGFyaW9cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgVmlzaXRhPXtcclxuICAgIGZlY2hhOiBzdHJpbmcgfCBudWxsXHJcbiAgICBob3JhOiBzdHJpbmcgfCBudWxsXHJcbiAgICBpZHBlcjogc3RyaW5nIHwgbnVsbFxyXG4gICAgb2JzZXJ2YWNpb25lczogc3RyaW5nIHwgbnVsbFxyXG59XHJcblxyXG5leHBvcnQgdHlwZSAgRGF0b3NIZHJVYVBwYWw9IHtcclxuICAgIHRhcmVhOiBJbmZvVGFyZWFcclxuICAgIHRlbTogVEVNXHJcbiAgICBcclxuLypcclxuICAgIGFjbGFyYWNpw7NuOlxyXG4gICAge3YxOid4JywgdjI6J3gnLCBwZXJzb25hczpbe3AxOjEsIHAyOid4fSx7cDE6MiwgcDI6eH1dLCBtYXNjb3RhczpbXSB9XHJcbiAgICBlc3TDoSBhbmlkYWRvIHBvciB1bmlkYWQgZGUgYW7DoWxpc2lzXHJcbiovXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIElkQ2FyZ2E9XCIxXCJ8XCIyXCJ8XCJldGNcIlxyXG5cclxuZXhwb3J0IHR5cGUgRXN0YWRvQ2FyZ2E9J3Jlc3VtZW4nfCdyZWxldmFtaWVudG8nfCdyZWNpYm8nXHJcblxyXG5leHBvcnQgdHlwZSBDYXJnYT17XHJcbiAgICBmZWNoYTogRGF0ZVxyXG4gICAgZXN0YWRvX2NhcmdhOiBFc3RhZG9DYXJnYVxyXG4gICAgbmVjZXNhcmlhczogbnVtYmVyXHJcbiAgICBvYnNlcnZhY2lvbmVzOiBzdHJpbmdcclxuICAgIHJlY2VwY2lvbmlzdGE6IHN0cmluZ1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBDYXJnYXM9e1xyXG4gICAgW2lkQ2FyZ2EgaW4gSWRDYXJnYV06IENhcmdhXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3I9U3RydWN0dXJlPElkVmFyaWFibGUsVmFsb3IsSWRGaW4+O1xyXG5cclxuZXhwb3J0IHR5cGUgTW9kb0Rlc3BsaWVndWUgPSAnbWV0YWRhdG9zJ3wncmVsZXZhbWllbnRvJ3wnUERGJ1xyXG5cclxuZXhwb3J0IHR5cGUgSW5mb0Zvcm11bGFyaW89e1xyXG4gICAgY2FzaWxsZXJvczpGb3JtdWxhcmlvLCAvLyBjYXNpbGxlcm9zIGFwbGFuYWRvc1xyXG4gICAgZXN0cnVjdHVyYVJvd1ZhbGlkYXRvcjpFc3RydWN0dXJhUm93VmFsaWRhdG9yIC8vIGVzdHJ1Y3R1cmEgZGUgdmFyaWFibGVzIHBhcmEgZWwgUm93VmFsaWRhdG9yXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIElkUmVzdWx0YWRvID0gJ0FWRVJJR1VBUid8J1RPRE8nO1xyXG5cclxuZXhwb3J0IHR5cGUgVGFyZWFzRXN0cnVjdHVyYT17XHJcbiAgICBbaWRUYXJlYSBpbiBJZFRhcmVhXTp7XHJcbiAgICAgICAgcmVzdWx0YWRvczp7XHJcbiAgICAgICAgICAgIFtpZFJlc3VsdGFkbyBpbiBJZFJlc3VsdGFkb106e1xyXG4gICAgICAgICAgICAgICAgZGVzY3JpcGNpb246c3RyaW5nXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEVzdHJ1Y3R1cmEgPSB7XHJcbiAgICBmb3JtdWxhcmlvczp7IFxyXG4gICAgICAgIFtub21icmVGb3JtdWxhcmlvIGluIElkRm9ybXVsYXJpb106SW5mb0Zvcm11bGFyaW9cclxuICAgIH1cclxuICAgIHVuaWRhZGVzX2FuYWxpc2lzOnsgXHJcbiAgICAgICAgW2lkVW5pZGFkQW5hbGlzaXMgaW4gSWRVbmlkYWRBbmFsaXNpc106IFVuaWRhZEFuYWxpc2lzXHJcbiAgICB9XHJcbiAgICB0YXJlYXM6VGFyZWFzRXN0cnVjdHVyYVxyXG4gICAgbWFpblREOiBJZFVuaWRhZEFuYWxpc2lzXHJcbiAgICBtYWluVERQSzogQ2FtcG9Qa1JhaXpcclxuICAgIHRpbWVzdGFtcDpudW1iZXJcclxuICAgIG9wZXJhdGl2bzpJZE9wZXJhdGl2b1xyXG4gICAgY29uZmlnU29ydGVvOiBDb25maWd1cmFjaW9uU29ydGVvXHJcbiAgICBoYWJpbGl0YWNpb25Cb3RvbkZvcm11bGFyaW86IENvbmZpZ3VyYWNpb25IYWJpbGl0YXJCb3RvbkZvcm11bGFyaW9cclxuICAgIHBlcm1pdGVHZW5lcmFyTXVlc3RyYTogYm9vbGVhblxyXG4gICAgY29uUmVhSG9nYXI6IGJvb2xlYW5cclxuXHRub1JlYXM6IHsgXHJcblx0ICAgICAgbm9fcmVhOiBzdHJpbmcgIFxyXG5cdFx0ICBkZXNjcmlwY2lvbjogc3RyaW5nXHJcblx0XHQgIGdydXBvOiAgICAgc3RyaW5nICAgIFxyXG5cdFx0ICB2YXJpYWJsZTogIHN0cmluZ1xyXG5cdFx0ICB2YWxvcjogICAgIHN0cmluZ1xyXG5cdFx0ICBncnVwbzA6ICAgIHN0cmluZ1xyXG5cdH1bXVxyXG4gICAgbm9SZWFzU3VwOiB7IFxyXG4gICAgICAgIG5vX3JlYV9zdXA6IHN0cmluZyAgXHJcbiAgICAgICAgZGVzY19ub3JlYV9zdXA6IHN0cmluZ1xyXG4gICAgICAgIGdydXBvX3N1cDogICAgIHN0cmluZyAgICBcclxuICAgICAgICB2YXJpYWJsZV9zdXA6ICBzdHJpbmdcclxuICAgICAgICB2YWxvcl9zdXA6ICAgICBzdHJpbmdcclxuICAgICAgICBncnVwbzBfc3VwOiAgICBzdHJpbmdcclxuICB9W11cclxuICAgIGRlZmF1bHRJbmZvcm1hY2lvbkhkcjogRGF0b3NIZHJVYVBwYWxcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgSWRFbmMgPSAxMzAwMzF8MTMwMDMyO1xyXG5leHBvcnQgdHlwZSBJbmZvcm1hY2lvbkhkcj17W2VuYyBpbiBJZEVuY106IERhdG9zSGRyVWFQcGFsfVxyXG5cclxuZXhwb3J0IHR5cGUgQ2Fzb1N0YXRlPXtcclxuICAgIG9wY2lvbmVzOnsgLy8gZGF0b3MgZGUgbmF2ZWdhY2nDs24gcXVlIGVsaWplIGVsIHVzdWFyaW9cclxuICAgICAgICBmb3JQazpGb3JQa3xudWxsIC8vIMOtbmRpY2UgZGVudHJvIGRlIGxhcyB1bmlkYWRlcyBkZSBhbsOhbGlzaXMuIE51bGwgPSBlbiBob2phIGRlIHJ1dGFcclxuICAgICAgICBwaWxhRm9yUGs6Rm9yUGtbXVxyXG4gICAgICAgIG1vZG9EZXNwbGllZ3VlOk1vZG9EZXNwbGllZ3VlXHJcbiAgICAgICAgYmllbnZlbmlkbzpib29sZWFuXHJcbiAgICAgICAgbW9kb0RpcmVjdG86Ym9vbGVhblxyXG4gICAgICAgIG1vZG9Cb3JyYXJSZXNwdWVzdGE6SWRWYXJpYWJsZXxudWxsXHJcbiAgICAgICAgY29uQ2FtcG9PcGNpb25lczpib29sZWFuXHJcbiAgICAgICAgc2FsdG9BdXRvbWF0aWNvOmJvb2xlYW5cclxuICAgIH0sIFxyXG4gICAgbW9kbzp7IC8vIG5vIHNlIHBlcnNpc3RlXHJcbiAgICAgICAgZGVtbzpib29sZWFuXHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIERlZk9wZXJhdGl2byA9IHtcclxuICAgIGVzTm9SZWE6KHJlc3B1ZXN0YXM6UmVzcHVlc3Rhcyk9PiB7Y29kTm9SZWE6c3RyaW5nfG51bGwsIGVzTm9SZWE6Ym9vbGVhbn0sXHJcbiAgICBlc05vUmVhU3VwOihyZXNwdWVzdGFzOlJlc3B1ZXN0YXMpPT4ge2NvZE5vUmVhU3VwOnN0cmluZ3xudWxsLCBlc05vUmVhU3VwOmJvb2xlYW59LFxyXG4gICAgZXNSZWFsaXphZGE6KHJlc3B1ZXN0YXM6UmVzcHVlc3Rhcyk9PiB7Y29kUmVhOm51bWJlcnxudWxsLCBlc1JlYTpib29sZWFufSxcclxuICAgIGVzUmVhbGl6YWRhU3VwOihyZXNwdWVzdGFzOlJlc3B1ZXN0YXMpPT4ge2NvZFJlYVN1cDpudW1iZXJ8bnVsbCwgZXNSZWFTdXA6Ym9vbGVhbn0sXHJcbiAgICBVQXByaW5jaXBhbDogSWRVbmlkYWRBbmFsaXNpcyxcclxuICAgIGRlZlVBOntbaSBpbiBJZFVuaWRhZEFuYWxpc2lzXTp7cGs6SWRWYXJpYWJsZSwgaW5jbHVpZGFzOklkVW5pZGFkQW5hbGlzaXNbXSwgaWRzRm9yOklkRm9ybXVsYXJpb1tdfX0sXHJcbiAgICBkZWZGb3I6e1tmIGluIElkRm9ybXVsYXJpb106ey8qYXJib2xVQTpJZFVuaWRhZEFuYWxpc2lzW10sICovIGhlcm1hbm8/OnRydWV9fVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBEYXRvc0J5UGFzc1BlcnNpc3RpYmxlcyA9IHtcclxuICAgIHJlc3B1ZXN0YXM6e1t1YSBpbiBJZFVuaWRhZEFuYWxpc2lzXTpSZXNwdWVzdGFzUmFpeltdfVxyXG4gICAgbW9kb0FsbWFjZW5hbWllbnRvOk1vZG9BbG1hY2VuYW1pZW50b1xyXG4gICAgcGVyc29uYTpzdHJpbmdcclxuICAgIHRhcmVhOklkVGFyZWFcclxuICAgIGlkcGVyOnN0cmluZ1xyXG4gICAgY2FyZ2FzOiBDYXJnYXNcclxuICAgIGluZm9ybWFjaW9uSGRyOiBJbmZvcm1hY2lvbkhkclxyXG4gICAgc29sb0xlY3R1cmE6IGJvb2xlYW5cclxuICAgIHRva2VuPzpzdHJpbmdcclxuICAgIG51bV9zaW5jcm8/Om51bWJlclxyXG4gICAgdGltZXN0YW1wRXN0cnVjdHVyYT86bnVtYmVyXHJcbn1cclxuXHJcbnR5cGUgQ29uZmlndXJhY2lvblNvcnRlb1RhYmxhID0ge1xyXG4gICAgbWV0b2RvOiBcInRhYmxhXCIsXHJcbiAgICBwYXJhbV9tZXRvZG86IHtcclxuICAgICAgICB0YWJsYTpzdHJpbmdbXSxcclxuICAgICAgICB2YXJfbGV0cmE6SWRWYXJpYWJsZSxcclxuICAgIH0gICAgXHJcbn1cclxuXHJcbnR5cGUgQ29uZmlndXJhY2lvblNvcnRlb0hhc2ggPSB7XHJcbiAgICBtZXRvZG86IFwiaGFzaFwiLFxyXG4gICAgcGFyYW1fbWV0b2RvOiB7XHJcbiAgICAgICAgdmFyX2NvZWY6IFtcclxuICAgICAgICAgICAge3ZhcjpJZFZhcmlhYmxlLCBjb2VmOm51bWJlcn0sXHJcbiAgICAgICAgICAgIHt2YXI6SWRWYXJpYWJsZSwgY29lZjpudW1iZXJ9LFxyXG4gICAgICAgIF0sXHJcbiAgICAgICAgZGl2aXNvcjogbnVtYmVyXHJcbiAgICB9ICAgIFxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBDb25maWd1cmFjaW9uU29ydGVvID0ge1trZXkgaW4gSWRGb3JtdWxhcmlvXTpDb25maWd1cmFjaW9uU29ydGVvRm9ybXVsYXJpb31cclxuXHJcbmV4cG9ydCB0eXBlIENvbmZpZ3VyYWNpb25IYWJpbGl0YXJCb3RvbkZvcm11bGFyaW8gPSB7W2tleSBpbiBJZEZvcm11bGFyaW9dOkNvbmZpZ3VyYWNpb25IYWJpbGl0YXJCb3RvbkZvcm11bGFyaW9Gb3JtfVxyXG5cclxuZXhwb3J0IHR5cGUgQ29uZmlndXJhY2lvblNvcnRlb0Zvcm11bGFyaW8gPSB7XHJcbiAgICB1bmlkYWRfYW5hbGlzaXM6IElkVW5pZGFkQW5hbGlzaXMsXHJcbiAgICB1bmlkYWRfYW5hbGlzaXNfcGFkcmU6IElkVW5pZGFkQW5hbGlzaXMsXHJcbiAgICAvL2V4cHJfaW5jb21wbGV0aXR1ZDogc3RyaW5nIC8vXCJub3QgKHAxKSBvciBubyB0IChwMikgb3Igbm90KHAzKVwiXHJcbiAgICBleHByX2luY29tcGxldGl0dWQ6IHtcclxuICAgICAgICBba2V5IGluIG51bWJlcl06e2RvbWluaW86bnVtYmVyLCBleHByOnN0cmluZ31cclxuICAgIH0gXHJcbiAgICAvL2V4cHJfaW5jb21wbGV0aXR1ZF9qczogc3RyaW5nIC8vc2UgY3JlYSBhbCBjb21waWxhclxyXG4gICAgZXhwcl9pbmNvbXBsZXRpdHVkX2pzOiB7XHJcbiAgICAgICAgW2tleSBpbiBudW1iZXJdOntkb21pbmlvOm51bWJlciwgZXhwcjpzdHJpbmd9XHJcbiAgICB9IFxyXG4gICAgZGlzcGFyYWRvcjogSWRWYXJpYWJsZSAvL1wicDlcIlxyXG4gICAgLy9maWx0cm86IHN0cmluZyAvL1wicDM+PTE4XCJcclxuICAgIGZpbHRybzoge1xyXG4gICAgICAgIFtrZXkgaW4gbnVtYmVyXTp7ZG9taW5pbzpudW1iZXIsIGV4cHI6c3RyaW5nfVxyXG4gICAgfSBcclxuICAgIC8vZmlsdHJvX2pzOiBzdHJpbmcgLy9zZSBjcmVhIGFsIGNvbXBpbGFyXHJcbiAgICBmaWx0cm9fanM6IHtcclxuICAgICAgICBba2V5IGluIG51bWJlcl06e2RvbWluaW86bnVtYmVyLCBleHByOnN0cmluZ31cclxuICAgIH0gXHJcbiAgICBvcmRlbjoge1xyXG4gICAgICAgIHZhcmlhYmxlOklkVmFyaWFibGVcclxuICAgICAgICBvcmRlbjogMXwtMVxyXG4gICAgfVtdIC8vW1wicDNcIiwgXCJwMlwiLCBcInAxXCIsIFwicDBcIl0sIC8vIHAwIGVzIGNvbnN0cnVpZGEsIG5vIHZhIGVuIHBhcsOhbWV0cm9zLCBzZSBwb25lIHBhcmEgcXVlIGVsIG9yZGVuIHNlYSBkZXRlcm1pbsOtc3RpY29cclxuICAgIHBhcmFtZXRyb3M6SWRWYXJpYWJsZVtdLy8gW1wicDFcIixcInAyXCIsXCJwM1wiLCBcInA0XCIsIFwicDVcIiwgXCJwNlwiXSwgLy8gdmFyaWFibGVzIHF1ZSBhbnVsYW4gYWwgZGlzcGFyYWRvclxyXG4gICAgY2FudGlkYWRfc29ydGVhYmxlczogSWRWYXJpYWJsZVxyXG4gICAgY2FudGlkYWRfdG90YWw6IElkVmFyaWFibGVcclxuICAgIHJlc3VsdGFkbzogSWRWYXJpYWJsZSAvL1wicDExXCJcclxuICAgIHJlc3VsdGFkb19tYW51YWw6IElkVmFyaWFibGUgLy9cInAxMVwiXHJcbiAgICBzb3J0ZWFkb19tb3N0cmFyPzoge3NvdXJjZTpJZFZhcmlhYmxlLCB0YXJnZXQ6SWRWYXJpYWJsZX1bXSxcclxuICAgIGluY29tcGxldGFzOiBJZFZhcmlhYmxlXHJcbiAgICB2YXJpYWJsZUJvdG9uRm9ybXVsYXJpb1VBOiBJZFZhcmlhYmxlLy8nJEIuRjpTMV9QJ1xyXG4gICAgdmFyaWFibGVCb3RvbkZvcm11bGFyaW9VQUluZGl2aWR1YWw/OiBJZFZhcmlhYmxlIC8vJyRCLkY6STEnXHJcbiAgICBpZF9mb3JtdWxhcmlvX2luZGl2aWR1YWw/OiBJZEZvcm11bGFyaW8gLy8gJ0Y6STEnXHJcbiAgICBpZF9mb3JtdWxhcmlvX3BhZHJlPzogSWRGb3JtdWxhcmlvIC8vICdGOlMxJ1xyXG59ICYgKENvbmZpZ3VyYWNpb25Tb3J0ZW9IYXNoIHwgQ29uZmlndXJhY2lvblNvcnRlb1RhYmxhKVxyXG5cclxuZXhwb3J0IHR5cGUgQ29uZmlndXJhY2lvbkhhYmlsaXRhckJvdG9uRm9ybXVsYXJpb0Zvcm0gPSB7XHJcbiAgICB1bmlkYWRfYW5hbGlzaXM6IElkVW5pZGFkQW5hbGlzaXMsXHJcbiAgICBleHByX2hhYmlsaXRhcl9ib3Rvbjogc3RyaW5nLFxyXG4gICAgZXhwcl9oYWJpbGl0YXJfYm90b25fanM6IHN0cmluZyxcclxuICAgIGhhYmlsaXRhcl9hZ3JlZ2FyX2xpc3RvOiBib29sZWFuXHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB0b1BsYWluRm9yUGsoZm9yUGs6Rm9yUGspOlBsYWluRm9yUGt7XHJcbiAgICAvLyBAdHMtaWdub3JlIHNhYmVtb3MgcXVlIGhheSBxdWUgaGFjZXIgdW4gSlNPTlxyXG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGZvclBrKTtcclxufVxyXG5cclxuZXhwb3J0IHZhciBpdGVyYXRvcjo8VD4obzpPYmpldG9OdW1lcmFkb09BcnJheTxUPik9Pkl0ZXJhYmxlPFQ+ID0gTGlrZUFyLml0ZXJhdG9yXHJcbmV4cG9ydCB2YXIgZW1wdHk6PFQ+KG86T2JqZXRvTnVtZXJhZG9PQXJyYXk8VD58bnVsbHx1bmRlZmluZWQpPT5ib29sZWFuID0gTGlrZUFyLmVtcHR5XHJcblxyXG5kZWNsYXJlIGdsb2JhbCB7XHJcbiAgICBuYW1lc3BhY2UgbXlPd257XHJcbiAgICAgICAgaW50ZXJmYWNlIEFkZHJQYXJhbXMge1xyXG4gICAgICAgICAgICBzdGF0ZV9mb3JQazpzdHJpbmdcclxuICAgICAgICAgICAgc3RhdGVfcGlsYUZvclBrOnN0cmluZ1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgRGlyZWNjaW9uQWNjaW9uID0gJ2F2YW5jZScgfCAncmV0cm9jZXNvJyB8ICdibGFucXVlbydcclxuXHJcbmV4cG9ydCB0eXBlIEVzdGFkb0FjY2lvbiA9IHtcclxuICAgIG9wZXJhdGl2bzogc3RyaW5nXHJcbiAgICBlc3RhZG86IHN0cmluZ1xyXG4gICAgZWFjY2lvbjogc3RyaW5nXHJcbiAgICBjb25kaWNpb246IHN0cmluZ1xyXG4gICAgZXN0YWRvX2Rlc3Rpbm86IHN0cmluZ1xyXG4gICAgZWFjY2lvbl9kaXJlY2Npb246IERpcmVjY2lvbkFjY2lvblxyXG4gICAgcGF0aF9pY29ub19zdmc6IHN0cmluZ1xyXG4gICAgbm9tYnJlX3Byb2NlZHVyZTogc3RyaW5nXHJcbiAgICBub21icmVfd3NjcmVlbjogc3RyaW5nXHJcbiAgICBkZXNhY3RpdmFfYm90b246IGJvb2xlYW5cclxuICAgIGNvbmZpcm1hOiBib29sZWFuXHJcbn0iXX0=
@@ -1,12 +1,12 @@
1
1
  import { ProcedureDef } from "./types-dmencu";
2
2
  import { ProcedureContext } from "meta-enc";
3
3
  export * from "./types-dmencu";
4
- import { Context } from "vm";
5
4
  export type generarIdEncFun = (area: number, index: number) => string;
6
5
  declare var generarIdEncFun: generarIdEncFun;
7
6
  export declare const setGenerarIdEncFun: (fun: generarIdEncFun) => generarIdEncFun;
8
7
  export declare const setMaxAgenerar: (max: number) => number;
8
+ export declare const setMaxEncPorArea: (max: number) => number;
9
9
  export declare const getOperativoActual: (context: ProcedureContext) => Promise<any>;
10
- export declare var setHdrQuery: (myFun: (quotedCondViv: string, context?: Context) => string) => (quotedCondViv: string, context?: Context) => string;
10
+ export declare var setHdrQuery: (myFun: (quotedCondViv: string, context: ProcedureContext, permiteGenerarMuestra: boolean) => string) => (quotedCondViv: string, context: ProcedureContext, permiteGenerarMuestra: boolean) => string;
11
11
  export declare const ACCION_PASAR_PROIE = "encuestas_procesamiento_pasar";
12
12
  export declare const ProceduresDmEncu: ProcedureDef[];