From 5a412e90910db0e5f52ef1d89b26159a8f84ce36 Mon Sep 17 00:00:00 2001
From: Pedro Folloni Pesserl <fpesserl7@gmail.com>
Date: Wed, 1 Feb 2023 00:31:48 -0300
Subject: [PATCH] fix bug on future events list lib & initialize events on main
 list

---
 t1/]        | 232 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 t1/liblef.c |   2 +-
 t1/liblef.o | Bin 6240 -> 6304 bytes
 t1/mundo    | Bin 36192 -> 36616 bytes
 t1/mundo.c  | 135 +++++++++++++++++++++++-------
 t1/mundo.o  | Bin 14704 -> 16672 bytes
 6 files changed, 340 insertions(+), 29 deletions(-)
 create mode 100644 t1/]

diff --git a/t1/] b/t1/]
new file mode 100644
index 0000000..d1bb855
--- /dev/null
+++ b/t1/]
@@ -0,0 +1,232 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+#include <math.h>
+#include "libconjunto.h"
+#include "libfila.h"
+#include "liblef.h"
+
+#define MEM_ERROR_EXIT						    		  \
+	do {											      \
+		printf("Erro: não foi possível alocar memória."); \
+		exit(1);										  \
+	} while(0)
+
+#define CHEGADA 0
+#define SAIDA 1
+#define MISSAO 2
+#define FIM 3
+
+typedef struct {
+	int id;
+	int paciencia;
+	int idade;
+	int exp;
+	conjunto_t *habilidades_do_heroi;
+} heroi_t;
+
+typedef struct {
+	int id;
+	int lotacao_max;
+	conjunto_t *publico;
+	fila_t *fila;
+	int posx;
+	int posy;
+} local_t;
+
+typedef struct {
+	int tempo_atual;
+	int tamanho_mundo; /* o mundo é um quadrado */
+	int fim_do_mundo;
+	int n_missoes;
+	conjunto_t *cj_habilidades;
+	int n_herois;
+	int n_locais;
+	heroi_t *herois;
+	local_t *locais;
+} mundo_t;
+
+/* retorna um inteiro aleatório entre a e b (inclusive) */
+int aleat(int a, int b) {
+	return rand() % b + 1 + a;
+}
+
+/* retorna a distancia euclidiana entre dois locais em double */
+double distancia(local_t loc1, local_t loc2) {
+	int deltax = loc2.posx - loc1.posx;
+	int deltay = loc2.posy - loc1.posy;
+	int quadrado_da_distancia = deltax * deltax + deltay * deltay;
+	return sqrt((double)quadrado_da_distancia);
+}
+
+int vazia_lef(lef_t *l) {
+	return l->Primeiro == NULL;
+}
+
+heroi_t inicializa_heroi(int id, conjunto_t *conjunto_de_habilidades) {
+	heroi_t h;
+	
+	h.id = id;
+	h.paciencia = aleat(0, 100);
+	h.idade = aleat(18, 100);
+	h.exp = 0;
+
+	if ( !(h.habilidades_do_heroi = cria_subcjt_cjt(conjunto_de_habilidades, aleat(2, 5))) )
+		MEM_ERROR_EXIT;
+
+	return h;
+}
+
+local_t inicializa_local(int id, int tamanho_mundo) {
+	local_t l;
+	
+	l.id = id;
+	l.lotacao_max = aleat(5, 30);
+
+	if ( !(l.publico = cria_cjt(l.lotacao_max)) )
+		MEM_ERROR_EXIT;
+
+	if ( !(l.fila = cria_fila()) )
+		MEM_ERROR_EXIT;
+
+	l.posx = aleat(0, tamanho_mundo-1);
+	l.posy = aleat(0, tamanho_mundo-1);
+
+	return l;
+}
+
+evento_t *cria_evento(int tempo, int tipo, int dado1, int dado2) {
+	evento_t *e;
+	if ( !(e = malloc(sizeof(evento_t))) )
+		MEM_ERROR_EXIT;
+
+	e->tempo = tempo;
+	e->tipo = tipo;
+	e->dado1 = dado1;
+	e->dado2 = dado2;
+
+	return e;
+}
+
+mundo_t *cria_mundo(lef_t *lista_de_eventos) {
+	mundo_t *m;
+	if ( !(m = malloc(sizeof(mundo_t))) )
+		MEM_ERROR_EXIT;
+	
+	m->tempo_atual = 0;
+	m->tamanho_mundo = 20000;
+	m->fim_do_mundo = 34944;
+	m->n_missoes = m->fim_do_mundo / 100;
+
+	const int n_habilidades = 10;
+	if ( !(m->cj_habilidades = cria_cjt(n_habilidades)) )
+		MEM_ERROR_EXIT;
+	int i;
+	for (i = 0; i < n_habilidades; i++)
+		insere_cjt(m->cj_habilidades, i);
+
+	m->n_herois = n_habilidades * 5;
+	m->n_locais = m->n_herois / 6;
+
+	/* cria vetor de heróis e preenche */
+	if ( !(m->herois = malloc(m->n_herois * sizeof(heroi_t))) )
+		MEM_ERROR_EXIT;
+	for (i = 0; i < m->n_herois; i++)
+		m->herois[i] = inicializa_heroi(i, m->cj_habilidades);
+
+	/* cria vetor de locais e preenche */
+	if ( !(m->locais = malloc(m->n_locais * sizeof(local_t))) )
+		MEM_ERROR_EXIT;
+	for (i = 0; i < m->n_locais; i++)
+		m->locais[i] = inicializa_local(i, m->tamanho_mundo);
+
+	/* para cada herói, cria evento de chegada e insere na lef */
+	/* evento_t *evento_chegada_heroi; */
+	for (i = 0; i < m->n_herois; i++) {
+		/* evento_chegada_heroi = cria_evento(aleat(0, 96*7), CHEGADA, m->herois[i].id, aleat(0, n_locais-1)); */
+		/* TODO: testar se funciona alocar o evento estaticamente desse jeito */
+		evento_t evento_chegada_heroi = {
+			aleat(0, 96*7),
+			CHEGADA,
+			m->herois[i].id,
+			aleat(0, m->n_locais-1)
+		};
+		if ( !(adiciona_ordem_lef(lista_de_eventos, &evento_chegada_heroi)) )
+			MEM_ERROR_EXIT;
+	}
+
+	/* para cada missao, cria evento e insere na lef */
+	for (i = 0; i < m->n_missoes; i++) {
+		/* evento_chegada_heroi = cria_evento(aleat(0, 96*7), CHEGADA, m->herois[i].id, aleat(0, n_locais-1)); */
+		/* TODO: testar se funciona alocar o evento estaticamente desse jeito */
+		evento_t evento_missao = {
+			aleat(0, m->fim_do_mundo),
+			MISSAO,
+			i,
+			0
+		};
+		if ( !(adiciona_ordem_lef(lista_de_eventos, &evento_missao)) )
+			MEM_ERROR_EXIT;
+	}
+	
+
+	/* cria evento de fim e insere na lef */
+		/* TODO: testar se funciona alocar o evento estaticamente desse jeito */
+	evento_t fim = {
+		m->fim_do_mundo,
+		FIM,
+		0,
+		0,
+	};
+	if ( !(adiciona_ordem_lef(lista_de_eventos, &fim)) )
+		MEM_ERROR_EXIT;
+
+	return m;
+}
+
+/* lef_t *inicializa_lista_de_eventos() */
+
+int main() {
+	srand(time(0));
+
+	lef_t *lista_de_eventos;
+	if ( !(lista_de_eventos = cria_lef()) )
+		MEM_ERROR_EXIT;
+
+	mundo_t *mundo;
+	mundo = cria_mundo(lista_de_eventos);
+	printf("inicializou o mundo!\n");
+	printf("tamanho do mundo: %d\n", mundo->tamanho_mundo);
+	printf("conjunto de habilidades do mundo:\n");
+	imprime_cjt(mundo->cj_habilidades);
+	
+	int i = 0;
+	nodo_lef_t *exemplo = lista_de_eventos->Primeiro;
+	printf("eventos alocados na lef:\n");
+	while (exemplo) {
+		printf("tempo do evento %d: %d\n", i, exemplo->evento->tempo);
+		i++;
+		exemplo = exemplo->prox;
+	}
+
+	/* ciclo */
+	/* retira o primeiro evento da lista_de_eventos; */
+	evento_t *evento_atual;
+	evento_atual = obtem_primeiro_lef(lista_de_eventos);
+	/* atualiza o estado do sistema; */
+	switch (evento_atual->tipo) {
+		case CHEGADA:
+			break;
+		case SAIDA:
+			break;
+		case MISSAO:
+			break;
+		case FIM:
+			break;
+	}
+	/* agenda os novos eventos na lista_de_eventos; */
+
+	lista_de_eventos = destroi_lef(lista_de_eventos);
+
+	return 0;
+}
diff --git a/t1/liblef.c b/t1/liblef.c
index b1a3582..aaaf468 100644
--- a/t1/liblef.c
+++ b/t1/liblef.c
@@ -63,7 +63,7 @@ int adiciona_ordem_lef(lef_t *l, evento_t *evento) {
 	novo_nodo->prox = l->Primeiro;
 	novo_nodo->evento = novo_evento;
 
-	if (novo_nodo->prox == NULL) {
+	if (l->Primeiro == NULL || l->Primeiro->evento->tempo > novo_nodo->evento->tempo) {
 		l->Primeiro = novo_nodo;
 		return 1;
 	}
diff --git a/t1/liblef.o b/t1/liblef.o
index a96efd52d0df3a735ec4284cd0f4344d5ba8f4e2..250aecd3e0c86b486ac523edce0624a72bd8197a 100644
GIT binary patch
delta 370
zcmaE0u)uJF24liT%_c_1&y&|MYB8Ree4Wuu@rFk?gGcLu5=oD4S1`Mqp<4jR{s0v3
zX0SX|H(8A7JL8efe9VrFj2fE*STvcKjxbH0$R);DF?kZ(B_sBAtgI!hatur?j1jCF
zAgYAb07TiaI)f-ZR&R))6okj`y*Y>7i)r!>&L#XBj0_A6u6zP*OwPP)%<`MFxkQ-+
z!Gb{X3?LR_U}Q+yJdvlKk#W~%K|XmV#+1#50_q?tQb?VV@yO&xVROcW$vcJZnOK-X
zu9_?$q5)$DK$uk`c8nR5cZ%3Ec1->WBr7LdirO<im|Q7p&$*HfXbTY3Og<=T&Lki-
z`Io32lPbq#D=|C9(~~R3?3uoEf{nc(ros4Q@=u_E1lMFMaXTgrp~+R^c8nJ$?-U0a
S_EX%RbAb@Vu-%gxMdSfI99~2K

