From fc79b9f304c3f674268f6224b5ab3253fcdf5302 Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Wed, 1 Jul 2020 22:48:19 +0200 Subject: [PATCH] - Include latest features and fixes from upstream - Changes to match the Fedora Packaging Guidelines (#1843279 #c1) --- baresip-0.6.6-235c021.patch | 11571 ++++++++++++++++++++++++++++++++++ baresip-0.6.6-3871768.patch | 1526 ----- baresip.spec | 25 +- com.creytiv.baresip.desktop | 11 + 4 files changed, 11603 insertions(+), 1530 deletions(-) create mode 100644 baresip-0.6.6-235c021.patch delete mode 100644 baresip-0.6.6-3871768.patch create mode 100644 com.creytiv.baresip.desktop diff --git a/baresip-0.6.6-235c021.patch b/baresip-0.6.6-235c021.patch new file mode 100644 index 0000000..aa53ed1 --- /dev/null +++ b/baresip-0.6.6-235c021.patch @@ -0,0 +1,11571 @@ +https://github.com/baresip/baresip/compare/v0.6.6...235c021 + +From 549f0f2a736869db2d080defa0645e5b13bf41eb Mon Sep 17 00:00:00 2001 +From: "Alfred E. Heggestad" +Date: Fri, 17 Apr 2020 18:49:29 +0200 +Subject: [PATCH 01/60] audio: move calculation to audio_jb_current_value + +- it is more efficient to calculate the value when + it is needed. + +- this also fixes a helgrind warning about accessing data + when no locks are held +--- + src/audio.c | 33 ++++++++++++++++++++------------- + 1 file changed, 20 insertions(+), 13 deletions(-) + +diff --git a/src/audio.c b/src/audio.c +index 6d057caa..90225d2f 100644 +--- a/src/audio.c ++++ b/src/audio.c +@@ -162,7 +162,6 @@ struct aurx { + size_t last_sampc; + + struct { +- uint64_t aubuf_current_jb; + uint64_t aubuf_overrun; + uint64_t aubuf_underrun; + uint64_t n_discard; +@@ -202,10 +201,29 @@ static const char *uri_aulevel = "urn:ietf:params:rtp-hdrext:ssrc-audio-level"; + */ + uint64_t audio_jb_current_value(const struct audio *au) + { ++ const struct aurx *rx; ++ + if (!au) + return 0; + +- return au->rx.stats.aubuf_current_jb; ++ rx = &au->rx; ++ ++ if (rx->aubuf) { ++ uint64_t b_p_ms; /* bytes per ms */ ++ ++ b_p_ms = aufmt_sample_size(rx->play_fmt) * ++ rx->auplay_prm.srate * rx->auplay_prm.ch / 1000; ++ ++ if (b_p_ms) { ++ uint64_t val; ++ ++ val = aubuf_cur_size(rx->aubuf) / b_p_ms; ++ ++ return val; ++ } ++ } ++ ++ return 0; + } + + +@@ -627,7 +645,6 @@ static void auplay_write_handler(void *sampv, size_t sampc, void *arg) + { + struct aurx *rx = arg; + size_t num_bytes = sampc * aufmt_sample_size(rx->play_fmt); +- uint64_t b_p_ms = 0; /* bytes per ms */ + + if (rx->aubuf_started && aubuf_cur_size(rx->aubuf) < num_bytes) { + +@@ -638,16 +655,6 @@ static void auplay_write_handler(void *sampv, size_t sampc, void *arg) + rx->stats.aubuf_underrun); + #endif + } +- b_p_ms = aufmt_sample_size(rx->play_fmt)* +- rx->auplay_prm.srate *rx->auplay_prm.ch / 1000; +- +- if (b_p_ms) { +- size_t val = aubuf_cur_size(rx->aubuf) / b_p_ms; +- +- if (rx->stats.aubuf_current_jb != val) { +- rx->stats.aubuf_current_jb = val; +- } +- } + + aubuf_read(rx->aubuf, sampv, num_bytes); + } + +From b00508fc0c939cc73076f9dce4b7694ad5de00c0 Mon Sep 17 00:00:00 2001 +From: "Alfred E. Heggestad" +Date: Fri, 17 Apr 2020 18:58:37 +0200 +Subject: [PATCH 02/60] avformat: clean up docs + +--- + modules/avformat/audio.c | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/modules/avformat/audio.c b/modules/avformat/audio.c +index 9e3264d7..5e374e42 100644 +--- a/modules/avformat/audio.c ++++ b/modules/avformat/audio.c +@@ -74,7 +74,6 @@ int avformat_audio_alloc(struct ausrc_st **stp, const struct ausrc *as, + st->arg = arg; + st->prm = *prm; + +- /* todo: also lookup "dev" ? */ + if (ctx && *ctx && (*ctx)->id && !strcmp((*ctx)->id, "avformat")) { + st->shared = mem_ref(*ctx); + } + +From 01bf410e826d4dc74966be31ed1f5dec064b4e63 Mon Sep 17 00:00:00 2001 +From: "Alfred E. Heggestad" +Date: Fri, 17 Apr 2020 19:13:16 +0200 +Subject: [PATCH 03/60] aac: add AAC_ prefix + +--- + modules/aac/aac.c | 4 ++-- + modules/aac/aac.h | 25 +++++++++++++------------ + modules/aac/decode.c | 2 +- + modules/aac/encode.c | 2 +- + modules/aac/sdp.c | 6 +++--- + 5 files changed, 20 insertions(+), 19 deletions(-) + +diff --git a/modules/aac/aac.c b/modules/aac/aac.c +index 1432aae3..646a5623 100644 +--- a/modules/aac/aac.c ++++ b/modules/aac/aac.c +@@ -87,8 +87,8 @@ void aac_encode_fmtp(const struct aac_param *prm) + "; indexDeltaLength=%u" + "; bitrate=%u", + prm->profile_level_id, prm->config, "AAC-hbr", +- prm->constantduration, SIZELENGTH, +- INDEXLENGTH, INDEXDELTALENGTH, ++ prm->constantduration, AAC_SIZELENGTH, ++ AAC_INDEXLENGTH, AAC_INDEXDELTALENGTH, + prm->bitrate); + } + +diff --git a/modules/aac/aac.h b/modules/aac/aac.h +index 66f9fc1e..2b3c53b3 100644 +--- a/modules/aac/aac.h ++++ b/modules/aac/aac.h +@@ -18,18 +18,19 @@ struct aac_param { + }; + + +-enum { AU_HDR_LEN = 4, /* single access unit only!!! */ +- +- SIZELENGTH = 13, +- INDEXLENGTH = 3, +- INDEXDELTALENGTH = 3, +- +- HIGH_QUALITY_AUDIO_PROFILE = 16, /* L3 */ +- LOW_DELAY_AUDIO_PROFILE = 25, /* L4 */ +- ENHANCED_LOW_DELAY_AUDIO_PROFILE = 76, /* L1 */ +- HIGH_EFFICIENCY_AAC_PROFILE = 46, /* L4 */ +- HIGH_EFFICIENCY_AAC_V2_PROFILE = 49, /* L3 */ +- AAC_PROFILE = 41, /* L2 */ ++enum { ++ AU_HDR_LEN = 4, /* single access unit only!!! */ ++ ++ AAC_SIZELENGTH = 13, ++ AAC_INDEXLENGTH = 3, ++ AAC_INDEXDELTALENGTH = 3, ++ ++ HIGH_QUALITY_AUDIO_PROFILE = 16, /* L3 */ ++ LOW_DELAY_AUDIO_PROFILE = 25, /* L4 */ ++ ENHANCED_LOW_DELAY_AUDIO_PROFILE = 76, /* L1 */ ++ HIGH_EFFICIENCY_AAC_PROFILE = 46, /* L4 */ ++ HIGH_EFFICIENCY_AAC_V2_PROFILE = 49, /* L3 */ ++ AAC_PROFILE = 41, /* L2 */ + }; + + extern uint32_t aac_samplerate, aac_channels, aac_aot; +diff --git a/modules/aac/decode.c b/modules/aac/decode.c +index f8c78a20..4c469f0e 100644 +--- a/modules/aac/decode.c ++++ b/modules/aac/decode.c +@@ -54,7 +54,7 @@ static int hdr_decode(struct au_hdr *au_data, const uint8_t *p, + + bits = ntohs(*(uint16_t *)(void *)&p[2]); + +- au_data->size = bits >> ((sizeof(uint16_t) * 8) - SIZELENGTH); ++ au_data->size = bits >> ((sizeof(uint16_t) * 8) - AAC_SIZELENGTH); + + if (au_data->size == 0) { + warning("aac: decode: invalid access unit size (zero)\n", +diff --git a/modules/aac/encode.c b/modules/aac/encode.c +index 58e046e8..0c9415ab 100644 +--- a/modules/aac/encode.c ++++ b/modules/aac/encode.c +@@ -63,7 +63,7 @@ static void hdr_encode(uint8_t *p, uint16_t size) + * size + */ + *(uint16_t *)(void *)&p[2] = +- htons(size << ((sizeof(uint16_t) * 8) - SIZELENGTH)); ++ htons(size << ((sizeof(uint16_t) * 8) - AAC_SIZELENGTH)); + } + + +diff --git a/modules/aac/sdp.c b/modules/aac/sdp.c +index e0527a09..c87a292f 100644 +--- a/modules/aac/sdp.c ++++ b/modules/aac/sdp.c +@@ -53,13 +53,13 @@ bool aac_fmtp_cmp(const char *lfmtp, const char *rfmtp, void *arg) + if (param_value(rfmtp, "streamType") != 5) + return false; + +- if (param_value(rfmtp, "sizeLength") != SIZELENGTH) ++ if (param_value(rfmtp, "sizeLength") != AAC_SIZELENGTH) + return false; + +- if (param_value(rfmtp, "indexLength") != INDEXLENGTH) ++ if (param_value(rfmtp, "indexLength") != AAC_INDEXLENGTH) + return false; + +- if (param_value(rfmtp, "indexDeltaLength") != INDEXDELTALENGTH) ++ if (param_value(rfmtp, "indexDeltaLength") != AAC_INDEXDELTALENGTH) + return false; + + if (param_value(rfmtp, "bitrate") < 8000 || + +From 1cd2bd6b9a58df51e410110ca1242a14e4061ebd Mon Sep 17 00:00:00 2001 +From: "Alfred E. Heggestad" +Date: Fri, 17 Apr 2020 19:21:42 +0200 +Subject: [PATCH 04/60] aac: add AAC_STREAMTYPE_AUDIO enum value + +--- + modules/aac/aac.c | 3 ++- + modules/aac/aac.h | 1 + + modules/aac/sdp.c | 2 +- + 3 files changed, 4 insertions(+), 2 deletions(-) + +diff --git a/modules/aac/aac.c b/modules/aac/aac.c +index 646a5623..54f40660 100644 +--- a/modules/aac/aac.c ++++ b/modules/aac/aac.c +@@ -77,7 +77,7 @@ static struct aucodec aac = { + void aac_encode_fmtp(const struct aac_param *prm) + { + (void)re_snprintf(fmtp_local, sizeof(fmtp_local), +- "streamType=5" ++ "streamType=%d" + "; profile-level-id=%u" + "; config=%s" + "; mode=%s" +@@ -86,6 +86,7 @@ void aac_encode_fmtp(const struct aac_param *prm) + "; indexLength=%u" + "; indexDeltaLength=%u" + "; bitrate=%u", ++ AAC_STREAMTYPE_AUDIO, + prm->profile_level_id, prm->config, "AAC-hbr", + prm->constantduration, AAC_SIZELENGTH, + AAC_INDEXLENGTH, AAC_INDEXDELTALENGTH, +diff --git a/modules/aac/aac.h b/modules/aac/aac.h +index 2b3c53b3..84ad51f8 100644 +--- a/modules/aac/aac.h ++++ b/modules/aac/aac.h +@@ -24,6 +24,7 @@ enum { + AAC_SIZELENGTH = 13, + AAC_INDEXLENGTH = 3, + AAC_INDEXDELTALENGTH = 3, ++ AAC_STREAMTYPE_AUDIO = 5, + + HIGH_QUALITY_AUDIO_PROFILE = 16, /* L3 */ + LOW_DELAY_AUDIO_PROFILE = 25, /* L4 */ +diff --git a/modules/aac/sdp.c b/modules/aac/sdp.c +index c87a292f..46d7684b 100644 +--- a/modules/aac/sdp.c ++++ b/modules/aac/sdp.c +@@ -50,7 +50,7 @@ bool aac_fmtp_cmp(const char *lfmtp, const char *rfmtp, void *arg) + return false; + } + +- if (param_value(rfmtp, "streamType") != 5) ++ if (param_value(rfmtp, "streamType") != AAC_STREAMTYPE_AUDIO) + return false; + + if (param_value(rfmtp, "sizeLength") != AAC_SIZELENGTH) + +From 599cf441dbb8cab190213326944c1efbbbf68d8c Mon Sep 17 00:00:00 2001 +From: "Alfred E. Heggestad" +Date: Fri, 17 Apr 2020 19:47:43 +0200 +Subject: [PATCH 05/60] gzrtp: update docs + +--- + modules/gzrtp/stream.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/modules/gzrtp/stream.cpp b/modules/gzrtp/stream.cpp +index 1afa95a1..074dd5d2 100644 +--- a/modules/gzrtp/stream.cpp ++++ b/modules/gzrtp/stream.cpp +@@ -321,7 +321,7 @@ void Stream::stop() + + int Stream::sdp_encode(struct sdp_media *sdpm) + { +- // TODO: signaling hash ++ // NOTE: signaling hash + return 0; + } + +@@ -331,7 +331,7 @@ int Stream::sdp_decode(const struct sdp_media *sdpm) + if (sa_isset(sdp_media_raddr(sdpm), SA_ALL)) { + m_raddr = *sdp_media_raddr(sdpm); + } +- // TODO: signaling hash ++ // NOTE: signaling hash + + return 0; + } + +From d2273f36b91d17d0b95094ccdd2f1c4a15537010 Mon Sep 17 00:00:00 2001 +From: "Alfred E. Heggestad" +Date: Sun, 19 Apr 2020 12:33:42 +0200 +Subject: [PATCH 06/60] avcodec: fix H.264 interop with Firefox + +change profile-level-id: + +old: 42801f +new: 42e01f +--- + modules/avcodec/sdp.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules/avcodec/sdp.c b/modules/avcodec/sdp.c +index 0605b050..c6623182 100644 +--- a/modules/avcodec/sdp.c ++++ b/modules/avcodec/sdp.c +@@ -34,7 +34,7 @@ int avcodec_h264_fmtp_enc(struct mbuf *mb, const struct sdp_format *fmt, + { + struct vidcodec *vc = arg; + const uint8_t profile_idc = 0x42; /* baseline profile */ +- const uint8_t profile_iop = 0x80; ++ const uint8_t profile_iop = 0xe0; + (void)offer; + + if (!mb || !fmt || !vc) + +From cc6fa7d1c764d46ba1fa3c08d2568e7618749806 Mon Sep 17 00:00:00 2001 +From: "Alfred E. Heggestad" +Date: Sun, 19 Apr 2020 14:45:15 +0200 +Subject: [PATCH 07/60] ice: remove support for ICE-lite + +ICE lite is server-side only, if full ICE is not available. +Since we have full ICE there is not really a need for ICE-Lite. +--- + modules/ice/ice.c | 72 +++++++++-------------------------------------- + 1 file changed, 14 insertions(+), 58 deletions(-) + +diff --git a/modules/ice/ice.c b/modules/ice/ice.c +index c7cf9846..f877d7bc 100644 +--- a/modules/ice/ice.c ++++ b/modules/ice/ice.c +@@ -35,7 +35,6 @@ struct mnat_sess { + char lufrag[8]; + char lpwd[32]; + uint64_t tiebrk; +- enum ice_mode mode; + bool turn; + bool offerer; + char *user; +@@ -263,9 +262,6 @@ static int start_gathering(struct mnat_media *m, + unsigned i; + int err = 0; + +- if (m->sess->mode != ICE_MODE_FULL) +- return EINVAL; +- + /* for each component */ + for (i=0; i<2; i++) { + struct comp *comp = &m->compv[i]; +@@ -420,29 +416,12 @@ static int media_start(struct mnat_sess *sess, struct mnat_media *m) + + net_if_apply(if_handler, m); + +- switch (sess->mode) { +- +- default: +- case ICE_MODE_FULL: +- if (sess->turn) { +- err = icem_gather_relay(m, +- sess->user, sess->pass); +- } +- else { +- err = icem_gather_srflx(m); +- } +- break; +- +- case ICE_MODE_LITE: +- err = icem_lite_set_default_candidates(m->icem); +- if (err) { +- warning("ice: could not set" +- " default candidates (%m)\n", err); +- return err; +- } +- +- gather_handler(0, 0, NULL, m); +- break; ++ if (sess->turn) { ++ err = icem_gather_relay(m, ++ sess->user, sess->pass); ++ } ++ else { ++ err = icem_gather_srflx(m); + } + + return err; +@@ -514,11 +493,6 @@ static int session_alloc(struct mnat_sess **sessp, + if (!sess) + return ENOMEM; + +- if (0 == str_casecmp(mnat->id, "ice")) +- sess->mode = ICE_MODE_FULL; +- else if (0 == str_casecmp(mnat->id, "ice-lite")) +- sess->mode = ICE_MODE_LITE; +- + sess->sdp = mem_ref(ss); + sess->estabh = estabh; + sess->arg = arg; +@@ -535,11 +509,6 @@ static int session_alloc(struct mnat_sess **sessp, + sess->tiebrk = rand_u64(); + sess->offerer = offerer; + +- if (ICE_MODE_LITE == sess->mode) { +- err |= sdp_session_set_lattr(ss, true, +- ice_attr_lite, NULL); +- } +- + err |= sdp_session_set_lattr(ss, true, + ice_attr_ufrag, sess->lufrag); + err |= sdp_session_set_lattr(ss, true, +@@ -780,16 +749,14 @@ static int ice_start(struct mnat_sess *sess) + if (sdp_media_has_media(m->sdpm)) { + m->complete = false; + +- if (sess->mode == ICE_MODE_FULL) { +- err = icem_conncheck_start(m->icem); +- if (err) +- return err; ++ err = icem_conncheck_start(m->icem); ++ if (err) ++ return err; + +- /* set the pair states +- -- first media stream only */ +- if (sess->medial.head == le) { +- ice_candpair_set_states(m->icem); +- } ++ /* set the pair states ++ -- first media stream only */ ++ if (sess->medial.head == le) { ++ ice_candpair_set_states(m->icem); + } + } + else { +@@ -831,7 +798,7 @@ static int media_alloc(struct mnat_media **mp, struct mnat_sess *sess, + else + role = ICE_ROLE_CONTROLLED; + +- err = icem_alloc(&m->icem, sess->mode, role, ++ err = icem_alloc(&m->icem, ICE_MODE_FULL, role, + IPPROTO_UDP, ICE_LAYER, + sess->tiebrk, sess->lufrag, sess->lpwd, + conncheck_handler, m); +@@ -967,22 +934,12 @@ static struct mnat mnat_ice = { + .updateh = update, + }; + +-static struct mnat mnat_icelite = { +- .id = "ice-lite", +- .ftag = "+sip.ice", +- .wait_connected = true, +- .sessh = session_alloc, +- .mediah = media_alloc, +- .updateh = update, +-}; +- + + static int module_init(void) + { + conf_get_bool(conf_cur(), "ice_debug", &ice.debug); + + mnat_register(baresip_mnatl(), &mnat_ice); +- mnat_register(baresip_mnatl(), &mnat_icelite); + + return 0; + } +@@ -990,7 +947,6 @@ static int module_init(void) + + static int module_close(void) + { +- mnat_unregister(&mnat_icelite); + mnat_unregister(&mnat_ice); + + return 0; + +From fe8976c0dbae3e985019cd64b0bb7e429112e3cf Mon Sep 17 00:00:00 2001 +From: "Alfred E. Heggestad" +Date: Sun, 19 Apr 2020 14:53:19 +0200 +Subject: [PATCH 08/60] ice: remove ice_debug, use log level DEBUG instead + +--- + modules/ice/ice.c | 17 ++--------------- + 1 file changed, 2 insertions(+), 15 deletions(-) + +diff --git a/modules/ice/ice.c b/modules/ice/ice.c +index f877d7bc..44f2337d 100644 +--- a/modules/ice/ice.c ++++ b/modules/ice/ice.c +@@ -13,12 +13,8 @@ + * Interactive Connectivity Establishment (ICE) for media NAT traversal + * + * This module enables ICE for NAT traversal. You can enable ICE +- * in your accounts file with the parameter ;medianat=ice. The following +- * options can be configured: ++ * in your accounts file with the parameter ;medianat=ice. + * +- \verbatim +- ice_debug {yes,no} # Enable ICE debugging/tracing +- \endverbatim + */ + + +@@ -66,13 +62,6 @@ struct mnat_media { + }; + + +-static struct { +- bool debug; +-} ice = { +- false +-}; +- +- + static void gather_handler(int err, uint16_t scode, const char *reason, + void *arg); + +@@ -805,7 +794,7 @@ static int media_alloc(struct mnat_media **mp, struct mnat_sess *sess, + if (err) + goto out; + +- icem_conf(m->icem)->debug = ice.debug; ++ icem_conf(m->icem)->debug = LEVEL_DEBUG==log_level_get(); + icem_conf(m->icem)->rc = 4; + + icem_set_conf(m->icem, icem_conf(m->icem)); +@@ -937,8 +926,6 @@ static struct mnat mnat_ice = { + + static int module_init(void) + { +- conf_get_bool(conf_cur(), "ice_debug", &ice.debug); +- + mnat_register(baresip_mnatl(), &mnat_ice); + + return 0; + +From 975d6cbe1effa353b50a3f1470d3ae961a2ca06d Mon Sep 17 00:00:00 2001 +From: "Alfred E. Heggestad" +Date: Sun, 19 Apr 2020 17:04:28 +0200 +Subject: [PATCH 09/60] ice: make stun server optional + +--- + modules/ice/ice.c | 60 +++++++++++++++++++++++++++++++++-------------- + 1 file changed, 43 insertions(+), 17 deletions(-) + +diff --git a/modules/ice/ice.c b/modules/ice/ice.c +index 44f2337d..a0fec062 100644 +--- a/modules/ice/ice.c ++++ b/modules/ice/ice.c +@@ -28,6 +28,7 @@ struct mnat_sess { + struct sa srv; + struct stun_dns *dnsq; + struct sdp_session *sdp; ++ struct tmr tmr_async; + char lufrag[8]; + char lpwd[32]; + uint64_t tiebrk; +@@ -303,6 +304,7 @@ static void session_destructor(void *arg) + { + struct mnat_sess *sess = arg; + ++ tmr_cancel(&sess->tmr_async); + list_flush(&sess->medial); + mem_deref(sess->dnsq); + mem_deref(sess->user); +@@ -446,6 +448,22 @@ static void dns_handler(int err, const struct sa *srv, void *arg) + } + + ++static void tmr_async_handler(void *arg) ++{ ++ struct mnat_sess *sess = arg; ++ struct le *le; ++ ++ for (le = sess->medial.head; le; le = le->next) { ++ ++ struct mnat_media *m = le->data; ++ ++ net_if_apply(if_handler, m); ++ ++ call_gather_handler(0, m, 0, ""); ++ } ++} ++ ++ + static int session_alloc(struct mnat_sess **sessp, + const struct mnat *mnat, struct dnsc *dnsc, + int af, const struct stun_uri *srv, +@@ -457,25 +475,27 @@ static int session_alloc(struct mnat_sess **sessp, + const char *usage; + int err = 0; + +- if (!sessp || !dnsc || !srv || !ss || !estabh) ++ if (!sessp || !dnsc || !ss || !estabh) + return EINVAL; + +- info("ice: new session with %s-server at %s (username=%s)\n", +- srv->scheme == STUN_SCHEME_TURN ? "TURN" : "STUN", +- srv->host, user); ++ if (srv) { ++ info("ice: new session with %s-server at %s (username=%s)\n", ++ srv->scheme == STUN_SCHEME_TURN ? "TURN" : "STUN", ++ srv->host, user); + +- switch (srv->scheme) { ++ switch (srv->scheme) { + +- case STUN_SCHEME_STUN: +- usage = stun_usage_binding; +- break; ++ case STUN_SCHEME_STUN: ++ usage = stun_usage_binding; ++ break; + +- case STUN_SCHEME_TURN: +- usage = stun_usage_relay; +- break; ++ case STUN_SCHEME_TURN: ++ usage = stun_usage_relay; ++ break; + +- default: +- return ENOTSUP; ++ default: ++ return ENOTSUP; ++ } + } + + sess = mem_zalloc(sizeof(*sess), session_destructor); +@@ -505,11 +525,17 @@ static int session_alloc(struct mnat_sess **sessp, + if (err) + goto out; + +- sess->turn = (srv->scheme == STUN_SCHEME_TURN); ++ if (srv) { ++ sess->turn = (srv->scheme == STUN_SCHEME_TURN); + +- err = stun_server_discover(&sess->dnsq, dnsc, usage, stun_proto_udp, +- af, srv->host, srv->port, +- dns_handler, sess); ++ err = stun_server_discover(&sess->dnsq, dnsc, ++ usage, stun_proto_udp, ++ af, srv->host, srv->port, ++ dns_handler, sess); ++ } ++ else { ++ tmr_start(&sess->tmr_async, 1, tmr_async_handler, sess); ++ } + + out: + if (err) + +From dfcc0618067a9c860ec988388259145de0a09532 Mon Sep 17 00:00:00 2001 +From: Juha Heinanen +Date: Thu, 23 Apr 2020 08:36:35 +0300 +Subject: [PATCH 10/60] account: increased size of audio codec list to 16 + +--- + src/core.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/core.h b/src/core.h +index 2c30b92e..66c76228 100644 +--- a/src/core.h ++++ b/src/core.h +@@ -54,7 +54,7 @@ struct account { + + /* parameters: */ + enum answermode answermode; /**< Answermode for incoming calls */ +- struct le acv[8]; /**< List elements for aucodecl */ ++ struct le acv[16]; /**< List elements for aucodecl */ + struct list aucodecl; /**< List of preferred audio-codecs */ + char *auth_user; /**< Authentication username */ + char *auth_pass; /**< Authentication password */ + +From 7c6ae23e7fb526ddf15017e3706b58b846551c41 Mon Sep 17 00:00:00 2001 +From: "Alfred E. Heggestad" +Date: Fri, 24 Apr 2020 09:48:00 +0200 +Subject: [PATCH 11/60] ice: fix warning + +--- + modules/ice/ice.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/modules/ice/ice.c b/modules/ice/ice.c +index a0fec062..7b68920c 100644 +--- a/modules/ice/ice.c ++++ b/modules/ice/ice.c +@@ -474,6 +474,7 @@ static int session_alloc(struct mnat_sess **sessp, + struct mnat_sess *sess; + const char *usage; + int err = 0; ++ (void)mnat; + + if (!sessp || !dnsc || !ss || !estabh) + return EINVAL; + +From f07267d241f0d045d12fd5cb025c6fc8bd8c68e4 Mon Sep 17 00:00:00 2001 +From: "Alfred E. Heggestad" +Date: Sat, 25 Apr 2020 10:32:23 +0200 +Subject: [PATCH 12/60] ice: fix warning with ming64 + +--- + modules/ice/ice.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules/ice/ice.c b/modules/ice/ice.c +index 7b68920c..7e1034ea 100644 +--- a/modules/ice/ice.c ++++ b/modules/ice/ice.c +@@ -472,7 +472,7 @@ static int session_alloc(struct mnat_sess **sessp, + mnat_estab_h *estabh, void *arg) + { + struct mnat_sess *sess; +- const char *usage; ++ const char *usage = NULL; + int err = 0; + (void)mnat; + + +From a5415fc2572102ecee0e7a243f2cfa81a4579352 Mon Sep 17 00:00:00 2001 +From: "Alfred E. Heggestad" +Date: Sat, 25 Apr 2020 10:43:19 +0200 +Subject: [PATCH 13/60] winwave: dont use waveInGetPosition() + +[waveInGetPosition is no longer supported for use as of Windows Vista. + +fixes #960 +--- + modules/winwave/src.c | 5 +---- + 1 file changed, 1 insertion(+), 4 deletions(-) + +diff --git a/modules/winwave/src.c b/modules/winwave/src.c +index 9a776c67..53eba943 100644 +--- a/modules/winwave/src.c ++++ b/modules/winwave/src.c +@@ -87,7 +87,6 @@ static void CALLBACK waveInCallback(HWAVEOUT hwo, + struct ausrc_st *st = (struct ausrc_st *)dwInstance; + WAVEHDR *wh = (WAVEHDR *)dwParam1; + struct auframe af; +- MMTIME mmtime; + + (void)hwo; + (void)dwParam2; +@@ -109,12 +108,10 @@ static void CALLBACK waveInCallback(HWAVEOUT hwo, + if (st->inuse < (READ_BUFFERS-1)) + add_wave_in(st); + +- waveInGetPosition(st->wavein, &mmtime, sizeof(mmtime)); +- + af.fmt = st->fmt; + af.sampv = (void *)wh->lpData; + af.sampc = wh->dwBytesRecorded/st->sampsz; +- af.timestamp = mmtime.u.ms * 1000; ++ af.timestamp = tmr_jiffies_usec(); + + st->rh(&af, st->arg); + + +From b01f649c06e34cf7a3f6a6072796b96e182f3088 Mon Sep 17 00:00:00 2001 +From: juha-h +Date: Sat, 25 Apr 2020 15:10:01 +0300 +Subject: [PATCH 14/60] Added video mode param to call_answer(), ua_answer() + and ua_hold_answer() (#966) + +API functions. +--- + include/baresip.h | 18 +++++++++--------- + modules/b2bua/b2bua.c | 3 ++- + modules/echo/echo.c | 2 +- + modules/gtk/gtk_mod.c | 2 +- + modules/menu/menu.c | 2 +- + src/call.c | 6 +++++- + src/ua.c | 20 +++++++++++--------- + test/call.c | 4 ++-- + 8 files changed, 32 insertions(+), 25 deletions(-) + +diff --git a/include/baresip.h b/include/baresip.h +index 7553e28b..0d3f84c1 100644 +--- a/include/baresip.h ++++ b/include/baresip.h +@@ -146,6 +146,12 @@ enum call_event { + CALL_EVENT_MENC, + }; + ++/** Video mode */ ++enum vidmode { ++ VIDMODE_OFF = 0, /**< Video disabled */ ++ VIDMODE_ON, /**< Video enabled */ ++}; ++ + struct call; + + typedef void (call_event_h)(struct call *call, enum call_event ev, +@@ -153,7 +159,7 @@ typedef void (call_event_h)(struct call *call, enum call_event ev, + typedef void (call_dtmf_h)(struct call *call, char key, void *arg); + + int call_connect(struct call *call, const struct pl *paddr); +-int call_answer(struct call *call, uint16_t scode); ++int call_answer(struct call *call, uint16_t scode, enum vidmode vmode); + int call_progress(struct call *call); + void call_hangup(struct call *call, uint16_t scode, const char *reason); + int call_modify(struct call *call); +@@ -712,12 +718,6 @@ enum ua_event { + UA_EVENT_MAX, + }; + +-/** Video mode */ +-enum vidmode { +- VIDMODE_OFF = 0, /**< Video disabled */ +- VIDMODE_ON, /**< Video enabled */ +-}; +- + /** Defines the User-Agent event handler */ + typedef void (ua_event_h)(struct ua *ua, enum ua_event ev, + struct call *call, const char *prm, void *arg); +@@ -732,8 +732,8 @@ int ua_connect(struct ua *ua, struct call **callp, + enum vidmode vmode); + void ua_hangup(struct ua *ua, struct call *call, + uint16_t scode, const char *reason); +-int ua_answer(struct ua *ua, struct call *call); +-int ua_hold_answer(struct ua *ua, struct call *call); ++int ua_answer(struct ua *ua, struct call *call, enum vidmode vmode); ++int ua_hold_answer(struct ua *ua, struct call *call, enum vidmode vmode); + int ua_options_send(struct ua *ua, const char *uri, + options_resp_h *resph, void *arg); + int ua_debug(struct re_printf *pf, const struct ua *ua); +diff --git a/modules/b2bua/b2bua.c b/modules/b2bua/b2bua.c +index 0990888a..3c278bab 100644 +--- a/modules/b2bua/b2bua.c ++++ b/modules/b2bua/b2bua.c +@@ -62,7 +62,8 @@ static void call_event_handler(struct call *call, enum call_event ev, + case CALL_EVENT_ESTABLISHED: + debug("b2bua: CALL_ESTABLISHED: peer_uri=%s\n", + call_peeruri(call)); +- call_answer(call2, 200); ++ call_answer(call2, 200, ++ call_has_video(call) ? VIDMODE_ON : VIDMODE_OFF); + break; + + case CALL_EVENT_CLOSED: +diff --git a/modules/echo/echo.c b/modules/echo/echo.c +index 50f8b6a9..d6e22a22 100644 +--- a/modules/echo/echo.c ++++ b/modules/echo/echo.c +@@ -83,7 +83,7 @@ static int new_session(struct ua *ua, struct call *call) + call_dtmf_handler, sess); + + list_append(&sessionl, &sess->le, sess); +- err = ua_answer(ua, call); ++ err = ua_answer(ua, call, VIDMODE_ON); + + if (err) + mem_deref(sess); +diff --git a/modules/gtk/gtk_mod.c b/modules/gtk/gtk_mod.c +index 501054ec..e606c501 100644 +--- a/modules/gtk/gtk_mod.c ++++ b/modules/gtk/gtk_mod.c +@@ -700,7 +700,7 @@ static void mqueue_handler(int id, void *data, void *arg) + + case MQ_ANSWER: + call = data; +- err = ua_answer(ua, call); ++ err = ua_answer(ua, call, VIDMODE_ON); + if (err) { + gdk_threads_enter(); + warning_dialog("Call failed", +diff --git a/modules/menu/menu.c b/modules/menu/menu.c +index ddab8f6e..78244dc1 100644 +--- a/modules/menu/menu.c ++++ b/modules/menu/menu.c +@@ -296,7 +296,7 @@ static int cmd_answer(struct re_printf *pf, void *unused) + /* Stop any ongoing ring-tones */ + menu.play = mem_deref(menu.play); + +- ua_hold_answer(ua, NULL); ++ ua_hold_answer(ua, NULL, VIDMODE_ON); + + return err; + } +diff --git a/src/call.c b/src/call.c +index 1fdae445..6d820276 100644 +--- a/src/call.c ++++ b/src/call.c +@@ -1067,10 +1067,11 @@ int call_progress(struct call *call) + * + * @param call Call to answer + * @param scode Status code ++ * @param vmode Wanted video mode + * + * @return 0 if success, otherwise errorcode + */ +-int call_answer(struct call *call, uint16_t scode) ++int call_answer(struct call *call, uint16_t scode, enum vidmode vmode) + { + struct mbuf *desc; + int err; +@@ -1084,6 +1085,9 @@ int call_answer(struct call *call, uint16_t scode) + return 0; + } + ++ if (vmode == VIDMODE_OFF) ++ call->video = mem_deref(call->video); ++ + info("call: answering call from %s with %u\n", call->peer_uri, scode); + + if (call->got_offer) { +diff --git a/src/ua.c b/src/ua.c +index f4992faf..2d512de9 100644 +--- a/src/ua.c ++++ b/src/ua.c +@@ -395,7 +395,7 @@ static void call_event_handler(struct call *call, enum call_event ev, + break; + + case ANSWERMODE_AUTO: +- (void)call_answer(call, 200); ++ (void)call_answer(call, 200, VIDMODE_ON); + break; + + case ANSWERMODE_MANUAL: +@@ -972,12 +972,13 @@ void ua_hangup(struct ua *ua, struct call *call, + /** + * Answer an incoming call + * +- * @param ua User-Agent +- * @param call Call to answer, or NULL for current call ++ * @param ua User-Agent ++ * @param call Call to answer, or NULL for current call ++ * @param vmode Wanted video mode + * + * @return 0 if success, otherwise errorcode + */ +-int ua_answer(struct ua *ua, struct call *call) ++int ua_answer(struct ua *ua, struct call *call, enum vidmode vmode) + { + if (!ua) + return EINVAL; +@@ -988,19 +989,20 @@ int ua_answer(struct ua *ua, struct call *call) + return ENOENT; + } + +- return call_answer(call, 200); ++ return call_answer(call, 200, vmode); + } + + + /** + * Put the current call on hold and answer the incoming call + * +- * @param ua User-Agent +- * @param call Call to answer, or NULL for current call ++ * @param ua User-Agent ++ * @param call Call to answer, or NULL for current call ++ * @param vmode Wanted video mode for the incoming call + * + * @return 0 if success, otherwise errorcode + */ +-int ua_hold_answer(struct ua *ua, struct call *call) ++int ua_hold_answer(struct ua *ua, struct call *call, enum vidmode vmode) + { + struct call *pcall; + int err; +@@ -1025,7 +1027,7 @@ int ua_hold_answer(struct ua *ua, struct call *call) + return err; + } + +- return ua_answer(ua, call); ++ return ua_answer(ua, call, vmode); + } + + +diff --git a/test/call.c b/test/call.c +index 79b24a95..cf1b11e2 100644 +--- a/test/call.c ++++ b/test/call.c +@@ -174,7 +174,7 @@ static void event_handler(struct ua *ua, enum ua_event ev, + switch (f->behaviour) { + + case BEHAVIOUR_ANSWER: +- err = ua_answer(ua, call); ++ err = ua_answer(ua, call, VIDMODE_ON); + if (err) { + warning("ua_answer failed (%m)\n", err); + goto out; +@@ -197,7 +197,7 @@ static void event_handler(struct ua *ua, enum ua_event ev, + + case BEHAVIOUR_GET_HDRS: + hdrs = call_get_custom_hdrs(call); +- err = ua_answer(ua, call); ++ err = ua_answer(ua, call, VIDMODE_ON); + if (err) { + warning("ua_answer failed (%m)\n", err); + goto out; + +From c0b5dee30023d2d9ed616f4c09c1995515dd010a Mon Sep 17 00:00:00 2001 +From: "Alfred E. Heggestad" +Date: Fri, 1 May 2020 10:50:47 +0200 +Subject: [PATCH 15/60] ua: update comment + +--- + src/ua.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/ua.c b/src/ua.c +index 2d512de9..3470a13c 100644 +--- a/src/ua.c ++++ b/src/ua.c +@@ -56,7 +56,7 @@ static struct { + bool use_udp; /**< Use UDP transport */ + bool use_tcp; /**< Use TCP transport */ + bool use_tls; /**< Use TLS transport */ +- bool delayed_close; ++ bool delayed_close; /**< Module will close SIP stack */ + sip_msg_h *subh; /**< Subscribe handler */ + ua_exit_h *exith; /**< UA Exit handler */ + void *arg; /**< UA Exit handler argument */ + +From bd01d73d2bab3c021845b5a0ef69cd1f47d1780b Mon Sep 17 00:00:00 2001 +From: "Alfred E. Heggestad" +Date: Fri, 1 May 2020 10:51:20 +0200 +Subject: [PATCH 16/60] net: remove debug + +--- + src/net.c | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/src/net.c b/src/net.c +index d5d3ba6b..82412e27 100644 +--- a/src/net.c ++++ b/src/net.c +@@ -256,7 +256,6 @@ bool net_check(struct network *net) + &laddr6, &net->laddr6); + } + #endif +- debug("net: check for IP changes: change=%d\n", change); + + return change; + } + +From 189e95df83cad1fd33f5cda5e7c74d45a7a0e874 Mon Sep 17 00:00:00 2001 +From: "Alfred E. Heggestad" +Date: Wed, 6 May 2020 18:09:45 +0200 +Subject: [PATCH 17/60] avcodec: call av_hwdevice_ctx_create before + if-statement + +--- + modules/avcodec/avcodec.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/modules/avcodec/avcodec.c b/modules/avcodec/avcodec.c +index 232258e5..9f5b475b 100644 +--- a/modules/avcodec/avcodec.c ++++ b/modules/avcodec/avcodec.c +@@ -260,8 +260,9 @@ static int module_init(void) + } + } + +- if ((ret = av_hwdevice_ctx_create(&avcodec_hw_device_ctx, type, +- NULL, NULL, 0)) < 0) { ++ ret = av_hwdevice_ctx_create(&avcodec_hw_device_ctx, type, ++ NULL, NULL, 0); ++ if (ret < 0) { + warning("avcodec: Failed to create HW device (%s)\n", + av_err2str(ret)); + return ENOTSUP; + +From 448050530c0562c84d5b142e7d0798d340fb5d60 Mon Sep 17 00:00:00 2001 +From: "Alfred E. Heggestad" +Date: Sat, 9 May 2020 14:56:19 +0200 +Subject: [PATCH 18/60] video: make video_sdp_attr_decode public + +--- + include/baresip.h | 1 + + src/core.h | 1 - + 2 files changed, 1 insertion(+), 1 deletion(-) + +diff --git a/include/baresip.h b/include/baresip.h +index 0d3f84c1..d993e21d 100644 +--- a/include/baresip.h ++++ b/include/baresip.h +@@ -1230,6 +1230,7 @@ struct stream *video_strm(const struct video *v); + double video_timestamp_to_seconds(uint64_t timestamp); + uint64_t video_calc_timebase_timestamp(uint64_t rtp_ts); + const struct vidcodec *video_codec(const struct video *vid, bool tx); ++void video_sdp_attr_decode(struct video *v); + + + /* +diff --git a/src/core.h b/src/core.h +index 66c76228..92f4c843 100644 +--- a/src/core.h ++++ b/src/core.h +@@ -379,7 +379,6 @@ bool video_is_started(const struct video *v); + int video_decoder_set(struct video *v, struct vidcodec *vc, int pt_rx, + const char *fmtp); + void video_update_picture(struct video *v); +-void video_sdp_attr_decode(struct video *v); + int video_print(struct re_printf *pf, const struct video *v); + + + +From 0b19c41eafc3fcfe8014bf70769b27d245d19a2a Mon Sep 17 00:00:00 2001 +From: juha-h +Date: Sat, 9 May 2020 18:36:22 +0300 +Subject: [PATCH 19/60] Added video_stop_display() API function. (#977) + +--- + include/baresip.h | 1 + + src/video.c | 16 ++++++++++++++++ + 2 files changed, 17 insertions(+) + +diff --git a/include/baresip.h b/include/baresip.h +index d993e21d..d779eaa9 100644 +--- a/include/baresip.h ++++ b/include/baresip.h +@@ -1219,6 +1219,7 @@ int video_encoder_set(struct video *v, struct vidcodec *vc, + int video_start_source(struct video *v, struct media_ctx **ctx); + int video_start_display(struct video *v, const char *peer); + void video_stop(struct video *v); ++void video_stop_display(struct video *v); + int video_set_fullscreen(struct video *v, bool fs); + void video_vidsrc_set_device(struct video *v, const char *dev); + int video_set_source(struct video *v, const char *name, const char *dev); +diff --git a/src/video.c b/src/video.c +index d2da341b..0f092e98 100644 +--- a/src/video.c ++++ b/src/video.c +@@ -1149,6 +1149,22 @@ void video_stop(struct video *v) + } + + ++/** ++ * Stop the video display ++ * ++ * @param v Video object ++ */ ++void video_stop_display(struct video *v) ++{ ++ if (!v) ++ return; ++ ++ debug("video: stopping video display ..\n"); ++ ++ v->vrx.vidisp = mem_deref(v->vrx.vidisp); ++} ++ ++ + bool video_is_started(const struct video *v) + { + return v ? v->started : false; + +From ad89b94a13ce6808a6ee7f9073af7e7d254e4470 Mon Sep 17 00:00:00 2001 +From: "Alfred E. Heggestad" +Date: Sat, 9 May 2020 18:10:13 +0200 +Subject: [PATCH 20/60] module: add path to module_load() function + +--- + include/baresip.h | 2 +- + src/baresip.c | 6 +++++- + src/module.c | 11 +++++------ + 3 files changed, 11 insertions(+), 8 deletions(-) + +diff --git a/include/baresip.h b/include/baresip.h +index d779eaa9..edace1dd 100644 +--- a/include/baresip.h ++++ b/include/baresip.h +@@ -1449,7 +1449,7 @@ static inline bool h264_is_keyframe(int type) + + + int module_preload(const char *module); +-int module_load(const char *name); ++int module_load(const char *path, const char *name); + void module_unload(const char *name); + void module_app_unload(void); + +diff --git a/src/baresip.c b/src/baresip.c +index a437e7ea..231302bc 100644 +--- a/src/baresip.c ++++ b/src/baresip.c +@@ -49,9 +49,13 @@ static int cmd_quit(struct re_printf *pf, void *unused) + static int insmod_handler(struct re_printf *pf, void *arg) + { + const struct cmd_arg *carg = arg; ++ char path[256]; + int err; + +- err = module_load(carg->prm); ++ if (conf_get_str(conf_cur(), "module_path", path, sizeof(path))) ++ str_ncpy(path, ".", sizeof(path)); ++ ++ err = module_load(path, carg->prm); + if (err) { + return re_hprintf(pf, "insmod: ERROR: could not load module" + " '%s': %m\n", carg->prm, err); +diff --git a/src/module.c b/src/module.c +index c1a20b68..5a006208 100644 +--- a/src/module.c ++++ b/src/module.c +@@ -210,6 +210,7 @@ int module_preload(const char *module) + /** + * Load a module by name or by filename + * ++ * @param path Module path + * @param name Module name incl/excl extension, excluding module path + * + * @return 0 if success, otherwise errorcode +@@ -217,10 +218,10 @@ int module_preload(const char *module) + * example: "foo" + * example: "foo.so" + */ +-int module_load(const char *name) ++int module_load(const char *path, const char *name) + { + char filename[256]; +- struct pl path, pl_name; ++ struct pl pl_path, pl_name; + int err; + + if (!str_isset(name)) +@@ -228,12 +229,10 @@ int module_load(const char *name) + + append_extension(filename, sizeof(filename), name); + ++ pl_set_str(&pl_path, path); + pl_set_str(&pl_name, filename); + +- if (conf_get(conf_cur(), "module_path", &path)) +- pl_set_str(&path, "."); +- +- err = load_module(NULL, &path, &pl_name); ++ err = load_module(NULL, &pl_path, &pl_name); + + return err; + } + +From 98f432979fce6d7e0dc0dbbef544c72cbb559bb3 Mon Sep 17 00:00:00 2001 +From: "Alfred E. Heggestad" +Date: Sun, 10 May 2020 10:17:13 +0200 +Subject: [PATCH 21/60] conf: add conf_configure_buf + +--- + include/baresip.h | 1 + + src/conf.c | 25 +++++++++++++++++++++++++ + 2 files changed, 26 insertions(+) + +diff --git a/include/baresip.h b/include/baresip.h +index edace1dd..7e0c47f3 100644 +--- a/include/baresip.h ++++ b/include/baresip.h +@@ -215,6 +215,7 @@ int custom_hdrs_apply(const struct list *hdrs, custom_hdrs_h *h, void *arg); + typedef int (confline_h)(const struct pl *addr, void *arg); + + int conf_configure(void); ++int conf_configure_buf(const uint8_t *buf, size_t sz); + int conf_modules(void); + void conf_path_set(const char *path); + int conf_path_get(char *path, size_t sz); +diff --git a/src/conf.c b/src/conf.c +index bfe59baf..0f654f4b 100644 +--- a/src/conf.c ++++ b/src/conf.c +@@ -371,6 +371,31 @@ int conf_configure(void) + } + + ++/** ++ * Configure the system from a buffer ++ * ++ * @param buf Buffer with config ++ * @param sz Size of buffer ++ * ++ * @return 0 if success, otherwise errorcode ++ */ ++int conf_configure_buf(const uint8_t *buf, size_t sz) ++{ ++ int err; ++ ++ if (!buf || !sz) ++ return EINVAL; ++ ++ conf_obj = mem_deref(conf_obj); ++ ++ err = conf_alloc_buf(&conf_obj, buf, sz); ++ if (err) ++ return err; ++ ++ return 0; ++} ++ ++ + /** + * Load all modules from config file + * + +From 22a129fd36de5032a398739313f5650c0d535f7a Mon Sep 17 00:00:00 2001 +From: "Alfred E. Heggestad" +Date: Mon, 11 May 2020 10:45:35 +0200 +Subject: [PATCH 22/60] test: add usage of g711.so module (#978) + +--- + Makefile | 13 +++++++++++-- + test/call.c | 6 ++++-- + 2 files changed, 15 insertions(+), 4 deletions(-) + +diff --git a/Makefile b/Makefile +index d41b12f1..8891014f 100644 +--- a/Makefile ++++ b/Makefile +@@ -221,13 +221,22 @@ $(BIN): $(APP_OBJS) + -L$(LIBRE_SO) -lre $(LIBS) -o $@ + + ++# ++# List of modules used by selftest ++# ++ifneq ($(STATIC),) ++TEST_MODULES := ++else ++TEST_MODULES := g711.so ++endif ++ + .PHONY: test + test: $(TEST_BIN) + ./$(TEST_BIN) + +-$(TEST_BIN): $(STATICLIB) $(TEST_OBJS) ++$(TEST_BIN): $(STATICLIB) $(TEST_OBJS) $(TEST_MODULES) + @echo " LD $@" +- $(HIDE)$(LD) $(LFLAGS) $(TEST_OBJS) \ ++ $(HIDE)$(LD) $(LFLAGS) $(APP_LFLAGS) $(TEST_OBJS) \ + -L$(LIBRE_SO) -L. \ + -l$(PROJECT) -lre $(LIBS) $(TEST_LIBS) -o $@ + +diff --git a/test/call.c b/test/call.c +index cf1b11e2..e8278308 100644 +--- a/test/call.c ++++ b/test/call.c +@@ -78,7 +78,9 @@ struct fixture { + f->estab_action = ACTION_RECANCEL; \ + f->exp_estab = 1; \ + f->exp_closed = 1; \ +- mock_aucodec_register(baresip_aucodecl()); \ ++ /* NOTE: See Makefile TEST_MODULES */ \ ++ err = module_load(".", "g711"); \ ++ TEST_ERR(err); \ + \ + err = ua_alloc(&f->a.ua, \ + "A ;regint=0" prm); \ +@@ -119,7 +121,7 @@ struct fixture { + mem_deref(f->b.ua); \ + mem_deref(f->a.ua); \ + \ +- mock_aucodec_unregister(); \ ++ module_unload("g711"); \ + \ + uag_event_unregister(event_handler); \ + \ + +From 6f985896154f8394fc60ff4752860a9136e45c57 Mon Sep 17 00:00:00 2001 +From: Roger Sandholm +Date: Mon, 11 May 2020 10:48:11 +0200 +Subject: [PATCH 23/60] JSON initial codec state command and response (#973) + +--- + include/baresip.h | 3 ++ + modules/debug_cmd/debug_cmd.c | 40 +++++++++++++++++++++ + src/account.c | 66 +++++++++++++++++++++++++++++++++-- + src/core.h | 1 + + src/reg.c | 36 +++++++++++++++++++ + src/ua.c | 60 +++++++++++++++++++++++++++++++ + 6 files changed, 204 insertions(+), 2 deletions(-) + +diff --git a/include/baresip.h b/include/baresip.h +index 7e0c47f3..6efc9bc0 100644 +--- a/include/baresip.h ++++ b/include/baresip.h +@@ -59,6 +59,8 @@ struct account; + + int account_alloc(struct account **accp, const char *sipaddr); + int account_debug(struct re_printf *pf, const struct account *acc); ++int account_json_api(struct odict *odacc, struct odict *odcfg, ++ const struct account *acc); + int account_set_auth_user(struct account *acc, const char *user); + int account_set_auth_pass(struct account *acc, const char *pass); + int account_set_outbound(struct account *acc, const char *ob, unsigned ix); +@@ -738,6 +740,7 @@ int ua_hold_answer(struct ua *ua, struct call *call, enum vidmode vmode); + int ua_options_send(struct ua *ua, const char *uri, + options_resp_h *resph, void *arg); + int ua_debug(struct re_printf *pf, const struct ua *ua); ++int ua_state_json_api(struct odict *od, const struct ua *ua); + int ua_print_calls(struct re_printf *pf, const struct ua *ua); + int ua_print_status(struct re_printf *pf, const struct ua *ua); + int ua_print_supported(struct re_printf *pf, const struct ua *ua); +diff --git a/modules/debug_cmd/debug_cmd.c b/modules/debug_cmd/debug_cmd.c +index 41ff7547..f6290b7a 100644 +--- a/modules/debug_cmd/debug_cmd.c ++++ b/modules/debug_cmd/debug_cmd.c +@@ -82,6 +82,45 @@ static int cmd_ua_debug(struct re_printf *pf, void *unused) + } + + ++/** ++ * Returns all the User-Agents and their general codec state. ++ * Formatted as JSON, for use with TCP / MQTT API interface. ++ * JSON object with 'cuser' as the key. ++ * ++ * @return All User-Agents available, NULL if none ++ */ ++static int cmd_api_uastate(struct re_printf *pf, void *unused) ++{ ++ struct odict *od = NULL; ++ struct le *le; ++ int err; ++ (void)unused; ++ ++ err = odict_alloc(&od, 8); ++ if (err) ++ return err; ++ ++ for (le = list_head(uag_list()); le && !err; le = le->next) { ++ const struct ua *ua = le->data; ++ struct odict *odua; ++ ++ err = odict_alloc(&odua, 8); ++ ++ err |= ua_state_json_api(odua, ua); ++ err |= odict_entry_add(od, ua_aor(ua), ODICT_OBJECT, odua); ++ mem_deref(odua); ++ } ++ ++ err |= json_encode_odict(pf, od); ++ if (err) ++ warning("debug: failed to encode json (%m)\n", err); ++ ++ mem_deref(od); ++ ++ return re_hprintf(pf, "\n"); ++} ++ ++ + static int cmd_play_file(struct re_printf *pf, void *arg) + { + static struct play *g_play; +@@ -187,6 +226,7 @@ static const struct cmd debugcmdv[] = { + {"timers", 0, 0, "Timer debug", tmr_status }, + {"uastat", 'u', 0, "UA debug", cmd_ua_debug }, + {"uuid", 0, 0, "Print UUID", print_uuid }, ++{"apistate", 0, 0, "User Agent state", cmd_api_uastate }, + }; + + +diff --git a/src/account.c b/src/account.c +index 4cf3b6c1..12447f50 100644 +--- a/src/account.c ++++ b/src/account.c +@@ -1241,10 +1241,72 @@ int account_debug(struct re_printf *pf, const struct account *acc) + } + err |= re_hprintf(pf, "\n"); + } +- err |= re_hprintf(pf, " call_transfer: %s\n", ++ err |= re_hprintf(pf, " call_transfer:%s\n", + account_call_transfer(acc)); +- err |= re_hprintf(pf, " extra: %s\n", ++ err |= re_hprintf(pf, " extra: %s\n", + acc->extra ? acc->extra : "none"); + + return err; + } ++ ++ ++/** ++ * Print the account information in JSON ++ * ++ * @param od Account dict ++ * @param odcfg Configuration dict ++ * @param acc User-Agent account ++ * ++ * @return 0 if success, otherwise errorcode ++ */ ++int account_json_api(struct odict *od, struct odict *odcfg, ++ const struct account *acc) ++{ ++ int err = 0; ++ struct odict *obn = NULL; ++ const char *stunhost = ""; ++ ++ if (!acc) ++ return 0; ++ ++ /* account */ ++ err |= odict_entry_add(od, "aor", ODICT_STRING, acc->aor); ++ if (acc->dispname) { ++ err |= odict_entry_add(od, "display_name", ODICT_STRING, ++ acc->dispname); ++ } ++ ++ /* config */ ++ if (acc->sipnat) { ++ err |= odict_entry_add(odcfg, "sip_nat", ODICT_STRING, ++ acc->sipnat); ++ } ++ ++ err |= odict_alloc(&obn, 8); ++ for (size_t i=0; ioutboundv); i++) { ++ if (acc->outboundv[i]) { ++ err |= odict_entry_add(obn, "outbound", ODICT_STRING, ++ acc->outboundv[i]); ++ } ++ } ++ err |= odict_entry_add(odcfg, "sip_nat_outbound", ODICT_ARRAY, obn); ++ ++ stunhost = account_stun_host(acc) ? account_stun_host(acc) : ""; ++ err |= odict_entry_add(odcfg, "stun_host", ODICT_STRING, stunhost); ++ err |= odict_entry_add(odcfg, "stun_port", ODICT_INT, ++ account_stun_port(acc)); ++ if (acc->stun_user) { ++ err |= odict_entry_add(odcfg, "stun_user", ODICT_STRING, ++ acc->stun_user); ++ } ++ ++ err |= odict_entry_add(odcfg, "answer_mode", ODICT_STRING, ++ answermode_str(acc->answermode)); ++ err |= odict_entry_add(odcfg, "call_transfer", ODICT_BOOL, acc->refer); ++ ++ err |= odict_entry_add(odcfg, "packet_time", ODICT_INT, ++ account_ptime(acc)); ++ ++ mem_deref(obn); ++ return err; ++} +diff --git a/src/core.h b/src/core.h +index 92f4c843..5164491c 100644 +--- a/src/core.h ++++ b/src/core.h +@@ -220,6 +220,7 @@ int reg_register(struct reg *reg, const char *reg_uri, + void reg_unregister(struct reg *reg); + bool reg_isok(const struct reg *reg); + int reg_debug(struct re_printf *pf, const struct reg *reg); ++int reg_json_api(struct odict *od, const struct reg *reg); + int reg_status(struct re_printf *pf, const struct reg *reg); + int reg_af(const struct reg *reg); + +diff --git a/src/reg.c b/src/reg.c +index 1be48922..26fcc7fa 100644 +--- a/src/reg.c ++++ b/src/reg.c +@@ -242,6 +242,14 @@ static const char *print_scode(uint16_t scode) + } + + ++/** ++ * Print the registration debug information ++ * ++ * @param pf Print function ++ * @param reg Registration object ++ * ++ * @return 0 if success, otherwise errorcode ++ */ + int reg_debug(struct re_printf *pf, const struct reg *reg) + { + int err = 0; +@@ -260,6 +268,34 @@ int reg_debug(struct re_printf *pf, const struct reg *reg) + } + + ++/** ++ * Print the registration information in JSON ++ * ++ * @param od Registration dict ++ * @param reg Registration object ++ * ++ * @return 0 if success, otherwise errorcode ++ */ ++int reg_json_api(struct odict *od, const struct reg *reg) ++{ ++ int err = 0; ++ ++ if (!reg) ++ return 0; ++ ++ err |= odict_entry_add(od, "id", ODICT_INT, (int64_t) reg->id); ++ err |= odict_entry_add(od, "state", ODICT_BOOL, reg_isok(reg)); ++ err |= odict_entry_add(od, "code", ODICT_INT, (int64_t) reg->scode); ++ if (reg->srv) ++ err |= odict_entry_add(od, "srv", ODICT_STRING, reg->srv); ++ ++ err |= odict_entry_add(od, "ipv", ODICT_STRING, ++ af_name(reg->af)); ++ ++ return err; ++} ++ ++ + int reg_status(struct re_printf *pf, const struct reg *reg) + { + if (!reg) +diff --git a/src/ua.c b/src/ua.c +index 3470a13c..f7a46315 100644 +--- a/src/ua.c ++++ b/src/ua.c +@@ -1239,6 +1239,66 @@ int ua_debug(struct re_printf *pf, const struct ua *ua) + } + + ++/** ++ * Print the user-agent information in JSON ++ * ++ * @param od User-Agent dict ++ * @param ua User-Agent object ++ * ++ * @return 0 if success, otherwise errorcode ++ */ ++int ua_state_json_api(struct odict *od, const struct ua *ua) ++{ ++ struct odict *reg = NULL; ++ struct odict *cfg = NULL; ++ struct le *le; ++ size_t i = 0; ++ int err = 0; ++ ++ if (!ua) ++ return 0; ++ ++ err |= odict_alloc(®, 8); ++ err |= odict_alloc(&cfg, 8); ++ ++ /* user-agent info */ ++ err |= odict_entry_add(od, "cuser", ODICT_STRING, ua->cuser); ++ err |= odict_entry_add(od, "selected_ua", ODICT_BOOL, ++ ua == uag_current()); ++ ++ /* account info */ ++ err |= account_json_api(od, cfg, ua->acc); ++ if (err) ++ warning("ua: failed to encode json account (%m)\n", err); ++ ++ /* registration info */ ++ for (le = list_head(&ua->regl); le; le = le->next) { ++ struct reg *regm = le->data; ++ err |= reg_json_api(reg, regm); ++ i++; ++ } ++ if (i > 1) ++ warning("ua: multiple registrations for one account"); ++ ++ err |= odict_entry_add(reg, "interval", ODICT_INT, ++ (int64_t) ua->acc->regint); ++ err |= odict_entry_add(reg, "q_value", ODICT_DOUBLE, ua->acc->regq); ++ ++ if (err) ++ warning("ua: failed to encode json registration (%m)\n", err); ++ ++ /* package */ ++ err |= odict_entry_add(od, "settings", ODICT_OBJECT, cfg); ++ err |= odict_entry_add(od, "registration", ODICT_OBJECT, reg); ++ if (err) ++ warning("ua: failed to encode json package (%m)\n", err); ++ ++ mem_deref(cfg); ++ mem_deref(reg); ++ return err; ++} ++ ++ + /* One instance */ + + + +From 9096f429b0cbaf0581fbf18623b3ce76ad1fe581 Mon Sep 17 00:00:00 2001 +From: "Alfred E. Heggestad" +Date: Mon, 11 May 2020 10:49:47 +0200 +Subject: [PATCH 24/60] ua: fix ccheck warning + +--- + src/ua.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/ua.c b/src/ua.c +index f7a46315..d2618909 100644 +--- a/src/ua.c ++++ b/src/ua.c +@@ -1275,7 +1275,7 @@ int ua_state_json_api(struct odict *od, const struct ua *ua) + for (le = list_head(&ua->regl); le; le = le->next) { + struct reg *regm = le->data; + err |= reg_json_api(reg, regm); +- i++; ++ ++i; + } + if (i > 1) + warning("ua: multiple registrations for one account"); + +From d20c3a96db535bf6091dab92772773832981bcdc Mon Sep 17 00:00:00 2001 +From: juha-h +Date: Wed, 13 May 2020 22:44:11 +0300 +Subject: [PATCH 25/60] Added account_set_video_codecs() API function. (#981) + +--- + include/baresip.h | 1 + + src/account.c | 28 ++++++++++++++++++++++++++++ + 2 files changed, 29 insertions(+) + +diff --git a/include/baresip.h b/include/baresip.h +index 6efc9bc0..bda9aeb9 100644 +--- a/include/baresip.h ++++ b/include/baresip.h +@@ -73,6 +73,7 @@ int account_set_stun_port(struct account *acc, uint16_t port); + int account_set_mediaenc(struct account *acc, const char *mediaenc); + int account_set_medianat(struct account *acc, const char *medianat); + int account_set_audio_codecs(struct account *acc, const char *codecs); ++int account_set_video_codecs(struct account *acc, const char *codecs); + int account_set_mwi(struct account *acc, const char *value); + int account_set_call_transfer(struct account *acc, const char *value); + int account_auth(const struct account *acc, char **username, char **password, +diff --git a/src/account.c b/src/account.c +index 12447f50..a01d8584 100644 +--- a/src/account.c ++++ b/src/account.c +@@ -714,6 +714,34 @@ int account_set_audio_codecs(struct account *acc, const char *codecs) + } + + ++/** ++ * Sets video codecs ++ * ++ * @param acc User-Agent account ++ * @param codecs Comma separated list of video codecs (NULL to disable) ++ * ++ * @return 0 if success, otherwise errorcode ++ */ ++int account_set_video_codecs(struct account *acc, const char *codecs) ++{ ++ char buf[256]; ++ struct pl pl; ++ ++ if (!acc) ++ return EINVAL; ++ ++ list_clear(&acc->vidcodecl); ++ ++ if (codecs) { ++ re_snprintf(buf, sizeof(buf), ";video_codecs=%s", codecs); ++ pl_set_str(&pl, buf); ++ return video_codecs_decode(acc, &pl); ++ } ++ ++ return 0; ++} ++ ++ + /** + * Sets the displayed name. Pass null in dname to disable display name + * + +From 3a75b7cec1b8ed0b5623e4075d655b8248303058 Mon Sep 17 00:00:00 2001 +From: "Alfred E. Heggestad" +Date: Sat, 16 May 2020 08:27:36 +0200 +Subject: [PATCH 26/60] account: use single quote instead of backtick + +--- + src/account.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/account.c b/src/account.c +index a01d8584..6a922229 100644 +--- a/src/account.c ++++ b/src/account.c +@@ -442,7 +442,7 @@ int account_alloc(struct account **accp, const char *sipaddr) + if (acc->mnatid) { + acc->mnat = mnat_find(baresip_mnatl(), acc->mnatid); + if (!acc->mnat) { +- warning("account: medianat not found: `%s'\n", ++ warning("account: medianat not found: '%s'\n", + acc->mnatid); + } + } +@@ -450,7 +450,7 @@ int account_alloc(struct account **accp, const char *sipaddr) + if (acc->mencid) { + acc->menc = menc_find(baresip_mencl(), acc->mencid); + if (!acc->menc) { +- warning("account: mediaenc not found: `%s'\n", ++ warning("account: mediaenc not found: '%s'\n", + acc->mencid); + } + } + +From 1afa80a9f1ba0320e7a77ba66d77ecd917c22c13 Mon Sep 17 00:00:00 2001 +From: "Alfred E. Heggestad" +Date: Sat, 16 May 2020 08:35:42 +0200 +Subject: [PATCH 27/60] avcodec: minor cosmetic changes + +--- + modules/avcodec/encode.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/modules/avcodec/encode.c b/modules/avcodec/encode.c +index b4eeaa3a..74c656f8 100644 +--- a/modules/avcodec/encode.c ++++ b/modules/avcodec/encode.c +@@ -292,8 +292,9 @@ static int open_encoder(struct videnc_state *st, + + /* set hw_frames_ctx for encoder's AVCodecContext */ + +- if ((err = set_hwframe_ctx(st->ctx, avcodec_hw_device_ctx, +- size->w, size->h)) < 0) { ++ err = set_hwframe_ctx(st->ctx, avcodec_hw_device_ctx, ++ size->w, size->h); ++ if (err < 0) { + + warning("avcodec: encode: Failed to set" + " hwframe context.\n"); +@@ -320,7 +321,7 @@ static int open_encoder(struct videnc_state *st, + + + static int decode_sdpparam_h264(struct videnc_state *st, const struct pl *name, +- const struct pl *val) ++ const struct pl *val) + { + if (0 == pl_strcasecmp(name, "packetization-mode")) { + st->u.h264.packetization_mode = pl_u32(val); + +From ce15bb06bf4157548132201c1113c0fb5ac8b48a Mon Sep 17 00:00:00 2001 +From: "Alfred E. Heggestad" +Date: Sat, 16 May 2020 08:45:33 +0200 +Subject: [PATCH 28/60] ice: fix segfault in connh (ref #980) + +--- + modules/ice/ice.c | 30 ++++++++++++++++++++---------- + 1 file changed, 20 insertions(+), 10 deletions(-) + +diff --git a/modules/ice/ice.c b/modules/ice/ice.c +index 7e1034ea..1d1d8749 100644 +--- a/modules/ice/ice.c ++++ b/modules/ice/ice.c +@@ -639,6 +639,21 @@ static bool all_gathered(const struct mnat_sess *sess) + } + + ++static bool all_completed(const struct mnat_sess *sess) ++{ ++ struct le *le; ++ ++ /* Check all conncheck flags */ ++ LIST_FOREACH(&sess->medial, le) { ++ struct mnat_media *mx = le->data; ++ if (!mx->complete) ++ return false; ++ } ++ ++ return true; ++} ++ ++ + static void gather_handler(int err, uint16_t scode, const char *reason, + void *arg) + { +@@ -678,7 +693,7 @@ static void conncheck_handler(int err, bool update, void *arg) + { + struct mnat_media *m = arg; + struct mnat_sess *sess = m->sess; +- struct le *le; ++ bool sess_complete = false; + + info("ice: %s: connectivity check is complete (update=%d)\n", + sdp_media_name(m->sdpm), update); +@@ -705,29 +720,24 @@ static void conncheck_handler(int err, bool update, void *arg) + cand1 = icem_selected_rcand(m->icem, 1); + cand2 = icem_selected_rcand(m->icem, 2); + ++ sess_complete = all_completed(sess); ++ + if (m->connh) { + m->connh(icem_lcand_addr(cand1), + icem_lcand_addr(cand2), + m->arg); + } +- +- /* Check all conncheck flags */ +- LIST_FOREACH(&sess->medial, le) { +- struct mnat_media *mx = le->data; +- if (!mx->complete) +- return; +- } + } + + /* call estab-handler and send re-invite */ +- if (sess->send_reinvite && update) { ++ if (sess_complete && sess->send_reinvite && update) { + + info("ice: %s: sending Re-INVITE with updated" + " default candidates\n", + sdp_media_name(m->sdpm)); + +- sess->estabh(0, 0, NULL, sess->arg); + sess->send_reinvite = false; ++ sess->estabh(0, 0, NULL, sess->arg); + } + } + + +From 6ecf30d3e776983306273fa7c744fc1bf51cf145 Mon Sep 17 00:00:00 2001 +From: "Alfred E. Heggestad" +Date: Sat, 30 May 2020 09:18:57 +0200 +Subject: [PATCH 29/60] bump version to 1.0.0 + +--- + Makefile | 2 +- + include/baresip.h | 2 +- + mk/Doxyfile | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/Makefile b/Makefile +index 8891014f..e17ecdbf 100644 +--- a/Makefile ++++ b/Makefile +@@ -10,7 +10,7 @@ + # + + PROJECT := baresip +-VERSION := 0.6.6 ++VERSION := 1.0.0 + DESCR := "Baresip is a modular SIP User-Agent with audio and video support" + + # Verbose and silent build modes +diff --git a/include/baresip.h b/include/baresip.h +index bda9aeb9..79985eeb 100644 +--- a/include/baresip.h ++++ b/include/baresip.h +@@ -13,7 +13,7 @@ extern "C" { + + + /** Defines the Baresip version string */ +-#define BARESIP_VERSION "0.6.6" ++#define BARESIP_VERSION "1.0.0" + + + #ifndef NET_MAX_NS +diff --git a/mk/Doxyfile b/mk/Doxyfile +index 946b1f75..3bc3fb66 100644 +--- a/mk/Doxyfile ++++ b/mk/Doxyfile +@@ -4,7 +4,7 @@ + # Project related configuration options + #--------------------------------------------------------------------------- + PROJECT_NAME = baresip +-PROJECT_NUMBER = 0.6.6 ++PROJECT_NUMBER = 1.0.0 + OUTPUT_DIRECTORY = ../baresip-dox + CREATE_SUBDIRS = NO + OUTPUT_LANGUAGE = English + +From c4bfdbe0de24bc321e854c7ad2b619d544d0e5dc Mon Sep 17 00:00:00 2001 +From: juha-h +Date: Sat, 30 May 2020 11:17:28 +0300 +Subject: [PATCH 30/60] Update call->got_offer when re-INVITE or answer to + re-INVITE is receiced. (#986) + +--- + src/call.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/call.c b/src/call.c +index 6d820276..a4d59a82 100644 +--- a/src/call.c ++++ b/src/call.c +@@ -1409,6 +1409,8 @@ static int sipsess_offer_handler(struct mbuf **descp, + + if (got_offer) { + ++ call->got_offer = true; ++ + /* Decode SDP Offer */ + err = sdp_decode(call->sdp, msg->mb, true); + if (err) { +@@ -1436,6 +1438,8 @@ static int sipsess_answer_handler(const struct sip_msg *msg, void *arg) + + debug("call: got SDP answer (%zu bytes)\n", mbuf_get_left(msg->mb)); + ++ call->got_offer = false; ++ + if (msg_ctype_cmp(&msg->ctyp, "multipart", "mixed")) + (void)sdp_decode_multipart(&msg->ctyp.params, msg->mb); + + +From 35cf5d2532869ba92dac29bdf5872a2be88c450d Mon Sep 17 00:00:00 2001 +From: Robert Scheck +Date: Sat, 30 May 2020 10:17:53 +0200 +Subject: [PATCH 31/60] Test also for /usr/lib64/libspeexdsp.so to cover + Fedora/RHEL/CentOS (#992) + +--- + mk/modules.mk | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/mk/modules.mk b/mk/modules.mk +index 59704ed5..e35bb801 100644 +--- a/mk/modules.mk ++++ b/mk/modules.mk +@@ -164,6 +164,7 @@ USE_SNDIO := $(shell [ -f $(SYSROOT)/include/sndio.h ] || \ + USE_STDIO := $(shell [ -f $(SYSROOT)/include/termios.h ] && echo "yes") + HAVE_SPEEXDSP := $(shell \ + [ -f $(SYSROOT)/local/lib/libspeexdsp$(LIB_SUFFIX) ] || \ ++ [ -f $(SYSROOT)/lib64/libspeexdsp$(LIB_SUFFIX) ] || \ + [ -f $(SYSROOT)/lib/libspeexdsp$(LIB_SUFFIX) ] || \ + [ -f $(SYSROOT_ALT)/lib/libspeexdsp$(LIB_SUFFIX) ] && echo "yes") + ifeq ($(HAVE_SPEEXDSP),) + +From 3871768191b1984f23bd3371528372e217cf19c7 Mon Sep 17 00:00:00 2001 +From: Juha Heinanen +Date: Sat, 30 May 2020 16:44:45 +0300 +Subject: [PATCH 32/60] Added TODO comment regarding h264_mediacodec extradata. + +--- + modules/avcodec/decode.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/modules/avcodec/decode.c b/modules/avcodec/decode.c +index b368ef1d..ba5bbbf3 100644 +--- a/modules/avcodec/decode.c ++++ b/modules/avcodec/decode.c +@@ -132,6 +132,11 @@ static int init_decoder(struct viddec_state *st, const char *name) + + st->ctx = avcodec_alloc_context3(st->codec); + ++ /* TODO: If avcodec_h264dec is h264_mediacodec, extradata needs to ++ added to context that contains Sequence Parameter Set (SPS) and ++ Picture Parameter Set (PPS), before avcodec_open2() is called. ++ */ ++ + st->pict = av_frame_alloc(); + + if (!st->ctx || !st->pict) + +From 32f781d2c3022121697f1077a748009ea4dc04d3 Mon Sep 17 00:00:00 2001 +From: Sebastian Reimers +Date: Sun, 31 May 2020 12:07:02 +0200 +Subject: [PATCH 33/60] net: add fallback dns nameserver + +--- + include/baresip.h | 1 + + src/config.c | 28 +++++++++++++++++++++++++++- + src/net.c | 45 ++++++++++++++++++++++++++++++++++++--------- + 3 files changed, 64 insertions(+), 10 deletions(-) + +diff --git a/include/baresip.h b/include/baresip.h +index 79985eeb..d8d325fd 100644 +--- a/include/baresip.h ++++ b/include/baresip.h +@@ -319,6 +319,7 @@ struct config_net { + char ifname[64]; /**< Bind to interface (optional) */ + struct { + char addr[64]; ++ bool fallback; + } nsv[NET_MAX_NS]; /**< Configured DNS nameservers */ + size_t nsc; /**< Number of DNS nameservers */ + }; +diff --git a/src/config.c b/src/config.c +index 8cafa46d..2c350c8c 100644 +--- a/src/config.c ++++ b/src/config.c +@@ -93,7 +93,7 @@ static int range_print(struct re_printf *pf, const struct range *rng) + } + + +-static int dns_server_handler(const struct pl *pl, void *arg) ++static int dns_handler(const struct pl *pl, void *arg, bool fallback) + { + struct config_net *cfg = arg; + const size_t max_count = ARRAY_SIZE(cfg->nsv); +@@ -108,6 +108,9 @@ static int dns_server_handler(const struct pl *pl, void *arg) + /* Append dns_server to the network config */ + err = pl_strcpy(pl, cfg->nsv[cfg->nsc].addr, + sizeof(cfg->nsv[0].addr)); ++ ++ cfg->nsv[cfg->nsc].fallback = fallback; ++ + if (err) { + warning("config: dns_server: could not copy string (%r)\n", + pl); +@@ -120,6 +123,26 @@ static int dns_server_handler(const struct pl *pl, void *arg) + } + + ++static int dns_server_handler(const struct pl *pl, void *arg) ++{ ++ int err; ++ ++ err = dns_handler(pl, arg, false); ++ ++ return err; ++} ++ ++ ++static int dns_fallback_handler(const struct pl *pl, void *arg) ++{ ++ int err; ++ ++ err = dns_handler(pl, arg, true); ++ ++ return err; ++} ++ ++ + static enum aufmt resolve_aufmt(const struct pl *fmt) + { + if (0 == pl_strcasecmp(fmt, "s16")) return AUFMT_S16LE; +@@ -318,6 +341,8 @@ int config_parse_conf(struct config *cfg, const struct conf *conf) + + /* Network */ + (void)conf_apply(conf, "dns_server", dns_server_handler, &cfg->net); ++ (void)conf_apply(conf, "dns_fallback", ++ dns_fallback_handler, &cfg->net); + (void)conf_get_str(conf, "net_interface", + cfg->net.ifname, sizeof(cfg->net.ifname)); + +@@ -589,6 +614,7 @@ static int core_config_template(struct re_printf *pf, const struct config *cfg) + "\n# Network\n" + "#dns_server\t\t1.1.1.1:53\n" + "#dns_server\t\t1.0.0.1:53\n" ++ "#dns_fallback\t\t8.8.8.8:53\n" + "#net_interface\t\t%H\n", + cfg->avt.jbuf_del.min, cfg->avt.jbuf_del.max, + default_interface_print, NULL); +diff --git a/src/net.c b/src/net.c +index 82412e27..271e9af8 100644 +--- a/src/net.c ++++ b/src/net.c +@@ -16,10 +16,12 @@ struct network { + #endif + struct tmr tmr; + struct dnsc *dnsc; +- struct sa nsv[NET_MAX_NS];/**< Configured name servers */ +- uint32_t nsn; /**< Number of configured name servers */ ++ struct sa nsv[NET_MAX_NS];/**< Configured name servers */ ++ uint32_t nsn; /**< Number of configured name servers */ ++ struct sa nsvf[NET_MAX_NS];/**< Configured fallback name servers */ ++ uint32_t nsnf; /**< Number of configured fallback name servers */ + uint32_t interval; +- char domain[64]; /**< DNS domain from network */ ++ char domain[64]; /**< DNS domain from network */ + net_change_h *ch; + void *arg; + }; +@@ -101,15 +103,22 @@ static int print_addr(struct re_printf *pf, const struct sa *ip) + } + + +-static int net_dnssrv_add(struct network *net, const struct sa *sa) ++static int net_dns_srv_add(struct network *net, const struct sa *sa, ++ bool fallback) + { + if (!net) + return EINVAL; + +- if (net->nsn >= ARRAY_SIZE(net->nsv)) ++ if (!fallback && net->nsn >= ARRAY_SIZE(net->nsv)) + return E2BIG; + +- sa_cpy(&net->nsv[net->nsn++], sa); ++ if (fallback && net->nsnf >= ARRAY_SIZE(net->nsvf)) ++ return E2BIG; ++ ++ if (fallback) ++ sa_cpy(&net->nsvf[net->nsnf++], sa); ++ else ++ sa_cpy(&net->nsv[net->nsn++], sa); + + return 0; + } +@@ -120,6 +129,8 @@ static int net_dns_srv_get(const struct network *net, + { + struct sa nsv[NET_MAX_NS]; + uint32_t i, nsn = ARRAY_SIZE(nsv); ++ uint32_t offset; ++ uint32_t limit = *n; + int err; + + err = dns_srv_get(NULL, 0, nsv, &nsn); +@@ -129,7 +140,7 @@ static int net_dns_srv_get(const struct network *net, + + if (net->nsn) { + +- if (net->nsn > *n) ++ if (net->nsn > limit) + return E2BIG; + + /* Use any configured nameservers */ +@@ -143,7 +154,7 @@ static int net_dns_srv_get(const struct network *net, + *from_sys = false; + } + else { +- if (nsn > *n) ++ if (nsn > limit) + return E2BIG; + + for (i=0; insnf) { ++ offset = *n; ++ if ((offset + net->nsnf) > limit) { ++ warning("net: too many DNS nameservers, " ++ "fallback DNS ignored\n"); ++ return 0; ++ } ++ ++ for (i=0; insnf; i++) { ++ srvv[offset+i] = net->nsvf[i]; ++ } ++ ++ *n = offset + net->nsnf; ++ } ++ + return 0; + } + +@@ -372,7 +399,7 @@ int net_alloc(struct network **netp, const struct config_net *cfg) + goto out; + } + +- err = net_dnssrv_add(net, &sa); ++ err = net_dns_srv_add(net, &sa, cfg->nsv[i].fallback); + if (err) { + warning("net: failed to add nameserver: %m\n", + err); + +From da7540a8f56ecfc6807480480dcd4850879fd668 Mon Sep 17 00:00:00 2001 +From: Robert Scheck +Date: Wed, 3 Jun 2020 02:57:51 +0200 +Subject: [PATCH 34/60] Allow distribution specific CA trust bundle locations + (fixes #993) + +--- + src/config.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/config.c b/src/config.c +index 8cafa46d..c4098e29 100644 +--- a/src/config.c ++++ b/src/config.c +@@ -422,7 +422,9 @@ int config_print(struct re_printf *pf, const struct config *cfg) + + static const char *default_cafile(void) + { +-#ifdef DARWIN ++#if defined (DEFAULT_CAFILE) ++ return DEFAULT_CAFILE; ++#elif defined (DARWIN) + return "/etc/ssl/cert.pem"; + #else + return "/etc/ssl/certs/ca-certificates.crt"; + +From 69c427ec589441d449c19d9ea6958b180f6c5203 Mon Sep 17 00:00:00 2001 +From: Robert Scheck +Date: Wed, 3 Jun 2020 03:06:27 +0200 +Subject: [PATCH 35/60] Allow distribution specific default audio device (fixes + #994) + +--- + src/config.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/config.c b/src/config.c +index 8cafa46d..40ab0e68 100644 +--- a/src/config.c ++++ b/src/config.c +@@ -432,7 +432,9 @@ static const char *default_cafile(void) + + static const char *default_audio_device(void) + { +-#if defined (ANDROID) ++#if defined (DEFAULT_AUDIO_DEVICE) ++ return DEFAULT_AUDIO_DEVICE; ++#elif defined (ANDROID) + return "opensles,nil"; + #elif defined (DARWIN) + return "coreaudio,default"; + +From 72824a31073bb5c002051df15a5a34d764c5d196 Mon Sep 17 00:00:00 2001 +From: mbattista +Date: Sat, 6 Jun 2020 00:51:46 +0200 +Subject: [PATCH 36/60] show call_peername in notify title + +--- + modules/gtk/gtk_mod.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/modules/gtk/gtk_mod.c b/modules/gtk/gtk_mod.c +index e606c501..d48aa724 100644 +--- a/modules/gtk/gtk_mod.c ++++ b/modules/gtk/gtk_mod.c +@@ -309,7 +309,8 @@ static void accounts_menu_set_status(struct gtk_mod *mod, + static void notify_incoming_call(struct gtk_mod *mod, + struct call *call) + { +- static const char *title = "Incoming call"; ++ char title[128]; ++ re_snprintf(title, sizeof title, "Incoming call from %s", call_peername(call)); + const char *msg = call_peeruri(call); + GtkWidget *call_menu; + GtkWidget *menu_item; + +From dec8a2ab45195609abc765fe1fe5fb228158ba24 Mon Sep 17 00:00:00 2001 +From: Sebastian Reimers +Date: Sat, 6 Jun 2020 09:42:19 +0200 +Subject: [PATCH 37/60] update thanks + +--- + docs/THANKS | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/docs/THANKS b/docs/THANKS +index f4637c4f..c8b0def9 100644 +--- a/docs/THANKS ++++ b/docs/THANKS +@@ -38,6 +38,7 @@ Nicolas Tizon + Ola Palm + Olle E. Johansson + Richard Perez ++Robert Scheck + Sebastian Reimers + Stefan Sayer + Steve Underwood + +From 36ecb4baf1ea77d35bc05c331f52511b390f1b55 Mon Sep 17 00:00:00 2001 +From: Sebastian Reimers +Date: Sat, 6 Jun 2020 10:18:36 +0200 +Subject: [PATCH 38/60] update github urls (new baresip organization) + +--- + README.md | 10 +++++----- + debian/control | 2 +- + docs/TODO | 4 ++-- + modules/menu/menu.c | 2 +- + 4 files changed, 9 insertions(+), 9 deletions(-) + +diff --git a/README.md b/README.md +index 9b8ee51a..378efb83 100644 +--- a/README.md ++++ b/README.md +@@ -2,7 +2,7 @@ baresip README + ============== + + +-![Baresip Logo](https://raw.githubusercontent.com/alfredh/baresip/master/share/logo.png) ++![Baresip Logo](https://raw.githubusercontent.com/baresip/baresip/master/share/logo.png) + + + Baresip is a portable and modular SIP User-Agent with audio and video support. +@@ -10,7 +10,7 @@ Copyright (c) 2010 - 2020 Creytiv.com + Distributed under BSD license + + +-[![Build Status](https://travis-ci.org/alfredh/baresip.svg?branch=master)](https://travis-ci.org/alfredh/baresip) ++[![Build Status](https://travis-ci.org/baresip/baresip.svg?branch=master)](https://travis-ci.org/baresip/baresip) + + + ## Features: +@@ -191,7 +191,7 @@ the main [website](http://creytiv.com/doxygen/baresip-dox/html/) + ### Examples + + Configuration examples are available from the +-[examples](https://github.com/alfredh/baresip/tree/master/docs/examples) ++[examples](https://github.com/baresip/baresip/tree/master/docs/examples) + directory. + + +@@ -203,7 +203,7 @@ The baresip project is using the 3-clause BSD license. + ## Contributing + + Patches can be sent via Github +-[Pull-Requests](https://github.com/alfredh/baresip/pulls) or to the RE devel ++[Pull-Requests](https://github.com/baresip/baresip/pulls) or to the RE devel + [mailing-list](http://lists.creytiv.com/mailman/listinfo/re-devel). + + +@@ -444,5 +444,5 @@ zrtp ZRTP media encryption module + ## References + + * Project homepage: http://www.creytiv.com/baresip.html +-* Github: https://github.com/alfredh/baresip ++* Github: https://github.com/baresip/baresip + * Mailing-list: http://lists.creytiv.com/mailman/listinfo/re-devel +diff --git a/debian/control b/debian/control +index 97479c63..8e416706 100644 +--- a/debian/control ++++ b/debian/control +@@ -30,5 +30,5 @@ Architecture: any + Section: libdevel + Depends: libbaresip (= ${binary:Version}), ${misc:Depends} + Description: Baresip library development files +- See https://github.com/alfredh/baresip/wiki/Using-baresip-as-a-library ++ See https://github.com/baresip/baresip/wiki/Using-baresip-as-a-library + for an example. +diff --git a/docs/TODO b/docs/TODO +index e47f214e..6199e32a 100644 +--- a/docs/TODO ++++ b/docs/TODO +@@ -4,8 +4,8 @@ TODO: + + Please see: + +- https://github.com/alfredh/baresip/issues ++ https://github.com/baresip/baresip/issues + +- https://github.com/alfredh/baresip/wiki/Roadmap ++ https://github.com/baresip/baresip/wiki/Roadmap + + ------------------------------------------------------------------------------- +diff --git a/modules/menu/menu.c b/modules/menu/menu.c +index 78244dc1..d73f4eae 100644 +--- a/modules/menu/menu.c ++++ b/modules/menu/menu.c +@@ -449,7 +449,7 @@ static const char about_fmt[] = + "| with audio and video support |\n" + "| |\n" + "| License: BSD |\n" +- "| Homepage: https://github.com/alfredh/baresip |\n" ++ "| Homepage: https://github.com/baresip/baresip |\n" + "| |\n" + "'------------------------------------------------------------'\n" + ; + +From 17e91cee2ea26b45794fd855fd885219be4ffdbf Mon Sep 17 00:00:00 2001 +From: Sebastian Reimers +Date: Sat, 6 Jun 2020 10:40:04 +0200 +Subject: [PATCH 39/60] mqtt: fix err is never read (found by clang static + analyzer) + +--- + modules/mqtt/subscribe.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/modules/mqtt/subscribe.c b/modules/mqtt/subscribe.c +index d406e232..2cf2fb71 100644 +--- a/modules/mqtt/subscribe.c ++++ b/modules/mqtt/subscribe.c +@@ -86,7 +86,9 @@ static void handle_command(struct mqtt *mqtt, const struct pl *msg) + warning("mqtt: error processing command (%m)\n", err); + } + +- err |= mbuf_write_u8(resp, '\0'); ++ err = mbuf_write_u8(resp, '\0'); ++ if (err) ++ goto out; + + /* NOTE: the command will now write the response + to the resp mbuf, send it back to broker */ + +From 65a70d17007a968061bbfb9190086b3910e2e7c9 Mon Sep 17 00:00:00 2001 +From: Sebastian Reimers +Date: Sat, 6 Jun 2020 12:07:16 +0200 +Subject: [PATCH 40/60] avcodec: fix err is never read (found by clang static + analyzer) + +--- + modules/avcodec/decode.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules/avcodec/decode.c b/modules/avcodec/decode.c +index ba5bbbf3..20c23d7f 100644 +--- a/modules/avcodec/decode.c ++++ b/modules/avcodec/decode.c +@@ -696,7 +696,7 @@ int avcodec_decode_h265(struct viddec_state *vds, struct vidframe *frame, + hdr.nal_unit_type = fu.type; + + err = mbuf_write_mem(vds->mb, nal_seq, 3); +- err = h265_nal_encode_mbuf(vds->mb, &hdr); ++ err |= h265_nal_encode_mbuf(vds->mb, &hdr); + if (err) + goto out; + } + +From a969faa6faca5b9095992904836b635171178d3d Mon Sep 17 00:00:00 2001 +From: Sebastian Reimers +Date: Sat, 6 Jun 2020 15:29:37 +0200 +Subject: [PATCH 41/60] gtk: fix ccheck + +--- + modules/gtk/gtk_mod.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/modules/gtk/gtk_mod.c b/modules/gtk/gtk_mod.c +index d48aa724..4782fec7 100644 +--- a/modules/gtk/gtk_mod.c ++++ b/modules/gtk/gtk_mod.c +@@ -309,8 +309,9 @@ static void accounts_menu_set_status(struct gtk_mod *mod, + static void notify_incoming_call(struct gtk_mod *mod, + struct call *call) + { +- char title[128]; +- re_snprintf(title, sizeof title, "Incoming call from %s", call_peername(call)); ++ char title[128]; ++ re_snprintf(title, sizeof title, "Incoming call from %s", ++ call_peername(call)); + const char *msg = call_peeruri(call); + GtkWidget *call_menu; + GtkWidget *menu_item; + +From 10f071061b7d08643b17c51ec0417d312cb3628c Mon Sep 17 00:00:00 2001 +From: Robert Scheck +Date: Fri, 12 Jun 2020 12:55:03 +0200 +Subject: [PATCH 42/60] Derive default audio driver from default audio device + (#1009) + +Modern Linux distributions often prefer PulseAudio over ALSA, thus +their default audio driver should be "pulse" rather "alsa"; derive +the default audio driver from the default audio device, which can +already be changed by using e.g. -DDEFAULT_AUDIO_DEVICE=\"pulse\" +in $EXTRA_CFLAGS. + +It completes the approach taken by #994 and #1001 and avoids for +downstreams the need to batch baresip just to change the default. +--- + src/config.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/src/config.c b/src/config.c +index dc8c8cda..cd61c558 100644 +--- a/src/config.c ++++ b/src/config.c +@@ -780,8 +780,14 @@ int config_write_template(const char *file, const struct config *cfg) + #elif defined (WIN32) + (void)re_fprintf(f, "module\t\t\t" "winwave" MOD_EXT "\n"); + #else +- (void)re_fprintf(f, "module\t\t\t" "alsa" MOD_EXT "\n"); +- (void)re_fprintf(f, "#module\t\t\t" "pulse" MOD_EXT "\n"); ++ if (!strncmp(default_audio_device(), "pulse", 5)) { ++ (void)re_fprintf(f, "#module\t\t\t" "alsa" MOD_EXT "\n"); ++ (void)re_fprintf(f, "module\t\t\t" "pulse" MOD_EXT "\n"); ++ } ++ else { ++ (void)re_fprintf(f, "module\t\t\t" "alsa" MOD_EXT "\n"); ++ (void)re_fprintf(f, "#module\t\t\t" "pulse" MOD_EXT "\n"); ++ } + #endif + (void)re_fprintf(f, "#module\t\t\t" "jack" MOD_EXT "\n"); + (void)re_fprintf(f, "#module\t\t\t" "portaudio" MOD_EXT "\n"); + +From 74a831d3e7f3427cdcf3533eb998ac0009354eba Mon Sep 17 00:00:00 2001 +From: mbattista +Date: Mon, 15 Jun 2020 12:26:05 +0200 +Subject: [PATCH 43/60] GTK notification buttons do not work on Systems (#1012) + +* comparing raw pointers fails on some dbus systems + +* find call by call_id rather then by pointer magic + +Co-authored-by: Marcel Battista +--- + modules/gtk/gtk_mod.c | 19 +++++-------------- + 1 file changed, 5 insertions(+), 14 deletions(-) + +diff --git a/modules/gtk/gtk_mod.c b/modules/gtk/gtk_mod.c +index 4782fec7..4581203a 100644 +--- a/modules/gtk/gtk_mod.c ++++ b/modules/gtk/gtk_mod.c +@@ -71,26 +71,17 @@ static void reject_activated(GSimpleAction *, GVariant *, gpointer); + static void denotify_incoming_call(struct gtk_mod *, struct call *); + + static GActionEntry app_entries[] = { +- {"answer", answer_activated, "x", NULL, NULL, {0} }, +- {"reject", reject_activated, "x", NULL, NULL, {0} }, ++ {"answer", answer_activated, "s", NULL, NULL, {0} }, ++ {"reject", reject_activated, "s", NULL, NULL, {0} }, + }; + + + static struct call *get_call_from_gvariant(GVariant *param) + { +- gint64 call_ptr; +- struct call *call; + struct list *calls = ua_calls(uag_current()); +- struct le *le; +- +- call_ptr = g_variant_get_int64(param); +- call = GINT_TO_POINTER(call_ptr); ++ const gchar *call_ptr = g_variant_get_string(param, NULL); + +- for (le = list_head(calls); le; le = le->next) +- if (le->data == call) +- return call; +- +- return NULL; ++ return call_find_id(calls, call_ptr); + } + + +@@ -340,7 +331,7 @@ static void notify_incoming_call(struct gtk_mod *mod, + g_notification_set_urgent(notification, TRUE); + #endif + +- target = g_variant_new_int64(GPOINTER_TO_INT(call)); ++ target = g_variant_new_string(call_id(call)); + g_notification_set_body(notification, msg); + g_notification_add_button_with_target_value(notification, + "Answer", "app.answer", target); + +From 1c7a0ee3b13a402332c69fa48c48ef272a3c64e3 Mon Sep 17 00:00:00 2001 +From: mbattista +Date: Mon, 15 Jun 2020 13:23:59 +0200 +Subject: [PATCH 44/60] fix dtmf_tone in gtk and add tones as feedback (#1010) + +* fix dtmf in gtk and add tones as feedback + +* combine similar cases to make code cleaner + +Co-authored-by: Marcel Battista +--- + modules/gtk/call_window.c | 31 ++++++++++++++++++++++--------- + share/sound0.wav | Bin 0 -> 35324 bytes + share/sound1.wav | Bin 0 -> 35324 bytes + share/sound2.wav | Bin 0 -> 35324 bytes + share/sound3.wav | Bin 0 -> 35324 bytes + share/sound4.wav | Bin 0 -> 35324 bytes + share/sound5.wav | Bin 0 -> 35324 bytes + share/sound6.wav | Bin 0 -> 35324 bytes + share/sound7.wav | Bin 0 -> 35324 bytes + share/sound8.wav | Bin 0 -> 35324 bytes + share/sound9.wav | Bin 0 -> 35324 bytes + share/soundroute.wav | Bin 0 -> 35324 bytes + share/soundstar.wav | Bin 0 -> 35324 bytes + 13 files changed, 22 insertions(+), 9 deletions(-) + create mode 100644 share/sound0.wav + create mode 100644 share/sound1.wav + create mode 100644 share/sound2.wav + create mode 100644 share/sound3.wav + create mode 100644 share/sound4.wav + create mode 100644 share/sound5.wav + create mode 100644 share/sound6.wav + create mode 100644 share/sound7.wav + create mode 100644 share/sound8.wav + create mode 100644 share/sound9.wav + create mode 100644 share/soundroute.wav + create mode 100644 share/soundstar.wav + +diff --git a/modules/gtk/call_window.c b/modules/gtk/call_window.c +index e01417e3..73b7892d 100644 +--- a/modules/gtk/call_window.c ++++ b/modules/gtk/call_window.c +@@ -35,6 +35,7 @@ struct call_window { + guint vumeter_timer_tag; + bool closed; + int cur_key; ++ struct play *play_dtmf_tone; + }; + + enum call_window_events { +@@ -217,22 +218,33 @@ static gboolean call_on_window_close(GtkWidget *widget, GdkEventAny *event, + static gboolean call_on_key_press(GtkWidget *window, GdkEvent *ev, + struct call_window *win) + { ++ struct config *cfg; ++ cfg = conf_config(); + gchar key = ev->key.string[0]; + (void)window; ++ char wavfile[32]; + + switch (key) { +- + case '1': case '2': case '3': + case '4': case '5': case '6': +- case '7': case '8': case '9': +- case '*': case '0': case '#': +- win->cur_key = key; +- call_send_digit(win->call, key); +- return TRUE; +- ++ case '7': case '8': case '9': case '0': ++ re_snprintf(wavfile, sizeof wavfile, "sound%c.wav", key); ++ break; ++ case '*': ++ re_snprintf(wavfile, sizeof wavfile, "sound%s.wav", "star"); ++ break; ++ case '#': ++ re_snprintf(wavfile, sizeof wavfile, "sound%s.wav", "route"); ++ break; + default: + return FALSE; + } ++ (void)play_file(&win->play_dtmf_tone, baresip_player(), ++ wavfile, -1, cfg->audio.alert_mod, ++ cfg->audio.alert_dev); ++ win->cur_key = key; ++ call_send_digit(win->call, key); ++ return TRUE; + } + + +@@ -242,8 +254,9 @@ static gboolean call_on_key_release(GtkWidget *window, GdkEvent *ev, + (void)window; + + if (win->cur_key && win->cur_key == ev->key.string[0]) { +- win->cur_key = 0; +- call_send_digit(win->call, 0); ++ win->play_dtmf_tone = mem_deref(win->play_dtmf_tone); ++ win->cur_key = KEYCODE_REL; ++ call_send_digit(win->call, KEYCODE_REL); + return TRUE; + } + +diff --git a/share/sound0.wav b/share/sound0.wav +new file mode 100644 +index 0000000000000000000000000000000000000000..15b1b72d43c68086888e46ad634b0e5597aaebe9 +GIT binary patch +literal 35324 +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 +zA0k`VYir$Hz +zg`cR1G?FU|e4`;+JxqoM2K#}3D{J_2QM>Ab9z%$q!z*qD$KFOu2VcWH^AB-K}&Kx5DY#0&bRakWLW +zsg9|xVeb3xneI(4w^Olow$wI0q)6NYyVX2m`}B*%!Kf5^8))M1>njGF(pmqI;OX#$ +z*q&rA?wPn&?Fh?QUur5-+&sXV!(Pwv+40lS#nHz8&dQnZ7~30elezJ^2nL-|cgml{ +zK|%+97uS?)!R_X1@J_)cmXbQkQ~MF$}1t99+>KwxDz`Y{V!T1x+l6e7Kv|3u3*n_X`!k- +zUR|wEgEP=I*b#gL@r%I7FT`l#9d5_VV$Hyn+zf}HK9CJ0N)Bi+BtU22b;t^IJ+=v7 +zOmrp%vJ*9uszB`{uMiXQ-zb9o*4L;7<)cCkE}8n6VB(vi8zR<-IkG--G}<&iG>NAX +zp{4vun}d`mUeVP}-K|+2U0pU$QSUbI0PlPc;{NFwq3IDR_A(hxmlhW&?{pYt@y*n4!%bsRv)8i3vcO`uR4}8adCV(X +zB5g!btOK$iDx&{W|0yMuoAO5av`i`sl??Ttx>xI}tNJ8xb_T$EB=lJ~>PGF4vQus) +zq2dGn6!$D$JpGmZ%eF}8?Wp2>;e73^>GU|d +zfitGFu{3=S*Wp516KNioPM(Q<3C{{%1XIuCtKc*H7X@~PYDc>y-mt5M$;xo3ElAg< +zF)Pi*Z4DgHoL5{%_f6L?=S0U^TO-Rs<5T(xaRa>p{ZVVkzl9%Mt+bhKm`Wtk)c8~_ +zwoQ5)XBRe$Mdc%kLu;dVhf2UVU>lMb5#cSc2ObA>i$fo({Zgl?P1SblR<(%6X$Vvw +zzJN5rV)#1pKYEAZ2lLrD+w|CU(Bv^WjN1&?scA$2wZle`06pXHvx!9CSjEV+P@~|! +zz}7&SVE<5=$gS14u&>|zJ?Bl*~szO{X`M=IyVyd=$Bd>cn7){??4`-cGKkz +zgA8>HPiPCBor1`x_$sUiS_f$i&wxVu3Vo!$ME|OHfpq9HJPWCh3g|*Cie +zMU{9t_6Xll4r!B-Z@5C;WU`nAOB-7O`!IVc`#4)8>qYYi;|0TT%0Zk*N5HN00qSje +zu+&eyAoLJA2pfbf;uCSNv_@W}j8|J|xV}vPqeIYd@D!+`9f`> +zzOY4TAU2Y=%XQRZdSiGM8pm5w+YGmjht0LE<877g)9p3vV{Lh@jm-j6k&I2gxJ#@n|p7&I~hmw>@(lb;aCE +zJ@Y-^z=`|NG1+#VTG$X|3h7Q+bq3pNo8pq0>Z$O$+NwT9m4v-SS^eEpX`4yp}TK{}z!u*Wz| +z=ApdwN4lM1hM~3LHvNj4PQJjOpfh1zYp-k(|8Y&&--+8XD0(#fKC~qCDs&{AC2Ef^ +zO-@YT5!x#rD1@FTyD>M-k8Qo2Bi#YdRj<$6$6L`e$VEE}THhPX&>isZ@BnqW7*Fp_ +z-ih^$EDkjTs_sajUT{PxccfnIabh#OmA@#xQ$Ite(Zg$hV!1YinEAgi*1jkz3INeMAgK{BMiF_??Xj)?v +zY_;^q^m*a7BcP<-O5dn`Qgf@56i(hL&y^3!Zsm#c +zST*U3p{j@tlkk7!ZIJbA#!BXFmi3n1mhzSs=CIMpyrBLgs-RZrwlWAL)=(;Me0yX` +zNC{~Et^V)+yMZR50TD~QcZn>*(1?zDSP9mdLuO4sx9jsXW|b0g{KPm-SEZ6|^nB +ziI`7jr#e&hsQ}rWoJFj`S7Xc3wa8gmf`&qFNC0!MKNN+w!^4p_Xf-T5{u`f7#E7h< +zOe`fH<7cs!=q~uYzFF-qJH_YRKK4kGi?5Guk7kRyqwAvEV#N~WQ)kj^g$Hsu{SMNF +z_)eEI)wV|M`CQN3-#yK}E^lei5!YhJck3ln8AETPAJRqZDlO#HX>uKv*YYl5>i_1L2c+_y5+Dy#G +zrXXvfA6h@Pw9-gECS^)pqz#f$J}eJZDyX=2PaCR7^lDH?s3P=TZ=%luzI}$$SuQEr +zM3Ybkkd!K18E!6Dp06*Q7RSpA)Q@^6gvYj!Wexj{-_7@}P3_$rVMol-%TdR^&e{hg +zdV8tr_!jt+YL&WiUz3MoU&Bj-k3qs&)Yr*Z#(z5SEHpN{CgDtf7M>~3pzGKikPqgu +zJhDX`lU+mHSKY(h^IbM)Hv0vOYJ?46iNok@XqtLL$`Ej_9?K@Z$&-moiHxL{%+1bD +zyZL*1ecc1)fjc7? +z&{${eFp2SVy8Pb&|es7|UE`b}_}7 +zA%?+pMd}|h2hWea1#WLU^jxo`{{YF@AK;44>+K-}dA}~huPH% +zxEqsaqPwnZjKg6oW&UNTPIg1P>z(CM{H;`<_^1dR$`|$w1@px7C +zAxPIM>A#U)#AbSe(P#c-t!vNg7~v@67-_FyTV+{iYR~wn9>iO;E6nII#VfBAdkM>V +z4=-><`MrD>p_W(==;|TLNVT(;6(pS~lozmub9!lgzIIjpqfkmEd9Eahd&O1a18^4Q +zl^ZG-)FFBYcnG=?e@Z6lG;_;T*D}~z$Tq}Q+BVi&#xl}Wky%Tv$J-*mw9fK-el*)S +zF(yifa|UnuF@MN6$$ug+ClrpniumhhYCs6-ET7JpO1w32X1EJ}2syD@2_*L>T|n=hH2fYaV#DjDWb=ZU{qZgc{y +z=;yQ(YE&5wC~YHUnS!a?)aD=)ysUSEK0+CAGq^PT34GeoK!a9MgYtYSkNAjR#VtzT +zWE-#r*uJbWot<0F4;DAc4(&Fy5uHJFr*j(jn}1uc*z-7HR~whvRnmFce$JXE9huyuVH;>D#$dX+TcBqIr=+gfYex6$Q4glV=tsOr+%cSvHj9ZxNm$@ +z@eVj)R;iD)*ZLlik1dDy!L#B2;6soB>a6e4L@@0o<(hH@@abu4eXXUw7BVBp(0+IU +z@)OVtUm4Q$)6~^G%xpDRHKo9B&O>d$pCAwP?aDy0CRZ&rF>Z_+!t(*AEf<&&=of+dF9d6?2hQv(dx|U5o +z!LJ93Xn!moxf}j3oG-jDd^l1dh9*h_jayQ9B@I<0dUd1~<|P)A+o-nm5&96_fxZeR +zUyyhX^zvMEEHVea1{H%|>ZkN4dUj|lR1YSR_sBl9A4cOd@EiCwd<@WU9C`<70#lqai38^rnE*4hOuYk2Ff$B_P5Mem;MLZz)s~Cref( +zp<19G$WyEVd5$KGxy=bnAKM^1YZvXK?U}aQmOUm5=N_<*85r33WlH=JT93=R}XYx+9rTz@EfwTW1S`o{{ +z>SHWA3VnvSkq+<y(!8;< +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 +zwdtkcN$5ws3bn*=#<<7qQ63a +zK*RcoZ-LL`uM(g`Ln5u?`%`WB%5qJ;0a}{;XQ*$kVmskj>-y%Nhf<4MGtmpkGB7 +zlVzE$=EJsz&hGB7o{Qd~ceuB)XSS<|qlpzVWzzHTW$*^|nwXt?n)JtJMD~O-gBJrQ +z0<}R4!4@eMJDHfuPUY8ucG7uh1zMOGPPI3@W_}u{f;Pht(=+2&X0M?VeTbxq0oVs* +z09*jdqBqvAf#+1$Yxmr=spj!fZ6K7#NQVl5%(xm3_R50~QX%Cdz@^LY@un%zB +zifo^hFZnp>O}$C!>^g3h5RjIr1E7KEBw{Ar&uFy_v~_X3ao%y|cK>jpt|g9{wz%2P +zOrsuSJ}9Z+V$Jl`#D=IZbR$sO-v}t{Nxqf-M#0tL?y=R$Y}`lCXk7%?#qUuZbKPvQ +zeXv`dr<~UTr!C>wZ#!!lZ2Dm+LUqU2ApyO=nqMvjONj0^GNIfE};gIQ*b*R7pm_=`Kso=>Xrjj_#9dz6aKj?Rsl63*1J^iW}&Y|u9%rHPBQ-IU+@)^2s(bbt1= +z^5*i^_1tkCa$vUKrcA>sVm-1%TOyt33a5lv^@uSvIxxv!*gwTTA|MAXkqxm~$unt} +zxLA?&hG-^HlwQZIHhC?%tb447t(5?$&1zm~ylA*a9RV(M1#$>VYm?P_N*DRMG(s9E +z?UCH_8PKk-rZU=NZIqtWYeU_jYJg|9)E8*$)LGysOGsvs68_^Cam7KVG>Xg3X9yd_ +z&hlXOie44@jLiZW)@tJm^HpmDz-dzs#WB{=)qd7G-~63)u(IE*xdsNt_Y=xF%9jFhCY(8jv2{>nW_gTPcm%4H~i`!pV +zvY7H1Ao2xz0NSm-ky;4(xt^>s^Dk}r=`vO6=AGYSh=fK)n`IWK +zF&p!UwoxL!;(wFYDm#UY^eCXjzDA0NwP5F9)8NM-6uuUr;xCdIw@hrWR);fil-_3) +zEx+u|T!lQnKa5*GfluTPL%b8A>igm+6b; +z9eg;oD84$9Jyao(^tA)KV%hxT0s}%nBTwTlc01ovHtOd=`)(B7#&{3h8yR-1qpu?a +zaN26Nt(JXY+fAh=5HY~@3h4&5w0uaMDD377^8{ZWWJ@j|w +zyiMPat|yx_r$OFZ&}nve^neJ*(*|t2m2-XpiM0TxULJf4TvYoledo)hW69i!7cn$; +zF&d3-j-8GdPWn?n(kfq6YNPbiT0j^w0o{pB#&O`n%MgF??)Y)+56XZHW+;3cstFR7 +zH+l;A_OGA^vItp)9>Q+nPl*fUcuJ(o(mCj()KBsvQ33CRHiiXlsuC4@@IH2Pa%KE$ +zbXDYfctrR}ctYe=^jzGV3Z-+1>w%Kg(F@=c>^JYXRdm*KU-7K+Uia4YdOgiual6@i +z&FG=a;pO16Y722!x?!?o%ooN&mjbo`6WASi6*{NZ(WgY``87<>?xr +z!v~vBngif%1)TN)Q`4}Fx=p08l0d~6q5IkmRaIsxO_X-ZCdI7o2iMT5-`0CUKcVt) +zd$=n68}#I->f^M!YC>Kj6%ZfuE4aDoOKcU^4R&fd7UjnC&BRG^Qr!hjM0*moY23KV +z{MvfTp52MMy0~(<>N(%p-&@<5J2Mbak_(~T%5A}rUJ2SsPeO+SdHvOVsBgS)jlXqp +zcX)j4Lb55B6_DmId=YO(FE(bI8c^EYv6ZpeaX#@URfoew +zm(ojrg)|3KPcrhBb@p3e$9tkD=sD~82+o+=j&0T%CY>%rR6;Ve45=M=JGmnEI=nrI +z1&sbHKBwOn*dKfl?i1^sJeDphUR4@{ZR-T_neJ_zWOjik{i^Mut-WoiHM?aDXyx{! +zi;{n_BgjfdPw2GD;T1oEVQ +za;7vy+$0G6YJLJZk*WYK-b>=-cWPR%i=4qqkUMFXahUy=SK2E%#03 +zm}*o48wg)h4bmV^1pO*=WSYpgQnM+cyH5fjn^-Ux~MB)zcCfcI=Y3*?6aupRAy9Rho0 +zl>no!YWQiWz?5a48*sy0st(x>_n_+`znV>MD9i=^Y^xag_) +zpwv>1kS?pM;gNV{&`$DL1$!4)aZev_!u!fgde^xZI^(wQ<{``}@(KD;Ps$a9o9w{^ +z7W*A;9qJN1`6v3gu>oK|yUWSE<6t&LqoY`dLjUnSS<3;9(p)bvm +zBR~_R52}GI`mFw2Yo$S2RP|`1K+AZ8-Vl<3D$77tA$O5$VAC%Q=Ys9fbFHiTK+Y|V +z7rtLgx*J9#f!4{`K59XJvVxR +zFc@IdLdzhfRtJ?LVu(Cfkl +z(7bq2vIuQtZWv3OTUZR%_SPcSX_j{86UKE0Cshe-Og_-M%RGOWU6*(f9T{E{EE^c- +z@8tjGw}4HKN??~}5Nj8BSF8NkHrFD4{sqf3dsU??QJ83r_rpe^^N{19|2Xo0oHjey99BV|v<#VsPQV7^jR}-oOui;xku%5-#7BG{ +z_8XC*FWPFQjP#tJnr@Toleh;s?X}2=$brZpz=!81UZs|Bdqh-S1y#g8lAW3D=H)hr +z)9IcKdg7BobKtofbM3X?vqtv9>?8$wESKI3Oo7RyIVcB{`)+fvE=$ykBuMGq%O;*-#=a8MttWvJzW +zA1^FhGqE92DOotx +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 +z1Pnvjt?YOIGoUFfwpGNB?ilv7N +zGWf`rglNBlyB2)*+E?rQ@%?dY6YzKVefp_A`Q|rqu#3TGjZf&|i+LUga&PiY6 +z9)h2(k+fWXtfbVWb{%?r$AJnwiS&Vlub#e0yQ`Yj{>o>0fjkJva!%f_>`{HtC<9gm +ze@8x`4;zL-54pOfsP&Nby0xcux}}J@gVAG{NG-&BA$BkZ_UGy(JIC&Y4+bp(+`r0q +z+qc#44HggIjJ{2@=YEl_8psx?uwjPzjBPwLyqkL)W~|Mql~K#P-966vz;+q#diSWj +z_&D7!uM(D|{fToi8cx=~hs%bu!z&`O=;8R;q?qmjF088RJbgF15HCayrFw!DqB>KG +zc}~}&$5UD4QeyG{<+KVi0?9yR-2+pz1hNx4i`~F3SdvVU>nWP9LTAz^s1*5?n2tY3 +zefoWMv0PhBaW_*ppkucwx<0~2r0|Hy&}cN4NDNFj6voJ(wBeY6T4{)yNa%^FuG7GY +zx63Gz(ZTy3TI$8^Cd*>rtNz6<1JU|}Yn#j)>lrQk^fd20Gs<%n*eRT#=v3KL;QLNeTlXK`uaT}r!|SVP=ues72up)FPJ8|g{fj~ +zxuv>Q&x>6p2GS%u!*tDZ!dB1G()^v{Skf__*gxrK58UA>dtXl!KK2uZESR0&QC +zzcRU~<2VU#+VWtSYnon^u*5>)Dj_7;5vI&{0>0q(@OQ9qzDf6nZj=Sph*!*1(+lej +zM5!)juwB)7qr3XPdqoJ(9;YX*;d9a#zn?VV_&wvp*jN^B|G1nzqI)sFI1aWDTf-7*zTypI=&{|B@F +zW2WViEw7VvHTGcMeBOZVj`mU*=jA^%Jht1>A9bKHo +zoueJ~?E9>z%~Opo!wR^&uSVYo2MJUGJbL&bVm-$MTASKMezfXN}(EoXK+{jnA6iY*WV(zFT5c3 +zIyr;yFAoEY#6Y^Bagk-AopJH*Cf+nKkX^jFJWXAky^=LI%zK-Xx6t;QNv4EOX=}1( +zJSXao-i~mQEzx7K0*MdFXXy~|>$R0uS~Vns_QjVF1L2ubo+?7UCOZIK{Q)QOU$H^x +zRiq{`E>ED>*A#h+Y=O^k1?03h$*0s+dOAZI>KV!!t}_Dtlxjmx$NQr$eS^Y4!%l|A +z{+8H}$m;OLQ2)^8P~Y&`$eLI(aU-1&1}hHa8NP%rYMc!}K|WUn&vEZE@S3#9DCHgK +zwmB==e5MA5eq?{NpE^x^oF0{!0=Bw5!3X|4ev5xQn87B8_C;#O^QUU^6QpzMH{=Jt +zhjJMTKo$@*Z?(L)?6Vjx4)c9uV>rV+0V8uAd;^+^yw;w;^MAS0S?R0nR(?^BgUu{M +zzpoEQ0$|SVg*HUPK$FjdPqKw7!uh3y_>f=5%}k$2l}pj7I;qbof4UoA7Fduc>I|ea +zUXLnb2pOkZZrJuZGF+tlFL!BoS69Lz*#5T6F_vMni1Wx(B`#D-pNp^kKRT(LuYL}e +zGdyRuuXd=tqAx=VqmzMs9Es+FBn(Iy +zAe4TpZPjn^Q}0kdD!tWWT6wU7#LyLZ3(`v8V+OHrjYf0WJj$}fQpGaFT+%d=?FKUs +zFYZA6$}w>kH!*oARw+_6v^KEXU&7zhUn#IJcrx5L);@Wgnq +z-$>@=J_sRb+3&}SQmYMbOmCpMaLm=iGtL|KUh@V$W8Hn7H*5#YrNJUG7`jnCq}g0J +zaT?mF=L24UhVNRA-ADP?K(nY(^!LPqG$yW6@*~UeyVPkzT~l|9V$HB0v0t^ffrd{( +z>ooIf<3vMkS|)B_`;jY}8M?j;q^n{Rv4Ge>+zUQOM1Ct@QMRf>wLCD#O#%5I*Ec|t +z3Da%xv;8G^mj;L{g$T512lAU?#%+Qp(tG)$`c^NAZ6q@2#fEQ2((=jL1LjG%)8*Xg +zSZUX-eqcfRGkM50Xh5wjt>W@RrM^V?b->~OnbQkS)~$Uv{V#%}BUy1e{aCoA+(+&Z +z8=2y!&Q`ah8QAJVo@QRkTiA2db;{A$HrYIgElIz|7bAVt!O|6eI2fhfiQMtcvDGm( +z_At&T2B$n+4u4NPEKgNS>j&T&6UFx9xrhct8F;qz#4lka))-nv34IK78gMq467=hmA75=rLp!{4By~)#ZM|wltdD5nB_9hi(T8 +z2Ccyr!GodBk!7*^$-dlcaf$jD5PufKUQ^Qg#!=s$30{+E#_J4M#sQdc+8v~Io$(Vb +z<1|uG=_iCzPheWAhXw_Q1lT}>fFn3G^m}AR%$@Y5zX}1_r`<${5)Y{Vn8`r>&okwi +zKAFauP8$!h0}V1gk%|x_a29)jT!&e756uYe^#a-y4S~BPyzVKCJsxH6D$uhQ0oG4LZDW*?gS*|s|d +zxsJI1^i1^#?iXOgx@S|&*Vs~YXZ%lnfIN$Tnj9IM5LN?j|9zm%D&+)n8v3gT&xeo1 +zu+(P07j*xUSQhog@Xj>AI?gUSg3e~H3|BX2KF4TVKa1Hk!|;O2PfSKd?VyqkbFO9l +zDo#jWPQObx=MX;3W02DhfSdbqbsunZ6r8AMApH;*vKHR*m9(K?%#F+4z^r>idI5H} +z=kiTOSEuOZAa%C^36k4@8PA)3wY0U`ZGCOkZL6&#ERTTGtH$&u>tZo&o}5Q`lsXj; +zMCO8vyM})pQ2)<;qW=oaXp^xzsc-yk`M&-FED|$}0ZYI>#MKQt`<)@DJ>ebfS>h_` +z=x8l&I>!_wXQBx;OB%p$N>xj=isb->cs%?$yf|_wS}sl}Gt)i!)1p~vqm4kiVkpsr +z><`YFiS#_W8U2_lK(!$Iz$ZBeJA#V;e@;6Za@y1AGH}aIfjMUz%1p1NztCUlmEd8I +zky{A`bEBMgNNFa0=a;AZCP%~{M8UHh?gw_Zc9D(Ie(}S}e%vIm%=Smj#4%uUr&>na +zWhV|KNb8IlK#70zZ@SL|WQ-xy1pYSS +z$x{4$DX7*!`w)%jR|dj#)r?y2Sgp2C*4ofh{$#3a907UbEOH5c3{~N6R#$DJY?7_-*>^RiKYq&-tlD3j%Ckkh{5-*OIaX}Vi_W}4v= +zTphtL`sE7RDWn&kNxfmF7$fFfFqLfKEa%E{b#N_mmUh&&JvB$z19TpuJ2GE63v|+^ +z_}s{6U~+%+waRh8GiI}|b6|gHTJ)bp53Z6_Ld%aSk-#kr#``_at +zoe|qu%Ms%#W(zq7o1yPfjM8=Rt+Y?oO>RvLP3%lmPZmvehWlP~`2U(OyVW_`9sL>D +zK7IxN;XJGp#-YQ|f59`J{AqX2TDSdrT$G +zEzG33m8pbronb58jNFes((eOfeT2K2bjD9a&W0*OPW#et415f<2>lUx9eb0k%}2o^ +zaT_~LO=oFKC1{G}^_=w{gq(I|#$4}f_d4f)w!L5-7!2LNOBy0i<{PCZ#Pdg6g)O1J +z!REo+!MpHjR*a2H$S`XhC)H5>`e5t`v4?8N%rW!^k3g8+&${8>UV%aBOXO&x5^lxp +zXnpXlw$m$v9V+|(8jF*_?8Rf-@S?9$FCHr6<%}N*Sq!(3xA8Vw1Px +zuVbxZRb%U8&yA{s}Z(VT1b1t8wm92*P +zhCw3@7^Y!TNp4M|M|5MTH&|w`%H0ga#reIpM!90OrpU*dXE@g&8Ut +ztC$7LU$#MZ*=}}hvTwKL2S5J-_6eO0N!(u5B+cRqCD~Y;usPVqUk14U=Q%rl8G+)V +z+mTQ49_eD>+be~ZA_>C=(_`xj#{<_0&lv9$@Uw08WP$;5h3%+$7Fz`9qy|V@c_*6r +zEvbzOOB{`jjrM~%-QL*e_>g4fbSb{N*ivqz{-y_!0oWEW=M^LWCTEe&$hSmo*xGOo +zSe??)-=H8R+5{&UH~a>U0>{!Md?)0zX-cO*F>?(+4QcR*pay|nPCX&6W22Cm+FITX +zj@hhalX$!6b;xOnP%Jn+G(DU*+A#hz8Ryzc3H1~@6X>KHCe-%cQPXXK>BD~+=Q9%C +zIi5+bulC25F2)V?0sN4DPLA*cQ+47CBV9rl1Lyo5{j2@P-uf9#(AGj%4}D>)?jDS0hr=KkSdg4e{a +z-9oPrm+AfNAhQpMoLf%ab=ZB&UC&+EH3A5+q2^lbSt^bh^k3vU(2c4SYYC^A6foBI +zocxfy*YZ~j{uBNuRyg&L&z9%w-Eo#4!_GA4v(KbHDKD5(?&_8}MZ+*rd}-EqOS +z-y?amGqz?}w1MX*XXnc5-3$x+Fp?8qeUW~Mj)lW=H +zec}3wKDnoM6nTj4A<9$z=sL`0<{NX4X~3+aPf@4H-H_9+#12Bn*B!x;A25Mv3k`?a +z=pR@KoFU#3tH^@XWNJ0_C-sfAlTmyI_7M51-B&hBeTB+g$yB?MZ+)mKj;wTU})1!I3p6Z>`NWp@dU8(rpjz4lO!MFm(XW=rnX<1Chw5k(o69RSZa<*J>+7FsytUWX!Z5mFfS{QIFR$e +z2lmtc22V{#xrS6mtSwC8IqocXm#fUHd?9g%G)7sheL%Y4L2@c1fhnK|oaTo(8auZ+ +zhdTE=I@u?~Go}q&m_7tPvIfcmA)HzkpC1VaU->)u#(>x4XwCy)7PxjUMDgTqZniW_ +zn~e>oaA#Q7)mtfI#Mm`!9itejp}87ivK+4>_{ATcCf +zD&8Z`Lrz;Ubte56UsB|y^GYx6ot_^pj)ky6_zrwMB$i*XX4qzMSC>at>JI&~wplv^ +z-i%%PIAjWX6eEB$`;V#s^Q4(mh`QKv{habh^m7GLOX7{9 +zJ;TAE6j&d47}yj&0S~~=^5+bt@qTu(0K*+ +zaik5UsQTdBTOy?))q4~h7+Dmm8(bEc2steoS{+^$je{d)7~ex`2^NW$SYvW9UEZ*o +zU1H2*s%N51qm3&er!B!;r~V*6tAqiuVOUM{BA9fP9sr147 +z;U)0B*cbE_{L~rRc;$k`3Dx0)5Evn3YBhsLkP7bgBq{+(XUTcnrDJDtF5Q^O2@ +zo0?evu|J3I#Zb>%&wen~^mFxaJg{CfwK1##i^M+li1;quG~tT259J9=@y*EjHD_VY +zVqe)n-;g_6F|iZqB#ZhO8Atq}DdP>Z(e~KRIFCE;Iy*RfIg+*lR>icDwE|=P4(pB> +zwX|GPIwfr2-*Z#BiQEmYBVSm^6f1$jf4nkB9RudM|5@yP| +zgVa~bE9I8@NNMS{%&60~%CNJjB+--_$c$w>nRMWy+SxwaINK824rqS1G^Gqx=;FkC +zWQZCOr*T!2m19f8U4r}lOMG@;4WG$BBd{z~3T~^H!6GqDT?o^M{szrd)uuYCyFYop +zdTVFIyt-!$G>iVVJuzpoPI?y3>GPBpVo&aA@?_i*OGdgz8byvrR)XVvYNB6i26s-7 +zr1C%~RY7yWhBch5N*$$MQD>-j)FmK03K4bi-q=bY;d=t16w@t8e!JG>Wi+F2QAy^TH9UEAynEmmVwx;@@fZzE6T!^w*=C44iO +zKaksh9&*~({${~?;lt7KiFxT8f?MgWFUDq*1)i +z)S|i(S=a}p7v!(G;C&X6Z^&=t67ckIs_N=xZ47jUSHO-i6n+mEL36mUUQiR1<8W_h +z#M}H{?jrQcPNz<$oaxtTf?p*}l`bgNfKEC~ETP-8DN{!p95+$zsW6$(E@O>2(|? +z%oQ!r!i=kB^=dGS-hxKKGX55wfhxf99ME~N)Z73YYYFvNbsYTE546{M9k4`hS>_JL87unX9AYFUXW8F=vUNNMSV# +z`r=iS2Vxr{&TwYvVlWWg75Wff5M3GfCC74k#i#OkO@M@|HOau9wm%Izu;2OE;|7(n +zGb%7g8;K!!TX4*-KvXzU&(^oXrm10w9es?h$9mx|;sB8U4aiF5JK{H@A#TK$B5&c- +z6s3p|0(e}cEn1k#grX!`}7tt-y!!s&Jq+Mc6ST4*IE(yPh +z-^8=h4tbR_6%0x=oU8x$X8(V4+UD9wa8AsYmq1G(D*Pp62p;&iK_uaM#48^)6={MW +zAnnWmcAaUlr2^!%%^ceuqa5e#V{Hd5{Y*y?+kCqbH$CgZrbx$^Ov|x0BKkJ4Ip0N#VePPn7>^D>*CAQZy8Q$vm}_Eb;V|U1;mhO(wFU_GqoyaPFHS&!l_XrEtD(TC~-SI9lC#IP(Lw(*=?L)d1Bk;@HyAHj=QS4 +zsyQ#)|Ffla*rXWtuHN>?Q%r +zG#PFkt{UDQUKa61cf|K5f212jvna1RM9)G;;6}0|)r|f@mt^uX|I(G{5!8G#i&%uO +zhD1yOr}HncQ6vKyiX@Re=tOwBv>?inDw$2WpnF?}zC{@*fmnwJQ81IMJLPsF&A&)J +zPMG3bqiZ5)Boyu*X&-$C?aTV3@al%08XP?9^v? +z#&k0Ou%xYXY-?;~ZJn(JEE`Nu+4sz2>N0U2dx7NBcfk~ThWtfZCe4*DNu}gFGBn?y +zm-0%R0>=Lq(BNnS2FR}Z3T=zJKYZzq#5vbZc94AGRU1QIkkm +z%>&8%pWFtpA#_N5iGPUKOVE(hj!z@}KB0$XQTC~M;n^_)t%hC02%N$nWBsvLz~@dv +z?&&4;Jz7hxI82q6YlU?VSnL|uX53A#rEI`I?uOszR;InCt)^0@7Dkk9$yBGFkmh3YuwnB8Aq%@E-GedFRn}^qR+#1L-m6n0+!$-@KHRAq+^4UUd}Jv +zkvC{f(c8E}exm;}%wcO9ml~%TUB({lUy##Asa0eZB7|K*FF>}}9`^UZ(;f_~kM-f; +z&iII~#LD3ZVA~B%yn@s9PHY1CGd}00%Ftm*nT8S;C?vT?CQ`>7!eJA*#egRL^A-L~N +z2CME1B`p_#4U(_LX<|Qdjp&koNR%>8Ev7rr5_mUq4VcxR826d0T8G=J+n3q<+0WVL +zTA!GA8X4f_o?(6TmvT$tbLwFHcBEOTIcyuGeXk)y8R;({oEPpBJDhCGSC(r6(OQ+} +z*uLu7UC!kqoxyw1b*c`CqW;MAM +zU85cr<@CnHj%eX<<={tuF~0-0SzHMW4y}w7h@+`od^>5SdKtNj&w{QSX54LhVP0%` +zWZ7z=EOzrF;~(q}<~?O2TjBfBGKf$6tmaX-D*ct=$}y#odO;loR;U-iP9%`V=s>g; +z%0vFJTwkblP!VN4+}j@k_dhj#0IbJCvP|k;>Pfl|ZxgG7?Y|dN1usY$49|=Mfdtv? +zaJne>PAGnF> +zX{m7XR#H!{NR5P?_9b6SJPJg>IB+7J(&qpbF$&nn0pM6&4k=$9_=(=Djn&u624ywu +z5NiWZ)dIjyd`4&Ebx4A~&iu)~Hk!>z^AyV_OEb%Cb0g@wO=SqGCRija>I-ofw>EhT +zxai8zAzkAy$rm0ZuYlj>-7vFenS%{ITWZE?PKPw`I9cmlN9Bw%|E +zI%V4@^CKbS-s`y>9 +zF5R8UWte1`WvF7Z3B +z+|!q={T*9fZQvvs^WO8Sp2hANPM__$xeL3B+Jr5G>BBM3n|v2_hMz;%t+4MF?1xc& +za{?PeCBWy^H~mH!q;Psad^@!atk|_IU#z%&tNpaS1?05FtP9N9u%WCCZ71Ji*O33T +z!s-Rs5b{jyB9;@|h$qA*5-oq0Z$Jlsq?Q++FPv^ik}%IT>#hDTr|m0uk@|>>gzx+$ +zz6-wycKfA;^3p%@cJ-=m#by!+J;CtQ$eUkUJKIM%jLrhi!;S;?Oq2<_VMm1KjCV?OP4@@=n +zA*U_nxePt4-e3jEVp{>ReF|BiE|qSQ?w+S+_FwjW_GOl>8x+(yjblqrXN)c6%Hp)uD3#nL>XrA!& +z;N*Za&6PiZX_)D_@c=v6fH2c3 +zp7CVgXA{J=mK00nFShFa|7czal~CaC`>C>;l2h +z4Nhl*&$VZQN#ss!O{`9;sb`!K-0H)%vFKWuSU-YIeXVTE96enJ-2FWBJOjs-mdxODjxgONYYJaI)lpMJY?2tSy-I6lp>#$)ts1AU;yM}3m +zfwmZU_9SdgZg0)74YxJ79k4F4giY_*Ud#e=5cZ3HM6M^qQ_rE(ydktNP!Dq2X1<%g +z@BVCXtKW|~Q>Vcqu~FZNuLYaeKbC*(e}IEw3w)woGS0*HgKSqL#{_Fj(`Tk7c^J*q +z&cOTUTB>VeXiSgfid+uogqKG4MT^Cygel#O-zKKzs#-_r;RW!dut4xs{^t8>GfJrDSg|CiIQz-EJIX*}7P@_;2dN+;;uG)hx2-}Kd04oK5YiZx`X|@GvOWq`$Xn~ +z*M#>}cmH&lZ8uE$4YkP{XhpSwxG0@JkuSO_v?tI4PS&%04u7ox4+hAWu_sBI?<3t% +zooIEU0Da2v-MGsfu$;1@wwKl#)*6=Yrl!Wph9&U3vJJn1+K`o6JGCqD{Eg*Oa%=gp +zTuu3@?1ndAA#kqNM^+<8VXE{SvO|9XCbP3J+pZz0!b|=?`1EI|Tck&(lj*lyVc~&z +zA8h|?kh(ZRU1jJo=^EuO;i(UumLo2w6SFU| +z+&8`e$H-o67knejNMHD5dU&c+@_1rW;!vV)vUsW!_>&q4pTsG$L7f11y<5m?@QV+J +zq_zcc#(x4~W=4AG7l3_y0p^U;Dz2@9CeCo=7@8ZJi#4eybQ{AV_KESZsgk*yIl~N; +zl<}0|3Oy8T{|P;!ycHjEpOYoyw<0$~H6f>c>{tDF1LZ?yptFB0Y3HwjMPeN`pK8Z` +zHrwq_oU~`JcPE%?He{^!hTSKfyzQa66}yhQjs>)`@?O}=zByheIw)K)G&0yOcqe!( +zR69~A)+g~TwUX~7*!#!9A+6+4T +zUGStI1-UOGUrt6zq^o;d3_fGRz-Hdart)Dq&C`(nx +zDrnI9;jScRMbC%+2FvVyV9hS)9EWC6zYrO$tFd2AzgV9Eh`P^l +z!_mbt+MXLokUpj&>`l5O8O5@ZS=v?wmCuORg~DLi_Vcx%BfDChB2ADd{C_#^GW{pm +z1AVZw+@yB_x9m2Ub3T-GcuW2iP73$H&K4F`si$JlQo0=skl9p>DQqldj$8WJhT3sQ +zZpRV(d0Q>(@8&10KtCY*pwHCbr2SmuWXaf&aDiY?e?{1%bvI|F4+*fL?8w=8dH4yU +ziipU>OYrUOw~lli2Nt9soB$TW{^-)~;^4x1Y~I5*r{Chkki4*au>yZJbuLjH?CNu( +zBcuOC_r*TM|4f!lXYwWBgjh>0pua-eVhi!{gohkVjw5T6kBQ2}Wc)bx6SBUUKzAO8 +zzVI2KlXf9P(LT_L+W|Q(PvOi@W|<*rAlb_XuffI~phCnaY#CzFhRWB3yxcZ8&G!Pg +zZ8o%NzX!XA`iGHd!T8nW9j>T!Q=N~tC#{Cfrcc(Zjv{W&Qxhhf*D{cd4W6|w!odMQ +zcn5xh_qq?rm{qC%@q>|Zp{Id={k{Ba{C@>*26uHWe>S=JEP%HEw`V(4N# +zW7=W%S~4vc!1({oxR@ot5WbHTVLIkVcELueM`|M#R}r;}x=k$$clIp32K0$~qUYe= +zcNZOpeg)4nrQcHrDN$%eC-@c6T0(dpOi9D3Q4m)m!!qz3)e*qf%nXogtq(6T! +zJG><(CwK5;<<5Fp`~%gL?F!x8e2!Dj)2_VkxT~To=BNzbp`9kqP?T;;OhE5w%@n8f +zE3^?7q#vawr52`QsXgf}kki`4A<`}Am(&IWjUCws)AvkNhlx@dWU2l}%L}~KeWkTR +zDoMGZvQFuscGkA)xzRh=DzK6^VJz$+qYd)y97`>0A?pguTr*~}uqSDqAh6fkGP!|Z +zPg@clqgp6W@H*6yU%+0sp@E{IF_8xGIjMY*l?%Fxhvw&&9&MS^lk>Hr|doH +zdFmSASYT}qyEHS&Khg8>{Z7Mtb7?#)YL4UypAUTj@9~*PlUSw1fYd#%DQuvqudPOo +zV~b&AHMEqrAB5&Y0l2G{$~Xg*^#|7?#|i5o({1J(n46y~pM(PG6Y)cl!eEkm +z0)|$DZ>#UQe`D}_cq=?{G1x7tzz(Og#8pV%ubDPlIO}6uQM+dAWoriNl+JS-O^?H=SZY;he3Cbv;A<*X)^ +z6srnj`2e?%JI58^b9h#qFLi>}>UE?R{)Ftu{9tRCTU%}RL5}9m{mv=QtMF{wWNl!c +z1ZUwlczI|9pAW +za9nl$;(6`~dir@9ySF(1wudYh6VF^FXJQ@ocHkh+%bU{!lT{K^~# +z?#kyC17KusrQOqQaPxT&-Hg@vV!Rpt8v7kv1;+p4$U<O;W0uoqMC +ze!y3k2S3|fwu|wL(PnyY{M}fSeGCTBmqcIeg#JbeixgiYwKLu^Iyf8)ih&h@tATmJ +zpP^TgR`J@Y<@~QQqWiG>)MD0RsbY^f^Mlvq1mv{aGS+x~?mf;gu#Y1@+l3m9Ez&N6 +zW%gAv8Ji#36>1;c9GDI{trnago*8``pOR|D*OE%BByt)nMz)~chRN(iBWtPz@|q#W +zWsuXBVs2CINgvp_yTVq;nQ+cr4eaAqEvb!#HuNn>o=bqCrYt@Twy0FW&tNfdc4zCw +zfC2hfLdE+0_H>Cky>8`1cIJ97=8E%0^;;|Icy&s`P~mZFTK@(1TlE$xJNsG*b?UB +zYz^QL@*&5RvEp1V1=&>T7!w^FX&pHOIql2Xm_+B)2yVCVL&~LA((|EDuo^@cvIw=6 +z`j^^IHKk6HX(E%Tfp>>{`xoFq3^2zv!JgVAavXBn)%Z4IKTNCth7FR7nWM~fp#DAd +zJF+=33~Pnx&@3{EtGTKvTjJN)0obFJ2)zz93pb6th<=L?fqq)HR9t(GE`rT&2Tbp+ +YM;wg%jmMgi4PKKw-kzRLunFw{0l906IRF3v + +literal 0 +HcmV?d00001 + +diff --git a/share/sound1.wav b/share/sound1.wav +new file mode 100644 +index 0000000000000000000000000000000000000000..e100268bf35f4880439adb0334db91beea41b47e +GIT binary patch +literal 35324 +zcmW)oWt0%F4g~ +zkxt!v&OUoTC!Je0Z_X};pze*jH5-yOp`aClAQ-%w9)+MqJzxldtk9qV69zm7e*-}S +z(38Y_`hjVT<%aFJqk^lR`;|NC-r|1g+T(OMD%&iU3#R&pGh_+;DAEBcq?J{sNlsDY +z>+(;yque{LDIex<375nN(tmPD@u_#TDY~RLhT1{7po2QESv66)A`g;OVFO=})7emp +zNsUVuO_oV6OSVZ3V}GTy`FCP{<%{+Yyd0ZB4m6Z!o>rgf!C%4)w2pEUVN5zFc_#iXIyo{u91Fb+6$-x&|B5t=1>(1px7iO| +zTA*Z9{h-Z+{ICs8q06w(m=8OJHOBU!Ul0g!!{wmP`WlT_m#IC~!D_bJQY)ZWgBHLv +zdIpCVZB87D@sZWxxuN&LO~Hr3tkAr$Au7k(CKK!z +z9+q2c`(PbwP7N`(H;1j29S+xg_Z$!AHF`IBPP%)$_Bl4%8e7hpP(xjE9Ci-QqaRhK +zNK1tXw?BQ3EyVsx$*DhCGVM=uToEBdJRp6Q5f#ziYLoQ;bQB8f8+1}{qIFRlE4k%> +zctzO7@8jO2>!kziH@0;8VfqGV7LJQsfqWV{AHu>q|HeN;AxGq~+3L*jW<3a<`r4tj!y;HY5z(3r3oc^dni +z$i;nl*b0bW3(Z1520sz +zYVv7pP^4XGQ=q+ns;_{rvG1o(^DhrB2!D+(PK;-l^LHdds|WYS+K?JO)HKCh$~w;0 +z(SFPR$ev|CW!r6SX*tWJj7~#IsxHwV+k-IhF@3RiK&8}^$~NVJQck_2&enSB^`YW0 +zirhzrqVG^EMqyXc(r7273j9`YsLfE;OPhps+-CM%Qi@NCRgboaoDDAs-wKb2%#Gsl +zNTM?PklQbwSHgM~bQ*DtzGPZ%@z`5AUGA}-ZruB8Qf{MNvd*kZlYSEapFLtJGjG>*~jTR`~{(^v`daFxi!1~O8*1e1Z{-| +zKoPx#K3Q9&E>vd8e@Sb^`$B2q9>14=#5WKyF}L)WTt@Zkwc&+m0v}3!FjQwoS;pGR +zJ2pA@x|+EsxvRLRxLP^?vG1@}Gfy>6rJCUhc%@cJ4)ZTrHZdqxKJsTs54ZyR{Kx!d +z0=a`@Lq#JcVB9K?qGfgdC!vOYc3FvM8ilx>Qe-kXM)HXFwnqLhbZu~i7K +z*H8yY^Z9cuo}3?R7WpG|C$QE3+xL$z$G6M>IxsD?G$O|?C$FYsLVabU{u{|fA*u4Jk|d +zEX|UeDBf@P%LT +z?eX35_4khngo6*lVsuo(!~W!Mh})FGx)GU$WfQxoT862{zNX(M2NN<)G+i>@Gwh=? +zC@XmhABELIOCXKl)leSjmmbzDL8qX>a5JO@+7FwBZzKL8*HK;R&va2kA;UAeI9-bR +zK-9!Lpe5iZS}Wy*Xy&J|YT|foTjX76L~wB6ssFGa3OoxqLyyA2=+Hz}wlP0T`k>Z< +z*JCfqZ-!$`8EacR?(Ew>Hgu0I5#>1Hr8^78DSKuS%ewX+WGoI^?}?`Dk`=T +zZt(N@4SbNFCe#rNNd@GRN(Hr;2I*(@8qhpwEtCPVdUL&>)(XCjXG!?X_l;w9aUYo-M>7myf?h#y@xzQ +z-DjK|?FFp8m>z~QWDdF&`crKp_27@QU6X&rFGUwe?uEyO7lrZ2w}>^iC|*11W$j!p +zA+N+JU(~sJ5-Nh&(DSGps|ae-0n~wZNB)MlK&SOLnnlY}ff`V*DhTMey|pa;3e*Tm +zp?C2kR?)uKe#YL*zTP(2`o#RgG}G`ODPlQrwl-0&BjipOO^%E~ +zk$A9G!0GSq^ZL5`Z2rc9@4=tpx}fr(VNdW^r6=lrXcyXyI7Hnr{B8Qdd^i7PId55O +z@me~V8#9`5wSlH5lE3f_Oh<0R7omXOUB`7+E37Zki$Ff;F?ydW}9S>p4P#=s#arLa+Pt>`C?2u%;_{iwX@UqasVCi7~;QZjg(5dj~=-RkF^(`F{ +zN-4AT????|3_Z=%$a2B;B>z;9P9auuv +zse=&WzNAa0AFPS5ax*&q#PMi74=_jwEj+qK#ko3dRKGMXKO2z{7_sX +z^yHgzJ<@yF@+``hVGpx&(r3B4f=jBdY|x6q@6jE^U^)48u(WP+J;6)Lb2n?!|5jiqSVlPB0cdU)M3Ln(`9oNYZF_* +zR?M#0#@p6fhgxK&uW1{ov~i*kJ`(*1PlY<^L$w=fU$wsar+Qg!rNR0e{W7#4UWjx> +zHFP?53wwwy!$?poiXu;-n)+CEwmeDf$G1#3O$|((i8YB9iu4F4LtJQBxJ_hh^pE(s +zq@O*)ACcax1>iB*d2sXJGb^oWyX@TPzUCR}-R|w=UFPZPKIJ@V?`wU?V8%jJMZ768 +zM!%)Bk=#NBZU>v0T9eG3)DpFlx07pA+t^p>()=1h5&Ovdl!xjKZMIH8?V&%Q{Lpco +z(rai<)jCQ^Ik%KotS2nt8U6+Lg{#Hq@Hs*a>9u@8eWw>kHe&_ILv%6IT=OaGZhK?r +zLf26Dd-rR1Pxla)?kHuCT6!^44Sh%#b`I*I>f#gbS<0C>9z7H`hjIc{1G2wnz#l+E +zv%(#tL*wU?Wz*;R7Sa=?sy-H;jMl?15I@N)R3myK-G|nw3~B?=TAT5C*cfyqG7r85 +zRfOK@7xa&ME$AI|96pEm(Hi(BLL+<9+YOhE`%N90Q_OW{0`tUl7ii%F)Fz?{b_z~v +zPNk&Sh#Ql-AMX*Z5*`xN{e*v>Z>Ep+<@nnNi-$9!Li}wi!j+b$tB)WWD@naj$U{pw}COT7m@9o&nZ8TNpsEK?WM +zS`(IpVyZ(PEm%2}?U>Z#_W07+u-N`s?Rfq~^W@%C>GUIRl8|3IE0*S_#;Ey~Ch{Ul5_gM>#B8yg6qg{Sr^;#%q34K%)gfoo*Ns1z|14W= +z4o5X72Rczr*Ky}5M^pOY&lb?pKg`h9IGE`7P=VN?Z^DzeYO2m +zpm{J5%88VZpGx*i7ZXy_IkhkJ5h;ilB41OL4K1tAVMZjL4~2w`9}waN(Tn(#Ip$@!!-d +z<5crQ>v?-^XIodmWp&?mnOrf)B>PG05%WY-LBkcYCr+d9p?BaLTOhZTdWh$R!9rhQ +zi{KP*iW{T_@;qgZIzelv!_Xq=0~CR7LEWGu`fZ@ddn*xXnD~+J#C>Gvr}`(SB;LoD +z#y7?B#G3?}+RV=9ZVN4BLW@C3R3~7A-?Yo(1rsgf9_{JpeeHefZRu^{c?mwxVVl)b +z*;J4YE3)Bv7#&~+ch)P +z46cJjke=u)bTDd0=OZt`ke?T-s&~;As-Km9id!)%O_ZC;LUoPySsw`JLep4~2vRwQ +zr>52B!q&02arWGf{*JniqxKWFX4Z-3W~Q5Tnuwvdpjm1SN#_D7Dv=c}5pEKE>VN8M +z>1*UW=iBGUf=@%K$dI@<#iipyN)Bre;prGl6sHN}GSgXRy7`;gZ{B3)87mVr?lx4V +z&ym%Mo7fPv0#Y3A3SHMT_0IZq{i{9+stp%J@}h;YVz`?K5^G6A`t$OJYpEgL@ageb)7$5MLa2R`%8J3dd9hbJ45!B +z)~`&^aFd*b<%1uoE2QcCKGu``5wk=OgpY?xh8&@hp|YT#T#ZhO4@u5qPjEiLD_2sB +z={{%-at=5YL-40~7{8AX!k=LltO~ec-QdyCEbJ2Ho_t@4=W35 +z^ESGr@tvuzd8nnG^}98XEoB{I9c%HJdzl&=K9HqB2dbevm5A^r{WX~{zB4i@bRzJF +zf2@!4<@25NUGdiomI#lDQeeXJb0(>l+6NkpHX^=LHHb3FI5D($)jg#s`^Has13FIpu)C=s=$R11Nsf!fEB_g<16tDJc^aa +zilT4erqE1np)y8lE_gXE6;HV1Q=&y8MZ*h19Yc#lRl@BeZ=?6)p46rEUg4IEgPwmJ +zk5Ysw$2{G3!LicCgQ=#Ux4ZYP=c{|F>!f3qt)yk4={o&`fU%13Uz!A-{b?TKj8kt!;j36#9;>WU=V{ILXSx?E0>$;&`hOa&*;QEiDcu#%3AcEj +z>(5b~kgmZ!Eo{CTIW~_ +zPT~;L5V|t)8JVu{czAbYN$g|-WhZcPAya;= +z(vSxUpp)=(#6hw-wT{|Ab*BC$bCI=)hIkEdXDT4A;l&WAZ`LR4>-2=a49b8>^&&MwYXUv| +zYkbXplYPbf?E-;dEZj9lCm~SxGv%`y2j|1x)C)rc<_`;P>te6y*x}gesO1=I?_%>? +z8k#drV+@&8e_{x>2zd>4)vcOY?W%m2&&rSFe9C^MyIN8+>S_Hgv=;{b6)AvLM0I2_ +z@)Ujst=98sla&+FbHUG%={l+Pi6Ze-)CMMyfswtD_R+zy-|>e@D!qvxA&pnJLmyEW +zSdL8zm}?e?;EtDW$%2pWl|gn`)b^ +zn)o|jAznXzApU3K&*Y|*4k~zV;iOnwKBS~nvmV#iLlTr9M&KhrYYo+xXpJOr>ssu(?_A@E +z*uGgNG8YUN$%R-|_>DSUs?8T=+a_*B*M=VlCj{2}EBKrGU-}%X=_?tFUt%*8V2p*O#r +z854>H-uWx~A%7dcEzlvThjK;N#CxR%aofa%(gE6s{zv?#kDE$aTG${*TW2xX64wlu +z?#$!-U~gs{Vd=vZH-4g)5Y4b$h#P95omGYcC-{WeLM$bA6wisBB$q76Vdba#LOZPg +z2?e1Ba4)zj{1hq%HPj1fFO**L1F?j#kYm|dsp`q%iQe%av0E`DzCV6EkvsL9CHcu> +zNyVhwkWzRhkSi}%X~Hb-2*>^FTm5^ +zp6JEa;mb<-R9VkP>f!T&f-7m9Xv$!cOi{DK%wuku?ikk_8q=T1EP}w#qH~ZL@FC#x +zpVznRH}yi$d1wYa7|BE@V+-*`#Avb{b%DZZ6MdH|M>Qcy;xFtNvIFX?vGN2l!i{2$ +z$(OM=ks{#-!Iy!Sfl7hZfnmXOq4AMTv0TX@EAh4Dbs7(M!k1HVQ1ad)^*yhG3gLdq*w +zQR=IefTOWnH$nBF3eXR|o4!ihsE$+0$}hxGf{lLwrrD#ZWO7!rPjXGNNXia6Eyim? +zBl(Ux32KK{CGye<<6d(CTUSRl;2hue4D`;O=J5eD%5F +z-~-TE9nzO;eYGs@l2%6#f@yXiyb)Q5W@2T5UMNrWAnFsJ@UnO%EDTinPW=E-!Ra_;;i{v`=j>*AmC_O8P6CkIhc)PyJ4fVr!(U +za^3lL!Y8qi+)Wv!_SXvOM|1(qv~Trc`W-E%rj(EJNok%qQ0T#r=WeFkrt^XH;8Yqo +z|GYzdC;e2)=zHM?SeV#G*D+l(6E>^kfwM3;hpRoCJtaJK+#j5jScmFEhd^dfNUx=@(aS(EY)0Ck$FVX*Ht>xv7@Vf2 +zOdWH`+}84kMK`xFmt#&F|D(^44e*u7DgCT+SUkX8O!4tC(Q4tY!H@nIz6QQBzIDE- +z{qMy+VXnS-UvL7A^ +z3BYOoOI|H*;J2nvrg9RkGbS8AN` +zPqWcB*wNn=a~r&efpa{;yUWwVz0bMEUe3CZIbk?Yp25z-Pc=rFE7k{2$&u8E7pODzNVn_NwT5avrIy@8$`sEE +zm4zrD+DB&_HX7@hwwsQbGEEPRPYqM(C**T{1!{$dXxrucLONY5wJ+W(T0J~H +zSR_!}f8Y1a*U8@=sJ{K-P;^OREW4V2E0x#g!w)e(`LAI#bIG#bR>D!s`O!%MC6Ui* +zcbv3g)_i7z=_9?9%*30aP2sWnJ9VZq0yym@C0;ZDzuhNom&Ysp)DEB$*rCTzFZdk% +z4!#KYfU}`j`dO{N`a^Citr0$P<E*s%DKM8{O;^gn!aseoD- +zYKRUY=FqcD?Jb{d9%tH>=^5$`d6VAh-o>6m?siVEeWm4==@z|*n1Hs1YN;KioqV-) +z{!~W76we!5ADtLIAMF}z8lRR3Cg-#DIaGKc&XAqzTBe@^a7 +z&k*{{wKNV|g#N%e@)GE@wL$XJifP4gre3C*#wpg9JPlMAn{`L +zPEZbX6yA*NL9c)l5F&EO%T#~*J{_d5(@p4cR6Ft=?!?Ss>da8zOAUmB>B6a7@eR?F +z;e4S$pkUyE-|zoBuqx;bY$BK9!V3ybb6WZ&Nt>Kf#hJlFhU$44U;D+)6`*F +zb^U|h9GV7=fr>*r^!M6->S-kd_*n}CCx0rP#r~0+ocx?vo7k10lP{BUYEHU8zfwe% +zliEUf3O1G;V5rJ`v^28!bUNKbJuSS)y_>y+S9DKuEp$}3tu`MtE~eVx8hl<`D9;wM +z(^XPrqE75xV0ni2bDY6YMf@NU+usk4_ +zlaPu?M|cP{M?a>e)gh`u^(%y$saiEfD*-Koi=f}I^TbwahM^6}XD3;*t%q#Q?epxt +z?GJ5_tr?b$z)_D=<%mkC8G5U15l3-@Qmf){^g$>QSma;t%kL}ZJLEgycL!skV$s9# +ztW-a4xHwB$qEA8U;I~QC5I4?dPMK#~ep|wpO_sP>XP%qJ7^8F#>KaiFKaKVV6K!2+ +zzHZXrYF|Mjp;$-Jwe1tC7<&DtU(8$3Kz0+C=yzmYb?$ENs4E#T>t!f4Dn( +zUU=Sl276|?%ekgH#@UKmc9{gaE;$Q(0XNluDL16=Kx28iYUv~F6m|ovvHzqOaclUC +zLQE_ncUA_eT{MTjLyzjZ{z4z3-_k;AKzSgqmAZ?C1(-*;D(RhUN45jIhi#wk%pK?Z +ziaq5`Dgzxw2ID2EpN4siY^i21>b&R*xDR_+&s|R*5AW*l>}wY-jhLne7kLLA3^D2x +z@f`PGs(r#6YZ3Voih}abcmBJX)O%R2Gg7#s0!u5_buX +z_(m)tWV|8BX2zjYk@@g`kj%B!a{vSJ1kf4T`XXop{0?c1J;sNSIK9Q-GG#LJ&3}TY +zRLCk=vMe*qC7B7vp|pV8=>-QtLO%@n85u$+ +zt`*xmxgl!O@ +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 +zAT>H`#mrV?fZUC>ffea$DYK`ByRxjlo89x +zRaLis7pe^=z#f>0b;SGQ74TbFF>C-j7ug6h#HWCZAEL49MfD2c<(FvP^!|V~%Y$CT +z#u2qBojzymz+5s1EYGcjY+FHY@X7iW%(U62b%uh}P<%2nK(DTlVjvw!mWUsSObeY3 +zboY<*(ZJF8|Af9yuxNN#RExh%z2@SgORWHvMIxYS@IW?UrER$br +zWs!OKJ?fkBhPj(8YQo)$Ek?3hoZih`pp8@)PBQdQlsqzXv)ChA!&W^qJabb&WDXZYvcR +z?LuC@Gj~0ml^&8l0SL;*{4$}WWLBzcYoXjAp&vpSjO!WBlGn~Vrn|Pf+j*9F+Iu#; +zN4lOkZrZw8Hkmfi0|*m(MDL)OL^ho}wJhE9XU;OuWonvM8dgvZiQ}jbl2u7c^Ez85xg=ID +zQZzIJ_!-lD<$Ztp7=QJ^i{QI(?N~JNgT;i#@*?dH{1cqJ~sl%^^Zt+2n4&(K)CvDQ^RrnFTmD&3T9P?=!u9muuzLbKtPNC+8# +z?gXzs=t~4eV!%CgYJHSBz&YN=9cSMsOC?UlW=1zhY>{xdQshSj0(|g<5uiFcGrh%v5#&*@r8A%!;Bm{y=sOYQM_6rng}Heva`|>H&-x7bLDS}Tg$5lKuUWbdJ7$Z>O#Bqk6KC<6i${T +zyVP1dF0>Yk3vGle!c1|w6p)vzWA(-G6SNeumJ$ptnemoPo5wN1InG78%ep_iysoc~ +z>h_}6Y$j!hlb5i;Fs2=nhVq@+>4{|YZWsz30hD(pNDja;4UPzvjns>+OxW1dAfY!Z +zdo(B97444O$Qjfcx|89u;e}zdA+I5Wo|NkN!l$aDJd^^Fh3Bh6X`AbOX$@ +zV4DN)LF^*`qZB%2IA^S38fEGNC_0BRM2`R*z +zC#(f5xtN&Y6g38<{{@i>(0DDST#z3~MWjdKMKKKSmn_|u4=5YeC4e=q1O0;jg!jUS +z;W01^sQx-SsqF)sJ(I=zd~R+gt0zw;w#Q$_dd2F;=Elm$8z!=oOW6xt6)`4%*1|A@ +zm!+y3bDQs2i#f`v%pw_}>r%@%JV>{rP+I0Ddkca!2N+gEG +zTf|mI8$`QCA4NCDPR5OZ&}f~u^IwI1QfK9}S{qc)mT(mAh>S+sBPn<=d>r}!2q;`D +zq;^*J0Z-$D^h~0FcI>WAGRWM?POH^M{#`j?vXj7y!ydJVc|LTvxrqmRu +zAk4uLL_uA68KNTTp@qFXC#Z8P=KVoeU+OB@D^^$sH-4J;a?9V0pFL395n? +zC%iOgJYlX3G;Jr>OZRWjT3ulM7MczmI#`7jg*1{DQDoYg=vvyst1y4XmqIs}6*dA;)Rs>s%egM@e +zA6y0SMoYAx>M*sKT0rfkegv9qzwU?+ALpJ?y38< +zPWoM40le06y{tZ7Tc(2EFBg`=!fpN>_dH!NeS%%Yo?4lKZnO@h2=D_vaOQ-m@m=+ +zWFzB(m4kzWc*q#eiWG?164g^P(y#e)Afex*?S_USNwhLvf_O?4C##Yg*ogdvyYVtu +zWwa*X;KqZ^zIu98`=rr;hARfy;3~*GRKyknJ|~;5Y20Rd&O9_vv%I(bXPITWZr;kc +zO;rs#ISapyd<3=jx_Fwqmg3^Wqh)}T`PhFGY#ikF&GQZO-wmt^T?d(=Bjx29i+?E> +z^{>cx{1{cmn8`E*9@#ZpU;7&SpY|uVAJ)T`%H~C;ONI{=OL*~a=moenu+@8e=}T)LW2P42JlhZ9(3s;jZ7IcaU@Xz6kCVN@uAXjy;U%b?fxe3>L$9dZX%Lj1ZUJ*;s($GWTVz=Phr?$lF +zf~n?2aCIQ$zXtm3y+ABDCEPtaBmO?wJDuWJO8M1Q`dj!ndJ3;h4y5YScWIISM*mI! +zr0i54(m;f<=jd&~L}Tz!pbOuF&8`N}b7%{^0r*)u_6Ko-gy}klj>alrtFH=EkBOO@ +znd$>NqcG(q9-wvM`PvEjsgOvQNv({Ri@L(yf{Nen-{ITuE9oy0*cO}>z84*wXu}TU +zk4muC6<&)S1>A87W~8N)?Wz5fV~TU1bD;C0<0K#a>G8EOTZ{u)#QWIYIG-2*2#sA_55Xjz +z05i=>?VP>`>HxTb@4$bb2uGk=&=8=um#Mpy`?3in2ZbbDDktrfddnHg8MUcyfemO$ +zz(Q@H?-~DN9$2Q?e%VFG38w=1h33vijwiN=r$NmdP +zgIR%rfQY&3E8^GvZGuXOi1v<$lKaz>g${Ba?J?95-HPuby93VVx^bB4lIe`8uj!ic +zhv5zAnSDqTaSL05jzwm}cc2E42sqdh&}NXy01^=`hjqdy6D!GO)BqYW3^L3zv^LxX +zC+9d>lIVstK;rrY^^;UZSeb@W8{!$!$$-c`9Qf*A=s)Oh6ab`7=vkyFm}>5Tz0L;8 +zE?q}jgKxaMNia9Em2~WJ9(L6Q9314X1ZG6Ebacw)8BjFdm8L@+C3{> +zyBr;DN6mMQhp91mDa5Z`lWz!0dUmQ$VpFV6v~}cu_+%K4oB_nSGk!QRHq|@bjqfTp +zlk=*NwU*Elcq!P6yo?6Xx99>C23yB-;GKXne4~+C5A}_*P?-pr-rVY2^)1-zTm{z# +z&QX#8yBLOJra@-ErL3)x{kmPUKeJc2SGL`@#F(qb8uSQaC|VaRv|SdLa5GZ-7D7;Txq_N&{>=%9g!a>kJJNNXW+lWkg8wQYwEMK_39j@lWdkAfUT}U +zTt<2=i?A0{*Hd}fSK#*(+VdvSEe}!y`g)`fUIsAdTbbO}-uCuRpDUN=lc%_s^R)34 +zcP|HfhDEF+n9;z=OrYza1}Y*YxV-GzL`H05q(-wUx<7=^O^e(8eIe<0oqrcMr(gthGw6wMpB=kpM +z7@dXXBJPl5XsdCZDZ-d70n0?|LF-g&jwNDV#k??Hq&t!Ov0LzEZ3oyg9Fv|0cIbOY +z8ieKtYWW9(je|12$6&i_d~kU9dNd=^obATXk+Rh~6+ROk6{RjQCR#ZE#&QO +zDl0(GuRsi=r<*!kzSykJ|6Daac>#Ai#{13l$(`w1?HFW>nj4u$(F=%eV5^4KX33Ss +z3jAN`;%u4Jie&rbkmU2^+|+n>efmG(N^KJ*shKiX9j7$}`-f!!!JP*<8U^+4VCQ6@ +z(pIi6l@sd=llhH>ow6>qIL!Tx)ASRyxo{mfXL?ba2$OnIJ|Tt0 +ziDEOcv$$O>Ej^ZY$qSWnYB!=BPT5@Q1a+6%P1U6ql52>8Y6hS4p3LJ^CQ&9nIC?ic +zIMggSBH;Jm^Sdy8ehv-~cZ~iV&rZcMY2-S)F-!RU+U)Q|uD$S_|DEN^ +zia7f^a%~3755{%6wZcsHJF2%jRyvbzoV3NijQ$-yf^GDP;4LKkq!1fv9sM)bE)hts +zfkO`ur^HVK#MM$^<%9Z$ +zWSN%STH&qMWvFPqe7P9Pbc<8pM|;w +zs{6)!%HtE4^NQu4$-m~V?=`{e`%AcH%$qox9xr99zmqgmi1YA+HOsWUba!=L-DzEY +z-AwIr%>?X?8SXl>k^YI=NWR3a&;YtjEo@=h!)IE7{u&I8!`yQ|AiRQ0r;x6zuCeYZ +z_zSYIoWI9jqi2$|IuHtdG|@74D%>Mj&p*tYa{KeUKsQ*F-`l<0(;xdor0S6F%Faxc +zpA%J?@A;A18t|Z8w2ZMGx6gCDa$I%PceJ*P)}EHJrmhC74pTO#V;+&$RG-{Yk}{F> +z7wKE6y{WsY8tFUGS|*F5r4e#2o-tKjMTC%{6p3v}Bvw=lC{Lsj;^%ay)P=+s@jG}z +z7lyBex`yh9=7h?Jb0RyCz+0Y_()*-^>H=y#yIa_*8v_??Z(A2fo>P}~I?J8)OV$I| +z3g=7vC2KqLGQ%qENWKOWBd*D3GOv>@;$lP}o*nEH*yZo;AL|eKZv?`@zF{?T1GDn# +z)C6d>0laIE5@*R-luFg3YtVjbEOnbC$r9Mhc2Q=@H>LX0Tk(?kQEVqEQbMk#?j^cX +zm6&XyA2bJJB$;I +z2}5N=8GS&zN>fzW&DCHZ(ra-O*hwhr26YVb^KaB)L@AQRU%-P?W8i|^?|hChM_4E{ +z7Y_5cxHa&?eML1Tbjm^a!Y?G+#uDM%!527#JRZU`&ppNc$$i~Z6eJ%@XhYSU@TG3Iz;UDK2(d+(DQ(FJ +z=_^P<=On!GaJ)(4L1KM!L27OKkIVz{v-Dp6QyHqhRSOdZiRWr>b%%07{#6R&`0y6qV=}l|pJ@n7=7>gBIRVUdosBH4nT%w(D5* +zQJhXyLvrjZ#YG&!t+@y&MT6PR>~gjddzR5KwdwX$e{vG^4Uf`WA(S_=0>3;1U%#Fl +zgf!SnwheF4T-OfAcT~ev*Bmu>wRE?{%@xckV=lN7#WV}JKj_263VC3rVX|hdYxqQ9 +zpzjB0wAb^><}rBN*3O^jZsh&e|1h{BGAF)1bwT`~#K^bIdS0uotdAS|nEIL%<_Z?k +zJlee4^n=l4n5TP&?|%??nkh?PfNHouLa()SrkWqqW3b**@Ns0 +z_8L0`35q-PD#}XsP>0Fg#R}YOEHwQ!l8~!j~T2+1s +zpG_b!5&GZyX!U5x=-_A~`giPRJf5hZT9$s5DIzsR0@0xEQWa=NaU|tLr8;!u>XJqD +zrToo +z^Rr{BeGBsZR}8PU7x)Q`lRP00!oIdaY*DxZp0^F&iJqJ8pWP4KGd*j(g8xq7amW%K +z9e&<&~zZG{rT3Es*#tLL;jR_5@ +z#am(}eCo4!Nf@p@ult~XV3=xrWPECzZoF*Rqpzszs;RwZorq-I@<9Av)DoE+sunBz$;mWjK?&4Z>z`jg`tbKGvAVFM0Qe^ifZaq +z;$p01^ix<9UKN@g`ZLriTr<)+x+|8I*paM}KAWj5&6Ia4Yt*lZ3q%yWkF7*;VywDF +zISe=Saq)7-gHz*FYD{W$>U64oIwvzk{3PvGwh}if2Rng(rm3PIY#eKDWW8w1w;ymY +zPPe0%qnrJWRW_eC7Sh+!IJi4tIhdtO&_%aJBEe1mUEabT-aP_Yx}Eu>+)il)vEB^^TomKRF>KF12(F49s +zMXf??Mh3hDRgUg}jLHN2TzyRoZE@WtU15EB{d=hUt+X+r4c~>$qIVDkGH(-7hvIT% +zVyJ8&+c&{e(cK~6o2TZj$lvJB^0NMJK{@P;SyH{lQ;M1D!j2WX>!OCb<|5V&m}%=c +z`Z&yvo|xMIwG=RyHZuC_npu1UDD*0ktF= +zJNENQq7S)%90%3oC*lY`xR+hxp`^kXhx^HRUnR04_a63(Aold=L?pR;naa$SCh-hK-ikAC`Yn#x>?x`kBD +zjkE)|$#s#}peJk#6c6x$PJwhF8q5hFiS&pS!AA2^dY)Jo-@Z>x5r32IsWsGksxRds +zzb5B{S@);%5bDtv(q^$1oSlVmcPt>WavkM>+Jme`*J9i9!!)yXGYp+gVRLJ12V2_K +zz;3foMdnpB7dE}tx6zK~`!XfTNAkQ(vt+qgvoK}|-&7AS&^T$QE9$CMW!j$l2X57`>53yOB?wc6+H#9doHSt?IE%heO(Hvi1YcU)#B`i;EZ5?f$ +zkDZ^LbDW19W9`qa5%W#sD7Za`@^6_Tl$G$wgw!J=rNYU2$w!F`aKQ~u+Ec-lC!NaZ +zr7YQ`)Rwv2hiJZ9E2 +z#hGbH_B}+RgCNSQBb8_J1i6iz3zfb*90uKRF4u#r|2Vfq=%+2Azih}c4K{bMe6VC$ +z^DN(3+L+(qO#G-FEbL-`r{+@i_8CQp +zUf8&-R(@9QDb3V8^$4++Ttv-;7qTwOfC+Hj}ui= +z|E2GNo-vNl&}Z1um}rlK=Fr+&(SFSF*trmSgGH`?ojV<*J!V;8x~{*fS;^I>U#N4W +zCh5wF?$NuUt%1kB$=>Cjf}R4N#hyX<8*2m%p%Rh)P$RR_W5i?fef2Ckgnqz;*o$0K +zej-1Rhr^A#%zj`3bcjmAZQPRBqt=F-gjd_cTd;-LMn0lyFo)SM`TIf-?G2p;+1mt^ +zgMFr{CJ%1J+w?x|Tj578k9Lqn6|2akxOm0L{9sAH(>ualHGgnkp}e+vVqQu21EM&_wb;jG5%F8)XL3KYhHt3dtlw#DWu9;8W<6&;ZEbH|Y#C#Q8v@_|V~v|9xbn;x +z>LamC9iwcJ8Tq92yYyCSC%cjC`%xW1bS5i<2C{$-(Zv}vbB-=b*QabC2%41^cshHg +zIwyL9-gYU}G^h=f_HXu0^Ih>x^=}DO3Kfrxj+v9Ov`%hDETtcEv{q|)V(M<4X>aIU +z?)nZ~uq{X&c(KozZEI{fZA|GbINe-yd7`g;F*6|5KCv=ZDOxV_W4KAUXZTupR%B{) +ze~e0uO9oRzGWW%Tas#E3`Vn5Zb;L?=K_954;DhTUcbD3W?K9t}x23eHgUL0?tI6hI +zujIgW-b4OIorDa19qx#bjW_L4(;>@1+ZFp2M^EPrX!PGX%Gsw`zcWV+m33tVKeG-x +z-LuTPMz*1aeH&-_;Irk(PgIIsP7F$u(jvu66rznF71@MB +zn!B1x+Pd0|W{T#5@B~SnqwI2KJUxh=rGlAdRLd*nlk)cd4RshvXLBYe`F-q6xM7g<7x!)i5A;#quDnp*>HM_& +zfcJ*KNk|*DCR(L8U?6Bf563R6oPNFWcXLncFSZf(+xD~ehW5U;lGcspd&Ye17{^iw(Wx1WGt(53PJea4=N|bAe=eXW1S)oLuZ3R@OCSl(P3%Z~c(OwJb!Ms*hC<((D1zTf!teHk91gd+fvB!FSGpqMy+>5>cYKY%XI-X( +zC`i?i18qr^rYbX?xcS0y?L+-N<3@8yYhPPKd@i?<$N0t8)B3x4y|EmUFT*)FTGb86 +zby^eJXp_(l{{e5>eL6pc&-+o{4BTvrdpUo@;F<9Eu^gN!9_g_94Rw~u<8BCDwTpEF +z^>6SU-bdzOrEa};jHZh4l3TzwVodNhl_6&m79@`nYIEWrVgWgl8c#20jSC;SCr +ziYB9}tE~hkU?Gi7IL#T^LbR7y1XALl^yNgQ*zxf2V1NHkZ&M@<|IFW$uXTTR*YS$J +zGQor4xtOk>Wpb2tq@O7xRMtfd-S +zMNcBXQG3Wc#T?Lgo2Rbgc{!NWrnaTNPq)vshqIv%(w(KS+iZttY#q@Tzjr0I0d_|B +z#UYtsY8-N1`(sn1vm)2pBRw3nCUB*CtS3Hv%q(H+Su4K8_q1R +zlfZL-G3&dm<*tU#nfC71Cnl|d);{Ex(#;5+97~&%qhrM*l|owrQ~g))KH2Om?bimH +z1}}vsM|#HazDf1KHq(qOj18osqR +zi#-XK4qowHK#o?#d$tg$a8>h1xSi0&=LaiBxHyxtibWL%nMeP~y%l`gZTf`4^S}3Z +z!dS{^G2GDg(B2om^$bEXm4#TVm@vtrW-As0jFvl!72B||I$^E +z?|KL(;3I7Qi^0)0B{4d=ICV1Z&e)|2a&g70%vayzoc*LOQp0dURzybSX=Yuzd#Y^G +znW!3{9kb(%E*(1@TOGfj7?^6A87)0iMv|o&KX+U+M4vWxu?)3UK*DsUOToFn%C*D! +zrDKS#l4ZT|lJIh4VFPU=y)4wUva +z@?6S4i941lZ*pGW{4?%(-Xs2;kQ!0rrP4j6W$N$LE>LDaYE6bW#x~|}EP1%QeXw+} +z3^wPOE*nbd`)QX5$2kvEk3K?nBfh}i{S5AZZEz2KCXYlOf`FU*A$g3NhBJ0O?u?I^ +zWsE|Xp?PXIp;7C}EyUXCLP<7GM@xsN1#KV`H}JiOo-)SQABx(%&;ii$5=j|}?#bjW +z#t5%K8Sv?<*(y5DIv=^l<6he^YlN$;bEnpSe-nOz=hm_ILykGP?>~07b+&apwIwV^Ocq0V +zEytgudlPBtxAfG++~~jmpTrjQJj4va!0W5^RP&znEeGjZjZBJDsg)VCJWkz9?x6>; +z54k9R3DfC!$U(mn8VJMq3EWV&3lj8Au?^S-mE#uXnYZfK*v8%?UsFzI7~Zlu!V1kj +zZNBawWP`3_9-3gdq(7`{teqm{ax^oH+@o9-pQM8E644nUMvg!pa4tiJ1R*%z>N5FQgQv**}%v)cM5Mqz9RU^_UymQ-6~wkgj(sW#xI| +zB{-pqBznY-fG89VrZIQ&m_N4#mIPmi)avLfYkI2I +z>5A)GXzOdt!UJw8+kq)Zm!MjZn~5seXXvokctiX`&Zky^*8PdK^3{ZD8dkegOX#dR +zxTmz8@pIF-4a`_foeSl+nM$eY@%NEYp<01vzP+AN?w#1JjL7HRg+05VVMT)5BJ1Lp +zQf6tidWUjwwZJ?*ZIsP#tljLrzyxHR2ORnKi?&AAvF5?XD*9*O!8+KR)K+4*@<|$k +zleT^OH1E^DdSNohp3WIFR*v|kuJrry?R_WGEw#$lIrEvsf$ +z8P`t73ETIUtH!tR<*k8Em!&4K%W9T*5Ir7FA;WSC`>|5~N&a$yYQec7OXObkKzvhj +zVR{INkT>AA=?4Nulk)MNnPwl|b(BSCTiRS4R5;zmo1*Qt$RZ~&72ea~Y>?0o;ry3s^ +zKIqTuhHE8Z7MyS^@ut;M8nQ8HHG{F!T!ysVdLkD-xHfbrrVCOhR{jKE0(;P^!c|_w +zE9`EDqKiT`Iwy6@yibmfTcVFccLIWcjd!N!0rsjl-4i_<;K;2IToi5)tCbuCz1T@k +zU@q{lwO0&%&0DZT`0RM??BmLHg`5WGCA-sB(DD*|>8F|;eieh=uG&#1PRg(Q;FX5~9`d9dNVK<)bUEuBHo92%Pj)(T5;~6&0R= +zpkXrnU|ek)Z5FZPPni3f`r->$DC}=86yiI+>{Axf7b&FDoXv!shs~)F#t~tCpRZZtCe%l#` +z-Ia9pgYWcD*JPE6sIPMaNG;N(SyX5 +zq>$c{ffl7ih*31h?H0b&oiiBCWvnsVFvoOf320avctuQ(??9+~Z7is_YM!%msp9HY +zac=5|_=boj^wD3`cOCwdDeif0!sGFL;d|k~9ZZDV#x5l4rVolbr77_hQo3u{Tky3t +zht4)f$boM-$Qd{@%Y$&uQl-dY#2aXHW1!I~@bk|l*HRDRoZOA?f0ZVnEu*h&Nc>OV +za~mZ65go792q^eAG9yb9Cx{@A;4yP)hNy@TP;m<`QvPTrUKW8DSuylo10k93L8 +zNL@m%vn@4}?I&1u6Ag1r7JBL~f1kkYpgt@{TEt%`&t$I2F`@=Dl3%4=W@u-=WPNF0;e6ow1sd&XbX?>i +zZ_*nX`Z30>&Cw_;a5V0uYozZ&Z@z_7Ba)Uf9dXOLramHdOkeIS +zK9{bBv8J9D(c0QxAKLXRX!OVJV{8{KdrdVABemc2Rhj3+R5?5IG4VLchUX(myW7*- +zy$G6kmwbPI%00|m&)*|>3VxVq;$V6pRHK>XHToXAoR?O)q*~6fKLCC*hoUNN3M(En(-5a<(iq=`q1^g(D!@kmT3oTJbWSC +zvVJGC)$!8Nv^P;R_DeV?X!6(hUUQ$xF9yFr*ZlIx8CLgo3p@+$i=Ixz({1H_gh*HA +zt82sh0j3F-Y+HZi4dyw9I^NkMwmnv@rJ~7Yc#B+jOO9pUkRQ~-%4(^D*ducgeujGR +zH9SpE&NLRwz(ZyM<>fvyzBD`#xnvEHqs`D6L@=$&f>aeqwoCjOYaL}HQm9_&R`5iS +z3>^vm9sV+Ei#JZ5NspC!tKU&G*|kU+{$Mm%a&3Jb5vL2@jCj`GtkgyD`Pcv>eN1r+$uij1CWf4&Dm50{8rW|A;`d;NTE^Aki{NoIFnL$qbM(@<4SB +zu@G#B-SCc_z$yEjEQfhvoVrli1s7atX*;|o&7d2E#S_v+*`#hFdQr`pHe4j#IXP<(27YOtfnRiUW6myrG+aE0K5sz^NkzpRupMs6WxGQXzlq+TZ0#>d6xf!g{#d{oOL +z6{BThGtom)BRxyhD3^&}>7Ss`H_-=-gDk7C&v@Z{>lzJjR^hBVu9xs-zP5BSP16t6 +zROQ}K%hk40m2|VjmT2p6m*7?Z4qp&{uczK&zP|q5fiFUIM2cDx)l=VOdP>a{f|yU< +zqHfdkm@vF!B0OYvrVqV<+Dab7Zj;8;_yk_F>0knu0z3FWxL~JKb|elq@Iy3Jb+7aT +zj7Lmo%@g2Rdt@1I*<|i-x@fqF+2bbXpzoKWNRBUx@ +zV0=(wG3HrgrlUAlS}V^|>fk>>h8OY%n9+NbTk;L*cX3vxQ@VPpLb7#YEBups_$W`r +zmn2Rl>!dlc5d1S9auHLHcWV~tDbrV$*2ous<*W=(=0^N3#X;PEXkBTJ8H_qVzl&)} +zewNo~MkFW2u0tCc=l|fniha!|cPY;U&qr@(zcpwLH;-|i%@ +zU&A+g68=#WKbTw3?t|KLfI3M&L#k^fyru=w<Q>wYI#MM3yiefkJx8~qmr#qzuZY`9VeB)yq`M`1 +z$HzqXhwV_*j`>Od5#M!RYk&Q~hG3uYoTwDP2&YKCQl1*k?ic>n9WZvVYy)}O>M91$ +z@%60!Suc*SEih)=gAMrx~Vs*$LWHg^-fb3 +z5SOW<>@svL^@pBv(!AJe#yLyCkKMqzA2V$^TN5OVyX!}4T5~G3O>HCv!Q#3fDHXcw +zf9~z#X@Wf6g8Vo6``vFnlh7)#E<{9E#A~KrWX8)OwGq{gDaRe+KM0pJt>GIVq@}dE +znx(=DeiGM_t;{&-0$>$wB+7ybm&Uh$6}ibV)MENFh_HS5UBY9{d+h}@(Hw(ceW?B~ +z-Dz!i%{KlQwgY{eD5SI(C#81By^-GF6H4AT=r|~ue?IR)-T;u30-l$?D#6F$E3y1! +zHRL*9lSSDt1gGvG=;HriYHtZoy<|U(jmAgoRLc$1OT#tYI!zzG9IK^GAcGx~2THxg +zt?=iw@aa#_=*8>eHfgCm1KHWSpxaM?r~e(i{q4ye#7T99k^_2*KGP$$EfJ07Mw8*c +zL(hWskPWZ|R|ltsZic5u7l4$w94F8O&_K^~Pc#qo89U4L}xSvi*haj +zlA6POS5AfQwvO5aeWMX}LeKEl8cZ9QWsJi(yNf`+Kr}*l}dLkNxLK0GYY%7Md~?lR(_Idh}Y5`Qm+!zi{XD$)=UIQYH-$pm8(E{Dv%;>Yn6TQ}BIf4C +zF1i{*nAuJCS89p1Qe)%k$g@xul;~&3FSYmW_YLvS2)ql<5BG?E6YriJknS%wmsLE= +zkIA>xZuA56VA?P$nhyS@7%H2rOLSA`EC0%^<+$`hqUBL?3B?JG=``7m&SGQSf5KTL +zJ8KyCo8FuMvGhX@tFQHf<(Rp#X^5dF7-jF+H`E!h9Ga%H61HfI&|m(Q-oM>L(I-+6 +z`L0WOxAR+hD*A>65}^yxKN5eXA4<>FE7UAj<#V)7{V#^UjI)pzdj{qArt!YvSA8Ab +z2~9C!0heax(={mzS(=!HF1Z&wWVFVCMJ{5m4X;>m1rEcmOH*fGLV +zv^No!dNzY&jPqM$>2AT}-@_@|8`-K_UKqRR_h|xLO=dC3%lkpAIhU%P1332Y7~ +zV9)rF#J%LA^a}9_a-9k47&}R*uDfq&Vjgepjopg&e>p?W_1IC}o^3sDis{3eKe?f_ +zmN+g=P7g_}L#iSl9RFM1kNEq>c|Lgl1SeoFI&=C**2LZ%!C~b#cy`w@(Vit~dK{c^Tlq$shhRc(1gmJC +zi8EI-OQu1lAx6RQwXVA67FU94MmAL{iH?*xUL`U&Sj2De=DM@Iao_8q~joQ!RW?v7|9cf(#JhU`&8tPZGYruQ}{}E2*k9YWxoxB4f4geoRggg9V6}Mtvk(?jDvK&gyQUVa*!g3*OMpEZPGVb +z%Rj+e+SA7EMzU+Md!FZ=cZ2^|aKYNdo`Ara#{c*g;v@Ap(+|GkU0?$KiY#<5%_G4j +zRO2fGgd;&gOpwLN$>`*`rQQP*ZY|M?Y)%cNcQGQ{mp>~o+N!#WdLOuuYYamTAN7R( +zFKsDJZC+&NP>)nfE|RI8{5G~PTsG+Tsh$boXB0gmgt{f#ZBetYG3g==lYaIN-qru1&;< +z(a84iB>RyciTcDSWT)55dyrBTGrclC@BnV5OJ;6lPK!}#oKlr2PSs~db4P`swt%4+ +zoN%+Pf7!O%iy&`s3%tZb){Oa`afE)aW*0Y_E=F9H#-!^dsz--}g8qlzY>>eUp}kAZ +z`z`;nyM?zbh>&-}W3jL0G7qICYGGx5Wdi#)J3(D=B2QW?}44x +zQ~C^b5emm3!U%>!5ilW(l0NbSm86TZ$l~!+g@KyF;4VA>f1#uHXU%lM!gpu8&~|c% +zqLca~)oY2Z2!9Dj?r<;X(YR-V=Wr+gcQ@hv+ZPE;3wMeQPVUPv%6H^hCd5azCk&;` +zwXJV#S=iT9LY`)qIC-FiL^D7 +z$t1)Snk1gX3)ukah$moGOh)5eVb!U;mF9`ySRipSD_%V2jRerFc`I}(M1~KB&qXT4 +z;>ecI%9N7{%=r|@BSU}Q*v7KLHq}A6oM2}>MXqxfdc@X3GYo>nS3(=-j?-h1?y8#U +zk~|k1A6Xb8g75v+!Q`;`H{zT<8Y~}v7C99AHSu$5Zl;f9SGK4@f=2GR&;O@;2K +zUA6ix`^>U2s9&gk%zt36BG=gzZm9RMK)7D;sqcZOw%dT+ah1HOc}?=CyGwa1qu-=r +zM8)Zr$%t|uafoijEf-d3>*(hhM#5uN)Z{aMZ(M8mQQuVeLep1x#`RUk-=WM%GcyOb0yimXzlZ<7v$k0on8YfSYG&M +zFyG(7XYtnZTt&Y4OHT#w5?{~2(on%@EUr(tmws3EbS}3}vq9g@bjk9MZG>Z^^BeGC +z+PQvlPIDw}g{=wGT7wpS#OK(8^lGBEVwB2dmZq8}zk#FedoXAI0(Z4=(wZuhZkrh| +z{w!_8ZMzocSrY2(Gq88hDF4a-NL$2S8AJMNa(QBMd{yiN7&p1mU!v8Z?+;Dr(Dqha +zI-s;C?Tni{rmHn0Kij%lEbl<-~z6RuF;VsJ=X!@Gs`+N%2PP}5(UmVznt&OF(? +z*EH7npZ+~4sRUPru1YxMQ2J5g->4EA8Ytzf@A)(T2slNWys_YC{DFqlJ^r#Gf5aW< +z@ptB`lc>RLabb=2gnqj5jp>DX6!=GjEcda|IBRTgIEjkhy24oQ3{!~4T@tsz#R{eT +z35RA31T9{@gI3h_*fj2rBk6k7-$>l&$dyGy`U9Nd$0GlP3I-3N +z9r<4{oR)ZvNWBgURL2b@FLpZlcSe%iklPtIZ`Lt**P3iv#|Gygu8#1X7RqYv5}e<{ +z4?~;B7>?q9JjB?kPU>kWQgz^m3dR17TA~NRoAO0wN4v!a#MdW2C!0Y7@W2UIT2Y~I +z2w+uZ5m&J#n5?Xlmr4_`0d0|Pl^U7648B!aaIVfIW`VxTW-f^5ehTyD@@mQcptrls31R2A40EyE_^I--dDq0&@&nO +z{6=?Y&qQy^cPsEVR3W+!Z|@lwoS}oc3q^ +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 +z+rCHMfCf9`t)-ILX56NG3-a)u_ +z&i_L&j_u)sxE!wdmcrEzdKwGu*^ZO4UBl%oob?H`wt^9lAJG +z8%#)nxQliU2YRrYl0~S3bS0)G+nf8AZz80GN$AG-4NSmIXw`1S{lXlf77|sJKg8l7 +z=a8{=AVT)_AM*ABIVqU`Ilr5`q30L$TWkV(nZdM|EB>XFpeBP+b_BfwugqTS3j1Zp +zEOdCRc7_}u>=SH%z=QHVS`udoB0HBZMTT)|)&fU+W9o18ftb+?@>8;CDi2!Qf0=wS +zCI!K){t>>-Ug#2Ogm#W{$aGYd!$_x;PoD;Nl>w{B7pWI{7`_-5B8MW!qAujSKBpRs +zPtn&opPr25OG~|IoMhQ&o9{>?aj+8oCiOvH79CaWl4XqPSN&2=H%?2RN4je$x{>pu +zo5H^bvjeQZyU&H*lqbIHeqC@~sCVS+SV#ETM`wmgjTMjDi(E!crHi3^Wi>ij7)*di +zsHfmVb4d0LQm&w@#g5LFKJsVzxN;Q={Yt6(U;ng_$F2);zX0! +F{{yk4T7v)p + +literal 0 +HcmV?d00001 + +diff --git a/share/sound2.wav b/share/sound2.wav +new file mode 100644 +index 0000000000000000000000000000000000000000..1f71187450fe22c476431ebaa08f1fb8f0489ca2 +GIT binary patch +literal 35324 +zcmXV&bF>_J_w~!@t~Qg2ZBK05wr$%J+vX&h*tTukX`{NUx?J^sf6sc?UHR{>l}g{b +z`|R`C`=oWF`t`Ym5Y(Yo`+EI{jm>3;AP5Fubq_(%f{rkRKz68aud%(Jf$xE!O=vc9 +zsA-%fkG;3EpnHHPySI@y>alySx+te+J7KA6K0y^B&Y`2=0mfdfvRYJ`CKs10%NymI +zN-njC)Q~4FJv;IOavOj>K=p+a>xY<7_P5A(K-oqfRpdNLS(pZ7`Z`uk(-lus7k`?Z54B +z=kMry>-p-M<#=lSYQ9hXi!VTy8n@NDa#pczM&vBqs`Q-nyYxJ6CVw(x6K6^(xwX1X +zTd(&tz8EIxmoeDbsjt?WsPE(^(ix$6<`%a+y*-7d9%BmfERJjZw&P +zJWb_da@yWID!WT~_xjfRMgJW?;y>yA=HBRx+c@SLJ%q5JSB-V*e#tC6@uXD)CwDIp%UN#Z+cuEdPD&a&5a9(Emam-AHioOd5{<#BrL8!Tr{^T@2&LMWm3mK6SFN>8kaZHVLz +zR|tIwQlTrMRCrxzy)!ffDT*z}R}v-2!DM6d4e=LI7`J0Tk<;)7 +zXovAZZ>ML|E9m?6(Z(`JfOn$P@X6#q^dj?EOG(=v`yIzD=R@a4XV7ulj@!O6%}ssC +zlGuHyp>{)RlX0Xy$uY6&k$*yMgU18g137{PLWje9qI!H6JB^ztOp=Fcm7vFn52wiu +z)D?Py>5l1`sk&(@J(+4mD)_%x2Q)vD8}10bF?Jg_jS7$s*^pjn09#Hpq;z_l*=cEL +zEonPvdu^LxJ8m6pIc%Ooi$oSohK_4(WjS*xeKN_%)wW+f?3p1Np$mC;Mni*3UsxI*o^~3pfM)@N=;GVLU#OCPY +za6I@bP%qFR@G)Qn4}_mb`z2bZ=J4Oew(3p8gO(?(^iuO~OMTl2dsatd2kvNNuWkEo +zsl!Y$ZKJLe8LTDx4L$+AFzOi=qlmH2XarS++aim>bKpd7(nejTveWtKdlXK6Ae!La +z(CqLg{fAeq-SJ +zLUn+$N3J7RmzT-~6-|M(?0Oxe8`K3Zid;n~6hgNnKjCN4VB@0pOgSgb7h3X#(*@XW +zi661sQE&8Hq*zpqwut9R4oPL_3yNcvq&^FA5Oe8U%z0Z2=QwvZZ)M*@@KwWC!n@mj +z*xAGW&|)%|raIuO5yjZ9Emz)4|A-p|mypVo6s`)Z#ck3f*`zkmMu53f1-b=BTM(K8 +zT`>OBTWA**S;{F^%?#j9q{^{+B6s3o{J(h4gey6h9g@Drj~AyXm-W2JMjWG?Fv=~>_>J`YDoG! +zcPC?)PAXgVi?E1QqehvhSsOa8x*mCY`bPMZ{xAN@e#+O%liRh}zQZ!nRG55-PJ|k0 +zP35gZBffk35BodWE!jA^H`$+^ntGe=%R7Yo;so$%jMO&kGYlux2C4ylFp3(Lb-(sP +znJnj*ehCjVQN9D8g|E&(2rae*3P +zHd`m!cREMA-+S(QOZ)7;-rjDCG6!qk4u0Z-Oc>1gIa8e(t6_2{Jt9C;kh +z5eY{M#BRlpCEukA@c#&3z`v`MjzcTpyU4$2UaSG;#nz+mkU#KC=%le$U#cBZNp-KX +zUiqfXQx|H#^_9?Ei}QU +zipb|Pv(g)rt~eYW5$+cX1?AxC(4lapXyN$aWFWPeuP#R9DcVOvh997{@b&~nb|4#( +zzln-OOT0SfMt{S%z${MbJ$1jHN1vlt1?uuITnF{xb}}2C-|V-1wGOavaSV4pcV2Yn +zb6Ok|Yy&MZlZ%RC%V4{{P<9Hp(`S=V{6yq)Xj$-4U~@nY{0_DXmx)e@GwkQ|^UMqB +zp1RGbj%>iT5;dtQbQ9B2(_vFH(`I@vHI4k6_=+t@J0OkWvCwa0mvO@I0>AVE&Wf(b +zst{@NFx}Stipgqq*^b-(*!J5v>m5rT#$sAS-o}o@BXpN?S{TlCVCTo3QB!zka7Mrq +zC>i(>$QAk)cE$E57N_A)!shWxMzDUU9}6nrH4p2}@1Zzh>J%yy;~v&KBY^pLto48ktJ&-Ba6 +zdT|^-GPNU-C6)?T38BGufeL{`f#boN;pWkY@xAN=E|<7MfsHQ6e0&6jm`hqB*5dZG +zy_&=B7-yegD_~vAyf&#+4zeY_3oVGmz!UT|d`3QFwowSOzgL_8VN+opT&fo6QO_ujyUnG<+hu7xqFg^

G&83yl +z)@$|kqF@Slf~O;E(D_(H{5HuNVq7obx!hNWkrlW|gY96C3n1D{?1Y$;A=q)5G;)AalIrOS( +zQCSsk@@vxz*kg%2@kF#>^i70_o{zGz1Bs99L~fLDLN2JEh8yBHDLdn{-EyGrJ08?` +z!uP`0*EhnexwE^z+q+tKo1an~UJP9b<sk-^ +zHCB(>U_Nb~=ipsw&q!Zy|4siY{|nzj?@jj#Cu}cj$!EgJU+4!&)4D5mDVMN;pTWIO +zZ%W@ux8jQN4Kr&5O&kuMBbQcP&t+UR2(UN(Ye+h(KUD`Q-=!vCLR9Ay=`X45sq^d= +zwrnbUdMejAGfQ+StVX~!v3cY*(>u#adv#Y|kK0$v|J|SP5B9hBUG(g6<#RN)7B~MU +z7hz>#Sxd=f#E1O-bfr{Ic3QG^aznBX+aR?z?dPv%#)$>wD@qCA2ihAFP>*_0(r9K3 +z)SGFHdPeRhdBt>w$n@lGd`^BHKPhuxm?^DS5d9dm3SB|0qZczBZGRlO-MpujuLziU +zW&GWIipS$V=isbg%!?=|z65sbSLHpz2W~`aY?6(~Vnbs6WA9@Z;!gK1xW0Z}9w@ZpR2$Pq#>X^(PU+ig^X|3Su}I93JAitR^vgh34Gn{ib?p*>K& +z;C-H_Tv1x9b+l!AQOJpu#ikSAs5<6Vmb134j#923?rfee9=E5yJL&X0?py7QPVK|< +zB8zlRo+OmzDzaPRBcs>Dn?gpA4Gs?t4S$PVibWIMQ!;lz=qM-DPR2aAKbpYC# +zS(jvq*2Fk`Fjg1!AW0|)T;wp_tJ{I*)8MUX0|$^3*goO}b=7o%S!&H^ALeN9eBpfK +z?BeX<_-Tt-=9{m9CuoDb*IOyCgehEic2&Gsv}*WiFdo<%_!2l6R71BSd~9;Edb(Jq +zsFY8IjYF^(D@Obx%h6d)YfSr0olNKGr_?cW7?B0Pi!MgS!mFW-@h|w2jGfSW_$AU1 +z3*g(xE;MCc%>*oI>t0*R_Sja&mfgCNS#2so4aWx{#f%rqXfZDjrLrehMMsAp1`h_Z +z2C@Z?1)c}ThgSk$`xBM&K?G4(LN0C=I=bRip`a4lhY=q2jdNoHWm1jx&>(SLVy6iZs|uurA0HW0=}d +z%9C-Y|4wd=^@uDBRSFIT^JZ>fNbpnWX{3ByPrA9D!Xvqcz771AKPJbR&M=Fte{6T{ +zMIBzpO8bAdf!1G4adRhnDtQ3Upreq&a8YQwk>AK;jQYO~9ZJD@&_391{0Z?KJV_3^ +z3GJt6P}4~-(G)9+Tr;w0P2|DCGVU>3BOykuk(HqpL0_;)@JSE~Ux*}QYm#fypE7Ob +zpV}z+4_1T%p2=d^t~w0oMOWH&$Q5_qcGR?wvJPV!m^@Sr|A7+7K*(!&^$}Vgt+=*8 +zE24w#94ZR8MuwsTv2yq|+`t3)XnYISAAJLJ#$#=S5*NE?UZ)4LB@@+Rdm~fB4@28R +za_C36O|)M8NOF35cZQPJX=UNNSY>LAxvTY;U34yYZ}a5!=J2lZEOq-`bsTwY_n2m; +z+hhYgh@6L>=%uuQ;G_ +zSRsRPF_ujBkLQS0kG_cfiA;-bj8#aqVBe;%WKvRhEd))&AgZ%@w6&~bv1_pBws*Df +zxo?(lzqhq#p{u7OWUaysrB@NR(X8-ZeS*40&Mle5E`n1iENl>3iw&iL@=oQOYS;4^ +z2(%Y?dm6qB{RI^?0$P9dr2IvcGFkZ6>2qw4WT(WL_$BpePVTL0632Mn&DK9aDqJPH&gbK>bg9%?b`OiB +zUIF&K%eYw1Ofz~Fi-_1LzhIj%# +zs&7#qiLEk~xRt5y?CxaGmU9~NrSbELifktJo%@*yh#%zt +z)Y|$6pdIZ2$GHHHfImP4gc{#~qn@n{m*+~a#Svmp@rc+{8ZXCzF8?$dAfK`2WMdQ0 +zOtsy0Tz7TyO!MaPRrfveKJnCZS9M;oePRyKRf$80%b2g^6*aC%>T=>{tWmUWBoH>j +z>m&b0v&4TT(rjsNLFT7eOlbx9OaQ8Z)IfitMS +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 +z#Qu^{M!Bc=MG|;RdN@OD3%+sLbdgK +z>V73C&zEP*&*i~NO|`bxU7urYfi}Ve5ecb|bmohsbF$46 +z_hP%Ep~!(qG;%U(#2zNBsf*lo!J;hCvm%G^y!0TZpAB`EasTu%zW;oueC0q+d&GUy +zIo-}#s+b2+>+rWoZ78gLQVPm1#Xmw1p_(v3z{EE|EhwdqI#t`LZ#Viw5hx!_!RtY? +zeo^nL-B1)Mt5_=2hFhPqv(FPzp!R*^uj1De#aJuw)-KVfbkeWGmGJ|VWVYH~Im)~9 +zdYAcz0kt3R-|cJc9q+E-+-|$gT&8yt^U?Xx8Lgla5v{^zek})aZ_+OA0Jj3Pau9K_ +z^hW+$9jndJ+Zvw?7ibqOG#=|x7&(+siz_6FLg9Ri8SUjAIV +zO6qTRA0RnDlUvvWDLwrUUsU)c&XpbNXwVHBZ{ScZs1S6`FdIHSsqRr4%L(y-ur#xu +zxARZABsZBKop~+nkRB-YbQq4IX+on@%tc#mkdapO{^M)v|Hoh4U)T2xaPwh~ZPpp) +zg47|bFnm@UDt8xlbB)2)mX4$G)v=wid~rvjOOj=;q>u5(g~QTvrGa)!my9paaCjfQ +z2+jcygXS0`^xB$D4aq+wMw%#=6&r|`#r4u_d5k(p-wzc)AL9$DdgidDr+tlcg!{Ya +z15o?QzV+Vzo};cQj92HDb}5b3mfBIh2h<*! +zhkYXI(TB{6CA(d9%ysQ`xADyI6!6q>e{d%4%dL0K`>DqGHP8oHDQ6SDrjyA&z*Qa& +zZwxs@zR;e~$?)INzv8WvcT&B1t9VMTp=~zKz;jUvvl3Sc8wr!!i8N?bXy|L?KX@V7 +zye{j-^`ORUopm3`1sA}@fVL2%pDtp~Z{e(S?Kd6UoFOiCwZVCK +zydITD3E4TCZ5&TUT;cP&U8WAzF2(8e) +zO?^$IsS`brs!JO9VXQY=63Gv@h3*-PjO_*qnhuXaPP-LrKoHa&dYoBh8d)3L61Jjt +z&Q>3g`)SNj6Ax6$i9FGVD~x!R+sWRGH;PsW?+mU9cmu@(F9LYz0`RrN6Ae>c_~qgw +zMb;7I8P=MdNS8OyWx8AL0JU#zS;T{@oXmdm6J`-kkGC@G@^U}G=8<-O*U|7|k;zj;w>UE-C%oS-BvIN@%3I|pN +zmIQ5KXLMe?6FZK(Ba{Z&fdJ>lE!1w)OJ8oL2E7`Pdzi?NvG4@rrW%oOp#V34 +z{T$y8GMqM{K0y^s-H*Xs;Yg%({AV(rt|pw58|p9M8u&zNfLR3Z)&obzxgB`>p|0)D +z!H!Qh%8D>w=#%6cd>wipt_B&pTc4#h1d9J$o23sl#sQ7JhP*`|VoPunQHih-^YG1B +zEA%jY!I-1@m1Uy94*|V}NAaK0j*+V2EumQ)}H9YU;Xq +zo7Lm+yEePmc_?qv)6P@VeZ~3Be!<#<`AzpF6WCT{I`preMGGo!Wrw^_zAv{`a;jOh +z(jX5U4ULCeAaSG~+60x5rbs|w6p2O}+nBq^OYGhaBUSxE1SFCMf +z2J7X_LKFFl)(rlE^`cIhuUp4CF1r?cUU--I&idN*=gIZR#vphvykvYr- +zQmt7eNhQX_Tg3OoCnoMCSET^y7W&AWG!+_$g~;0G{?;0fbFOQihQ9iM +z0D041gVz=9y4qg3ClwP{XPlswvp4mH9m|ekf3o*ddAS6iPdqKJ(GEgEv@AK+w8}EU +zZgy4m2;NfuPyUR5x_`XykLQD{k7Jc}nz;(~3tItq(%UGj#6p>T-15{&_C82y-z2B7 +z6G5l53jZ;)NGvDcRZ45Ufm4hb6`@j~TUXMkuNTz5EA!;S(r4jJ<`$oozs)`8>hlFN +zQ6Sf7mm8Eg=#bageYOW$?lnj=lrD{Fw1puMB+L53M}l +zv%ieL;U~xrY%_6~x^B9~?6B6fuX4Rwn@s;FH>H*!r)YarNjiXmk +z4N6-jK^BY_QUqK-DjU|8)Jo<-y~9_$pAhCG)(@$3TO?JAVcU5p>Q1bqJyzdct`RP +zmDkkRT#C8PD9k;k0OK;R0R5G=_(|lsaZOz-4bHSn4@*9b&57&-zIu2dUtn0EVem+3 +zT_hblk-VNJh2ioStqMFE8$!B39#Y1-#x}+N$Nt{l)jru)$9jkHnH$q%$^E#3PC+Wc +zHK6rIZKDq8V3vg(pq0}O-GqI?8PY|4r~1=t>3;MR>M_}m*o;j?XwcJJ0$K|rl|H%}1ex4w^yBpjt*feW%tz>#JSY`suYn<6;QB8W6UF*hCyB>Ji0>v-nr+ +zKalm8gfM-ll2w|MNu{T;l@rxtTO$L)2SZ~(3v+ka6y;*=k~z~gGdrc?+I^@y_KI|v +zA+TK>bT$T*GUX9H6Ft-1PFDj*Nzm{eVv3Ms@vJBd(Z+DCh+0> +zG8%y2=yJ$cp!QwSztEY;BJg?b)$gn4<@sX0jEM`gN}^TVh9%eTlZ5h7xH`JzH-g>emDh;&03wx5CnYx*t$Zrt*a!3`7lIUdODjj4#+2%SQxp#R* +z-%Y;`p5mgfp|`!8ca*o4V0daL-W0JKs!|j*5Z7|S)G;=h+?RZk?9Mhy%>-mSzB{|4wL-FGi@25li`A6=O^2hxjg${F!3-zHs|-H;d^ +ze-zsj%f!ycKPFnSWID|K%6u1}$m_r}OfhCarGT?v2G;;R_ZP-PeGmAV)CReAO=+1} +zQ1ps@MUPZW-lI&`b{HhG3+qf~Gd*K^*iJdlySjK5d#m_*`&2LGUFcrublWRg7}GAo +zjZQU^%0jUxzaZsFy5lROt0UPWMFA(g7%dPFCgN;fZgl33NGpXjhj9v`5fc3mjiaB? +zN$7Kgg+tIo&<0(v?NI}OmA +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 +z1V_q)eC|-{I?sv4)Ye9G#EQ=#SJ73?u*YpN +z>lV-jZD*QCodG#*cT|F3Lk5_8jg1k;Ph%@+<(x$_XbsS*+DWdX8q>$mWRkd*}*0ACFL0=99IKqpWMUd$A|vx$1Fw60Y9PsrFV@-aLcG$W2&VaA7rFC$x}K +zM0p_JmOaW5&}Epb?a*%-pP;w!9^`Ly3OWL%&<02`_^LtZHZ>|80=~LrIxDz6I3AlB +zy%HH0IUE@pJr*0AIL>zBx(IvZocam4K7NB@7@O_1Bj)*c2h&fD0=|pRUxF`hm`UfNRd><~jk7{D=={%7MI5 +zmpiGewXOOfz|3=kw{|hm*^Am}RhIim*M$O^eOw374qC>RW$Una*=wnioHf%<6u|8T +z4zzY7`N70lp4+>)rh5weTKYraqPDNUk#E0exy$S*WA&R~lQY4E6#*{ByNGDU!L3OB +z!={oileyWK?8j6=ZXfvH7+7(&{FgdjTL-R-Wur9Y2Cba9&Vy^BDN0uPqBu%ukr}{0 +z;N}8%UzpF4nJF}p#wjW77_<{TL|g)Mf06AkXM1-+?+oxMtoJwZ5BK3-zx#|MVSQ_! +zOIh({aCZHiumHH4?Z +z-QYM>8ES4+0L{ne%75~9>8@B>3=5htT5KvUmW!x)^!`u)S&g@+vY78!>f7fy2fG8F +zh<7MpIS;^|mvKD+WU(BRpeEoy;b!_Hd9pB+JI4-7Yy{+fVx;u{>*y?_+_t(kEU;zE +zwrrUl<_R^-%+N41HO$m7Gcz+YQ^Sl6H)$qJ4VgijOMDj}g +zBuaKG6QN;M6zie8NE9PCn&VVX8gs07-f~THpK|ws%zc)#p*?IZX0eiI^d+#BssQP~ +zI&3rMuh^PMH1s@JD_A9XIe0BpF=C6=OdLwq;J)xPMZMBP8;91x&*<*!ClL>b%S2b= +zr2diaD!u_5hPFc5YYWtja$b3$lu_fV4jF3;W2)O +z6iq>DqID*?v?J*{^afDw-&h`*IvN-0$6=+l$5Ma6!9^HTd=78}?gftd3;Ij?@A)Hv +z^`WzoN^wKd!POBaN_*6U=y)AZleA(o9Mzu`b_@UBhUx3z28gr|lZ}b=xq8I`ZmN&q9gHG|5djRkD@%V3z|!pg*@rSDL3;P?z*kQMMKkqor70_qfsnU +zIJQ19BDE=vimR1U=nY*dV;^&U>rMKxqqD1r`;Ge%&_T+$E;@eD53J)YI@1#PWS?Q@ +zkk4u-r6{x^zl%>q3$)Jvkh_CBx=}lW{Dm&ZO5n5bd3YI6?kB*zX_z`w?kg4%K5;u! +zvzd)?E_yQZZ+KLAS-4cBV^oV30wv`@`g^9M@)Mb=(+r)=L#;*Z6PzvGJ3RxuTfGgv +z10i`=-M@7H_QKu!!tvKr~G>U3MB3YAqfqkX7X(1pn6oB0-3*- +zpc21_1hG@Qs$>C0VzRI>y`6oYEYG};zk$i#8tV}&79X3ak{k(6v6`u*Y(|{AWrmQ+ +zZRP37;1uWc7W3@}kMgVcqz7?-a}1>SP)AIgAbU3pJ)~OX8=0qk{d8e&99x#{z-F_M +zkV%Vtm&^?@kK9Wc3%%ZtptM=x`@_LGdtPoNoypjQ(dhuYEHyH@iz&ktW7aa`l8;mC +zxchu(v9i({S&4rkvP{jXs`P7z-Tl^++n4Q=z$;$swR)_sUG}%uN9GmATKXt@Q9UCu +z!u<3M_Gj`o<7Pf5Jj^*r!U0n)Yu#Y~>3r^P;H}`>1j_w!pckxmHF2!7 +zEweNvU+FtyU(_Yi2w@xKtqL*g;&Wq(=!a;nm?d64agiCD>d3W#8%81NliWw$rL97K +zL&u_hQ55ZpOax`Cnu5#O;@!+wp@#6C|IRlM$V^4?mUKw@qIJS#-8I8pQ&sAo&FQeZ +z_POtR`g$jN6%Xg`?`r3GYWrn5N!BG!VLoj&c$6NlWik|(qst?E!*#-a!fMzSofm7B +z=$u^6zDpO$^pr*_jkUK(4#)?u#Bbr-A#pz*TZ&FYdTKS*($G0uD;1Uqsjl=!dMf8t +z?`UVx&v+$bztL-+NS&}9vbT1wbq#P|bT4o}axHM)u+M=0#{+UAk;ZyzcccbFij6S! +zi_10XFO)A{jx +z*cNm$GC|v=>eaKL&zjUr>P^jqp2e2xmcj3E%k;!@%G#AaXFuhr?QHK1I%N9_dY`qa +zWf3`!D1aZ(a>(n2a-1PqGJZC4GW1)pQsAkd^B)QP2yP6Yi55z{PM+iT!wr70N}+$^ +z3-xsjYk;4SAswbCWI3{pu{xx3&gzEZm9V1l-nj(R>?G~Awh)p*&!Ocdf~K{IY-s*u +zsb}qO%R^73`_M0Ke_I +zYefcwKZ?REyGW<$XB$LgC(}IhC<{q7q&(DQ%Mf#blnp2J6kZH*DL*sk(i>BUAZva& +zd^^}FFvg$D-^E`vFelg>K7}EPQK?gDhd5n%huCza;Vh|`-&6H$rRiPt7P<(ea&lP@ +zSTs|0a;RayUd88OP0)7839XmbPrIyj1HHU0wg^%=KBAeSqcMv-L4GCAka@_wa2E*c +z?qeMxCHGwX#tUp#a(=u-v;=5sGojfWf~MQrVAXK3kFuBH50iyz +zWy@_J=BVnN<80;J<5*_TLHD!{v2-w%GkOW1t_gM)vbkf_7s?W4GiZD})EV$sIRY)` +z1f){0>6;Nti9ZQNUsxZ;J7FV`+UjfR_smh4|JE{1;`O5I!yQ8_g3W_#f&)W$!6{bb +zx09c^>Y2N8ZzPS6Fq|;$g>$BdL+8qZ$^N;!n|r8>bpCFyZcAAfnQX=#`et|*WIK;2 +zL*)6ACcY5~X|7aXuAnr5Np>Ol_+zo$_-uSV-X3xfSJC0fb2Tcz5qAik(hl%xlkwWI +zZ;^O-H2iR3B)T%TCE-nRT;a@e*@v9Ms~NVLZc(dg(Ghj^fXw}RZ%^-5Pj~kr=URJN +z=yARxjfTd$eP|VpQYuSVGW&!Se-KXlBGA5nnE4@k<<`n%b)MD>xM;0_%OWFfkq(+k +zogv>4KMA3<#1>9XVeAPp);Na3eE&1%hLrk$siEnXnMras(AgdmWlV#q?lcPxtA9K^ +zDEAwER$s<5z}?fy(RHlt%nglY^hL48+IG2)SRIHA1GpV*BRK7Evvaw{>05lx%q;P% +zR8(oC7S|qXxsaU5eeh{Zse-&xLd2fJmGp1i-PFe9d8RDmUYotHEE+ERnZr +z*;rv>G`Z8V)z-qX15*FryqA2M@2oG|JJPezRn{@ZHpS9}%;*nd!?o^kceL;cwoVF9 +z)@EV}8?%X-o;(ipgrn&;LOQcZVxdo)UwZ^Ji9*oxs;qT@QWr}b7iWf&!pBd;rNZ1J@zeHGWH{;#)mUGQ!MLGe-`eD^JSO%ht>y_`+o3aho4tC@d#*Ye}Lv*hj5qh$8dI}ax4}PFB|pD0t280G?}v9YlcXgP%G +zCE1i5ZyW-woQQ5WXi9A%A^TVxs}0jG!3ozAU5KgpUi|<=IWlS5U@=%L*hqRRJ)Jf{ +zLj45w4A^LIiO={Uq?Pg`GcVmF)iALp+9*6c=nb^?`~2hly#xOQuZ7*Qdx=Y_cWFwj +zt#m-D;~(|KjV{wV^BzkrY6w-5T4C8`9&Mt@bp{);0aOVSa94&SHt1cqg)H@RG>J9R +zUDDSuTr%c0bvC!NXqMJgRqBl8lDV~MlCd^%6n}}_S2l|S_6&ylYVO +zt#wbZx#%q9i8fsO12UL3ffSGrYlm;veb?tUlr`GOLu8cvmuycCF?tNW_04fV(m)*} +z%@;Ou*OIoxp6K%M*WfWo+`orhP@~|}(CbM1c===>?!M4Mey4T74-%KiNtTz^i=fjeGW;`UB-FDEZu%gj~>_dsVSK3w?xetuC1Cah- +zODu=f{Xl&k-4*cqZ>W9bH{j)MW8KLs@x9S+;l&}yCk00Zi-ZP*OGbysb0!OO;{{$? +zqm{&u5*ZSqjsP3&DCm^C-Ot<;+&f(zormp5ZKEi&d7ZH!@c`e99@0?tgnU8DC;b$0 +zX{=O4rj%U3bLs*4piY*(R|pmMdzDObB-i +z-wB_N6p48f(~?cNLBf5hrS=0GOME3=lwh0eSm1JaT;9drk^j5DlP=P6-c|&@<9iIB +zb(OHI+B{{OWEH;)d4+5Ib>1sn7xrZS5`Rd!fymiYs|TuM3$z!S6aHdrv`(NB=auSa +zT0-uBYU&=-B2h5jIhKh!fR1)O-iGOtddlq-u1OAPSn0q&xd3VNA<(dz;<@RaB_0&m&;UM@2r{$EwsmCGrpN0H_Uf?WsBs8J3#nBm;ke$BArQx*i#BOCLUC +zAIembU#f@D!@8@6$ENGl44QLT-521EGauf0J|F2F4XOW^bcDKY>Ivt}Km=EwWZtK1 +zvt+VK0*P0R#iDs*H)HqXg_yg^4eY%16rrE^n|x1!w;lXN+QMv~54`)k+HG~aGDxl< +zIm8^9E^yjk=2QGiVNE6@UWevu74$j2gy;bGi%Zrl`|nPxyC0--mU-KF=X*-K+c_1w +zHqhCg8k*`(BL$R`nQ`g)sdOScRwinWj0|@U-wf}HgrjTXvzWc9pIkX%jJR5!rItcg +zpj)u!_->f(f5(r3O8pX27wgn%%3S%PR7#48I%$H`7`hUY`W)1xa{6rshiR7ODfqPK +z99cj{I}a03ZFfc2KF506Wi4YC4NG+bxEIed1JkurLtv`ZMOK9N1nUP!1oMQNg?~go +z#qu+oQf1RGgaOi9#f@08^EjrDftIrerm~d29JE*q-~#+6x3#xw5%s*XUU>w{eJw~< +zi|BRyoc?b^fJ7`A>ZYx(eUKx|IR@_hiyUq3TWrIj;r`XIPgfZ|p%fI4L(6Pn;%0PF +z_(^b6fboCycMNn2W{2)Z?D50Qc(xbcN-VATwL#c6-4r4X>GgADn#?A9kQTYI5hzNGZ8E)7> +z>iVNLb-!4T&!hs0g0XAiN5Rg4QT`nMj{X9Hi9ilm7A=vWQ^nFxxwtrkS7m$o0fq+ejnnDo>R>vday(CvSxH`|t5D^h#RL73J%5_@zW{1$o&Jh$n< +zPS^s|QW%M$x$!@A$Ms=w5IExwk|X1gx<76F)9_6H1fPI@RvmKjOx1Mf)V4&v7#l7V +z`Vw#i{sHA)4Ga!-id=~;goYIg4J%q(g+;+3{AzAvZ9`|<-#fZHdpN&C+Uht>+bU4M +znQdf}2tYcwE1J?i08`_nvR(P23{xwECffp?fNjMO>z0GxzmeESbRhQXSLyQL?a|s= +zKpr4IgwEyWWch?CRxxrrbT8O6*ghBvQsE1cFR_WtDE2J>n{-F*h5gdk1CP=NDbNPZ6Q5&Uqm?3a!p*}Q!$TrBVe$dxwXS{ccH{}Vq2fC&@s?z5u4ASNk^batgapD(%Uf=C5$sDOYkSq;f{Yc*qNm +zi4BkcNMt7~axAZde)~;mKAbV)Kxcbzuj0zL0 +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 +znPSRaq_ggUK{frPhSJj{O +zEvwW@dN1vhw<~|CZ?z=CqK~mb_*EcK4Fcu<5ZVY?ukMp)iM50ncPKTBSq_x@HIZZC +z+TpgqA}6CqV}B<)rs}7sWuo#l#I4(E;7xYxE4mci--p8eeVVr%Bw}ptHqP?)N7j;- +z5#&K41~(i@{SNBP#mrxV50n5LIO#Pq6~uPZeEG8S2^ejMkxJ+Uv_JInY9b}I=Sl^6 +zkT^w{onFaaO1hY{@k7w{e;#$k-o^3&k=@E3g3sU|xgv5JFKt+Dx&vwRs&LjOJqF)$ +z-z?t`?{!Zux52rdeouu>UkuN6FHl+SE4#%)!p8IjNHR`ix3NC%2bWBjhNf3YY#`56 +zR;vBrIVla9!&6#XWt3w;liQwQ`Bv$hY|m8HWIra7_>ySI`}xNOVZfX78mCC?Da; +z*{re9DjuhsN^Ax0@k`4M>zM!D`Nud{IZHc#cYLEY>mf^+d`~RGEyzrn7glgRlT+fE +zNCdv$-2(x?E^s37F*rB8E-J>dz%qzn02|W6Md0BMCYe-Lt5~dxfQvN +zScbPi!t#tvzO+9X0d@fqt{s&8jUkt_#=jCsm=?I>6lL*l(qPDYX#gwH~TD3wJm{W0|e7DMbo2J)F7s?EX8q6BmF`YQZ8>d8YQE*CsVLdYunTuBQ4<(%voZpZ1?*8Y~xrkciL +zL|I*bEE{IDZK|eRQJz9t>y3IzyMqMa9b8^lUXKy0h!>FVYDf&zm(^{;jvLU%c>EyoE%b5kSgtIguL>I^^% +zbHBTWyMs%0G_^Od>48gD&iDXG`(4q=+E3+xd>2v-Ii#l2eQ2djP!>TJ=5OQ$dK%LI +z*YJPf#vI1t=r%-DU5X%H6b7gBKyo1*FCF_k@+e#{Ts3?)d_GbuRxfcOxthBs6qZkE +zP4R4^CVanY(NX=ulDqCpM#cH8{1V#2Gudl)A=D?+6mrc1~DPj5g0h_ +zhY5KyW|+;|%Zrp#K#N<66hkM$d7l?LaU+4Wzg+%X{385J$5}eni;2Xaf~R;V8jEfM +zTFxM5PRf`L3Qq7SL)cI_Yh9F$J`Fppc6(lVC;OIxPfK{GyJtBI+Q(a00pWd$ej>J6 +zOUmoTRYEL%0a%i&;j|~XJKUW#4_U_Jq7f(#{b0+>XRRctD9?bDT>>aIv!!UJp|CZr +z=QaWvZ7LH_JW6<(_lzrboBf>bo+&BU(xzZf^?At-z?gRcC8oRQq4ya0wAX!6_#FOn +z4R&0$-L-5YTN4=mP`fM#Gecox&Bj!xhL{of(+Aos}+=tbWc2-xgcP|27V6zl%FB2&(Kmp +zc4~9bEM1tmOwNE!UJLEJfqT5mGswFiNE#D8lsljEG99I!n1+FO&=R>Ncg_?|H%>iB +zT#RK!J(1<%MPV$$M4H6X;L}>!mgzOZ-{J@Pvf2^Z3(9>Jd=lOdSF!dO>|#TH*RoWH +zQb6tt9@Kg9v)CVUUCWdrni(yRFV-uDDW;&MlC7!T>ip9+6i)kh?ndsSu6d4r^h@fi +zX}6(-ZXF`XBQw@?B3UBw1R9L%O!z}%Pa=#UN +z_5+Uc4BvQD+tcOftGWHTmp^IipG+#!Rowj6tHuPqD_!PkUMOn?S-Cx +zU33;E;|F1zNPW_5K5r>w?Pse;U#9QS9qC~<0;aF;WOYMboeAh{b;S?qO{wLHm(V2L +z2o0;g{(SyX(DFJ5?1JynCD58*k-nA*$%^(Bo2`FtxC+XBYfIdcANo~oEQ8FoOy7+o +z3^Dy=pxg_<&+CVnA(zt$Nh4oS1KwNrR^P|)!`Rxi!o1Q_kJ?Dhr*KHfA2j`I+zbu- +zl4x!q2A$y-vGZV~NQ+3l(DA?ye;$7+|37{VHb?~{bK_%@yEtCxDPPqxkUP6>%y0Hl +z+pR}zHR(>YW~*;2X?<*|3@XY6Lt5WT_X1lEB+RecJkahRLdu{9+8pi}Pj$J7E{4&@ +z_MqBVG3AGT+GXQl!zuk%yb`)Xy&&BeUU2bb)x>RZ?1RB0fw=#szhJ->Tpd~+(ZxS9 +zIM-kBOJlVtR*&dJ`YaQz{oyTsAN==1&Ml6;_LlS^>))2!ro+Z{;8@?nve1{X4=KO; +z7*6~AkilH5ZA31iKQW_@)`#_rh<8LbF@`v%pQlrygDj~VK}Q+D-(<@spT>_yzXIic +z1#tT6LFT?-_)EkWzroyLX*(Nb84&Uts$p=0)`?_pq<(kxROHzqhJtv30UT5h7$|OouG}l8mK)! +zXm2h+Yooi6gsm`8!G8B_@%HkqhIUgE?>jf=JPHJdik6CG5h5R66`2nlA~e&CSGYXfQFb@W +zv-`M>kjkMmqr@kYOR1z5fILhVQVx{r7TO~CTmUFcC%OA~3hicd!d +zC<{c6zs2#X9my+9OQtPzgISW?mr~f-uq*IdrX_5I62PZD1bei+$iG@0tv~DuG|5NB +zdYP~Mw)8^oETl)xYztOoed#^W!2M5}p>{^Q>&6+DnC4S0>1U3l>wxEzcNsJfs`x5; +z54blwbJ=TKJ?1NhhPubdV5OW`li$JiPi{}NiO-6aiFJ-8AP-X?lK=aG;V?z$A?Ak` +zgb^CfkC0Mu+OtSMaL$*j1E6oli7zv+1&6Sa9}U^620|lvPyQ*dQd5vbZ386Cka;~M +zgQ_`6_YhA@=vGhmUh)iwj#n%D2J3utS>s7v4s?m)72lox9-H*%!CqBeC^B3Yeg^Q>z2DXMz+GkBYa&N|I5o +zs@zgHL+_N(Pc(4kP|Gc#d0cT+bv1E+awpuA-IHC6BSeq3t~U2Evbw(LeWjB4D7`&( +zJJABp8OUEiUwv7yT&O*4R(TOKF;h~e^gf}yv{QMjJw?aj*K~*U<%u3ZIXR(^>ID2N +zb_rbvn-g~c1#_0t7xEV+L7{Dnya&}~r~b0x8;MzT)_;MXu-pNe3Fl1UC+x8&ZI7tR +z=Eg>geh2K9Ss+^Yo2g3)bL>$V58VZSFyZe7+<*t6qmfu_8dH}o$Xmo;@;1$fwa^tO +z4j8T&2a-o1Gwvlj8ao?GLn>!KJ`7ShgMfqC89Jm3;66y8)v%*@YrWeLFrGIJwIrxY +zwxWpZPYyT +zOVVm=LG0A!z#joi2?4g_bjV;fKpbdJ@c7s1e(19dO^sE_A7mX|l#p|1f$;F4eVKM#}v*8iwj1*RFho6jp9R*Pc`fWbJ^%u*TK +z0{a?AZfBPBFGse0Ev;HhK%dq_A_hg5AD;{g>9b)szpq5o(U%-5_r?TB-Ls{yE#1A(5f+^N}f(;PU~Rmexg80Zo-Le{F~;oCY_swy>> +z_De0~lF;mJ1Gn{g=tP*FF5qDxP_@LzVfE2#T1@#N9nbXUE!?Bzsl>}z1DL?NhP~mg +z;ewGd(faYlOii{4sMbF91lmx4-Ke+Vz@qxsIp2NC)7sn1``z=yJ;Jrj(E&QWWz3_E +zr}PHkP&QUu%csOKnTe0gFL(5qJQJH?RF1O24yXgq3uU|jnP8 +zD(YEC+*gBV=1=fx$0;6pnfObn%5UJD>}}X+g27hVCyAcSz~qnAE3TyQQG5*ztM5q4FZ~A%tCRSB;tToRav5@<3tSyNhrHt<1=cR+Q$BkU5#sr#mQ!DN#GtUnFmsT<(~RkJAmW>-yDJO@dfQN5Ni6! +zS&{Q +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 +zxc$j!d{^{oct+?F^sAl+cZWjZty@v +zb^Y;%SRNEEfY8C)s5FD~{up>ZW3+#ujnz#zm{@7NVtQ?PY+XRJcFeig`3TxL>m8Nt +zU2F!bwW+Qlfy4fAxmza6olicF*M}bGn&7;EKHv$Q3%m}F4Nr=`2L53~u9#q!UMu5} +zZ0r|oDPatsfaN%ytVJF+J~!Ni4OYMF4ETH4&yFGEwF+88?Wi^Y8I9fo?y-)@hHd1N +z%=xLc)@!yEv_Qv!pfK7dz*du!WSWTMCz0mLhs=a@71$0tKUyO^7}y0}fib_#KRv(( +ze}rqn{o+H4OBaBhoUM=|_<5jOKPIc0t61*BdB4TNnQ_oi#v2jC0(~yXf}R6rPeb@f +zXk;8bGX=0NpnugNo*3GamrW^i$g+xhO`W0gP%g`6(`n-X;x^DsZYqn#7JNarAgD=7 +z7zs^-jp%mRY7+66g-u?SqaWfglDc${%uU&gG{+keDab$;qqbPr*z9x;`m8Nr{hR7* +zd1!KwZ48_AGQI+C7^8ttx&pXClC~FFjvfI*TXp?n;*R09@g!N>G{Mx$bd|hm>}CMA +zDV{)T0s*_PFcjW-+3|tVw!mJV2pPNLX%nxI?8p5L4XbSJci7svm27F* +z0{h5c+D|&n&VZw}qq#k7t848EK5au|6{3-DCdMIuY4_BU@V(U_abeYxnucUy?eTGt +z25myTA#%WOoMprr{RG`d*q(k~Z3G+95xz6~H!~RSI4iA19MJ +zxRF9iTCNqscM^W`mt~>tvi(oU+;@P}J_nGX7;uG}0q6CysSWJN-H$IpPlEILO~&L| +zQdgi!8RYwr?0%$1fFo|l7;G~x;TGL}ybxX(dx{j(YAQLUS8&pnfVbYSc)r-l$ic8X +zjE4UVkBCH~!FbnXX|9uSMQQ>L&M4voa43VeevZK~(fx!?7G=EiJl)*aoY(CmZQm^w +zOydnVbVV_s^D2*|wqlLUVrbtt7tRQMGcCow(kl5j?8%L2H-Xu@58VNDv{jHPtEBFf +zUx`12@9Cecnrz5CitmYiiY|;EiMEK1j9Zz)sRP_R;kaamh7}3T + +literal 0 +HcmV?d00001 + +diff --git a/share/sound3.wav b/share/sound3.wav +new file mode 100644 +index 0000000000000000000000000000000000000000..8c01d8e1e4da0a818e7e17d27761219bad6a72a9 +GIT binary patch +literal 35324 +zcmW)oW0YL`(}j=Gc6XAAZQHhQG_kE4`^Lt^wr$(C?Y58k|Gn>;uUYF%_nfNQwf9qL +z*R)Y1W+4Q1s@t*QfZ=2F*dPdk!B2z35VW8(3?YyW>eqX0@8{s(K+p$tC22Gku{^Uy +z9sjyIy4Sm_yPLb-I?}camWHO&bbj(EHWHZzg|%C%Reh?c%1U*rwog}~{>Uv>3p{1QUuNkP1Bp{bM-<{Ubr9f5gmey +z#4ze0z0pwESjYIm5T++kGYK!&3@)qvmS*uq87bk6WrY_9y@3Y)?EWqO2Z2?gaO6@v +zoa)BK#W|`BRl)L*o9RtPo0&JavE;K%G7mJt#@_S}@-to%JBo~jvmgifZZe_Va6RN4 +zIuNf(=Az?<)uxm=Wtm}JXeF#kb8}OMVKmtb)1blXRWTQLAT>RHAu=X(J#f_D$iK)x +zKA;9|kqxnF$sNpZzKGmfs}8?KY2q%4(3j{WeT;@_nLJ6<#;>4_5gz)j=hLri543uE +zQD_oe5Y3J^AQ#Y&j0y8+>lphMMs4U_?SnPMkKw!Vl6Y6FF3Q7ep(?tdMwQaa +zbNRE}UFo1+(^f$@kV^Oma=D>~`MOoNe{(i+=kxUQpdQ85!RfRAW65J&OTI!yy^u0h +z@Uh<1iul@S#mJa&+wlGH<4B8G*+lQu4W-f|yu8tlAz +ziNQ}4MgP^m%d3RlZ1HsEAK4=24~AppQY;I8tBqDBN}Q19NApAZcl>VQy6BK+DU8}m9}jhg +zf50em7UrQxdKImel23ZX_hE_j%fzo(`)IYuf$-6A+sNwZ==kU4UB)Y%mS^f+(fs5^ +z17!JREAQl8IXoLZ<2)zbJzdKkU2N~og^dHK6L>-N6BN+8s&$mj@(B63+(Buf{-?bM +z@6rzXJ_P3t#n(mKt$!cyD3!}y%`lPFOOJBAF0=Rp+2 +z>+K*HTozf6R>b4PA*z+(s`0yNn>k=UV*YE&GM=J4kn^!#u&9oZzH&p-WfN_qe?my` +zl0S#Pu>Y&SYOrW{Q*=UNM_Sa6ZQEz3PqqQ$b0l6ewX}3GsZ9G+14kvJ)k#UwEwY9u#Pt;3=Fvu^qZRM1o1K3 +zE!8N#E3znL3YH5XfysfaVAXJsXfS>`b&0(%+>*02FI*4Ru?B>R>_nCz*As{FX;^;r +z0^9}4rRUN{sJYde>QnWlRv+>p)v%33PI|A=XX$Kf?0D*Y<7(+H;_l;;9g=OhWq?s7 +zTVa!+t;%PiJ)1w(H(o3{FFZR`Ak;rpE4)22KDIxRkv`3~6Fy1h)%rRI)kU(QQ_sjsH=7qhN +z-S3@!?f+UbjMK^UXjrePoD-I?&r&NBe`7DBoulKTxnqsuZxUxx4;hgwD3+HE>T2z# +zJ`ef=-G=Hz{q?HaYo)b(OKdKH=E`+r3$vrx8r*WepLk5}qxFY(U?SPd_@8Bz9dTuN +z4tUr5zWOHl2752K$2-s3R+JX^DqIyB?u~JqZDz4)1usN9HsjW#V@j6j8St@lpeVc77G?zDMd5~Lp +zANq^QWeYnRyItOTzI(pyzUSWFo<6RC-DC|LcTw%}9EeZvtyrb9!YfW>ce4-K-drbs +zt$<65WTQGK*C*>N(}soUiSzt&2>%=<`GXZ2@bVU0o?JmLMr2 +zHkJ_C1S@AM%e0Ez8m||VPYlrFR~pf +ztryW&tN*H3)FIkneK&+7W6&2ENyx+o@(H}K%=p|eVJ&$!F669cdpJA2JW6EbbXgpxZL%Ye<*a>)+mQOy$ +zH)c%9?6DQ$IYCpPqMruS{$yZM=uu=1sJ^`1KCz^_3c8A}A{5GRXkp549%Zg#USyhJ +z^cbd7kBRK~Y&185!gV3PF6iT+ZtxDI0;b~;@;iOaINbc)^4!|R*46gZddR|=&KorH +zGd2uSTw@{(lGzCyjw$#_n(9`%PZ +z(B~BTWu>IXS<{Z#rcRQ{5n`USSJ_^77G7~*y78Qbr~c7T>MvguZ5uX +z$Xj#^7Qr51wXkkzWyBB7(@SWaBFSxJN-ixwk$)+}wVu#nq$Vzr_YCvR8MZ-=wyvx0 +zEuQb5>7H@!N6tm|+m>ZUjH-tXhBhm_u#w%7%9kh|dmZsb#PF!d=x8W*C-FB`fnC9W +z6LBS?PSX!UL*YyCX4nl^fQ${0$rFjWt0TDc=-L!ay$0Tup~k3sQShEzxw6j@3SukREEP_)&0Ri+y0mq)7c0xgY*%~193I~g+0O$%%5}} +z#=w^3R`UhL+fpaxj>>AU_4d#p$O<*nb8DNGm(qLT9(R#>n#z^D9e*Di8e0;p7hjPW +zo%+mNSasTps^cMC#@;>oYa~E>%wY@dJHe4l7V$a}G`X7am +zw~D8Qrb0*Ig>XQ8B;`^Tswu4o)E3S_79vZLJVV*ex?GMo9@vPBOer$N72YVK#d;F#>%e?(*(G&Rh=0I?MdmP@US2 +zmq9VOjDAbKr_@!-D2tQ^YIALo?uVLz`Fjpqft!iE#8vz!wivwuuhh+IbE!W+k=dC< +z;-@38LgRvm19Jm-uw;l0w~dubj$>%yiM&nkfkugv2F%>UTGZa%!8#a6A4hBZ6Dw=} +zZahejCR^h@&@=D=Xu6K+qL!&=hf2XS5ec1zD@1FmH=V;U#8AhuhVDllC+1)=7}4L$ +zON1IgW!U1QBK1RC1FQXI{geE|0!XM-2=0d=J6Jj)otBu +zIcn}@dT1c%GGuT3EZPVu0QZ7$$Oo;3Cc|gJ+>POv$@z2z;{nrS^L)!a%S_8*b7NCS +z!(WoXpTHfpOHyurd%8zrLX-&S3BL7L@YnRG{7r)8!keQb5{uJsxzf@^bp_NLeThFO +z+tAGoHwIr*G +z*e7Rdx1pEF7;FpPjF?W;AvWW?v5}|?ISO^ri)*#iy~-HnsM1rNqq!jpX^!0^`qHpz +zp5?XesiT`~p!=Kqf;-`wOcCsKkn7zw{7x4!>SpB-aCz@SNTWS`4*?j_YT%kt!$mmL3Q#c!a~*Axu4H6ElVV +z#XS|u$fD|i`(jVXa>mh?;daVZ)N|2$*vI)+`sRAyyEi(&+isit7(Niq(AWBEWsjJf +zce2aUYg5HjjZ$H(mP=V|A8Ly|hvrh*Tkd(M`>*Y#$tNT@^hE59S^3Y3<(W +zoNYH+JDcXxCkYvy3b)XwsyTpKx-Q+8D#(!HR=a7J_3UsrWC&UkTZt{fY*;SzEc{zP +ztyY&;2v1pOdRn4LtZd|1=v=T%aBFZu$Q`L33nk3VV!olAQ%@qh2)iMl`Lgw~y^%Ao +ztGf$wxt&MsU#!>6BaJkDkQj~)MJ_@^^tqZtvuYExntB^(3v58AV_$G9DUl1Q!&C=q +z23dsYfH{$|`XXhN*nlgLE}fVitsWj7tQ^?tKk6S8co4i7ZWC*rJjm1+Wcj#WA6-vm +z(b-J7Evv2LY&UH)ZC9;}ExM_ku{K?w?2KH_6(T^FNA{n3H=Yy#VcSA*@rD9 +zvZ(cjxu%+yJ=Q(8;`YKo5B0HbGq*P`qPpT=;4<1M=_*$(jVG!^qoK;d{DJd+-v24k +zDbzLcEVd!Jg}KDPk)Egvpg0o4CK7WRL8?Ru--cB{@4~~OhI()9je1;_)N|S| +zeLUO;U5zv3Aj2zDHfx6cmVEDE0xet7FC7 +zT3KX{+t`B3Ne-8jU^^#Iez9#k) +z>hohcBj@FIawquuVr%(?v +zj8KZ7!NSb5l%Cw3e3G1%x|d$Z2Kl4X3$+S-59>w!FqW|9b?kHP0qW+V?~AXYkM>q{ +ze|C6mn&|}HhLDiQ`cLH_sgkgoo5=oTo->tLf-BB17rfGbxu`lrTdjA1PCP +zYwr~AOb_b{I>y;fn{OL#kHhkdp+pLx9jr{?12&;syiy@1w4{h@@xG%BSv(pNw%oQdwn +zF5+{6gBc_KB_`t}mIryQS5P}knS5tvbn<3waAZa(BiJTTIIu79EVw?*L|-I4%s#%q +zTviVt!-<{rNYfR|blZM=RYwKK4tti(ZEa$%XUs!u1dkO&x4@&IL;64ZP%wEPKs?+N +z4PsLXm26A*G}w&ojoFNu1{d8F%=*qq2i>Eb6*{smpfUzT%7zvMCi`9fOn>vh*B}8j +z{3puA*<$?US^xDLMX!&rnpa!1W +z+wTbU3pNQKh>l9kNMGb&se)PwRDEN-6uFL?Mt`I4(ADX-R0eq#uZ&$py253lcKTE8 +zlt$#pRiM_D=p))r{P48 +zXyfq1U@~w$P(D~U^f?@jc2C&TLH2>LN-nNVf(9c|RKk|x`|%F=c5E}+3v5t3^$uD^ +zwX5<`zAk4|f=VgvyPkyGVL@UG-PRPaG_W^yeg*S>fTy-+j2m-F_P*Bkrr)67bc5%p +z_rxY#zVwJho!I`!(eOXvb>X3r8__xO&B<808~0GikgKS)J{g(?XGdxyJlq0q4Y~9a +zz!Cc_Z4-A2GJly*^ZSJ_!2dh0R)8qfMwFpjm>O6`dmC3N&wt*EzWTnsV6&g*GB`4< +zPmI;5nb>V8zj|3b$l=V7WQ#=e`1cqYKNWwS=#a|AxVY?sTMEl_)W_Nxy&O~zY!`)e +zvvyR;El(2P^6fa1H8YdbJ=6En7nq7%Md66FM7;>*#5Ry7V`obbJM1drx#~UT(|ucg +ztG!|ONv95+#I=U(6%N1jWrTE0Jc*A(f_}=*GM5oj|raa$5I;VC4Tg^SHt!a&QtmB<) +zzvqLux39Kuyw~o@DZ++;6hN>ZHi%^MskzSOX5q}h&8@UnA3M*kUdJN3^gXxc4FVJrU_z^w< +zxG3MPgB*Qa*WHsmOFgjXo2#m`p#8EXyQv$!gTS#}aF+gE-KxBhr^*}TT#BOP)Q0I# +zpdv^g;DsvrCnC=zsqc84EFrzLi# +za|3;IRGWqrA(qqYOhv6_?YkTkoyVQ+oP!;ty{@&aIc?ZQbth_KU6F^-7X72PK-;4g +z1DkevI14dib8$c6rg&;Hy_n8Jm#1zK@31MzP5ru(CAQ^qr!x}$qRw!=AQl+pALlO> +zSQcCuw#5v|o=k$@DmT%eAWlM~CIE-vjpdLvX5DZ7WjSRoWg2E!MC~M=W2MmN@I$Bw +zlmZFDL+Bx#13iFsCo-tVbX(&}(|B{p{MFpVT);HWP?uVdFF~s4XXJdscBWObdF)hp +zOE71kuHWWg>^~A15;`6k5}%T~$CegXDzEf6$PD}n`5%4NFcvtNos3%y^XTH#Zo-65 +z2U`CRL_qWP(V*&=K^Nh=s13K1CFn-Rx@Ocm+BU|{*(3HAcBieOC2aK2AMv)x2JN}z +z<(H>BCKg0%gy#lF1@J((wgIY-Awz7Joq0BCC-P2oe8^ +zWue88ThJuEkG4iFpypKPtNpZ-`T+P}^afsox@Tx)-fTT&&va(FYP#FFZ@E@G@7sr1 +z7n|zQ`|-~(q?MJjxLWCd5}~Lq@;X#K)G!nZ<%~Rzevj8qJ!XdR3Q!ph7eH30d&TI=(p(SSd)Y$aI41#-jI#yoP?}QMSU) +zk?u0y&c08+lfJLs{+@qaSM8T9{f(c>-8zH7c>zLckc`<26MGnt>!{}DCOf>3+)v-C!2#@FYrvsc*C +z9Kn|omWft*m4aw>_3F@9C)5-SndeP0{@u8o= +zNN{5)9R3jPlxUki&UKcGYXtHL&!pFw`dAO!`#7h#Qm)4?o9l_gYbUH{Omz&m$)0#o +zv^so1p9XZ=WOavHT65_&p*1jq4#tk-SBNR(8}bTSjPwx;v3W>Ns2|7=GWiBfi{$cH +z@krIs^8gfh83q#2U4Yw-2?yv)#A0x2!O2 +zG%N<$=NjxMG8w3hXZj}nwLTUa1)oPMVK4AeqyVyuE=JT;&6G6eHr}THkc;rU$T8rZ +zhJ?v%u~d%uph(Hk^uTaG=5OM!6u27Yzfj49tYBr-{4asa8YD8+6!+)R;LRZ1E#^2<<I +zH}WW@QLm_)RCCfr9LK7n584+3LXj7i8PKKOteVbxsSp^ +z8P_U8Br*)`hP}exV8gJz=o+LgoYq%qt<)OISeXVt)8%2xb9IOQ0&aytb|j@i6W^% +z%ni;fwv?NxlGYR|1Mh(k!42V=&xTw=STuC +zNVhj-S~DEeTzxzjyrX?HeSf?=J=a~W9sR92Ov|ZnSP6K&T1%?N?`D>#h@?GnEdDvZ +zC~+WJApMiM&s`L@05|c4%7cyD1BigR`Yvs_%F1n|4MK?P2@JCw>E)^EDK;gf=d+vm +zB2o^uEA#^GMt(6=1ga|L%pm?>2a5fK=?Z)aLSVVH&$B +z^*cT;It1jTpFnnZEpRwkBRnALOVmtX;6_SyGzvM4gQ_vDuq?9)_PY+rvC(nL-qE(v +zvfeb*P?jPH6sv>0fbIf)$Y~YyclvY4hWv*T_(CE|`sg%0*f7)(rGr!-vIibSypXP3 +z6bEvJ(k_r!3ZXo~um0NpW_~!(GuSEoG5Rc#!R+Q6$-lHrWCcEidTBUsa#%iD+}3** +z$nw(E-nfN+L<)Fq>;f_cWR^bQVfKOwzzvX7XeOSYOjE}U)lJjQJuOcxXDv?4cT;ZT +z2P!84p&NBd86S;f +z(1AFv+x}W+nzqwjh`R``SCl94;q>vukLa54x8TD-kHE&j_@F=ZAyO&+D|wr_!0(ZU +zstG+e@)xaw+lb*r2jT_JU@y^`NCtdOpQ%k%?G^SYn8f4JMZbGceNLRP|jp3WdzA^&Q7B#OV7ev=p#+Z^c^ej54^ni@VBX&dX3 +zIFQQE9^~^$qm(IHDUiW*MeZWkkv7O2;GE>wuc-ehxEv7O;&x%9U=kH^5aL{r!--+Rq`9c0)JytZf +zC$>FKCU2!KFi*L^!XN3BQbp?r6yi*1C=}Jr`d4*~@>^;uUgLXl4cU221*RusW1Dfb +z&_DuWOfQYDCLlvw^B`MM=R|ic?+`#oJoE|PS)TE(KlY$yi!nE~95ch`)kBiT-vhlP +zm};4-kvf=KkiN|{;FA0iv4Uts_ +zTNqs*DHrJzDIMJq+n6YnF3K$xE2%jA30p^H1ACleFX_7DzT~03r#v^@^;}IIF>6cn +zY{OA9f^|j=P&O?~nIZp?Zc0}9ihLOm8Ljo>kPhcXA#6Uj7i*6#M4KS%pt)K;WsZ1< +z!oK-lmU +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 +z*$ArsroWAUp?^pq5KM)~#M&fBFh}{g +zZ|H??0k^ZKfurDr`ocDp#LJUY=$po<`I~i`{g|VdbC%Nxa*M_`($c`_0@>XwkPVj; +zm$Bti)#6tpFGF*KUjttPGlJ(s6C!(K#X$~#m)j<0DxWnI{1K^w<-!-?GjTIs6Y#B{ +zK(3Zk|ExY&?8-6uqFhxet!~hUL7NaeevTXsX#6AAG}v^TyUTc{c=CG+yB9dy+1FSG +z8h?;^u}08X<(|+J+?G9#KaBQ{tPKwhe+<8kw2T!8JmhgEH$PXrD?bDmUXOwL&5Ps% +z+e{K9h*@B}I3s6DrNpMf4Sp|=2|t8dl3VGbNzhM}Co&A>!DZP6N5Zuq+>y8QmGboj +zEaWF=J$psVb3?y99z=-SR4B(sg +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 +zC#e;|&mUSCQxh}lV`#hF|Wq`pT*?uO0; +z8w7t03PE>xeWZVEKw?^IDK}lHE^U$bDXoZUL{n5Xd*$9zj?j)jovxnBNqmiG#xvqW +z;>~flSdotM=cK1Zab~%i(={-CZ~bgHy7szvWpJ>@YLs+BcqQg= +z-BN85*J3xKouY%IVw8)uPP|DjPB-HN$bfB@r=yc$!3-)Y-#+qRl?2R0L +zyVkzf`q6ybI8~otds#JynS+$zY!Eu-sf&D=p*NoGh)9*2q +zHdZhmFlQ8JFm}91p(}@qtZsmPrJD7+ +zMTQopKh2jcKUmvYFIm=_-x^oxA8U59rK!pCS)NHvi8Trj3FPr*d+O%i%n@>4pl90{ +zX~KwJ8-lBe|dce+R^3jLL&O`;J1!noHrT5YXWNfm@ +zX7Jj)Q+Lu`H(1Pht+#Eo{xsS5Ppv=M3VYIGA=fG#N6pbwwpo79?j^PSGl}2EXQpJ!I3-Nzq)m9ovXj2ylsfNuHm$XXG-C`xrl`Qs8}-0 +zhV}>i{@eaqfl9#*;K)bD_JGjN#}^fIq%KM?2pKD(kI{zcq&V>IEiUXvAEP+v&Myfc +zdVteX2F@ick$Msn=(8#oRYqe=($>&PyT8jgj|swKcXwAu#}(^E5MD3T6__PNhV+fI +zr%uFQMHfWwhqs0K@Pmjtwk+N*Std<^BX5Cx#1Ql^CFKw0gM10k{ZZbZE}9yi@W)O? +zKSZWQwny4Wm&Up#_N4}cD2)=cn1Y%e`nV|!!fUQ8;l2otyj?~Ccb1c~H?dSPdbNvH +zHEA7DSX#ypOW#4Z!<0zHvlGRWnWt +z)@X;YKbQ*43G4{`96T6W8DZkVWIg_ww2JJ-=Fx64+%qq>-Es_e4RPN9<2A=cIc3`l +zxak7Auv%tnP)E^GxF`(gH*=X>AI{G`!qifltsbQh#Bk5R|qSQ;j0ito6# +z_;kuepM`D)3i%VrU}k#-&_6|jE5oxuluqT_%H^myyGZ-ku+L1`uG_tiVa^WDO^$B% +z-PUF1YR03wBAOj+7J8>El&10kNf9-myjsXT(T}!JF#xX+vXJ?Nuc&W|seaK`Fw8Kuv`n_z +zZBE-l>kNz0oM~*TFQwI}8MZ1sanp&vlwXyJ3a|W4sHowzz${ZaG()u0bk+1z^vytK +zwZik-m|a7yQaXvz^pZsLXuZ%Pe;cF}X69ItimHlK)LY+_;M~Z25MG=xRe3_aVP|NL +zBJVKKs5O~Qt8set)4$c0(ey(ivIzZ%d`MIvlBjDQ63=tVnUL6?g3wjKmC%JV!4ZTmmwloQc +zqt_GL(*p!W`hloVUB&OwkDbF-WoIzc>84aJ=+)YC9;v=~PS`3Wh3lePKC9d%%QH7s +zQ?)e=PfgXWjqM*CDd!|tH`fMdRYw)uALez2ia2lflTRc&h|+$sgW>VPSN<2iQNDw| +z@%|fu8TeLzh_y_fNYg?ADIj+z`jZM-f_hI@Cu<=ayk06LUg2kOGmt1;ow|+pbLX+qBYpX +zbV^Ljj<3VN(Ipm)1>*IS*HeQyyRbu~<^0M!FkYq6H@$|*#TUVX6tpv0Jl-?~sY%?sZv|M=j+aKG5{q#eeL{p57EqIR9(4|5e;RmTQrH`gRr%K5?3*k0ZG +z)KtSTReMuap1Dh&Rn+ozF^TWTIibFoN2)E)gWI$zW?(azs`xJTW1lcrkzV|PP^1CE +z_Vo2cINBuqCh!Ctd0l)L4W6K9tZ#LoVYnNNO~3O!<;wUgH`jJD_)NTIjI9H{)Aj5> +z+XzsLHI1_FI7|*%%t%z+CzLRrg>!O4r2w*tyQw0~7M4<1)#Sl*b4uG*+gFoTnb}j6 +zsPN)#@K8UHX% +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 +zsgBXdh@`Yu*uzyx*Gt_=K25d(ya*JWobN4AZ% +z3^wl8Jy$!~nN)S6iF{7nE$GmBs)St(uSJVINV!LVPo@iD26l&;z#O4RP?w3raw~Bk +zIM$-zj^yAQe=%POGqet#)PJ<$uF$4vIDrJ%yc9rJ7ew_*PH%v+^!&TGWUK$+v +zY*R}^K>NG88O*!C;=IYl46nF6K(-(g*_=E?6=RmNuRvO^#?0@W#;)#!n{6JlitK +z;)SJZlJS=Q3pjEKx#W%T#tb7Om_OAeM8Zu?f-mZlYPg2d_0SJBIE~FgX=E6V=q_nG +zs;1EG39s0X`;wRi=lphm7xXeFqspk4Qy_P%=cKQBupzQ2{#0+_nj9gYF&)&|+V{FQ +zaADRnoX}s>&CoKM{;HcyUG#r%!dS5nd`S)X#s*L{jGyn-eyvY`(fEUTvZXp^x+ZIW +z%Sz-&K5Ad6M$%6do7g#hHr_q*Yw)Ab>sgWeG3Ry8q}(%}Ilg;=QQ_{f5y?f|Qn8ov +zjWjSbp?nnoiZ +zaS)cOuZ~Tal$Ns@EPahFb&pjUbR%Vea5PmbULZ0d*xmomD|@bc%6Uus4*IuaHZ>_$ +z0*Rx(!ZqoIGLL*nZNnTrhaO0;z}}M5#7*?3%7{gU0hqa$*#_#=9{o4BXB>`sGyf@O%2(sfbIqt3`GVFmokk0Xad1%jn9`_~7a2l9lj +zh5w3vjhDd0a;%UgeMFb-2~m>NBXhDJKJkLmRv|xsBt0fIGZ{`iNR&#lss8B}{3fxZ +z(uMk+eWNL0sBJdceshd-{o~$_oI=Hnq^pqgob9c7tD%r~D*HE?C9{GlJtr|S#zl0I +zgW=cVS+G>;m{C0YGY#GPxrv+v+S_HbIx`zKrUlt#s)X-`e<)vZD-2RUsCr)*S5GkS}4n9r*z52 +z$ad69d`x^xewRMP)f28ElhGNrgOkXDjD>l37SdS7g$yp7yb(VY{U_WpR5iE)84?+v +z(1Wl!_B26oGsKz%!`xQ)(jPNzvT7Y)oQ04>*$R$)wete{)Xz*wy##wp1$qhbz5J8- +zk^hVwOIPj^H-}#%yu<0X6ILS)^_pr2zAH@?qMi|j6{~cPuLcvkI<`JMG`Q8@43??} +zp#Dx^OVZ!|4c#eETTZ`7TTu*DKsq!;P +zvM6yJ)Jh@bcCtVoGD@TW(W`VXW(g=ojk>b>lgh1n#8~LBL=Sm|us*#ku_k&u)GSa2 +zCfcdU2(`>D58mmee@19?)Rw%=Es$E0UzvKEs&FzKF}ti^kTtqw{b*Tg{%nlv-)k=- +zjdc&!ws%AV`J_S0ZDdZiz(zX>S*$H;jkdbZggnz&y+`*_TTfF=wH{~jEU65CB{?|O +zJUl9(^%eCzK_;qL&V!sn9=&gRpnrIGtYGRG-$34l&e3XhNP9=0$M^=FiOWV2ma3k* +zGa61+pWQ;&08iQlSu6vL%_GUa#K?{K_S8stm}V)f$%gcJraE$S +z?b!2}UhJhh!&0?T9w?2*E}vy^VfGbgN@h&If1qE%>XE6B7>8Ikz>|2;+1EA0#X0Xg +z6x&wIMdK*l-zp~bec_Yv9PQ#{<#M5ob6PdC{sNb$CQ%U@SNBCS6uMuZ*HA +zsUO3R)!6!v-RJD#u85xPL-$@+*m2gD--0}cFAm}2*8L}uE(oJCwtl&rEoulQ#ZGtcTZ;+2&T-LvWLf)cvWpvKy%(#Co|Bs={-^5y2`x +z7T+T8Jqh$v3A#RGM4opcTac~AyrB%_TQF!_xtmFEtXyPwaJ>Hv?z!)B-{;QpJVgS! +z4tDAwE6ge4Gt@T@O;f$v)ZCJ^>X9q%X+L6{YW-ji7_aIlYpbf&tOZquohYxIln=-z +zGpE(R=;j(qnyMp5z1?gwt4%w=c9zgK0!My|ZUleCkH}t| +z;g1+e?x#vK&)GHVj@po}z2O&7(NH?bbSW`%+L2kT_{x97v?Hr9sJ%#nsW2nm5 +zKd}lq^Tn8$)FO9K-I-3RVVY&SZHDO}J(^h+<4-}CrhxZ?@4zwK4Xg}43yqERj7?1JNL}MDVsep-jPOeE4-4TO3d#qi +zn&Ljb0Cx~Qzd|WfPUnp3xW#)sc!?=2+}Xxi5ja=#Y`m-NKn; +zGh5ym`e+}rHK+qg>1| +zc9m*0>SV2Er~0z0J2v6eBR9&}43(Y>_Gfd*3~NjiY_z(P!{e#%>z(Vb6lxhgo9M+A +zm0lAAnUm_RI=hiHce50=cCf}Q4)7(#;oEMYt)_0sPQ+fj2T0BzfiJ2tQIzZm%TiZX +zR;|`BIxtyavpO11>zC?2X^yL~WR83)_2mP}1+nb#D$BAU(Wc17C8pb|R_H3kPvVNS62BPn2G{%F +zd#{1vo9b!l-Q}AaI2URhO~)^!#_}{a%Y9EifE8~(7{C$C9r_8iiEK*zD=(752RTv6Fm5c|;5W@7S3W%AJXHMDvUm?%mE|_LG)n@K#Jx +z-J(h=C$PQcUSekKYGg$?74nDr!v=9I+Bse}=}ODo4Ol7HAr~cq?L47Gu)AQG_>9lb +z{hGR-$d1>G%>oNLBibgmC%!Q0PoKxczBTm%JG`D47|UB*BWGUskKjpPWH>U8xK2Cj +z*?uyYHr&ztf-cHq*(>znvQn25r@^FFj~|IIPuxn@O5aB(BOo@HyJ4m`nHWNZ6t(h~ +zlwYjJS54Q`IEh7h~MA)V>wl!@i)0 +zInUkSb;>c{mNXYI=Fw@@dZr$ET3#$Z;g@iC!QdWEH|J{b{e`Py1$hZr%RA(F@VdJx +zJ7prbDEFkjLM!fGvRV9fWE(j0I{v!8`(ECA+gB^lDD*t?Dc&}%2rreR^ayaBg-x$5 +zI{PliR&+2AIPbu-Kf~JG{LoNEw-h;r{nQ2`N8T*m1aCZ642oA_7A{3BLSm>AQ;(Iv +zceYdAW^XdB=^ms_86$4v4ks_h0^zPf@XYY+|Br4iVFk{6e*jyhn+gT2{*G+ +zeO5QpxYyjq+7*oSZd<~7%TmSM+E^KPsfVhI%vY)_`g#MvR+m!_!4G+w%u8=!N~<_FfAF2}KDdWI;JMdfhu0AApRhRWkLF9B +z;5y>GDa({mU(~+R4=@e{6MofH)>O<0MqKxcW|8U+^WFc)kyoYfBa_irQ(5;yU&q+Y +z^abqsdedg3%^+!qs7Ek`$qiDP`z84egx5F!3NR)Iz_0hla)g0Eq)XryI)bt;!H +zB9|cF&}CJurU&jub9F!KE@^LSW~*)37^tClfw$#2!YnZv|K(aDWSSfbX@@BX#khMwPZXXBIZ=(YMA2Ootu +zAeS+kYbJii9?k;v227YsscNhKVGFP}=J9`)s;lyD=?UBbO~sw!B%}()!teiy8LoEf +z{xsAukGK9}f8;m^x4;$WV@CtK!`jPKSO1qCB82cC&poiHF)$dVaERs=s!9Kb9lH6jr5Vod!aohQ>;!IgX +z{tfELk0kO7^HAFkM>p4exD+^dRrhV@WqSos)t8Wk%%;~Xys#;~4tHigJUz4#PKFi1 +zuA#NzDp7OXoh+ZO%7a*gdG}xBpobAwqJvUL{viG+oa2h84=2YYmcaXVu?30d>A}J~c{){9^;+A(I0Zf1Y1kB66~2sS8J*pCka(?VZEvcfCpC|l3#3OL +zD0bkFrkAEd$w!!yeoTeI%OAw;Vu^fLxq&TdhsjxF4$>fl|FQ +z;DkIS?`Y5z8 +zu-}*I9S)btAD)xm{{AD_mU|}NJgpbMD97kd>O;Ei#=I8R_LJShdN9bVJE6KsE4D2`B^hSGZedU1bRLB9{#Sg +z>3OI+r-#0PchY&{aJQU6N}&jnU^zi4(m$c$E{TJQ5M5ra(G54WGi|{hz8RK6mPY0j +z@(%NKtB{1g!Q`j^f;Yy36s8^CnBydYx8!%KZ}80Ux{{zYvWyjtGYu{EbK$gF%1k9o +z%lr7EsbjHm;iUn$ucYT8Ts2NG7py1O+dfb#oE1BkEXgmIo}p7cMzvd$t(${sYh%N| +zdI#u|8Jd8qH8zK}K&@XBe92C{r>>%U8&20`E2-;gGxg=L51=%tl+o7K)+LtO<_^Yx +zb%Oc?Q=A+k?S~+A0XFxY@h|a8xfb|&sv;Nl${Y7j4t0oTCq{!C?kB6sc651mxoQIZ +zK9AHL)NuWCNwlpD4U4S|jl_HIt8vMU({5 +z3w+l{_>5M8@p^*I%hi;p(j0MsupHhamLJ5oM8!H(-b55em2n-uw5cW+QW@2q3tcVU +z{oQX}2XNCJXI)`xray$8Iu4?XcqjdP;#{zN9P(lRg1}Bx&W32ocrOszSNW4- +zclofgnlO`j$+Q16n9D1qyy7an@gJlvCAGL3j!aV}6sBsw+-LIWH?IFu!V_)5URS9~9Qc-kseNnYffeqqr_*S@iq;7OctV|-3 +zyqDetj{GmY4Y$Kl^*_)4JnSmFi_@)5dQS3fd`PTabOXFrha&T%F?1AuNjDTGqNBZl +zEvDU!9bRW_MVzv$0o+(uGw6&R=w;Nm^)Y{Mh-g;BTk)OJTa0t*)Rg30__c~7+p#ox +zGgXzl@E^M_%bcT(gWc!cL*DVdVzes75XiB6dtdW@ZV;H%SErjV^SUG +z&2DNWycLU#n=G}kGw_1zclf}nxiehD9Ib3O%z{A&2Ugks@$X?gRB#%iG^u$9LF&KG-?Z +zKmK=WvCv0pKntoVx}CcTKLm$ +zNk`%Lu0n301iB7eANS*WYBwmwuIyF%9NAu3C+_F|NN$Op59bTM@@c#`;c3gCdp+0g +zB|wypiQJD5OqUm9$`%^GlkRT=ZQf$p4&U2nYZa@?GQor$dAhNh9;!jiF=P|#5*y)f +z`2)9$2INenua~ez)tfc{YX8xVf>*94cKd$Qq_EBO7I|3iA*51kVP_lwC*B25b)=%q +zIa701A$z^t-!U{c`YtgLS;&#ZQF^ngu(lNP+Z)iCcxP;AtYvts%hWDX-)D=$eLa+1 +zNEncf>WJBXefYKquuatEw2c0^A-|~%9C~leea*j^t{67ycy)kTg3ZLO`JFI*2Sa%S +zSG{8HOSt$J`)RLWkJmJn6{JTY +z>M?NvZlkqGp1E)vZbR}^j47%fsy(asz~?j9df7G+-oWaZDg9$8nWVxql>%fRafvecA4;pDBo{<}xf* +zlyX@*Ax7ajTq`(5tuzWIk}+`Ntx{*{G{$x2Z`K#~w$A$SBsOuicb>B^#&_b7zMN(l +zvzoXf+F%>r6xD>4!0-NZ@GbgbC}c5fh7F}dxr4$Hsh4sL8yT>Go!UmehC6+d +zY?3w!4R|vcuTAhezDgZS>-mpDG5H#Ch`x?0Lt{*tH`(BVblrFVobi3e6xbB>j)~UM +zCcA!|`aG>7MvFzba>>21y^-4C9`H-{4wVb{iKL=;z>#0Zex6~tZ#$KLU>+z8$KVxt +z3AWx%=C@BvhUo%}XyEB?e+akwGR2k3V!W^E_ +z$UVkc$le8=#OK)mvMUnbJMqRJflh`I{!J?} +z9DP$#%7T+}Xlf8{L60ND!eh|EBtzSVr_^j!=Xtr64^v~D}LaA;@YNfq|T)Br$47TuDNhREGkdN&fa;X4O3_z +z932F**R#Zqd;-(iLa`6Gr>Pf?)}TGoF8&TXb;c-l=~t@K=qSuG +z_p=_e^}vRzsLgL3W!Y$&X=tM3)K}R*L5xjDJ^B(}SdaX>GLN`{B=k|HjB18@i)J7k +zvKO_LwE2;snt;!y3<$4R=@p4S(IFtqmcrt24IbKAIltz5u*2(rgjarKgnEetF^=A; +z8mYalUvK=!v=BbqCgxvF1&j;zSG6D2l?Ot@I6xh#x{qK1giMzc|IW>Q7q?1jsez~)<~e$h|N#> +zxlCyk@iU#n(wgnsv$|H;<>S|7=t7$Ln9UAka^Rw#M4W@`caZW;d58)0MS3TDO8r_J +z)8`sDnxmH2*19&Mt(oT +z%A=XAPaB(B8rxpmqmC)gfzDI7Zw|8tO;P;{jR*ak+R|vuhWCLjTNU`|yN47ex|rBU +z-Y>W?9F6{#aKqmc5+xZfX7X>OFu$WOPyzBeu@IZOuZRw{ +z3A7CM3VjZrj$Q%BY6QRG6-Q&MPG2~vcM`>jW=e*9Tr4B3Od5F@?9Q7w%K~sL~MZ4Fz(EU5S*Xuxd5w1t}LRPhDmo7s+jpmfyxHS{0*YVo1 +zlF>gRd$C)*SZs7$gJs)vFDGlVZ#6v)JIxDhNykf920Y)}uuo)xYm=iY_KCDJShTm;71UDY +zmG~PrbJa|BhAZ5e+?iaSx`SKPNhG6IV2{W~%++g?Ux}hb92u~A!Z7Ua3&t-+uY@h3 +z>wy@Y%23ML$S_BPa&c; +zs=sIUl3kTS*z5WpUi51GLjHT9*?(sLCU8+7rsmOVyg#ndQR*Ox4Mx%eA)aoUTot2{ +zhCJpk0fW(D&j-ALD)<`)--V;GemHNU@?B~+h|;3Q$L6GUu6;Z@nA05F?M-YGEZHW? +zuvA-6eTO+n{X-1ImZ^Kv9w`iC#d@R!Yf`&uE!#v@U;PQr_ +zyYpjf!?}SCu+C4(eF`7tSXk$e`N{{2U^B5XeOs8Pl%juEZPeCZ +zT>K%FNuP_4#&(U@zP~(`a+|`lKP+cvZgtpOs)Sm@He8b1D;kN~v`sY=oY)urO}P4_ +zhIWQ#`k=NuI-x8(k~YI6T9x=4wP}B%ExC#+1Cq_J&e1;7&o`z_4E6yWw3N5F%)^Xz +zVD%WnDr7f#Cm&A^i&YN)6p+0&Jm%cxIoK_bOW=eZ5d1DuH{K_;gx@F)C!&;vJ&UR9 +zQgkp!YA&nKsm8K;W(`#ZmMRWA3=G(1@KF9+X-T^2itI%7TWx*ARB+^#Y(wp(9qk=& +z?RRkRdxd=7J548cC3#NraE)-@{EKPj2wy($VC+&zd5ZcT`~7&QF!3A7*<4X^j=Yv= +zK`o#=Vh_VSh5*f?ps&yl`z+6k7X-6#6)DW=c#Gu0j)VM#oJ +zoezJxZa6DAL~B!X9>ZGHH!N90`kgC-%4!4rx0M3Du{&ZNZWpoO4aF@{`=o(Fj%fK{OC(Pn@aWl3!F*?=V1gSrJJ!#msVkY(MsKw26A6w)m}toI1dtk&G~-7Se3i +zdrV)g;~X$26t*kv^_+~z2i#WD`GSO#TgFm9Hvy1(!rI@LlzJSJ!SFa-LRKUu%Ok|1{Qguiya}?y9fJG)Q+%(z550YSoBSh! +zFT&?y8ti!)CAX#WtInXl@tWJ%3OcfoxO?O*f_>x_ZFb8cV?O-^&1ZHz{R25s(a8o0 +z=5+CfI7ONvUsCd8JNQ#Nj;&gqu_MN!s>OaojT}}6OS|~9sq692ks6`b{v7W(&j#$6 +zxeJ+@!MM9i3tLX1Z*lu&3s%t){K2^|Cn*=luoL`NP;5u+=Og +zc3{6ver1aCzm4m=KzbZv%d6*Vw!$WPPPbl{)IQJ@QS(ecYO>N!RMLABgQ9&yr~Ko* +NmvXnGgZXpL{{h>FqBZ~k + +literal 0 +HcmV?d00001 + +diff --git a/share/sound4.wav b/share/sound4.wav +new file mode 100644 +index 0000000000000000000000000000000000000000..3063d3cc29820c4209fb383cb9b2c6f8078e25c6 +GIT binary patch +literal 35324 +zcmW)oWsnqUvxUp8-5Ylq+!lA&!F6zVhsE7tad(!%-QC?`ad+CSy1L7&?)%-Cn12M( +zMOS8?Jm*Q;HEZ0MTMR*+>vd{0aK!lhRtSP%@YC=x1TE?ULkMJr`u7>%=Q;Q@5Htr( +z5LKA^Cdk^?-rf1b6>(4TEcAFhrQNTbPKRpUVup=%=^?~Q^bV9u+adQB2lF>m47B`V&o4i>R5(Jo&ZM +zQewsDVoYo+Nm5A8uddVTL-~;cST&+6HHH~y%rqx09c=yVE=ONSeaA`rNm~Q!P;)us +z4*E86932bgS09S=(*u(;;@=|MLN@~4{G)t?uaNJS@3((ea7mbto=;rjVtieBvlf7J +z;<>0#Oe<4gi_O--Ud*w`G1&n*3fp7W5thTIi-vvlT(T$L1Z@RR)jz9Kly35DDJJd_ +zw~MdDdeR4Jojgcspyt;6+Gf2tv<$ieorC^{bUjlas&!L~DIcXdVsYV9`e14&_b6F8 +z8D^7gyQGmTm|B(YC=8M=D@}D7et>N!hcI5#M$3EKBS$aSB6n@i6i*e;cy}e&bVn!K +zV{_PWj~a<{@MtY5t>OD~e#gN%}6AVT_!e1d5G)K?SX}zF6S`X{X +zp;mBSB#qoh7hxsv-FN^`;n(rT_G)BXEwlYWDkWMD|B+kVuMDs)@hns}whKof?Md!zgCD0_3D#dpZXUS{S1$uM% +z9a0o4hbQo1#5Q6%(SW#(=f*o>)6wn79aw|fL(laodKZ19enoEtp)ddsFBpFsFB+>FvkZlqb<`PRDOLzssy|Z@sS^J;_a!kUmK9kYDiy34IN?9! +zFC54nToIZWxflDJotQc$MQL(m^ly1wrm3eBGmRr9Ho@xfP3K|9(p^5q- +z?WDR|=`0(i%fbY{QMy{H2X{3&Aeoiin{2@~PyL&2Ei{uBD~O&A_s7bTNqW06pQXR8 +zr$cpCa?9?f9BvP0vlT>8YuWX{m9sp)-Tf8^|KW +z1*|t(7_q^nq1n1gf2FYDLxFR@ZQ*1v_A3*DyR2S +zhsy)RE_}z-(B%F^-uV0IpGccX{zz5?i{_5)iZ5edb7T1S(oi)UN}x5#G0ZemOY2j6 +z(s{(qdd_=g?*(ttbJU%1-nZAW4luQ1X!0=H0+N(R;`4Ma?n2^hEO#^!t`_D(`NC(z +z$0BfSM|>(fpF5iVBjk}AsLk~v@FS!G))6mDTq8)5A)gXi#3fw7@?ka5uE>1&Ayfgn +zr~jib2H#96=moSNK8QR+jd(|5JNcdx={R%BP}w-z*wq*|6fxk;Kh$mF1lALIr}`w&|Z>)+-3AfWn;$K`R4c$!u#Myt#%5}5DQ;VD +zU+u{0Ea!aVa5`AqH0xFK1LHwv995B!(GT!v-J(rZGUU8c578%_7aj|F#oc0isep_q +zLFJLUMa$Gb>D8fuP&d$#H|ahN*CgeIyjE&0nuYJ_m#GBTl>3pqpMVXbd#2OOSki$VhT5qf$;>z5 +z{!3hp8KRHFdT3whMyP4Ha%5)I8&4)6u3UPYa88OTj4neLkZRa?d=OzKhmo_%PGpSe +zLTtuwVDHg5VnG_gn;|c#k%Rgj-3w(y{ovL}Z*&=UAE(ILR1dlfQ_yhSAQ+N{&4vK; +zjh;n4BmTqIA_bs@>PsnyFgW#+9UgBO9TE-&-vlZI$UxUXMsR%SuSmaGGVzv!gl_Un +ztrPMbFGY7W*04OW$&QPlLhgGk-q)Voo`|cBvyEM~3^Z+JPLY?e`*1|7rd$+f@#|6$ +z_kc|%rX~6(vJ;hAYqBUeBK0QSUU(~ZkS{BQR#bOFkD=!9Qg}7o7f8Gb&;y;&t7^m5 +zBMPZ3kSoe=xw5=buB{YP+iBQ +z7z;Bq$&J`7xVc8i_xWt@Xo8Qf4lfIG{#U+=KDTeWZ?OM);7BMH*%V)#Je?+`k?Jd` +zDAty2z=VypETwEm?bjULo%5X4oeLZz?YgzGrM0P)AwumUx?x2T2UJd*r{s`RVs3GT +z&_c)*RtX02lsHrBBWEhrRFC#io31Cp9BByUfX?Z8_4Zm%wW*R*{wD4drt>4yi&Ag6 +z{#-S#7x$h!lzNqJE98~RE3-8S-i3A`Ncw;w!#v(P#a_xe!`09I%KgyYz+K06)A76PgwdA(+8gYd( +zOK*#$v7Y2~x|!jU@rh}M`I-5qxtIBf>8x>~p)_-bDnstUi(|KuIq(Q*x&B9+tTofx +zX{$9z-=H^xEbwPI8_7ab=wR#sb`qP0;aD@YC1QoQ>S?uv(okwA^i9vJ=Ik`Wm_(hN5d?!xK}JCsHckTH2u8 +z)t*5ABGrLv+C+3EACoEa1E`WDQG@7*PsSFaTalYE4v&N|=$ZaPXP~K2L70a*#Ddkr +z#}T{9>(mu`IaAay-LS~ez_6b=OOK>p5i#s8G6?#jR+EZT6e;?khRzpVi47e +z$z{B4s$v;zZEkyM6K&^gj4fdqWnOG-%A6s;VsGGs+DN&QU`u(~tXL@gK3E|D`&;?) +z_{R8}`F8|{hxSJ5#ET^}(>p|39S=Q2Ns?l28jD&oY&Yya#|Gzr&dpBF;kVDWJ+izu +z9WxB3?c`-_BGMY_sI5}W@(b~sP*eEHzvM|_g5VZEi`S)-@?K@7IzY>*@6}-_19YzE +zdRu+Fc1^vcY?DVzb;X>5fiI9Al=5@OxSL$@)UQ-3-A%AaMx}{%3TlW3@HJFf!y%Jk +z!9bnnc3Iu4-J9LT+*MuA97)?@3uSUJUy11`0?kn@;`P)%_D!s3q-E%EV4?qq@0u^K +zU-GvK8p9=`o8v8#CDKL3Qc8wyKyG4n$nkV%!&f6^erm2@sciXfu4Zm-%4@vEG@{Rt +z`G{3m4)i9x4%(`J(AsN^rl>`=IU22>&__X4VHmjr`tCQh0@fNUi#(%W}@9 +zJAS#kdOCVvfC{PUE#ukk+Uuxin`fS3s7HOr#=?wtL0Zcn=IrdNm>gLZ-V(|kvWKRG +zGQ;yC*4UqTnk}DN!2cF&DKoUq&;q0~wi~|(R8ui(0F^~qsb%B`0w=t90jwn202vS8 +zhnhl?{#}QlF3@jiH@p;Ci=M{5f+=w +z?*8g&<*n-7?OE-%xC%SISToJ@46CW7_#9-3eo8S*2l!Q~XUSpg;KYOYviMO@Be8_c +z*5!_+YVfax(UK~UR5>?p7)&3E3y-QdTOB +z)!N!v{S!0+C{Bv-leg)A43$g=&EG9gt^I79ZNqFYtmMH|7wR7I$L_O%R8{d`#Q{x3FAxvtHAaJ_pzW!h +zc0P6Hc5%)g&K?fk*4mn7u3-E{&m;5W50DkmOf6fXPfAG{y?W7JM>GRq5slyX{FS>iYC1i&j|A*=B#)KkL=b9>t!#|Bp}PlorL_ola*x0UC$%jZ~W`(plT*he+R-@=16v;2ww +z%~fapphBjF$A-QJZw7OQzJ&~tmC?TOvFr&jn>}3`( +zE~YJA4XCUfcplUT&DAt{5ZH&BalaF%V|ODZ!jWLk;HALJz@XrSkQ9zbTO}}#qS_#<$& +zy6UU7cWPzzoYG%u0)DS6J=GdoCw)Iu5_yGg#D|hKX^q)!%w_IkX=RODE8B9~)>-#i +z+L|{QXE83SA3g~gpx01LVl_SEx{onvcG_Osi#RoBZ&!2IP3JSmRQn6-SMzCOABHCv;`z~+&=KvDLdu)O +zNx~k!03S-L>2~}#ew#2uoG49}rvMM4iKb~w^j|s&CG~xJ5q-S2QQf92l}Ab)#HKEN|hsEDSvP0hj>--OVGkq6)A@`AL=u~t8+7bPYR6-iUIiQPL8Fi+7NsRDC)8n{b?1IGL +z__~-kCPnMT;xRHYpY6|WO&1h{@-Iz;i{q`SUWSHX%WCRq?0WC!JsZ7ey=}aMJ+Qm5 +z^P{bjrH;`^AH!=R_q73XaiLIZAdAG|=!kG;XkTzr@LF(UXkFMI{ThoU%5&?|j5tI7 +zsTPCkBKff^xSh;FJ)T{tWbq9n$ptKxfhL9e6*o +zAH9UV#QzY#$=lT5bdoN^^OK>#n>KoACFz0c?eM-RPEZ`_R}R +z93+DagR?`4@T+Lv#GT~DbVO{a-h^sn2go=BneSRFI;y%JfEhC0yTI%87V%sKyZTvM +zIm-~RMfN5dq7|T8>Uil7zdLn0S&&V}OT_QR?!}74-^Jf1+{r~;zVu^$wpdPns5H{n +z>!+Yia6RN8@*25|%tlOLB3_47y|O-0d!*J;KPiWllS*2d0%k~EeKPbLo{W~nqr_=y +zG-ER^F+Davv`n%-wcfI}vre&8H?KFYV`@`7@Y~3BeWx->?2+!BTo*S-KZNMue*ZOJ +zC*NqF*FF8iJL#sp4jhQL;&&-5N0j$!w$?{Hz67UZT6iSOrNCB(xd3NRFphJl*Rj^UEo~$d8M{= +znQxf-!=3`0h&6I0^fcHiSTA@axH=RKUx{+@CCM@Ajbc>k3B5xbk*k;krm5DHopBun +zd&o@ibd9`&JQjCTXCC`@%Ln66`Z2K|T?#yaBa%@#l{%Uv*cjw5^P6L<~r8cqjBhckBJMhiYflp<-%zb*tJ~ +zE2C!u1z8ZifsH51Qa|XK1|DdJ1{T%Q$2!Q$Sesb#m{%IJnSRt;+>E**RQ)ABPQOT^ +zi3!oF;cmg8Kkggvo9e^;w!r4#`mhwen7GZ6!YDbQ^+K-UDJp8%Yz|sqf!^KP_15Kc +z&2;T|4t6}T{ji)f^)URTvWU0n0NAUGic9`mEG!h{$EKZWG+iToD&3c_B~%leNZsY3 +z${_G*budN#r+WkXX59-Mx|LvxY><~p3&nN9Ej|x_6javww46T1pAl$jpS(!jtq0+D +z*khtGecT|LtkyqZTCa6>bnOA3DLu8SK&imFn{hXG!#qTEiuR +z7yNfY{SWm)erI4?aCP`sbU~s&H;P{+omXE#579M5F1n+ks_CNnt!0_@z4fNGm36jd +zsM%p!V)#PmraBPouprVG#-T4-T&<`6r~IoNRT4@+RZ@>=WAv(!0A<4!kPXNqFiRF8 +z43Y_Vgo^3+)q2VfDJs+e&J4}%XJ;ff#*z5#*zee|c<01^wi`DneMcB9*VpR9U9oZG +z3}%4IW1Rz>y2kE#o~GV^yqVr*p62cq&H?s!mbCE&J(VEQWqK~-05jxJ^jW+;*!CKUs}w~ai+&}_ +zGObM|t*7kood3A*d**pBdq;y!B+I?aIonQKo0-}(RY^1U2YRIjq{_krP$BWey7;b` +zJC=-Ah&_p2j%Ogcp2&4<9kENES +zPN(vx@27Y0n}s9dL+Q7iP=2YWfGWHTDg=R^=>7Bu!1FB#e4k=+F{!fHTR6#A<^`b7 +zTJa(Nz2K5I%l*|M`c^oJ_9UKA1J&k@GXXkxA`LJ?Oe^IiOrXo7B3sG6F(7O +zn7GOIW4U#AdO7Yc)*g&Ud@?uHSl=7qr45g>pTP9SDd@SjLbBZ2TsHY +zG^S5d@`#BPksJ}P5bYbrLj{880}li3f-OP^!vmtj<0nB9ahh)>eOG$wr{Q<#6}%gH +zfZ9X1V*X|JG5wg&bbh)DaOrHomwJglKt97>cs7(5;=p&(5V{2QhD#z2)QA~yj0h6P +zL5&=vUQ?&3rqptBK2Z)|gPw)6^+Bpp-YwKh2a*>OS7KOnTX=1V3*HXWp}Qe5yghm> +zULfgDrG(1LX5D~JA|BJM@ttM3eW!Dv`?P1S_nCLS_oHXGn|J=OkF}mN-DLKV{zZ++93QE&&s1zTptE)gI5E;{Sq2Q +zf1$h43g~9!4_pxL3T@N_T367|&Z}qDxH=H*j1*J~o`Iy%MR+mt9@Uk3YRF+KWtPoT +zEdN?SerSGa8fQGsY^SOd>(Q&wZS|aVm_N<^O0LE{3W~hBZcDPrUbvL8{C%&lux3)*U +zsN9h6N^eC?Xa?rU1bzs=hc6`{Vi9SL+(@km-0bxzi+7?cxowlJo^6?Rp5-s|VI$8Jp&O9{@%89WxC^9f +zUx32OQWW{KEXpmEN6JVwLrZ8E^}nG!@NQTGd#(q01lNaWfPAs7mQp6mKCz{6CS4)* +zBDsS-kdWg$;@jg&{7T|GJCJLfo+6~BBkD?MCAx{&LeDZ*wH&v-b?kI0?w_8P-b&t0 +zp6PC%^Rs=p^{R>ahM#&omG<`MsGSM<#IyNO*KH4VwB6=wHI$n?cnLLzQ!jBc( +zgI)cR)*M<3??%R=8rl?Vj}^vlpnsu@kh`!9o@ScPtGM2PjzN5#Rf(Og`Ncd +z^(TNMYVm*fmk)}ea?uCz)5#y{y3$3p27DaDsKN%_G~c=(RLC}0ANK+GME7IYNoPez +zH``y9H^vssep1D{BX9IcY8%ispYsdSt5Y0zh&#z)sf}Rk?!iwKc8M>6Pv-=E_p3Hr +zkAuvuFcj8j>c6!jT2r-~GEkl*Z5MwC?Z7_ro`;2TLV2;Kv{Eji!a4)jLKoxT$O_CT +z<9zc#D`Ic%sN_83yzA`iTu$KonF+ +zUf(odcmKJ-{LqC+qj=6_;dDEYh&<3k$ZvcvmDf<;L|6t`yV}0nG}{@Q(PpyVHrF)G +zGaRC?lP_@=ErBe8JbkJUofu98e+N1Q +z>IL=%<^~^y#z)4+&Lqlk57U#xqRMTp9=sCWjgKZ{R8A(!3^%MZj55H64$N43Fx7yx +z5bv>L=r-gK{0qv2;`)94y`B%+2-Siypzi-eZ({rLi9`W%8~KCuk$cD-WL+XRegZ|2 +z+z_Qbm*K|v6{Bw> +zzaw3u#bV9lClei#1yU5R2odSA@{d*sS^ysdZ+#7H8+HZTg=Jz-(BkM&WC#2bvO$CN +z&)Re?Q|qj4(Q@f;^m|YUu7>W#iW4WuiuAus)L<}$Omoc-%xBGw%;QXTfy%l=EhEfW +zSD-@{fV^i*>JeKy{vz@qR50lG7xjM!nZYN2j^Hzp8P1INO3qJz7CWkMp|;pj@&j|r +z)YZDe-Wlx2^W0zESKUS2URSo`Kif%5JJW3@C)FQ64gTE@sUzhv;x)cUx?O5JSC6a0 +zP37>^!_@Wk2i_nymS)KNl+)@~t&9FmF9)3X;?OI-wZ2Px1&A69WQVn-8R9Qt8b}-a +z3Ri^zVrMWzoa!s>9`pw(hz}!A1FA+h{jkiny|O=aWI3lhOM`u=oP8n4L~&z%x&{HE +zd-dANCt+=B8k-%<8#g4M)Qh$UDWw^c>*^N)2U_*72 +z)3VsQ+E&Ki(_X~B*tXW%#`4f)HCAA1QT2&7*aYMXR7wA)K2ijEh@3~Z$@SztawX-L +zvS0mMtFP<&E+{`d4phk`Fy~i8_kn)gtTtBONS(x2eD}1*-A~?OQFd8kXyV^QHMTr( +zW~!&_3u~pKYCwO2+``XM8x3vE|5+J_-`U4K$dmG*-W8tB?hIE0N5WdqT+e_}Td~~m +zX0-%xA|54?#Omnca6I@dP%?mlG`nc9PY8|((Q1j4$@aj_x+9O%V0Zw!93My0bW5g+ +z;h}*r#tkdL95FLE{fXQ~^u~)}2&%w&KysMUPl1{K9#9XD{-3C+iWbCh{0+W{u#)}A +zDP&9X4dEgf{5)C^X$Q5}N-GKRFh4TYEZH)#Fh)hcgdO1%p{t?V;fj$>(Gl^zY}J%U +zs3cF*KEd_yP1F;^Bl9fV7so4CXHQS>FYwdH+uifU6?1I0rOdQ3L>%_?yR?;_E+$K_7lPXWd_yb=43{CDj+k) +z0cxltxr~`>%CL?GoBClH<7Yslw^n`~=~Gs7jTU&T2<3Lw~6M1r37wK!u<)dM>?(wov_7xh#K^ +za!Hd#OuQ@H7c78&oFr|LQT33v7+Ql|!9=1mJWkUus=$ +zE^nL(QuQt<0c9%|WbPOBeGt;|1n2b(%N{a`iOSQ4fHG^Ql}+zAa@- +zHzc>bS#F@<>MM1RHeAmQ9fs_16Sy&KfY*Y&N7MeO`;=z#JF$;yNdnu{8TO +zp(JLqeUiJln(5NQP{|LJ`e>vZ-k2(A_-N{7-ELptG`b6VZg{?XW_xzI8@NU~O52v2 +zHyHX-IyM_t)rC?;-o@2QT#oJxbHQtX_ILt3mL~x@xH3FDdNp1(`8l-(xY>ENtI%KQ +z1TaJL(UX~}hC;@%#u3IG#+e`?-$hTPDv<&FUu+oK2I&T`0TgbwJ{zzCKlJVp3|!ys +z$ZWJ9_7@((XA<8Cii{E~h(CA|yMWe0=0TgaMM{=bNQkALCtoE@@kP-NAe~{tczA5M +zZDe<}PkaGOq+atsrTp3?_&rvR8U%LP61KIDO|H_OCf=`rtC<5jKmm6>r)cYD8E5QF +zdx?k0Y`u-r47l}5^1lQfKM*|^sT9c@85b!5Se;GrYOIli!6xFBaw(X0U(bTiA}`Q= +zSXF#Jz5?%or?LLnany%6koxc}=$+n97qyq#Z>_w3UY`gJ1$pQTv^>6(umUpkD)Zg& +z%s9>T)f6>ln^YrjSj)Vl9ut3KKDdOQsSFV3q|YVYiQ~}?AXlFo*y*qAZ|VQ(7XwQ| +z|3t*tHTHQbm$*!^0F5jYHJCak&eFos<6ooh4WLI|p-9ldY2DlE0Iixkahn>Cb$II7PZCrxiv^X~*?Sz&Tk9jeaH_j?#$%nN#?80g4B9qIM-*Vl`*)G^E4&FY=zR}jt`pcYQs%NN4XOJG;jaGuE +z>4JJ(IVcCE(NcA(k+f7oc* +zbat(C^tZh*2Mt%LKKO6AkLHt>@_o2ziBR-PSPh;D`2Ab_PyCYun}UVH#%RO%6?R~% +zq@YN5)xRMG?Su~@%YZH90_d3^jDL(fjW%OFLoLQiKOn~w`S5q>eq<|r8L~i|^&Wax +zKr$xvxqucRkRQl(bS>5v598g4)x9c4%NcMHVLECowy$C+PES1 +z1hC74!)?Qd!V@DWqgnA`>^p8fzYcr~7d#fbOX>`5eqn9w=<3qk8Q#}k#k<{m)zjO( +z+}YlK#q!B`lb%DAMZf5~lx5;Ez-E3*Xt71n*^yxQW|)keh@6XB<3|#+lhaZw_=DmV +z`J%d3uMM9>{-Ce1nfP}cBEI1ZaUE-iEkVx!|G^42_FH;K;FsF;2KsTmBUBEqjtoOD +zU^$7IY=9*fXE*KvgW-uS9U&J1)I5JH?ro0f-=`!3uiNY}~QX}*( +z@XJ5cKf)jPvw=~eK9S3@@$8h;6`(^7>7~)_gpcNpmn?-rVt5)PKD|AEd#s-F?(fc$ +zj@-6efUF-+?1Cnyz<)mrjR&sQApNlRQPlyvoFyNW@=3SEUE)CO#aU0PoWc+Ch+So|N)Suf-=KB8`x6`Kr8J8LZX;9Lfd2kne?F0hO{Cqzhg3 +zv4A@(26WaWz|`DNuS(6~_9xBBtL$|)SMo*jC)XzJ5DH0?6hglY|AP%As{sCOyyc4R +zoTDS)`XM;JJU4f4RRz +zphoawXmjLAtRWlYF7j)oVQOjUAyN_VPFACDGOXdQv6d;zRM@oB_|EW_IY{@UAaV!b +z`*Gkyguqq^-Z;I0UQ=HND6M1AXt)8$*AwVTtP}nm_Yy^jI6e_SgB?ZtAs?XJdIdE@ +zHjA@hBjZ!V2ePeTmWom|gko5ou?y9>NQ +zg!hhD_n!9t0V?vX^ME~%wSlP=6C&23HKCO9pZGgnn+qj`*obJG$e!@9@Q!eeNR{Z~ +zSfK>Z@|>NoCU%#Ht66#;kZ-0?4ZDt4BSsLtfC}7*vsf9dGdcy?4Q>`HLuWziR$tH3 +zj{;X-f+8@DHp159aiTG`gg(aXHw-rZGCEB$;~3*cLqFy%#S>4l0mviW1X8sj{9cY= +zH^;_Bc7@6Z%YbctwI2z@1KmQ^B6DM<*wo?Vjm5 +z0KU8VVE%6eL_`hCeq(^PlI5^0c$el-u82qZSZV<`DS4lrz)oTRW5*{uaU%gSKnTOd +z|D+6MpgIevlETm)C=7b;Q)mq2*K6n#w4H!mR^-O=ajA*ql=4VJzy-{Ia$L#OeEMSgI^-~)LMXEUPkt2{6>%EyS1*ptmBa5oTHOt +zg?*Tfx70SbHP&G~Q~cki2khXq{eIk7#kNguV{2<)5Iv@KmG~Y6n|zLwqxS0sL0Mmt#B8 +zk%$I$*5|0pkb_tu);U@P2d@+K>HpfS@W4N{Hdx8M|-n@Dm+KfP0L0rNAAzl+7h#f>(Vio=z6HzZ(6&VB{ +z1K-1OeX>3YP;>>Lhak5)guFyucwgXR$0-+MGrTwS0aNuKVbxZ!o!N!YJ7Q9g_3_;0D+AOZNBwSwKW75kgL +zo_xi*(&PD`fbYK|TL1^pKzBjMAsbv7E(Ca*{$R5;>2JH_n+(>=~6wEB?tW-{p +z%bZdT_^Bh{=4eAalk7@&FjO%8Fn6@hw6(L}wf|=yW8Y=#Z@pwb2H4Cs!K +zwD)l&92VzQ2j&Rbrd#is-y3f*E2&OIAq+kbDGsMvc^DP$6+K +zr!rG>!1vH4L`zyU%mzy2gZ&@C_g``s_SihL++$n;N7S~=^2B(Ho}&n125N~sUbi@1o>b}11{aJcxJ3wbbF*@WFokLfnr1A)!Ct3B7F_e%Yt4T +zT}WJ~Ul~tW8ro+#+q#c?)_6JKW)<^l?(VK;j#pO3tT0!}ewYUBQHMx9_%&P(R*f}@ +zLXlG8$Dz-m?%{foIZ=E3cOsm0rP~Rsr8~+e?GdyP!Lhn{MdBk-jciL6BX1F9h_U!q +z>>TOI9u@qFu5s&71>dEhsTmzk>?M1BXO)r@!DPu;YqCQiBr91q)R6UMJmSm45 +zRwW)My0E2^HM!}jZ|N?8KWQzWQUuin@~JaG8IFR-gZ$tN)E3&Ue+BGv19gt_N$x7+ +zvR|U*VX|FOl?xeA76Jc|!WI +zXYfX?t!xqgaDhar*wyf{pgHiNq#1-7W(mR(gRXQfxky_CAeMO +z=+yeOUHBpTWmwwVUp+{HS`UI_60Bi!I5!94^dPm;r7zhSYPT+Dl7EXwI) +z6i7Uk+5za^{*kQEoxlOV+0Xg1{IvpWgB`=;qu=AplKs*h#8ygmok5OaUa~4p8m1Z7 +zn3|fmn>U!No0prm87CO>Ge@aX-~QHXfaTRDrMS9?%VYNCSjX>BZb_wshiE>~7Q?JsY_bsS_<4n;fsi +zw&8B3XNr@+o#A^V57B`hVr*gY*-AT2?&+Sf-alX$sq4+~Y;dh{l&}pk_cauw9%6l9 +z2++$r_}g4nmWPSW>I;2}X=^xS +zxMY}Y_|CBOVah?4!ErPj$^lZf%Yr#QF-av}Mg!r_p%TI2fuez|fGJob^evoAQCKy;=WFka(5Q+>-+YkwPOD`@wF +zgs+VCr1`mVHG@!Pz?A{7otLKy?Nja96){gl4Ymwe{q1}nUvFP&|CB)O(5MI$|G}c^ +zw&FRZ05lCfLtLQ$Hhwb)tPAaD93!14oU@(39N+D8Y_Bao(|yB2x-$72%SL8Fi?q8+ +zLz$FZ;%LDwV8UO*E}@QyNk4%ayrmpervU=!ylw@FRRQP?a8kBv7uA!>N|1__5FsIw +z)>3s+m${kTaxTFg05@W}h3DcEnb!V>4CooWAB7thn?73-wlje5&*9E?pL4fz4{{OC +z3U=1g-qeq&K>mkzhTbTBL~}aM=7?_s3QOM@0e!0 +zYrbn(PF29~z&$jB{EL^k?yM(XHF_`nAXGn8Hncp{HM}6g#NNffv#wNs{)%V?>U$8> +z7O1Qd_$p#BnItPvC8-}|U-Bf_+0z(;S)Gip>T2j9Z8Oc6 +z49|eydk^_fSCr0Df`5~;aR=Cc6KecY{7t-Bf&o`zt-155+Wbplu#}K{0|)oMejMrr +zzko>uLGHm>@B?r)(n(*c-BGRJnwL=S$d~1WJW$E2dck$#C8!IieGY$5UZR%(it3D+ +zv-qs@ZMSS&Y_!c_-2?Q{ai$_Q8lQ-C)blAm;d<&Cn~F_{WQJA*8u-Wh3j4bGoc`7U +zBvd4FFgBOno(c$UmFs#TbPzF_ZVK4U@7A^UH;&y-$@$5d>Fn%)?Om-S%q@%t$hG@#zAlaQ%E??ui%gI7Gby0PpmIhl1qboPguLF4FKts1L$8rNJGDCF0FuS +zRl?E@ajUR|-v}-#8>K{!=NhN{V5XK5?u$p|S85sP1kw_ZlS>(cskdd4ts&t1Z@7B6 +zXS++fyShxymiD~Xm8PT2BC8Z)WJb8&W8Lo%@N93h*8m<^2^LKMk3*cBS+2&iOUB;G%7l7~IMNs%0Gzany +zDBT#i4@;;|)Sqf;Z4XF!MExqX5N?Wa$Sm{+*hon1Dq0C0jC6-x&=$Z9l$AS)6ZxH~ +zAITPMApS5WN9RY!L~lpu#16!(vKidCv_bqShczeC9G^_BFibWVvQ2kPa*?3Np7%cS +z_VSMKXs(>jN4ETy;zo|zgqJ`rYklO>LZ#F^wp6@Y^i+6P2oHS=mI;MIrpV%G`*?SD +zEf-3+7Ej2qRt72yNRp}ed14>g6tMmKs1cMvwjpN|8}Mz|F7z1k5_SWnl^5ip0@&4$ +zL0#dpNCsLP>kX#JE^-ewkFE$VUc2@s`+F+MS*kA%=RwYL{*9G@oPg`#{?{`ng +zJcX9@{% +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 +zksn}~W +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 +zb%@PtlWew3W +z{K=nytnrbQkX!^iF4iUUr8G$5|HB^_-%7u$FTrr%9$s0G^*u~yEq86R9PgaBT$Q1k +z-S67zEZ`_*dv4AJ?&arXfBc8mM^1nfY;)pGbVPVW@Vh_9SI1Yzx7|12|242TbR$wC +z{w%qjng7XLW7 +zb>6CX)BrGN_q5@_mLpgWwgqpc`=V<^OeBU81&NiqOJLq=gr0*}7AvzEjTh4tkj7hM +zb)yv_^H?_AEc^^IV#Q*qc)`?OZY0plhqM@0i=51?HB2zuZJl5uy2ZT^-XZTjwLHJL +z=Q*d?P1fe7`g)c=t!s_)%B9RP{!6M4SYqZzDu=s;5k@l+=UJ$bgYG--LT=JE)v?0X +z!gAY4>xKmK5>1lrQ_Isq?oZ(@k{WZI5;Wx5H)N9;U-@u20FObOBpRDd}zI@63lxZRrQR)HQH|G0=y&0b3yM(AU_V +zhR&wfX0w&E&a~}=H^UL@BDh0XCenuF)f@BjtgPnGRe$8nL|)JPEcB_Ca^u^f(}G4m|ES1?^_4x +z_*RoK>AE;wXwH}C>ZKQ?^r^StCm58fnC`;m@Y{ef#MSvoDclEEnGX7|#u}FPHaD<6 +z<6NQ(hl$}fXE{e(8)f;!*pDqq-NTz8cY&+JIA6jO+ZkRFjQJmdX$15A>8lJzml~nA +zk#n)G$r7Af)XSWD8y%>7PNwKPY%N0Zs_rC)7=NI6fdZMK<5j%yq)ZNhGgn@Xi`vWp!JK$yi172AJQ16){9g1_BpzNB-V`=OLeTAv#wqAKl@p6Wj(REff-r%b)Mh?!)j1;0YlT( +z8tCaa`>XrE`|03*u;%?1Pb4Y6L*@=t>UVXe=z;qFKri>Q*8^|ncDKPJy0gIv_{kyJ +zu34&^rs+4+dx@jiJq=ezW%3IiE<0sQ=1nY&w~J4V$K&S{my=woGxr?${^{PJ>RLfQv?^;i +zJTSHZ1LQQT)7H%9woR}Ofp>@-?&;R_RALO)P{Uy&vM#+caXZ=&a)tx^1)<+-^S1Tc +zeVzOkNQvHzZcqG`#>4^gQ>{4Oj~vXDFl+*@rX|!^^&Kl51HtC{&Nj#T$;=x+>-RC; +zC=>AvJBj=aJ6$FLZPi@d3+}Q?LO^!Qd?if-+ISbz0>d8OAy?i!^2Oj#YzW3fDzM!vo +z;C1j@xL)i(u+erFkX +z9hirF0`hE_n*)0Byp=K=4e#mMgd01l{wY-wnxyw7y2r*xR7k)K47LpJ4fYQ$4inKw +zvB$8VtUkY9{2}F6DXXQ|56V)7F4Quhr{VpgcMc7rqMi}plI +zX>GyZe;D129maEX1X+dZPWNHzv0=8Wewx0mK8KZ=XLMU?4lxqwQ +znV(WyWutl;@)h;bGw4s)aj^%Ov)wRbFQxScJN6H`1x)2ONh`s+RZ~vOF{PNc38{{0 +z_$T54b&{E{uVK7qA}ok?pEYQGXsvB+Z24)*Zxq=X^i^;#@74y(r9~VJ_r;;#I~r^i +z?R}HH1;8vRc}w_T1)`y$(b|a)U_8+zm{@{)xfmk@o4Lc%)wahz(ecJ{(^1RO+Kz!W +zbGoUop)mV|8cY0!ClIe{25O){#wB(Uy!>_kGhah^EG!lWWI95nRb9!YzE{Tsb@mG+ +zV8Yr=NWGcCyo|%Py`$o6VJJVIJDSd&ewezQGN(_Z_i|Bwu{cuNpro{kn1{Gd^@hB2 +z1K1>1&3@MLz&YHt)z!u|-&xPG$kx~L-l%|kdA`nqu7o{8e{(C6`(xI~r(mAIQ@BAc +zc%$BZzE}RS!3p7K(UFM;>FPpVsexJ!6(FDahJMXXg}oq$OeM{&%ntKh(_!Os!|(cs +zOig+pX(d*G@hpsdg*V7Z)v87n5;*@yFy$$Lcwtl07$7^2;wD`!U3r}k{{vqEui&ci +zYhhIyO9RC@`~l$m8vvPkF8VprJJKk!I?@!}vg!EOWEOW-SSRgJ@1rPDiEg8>V@g;$ +zfUP3#vcpXMjb{v)WsAC6z&oqAd4!=Z<0qzKX6>vrLzta@k{A`67zu=)1xp6iK!YG3 +zw1($K8o^|JV(I~xCC-zcE3%eBuR*$Y7C8#0nuF-^^zZazDvRntjw7b)=HVN#E2s`A +zIU96?60n=+B=RSimn*@YI2LB1SExJmA*Khg2DCoP&Smc~r|72C8e#+fC(5aVixOxBBo43WPAv9j=gJK2J|xGTn#?A +z+Mc$aZ*Cs?Ece0ZRM6btFpZf6K9`}$BIP--nT5HAshf$N@vpJ@vBfceY;$}~;z6=h +z`V7}X2mr6E$lcXt+7hHK`T;Epq=p4M5BJDonDUTXZFP?FMeZ$|<%DFFN5~c>u2_Lm +zOQ3u3QAA6sI3u!03}sDI%`+|Ktn;lCtcdj&OOC0a(W*Z}%Y+Sw?K1KvaU?e|xh953 +z?g!(r17Zj4Nowx(dI|sbz@bpC=+}5GRZ-X|vD#R$as8n0>AQm!yr=D|{h%WcIP-Tq +zZoq5(KMQ8|8g{b{=#Rt7%vNT|{iV8@Uqn{0L6>iTx@o$6dT=_G&fy4Qq1Z{vR!(Y#u`{~X +zl#dx~xC>de+qPzop>T`zh8-}Yo%J2t!B=B9HPDx)zv;%HX=O?#H}6d*V{Ia)P}RUY +z$cSwL=V3qJT)!)54)=~K@#m>W{5voWd_ykbJ;|GJLe>}(#;|Fw`J#C_Pvgzxmo#}I6_3Y-o2 +z1CZ^3I_p;SR-A|ZJr{&R(hTLQ_8dKdw;*k0aC|*%xX2wF9J9o+ +zM8)K$RAKH8KSFfCMxk74Uu`nd4OP&-*b*@MmWR_`2zFT=*1oBQ)CoW?FO<8$IXNho +zfn5uVS`#^rHpfZg1-X|V%H}rgG{#J_`7cX8YXR$JOB5K9{Kg{s7jzZ!54%M{_;S*I)rE~9wnKiYB1~C&*K-8*QaEQKmz0>Wc7;FVBDHK63^5ZF~!%i0IDb +zf~|mVm>%9x|9~wp2+Vozfwk?t>Q@9g0y}6g!RDBg{0FWw5IOtO57MIZ7>c1Q~97;u&#(TmmawJSdRw5JevcP=iKsr0Osf76r5Z}0E +zx%sZ?ym7E03Vin +zCy?fYu@&eoqV=Oxv~=`x^i0f>c%BTWdkAJJqv)a5 +z>rRbk2N(-k*4s`yvR#LP@4e`m;<*I-TCX|Q+w_(aFcG;xHog(nUiiPT*(wyrfU1pO+XD?CO=Zg>C#MZrWq5b|D?B4 +z=V1%XN!?-m6qW-ivH8$jM1WuJh~ywM&<;QYch(IjW|Ir4(R2mo24iFMvhTra-kUBC +z`)l9e579+n+1{413d_<3lV4!ZW}fi*;8~#iu|SVN+2GVr%}91Ek$4XDazpvNRu11w +z3QTUJXr665=;#TZh%TPhz}3xg*KjRxjIe3uX0XAh9aS0fOZn9Lu%W0vS2eXTQ4MO- +z$I;`EfmswA6W^I2QftyR`Gl|^ULr4)idsLo^YUPuvG>>~>@d~{yNDW~=Qv-x1+~cp +zg;Z|I=j9)A2L)3jsskATS^Vv~?qmUAj27ul#y+NTu&?0+Y`7S0`P;k&-XZ1n96gNO +ziyuMOD#J6a_(rKA@yC%FVB*mGWuW{2@aA|Q`hE`-56y^_jh9Ic;vZ$|s^?J;(VlLv +zr%nAW-EIHbdB-Z}Y3HBLO^%_kX_K~ujXPl?dY-JVdxkF1hANAtkhoD;!+++ca{ajt +z9L=BP=Li$T>6s<4t9gOaOSM5t%nN7a8`!mQ$ny+W#>&}1oi!0#!`9aOTstl=SDIT6 +z37ERVS`l^%!rx*h8pB7EJUv{0#~1=X>0tX_#{}nl=UrztX9dT3;A+O3?&%-X>xoL( +zHMNoSnctq;5dRRF9GVl*e1dljY)MOab)~P +zzB%w_b1*NK3%BFXvDR=xRv|q!PRW)pXHc;|?2QwXixchQJ!5}IM?j)Ojed^(1}EfA +zx}1=cIi{RM{=p+8#&U)WKxTAt +zViT@k@_B4)BquZ}xG_)`HcQ+K{2jE1Z-EmqmFSdy&Ueh@$d$FRFa>Bq +zrZEUp9&*O};6@eE$J%%Wm*xU9ushj1-Z{D^TqNXzEiiQh3jT +z+#R$>SZ#7Wa~<64b!_7twOmWxf51F+jOTBdiF|duunnqGT!4fpz?$CbWv^KCGJVC$XJs&+zON!*gTMbQR7>Z%YwKz)XNV +zM-9CLwnqDK4M{0)V1LJj)O*;H_9gTq&<-|?iZmB`0f4& +zq1V8@Y}3CrHU{!6Vs|=kI|WF=XpT?zKWqyv!%g`ON10!#t-6BP9c?Wztv|#`LJ!z? +zl#7d{t=xFd$^XZ{6~2i=Mh`Wiq}+mO&jXd&@V-4ZShHGOaW^!0&O2_K}5%;rJVLFj7VJ2$dnkqiz3vf$Q`I2AbKVy|+|3*JY8^)~h +zdWqM`yO8DFlvv59wZLk7k1a#*d6_JViFH?jhJ +z&%ZF$*+wkGE@j@((1M0M{vF*Z==wf_U*2iJ_sftH>59BTX2UH~4^m=Hh$du33Z-|` +zMy4v0mpMx-6i4nNa9t6Y89q?5rL-`ID+G@Fw^37MeP~MXL0~>4aRvkzg$hK9z{cig +z>9)cODFMc#w?qY|uc4D!wAOOCToc{hVZ+5nPs07wRmEA+{>qYNssjl>f_R5sRc}kO +zFoCO+>X-1vUPiN`KO$swezXT-W6|(qm@i9a`>OS3{_3D2&_B2&D-!n_*XXd)* +zRwm9+TVINKOcsNldOP)ZsRZUKX2>+{+=E +z2}%;_r#nME0i#Q&M!v6xz_Y)N(9@&Y8wQ{0wPmX9AN${scy8_VI}DDCwv^?r +zsk-4$=65oVEr6WiVWC&LNn(676Z#gY;WzpE0C%?DJKFcqzZ$%`4Zxdg;>w7<c8S(>{X&{j9#!3gSMV58H?|)QYLim7{VS*mT%h +z-X#}={UXz#Kc`3TAw$t9Wb%h$-C$SGH0V8^(k81eWfknMZ6h4#@~2NFM<+(c&&686 +zhKtp(^QUj(OY%}W!1v4KQBZ`yU1UMVZg^+vW!+>S>-^#R0)FD|o|o=_z;NHj9pIg3{T6yS +zQ4O-mr;jQ3vI0-(7J>E~=t-g2u6~Xi2 +zI#UUWMHm1&pVphXIY1t^BQ-sG(CWLjI}@# +zu;zsrZaB&H*jlwQ>SY`VTx;nO}ag_%PI#OpMH^x +zNM*s4v|JGQjr@3iGfxY*g(q-AuF0F!gUDB`60rfyOTQcXnL1byTQ_?rhYxaMe>r0I +zQ!tzHnuZ&8F)PWIctD#ZTf|$?4}B1=6V4Uv?Joo;q$uo3tKpmNuNmwa{t(@j*pa>^ +zWTY}$Yw$!E=_TxW!(3C?9I?!?p0JL!ey{}1Cn1f$M1PI>LaD@Wx@_zb(n~9$mRF{L +zDI`bwAmx>p!GFzrWhZR3DhUp~;qc0}!>sx%It;x6iSTo9-|*7V%uAsre~m5*!tu%pB&dZ#|ylmwqc9_J?4UUwx=1Gqyzx`sOE +z0lhriG+W<@{tU*W@5;DLX}&iasnk%_37rck)A^xB^MHTbVI=0GXMyx=i)fNa5|Lu95Y7eh1-Yb1`B{$ +z=5+8VoRD<1O5#Q8GSJHvz<9(G1L@tcueGQ3n*E})Hn^9cLO;8Wr!{2pgZ3R(&6Ll; +zFmH&h*kG-_JXpNS{h8{RI361w-54nipH-1|(f+Y(FzvCX!`v(3a%MHy$^X@=p?|=A +z_X9ZV{<7#npgRph%5n2FzX9dZ#R6XVj>on9h +z7KaVJ1+9q46J)60}-_XunUlePS4qsytOv`$Wn~+r@n3+=yEMYU4%8yhL*1sF +zm2XNpnV48yTq67;gm{IAJhl*mD(k2`LLG=K!=CGkP!pNU`cKAZ=GoT&Y$5w{=sVAG +zJhAV!F;*OQ(S2b)k^Avx$QRfon8gvv{ISKroh%uJ!V*CvRHnzKC_x^|5-a*M_X!{?-+A~X|N|fl3buWi{a=@t(;l_ +znEe~lc(Ac;mK14;TovlZdq6cbLjuSE$iO^BPobUB8(@zQs^^uiFcaw{KHwX3pHf@E +zO@0;Veq+3P{2t7}$kgfdIiAdHgl$HRu=+$Dx}-h{yY~LEU2!yZ^>dRjGkD{FWbT1;r`X+hEFLsn9 +zWghH3FcB$o8T@MAX8+Xh*00sq)bC=SFi#*QHkE8hICMNFpas!MP@6mgJAwl5-wbjd +zU5-t}v%$Mul>9^vp>9(DQm3if)C_VgQ9!p4JBu7wXUR1)A=nx@GT9%zvS{Q^$R8XR +z90duOyP^D%pHW9*dujr|BJ*0Qitg4SbZvbTlfgRKKHHfKPXAMwiB13)M?P0w2V%=M +zFEWg0>X90D8|dZzqK_M!>Xg_Ns~_ze`4D~(&Iemy{*9K4-%89+4TQZQZ8FtlQa!E} +zMtfmB@jSXUy8F6oy6HN-ZWMkAivvI214vVwwg*l}7j=P}P&dJzp2g@xtfcM$QHnZE +z7X?=JFl>QoVLE2IVCri+Y20ea(syTSP&vBN*dN+(d5k!d+XwXG{7B!>wm@BfH($hy +z`8N4Z`0EB6h0jDMCzhsP3yon*N@JL+hnbLJJ7i!#**iNsx!$=xxdytXJF^_4AOY(( +zt<^{AYUDhawf0f1vMQDbKf|*0l~jXN!Bk7w-#tFvlN$+JTi=Ryse#-Bl7|JfzhNrU +a9H|Y}??TP17J)4=J>@ad>dbwyp!k2wAj8uD + +literal 0 +HcmV?d00001 + +diff --git a/share/sound5.wav b/share/sound5.wav +new file mode 100644 +index 0000000000000000000000000000000000000000..e43b04d763501b90cd34b34cfaeb03cf9542f54c +GIT binary patch +literal 35324 +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 +z9TnTEcIW}xmwaIQ1~kAM=USkShkIvvNiXeL +zuBk_xngiKJJv<81E9>9UU3H7M&Nn5O18!moCTl=C_G2=$LUKpQrSZ||!QID(7)cTrPFKVoSY9P6=Ld0KGchdlKLu=4h-BH4M7$kbt +zowXcSZ8t4#ftKxtEASZoquf#mX09c}u^Ex&p`yWdf$V`vfnmW!C>`k^uaauTZWJWB +zy}l7Xj7=gFw83n%+_R3i9kGqEJ-5EHEH=|jPkIj-#_M6%kx_6jXtR;ukU*Zg&?pbt +zfT}En*2L=L#fdM(zvOtbK6#qBjgQBkAg`f~dQo+)#PQwO->F@RgE3q5SGaQ679JNK +z9En6z@linkY!UJ(5B0f7W#TsN23hZJ=M{G=Z)@LmkhOmI?)3a|U3b*8{bycJZy>g! +zmmx;qtW1-x2)+5yT#S9nI=C!uKEG9XFBX+2DHqhY+8uqo@xwr%w?+?Rm%d+{tQJ@9 +zOZ`Qk5amR+8Ovpi%xJbXw}bB>j+DQt>y25+QhXPc#VoXzbWCye@x1U}0>1gJ5A|*J +z9Cp=m^t2XZj*=AiFSJ|rf)wIbx^PmDwU1Vf><{k>7mO5)u8H+a%t?L9bl|^=-IW_! +z#`py<0@~~`-kaD$%pknPP<#cp3Y~*Y0O#QV@Xb5*Ir>?>szE^o;aP|qdx~!-$Iz9T +z*XEkmj<)RfvGy+Z`?ibLav+<1M3IDm95))NZ^a2*-E_0W@#w7Z)8K)CFOVB35Dq91 +zF`AV)nTGgD60R+TVrX_!p{JQwT1(rTI)V<|ndSIoKWZyu9bukhnng_|7GUQPKYZE9 +z(tm5?L65LVGeGOH1i1M5@EmaK7RC-?5$qE-0lR?iLaM<38H=>uN;c^hKb~!rZkk*l +zuN7+%eH-~6853O=E1hVb`jUCc`{ngoRrn`1jfyilYzap@cTMj`UvK{^e+hp%-%-y| +zSAEB9>rAE{l@0#|Kh@((TgfF<=I&=6rt77Pr6;BfX9}=Ax&QI4fTHN3+*UPB136JK +zs5w*+I%PnHPsg +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 +zyZp0&o}1&ntHN!)SyuzJV5G +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 +z?W^8b|I=3LNpLd9p)>J)WDcCHUM*NK* +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 +z-YFiGawy%@9-0Se9Q%$`J%#zEq6wA7kav +z6M_AKlJGnqhwn%8B(A2GWXAH{rPAtKq#-_tEJ?4@E!P(?w1Zs94*g5rbNT=^1fFOH +z`+?$+6;rf;mIro#BhU%hDcnxZhv(T>zuR!kINJ2t6f!L{T{q4$ywcsFIuqN`qv{$d +zi*E*gx4Cgsln-?e)&-aLP5*$v)?h!-dIu(Erhl;0#1iUzbR_wY?wfJ5CEIqy5qBPO +zy?4!Zop26uT(jMQ?jqL^D2cw>CJ=0L9vXW +zIQAH=hYp4t$ZMsXJW!kgXVw{pO^r!bNVJW=25q)pynJGJa&bC4vxVO;Mb)0zN3yMc +zx9Plfvg3v8tjFMc?vp_wT;k>2-<;j-V=c8I+tZu)51Fa768mvanZ2n<;&hyeor}d{ +z8{>NtD7bV+XS#5WghJ9!`49D;_6%8yGT`lfhxS2_LSp^7dSAIKf0S}aE5+twXYmsF +zfL6+ya$UQL@^~lewyuP6s(F)j9NfQ5kg9s(>hBumOxP3FDdtUv{&Wa$ifokQ{IE>^ +zRLS_x$TIMo=>q%V%-R#kK;}*t+n-pN-o)M%e#vR=Uu-0Kf!?LhYb;}WW!cCFeXclr6tb|bVQ#LLYz`{agH%-}2iu<~ +zLCf=@y@``_!eF%gv<-94gKcv)-&Nm1pWr>``RQ8kcny4$Zu-Y$acq_9mj2~FG7VFC +z660gd!6UUa5{=x8((pXzrZzGUSX3x2)l_n5=Mg~E;OB51p(n24W$}^Nd~_kQ2%N^Z +zmAuMDd6WDQzAMGlPTCV>0XCkPOYPI$Hasxxu~Y|#R3FDbj+>71j=c6I)~RN};MM&i +zrUEIaqxgs&mTs9?5G@sM7eoV%AVIm=zc)}F+=DM-Cz8)VZJjE;1j2}md_h+>ls8>7 +z|7#g;U1e=(U29ovu3|cAAoVTi^(2eWgq&Dy&xg_;E! +z;V)!yvI)@$uYy7H1R1M+fLzfe^^)33D~)tR|HcLoh2b0buYL_U)D~MdSzFlF*aq8f +zShreKQ`9hCw}YGwN#MIu2cBi_C%?qnMJk3i1{Q*DU&8;xUp7dAESVH$Aj#NX6g=m-*noz_yg0qk{6gp}4u-+UkK<2-%cZJqCICJSMFLvJHSqW#qs +z5+S@|jhWNwhp7&!mZ@W@A?Z=f*-U=!AYWEICecbowGj9#%OVZHKd@MPsJ>RN$jd;x +zFE5nhyTdJX9=nxwaVf5{@KO8#TJKqO1W}uI8eW=)TCdnIIGei%cvz3<8R==|-sv1= +zzi+v0?4`R$SkQLL0ih@`92|+=(UakZp<%)NkRYf5?`E6mxcGmtZEnH&#JBQz?H%N$ +zZbh)QLA_4DRribLsUPGepn{FShNGLoO>;^+1e}CfNDp)p_5iO#{zE}ZRNv4z +z#?;yDH@hrv%!SN|Da$Zehf&S(c1Uq0A{=KIrPn2b(QWXR8ywi=?+d5ag+Sd9% +z0qPvq9rhq)g{5p0W?agdER(nwe;IF+C=Kc659vAJy7vel#5s@?17;MEwwj_{(Ol?O +zAmj-u14{2(=^M<=vxN#mWnqobQXB{y${p$nM1T`UpywMDQ*&!)yV=>xRn@)9-N(J# +z)yX;6Ucoxf)B$|GZLlrs53wnioxYQxV%NhQsP;JnCh#cj4^|J?hi!A;REtbU&_MdC +zmC+Y?e#)ym1QYN=<16D;V-w?C!wh|6U5Z*u)*xi;CrYA&VAo6_jUk7!8{7l$fPOTc +zdQ2mF+VI@a(m2Xk(m2~NOdp_e>JDBR9i>i}CPC(JO)5J+B|0YjE_f?Y36e$c0{YN{ +zupxFU@gZH8`yj4Xn_@v=IQ$9Ea+iI&^Iz8{_rLC$?!&Gg&VBav)&}Ok4W)D&NGE;~ +z*{I%-t4UU|k?@{>$Qy-?LT|C1)LZ^TnGM{W>d0dx2l^ZOFOWmpX!+HPay}_bIKTxn +zjhW}EZOKcCDvA7w*@u|>n*EaCGT>%YbrteR0 +z*!{}c#NOGG!+3!95OWcoa#=XdBFx3)ulSnS&FI+Zu4v;}r})jpAF1BVFm?{VR$MH1 +zfE#Wx$TdH}a^ODv304Q2fv!h3L6%~#@=Pu!-;#DqFQp!G4dAe_+70v;9)|45NW)gs +zF3S+xXM57I&UwYz%Q?kiwf}CtW8(F1sImBeT1|NepD*(v`772XQZIBma2Aq9fBG8- +zwgvwP-;9n(3`j3$UkEvs7DzkXLoI^+bsf`Kb7{*YOMA-$^H0+yV<*F7U0HeqX(LWz +zv(Yt3L|d)R*Y0Y~z(1g&ZoCH3pPWbyqVoZZg4!4DvTvMFNU1##8 +z&c)Y7pNFS~_6Iu$HwK5nZT39eW;3ax>~5jCLZLT^uDZ*{e=O7Ne*r~mji;!$xOY3` +z?m4GqKVUVP8ySYsi;3H4QSC9fu1Vn(cZaRX=3v_c$?`aNntv}iq~`J%WgIx9-on=J +zcSxet2SQRaMUhsCc3~}7jQz!YPUlWvNd1+{lNQpAG8&st*edl``=RrR3-lMmH}g?j +zLEs)e_x$u``MUZ}ct?BoxH>x4TPK=q`YGgNG{3r5tihFLW+xlQ=SG`GHik!spMa}3 +z9^DjQnY@|yuv7WBVh*LWMxpDlXZUHN8ab3~M7|?R5gqXESV!QQ4Au6k4)u<5UD2xt +z)%9@iY=vQPk9$Es)SontG4qy+HkW;|eUaU0x7gNNb^;M>BIsEbbfe-BH?xh?WfNnf +zIl{GqVSh)3*j`C6GCnm(AW%M{79040PF +z{t(|vxj_eUYo|f$rI4FiS*yeddCe_m+}Yhjor+nprhk4VP#gX~w?5d0m;0 +zGyf(tv9XbEp&Nk{uxkb?SfEv~V0d!0MxraIlMTiHlnH2%_#K|*HuD8*7yAT<*;&AO +z+3^|fAgHyV*<*|Yv2PEtANv41WUE>LbcLpJ7s$>xQ(P(v6ao#2pck;V_+k7aJ`w+d +zCDBtzVXcSK8{CU_F2sCJX^Fw{g0aTYFOhU)Y4mWc8BnAW%qPw(EmiZv)}SeH7w=jZ +zIX=UrrFhTyp8DGR>Uj^kS2~UMG8Vh>5j~D509r3EHsO;Q41B_Wg0J*dq6m=p0+7bM +zmg&dYgiB&G`K0nieFXWn>&P7-G^MmsT6ML!Vvf+dh<4+ptwQmr%cmc +z!E8X%XTcx#1biqQa4a{ti+d`0PPw8QliD2jw82 +zMDH~$H(P8z$4=*V +zm(|U=db*kb$1-faZysmVz;%_2c!}QB;>rkMYmI~7{HKsx+%9&N>d5t!mTDWVD$r7A +zqIc07Xco9=pTND-ru36m3P6#_(9E!uDXGTW!G5@LoR1exzJO;riR%Jd?>nRw@i$$_ +z*vV4c{?Pf|J@sx0IjbXKTX;RTJIntn?m(h47BN+sU`RTzMBe~ +zavI<2M?w;142csLU}Jh6JdB^T&#=?I1`g0wFipgWB2*i?1KdDQ=s|bV*V4DuNmL`U +z5@@}()k)H3PzRY*ci498Ba=e|f^XpdF$z*@EhFly+1foyYq;{x5^qywLalvVS~Lqwxs1E+37ZWyHZxAIGb9pYUn +zETbv|JGL6gG-Nb5Fh&83ww;oYhKbMlO5D**6DC)>D)_V)CtoC2rf#JNXC`wY;iP;{ +z`-PRJ#zU@YowcrGnQNfuvUd*nKwA0QcyG85J9F9#Te3lg_#4lQtdxrjI<{8&Qz98# +z2t1BPkr5GVv|wy=yl-+)dTr)4=LTM1J=FlI`McPDAPDv$>JV@7a(FM`^bSRaYjZ(= +zuBZfLKO~F3C~ws~2r!WGkwAmppxsaZi>lg(d?WPvQ)JET!;;|W8 +zNb1h}nIp+dv62yYXb$N19)BahDKIctFT6h5I?*}3o@In?%2DvV-=Mnamm51lx^|}Z +ztM#F^iFKf*togFhYv``qNM#dE@vrD<?Th_h9-;3P*vz6 +z^c5;e-Y4qeS!h!&Di0H1ay2v8Qo|EHWBVgr!m~qVAX!u)nNJCyv1mXqUMYWd85DdU!^88SgJhSL;3XU822~HJ|Asu=)nWzSkoj +zXIG^ENz8~Hjr0lc4vh&t2<;80BS&KAful4nL&JTNR@!U*(PH>E;xBR(^@#chh#X-u +z4_S=J4Ov(k&5H~I@75vpqUrM+TEh~V1 +zI6?oM`hXumS}0$Hsce;W>BPk7@8K3f9{l!J|1AIFK>kpz$Um_gNtqeR3(^8jz-m)9 +zArYF#^21un&e*Fv2uF8&6WeD?Npn+UBYhRRBH0?>faXMg0qtd!QdX&_Y=gNO)e>49 +zNuvK@C-COr)w@9aL43gd*iMv2N~$^JY`Doa$vD!wWbOEa=mqfmiQ&GH*3mogEDNQD +z%ktdn8ZaREi)q;_6bg)Q91 +z48nX&6;DNyIZ{VbtI}7Q-0W_yf^Z864vT@rI14=YT_NkCYC}LnTBl5qn@GQjIw2=N +zh~wb~nvc83J?CqSdby~&94Uqe$a6ql%4=C+I}JIpyY7viubvH_tL}ELK8~2x23l`- +z>Lh$+t4n*i#!R*3npnTcSx7KaK?5WR&WD;s8pSpxN~NQj+x$AImHG}T40F>Xa3n@_ +zgY?t&)$|8+FX^Y$A;^j~!b>qU_AhO)^pEqzSlm+Hw9>UPuwS+1?<%<2IFzM2JsZM +z-u~ip&Y8i|gOc?UTjHbQ=i);XlajAfqnI)*$$t>GgF1LneE|;7Cg@^xI$9WA3EI{R +z^&u!Bm!vmh0r8kHOE@f)6wNSAd{u61ztGym1$dJ$7+sbcaAt1=hE^SSTlZ_%Q)ewl +zG22e_ahOcL<5iJ4@;km$#*r!<-xt{tDiEv!+xy=GT%bd!cw~5tNPbO!XGOsT8rdDJ +zJ~@)EqTdWW4u`3<$!~0G>z*OW_F +zPM^bY&0sO2#+8P%`VqS8)M=s}c1(LMe-*xgJFIl_Kx};EV5mcIL7-`1M_@7NS;pwH +z_>|POOno6CA4Pf+e!7yewB?rV6TF)<-LgCEZs)G*I_|g$iBN}Wn*JSCo4A8c)y66p +zr7mJe;S4{TpU;QE0XklsBrTWWdqXKA?hmPkLSgVeK#L +z22*AIG17%CP;*K_j)tVx#KeEGr_s963enxsIk9{3-pQ)z+L@l*3}Lx6RjH^QMc$%k +zuqyaayea-4c<_d!laVRfGU@-ORI0IX0Vp$_3#b*I(KqUjjGa2rUS?L=4%kMO8`pSDqo6 +z#dUlk?nUMV^C(?8jik$^|4skL^ktjD2~$QfBRTQ9)KL8tQx7X|ujVp(dV32)7KZm~ +zo54WiD^rsXGf=Z(ePWRG7cbtV|w+B#b^ZF)$V!Qf2+Dzg4hw +zcu}-@q7QJ%3yJ#_C)$G;Oy@I9GWD@M1s+EQdkOm~+dtM-76bS|M}tde8~F^rwl|S2 +zkjky3DllP<2UYN!_6qp`C)PXs82F=3llLKA6emRdIA%f%YKnYRtOxGJKhm{;J-s>F +zJ~AU*B-}Y{k93aaiw^;PumZPMETXMWFMsR~{7P|{&`BFd<`;s}C`H~sWj^SSMTg9u80(yZSAXd^74GrNoTMcfrcffDg +z!`t5bmuH^)zH@>7U&|$92i*liMd~ZtLF<)MB@<7gq44U^{osn=_u%!AC-NaGfI7%C +zN4b6?rOeYFK>Nce@-nrLE}?_Fwr(H&gG!NKVI#8xTZ|E0=_kZ0&TT#O7$5@KoTt4ffaY +zANHRJGz|5Pq+_9E+01dinHpC|`Z)B@_TwGdq&VJ%aGrRi*zaDFd%Y$b29GP-s!$<-x1$u +z?`+RbS2M>d>k_yhXUI)hTi}~?6dtm>nO~{h$ybS)iS3C(Nn@&R`Yh8Hp64}CHDYoj +zc$(#rOGpApQd5zS8mZ}2M*bi@5kCq!fn?c-pTYC|E5QnG$JOd>q!fOg?5D$wi_Bkv +zNp`@Qg6C=VJawzCUCt}^Zq`Mn9>D9Z56vk5!iMm5`c}dodmYXb$^`ntuVla+Is`WW +zZ{luhUuGN7Vy1)EdlvsrUZRWZ%Y$x989x}hKo)j3IHV}*0x=P9kM%@%fjdfq1k^mF +z3R(;lhwTJH4W(~E%Yb6IZY*J{X393^F#gat)YYM~LF?_HHUo-gzD(KF*y@WsAo{Ncl)lOK1Y^@(;%55EJFXbEs$)Z;7IHa4eIVihgIcI8Q +zxI;H0zhaO{SCjH8X^HqBu&8$kys!=!CB5XKkPaWGwE}we2y_EF9ze%6ky6?RrIoy1 +zyu*js-!h}qndI%nulU&bi1^p|vqX(lZe|plSI95-(e7YXsNH(MDQP|A;9O5UIlv#4 +z@y+m!_WtWW?aXa2Zi#`bhR4Stl=4`3$JS;nsSXKGyj$$ISofGdo+q&=Svl>>SU?3K +zftE8{4QU4S6WRlEMT0OI?F{s-<=SF(k+MyGEj5rBF(o#Vk`gDkR~0RYnu(6o2_0+> +z%x!>UxyrG_S=rUvmF)~Tvg}!q5_1`{sS)^d?RRk1V40iA7qM26`k|YFXOKiW=U)`? +z2k(VlvFnMGkkg{X8cJuR0UjkA=&BfQ7~h(vnNOOhz}zevpBl#KQ*;&;AZFrqfJ-_G +zNoY5;k6K;me|Utx1C_E0If$A{57N2xQ}m1B7CKLtMTbcX@dX{G-H;jKH?9q{FIg^b +zj!a +z)^PQ%++BJh)Z$OEwK9Aws1W3S^V?bvQ#Vq+~K({rr}8P30vYJk?emh7Q>V0dEcY5BuyvsJLc#AW@>a>G;{&a8d( +z2XKRI!s?<$ksiRbI<7ten%aBq6mk^3j6KGm5XZ=F)LrTab)3pU6(--}Ww9CvrS1gs +z;bN8m>cOP=rfANH3AFohp-hO3?22B4#9@ofCO*IXTw8>fr_UPF=8v|{&Q9(}p5tE0 +zd)E8GGYzsReeI7djFHs^$Zw#LHBw%SmwAmnp1IGoW@<6ZVFJ#>*5{V;zl8d5tNcqj +z3S`oEpjdv=Mraq*zrm&5OQOWn{3xzHJ0kOxS-@;(a%XgGZ|*mtnsiv{fz-w8QBCzV +zO*CXT?m1Vvzj_V=4`jA?1-wnFW1?*y^s<}-rMZ>13$)%BOg50D8%58D{|eO!bqR4H +zXJlt|Y5aDw40Da`EPRt%1OMhvtS~Ww98B>Pr2pxyFgNQ+0@U&^Xf~+OeKb~mr6SsN +z$jo#@k7JdgFJM2NrO#zNU=qv-P(+i~JJvi_6$m#y3?Vu%XuS{AAri`;VwNXQ#mYo- +zhn5BwfCf^>j{)DUT6kl$54dW+umeS2nTdWQ47&deoy|S0KWq{ESjR+g@8`C^v(~eW +zFpV^H1O8qEAZg!3dTRC6X~233$vKqeN= +zqKSX=GucK=iB#jn(b(|l#z>7w--sz%JI2Hdr|vWNVa>8Ztpuc;Ed3+Xck50^$n}>e +z>D>%Ij66OZT5cLZ|H4o6Q^Q)iIblW_#VO6;>$77Z51TJ_Fu5y?)fEyk^&kn=3H$?kDI^4;&1DW(oomirU+Zt_JL~u8&d?iyAytf!unnt8CfxcN_0U*ik?2YL?q7K>`H) +zY_IgB#E0mX@T1_gz$O1uKLgyOg`r)M^6?U>i5b`%$Ze4bbh9lp3^4y|y>GAXEaY0? +z>g&4f+zHRKk+p>RyJ4QLAoUvfZdXCKKO-NL5a|T?qcCYb>?T_(t)vExCr`EF}y)vIO15 +zxWqEf&O7y*J2Ivhww=#F1`{! +zN;QJP4!ZM%EzBflJyQ-#}!O1?e`rc6y&-z2UN9CeW9k>3Yy} +z$qx7%B(GXqYR-3uDf4?AobF*F#0MrqvZ!QmAase0jg?9^XU=l%C8PE?HW+-pvgvPY +zE(ham=%zeXJ)hmOYmf7b{ie0I`5(jYx+(CT`va+~c9gG)bA`ivIoM~kviB8Mw%ONHeX1nl1O1t^yOR5BrGem#&=Zp8S-!pD3J^l1o +z+9%)AXuL0VM*q{4ZC&PgxTOD5!{L_ldHh(e0;h{ +zvO`>rmX3alc%y$uKgT)($I=cBRNWzqvQ!?S+K|!cpIB9V8-5IKxN)rV|5GU4VPm>j +z`5+ILtIFM=4Q-2ZMJK~6tppJm%(tAPgH7yMC!VW+zQ$wJ3q%kU$_CE&dEr#}Pb +z?+e|59zx|L$Kn&virQs4mpGie%~VXikKd2lBM(Ay@O)4Uz75rml#Fdmj7jffbBlMC +z*=QB=8BjrMS^f50uE*{OB#Xv-KYFgX^SE4&Q&!4c+E52>Ad}F?YA?B#IGOiwx!Dz& +zftk&jf-J+TTxnsPcu|VVm>N*mK*x<0&a9r=26c_nLq?^wLP2myEz2xsp2ALZK>A^N +zJCmJR#qARu@?-T1`kYA72BT)aZ2R3=+}@lQYbRdWGvo)<;{!+b7qhrObH#hgee?thI;cng&Ew@;PayGURG9 +zLbyTcbz(*!-!{??sEyQ;YJWAP-qL;`%^?kYid+fo<)%i-G|_ShdWI6Vh;5W@yj3!r +zOege7>Ic3RDXsh^G-efG_0@uwn|#6d{z85|5Z<)k#l!0k~Ac+EVyEuLovX-d&RGKU}xHHTs;E}9|ui4yE(SFW($z2KDW@CZ9+};~^TUprDWzZ +zQ_}yXE~MDhn)D3jNQUI5@scn`dMt}dLfr=^X>pii<^WIajdE391pN;=K{?6Ijc2{A +zlO4lWFZmj>DD5HJd<}dc$Vt+SsL5?cHFtydDvOa+0jAT`&h>TWj!aTgZqfp*eS%ST~;p0Ci$XtQ6l6u +za%ZIu&`fF}Wl#(|fLZWTFf~tsB-A7X*V-sUq~1b9u1ux^XtVF)yJAnG!=iJed15u= +z9~0@+)J#8^GBIrhG+-Xkt0sr-iNovu?kNbn=4@X#$Tn|uk9U5zN#^H<>9miyg3MB; +zir2Y5nW5>Q$@ht-iPFISt()wSI+?DUNweqpagc^x3*Xz%+6Dv#cTX4@52xoR^__A@ +zJ}I3PUkRnb#d?X?_`SkGQ3si_`3(1i)`Z}gVmN&L@&HQUkM +zcHMl{kVSvMiz1`syL{t}Ayp)PCUQB{DmXS!A}}S;C3rcsKJq3uELnpo&s7%7DJJ9$ +z<^=xUL!HU+!_d~)*{B*i8V2d>>lD!LI}<*DN998QK-|#1QysSA3(zIl72FIC(1)}| +zU&3HE?gw7;ZDVC)EyG)#p8ibq!nSKi<(5jCqAoub)mS_%3vcwpLN0 +zLE%54k5E+@B4i62#Tn9Ud5y9|U90s4qDecnFPaZsg`Clrs)dwg(lcN$S7fI#k<{ko +zI%q6975B$CCH_ukrDp?N@-4LdH2}W8PdC!I#xlkpcdG8C-X);h0~O4>!*kKq#jy;i +z0~Y;KQbA{^1tfy6nt7Ibo9Gtr5zCH#kM@o=hNM#dR5BgRq&QKCN*9$@+74td+66lg +z{N)800oP2hc5 +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 +zshrB>PW=)0Me{;y;zr|G=won5 +z?TUNA^L>l?hy4bgt9SBx)s3`-HmnDj4p=YSVQ#L5wm@2HE!AGiDw&nGN=v1u(h%^i +z?oulvCM+k>61rhu84$B(xe83yV$Ms>$Ka9b?f7E*Vi{&ysqaH2Aft9x^71>GLCKjh +zETVziY=^%Mq+uroz6JjY7mZ~nzNAfDJ8`{o9l3~)rk?Abf=g$Hxv-_DrLbk0dAn(- +zQPq#vy$9FzeS9p|4jl`=hBc6(_@zyOOj{#hH7+4ekvFMBbXVOi-CNx%ouB?d4I_8r +zv(P-+0{I_-=2|kRlWpSFqVvP`L$iWSgFAzZLl7vBO^005ULfVXQdXl)fN)>dRKfb( +zo^h^oAMpGR+{2NchVH%2&A`juYs3JPSG#w{o}GR%{J+E}M&EIF&C3 +z4yg^Wojj(F(HKZi<_E`MZmq1USI$bc#VdSG?oDP3vo#$|tx4^MWRaN}m8rpv5(McV +z^$m)Wm2};KqUp2Gg>19YYxGU_wec`#4=TNymFe +zt3sKa2g3uL^XPDbU}09Sh(WiPB_CGAFqUniGw<1=FKOq=+^` +z4JZd8e`&+20LL-S^HVKnZE1IkW*iYIF)6B +zhkcZ~0h{{=AtZR$pBsF=Tm4r9S)gc@i5E=u%-rOw$cHo@b5TFxZ#2*>f~s=b_R==X +zcE@_iQrEoQ_!5|4KB_g`&8x%zO<_0(TB@DZBWfM!{1Xra13Vuz>}?}$R5i*%EdfPy +zIQ|ypwKvLK$qv2E1t1M`4tDM1BV)pW(67+w@Z3oLSe?X6(6hY44!J3!;```)#_pDy +z;2u2e_IQ)tO1|&lH(LiidwuMeEU!QZI83g=wrX$Wu3{N}C~E@F`Hu9G^t<#-W^85~ +zo8Y<$cg6g2FJ+io1N`F@D7||%0=~6A=ouP%EGXyP&iUy2Sb?Kg1qK +t>cYGEDwqlG2;B?!iFS?e1jpBPHcK$bOVl?=Hl$G`NSAD-Khn49{{g{dtsnpZ + +literal 0 +HcmV?d00001 + +diff --git a/share/sound6.wav b/share/sound6.wav +new file mode 100644 +index 0000000000000000000000000000000000000000..760fa180765296650de4e65b0ce05d5e713ded8a +GIT binary patch +literal 35324 +zcmeHQRnyy8loU(0%p7KBo@Bzz%*>1vX69tV%*@P;6J};k%qYoXY42~?+S(`ASKph< +zvaO>&efylQZr!MUeRd%Pb*R<8UjJcZa@!yXg27+i!w|HfBMc#s4eHx#Os{9)H4r4B +zFUi65PD>B_zs_84gQt<_hx?nWwX?ZBY-wPcW;jOh=t#J{-bVc_e~_9=Wu)m+5jne3 +zTb-@l(c@4U-hn`ddq#Rcde?amdkVO{&ULmM=2ONcR?%HI%J@f^_;X6$X4O|!Ow=A=1AGHIk3EQ=j@^N8b +zIyaY>J;a=2Dzmw{PU(kyH<6XbDG$}J+72BBzubELv35|cp=^`B3%U3)oWwj#smWc* +z$I02LyUcnn!k?BtsP*6v*hC68wX!yKymUSHl=l7h{qa@sz4g3zHFY$$M(MWHb}R`E +zQu9lH^LN=dsWHjjiT;Tbi3!OAsp4#iyUXtrN6BWjzcyGmLrtJO&^rB$wpcBpoRZ3m +zkNDN;-JFAqvyHd{>3RGB@v1ygn+4y*vQfk64VD>p%w_V-^tSO$@P)ibJr7;29qp|t +zx-K;YTLj%uN{I|tfccQf6Gvh*qU)m7V!h(Y#LHBS&Choh$I0DQRjUIPgtx+n;dbyI +z=!iaDE31B!cS!t=tLBV}Tx5>rzuyPD4@EmN**+o9Y@ +z1@t{?#@?az(f&va*aN-M_Nv>JkMbb7i+oXDqC8P2>vQ2x=pe#wxJcKvthOz2xLh9h +zOm}1VP*=cl&*rm4jXlYK(RKP3`8uDE{gKET`x>qjY7r!ZgMvdtde|D9lc>cMPG=KU +z`Gl4eE{(p!OvD|+Kz=5g5kv77m>InR&w_^PD>Op;pn9|`+EcwYY(lf(ZOHA0KQw6x +zScltZIqXi8bFia`y}9*=DQ(zB2uL2ilH83y!*olGiQ2;rgM|WT{b~RAz>v_ah&9e9 +zb8>xzeexsi4BP~pM3kWh8FCrh8lA?$hQU-Z@;2TQ3nF{rZO|WmzW%SS=uaUCnTgiK +z3zFFkD1F;h+tSbKwKcE>t-NKVxifu}x`=l|E@`S%li$lUPjrla4sn6w{;dAL{6t_{ +za9OxOtWa_yEAfkElim&Ki&IoZ<2PD2tuSvg7dAIEndudV2w9m}g*nhi@GGbisPq!h +zRp=1>2kC;P@hxOU!(QWS`jE+KhRpp{1MzHPDXfpxuwHvdi6HPj@V;xkbO +zJ_o(md+Dw8J$gH+E&MMMMLXi>h&bt|78&jsmKa`98_A#ed9)B*Pb(^?_)F~G=aj +z8)}d|_8FnzMfwQsx;jp%qS0GQ(Aa)OLPs}1}67%s6*lFYdR8QM1-xYpx +zCZ=}+juDXsp-sUS!NbARp+1qLvAN0T>;$2+(jIDxWudmw*DZbQW1N3nC)}^xZQa#f +zI~{9m3!5JN*(!|6p^~hxs`%ydu_e`9AN7sq&K<=9g03iuEPzX +z(ONSlCJyKQ?1WUcM61}d$dhpQ@ZxaS$kXW8`1I69F01%Mc?R9Zc2jjti>+N8+g$ZL +zwY|%|Wxb_6>s(VDyfwc$x6w$#SYCL(R!T^hR(pO$>V>`VK_Noq|vJ078ynSNQH +zI4ZaiZ(-k7UvJ+8Z^Zq?S;1b_q8qo7e*>KRuI7~=2%+?1?iAaTUC8F=vZuT8PlXQB +zC%KL~UhAuidND}Ud+GzUZ0ch9i74^K(^FW2`IRi1j3g=~EvbpjNG`~~kUZK(xE3Cw +z#+hzePdSRYUEVG}*7w0@@vZaBaRuxjEtBa#WHoF%R9dB^+I*5N$OMzsk~x#JligAq +znLOP4^nPKqluKEs{-Q?2D49h2_ +zhf+Jat#Vu4qCbP1VmxuqFv0{|TiR)KD#53r +z`T7Fwu{uZ{pgvdkYXN-$JPAF7!&G16In!s$C0j+uU(Tb>CC&$qf%YNRuckMKfy7bd +zf%Z{C_})yGM4hM*Y8yO|U2){WJIut%jGAItW+-F$ +zhw4k_A}(QVQ5g9IYHgtYmp)vlAqzYNabYaZl8PZlA2%1YR+dK}p4FYNE-Zyb0Vl)_tLdy*VGTu8{B^<~HyoFOH{RC=80 +zx9Pd5o~aFOGp?f2L|gnW=w}V#$&dvipuSLk_-|wrS_=P0tfk5ucK}?UXMSzoVg6}a +zN8d0EA$MWZ;jG$HNledRY5+|C9Z~~l{8{{^{DOaYa8@{PtYUH}+fX2sOL~2DDL~hs +z^keYpL)PrJTh^H6xH*TZm2m(yf!Kiw$ZB{l^j2S{AJt1jBwPrYf=034#7#0uy*KnV +z&M@XR);4@4b^H*@LMin!!1NNVBUwH6B>XuzJ#gE9&fg_)G`J^RCRQzZj2$R6R7yf3 +zx{$nXoNvBo9c!QK5FF1OSsXuYwXMy~`RLEodSW;>33&=l*H>u{O;MX_9Jt3exC62W +z{ep$@(?ou<1bK`2iq8hH;N +z98(TK8?nyRBl?x4i@mvXyQ`VIjr)>or88iEYaMU?ZLCi1zzd;aP}h^x?#dZ?ihNYA +zu4GrsYD4rx&`0wNYA6o>OAF@Bnxi73b&BS +zlERa{64ev?6MK>sm{wer=cNu>0^WyrGW;=>v^ks;-A%j`d}-ee-v@6~PXX6tdw&Z~ +zk0U>ztszBW#g=>lZU!?b^)>kwU~6M$IhzG==0##v`M#13T=|Yp0T$CkpQ<%ef68s7 +z^FmSnKW+#6h8fSSV#>2UI6Gfk{4M|1iXt0umtmsmfOVdOalQ5A_FeNG_W8YIJ-uDm +z?Rza{=xO9J^p9Rk`6_(oS~883Z{terLX3#NiTjdgQft^v=_A51X}*$28>F{_UO`c4 +z2PEm3{z9Fsc;)NjGGPm^r|+c+{yHy#SH4yH=v9$s_yo|acUuP7A2`pt9o{G2uijc- +z&W*XI+DBVpx-QuT9jq^xWBe}mZgN!oSafN`6e$|{9Pz|%#Q#eg*pcZ^LRqLZmv9C=~$Me@D-QT*c;*U5t6m=dHLS;%w_K +z=IQN8xL>DfNSgx#e!dhV?x`*t)ipif0C=&Zh$f0 +zS1RglU@O`ktBh~O*Wd;5URW2jDDnq7q%Q;K6r1`&QIyr{Mva7C!cnvaae^vD&ov*l +z&a<t*paNjOc}o)@DeD(r)HcJbN@0>KGgqs2n&NxEmZ7-W#ov +zD8N)scN70ny6PHSAIn3`AqP>G*gNVeEv~iG^8p_B2|0)z +zByLe3jjv5>EU1mJFSgIN|FRvjelpLX_fWm@XRukTB#lgeNUe@viVO;!0O(rBzuvzg +zP&G6%k|SO?HJ1A+v{82J7m=y>8}f|7M*pNsn>4x$-N|S%tOU3<64L-%x(^kFqPh#( +z2`z`8BW*F9ct|cal%m&}4x2k!mRSC>v@`#t{QzBOfivGtHJ>y$O)?MS(a56ExxfNH +z>96e15jYrp8J->6nY44Kg#HQzO-1(-gAHft$>!sh*4BPj#zI?en2OW=4GYPWxQLEL +z{)Rh4pY+?h9dPEWu#ODHV)zj9J{2?EHddg^(#MSZ4B03Lu@1cgZC0B}@$?R6R^n8& +zMR<6yU|_C)mA`G^X7ELLbZl9Y1~|7znE_S7PLWTHW6f)fqQ6-h*|R%axIVe=x_qur +zj>2|_^{lB3U~@U}JIG0h)i$Vyl~PJ>Wjx@m*|b{vbm$7e)>r6s>=||uE00w{pTQ9H +zRviF%UzYSgOfqpc_C7K;yd~5tbU*Yiyg2$kemtdcJH^@RGoy1!|%7RK7{C#kyi4ah#Y}$|BcQ7OAf^95TT7;qpjT +zL0a5YD~^16&6aTo3a~I<&q^6JK~$-1rzm?a;hpP@pssy`ePkgvU{Z^{Ij25QX`{&2cb+Lrz&-Htym +zte1ky27NVh4cDo1rm9xe-oaJQGs&C7=k#^-CfvWA_3cG1hmAo3Mtyoy`5M2JeVW`5 +z7o$RCP2@>rUG!UQRbqYW6AfV&}FzD(i_QwjD;6K{q(%rJ7t%=L3$zf +z5xa=D#XXWH-&Hw%98w3+szEN8Io$ +zeV4XTeXev;>M9$Q9_lKsBvb(Di@hOw83J?*%S2ma$3f?8*B#d&*FfiO`+Vy)(=0;} +zwDFx@ujj^&w^CK0(frn6PbgG +zk{!vBL=zms4j?_@YEXOd#Lw1_YIXHm&~~^rS`Y6{t~8vZ&zZ+s-`VclD>`hBmUhmH +zTISG;sS@}+_>}ruG^eMg>cpo+YKC?Mj{1lCKl<6g;ZQ8HD}Exya~;J~N=W~POv8_n +z{S6z8_32S`UV4zRlYyd^5e9r2S{ca+w}QUuFZ7~N078%_qc!>iz*p4RoXSp2L1#d<)lcGxw2u+vrK9gc#^8H@YyVV#r@)V(F>);yOb+FW +zim>_=8i&0hUl}`_J6NyUme_CD``YK&%39}`*U-}qJ;)aLAoLbI5}K+fwI`ZgKcR1f +z?!#HoaoAlvNqiy4QwOQR)KPLQaTD8$WPuu~b)*8kna!FU63ZTG5Q2kU1HA(7;JDD_ +zh$~(^b&wk+_E6iv#qkG})%4v`%>KoZboO+Wb`5ssbo8_}vM}@%159qg1|!p;2v8$n +zz#JYa4OFL=3$U5h@Dt=WdIM{LPr<9(neIs~!9O6q +zp=#PBrJ&qU`X&Z|-kM#`uXIqiXrFW$`UTHI{zG;kcEkxE(_=sf+$>h+U$FC1BN7K< +z&7-3ug(DLqL!v5BnLaTjze4J&HAE^Bh;ga;oNa(}o*VVP_NKjqy;VG8U8Nket&2_l +z4dn?Jng^NySbsAy#N+(-^vQG?o)(IWQ>5>5ZFMd{n$FOD=ruF}Is@2@Q*9;p5Zm%i +zx!%l)WZOi~csPc{kH%AphpAGWMQ96H;k4XGnFaAR^%3^9l~+3v3ystfjfQ)sJ(ymKKe|p +zsrpJTEsYayq>FRUnR}^1DIIX#hRk*LM!JSrSn02SLBON2|PRnps}Q&tShNAIDq7hDVD=r$)QPPR55MM=;yDUwlrf +zykgNd=>I{B;otCUxG%gFTC4Za?CKqPowP-a3)_TCLUXZ;^i_VP7J;53hw;7Cc6yS< +zWAEfFOn=556V~M8cJDpjn);KjC{pL +zkT&C9lgnDojyv1AeC}HAJFeZ%@AkRYou+1no%mJww)#RerB|e;$72x&XmhbZEU-5C +zKC~|qip@**WIOY1r84SUy*QEw+k>AZ>XE%jJK2XAgjd1h$PRcg)LY-I71Oe5W3|8a +z0ZYc;i^V+K;_{{hyiUH;5XBn)G?oE;DR-Z~n_%%Jj-u +z!?1{ahJ*J(ro&sHtdI({zc`eDE2C$zmPCvkYj|LMOV2i4HBB%bqT2y1&P8-at3$t) +zA!34Cof-!?nY5pS4!&Mg(Ys@dSfSc-gZtYEfSTiZ07+rHg) +z*xJIf)pXi;nA$-c!=lJ2xCyjCFQ!-0_v%BT$?#Pq7d8ifMR4R(s=1-3L8d&^DdIJ@ +z0Qss%lt<#m^jKzU;(2s&_)c(bz!)eNPy>@f8zPOsd`aUTi09Sa@CaO_@|)gUQ2QFk +zeCIpoQs+rW2m1=^By&mnF4dRFjX983P*jVnJ=DL|X=-*2*YiVt-~-4f^cQvj_Yt{? +z^Y{mB9>D&sdO>xJv>nW5C{RyLqI1J_LmPvugOx&az389iNVrgvx1~m9g?IX^wP4sv&0sbv;x&rhkW` +z@CBqi+5**)nurUYrLR@{$ht5mZD!9Ux5s}(*G8U&w}-8fywTUOT*)L;k$)u}(RLuq +zi1x-;=7?>sbCEmj+2-Bt)jbyguUcdO1A56v>I!}i@$0?S>hfZ-wXl|N4|K)6K<%w8 +zEt368C9Rj<0^ISkuoYC^a=n_iPB|g%5N4)_uv1b`5>w)vV>M!9VzuK35_?m{xuU`% +zxs0wOZ-~`Kucekf?ab-f=bi04>MP_+dkVXsIY?W;w8D^|xQfis=P19#lf243VGFVd +z+lkG}l}|6@9pX-@kTPFAtjz|!+zUO>y}Cg=tT=(nynw&Ym1Do9{v^95TPL3J#e`Oy4VS78LFS +zQzun5c_;BXF(x@F^^uv*HR1D%32BX@sXqM;P``3R$MhfCU3HYgOQS@A-hZZDX9rtp^FG5n +z{5Kp|z0$OFEoNe(YHWREUARhkYPfymY;=D7MAFA@OBWS4%OBMj`YSpDdTt-IZ>T*Q3fDXSLdW&=e6QOIy-saa<$$rk6cI|W@cYEBgohkc7 +z>lBmI&;cI|4^wA||8ZSX-Q$6XA^bF0GuSnlE%Z;gS#(XjObX#b{3B_RN<)+{Q_@-CIHpTuWnT@sdcr=`YNa~(gd4DyrGKI1I@#%x$T1-Wt~Hu +zl#_G}u$8flrfX5Bu>hniUa>9rCV3I?DqCoOAnO0=pBH!>JP<}>w-b*Un6D)bRR=&` +zbRgc4JVgC#NEqH5+8V}CO-T-4faOMC!Iz}U95uwe20WnQB1^3?rKKpv-O!t4DuHO3I1)h?CL$bEI +zmX34_sv+J3IRUmKI?2z)TS95UEerr#3LdGEyg`YmMfJbHj>1%UHF)CZL4EaKsz}Bo?R2a?ON0@(jHTTAAdGqby79C0*4$hrPpmlY#2G +z(sRPq%rVW{!(=y{!uuk1^g&=6_?z#PZUyl5AzPJmq$}}j1c$U*hSl0yZ9T46h4Mpt +z_5Z-O0I4*W#tR$Muh<$4moz6gC5|RqCg-Lavuo3x#o3CWZ$z7sabtJORC@`qlkwAg +z*C&FVfkxhOZl|-NO*Bn5e8#II*R^T#8ldCkU=OA4CC4Q9CEKP3G0)l2=?a1@9+pd~ +zBem{&M0Y}OKu52sA?k7&mWB(d^geD6=mF1|9BhJZk}fLDmg=ir!I>`yx!Cy5{L{AF +zdD}g}JJ5H<*WK5`yUtzDIn-9ryxedfXW-J>R;df%uK82#64~QZV`F1dOa;uf7*l|& +z#Eb}2>l^zX(ZkonIU=U$ +zq*&|3>?#qbb{HSg!%PcJMNK{Ezm0FG +zhU5`E2X+dX4etQVRnV(IKfse-3B8StBPvjS!$|rp;JSG%c`WP9GfW?i$0-wmp-1(C +z$|6B#Hzw!CK88;N)wKp-%nSTy0`q|i@*mHthgxz@5}F<3m#yOGoQX>o%)w +z@ten+?ij-qP8P=}p*Zpt@<6Bbb9zp2Wd^Q}9>aB#($Kk&=H)bIBv1A9VTrgr5l12WN$XGZOL~i;J6R4dhmM752-Ev%Wwm} +zkeg_0Y!220+lkIYG{~*LS9(Y{`E1<6RFQ-)Hat=S`iK+#f9+rJ|Fgi(`K!CZ=j~ +z;{{TAp`S7jhjeSTjPAL`BK-tV|!onaykqwzoROsyM0 +z*Ba?TY!0SJs#t1Lsw&fieZ&psbBoWVe#(F9CvCGX=_!4#ejX@~m6gMiQ5?o6xFhT( +zrWBKnS;Wj{iL_Z*B8^h_LN;tANz+}x{t4kK;yLTx=6eUwwVbz)TXr~Yw@gJ01Mp37 +zNF5`#p8Q?h +zEd0wqO^-^?NjvyF!cpgs66<3XqhlhiBljW?qV?kWl8ug?A@G@+v{278R%K*cDXov +zeQQ?JV(L704Z5xT5gKwt>hHJ`=^XABGK4yZ8icP$j>q)G3Z_xo0KP+Mtq)WcIgB2{ +zD&Wm=9czd6Myr9kzNW9!wy9BNrLtLZs*>7NhhQVx7QaU}HeNGPR@#2p@ya>U^^fa? +zbD86at&*iC{fR7$)rOiV{e)v|(`5UYKWq>E0E*z!K=0s-(8EZjxR^|{Rw2La)t*4* +z&@%XCFsbTBji>TZL&!ly8T=zU3#cK5f!g~^;{v|lK +zwuQ@L$A}A59b*IfHhrCLKo2xlF}xs~5ZADVs0uSsRp>XUxPH*z@F3(nx)kq77BYM_ +z_6OKH)$+q~%i^_sFj?uVlz=}&dg{02tioKjK++eR0rk_3wZtOE +z!(Ws7YazHK`25R_^Gzx9LyOD$#**D4ndZ>13oTzHo)6Kt-aPsXfw1BzJlZj +z=khY-F6x)zlW{z~oo+^tHF^N=`-0^{tona)F9GImCm#Y8#1&c)*y``?f9KZ%4?|_6 +z*%PA}7ynDTuFXTT0EM}vX_lpdZL}SAsP=*OwzfAG%q$sS0+o3yb_*#5vwAlDu(nsj +zfcAG0io>T%alp!%EIw<@s_#`kga5ZoV +zpzEIK*u-U~D_>bIt>;Al5dDoa&3SBP9J`%kT{~T6U8SAJ?6<57%vtD_U>bM|T?(HE +zY^j{OTIr{3Rm!Vwt&~0xItX~{H*`1V!gJ$SFh9Bl2|%y4(aL)wQ+Hd>2~R)I1i&?P`&KJ!%3-Wb +z_Qfv29RRu>kS9vl#cAR}@h{0MmjN@S^IA&B;P-HMWHwMER>0#RLCdEa;-f*R>&ZMt$= +zx-MK!|HpEvfys)AvGGdr1@RGyNK#^!rdNravKH!s<)QA;rL2`4cU-qUxqOd(_k4EW +z3C~$qc}G1fW?D`e@fC1=t+u>X7@oe)Ze$=Pnrg=sV>@#X(tQM@v`5aWwga5`B~T>p +z0}fMOiz&n8yP``Nk!INQ%)3;-)QA+!%sff`cid%FS|TtNO}_&;=%Z)#MNX~MrD7eKM2>Q=?bKk +z(J|;BXd+-Sz4XqSS3NFQm0km_W^Fpk9p=7s>(Wp8d0_h0L@N(>!nTki{vERfy!!^?s +zYtjz8R=d}EL{L#z+<9Do>^ZHU>6%m@Y!LL1vR!a;f#hFtUvzc&Y-oBY6pDn$M2E&N +zC+oBE^g1!WGFh7ol|{y&^|3wJI;;TJ6YY!?g+uxY(9bR^g%w6Fq&!r8T +zhf*j#+x*=6)ZW)Q$)&k|xeB;$IIi1@Te8wS$WLe#;G9k9&pMOkVxPnLLyq9l02lZk +z1eh275Z{#gms=yOlm}=cQ~@>M1BqtjIr0cug&YnzQf}-CG81kCbg*k0lj<)BNLt=4U}TR@SR;n3_~Z3V3#O=jbBq6RunUn5`UE$qR>(P)Km>!1hh +z3>@)K53oTcJR>$Bxr+VGSC^-0^Woaq24WKR(QwXar(?#h#-WDt)FYx9{t|2pG=T>} +zU-dIOqpyWF!VIzu>qJzhJjPda2lE0;3+qN}SL+f>Q81hNkNSkK131@HKFmAWvx(Eu +zLg6C8hhVceoBx@=RIo(&bo5w4XXf(--<51v6njH8e3gI`M*;z}J;M`a`5X*pA3)YH3M=jx^NX$iBrk +z$;z1Xn83~{CF5qSBNB&x>Q!`E%c~#M=R!N-DAEkzx*zQJ9-vS|gz5s+nrrwKv<8v*v(gtBck*QHXe4(yXXspz4}K5*6WI~#o?Oe80DE>B-$ceYk?~Drd=nYp +zM8-Ff@l9lW6B*w`#y64iO=Nr%|2yBr%#3d$jBg_2o5=VkGQNq7ZzAKH +z$oM8QzKM))BIBFL_$D&GiHvU|jBg_2o5=VkGQNrbN8iNsjBg_2o5=Vk +zGQNq7ZzAKH$oM8QzKM))BIBFL_$D&GiHvU|lQ)sco5%^CT}8> +zH<8Jk$mC6A@+LBQ6Pdh;Ox{E$Zz7X7k;$9LTd7+fLf$2`JB2@?+k_Drsy!NB_73_6GMqsgn`e&e_|!DLFjhmJ6s9g +z4ONEH#wUX}YCG8E6wc7g`)S +z7pssArSA(@<+Iv0XdtTN?WrD&-87i%X-=5)Su*Co%~{-BQw8=cor@Yr+{cQcJK$;% +zY=~N6ZJAn5HLJPQ9_nqig%;43>y?eyMi1ydWP?k>+2EH@H|T`%N&l+dP**7JWsl?& +zp7Gx@c{5wmz0xDnkJGa=|MGrel{8m5u34d#ND=%R*_=6JN|*!I<@R@uv(5r8k87!O +zfrGYttQR?y)yQ*LbNIg2P=3R&Of8PTip&aa2~_rX_MyJ&KE&TDkR#MRg2%B`1OALu +zS9=b%#SW2=ncZAoYX$o&hw9wrdgPkuI_Uh{@x=DVvX;xqPNyE=E_4Ls)0QYBrFDXt +zf1fr|(^73ylTy*t?)2KsDV`UaNqc2TZLE#cryJcM3Z4z$h2O&$;ju6YPltXQb&Tyg +zr!UtkXpp9;#kCb$X&p0Is202dv0!WQyyPy*%5-5znObn)xB_O2c?+~N?l%7q0rZ_4aX(d!Ffc`*I +za6WhcWyW^ntI-I03XO&fARm!sXnE`+mKX1WcgKt1Cou%Gqrc&K5Ub6AM( +zPOMK~5M;TIJ{4Y%%_fU6vrW^?c58K8##YOo!@k0{+uGmqo^zS47v?ZmSemG3}YQNH1V)G=3Qn6a!bFma$JyY5BGKYA+ +z;7<5siZj8M4Yu2ksjd_5ex7BX@}3TE-T9}(Y+Gr5$^NE3;SZ3T#(OoVyj2*QS&}j* +zlkuAISPYL(jMqtYOdd>C%>3a06UWKb)r2;X0fL$ML)EyRKJ +zg|9$mp&Q0zqq{NEIBpb#?m(;HImi-pFLn?AO(e+A)DF5FGmlxxv}bP7zp2w?Rbm1* +z0jUf5wQ-6p{==6@s|hmxSCoqU5ndNs7)poUg)2qzc+KSN^cBG`*Vd20#qd?sTlSZE +zw~cl}?rEM0UcdK&H?KG9uHs@HW398ehRkcCA$rirsU8-`W@aUQu@jL*Xn*iWU`ya# +zU}f-1sAHsgY`l!W?w{SOXH?a>)woB|4Q-AIVx0S2TEj4XrCo?7JYh)wh +z0oD~Y;9Jm1GMP>>>%90 +zAT(7jCmj=J@LMyE%-eJ*-7xbtbA;a~To)r!E~SauPwS`GHd4lT=pGb+-a}iUs?ZrD +zhcQOKqvh3>s&4hBvPC(hq?HM3MXi+nmvJ7djr>G6;O$A0-ogA~>dy5s=djGOEVPud +zj4`+29?o +z_*C1G>ckmZHHnt>V6!cD-}X%QZui#kw)XsR>5d~d++sKRsVuxM64TEp2gPrheyMti +z1+i+;o)IyOL?%Z%M_0yjCPK+b+9|Y@mMB-X_r^o`U(}AbCt8s(HH2DB4W+EqEb=~) +z#!Yy3tTfsN`4|2T4T9WYYeP^qXggE_egm&Z`lA&v89RX2B>p455TA(6#2-XkyfLOD +zli^#&Z!M&JlU@t&GE%Bh@@afW>|V50v|4m!v~z56yhyT0dJbP)va3amuE;w49`%vE +zWbSO+?3m*E?SA2@=KaGv+*8Fp*V)m2$#UB?k7kJx$Spm;vQ=o6Zje|VZ62N&%pYjy +z=lrewu0Xe-6Fe$VJgEGc^ +zBdV9uTWX!uc1jDmwKPcFA&|ljehR;lM}>331(BAslo8r^V-K80TM>JyC}ZPb%ONXm +zCmov|Hyz_0$L$ksk1S`oy6j|XI9>{QrVms|@mBhDA`+bz9vl4Tf9$L0tM7Z}3;5>+ +zv%+~|Sh7-PyI5X*X^cRlL`|kC2V2|OD>}1Wv)w=4*WG#Cm}{bAfvuk9tVyP`lclf* +z@L2tx(orfTG|XI1txDcY^h$J0>`pXFmQ8g@pU9LIZi#(lS(&AU^)gUHxG3@xX@E{g +zXQAy;6`761;Fj=Sh=QgVgmF?|tgisqp`!7^*amHYPa+|-96p`6L8d932{5Z!oy}xmZ>Cq78@MAZ8pVPf~U!JNt+&Vk&L&v)$Nb +z%nEuqRg(OMufkfR`4A^u3K|dY>PCH%zCgdF7cur3wV@x-0ysZ%0CA&T(NSmz6h_A( +zN8wY@Vxxk7NiD6ck#u1^Z^}GO-Ao#Z1&M))?TPBiKT|8yjri8$4!N9`FdiXi@h#La +z)@q&r@LF@{7T09=JNId~+5OX5-I2?-#(b2WK{@fc@K3FYe4n43`a6Cx@^@%`ppJjE +zuas|subF>mV0`Foq-(rcY7+lgs;q5+;;5Izncb$4`GK{%y^7x0x2avjMdRuc~LgZUBsX}+=$5^jqZq^t5h<$-!$TdLPIZW%eC +z22f3ihV~nUjrsZu&82l#|5G?+m0V9QB-fQU$rTh%EvQYGtcJ^vr}k^sEE~s3+u4*MR=W-6WwFhNWswFz%GA&e^LKg|Kq^G +z(4>eQ`h4v}sdmCzkE_SzAitu! +zplR9^`It~D1EtC(?#G@+>qQGhM@DnR3dE--T&W-F*ZdbTCiALKKM8d}uAm|86+Q(_ +zC!P3CEGKNlF#Is~4Yi;Rz*LJuqoG`o2&P(PFw;xI-{9lOT67LJ5^qU3$undLFb{`N +z1*r|>4PrN52iuC=hOX;bYCpM%C}n=9j70l*DjJB?j=+&}k=Kz(bWFTo@>IH;&{!U- +z9fN4BJGq|O!;Q7Z?3C-U`<-XHcZ0Wxw}j__>yV?SZK$~+`<-l$9f3^R3@HaMCyT_- +zMb3rF1xp4F`%n362O0BvhFjj7 +z1%Q`_v7hO3)CA%@Mx!HP**L0i)Gn&o)RW2rWwr8Dsia;~yJ>`eLhob*jGoXju*+UT +zo1qF&mhoB-YG2e#%5u4{R9CDbbl|sV3TF~&JTo|xn=c~F5(~>#wW7WNQjs}0OU+?E +zm>|nf>v;Qq$2jLB=OL%VsoO`{##wA!JEjRqV4I*^+D@q!Po-?};gOP|UIDAWk&pIu +z^;Pn32uuk*jVz3>P5t6~$ti61<2$73&>)7w1S9?#|{u=6d3s=D1@!XX(ei +zWeQV$@vTVM=%R`83sK}pWU8h6rhX@HB-6>UsmkffnF0K1A&0a`PASa+8r@~AfLg$> +z;37yvq#Tlj|Ai@d6!gp}V{Fv3>1VZR+TYq5EvC)V8v!QT7e0tsv3a;b{7pTiF_trZ +zF!kX!a??1BD{a!5G4xt;1WutNp_AHg*&}w%Tub(h*NaXM=L(eyo(Wt5_o`j!efV9p +zUV=*(7N*OPz7{TtAE9tl4$D_tU1wSMPR~+r)O*!ScyGH2*Gqd1Ya1>YlkLG?1^UC5#F18gvq#jT}u)rpqvE +znM2GJhGM$X)2Zp?K%zdL4`WdVDGHB-z8Q0jjz(8wvGLpJ11ZohxFdq1JJI6Ua_m0# +z9NU5Yi7iFv*mUBNHRg2S!14rC21RByz`g +zhc^aI0mMJsw*)Yent|8Bui=(4OVW|44}R-+JwH+(FGIa$N^p5Chpi87lk6w$GwnZY +zzpX1RX)e3T#U#n=_!@LFJi|DwIn>i~mUK_7DawK*R1o)w^(9>XBwthZs57-jdO{y> +zJTr7dHSQb3jNf`qeX6!!eWvJgRe7akkuHc^#cN_g>4|h%jw`)2#`p$(LSh(8=ArYj +zifOwUxBg*!VJl*H*q7O|tW_<4bM@Kllz^v@JH}kKj%4BSRK@u5$db^@z-s?%-!@;` +z_rhN}m?JzkS}xHjy-g^pJkrM@95I7FZQ5!nYH#EWxh$T8o~xdgp04h&)8cq$t!@6B +z9Zhw`t0BdWD(VD@=WnF_$>E7E@x!rUv1Kt^JQ%knC#9U3m;6C-vD{BBrav{B!K;zo +z=tRtf_r@pV-2hHog(+xDbS?53E(@=Razb~FEMqI!*A)R1nGN?wx}gKGN%(wX9yyT8 +zL+_>2v`U|+i_mEgfgK~;r@}w(Y^6N +z@}JBoaibE`yCV1T!gNnlHwz7()vE68o_XF+-hJMHXPf)AbFDpM37dA&#fjAjuMbcp +z;b!_>qDd@YWMrsHa9*H&V0U0l@N}qeWJK&vqDMN9ph%z86UGoEgViUS(=glJ^cSac +zHO%?VCppoiu(z3kbcpOpJjYt0KfvdkVEm&4l|z%%AF8f4)J|yC^|$&IBRg~iVAF;0 +z75EOk1+EPrhQfxdf7AA=T@^^)C-xM|@I^Bn(pOVsQsYt&Q&ZD(0mEA@E|VXq)s5%y +zEUY5=nI2@iY5ro}Z+APru05`Eu9mL8PSu{<_R?I~RD|~76OgFhL-{PsP4`QzjOGe^ +zgG>GMeI{Qn-zDEq|I*;$aOGHzWW&sEF~7RsD2UD^_R#Z9HcMq&%wF1=an^9ruAa_D +zj(fJWTL`MvSugKbY)l!J__Urguxcd +z791C95m_5+m~4^RAbP;P>WGGk9?Uv!p4H{3?E2=Wyt}-oyj8rFJjYyT9PMrE%&XY0 +z6oPMo8|ajx3gt5Al3U}E=z+-R@VxN$aIr{^=#Urmxni+c@x+tli*#w> +zm2^(MXC#n(L_@lX$!pnWd*WE<3cIg+9NrI}KRnM|wDW;2za_8fHPsP64V(1ga*Y2k +zwJ%OYABEW9eZSTJ#rG#*BBO$J!V{uI;(h7|Z<1?k!=UMCUxK9vu!A|qQr~K`jj|22 +ziPmCP%CdzM*+NVu>QACF))*NJ-PN0Gw2CYB#r6C0c%g2(equ?qOt?nyn*Wxs +zjc>4z^H&Rmg3iePSXS~~rls^-T?7@vc9Ib$!ELsFx1Vw{?oaOGo|LP)>-m`0eTJDLzp?@gn{*UMBH1@jhu!Ps?z^3BW{5>MkvhF$P)> +zFF<&OF>)J0{ikj=h8mJ_8rlNyLms0zUYi&X&dVlx +zG~-~$u#4Ds>^&wxpQg%_{qYW{1>UMV)M-+PAC=CNq~leiH^aw6me7x2*^m;d6H%ju +z5+_n?_)C&UTLHPTag_Zx7Ey*HuSD+X!=0Hbf4_-ayT@ +zk5U%DHI<1Uj=le7;}yt +zXu1eqLru?F87PS7siCBqID&OUb08W-KsAlMdPCi-=hR#2`+%Ny+UNj@&}ujr@-Oll +zNh9Bo^@s=Q1&@U~8xH*-U?O{^eBwdAT_%6JSZYj?P9_tTl5dl5fp!%F`?{8LN1Fn* +zK#LIub&+ju-eTQhZ|t1wYUW<;?(W{<8sI!^pJR=22>XESjy;0PYFSc2{(JIQtS(Rv +z8w4-+sTEkJteQW~VzRm&eP+>PBxwPDISnM^Rs_ZNf-?P5w){TXPEbIuix{=UDs9CaU3Y(+nEaFR#Y_FtM|p> +znRdw~vEq?xp*w+B;5sev7X|3{Q|Nu9T>Mq?Xy&MRLwTt`h4)|$$?fz3wk!9ad8vi7 +z7Pfx1)U-4;+qliFM%Sc95j(IiNJaRV(OIvkHCMMO7K;>9s^VG-8ZbG3iidZgNYEi+l?f +z4a9vleO}*8-xz-=@GaCN>PVDIFAz9ok6r`0g1hJvrj)s>t-a%o^P{V$yQlk`E9ji< +zIBi>PDaI`Z(=vnQL;4zb)E;t0u@nC=ot3(qY@7TuIVNc&pQXN}bMn)Lj5t<~DP6R^ +z`g7wkv=J_iEJaQu2a&Oe6IlaHxt`EvqY&^#s_4A-MUwz(eW1@ahCtKd(+G_X$6pZ@ +zshRYCW*6Jf^wnhM{HDRCTT%oa{2H}}NVZjn*QcE+OxJfRgZ8LZ{7se3B +zNE7X19xx@@+APT~VxH4M>Jxc}n1{E;ilf<(B5-%;s?pYP8LUy-m~JGD8BkvMAv_*& +zpc_#btBEzk@?w|K+-O6j0vtDH=pnVXvQT;{l;ZcKo2CjUnSma=AW^#4rrC413$9Rk+@h{Xo_7!)-($Ln~ +zF52@uKHEzJ1bD_mn7t;0zDF*=o1(da##KdIrIeI8sgk%?=m%cAgzVx~aUqy$e<>~1 +zN}35MN?n1%@;~1-20Wo+#&Z1w&{rC%)0As+Zh4#3N-8h4lTJ#V<=V<%^@%prr~v0i +z^Ww$Gl5{rqn`xZ+w&kw%Z`&!`3L9iYtn1BpOzRmp)f{h*6gFbY8F6)HQ}R=6WTa>4 +zQec%o?0W=oNb$g~;Knc#dz^@-TZ>TU@P$m&JYoN3!WdJkG(`)XnSNcEJ33n4ti8)sk+H9kp4gs|6;mt8DQV;9PYm4SqL1FnclsgrtV?RZ1&!kwkCs` +zihqG?=||)Sf;(LyaU{AnoC-b(lnU4b69az*PlYB%*2jqC(ezwlq})TR1;OYl{5Kh= +zceA=l|Zh;v(fb3?6+>Vrybv%-CSK=AD!PE!|b!HCCn4qaa1|{23%7=CD#%X +zsju-|(MzF6fzJLxKFn9r_rsSj@HOa)9EBWqD?s;yCE+ +z)ReSum5Wo0cq3V5GKq5RN%en+(lTIQ|1$E! +z3lRp(!poD_sVdA8_NZwsSKd4wxagRwo{6qO +zj)XOz+05P{`(XmKUh6D31FX%O)M6c@c_O{Te}o%^zlVL1CNVXhOyTOxp`jhDhk9am;vRIH9@VZeM{X +zAQjLsx)RHY&&JQ=7eVrY#oGaNR|L5P6)^g1|0=tsD}pamD!n7wI?*t`ELI^_BX&5p +zF#aepJ~b`#4(LXIX?>wN=w9LyeZ(}>^2H`O4!8pDy`Jx$)t<}lKCXq1YPNsOlh}gP +zHcW>)Xy>H5JPI_nX^{@0J%LI7m%tM(>dzTi9vm0G7VVp8n(iZPkl$%$xDaL`&(Kzr +z#k}A0&brAKwY{=+w2imcwcG;Nzc7=ZvJ(gfBe|e{`bTxCGD|)Src+Xki$$cBQepYM +zyi*wm_%^Gb*P8)s$^#A-GPW26jd}VlEv#ayS1B*|k`9V_#M{Ci;jU0t{3d>ovMZa_ +zu6iTrFJuvRgAgbW>)_s-dstW6hS)#azuCvy*VyV?|1tM9{i6RME!bOVp;k@~^0!lO +z!Cni8EWv&Lo4$d*wZ1m~)q&2TRgo(3Dydn#E@f$T;ZIm6Y7@K0T*)@vQOY&iUDh+$ +zlf%=}jk{Vn%Gqw1?WQtxS)wpn7^iS7=7~d1PbkQKEOcu`o)$uhoJtVI`?4>`HS_z(ilVdU=L;gWiwcy55|g@ve@J +z`_}K=5vCz|0WAQnRSQeOOe)zn?v6GEti53HMF0*S2;K{|jZ}?|O88QX`KFRXeW_1| +z1+)fHi%QXL*iI&hYsod>f~E$ho@{*vrni&ji5pmV)Qo(F-Wrh6O%G|uv;*2pt+1Y@ +z7Xwp#FoeS^VI1j*OhrZ`6_IPO2d)a0G9+!6T3NXvwG;#Vw#>}*+EgUDG&w8zC^;@Q +zDg72?D3$?+-${qz+vsYd3yqp)nlD=q+G{xbxE$`rZq-%V^}~_F{?pQsYs0w7J*XF& +zp(e$7nU=}ku_xiZK^b^rC4kqv%(uet243IvX#GS-ps{hv0$qXI--B!8iR~GKrtSoT~|x0r52X`V}WNPLZ64(q|g +zfw%s-K$H>CuIARZe6Z?otNI_&U{1_yYoR9`orY^wm?g87856DsU +zAFK^d0*{v_>youejhH|j#Ivww=oJ`(yt-XgrC-8_Oe|FE6!&xIQF|V1IZmKw6Mm$& +zu~~78SJOumd~|2{X0T6Sp1+L0uRmL$bx;YJqf_E#Q#rxsYM~A>Mj*}bDA|;0XVSR( +zmVDN=)}7Xt)-20tO0qeTZ4uAtVL$GGy((`dZ1W9FWJ#6Xe6P6FB#ERZ%^z +z4bnM~U%{a!P%o$vWB{-CyYA6TYQ@!@idm+mKg8z30lqHp6%T;Spdj-cE2jjf!;2a-qm90h0XV^IP1K)|%HJ&R&#XK1zSvGbu +zyg8`&-vK64+IQG@#@_&B816=QBp#&8h!>TvMj9DM+@ar^)>;y_PmWfuy6$7{&2Gl6 +zIcGSw*albvrawW7X$H0xex;XDuSu(flbK>^Em=BwHE|@tCzd5grv6QT$g~h%i35Nq +zGE#f2laLdRz{?RCDTx*b_j?PHA6W*+pk~k!FvU;lL-fXaM}0lG5~qwM&X}YP6=@FY?F3}aJ9z8xqrS4|Bh@!ko^FmXQgV;8r +zIkk^I&J190vQOD%EX6ipTGJINh`fwX#p(mEH#b}lT5EWX$NDM#k!}Nd9SGV4)q#B= +ztHYpU(39vLbT`@zJ%a?{U(ivbwf;yguPl{u`7did;qb +zk$MuhMb826V5EP!uLkgXtNG^!nuMlB>~S%fogXAUP)kBn&>h4wx}0gMxsUaO?VEj+ +z<6lQ5$5?x7+e?eZY&LzP*OLu!0bq+g`eoIuY?r2p+kgW2h=0mEg_S}r(Jn!LOd`bDJR?=@7GvKah +zGrTTYjyADZO|{K4EF-Oit-6i1jj#>?u1s!IgdRff!uG-c0!6$$IM=E?76y+Z+FKLXsN +zn%4Q;DrP)c7vtcN7M2T$+cTq5TN35sWn!D6W1=Ub9b#?bS&5>lVEQTlNPG&e{|S9O +zWJdl**J4xfoWwLDi5<4?hC#UkgzU&50k3!+p! +zm8b($o)?m&)`Pa83Q?Qs!j-pPuzz!|b3X%~$Wd<#Z!b^8r8?Hzo|sRt9jFIbQFy*4 +zN-Oyxsg?0;QA>DQa9H4r|Bb(0phfUfXl>*{tVNQ^#DswSTYCm&p%sY5)EcIVX$!Z~ +zoY&IIlGC!XMWc$m(TUD>#TE} +zJd(eCtvRMS+xREyNj)Xenw%trpJP)*t_D@tQ+ +zioVDg2IYn~gC|*oe}J#$fiGf*Mj21_>iT7^msSiU5nBN?(@f89ZjT0>#zAk++&;iE`z6vh6< +z5?E2ZG_GKaun%YyxeX72zUpPQLCPxWs-OTj>_c)>Vn&ovw2rg<bib>nW?&4qKS`m}BNL}RO3aS27Pitdz +zyRihgL57h8jHHEeNoV!i;AiH64gX!LC>;^Ih}Fd&;!Sas)L-7LxU}2)9_S!)4@(dZ +zIyXyl7tF=2&22XOXz*8rfyT1i@`XFYR-%Uz{m^nyNZl&+=Ub=7#(zeRh5~_&{)fJQ +zd=Gt_{prAikT?1${w`HQI3~B#Wq37C(+y3PEca{)#}3zXkkH)bsp0ADmYl^MvULKO +z09UEwcowqK*scDS1`6df9aC=;SK=H{Sw6)�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 +zRv +zZV++>2L@^c)&zzGPlg6Zro=uZCZ_8Md1XrbW@I5n@yX`4O0g|LihyeVDA&!rToVWdKQ@6^-y+~^X}e|sG$5kLby1GR$NLQ{br +zHa)o@^GfWX#*LK#v8`tAb0@4d99>)4TM?! +zv3yMs)3cI;3h|0P!8E3uWJwSF6B;R%ohxMEKL7ikE#R~NuL?;?xQMpzthk)L>Wz+1lH +zeepfmUUV2DK^=`H+Fs?9bY1w8`6E3unJ>Y`o5p@ce??oy^2K{6h?FTaNHEKBRWtH~ +zp4bR_n5ly0lW!F<=5^&eX%cO5w?i=nbqd_>@4Y)-L*Z4r!GjH_H?whCCn{M6M%a(8(jz; +z(0F;O*pwfV{*}CzfD^mp`{GREO5$=-O%2bW!V$5b>;$e)d1Enj3M5JUp+C^VSOtv3 +z&ZBkFBM1vpmgfLE-41pcZD@LakUvGC3(#hGCvpQ#W5tNBuJM96~ +z61zoaXKR>Uwv_;f)&@?WAGp0ey-h)ydJAZZ)i!(BQ)Fq-sIh9>q~3i0)aCdT(5Pz? +z8WLoKC4zT@Z-LiaBGx`}Db<0erMt=uJr`(+yvARV^8u=eup3PgQ_!^5B(XVI6Z0H2 +zMY0p8vA<9+k_O4zV#YGP2uPs`!0DZ?3;F`15YUqP!7;ce=)gThE+FF(8Eym;YfTJV +z->a5Wj!I?3tNgG`-E_;;rewurzT}`Jh|HyjW%3Gzq|u6~?S;mpEs0$8OSXr3zjcqj +zfpfB}ihHWNhI^{3nsd6nrS%MVhgnAE!B#*SwXYP*98I2$WsmrR#RCanEnjxu9N&0< +zIPfu4Ihu;gscOP@*{%Nr+MqOwoz@tM!7wn*s +z-59H1(>Sd!K&2fNT=^v{a&zUq@}GJ{i|c(L4L*y`172@_`VBL{bdCE6+NJreH2}x2 +zV<}?ZZ+gURpt2F&z<*5Wr?r%8gRbJj1QB}`CjYO!v+k1OeExQOPmlWy1XwIM!5xCz +z;!d!IMFJb#U4y#^w*)6R1eai8abE~d*m3FUnV$AvJ>Qq{9L}B-{vwARx%;lF&vg~> +zZ-4vx`{qGEv|qpysuj5#JD=cF!$nFxf_5OE=}H@`S$wt{P9tQqs(Yt;t9yq)FQTKf +zkbRlum~jg;fO6pvw5{@b;clumSB&i)L!!>ertpezG<+)ZJlZ@iuphZ_$|BT~x+=Z2 +zx@Zs^NNj=pXnlG&eS_XdccOEtB2+hW8nFexiY3ve=t(3KF@qnZ1TqeZAj{EAtPn2X +z&xw6xHYHOq+oAW+S@a8vrdaqpG}aJlr`DIh6M6n4RH22~rLktwE|KfuP2qRpb&>Os +z&1#<53PevOshzq6eNK3FjSRKTVQV`_Yv_l*^9=I#_dfQVa~F2ej=9!treS)4%Em8f +z9(j4XTCxz^E2@MX!QUaD+ub+SSHhne_zGlyW-P%zOXj6x5~&f`TVf{tn)z&4ZF*zA +zVyS2CWF@WrEQ8J8n+_RB;Ce^E^yVQ}6sG-kfob|)o(S*aWAUYEk;Y4kv_tL)1l(!0 +ztCk1prHRNqnD&|=ZTve8?`Vx +z6ORE|d{wU)b(Tlg7WOQM#o6BJasKRRXx|O_ymH1NOfSldpVAu2kJB@fKe1DykV>!!m+gu0YQeD&B6WlRZ98#x8 +zZ3`?e(`fxZ`T@bCHMI3|IZ@+_rZ#XtC)TsYAoJat&0~)y{^qFE2;QF_1*y|4<&^qa +z`wvdG4%l(*Eo8@cVok6cXk~OI^wYX(_tk-rF~`*c@aIQ$9gywwVb)6$1Ie3IQQZ(` +ziGH@BzVW2-o$-vZhOxJyw0^tp2K75o3YRpy(nH+N3*1z;YOGphX{c3je4s#}Uf^v& +z4Q>WTpajcvp7a=rRp((gY5{Z4_|P)Le$%DVUS!& +zD~NeWn=Yk43H`7fds8rR9C4TR6!WZe&vV5cUu`2T8{i(Qqo!al)f&kyNxO4JUy1Iglh<^+F*L432)OxdLqys)%fvzm|veBAhZongR9if`ZcCsfD-XLC%9*NH0ZJn_H=RIcHXy-wcas((BG$b +z6XVeyY9DDs+L8L0FtVFtYof`>jffao9i0=q8gG=~Aa!~%q +zBQh+M8#v;3_!ZwT{_cUZ!8zgm(ZcL~ZXdrH-_q_^5$#ir1_q? +zt$Bti$CzO_z_@i|sr%4DI)-*czSG=lYvr`uTdpIwh3-lUlJo`CE9zj#Gb})&NHw$# +zFf%?R2f3tuRNnyu{HxRirVY9LvDAfRni~Um{QBHxu6?pc>J)V3yGrvFpEd&1k^AV{ +z`UA!Q7=||5^Bwn{ja+qHr=6!Ab?t4foaskH9bF2h7q~h@H1O9Fr(;5RNAR@2m9IY- +zhN|bY`L+FOpicNr^cmdPW(hiF0}wSpJm`m;f)?Dq-|@^j*LA`*$hF-$3{t1>EWewo +z8aC;IWIg;hIP@+{yM=pvQ|KO73@=*#O4_I2|{=<$f +z5_M8b1*5VTX+}JvYrxH>w(Yp%0#G8Iy^p=uy`{aRXP~RCBgMW<x3;}u|aTW0@GX*B~fc+5d82%wR-=F2X +zmVY$Al&`pdYhZEcP2|`3Xl@1nk7!bxqgg~NIu2A_3z&!)Z2#CicEL8zw!+%g^2lT} +zey{&dM^F*m2RX9F>S=ipxUd!rxNtRnInAdB3W9J{oGNvMWOYQ@t=7`^X<@jBhqOPm +zs@g`#($h*wxxUm(Tq@+HJEVF36)*DHkb7aomeNgmmO2!fgzY4rQYiDC!D@PBZf~7# +zYiBMEL%$H7 +zg#{Qt{R_31*p1~N26e4u7dEA8a{xBPxCN;U+^6-D1L>p5^K2oQix&<( +z4iMn23H!GP{s#W7NpyBxN$g7v2g8r19ze?yW2o`EGWvyvrN(NeS*Ecj2b^lN4gK{V +z<^<|-?ow{lRCl#!~WZiH^q3#di%&43SgKY*PngA~_T +zFbp-2?h9FIEp;)ui@N}m-V5vr7D*gP9OX#gPN +z=F(gh-EUkv*BM6u`n)ESTc1be;QwmP<@4!I$s%mc=)usEz-Qm({F3=@$Q|$WRR~lG +z?TU8Ckmu`olnt6!z2m2i8MqhO91_y%MaSBqWY10KmSLQj@o_LIo +z)T%1wr9r|M{$%QDvPDv#{4O~z$)ujAa{2dZQmi8NkcTTn)CO8W8;YDp9wV2K89+j< +z)Z)Mb{-&^UU->Ke8%9fWq+F?!>`*Lf6YUSMQN6}D0RLtIuCStUl4*{)k>#M}tYv^@ +zA9y$j_-3*61o9G=2eamf!Xq%}HHbfmoD4~U6aFv0jlPGz75*oIwV}I_U*dzg12FBs +ztPa93;MH#%Z(By#_dAEXk3#Nv6U=&hc;YT65U^z|b&YQ30Wi>Iw78U?{w}pGF*SZM +z`U^ZQGr}dq8^R+ayQ8JzVb;$vd;?*k^t*BnTsQ;q|A_CY4EiBmTh~ihSNDPLO7EoZ +zlRiSmop?QL8l2+U@H-2d9x9U4V5CW+=b^vSmncQ%kt3;Bl$AEq_o-IYEOIPS65on` +z(x51pBEnmk^>T@N?B&>!=)p+&h&?hmQaai_7LUggt$~1i4foK}*w0{MIb+ynZU~gX +zXxC@=OHWI01@A)Wh#qpzvqvq8@iNnrI)q_bf9VaskeeF68JQH?9%$kp?knQ!2_2Sh +z0XkF+NWo5trm3F740)UOJ2sar4IYdo#%ktCmd@6{t@o^BtmiGq%>7JH3Y{S2wT1^kk9o-j&ku5{Gqqp$GV)JEMGz1c)q&RPrDi#RSg +z@*O)IAM6KhxHV>)ZaA&mPY%TxZL3r#&2sPJmgsMxMS-yIX?~;pI{8=fANd9YCBQ|V +z#*yUEG%sz`s^G^d9Gpe>EXD1NbD}HTo$Eg4cDYg4bjMm-H_KyV0ewTd2Qe1?Lsg`u +z0?cgS^@q7wd{umI{C+%#?U)$H-3CVMK6F@8(j?`r`W?7c3{Zz;fJvu2UJAdDb;hpz +z?@9Jn>!`g`S3>S|yn0+M2I-}Z$a?5AC-6q(YU*Fw&Xm?$3|9;ljO~p@jGGJ>^@|up +zSDvy#=dhu+Q|5%W{5h^Y`yHfCw}(atPXvAm>a9K15T)#yQ%Y&t*FIfyryeIUPl{1=Wr>%h}3g*2R4OI=l=*KXfbRPN< +zxd=MPC9r~M9b|!qgGXtjdI;X_PTF&A~)vH`n~-bc1+P1GB5 +zWofm*@k3H6?s#Gkn-}jFuM-~~*RfclH;k$ZrbmdHd`;VpttO}IIzsY&C}i{6fW2{% +zJK}!guHrViavYs(_sjvq1zjid8u&YZ6;b}r#E#h4@H)7$_w>!quK_)_roOfQEU4OQ +z#)`qWWs86+gQ0Wymbwf5$W!JGR)gK-_|5UBqqAd)J=u$|1Py9wIlUkYB29ghth9_cj71My?h6zw@siDaUpe(3XoA-snOa%^{^6@ +zE67u%w_>*F5L1Ff94Ru=R|!>ms2{Zr=y1FT_zJ2rq~WBoqIrm=qxF;3VS5W*mMWIZ +zrmu!mOci=KF%JDntt2sNiSx1(qQ%0Mf(QLOd~To1x6OCh|6{OC_%_f_Pm@0iPvvPy +zG2$3)H&ivN)*+5QuIKK5Jk`8TnDsVw?{coTm#_{t4F_wDjmQJP%PBFy4^7sAe4ZLb +zqN5^hBC8^`qjh6T;~9ys+|$&H^n3B6d{14ERKYglSBd>#Iz2+&r;bzosgGnsavpIG +z4?>oHG^81_5E~K$6G=VDVAex9^e%P+|D9MzPNEvo|IvLQ_p(*jQ+Jn609iDGxDCO= +zk1*?>EY?b+DPKa2w~l>`JPsERzYXca`@`oW4PxclX^oM$>?>}7buQ~<-! +zRlpvIj-r>68oa)H6-LOnF#q`Z}3&`7;2k4`6 +zl1``ycec^o#)LP)vPBbH6MeYu$=UGCE-$PVc_~wwt8UO{A~n!+D2)|^6xwYx3w@0= +zfsQc(lcJEaOzEm*Dr3QnIYh0h{Q%jHeULg`MjGh3y3b58LnR|>T5kHs^rxw|X%JXs +z4=}m(Zn6%(4S0EjR4Y9p`GOrD%Y@XaJD3sJ<=^Em87K>Pw!INk{8=KHYApV(^nx4P +zWZe@(*nHNO;dHr|duBuL_`28Xed*3{CG6SO>0o1$sU^4rIU?r>S*fiF$mB#g}NwO|xxpnkf(t^N&Dh51R>k8VR% +zB(321!-4A^2PD)QEk_%x?bj$|AyNW;2ub>?_*1+$aTVNv2>F2MPn^PYA@$G!$yJLf +z{iKyJ6TwphxhQ)kemzz+mKRM#$Hsn&?`6AjS*i2sUQ%Vau{9t%(jE2XO%E)k>?NFk +zxn8;_d)9l(gAwqi^SOPT^$29dYtn~t9Wp?^m(EI7V%q~JbQ#EQFXZXhLF%-I|5o6i +zP~~Va?&sX;zS3bei0a7{yytF66#g+0sukL|JbS4+rL&{$Bf($B~v_(pV> +z_DpFYe-d*AF+CcLrRCCt)6XG4T1mvEFVYQpi_%v`wK>{L_+F>9t6Cp0W0q9=DGTL8 +z(lgNv2CesL=#YRVHJRQitQK#B1;DS~KyJeGLWM3*Q3GoF(_Fw>&Bj74(!hS%_P{#Y +zvL9S9vaSkM9#^!p@@S!Ms$8OLEH}J8_|Ct<_c(uT{s*8$+<`=}MMR5PxgmU51gkLi +zm~6((1X5766>{Eo#og;Y$048llRM!o?D%T!V_pLl_5yM^)=wKH9~FM!B`zbeC%!E9 +z4lJ{$qt#+`yfnKwQ6%{a__w)YciF9;)heQ6u~{&^{XkSB+mPkSH^e~V9$pmB!A`?0 +zY$D_tj%tgvRoXvV6_^w(Mn^!7YX+QZ`=|r-N?lv#1yfT0gFejkV`l3*)33=wz{{t! +zKa~2?z4V}zhvQ%#HY!ps+%ohe_&C@yR5QFKGA4G6ZIi5-&XP{6#j*7yud50(F~6;$ +zvy6L#XO8z17-nS81$Wwc+5Vlii0KV8h4ovF;fTH~^N#LGJ%)5v +z7|e&uAZ6)ShAJ6~5whdsl~2lWRR>A>Ofb&$K#xPl+=re=d!pA75uWT{;C9zZVukhT +z7Q8)00o}Pi(F}ezC0cSFl7FW9r~8UqWQ%qX?Mt}nn@o4(U*^}qzZG?sbzOG7bd7Z_ +zhlFrvo53=`IEX1pox;j$8zooz47VnJKGFzy_1(U8`PTe``6u$9_{IlTgly4h+?5;+ +zM9nD8k2R%!VcHpAn+e+$JL!DrEDU|)_TU)21v8Nkrj-U4Gmi@61JJm7NZumePiI2f +zqE_+TqVpT|zW~-UNb*@KPq!8*xKO*xXSvwAxnUd-pB_dCh +zi^+mS$j#+z@?>D9mTMn?>*Vn5-~>#-Z8%~mWh!cZWUgSTXt{6JLp~_WFpFtNKZ8#| +zOUN+v5PnW=1k2fu$RWZ?gNVBi^-CTa!o6I5wPdvv#k>@L?$ +zcfzv~I>+_A4LyIm9y!L@E}AbJmgs7d&(WD`Q#dV$Ct3D+tZ4L2SQkDNx*BR0t`wOV +zwLt1r;41LrgiDg76hR7LA0bC}k~%>T2HGPE%*ROG8@dSHnCb+qNH+8j51|rR0bPg> +z40#2R2?!6y%g&e=|A6lTr};aw1@I-)sRq;~$YS&ODXccSO#4f@BmE=X!bIH^;VXnMRyNYpSVWyN(G%vPYajbL&;T}@V8}rokBwf{< +zqOFJJC!>v7OLAzYdQdFKzfZgc0+tU}3gr8~haAg~kUAX(m1zHnFLoAs5$^s%upqilsNzZ%aokElG{hgj7CQXqXU^@{71D8~+tV{t9kJ&v*|wk&+Q +zz5HL0Iwj@b6tmU`nU4O96~x!#Pw?0HF}yea33>{LA(J-%c?fe685|t{sA+IEgtenE +z>pg +zTxeI22h*tm&Nf^4P9z$elIWG1ExeJtBX9BE^m+Xk(;aJP$5>Y(@LYcKa^5N4u^yl6 +zlVhZ9t9iPixNbLLM;9vv#8)Yx3*sLmM0gw2HZ23a0=_^19L~j}_2a)Kil=hZv!oy3 +z$x;I!Lk_14Gt>3I8mb$Y8kZXz84np=>K`$?bUkPUIzc`042(jZNN4S;nhnm8#_A;X +z8Pp>GLB6~UdIN2ToyRb|Fizv=v6^7;U5pIX3aiH_(J-$3g& +z6MA&G@?7YXawZ(HoNzgCLVA2X@=L%>B+GZpzYo%Rf5dhr@=`U$y^0MTLad~x>OH2O +zma4Wb_LUBU)8gFexM^Qtivs?}8V)g;^ao-(RteFmHo3d_K7EpZo@$XIQpQxz)Q8k2 +zep-5puu$AA{UPsAW~z0xT&*H902u_n&(A>hK7>j;M>!#r@(76&{}305J48-gB=v@V +z%xUoAzCgF)6TsnIfeGms8lxt+C2AQ17U9m;eU`Omuc?7S&n%{HJ8P99zZvzvS!85S2-W@y^&BWP$pN{38(aK}ek%*^#k=(ZZ40;kMz0 +z;p&mj(f6@uY?*@^!z^`*a>S*GZpajNwXL?l+=N{tf?f7UV&9C$$ +z={I-{WQ|M-`@mUq6{bgnf&oA4o9)}+s|2ajXTjWXq1a#S^5mlQ25FDF75=XldKfd# +zP{K6U+{g0XqFBxY0awW^8J8OpOg-Ir>JSmZGSR!*B(y(m|-$@tYRGXWg%kNF4lk<~Zk~zso$pxtu{MYnC +zphOm{&k%5tk+pPt^bsRvd1LKwU*Kr!TyzJOv*MsG3yYXM<3AF+*h5RYk5#A<` +zvVTV_gvCHzzX%-`d;Zw`zP^Y4%fX_NFEJ_6iGM2Qs0j3p@^lICU6;0%avXu%ZDV(9 +z_Y>DAnDs(R#?sKVSMR3_g5PDemX_CuIqBsoEcrMgv-8*?>~{A1L?R(`)l;i@RG0?# +z%C5>b^}2QrnT6UQbGizfhqZ!^@euS8ywfYSG;~(X>I3CGByh`v`E?YWffK>uY$7I- +zU#LvoX6BCmj$xV6Xlh_8Xxe7HX;`DzF%@Z;1z}EPfU-@@$1jvQ)OucmC|Y>)Gq&A)OTiC*)J-TIjK* +zjn|mI)F&WnM6lKzNk$<(urh*$!@(}WYQd$!?x7{&LQy3CJ$NvZ{0xy$CTqE949_EH +z(XVtLnT>i0dO>;mEd3$ow(c?*v__LniDI}LQm2EEd)h#)0{E0VfMv&n902pHi2i{! +z#qZ*k!QU{MXiI#>n*mkQ5v7pTDlfMH!_Wi1cxoM2HNik%er@ch*sK^6=i{01>Qa1` +zAW6BfN#Hthi$0^DWinek+v~u4brm}Oojp(84_qysE$y!?l<5mIhvKkK+F_|k`aHKj +zem&A9)GhGL_X>;^bMs64I{VWBTX|9L{uRBI9EAUf*3||mSESxz1L5cN8-4@)JmXtKf8_*J6*Ht9xxJF1 +zK2@`|J23gv0SmT5vqOI6f)bZAuRn<3-eQ*xhX6jPewaMJ<+DoN6}NU{CMvKmVB5xncgnWle?-o)D~}` +z8+eZxOkO5mlb6U5WPbDmL?f~}RTmO{ +zcXXM|8fGKYmAR?&(^sf=%qq1&Mw;TlmF +z{41oSFKw0KmBp%33z^f#y_Qz?CCc?BJ% +z$>>7(uG`Ti$P+CDv)*IyEXx2t@>+gWY79`bUhZ+?RiYaA9~Vis<)t($mQ~hj#jsn% +zXxgY>YRrQU%WgaB+(_FaAo^6q_7b6p{lU{6B*2bf$k$AUAj< +ztVPeT*OPW(ja&h_k7v<$^|I-Mbr5VP@Bk%t5z_Qky&0Zmu6YiJEz?}jAkdqLO6U`1 +zt+;@{%(Y^x#TG%5c}b{#XkbVP@!>8}4V*>xWKaIMU<4P=64-kJP9m~7-BPDO-ex{j +z%7U(+?l<}vb&@UAB#)D| +zz-}-H&&1v!4YbM1Ch0J6y`RAcxtgsLFB=;kHAQXFnLw9rjQ^Nu24ryyaJN-Py5Q5P +z4a^E-N6TH9_5A^r$Z=1?bHwx3y~uUSG2C{+eB3ZV_m-%Ku2GW0v{ctIV#>(mV)OCiyn#CN&@hAcB~Yv`a{9o=ro(px>PfPd@ZXli?7u59cIiLY*WPh=8M +z8qL%86yz7!JtHc +zEdCy=gDpqDfPv(emJQD`k5&taZWHh_ThXo9S^N{>pnjx#=sGb)!7b!6lre<$1N3v4 +z4!Q>vL5kP~q$_-`TL@QET{sKOdYebyhVp_#$5u{G5MziBj5~EUOg|Ku$Z3BiMhSKXUF@+4pjrWa3OkUGfV}|iZLm8-- +zR?(%YOJEpsV1C38KEMg8UVR4rQB~=p-c^6nc1bRE}j=+2Ng0!WMf@9!*!Dc-6Vb0E(kfY!^x4!X~_r4eyQTTC0!7<9`%&QK~`r3R3dMH{#gxQxFSw17Ax11QlMczN_(|>56%gMY7ne*DYoX +zYZ_-(n2bHg|0Jf9HDHQTmmUX})F0@*R33So7>j>G +zGmxrkY1tq~_;<-*q7=I&)*GfWU&7bI21toTqVwW26EBi8(?g|S)hj4PHrEX`^foiL +zfxva!*`6;va#Dz%kfiF?F-;(M@4-IvD5C6#|++eT&WoK_TOLSx_+Ady8d`!uPA6^~3v +zG2v@E!58OertGQwB$moa73E7o_3D&jGOjg3x54*nJj`SW6K%O;t!>YAaE^-3n4_-4 +zY#(9mZ;k_7o<{C9*2iHMl5HEzl=G1j~o+h2KYevsIH_(tk=nXqU0p)CJg*Bw6;@ +zzc`P(RnHAD4DI*c@npMaIm_E8SVkJlGUv&f*eSK8gr^m*8S9Vo;mM(~L4V-iKr2Y- +zj|Rh#CEhx5D%mjoN*t-gwD#C^Vg%*Yjb~=+s~XlAb{et`@AVn_N=yNrA6!_Yhz593 +ztOVK)=;aFFdVC7G)0)stD+m4Y(WnPIiPgn-I=ChOwm8_ +zty1^6>4`z?D)0-vi&jc;(a10qiPw+33nu&v!C25De{y~e-$Zz_^$$m*57}_C +zCfwMPT4Q`D)s0CTnwcwF57qG=Hcs#~%yCLxZAq*#5~|>7V3pdo921wfwf% +z^4ng^Z+k7j?X~>2*Yew5%Wr!vzwNdBw%4-Ex4o9%_F8`1Yx!-jrSaQd%Wr!vzwNdB +Ww%798UdwNLEx+xx{QqaK<^KT)n5R4d + +literal 0 +HcmV?d00001 + +diff --git a/share/sound8.wav b/share/sound8.wav +new file mode 100644 +index 0000000000000000000000000000000000000000..5cd63dd697bf5724e86acc1e4dc2b78bd1b662ed +GIT binary patch +literal 35324 +zcmW)oQ=lAKyN1i`t~O$4V%xTDPm+l}u_v~ZiESHu$F?SuOpLawQLZ}c{Mom;=-&C( +zS}&e29hx_3l3ENwUF&ygJb2`U{8k8pVDQuEC`-&+2*{cB(5IOpi*m}#$M +zTWncn?#&YP4x$bwz@H358>$vmD$3iW-qL94zSLJPqA;qV^4c4Hqfr7{2Q6K4ukD$i0Z8*QRxI=Sx +zbm#SS^2FRRS9fO>`x?tElbs%fFM|(huchLd8~nLg&IlZu99ZbDE6?hOlAGXKt +zC9+fBg&ayVy*peLdqSA#Ura|+8}l1;#JtrUF-6#;OilVY=_VFn9GVU9f$kY)jF0*& +z-DJ!$ib6c}8oq{XLkD68_B*~1?}LBCY*+-D3g0juYe$taQW-%^{otv@q*#OKlt_t4 +z?}$6vHI_5cJxOG2(qJ`etU@c2R~Z}UwOw)iaLxBD_ln-@UY}>2dz8~}OLF_!9MtdF +z0Z39ON)Mq;0HxqFeG*y0ExS#>Jl2T4-Ewcp&9>1fB%)h0w@|SZjVwy08>fA3_JQVN{YW +zWzlRMo%!6IJuy$n)5?>>-P>6L{EHkhEu-5I4Eo-9rLyumVMh8zawGpLF+Z^(5l-h*dgubaZX?WVi)3GVxkwM;X_doZQ@)r#34;~E{h{Y3F +zx}msU`K;53fgK?=+Ryek58`4RZaL1S%s)&kSd{5T?I40!OY|kY99n4H(Oc=c^@{pp +z-3?}ACo~K0g%m~~ptZ5_*Z>U0I-ue2qD5QkSM4m^V#2v|H>4IXG+)_Jd_~CcxWIT&FKvtmoQ?;l^ +zWNxw+Q4=qTWGZ|KpCce(Q`pA_#RvaX^9j>uEB-j-=S5;Y5k*?Ut6Y@Qq5`=^|(4w +zTdD_)1#maC4c?6$KzCz{nlEvh<-4_~tv8tIFO~t^A0~sYNV>5ssDXA#s*?%xA7Vu! +zAA_F2S6^da3tz%lIbaEmjkJs}Omf0Kd4t{$VTl>^HdA-YHd}AUDrW^(1J@nrZAUBn +zNNWx5K3kfeP5gs4gMaBa)qp%iY9P)OatIcon-CPvi^rww@<)YNok2 +zobICTJ+7tBulD0si1RU%$%m+9)O<%E6kMkF^n6dj9}Lw6&0;q6c*W2JUYc`CgYzNJm6Av~54Vy$D&Sf`jh +z-Y!8WtEQg_SLC?X0e*@#qxQ4UxWl&m&b;n5p0VCD-j3dmp3AN^j-d68c^Gq@NFw=+ +z-pT`ET53sxj**d7p(DZW!A-#dp`+o!(OL2D{ET!ZF)8oS%0ho3>#+{R8S*sMj$TfW +zp%J<*HH7R&RL0F%5=p`N!F`<<=!L@2GN=MFR!3|0+o3$Kb|iBPhcSVX5@9FmD +z@zzp~!7hiVn0LE(y!Vi&g}a|qwUxKHO}D5H_b;J!!@DURkvUm&fKt?)B&>*Y4O>SwgN8ll;>KQxoB +z=;fe&a2qra4wHT=n;ByYnR8jQ)_0Z<+yL`<)=l>y+M*1!S1m6+O|Rwuj;Y~C +z!CV2wH^H~u*TlaqurMS=zQ#+YvV^%xPoot2k?6=wG?%lEwU=^safMwGS07h1=S6## +zbrkoJEkJi57NT#Vjyk7$z7*zv_V +z#x>sc!+FzTv%j~LFx!}Ygoac!`YAgFOX_a?W8{y}^gu!XU|&n$b6>*0JNQp{MrJ33m+n=jJ@Q6A~6 +zuaGmD1IhF8YSCKZC&6UkL;wnY3f2kRqfO%v__^txVok-YUxLb_z46NAaq1>Lnz_jA +zVk$Dz>BZDAvOE#P&Y|m&&F~AT5u_MtqXKji`W>{H@)iWFBXEesF(iI~Sk +z%&_gSbvVX@7TU`r@-r(ja7oPwaN0I!qe0W{#N|Y*wN^~=*DPW +z@P1uMj7)Y)_Y_7+Q +zj6u*zxIFp}+eq}J?94%yH5UVKZAVLU%LDF(xu0nUQ;u4IuR;cZH{y~wI^BjJ74wIm +z1*-%~`Y-u@`cC=1L3?;jbV1@nYO>f!EeJ{IF|sh*gww6n9bqTyUhAIk{^mOGtx{WBC{)R`PCrSVPNh>z(?c>-h0~%gwN_TBC$$6m5F=m|0k_B- +zqm8jfKc*d3cPJa>z0zB;ju;TW2^GXoqEBk2keb2wRqo%8Y~ca?mbWLbCCT)XOUa*1?W2XjnNsrBUQjB>!A!# +zjw_Yb0B|;c>r;&;Kx2=A&%zhrvG8}`57PQ>Ex$TTej?@(=B2HvcYG+(Jy9kxE>Vi_ +zokY@3VUg5U?Pe@T-r@P^mZtiapslP^cQy4W9+!8OXO#P#bF}@KWsV7=8{@;^CE9iA +zx6HqMI5s{qE0iEA%>2Bz~LUnqCK#)Iz-j{0p4-{L~5h4YP{<%06NH +zusfI?^e8GXc^w~&-_EpW$b94z=fStz8 +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 +zg>D+bQxINZ3_EnDV +z&h5@_&bf|!_KMbr<^*$@tcfjy?yICUBn|ViXp?ZR;0*s1pVQX?O!dCN!O(9}OQHox +zT01HceH`)-|3qzOgXTMy{I-m(nLUSntgW{-#Fa8vX1#QnxQ(4f9s~VxT3f5$QJO3H +zl)B1JrMfDqueA&MTB92zLWALr@O-!gya3v6Ow`@l3MC}f6}M)b=_|=S{0ETZj8FVZ +zJmpKJV^Tp@QQ?`N;y+YTs@4lc~m&|27>O_wGXBT;>VQb}x_zQ}Kn!?8f5Youi)J8~c@ +z03Ee7c`*G&$S1c`2k7;o?{F=&5hh~Y@S%8F{5-~Dwa{+JSa?13k5S+FqG#z}^;ST+ +z@=zgUK1$&`i5k=`x&+(P)WrP3%yDnbCCnz%bY>1!n3#ahg$8P+Wg+t+nTU6YI>OC@ +zNT9X9y#KWSd0>9%c4Th+NV2%_UB0gGM#d0kW`Mbi^{xG-vzFW9Y3ljq=3Rd}=h=%{ +zr*Z}6X! +z<jPCopW#kQq{p!{OkQ&%Gh-fW +zTEzBYFnSqD5lgT_=y&)nghP{!^5AD2=sLE6WVHv<0xgf}*iM`!DiAEO3eUzi0#cwS +z)Kf31ew5}5mD5C$P4tLi(VUS(;j7^;k*U!l@iu%Y6%=YHH}&C2F5*00$lT0oa`bW) +z0WVJ6`_o&^8+F@UCqNT&z*LrAiobU-p_LZ8&5#IcwqDu>5}M}_0zP^3f5naGpu +zkv=EnkjJP8^<&TkB#!35gZLm~5z&`O053ijTZwK#j>4~@g3vCbr_t5eWaNVaP#i9X +zF2EFgBKe)F$aG-KnXZ|lrVA#g31R2Zo5_wq1^)y}>Yj8Wb29lY-X~f;yfD}`aNd8+ +zUnejuSTZ~*S}QRE_=BU$5@Q5fjeN-z;5ge~j)|_9ptZj0Y38ZpKH}UCrn;}W2UDKZ +z(0`zRG>fuU9G|(88k^k0SLSQ;NBHr{g{imcHo_-y97rhpYuoj`#!$!y<%6y84X8Tw +z7wDAkX`fU~ZJ}HP^V476FV|5@s>3x=zYje_bgVwPfWE+Ho0nKnTQ2)ed)U6le$v(q +zWQrKsWIuCgSYm4N93g{zMM$x5~5-&!?%2JjzP41&~ +zQ9Ec2bdPb%s1A*ThC(^Or$43d(}t^d<&acg3}>#UZ>6lMQ_0iGT&Z}fLgu3o0;#*A +ze}F$>Au`0=H4n5NwXbldU9a5*Jg?nR*I4Hu`&-K!)1UM!96|EyP35(jyh$Y9F;XZr +zH!#_6^4IoLfq}vLpa*G?sF4~V?3O=k2%G_}m_cQjnWlB-O56ahFgMq{%+!Yck8Vco +zArO2bYC>K^?~Q`S8GWgKNGCvx*9j^G+Ylb4+(WRBmLN>sXkxzH25$Te! +z4CL-R6IA?OG!|JNIT&dk9Ub!~Y9(K!?}`-Ym~)~RiF(Xt^I>au$2wOt&roj&q&bZD +zsQaq3slBfymuU_43Cjr&)SgMxGSiaZN%@Z0~K +zQwi9Kp28&j7cq%EPOc_Pg7@PLo`qdTFMB*pKvlzh +z<@9B7vf2@K@R@h0pyLc#XZtq&p1ouPd9=pR@*32;viD_sJD8E)uJ^`ql +zbIE@E+(gbqk;LDL(fqoklv|GGju(V-dJ0p +z#+8-I7-fs%QopL2_B&wBqDTgFl9lO3Y#H+>uD-Rg?W0Y#ZM9vnwzCX3+t{{LHT*N& +zTfZ;Y6kaCx#h-vgYHYyjZ|*DL+v+3^)8sNPhj$fc#2@FMdgT`m0~^)6LC4Q0v;_r$9*rmZzPBh~Pt6v^H) +zH?)qk*KjUzb#||GS9I5NU3BcRaTdmOm?H41a5rtf^iO&?-#vCNyfz2}*L%#z1E13< +zSR=eIIw~NYiq$|ipjKk?_-dGru+0ggkxArg=PMW8KEYq$#19G!|?!c#;}Di{5e9>#2C +z#xXx>p4trj#A9?M{7N^g6{K#N4M_~BxclKIp$5VGfiHm-!Iz=^5hM1D$1;nhMp`a7 +zjh&1z#GA=}^9^Og?W1XE#VEcpjk5I(C_lCNck +zB|F8}Mrwry1#*DizoYM~j|;pE=8ptpIg^_+ZRPxW96o>-qkEZ3Tb9@cI!-!=yVkf$ +zxN10`*(K{kuB+)Btr88f9dHrjmzt0}NLI0&a4NGJINnx*Rm7wma&3^Ejs=ZaLF1^A +zF;pYVsB6sEH)`|M9!fFU5EB9imV}plh~kjx%n5YpugoWB(I1Q8`c5J%S}g1euJs@F4f19A&iHEvn};7q +zPbA)_s)~n|9L5M_89s>m!X!pgV)Xbq2mfV_{7k?O= +z5d+yre00K`%%9#WOpw=sj=2k9P>Ztdxk|PRjytZ_fM3|^?c^Ql3Ax@m8rW)b@0qIP +zaCEJ4U-?bEpSqbS5wn7>cXrSXvYbq?T=;W@k9Fqx)M;UsTpv()9YE{Zjd)A))M477 +zGxTOKp%w}z-{JeQ>F6KGbnv1#07N1Kb%H)YJK>ecPV^S$!&M?qo~5eMqv^Kvb1F_A +zCoFhQ^aIpizouYPOW;zgB*<9#$lcJ};HcpGU^_tNOp3mW?@hkTbeFCA7x)xDg#Kl6 +zTff-LxOjIy?=kNdK!R>{-*%3)AGK^SHKZTot&mUpMrEb=UwRoJ@LI%wk3lg{Y*%bu +z{7Yg|vO&7MP(~^W+Wc(29yAA@j1&Om!cw#|`VFZIxYS+HT|jL$(X+MDT7PW|NQvV* +z3H5{H$U$r>(TOU^yky&&7jl1C{1(x&%5scrXP(Yhr#BG0(9w`vJ0`WwIFs)9$Vi#c +z$Us&97T*?MP5;zD8_+Dyi(gN+6jJx!1$uIRsWXXh!&xD`ekx9KPB-bz9@b!-aYXr +z&!%jdnPLN_jlKl_hSj2Gv1_=Vw!4n2t}-4DkYAionFGuyn&+QYHQ +z)xt9fxZVrixM!t%r?aBHr=^VP4$uL6-~vDgoDyQG_58_r^Vpy$7A+LL63vbkOuXc; +zf~GetGKyW}^}it$$%lr}!PqKnEM~=~qF0dbFaj5Y1{)9bK6*JY-TU-5pwSx+zeEOL +z7UB*$fhO4zrq$-(xewegZYHUR27#w_-it^vBasn$)eWV{A_Qd1}wbi!bb8hSIW +ziP}JEEl-i&h@-_0;u0~ZM9OWIu=-Yq;NIxJct7eBQ`0=qQrC73&}My{e>nY)clO%0 +zJeI#qf6?WMZOAXZpfXDMncNk>6loOd6v+50`&_XDOYC>`*|6gKz;&EaGKR3ywVWEe_ +zsJdPN>4R^l?y_0jC|kB;n@e=x@}xYAJTu)NoyWlW{AL;dwXG$hZ#J5IP +zhU~#ofzSR@0X8@;)G4wpR)cq?U1C9{h>pXjP!~~%dP-Z_pKKdbTT`5^%{F43bT-+Q +zh+^x}o=97G8sr0hafNZus0}=07JM8zjPAz%!W$5e2nWfL=Lm$zU~AFO@K58E)>-*3 +zj?P$9?-M^_^`ls%W|$9E3>)EY(W>#aeBbmUQC7Aa-B2rem|?kGwwsQqYq@8wSN3Lk +zzj;QuhdO`SL_lg+1Ee<4KUzw9p21SP6BlFcqN5_tNS(;fh!&j`ug^D6P0eJBh*Dmw +zW>D~Yw)jU*WnF8mZPEt(dtNh@agY?7d;M=oE+d=^nwP!I}i$6ffoeSXbENt +zyWG^-e9QdEJlMR_)R0SK0*nmjq(9OU_eF +zxT$9WIwhQJp0p<$CZ8vdr=Fzq2unp=o~pb9?STgnB154=&_2NBd@@QIo%F$gYgwS2 +zmo4%xX|l9ca?3v1sxH$y8r|Sks1I*R?PtE5!a&oz>{iDb$0`TmNZ2}BD|5TqLsW14 +z4O~K>D8I;bPZo{0kHmuZzO=yU%`oiZTC;+$|2)YQZfoCAY(54s;=Eskx@KbmWK*tA=Zty%~qE<&qh`TZaQ?2-MaewrB +zgo->3dn3U}<5;1@v}C{+Kl{BXtauyBD$>*(j$-9$K9H*-L=D1)@sfMKr++JJq4 +z#6L@1C8iL7Fu{9c!_aZaLihq`d3S)`ajNm$_ycMLcSSa%3O17XMAoJ!GeC2gcAE~H +zT9{_A^}+XENtDE9!kYnWHboqj{tHa?jL6~;7t9&BL=MNc^U3rosgG6< +z&V&C$bvDhk)Ur=^mUFl9JoB9K=h?|&OktCmk(|Lc{F+%Vx7JZ)6V6i-`!{zF5YDR|g`CBmha5-k +z^=uQsW{a8KO64PtqFvzfMhmcuG6cLIzr>^BZLz3yM_MP(Q|73%wBdSHE>8UQth +zz8kfT9-wtX)B~Uo`zh?oEJ`0qtH9Sr#k`DNco|DOSKs6b># +zYy!V1eN&{>#zrrsCjN{hnAdCtb53qKw}LCe^)@#)g#m4LgLDz&upqJ&9so@>-s;o! +zKlCj+WgG;~pgCL$P`LL1A$$Y-ie12JVk3d;{RXK0R$494^!hW80Kec$?1`<6`XU!2 +zO!P~%X57sWNfi{T$SX7ld<<(qoo5r=zqW49o}d#u?hShvdgpn5x-L6xHp9G`k%(&O +z1mljJTlZe%TH(P`*K(@fIpjv?FyAO7M`UAdCh23aJZ~|naJ~fo?%Q)Go?0mKqJB+Cd +zsGLiH6Z`~u^wLUYv3YtHAB~-eybg^Ct`0N|EDekZehc{`BjbaUS()B)39!xc6<<%A +z%%wmN;&5GZ-}6-QlHS^$FD}io&lci*>U4+h-fyx=qc +z2|$`P_fh_VfsUbjk&|&D`Ik^vF&R&g5yTVvJvg6-ZS5SxoV+vS?BQ(gxNZAnIcToV +z?xzT1G@6Ev>U&f_;B2OeFNFod8X*GSnm$rD&<0Ee3VVcJ1~j}h+i7@wl)r^D^By&7@0%et36A6i!Mvl|uSWXazcs=t>tc-Q^0|ia0JiU%L9ad%3T> +zRyZHo=UA_qS2GT>CpzCapnMTprO-s4=<(3KzyyC5cyY@5+XmENvB>q<3I1ccg0xok +z1LoXJoTXIeov9vI#xdQ9>$$Sg*IEazmDjD3z(OPBzk +zj*67hR=)u^#qUx@Of4+A?DL&t!BlVY-txBeR`kqsHFYev4mW4$=EQX5n4XqL3l&pc +z6VWIhIT-pcxH~8WUxi9W;-K3bpCmKq#NQQIp9q~s_F;{Q#pFmTPPyox)KKaOnMIt$ +z*J6L7Ba!*=eQV$`9$j +z_*j62NttSy4w*-pgMv@|OP;1)(`&&#^bj$U&TZPxeX`!QH*_`uSv6`)Bz)fM&U+RYeH{Jn8 +zkwwT`jZL91TYNb!| +zz2Y6CN5T_AS;5sHMT&$bMCQlrycuXXS-EDcK)a9v(}n8|Sa-&~(lZ5|&f(ra0pI+= +z(a|=PtH3@Wn__pN{=n%p5KgC-@gL(yVsi98*rdE4`x)=d)2UE8AVj5K%5`m|@e!gB +zKQaZqf}TN#08XwV@;kg3I%)XzhWcY|m9|myY4h}VR&X+ +zx=Oly`mc1cj7caUc9FKo9~4@1=?Q%u;6z-Y_xPG?15BVWeXAdovW2@sUMlUFiz<)>O3z`EZc7coK8d#<&$uI;#OJJ_)* +zV0{Ysg?4Ofx*Ay+FM_rLX?hdAv^G!;DA~#JNPj?8F)pUTO)wj;X|sVw-?0N2ev~KHzLh;$P8|$N{inRSl?+7eKjA +zfbsxNE`+2|9TV}F#B|a}lGJOm3E7iyg8pm~+}%j4W9836=X8)i6Tcg+8gYlmhB}3A +zhi--2MF+;?yf0l_}9NyoeNzhNHRTdlM6q6VvO3Z0VEoSvzC2gtvk0v;%e;yNxZ! +zyx3Uu0CFGx1=*l(Aj=u8ch=|VY5lZu21>vKP!Zchbf9>84139R%{+`d$F1R1bKEqV +zokee|5l3t?MoW8$Cagz#M87AyF}zJ~s4fxE#U;rX$3yq-QH&DI9MRq!uV +zQ&UGv+-7oab**=2+*$6VYp3&teT&t^)ni*x%|OyR*0`q*1XRx6Oz-p@(0Jmh9w{`P +zOnZev;!UZbGG5)M9o8p6^Gg+$2WD9nuky``p#Q +ztq%9cJ`%m?2dtTMSnt`~j<}ep}N`}=~H?v-w{yzy#Tep +z%x3{h|6CMRwj6vd*#GH9uw# +z(xb^LIC#$B#>Q1`rn&|sIp^hUnNv0??EtZF250iNF%go0|7rvBzva*^Kw6Fm?qHn! +zTC5?QPxngIO8&ve5+4#(cr4i@C8nL?3cwq5hyFru5NVn;f3^&^F9e%Otvqi%cRX&- +zV^`F%&~}g;#J(UItT@zCT`cOU+lhE|efU;ze&Cb;mA^08v(6DN72N?&XWL94X|y^D +z{ErU*02Y*`S2Ks%E~fRS(WWq)gTGsZJngmv(k$bh1gQPpfZ9K8-THs+oabW{Rolj=?9A@Y +z&TMZKX;DBykd6=$P(%pQF;pdDqdX7+i9w}G6G%c40U;_76Ohn@peRL9DG9xbGy~gb +zcXnrYc4ua1p8I|NhWF!q$@e7Z%sJ<}f7g%cNmY>wHb%W9%}alhyc+*D=3{FjriefM +zdZan~e$>Dv;?88gup<+Y>l!SmCvc# +zcUy6D1C!qHSa%-1qR?__=0l+(`3C=9A{>7Z@0JK89`j973j`_snaD{4vPH@awH2}j +z*rx-?Sm<&vYI~(OB-hiWYO$esI#ZJoG9}{Y(n)!g(hhkATco>9b}`O3?O;kQt!)MN +z=Nun9avjC?wzjbrni)cM)?b1d^Gf-j^uT14`%r|KajKH!VC$tS$^_$enEmsNb%tb +z4?hT~oD{I`1|^0dum-zQZ5TgH7RNb5u7rEC=QYnVcYELtuUW&)Hp-;$gHKc!N+*RL +zJi)yPUG)~hn18Ilz>fwx1%vQ=?1;@zl%{?GCx#A5U^@uhfK!`IC+OMCPfQs@GOd74 +zsWi4WY$7S56z_`BXcJ^6{DoP?sTQktV?*Ide0+%x%T7yR9FigabLqa)~xJ~vp +zlo?*B08V0HQk_Qf`Q>vB8%lBgR*_ZjzV{S3ipsb5axn=0~!A<|1jvH(Ba-} +zJZ9yW0$=1*Q`n#6RO&4Amvw|=oa?f?+7tGacs98K0CeoKK4$Jwdx16UiME2S`oVNj +zYCHc@A}?OYo#L9r@5G-ZIwkj{`lkah^~ADcfE#}ck>Q3~fVM?{Mm)$+XiKcj?vX>% +zFexHl5Cw52q}=a9#=Q)ggO%t`kbXZ-lG(wQ+3ny +z?^3ytjJCBmbgprI;r6)?x}U(TceUMVZN=O+_9o}RTKGjog!zdPu{Dvr(Aq$uKjb6) +zNBvmvGOX(3u^PyvT8p!?Rmgt)6EbX2sO|JMro?>3TxoWhTQf1!=M->Q`h~;;{4LCc +zCe)`ODH{N0kut@s{;V#Au6IAogP(^Jzg+i&u0VGVrjkFRZIEfoT={*mZ@O8^&A%Am +z5*rqs!X_hPWD#2uZOpYyY)dXk?}Zt21(r+xZfweQv-0+rU8E=1d&7It+tPdAt#f^E +z|I1QBQ^tIv6s^m)6M+c_ir_r!j)X(QL$8I-gieRMvUIFtd>!9F*pqol-lrsx40cG@ +zfNY_!(>F1A45#$Z>Bp0ki2~h7d;~Tfyfba!7WKF4K{g>{(4p8&{Gbja2kVy_HW@#r +zOs2u6PNsv@Ib*TmcXB@vRlC(YGMiCTIs7b+jK;$QLrsF81^yFA2ArWk!&vlZ?k+zf +zt(Whq$MEI)XH0Wp4#GP8t|6XA-u~X}o^$RF|D*p7Kn~Gg&*J4sVRo)~3C^(Z67A#N +zxSwLxF&lS_OU6g@Y_dX_oM{aXoT17VwF;SmhS6pi4NZe~XfaZyo>OAkXMqB+$#M>tnicSVTPpU+Na(Kk1Y(L+B?I3QvSB=|!0p;&)Pwd<44QL)AK% +z^AgB0XjpxqOv~oUHtAw!L%K-#B2}AwJNbHYO|n;NxNttbUA!#!R}<(NU4?!g)r~o7 +zVPOi>!iBhpxfypS*J;OJwt<#0uoh+#KcW}2V&=8f#dvj82pHXCRZTyAZfjB +zYHHEji=C5TelW|s%1d}3ySo72{GRncOh@V>IUY}``{f@p!PIKLJpK&VI#w0k7PZD6 +z$6WEUL?5_YtLcBm1M)cKl1luq;lpAgb`q>2JJEW?gmh5f1*=H=>?8T6?9P6lovUnB +zQ8+Ir>jsm(3{O*G(-+Jw^G(Z4>sISf>k><@xtM;H+6i6t#pu(@9`Pk1n7A0zvEPLb +z2lD-^eed{g`6B+!!E52wkn6Qf-OPZg34NKkXmHW8xe%zFv(BxqyRH?k-OeG7#kMg( +z8TX<-)gRDFV1Tk_Rq>Tfz2Hv`NqJMbsr{*`!npKDnJwaZDIzDbb;@k@F3e{hsSAL| +zrWFR*;PYZtW>b2Cmw>4}%Xf;}8^CpHjHKE!XIs#qv5m5W@zzq5==zo>U8|8Y) +zavCV$0a7;u8A4!lu|wD{EFXBTTIeLVQ&!7=ijlNU=%3t{=n{8ugJO{=5?d8p&v_E& +z>}V +zBtAUa6kfd(f_Fe7P#QcE8W(vV{A};@?FEB)S6-(!#0qrzWL)3Is2HbFpHOY7HO9k+ +zUGV1ZLl|_AfUhv1Q=wrcs4b9Eq$_I0%y^EjH!++XsCOHx44lDdSY-H3zlrn^z3_(U +z5#?EVLFQ_zJO2l_E_x`E8}12NPF=7tv^_kDt%M28;#4y8U3LoCz~Y8ty2es!=bY!= +z7Vly2FW#o!fIG+axBVHblR0JVPyUAWRfAG(8cltjDCe5Rnn$;@73@<{Jk}rl3sro1 +zsw#aztOADJgM19R?{NGap1`l+v+)O54mKDqM7~k)LY8wcTa&$#eNhQ1kJV=A2CSPd +zMV!(vGj=rXr(-}-PPeSJ^tBY5yD{@jZyGO``Px=yYJN{}10@ +zUpN1RK%>yRk>_Hg6L(VU#p%jG%mO)tpRTpMWPjGV)HT>W&)vY?+I7fLXIpMb(e0@` +z{X4o9=q=@KxdRv&>QmQ~?UE6mPA*FJP4yDqPgiE*Vkdcg_AOvrPC$m;2&o6R*{{mO +z?7#ALAofpZ>eF4)r-g5YI$;b@m&?W0vRBDNYOub7Pejh0&gu{PJL;ZM!u;VkCh@>WiQQ}u?SILr5c#lnkr0VOg~fCj7JPb`sU<0 +z-9kJc8v|}L6ZDSHLieWx-sw*R{nAp`nsAf=Qmc{0-;sGMnrB=J1n5=ntCVRmX%VtVXGWP8XLIOKQvZT=tq4+GU998z9} +z-yn>Zx`GqqE;$`~6zi>7`$K0Zcf?J5zH*nia3^m6-onvv4bZE&9__Adlg4DG3J;Pe +zc!ocdc$gT==Omv`eJGqtKP#?+S0fIFsw1#ArXb^h?OUM!4xQ7G9G22z6LCf+lRlgF +z!}O`0m@nOwE0h{U!X^=S^+TvC`l5NiwTFGQBkO45tZ^K-_p$*YM%Nivl6riM`ieD@C=mUN>);iG9 +z&9%e*h3A5&*t6WNI-l6{tS>V+jcv(%Y__sRWK#>_KXNWo8L|a!f!+Q`{^|f8x*7IH +z4{)pb^+L6HJbMT!!jnW(!xJFCJJW~h3-o;Yw#i2wH5M3RWHImyzXFS2fh5!=;MyvN +z+4N+j4Qj?vJca+Q`=01dt|7ORlYlh4r`w35SPR6coPxb6!rQJeUKG2)E{arz^TM;k +zts?KS&&8$#XWuQoQEIO~#J(asP#c+p)+vrk*Ldi{rXkI-diS}HI|tdPT3(ZP^Zy-PGsJ3!Sj`Zt8DcdSFP58n +zZ79Yn*6NPe&a1AZYl^F@bFY1r^_4kf_()yBPa?1Mnkpt&5r6Rvet|$0fr`FG^LSp7oOtE#D7N0hl_@81>w+# +zP}PVrRxNRWtIR(Un<^W%9Z)M|3py1GV?4GSQ&10TKtj+P{gdX>6?pnxX~d^5U@c*<|s!FJcOx +z4E_#W3RDjE36+oRifu{K{7dPz7C}_v8#Bhd-df&K)-}hS+oQWnyU&6XvRQMRzcQ0a +z19l$Tq&|}R3Zv6d%FUfgK23J#nx+<{Q~YevB+pl#sUNlVx~S{=0bSHI^?@=}mc=zf +zQ@&byYARQ%OzL{-MY^9bQt~R7^=F8g=u9s&E@dm*#yN_(YPk2iyScl$4msM{hOn5i +zHdPbL17V6o7|E53Pl~h)y$Rrf-~JJSb-||LiBUcNkUPuoktVBdXgJar3*j)ilYBz1 +zAUVQHh}d0p88QeS1|8RH=|%LBx)aI)k3?|n34VlJOgA@tFnY`}a~rk&q7?_H-|(l! +znR0%0p|(@+1zm@3Km(x5`V;NAI#H=1d!+p0D8V7*6}AeiL{WOBSo9t6Fsv)tk||+& +z#^$x@_AXA3tE_92v#q0_?Jax5Se5RMH-}5AImMc(^YLAg9HFv-ly8)8yKlN*2^hm` +zqf-)FQ(uIYgb!PQHbAPwQy>E*=?$O|^an18 +zW@Gt?(_~qCHnY@F)i~8y%Q(}J$qbnBbno566=DkdsPot-4+Xg5kOFF?b666AJ2^G)c)T=Ml}kAyp>1KHfRDG+HOR +zC^{haDgG-tE)F@maCm(t+j{w5u*|=w5q;9 +z&LucgOA{+%#iG3;LsA{SA8S~qAMTnw3n3_v8fKHLGSrx(yn +zYA&UZoRoe@nX(`kRj+C%p(rvCSIBjY)6|n~Z~bcfWAEfB?r3L!XT8iCOke26#1N#f +z)=uh^KAPwhoe`=W*yuavo#sV-)&1_^+;G3x_M`(mK_#>$@BwTPd7hqccxaqsI%Vo@ +z+Gd<)urd>=yMzbNLJK1_{4exUzona?lh79UIznRI@qNT2@+{SYo<}#Pv#Gx11$;A_ +z3vQ`3k&6q46q{%t6+({SO+V{r{FnSWgN4J7qe3D(JwsZrT|({<>lu^TWSwbm=^W$w +z;o9js?=0siY&*<;Hom8?6DQC+P)_Zh{7LL54CH^O-=!<@Q9dRVlt#(_DKS;lZt7K` +z&QK0$hQ3g1px%{pgW7Z=ohNlKc`H#QfhGnfIwW6kZ_*va+RAKQL{<=anI)#j +z&i3xMo-Ljd9>`t9dBnDt%`o<+`eGfR?#c$CNUCt+Nc2H?Q794=gF8a6!gHf*;=$xd +za6)tCFRGwlhl`*Ev9s7mYzJn>s-cyUTrdPFT48OK+5&V0ulhu@LMPz$=xIDi7Gqi( +zYny+u`K;fqcH4355sQ(1XUxg?iSFnc{eXOvhq$cRxbUw)*tgrudaHPI`i}d51@}eX +z$9t!8iveXnR1q6bwqOn!r<%{R-7Lc`305`lG$jm1hM`Cz7uE~$LbpKGU9BzCerOBz +zVbDzY0P+m|ie1G!5bKFC#25S>)(4#nH_`7a4yh@h#r=tAMHhsnpc2>;_z`#=91}hf +zot1c!nl6r3v*7J`HeKJe($dYo!kNPzcUwGD+?lS9j)>L6#tj>(()dewuXat&6!Y^- +zQj@t*@<*~cmnT&xy^}8}9+yfev(>HIaQ&~2K)3bc`oEe}y(+hmJ_`%@-syQMES2PX +zq#CEs@jFCWzMx%)1*{>p$gtBq!ura7-id;Ku+jYrObM0k(=63Z+4N343m&Wv77wHv +zCVEGiaED-vK+@kJP%U^XbU#u){x^9qeOg?u)X?|A=h0sHI-(=Fhnz>EWJRI`uA%pk +zEpRq;Pp_?8!TY&>1=8UqXcN2`X{Nt3^Nrt4U(5s9VeBvSeNztO4?2T1V>=*KsV{C! +zg&e*7&AGGPx?%g)c9{@^Pi0)>w^p +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 +z5#MEhGP5|%3iQFqw;bvSJjt5rW{NAvH%D}(E +z*EPR9Rvga%PJQQkb3M6d+}_mvbbeurm`h%){7-$Yt<)3Xui2@`w1j$IX(hiBy9!$R +zT}tB?a5K0h7fKE0`-#uwt=bt_#yV1a47bf2tgz#+vjXS`ciggTrn9qsqot$iD43{r +z!VAP(I{3x*DHNj-^`~1Y;+2JN5(no^8nHGY>T8XL^wp +zu}hFaZ6dBqSreZl?$Aen4POgzLfgEbefI;c!aZVdk{kI2@)W%d8X?Lvn5iX;T65S| +z+J@TBSf^Xwn|~NjGJPpK@fH0D=Z4N{CsbB_tLVxMwXRl8Zv_nl6L3dVM4MxEu%~Do +zISeBZsoj^mi(k`2xSR=d4ERLhaiOlEUm7K>zp!1ZSv;5E0ow-Tm0e)mnrJA@aJ)esv{PA(|thhVjOb+AF^i6)b*j)ar +zG}3zNd7xR)9H$p6T9(>K_ECa@+Hjhu*| +z<-YTFxwPhlPoO^h6sb{9=sb)>kEEATgUMXPe^@`XI8qSq3#Ig*dMW4)^a6IGE3jg~ +zo9;p1WdertMyE+Ib~F|@OrUF%o3Lz}j}HaJs*mZ@>4E_n@z8U|gtP +zbWNgex{}mL>xleI{G#)lezG>(F8dV6%F=8veQmSThUOa!SRP=J>ePns` +zYwT{KTB-!_l?&@B< +zW62e9G-d@qB^|jOx6>Q;hJD$Ar=hIq_Jo+4ASRVI(0H^Cv6ouPgbcThcF+%M8LJw6bbpW_ +z6vnrs^^pv?A2_4mdRgcdbQ2CB)v(QYf+$WErQgzp7>MahH>8ddTd_h&XT62;j~Gn7 +zN^sE;;jY0~{($eeuZX{Gpk!!2xD%yPsAy9w!cFkf^iAU*c8+b1BFJrP%G$+enp!A +z=9;R~NZ~+Q<(4D|B@V^=$M?m@C0-=|OBEF`xu$jj?ud)jOyfQFq%EIQbyWmU&|J@I +zci6ede%~_Ibc23{{||ntBGUA9ujH-R`AC!SoKUyWtI)@AuV~Zw++;8{SokcJQ5)(k +zJPnzH=EhoLd9V%WW8^7(9@?s}*Zx!Usc#g&(nqbMEzk=BKcW&olYBv2jRnjBwxzYI +zZKJK1ZK2g{QA|Ayb*Vd;23gfSVuRGt_?XD);6gv<%k&lm_qm9_Xz+6Qeyl9_hF>SQ +z(!V1aL=JkDVUFp$`3U=qUBzBE&o`wEC77C2Gh#S)5vd3N17_a<$PX&&?|?i00*1iU +z*%Z$tz7l1~T;v8~2VN2DjueJ=s=p*!D3uxoy57w&6?z}2ALtlx1?PpyykZzjV%}wJT +za6JA~Js_8qjtF&lJZ(u$V>Gi^I +zX_LAG`i52~*D{YxS1qmV{hfbYx7;CjFLxf$gSLXqKh1bZ3Jq#MBs0G{xhO_O3WoxL +z?t!U+>cQ;L@W{zny(E?XA)J)EXt$sb$TI9XzKhU_I5C&Fjo-)iqT`X4a1&^%p44t? +zVQrc|7&->mL`j?@!qhuvgVAoT!2V#3mP70*b0JVAhEUz`B-~nC4jiM3$?ws4XkOsB +zZ@$;+?c(j`V*>+2O`^LJEz+f>0vd*#!`-ymINvBO?*q_lRsa<4mg20cWLxJ}>59qkJIs$=7p)x=oB;I`BwCMdk)jam#QW-HeQZ*Ft9KFK{9b +zL0Rw~B!afWPY@}RqF>RqnL5k^`Z?8=9EO|G4p1jGLrSI}Ctt>jM}oof0lR;j?}P7= +ze?;(Hcug#lJi;H5AM0N98@bZ((Y)9C-agRT&^5s&INv*p*=5TJ^Jc>iY8!Bjcs)xU +zBR>*12w(Wk{2jivP(u7ynj~LRBC4*v)B8hPp-E5@B!r*UKFS%%C*dKdXek5*msuz#bC?>CuJ_rWq_@&1E}m+hfzL7cFnhy^MotjA)Gv +z)y7Io)9({gqbmWEG2S->Bnb1odwrt=Z$ke?$>gSVTgj{)g;_i&b)I={>|yT6USZd= +z0rLw}cjI2>HuZ)`U=`5g@B}Cud=pWvgnn6H1+usYh=S(B^AMkjCS*G@M&u-(Vsc41IGeCgEzx9V-1ow(rct`+7;v}af12R+|$b0gU(9s +zNA82}*RJl)*7gUMZ>G~sUy{Y%K_37O^GmSu*HbZWH}{kqkm{6P!6$`b(l^xH@tVitYh_?BI6d+x|` +zZFWPRlkS7AsAIKl7h44=xKUVJ=wGF?aFtsY{}y==>If9V!~hyB33|2?oscM=lK4l` +z3{?aSOA7eTO^F9U9nB{`;W6wzdKj4lkA>EP-2J3>TdM--h??*n-k$dWZOz1?xp7#p%>1 +z;gNC%nusMxgW-tj8e7Hcu(h!XR)_ThNO@w0%k)^_>E%GH!29%J+B&s}noAw7nzWFX +z(ygG%6ax9dC~Py<2fK!zK&rw6^?K@GX^`+OH9T1&o*6w9-WUCFfCGTwgIImSKIbI4N~5E2>AySCr#K4UR@Ii7;&Xf5Rlf+<~?dytUg +z7voa=ESQmMroN}Q3%w*-S)kt3j_Ea_(ZHj*rN_13>T#vNoKF%3O6bSu;%oDt0L3v= +znxTBxvf(+{3UVv6+*Hr9-L}B--MP(m!ewz?2NP(9#bBC7Z@}llz0}s?q*MyfYePbd +z10DVEdy#=KPzvcjxC_>oNRupm2>8u2>1Whyau?AOPoc+<<-n!4 +zK+pA%J`kz~_dsr;?Qn(ILzQ8&3@eS9rXi-Brn<(j3`Z>|E~BfUlIngjfBI@-YxGlS +zL%{3%>Rsdwd1?RKK*MnT*!kpaezu&guR{lte;L7)WtnDsYM^8}O-CSy4TRBdKpL%`d|sts11j<$k(Yc*s@c*Ok|k4Kh<_5@n`cldVtI{I$}UWevIFD1I98-dJ!4zh@7$J{iX +zx8%0}bjZ$ru76zRohR)_tu@&>#Zlb{`bb8xtni2jbEiOyCaH!z4J69X +zwDWpr=m4|{%7FUnwY67DX?cLS3iRya+>^w^c%^vW_}cj9L|LwNIwWxaH)Ag)N;3yd +z?=0Kw-<^xx^E?kcZ9N6u^_}-@*V)F#In)wtA+$yLD=bWHOq7ZBh-8GfhfamMhgU=@ +z#i}G`aK3am@jp4L{?KQ_{~@bT3Dwd4sE*`9EO1Kyp@q~8KxkwuuYn)1T+{XY@LSYP +zjHVtkATVT4TB6pYwzszawl>xsYzNakrWUy!y$uxHd!FT10RK%TN2 +zX1u`-uP|wDqtEfC_hChotqmRmm<+npJ2ZL2^2!Rpc-l% +zEu5H@sw!rx?ckAkKiX>QY{_G9>U`?j?!M^$$NkBvfobEl`Kn)_kKg23m%%V5WFyXc8{YtF_05qBuX_2F^ +zr}J|U;^(4BAztDED*c +zM*COGRZ~0W7U*V&^}fnT@mKma*BmH>KXE;tomi9n%S}pW2mx`EoKGF0jR5p*Z>Tx+ +zRnM#E)uPINxtml}ECBj}nuhqv{1D-dcwUCIozOgV1+kajZ=A?-R>G0(%yPYO4R^J7 +zuCy1kmNnmGI3kEV)J{k@)A^EtX!UU6;AKDLmwdZ{oBt@3Kl(BLmP_-wI(!WLg0_ +z!hgm&hHLax@(y+qIMlDD#{8?~`q)X(vAg;`zAW!C?{Z%Oz%`Wx%v_mtKB@#a8dlknR2j!sc3#{2}Gt*QF0h#U)2-X{`ZNLfX>G$0GgeQI`dLz;%GCop1x-2#`p>Y!5LuT|}$U|ZS +zQ_4KVTE@}e#R12N^K|nV-FD{!+hpJvb)ptvXCYGEA}&kElV9T9W8$BNZ?J_w!*|K>2nAR98Qs$j&o^=>XZ0xP!Go2?T}P00seq`hu)7 +zH_`z;jpZh$0^;-(-HqAFjA8E4o2V$5K-3IzDO +zWdbHd`MN?x_#vWlEoBOz8Q16yp(D_Fs1KmZcWU+3L-H@tAXG_bacnXaFBgx;s>SVz +z8Oiaf2>(IKtL=kZ;|jId_>R46%XB*akJ4M~+2xjMzlZ(>{lJda0@QQ?hyiXuRrRPc +zR@tZ&QgdqK^rCPvv^Rd4%*6~e&NjCIiSl-vX#3Ch$=cOY%e>Ywn(|>e;KFK2u~q5} +zpz1FLSNhGM-jwrx^i~EL&%^M`SS9Wizf`WKUq^KOE7jPLVVYyE%Z_DpvW?AV(|p5C +z`a7xMWw4b<88|;QQqQRu)tBpapiH82#2#Y8@skS +z27&H*)3}VTO(@7W9aU#bLxjia6DdcE=USwww4LuN+!izCP0Bm4gOIJKL8iP<=d`4H +zQu$XtFP0Lnre~#=a_QvDWCq8iMy5LmXTavba_BSKfII|Jr5~0__LWX6@Qa+D1@3>r +zM0LTs#cVc|CG(@C4$BqzE6Gc-I+6aNGQs_U`++6F@1gVm$LCj0!{QCO6L7mvBCW7F +zAVXL|j3XqxA|Q+$s1JS&z0&Rac5SwHOB*b(MEU!vKd|5K$;es53ublQ!Hk{ +z1dlT{Gwh@m;8vucwn2KHE|Yv0{TrGT*zKF@rMzvuoqWbXzfi;ImPCC}Z;W6|WCi{g +z%!4(}Zc8VtXw|LbtphDSv(2P2_o*dBZ>&FXjOyr_+G@3pI!5)YhqN6aseB3lL>{4& +zus7f}0^5XkLC!)Kw6P%L8Ond*Mki{=21k%^fzZcbg;2%the*zNAX%RODBaQihrA^& +zF&)jzthF6oU60)JJ@Y(|-2GhL9Z#%}%~K3XvIq7CnxT%8Zu2WrUy>IRc@vhztVECG +zdd`u)%1;uD0j2HKiUY@}Dbx};(@jC5Tuu$ho271IePKB7Pd`rQ<->fY$V-LQ(||i! +zhVQ2?7`B^hS|{5pf<*bd>zwPIvx&oDYr?9AW>j0O0%TY0LPt)H<%zrwmJQVK%f4ZN +zFDw)46%hfUn@BsPBB}v8f<&-;L=nnBkD~|CNva4aUGMPuSS1ujbm;%{?biWgbQ)~Z +zh{!ao0P%*LPOD5UV=>cy(_vFllgBud=}FzkA0u;hT$v!mxh?VRNILl4KhU?yJJ(y- +zH`~7uxK!=pf4Mut6XgT+1e-&B1pa{C`V7$d?Hzd?t?j(E81Qaa8dRzu$aogQ6ZQYp +z{(#+)C9hOLekq>@4Av(tt#i;VxEV4VP@fOrH-Itvtj6UxfH@tV>Ykh%m!sbz^&*)- +zAq2rxf^%Qfg`^wmDtI#9fksSyEN$(VoO9hr)p%f^ZP+fYgDff;|x#)ZhU038vA$*i*a`Z~)iPU6||4Ii@UAoZdt31|-E$;93@x +zzN8N&55~msg`nd9;v3>S{7pY?l&3W5EXApM*=|QwddSse`qlAk8=e{SR6VZnCPK +zRtqZqr6t1gbdc+w%#o-Te-VqsHpSm1_HttSuE;6FAscXv`WhaazgVX`mb+B<70*qN +z!L!}9$nn8?$m}%KB;MV;}C8$iqUMa`au(lMMh8)IVaxi_%kT88^hgxUb +zjCRQ0-iBLqu$zq=>5{}qWR5mh+5o8SxzY8Zs)3oliQb~#Z0~vB+`ymEgD9Ka0vKvl +zT?zleevxCDSw_elH8*GfVaJ-gn0$uHOdo1CaU4U@YyEp)=Z*W3%j`UAyUeySE~2uq;ZRRyn(&vq5_d(3@aEvh +zz#X7$riO|{>c-9_x~K99-=#TfK*vB<%;FKeJJFNS@s@Z`tRb2kksu!Q%Wc{qZIzZw +zCjq(f3ptOSBCb-`n9asa^Axs)Wv8XTWer=@T*A1IK1ehJGxm4cD)i*Q^BS%YEbhMt +z66Jz`av$Vh608#$7e`Xhgp0~1u!D4me8mhhjb?v<&L6U_v>vv!V%MA28-~;6NgP*^ +za`0JwmG)enpw3Xg0R=fpUjXd`O7k>27V}~#ehEXdZ%BK1xSpxrlQM;!sRGG&u`iJp +z;eSK7gWlljP(h$nKPL3la&eG444#6Iq>Gs5So+z|IJ<+Lnw1`#=aup?!KPR|4c}r4thq<&&+r3#qm|AzqZ)D3{gm+Bv-p)D)rt6R}botCmr| +zNZI0WVFv#-y(9f1J(b@n)CQltr!9pSWBbS(%oWoV%SYQCM?TjlSHRWC6?epK?JcEE +zo9VOoc6h2fTwI^>B-rTM(B;4~zs29kUo@~ccqCjP7EL5mtXNoa>yO}KSYBced4#G$ +zx1C-qSA#oz6zI4YAZu!d +zY(y4;452#MHX5O=Ql?9d1#{Y;OvhWrOwk4rD$*~~H5!TKNIp(+!W5+zR2VZ*PYuo4 +z0X7vlMs2`W+Dnh*9_^~Lz$DuE?{&VrfN)f~UdD;5zVLutReZ%oIbE&hiB5t+-4)AeNO%$m^6L+D6EVUd888 +z^$mYa4K2-WU+ljfEuD5}NyjGJK+8^3H|7*^6FH`>leVROiS^N2q4|M`&*=N<9pyXd +zpA-BUJ{S9#tOyt*M5_!J#V!#asOiimLs?^e;}3(&kft|+uAPNr*a2iNd;qXK5}^LC +z0&n^nV!>wML82ZtoNmdyW+KcA<~ZGg8cF2AhQhF=8fpWOAw(HwqiK=FXFK5d&zaBl-WhTXvk$YPY-{5vdM2?A{R@rL +zIw^akKH@r|me4_XDr^w9Ne^XIEw9zqUC=)08}uJwpE~OQXxo%Ol0huacTSy2wo9~* +zUyq%Pm5%?L_>nZHF9EK$lKu*KR27&rCa>j`J>}f$-r)J@>EkKmZsmM#d&sskuB5hM +zJE1FJC*UH;!^g*tMCOL2kS%--Bna8Dm5E1OF@Bl&QI^&BdM|h((g@v-u0~6slaXa$ +zQ=|{r6zK>2*ZN8&WwFvw9j +zgLK;f{nmTxbG7cO0_gT%LKmJ(J>mG|lH|H%ey&pLc{(6Wk_P~$QN>1s85?DPTH85l +zf)u+LsBrb%*PUzZPb^uckF*be1z%Gii@Cs7w-mh;c8Br?Uj<493x@WFw?z~2MOzByv<_N-?X7lL{|NO&3InBEf~v$6 +zGJXR49n~zCEJrM~<$q?yxP!S(&c-6Zq3#SABO>uA0)=jY9oTAK8g%S8z%gnT?ihQR +zoX7WmG6G!b5dtVIW6Nvs5}Vgs;VXatZ*f|@Pk;*j*GZNVjGin{Lr)v`8Rrc9JJazpF%+hDGmpcIgwi<^b@{O9z{^zyWg +zcL=M+`SN#l4U~oMByQ8sf$LJrR?qRmdBZk>wD(dS{&sR! +zY+X2iu!djq4h82k(Ps)Y59N)HOyo%$CAXFf5%A^o72|MrsnuZrYtQL8Za-lwZLPz? +zre%yuj>QS|1>^^}G*g)_mzEpK7v=HFV0DJJRX+l)1AfsV5v!WG!#(D!$WiS%a+O%kl=wf#sGlq0e(H&M+Idhn*5RaS$n^fuHQo(eaB +zuK?HHuiaBOE3@RK(i?G%I8uBoo|07gy!u?Pf_%nylf#+3rY-DU>umc4M<-`H=N?BR +zdqe9{^D=`@=Ev+H^N;fdxudb8;p)K={#GDEs0Ox_zXx35JJDwePkNU4ODPPMK;MJR +z@)upq;58I9{xVcClw9I2IsUi=Yir@gxJIo3 +zRMT5qQ)e-E56>6RZqG3{?z(9IWLaeTM5l2XHfb%S59w#g2Jz<6Xt-iHM|gdB+yCq7 +zEW@TYyRIEi#$AfL7I$|m?%cRL6nA&m;_mKJoI-)(cH{2jKFP%M?dSdR9sDnCC%JO% +zz1BKcG*?_s6iAQdvLQ#_PN}DTM)G3{HVU7Cm&R9Or_e*lN^O!lQ@J2lmCbTv*(WEI +zK3WO1Hok;R)BW_9j33O$t!_Kw=;ClXO4;{VXP6%twlW5?5?WoUA#`J}CT2%(hBgOs +z`rG;%_@ch%f##uik7!&E +z?~mnxt4^3|1!_hD(L2w +zA`?SRg69KI0-J*NaJi^IULbuZb6$F)#c`ItYA9lH+DAK!xyyRyc=CIk?qSZV_Vt#X +z#__t!6oRL;qRM&kBwrxoLHUtc^dAxbGVxAu=_gt>CLb{pK5UFEl8 +z1K}hvD@0HaCZ)Qk{z)B4=i!|EY_XFv6?u)fq%Z4nGj7`ku8is)r? +zTt9}!bTzzymLIqxfm9?uExJEEF_a2=LmxurB6zHN;!y$~wSu +z!?fJ+iaAb}!6vG^#cZxr>RIe#cw}(1e~b_Jwf1%Tzl~9&*v4cn&LQ&3J#-LxmRVUr!Ybx_~P +zJjGVZ*$5~sL%ajMM?4MPb%4Th-aOP0rTYGMEQ4Ym2{res^sFNlKhx*vdg(r +z{Ci=#B+CuddN9LPMDinNVXGHcF3UqCyZD&@JM*0z#C71#aceSR{<^5i+qAjZM)C&p +z!SKjD)^^%4+O^4@(-U^)=~IUy%9KKeeA +z9T^ne6dRQIFLeZxce|9S=uonSPBr$jwsl-^&4T+U=iTU?S +z)v)*=<7Iy(>nAEey6r`5Yw`-8RceKBK +z=*#GC)Ab>P&>FX37PKcqAtvx56h}*ABk>nRb5N9NT~7EO)G`z|Y|ziqh3I!=H+&Y- +zPsu6X<(8yo#~(%(gzg89_^bJ+`Ns$HhDJp?#?PfDWF|`Mv}5>ox{+a?xxQ_vBjWrQ +zz6V2H&7C{!)2xcAwxI_zi9Ck6k%!7BP`FwMXZWT31Ad^;Ozb7Cl5Z*B;j6h6Ng^6@ +z6y}zYxIF(*pB*^8qt&`fMCyxTjO-64VgLc1}PCBj>c<+EDF@HW!}Y +z?bv%f2U(A*Mu+HzOl9UAeVJ-b4#f+h%hdDIRsK5rHdz9)q`yM*f>#6E0;Pi^Ls^k; +zF*Z4c>nILX7h#*JDSFbJ$9B}Q#r4rW)YAZ%PZ`(_jInMs&CoZ7R2qwT)TN;0pUuqX +z9C>4DOCln^PWF28{^?Kg)kSFJ|dJ!{l5**wblN%smkIXASJZP +zh4F<^HvB6zBD6jaVDDX6Hb2ac(@s9Q;J^#Y~W~Kda +z%Y36(w;Ilyi|TI4$8Y7HrkAH)Cif*%$^6C+JhehU|qD`8zm?=b}%sZiJb7PA}ILHOwo92o{VKjIU31&vcS{Yn|{M^b-A2 +z6K##y$~m4o9ym%mG+UOnotZE$)e-bEq9*n`@}~+OaQQE3oODiVCg)QMsdZqE%R)SvcAmDa-R_uliyJpJ8OA$8y0oUPA8cgA-DSL8iUa)(pz65HZj>|3mJym4Y%vOzi@ +z=jCl;LfWlZwBm>lX@J&2zakYN`&w4Tl-JUKVnApoxP;om8{wzeUv93hKyrXT;waFx +z3Y%A0H`#x8R&Z@`b#sk$zOrwzJ_cPjoBE9Xrydp0LQ3RB>{EDe&>pDZH~2UCvjc}i +zO!Q?um8zfFD`u43sDjU+Rx$CBwCYet%7WeLoTy +z6I>B)6q}VS464%aYBTH)%Ag-<>TEq_AL^X!dh1&0+U+dpC~CW7&Sh+(8vqH!7_w4b +zDF1?tjKrVeU-4apB4TN&i@Z!ZrJmBjZ3<+v&qzb0g{CTljQ2@HBV>PYx`46593zm1aSfR +zAXkM1g*A0KE=Au(vLfRm1*08esklG+8#^>}4Tw98`c$ijw#PKAK3)i1f^k$qg4$#C +zhVmZ12QQ^ppm|%AKUBZ=7PS)Ns3_Cha00xDV{K>cBOI$7c1O%s5`Lcmcv!yRoR*N- +zOp)~7_{sOK`H9R3(Zl7F%W;f&k>*@+*eTI(hmyryF2L*|`kk2#O& +zfuWLqJhPwrM%2MyqGw^wo(8$Q$Et)>p94pWv?TY3Dib +z9_!lTXkc4lo^5E)2ArHM7tcg`golL+hGvB(gt +ztAg@aJEAsunS4M_1%6W!|BhWpcOu(?+*Vs9)Z*Yf-J*R3ji(dQlbXi-rC(-jYCd5( +zY%OfF+Xh(+SQ?u?=vjI{p+jpaeSl+xCvQiE(B(irNQqFek$C059c&33qdTdoaNd;H +zV%SJ(jjn-lgqg4+w!XG9wz1YamV>7M4Ci&LVIMILKZce?j9L@b2YPZNH4ZnLUx*GX +zj29xJ#3*tj*^N92i55Fn5=kjjr4M{La5ns&FvQwMoZ&&Ct|2y5HIgs3GjTATpN~i} +z4JT;kt)VlVH{YE%fLk%xTLidvYak9GlA8mi>4kWS#TJw +zNq=GcXGr0YSVi8XT!Gx64m>?SwHDeSwXq^e+r=h=nKxuQaR`@#JH}nlv=rJ&*Oj@* +zLi{B4MaLW8z~4E|X>_aZhMqU>zg>REMB7BOrY}Voz%|t`YTSTSHSn-33Kf9~VO$_@ +zaA>GrWJRoMGA~<%FC*npA0g%NisXOPcX}RklKGQ)O8=y8fudXs*I^2{84rUi?IbuO +zN})rs0KT5=PUqJ>)Ymf(f$zaob0bKRmoc`{$LL((m;)M9;M^FVOS^>#-*cf3C!N6xub=V<#-3t{X98|p7e +zQzb1Z+_dzpq$^P;uEv_iZHXqy7pWbftj!aK0M~A>`V#0SdC`h!7=g5y)*qZJIyoXL +zLTiEL5n-}0K)fxjR<3K+u{d#?-lp$n`eLzwvzBu0b!~O|obw&iZ6D0%4F#FHL}|n( +z>-ZY!JMp`bZlP6y34XhO0OSUZkR$iULdlZc0^y@@XlPd=CE`tQKhR&+Xsge;v3AuI)~V59#y#E%_S~BknTIjXf=X+bc&d*E!cN +zSHQW+aoaZEk}{Ukx1pyI56~`J6-XZ!7h4KH_yFHV(21B-Q0}12P!|K8F%H}T1G*SF +zsEt&8a$%{q&@9u3-I>all;Vx!w)oI^=fs<2AUz{9SNyKbM(e`HXp=Ev`DyR!stPIP +zkoTDPyvOLi=J;k^W%{KfDJxb2xFWiYF1k*N_0wh=SqU6K>hmpP-*QW~h# +z)$SoIXn{F#H~u$fzzU&mM1=P|C0CaJl@3X1>5zOExFRLd4)`hZcjl1ZV5(#>+9ue0 +zInFwUIi}e|)+=Vjc$Xk9)qCOB0ux^k_J0%{<97x|!l!>Lo6+(D$Y+zNOSMXy9jb4kZsr{Kv +z(pl{#{*K;ZAT4oQQ}6_9?pB_l`=hIplZK~xy0M3@1cl=y(p(9N8GcG;Dkri@whNat +zQH0QVd+!Cr9y3uX%T3S76X2z2)khmBP0f)9h +zXjrIhcwVGkY)(P|#zzz32Y8GYAic5I_&3nGj*#O?Kj9=SkhFgSe7)~#eKi5^`4I4y +z4@DB_b^HeTg+}#ypxO<#EVh;f4(&7R6^q&Y*kI7TAzNWf)#KtD*cd&Ey$KHvuJixt +zL%|i?1yX5)!cAful2ssQ^+P!dPuFawGo%nkTeibL<#*c_>vD@5^vdS?(u|cd5S6ig +z$WU#WYEwm}4zNW|YJVedz(GS0Ux>-%6>=L)2yWsS_8GaTwvx{XM5agjePV0ua-?l| +zY^YplU1)c>Q}kebQR)k~URb6FUmngIkMno;dhpCOf|POrcOKwqZZ~%|_~=1| +zfLv7`iFNp5+#2{lj>Dhnsh;V-SSGUrbmDCA%Z*jLf!jYXXzgRQ9WZA%mi^)qp#lGU +zrW^MQzVOX~9=4lbAik9s{ogbAmO+f7dA}{_IP7}vZVy|;8ty&L0ru6FTE_XzB4P;A +zTyD*8N;gT2i&hG64W0~43TkDY>Wb0e{3#MnHon|V-_$2n6I>f +z7RZ~#bjZJ!LR-M3J4Rckk;r@SoKC{?kUv0&8=_}{{*vFk!MxO*Ha#+W4Ih|dlm$Pc +zx#dy(yYz%a|L6@M^OS)%sGU#pbqx#*8KadFchWogo$?-J5mB0%U}$1qZmnvs>)7iU +z?ATzhXPav2X(A2FAxC}+n2(z^o%&w(%Gad_QU%!iW-C8njoUe})|QU5t|>sG +z4SSb)$9qn@Iy%N%e}|3HH?jaWQ+0wvzbjiYwKcIZUM$`u?uYI4$W$Sg$_V^d;DuCH +zr+|l?Lka@TV>sMsHmakPS~A3^#P-4`{yvbOqe5xvlblj}pbYVzx~yAdENYo#>+Sf@ +zx!HBk)zVeK*~V8B1l)T0 +zn-T(Ck?VwwjxjCtMGP|x-3$-(pLB>1veybHeI +zmAc*fK88z%Ee1vZPFI1kQ*-bQ$WX;8p65oUdc=1}vO-$|(?Q2>=Wi8If^8$!;#*Ta +zGd-oL+A4e+o!ijaY_^qg9COZa?RMpHX^u|zs@5AOlc5^Zk30;C+Nk1?_lgIEJOUxK +z5t70?F)rnX+jmc`0ZdWV(ejXvK#+H8f8`jY*PdrSvHJArWQjzpcr^A~{57cccF2DZ +z6i&!>5D{EW!wp}|qHUY=ggXyVMc#SydQZ65Ie*zMn2Q^-=pjI@IV+Xp&Fp|=llTpo +z5Y|S%N3KWR@#l%RDJ$2V-znadkEzX(Rp@9ejA8gCEI-y1t&bGbEUHzhFJF-6NvEYh +zbr!M-_Hcvgu&#%3r+K5bguR~QuH&>ruy3(#v*=BnZW46_JEZNXlgH4PyDEKM%MsC#;1E{Xkf}^9&9dco@VNA6!l$n8-V^& +zfY^q0MtdW-v<0wv&4c_x!Z5}4Ck~KLsoV5u<_5E$aWh7G3ArAxg|1bPO8fXt?7?Ir +zwmPymR4+I+&@+$H{Q|{*<7#m>t}~}{T&AcnMSLX{RGLHb>pf63UGT;Jq}~Q!#3!-3 +zur8zHPNa9GQppQRIe9--fJHMsgd%cN?EqGcI-)b1Dp+}Y1D6aty+6HfFX^f8dJoCy +zNygL6Ss|9% +zqeqX^EAh9Gg3Sx5wD0jdks_hofh&+w&JRid;el15MzApw(^vTQ@&H6n45WMNKNz2w +zf49c0Ic(>xPhjtK-}qjC7bfT3#0?-6JNGJ)Ke`_G=p{8!u +z>W+D!hd{*`;bDwKv907K2lc8m856F48B8VD6mD2uxa)(hk}QgmsYD2(RIWl8Z}tW +zAFNFrRa}3$TY5Tsj<{R88aTE=>glB}1e*UT<$&;-?VIcmca1`jQ(hMMFK{SW2>eki +z;>}W3xoSc=8P!&y_wX&G1QSAgrY#eoOTyk$A+7+&sTVp5xeYql2-tkC01p;}?;{3N +z)fq&;(}0+C=6&W{<}7nB(+k6OT`9T@@g8Xd93zTbn#_tV4>t&|@h|h$gq`a{|4vXz +z-SGWvk*O~=(W>A{sw9Aq&Qw-> +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 +zt*-f@z9>Bgf2Q@8YYB6>dg;ZYvdqO +z5ZL4`)qKh?>6~~_$mUz}MfnkYF`=udNhWmyQUoWd4D%Us3n7Pb9VGz! +zy0<=C|3KeSKTFpax()V`)rcS1WpGtiLj=fyt%3}~4D1!&iTp*4WM1mf|M^pmt&NWi +zxAc{CMd&?1CtVF2qg$DN&~Ml(`a1M0u*&cAB_VfPCfGh~iM390>`y^ZtQbRG)45Cu +zOHF&g5q36krJN+(G&WcpnvWZjOlfKct|GV9AJ7QYTl`PhCcG7fi%q0<@+4&kIE>aK +zHPN-`O0+m^&TD8l6dXEQ3_Qj;(%q8Dcsw>VHX=sGDg6RRr;mw!NyTl^!H3U +z+gnFo_iaci^WMqc`ko%HkM=i~A;we86Ug1>QkDwsx#g*riCwW((cIDc(R8$6{BmM< +z>KdEQ6cg*oh1GvG9U4PNVau`R*acwPeStjBer1<@U#cW=qF34{K`(>)Q2T{80Ipp> +zUDVLlJQ5Uyk&Z&nI?i*BdG-_5dgeb2Um+z@9LXtr`G)BmkP;~nsvHn}m#~U_!WKI&R8sDrkJEZ?4+`&Y?!cU6@nWKwkTAc)MGH +zmoXpK89x9%urhRIhGV+xI_o|#zvyw)GNJ~yM%yp17RG=NWLX@C?0P$(kKutnfw95z +z;lHAb66y4H{*LTNaA*?RV0>zsXWs$cMbCjzP#63WB^@8ErOh>An_?gttcG?;-Yf?B +z(;1FC%YEa~ThZwLnW&OeBHq(Tm%CQx3g8PJxxVJ(ob(neav-(x+g +z&G8Y@BjMqpe}mV8eM4u$hoaSh*7PcKLb{~Az(3L_4Zm9|+K)RIx=(uYd*6G$yBoVa +zj*-@Zrri3okg>)PR<0$+Gr712X*7K$l}v3+Z(_f}o&Ogo2p@pjX4TF^cTqx{qg_|e +zDr01$v_+`G3!K0LgM_WZ{$kyk+k6;kfqj8J^nh~c>zc}1@7R9<8*;GcFmxB0-IbkJ +zZRbGq??-pSD{BR%dYO}{l|VY>LOX(7Kn@%Zrb4$ORD4Hr40zm|Np@hceZj60C88DygHT}ErZO1X1(ItVyy|BHg~a+L>($W^y2(&sATG8&SU8V%$EA* +z*Fd)G%Zw$9!W}yZJC|Ll7V(aecfqv(EN}<2d=35Iz@;ZenieAcY{w)8zj0VMrk4RP#b>W*f8>mIL2| +zzrqgzqsE1uLXzNM*(28Gv)SpXu8DauH}DMp4J+Zdkh~k6$eFGSbj2;|T5L5nR_`)* +zw&ixVcE9l)^Zo}eux$5x=z?u$$-u_w6v3d2l~&>y=-@1tdXcavzQijg&}1d}YLDUm +z;0ubsq^Uq`%hskKH^E(B6Pfvc>CSwh`#%JiO+y~x3-j0b$3lClv9cLFMs|{dzLbZ+ +z%Ghe}?cC(5=q~IY=n@=1Y*oP3G>Dl-^hX-VHTXZ%8jyl_1GnN4w42@mYTEG7#z^IO +ziBunKFsD +zg&#t1v8Yr;ZUii@1==K}EV>Ong$_W^!N#aAhw)uRygAQVpU_iV!I$U +z*f(v>lot0Z;3Nj}^-d#V744&4tvs{5lJ}zbn#TqkBcFAXDWl6zRmb|P|A@mfv(m0) +z^*A4GA8i_a9DNyUp7IBiasW2~*BWuP&SZalddovw@)7PG#@ +zk!U>hIMCU@&bQoG%fAKgpZTJmM4$Ah%m^u>*2bEUQ97^wu_0w#YT9ZlYwBbyU^t@F +zGg;Irq9mk`pM&Cm7aAeUBYxyN>HwDVc@q5fOa%Hzmg_15#oSG|0^a64q%(4Zpd8)$LXRZl|+(rlWS9DfT0i(Vxal|i+7`a`o{1E$&Os^9iH*tb&&Hv;6CUy +z+5_h9hB@>Me4I8{dXkxtUX!R6n;PjI4u^7vzlAGAg;>tyj5L*5Cs^ceYG1^G^}!ng +zE$$uxj37LX1%P3677_??Wu#J18LPlj61vj7n3g9~w`Z>sb5PaJ$RC%r?Nf +z$K2957JO98u)o#&qMxgfdi;MIqrV`P#(>H*(4Q|jA>1BP_vN^ha2--2aUuusvz?}Y +z%^xj5JGNf595Gin%`mLit)N$uCvXhg2HC}r>PmGdGzR^zZRIg4VtI)|WSX2p?WG1# +z=gD;hft%19Y8iQ~u%G*tYLmcYzd={U)8N`563P+&03_PqQ){>mVh0t7C)7|qWv*iT +z=196adT_7cso}|XWjoqJvs?wkOK6tNfyzn==?Z^~YtCjtyQz|zogTz)<}iMdV1u^n +zN6IVUfw9{EQebIS07`FfDGZ8o*^HNK&HACKVk$e2v+yo)iQHWqgPkRDU0q{y3t?~L +zbh>K*>u|PbtvlsB3a;%5#!JiAAYr +zhM&gLW`|{#WuWD;(ikt!BS)a(U=!Q6y +z9)NGNky05ZxMI2=#y_A-WVfq7Jk5{1L%eM~%Uu;5U934w>vd7G0X$s;rQ!S+pfh&_ +z<&y&b+S^1V**T4Hk1~6OVUkf9r7nUm<3VV%YYkkQ^Xdkr2Q)cz;KOggf6e^L^x*#x +zPKfj68)_Rg5BP$N`h;pvxTTDbY0yh{ZT`I;|b$*<9~*Qz+j$DJ;VP)rYS}s^VCe` +zig$|8p(cS6{;NI)__sHLIU`JbWU3rYa80xhcxC#5K4aQxJ!3EE3^*y*3}-LLW!oW3 +zebXL&kgh~-$Lauyb~?BodWfu$fw{;eDUwsEu4X}tQeGfEJw~^nBx;78Yc8d>R8=UD +z@v!BgWujqxXv`679?KP;j$DWIWhP=>}H>9%-6M5Jp{P@bWVLQY{N$vgBQecag4($x0F&H-_^n{%C`nEf~F +zcvBl-QTjmheDvpmu_p9519p8a%m0TFh6)7IN1vJV4bQir0J`E3sKGmF@COFk9SQF@;-T?`u +zk`AM*uKQp2U+ycerq1T}PnMjf{CYEu0hRAh^*6aVv>P1EAAld0WFDe)*#D5*78zLL9Vpv+*_a3Am$gfh)3+U7n=lZXkf>1_tQyaCT%|Y*OM* +zsxJ2c?w`Aq%i3Htj79L-#1UdF@e6n1PGA^)*50WYbiWi)YAcsv%KV|tL5D$({2p!6 +z*ECi&`z+;vM_11tvT@damTIO2`tI}#T#w|HEAYe8zy8l-lqc|y?>Ap*pW>Sl*d6K+ +zoeCSH<8aPU8G5g{&9Xg)Hh?xpc}D+MH4A1Ls+cc!PcdzP~(D3*eH<_&u_ +zT`cWLk5AWPv$#{4Qo>pBcWArbqz(aI5Q6*zXK)SG0(xCt@c};~Qw1;yvZZEwG6hK%IH2AYXX73g8jPvn4PwNwAQz@GUYbh +zXGT+{2`|Msk8Gq2JM +zlM~`s!Et&PnkuBQJ^CP)JISY;@+s+^_5puQA2O7+w6K43et-@2HApF6@|1QH&UUs6 +z=G*#WaKG_u^Pn5&2Dc*pJ^5dvMxtioYT`svO|4}+0RJ~GZkEm9jALHi>mTbl<_)lti;@4~v$3J*ddN!$Kp#8~M2|aIS>ih6M8ZrL{d_|Y<3r<3V^jc_lq%9-|9l)ZkCtVO1h!@2yX%Oh%SF{k?6?o#Cb>)rQ +zp|fv}{f=X*bFCA1KCnlvlYm93W9ktNkaBWKAVX%yuScqcS_Pc`)xLYabN)Zz{#h_q +zIk^%@VC!TADUUm-rOYBdVvHKwnJSpJ8Fw2x>t8VC=*2)MS^|pcEYNtKLn?S3G8$cq +zJ;h6qv#HDUO=i08z3#rQzOE*7k@^R^advC_{88k1$Q{fHjaI)0>cbXs +z1ayhKOz#HG{}JLNUI16*kfn=#g!7$i1N5MvK)sLJ_gPhw+hAlg!i2TczRNGgDuNX_ +z$)z#_Giv51Plyer>|C>*H-XHv&pRJT3_0CD9A4XFQ(=7#ssdJC?JWMw{gwI- +zp5WS%Ug5&wCE+;{Df&6?OwD9*XbAo(TeJuQ`#i}1E+B?LBCR~!X^No+L{ooLM=Ey3 +z3Z&8MKst>hcd<`IPI{njkKw#&o+V`s+j`im*(U(A`Zx0m!ve-lc1I^D^Mu1dzP=sJ +zfaYHi?w>B-0bk7jIoLlk5I9C7GG(QNx)KWkhh?H+hKV)5wB)yb0rp_T)X%s{e~39w +z-Guz@c(gi_1-;)Fpt*A)BnJlpoBSI70UCVfQNO64)I@4MSr16GJ&+KvT1N02+4sqg +z@dD8v;oPAK!EwPnp>g5SQ6^C&eHzG+JG3kK9eSg|VfoFz$~nNj#3Oi4dM>zgx#I8+ +z{Q;-*QK~KOMt%b|q9Q+vE5(jVS4xjf=VtSA12Ql9E|5Vet7NG)|9@A-RJ8}Boz{yv +zg;SYP+!*$LdU^W4^j!8PH;2C{c2n8_`T7-ALf;!`=qbC~b;!NZ^TyNHQ^}p>{9t=# +zZfBTAkHXtRN~B-rP3mgAM6_J^bFfCRQ7|2>8P-Re#9t@3vorWEk`>x#FJNx&zYnqHaLTAo?vSaz99 +iKpXiMW;@v!+SyXDG1{D}6K@>37yJ$><($5jzW)bbCfX|i + +literal 0 +HcmV?d00001 + +diff --git a/share/soundroute.wav b/share/soundroute.wav +new file mode 100644 +index 0000000000000000000000000000000000000000..1631695c5b17bad200fe7cf04d52031ce8f73482 +GIT binary patch +literal 35324 +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 +z^-VR7Uyi&9?GEM-b_`Ywod}WZk{zPSyr-;G0 +z8~cFVhJQn?AslSUqahEBfDNoSb^!lI@Z@W10KJxOPw$|{kx%ifXlrZWUv>L +zx#QW9+~H8LS8!Iaedv9dj=fEkVEsZ$DGm?7XVaZc_pRp~g!`apiFdzO^K5sob_Q(s +z%}oqT$&+ZdUS0Vl{9p&B#wT3yPO;LlO|b>>Z;6c5I`%aGMU>^FdQ#5^*FadL1KJTq +z(9y^~_!4wq&(^%!VznBm$_%xmHbQ?5{f&&pW)Q2X^~^{kWUg*eEp@C>3uReunql}& +zeZnUrFEm8JlcB^xU +zi*UzXrCfI%uWZ9C`;GhQCB$fS0(4ewBG(oVfu0v&Z?HIbgxk*F7o5^4IaB$ezSEZL +zF&ze5b_Kn+)bMf)Y^5qH=#*;~_F$FsQQkHcQ3Um +zp~Up)uIRhyw%Et`yyT?xcJ7nlm20R)^=D8)BnNsD{e|8{+o5}qyKoltT}Sn{+8gzt +z`b2H5mC$=aAK?siK0b$>Mt3ss#^&bAmIIcRmha|0re}tU^iEMRI;(*hZ +zYFNG~Wr(|kpZrvQH2;j>CxpcP@=die6hQ9dXQ-8iYUYjB6?Wb6+39rcbWU;Xv6ZwG +zGVZ1BU`L^;N?W08`fPk*W`{YK-FXe)IP}{CAfSSOs;arFn +z`4^6Yu0BzFs&En^I{6yx+Em44)x@dziFmCHC2yToxPU08yylp9Xt~l75Ea6f@j02=P4{i~h}Isi?8Cm`$5>)3bv +zJ8_gOMm47pss)*kSd1-1N?^lQ_?jp +zgt$nj;l9~uzw7+u{>%Hpd)j;7Q^@_+!GnpNrtL&tq_(zNssNs&w+StFJ6b$iDtbGb +z9UGJAnwrNx-JHrkSA$?%9;gf~Sh>V1`8 +z;#IQx9vibp)ycIiUl3OoO$k@<2W$?Gc{}bp%qV +zEW8lDh~4En>Rg>fZeg3qA&k>B-?H9T#!=IG)H&X{)RDAZu>3J@pg-d8;nV6;aRGZP +zF*3R}G%OJGmGV{eX}-mQOQFTlr-=z{N3oS!0~WDS)D(km;w|lgRaDTv&$h*y!&1#; +zFJK|i=qm5h3LLVw^U>L$%H +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 +zk}hz*3 +z8HONTmg+}jU@>GG+z9HgztXmAm$hR0YyAXt5Z;e$Kzm^ktRkKdKZdk=s&J{$TGIvaLIld&qv8|f+hUs6n&q2Gox(U$ml +zq8K@z>_lc0`H9lF7n6|?tU`^TXF8aPdRr(TToqZ2%Gd$|rH0b~Fp~_d0W)qk9A>J} +zjmU3UPK41P$P@R%%xZ2``JTk6TX*{-P~$wi4ViBE|uNiDUUZN}#n)6yxW +zuC_{F4b=df!cw>rycN91Z0)BSSMn&cW-#dnZr +z>;C{}05#+`AGL0?|8UH54tJgg>H9`&FLRb52i<~LjQ)leY7>-O(j4)a&{Sw8oD}+t +zt)+hQ0%fPVT^j|q!n#le=((Ot&!hcP=E|t_w@{FeuzGrQx=A`CJ%YW?trI>-i`BW% +zX;dK^Fau1rt!M2=oV5Ff`<9z=XE>+W&sqi<_fs3NPLNT_=98(R@m`T|utcDs|C6ta +ze_3Ei=zZjV+>zeFHzIt6zt?{~0cU-2;RqmEP7>ZX2lOFS>EDvUUs +zt(sgBn-y_}dxbiLVxeM@KY(D_n(E4x6%pmURsrsfmc&;Qvq^=tP}j-aWObrAj$mJq +zXK)B=0Q~|UbPnh=v=PokjMz*(L3F0p(94*zhLMI!hB-`AdILEee}|;>Eae}u6IUtK +zKK?9nC)6r9BhWpN3^WQgjl^O_Q?IzUl3DM9E+-cn3RoK2UpP;@-+StMe|ny}DUi@U +zv@A9%RD1j&oLhS-edhow(Gfg4p +z3ppG+2HjDz1T8%@Q6V}l)IH$$Rq{3TdHu%&iO}n4%_PZrq^8<9WIR!nnP9469cqs{ +z?m45*k@VEsxAAZJ;X)&z9j40%mD}niZHCVN +zKU1U6($8v#)S(J4Zx*Wv9G75gv4J$j?qM%-?S$S^ma<3x7ffs~UEP?^a>Dk=(cRU= +zz1VGZe{{0;5!P0wv-CB5HQY?KiVWK`Q7}3)G%HZqf5I2^{q(O6z7HRX{YsADa!AkB +zVemsNiyXr&GkSm@GR@N7a@f4uxf|tX>MinI@^IxbH;nyYxZUUXJ8-L4%RY%6J3y^npbMeg_CsrO2i$`7y1ya7itmy +z9Z_PFla*MnfXiRiB|!JbuvNrGay)gOT1T0wx}YM>_y_bPcrVYPn!u;h^4}N=(c@t%qzCo~)PN=QCfqRA +zH2Ii4CB9X2AYF*TOkwjxTV-c^cc!PWx1o2a=dEk6u2lDguY$Zpa9vIIIf5TL2 +z4*n1FPVcE!muHC;g+9E_nfN(;J)yohLOLLSQdq#utp!XC4&Bi!>Rq(Dsv_@|nu(|o +z;c{_%*fnf|ea;mZB(a9_M!N_z7oc1;hTp0RJ}MW?yIEulYlpqL&lZ*nn_S83IMn;-pM>Fy=LPwy+l1y3n%R +zTmpRZmGnY#8omI{gv&q)&8RI@yQ=e47PzMK_3_X^xDFCS2BOQ+?&w1VkWf%kv#5&n +zRM^ffO7Bh@5}#s4V`_9nY+~G#Y?EdH#c^Go2lvJ+0fMU**s(Xbx_O3sFL@h#&7Qoj +z#rE!&3x;dtdbFEfNp8kxrgq1@(TZUuI4yW6I5(6C2csPlhP1%RVp@5i_e8d0lZemc +zQ>rQ5j!sc^sV2Y;&Bk`2lYoH+seR-vD;^28)^9W{Y4W*@>+5M&W?+1GiG~l9$+{{{zCIZOO&c$6U#~k5*y-gVkcs*xDs!lR8u~d|)7sMpozsgiP8d8IT`-CAQngRDc=VyB7sRD^kBoNWHj +zG6!Uxkrszmz)6zmQE( +zO{@y_$zZgcww-erT_;^TT;H4v9ouYmEX#~r={3X>bT`DRTjhOX9>L5{;WQu%@@a3Od*~bD +zC!J+nZ24@v;xM_cx~{uSu0xIuwr}RWh7_4VZ|L*op8UjAFqR!21E|w|zP`R}U+w@E +zS`*2Ln$aH*6qs0IHzdv^Hu$ +z`KFXqFM|DRu-*-70Gp5lh=gd!AtVL=fM)5B)NJ{=c!uA@UPxJzH{(BJOJi4K%i^&_ +zAT^2`D&A2BL*+1yJZZ>pDQ~~!yyPal8$pge!gJo$!O_v0WlT`dur*K*rM-{=NQYI? +z5#dy@La=b~e$W*D8L1rqnapB;3!)G)Ka59H%lKLH0sT8_pmf6)%O!ggS8-2U?^$n0ZzWHESIo{?HW>d< +zHoQ7KS4E_6T*Wk#oD!cM%Ny$ybHrOF{v@BIe{dGDs$5TX>j$Bq@NJ|KIt;CXW+D)h +zA1({k(}!y})Glfbb&_h(bgen`4L*;a!|#!==&OcNru*hhOG&HMI>3_4T+jHCmWcn* +zLeLOphY(DUPjrl)2<-?|0UC0vZ-So$+dbIDqs;*2>=W1>AS2_m$ +z)+g$j+D&z*GEgomsRAT4=D%{ExMqAwVWHSYo~shj3*;t#ojL}b(^u9kdplNw +z8x5aKt1Snu1#N__m$iyzzv;H&C_RO&hZjPt0B4}QR#E*&>7tBRJ}HaTo?1)2Hk1c` +z3wK7ABO{RnoC}WVV}UPlN4hRt;$Eb4rT$BtiI<3jr#1dPu@iXt$Aph^H=RNs5wjS@ +zRMhqr5s%M(Hy>qzE`T?rE*EO;qUBv>O92Qi3lc0TQ9DhO90R3(wvxdpbbfoK1DzO`{hp|W&9EMtgc?dzBAr5*E2a%ju +z2YePWk8DoeqCQj0sk`Jd;tO^k=?)!K??^BCK)Q7DLhMk)750X%1s$QB;g^xp@jR)O +zTyJTDb^v)zd}KD5zu0y-Gu?TC%Gm3@4zi_e2W`7%$^{sfUdZ3t4{0rbEZsCYDPB9a +zKYB1)Bi1&al{g8=EKF!3O;KiQb)oa{OJpVb2c(^AP!`PXT5uDnFJNtOEmOU!=G3yZ +z-+EIxirmKli9_vWdKsUYzJX4$#Znm5;~ZlrP)Gk@CE%s%Gchl>1!POx!o2`5m*qR? +ztL^_MurJg#x-HRx?JaIrKf@%!(hE%+tv1IWC*>aRF6=JhTH_dLduxsuo>5!yF~}(W +zs8U~QC|u#rvc*^zJAp07)!=6cpTtJ;PUVgIMq8(AfROyEchOg9%YlllA{!+{EF0&gMg*m`9)vGpd&xyi1JgCoA?G(MVH`v$!7Fe#$#w; +z5Si9YYuZX3Cu-ua(4~Nu+6oezk270NldIz1Si`6(IxgBb_8|UG@@P8FH50c0#_^^; +z22h5V(bm`;tTXl%ErB*eI)GGmj{ZPvqvg{YX}7>t#vSM{B#7R`kC4mgriMpG(R9OX +zuskzE<~_!qQbBR5kXI-oY!ar4j{%!{MDxHm(N#o0 +zI=6A3`90v1emGV-*E#);wf42vG|2j^f&8t!j>-|vnpzWE5zZ6r?e7LC=pDWv{!hV) +zk#+GL=^&piztxYSb;t=!8B;Gy!urcr%^tBiY?my8>9=7AU6cHbWgttT>sl+dy0T2J +zEw`1=$~}~dYB8;V&Ok4qzVIPT8TyD90Mt7|(id%Dc)7?tomRLju$240Rd1 +z0)0>_iho#h>So*&lOro4mm_nd_hPdXD^hRRI>IptQA_G3cn9(v-G(7Jjb~!{vG!eTD5NCQ{{@YX;mDGYvKOF+VmPF^bG>%1vPCVLi7p +zUl7uJ6MLeLup@ZEZ}AuLtNwMtx8W0m}p1ZMY +zw8LzxZ!Qedp4nI>*sC>>Ukk6f4&ZX>L+W#?W4bh$+L?S!@jgi3cLFMZmtGng0=0sE +z>XiYt(pW8}c;x(2FW_087m~tO@r+bO$*pyR-Xn|gh7`{%G(EJOwB>Ygj!Mo4j#Kui +zb)|Wmp*%Gd>j%|Q3JF!xo8!YH4};JBD}0Qv9mr^N1{a3s!~j{y9hFXMyO8e0Rr-`M +zmnCY=53Ev6Q;8pm?#Vu>SeoE7#C6IC;GX!2am*vr8|x&; +zau@8m2d-&yc=o$y0newqX&pTSuLehzTf+Nv`$Vf~b|_!a9e4y%yzaqV;Std?AY0nN +z^HMu)E<6I`2^W2yd1V-8oMX&wY;ULtocz}01-vA76Xf +zv_4tI@XcJn{@xjLxA!K!Prbi9b=*-0X**!@(@ES1ht>SjL2gURn#db_5-AYL895nw +z866!TojjK=$)5z-(kyK~)Dw9CGS@NqVUTwk@lN1YWh^op=-o`cl>SSLYaMh0LWE-#qkWd>K4N?IjLik0*LW +zSA=>5KKQ)8JU*XqY~WyMTJ%w34m)0)2NH+@c#_Ityl#GBt#4->WgTbj2W(zz0rO|W +zAo>lsTlxif;^%4;CBHmavPpTR1yUI>w;9!@8T23eB9Mcnp_70pFQSLlsmgn)usD(b +z%Fa#?OPxzjN}fy3NxcG0EiOKi{aQnyd+X9Wjh8J`?dP3+-F-X@)-%j}#EJfCCC +zabgluTnmFvQ#}dCdVz}^S74d{vVVV|dT0RPGd!uG+1v$P9q(l>e^(*Dd&+k +zh~va#Vs#0VWtmc)8VypL0nia>2XOuV))#<`{-#_UIQc1VDcd`}G?hD59HdLn)1$fN +zLQa|1>cV?5J2lpjVIFOJ={W5A;_mM$2{xJ~&QkVDmQ2GN@?UhYo==AP@~J1WMEF9m +zTwtKTi=PM#4GsgmTm(2(r-bUtzj_={ep9J+Ofh36kaZq6l`_>aO3Y;X0cj+9fL&!6 +z+!|T{n8T=65D+1~phj?Gq#0TbQ?bACoA@p~2VM$$19sdT`U|Cp^osAuipg*B!m%%r +zd=V);EwUpz7|^0;S*Q3+xd}bPo>O~_`GHe))HNSuOR9GRnAr1NDf>H1Q{y1216Bzt +zrwkIMPCk&K>e74?<2kumx#K=9DF4< +z2V5-;hgU*AeThCrzod5r&iM%B1=<5o5euj|UBo~eml-!23mA(Vj?hQQs(4?djvka3 +z3dLDDkvn!cd^tEO@Yw&ue<9E$vnHnX +zXJa?&F?hPTea?G!)cPMF6ux77pswK3xJLR|d}pL&XkehL-{7C?KN6T7`VF!rBE5jm +zAs^KoNDUmOx-un=6HKMd-OPx&Dxe!zF`p?b*#KXLD)4dWu+D3{w4GW+TcEcFzj6)W +z<1^S9%!L=h-(m$Z3S9+X)_1FI5jI7=nHZ)T0-A2(DRl +zWEd8}$BLt +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 +zB4r|FBYBZ)kP>=TA40c^BhL^N$3pR +zhI{Wr_YG$WyJ#M3I6z;+KWXLVH2H{nyX=2FE}v&7}diC{zj6z`vfKNRi(Uhb*Ce`s=) +zOPo*bm2$N#{3~VAUo-m6Q>`Ox7i|-5JFT58n@sBreRVeaHn9=hAQ7;Ot(FD2cYgrN +zP?lc-t$hWu#y!zjs2Pi(lhEDB42@B{%hSZA{B}seG)PFX;<5A557E`JchJptru;%F +z=yoWJ9vk +z?9U8jgtkTo$0xFX^C8KlG1yTeN!?*e=vjSRLlwhr{T1C>rXGEt%px%S8PF+pU>fp4 +zs|@*uZE&}^2WO6%Lg~|Vai%qD04EaG>BDCNp +zCw`92jf{h8u39(}t`hw(_8+j+!}x13TXJY0kW6d>UYVFnOe0DVGx5K%3+Q#o#M-oM +zwW?YJl5|ahfmg*IY=^g*eL+{6}=nM?`8d6U(O+9x=AI5&c=Db3Nv7BLHk +zMa)^CPG`$~_~FSL@GbKBz22?hAnOW5vDH5&I3RK_K93tC{-JipaH_YirSY(Nn)RTq +zmc6Wfx~;wSsQILEy1oQ+mK+SHNTzm8SuE#CjiqXk>}2G}@%yuLTBJV-A!^XB#o`Y5A2TErf`+u2!9`+**DSmm%n*%Nw`6*RdQkKjaV9b +zutmTbw}+{t|IP5);5RHVT-NUaLg^*d2^h}V*zagI5`xapEtu53LN20rux~g*YUD#I +zlm3hDL*Jmz0yokRtAHGY*-{OD9Qz_ZEjm5S2F1XZfH&|dI6r(px(~W}7sbo!XN;s# +zL!Mc(opZi)Hw5F;-LyhaD>vdSZM$c3>(i-<*e~h?kw|HY8PGdz6kZ!z9x4{D9l001 +z5Kkt%r|y6gZxPFakn&B +znWqKN#YAIT)~z=RX2Q0`e$?@UQ*e|7I&Z8c&p1|hmwb+%Q`QS>!9p}Md>}9yZjhx4 +zOB8-C9N^0hWQF&{I&XzHq_Leqnd-S +z;EiTd*UJl~_u>XIPb?`tlKznoDTjbu=#M0j`e<$RKcpN|Tzdelz%ubBPo(;>T;ff< +z9C+5!<06jx^$*Mr6^|B8WO0{-l1hJM1YVpP%GA~`Ftjt~Lb5Z@@Q;3w +z&P#Wpt`JS|82S$S&YK{YwqGlYd`2FjZ?PzzBK{-iLKnS&nn@ic#}fCkd&pEZDm4>U +zb7Eq3Y-Z$n=t!_=uu`xv*e2X9%EwD`C!sHP7`;b6)@?Kqwy2|t+v~}PX=nSifcu5B +zwB2WJWf(yBgrxCU=|yTw@^kETBt6_XgoJvB+J~=2cEp|~>Ty^3rqV&>t#$)g;rT>s +z@*qq*+mVNf=lEOf75V|{uYQ`Udf|Dz3MruiG!q<+r>HTEQ$OEu*f`#F&$QhXHXbz; +z>bBBfhzIC+H6e}wC*J)i7upcW_Z{{&^se;ogd1c*C?1`Y9Lw*LLLV;yGdXmvP# +zc5QXHgHHZ*x89}NM_Z?uGW5?V$VeirTmgFdPuRi9*@@DLCW)7che}hskl<_SVuJ`eOGe4hySK#d};To*kJHwEEjY(wHb*Sa{!i+dmL$?2<{8H^@a0 +z9dVY{8$O#VSzp;c*y}qadrA8xtKWRl*hznz{)N1VjYr0)*TLkJD|$o>lAW)`ebN?r +zm$C;kEzOauNDO&^bVlZb;Z&zgk?sp={3H%#^AlWrX?#<>TB2i8V$1V4#T$wqj2p8Lhd4?0p;cy*KF_epSkzS3bkMlpP)u)SmXmw2@tQ?m&sS#SF*33snB%YI +z`^&rCJH{vb>xA6VX^FO}5z;YD#7i@TG21f1p6{IM9sz%AyXToJ;h1OJX&w&!wHbsS +zy`kI$BcQ}~Ojb*5g3pVK=O<8h5|_r`7p6!$Wr#W-rdwa0*18;A}iaGA^0;YLq7$KPpVxHebYvscAl;7pIr_|N3hE^hNN)_ +z*(HzV=Op9Ng3!poPPiR4^d9!+`!)o)(EX^I7?Dbd +zGR3J8cz>j%a!JVIiYAIjXNUSj9-H&t^Y--Z_3sO|jm(c%=jwJ(`=-+=3p6yxdeJ}Vc06Xz2BSR!?kUnVw^ +zA1KAOa$vEojn+pKNPlFbc1S&>{3Ab-N=kX~zI-n(l-A28^^KN9n-k}#n!3$~C#Lh3 +z2DWDKu3cw;XzOR~Vm@hD%UH;|XanWf|MS6Sg>zwQ_!-{Ur3!t8qkRVgGr@JbmR&EL +zQ=X%D$+6&I8f)2PE9ns6y?+#D_=HU`uQ$rN#`Iz$04Br1%5JcRW(jZk+mP%$B+P^K +z`*!)HlBdpt^JgI3F>s`t)=Mp^oRq4FJNWXc=j^SdIe8`FPpnDaU?-+_2^n%_tv8lO +znsx1roh-7git~}{0o-f$xu>}{I4riPsjEHHb8J_b4TODL;BJ)RE$6%B +zPl6NgQ9OftAPiPMBjpGOy;ir$;4zVKzp88AXj*2hXjr7XMn{29S`3}>|2bfe!oBR0 +zS_d)%&ya`cJ;)mWK?LFcmLLX0EnXBGh740H$#;bA;3>QizZb0?DHdKHS{rH<&H>U* +zOAx6Ez+6|v(kVAERi$l+vz5Eha~JNA4bxt_&p9Pqo*6Ze^k?j{dQn7D``{fqKl~}^ +zg?p$NV1v`c)1ohc@vFg$;NGo(^urp0#r6i(2kx<%^g{~bHRLz^4t5cJ1sRcBaOVwa +z*~stcZ0t4OiF`?QVD{)P!>z;*_vGIUb@Y3fwNw$J0a{vpBQ8v}N;Zfs2{#Y^<(~-m +z>^{B`{wl#u;T_ODu?iW=T=XXSpKhCpwO(|5hDwY`V?7l-2V9FB@2$7M_jZT+0jSd^ +za)z*(o05DVe+u{g!7(N +zhI*ng(36YhYf7fp03D2<4YrtcT4ljlFd^)fxLk9V5=; +z?g0fo2Hx1+yj`KD*;?rJ`urBJZe9Sga)dr%rr`jLgM0}-78LF5=)y}w*$lSP3wq{rhe3ogcM;1s6XT8 +zDdr`n4C8kFGbT!z$fo!Kv^~;P%YnMJs+z6ZwAb2oWSWnz +zoe2G!5w@vt_q%4a=)Y1~c&@frI-lYalcW71w^ZQW13jNV3#WJ+`cDKeN17!nrkYDr +zv`zRjx`LszIbmh(ZJ}=zaAr88_F}fT=4Qspx?JiQ9!Ey2b>-pz^K|iRq4)GUHHRMw +z2K?jF2RWsDQP)DUp$PmfJ84s4`u@FqT5KaEz=rn}dRi#-ws^K$>Kku{)an!@2fq#} +z0Lt{-(hT}kTU}Z1q3#Q=9?qur97|i{dS(UD4YA2zQVE!dwGTb>Q@&*3?n1Y>v9DNQ +zMQCpHRbmtvT3@Tfuv6qdri|e`(`<7W=+U*X%rG}MoiPM;5{*y}q78NlnW`;OS?KM( +zR2o9Ha2e9?yU+z#W9a`$&YJ?*5&=*|OXpp|K~t_N8Lf}4|E3p!e@{gWrjZJVFk>%o}V>6*=+yk=4zr-&j7P8Y*bA*{vF9p;3A%CK!pw~PBD~&BhuOhGD~hcKIOO%$ +z#RkA^X`#>J?NrzUxcsBOVBl`JQk-WEVncNtHj8Si-)@?0Jq;Gmny#U)kTc&=%AT@} +zG;PrzppOuD(KPL-yi3HvLRJEL^K>dFHIN?%_s9ZZ^3#FhJotZ|`~w;V*>_n!A@zi3 +z_d)6oXXO57&#=F8zod@xTg0TiOUuO$k`ExachX$X))jIouVHqO2h-Ja_WIT;rk%Re +zWDeR6>~dB%3vBr#;htgh&MM3++~aNIUlSY}IS6lTUbv!+LJJ8!b6KANYv?{p32=t? +zx3n@pG|~o(PJ=TC$D5(|!2bIPW*^Oz*$N3+hTYm)WFFcbQgppxPErvpwlmR^$T)Sr +zJW{OByEsF#Zv0v_59TXnBIhEZ=$W{KjihQx57l+pc&dT^g~6lPf31{xf~|pb +z5O~uTrAxisgx~X>Z9L5J;t2cBB?D*@zWE7V|AjtBYPs%qIF^i<0F%Uxas^_ +zaf3VxlE$rp?79o{xL4Rv>>Ol`V;Z8BQAhv3x!qi4xOy18P%gYEoalXYLkt%sat-q25>a%KgEs{Fc9yiosm8CAXUEo?68>69>v4)jjAI;xK(& +zztWU$?Pvea*#Ks%D_w`3F2{4LXxgNI3VGBeYJ0Hd500zhqQTd`mflH)!wXA#b6~cV +z8J-iP*<1W(NE+irH@dO@m~l1y=Br@NTiefw +zl_}m;CZdf=z3z|^x5n)~U1dEPFvm_$Q`{a%8uztaHQb>$;F;QwQq9!b#Hi@Y&}T^g +z8X?<>2gV0Shd)I3CiZZbg(vcLZ6fx9cm&qaK{_7h>9=%6bU-OVf4(bW#iQUv>j$%U +z3TE(eTBw9m@)J_@(n%(y{CQw#_uzW!+WGexO31QnCf5Z +zZy&e~eEa@bB)OYEAiqYObX{mLdqrjExnG4LocWJlXH=XHrizOFWSrIRbOpr|i +z1^XK&$Bfasz#R;Xw1{qvbxQok{*l@$+>mZ5Igk^ng(1KzOu=iw-J$?ICOV{q)=51D +zTtjDNm(pJCuH`|$zc%qJ)rx7YFK@hTQq1>(iFjo}ExD##gF$De@-Vm71!$09Vrg`F +z$Qr2Z18jUG>IOWl?9NF$;-ILK;SLN*jEwr;n@-NU6i9QJ=K5o1{Q +zkop@xfV@`*N^QVmJDs}^e8(epB$o+q?Z-kTX(kYUdFnWD{?N#CtuwqM7c2ebad(U|8}Becs3Z?l2L14m8Lpsl5ghXzH-8t8tkHnMuV@!wZJJ;w(7V7jC`t{v +zu?Q>&i*xlKSI|dGvYJYUHoI|n|d3~B36J^ +zd8=+1@J4I(27S7YV$M)qNe(}TZ9p$0KS76_M*c*KqXw)j-i=sF9-?;8-GF5}&9r0& +z(I)5$e}`?--pZUnrP7nL!HrWV^eCYDpZj|SRs|=8m8d3BGmvs<~cpIY`@yf}r+y?%g +zNGm9iM`>7bFj$a87+;9L#~9254vU7`JQaa&{5yCai)js!JaiD=jI2xltTP!-7>#Dl +zJk2u7^3=T3^ue%7cOR&tvdDD#I$xYU5?d3F1>XC{c+VByfa;*Azh|&cWP5xp_m}uc +zwc}N3+Az`F&vx9=9b6sL-HPj()9Scm^_Yto!t_ZZ2i>3o>jswZ4%`sn-*oJ3NG**4 +zCjSR97idzK%4jDvGvY%2h161(+C`}>E8<(AJ&W@DfUotN{$^EW-oA-5nOy#xHj=R@WI?K=gGU!THEufabM`WXk} +zJ-NDKWtGPMCROHxp{|((2gL+KCACks>g~@Cp2A?Vr=ZAr(Jmb6L +zpAU@Fj1 +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 +z9{6rHRF +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 +zNiZFBEp!idym +znQo$?qG^eFF1W5)OIJ&Ab0?#ut3ZeF!N^hB2c4?(v9)1u;9p-?@4CWGh5Z4SD;-qA +zedATQ7UF#MI`)Ce17^Tr>*YXQ3Gi;8bghCNvRkbZ?4pg+_ldLUbG42v!iMd9aLMO@ +zNB(;bZl8QhVW%iV71mAtS-SxsVp3b7eTJX%jl4%1E;bSx^4Td9c)@>9{mf4nY6I!= +zQd^B>gY&4Lp_utE>pFXJrv-Axob!XDi2bPLnDG}~79@?0%6tB8GCk%G{Srv`Jq0)U +zDEO%j{$9afBg^AIb2>4sT!hr(R@g}QFIa3(!mP8JE!R5E;xp-uG2L0%``ZoALicF( +zVCVN-aHBVu_sA{4w#vZ7;Ulsg-rK{m9#{~pcm%RW{S3DeR6tT5wof7v^MZT5Mf6_u +zb1Vl;uCw@^l1ICOWm7-Fss0&uuDoy!@ia;6lXk|_(Otti&Q{huNZ*Yrg1u1w5&mUc +z#GAlII!izSbBqQi=)=KR;c>Cwlhad&!IpmqnSs9o3cP{tSMbPR)OXY8>gF+x>Ca>~ +z@gsDg4A70#z?q(b(~vLu`xCL{LfirCP^Z1zfu0iw8rS{iJrW$Z5^o0`C6={?53O#96pVIP3a;(<-mf9jvocZs2B +zzEVUS&V7N|(koz23%vfqBZW1*(|ywdrNg~qdZ12QDu1Du$UI#e({P~W{&N~(FF|v6 +zrt6;Lh^>UBwlPijf&3fW0ec{Niyip0;E`v5%B%}6d5){euMB$4UNBC!Y_|R87y)}1VE2M! +zh`o+=tf{^NUU=PnlWH{`Y +zkYU$EU9=ncLpH&ldQ^1q)wprVWc+^20{bbxi=|?N6aCpwsmEebbuZeHl$rT3TRH&y +z(;v7CV8_KP&oTESXA^rV%Ur_}x*KlRUWiY)@`*^K1?&co!=8+(zBc|FfroIaS5I`| +zRtrz%g!U2}My{e;=(6?IVb?|#!(x4ot}7FxrjbVC47LV62HfFu?TgkJ2>}264#S8F +z@I)4+FT)-WnVvx}qteOVcs2Btipf=k?%c+NEA}n?Lns1!K(Yc(ur)1>)QS&d^@1W7 +zM_ZG9b+w`AbI_rOdDt=7C(C4-_84#L2QfKhFRVaqB5g@IV7BxsG#CuU-C*ZRX>Ube +z(4Q3=5{)N5q>OSGWEHWS8EDM2Oti0e>S1ro6}QfPz?o;SXYFrlte1h`oQcd=UW+UF +z%iM5wJ?wt@BdH}}3wCM&kBc*njM)N +zE);GU{t=cUQ(`?5D^e)GN641TY6)W<;=;R-ooSruVeZ5x*wPlpvYLHpzRFB8q4aR_ +zI&Q}XA&;Ss2Bg1N{Yq(NzuZUuLmn!hkP9jYl@@AR-K^EopXn`)14h7rAkMgMj52h6 +zy#7wBq%BvI$^a!T?~-TAf64dcx=LJmrN*_Y#vZ5=@*16m7bVYAWlfWqMdps|E7oA2 +zu=UsuW`-F;Pa^B$kC3v^pV|pIBXs1yrv6J@i&csGA|u0f!Yjksku%Y`@hi#RTt{KK +zEND|;44+OtX1-Z=+F@7N-N9SlH_cbU*WUZn9dk~#Z?g1dK9eP|?$BTAW3djOPU^Ao +zk$#~!f%pC~{;mGrfy2Ss;fK+giACubnHKUpZ6N#!D^68l!fbt8Nyi4~UoOG*!_~&s +z$obHouwG+ZGY6?4o)c{gZP#)r_r%K?gx`{0mr5l6OI}TuOC?fLx;B3z^M|NNCzOF2 +zWh{fDaDFr&_8S|I-^G97Pw*vp0en3sp{>wuhyeG1-$J9HqTszFP;qE9^akn*N8zPN +zS@Z$g1$%@Qz+2%ha1Xv8Be5(rKk^frWvE(z^{Sj-S|Q}hJmW5^SZm?Aqz-<=Wuv=vZ$XVtK`csS9{FO`7{UIjw_zx@yV{|1!c&v5ftzGPeOkuY6pZsbBg5Ti^t+3U8h&Pi^E +zH;-?v?@!-N?_AFX*Hp(->qGN=+Ct1gqWWkhw@C60QeWbM=&;D}a3UmxW`t)(;?bM& +zICz7oa97%-4mXM*XD}yOn&wS|%v0GimRXi@7PF-t+uCeq*3k;tl=usKf)s|=7{&FV +z`bjY0KG^w-p6zYIIBnvRLEf)Js +z=S(;3mAw6Ym3@79T|`5o +zHbD}*@%;E4>^YhX9fVwji@<5;_o?uh3 +z7@CDvMO^S*qpSX0t*z{n@`;Bt{rINbu=K0ciqzH=oqn25azitf#isIlHHUEy9*X58 +z&(LMeBP|1MgrmOG;_BzB>RRC(?6_k)X{l}=NH-@0WS)VlOU25(D^)9gGjcvuI#?ud +z#Q)GgJ#aO+Ec`CIK5;f(M0hB#(FY=>i2HOIwyrJeDC+*`A$*&B|N02u7f(4i?i^+t +z&sH*BCCZ@x7-sc9aVEbrRV3kzO^Wmk-wYiMYURf;(V$ +z2#NY+8e(40W?Pn!hh*sl}ggaOd;-D +z@@KqOOpFwaTn~Q^PmZjL7LJ!pu1ojMjFB#=C7?ZMZgRY713S?sILz)np7Y*1zVf~m +z-tL}Ft{#s6tgFpg^iupb%xh)jzcTsKSfWLg2-gqNfdT%G{*Qh>ur72q(kxyrHG%hw +zQ&cy!3$>Erl!&V8=d?$K_myR7TIBbVK#DBz0q8PCcXYelA +zM)U(x5Sa}BhQ>g7pqTN~FpL_|dWePB!o`q_NOSZqS_T`3t-|JF^|8lj5wsan3nrl> +zdJXN2Qbs-~))CVDOD>jfk>)^eZjerik1y84h{~y^1t*C3M>uQ3Xh6< +z6NS>VGkN4M+EI8iUXWgGK4YEgc;wpZ`R(24JL{|KtL)wCUhG8dIV|5zW63XQUFeWn +zUD9|aJucBWwmi}?ye%{)bUU;${4264c0A!tpW_#Z!;}tsSvZ7_CoWT$Oash^*|iq0 +zwX!vB>1-LyRxn>P<)?d-OYr09ceog|T+ge0Q$ENJd4W__Dl9dYHb`#ym^?r!qK4G} +zwC=j7Pcq&bPN)Qw161T%qqwnG&!I2WWOa&aS8prZls(EvrIGqwJ*FMgKNuz8)rb{a +ziCf4?)J^)A=?OF0{MP*2yxFWW2y>KXsr*D5T?Lzs(drYax^R=5k(!dY9UC2;A7LZb +z$nwaNC>#$ZYNexmSS+kAFl1ynahpz>-&=<{*0>sb#(UkqBEIe3C7yumhNHNxDEpMI +zPE17(=-=c@!o~E8#MNlO@SI>)V5q;Qe~*7>pmgYek(051l6Sev;$3Bk0i#oiYxEU! +zf9n?e0Ovv1DEC440QV+WcjrO-CTk6Lqv;{}6XRfq(Mmll^%FYr+tbZcosxGFTN1Am +z!;8PoxMd$q{>rvcwwvE0zaqk1j=?!=>Tv +zP-Q4?JTjgdqEQ#x1?7YH!v90AgC2Plg|IBF9EM?gP&e8R=?&L~bbX6fN=io@bMdq7uP5Q1>)lWjr&|mmODr~C2*0A!nc8;db2hP{d0nUjI +zi@l;XYHnugL>9#!Ks~guv@+8_Ju&eqx<4EZ9uJ^_pZ;!vzCkWzj{X~8o%+U)mP%QPPno#sEM1Q3K{UZsc(I|X1Lb!@HlHVLPqvFkqOnNtNYltcP>;XB?Fy&n@I%Fw +z$}hbQatZg+P0iJ<@9iGfXLnKWPp{p#-+SDX`0$RX({m(KInU5l`Gtrc=E+gTE{6m;O;^ +zYF!Kmya%DNN_auy8BvEEO=gpY$&*B0VhFw+dxEM+1<)biLY*MNxMchXo@d;s2OWe; +z!pGnm$R&Uy7o#`PH|Q1gPgF==GjS?#k0aY +z)A!!D+4sOZ)HByr$kEkW6)>8H_!d~whRKW&OBYFAk3Ea@3Xckrp<+F2c_?o@5s5p6o?rR$-0aCvkcrsLhoozz|WifIO;Fj;1+c{B40)MImMC9wwU +zjX=;mO_nE!c;;gIK=NCBM65^jOk`o?X=F|GS!_;XTPiP~5HO{wz7MwHL#WNndP`&b +z8s`}IbI*P+=RN3s?iuQy=5*L=SSV&0`4#m*&DFm}m_M1k6e}Ca6e1ZU?$)5+KDN!W1Q;J(geZs> +zf@)|}WnMVVKSRx&Gz=VNCK^d*B}sbA^CuO +zMs6Xil6wgbFOIjuMx*PHhp-o(0TIwCW3e&M*lGMQYC}h$vhYdJBM%`~v=cfR9go&W +zzalM>CGciwk4B;VgGPNyLvv?uNPtCj{~Y +zIt2;@r-Zsk&c@~@4|4gz{8(Z1Kz-yv6M$&;4bBVhF5ZE@FTSfjv+uS?a2<4T)~|rk +zhnieqkm@7}ntW8l-~rfqGG*e}!#1;1cm3%Z>V4|n;|+PXx*s{G +z+b>zRFcqj3U?Lf6J!v1`GSx7?EiyKAC$QgN&|lvF#%~Qi3)!Pr8psng3vWqek@v^~R5i*?og>SVGl*mOGc16@ +zXc43bdT!(G!RTfDWxO`3L5HC-@DaEKvI_Z$c+f&9j-E&AAZy_(&~;xBu8BFs)503zm_Ull#F~;xj>_+qyI=~>)TUrXBQP>O0}X9q31Bp6*rmNc9An`<5b;ljDtJlcPDK<)W9O*J9NZ`BTF< +zR*sSm+xq2lmP*ollp4kHf%np}pIK-R+_022@CH?&1+Jw*lYW{a>T^MEhMzvgao5Wkck +zlKDrlNDt-PYErKY??!FJ80w7anfZvNo^6`Fz2lPOq@xn3#}`(Gy~Grw8xy6`sIgIP +zCfPGYx>n+D^jtV^2n&u6j19oSe4#txcyvi(N&0hUlw4d-z$fs|^euD1deC9Go_lin +zp84XwiN3+!NA9D}y!PUjZ>C=4X%vDwsCUHC{D9P{_?YP4aG%ij;E3Rj;FgdOz7gf( +zQ&J81nqnJeggy-(j+G+!(XW|(tjC(ucHH*Kw%I0I70Z6sWo~S0L)9UQU{-{IO6a52 +zsJutoE`ApV3zdYr!eUU7$Hke_K)Hv~No}r`({=r*Q487){epBT0bK!1(G0COavR$K +z*M6)m()xk3O#7(~(Q_HR!9jL_(dS^-af!%9<))MLN>d8dMQS{fLf?4vl^S{jp#olFZHR$xM@$skaR$+J{(A?=g?JChU~! +zko$#atapwV@uuC~Ty-2rt>?|7>EC#HWSG8JhJ>Z*zKPY*O5yfF&0p1T@=x%O55OU3 +zN)5c;928t?3(N7W_!yzm>d*>e}(Vs +z&lFOck!ipUNcj`5;^pIVtZe*V{91xdZA*{fvxUjhM&+z_%Qyl5iIRACVmMiqx=1OM +zK%Jy&P;1EB#Ao~$_6rRnGF$-8h8`H54aV^6VclVLG0qsppzTl|cqPok^^sA?B%}*s +zMpnZyC?Aw%jhg4cDCA7~R<{R^c_~!f-elDm-Ufdv0RsYr>K>5*`_**ik +zsgl`eIc3#te)~YjM28K`>wvYCg)%RpuM+3bg-~6Mmo8_Hq(3IQ#i~UXhdKoh1eON0 +zfF4{FUK{l#kaUC0ZE2!b12(Y#sDkE>)-1<5*L+XNd&wvJw)zfx%Xmt-4%%;9mM}JI +zD0U3e)B%8De@wX&r=w59Lqp4hwStp^)qx6GCE6|iI=PWsB^;EWYjG%v-XgluJD3%0 +z4r?`A$d+Zt?Bi^6tTinM&0kHwsmH`VYz{IU8n5qCNoB9JSUe^a5Z-29W~{*t3{DaW(lW-8h3wsG4PrL{8%oN@HGFdf4YX>$qols(1%@VXw`z#`TXQ +zzpXAyo0bvZk^Dvv<%m#@%Ou>fZQbkyd^*z2XswQso@SV?g}53! +z6nhYB7q5|+mZZ`zxW}2G=vL}$eT@NdT{M7oB4&}<6hwER`_ftT6)F$ajvP!3#(M#l +z-5wbTuZF%Gos6V@M&G5M)nj^HW3Q15`Uj{#li_DD3wmQ7BmggjWvBr(*chgF(6UrW +zc_p0}&k7$iWi#jbh5SZd;&*4Z3O~e=auv0*-UHf(B(b{W40=5?i!EZEYMW>`Im$bJ +z+l$&cYkSKd<^WxZtc&G?e`s6fp+XmKMlun*9Fapug2BMy022HeY#Xj0JrJLnI>Z-{ +z?x+i(=9olIV=h_t*^9f%d5(E^_%z=&U(~zUv)NVI(brnZe2vP74}kY;xV${mH9aMP +z#GuIZ(A=OqSSk1kD85G`*JBlv$#fut%N4br&}g&^fztz-k*v$w+Lqfs$)0WZ+eq6( +zOG9=FGn4L1mcv!#1$0~gqLx&SN|VHe!q?24%&^S53?yt328r#ZPI9&~L7kyZ(AxtA +zav$V_d&ASq|F+4ETYn@7;Ci9Be`c%gokN(dLY-Kk_^U;J?_J2oQrHFh>0NsIv#yHcj3 +zxCBg1LASs#_{Pn^4O~LiruWi!=$&+3dJpx5OcOEuJ$3^u!F=8N;Um9ud!sTkbR&1xBZ0OYL~3zEsM;xOxwxp*fDsH +z-bC?;C|@wOINmfmI&2A*3BCzfg3p5m! +ziDv0qnV!-r^{x>_e&PG5LQG?pwDz_&wqLYgwRg5JvURh*XWix;rVM!zp8}?4KBFM0 +zifhs+F`bJQXYmJsr3Ag~zFq&fh@d?CuvIAwNSJEHoAM`Fd7u|#^LEgd( +zV2zR5VE^$^*(?na+VO+Zr<1J`wc<-+4Pt|1P@GE4O!iFw%a;-jnFM<3Kx{3!&$NUs +zVH@jc@4D(f=&^f)o=TpyE6W+SRkxI4o{%-L`Ot0EAq)NsYM|y;g2iE#oe{TN` +zzZSS2qM}#guT#}BFQjE!YZ$>-P+yp@mg)BYoSi|(^?3_>cY6MHyIi>(m#hryGfBi% +zbUsk+I?Ia$gnyPolAGiEVnt%^*tl5rc%Q_FmkIWz7{pgw7!W*%Sd`nrQtu&6n-_cw| +z3#yN)r5Un}ur9FGwXd;Hu_tW2b(!U&d8vt_YU6c~yhc>HDjwqRf{n`SXgEARG&M*C +z3kL56mC$j(h?gY)=6(pHm4e1sWDQZwG@D&+s|FN}65bBJ2sj;l#l555Rh)m>rm}fV +z3yDXF$!M=!5e9PIlgDCzMlOWr2R{a`2Py~4hYp1|NBQ`U)GGeC7*(>2UdV8~5%t#O +zVbfrbG{i31-Hz*EX8*E|wj4E|GA*b6AawL3JkuDaEl}P`BgN*z*i3-m&!6Pc%!*8F +zp}N>m8XzxIPN~ndcls@3DU=28f@81+A&__Qa-i^@hw6f-*3D4C>{$)Yd7ur=1B@mF +zJ%aBd&(UvK1osp7$OV*(9!}4vyU~8C6jcmtXxd>bkS)++y_Z^AhQ%lkam`cj66fN4 +zY+Y=3tYF-l7@EvVw*d;@0(qLY7PGOn$+SVzbd6 +zNHe%SG}Cylx6x(oiS}4aY5&vLfLlD>5RAdl1IPUa6fc8eu}(JpJ0Zu-z=2vrLCsDy8XT_ +zWZi5Dm|vI%Q77@c$Z6wmb%@j@Gb()}F(@`X@+I^*SPvk+JHZd3iIEktoJpE%F5HvH +z>ZOox_+#%0t4Tjch>esLV8%tU599*VXY*@Iwr!rhtYd(qm}9zqgblSe +zXWKC)=r6+30W+V4CH85E%ksVLP0)MR>M*j(e(j%DZZeG!PsB=Z_N@ +zF(g{#v5H;$s=tQ(2#yydv*;YmD|36x0&73pXIt8~$@bQ|$HD@3c9kkbv_P9dWi^`& +z3tnzOQjH}eZNkOCgzX!A6ucR#AE^^N3OpyLGezZ_+9Ws&zfV;)_p?@XY;eu<_`T57c*;!j_!i8JHidf{ +z9kkj?F)6Q5iT^XrCod)5#@oj$#HYtAC%Pnmrk-&gVXrhn9c9cxHskxLwM+}kS=$50 +z1lNC{L;mH-@-%Y4cKYpetf$SZ=#s=L};fY10t4mF*rtq%AykygR)Uy%#)_-RGTu*(FO3vqqiAvk|xP +zNqHusnfdAd$^G%Zv1QTn(H7A+(MPeuiKofyKw+yb?vb6^L<6um^e#T0d`rdYQ>Kzk +zE2b!O*2I`f(7CBNaTusR`Ox3+O`t6P)XVD!wDwvFt)$jg+n^~xxsB*Ujc-O{z-{hA +zZ-K5hAIcB?V+8eldR?uZ+D92HuaTaLWyOoabYZe^MyMtlqDk(cyjNH0cQ5)nndB +zMX{oAPi>!+Kl45nj`xqY58n!253~jqnJd^PghxupPA68S4`vclQ*AT!8BG%p>CWc) +zmX@|%_W6#u3(2kfvf8F#d+$|>oj@QAl?3sVii +z2IOpfZv0fdeWH8vL25I1FH>KVl^=QlmN0~hn)b4JZFL>0v$5Oh>EX%cY2((Nr5)d` +zS!`a@9ij%h+W4;26K`{WCAY?MMwrlyz%0MV-@s1=dIjr*w?s!IHl(e>IeC`e96^ay +z^f&Vd>nO)ES4mGz?0LDDyPECV4sDH8wPw +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 +zRqXIAesg^J#_%(Kz9ASdkj@BM_%vsk( +zxLdiM?)EObvzuY_#XsNQB(NzsCHyA3 +zJMk>tOvuRB_0>oRB0@K0n*ooH)qT?Q(A(Bm4@~S)p7XAyz*U6-pYL!Yj*K!8^`dx! +z7g8G&dt)V{#Ui`H+rl{_RJ4CAf1+G!9%mAcN&{3k(4`Aw*~CC9r)erP*IbsJ$xdKB +z>=5%Lrll!OO(OkxYwQA26@F?g)yHW|)Hg~u#i8hO4yC7ZQ)#TeQ^#vIeTQBMpzwD< +zBPW3adY4hlIH%{;$7+{U8Yq!>K#%052hvN)B`=p7C>6k@KdhI5p2CaJ=D3MGM>R7Y +zVLq5|vb`)jEQ>6xr98_qJxn91{}Go_58PV+Q`ss0=G&#EL^M__Duj!KpM~_$(eRJR +z>e#tNlXSUEKk0$m5elIb$WJELlCX_;E^z1c76Pe->Aw5kd7cxl{*G7WDj2lL~u +zhRFjncv^_J1d2~~ur}~j?f2IPK3^tWCVDx(FZGVEDV`&mhBL!RVtOQ!{c+X{7*X{^f?Ir=>n5mnSzT +znbZehF<9Y{xU_VVBh%cm3fi=A3UIX^ogIz?C}> +zcuq#DKgB70qg40!lgP15oE^=b_+NTkrlD-sKf}B6CiGGBUF!_T +zRo84Vk-GT?`+j&Ift-lPxx#jUongvDZbn_uziK0?Sf&HO?2ls=qprw=aOd#Z@T$ni +z=#u!V{IqVyOfQZaq}0`0-B&k5cjYm=nB{l +zoz~}RbHM~Iq}-Ob%KPQ-ay{j;(pF8XYqd)HExn$x12`lhNHiXTZfQ2==)bfYAV=p{ +zS}Bj^k@ElKGIBThvfN!Muh!D0>A#J!un&EJft&<&iq6fnHrHpvY&}aY%X`+#@*u~z +zo0<ao`{RI%@Kgn6~YtbQ**U +z4Q9K59F5z34dfQ40!93{_p*m}KX(+hx!Du6i)f8Z*H6l3VH4P4pNkF+{~PQa*zI5F +z*Zo9rU1(3F2-rfF;+KeKb)Dfs#}k|ADQ3fx%YM_5a&C1!a7}dWa}IJ`wq3N0Hizh1 +zJI^K9*s;#JAvxz +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 +z`Qbv|Ue#A~n2Bk%`iOp=fie~|78rUP +zrt4ejE;1Q)fZk0uRW6A2_*0qgsS=4&v9XaN;Yy)h!Sz91C>H7*DUIA|D)oYug?7q* +z%ApycTWB0^k!_WoA6-Q~*F8SZ1kY&q8|QU<18Z9osUNR7MMdRu!lVqJxD*Y9assP- +zRlU6mN)${f80!7(^9K5d8=&X=E;CIir`({rYWC^!jgu@_Y+G?YK5%{E{^Tm}3Zg6i +zrS+1jkfENok-9F`Q0XV`Bj*qtHBFsndgxagSD0H`ci1-Dt2kOXKG}`-6V|l(nz4a?Ak$h!liQ`Hd@6lA +z@iE#i><)JEn|z(UWxR{MvwT!Q8(I_@6F-!y#RbG8#4J^H?GZ!V{K(eM*%Ic9^;rez +zvYo&byQ{OnX0v=UOxC_pRVNoq9G91#kvJCZ6&{QGy0rhQFXh|me-fA;S{U)iRwc(| +zM)6an>BL~Vq-Lx3iT5R9&9=Q9D)lv%aWdg(2Ut!BEjK0N>+lrn07%%0wMk +z+DNzgZfquXI&m^aMAwDagp}ZmVAT*Gsvn6*?THns{_GgxfUKo{QXkg7GTbl^Luz@F +z>#BRD=ay%Z=Qnpzknabr4@~RO5gSSGP+kb-*p0~^vEgBV;Jxoh@8|+oL6?Fu-i5x= +zfd`>2(aVYK%oTouT#7oT{zBKn=&|J3Cgc71(bd6S&Ar$)$a&3v$@;Sy^IPo)R5Uk~ +zXCfRGnP#bOiR-a#(a(|9k-d@fQ6*YAzA@1*RX+0tS6--w$rMB8Q_WTA+h|5J9Me$S +zTx-?tU@Xk{npx^R)qb3MVRXiG2;qMdKW&vh$_l(B+YlFsrsR3DHnpDm4BFU6dy!ky +zQ(egk#3-eetdmX(L;2!dLFQKab*fBiS8`l(NivcA2j^oJo6l_*E=p!%0_9irW=?=K +zW=+Q|Wo+5@`*zxK+O8mZTH0bWZPGty9;!BwZRIGxH8Ul-F!nCIHh9iI$hXwn)Vstx +z(0A4UZ?I4#5G$PejjfB!$#r@TV?n*w+4jbfbj|h5%?f3mK~H0+`?_W1>>2i8&!wQHoii)XiItmkic7uN(wQCnB@ +zSBCRUF;!3EH}MJEJQa_{!#z=yo*ctJi&%%{rWzCH{?PhIV5?LO^7Z3XQb=8Z!240huI2^_!=)`sn(VE*s41rV!O$1n(njk^+gSSv`!ajLcHi34 +z(g_`(w%Q)*8Zd9I6*{qHQeVcWMoNdi37q%c^$tUBxr6Ty|DfQ3@Gr3i$xtR2HvjbKn +z{YU#EzPNu>uvd6jw0Yu-bQ!Lp*h?8qwNbN7fBghwW%D#kf9n(Ld+R*wMav${?eYw# +zbSIc?>IL*za)Po>is1d&g8QD`nQ4;wBGWMQXQnLslKq$4!mmZ&XR-8)TvK_i3`81| +z1BevEOMEb94f7Q(==YLH>MoLoOOvF%l11Kxd}@9C;s;Y}>8C1}ra99`+gaz)|D})V +zGy47dEYvdsGhK5+l~1iATFE|P0rypgOGe{mVml%^;j^I;q1;fZaFxjJ=&JbZmWfswnYBit@GC^Qp~=m$8}A+=w<33pbBQ5o>H*yl^s;5;GpYp4d(9 +zOEjefdb&DabDEi;{j9a=c9Q{Fnc%q9ej@iEsKylJ*s`CzDVUNO+=Bso4OzO +zL=T1z2Fm)2`0~8ly-j?>{l$YF!|^Da=#Y8G=gIx3V&Du*n(A2-_Bt-bT{r73NaLTg +z+IY6OCOV#2ADiauc_gb>B3Id!B~qDK`-m;nDd6z;^VRWf@GbO50@p+O=q8Ze)7cHe +zMfoN9P?ZPvw6(Daa@q^59$Ou7EKRK6Sf0S1)K%Y6o2}8P-eG3=Rw^nk=Np0cADv02 +z&wxTG0*y?XrAky8`oMGyVbeFmG5rv>F7D{ +z-sz&9Z)~kC;B|E4)n`dT`j%gpu9h%I+l4rPIp1rf{PYEL3s!im_}c~Fg`daDruMNt +zMK^Jc?!%na-!{#+-bR<*=i1|bi)8g)xIt#%_kY;*M*oaCqFPK2lZOgxSrc-nvDl>O +zu*l8uhVYAUPGmv!O)MwT2c+?0?zr$-A_#%JK@V1+(>w#Yl&u@38>%a<`%9Z*isOA! +zR-L6X(^jfH*^4-&R8t;;>s$xAGby)Ijww~aC>A5Ej!OKS +zuFZR;-Q+N}NjJ;5%QD`6-+9Qb%etKY2Cn;IG4 +z8|fOF6e#9z2NJ5Yuatj6pnhmngpb`!-p{anMY$uAn$?*bI+u|$FScyAcC!5nj_#y2 +z-!ja6!x+^UXwPVtsJc>L5nsxk#NB*jt|;3GoYtW9kLk_nLYd2%b?k3k9=}&OEnbxV +zlb7LUxev#}1aMvx$;M=qSWIAosg%W3dw^U{Hpp(dt-J>vNFTbx$H{9*pMnk`X&wc>57$SJR>!jNR +z^Nks#sMhhy+TFYuIjvsmauhEY2sGC(txcNalcOCYe}p@RCx!J9CDK0Tjh|26N@v*W +z!boYovWHwnw@{zdgqX+L@w%(Jhr0E;3c6X^JXv3=?&iHBac% +z#1do{%V$a_yTzV_j|3I}MW504*4x-u&A&6SC1i)Ks#tmzS4T<{M^t^a&kQ!01_n9% +zy6<`Z%_0i@n|06A*FDG?MMd+>&{umzl_u&)tGHt6K-?bP651K4=5LJuJ)`fUPw^iK +zJ_&b2POE&TGrvSSO+2A5YbNTR8Qvksa>_aff4<|kY+F;SU>;=p)i7K49XOFYR30%) +z&J}O*Z8#(A$&5&w@!wkktns%Q3#&#}B3tMv{w$5eJzSo+Lv+C3)eZce?ZV%kmdqnc +z;+0bioZ_$eyX}g<<5O}~csiF5BgkQxpRH8=tv;gJ!_3lFz`xBy{2PteJ=TVplbROl +zRrDTmy)sg&j{e@Q^!cP0nNuaAk4(b9H~!6$gf_>u$$n{?D-d|O9Mwxb7b&0a=2up& +z;|lCj_woIlbiZ(obuO@%vVL#+QlGCWP7hLc2tsCBvVQFQ@T0(OUk7g=e2)zZ?A}Sf +zL4jMLZPAB`HklZIKpssMf!pDs@wnw1djsbs*Lin!kHa$*@1tdo@iyLE-B?wp(p;gI +zDZ|Ba+_7}4Wc7GX^xMb~{9dv^`%RDJM?1yKC#$Ciu)Fw}n5}drzoSd2|Iu)apgpK7 +zg5RHAzgwr%)z&sV3>6bw^r@T>f2=<$H59n*wK?kNe?w4ZZF3=3ely*uIch5T9K@a6>$|2Zb%ac~hOlPUe +zsw-=XGb!dTZE4(JqjcH2zqQYpb4a}1paqg3K1;`i#oXXbANXM3#1=$zA}??s-V6_m +zOp3;0cN3=cT6U-~4E@w2s%Oj_{b5rx>kNBG=U&$m+^>7wKG#O)Z9DE<(@A|F<{DgH +zJ;i-&+0=7XknMt1{42b3abH(JF29_Q^S29`qtz1Y(%|$ex_>mk;Eqd)el9DsJlPL5S9YXv_;ToMsA5A!u +zym2n0XWI}-Di2C +zKjZ!QHmh!yf?sUHUe8+6bW&GL(~ru7U9tlz?0B?exOi~5zlm?VHxJxWS^vSnL2x4X +z<9Fc(Y9i(;7pZ6JquMrxMW%t4`_?k9J)<1yIfvNaFr>117{uvAGH +z&r$62w1T&CExeiYQeWbQ;?Iy=Rk#?|i&sGpzEBPkKa!uwZ}H|HLN%piyuquIhlx7G +zWxUJXaId_OQ@DM$Dm4fn+#tKCZ8YBT>Q$OyObNX0dA#vIYbR(=Gx?h7YJqM_^(DH= +z^+XRZW-_V5$#HROOo}u|y`YWcMrKA|#x^I;r)sfLxJjd^XsR(^>&>Q}may%fqnWE7 +z>W|;uQMk7(j_6TSeqkCsfll0`rwF3$)%HFb8N+ABxIg)QU0Gj2vpmftb(Mgd1eB^oO`s +z*uwvd4slubPt==Vpzhq6`JQdTP2(fNI%xt@RSW2C>J!WA`i*Bdn3Zcw`k4|Q8~?K_!T;(H9(mZ1kQ)_&5q(OTBh*Yty- +znC_ycw<=9;QHD!{gw>o5Q-B9>MZHcwPnJmSge$6dW&*p5^YK;Dh5S?gTUkT&BL&>V +zyU~}}gZ@Mbq)qD~xzdz)gx*CR^e~E|m$4Ss*n`AqvK3W>uAnNW)@t5p)-V;&|Ja8< +zNL}q(7%6krWmNO2qr?UIn7D;s&ipjmk4=vrMn9!(Pd{D7in^JLyTHWFIy+a6Xz$_821Es*!9ZU(oxfPz0l1nTr)aQTZ_QAGx7(Kbw;NGXg+%k&4F7%a3Dmv0g +z7g1MW%IFBgK4UR+Q*d2ay?wgcHF5fmX29 +zZ1B1LS%FQ+R1}4uyh7$rzNY+E*ybiHwOw)HYw +z40D+4$W_*bU9xa05Gxe<7xu(~z9r~sF7*!bo%63n1-TGk_|{C6Z!2#=h5ek_q_>$$ +zTdrFb+iCPj@7uHOWo*YREV8jDbiEnBY64{@F2e7a&tI&~{u +zkSWd$tT6B`+W!@B#hZK1y5Aoq6b0=D-aS +zhKpf8ou`_m{$68Yb}&}-h#R7s8O?0dtWq~e$A=*+D%GU&0(#1scBzet%5f!HKDrk@ +z=g*OCu&s7WG)pbW*!gGT4do#+VjsX6{cOGjGI)@4v8$T9gZrZ^=A4X?=K2-IH8@JBHbAm|qzVYkyK}Q6r5J`m-xicHBwzBYdc8=tWQot_iIR +z6Va2g(}_%~8+)5?BOO;vR4r9y&1j;5%!6v>e;GFut6Un +zHYtbXxYSP)F-JHjeh|xJuE0xEWf9$5FAT9WF?U#n`GcAGUCDrvAC3&xPT>+C=e~g* +zwF(=}gfo@EE)C^=;r9s@kmuM*tfAK6t*}fxMDH;!h5L7-rIfXqRk3umd~H5ze4^i~ +zEvXqyPba2IqxdnIRY`wrVPtyf2@*Le-&J2} +z-NAO@kI~zSRJtj@U82d>s)0-c{WW9Se8Ot9f3ml5RB>#!@36JRjlI&?1Fo8BYL3bw +z%E)0M%vELoOaGQSg?W@6bE&_QT~iIy-7>4#&s;NMiu|FBul<=pRTLs231a(CcMjxPBw`34|@ZjeM7xdFf;5` +zP}RE%`z->YOWzRG&m?Y&?jCbfNXZUBODBBH^)-Qn3<=?wA_Z<1dI!mEB~3&LHR4N;h5K +z+fZOA2C{PAF;sxT#!~!%{Qp8s@A&Vczm~!gL;a5$Sh~6V=Z$T%!gx`6IZcRLqCPVc8j^1m$aI+$u=R2t(RIFFB#Q_y9AAaCYU+b@e_ge +z!9wBQQC-54?#sOw=MZ12E;DrvW6j-d&m9G>v7XVGVeifIdRDp*Ilr^dvvf1Q)z(!1 +zLT-@WaUIfPT#5`1H4SX@Eyql}sP{BT<39o?Ld~OP6D`w!a4^sj$LY_SC%S3I^X9Eq +zt6hT``y7YCQQH2{TG5h?uKg;lRWpa?i6x+Y%ku4TK2A+7O{OukznUnYyp=qNDS(>o +z$6euTh-;(*xd>4i-{V!PJ?8$GG5=pm*Q4)HovCZ+|C}Q_6C82^e<3gMR;fiCBHEE8 +zbq&t!v8sk@0h=zekTIBxtO3Ie!+kwQRfJwezEjL{Ik6Vsft{AVk!+tZ#|y`%A+yjY +z`Z@X}RyFZ4nMilw0>UwQJGmL|q_O&vrWKY0wo#5V&eh03oN$q@3l6pYj-{HZhCYOe +z$|I$!xQZ>BdJ~I<2M62xk9hw^rlLau?QQETj?~%L(H@B#>9KrWSw~${573=9UbYN_ +z`=TZ6vLbRCLouV>mlTeD48{W(o{I;gA=dvX2K2NFGFBk(xLi +zPW-=Q@yuUbE%A!nm|R1jQg6k5yZ`mzeAg?2Ja^><8{tUVnw +zU8OwVBI9!;%aZljZF3>_V@<)ISfDORb(WX$k#ufiO7vPN7dhXJuy03TVwvwN8u&7_ +zD>5UVhy4v*#0yGUdZ1>Au8eV^d5+a&FM$lwUB_t0dV62n8Ov==UyolsXC5R +z@+s93iRN15ah#C^aSwT_H%c)ghtR;2)|VuM(PKjFq{nX`-2-o~CL* +z-zKZWv$#P##lL2)nE|P{iM8>yu>dk%TS3zKVL3RPJdFO{4560nBxzMlb3-@7n1t&n +zWbf>3h>Tbs&c~OIdiIjmwWcHb90oZu;w`9->#4c%g%NM?IQFglf2lKr@4R0O?v9*} +zmrS4K=1Jd^Mbu}sm5eRn%Wv=WxVw9_FsJPYXG~Ro>{BkXBdKv-6P{NBM$?v +z9l7|ijDY`Yg<3(@BXr=kN@H6MEuKMM?~0&9cJHG&Qj(>mvJIKOmx>Gdz7lXJt%d_= +zp8Oau&CcRd;Q?O_)5F%tViiR`@DaC+pDX+;dgNWOKvbk@^-IkT?RWaehA&Lz%rDJ# +zEp;ppvGeJbv7=!KIzGo#TB?T9M(ocmNli^Nz#j_-N~5 +z9fplC_jS#fttyEeswBic{3g`bgHlbC(-UUoK5Hi~CH_qANPSATVvz|IZh;f|OLPb`74CFbiQhi|g!dQZaxWF!_m1!{1xHghJ~d_GZi}0UUsQ#(s|**+t8JX)jjO)LnAHMqNtI`X +zYqO()ZJPNP!x!2^u!CKYM)0jO!>|$NRD=m%59*K`ri1?lUxWrnTE!+NUZqB`PT`Ey +zn|Mi8Q@3Oa={D%E8#WoUkV7U-(~SQZw(1Az2yKog4bs?0&LX~6?AR#MTfB`db0=h) +zmkVB@kN8=fhD`JSaCFNtpEVF}R5T}Hi+wEDk(Wq!M7!8W_>Zp)`h6a<(_1-)-^I@t +z)`2EF3$v-y%6pOItD;9M +z#?D7xhx!IP22S{QqMk7Y=Z3~b9>i8BcV`G8N6w=5tE=he7*|-@*#C5nbf59$ASd2D +ztEK0JYp0`#t*rT}z7>;8pHjj?J@#aB4l)%rgN^(TylLdlGx+KzE7bAEEy^I8`ax +zI&l%X_$%?|3G6^feV0C#smt8}Y3!BypyTt7d`}&q+aO#23K{!-svfG(u!LL%NB1Xb +zA=e`P!yuDSAe)~{sK_;BLn=Y-q5EM+(@M3XZiXy>EzK)+EA=GR2)ZhD4))#Y(g`8K +zea+^kb*ZC?t??&d0vg3~Vr9UoEKhbw_hpapEijLJNF7km*48i_HpMNkY=a%MoF!b1 +zT(6xO$8!5VYcKO(hPB%E>ick8@8&CJ9whRka%g+tf^RTvhusSf6>RZ-;V&255ndU4 +zlKc^NNxyQ89>rwzb<8Dg8yuTlMLY~Rh%#9}cqCUT=Y7~W-Nw7xA7LjRAWQs}%>5*G +zqD6{_F9r+1RqPA23HAy-4*wHoKj#*Vq7EsI=>7VtbFMUWf##28J6qnc}ykUK0ReDYzmr2 +zfK%ybzG}J)vh)gaepA#5sxdJEHrRWaFH#%gy`n?I&w@t+T5vDb0!*-fsAgnJtW2_W +z=4bweG?bK7v$Ri|<;j +zEz=N7n4`U?cGCTb3sOgH0L#jZNO_XQ60^Y#^^9M`cAEvsv&dBKhjBD0ER-zDG;9ES +zL7k_^tHP@4V310|s4yH~WCwa5Wuhh`YcUVJk_OyTVem_*iEm*xok~@tpVHG+CNNI- +zz&d>f^Hf?r4D++^CV(;@81VosYH089gUiE?o?q^J8%) +zHqtrNubE|fyQ#aSqs?n~J8y%-I`3p1|Jc3OgJy@ZxbA~`B2p~9gy)%=$-c4W;nKlM +zuy0-l*R``?viG^~QlLthj@3>c$^0bLP*flnyXkkEc3SJf#S%qNV=T-UTVa<2H)cO& +zIcuD)vukp3BdrqJu#Hj+;+3Nf!dHT~z@7C8ybrtyw!wazuj79vt7P7D+r<8g8fVlk +z%>!+&K4M54H-lq)VH$7BH=Z*r)|b-#$*}59s(n;p@-J+ys4UeIrwU2%a7)3(`S{Ml +zV_}qNm;RH!m*2}hz|RHoyN-dU8>~dYzMsRLJzTsd)Dq5syK4ykZZ@CbHwp8wQ?Wqq +zK?F(ITh$rZyb9^Z7*-fZVn1SCa}o1;{Qu_|0y%F6S!a1V8w +z?M*Bm<7RC_Re}6L`kfO}o8x&AHh3ExgxR~O;Ln13-VwfXf$p$x2ICb`(G-(*5hYb) +zk&9_>I*c0NYe#)>kk_0YoqZgF?Q3gc^Ks?}?i79^nVBX=VnvAvWG59*D(a +zo#IM7lcHOjq?7WusG4t4x3EX00=_Qvy479PG1W-bBRZR2NPQsNlefTg +zmIl|UL2`FGQ9ukQ)#z7trW5o66#))37d&WRbz1df~(=zNQ+X(P$Uw-ssiFkTDm3g1e@nroW7H +z3>tkcZE?*dx*oY4E_w&dWbYCyW4}gThE@iTft#KXa0Y9HZiin*zlU3{Ik!%95*yGF +zo2lPpT5feavR${_A3Q^{dS)H<2DH6qk}^w1ATqv +zy>q~J^945FLI0g#uSj#ekUp{_k*l0Xf6|!sLE}i6LCQPYIU``j|8d@PFiq3nQ~NRL+J?%|f;^fL4E&#j0sH8xP`9XGXqld=dZ#J@ +zuG6JHud1t>N-v=LlU8D*Y?CGkkGUr7#q_XLBs`dKf(FY@xb2F*240_=+qO;A-Vx^0vqX`rFO;hBUM9& +zz>oje3^3T26=)yIMAV6&(klL{w3ZyGHljk>Y#C_(7k0_(o*76%m&QJk1+MXqsMTbC +zrJum~>8`{LaRB_XEfdG1tHK|G2LiJHp1*7$gA7Y3%tgB-KEr)8N$4oM$$a`7%}8x; +zebVri$pjC=R&!tTMQkbDZ)mMQuGM2ovWUJ*Rwe$CyWw7F3UbNGKZI8y#kJ$F@O@F) +zoEFDoK6_lQk6wirQ$&h*1~0?^aCBCAy!1?LAzp;Hp%DBHcDy{F2)~Nsq+I!~Qky(U +zb%dLIGLz7@#}3({MmIbVvrN@YbB)ssh4nva2W!fx_LDAUka&R8XXfGk@kMlCSQ{!7 +z+#L8TP#zW9&hXl3CjM{g6idM_8No)nyE>IAY00&paE@|s@-)usoORQ4*llqY*jrnh +znSyX%tfJ0?Tx^}Wm)IVC5}F!V?`!Fuj~CLpf>Yk6{^X+2>m~BCvoUYPZCqyfy|MVC3z|S5?+pM_&KE5 +z8)O=Wr{wejc05=OMcSi$15?cn`m$=F+62eP5KVLJTAHE$tg5G)M_;Gh)L3j28HW>+ +z#jL>sPsjmu#t)NivDao2&C!G461fYf$Rd>++}$c_0oj3w$&*1E_u}ucKV-zzo#eAb +z`NUbcNn-Ke62B(jpd&t&+b25n^KjNt4Z0fx2cy1qNn{R>t +zM8AM(19QsHQjl8+cUrIL$8}6R +z!0BM0aG&V@c;ghwzU0qHe-NGNH|lI{ZG8}PySnhiNbtopF%LF1GQQTg)2(4{t7W<- +zHIwklQ>40L4Ph`yy4mo~#Hpi!_~XkoZ-bPM*Q)nMF!PT?1UcfQg8uN!Ej_l55! +z$VDPnGMSSx2)pD)R6b4sxA8jsi3xibXH~d{y1RBe=Q#Y>X}lH2+RoZ>U?KM^1!6}& +z4zpa*8AbCA +zbj8~`3gCh|;CO1EZ#!*SXo|uF^-495w9D)GTHt7eX!|e~tn7d2W#E=74!TwWr5glTA)XC7lqI5^i7*d;GyEyRuVgL|ygW$%dn4NtTk)cZ+?yqvF% +zoYtV2E>a?NC~z6>s~mrsK;z(D>@+sT*Cl&r>SH6Fjd)GXQ3n{K{)M3fxOW3wTHjbs +zqsF~w9A|i^tDyZsGexzDdPG!Iwn}ZW!J!$y9!@S5+*}>GlQ<(;{y$-s*j%FIy>bKP +zAnxl*aC%vYJIZLJE5^wmrLNLlc)w`zCLCZdg(~6!);aG36c(8G5sFxYt1dyJjz1Ml-}{J*ej_~iO#VZ5i%Trm&_d;5Ud;;9j+AZ +z5`UFEnR&@qk=K$Y^;qoz!(sDK+i6sM6ikrivtGk>w#K!?QODNTT*0uL;o$P>D{f;Q +zsmrlDaCuhsZ}x71J8f`51@BbfcY*Dp0ntf`d+8oLC*_f)k<;2@7-4>7y=8ChYzi0K +zHkZjII40N^S(}-U88TXjrX*d1=qnxI>#@dkcJe@cW$YQ;Zfm02*xgt`yh-w5YI$Zb +zdOj5;341eJP`i=+zOJ5$eqtr2JQLO|)Ntx{>Ri=XI!R?y)5*7(FKFPPI;%WX^zhBy +zAv%)J$)BkZH4rX38BRI{Zn`GeUU!Q8mzby2kZ*|Hgty#ywnPToOOvIN8xw=!w~HkH +zOFmAu&S*K4&{jICG@u@LwiDQ +zEqu=GNN$L|4=)Jj`78Pw!@XD98}YXFR}20Y?ib5V((FI~>+(`FYxNOR#Jb4wH*)#k +z!R5Cvi^GlNh3zzGd1YLvBQ^c0Q*veDB5Z6IV;v){L-~QDa0Ax$U+~`uv-o#dtphu`)tD7@<+8esN`VEE(a4q&QrVMoq<@M*a7RICgNX +zGhX<}4oO>*!I(KZAC$-zxEp^B)(-U#%Mn9-da@}piz}rB(O-3eQ5me}`_@{HsvwOw +z!3FukQw;WY-m%m60i01MEw)q>PU$=DM5<5x`^bUd9Jn`6!Y$dfz*|tl_r_l|bTx7p +zJ>MO$6NicUsw7j+pfl%MH`!}rqwyQ~Dt~c}a*FoiwvXn%#tpionv?Wd;<=P1{K_^< +zw@)67PmXQJjO6R+s%ZOIkNCbs{gjY?%3kJ=itFVegq>POKT^F_@72`Cyk!M^nmQ&& +z^H}XrH&zYBH+B#EmX=~K&^sD4UXSj~39hW2R@98DmN=fX`|$@|pn@xKm~ +z#hX2y=$lda3-SuQXX3i9rXg03qq9r*e{H8mPj^>2$2{v?(>MCV8aq8ixhedB)IjC< +z`pC4T(J +zNwogR=iW!9?L}hpwKNc(xjpzMCxJ6gh*PmE%!y2IXL3Eo(!G%h)@keMn&}G}4ub5| +z7>^m8hNAj=+B!^6bptw1%$I3#2B*pFPcDjYjT$2lLUd?b@MN%ks7LsD6UCmydb}pUBqMD +z3fEN;^+U}>c!o3Z4KHT2%#WJ&>WiumsA{TEL$UX;CUG0D@NsYz|AQRWkHj-%C*d%L +zWxEL75gp4WbcULN{l@~qBhUN0)JXimFX0-nCfK?wrgGs%E|(mdBvV1`_dd!l!gj`I +za((g`T?<}I(oo6du0)R2I(ehIv{hhS!~KFDL*)ob)f|y +zjc>r+T-$ri>-Vh=oDKaL{V8!e-G#TvFUT!$dHn}l_GWv+dD(5oOzb`ElD$0_(DTi* +zl{0_T|HNFPUBnnM$ZkmG#bc2pp=e;AKju4w4T&MRJehE{=$`n`sV;0cVW9jY*;p0P +z^wLc=G%#&3ueW>&U$w(J)-u_gZQ5Zd&{0~A28~(DO(0E=P4_0g2seVI*r%CbrZ#(o +z?a7tkIqd(sB>p9hk;|dmQ}zFvv%evpDnB9DH(2(G7{>_+ED(gURCMs$G96N76SZT1L^{C! +zoeU;m|LzgakNl3@>Cfr5+%WN=Vx)i4?ADzJCsNE_51A@6T;iua-+C$`l{X5u?04|x +z)0#HaZ235E$>b$QL^p;SqQcgCo5D{%yI`i*;4d896kZa$oNSC-T;SwEiH8R_bu(2zOSvBAr%Nk`3u&s;yC#tQ4J|Si*}$s*Ero=+B(kGA1?ZceZKuKTYKw#b2sBn +zT|)Dk-T*ssl-rwL2~On8usYZY+|o$+?azBJ;XN}j6o@>Jf05qB^^wY9`^Q?if!bI~ +zgA<$Pe(O05U;gT>?VfV((#~DjNVnXOrJbz0Ocat9!YyY`w2!7kuHX^>3;6f1fLpo} +zm>OCgVd7^n)i}c6ke-6f$<^3&Z44DLLq2U80-yghYtTYi&YS8RXTj#RQZrjMh8jn# +zl%I>(!^JCX9ri!$2AGjKm8r(wWq;?!^8JM_Vk4=9>_eUM1$GLY$8LeE*fG!o^!qR+ +zD36k{1sXdDDq$DFchVl|EBT{*Ub#qoCQHzRRsX0Xnxfi@I)nb0z8v-$R5BdVM|4lM +zU`pEtW5M)_z89+d=*+6`Z2saGB7qjL8tGruLKufA1Bn3 +zwvdrCFR`6)Oaav~5&ISzdfK{gf(-6p9g1B39*szSt&9}%Gxd{Xtax}=VBi05f5UFy +z)_@%w>53+oXQ~SC_usAw&Kve)*0$!=hTYl?>N&7W +zP5|rU&fH6WjCYTH9i4&w65mChMovdlu}O)Vsp6UPTm#{I%xGF6YqwFAQX82!%y8_g +zIF6kacI^b_pyocjhdw%m&4;zg*&yGiV9$ja`!2p!=ApLfO56kQa1mQ%Ct)wf0p!-2 +zAsbYh?1Fr1GubIU7FO{;aFyBOnL6o3DM#uN6)ZL)jpTzGNtjDL*pZ){t* +z;N69ek0~@g(lx#)MR9w@(L`;PpBar8`(|57XGQlOknfqS6IlhYOXfLi;6|!#ysoXH +zo=jep%JE0jixLN-4e@5b=)Z;iB(r_xk*kgc#qc0ZvB`{;uO_u7+R~*pXJM>0nRb|; +zTGnIV$!qHXXUHY5Lo`yV?azQe9G&h21*8OErbZ?BaC)ce&wX2|DB3#jQ)h9ArcYfXpNH2@nDXM5^;2DvF$5yuH@&~#qk +ziP-~}S7~u1`yrW!nV~00`Nw(3VZY5c1wuh5U$wxJP?zWg>`0x$SCc=Hi`AsAwy~&X +ht!+CtF4e-moGosR+vn`!=x7U?>l?q*HPw7U|3AxvhmimP + +literal 0 +HcmV?d00001 + + +From a057d0d108dbee254bd12e28766ac6a8403e5b21 Mon Sep 17 00:00:00 2001 +From: juha-h +Date: Mon, 15 Jun 2020 14:24:43 +0300 +Subject: [PATCH 45/60] Added call_state() API function that returns enum state + of the call. (#1013) + +* Added call_state() API function that returs state of the call. +Exposed enum state. + +* Added call_ prefix to call state enum type name and STATE_ prefix to call +state constants. +--- + include/baresip.h | 13 ++++++++ + src/call.c | 80 +++++++++++++++++++++++++---------------------- + 2 files changed, 56 insertions(+), 37 deletions(-) + +diff --git a/include/baresip.h b/include/baresip.h +index d8d325fd..428a3bfa 100644 +--- a/include/baresip.h ++++ b/include/baresip.h +@@ -149,6 +149,18 @@ enum call_event { + CALL_EVENT_MENC, + }; + ++/** Call States */ ++enum call_state { ++ CALL_STATE_IDLE = 0, ++ CALL_STATE_INCOMING, ++ CALL_STATE_OUTGOING, ++ CALL_STATE_RINGING, ++ CALL_STATE_EARLY, ++ CALL_STATE_ESTABLISHED, ++ CALL_STATE_TERMINATED, ++ CALL_STATE_UNKNOWN ++}; ++ + /** Video mode */ + enum vidmode { + VIDMODE_OFF = 0, /**< Video disabled */ +@@ -178,6 +190,7 @@ int call_notify_sipfrag(struct call *call, uint16_t scode, + void call_set_handlers(struct call *call, call_event_h *eh, + call_dtmf_h *dtmfh, void *arg); + uint16_t call_scode(const struct call *call); ++enum call_state call_state(const struct call *call); + uint32_t call_duration(const struct call *call); + uint32_t call_setup_duration(const struct call *call); + const char *call_id(const struct call *call); +diff --git a/src/call.c b/src/call.c +index a4d59a82..a69f8da7 100644 +--- a/src/call.c ++++ b/src/call.c +@@ -22,17 +22,6 @@ + for (le = call->streaml.head; le; le = le->next) + + +-/** Call States */ +-enum state { +- STATE_IDLE = 0, +- STATE_INCOMING, +- STATE_OUTGOING, +- STATE_RINGING, +- STATE_EARLY, +- STATE_ESTABLISHED, +- STATE_TERMINATED +-}; +- + /** SIP Call Control object */ + struct call { + MAGIC_DECL /**< Magic number for debugging */ +@@ -47,7 +36,7 @@ struct call { + struct audio *audio; /**< Audio stream */ + struct video *video; /**< Video stream */ + struct media_ctx *ctx; /**< Shared A/V source media context */ +- enum state state; /**< Call state */ ++ enum call_state state; /**< Call state */ + char *local_uri; /**< Local SIP uri */ + char *local_name; /**< Local display name */ + char *peer_uri; /**< Peer SIP Address */ +@@ -82,23 +71,24 @@ struct call { + static int send_invite(struct call *call); + + +-static const char *state_name(enum state st) ++static const char *state_name(enum call_state st) + { + switch (st) { + +- case STATE_IDLE: return "IDLE"; +- case STATE_INCOMING: return "INCOMING"; +- case STATE_OUTGOING: return "OUTGOING"; +- case STATE_RINGING: return "RINGING"; +- case STATE_EARLY: return "EARLY"; +- case STATE_ESTABLISHED: return "ESTABLISHED"; +- case STATE_TERMINATED: return "TERMINATED"; ++ case CALL_STATE_IDLE: return "IDLE"; ++ case CALL_STATE_INCOMING: return "INCOMING"; ++ case CALL_STATE_OUTGOING: return "OUTGOING"; ++ case CALL_STATE_RINGING: return "RINGING"; ++ case CALL_STATE_EARLY: return "EARLY"; ++ case CALL_STATE_ESTABLISHED: return "ESTABLISHED"; ++ case CALL_STATE_TERMINATED: return "TERMINATED"; ++ case CALL_STATE_UNKNOWN: return "UNKNOWN"; + default: return "???"; + } + } + + +-static void set_state(struct call *call, enum state st) ++static void set_state(struct call *call, enum call_state st) + { + call->state = st; + } +@@ -318,11 +308,11 @@ static void mnat_handler(int err, uint16_t scode, const char *reason, + + switch (call->state) { + +- case STATE_OUTGOING: ++ case CALL_STATE_OUTGOING: + (void)send_invite(call); + break; + +- case STATE_INCOMING: ++ case CALL_STATE_INCOMING: + call_event_handler(call, CALL_EVENT_INCOMING, call->peer_uri); + break; + +@@ -442,7 +432,7 @@ static void call_destructor(void *arg) + { + struct call *call = arg; + +- if (call->state != STATE_IDLE) ++ if (call->state != CALL_STATE_IDLE) + print_summary(call); + + call_stream_stop(call); +@@ -657,7 +647,7 @@ static void stream_error_handler(struct stream *strm, int err, void *arg) + sdp_media_name(stream_sdpmedia(strm)), err); + + call->scode = 701; +- set_state(call, STATE_TERMINATED); ++ set_state(call, CALL_STATE_TERMINATED); + + call_stream_stop(call); + call_event_handler(call, CALL_EVENT_CLOSED, "rtp stream error"); +@@ -738,7 +728,7 @@ int call_alloc(struct call **callp, const struct config *cfg, struct list *lst, + + call->acc = mem_ref(acc); + call->ua = ua; +- call->state = STATE_IDLE; ++ call->state = CALL_STATE_IDLE; + call->eh = eh; + call->arg = arg; + call->af = prm->af; +@@ -948,7 +938,7 @@ int call_connect(struct call *call, const struct pl *paddr) + if (err) + return err; + +- set_state(call, STATE_OUTGOING); ++ set_state(call, CALL_STATE_OUTGOING); + + /* If we are using asyncronous medianat like STUN/TURN, then + * wait until completed before sending the INVITE */ +@@ -1003,7 +993,7 @@ void call_hangup(struct call *call, uint16_t scode, const char *reason) + + switch (call->state) { + +- case STATE_INCOMING: ++ case CALL_STATE_INCOMING: + if (scode < 400) { + scode = 486; + reason = "Rejected"; +@@ -1022,7 +1012,7 @@ void call_hangup(struct call *call, uint16_t scode, const char *reason) + break; + } + +- set_state(call, STATE_TERMINATED); ++ set_state(call, CALL_STATE_TERMINATED); + + call_stream_stop(call); + } +@@ -1079,7 +1069,7 @@ int call_answer(struct call *call, uint16_t scode, enum vidmode vmode) + if (!call || !call->sess) + return EINVAL; + +- if (STATE_INCOMING != call->state) { ++ if (CALL_STATE_INCOMING != call->state) { + info("call: answer: call is not in incoming state (%s)\n", + state_name(call->state)); + return 0; +@@ -1300,8 +1290,8 @@ int call_status(struct re_printf *pf, const struct call *call) + + switch (call->state) { + +- case STATE_EARLY: +- case STATE_ESTABLISHED: ++ case CALL_STATE_EARLY: ++ case CALL_STATE_ESTABLISHED: + break; + default: + return 0; +@@ -1464,10 +1454,10 @@ static void sipsess_estab_handler(const struct sip_msg *msg, void *arg) + + MAGIC_CHECK(call); + +- if (call->state == STATE_ESTABLISHED) ++ if (call->state == CALL_STATE_ESTABLISHED) + return; + +- set_state(call, STATE_ESTABLISHED); ++ set_state(call, CALL_STATE_ESTABLISHED); + + call_stream_start(call, true); + +@@ -1767,7 +1757,7 @@ int call_accept(struct call *call, struct sipsess_sock *sess_sock, + if (err) + return err; + +- set_state(call, STATE_INCOMING); ++ set_state(call, CALL_STATE_INCOMING); + + /* New call */ + if (call->config_call.local_timeout) { +@@ -1819,11 +1809,11 @@ static void sipsess_progr_handler(const struct sip_msg *msg, void *arg) + switch (msg->scode) { + + case 180: +- set_state(call, STATE_RINGING); ++ set_state(call, CALL_STATE_RINGING); + break; + + case 183: +- set_state(call, STATE_EARLY); ++ set_state(call, CALL_STATE_EARLY); + break; + } + +@@ -2165,6 +2155,22 @@ uint16_t call_scode(const struct call *call) + } + + ++/** ++ * Get state of the call ++ * ++ * @param call Call object ++ * ++ * @return Call state or CALL_STATE_UNKNOWN if call object is NULL ++ */ ++enum call_state call_state(const struct call *call) ++{ ++ if (!call) ++ return CALL_STATE_UNKNOWN; ++ ++ return call->state; ++} ++ ++ + /** + * Set the callback handlers for a call object + * + +From f4cac831047bedd43c8f22f6a58a2feae25c7225 Mon Sep 17 00:00:00 2001 +From: Juha Heinanen +Date: Mon, 15 Jun 2020 16:16:51 +0300 +Subject: [PATCH 46/60] Added account_set_stun_user() and + account_set_stun_pass() API functions. + +--- + include/baresip.h | 2 ++ + src/account.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 46 insertions(+) + +diff --git a/include/baresip.h b/include/baresip.h +index d8d325fd..5bf52dcf 100644 +--- a/include/baresip.h ++++ b/include/baresip.h +@@ -70,6 +70,8 @@ int account_set_display_name(struct account *acc, const char *dname); + int account_set_regint(struct account *acc, uint32_t regint); + int account_set_stun_host(struct account *acc, const char *host); + int account_set_stun_port(struct account *acc, uint16_t port); ++int account_set_stun_user(struct account *acc, const char *user); ++int account_set_stun_pass(struct account *acc, const char *pass); + int account_set_mediaenc(struct account *acc, const char *mediaenc); + int account_set_medianat(struct account *acc, const char *medianat); + int account_set_audio_codecs(struct account *acc, const char *codecs); +diff --git a/src/account.c b/src/account.c +index 6a922229..067e75a9 100644 +--- a/src/account.c ++++ b/src/account.c +@@ -615,6 +615,50 @@ int account_set_stun_port(struct account *acc, uint16_t port) + } + + ++/** ++ * Set the STUN user for a SIP account ++ * ++ * @param acc User-Agent account ++ * @param user STUN username (NULL to reset) ++ * ++ * @return 0 if success, otherwise errorcode ++ */ ++int account_set_stun_user(struct account *acc, const char *user) ++{ ++ if (!acc) ++ return EINVAL; ++ ++ acc->stun_user = mem_deref(acc->stun_user); ++ ++ if (user) ++ return str_dup(&acc->stun_user, user); ++ ++ return 0; ++} ++ ++ ++/** ++ * Set the STUN password for a SIP account ++ * ++ * @param acc User-Agent account ++ * @param pass STUN password (NULL to reset) ++ * ++ * @return 0 if success, otherwise errorcode ++ */ ++int account_set_stun_pass(struct account *acc, const char *pass) ++{ ++ if (!acc) ++ return EINVAL; ++ ++ acc->stun_pass = mem_deref(acc->stun_pass); ++ ++ if (pass) ++ return str_dup(&acc->stun_pass, pass); ++ ++ return 0; ++} ++ ++ + /** + * Set the media encryption for a SIP account + * + +From 91469480ed77c438fcc457597d56d50a69c35697 Mon Sep 17 00:00:00 2001 +From: Christian Spielberger +Date: Tue, 16 Jun 2020 08:39:58 +0200 +Subject: [PATCH 47/60] pulse: drain pulse buffers before freeing + +The call to pa_simple_free in the auplay_destructor() sometimes crashed with a +segfault when it comes to quick after the last call to pa_simple_write(). This +occurs with libpulse 11.1.0. +--- + modules/pulse/player.c | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +diff --git a/modules/pulse/player.c b/modules/pulse/player.c +index 5145a12f..cf895f1c 100644 +--- a/modules/pulse/player.c ++++ b/modules/pulse/player.c +@@ -29,6 +29,8 @@ struct auplay_st { + static void auplay_destructor(void *arg) + { + struct auplay_st *st = arg; ++ int pa_error = 0; ++ int pa_ret; + + /* Wait for termination of other thread */ + if (st->run) { +@@ -37,8 +39,14 @@ static void auplay_destructor(void *arg) + (void)pthread_join(st->thread, NULL); + } + +- if (st->s) ++ if (st->s) { ++ pa_ret = pa_simple_drain(st->s, &pa_error); ++ if (pa_ret < 0) ++ warning("pulse: pa_simple_drain error (%s)\n", ++ pa_strerror(pa_error)); ++ + pa_simple_free(st->s); ++ } + + mem_deref(st->sampv); + } + +From 3066811dd63c0d26fa8888dc171a6a61f2ea0061 Mon Sep 17 00:00:00 2001 +From: Juha Heinanen +Date: Fri, 19 Jun 2020 11:57:06 +0300 +Subject: [PATCH 48/60] Added new API functions account_stun_uri and + account_set_stun_uri. + +--- + include/baresip.h | 2 ++ + src/account.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 49 insertions(+) + +diff --git a/include/baresip.h b/include/baresip.h +index e54dcefe..c5fea517 100644 +--- a/include/baresip.h ++++ b/include/baresip.h +@@ -68,6 +68,7 @@ int account_set_sipnat(struct account *acc, const char *sipnat); + int account_set_answermode(struct account *acc, enum answermode mode); + int account_set_display_name(struct account *acc, const char *dname); + int account_set_regint(struct account *acc, uint32_t regint); ++int account_set_stun_uri(struct account *acc, const char *uri); + int account_set_stun_host(struct account *acc, const char *host); + int account_set_stun_port(struct account *acc, uint16_t port); + int account_set_stun_user(struct account *acc, const char *user); +@@ -97,6 +98,7 @@ const char *account_sipnat(const struct account *acc); + const char *account_stun_user(const struct account *acc); + const char *account_stun_pass(const struct account *acc); + const char *account_stun_host(const struct account *acc); ++const struct stun_uri *account_stun_uri(const struct account *acc); + uint16_t account_stun_port(const struct account *acc); + const char *account_mediaenc(const struct account *acc); + const char *account_medianat(const struct account *acc); +diff --git a/src/account.c b/src/account.c +index 067e75a9..45e05abf 100644 +--- a/src/account.c ++++ b/src/account.c +@@ -575,6 +575,37 @@ int account_set_regint(struct account *acc, uint32_t regint) + } + + ++/** ++ * Set the STUN server URI for a SIP account ++ * ++ * @param acc User-Agent account ++ * @param uri STUN server URI (NULL to reset) ++ * ++ * @return 0 if success, otherwise errorcode ++ */ ++int account_set_stun_uri(struct account *acc, const char *uri) ++{ ++ struct pl pl; ++ int err; ++ ++ if (!acc) ++ return EINVAL; ++ ++ acc->stun_host = mem_deref(acc->stun_host); ++ ++ if (!uri) ++ return 0; ++ ++ pl_set_str(&pl, uri); ++ err = stunuri_decode(&acc->stun_host, &pl); ++ if (err) ++ warning("account: decode '%r' failed: %m\n", ++ &pl, err); ++ ++ return err; ++} ++ ++ + /** + * Set the stun host for a SIP account + * +@@ -1134,6 +1165,22 @@ const char *account_stun_pass(const struct account *acc) + } + + ++/** ++ * Get the STUN server URI of an account ++ * ++ * @param acc User-Agent account ++ * ++ * @return STUN server URI ++ */ ++const struct stun_uri *account_stun_uri(const struct account *acc) ++{ ++ if (!acc) ++ return NULL; ++ ++ return acc->stun_host ? acc->stun_host : NULL; ++} ++ ++ + /** + * Get the STUN hostname of an account + * + +From ba5f2b1f4ad7e09689d5e0c356a31cf79914cd24 Mon Sep 17 00:00:00 2001 +From: Sebastian Reimers +Date: Sun, 21 Jun 2020 13:42:34 +0200 +Subject: [PATCH 49/60] add ausine module + +Audio sine wave input module +--- + README.md | 1 + + mk/modules.mk | 2 +- + modules/ausine/ausine.c | 209 +++++++++++++++++++++++++++++++++++++++ + modules/ausine/module.mk | 11 +++ + src/config.c | 1 + + 5 files changed, 223 insertions(+), 1 deletion(-) + create mode 100644 modules/ausine/ausine.c + create mode 100644 modules/ausine/module.mk + +diff --git a/README.md b/README.md +index 378efb83..6d16d058 100644 +--- a/README.md ++++ b/README.md +@@ -228,6 +228,7 @@ aubridge Audio bridge module + audiounit AudioUnit audio driver for MacOSX/iOS + aufile Audio module for using a WAV-file as audio input + auloop Audio-loop test module ++ausine Audio sine wave input module + avcapture Video source using iOS AVFoundation video capture + avcodec Video codec using FFmpeg/libav libavcodec + avformat Video source using FFmpeg/libav libavformat +diff --git a/mk/modules.mk b/mk/modules.mk +index e35bb801..202c1265 100644 +--- a/mk/modules.mk ++++ b/mk/modules.mk +@@ -291,7 +291,7 @@ MODULES += vidloop + MODULES += vumeter + + ifneq ($(HAVE_PTHREAD),) +-MODULES += aubridge aufile ++MODULES += aubridge aufile ausine + endif + + endif +diff --git a/modules/ausine/ausine.c b/modules/ausine/ausine.c +new file mode 100644 +index 00000000..222c6416 +--- /dev/null ++++ b/modules/ausine/ausine.c +@@ -0,0 +1,209 @@ ++/** ++ * @file ausine.c sine Audio Source ++ * ++ * Copyright (C) 2020 Creytiv.com ++ */ ++#define _DEFAULT_SOURCE 1 ++#define _BSD_SOURCE 1 ++#include ++#include ++#include ++#include ++#include ++#include ++#define SCALE (32767) ++ ++ ++/** ++ * @defgroup ausine ausine ++ * ++ * Audio module generating sine wave as audio input ++ * ++ * Sample config: ++ * ++ \verbatim ++ audio_source ausine,400 ++ \endverbatim ++ */ ++ ++static const double PI = 3.14159265358979323846264338328; ++ ++struct ausrc_st { ++ const struct ausrc *as; /* base class */ ++ ++ uint32_t ptime; ++ size_t sampc; ++ bool run; ++ pthread_t thread; ++ ausrc_read_h *rh; ++ ausrc_error_h *errh; ++ void *arg; ++ int freq; ++ double sec_offset; ++}; ++ ++ ++static struct ausrc *ausrc; ++ ++ ++static void destructor(void *arg) ++{ ++ struct ausrc_st *st = arg; ++ ++ if (st->run) { ++ st->run = false; ++ pthread_join(st->thread, NULL); ++ } ++} ++ ++ ++static void *play_thread(void *arg) ++{ ++ uint64_t now, ts = tmr_jiffies(); ++ struct ausrc_st *st = arg; ++ int16_t *sampv; ++ double sample, rad_per_sec; ++ double sec_per_frame = 1.0 / 48000; ++ int inc; ++ size_t frames; ++ ++ sampv = mem_alloc(st->sampc * sizeof(int16_t), NULL); ++ if (!sampv) ++ return NULL; ++ ++ while (st->run) { ++ ++ struct auframe af = { ++ .fmt = AUFMT_S16LE, ++ .sampv = sampv, ++ .sampc = st->sampc, ++ .timestamp = ts * 1000 ++ }; ++ ++ sys_msleep(4); ++ ++ now = tmr_jiffies(); ++ ++ if (ts > now) ++ continue; ++ ++ inc = 0; ++ rad_per_sec = st->freq * 2.0 * PI; ++ frames = st->sampc / 2; ++ ++ for (size_t frame = 0; frame < frames; frame += 1) { ++ sample = sin((st->sec_offset + frame * sec_per_frame) ++ * rad_per_sec); ++ sampv[inc] = (int16_t)(SCALE * 50 / 100.0f * sample); ++ sampv[inc+1] = (int16_t)(SCALE * 50 / 100.0f * sample); ++ inc += 2; ++ } ++ ++ st->sec_offset = fmod(st->sec_offset + sec_per_frame * frames, ++ 1.0); ++ ++ st->rh(&af, st->arg); ++ ++ ts += st->ptime; ++ } ++ ++ mem_deref(sampv); ++ ++ return NULL; ++} ++ ++ ++static int alloc_handler(struct ausrc_st **stp, const struct ausrc *as, ++ struct media_ctx **ctx, ++ struct ausrc_prm *prm, const char *dev, ++ ausrc_read_h *rh, ausrc_error_h *errh, void *arg) ++{ ++ struct ausrc_st *st; ++ int err; ++ (void)ctx; ++ ++ if (!stp || !as || !prm || !rh || !dev) ++ return EINVAL; ++ ++ if (prm->fmt != AUFMT_S16LE) { ++ warning("ausine: unsupported sample format (%s)\n", ++ aufmt_name(prm->fmt)); ++ return ENOTSUP; ++ } ++ ++ if (prm->srate != 48000) { ++ warning("ausine: supports only 48kHz samplerate"); ++ return ENOTSUP; ++ } ++ ++ if (prm->ch != 2) { ++ warning("ausine: supports only 2 channels"); ++ return ENOTSUP; ++ } ++ ++ st = mem_zalloc(sizeof(*st), destructor); ++ if (!st) ++ return ENOMEM; ++ ++ st->as = as; ++ st->rh = rh; ++ st->errh = errh; ++ st->arg = arg; ++ st->sec_offset = 0.0; ++ ++ st->freq = atoi(dev); ++ ++ if (st->freq < 10 || st->freq > 20000) ++ { ++ err = ENOTSUP; ++ goto out; ++ } ++ ++ info("ausine: %u Hz, %d channels, frequency %d Hz\n", ++ prm->srate, prm->ch, st->freq); ++ ++ st->sampc = prm->srate * prm->ch * prm->ptime / 1000; ++ ++ st->ptime = prm->ptime; ++ ++ info("ausine: audio ptime=%u sampc=%zu\n", ++ st->ptime, st->sampc); ++ ++ st->run = true; ++ err = pthread_create(&st->thread, NULL, play_thread, st); ++ if (err) { ++ st->run = false; ++ goto out; ++ } ++ ++ out: ++ if (err) ++ mem_deref(st); ++ else ++ *stp = st; ++ ++ return err; ++} ++ ++ ++static int module_init(void) ++{ ++ return ausrc_register(&ausrc, baresip_ausrcl(), ++ "ausine", alloc_handler); ++} ++ ++ ++static int module_close(void) ++{ ++ ausrc = mem_deref(ausrc); ++ ++ return 0; ++} ++ ++ ++EXPORT_SYM const struct mod_export DECL_EXPORTS(ausine) = { ++ "ausine", ++ "ausrc", ++ module_init, ++ module_close ++}; +diff --git a/modules/ausine/module.mk b/modules/ausine/module.mk +new file mode 100644 +index 00000000..a224d8ee +--- /dev/null ++++ b/modules/ausine/module.mk +@@ -0,0 +1,11 @@ ++# ++# module.mk ++# ++# Copyright (C) 2010 Creytiv.com ++# ++ ++MOD := ausine ++$(MOD)_SRCS += ausine.c ++$(MOD)_LFLAGS += ++ ++include mk/mod.mk +diff --git a/src/config.c b/src/config.c +index cd61c558..a6f0225d 100644 +--- a/src/config.c ++++ b/src/config.c +@@ -793,6 +793,7 @@ int config_write_template(const char *file, const struct config *cfg) + (void)re_fprintf(f, "#module\t\t\t" "portaudio" MOD_EXT "\n"); + (void)re_fprintf(f, "#module\t\t\t" "aubridge" MOD_EXT "\n"); + (void)re_fprintf(f, "#module\t\t\t" "aufile" MOD_EXT "\n"); ++ (void)re_fprintf(f, "#module\t\t\t" "ausine" MOD_EXT "\n"); + + + (void)re_fprintf(f, "\n# Video codec Modules (in order)\n"); + +From cc3d1fdca3abef8141e26eb468228a1cba690eaf Mon Sep 17 00:00:00 2001 +From: Sebastian Reimers +Date: Sun, 21 Jun 2020 14:00:03 +0200 +Subject: [PATCH 50/60] ausine: add frequency warning + +--- + modules/ausine/ausine.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/modules/ausine/ausine.c b/modules/ausine/ausine.c +index 222c6416..184a378b 100644 +--- a/modules/ausine/ausine.c ++++ b/modules/ausine/ausine.c +@@ -155,6 +155,7 @@ static int alloc_handler(struct ausrc_st **stp, const struct ausrc *as, + + if (st->freq < 10 || st->freq > 20000) + { ++ warning("ausine: frequency must be between 10 and 20000 Hz\n"); + err = ENOTSUP; + goto out; + } + +From 1f7e52d0164594b4c580efacfe29d2482806ade5 Mon Sep 17 00:00:00 2001 +From: Sebastian Reimers +Date: Mon, 22 Jun 2020 12:52:17 +0200 +Subject: [PATCH 51/60] Add "make ccheck" + +--- + .travis.yml | 3 +- + Makefile | 2 +- + test/ccheck.py | 435 +++++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 437 insertions(+), 3 deletions(-) + create mode 100755 test/ccheck.py + +diff --git a/.travis.yml b/.travis.yml +index b08b6e19..5f371a42 100644 +--- a/.travis.yml ++++ b/.travis.yml +@@ -40,11 +40,10 @@ addons: + install: + - git clone https://github.com/creytiv/re.git + - git clone https://github.com/creytiv/rem.git +- - curl -OL 'https://github.com/alfredh/pytools/raw/master/ccheck.py' + - for p in ${LIBRE} ${LIBREM}; do cd $p && sudo PATH="$PATH" make install && cd - && sudo rm -Rf $p; done + - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo ldconfig; fi + + script: + - make V=1 CCACHE= EXTRA_CFLAGS=-Werror info test modules + - make clean; make CCACHE= STATIC=yes +- - python2 ccheck.py ++ - make ccheck +diff --git a/Makefile b/Makefile +index e17ecdbf..a8192b53 100644 +--- a/Makefile ++++ b/Makefile +@@ -301,7 +301,7 @@ clean: + + .PHONY: ccheck + ccheck: +- @ccheck.pl > /dev/null ++ @test/ccheck.py + + version: + @perl -pi -e 's/BARESIP_VERSION.*/BARESIP_VERSION \"$(VERSION)"/' \ +diff --git a/test/ccheck.py b/test/ccheck.py +new file mode 100755 +index 00000000..79ed25b3 +--- /dev/null ++++ b/test/ccheck.py +@@ -0,0 +1,435 @@ ++#! /usr/bin/env python3 ++# ++# ccheck.py Code Checker ++# ++# Copyright (C) 2005 - 2012 Alfred E. Heggestad ++# Copyright (C) 2010 - 2012 Creytiv.com ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License version 2 as ++# published by the Free Software Foundation. ++# ++# Contributors: ++# ++# Haavard Wik Thorkildssen ++# Mal Minhas ++# Sebastian Reimers ++# ++# ++# TODO: ++# - optimize regex functions ++# - count max y lines ++# ++ ++import sys, os, re, fnmatch, getopt ++ ++PROGRAM = 'ccheck' ++VERSION = '0.2.0' ++AUTHOR = 'Alfred E. Heggestad' ++ ++ ++### ++### Class definition ++### ++ ++class ccheck: ++ ++ def __init__(self): ++ self.errors = 0 ++ self.cur_filename = '' ++ self.cur_lineno = 0 ++ self.empty_lines_count = 0 ++ self.cc_count = 0 ++ self.files = {} ++ self.extensions = ['c', 'cpp', 'h', 'mk', 'm4', 'py', 'm', 's', 'java', ++ 'php'] ++ ++ self.operators = ["do", "if", "for", "while", "switch"] ++ self.re_tab = re.compile('(\w+\W*)\(') ++ self.re_else = re.compile('\s*\}\s*else') ++ self.re_inc = re.compile('(^\s+\w+[+-]{2};)') ++ self.re_hex = re.compile('0x([0-9A-Fa-f]+)') ++ ++ # empty dict ++ for e in self.extensions: ++ self.files[e] = [] ++ ++ # todo: global config ++ self.common_checks = [self.check_whitespace, self.check_termination, ++ self.check_hex_lowercase, self.check_pre_incr, ++ self.check_file_unix] ++ self.funcmap = { ++ 'c': [self.check_brackets, self.check_c_preprocessor, ++ self.check_indent_tab], ++ 'h': [self.check_brackets, self.check_indent_tab], ++ 'cpp': [self.check_brackets, self.check_indent_tab], ++ 'mk': [self.check_indent_tab], ++ 'm4': [self.check_brackets, self.check_c_comments, ++ self.check_indent_tab], ++ 'py': [self.check_brackets, self.check_indent_space], ++ 'm': [self.check_brackets, self.check_c_preprocessor, ++ self.check_indent_tab], ++ 's': [self.check_indent_tab, self.check_c_preprocessor], ++ 'java': [self.check_brackets, self.check_indent_tab], ++ 'php': [self.check_brackets, self.check_indent_tab], ++ } ++ self.extmap = { ++ 'c': ['*.c'], ++ 'h': ['*.h'], ++ 'cpp': ['*.cpp', '*.cc'], ++ 'mk': ['*Makefile', '*.mk'], ++ 'm4': ['*.m4'], ++ 'py': ['*.py'], ++ 'm': ['*.m'], ++ 's': ['*.s', '*.S'], ++ 'java': ['*.java'], ++ 'php': ['*.php'], ++ } ++ self.maxsize = { ++ 'c': (79, 3000), ++ 'h': (79, 1000), ++ 'cpp': (79, 3000), ++ 'mk': (79, 1000), ++ 'm4': (79, 3000), ++ 'py': (79, 3000), ++ 'm': (79, 3000), ++ 's': (79, 3000), ++ 'java': (179, 3000), ++ 'php': (179, 3000), ++ } ++ ++ ++ def __del__(self): ++ pass ++ ++ ++ # ++ # print an error message and increase error count ++ # ++ def error(self, msg): ++ print("%s:%d: %s" % \ ++ (self.cur_filename, self.cur_lineno, msg), file=sys.stderr) ++ self.errors += 1 ++ ++ ++ # ++ # print statistics ++ # ++ def print_stats(self): ++ print("Statistics:") ++ print("~~~~~~~~~~~") ++ print("Number of files processed: ", end=' ') ++ for e in self.extensions: ++ print(" %s: %d" % (e, len(self.files[e])), end=' ') ++ print("") ++ print("Number of lines with errors: %d" % self.errors) ++ print("") ++ ++ ++ # ++ # check for strange white space ++ # ++ def check_whitespace(self, line, len): ++ ++ if len > 0: ++ # general trailing whitespace check ++ if line[-1] == ' ': ++ self.error("has trailing space(s)") ++ ++ if line[-1] == '\t': ++ self.error("has trailing tab(s)") ++ ++ # check for empty lines count ++ if self.cur_lineno == 1: ++ self.empty_lines_count = 0 ++ if len == 0: ++ self.empty_lines_count += 1 ++ else: ++ self.empty_lines_count = 0 ++ if self.empty_lines_count > 2: ++ self.error("should have maximum two empty lines (%d)" % \ ++ self.empty_lines_count) ++ self.empty_lines_count = 0 ++ ++ ++ # ++ # check for strange white space ++ # ++ def check_indent_tab(self, line, len): ++ ++ # make sure TAB is used for indentation ++ for n in range(4, 17, 4): ++ if len > n and line[0:n] == ' '*n and line[n] != ' ': ++ self.error("starts with %d spaces, use tab instead" % n) ++ ++ ++ def check_indent_space(self, line, len): ++ ++ if len > 1 and line[0] == '\t': ++ self.error("starts with TAB, use 4 spaces instead") ++ ++ ++ # ++ # check for end of line termination issues ++ # ++ def check_termination(self, line, len): ++ ++ if len < 2: ++ return ++ ++ if line[-2:] == ';;': ++ self.error("has double semicolon") ++ ++ if line[-2:] == ' ;' and re.search('[\S]+[ \t]+;$', line): ++ self.error("has spaces before terminator") ++ ++ ++ # ++ # check for C++ comments ++ # ++ def check_c_preprocessor(self, line, len): ++ ++ index = line.find('//') ++ if index != -1 and line[index-1] != ':': ++ if not re.search('["]+.*//.*["]+', line): ++ self.error("C++ comment, use C comments /* ... */ instead") ++ ++ ++ # ++ # check that C comments are not used ++ # ++ def check_c_comments(self, line, len): ++ ++ if self.cur_lineno == 1: ++ self.cc_count = 0 ++ ++ cc = False ++ ++ if line.find('/*') != -1: ++ self.cc_count += 1 ++ ++ if line.find('*/') != -1: ++ if self.cc_count > 0: ++ cc = True ++ self.cc_count = 0 ++ ++ if cc: ++ self.error("C comment, use Perl-style comments # ... instead"); ++ ++ ++ # ++ # check max line length and number of lines ++ # ++ def check_xy_max(self, line, line_len, max_x): ++ ++ # expand TAB to 8 spaces ++ l = len(line.expandtabs()) ++ ++ if l > max_x: ++ self.error("line is too wide (" + str(l) + " - max " \ ++ + str(max_x) + ")"); ++ ++ # TODO: ++ # if ($line > $max_y) { ++ # self.error("is too big ($lines lines - max $max_y)\n"); ++ ++ ++ # ++ # check that hexadecimal numbers are lowercase ++ # ++ def check_hex_lowercase(self, line, len): ++ ++ m = self.re_hex.search(line) ++ if m: ++ a = m.group(1) ++ if re.search('[A-F]+', a): ++ self.error("0x%s should be lowercase" % a) ++ ++ ++ # ++ # check for correct brackets usage in C/C++ ++ # ++ # TODO: this is too slow, optimize ++ # ++ def check_brackets(self, line, len): ++ ++ m = self.re_tab.search(line) ++ if m: ++ keyword = m.group(1) ++ ++ if keyword.strip() in self.operators: ++ if not re.search('[ ]{1}', keyword): ++ self.error("no single space after operator '%s()'" \ ++ % keyword) ++ ++ # check that else statements do not have preceeding ++ # end-bracket on the same line ++ if self.re_else.search(line): ++ self.error("else: ending if bracket should be on previous line") ++ ++ ++ # ++ # check that file is in Unix format ++ # ++ def check_file_unix(self, line, len): ++ ++ if len < 1: ++ return ++ ++ if line[-1] == '\r': ++ self.error("not in Unix format"); ++ ++ ++ # ++ # check for post-increment/decrement ++ # ++ def check_pre_incr(self, line, len): ++ ++ m = self.re_inc.search(line) ++ if m: ++ op = m.group(1) ++ if op.find('++') != -1: ++ self.error("Use pre-increment: %s" % op); ++ else: ++ self.error("Use pre-decrement: %s" % op); ++ ++ ++ def process_line(self, line, funcs, ext): ++ ++ line = line.rstrip('\n') ++ line_len = len(line) ++ ++ for func in self.common_checks: ++ func(line, line_len) ++ ++ for func in funcs: ++ func(line, line_len) ++ ++ if ext in self.maxsize: ++ (x, y) = self.maxsize[ext]; ++ self.check_xy_max(line, line_len, x) ++ ++ ++ def parse_file(self, filename, ext): ++ ++ funcs = self.funcmap[ext] ++ ++ f = open(filename) ++ ++ self.cur_filename = filename ++ ++ while 1: ++ lines = f.readlines(100000) ++ if not lines: ++ break ++ self.cur_lineno = 0 ++ for line in lines: ++ self.cur_lineno += 1 ++ self.process_line(line, funcs, ext) ++ ++ ++ def parse_any_file(self, f): ++ for e in self.extensions: ++ em = self.extmap[e] ++ for m in em: ++ if fnmatch.fnmatch(f, m): ++ self.files[e].append(f) ++ self.parse_file(f, e) ++ return ++ print("unknown extension: " + f) ++ ++ ++ def rec_quasiglob(self, top, patterns, exclude): ++ for root, dirs, files in os.walk(top, topdown=False): ++ for f in files: ++ for pattern in patterns: ++ if fnmatch.fnmatch(f, pattern): ++ path = os.path.join(root, f) ++ parse = True ++ for excl in exclude: ++ if path.find(excl) >= 0: ++ parse = False ++ ++ if parse: ++ self.parse_any_file(path) ++ ++ ++ def build_file_list(self, top, exclude): ++ for e in self.extensions: ++ em = self.extmap[e] ++ self.rec_quasiglob(top, em, exclude) ++ ++ ++### ++### END OF CLASS ++### ++ ++ ++def usage(): ++ print("%s version %s" % (PROGRAM, VERSION)) ++ print("") ++ print("Usage:") ++ print("") ++ print(" %s [options] [file]... [dir]..." % PROGRAM) ++ print("") ++ print("options:") ++ print("") ++ print(" -h --help Display help") ++ print(" -V --version Show version info") ++ print(" -q --quiet Print warnings only") ++ print(" -e --exclude Exclude pattern(s)") ++ ++ ++# ++# main program ++# ++ ++ ++def main(): ++ quiet = False ++ exclude = [] ++ try: ++ opts, args = getopt.getopt(sys.argv[1:], \ ++ 'hVqe:', ++ ['help', 'version', 'quiet', 'exclude=']) ++ except getopt.GetoptError as err: ++ print(str(err)) ++ usage() ++ sys.exit(2) ++ for o, a in opts: ++ if o in ('-h', '--help'): ++ usage() ++ sys.exit() ++ elif o in ('-V', '--version'): ++ print("%s version %s, written by %s" % (PROGRAM, VERSION, AUTHOR)) ++ sys.exit() ++ elif o in ('-q', '--quiet'): ++ quiet = True ++ elif o in ('-e', '--exclude'): ++ exclude.append(a) ++ else: ++ assert False, "unhandled option" ++ ++ cc = ccheck() ++ ++ if len(args) >= 1: ++ for f in args[0:]: ++ if os.path.isdir(f): ++ cc.build_file_list(f, exclude) ++ elif os.path.isfile(f): ++ cc.parse_any_file(f) ++ else: ++ print("unknown file type: " + f) ++ else: ++ # scan all files recursively ++ cc.build_file_list('.', exclude) ++ ++ # done - print stats ++ if not quiet: ++ cc.print_stats() ++ ++ sys.exit(cc.errors != 0) ++ ++ ++if __name__ == "__main__": ++ main() + +From bcb6bd822da4a17beaf50666170aa4889acf94dd Mon Sep 17 00:00:00 2001 +From: Ethan Funk <57192178+eafunk@users.noreply.github.com> +Date: Thu, 25 Jun 2020 02:12:51 -0700 +Subject: [PATCH 52/60] Modified info message for new jack client creation to + indicate in the (#1019) + +message body if the client is a jack source or a jack destination, and +removed the "if" logic so that the message is always passed when a new +jack client is created. +--- + modules/jack/jack_play.c | 6 ++---- + modules/jack/jack_src.c | 6 ++---- + 2 files changed, 4 insertions(+), 8 deletions(-) + +diff --git a/modules/jack/jack_play.c b/modules/jack/jack_play.c +index 857923b1..e44f40a9 100644 +--- a/modules/jack/jack_play.c ++++ b/modules/jack/jack_play.c +@@ -108,10 +108,8 @@ static int start_jack(struct auplay_st *st) + if (status & JackServerStarted) { + info("jack: JACK server started\n"); + } +- if (status & JackNameNotUnique) { +- client_name = jack_get_client_name(st->client); +- info("jack: unique name `%s' assigned\n", client_name); +- } ++ client_name = jack_get_client_name(st->client); ++ info("jack: source unique name `%s' assigned\n", client_name); + + jack_set_process_callback(st->client, process_handler, st); + +diff --git a/modules/jack/jack_src.c b/modules/jack/jack_src.c +index 4c66a1bf..da483dca 100644 +--- a/modules/jack/jack_src.c ++++ b/modules/jack/jack_src.c +@@ -108,10 +108,8 @@ static int start_jack(struct ausrc_st *st) + if (status & JackServerStarted) { + info("jack: JACK server started\n"); + } +- if (status & JackNameNotUnique) { +- client_name = jack_get_client_name(st->client); +- info("jack: unique name `%s' assigned\n", client_name); +- } ++ client_name = jack_get_client_name(st->client); ++ info("jack: destination unique name `%s' assigned\n", client_name); + + jack_set_process_callback(st->client, process_handler, st); + + +From ac7e2e24ec10c50596643b81d44575055e2a1cf3 Mon Sep 17 00:00:00 2001 +From: Juha Heinanen +Date: Fri, 26 Jun 2020 20:45:32 +0300 +Subject: [PATCH 53/60] When video stream is disabled, stop also video display. + +--- + src/call.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/call.c b/src/call.c +index a69f8da7..5c2ca998 100644 +--- a/src/call.c ++++ b/src/call.c +@@ -375,6 +375,7 @@ static int update_video(struct call *call) + else if (call->video) { + info("video stream is disabled..\n"); + video_stop(call->video); ++ video_stop_display(call->video); + } + + return err; + +From 04fc1ae6329cd19fe60d2846c90bfb2f00e7f3c8 Mon Sep 17 00:00:00 2001 +From: Robert Scheck +Date: Mon, 29 Jun 2020 10:00:23 +0200 +Subject: [PATCH 54/60] Update THANKS file (#1027) + +--- + docs/THANKS | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/docs/THANKS b/docs/THANKS +index c8b0def9..d1516950 100644 +--- a/docs/THANKS ++++ b/docs/THANKS +@@ -32,6 +32,7 @@ Juha Heinanen + Lorenzo Mangani + Luigi Rizzo + Maciej Koman ++Marcel Battista + Matthias Apitz + Mikhail Barg + Nicolas Tizon + +From a8316d459ee7c3a3c42bc977d03205662aba211f Mon Sep 17 00:00:00 2001 +From: Robert Scheck +Date: Mon, 29 Jun 2020 10:01:19 +0200 +Subject: [PATCH 55/60] Convert ChangeLog to UTF-8 (to match THANKS file) + (#1026) + +--- + docs/ChangeLog | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/docs/ChangeLog b/docs/ChangeLog +index 60384c46..ca2df60b 100644 +--- a/docs/ChangeLog ++++ b/docs/ChangeLog +@@ -682,7 +682,7 @@ Alfred E. Heggestad (111): + config: refresh config template + audiounit: fix warning on ios + +-José Luis Millán (2): ++José Luis Millán (2): + ctrl_tcp: increase command buffer size (#585) + vumeter: configuration option to disable vumeter output to stderr (#608) + +@@ -766,7 +766,7 @@ juha-h (5): + + * avformat: remove support for old versions of ffmpeg + +- * ctrl_tcp: Fix netstring frame handling (#569) (José Luis Millán) ++ * ctrl_tcp: Fix netstring frame handling (#569) (José Luis Millán) + + * debug_cmd: /play will always stop current file playing. (#578) + (thanks Ola Palm) +@@ -786,7 +786,7 @@ juha-h (5): + + * opus: add configuration parameter 'opus_complexity' + add configuration parameter 'opus_application' +- (thanks José Luis Millán) ++ (thanks José Luis Millán) + + * libsrtp: module removed + +@@ -1001,7 +1001,7 @@ juha-h (5): + + * ctrl_tcp: Fix #369. documentation typo (#372) + Fix #370. wrong assignent (#371) +- (thanks José Luis Millán) ++ (thanks José Luis Millán) + + * dshow: add support for video frame timestamp + +@@ -1043,7 +1043,7 @@ juha-h (5): + * new modules: + + - ctrl_tcp TCP control interface using JSON payload +- (thanks José Luis Millán) ++ (thanks José Luis Millán) + + * config: + +@@ -1097,7 +1097,7 @@ juha-h (5): + * codec2: update aucodec API with audio sample format + + * ctrl_tcp: new module for TCP control interface using JSON payload +- (thanks José Luis Millán) ++ (thanks José Luis Millán) + + * g711: update aucodec API with audio sample format + + +From 0113e9dd22ec3a3f739825784620f34bbcfc68ee Mon Sep 17 00:00:00 2001 +From: Sebastian Reimers +Date: Mon, 29 Jun 2020 10:12:19 +0200 +Subject: [PATCH 56/60] add contributing file + +--- + docs/contributing.md | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + create mode 100644 docs/contributing.md + +diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md +new file mode 100644 +index 00000000..7c43cfcd +--- /dev/null ++++ b/docs/CONTRIBUTING.md +@@ -0,0 +1,16 @@ ++Contributions are welcome to the Baresip project. ++ ++The preferred way to contribute is via a Pull Request (PR). ++ ++* The PR should be small and logical and solve a concrete problem. ++ If your code is very large then please split it into smaller PRs. ++ ++* The code must be tested on your platform. If the code involves ++ SIP signaling or interop, it should also be tested against ++ 3rd party SIP endpoints. ++ ++* The code must compile with zero warnings ++ ++* The code must pass "make ccheck" ++ ++* Doxygen comments is nice to add, but it is not mandatory + +--- a/docs/CONTRIBUTING.md ++++ b/docs/CONTRIBUTING.md +@@ -1,4 +1,4 @@ +-Contributions are welcome to the Baresip project. ++## Contributions are welcome to the Baresip project + + The preferred way to contribute is via a Pull Request (PR). + +@@ -14,3 +14,7 @@ The preferred way to contribute is via a Pull Request (PR). + * The code must pass "make ccheck" + + * Doxygen comments is nice to add, but it is not mandatory ++ ++## How to add new modules ++ ++* https://github.com/baresip/baresip/wiki/How-to-add-new-modules + +From 53d9b436f8313cc3d16cb572fe6de1fdbfb9ac26 Mon Sep 17 00:00:00 2001 +From: mbattista +Date: Wed, 1 Jul 2020 13:51:55 +0200 +Subject: [PATCH 58/60] replace spaces from uri (#1007) + +* whitespace_handler with remove for menu and gtk + +* tabs and line-length + +* another line too wide + +* added function to encode whitespace + +* tabs + +* sizeof instead of strlen + +* rewrite with clean_numbers. Now it will only clean dialed numbers. + +* better removal of some mal-formated numbers & remove dots from clean numbers + +* fixes gtk error on opening the dial-window a second time + +* cleanup added newline + +* GTK throw errors on second open and only removed strings + +Co-authored-by: Marcel Battista +--- + docs/examples/config | 4 ++++ + modules/gtk/dial_dialog.c | 48 +++++++++++++++++++++++++++++++++++++++ + modules/gtk/gtk_mod.c | 11 +++++++++ + modules/gtk/gtk_mod.h | 4 ++++ + modules/gtk/uri_entry.c | 7 ++++++ + modules/menu/menu.c | 48 +++++++++++++++++++++++++++++++++++++++ + 6 files changed, 122 insertions(+) + +diff --git a/docs/examples/config b/docs/examples/config +index a7c12b56..e6845722 100644 +--- a/docs/examples/config ++++ b/docs/examples/config +@@ -195,6 +195,10 @@ ice_debug no + #redial_delay 5 # Delay in seconds + #ringback_disabled no + #statmode_default off ++#menu_clean_number no ++ ++# GTK ++#gtk_clean_number no + + # avcodec + #avcodec_h264enc libx264 +diff --git a/modules/gtk/dial_dialog.c b/modules/gtk/dial_dialog.c +index 21391d88..17e0c8d5 100644 +--- a/modules/gtk/dial_dialog.c ++++ b/modules/gtk/dial_dialog.c +@@ -18,6 +18,48 @@ struct dial_dialog { + GtkComboBox *uri_combobox; + }; + ++static int clean_number(char* str) ++{ ++ /* only clean numeric numbers ++ * In other cases trust the user input ++ */ ++ int err = re_regex(str, sizeof(str), "[A-Za-z]"); ++ if (err == 0) ++ return -1; ++ ++ /* remove (0) which is in some mal-formated numbers ++ * but only if trailed by another character ++ */ ++ int i = 0, k = 0; ++ if (str[0] == '+' || (str[0] == '0' && str[1] == '0')) ++ while (str[i]) { ++ if (str[i] == '(' ++ && str[i+1] == '0' ++ && str[i+2] == ')' ++ && (str[i+3] == ' ' ++ || (str[i+3] >= '0' && str[i+3] <= '9') ++ ) ++ ) { ++ str[i+1] = ' '; ++ break; ++ } ++ ++i; ++ } ++ i = 0; ++ while (str[i]) { ++ if (str[i] == ' ' ++ || str[i] == '.' ++ || str[i] == '-' ++ || str[i] == '/' ++ || str[i] == '(' ++ || str[i] == ')') ++ ++i; ++ else ++ str[k++] = str[i++]; ++ } ++ str[k] = '\0'; ++ return k; ++} + + static void dial_dialog_on_response(GtkDialog *dialog, gint response_id, + gpointer arg) +@@ -27,6 +69,12 @@ static void dial_dialog_on_response(GtkDialog *dialog, gint response_id, + + if (response_id == GTK_RESPONSE_ACCEPT) { + uri = (char *)uri_combo_box_get_text(dd->uri_combobox); ++ if (gtk_mod_clean_number(dd->mod)) { ++ int length = clean_number(uri); ++ if (length >= 0) ++ uri_combo_box_set_text(dd->uri_combobox, ++ uri, length); ++ } + gtk_mod_connect(dd->mod, uri); + } + +diff --git a/modules/gtk/gtk_mod.c b/modules/gtk/gtk_mod.c +index 4581203a..25add5c1 100644 +--- a/modules/gtk/gtk_mod.c ++++ b/modules/gtk/gtk_mod.c +@@ -53,6 +53,7 @@ struct gtk_mod { + struct dial_dialog *dial_dialog; + GSList *call_windows; + GSList *incoming_call_menus; ++ bool clean_number; + }; + + static struct gtk_mod mod_obj; +@@ -625,6 +626,13 @@ void gtk_mod_connect(struct gtk_mod *mod, const char *uri) + mqueue_push(mod->mq, MQ_CONNECT, (char *)uri); + } + ++bool gtk_mod_clean_number(struct gtk_mod *mod) ++{ ++ if (!mod) ++ return false; ++ return mod->clean_number; ++} ++ + + static void warning_dialog(const char *title, const char *fmt, ...) + { +@@ -1001,6 +1009,9 @@ static const struct cmd cmdv[] = { + + static int module_init(void) + { ++ mod_obj.clean_number = false; ++ conf_get_bool(conf_cur(), "gtk_clean_number", &mod_obj.clean_number); ++ + int err = 0; + + err = mqueue_alloc(&mod_obj.mq, mqueue_handler, &mod_obj); +diff --git a/modules/gtk/gtk_mod.h b/modules/gtk/gtk_mod.h +index ab123caa..2b3df378 100644 +--- a/modules/gtk/gtk_mod.h ++++ b/modules/gtk/gtk_mod.h +@@ -48,4 +48,8 @@ void transfer_dialog_fail(struct transfer_dialog *, const char *reason); + + /* URI entry combo box */ + GtkWidget *uri_combo_box_new(void); ++void uri_combo_box_set_text(GtkComboBox *box, char* str, int length); + const char *uri_combo_box_get_text(GtkComboBox *box); ++ ++/* Helper functions */ ++bool gtk_mod_clean_number(struct gtk_mod *mod); +diff --git a/modules/gtk/uri_entry.c b/modules/gtk/uri_entry.c +index a584637d..47169b38 100644 +--- a/modules/gtk/uri_entry.c ++++ b/modules/gtk/uri_entry.c +@@ -39,6 +39,13 @@ GtkWidget *uri_combo_box_new(void) + return uri_combobox; + } + ++void uri_combo_box_set_text(GtkComboBox *box, char* str, int length) ++{ ++ gchar* number = g_strdup (str); ++ GtkEntry *entry = GTK_ENTRY(gtk_bin_get_child(GTK_BIN(box))); ++ GtkEntryBuffer *buf = gtk_entry_get_buffer(entry); ++ gtk_entry_buffer_set_text(buf, number, length); ++} + + const char *uri_combo_box_get_text(GtkComboBox *box) + { +diff --git a/modules/menu/menu.c b/modules/menu/menu.c +index d73f4eae..570b9c12 100644 +--- a/modules/menu/menu.c ++++ b/modules/menu/menu.c +@@ -40,6 +40,7 @@ static struct { + uint32_t current_attempts; /**< Current number of re-dials */ + uint64_t start_ticks; /**< Ticks when app started */ + enum statmode statmode; /**< Status mode */ ++ bool clean_number; /**< Remove -/() from diald numbers */ + char redial_aor[128]; + } menu; + +@@ -204,6 +205,47 @@ static int ua_print_call_status(struct re_printf *pf, void *unused) + return err; + } + ++static void clean_number(char* str) ++{ ++ /* only clean numeric numbers ++ * In other cases trust the user input ++ */ ++ int err = re_regex(str, sizeof(str), "[A-Za-z]"); ++ if (err == 0) ++ return; ++ ++ /* remove (0) which is in some mal-formated numbers ++ * but only if trailed by another character ++ */ ++ int i = 0, k = 0; ++ if (str[0] == '+' || (str[0] == '0' && str[1] == '0')) ++ while (str[i]) { ++ if (str[i] == '(' ++ && str[i+1] == '0' ++ && str[i+2] == ')' ++ && (str[i+3] == ' ' ++ || (str[i+3] >= '0' && str[i+3] <= '9') ++ ) ++ ) { ++ str[i+1] = ' '; ++ break; ++ } ++ ++i; ++ } ++ i = 0; ++ while (str[i]) { ++ if (str[i] == ' ' ++ || str[i] == '.' ++ || str[i] == '-' ++ || str[i] == '/' ++ || str[i] == '(' ++ || str[i] == ')') ++ ++i; ++ else ++ str[k++] = str[i++]; ++ } ++ str[k] = '\0'; ++} + + static int dial_handler(struct re_printf *pf, void *arg) + { +@@ -216,6 +258,8 @@ static int dial_handler(struct re_printf *pf, void *arg) + + mbuf_rewind(menu.dialbuf); + (void)mbuf_write_str(menu.dialbuf, carg->prm); ++ if (menu.clean_number) ++ clean_number(carg->prm); + + err = ua_connect(uag_current(), NULL, NULL, + carg->prm, VIDMODE_ON); +@@ -228,6 +272,8 @@ static int dial_handler(struct re_printf *pf, void *arg) + err = mbuf_strdup(menu.dialbuf, &uri, menu.dialbuf->end); + if (err) + return err; ++ if (menu.clean_number) ++ clean_number(uri); + + err = ua_connect(uag_current(), NULL, NULL, uri, VIDMODE_ON); + +@@ -1283,6 +1329,7 @@ static int module_init(void) + menu.redial_delay = 5; + menu.ringback_disabled = false; + menu.statmode = STATMODE_CALL; ++ menu.clean_number = false; + + /* + * Read the config values +@@ -1290,6 +1337,7 @@ static int module_init(void) + conf_get_bool(conf_cur(), "menu_bell", &menu.bell); + conf_get_bool(conf_cur(), "ringback_disabled", + &menu.ringback_disabled); ++ conf_get_bool(conf_cur(), "menu_clean_number", &menu.clean_number); + + if (0 == conf_get(conf_cur(), "redial_attempts", &val) && + 0 == pl_strcasecmp(&val, "inf")) { + +From 10936162de1594ccf146e5110032799845669dc8 Mon Sep 17 00:00:00 2001 +From: Ethan Funk <57192178+eafunk@users.noreply.github.com> +Date: Wed, 1 Jul 2020 04:53:02 -0700 +Subject: [PATCH 59/60] Issue #1020 feature implementation, and call.c change + to report line number. (#1025) + +* Modified info message for new jack client creation to indicate in the +message body if the client is a jack source or a jack destination, and +removed the "if" logic so that the message is always passed when a new +jack client is created. + +* -Added linenumber to call answering info report. +-Implemented user requested jackaudio client name config option "jack_client_name". + +* Fixed reversed if logic on conf_get_str() in jack_play.c and jack_src.c + +* Formatting changed to attempt to get ccheck to pass + +* ccheck formatting pass attempt #2 + +* This ccheck thing must be converting tabs to spaces. Try #3 +to make ccheck happy with formatting +--- + modules/jack/jack_play.c | 16 +++++++++++++--- + modules/jack/jack_src.c | 17 ++++++++++++++--- + src/call.c | 3 ++- + 3 files changed, 29 insertions(+), 7 deletions(-) + +diff --git a/modules/jack/jack_play.c b/modules/jack/jack_play.c +index e44f40a9..25e79b85 100644 +--- a/modules/jack/jack_play.c ++++ b/modules/jack/jack_play.c +@@ -76,7 +76,6 @@ static void auplay_destructor(void *arg) + mem_deref(st->portv); + } + +- + static int start_jack(struct auplay_st *st) + { + struct conf *conf = conf_cur(); +@@ -93,9 +92,20 @@ static int start_jack(struct auplay_st *st) + &jack_connect_ports); + + /* open a client connection to the JACK server */ ++ size_t len = jack_client_name_size(); ++ char *conf_name = mem_alloc(len+1, NULL); ++ ++ if (!conf_get_str(conf, "jack_client_name", ++ conf_name, len)) { ++ st->client = jack_client_open(conf_name, options, ++ &status, server_name); ++ } ++ else { ++ st->client = jack_client_open(client_name, ++ options, &status, server_name); ++ } ++ mem_deref(conf_name); + +- st->client = jack_client_open(client_name, options, +- &status, server_name); + if (st->client == NULL) { + warning("jack: jack_client_open() failed, " + "status = 0x%2.0x\n", status); +diff --git a/modules/jack/jack_src.c b/modules/jack/jack_src.c +index da483dca..ee3f9e5a 100644 +--- a/modules/jack/jack_src.c ++++ b/modules/jack/jack_src.c +@@ -90,12 +90,23 @@ static int start_jack(struct ausrc_st *st) + + bool jack_connect_ports = true; + (void)conf_get_bool(conf, "jack_connect_ports", +- &jack_connect_ports); ++ &jack_connect_ports); + + /* open a client connection to the JACK server */ ++ size_t len = jack_client_name_size(); ++ char *conf_name = mem_alloc(len+1, NULL); ++ ++ if (!conf_get_str(conf, "jack_client_name", ++ conf_name, len)) { ++ st->client = jack_client_open(conf_name, options, ++ &status, server_name); ++ } ++ else { ++ st->client = jack_client_open(client_name, options, ++ &status, server_name); ++ } ++ mem_deref(conf_name); + +- st->client = jack_client_open(client_name, options, +- &status, server_name); + if (st->client == NULL) { + warning("jack: jack_client_open() failed, " + "status = 0x%2.0x\n", status); +diff --git a/src/call.c b/src/call.c +index 5c2ca998..dfa12a1d 100644 +--- a/src/call.c ++++ b/src/call.c +@@ -1079,7 +1079,8 @@ int call_answer(struct call *call, uint16_t scode, enum vidmode vmode) + if (vmode == VIDMODE_OFF) + call->video = mem_deref(call->video); + +- info("call: answering call from %s with %u\n", call->peer_uri, scode); ++ info("call: answering call on line %u from %s with %u\n", ++ call->linenum, call->peer_uri, scode); + + if (call->got_offer) { + + +From 235c0217a577625d732e2b11b512d2edeb4808b6 Mon Sep 17 00:00:00 2001 +From: Alexander Gramner <47948035+agramner@users.noreply.github.com> +Date: Wed, 1 Jul 2020 13:54:44 +0200 +Subject: [PATCH 60/60] jack_play: connect all physical ports (#1028) + +* jack_play: connect all physical ports + +* Fix ccheck errors + +* Fix more ccheck errors +--- + modules/jack/jack_play.c | 19 ++++++++++++++----- + modules/jack/jack_src.c | 2 +- + 2 files changed, 15 insertions(+), 6 deletions(-) + +diff --git a/modules/jack/jack_play.c b/modules/jack/jack_play.c +index 25e79b85..3c563135 100644 +--- a/modules/jack/jack_play.c ++++ b/modules/jack/jack_play.c +@@ -175,19 +175,28 @@ static int start_jack(struct auplay_st *st) + if (jack_connect_ports) { + info("jack: connecting default input ports\n"); + ports = jack_get_ports (st->client, NULL, NULL, +- JackPortIsInput); ++ JackPortIsInput | JackPortIsPhysical); + if (ports == NULL) { + warning("jack: no physical playback ports\n"); + return ENODEV; + } + +- for (ch=0; chprm.ch; ch++) { +- ++ /* Connect all physical ports. In case of for example mono ++ * audio with 2 physical playback ports, connect the ++ * single registered port to both physical port. ++ */ ++ ch = 0; ++ for (unsigned i = 0; ports[i] != NULL; i++) { + if (jack_connect (st->client, +- jack_port_name (st->portv[ch]), +- ports[ch])) { ++ jack_port_name (st->portv[ch]), ++ ports[i])) { + warning("jack: cannot connect output ports\n"); + } ++ ++ ++ch; ++ if (ch >= st->prm.ch) { ++ ch = 0; ++ } + } + + jack_free(ports); +diff --git a/modules/jack/jack_src.c b/modules/jack/jack_src.c +index ee3f9e5a..1ee2fa92 100644 +--- a/modules/jack/jack_src.c ++++ b/modules/jack/jack_src.c +@@ -168,7 +168,7 @@ static int start_jack(struct ausrc_st *st) + if (jack_connect_ports) { + info("jack: connecting default output ports\n"); + ports = jack_get_ports (st->client, NULL, NULL, +- JackPortIsOutput); ++ JackPortIsOutput | JackPortIsPhysical); + if (ports == NULL) { + warning("jack: no physical playback ports\n"); + return ENODEV; diff --git a/baresip-0.6.6-3871768.patch b/baresip-0.6.6-3871768.patch deleted file mode 100644 index ef25c4b..0000000 --- a/baresip-0.6.6-3871768.patch +++ /dev/null @@ -1,1526 +0,0 @@ -https://github.com/baresip/baresip/compare/v0.6.6...3871768 - -diff --git a/Makefile b/Makefile -index d41b12f..e17ecdb 100644 ---- a/Makefile -+++ b/Makefile -@@ -10,7 +10,7 @@ - # - - PROJECT := baresip --VERSION := 0.6.6 -+VERSION := 1.0.0 - DESCR := "Baresip is a modular SIP User-Agent with audio and video support" - - # Verbose and silent build modes -@@ -221,13 +221,22 @@ $(BIN): $(APP_OBJS) - -L$(LIBRE_SO) -lre $(LIBS) -o $@ - - -+# -+# List of modules used by selftest -+# -+ifneq ($(STATIC),) -+TEST_MODULES := -+else -+TEST_MODULES := g711.so -+endif -+ - .PHONY: test - test: $(TEST_BIN) - ./$(TEST_BIN) - --$(TEST_BIN): $(STATICLIB) $(TEST_OBJS) -+$(TEST_BIN): $(STATICLIB) $(TEST_OBJS) $(TEST_MODULES) - @echo " LD $@" -- $(HIDE)$(LD) $(LFLAGS) $(TEST_OBJS) \ -+ $(HIDE)$(LD) $(LFLAGS) $(APP_LFLAGS) $(TEST_OBJS) \ - -L$(LIBRE_SO) -L. \ - -l$(PROJECT) -lre $(LIBS) $(TEST_LIBS) -o $@ - -diff --git a/include/baresip.h b/include/baresip.h -index 7553e28..79985ee 100644 ---- a/include/baresip.h -+++ b/include/baresip.h -@@ -13,7 +13,7 @@ extern "C" { - - - /** Defines the Baresip version string */ --#define BARESIP_VERSION "0.6.6" -+#define BARESIP_VERSION "1.0.0" - - - #ifndef NET_MAX_NS -@@ -59,6 +59,8 @@ struct account; - - int account_alloc(struct account **accp, const char *sipaddr); - int account_debug(struct re_printf *pf, const struct account *acc); -+int account_json_api(struct odict *odacc, struct odict *odcfg, -+ const struct account *acc); - int account_set_auth_user(struct account *acc, const char *user); - int account_set_auth_pass(struct account *acc, const char *pass); - int account_set_outbound(struct account *acc, const char *ob, unsigned ix); -@@ -71,6 +73,7 @@ int account_set_stun_port(struct account *acc, uint16_t port); - int account_set_mediaenc(struct account *acc, const char *mediaenc); - int account_set_medianat(struct account *acc, const char *medianat); - int account_set_audio_codecs(struct account *acc, const char *codecs); -+int account_set_video_codecs(struct account *acc, const char *codecs); - int account_set_mwi(struct account *acc, const char *value); - int account_set_call_transfer(struct account *acc, const char *value); - int account_auth(const struct account *acc, char **username, char **password, -@@ -146,6 +149,12 @@ enum call_event { - CALL_EVENT_MENC, - }; - -+/** Video mode */ -+enum vidmode { -+ VIDMODE_OFF = 0, /**< Video disabled */ -+ VIDMODE_ON, /**< Video enabled */ -+}; -+ - struct call; - - typedef void (call_event_h)(struct call *call, enum call_event ev, -@@ -153,7 +162,7 @@ typedef void (call_event_h)(struct call *call, enum call_event ev, - typedef void (call_dtmf_h)(struct call *call, char key, void *arg); - - int call_connect(struct call *call, const struct pl *paddr); --int call_answer(struct call *call, uint16_t scode); -+int call_answer(struct call *call, uint16_t scode, enum vidmode vmode); - int call_progress(struct call *call); - void call_hangup(struct call *call, uint16_t scode, const char *reason); - int call_modify(struct call *call); -@@ -209,6 +218,7 @@ int custom_hdrs_apply(const struct list *hdrs, custom_hdrs_h *h, void *arg); - typedef int (confline_h)(const struct pl *addr, void *arg); - - int conf_configure(void); -+int conf_configure_buf(const uint8_t *buf, size_t sz); - int conf_modules(void); - void conf_path_set(const char *path); - int conf_path_get(char *path, size_t sz); -@@ -712,12 +722,6 @@ enum ua_event { - UA_EVENT_MAX, - }; - --/** Video mode */ --enum vidmode { -- VIDMODE_OFF = 0, /**< Video disabled */ -- VIDMODE_ON, /**< Video enabled */ --}; -- - /** Defines the User-Agent event handler */ - typedef void (ua_event_h)(struct ua *ua, enum ua_event ev, - struct call *call, const char *prm, void *arg); -@@ -732,11 +736,12 @@ int ua_connect(struct ua *ua, struct call **callp, - enum vidmode vmode); - void ua_hangup(struct ua *ua, struct call *call, - uint16_t scode, const char *reason); --int ua_answer(struct ua *ua, struct call *call); --int ua_hold_answer(struct ua *ua, struct call *call); -+int ua_answer(struct ua *ua, struct call *call, enum vidmode vmode); -+int ua_hold_answer(struct ua *ua, struct call *call, enum vidmode vmode); - int ua_options_send(struct ua *ua, const char *uri, - options_resp_h *resph, void *arg); - int ua_debug(struct re_printf *pf, const struct ua *ua); -+int ua_state_json_api(struct odict *od, const struct ua *ua); - int ua_print_calls(struct re_printf *pf, const struct ua *ua); - int ua_print_status(struct re_printf *pf, const struct ua *ua); - int ua_print_supported(struct re_printf *pf, const struct ua *ua); -@@ -1219,6 +1224,7 @@ int video_encoder_set(struct video *v, struct vidcodec *vc, - int video_start_source(struct video *v, struct media_ctx **ctx); - int video_start_display(struct video *v, const char *peer); - void video_stop(struct video *v); -+void video_stop_display(struct video *v); - int video_set_fullscreen(struct video *v, bool fs); - void video_vidsrc_set_device(struct video *v, const char *dev); - int video_set_source(struct video *v, const char *name, const char *dev); -@@ -1230,6 +1236,7 @@ struct stream *video_strm(const struct video *v); - double video_timestamp_to_seconds(uint64_t timestamp); - uint64_t video_calc_timebase_timestamp(uint64_t rtp_ts); - const struct vidcodec *video_codec(const struct video *vid, bool tx); -+void video_sdp_attr_decode(struct video *v); - - - /* -@@ -1447,7 +1454,7 @@ static inline bool h264_is_keyframe(int type) - - - int module_preload(const char *module); --int module_load(const char *name); -+int module_load(const char *path, const char *name); - void module_unload(const char *name); - void module_app_unload(void); - -diff --git a/mk/Doxyfile b/mk/Doxyfile -index 946b1f7..3bc3fb6 100644 ---- a/mk/Doxyfile -+++ b/mk/Doxyfile -@@ -4,7 +4,7 @@ - # Project related configuration options - #--------------------------------------------------------------------------- - PROJECT_NAME = baresip --PROJECT_NUMBER = 0.6.6 -+PROJECT_NUMBER = 1.0.0 - OUTPUT_DIRECTORY = ../baresip-dox - CREATE_SUBDIRS = NO - OUTPUT_LANGUAGE = English -diff --git a/mk/modules.mk b/mk/modules.mk -index 59704ed..e35bb80 100644 ---- a/mk/modules.mk -+++ b/mk/modules.mk -@@ -164,6 +164,7 @@ USE_SNDIO := $(shell [ -f $(SYSROOT)/include/sndio.h ] || \ - USE_STDIO := $(shell [ -f $(SYSROOT)/include/termios.h ] && echo "yes") - HAVE_SPEEXDSP := $(shell \ - [ -f $(SYSROOT)/local/lib/libspeexdsp$(LIB_SUFFIX) ] || \ -+ [ -f $(SYSROOT)/lib64/libspeexdsp$(LIB_SUFFIX) ] || \ - [ -f $(SYSROOT)/lib/libspeexdsp$(LIB_SUFFIX) ] || \ - [ -f $(SYSROOT_ALT)/lib/libspeexdsp$(LIB_SUFFIX) ] && echo "yes") - ifeq ($(HAVE_SPEEXDSP),) -diff --git a/modules/aac/aac.c b/modules/aac/aac.c -index 1432aae..54f4066 100644 ---- a/modules/aac/aac.c -+++ b/modules/aac/aac.c -@@ -77,7 +77,7 @@ static struct aucodec aac = { - void aac_encode_fmtp(const struct aac_param *prm) - { - (void)re_snprintf(fmtp_local, sizeof(fmtp_local), -- "streamType=5" -+ "streamType=%d" - "; profile-level-id=%u" - "; config=%s" - "; mode=%s" -@@ -86,9 +86,10 @@ void aac_encode_fmtp(const struct aac_param *prm) - "; indexLength=%u" - "; indexDeltaLength=%u" - "; bitrate=%u", -+ AAC_STREAMTYPE_AUDIO, - prm->profile_level_id, prm->config, "AAC-hbr", -- prm->constantduration, SIZELENGTH, -- INDEXLENGTH, INDEXDELTALENGTH, -+ prm->constantduration, AAC_SIZELENGTH, -+ AAC_INDEXLENGTH, AAC_INDEXDELTALENGTH, - prm->bitrate); - } - -diff --git a/modules/aac/aac.h b/modules/aac/aac.h -index 66f9fc1..84ad51f 100644 ---- a/modules/aac/aac.h -+++ b/modules/aac/aac.h -@@ -18,18 +18,20 @@ struct aac_param { - }; - - --enum { AU_HDR_LEN = 4, /* single access unit only!!! */ -- -- SIZELENGTH = 13, -- INDEXLENGTH = 3, -- INDEXDELTALENGTH = 3, -- -- HIGH_QUALITY_AUDIO_PROFILE = 16, /* L3 */ -- LOW_DELAY_AUDIO_PROFILE = 25, /* L4 */ -- ENHANCED_LOW_DELAY_AUDIO_PROFILE = 76, /* L1 */ -- HIGH_EFFICIENCY_AAC_PROFILE = 46, /* L4 */ -- HIGH_EFFICIENCY_AAC_V2_PROFILE = 49, /* L3 */ -- AAC_PROFILE = 41, /* L2 */ -+enum { -+ AU_HDR_LEN = 4, /* single access unit only!!! */ -+ -+ AAC_SIZELENGTH = 13, -+ AAC_INDEXLENGTH = 3, -+ AAC_INDEXDELTALENGTH = 3, -+ AAC_STREAMTYPE_AUDIO = 5, -+ -+ HIGH_QUALITY_AUDIO_PROFILE = 16, /* L3 */ -+ LOW_DELAY_AUDIO_PROFILE = 25, /* L4 */ -+ ENHANCED_LOW_DELAY_AUDIO_PROFILE = 76, /* L1 */ -+ HIGH_EFFICIENCY_AAC_PROFILE = 46, /* L4 */ -+ HIGH_EFFICIENCY_AAC_V2_PROFILE = 49, /* L3 */ -+ AAC_PROFILE = 41, /* L2 */ - }; - - extern uint32_t aac_samplerate, aac_channels, aac_aot; -diff --git a/modules/aac/decode.c b/modules/aac/decode.c -index f8c78a2..4c469f0 100644 ---- a/modules/aac/decode.c -+++ b/modules/aac/decode.c -@@ -54,7 +54,7 @@ static int hdr_decode(struct au_hdr *au_data, const uint8_t *p, - - bits = ntohs(*(uint16_t *)(void *)&p[2]); - -- au_data->size = bits >> ((sizeof(uint16_t) * 8) - SIZELENGTH); -+ au_data->size = bits >> ((sizeof(uint16_t) * 8) - AAC_SIZELENGTH); - - if (au_data->size == 0) { - warning("aac: decode: invalid access unit size (zero)\n", -diff --git a/modules/aac/encode.c b/modules/aac/encode.c -index 58e046e..0c9415a 100644 ---- a/modules/aac/encode.c -+++ b/modules/aac/encode.c -@@ -63,7 +63,7 @@ static void hdr_encode(uint8_t *p, uint16_t size) - * size - */ - *(uint16_t *)(void *)&p[2] = -- htons(size << ((sizeof(uint16_t) * 8) - SIZELENGTH)); -+ htons(size << ((sizeof(uint16_t) * 8) - AAC_SIZELENGTH)); - } - - -diff --git a/modules/aac/sdp.c b/modules/aac/sdp.c -index e0527a0..46d7684 100644 ---- a/modules/aac/sdp.c -+++ b/modules/aac/sdp.c -@@ -50,16 +50,16 @@ bool aac_fmtp_cmp(const char *lfmtp, const char *rfmtp, void *arg) - return false; - } - -- if (param_value(rfmtp, "streamType") != 5) -+ if (param_value(rfmtp, "streamType") != AAC_STREAMTYPE_AUDIO) - return false; - -- if (param_value(rfmtp, "sizeLength") != SIZELENGTH) -+ if (param_value(rfmtp, "sizeLength") != AAC_SIZELENGTH) - return false; - -- if (param_value(rfmtp, "indexLength") != INDEXLENGTH) -+ if (param_value(rfmtp, "indexLength") != AAC_INDEXLENGTH) - return false; - -- if (param_value(rfmtp, "indexDeltaLength") != INDEXDELTALENGTH) -+ if (param_value(rfmtp, "indexDeltaLength") != AAC_INDEXDELTALENGTH) - return false; - - if (param_value(rfmtp, "bitrate") < 8000 || -diff --git a/modules/avcodec/avcodec.c b/modules/avcodec/avcodec.c -index 232258e..9f5b475 100644 ---- a/modules/avcodec/avcodec.c -+++ b/modules/avcodec/avcodec.c -@@ -260,8 +260,9 @@ static int module_init(void) - } - } - -- if ((ret = av_hwdevice_ctx_create(&avcodec_hw_device_ctx, type, -- NULL, NULL, 0)) < 0) { -+ ret = av_hwdevice_ctx_create(&avcodec_hw_device_ctx, type, -+ NULL, NULL, 0); -+ if (ret < 0) { - warning("avcodec: Failed to create HW device (%s)\n", - av_err2str(ret)); - return ENOTSUP; -diff --git a/modules/avcodec/decode.c b/modules/avcodec/decode.c -index b368ef1..ba5bbbf 100644 ---- a/modules/avcodec/decode.c -+++ b/modules/avcodec/decode.c -@@ -132,6 +132,11 @@ static int init_decoder(struct viddec_state *st, const char *name) - - st->ctx = avcodec_alloc_context3(st->codec); - -+ /* TODO: If avcodec_h264dec is h264_mediacodec, extradata needs to -+ added to context that contains Sequence Parameter Set (SPS) and -+ Picture Parameter Set (PPS), before avcodec_open2() is called. -+ */ -+ - st->pict = av_frame_alloc(); - - if (!st->ctx || !st->pict) -diff --git a/modules/avcodec/encode.c b/modules/avcodec/encode.c -index b4eeaa3..74c656f 100644 ---- a/modules/avcodec/encode.c -+++ b/modules/avcodec/encode.c -@@ -292,8 +292,9 @@ static int open_encoder(struct videnc_state *st, - - /* set hw_frames_ctx for encoder's AVCodecContext */ - -- if ((err = set_hwframe_ctx(st->ctx, avcodec_hw_device_ctx, -- size->w, size->h)) < 0) { -+ err = set_hwframe_ctx(st->ctx, avcodec_hw_device_ctx, -+ size->w, size->h); -+ if (err < 0) { - - warning("avcodec: encode: Failed to set" - " hwframe context.\n"); -@@ -320,7 +321,7 @@ static int open_encoder(struct videnc_state *st, - - - static int decode_sdpparam_h264(struct videnc_state *st, const struct pl *name, -- const struct pl *val) -+ const struct pl *val) - { - if (0 == pl_strcasecmp(name, "packetization-mode")) { - st->u.h264.packetization_mode = pl_u32(val); -diff --git a/modules/avcodec/sdp.c b/modules/avcodec/sdp.c -index 0605b05..c662318 100644 ---- a/modules/avcodec/sdp.c -+++ b/modules/avcodec/sdp.c -@@ -34,7 +34,7 @@ int avcodec_h264_fmtp_enc(struct mbuf *mb, const struct sdp_format *fmt, - { - struct vidcodec *vc = arg; - const uint8_t profile_idc = 0x42; /* baseline profile */ -- const uint8_t profile_iop = 0x80; -+ const uint8_t profile_iop = 0xe0; - (void)offer; - - if (!mb || !fmt || !vc) -diff --git a/modules/avformat/audio.c b/modules/avformat/audio.c -index 9e3264d..5e374e4 100644 ---- a/modules/avformat/audio.c -+++ b/modules/avformat/audio.c -@@ -74,7 +74,6 @@ int avformat_audio_alloc(struct ausrc_st **stp, const struct ausrc *as, - st->arg = arg; - st->prm = *prm; - -- /* todo: also lookup "dev" ? */ - if (ctx && *ctx && (*ctx)->id && !strcmp((*ctx)->id, "avformat")) { - st->shared = mem_ref(*ctx); - } -diff --git a/modules/b2bua/b2bua.c b/modules/b2bua/b2bua.c -index 0990888..3c278ba 100644 ---- a/modules/b2bua/b2bua.c -+++ b/modules/b2bua/b2bua.c -@@ -62,7 +62,8 @@ static void call_event_handler(struct call *call, enum call_event ev, - case CALL_EVENT_ESTABLISHED: - debug("b2bua: CALL_ESTABLISHED: peer_uri=%s\n", - call_peeruri(call)); -- call_answer(call2, 200); -+ call_answer(call2, 200, -+ call_has_video(call) ? VIDMODE_ON : VIDMODE_OFF); - break; - - case CALL_EVENT_CLOSED: -diff --git a/modules/debug_cmd/debug_cmd.c b/modules/debug_cmd/debug_cmd.c -index 41ff754..f6290b7 100644 ---- a/modules/debug_cmd/debug_cmd.c -+++ b/modules/debug_cmd/debug_cmd.c -@@ -82,6 +82,45 @@ static int cmd_ua_debug(struct re_printf *pf, void *unused) - } - - -+/** -+ * Returns all the User-Agents and their general codec state. -+ * Formatted as JSON, for use with TCP / MQTT API interface. -+ * JSON object with 'cuser' as the key. -+ * -+ * @return All User-Agents available, NULL if none -+ */ -+static int cmd_api_uastate(struct re_printf *pf, void *unused) -+{ -+ struct odict *od = NULL; -+ struct le *le; -+ int err; -+ (void)unused; -+ -+ err = odict_alloc(&od, 8); -+ if (err) -+ return err; -+ -+ for (le = list_head(uag_list()); le && !err; le = le->next) { -+ const struct ua *ua = le->data; -+ struct odict *odua; -+ -+ err = odict_alloc(&odua, 8); -+ -+ err |= ua_state_json_api(odua, ua); -+ err |= odict_entry_add(od, ua_aor(ua), ODICT_OBJECT, odua); -+ mem_deref(odua); -+ } -+ -+ err |= json_encode_odict(pf, od); -+ if (err) -+ warning("debug: failed to encode json (%m)\n", err); -+ -+ mem_deref(od); -+ -+ return re_hprintf(pf, "\n"); -+} -+ -+ - static int cmd_play_file(struct re_printf *pf, void *arg) - { - static struct play *g_play; -@@ -187,6 +226,7 @@ static const struct cmd debugcmdv[] = { - {"timers", 0, 0, "Timer debug", tmr_status }, - {"uastat", 'u', 0, "UA debug", cmd_ua_debug }, - {"uuid", 0, 0, "Print UUID", print_uuid }, -+{"apistate", 0, 0, "User Agent state", cmd_api_uastate }, - }; - - -diff --git a/modules/echo/echo.c b/modules/echo/echo.c -index 50f8b6a..d6e22a2 100644 ---- a/modules/echo/echo.c -+++ b/modules/echo/echo.c -@@ -83,7 +83,7 @@ static int new_session(struct ua *ua, struct call *call) - call_dtmf_handler, sess); - - list_append(&sessionl, &sess->le, sess); -- err = ua_answer(ua, call); -+ err = ua_answer(ua, call, VIDMODE_ON); - - if (err) - mem_deref(sess); -diff --git a/modules/gtk/gtk_mod.c b/modules/gtk/gtk_mod.c -index 501054e..e606c50 100644 ---- a/modules/gtk/gtk_mod.c -+++ b/modules/gtk/gtk_mod.c -@@ -700,7 +700,7 @@ static void mqueue_handler(int id, void *data, void *arg) - - case MQ_ANSWER: - call = data; -- err = ua_answer(ua, call); -+ err = ua_answer(ua, call, VIDMODE_ON); - if (err) { - gdk_threads_enter(); - warning_dialog("Call failed", -diff --git a/modules/gzrtp/stream.cpp b/modules/gzrtp/stream.cpp -index 1afa95a..074dd5d 100644 ---- a/modules/gzrtp/stream.cpp -+++ b/modules/gzrtp/stream.cpp -@@ -321,7 +321,7 @@ void Stream::stop() - - int Stream::sdp_encode(struct sdp_media *sdpm) - { -- // TODO: signaling hash -+ // NOTE: signaling hash - return 0; - } - -@@ -331,7 +331,7 @@ int Stream::sdp_decode(const struct sdp_media *sdpm) - if (sa_isset(sdp_media_raddr(sdpm), SA_ALL)) { - m_raddr = *sdp_media_raddr(sdpm); - } -- // TODO: signaling hash -+ // NOTE: signaling hash - - return 0; - } -diff --git a/modules/ice/ice.c b/modules/ice/ice.c -index c7cf984..1d1d874 100644 ---- a/modules/ice/ice.c -+++ b/modules/ice/ice.c -@@ -13,12 +13,8 @@ - * Interactive Connectivity Establishment (ICE) for media NAT traversal - * - * This module enables ICE for NAT traversal. You can enable ICE -- * in your accounts file with the parameter ;medianat=ice. The following -- * options can be configured: -+ * in your accounts file with the parameter ;medianat=ice. - * -- \verbatim -- ice_debug {yes,no} # Enable ICE debugging/tracing -- \endverbatim - */ - - -@@ -32,10 +28,10 @@ struct mnat_sess { - struct sa srv; - struct stun_dns *dnsq; - struct sdp_session *sdp; -+ struct tmr tmr_async; - char lufrag[8]; - char lpwd[32]; - uint64_t tiebrk; -- enum ice_mode mode; - bool turn; - bool offerer; - char *user; -@@ -67,13 +63,6 @@ struct mnat_media { - }; - - --static struct { -- bool debug; --} ice = { -- false --}; -- -- - static void gather_handler(int err, uint16_t scode, const char *reason, - void *arg); - -@@ -263,9 +252,6 @@ static int start_gathering(struct mnat_media *m, - unsigned i; - int err = 0; - -- if (m->sess->mode != ICE_MODE_FULL) -- return EINVAL; -- - /* for each component */ - for (i=0; i<2; i++) { - struct comp *comp = &m->compv[i]; -@@ -318,6 +304,7 @@ static void session_destructor(void *arg) - { - struct mnat_sess *sess = arg; - -+ tmr_cancel(&sess->tmr_async); - list_flush(&sess->medial); - mem_deref(sess->dnsq); - mem_deref(sess->user); -@@ -420,29 +407,12 @@ static int media_start(struct mnat_sess *sess, struct mnat_media *m) - - net_if_apply(if_handler, m); - -- switch (sess->mode) { -- -- default: -- case ICE_MODE_FULL: -- if (sess->turn) { -- err = icem_gather_relay(m, -- sess->user, sess->pass); -- } -- else { -- err = icem_gather_srflx(m); -- } -- break; -- -- case ICE_MODE_LITE: -- err = icem_lite_set_default_candidates(m->icem); -- if (err) { -- warning("ice: could not set" -- " default candidates (%m)\n", err); -- return err; -- } -- -- gather_handler(0, 0, NULL, m); -- break; -+ if (sess->turn) { -+ err = icem_gather_relay(m, -+ sess->user, sess->pass); -+ } -+ else { -+ err = icem_gather_srflx(m); - } - - return err; -@@ -478,6 +448,22 @@ static void dns_handler(int err, const struct sa *srv, void *arg) - } - - -+static void tmr_async_handler(void *arg) -+{ -+ struct mnat_sess *sess = arg; -+ struct le *le; -+ -+ for (le = sess->medial.head; le; le = le->next) { -+ -+ struct mnat_media *m = le->data; -+ -+ net_if_apply(if_handler, m); -+ -+ call_gather_handler(0, m, 0, ""); -+ } -+} -+ -+ - static int session_alloc(struct mnat_sess **sessp, - const struct mnat *mnat, struct dnsc *dnsc, - int af, const struct stun_uri *srv, -@@ -486,39 +472,37 @@ static int session_alloc(struct mnat_sess **sessp, - mnat_estab_h *estabh, void *arg) - { - struct mnat_sess *sess; -- const char *usage; -+ const char *usage = NULL; - int err = 0; -+ (void)mnat; - -- if (!sessp || !dnsc || !srv || !ss || !estabh) -+ if (!sessp || !dnsc || !ss || !estabh) - return EINVAL; - -- info("ice: new session with %s-server at %s (username=%s)\n", -- srv->scheme == STUN_SCHEME_TURN ? "TURN" : "STUN", -- srv->host, user); -+ if (srv) { -+ info("ice: new session with %s-server at %s (username=%s)\n", -+ srv->scheme == STUN_SCHEME_TURN ? "TURN" : "STUN", -+ srv->host, user); - -- switch (srv->scheme) { -+ switch (srv->scheme) { - -- case STUN_SCHEME_STUN: -- usage = stun_usage_binding; -- break; -+ case STUN_SCHEME_STUN: -+ usage = stun_usage_binding; -+ break; - -- case STUN_SCHEME_TURN: -- usage = stun_usage_relay; -- break; -+ case STUN_SCHEME_TURN: -+ usage = stun_usage_relay; -+ break; - -- default: -- return ENOTSUP; -+ default: -+ return ENOTSUP; -+ } - } - - sess = mem_zalloc(sizeof(*sess), session_destructor); - if (!sess) - return ENOMEM; - -- if (0 == str_casecmp(mnat->id, "ice")) -- sess->mode = ICE_MODE_FULL; -- else if (0 == str_casecmp(mnat->id, "ice-lite")) -- sess->mode = ICE_MODE_LITE; -- - sess->sdp = mem_ref(ss); - sess->estabh = estabh; - sess->arg = arg; -@@ -535,11 +519,6 @@ static int session_alloc(struct mnat_sess **sessp, - sess->tiebrk = rand_u64(); - sess->offerer = offerer; - -- if (ICE_MODE_LITE == sess->mode) { -- err |= sdp_session_set_lattr(ss, true, -- ice_attr_lite, NULL); -- } -- - err |= sdp_session_set_lattr(ss, true, - ice_attr_ufrag, sess->lufrag); - err |= sdp_session_set_lattr(ss, true, -@@ -547,11 +526,17 @@ static int session_alloc(struct mnat_sess **sessp, - if (err) - goto out; - -- sess->turn = (srv->scheme == STUN_SCHEME_TURN); -+ if (srv) { -+ sess->turn = (srv->scheme == STUN_SCHEME_TURN); - -- err = stun_server_discover(&sess->dnsq, dnsc, usage, stun_proto_udp, -- af, srv->host, srv->port, -- dns_handler, sess); -+ err = stun_server_discover(&sess->dnsq, dnsc, -+ usage, stun_proto_udp, -+ af, srv->host, srv->port, -+ dns_handler, sess); -+ } -+ else { -+ tmr_start(&sess->tmr_async, 1, tmr_async_handler, sess); -+ } - - out: - if (err) -@@ -654,6 +639,21 @@ static bool all_gathered(const struct mnat_sess *sess) - } - - -+static bool all_completed(const struct mnat_sess *sess) -+{ -+ struct le *le; -+ -+ /* Check all conncheck flags */ -+ LIST_FOREACH(&sess->medial, le) { -+ struct mnat_media *mx = le->data; -+ if (!mx->complete) -+ return false; -+ } -+ -+ return true; -+} -+ -+ - static void gather_handler(int err, uint16_t scode, const char *reason, - void *arg) - { -@@ -693,7 +693,7 @@ static void conncheck_handler(int err, bool update, void *arg) - { - struct mnat_media *m = arg; - struct mnat_sess *sess = m->sess; -- struct le *le; -+ bool sess_complete = false; - - info("ice: %s: connectivity check is complete (update=%d)\n", - sdp_media_name(m->sdpm), update); -@@ -720,29 +720,24 @@ static void conncheck_handler(int err, bool update, void *arg) - cand1 = icem_selected_rcand(m->icem, 1); - cand2 = icem_selected_rcand(m->icem, 2); - -+ sess_complete = all_completed(sess); -+ - if (m->connh) { - m->connh(icem_lcand_addr(cand1), - icem_lcand_addr(cand2), - m->arg); - } -- -- /* Check all conncheck flags */ -- LIST_FOREACH(&sess->medial, le) { -- struct mnat_media *mx = le->data; -- if (!mx->complete) -- return; -- } - } - - /* call estab-handler and send re-invite */ -- if (sess->send_reinvite && update) { -+ if (sess_complete && sess->send_reinvite && update) { - - info("ice: %s: sending Re-INVITE with updated" - " default candidates\n", - sdp_media_name(m->sdpm)); - -- sess->estabh(0, 0, NULL, sess->arg); - sess->send_reinvite = false; -+ sess->estabh(0, 0, NULL, sess->arg); - } - } - -@@ -780,16 +775,14 @@ static int ice_start(struct mnat_sess *sess) - if (sdp_media_has_media(m->sdpm)) { - m->complete = false; - -- if (sess->mode == ICE_MODE_FULL) { -- err = icem_conncheck_start(m->icem); -- if (err) -- return err; -+ err = icem_conncheck_start(m->icem); -+ if (err) -+ return err; - -- /* set the pair states -- -- first media stream only */ -- if (sess->medial.head == le) { -- ice_candpair_set_states(m->icem); -- } -+ /* set the pair states -+ -- first media stream only */ -+ if (sess->medial.head == le) { -+ ice_candpair_set_states(m->icem); - } - } - else { -@@ -831,14 +824,14 @@ static int media_alloc(struct mnat_media **mp, struct mnat_sess *sess, - else - role = ICE_ROLE_CONTROLLED; - -- err = icem_alloc(&m->icem, sess->mode, role, -+ err = icem_alloc(&m->icem, ICE_MODE_FULL, role, - IPPROTO_UDP, ICE_LAYER, - sess->tiebrk, sess->lufrag, sess->lpwd, - conncheck_handler, m); - if (err) - goto out; - -- icem_conf(m->icem)->debug = ice.debug; -+ icem_conf(m->icem)->debug = LEVEL_DEBUG==log_level_get(); - icem_conf(m->icem)->rc = 4; - - icem_set_conf(m->icem, icem_conf(m->icem)); -@@ -967,22 +960,10 @@ static struct mnat mnat_ice = { - .updateh = update, - }; - --static struct mnat mnat_icelite = { -- .id = "ice-lite", -- .ftag = "+sip.ice", -- .wait_connected = true, -- .sessh = session_alloc, -- .mediah = media_alloc, -- .updateh = update, --}; -- - - static int module_init(void) - { -- conf_get_bool(conf_cur(), "ice_debug", &ice.debug); -- - mnat_register(baresip_mnatl(), &mnat_ice); -- mnat_register(baresip_mnatl(), &mnat_icelite); - - return 0; - } -@@ -990,7 +971,6 @@ static int module_init(void) - - static int module_close(void) - { -- mnat_unregister(&mnat_icelite); - mnat_unregister(&mnat_ice); - - return 0; -diff --git a/modules/menu/menu.c b/modules/menu/menu.c -index ddab8f6..78244dc 100644 ---- a/modules/menu/menu.c -+++ b/modules/menu/menu.c -@@ -296,7 +296,7 @@ static int cmd_answer(struct re_printf *pf, void *unused) - /* Stop any ongoing ring-tones */ - menu.play = mem_deref(menu.play); - -- ua_hold_answer(ua, NULL); -+ ua_hold_answer(ua, NULL, VIDMODE_ON); - - return err; - } -diff --git a/modules/winwave/src.c b/modules/winwave/src.c -index 9a776c6..53eba94 100644 ---- a/modules/winwave/src.c -+++ b/modules/winwave/src.c -@@ -87,7 +87,6 @@ static void CALLBACK waveInCallback(HWAVEOUT hwo, - struct ausrc_st *st = (struct ausrc_st *)dwInstance; - WAVEHDR *wh = (WAVEHDR *)dwParam1; - struct auframe af; -- MMTIME mmtime; - - (void)hwo; - (void)dwParam2; -@@ -109,12 +108,10 @@ static void CALLBACK waveInCallback(HWAVEOUT hwo, - if (st->inuse < (READ_BUFFERS-1)) - add_wave_in(st); - -- waveInGetPosition(st->wavein, &mmtime, sizeof(mmtime)); -- - af.fmt = st->fmt; - af.sampv = (void *)wh->lpData; - af.sampc = wh->dwBytesRecorded/st->sampsz; -- af.timestamp = mmtime.u.ms * 1000; -+ af.timestamp = tmr_jiffies_usec(); - - st->rh(&af, st->arg); - -diff --git a/src/account.c b/src/account.c -index 4cf3b6c..6a92222 100644 ---- a/src/account.c -+++ b/src/account.c -@@ -442,7 +442,7 @@ int account_alloc(struct account **accp, const char *sipaddr) - if (acc->mnatid) { - acc->mnat = mnat_find(baresip_mnatl(), acc->mnatid); - if (!acc->mnat) { -- warning("account: medianat not found: `%s'\n", -+ warning("account: medianat not found: '%s'\n", - acc->mnatid); - } - } -@@ -450,7 +450,7 @@ int account_alloc(struct account **accp, const char *sipaddr) - if (acc->mencid) { - acc->menc = menc_find(baresip_mencl(), acc->mencid); - if (!acc->menc) { -- warning("account: mediaenc not found: `%s'\n", -+ warning("account: mediaenc not found: '%s'\n", - acc->mencid); - } - } -@@ -715,6 +715,34 @@ int account_set_audio_codecs(struct account *acc, const char *codecs) - - - /** -+ * Sets video codecs -+ * -+ * @param acc User-Agent account -+ * @param codecs Comma separated list of video codecs (NULL to disable) -+ * -+ * @return 0 if success, otherwise errorcode -+ */ -+int account_set_video_codecs(struct account *acc, const char *codecs) -+{ -+ char buf[256]; -+ struct pl pl; -+ -+ if (!acc) -+ return EINVAL; -+ -+ list_clear(&acc->vidcodecl); -+ -+ if (codecs) { -+ re_snprintf(buf, sizeof(buf), ";video_codecs=%s", codecs); -+ pl_set_str(&pl, buf); -+ return video_codecs_decode(acc, &pl); -+ } -+ -+ return 0; -+} -+ -+ -+/** - * Sets the displayed name. Pass null in dname to disable display name - * - * @param acc User-Agent account -@@ -1241,10 +1269,72 @@ int account_debug(struct re_printf *pf, const struct account *acc) - } - err |= re_hprintf(pf, "\n"); - } -- err |= re_hprintf(pf, " call_transfer: %s\n", -+ err |= re_hprintf(pf, " call_transfer:%s\n", - account_call_transfer(acc)); -- err |= re_hprintf(pf, " extra: %s\n", -+ err |= re_hprintf(pf, " extra: %s\n", - acc->extra ? acc->extra : "none"); - - return err; - } -+ -+ -+/** -+ * Print the account information in JSON -+ * -+ * @param od Account dict -+ * @param odcfg Configuration dict -+ * @param acc User-Agent account -+ * -+ * @return 0 if success, otherwise errorcode -+ */ -+int account_json_api(struct odict *od, struct odict *odcfg, -+ const struct account *acc) -+{ -+ int err = 0; -+ struct odict *obn = NULL; -+ const char *stunhost = ""; -+ -+ if (!acc) -+ return 0; -+ -+ /* account */ -+ err |= odict_entry_add(od, "aor", ODICT_STRING, acc->aor); -+ if (acc->dispname) { -+ err |= odict_entry_add(od, "display_name", ODICT_STRING, -+ acc->dispname); -+ } -+ -+ /* config */ -+ if (acc->sipnat) { -+ err |= odict_entry_add(odcfg, "sip_nat", ODICT_STRING, -+ acc->sipnat); -+ } -+ -+ err |= odict_alloc(&obn, 8); -+ for (size_t i=0; ioutboundv); i++) { -+ if (acc->outboundv[i]) { -+ err |= odict_entry_add(obn, "outbound", ODICT_STRING, -+ acc->outboundv[i]); -+ } -+ } -+ err |= odict_entry_add(odcfg, "sip_nat_outbound", ODICT_ARRAY, obn); -+ -+ stunhost = account_stun_host(acc) ? account_stun_host(acc) : ""; -+ err |= odict_entry_add(odcfg, "stun_host", ODICT_STRING, stunhost); -+ err |= odict_entry_add(odcfg, "stun_port", ODICT_INT, -+ account_stun_port(acc)); -+ if (acc->stun_user) { -+ err |= odict_entry_add(odcfg, "stun_user", ODICT_STRING, -+ acc->stun_user); -+ } -+ -+ err |= odict_entry_add(odcfg, "answer_mode", ODICT_STRING, -+ answermode_str(acc->answermode)); -+ err |= odict_entry_add(odcfg, "call_transfer", ODICT_BOOL, acc->refer); -+ -+ err |= odict_entry_add(odcfg, "packet_time", ODICT_INT, -+ account_ptime(acc)); -+ -+ mem_deref(obn); -+ return err; -+} -diff --git a/src/audio.c b/src/audio.c -index 6d057ca..90225d2 100644 ---- a/src/audio.c -+++ b/src/audio.c -@@ -162,7 +162,6 @@ struct aurx { - size_t last_sampc; - - struct { -- uint64_t aubuf_current_jb; - uint64_t aubuf_overrun; - uint64_t aubuf_underrun; - uint64_t n_discard; -@@ -202,10 +201,29 @@ static const char *uri_aulevel = "urn:ietf:params:rtp-hdrext:ssrc-audio-level"; - */ - uint64_t audio_jb_current_value(const struct audio *au) - { -+ const struct aurx *rx; -+ - if (!au) - return 0; - -- return au->rx.stats.aubuf_current_jb; -+ rx = &au->rx; -+ -+ if (rx->aubuf) { -+ uint64_t b_p_ms; /* bytes per ms */ -+ -+ b_p_ms = aufmt_sample_size(rx->play_fmt) * -+ rx->auplay_prm.srate * rx->auplay_prm.ch / 1000; -+ -+ if (b_p_ms) { -+ uint64_t val; -+ -+ val = aubuf_cur_size(rx->aubuf) / b_p_ms; -+ -+ return val; -+ } -+ } -+ -+ return 0; - } - - -@@ -627,7 +645,6 @@ static void auplay_write_handler(void *sampv, size_t sampc, void *arg) - { - struct aurx *rx = arg; - size_t num_bytes = sampc * aufmt_sample_size(rx->play_fmt); -- uint64_t b_p_ms = 0; /* bytes per ms */ - - if (rx->aubuf_started && aubuf_cur_size(rx->aubuf) < num_bytes) { - -@@ -638,16 +655,6 @@ static void auplay_write_handler(void *sampv, size_t sampc, void *arg) - rx->stats.aubuf_underrun); - #endif - } -- b_p_ms = aufmt_sample_size(rx->play_fmt)* -- rx->auplay_prm.srate *rx->auplay_prm.ch / 1000; -- -- if (b_p_ms) { -- size_t val = aubuf_cur_size(rx->aubuf) / b_p_ms; -- -- if (rx->stats.aubuf_current_jb != val) { -- rx->stats.aubuf_current_jb = val; -- } -- } - - aubuf_read(rx->aubuf, sampv, num_bytes); - } -diff --git a/src/baresip.c b/src/baresip.c -index a437e7e..231302b 100644 ---- a/src/baresip.c -+++ b/src/baresip.c -@@ -49,9 +49,13 @@ static int cmd_quit(struct re_printf *pf, void *unused) - static int insmod_handler(struct re_printf *pf, void *arg) - { - const struct cmd_arg *carg = arg; -+ char path[256]; - int err; - -- err = module_load(carg->prm); -+ if (conf_get_str(conf_cur(), "module_path", path, sizeof(path))) -+ str_ncpy(path, ".", sizeof(path)); -+ -+ err = module_load(path, carg->prm); - if (err) { - return re_hprintf(pf, "insmod: ERROR: could not load module" - " '%s': %m\n", carg->prm, err); -diff --git a/src/call.c b/src/call.c -index 1fdae44..a4d59a8 100644 ---- a/src/call.c -+++ b/src/call.c -@@ -1067,10 +1067,11 @@ int call_progress(struct call *call) - * - * @param call Call to answer - * @param scode Status code -+ * @param vmode Wanted video mode - * - * @return 0 if success, otherwise errorcode - */ --int call_answer(struct call *call, uint16_t scode) -+int call_answer(struct call *call, uint16_t scode, enum vidmode vmode) - { - struct mbuf *desc; - int err; -@@ -1084,6 +1085,9 @@ int call_answer(struct call *call, uint16_t scode) - return 0; - } - -+ if (vmode == VIDMODE_OFF) -+ call->video = mem_deref(call->video); -+ - info("call: answering call from %s with %u\n", call->peer_uri, scode); - - if (call->got_offer) { -@@ -1405,6 +1409,8 @@ static int sipsess_offer_handler(struct mbuf **descp, - - if (got_offer) { - -+ call->got_offer = true; -+ - /* Decode SDP Offer */ - err = sdp_decode(call->sdp, msg->mb, true); - if (err) { -@@ -1432,6 +1438,8 @@ static int sipsess_answer_handler(const struct sip_msg *msg, void *arg) - - debug("call: got SDP answer (%zu bytes)\n", mbuf_get_left(msg->mb)); - -+ call->got_offer = false; -+ - if (msg_ctype_cmp(&msg->ctyp, "multipart", "mixed")) - (void)sdp_decode_multipart(&msg->ctyp.params, msg->mb); - -diff --git a/src/conf.c b/src/conf.c -index bfe59ba..0f654f4 100644 ---- a/src/conf.c -+++ b/src/conf.c -@@ -372,6 +372,31 @@ int conf_configure(void) - - - /** -+ * Configure the system from a buffer -+ * -+ * @param buf Buffer with config -+ * @param sz Size of buffer -+ * -+ * @return 0 if success, otherwise errorcode -+ */ -+int conf_configure_buf(const uint8_t *buf, size_t sz) -+{ -+ int err; -+ -+ if (!buf || !sz) -+ return EINVAL; -+ -+ conf_obj = mem_deref(conf_obj); -+ -+ err = conf_alloc_buf(&conf_obj, buf, sz); -+ if (err) -+ return err; -+ -+ return 0; -+} -+ -+ -+/** - * Load all modules from config file - * - * @return 0 if success, otherwise errorcode -diff --git a/src/core.h b/src/core.h -index 2c30b92..5164491 100644 ---- a/src/core.h -+++ b/src/core.h -@@ -54,7 +54,7 @@ struct account { - - /* parameters: */ - enum answermode answermode; /**< Answermode for incoming calls */ -- struct le acv[8]; /**< List elements for aucodecl */ -+ struct le acv[16]; /**< List elements for aucodecl */ - struct list aucodecl; /**< List of preferred audio-codecs */ - char *auth_user; /**< Authentication username */ - char *auth_pass; /**< Authentication password */ -@@ -220,6 +220,7 @@ int reg_register(struct reg *reg, const char *reg_uri, - void reg_unregister(struct reg *reg); - bool reg_isok(const struct reg *reg); - int reg_debug(struct re_printf *pf, const struct reg *reg); -+int reg_json_api(struct odict *od, const struct reg *reg); - int reg_status(struct re_printf *pf, const struct reg *reg); - int reg_af(const struct reg *reg); - -@@ -379,7 +380,6 @@ bool video_is_started(const struct video *v); - int video_decoder_set(struct video *v, struct vidcodec *vc, int pt_rx, - const char *fmtp); - void video_update_picture(struct video *v); --void video_sdp_attr_decode(struct video *v); - int video_print(struct re_printf *pf, const struct video *v); - - -diff --git a/src/module.c b/src/module.c -index c1a20b6..5a00620 100644 ---- a/src/module.c -+++ b/src/module.c -@@ -210,6 +210,7 @@ int module_preload(const char *module) - /** - * Load a module by name or by filename - * -+ * @param path Module path - * @param name Module name incl/excl extension, excluding module path - * - * @return 0 if success, otherwise errorcode -@@ -217,10 +218,10 @@ int module_preload(const char *module) - * example: "foo" - * example: "foo.so" - */ --int module_load(const char *name) -+int module_load(const char *path, const char *name) - { - char filename[256]; -- struct pl path, pl_name; -+ struct pl pl_path, pl_name; - int err; - - if (!str_isset(name)) -@@ -228,12 +229,10 @@ int module_load(const char *name) - - append_extension(filename, sizeof(filename), name); - -+ pl_set_str(&pl_path, path); - pl_set_str(&pl_name, filename); - -- if (conf_get(conf_cur(), "module_path", &path)) -- pl_set_str(&path, "."); -- -- err = load_module(NULL, &path, &pl_name); -+ err = load_module(NULL, &pl_path, &pl_name); - - return err; - } -diff --git a/src/net.c b/src/net.c -index d5d3ba6..82412e2 100644 ---- a/src/net.c -+++ b/src/net.c -@@ -256,7 +256,6 @@ bool net_check(struct network *net) - &laddr6, &net->laddr6); - } - #endif -- debug("net: check for IP changes: change=%d\n", change); - - return change; - } -diff --git a/src/reg.c b/src/reg.c -index 1be4892..26fcc7f 100644 ---- a/src/reg.c -+++ b/src/reg.c -@@ -242,6 +242,14 @@ static const char *print_scode(uint16_t scode) - } - - -+/** -+ * Print the registration debug information -+ * -+ * @param pf Print function -+ * @param reg Registration object -+ * -+ * @return 0 if success, otherwise errorcode -+ */ - int reg_debug(struct re_printf *pf, const struct reg *reg) - { - int err = 0; -@@ -260,6 +268,34 @@ int reg_debug(struct re_printf *pf, const struct reg *reg) - } - - -+/** -+ * Print the registration information in JSON -+ * -+ * @param od Registration dict -+ * @param reg Registration object -+ * -+ * @return 0 if success, otherwise errorcode -+ */ -+int reg_json_api(struct odict *od, const struct reg *reg) -+{ -+ int err = 0; -+ -+ if (!reg) -+ return 0; -+ -+ err |= odict_entry_add(od, "id", ODICT_INT, (int64_t) reg->id); -+ err |= odict_entry_add(od, "state", ODICT_BOOL, reg_isok(reg)); -+ err |= odict_entry_add(od, "code", ODICT_INT, (int64_t) reg->scode); -+ if (reg->srv) -+ err |= odict_entry_add(od, "srv", ODICT_STRING, reg->srv); -+ -+ err |= odict_entry_add(od, "ipv", ODICT_STRING, -+ af_name(reg->af)); -+ -+ return err; -+} -+ -+ - int reg_status(struct re_printf *pf, const struct reg *reg) - { - if (!reg) -diff --git a/src/ua.c b/src/ua.c -index f4992fa..d261890 100644 ---- a/src/ua.c -+++ b/src/ua.c -@@ -56,7 +56,7 @@ static struct { - bool use_udp; /**< Use UDP transport */ - bool use_tcp; /**< Use TCP transport */ - bool use_tls; /**< Use TLS transport */ -- bool delayed_close; -+ bool delayed_close; /**< Module will close SIP stack */ - sip_msg_h *subh; /**< Subscribe handler */ - ua_exit_h *exith; /**< UA Exit handler */ - void *arg; /**< UA Exit handler argument */ -@@ -395,7 +395,7 @@ static void call_event_handler(struct call *call, enum call_event ev, - break; - - case ANSWERMODE_AUTO: -- (void)call_answer(call, 200); -+ (void)call_answer(call, 200, VIDMODE_ON); - break; - - case ANSWERMODE_MANUAL: -@@ -972,12 +972,13 @@ void ua_hangup(struct ua *ua, struct call *call, - /** - * Answer an incoming call - * -- * @param ua User-Agent -- * @param call Call to answer, or NULL for current call -+ * @param ua User-Agent -+ * @param call Call to answer, or NULL for current call -+ * @param vmode Wanted video mode - * - * @return 0 if success, otherwise errorcode - */ --int ua_answer(struct ua *ua, struct call *call) -+int ua_answer(struct ua *ua, struct call *call, enum vidmode vmode) - { - if (!ua) - return EINVAL; -@@ -988,19 +989,20 @@ int ua_answer(struct ua *ua, struct call *call) - return ENOENT; - } - -- return call_answer(call, 200); -+ return call_answer(call, 200, vmode); - } - - - /** - * Put the current call on hold and answer the incoming call - * -- * @param ua User-Agent -- * @param call Call to answer, or NULL for current call -+ * @param ua User-Agent -+ * @param call Call to answer, or NULL for current call -+ * @param vmode Wanted video mode for the incoming call - * - * @return 0 if success, otherwise errorcode - */ --int ua_hold_answer(struct ua *ua, struct call *call) -+int ua_hold_answer(struct ua *ua, struct call *call, enum vidmode vmode) - { - struct call *pcall; - int err; -@@ -1025,7 +1027,7 @@ int ua_hold_answer(struct ua *ua, struct call *call) - return err; - } - -- return ua_answer(ua, call); -+ return ua_answer(ua, call, vmode); - } - - -@@ -1237,6 +1239,66 @@ int ua_debug(struct re_printf *pf, const struct ua *ua) - } - - -+/** -+ * Print the user-agent information in JSON -+ * -+ * @param od User-Agent dict -+ * @param ua User-Agent object -+ * -+ * @return 0 if success, otherwise errorcode -+ */ -+int ua_state_json_api(struct odict *od, const struct ua *ua) -+{ -+ struct odict *reg = NULL; -+ struct odict *cfg = NULL; -+ struct le *le; -+ size_t i = 0; -+ int err = 0; -+ -+ if (!ua) -+ return 0; -+ -+ err |= odict_alloc(®, 8); -+ err |= odict_alloc(&cfg, 8); -+ -+ /* user-agent info */ -+ err |= odict_entry_add(od, "cuser", ODICT_STRING, ua->cuser); -+ err |= odict_entry_add(od, "selected_ua", ODICT_BOOL, -+ ua == uag_current()); -+ -+ /* account info */ -+ err |= account_json_api(od, cfg, ua->acc); -+ if (err) -+ warning("ua: failed to encode json account (%m)\n", err); -+ -+ /* registration info */ -+ for (le = list_head(&ua->regl); le; le = le->next) { -+ struct reg *regm = le->data; -+ err |= reg_json_api(reg, regm); -+ ++i; -+ } -+ if (i > 1) -+ warning("ua: multiple registrations for one account"); -+ -+ err |= odict_entry_add(reg, "interval", ODICT_INT, -+ (int64_t) ua->acc->regint); -+ err |= odict_entry_add(reg, "q_value", ODICT_DOUBLE, ua->acc->regq); -+ -+ if (err) -+ warning("ua: failed to encode json registration (%m)\n", err); -+ -+ /* package */ -+ err |= odict_entry_add(od, "settings", ODICT_OBJECT, cfg); -+ err |= odict_entry_add(od, "registration", ODICT_OBJECT, reg); -+ if (err) -+ warning("ua: failed to encode json package (%m)\n", err); -+ -+ mem_deref(cfg); -+ mem_deref(reg); -+ return err; -+} -+ -+ - /* One instance */ - - -diff --git a/src/video.c b/src/video.c -index d2da341..0f092e9 100644 ---- a/src/video.c -+++ b/src/video.c -@@ -1149,6 +1149,22 @@ void video_stop(struct video *v) - } - - -+/** -+ * Stop the video display -+ * -+ * @param v Video object -+ */ -+void video_stop_display(struct video *v) -+{ -+ if (!v) -+ return; -+ -+ debug("video: stopping video display ..\n"); -+ -+ v->vrx.vidisp = mem_deref(v->vrx.vidisp); -+} -+ -+ - bool video_is_started(const struct video *v) - { - return v ? v->started : false; -diff --git a/test/call.c b/test/call.c -index 79b24a9..e827830 100644 ---- a/test/call.c -+++ b/test/call.c -@@ -78,7 +78,9 @@ struct fixture { - f->estab_action = ACTION_RECANCEL; \ - f->exp_estab = 1; \ - f->exp_closed = 1; \ -- mock_aucodec_register(baresip_aucodecl()); \ -+ /* NOTE: See Makefile TEST_MODULES */ \ -+ err = module_load(".", "g711"); \ -+ TEST_ERR(err); \ - \ - err = ua_alloc(&f->a.ua, \ - "A ;regint=0" prm); \ -@@ -119,7 +121,7 @@ struct fixture { - mem_deref(f->b.ua); \ - mem_deref(f->a.ua); \ - \ -- mock_aucodec_unregister(); \ -+ module_unload("g711"); \ - \ - uag_event_unregister(event_handler); \ - \ -@@ -174,7 +176,7 @@ static void event_handler(struct ua *ua, enum ua_event ev, - switch (f->behaviour) { - - case BEHAVIOUR_ANSWER: -- err = ua_answer(ua, call); -+ err = ua_answer(ua, call, VIDMODE_ON); - if (err) { - warning("ua_answer failed (%m)\n", err); - goto out; -@@ -197,7 +199,7 @@ static void event_handler(struct ua *ua, enum ua_event ev, - - case BEHAVIOUR_GET_HDRS: - hdrs = call_get_custom_hdrs(call); -- err = ua_answer(ua, call); -+ err = ua_answer(ua, call, VIDMODE_ON); - if (err) { - warning("ua_answer failed (%m)\n", err); - goto out; diff --git a/baresip.spec b/baresip.spec index ae89c40..82aa01a 100644 --- a/baresip.spec +++ b/baresip.spec @@ -1,11 +1,13 @@ Summary: Modular SIP user-agent with audio and video support Name: baresip Version: 0.6.6 -Release: 1%{?dist} +Release: 2%{?dist} License: BSD URL: http://www.creytiv.com/baresip.html Source0: https://github.com/baresip/baresip/archive/v%{version}/%{name}-%{version}.tar.gz -Patch0: baresip-0.6.6-3871768.patch +Source1: com.creytiv.baresip.desktop +# Latest fixes from Git (not yet available in a release) +Patch0: baresip-0.6.6-235c021.patch BuildRequires: make BuildRequires: gcc BuildRequires: libre-devel @@ -14,6 +16,8 @@ BuildRequires: openssl-devel %if 0%{?fedora} || (0%{?rhel} && 0%{?rhel} > 7) Recommends: %{name}-pulse%{?_isa} = %{version}-%{release} %endif +# Patch0 requires "git apply" due to binary patches +BuildRequires: git %description A modular SIP user-agent with support for audio and video, and many IETF @@ -105,7 +109,11 @@ This module implements video codecs using GStreamer 1.0 framework. Summary: GTK+ menu-based user interface module for baresip BuildRequires: pkgconfig(gtk+-2.0) >= 2.22 BuildRequires: pkgconfig(glib-2.0) >= 2.32 +BuildRequires: desktop-file-utils Requires: %{name}%{?_isa} = %{version}-%{release} +%if 0%{?fedora} || (0%{?rhel} && 0%{?rhel} > 7) +Requires: (gnome-shell-extension-topicons-plus if gnome-shell) +%endif %description gtk Baresip is a modular SIP user-agent with audio and video support. @@ -299,7 +307,7 @@ This module provides the X11 grabber video source driver. %prep %setup -q -%patch0 -p1 -b .3871768 +git apply -p1 < %{PATCH0} %build %make_build \ @@ -307,7 +315,7 @@ This module provides the X11 grabber video source driver. RELEASE=1 \ PREFIX=%{_prefix} \ MOD_PATH=%{_libdir}/%{name}/modules \ - EXTRA_CFLAGS="$RPM_OPT_FLAGS" \ + EXTRA_CFLAGS="$RPM_OPT_FLAGS -DDEFAULT_CAFILE='\"%{_sysconfdir}/pki/tls/certs/ca-bundle.crt\"' -DDEFAULT_AUDIO_DEVICE='\"pulse\"'" \ EXTRA_LFLAGS="$RPM_LD_FLAGS" %install @@ -316,6 +324,9 @@ This module provides the X11 grabber video source driver. # Correct module permissions to add executable bit chmod 755 $RPM_BUILD_ROOT%{_libdir}/%{name}/modules/*.so +# Install com.creytiv.baresip.desktop file +desktop-file-install --dir=$RPM_BUILD_ROOT%{_datadir}/applications/ %{SOURCE1} + %files %license docs/COPYING %doc docs/ChangeLog docs/THANKS docs/examples @@ -326,6 +337,7 @@ chmod 755 $RPM_BUILD_ROOT%{_libdir}/%{name}/modules/*.so %{_libdir}/%{name}/modules/aubridge.so %{_libdir}/%{name}/modules/aufile.so %{_libdir}/%{name}/modules/auloop.so +%{_libdir}/%{name}/modules/ausine.so %{_libdir}/%{name}/modules/b2bua.so %{_libdir}/%{name}/modules/cons.so %{_libdir}/%{name}/modules/contact.so @@ -381,6 +393,7 @@ chmod 755 $RPM_BUILD_ROOT%{_libdir}/%{name}/modules/*.so %files gtk %{_libdir}/%{name}/modules/gtk.so +%{_datadir}/applications/com.creytiv.baresip.desktop %files jack %{_libdir}/%{name}/modules/jack.so @@ -435,6 +448,10 @@ chmod 755 $RPM_BUILD_ROOT%{_libdir}/%{name}/modules/*.so %{_libdir}/%{name}/modules/x11grab.so %changelog +* Wed Jul 01 2020 Robert Scheck 0.6.6-2 +- Include latest features and fixes from upstream +- Changes to match the Fedora Packaging Guidelines (#1843279 #c1) + * Thu May 28 2020 Robert Scheck 0.6.6-1 - Upgrade to 0.6.6 (#1843279) - Initial spec file for Fedora and Red Hat Enterprise Linux diff --git a/com.creytiv.baresip.desktop b/com.creytiv.baresip.desktop new file mode 100644 index 0000000..ddfb91d --- /dev/null +++ b/com.creytiv.baresip.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Type=Application +Name=Baresip +GenericName=SIP softphone +Comment=Modular SIP user-agent with audio and video support +Icon=call-start +Exec=baresip +Terminal=false +Categories=GNOME;GTK;Network;Telephony; +Keywords=VoIP; +StartupNotify=true