openSUSE Commits
Threads by month
- ----- 2024 -----
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
June 2020
- 1 participants
- 3943 discussions
Hello community,
here is the log from the commit of package gama for openSUSE:Factory checked in at 2020-06-30 21:58:41
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gama (Old)
and /work/SRC/openSUSE:Factory/.gama.new.3060 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gama"
Tue Jun 30 21:58:41 2020 rev:12 rq:817804 version:2.08
Changes:
--------
--- /work/SRC/openSUSE:Factory/gama/gama.changes 2019-09-09 12:34:47.745478106 +0200
+++ /work/SRC/openSUSE:Factory/.gama.new.3060/gama.changes 2020-06-30 21:59:27.563314892 +0200
@@ -1,0 +2,7 @@
+Sat Jun 27 21:51:09 UTC 2020 - Andreas Stieger <andreas.stieger(a)gmx.de>
+
+- update to 2.08:
+ * updated tests
+ * code cleanup
+
+-------------------------------------------------------------------
Old:
----
gama-2.07.tar.gz
gama-2.07.tar.gz.sig
New:
----
gama-2.08.tar.gz
gama-2.08.tar.gz.sig
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gama.spec ++++++
--- /var/tmp/diff_new_pack.xGihBF/_old 2020-06-30 21:59:28.863318916 +0200
+++ /var/tmp/diff_new_pack.xGihBF/_new 2020-06-30 21:59:28.863318916 +0200
@@ -1,7 +1,7 @@
#
# spec file for package gama
#
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: gama
-Version: 2.07
+Version: 2.08
Release: 0
Summary: Adjustment of geodetic networks
License: GPL-3.0-or-later
@@ -47,7 +47,7 @@
%build
%configure
-make %{?_smp_mflags}
+%make_build
%install
%make_install
++++++ gama-2.07.tar.gz -> gama-2.08.tar.gz ++++++
++++ 18518 lines of diff (skipped)
++++++ gama.keyring ++++++
--- /var/tmp/diff_new_pack.xGihBF/_old 2020-06-30 21:59:29.635321305 +0200
+++ /var/tmp/diff_new_pack.xGihBF/_new 2020-06-30 21:59:29.635321305 +0200
@@ -1,4 +1,4 @@
-GPG keys of Ales Cepek <cepek>
+GPG keys of Aleš Čepek <cepek>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.11 (GNU/Linux)
@@ -24,3 +24,44 @@
=j9Ri
-----END PGP PUBLIC KEY BLOCK-----
+GPG keys of Petra Millarová <millapet>
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1
+
+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
+=OwT4
+-----END PGP PUBLIC KEY BLOCK-----
+
1
0
Hello community,
here is the log from the commit of package coturn for openSUSE:Factory checked in at 2020-06-30 21:58:31
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/coturn (Old)
and /work/SRC/openSUSE:Factory/.coturn.new.3060 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "coturn"
Tue Jun 30 21:58:31 2020 rev:4 rq:817876 version:4.5.1.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/coturn/coturn.changes 2020-05-04 18:44:18.933520997 +0200
+++ /work/SRC/openSUSE:Factory/.coturn.new.3060/coturn.changes 2020-06-30 21:59:17.427283519 +0200
@@ -1,0 +2,12 @@
+Tue Jun 30 07:54:01 UTC 2020 - Johannes Weberhofer <jweberhofer(a)weberhofer.at>
+
+- Version 4.5.1.3:
+ * Remove reference to SSLv3: gh#coturn/coturn#566
+ * Ignore MD5 for BoringSSL: gh#coturn/coturn#579
+ * STUN response buffer not initialized properly; he issue found and
+ reported gh#coturn/coturn#583 by Felix Dörre all credits belongs to
+ him. CVE-2020-4067, boo#1173510
+
+- Let coturn allow binding to ports below 1024 per default
+
+-------------------------------------------------------------------
Old:
----
coturn-4.5.1.2.tar.gz
New:
----
coturn-4.5.1.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ coturn.spec ++++++
--- /var/tmp/diff_new_pack.o3BNUa/_old 2020-06-30 21:59:18.899288075 +0200
+++ /var/tmp/diff_new_pack.o3BNUa/_new 2020-06-30 21:59:18.903288088 +0200
@@ -24,7 +24,7 @@
%endif
%bcond_without apparmor
Name: coturn
-Version: 4.5.1.2
+Version: 4.5.1.3
Release: 0
Summary: TURN and STUN server for VoIP
License: BSD-3-Clause
++++++ README.SUSE ++++++
--- /var/tmp/diff_new_pack.o3BNUa/_old 2020-06-30 21:59:18.935288187 +0200
+++ /var/tmp/diff_new_pack.o3BNUa/_new 2020-06-30 21:59:18.935288187 +0200
@@ -10,8 +10,3 @@
* /etc/syconfig/coturn has the option '--no-software-attribute' enabled to hide
the software version for production issue.
-* The trunserveer can only be bound to a port belo 1024 if you add the
- AmbientCapabilities=CAP_NET_BIND_SERVICE section to the service file.
-
-
-
++++++ coturn-4.5.1.2.tar.gz -> coturn-4.5.1.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/coturn-4.5.1.2/.gitignore new/coturn-4.5.1.3/.gitignore
--- old/coturn-4.5.1.2/.gitignore 2020-04-30 20:45:54.000000000 +0200
+++ new/coturn-4.5.1.3/.gitignore 2020-06-24 17:13:42.000000000 +0200
@@ -5,3 +5,4 @@
lib
sqlite
examples/ca/CA.pl
+.vscode
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/coturn-4.5.1.2/ChangeLog new/coturn-4.5.1.3/ChangeLog
--- old/coturn-4.5.1.2/ChangeLog 2020-04-30 20:45:54.000000000 +0200
+++ new/coturn-4.5.1.3/ChangeLog 2020-06-24 17:13:42.000000000 +0200
@@ -1,3 +1,21 @@
+24/06/2020 Oleg Moskalenko <mom040267(a)gmail.com> Mihály Mészáros <misi(a)majd.eu>
+Version 4.5.1.3 'dan Eider':
+ - merge PR #575: (by osterik)
+ * fix rpm packaging
+ - merge PR #576: (by osterik)
+ * tell tar to not include the metadata into release
+ - merge PR #574: (by DevRockstarZ)
+ * change Docker turnserver.conf to latest turnserver.conf
+ - merge PR #566: (by bpcurse)
+ * Remove reference to SSLv3
+ - merge PR #579: (by islamoglus)
+ *Ignore MD5 for BoringSSL
+ - merge PR #577: (by osterik)
+ *build RPM from local folder instead of git repo
+ - Fix for CVE-2020-4067
+ * STUN response buffer not initialized properly
+ * The issue found and reported #583 by Felix Dörre all credits belongs to him.
+
30/04/2020 Oleg Moskalenko <mom040267(a)gmail.com> Mihály Mészáros <misi(a)majd.eu>
Version 4.5.1.2 'dan Eider':
- merge regression fix: (by Mathieu Brunot)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/coturn-4.5.1.2/docker/coturn/turnserver.conf new/coturn-4.5.1.3/docker/coturn/turnserver.conf
--- old/coturn-4.5.1.2/docker/coturn/turnserver.conf 2020-04-30 20:45:54.000000000 +0200
+++ new/coturn-4.5.1.3/docker/coturn/turnserver.conf 2020-06-24 17:13:42.000000000 +0200
@@ -1,52 +1,60 @@
# Coturn TURN SERVER configuration file
#
-# Boolean values note: where boolean value is supposed to be used,
-# you can use '0', 'off', 'no', 'false', 'f' as 'false,
-# and you can use '1', 'on', 'yes', 'true', 't' as 'true'
-# If the value is missed, then it means 'true'.
+# Boolean values note: where a boolean value is supposed to be used,
+# you can use '0', 'off', 'no', 'false', or 'f' as 'false,
+# and you can use '1', 'on', 'yes', 'true', or 't' as 'true'
+# If the value is missing, then it means 'true' by default.
#
# Listener interface device (optional, Linux only).
-# NOT RECOMMENDED.
+# NOT RECOMMENDED.
#
#listening-device=eth0
# TURN listener port for UDP and TCP (Default: 3478).
-# Note: actually, TLS & DTLS sessions can connect to the
+# Note: actually, TLS & DTLS sessions can connect to the
# "plain" TCP & UDP port(s), too - if allowed by configuration.
#
listening-port=3478
# TURN listener port for TLS (Default: 5349).
# Note: actually, "plain" TCP & UDP sessions can connect to the TLS & DTLS
-# port(s), too - if allowed by configuration. The TURN server
+# port(s), too - if allowed by configuration. The TURN server
# "automatically" recognizes the type of traffic. Actually, two listening
# endpoints (the "plain" one and the "tls" one) are equivalent in terms of
-# functionality; but we keep both endpoints to satisfy the RFC 5766 specs.
-# For secure TCP connections, we currently support SSL version 3 and
+# functionality; but Coturn keeps both endpoints to satisfy the RFC 5766 specs.
+# For secure TCP connections, Coturn currently supports SSL version 3 and
# TLS version 1.0, 1.1 and 1.2.
-# For secure UDP connections, we support DTLS version 1.
+# For secure UDP connections, Coturn supports DTLS version 1.
#
tls-listening-port=5349
# Alternative listening port for UDP and TCP listeners;
-# default (or zero) value means "listening port plus one".
+# default (or zero) value means "listening port plus one".
# This is needed for RFC 5780 support
-# (STUN extension specs, NAT behavior discovery). The TURN Server
-# supports RFC 5780 only if it is started with more than one
+# (STUN extension specs, NAT behavior discovery). The TURN Server
+# supports RFC 5780 only if it is started with more than one
# listening IP address of the same family (IPv4 or IPv6).
# RFC 5780 is supported only by UDP protocol, other protocols
# are listening to that endpoint only for "symmetry".
#
#alt-listening-port=0
-
+
# Alternative listening port for TLS and DTLS protocols.
# Default (or zero) value means "TLS listening port plus one".
#
#alt-tls-listening-port=0
+# Some network setups will require using a TCP reverse proxy in front
+# of the STUN server. If the proxy port option is set a single listener
+# is started on the given port that accepts connections using the
+# haproxy proxy protocol v2.
+# (https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt)
+#
+#tcp-proxy-port=5555
+
# Listener IP address of relay server. Multiple listeners can be specified.
-# If no IP(s) specified in the config file or in the command line options,
+# If no IP(s) specified in the config file or in the command line options,
# then all IPv4 and IPv6 system IPs will be used for listening.
#
#listening-ip=172.17.19.101
@@ -61,7 +69,7 @@
# they do not support STUN RFC 5780 functionality (CHANGE REQUEST).
#
# 2) Auxiliary servers also are never returning ALTERNATIVE-SERVER reply.
-#
+#
# Valid formats are 1.2.3.4:5555 for IPv4 and [1:2::3:4]:5555 for IPv6.
#
# There may be multiple aux-server options, each will be used for listening
@@ -73,7 +81,7 @@
# (recommended for older Linuxes only)
# Automatically balance UDP traffic over auxiliary servers (if configured).
# The load balancing is using the ALTERNATE-SERVER mechanism.
-# The TURN client must support 300 ALTERNATE-SERVER response for this
+# The TURN client must support 300 ALTERNATE-SERVER response for this
# functionality.
#
#udp-self-balance
@@ -83,13 +91,13 @@
#
#relay-device=eth1
-# Relay address (the local IP address that will be used to relay the
+# Relay address (the local IP address that will be used to relay the
# packets to the peer).
# Multiple relay addresses may be used.
# The same IP(s) can be used as both listening IP(s) and relay IP(s).
#
# If no relay IP(s) specified, then the turnserver will apply the default
-# policy: it will decide itself which relay addresses to be used, and it
+# policy: it will decide itself which relay addresses to be used, and it
# will always be using the client socket IP address as the relay IP address
# of the TURN session (if the requested relay address family is the same
# as the family of the client socket).
@@ -112,35 +120,33 @@
# that option must be used several times, each entry must
# have form "-X <public-ip/private-ip>", to map all involved addresses.
# RFC5780 NAT discovery STUN functionality will work correctly,
-# if the addresses are mapped properly, even when the TURN server itself
+# if the addresses are mapped properly, even when the TURN server itself
# is behind A NAT.
#
# By default, this value is empty, and no address mapping is used.
#
-#external-ip=60.70.80.91
+external-ip=193.224.22.37
#
#OR:
#
#external-ip=60.70.80.91/172.17.19.101
#external-ip=60.70.80.92/172.17.19.102
-#external-ip=60.70.80.92/172.17.19.102
-external-ip=193.224.22.37
# Number of the relay threads to handle the established connections
# (in addition to authentication thread and the listener thread).
-# If explicitly set to 0 then application runs relay process in a
-# single thread, in the same thread with the listener process
+# If explicitly set to 0 then application runs relay process in a
+# single thread, in the same thread with the listener process
# (the authentication thread will still be a separate thread).
#
-# If this parameter is not set, then the default OS-dependent
+# If this parameter is not set, then the default OS-dependent
# thread pattern algorithm will be employed. Usually the default
-# algorithm is the most optimal, so you have to change this option
-# only if you want to make some fine tweaks.
+# algorithm is optimal, so you have to change this option
+# if you want to make some fine tweaks.
#
# In the older systems (Linux kernel before 3.9),
# the number of UDP threads is always one thread per network listening
-# endpoint - including the auxiliary endpoints - unless 0 (zero) or
+# endpoint - including the auxiliary endpoints - unless 0 (zero) or
# 1 (one) value is set.
#
#relay-threads=0
@@ -150,15 +156,15 @@
#
min-port=49152
max-port=65535
-
+
# Uncomment to run TURN server in 'normal' 'moderate' verbose mode.
# By default the verbose mode is off.
verbose
-
+
# Uncomment to run TURN server in 'extra' verbose mode.
# This mode is very annoying and produces lots of output.
-# Not recommended under any normal circumstances.
-#
+# Not recommended under normal circumstances.
+#
#Verbose
# Uncomment to use fingerprints in the TURN messages.
@@ -171,11 +177,11 @@
#
lt-cred-mech
-# This option is opposite to lt-cred-mech.
+# This option is the opposite of lt-cred-mech.
# (TURN Server with no-auth option allows anonymous access).
# If neither option is defined, and no users are defined,
-# then no-auth is default. If at least one user is defined,
-# in this file or in command line or in usersdb file, then
+# then no-auth is default. If at least one user is defined,
+# in this file, in command line or in usersdb file, then
# lt-cred-mech is default.
#
#no-auth
@@ -185,44 +191,43 @@
# Flag that sets a special authorization option that is based upon authentication secret.
#
# This feature's purpose is to support "TURN Server REST API", see
-# "TURN REST API" link in the project's page
+# "TURN REST API" link in the project's page
# https://github.com/coturn/coturn/
#
# This option is used with timestamp:
-#
+#
# usercombo -> "timestamp:userid"
# turn user -> usercombo
# turn password -> base64(hmac(secret key, usercombo))
#
# This allows TURN credentials to be accounted for a specific user id.
-# If you don't have a suitable id, the timestamp alone can be used.
-# This option is just turning on secret-based authentication.
-# The actual value of the secret is defined either by option static-auth-secret,
+# If you don't have a suitable id, then the timestamp alone can be used.
+# This option is enabled by turning on secret-based authentication.
+# The actual value of the secret is defined either by the option static-auth-secret,
# or can be found in the turn_secret table in the database (see below).
-#
+#
# Read more about it:
# - https://tools.ietf.org/html/draft-uberti-behave-turn-rest-00
# - https://www.ietf.org/proceedings/87/slides/slides-87-behave-10.pdf
#
-# Be aware that use-auth-secret overrides some part of lt-cred-mech.
-# Notice that this feature depends internally on lt-cred-mech, so if you set
-# use-auth-secret then it enables internally automatically lt-cred-mech option
-# like if you enable both.
-#
-# You can use only one of the to auth mechanisms in the same time because,
-# both mechanism use the username and password validation in different way.
-#
-# This way be aware that you can't use both auth mechnaism in the same time!
-# Use in config either the lt-cred-mech or the use-auth-secret
+# Be aware that use-auth-secret overrides some parts of lt-cred-mech.
+# The use-auth-secret feature depends internally on lt-cred-mech, so if you set
+# this option then it automatically enables lt-cred-mech internally
+# as if you had enabled both.
+#
+# Note that you can use only one auth mechanism at the same time! This is because,
+# both mechanisms conduct username and password validation in different ways.
+#
+# Use either lt-cred-mech or use-auth-secret in the conf
# to avoid any confusion.
#
#use-auth-secret
-# 'Static' authentication secret value (a string) for TURN REST API only.
+# 'Static' authentication secret value (a string) for TURN REST API only.
# If not set, then the turn server
-# will try to use the 'dynamic' value in turn_secret table
-# in user database (if present). The database-stored value can be changed on-the-fly
-# by a separate program, so this is why that other mode is 'dynamic'.
+# will try to use the 'dynamic' value in the turn_secret table
+# in the user database (if present). The database-stored value can be changed on-the-fly
+# by a separate program, so this is why that mode is considered 'dynamic'.
#
#static-auth-secret=north
@@ -236,10 +241,10 @@
#
#oauth
-# 'Static' user accounts for long term credentials mechanism, only.
+# 'Static' user accounts for the long term credentials mechanism, only.
# This option cannot be used with TURN REST API.
-# 'Static' user accounts are NOT dynamically checked by the turnserver process,
-# so that they can NOT be changed while the turnserver is running.
+# 'Static' user accounts are NOT dynamically checked by the turnserver process,
+# so they can NOT be changed while the turnserver is running.
#
#user=username1:key1
#user=username2:key2
@@ -257,7 +262,7 @@
# password. If it has 0x then it is a key, otherwise it is a password).
#
# The corresponding user account entry in the config file will be:
-#
+#
#user=ninefingers:0xbc807ee29df3c9ffa736523fb2c4e8ee
# Or, equivalently, with open clear password (less secure):
#user=ninefingers:youhavetoberealistic
@@ -265,95 +270,83 @@
# SQLite database file name.
#
-# Default file name is /var/db/turndb or /usr/local/var/db/turndb or
+# The default file name is /var/db/turndb or /usr/local/var/db/turndb or
# /var/lib/turn/turndb.
-#
+#
#userdb=/var/db/turndb
-# PostgreSQL database connection string in the case that we are using PostgreSQL
+# PostgreSQL database connection string in the case that you are using PostgreSQL
# as the user database.
-# This database can be used for long-term credential mechanism
-# and it can store the secret value for secret-based timed authentication in TURN REST API.
+# This database can be used for the long-term credential mechanism
+# and it can store the secret value for secret-based timed authentication in TURN REST API.
# See http://www.postgresql.org/docs/8.4/static/libpq-connect.html for 8.x PostgreSQL
-# versions connection string format, see
+# versions connection string format, see
# http://www.postgresql.org/docs/9.2/static/libpq-connect.html#LIBPQ-CONNSTRI…
# for 9.x and newer connection string formats.
#
#psql-userdb="host=<host> dbname=<database-name> user=<database-user> password=<database-user-password> connect_timeout=30"
-#psql-userdb="host=postgresql dbname=coturn user=coturn password=CHANGE_ME connect_timeout=30"
-
-# MySQL database connection string in the case that we are using MySQL
+# MySQL database connection string in the case that you are using MySQL
# as the user database.
-# This database can be used for long-term credential mechanism
+# This database can be used for the long-term credential mechanism
# and it can store the secret value for secret-based timed authentication in TURN REST API.
#
-# Optional connection string parameters for the secure communications (SSL):
-# ca, capath, cert, key, cipher
-# (see http://dev.mysql.com/doc/refman/5.1/en/ssl-options.html for the
+# Optional connection string parameters for the secure communications (SSL):
+# ca, capath, cert, key, cipher
+# (see http://dev.mysql.com/doc/refman/5.1/en/ssl-options.html for the
# command options description).
#
-# Use string format as below (space separated parameters, all optional):
+# Use the string format below (space separated parameters, all optional):
#
-#mysql-userdb="host=<host> dbname=<database-name> user=<database-user> password=<database-user-password> port=<port> connect_timeout=<seconds> read_timeout=<seconds>"
-
mysql-userdb="host=mysql dbname=coturn user=coturn password=CHANGE_ME port=3306 connect_timeout=10 read_timeout=10"
-# If you want to use in the MySQL connection string the password in encrypted format,
-# then set in this option the MySQL password encryption secret key file.
+# If you want to use an encrypted password in the MySQL connection string,
+# then set the MySQL password encryption secret key file with this option.
#
-# Warning: If this option is set, then mysql password must be set in "mysql-userdb" in encrypted format!
-# If you want to use cleartext password then do not set this option!
+# Warning: If this option is set, then the mysql password must be set in "mysql-userdb" in an encrypted format!
+# If you want to use a cleartext password then do not set this option!
#
-# This is the file path which contain secret key of aes encryption while using password encryption.
+# This is the file path for the aes encrypted secret key used for password encryption.
#
#secret-key-file=/path/
-# MongoDB database connection string in the case that we are using MongoDB
+# MongoDB database connection string in the case that you are using MongoDB
# as the user database.
# This database can be used for long-term credential mechanism
-# and it can store the secret value for secret-based timed authentication in TURN REST API.
-# Use string format is described at http://hergert.me/docs/mongo-c-driver/mongoc_uri.html
+# and it can store the secret value for secret-based timed authentication in TURN REST API.
+# Use the string format described at http://hergert.me/docs/mongo-c-driver/mongoc_uri.html
#
#mongo-userdb="mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]"
-#mongo-userdb="mongodb://coturn:CHANGE_ME@mongodb/coturn"
-#mongo-userdb="mongodb://mongodb/coturn"
-
-# Redis database connection string in the case that we are using Redis
+# Redis database connection string in the case that you are using Redis
# as the user database.
# This database can be used for long-term credential mechanism
-# and it can store the secret value for secret-based timed authentication in TURN REST API.
-# Use string format as below (space separated parameters, all optional):
+# and it can store the secret value for secret-based timed authentication in TURN REST API.
+# Use the string format below (space separated parameters, all optional):
#
#redis-userdb="ip=<ip-address> dbname=<database-number> password=<database-user-password> port=<port> connect_timeout=<seconds>"
-#redis-userdb="ip=redis dbname=2 password=CHANGE_ME connect_timeout=30"
-
# Redis status and statistics database connection string, if used (default - empty, no Redis stats DB used).
# This database keeps allocations status information, and it can be also used for publishing
# and delivering traffic and allocation event notifications.
-# The connection string has the same parameters as redis-userdb connection string.
-# Use string format as below (space separated parameters, all optional):
+# The connection string has the same parameters as redis-userdb connection string.
+# Use the string format below (space separated parameters, all optional):
#
#redis-statsdb="ip=<ip-address> dbname=<database-number> password=<database-user-password> port=<port> connect_timeout=<seconds>"
-#redis-statsdb="ip=redis dbname=2 password=CHANGE_ME connect_timeout=30"
-
-# The default realm to be used for the users when no explicit
-# origin/realm relationship was found in the database, or if the TURN
+# The default realm to be used for the users when no explicit
+# origin/realm relationship is found in the database, or if the TURN
# server is not using any database (just the commands-line settings
-# and the userdb file). Must be used with long-term credentials
+# and the userdb file). Must be used with long-term credentials
# mechanism or with TURN REST API.
#
-# Note: If default realm is not specified at all, then realm falls back to the host domain name.
-# If domain name is empty string, or '(None)', then it is initialized to am empty string.
+# Note: If the default realm is not specified, then realm falls back to the host domain name.
+# If the domain name string is empty, or set to '(None)', then it is initialized as an empty string.
#
-#realm=mycompany.org
realm=example.org
-# The flag that sets the origin consistency
-# check: across the session, all requests must have the same
+# This flag sets the origin consistency
+# check. Across the session, all requests must have the same
# main ORIGIN attribute value (if the ORIGIN was
# initially used by the session).
#
@@ -373,7 +366,7 @@
# Max bytes-per-second bandwidth a TURN session is allowed to handle
# (input and output network streams are treated separately). Anything above
-# that limit will be dropped or temporary suppressed (within
+# that limit will be dropped or temporarily suppressed (within
# the available buffer limits).
# This option can also be set through the database, for a particular realm.
#
@@ -417,11 +410,11 @@
#no-tcp-relay
# Uncomment if extra security is desired,
-# with nonce value having limited lifetime.
+# with nonce value having a limited lifetime.
# By default, the nonce value is unique for a session,
-# and has unlimited lifetime.
-# Set this option to limit the nonce lifetime.
-# It defaults to 600 secs (10 min) if no value is provided. After that delay,
+# and has an unlimited lifetime.
+# Set this option to limit the nonce lifetime.
+# It defaults to 600 secs (10 min) if no value is provided. After that delay,
# the client will get 438 error and will have to re-authenticate itself.
#
#stale-nonce=600
@@ -447,18 +440,17 @@
#permission-lifetime=300
# Certificate file.
-# Use an absolute path or path relative to the
+# Use an absolute path or path relative to the
# configuration file.
+# Use PEM file format.
#
-#cert=/usr/local/etc/turn_server_cert.pem
cert=/etc/ssl/certs/cert.pem
# Private key file.
-# Use an absolute path or path relative to the
+# Use an absolute path or path relative to the
# configuration file.
# Use PEM file format.
#
-#pkey=/usr/local/etc/turn_server_pkey.pem
pkey=/etc/ssl/private/privkey.pem
# Private key file password, if it is in encoded format.
@@ -471,29 +463,29 @@
#
#cipher-list="DEFAULT"
-# CA file in OpenSSL format.
+# CA file in OpenSSL format.
# Forces TURN server to verify the client SSL certificates.
-# By default it is not set: there is no default value and the client
+# By default this is not set: there is no default value and the client
# certificate is not checked.
#
# Example:
#CA-file=/etc/ssh/id_rsa.cert
-# Curve name for EC ciphers, if supported by OpenSSL
-# library (TLS and DTLS). The default value is prime256v1,
+# Curve name for EC ciphers, if supported by OpenSSL
+# library (TLS and DTLS). The default value is prime256v1,
# if pre-OpenSSL 1.0.2 is used. With OpenSSL 1.0.2+,
# an optimal curve will be automatically calculated, if not defined
# by this option.
#
#ec-curve-name=prime256v1
-# Use 566 bits predefined DH TLS key. Default size of the key is 1066.
+# Use 566 bits predefined DH TLS key. Default size of the key is 2066.
#
#dh566
-# Use 2066 bits predefined DH TLS key. Default size of the key is 1066.
+# Use 1066 bits predefined DH TLS key. Default size of the key is 2066.
#
-#dh2066
+#dh1066
# Use custom DH TLS key, stored in PEM format in the file.
# Flags --dh566 and --dh2066 are ignored when the DH key is taken from a file.
@@ -501,21 +493,21 @@
#dh-file=<DH-PEM-file-name>
# Flag to prevent stdout log messages.
-# By default, all log messages are going to both stdout and to
-# the configured log file. With this option everything will be
-# going to the configured log only (unless the log file itself is stdout).
+# By default, all log messages go to both stdout and to
+# the configured log file. With this option everything will
+# go to the configured log only (unless the log file itself is stdout).
#
#no-stdout-log
# Option to set the log file name.
-# By default, the turnserver tries to open a log file in
-# /var/log, /var/tmp, /tmp and current directories directories
-# (which open operation succeeds first that file will be used).
+# By default, the turnserver tries to open a log file in
+# /var/log, /var/tmp, /tmp and the current directory
+# (Whichever file open operation succeeds first will be used).
# With this option you can set the definite log file name.
-# The special names are "stdout" and "-" - they will force everything
+# The special names are "stdout" and "-" - they will force everything
# to the stdout. Also, the "syslog" name will force everything to
-# the system log (syslog).
-# In the runtime, the logfile can be reset with the SIGHUP signal
+# the system log (syslog).
+# In the runtime, the logfile can be reset with the SIGHUP signal
# to the turnserver process.
#
#log-file=/var/tmp/turn.log
@@ -531,40 +523,40 @@
#simple-log
# Option to set the "redirection" mode. The value of this option
-# will be the address of the alternate server for UDP & TCP service in form of
+# will be the address of the alternate server for UDP & TCP service in the form of
# <ip>[:<port>]. The server will send this value in the attribute
# ALTERNATE-SERVER, with error 300, on ALLOCATE request, to the client.
# Client will receive only values with the same address family
-# as the client network endpoint address family.
-# See RFC 5389 and RFC 5766 for ALTERNATE-SERVER functionality description.
+# as the client network endpoint address family.
+# See RFC 5389 and RFC 5766 for the description of ALTERNATE-SERVER functionality.
# The client must use the obtained value for subsequent TURN communications.
-# If more than one --alternate-server options are provided, then the functionality
-# can be more accurately described as "load-balancing" than a mere "redirection".
-# If the port number is omitted, then the default port
+# If more than one --alternate-server option is provided, then the functionality
+# can be more accurately described as "load-balancing" than a mere "redirection".
+# If the port number is omitted, then the default port
# number 3478 for the UDP/TCP protocols will be used.
-# Colon (:) characters in IPv6 addresses may conflict with the syntax of
-# the option. To alleviate this conflict, literal IPv6 addresses are enclosed
-# in square brackets in such resource identifiers, for example:
-# [2001:db8:85a3:8d3:1319:8a2e:370:7348]:3478 .
+# Colon (:) characters in IPv6 addresses may conflict with the syntax of
+# the option. To alleviate this conflict, literal IPv6 addresses are enclosed
+# in square brackets in such resource identifiers, for example:
+# [2001:db8:85a3:8d3:1319:8a2e:370:7348]:3478 .
# Multiple alternate servers can be set. They will be used in the
-# round-robin manner. All servers in the pool are considered of equal weight and
-# the load will be distributed equally. For example, if we have 4 alternate servers,
-# then each server will receive 25% of ALLOCATE requests. A alternate TURN server
-# address can be used more than one time with the alternate-server option, so this
+# round-robin manner. All servers in the pool are considered of equal weight and
+# the load will be distributed equally. For example, if you have 4 alternate servers,
+# then each server will receive 25% of ALLOCATE requests. A alternate TURN server
+# address can be used more than one time with the alternate-server option, so this
# can emulate "weighting" of the servers.
#
-# Examples:
+# Examples:
#alternate-server=1.2.3.4:5678
#alternate-server=11.22.33.44:56789
#alternate-server=5.6.7.8
#alternate-server=[2001:db8:85a3:8d3:1319:8a2e:370:7348]:3478
-
-# Option to set alternative server for TLS & DTLS services in form of
-# <ip>:<port>. If the port number is omitted, then the default port
-# number 5349 for the TLS/DTLS protocols will be used. See the previous
+
+# Option to set alternative server for TLS & DTLS services in form of
+# <ip>:<port>. If the port number is omitted, then the default port
+# number 5349 for the TLS/DTLS protocols will be used. See the previous
# option for the functionality description.
#
-# Examples:
+# Examples:
#tls-alternate-server=1.2.3.4:5678
#tls-alternate-server=11.22.33.44:56789
#tls-alternate-server=[2001:db8:85a3:8d3:1319:8a2e:370:7348]:3478
@@ -592,30 +584,37 @@
# This is the timestamp/username separator symbol (character) in TURN REST API.
# The default value is ':'.
-# rest-api-separator=:
+# rest-api-separator=:
-# Flag that can be used to disallow peers on the loopback addresses (127.x.x.x and ::1).
+# Flag that can be used to allow peers on the loopback addresses (127.x.x.x and ::1).
# This is an extra security measure.
#
-no-loopback-peers
+# (To avoid any security issue that allowing loopback access may raise,
+# the no-loopback-peers option is replaced by allow-loopback-peers.)
+#
+# Allow it only for testing in a development environment!
+# In production it adds a possible security vulnerability, so for security reasons
+# it is not allowed using it together with empty cli-password.
+#
+#allow-loopback-peers
# Flag that can be used to disallow peers on well-known broadcast addresses (224.0.0.0 and above, and FFXX:*).
# This is an extra security measure.
#
#no-multicast-peers
-# Option to set the max time, in seconds, allowed for full allocation establishment.
+# Option to set the max time, in seconds, allowed for full allocation establishment.
# Default is 60 seconds.
#
#max-allocate-timeout=60
-# Option to allow or ban specific ip addresses or ranges of ip addresses.
-# If an ip address is specified as both allowed and denied, then the ip address is
-# considered to be allowed. This is useful when you wish to ban a range of ip
+# Option to allow or ban specific ip addresses or ranges of ip addresses.
+# If an ip address is specified as both allowed and denied, then the ip address is
+# considered to be allowed. This is useful when you wish to ban a range of ip
# addresses, except for a few specific ips within that range.
#
# This can be used when you do not want users of the turn server to be able to access
-# machines reachable by the turn server, but would otherwise be unreachable from the
+# machines reachable by the turn server, but would otherwise be unreachable from the
# internet (e.g. when the turn server is sitting behind a NAT)
#
# Examples:
@@ -637,8 +636,8 @@
#
#mobility
-# Allocate Address Family according
-# If enabled then TURN server allocates address family according the TURN
+# Allocate Address Family according
+# If enabled then TURN server allocates address family according the TURN
# Client <=> Server communication address family.
# (By default Coturn works according RFC 6156.)
# !!Warning: Enabling this option breaks RFC6156 section-4.2 (violates use default IPv4)!!
@@ -647,12 +646,12 @@
# User name to run the process. After the initialization, the turnserver process
-# will make an attempt to change the current user ID to that user.
+# will attempt to change the current user ID to that user.
#
#proc-user=<user-name>
# Group name to run the process. After the initialization, the turnserver process
-# will make an attempt to change the current group ID to that group.
+# will attempt to change the current group ID to that group.
#
#proc-group=<group-name>
@@ -672,8 +671,8 @@
cli-port=5766
# CLI access password. Default is empty (no password).
-# For the security reasons, it is recommended to use the encrypted
-# for of the password (see the -P command in the turnadmin utility).
+# For the security reasons, it is recommended that you use the encrypted
+# form of the password (see the -P command in the turnadmin utility).
#
# Secure form for password 'qwerty':
#
@@ -681,13 +680,31 @@
#
# Or unsecure form for the same password:
#
-#cli-password=qwerty
cli-password=CHANGE_ME
-# Server relay. NON-STANDARD AND DANGEROUS OPTION.
-# Only for those applications when we want to run
+# Enable Web-admin support on https. By default it is Disabled.
+# If it is enabled it also enables a http a simple static banner page
+# with a small reminder that the admin page is available only on https.
+#
+#web-admin
+
+# Local system IP address to be used for Web-admin server endpoint. Default value is 127.0.0.1.
+#
+#web-admin-ip=127.0.0.1
+
+# Web-admin server port. Default is 8080.
+#
+#web-admin-port=8080
+
+# Web-admin server listen on STUN/TURN worker threads
+# By default it is disabled for security resons! (Not recommended in any production environment!)
+#
+#web-admin-listen-on-workers
+
+# Server relay. NON-STANDARD AND DANGEROUS OPTION.
+# Only for those applications when you want to run
# server applications on the relay endpoints.
-# This option eliminates the IP permissions check on
+# This option eliminates the IP permissions check on
# the packets incoming to the relay endpoints.
#
#server-relay
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/coturn-4.5.1.2/examples/etc/turnserver.conf new/coturn-4.5.1.3/examples/etc/turnserver.conf
--- old/coturn-4.5.1.2/examples/etc/turnserver.conf 2020-04-30 20:45:54.000000000 +0200
+++ new/coturn-4.5.1.3/examples/etc/turnserver.conf 2020-06-24 17:13:42.000000000 +0200
@@ -23,7 +23,7 @@
# "automatically" recognizes the type of traffic. Actually, two listening
# endpoints (the "plain" one and the "tls" one) are equivalent in terms of
# functionality; but Coturn keeps both endpoints to satisfy the RFC 5766 specs.
-# For secure TCP connections, Coturn currently supports SSL version 3 and
+# For secure TCP connections, Coturn currently supports
# TLS version 1.0, 1.1 and 1.2.
# For secure UDP connections, Coturn supports DTLS version 1.
#
@@ -479,13 +479,13 @@
#
#ec-curve-name=prime256v1
-# Use 566 bits predefined DH TLS key. Default size of the key is 1066.
+# Use 566 bits predefined DH TLS key. Default size of the key is 2066.
#
#dh566
-# Use 2066 bits predefined DH TLS key. Default size of the key is 1066.
+# Use 1066 bits predefined DH TLS key. Default size of the key is 2066.
#
-#dh2066
+#dh1066
# Use custom DH TLS key, stored in PEM format in the file.
# Flags --dh566 and --dh2066 are ignored when the DH key is taken from a file.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/coturn-4.5.1.2/examples/scripts/pack.sh new/coturn-4.5.1.3/examples/scripts/pack.sh
--- old/coturn-4.5.1.2/examples/scripts/pack.sh 2020-04-30 20:45:54.000000000 +0200
+++ new/coturn-4.5.1.3/examples/scripts/pack.sh 2020-06-24 17:13:42.000000000 +0200
@@ -2,7 +2,7 @@
# Run it from the root of the coturn source tree
-V=4.5.1.2
+V=4.5.1.3
PACKDIR=`pwd`/../coturn-releases/
SRCDIR=`pwd`
@@ -16,7 +16,8 @@
cd tmp
mkdir ${DDIR}
cp -R ${SRCDIR}/* ${DDIR}/
-tar cvfz ../${DDIR}.tar.gz ${DDIR}
+#tell tar to not include the metadata
+COPYFILE_DISABLE=1 tar cvfz ../${DDIR}.tar.gz ${DDIR}
cd ..
rm -rf tmp
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/coturn-4.5.1.2/rpm/build.settings.sh new/coturn-4.5.1.3/rpm/build.settings.sh
--- old/coturn-4.5.1.2/rpm/build.settings.sh 2020-04-30 20:45:54.000000000 +0200
+++ new/coturn-4.5.1.3/rpm/build.settings.sh 2020-06-24 17:13:42.000000000 +0200
@@ -2,10 +2,9 @@
# Common settings script.
-TURNVERSION=4.5.1.2
+TURNVERSION=4.5.1.3
BUILDDIR=~/rpmbuild
ARCH=`uname -p`
-TURNSERVER_GIT_URL=https://github.com/coturn/coturn.git
WGETOPTIONS="--no-check-certificate"
RPMOPTIONS="-ivh --force"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/coturn-4.5.1.2/rpm/build.sh new/coturn-4.5.1.3/rpm/build.sh
--- old/coturn-4.5.1.2/rpm/build.sh 2020-04-30 20:45:54.000000000 +0200
+++ new/coturn-4.5.1.3/rpm/build.sh 2020-06-24 17:13:42.000000000 +0200
@@ -18,18 +18,11 @@
# TURN
+#create archive from local folder
cd ${BUILDDIR}/tmp
rm -rf turnserver-${TURNVERSION}
-git clone ${TURNSERVER_GIT_URL} --branch ${TURNVERSION} turnserver-${TURNVERSION}
-ER=$?
-if ! [ ${ER} -eq 0 ] ; then
- git clone ${TURNSERVER_GIT_URL} turnserver-${TURNVERSION}
- ER=$?
- if ! [ ${ER} -eq 0 ] ; then
- cd ${CPWD}
- exit -1
- fi
-fi
+mkdir -p ${BUILDDIR}/tmp/turnserver-${TURNVERSION}
+cp -R ${CPWD}/.. ${BUILDDIR}/tmp/turnserver-${TURNVERSION}
tar zcf ${BUILDDIR}/SOURCES/turnserver-${TURNVERSION}.tar.gz turnserver-${TURNVERSION}
ER=$?
@@ -38,6 +31,7 @@
exit -1
fi
+#build package from archive
rpmbuild -ta ${BUILDDIR}/SOURCES/turnserver-${TURNVERSION}.tar.gz
ER=$?
if ! [ ${ER} -eq 0 ] ; then
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/coturn-4.5.1.2/rpm/turnserver.spec new/coturn-4.5.1.3/rpm/turnserver.spec
--- old/coturn-4.5.1.2/rpm/turnserver.spec 2020-04-30 20:45:54.000000000 +0200
+++ new/coturn-4.5.1.3/rpm/turnserver.spec 2020-06-24 17:13:42.000000000 +0200
@@ -1,5 +1,5 @@
Name: turnserver
-Version: 4.5.1.2
+Version: 4.5.1.3
Release: 0%{dist}
Summary: Coturn TURN Server
@@ -197,6 +197,8 @@
%{_datadir}/%{name}/testmongosetup.sh
%{_datadir}/%{name}/testsqldbsetup.sql
%dir %{_datadir}/%{name}/etc
+%{_datadir}/%{name}/etc/cacert.pem
+%{_datadir}/%{name}/etc/coturn.service
%{_datadir}/%{name}/etc/turn_server_cert.pem
%{_datadir}/%{name}/etc/turn_server_pkey.pem
%{_datadir}/%{name}/etc/turnserver.conf
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/coturn-4.5.1.2/src/apps/relay/ns_ioalib_engine_impl.c new/coturn-4.5.1.3/src/apps/relay/ns_ioalib_engine_impl.c
--- old/coturn-4.5.1.2/src/apps/relay/ns_ioalib_engine_impl.c 2020-04-30 20:45:54.000000000 +0200
+++ new/coturn-4.5.1.3/src/apps/relay/ns_ioalib_engine_impl.c 2020-06-24 17:13:42.000000000 +0200
@@ -293,10 +293,14 @@
if(!ret) {
ret = (stun_buffer_list_elem *)malloc(sizeof(stun_buffer_list_elem));
- ret->buf.len = 0;
- ret->buf.offset = 0;
- ret->buf.coffset = 0;
ret->next = NULL;
+ if (!ret) {
+ TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "%s: Cannot allocate memory for STUN buffer!\n", __FUNCTION__);
+ }
+ }
+
+ if(ret) {
+ bzero(&ret->buf, sizeof(stun_buffer));
}
return ret;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/coturn-4.5.1.2/src/client/ns_turn_msg.c new/coturn-4.5.1.3/src/client/ns_turn_msg.c
--- old/coturn-4.5.1.2/src/client/ns_turn_msg.c 2020-04-30 20:45:54.000000000 +0200
+++ new/coturn-4.5.1.3/src/client/ns_turn_msg.c 2020-06-24 17:13:42.000000000 +0200
@@ -244,9 +244,11 @@
unsigned int keylen = 0;
EVP_MD_CTX ctx;
EVP_MD_CTX_init(&ctx);
+#ifdef EVP_MD_CTX_FLAG_NON_FIPS_ALLOW
if (FIPS_mode()) {
EVP_MD_CTX_set_flags(&ctx,EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
}
+#endif
EVP_DigestInit_ex(&ctx,EVP_md5(), NULL);
EVP_DigestUpdate(&ctx,str,strl);
EVP_DigestFinal(&ctx,key,&keylen);
@@ -254,9 +256,11 @@
#else
unsigned int keylen = 0;
EVP_MD_CTX *ctx = EVP_MD_CTX_new();
+#ifdef EVP_MD_CTX_FLAG_NON_FIPS_ALLOW
if (FIPS_mode()) {
EVP_MD_CTX_set_flags(ctx, EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
}
+#endif
EVP_DigestInit_ex(ctx,EVP_md5(), NULL);
EVP_DigestUpdate(ctx,str,strl);
EVP_DigestFinal(ctx,key,&keylen);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/coturn-4.5.1.2/src/ns_turn_defs.h new/coturn-4.5.1.3/src/ns_turn_defs.h
--- old/coturn-4.5.1.2/src/ns_turn_defs.h 2020-04-30 20:45:54.000000000 +0200
+++ new/coturn-4.5.1.3/src/ns_turn_defs.h 2020-06-24 17:13:42.000000000 +0200
@@ -31,7 +31,7 @@
#ifndef __IOADEFS__
#define __IOADEFS__
-#define TURN_SERVER_VERSION "4.5.1.2"
+#define TURN_SERVER_VERSION "4.5.1.3"
#define TURN_SERVER_VERSION_NAME "dan Eider"
#define TURN_SOFTWARE "Coturn-" TURN_SERVER_VERSION " '" TURN_SERVER_VERSION_NAME "'"
++++++ coturn.service ++++++
--- /var/tmp/diff_new_pack.o3BNUa/_old 2020-06-30 21:59:19.243289140 +0200
+++ /var/tmp/diff_new_pack.o3BNUa/_new 2020-06-30 21:59:19.247289153 +0200
@@ -13,8 +13,8 @@
Restart=on-abort
ExecReload=/bin/kill -HUP $MAINPID
-# enable next line to make coturn able to bind to a port below 1024
-#AmbientCapabilities=CAP_NET_BIND_SERVICE
+# next line allows coturn to bind to a port below 1024
+AmbientCapabilities=CAP_NET_BIND_SERVICE
LimitCORE=infinity
LimitNOFILE=999999
1
0
Hello community,
here is the log from the commit of package perl-File-Map for openSUSE:Factory checked in at 2020-06-30 21:58:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-File-Map (Old)
and /work/SRC/openSUSE:Factory/.perl-File-Map.new.3060 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-File-Map"
Tue Jun 30 21:58:25 2020 rev:2 rq:817800 version:0.67
Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-File-Map/perl-File-Map.changes 2020-02-11 22:26:02.575588530 +0100
+++ /work/SRC/openSUSE:Factory/.perl-File-Map.new.3060/perl-File-Map.changes 2020-06-30 21:59:12.115267077 +0200
@@ -1,0 +2,10 @@
+Fri Jun 26 03:09:02 UTC 2020 - Tina Müller <timueller+perl(a)suse.de>
+
+- updated to 0.67
+ see /usr/share/doc/packages/perl-File-Map/Changes
+
+ 0.67 2020-06-26 00:26:54+02:00 Europe/Amsterdam
+ - Fix unresolved symbol "madvise" on QNX NTO
+ - Fix regression that could cause empty maps to crash upon reuse.
+
+-------------------------------------------------------------------
Old:
----
File-Map-0.66.tar.gz
New:
----
File-Map-0.67.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-File-Map.spec ++++++
--- /var/tmp/diff_new_pack.1ffhWW/_old 2020-06-30 21:59:13.415271102 +0200
+++ /var/tmp/diff_new_pack.1ffhWW/_new 2020-06-30 21:59:13.419271113 +0200
@@ -1,7 +1,7 @@
#
# spec file for package perl-File-Map
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,13 +17,13 @@
Name: perl-File-Map
-Version: 0.66
+Version: 0.67
Release: 0
%define cpan_name File-Map
Summary: Memory mapping made simple and safe
License: Artistic-1.0 OR GPL-1.0-or-later
Group: Development/Libraries/Perl
-Url: https://metacpan.org/release/%{cpan_name}
+URL: https://metacpan.org/release/%{cpan_name}
Source0: https://cpan.metacpan.org/authors/id/L/LE/LEONT/%{cpan_name}-%{version}.tar…
Source1: cpanspec.yml
BuildRoot: %{_tmppath}/%{name}-%{version}-build
++++++ File-Map-0.66.tar.gz -> File-Map-0.67.tar.gz ++++++
++++ 11067 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package perl-Module-Signature for openSUSE:Factory checked in at 2020-06-30 21:58:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Module-Signature (Old)
and /work/SRC/openSUSE:Factory/.perl-Module-Signature.new.3060 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-Module-Signature"
Tue Jun 30 21:58:22 2020 rev:22 rq:817798 version:0.86
Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-Module-Signature/perl-Module-Signature.changes 2018-08-31 10:47:37.155433867 +0200
+++ /work/SRC/openSUSE:Factory/.perl-Module-Signature.new.3060/perl-Module-Signature.changes 2020-06-30 21:59:09.555259154 +0200
@@ -1,0 +2,11 @@
+Fri Jun 26 03:12:00 UTC 2020 - Tina Müller <timueller+perl(a)suse.de>
+
+- updated to 0.86
+ see /usr/share/doc/packages/perl-Module-Signature/Changes
+
+ [Changes for 0.86 - Thu Jun 25 21:06:24 CST 2020]
+ * Update PAUSE and ANDK keys to 2020. (@dweekly)
+ * Update documentation pertaining to SHA1. (@dweekly)
+ * Fix compatibility with Crypt::OpenPGP. (@niklasholm)
+
+-------------------------------------------------------------------
Old:
----
Module-Signature-0.83.tar.gz
New:
----
Module-Signature-0.86.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-Module-Signature.spec ++++++
--- /var/tmp/diff_new_pack.lN4gak/_old 2020-06-30 21:59:10.455261940 +0200
+++ /var/tmp/diff_new_pack.lN4gak/_new 2020-06-30 21:59:10.459261952 +0200
@@ -1,7 +1,7 @@
#
# spec file for package perl-Module-Signature
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,19 +12,19 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
Name: perl-Module-Signature
-Version: 0.83
+Version: 0.86
Release: 0
#Upstream: SUSE-Public-Domain
%define cpan_name Module-Signature
Summary: Module signature file manipulation
License: CC0-1.0 AND (GPL-1.0-or-later OR Artistic-1.0)
Group: Development/Libraries/Perl
-Url: http://search.cpan.org/dist/Module-Signature/
+URL: https://metacpan.org/release/%{cpan_name}
Source0: https://cpan.metacpan.org/authors/id/A/AU/AUDREYT/%{cpan_name}-%{version}.t…
Source1: cpanspec.yml
BuildArch: noarch
@@ -57,6 +57,11 @@
Please also see NOTES about _MANIFEST.SKIP_ issues, especially if you are
using *Module::Build* or writing your own _MANIFEST.SKIP_.
+Signatures made with Module::Signature prior to version 0.82 used the SHA1
+algorithm by default. SHA1 is now considered broken, and therefore module
+authors are strongly encouraged to regenerate their _SIGNATURE_ files.
+Users verifying old SHA1 signature files will receive a warning.
+
%prep
%setup -q -n %{cpan_name}-%{version}
# MANUAL BEGIN
@@ -64,11 +69,11 @@
# MANUAL END
%build
-%{__perl} Makefile.PL INSTALLDIRS=vendor
-%{__make} %{?_smp_mflags}
+PERL_USE_UNSAFE_INC=1 perl Makefile.PL INSTALLDIRS=vendor
+make %{?_smp_mflags}
%check
-%{__make} test
+make test
%install
%perl_make_install
@@ -77,6 +82,6 @@
%files -f %{name}.files
%defattr(-,root,root,755)
-%doc ANDK2018.pub AUDREYT2018.pub AUTHORS Changes NIKLASHOLM2018.pub PAUSE2019.pub README
+%doc ANDK2020.pub AUDREYT2018.pub AUTHORS Changes NIKLASHOLM2018.pub PAUSE2020.pub README
%changelog
++++++ Module-Signature-0.83.tar.gz -> Module-Signature-0.86.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Module-Signature-0.83/ANDK2018.pub new/Module-Signature-0.86/ANDK2018.pub
--- old/Module-Signature-0.83/ANDK2018.pub 2018-08-26 17:06:15.000000000 +0200
+++ new/Module-Signature-0.86/ANDK2018.pub 1970-01-01 01:00:00.000000000 +0100
@@ -1,122 +0,0 @@
------BEGIN PGP PUBLIC KEY BLOCK-----
-
-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
-=bI5D
------END PGP PUBLIC KEY BLOCK-----
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Module-Signature-0.83/ANDK2020.pub new/Module-Signature-0.86/ANDK2020.pub
--- old/Module-Signature-0.83/ANDK2020.pub 1970-01-01 01:00:00.000000000 +0100
+++ new/Module-Signature-0.86/ANDK2020.pub 2020-06-25 14:32:50.000000000 +0200
@@ -0,0 +1,204 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+XCprYHgMERlmrnnljYDHlF70
+=n7h9
+-----END PGP PUBLIC KEY BLOCK-----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Module-Signature-0.83/Changes new/Module-Signature-0.86/Changes
--- old/Module-Signature-0.83/Changes 2018-08-29 10:33:19.000000000 +0200
+++ new/Module-Signature-0.86/Changes 2020-06-25 15:06:35.000000000 +0200
@@ -1,3 +1,11 @@
+[Changes for 0.86 - Thu Jun 25 21:06:24 CST 2020]
+
+* Update PAUSE and ANDK keys to 2020. (@dweekly)
+
+* Update documentation pertaining to SHA1. (@dweekly)
+
+* Fix compatibility with Crypt::OpenPGP. (@niklasholm)
+
[Changes for 0.83 - Wed Aug 29 17:33:12 JST 2018]
* Update META.yml.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Module-Signature-0.83/MANIFEST new/Module-Signature-0.86/MANIFEST
--- old/Module-Signature-0.83/MANIFEST 2018-08-26 17:13:29.000000000 +0200
+++ new/Module-Signature-0.86/MANIFEST 2020-06-25 14:51:28.000000000 +0200
@@ -1,4 +1,4 @@
-ANDK2018.pub
+ANDK2020.pub
AUDREYT2018.pub
AUTHORS
Changes
@@ -18,7 +18,7 @@
MANIFEST.SKIP
META.yml
NIKLASHOLM2018.pub
-PAUSE2019.pub
+PAUSE2020.pub
README
script/cpansign
SIGNATURE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Module-Signature-0.83/META.yml new/Module-Signature-0.86/META.yml
--- old/Module-Signature-0.83/META.yml 2018-08-29 10:32:52.000000000 +0200
+++ new/Module-Signature-0.86/META.yml 2020-06-25 15:06:50.000000000 +0200
@@ -26,4 +26,4 @@
perl: '5.005'
resources:
repository: http://github.com/audreyt/module-signature
-version: '0.83'
+version: '0.86'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Module-Signature-0.83/Makefile.PL new/Module-Signature-0.86/Makefile.PL
--- old/Module-Signature-0.83/Makefile.PL 2018-08-26 17:13:15.000000000 +0200
+++ new/Module-Signature-0.86/Makefile.PL 2020-06-25 14:32:50.000000000 +0200
@@ -95,7 +95,7 @@
if ( prompt("Import PAUSE and author keys to GnuPG?", 'y' ) =~ /^y/i) {
print 'Importing... ';
- system $gpg, '--quiet', '--import', qw[ AUDREYT2018.pub ANDK2018.pub PAUSE2019.pub NIKLASHOLM2018.pub ];
+ system $gpg, '--quiet', '--import', qw[ AUDREYT2018.pub ANDK2020.pub PAUSE2020.pub NIKLASHOLM2018.pub ];
print "done.\n";
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Module-Signature-0.83/PAUSE2019.pub new/Module-Signature-0.86/PAUSE2019.pub
--- old/Module-Signature-0.83/PAUSE2019.pub 2018-08-26 17:06:43.000000000 +0200
+++ new/Module-Signature-0.86/PAUSE2019.pub 1970-01-01 01:00:00.000000000 +0100
@@ -1,309 +0,0 @@
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG v1
-
-mQGiBD4+cJARBACxOByY0SJBBuJoFrH2hoqRFny423gY6V3jq1uTgGY/PPaxP+Sq
-r3RzxPct4vJcsoo48pwBsMHLrWfORq26zb6eKgmMq/CQo2gzaRbeRxCi3ke4KBmu
-aREi6RjaZSU94yABtDmspUBrpYV8zfZMv5ZIQlg9W1Tu66BFOUrrNeDpKwCgosCp
-9dtNAMhHkzxs8UJH5i3Uzb0D/0VLoAE8sOfUXqjc38rxiHuGBFSNC70Ih4mzGUCJ
-MGT4z1X3K6uUawnXMoc8XqPaYnEgOzztMymydtr+urjUwcGnuXDSpV6nulE5irxh
-zlikSTJy/42QzTMcrdRynffmJo9PRgymMI8GgWaYG5g3zzGAhi5BA6G8JKfC93IV
-xiRPBACXJpLBYQljqJY9UDNJuq8nHhKiWHBXdZzrC3LM0FSF3PKuP/ugc+KBIKXm
-clNPNFKla/SRbH6dMHsGIy8wnGPI5AtTS0roNQrttv3/ghRT7+OKXrGmBxZ/KHVr
-v3PVgiRA5MDr1mIsovfuc9WQnFu2TkgnN/F3pDcrVVSi5b+rZLQzUEFVU0UgQmF0
-Y2ggU2lnbmluZyBLZXkgMjAwOSA8cGF1c2VAcGF1c2UucGVybC5vcmc+iGYEExEC
-ACYFAkl43/ECGwMFCQ/OdIAGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRAyjahn
-RQ+J7IDEAJ40F0fyg6NTAZ2nWizs/C/RSPYPsgCfSqnVpaqF6k0H/5AabfdNbcS2
-Wm6IRgQQEQIABgUCSXwU9wAKCRDsgDnwoxfBXQBsAJsEku5xBZsf7EYYkWeSEiXn
-p2kLtQCg0V2hlzJnDCFFqf/WsMqL2glkDjOIRgQQEQIABgUCS4xI1gAKCRA0rq6z
-PNGwzHiqAJ0dtAvhlqh/mH7rk1zV5d6MKUKBZQCg5lO06lB5gPX+RrxJrJ/2ThyQ
-auGIRgQREQIABgUCScuA1AAKCRA2zBWk41ll/N3WAJ9aV3ZzqMCiXbFrQwKLAtyr
-h6wI3wCfYKAvs67QENDfq4bvTHk0N61MA1eIRgQTEQIABgUCSpht5gAKCRDp1n4q
-3kFyFnQ7AKCaTGJjbuTiGwPjxRSYLdWahh9q3gCfTYZNWq1+9I4I01veU166Nh7G
-1KGIZgQTEQIAJgIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheABQJNc/PEBQkTkilo
-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
-mU0An2syqsT0hEnGUP8ppoIxu4VxqlTo
-=NbtN
------END PGP PUBLIC KEY BLOCK-----
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Module-Signature-0.83/PAUSE2020.pub new/Module-Signature-0.86/PAUSE2020.pub
--- old/Module-Signature-0.83/PAUSE2020.pub 1970-01-01 01:00:00.000000000 +0100
+++ new/Module-Signature-0.86/PAUSE2020.pub 2020-06-25 14:32:50.000000000 +0200
@@ -0,0 +1,548 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQGiBD4+cJARBACxOByY0SJBBuJoFrH2hoqRFny423gY6V3jq1uTgGY/PPaxP+Sq
+r3RzxPct4vJcsoo48pwBsMHLrWfORq26zb6eKgmMq/CQo2gzaRbeRxCi3ke4KBmu
+aREi6RjaZSU94yABtDmspUBrpYV8zfZMv5ZIQlg9W1Tu66BFOUrrNeDpKwCgosCp
+9dtNAMhHkzxs8UJH5i3Uzb0D/0VLoAE8sOfUXqjc38rxiHuGBFSNC70Ih4mzGUCJ
+MGT4z1X3K6uUawnXMoc8XqPaYnEgOzztMymydtr+urjUwcGnuXDSpV6nulE5irxh
+zlikSTJy/42QzTMcrdRynffmJo9PRgymMI8GgWaYG5g3zzGAhi5BA6G8JKfC93IV
+xiRPBACXJpLBYQljqJY9UDNJuq8nHhKiWHBXdZzrC3LM0FSF3PKuP/ugc+KBIKXm
+clNPNFKla/SRbH6dMHsGIy8wnGPI5AtTS0roNQrttv3/ghRT7+OKXrGmBxZ/KHVr
+v3PVgiRA5MDr1mIsovfuc9WQnFu2TkgnN/F3pDcrVVSi5b+rZLQzUEFVU0UgQmF0
+Y2ggU2lnbmluZyBLZXkgMjAwOSA8cGF1c2VAcGF1c2UucGVybC5vcmc+iGYEExEC
+ACYFAkl43/ECGwMFCQ/OdIAGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRAyjahn
+RQ+J7IDEAJ40F0fyg6NTAZ2nWizs/C/RSPYPsgCfSqnVpaqF6k0H/5AabfdNbcS2
+Wm6IRgQQEQIABgUCSXwU9wAKCRDsgDnwoxfBXQBsAJsEku5xBZsf7EYYkWeSEiXn
+p2kLtQCg0V2hlzJnDCFFqf/WsMqL2glkDjOIRgQQEQIABgUCS4xI1gAKCRA0rq6z
+PNGwzHiqAJ0dtAvhlqh/mH7rk1zV5d6MKUKBZQCg5lO06lB5gPX+RrxJrJ/2ThyQ
+auGIRgQREQIABgUCScuA1AAKCRA2zBWk41ll/N3WAJ9aV3ZzqMCiXbFrQwKLAtyr
+h6wI3wCfYKAvs67QENDfq4bvTHk0N61MA1eIRgQTEQIABgUCSpht5gAKCRDp1n4q
+3kFyFnQ7AKCaTGJjbuTiGwPjxRSYLdWahh9q3gCfTYZNWq1+9I4I01veU166Nh7G
+1KGIZgQTEQIAJgIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheABQJNc/PEBQkTkilo
+AAoJEDKNqGdFD4nsn9AAoJ4XhDkyGeM+/9WTBuQtFo2yKj3+AJ0ZJM3/FUx3laRE
+MLguZKNv3ryMf4hmBBMRAgAmAhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AFAlGF
+NBQFCRdUUAQACgkQMo2oZ0UPiezrrACePNwO9f6ZxMOfpX3Hq/gywBqgxWsAniPu
+l/9NVHBav8S6cMa/GgSfIJriiGYEExECACYCGwMGCwkIBwMCBBUCCAMEFgIDAQIe
+AQIXgAUCVNd2rQUJGxfznQAKCRAyjahnRQ+J7PqvAJ0XfXYR85VlDIdbYJZyd72Y
+hOXCpACeN+7unADHtllhOvo0B+/LbK/ejFmIXQQQEQIAHRYhBFkeGFRwvnxXzPRR
+bZptkmKP/clCBQJYps+HAAoJEJptkmKP/clCjagAoI9tiaMY5KTIf/7669XX/lNm
+4z0iAJ4sFiaQrtc3wF8O5N8U1wCwqa2pPohmBBMRAgAmAhsDBgsJCAcDAgQVAggD
+BBYCAwECHgECF4AFAlk988AFCR7ZpTAACgkQMo2oZ0UPieyy4QCfU9MiAvJrwTIq
+1tBZso11JEx6OvkAoIWUtrpE2mftIOnS6rXQIyqZT11UiQEcBBABAgAGBQJa9Kp2
+AAoJECBWhy2NZBIAAooH/1B3I1mwq33ktH4Bw4aWvsC4qY2OttYADETnn5hNOeKp
+QzMfddqxuNQr7RvLLOIXOUxvwUz6B0T7Zyk5bE2nABuXQRoxmiV1hv+tgYpuHN4E
+ZvC0rlnAy9tH91OMks8csqKEA7Jnxl2up1L0AOMGMp1+6jCWzVXzNWNtqFUdhj4g
+JKpd6bF3oDzpPp0Bjpg4zOhtv5heK+QtEoBwejaAxLgCBVPmoAu6vVE0gQY1txol
+fYiUgC7z4CRJizO1b3Kjhde/AyaOGcIs6O/05MZ/EXXNI0Zjm1vPZZttiw1TFJfq
+qEzTiAclkGt9a4a2YnT798aXqIFPLY2H/ZovGXL3gHOJARwEEgEIAAYFAllbmLEA
+CgkQI0UbEHqgOUHIGAf7BaPfcIWePJ4Ty9QcpSA5uw7sd5UdplmmblUda5UxXSVF
+z40SzMgEnJ80vhJAmRT8WO4ST8TNn65hIfuceFIiq81oxbGcQMV2F+N82gw49M8x
+UMV6isRHwnfa2R3fD046VF6JNRu6IWjU0ziyM1/ZDKXK9dnRXdoJD/SnhvFIyff9
+9BwyxPNJPE1qyXIcg9iEqNn1aAjAI6NJQrtE+pCj8BN57IBYTdoEBqfFFrBahzTy
+PBmJDjeRwD5wD2/6JSoISCjqYK6K2FSvGlFYvKmRkZ2opxFwZhFQkblYymPXG37E
+m85Mc+XWPEpH1x5UQJoJOKeZgNAw6I8uRRWLMLCQEokBMwQQAQgAHRYhBCiVqIHT
+QnD6v+j3R7T2MznmXWQUBQJbu4XdAAoJELT2MznmXWQUt+cH/3jMKNPlba0lx2Lb
+a1W+6OJG+G7wrn3CrpFE7tmnQNff0RJU/8/QgGS1c7MldYN2f93t71QCUTEnOtXx
+zzWhgkuw+Zn+EPr0zjkCuz1n0WJ8muw2VoOjvJ9XqI9kFT0ltkVT9KzVnnLxgg+W
+9OOz1uv9/R6f2f+C+X1sdBjLghJ0NPr2ljDeqlcuiauL4pRUvhUoDNxeIRoiAL//
+wLmmY14PFusP1XPCQ3ycwe51cvmVFSfY08AqXJz5AVVn/ki6eO/qlGNJ1ZDhUYdP
+WKmFnEgNQLRAGFdccdEYWh1Z1yNGF2qXRYdT2enIh53DP/NPur40vItmiZNQbDov
+DijYsbCJATMEEAEKAB0WIQQolaiB00Jw+r/o90e09jM55l1kFAUCW7uHUAAKCRC0
+9jM55l1kFJGbB/4kzvYFemRe28EyvEWnCNxuBgl6h19DCVuVgE17PQop3PRPxa1p
+xyTKP0vMqU97J3Ep+pvixdejsbPlLHVQHOHUKCodBlqmPfpHPK2wyzAS2z4IoQU7
+zyaRStICGRinRGBrYveaFt0nT/AC8io5gQqz26NDmh4q4pXfBVdWtmpze6GKvZbt
+/tpF/XUpCjfCGejn23BjsnwyCk42iqmG1UcNKCtSiCnIQ+U92TIKcqFWfeWb96Qx
+lgfg5fUz61IG8L5uyTCLbHVjwr2rnCv5hc4pqbJue/XVcEdyv7IrIexHYh2KJYYl
+oGBzISz22pyUNsdPYddJfM25f1F1nBu2f3A7iGYEExECACYCGwMGCwkIBwMCBBUC
+CAMEFgIDAQIeAQIXgAUCXRhm9QUJIp2u5QAKCRAyjahnRQ+J7KivAJ9Ife2hPYd7
+NVKdhEKO2E06sBCAQQCgoMEpi5+v7LCa7RJeIE6owQDHjkS0M1BBVVNFIEJhdGNo
+IFNpZ25pbmcgS2V5IDIwMDUgPHBhdXNlQHBhdXNlLnBlcmwub3JnPohkBBMRAgAk
+BQJB4aCEAhsDBQkHp4HPBgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEDKNqGdFD4ns
+0RsAnieCf8FRu1bNVH+M5ZKx3BrAOTt5AJ4/vRc9FmSVqagqmOq++RXtDZQ4N4hG
+BBARAgAGBQJEYKLoAAoJEIvYLm8wuUtc30QAoK2czUefYahtYW+TbtIXdhUdW+fO
+AJwNi0bJ8trCaZNOgCUQ9LrcfYI17IhJBBARAgAJBQJEJojIAgcAAAoJEAZbinBf
+Pl6L/JUAn2ncdJlORTVO9g1jkfDX0i93edtTAJ9Syx/hqyWuFse0U9734ORqlpBH
+aIhbBBARAgAbBQJDwdPxAwUCeBCGPFtePl0rW0AuXVwqPiQAAAoJEIbmsk2SWE/h
+0twAn3UcQ3Xg2AyOmGBMnUOdgpNH28CRAJ9rSQBXnF5DqSt1qv9Dab2asqKfO4hk
+BBMRAgAkAhsDBgsJCAcDAgMVAgMDFgIBAh4BAheABQJFmYJbBQkMDBhLAAoJEDKN
+qGdFD4ns79IAnj21IeZSt2NoOO1/g+vD5tqOcbzUAJ478n1mnym4Q2N3TTT3rsnn
+edcdvohGBBARAgAGBQJHXA7/AAoJEBX45cPA0J5q9UwAn3xJ7SdXCCkYIRedhOPb
+ST7HSqSaAJ92GqcSJ8sXF/j+NJozTCHRM9q1oYhJBBARAgAJBQJH77wOAgcAAAoJ
+EF/bceEvWKUra8YAoInG8bVs+rH/8UuUKso0c4gJef7bAKC42ez9cFFlD58mjf69
+FlTHZZKXZohkBBMRAgAkAhsDBgsJCAcDAgMVAgMDFgIBAh4BAheABQJJeN+QBQkP
+znSAAAoJEDKNqGdFD4nsRTMAn1ZQRTgeyvxMjP5jFnih3xOqmmLQAJwKbkN5e52T
+aU5sFKRdg7rL1g9Ad4hGBBARAgAGBQJJfBT3AAoJEOyAOfCjF8FdMEwAn2tOIVnk
+IVy2adN7BLWuMKW/RaVAAKDbUwhKGwwOmhbkzykdFT89OAquD4hGBBARAgAGBQJL
+jEjWAAoJEDSurrM80bDMdDQAn2ldZHCT1AleaF8mkXkUcW+s2rCIAKCAkLuM9aEV
+hj30wPmsxaIogIz40ohGBBERAgAGBQJJy4DaAAoJEDbMFaTjWWX8tQMAn3BvNmP0
+E57Nr3MgM8+N/3J3ACfTAJ41hJiaKCPyCt+bERGo+4bazKvWEohGBBMRAgAGBQJK
+mG3tAAoJEOnWfireQXIWRBEAn30xKJFU1JOkf/VWPs+jBVmr2JS1AKCIPIf2PgpV
+lJ9nNlE682w7hs0lXYhkBBMRAgAkAhsDBgsJCAcDAgMVAgMDFgIBAh4BAheABQJN
+c/PEBQkTkiloAAoJEDKNqGdFD4nsDmwAn3bxscjNtGl4Xq4NYYKiy98YXkzpAJsH
+jpuGTmJGl5x19WcugbTu31j+HohkBBMRAgAkAhsDBgsJCAcDAgMVAgMDFgIBAh4B
+AheABQJRhTQUBQkXVFAEAAoJEDKNqGdFD4nsWXEAnivgkjqFpV0mVXmLZYcyVDEu
+EogwAKCRGTCKCWseNGYSuhxiBQWJupSP3YhGBBARAgAGBQJKG/xNAAoJECuOMUZB
+ie0n+1UAoIxu/zwj0oj1DoryyXy7TeKiVxbrAJ4lBA2V5QHfahrtnizRHQeBf3Ta
+vIhkBBMRAgAkAhsDBgsJCAcDAgMVAgMDFgIBAh4BAheABQJU13atBQkbF/OdAAoJ
+EDKNqGdFD4nsyusAoIXao0qs/nqbCM3ypryb7/+A5ZZQAJ9m7LqAqFSU7dH92bYB
+tEUeidH+NohdBBARAgAdFiEEWR4YVHC+fFfM9FFtmm2SYo/9yUIFAlimz4cACgkQ
+mm2SYo/9yULqPgCdEH1cd7zSv94QJFfsP23dy47YkkEAnRZ7W0NWBvQFUgwSB3tH
+C73NOMV+iGQEExECACQCGwMGCwkIBwMCAxUCAwMWAgECHgECF4AFAlk988AFCR7Z
+pTAACgkQMo2oZ0UPiezwJgCePIrwUH1iVY3TJzOgnPqp4IWjZYgAnRffgcXRHUGT
+0ijyW92/b/KStcW0iQEcBBABAgAGBQJa9Kp2AAoJECBWhy2NZBIA0+AH/AtE1V9S
+KfmS5PZlkb2MbyPLGAPr3CA/xXGqchb033rx/axmVymXzHVSjvEv6wloiKGf/Qcz
+WuFeZDz1kSRWymCPSIat+bUQKFR6z+Lgw4ml8GdWyShdV7tuqvgaG9+bjpyYv5z/
+8cqOldjJvQbrEJHP5p8XkhIjCQA6v+0pQp0lSsVvGjA5AjhNSGetSHsHx2AMke8I
+nAhpOrYOit7b/o7VNj1D9irQhcqhpA+ozYia1ldcUm4nkBfUBBT9M97IDsARlQqe
+DVeBWKwPKYpCNIQhG5Qlj3N5kz7k924JUZN6tgTfb1Osr61jSorgQ9gDYpBawl4/
+b2iQxgrKJb3aV16JARwEEgEIAAYFAllbmLEACgkQI0UbEHqgOUFFGwf+KCZeXQDx
+PgTf7KFDwVGJutYgCnA0geHesEq7kS5HLH+oCZbAVwyZify7TaT4Bi5a3gK86Lvb
+HVfOlZVc/JhJwxOQ8h9TZCGW1fY6XVw50Ghi06ki792fnKYvTQpSU54dxtdfziL+
+8IW9zGb7h0uuY4A4M/Qx3+MSCt7JDp9XBx8eHDl8KF9bU1qU/ZzNVC8Rq4WeLs6p
+0SQJO9ovd6DnJ+cSweG58GpzQxLV5D5gHrb5SoG8CcwvRYnSCLzfsPkUNy45HjQr
+E1S+YJ7o+F+5v+qCUAZPrQ5OJrpxYnnLPU7K3IX7vFzDS6vrQ1cwEzODLveGfTZB
+HdhMw936S9/7CIkBMwQQAQgAHRYhBCiVqIHTQnD6v+j3R7T2MznmXWQUBQJbu4Xd
+AAoJELT2MznmXWQUXT4H/1T08YloFO25QGNJ9RZruf2+xWJ1IIzXJUhHZK4BYkii
+aylBmmJohleR6ewtRo1ksldQgKpoaF02ZNwuTB3/rZlfI5y3Fr+rbK2oYtCmr+N7
+xpwtxW8klN+u5A/N/KDZUBKkCHXcsoRnQLH8Ip6AREttHgqnM5F0tnaMbjtXznSb
+4zlA1IWQhw/yCrZ1i3HhgwPOzWNicQDMSAV+erC3b8k42o7therlsN7NFUoCBX0Q
+vP1Z8w4o2uJ2y/spILbWHqK4LUtg79X30KK0Hat3rFSIBSc5lYP6rKeXNBXcxTaV
+WGfXxCh8C8mAH4ctyzUah2PG8c/z7GrtY+KPWfTM1RSJATMEEAEKAB0WIQQolaiB
+00Jw+r/o90e09jM55l1kFAUCW7uHTwAKCRC09jM55l1kFAMJCADBEbxy9XN+KIh0
+Q9roNc03aNMHmh5lyfzfHgcHiWwBY9cVr63nBbpCqCr9QRWfwWDG5Aou1XipvL+W
+rG4fBXtebwVLuiXH+hhUQsvUf6CQfIlUypVRMUEu2GLSSGPQuzjOlRryCDz3WpcZ
+Yk5n+6d9M897RFzQ0S2Lz09E4a67+Nb0VZjjy03+yn3wNsRLBg4jrT+NobqDP5iM
+lYDmrveIwRe0XbFqQjBCvIrBXp2cN8vIBxHnVVx8uDUXc2AB12uSkekoPTt6E5d5
+61dMDNaOydQWuIG5x5tzUTVVh8WhrdkOnagfBk8hBOmhJzYBXGM6iW1mSxjXJSDq
+FFbxEr91iGQEExECACQCGwMGCwkIBwMCAxUCAwMWAgECHgECF4AFAl0YZvUFCSKd
+ruUACgkQMo2oZ0UPiexmQgCglijZ7KNJ0afT//P7iFK0n82OpVsAoIVnN1xT7MCZ
+VKT1Ik8vhrDz3hJJtDNQQVVTRSBCYXRjaCBTaWduaW5nIEtleSAyMDAzIDxwYXVz
+ZUBwYXVzZS5wZXJsLm9yZz6IXwQTEQIAHwUCPj5wkAUJA8JnAAQLBwMCAxUCAwMW
+AgECHgECF4AACgkQMo2oZ0UPiex3iwCfeBi+vftWRTJzHrXCbm3gGhI73TgAn12S
+X/NTkFsOdcQ8qTQU1YVKfCfFiF8EExECAB8ECwcDAgMVAgMDFgIBAh4BAheABQJB
+4aBfBQkHp4HPAAoJEDKNqGdFD4nsZVQAni9ZYmebwXfO9NgBzoDHk7g+zkiLAJ9i
+TRgd9ts62eNkSd9zirqRS5Rbi4kCIgQQAQIADAUCQX8qTAWDAIGtRAAKCRCq4+bO
+ZqFEaAwFD/4pO47amUAVU7P5DD3QXXpSODlqLB6bc4Uc3MfHCjNumtA5hPlk25VX
+1kAvjBPBNNWaSRC0lwBL49X2D25GQwaKWjW0sEKqJ0Usr6aBtuhQrLlGYHMIJ8Fh
+wxHAqZFFo3vbg0XRzRFREs0xAMDFqSOilwaW6H0zUHwdj0WMFyPPu0PRear84ulq
+B/TBCGp5dBVAaHBu4gWcjHECocsFXW8wtqcosy/yfp2Xem8qopdwKpYZvH1Q3ouh
+yFgeNaXup+1dNYU0xv40ijkfpaWB/D8RIURtmMHteeW8ALK4oF2wHSfUgByRgenY
+Sele1Z3R7veu+I3myw0UksOzX8Jxz/ChWJGJkygxpa4HgxUuhY/qZsXjgLkLqTCr
+V1k8+I9hclMjX+rjC2g/IKXfqu5hDzA/DNo2KIQ5OONUkuJekZC5Zk1zKsXY3pjn
+8UwXk2uLfqXWSJOT0KPZGCjPo4UbKJYiRrY9YhIiGjb+CMeCaGOM/z+Tb3fDvoY1
+u/iqC6hBuYJq9dLwaes1I8m3iZu3X0EVDpkQOCYrrnb6by6bWRZWAo+BYnaUXr+Y
+NxKakMh3gJAxCWzlusG4b5V+f7AfeackLzQURqoDs+XNphmAhZUv87mBpJNTPRSe
+VN1LfwTby6xhE7Rq95+CBtgd/fmwGN2VN9ApbLhwvc7qzB2o2bSMfohGBBARAgAG
+BQJEYKLqAAoJEIvYLm8wuUtc/44AnjBPBDhTnyx91Y2QADeASP1DffjRAJ9JouZ7
+gmGHXkammWPUn5mRjZEzS4hJBBARAgAJBQJEJojIAgcAAAoJEAZbinBfPl6L/JUA
+n2ncdJlORTVO9g1jkfDX0i93edtTAJ9Syx/hqyWuFse0U9734ORqlpBHaIhJBBAR
+AgAJBQJEJojNAgcAAAoJEAZbinBfPl6LMLMAn2DJauL2a5zNv+EvtDFB5h2U5CRx
+AJ9OM4eGUL7Sf7h+H4FnufLFK3gqT4hbBBARAgAbBQJDwdP3AwUCeBCGPFtePl0r
+W0AuXVwqPiQAAAoJEIbmsk2SWE/hyeYAoNa4roCWwYLcOHy2/19HbGeL6yVpAJ91
+B6hnFIIQZsT7PuQaR20Yhyb4o4hMBBMRAgAMBQJAqZg6BYMBVz9WAAoJEBhZ0B9n
+e6HsoLcAn17UFKz8EQzwzqQziInEkSRhkMhYAKCNRrWgCX+XVW1TK5gQ/fCrDof6
+HYhMBBMRAgAMBQJAqZiMBYMBVz8EAAoJEIHC9+viE7aSJ+gAn1+gxG/MWAG27NJh
+wU6rou8qJTgeAJ9bRcWE7qgZQRa+lF/wwWvnZryr9IhMBBMRAgAMBQJAqZjLBYMB
+Vz7FAAoJEGtw7Nldw/RzSpoAn2rVXb1okXU35aoYI4pPpQq/aQjYAJ9BWjYyGHJN
+rPjJOXNSa+3ToOmPKIhfBBMRAgAfBAsHAwIDFQIDAxYCAQIeAQIXgAUCRZmCWwUJ
+DAwYSwAKCRAyjahnRQ+J7JEnAKCMb/OvVcmFkbU77PVF1FVsAprsWQCgnTP03cBY
+OG/z4kZbTSf78CzLk1SIRgQQEQIABgUCR1wO/wAKCRAV+OXDwNCeakbsAJ47R6ld
+3Cv2RoxAG+2nSkPff71Q8ACcCsCkB6iA9XS55ywKD3tPbQdCe2KISQQQEQIACQUC
+R++8DgIHAAAKCRBf23HhL1ilK3F5AJ4z7lKNjD29Pah+YWUywKj4v1z7nQCcD6Vo
+QuD58klZEyhXbv3q91XRG/6ISQQQEQIACQUCR++8DgIHAAAKCRBf23HhL1ilK3dC
+AJ46Gq7SEPHdrZqUhfR7+V68Sg3ehQCcCJjb0ba8kd6crzPa/WiHnGvcPKeIXwQT
+EQIAHwQLBwMCAxUCAwMWAgECHgECF4AFAkl435AFCQ/OdIAACgkQMo2oZ0UPieyG
+nACfQMOGmtu9y0j2EbEFDuphkNnMPnQAnRm81KLiEVeAS1eKLYZ88SGUfI5uiGQE
+ExECACQCGwMGCwkIBwMCAxUCAwMWAgECHgECF4AFAkWZglsFCQwMGEsACgkQMo2o
+Z0UPiezv0gCePbUh5lK3Y2g47X+D68Pm2o5xvNQAnjvyfWafKbhDY3dNNPeuyed5
+1x2+iEYEEBECAAYFAkl8FPcACgkQ7IA58KMXwV31KwCgzANGg0fEkmkA5bIuRd8r
+EfmxSnoAnRxw3udIJOxqS2NDxAUHNM696BVFiEYEEBECAAYFAkuMSNYACgkQNK6u
+szzRsMwGWQCgyjLm0qoD+86+JOCQEPS36jFtjGUAnj0uFPy2A75Zx+iSPng/+WtO
+zIc7iEYEERECAAYFAknLgNoACgkQNswVpONZZfxukwCfcJOmBOzEk52KjxfkJ5Cv
+OKLPUbUAoIqwRCU7hTcQiq6JHCxwPEgd/oGkiEYEExECAAYFAkqYbe0ACgkQ6dZ+
+Kt5Bchb6HACfTy9uMRRSDIrscbv8fqKhXjVgBM8An3s+ImDx/LzholCxdxXipFlq
+/SFKiF8EExECAB8ECwcDAgMVAgMDFgIBAh4BAheABQJNc/PEBQkTkiloAAoJEDKN
+qGdFD4nsuXQAoIm8z/NPxO4Ry9Uq8cCoGzE3gb+pAJ45+PejWIJmU2jCka0qc91Y
+e2aO14hfBBMRAgAfBAsHAwIDFQIDAxYCAQIeAQIXgAUCUYU0FAUJF1RQBAAKCRAy
+jahnRQ+J7C02AJ9r5PpYU7wcEqapxGovZ4ciwt1YuwCgoodHG1WtJzzQ8H9VvD3K
+QbcFQLOIRgQQEQIABgUCShv8TQAKCRArjjFGQYntJ//YAJ97TrrUcglo4g8Z1ym6
+2yZL3A3dfgCfR7yiWI2akD5FcN83dlVP7Q1bpRqIXwQTEQIAHwQLBwMCAxUCAwMW
+AgECHgECF4AFAlTXdq0FCRsX850ACgkQMo2oZ0UPiexYEgCgnN/0RF0lpG4dxou/
+9NTu5aq3OS8AoJAcGvSbS8GwkSgu2C8ixpQxPv09iF0EEBECAB0WIQRZHhhUcL58
+V8z0UW2abZJij/3JQgUCWKbPhwAKCRCabZJij/3JQuyJAKCE7BkIc1vgM1hMK5Se
+fscqyKAxcQCcDAU8oX3KS/VRbjr4X5OyQAHvR96IXwQTEQIAHwQLBwMCAxUCAwMW
+AgECHgECF4AFAlk988AFCR7ZpTAACgkQMo2oZ0UPiez6IwCfZRC7MdrvExBAA4sh
+S8GUTFuVfzAAn2aKDUILX1yn47MMSM9JtqHbtJ70iQEcBBABAgAGBQJa9Kp2AAoJ
+ECBWhy2NZBIAKVkH/39iCXe3wUg10CPDtDWjpUTuyAXImPa1LL8X125xvJhf+HM3
+9Wxfwou4uSZGIviIYTXjfcqIcLiKIsFkYLI/4CL/2XG7arN/cGWNGQzyHXrKuydO
+3YABo/Y23SsvG0f2/Ett5YQzJ4jAbK9bl0xTlZOEIfRwwwzHr4QyPMgxDNb8v45G
+oAPYOJV6KZIReUydSD7ROoZosgAmOtLlbP2FZ1drg8WqSeBeiA32pSIOTmnh0pA8
+Ii2DbImzXtO4uMolWGdOiFre5X93XjvNlA8fQbEAjljxQmDiCAyfBGpGBihXjdJP
+fqy6iEqSS6n7t6S6X8KT1iVydUwgva2YcqIhPwiJARwEEgEIAAYFAllbmLEACgkQ
+I0UbEHqgOUGL0wf/c7hMAt/Q/nJ+cqO4hoTuVrAADPlwSQ77GdATG1ItZQJ4hY8T
+Sq7Eceo70WP1lUMzDPvTCsfSjtX8ssDs8debh1H1DEN5qjSW81WxlxeMB3/ulZMR
+aCe79xykcJBxDX6Mp/leC+ECvY5wZl7P6ygdAvk7oVfd5cgUGpy257LJM7nVDkaw
+qycM3EIsP6kMqQnzbiIKZ0AwzUsaGds3hUg3BcLIl69nyFErvN4MMYF49ZqQ+EiC
+rtIs7BP2ipuDPO1Ux4QvSLe68Y+3KZZua4gmF6C46yTVNFCgTHR84RgarEF9iMja
+Tq4yvBMSVlIAeQMHwxSN+yVBHOGBuf0T19tVaYkBMwQQAQgAHRYhBCiVqIHTQnD6
+v+j3R7T2MznmXWQUBQJbu4XcAAoJELT2MznmXWQUODAH/0NIjGIl+eOdjqPxkT0s
+6m3r/FXh/Bm8PqI8F91JOIHM3HFIsZYjPiUNsVG1L3kMkd9Or8D8LOqIrpMmrCP/
+ox39EKb+zgSWXFC6f4rt+dmwtFGoDwEh77PyR/x2kuV8zB2PmruTaOPJ0iRhtVNN
+GmvFcl2na4q2sDNeZHWtc8ETGBbtCvGZnsP7yTusaTq8/PPgTbP4XFmjdihCW2Gd
+rHciuGObzpACUoMlTL/hgcUNN6ZmOF5JdlZAXtX8Yb9QS9FR239sd7UpXpchUT6I
+A+iUyXfN5f5PA8ZLw+qfNCsU/ph0OXsP3yDaK5F1PBEaWKiPtyScRtvMf7422nuo
+R0qJATMEEAEKAB0WIQQolaiB00Jw+r/o90e09jM55l1kFAUCW7uHTwAKCRC09jM5
+5l1kFHI+CAC3e+1rnG7Fo4B7ygqsKot3fTvn0jDv7JgRQWujQdW8P8+iSzPNR16H
+hbcW3Uu58EQVjnqg5nnonlUMFLHJHY/lAv0dWi69314Frn4/kbd8PEgmJOT2Uikb
+GYsBAdRJPJrU/LgJoAuEG3Qdns87g8SdGGxqevbvpubb8LaafdFMKt6J1xe5CKOj
+NMpwMe2WUmrNAacGd04HGUOKv6UmOSOh/yX541grjO+hUa0U1SvTvM3kZKiaAgvh
+bteZTAp076187yZzqCa8sqtQSoBZqbhQPCmx39HAuOUUmvU8IUmk7U8JrWFmp5iU
+9gbB4alRZeNUg898LgdIG/qleL5wlsBZiF8EExECAB8ECwcDAgMVAgMDFgIBAh4B
+AheABQJdGGb1BQkina7lAAoJEDKNqGdFD4nsJaEAoJDRsW1zUC59p8+KeQR87T86
+nBoqAJ9XE9BpyDSebfKKMpbc+c6dWhHkb7QzUEFVU0UgQmF0Y2ggU2lnbmluZyBL
+ZXkgMjAwNyA8cGF1c2VAcGF1c2UucGVybC5vcmc+iGYEExECACYFAkWZgpQCGwMF
+CQwMGEsGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRAyjahnRQ+J7Eq6AKCEdJZ4
+8JV3VAb/scyPM88LmGa8rwCeKHfZEDwGBXGP7evABJMxqqRhOwaIRgQQEQIABgUC
+R1wO/QAKCRAV+OXDwNCeakPwAJ9v6PN8McIGyCindqkYCVheXzbYjwCdHrVC2ZT0
+VLlLhe0fSQ0+DSTYhByISQQQEQIACQUCR++8DgIHAAAKCRBf23HhL1ilK3F5AJ4z
+7lKNjD29Pah+YWUywKj4v1z7nQCcD6VoQuD58klZEyhXbv3q91XRG/6IRgQSEQIA
+BgUCRt8ApAAKCRA5X2a3ZXIBUbjNAKCqNm4Q6GIw1jkpNXiNvhNyzxTrwQCdGdhd
+zpmyoC4t90fV8ZjP3E3vOkaIZgQTEQIAJgIbAwYLCQgHAwIEFQIIAwQWAgMBAh4B
+AheABQJJeN+QBQkPznSAAAoJEDKNqGdFD4nsKc8An2CdOIi7nfZryHF8GJJd+J9N
+tLFpAJ9eusCDxCdGumv/+ftqd/gKJ97YPYhGBBARAgAGBQJJfBT3AAoJEOyAOfCj
+F8FdmdcAn1R5biaJGA7sNPdyB+DwDaXMSiVWAKD2YG4RNYx4j98zzjuKpkiBLoav
+hohGBBARAgAGBQJLjEjWAAoJEDSurrM80bDMlL8AnR3PHSKLo0hMr0PJY8RgrNkt
+1lY0AJ96c5o98jclLr4LW8A21j9Y4y2WxYhGBBERAgAGBQJJy4DaAAoJEDbMFaTj
+WWX8q7kAnjbQsJgKGyvR+dB3xxx2jt7anb2vAJ9jaFneR9xCmlPr0XulLAV3jL2u
+RYhGBBMRAgAGBQJKmG3tAAoJEOnWfireQXIWN4UAn3PbXNOg1DOPrlRkpD/FBSI6
+uOTwAKC22RhBBQybsshONvbm9DWrnGAoGohmBBMRAgAmAhsDBgsJCAcDAgQVAggD
+BBYCAwECHgECF4AFAk1z88QFCROSKWgACgkQMo2oZ0UPiewvLACgiE8QH4ieOj1o
+iU/jKwxdel2/8xoAnR6+jzuAia3TzwBDwFzRXKDn1yB2iGYEExECACYCGwMGCwkI
+BwMCBBUCCAMEFgIDAQIeAQIXgAUCUYU0FAUJF1RQBAAKCRAyjahnRQ+J7J6cAKCI
+sRIpXhlfAFzOAq/OaU8wOza7ugCeNu/TS6kC3Lic1R9bGE6hRzIAa9KIRgQQEQIA
+BgUCShv8TQAKCRArjjFGQYntJypVAJ9d+vsNTFyT0un/6rDtgXWc3QkbBgCfcMFY
+G8J7j9POgrKiLVom+TkIpryIZgQTEQIAJgIbAwYLCQgHAwIEFQIIAwQWAgMBAh4B
+AheABQJU13atBQkbF/OdAAoJEDKNqGdFD4nsXiUAn2tEAi+CaG6aL4mmeIexV06W
+F6+OAKCAdlkRl/waL73W77pB224SBxd1v4hdBBARAgAdFiEEWR4YVHC+fFfM9FFt
+mm2SYo/9yUIFAlimz4cACgkQmm2SYo/9yUKi7wCdH8ol4mfLiciwZf4nN5LSzNaA
+C9wAn18zr1kVlt/UrorFCQ0/KhjqWERAiGYEExECACYCGwMGCwkIBwMCBBUCCAME
+FgIDAQIeAQIXgAUCWT3zwAUJHtmlMAAKCRAyjahnRQ+J7CULAKCKxI7dZKoTtSTt
+6fq2tFIA/qSDPACfYWnSGiMbps3z2r+o5aIjy/xRMSqJARwEEAECAAYFAlr0qnYA
+CgkQIFaHLY1kEgCvqQgAg3rwZRUI6zbhYAV2Go5427vJ6+UOZYnHakxGwam0qKGj
+c74j40CI6YNtzD5UyFozFLhQADri6PHdWRhCtbCP/bScnkxCWHIkaXof/of9TyKj
+6grKtOM88SjkwKeUbCbJL65bETWbwQmKlKMXSUkuZjwCNQEbi2v9gjIrUaPdxBwk
+0b1rcDDBYdFP61c3yNRQeYFQ6gknuDAFBWC++Wesq7FOwlbvYOMeV2bMDBm69+O7
+giEEyK9MmdvDRzr6CkYsCsUQlQQxgdn1DWO1wo2Dhb3crtYGLT5gbdQAWbURd1+B
+YrylyeTueNVENUvyPqO2CPlOtxxaM+14wGWpXvgN5okBHAQSAQgABgUCWVuYsQAK
+CRAjRRsQeqA5QQ6vB/9lYFve9t0PiABbV0x/523vRMfSB8P6wipP57PAfcMNIwxO
+DLwaKL8p7BRpwm572DsZo67Efl64EMT/KRZa18LPaJtVgb87zPQ+J8Zvl3xqxjyY
+8N9X9+lLmDtvMg8mBc3yB8214h08PijsFInpOUSQVElocIwrmnpmDfmqZxkFePv0
+2vKGDsZ9rDZ7lJZO/+0vevIr1sWUUw4ZDtPPxpxU9q8SOPyuO3xqZsyrhCaLvrRz
+uP+zSNUIY3J40QPeBmQRLLPyuE9EHnWe/BHFf6anvWRvQ+aqx68HMZWJGm7SB3DC
+suavJPNRd3NkLjeYGDqK9vyhSvgy/lq9QbkKu6CIiQEzBBABCAAdFiEEKJWogdNC
+cPq/6PdHtPYzOeZdZBQFAlu7hd0ACgkQtPYzOeZdZBRc0ggAqqUkrqbRAPSMO8n/
+f5S2sdum7NRjShQ+P6MBs2pnUvx2HcGB74mVR/oqnLlbZdtId8YhHl9dMaMYVj4t
+wo+GyRNYPrNNESefAWwyLLE7OvoaksAq9ah6YotxiQOAb2L7gjIeOl5angXoDXVk
+y6hIU2522bdHedQRrA5OxOq1ZMYQjHKlBjsJPanOfxHOfjmr9J+GzijrWFHuSSrW
+pDxzGQkvpqt7KKcgSCVSL5A4FAXqkEXBudRjbs2E4NLQEpaGmhU2ET0ZzeRx4T//
+T8uVKCzoV8YwjQCf5JQb0lfUymTXkOWrI8W4aQSnZDkgU/5b08HBbugVTjPcL/Jy
+CK2fbokBMwQQAQoAHRYhBCiVqIHTQnD6v+j3R7T2MznmXWQUBQJbu4dQAAoJELT2
+MznmXWQUTK8IALEqsIF+uNwFSsNk7kjDqZ0aH9SWC56oyRQW8Mtn7OZ9r+ollRsJ
+ZJrtIk1KLhWJTAiQfxK4pLWPjeBkCQqwIcazz8IDmjROMW8WHp6vo8iGhR4OsP3O
+69ZPizf5jY90wsUryXz4QLbWL4aFAii4k/pE5FSg4NteSmQqWwaIiq0ruhE5TDDH
+J/VGAPSd6BmrsmbTqeGtPHZy0zoqf1ToUS8SZ6XHMU3aOVhrpIDgQQupEWai64/O
+vd6TLtH/a3uKpHZFRzX9l5dsqbT+GbgA5PhgdfUSBW4RQQ0cgitP1A6l5roIgFRd
+dc2YgxKUPxOIdmlUw8CJnAAJKVjrcjGafpeIZgQTEQIAJgIbAwYLCQgHAwIEFQII
+AwQWAgMBAh4BAheABQJdGGb1BQkina7lAAoJEDKNqGdFD4nsOMgAnisqe+N+RYtO
+tvqlHSZKslciiVZeAKCebMC6hK80njSpKy1yjJWtqARZEbQzUEFVU0UgQmF0Y2gg
+U2lnbmluZyBLZXkgMjAxMSA8cGF1c2VAcGF1c2UucGVybC5vcmc+iGYEExECACYF
+Ak1z9AcCGwMFCROSKWgGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRAyjahnRQ+J
+7E8TAJ4vr1ukCfTAaci5TXdDhzPdlo2IzgCdGMuYMDuL34qC2rtefbRZHXQ1hnmI
+ZgQTEQIAJgIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheABQJRhTQUBQkXVFAEAAoJ
+EDKNqGdFD4nsH3QAoJv+GVrZA354xUc03kSdspQ6wqlcAJ9XTFU5gWnFwLbb2GNP
+vK0n3wYcNYhmBBMRAgAmAhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AFAlTXdq0F
+CRsX850ACgkQMo2oZ0UPiezf5QCggNoy7In5p0Yzcu2Cx0S/laxU+JEAn2swX7I8
+bN29MVt660pv5qV1otNziF0EEBECAB0WIQRZHhhUcL58V8z0UW2abZJij/3JQgUC
+WKbPhwAKCRCabZJij/3JQlM4AJwJABiE1G9idC6WwRDcEIMGguzNdgCfQwggIgYr
+urjp9Mx4A+zidsTTePmIZgQTEQIAJgIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheA
+BQJZPfPABQke2aUwAAoJEDKNqGdFD4nsLK8AnirzM4j90VxFhUJFl/EPgUwuPCfP
+AJ9TmbY/wkogUTUJrfSSHb1nIL3SeYkBHAQQAQIABgUCWvSqdgAKCRAgVoctjWQS
+AM5wB/9YPDceJNPEH5id3a+jedKxVxdFVA6v2lwHu7QhWIwX5TeeXLnNkWRaHter
+H1gaOP+3SNi8QkrgA0b5wRBHRO/uWELEG7Cn6J4pQAWMeJn4+UdBSxNfK3y9/iy9
+Tnv/70K5pEuR5fsLdws9TrfxfnLcMS5mny3fLc/klhWLJL3INEpcXZKrzwR3rKrK
+9jaa+sfsakikZFjP6Lz0FMp5Q3DmHuNQ6AmnQ+s7cM03xB5I8IboPTM5OZeKjKz7
+GlxI6Or8jC3gexG+h5Gt0e9Cd7fqxA1jGqDo3gw1rBim9Iytje4QPkKR73fikvGY
+aBFq4SLGni71E7CBWqYEkvau1citiQEcBBIBCAAGBQJZW5ixAAoJECNFGxB6oDlB
+49oIAIPe8trSSU1kukTK2wD2S49xrfBACDp429GnUmXzfe39ndMhOCiE+zYKCZ4C
+XxVCZysf7omVGiaknYMcRGJPfYRILYSXyDmsL9lG5wDX/vPTVmuPRFeeJ8306XdJ
++AoM9RIxEQbEQOrSuuo+T33ptLCB50elgpO+lB4qLex7zdeg/qGhYFb+aKwEgbhJ
+r9GJhbhgZtcFjVCeU4PEZMM1r80vwtqj3k9aANzH0pQQwW2Lg+hP8RnHJnE2lsB4
+KLPmka3x0qAi+Mtx2YOSKpfj1NOtWvjfAl2Mm5iD8bbb6zcqDZ5dvEKhfwHVYveH
+cjR5AemuOMvwSfgknZXpyBppVIyJATMEEAEIAB0WIQQolaiB00Jw+r/o90e09jM5
+5l1kFAUCW7uF3AAKCRC09jM55l1kFIiDB/0SCZlHvJ3gNvJVZOP0amKp3+GZqY/w
+5CVPcoTVwJDTImzZnY2toJxGNsFgyXX2Bdh1eyJB2CK3g1zg6M1FJEcU8YePoUZf
+QDaZ6EKallE4ahx9U2UroINDaIzw3AHHMuNgb3KNqb4MlynKTz/wcFZxxt9LrIxH
+lg8CCcwF/xJtfwQQvafMkOabJDGJb+VTw3//+I2CvMkGdd4LgcDwRGxX70zm+dSR
+uhiltJz+cBzxiDzk9tfyTR79xvqK/E5DBEYcKz/mi8c2fecMCVfGfzwbZcehlH5o
+cKkQ3yV8Z1EsKyVrzqJY0JS9gPwGeey/ZRWmibPwhOLxTsJ8jtU3XOsAiQEzBBAB
+CgAdFiEEKJWogdNCcPq/6PdHtPYzOeZdZBQFAlu7h08ACgkQtPYzOeZdZBQ//wgA
+nBX64Oo0Cm8RjfYnLnx/dLe8s9lZvRFp9lgo40M/pzB0YoIEISYsM23mYF98+WrG
+rCFtOiMWZjf1xfVkpbAD5LrhLFpZ4+bGsbyQrNQayIBoNbpj35WoRi2mdCFPETpl
+y5o4//7sUvEGG7SNASd62py4TZV+GTxj8fgekEJAqlwIqvWbmmzBkF3HBnKX82YP
+FUuap6cnmaZPUtZ30benDUYGLr6j15jXePz2nGV0m/EmLDf3jg9ZhUahDQZ/LkvT
+LbNblyAfdme4c5Bi0pEDAdfkP5Eb0hz07MkMAdrLemW1rz4cDTFNRxAu2NIg7cyj
+6Qv7BZfD8eOUR2U7yB5144hmBBMRAgAmAhsDBgsJCAcDAgQVAggDBBYCAwECHgEC
+F4AFAl0YZvUFCSKdruUACgkQMo2oZ0UPiewiPQCeIRiPYA+Im+Lvzv3yp9W3JQRx
+O2oAmwX/uy6BwRe25zglMIpEa/we0ZestDNQQVVTRSBCYXRjaCBTaWduaW5nIEtl
+eSAyMDE1IDxwYXVzZUBwYXVzZS5wZXJsLm9yZz6IaAQTEQIAKAUCUYU0oQIbAwUJ
+F1RQBAYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQMo2oZ0UPieyuSgCcCp08
+sTWSD7QXBqlOFB4H3q3UdnMAoJ8DEpGN3eRLDwcjmxI75TAX7u1ZiGgEExECACgC
+GwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheABQJU13atBQkbF/OdAAoJEDKNqGdF
+D4nsVZwAoIlJZeeoKD7dx2UAvPRChXkoRMTwAJ9ojjaIbkrasYADaodFMsw9rgrD
+HohdBBARAgAdFiEEWR4YVHC+fFfM9FFtmm2SYo/9yUIFAlimz4cACgkQmm2SYo/9
+yUIfWgCfWOJEr2R/TI2lceOujsIdyzO3h9QAn0XTiJiR4AZWCslWSUlf8lthX6Fc
+iGgEExECACgCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheABQJZPfPABQke2aUw
+AAoJEDKNqGdFD4nsAFAAmweVXa/l5fYSiI2GardDsglH2cQrAJ9j8uU8OvkC/wfH
+YHBhleL+phCfwIkBHAQQAQIABgUCWvSqdgAKCRAgVoctjWQSAOLDB/9ppLI9oJxB
+i2Aju5dc+8y7DNGgVy21IHCXOJTCtlqHGcrRb1R59VBk7Eqj9hFRnvSVtp/5GNW4
+JMepvkYOKAwAY7p7KLyhjBCOq63vnYR0FutH2+SXDHc+PwXjUI+x8TLi3AMlDm4t
+3LP8drYDtY0DfIMKAE4TWZxRNHJoY9Ppn/LkJHP2flZI4baAQUvWFsWoOMxdQYgg
+wrFjJpV99PD55XeODdBhypJq4weE0yvEi8LZK6pyZXrM+UVhLfGzv1J3wCv0NMX4
+Bb5tXcEE6sVch649laRoj83pMMtDtpoW++Pz00FsKU/Glf5Ln6UKE/6BMISuu5/E
+1YU8f6oD/VF6iQEcBBIBCAAGBQJZW5ixAAoJECNFGxB6oDlBCjUH/3IqkuwFK9Vr
+ye1W0Xj0DELVnToRVqDkNUXW9PxriEq2uw+aYPEnPmQHqV99k9MwC9K3OukHiV25
+wEV0UsoaCYdgldyEN69njCbQla8f3FFQ4ll78eARmzTvaS/c4TdPyVzuu96jDDJj
+ETW59DYcLuDqEEllhvsHbxS1bvJl1YBj53CAnoqksB+D58zlUYvHZvZHUans/KFa
+I7SkjlUxGVFGW8uOXWaimh1QtMKOKnF1MTqMBnHysPDZQuK4UxNSyJG3X+DGYpzp
+X3NvEWUlDqk8n1vkEgDWyU53m5CIiu1ycRpKRaqJNsib9BwzP0Nn+/KjzjngcjIC
+sMXa3C+Gj4uJATMEEAEIAB0WIQQolaiB00Jw+r/o90e09jM55l1kFAUCW7uF3QAK
+CRC09jM55l1kFJLpB/0SUTuMMpSuyOCFCoXBPbQTdcavd2628j9gVRJ503qrx1jR
+siTjnyOkqVrQ+Yq5lYitRyaAMxBqXmrKUYoO0gR12RxW8/bgDlHuTU2oOrKEztp9
++IxHszn6OseoGbpCTZjVca8Hk9ksbCsmk3sSKzUzKTPD+BgUNeDwoBKPaFOISuE2
+ccGZq68mqN/qJItemgJ/utk0gwEpPp0KPRsv7S0gtS7upDHfw9LFTwmW06QDm99e
++epGYj4S6rQyVwTYJGl2DRVqIU9UGoHnEHAzuKg2chyvIA2Q+DeNkINBn98Rfgvk
+QMoZBXJTzcNdTOJz8wsKiOrjquC0ORgsSIcQO7uhiQEzBBABCgAdFiEEKJWogdNC
+cPq/6PdHtPYzOeZdZBQFAlu7h1EACgkQtPYzOeZdZBSUMAgAjhYb7T/TZEaztlqP
+e3h0JFQShqMO4VuZRsq44PnsQ92JD12wl0s615fjHoMYIe14sXdITFtict7VeBLy
+E5mIIT+m7LP0NmSJQdMCZHimStvxN3FE8sBidxJP3L/M9rlNHq5h4H1borhDrsL0
+URhh/4U2HSBNnVjdv5xhT0Ay1JWfh3DX9o86F7xTwlAmW+zxOiUV2ZXQexD46wOr
+T9wUCP+nzqRN7KJbjfHN2z0KH/+lTK0fO0ltgf3UFSVdAzrA7JP0gH2FGvtZZ71B
+vuhuweXO9//FL4GxcfYUswsXRXLQsQEOtjU1QLKhLS+SRMfTTWwXO8CrKiyv1gLU
+HNiYp4hoBBMRAgAoAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCXRhm9QUJ
+Ip2u5QAKCRAyjahnRQ+J7CYRAJsEXKF3TFQerfFiEJKfdMyZKBuBeQCbBC1luZaF
+vk8xaQv+M8sjLswDUZi0M1BBVVNFIEJhdGNoIFNpZ25pbmcgS2V5IDIwMTcgPHBh
+dXNlQHBhdXNlLnBlcmwub3JnPohoBBMRAgAoBQJU13bqAhsDBQkbF/OdBgsJCAcD
+AgYVCAIJCgsEFgIDAQIeAQIXgAAKCRAyjahnRQ+J7D+sAJwM1c+4KsbZSwnHYmTI
+K3KxCgPO2gCdHgLRe/Hjpt8nByDNplHJpV/qB7uIWwQQEQIAGwUCQ8HT8QMFAngQ
+hjxbXj5dK1tALl1cKj4kAAAKCRCG5rJNklhP4dLcAJ91HEN14NgMjphgTJ1DnYKT
+R9vAkQCfa0kAV5xeQ6krdar/Q2m9mrKinzuIWwQQEQIAGwUCQ8HT9wMFAngQhjxb
+Xj5dK1tALl1cKj4kAAAKCRCG5rJNklhP4cnmAKDWuK6AlsGC3Dh8tv9fR2xni+sl
+aQCfdQeoZxSCEGbE+z7kGkdtGIcm+KOJAiIEEQEKAAwFAlcIn38FgweGH4AACgkQ
+RxvIVPwCLt7eoA/9HB9dLczDTwmNvDIlHN6kpQhaNwrqVVRt8bAk8Y3MX1t+zA1I
+K7mOTYVtQ6Lr1RsXEqbeYdFGEgkLjWL7F8JH1DtIQIbhvC+QcYq8o2kUsPoEsA+O
+2K4RongjSSQ3FG4cPWBdrLQdciHP/RGDJteffU9Kfb3tF/HLsYuQ6xNJijTIpk/s
+3Jcn6RgBO0LZhtmNBZKY41ZvVoFU8D1DZFuVmN0gGn533rMVmQGO/WdqHdUbrg/X
+kLqJFov9If0qiJ4+RacRVJeHJVdrgNLCphah2h5LqMjnoky9plcalx0ygZxx+8oG
+UEk/ayHRHwlBXCIzMsQtZ5vENldxVllnY1DDdTqAeRRD6eaM1qXetU0neZtF81Gg
+jwrb3EFvitPs+Dz8599ULwoLZCDQx/iKthS0hms8jf/RDOGk2HhV8Zxvf3iJYdwv
+WAQ+jAT0dMu7nruGzrTivk5PyIauyGkl6gOgl5XNIHGPltn9RmDEJPzya3SETCO4
+/E9cpmEDAeOejb/WwHbxHtN5/xIdJRuM8xBEFYIgnztktsZPDWJKIzEy6Bn41MWw
+pkAcAzDWmmLP7RKoUamJ84N/OFlsYLSjp6bFeE01/UsS7Nh5mPlvoC5V7obzd9Dx
+m88JWZAyktrBxMQAd29edDNR9zDgRi253gT42m6XK/5mMbHSWHSp5NGTjrSIXQQQ
+EQIAHRYhBFkeGFRwvnxXzPRRbZptkmKP/clCBQJYps+EAAoJEJptkmKP/clCj48A
+njlF6e0q90/QxxlZ1MhvppQxUskHAJ0TDq6GpMN1tMBWWISM5Urq2xB4rYhoBBMR
+AgAoAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCWT3zwAUJHtmlMAAKCRAy
+jahnRQ+J7Iy7AJ9XmI0nsRV54ER1VgxE/3jFB6WNQwCfVIYgdjfoKww32+oRlKrE
+xslki1eJARwEEAECAAYFAlr0qnYACgkQIFaHLY1kEgDeWAgAiLWEuzo5uF34llwV
+F6bkiV4amtSDCKlmaBvZbpakre+z/GLAJyf1dRtt2k9cBcyrRCAutiOuJJgHoHzj
+U9xNWhM5yt3xmEUx2ZOhkyPXofZmeRG7HZ+8d7y7ZN/jbpox4WQ18O7k8AULrfso
+LICZlex/5wj07Z3qjYSMT4LduETlHCXar+ylkiWnchCStK8YyUeHUIxY2hklnzrY
+Sbg7ST9ZtJ4IWTzzjBKsfbKy0woiQr51KQqYDAs3/M6ikZ+/Kktvt++cnY6RqjHR
+1afKOLeMv6YlgSAgDGvW7Eq1/GEt8gpOZ1lC8ZDjonCtG8LCzzzleKBeAtVdCg6f
+XVBNn4kBHAQSAQgABgUCWVuYsQAKCRAjRRsQeqA5QaskCACz/sS3k5hVOSkXhii8
+nRIdINlkwPBlGeHEVmBaxw8WrsPnyMMwzy654oV4a5SuEQ4Fd9D2CNnT/T9witvF
+snYyiKHiznRWenQV3/Xqcxlo2MTIhzIdVbd1gBkMxLbe8CQ0RjB1RgsJiwUJBpbJ
+LRZL6biI4MbkRsSCeCwRhVCMdBesV+4SRRsLN58EWEZZYTCbaUldKQ289Tbq39U/
+PJ0b8RLjf4bkTzth9WLbM1R8DvwX79yoMsW9Yyq3dZht3YSTjF+hZWBKgjjOsHWT
+gVBttrmsjfLNpTvVpuOqiUZJZt1Z0FolJcXbucF6dmc8TFqlYtTvWtJYMngd3FHs
+V5J/iQEzBBABCAAdFiEEKJWogdNCcPq/6PdHtPYzOeZdZBQFAlu7hdwACgkQtPYz
+OeZdZBQmkwf5AXQEO9v2Egx3EgQ2N9K9QG2wyPpOAXLIkGxppXiGlsmQFyO2gTqv
+/Zl8bUFIhhMVJ9R9lTxpHrfpiEdy/2Mlz5hX8sYZEBmNWcVUGLRK4hJYdD+4M9Nf
+aPIe0rTcU//lW8A4a+yRfHmMrH/mZHmhu3xJQlVT/fppTrGAROqcvG3QocHY3Slb
+lkAsr2Mw2d3SiHp7867TuJYtxrJjCMq9pS8TKXJnWRJQv/nnzbzAfxherYbRBe0M
+eSeGq3N295DvaA2Krrm9r4gxm8DMx1TVSAOKlsdRPg7Z7c2E2HFhsIRPSZLgn88n
+Vha6QMAgN6ly6jepU8rO8fo86q3jfogW5okBMwQQAQoAHRYhBCiVqIHTQnD6v+j3
+R7T2MznmXWQUBQJbu4dOAAoJELT2MznmXWQUleAH+wSTDJB/UwEXSHBo4pVyJ2yM
+usix3rAyekYdb3y4k4zQNfNavqTFBkLrQ1UQRd9CD8tGj0CZbgImWdRGt0Hy6FG3
+kXlnKVxau0hl1OMy8QnhzesRETHKIYpKOXBPe5kpjGM6NI33EqoxJl5GP0gPMJOj
+90J90tZkzNpesAw9EHGJYHkeBU+pAO870D1zgZQPddkYn0vqt6B8S/4uqS5rkF9U
+A+Fv/y/xrPhITroy7BIfGml99+F8+LzpDSwHV7Oc+Vs2NfyiYM7JAaYVZtylMwQQ
+jTGWzt2FsD6aZWZuhDatrhzugUpFO0K22pN0NthP8ScNurcyTjepvIaLwHdEdHuI
+aAQTEQIAKAIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AFAl0YZvUFCSKdruUA
+CgkQMo2oZ0UPiey0PgCfQfI4IJwaivwL9ZGkNw6Ojrfcw3oAn0JsEDFsufQBVOYV
+HDPk7kzd58fWtDNQQVVTRSBCYXRjaCBTaWduaW5nIEtleSAyMDE5IDxwYXVzZUBw
+YXVzZS5wZXJsLm9yZz6IaAQTEQIAKAUCWT30CAIbAwUJHtmlMAYLCQgHAwIGFQgC
+CQoLBBYCAwECHgECF4AACgkQMo2oZ0UPiexXswCeNyQux4xDexfqqd4khxYkGMNK
+uxUAn35TvkpLvbOJmbprnJm9cblci0MKiQEcBBABAgAGBQJa9Kp2AAoJECBWhy2N
+ZBIA5z8H/1TVJgnFL1U1AbXL7sOzr6fGY3Gvy5YtvnmVb2hMhGRXClaLYRwo2L3/
+UAjIVHveeWN+bqKFSj/P1XgHp0fp0QbwrMBAtAs6M2Dvo7EFLPb+QIESr2MGekie
+YYXqV/BgUI4Y9hQOsI/65Daq5OWRlGAtii/LUdipVLEAS9OP4sGB5W/I+TV6tOn0
+UpigKcdli905KXA5y2GbRI8J5AI0gMBcknDjrKE4oRSiGXK4TTWP+ZtzTf8tf82F
+L1zM1l4mbnpwuJ06XOUwsR/6RIf17BiXfxI5xcSAYJC+IT5GyjfIhllPQek/OOPY
+MbLVpC0SNK0Wvn9B+h33R0Q2Ewqy1bCJARwEEgEIAAYFAllbmLEACgkQI0UbEHqg
+OUGXBQgA07cFyB8B/qXeM8mMGQhiwz617hIFAseNhLaSkOXZ5DBOeMuXIKVf7tlN
+AdFQIYerp+crnBUbX24mMk8MuqAZG0SLKb+gJhuCW8zviZBRoiba9uu2VFqd+XAq
+f/Y+1RQtKbiUPb9a5RgjzdJQy5ExwWsrLJaFRllUvWL5NNbaFbJC87atZim4IeNj
+4DnVZvFwoBSKrRB9ICkTAZhPl7i+wt5YooMWdjEga9CaqDqnJd85rp668LzOYZmd
+DBKWiea62LdBck+/1GWiJf7fbszldUMoD9KFwTVwzzLS4gARv3jCHN9CD+CkbA7D
+AxNgIzat5Djq0VYfhTjn2Qew6ywmo4kBMwQQAQgAHRYhBCiVqIHTQnD6v+j3R7T2
+MznmXWQUBQJbu4XcAAoJELT2MznmXWQUC8oIAIVsZ7d9Rj/XcOpc8PwvlX48D5aa
+1UYGpOmmsHgHBMjQZ52cKEAbNmmfR37f5oM2XGh7LWuS2EF775gAslo64B59Mlem
+Ft5WI47CnHNzZQgDYK3dvShtobnR1vxfIXnbHd1ZOWV3R3g6X2m0O/CqKRPNN2kr
+GoiNzyBBoJSQ8mdJCdu2xTrHUgNGijI/0Xe+HFgf0MtBP3aLUABBKpusPG2VOKL1
+suxba+UMyNHiBX++HxNd5lUdsO4jzC59Zi32HTReAeuLYpyw7dZi+cij/pWN/iZ8
+Q0MH/QCA0zEgeJPeXLK7ShcfGhkUwTMFggtKEhAoAEU9B1dp8oI4caa9XBmJATME
+EAEKAB0WIQQolaiB00Jw+r/o90e09jM55l1kFAUCW7uHTQAKCRC09jM55l1kFDPr
+CACJDwEvJSkcCEwTKpgd5XEENSWRTYwKtGmayJx/L6aTqEMP8zwxr+bwN9a1ypjB
+E3onXWFB7i61+6RaMM1IQE0pACm4Fqu44a0LZ7HqpB0z6TWuxOTXugyo3Ry2zBQ4
+fld6XrSfYsCULHNiLpCIAygCLtuYNvgKikoYn+qgieho7YBEy2LiLoEpKnK7t75M
+8wKta2IWSF5P7xGJFngy02xO9PY830fFDN/JwOiXcvLRiiaqIxndHMQ5A9SluCXe
+LmJqsF6BljkaTLTiaoShT2o6xFRob6bsFFf31rQX/m9xrLppl3O/NwrXZ+cNmbD9
+gCPJHJLLkDeXZ7c+hXxPWioliGgEExECACgCGwMGCwkIBwMCBhUIAgkKCwQWAgMB
+Ah4BAheABQJdGGb1BQkina7lAAoJEDKNqGdFD4nsZ9cAnAgA3YamLYg8xY5uUnMv
+bvwhn0vpAJ4xFbSXr4uFVYHFa464MrhfUl22GYhbBBARAgAbBQJDwdPxAwUCeBCG
+PFtePl0rW0AuXVwqPiQAAAoJEIbmsk2SWE/h0twAn3UcQ3Xg2AyOmGBMnUOdgpNH
+28CRAJ9rSQBXnF5DqSt1qv9Dab2asqKfO4hbBBARAgAbBQJDwdP3AwUCeBCGPFte
+Pl0rW0AuXVwqPiQAAAoJEIbmsk2SWE/hyeYAoNa4roCWwYLcOHy2/19HbGeL6yVp
+AJ91B6hnFIIQZsT7PuQaR20Yhyb4o7QzUEFVU0UgQmF0Y2ggU2lnbmluZyBLZXkg
+MjAyMSA8cGF1c2VAcGF1c2UucGVybC5vcmc+iGgEExECACgFAl0YZ0kCGwMFCSKd
+ruUGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEDKNqGdFD4nstJQAnjrRAG4J
+BRA6I4TMa2GaN7BEz02hAJ9Nn+EYRziLTBd6JmFj6T+on4pKJ7kCDQQ+PnCyEAgA
+jAKDcvpogvJvSrg3rkstDhxP4O+JZvfxzrdL9Qk0FPBlb31ECxPMBf2zKObrwGKw
+xgD3+lSb/y9SgOYnAsuwztn6BqjQ8AVKiI0MFDTa+tLrtY5860X7TxJD9bzMx/A4
+gEsYoFZYR4s/alGAzcqFcdQ2IiFnKE4KPtNXEMQ67lCEw5zdYSoJta9JUKsCX3KI
+/DOne1NnjNZL2dQadqjsEc8mjvUOTXSG1sCawzTP5tNoPHg13GeyJ0XGHbHY35Bb
+F33yr9kP76+zQFaiMyLDUnyQAU/0P+rm/I6Ts6q4OZwKK/tC5LD0SPDe08uAzkb4
+krRqxheo6seHdT7HjdDbKwADBgf/RGpQhhZc+F9o79S9aLV4XnY5CFev4EJvUqq6
+TF9V0rvZg148mbO/b8EtOfcBSdvAfo3H8w6wcC7X8Kt/6Pl69UZKuQOt354092gT
+rjJyg1uZBK9Ey/LSh0k+BNCfIw04+6W8ijARkpdoBrU3CwDKTyroWYkSFDkkzLvJ
+RTkMpVpqyI0xIEExPXZTf67Abv1dzceTDciblLJfQcsfDyWYv8D12ELEzLYQnFM1
+s6yD6Q51Xk/XQ6MJ59bB3uuFO8VpkCMEvqIxZXsLjgqyQgo73y1qFizsKnFG+TTv
+ooBdG3yqSt9OsLSoRrJkZbMX3PKpbT0ceWL8dULc1v2ol4fJGohMBBgRAgAMBQI+
+PnCyBQkDwmcAAAoJEDKNqGdFD4nsS44An14sFX5E2jJc87HFJeqPmeashdayAKCC
+mOqjo0CW5uepN19pXdP7BujUO7kCDQRB4aCjEAgA0TpR+0K5pXueL9+JfMKqX4yx
+TqCKWHcEP+cvHSgXOrBB8Y0j/NKMMPj2TIf4I+ecrlIpkuSGjXrurT0GY1pMzQsW
+Zr6/gRIkzynpCaQlcuY9m9Qk2QuepiI3a6g8Y9kojk5Vj/CTuxmtKreQIzpYiwuo
+cvSv9tKND/MG9MsYJdGsy28MWhz4Ig8jhiPRC9KdppOCmZo+KLRXGHxsrxItQ9n0
+NtLvTPkvWf/3MS/pYCRSUwHuXUGqvn1QT6O2RlbcYXopAlZEyrMmG6UwLltqyNdp
+Umig0/ECOrSHUBWKdluPUIzxWr/UHY6yTlG/UAtenLJ4Tos9de9mmfE5pCG/bwAD
+BQgAnSoRZaLMupdhs11JlnSqnWOhv+cGjCspWjWNX5RytQ/82CRC2IDozzJkY41L
+GqPHQkEO44P9EoAYVLHNXgzq/17sYlcAydJOWv/dsjcaKd+QAy3JmYkZdCeyznF7
+6tLAM/7NMeAvdA2a3qLE+kkBYITpvcA+nZZj6KKWiNk1CX+sYVPTPt+LgXwGuHff
+IMr1CoSxhxp7GqScM2eNEy8Lex05wHC5Sr/3ucdHQ1wxxH/hpYZz6Q1bIM/bFOYo
+TtFg2crvjRtMS4euP2D+fBCIp0zbzyNlcw+U8icsGpp0JV7kG11XQntg0UiApA18
+Qvwon8G7SlvGMC80A+GzUKdqEIhPBBgRAgAPBQJB4aCjAhsMBQkEBFIAAAoJEDKN
+qGdFD4ns4T4An1oxYBa0a7a7oQ9voKKA6H6KR+FrAJ9C3GLAh2cX0rJHieb72p33
+iV7/TLkCDQRFmYK5EAgA7pV2du4vVF/P6R6UPEWHgFh0LgiNhxoyP+nWSC/6F2et
+ZBaaaS4DvoaVBGfiQ3SjCP5aUrsdeBckhN4F+sO42ZX1+ioAXQYrZ3i80NS9LbwE
+zeFhgCA+u5MnF+HzapwSI7dQEJchlgbOeAIA5EfS3lbgG4jxUbfMBgvTWeKi/c6S
+9IFo9KPaRm9GyScOcGqdZAFRJN3NUKMOPiVdiUxJdl/K1434Vcs9DSMPY3nOb56P
+JhjSWK+k1IjcV/zOTxSXNJVKnzS9+eybSpgBIkwJYfKxPZQndmEdR4btgwZdD6FJ
+21h2YlPJBc8BpFSoIal2Ulz/3d1KbCoE1GmduMDGDwADBwgAu1P2QBZ7uDREdcow
+hYX6OR/JeMkdV92ueoCTLUnVZv//tNOL5sVVtGB9l4ZbsFaJ41YlUs4CIQu2nGem
+AKm6fAztVpZoJZ0gNbqIZ2BJmK1ALvR4clBqax1QudZDEcvz5C+ej9cMIzmnnk1P
+DSE/iH/jBXxVi+QQncd0mpFqYZvCeAUsH/GZwAEwqFDbM3kN+Z+ED9Fy3xOYpBmf
+UpMCH+i+P49dNeCvNFyRtPElQ/BsRbVdUJy8xZUMT2NZpfR/cLrlWMN6TNPRgAYH
+eLIlPLYsYsje95/ZSzEXeDP52HAjCVlXTMdhbvQams3Ozvmj+/+pqcB7q6OmzZpb
+LMcCBohPBBgRAgAPBQJFmYK5AhsMBQkEsQaAAAoJEDKNqGdFD4ns+ZMAoIthsa+z
+F8MlnHDtmFpDKTJoH4FDAJ9NeBWYgAgj15TYGkXTsXm08udw4bkCDQRJeOBHEAgA
+00U9g46xUZsyTsPjbRZAcLRJuz4NVE/pTbnicB01A1DD09vIUHS/CR9Z12wUQD+D
+04tWVBW5KwhWACIM24ojFFPcYClnC0VjPkzgd9z3bcc/34KjnSQ3BgpuCgHjdGRk
+H7X+kWydwfve9eDsb0Er8Sxne4xX8tWHG7r7FHyufHJ+HgX/XVdW+udnp79vU2fp
+iRkO0S8ymQXmMDJ8nILL9Q9PyzmRAVIoXn5sHubtOGW9x35nq5xDtckd6oTJZjdd
+EGxSTbVm7wjOQviEIt2SFedGNsc+kitlDsAuUheMBRfiyLNKIcr0yqIvaWQCd76N
+CCx7wtq263SMjwyxQ7A1MwADBQf+POFyawQBxikgLBnfPm/LKetNgCRJ9gHKspVc
+s8WkKFmsBUJ+Aq7Sg+qx3MRaPjt41HZpm/8NfzDb89u+oBmCo/wZJDLjX8rWD0oi
+I9S5SWrC6ObQ5Vn4MQCEGHQncckuKdH4dK7FCqNvsKRI/PsSbwY/Ux+dA9OeAfEd
+C5Df1Ju7TpUzwih+bOCy9HrU4xLRz7JzjfFF+VOtZJqK7qGcZ2sizRYofQ5lBp+R
+4fDODzC3D6fBiPijcX1MUNZ5UH8ZIPXJQIntNN8CPBHumBOhDjkEuF/tEwRbZTVa
+fxUUFaN/3Ajfj5o6u8tbGUSEDKiwcE5/XTE1BVbJ5hyMnb32TohPBBgRAgAPBQJJ
+eOBHAhsMBQkElAWAAAoJEDKNqGdFD4nsXKgAnimNgelmdpoudNOPKAJNk7gI6WOl
+AJ0eSoRxUd7a7v4Tep93L2I2x0CrDLkCDQRNc/QmEAgA3qSWyBuybYF85PW7vNSM
+63QoKQbr6LvVNBggBzdX3L4ioeTi9jmqb6jlIRx+rpq2MG57POMhbtiQqfHl4dNk
+R4d93Optk4dyIgy1n+Hk6zKUbi2UN00pMOVFdJq0TWa0oX4qZ2idPsdBstUfw1m3
+2ozU4ne9JZagyF34MoCs6TpQjiT+jT1rh87eBTACYrxR2MssG8OLGuQEcrQ3LXlH
+xkQmmGmvZMqwoJZ44VrPWmuTjuyYR/qhBUpT8geJvsBdgLR0qTMpmLG75c7Htfmf
+YoWEyd9q5N82dYQJvYhBLO4dM4SZ+gfIp0BvGAOIyoX2sTvH75Mxj7XNW4jnlvJd
+1wADBQgAq7+p4/akEHDIv79bbRtx2CvB7KoelB9s91pxfh8AkXGt2YAFqLGizool
+pGOPvJbqCVDsgOx2VtC2IPYJT+0OanhK66ko7sSZ3faMQ8a0dFWB8CiMgrtXAFtK
+T7j1evVyJ4BSAKS8aFRFqNDVRrucF8fBhFc0tRURHroD3rM8kG8/sOntFaqkAJ/o
+zJcqcpjSRw5+XltfUjM6YcM7iCgEz0kq2qsD4wp/80h58yRTy0uXGQ8DOt3xiuh8
+5DRC8UNCceXo/tawYm4sQfZbkqh7YcnHb/E4IFYnHWLC13DtYJxSF2+qlENH1j2p
++ngm2IJYJQiE7JaikIwxruQtfE9lHYhPBBgRAgAPBQJNc/QmAhsMBQkEXKaAAAoJ
+EDKNqGdFD4nsf74An2Gya/xsz527QJEKxDx5M6OE8oaOAJwIPBled8aFVkKMwA7i
+kwlxhotFVLkCDQRRhTTBEAgAl//enCPC/1M0DET80M2Q6zQw54wRwTI8PiqK7OL6
+6v+B8vg4s0UIWX4Kswolw5vbzlQliWoLfcgsZDnEwlTMgKulZGxmOM0C6eERw9dH
+L/K+BV6bUVu5TbDq5JOpnjMA2Dh2/spjKHge9RlqcdKKwf6TsTrzCKnBFAyzzinO
+1cVBzWsPBfYe+hqUQ+eSQA2Vsu3BNqSsWPjZL2v4xPm8mGjRrIMHuw8Edhnflil5
+Nu/JDYHDJiWGLZep6sBYAUZwFg/iDGbe8I1RabhwhSeZVJZFDEcx3tlAxUw7jKqk
+QaO9TfUJE2/cgScoWIyYP9sM3yvkRjVVRZAInYABrpTtKwADBggAgboche64dmxf
+fWn29bZSoQA387pO1aMGjgv2brNsRbNrvEEWWYuMuomPjk6OxLVT3aGYbhBlgQyg
+YGBVw29b6GDMoTnX1h7KmZgQLgLrOhJYsawMkI0sB0C+4lNjakomOMvdDg9ahHy8
+Ta+6QvEBW3sbgXwXABGagc1xTsyUpiz18eN6wYOvTqyysZWmRNajbEOEW9zX/4eG
+WYTO44gb9iYYDWx4UsYyLUwLQ9/3pIQ4+L+3Cwrv1jAXkIoPVdqR0UvggF35bm5K
+NwXsM2gGlMb02Zag2i4A3H3N5JSKgBAqzSHiCYJ1xOyyuW6twffmtuhP6PMXCWpV
+HldNKFv5e4hPBBgRAgAPBQJRhTTBAhsMBQkEDYyAAAoJEDKNqGdFD4nsJBQAn25f
+Pc4h4xnB1fo/SytX/VPizNusAKCSbgXTDRobHH4A0KQxTioLgtQHdYhbBBARAgAb
+BQJDwdPxAwUCeBCGPFtePl0rW0AuXVwqPiQAAAoJEIbmsk2SWE/h0twAn3UcQ3Xg
+2AyOmGBMnUOdgpNH28CRAJ9rSQBXnF5DqSt1qv9Dab2asqKfO4hbBBARAgAbBQJD
+wdP3AwUCeBCGPFtePl0rW0AuXVwqPiQAAAoJEIbmsk2SWE/hyeYAoNa4roCWwYLc
+OHy2/19HbGeL6yVpAJ91B6hnFIIQZsT7PuQaR20Yhyb4o7kCDQRU13cDEAgAm+UN
+H8HJ1EtXNipMvtrxP+SaLEhi+idJrUpcNKY092DBpZfyMMPEAOG+7ck10J+7oksh
+3AQ6eQsj8sDs8WDefCANXz+YURNYUkm83VR8f1Bn9gRqkezCsklOCSpIaaE/NFjv
+CIYtZKObTeCs5houHKWaSBulEnMcEzdIddp9DAGFKw8z9B9gIsImw4zbOM2l4Fdg
+rXqIxCxgEuylZNxyRebMEw+HNOGDO4S1jOW9T/jvjqyj0RNUAuK/DnVWWYOqE7IL
+bxZz5/TNKqtxQ4dqA9FIYXteWES51Ad74VfcoZ95s9tdeP6C7r+mZ8/tCZodkUhc
+lAQHtVvvB64ivgdW0wADBQf9HwO8WpgL8S4i4To5mv3TXevvSZoLRk58i4ecT/jL
+3brYFqM+Ieui29fH8MJIineB53pr56Tdy+ECKdb68tD1HUJfCeM9CVsEyPUWVHZO
+4A4HkE9olzFnHvf4Lr9c5ywxgPWtl+T8cFW4ldLs45qNoBuJiSDb+ncQyEE5KX/3
+oDkGb9IB9ypVBfAe5vdlpZCylB8/dYDmUKICEqnaO1pZIJUODAquhz9zo24t3j2h
+fI9meb9q/ZKhgyRy4NnKziolx+dNNu8cvM3SzWd4Z6MPXK05dvZQOrqwwoFVKMpR
+w0JZfn4HwD+hWJ5HAJGzk8CZp7YTGqkNNv3IKj+8blmVn4hPBBgRAgAPBQJU13cD
+AhsMBQkEfu2AAAoJEDKNqGdFD4ns1JoAn393yHlqGQaIY+zvupmDycSzTkD3AKCK
+9qKCYRhg40aMgs++6mCYF/SWBohbBBARAgAbBQJDwdPxAwUCeBCGPFtePl0rW0Au
+XVwqPiQAAAoJEIbmsk2SWE/h0twAn3UcQ3Xg2AyOmGBMnUOdgpNH28CRAJ9rSQBX
+nF5DqSt1qv9Dab2asqKfO4hbBBARAgAbBQJDwdP3AwUCeBCGPFtePl0rW0AuXVwq
+PiQAAAoJEIbmsk2SWE/hyeYAoNa4roCWwYLcOHy2/19HbGeL6yVpAJ91B6hnFIIQ
+ZsT7PuQaR20Yhyb4o7kCDQRZPfQYEAgA78Hv+8VBFTg8YXoV9S3mgUYsWbBAFSCU
+ECCzvEyQhQA7gcXkmtxmb86FibRXnIuXp7bC48/pCO89wI2IzU1MMCK6RwEYj8Vx
+zkhVlWLX0g4ZJON3hqIXIlcWOOXtTTmh8Ez/Xqq3ZAtNXJpvwv3rbbWWFaL9aAQU
++NAb+7eiCA0mLkZrKZckzltcBOk1o7O+GiPzIMPyfNBkR1ZHbdeski7WNpqtuIr2
+/UCsJmOBTRBoEtB8tQL56deEqpxNshsiThFElKioftrioDkgV1KZFNl1ri945W7u
+S5XjAOTbUiCClLi2sqwgc5WdjXfcMqwsv7+PWk4v1Afw8ZxSPW0UzwADBQgAsBfS
+PZAAEy8Hv071e+/7Xkyy6Rx9dhycjpqbYm/HDzZxfr6AJTPBkvf1wNetjWQVGfm5
+Wdm3/3Ic+kY+HL5W1ENw4uPqGE/uJrwENPCMmotOQTxoTxDQop9vbVPZhoXbXF3q
+nMImXSafV3YxErSNUPEIj1KEOyXXFxyhGlJqaarulG3HMMj7zSdtVFlb9Fa0c7XU
+Elj1lHa//101d93SqX2ceb/8BeoAbJ4SUoGYoE4OIGeUQqW3Jq0zGSuZkaqfuVa+
+dmvhCTO9dRHH3IKAYOwY5Vl2wQykmlyG1jiG0hDPWwjh6ZF/1r2vKihUBAos0zzl
+4ko6Mtq8tLKeFZY2XohPBBgRAgAPBQJZPfQYAhsMBQkD2iIAAAoJEDKNqGdFD4ns
+jywAniiE8X+NCil6SUn7cym5Q2U0t5lNAJ9rMqrE9IRJxlD/KaaCMbuFcapU6Ihb
+BBARAgAbBQJDwdPxAwUCeBCGPFtePl0rW0AuXVwqPiQAAAoJEIbmsk2SWE/h0twA
+n3UcQ3Xg2AyOmGBMnUOdgpNH28CRAJ9rSQBXnF5DqSt1qv9Dab2asqKfO4hbBBAR
+AgAbBQJDwdP3AwUCeBCGPFtePl0rW0AuXVwqPiQAAAoJEIbmsk2SWE/hyeYAoNa4
+roCWwYLcOHy2/19HbGeL6yVpAJ91B6hnFIIQZsT7PuQaR20Yhyb4o7kCDQRdGGda
+EAgAnSwj6B/NyUAE3tuE8utf7AO6T8JHn90PblX4Rz6UzTZJox+l6AmKzjifAkaP
+tA5LvDSZYr1XJT7LId9UCp/ZO++2ELQ0Vo0BeqZbtxd9jejnAAnpKxWtsbmsuweb
+sJXL6Iu0JtU1GO9XITUpWNzsQ0DxcRj1vKpFwLLOetsgduSDgk7KaLyrgmS8MGfn
+lZfLNzbAsDdS4hPdtZIPgcmW0HiRjQVkNDS6pZpaV1OW8CBMEhhMv76Gfwp4f7ks
+4C5Gf00sJsRft07KJGogGmKvWPbW5sj5sTXHAxUokmc5GPBX8k09ZsCxnOOQSHTh
+yCC3yjh8naHph3yy9V+MR8azTwADBQf9GobZKlrLVsFS8vmo9pt0DH6GxbfNQMM1
+Z0XUMSxEInL9HKSqn1vdrcEM+1u8OIV99S/oR3tIUnDcRIqU/cBszsUDKaG6072Y
+8HJlM65sQUl8UYCOE3zarg6UwARAg3zenLMX+mrbwaqM9tSDgI4Z+FUhDcnLnkXj
+LOMnDMshKt75+3JZrTV0Uz+e5tFef+FG2sdE3SY18ff4tiXAOSbwQMRqQ8N/l4y4
+BVcLnhJiy84kXYxxy3vL/hsmgAusC6kgk9ssyXL0dNIpMQK7RbGNeS6f2HCiKqdt
+CU6512rqKYeapU+LEtMuaDhacQrLqzPDAjl1ES9FN53+t7R1YonWYYhPBBgRAgAP
+BQJdGGdaAhsMBQkDw7iAAAoJEDKNqGdFD4nsGXYAn1wcgzHfYYzwDi4CcWDdZcsX
+Ul9JAJ9KHMVgyRQN6IhP+WFXu1Pb/2eH6g==
+=R2BU
+-----END PGP PUBLIC KEY BLOCK-----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Module-Signature-0.83/README new/Module-Signature-0.86/README
--- old/Module-Signature-0.83/README 2018-08-26 16:59:43.000000000 +0200
+++ new/Module-Signature-0.86/README 2020-06-25 14:17:05.000000000 +0200
@@ -45,6 +45,11 @@
Please also see "NOTES" about MANIFEST.SKIP issues, especially if you
are using Module::Build or writing your own MANIFEST.SKIP.
+ Signatures made with Module::Signature prior to version 0.82 used the
+ SHA1 algorithm by default. SHA1 is now considered broken, and therefore
+ module authors are strongly encouraged to regenerate their SIGNATURE
+ files. Users verifying old SHA1 signature files will receive a warning.
+
VARIABLES
No package variables are exported by default.
@@ -57,6 +62,11 @@
The filename for a distribution's signature file. Defaults to
"SIGNATURE".
+ $AUTHOR
+ The key ID used for signature. If empty/null/0, "gpg"'s configured
+ default ID, or the most recently added key within the secret keyring
+ for "Crypt::OpenPGP", will be used for the signature.
+
$KeyServer
The OpenPGP key server for fetching the author's public key
(currently only implemented on "gpg", not "Crypt::OpenPGP"). May be
@@ -76,15 +86,14 @@
$Cipher
The default cipher used by the "Digest" module to make signature
- files. Defaults to "SHA1", but may be changed to other ciphers via
- the "MODULE_SIGNATURE_CIPHER" environment variable if the SHA1
+ files. Defaults to "SHA256", but may be changed to other ciphers via
+ the "MODULE_SIGNATURE_CIPHER" environment variable if the SHA256
cipher is undesirable for the user.
The cipher specified in the SIGNATURE file's first entry will be
- used to validate its integrity. For "SHA1", the user needs to have
- any one of these four modules installed: Digest::SHA, Digest::SHA1,
- Digest::SHA::PurePerl, or (currently nonexistent)
- Digest::SHA1::PurePerl.
+ used to validate its integrity. For "SHA256", the user needs to have
+ any one of these modules installed: Digest::SHA, Digest::SHA256, or
+ Digest::SHA::PurePerl.
$Preamble
The explanatory text written to newly generated SIGNATURE files
@@ -93,6 +102,9 @@
ENVIRONMENT
Module::Signature honors these environment variables:
+ MODULE_SIGNATURE_AUTHOR
+ Works like $AUTHOR.
+
MODULE_SIGNATURE_CIPHER
Works like $Cipher.
@@ -242,7 +254,7 @@
Truskett's Test::Signature might be a better choice.
SEE ALSO
- Digest, Digest::SHA, Digest::SHA1, Digest::SHA::PurePerl
+ Digest, Digest::SHA, Digest::SHA::PurePerl
ExtUtils::Manifest, Crypt::OpenPGP, Test::Signature
@@ -253,7 +265,10 @@
AUTHORS
Audrey Tang <cpan(a)audreyt.org>
-CC0 1.0 Universal
+LICENSE
+ This work is under a CC0 1.0 Universal License, although a portion of
+ the documentation (as detailed above) is under the Perl license.
+
To the extent possible under law, 唐鳳 has waived all copyright and
related or neighboring rights to Module-Signature.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Module-Signature-0.83/SIGNATURE new/Module-Signature-0.86/SIGNATURE
--- old/Module-Signature-0.83/SIGNATURE 2018-08-29 10:33:51.000000000 +0200
+++ new/Module-Signature-0.86/SIGNATURE 2020-06-25 14:51:44.000000000 +0200
@@ -1,5 +1,5 @@
This file contains message digests of all files listed in MANIFEST,
-signed via the Module::Signature module, version 0.83.
+signed via the Module::Signature module, version 0.85.
To verify the content in this distribution, first make sure you have
Module::Signature installed, then type:
@@ -12,19 +12,19 @@
not run its Makefile.PL or Build.PL.
-----BEGIN PGP SIGNED MESSAGE-----
-Hash: SHA256
+Hash: RIPEMD160
-SHA256 9cec751fbdaa4ec3257dd2cabf19dfd23f989ffd682de3eafa9f6020b0099a79 ANDK2018.pub
+SHA256 0f80cd4bfc5ad95a0cfcdc43629c819991431e82f0a4a2dd4edf7d54f3b63d2a ANDK2020.pub
SHA256 1847f802a331b202eae02729e828d6b59ef4c6129020660ecd6865b67ec4dfb5 AUDREYT2018.pub
SHA256 7de2bf0898f4a1e79d92f9e8ae68e7578eeaaff74211cddc0dfdc7996887cdc1 AUTHORS
-SHA256 df74c562710f1d449c320a68869eadf74387156c23bbdf95bb19330f27e053fd Changes
-SHA256 c0767212c05209c84a1cbd804dc3fb9a05b8ee4ed9770d11bd029348dab032c9 MANIFEST
+SHA256 49689acf04d6d96e424a558ac22e3b491b01a65145ca5c067540e04ad52bf50c Changes
+SHA256 6828a8f4070955a3fc3c83fc324e82bd9b4fc89cac00d1dd53698bd3e297a001 MANIFEST
SHA256 093c47e35166ca8f4d6cb4a1d51b436809a4fca4bdb43221bd8fb67adac2e425 MANIFEST.SKIP
-SHA256 876a6dba8591f06f2ee63b40900d8ce694d09066ecab03d16f3178b5a41f2d3b META.yml
-SHA256 506100751f91446bce973090403c88aa81762a4880cc57797a10ecbcfb0e22ff Makefile.PL
+SHA256 0fac3c54cc361c8a0c543893f801bc4ce1314d86eaca1c0d4ffc9495f1adb24f META.yml
+SHA256 f3e3534a6177a9ebd0875b5c64a3c923a375b34aaec0fbe1e4d16c5a12ac7cd0 Makefile.PL
SHA256 c9b4cc9f924857b93a081066bdc7f120e537469c1b605e19c1f07296ac07cfdd NIKLASHOLM2018.pub
-SHA256 7c368bf650e83fc80cf9a851565d77a5cd71f243ef8c277a60adfa12253aaef3 PAUSE2019.pub
-SHA256 7cb2f8aba39724e74d4f4018cee110123dfcce3085b619ca5b163fb7ca3d7219 README
+SHA256 bd9fe086be0b4eacb39dd5e9db2f84b1c30d4f98fcd32864fa2b9e2cb57bb646 PAUSE2020.pub
+SHA256 c0eb4d44770ed875ac87800bbe7ebc2fa7462d8fc96e003a1dce087862598016 README
SHA256 8cd77b6a6f370ecdec102298273d50094c515a5f23c5b02b3a31beaa6e799468 inc/Module/Install.pm
SHA256 cfb98bad08ee4472484697b171e43e750ac29e4759389b4d09f4c3a3ac661a91 inc/Module/Install/Base.pm
SHA256 6d3cd1903eb6210b0cd001e5baaad2113fc536eede5de5f9c1419237036a27ec inc/Module/Install/Can.pm
@@ -35,25 +35,25 @@
SHA256 a10f0f4ebb579bae28ec5a372c5b7bcdc07df89aa24c04b502e0d0442230f200 inc/Module/Install/Scripts.pm
SHA256 9cf3940ab15fd196c7b147aea3ab3c18d9ec3fdb3eadb238dc50120185cf81e7 inc/Module/Install/Win32.pm
SHA256 c6cee30b2053ca28654b3216340169ca97ff2b2bcbb5a1ef7e3b7e3cf593419b inc/Module/Install/WriteAll.pm
-SHA256 042842848ffe66dcf8e332caaa0e54db32b6e352dde7df67d18027973491d0a2 lib/Module/Signature.pm
+SHA256 b3d60bfcf8690d0736c082e34c2ba86506c051395e65965e3ef44aca448b5e5a lib/Module/Signature.pm
SHA256 51aa9c445c6f54c26fc37d5ec2e42535461eb3a78911ca2516dd1c97e7aa7185 script/cpansign
SHA256 286fda83531d99b34e214b0058ba806a38bdb6317fc3c6ca2f7c5a9840f1c092 t/0-signature.t
SHA256 9be1e82eed0cb08514d2e3654b1396a23e5dd89ca8a5e67788ac6492697a5ce3 t/1-basic.t
SHA256 ae0a2706d9dbe8cb3d0c3b948af76c42a9e6138bc21a45a5c82e655a412daf8a t/2-cygwin.t
SHA256 abdaa7cf0869bf6a08c0c80da3176145243d6989b9522ecff8881a939cba5530 t/3-verify.t
SHA256 2b17f99fccb7172b580ecde8839860f5db05292ea25391d9ea60839b45d5ac9a t/wrap.pl
-SHA256 c40279bceca4cbcf2df60cc3b99c7107dac31f7b779277e563320bc5bb579d4d t/wrapped-tests.bin
+SHA256 1e55d31ce050bd8250d7f5e74afdbb050fdf34834e0925f6992400e6a35ee87a t/wrapped-tests.bin
-----BEGIN PGP SIGNATURE-----
-iQGzBAEBCAAdFiEE8/4umVyeYRTFU5r09ePPSwnTf6gFAluGWm8ACgkQ9ePPSwnT
-f6i4AAv8C48COhnY4SxI5LYAUDbdTrbPZ2HrJvl8sqfUCWnUgcO2+MwJro5vQ+7p
-vmJLM8uSOs0dE/g3oe25+SxeDgNCzomaqDC8wt/OI7t/IDehWUsWSjFelwzwce+u
-2w1HYsW8/maTl8c49R+VFw5qRzbrTvQxTB48bXNd6jLfoLdnMM/+7us83nDUHU1h
-PUO8pwcfYykIR0zTfAx33yoWIh7q8h5wuRdE3OFjKIG4SMAxb7Y+yzjcHlYOZuU5
-vpjptg95kYYhrTNN6z3taifPn15ZBbhxfkaYCoI6fVAekU8avTeLt88jbZP8npyt
-2YZTfePeIQw4y+w8LcBijQKIpvxOEGdBJy6mhulMhjGBOP4eay3/qruQ+GaV3/3j
-bu5tig944U/VbfBiGOL5W6KkNgdwZXD64P2AUVugwh+1fufd831eL6nmgoBP7b0h
-6IiFmu45WF36f+t2GZdeUUK1gTy6JuhBRjxSgUxO8vctC+ddFAJWGxcVen27ssNU
-zD/zafrl
-=0leJ
+iQGzBAEBAwAdFiEE8/4umVyeYRTFU5r09ePPSwnTf6gFAl70nd8ACgkQ9ePPSwnT
+f6j0+Av/UcGY7jX3w35K/GIhHE+gSIWAh09K5LgQyLQWW6y1ErYyLKv3Cl6PuxqB
+29HW6KOnJJXQWXNR2nT5o4uEX/y3TwwMusMmc5HIM0Fyv7pmcxLbmuJYr7xMPLMd
+ZKaJXY9rQ1XIOAYPgnaBV61IQ9veByrpiuZpAyqEZ/r4Hx/2cgOdd48c/eKWmRRo
+HlZ5XgzTfTznOPfSPvTl0P2WmzjM9Ot7ogvw/uR9y++HwPSW2cPURgqS92LGIRdQ
+8bj4r9XDyeaVcNXTbRVNz+1Omxd0l+edP7c4vEdMEt8TYMjw6MqgMSwCVh2crpvM
+wduJiXVuFnT3TyjjZ8GoIdvkON3T2wYlEbSNHdmsXp1/j3dAImY4r4WE/xvjGz3a
+O5m4+NyrrFuoj9d/te5/56IOYlGNFXZ06B2jhDLIw/VNSbzcHynAvwTIm/AfOqdd
+dTJeiaz7s1hiu7wPGbL32FAgOl8VRX9QXXk7r4+jXwHubC82UvclVRHqOg1NYRYL
+MJOkffZv
+=/13/
-----END PGP SIGNATURE-----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Module-Signature-0.83/lib/Module/Signature.pm new/Module-Signature-0.86/lib/Module/Signature.pm
--- old/Module-Signature-0.83/lib/Module/Signature.pm 2018-08-29 10:33:04.000000000 +0200
+++ new/Module-Signature-0.86/lib/Module/Signature.pm 2020-06-25 15:06:41.000000000 +0200
@@ -1,5 +1,5 @@
package Module::Signature;
-$Module::Signature::VERSION = '0.83';
+$Module::Signature::VERSION = '0.86';
use 5.005;
use strict;
@@ -435,7 +435,8 @@
local *D;
my $set_key = '';
$set_key = qq{--default-key "$AUTHOR"} if($AUTHOR);
- open D, "| $gpg $set_key --clearsign >> $sigfile.tmp" or die "Could not call $gpg: $!";
+ open D, "| $gpg $set_key --clearsign --openpgp --personal-digest-preferences RIPEMD160 >> $sigfile.tmp"
+ or die "Could not call $gpg: $!";
print D $plaintext;
close D;
@@ -745,6 +746,11 @@
Please also see L</NOTES> about F<MANIFEST.SKIP> issues, especially if
you are using B<Module::Build> or writing your own F<MANIFEST.SKIP>.
+Signatures made with Module::Signature prior to version 0.82 used the
+SHA1 algorithm by default. SHA1 is now considered broken, and therefore
+module authors are strongly encouraged to regenerate their F<SIGNATURE>
+files. Users verifying old SHA1 signature files will receive a warning.
+
=head1 VARIABLES
No package variables are exported by default.
@@ -792,15 +798,14 @@
=item $Cipher
The default cipher used by the C<Digest> module to make signature
-files. Defaults to C<SHA1>, but may be changed to other ciphers
-via the C<MODULE_SIGNATURE_CIPHER> environment variable if the SHA1
+files. Defaults to C<SHA256>, but may be changed to other ciphers
+via the C<MODULE_SIGNATURE_CIPHER> environment variable if the SHA256
cipher is undesirable for the user.
The cipher specified in the F<SIGNATURE> file's first entry will
-be used to validate its integrity. For C<SHA1>, the user needs
-to have any one of these four modules installed: B<Digest::SHA>,
-B<Digest::SHA1>, B<Digest::SHA::PurePerl>, or (currently nonexistent)
-B<Digest::SHA1::PurePerl>.
+be used to validate its integrity. For C<SHA256>, the user needs
+to have any one of these modules installed: B<Digest::SHA>,
+B<Digest::SHA256>, or B<Digest::SHA::PurePerl>.
=item $Preamble
@@ -996,7 +1001,7 @@
=head1 SEE ALSO
-L<Digest>, L<Digest::SHA>, L<Digest::SHA1>, L<Digest::SHA::PurePerl>
+L<Digest>, L<Digest::SHA>, L<Digest::SHA::PurePerl>
L<ExtUtils::Manifest>, L<Crypt::OpenPGP>, L<Test::Signature>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Module-Signature-0.83/t/wrapped-tests.bin new/Module-Signature-0.86/t/wrapped-tests.bin
--- old/Module-Signature-0.83/t/wrapped-tests.bin 2018-08-26 16:59:43.000000000 +0200
+++ new/Module-Signature-0.86/t/wrapped-tests.bin 2020-06-25 14:13:37.000000000 +0200
@@ -18,9 +18,9 @@
"t/test-datmix-signew/42.gz" => "\37\213\b\b\336\0343:\2\00342\00031\342\2\0001)\206\321\3\0\0\0",
"t/test-datmix-signew/MANIFEST" => "MANIFEST\r\nREADME\nSIGNATURE\n42.gz\r\n",
"t/test-datmix-signew/README" => "If this file in in a *datlf*/ directory it should be in Unix format.\nIn a *datcrlf*/ directory it should be in DOS format.\r\n",
- "t/test-datmix-signew/SIGNATURE" => "This file contains message digests of all files listed in MANIFEST,\nsigned via the Module::Signature module, version 0.82.\n\nTo verify the content in this distribution, first make sure you have\nModule::Signature installed, then type:\n\n % cpansign -v\n\nIt will check each file's integrity, as well as the signature's\nvalidity. If \"==> Signature verified OK! <==\" is not displayed,\nthe distribution may already have been compromised, and you should\nnot run its Makefile.PL or Build.PL.\n\n-----BEGIN PGP SIGNED MESSAGE-----\nHash: SHA256\n\nSHA1 51e1c061bc02e9a38948a5d8e3ca7352830f0fac 42.gz\nSHA1 794d166f65491a45e3a2302d9f7afc2c2220517f MANIFEST\nSHA1 e6687057436325f3cf38d3f5c9adb8f45f79b9b4 README\n-----BEGIN PGP SIGNATURE-----\n\niQIzBAEBCAAdFiEEMmeFaE5q31rFI7Zzx3wChANpBiQFAluCqCgACgkQx3wChANp\nBiQpmA/9GtHXIaSGTO62AYu/xc91CjRXSjKNVwiNmGMyEP8cjFC3sQUHYD2qx5Sh\nZxw4Met5xmKi1r2gV7gE2/+l6alMOkf6LHRPg7jRtLnx7SjdBJZwAayRnTgsBQKT\nv34s35Ew4ZdSL95LZZmffEff6CvQmTBygZZY1CQS9AHk08SgEudiuAOQ3Nt8rNzB\nxsdtCuOnY3NiG7LfQn0PY8c5ghlHb0aSghBbdmTetAZSJoU5uxj0RYHNq1lABkqJ\nXRHucvuvddmQ39hZoA5uM0qa4nMqowWctZV3yn/jIoxYew9ulkw24wnfNAJcHdkx\nG+ejCGKvY7+OJUH/vsdqnSad/028oW+4UvgiTU3P6Mvc1q+4xFeh3TmbuCkPr9Ig\nPCoq3ZVG7Y/OmB/qxJ7HbpKaF7La8O+1eLdH25UcOGTjaLNJvJQMiJ2cll/SaHqV\nLwzt5kbxzbyITpjyXF6idM3+zG/XLNX60F/OISsdQNpCd0YZUvXNJ3GBk62qv8CD\nE0PMK99PwWEzjVrxfCd9xCDySMqyoB/SW3Vaf1tKDITcqyGb/kgXw6MZbhijPZOd\ni/e+Zdm2YJb34FmU5pwsvKI+impqe+6GHQVLfCnkc22/vhMiiV+F9YT3Fk/1jaxb\nBsI1/bWUrDgggAnBxvvbs4+utOTjQCvz66YPNcykAoYDnNZtceA=\n=cvzd\n-----END PGP SIGNATURE-----\n",
+ "t/test-datmix-signew/SIGNATURE" => "This file contains message digests of all files listed in MANIFEST,\nsigned via the Module::Signature module, version 0.84.\n\nTo verify the content in this distribution, first make sure you have\nModule::Signature installed, then type:\n\n % cpansign -v\n\nIt will check each file's integrity, as well as the signature's\nvalidity. If \"==> Signature verified OK! <==\" is not displayed,\nthe distribution may already have been compromised, and you should\nnot run its Makefile.PL or Build.PL.\n\n-----BEGIN PGP SIGNED MESSAGE-----\nHash: RIPEMD160\n\nSHA256 787e758a975d04560f6a9d4671646a48c4e9da4f40d4e102bc4562cd15c71ab5 42.gz\nSHA256 d8663a9b3fa46b2c4eab89c0a57e6b03089153bc9d5bfc5166642ea272d4da18 MANIFEST\nSHA256 7c2d6914637135b77ffd90242627efa905c2843e5fdcabe15612a2dd8d616521 README\n-----BEGIN PGP SIGNATURE-----\n\niQIzBAEBAwAdFiEEMmeFaE5q31rFI7Zzx3wChANpBiQFAluG0OYACgkQx3wChANp\nBiSjBhAAodCH9AE81Xii9wy/Wid2vu9LwKAT2KVMR/6dZbVx5MIBQz5KrgjmOvtm\niaPm1nGYYQr0Cf/8D/vwfOlyW6CRDQ9J9NVY2wkKSm98H1vsw6QUFrBOUoEGqwhc\n6eurldfeA8KZIrGV3WTsrPa7uKiYeDUJfVjuLaMMyW4rqSqYB+Zv8PzA7Q/7V8pJ\njWXhVRiuc7Qlx1DXDQyxJdK5jtCtsZ7c37UyuFnTRWRpNylFY0eUbw+z4BEFGI/s\n3jJRDCWpBv17/rYMAXnXt5/F1VKP1tAVR43pHa59wEqCw4q2Q3pY4PG29I1FWHah\nvXaVVg5YTqd2TlAGgQYnYYeQ3B6d8W92ENnECNjUlQU0Gy6nlzxNkUSLhpKskNra\na6MbnyXk48bcYsnP9p2uSniWQFt0sVqFSgzfkr4c+gpR+jx6OqQoJqQCbucnwh1p\nVZsccMNs+pA3d2qwy0SrHO8VweWshZYp7HJgGSjKImCW4uWFXW6vYmVE58vYFHMb\nNytIJP/beklV53QmFcuVNJUrhh4L2G/KVVql1dgVEFPVtIDuMfiZgej8IQNLyv3T\ns4m8oaE4Rx5gsl+9tQFiInh45jT96gFUEmgN+u3Am8CgmZVUf1tq3gg7EyTiBUAO\nqjIe2fQ4p+bbjIQu1rNkReemL1AZEszBghUgjRmb9FASeQUSiC0=\n=p35e\n-----END PGP SIGNATURE-----\n",
"t/test-datmix-sigold/42.gz" => "\37\213\b\b\336\0343:\2\00342\00031\342\2\0001)\206\321\3\0\0\0",
"t/test-datmix-sigold/MANIFEST" => "MANIFEST\r\nREADME\nSIGNATURE\n42.gz\r\n",
"t/test-datmix-sigold/README" => "If this file in in a *datlf*/ directory it should be in Unix format.\nIn a *datcrlf*/ directory it should be in DOS format.\r\n",
- "t/test-datmix-sigold/SIGNATURE" => "This file contains message digests of all files listed in MANIFEST,\nsigned via the Module::Signature module, version 0.81.\n\nTo verify the content in this distribution, first make sure you have\nModule::Signature installed, then type:\n\n % cpansign -v\n\nIt will check each file's integrity, as well as the signature's\nvalidity. If \"==> Signature verified OK! <==\" is not displayed,\nthe distribution may already have been compromised, and you should\nnot run its Makefile.PL or Build.PL.\n\n-----BEGIN PGP SIGNED MESSAGE-----\nHash: SHA256\n\nSHA1 51e1c061bc02e9a38948a5d8e3ca7352830f0fac 42.gz\nSHA1 42df4f7b8e7b2969aa2acadb656566c6cafe2d0c MANIFEST\nSHA1 01df1a2d305b103ac9b81beac8332520877af6c8 README\n-----BEGIN PGP SIGNATURE-----\n\niQIzBAEBCAAdFiEEMmeFaE5q31rFI7Zzx3wChANpBiQFAluCpB8ACgkQx3wChANp\nBiR8gxAAiTi9jjQvWHyt986YzPnVGmeKBsUlrH+mc4juSQyXpfqi+mhSlN+MX1rt\nGuI2YQxD5mXxEICc/Zh1dnquuYDYadAtPX9xtuln8Kf7RcJC3rP55f6feIZL+5sY\nfQ2+LF0T2ulIY/GSBWfXrHCv4bI5GCVg5HFZooykfpMXLcRzMp3JdA4ZcChXqw7v\nR/mPolR0PDdYG3Y1Sc5tH+vrdLZSTXvy6i8Cb+boTXtdtWCnR4LnMPaAN2p8vdt6\nUzHXr1iUZCDGcWYlWOT9WUrdDx9OMrwAIM7YQqhrLYKRJFnmSGOtAPKnLa37VpuE\ntR3qlzD6ydyO/6fFleyTVWIA5GM4BpXExYJN1iFJyqAUip2fGc4+Da4HKDauQhhm\neJj5pE2ItQUkTjIIVndLXgoOVWG2oJ9yS9Wx8rYbqvNDa1l8p5v5MYlHwcgM2+j3\n837G/r0cJeOalCoG1PWHZjQj61mXB/7eeqKm61ce3t2NzhkKqsYMWj28D5mEoTa9\n0Mn6sJil/oPoW3fQldYLCb5J56E70eQKSgSw1NqzmRJhmoufUE1WhAQ3eJT0Tqk7\nbtQYwHU6MrAAonJ/1aA94Dy9yPvp8c17kjE/ikSZHM6fKnmQInVNFIe+CExNuylT\n5kC2/BIYcyQQNbfgbnzOfQi9h2rfz+TbJUJpOYVFK7NpX2XJIjU=\n=SAkB\n-----END PGP SIGNATURE-----\n"
+ "t/test-datmix-sigold/SIGNATURE" => "This file contains message digests of all files listed in MANIFEST,\nsigned via the Module::Signature module, version 0.81.\n\nTo verify the content in this distribution, first make sure you have\nModule::Signature installed, then type:\n\n % cpansign -v\n\nIt will check each file's integrity, as well as the signature's\nvalidity. If \"==> Signature verified OK! <==\" is not displayed,\nthe distribution may already have been compromised, and you should\nnot run its Makefile.PL or Build.PL.\n\n-----BEGIN PGP SIGNED MESSAGE-----\nHash: SHA1\n\nSHA1 51e1c061bc02e9a38948a5d8e3ca7352830f0fac 42.gz\nSHA1 42df4f7b8e7b2969aa2acadb656566c6cafe2d0c MANIFEST\nSHA1 01df1a2d305b103ac9b81beac8332520877af6c8 README\n-----BEGIN PGP SIGNATURE-----\n\niQIzBAEBAgAdFiEEMmeFaE5q31rFI7Zzx3wChANpBiQFAluG0KUACgkQx3wChANp\nBiSq1g//UmDkPeJYgq/V+VXLX7GBKGsOPbRhQkPPeb5utI10AHYzq4q0V/UGeKQN\nf4eXzjp9P7wfu9mrAfMKfvF8rmDSA45SKVWegeGIqREgKtrJTm5QsO6b87DjHwoI\nrBDLrtsZ6J42FSP2V4juUqZfMmtQ+dzCCeUxKm/t4M0tTdzj0DBee3z1kox3eEHZ\nX6m14gQCiB4GWgXuvkI0zKbTRnuxSy7i0iZBCEVeetTGCpT49woyHLggUuOvRyzy\nO+O0KyvfYCmm0CtPlo3KIE1wt0SokDUNGR6qvAwPN+2BnC/59g3xp3s9qn2OatDa\n1gQeFuulAa5UBvBBy6TKMIMUc8KCWI52K9xv0oKF7oRl3Pk39b1IXbfdXUPIY2M5\nhwBLNBubHGaPNF6Pdxr6iHsrtJy3WwasQUUOSw9T3aHJHgNphHrwkldzwvVPMeoR\nPOc1V9TLhqDd/K5MrThmc9rmR2tFSZZM0sQT1lFe0cq1fDL0z1ZdjFGLaqKUgeM9\nmeDqrKGdFlFbNqdfnR+uTgPK/8sqmsbLRX+mAO8TKAH8dgJ8gaOwR1mqexvx+HFW\npUREMfiCyFvYu+TnBwSa3aWd/LNIAKqIjVs8Ho6Ol0pP23+bct6lYuGiy3JFe+TQ\nuiOUpJZ2+w1NaTjNVDT8LMm3E4Fae3KynfyP4C1vvjg251JCCeI=\n=9Lmf\n-----END PGP SIGNATURE-----\n"
};
1
0
Hello community,
here is the log from the commit of package desktop-translations for openSUSE:Factory checked in at 2020-06-30 21:58:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/desktop-translations (Old)
and /work/SRC/openSUSE:Factory/.desktop-translations.new.3060 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "desktop-translations"
Tue Jun 30 21:58:12 2020 rev:117 rq:817805 version:84.87.20200630.124e7a8c
Changes:
--------
--- /work/SRC/openSUSE:Factory/desktop-translations/desktop-translations.changes 2020-06-10 00:50:52.335330505 +0200
+++ /work/SRC/openSUSE:Factory/.desktop-translations.new.3060/desktop-translations.changes 2020-06-30 21:59:06.859250809 +0200
@@ -1,0 +2,24 @@
+Tue Jun 30 03:33:23 UTC 2020 - opensuse-packaging(a)opensuse.org
+
+- Update to version 84.87.20200630.124e7a8c:
+ * Drop obsolete mimelnk files (boo#1062631).
+ * Translated using Weblate (Swedish)
+ * Translated using Weblate (Swedish)
+ * Translated using Weblate (Spanish)
+ * Translated using Weblate (Spanish)
+ * Translated using Weblate (Spanish)
+ * Translated using Weblate (Russian)
+ * Translated using Weblate (Indonesian)
+ * Translated using Weblate (Indonesian)
+ * Translated using Weblate (German)
+ * Translated using Weblate (German)
+ * Translated using Weblate (German)
+ * Translated using Weblate (Finnish)
+ * Translated using Weblate (Finnish)
+ * Translated using Weblate (Finnish)
+ * Translated using Weblate (Finnish)
+ * Translated using Weblate (Catalan)
+ * Translated using Weblate (Swedish)
+ * Translated using Weblate (Spanish)
+
+-------------------------------------------------------------------
Old:
----
desktop-file-translations-84.87.20200514.83985bf7.tar.xz
New:
----
desktop-file-translations-84.87.20200630.124e7a8c.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ desktop-translations.spec ++++++
--- /var/tmp/diff_new_pack.0BwF0j/_old 2020-06-30 21:59:07.739253533 +0200
+++ /var/tmp/diff_new_pack.0BwF0j/_new 2020-06-30 21:59:07.743253545 +0200
@@ -17,7 +17,7 @@
Name: desktop-translations
-Version: 84.87.20200514.83985bf7
+Version: 84.87.20200630.124e7a8c
Release: 0
Summary: Desktop Files Translations
License: MIT
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.0BwF0j/_old 2020-06-30 21:59:07.783253669 +0200
+++ /var/tmp/diff_new_pack.0BwF0j/_new 2020-06-30 21:59:07.783253669 +0200
@@ -1,4 +1,4 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://github.com/openSUSE/desktop-file-translations.git</param>
- <param name="changesrevision">83985bf71432d267070c5d77b0f74ef9f80cb9bb</param></service></servicedata>
\ No newline at end of file
+ <param name="changesrevision">124e7a8c450ebc747bf192cb719361fdb6a21e1e</param></service></servicedata>
\ No newline at end of file
++++++ desktop-file-translations-84.87.20200514.83985bf7.tar.xz -> desktop-file-translations-84.87.20200630.124e7a8c.tar.xz ++++++
/work/SRC/openSUSE:Factory/desktop-translations/desktop-file-translations-84.87.20200514.83985bf7.tar.xz /work/SRC/openSUSE:Factory/.desktop-translations.new.3060/desktop-file-translations-84.87.20200630.124e7a8c.tar.xz differ: char 26, line 1
1
0
Hello community,
here is the log from the commit of package python-tenacity for openSUSE:Factory checked in at 2020-06-30 21:58:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-tenacity (Old)
and /work/SRC/openSUSE:Factory/.python-tenacity.new.3060 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-tenacity"
Tue Jun 30 21:58:06 2020 rev:13 rq:817787 version:6.2.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-tenacity/python-tenacity.changes 2020-04-21 13:07:14.844403040 +0200
+++ /work/SRC/openSUSE:Factory/.python-tenacity.new.3060/python-tenacity.changes 2020-06-30 21:59:03.443240236 +0200
@@ -1,0 +2,10 @@
+Tue Jun 30 00:36:12 UTC 2020 - Steve Kowalik <steven.kowalik(a)suse.com>
+
+- Update to 6.2.0:
+ * before_sleep_log: Add an exc_info option to include exception tracebacks
+ * docs: fix duplicate function names (#226)
+ * AsyncRetrying can use an async iterator (#222)
+ * Add minimal type definitions for @retry decorator (#221)
+- Add typguard to BuildRequires
+
+-------------------------------------------------------------------
Old:
----
tenacity-6.1.0.tar.gz
New:
----
tenacity-6.2.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-tenacity.spec ++++++
--- /var/tmp/diff_new_pack.pgEl2g/_old 2020-06-30 21:59:04.583243764 +0200
+++ /var/tmp/diff_new_pack.pgEl2g/_new 2020-06-30 21:59:04.583243764 +0200
@@ -19,7 +19,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%bcond_without python2
Name: python-tenacity
-Version: 6.1.0
+Version: 6.2.0
Release: 0
Summary: Python module for retrying code until it succeeeds
License: Apache-2.0
@@ -31,6 +31,7 @@
BuildRequires: %{python_module setuptools}
BuildRequires: %{python_module six >= 1.9.0}
BuildRequires: %{python_module tornado}
+BuildRequires: %{python_module typeguard}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
Requires: python-six >= 1.9.0
++++++ tenacity-6.1.0.tar.gz -> tenacity-6.2.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tenacity-6.1.0/.mergify.yml new/tenacity-6.2.0/.mergify.yml
--- old/tenacity-6.1.0/.mergify.yml 2020-02-26 11:39:39.000000000 +0100
+++ new/tenacity-6.2.0/.mergify.yml 2020-04-30 12:01:22.000000000 +0200
@@ -12,7 +12,21 @@
actions:
merge:
strict: "smart"
- method: merge
+ method: squash
+ - name: automatic merge for jd
+ conditions:
+ - author=jd
+ - "status-success=ci/circleci: pep8"
+ - "status-success=ci/circleci: py27"
+ - "status-success=ci/circleci: py35"
+ - "status-success=ci/circleci: py36"
+ - "status-success=ci/circleci: py37"
+ - "status-success=ci/circleci: py38"
+ - label!=work-in-progress
+ actions:
+ merge:
+ strict: "smart"
+ method: squash
- name: dismiss reviews
conditions: []
actions:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tenacity-6.1.0/PKG-INFO new/tenacity-6.2.0/PKG-INFO
--- old/tenacity-6.1.0/PKG-INFO 2020-02-26 11:39:48.327270300 +0100
+++ new/tenacity-6.2.0/PKG-INFO 2020-04-30 12:01:33.701704300 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: tenacity
-Version: 6.1.0
+Version: 6.2.0
Summary: Retry code until it succeeds
Home-page: https://github.com/jd/tenacity
Author: Julien Danjou
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tenacity-6.1.0/README.rst new/tenacity-6.2.0/README.rst
--- old/tenacity-6.1.0/README.rst 2020-02-26 11:39:39.000000000 +0100
+++ new/tenacity-6.2.0/README.rst 2020-04-30 12:01:22.000000000 +0200
@@ -484,7 +484,7 @@
varying parameter sets and none of those provided full state. The old way is
deprecated, but kept for backward compatibility.
- .. function:: my_stop(previous_attempt_number, delay_since_first_attempt)
+ .. function:: my_deprecated_stop(previous_attempt_number, delay_since_first_attempt)
*deprecated*
@@ -495,7 +495,7 @@
:type delay_since_first_attempt: float
:rtype: bool
- .. function:: my_wait(previous_attempt_number, delay_since_first_attempt [, last_result])
+ .. function:: my_deprecated_wait(previous_attempt_number, delay_since_first_attempt [, last_result])
*deprecated*
@@ -509,7 +509,7 @@
:return: number of seconds to wait before next retry
:rtype: float
- .. function:: my_retry(attempt)
+ .. function:: my_deprecated_retry(attempt)
*deprecated*
@@ -517,14 +517,14 @@
:return: whether or not retrying should continue
:rtype: bool
- .. function:: my_before(func, trial_number)
+ .. function:: my_deprecated_before(func, trial_number)
*deprecated*
:param callable func: function whose outcome is to be retried
:param int trial_number: the number of current attempt
- .. function:: my_after(func, trial_number, trial_time_taken)
+ .. function:: my_deprecated_after(func, trial_number, trial_time_taken)
*deprecated*
@@ -533,7 +533,7 @@
:param float trial_time_taken: interval in seconds between the beginning
of first attempt and current time
- .. function:: my_before_sleep(func, sleep, last_result)
+ .. function:: my_deprecated_before_sleep(func, sleep, last_result)
*deprecated*
@@ -620,6 +620,20 @@
You can configure every details of retry policy by configuring the Retrying
object.
+With async code you can use AsyncRetrying.
+
+.. testcode::
+
+ from tenacity import AsyncRetrying, RetryError, stop_after_attempt
+
+ async def function():
+ try:
+ async for attempt in AsyncRetrying(stop=stop_after_attempt(3)):
+ with attempt:
+ raise Exception('My code is failing!')
+ except RetryError:
+ pass
+
Async and retry
~~~~~~~~~~~~~~~
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tenacity-6.1.0/doc/source/index.rst new/tenacity-6.2.0/doc/source/index.rst
--- old/tenacity-6.1.0/doc/source/index.rst 2020-02-26 11:39:39.000000000 +0100
+++ new/tenacity-6.2.0/doc/source/index.rst 2020-04-30 12:01:22.000000000 +0200
@@ -484,7 +484,7 @@
varying parameter sets and none of those provided full state. The old way is
deprecated, but kept for backward compatibility.
- .. function:: my_stop(previous_attempt_number, delay_since_first_attempt)
+ .. function:: my_deprecated_stop(previous_attempt_number, delay_since_first_attempt)
*deprecated*
@@ -495,7 +495,7 @@
:type delay_since_first_attempt: float
:rtype: bool
- .. function:: my_wait(previous_attempt_number, delay_since_first_attempt [, last_result])
+ .. function:: my_deprecated_wait(previous_attempt_number, delay_since_first_attempt [, last_result])
*deprecated*
@@ -509,7 +509,7 @@
:return: number of seconds to wait before next retry
:rtype: float
- .. function:: my_retry(attempt)
+ .. function:: my_deprecated_retry(attempt)
*deprecated*
@@ -517,14 +517,14 @@
:return: whether or not retrying should continue
:rtype: bool
- .. function:: my_before(func, trial_number)
+ .. function:: my_deprecated_before(func, trial_number)
*deprecated*
:param callable func: function whose outcome is to be retried
:param int trial_number: the number of current attempt
- .. function:: my_after(func, trial_number, trial_time_taken)
+ .. function:: my_deprecated_after(func, trial_number, trial_time_taken)
*deprecated*
@@ -533,7 +533,7 @@
:param float trial_time_taken: interval in seconds between the beginning
of first attempt and current time
- .. function:: my_before_sleep(func, sleep, last_result)
+ .. function:: my_deprecated_before_sleep(func, sleep, last_result)
*deprecated*
@@ -620,6 +620,20 @@
You can configure every details of retry policy by configuring the Retrying
object.
+With async code you can use AsyncRetrying.
+
+.. testcode::
+
+ from tenacity import AsyncRetrying, RetryError, stop_after_attempt
+
+ async def function():
+ try:
+ async for attempt in AsyncRetrying(stop=stop_after_attempt(3)):
+ with attempt:
+ raise Exception('My code is failing!')
+ except RetryError:
+ pass
+
Async and retry
~~~~~~~~~~~~~~~
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tenacity-6.1.0/releasenotes/notes/before_sleep_log-improvements-d8149274dfb37d7c.yaml new/tenacity-6.2.0/releasenotes/notes/before_sleep_log-improvements-d8149274dfb37d7c.yaml
--- old/tenacity-6.1.0/releasenotes/notes/before_sleep_log-improvements-d8149274dfb37d7c.yaml 1970-01-01 01:00:00.000000000 +0100
+++ new/tenacity-6.2.0/releasenotes/notes/before_sleep_log-improvements-d8149274dfb37d7c.yaml 2020-04-30 12:01:22.000000000 +0200
@@ -0,0 +1,3 @@
+---
+features:
+ - Add an ``exc_info`` option to the ``before_sleep_log()`` strategy.
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tenacity-6.1.0/setup.cfg new/tenacity-6.2.0/setup.cfg
--- old/tenacity-6.1.0/setup.cfg 2020-02-26 11:39:48.327270300 +0100
+++ new/tenacity-6.2.0/setup.cfg 2020-04-30 12:01:33.701704300 +0200
@@ -25,8 +25,12 @@
six>=1.9.0
futures>=3.0;python_version=='2.7'
monotonic>=0.6;python_version=='2.7'
+ typing>=3.7.4.1;python_version=='2.7'
packages = tenacity
+[options.package_data]
+tenacity = py.typed
+
[options.extras_require]
doc =
reno
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tenacity-6.1.0/tenacity/__init__.py new/tenacity-6.2.0/tenacity/__init__.py
--- old/tenacity-6.1.0/tenacity/__init__.py 2020-02-26 11:39:39.000000000 +0100
+++ new/tenacity-6.2.0/tenacity/__init__.py 2020-04-30 12:01:22.000000000 +0200
@@ -29,6 +29,7 @@
import sys
import threading
+import typing as t
from concurrent import futures
import six
@@ -85,7 +86,24 @@
from .before_sleep import before_sleep_nothing # noqa
-def retry(*dargs, **dkw):
+WrappedFn = t.TypeVar("WrappedFn", bound=t.Callable)
+
+
+(a)t.overload
+def retry(fn):
+ # type: (WrappedFn) -> WrappedFn
+ """Type signature for @retry as a raw decorator."""
+ pass
+
+
+(a)t.overload
+def retry(*dargs, **dkw): # noqa
+ # type: (...) -> t.Callable[[WrappedFn], WrappedFn]
+ """Type signature for the @retry() decorator constructor."""
+ pass
+
+
+def retry(*dargs, **dkw): # noqa
"""Wrap a function with a new `Retrying` object.
:param dargs: positional arguments passed to Retrying object
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tenacity-6.1.0/tenacity/_asyncio.py new/tenacity-6.2.0/tenacity/_asyncio.py
--- old/tenacity-6.1.0/tenacity/_asyncio.py 2020-02-26 11:39:39.000000000 +0100
+++ new/tenacity-6.2.0/tenacity/_asyncio.py 2020-04-30 12:01:22.000000000 +0200
@@ -19,6 +19,7 @@
import sys
from asyncio import sleep
+from tenacity import AttemptManager
from tenacity import BaseRetrying
from tenacity import DoAttempt
from tenacity import DoSleep
@@ -52,3 +53,21 @@
await self.sleep(do)
else:
return do
+
+ def __aiter__(self):
+ self.begin(None)
+ self._retry_state = RetryCallState(self, fn=None, args=(), kwargs={})
+ return self
+
+ async def __anext__(self):
+ while True:
+ do = self.iter(retry_state=self._retry_state)
+ if do is None:
+ raise StopAsyncIteration
+ elif isinstance(do, DoAttempt):
+ return AttemptManager(retry_state=self._retry_state)
+ elif isinstance(do, DoSleep):
+ self._retry_state.prepare_for_next_attempt()
+ await self.sleep(do)
+ else:
+ return do
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tenacity-6.1.0/tenacity/before_sleep.py new/tenacity-6.2.0/tenacity/before_sleep.py
--- old/tenacity-6.1.0/tenacity/before_sleep.py 2020-02-26 11:39:39.000000000 +0100
+++ new/tenacity-6.2.0/tenacity/before_sleep.py 2020-04-30 12:01:22.000000000 +0200
@@ -15,23 +15,32 @@
# limitations under the License.
from tenacity import _utils
+from tenacity.compat import get_exc_info_from_future
def before_sleep_nothing(retry_state):
"""Before call strategy that does nothing."""
-def before_sleep_log(logger, log_level):
+def before_sleep_log(logger, log_level, exc_info=False):
"""Before call strategy that logs to some logger the attempt."""
def log_it(retry_state):
if retry_state.outcome.failed:
- verb, value = 'raised', retry_state.outcome.exception()
+ ex = retry_state.outcome.exception()
+ verb, value = 'raised', '%s: %s' % (type(ex).__name__, ex)
+
+ if exc_info:
+ local_exc_info = get_exc_info_from_future(retry_state.outcome)
+ else:
+ local_exc_info = False
else:
verb, value = 'returned', retry_state.outcome.result()
+ local_exc_info = False # exc_info does not apply when no exception
logger.log(log_level,
"Retrying %s in %s seconds as it %s %s.",
_utils.get_callback_name(retry_state.fn),
getattr(retry_state.next_action, 'sleep'),
- verb, value)
+ verb, value,
+ exc_info=local_exc_info)
return log_it
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tenacity-6.1.0/tenacity/compat.py new/tenacity-6.2.0/tenacity/compat.py
--- old/tenacity-6.1.0/tenacity/compat.py 2020-02-26 11:39:39.000000000 +0100
+++ new/tenacity-6.2.0/tenacity/compat.py 2020-04-30 12:01:22.000000000 +0200
@@ -299,3 +299,24 @@
'retry_error_callback', fn, stacklevel=4)
return fn(retry_state.outcome)
return wrapped_retry_error_callback
+
+
+def get_exc_info_from_future(future):
+ """
+ Get an exc_info value from a Future.
+
+ Given a a Future instance, retrieve an exc_info value suitable for passing
+ in as the exc_info parameter to logging.Logger.log() and related methods.
+
+ On Python 2, this will be a (type, value, traceback) triple.
+ On Python 3, this will be an exception instance (with embedded traceback).
+
+ If there was no exception, None is returned on both versions of Python.
+ """
+ if six.PY3:
+ return future.exception()
+ else:
+ ex, tb = future.exception_info()
+ if ex is None:
+ return None
+ return type(ex), ex, tb
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tenacity-6.1.0/tenacity/tests/test_asyncio.py new/tenacity-6.2.0/tenacity/tests/test_asyncio.py
--- old/tenacity-6.1.0/tenacity/tests/test_asyncio.py 2020-02-26 11:39:39.000000000 +0100
+++ new/tenacity-6.2.0/tenacity/tests/test_asyncio.py 2020-04-30 12:01:22.000000000 +0200
@@ -21,7 +21,8 @@
from tenacity import RetryError
from tenacity import _asyncio as tasyncio
from tenacity import retry, stop_after_attempt
-from tenacity.tests.test_tenacity import NoIOErrorAfterCount
+from tenacity.tests.test_tenacity import NoIOErrorAfterCount, current_time_ms
+from tenacity.wait import wait_fixed
def asynctest(callable_):
@@ -91,5 +92,51 @@
assert list(attempt_nos2) == [1, 2, 3]
-if __name__ == '__main__':
+class TestContextManager(unittest.TestCase):
+ @asynctest
+ async def test_do_max_attempts(self):
+ attempts = 0
+ retrying = tasyncio.AsyncRetrying(stop=stop_after_attempt(3))
+ try:
+ async for attempt in retrying:
+ with attempt:
+ attempts += 1
+ raise Exception
+ except RetryError:
+ pass
+
+ assert attempts == 3
+
+ @asynctest
+ async def test_reraise(self):
+ class CustomError(Exception):
+ pass
+
+ try:
+ async for attempt in tasyncio.AsyncRetrying(
+ stop=stop_after_attempt(1), reraise=True
+ ):
+ with attempt:
+ raise CustomError()
+ except CustomError:
+ pass
+ else:
+ raise Exception
+
+ @asynctest
+ async def test_sleeps(self):
+ start = current_time_ms()
+ try:
+ async for attempt in tasyncio.AsyncRetrying(
+ stop=stop_after_attempt(1), wait=wait_fixed(1)
+ ):
+ with attempt:
+ raise Exception()
+ except RetryError:
+ pass
+ t = current_time_ms() - start
+ self.assertLess(t, 1.1)
+
+
+if __name__ == "__main__":
unittest.main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tenacity-6.1.0/tenacity/tests/test_tenacity.py new/tenacity-6.2.0/tenacity/tests/test_tenacity.py
--- old/tenacity-6.1.0/tenacity/tests/test_tenacity.py 2020-02-26 11:39:39.000000000 +0100
+++ new/tenacity-6.2.0/tenacity/tests/test_tenacity.py 2020-04-30 12:01:22.000000000 +0200
@@ -14,7 +14,11 @@
# See the License for the specific language governing permissions and
# limitations under the License.
import logging
+import os
+import re
+import sys
import time
+import typing
import unittest
import warnings
from contextlib import contextmanager
@@ -1155,12 +1159,42 @@
finally:
logger.removeHandler(handler)
- etalon_re = r'Retrying .* in 0\.01 seconds as it raised .*\.'
+ etalon_re = (r"^Retrying .* in 0\.01 seconds as it raised "
+ r"(IO|OS)Error: Hi there, I'm an IOError\.$")
self.assertEqual(len(handler.records), 2)
- self.assertRegexpMatches(handler.records[0].getMessage(), etalon_re)
- self.assertRegexpMatches(handler.records[1].getMessage(), etalon_re)
+ fmt = logging.Formatter().format
+ self.assertRegexpMatches(fmt(handler.records[0]), etalon_re)
+ self.assertRegexpMatches(fmt(handler.records[1]), etalon_re)
- def test_before_sleep_log_returns(self):
+ def test_before_sleep_log_raises_with_exc_info(self):
+ thing = NoIOErrorAfterCount(2)
+ logger = logging.getLogger(self.id())
+ logger.propagate = False
+ logger.setLevel(logging.INFO)
+ handler = CapturingHandler()
+ logger.addHandler(handler)
+ try:
+ _before_sleep = tenacity.before_sleep_log(logger,
+ logging.INFO,
+ exc_info=True)
+ retrying = Retrying(wait=tenacity.wait_fixed(0.01),
+ stop=tenacity.stop_after_attempt(3),
+ before_sleep=_before_sleep)
+ retrying.call(thing.go)
+ finally:
+ logger.removeHandler(handler)
+
+ etalon_re = re.compile(r"^Retrying .* in 0\.01 seconds as it raised "
+ r"(IO|OS)Error: Hi there, I'm an IOError\.{0}"
+ r"Traceback \(most recent call last\):{0}"
+ r".*$".format(os.linesep),
+ flags=re.MULTILINE)
+ self.assertEqual(len(handler.records), 2)
+ fmt = logging.Formatter().format
+ self.assertRegexpMatches(fmt(handler.records[0]), etalon_re)
+ self.assertRegexpMatches(fmt(handler.records[1]), etalon_re)
+
+ def test_before_sleep_log_returns(self, exc_info=False):
thing = NoneReturnUntilAfterCount(2)
logger = logging.getLogger(self.id())
logger.propagate = False
@@ -1168,7 +1202,9 @@
handler = CapturingHandler()
logger.addHandler(handler)
try:
- _before_sleep = tenacity.before_sleep_log(logger, logging.INFO)
+ _before_sleep = tenacity.before_sleep_log(logger,
+ logging.INFO,
+ exc_info=exc_info)
_retry = tenacity.retry_if_result(lambda result: result is None)
retrying = Retrying(wait=tenacity.wait_fixed(0.01),
stop=tenacity.stop_after_attempt(3),
@@ -1177,10 +1213,14 @@
finally:
logger.removeHandler(handler)
+ etalon_re = r'^Retrying .* in 0\.01 seconds as it returned None\.$'
self.assertEqual(len(handler.records), 2)
- etalon_re = r'Retrying .* in 0\.01 seconds as it returned None'
- self.assertRegexpMatches(handler.records[0].getMessage(), etalon_re)
- self.assertRegexpMatches(handler.records[1].getMessage(), etalon_re)
+ fmt = logging.Formatter().format
+ self.assertRegexpMatches(fmt(handler.records[0]), etalon_re)
+ self.assertRegexpMatches(fmt(handler.records[1]), etalon_re)
+
+ def test_before_sleep_log_returns_with_exc_info(self):
+ self.test_before_sleep_log_returns(exc_info=True)
class TestReraiseExceptions(unittest.TestCase):
@@ -1391,6 +1431,42 @@
self.assertEqual(expected.last_attempt, actual.last_attempt)
+class TestRetryTyping(unittest.TestCase):
+
+ @pytest.mark.skipif(
+ sys.version_info < (3, 0),
+ reason="typeguard not supported for python 2"
+ )
+ def test_retry_type_annotations(self):
+ """The decorator should maintain types of decorated functions."""
+ # Just in case this is run with unit-test, return early for py2
+ if sys.version_info < (3, 0):
+ return
+
+ # Function-level import because we can't install this for python 2.
+ from typeguard import check_type
+
+ def num_to_str(number):
+ # type: (int) -> str
+ return str(number)
+
+ # equivalent to a raw @retry decoration
+ with_raw = retry(num_to_str)
+ with_raw_result = with_raw(1)
+
+ # equivalent to a @retry(...) decoration
+ with_constructor = retry()(num_to_str)
+ with_constructor_result = with_raw(1)
+
+ # These raise TypeError exceptions if they fail
+ check_type("with_raw", with_raw, typing.Callable[[int], str])
+ check_type("with_raw_result", with_raw_result, str)
+ check_type(
+ "with_constructor", with_constructor, typing.Callable[[int], str]
+ )
+ check_type("with_constructor_result", with_constructor_result, str)
+
+
@contextmanager
def reports_deprecation_warning():
__tracebackhide__ = True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tenacity-6.1.0/tenacity.egg-info/PKG-INFO new/tenacity-6.2.0/tenacity.egg-info/PKG-INFO
--- old/tenacity-6.1.0/tenacity.egg-info/PKG-INFO 2020-02-26 11:39:48.000000000 +0100
+++ new/tenacity-6.2.0/tenacity.egg-info/PKG-INFO 2020-04-30 12:01:33.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: tenacity
-Version: 6.1.0
+Version: 6.2.0
Summary: Retry code until it succeeds
Home-page: https://github.com/jd/tenacity
Author: Julien Danjou
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tenacity-6.1.0/tenacity.egg-info/SOURCES.txt new/tenacity-6.2.0/tenacity.egg-info/SOURCES.txt
--- old/tenacity-6.1.0/tenacity.egg-info/SOURCES.txt 2020-02-26 11:39:48.000000000 +0100
+++ new/tenacity-6.2.0/tenacity.egg-info/SOURCES.txt 2020-04-30 12:01:33.000000000 +0200
@@ -13,6 +13,7 @@
doc/source/conf.py
doc/source/index.rst
releasenotes/notes/add-reno-d1ab5710f272650a.yaml
+releasenotes/notes/before_sleep_log-improvements-d8149274dfb37d7c.yaml
tenacity/__init__.py
tenacity/_asyncio.py
tenacity/_utils.py
@@ -21,6 +22,7 @@
tenacity/before_sleep.py
tenacity/compat.py
tenacity/nap.py
+tenacity/py.typed
tenacity/retry.py
tenacity/stop.py
tenacity/tornadoweb.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tenacity-6.1.0/tenacity.egg-info/requires.txt new/tenacity-6.2.0/tenacity.egg-info/requires.txt
--- old/tenacity-6.1.0/tenacity.egg-info/requires.txt 2020-02-26 11:39:48.000000000 +0100
+++ new/tenacity-6.2.0/tenacity.egg-info/requires.txt 2020-04-30 12:01:33.000000000 +0200
@@ -3,6 +3,7 @@
[:python_version == "2.7"]
futures>=3.0
monotonic>=0.6
+typing>=3.7.4.1
[doc]
reno
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tenacity-6.1.0/tox.ini new/tenacity-6.2.0/tox.ini
--- old/tenacity-6.1.0/tox.ini 2020-02-26 11:39:39.000000000 +0100
+++ new/tenacity-6.2.0/tox.ini 2020-04-30 12:01:22.000000000 +0200
@@ -7,6 +7,7 @@
deps =
.[doc]
pytest
+ typeguard;python_version>='3.0'
commands =
py{27,py}: pytest --ignore='tenacity/tests/test_asyncio.py' {posargs}
py3{5,6,7,8}: pytest {posargs}
1
0
Hello community,
here is the log from the commit of package ignition-dracut for openSUSE:Factory checked in at 2020-06-30 21:58:04
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ignition-dracut (Old)
and /work/SRC/openSUSE:Factory/.ignition-dracut.new.3060 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ignition-dracut"
Tue Jun 30 21:58:04 2020 rev:14 rq:817785 version:0.0+git20200504.7ff38d9
Changes:
--------
--- /work/SRC/openSUSE:Factory/ignition-dracut/ignition-dracut.changes 2020-06-29 21:19:02.333909046 +0200
+++ /work/SRC/openSUSE:Factory/.ignition-dracut.new.3060/ignition-dracut.changes 2020-06-30 21:58:58.575225169 +0200
@@ -1,0 +2,13 @@
+Mon Jun 29 13:48:31 UTC 2020 - Ignaz Forster <iforster(a)suse.com>
+
+- Overwrite Ignition's systemd generator by putting a file of the
+ same name into /etc/systemd/systemd-generators (instead of
+ installing a second generator) and source the original generator
+ from there; this will remove some redundant code.
+- Move autodetection of platform from %post script to initrd
+ generator; this will remove the hack to modify /etc/default/grub
+ with sed [boo#1149701]
+- Overwrite generated diskful.conf instead of installing another
+ one with higher priority
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ignition-dracut.spec ++++++
--- /var/tmp/diff_new_pack.qO1Kxc/_old 2020-06-30 21:59:00.971232584 +0200
+++ /var/tmp/diff_new_pack.qO1Kxc/_new 2020-06-30 21:59:00.975232597 +0200
@@ -39,8 +39,10 @@
BuildRequires: systemd-rpm-macros
BuildRequires: update-bootloader-rpm-macros
Requires: %{name}-grub2
+Requires: dmidecode
Requires: gptfdisk
Requires: ignition
+Requires: virt-what
%{update_bootloader_requires}
%description
@@ -58,7 +60,6 @@
Requires: grub2
Requires(post): grub2
Requires(post): sed
-Requires(post): virt-what
%description grub2
GRUB2 configuration which sets ignition.firstboot based on
@@ -114,26 +115,12 @@
%service_add_pre ignition-firstboot-complete.service
%post grub2
-if [ "$1" = 1 ] ; then
- platform="$(virt-what)"
- case "${platform}" in
- *vmware*) platform="vmware" ;;
- *virtualbox*) platform="virtualbox" ;;
- *kvm*|*qemu*) platform="qemu" ;;
- *) platform="metal" ;;
- esac
- sed -i 's/^\(GRUB_CMDLINE_LINUX_DEFAULT="\)\(.*\)/\1ignition.platform.id='${platform}' \\$ignition_firstboot \2/' %{_sysconfdir}/default/grub
- %{?update_bootloader_refresh_post}
-fi
%service_add_post ignition-firstboot-complete.service
%preun grub2
%service_del_preun ignition-firstboot-complete.service
%postun grub2
-if [ "$1" = 0 ] ; then
- sed -i -E '/^GRUB_CMDLINE_LINUX_DEFAULT="/s/(\\\$)?ignition[._][^[:space:]"]+ ?//g' %{_sysconfdir}/default/grub
-fi
%service_del_postun -n ignition-firstboot-complete.service
%posttrans grub2
++++++ README.SUSE ++++++
--- /var/tmp/diff_new_pack.qO1Kxc/_old 2020-06-30 21:59:01.035232783 +0200
+++ /var/tmp/diff_new_pack.qO1Kxc/_new 2020-06-30 21:59:01.035232783 +0200
@@ -1,19 +1,24 @@
Changes for openSUSE / SLE:
-* ignition-mount-initrd-fstab.service / ignition-suse-generator:
- By default Ignition will only mount partitions or subvolumes explicitly
- mentioned in the Ignition configuration. On SUSE, however, the system
+* ignition-mount-initrd-fstab.service:
+ Upstream Ignition will only mount partitions or subvolumes explicitly
+ mentioned in the Ignition configuration. A default SUSE system, however,
is split over several subvolumes, and most users won't want to define
- all the partitions again. A lot of core functionality however (e.g.
+ all the partitions again. On the other hand a lot of core functionality (e.g.
configuring a SSH certificate for the root user or adding a configuration
file) requires access to those subvolumes.
For better usability in addition to Ignition's own mount / umount stage all
- files systems tagged for being mounted in the initrd ("x-initrd.mount mount
+ files systems tagged for being mounted in the initrd ("x-initrd.mount" mount
flag) will automatically be mounted / umounted.
* ignition-setup-user-suse.sh / ignition-userconfig-timeout*.conf:
The user configuration can be stored on a device with the label "ignition"
(e.g. by attaching a USB flash drive with that name) instead of putting the
file onto the root partition.
+* ignition-suse-generator:
+ Supplements the upstream generator by adding dependencies to
+ ignition-setup-user-suse.sh and ignition-mount-initrd-fstab.service.
+ Additionally it will try to autodect the platform if it is not set on the
+ kernel command line.
* 02_ignition_firstboot:
This file has been part of upstream ignition-dracut, but has since then been
moved to a static CoreOS specific configuration
++++++ ignition-suse-generator ++++++
--- /var/tmp/diff_new_pack.qO1Kxc/_old 2020-06-30 21:59:01.139233105 +0200
+++ /var/tmp/diff_new_pack.qO1Kxc/_new 2020-06-30 21:59:01.139233105 +0200
@@ -6,22 +6,13 @@
UNIT_DIR="${1:-/tmp}"
-add_requires() {
- local name="$1"; shift
- local requires_dir="${UNIT_DIR}/ignition-files.service.requires"
- mkdir -p "${requires_dir}"
- ln -sf "../${name}" "${requires_dir}/${name}"
-}
-
-add_requires ignition-mount-initrd-fstab.service
-
-# Overwrite static /boot dependency by upstream igniton-dracut with a more
-# generic "ignition" device to fetch the user configuration; can not be put
-# into UNIT_DIR, as systemd generators are running simultaneously, so use a
-# directory with a higher priority. May still be overwritten by the admin by
-# putting the same file into /etc.
-mkdir -p "/run/systemd/system/ignition-setup-user.service.d"
-cat > "/run/systemd/system/ignition-setup-user.service.d/diskful.conf" <<EOF
+# Call upstream generator
+. /usr/lib/systemd/system-generators/ignition-generator
+. /run/ignition.env
+
+add_requires ignition-mount-initrd-fstab.service ignition-files.service
+
+cat > "${UNIT_DIR}/ignition-setup-user.service.d/diskful.conf" <<EOF
[Unit]
Wants=dev-disk-by\x2dlabel-ignition.device
After=dev-disk-by\x2dlabel-ignition.device
@@ -30,3 +21,14 @@
ExecStart=
ExecStart=/usr/sbin/ignition-setup-user-suse
EOF
+
+if [ -z "${PLATFORM_ID}" ]; then
+ platform="$(virt-what)"
+ case "${platform}" in
+ *vmware*) platform="vmware" ;;
+ *virtualbox*) platform="virtualbox" ;;
+ *kvm*|*qemu*) platform="qemu" ;;
+ *) platform="metal" ;;
+ esac
+ echo "PLATFORM_ID=${platform}" > /run/ignition.env
+fi
++++++ module-setup.sh ++++++
--- /var/tmp/diff_new_pack.qO1Kxc/_old 2020-06-30 21:59:01.179233228 +0200
+++ /var/tmp/diff_new_pack.qO1Kxc/_new 2020-06-30 21:59:01.179233228 +0200
@@ -14,10 +14,10 @@
inst_simple "$moddir/prevent-boot-cycle.conf" \
"$systemdsystemunitdir/ignition-complete.target.d/prevent-boot-cycle.conf"
inst_simple "$moddir/ignition-suse-generator" \
- "$systemdutildir/system-generators/ignition-suse-generator"
+ "/etc/systemd/system-generators/ignition-generator"
inst_script "$moddir/ignition-setup-user-suse.sh" \
"/usr/sbin/ignition-setup-user-suse"
- inst_multiple awk
+ inst_multiple awk virt-what /usr/lib/virt-what-cpuid-helper id which dmidecode
}
installkernel() {
1
0
Hello community,
here is the log from the commit of package FlightGear for openSUSE:Factory checked in at 2020-06-30 21:58:02
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/FlightGear (Old)
and /work/SRC/openSUSE:Factory/.FlightGear.new.3060 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "FlightGear"
Tue Jun 30 21:58:02 2020 rev:12 rq:817778 version:2020.1.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/FlightGear/FlightGear.changes 2020-06-14 18:35:26.918568643 +0200
+++ /work/SRC/openSUSE:Factory/.FlightGear.new.3060/FlightGear.changes 2020-06-30 21:58:51.403202970 +0200
@@ -1,0 +2,8 @@
+Sat Jun 27 16:58:53 UTC 2020 - Stefan Brüns <stefan.bruens(a)rwth-aachen.de>
+
+- Update to 2020.1.3
+ * http://wiki.flightgear.org/Changelog_2020.1#2020.1.3_point_release
+- Add Fix_language_detection.patch
+- Use system libspeex
+
+-------------------------------------------------------------------
Old:
----
flightgear-2020.1.2.tar.bz2
New:
----
Fix_language_detection.patch
flightgear-2020.1.3.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ FlightGear.spec ++++++
--- /var/tmp/diff_new_pack.3MaBWj/_old 2020-06-30 21:58:53.123208293 +0200
+++ /var/tmp/diff_new_pack.3MaBWj/_new 2020-06-30 21:58:53.123208293 +0200
@@ -18,13 +18,15 @@
%define main_version 2020.1
Name: FlightGear
-Version: %{main_version}.2
+Version: %{main_version}.3
Release: 0
Summary: Flight Simulator
License: GPL-2.0-only
Group: Amusements/Games/3D/Simulation
URL: https://www.flightgear.org/
Source0: https://sourceforge.net/projects/flightgear/files/release-%{main_version}/f…
+# PATCH-FIX-UPSTREAM
+Patch0: Fix_language_detection.patch
BuildRequires: SimGear-devel = %{version}
BuildRequires: cmake
@@ -32,6 +34,7 @@
BuildRequires: gcc-c++
BuildRequires: hicolor-icon-theme
BuildRequires: libboost_headers-devel
+BuildRequires: libevent-devel
BuildRequires: pkgconfig
BuildRequires: plib-devel
BuildRequires: sqlite3-devel
@@ -42,6 +45,8 @@
BuildRequires: pkgconfig(libcurl)
BuildRequires: pkgconfig(libpng)
BuildRequires: pkgconfig(libudev)
+BuildRequires: pkgconfig(speex)
+BuildRequires: pkgconfig(speexdsp)
# Additional dependencies to enable FlightGear's new Qt launcher interface
BuildRequires: cmake(Qt5Network)
@@ -60,6 +65,7 @@
%prep
%setup -q -n flightgear-%{version}
+%patch0 -p1
# remove some unneeded doc files
for ext in Cygwin IRIX Joystick Linux MSVC MSVC8 MacOS SimGear Unix Win32-X autoconf mingw plib src xmlsyntax; do
@@ -76,7 +82,8 @@
-DENABLE_GPSSMOOTH:BOOL=OFF \
-DENABLE_FGVIEWER:BOOL=OFF \
-DENABLE_FGELEV:BOOL=OFF \
- -DENABLE_METAR:BOOL=OFF
+ -DOpenGL_GL_PREFERENCE=GLVND \
+ -DENABLE_METAR:BOOL=ON
%cmake_build
%install
++++++ Fix_language_detection.patch ++++++
CMake translations: don’t break no-translation builds
Move all the relevant pieces inside the do_translate guard, so we
don’t break compilation when translation is disabled.
--- a/CMakeModules/Translations.cmake 2020-06-28 05:18:26.819214997 +0200
+++ b/CMakeModules/Translations.cmake 2020-06-28 05:19:02.043619306 +0200
@@ -35,10 +35,10 @@
set(${result} ${dirlist} PARENT_SCOPE)
endfunction()
-translation_dir_list(LANGUAGES ${TRANSLATIONS_SRC_DIR})
-message(STATUS "Detected language files: ${LANGUAGES}")
-
if (${do_translate})
+ translation_dir_list(LANGUAGES ${TRANSLATIONS_SRC_DIR})
+ message(STATUS "Detected language files: ${LANGUAGES}")
+
set(translation_res "${PROJECT_BINARY_DIR}/translations.qrc")
add_custom_target(fgfs_qm_files ALL)
@@ -72,15 +72,15 @@
# set this so config.h can detect it
set(HAVE_QRC_TRANSLATIONS TRUE)
-endif() # of do translate
-add_custom_target(ts)
-foreach(lang ${LANGUAGES})
- add_custom_target(
- ts_${lang}
- COMMAND Qt5::lupdate ${CMAKE_SOURCE_DIR}/src/GUI
- -locations relative -no-ui-lines -ts ${TRANSLATIONS_SRC_DIR}/${lang}/FlightGear-Qt.xlf
- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
- )
- add_dependencies(ts ts_${lang})
-endforeach()
\ Kein Zeilenumbruch am Dateiende.
+ add_custom_target(ts)
+ foreach(lang ${LANGUAGES})
+ add_custom_target(
+ ts_${lang}
+ COMMAND Qt5::lupdate ${CMAKE_SOURCE_DIR}/src/GUI
+ -locations relative -no-ui-lines -ts ${TRANSLATIONS_SRC_DIR}/${lang}/FlightGear-Qt.xlf
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+ )
+ add_dependencies(ts ts_${lang})
+ endforeach()
+endif() # of do translate
++++++ flightgear-2020.1.2.tar.bz2 -> flightgear-2020.1.3.tar.bz2 ++++++
/work/SRC/openSUSE:Factory/FlightGear/flightgear-2020.1.2.tar.bz2 /work/SRC/openSUSE:Factory/.FlightGear.new.3060/flightgear-2020.1.3.tar.bz2 differ: char 11, line 1
1
0
Hello community,
here is the log from the commit of package SimGear for openSUSE:Factory checked in at 2020-06-30 21:57:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/SimGear (Old)
and /work/SRC/openSUSE:Factory/.SimGear.new.3060 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "SimGear"
Tue Jun 30 21:57:59 2020 rev:16 rq:817777 version:2020.1.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/SimGear/SimGear.changes 2020-06-14 18:35:25.178563101 +0200
+++ /work/SRC/openSUSE:Factory/.SimGear.new.3060/SimGear.changes 2020-06-30 21:58:43.307177911 +0200
@@ -1,0 +2,6 @@
+Sat Jun 27 16:58:53 UTC 2020 - Stefan Brüns <stefan.bruens(a)rwth-aachen.de>
+
+- Update to 2020.1.3
+ * http://wiki.flightgear.org/Changelog_2020.1#2020.1.3_point_release
+
+-------------------------------------------------------------------
Old:
----
simgear-2020.1.2.tar.bz2
New:
----
simgear-2020.1.3.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ SimGear.spec ++++++
--- /var/tmp/diff_new_pack.7SL2gq/_old 2020-06-30 21:58:46.675188335 +0200
+++ /var/tmp/diff_new_pack.7SL2gq/_new 2020-06-30 21:58:46.679188348 +0200
@@ -20,10 +20,10 @@
# in our requirements, i.e. the same version we have built against
%define openscenegraph_version %(rpm -qa --nosignature --nodigest libOpenSceneGraph\*-devel | sed 's/.*-devel-\\(.*\\)-.*/\\1/')
-%define libname libSimGearCore-2020_1_2
+%define libname libSimGearCore-2020_1_3
%define main_version 2020.1
Name: SimGear
-Version: %{main_version}.2
+Version: %{main_version}.3
Release: 0
Summary: Simulator Construction Gear
# https://sourceforge.net/p/flightgear/codetickets/1940/
++++++ simgear-2020.1.2.tar.bz2 -> simgear-2020.1.3.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/simgear-2020.1.2/CMakeLists.txt new/simgear-2020.1.3/CMakeLists.txt
--- old/simgear-2020.1.2/CMakeLists.txt 2020-05-24 17:13:35.000000000 +0200
+++ new/simgear-2020.1.3/CMakeLists.txt 2020-06-26 00:07:33.000000000 +0200
@@ -227,7 +227,7 @@
endif()
find_package(Boost REQUIRED)
-set (BOOST_CXX_FLAGS "-DBOOST_BIMAP_DISABLE_SERIALIZATION")
+set (BOOST_CXX_FLAGS "-DBOOST_BIMAP_DISABLE_SERIALIZATION -DBOOST_NO_STDLIB_CONFIG")
include(BoostTestTargets)
if(SIMGEAR_HEADLESS)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/simgear-2020.1.2/simgear/scene/model/SGPickAnimation.cxx new/simgear-2020.1.3/simgear/scene/model/SGPickAnimation.cxx
--- old/simgear-2020.1.2/simgear/scene/model/SGPickAnimation.cxx 2020-05-24 17:13:36.000000000 +0200
+++ new/simgear-2020.1.3/simgear/scene/model/SGPickAnimation.cxx 2020-06-26 00:07:33.000000000 +0200
@@ -136,11 +136,19 @@
virtual void update(double dt, int keyModState)
{
- if (!_condition || _condition->test()) {
- SG_UNUSED(keyModState);
- if (!_repeatable)
- return;
+ SG_UNUSED(keyModState);
+ if (_condition && !_condition->test()) {
+ return;
+ }
+ if (!_repeatable)
+ return;
+
+ const bool zeroInterval = (_repeatInterval <= 0.0);
+ if (zeroInterval) {
+ // fire once per frame
+ fireBindingList(_bindingsDown);
+ } else {
_repeatTime += dt;
while (_repeatInterval < _repeatTime) {
_repeatTime -= _repeatInterval;
@@ -678,12 +686,18 @@
if (_hasDragged) {
return;
}
-
- _repeatTime += dt;
- while (_repeatInterval < _repeatTime) {
- _repeatTime -= _repeatInterval;
+
+ const bool zeroInterval = (_repeatInterval <= 0.0);
+ if (zeroInterval) {
+ // fire once per frame
fire(keyModState & osgGA::GUIEventAdapter::MODKEY_SHIFT, _direction);
- } // of repeat iteration
+ } else {
+ _repeatTime += dt;
+ while (_repeatInterval < _repeatTime) {
+ _repeatTime -= _repeatInterval;
+ fire(keyModState & osgGA::GUIEventAdapter::MODKEY_SHIFT, _direction);
+ } // of repeat iteration
+ }
}
bool hover( const osg::Vec2d& windowPos, const Info& ) override
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/simgear-2020.1.2/version new/simgear-2020.1.3/version
--- old/simgear-2020.1.2/version 2020-05-24 17:13:36.000000000 +0200
+++ new/simgear-2020.1.3/version 2020-06-26 00:07:33.000000000 +0200
@@ -1 +1 @@
-2020.1.2
+2020.1.3
1
0
Hello community,
here is the log from the commit of package FlightGear-data for openSUSE:Factory checked in at 2020-06-30 21:56:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/FlightGear-data (Old)
and /work/SRC/openSUSE:Factory/.FlightGear-data.new.3060 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "FlightGear-data"
Tue Jun 30 21:56:46 2020 rev:13 rq:817776 version:2020.1.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/FlightGear-data/FlightGear-data.changes 2020-06-14 18:35:05.418500164 +0200
+++ /work/SRC/openSUSE:Factory/.FlightGear-data.new.3060/FlightGear-data.changes 2020-06-30 21:58:17.151096953 +0200
@@ -1,0 +2,6 @@
+Sat Jun 27 16:58:53 UTC 2020 - Stefan Brüns <stefan.bruens(a)rwth-aachen.de>
+
+- Update to 2020.1.3
+ * http://wiki.flightgear.org/Changelog_2020.1#2020.1.3_point_release
+
+-------------------------------------------------------------------
Old:
----
FlightGear-2020.1.2-data.tar.bz2
New:
----
FlightGear-2020.1.3-data.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ FlightGear-data.spec ++++++
--- /var/tmp/diff_new_pack.zgbx3g/_old 2020-06-30 21:58:37.515159984 +0200
+++ /var/tmp/diff_new_pack.zgbx3g/_new 2020-06-30 21:58:37.515159984 +0200
@@ -18,7 +18,7 @@
%define main_version 2020.1
Name: FlightGear-data
-Version: %{main_version}.2
+Version: %{main_version}.3
Release: 0
Summary: FlightGear base scenery and data files
License: GPL-2.0-only
@@ -64,7 +64,7 @@
# Remove some development files for the Cessna C172p
rm -Rf ./Aircraft/c172p/dev/
# Translation sources (xliff)
-find . -type f -name \*FlightGear-nonQt.xlf -print -delete
+find . -type f -name \*FlightGear-*Qt.xlf -print -delete
# More source files
find . -type f -name \*\.zip -print -delete
find . -type f -name \*\.blend -print -delete
++++++ FlightGear-2020.1.2-data.tar.bz2 -> FlightGear-2020.1.3-data.tar.bz2 ++++++
/work/SRC/openSUSE:Factory/FlightGear-data/FlightGear-2020.1.2-data.tar.bz2 /work/SRC/openSUSE:Factory/.FlightGear-data.new.3060/FlightGear-2020.1.3-data.tar.bz2 differ: char 11, line 1
1
0