delta 304
zcmZ2r_`qO-2BX48%_c_1+mqKYYB6q@e4WvZ^MgmX1BXZJfzru(Oy3#TY*u4-WMmZB
zoWY{W#I%NK@<lE&M!(6c*e-GKuVZCxV&#wAypG+AY4SJDW&8q+3=9med;)Du&b(~Q
z?3-6}i82X-1%cujKrF<-$l$a2B2PUd<D$)heDX|;KAQ^#)IrotA$3N^HIoktn=>j*
z{wZwF^agC#<Ny&37;^%Ixl6>3QDgE?5qrjh$(Ew_jER#gf#ib8J4Nj|C$a%;0fL~(
zjAG_Y7X&9;iP<qdW}jRoX2;k$d8e2?(^gK97bXjcYcTGZY$<Nfbc1tpmAD<#3&F{|
b#O)X-O#UejGR#uKo-;uRV%YA<jw12^zspsh

diff --git a/t1/mundo b/t1/mundo
index b53a829938eb3e6f24afc750ad1d4fd7670b46f5..8033d2a53664c1b967e4cb8ede56c7e5e249b5c4 100755
GIT binary patch
delta 9616
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
Ow-!kIHn9m?9sdo6Yhnxl

delta 8036
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
ZT~2*eWga1KJdvZ<G^x}*Jejr1_TLt8xtRa}

diff --git a/t1/mundo.c b/t1/mundo.c
index 96bf90e..33d245b 100644
--- a/t1/mundo.c
+++ b/t1/mundo.c
@@ -37,6 +37,8 @@ typedef struct {
 typedef struct {
 	int tempo_atual;
 	int tamanho_mundo; /* o mundo é um quadrado */
+	int fim_do_mundo;
+	int n_missoes;
 	conjunto_t *cj_habilidades;
 	int n_herois;
 	int n_locais;
@@ -57,6 +59,10 @@ double distancia(local_t loc1, local_t loc2) {
 	return sqrt((double)quadrado_da_distancia);
 }
 
+int vazia_lef(lef_t *l) {
+	return l->Primeiro == NULL;
+}
+
 heroi_t inicializa_heroi(int id, conjunto_t *conjunto_de_habilidades) {
 	heroi_t h;
 	
@@ -89,13 +95,28 @@ local_t inicializa_local(int id, int tamanho_mundo) {
 	return l;
 }
 
-mundo_t *cria_mundo() {
+evento_t *cria_evento(int tempo, int tipo, int dado1, int dado2) {
+	evento_t *e;
+	if ( !(e = malloc(sizeof(evento_t))) )
+		MEM_ERROR_EXIT;
+
+	e->tempo = tempo;
+	e->tipo = tipo;
+	e->dado1 = dado1;
+	e->dado2 = dado2;
+
+	return e;
+}
+
+mundo_t *cria_mundo(lef_t *lista_de_eventos) {
 	mundo_t *m;
 	if ( !(m = malloc(sizeof(mundo_t))) )
 		MEM_ERROR_EXIT;
 	
 	m->tempo_atual = 0;
 	m->tamanho_mundo = 20000;
+	m->fim_do_mundo = 34944;
+	m->n_missoes = m->fim_do_mundo / 100;
 
 	const int n_habilidades = 10;
 	if ( !(m->cj_habilidades = cria_cjt(n_habilidades)) )
@@ -107,63 +128,121 @@ mundo_t *cria_mundo() {
 	m->n_herois = n_habilidades * 5;
 	m->n_locais = m->n_herois / 6;
 
+	/* cria vetor de heróis e preenche */
 	if ( !(m->herois = malloc(m->n_herois * sizeof(heroi_t))) )
 		MEM_ERROR_EXIT;
 	for (i = 0; i < m->n_herois; i++)
 		m->herois[i] = inicializa_heroi(i, m->cj_habilidades);
 
+	/* cria vetor de locais e preenche */
 	if ( !(m->locais = malloc(m->n_locais * sizeof(local_t))) )
 		MEM_ERROR_EXIT;
 	for (i = 0; i < m->n_locais; i++)
 		m->locais[i] = inicializa_local(i, m->tamanho_mundo);
 
-	return m;
-}
+	/* para cada herói, cria evento de chegada e insere na lef */
+	/* evento_t *evento_chegada_heroi; */
+	for (i = 0; i < m->n_herois; i++) {
+		/* evento_chegada_heroi = cria_evento(aleat(0, 96*7), CHEGADA, m->herois[i].id, aleat(0, n_locais-1)); */
+		/* TODO: testar se funciona alocar o evento estaticamente desse jeito */
+		evento_t evento_chegada_heroi = {
+			aleat(0, 96*7),
+			CHEGADA,
+			m->herois[i].id,
+			aleat(0, m->n_locais-1)
+		};
+		if ( !(adiciona_ordem_lef(lista_de_eventos, &evento_chegada_heroi)) )
+			MEM_ERROR_EXIT;
+	}
+
+	/* para cada missao, cria evento e insere na lef */
+	for (i = 0; i < m->n_missoes; i++) {
+		/* evento_chegada_heroi = cria_evento(aleat(0, 96*7), CHEGADA, m->herois[i].id, aleat(0, n_locais-1)); */
+		/* TODO: testar se funciona alocar o evento estaticamente desse jeito */
+		evento_t evento_missao = {
+			aleat(0, m->fim_do_mundo),
+			MISSAO,
+			i,
+			0
+		};
+		if ( !(adiciona_ordem_lef(lista_de_eventos, &evento_missao)) )
+			MEM_ERROR_EXIT;
+	}
+	
 
-evento_t *cria_evento(int tempo, int tipo, int dado1, int dado2) {
-	evento_t *e;
-	if ( !(e = malloc(sizeof(evento_t))) )
+	/* cria evento de fim e insere na lef */
+		/* TODO: testar se funciona alocar o evento estaticamente desse jeito */
+	evento_t fim = {
+		m->fim_do_mundo,
+		FIM,
+		0,
+		0,
+	};
+	if ( !(adiciona_ordem_lef(lista_de_eventos, &fim)) )
 		MEM_ERROR_EXIT;
 
-	e->tempo = tempo;
-	e->tipo = tipo;
-	e->dado1 = dado1;
-	e->dado2 = dado2;
-
-	return e;
-}
-
-void trata_evento(evento_t evento, lef_t *lista_de_eventos) {
-	
+	return m;
 }
 
 /* lef_t *inicializa_lista_de_eventos() */
 
 int main() {
 	srand(time(0));
-	const int fim_do_mundo = 34944;
-	const int n_missoes = fim_do_mundo / 100;
+
+	lef_t *lista_de_eventos;
+	if ( !(lista_de_eventos = cria_lef()) )
+		MEM_ERROR_EXIT;
 
 	mundo_t *mundo;
-	mundo = cria_mundo();
+	mundo = cria_mundo(lista_de_eventos);
 	printf("inicializou o mundo!\n");
 	printf("tamanho do mundo: %d\n", mundo->tamanho_mundo);
 	printf("conjunto de habilidades do mundo:\n");
 	imprime_cjt(mundo->cj_habilidades);
-	printf("conjunto de habilidades dos herois do mundo:\n");
-	int i;
-	for (i = 0; i < mundo->n_herois; i++)
-		imprime_cjt(mundo->herois[i].habilidades_do_heroi);
-
-	lef_t *lista_de_eventos;
-	if ( !(lista_de_eventos = cria_lef()) )
-		MEM_ERROR_EXIT;
+	
+	int i = 0;
+	nodo_lef_t *exemplo = lista_de_eventos->Primeiro;
+	printf("eventos alocados na lef:\n");
+	while (exemplo) {
+		printf("tempo do evento %d: %d\n", i, exemplo->evento->tempo);
+		printf(" tipo do evento %d: ", i);
+		switch (exemplo->evento->tipo) {
+			case CHEGADA:
+				printf("CHEGADA\n");
+				break;
+			case SAIDA:
+				printf("SAIDA\n");
+				break;
+			case MISSAO:
+				printf("MISSAO\n");
+				break;
+			case FIM:
+				printf("FIM\n");
+				break;
+			default:
+				printf("deu alguma coisa muito louca aqui\n");
+				break;
+		}
+		i++;
+		exemplo = exemplo->prox;
+	}
 
 	/* ciclo */
 	/* retira o primeiro evento da lista_de_eventos; */
+	evento_t *evento_atual;
+	evento_atual = obtem_primeiro_lef(lista_de_eventos);
 	/* atualiza o estado do sistema; */
+	switch (evento_atual->tipo) {
+		case CHEGADA:
+			break;
+		case SAIDA:
+			break;
+		case MISSAO:
+			break;
+		case FIM:
+			break;
+	}
 	/* agenda os novos eventos na lista_de_eventos; */
-	/* (mundo->tempo_atual)++; */
 
 	lista_de_eventos = destroi_lef(lista_de_eventos);
 
diff --git a/t1/mundo.o b/t1/mundo.o
index df506fe03d7908648f8b18fbbe43f97b7dfe3f7c..5460770afb1c88e350aa9e31063bc84ba152c2a1 100644
GIT binary patch
literal 16672
zcmb_j4U|;Hm9E!4#k~1prsoHkfl(S21aW?Y{DTA7&<MyNP683r^mM<OY3b=6`UeLh
zi(x`y+aWS%U85Tp&?Fm=u4{}*mJO~B$OhbGUE(o@WZh+QB-zQLM`GOUM9sSQR^95Z
zDQ2Q4yTzG)b-%iG?^m~eUcGvceZKXpU6#dEve<H#mlVp_(IxqOtH`#p$!rq)ZTXe&
zwfi%_^!LB%$?W|glO7qy(ue<h??~qC!8R-F`@lN;(u=xUw%wog&7N~Ib2j69H`~5G
z>$_eGBU#_O<xdZ0PG)^0aJ8WPgLlfW^L-#pYDO}9N5BO9G5>+V@&^XXzc+Y??xNM7
z*?TUNe$}68Ka=&nn(+-i9|lq{ATwbr<GUb{$~-cB+V>_ZJkR0h1y`=%B)B@0dCi|W
zEvou6zDs~y0?+Ab{)5Y~$}#*Ar7vLYq+WKzInW#OXWNJU8Oxv9WQ%H<6&|>r(^}L2
zW)tzvw4WuqSAv-rkcgt2^<Bsl7zPW&A4MQf>f=(*`p)(bTbUo|ae_X%9Q?pPPUEue
zBYtdPW>d{&jr3;rzL`l6XWB1hHVnPsQEdZqBmVxqBkUuh=^M$mznQ_<L1sA9Rv>d1
zGHn=Fz=kqyrI^b{b~6mhZV2tMus>Tcb2fMcXT!~dFEnY+&w%qYAL;zeX{ZAAVJMt#
zE%4r=vi3dq%51jP_J_{;Bd<(9aB-9W#D98EyvI+BOrIl1Ph06}->G6SkoBEX-I#4Z
z<Ik+b2A%O|TRk7uou_?+$lzkFs*r6T%#X@`-ylr2!6m*^cc0I;pURv)G32tyH+IFD
zY-^3=_v8~#TqpSD$<=8JnX`Ut&~KgfpBQrIhrF=l&$M~Tx%cC;{iLkWOU?9qfh6)6
z<>p|W<v-{<l-)4s&%Bd)Ip;R(I|Q@mA%6y#Y{p(b>d&n5U{i_kBH!TMhh@Ib{}52-
zxw;uedA4NGI{V{N-Xsi)@r4~T8)=1J@}Kwx_aCgYiRd3^nQea@nF8yYJli^C`!(vu
zUuU5&pFaw#j6T`Up7y<poh&Jj9W3iimSudnv_PNMT{d4|_aAIO3x&u0`N8oKD^;Fi
z4NxrqlJnt*AF9!|UHY*{FAB&L7f9$#pmN&xx*+|3a9oP9c|iH{p?x>lJncJ&mj7f2
zXwaX%V>s;pM4g!bDK6LM{!`tzkGf+tY26^#`BBT~Ff0<oAGt`tI<MU$<gG#agZo9c
zwIK6@%kCEh<g~;}Kvq<<ajl0t9o)rq?O#6&k%0ydL0Q(5^}RlZ^|4V^skNYg#GSec
ze)etXA91Cwho60`4h*IW`$w#l=i)-$-Ngl?q&cG`bsrSXxHwTSJJj!c9j7bMgcTCo
z(7$(xl^<9MgA8CjWFsJtK$wtK4YHbwtSXR|2UwK=tBZw)E*2cRXu-NLs_L-lt(RV8
z%$G>S7kgtbel70pj7Pk^@nrJFr*=6}Z!j7U1ry#Lr{~3I6Omv8i^L+KNH7}N6Hj~N
z-kx+U9G}5b!Jc5OJMIk=ve-K_jO#WF#bbA-V<{+cyxqZ$NHh`-hMi<ykvY2@C{Id9
zVaUXS-l)^Ln5CSaUSUycfJJH5n~Ge9vsHfIniV&#V4GL0h2ITpH*a3Ck*!|40Xbj_
zJ8AIHmF@|8L-9y52*e}6DjH9Rg5KcHbcFq@%~*lZwZ%s6vfbR5K|v*)#mx2NDU0CZ
zwhK{m7l=!N?Y4xX+a+OZf+%(2u7vRd9*L#c1P3eF0urX&57q7jNai1&hWSGKK~$2}
zg~f9P&Gt2*QUo|F_(UNZAz^;eA;{aZWPuPoQdlU28YwIif>#QQg)mzRON7uQg{4AR
zD1~K0Xq7^%5d2bDA%r$5tQ5i)Dcm%98SvaLh1J!oK<Ji&U$E|#!dfAuq;PXdA2gv)
z3L7fhK)6Q=x0HVhg#A+3Xs-op{ZiOez7>RfrLcA4=Rxg|6mFjqhLVS*u&p)@!ci&Q
zA?Q3Vh0heNfjZxkLZG-Fgkw_JF1QU!p~Fstfm5=7cwy~dfu0!N1#`<vAP=3j5EKe+
zEGWf(LtYbcbRgOU0;vV^**hUCbPp)qDprOSCS=M604fxnEs^^KBJ)|1FU1bW?Y8h@
z$(n^n%AN*D=oKC<#Q`Gok5=H25~HZbF0-$OyF__Uu#eg0Mfp)=dxTI>-kVA=yFv(d
z`7UNx7GnhuFhXT;0H&&I-++v;=qZ|L-vJ6DRz+o+#iH_REU=;G4R94Tiz=pIUUDg_
zvcC>OIV>uysJa~Uth_VQ!-^&e!Im~B3!6wFlrvK^DXz?TiYqEcKoH8sl^TKKDj^ie
zl4>DHo5hoaP%23kPj-JVZ|w@t^{^7iI#-rso`mU>TR_0(pu0l503^|<Vy_$X9$2`T
zT|Cnh072HDRe^a_UYJw9)_oJ?D{8FjqT`S$kA#^uNvsL7k~LWflC?EO2zI&C*UPLL
zA(RT+R&5zp$FR%+I)aEb)x8sKd#$>nYdG1yLbrXTZhN}0AR}UVi?N1B+MXfQYNT+L
z5bD6u6FEm$yZ;#-HCZ!@z6;f);w;_MwYsO-LLg6bgg~vhPPRfCm@7)i?e#*alO^>f
z=*BCBhLYnT%mzXyfJC8v9Z0hMjqdr7$LCXK{R4OKO6e6^(XB@o!IE5ss5MxGdDp-e
zDV{31QHa~CBh31t@a`H|FUx*Zh8^h|Xp`b_DUJ)*KsR`I1cwvgcapFgFGe#e&4yA;
z)+4_Mbh60C>(H-z;PHLcJ<RGAZruaN_DS2jOQWFW9{A2a<Z-v);U4(bzG|Eq*3%_8
z_*?_6Q_vKqFUkx1DcF=29w;RpRzqcM8)c-zV>t!l+)*ONIVq*-YCYn>T}*QBn1<1G
z4QwNEmK3*;*d)c<NL(VtwrYo2p<JwFeA<ezzf}4qWvoZO4Zdn|GPGSOYu_Y|wUMjV
z>L{}|6^qUuXd~h)i*N|2^sSsRTw#Q<m7|TVY`{r_!LIIR)~aHx4ZX^yVohuLs3C*L
z37D)$n$Q|}Up`q5m~QgEz&<QiGO6d27tlvkl3y@Y@>Sw&DSBl;ETlmemf|83yQR38
z#3*bQL?fpOHZ7w_UYm1T8)Q~XxeQ&jwgZI8Qs{;zR9G|1s!H5t)5<EW%0dqe9@k{%
zE?Zo(q-0UaTJYz-hLw~o2MyR<ltUJFD}+E>Cd^`}Q-}qav8yb1SxJekZ2?d;Q8Ts>
zDi`Oi!`-h6N|)Bc4bQUHR-yjH8DOvx^vdRG6>qFXrE;)kD`IHN1Kw=iTSb+ni<J%5
zjkWo<U;|rg9$Z<Aj;eI~E|?D00OYJAFiEd{ZSC5sQS~QtjUTE{DS=p47NYGMnT4SN
zN~3H}9oyztB&TU(mjYwx%j@A!tYz{ZNxjRMzW>aDka-7I12^-)>SkH*mraCUaW08+
zV>+2=j7B;dyF#JHzJ>Dx^XJt^Be8T}eOD~qxTrA_3q{jmhY39rF4yabq>>*)r7^X;
z*BPzIn0P*D2qE8ODjaq?8(`8gCR8B{?M$W;=};=LdhL220MM3v4r)Z=0K(8uMS2{W
zgXXA*3IHGh&>4vaa{}ChWuEa`RwN?{YVKx>7uhqoXA7_H<TXpVwUswC^Qz-~`cgh&
zDX&UXW@ef%*v}_)@}jNWI>Kw4c=2&QDaEY;zNU#6+7a&Q;$;_j=`vn?f!oXYRlB&?
zevKF3%=yjSy%oG1<(7Sf-_Q-(xAV#_?zzAxE$3B-^E#EF<I&_2kc(_DFIk3{<=k>z
zUBy>+^NIE@&R^s1G)Il%0bX+C2rmNr>v%(xUCAf@ii#_sxatV6eCjDaBgM<@ExdFW
zzaq`2fs_55?^ncJDeh*j0(T?73NQ9r?t-gzGr#fxFFVXD(!4Ik%j^bz#a(>TVP0jY
z^!i6Q)UTBF3-Gd^!ww2B0<=517e&|H3SI>nFe|L5_!Zmuq(i*w!XGu38fEM?vejhT
zD!Kz%6l~+AZ*cx7pSYiUu(@-2St~C98$-N!C7%FIC|D;<xZJyJXvru(Meedg!b%G-
zwd;AY9aS}EfZkX&3fvW2cu5kvXAkFK+`UeA^g1x`7`Kme*I{0F7xhN5{U~?+_P9N8
zoKJX{m!-MuDO73N%H1hD%`5G#d@6LrQm}OHcoY5O1y}Ksb=-FE_&%?2Px~7_`CUQL
zeynBjLO#h|?Bzx8!mxF@V2%d@@y^abiUrng3?!UjIDngW`J{|!s5=;m<(|G-GP1`3
zSUge(f~j;c$^yymcp}x2?o<!&0Wnwe&-cLqKKe(Q_$5!E9_R=r9bK#2NyH;8CbT0-
za2*djp<O8!i-+R@K{0@{cTYU#0FSPi6ZQhT1Pk36&`tzc04A{$i{~5U#KPb^*5$<~
z=0ImO*p&o16$}OA0ep7BmLnh33xv`Ma2!qd#00K5z|jR1#-m}3R?-1GbcIuhcnj;n
zAc+$R7K}Q<6x$Wt6M=TaE<Wr;Q^DQBSWhsq!%5)!1=^yu5RG(<+9KH{94Fx<kq>jC
zPLCu$S_kOfm58Jq(Nn#Ncpnoz;2ovq^ueh|R7N2g+~vq<Q@{2^lF48kLXDX?thE^P
z9Tb}u7U+S<v&QatkJH%egcI?`_SJ2-HnudiwA8mWw%xjMO><)^5$p&?yW`1vV9-?$
zKr=Qho>u+E*4)zWUA1tLcTvN<h9+-)PbwXAmUTHXClLvO7)*q^m%**1e*QdfeV4Z$
zDlZEy0>#c?a(67$oruTc>12I6c2^`8u1^I!qHx+%-<gDd+krk)PAC;mKs8W=>QoSl
z29w>YI1-ORL8w!c8LsdUb+z)-aFp>B0|26n!Jq=Xhsb*m3k1T!-O)%_cS=o<P`A?+
z3<m>p;D#f>Ee1zg5I@n;ILboJ_|uZ_Wiet!g{0s@eJ45}J2nz_z)vcuCKH1bv_AaV
z4c$fc0=q;w^dZ=+ILSFFXv@xK&?gW(CLD{Y1fvpK*Oq{}6iLM4wg<ce;8yA<<>W?h
z`C~RY2XQ!u;OvexAtEpd=Fg*0iN!<AX`E1E%wa%91-T*w0=>cT4bbeK0L*B@(y?^X
z3Af<jaS{nR8KH~Qy>i6vOb5dWm}3x>Kt93{(;zGny}?k#ks<G-iG!_SS{SuPpi|jZ
zG6I1>YELZK<H-IUH4;QKa$^KyqnUv%L~mS9>%QE!q!(fw3B?&(vuf31@9g#tIIB#{
zp<mye7E<${wKO#}&1-0$BXQhv$df`3Tsi!~jKPh}AZ$}`{~}T~U9CO0GON#HO)D+5
z55dN#4siU#BsT88GS3%Wt0qqP3@8AGWlOOTl6aa><#*@Hx5;8Ao=#MGd%pZ`Di_Z}
zs@(NWp@8-uq4HniHCO(6uKYPF7Y~8C@~9~HLfPw7E*@-Exv$^to?4L8Q7^;AL$}g#
zzhnsosz25RLIm5r-+VY$nOhk(3f;M=k1lZI#&L|~7QJ?PftzVh?OL(h*odnlw><Pv
zV(#jehkZF&W!!9{%8t6aS@|eg39zYG*-=+Fs~9CK!7UH_lqjxvTvDmUO+754$FZ#c
z$2j;*vZLyYu?bk?IQsKQ9}hAxsVC{>kViiE2^5ZA>ADfFWAO=$gLjUD?*JU_FUElc
zNsMv0-VJ|a**`E2em~%7XF5GUr~{F&j-&q==|4dF>d@z@arBRkga2?G9OoSJd5(st
zI?VdTIQqXD2ggq}#)`v#jf1~84n6_mJC>c=aq!%VEB9G}HS0I7T(Lf|arNrWzS{z~
ztysC<7hw4tMRI3C-;CwnIjNhrxH~1&9icl@0r+FR3Ahu()~hd)(zm8~zlq9Q8ET1I
zxRV%lJM0NYK~KNoMPf<V%?ZQ7Fud)G$AW=)BJA{tonas#HZ!or-Vx{wMxt^TiCbKj
zOa#@f6K}e`X?Sps^Z>aYX)WFXJMe&z;TBH&Oxy}ZL>^)dhYBL$%7wH119;zu3CBAo
z#8F4#-$oD;;y9-jehNWICjM^{z6^g$!|~io*-@W3;jrc!UPAK=?c+J5(x0T^a8{DT
zgBq^$jA=NYz$rWX2{-+INz>Q;KB(ck-=i9ihiA(EcgC^*yr!?)KcnHg{hw>N-mbUD
z!STHqCXCw^@Td4}B;0H-zDL4j#yO<nI-l=rxNiSPgyTi;$JaD{y}d&kuG_~~H<*x*
z-d~#tH|^i9>Ff3#4cG1WYxs2Vq2e>7;d;A1B;52{gajd(ajVjB-S4L~91p3L-#^!I
z-S4*vH~l`R>Fe$NfrjgT|DfS`_^14?!A^pN#rn9qZyfxnhI^rovhyV2CQp2qf(h;G
zJjKUzgzG%t*7S8gwRAs1J6`xxey<_i^xL56>wXt%xbAn4hU@kZjAQ?PO<%YFu!igQ
zpV9Cc8vmCy{AvyViH2XJ;pa7criTB9a5E0?Yx+7*UI>*TVLWx76&j9vDHZ2B!j=75
zSQ*j`O&>9(-)!is&r_FZ`Z}MLhW>5BIz01e`nvs3Y5298-(JJcF0zx>^mRM;8~XQ?
z{==HS&hs0F{x?bg>2dVW8~W;*=YpoM^LfkAKSlQ68AtzpL;s&hUp-1-|LXRO@Zk@V
z>c<~Tk(Ci{>Q6EB)iYV$IQlnf_-wGP#=|}hpQGUu$UlDNKur-ysfJ^jx<9EW62$Ot
zIjtACmSR$PEjADmu63C3Hc60>kpm{w7q5DS#8?Ael^rE7HSi;J-(6+k_Yl6`z&q*w
zvDv^+k^ZL*{Cgw^4g4OmlQQsMk-Xc$Nn{5Md<k|mq=)4t7q?-uf7rmM68@xtzfJNn
z1E=n0|7hSpBl#5r_Yt4-23|t_i_a67RKGk!ar?c5bGSu3@wow$(oaZ{RT;R8WUqmr
zC%N9h?<bz>xlh^OO!yi@e>3s9&A`=js@ktAJ8C|v{i?!CXz+g4urrtBdkwsd<i9ZR
zXNk{a2EKyg^R$7(dliwMGw=l@zhvNQJiTV%uTp&8FmSbBxn$r6N&bU@?;tzH#7o7e
zisUH<zK`^08u(8r4$TH$PWU1N?;;-C4SXu$I}H3jvhxK4PmumY2ELBuuN(Ni#DCDh
z-y>Y@w^bbQ1077~41G0kFBtetsm}h#z-JN9>&Tw6|2xu~Z{W8QzRJM=lI*k@xcHA4
z;5%&Kj}f0<1OF_^Uor59NPg15-zGkPXW&04`ILcIQapcb;4QTN{JVjlB>AF&-$?EK
zy@9Ly6DL0^p0h|+{uQoxPB-*b+!h)5TjcLn1IN#EFm)REyCi?nz}0ib0|tIGwd-#U
z{5;7g4ZM%^-!SmsNjmJ3fv=`GtLGFI2i5PzRIc!&)UGK8{td$C8u*>$x7EOJAbf*?
zuOs}^2A&|^T?YO>wKrwpC&|v|3>?32!}MhXKO|xHRRd3v{^JJzUE*`nz}+OjY~ViP
z`7^>%#Hpgr`z{&!7TN#M!0|&(Ow(usr~2imWdAw?KSTPf4SYM<-$c0Lqs}+G4SmJu
z3kF_8cAhotEG6D&4E=e;=bWKGMEbur^xvX(y=UN!<X1gUDgNp_S3NhW_^5e4mo~c!
zSL@7T16S+JS_4<>Os9cwmEFR260Z2D{mO%ez8dGx8u&i4^Soi_KEmHH^ruqX<TvU0
zeb*-`Zl$y#RD7ajr<rgShqcr%OAY;NNq@7Uzm4=e3_M8qP6J;+Jnu2^?Zoqb13yCj
z`>28cg6#jbfwz&JX9!pACHlEHKiFOxN}@=eahv+n$)1UO$so>My44A!)xcHUwi~#L
z|2+n-`uC`TtMM~v;A)%?8MvCi1;k(RRO<|DNbc@|*VJ%LCFHeR<q{5jWtDRJQmjF|
z>Tc*rCRsxwE(K8<b~@5sfk><~4mu(q?C3~1yFd*q69lK^UGVjSj=@)Hj;aFwSVJh@
z(*yr8gf+zAlYs_!#R{Jc!24yA;q$cy_?V#ANu+j@9j80cnZVb=|1Zf4Rxm{RSU|(A
z_yfuO7>~j!3*i^fnsJD>!k?bDTqC7>X&mBNKGr2M_qpyY!f80mO7Q!#Qp_PTWBR`y
zU{w86>o-GPw5g9_5ZPJsub$5k!(`IJ_k1QN)O&><>dzY$Ox;DGJ68OLuwjrcmC7r|
z5Bo@&!!t8XH^ZN46Y*!nm*I>(VH6r7yJMXCx6_OLCN!ocv;Gz+8;k#0Y#1a}ANgZQ
zO#V9oGi?IIvgH4FM#q}ExQ>kFpDji!@@x^W=)VO1O#gcULz{{xWJUTM1^5<PuNAKR
ztLwc`FjoD4!9#RN)QwVrUsX?C2Q)0F1ey1#zK&sD)l>MRkilD_IeyiPXs=SFt7^Z3
z{~j`E)2#2M0|Kw%(5(L*s5@5tYbgGMP>u=XUjcurz8b${`9}R#d?^Cy67@e02Rx5A
j>*JU*h6o_gpI3_un`!VjM8RpS`saxMi_%Q)*R21)?&VM2

delta 5512
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
K=>+Vo%={nkHg+fg

-- 
GitLab