From e829f05757a0759e583f59a8572930d8cc2140af Mon Sep 17 00:00:00 2001 From: barton26 Date: Thu, 30 Sep 2021 16:02:32 -0400 Subject: [PATCH 01/16] Update third party wxWidgets with bugfix builds --- 3rdParty/buildLinuxDependencies.sh | 2 +- 3rdParty/buildWxLinux.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/3rdParty/buildLinuxDependencies.sh b/3rdParty/buildLinuxDependencies.sh index baca1549db..a713208cf0 100755 --- a/3rdParty/buildLinuxDependencies.sh +++ b/3rdParty/buildLinuxDependencies.sh @@ -141,7 +141,7 @@ fi if [ "${gtest_only}" = "yes" ]; then download_and_build "googletest-release-1.8.1" "release-1.8.1.tar.gz" "https://github.com/google/googletest/archive/release-1.8.1.tar.gz" "${ROOTDIR}/3rdParty/buildGoogletestLinux.sh" else - download_and_build "wxWidgets-3.0.2" "wxWidgets-3.0.2.tar.bz2" "https://sourceforge.net/projects/wxwindows/files/3.0.2/wxWidgets-3.0.2.tar.bz2" "${ROOTDIR}/3rdParty/buildWxLinux.sh ${wxoption}" + download_and_build "wxWidgets-3.0.5" "wxWidgets-3.0.5.tar.bz2" "https://github.com/wxWidgets/wxWidgets/releases/download/v3.0.5/wxWidgets-3.0.5.tar.bz2" "${ROOTDIR}/3rdParty/buildWxLinux.sh ${wxoption}" fi # change back to root directory diff --git a/3rdParty/buildWxLinux.sh b/3rdParty/buildWxLinux.sh index 326dbe6d22..9ceaf899fa 100644 --- a/3rdParty/buildWxLinux.sh +++ b/3rdParty/buildWxLinux.sh @@ -20,7 +20,7 @@ # Script to build a wxWidgets GTK version for BOINC # Usage: -# cd [path]/wxWidgets-3.0.2/ +# cd [path]/wxWidgets-3.0.5/ # source path_to_this_script [--clean] [--debug] [--prefix PATH] # # the --clean argument will force a full rebuild. From 092e8bcd9924dbf17be889d23b804e60b532cf12 Mon Sep 17 00:00:00 2001 From: barton26 Date: Thu, 30 Sep 2021 17:07:53 -0400 Subject: [PATCH 02/16] Use `is None` instead of `== None` --- py/Boinc/boincxml.py | 2 +- py/Boinc/db_base.py | 8 ++++---- py/Boinc/setup_project.py | 4 ++-- sched/assimilator.py | 2 +- tests/old/testbase.py | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/py/Boinc/boincxml.py b/py/Boinc/boincxml.py index 652b653884..651f32e344 100644 --- a/py/Boinc/boincxml.py +++ b/py/Boinc/boincxml.py @@ -28,7 +28,7 @@ def get_element(node, name, optional=True): raise SystemExit("ERROR: Couldn't find xml node <%s>"% name) def _None2Str(object): - if object == None: + if object is None: return '' else: return object diff --git a/py/Boinc/db_base.py b/py/Boinc/db_base.py index 45b25fd54e..1f9d8901d8 100644 --- a/py/Boinc/db_base.py +++ b/py/Boinc/db_base.py @@ -69,13 +69,13 @@ def _commit_object(tablename, paramdict, id=None): equalcommands = [] for key in paramdict.keys(): value = paramdict[key] - if value == None: + if value is None: continue elif isinstance(value, int): equalcommands.append('%s=%d' %(key,value)) else: equalcommands.append("%s='%s'"%(key,dbconnection.escape_string(str(value)))) - if id == None: + if id is None: command = 'INSERT INTO %s SET %s' % \ (tablename, ', '.join(equalcommands)) if debug.mysql: @@ -97,7 +97,7 @@ def _remove_object(command, id=None): id is given, it assembles the SQL command and deletes the object from the database. Does nothing if no id is given.""" assert(dbconnection) - if id == None: + if id is None: pass else: cursor = dbconnection.cursor() @@ -122,7 +122,7 @@ def _select_object(table, searchdict, extra_args="", extra_params=[], select_wha if join: command += "," + join for (key,value) in searchdict.items(): - if value == None: + if value is None: value = '' escaped_value = dbconnection.escape_string(str(value)) if key == 'text': diff --git a/py/Boinc/setup_project.py b/py/Boinc/setup_project.py index b62d1e66a7..2d77d76460 100644 --- a/py/Boinc/setup_project.py +++ b/py/Boinc/setup_project.py @@ -57,7 +57,7 @@ def verbose_sleep(msg, wait): def get_env_var(name, default = None): value = os.environ.get(name, default) - if value == None: + if value is None: print("Environment variable %s not defined" % name) sys.exit(1) return value @@ -209,7 +209,7 @@ def _check_vars(dict, **names): for key in names: value = names[key] if not key in dict: - if value == None: + if value is None: raise SystemExit('error in test script: required parameter "%s" not specified'%key) dict[key] = value for key in dict: diff --git a/sched/assimilator.py b/sched/assimilator.py index 865cdb9372..4367d1947a 100644 --- a/sched/assimilator.py +++ b/sched/assimilator.py @@ -180,7 +180,7 @@ class Assimilator(): if result == wu.canonical_result: canonical_result=result - if canonical_result == None and wu.error_mask == 0: + if canonical_result is None and wu.error_mask == 0: # If no canonical result found and WU had no other errors, # something is wrong, e.g. result records got deleted prematurely. # This is probably unrecoverable, so mark the WU as having diff --git a/tests/old/testbase.py b/tests/old/testbase.py index af5d802f19..8958b21e68 100644 --- a/tests/old/testbase.py +++ b/tests/old/testbase.py @@ -125,7 +125,7 @@ def _check_vars(dict, **names): for key in names: value = names[key] if not key in dict: - if value == None: + if value is None: raise SystemExit('error in test script: required parameter "%s" not specified'%key) dict[key] = value for key in dict: From d22ed53f6ad5047f06fda8d55a84add2b00a6d06 Mon Sep 17 00:00:00 2001 From: barton26 Date: Fri, 1 Oct 2021 00:23:26 -0400 Subject: [PATCH 03/16] Remove semicolons in python code --- lib/submit_api.py | 2 +- py/Boinc/boincxml.py | 2 +- py/Boinc/sched_messages.py | 2 +- py/Boinc/setup_project.py | 8 ++++---- samples/vm_wrapper/VMwrapper.py | 8 ++++---- tests/old/test_1sec.py | 2 +- tests/old/test_uc.py | 2 +- tests/old/testbase.py | 4 ++-- tools/submit_api_test.py | 2 +- 9 files changed, 16 insertions(+), 16 deletions(-) diff --git a/lib/submit_api.py b/lib/submit_api.py index a98d9fd6b5..581320ff61 100644 --- a/lib/submit_api.py +++ b/lib/submit_api.py @@ -313,4 +313,4 @@ def upload_files(upload_files_req): # see tools/submit_api_test.py # def get_job_counts(req): - return do_http_post('', req.project, 'server_status.php?counts=1'); + return do_http_post('', req.project, 'server_status.php?counts=1') diff --git a/py/Boinc/boincxml.py b/py/Boinc/boincxml.py index 652b653884..35099ef216 100644 --- a/py/Boinc/boincxml.py +++ b/py/Boinc/boincxml.py @@ -135,7 +135,7 @@ class XMLConfig: self._get_elements() except: if not failopen_ok: - raise Exception("%s: Couldn't get elements from XML file"); + raise Exception("%s: Couldn't get elements from XML file") return self def _get_elements(self): pass diff --git a/py/Boinc/sched_messages.py b/py/Boinc/sched_messages.py index 0931660ea8..76d7115682 100644 --- a/py/Boinc/sched_messages.py +++ b/py/Boinc/sched_messages.py @@ -20,6 +20,6 @@ class SchedMessages: elif kind==DEBUG: kind = "debug " else: - kind = "*** internal error: invalid MessageKind ***"; + kind = "*** internal error: invalid MessageKind ***" sys.stderr.write("%s [%s] " % (time.strftime("%Y/%m/%d %H:%M:%S", time.localtime()), kind)) sys.stderr.write(format % args) diff --git a/py/Boinc/setup_project.py b/py/Boinc/setup_project.py index b62d1e66a7..7b0910ff70 100644 --- a/py/Boinc/setup_project.py +++ b/py/Boinc/setup_project.py @@ -309,7 +309,7 @@ def install_boinc_files(dest_dir, install_web_files, install_server_files): location = os.path.join(location, d ) return location - create_project_dirs(dest_dir); + create_project_dirs(dest_dir) # copy html/ops files in all cases. # The critical one is db_update.php, @@ -555,13 +555,13 @@ class Project: if os.path.exists(self.dest()): raise SystemExit('Project directory "%s" already exists; this would clobber it!'%self.dest()) - verbose_echo(1, "Creating directories"); + verbose_echo(1, "Creating directories") - create_project_dirs(self.project_dir); + create_project_dirs(self.project_dir) if not self.web_only: if not self.keys_exist(): - verbose_echo(1, "Generating encryption keys"); + verbose_echo(1, "Generating encryption keys") self.create_keys() # copy the user and administrative PHP files to the project dir, diff --git a/samples/vm_wrapper/VMwrapper.py b/samples/vm_wrapper/VMwrapper.py index b31d87ee67..7bc15df5bf 100644 --- a/samples/vm_wrapper/VMwrapper.py +++ b/samples/vm_wrapper/VMwrapper.py @@ -67,9 +67,9 @@ class TASK: final_cpu_time = 0.0 time_checkpointed = 0 # contribution of this task to overall fraction done - final_cpu_time = 0; - starting_cpu = 0; - ready = 0; + final_cpu_time = 0 + starting_cpu = 0 + ready = 0 exitCode = None # how much CPU time was used by tasks before this in the job file @@ -450,7 +450,7 @@ def read_checkpoint(filename): cpu = 0 try: - f = open(filename, "r"); + f = open(filename, "r") except: return [ntasks, cpu] diff --git a/tests/old/test_1sec.py b/tests/old/test_1sec.py index bbec4a630e..393a0ebe3a 100755 --- a/tests/old/test_1sec.py +++ b/tests/old/test_1sec.py @@ -9,7 +9,7 @@ from test_uc import * if __name__ == '__main__': - test_msg("multiple projects with resource share"); + test_msg("multiple projects with resource share") # create two projects with the same host/user host = Host() user = UserUC() diff --git a/tests/old/test_uc.py b/tests/old/test_uc.py index f2d30f741a..1fbbbbdac1 100755 --- a/tests/old/test_uc.py +++ b/tests/old/test_uc.py @@ -74,6 +74,6 @@ class ProjectUC(TestProject): ) if __name__ == '__main__': - test_msg("standard upper_case application"); + test_msg("standard upper_case application") ProjectUC() run_check_all() diff --git a/tests/old/testbase.py b/tests/old/testbase.py index af5d802f19..2db366c755 100644 --- a/tests/old/testbase.py +++ b/tests/old/testbase.py @@ -508,7 +508,7 @@ class Host: rmtree(self.dir()) os.mkdir(self.dir()) - verbose_echo(1, "Setting up host '%s': creating account files" % self.name); + verbose_echo(1, "Setting up host '%s': creating account files" % self.name) for (user,project) in map(None,self.users,self.projects): filename = self.dir(account_file_name(project.config.config.master_url)) verbose_echo(2, "Setting up host '%s': writing %s" % (self.name, filename)) @@ -611,7 +611,7 @@ class Work: verbose_echo(2, "Linking "+newhandler) os.symlink(handler, newhandler) - shutil.copy(self.result_template, project.dir()); + shutil.copy(self.result_template, project.dir()) cmd = build_command_line("create_work", config_dir = project.dir(), appname = self.app.name, diff --git a/tools/submit_api_test.py b/tools/submit_api_test.py index 06b17445de..af49cefc9d 100644 --- a/tools/submit_api_test.py +++ b/tools/submit_api_test.py @@ -46,7 +46,7 @@ def make_batch_desc(batch_name): [batch.project, batch.authenticator] = get_auth() batch.app_name = "uppercase" batch.batch_name = batch_name - batch.app_version_num = 710; + batch.app_version_num = 710 batch.jobs = [] for i in range(2): From 5d0f69f063e36d71882eaef34d1726641b6c6f80 Mon Sep 17 00:00:00 2001 From: barton26 Date: Fri, 1 Oct 2021 02:15:52 -0400 Subject: [PATCH 04/16] Fix typo that introduces a bug --- clientgui/MainDocument.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clientgui/MainDocument.cpp b/clientgui/MainDocument.cpp index 1352a6191e..33ac2a35d2 100644 --- a/clientgui/MainDocument.cpp +++ b/clientgui/MainDocument.cpp @@ -1325,7 +1325,7 @@ int CMainDocument::CachedProjectStatusUpdate(bool bForce) { if (! IsConnected()) return -1; #if USE_CACHE_TIMEOUTS - wxTimeSpan ts(wxDateTime::Now() - m_dtProjecStatusTimestamp); + wxTimeSpan ts(wxDateTime::Now() - m_dtProjectsStatusTimestamp); if (ts.GetSeconds() >= (2 * PROJECTSTATUSRPC_INTERVAL)) bForce = true; #endif if (m_dtProjectsStatusTimestamp.IsEqualTo(wxDateTime((time_t)0))) bForce = true; From c04357bc19d62a47ed326845aa96735ac29906d4 Mon Sep 17 00:00:00 2001 From: Charlie Fenton Date: Thu, 30 Sep 2021 23:36:32 -0700 Subject: [PATCH 05/16] Mac: Fix build errors when building BOINC with wxWidgets 3.1.5 --- clientgui/mac/MacBitmapComboBox.cpp | 16 +- mac_build/boinc.xcodeproj/project.pbxproj | 28 ++- mac_build/buildWxMac.sh | 292 ++++++++-------------- mac_build/dependencyNames.sh | 6 +- 4 files changed, 138 insertions(+), 204 deletions(-) diff --git a/clientgui/mac/MacBitmapComboBox.cpp b/clientgui/mac/MacBitmapComboBox.cpp index a10219c847..bbf5bd4465 100644 --- a/clientgui/mac/MacBitmapComboBox.cpp +++ b/clientgui/mac/MacBitmapComboBox.cpp @@ -14,11 +14,17 @@ // // You should have received a copy of the GNU Lesser General Public License // along with BOINC. If not, see . +// +// On Macintosh we use only native controls in Simple View so the macOS +// automatically provides accessibility support. Though wxBitmapComboBox +// does not use MacOS native controls, wxChoice uses NSPopUpButton, so +// we create our own BitmapComboBox on Macintosh based on wxChoice, which +// we have hacked to allow adding bitmaps. +// #include "stdwx.h" #include "MacBitmapComboBox.h" #include "mac_util.h" - #define POPUPBUTTONCONTROLHEIGHT 40 // wxChoice uses CreatePopupButtonControl @@ -54,13 +60,9 @@ CBOINCBitmapChoice::~CBOINCBitmapChoice() { } void CBOINCBitmapChoice::SetItemBitmap(unsigned int n, const wxBitmap& bitmap) { - wxMenuItem *item = m_popUpMenu->FindItemByPosition(n); - - if ( item && bitmap.Ok() ) - { - item->SetBitmap(bitmap); - } + wxChoice::SetItemBitmap(n, bitmap); } + void CBOINCBitmapChoice::OnMouseDown(wxMouseEvent& event) { wxToolTip::Enable(false); event.Skip(); diff --git a/mac_build/boinc.xcodeproj/project.pbxproj b/mac_build/boinc.xcodeproj/project.pbxproj index 6e102dceb4..1bc0277994 100644 --- a/mac_build/boinc.xcodeproj/project.pbxproj +++ b/mac_build/boinc.xcodeproj/project.pbxproj @@ -178,6 +178,7 @@ DD407ABB07D2FC7D00163EF5 /* mem_usage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD407AB707D2FC7D00163EF5 /* mem_usage.cpp */; }; DD431FAA0A41660D0060585A /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 20286C33FDCF999611CA2CEA /* Carbon.framework */; }; DD4329910BA63DEC007CDF2A /* str_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD7BF7D70B8E7A9800A009F7 /* str_util.cpp */; }; + DD43475826FB397A00B8880F /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD43474F26FB378100B8880F /* QuartzCore.framework */; }; DD48091F081A66F100A174AA /* BOINCSaver.nib in Resources */ = {isa = PBXBuildFile; fileRef = DD48091E081A66F100A174AA /* BOINCSaver.nib */; }; DD4AE04D13652BD700285859 /* cc_config.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD4AE04B13652BD700285859 /* cc_config.cpp */; }; DD4AE05013652C1300285859 /* cc_config.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD4AE04B13652BD700285859 /* cc_config.cpp */; }; @@ -216,6 +217,7 @@ DD5F656523606AED009ED2A2 /* hostinfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD344BB607C5AEEE0043025C /* hostinfo.cpp */; }; DD5F656623607472009ED2A2 /* gfx_cleanup in Resources */ = {isa = PBXBuildFile; fileRef = DD5F654123605B41009ED2A2 /* gfx_cleanup */; }; DD5FE1B517828887003339DF /* translate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DDF9350F176B0D0C00A2793C /* translate.cpp */; }; + DD64A7782703379F005FE681 /* MacBitmapComboBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD64A774270329AA005FE681 /* MacBitmapComboBox.cpp */; }; DD64D8011F6BE5BA00FEEAAA /* MultiGPUMig.defs in Sources */ = {isa = PBXBuildFile; fileRef = DD64D8001F6BE5BA00FEEAAA /* MultiGPUMig.defs */; settings = {ATTRIBUTES = (Client, Server, ); }; }; DD6617880A3FFD8C00FFEBEB /* check_security.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD6617870A3FFD8C00FFEBEB /* check_security.cpp */; }; DD67F8140ADB9DD000B0015E /* wxPieCtrl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD40E75D0ADB87BC00214518 /* wxPieCtrl.cpp */; }; @@ -243,7 +245,6 @@ DD76BF9A17CB46830075936D /* opencl_boinc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD76BF9117CB45870075936D /* opencl_boinc.cpp */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; DD7748B50A356D6C0025D05E /* SetupSecurity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD7748B40A356D6C0025D05E /* SetupSecurity.cpp */; }; DD7749680A3596380025D05E /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD1929D80918A2F100C31BCF /* Security.framework */; }; - DD77A71812F2D1C9006B82E9 /* MacBitmapComboBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD77A71612F2D1C9006B82E9 /* MacBitmapComboBox.cpp */; }; DD7A5D8312EEBE5E0006268E /* sg_TaskCommandPopup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD7A5D8212EEBE5E0006268E /* sg_TaskCommandPopup.cpp */; }; DD7A5D9F12EEBFC20006268E /* sg_ProjectWebSitesPopup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD7A5D9E12EEBFC20006268E /* sg_ProjectWebSitesPopup.cpp */; }; DD7A5DAB12EEC37B0006268E /* sg_ProjectCommandPopup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD7A5DAA12EEC37B0006268E /* sg_ProjectCommandPopup.cpp */; }; @@ -1009,6 +1010,7 @@ DD40825907D3076400163EF5 /* reduce.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = reduce.h; path = ../api/reduce.h; sourceTree = SOURCE_ROOT; }; DD40E75D0ADB87BC00214518 /* wxPieCtrl.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = wxPieCtrl.cpp; path = ../clientgui/common/wxPieCtrl.cpp; sourceTree = SOURCE_ROOT; }; DD40E75E0ADB87BC00214518 /* wxPieCtrl.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = wxPieCtrl.h; path = ../clientgui/common/wxPieCtrl.h; sourceTree = SOURCE_ROOT; }; + DD43474F26FB378100B8880F /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; DD4688410C165F3C0089F500 /* Uninstall BOINC.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Uninstall BOINC.app"; sourceTree = BUILT_PRODUCTS_DIR; }; DD4688430C165F3C0089F500 /* Uninstaller-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Uninstaller-Info.plist"; sourceTree = ""; }; DD4688590C1661970089F500 /* uninstall.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = uninstall.cpp; path = ../mac_installer/uninstall.cpp; sourceTree = SOURCE_ROOT; }; @@ -1062,6 +1064,8 @@ DD5F654A23605C87009ED2A2 /* gfx_cleanup.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = gfx_cleanup.mm; path = ../clientscr/gfx_cleanup.mm; sourceTree = ""; }; DD6381450870DB78007A2F8E /* mac_icon.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = mac_icon.cpp; sourceTree = ""; }; DD6381F80870DD83007A2F8E /* make_app_icon_h.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = make_app_icon_h.cpp; sourceTree = ""; }; + DD64A774270329AA005FE681 /* MacBitmapComboBox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MacBitmapComboBox.cpp; path = ../clientgui/mac/MacBitmapComboBox.cpp; sourceTree = ""; }; + DD64A775270329AA005FE681 /* MacBitmapComboBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MacBitmapComboBox.h; path = ../clientgui/mac/MacBitmapComboBox.h; sourceTree = ""; }; DD64D8001F6BE5BA00FEEAAA /* MultiGPUMig.defs */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.mig; path = MultiGPUMig.defs; sourceTree = ""; }; DD64DF0409DCC5E000668B3A /* gutil_text.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = gutil_text.cpp; sourceTree = ""; }; DD64E7D507D89DB800B176C8 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = SOURCE_ROOT; }; @@ -1085,8 +1089,6 @@ DD76BF9217CB45870075936D /* opencl_boinc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opencl_boinc.h; sourceTree = ""; }; DD7748980A356C880025D05E /* SetUpSecurity */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = SetUpSecurity; sourceTree = BUILT_PRODUCTS_DIR; }; DD7748B40A356D6C0025D05E /* SetupSecurity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SetupSecurity.cpp; path = ../clientgui/mac/SetupSecurity.cpp; sourceTree = SOURCE_ROOT; }; - DD77A71612F2D1C9006B82E9 /* MacBitmapComboBox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MacBitmapComboBox.cpp; path = ../clientgui/mac/MacBitmapComboBox.cpp; sourceTree = ""; }; - DD77A71712F2D1C9006B82E9 /* MacBitmapComboBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MacBitmapComboBox.h; path = ../clientgui/mac/MacBitmapComboBox.h; sourceTree = ""; }; DD7A5D8112EEBDF30006268E /* sg_TaskCommandPopup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sg_TaskCommandPopup.h; path = ../clientgui/sg_TaskCommandPopup.h; sourceTree = SOURCE_ROOT; }; DD7A5D8212EEBE5E0006268E /* sg_TaskCommandPopup.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = sg_TaskCommandPopup.cpp; path = ../clientgui/sg_TaskCommandPopup.cpp; sourceTree = SOURCE_ROOT; }; DD7A5D9D12EEBFC20006268E /* sg_ProjectWebSitesPopup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sg_ProjectWebSitesPopup.h; path = ../clientgui/sg_ProjectWebSitesPopup.h; sourceTree = SOURCE_ROOT; }; @@ -1434,6 +1436,7 @@ buildActionMask = 2147483647; files = ( DD3E15310A774397007E0084 /* Carbon.framework in Frameworks */, + DD43475826FB397A00B8880F /* QuartzCore.framework in Frameworks */, DD3E15320A774397007E0084 /* IOKit.framework in Frameworks */, DD3E15330A774397007E0084 /* Security.framework in Frameworks */, DD21B49D0D750FC600AFFEE5 /* AppKit.framework in Frameworks */, @@ -1675,6 +1678,7 @@ DD89165E0F3B1BC200DE5B1C /* OpenGL.framework */, DD0BB7A11F62B105000151B2 /* IOSurface.framework */, DD000D7324D0244C0083DE77 /* SystemConfiguration.framework */, + DD43474F26FB378100B8880F /* QuartzCore.framework */, ); name = "External Frameworks and Libraries"; sourceTree = SOURCE_ROOT; @@ -2203,9 +2207,9 @@ DD30446A0864332D00D73756 /* config.h */, DD1F0ACD0822069E00AFC5FA /* MacGUI.pch */, DD1907FA17D1A2F100596F03 /* MacAccessiblity.mm */, - DD77A71612F2D1C9006B82E9 /* MacBitmapComboBox.cpp */, - DD77A71712F2D1C9006B82E9 /* MacBitmapComboBox.h */, DDA9D3BB09189A8C0060E7A7 /* Mac_GUI.cpp */, + DD64A774270329AA005FE681 /* MacBitmapComboBox.cpp */, + DD64A775270329AA005FE681 /* MacBitmapComboBox.h */, DDB295C8185B0DBD00B9F842 /* MacNotification.mm */, DDA12AAD0A369C5800FBDD12 /* SecurityUtility.cpp */, DD7748B40A356D6C0025D05E /* SetupSecurity.cpp */, @@ -3179,7 +3183,7 @@ DDB295C9185B0DBD00B9F842 /* MacNotification.mm in Sources */, DD7A5D9F12EEBFC20006268E /* sg_ProjectWebSitesPopup.cpp in Sources */, DD7A5DAB12EEC37B0006268E /* sg_ProjectCommandPopup.cpp in Sources */, - DD77A71812F2D1C9006B82E9 /* MacBitmapComboBox.cpp in Sources */, + DD64A7782703379F005FE681 /* MacBitmapComboBox.cpp in Sources */, DDAEB54012F8295800EDEDBE /* LogBOINC.cpp in Sources */, DD2B6C8013149177005D6F3E /* procinfo.cpp in Sources */, DD80632D131FAA4100DC8971 /* sg_BoincSimpleFrame.cpp in Sources */, @@ -3949,13 +3953,13 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = ../clientgui/mac/MacGUI.pch; HEADER_SEARCH_PATHS = ( - "../../wxWidgets-3.1.0/include", - "../../wxWidgets-3.1.0/build/osx/setup/cocoa/include", + "../../wxWidgets-3.1.5/include", + "../../wxWidgets-3.1.5/build/osx/setup/cocoa/include", ../clientgui, "../lib/**", ); INFOPLIST_FILE = Info.plist; - LIBRARY_SEARCH_PATHS = "../../wxWidgets-3.1.0/build/osx/build/Debug"; + LIBRARY_SEARCH_PATHS = "../../wxWidgets-3.1.5/build/osx/build/Debug"; OTHER_CFLAGS = ( "-DHAVE_CONFIG_H", "-D_FILE_OFFSET_BITS=64", @@ -4026,13 +4030,13 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = ../clientgui/mac/MacGUI.pch; HEADER_SEARCH_PATHS = ( - "../../wxWidgets-3.1.0/include", - "../../wxWidgets-3.1.0/build/osx/setup/cocoa/include", + "../../wxWidgets-3.1.5/include", + "../../wxWidgets-3.1.5/build/osx/setup/cocoa/include", ../clientgui, "../lib/**", ); INFOPLIST_FILE = Info.plist; - LIBRARY_SEARCH_PATHS = "../../wxWidgets-3.1.0/build/osx/build/Release"; + LIBRARY_SEARCH_PATHS = "../../wxWidgets-3.1.5/build/osx/build/Release"; OTHER_CFLAGS = ( "-DHAVE_CONFIG_H", "-D_FILE_OFFSET_BITS=64", diff --git a/mac_build/buildWxMac.sh b/mac_build/buildWxMac.sh index ec0cfba46f..ac6c6bd401 100644 --- a/mac_build/buildWxMac.sh +++ b/mac_build/buildWxMac.sh @@ -41,6 +41,7 @@ # Add patches to build with Xcode 11 and OS 10.15 sdk 3/1/20 # Updated 8/4/20 TO build Apple Silicon / arm64 and x86_64 Universal binary # Updated 5/18/21 for compatibility with zsh +# Updated 9/30/21 for wxCocoa 3.1.5 # ## This script requires OS 10.6 or later ## @@ -71,196 +72,118 @@ fi echo "" -# Patch wxWidgets-3.1.0/src/png/pngstruct.h -if [ ! -f src/png/pngstruct.h.orig ]; then - cat >> /tmp/pngstruct_h_diff << ENDOFFILE ---- pngstruct.h 2013-11-11 05:10:39.000000000 -0800 -+++ pngstruct_patched.h 2014-02-18 01:31:53.000000000 -0800 -@@ -33,6 +33,13 @@ - # undef const - #endif +## Add our custom method SetItemBitmap(unsigned int n, const wxBitmap& bitmap) +## to wxChoice. We use this to create our own custom CBOINCBitmapComboBox +## which uses native Mac controls instead of wxBitmapComboBox which does not. +## By using only native Mac controls in BOINC SImple View, MacOS will provide +## accessibility support automatically. +## +## We patch 4 files to accomplish this. +## +# Patch wxWidgets-3.1.5/include/wx/osx/choice.h +if [ ! -f include/wx/osx/choice.h.orig ]; then + cat >> /tmp/choice_h_diff << ENDOFFILE +--- include/wx/osx/choice.h 2021-04-12 15:23:58.000000000 -0700 ++++ include/wx/osx/choice_patched.h 2021-09-29 23:47:19.000000000 -0700 +@@ -73,6 +73,7 @@ + virtual int FindString(const wxString& s, bool bCase = false) const wxOVERRIDE; + virtual wxString GetString(unsigned int n) const wxOVERRIDE; + virtual void SetString(unsigned int pos, const wxString& s) wxOVERRIDE; ++ void SetItemBitmap(unsigned int n, const wxBitmap& bitmap); + // osx specific event handling common for all osx-ports + + virtual bool OSXHandleClicked(double timestampsec) wxOVERRIDE; +ENDOFFILE + patch -bfi /tmp/choice_h_diff include/wx/osx/choice.h + rm -f /tmp/choice_h_diff +else + echo "include/wx/osx/choice.h already patched" +fi -+/* BOINC workaround patch to fix crashes on OS 10.5 or 10.6 when -+ * built with OS 10.7 SDK or later. -+ */ -+#undef ZLIB_VERNUM -+#define ZLIB_VERNUM 0x1230 -+/* End of BOINC workaround patch */ +echo "" + +# Patch wxWidgets-3.1.5/src/osx/choice_osx.cpp +if [ ! -f src/osx/choice_osx.cpp.orig ]; then + cat >> /tmp/choice_osx_cpp_diff << ENDOFFILE +--- src/osx/choice_osx.cpp 2021-04-12 15:23:58.000000000 -0700 ++++ src/osx/choice_osx_patched.cpp 2021-09-30 00:26:06.000000000 -0700 +@@ -212,6 +212,13 @@ + return m_strings[n] ; + } + ++void wxChoice::SetItemBitmap(unsigned int n, const wxBitmap& bitmap) ++{ ++ wxCHECK_RET( IsValid(n), wxT("wxChoice::SetItemBitmap(): invalid index") ); + - /* zlib.h has mediocre z_const use before 1.2.6, this stuff is for compatibility - * with older builds. - */ -ENDOFFILE - patch -bfi /tmp/pngstruct_h_diff src/png/pngstruct.h - rm -f /tmp/pngstruct_h_diff -else - echo "src/png/pngstruct.h already patched" -fi - -echo "" - -# Patch src/osx/webview_webkit.mm -if [ ! -f src/osx/webview_webkit.mm.orig ]; then - cat >> /tmp/webview_webkit_mm_diff << ENDOFFILE ---- webview_webkit.mm 2016-02-28 13:33:37.000000000 -0800 -+++ webview_webkit_patched.mm 2020-02-29 03:04:08.000000000 -0800 -@@ -32,8 +32,8 @@ - #include - #else - #include --#include --#include -+//#include -+//#include - #endif - #include - -ENDOFFILE - patch -bfi /tmp/webview_webkit_mm_diff src/osx/webview_webkit.mm - rm -f /tmp/webview_webkit_mm_diff -else - echo "src/osx/webview_webkit.mm already patched" -fi - -echo "" - -# Patch src/html/htmlctrl/webkit/webkit.mm -if [ ! -f src/html/htmlctrl/webkit/webkit.mm.orig ]; then - cat >> /tmp/webkit_mm_diff << ENDOFFILE ---- /Volumes/Dev/BOINC_Dev/wxWidgets-3.1.0/src/html/htmlctrl/webkit/webkit.mm 2016-02-28 13:33:37.000000000 -0800 -+++ /Volumes/Dev/BOINC_Dev/wxWidgets-3.1.0/src/html/htmlctrl/webkit/webkit_patched.mm 2020-02-29 03:04:07.000000000 -0800 -@@ -21,8 +21,8 @@ - #include "wx/osx/private.h" - - #include --#include --#include -+//#include -+//#include - - #include "wx/html/webkit.h" - -ENDOFFILE - patch -bfi /tmp/webkit_mm_diff src/html/htmlctrl/webkit/webkit.mm - rm -f /tmp/webkit_mm_diff -else - echo "src/html/htmlctrl/webkit/webkit.mm already patched" -fi - -echo "" - -# Patch build/osx/setup/cocoa/include/wx/setup.h -if [ ! -f build/osx/setup/cocoa/include/wx/setup.h.orig ]; then - -# First run wxWidget's built-in script to copy setup.h into place - cd build/osx || return 1 - ../../distrib/mac/pbsetup-sh ../../src ../../build/osx/setup/cocoa - cd ../.. || return 1 - - cat >> /tmp/setup_h_diff << ENDOFFILE ---- setup.h 2017-10-25 02:22:00.000000000 -0700 -+++ setup_patched.h 2017-10-25 02:32:21.000000000 -0700 -@@ -343,7 +343,10 @@ - // Recommended setting: 1 if you use the standard streams anyhow and so - // dependency on the standard streams library is not a - // problem --#define wxUSE_STD_IOSTREAM wxUSE_STD_DEFAULT -+/* BOINC workaround patch to fix crashes on OS 10.5 when built -+ * with OS 10.7 SDK or later. -+ */ -+#define wxUSE_STD_IOSTREAM 0 // wxUSE_STD_DEFAULT - - // Enable minimal interoperability with the standard C++ string class if 1. - // "Minimal" means that wxString can be constructed from std::string or -@@ -668,7 +671,7 @@ - // Default is 1. - // - // Recommended setting: 1 --#define wxUSE_MEDIACTRL 1 -+#define wxUSE_MEDIACTRL 0 // 1 - - // Use wxWidget's XRC XML-based resource system. Recommended. - // -ENDOFFILE - patch -bfi /tmp/setup_h_diff build/osx/setup/cocoa/include/wx/setup.h - rm -f /tmp/setup_h_diff -else - echo "build/osx/setup/cocoa/include/wx/setup.h already patched" -fi - -# Patch src/osx/window_osx.cpp -if [ ! -f src/osx/window_osx.cpp.orig ]; then - cat >> /tmp/window_osx_cpp_diff << ENDOFFILE ---- window_osx.cpp 2016-02-28 13:33:37.000000000 -0800 -+++ window_osx_patched.cpp 2018-03-20 01:17:35.000000000 -0700 -@@ -353,7 +353,8 @@ - if ( !m_hasFont ) - DoSetWindowVariant( m_windowVariant ); - -- if ( !m_label.empty() ) -+// Fix wxWidgets 3.1.0 bug drawing wxStaticBox with empty label (fixed in wxWidgets 3.1.1) -+// if ( !m_label.empty() ) - GetPeer()->SetLabel( wxStripMenuCodes(m_label, wxStrip_Mnemonics), GetFont().GetEncoding() ) ; - - // for controls we want to use best size for wxDefaultSize params ) -ENDOFFILE - patch -bfi /tmp/window_osx_cpp_diff src/osx/window_osx.cpp - rm -f /tmp/window_osx_cpp_diff -else - echo "src/osx/window_osx.cpp already patched" -fi - -# Patch src/osx/carbon/utilscocoa.mm -if [ ! -f src/osx/carbon/utilscocoa.mm.orig ]; then - cat >> /tmp/utilscocoa_mm_diff << ENDOFFILE ---- utilscocoa.mm 2016-02-28 13:33:37.000000000 -0800 -+++ utilscocoa-patched.mm 2018-06-03 01:31:43.000000000 -0700 -@@ -476,7 +476,10 @@ - - double wxOSXGetMainScreenContentScaleFactor() - { -- return [[NSScreen mainScreen] backingScaleFactor]; -+ if ([[NSScreen mainScreen] respondsToSelector:@selector(backingScaleFactor)]) -+ return [[NSScreen mainScreen] backingScaleFactor]; -+ else -+ return 1.0; - } - - CGImageRef wxOSXCreateCGImageFromNSImage( WX_NSImage nsimage, double *scaleptr ) -ENDOFFILE - patch -bfi /tmp/utilscocoa_mm_diff src/osx/carbon/utilscocoa.mm - rm -f /tmp/utilscocoa_mm_diff -else - echo "src/osx/carbon/utilscocoa.mm already patched" -fi - -# Patch src/osx/cocoa/window.mm -if [ ! -f src/osx/cocoa/window.mm.orig ]; then - cat >> /tmp/window_mm_diff << ENDOFFILE ---- window.mm 2016-02-28 13:33:37.000000000 -0800 -+++ window-patched.mm 2018-06-08 01:28:01.000000000 -0700 -@@ -1869,7 +1869,10 @@ - double wxWidgetCocoaImpl::GetContentScaleFactor() const - { - NSWindow* tlw = [m_osxView window]; -- return [tlw backingScaleFactor]; -+ if ([tlw respondsToSelector:@selector(backingScaleFactor)]) -+ return [tlw backingScaleFactor]; -+ else -+ return 1.0; - } - ++ dynamic_cast(GetPeer())->SetItemBitmap(n, bitmap); ++} ++ + // ---------------------------------------------------------------------------- + // client data // ---------------------------------------------------------------------------- ENDOFFILE - patch -bfi /tmp/window_mm_diff src/osx/cocoa/window.mm - rm -f /tmp/window_mm_diff + patch -bfi /tmp/choice_osx_cpp_diff src/osx/choice_osx.cpp + rm -f /tmp/choice_osx_cpp_diff else - echo "src/osx/cocoa/window.mm already patched" + echo "src/osx/choice_osx.cpp already patched" fi +echo "" + +# Patch wxWidgets-3.1.5/include/wx/osx/core/private.h +if [ ! -f include/wx/osx/core/private.h.orig ]; then + cat >> /tmp/private_h_cpp_diff << ENDOFFILE +--- include/wx/osx/core/private.h 2021-04-12 15:23:58.000000000 -0700 ++++ include/wx/osx/core/private_patched.h 2021-09-30 01:11:28.000000000 -0700 +@@ -809,6 +809,8 @@ + } + + virtual void SetItem(int pos, const wxString& item) = 0; ++ ++ virtual void SetItemBitmap(unsigned int n, const wxBitmap& bitmap) = 0; + }; + + +ENDOFFILE + patch -bfi /tmp/private_h_cpp_diff include/wx/osx/core/private.h + rm -f /tmp/private_h_cpp_diff +else + echo "include/wx/osx/core/private.h already patched" +fi echo "" +# Patch wxWidgets-3.1.5/src/osx/cocoa/choice.mm +if [ ! -f src/osx/cocoa/choice.mm.orig ]; then + cat >> /tmp/choice_mm_diff << ENDOFFILE +--- src/osx/cocoa/choice.mm 2021-09-28 22:52:32.000000000 -0700 ++++ src/osx/cocoa/choice_patched.mm 2021-09-30 01:08:32.000000000 -0700 +@@ -130,6 +130,12 @@ + m_popUpMenu->FindItemByPosition( pos )->SetItemLabel( s ) ; + } + ++ void SetItemBitmap(unsigned int n, const wxBitmap& bitmap) ++ { ++ if ( bitmap.Ok() ) ++ m_popUpMenu->FindItemByPosition( n )->SetBitmap( bitmap ); ; ++ } ++ + private: + wxMenu* m_popUpMenu; + }; +ENDOFFILE + patch -bfi /tmp/choice_mm_diff src/osx/cocoa/choice.mm + rm -f /tmp/choice_mm_diff +else + echo "src/osx/cocoa/choice.mm already patched" +fi + +echo "" + +##*********************************************************** +##*************** End of patches section ******************** +##*********************************************************** + doclean="" stdout_target="/dev/stdout" lprefix="" @@ -298,6 +221,11 @@ fi retval=0 alreadyBuilt=0 +# First run wxWidget's built-in script to copy setup.h into place +cd build/osx || return 1 +../../distrib/mac/pbsetup-sh ../../src ../../build/osx/setup/cocoa +cd ../.. || return 1 + if [ "${doclean}" != "clean" ] && [ -f "${libPathRel}/libwx_osx_cocoa_static.a" ]; then GCCPATH=`xcrun -find gcc` if [ $? -ne 0 ]; then @@ -337,7 +265,7 @@ else ## $(ARCHS_STANDARD) builds Universal Binary (x86_64 & arm64) library under ## Xcode versions that can, otherwise it builds only the X86_64 library. set -o pipefail - xcodebuild -project build/osx/wxcocoa.xcodeproj -target static -configuration Release $doclean build ARCHS="\$(ARCHS_STANDARD)" ONLY_ACTIVE_ARCH="NO" MACOSX_DEPLOYMENT_TARGET="10.7" CLANG_CXX_LIBRARY="libc++" OTHER_CFLAGS="-Wall -Wundef -fno-strict-aliasing -fno-common -DWK_API_ENABLED=0 -DHAVE_LOCALTIME_R=1 -DHAVE_GMTIME_R=1 -DwxUSE_UNICODE=1 -DwxDEBUG_LEVEL=0 -DPNG_ARM_NEON_OPT=0 -DNDEBUG -fvisibility=hidden -include unistd.h" OTHER_CPLUSPLUSFLAGS="-Wall -Wundef -fno-strict-aliasing -fno-common -DWK_API_ENABLED=0 -DHAVE_LOCALTIME_R=1 -DHAVE_GMTIME_R=1 -DwxUSE_UNICODE=1 -DwxDEBUG_LEVEL=0 -DPNG_ARM_NEON_OPT=0 -DNDEBUG -fvisibility=hidden -fvisibility-inlines-hidden" GCC_PREPROCESSOR_DEFINITIONS="WXBUILDING __WXOSX_COCOA__ __WX__ wxUSE_BASE=1 _FILE_OFFSET_BITS=64 _LARGE_FILES MACOS_CLASSIC __WXMAC_XCODE__=1 SCI_LEXER WX_PRECOMP=1 wxUSE_UNICODE_UTF8=1 wxUSE_UNICODE_WCHAR=0 __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES=1" | $beautifier; retval=$? + xcodebuild -project build/osx/wxcocoa.xcodeproj -target static -configuration Release $doclean build ARCHS="\$(ARCHS_STANDARD)" ONLY_ACTIVE_ARCH="NO" MACOSX_DEPLOYMENT_TARGET="10.9" GCC_C_LANGUAE_STANDARD="compiler-default" CLANG_CXX_LANGUAGE_SANDARD="c++0x" CLANG_CXX_LIBRARY="libc++" OTHER_CFLAGS="-Wall -Wundef -fno-strict-aliasing -fno-common -DHAVE_LOCALTIME_R=1 -DHAVE_GMTIME_R=1 -DwxUSE_UNICODE=1 -DwxDEBUG_LEVEL=0 -DPNG_ARM_NEON_OPT=0 -DNDEBUG -fvisibility=hidden -include unistd.h" OTHER_CPLUSPLUSFLAGS="-Wall -Wundef -fno-strict-aliasing -fno-common -DHAVE_LOCALTIME_R=1 -DHAVE_GMTIME_R=1 -DwxUSE_UNICODE=1 -DwxDEBUG_LEVEL=0 -DPNG_ARM_NEON_OPT=0 -DNDEBUG -fvisibility=hidden -fvisibility-inlines-hidden" GCC_PREPROCESSOR_DEFINITIONS="WXBUILDING __WXOSX_COCOA__ __WX__ wxUSE_BASE=1 _FILE_OFFSET_BITS=64 _LARGE_FILES MACOS_CLASSIC __WXMAC_XCODE__=1 SCI_LEXER NO_CXX11_REGEX WX_PRECOMP=1 wxUSE_UNICODE_UTF8=1 wxUSE_UNICODE_WCHAR=0 __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES=1" | $beautifier; retval=$? if [ ${retval} -ne 0 ]; then return 1; fi if [ "x${lprefix}" != "x" ]; then # copy library and headers to $lprefix @@ -393,7 +321,7 @@ else ## $(ARCHS_STANDARD) builds Universal Binary (x86_64 & arm64) library under ## Xcode versions that can, otherwise it builds only the X86_64 library. set -o pipefail - xcodebuild -project build/osx/wxcocoa.xcodeproj -target static -configuration Debug build ARCHS="\$(ARCHS_STANDARD)" ONLY_ACTIVE_ARCH="NO" MACOSX_DEPLOYMENT_TARGET="10.7" CLANG_CXX_LIBRARY="libc++" OTHER_CFLAGS="-Wall -Wundef -fno-strict-aliasing -fno-common -DWK_API_ENABLED=0 -DHAVE_LOCALTIME_R=1 -DHAVE_GMTIME_R=1 -DwxUSE_UNICODE=1 -DPNG_ARM_NEON_OPT=0 -DDEBUG -fvisibility=hidden -include unistd.h" OTHER_CPLUSPLUSFLAGS="-Wall -Wundef -fno-strict-aliasing -fno-common -DWK_API_ENABLED=0 -DHAVE_LOCALTIME_R=1 -DHAVE_GMTIME_R=1 -DwxUSE_UNICODE=1 -DPNG_ARM_NEON_OPT=0 -DDEBUG -fvisibility=hidden -fvisibility-inlines-hidden" GCC_PREPROCESSOR_DEFINITIONS="WXBUILDING __WXOSX_COCOA__ __WX__ wxUSE_BASE=1 _FILE_OFFSET_BITS=64 _LARGE_FILES MACOS_CLASSIC __WXMAC_XCODE__=1 SCI_LEXER WX_PRECOMP=1 wxUSE_UNICODE_UTF8=1 wxUSE_UNICODE_WCHAR=0 __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES=1" | $beautifier; retval=$? + xcodebuild -project build/osx/wxcocoa.xcodeproj -target static -configuration Debug build ARCHS="\$(ARCHS_STANDARD)" ONLY_ACTIVE_ARCH="NO" MACOSX_DEPLOYMENT_TARGET="10.9" GCC_C_LANGUAE_STANDARD="compiler-default" CLANG_CXX_LANGUAGE_SANDARD="c++0x" CLANG_CXX_LIBRARY="libc++" OTHER_CFLAGS="-Wall -Wundef -fno-strict-aliasing -fno-common -DHAVE_LOCALTIME_R=1 -DHAVE_GMTIME_R=1 -DwxUSE_UNICODE=1 -DPNG_ARM_NEON_OPT=0 -DDEBUG -fvisibility=hidden -include unistd.h" OTHER_CPLUSPLUSFLAGS="-Wall -Wundef -fno-strict-aliasing -fno-common -DHAVE_LOCALTIME_R=1 -DHAVE_GMTIME_R=1 -DwxUSE_UNICODE=1 -DPNG_ARM_NEON_OPT=0 -DDEBUG -fvisibility=hidden -fvisibility-inlines-hidden" GCC_PREPROCESSOR_DEFINITIONS="WXBUILDING __WXOSX_COCOA__ __WX__ wxUSE_BASE=1 _FILE_OFFSET_BITS=64 _LARGE_FILES MACOS_CLASSIC __WXMAC_XCODE__=1 SCI_LEXER NO_CXX11_REGEX WX_PRECOMP=1 wxUSE_UNICODE_UTF8=1 wxUSE_UNICODE_WCHAR=0 __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES=1" | $beautifier; retval=$? if [ ${retval} -ne 0 ]; then return 1; fi if [ "x${lprefix}" != "x" ]; then # copy debug library to $PREFIX diff --git a/mac_build/dependencyNames.sh b/mac_build/dependencyNames.sh index 3e8829ac23..c326a7ce6c 100644 --- a/mac_build/dependencyNames.sh +++ b/mac_build/dependencyNames.sh @@ -49,9 +49,9 @@ curlDirName="curl-7.73.0" curlFileName="curl-7.73.0.tar.gz" curlURL="https://curl.haxx.se/download/curl-7.73.0.tar.gz" -wxWidgetsDirName="wxWidgets-3.1.0" -wxWidgetsFileName="wxWidgets-3.1.0.tar.bz2" -wxWidgetsURL="https://github.com/wxWidgets/wxWidgets/releases/download/v3.1.0/wxWidgets-3.1.0.tar.bz2" +wxWidgetsDirName="wxWidgets-3.1.5" +wxWidgetsFileName="wxWidgets-3.1.5.tar.bz2" +wxWidgetsURL="https://github.com/wxWidgets/wxWidgets/releases/download/v3.1.5/wxWidgets-3.1.5.tar.bz2" freetypeDirName="freetype-2.9" freetypeFileName="freetype-2.9.tar.bz2" From 83afef6cc21764bec6ee3b19502913114aad6e48 Mon Sep 17 00:00:00 2001 From: Charlie Fenton Date: Thu, 30 Sep 2021 23:47:09 -0700 Subject: [PATCH 06/16] Mac: changes for wxWidgets 3.1.5 that affect only macintosh-specific code --- clientgui/BOINCTaskBar.cpp | 11 ++++++----- clientgui/mac/MacAccessiblity.mm | 18 +++++++++--------- clientgui/mac/MacBitmapComboBox.h | 7 +++++++ 3 files changed, 22 insertions(+), 14 deletions(-) diff --git a/clientgui/BOINCTaskBar.cpp b/clientgui/BOINCTaskBar.cpp index 255766c61b..a5a006b14e 100644 --- a/clientgui/BOINCTaskBar.cpp +++ b/clientgui/BOINCTaskBar.cpp @@ -411,7 +411,7 @@ wxMenu *CTaskBarIcon::CreatePopupMenu() { // Rather than using an entire separate icon, overlay the Dock icon with a badge // so we don't need additional Snooze and Disconnected icons for branding. bool CTaskBarIcon::SetIcon(const wxIcon& icon, const wxString& ) { - wxIcon macIcon; + wxImage macIcon; bool result; int err = noErr; int w, h, x, y; @@ -425,18 +425,19 @@ bool CTaskBarIcon::SetIcon(const wxIcon& icon, const wxString& ) { return true; m_iconCurrentIcon = icon; - + if (m_iconTaskBarDisconnected.IsSameAs(icon)) - macIcon = macdisconnectbadge; + macIcon = wxImage(macdisconnectbadge); else if (m_iconTaskBarSnooze.IsSameAs(icon)) - macIcon = macsnoozebadge; + macIcon = wxImage(macsnoozebadge); else { err = SetDockBadge(NULL); return true; } - // Convert the wxIcon into a wxBitmap so we can perform some + // Convert the wxImage into a wxBitmap so we can perform some // wxBitmap operations with it + macIcon.InitAlpha(); wxBitmap bmp( macIcon ) ; // wxMac's XMP image format always uses 32-bit pixels but allows only diff --git a/clientgui/mac/MacAccessiblity.mm b/clientgui/mac/MacAccessiblity.mm index 545ee1641a..b83cc3ea63 100644 --- a/clientgui/mac/MacAccessiblity.mm +++ b/clientgui/mac/MacAccessiblity.mm @@ -247,25 +247,25 @@ static void wxRectToNSRect(wxRect &wxr, NSRect &nsr) { } if (isCurrentSortCol) { if (BOINCView->m_bReverseSort) { - s.Printf(_("(current sort column %d of %d; descending order)"), col+1, numCols); + s.Printf(_("(current sort column %d of %d; descending order)"), (int)col+1, (int)numCols); } else { - s.Printf(_("(current sort column %d of %d; ascending order)"), col+1, numCols); + s.Printf(_("(current sort column %d of %d; ascending order)"), (int)col+1, (int)numCols); } } else { - s.Printf(_("(column %d of %d)"), col+1, numCols); + s.Printf(_("(column %d of %d)"), (int)col+1, (int)numCols); } } else { if (pList->GetItemState(row, wxLIST_STATE_SELECTED) & wxLIST_STATE_SELECTED) { if (col == 0) { - s.Printf(_("(selected row %d of %d)"), row+1, pList->GetItemCount()); + s.Printf(_("(selected row %d of %d)"), (int)row+1, (int)(pList->GetItemCount())); } else { - s.Printf(_("(selected row %d)"), row+1); + s.Printf(_("(selected row %d)"), (int)row+1); } } else { if (col == 0) { // Row is not selected - s.Printf(_("(row %d of %d)"), row+1, pList->GetItemCount()); + s.Printf(_("(row %d of %d)"), (int)row+1, (int)(pList->GetItemCount())); } else { - s.Printf(_("(row %d)"), row+1); + s.Printf(_("(row %d)"), (int)row+1); } } } @@ -587,7 +587,7 @@ static void wxRectToNSRect(wxRect &wxr, NSRect &nsr) { } else if ([attribute isEqualToString:NSAccessibilityDescriptionAttribute]) { wxString s; - s.Printf(_("(row %d)"), row+1); + s.Printf(_("(row %d)"), (int)row+1); NSString *desc = [NSString stringWithUTF8String:(char *)(s.utf8_str().data())]; return desc; @@ -618,7 +618,7 @@ static void wxRectToNSRect(wxRect &wxr, NSRect &nsr) { } else if ([attribute isEqualToString:NSAccessibilityTitleAttribute]) { wxString s; - s.Printf(_("row %d"), row+1); + s.Printf(_("row %d"), (int)row+1); NSString *title = [NSString stringWithUTF8String:(char *)(s.utf8_str().data())]; return title; diff --git a/clientgui/mac/MacBitmapComboBox.h b/clientgui/mac/MacBitmapComboBox.h index 14bf318786..a466729cdf 100644 --- a/clientgui/mac/MacBitmapComboBox.h +++ b/clientgui/mac/MacBitmapComboBox.h @@ -15,6 +15,13 @@ // You should have received a copy of the GNU Lesser General Public License // along with BOINC. If not, see . +// On Macintosh we use only native controls in Simple View so the macOS +// automatically provides accessibility support. Though wxBitmapComboBox +// does not use MacOS native controls, wxChoice uses NSPopUpButton, so +// we create our own BitmapComboBox on Macintosh based on wxChoice, which +// we have hacked to allow adding bitmaps. +// + #ifndef __MACBITMAPCOMBOBOX__ #define __MACBITMAPCOMBOBOX__ From 05a9ddab3bfc2dd91c112cebeb1492c339b9f68b Mon Sep 17 00:00:00 2001 From: Charlie Fenton Date: Thu, 30 Sep 2021 23:49:41 -0700 Subject: [PATCH 07/16] Backward-compatible fixes to use of sizers for wxWidgets 3.1.5 --- clientgui/DlgExclusiveApps.cpp | 9 +++------ clientgui/sg_BoincSimpleFrame.cpp | 7 ++++--- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/clientgui/DlgExclusiveApps.cpp b/clientgui/DlgExclusiveApps.cpp index f31d8aff13..9586a9b048 100644 --- a/clientgui/DlgExclusiveApps.cpp +++ b/clientgui/DlgExclusiveApps.cpp @@ -169,13 +169,10 @@ CDlgExclusiveApps::CDlgExclusiveApps(wxWindow* parent) : ReadPreferenceSettings(); -// CAF SetSizerAndFit(dialogSizer); - Layout(); - dialogSizer->Fit( this ); - SetSizer( dialogSizer ); + Layout(); + SetSizerAndFit(dialogSizer); -// CAF Fit(); - Centre(); + Centre(); // Center the dialog over the main window } /* destructor */ diff --git a/clientgui/sg_BoincSimpleFrame.cpp b/clientgui/sg_BoincSimpleFrame.cpp index 7653afc2d0..e741ce3b2c 100644 --- a/clientgui/sg_BoincSimpleFrame.cpp +++ b/clientgui/sg_BoincSimpleFrame.cpp @@ -1000,10 +1000,9 @@ CSimpleGUIPanel::CSimpleGUIPanel(wxWindow* parent) : mainSizer->Add( buttonsSizer, 0, wxLEFT | wxRIGHT | wxEXPAND, 2 * SIDEMARGINS ); mainSizer->AddSpacer(ADJUSTFORYDPI(10)); - SetSizer(mainSizer); Layout(); - - mainSizer->Fit(GetParent()); + SetSizerAndFit(mainSizer); + parent->SetSizerAndFit(mainSizer); SetBackgroundBitmap(); @@ -1031,6 +1030,8 @@ CSimpleGUIPanel::~CSimpleGUIPanel() delete checkForNewNoticesTimer; m_bmpBg = wxNullBitmap; // Deletes old bitmap via reference counting + GetParent()->SetSizer(NULL, false); // Avoid trying to delete mainSizer twice + wxLogTrace(wxT("Function Start/End"), wxT("CSimpleGUIPanel::CSimpleGUIPanel - Destructor Function End")); } From 56ac9416fbdba16aa92ded7b5f505dd865f525ac Mon Sep 17 00:00:00 2001 From: Charlie Fenton Date: Thu, 30 Sep 2021 23:52:51 -0700 Subject: [PATCH 08/16] Compatibility fix for wxWidgets 3.1.5 wxBitmapCombo Box, which requires all bitmaps in a combo box to be the same size. --- clientgui/sg_ProjectPanel.cpp | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/clientgui/sg_ProjectPanel.cpp b/clientgui/sg_ProjectPanel.cpp index f7cd48076c..1e5f3ca5cf 100644 --- a/clientgui/sg_ProjectPanel.cpp +++ b/clientgui/sg_ProjectPanel.cpp @@ -551,30 +551,28 @@ wxBitmap* CSimpleProjectPanel::GetProjectSpecificBitmap(char* project_url) { wxBitmap* projectBM; wxString strIconPath = wxString(defaultIcnPath,wxConvUTF8); if (wxFile::Exists(strIconPath)) { + // wxBitmapComboBox requires all its bitmaps to be the same size + // Our "project icon" bitmaps should all be 40 X 40 + wxImage img = wxImage(strIconPath, wxBITMAP_TYPE_ANY); + if (img.IsOk()) { #ifdef __WXMSW__ if ((GetXDPIScaling() > 1.05) || (GetYDPIScaling() > 1.05)) { - wxImage img = wxImage(strIconPath, wxBITMAP_TYPE_ANY); - if (img.IsOk()) { - img.Rescale((int) (img.GetWidth()*GetXDPIScaling()), - (int) (img.GetHeight()*GetYDPIScaling()), - wxIMAGE_QUALITY_BILINEAR - ); - projectBM = new wxBitmap(img); - if (projectBM->IsOk()) { - return projectBM; - } + img.Rescale((int) (40*GetXDPIScaling()), + (int) (40*GetYDPIScaling()), + wxIMAGE_QUALITY_BILINEAR + ); + } +#else + if ((img.GetHeight() != 40) || (img.GetWidth() == 40)) { + img.Rescale(40, 40, wxIMAGE_QUALITY_BILINEAR); } - } else #endif - { - projectBM = new wxBitmap(); - if ( projectBM->LoadFile(strIconPath, wxBITMAP_TYPE_ANY) ) { + projectBM = new wxBitmap(img); + if (projectBM->IsOk()) { return projectBM; } - } + } } } return pSkinSimple->GetProjectImage()->GetBitmap(); } - - From a2ab294b2127da63658f26bc0c17f9e643707e01 Mon Sep 17 00:00:00 2001 From: Charlie Fenton Date: Thu, 30 Sep 2021 23:53:33 -0700 Subject: [PATCH 09/16] Mac: update build instructions for wxWidgets 3.1.5 --- mac_build/HowToBuildBOINC_XCode.pdf | Bin 110914 -> 111274 bytes mac_build/HowToBuildBOINC_XCode.rtf | 77 +++++++++++++++------------- 2 files changed, 40 insertions(+), 37 deletions(-) diff --git a/mac_build/HowToBuildBOINC_XCode.pdf b/mac_build/HowToBuildBOINC_XCode.pdf index c86f54f473795a389a7432bc1989eabeb771319b..7c7ce60cb0380efb72e29d21bf926e3f72638f2d 100644 GIT binary patch delta 76081 zcmZs?V{o8N)UF%bwmGqF+jb_lojkE^I}@7|Pn?Nu+x8^c@3;3kyXsV(U)`(g?)7VR z^<7u59@vMfI)X}61tvW3rIN#6yrS0;z2en}2*q!7mpdZZ+D;wj$)|9q&d9}5Yul{; zf|$$nWVWA4W!no)K>RrPCR5P?0i9bfR8Par5MspjuH3I*DyTN9eyhlyx%gwoNvxH! zro)jFdp_*OU#GdU^l+YW{#gCgpj%fh(rT#tAR>UTFgdaDWi zt_n|iTn&hbF%ck+$IkK9;#xXeT57=4)N-u)u6tKfzK^`C6Z8u$c(HCoY?Lk9goEy;1qP(gVb92hG>Uq-s>H z!yt5Qx}A{JG}Rv~)7j7ssmkrtJ>o<81fa4y_3!Fi`Te~- zn|FLbwQl(oS|p=8;`cF`I-j|n3cvG5SY;IWEloFQt%xLVcqa9dTNCWcx_c_sd)oAQ z?)*g*a=sf0#f9SqJ*BDn|^p5wC;Wz(ZNnL>3YRffnjSuTbOkq?D4V{8CYY zMAaDbZqOHD3<{^Fo+*+f3KYvbP%T}I=QtH$4_ic$iCqkoc_Z!@%=5b(MOY8S5R9!b zYZh@PGnVDBw9B4kpP$M{TH)Ny?=EPv^z1E=$RR0~$J=YvbV^)j{>d#r@gVej6O1`M z=;_s{e)+5zeDt%(nF3n3Fl9OX~iOY)v9QL@=nm%9N{faSjgQ}AbVhK!U+^;7uej}Wd zE1wD@tzSz^J4p0G6SB58cIrQe`N1Lp<`1srPO(~{!X@nGt_2@Xe8jjFE6q~c-@&3J zVoN3B41fKUy#{P7d(WRdKip-s>EVmIE4|yZcWq{cs!nykN+~4v`(tE0wZZD<`O(%C z&?;6kCao~b3d}Uo#T|r%r<&@y7cvOI(VW`atXUsMr0_6woWt7CWScIlA)8A9XbKn# zSc%i^&6VbJhPUp{(-+%5WcyTx+9TIGL!e-Hs>Y+sEZ8Grv(k@mC#5-M(>5{@UW@ae zJ*H*Pmk@59S4#j!wh)bqu4)!S^lrLBbK!RKxFi}?V)bnl2ROaY9#vV!-KkVq^5hG% zoVbWuMNq_ne`MH@o;3;8_|_6|ZUSx+Vh~9g5kxrxjW&cvA$_e7tXo8(Sls*Kt#hwA z2kVLz3PaTTS&aG%m(w11GJLABzIOFogd^7`5w~0;EkNVzWAFKjX<{KqYohP#cJHcd zrTp9D-<{P=!+_^rAA>wUj^V`b&(d>UK4{SLo`K7xpC9Xso&*Ix`W>~GApYoW!Z2`Rr$7>Uu3p8mi6S)!Mc6bk>TO5Kv885 z{rIfnKjnSqlq;o0D48Q_4N{Q)$%T)YJfl_vMovHWJCrOTaSQrAa@aSbMwl*Gb)PcU z=QCj*twGeFs8sN`tl<~%)-UWItW@R5NmxOwO{!R(^d{rGR)32?CS{(mWO6aO1IiNp zS3&lvTfXXDDJ=dXEnx!%0!!aHp#TC#3gcUEkLAbtfnguW-gw5lc6F}c!05pIb< zep7{t(B!~Eh?|_-`F`cNKqUJ4+tClbjXQkBzBmtZ%D(+x1Z|Ns5P7DoSRqr-<5njZb5we zdfqj~2eJN(Cy@#_1R~h(rl{hmwc>2n5kH@6NccQw)zc8bl+1ET%wK(P{>&m~%B{rG z_r6g}i^To9X^+YG=O1ulm#95ZK zSr)p~oY?;cNP zY_zpp7st?mD}5vW^vKhi6X)7()W4Gmi9;?Xu5wXT%pl*IjC7UFC+T4RvL0z>!`+Z* zl^b+$gR?QRVn&2ycJuk8*k)MA(td&A*9r7Hnl|P6{VUXJgKMTOi#+7>v#h)`nwoWb zdj9Xnt7>uun@yjb1EEGt<}BnX&*@*j3O{IICrSaJK7j$&LU<%R%v}O;P#Fz=8Jfy4 zNdzKPbQ?3jb)O%em!{VIsX20Zzt^C~_;+PZWMc%$9Y(b9D>4!TsTA9ohS zQV97!S%a-TR>HW|8#8S&->M$NG^oA;nFtTy)QL5hL*8Q<5&|b(kGHO8>TO<~1%!ES zfRI#geh!_`l){Cy7^~qJ)?*)O54XA?Qp?UyVi-Rjq72Vc@$GWpdxzC49}fkZfdfb5 z69Zr6{gR5@{f00ncr~dcirY+NAz$YbDO*)$eIM1dP+!Ud66d|bT85K!@!|l*M%DvyULvt8)V5VMP*TxRbnEjtF9!OL4>*JLKT|Igeb2cen z8nT!+bvAbp_4wDLCK&hyS5M z*;CJ(>aaE^n{WWLILAXEd)1sItscS(aVdF@u>NdRoXpeT*oA2$XYq*ZBc0zjUXp*s zUza?u{aM&aRLo+zzZ>IKnq?nFg!n z!@vJh24iklMXSvQnE0`@YpjLy5MtV9{3Z&mg5gHR6XN3 z!Qku1v1-mDMb6XE9lP?l_<{5_UYcAzSZh$X6$O`LscC~lTtu;-5~l0|lmk-piI1^A zl-~@$BCYpQ3qnof5mw3FF|MfHLNP8)cSvWogj_JEK}h*dS9Rr2`5z9Kpt$>u=p#q> zVM%;a0&9%p{8>)6Q4~e&PzeHmF8_FGwWIF!VWvE=aIaj*^ zM)J{$?$2L7!h5@_6+4yx?6o+giaYuCDFr_b)sA(%2FQ5epOjmlM@VWvx0z*(C)RG!8iF5Pb=0)c^7c_ME3`?3Cwd z0f1URmVtKnfed}%ucpb#g;^RsqF#_}i9XVm#D#iqmj{3kHl6BTbtJdOn}qP6FF~Vj zB@`d+>kCU0B;j3$mDS7p$@D=M5r#xqOW#i!?7|`7Ws021nDX~*`>Q>>6(CcZ<<6l* z@`IAY3aj|WP|g2ZUr+|R%LLk!lWu%G5K94(ZQ^x`2`*GI;a?KFcJ%U3 zO;wpL68zqNH@k4-k0u8S7Kb*5IZOiVUJ>p9M*uF^hK^nRkTs&(CFUJqFryT}ZD zB7FT`McC$ZlAh5@a#`cC+ zwpy`XqE@)ox=&?e>$UB0zmf}%K#C!eNwZ{I^_tTaLU2))<5$Z6qPn&w`}-I8>BWXE z4bG8^@Ix1|ok>e4(wYPG1>4sunl43I6xse(Yf-h_V6E_nkSmNBHqQ^xf3W6>ZRFam zzfyY=TTk38HOcDUv0sLLa`RtEbE9RRbLYO7*lm1RopV>jFH;jA-J zch*or5}GeJN&b?8_<4sWZWV~G<%18VXG)U!1!9_IcD}B8$2YC~>21gYkf@5DdmYU? znlN};Zs>=Tpa~!v$NFNyB76U3$x%Rb^6vi`ttX$>ambU+N@$_3_U`OyXOLQCO$b^> zsG#zEux+yoaNnVy{kH>QA8^#F#O^?&m+u>5xvvb7B#o9I7f= zT?8Et#O$M+E-%k7xIN^_U%HFqmhLlK@E)vH2uP`i@Xqq;vkBWrw4KKdk$`dD|^J`xQG`Z z;JgI2%d@cSS2ec*;6u<3D|gGaKwu;e1958=mdyfh*vl&R!)|a|9f?fp&Ds?S(95P5 zOpF=^Is_gk|9YA>!bOib>+B6u;oxi%_v?sk!R=m7rbi32B$q(OzChHDlBbV_v^8=D z&xdwO%D1u*PXH}(ARl0-d^>eGh}2KU4)tkMjbVl!?`PM*^(V2Sl9AE3$LIC)=TlX{ z)7NL$g^#x{y3t;f(pf^b(%H(x+`uvcv#XE2`RZ{7QO_w0%y-W8_M@bvh{|)ipR_R>g&td}zRgV>9@`G3(Wz z_)GfseW-E3V7oWZp=9iHeE~c;1w09227@8ciBV@S57=yo3d@8QJ&x(MUOrnrj%Y@|7g7V6hmDS0BFc^BXoh!fvGZ;`z*<%;-Tfl5~1@%Os-?f z|GcWSie~l;C&Og_6jN9G_*@eQsOA>^usu4*x3$A5wnHbWZlr_Y>Z340=UAV$4Y<^T zI+)MI@u~7dzu!}&X}i3}Gc>4$4;y>BLST-Qiad!;dM~~R|C8lO8^29c^F%0Kf;5eI z3klF5(Za4W%p(SA95JWwn35t4UO|DONu`#wx)Ve7BJgVyj z5aI9$b)DRKf@?^gAqa7qCtsYRYYr%AxUq z=1Jq!=dY)#x;a~xOI?+-trslG7mNm(D(xIp1@6STC?V!lQ5)HspS_C%SQSOY*LYoO z#S5*GHJ0Q29xkA=1Pr|i{-d-$Q~($bc2jATs*%2^sDC}n0n>fIqgxW8twL|DAi`lo z_}u*oxCJPTPXTTdJJa^Jeq(Q)UY+RDj0Voe&cgh7<&;Y$wRc$LyQzgAg&~46{y-Xv zxIy?5noGl;=wqZ_X)#yeENl%*;&pLGZn^Eo&n}6!_rOiUud2iH>E{VWQNZ#Ejd`@8 zDzDfdb0wh5{B5|~(J|mmx6vSWednuY|6+6%IrEbYj>T#8y#r1XO|+|+s{)fDkwg|& zC4>~KJ(`U2V&;2g)igORm4Y539#dRps7F8S^2nNlHY=HSw#y+6qS7%z;S?;R;zmcK z+X-*6{ofY$S)}M~S}Yig6EK%D5CiV*27T8yHRvyt_|{48Q>Pd?Ag*0tvQP>n}{y$GYjeDQeQq_&|3)o_AxxQ&8FNIM%1GMv1F%ePq#W% zBUYl2{P$4l?IaKp`w$ZQB$ELY7Fk^sf-zCiJ}i%JzGDRywyGHf4{+?2=<+v%1{F-Z zi|pVF{n)ziQz$^YedWkUvPF=&uhMNcakHpj&-XT3|qH20Ubw6h8L@1VX4Lc5FNC|jAYgoGjC_x<>nU5`)i}I z9}G@UNtO4uPKQt&3&iR5OA0kwsa$_euvJl{hqm^ititqc0JW}a_K)R1lmI@i3*=|}A%r7WGOyjNa{c=6rR zB_qLLdO&1ua!Z}==uqaTH7mRHPfMg`L|Ek zX||C++W7Yfiu(J1++}#S*Bcgman?mVv1ju;d>QTZ=q?HU^LP6PHOH6~5n}QIU)&4+ zad$BKeo&quv;6MidMnzc3VZ=2yC~@?%mjE4oSaP;%p|HLEL_dvWGjf6%>PA>rZ#Z={3J~B<_?x_RwS$} z&54AO5MZn|IZfo6lP``V8dlYGJEvq4x?iYui`Hl z>@B~ZuL+-`W^rX#-q%#kqt4PcR-*drl+is)$(nwIL>Gs{)HA2(aP&=B7FbyQmL@)4fkZZ33# zIQkj2OgZ5m-lSbDkJvG%qUrX}A~V7q*u22BUispC1n}r29JTS@dfa@{1bJj)nhbvy zgtVMKca4v0tn=_RhMkRXJUUu)e!3|K(Ja^nR60fg7JdPwFEqDWGSkd0Q#j1Lld|furREh1e59H7rk$Jr3JdW9KA&s+{ zM__djir}FYu|>L@X5_+d_ts8OuSNUM{kusLHjqn*(G$=`m|I|AG}&z(kh}AbH)orX zcY#tRFM=h`M2IyG-}-&3mm{w%G0a2F>Hig4;&dDzg}3)ku%I*&Wj7Zg|#%&#=wtNV(Ro z{U@T#jnQ1uP2}1qn}<%C4Vq;xgWdIdx^_4E`2w8{eDg>|wH#S=Ff1_!-~MaF!89Il z_}!6imhZYn_S^sqk;z8jbfIh3gU%7G1L4-O5=6!@5x^WbBfOse8ZIi<~Tx;l|N+!u`qqUdOFK3gYXMfQ(+ z00ytok=h-xeJ$HtgQ)c?zkT;-KRphC~{CcoS+jR&~=3p zwli(nyx~Y}nb(e;(JUbaq!U(Wy^+hv6hOBlro9 z)Tjq-MAfwx(~S1e*pKO&Cwsxyng1E)=?IofrLAE7;weBf(`7A98#^E|@n{4-oFqP; zqV9M{rCFuBEf1Z=y@@gY`jaW`gEKT?@WXmvjHQ^3qMZnkCmg6?L>3El^ScLu`ESzQ zQ)Efxce3|DD`*_bc+{%wBURe){2d?TshIhDDpz`*GHc_0(}a7@E{M(LLevzf!8Tu+ zI}?MJViK2&RDBX3iJ}{aw3kIAa@epJo8OM7)V+%TFh&N9X z_Mdhh!*t84>6rGuQ%W&mWLDRxqiT@FkhJ!@mMuk$(fYe^kuRzwe^Qdc_(y<3ZKX=f zj6a09&CW>4{KAC!cxf2v^*oN9xLKlKY!>XguEy7~^55_Fw+zc)Ul#yaRWI#16HcFM zFB~Vy14!phunr+E6&v?s?8cV-MO6E>Td^2+qvw$$>$FQ;B7I!`GJrgU{bQq46+U|m z0XtqS`J(~)L$zP(dM{cm!%TmU>b4oS1M_`-uNCKq_zHacZkgu3wpYa@hYcOck$s6D zMw>Rt0NG0j(U6SPpW0tQ_5z{|)^gg+CkA<231Bc0sEiXMPJ`{|7Hr>kFt)z*%f9Uo z>5!};eUPUz|E*n_OP@+JJn;2;c7e@g^nL%{SMd4o{&e{6;v@m^{(K!JHtP0y-U2YT zWL8E4ui#Wpo<$IEsQoY@4=hFr)tub^y`NYLeLkI9Cf%Yev<3jE3CfDONH1xIddf-xA1+L#cCnvMknTMDZWOdS z22Ay2X_hQ3aSV%&&QXAx+RzL;OOxUr7TG^Sn?c56hjcQmIX!M+)bHdPLI18&xOkBG ziq_?i!i>1QpE~!zgAo^*|D)$lalTB;`NhyOJZ&fusehCQOs!*B%I1&&A6~LPYyXs7&UX;Kv<& z&M>K#2dg5OMij#IqN}6OONNdJQsx9ED1aRA8uRR9?TVZp+nOV;jfxA zhLAK<2-lLh@NQ|tbA=M#M!mhA+yGZs>s=J#D;{^QjJv)key*o{9yB`Sd!j;KZ$&)7 z&z$06*bz3~{wzP0i0NJL@R6ak;&J5s6nN7>ZLJ%Tu?X##pbtPgOIXLs&0x~);}r2d zrP%L;?T&+}Fp~;8NinyGn%nOq(>6w7NKVc&idat+yW>E>*uAcY$%AS{w*=pCLWaRU zeXa{!ST{NJsT4W>9p?2$T$s`)c-En}u`W7KKes#rN%s-a??E-$q#%{NB$3`qYIx)t z#_n%1r85UH(f}g4n2kzCLeK$7`d)NwYjy5kl8KjEl$3DawWzP-2OEvZ$=hs9(<=a0 zO%_&myuECFcrhvEMB<7StzViF1f?+NIIlk{uMsRxAlOt&J2y?xriDzMz@b^8D-5Qy z()5+A!;>GON&ugG7Wyn0+<2K&ik8z*tZ*Ijs#u$A7r=`B>W&w$7pPgXkj{Kp5I4B0 z!ggFB?8jU5X-LF|Ca56!^>-o|y;qPKq>^gZm&{2U6?SK)-p?b*hOCG?!A_1#S*ZnV zI;-FD=TBuuh(PBb@WKAQj&@evdTgZ?krCDYzm?fI|Ly9-^-4G`EH2Ag#e9kNchen^ z{Sl$VZ3LvPSn#syR4V}SE-~cOy#RH|fuwz_>Dsq;cXHJ7E8+5_y!}vSM#flZ8^+v$iOFYb3feZ7r>0qLCwmiba8l?^Mu<}ZhOSI=yA zG^2GXq6OWg?nU8X?CvU(m?;|4Bb#ZNgZ2W5{Bm%EaySWW*2_=!#GVTQ^%)m z1H^!Z-TrW9@4l60nb@elIo-Z4W>$}sUNKDRJ|p>iXGgQqp8~yH8x9kqzKA`O zJNS-$HIoXGJybgj508LQ{#Ng|)X8{E32;zeKVwdRT=gDs4-Qbb^IU~YLd+(eWS7~@y23WXH zLq=8fuKekWLS%>FZUtG&&$08OMIs4|v&AEGO*~1T@%i2X6JsIDIa|el4U)eptLJ7< zErUEZ)z1=-S*K7QV0I5f&X^)i5GaxKPsS+55FWb5FmVjFVc5gcr-6@ykDY(`yI55B zdmmco?tzA~M97;7jajHP9y1=F`lh#^byyOuSYtVQBfP72W-($SIV`6qU#t z@on9#ENR#;gbcKuANc_smn!z@TtTqK0Q^_Y{ByT70xj+bnY|kHvhl4@*^*^K-+~rs zTWX^V@4?$a#{38ym*J!Tp!E_neFmHNziJSoiwVFxN95Gues!b>n|_IE1EA6OJN<)S zO2-oX>$4K8dtg+$7HU{A$#$HVG5p0_)n@b_3KD#Gqw1ixXJ*1c9k?k)W~b`Z`cggR zoBnz8l4znof{eRMh&v%FK)S6$N#gNaLgbDDYYoYGOXQlFrs2ubX(*)U5*5W>huFGC zslL_gFw~!Z@R%SX(EebX6Nn9^9KaypxA7_<_G%vLgKDbA(vzz_&l_c_H=)(g)JX41 z)n8F}w0J;no>*)5^Z2TC7G!BG zD4+B4C#mF;vJxkXCU0TrvEzsBd)$jViRaJ!u?*>Ge+pFug~n`W3gC1u|LTg;75KVB zb6#}3plBDM1=CrGZQ$NVJ`QaN7F$ceV{%o&x%7nSm5Cz@L5@)-_q5AHS#ps65pgfw zB1&TAB>*-r9RyEY7LR9JRi;HMb-cR^-;Q#*AJnt%6Mbhkf2y^PH&hnk zSvUQwe#ft~ga77o9hkPWnU9Nq`GaO+u0u3R zSc;!Lg7!HAv_F-1$ptWIy*9JZ=@L)Fb=h`$pluZVo+q59wHWZbcFg&(-l*cu<2xm0 zi?d&({T?dyM>jEQU`v_RTi2= z5ecEm2~1*Vg(3I&FI?zGx&>`#4_*EI7dyZ_A@xzAqD>Xl?hr<*gjIA8*R9olFwjG& zOr!G%)3spl#IHifsR>YcFwdIZiFPn8KsE)jd)+z!bVT!oP(S&EIP0bXmQRLx<^5G z1Xpdc`p=?3kOpS(;B_w_R(6KMwojbk6#}ZuW|`4YHa5BAYg_%$CQdD*Ky0`6l}UZK zkGqQ*NVesvn$l&s`#LNa@%-TEIN9Z=5C}|TONiAMxdEZT^|N;Xli#6hOuA<}P03v? zid+;UN^`pj(BK}2Vr`W|T)gTreVr)esH`)SW{t1TdZ5obt%Hnn@ejfM61Ka_C%4}r zV%|U&%_-eTu^+|&Ji|7-{=ni_je5u6b95qU2XtN?q(J_<5<5N zFk9T#90L=E&cpQ7YS#kYkO+NL2vsK`h~3F)4)rWEEV_QkhLeb*SV(;gH=tY%A{TXA zi?5927YUB1Tf;@UMqBO@B;^i$UO&6yGv;hv>s$)jrLPw1fWyNL4Ld#h@vra=) z4igKMam5C4p?V)`Aw0z?NJN@B5**PESHgg1;2D%+tTs-}oN)6o*2 z6xsY+hCB|b)2{tE-_HR<9^wq(lXd7=EzquWc&X-S^W{Wqquk7ZywuW?82l~z>c}-( z%c!70;i2k%Lt&X^Mxc4sMfsWQfj$F4)PL*wQpNoh+j2#UVqbDrrn5uglpG0l2BSX< zMEMmZppfg-juyHy_a7gnamq7jKcla(A@n-=i+7FYtN_Ui=0DeDq@-kkj)m`G>EK+0 zrY?+8oKIad5iy~gDm<~&tg)(3?_sYliKneQC`;c6ochMXvs!T6R3~bAOT#DzqeeTL zWT0m#cx1NdTA8eINC_b@rd8GR70>f}qV}~Yr(ril;b|jSpmm-o)CbFNRD)SuF2{7X zuAC)!?q~hZ)JF;nRO35vdY|MQx9Gr*+?NHzf*@%Srg;Wuv>kUN>dOH2I3 zteNoRP3Vy5wDGewG%miEEw0FN%shiZA>1l$ZdzCN zj3WFi_GgB*hG&NT%)bAw`L)nfHA}GMOitWc3DPfT3`Mt*9K z1)J40vC&^o0_1kUj={O2%Ffvnb>|&l*Mq(D-ROQyO!gIyHy63Y$e5W964b#_!*Th_ zEn9E_yyXEj;<{=1>Gx+XQP1o!-$|wlB2Ltae6VAmY;bT2UjdnuQ?n| z-J*dW9#A&Tj_U6?fAMfwLS*lPs+pBbR~j^*ZK7ow>Tsdp-R<6KV%lasc!-R)a9Hd9 zQA#ke=)Kuk6!q=Ht)!s2Z^Rr9#RJ{DR;dQ?Qo;o+(@ z>WFlq4ezrREiI;c1<(cSxxQ*)J_5#O;SX^rmaXftQ8kXYtvk>@azeesJcbNSUL1fg zYc*YD-sR$Bza)OBR@gcSh_6tCV~oL2>f6r^Xi zfWm7T`=_9I{r6=)k%Ka1;SpG}Ep6DHfUcw>fQ5?-1yhMTTrrSdWt*57iW>m5w!vY8 z@(;P2L|w-U_nZ-VtchS~Vt15~!z>h@Sby9)xY?%gpeWwxGJ3s6vMe%Y%Bq$YGjf9dEEb@+XkA}%y?sjjoPgcBQXaoFivp_TG)jol7PsxO8H8~v zVan4Q=fjm`RSX#&DGvQ=RG;8P1Lkf@eV85}u#bf8m;gewJdCI*^at8Y=ch3u{@r0k z(`lNv7>PK>u8z?xB0^bXfscMeQ$>`6jLspZ`kBIUG{(zkxK$)~RWE>HX+tXHdnv$l zXlR4d*q5hU3-NbIG@1i!9?GdsIY#Q9qQ%4zWs_8_I&iaYXpwN%A}(=B=2Fi3Ho7C?P}M_EG~Q`}8F-7PgB> zPpzm{ud39y@WsDDU@x>Co`<;-c=M{$TZ!AG=#g+(RIq!|HAp?e7{>ed6bCx>lH4E} zDY*ru9Oq(KR;tGAmJ~l1&#}@m>>4QcZ4woa6=SzHa)3NBk496*B9%V_?~YY220TH6 zQGEhD>q!fydH5=QFDPWZO3kUisGZ24A4&eC>%F0{SGQM)NTAkx{sr@}oFsIw!2u3j zrc2ixKf_;rGDAtU$_II9*R1JV1w4KziF;^;vO}vsPVYu+I0gN#u;JXOK2L{s*tWmX zRJ3K?Xa=^PBO+o#*33p1KM0Y~l-G-qMGEPz+tcbm#U+47HTiLv-PbrgF7f2FNcMGt zi`ic@`FVy7d1LX2*?V?|NEYaFZ{+NkC%Eqln9nBepZE7y@9$DSuiKVZtvDH>AF}Kd zR;_e`<{IU++jbrJ*^g{|(Yscp{;2LpD+d-o!2s^2KeHHS6vWqZYK_FhR%26NNyuq= zFp>zI3I)_$e(%NetTh&nt<=?0FqNx;i$J5vXU7mH@Knr81Q;@6#W36_$>l%opzw=| zsFHOKCf+ZdmWDlYX9+XmHM-Fg7^{K=(VmLa$GAHJ7JSTPEl~aq6;eU;$e6L_44Za6 z=fLLtS)+400m~T&brR8!Cj6g2YR~(qj6YZ4O5Se@Zj;kGy><-0E8D#aodcT4ntL^7%k@>#-rEgGgXMR}K>38=IxIdjd zRo_$zRj<@D)^ESXY51Qs&x8-2??+6mIQI3d@G&}hVi_HHySEfuN)ZmiJC1;&vg@gs zJmpbk=IYwEhczd2>2#QPW`wqa{}ms=IWuA=;g!_nC2esl72|8{A4?VD_dvgrEPPHQ6Rq5`tO=tU_?SzNZ>cQuLadh8CAcBR z-|Vh_bnwp(Ix?PCS)J3j^_nW&XyLtaeR^+iA#@ziLE)RDn0m+wPi1VlF%Xz(q2Li^&N0)^?GE0^YmuN)_4JRa@t|^j`|| z#b&bR0NSG({H&BUJI%c6?yNqFV%Z9ZWcNcgbnD1pP@wIk$13=jpY)1>*%6D6RyFuj zAS_FA&{j%~9D$kd6m&%J8&95XARDgcGth+v@L(TnS&=qCB7xpmShZ965^YfWn2Q5E z;+R~LmsShiCCss=i=gvfYw%*K>ypBqQEhjA5fVhTu^V@(Hf>CYU$dy`QL4A`Km2 zo-)|wA&miG|Lk%j*c$Oc1=gmK=~~e3viQfJO*ok?UTbC<1St{;-$XhUjJcR&KlSSB zLhm;1Fb@az>YGV7s8Nzuf&hsBgJ0{q9L_if28ROqZroX9MEB`nK(; zsS*5;ubsuVXgo9f3Fe1K6Ug~A(pg3JM1l)+8;G$Ogy{|_c1|vudr>c&yp|&^)DI8D zL6?`viz7U5?-H+Jmd^g=6UaxZT;-pX>MwnQsyWqaicM!5q#u)^>RCmp zGiW8<3pniHlX1ODngW8+eiq^;irM#Dwd|>2(F%jA&PEl@dS9HXX@P(nx&;%7$tb5> zXd(j+LVIm38hN?5Es%IacVgODL^^;<$`&e3Y$V1iQWR-(-@20&2KG7T6Zj|+3~;I% z_mmW7w&x597f|9ok_{z+P3ASP2z9{R62igrqXd;B@hgGoWy$XcM!~Qr73(zes*=sf z_0vymxPw2E`xdfErdgy>&QFaZ?c}n77AF9xau1iDPlJM}@twvE)+nNdtGylvbXXN+ z5Vh>T5udz)4Prs-ebdiVhvyluIo{Q~squ3$lu>&hACq-|(I34HXyjMir0)9`fXku_ zH*R|Ku#-iSx#0A%$^i5!G^h_*1G+TxUK zf06Z$L7GHemv-5Q673j3$-k8rME*q!NA(@d~39#^P!5A8)h1j`pOJ>pvC)3R%A>j>-4nW$R}< z2;_&y7tmex_O6iIC#ae(n2AoX8tNn_DM<9-!7*Al2X zx#mBX(Buw!7uiAfJ2CPvL&DoO86Qp*5W0l%8o9GD{vEf56iAB+=1}2t+C5q+27fpO zYKj`Ya>60Q4ARzaWD4y_D0G4UL=z-Vt~b63?kg1;6yuGMt~hIv)(2474xWMU8!NLQ zY%JFvO5WR%B8G^{=1~-eGm|5;8-uWcbn+|fvEnp@Uhj7@C+&lQyX@+bYaA$_a_b`&TsY8+XE;kBhK@~8zlZ_F?K~8$1 z@H=RN&c_%(D)=Fz)aeH9x1?uakyEa4&?)}qAq0f@nf~XgBM-$ zgM&wTOXJG3y)0)d2c-j^i_Pbf8Dm~nwJ9DzmwP0d0jh!1!w|N8{b1Ixz(6ysQl z+(an~QH>dlK^oZ>(9?uUw`%hR4lHX$2^ikYhH;*=-cwb_4(J5l7CPsK_QK0nE^6W{ z=hMqYiptxz3fM0{RrXQp7!kOoCX^M@U+T&42T08`aPNRbKMl~vi0l5$BvQ@STD`4G zbdSqOCN;3fFeIsi5~nX3{W+L6Va`1kqhhS>+S(gmP>#h|CEq%Wm`$AzT+qsn0FSm~ zP(a|#cG-_mw|YuRnREbq`tE4GZCFdpjlK*8RN`BHhXDDOU?##Fu(>D#N<+id(#RB2~(s#XQK&FixR zsn&RKzmr>7v}6sXjq~tQB0=(i6=RykOhyPH<$ikc!=IheJK9bh0|J%bXp4H0RUQK< zC;%90ZwR8bA-Sj>os4lwTk0qy!VUC;oXSH=SWOSyLxQnW3VEV!6M68DY{juOv zOqHhW^_f{DA?uYE$AmqWa>`Go*Sci?Pp4t9c^|B>7{)G}>S}6IfB^=ugckgzWm4JY zEW*xZ*~Mm`DtH$hB*dwafYNQapr6OWNsFq!SMMU#0Rai9xUL8_8DsFYP6VAbg65I7 z1}WWiJ%UOM)8a37(TR?&Xa(nlmozGU0?xj}Z*!qXeq4wGcg`#$360<3~13qJ%Dxz`b3I_7*0z}_D zzZgv*NdST;@Q9)ju%H$JO%l^~E0N%xTwxQ~V?m~zSZcx=1VEt7Hir9&sY=HFrcxiZ ziCQqnlA=tyXh7HHqld`>1^U$p8&Ii%o#jkBTD#`!eG1tsx27xSw|0{?8{w*r8B1Mn zeS-;{&Dq(L2SJjidC@?)>`OYKG3bosZ{i1I0>*`P|AWz(2{K%iKH?NgAx$$3{0izg z&$wd{?)cIl-v6sFvaYufblH#74|#Mp{s*M@Lyr+qKXP8TnE6kiO`mWh6ev zF5?S(nJaW8re%WY`ACYnEc;~WLGy<*En0{dru+m1B9b|Ltmn{gGz+#T2j|(*zhkB6 ztkiGhO(3v)qE!NgmsX)9%v&tD6Ku`NURh{aza5;ZP3VD)a%b%k;`IK5i5Pd|2tR1u zQ+Vl*0{MT(1+8K6E~pnH)fxjm!ssmJ?CXDGdg)&@^kx!RVJ5GT4ocj1B{ziFCIIrI z%ZIcz6H?G7w4Vp**q2AOr269ZRACvA(1Tt2u!_^kWW0DWRwT8RD zk{wqx(Oi9#kPZsZwJ;+{Q^OL>yk12#l8U#{e-;8C4zRdEP`JSpX2Hdvck`qtBd8=V zc$Siyn>sG347^7bI}nchodxhUmv-Un?heN3-g6F}plR<0lXjhT)>6muSuZzaBJ2P7 z(vfL@43qE%`RPLgPq`Bg#GHo^h-wzQ6gQjBY2=Ezs{BIY5JL4KG3W@GD+G+QcGFI14Niqm1jfa{I8uLTr%(I-*l0DB88q5 z;;G}m={v+AdljHR_bEi^L8PgrYly}0y~WjpN|!FRo?UWJ|Sl-iZ#Vi9Z~s5UTeYG?P~i}>t*n755j zurdsR(>Z1aui-KK@8{=a3B=W_OcQnLY=5=CKY4lbwlv}_nR+nfEwzA)sXGC^E6ScR zQ43Ei2&OId6PwkuZG-ydJPP4hTT4yWn3GBi>=-mNNV)2j&tW{E+A{;A6LAD%j%6@8 zKSt2umqdOy>ta>{^oKK}tcbFE!VaR^u;eLgOIh|DK<2^{$g%vc(2wvy?nMFxjfLdmFm#cgGbmTbhO9wJVpYL8OHVt3BbD3xOzyz2VI zBKrzb>+>(HHHBn9oa=N`N0fkM{ zkh}T#)gcHOl*ak22x6vjzdQK_f8<_Fv*Lsd(28ogMi!~q(nZ*|_-cTJmi&}IGgCu^ zqAbQr38Dfl;%3NrbG9h`9d?+M!}1iCJp=o0;@eaCV~#ANwGPdJS5or#lcK-rFBF3x z%LjDTUPr4Mh(g<#aQ_@tEX4nd{u2M!T=hT5 zn4Or7Gilqx4(NbCobv1Xod&NJ7Lp5NI&4CnKoQLRX=Nn=Fltn1%+-MAvtIW@#pwdU zf{=Y0P~N`$U1_43ghm62^AhB$xybWzu2haB|EcrU`O%maH}={fXgCF3?+noWT|ZhR zh!>r5_*VDP<*SdVu@hW_n-)R!YuO=zKk_AyGhxXTz&#{9Y{H6@WW=xH}_ zxovq1Gz@k#Q+p#LYi*+?GDzc)CweECl=vJq;b0u@->qnAp;csJ{PpW%aQYCK+!;oN znXkP1emQWmek}X#dzm|}JH7q#4diA~uLPcchs~e^e;(z=4erYN&BgffkvS5xMasy?oD#FFV)&z~wrq+< zMn`E1Z})Z2J&;(#aZ+EI4Qlhr4C{vDLsM5NKw_0;;jOi&UKo; zL?2%9j}4?dh0;wj6rKf4HXL*-w6HZGQVO{*NJFT|D!BN`qvDvT@`=LlDD7W;gVNjt zNa$56=Tzyj2tfs&>60?+vvlSLC7>+_jFz!HW0w%+(R$#Rau4;2>H*^8@}w(f<$oNdrNFcEO-ZM8+?D#GEPz$QR*=V%VENj@6_h zM^&d8Y^s(q*n0@NYTRXTY?^Kt33w zZ)E}vuhN1|nexKk9yA%_VmmdUL1cHF*Vylnv$5YmXG*&SA-wr4xR-+|7VrEWYNEtNDy~XjYH@_CFOnrLGPx< z)T7^21)7nPr>+7aRf1?z0HS3E`m=c{l<%J90s?$ZWtB;i*V zmf#<;4Fl;jO8;Gt_CMiwOR6Eq`SjtQAoTBl!X@rp&ytad9zw0aV71IhUcvyV5(U*G zu!HV$zZiBzSHWjk^q)+@*2_@3?v4>|2hu$Up>YP_Lg*E|SCglJ+HBG!d>B2-gk`u& z&WoGWLJ$xUAO~Rr=5Twgh9jKo0j?U|&uV`rFy;Mn(^78pXilKK<9mFW=rU(X4YxNh zoNF<<+Q9S!rYnYvph{M@+=Q?NURr z3G-V7auiG;4Ko6On5mjCl?6G&&H%32yr~DJoIaVKaL#lIy<@h{yHwI(j%SI(cUCqZ zf4!ZL@b;B>$+%asgq|Ktk;A~{cOc3g2k%wju|Z5RhzD}e_apRjJWsIrb5PoIVKjO~ zMH^v6qGR;V54nG$=?!T((H)9qbo=k#t>Pd+TR1+G0e1tbqUMbnoCrr2N`LBcJ7w=;v_g+$$fY;YRM=1mI59Nju?c&4dOU?fDGN+-9CYaJB)nP$mgwC4Qg_giYB!sN!U+d*``=!GF{Y`=^>=^VR!sAmw;Ve zZF9P)*1)P48oS|NRvG=k|;tN&7m}1AuNRn(a5f!1o@0*;vhdQzsWAcpu-` z8-_O#r<_>y1E06>wL~y&A|<8aSjX=o%Q|B+`#JU3+&ZTpFFv2mkn9yY0(NlM=1>id zDS*K28CD7bOYl)-l_39X;wKMh{5jS-UE?%xP3-aeal@C!I_~kU(b$mFjGTz$wDg4k zmeBI+m1|tL&e9t?KVPOTUayAx1W5!#sj=b+<0<_D&TL?Zt}`@C>{CI8?Z?@I!TeId z1DqJuJAj*2UayYp!bVyRIT<-RwX1(+;wp5L23AfpQ6GwXIXM4!e%p0>C64r# z&{_CmJ<$Q?8q?ywl#hmhTx=pw`YJHHr3PmHLCU$$>T-hw`ZYsY)%K`fUh#rNpmU>5%80`6%Zofrx-h>{Ads#s8k&^%R7rXZ(k zuDH=XBsytzl=hH)vLf9gPZ^AvDEUud7>pSOMeqa2poqVXTqz7Uq7Exu@&W{S^r2xQ z8iY`v2cTjH7MfNw#SjLr_k=!ZWL_d7OL;}ic8-WA!A*lO>6ERU?}kyWk2XB&=Yvyg z(izNgNFH-)v&349N|MpY^;F4lx+GGa70kyH+iPJ<8U<;qU>>R&2aXbfbG{T%I*mb* zOBoYYf^nxSM6@xZJ|3-i>sLMTr^AkmP`tO0rg_VBn!}}DNg9*h`N1H8AtdJ7uvcM~kD`L)e zcRHfw=c$RqVS&?nMnyS%UQjd8G(YRz5&zgM{RXaCJq@)m1*mg8X!5qaJfkc|U%i+TFqJLmA2q8EG)$cK&L6VZJ*wwO5hi;@ts4v{X1Yz3stT!uO z4XeyNyc7st6h|i&=rh%od)%Tk!wTHuD3igl5=BF8$|1-=ysuD$JR((;L_>H6Ck*3A zKP77TebKWoLpd=>>uGFlwU(aQfL}|6#A(z90b5 ziU_Aj2T%qCm@;mD8WLr#$$G3O-~X=;^LAIeUaDo>7}Hj#&!_X_#TrM7AXB&3`<}e@ ztZ92a#>|t#MuT@uwRdHif9fR?e$4zRfUbDjU5!<{3>Z1L94I$6$f0F`L_Qzbg*RfP zHO5zF{+tP~=kpCqx2NMUCG~&?b_#I(1ydzd=OmnD7d#M8B3ut6*||v9)fOO#)emLa&Ipu*52RFg;lV91 zjx4}&uQd!lEl&_KLP+d%y|j&ztibfpuE5ltIAkj}khxv0CXtxiec z#nRfXB4FDafvG#3PgXk2`8+MLp1-ShKF8`{(?cs1) z1a6j#vV?`seR!DnQ}cVP#0(ajJJ#Ha4To_byes1$R_dnU1OYp@hMw58!Pc zR!U=fx6`z_usU#*jzwQC17?t0_K{-UEz#Cxq@Hh9nn58>0+Qqs-$Qlq%6JLBXU+!H zs{Oz7eg4|Bohm}X>$bCN*>xsb4+G=zd4F}hOJDyq?v7;BQ)5?(@f@UJ)R(nZiDfoF z6*&V{b2DbSCpO_0?61z|S#|AM{QWy_b!+k&Ns_glpSh|2LVD$Ypc^#1nDu8g(?wuonX&MOOBRY7PSj<*U(QPkeWTdfSP#BKzHWzAS)}(k9BjA)b zB|dT$wWcUDF-C|jIqA!u!WG@N=Y~RA9q4`(|3HBYa3kdjVb>ujWc=p_^-xq(D+q`5 zCzTSG6j3f6CanwByy_jg_p1cZUk331M{jkLhH*bO`gI5 z{rG0?d>-_ z>q&_gX~kqdt;C!$N#~39838J;PB$=#C)9()jdlWcf}(Qzf$fvN>O8gWV9bFS>Bi7w zx{hdk5xDun(Ghvc8;LYQ1tJ3S%g_q)6td7fbBcYaA6C}n7P5; zsq?(BAKz4~CR{pe)rCkE9qh(jz8Lkd=jN23UqpsaJ?f)lAftl@f3BV`Pm z*Ew}8ovgS-xB7Y?B#cP$l1fp2ndVX9hyBfU&v@EX)07RI>Nl4NKA;$GnJgO9y6N)f9 zb)Zpf4p5_G6>6F7JJj?pi5Aa=(|W?HCfsj%Wow~FX%T+802?<|Xq6a9kI&)vY&%*# zUH##8@UsyF8X#lE6-X;>HNPMY$~O+&i}1t$o5(sb(zXcS~KYKFX89*D4{x>s$~ z1@cw8j|Ha_d<;H5wofY}GJY&uJm`K020FMOdK$w=9hFG>X5{|-IGv;ac)K(GzI%22 zyL@h0KEG|)G-qK2!Gheb9q+rpwxG8{Bx!}MjeS+Bg>kKn_LlkY zh?`+ZbUH5j*z1K8gT3n`pi8M+zssXNd5B~|TyIm~)SddSF;T@aR8W5=64STM;-Fi<~?zCO>1zdkEi0w*&R zwoWLCxF|GAXGab3Su5wwT!W(mt-zkRd8X2buiW|xgvZ6FhB0X?=l#LPZtj*-XO=0dUtI{Ofxfk@A%h?&%T1x7@bEf+ zZZ|_4vBTc(jUTIAVDJ+tPQsBtaB@YCQf?EU`DUS#BWQo;$6Zh_5wwXpXaJMi_I}K0 z#v#6VB~?DgXXS}NB8uu4nV^7G=Zq0+qL^4m5HA)vl_a#m7h2o$8xIQ1v9LEnDqhJJ z2fYUo{UoLIAZ!^#L&Js%UJ#^Lsit*K7%?|VwCf@j!kQF{Tw!>wOZ_Qz4A3p&lqiKY zs)^Q7t00F=$e6)!h5^ORLk3!IG+HMjOVDx!rU0caaJfqRQ1i^=a)n<>rjFJ&;J(s= z7wQ$!yzTk+U>vCwYQu&jJHbLq#gVV$NJEV^2XGpGEQpD=K&D)k_AnUOUykLND?<}% zNQLJPJ|R$IGASGQ=^Zllm7oTz;|n~aFaKDN%X=b36q>}mhO_gPoCC_RUu5*Atp_j? zZ~XZsXQKo`(VV&HS`R_}OL!wDF%dNQ4w9xmPl!k7CMwNx|IS&>I3SjI2evsju>>iL zs8t=(ha?_-lqD`|ybnH>wD1?BDhK}SN>pt=Qwzz~Rd_gLsOSEJ8BH{laf@yIvwR(` zJ_-u@rL^wpmwlmC8UoP%1x+>a;N`$Lbs>iaC88b8$N8KQeP9BnBq4n_0ONu^Gvql* z7|VN<^Qh2%H+Tj<} zzafO675H>4`=6f9Tua%hkg1}W4}p)Nh9zPs()jbltYm%*SW`f<@OILURlFd$46yum z?L<~c5&HO@NkGglNM~#zo(VyZyKMf+AQ`7x>G=U)l%?M`QQ5}MRgl8)Q`KXUcX73>QfP!8 zW9yg@=+KAAu^$i!l+OOC?@`7xLhW|m3D2gmfrdTM&H5y`=BUS6KXb(#gZ5EIhDbM2 zZq%0AUDVXj-L>J*S%@e!P`pAWpdWGdHYhrM8d5t1Ycdq9u7-cMUzCIvfPmH8?;1`V zg7+lUunBBufdND^DILK^m8XIuOk7F zBIjUZ+!U+Ii_`USCU6pBw46L@#sm0N|N3$zR|^@4XP2kNoiZ`~-lOGs8eWZ0Fjk3g z3+O7>Ok{Z(mJhOPt3{j3Ci)>CDD~^hqYts+btG}!xH~$reaO?Md&$AkPAm4}CZ0SU zelV;m?Gk8qsbnX+^fp~Xbkh&s8nWnq^i%tDPLXnVx7sM&*BNMS3=H$OD>nicCb`oz zFak(cF54Z6JRUcOhWNoMHr$msyyTH3UMpTqx35=c+Z4U(ZT1p$d<`g8U6QIoexW|& zHC1KEL$Orf8(f9DklpuTO?&R?Pkr3ivfX@M&H$aRgJd71zG}0io1ponMz-+=v(ha? zULusmi|CRrKqKUaEjl$LPc8gnfDo{bn&=;il!u5$;{~-a z7J*A5Oe&nT?Pw&J5r$^7kaSyS8GBVY;_~tGELzCfAU_Tf!bgUieIPZt0j*FfYoWQm z--5LAzG6bHVx#g%%uYX(c07L(>3rCqW`32*% zGI)4XKPUI5sBi#UOEcVdW{PTD9fpTyO_831;>RyYE2zaumeh}e`r)j_anI_SK+Ki> z<;1v@8X52uE7zfoPqR#Ee;S@BQv+R*eKW%5b0hapj#u=(xiNvvV$b*D=mTUmI^eub zdOU$!;tc zZ4d2C6!`_4>|^m_3UxD85w8Z7gNfEke#=k?Mj%b|VQm;KyS58Y5_-U9|D9Y<%^XfV zMEV0Y%IPIY*;6-B*=K7d;VU{Np9^>+qProZkAl4Du5w>BicnM)AD8Prn#>maZ`I+^ zsONl_SE(kh9Dv@J>TS(^D8&K+VJ$Mn>IiCQ59@fITHs zb{SkuY|}7Re>0&L0@E=L@&FDb<6tkqb+1@su+o6TcYu$b;ibo}V5t5KLwGw z9lHZv>u^$^o^daagR9DxM@=OkCg!`-+ZnaIyypBPhsIT1O4_7zkANtT-|Pb$`Cr`& z!>J3s8cVuAb^_t`47bG=CY0xEu;ZGnK6~1;Eymgg2`awW_MQ`kf9(sq)6yb z%$NyBC7zj;aa`A+pL&wykWux+AOMsyXJ;r1282`wCCax?+DTMAK7usw-ZO3%=)D<* zl}V7*-A2KO+#<9w7=Y{&v0A*ulV(;3l3VxE|f*-}KdAASb+H6zM z1e#k^d6MDOf6;Or^eo)H$?EP<>5HwAr}+W9Ux$@eBALlQ#N)qfGyQx-RO%PRtHSYW~IlKOp`; z^!>je{y$9qKPjjGH;Avt3v+@8t~%onWB$56rg@_*HYN=Kfk81s`zzC69#LvlE1j%w z-m1dUFFUI44!OR%pK6!%qFeAf?3C}J&lm6Sb6Z&O?!itT5z~VRaQGYllz`v? zYIC=@BqJwmzkY^@&1G*}8Rsdi|ED|Q)AST+|Ia7+7y5-<1;c9wD+H0xWPjgEB4Z{1 zzS`q++fEXbYiTH7$zfW`JiqGDjoT1^8Q!p0=?M5wep`BmJ{nr(&t? z%wwdLrfVGX)2mviFEkK=v3D1&wN>j#M}z&3v6M>!sC?dYGXlP{b}*JvQr)qhFbpE7 zCk`7KrjdlCS-S0QY90I;FiEoK!dALi+?rl%As?N-CGoYPEG`!p7=`}+t|rn^P4tXK z_NkQWY!Y@&f%#_`MR{tve^s!*zuw&BZozq7jx_@#-9jKcpY)c(aJpSKhM=%+W&91} zI?L21=4&i@m0*vfyNrc=DB!m*g$Q}_6Wa>$7eRO;gb}E@HTl@e(n0wdzBzWnYCsRb zk%TBmyaGWs9}4LYFesQ%R7AWDgPS5=)yS2`br;W$91va#-`yV}KB=^rI08Q&J|;or z&S2ZQ(at|0YRi)S4=1zuRX-a3c4WIC41ELD+JVlC*T5kPHW8Tk)mX%>Diur`#t#ch z0)z^_mpZyq7Q~5bm;4kKY{E_ICw&pr@DH+06l8FlCT~~(l9r-E6vOgSO&lr5oVkyd zKU@f3bRzjk_7~%Y22*I4=Wefu;+kf1oTS>Xsjgn9n}4yszblcJ(*JV-8(EPOMuQfi z#R-*35tyTscJETwem(e6fENX!k6c`h*#*}fjmStrX-2$MlAA$HwgTvk{~o5zX$)R4 z+Im*zo}twPS)eDv6^}4B>q;s#hu{|;w!xxXyYE7f!{$C!WTnBllS;8F9eywbG0Iq* zWgi$^Eo%fQ38qlOfP+mxiF6ZX{+Qdkm1p+1$5vm|Vj^96V{2(9^;|`rUt~VSFXsUa z5Nr!0MWCbO%T@wjC_3-54l{x$aT8{pe*d9WC5FENE}=~h6!rx}%}Efi&+ihHkm@KH zd`lh}9kr>CCCcHbWE;(a{E@zBDrQ^?FI$m8{uNv>v58Wo9x}p(7`81SSW^MLmsd!S3N;>96Vt?FfWT$~6La!LHN<6F3x(X1E!&S-g&EtN z4Vy*@2s$XA1%X-7mAlFm>VXvnd(MZ76(sA3KtgjHX}rWxja&S3l222hfRo9SqlO9t z3Zt+PK<{ES`31%+tOTgRTSjR!U~9ZAw}EL?Z=aYsU(mJV&bUlVL`x(?bng2}8G#Fk zDCfDFi(z-e6S=r&hI{K(_fcwor=0bev1ZZ%4k)jhkl{w4{7n-W4NRYKqQhr=X4zM= zWuhP@(s?mLtN2tZJ*#fFxf|*vy%y-v|A;rER92T&M6B?bCE&7R#NH}#b~cwF0F4)c z3flD0(}*Q~(sCEr?h`wFG7pR?l&*Cox!U$M=>o%t2!X}qlffq&Olfk-Lpfc$^Y_mO zHj_aU4HTaF>heR*vR16)R?8?Y>QRTp)Uh8=>87a_Gw%jo7?M|mbM=kV#=SWmy}2S7yl_9%pFg@|EHZhGMuqvzn|4vIHluB`cS z(0VM6!Cf&AU_DjK#PERcO3x9Uiacxp9YSI}0`I8fYh?5X$}`>aeklcExZ$&aA7rH=qAjyZUYn?B{xfuF+8i5<)^w{-vIiWPp_9EHRgwwzA zSk7>6YP$U{?!8cviPfp2Nh9@dKh>rIe=}ymAFp8}oTGxRolJTTQeRG&K!*hZdfD=A zoMd?N_}AJpWl6FO>G)K}VXO>%M9Y?;T0F3f=m5bzdQn}I?x6XYyL-R;rdZG-ol;n1 zu0bS7*?D5_%y@^sXWM+ZA0&yTLrKWe#+Z$dDmGBNuTc0yXj^u8Env1fqzoPtQJ8l+ zv?Vs2`l@>}7(G^z+=C!tKrm?f`^Y&hoS0u?D#FVTl{RZ=X@$j}E)~r=0_Km1Q(LZY z=_*_DAqrzEPa-qiej|uV4h(z_P~~sC!N_dY=4+?@&=rRkA(e>!g?q0CI7F_)>YsV9 zyN402f9GELKTmY1Ppbj?_dv&fSAJ_rA<-^WOFijRM1iPxy3RcPS5yzw_?@{x(gdN zhpoNnbw5r24P81Br3}U`TRL##JXahH{3^sH9&Hp?AYb0`1QRaa&1U>~21d-+y1)?^dXAL)Ip;(YCl3?>O^G@JVw;E9$iQJ~l>f&(^ z1Szs|TjwN5n~7olK-C~CXH8mC0cRXVbi~kJjvQqcA^D*Uu28F2RiTUU0D`A+9ECC3 z+l;MNqEfc)l0=>5`z@8s=0iETSsjjKp2esd3A!akKSyrK2pllIf?C&WJxb#(%}rQ% zM5byc)Qy8GhwfJQ<-#p2Aa+>q&`ertVjM-qONd3U^e&A-XZqV^|_q`y;`LN4|_|HhT;mT877s>iJIG35^^UXio5se zG(fnse$wf)%CbK_NBO=4zP`Ojof>ex?@lR_#l>o<0>}3{p#zOKxBcKJ&K=L$S`(Ap z6;|3U7Pht=h}~9n2|z1EY_cEP7z4NnG_LZr$7!X9@7$x1*1i265r6j!<8JQdd?zCr zmN2x(dlr$%(-4J`qG&BlJo5HVw77?z85zr?6RFG7-iA=8^Id+Ex5AR{$t5Kw7Cf@0 zY=J2)06Sl@nPMrL5k@B1`|06K;|U6}C_vD)m=4$_xeFU2)Y`i62F0pI&jO6XVOoez zb@Z%eo@hSMz_WyU!;(EYRST7(clr*jR3WN4dpgBcTCKIWnm=~qr0idnEPebGw-x~7 zl*9vC_4>=t{Z3x-UKSZuk_yr2E++)Y0nn@ZK>we^SJZ4nop(ztlDOnwQ{c#}o>40Y z49CTsQK=sLX?;>1>fHpmZ0Ut%#s#QL%%qos^^MsI$1d-s`IZ{<3gY76iYFm3-Ih%$ zqJ@g=t6UoF0BRSqaV1b#PitgNi)~g3qZkoSnIdTH|%xY1Swyv0!9P z5)Y36b*B79h&*e2N9gDtxNwY7R`(bQ5KPGl3T{l^J-;lS&dThcO*>dCg8y-LFF)^2 z0*VFr;q92HEH|>1*$KIO~$Cpl?tS92*%pzCM zihq$HPE&Vyu#~dSG`RwAg~pv5xsaVwrVUO4z)JojNkXQsYztrK*WU=^jAOtdg`9*c zs2)iCwPqB(6HQ-^TXNXxs~^l9P}K??mVt~j0n$#rt~=poL(`(lgX%^^w35~^8pSaH zf*(VJCyQ#NZG4z-D2X9swz+27^U8-;8+F^k-4}w5#T#2z0V^zV)lzwkc+}*9p`oZx zi+R!T@Jy+D7mZTE0|bx#W=OKBmzAYQM4s||ewQ^ACebW@Ujb$^kf@gqs2Bl?+hs?w zitSdZ+hhNMl1w$+E+YFKH#|W9iB;;q zGDf#48%)h;>LOy}mUYOs0sh#1>%zmz_Duki`YI=BFHu06egoaz?ZJS zvv8ARG%|cxDahsw5=U(7rU3{I$`eqrpDC0}^M~HlKR-f66v)gMK`6}QZBeO0FAq&Q zCxymSqi)7{pu0sU19EfUEyHi{yC~i9=c#gc^V^^Nh;mfFDS^VkSaH6VZEk;y1TPa{ zE*$A#Y%V-^bRsfoPaqbVDv4L(cZ?(9Ojb(HB}6CW=%Hf!8S$RS+tgRGGJ5loyTFi@%Ukf1m)w(8lEbI}~7am#VL8d;C5_`s8tVP^kK#n2>I%h_aS+ zzBcG|u=A9@BXTt=}E0~G8KeZ& z4Ooaw6mfI!5PaGDAc1{7H(4(=0V=2Cr1NjVWgWD{frG$IcB>tj(Bj}N3kqj@r|7xJ zghGRAPhG;{s`6)i=DTm36Y9i64&S#jU&5vUSckzk&!Og{nCFilx>%Ej_Q!E|gy+iR z!_y8&aR+P|-Kgn(KZkrKVTGkq!|wK-EnK-v?f;VmnoRwJn%tx6Q@#-3{LK3q^p zHa}@f2hV}6Pz%(H_U}heTzJ0?vwK!v_K)y4JlJCy&4JUF2Bo*2^fl>02Rw_GUWjC8 zK`u4y>VCl-MTg+Fx*>MwshF`kU7?{1=X#E3srN8)r{fqBb@B4-%qLqLH#s>31A7C!oNB8pPatq!n~om`W@svH)o@F^9)nrnJK#}NrSz(L{h@6hDn4IHYahVvh0zd?NMIf{}%6VVa=C+Loi zm4l@os_+LWC?JWvs1lcpm63~^6+q0&#=^)3;AAIe;RY~rurYHdofd82vM@8UuyO#1 z*_b&Pxj0$5|NTRTi;;_ql`Cnpcn6p3pUU#@5db?oBMUP-8!>?EpUUyCle6?^9rwT2 z#B3Zaj4S}we=7HXQ~-O@*x&U3qp|=Px!IWk|3~#LnZ@N|VPs`vX8)JR$I8gb!p%+0 z%Kh&SD<@ZyMd>}&|5lmV82`PE^Z(=PEui9Bwl&<4;2H?-?$)>y+=B#ncXwaG9RiJO zaCdiicMBHWAq2O_-us+;-?-{={JeaWb-VF>?{KzD>`9`5F!zGb0Bl%bTOvINsiaotv1Q{V&4I0?w|O z!ugl|HUL&e?zeY;YvpEq`#A2}@JdJsEKUwaZqQpWK-_NzD=|CQUv*}7aDG+a$A8(x zZvlL3dpougQ-cY?_V<|Ut4DA-KyRMn zGIN7Ci8)yRYGwsH*KT36voNxQxZc9Y!pOzO#YN1)@fToc1KZRsfCU?1VgLP8VEG0t zutog>_FFhu*f}}hM#{{{!ph1{%*p&0VF#->^x*ufMzT`ZR%Y8J+3CeBU_tc-6T1}61cU4xwd(M z90N$@Y&Y)7OGyDAC)UrE+iEL=`Dg@-^6MUsXOYaf5f11WUIJ;-c>ge5%e>wQC>`i<0iyIIi}Y(&w+& zXQJ(2<8b6%%HhKfRxf^iM00_CQ~J_XOth50l3I>$6j64fKMNab9wBn>7778D0G zc;K+Rakwfi6am=XT{72DzJ+vKv4Npx=hkg_eYmgnc@Mai_JY%cM5rT0SM@gc*5;5d zahC6w5>aD$UZ^q|$ops*ARSdSP*cAAWP$BWL7Kb#EbutQKEPLf=)R`!=Zz`)*!{fZdNx z30qa*8b|ulIDajT^EDlQvg_-<-JqyFx9fEqzCc0VaJ=)P)pqORoS%xOZ*Vfd-QYiN zrSk>&-&g1`7%!G=S(147Z;f^a)iQBEG2nM>+V6ty(tGvrHh-ICpZvDDqemAg5AL+T z3+&C0_~IJYD@LVV6dWVySQEqTT{qk(;MfzAf6@KUT;zw%yYzkgGaoYE!7U%M^xX@> z5Y}CI-cJy(IEd$tTslaFv~4HoA#Pmh^g*8h{FkvUdHm?}nkrRf2K-d+w()GZLw4>> z23EF?_x?Ce$lI(Y-!8M#*b4F?a-b-j5vXguJ zM_sx=LG|njz4>xodzdA&33~5dP znZOOlrO_=;d`mr8llq{Go+}nF67k&+&JRp)zAtc~aWeA^ifEaL6%E>U{=V{!-Qk?DW)! z-I%ieafHlSy+*~%F}**PsXLIIaDRmMS|bPHn~p~s)^d%Jv!vlbv2vl?yT|tee~KwN z*5L1hm`@@3{JY4IlP%x>InaiY-C|DZ?cK^g*-~~7efzS1;+CZjy2Kyg)~62vy``Vu zy3qd+c?OZ|D7;kU`<-=c!ckb?*cBFU*Z@+P4BmiCxEGI@7qaGK>^w@a39WT9LGV3P z)+Dhha(%Td6wC8_A@etNtKb!VpeT!jWXG#(%v<&1-U3G$B^l`if|YNxP(Ux6E3jAJ z*x?oT!1k?Mabtkl4J_@&xXPuWt>0f=qV)0eaA@r2nk2qI&bLB#1yeV1t6H+{1%os zcy~OU4HI&P|I2z4X~KBj`oJ_m9T~)d7qPYJK*b_Y)AWhNlTCDML=m5qTl9x58CPJg zN{0z7SNnrP(xVxe^R=KIEo8#bEDv0TbVVuos zQ&YyF8@`>DVUpFRcH>TEKmjghAb%(qH+43=uCfPJ!Rfy4&^T;vY=0r9fark0JPPD7 zh;KdJHXlEdAifJnoDwBwQ4nO%ZVelFeQh3kbx>q>c^IZS`$ zDz9lD{bT%U_Ny})fB5#Zx>h==)sWj9EKu-lKNq^O7f#rx8q2@3r~+J2XuuB+aXZFo z_q{2+eYnu_jCMaLY?>H&w1S-qRX}K<%SLsyU}GS8JSdfPptzh3GEVr`&WuXaNtY>h z(rV1Vt~D%B^Kq~Q((3!G{E&f?knQ)39u*dhL5X39oe-mkdE;!G9ZV%2azxB<`*nxB zhKQ3KD@i;JdNkSHbZx-YMwm~DKN9UD3;4vq#=5WsUi)tiBR$ytKG_k_xy;#;VImhp`I`qYH;RlY@pIg;P>l1pw zh7kOs6{O=S7i2wzJJvCjpatI^QI5nYv6P69jS^O+@5{--Zd(Ay(KEN-Z0s+4_jkJ* zGy;;YaqW_gyq3Y=gT6Hdb!3{F_bEn;y)lyU2GGvNnOya1-Sn&;@ z#Z4L&*M1lKb+GL&>8rwirpgIp(x?$k{Aeur=aIL^)@?}b)$h6aaaw{W$ik$3k{}Nq^r}UL;S8?fIOY`{7>8{q zs-1-dlc2@>n%_PAgl?`nvv)sR3d-!|bqObG*7wo588h%^`fHIq8g6=S9lybs3}NX? z{2m!qNd-FsM*J=&ySrPv)Dl=HRC1l46@JSERw8Us(IU->a_j|MN+PzZ%QuCGUiW!^ zpKPPo)>4!MN2PoIMytl9>Mt1#H*+8|=U)zcrVZ5V*6nYPl1C7r1E%#P?x+PeT(>w4 zH$peYdpnS_*mdr_tkQ*vP|}Gmm;=lro?)rtszZB$s1PGQT=UcR;H~u6ahVWb)gt<>iAD;@rU&a-5lPTo=DzZ4k%f{s zUweB2cBEN$f*YA=dG6?y5|`)^c}Ac>H}CFJmj$9uFX5wN$Inu+ADI#n_G1&}_$dtP zl|6ag zHw}MgwtNS7nF3iOl&2^f`d)DxIi+nnRe07Mpr^MxX?nr5dNhMWTML7Z=;y){qP+8r zgJlA%OPXUh^|Z(Jv6$?-B@#qi#-4Ps<|+OdpjL}STqE6$UWmRapzP0_P9twDTsQA@ z;DLHpq^h+;R|{TgR=P55qgL_Mo3VqHJO6}*M|L<9GF7KMefZs3RXPd2(v{xk2gzX& z(A${E?`SxkE;!jFDd!RNyoyY~3q)~08eYiJfQ0P^t>r?x~VtA@ETY9LZH7lYw zR`1iHIP`;|KY0z=9mTSe!8-kUXsoNK^5C3%0Qrw;P%yQVwt1b}S<}q=bj8ZSNR;dS zL;3OV@ndOmc)3$N{gFf1;6KzmqZR5FfOX{e^})=&20E6@zCJjV^7R&%>lUPACc!EX z+1bk-5d?vUy~j?4OWqf_S01x81s~^)j$FWfcfMsJN}_$OI3yTTKs<``MF^=aooVOz z{+IbqN=MF$lDG0z_D+`OY)s}c)h{n!;cBzRg`Dj4(d5H_~^#hu- z>zkTtHj*~xHp%Qn^%U7RGfIy)fXsPeUqR_ngv|M@8?l_c(gxHR!AW?I@b>1$lWYG| zM&%5d1ayb)&CDV1#_Q)rn~e28l8Pd>{g>Siwj`&QVzpQqyen7T6Z4MSRE<{R5;$Lr_WU7yi;qIgjUaH&&LUN2et7n-xa{s8FW4SD@fo;H^XlpFtEhu_ zZV`rww40V(UuK}Tio=?p$X|J1Q;D)zEWoKbG!{a>ZAFg?aVH3@YU-)RN~kO7+Hj8f z*{GI1{wLTZAt75GGVS{S@DzLm(CE%3q!oQh#65AeTsfM_J0Q3|4r>e0%hRR(vc%3| zX7xfRfv3y3#LY$~ka<&x-1c}Y?e2B(ZE~I0$z${5Jd7$S5!6t~r|US(3#Mx-qOWaP zum@_W2YRT(2U=(YGV_i8-;L^Hy6ol;L^22q^OmPQVwjX;81+S~fgjsW&svpx90_AK z9)TNMSVfPkD85Ckf{g~Jqn_E0C4c(EUU2M)?QqyaQ;TC>O$OrvToBlv^{o%1OW;X; zybWXvOnur#>4t4f=d98Fo%_1TBgS{WPoh|!V$Y?PaR0)nOY`QRuh1L|`+_b73ZQkczDRU}x_%W;p@M%7e^yz|V@S3Z&Xtci>( zZml8dSHi+`D2qd>t-Ny+jW5raaH>4Z7G;U~e&RYQ`SW8rHnq~%c}a(S_9~p6hU2DB z_7YD&0e}3|eRG4{bA5;eOfu>kex#_BOz5wRmAakHmc1p{FTk;$Koc-Cwqmf#Nq$0a z(e7IA;_FhQH^gTih` zqiieZScNWmDk|L{Nv`O2w%(+aSw^h8z1KIe!UR=u>457x!X4FPTl0m+B{|P-;w8~x z>5~Jl)8g`SbK-H+lI@~PIP zjmhlW!y27d&tpt)&#i!l2&`3srmB$6$=4C4E5L~jH6~h-P3k&JTtLGcb}?a|YbQd# z4^`E|MfnJ?oV^Yzl?9v1V z7U|R>3SB(rbjgg5Q~?)U2wqxYXUc!c=4=&iDDdJzIcXyUTfq4OS^f0t zauo;E?Lt#HI*QYZDY1$q;$M~P4#+X;04Zl>t~6mqT#^cjc z(a9%-e&1chkQDv+zbQs+D6>Yc<>%X%Q`TCtr!4ICPdzS+v*RVc38NrF*8C9|7Dh|7 z^a1I1wQgHdB~+x}3=~DBt!!i|3))Rohp3jd7Ek(asbQ_BwCIg-rN^@w%p53I3ocag z=Re{Z8sW{(n(ZcBW0p;8sXg!A5~3&ml1d5nyy1KBvC|7pIJ8laM_(zcahW6xHs=f}#XaYb z)LSgQ7+^o-tB&Mt|0s>OxD;$SSpH2W;YsBEwEN-DH(a*)?=^pwRyyZO3 zv`A>5%|N@E*qvF%dQ!Z=lFtiuHK{(i;A@>29#bmRGtZ^rw&X=?ap~Va36ufm;gr*C zO0WU2s6ahiAYQNR^d1+QgcrO+S>fDQtWtSqGgu#u;P`BrSrittV<*I3x!f`Eb#pLH z0iRPWGgf$CGhm%*&|r~L<DzjCy?9hrz+TdH0SJoMj0Q{apP(-r)-P$RmQs90 z?)my7TWK*zJuLuz*|Zy1-E48yscc!uGB!e5nJmNd5V6eqJmafx_H*vmF7gT>h6dr=%m+eng?hmoFs7 zl1CVWw~Wb$NpgqGe-q<~48+12lctCg4$NMo$3-|7#Ck_1@>lUz9rYPg6GW&oj@WN8S2m?Ucm0iSea0Pz6UJEKSbryre&or|M|i6i*O8F~_n5kxpx;hgis z+vAp`EFuVUpgaREU3os^{Jglt)^nr8v%I3hr}FHmLU&m+(G=@ee;a<}tOB+PDlEr8 z=M#IlIDyf}>6kD`g1`aMsK+#iIVtU-SuUwa8AEJ6!$>sh^;_VqyrN)uY?Mmi?y1Pj zP9=lqw)6FMA7G?o>Ts@BwAHp*irW67;l70?^2+@ReCVZKa=h_CU}Bpj&~o=VK2f3b z*=v4?Tuh|EV&tFXYgEArZZSS=PSV(5+VM`Qw!Z8U+j|^<(Dh1m=;l+?X$wxwXmpJ7 zuJ%IYTW`M1Lmm~^du zbdekZ-;nG(w}OWTMQd$a^aIvjY7kJeuFHK?Y6Er|6fCrz6H*Nn8=_M!beRTo(Mj z?pgdX&;X7Fnf}~mbI#7}*omxB1876bT5JLXz)-WGSFFL(IVcq$1>3iGGq;$#HL_k1gX3`DW)g#`$`-js6MI@|3ClwIizu;wyS8~q8A zT7aVN##S&~VRX56Kpc>nI!{Cp0;VSU_E9cY`-{1$kiQreyxf-uZ>t!=eP68YT8mbj z|Ip?Osk^(>U7CIl$=j9t?RdZnQ@2`R5<8?un->oMgK-(nCL6PU#%ti>RTrSH0R5!T zfnBFNc;$)k{ah9jqYHZP67M#dt1jm1*e|mA-H@Bfi@e{pKI#&@0K{n5cXlRj0jQyL zV`N9B-)kwv6J`Rt*O0_cUSS)KY0MQu(sDZNkt{nGCKEoef|_@nFH23P5=RJkJJ`9f zYfK>Nd);P51Le0xf5cqPS1SOUJ$Tk0r~W{veOjLlS1vfsEfpzd+R*(TNl+7)O;~&> z6kCz3pc7+%15(mIe%i7wJN{HWBo@RI#hAN#0P>6yFrp9V%9NM=T=^K48!2V}2i>Ry zq%XUDoBGAhlHkiU{`%&je^5YVKy^uw=5B zyz;!Y`b$P0OKi(WR0Wl0_vjrv&OGyO4qE7rbnzOjrVMlIf>h0232rRW9Ynm;eD(AS`3;yIS?UA{0qn1kq-*oO zFNa5mf7Gr}?3No!o!*xh>)-HJf0nVjnb5atm1mH@`v6+4#g0^W6`}4=m}q-kPE z=L@rRw$6J*f6+>{NN@@}ccyqQjh zlUS6*nIgaaK@4z{mm0z*zyqoAadv0t{iVbZfpe#M4PG@UQbS)r9hvb1UYE|MK^0!x z`x}4xF0~&|&Y+c9=xo)McD!Fvhgm3`>n2UQd)yz=5flCAH$CmC++q3Pbl=+r#B}L> zzCVZwT@{Mlj%G4x)ntbJvny|at7Iu9H&PZ8G$^PuS?V*I5(c{DpBT~X zSk2+F$!aL=F`_EWn(efH=ZNZvxcc@KkrlELCm6m0&4fC&xiYRsgzE2A{f@f`^y!x1 zbRq5hl$wFc4aW;JeK2@KsPy?8*ppfhaW^8{8x+qJ{JUSF1A7EZSmdZEzqm%f_3c&^K_mQWdT?${8ezA62)^rp=H2M-mvl zcdLi6u3f6fC5K~k&Th*m5Lzw?_-bm)fVB)`^TUyhs;)N!;@hUQbDFb_QBLn1_g+MlG{j1dWMEIbSpmG;5PG7D;eTupC|gw`)JngGI_PkKiF6< z-B3V!BmJmt_kDF&+>Ow4MbWtP(fdoebSB@K=;V8)`VG@TEBQ zI&44Q->^@Y-LMiD#4LiiVV+lNHGrH=wKvU}OId!e@j=ka@u|$<4=x~H`Bwf%;g?>Z z@-0BqQH-^p%mw+XTH#JomUt!Q*NuN_OptdA%V4{7lN#JD?UpXZ&(c7z1p7*~GnJly zL8re_folWxB~L-+@SKaO=cZwN=bBDCfBW;u&f&$Q_kwM!^I8&<^$Q>}qxHOJQQBGi z2i@%`?~`}^AicWFk(6MG74qvo(rue-gH7xC)+mwJ>&zj;GzDim?`!zcd#~=DOA1$s z<(g%)3Jpw0`L>fmyrhkHLN)`)&c=E|I1)Ys1YWRG@b`3>MFC!Ym_o5i)H&ZB0~XPA zdEKuMuhynS%`vy>gOPze_d+ecisTJS;!HKIcdb*gOP>#hm<$VcIZvL%s~ccg8nP63 z8bx#aLfkG=QSlUY%GkmNN^N%t7U3M~fTGGPTFKDyDczNzBDJEtl6vb<8|qeFl?E99 z>4fEl0aJND9h>r^V)`;?u0&;Jw*_|PmQb5%gz-t!${ z-dwcLcYSHJ1?Xr|FI+_46(dg)z9DbNh9ObK z0TH2yrYo7GnKb(=W0}%%q4v`K64mkv-KsCxoYCiM?wGK}Zk$H2$igDht>pRiG^OFh z-Ahd5ISa^ie;EBr#o52_Yj>J}k{O3v_;PS7n!CkS%jwhh{O#tFWWI3}R>b0x$KYV< zT|FLKJp&QbWsP49=fx$ozfF}ImA-H}yuv zE7Q*l_;a{LT5i%zF_FNli>aOY4WcBCwwhkLFfC)%esPLg;WX{U3_rQ)bUj#UbA5B$ zFqrCMt&V!*ZVW3d25qfHr&G{v`|W}V)00p}b{oQ@8UeWD9IE~${CvIT==XS|Z6+Y# zvw`CF@+C?I>WJLM&dE7W4x`Z+MM%nat6t>sBr69GVta}I7X;kRPG-8o4`j=^d?%2? zI*`U9paZD=?VyqTI-5>H28Z}>>5jv zG(z~%5$_UcNo1>h2Dce$T-cSBRnP&IM6S5Qh0jHKeGbx2GP%48nAf8}Psg5pycQy< zqUw0ulBOBkKAetqBrG?Q+K?yqq!1z(1bFDfsY6wKaQjxSPvwr<21Rc{C$hra()Y>K z_0M%%GL1^mnDn1)Xcn=Q<&SYomZJ6a4J^m$kmB5!TF3Gzu?2eqBx=0DyDTICqGU3n zxnDwk?hec4s}v(1eRF)u69b$}^mkP=JmhJXKStv2UtESCu9(z;-sb(E3XbD(`HR}M z&WDXp2$K)HD1`Ud{{0b?&*Pm>qm`2?0dy7Zp8Yj0R`VUToz1S({-qTox(mLm8XG=` zy8zGr&CQ))*45_m>*ds&9@PNQX4ub!Brd6Vg^D+8K7bvy1WAfLOZoJS8rg?UN@e<_ zRM1Rc1{+&1(b3+Fefh_3Na1foYQ2@}hX*uUW3->4ojOoG~ItWBpF{Y549 zskaxcG(rc?UNl9->q9H*lv8maxFS8sVGBvy{R7r|R}d#)|G)M>W)gP@3isW6bGz?f zMKbiUd6@gHJqGJtdB|Z9<}s{ znbvEe0P?^C`|KQ-B2$$#YH5+yS&$#GN)sX!0}97Yod3uVP&!Y?wJ8* z!SmVoJk&_bhz&dZX}bs*E3($GQFUwg87=?B8;1~I$f=oM zQF#_7)=~px5oE~93-}l;fb6#7Z+6N~-jZR5!F{2%VSh3Ic^pP4*?4gjCDHblqMpnV z-3Ii$DRps=cBd`+D^pP@Y@J|AtV}8}RN}X0)9=6j3>xK0>`icNQbJZ6*^=hgrU{|j zwa>?|i2oZ_kWs=^qS{2@7v#GzV_turoq1Ex9qm>}9<%45-GB+|{RtG2+Jl8?n?k z-d&UAY;1wDYf|!^k**kt)8QgFb)vM3KpJ8?-!wC-r15DS5E0?+mGfiz_}F?fDHZyw zx#mru1B@ckZ2gz|BK^T7yl$Iw163i0!5B1Yp5_nC8L_})lKh&_>RHT2lSgj?K-cL_ z!ApZJn{jYEDHrtq$V~8cw`jN=K%-*Z4EZ3VM6kn?=`I2aa{SxI%OhQ$5Z`0&ei{6ItmmZ z6McoDa|B$c!smV~ZBWKr;R%hj&80OvFSia!fEcS3-xC(A-8e9RLi9J$M{0twhFlbE z213SwXKk_VyJi3Nh&i+7&fm~dx{IIv;uMH~{<`QdY#QK7f33TausdA?*^YDF;xO8=@E_($Ox(%b zP+30c6y+r8==8r3E-A*#w?^SB)Y4?E~R3SIVORh z?{@s{`hpyr6$E+|_5v_Q9rtqO!$Y4kivwMKM+Z}s5!v=5w%Sy}PXC)rCL%(ZdiA90 z3loioftB&}z+>&weNFzwu{N}PTfYdUj96T)dXxAN49_-xqbkQA-1v&6J`(lbm#Zi! z1-zE$R!AY>w*wNCb-}sAkL!=p{T&WZ>5W9L8O_7Cz%9z-&B{s6&@|?wryf22m_WvJ zhw0v(n|G(V-AlPEh}2O2}7|Me)GqMrby&IZ;w|pfC=~>4ASBP$onk zRupGCN8C_>yu^r>QVVpX;pRmFBKT>e0;Vd%Wz&B)jd#&8_)jE+q$ub)`|O;qS}=UJH~efLuS04 z;!)jAKF8%|DqZxkPTzIqgVWbbpc+OPb^LL5^V#B}LmuO#+fYes3g0f^7UZ+zcWcUC zgEFCP5#`)wr8*^=^Z3Igc@evEtxohWBh1l>E-A4Tzk1YSV2JB0e~BNR~%@Ne41M+`q7 ziD~Ga;u^nkFkL2-iu1Y^8*P(E$BuRS!cl8&Ci*E>f%q6PFvsFmQGy@?5$Yrf+Q0jA z&hBQVvZB+_z5|T#_%ajcy-2q`7xv9^y;_t+t;WwP`(g`K%D5p@(iDx%6ShB&n^Tqe zjog{61I6WD>TLi6`A%XwEwr7nm}pzLKauIWnd9dn)gXRU+c|sLHO(gn&X*=U;AfQJ z*#ME-c1-K#;M(1`?Z0ux)!$X`XzrOn17AV|7m=RHDOilj%I+b}V$$E}(4)A;h60AY z(|nh6QrI-`dHgPD;*!TP8N3eXD^VP^k>NALFqo}997 zCb!Od-&f|9BnF8+RZspNyk3z?d+%&sQulgTJgLpRUOhXLn#6HjXzx6^FU4~65FLnpCbij@Rfpvs+k z+5x80khkAf`fLiSUHHN2^ufvSUhEg;B`rSTW_`qBO0T0+Ab~krGl>lDgkhW`L<6#( zc>+Q?8RL#z$Zp3~zWH$vB*V%ZhogLrasI6ill;n@5BSCvH#ssBXtF)I- zciIqH9|rQ3B0!HAA3ZY!77(J2B)-=xGH#NEz-8%0)O0A3XHm0!prPSN0}PZVlop-( z$24ROg{f;hHU($4cMlY8I*n{uxNkRaXR;+N&nf}_LIyO8`iwBJRmRn^TxRl5?9o!} zA$w-@a4!^XlHXp0_X9RR)mFZdDN(T(MX6fF%;{1b#?nKcQtHJQfx0xlO^UixO*o_* zfu8PHaw+8R@fvq%01~|@Aoh;LZQF3LZ$kA$aay50(TZbU6+R8U1pH`h&wrY4EV;o4DhWaOlZU_HOqn%Qc$_&4GYfH$*JvUh3Dy)LsH#5 z@AY0+F<6x+F)RXQEU>z z538}J@jUQU!W=s7Kz4G(qq74=NoC}gw4r)sniyNE1neX#a*ncqA`dD2w#Sci+kssU~Q;n5KGrZo0%Q@ppvxh zqkd$XU=+U$#k3%X5H4g>k)u010Lm2>DW%x%W%9#pj#*f^2tNID!*auQeRJ3F?HSLO zZ8g@Zv*?3cN(#lxlBf*zapPN@>D(p~N;aeG6$j?4zpe(oN>h)izUmD5vN6V{#FqI~ zvm{98(drhX(s2nqg8U|Tc;r>=NHUHpcLp`HT`bF@Ag!8azfKdyWEIH=* z)1nVr-doA?wP&XCeQ)Xqn<=kTX37qnano5jabja#=m!1d?7$`O#&g8Jygl=UP#GExC!ShjwCo zwQPQOt=+WzxRC~J_*u&9SfoAk{tO>a_Bl|CwhGnA7d*l%fL2MJ2O6YHY-Xar72}U~ z(=!v%!zB43Z8BakFCpndc=?rCDd>C?kAp;aJP%qTJ+w9a@!$UWEyJkRB-PR Ag+ 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 delta 75834 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

