dmencu 3.2.12 → 3.2.13

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.
@@ -110,176 +110,205 @@ registrarCargarMotor(async function cargarEstructuraYDatosEnMemoria() {
110
110
 
111
111
  const DELAY_SCROLL_3 = 50;
112
112
 
113
+ function obtenerPorPath<T = unknown>(objeto: Record<string, any>, path: string): T | null {
114
+ if (!objeto || typeof path !== 'string') return null;
115
+
116
+ const resultado = path.split('.').reduce<any>((acc, clave) => {
117
+ return acc !== null && acc !== undefined ? acc[clave] : null;
118
+ }, objeto);
119
+
120
+ return (resultado ?? null) as T | null;
121
+ }
122
+
113
123
  function breakeableText(text: string | null): string | null;
114
124
  function breakeableText(text: string | null, diccionario?: { [clave: string]: React.ReactNode }) {
115
125
  if (typeof text != "string") return null;
116
126
  text = text.replace(/\//g, "/\u2063").replace(/\/\u2063(\w)\b/g, '/$1');
117
- text = text.replace(/___*/g, (todo) => `[${todo}]`).replace(/\@#?[\w-]+@/g, (todo) => `[${todo}]`);
127
+ text = text.replace(/___*/g, (todo) => `[${todo}]`).replace(/@(?:#?[\w-]+|\$[tT][eE][mM][^@]*)@/g, (todo) => `[${todo}]`);
118
128
  if (!diccionario || true) return text;
119
129
  /*
120
130
  return <span>{partes.map((parte:string, i:number) => <span style={i%2==1?{textDecoration:"underline"}:{}}> {parte+" "} </span>)}</span>
121
131
  */
122
132
  }
123
133
 
124
- export const BreakeableText = React.memo(function BreakeableText(props: {
125
- text: string | null | undefined,
126
- className?: string,
127
- style?: React.CSSProperties,
128
- forPk?: ForPk,
129
- }) {
130
- const { text, className, style } = props;
134
+ // ==========================================
135
+ // 1. HELPERS PUROS Y EXPRESIONES REGULARES
136
+ // ==========================================
131
137
 
132
- // Comodines clásicos presentes en el texto (ej: @resps1@ -> "resps1")
133
- const comodinesInteres = useMemo(() => {
134
- if (typeof text !== "string" || !text.includes('@')) return [];
135
- const matches = text.match(/@([a-zA-Z0-9_-]+)@/g);
136
- if (!matches) return [];
137
- const ids: IdComodin[] = [];
138
- for (let i = 0; i < matches.length; i++) {
139
- const m = matches[i];
140
- if (!m.startsWith('@#')) {
141
- const id = m.slice(1, -1) as IdComodin;
142
- if (ids.indexOf(id) === -1) {
143
- ids.push(id);
144
- }
145
- }
146
- }
147
- return ids;
148
- }, [text]);
138
+ // RegEx principal para dividir el texto conservando los tokens delimitados por @...@
139
+ const REGEX_SPLIT_COMODINES = /(@(?:#?[\w-]+|\$[tT][eE][mM][^@]*)@)/g;
149
140
 
150
- // Selector granular con shallowEqual: sólo suscribe y re-evalúa si cambian SUS comodines
151
- const comodinesValores = useSelector((state: CasoState) => {
152
- if (comodinesInteres.length === 0) return null;
153
- const storeComodines = state?.opciones?.comodines || comodinesIniciales;
154
- const resultado: { [id: string]: string } = {};
155
- for (let i = 0; i < comodinesInteres.length; i++) {
156
- const id = comodinesInteres[i];
157
- resultado[id] = storeComodines[id] ?? comodinesIniciales[id] ?? '';
158
- }
159
- return resultado;
160
- }, shallowEqual);
141
+ // Sub-RegExs para identificar el tipo de comodín
142
+ const IS_TEM_PATTERN = /^@\$(tem[^@]*)@$/i;
143
+ const IS_VARIABLE_HASH_PATTERN = /^@#([\w-]+)@$/;
144
+ const IS_COMODIN_REDUX_PATTERN = /^@([\w-]+)@$/;
161
145
 
162
- const reduxForPk = useSelector((state: CasoState) => state?.opciones?.forPk);
163
- const forPk = props.forPk || reduxForPk;
146
+ /** Extrae nombres de comodines estándar (@comodin@) */
147
+ function extraerComodinesRedux(text: string): IdComodin[] {
148
+ if (!text || !text.includes('@')) return [];
149
+ const matches = text.match(/@([a-zA-Z0-9_-]+)@/g);
150
+ if (!matches) return [];
164
151
 
165
- // Variable de estado que se actualiza cada vez que llega un cambio de una variable de interés
166
- const [valoresVariables, setValoresVariables] = useState<{ [nombreVariable: string]: any }>({});
167
-
168
- // Variables de interés: el nombre de variable indicado después de # dentro de los arrobas (ej: @#edad@ -> "edad")
169
- const variablesInteres = useMemo(() => {
170
- if (typeof text !== "string") return [];
171
- const matches = text.match(/@#([^@]+)@/g);
172
- if (!matches) return [];
173
- const vars: string[] = [];
174
- for (let i = 0; i < matches.length; i++) {
175
- const m = matches[i];
176
- const match = m.match(/^@#([\w-]+)@$/);
177
- if (match) {
178
- const varName = match[1];
179
- if (vars.indexOf(varName) === -1) {
180
- vars.push(varName);
181
- }
182
- }
152
+ const ids: IdComodin[] = [];
153
+ for (const m of matches) {
154
+ if (!m.startsWith('@#') && !m.startsWith('@$')) {
155
+ const id = m.slice(1, -1) as IdComodin;
156
+ if (!ids.includes(id)) ids.push(id);
183
157
  }
184
- return vars;
185
- }, [text]);
158
+ }
159
+ return ids;
160
+ }
161
+
162
+ /** Extrae nombres de variables dinámicas (@#variable@) */
163
+ function extraerVariablesInteres(text: string): string[] {
164
+ if (!text) return [];
165
+ const matches = text.match(/@#([\w-]+)@/g);
166
+ if (!matches) return [];
167
+
168
+ const vars: string[] = [];
169
+ for (const m of matches) {
170
+ const varName = m.slice(2, -1); // Remueve '@#' y '@'
171
+ if (!vars.includes(varName)) vars.push(varName);
172
+ }
173
+ return vars;
174
+ }
175
+
176
+ // ==========================================
177
+ // 2. HOOK PERSONALIZADO PARA BINDING DINÁMICO
178
+ // ==========================================
179
+
180
+ function useVariablesEscuchadas(text: string, forPk: ForPk) {
181
+ const variablesInteres = useMemo(() => extraerVariablesInteres(text), [text]);
182
+
183
+ // Estado local con los valores reales para que React solo re-renderice si el string CAMBIA
184
+ const [mapaVariables, setMapaVariables] = useState<Record<string, string>>(() =>
185
+ obtenerValoresActuales(variablesInteres, forPk)
186
+ );
186
187
 
188
+ // Sincronizamos cuando cambian variablesInteres o forPk
187
189
  useEffect(() => {
188
- if (!text || variablesInteres.length === 0) return;
189
-
190
- const listener: ListenerCambioVariable = (varModificada, nuevoValor, _forPk, respuestasAumentadas) => {
191
- let huboCambio = false;
192
- const nuevosValores: { [k: string]: any } = {};
193
-
194
- if (respuestasAumentadas) {
195
- for (let i = 0; i < variablesInteres.length; i++) {
196
- const varName = variablesInteres[i];
197
- if (varName in respuestasAumentadas) {
198
- const val = respuestasAumentadas[varName as IdVariable];
199
- nuevosValores[varName] = (val != null && val !== '') ? String(val) : '........';
200
- huboCambio = true;
201
- }
202
- }
203
- }
204
- if (!huboCambio && variablesInteres.indexOf(varModificada) !== -1) {
205
- nuevosValores[varModificada] = (nuevoValor != null && nuevoValor !== '') ? String(nuevoValor) : '........';
206
- huboCambio = true;
207
- }
190
+ setMapaVariables(obtenerValoresActuales(variablesInteres, forPk));
191
+ }, [variablesInteres, forPk]);
208
192
 
209
- if (huboCambio) {
210
- setValoresVariables(prev => {
211
- const next: { [k: string]: any } = {};
212
- for (const k in prev) {
213
- next[k] = prev[k];
214
- }
215
- for (const k in nuevosValores) {
216
- next[k] = nuevosValores[k];
217
- }
218
- return next;
219
- });
220
- }
193
+ useEffect(() => {
194
+ if (variablesInteres.length === 0 || !forPk) return;
195
+
196
+ const listener: ListenerCambioVariable = (varModificada, _nuevoValor, _forPk, respuestasAumentadas) => {
197
+ const impactaVariable = variablesInteres.includes(varModificada);
198
+ const impactaRespuestas = respuestasAumentadas && variablesInteres.some(v => v in respuestasAumentadas);
199
+
200
+ if (!impactaVariable && !impactaRespuestas) return;
201
+
202
+ // Leemos el nuevo estado de la fuente de verdad
203
+ const nuevosValores = obtenerValoresActuales(variablesInteres, forPk);
204
+
205
+ setMapaVariables(prev => {
206
+ // Comparamos valor por valor si realmente cambió algo visible
207
+ const huboCambio = variablesInteres.some(v => prev[v] !== nuevosValores[v]);
208
+ // Si NO hubo cambio real, devolvemos 'prev' (misma referencia) y React CANCELA el re-render
209
+ return huboCambio ? nuevosValores : prev;
210
+ });
221
211
  };
222
212
 
223
213
  const desuscribir = suscribirCambioVariable(listener, variablesInteres);
224
- return () => {
225
- desuscribir();
226
- };
227
- }, [text, variablesInteres]);
214
+ return () => desuscribir();
215
+ }, [variablesInteres, forPk]);
228
216
 
229
- if (typeof text !== "string") return null;
217
+ // Getter expuesto para mantener tu sintaxis
218
+ return (nombreVar: string): string => {
219
+ return mapaVariables[nombreVar] ?? '........';
220
+ };
221
+ }
230
222
 
231
- let procesado = text.replace(/\//g, "/\u2063").replace(/\/\u2063(\w)\b/g, '/$1');
232
- procesado = procesado.replace(/___*/g, (todo) => `[${todo}]`);
223
+ function obtenerValoresActuales(variables: string[], forPk: ForPk): Record<string, string> {
224
+ const mapa: Record<string, string> = {};
225
+ if (variables.length === 0) return mapa;
226
+ const { respuestasAumentadas } = respuestasForPk(forPk, true);
227
+ for (const v of variables) {
228
+ const val = respuestasAumentadas?.[v as IdVariable];
229
+ mapa[v] = String(val ?? '........');
230
+ }
231
+ return mapa;
232
+ }
233
233
 
234
- const partes = procesado.split(/(@#?[\w-]+@)/g);
235
- const contenido = partes.map((parte, index) => {
236
- const match = parte.match(/^@(#?)([\w-]+)@$/);
237
- if (match) {
238
- const tieneHash = match[1] === '#';
239
- const id = match[2];
234
+ export const BreakeableText = React.memo(function BreakeableText(props: {
235
+ text: string | null | undefined;
236
+ className?: string;
237
+ style?: React.CSSProperties;
238
+ forPk?: ForPk;
239
+ }) {
240
+ const { text, className, style } = props;
240
241
 
241
- let valor: any = undefined;
242
+ // 1. Early Return
243
+ if (typeof text !== 'string') return null;
242
244
 
243
- // 1. Si es variable con #, buscar el valor de la variable indicada después de # en el estado del listener (actualizado desde respuestasAumentadas)
244
- if (tieneHash) {
245
- if (valoresVariables[id] !== undefined) {
246
- valor = valoresVariables[id];
247
- }
248
- }
245
+ // 2. Extracción de dependencias Redux (después de la guarda)
246
+ const reduxForPk = useSelector((state: CasoState) => state?.opciones?.forPk);
247
+ const forPk = props.forPk || reduxForPk;
249
248
 
250
- // 2. Si tiene # y aún no está definido, buscar directamente en respuestasAumentadas
251
- if (valor === undefined && tieneHash && forPk) {
252
- try {
253
- const { respuestasAumentadas } = respuestasForPk(forPk, true);
254
- const val = respuestasAumentadas?.[id as IdVariable];
255
- if (val != null && val !== '') {
256
- valor = String(val);
257
- }
258
- } catch {
259
- // Ignorar error si no se pudo acceder a respuestas
260
- }
261
- }
249
+ // --- A. Suscripción Redux (Comodines) ---
250
+ const comodinesInteres = useMemo(() => extraerComodinesRedux(text), [text]);
262
251
 
263
- // 3. Buscar en comodines (Redux granular o comodinesIniciales)
264
- if (valor === undefined) {
265
- valor = comodinesValores ? comodinesValores[id] : comodinesIniciales[id as IdComodin];
266
- }
252
+ const comodinesValores = useSelector((state: CasoState) => {
253
+ if (comodinesInteres.length === 0) return null;
254
+ const storeComodines = state?.opciones?.comodines || comodinesIniciales;
255
+ const resultado: Record<string, string> = {};
256
+ for (const id of comodinesInteres) {
257
+ resultado[id] = storeComodines[id] ?? comodinesIniciales[id] ?? '';
258
+ }
259
+ return resultado;
260
+ }, shallowEqual);
267
261
 
268
- if (valor !== undefined && valor !== null && valor !== '') {
269
- return valor;
270
- }
271
- if (tieneHash && (valor === '' || valor === null)) {
272
- return '........';
273
- }
274
- if (valor !== undefined && valor !== null) {
275
- return valor;
276
- }
277
- return (
262
+ // --- B. Suscripción a variables con # (Le pasamos forPk seguro, opcional) ---
263
+ const obtenerValorVariable = useVariablesEscuchadas(text, forPk!);
264
+
265
+ // --- C. Preprocesamiento sintáctico ---
266
+ const procesado = text
267
+ .replace(/\//g, '/\u2063')
268
+ .replace(/\/\u2063(\w)\b/g, '/$1')
269
+ .replace(/___*/g, todo => `[${todo}]`);
270
+
271
+ // --- D. Tokenizado y Resolución ---
272
+ const partes = procesado.split(REGEX_SPLIT_COMODINES);
273
+
274
+ const contenido = partes.map((parte, index) => {
275
+ // CASO 1: Comodín tipo TEM (@$tem.path.al.campo@)
276
+ const matchTem = parte.match(IS_TEM_PATTERN);
277
+ if (matchTem) {
278
+ const infoHdr = getDatosByPass().informacionHdr;
279
+ const estructura = getEstructura();
280
+ const idEnc = forPk?.[estructura.pkAgregadaUaPpal];
281
+ const path = matchTem[1];
282
+ const valor = idEnc ? obtenerPorPath(infoHdr[idEnc], path) : null;
283
+
284
+ return valor ?? (
278
285
  <span key={index} style={{ color: 'red' }}>
279
286
  {`No se encontró ${parte}`}
280
287
  </span>
281
288
  );
282
289
  }
290
+
291
+ // CASO 2: Variable dinámica con Hash (@#variable@)
292
+ const matchVarHash = parte.match(IS_VARIABLE_HASH_PATTERN);
293
+ if (matchVarHash) {
294
+ return obtenerValorVariable(matchVarHash[1]);
295
+ }
296
+
297
+ // CASO 3: Comodín global de Redux (@comodin@)
298
+ const matchComodin = parte.match(IS_COMODIN_REDUX_PATTERN);
299
+ if (matchComodin) {
300
+ const nombreComodin = matchComodin[1];
301
+ const valor = comodinesValores
302
+ ? comodinesValores[nombreComodin]
303
+ : comodinesIniciales[nombreComodin as IdComodin];
304
+
305
+ return valor ??
306
+ <span key={index} style={{ color: 'red' }}>
307
+ {`No se encontró ${parte}`}
308
+ </span>
309
+ }
310
+
311
+ // CASO 4: Texto plano
283
312
  return parte;
284
313
  });
285
314
 
@@ -3238,7 +3267,7 @@ function calcularComodines(forPk: ForPk) {
3238
3267
  const rangoFecha = (desde?: string | null, hasta?: string | null) =>
3239
3268
  (desde && hasta) ? `${fechaReferencia(desde)} a ${fechaReferencia(hasta)}` : null;
3240
3269
  const semRef = rangoFecha(semanaObj?.semana_referencia_desde, semanaObj?.semana_referencia_hasta);
3241
- const d30Ref = rangoFecha(semanaObj?.d30_referencia_desde, semanaObj?.d30_referencia_hasta);
3270
+ const d30Ref = rangoFecha(semanaObj?.['30dias_referencia_desde'], semanaObj?.['30dias_referencia_hasta']);
3242
3271
  const personasArray = Array.isArray(respuestasAumentadas?.['personas' as IdUnidadAnalisis])
3243
3272
  ? respuestasAumentadas['personas' as IdUnidadAnalisis] as any[] : [];
3244
3273
  const buscarPersona = (num?: any) =>
@@ -307,8 +307,8 @@ export type Semana = {
307
307
  semana: number;
308
308
  semana_referencia_desde?: string | null;
309
309
  semana_referencia_hasta?: string | null;
310
- d30_referencia_desde?: string | null;
311
- d30_referencia_hasta?: string | null;
310
+ '30dias_referencia_desde'?: string | null;
311
+ '30dias_referencia_hasta'?: string | null;
312
312
  mes_referencia?: string | null;
313
313
  carga_enc_desde?: string | null;
314
314
  carga_enc_hasta?: string | null;
@@ -18,4 +18,4 @@
18
18
  exports.iterator = LikeAr.iterator;
19
19
  exports.empty = LikeAr.empty;
20
20
  });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlwb3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdW5sb2dnZWQvdGlwb3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0lBQUEsWUFBWSxDQUFDOzs7SUE0aEJiLG9DQUVDO0lBNWhCRCxrQ0FBa0M7SUEwaEJsQyxTQUFnQixZQUFZLENBQUMsS0FBWTtRQUNyQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVVLFFBQUEsUUFBUSxHQUFtRCxNQUFNLENBQUMsUUFBUSxDQUFBO0lBQzFFLFFBQUEsS0FBSyxHQUFrRSxNQUFNLENBQUMsS0FBSyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcbmltcG9ydCB7IFN0cnVjdHVyZSwgRmVlZGJhY2sgfSBmcm9tIFwicm93LXZhbGlkYXRvclwiO1xyXG5pbXBvcnQgKiBhcyBMaWtlQXIgZnJvbSBcImxpa2UtYXJcIjtcclxuXHJcbmV4cG9ydCB0eXBlIE1vZG9BbG1hY2VuYW1pZW50byA9ICdzZXNzaW9uJyB8IC8vIGN1YW5kbyBzZWEgcGFyYSB1bmEgc29sYSBwZXN0YcOxYSwgc2UgdXNhIGVuIG1vZG8gZGlyZWN0byxcclxuICAgICdsb2NhbCcgICAgLy8gcGFyYSB0b2RvIGVsIGRpc3Bvc2l0aXZvLCBzZSB1c2EgYWwgY2FyZ2FyIGhvamFzIGRlIHJ1dGEgZW50cmVzXHJcblxyXG5leHBvcnQgdHlwZSBJZE9wY2lvbiA9IG51bWJlclxyXG5leHBvcnQgdHlwZSBJZE9wZXJhdGl2byA9ICdldG9pMjExJyB8ICdlYWgyMDIyJyB8ICdldGMuLi4nXHJcbmV4cG9ydCB0eXBlIElkVmFyaWFibGUgPSAndjEnIHwgJ3YyJyB8ICd2MycgfCAnZXRjLi4uJyB8ICd2ZG9taW5pbycgfCAnJHAwJ1xyXG5leHBvcnQgdHlwZSBJZFByZWd1bnRhID0gJ1AxJyB8ICdQMicgfCAnZXRjLi4uJ1xyXG5leHBvcnQgdHlwZSBJZEJsb3F1ZSA9ICdCMScgfCAnQjInIHwgJ2V0Yy4uLidcclxuZXhwb3J0IHR5cGUgSWRGb3JtdWxhcmlvID0gJ0YxJyB8ICdGMicgfCAnZXRjLi4uJ1xyXG5leHBvcnQgdHlwZSBJZFVuaWRhZEFuYWxpc2lzID0gJ3ZpdmllbmRhcycgfCAnaG9nYXJlcycgfCAncGVyc29uYXMnXHJcbmV4cG9ydCB0eXBlIElkQm90b25Gb3JtdWxhcmlvID0gJ0JGOkYxJyB8ICdCRjpGMicgfCAnZXRjLi4uJ1xyXG5leHBvcnQgdHlwZSBJZENvbnNpc3RlbmNpYSA9ICdDT05TMScgfCAnQ09OUzInIHwgJ2V0Yy4uLidcclxuZXhwb3J0IHR5cGUgSWRUZXh0byA9ICdEMzBfUkVGJyB8ICdNRVNfUkVGJyB8ICdTRU1fUkVGJyB8ICdldGMuLi4nXHJcbmV4cG9ydCB0eXBlIElkQ29tb2RpbiA9ICdEMzBfUkVGJyB8ICdNRVNfUkVGJyB8ICdTRU1fUkVGJyB8ICdTRU1fTlVNJyB8ICdyZXNwczEnIHwgJ3BhcmVudHMxJyB8ICdyZXNwaTEnIHwgJ3BhcmVudGkxJyB8ICduamVmZScgfCAnZnJlYWxpeicgfCAnY2FudGlfaG9nYXJlcydcclxuZXhwb3J0IHR5cGUgSWRGaWx0cm8gPSAnRklMVFJPMScgfCAnRklMVFJPMicgfCAnZXRjLi4uJ1xyXG5leHBvcnQgdHlwZSBJZENhc2lsbGVybyA9IElkVmFyaWFibGUgfCBJZFByZWd1bnRhIHwgSWRCbG9xdWUgfCBJZEZvcm11bGFyaW8gfCBJZEZpbHRybyB8IElkT3BjaW9uXHJcbmV4cG9ydCB0eXBlIElkRmluID0gJ2Zpbic7IC8vIG5ldmVyIC8vIFRPRE86IHBvZGVyIHBvbmVyICdGSU4nXHJcbmV4cG9ydCB0eXBlIElkRGVzdGlubyA9IElkUHJlZ3VudGEgfCBJZEJsb3F1ZSB8IElkRmluIHwgSWRGaWx0cm9cclxuZXhwb3J0IHR5cGUgVmFsb3IgPSBzdHJpbmcgfCBudW1iZXIgfCBudWxsO1xyXG5leHBvcnQgdHlwZSBUaXBvY0Rlc3Rpbm9zID0gJ1AnIHwgJ0NQJyB8ICdCJyB8ICdGSUxUUk8nIHwgJ0JGJ1xyXG5leHBvcnQgdHlwZSBUaXBvYyA9IFRpcG9jRGVzdGlub3MgfCAnRicgfCAnTycgfCAnT00nIHwgJ0NPTlMnIHwgJ1RFWFRPJyB8ICdMSUJSRScgfCAnUE1BVFJJWidcclxuXHJcbmV4cG9ydCB0eXBlIEVzcGVjaWFsID0ge1xyXG4gICAgZ3BzPzogYm9vbGVhblxyXG4gICAgbm9TY3JvbGw/OiBib29sZWFuXHJcbiAgICBzY3JvbGxUbz86IElkVmFyaWFibGUgfCBJZEZpblxyXG4gICAgYXV0b2luZz86IHN0cmluZ1xyXG4gICAgZmxleERpcmVjdGlvbj86ICdyb3cnIHwgJ2NvbHVtbicgfCAncm93LXJldmVyc2UnIHwgJ2NvbHVtbi1yZXZlcnNlJ1xyXG4gICAgY2FtcG9zUmVzdW1lbj86IHN0cmluZ1tdXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIElkVGFyZWEgPSAnZW5jdScgfCAncmVjdScgfCAnc3VwZScgfCAnaW5ncic7XHJcblxyXG5leHBvcnQgdHlwZSBGZWVkYmFja1ZhcmlhYmxlID0gRmVlZGJhY2s8SWRWYXJpYWJsZSwgSWRGaW4+XHJcblxyXG5leHBvcnQgdHlwZSBUaXBvVmFyaWFibGVzID0gJ3RleHRvJyB8ICdudW1lcm8nIHwgJ2ZlY2hhJyB8ICdob3JhcycgfCAnaG9yYSdcclxuXHJcbmV4cG9ydCB0eXBlIERlc3BsaWVndWUgPSAnaG9yaXpvbnRhbCcgfCAnb2N1bHRhJ1xyXG5cclxuZXhwb3J0IHR5cGUgQ2FzaWxsZXJvQmFzZSA9IHtcclxuICAgIGlkX2Nhc2lsbGVybz86IHN0cmluZ1xyXG4gICAgdGlwb2M6IFRpcG9jXHJcbiAgICBjYXNpbGxlcm86IElkQ2FzaWxsZXJvXHJcbiAgICBub21icmU6IHN0cmluZ1xyXG4gICAgc2FsdG86IElkRGVzdGlubyB8IElkRmluIHwgbnVsbFxyXG4gICAgc2FsdG9fbnNfbmM/OiBJZERlc3Rpbm8gfCBJZEZpbiB8IG51bGxcclxuICAgIHZlcl9pZDogc3RyaW5nIHwgbnVsbFxyXG4gICAgZGVzcGxpZWd1ZUVuY2FiZXphZG86ICdsYXRlcmFsJyB8ICdzdXBlcmlvcicgfCBudWxsXHJcbiAgICBkZXNwbGllZ3VlQ29udGVuaWRvOiAndmVydGljYWwnIHwgJ2hvcml6b250YWwnIHwgbnVsbFxyXG4gICAgZGVzcGxpZWd1ZVRpcG9JbnB1dDogJ3RlbCcgfCBudWxsXHJcbiAgICBkZXNwbGllZ3VlT2N1bHRhOiBib29sZWFuIHwgbnVsbFxyXG4gICAgbGVlcjogYm9vbGVhbiB8IG51bGxcclxuICAgIGFjbGFyYWNpb246IHN0cmluZyB8IG51bGxcclxuICAgIHByaW1lcmFfdmFyaWFibGU/OiBJZFZhcmlhYmxlIHwgbnVsbFxyXG4gICAgdmFyX25hbWU/OiBJZFZhcmlhYmxlIHwgbnVsbFxyXG4gICAgdmFyX25hbWVfZXNwZWNpYWw/OiBzdHJpbmcgfCBudWxsXHJcbiAgICB0aXBvdmFyPzogVGlwb1ZhcmlhYmxlcyB8ICdvcGNpb25lcycgfCAnc2lfbm8nIHwgbnVsbFxyXG4gICAgY2FzaWxsZXJvcz86IENhc2lsbGVyb3NJbXBsZW1lbnRhZG9zW10gfCBudWxsXHJcbiAgICBleHByZXNpb25faGFiaWxpdGFyPzogc3RyaW5nXHJcbiAgICBleHByZXNpb25faGFiaWxpdGFyX2pzPzogc3RyaW5nXHJcbiAgICBleHByZXNpb25fYXV0b2luZ3Jlc2FyPzogc3RyaW5nXHJcbiAgICBleHByZXNpb25fYXV0b2luZ3Jlc2FyX2pzPzogc3RyaW5nXHJcbiAgICBlc3BlY2lhbD86IEVzcGVjaWFsXHJcbiAgICBjYWxjdWxhZGE/OiBib29sZWFuIHwgbnVsbFxyXG4gICAgb3B0YXRpdm8/OiBib29sZWFuIHwgbnVsbFxyXG4gICAgbGlicmU/OiBib29sZWFuIHwgbnVsbFxyXG4gICAgdmFsb3JfbnNfbmM/OiBhbnlcclxuICAgIGRlc3BsaWVndWU/OiBzdHJpbmdcclxuICAgIGxvbmdpdHVkPzogc3RyaW5nXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIE9wY2lvbiA9IENhc2lsbGVyb0Jhc2UgJiB7XHJcbiAgICB0aXBvYzogJ08nXHJcbiAgICBjYXNpbGxlcm86IElkT3BjaW9uXHJcbiAgICBjYXNpbGxlcm9zOiBQcmVndW50YVNpbXBsZVtdXHJcbiAgICB2YXJfbmFtZT86IG51bGxcclxuICAgIHRpcG92YXI/OiBudWxsXHJcbiAgICBwcmltZXJhX3ZhcmlhYmxlPzogbnVsbFxyXG4gICAgc2FsdG9fbnNfbmM/OiBudWxsXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIE9wY2lvblNpID0gT3BjaW9uICYge1xyXG4gICAgY2FzaWxsZXJvOiAxXHJcbiAgICBub21icmU6ICdTw60nXHJcbiAgICBjYXNpbGxlcm9zOiBQcmVndW50YVNpbXBsZVtdXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIE9wY2lvbk5vID0gT3BjaW9uICYge1xyXG4gICAgY2FzaWxsZXJvOiAyXHJcbiAgICBub21icmU6ICdObydcclxuICAgIGNhc2lsbGVyb3M6IFByZWd1bnRhU2ltcGxlW11cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgT3BjaW9uTXVsdGlwbGUgPSBDYXNpbGxlcm9CYXNlICYge1xyXG4gICAgdGlwb2M6ICdPTSdcclxuICAgIHRpcG92YXI6ICdvcGNpb25lcydcclxuICAgIHZhcl9uYW1lOiBJZFZhcmlhYmxlXHJcbiAgICBjYXNpbGxlcm9zOiBbT3BjaW9uU2ksIE9wY2lvbk5vXVxyXG4gICAgY2FsY3VsYWRhPzogYm9vbGVhblxyXG4gICAgbGlicmU/OiBib29sZWFuXHJcbiAgICB2YWxvcl9uc19uYzogYW55XHJcbiAgICBzYWx0b19uc19uYz86IG51bGxcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUHJlZ3VudGFCYXNlID0gQ2FzaWxsZXJvQmFzZSAmIHtcclxuICAgIHRpcG9jOiAnUCdcclxuICAgIG9wdGF0aXZvOiBib29sZWFuIHwgbnVsbFxyXG4gICAgY2FzaWxsZXJvOiBJZFByZWd1bnRhXHJcbiAgICBjYWxjdWxhZGE6IGJvb2xlYW4gfCBudWxsXHJcbiAgICBsaWJyZTogYm9vbGVhbiB8IG51bGxcclxuICAgIHZhbG9yX25zX25jOiBhbnlcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUHJlZ3VudGFTaW1wbGUgPSBQcmVndW50YUJhc2UgJiB7XHJcbiAgICB0aXBvdmFyOiBUaXBvVmFyaWFibGVzXHJcbiAgICB2YXJfbmFtZTogSWRWYXJpYWJsZVxyXG4gICAgbG9uZ2l0dWQ6IHN0cmluZ1xyXG4gICAgc2FsdG9fbnNfbmM6IElkRGVzdGlubyB8IElkRmluIHwgbnVsbFxyXG4gICAgY2FzaWxsZXJvczogUHJlZ3VudGFTaW1wbGVbXVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBQcmVndW50YUNvblNpTm8gPSBQcmVndW50YUJhc2UgJiB7XHJcbiAgICB0aXBvdmFyOiAnc2lfbm8nXHJcbiAgICB2YXJfbmFtZTogSWRWYXJpYWJsZVxyXG4gICAgc2FsdG9fbnNfbmM6IElkRGVzdGlubyB8IElkRmluIHwgbnVsbFxyXG4gICAgY2FzaWxsZXJvczogW09wY2lvblNpLCBPcGNpb25Ob11cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUHJlZ3VudGFDb25PcGNpb25lcyA9IFByZWd1bnRhQmFzZSAmIHtcclxuICAgIHRpcG92YXI6ICdvcGNpb25lcydcclxuICAgIHZhcl9uYW1lOiBJZFZhcmlhYmxlXHJcbiAgICBzYWx0b19uc19uYzogSWREZXN0aW5vIHwgSWRGaW4gfCBudWxsXHJcbiAgICBjYXNpbGxlcm9zOiBPcGNpb25bXVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBQcmVndW50YUNvbk9wY2lvbmVzTXVsdGlwbGVzID0gUHJlZ3VudGFCYXNlICYge1xyXG4gICAgdmFyX25hbWU/OiBudWxsXHJcbiAgICB0aXBvdmFyPzogbnVsbFxyXG4gICAgY2FzaWxsZXJvczogT3BjaW9uTXVsdGlwbGVbXVxyXG4gICAgc2FsdG9fbnNfbmM/OiBudWxsXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFByZWd1bnRhID0gUHJlZ3VudGFTaW1wbGUgfCBQcmVndW50YUNvblNpTm8gfCBQcmVndW50YUNvbk9wY2lvbmVzIHwgUHJlZ3VudGFDb25PcGNpb25lc011bHRpcGxlc1xyXG5cclxuZXhwb3J0IHR5cGUgQ29uanVudG9QcmVndW50YXMgPSBDYXNpbGxlcm9CYXNlICYge1xyXG4gICAgdGlwb2M6ICdDUCdcclxuICAgIGNhc2lsbGVybzogSWRQcmVndW50YVxyXG4gICAgdmFyX25hbWU/OiBudWxsXHJcbiAgICB0aXBvdmFyPzogbnVsbFxyXG4gICAgY2FzaWxsZXJvczogUHJlZ3VudGFbXVxyXG4gICAgc2FsdG9fbnNfbmM/OiBudWxsXHJcbn1cclxuXHJcbi8qXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUNvbnRlbmlkbyBleHRlbmRzIENhc2lsbGVyb0Jhc2Uge1xyXG4gICAgY2FzaWxsZXJvczpJQ29udGVuaWRvW11cclxufVxyXG4qL1xyXG5cclxuZXhwb3J0IHR5cGUgRmlsdHJvID0gQ2FzaWxsZXJvQmFzZSAmIHtcclxuICAgIHRpcG9jOiAnRklMVFJPJ1xyXG4gICAgY2FzaWxsZXJvOiBJZEZpbHRyb1xyXG4gICAgdmFyX25hbWU/OiBudWxsXHJcbiAgICB0aXBvdmFyPzogbnVsbFxyXG4gICAgcHJpbWVyYV92YXJpYWJsZT86IG51bGxcclxuICAgIGNhbGN1bGFkYT86IG51bGxcclxuICAgIGxpYnJlPzogbnVsbFxyXG4gICAgc2FsdG9fbnNfbmM/OiBudWxsXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIENvbnRlbmlkb0Zvcm11bGFyaW8gPSBCbG9xdWUgfCBQcmVndW50YSB8IENvbmp1bnRvUHJlZ3VudGFzIHwgRmlsdHJvIHwgQm90b25Gb3JtdWxhcmlvIHwgQ29uc2lzdGVuY2lhIHwgVGV4dG9cclxuXHJcbmV4cG9ydCB0eXBlIEJsb3F1ZSA9IENhc2lsbGVyb0Jhc2UgJiB7XHJcbiAgICB0aXBvYzogJ0InXHJcbiAgICBjYXNpbGxlcm86IElkQmxvcXVlXHJcbiAgICBjYXNpbGxlcm9zOiBDb250ZW5pZG9Gb3JtdWxhcmlvW11cclxuICAgIHZhcl9uYW1lPzogbnVsbFxyXG4gICAgdGlwb3Zhcj86IG51bGxcclxuICAgIHVuaWRhZF9hbmFsaXNpcz86IElkVW5pZGFkQW5hbGlzaXNcclxuICAgIHNhbHRvX25zX25jPzogbnVsbFxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBDb25zaXN0ZW5jaWEgPSBDYXNpbGxlcm9CYXNlICYge1xyXG4gICAgdGlwb2M6ICdDT05TJ1xyXG4gICAgY2FzaWxsZXJvOiBJZENvbnNpc3RlbmNpYVxyXG4gICAgdmFyX25hbWU/OiBudWxsXHJcbiAgICB0aXBvdmFyPzogbnVsbFxyXG4gICAgcHJpbWVyYV92YXJpYWJsZT86IG51bGxcclxuICAgIHNhbHRvX25zX25jPzogbnVsbFxyXG59XHJcbmV4cG9ydCB0eXBlIFRleHRvID0gQ2FzaWxsZXJvQmFzZSAmIHtcclxuICAgIHRpcG9jOiAnVEVYVE8nXHJcbiAgICBjYXNpbGxlcm86IElkVGV4dG9cclxuICAgIHZhcl9uYW1lPzogbnVsbFxyXG4gICAgdGlwb3Zhcj86IG51bGxcclxuICAgIHByaW1lcmFfdmFyaWFibGU/OiBudWxsXHJcbiAgICBzYWx0b19uc19uYz86IG51bGxcclxufVxyXG5leHBvcnQgdHlwZSBMaWJyZSA9IENhc2lsbGVyb0Jhc2UgJiB7XHJcbiAgICB0aXBvYzogJ0xJQlJFJ1xyXG4gICAgY2FzaWxsZXJvOiBJZFRleHRvXHJcbiAgICB2YXJfbmFtZT86IG51bGxcclxuICAgIHRpcG92YXI/OiBudWxsXHJcbiAgICBwcmltZXJhX3ZhcmlhYmxlPzogbnVsbFxyXG4gICAgc2FsdG9fbnNfbmM/OiBudWxsXHJcbn1cclxuZXhwb3J0IHR5cGUgQm90b25Gb3JtdWxhcmlvID0gQ2FzaWxsZXJvQmFzZSAmIHtcclxuICAgIHRpcG9jOiAnQkYnXHJcbiAgICBjYXNpbGxlcm86IElkQm90b25Gb3JtdWxhcmlvXHJcbiAgICB2YXJfbmFtZT86IG51bGxcclxuICAgIHRpcG92YXI/OiBudWxsXHJcbiAgICBwcmltZXJhX3ZhcmlhYmxlPzogSWRWYXJpYWJsZSB8IG51bGxcclxuICAgIHZhcl9uYW1lc19CRj86IElkVmFyaWFibGVbXVxyXG4gICAgbG9uZ2l0dWQ/OiBzdHJpbmdcclxuICAgIHVuaWRhZF9hbmFsaXNpcz86IElkVW5pZGFkQW5hbGlzaXNcclxuICAgIHNhbHRvX25zX25jPzogbnVsbFxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBGb3JtdWxhcmlvID0gQ2FzaWxsZXJvQmFzZSAmIHtcclxuICAgIHRpcG9jOiAnRidcclxuICAgIGNhc2lsbGVybzogSWRGb3JtdWxhcmlvXHJcbiAgICBmb3JtdWxhcmlvX3ByaW5jaXBhbDogYm9vbGVhblxyXG4gICAgY2FzaWxsZXJvczogQ29udGVuaWRvRm9ybXVsYXJpb1tdXHJcbiAgICB2YXJfbmFtZT86IG51bGxcclxuICAgIHRpcG92YXI/OiBudWxsXHJcbiAgICBoZXJtYW5vPzogdHJ1ZVxyXG4gICAgdW5pZGFkX2FuYWxpc2lzOiBJZFVuaWRhZEFuYWxpc2lzXHJcbiAgICBzYWx0b19uc19uYz86IG51bGxcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUE1hdHJpeiA9IENhc2lsbGVyb0Jhc2UgJiB7XHJcbiAgICB0aXBvYzogJ1BNQVRSSVonXHJcbiAgICBzYWx0b19uc19uYz86IG51bGxcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgQ2FzaWxsZXJvc0ltcGxlbWVudGFkb3MgPSBGb3JtdWxhcmlvIHwgQmxvcXVlIHwgRmlsdHJvIHwgQ29uanVudG9QcmVndW50YXMgfCBQcmVndW50YSB8IE9wY2lvbk11bHRpcGxlIHwgT3BjaW9uIHwgQm90b25Gb3JtdWxhcmlvIHwgQ29uc2lzdGVuY2lhIHwgVGV4dG8gfCBMaWJyZSB8IFBNYXRyaXpcclxuXHJcbmV4cG9ydCB0eXBlIENhbXBvUGtSYWl6ID0gJ3ZpdmllbmRhJyB8ICdldGMuLi4nO1xyXG5cclxuZXhwb3J0IHR5cGUgVmFsdWVQa1JhaXogPSBJZEVuY1xyXG5cclxuZXhwb3J0IHR5cGUgRm9yUGtSYWl6ID0ge1xyXG4gICAgZm9ybXVsYXJpbzogSWRGb3JtdWxhcmlvXHJcbn0gJiB7XHJcbiAgICBbY2FtcG8gaW4gQ2FtcG9Qa1JhaXpdOiBWYWx1ZVBrUmFpelxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBDYW1wb1BrID0gJ3ZpdmllbmRhJyB8ICdob2dhcicgfCAncGVyc29uYScgfCAnZXRjLi4uJztcclxuZXhwb3J0IHR5cGUgRm9yUGsgPSBGb3JQa1JhaXogJiB7XHJcbiAgICBbY2FtcG8gaW4gQ2FtcG9Qa10/OiBudW1iZXJcclxufVxyXG5leHBvcnQgdHlwZSBQbGFpbkZvclBrID0gJ3tcImZvcm11bGFyaW9cIjpcIkY6RjFcIixcInZpdmllbmRhXCI6XCIxMDIwMlwiLFwicGVyc29uYVwiOm51bGx9JyB8ICdldGMuLi4nO1xyXG5cclxuZXhwb3J0IHR5cGUgT2JqZXRvTnVtZXJhZG9PQXJyYXk8VD4gPSBUW10gfCB7IFtuIGluIG51bWJlcl06IFQgfVxyXG5cclxuZXhwb3J0IHR5cGUgUmVzcHVlc3Rhc1VuYVVBID0ge1xyXG4gICAgW3ByZWd1bnRhIGluIElkVmFyaWFibGVdOiBWYWxvclxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBSZXNwdWVzdGFMYXNVQSA9IHtcclxuICAgIFt1YSBpbiBJZFVuaWRhZEFuYWxpc2lzXTogT2JqZXRvTnVtZXJhZG9PQXJyYXk8UmVzcHVlc3Rhcz5cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUmVzcHVlc3RhcyA9IFJlc3B1ZXN0YXNVbmFVQSAmIFJlc3B1ZXN0YUxhc1VBXHJcblxyXG5leHBvcnQgdHlwZSBSZXNwdWVzdGFzUmFpeiA9IFJlc3B1ZXN0YXMgJiB7XHJcbiAgICByZXN1bWVuRXN0YWRvOiBSZXN1bWVuRXN0YWRvXHJcbiAgICByZXN1bWVuRXN0YWRvU3VwOiBSZXN1bWVuRXN0YWRvXHJcbiAgICAkZGlydHk6IGJvb2xlYW5cclxuICAgIGNvZE5vUmVhOiBzdHJpbmcgfCBudWxsXHJcbiAgICBjb2RSZWE6IG51bWJlciB8IG51bGxcclxuICAgIGNvZE5vUmVhU3VwOiBzdHJpbmcgfCBudWxsXHJcbiAgICBjb2RSZWFTdXA6IG51bWJlciB8IG51bGxcclxufVxyXG5cclxuLypcclxuICAgIGFjbGFyYWNpw7NuOlxyXG4gICAge3YxOid4JywgdjI6J3gnLCBwZXJzb25hczpbe3AxOjEsIHAyOid4fSx7cDE6MiwgcDI6eH1dLCBtYXNjb3RhczpbXSB9XHJcbiAgICBlc3TDoSBhbmlkYWRvIHBvciB1bmlkYWQgZGUgYW7DoWxpc2lzXHJcbiovXHJcblxyXG5leHBvcnQgdHlwZSBVbmlkYWRBbmFsaXNpcyA9IHtcclxuICAgIHVuaWRhZF9hbmFsaXNpczogSWRVbmlkYWRBbmFsaXNpcyxcclxuICAgIHBhZHJlPzogSWRVbmlkYWRBbmFsaXNpcyxcclxuICAgIHBrX2FncmVnYWRhOiBDYW1wb1BrLFxyXG4gICAgcHJpbmNpcGFsPzogYm9vbGVhbixcclxuICAgIGhpamFzOiB7IFtrIGluIElkVW5pZGFkQW5hbGlzaXNdPzogVW5pZGFkQW5hbGlzaXMgfVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBURU0gPSB7XHJcbiAgICBub21jYWxsZTogc3RyaW5nXHJcbiAgICBkb21pbmlvOiBudW1iZXJcclxuICAgIHNlY3Rvcjogc3RyaW5nXHJcbiAgICBlZGlmaWNpbzogc3RyaW5nXHJcbiAgICBlbnRyYWRhOiBzdHJpbmdcclxuICAgIG5yb2NhdGFzdHJhbDogc3RyaW5nXHJcbiAgICBwaXNvOiBzdHJpbmdcclxuICAgIGRlcGFydGFtZW50bzogc3RyaW5nXHJcbiAgICBoYWJpdGFjaW9uOiBzdHJpbmdcclxuICAgIGNhc2E6IHN0cmluZ1xyXG4gICAgcHJpb3JpZGFkOiAxIHwgMiB8IDNcclxuICAgIG9ic2VydmFjaW9uZXM6IHN0cmluZ1xyXG4gICAgc2VsZWNjaW9uYWRvOiBudW1iZXIsXHJcbiAgICBjaXRhPzogc3RyaW5nLFxyXG4gICAgY2FyZ2E6IHN0cmluZyxcclxuICAgIHNlbWFuYT86IG51bWJlclxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBSZXN1bWVuRXN0YWRvID0gJ3ZhY2lvJyB8ICdjb24gcHJvYmxlbWFzJyB8ICdpbmNvbXBsZXRvJyB8ICdvaycgfCAnbm8gcmVhJyB8ICdjaXRhIHBhY3RhZGEnO1xyXG5cclxuZXhwb3J0IHR5cGUgSW5mb1RhcmVhID0ge1xyXG4gICAgdGFyZWE6IElkVGFyZWFcclxuICAgIG5vdGFzPzogc3RyaW5nXHJcbiAgICBmZWNoYV9hc2lnbmFjaW9uPzogRGF0ZVxyXG4gICAgYXNpZ25hZG8/OiBzdHJpbmdcclxuICAgIG1haW5fZm9ybTogSWRGb3JtdWxhcmlvXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFZpc2l0YSA9IHtcclxuICAgIGZlY2hhOiBzdHJpbmcgfCBudWxsXHJcbiAgICBob3JhOiBzdHJpbmcgfCBudWxsXHJcbiAgICBpZHBlcjogc3RyaW5nIHwgbnVsbFxyXG4gICAgb2JzZXJ2YWNpb25lczogc3RyaW5nIHwgbnVsbFxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBEYXRvc0hkclVhUHBhbCA9IHtcclxuICAgIHRhcmVhOiBJbmZvVGFyZWFcclxuICAgIHRlbTogVEVNXHJcblxyXG4gICAgLypcclxuICAgICAgICBhY2xhcmFjacOzbjpcclxuICAgICAgICB7djE6J3gnLCB2MjoneCcsIHBlcnNvbmFzOlt7cDE6MSwgcDI6J3h9LHtwMToyLCBwMjp4fV0sIG1hc2NvdGFzOltdIH1cclxuICAgICAgICBlc3TDoSBhbmlkYWRvIHBvciB1bmlkYWQgZGUgYW7DoWxpc2lzXHJcbiAgICAqL1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBJZENhcmdhID0gXCIxXCIgfCBcIjJcIiB8IFwiZXRjXCJcclxuXHJcbmV4cG9ydCB0eXBlIEVzdGFkb0NhcmdhID0gJ3Jlc3VtZW4nIHwgJ3JlbGV2YW1pZW50bycgfCAncmVjaWJvJ1xyXG5cclxuZXhwb3J0IHR5cGUgQ2FyZ2EgPSB7XHJcbiAgICBmZWNoYTogRGF0ZVxyXG4gICAgZXN0YWRvX2NhcmdhOiBFc3RhZG9DYXJnYVxyXG4gICAgbmVjZXNhcmlhczogbnVtYmVyXHJcbiAgICBvYnNlcnZhY2lvbmVzOiBzdHJpbmdcclxuICAgIHJlY2VwY2lvbmlzdGE6IHN0cmluZ1xyXG4gICAgcHVlZGVfYXV0b2dlbmVyYXI6IGJvb2xlYW5cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgQ2FyZ2FzID0ge1xyXG4gICAgW2lkQ2FyZ2EgaW4gSWRDYXJnYV06IENhcmdhXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3IgPSBTdHJ1Y3R1cmU8SWRWYXJpYWJsZSwgVmFsb3IsIElkRmluPjtcclxuXHJcbmV4cG9ydCB0eXBlIE1vZG9EZXNwbGllZ3VlID0gJ21ldGFkYXRvcycgfCAncmVsZXZhbWllbnRvJyB8ICdQREYnXHJcblxyXG5leHBvcnQgdHlwZSBQYW50YWxsYU5hdmVnYWNpb24gPSAnaGRyJyB8ICdzaW5jcm9uaXphY2lvbicgfCAnc2luY3Jvbml6YWNpb25fcmVxdWVyaWRhJyB8ICdtb2RvJztcclxuXHJcbmV4cG9ydCB0eXBlIEluZm9Gb3JtdWxhcmlvID0ge1xyXG4gICAgY2FzaWxsZXJvczogRm9ybXVsYXJpbywgLy8gY2FzaWxsZXJvcyBhcGxhbmFkb3NcclxuICAgIGVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3I6IEVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3IgLy8gZXN0cnVjdHVyYSBkZSB2YXJpYWJsZXMgcGFyYSBlbCBSb3dWYWxpZGF0b3JcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgSWRSZXN1bHRhZG8gPSAnQVZFUklHVUFSJyB8ICdUT0RPJztcclxuZXhwb3J0IHR5cGUgSWRTZW1hbmEgPSAxIHwgMiB8ICdldGMnXHJcblxyXG5leHBvcnQgdHlwZSBTZW1hbmEgPSB7XHJcbiAgICBvcGVyYXRpdm86IElkT3BlcmF0aXZvO1xyXG4gICAgc2VtYW5hOiBudW1iZXI7XHJcbiAgICBzZW1hbmFfcmVmZXJlbmNpYV9kZXNkZT86IHN0cmluZyB8IG51bGw7XHJcbiAgICBzZW1hbmFfcmVmZXJlbmNpYV9oYXN0YT86IHN0cmluZyB8IG51bGw7XHJcbiAgICBkMzBfcmVmZXJlbmNpYV9kZXNkZT86IHN0cmluZyB8IG51bGw7XHJcbiAgICBkMzBfcmVmZXJlbmNpYV9oYXN0YT86IHN0cmluZyB8IG51bGw7XHJcbiAgICBtZXNfcmVmZXJlbmNpYT86IHN0cmluZyB8IG51bGw7XHJcbiAgICBjYXJnYV9lbmNfZGVzZGU/OiBzdHJpbmcgfCBudWxsO1xyXG4gICAgY2FyZ2FfZW5jX2hhc3RhPzogc3RyaW5nIHwgbnVsbDtcclxuICAgIGNhcmdhX3JlY3VfZGVzZGU/OiBzdHJpbmcgfCBudWxsO1xyXG4gICAgY2FyZ2FfcmVjdV9oYXN0YT86IHN0cmluZyB8IG51bGw7XHJcbn07XHJcblxyXG5leHBvcnQgdHlwZSBUYXJlYXNFc3RydWN0dXJhID0ge1xyXG4gICAgW2lkVGFyZWEgaW4gSWRUYXJlYV06IHtcclxuICAgICAgICByZXN1bHRhZG9zOiB7XHJcbiAgICAgICAgICAgIFtpZFJlc3VsdGFkbyBpbiBJZFJlc3VsdGFkb106IHtcclxuICAgICAgICAgICAgICAgIGRlc2NyaXBjaW9uOiBzdHJpbmdcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgRXN0cnVjdHVyYSA9IHtcclxuICAgIGZvcm11bGFyaW9zOiB7XHJcbiAgICAgICAgW25vbWJyZUZvcm11bGFyaW8gaW4gSWRGb3JtdWxhcmlvXTogSW5mb0Zvcm11bGFyaW9cclxuICAgIH1cclxuICAgIHVuaWRhZGVzX2FuYWxpc2lzOiB7XHJcbiAgICAgICAgW2lkVW5pZGFkQW5hbGlzaXMgaW4gSWRVbmlkYWRBbmFsaXNpc106IFVuaWRhZEFuYWxpc2lzXHJcbiAgICB9XHJcbiAgICB0YXJlYXM6IFRhcmVhc0VzdHJ1Y3R1cmFcclxuICAgIHVhUHBhbDogSWRVbmlkYWRBbmFsaXNpc1xyXG4gICAgcGtBZ3JlZ2FkYVVhUHBhbDogQ2FtcG9Qa1JhaXpcclxuICAgIHRpbWVzdGFtcDogbnVtYmVyXHJcbiAgICBvcGVyYXRpdm86IElkT3BlcmF0aXZvXHJcbiAgICBjb25maWdTb3J0ZW86IENvbmZpZ3VyYWNpb25Tb3J0ZW9cclxuICAgIGhhYmlsaXRhY2lvbkJvdG9uRm9ybXVsYXJpbzogQ29uZmlndXJhY2lvbkhhYmlsaXRhckJvdG9uRm9ybXVsYXJpb1xyXG4gICAgY29uUmVhSG9nYXI6IGJvb2xlYW5cclxuICAgIG5vUmVhczoge1xyXG4gICAgICAgIG5vX3JlYTogc3RyaW5nXHJcbiAgICAgICAgZGVzY3JpcGNpb246IHN0cmluZ1xyXG4gICAgICAgIGdydXBvOiBzdHJpbmdcclxuICAgICAgICB2YXJpYWJsZTogc3RyaW5nXHJcbiAgICAgICAgdmFsb3I6IHN0cmluZ1xyXG4gICAgICAgIGdydXBvMDogc3RyaW5nXHJcbiAgICB9W11cclxuICAgIG5vUmVhc1N1cDoge1xyXG4gICAgICAgIG5vX3JlYV9zdXA6IHN0cmluZ1xyXG4gICAgICAgIGRlc2Nfbm9yZWFfc3VwOiBzdHJpbmdcclxuICAgICAgICBncnVwb19zdXA6IHN0cmluZ1xyXG4gICAgICAgIHZhcmlhYmxlX3N1cDogc3RyaW5nXHJcbiAgICAgICAgdmFsb3Jfc3VwOiBzdHJpbmdcclxuICAgICAgICBncnVwbzBfc3VwOiBzdHJpbmdcclxuICAgIH1bXSxcclxuICAgIHNlbWFuYXM6IHsgW2lkU2VtYW5hIGluIElkU2VtYW5hXTogU2VtYW5hIH1cclxuICAgIGRlZmF1bHRJbmZvcm1hY2lvbkhkcjogRGF0b3NIZHJVYVBwYWxcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgSWRFbmMgPSAxMzAwMzEgfCAxMzAwMzI7XHJcbmV4cG9ydCB0eXBlIEluZm9ybWFjaW9uSGRyID0geyBbZW5jIGluIElkRW5jXTogRGF0b3NIZHJVYVBwYWwgfVxyXG5cclxuZXhwb3J0IHR5cGUgQ2Fzb1N0YXRlID0ge1xyXG4gICAgb3BjaW9uZXM6IHsgLy8gZGF0b3MgZGUgbmF2ZWdhY2nDs24gcXVlIGVsaWplIGVsIHVzdWFyaW9cclxuICAgICAgICBmb3JQazogRm9yUGsgfCBudWxsIC8vIMOtbmRpY2UgZGVudHJvIGRlIGxhcyB1bmlkYWRlcyBkZSBhbsOhbGlzaXMuIE51bGwgPSBlbiBob2phIGRlIHJ1dGFcclxuICAgICAgICBwaWxhRm9yUGs6IEZvclBrW11cclxuICAgICAgICBtb2RvRGVzcGxpZWd1ZTogTW9kb0Rlc3BsaWVndWVcclxuICAgICAgICBtb2RvRGlyZWN0bzogYm9vbGVhblxyXG4gICAgICAgIG1vZG9Cb3JyYXJSZXNwdWVzdGE6IElkVmFyaWFibGUgfCBudWxsXHJcbiAgICAgICAgY29uQ2FtcG9PcGNpb25lczogYm9vbGVhblxyXG4gICAgICAgIHNhbHRvQXV0b21hdGljbzogYm9vbGVhblxyXG4gICAgICAgIHBhbnRhbGxhQWN0dWFsOiBQYW50YWxsYU5hdmVnYWNpb25cclxuICAgICAgICBhdmlzb1BlcnNpc3RlbnRlOiB7IHRpcG86ICdpbmZvJyB8ICdzdWNjZXNzJyB8ICdlcnJvcicsIG1lbnNhamU6IHN0cmluZ30gfCBudWxsXHJcbiAgICAgICAgY29tb2RpbmVzOiB7W2lkQ29tb2RpbiBpbiBJZENvbW9kaW5dPzogc3RyaW5nfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBEZWZPcGVyYXRpdm8gPSB7XHJcbiAgICBlc05vUmVhOiAocmVzcHVlc3RhczogUmVzcHVlc3RhcykgPT4geyBjb2ROb1JlYTogc3RyaW5nIHwgbnVsbCwgZXNOb1JlYTogYm9vbGVhbiB9LFxyXG4gICAgZXNOb1JlYVN1cDogKHJlc3B1ZXN0YXM6IFJlc3B1ZXN0YXMpID0+IHsgY29kTm9SZWFTdXA6IHN0cmluZyB8IG51bGwsIGVzTm9SZWFTdXA6IGJvb2xlYW4gfSxcclxuICAgIGVzUmVhbGl6YWRhOiAocmVzcHVlc3RhczogUmVzcHVlc3RhcykgPT4geyBjb2RSZWE6IG51bWJlciB8IG51bGwsIGVzUmVhOiBib29sZWFuIH0sXHJcbiAgICBlc1JlYWxpemFkYVN1cDogKHJlc3B1ZXN0YXM6IFJlc3B1ZXN0YXMpID0+IHsgY29kUmVhU3VwOiBudW1iZXIgfCBudWxsLCBlc1JlYVN1cDogYm9vbGVhbiB9LFxyXG4gICAgVUFwcmluY2lwYWw6IElkVW5pZGFkQW5hbGlzaXMsXHJcbiAgICBkZWZVQTogeyBbaSBpbiBJZFVuaWRhZEFuYWxpc2lzXTogeyBwazogSWRWYXJpYWJsZSwgaW5jbHVpZGFzOiBJZFVuaWRhZEFuYWxpc2lzW10sIGlkc0ZvcjogSWRGb3JtdWxhcmlvW10gfSB9LFxyXG4gICAgZGVmRm9yOiB7IFtmIGluIElkRm9ybXVsYXJpb106IHsvKmFyYm9sVUE6SWRVbmlkYWRBbmFsaXNpc1tdLCAqLyBoZXJtYW5vPzogdHJ1ZSB9IH1cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgRGF0b3NCeVBhc3NQZXJzaXN0aWJsZXMgPSB7XHJcbiAgICByZXNwdWVzdGFzOiB7IFt1YSBpbiBJZFVuaWRhZEFuYWxpc2lzXTogUmVzcHVlc3Rhc1JhaXpbXSB9XHJcbiAgICBtb2RvQWxtYWNlbmFtaWVudG86IE1vZG9BbG1hY2VuYW1pZW50b1xyXG4gICAgcGVyc29uYTogc3RyaW5nXHJcbiAgICB0YXJlYTogSWRUYXJlYVxyXG4gICAgaWRwZXI6IHN0cmluZ1xyXG4gICAgY2FyZ2FzOiBDYXJnYXNcclxuICAgIGluZm9ybWFjaW9uSGRyOiBJbmZvcm1hY2lvbkhkclxyXG4gICAgc29sb0xlY3R1cmE6IGJvb2xlYW5cclxuICAgIHRva2VuPzogc3RyaW5nXHJcbiAgICBudW1fc2luY3JvPzogbnVtYmVyXHJcbiAgICB0aW1lc3RhbXBFc3RydWN0dXJhPzogbnVtYmVyXHJcbiAgICBwZXJtaXRlQm9ycmFyRWxlbWVudG9zVUE/OiBib29sZWFuXHJcbn1cclxuXHJcbnR5cGUgQ29uZmlndXJhY2lvblNvcnRlb1RhYmxhID0ge1xyXG4gICAgbWV0b2RvOiBcInRhYmxhXCIsXHJcbiAgICBwYXJhbV9tZXRvZG86IHtcclxuICAgICAgICB0YWJsYTogc3RyaW5nW10sXHJcbiAgICAgICAgdmFyX2xldHJhOiBJZFZhcmlhYmxlLFxyXG4gICAgfVxyXG59XHJcblxyXG50eXBlIENvbmZpZ3VyYWNpb25Tb3J0ZW9IYXNoID0ge1xyXG4gICAgbWV0b2RvOiBcImhhc2hcIixcclxuICAgIHBhcmFtX21ldG9kbzoge1xyXG4gICAgICAgIHZhcl9jb2VmOiBbXHJcbiAgICAgICAgICAgIHsgdmFyOiBJZFZhcmlhYmxlLCBjb2VmOiBudW1iZXIgfSxcclxuICAgICAgICAgICAgeyB2YXI6IElkVmFyaWFibGUsIGNvZWY6IG51bWJlciB9LFxyXG4gICAgICAgIF0sXHJcbiAgICAgICAgZGl2aXNvcjogbnVtYmVyXHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIENvbmZpZ3VyYWNpb25Tb3J0ZW8gPSB7IFtrZXkgaW4gSWRGb3JtdWxhcmlvXTogQ29uZmlndXJhY2lvblNvcnRlb0Zvcm11bGFyaW8gfVxyXG5cclxuZXhwb3J0IHR5cGUgQ29uZmlndXJhY2lvbkhhYmlsaXRhckJvdG9uRm9ybXVsYXJpbyA9IHsgW2tleSBpbiBJZEZvcm11bGFyaW9dOiBDb25maWd1cmFjaW9uSGFiaWxpdGFyQm90b25Gb3JtdWxhcmlvRm9ybSB9XHJcblxyXG5leHBvcnQgdHlwZSBDb25maWd1cmFjaW9uU29ydGVvRm9ybXVsYXJpbyA9IHtcclxuICAgIHVuaWRhZF9hbmFsaXNpczogSWRVbmlkYWRBbmFsaXNpcyxcclxuICAgIHVuaWRhZF9hbmFsaXNpc19wYWRyZTogSWRVbmlkYWRBbmFsaXNpcyxcclxuICAgIC8vZXhwcl9pbmNvbXBsZXRpdHVkOiBzdHJpbmcgLy9cIm5vdCAocDEpIG9yIG5vIHQgKHAyKSBvciBub3QocDMpXCJcclxuICAgIGV4cHJfaW5jb21wbGV0aXR1ZDoge1xyXG4gICAgICAgIFtrZXkgaW4gbnVtYmVyXTogeyBkb21pbmlvOiBudW1iZXIsIGV4cHI6IHN0cmluZyB9XHJcbiAgICB9XHJcbiAgICAvL2V4cHJfaW5jb21wbGV0aXR1ZF9qczogc3RyaW5nIC8vc2UgY3JlYSBhbCBjb21waWxhclxyXG4gICAgZXhwcl9pbmNvbXBsZXRpdHVkX2pzOiB7XHJcbiAgICAgICAgW2tleSBpbiBudW1iZXJdOiB7IGRvbWluaW86IG51bWJlciwgZXhwcjogc3RyaW5nIH1cclxuICAgIH1cclxuICAgIGRpc3BhcmFkb3I6IElkVmFyaWFibGUgLy9cInA5XCJcclxuICAgIC8vZmlsdHJvOiBzdHJpbmcgLy9cInAzPj0xOFwiXHJcbiAgICBmaWx0cm86IHtcclxuICAgICAgICBba2V5IGluIG51bWJlcl06IHsgZG9taW5pbzogbnVtYmVyLCBleHByOiBzdHJpbmcgfVxyXG4gICAgfVxyXG4gICAgLy9maWx0cm9fanM6IHN0cmluZyAvL3NlIGNyZWEgYWwgY29tcGlsYXJcclxuICAgIGZpbHRyb19qczoge1xyXG4gICAgICAgIFtrZXkgaW4gbnVtYmVyXTogeyBkb21pbmlvOiBudW1iZXIsIGV4cHI6IHN0cmluZyB9XHJcbiAgICB9XHJcbiAgICBvcmRlbjoge1xyXG4gICAgICAgIHZhcmlhYmxlOiBJZFZhcmlhYmxlXHJcbiAgICAgICAgb3JkZW46IDEgfCAtMVxyXG4gICAgfVtdIC8vW1wicDNcIiwgXCJwMlwiLCBcInAxXCIsIFwicDBcIl0sIC8vIHAwIGVzIGNvbnN0cnVpZGEsIG5vIHZhIGVuIHBhcsOhbWV0cm9zLCBzZSBwb25lIHBhcmEgcXVlIGVsIG9yZGVuIHNlYSBkZXRlcm1pbsOtc3RpY29cclxuICAgIHBhcmFtZXRyb3M6IElkVmFyaWFibGVbXS8vIFtcInAxXCIsXCJwMlwiLFwicDNcIiwgXCJwNFwiLCBcInA1XCIsIFwicDZcIl0sIC8vIHZhcmlhYmxlcyBxdWUgYW51bGFuIGFsIGRpc3BhcmFkb3JcclxuICAgIGNhbnRpZGFkX3NvcnRlYWJsZXM6IElkVmFyaWFibGVcclxuICAgIGNhbnRpZGFkX3RvdGFsOiBJZFZhcmlhYmxlXHJcbiAgICByZXN1bHRhZG86IElkVmFyaWFibGUgLy9cInAxMVwiXHJcbiAgICByZXN1bHRhZG9fbWFudWFsOiBJZFZhcmlhYmxlIC8vXCJwMTFcIlxyXG4gICAgc29ydGVhZG9fbW9zdHJhcj86IHsgc291cmNlOiBJZFZhcmlhYmxlLCB0YXJnZXQ6IElkVmFyaWFibGUgfVtdLFxyXG4gICAgaW5jb21wbGV0YXM6IElkVmFyaWFibGVcclxuICAgIHZhcmlhYmxlQm90b25Gb3JtdWxhcmlvVUE6IElkVmFyaWFibGUvLyckQi5GOlMxX1AnXHJcbiAgICB2YXJpYWJsZUJvdG9uRm9ybXVsYXJpb1VBSW5kaXZpZHVhbD86IElkVmFyaWFibGUgLy8nJEIuRjpJMSdcclxuICAgIGlkX2Zvcm11bGFyaW9faW5kaXZpZHVhbD86IElkRm9ybXVsYXJpbyAvLyAnRjpJMSdcclxuICAgIGlkX2Zvcm11bGFyaW9fcGFkcmU/OiBJZEZvcm11bGFyaW8gLy8gJ0Y6UzEnXHJcbn0gJiAoQ29uZmlndXJhY2lvblNvcnRlb0hhc2ggfCBDb25maWd1cmFjaW9uU29ydGVvVGFibGEpXHJcblxyXG5leHBvcnQgdHlwZSBDb25maWd1cmFjaW9uSGFiaWxpdGFyQm90b25Gb3JtdWxhcmlvRm9ybSA9IHtcclxuICAgIHVuaWRhZF9hbmFsaXNpczogSWRVbmlkYWRBbmFsaXNpcyxcclxuICAgIGV4cHJfaGFiaWxpdGFyX2JvdG9uOiBzdHJpbmcsXHJcbiAgICBleHByX2hhYmlsaXRhcl9ib3Rvbl9qczogc3RyaW5nLFxyXG4gICAgaGFiaWxpdGFyX2FncmVnYXJfbGlzdG86IGJvb2xlYW5cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHRvUGxhaW5Gb3JQayhmb3JQazogRm9yUGspOiBQbGFpbkZvclBrIHtcclxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShmb3JQayk7XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgaXRlcmF0b3I6IDxUPihvOiBPYmpldG9OdW1lcmFkb09BcnJheTxUPikgPT4gSXRlcmFibGU8VD4gPSBMaWtlQXIuaXRlcmF0b3JcclxuZXhwb3J0IHZhciBlbXB0eTogPFQ+KG86IE9iamV0b051bWVyYWRvT0FycmF5PFQ+IHwgbnVsbCB8IHVuZGVmaW5lZCkgPT4gYm9vbGVhbiA9IExpa2VBci5lbXB0eVxyXG5cclxuZGVjbGFyZSBnbG9iYWwge1xyXG4gICAgbmFtZXNwYWNlIG15T3duIHtcclxuICAgICAgICBpbnRlcmZhY2UgQWRkclBhcmFtcyB7XHJcbiAgICAgICAgICAgIHN0YXRlX2ZvclBrOiBzdHJpbmdcclxuICAgICAgICAgICAgc3RhdGVfcGlsYUZvclBrOiBzdHJpbmdcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIERpcmVjY2lvbkFjY2lvbiA9ICdhdmFuY2UnIHwgJ3JldHJvY2VzbycgfCAnYmxhbnF1ZW8nXHJcblxyXG5leHBvcnQgdHlwZSBFc3RhZG9BY2Npb24gPSB7XHJcbiAgICBvcGVyYXRpdm86IHN0cmluZ1xyXG4gICAgZXN0YWRvOiBzdHJpbmdcclxuICAgIGVhY2Npb246IHN0cmluZ1xyXG4gICAgY29uZGljaW9uOiBzdHJpbmdcclxuICAgIGVzdGFkb19kZXN0aW5vOiBzdHJpbmdcclxuICAgIGVhY2Npb25fZGlyZWNjaW9uOiBEaXJlY2Npb25BY2Npb25cclxuICAgIHBhdGhfaWNvbm9fc3ZnOiBzdHJpbmdcclxuICAgIG5vbWJyZV9wcm9jZWR1cmU6IHN0cmluZ1xyXG4gICAgbm9tYnJlX3dzY3JlZW46IHN0cmluZ1xyXG4gICAgZGVzYWN0aXZhX2JvdG9uOiBib29sZWFuXHJcbiAgICBjb25maXJtYTogYm9vbGVhblxyXG59XHJcbmV4cG9ydCB0eXBlIE1vZG9ETSA9ICdwcm9kdWMnIHwgJ2NhcGEnOyJdfQ==
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlwb3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdW5sb2dnZWQvdGlwb3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0lBQUEsWUFBWSxDQUFDOzs7SUE0aEJiLG9DQUVDO0lBNWhCRCxrQ0FBa0M7SUEwaEJsQyxTQUFnQixZQUFZLENBQUMsS0FBWTtRQUNyQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVVLFFBQUEsUUFBUSxHQUFtRCxNQUFNLENBQUMsUUFBUSxDQUFBO0lBQzFFLFFBQUEsS0FBSyxHQUFrRSxNQUFNLENBQUMsS0FBSyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcbmltcG9ydCB7IFN0cnVjdHVyZSwgRmVlZGJhY2sgfSBmcm9tIFwicm93LXZhbGlkYXRvclwiO1xyXG5pbXBvcnQgKiBhcyBMaWtlQXIgZnJvbSBcImxpa2UtYXJcIjtcclxuXHJcbmV4cG9ydCB0eXBlIE1vZG9BbG1hY2VuYW1pZW50byA9ICdzZXNzaW9uJyB8IC8vIGN1YW5kbyBzZWEgcGFyYSB1bmEgc29sYSBwZXN0YcOxYSwgc2UgdXNhIGVuIG1vZG8gZGlyZWN0byxcclxuICAgICdsb2NhbCcgICAgLy8gcGFyYSB0b2RvIGVsIGRpc3Bvc2l0aXZvLCBzZSB1c2EgYWwgY2FyZ2FyIGhvamFzIGRlIHJ1dGEgZW50cmVzXHJcblxyXG5leHBvcnQgdHlwZSBJZE9wY2lvbiA9IG51bWJlclxyXG5leHBvcnQgdHlwZSBJZE9wZXJhdGl2byA9ICdldG9pMjExJyB8ICdlYWgyMDIyJyB8ICdldGMuLi4nXHJcbmV4cG9ydCB0eXBlIElkVmFyaWFibGUgPSAndjEnIHwgJ3YyJyB8ICd2MycgfCAnZXRjLi4uJyB8ICd2ZG9taW5pbycgfCAnJHAwJ1xyXG5leHBvcnQgdHlwZSBJZFByZWd1bnRhID0gJ1AxJyB8ICdQMicgfCAnZXRjLi4uJ1xyXG5leHBvcnQgdHlwZSBJZEJsb3F1ZSA9ICdCMScgfCAnQjInIHwgJ2V0Yy4uLidcclxuZXhwb3J0IHR5cGUgSWRGb3JtdWxhcmlvID0gJ0YxJyB8ICdGMicgfCAnZXRjLi4uJ1xyXG5leHBvcnQgdHlwZSBJZFVuaWRhZEFuYWxpc2lzID0gJ3ZpdmllbmRhcycgfCAnaG9nYXJlcycgfCAncGVyc29uYXMnXHJcbmV4cG9ydCB0eXBlIElkQm90b25Gb3JtdWxhcmlvID0gJ0JGOkYxJyB8ICdCRjpGMicgfCAnZXRjLi4uJ1xyXG5leHBvcnQgdHlwZSBJZENvbnNpc3RlbmNpYSA9ICdDT05TMScgfCAnQ09OUzInIHwgJ2V0Yy4uLidcclxuZXhwb3J0IHR5cGUgSWRUZXh0byA9ICdEMzBfUkVGJyB8ICdNRVNfUkVGJyB8ICdTRU1fUkVGJyB8ICdldGMuLi4nXHJcbmV4cG9ydCB0eXBlIElkQ29tb2RpbiA9ICdEMzBfUkVGJyB8ICdNRVNfUkVGJyB8ICdTRU1fUkVGJyB8ICdTRU1fTlVNJyB8ICdyZXNwczEnIHwgJ3BhcmVudHMxJyB8ICdyZXNwaTEnIHwgJ3BhcmVudGkxJyB8ICduamVmZScgfCAnZnJlYWxpeicgfCAnY2FudGlfaG9nYXJlcydcclxuZXhwb3J0IHR5cGUgSWRGaWx0cm8gPSAnRklMVFJPMScgfCAnRklMVFJPMicgfCAnZXRjLi4uJ1xyXG5leHBvcnQgdHlwZSBJZENhc2lsbGVybyA9IElkVmFyaWFibGUgfCBJZFByZWd1bnRhIHwgSWRCbG9xdWUgfCBJZEZvcm11bGFyaW8gfCBJZEZpbHRybyB8IElkT3BjaW9uXHJcbmV4cG9ydCB0eXBlIElkRmluID0gJ2Zpbic7IC8vIG5ldmVyIC8vIFRPRE86IHBvZGVyIHBvbmVyICdGSU4nXHJcbmV4cG9ydCB0eXBlIElkRGVzdGlubyA9IElkUHJlZ3VudGEgfCBJZEJsb3F1ZSB8IElkRmluIHwgSWRGaWx0cm9cclxuZXhwb3J0IHR5cGUgVmFsb3IgPSBzdHJpbmcgfCBudW1iZXIgfCBudWxsO1xyXG5leHBvcnQgdHlwZSBUaXBvY0Rlc3Rpbm9zID0gJ1AnIHwgJ0NQJyB8ICdCJyB8ICdGSUxUUk8nIHwgJ0JGJ1xyXG5leHBvcnQgdHlwZSBUaXBvYyA9IFRpcG9jRGVzdGlub3MgfCAnRicgfCAnTycgfCAnT00nIHwgJ0NPTlMnIHwgJ1RFWFRPJyB8ICdMSUJSRScgfCAnUE1BVFJJWidcclxuXHJcbmV4cG9ydCB0eXBlIEVzcGVjaWFsID0ge1xyXG4gICAgZ3BzPzogYm9vbGVhblxyXG4gICAgbm9TY3JvbGw/OiBib29sZWFuXHJcbiAgICBzY3JvbGxUbz86IElkVmFyaWFibGUgfCBJZEZpblxyXG4gICAgYXV0b2luZz86IHN0cmluZ1xyXG4gICAgZmxleERpcmVjdGlvbj86ICdyb3cnIHwgJ2NvbHVtbicgfCAncm93LXJldmVyc2UnIHwgJ2NvbHVtbi1yZXZlcnNlJ1xyXG4gICAgY2FtcG9zUmVzdW1lbj86IHN0cmluZ1tdXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIElkVGFyZWEgPSAnZW5jdScgfCAncmVjdScgfCAnc3VwZScgfCAnaW5ncic7XHJcblxyXG5leHBvcnQgdHlwZSBGZWVkYmFja1ZhcmlhYmxlID0gRmVlZGJhY2s8SWRWYXJpYWJsZSwgSWRGaW4+XHJcblxyXG5leHBvcnQgdHlwZSBUaXBvVmFyaWFibGVzID0gJ3RleHRvJyB8ICdudW1lcm8nIHwgJ2ZlY2hhJyB8ICdob3JhcycgfCAnaG9yYSdcclxuXHJcbmV4cG9ydCB0eXBlIERlc3BsaWVndWUgPSAnaG9yaXpvbnRhbCcgfCAnb2N1bHRhJ1xyXG5cclxuZXhwb3J0IHR5cGUgQ2FzaWxsZXJvQmFzZSA9IHtcclxuICAgIGlkX2Nhc2lsbGVybz86IHN0cmluZ1xyXG4gICAgdGlwb2M6IFRpcG9jXHJcbiAgICBjYXNpbGxlcm86IElkQ2FzaWxsZXJvXHJcbiAgICBub21icmU6IHN0cmluZ1xyXG4gICAgc2FsdG86IElkRGVzdGlubyB8IElkRmluIHwgbnVsbFxyXG4gICAgc2FsdG9fbnNfbmM/OiBJZERlc3Rpbm8gfCBJZEZpbiB8IG51bGxcclxuICAgIHZlcl9pZDogc3RyaW5nIHwgbnVsbFxyXG4gICAgZGVzcGxpZWd1ZUVuY2FiZXphZG86ICdsYXRlcmFsJyB8ICdzdXBlcmlvcicgfCBudWxsXHJcbiAgICBkZXNwbGllZ3VlQ29udGVuaWRvOiAndmVydGljYWwnIHwgJ2hvcml6b250YWwnIHwgbnVsbFxyXG4gICAgZGVzcGxpZWd1ZVRpcG9JbnB1dDogJ3RlbCcgfCBudWxsXHJcbiAgICBkZXNwbGllZ3VlT2N1bHRhOiBib29sZWFuIHwgbnVsbFxyXG4gICAgbGVlcjogYm9vbGVhbiB8IG51bGxcclxuICAgIGFjbGFyYWNpb246IHN0cmluZyB8IG51bGxcclxuICAgIHByaW1lcmFfdmFyaWFibGU/OiBJZFZhcmlhYmxlIHwgbnVsbFxyXG4gICAgdmFyX25hbWU/OiBJZFZhcmlhYmxlIHwgbnVsbFxyXG4gICAgdmFyX25hbWVfZXNwZWNpYWw/OiBzdHJpbmcgfCBudWxsXHJcbiAgICB0aXBvdmFyPzogVGlwb1ZhcmlhYmxlcyB8ICdvcGNpb25lcycgfCAnc2lfbm8nIHwgbnVsbFxyXG4gICAgY2FzaWxsZXJvcz86IENhc2lsbGVyb3NJbXBsZW1lbnRhZG9zW10gfCBudWxsXHJcbiAgICBleHByZXNpb25faGFiaWxpdGFyPzogc3RyaW5nXHJcbiAgICBleHByZXNpb25faGFiaWxpdGFyX2pzPzogc3RyaW5nXHJcbiAgICBleHByZXNpb25fYXV0b2luZ3Jlc2FyPzogc3RyaW5nXHJcbiAgICBleHByZXNpb25fYXV0b2luZ3Jlc2FyX2pzPzogc3RyaW5nXHJcbiAgICBlc3BlY2lhbD86IEVzcGVjaWFsXHJcbiAgICBjYWxjdWxhZGE/OiBib29sZWFuIHwgbnVsbFxyXG4gICAgb3B0YXRpdm8/OiBib29sZWFuIHwgbnVsbFxyXG4gICAgbGlicmU/OiBib29sZWFuIHwgbnVsbFxyXG4gICAgdmFsb3JfbnNfbmM/OiBhbnlcclxuICAgIGRlc3BsaWVndWU/OiBzdHJpbmdcclxuICAgIGxvbmdpdHVkPzogc3RyaW5nXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIE9wY2lvbiA9IENhc2lsbGVyb0Jhc2UgJiB7XHJcbiAgICB0aXBvYzogJ08nXHJcbiAgICBjYXNpbGxlcm86IElkT3BjaW9uXHJcbiAgICBjYXNpbGxlcm9zOiBQcmVndW50YVNpbXBsZVtdXHJcbiAgICB2YXJfbmFtZT86IG51bGxcclxuICAgIHRpcG92YXI/OiBudWxsXHJcbiAgICBwcmltZXJhX3ZhcmlhYmxlPzogbnVsbFxyXG4gICAgc2FsdG9fbnNfbmM/OiBudWxsXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIE9wY2lvblNpID0gT3BjaW9uICYge1xyXG4gICAgY2FzaWxsZXJvOiAxXHJcbiAgICBub21icmU6ICdTw60nXHJcbiAgICBjYXNpbGxlcm9zOiBQcmVndW50YVNpbXBsZVtdXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIE9wY2lvbk5vID0gT3BjaW9uICYge1xyXG4gICAgY2FzaWxsZXJvOiAyXHJcbiAgICBub21icmU6ICdObydcclxuICAgIGNhc2lsbGVyb3M6IFByZWd1bnRhU2ltcGxlW11cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgT3BjaW9uTXVsdGlwbGUgPSBDYXNpbGxlcm9CYXNlICYge1xyXG4gICAgdGlwb2M6ICdPTSdcclxuICAgIHRpcG92YXI6ICdvcGNpb25lcydcclxuICAgIHZhcl9uYW1lOiBJZFZhcmlhYmxlXHJcbiAgICBjYXNpbGxlcm9zOiBbT3BjaW9uU2ksIE9wY2lvbk5vXVxyXG4gICAgY2FsY3VsYWRhPzogYm9vbGVhblxyXG4gICAgbGlicmU/OiBib29sZWFuXHJcbiAgICB2YWxvcl9uc19uYzogYW55XHJcbiAgICBzYWx0b19uc19uYz86IG51bGxcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUHJlZ3VudGFCYXNlID0gQ2FzaWxsZXJvQmFzZSAmIHtcclxuICAgIHRpcG9jOiAnUCdcclxuICAgIG9wdGF0aXZvOiBib29sZWFuIHwgbnVsbFxyXG4gICAgY2FzaWxsZXJvOiBJZFByZWd1bnRhXHJcbiAgICBjYWxjdWxhZGE6IGJvb2xlYW4gfCBudWxsXHJcbiAgICBsaWJyZTogYm9vbGVhbiB8IG51bGxcclxuICAgIHZhbG9yX25zX25jOiBhbnlcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUHJlZ3VudGFTaW1wbGUgPSBQcmVndW50YUJhc2UgJiB7XHJcbiAgICB0aXBvdmFyOiBUaXBvVmFyaWFibGVzXHJcbiAgICB2YXJfbmFtZTogSWRWYXJpYWJsZVxyXG4gICAgbG9uZ2l0dWQ6IHN0cmluZ1xyXG4gICAgc2FsdG9fbnNfbmM6IElkRGVzdGlubyB8IElkRmluIHwgbnVsbFxyXG4gICAgY2FzaWxsZXJvczogUHJlZ3VudGFTaW1wbGVbXVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBQcmVndW50YUNvblNpTm8gPSBQcmVndW50YUJhc2UgJiB7XHJcbiAgICB0aXBvdmFyOiAnc2lfbm8nXHJcbiAgICB2YXJfbmFtZTogSWRWYXJpYWJsZVxyXG4gICAgc2FsdG9fbnNfbmM6IElkRGVzdGlubyB8IElkRmluIHwgbnVsbFxyXG4gICAgY2FzaWxsZXJvczogW09wY2lvblNpLCBPcGNpb25Ob11cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUHJlZ3VudGFDb25PcGNpb25lcyA9IFByZWd1bnRhQmFzZSAmIHtcclxuICAgIHRpcG92YXI6ICdvcGNpb25lcydcclxuICAgIHZhcl9uYW1lOiBJZFZhcmlhYmxlXHJcbiAgICBzYWx0b19uc19uYzogSWREZXN0aW5vIHwgSWRGaW4gfCBudWxsXHJcbiAgICBjYXNpbGxlcm9zOiBPcGNpb25bXVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBQcmVndW50YUNvbk9wY2lvbmVzTXVsdGlwbGVzID0gUHJlZ3VudGFCYXNlICYge1xyXG4gICAgdmFyX25hbWU/OiBudWxsXHJcbiAgICB0aXBvdmFyPzogbnVsbFxyXG4gICAgY2FzaWxsZXJvczogT3BjaW9uTXVsdGlwbGVbXVxyXG4gICAgc2FsdG9fbnNfbmM/OiBudWxsXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFByZWd1bnRhID0gUHJlZ3VudGFTaW1wbGUgfCBQcmVndW50YUNvblNpTm8gfCBQcmVndW50YUNvbk9wY2lvbmVzIHwgUHJlZ3VudGFDb25PcGNpb25lc011bHRpcGxlc1xyXG5cclxuZXhwb3J0IHR5cGUgQ29uanVudG9QcmVndW50YXMgPSBDYXNpbGxlcm9CYXNlICYge1xyXG4gICAgdGlwb2M6ICdDUCdcclxuICAgIGNhc2lsbGVybzogSWRQcmVndW50YVxyXG4gICAgdmFyX25hbWU/OiBudWxsXHJcbiAgICB0aXBvdmFyPzogbnVsbFxyXG4gICAgY2FzaWxsZXJvczogUHJlZ3VudGFbXVxyXG4gICAgc2FsdG9fbnNfbmM/OiBudWxsXHJcbn1cclxuXHJcbi8qXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUNvbnRlbmlkbyBleHRlbmRzIENhc2lsbGVyb0Jhc2Uge1xyXG4gICAgY2FzaWxsZXJvczpJQ29udGVuaWRvW11cclxufVxyXG4qL1xyXG5cclxuZXhwb3J0IHR5cGUgRmlsdHJvID0gQ2FzaWxsZXJvQmFzZSAmIHtcclxuICAgIHRpcG9jOiAnRklMVFJPJ1xyXG4gICAgY2FzaWxsZXJvOiBJZEZpbHRyb1xyXG4gICAgdmFyX25hbWU/OiBudWxsXHJcbiAgICB0aXBvdmFyPzogbnVsbFxyXG4gICAgcHJpbWVyYV92YXJpYWJsZT86IG51bGxcclxuICAgIGNhbGN1bGFkYT86IG51bGxcclxuICAgIGxpYnJlPzogbnVsbFxyXG4gICAgc2FsdG9fbnNfbmM/OiBudWxsXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIENvbnRlbmlkb0Zvcm11bGFyaW8gPSBCbG9xdWUgfCBQcmVndW50YSB8IENvbmp1bnRvUHJlZ3VudGFzIHwgRmlsdHJvIHwgQm90b25Gb3JtdWxhcmlvIHwgQ29uc2lzdGVuY2lhIHwgVGV4dG9cclxuXHJcbmV4cG9ydCB0eXBlIEJsb3F1ZSA9IENhc2lsbGVyb0Jhc2UgJiB7XHJcbiAgICB0aXBvYzogJ0InXHJcbiAgICBjYXNpbGxlcm86IElkQmxvcXVlXHJcbiAgICBjYXNpbGxlcm9zOiBDb250ZW5pZG9Gb3JtdWxhcmlvW11cclxuICAgIHZhcl9uYW1lPzogbnVsbFxyXG4gICAgdGlwb3Zhcj86IG51bGxcclxuICAgIHVuaWRhZF9hbmFsaXNpcz86IElkVW5pZGFkQW5hbGlzaXNcclxuICAgIHNhbHRvX25zX25jPzogbnVsbFxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBDb25zaXN0ZW5jaWEgPSBDYXNpbGxlcm9CYXNlICYge1xyXG4gICAgdGlwb2M6ICdDT05TJ1xyXG4gICAgY2FzaWxsZXJvOiBJZENvbnNpc3RlbmNpYVxyXG4gICAgdmFyX25hbWU/OiBudWxsXHJcbiAgICB0aXBvdmFyPzogbnVsbFxyXG4gICAgcHJpbWVyYV92YXJpYWJsZT86IG51bGxcclxuICAgIHNhbHRvX25zX25jPzogbnVsbFxyXG59XHJcbmV4cG9ydCB0eXBlIFRleHRvID0gQ2FzaWxsZXJvQmFzZSAmIHtcclxuICAgIHRpcG9jOiAnVEVYVE8nXHJcbiAgICBjYXNpbGxlcm86IElkVGV4dG9cclxuICAgIHZhcl9uYW1lPzogbnVsbFxyXG4gICAgdGlwb3Zhcj86IG51bGxcclxuICAgIHByaW1lcmFfdmFyaWFibGU/OiBudWxsXHJcbiAgICBzYWx0b19uc19uYz86IG51bGxcclxufVxyXG5leHBvcnQgdHlwZSBMaWJyZSA9IENhc2lsbGVyb0Jhc2UgJiB7XHJcbiAgICB0aXBvYzogJ0xJQlJFJ1xyXG4gICAgY2FzaWxsZXJvOiBJZFRleHRvXHJcbiAgICB2YXJfbmFtZT86IG51bGxcclxuICAgIHRpcG92YXI/OiBudWxsXHJcbiAgICBwcmltZXJhX3ZhcmlhYmxlPzogbnVsbFxyXG4gICAgc2FsdG9fbnNfbmM/OiBudWxsXHJcbn1cclxuZXhwb3J0IHR5cGUgQm90b25Gb3JtdWxhcmlvID0gQ2FzaWxsZXJvQmFzZSAmIHtcclxuICAgIHRpcG9jOiAnQkYnXHJcbiAgICBjYXNpbGxlcm86IElkQm90b25Gb3JtdWxhcmlvXHJcbiAgICB2YXJfbmFtZT86IG51bGxcclxuICAgIHRpcG92YXI/OiBudWxsXHJcbiAgICBwcmltZXJhX3ZhcmlhYmxlPzogSWRWYXJpYWJsZSB8IG51bGxcclxuICAgIHZhcl9uYW1lc19CRj86IElkVmFyaWFibGVbXVxyXG4gICAgbG9uZ2l0dWQ/OiBzdHJpbmdcclxuICAgIHVuaWRhZF9hbmFsaXNpcz86IElkVW5pZGFkQW5hbGlzaXNcclxuICAgIHNhbHRvX25zX25jPzogbnVsbFxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBGb3JtdWxhcmlvID0gQ2FzaWxsZXJvQmFzZSAmIHtcclxuICAgIHRpcG9jOiAnRidcclxuICAgIGNhc2lsbGVybzogSWRGb3JtdWxhcmlvXHJcbiAgICBmb3JtdWxhcmlvX3ByaW5jaXBhbDogYm9vbGVhblxyXG4gICAgY2FzaWxsZXJvczogQ29udGVuaWRvRm9ybXVsYXJpb1tdXHJcbiAgICB2YXJfbmFtZT86IG51bGxcclxuICAgIHRpcG92YXI/OiBudWxsXHJcbiAgICBoZXJtYW5vPzogdHJ1ZVxyXG4gICAgdW5pZGFkX2FuYWxpc2lzOiBJZFVuaWRhZEFuYWxpc2lzXHJcbiAgICBzYWx0b19uc19uYz86IG51bGxcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUE1hdHJpeiA9IENhc2lsbGVyb0Jhc2UgJiB7XHJcbiAgICB0aXBvYzogJ1BNQVRSSVonXHJcbiAgICBzYWx0b19uc19uYz86IG51bGxcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgQ2FzaWxsZXJvc0ltcGxlbWVudGFkb3MgPSBGb3JtdWxhcmlvIHwgQmxvcXVlIHwgRmlsdHJvIHwgQ29uanVudG9QcmVndW50YXMgfCBQcmVndW50YSB8IE9wY2lvbk11bHRpcGxlIHwgT3BjaW9uIHwgQm90b25Gb3JtdWxhcmlvIHwgQ29uc2lzdGVuY2lhIHwgVGV4dG8gfCBMaWJyZSB8IFBNYXRyaXpcclxuXHJcbmV4cG9ydCB0eXBlIENhbXBvUGtSYWl6ID0gJ3ZpdmllbmRhJyB8ICdldGMuLi4nO1xyXG5cclxuZXhwb3J0IHR5cGUgVmFsdWVQa1JhaXogPSBJZEVuY1xyXG5cclxuZXhwb3J0IHR5cGUgRm9yUGtSYWl6ID0ge1xyXG4gICAgZm9ybXVsYXJpbzogSWRGb3JtdWxhcmlvXHJcbn0gJiB7XHJcbiAgICBbY2FtcG8gaW4gQ2FtcG9Qa1JhaXpdOiBWYWx1ZVBrUmFpelxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBDYW1wb1BrID0gJ3ZpdmllbmRhJyB8ICdob2dhcicgfCAncGVyc29uYScgfCAnZXRjLi4uJztcclxuZXhwb3J0IHR5cGUgRm9yUGsgPSBGb3JQa1JhaXogJiB7XHJcbiAgICBbY2FtcG8gaW4gQ2FtcG9Qa10/OiBudW1iZXJcclxufVxyXG5leHBvcnQgdHlwZSBQbGFpbkZvclBrID0gJ3tcImZvcm11bGFyaW9cIjpcIkY6RjFcIixcInZpdmllbmRhXCI6XCIxMDIwMlwiLFwicGVyc29uYVwiOm51bGx9JyB8ICdldGMuLi4nO1xyXG5cclxuZXhwb3J0IHR5cGUgT2JqZXRvTnVtZXJhZG9PQXJyYXk8VD4gPSBUW10gfCB7IFtuIGluIG51bWJlcl06IFQgfVxyXG5cclxuZXhwb3J0IHR5cGUgUmVzcHVlc3Rhc1VuYVVBID0ge1xyXG4gICAgW3ByZWd1bnRhIGluIElkVmFyaWFibGVdOiBWYWxvclxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBSZXNwdWVzdGFMYXNVQSA9IHtcclxuICAgIFt1YSBpbiBJZFVuaWRhZEFuYWxpc2lzXTogT2JqZXRvTnVtZXJhZG9PQXJyYXk8UmVzcHVlc3Rhcz5cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUmVzcHVlc3RhcyA9IFJlc3B1ZXN0YXNVbmFVQSAmIFJlc3B1ZXN0YUxhc1VBXHJcblxyXG5leHBvcnQgdHlwZSBSZXNwdWVzdGFzUmFpeiA9IFJlc3B1ZXN0YXMgJiB7XHJcbiAgICByZXN1bWVuRXN0YWRvOiBSZXN1bWVuRXN0YWRvXHJcbiAgICByZXN1bWVuRXN0YWRvU3VwOiBSZXN1bWVuRXN0YWRvXHJcbiAgICAkZGlydHk6IGJvb2xlYW5cclxuICAgIGNvZE5vUmVhOiBzdHJpbmcgfCBudWxsXHJcbiAgICBjb2RSZWE6IG51bWJlciB8IG51bGxcclxuICAgIGNvZE5vUmVhU3VwOiBzdHJpbmcgfCBudWxsXHJcbiAgICBjb2RSZWFTdXA6IG51bWJlciB8IG51bGxcclxufVxyXG5cclxuLypcclxuICAgIGFjbGFyYWNpw7NuOlxyXG4gICAge3YxOid4JywgdjI6J3gnLCBwZXJzb25hczpbe3AxOjEsIHAyOid4fSx7cDE6MiwgcDI6eH1dLCBtYXNjb3RhczpbXSB9XHJcbiAgICBlc3TDoSBhbmlkYWRvIHBvciB1bmlkYWQgZGUgYW7DoWxpc2lzXHJcbiovXHJcblxyXG5leHBvcnQgdHlwZSBVbmlkYWRBbmFsaXNpcyA9IHtcclxuICAgIHVuaWRhZF9hbmFsaXNpczogSWRVbmlkYWRBbmFsaXNpcyxcclxuICAgIHBhZHJlPzogSWRVbmlkYWRBbmFsaXNpcyxcclxuICAgIHBrX2FncmVnYWRhOiBDYW1wb1BrLFxyXG4gICAgcHJpbmNpcGFsPzogYm9vbGVhbixcclxuICAgIGhpamFzOiB7IFtrIGluIElkVW5pZGFkQW5hbGlzaXNdPzogVW5pZGFkQW5hbGlzaXMgfVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBURU0gPSB7XHJcbiAgICBub21jYWxsZTogc3RyaW5nXHJcbiAgICBkb21pbmlvOiBudW1iZXJcclxuICAgIHNlY3Rvcjogc3RyaW5nXHJcbiAgICBlZGlmaWNpbzogc3RyaW5nXHJcbiAgICBlbnRyYWRhOiBzdHJpbmdcclxuICAgIG5yb2NhdGFzdHJhbDogc3RyaW5nXHJcbiAgICBwaXNvOiBzdHJpbmdcclxuICAgIGRlcGFydGFtZW50bzogc3RyaW5nXHJcbiAgICBoYWJpdGFjaW9uOiBzdHJpbmdcclxuICAgIGNhc2E6IHN0cmluZ1xyXG4gICAgcHJpb3JpZGFkOiAxIHwgMiB8IDNcclxuICAgIG9ic2VydmFjaW9uZXM6IHN0cmluZ1xyXG4gICAgc2VsZWNjaW9uYWRvOiBudW1iZXIsXHJcbiAgICBjaXRhPzogc3RyaW5nLFxyXG4gICAgY2FyZ2E6IHN0cmluZyxcclxuICAgIHNlbWFuYT86IG51bWJlclxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBSZXN1bWVuRXN0YWRvID0gJ3ZhY2lvJyB8ICdjb24gcHJvYmxlbWFzJyB8ICdpbmNvbXBsZXRvJyB8ICdvaycgfCAnbm8gcmVhJyB8ICdjaXRhIHBhY3RhZGEnO1xyXG5cclxuZXhwb3J0IHR5cGUgSW5mb1RhcmVhID0ge1xyXG4gICAgdGFyZWE6IElkVGFyZWFcclxuICAgIG5vdGFzPzogc3RyaW5nXHJcbiAgICBmZWNoYV9hc2lnbmFjaW9uPzogRGF0ZVxyXG4gICAgYXNpZ25hZG8/OiBzdHJpbmdcclxuICAgIG1haW5fZm9ybTogSWRGb3JtdWxhcmlvXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFZpc2l0YSA9IHtcclxuICAgIGZlY2hhOiBzdHJpbmcgfCBudWxsXHJcbiAgICBob3JhOiBzdHJpbmcgfCBudWxsXHJcbiAgICBpZHBlcjogc3RyaW5nIHwgbnVsbFxyXG4gICAgb2JzZXJ2YWNpb25lczogc3RyaW5nIHwgbnVsbFxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBEYXRvc0hkclVhUHBhbCA9IHtcclxuICAgIHRhcmVhOiBJbmZvVGFyZWFcclxuICAgIHRlbTogVEVNXHJcblxyXG4gICAgLypcclxuICAgICAgICBhY2xhcmFjacOzbjpcclxuICAgICAgICB7djE6J3gnLCB2MjoneCcsIHBlcnNvbmFzOlt7cDE6MSwgcDI6J3h9LHtwMToyLCBwMjp4fV0sIG1hc2NvdGFzOltdIH1cclxuICAgICAgICBlc3TDoSBhbmlkYWRvIHBvciB1bmlkYWQgZGUgYW7DoWxpc2lzXHJcbiAgICAqL1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBJZENhcmdhID0gXCIxXCIgfCBcIjJcIiB8IFwiZXRjXCJcclxuXHJcbmV4cG9ydCB0eXBlIEVzdGFkb0NhcmdhID0gJ3Jlc3VtZW4nIHwgJ3JlbGV2YW1pZW50bycgfCAncmVjaWJvJ1xyXG5cclxuZXhwb3J0IHR5cGUgQ2FyZ2EgPSB7XHJcbiAgICBmZWNoYTogRGF0ZVxyXG4gICAgZXN0YWRvX2NhcmdhOiBFc3RhZG9DYXJnYVxyXG4gICAgbmVjZXNhcmlhczogbnVtYmVyXHJcbiAgICBvYnNlcnZhY2lvbmVzOiBzdHJpbmdcclxuICAgIHJlY2VwY2lvbmlzdGE6IHN0cmluZ1xyXG4gICAgcHVlZGVfYXV0b2dlbmVyYXI6IGJvb2xlYW5cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgQ2FyZ2FzID0ge1xyXG4gICAgW2lkQ2FyZ2EgaW4gSWRDYXJnYV06IENhcmdhXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3IgPSBTdHJ1Y3R1cmU8SWRWYXJpYWJsZSwgVmFsb3IsIElkRmluPjtcclxuXHJcbmV4cG9ydCB0eXBlIE1vZG9EZXNwbGllZ3VlID0gJ21ldGFkYXRvcycgfCAncmVsZXZhbWllbnRvJyB8ICdQREYnXHJcblxyXG5leHBvcnQgdHlwZSBQYW50YWxsYU5hdmVnYWNpb24gPSAnaGRyJyB8ICdzaW5jcm9uaXphY2lvbicgfCAnc2luY3Jvbml6YWNpb25fcmVxdWVyaWRhJyB8ICdtb2RvJztcclxuXHJcbmV4cG9ydCB0eXBlIEluZm9Gb3JtdWxhcmlvID0ge1xyXG4gICAgY2FzaWxsZXJvczogRm9ybXVsYXJpbywgLy8gY2FzaWxsZXJvcyBhcGxhbmFkb3NcclxuICAgIGVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3I6IEVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3IgLy8gZXN0cnVjdHVyYSBkZSB2YXJpYWJsZXMgcGFyYSBlbCBSb3dWYWxpZGF0b3JcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgSWRSZXN1bHRhZG8gPSAnQVZFUklHVUFSJyB8ICdUT0RPJztcclxuZXhwb3J0IHR5cGUgSWRTZW1hbmEgPSAxIHwgMiB8ICdldGMnXHJcblxyXG5leHBvcnQgdHlwZSBTZW1hbmEgPSB7XHJcbiAgICBvcGVyYXRpdm86IElkT3BlcmF0aXZvO1xyXG4gICAgc2VtYW5hOiBudW1iZXI7XHJcbiAgICBzZW1hbmFfcmVmZXJlbmNpYV9kZXNkZT86IHN0cmluZyB8IG51bGw7XHJcbiAgICBzZW1hbmFfcmVmZXJlbmNpYV9oYXN0YT86IHN0cmluZyB8IG51bGw7XHJcbiAgICAnMzBkaWFzX3JlZmVyZW5jaWFfZGVzZGUnPzogc3RyaW5nIHwgbnVsbDtcclxuICAgICczMGRpYXNfcmVmZXJlbmNpYV9oYXN0YSc/OiBzdHJpbmcgfCBudWxsO1xyXG4gICAgbWVzX3JlZmVyZW5jaWE/OiBzdHJpbmcgfCBudWxsO1xyXG4gICAgY2FyZ2FfZW5jX2Rlc2RlPzogc3RyaW5nIHwgbnVsbDtcclxuICAgIGNhcmdhX2VuY19oYXN0YT86IHN0cmluZyB8IG51bGw7XHJcbiAgICBjYXJnYV9yZWN1X2Rlc2RlPzogc3RyaW5nIHwgbnVsbDtcclxuICAgIGNhcmdhX3JlY3VfaGFzdGE/OiBzdHJpbmcgfCBudWxsO1xyXG59O1xyXG5cclxuZXhwb3J0IHR5cGUgVGFyZWFzRXN0cnVjdHVyYSA9IHtcclxuICAgIFtpZFRhcmVhIGluIElkVGFyZWFdOiB7XHJcbiAgICAgICAgcmVzdWx0YWRvczoge1xyXG4gICAgICAgICAgICBbaWRSZXN1bHRhZG8gaW4gSWRSZXN1bHRhZG9dOiB7XHJcbiAgICAgICAgICAgICAgICBkZXNjcmlwY2lvbjogc3RyaW5nXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEVzdHJ1Y3R1cmEgPSB7XHJcbiAgICBmb3JtdWxhcmlvczoge1xyXG4gICAgICAgIFtub21icmVGb3JtdWxhcmlvIGluIElkRm9ybXVsYXJpb106IEluZm9Gb3JtdWxhcmlvXHJcbiAgICB9XHJcbiAgICB1bmlkYWRlc19hbmFsaXNpczoge1xyXG4gICAgICAgIFtpZFVuaWRhZEFuYWxpc2lzIGluIElkVW5pZGFkQW5hbGlzaXNdOiBVbmlkYWRBbmFsaXNpc1xyXG4gICAgfVxyXG4gICAgdGFyZWFzOiBUYXJlYXNFc3RydWN0dXJhXHJcbiAgICB1YVBwYWw6IElkVW5pZGFkQW5hbGlzaXNcclxuICAgIHBrQWdyZWdhZGFVYVBwYWw6IENhbXBvUGtSYWl6XHJcbiAgICB0aW1lc3RhbXA6IG51bWJlclxyXG4gICAgb3BlcmF0aXZvOiBJZE9wZXJhdGl2b1xyXG4gICAgY29uZmlnU29ydGVvOiBDb25maWd1cmFjaW9uU29ydGVvXHJcbiAgICBoYWJpbGl0YWNpb25Cb3RvbkZvcm11bGFyaW86IENvbmZpZ3VyYWNpb25IYWJpbGl0YXJCb3RvbkZvcm11bGFyaW9cclxuICAgIGNvblJlYUhvZ2FyOiBib29sZWFuXHJcbiAgICBub1JlYXM6IHtcclxuICAgICAgICBub19yZWE6IHN0cmluZ1xyXG4gICAgICAgIGRlc2NyaXBjaW9uOiBzdHJpbmdcclxuICAgICAgICBncnVwbzogc3RyaW5nXHJcbiAgICAgICAgdmFyaWFibGU6IHN0cmluZ1xyXG4gICAgICAgIHZhbG9yOiBzdHJpbmdcclxuICAgICAgICBncnVwbzA6IHN0cmluZ1xyXG4gICAgfVtdXHJcbiAgICBub1JlYXNTdXA6IHtcclxuICAgICAgICBub19yZWFfc3VwOiBzdHJpbmdcclxuICAgICAgICBkZXNjX25vcmVhX3N1cDogc3RyaW5nXHJcbiAgICAgICAgZ3J1cG9fc3VwOiBzdHJpbmdcclxuICAgICAgICB2YXJpYWJsZV9zdXA6IHN0cmluZ1xyXG4gICAgICAgIHZhbG9yX3N1cDogc3RyaW5nXHJcbiAgICAgICAgZ3J1cG8wX3N1cDogc3RyaW5nXHJcbiAgICB9W10sXHJcbiAgICBzZW1hbmFzOiB7IFtpZFNlbWFuYSBpbiBJZFNlbWFuYV06IFNlbWFuYSB9XHJcbiAgICBkZWZhdWx0SW5mb3JtYWNpb25IZHI6IERhdG9zSGRyVWFQcGFsXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIElkRW5jID0gMTMwMDMxIHwgMTMwMDMyO1xyXG5leHBvcnQgdHlwZSBJbmZvcm1hY2lvbkhkciA9IHsgW2VuYyBpbiBJZEVuY106IERhdG9zSGRyVWFQcGFsIH1cclxuXHJcbmV4cG9ydCB0eXBlIENhc29TdGF0ZSA9IHtcclxuICAgIG9wY2lvbmVzOiB7IC8vIGRhdG9zIGRlIG5hdmVnYWNpw7NuIHF1ZSBlbGlqZSBlbCB1c3VhcmlvXHJcbiAgICAgICAgZm9yUGs6IEZvclBrIHwgbnVsbCAvLyDDrW5kaWNlIGRlbnRybyBkZSBsYXMgdW5pZGFkZXMgZGUgYW7DoWxpc2lzLiBOdWxsID0gZW4gaG9qYSBkZSBydXRhXHJcbiAgICAgICAgcGlsYUZvclBrOiBGb3JQa1tdXHJcbiAgICAgICAgbW9kb0Rlc3BsaWVndWU6IE1vZG9EZXNwbGllZ3VlXHJcbiAgICAgICAgbW9kb0RpcmVjdG86IGJvb2xlYW5cclxuICAgICAgICBtb2RvQm9ycmFyUmVzcHVlc3RhOiBJZFZhcmlhYmxlIHwgbnVsbFxyXG4gICAgICAgIGNvbkNhbXBvT3BjaW9uZXM6IGJvb2xlYW5cclxuICAgICAgICBzYWx0b0F1dG9tYXRpY286IGJvb2xlYW5cclxuICAgICAgICBwYW50YWxsYUFjdHVhbDogUGFudGFsbGFOYXZlZ2FjaW9uXHJcbiAgICAgICAgYXZpc29QZXJzaXN0ZW50ZTogeyB0aXBvOiAnaW5mbycgfCAnc3VjY2VzcycgfCAnZXJyb3InLCBtZW5zYWplOiBzdHJpbmd9IHwgbnVsbFxyXG4gICAgICAgIGNvbW9kaW5lczoge1tpZENvbW9kaW4gaW4gSWRDb21vZGluXT86IHN0cmluZ31cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgRGVmT3BlcmF0aXZvID0ge1xyXG4gICAgZXNOb1JlYTogKHJlc3B1ZXN0YXM6IFJlc3B1ZXN0YXMpID0+IHsgY29kTm9SZWE6IHN0cmluZyB8IG51bGwsIGVzTm9SZWE6IGJvb2xlYW4gfSxcclxuICAgIGVzTm9SZWFTdXA6IChyZXNwdWVzdGFzOiBSZXNwdWVzdGFzKSA9PiB7IGNvZE5vUmVhU3VwOiBzdHJpbmcgfCBudWxsLCBlc05vUmVhU3VwOiBib29sZWFuIH0sXHJcbiAgICBlc1JlYWxpemFkYTogKHJlc3B1ZXN0YXM6IFJlc3B1ZXN0YXMpID0+IHsgY29kUmVhOiBudW1iZXIgfCBudWxsLCBlc1JlYTogYm9vbGVhbiB9LFxyXG4gICAgZXNSZWFsaXphZGFTdXA6IChyZXNwdWVzdGFzOiBSZXNwdWVzdGFzKSA9PiB7IGNvZFJlYVN1cDogbnVtYmVyIHwgbnVsbCwgZXNSZWFTdXA6IGJvb2xlYW4gfSxcclxuICAgIFVBcHJpbmNpcGFsOiBJZFVuaWRhZEFuYWxpc2lzLFxyXG4gICAgZGVmVUE6IHsgW2kgaW4gSWRVbmlkYWRBbmFsaXNpc106IHsgcGs6IElkVmFyaWFibGUsIGluY2x1aWRhczogSWRVbmlkYWRBbmFsaXNpc1tdLCBpZHNGb3I6IElkRm9ybXVsYXJpb1tdIH0gfSxcclxuICAgIGRlZkZvcjogeyBbZiBpbiBJZEZvcm11bGFyaW9dOiB7LyphcmJvbFVBOklkVW5pZGFkQW5hbGlzaXNbXSwgKi8gaGVybWFubz86IHRydWUgfSB9XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIERhdG9zQnlQYXNzUGVyc2lzdGlibGVzID0ge1xyXG4gICAgcmVzcHVlc3RhczogeyBbdWEgaW4gSWRVbmlkYWRBbmFsaXNpc106IFJlc3B1ZXN0YXNSYWl6W10gfVxyXG4gICAgbW9kb0FsbWFjZW5hbWllbnRvOiBNb2RvQWxtYWNlbmFtaWVudG9cclxuICAgIHBlcnNvbmE6IHN0cmluZ1xyXG4gICAgdGFyZWE6IElkVGFyZWFcclxuICAgIGlkcGVyOiBzdHJpbmdcclxuICAgIGNhcmdhczogQ2FyZ2FzXHJcbiAgICBpbmZvcm1hY2lvbkhkcjogSW5mb3JtYWNpb25IZHJcclxuICAgIHNvbG9MZWN0dXJhOiBib29sZWFuXHJcbiAgICB0b2tlbj86IHN0cmluZ1xyXG4gICAgbnVtX3NpbmNybz86IG51bWJlclxyXG4gICAgdGltZXN0YW1wRXN0cnVjdHVyYT86IG51bWJlclxyXG4gICAgcGVybWl0ZUJvcnJhckVsZW1lbnRvc1VBPzogYm9vbGVhblxyXG59XHJcblxyXG50eXBlIENvbmZpZ3VyYWNpb25Tb3J0ZW9UYWJsYSA9IHtcclxuICAgIG1ldG9kbzogXCJ0YWJsYVwiLFxyXG4gICAgcGFyYW1fbWV0b2RvOiB7XHJcbiAgICAgICAgdGFibGE6IHN0cmluZ1tdLFxyXG4gICAgICAgIHZhcl9sZXRyYTogSWRWYXJpYWJsZSxcclxuICAgIH1cclxufVxyXG5cclxudHlwZSBDb25maWd1cmFjaW9uU29ydGVvSGFzaCA9IHtcclxuICAgIG1ldG9kbzogXCJoYXNoXCIsXHJcbiAgICBwYXJhbV9tZXRvZG86IHtcclxuICAgICAgICB2YXJfY29lZjogW1xyXG4gICAgICAgICAgICB7IHZhcjogSWRWYXJpYWJsZSwgY29lZjogbnVtYmVyIH0sXHJcbiAgICAgICAgICAgIHsgdmFyOiBJZFZhcmlhYmxlLCBjb2VmOiBudW1iZXIgfSxcclxuICAgICAgICBdLFxyXG4gICAgICAgIGRpdmlzb3I6IG51bWJlclxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBDb25maWd1cmFjaW9uU29ydGVvID0geyBba2V5IGluIElkRm9ybXVsYXJpb106IENvbmZpZ3VyYWNpb25Tb3J0ZW9Gb3JtdWxhcmlvIH1cclxuXHJcbmV4cG9ydCB0eXBlIENvbmZpZ3VyYWNpb25IYWJpbGl0YXJCb3RvbkZvcm11bGFyaW8gPSB7IFtrZXkgaW4gSWRGb3JtdWxhcmlvXTogQ29uZmlndXJhY2lvbkhhYmlsaXRhckJvdG9uRm9ybXVsYXJpb0Zvcm0gfVxyXG5cclxuZXhwb3J0IHR5cGUgQ29uZmlndXJhY2lvblNvcnRlb0Zvcm11bGFyaW8gPSB7XHJcbiAgICB1bmlkYWRfYW5hbGlzaXM6IElkVW5pZGFkQW5hbGlzaXMsXHJcbiAgICB1bmlkYWRfYW5hbGlzaXNfcGFkcmU6IElkVW5pZGFkQW5hbGlzaXMsXHJcbiAgICAvL2V4cHJfaW5jb21wbGV0aXR1ZDogc3RyaW5nIC8vXCJub3QgKHAxKSBvciBubyB0IChwMikgb3Igbm90KHAzKVwiXHJcbiAgICBleHByX2luY29tcGxldGl0dWQ6IHtcclxuICAgICAgICBba2V5IGluIG51bWJlcl06IHsgZG9taW5pbzogbnVtYmVyLCBleHByOiBzdHJpbmcgfVxyXG4gICAgfVxyXG4gICAgLy9leHByX2luY29tcGxldGl0dWRfanM6IHN0cmluZyAvL3NlIGNyZWEgYWwgY29tcGlsYXJcclxuICAgIGV4cHJfaW5jb21wbGV0aXR1ZF9qczoge1xyXG4gICAgICAgIFtrZXkgaW4gbnVtYmVyXTogeyBkb21pbmlvOiBudW1iZXIsIGV4cHI6IHN0cmluZyB9XHJcbiAgICB9XHJcbiAgICBkaXNwYXJhZG9yOiBJZFZhcmlhYmxlIC8vXCJwOVwiXHJcbiAgICAvL2ZpbHRybzogc3RyaW5nIC8vXCJwMz49MThcIlxyXG4gICAgZmlsdHJvOiB7XHJcbiAgICAgICAgW2tleSBpbiBudW1iZXJdOiB7IGRvbWluaW86IG51bWJlciwgZXhwcjogc3RyaW5nIH1cclxuICAgIH1cclxuICAgIC8vZmlsdHJvX2pzOiBzdHJpbmcgLy9zZSBjcmVhIGFsIGNvbXBpbGFyXHJcbiAgICBmaWx0cm9fanM6IHtcclxuICAgICAgICBba2V5IGluIG51bWJlcl06IHsgZG9taW5pbzogbnVtYmVyLCBleHByOiBzdHJpbmcgfVxyXG4gICAgfVxyXG4gICAgb3JkZW46IHtcclxuICAgICAgICB2YXJpYWJsZTogSWRWYXJpYWJsZVxyXG4gICAgICAgIG9yZGVuOiAxIHwgLTFcclxuICAgIH1bXSAvL1tcInAzXCIsIFwicDJcIiwgXCJwMVwiLCBcInAwXCJdLCAvLyBwMCBlcyBjb25zdHJ1aWRhLCBubyB2YSBlbiBwYXLDoW1ldHJvcywgc2UgcG9uZSBwYXJhIHF1ZSBlbCBvcmRlbiBzZWEgZGV0ZXJtaW7DrXN0aWNvXHJcbiAgICBwYXJhbWV0cm9zOiBJZFZhcmlhYmxlW10vLyBbXCJwMVwiLFwicDJcIixcInAzXCIsIFwicDRcIiwgXCJwNVwiLCBcInA2XCJdLCAvLyB2YXJpYWJsZXMgcXVlIGFudWxhbiBhbCBkaXNwYXJhZG9yXHJcbiAgICBjYW50aWRhZF9zb3J0ZWFibGVzOiBJZFZhcmlhYmxlXHJcbiAgICBjYW50aWRhZF90b3RhbDogSWRWYXJpYWJsZVxyXG4gICAgcmVzdWx0YWRvOiBJZFZhcmlhYmxlIC8vXCJwMTFcIlxyXG4gICAgcmVzdWx0YWRvX21hbnVhbDogSWRWYXJpYWJsZSAvL1wicDExXCJcclxuICAgIHNvcnRlYWRvX21vc3RyYXI/OiB7IHNvdXJjZTogSWRWYXJpYWJsZSwgdGFyZ2V0OiBJZFZhcmlhYmxlIH1bXSxcclxuICAgIGluY29tcGxldGFzOiBJZFZhcmlhYmxlXHJcbiAgICB2YXJpYWJsZUJvdG9uRm9ybXVsYXJpb1VBOiBJZFZhcmlhYmxlLy8nJEIuRjpTMV9QJ1xyXG4gICAgdmFyaWFibGVCb3RvbkZvcm11bGFyaW9VQUluZGl2aWR1YWw/OiBJZFZhcmlhYmxlIC8vJyRCLkY6STEnXHJcbiAgICBpZF9mb3JtdWxhcmlvX2luZGl2aWR1YWw/OiBJZEZvcm11bGFyaW8gLy8gJ0Y6STEnXHJcbiAgICBpZF9mb3JtdWxhcmlvX3BhZHJlPzogSWRGb3JtdWxhcmlvIC8vICdGOlMxJ1xyXG59ICYgKENvbmZpZ3VyYWNpb25Tb3J0ZW9IYXNoIHwgQ29uZmlndXJhY2lvblNvcnRlb1RhYmxhKVxyXG5cclxuZXhwb3J0IHR5cGUgQ29uZmlndXJhY2lvbkhhYmlsaXRhckJvdG9uRm9ybXVsYXJpb0Zvcm0gPSB7XHJcbiAgICB1bmlkYWRfYW5hbGlzaXM6IElkVW5pZGFkQW5hbGlzaXMsXHJcbiAgICBleHByX2hhYmlsaXRhcl9ib3Rvbjogc3RyaW5nLFxyXG4gICAgZXhwcl9oYWJpbGl0YXJfYm90b25fanM6IHN0cmluZyxcclxuICAgIGhhYmlsaXRhcl9hZ3JlZ2FyX2xpc3RvOiBib29sZWFuXHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB0b1BsYWluRm9yUGsoZm9yUGs6IEZvclBrKTogUGxhaW5Gb3JQayB7XHJcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZm9yUGspO1xyXG59XHJcblxyXG5leHBvcnQgdmFyIGl0ZXJhdG9yOiA8VD4obzogT2JqZXRvTnVtZXJhZG9PQXJyYXk8VD4pID0+IEl0ZXJhYmxlPFQ+ID0gTGlrZUFyLml0ZXJhdG9yXHJcbmV4cG9ydCB2YXIgZW1wdHk6IDxUPihvOiBPYmpldG9OdW1lcmFkb09BcnJheTxUPiB8IG51bGwgfCB1bmRlZmluZWQpID0+IGJvb2xlYW4gPSBMaWtlQXIuZW1wdHlcclxuXHJcbmRlY2xhcmUgZ2xvYmFsIHtcclxuICAgIG5hbWVzcGFjZSBteU93biB7XHJcbiAgICAgICAgaW50ZXJmYWNlIEFkZHJQYXJhbXMge1xyXG4gICAgICAgICAgICBzdGF0ZV9mb3JQazogc3RyaW5nXHJcbiAgICAgICAgICAgIHN0YXRlX3BpbGFGb3JQazogc3RyaW5nXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBEaXJlY2Npb25BY2Npb24gPSAnYXZhbmNlJyB8ICdyZXRyb2Nlc28nIHwgJ2JsYW5xdWVvJ1xyXG5cclxuZXhwb3J0IHR5cGUgRXN0YWRvQWNjaW9uID0ge1xyXG4gICAgb3BlcmF0aXZvOiBzdHJpbmdcclxuICAgIGVzdGFkbzogc3RyaW5nXHJcbiAgICBlYWNjaW9uOiBzdHJpbmdcclxuICAgIGNvbmRpY2lvbjogc3RyaW5nXHJcbiAgICBlc3RhZG9fZGVzdGlubzogc3RyaW5nXHJcbiAgICBlYWNjaW9uX2RpcmVjY2lvbjogRGlyZWNjaW9uQWNjaW9uXHJcbiAgICBwYXRoX2ljb25vX3N2Zzogc3RyaW5nXHJcbiAgICBub21icmVfcHJvY2VkdXJlOiBzdHJpbmdcclxuICAgIG5vbWJyZV93c2NyZWVuOiBzdHJpbmdcclxuICAgIGRlc2FjdGl2YV9ib3RvbjogYm9vbGVhblxyXG4gICAgY29uZmlybWE6IGJvb2xlYW5cclxufVxyXG5leHBvcnQgdHlwZSBNb2RvRE0gPSAncHJvZHVjJyB8ICdjYXBhJzsiXX0=
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "dmencu",
3
3
  "description": "DM Encu - Encuestas en dispositivo móvil",
4
- "version": "3.2.12",
4
+ "version": "3.2.13",
5
5
  "author": "Codenautas <codenautas@googlegroups.com>",
6
6
  "license": "MIT",
7
7
  "repository": "codenautas/dmencu",