8o 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≪j} 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 diff --git a/mac_build/HowToBuildBOINC_XCode.rtf b/mac_build/HowToBuildBOINC_XCode.rtf index 8a50751c27..3f62b7684b 100644 --- a/mac_build/HowToBuildBOINC_XCode.rtf +++ b/mac_build/HowToBuildBOINC_XCode.rtf @@ -1,6 +1,6 @@ {\rtf1\ansi\ansicpg1252\cocoartf1561\cocoasubrtf610 -\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;\f1\fmodern\fcharset0 Courier;\f2\fnil\fcharset0 LucidaGrande; -\f3\fswiss\fcharset0 ArialMT;\f4\fnil\fcharset0 Menlo-Regular;} +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;\f1\fmodern\fcharset0 Courier;\f2\fswiss\fcharset0 ArialMT; +\f3\fnil\fcharset0 Menlo-Regular;\f4\fnil\fcharset0 LucidaGrande;} {\colortbl;\red255\green255\blue255;\red186\green0\blue0;\red14\green14\blue255;\red245\green245\blue245; \red0\green0\blue0;\red255\green255\blue255;\red246\green246\blue246;} {\*\expandedcolortbl;;\csgenericrgb\c72941\c0\c0;\csgenericrgb\c5490\c5490\c100000;\csgenericrgb\c96078\c96078\c96078; @@ -8,16 +8,16 @@ \margl1440\margr1440\vieww14780\viewh11840\viewkind0 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc\partightenfactor0 -\f0\b\fs28 \cf0 Building BOINC Client and Manager on Macintosh OS\ +\f0\b\fs28 \cf0 Building BOINC Client and Manager on Macintosh OSX\ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\partightenfactor0 \b0\fs24 \cf0 \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc\partightenfactor0 \cf0 Written by Charlie Fenton\ -Last updated 9/18/21\ +Last updated 9/30/2121\ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\partightenfactor0 \cf0 \ -This document applies to BOINC version 7.16.14 and later. It has instructions for building the BOINC Client and Manager for Macintosh OS. Information for building science project applications to run under BOINC on Macintosh OS can be found {\field{\*\fldinst{HYPERLINK "http://boinc.berkeley.edu/trac/wiki/BuildMacApp"}}{\fldrslt here}}. \ +This document applies to BOINC version 7.17.0 and later. It has instructions for building the BOINC Client and Manager for Macintosh OSX. Information for building science project applications to run under BOINC on Macintosh OSX can be found {\field{\*\fldinst{HYPERLINK "http://boinc.berkeley.edu/trac/wiki/BuildMacApp"}}{\fldrslt here}}. \ \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\partightenfactor0 @@ -62,14 +62,7 @@ Contents of this document:\ \cf0 \ \pard\pardeftab720\sa260\partightenfactor0 \cf0 As of version 6.13.0, BOINC does not support Macintosh PowerPC processors. As of 7.15.0, BOINC is built entirely for 64-bit Intel, including the BOINC libraries. As of 7.16.14, BOINC is built as Universal2 Binaries which can run on both 64-bit Intel and Apple Silicon (arm64) hardware. \ -You need to take certain steps to ensure that you use only APIs that are available in all the OS versions BOINC supports for each architecture. The best way to accomplish this is to use a single development system running Mac OS 10.9 or later and cross-compile for the various platforms. The remainder of this document describes that process. -\f2 \ -\pard\pardeftab720\partightenfactor0 - -\f0\b \cf0 Important: -\b0 To both be compatible with systems prior to MacOS 10.12 and also to run natively on Apple Silicon Macs, -\b BOINC must be built on MacOS 11.6 or later using Xcode 12.5.1 or later. -\b0 Code built and signed with Xcode 12.0 through 12.5 or on MacOS 11.0 through 11.5 will be rejected with "Signature invalid" on systems prior to MacOS 10.12.\ +You need to take certain steps to ensure that you use only APIs that are available in all the OS versions BOINC supports for each architecture. The best way to accomplish this is to use a single development system running OS 10.8.x or later and cross-compile for the various platforms. The remainder of this document describes that process.\ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0 \cf0 \ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 @@ -85,10 +78,10 @@ You need to take certain steps to ensure that you use only APIs that are availab \pard\pardeftab720\sa260\qc\partightenfactor0 \b\fs28 \cf0 Cross-Platform Development -\f3\fs32 \ +\f2\fs32 \ \pard\pardeftab720\sa260\partightenfactor0 -\f0\b0\fs24 \cf0 Apple provides the tools necessary to build BOINC on any Mac running OS 10.9.x or later.\ +\f0\b0\fs24 \cf0 Apple provides the tools necessary to build BOINC on any Mac running OS 10.8.x or later.\ You get these tools, including the GCC or Apple LLVM compiler and system library header files, by installing the Xcode Tools package. \ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 @@ -110,14 +103,14 @@ You get these tools, including the GCC or Apple LLVM compiler and system library \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\partightenfactor0 \b0\fs24 \cf0 \ -Note: building BOINC Manager 7.16.14 and later requires the Mac OS 10.9 SDK or later.\ +Note: building BOINC Manager 7.3.0 and later requires the OS 10.8 SDK or later.\ \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0 -\cf0 BOINC depends on seven third-party libraries: wxWidgets-3.1.0, c-ares-1.13.0, curl-7.73.0, openssl-1.1.0l, freetype-2.9 and ftgl-2.1.3~rc5. You can obtain the source files from the following URLs. Clicking on the first URL of each pair will download the tar file. The second URL will open the third party\'92s home web page. On MacOS the tar file will usually be downloaded into the Downloads folder. You will need to expand the tar files by double-clicking on them, which will create a folder and place the appropriate files into that folder. You will need to move these folders later.\ +\cf0 BOINC depends on seven third-party libraries: wxWidgets-3.1.5, c-ares-1.13.0, curl-7.73.0, openssl-1.1.0l, freetype-2.9 and ftgl-2.1.3~rc5. You can obtain the source files from the following URLs. Clicking on the first URL of each pair will download the tar file. The second URL will open the third party\'92s home web page. On Mac OS X the tar file will usually be downloaded into the Downloads folder. You will need to expand the tar files by double-clicking on them, which will create a folder and place the appropriate files into that folder. You will need to move these folders later.\ \ -wxWidgets-3.1.0 (needed only if you are building the BOINC Manager):\ - {\field{\*\fldinst{HYPERLINK "https://github.com/wxWidgets/wxWidgets/releases/download/v3.1.0/wxWidgets-3.1.0.tar.bz2"}}{\fldrslt -\f1\fs26 https://github.com/wxWidgets/wxWidgets/releases/download/v3.1.0/wxWidgets-3.1.0.tar.bz2}} +wxWidgets-3.1.5 (needed only if you are building the BOINC Manager):\ + {\field{\*\fldinst{HYPERLINK "https://github.com/wxWidgets/wxWidgets/releases/download/v3.1.5/wxWidgets-3.1.5.tar.bz2"}}{\fldrslt +\f1\fs26 https://github.com/wxWidgets/wxWidgets/releases/download/v3.1.5/wxWidgets-3.1.5.tar.bz2}} \f1\fs26 \ \f0\fs24 {\field{\*\fldinst{HYPERLINK "http://www.wxwidgets.org"}}{\fldrslt @@ -152,12 +145,12 @@ curl-7.73.0:\ \f0\fs24 \cf0 freetype-2.9 (needed only if you are building the BOINC default screensaver or a project screensaver):\ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0 -\f4\fs22 \cf3 \CocoaLigature0 {\field{\*\fldinst{HYPERLINK "https://sourceforge.net/projects/freetype/files/freetype2/2.9/freetype-2.9.tar.bz2"}}{\fldrslt https://sourceforge.net/projects/freetype/files/freetype2/2.9/freetype-2.9.tar.bz2}}\ +\f3\fs22 \cf3 \CocoaLigature0 {\field{\*\fldinst{HYPERLINK "https://sourceforge.net/projects/freetype/files/freetype2/2.9/freetype-2.9.tar.bz2"}}{\fldrslt https://sourceforge.net/projects/freetype/files/freetype2/2.9/freetype-2.9.tar.bz2}}\ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0 \f1\fs26 \cf0 \CocoaLigature1 {\field{\*\fldinst{HYPERLINK "http://www.freetype.org/"}}{\fldrslt -\f4\fs22 \cf3 \CocoaLigature0 http://www.freetype.org/}} -\f4\fs22 \cf3 \CocoaLigature0 \ +\f3\fs22 \cf3 \CocoaLigature0 http://www.freetype.org/}} +\f3\fs22 \cf3 \CocoaLigature0 \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0 \f0\fs24 \cf0 \CocoaLigature1 \ @@ -166,7 +159,7 @@ ftgl-2.1.3~rc5 (needed only if you are building the BOINC default screensaver o \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0 \f1\fs26 \cf0 {\field{\*\fldinst{HYPERLINK "http://sourceforge.net/projects/ftgl"}}{\fldrslt -\f4\fs22 \cf3 \CocoaLigature0 http://sourceforge.net/projects/ftgl}}\ +\f3\fs22 \cf3 \CocoaLigature0 http://sourceforge.net/projects/ftgl}}\ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0 \f0\fs24 \cf0 \ @@ -180,7 +173,7 @@ MAC_OS_X_VERSION_MIN_REQUIRED=1090\ \f0\fs24 \cf0 \ \pard\pardeftab720\sa260\partightenfactor0 -\cf0 These are not done automatically by either the Xcode projects which come with wxWidgets-3.1.0, nor the AutoMake scripts supplied with wxWidgets-3.1.0, c-ares-1.13.0, curl-7.73.0, openssl-1.1.0l, freetype-2.9 and ftgl-2.1.3~rc5. So be sure to use our special scripts to build these packages.\ +\cf0 These are not done automatically by either the Xcode projects which come with wxWidgets-3.1.5, nor the AutoMake scripts supplied with wxWidgets-3.1.5, c-ares-1.13.0, curl-7.73.0, openssl-1.1.0l, freetype-2.9 and ftgl-2.1.3~rc5. So be sure to use our special scripts to build these packages.\ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\partightenfactor0 \cf0 [1] Make sure you are logged into the Mac using an account with administrator privileges. Create a parent directory within which to work. In this description; we will call it BOINC_dev, but you can name it anything you wish.\ \ @@ -194,7 +187,7 @@ MAC_OS_X_VERSION_MIN_REQUIRED=1090\ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0 \cf0 openssl-1.1.0l\ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\partightenfactor0 -\cf0 wxWidgets-3.1.0\ +\cf0 wxWidgets-3.1.5\ freetype-2.9\ ftgl-2.1.3~rc5\ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\partightenfactor0 @@ -249,7 +242,7 @@ If you don't wish to force a full rebuild of everything, omit the -clean argumen \f0\fs24 command to run them.\ \b Note 2: -\b0 This script tries to build all seven third-party libraries: wxWidgets-3.1.0, c-ares-1.13.0, curl-7.73.0, openssl-1.1.0l, freetype-2.9 and ftgl-2.1.3~rc5. When the script finishes, it will display a warning about any libraries it was unable to build (for example, if you have not downloaded them.) To make it easier to find the error messages, clear the Terminal display and run the script again without +\b0 This script tries to build all seven third-party libraries: wxWidgets-3.1.5, c-ares-1.13.0, curl-7.73.0, openssl-1.1.0l, freetype-2.9 and ftgl-2.1.3~rc5. When the script finishes, it will display a warning about any libraries it was unable to build (for example, if you have not downloaded them.) To make it easier to find the error messages, clear the Terminal display and run the script again without \f1 -clean \f0 .\ @@ -274,9 +267,9 @@ If you don't wish to force a full rebuild of everything, omit the -clean argumen \b0 You don't need to type the path to a file or folder into Terminal; just drag the file or folder icon from a Finder window onto the Terminal window.\ \b Note 5: -\b0 To be compatible with OS 10.7 or earlier, the screensaver must be built with Garbage Collection (GC) supported (and without Automatic Reference Counting) , but Xcode versions later than 5.0.2 do not allow building with GC. To allow building with newer versions of Xcode while keeping backward compatibility to OS 10.7, the GIT repository includes the screensaver executable built with GC, while the Xcode project builds the screensaver with ARC (for newer versions of MacOS.) The +\b0 To be compatible with OS 10.7 or earlier, the screensaver must be built with Garbage Collection (GC) supported (and without Automatic Reference Counting) , but Xcode versions later than 5.0.2 do not allow building with GC. To allow building with newer versions of Xcode while keeping backward compatibility to OS 10.7, the GIT repository includes the screensaver executable built with GC, while the Xcode project builds the screensaver with ARC (for newer versions of OS X.) The \f1\fs26 release_boinc.sh -\f0\fs24 script (described later in this document) adds both the GC and ARC builds of the screensaver to the installer; the installer code selects the correct screensaver for the target version of MacOS at install time.\ +\f0\fs24 script (described later in this document) adds both the GC and ARC builds of the screensaver to the installer; the installer code selects the correct screensaver for the target version of OS X at install time.\ \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\partightenfactor0 \cf0 [6] Build BOINC as follows:\ @@ -408,14 +401,14 @@ source \{path\}/BOINC_dev/boinc/mac_installer/release_boinc.sh x y z\ \f0\fs24 \cf0 \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\partightenfactor0 -\cf0 Substitute the 3 parts of the BOINC version number for x y and z in the above. For example, to build the installer for BOINC version 7.16.14, the command would be\ +\cf0 Substitute the 3 parts of the BOINC version number for x y and z in the above. For example, to build the installer for BOINC version 7.9.0, the command would be\ \pard\pardeftab720\partightenfactor0 -\f1\fs26 \cf0 source \{path\}/BOINC_dev/boinc/mac_installer/release_boinc.sh 7 16 14\ +\f1\fs26 \cf0 source \{path\}/BOINC_dev/boinc/mac_installer/release_boinc.sh 7 9 0\ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\partightenfactor0 -\f0\fs24 \cf0 This will create a directory "BOINC_Installer/New_Release_7_16_14" in the BOINC_dev directory, and the installer will be located in ' -\f1\fs26 \{path\}/BOINC_dev/BOINC_Installer/New_Release_7_16_14/boinc_7.16.14_macOSX_universal +\f0\fs24 \cf0 This will create a directory "BOINC_Installer/New_Release_7_9_0" in the BOINC_dev directory, and the installer will be located in ' +\f1\fs26 \{path\}/BOINC_dev/BOINC_Installer/New_Release_7_9_0/boinc_7.9.0_macOSX_x86_64 \f0\fs24 '.\ \ The installer script uses the deployment (release) build of BOINC; it won't work with a development (debug) build.\ @@ -424,14 +417,14 @@ You can find the current version number in the file \fs24 \ \pard\pardeftab720\partightenfactor0 -\f2 \cf0 \ +\f4 \cf0 \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc\partightenfactor0 \f0\b\fs28 \cf0 Code Signing the BOINC Manager Installer and Uninstaller \b0\fs24 \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\partightenfactor0 -\f2 \cf0 \ +\f4 \cf0 \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\partightenfactor0 \f0 \cf0 Mac OS 10.8 introduces a security feature called Gatekeeper, whose default settings won't allow a user to run applications or installers downloaded from the Internet unless they are signed by a registered Apple Developer. The @@ -459,7 +452,17 @@ Developer ID Application: John Smith\ \f1\fs26 ~/BOINCCodeSignIdentities.txt \f0\fs24 file, then the script will not sign the installer or uninstaller. Code signing is not necessary if you won't be transferring the built software over the Internet. For more information on code signing identities see the documentation for the {\field{\*\fldinst{HYPERLINK "https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/codesign.1.html"}}{\fldrslt \f1\fs26 codesign}} utility, Apple's {\field{\*\fldinst{HYPERLINK "https://developer.apple.com/library/mac/documentation/Security/Conceptual/CodeSigningGuide/"}}{\fldrslt Code Signing Guide}} and {\field{\*\fldinst{HYPERLINK "https://developer.apple.com/library/content/technotes/tn2206/_index.htm"}}{\fldrslt Tech Note 2206}}.\ -\ +\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\partightenfactor0 + +\f4 \cf0 \ +\pard\pardeftab720\partightenfactor0 + +\f0\b \cf0 Important: +\b0 Code signed under MacOS 11.0 or later is not compatible with MacOS 10.11.6 or earlier and will be rejected with "Signature invalid." If backward compatibility is desired to allow installing and running on systems prior to MacOS 10.12.0, run the +\f1\fs26 release_boinc.sh +\f0\fs24 script under MacOS 10.15.7 or earlier. You can do this even if you performed the previous steps under MacOS 11.0 or later.\ +\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\partightenfactor0 +\cf0 \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc\partightenfactor0 \b\fs28 \cf0 Debugging and BOINC security @@ -505,7 +508,7 @@ NOTE to building with XCode.\ The general instructions in the mac_build folder in the file HowToBuildBOINC_XCode.pdf should also note that if you want to build using XCode in it's GUI implementation - not command line - alone, you need to put all the downloaded libraries in the folder directly above the build folder. For EG:\ All of these external programs:\ \ -wxWidgets-3.1.0 s-3.1.0.tar.bz2\ +wxWidgets-3.1.0\ curl-7.73.0:\ c-ares-1.13.0 (used by curl):\ openssl-1.1.0l\ From 5bae0cfddde6e1716e7102cf9f0c27f32f405de5 Mon Sep 17 00:00:00 2001 From: Charlie Fenton Date: Fri, 1 Oct 2021 00:22:21 -0700 Subject: [PATCH 10/16] Mac: fix typos in build instructions for BOINC with wxWidgets 3.1.5 on Mac --- mac_build/HowToBuildBOINC_XCode.pdf | Bin 111274 -> 111283 bytes mac_build/HowToBuildBOINC_XCode.rtf | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mac_build/HowToBuildBOINC_XCode.pdf b/mac_build/HowToBuildBOINC_XCode.pdf index 7c7ce60cb0380efb72e29d21bf926e3f72638f2d..340826d38052f9c4a30e9e0a537412030e4bd48a 100644 GIT binary patch delta 50321 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 Date: Fri, 1 Oct 2021 21:56:14 -0700 Subject: [PATCH 11/16] If a scheduler reply has a different master URL than the current one: - if it's a http: to https: change, do it - otherwise tell the user the project seems to have changed its master URL, and they should detach/reattach. Remove the nonsensical "your are attached twice..." message. Note: code you wrote a long time ago sometimes doesn't seem to make any sense at all. --- client/cs_scheduler.cpp | 44 +++++++++++++++++++---------------------- 1 file changed, 20 insertions(+), 24 deletions(-) diff --git a/client/cs_scheduler.cpp b/client/cs_scheduler.cpp index 32bc21c08b..eafccd5e13 100644 --- a/client/cs_scheduler.cpp +++ b/client/cs_scheduler.cpp @@ -592,35 +592,31 @@ int CLIENT_STATE::handle_scheduler_reply( } } - // check that master URL is correct + // compare our URL for this project with the one returned in the reply + // (which comes from the project's config.xml). + // - if http -> https transition, make the change + // - otherwise notify the user. + // This means that if a project changes its master URL, + // its users have to detach/reattach. // if (strlen(sr.master_url)) { canonicalize_master_url(sr.master_url, sizeof(sr.master_url)); - string url1 = sr.master_url; - string url2 = project->master_url; - downcase_string(url1); - downcase_string(url2); - if (url1 != url2) { - p2 = lookup_project(sr.master_url); - if (p2) { - msg_printf(project, MSG_USER_ALERT, - "You are attached to this project twice. Please remove projects named %s, then add %s", - project->project_name, - sr.master_url + string reply_url = sr.master_url; + string current_url = project->master_url; + downcase_string(reply_url); + downcase_string(current_url); + if (reply_url != current_url) { + if (is_https_transition(current_url.c_str(), reply_url.c_str())) { + strcpy(project->master_url, reply_url.c_str()); + project->write_account_file(); + msg_printf(project, MSG_INFO, + "Project URL changed from http:// to https://" ); } else { - if (is_https_transition(url2.c_str(), url1.c_str())) { - strcpy(project->master_url, url1.c_str()); - project->write_account_file(); - msg_printf(project, MSG_INFO, - "Project URL changed from http:// to https://" - ); - } else { - msg_printf(project, MSG_USER_ALERT, - _("This project is using an old URL. When convenient, remove the project, then add %s"), - sr.master_url - ); - } + msg_printf(project, MSG_USER_ALERT, + _("This project seems to have changed its URL. When convenient, remove the project, then add %s"), + sr.master_url + ); } } } From 8d277918cc9c2bed78ec4adcd745abd1c21d9cb6 Mon Sep 17 00:00:00 2001 From: Vitalii Koshura Date: Sat, 2 Oct 2021 14:49:51 +0200 Subject: [PATCH 12/16] Update ca-bundle.crt Signed-off-by: Vitalii Koshura --- curl/ca-bundle.crt | 976 +++++++++++++++++---------------------------- 1 file changed, 360 insertions(+), 616 deletions(-) diff --git a/curl/ca-bundle.crt b/curl/ca-bundle.crt index 176f09e193..a1dc575dd7 100644 --- a/curl/ca-bundle.crt +++ b/curl/ca-bundle.crt @@ -1,7 +1,7 @@ ## ## Bundle of CA Root Certificates ## -## Certificate data from Mozilla as of: Sun May 31 11:58:46 2020 GMT +## Certificate data from Mozilla as of: Thu Sep 30 03:12:05 2021 GMT ## ## This is a bundle of X.509 certificates of public Certificate Authorities ## (CA). These were automatically extracted from Mozilla's root certificates @@ -14,7 +14,7 @@ ## Just configure this file as the SSLCACertificateFile. ## ## Conversion done with mk-ca-bundle.pl version 1.28. -## SHA256: f3bdcd74612952da8476a9d4147f50b29ad0710b7dd95b4c8690500209986d70 +## SHA256: c8f6733d1ff4e6a4769c182971a1234f95ae079247a9c439a13423fe8ba5c24f ## @@ -61,30 +61,6 @@ BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg== -----END CERTIFICATE----- -Verisign Class 3 Public Primary Certification Authority - G3 -============================================================ ------BEGIN CERTIFICATE----- -MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV -UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv -cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl -IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh -dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw -CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy -dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv -cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkg -Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC -ggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1 -EUGO+i2tKmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUc -cLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+Vk7+qRy+oRpfw -EuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJXwzw3sJ2zq/3avL6QaaiMxTJ5Xpj -055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA -ERSWwauSCPc/L8my/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f -j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC -/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565pF4ErWjfJXir0 -xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDa -t20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== ------END CERTIFICATE----- - Entrust.net Premium 2048 Secure Server CA ========================================= -----BEGIN CERTIFICATE----- @@ -156,87 +132,6 @@ W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0 tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8 -----END CERTIFICATE----- -GeoTrust Global CA -================== ------BEGIN CERTIFICATE----- -MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQK -Ew1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQw -MDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j -LjEbMBkGA1UEAxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB -CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjo -BbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet -8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+Vc -T4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagU -vTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTAD -AQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVk -DBF9qn1luMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Q -zxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWVYrmm3ok9Nns4 -d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcFPseKUgzbFbS9bZvlxrFUaKnjaZC2 -mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6p -XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm -Mw== ------END CERTIFICATE----- - -GeoTrust Universal CA -===================== ------BEGIN CERTIFICATE----- -MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN -R2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVyc2FsIENBMB4XDTA0MDMwNDA1 -MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IElu -Yy4xHjAcBgNVBAMTFUdlb1RydXN0IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIP -ADCCAgoCggIBAKYVVaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9t -JPi8cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTTQjOgNB0e -RXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFhF7em6fgemdtzbvQKoiFs -7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2vc7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d -8Lsrlh/eezJS/R27tQahsiFepdaVaH/wmZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7V -qnJNk22CDtucvc+081xdVHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3Cga -Rr0BHdCXteGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZf9hB -Z3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfReBi9Fi1jUIxaS5BZu -KGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+nhutxx9z3SxPGWX9f5NAEC7S8O08 -ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0 -XG0D08DYj3rWMB8GA1UdIwQYMBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIB -hjANBgkqhkiG9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc -aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fXIwjhmF7DWgh2 -qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzynANXH/KttgCJwpQzgXQQpAvvL -oJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0zuzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsK -xr2EoyNB3tZ3b4XUhRxQ4K5RirqNPnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxF -KyDuSN/n3QmOGKjaQI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2 -DFKWkoRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9ER/frslK -xfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQtDF4JbAiXfKM9fJP/P6EU -p8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/SfuvmbJxPgWp6ZKy7PtXny3YuxadIwVyQD8vI -P/rmMuGNG2+k5o7Y+SlIis5z/iw= ------END CERTIFICATE----- - -GeoTrust Universal CA 2 -======================= ------BEGIN CERTIFICATE----- -MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN -R2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwHhcNMDQwMzA0 -MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3Qg -SW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUA -A4ICDwAwggIKAoICAQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0 -DE81WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUGFF+3Qs17 -j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdqXbboW0W63MOhBW9Wjo8Q -JqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxLse4YuU6W3Nx2/zu+z18DwPw76L5GG//a -QMJS9/7jOvdqdzXQ2o3rXhhqMcceujwbKNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2 -WP0+GfPtDCapkzj4T8FdIgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP -20gaXT73y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRthAAn -ZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgocQIgfksILAAX/8sgC -SqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4Lt1ZrtmhN79UNdxzMk+MBB4zsslG -8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2 -+/CfXGJx7Tz0RzgQKzAfBgNVHSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8E -BAMCAYYwDQYJKoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z -dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQL1EuxBRa3ugZ -4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgrFg5fNuH8KrUwJM/gYwx7WBr+ -mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSoag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpq -A1Ihn0CoZ1Dy81of398j9tx4TuaYT1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpg -Y+RdM4kX2TGq2tbzGDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiP -pm8m1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJVOCiNUW7d -FGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH6aLcr34YEoP9VhdBLtUp -gn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwXQMAJKOSLakhT2+zNVVXxxvjpoixMptEm -X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS ------END CERTIFICATE----- - Comodo AAA Services root ======================== -----BEGIN CERTIFICATE----- @@ -261,38 +156,6 @@ Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z 12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== -----END CERTIFICATE----- -QuoVadis Root CA -================ ------BEGIN CERTIFICATE----- -MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJCTTEZMBcGA1UE -ChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 -eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAz -MTkxODMzMzNaFw0yMTAzMTcxODMzMzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRp -cyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQD -EyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF -AAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Ypli4kVEAkOPcahdxYTMuk -J0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2DrOpm2RgbaIr1VxqYuvXtdj182d6UajtL -F8HVj71lODqV0D1VNk7feVcxKh7YWWVJWCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeL -YzcS19Dsw3sgQUSj7cugF+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWen -AScOospUxbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCCAk4w -PQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVvdmFkaXNvZmZzaG9y -ZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREwggENMIIBCQYJKwYBBAG+WAABMIH7 -MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNlIG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmlj -YXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs -ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh -Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYIKwYBBQUHAgEW -Fmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3TKbkGGew5Oanwl4Rqy+/fMIGu -BgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rqy+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkw -FwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0 -aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6 -tlCLMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSkfnIYj9lo -fFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf87C9TqnN7Az10buYWnuul -LsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1RcHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2x -gI4JVrmcGmD+XcHXetwReNDWXcG31a0ymQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi -5upZIof4l/UO/erMkqQWxFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi -5nrQNiOKSnQ2+Q== ------END CERTIFICATE----- - QuoVadis Root CA 2 ================== -----BEGIN CERTIFICATE----- @@ -380,26 +243,6 @@ s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ FL39vmwLAw== -----END CERTIFICATE----- -Sonera Class 2 Root CA -====================== ------BEGIN CERTIFICATE----- -MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG -U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAxMDQwNjA3Mjk0MFoXDTIxMDQw -NjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh -IENsYXNzMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3 -/Ei9vX+ALTU74W+oZ6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybT -dXnt5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s3TmVToMG -f+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2EjvOr7nQKV0ba5cTppCD8P -tOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu8nYybieDwnPz3BjotJPqdURrBGAgcVeH -nfO+oJAjPYok4doh28MCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITT -XjwwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt -0jSv9zilzqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/3DEI -cbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvDFNr450kkkdAdavph -Oe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6Tk6ezAyNlNzZRZxe7EJQY670XcSx -EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH -llpwrN9M ------END CERTIFICATE----- - XRamp Global CA Root ==================== -----BEGIN CERTIFICATE----- @@ -472,36 +315,6 @@ KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3 QBFGmh95DmK/D5fs4C8fF5Q= -----END CERTIFICATE----- -Taiwan GRCA -=========== ------BEGIN CERTIFICATE----- -MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQG -EwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4X -DTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1owPzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dv -dmVybm1lbnQgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQAD -ggIPADCCAgoCggIBAJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qN -w8XRIePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1qgQdW8or5 -BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKyyhwOeYHWtXBiCAEuTk8O -1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAtsF/tnyMKtsc2AtJfcdgEWFelq16TheEfO -htX7MfP6Mb40qij7cEwdScevLJ1tZqa2jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wov -J5pGfaENda1UhhXcSTvxls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7 -Q3hub/FCVGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHKYS1t -B6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoHEgKXTiCQ8P8NHuJB -O9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThNXo+EHWbNxWCWtFJaBYmOlXqYwZE8 -lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1UdDgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNV -HRMEBTADAQH/MDkGBGcqBwAEMTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg2 -09yewDL7MTqKUWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZ -TulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyfqzvS/3WXy6Tj -Zwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaKZEk9GhiHkASfQlK3T8v+R0F2 -Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFEJPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlU -D7gsL0u8qV1bYH+Mh6XgUmMqvtg7hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6Qz -DxARvBMB1uUO07+1EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+Hbk -Z6MmnD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WXudpVBrkk -7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44VbnzssQwmSNOXfJIoRIM3BKQ -CZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDeLMDDav7v3Aun+kbfYNucpllQdSNpc5Oy -+fwC00fmcc4QAu4njIT/rEUNE1yDMuAlpYYsfPQS ------END CERTIFICATE----- - DigiCert Assured ID Root CA =========================== -----BEGIN CERTIFICATE----- @@ -568,26 +381,6 @@ mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K -----END CERTIFICATE----- -DST Root CA X3 -============== ------BEGIN CERTIFICATE----- -MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/MSQwIgYDVQQK -ExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4X -DTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVowPzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1 -cmUgVHJ1c3QgQ28uMRcwFQYDVQQDEw5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQAD -ggEPADCCAQoCggEBAN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmT -rE4Orz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEqOLl5CjH9 -UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9bxiqKqy69cK3FCxolkHRy -xXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40d -utolucbY38EVAjqr2m7xPi71XAicPNaDaeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0T -AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQ -MA0GCSqGSIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69ikug -dB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXrAvHRAosZy5Q6XkjE -GB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZzR8srzJmwN0jP41ZL9c8PDHIyh8bw -RLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubS -fZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ ------END CERTIFICATE----- - SwissSign Gold CA - G2 ====================== -----BEGIN CERTIFICATE----- @@ -650,78 +443,6 @@ DIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ub DgEj8Z+7fNzcbBGXJbLytGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u -----END CERTIFICATE----- -GeoTrust Primary Certification Authority -======================================== ------BEGIN CERTIFICATE----- -MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQG -EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMoR2VvVHJ1c3QgUHJpbWFyeSBD -ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgx -CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQ -cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB -CgKCAQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9AWbK7hWN -b6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjAZIVcFU2Ix7e64HXprQU9 -nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE07e9GceBrAqg1cmuXm2bgyxx5X9gaBGge -RwLmnWDiNpcB3841kt++Z8dtd1k7j53WkBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGt -tm/81w7a4DSwDRp35+MImO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD -AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJKoZI -hvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ16CePbJC/kRYkRj5K -Ts4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl4b7UVXGYNTq+k+qurUKykG/g/CFN -NWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6KoKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHa -Floxt/m0cYASSJlyc1pZU8FjUjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG -1riR/aYNKxoUAT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk= ------END CERTIFICATE----- - -thawte Primary Root CA -====================== ------BEGIN CERTIFICATE----- -MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCBqTELMAkGA1UE -BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2 -aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv -cml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3 -MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwg -SW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMv -KGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMT -FnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCs -oPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ -1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGc -q/gcfomk6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/K -aAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR32HuHUETVPm4p -afs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD -VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUF -AAOCAQEAeRHAS7ORtvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE -uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX -xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2/qxAeeWsEG89 -jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVH -z7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA== ------END CERTIFICATE----- - -VeriSign Class 3 Public Primary Certification Authority - G5 -============================================================ ------BEGIN CERTIFICATE----- -MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE -BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO -ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk -IHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRp -ZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCB -yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln -biBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBh -dXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmlt -YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw -ggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKz -j/i5Vbext0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhD -Y2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/ -Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNHiDxpg8v+R70r -fk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/ -BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2Uv -Z2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy -aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqG -SIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzEp6B4Eq1iDkVwZMXnl2YtmAl+ -X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKE -KQsTb47bDN0lAtukixlE0kF6BWlKWE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiC -Km0oHw0LxOXnGiYZ4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vE -ZV8NhnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq ------END CERTIFICATE----- - SecureTrust CA ============== -----BEGIN CERTIFICATE----- @@ -830,29 +551,6 @@ FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= -----END CERTIFICATE----- -OISTE WISeKey Global Root GA CA -=============================== ------BEGIN CERTIFICATE----- -MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UE -BhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHlyaWdodCAoYykgMjAwNTEiMCAG -A1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBH -bG9iYWwgUm9vdCBHQSBDQTAeFw0wNTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYD -VQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIw -IAYDVQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5 -IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0+zAJs9 -Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxRVVuuk+g3/ytr6dTqvirdqFEr12bDYVxg -Asj1znJ7O7jyTmUIms2kahnBAbtzptf2w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbD -d50kc3vkDIzh2TbhmYsFmQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ -/yxViJGg4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t94B3R -LoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw -AwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ -KoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOxSPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vIm -MMkQyh2I+3QZH4VFvbBsUfk2ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4 -+vg1YFkCExh8vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa -hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY -okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0= ------END CERTIFICATE----- - Certigna ======== -----BEGIN CERTIFICATE----- @@ -948,136 +646,6 @@ vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD -----END CERTIFICATE----- -GeoTrust Primary Certification Authority - G3 -============================================= ------BEGIN CERTIFICATE----- -MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UE -BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA4IEdlb1RydXN0 -IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFy -eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIz -NTk1OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAo -YykgMjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMT -LUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5j -K/BGvESyiaHAKAxJcCGVn2TAppMSAmUmhsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdE -c5IiaacDiGydY8hS2pgn5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3C -IShwiP/WJmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exALDmKu -dlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZChuOl1UcCAwEAAaNC -MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMR5yo6hTgMdHNxr -2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IBAQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9 -cr5HqQ6XErhK8WTTOd8lNNTBzU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbE -Ap7aDHdlDkQNkv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD -AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUHSJsMC8tJP33s -t/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2Gspki4cErx5z481+oghLrGREt ------END CERTIFICATE----- - -thawte Primary Root CA - G2 -=========================== ------BEGIN CERTIFICATE----- -MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDELMAkGA1UEBhMC -VVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMpIDIwMDcgdGhhd3RlLCBJbmMu -IC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3Qg -Q0EgLSBHMjAeFw0wNzExMDUwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEV -MBMGA1UEChMMdGhhd3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBG -b3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAt -IEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/BebfowJPDQfGAFG6DAJS -LSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6papu+7qzcMBniKI11KOasf2twu8x+qi5 -8/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU -mtgAMADna3+FGO6Lts6KDPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUN -G4k8VIZ3KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41oxXZ3K -rr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg== ------END CERTIFICATE----- - -thawte Primary Root CA - G3 -=========================== ------BEGIN CERTIFICATE----- -MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCBrjELMAkGA1UE -BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2 -aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv -cml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0w -ODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh -d3RlLCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMTgwNgYD -VQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIG -A1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A -MIIBCgKCAQEAsr8nLPvb2FvdeHsbnndmgcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2At -P0LMqmsywCPLLEHd5N/8YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC -+BsUa0Lfb1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS99irY -7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2SzhkGcuYMXDhpxwTW -vGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUkOQIDAQABo0IwQDAPBgNVHRMBAf8E -BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJ -KoZIhvcNAQELBQADggEBABpA2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweK -A3rD6z8KLFIWoCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu -t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7cKUGRIjxpp7sC -8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fMm7v/OeZWYdMKp8RcTGB7BXcm -er/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZuMdRAGmI0Nj81Aa6sY6A= ------END CERTIFICATE----- - -GeoTrust Primary Certification Authority - G2 -============================================= ------BEGIN CERTIFICATE----- -MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDELMAkGA1UEBhMC -VVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA3IEdlb1RydXN0IElu -Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBD -ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1 -OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg -MjAwNyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMTLUdl -b1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjB2MBAGByqGSM49AgEG -BSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcLSo17VDs6bl8VAsBQps8lL33KSLjHUGMc -KiEIfJo22Av+0SbFWDEwKCXzXV2juLaltJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYD -VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+ -EVXVMAoGCCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGTqQ7m -ndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBuczrD6ogRLQy7rQkgu2 -npaqBA+K ------END CERTIFICATE----- - -VeriSign Universal Root Certification Authority -=============================================== ------BEGIN CERTIFICATE----- -MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UE -BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO -ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk -IHVzZSBvbmx5MTgwNgYDVQQDEy9WZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9u -IEF1dGhvcml0eTAeFw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJV -UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv -cmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl -IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0 -aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj -1mCOkdeQmIN65lgZOIzF9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGP -MiJhgsWHH26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+HLL72 -9fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN/BMReYTtXlT2NJ8I -AfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPTrJ9VAMf2CGqUuV/c4DPxhGD5WycR -tPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0G -CCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2O -a8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud -DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4sAPmLGd75JR3 -Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+seQxIcaBlVZaDrHC1LGmWazx -Y8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTx -P/jgdFcrGJ2BtMQo2pSXpXDrrB2+BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+P -wGZsY6rp2aQW9IHRlRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4 -mJO37M2CYfE45k+XmCpajQ== ------END CERTIFICATE----- - -VeriSign Class 3 Public Primary Certification Authority - G4 -============================================================ ------BEGIN CERTIFICATE----- -MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjELMAkGA1UEBhMC -VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3 -b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVz -ZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmlj -YXRpb24gQXV0aG9yaXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjEL -MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU -cnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRo -b3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5 -IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8 -Utpkmw4tXNherJI9/gHmGUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGz -rl0Bp3vefLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUwAwEB -/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEw -HzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24u -Y29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMWkf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMD -A2gAMGUCMGYhDBgmYFo4e1ZC4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIx -AJw9SDkjOVgaFRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA== ------END CERTIFICATE----- - NetLock Arany (Class Gold) Főtanúsítvány ======================================== -----BEGIN CERTIFICATE----- @@ -1253,82 +821,6 @@ Q0iy2+tzJOeRf1SktoA+naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1Z WrOZyGlsQyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw== -----END CERTIFICATE----- -Chambers of Commerce Root - 2008 -================================ ------BEGIN CERTIFICATE----- -MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYDVQQGEwJFVTFD -MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv -bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu -QS4xKTAnBgNVBAMTIENoYW1iZXJzIG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEy -Mjk1MFoXDTM4MDczMTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNl -ZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQF -EwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJl -cnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC -AQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW928sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKA -XuFixrYp4YFs8r/lfTJqVKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorj -h40G072QDuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR5gN/ -ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfLZEFHcpOrUMPrCXZk -NNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05aSd+pZgvMPMZ4fKecHePOjlO+Bd5g -D2vlGts/4+EhySnB8esHnFIbAURRPHsl18TlUlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331 -lubKgdaX8ZSD6e2wsWsSaR6s+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ -0wlf2eOKNcx5Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj -ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAxhduub+84Mxh2 -EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNVHQ4EFgQU+SSsD7K1+HnA+mCI -G8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJ -BgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNh -bWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENh -bWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDiC -CQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUH -AgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAJASryI1 -wqM58C7e6bXpeHxIvj99RZJe6dqxGfwWPJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH -3qLPaYRgM+gQDROpI9CF5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbU -RWpGqOt1glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaHFoI6 -M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2pSB7+R5KBWIBpih1 -YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MDxvbxrN8y8NmBGuScvfaAFPDRLLmF -9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QGtjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcK -zBIKinmwPQN/aUv0NCB9szTqjktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvG -nrDQWzilm1DefhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg -OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZd0jQ ------END CERTIFICATE----- - -Global Chambersign Root - 2008 -============================== ------BEGIN CERTIFICATE----- -MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYDVQQGEwJFVTFD -MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv -bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu -QS4xJzAlBgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMx -NDBaFw0zODA3MzExMjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUg -Y3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJ -QTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD -aGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDf -VtPkOpt2RbQT2//BthmLN0EYlVJH6xedKYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXf -XjaOcNFccUMd2drvXNL7G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0 -ZJJ0YPP2zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4ddPB -/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyGHoiMvvKRhI9lNNgA -TH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2Id3UwD2ln58fQ1DJu7xsepeY7s2M -H/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3VyJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfe -Ox2YItaswTXbo6Al/3K1dh3ebeksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSF -HTynyQbehP9r6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh -wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsogzCtLkykPAgMB -AAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQWBBS5CcqcHtvTbDprru1U8VuT -BjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDprru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UE -BhMCRVUxQzBBBgNVBAcTOk1hZHJpZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJm -aXJtYS5jb20vYWRkcmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJm -aXJtYSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiCCQDJzdPp -1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0 -dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAICIf3DekijZBZRG -/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZUohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6 -ReAJ3spED8IXDneRRXozX1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/s -dZ7LoR/xfxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVza2Mg -9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yydYhz2rXzdpjEetrHH -foUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMdSqlapskD7+3056huirRXhOukP9Du -qqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9OAP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETr -P3iZ8ntxPjzxmKfFGBI/5rsoM0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVq -c5iJWzouE4gev8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z -09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B ------END CERTIFICATE----- - Go Daddy Root Certificate Authority - G2 ======================================== -----BEGIN CERTIFICATE----- @@ -1630,27 +1122,6 @@ OR/qnuOf0GZvBeyqdn6/axag67XH/JJULysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9 vwGYT7JZVEc+NHt4bVaTLnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg== -----END CERTIFICATE----- -Trustis FPS Root CA -=================== ------BEGIN CERTIFICATE----- -MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQG -EwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQLExNUcnVzdGlzIEZQUyBSb290 -IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTExMzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNV -BAoTD1RydXN0aXMgTGltaXRlZDEcMBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJ -KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQ -RUN+AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihHiTHcDnlk -H5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjjvSkCqPoc4Vu5g6hBSLwa -cY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zt -o3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlBOrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEA -AaNTMFEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAd -BgNVHQ4EFgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01GX2c -GE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmWzaD+vkAMXBJV+JOC -yinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP41BIy+Q7DsdwyhEQsb8tGD+pmQQ9P -8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZEf1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHV -l/9D7S3B2l0pKoU/rGXuhg8FjZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYl -iB6XzCGcKQENZetX2fNXlrtIzYE= ------END CERTIFICATE----- - Buypass Class 2 Root CA ======================= -----BEGIN CERTIFICATE----- @@ -1733,30 +1204,6 @@ P0HHRwA11fXT91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4pTpPDpFQUWw== -----END CERTIFICATE----- -EE Certification Centre Root CA -=============================== ------BEGIN CERTIFICATE----- -MIIEAzCCAuugAwIBAgIQVID5oHPtPwBMyonY43HmSjANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG -EwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2Vy -dGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMCIYDzIw -MTAxMDMwMTAxMDMwWhgPMjAzMDEyMTcyMzU5NTlaMHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlB -UyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRy -ZSBSb290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEBAQUAA4IB -DwAwggEKAoIBAQDIIMDs4MVLqwd4lfNE7vsLDP90jmG7sWLqI9iroWUyeuuOF0+W2Ap7kaJjbMeM -TC55v6kF/GlclY1i+blw7cNRfdCT5mzrMEvhvH2/UpvObntl8jixwKIy72KyaOBhU8E2lf/slLo2 -rpwcpzIP5Xy0xm90/XsY6KxX7QYgSzIwWFv9zajmofxwvI6Sc9uXp3whrj3B9UiHbCe9nyV0gVWw -93X2PaRka9ZP585ArQ/dMtO8ihJTmMmJ+xAdTX7Nfh9WDSFwhfYggx/2uh8Ej+p3iDXE/+pOoYtN -P2MbRMNE1CV2yreN1x5KZmTNXMWcg+HCCIia7E6j8T4cLNlsHaFLAgMBAAGjgYowgYcwDwYDVR0T -AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLyWj7qVhy/zQas8fElyalL1BSZ -MEUGA1UdJQQ+MDwGCCsGAQUFBwMCBggrBgEFBQcDAQYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEF -BQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQEFBQADggEBAHv25MANqhlHt01Xo/6tu7Fq1Q+e2+Rj -xY6hUFaTlrg4wCQiZrxTFGGVv9DHKpY5P30osxBAIWrEr7BSdxjhlthWXePdNl4dp1BUoMUq5KqM -lIpPnTX/dqQGE5Gion0ARD9V04I8GtVbvFZMIi5GQ4okQC3zErg7cBqklrkar4dBGmoYDQZPxz5u -uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIWiAYLtqZLICjU -3j2LrTcFU3T+bsy8QxdxXvnFzBqpYe73dgzzcvRyrc9yAjYHR8/vGVCJYMzpJJUPwssd8m92kMfM -dcGWxZ0= ------END CERTIFICATE----- - D-TRUST Root Class 3 CA 2 2009 ============================== -----BEGIN CERTIFICATE----- @@ -2319,36 +1766,6 @@ uglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7 yFz9SO8NdCKoCOJuxUnOxwy8p2Fp8fc74SrL+SvzZpA3 -----END CERTIFICATE----- -Staat der Nederlanden Root CA - G3 -================================== ------BEGIN CERTIFICATE----- -MIIFdDCCA1ygAwIBAgIEAJiiOTANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJOTDEeMBwGA1UE -CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFhdCBkZXIgTmVkZXJsYW5kZW4g -Um9vdCBDQSAtIEczMB4XDTEzMTExNDExMjg0MloXDTI4MTExMzIzMDAwMFowWjELMAkGA1UEBhMC -TkwxHjAcBgNVBAoMFVN0YWF0IGRlciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5l -ZGVybGFuZGVuIFJvb3QgQ0EgLSBHMzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAL4y -olQPcPssXFnrbMSkUeiFKrPMSjTysF/zDsccPVMeiAho2G89rcKezIJnByeHaHE6n3WWIkYFsO2t -x1ueKt6c/DrGlaf1F2cY5y9JCAxcz+bMNO14+1Cx3Gsy8KL+tjzk7FqXxz8ecAgwoNzFs21v0IJy -EavSgWhZghe3eJJg+szeP4TrjTgzkApyI/o1zCZxMdFyKJLZWyNtZrVtB0LrpjPOktvA9mxjeM3K -Tj215VKb8b475lRgsGYeCasH/lSJEULR9yS6YHgamPfJEf0WwTUaVHXvQ9Plrk7O53vDxk5hUUur -mkVLoR9BvUhTFXFkC4az5S6+zqQbwSmEorXLCCN2QyIkHxcE1G6cxvx/K2Ya7Irl1s9N9WMJtxU5 -1nus6+N86U78dULI7ViVDAZCopz35HCz33JvWjdAidiFpNfxC95DGdRKWCyMijmev4SH8RY7Ngzp -07TKbBlBUgmhHbBqv4LvcFEhMtwFdozL92TkA1CvjJFnq8Xy7ljY3r735zHPbMk7ccHViLVlvMDo -FxcHErVc0qsgk7TmgoNwNsXNo42ti+yjwUOH5kPiNL6VizXtBznaqB16nzaeErAMZRKQFWDZJkBE -41ZgpRDUajz9QdwOWke275dhdU/Z/seyHdTtXUmzqWrLZoQT1Vyg3N9udwbRcXXIV2+vD3dbAgMB -AAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRUrfrHkleu -yjWcLhL75LpdINyUVzANBgkqhkiG9w0BAQsFAAOCAgEAMJmdBTLIXg47mAE6iqTnB/d6+Oea31BD -U5cqPco8R5gu4RV78ZLzYdqQJRZlwJ9UXQ4DO1t3ApyEtg2YXzTdO2PCwyiBwpwpLiniyMMB8jPq -KqrMCQj3ZWfGzd/TtiunvczRDnBfuCPRy5FOCvTIeuXZYzbB1N/8Ipf3YF3qKS9Ysr1YvY2WTxB1 -v0h7PVGHoTx0IsL8B3+A3MSs/mrBcDCw6Y5p4ixpgZQJut3+TcCDjJRYwEYgr5wfAvg1VUkvRtTA -8KCWAg8zxXHzniN9lLf9OtMJgwYh/WA9rjLA0u6NpvDntIJ8CsxwyXmA+P5M9zWEGYox+wrZ13+b -8KKaa8MFSu1BYBQw0aoRQm7TIwIEC8Zl3d1Sd9qBa7Ko+gE4uZbqKmxnl4mUnrzhVNXkanjvSr0r -mj1AfsbAddJu+2gw7OyLnflJNZoaLNmzlTnVHpL3prllL+U9bTpITAjc5CgSKL59NVzq4BZ+Extq -1z7XnvwtdbLBFNUjA9tbbws+eC8N3jONFrdI54OagQ97wUNNVQQXOEpR1VmiiXTTn74eS9fGbbeI -JG9gkaSChVtWQbzQRKtqE77RLFi3EjNYsjdj3BP1lB0/QFH1T/U67cjF68IeHRaVesd+QnGTbksV -tzDfqu1XhUisHWrdOWnk4Xl4vs4Fv6EM94B7IWcnMFk= ------END CERTIFICATE----- - Staat der Nederlanden EV Root CA ================================ -----BEGIN CERTIFICATE----- @@ -2775,37 +2192,6 @@ MGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlwCkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1 AE47xDqUEpHJWEadIRNyp4iciuRMStuW1KyLa2tJElMzrdfkviT8tQp21KW8EA== -----END CERTIFICATE----- -LuxTrust Global Root 2 -====================== ------BEGIN CERTIFICATE----- -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 ------END CERTIFICATE----- - TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 ============================================= -----BEGIN CERTIFICATE----- @@ -3408,3 +2794,361 @@ JOgc47OlIQ6SwJAfzyBfyjs4x7dtOvPmRLgOMWuIjnDrnBdSqEGULoe256YSxXXfW8AKbnuk5F6G +TaU33fD6Q3AOfF5u0aOq0NZJ7cguyPpVkAh7DE9ZapD8j3fcEThuk0mEDuYn/PIjhs4ViFqUZPT kcpG2om3PVODLAgfi49T3f+sHw== -----END CERTIFICATE----- + +Microsoft ECC Root Certificate Authority 2017 +============================================= +-----BEGIN CERTIFICATE----- +MIICWTCCAd+gAwIBAgIQZvI9r4fei7FK6gxXMQHC7DAKBggqhkjOPQQDAzBlMQswCQYDVQQGEwJV +UzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1NaWNyb3NvZnQgRUND +IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwHhcNMTkxMjE4MjMwNjQ1WhcNNDIwNzE4 +MjMxNjA0WjBlMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYw +NAYDVQQDEy1NaWNyb3NvZnQgRUNDIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwdjAQ +BgcqhkjOPQIBBgUrgQQAIgNiAATUvD0CQnVBEyPNgASGAlEvaqiBYgtlzPbKnR5vSmZRogPZnZH6 +thaxjG7efM3beaYvzrvOcS/lpaso7GMEZpn4+vKTEAXhgShC48Zo9OYbhGBKia/teQ87zvH2RPUB +eMCjVDBSMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTIy5lycFIM ++Oa+sgRXKSrPQhDtNTAQBgkrBgEEAYI3FQEEAwIBADAKBggqhkjOPQQDAwNoADBlAjBY8k3qDPlf +Xu5gKcs68tvWMoQZP3zVL8KxzJOuULsJMsbG7X7JNpQS5GiFBqIb0C8CMQCZ6Ra0DvpWSNSkMBaR +eNtUjGUBiudQZsIxtzm6uBoiB078a1QWIP8rtedMDE2mT3M= +-----END CERTIFICATE----- + +Microsoft RSA Root Certificate Authority 2017 +============================================= +-----BEGIN CERTIFICATE----- +MIIFqDCCA5CgAwIBAgIQHtOXCV/YtLNHcB6qvn9FszANBgkqhkiG9w0BAQwFADBlMQswCQYDVQQG +EwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1NaWNyb3NvZnQg +UlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwHhcNMTkxMjE4MjI1MTIyWhcNNDIw +NzE4MjMwMDIzWjBlMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9u +MTYwNAYDVQQDEy1NaWNyb3NvZnQgUlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcw +ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKW76UM4wplZEWCpW9R2LBifOZNt9GkMml +7Xhqb0eRaPgnZ1AzHaGm++DlQ6OEAlcBXZxIQIJTELy/xztokLaCLeX0ZdDMbRnMlfl7rEqUrQ7e +S0MdhweSE5CAg2Q1OQT85elss7YfUJQ4ZVBcF0a5toW1HLUX6NZFndiyJrDKxHBKrmCk3bPZ7Pw7 +1VdyvD/IybLeS2v4I2wDwAW9lcfNcztmgGTjGqwu+UcF8ga2m3P1eDNbx6H7JyqhtJqRjJHTOoI+ +dkC0zVJhUXAoP8XFWvLJjEm7FFtNyP9nTUwSlq31/niol4fX/V4ggNyhSyL71Imtus5Hl0dVe49F +yGcohJUcaDDv70ngNXtk55iwlNpNhTs+VcQor1fznhPbRiefHqJeRIOkpcrVE7NLP8TjwuaGYaRS +MLl6IE9vDzhTyzMMEyuP1pq9KsgtsRx9S1HKR9FIJ3Jdh+vVReZIZZ2vUpC6W6IYZVcSn2i51BVr +lMRpIpj0M+Dt+VGOQVDJNE92kKz8OMHY4Xu54+OU4UZpyw4KUGsTuqwPN1q3ErWQgR5WrlcihtnJ +0tHXUeOrO8ZV/R4O03QK0dqq6mm4lyiPSMQH+FJDOvTKVTUssKZqwJz58oHhEmrARdlns87/I6KJ +ClTUFLkqqNfs+avNJVgyeY+QW5g5xAgGwax/Dj0ApQIDAQABo1QwUjAOBgNVHQ8BAf8EBAMCAYYw +DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUCctZf4aycI8awznjwNnpv7tNsiMwEAYJKwYBBAGC +NxUBBAMCAQAwDQYJKoZIhvcNAQEMBQADggIBAKyvPl3CEZaJjqPnktaXFbgToqZCLgLNFgVZJ8og +6Lq46BrsTaiXVq5lQ7GPAJtSzVXNUzltYkyLDVt8LkS/gxCP81OCgMNPOsduET/m4xaRhPtthH80 +dK2Jp86519efhGSSvpWhrQlTM93uCupKUY5vVau6tZRGrox/2KJQJWVggEbbMwSubLWYdFQl3JPk ++ONVFT24bcMKpBLBaYVu32TxU5nhSnUgnZUP5NbcA/FZGOhHibJXWpS2qdgXKxdJ5XbLwVaZOjex +/2kskZGT4d9Mozd2TaGf+G0eHdP67Pv0RR0Tbc/3WeUiJ3IrhvNXuzDtJE3cfVa7o7P4NHmJweDy +AmH3pvwPuxwXC65B2Xy9J6P9LjrRk5Sxcx0ki69bIImtt2dmefU6xqaWM/5TkshGsRGRxpl/j8nW +ZjEgQRCHLQzWwa80mMpkg/sTV9HB8Dx6jKXB/ZUhoHHBk2dxEuqPiAppGWSZI1b7rCoucL5mxAyE +7+WL85MB+GqQk2dLsmijtWKP6T+MejteD+eMuMZ87zf9dOLITzNy4ZQ5bb0Sr74MTnB8G2+NszKT +c0QWbej09+CVgI+WXTik9KveCjCHk9hNAHFiRSdLOkKEW39lt2c0Ui2cFmuqqNh7o0JMcccMyj6D +5KbvtwEwXlGjefVwaaZBRA+GsCyRxj3qrg+E +-----END CERTIFICATE----- + +e-Szigno Root CA 2017 +===================== +-----BEGIN CERTIFICATE----- +MIICQDCCAeWgAwIBAgIMAVRI7yH9l1kN9QQKMAoGCCqGSM49BAMCMHExCzAJBgNVBAYTAkhVMREw +DwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMgTHRkLjEXMBUGA1UEYQwOVkFUSFUt +MjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3ppZ25vIFJvb3QgQ0EgMjAxNzAeFw0xNzA4MjIxMjA3MDZa +Fw00MjA4MjIxMjA3MDZaMHExCzAJBgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UE +CgwNTWljcm9zZWMgTHRkLjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3pp +Z25vIFJvb3QgQ0EgMjAxNzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJbcPYrYsHtvxie+RJCx +s1YVe45DJH0ahFnuY2iyxl6H0BVIHqiQrb1TotreOpCmYF9oMrWGQd+HWyx7xf58etqjYzBhMA8G +A1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSHERUI0arBeAyxr87GyZDv +vzAEwDAfBgNVHSMEGDAWgBSHERUI0arBeAyxr87GyZDvvzAEwDAKBggqhkjOPQQDAgNJADBGAiEA +tVfd14pVCzbhhkT61NlojbjcI4qKDdQvfepz7L9NbKgCIQDLpbQS+ue16M9+k/zzNY9vTlp8tLxO +svxyqltZ+efcMQ== +-----END CERTIFICATE----- + +certSIGN Root CA G2 +=================== +-----BEGIN CERTIFICATE----- +MIIFRzCCAy+gAwIBAgIJEQA0tk7GNi02MA0GCSqGSIb3DQEBCwUAMEExCzAJBgNVBAYTAlJPMRQw +EgYDVQQKEwtDRVJUU0lHTiBTQTEcMBoGA1UECxMTY2VydFNJR04gUk9PVCBDQSBHMjAeFw0xNzAy +MDYwOTI3MzVaFw00MjAyMDYwOTI3MzVaMEExCzAJBgNVBAYTAlJPMRQwEgYDVQQKEwtDRVJUU0lH +TiBTQTEcMBoGA1UECxMTY2VydFNJR04gUk9PVCBDQSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIP +ADCCAgoCggIBAMDFdRmRfUR0dIf+DjuW3NgBFszuY5HnC2/OOwppGnzC46+CjobXXo9X69MhWf05 +N0IwvlDqtg+piNguLWkh59E3GE59kdUWX2tbAMI5Qw02hVK5U2UPHULlj88F0+7cDBrZuIt4Imfk +abBoxTzkbFpG583H+u/E7Eu9aqSs/cwoUe+StCmrqzWaTOTECMYmzPhpn+Sc8CnTXPnGFiWeI8Mg +wT0PPzhAsP6CRDiqWhqKa2NYOLQV07YRaXseVO6MGiKscpc/I1mbySKEwQdPzH/iV8oScLumZfNp +dWO9lfsbl83kqK/20U6o2YpxJM02PbyWxPFsqa7lzw1uKA2wDrXKUXt4FMMgL3/7FFXhEZn91Qqh +ngLjYl/rNUssuHLoPj1PrCy7Lobio3aP5ZMqz6WryFyNSwb/EkaseMsUBzXgqd+L6a8VTxaJW732 +jcZZroiFDsGJ6x9nxUWO/203Nit4ZoORUSs9/1F3dmKh7Gc+PoGD4FapUB8fepmrY7+EF3fxDTvf +95xhszWYijqy7DwaNz9+j5LP2RIUZNoQAhVB/0/E6xyjyfqZ90bp4RjZsbgyLcsUDFDYg2WD7rlc +z8sFWkz6GZdr1l0T08JcVLwyc6B49fFtHsufpaafItzRUZ6CeWRgKRM+o/1Pcmqr4tTluCRVLERL +iohEnMqE0yo7AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1Ud +DgQWBBSCIS1mxteg4BXrzkwJd8RgnlRuAzANBgkqhkiG9w0BAQsFAAOCAgEAYN4auOfyYILVAzOB +ywaK8SJJ6ejqkX/GM15oGQOGO0MBzwdw5AgeZYWR5hEit/UCI46uuR59H35s5r0l1ZUa8gWmr4UC +b6741jH/JclKyMeKqdmfS0mbEVeZkkMR3rYzpMzXjWR91M08KCy0mpbqTfXERMQlqiCA2ClV9+BB +/AYm/7k29UMUA2Z44RGx2iBfRgB4ACGlHgAoYXhvqAEBj500mv/0OJD7uNGzcgbJceaBxXntC6Z5 +8hMLnPddDnskk7RI24Zf3lCGeOdA5jGokHZwYa+cNywRtYK3qq4kNFtyDGkNzVmf9nGvnAvRCjj5 +BiKDUyUM/FHE5r7iOZULJK2v0ZXkltd0ZGtxTgI8qoXzIKNDOXZbbFD+mpwUHmUUihW9o4JFWklW +atKcsWMy5WHgUyIOpwpJ6st+H6jiYoD2EEVSmAYY3qXNL3+q1Ok+CHLsIwMCPKaq2LxndD0UF/tU +Sxfj03k9bWtJySgOLnRQvwzZRjoQhsmnP+mg7H/rpXdYaXHmgwo38oZJar55CJD2AhZkPuXaTH4M +NMn5X7azKFGnpyuqSfqNZSlO42sTp5SjLVFteAxEy9/eCG/Oo2Sr05WE1LlSVHJ7liXMvGnjSG4N +0MedJ5qq+BOS3R7fY581qRY27Iy4g/Q9iY/NtBde17MXQRBdJ3NghVdJIgc= +-----END CERTIFICATE----- + +Trustwave Global Certification Authority +======================================== +-----BEGIN CERTIFICATE----- +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 +29FpHOTKyeC2nOnOcXHebD8WpHk= +-----END CERTIFICATE----- + +Trustwave Global ECC P256 Certification Authority +================================================= +-----BEGIN CERTIFICATE----- +MIICYDCCAgegAwIBAgIMDWpfCD8oXD5Rld9dMAoGCCqGSM49BAMCMIGRMQswCQYDVQQGEwJVUzER +MA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBI +b2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDI1NiBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MjMxOTM1MTBaFw00MjA4MjMxOTM1MTBaMIGRMQswCQYD +VQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRy +dXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDI1 +NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABH77bOYj +43MyCMpg5lOcunSNGLB4kFKA3TjASh3RqMyTpJcGOMoNFWLGjgEqZZ2q3zSRLoHB5DOSMcT9CTqm +P62jQzBBMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcGADAdBgNVHQ4EFgQUo0EGrJBt +0UrrdaVKEJmzsaGLSvcwCgYIKoZIzj0EAwIDRwAwRAIgB+ZU2g6gWrKuEZ+Hxbb/ad4lvvigtwjz +RM4q3wghDDcCIC0mA6AFvWvR9lz4ZcyGbbOcNEhjhAnFjXca4syc4XR7 +-----END CERTIFICATE----- + +Trustwave Global ECC P384 Certification Authority +================================================= +-----BEGIN CERTIFICATE----- +MIICnTCCAiSgAwIBAgIMCL2Fl2yZJ6SAaEc7MAoGCCqGSM49BAMDMIGRMQswCQYDVQQGEwJVUzER +MA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBI +b2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDM4NCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MjMxOTM2NDNaFw00MjA4MjMxOTM2NDNaMIGRMQswCQYD +VQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRy +dXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDM4 +NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTB2MBAGByqGSM49AgEGBSuBBAAiA2IABGvaDXU1CDFH +Ba5FmVXxERMuSvgQMSOjfoPTfygIOiYaOs+Xgh+AtycJj9GOMMQKmw6sWASr9zZ9lCOkmwqKi6vr +/TklZvFe/oyujUF5nQlgziip04pt89ZF1PKYhDhloKNDMEEwDwYDVR0TAQH/BAUwAwEB/zAPBgNV +HQ8BAf8EBQMDBwYAMB0GA1UdDgQWBBRVqYSJ0sEyvRjLbKYHTsjnnb6CkDAKBggqhkjOPQQDAwNn +ADBkAjA3AZKXRRJ+oPM+rRk6ct30UJMDEr5E0k9BpIycnR+j9sKS50gU/k6bpZFXrsY3crsCMGcl +CrEMXu6pY5Jv5ZAL/mYiykf9ijH3g/56vxC+GCsej/YpHpRZ744hN8tRmKVuSw== +-----END CERTIFICATE----- + +NAVER Global Root Certification Authority +========================================= +-----BEGIN CERTIFICATE----- +MIIFojCCA4qgAwIBAgIUAZQwHqIL3fXFMyqxQ0Rx+NZQTQ0wDQYJKoZIhvcNAQEMBQAwaTELMAkG +A1UEBhMCS1IxJjAkBgNVBAoMHU5BVkVSIEJVU0lORVNTIFBMQVRGT1JNIENvcnAuMTIwMAYDVQQD +DClOQVZFUiBHbG9iYWwgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MTgwODU4 +NDJaFw0zNzA4MTgyMzU5NTlaMGkxCzAJBgNVBAYTAktSMSYwJAYDVQQKDB1OQVZFUiBCVVNJTkVT +UyBQTEFURk9STSBDb3JwLjEyMDAGA1UEAwwpTkFWRVIgR2xvYmFsIFJvb3QgQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC21PGTXLVAiQqrDZBb +UGOukJR0F0Vy1ntlWilLp1agS7gvQnXp2XskWjFlqxcX0TM62RHcQDaH38dq6SZeWYp34+hInDEW ++j6RscrJo+KfziFTowI2MMtSAuXaMl3Dxeb57hHHi8lEHoSTGEq0n+USZGnQJoViAbbJAh2+g1G7 +XNr4rRVqmfeSVPc0W+m/6imBEtRTkZazkVrd/pBzKPswRrXKCAfHcXLJZtM0l/aM9BhK4dA9WkW2 +aacp+yPOiNgSnABIqKYPszuSjXEOdMWLyEz59JuOuDxp7W87UC9Y7cSw0BwbagzivESq2M0UXZR4 +Yb8ObtoqvC8MC3GmsxY/nOb5zJ9TNeIDoKAYv7vxvvTWjIcNQvcGufFt7QSUqP620wbGQGHfnZ3z +VHbOUzoBppJB7ASjjw2i1QnK1sua8e9DXcCrpUHPXFNwcMmIpi3Ua2FzUCaGYQ5fG8Ir4ozVu53B +A0K6lNpfqbDKzE0K70dpAy8i+/Eozr9dUGWokG2zdLAIx6yo0es+nPxdGoMuK8u180SdOqcXYZai +cdNwlhVNt0xz7hlcxVs+Qf6sdWA7G2POAN3aCJBitOUt7kinaxeZVL6HSuOpXgRM6xBtVNbv8ejy +YhbLgGvtPe31HzClrkvJE+2KAQHJuFFYwGY6sWZLxNUxAmLpdIQM201GLQIDAQABo0IwQDAdBgNV +HQ4EFgQU0p+I36HNLL3s9TsBAZMzJ7LrYEswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMB +Af8wDQYJKoZIhvcNAQEMBQADggIBADLKgLOdPVQG3dLSLvCkASELZ0jKbY7gyKoNqo0hV4/GPnrK +21HUUrPUloSlWGB/5QuOH/XcChWB5Tu2tyIvCZwTFrFsDDUIbatjcu3cvuzHV+YwIHHW1xDBE1UB +jCpD5EHxzzp6U5LOogMFDTjfArsQLtk70pt6wKGm+LUx5vR1yblTmXVHIloUFcd4G7ad6Qz4G3bx +hYTeodoS76TiEJd6eN4MUZeoIUCLhr0N8F5OSza7OyAfikJW4Qsav3vQIkMsRIz75Sq0bBwcupTg +E34h5prCy8VCZLQelHsIJchxzIdFV4XTnyliIoNRlwAYl3dqmJLJfGBs32x9SuRwTMKeuB330DTH +D8z7p/8Dvq1wkNoL3chtl1+afwkyQf3NosxabUzyqkn+Zvjp2DXrDige7kgvOtB5CTh8piKCk5XQ +A76+AqAF3SAi428diDRgxuYKuQl1C/AH6GmWNcf7I4GOODm4RStDeKLRLBT/DShycpWbXgnbiUSY +qqFJu3FS8r/2/yehNq+4tneI3TqkbZs0kNwUXTC/t+sX5Ie3cdCh13cV1ELX8vMxmV2b3RZtP+oG +I/hGoiLtk/bdmuYqh7GYVPEi92tF4+KOdh2ajcQGjTa3FPOdVGm3jjzVpG2Tgbet9r1ke8LJaDmg +kpzNNIaRkPpkUZ3+/uul9XXeifdy +-----END CERTIFICATE----- + +AC RAIZ FNMT-RCM SERVIDORES SEGUROS +=================================== +-----BEGIN CERTIFICATE----- +MIICbjCCAfOgAwIBAgIQYvYybOXE42hcG2LdnC6dlTAKBggqhkjOPQQDAzB4MQswCQYDVQQGEwJF +UzERMA8GA1UECgwIRk5NVC1SQ00xDjAMBgNVBAsMBUNlcmVzMRgwFgYDVQRhDA9WQVRFUy1RMjgy +NjAwNEoxLDAqBgNVBAMMI0FDIFJBSVogRk5NVC1SQ00gU0VSVklET1JFUyBTRUdVUk9TMB4XDTE4 +MTIyMDA5MzczM1oXDTQzMTIyMDA5MzczM1oweDELMAkGA1UEBhMCRVMxETAPBgNVBAoMCEZOTVQt +UkNNMQ4wDAYDVQQLDAVDZXJlczEYMBYGA1UEYQwPVkFURVMtUTI4MjYwMDRKMSwwKgYDVQQDDCNB +QyBSQUlaIEZOTVQtUkNNIFNFUlZJRE9SRVMgU0VHVVJPUzB2MBAGByqGSM49AgEGBSuBBAAiA2IA +BPa6V1PIyqvfNkpSIeSX0oNnnvBlUdBeh8dHsVnyV0ebAAKTRBdp20LHsbI6GA60XYyzZl2hNPk2 +LEnb80b8s0RpRBNm/dfF/a82Tc4DTQdxz69qBdKiQ1oKUm8BA06Oi6NCMEAwDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFAG5L++/EYZg8k/QQW6rcx/n0m5JMAoGCCqG +SM49BAMDA2kAMGYCMQCuSuMrQMN0EfKVrRYj3k4MGuZdpSRea0R7/DjiT8ucRRcRTBQnJlU5dUoD +zBOQn5ICMQD6SmxgiHPz7riYYqnOK8LZiqZwMR2vsJRM60/G49HzYqc8/5MuB1xJAWdpEgJyv+c= +-----END CERTIFICATE----- + +GlobalSign Root R46 +=================== +-----BEGIN CERTIFICATE----- +MIIFWjCCA0KgAwIBAgISEdK7udcjGJ5AXwqdLdDfJWfRMA0GCSqGSIb3DQEBDAUAMEYxCzAJBgNV +BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYDVQQDExNHbG9iYWxTaWduIFJv +b3QgUjQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMyMDAwMDAwMFowRjELMAkGA1UEBhMCQkUxGTAX +BgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExHDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBSNDYwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCsrHQy6LNl5brtQyYdpokNRbopiLKkHWPd08Es +CVeJOaFV6Wc0dwxu5FUdUiXSE2te4R2pt32JMl8Nnp8semNgQB+msLZ4j5lUlghYruQGvGIFAha/ +r6gjA7aUD7xubMLL1aa7DOn2wQL7Id5m3RerdELv8HQvJfTqa1VbkNud316HCkD7rRlr+/fKYIje +2sGP1q7Vf9Q8g+7XFkyDRTNrJ9CG0Bwta/OrffGFqfUo0q3v84RLHIf8E6M6cqJaESvWJ3En7YEt +bWaBkoe0G1h6zD8K+kZPTXhc+CtI4wSEy132tGqzZfxCnlEmIyDLPRT5ge1lFgBPGmSXZgjPjHvj +K8Cd+RTyG/FWaha/LIWFzXg4mutCagI0GIMXTpRW+LaCtfOW3T3zvn8gdz57GSNrLNRyc0NXfeD4 +12lPFzYE+cCQYDdF3uYM2HSNrpyibXRdQr4G9dlkbgIQrImwTDsHTUB+JMWKmIJ5jqSngiCNI/on +ccnfxkF0oE32kRbcRoxfKWMxWXEM2G/CtjJ9++ZdU6Z+Ffy7dXxd7Pj2Fxzsx2sZy/N78CsHpdls +eVR2bJ0cpm4O6XkMqCNqo98bMDGfsVR7/mrLZqrcZdCinkqaByFrgY/bxFn63iLABJzjqls2k+g9 +vXqhnQt2sQvHnf3PmKgGwvgqo6GDoLclcqUC4wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYD +VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA1yrc4GHqMywptWU4jaWSf8FmSwwDQYJKoZIhvcNAQEM +BQADggIBAHx47PYCLLtbfpIrXTncvtgdokIzTfnvpCo7RGkerNlFo048p9gkUbJUHJNOxO97k4Vg +JuoJSOD1u8fpaNK7ajFxzHmuEajwmf3lH7wvqMxX63bEIaZHU1VNaL8FpO7XJqti2kM3S+LGteWy +gxk6x9PbTZ4IevPuzz5i+6zoYMzRx6Fcg0XERczzF2sUyQQCPtIkpnnpHs6i58FZFZ8d4kuaPp92 +CC1r2LpXFNqD6v6MVenQTqnMdzGxRBF6XLE+0xRFFRhiJBPSy03OXIPBNvIQtQ6IbbjhVp+J3pZm +OUdkLG5NrmJ7v2B0GbhWrJKsFjLtrWhV/pi60zTe9Mlhww6G9kuEYO4Ne7UyWHmRVSyBQ7N0H3qq +JZ4d16GLuc1CLgSkZoNNiTW2bKg2SnkheCLQQrzRQDGQob4Ez8pn7fXwgNNgyYMqIgXQBztSvwye +qiv5u+YfjyW6hY0XHgL+XVAEV8/+LbzvXMAaq7afJMbfc2hIkCwU9D9SGuTSyxTDYWnP4vkYxboz +nxSjBF25cfe1lNj2M8FawTSLfJvdkzrnE6JwYZ+vj+vYxXX4M2bUdGc6N3ec592kD3ZDZopD8p/7 +DEJ4Y9HiD2971KE9dJeFt0g5QdYg/NA6s/rob8SKunE3vouXsXgxT7PntgMTzlSdriVZzH81Xwj3 +QEUxeCp6 +-----END CERTIFICATE----- + +GlobalSign Root E46 +=================== +-----BEGIN CERTIFICATE----- +MIICCzCCAZGgAwIBAgISEdK7ujNu1LzmJGjFDYQdmOhDMAoGCCqGSM49BAMDMEYxCzAJBgNVBAYT +AkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYDVQQDExNHbG9iYWxTaWduIFJvb3Qg +RTQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMyMDAwMDAwMFowRjELMAkGA1UEBhMCQkUxGTAXBgNV +BAoTEEdsb2JhbFNpZ24gbnYtc2ExHDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBFNDYwdjAQBgcq +hkjOPQIBBgUrgQQAIgNiAAScDrHPt+ieUnd1NPqlRqetMhkytAepJ8qUuwzSChDH2omwlwxwEwkB +jtjqR+q+soArzfwoDdusvKSGN+1wCAB16pMLey5SnCNoIwZD7JIvU4Tb+0cUB+hflGddyXqBPCCj +QjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQxCpCPtsad0kRL +gLWi5h+xEk8blTAKBggqhkjOPQQDAwNoADBlAjEA31SQ7Zvvi5QCkxeCmb6zniz2C5GMn0oUsfZk +vLtoURMMA/cVi4RguYv/Uo7njLwcAjA8+RHUjE7AwWHCFUyqqx0LMV87HOIAl0Qx5v5zli/altP+ +CAezNIm8BZ/3Hobui3A= +-----END CERTIFICATE----- + +GLOBALTRUST 2020 +================ +-----BEGIN CERTIFICATE----- +MIIFgjCCA2qgAwIBAgILWku9WvtPilv6ZeUwDQYJKoZIhvcNAQELBQAwTTELMAkGA1UEBhMCQVQx +IzAhBgNVBAoTGmUtY29tbWVyY2UgbW9uaXRvcmluZyBHbWJIMRkwFwYDVQQDExBHTE9CQUxUUlVT +VCAyMDIwMB4XDTIwMDIxMDAwMDAwMFoXDTQwMDYxMDAwMDAwMFowTTELMAkGA1UEBhMCQVQxIzAh +BgNVBAoTGmUtY29tbWVyY2UgbW9uaXRvcmluZyBHbWJIMRkwFwYDVQQDExBHTE9CQUxUUlVTVCAy +MDIwMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAri5WrRsc7/aVj6B3GyvTY4+ETUWi +D59bRatZe1E0+eyLinjF3WuvvcTfk0Uev5E4C64OFudBc/jbu9G4UeDLgztzOG53ig9ZYybNpyrO +VPu44sB8R85gfD+yc/LAGbaKkoc1DZAoouQVBGM+uq/ufF7MpotQsjj3QWPKzv9pj2gOlTblzLmM +CcpL3TGQlsjMH/1WljTbjhzqLL6FLmPdqqmV0/0plRPwyJiT2S0WR5ARg6I6IqIoV6Lr/sCMKKCm +fecqQjuCgGOlYx8ZzHyyZqjC0203b+J+BlHZRYQfEs4kUmSFC0iAToexIiIwquuuvuAC4EDosEKA +A1GqtH6qRNdDYfOiaxaJSaSjpCuKAsR49GiKweR6NrFvG5Ybd0mN1MkGco/PU+PcF4UgStyYJ9OR +JitHHmkHr96i5OTUawuzXnzUJIBHKWk7buis/UDr2O1xcSvy6Fgd60GXIsUf1DnQJ4+H4xj04KlG +DfV0OoIu0G4skaMxXDtG6nsEEFZegB31pWXogvziB4xiRfUg3kZwhqG8k9MedKZssCz3AwyIDMvU +clOGvGBG85hqwvG/Q/lwIHfKN0F5VVJjjVsSn8VoxIidrPIwq7ejMZdnrY8XD2zHc+0klGvIg5rQ +mjdJBKuxFshsSUktq6HQjJLyQUp5ISXbY9e2nKd+Qmn7OmMCAwEAAaNjMGEwDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFNwuH9FhN3nkq9XVsxJxaD1qaJwiMB8GA1Ud +IwQYMBaAFNwuH9FhN3nkq9XVsxJxaD1qaJwiMA0GCSqGSIb3DQEBCwUAA4ICAQCR8EICaEDuw2jA +VC/f7GLDw56KoDEoqoOOpFaWEhCGVrqXctJUMHytGdUdaG/7FELYjQ7ztdGl4wJCXtzoRlgHNQIw +4Lx0SsFDKv/bGtCwr2zD/cuz9X9tAy5ZVp0tLTWMstZDFyySCstd6IwPS3BD0IL/qMy/pJTAvoe9 +iuOTe8aPmxadJ2W8esVCgmxcB9CpwYhgROmYhRZf+I/KARDOJcP5YBugxZfD0yyIMaK9MOzQ0MAS +8cE54+X1+NZK3TTN+2/BT+MAi1bikvcoskJ3ciNnxz8RFbLEAwW+uxF7Cr+obuf/WEPPm2eggAe2 +HcqtbepBEX4tdJP7wry+UUTF72glJ4DjyKDUEuzZpTcdN3y0kcra1LGWge9oXHYQSa9+pTeAsRxS +vTOBTI/53WXZFM2KJVj04sWDpQmQ1GwUY7VA3+vA/MRYfg0UFodUJ25W5HCEuGwyEn6CMUO+1918 +oa2u1qsgEu8KwxCMSZY13At1XrFP1U80DhEgB3VDRemjEdqso5nCtnkn4rnvyOL2NSl6dPrFf4IF +YqYK6miyeUcGbvJXqBUzxvd4Sj1Ce2t+/vdG6tHrju+IaFvowdlxfv1k7/9nR4hYJS8+hge9+6jl +gqispdNpQ80xiEmEU5LAsTkbOYMBMMTyqfrQA71yN2BWHzZ8vTmR9W0Nv3vXkg== +-----END CERTIFICATE----- + +ANF Secure Server Root CA +========================= +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +Certum EC-384 CA +================ +-----BEGIN CERTIFICATE----- +MIICZTCCAeugAwIBAgIQeI8nXIESUiClBNAt3bpz9DAKBggqhkjOPQQDAzB0MQswCQYDVQQGEwJQ +TDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2Vy +dGlmaWNhdGlvbiBBdXRob3JpdHkxGTAXBgNVBAMTEENlcnR1bSBFQy0zODQgQ0EwHhcNMTgwMzI2 +MDcyNDU0WhcNNDMwMzI2MDcyNDU0WjB0MQswCQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERh +dGEgU3lzdGVtcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkx +GTAXBgNVBAMTEENlcnR1bSBFQy0zODQgQ0EwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATEKI6rGFtq +vm5kN2PkzeyrOvfMobgOgknXhimfoZTy42B4mIF4Bk3y7JoOV2CDn7TmFy8as10CW4kjPMIRBSqn +iBMY81CE1700LCeJVf/OTOffph8oxPBUw7l8t1Ot68KjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD +VR0OBBYEFI0GZnQkdjrzife81r1HfS+8EF9LMA4GA1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNo +ADBlAjADVS2m5hjEfO/JUG7BJw+ch69u1RsIGL2SKcHvlJF40jocVYli5RsJHrpka/F2tNQCMQC0 +QoSZ/6vnnvuRlydd3LBbMHHOXjgaatkl5+r3YZJW+OraNsKHZZYuciUvf9/DE8k= +-----END CERTIFICATE----- + +Certum Trusted Root CA +====================== +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- From ee640ea684b7a85b2c51a2e4254fa72191cd4e3c Mon Sep 17 00:00:00 2001 From: Vitalii Koshura Date: Wed, 6 Oct 2021 09:41:00 +0200 Subject: [PATCH 13/16] [Windows] Build curl for Windows without openssl. Build it with schannel instead that allows curl to use Windows certificate store and doesn't relay on ca-bundle.crt anymore. This fixes #4542 Signed-off-by: Vitalii Koshura --- client/http_curl.cpp | 46 +------------------ client/http_curl.h | 2 - ...vcpkg_3rdparty_dependencies_vs2019.vcxproj | 12 +++-- 3 files changed, 10 insertions(+), 50 deletions(-) diff --git a/client/http_curl.cpp b/client/http_curl.cpp index 46d2690cf3..b5b43cf76b 100644 --- a/client/http_curl.cpp +++ b/client/http_curl.cpp @@ -252,7 +252,6 @@ void HTTP_OP::reset() { HTTP_OP::HTTP_OP() { safe_strcpy(m_url, ""); - safe_strcpy(m_curl_ca_bundle_location, ""); safe_strcpy(m_curl_user_credentials, ""); content_length = 0; file_offset = 0; @@ -486,50 +485,7 @@ int HTTP_OP::libcurl_exec( // if the above is nonzero, you need the following: // -#ifdef _WIN32 - if (strlen(m_curl_ca_bundle_location) == 0) { - TCHAR szPath[MAX_PATH-1]; - GetModuleFileName(NULL, szPath, (sizeof(szPath)/sizeof(TCHAR))); - - TCHAR *pszProg = strrchr(szPath, '\\'); - if (pszProg) { - szPath[pszProg - szPath + 1] = 0; - - strlcat( - m_curl_ca_bundle_location, - szPath, - sizeof(m_curl_ca_bundle_location) - ); - strlcat( - m_curl_ca_bundle_location, - CA_BUNDLE_FILENAME, - sizeof(m_curl_ca_bundle_location) - ); - - if (log_flags.http_debug) { - msg_printf( - project, - MSG_INFO, - "[http] HTTP_OP::libcurl_exec(): ca-bundle '%s'", - m_curl_ca_bundle_location - ); - } - } - } - if (boinc_file_exists(m_curl_ca_bundle_location)) { - // call this only if a local copy of ca-bundle.crt exists; - // otherwise, let's hope that it exists in the default place - // - curl_easy_setopt(curlEasy, CURLOPT_CAINFO, m_curl_ca_bundle_location); - if (log_flags.http_debug) { - msg_printf( - project, - MSG_INFO, - "[http] HTTP_OP::libcurl_exec(): ca-bundle set" - ); - } - } -#else +#ifndef _WIN32 if (boinc_file_exists(CA_BUNDLE_FILENAME)) { // call this only if a local copy of ca-bundle.crt exists; // otherwise, let's hope that it exists in the default place diff --git a/client/http_curl.h b/client/http_curl.h index a5153b3259..551e18a993 100644 --- a/client/http_curl.h +++ b/client/http_curl.h @@ -58,8 +58,6 @@ public: PROJECT* project; // associated project, if any char m_url[1024]; - char m_curl_ca_bundle_location[256]; - // string needed for ssl support char m_curl_user_credentials[1024]; // string needed for proxy username/password diff --git a/win_build/vcpkg_3rdparty_dependencies_vs2019.vcxproj b/win_build/vcpkg_3rdparty_dependencies_vs2019.vcxproj index 0fc0244a50..09dcaf9643 100644 --- a/win_build/vcpkg_3rdparty_dependencies_vs2019.vcxproj +++ b/win_build/vcpkg_3rdparty_dependencies_vs2019.vcxproj @@ -166,13 +166,19 @@ - + - - + + + + + + + + From 6acf765784cf53493b04fe9501f8b09e444a8503 Mon Sep 17 00:00:00 2001 From: Vitalii Koshura Date: Mon, 20 Sep 2021 12:53:18 +0200 Subject: [PATCH 14/16] [Windows][Manager] Fix tab width issue. wxNB_FIXEDWIDTH flag has effect on Windows only. And when used, it forces the control to have fixed tab width that doesn't use tab title to calculate needed tab width. Removing wxNB_FIXEDWIDTH flag as not useful in this case. This fixes #2364. Signed-off-by: Vitalii Koshura --- clientgui/AdvancedFrame.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/clientgui/AdvancedFrame.cpp b/clientgui/AdvancedFrame.cpp index 5fd385675d..8d8ae4e8f3 100644 --- a/clientgui/AdvancedFrame.cpp +++ b/clientgui/AdvancedFrame.cpp @@ -777,8 +777,7 @@ bool CAdvancedFrame::CreateNotebook() { pPanel->SetAutoLayout(TRUE); // initialize notebook - m_pNotebook = new wxNotebook(pPanel, ID_FRAMENOTEBOOK, wxDefaultPosition, wxDefaultSize, - wxNB_FIXEDWIDTH|wxCLIP_CHILDREN); + m_pNotebook = new wxNotebook(pPanel, ID_FRAMENOTEBOOK, wxDefaultPosition, wxDefaultSize, wxCLIP_CHILDREN); // layout frame panel wxBoxSizer *pPanelSizer = new wxBoxSizer(wxVERTICAL); From c1248078b31542c6177f613c5f5948d2f07985c7 Mon Sep 17 00:00:00 2001 From: Vitalii Koshura Date: Sat, 9 Oct 2021 00:00:01 +0200 Subject: [PATCH 15/16] [CI] Add CI workflow to check source code for illegal symbols Signed-off-by: Vitalii Koshura --- .github/workflows/source-code-check.yml | 25 ++++++ ci_tools/source_code_check.py | 114 ++++++++++++++++++++++++ lib/stackwalker_win.cpp | 2 +- 3 files changed, 140 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/source-code-check.yml create mode 100644 ci_tools/source_code_check.py diff --git a/.github/workflows/source-code-check.yml b/.github/workflows/source-code-check.yml new file mode 100644 index 0000000000..dee2f09ae3 --- /dev/null +++ b/.github/workflows/source-code-check.yml @@ -0,0 +1,25 @@ +name: Source Code Check +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + schedule: + - cron: '25 12 * * 0' + +jobs: + build: + name: ${{ matrix.type }} + runs-on: ubuntu-latest + strategy: + matrix: + type: [source-code-check] + fail-fast: false + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 2 + - name: Check source code for illegal symbols + if: ${{ success() }} + run: | + python ./ci_tools/source_code_check.py . diff --git a/ci_tools/source_code_check.py b/ci_tools/source_code_check.py new file mode 100644 index 0000000000..4a1c9e5352 --- /dev/null +++ b/ci_tools/source_code_check.py @@ -0,0 +1,114 @@ +import os +import pathlib +import sys + +def help(): + print('Usage:') + print('python source-code-check.py

') + +def check(directory, bytes_to_check, exclude_dirs, exclude_extensions, exclude_files): + if not os.path.isdir(directory): + return None + + files_with_errors = [] + + for root, dirs, files in os.walk(directory, topdown=True): + dirs[:] = [d for d in dirs if os.path.join(root, d) not in exclude_dirs] + for filename in files: + if (pathlib.Path(filename).suffix in exclude_extensions): + continue + file = os.path.join(root, filename) + if (os.path.islink(file) or file in exclude_files): + continue + with open(file, "rb") as f: + print('Checking file: ' + file) + byte = f.read(1) + while byte: + if byte in bytes_to_check: + files_with_errors.append(file) + break + byte = f.read(1) + return files_with_errors + + +if (len(sys.argv) != 2): + help() + sys.exit(1) + +directory = sys.argv[1] + +exclude_dirs = [ + os.path.join(directory, ".git"), + os.path.join(directory, "3rdParty/android"), + os.path.join(directory, "3rdParty/buildCache"), + os.path.join(directory, "3rdParty/linux"), + os.path.join(directory, "3rdParty/Windows"), + os.path.join(directory, "android/BOINC/.gradle"), + os.path.join(directory, "android/BOINC/app/build"), + os.path.join(directory, "android/BOINC/app/src/main/assets"), + os.path.join(directory, "android/BOINC/app/src/main/res"), + os.path.join(directory, "doc/manpages"), + os.path.join(directory, "drupal/sites/all/libraries"), + os.path.join(directory, "drupal/sites/all/themes"), + os.path.join(directory, "drupal/sites/default/boinc/modules/contrib"), + os.path.join(directory, "drupal/sites/default/boinc/themes"), + os.path.join(directory, "fastlane"), + os.path.join(directory, "samples/example_app/bin"), +] + +exclude_files = [ + os.path.join(directory, "aclocal.m4"), + os.path.join(directory, "client/boinc_client"), + os.path.join(directory, "client/boinccmd"), + os.path.join(directory, "client/boinc"), + os.path.join(directory, "client/switcher"), + os.path.join(directory, "clientgui/BOINCBaseView.cpp"), + os.path.join(directory, "clientscr/progress/simt"), + os.path.join(directory, "drupal/sites/default/boinc/modules/boinc_solr_search/boinc_solr_comments/README.txt"), + os.path.join(directory, "drupal/sites/default/boinc/modules/boinc_solr_search/boinc_solr_comments/INSTALL.txt"), + os.path.join(directory, "html/inc/GeoIP.dat"), + os.path.join(directory, "mac_installer/BOINC.pmproj"), + os.path.join(directory, "mac_build/boinc.xcodeproj/project.pbxproj"), + os.path.join(directory, "stage/usr/local/bin/boinc_client"), + os.path.join(directory, "stage/usr/local/bin/boinccmd"), + os.path.join(directory, "stage/usr/local/bin/boinc"), + os.path.join(directory, "stage/usr/local/bin/switcher"), +] + +exclude_extensions = [ + ".a", + ".bmp", + ".dll", + ".exe", + ".gif", + ".icns", + ".ico", + ".jar", + ".jpg", + ".lib", + ".mo", + ".nib", + ".o", + ".pdf", + ".pdn", + ".png", + ".po", + ".psd", + ".rgb", + ".so", + ".tif", + ".tiff", + ".tlb", + ".ttf", + ".zip", +] + +files_with_errors = check(directory, [b"\xC2"], exclude_dirs, exclude_extensions, exclude_files) + +if files_with_errors: + print("Found files with errors:") + for file in files_with_errors: + print(file) + sys.exit(1) + +sys.exit(0) diff --git a/lib/stackwalker_win.cpp b/lib/stackwalker_win.cpp index a290486d43..c3cf38d61e 100644 --- a/lib/stackwalker_win.cpp +++ b/lib/stackwalker_win.cpp @@ -657,7 +657,7 @@ int DebuggerDisplayDiagnostics() // ################################################################################# // Here the Stackwalk-Part begins. // Some of the code is from an example from a book -// But I couldn´t find the reference anymore... sorry... +// But I couldn't find the reference anymore... sorry... // If someone knowns, please let me know... // ################################################################################# // ################################################################################# From 75593239636205ebc87b17dec0d8d37190ea8d38 Mon Sep 17 00:00:00 2001 From: Vitalii Koshura Date: Sat, 9 Oct 2021 16:40:03 +0200 Subject: [PATCH 16/16] [CI] Add Coverity scan Signed-off-by: Vitalii Koshura --- .github/workflows/coverity.yml | 43 ++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 .github/workflows/coverity.yml diff --git a/.github/workflows/coverity.yml b/.github/workflows/coverity.yml new file mode 100644 index 0000000000..12b94dbfdf --- /dev/null +++ b/.github/workflows/coverity.yml @@ -0,0 +1,43 @@ +name: Coverity +on: + schedule: + - cron: '30 12 * * 0' + +jobs: + coverity: + runs-on: ubuntu-latest + strategy: + fail-fast: false + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 2 + + - name: Install dependencies + run: | + sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu bionic main universe' + sudo apt-get -qq update + sudo apt-get install -y libftgl-dev freeglut3-dev libcurl4-openssl-dev libxmu-dev libxi-dev libfcgi-dev libxss-dev libnotify-dev libxcb-util0-dev libgtk2.0-dev libwebkitgtk-dev p7zip-full libxxf86vm-dev ocl-icd-opencl-dev zip + + - name: Cache dependencies + uses: actions/cache@v2.1.3 + with: + path: | + 3rdParty/buildCache + !3rdParty/buildCache/linux/vcpkgcache/ + key: linux-coverity + + - name: Automake + if: success() + run: ./_autosetup + + - name: Prepare for scan + if: success() + run: ./3rdParty/buildLinuxDependencies.sh && ./configure --enable-apps --with-wx-prefix=${GITHUB_WORKSPACE}/3rdParty/buildCache/linux + + - name: Coverity Scan + uses: vapier/coverity-scan-action@v0 + with: + project: 'BOINC/boinc' + token: ${{ secrets.COVERITY_SCAN_TOKEN }} + email: 'boinc_cvs@ssl.berkeley.edu'